Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Final Fight (SNES)

From The Cutting Room Floor
Jump to: navigation, 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.
ItemsIcon.png This game has unused items.
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.


NotesIcon.png This game has a notes page
BugsIcon.png 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.

Debug Mode

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

Region Pro Action Replay Game Genie
JPN 01805E01 DF69-D760
USA 01806401 DF61-DFD0
PAL 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 CPS1-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 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 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 (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
JPN 01978800 DDB6-A4D9
USA 0199FF00 DDBE-07A1
PAL 019B5700 DDB9-AFA1

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.

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

Region Pro Action Replay Game Genie
JPN 01A3DB07 + 01A3DC8D D5C2-A4A0 + 62C2-A7D0
USA 01A67E49 + 01A67F8D 0BC5-6769 + 62C5-67A9
PAL 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 here. Enable it with these codes:

Region Pro Action Replay Game Genie
JPN 01D2ACEA 3C2C-67D0
USA 02894CEA 3C60-07DC
PAL 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 Game Genie
JPN 02A52924 40C4-040B
USA 02B05724 4089-DFA6
PAL 02B06D24 4081-D706

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


(Source: BMF54123, JLukas)

Stage and Area Select

Final Fight SNES Stage Area select in options.png

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:

Final Fight SNES Option Mode imported from Final Fight One GBA.png


(Source: JLukas)

Demo Recorder

Final Fight SNES demo recorder Stage 1.png

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.


(Source: gedowski, JLukas)

Deleted Round - Industrial Area

This cactus is UNDER CONSTRUCTION
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.
Hmmm...
To do:
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:

Final Fight 4-1.png

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.

Final Fight 4-2.png

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.


(Source: Rick, JLukas)

Unused Backgrounds

Slum

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

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.

West Side

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

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

Characters

GUY

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.

Enemies

SNES Final Fight F Andore.png

F. ANDORE

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:

078F2A24
078F3324

ROLENTO

The Industrial Stage boss. Text string only. No graphics exist, except for an icon (only in the Japanese version).

Objects

BILLBOARD

DUSTBIN

TEL.BOOTH

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

GRANADE

Rolento's weapon. Again, just the (incorrectly spelled) text string. No AI or graphics exist.

WHEELCHAIR

Belger's wheelchair. This text string is never displayed when the chair takes damage or breaks.

DOOR

This text is not shown when destroying doors in the West Side stage.

GLASS

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

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

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 Text

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 opening gameplay demos, or a demo/sample build of the game itself.

Final Fight SNES Start Options Battle.png

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.

SNES Final Fight extra debug3.png

Another appearance of the unknown BATTLE MODE.

SNES Final Fight extra debug2.png

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

Inaccessible Platform

Final Fight SNES platform.png

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.

Extra Credits

Final Fight SNES CAPCOMYLM.pngFinal 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.


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

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.

Regional Differences

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

Hmmm...
To do:
Investigate all appearances of 00F7FF being checked in the programming
Hmmm...
To do:
Intro story font, title screen text, the defeated scream sound effect used for Billy/Sid or Poison/Roxy, and more.
Hmmm...
To do:
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 in

uncovering 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:
Japan International
Final Fight SNES JPN Thank You For Your Playing.png Final Fight SNES Thanks For Playing.png
  • The Stage 3 bar was changed to a club:
Japan International
Final Fight SNES JPN Stage 3 bar entrance.png Final Fight SNES USA Stage 3 club entrance.png
Japan International
Final Fight SNES JPN BAR sign.png Final Fight SNES USA CLUB sign.png
  • This statue found throughout the last stage was covered up:
Japan International
Final Fight SNES JPN Stage 5 statue.png Final Fight SNES USA Stage 5 statue.png
Japan International
Final Fight SNES Japan statue.png Final Fight SNES World statue.png

PAL Exclusive Differences

The PAL release features the updated Capcom logo complete with jingle on bootup, that many associate with SNES Street Fighter 2.

JP/USA PAL
Final Fight SNES USA bootup logo.png Final Fight SNES PAL bootup logo.png

This logo is also present in the ending:

JP/USA PAL
Final Fight SNES Thanks For Playing.png Final Fight SNES PAL Thanks For Playing.png

Layering Fixes

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.

Final Fight SNES USA Stage 3 club background.png

Final Fight SNES PAL Stage 3 club background.png

This couple found later in the same stage was also affected:

JP/USA PAL
Final Fight SNES USA Stage 3 alley background.png Final Fight SNES PAL Stage 3 alley background.png

Restored Music

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