Earlier this month we were all amazed at F-Zero enthusiast BGNG's patch program that inserts the 64DD-only F-Zero X Expansion Kit's bonus tracks into the original F-Zero X. I recently had a chance to chat with BGNG and learn about his upcoming projects, such as two different F-Zero track editors: one for F-Zero X for the Nintendo 64, and another for F-Zero Maximum Velocity for the Game Boy Advance. Anyone who cracks into the mysteries of my favorite old games is alright in my book, I say. He has some other projects cooking, so read on to hear all about what he's working on in his spare time along with a few screenshots, videos, and even a little music.
MattG: Let's start by introducing yourself. Who are you (real name not required if you want to stay in a cloak of mystery), what do you do, and how'd you get to do it?
BGNG: I go by the handle of "BGNG," which has a small story behind it... I prefer to use this handle online to protect my anonymity. My employment is typically the grunt that fixes the computers. I'm unemployed currently, but my last job was computer technician for the local school district. I'm a behind-the-scenes guru. I have interest in what-have-you in terms of computers, but I take greater joy in learning how it works than using it. I've got several graphics and audio projects on the shelf, as well as some recent F-Zero hacks. I'm also a bit of an elitist. Not only can I make the program that makes the music, but I can make the music, too. Or, at least, I could if I'd finish the music-making program... but my experience with MIDI is promising.
MattG: Are your skills self-taught or have you buried yourself in books?
BGNG: A lot of it is research into technical documentation on any given aspect, then on the programming side of it. After I get a general idea of how the stuff works, I spend a lot of time experimenting with it to see what I can do. I'm ever-more creating new techniques for 3D programming which may be useful in the near future.
MattG: Let's talk about F-Zero and Metroid. You told me previously that those are you two favorite series. What gravitates you towards them? Is it warm nostalgic memories of playing or do they hide interesting programming mysteries that you're eager to crack open?
BGNG: Metroid is chock-full of fancy weaponry, scary creatures and hidden rooms. There's nothing like the feel of navigating around in some unknown place which offers even more unknown place. F-Zero X is what got me hooked on that series. It was fast. I've always enjoyed putting my brain to the test, and the blinding speeds of F-Zero and the perfection-of-control I strive for therein really get my reflex and planning facilities working. Observing the games themselves, while playing them, I am often able to discern how the programmers probably went about making it. Once I learned of the F-Zero X Expansion Kit for 64DD, released in Japan only, I figured my knowledge just might be enough to crack the data in the ROM. In a matter of 4 hours, I managed to find the level data in F-Zero X and document how it was put together. I proved myself right. At the moment, I have no interest in hacking any Metroid games.
MattG: Considering the DD tracks from the Expansion Kit, your patch program takes the DD data and swaps out the original F-Zero X tracks/cups. How much of a challenge was it to make that work? Did you take advantage of the alleged "64DD hooks" in F-Zero X or did you overwrite the original track data?
BGNG: The courses from the two cups in the Expansion Kit are in the Expansion Kit only. There's no data for them in the retail F-Zero X ROM. After making a type-in-the-numbers editor for the game, I was able to create custom courses by overwriting the existing ones. The maximum space allowable by all courses is present for all courses, which means there are no limitation as far as number of bytes is concerned. A few guys on MFO, Heian-794 and PiccoloCube, have acquired the 64DD and Expansion Kit for themselves. They were willing to go into the Expansion Kit's Course Edit feature and write down the coordinates and properties for every control point for every course in the game. Once I got the data from them, I reconstructed them myself and patched them to the ROM. I've created a custom file format to store the files in, which cuts the size of all courses down to less than 2KB without compression. I stored all the Expansion Kit courses in that format. The format will be used with the editor, whenever I finish it. However, that program is the source of mysterious errors. I have plans to re-do that patch program. I don't like it not working.
MattG: Ah, so you didn't take Nintendo's data and patch it to the original ROM, but rebuilt the courses from coordinate data.
BGNG: That's correct. It's even able to unlock an extremely rare bug on Windows XP for some users.
MattG: Do you plan to eventually combine the patch program with your track editor, or will they be separate programs?
MattG: Do you plan to include some of your own custom tracks with the editor?
BGNG: Since the time I released that patch, I've set F-Zero X aside and stared hacking F-Zero Maximum Velocity. For each of the testers, I plan to have 10 courses... created by them each.
MattG: Will you try and simulate/match the original Expansion Kit editor's interface, or do you have your own designs for that?
BGNG: There's not a lot to it, so much of it will be the same. It's basically just plotting control points which are hooked together with curves and course features are defined at each one. Plans for exactly how to implement an editor aren't finalized, but mouse control is a must. Chances are, it will be the most simplistic approach. The first one didn't show the courses correctly, so I had to look up a new way to do it. I've ended up implementing two 3D spline loop algorithms in that program.
Back in the day, right after I hacked the level format, I wanted to make an editor. But to do that, I would need graphics. Low and behold, the graphics didn't jump out at me as I scanned the ROM with an image utility. Turns out that the course textures were compressed using a Nintendo-proprietary compression format called MIO0. With minimal assistance, I ended up being forced to crack the algorithm all by myself. That was 11 days of pure torture, but I did it. I documented MIO0 and released that document, which has proved to be useful in the emulation community. There's even a crew cracking Super Mario 64. They've managed to extract the polygon and texture data for the courses. Progress is impressive. From this experience, I have this to say: If you figure something out in the emulation scene, SHARE IT.
The original reason I went to crack the ROM... Wasn't about level data at all. I heard a remix of a music from the Expansion Kit. It was done by a guy who goes by midiman on MFO. I looked around on Internet and found MP3 recordings of all the additional musics. One of the courses in F-Zero X is Rainbow Road, which copies the shape of the course in Mario Kart 64 by the same name. But the music in F-Zero X used for Rainbow Road was the same as for the Sector stages. In the Expansion Kit there's an absolutely incredible F-Zero X-style remix of the Mario Kart 64 Rainbow Road music. Hearing that, I dove straight into the ROM to find out if it was there. It's not, but I ended up finding the level data in the process and the rest is history.
MattG: Now you're working on F-Zero: Maximum Velocity. 2D versus 3D, do you notice any similarity in the game data? Common patterns?
BGNG: None whatsoever. Where F-Zero X was a real-time generated group of curves specified by points, F-Zero Maximum Velocity is a full-size grid of panels. Different techniques, but I'm familiar with them both. I felt right at home once I started cracking F-Zero Maximum Velocity. And since it's a GBA game, it's smaller and no checksums are involved. I located the Pawn 1 level data in about two and a half hours; as well as a bunch of other neat junk. Creating a level editor will be far more easy as far as binary data is concerned. But aesthetics may pose a problem. No sense in having little holes in the walls or something like that. The course will need to fit together nicely.
MattG: Do you think it will be easy to transfer your Maximum Velocity work over to GP Legend and Climax? That is, now that you've cracked one will the others fall quickly compared to the first?
BGNG: I have reason to believe that F-Zero GP Legend and Climax are just extensions of Maximum Velocity, and therefore probably use the same everything engine. I don't know that for sure, but it most certainly would be convenient. I'll cross that bridge when I come to it.
MattG: Have you considered exploring F-Zero GX? I know it has to be a much more complicated beast, but given the opportunity would you open it up and see how it ticks?
BGNG: Absolutely... given the opportunity. At the moment, I have no means for getting the program data to my computer; then to the console after editing. If someone wants to freely give me some technology to do so, however, I'd accept it graciously. But until then, GX will have to stay on that little disc.
MattG: I thought that would be a future-future project. And then there's F-Zero AX out there, too...
BGNG: An F-Zero AX level editor wouldn't really be of any good. No one could use it.
MattG: Do you worry about Nintendo learning of your work and unleashing the lawyers?
BGNG: Nope. Truth to tell, what I'm doing is not illegal. I have legal ownership of the property, and what I do with it is left up to my discretion so long as profit and piracy aren't involved. Releasing patches and level editors is completely legitimate. All 26 original tracks (24 in cups, GP Ending and Death Race) are also included in the patch. Those came from the ROM. Though a copyright notice is present, it may still be a source for action to be taken against the program. There's also a "Default" that appears in the Expansion Kit, but it's a placeholder for when you have no custom track assigned to a spot in the Edit Cup. The course cannot be accessed by the Course Edit feature or by use of a GameShark, so it will be difficult to recreate.
MattG: Nintendo changed their copyright notice a few years ago at the end of games. It used to say "Copyright Nintendo 1996" but now goes on about "All data including scenario, level design, music" etc. etc "is copyright Nintendo 2004"
BGNG: Yup. So if I don't try to make a profit on it, I can do with it what I please. I consider it fan material.
MattG: While exploring the F-Zero games have you found any unused data? Any tracks or cars unfinished and unused?
BGNG: I've only done work with F-Zero X and Maximum Velocity, so my results aren't as extensive as they could be. In F-Zero X, most of the data, including much of the programming, for stuff in the Expansion Kit is present... menus, graphics, machine models, etc. In fact, using a GameShark, you can use the three legendary machines: Super Falcon, Super Stingray and Super Cat. F-Zero Maximum Velocity has one instance in the ROM where a third Synobazz course is mentioned, but track data for it does not appear to be in there. There are, however, four background musics in the ROM that aren't in the game. When two final pieces of data are found in regards to course graphics, I'll release a patch that lets you play the single-pak course Silence - Open Circuit in 1P mode. But in neither game are there any hidden courses.
MattG: Given the chance to open up any video game from any console era and explore it, which game would you pick and why?
BGNG: Hmmm... I really can't think of any. I have plans to make (or at least, hack enough information to be able to make) level editors for each of the F-Zero games, and I already have the capability to hack those. Nothing screams out to me to say "Hack me!"
MattG: Nothing else out there intrigues you?
BGNG: Not really. Most of what I take interest in is how things work; and I can figure out most of that by observing games while I play them. I hack to make tools; not to find out what's in there.
Want to see BGNG put the F-Zero X DD tracks through their paces? Then check out these WMV files.