We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

Notes:Super Punch-Out!! (SNES)

From The Cutting Room Floor
Revision as of 09:56, 18 May 2018 by JLukas (talk | contribs) (Updates)
Jump to navigation Jump to search

This page contains notes for the game Super Punch-Out!! (SNES).


Addresses are for the USA version unless noted.


Offsets (US)

ROM start / end address, SNES start / end address, type, is data compressed y/n, description

last updated 20180518

003291   003295   00B291   00B295   CODE    N   Check if Special Circuit completed
003296   00329B   00B296   00B29B   CODE    N
00329C   0032A2   00B29C   00B2A2   CODE    N   Ending main
0032A3   0034A9   00B2A3   00B4A9   CODE    N   Ending part 1
0034AA   003AA3   00B4AA   00BAA3   CODE    N   Ending part 2

0075D0   007F8F   00F5D0   00FF8F   ---     -   UNUSED SPACE

007FC0   007FFF   00FFC0   00FFFF   DATA    N   Cartridge header

04E936   04E94D   09E936   09E94D   DATA    N   Suspected UNUSED SPACE
04E94E   04FFFF   09E94E   09FFFF   PROTO   N   PROTOTYPE fragment (UNUSED SPACE up to ROM offset 04FF7F)

09446D   09595F   12C46D   12D95F   PROTO   N   PROTOTYPE fragment (exact match of ROM offset 09C46D-09D95F)
095960   095ABF   12D960   12DABF   PROTO   N   PROTOTYPE fragment (not included in ROM offset 099CDB-09D95F fragment, matches up to ROM offset 0066B7-006816)

099CDB   09D95F   139CDB   13D95F   PROTO   N   PROTOTYPE fragment (matches up to approx. ROM offset 002054-0066B6)

Offsets (JP)

ROM start / end address, SNES start / end address, type, is data compressed y/n, description

last updated 20180518

003296   00329A   00B296   00B29A   CODE    N   Check if Special Circuit completed
00329B   0032A0   00B29B   00B2A0   CODE    N
0032A1   0032A7   00B2A1   00B2A7   CODE    N   Ending main

006E13   007019   00EE13   00F019   CODE    N   Ending part 1
00701A   007613   00F01A   00F613   CODE    N   Ending part 2
007614   007F8F   00F614   00FF8F   ---     -   UNUSED SPACE

007FC0   007FFF   00FFC0   00FFFF   DATA    N   Cartridge header
  • The ending subroutines were relocated to the end of the bank compared to the US version.

Prototype Fragments

There are many tiny fragments (especially at the ends of ROM banks), but this list uses only the largest found chunks necessary to recreate the prototype ROM bank.

xx8000   xx9CDA   Nothing found yet for this range
xx9CDB   xxD95F   Fragment found at ROM offset 099CDB-09D95F, matches up to approx. ROM offset 002054-0066B6
xxD960   xxDABF   Fragment found at ROM offset 095960-095ABF, matches up to ROM offset 0066B7-006816, no differences except address shifts
xxDAC0   xxE94D   Nothing found yet for this range
xxE94E   xxFFFF   Fragment found at ROM offset 04E94E-04FFFF, matches up to ROM offset 00????-007FFF. Mostly UNUSED SPACE, some jump address shifts near very end and cartridge header differences

Differences

Ending

Prototype
$13/AF11 AD 02 06    LDA $0602  [$00:0602] 
$13/AF14 30 06       BMI $06    [$AF1C]      //branch to $AF1C if Special Circuit completed
$13/AF16 A9 8E       LDA #$8E
$13/AF18 8D 00 0C    STA $0C00  [$00:0C00]
$13/AF1B 60          RTS
 Ending
$13/AF1C 80 FE       BRA $FE    [$AF1C]      //infinite loop!

Final (US)
$00/B291 AD 02 06    LDA $0602  [$00:0602]
$00/B294 30 06       BMI $06    [$B29C]      //branch to $B29C if Special Circuit completed
$00/B296 A9 8E       LDA #$8E
$00/B298 8D 00 0C    STA $0C00  [$00:0C00]
$00/B29B 60          RTS                     
 Ending
$00/B29C 20 A3 B2    JSR $B2A3  [$00:B2A3]   //ending part 1
$00/B29F 20 AA B4    JSR $B4AA  [$00:B4AA]   //ending part 2

World Cicruit Checksum

Prototype
...
$13/B069 A0 0B 42    LDY #$420B
$13/B06C A2 00 80    LDX #$8000              //start address $8000
...

Final (US)
...
$00/BBEF A0 09 42    LDY #$4209
$00/BBF2 A2 04 80    LDX #$8004              //start address $8004, skips the first 4 bytes
...

Name Entry Screen

$01/DF7D AE 90 00    LDX $0090  [$01:0090]   //player 1 controller
$01/DF80 E0 C0 00    CPX #$00C0              //buttons X + A
$01/DF83 F0 0A       BEQ $0A    [$DF8F]      //branch to $DF8F if match
$01/DF85 E0 C0 10    CPX #$10C0              //buttons Start + X + A
$01/DF88 F0 05       BEQ $05    [$DF8F]      //branch to $DF8F if match
$01/DF8A E0 40 10    CPX #$1040              //buttons Start + X
$01/DF8D D0 09       BNE $09    [$DF98]      //branch to $DF98 if no match


Misc.

For a quick victory when the battle starts, set these values in a debugger:

7E098F to 02
7E099F to 02
7E099D to 03