If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
This article has a talk page!

Final Fight (SNES)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Final Fight

Developer: Capcom
Publisher: Capcom
Platform: SNES
Released in JP: December 21, 1990
Released in US: September 1991
Released in EU: December 10, 1992
Released in AU: December 10, 1992


AreasIcon.png This game has unused areas.
EnemyIcon.png This game has unused enemies.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
LevelSelectIcon.png This game has a hidden level select.
RegionIcon.png This game has regional differences.


PrereleaseIcon.png This game has a prerelease article
NotesIcon.png This game has a notes page
BugsIcon.png This game has a bugs page

The SNES Final Fight is a cut-down port of the arcade original, along with being Capcom's first SNES game. 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, most notably the playable character Guy, the entire Industrial Area stage, and the two-player cooperative mode. Still, it was impressive in its own right as an early SNES game.

Sub-Pages

Read about prerelease information and/or media for this game.
Prerelease Info
Miscellaneous tidbits that are interesting enough to point out here.
Notes
Read about notable bugs and errors in this game.
Bugs

Stage & Area Select

Final Fight SNES Stage Area select in options.png
The options menu once had ROUND and AREA selections. 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 (PAR) 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.

Final Fight SNES Option Mode imported from Final Fight One GBA.png
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.


(Source: JLukas)

Extra Credits

Final Fight SNES CAPCOMYLM.png Final Fight SNES 9 Credits.png

  • 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.

YLM is likely short for Yoshilim, the nickname of programmer Koji Yoshida.


(Source: JLukas)

Bay Area Dog Bonuses

Final Fight SNES Bay Area dog bonus 1st.png

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.)

Dog Bonus
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


(Source: JLukas (adapted research from Final Fight Guy)

Debug Mode

To enable the game's debug mode, add one of the following codes:

Region Pro Action Replay (PAR) Game Genie
JPN 01805E01 DF69-D760
USA 01806401 DF61-DFD0
European 01807D01 DF65-D700

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.

TEST MODE

Final Fight debug1.png
Reset again and hold Select to activate a CPS-like TEST MODE menu. Press Start to activate the current selection.

COLOR

Final Fight debug2.png
Shows a few color bars. Likely used to calibrate monitors/TV screens during development. Press Select to exit.

I/O

Final FIght debug3.png
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).

DOT CROSS

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:

Final Fight SNES DOT CROSS fixed tilemap.png
Press Select to exit.

CHAR

Final Fight SNES CHAR TEST.png
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.

  • OBJ

Final Fight SNES OBJ TEST.png
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

Final Fight SNES BG1 TEST.png Final Fight debug4.png
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)

Final Fight SNES BG3 test.png
This contains the HUD graphics.

  • BG4

Does not function. It contains no programming except to remain on the CHAR TEST main menu.

OBJ

Does not function. It was meant for a sprite viewer with an 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.

SCROLL

Does not function. It was meant for a map viewer (aka Scroll Test) that also wasn't ported from the arcade game. Points to the same placeholder subroutine used by OBJ.

In-Game Debugging Features

Palette editor RAM ROM viewer Fire bullets!
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 (e.g., 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 (PAR) Game Genie
Japan 01978800 DDB6-A4D9
USA 0199FF00 DDBE-07A1
Europe 019B5700 DDB9-AFA1

On Controller 2:

  • Press X to enable invincibility. Also allows infinite time in bonus rounds. Press the button again to disable it. Toggles RAM address 7E00CB. Note that the invincibility doesn't protect against all attacks (e.g., 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.

FF One Cody color change 4 FF One Haggar color change 4

Region Pro Action Replay (PAR) Game Genie
Japan 01A3DB07 + 01A3DC8D D5C2-A4A0 + 62C2-A7D0
USA 01A67E49 + 01A67F8D 0BC5-6769 + 62C5-67A9
Europe 01A7EA6A 1CC3-A469

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.

Hitbox Info

Final Fight SNES hitbox debug display.png
This debug feature, disabled by default, displays collision boxes around the player character and any weapons that are on-screen, like seen in the arcade version. Enable it with these codes:

Region Pro Action Replay (PAR) Game Genie
Japan 01D2ACEA 3C2C-67D0
USA 02894CEA 3C60-07DC
Europe 028964EA 3C61-0FDC

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

Final Fight SNES debug animation test.png
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 (PAR) Game Genie
Japan 02A52924 40C4-040B
USA 02B05724 4089-DFA6
Europe 02B06D24 4081-D706

Press B to cycle through frames, and Y to resume gameplay.

(Source: Rusty, JLukas)

Demo Recorder

Final Fight SNES demo recorder Stage 1.png
Use Pro Action Replay (PAR) 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.


(Source: gedowski, JLukas)

Unused Stage

Hmmm...
To do:
This section needs an overhaul: requires individual components of level loading investigated - e.g. uses Stage 5 pointer for the music.

Using the Pro Action Replay (PAR) stage modifier code 7EFFFE03, you can access the Industrial Area, the level from the arcade version that was removed from this port. The music is the one from the Slum stage, but this possibly was the intention 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 Slum area of the game.

  • 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.

Final Fight 4-2.png
If you use the 7EFFFF01 area modifier in conjunction with the above code, you'll access the elevator section where Rolento was fought 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, which is empty in the final game, was reserved for the deleted Industrial Zone music. It was restored in Final Fight Guy as index 0B.


(Source: Rick, JLukas)

Unused Enemy

SNES Final Fight F Andore.png
An unused but fully functional Andore variant with a light orange palette. This F.ANDORE enemy appears in the West Side level's cage fight on the arcade version, where up to 3 Andores would appear in 2-player mode to provide sufficient challenge. With no 2-player mode in this port, this variant 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 (PAR) codes for the battle pictured above:

078F2A24
078F3324

Unused Katana HP

Unused Used
Final Fight SNES Katana 400 HP.png Final Fight SNES Katana 300 HP.png

Katana's HP is initially set to 400 (this value is loaded from a table), but immediately after its programming loads a hardcoded 300 value instead (the same amount of HP as Thrasher and Edi.E). While it's possible 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 (PAR) code 06BB6090 (US version) to fight Katana with the original 400 HP.

Unseen Backgrounds

Scroll End Full
Final Fight SNES USA map index 06 scroll end.png Final Fight SNES USA map index 06 full.png

In the second section of the Slum level, the screen stops scrolling near the end of the storeroom (which is a mirror of the entrance), allowing enemies to rush in from the right side of the screen, but much of the wall (and door) goes unseen. In the arcade version, this part is seen on an intermission to the third section of the level.

Scroll End Full
Final Fight SNES USA map index 3E scroll end.png Final Fight SNES USA map index 3E full.png

Like the Slum storeroom, the scrolling at the end of the first section of the West Side level stops before the entire wall is visible and everything to the right of the green counter goes unseen. In the arcade version, the players had to break down the door and proceed to the next (empty) room where Andore would kidnap them, this sequence is missing in this port, but 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 Text

GUY

A text string for Guy's name, this is the only thing found of him in this version of the game along with value $00 in memory address $7E0D12, which is reserved for Guy. At least some, if not all, of the pointers tables that rely on this (e.g., loading player graphics, palettes, AI) point to Cody's data.

F. ANDORE

A string for the aforementioned unused Andore enemy variant.

ROLENTO

The Industrial Area boss.

BILLBOARD
DUSTBIN
TEL.BOOTH

These breakable objects from the arcade version exist as text strings only.

GRANADE

An incorrectly-spelled string for Rolento's grenades.

WHEELCHAIR

This text for Belger's wheelchair appears in the arcade version when it takes damage or breaks, but this string just doesn't appear in this port.

DOOR

This text appears in the arcade version when destroying the doors in the West Side stage, but not here.

GLASS

A 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. This text didn't appear in the arcade version either.

There also 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.

Final Fight SNES Demo.png
Unknown if this refers to the gameplay demos or a demo/sample build of the game itself.

Final Fight SNES Start Options Battle.png
Text for selections on the title screen, including a mysterious BATTLE option. Unlike the other text in this section, it has no pointer table entry, suggesting it's a very old leftover.

SNES Final Fight extra debug3.png
Another mention of the unknown BATTLE MODE.

SNES Final Fight extra debug2.png
Apparently, 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).

SNES Final Fight extra debug1.png
An early options menu. When compared to the final menu, the three settings in Japanese text are probably the same as DifficultyA, DifficultyB, and Player lives. Nando translates to "degree of difficulty".

Unused Round Progression Table

Two copies of the round progression table exist, one of which is the arcade version's layout (with the Industrial Area included in the correct spot) that goes unused.

Used 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)

Unused Tile Properties (Collision Data)

Tile types 15, 16, 19, 1A, 1B for a left-facing platform go unused, exactly like the arcade original. Although unused, they are fully programmed in and work correctly.

Inaccessible Platform

Final Fight SNES platform.png
Unlike the arcade version, the SNES port starts the West Side stage with the player at ground level on 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 use 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.

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 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.

Regional Differences

Japan/International Differences

Careful, you'll lose an eye.
This page or section needs more images.
There's a whole lotta words here, but not enough pictures. Please fix this.
Specifically: Needs comparison images.
Hmmm...
To do:

The US and European 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 (PAR) 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).

  • In the attract mode, the Japanese version flashes the text "PUSH START", in the international versions it's "PRESS START".
  • The blood spray when a character is hit by a knife or katana was removed in the international versions.
  • The Beer and Whisky food items had their names respectively changed to Root Beer and Vitamine.
  • The Japanese version plays the opening story music immediately. The international versions waits until after the first 4 sentences have passed.
  • Damnd had his name changed to Thrasher in international releases.
  • The line after the first bonus round, "OH! MY GOD", was changed in the international versions to "OH! MY CAR".
  • Sodom's name was changed to Katana on the international releases.
  • The ending music starts immediately in the Japanese version. On the international versions, it waits until Cody walks away.
  • Some of the enemy characters, such as Dug, Simons, and Slash, have darker skin tones in the Japanese version and were lightened up in the international versions.
  • The female enemies from the arcade version, Roxy and Poison, were respectively changed to male characters called Sid and Billy on the international versions. The female defeat sound goes unused as a result.
  • In the international versions, Belger's wheelchair was changed to a couch, possibly to avoid making it seem like a disabled man is being beaten.
Japan International
Final Fight SNES JPN BAR sign.png Final Fight SNES USA CLUB sign.png
  • The "bar" sign in the West Side stage was changed to a "club" sign.
Japan International
Final Fight SNES Japan statue.png Final Fight SNES World statue.png
  • This female statue found throughout the Up Town stage had its breasts covered up.
Japan International
Final Fight SNES JPN Thank You For Your Playing.png Final Fight SNES Thanks For Playing.png
  • The final screen had some Engrish corrected.

Europe Differences

  • The Industrial Area music is restored and can be accessed in the Music section of the options menu as track $0A, which is silent in the other releases.
Japan/US Europe
Final Fight SNES USA bootup logo.png Final Fight SNES PAL bootup logo.png
  • The European release features the updated Capcom logo complete with a jingle on bootup mostly associated with Street Fighter II.
Japan/US Europe
Final Fight SNES Thanks For Playing.png Final Fight SNES PAL Thanks For Playing.png
  • The same new Capcom logo is also present in the ending.
Japan/US Europe
Final Fight SNES USA Stage 3 club background.png
Final Fight SNES USA Stage 3 alley background.png
Final Fight SNES PAL Stage 3 club background.png
Final Fight SNES PAL Stage 3 alley background.png
  • In the Japanese and US versions, some layering mistakes on the West Side stage resulted in a mostly empty club, along with a couple later in the stage also being affected (but they can still be seen by turning off layer 1 in an emulator). This was corrected for the European release, and in turn Final Fight Guy.