100 IQ: Use Fightcade to play Third Strike with friends online
150 IQ: Use Fightcade to play Windjammers with friends online
10,000 IQ: Use Fightcade to play Tetris: Battle Gaiden with friends online
it seems like fightcade hasn't actually been updated since the start of the year. From the outside it looks like the main dev is wrapped up in other business as well as trying to get duckstation integrated into fightcade. So the ETA on Sega C-2 with rollback netcode is gonna have to wait.
Right now I'm focusing on creating a custom PP2 savestate for fightcade. The main goals of the savestate are:
That last one is tricky to nail down. The way PP2 is written, the seed is set to a fixed number on boot (0x35879DE2 if you are curious) and only gets iterated when random events fire off. So the issue is that the closer you set the savestate to game start, the fewer opportunities you have to sufficiently randomize the RNG before the start of a game. I was able to consistently get the exact same seed from cold boot just by mashing start.
It might be a better question to ask what exactly causes the RNG to be called? From some limited analysis, it seems like the following things do it:
Waiting for the attract sequence to run long enough to make enough RNG calls is a no-go since it takes so long to get a sufficiently randomized number of calls in, so the recruit screen is the next best bet. It's also only one screen removed from the start of a game -- unfortunately, it doesn't seem like anything on the mode select screen calls the RNG.
The main issue is that whatever calls the RNG on the recruit screen doesn't do so evenly -- it only makes calls about every 1-2 seconds. So that's still infrequent enough to be able to game the RNG if you know what's up.
Right now my gameplan is to try to see if the update rate for the background animations can be modified in RAM somehow - if I can get the RNG call to happen every frame, for example, you'd get a lot more randomization of the seed for the first match of the set. Right now I'm using the MAME debugger to step through the assembly code to look for calls to RAM around calls to the RNG function. I'm not a big fan of the MAME debugger, but I can't figure out how to get Ghidra to properly disassemble the m86k ROM, or how to set up ASM breakpoints in Bizhawk. If you know how I'd love to hear how!
It'd be cool to figure out if it's possible to corrupt the savestate to spawn an RNG-based sprite on the mode select screen to cut down on one more menu. That's way outside of my skillset though.
Join ACP Puerto Rico for another awesome online fighting game event! We're hosting a bunch of retro titles and Rivals of Aether!
I will be streaming Cyberbots on Saturday, August 19th at 8:00 PM EDT
Watch it on https://twitch.tv/polar_bair_8
More details:
Having fun with fightcade single player but terrified to accept any challenges bc I expect to get wiped out and dunked on