Caution: You do not need to understand the meaning of this section to have fun playing Punch-Out!!
It is intented solely for PO!! maniacs that want to know every byte of the game


The Mike Tyson´s Punch-Out!! rom in detail
Cartridges:
Circuit Board prg-chip chr-chip MMC security chip
MTPO-PAL NES-PNROM-03 
c1987 Nintendo
PAL-PT-1 PRG 
MN231001NXU 885B3
NES-PT-O CHR 
MN231003NXG 88152
Nintendo MMC2-L 
S 8814A
3195A 
c1986 Nintendo 
8829A
PO!!-PAL c1987 Nintendo 
NES-PNROM-05
PAL-QP-O PRG 
LH230676 9103 E
NES-QP-O CHR 
LH2311L7 9049 D
Nintendo MMC2-L 
S 9104 AA
3195A 
c1986 Nintendo 
9104 A
MTPO-NTSC NES-PEEOROM-01 
c1987 Nintendo
NES-PT-O PRG 
MN231001NXH 7N6BT
NES-PT-O CHR 
MN231003NXG 7N050
RD387-001 
c1987 Nintendo 7N0
6113
c1987 Nintendo 
8743 C
PO!!-NTSC c1987 Nintendo 
NES-PNROM-05
NES-QP-O PRG 
MN231001NUY 077B3
NES-QP-O CHR 
MN231003NUZ 06752
MMC2 RD387-001 
c1987 Nintendo07.0
6113B1 
c1988 
9031 3AA
MTPO-Famicom
to come...
c = the copyright symbol

ROMS:
Both roms, the MTPO and the PO!! rom files have got the same overall size. They are 262160 bytes large.

The rom is devided in three major sections (use a hexeditor like Hex Workshop):
Header (size: 16 bytes, Byte 1-16, Offset 00000-00010)
PRG data (size: 131072 bytes, Byte 17-131088, Offset 00011-20010)
CHR data (size 131072 bytes, Byte 131089-262160, Offset 20011-40010)
 

Header

The first 16 bytes of the Punch-Out.nes rom are added by the person who made the rom out of the cartridge. It is used to indicate the emulator what sort of cartridge is following.
In hex the Punch-Out!! header looks like this:
first line is the MTPO.nes, second line is PO.nes
     
    ROM
    Byte 1
    Byte 2
    Byte 3
    Byte 4
    Byte 5
    Byte 6
    Byte 7
    Byte 8
    Byte 9
    Byte 10
    Byte 11
    Byte 12
    Byte 13
    Byte 14
    Byte 15
    Byte 16
    MTPO
    4E
    45
    53
    1A
    08
    10
    90
    00
    00
    00
    00
    00
    00
    4D
    4A
    52
    PO!!
    4E
    45
    53
    1A
    08
    10
    99
    00
    00
    00
    00
    00
    00
    00
    00
    00
     
    N
    E
    S
    Character Break
    PRG (Hex number depends on size of PRG file)
    CHR (Hex number depends on size of CHR file)
                 
     ??
     ??
     ??

    Byte 1-4 are standard bytes, the emulator needs to detect that this is a NES cartridge rom file.
    Byte 5-6 indicate the emulator how mamy pages of programm and character data the cartridge contains.
    Byte 7:
    The first digit is 9 and stands for the mapper #9. It stands for the MMC2 chip
    The second digit stores some cartridge information for the emulator.
    0 = H (Horizontal Mirroring ONLY)
    9 = V + 4scr. (Vertical Mirroring + 4 Screen VRAM ON)
     

    PRG data

    The first of the two main parts of the Punch-Out!! rom file is the so called prg part. "PRG" stands for "programm". The prg part contains that information that is stored on the cartridge in the ROM chip (ROM=PRG).
    This part is the most relevant in order to make a game working.
    The size of the prg part is 131072 bytes. This indicates that the information is stored in 8 x 16kb pages (8 x 16384 = 131072)
    So in the header Byte no.5 is 08 because Punch-Out!! has got 8 programm pages (each 16kb)
    The prg data is stored between Byte 17-131088, Offset 00011-20010)
     
    prg. page
    start offset
    end offset
    1
    00011
    04010
    2
    04011
    08010
    3
    08011
    0C010
    4
    0C011
    10010
    5
    10011
    14010
    6
    14011
    18010
    7
    18011
    1C010
    8
    1C011
    20010

    Compared with the punchout.nsf audio ripp, I konw that major parts are the same to parts of the rom:

    00080-02000(.nsf file)=10010-11F90 (rom file)
    02070-08080(.nsf file)=1A000-20010 (rom file). So all the Punch-Out!! music is stored in parts of prg.page 5,7 and 8

    Aditionally the nsf header provides these information:
    load adress: 0080
    init adress:  809F
    play adress: 0080
    -still not sure how to use those infos...
     

    CHR data

The other main part of the rom is the chr section. In this part all the graphics are stored. "CHR" stands for "Characters". The chr part is the takeout of the VROM Chip of the cartridge. In Punch-Out!! the CHR data size is 131072 bytes. This indicates that the graphics in this rom are stored in 16 pages (each 8kb of size). NEW: I think Punch-Out!! uses 32 pages (each4kb!) When we do the math we see: 131072 bytes:16 = 8192bytes. In hex numbers 16 is 10. So the 6th header byte is 10 to indicate that the rom has got 16 graphic (character) pages. mtpo-chr data begins at Byte 131088 and ends at the end of the rom at Byte 262160. Offset is 20010-40010. (VROM=CHR)

Each character page consists of 16x32=512 tiles. So the Punch-Out!! rom consists of 512x16=8192 tiles. With 8192 bytes per character page and 512 tiles per page we get a result of 16 bytes for the size of each tile.
Additionally each tile is 8x8 pixels large.

Now to the 16 pages of chr graphics: Each page consist of 32x16 tiles as you can see: (remember: 1 page = 512 tiles)



The following pics show the 16 pages of MTPO. When you move with your mouse over then they change to the PO!! equivalent, so you can see, which tiles of the different chr pages are different from version to version (e.g. try page 3!)

this is chr-page 1 of MTPO


this is chr-page 2 of MTPO


this is chr-page 3 of MTPO


this is chr-page 4 of MTPO


this is chr-page 5 of MTPO


this is chr-page 6 of MTPO


this is chr-page 7 of MTPO


this is chr-page 8 of MTPO


this is chr-page 9 of MTPO


this is chr-page 10 of MTPO


this is chr-page 11 of MTPO


this is chr-page 12 of MTPO


this is chr-page 13 of MTPO


this is chr-page 14 of MTPO


this is chr-page 15 of MTPO


this is chr-page 16 of MTPO



You should know that the colors are not the right ones, as the palette information of each tile is stored somewhere else in the rom !!


Up
Home