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

Final Fight 3 (NES)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Final Fight 3

Also known as: Garou Densetsu Special
Developer: Hummer Team
Publisher: JY Company
Platform: Unlicensed NES
Released internationally: 1998


SourceIcon.png This game has uncompiled source code.
CopyrightIcon.png This game has hidden developer credits.
DevTextIcon.png This game has hidden development-related text.
LevelSelectIcon.png This game has a hidden level select.


The NES Final Fight 3 is an awkward but impressively feature-complete unlicensed port of the SNES version.

PR3-JYLogo.png

Pressing Down, Down, Left, Up, Right, Left, Up, Down on the title screen will trigger a hidden JY logo screen with the common full-screen logo. The only way out of it is to reset the game.

(Source: BootlegGames Wiki)

Dip Switches

Garou Densetsu Special-FF3-title.png

As with several other pirate games, Final Fight 3 uses a PCB with a DIP switch on it, which changes some aspects of the game's appearance. The two titles contained in this game are Final Fight 3 and Garou Densetsu Special, which has cheerier music and no cutscenes. The DIP switch can be toggled in FCEUX by resetting the game (note that other emulators may handle this differently).

Round Select

Pause the game and press Select to load a black screen. From here, you can press B or A to increase the round number and unpause to start on your chosen round.

Note that the counter starts from Round 1-1 instead of the round you're currently on. The last valid option is Round 6-2, which takes 16 button presses; anything higher crashes the game.

(Source: Bootleg Games Wiki)

Source Code

Some keybinding configuration and uncompiled source code is inside the ROM. The keybinding config is for the Hyper Editor 5 (he5) Chinese word processor. These are the segments:

�================================================================;;

SET AUTOPOSITION ON�   �; pw˦bWA]wL
SET AUTOREFLOW ON
ET����OSAVE 20�   �; pw˦bWAЦbwUSERؿAΥ[W LOCAL
SET AUTOSLEEP 20
;; SET BACKUP ON
SET BEEP OFF
;; SET KEYBOARD FAST
;SE����MLOCK OFF
SET LIGHTBAR ON
SET TIMER ON
SET TABS 17 25 41 59

SET PAIRCOLOR ; EOL GREEN BLACK
;;SET PAIRCOLOR ELSE  EOL BROWN+  BLACK
;;SEPA����LOR else  EOL BROWN+ BLACK
SET PAIRCOLOR ^^=<D>= EOL RED+ BLACK
SET PAIRCOLOR ^^_# EOL GREEN+ BLACK
set paircolor ^ LINE BROWN+ BLACK
set lo����xt white black

def autoexec=[cc][spec_color][exist my.pro][if %Exist][m my.pro][end]
    [if %Mouse][m mouse.pro][button_menu][end][he5mark]il����]
def he5mark=[? memory][delay 9999]


;; ==========================================================================

def cc=[cursor comma][����te line]
def cc1=[if !%InCommand][command toggle][end][delete line]
def chket=[message ˬdzثetάO_]t\][delay 18]
def cht1����ssage nmL][delay 18]
def mustchi=[message Must in Chinese Mode]
def undel_msg=[if !%InCommand && %InNormal]
    [if %Language=C'����ssage Ctrl-U  1G ٭@]
    [else] [message Ctrl-U � 1 : Undo one line][end][end]
def findnext=[if %Count==1]
    [if %Language=='C'][ss����! ALT-N ~jMΥN!a-n]
    [else][message !ALT-N to find next!a-n][end][end]
def spec_color=[if %IsColor][SET PAIRCOLOR %Date2 GREEN+ BCK����   [else][SET PAIRCOLOR %Date2 UNDERLINE BLACK][end]
def button_menu=[null]
def tblmsg=[message ЦۦإߡAõnOb TABLE.M2D ]

%@chket�..����ˬdzثetάO_]t\"

def home=[if %KeyShift][key s-f1]
    [else]
      [if %PrevKey!="home" || %Column==1][first nonblank][se����gin line][end]
    [end]
def end=[if %KeyShift][key s-f2]
    [else]
      [if %InNormal && %PrevKey=="end"]
          [if %@direction == 1up����se][down][end]
      [end][end line]
    [end]
def tab=[if %InRange][next field][else][tab][end]
def s-tab=[if %InRange][prev field][else][bkt����end]
def pgup=[if %KeyShift][key s-f3]
    [else]
       [if !%InRange][page up][else][field pgup][end]
    [end]
def pgdn=[if %KeyShift][k s����
    [else]
       [if !%InRange][page down][else][field pgdn][end]
    [end]
def enter=[strleft %File 6]
    [if %InCommand]
      [%a="%dL����"][if %a == "."][command history][else][execute][end]
    [elseif %IsList] [dir.load] [filemsg]
    [elseif %File==".SEARCH"][goto found line]  ����lseif %String==".Ϧ^-"][tab.undel]
    [elseif %String==".-"][idx_enter]
    [else] [strright %File 4]
       [if %String=="_DBF"]
      �����@Ttool][get_dbf_record]
       [else] [split]
       [end]
    [end]
def ins=[if %KeyShift][key s-f6][else][insert toggle][end]
def d
�@T�� %����hift][key s-f7][else][delete char][end]

def filemsg=[strleft %File 6][%l6�%String][strleft %File 4][%l4�%String]
    [if %l4==".DIR"][dirmsg
 ����elseif %l6==".-"][tab.idxmsg]
    [else]
     [if %Language=='C'][hint F2:s!f2  F4:!f4  a-F10:e!a-f10  a-H:Ÿ!a-h  a-T:/s-t����G:/e!c-g  a-\:!a-backslash  Х!c-space]
     [else][hint F2:Save!f2  F4:Quit!f4  !a-F10:Prev File!a-f10  MARK!c-space][end][def c-spe=����kmsg]]
    [end]
def f1=[if %Language=='C'][menu2d he5.m2d][else][menu2d he5e.m2d][end]
def f2=[strleft %File 6][if %String==".sW-" || %Strg=����ק-"][tab.save]
    [elseif %PrevKey!="f2"]
      [set position 9][cc1]'save '
      [if %Language=='C'][message пJɦWΪ !ENTER !����r!AA F2 ֳts!f2]
      [else][message save filename �- or save �-,  !F2 again : quickly save!f2][end]
    [else]
      [position [e����te][command togle][command togle]
    [end]
def f3=[strleft %File 6][if %String==".sW-" || %String==".ק-"]
       [tab.save][q][e .-ta����le][tab.idxmsg]
    [elseif %PrevKey!="f3"]
       [cc1]'file '
       [if %Language=='C'][message пJɦWΪ ENTER sɡAA F3 t����
       [else][message file filename �- or file �-   F3 again : quickly save][end]
    [else][file][filemsg][end]
def f4=[q][filemsg]
def =[����n line][erase end line][undel_msg]
def f6=[erase end line][undel_msg]
def f7=[if %Language=='C'][hint 1/EnterGثeɮ#   3  B    U����!��������


================================================================;;

SET AUTOPOSITION ON�   �; pw˦bWA]wL
SET AUTOREFLOW ON
ET����OSAVE 20�   �; pw˦bWAЦbwUSERؿAΥ[W LOCAL
SET AUTOSLEEP 20
;; SET BACKUP ON
SET BEEP OFF
;; SET 



��
����������������������if %KeyShift][key s-f6][else][insert toggle][end]
def d
�@T�� %����hift][key s-f7][else][delete char][end]

def filemsg=[strleft %File 6][%l6�%String][strleft %File 4][%l4�%String]
    [if %l4==".DIR"][dirmsg
 ����elseif %l6==".-"][tab.idxmsg]
    [else]
     [if %Language=='C'][hint F2:s!f2  F4:!f4  a-F10:e!a-f10  a-H:Ÿ!a-h  a-T:/s-t����G:/e!c-g  a-\:!a-backslash  Х!c-space]
     [else][hint F2:Save!f2  F4:Quit!f4  !a-F10:Prev File!a-f10  MARK!c-space][end][def c-spe=����kmsg]]
    [end]
def f1=[if %Language=='C'][menu2d he5.m2d][else][menu2d he5e.m2d][end]
def f2=[strleft %File 6][if %String==".sW-" || %Strg=����ק-"][tab.save]
    [elseif %PrevKey!="f2"]
      [set position 9][cc1]'save '
      [if %Language=='C'][message пJɦWΪ !ENTER !����r!AA F2 ֳts!f2]
      [else][message save filename �- or save �-,  !F2 again : quickly save!f2][end]
    [else]
      [position [e����te][command togle][command togle]
    [end]
def f3=[strleft %File 6][if %String==".sW-" || %String==".ק-"]
       [tab.save][q][e .-ta����le][tab.idxmsg]
    [elseif %PrevKey!="f3"]
       [cc1]'file '
       [if %Language=='C'][message пJɦWΪ ENTER sɡAA F3 t����
       [else][message file filename �- or file �-   F3 again : quickly save][end]
    [else][file][filemsg][end]
def f4=[q][filemsg]
def =[����n line][erase end line][undel_msg]
def f6=[erase end line][undel_msg]
def f7=[if %Language=='C'][hint 1/Enter

      [else][message save filename �- or save �-,  !F2 again : quickly save!f2][end]
    [else]
      [position [e����te][command togle][command togle]
    [end]
def f3=[strleft %File 6][if %String==".sW-" || %String==".ק-"]
       [tab.save][q][e .-ta����le][tab.idxmsg]
    [elseif %PrevKey!="f3"]
       [cc1]'file '
       [if %Language=='C'][message пJɦWΪ ENTER sɡAA F3 t����
       [else][message file filename �- or file �-   F3 again : quickly save][end]
    [else][file][filemsg][end]
def f4=[q][filemsg]
def =[����n line][erase end line][undel_msg]
def f6=[erase end line][undel_msg]
def f7=[if %Language=='C'][hint 1/EnterG


                lda     dhi
                beq     ?1
;
                lda     dhv
      ����    ora     rg2000
                and     #$7f
                sta     $2000
;
                ldy     #$00
                ldx     #$00

?����               lda     $2002
                lda     dhi
                sta     $2006
                lda     dlo
                sta     $06����
                lda     _DBuffer,x
                sta     $2007
                iny
                inx
                cpy     dwide
    ����      bcc     ?2
                lda     dlo
                clc
                adc     #$20