Fighting Force, unbound
Control the "rolling demo" of the unreleased would-be-sequel to Streets of Rage
Core Design developed several titles for the Sega Saturn, including Thunderhawk II and Tomb Raider. Almost half of them were canceled, however. Tomb Raider II, Ninja: Shadow of Darkness, and Fighting Force were published for the Playstation, but not the Saturn.
According to Sega Saturn Magazine, Fighting Force started its life as a sequel to Streets of Rage:
The original intention was to produce a scrolling 3D multi-player beat 'em up that could be offered to Sega as a potential Streets of Rage 4. Sega were apparently interested in the concept but hinted that they had their own ideas for continuing the series and so Core decided to distribute the game themselves
There were magazine previews and promotional videos of the Saturn version of the game. But until 2008, when a prototype came to light, no playable builds were available. The closest thing was the “rolling demo” on the European Core Demo Disc and Saturn Power No. 1 demo disc.
That preview shows off two and half minutes of the game engine. It’s an auto demo, so the inputs are scripted and it can’t be played… or can it?
Yes it can! Get the patches from SegaXtreme.
My usual technique for auto demos is to find the memory addresses where the game would normally store controller input, and then watch for writes to those addresses. Lots of games have a flag that controls whether the engine should process player button presses or pre-scripted values, and Fighting Force is no different.
The function at 06026690
checks the flag at 0603b4c8. If it’s 00, then we get button presses. If it’s not, we don’t. This demo sets it to 01
early in the loading process, and that’s why the Hawk, our main character, isn’t controllable.
Our first patch is to the function at 060173b8
, which is the first one that executes when the Fighting Force code is done loading. Instead of writing an 01 to the auto demo flag, we write 00
:
060173ec e0000
That is actually enough to make the game playable. The first stage loads, and enemies are approaching. We have control of Hawk, and we can punch them.
This demo is from around 1997-03-13, but it seems to be missing several elements from the aforementioned 1996-11-26 prototype. There’s no HUD, the pause menu doesn’t work, and you can walk through walls and obstacles. What gives?
Part of the issue seems to be that things were cut out of the demo, presumably to save space (the non-Hawk character files are missing, for example). But some things seem to have been hastily disabled: the “primary game loop” function (at 06016d28
), which runs during gameplay, calls a bunch of other functions that look like this:
The 000b 0009
instructions cause these functions to immediately return without doing anything. This is somewhat analogous to “commenting out” their code, because they can easily be toggled back on. All we need to do is replace the 000b
(return) with another 0009
(null operation) to restore them:
0603dca2 0009
0603dba6 0009
0603dc24 0009
0600d5e4 0009
This gives us back the HUD: we have our score, character health bar, and enemy health bars.
I suspect that wall collision and pausing can be restored as well, but I haven’t figured that out yet. Those are disabled by some other method; they don’t use the “early return” trick.
It is possible to enable a second player, but since the files are only there for Hawk, there will be two of him on screen at once. The relevant address is 06049bf0
- set it to 00000002
.
With the patches above, we can play through the first stage. The game freezes after the last enemy is dispatched, though, so we can’t proceed to the next stage. (I think this is down to missing files, but I’m not sure).
The auto demo shows the second stage, though, so in principle it should be playable. Indeed, it is: if we go back to that function that first function. Just after setting the auto demo flag, it sets the stage selector (0603b4d0
) to 00
. We can set it to 01 with this patch:
060173f2 e101
This stage freezes when we complete it, too. Alas, there aren’t any files for stage 02
, so this is as far as we can go with this demo.
Lots of things in this build are noticeably different from the final Playstation release: Hawk’s jacket is red instead of blue, for example. There’s a red truck parked in the lot in the first stage. There are guys wearing orange jumpsuits in the second stage.
A full list of differences is beyond the scope of this article, but Saturn enthusiast Cerbero provided me a screenshot showing a bunch of changes evident in a single frame:
Cerbero also clipped these videos showing different builds of the Saturn version of the game:
A 1997 trailer from Hobby Consolas magazine
Gameplay footage from E3 1997
This preview, which shows a more complete version
Many thanks to Cerbero for pointing me toward this auto demo and for testing out my patches. I didn’t have any history with this game, but enthusiasm is contagious and I’m now really curious about what became of the Saturn preview builds. Do any survive? If you can locate one, I’m happy to analyze it…
As usual, you’re welcome and encouraged to use the information (and screenshots) on this page to update The Cutting Room Floor, Hidden Palace, Sega Retro, etc.
Next week we’ll take a look at another unreleased Saturn game: send in your guesses.
I still play Fighting Force on the PSX and Fighting Force 64 on the N64 regularly. Love the games. It's so nice to be able to play this on the Saturn to see what might have been.