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

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Final Fight

Developer: Capcom
Publisher: Capcom
Platform: Arcade (CP System)
Released internationally: December 1989

GraphicsIcon.png This game has unused graphics.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
RegionIcon.png This game has regional differences.

The mayor's daughter has been kidnapped! Go beat everyone up.

Debug Functions

Scroll Test

Learn to count (poorly) with Final Fight.
To access a simple layer viewer, set the game to Service Mode, hold 1P Attack then reset the game. "SCROLL 2" is the foreground layer, "SCROLL 3" is the background, and "SCROLL 23" combines the two.

These scrolls are making me testy.
Initially, the screen will be blank. Press 1P Attack to select a stage and 1P Jump to load it.

Controls: ALL

  • 1P Up/Down/Left/Right: Moves the viewer camera.
  • 1P Attack: Increments the scroll speed, which is shown on the bottom-left of the screen. Ranges from 00 to 0F.

10000% more arrows.

  • 1P Start: Toggles a tile type screen overlay.


  • 2P Up/Down/Left/Right: Moves the pointer. If the cursor is over a solid tile, it will turn red; Otherwise it's white.

Atari had nothing to do with this.

  • 2P Start: Toggles a tile selector mode. This locks the screen and makes the cursor move in increments of 10.


  • 2P Start: Swaps the priority of the foreground and background layers.
(Source: Original TCRF research)

OBJ Pattern Test

Hungry Are The Damnd
To access an object pattern test, set the game to Service Mode, hold 1P Jump then reset the game.


  • 1P Left: Toggles a grid layer on the current sprite. Values are off, over, and under.
  • 1P Right: Changes the background color: Cycles between black, blue, green, cyan, red, pink, yellow, and white.
  • 1P Up/Down: Changes the "PATTERN", or animation, value.
  • 1P Attack: Decrements the "CG CTR", or animation frame delay, by 1 per frame.
  • 1P Jump: Either resets the current animation or, if the animation is already on the first frame, sets the object to the first frame of its first animation.
  • 1P Start: Increments the "STAGE" value. This is necessary for loading the correct boss object palettes.


  • 2P Up/Down: Selects between "NORMAL" (Default), "SIZE" (Seems to be used for tile collision) , "BODY" (Hurtbox), and "ATTACK" (Hitbox).
  • 2P Start + 1P Up/Down: Loads the next / previous object.


  • 2P Left/Right: Flips the animation left/right.
  • 2P Attack: Places a copy of the current animation frame behind the animation viewer.
  • 2P Jump: Clears the frame copy, if one exists.


  • 2P Left/Right/Up/Down: Moves the current object while in object movement mode.
  • 2P Attack: Toggles object movement mode.
  • 2P Jump: Exits object movement mode.


  • 2P Left/Right/Up/Down: Moves the object cursor while in cursor mode.
  • 2P Attack: Activates cursor mode.
  • 2P Jump: Disables cursor mode (when active), or enables body / attack box viewers.
  • 2P Attack + 2P Jump: Disables attack box viewers, if active.
(Source: Original TCRF research)

Stage Debug

Like boxes? This is the screenshot for you.
Put the following code in MAME's ffight.xml cheat file (Or any of the cloned sets' cheat files) to enable an in-game debug mode:

  <cheat desc="Enable Stage Debug">
    <script state="run">

This is supposed to be enabled by starting the game in Game Mode, then setting the game mode to "Test", which would set RAM address FF8084 to 00, but that value is only set to 01 if the game actually enters the test mode.

By default, all this does is enable some stage and difficulty information on-screen:

Byte Information
Camera's right bound (2 bytes) - Camera's left bound (2 bytes)
Camera's upper bound (2 bytes) - Camera's lower bound (2 bytes)

Game difficulty variable. This caps at 0018. (2 bytes)
Unknown (2 bytes)
Game difficulty incremental timer. This increments by 01 every frame, then resets at 0256 and adds 01 to the game difficulty variable. (2 bytes)

Depending on the value of certain dip switches, more options are enabled:

  • DIP SWITCH A1-A3: Changes the starting level. This is in little-endian format: For instance, if Dip Switch A1 and A2 are both set, the game starts at stage 03, the Industrial Area.
  • DIP SWITCH A4-A6: Changes the starting checkpoint of the starting level. This is also in little-endian format.
  • DIP SWITCH A8: Runs the game at ~4x speed.
  • DIP SWITCH B1: Enables the "NORMAL" collision box for all objects.
  • DIP SWITCH B2: Enables the "BODY" collision box for all objects.
  • DIP SWITCH B3: Enables the "ATTACK" collision box for all objects.
  • DIP SWITCH B5: Makes both players invincible.
  • DIP SWITCH B6: Enables the tile type screen overlay.
  • DIP SWITCH B7: Attempts to give Layer 3 priority over Layer 2, but doesn't seem to work right.
  • DIP SWITCH C1-C2: Slows down the game's running speed.
  • C1 only: Runs the game at 1/2 speed.
  • C2 only: Runs the game at 1/3 speed.
  • C1 + C2: Runs the game at 1/4 speed.
(Source: Original TCRF research)

Unused Graphics

Alternate Billboard

P/R problemUnseemly

An alternate design of the destructible billboards in Stage 3. Pretty obvious why this version wasn't used. Yikes.

Unused Name Graphics

Questioning your sexual orientation with Engrish.

Unique name graphics for the playable characters, presumably intended to be used on the attract mode bios or character select screen, which both simply spell out the names with the game's generic 16x16 font. Guy's name is misspelled because, as director Akira Nishitani puts it, "we weren't really aware of English spelling and pronunciation conventions."


Guy performing a standing kick, which he can't do in the actual game. This graphic was later used as a reference for Guy's medium kick in Street Fighter Alpha.

FinalFightArcGuyPose1.png FinalFightArcGuyPose2.png
Guy apparently blocking (which no playable character can do) and doing another unknown pose.


An alternate version of the graphic used when Cody flips through the air during a jump.

This is found with the graphics used when Cody uses a weapon and was likely intended for the same purpose.

Developer Notes

This tile has no character.
A tile marking where there's no graphics tile. Whoa man.

The End...?
This is the last tile in memory and marks where the "Scroll 2" section ends.

Unused Tile Types

The best graphics.
Tile types 15, 16, 19, 1A, 1B aren't used in the game, though they do have level viewer graphics.

These tiles would be used for a left-facing raised platform. All of the raised platforms in the final game face right.

Round 1 Stairs

Nowhere to stairs

The underground area in Round 1 has stairs on each side, which are never seen in the game. They have no collision data and are not present in any other Round of the game.

(Source: Original TCRF research)

Unused Text

To do:
Possible unused HUD enemy/object name strings, sighted via Capcom Classics Collection Remixed and CWCheat. May not be easy to find due to their b.r.o.k.e.n-up formatting.

The following is loaded into memory, right after William S. Sessions' name:

(Source: Original TCRF research)

As mentioned in a pre-release flyer of the game and some official Capcom books, Street Fighter '89 was the game's original title.

Regional Differences


Japan International
FinalFightArcIntroDateJP.png FinalFightArcIntroDateINT.png

The setting of the game was changed from 1989 in the Japanese version (same year as the game's release) to the more ambiguous "Sometime in the 1990's" in the international version, likely done so to avoid dating the game too quickly (as Final Fight started its distribution to arcades in December 1989). Later console versions of the game would update the year to 1990 for the Japanese Super Famicom version and then to 1992 for Final Fight CD, before being changed back to 1989 for Final Fight One (embracing its period setting).

In the Japanese game's intro, Jessica appears on the T.V. screen for an instant before Damnd does. However, in the US and World versions, Jessica is never shown. Damnd's face is always on the monitor, but you can hear Jessica screaming in the background. Who knows why they thought changing this would make the game seem more family-friendly. This graphic of Jessica was later used on some ports of the game, with some versions (like the SNES port) having her attire changed from white underwear to a red dress to make it less sexually suggestive.

Attract Mode

Japan International
FinalFightArcGuyBioJP.png FinalFightArcGuyBioINT.png
FinalFightArcCodyBioJP.png FinalFightArcCodyBioINT.png
FinalFightArcHaggarBioJP.png FinalFightArcHaggarBioINT.png

The profiles of the three playable characters show more details about them on the Japanese version, such as the ages of each (being consistent with the 1989 setting), their height and weight using the metric system (this information is given on the character select with "ft" and lbs" instead) and their favorite foods (salmon tea rice and cold tofu for Guy, spinach and milk for Cody, and burgers and curry rice for Haggar). International versions just give the birth date and the description. Cody's Japanese bio also describes him as "the protagonist of this game", which is omitted in the English bio.


If you finish the game without continuing, you'll get treated to an Omake ending after the credits are over. In the Japanese version you get two paragraphs by Pom and Akiman, and then short sentences by several other staff members (in the Kansai-ben dialect). In the international versions, the paragraphs were replaced by a message saying "MY NAME IS POM" and the short sentences changed to a generic "My name is...". Some of the portrait icons accompanying the sentences were also changed in the international versions.

Japan International
Final fight arcade j end-1.png Finfightendu-1.png
Final fight arcade j end-2.png
Final fight arcade j end-3.png Finfightendu-2.png
Final fight arcade j end-4.png Finfightendu-3.png


1st Panel

"Hi! I'm Final Fight's planner, POM! But I was called Ninnin. But it wasn't just Ninnin, it was Ninnin of Candy Land! Oh yes, yes, the guy who made Final Fight's name is PomG (Pom Gee) and he's a member of Ninnin of Candy Land too. I'll introduce him."

2nd Panel

"Ha ha ha. I'm AKIMAN. I'm glad that you can see this ending. It's something to look at after playing so well. I g-e-t i-t. By the way, it's because I ate 50 Gyudons in 1 month. It'd be great if you tried it too. Right? Right? Right?

3rd Panel

"You did it! Darn, I still can't stop shaking!"

"It's great you made it this far! Try and do it again!"

"Yeah, that guy's the same as that. Even with this, in this world..."

"I cried buckets of tears at your battles 'cuz I was so moved."

"You did it, how dare you make it all the way here! I want to see your next fight!"

"I have my face in here for helping. Gratze! Gratze!"

4th Panel

"What do you think of the 7th CPS game? I want to be at the next one too!"

"We are the PomG that donned a disguise called Final Fight."

"It's over. There's probably nothing else. But there's a new game drawing near..."

"Best regards to Capcom and Alph from here on out! -- From the whole team."

"CAPCOM makes games where you kill things. Everyone, go out and kill, kill, KILL!"


"Ebryone [sic], nice work! Please come again!"