2022: Looking Back and Moving Forward
(per freem standard, all dates in this document are in YYYY/MM/DD format.)
2021 wasn't the best of years, for various reasons.
A large number of you will be aware of some of them (thanks, worldwide pandemic!),
while other reasons are more personal.
Regardless, time moves forward, and so must we.
Before I do, though, it's useful to look back on the "big" freem events of 2021, in order to give perspective and meaning, and to hopefully figure out a path forward.
Some of this is going to feel like a repeat of the June 2021 Status Update, but not everything will be repeated here.
End of 2020 - "WWF? Some Mercy" work begins
"WWF? Some Mercy" was always an internally contentious project.
Ostensibly, it was undertaken to make VPW Studio a better program. In this regard, it succeeded. Through the development of the hack, VPW Studio was able to edit things that had previously required a hex editor. This also expanded to other games than WWF No Mercy, of course, but it was the main beneficiary of the effort. For all the trouble this hack caused me, the improvements to VPW Studio were the bright spot, and I would attempt to ride that feeling to the end of 2021. (Successfully, I might add.)
Realistically, WWF No Mercy has always felt like a downgrade to me, having bought Virtual Pro-Wrestling 2 before it, contemporaneously to the release of both games. (I feel that distinction is important to make, versus playing No Mercy first and then later discovering VPW2.) If you go from a game that has the Combo system from VPW64 and Revenge, a new Shootfighting style, and the ability to have masked wrestlers, to a game without any of those features, I'm sure you would also consider it a downgrade. That's not to say No Mercy is bereft of good new features, but they hardly make up for the difference in gameplay depth, in my opinion.
Regardless, even though VPW2 freem Edition had been decently received, there was an overarching feeling that people really wanted a ROM hack of WWF No Mercy more than anything else. So around the end of 2020, I decided to ask myself: "What would make No Mercy interesting to me?" and started writing things down.
Some Mercy was not my first attempt at a WWF No Mercy hack. Multiple times, I had tried to get something off of the ground, but always ended up stopping for whatever reason. The first time was around 2009, when the tools available for ROM hacking the AKI games were pretty much non-existent, save for some work from WldFb. I think you can understand why that was stopped in its tracks.
A "WWF No Mercy freem Edition" hack was toyed with in 2018, and started under similar pretenses to VPW2 freem Edition, as evidenced from this quote from the roster file:
"basically, I remove a ton of wrestlers to make room for other wrestlers.", but for WWF No Mercy instead of VPW2.
This hack did not progress very far, but it does have a small amount of notability... Someone came to my house to film this hack running on a real console, but I had to rename it to "WWF No Mercy 2". The only things done for this hack were:
- New logo
- New WIP character selection background
- Brock Lesnar face texture (ported from VPW2 freem Edition, pre-RagDas version)
With the "No Mercy freem Edition" shelved, the next attempt at a No Mercy hack would come in 2019... "freem's Funhouse" (known internally as "no mercy funhouse"). It was meant to lean into the silliness meant for the 2009 hack, including a decent number of non-wrestling characters.
Rejected names for this hack included "WWF Some Mercy"...
hm... better steal that one for the future.
We'll come back to the topic of WWF? Some Mercy later.
2021/01/28 - Virtual Pro-Wrestling 2 freem Edition "final" release
A bittersweet moment, as this marks the last update of the hack for a while.
I dropped "preview" from the release titles, despite the hack not being finished. It turns out some people want to wait for a "final" version before playing, despite the preview versions being playable.
Realistically, a "final" version of the hack would have Joe Bruiser added, along with the Boxing/Striking-only style, and to get THAT to work requires more work than people understand. So I had to drop "preview" from the release descriptor to stop people from not downloading the hack.
The only reason I released "preview" versions is because I knew making everyone
wait for a "final" would be ridiculous with the amount of work left.
We'd still be waiting!!!
This is arguably why I haven't bothered uploading the hack to more "well known" romhacking sites/hubs, as I imagine they only care about "final" versions. Maybe I'm overthinking things.
There were a few reasons to stop focusing on VPW2 freem Edition in the short term:
- A large amount of the changes I want to make require a decompilation of the game.
The reason that I have to replace existing wrestlers and items
instead of adding them outright is that a number of internal game structures and code
would have to be changed in order to support the new content.
I have previously written about this in more detail, however, I feel like writing more about it, especially as things have progressed in the larger N64 decompilation community.
Some may argue that I don't need to decompile the entire game to make changes, but N64 games are a bit different than previous console systems. VPW2 consists of multiple memory segments that are copied in as needed, combined with memory that's allocated at runtime. Changing anything would require manually rewriting/fixing an enormous amount of pointers, which is something I am not particularly willing to do. I have always advocated for trying to cleanly do things (despite the term "rom hacking"), sometimes to my detriment. That's why a decompilation is needed, at least, for myself.
Does the entire game need to be converted to C (as was done for Super Mario 64)? Not necessarily. It would help in two regards:
- Making it easier to make changes (vs. doing those same changes in MIPS assembly)
- Porting the game to different platforms/architectures
One of the necessary prerequisite steps is to make a "shiftable" disassembly, where all the hardcoded pointers and addresses are replaced with labels, allowing the locations to move around, but still work as they did before. This is no simple task, but it is possible with persistence.
A shiftable disassembly is not the only thing required, as adding items to the file table also requires code to be edited. Various file table entries will need to have some sort of symbol assigned to them, like "
Adding new moves is more complex than one might initially think. The move data is spread out between multiple places. You may have heard about "Toki 1" and "Toki 2" mods before (possibly under their older names, "Animation Mods", if you were around the AKI GameShark/hacking scene back in the day), as well as "Move Damage" values and "Master Move Mods". Then, of course, there's the actual animation data. I still haven't even mentioned what it would take to get these moves included in Edit Mode, much less a wrestler's moveset.FIRST_ANIMATION_FILE
" or "FACE_IDS_BEGIN
". There are a number of code locations where the maximum amount of files (or max files minus 1) is referenced, and those would also need to be changed. - Speaking specifically about the Boxing/Striking-only fighting style, there
are two primary challenges that need to be solved in order to implement it.
The first problem is the general bit-packed nature of movesets. This problem has not been fully solved in the 20+ years that the game has been released.
There are three existing fighting styles, each with a different amount of moves available. To add the Boxing/Striking-only fighting style moveset would require:
- Figuring out how the bit packing/unpacking works for the existing fighting styles.
- Creating a NEW set of bit packing values for the Boxing/Striking-only style.
The second problem involves finding a free bit in the parameters to indicate the Boxing/Striking-only fighting style. Even after 20+ years, the AKI hacking community has not decoded 100% of the bits used in the parameters (packed or unpacked). This may or may not be immediately possible, but it is not as hard as the moveset bit packing problem.
On top of those problems are the other set of issues you may expect:
- Changing the game (read: in-match) code to handle the Boxing/Striking-only fighting style (essentially "ensure that no grapples happen", and may also require changes to other parts of the code that check the fighting style)
- Allowing the selection of the Boxing/Striking-only fighting style in Edit Mode
- Boxing/Striking-only moveset editing in Edit Mode
I had previously alluded to all of this as "the final 1% of work". As you might be able to guess from the above description, it certainly looks like more than 1% of work.
Outside of technical issues, I had gotten burned out with the various requests for moveset changes. The original intent was to port the characters from the games they appeared in, with minimal changes to reduce duplication, and to handle newer move slots that didn't exist (for wrestlers ported from older games).
It's important to note that certain moveset change requests were very welcome, and that I'm glad people pointed out. At some point, there were move changes I made that made no sense, as well as accidentally breaking some Combo-using wrestlers. There were also various leftovers from ported wrestlers (Cactus Jack having various Dragon Kid moves comes to mind).
What ended up burning me out was a combination of two moveset request types:
- "Change most of this wrestler's moveset"
- "Here are a bunch of small changes spread out over 10-12 wrestlers"
It's hard for me to balance the hack's original intent of "wrestlers play as reasonably close to how did in the games they appeared in" with these types of requests. At some point, it stopped feeling like "freem Edition" to me.
There hasn't been much progress made on the hack since January 2021, if any. I am unsure if I will pick the project up again as a primary focus, due to the amount of work required to finish it.
The good news is that I took some time to play it recently (on real hardware). I had forgotten about the Challenge mode run I had started with Spider-Man and AKI man. Turns out it's still enjoyable for me to play, even knowing there's so much more left to do.
Melonbread has been figuring out various internal information about the game, which leads us all to a better understanding of what's going on, and how to change things we hadn't been able to before. Information surrounding Royal Road/King's Road Succession mode has been rare up until this point. I would recommend reading the threads on VPW2 Dojo to see what's been found relatively recently.
Why is this in the VPW2 freem Section? Well, Challenge mode has been lightly edited in the hack, but with the new knowledge, I was able to see various flaws during my playthrough, especially regarding the status/difficulty of the default tag team champions (Steiner Brothers and Tenzan/Kojima).
One more thing: I'm not going to change the default costumes unless I add or fix costume items. You're supposed to do that on your copy, and leave me alone about it. It's literally what we did as players when the original games were new. The real old school ones will know of "SHIIMA's VPW2 Edits!" costume edit text file. Go forth and make your own VPW2 freem Edition recostuming guides.
2021/03/26 - Tracklayer
Tracklayer is a very late entry to Curdle Jam 11. The theme of the jam was "ahead of the game", and Tracklayer tasks you with placing track down in front of a perpetually moving car. I am honestly shocked at how much I enjoyed making and playing this game.
The game jam version allows you to play forever, without any obstacles. Further work was done, introducing of track decay, boulders, blockers, and meteors. The game is still not final, since there are issues redrawing the track tiles. Such is life when you make a NES game. (Also, there's no sound.)
I really would like to go back and finish it at some point. Not really sure if it's worth a commercial cartridge release, but it is a fun little game.
2021/03/31 - Qurly Stones
Team Multitap's not late entry for Curdle Jam 12. The jam's theme was "off the grid", so I came up with a game where scoring involves not having pieces on the grid. I handled programming and some graphics, with JazzmanZ and PressStart providing more art. Some sounds were generated with SFXR, and others were taken from various freesound.org contributors.
Due to time constraints (it's a game jam game, after all), the game requires two human players, but since they take turns, one person can play both sides if they'd like. There's at least one bug in the scoring, and the game could stand to feel faster (with regards to piece movement), but overall, I enjoyed it.
2021/04/06 - NBA Jam Source Code Release
I never thought I would see this day, due to its relative impossibility. However, I guess life finds a way.
The source code for various Midway arcade games from the early 1990s was released on Historical Source's GitHub account, including NBA Jam Tournament Edition and 2 on 2 Open Ice Challenge. Since these games were a decently large part of my childhood, I decided to take a break from working on Some Mercy and check the release out.
More information about this is in the June 2021 Status Update. Since progress has stalled, there's nothing new to report at the moment.
2021/05/27 - VT03 Color Test
At some point, I finally figured out what I was doing wrong with regards to the 4bpp graphics mode on VT03, and made a color testing ROM.
"The heck's a VT03?", you might ask. It's basically an enhanced NES/Famicom, a single part of a larger family (commonly known as "VTxx", though some entries are three digits).
I have no idea if this is the first VT03 homebrew made without the use of the official SDK, but even if it isn't, I'm still happy with it. There are three different ROM files, so it should run in whatever VTxx-compatible emulator you use (NintendulatorNRS, EmuVT, or MAME), assuming you use the right ROM.
I don't have real hardware, so I can't test it there.
2021/08/25 - A return to focused VPW Studio work
Not to say that work on VPW Studio was dormant during the period where Some Mercy was being developed, but on this date, I specifically called out my plan for the immediate future:
"I want to get back into the monthly "release" groove that I had going when the program was starting in 2018"
Before this point, the last few internal testing releases of VPW Studio were spread out over a number of years:
- pre-Alpha Preview 13 – 2019/09/25
- pre-Alpha Preview 14 – 2020/02/16
- pre-Alpha Preview 15 – 2021/08/25
After pre-Alpha Preview 15, the monthly release schedule mostly returned. December is always tricky to navigate, with holidays and such. However, I intend on continuing the monthly release schedule in January.
The release on 2021/08/25 was also big for another reason...
2021/08/25 - VPW Studio pre-Alpha Preview 15: 3D Model Previewing
Read that heading again: "3D Model Previewing". This is one of the big hurdles that needed to be solved in order to implement features like the Arena editor, as well as move animation editing.
While none of those features are currently implemented, it is a large step forward that deserves to be called out.
2021/09/18 - VPW Studio pre-Alpha Preview 16
This version of VPW Studio came with a few notable changes, mainly...
"Added support for WCW vs. nWo: World Tour NTSC-U v1.0 and PAL.
Yes, finally, after 3 years of being unsupported."
The manual was also considerably updated, and game-specific documentation was starting to be added. There are still a lot of things to note, of course, but there's a place for them now.
2021/10/03 - VPW Studio pre-Alpha Preview 17
Wrestler definition files were added, finally allowing you to change height, weight, and various other wrestler-related values without needing to use a hex editor.
Also, the VPW2 and No Mercy FileTableDBs reached 99% completion in this version. Not everything has proper comments, but labeling the file types is the first step in figuring out what everything is.
2021/11/19 - "WWF? Some Mercy" canceled
Just like my previous attempts at hacking WWF No Mercy, I eventually gave up on "WWF? Some Mercy". Though, this time, it wasn't for technical reasons.
The quote I gave regarding the cancellation of "WWF? Some Mercy":
"Realistically, I don't care about No Mercy as much as everyone else, and this hack was going to be me phoning it in JUST to make people who refuse to play VPW2 happy.
So I'm just not going to waste my time on it anymore."
Development of the hack was a bit troublesome, as two of the people who were meant to be in it (New Jack and DMX) ended up dying. I was not particularly enjoying making the hack, either. There were enough internal differences between VPW2 and No Mercy to make certain changes harder to do.
Combine all of this with my general feelings about No Mercy (see first section of this document), and it was easy for me to make the decision to stop working on it. Luckily, most people were understanding and accepting of my decision. However, I still get the nagging feeling that there is a large contingent of the overall AKI fanbase that refuses to accept anything that isn't No Mercy.
Some Mercy really deserves its own post-mortem, explaining things in detail, but that's for another time.
2021/11/28 - VPW Studio pre-Alpha Preview 18
The primary standout change in this version is the "Quiet" build log setting.
It turns out the long project build times were artificially being inflated by the logging. Not very good.
The only other notable change is removing the use of GetPixel/SetPixel in favor of LockBits/UnlockBits. This is meant to make operations involving images faster, though I was unable to notice a difference in practice.
December 2021 - Closing the year out
I knew December was going to be hectic due to the holidays, so I prepared myself for a slower work schedule. Even so, work continued on the VPW2 decompilation project and VPW Studio.
2022 - What is the future?
I'm not yet sure where the future is going to take me, but there are a few paths I could go down.
VPW Studio
Work will likely continue on VPW Studio.
I don't know when a public release will happen.
There are two main problems at the moment.
The first is that the bus factor of the project is 1. In other words, I'm the only active developer of the program. Earlier this year, I started taking steps to change that, and the project is currently in a private GitHub repository.
Right now, not many other people in the AKI hacking community are programmers. The ones that know how to program don't currently know or actively use C#. Since VPW Studio is written in C# (mainly for the GUI features), this is a slight issue. This problem can either be solved by time (assuming the current programmers learn C#), or having other programmers come to the AKI community.
The second problem is a bit harder to solve, and it involves expectations. This includes other people's expectations of the program, as well as my expectations of the people who use the program.
In the state that it's in, VPW Studio requires external knowledge to get the most of it. There's no "simple" way of doing many things that are expected of a program that's meant to edit multiple games in the same series. However, there seems to be an overall expectation that VPW Studio will make things "easy", as opposed to "still hard, but not as hard as it was before".
I mentioned how the moveset format has not been figured out for VPW2's various fighting styles in the VPW2 freem Edition section earlier. On top of that, you would need the two moveset formats for WrestleMania 2000 and No Mercy. Let's not even get started with Revenge and earlier, as those games use a completely different format.
Wrestler parameters are different between games; Revenge and earlier use unpacked values, while WM2000 and later use packed values (which are unpacked later). Figuring out what everything does in both packed and unpacked parameter formats is an ongoing battle.
Given the above issues, the only way to change wrestler moves and parameters is by making a new character in Edit Mode, then dumping their data in-match. As you can imagine, this is impossible in Revenge and earlier. Combine that with people's expectations that you can edit the parameters and moveset in VPW Studio itself, and you're going to end up very disappointed at the current state of things.
Definitions for costumes (Revenge and earlier) and costume items (WM2K and later) slightly differ between games... The differences continue, and I won't list all of them here.
It's one thing to figure out the formats, but another to create a usable user interface for viewing and editing the items. For example, the current Costumes dialog in VPW Studio only works properly with Revenge and earlier, since those games define the entire costume data (models, palettes, and textures). The user interface for this dialog leaves a lot to be desired, as the data is read-only.
Program documentation is meant to smooth over some of these issues, but not everyone reads it, or will think to read it. Furthermore, some of the games have very specific issues (such as VPW2's palette usage for singlets), and these need to be identified and mentioned in the game-specific documentation.
The final expectation-based issue is technical support. End users will assume that I have infinite time available to personally help them with anything and everything that arises from the use of the program. I do not have infinite time to help people, especially in a one-on-one context. Any time I spend being technical support can not be used to make the program better, and vice versa.
These issues all add up, and I don't see things significantly changing unless more programmers join the project.
General AKI stuff
I think it's safe to say that I am not going to create any new total conversion projects for the AKI games for quite some time, if ever. VPW2 freem Edition largely sapped the fun out of it, and WWF? Some Mercy took the rest. In general, the amount of work required for a total conversion is very large, and generally suited for teams.
If large scale hack projects are off the table, what remains?
Virtual Pro-Wrestling 2 decompilation
This is the new white whale, now that VPW2 freem Edition has taken a step back. I say that only half-jokingly, as this project will likely take many years to complete without external help. This is arguably another 20 year project, and I'm not sure how much I time and effort want to commit to it. Given the changes I want to make to VPW2 freem Edition, this feels like a foregone conclusion.
Much like VPW Studio, I am largely the only person working on this at the moment.
Other Tools
There are a number of tools I have worked on, but not completed. This probably has something to do with the fact that I'm not exactly the target audience for said tools.
- "NMthing" replacement
There's an old tool for WWF No Mercy created by JamStubbs that would let you play custom music during entrances (among other things). However, this tool worked by trying to hook the emulator's memory, requiring you to find an address using Cheat Engine.
Back then, there was no external scripting support in any N64 emulator. Project64 now has a decent debugger and JavaScript support. Bizhawk has had Lua scripting for even longer than that, but has not been a go-to choice for the AKI hacking community.
At some point, I had started work on a replacement for the music portion of the tool, but did not really progress further than writing a basic client and server. While the incompleteness may seem disappointing, this actually opens up a large amount of other possibilities not previously available. More on that later.
- GameShark Code Converter
For some reason, the GameShark code format was changed in Project64 v4.0. Since most of the total conversion projects in the AKI community use GameShark codes in some form, this is a problem. There are also people who would like to play these projects on other emulators, which may have different code database formats. Thus, a tool to convert the codes seemed like a good solution.
I'm unsure when this will actually be complete or available.
Future Concepts
Lots of thoughts have run through my head about future concepts in the AKI hacking scene. While all of these ideas are possible, they are not entirely plausible. Still, I am listing them here in case someone else decides to take the plunge.
- External Scripting
This was briefly touched on in the "NMthing" replacement section.
Project64 and Bizhawk have support for external scripting. This can be used either in place of or in combination with GameShark codes. Project64's external scripting uses JavaScript, and Bizhawk uses Lua.
Currently, most AKI hacking projects use a lot of GameShark codes to make changes. These codes usually have a large number of activator codes (codes that start with
D0
orD1
) to ensure the proper operating conditions. This can be very cumbersome, since you need to repeat the activator codes for every single change. If you were approaching this in a higher level programming language, you would only need one "if
" statement to gate the entire set of changes.The Project64 JavaScript API includes two important features:
Particularly clever people may see where this is going. However, I should spell it out, so there is no doubt:
In theory, you should be able to have an infinite amount of playable wrestlers by replacing the relevant data after it's loaded, but before it's read and used by the game. (This could also extend to other game data.)One of the issues with this path is that you're locking the project to only be playable on Project64, as Bizhawk does not have something similar to the
N64Image
class. However, since a large amount of projects are already locked to specific graphic plugins, I doubt this will be a limiting factor in practice."But freem, you care about running the games on real hardware. Won't this solution be limited to emulators only?"
Various N64 flash carts (64drive, Everdrive 64 (X7 only!), and SummerCart64) have USB ports. It is possible to hook them up to a computer and have a client program replicate the functionality of the emulator-only scripts. However, you would have to modify the ROM to enable this feature, and add the necessary hooks for loading and modifying data.
- A Theoretical "Game 7"
From my perspective, this would require a decompilation of both Virtual Pro-Wrestling 2 and WWF No Mercy at the very least. Then, you have the un-enviable task of combining the features of the two games. At the end of it all, you're still limited by what the Nintendo 64 hardware can do, even if you use graphics plugin-based texture replacement.
While I like the idea, I won't be the person to start or lead this project. Even the smaller "re-add the Combo and Shootfighting fighting styles to No Mercy" sub-goal is more complex than originally imagined.
- PC Port of VPW2/No Mercy
Would require a decompilation of either game to even begin thinking about this. I only bring this up because people will assume it's possible based on the work done with Super Mario 64. While it is possible, there are two important points to be aware of:
- Super Mario 64 is among the earliest N64 games.
It's a lot easier to deal with games that were made early in the system's life, before everyone figured out how to squeeze out performance. - Super Mario 64 has a large dedicated hacking and reverse engineering community.
While the AKI hacking community is dedicated, focus is largely placed on making emulator-only projects. There are very few reverse engineers in the AKI community. Sadly, I do not see this changing any time soon, barring some sort of miracle.
- Super Mario 64 is among the earliest N64 games.
Retro Console Dev
Retro console development is always looking at me in the mirror.
I have many unfinished projects that could be worked on in this category, but the drive isn't fully there. Returning to the Neo-Geo stuff would be nice, and there's still more to learn about the VTxx series.
Genesis/Mega Drive has also been at the back of my mind, since it's another 68K-using system. I've barely scratched the surface with SNES development, but don't feel like taking it too much further at the moment, due to disliking the constant need to switch between 8 and 16-bit modes.
PC Engine/TurboGrafx 16 is another option I've wanted to look into, but I've had a bias against PCEAS and HuC for the longest time... I am aware of updates to the toolchain, and maybe things are ok now.
Wrapping it up
There are various other things that could be on this list of future projects, but if I wrote about everything, this would never get finished. That being said, here's hoping 2022 goes well for everyone.