Final Fight (SNES)
This game has unused areas.
This game has a notes page
This game has a bugs page
The SNES version of Final Fight is a cut-down port of the arcade original. Faced with the tight constraints of an eight-megabit ROM (and possibly a looming deadline), Capcom made the rather unpopular decision to excise a number of features, including one of the playable characters (Guy), the entire Industrial Area stage, and two-player cooperative mode. Additionally, only three enemies could be on-screen at once, making the game as a whole easier and less frantic than its arcade counterpart.
Fortunately, Capcom got better, and later released Final Fight Guy, an alternate version of the game that allowed you to play as Guy (but removed Cody), as well as two SNES-exclusive sequels, Final Fight 2 and Final Fight 3.
- 1 Debug Mode
- 2 Stage and Area Select
- 3 Demo Recorder
- 4 Deleted Round - Industrial Area
- 5 Unused Backgrounds
- 6 Unused Characters, Enemies and Objects
- 7 Unused Katana HP
- 8 Unused Round Progression Table
- 9 Unused Text
- 10 Unused Tile Properties (Collision Data)
- 11 Two Player Mode Remnants
- 12 Haggar Ending Programming
- 13 Text Printing Error Handler
- 14 Extra Credits
- 15 Bay Area Dog Bonuses
- 16 Easy DifficultyA Bonus
- 17 Regional Differences
To enable the game's debug mode, add one of the following codes:
|Region||Pro Action Replay||Game Genie|
Immediately after resetting the game, hold Y + B on controller 2 until the Capcom logo fades out. This activates the debugging features by setting RAM address $7EFFFA to 01.
Reset again and hold Select to activate a CPS1-like TEST MODE menu. Press Start to activate the current selection.
Shows a few color bars. Likely used to calibrate monitors/TV screens during development. Press Select to exit.
A controller test that shows the states of the buttons on both controllers. Note that it has labels for four controllers, even though the final game has no multitap support. Hold Start and tap Select to exit (may take more than one try).
Also known as Dot Cross Hatch. This is supposed to display a simple test screen of a grid with dots, as seen in a number of Capcom arcade games. However, it just shows a blank screen instead as the tilemap is incorrectly loaded into VRAM: it uploads a repeating 8-bit #$7B value instead of a 16-bit #$7B00 pattern. With the correct tilemap in place it appears as follows:
Press Select to exit.
Opens a buggy graphics viewer. The contents will vary depending on what graphics were loaded into VRAM when you used the Start + Select debug soft reset. Once you enter this menu, you'll need to reset to exit. You can still leave the submenus by pressing Select, however. In the submenus, press Left or Right to change the palette (8 total), Up to scroll down, and Down to scroll up.
Displays sprites such as player characters, enemies, food and weapons. Sometimes there won't be any display at all, a solid color screen, or glitched tiles surrounding the VRAM display, as shown above.
- BG1, BG2
Displays layer 1 and layer 2 graphics. They'll sometimes have the same data; it's not clear what the differences between the two are.
- BG3 (VRAM)
This contains the HUD graphics.
Does not function. It contains no programming except to remain on the CHAR TEST main menu.
Does not function. It was meant for a sprite viewer with animation test (aka OBJ Pattern Test) that wasn't ported from the arcade game. The only programming the subroutine contains is to reset the cursor position on the main menu.
Does not function. It was meant for a map viewer (aka Scroll Test) that wasn't ported from the arcade game. Points to the same placeholder subroutine used by OBJ.
In-Game Debugging Features
In addition to the TEST MODE menu, enabling debug mode activates a few in-game debugging features as well. The glitched bouncing sprite on the left side of the screen represents the current CPU usage; the lower the sprite, the more CPU time is currently being used. The numbers displayed under the health bar are as follows:
- The first byte is the current DifficultyA. It starts out at the same value shown in the Option Mode (except for DifficultyA $01 in the Option Mode, which will be $00 here). It will increase as the DifficultyB frame counter rolls over. The maximum value value is $17, $18, $19, or $1A based on the four possible DifficultyB settings (from low to high).
- The second byte is the DifficultyB. It's the same value shown in the Option Mode - 1 (eg, DifficultyB $04 set in the Option Mode will be $03 here.)
- The third value is the DifficultyB frame counter. It rolls over every 10 seconds, 10 seconds, 8 seconds or 5 seconds based on the four possible DifficultyB settings (from low to high).
On controller 1:
- Hold L for 9x slow motion.
- Press R for... nothing useful. It writes #$FF to RAM address 7E0140, but the routine that checks for it later just increments it back to zero and exits.
- Press Start + Select for a soft reset.
- Press Select to instantly skip to the next area. The game looks for a non-zero value in 7E0140 in order to activate this feature, but the debug functions assigned to L and R, above, are always making sure it stays at zero. Add one of the following codes to bypass this:
|Region||Pro Action Replay||Game Genie|
On controller 2:
- Press X to enable invincibility. Also allows infinite time in bonus rounds. Press the button again to disable. Toggles RAM address 7E00CB. Note that the invincibility doesn't protect against all attacks (eg, jumping Andores, Belger's arrows and possibly other projectiles).
- Press A to make your character fire a bullet from his crotch. While this is an extremely effective (and unpleasant) weapon, don't use it while facing left, or you'll kill yourself (the bullet is always spawned facing to the right). A maximum of 3 bullets can be active at once, less if other weapons are on screen.
While the game is paused:
- Press X for a RAM/ROM viewer (doesn't always display the right data). L and R will change memory banks ($00-1F). Add the codes 01AFAA80 and 01AF9DFF (US version) to remove the bank $1F limit and gain access to the full SNES memory map (including RAM beyond the first $8000 bytes).
- Press Select for a palette editor. Holding L and pressing Left or Right will expand or contract the black masking box. Holding R and pressing Left or Right will decrease or increase the value, and holding R and pressing Up or Down will change between the 16 total pages (00-07, S0-S7). The 16-bit values in the left column correspond to the 32-byte palette data in ROM. In the screenshot above, it's showing the palette data located at ROM address $00617F-00619E, SNES address $00E17F-00E19E (US version). Adjusting the individual RGB values updates the 16-bit value using the following bit pattern: 0bbbbbgggggrrrrr Changes made in the RGB editor are temporary and will be lost upon switching areas. You can create a custom player palette by changing values on the "00" page. Two examples are shown below, along with a set of game enhancer codes that will allow you to keep a custom player palette between areas and until you run out of lives.
|Region||Pro Action Replay||Game Genie|
|JPN||01A3DB07 + 01A3DC8D||D5C2-A4A0 + 62C2-A7D0|
|USA||01A67E49 + 01A67F8D||0BC5-6769 + 62C5-67A9|
It's also possible to access the RAM/ROM viewer and palette editor at the Capcom logo. With the debug mode already active, have L and R held as the game boots. The game will freeze at the Capcom logo, and you can then press X or Select for the menus.
This debug feature, disabled by default, displays collision boxes around the player character and any weapons that are on screen, like seen here. Enable it with these codes:
|Region||Pro Action Replay||Game Genie|
The graphics don't point to the correct tiles in VRAM, though they are present. This was fixed in Final Fight Guy.
Debug Animation Test
A simple animation frame test that's not connected to anything, but was later mapped to the second controller in Final Fight Guy. Use the following codes to trigger it while jumping:
|Region||Pro Action Replay||Game Genie|
Press B to cycle through frames, and Y to resume gameplay.
Stage and Area Select
The options menu once had ROUND and AREA selections, like those in the non-functional early options screen described in the section below. The text and pointers to the settings were deleted, but the programming remains and is located between the EXTRA JOY and EXIT options. Enter Pro Action Replay code 01E0211B or Game Genie code F834-DD00 (US version) and highlight the EXIT option as a simple method to access the ROUND portion. Use the X button to increase the value and B to decrease it. Disable the cheat code when finished in order to exit the menu.
It's also worth noting that this stage/area select treats the Industrial Area as a valid stage, and that it consists of two separate areas.
Interestingly, Final Fight One for the GBA directly copied chunks of text from the SNES build and included an unused copy of the Option Mode text printing from a prototype build. If imported into the SNES version, the menu can be seen with its missing text:
Use Pro Action Replay code 00F8E980 (US version) to access a demo recorder. After the Capcom logo, the game checks for bit $80 in memory address $7EFFFC. If set, you're immediately brought to the character select screen. Select a fighter and you're now playing in the demo mode, with your controller input being stored to RAM. Once the demo ends, bit $80 (record mode) is reset, and bit $01 (playback mode) is set. Wait for the game to enter demo mode on its own to see your recorded gameplay.
Deleted Round - Industrial Area
|This article is a work in progress.|
...Well, all the articles here are, in a way. But this one moreso, and the article may contain incomplete information and editor's notes.
This section needs an overhaul (requires individual components of level loading investigated - eg uses Stage 5 pointer for the music)
- The collision data pointer is the same as the Bay Area. No unused collision data sets exist in the data.
- A valid platform height of $0040 is set (which is the same for all rounds except the Subway.)
- If the first area was somehow successfully cleared, the game will skip past the next area, automatically clearing the round. This suggests that the elevator section was in a heavily unfinished state when it was abandoned, assuming work on it even started.
OLDER INFO STARTS HERE:
Using the Pro Action Replay stage modifier code 7EFFFE03, you can access the deleted Industrial Zone level. The music is from the first area of the game, but this was possibly the intention anyway, if the Game Boy Advance port is any indication. The graphics are garbled, and when you beat all the enemies in the area, the game will either crash or cut directly to the ending with Edi.E instead of Belger.
This code does not access the proper enemy data (if it even exists), and will reuse the enemy set from the first area of the game.
If you use the 7EFFFF01 area modifier in conjunction with the above code, you'll access the elevator sub-level where you would fight Rolento in the arcade version. This will also not call upon the correct enemy data or graphics, but the music and scroll parameters appear to be in place, or the graphics merely do not visibly scroll. After defeating all the enemies, the game will try to move you onto the next level, but will get stuck doing so.
Music index 0A in the options menu (L + Start on title screen) was reserved for the deleted Industrial Zone music; it was restored in Final Fight Guy as index 0B.
The screen stops scrolling early at the end of the storeroom, which allows enemies to rush in from the right side of the screen, but much of the wall (including door) goes unseen. The unseen section is a mirror of the storeroom entrance; there aren't any unique graphics tiles used.
Like the storeroom, the scrolling stops before the entire wall is visible. Everything to the right of the green counter goes unseen. In the arcade version, you're supposed to break down the door and proceed to the next (empty) room where you're captured by Andore. This cutscene and most others are missing from the SNES port, however, there is evidence it was planned at one point as the map index values for the empty room exist in the data for the first area of the West Side stage.
Unused Characters, Enemies and Objects
The text string for his name is about the only thing found in this version of the game. Value $00 in memory address $7E0D12 is reserved for Guy. At least some, if not all, of the pointers tables that rely on this (eg, loading player graphics, palettes, AI) point to Cody's data.
An unused but fully functional Andore enemy with a light orange palette, meant to appear in the West Side cage battle. In the arcade version, up to 3 Andores would appear in 2-player mode to provide sufficient challenge. With no 2-player mode in the SNES game, F.ANDORE goes unused. This was changed in Final Fight Guy, where on higher difficulty settings more Andores drop from the ceiling after the first two are defeated. Add the following Pro Action Replay codes for the battle pictured above:
The Industrial Stage boss. Text string only. No graphics exist, except for an icon (only in the Japanese version).
These breakable objects in the arcade version also exist as text strings only.
Rolento's weapon. Again, just the (incorrectly spelled) text string. No AI or graphics exist.
Belger's wheelchair. This text string is never displayed when the chair takes damage or breaks.
This text is not shown when destroying doors in the West Side stage.
This string is meant for the glass panes in the second bonus round, but is never shown as the bonus round score occupies the slot used to show enemy/breakable item status.
Unused Katana HP
Katana's HP is initially set to 400 (this value is loaded from a table), but immediately after it being set is programming that loads a hardcoded 300 value instead (the same amount of HP as Thrasher and Edi.E). While it's clear the developers thought that the original difficulty was too high, it's unknown why the HP table wasn't just updated instead. Use Pro Action Replay code 06BB6090 (US version) to fight Katana with the original 400 HP.
Unused Round Progression Table
Two copies of the round progression table exist, one of which is the arcade layout (with the Industrial Area included in the correct spot) that goes unused.
|00 - Slum||00 - Slum|
|01 - Subway||01 - Subway|
|06 - Break Car||06 - Break Car|
|02 - West Side||02 - West Side|
|04 - Bay Area||03 - Industrial Area|
|07 - Break Glass||04 - Bay Area|
|05 - Up Town||07 - Break Glass|
|03 - Industrial Area||05 - Up Town|
|09 - (unused slot)||08 - (unused slot)|
|09 - (unused slot)||09 - (unused slot)|
|09 - (unused slot)|
Text printing exists for various unused screens, with no associated programming found for any of them. The correct palettes for each of them are unknown; the title screen one is used for these screenshots.
Unknown if this refers to the opening gameplay demos, or a demo/sample build of the game itself.
Text for selections on a title screen including a mysterious BATTLE option. Unlike the other text in this section, this text had no pointer table entry, suggesting its a very old prototype leftover.
Another appearance of the unknown BATTLE MODE.
A CODDY (Cody) vs. ANDORE one-on-one battle? Possibly meant for the Battle Mode. Below the names are supposed to be life bar tiles and three more unknown tiles to the right of those, but the correct graphics are unknown (or if they even exist/are the same as the ones used in the final version.)
An early options menu. When compared to the real menu (L + Start on title screen), the three settings in Japanese text are probably the same as DifficultyA, DifficultyB, and Player lives. Nando translates to "degree of difficulty".
Unused Tile Properties (Collision Data)
Tile types 15, 16, 19, 1A, 1B for a left facing platform go unused (as no left facing platforms exist in the game), exactly like the arcade original. Although unused, they are fully programmed in and work correctly.
The SNES port starts Round 3 with the player character at ground level at the spot shown in the picture, instead of on the purple platform. With the help of a moon jump cheat, it's possible to get up there, and walking around reveals that the path is fully functional; the collision data map is complete.
Two Player Mode Remnants
Throughout the game is programming leftovers showing that the game was originally designed with a 2-player mode. Memory range $7E0D80-7ED0FF is reserved for the second player's stats. If bit $02 is set in memory address $7E00CD when starting the game (which is never the case, as the game uses a hardcoded $01 value), the game loads some basic setup for the second player, including AI(?) and damage related pointers and max. HP.
Haggar Ending Programming
In the programming for the ending is some unused code to load Haggar into the player 2 slot, and using the second controller, which is never called. It's located immediately after Cody's setup for walking away during the credits roll. In the arcade version, Haggar is shown checking on Jessica after Belger's defeat. This may have been intended for that cutscene.
Text Printing Error Handler
When displaying text in the intro cutscenes and elsewhere, hex values $F2-FF in the script are reserved for control codes (line break, new page of text, etc.) Of these, only $FA-FF contain programming. If any of the unused $F2-F9 values were to appear in the script, the string ERROR!!... is printed.
- If the initials for the top 3 scores are CAP, COM, YLM (in that order), you'll start with 9 credits, as opposed to the standard 3.
- If the initials for the top 3 scores are CAP, COM, GUY (in that order), you'll start with 5 credits, as opposed to the standard 3.
To replace the 3 existing high scores you'll need to score a minimum of 50,001 points three times. This can be accomplished by the time you reach the middle of the storeroom in the first stage.
Bay Area Dog Bonuses
In the Bay Area stage, each of the barking dogs in the background gives a bonus. Stand underneath them, where your X coord overlaps the dog, and your Y coord is a step or so down from the top of the screen, as shown in the picture above. Note that the Y coord is pixel precise and will require some practice to position your character correctly. You've found the correct spot when the dog begins barking faster (two rapidly alternating animation frames.)
|1st||Add 1000 points every 4 seconds|
|2nd||Add 1 credit every 60 seconds|
|3rd||Add 1 life every 60 seconds (disabled at 9 lives)|
|4th||Restore 1 unit health every second|
Easy DifficultyA Bonus
Allowing the Slum/Subway demo gameplay to run before starting a game initializes a random number generator. There's a 1-in-16 chance the game will set the easiest setting for DifficultyA. Whatever result you get, it will stick around for 16 new games started before allowing another chance at the random number generator.
The hidden Option Mode can accomplish the same thing without the uncertainty, however. If successful, this bonus will even override what you set there; presumably the developers thought that someone taking the time to view the demo would be a new player who wouldn't know about the hidden options screen, and created this bonus for them.
Japan VS. International
The US and PAL versions (but not the Japanese version) contain programming which treats SNES address $00F7FF (ROM address $0077FF) as a region DIP switch, where OFF $00 is Japan and ON $01 is International. Simply using Pro Action Replay code 00F7FF00 will toggle many of the regional differences. There are some glitches (like the text in the intro cutscenes), and it doesn't cover all the changes that were made (e.g., censored graphics).
Investigate all appearances of 00F7FF being checked in the programming
Intro story font, title screen text, the defeated scream sound effect used for Billy/Sid or Poison/Roxy, and more.
Comparison pictures for Roxy/Poison and Sid/Billy, Belger's chair, Beer and Whisky to Root Beer and Vitamine, ...
There A LOT of changes between the JP and International versions. This weblink is very useful inuncovering the version differences: http://rq87.flyingomelette.com/FF/F/1/SNESr.html
- In demo mode, the Japanese version flashes the text PUSH START instead of PRESS START.
- Blood spray when a character is hit by a knife or katana was censored for the international editions.
- The Japanese version plays the opening story music immediately. The English releases waits until after the first 4 sentences have passed.
- Whilst Damnd kept his proper name in the Japanese version, it was changed to "Thrasher" in international editions.
- In the Japanese version, the "OH! My god" line was kept for the first bonus game. In the international versions, it was changed to "OH! MY CAR ".
- Sodom managed to keep his name in the Japanese version, but in the international versions it was changed to "Katana".
- The ending music also starts immediately in the Japanese version, instead of waiting until Cody walks away.
- Some of the enemy characters, such as Dug, Simons and Slash, had darker skin tones in the Japanese version. The 1993 book Game Over by David Sheff alludes to the reasoning behind this change, which (erroneously) claims that the villains "were exclusively black and Hispanic".
- Poison and Roxy are in the Japanese version, but were replaced with Billy and Sid in the other versions. The two characters had been the subject of inconsistent gender identities since the game's original arcade release, having been originally conceived as natural females only to be established as transgendered women in supplemental materials in order to get around the unfortunate imagery of having the male heroes beat up scantily-clad women by claiming they were not actual women. Needless to say, the transgender excuse didn't exactly work well during the SNES version's localization process.
- The Japanese version has Belger's chair looking like it does in the arcade version. However, in the international versions the chair was changed.
- The final screen had some Engrish corrected:
- The Stage 3 bar was changed to a club:
- This statue found throughout the last stage was covered up:
PAL Exclusive Differences
The PAL release features the updated Capcom logo complete with jingle on bootup, that many associate with SNES Street Fighter 2.
This logo is also present in the ending:
A layering mistake results in a mostly empty club in the Japanese and USA versions (but the missing crowd can still be seen by turning off layer 1 in an emulator). This was corrected for the PAL release, and in turn Final Fight Guy.
This couple found later in the same stage was also affected:
The Industrial Area music is restored and can be accessed in the Music section of the options menu as track $0A (which was silent in the non-PAL releases.)
|The Final Fight series|
|SNES||Final Fight • Final Fight Guy • Final Fight 2 • Final Fight 3|
|Game Boy Advance||Final Fight One|
|PlayStation 2||Final Fight: Streetwise|
|Xbox||Final Fight: Streetwise|