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

Notes:Super Punch-Out!! (SNES)

From The Cutting Room Floor
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 20180523

003291   003295   00B291   00B295   CODE    N   Check if Special Circuit completed
003296   00329B   00B296   00B29B   CODE    N   TODO
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

03E3CC   03E4FF   07E3CC   07E4FF   PROTO   N   PROTOTYPE fragment (matches up to ROM offset 00711D-00725C)

04E936   04E94D   09E936   09E94D   TODO    -   Possible PROTOTYPE fragment (unconfirmed UNUSED SPACE)
04E94E   04FFFF   09E94E   09FFFF   PROTO   N   PROTOTYPE fragment (UNUSED SPACE up to ROM offset 04FF7F)

056D5E   057FFF   0AED5E   0AFFFF   PROTO   N   PROTOTYPE fragment (UNUSED SPACE up to ROM offset 057F7F) - verify start address!

05F47B   05FFFF   0BF47B   0BFFFF   PROTO   N   PROTOTYPE fragment (UNUSED SPACE up to ROM offset 05FF7F) - verify start address!

067146   067FFF   0CF146   0CFFFF   PROTO   N   PROTOTYPE fragment (UNUSED SPACE up to ROM offset 067F7F) - verify start address!

076D90   0773DC   0EED90   0EF3DC   ---     -   UNUSED SPACE

07EE86   07EF7F   0FEE86   0FEF7F   ---     -   UNUSED SPACE

087979   087AFF   10F979   10FAFF   ---     -   UNUSED SPACE

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)

0AA1AD   0AA1BF   15A1AD   15A1BF   PROTO   N   PROTOTYPE fragment (not yet matched up, however, it's included in the large 099CBD-09D95F fragment)

0B5ED1   0B5EDF   16DED1   16DEDF   PROTO   N   PROTOTYPE fragment (exact match of ROM offset 006C26-006C34)

0BDE4E   0BDE7F   17DE4E   17DE7F   PROTO   N   PROTOTYPE fragment (matches up to ROM offset 006BA3-006BD4)

0CE8E5   0CE91F   19E8E5   19E91F   PROTO   N   PROTOTYPE fragment (unconfirmed UNUSED SPACE)

0EE568   0EE59F   1DE5E8   1DE59F   PROTO   N   PROTOTYPE fragment (exact match of ROM offset 0072C5-0072FC)

0F624F	 0F629F   1EE24F   1EE29F   PROTO   N   PROTOTYPE fragment (exact match of ROM offset 006FA4-006FF4)

136667   136668   26E667   26E668   TODO    -   Possible PROTOTYPE fragment that matches up to ROM offset 0073C4-0073C5?

13E6BD   13E6C6   27E6BD   27E6C6   PROTO   N   PROTOTYPE fragment (matches up to ROM offset 00741A-007423)

1464AC   1464DF   28E4AC   24E4DF   PROTO   N   PROTOTYPE fragment (exact match of ROM offset 007209-00723C, also included in larger 03E3CC-03E4FF fragment)

156312   15633B   2AE312   2AE33B   PROTO   N   PROTOTYPE fragment (exact match of ROM offset 007067-007090)

1AC161   1AC17F   35C161   35C17F   PROTO   N   PROTOTYPE fragment (matches up to ROM offset 004CFF-004D1D)

1B1895	 1B197F   369895   36997F   PROTO   N   PROTOTYPE fragment (matches up to ROM offset 001CA4-001D8E)

Offsets (JP)

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

last updated 20180523

003296   00329A   00B296   00B29A   CODE    N   Check if Special Circuit completed
00329B   0032A0   00B29B   00B2A0   CODE    N   TODO
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.

last updated 20180523

xx8000   xx9894   Nothing yet found for this range
xx9895   xx997F   Fragment found at ROM offset 1B1895-1B197F, matches up to ROM offset 001CA4-001D8E, contains two differences
xx9980   xx9CDA   Nothing yet found for this range
xx9CDB   xxD95F   Fragment found at ROM offset 099CDB-09D95F, matches up to approx. ROM offset 002054-0066B6, TODO
xxD960   xxDABF   Fragment found at ROM offset 095960-095ABF, matches up to ROM offset 0066B7-006816, no differences except address shifts
xxDAC0   xxDE4D   Nothing yet found for this range
xxDE4E   xxDE7F   Fragment found at ROM offset 0BDE4E-0BDE7F, matches up to ROM offset 006BA3-006BD4, no differences except address shifts
xxDE80   xxDED0   Nothing yet found for this range
xxDED1   xxDEDF   Fragment found at ROM offset 0B5ED1-0B5EDF, exact match of ROM offset 006C26-006C34
xxDEE0   xxE24E   Nothing yet found for this range
xxE24F   xxE29F   Fragment found at ROM offset 0F624F-0F629F, exact match of ROM offset 006FA4-006FF4
xxE2A0   xxE311   Nothing yet found for this range
xxE312   XXE33B   Fragment found at ROM offset 156312-15633B, exact match of ROM offset 007067-007090
xxE33C   xxE3CB   Nothing yet found for this range
xxE3CC   xxE4FF   Fragment found at ROM offset 03E3CC-03E4FF, matches up to ROM offset 00711D-00725C, contains two differences, TODO
xxE500   xxE567   Nothing yet found for this range
xxE568   xxE59F   Fragment found at ROM offset 0EE568-0EE59F, exact match of ROM offset 0072C5-0072FC
xxE5A0   xxE666   Nothing yet found for this range
xxE667   xxE668   UNCONFIRMED fragment found at ROM offset 136667-136668, possible exact match of 0073C4-0073C5 (only 2 bytes, 0x7E, 0x7E)
xxE669   xxE6BC   Nothing yet found for this range
xxE6BD   xxE6C6   Fragment found at ROM offset 13E6BD-13E6C6, matches up to ROM offset 00741A-007423, no differences except address shifts
xxE6C7   xxE8E4   Nothing yet found for this range
xxE8E5   xxE91F   UNCONFIRMED fragment found at ROM offset 0CE8E5-0CE91F, appears to be UNUSED SPACE
xxE920   xxE94D   Nothing yet found 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

1B1895-1B197F Fragment

  • Operations were swapped in two separate subroutines. Why? Good question.
Protoype
...
$36/993F 8C 02 43    STY $4302
$36/9942 A9 7F       LDA #$7F
...

Final (US)
....
$00/9D4B A9 7F       LDA #$7F
$00/9D4D 8C 02 43    STY $4302
...
Prototype
$36/994D C2 20       REP #$20
$36/994F A2 00 00    LDX #$0000
...

Final (US)
$00/9D5C A2 00 00   LDX #$0000
$00/9D5F C2 20      REP #$20
...

Ending

  • The ending is missing in the prototype.
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 Circuit Checksum

  • The prototype runs a checksum on the entire 32,768 bytes of the ROM bank.
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, as soon as the fight begins, set these values in a debugger. One successful punch will result in a KO.

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