Number 31 (a.k.a. "November 2016 Progress Report and The Future")
As I begin to write this, it's about 55 minutes until November 10th. It's rare that I give a damn about my birthday, but as things have changed over the past few years, I find I need to regroup and refocus. That being said, I'd like to use this opportunity to bring everyone up to speed on pretty much every personal project I have/had going on, as well as what the future holds.
Pseudo-Table of Contents
- Family Picross (NES)
- The Last Eichhof (Neo-Geo port)
- quack - a duck simulator (NES)
- ROM Hacking and Stand-Alone Reverse Engineering
- Fire Pro Returns Tools
- Console Homebrew Stuff
- The Elephant in the Room (a.k.a. The Future)
This is probably the hardest thing to write about, as it's been in the works since 2012 and hasn't had much progress to show in recent years. This was meant to be a simple game that I could pitch to one of the active NES homebrew publishers, but over time, I started to focus on other things... (see below entries)
As time goes by, however, I keep thinking I should just finish it and get it out of the way. The main hangups here are finding someone to do audio, creating the puzzles, and coding the rest of the game. Then, assuming it all gets done and tests well, the attempt at publishing begins...
I don't know if I'll get to it immediately, but I would like to finish it at some point.
I think it's time to put this one to bed. I got caught up in wanting to make a sound driver that didn't suck (despite not needing it for this game, since 100% of its sounds are samples), and I didn't get there in time for this to matter. The effort that was spent here is better spent on the overall freemlib for Neo-Geo. Maybe in time, I can revisit it.
This is my planned entry for the 2016 NESDev Compo, but I'm not sure I'm going to be able to finish it in time, with other things going on. I don't want to formally announce that I'm abandoning it, because there's still some time left. However, it would require me to really focus on it, as it deals with things I haven't created previous solutions for yet.
The game is pretty much a simple one-screen arcade game, since my last NESDev Compo entry attempt (2014) had too many levels and features to be completed on time.
This is a multi-faceted topic... Not sure how to explain it, so I'll just go topic by topic. "Stand-alone" Reverse Engineering means any RE work that isn't done as part of another project.
Super Dodge Ball (NES)
This is one of those things that's both rom hack related and reverse engineering related. I've been at this for a few years, but I'm getting to the point where all the tedious work needs to be done. This includes things like breaking up the metasprite definitions in bank 5, and figuring out what pretty much all of the non-essential code does.
The reverse engineering project was started for the express purpose of figuring out the super shot data, and I did manage to do that earlier in the year. However, I haven't uploaded an updated version of the disassembly with this information. The build process is wonky and includes copyrighted CHR data as-is (because the CHR data also includes nametable data, which I'd like to have broken out and viewable)...
The hacking part of this is "Super Dodge Ball - freem Edition", which essentially re-configures the teams and stats, among other changes. This was stalled for a number of reasons, primarily the super shot thing. The other problem is that the hack is based on an older version of my disassembly, so I'm going to have to redo everything.
Virtual Pro-Wrestling 2 (N64)
I've come to accept that I've reached the twilight of my career in hacking VPW2. Everything I want to do would require rewriting large chunks of the game. When compared to the alternative (see below), hacking the game to solve its many problems seems like the wrong answer.
In theory, I could make tools for the game, but I would have to figure out where everything is again, then make another UI, then deal with save data as well... as well as fighting my belief that VPW2 can't be "fixed" in its current condition. But again, I'll get to that below.
Earlier in 2016, I had worked on a few tools for Fire Pro Wrestling Returns. Of course, this also applies to late 2016...
Logo Viewer, VPF0 Viewer/Converter
Both of these projects are considered incomplete for various reasons.
This tool doesn't let you replace logos. It will be replaced by another tool that handles the entire save game file. (see below)
VPF0 is the "magic number" found at the beginning of an image format found in Fire Pro Returns. The format is similar to the logo format; in fact, the logo format is a subset of VPF0. That's what kind of stopped progress on the Logo Viewer tool. However, it led to the ability to make custom mats and ring skirts, so that's a plus.
At this time, the most important deficiencies in the program are a lack of PNG import, and a lack of transparency support for imported GIF files. 4BPP support is also lacking due to only having one example file, which I'm not sure is actually used in the main game. Might be used in the debug menus (which, IIRC, have yet to be found as of this writing) though.
Another MAJOR problem is that you need to have extracted the files from FPR.ROM beforehand. Currently, this requires a hex editor and some patience. However, I lack the knowledge of the filesystem format used by FPR.
Why stop at VPF files, though? I'm also working on a Save Tool, which will hopefully have editing capability in the future. However, that hinges on something I'm not smart enough to figure out by myself... the checksums.
Regardless of the checksum issue, the tool is coming along at a decent pace. I don't know EVERY data structure yet, but I'm making some pretty good progress on the ones I've touched so far.
Through the research done for this program, I've come to realize that there are no simple solutions to the "giving edit wrestlers multiple costumes" and "giving default wrestlers multiple edit costumes" problems. Both the wrestler edits and recostumes are limited to one slot. Without extensive hacking, the only way to have a wrestler with multiple costumes is hacking the content of FPR.ROM. ...did I mention the wrestler data is hidden in there twice for some reason?
Some things I'd like to see and/or work on, in no particular order:
- FPR.ROM browser/extractor(/importer/adder?!)
- Default wrestler data editing, among editing other things
- A patch for the US version that fixes the "Yes"/"No" CPU Logic labels and gives proper labels to the Personality traits, since Jason Blackhart figured that out.
Going into detail on these is going to make this article even LONGER than it is already, and I'm getting tired of it.
Console Homebrew Stuff
After freeing myself from StepMania, this is where I tended to spend most of my time and energy. This is partially covered in the Family Picross, quack, and Last Eichhof sections above...
Just some quick notes about things not mentioned above...
- nesmon (machine language monitor for NES) probably won't be done any time soon.
- The freemco NES corelib will still be updated from time to time.
Neo-Geo is where I've spent the majority of my homebrew console dev time, as its homebrew scene is ripe for improvement! Of course, I've been a small part of that, with a few tools and the freemlib. However, there's a lot more work that needs to be done. Maybe not all of it has to be done by me, but I don't know.
PC Engine/TurboGrafx 16
I wanted to get into PCE development, but found the current tools to be a pain compared to what I was used to. In any case, I started making a NES and PCE pong demo, but never really finished the PCE side. The PCE scene has a lot of catching up to do to the NES scene when it comes to tools, and it kind of disappoints me. However, in order to be the change I want to see, I'd have to de-prioritize other things, which I'm not really willing to do.
Sega Master System/Game Gear
I made a small detour at one point to try and learn how to program these two systems. The primary reason being "I need to suck less at Z80". While I didn't get very far, I was able to make a build environment that would assemble a ROM for both the Master System and Game Gear.
- Genesis/Mega Drive is a hop and skip away from the Neo-Geo. Many tradeoffs exist, but I think it would be possible to get a dual-compatible environment.
- Game Boy was looking like another good choice, but I couldn't find an assembler I liked, so I discarded it for the time being.
- SNES probably isn't happening; I've become too disillusioned by the popular opinion of it to give a damn about programming it, despite it being a good childhood system.
- PlayStation 1, N64, and Dreamcast are things I'd like to look into one day. However, 3D mystifies me.
Now, it's time for the really long part, I suppose. Well, until I actually write it, you'll have to make do without. It'll probably be in another article entirely, which I'll link here eventually. (it's 02:30 on the 10th now; it was 23:something on the 9th when I started writing)
To save yourself the trouble of caring, it has to do with the design and implementation of professional wrestling video games, and where I believe we need to go.