====== Extreme-G ROM Map ====== Below is a high level ROM map of Extreme-G (US). Most of the game's assets are compressed using either LZHUF or LZSS. ---- ===== Structure of LZSS archives ===== ==== LZSS archive header structure ==== ^Offset^Description^ | 00 | 32-bit integer indicating number of files in the archive | | 04 | 4 padding bytes | | 08 | Array of file reference structures | ==== File reference structure ==== ^Offset^Description^ | 00 | 32-bit offset of the LZSS-compressed data | | 04 | 32-bit Magic number "LZSS" | | 08 | 32-bit destination size | | 0C | 32-bit source size | ---- ===== LZSS archive 000014A0 ===== ^ Offset ^ Address ^ Source size ^ Destination size ^ (Compression) Description ^ | 00000018 | 000014B8 | 0002DFC4 | 0004FFF8 | (LZSS) Main assembly code segment | ---- ===== LZSS archive 007A2DF0 ===== ^ Address ^ Source size ^ Destination size ^ (Compression) Description ^ | 007A3118 | 0000246A | 00003AA0 | (LZSS) ? | | 007A5588 | 000013DC | 00002268 | (LZSS) ? | | 007A6968 | 00001832 | 00002E04 | (LZSS) ? | | 007A81A0 | 00001A0E | 000023FC | (LZSS) ? | | 007A9BB0 | 00000C7C | 00001A90 | (LZSS) ? | | 007AA830 | 00001EE7 | 00003AF8 | (LZSS) ? | | 007AC718 | 00001057 | 0000294A | (LZSS) ? | | 007AD770 | 00000FA5 | 00002620 | (LZSS) ? | | 007AE718 | 000010FB | 00002A2C | (LZSS) ? | | 007AF818 | 00001136 | 00002BC0 | (LZSS) ? | | 007B0950 | 0000107A | 000028BC | (LZSS) ? | | 007B19D0 | 00000FA5 | 00002620 | (LZSS) ? | | 007B2978 | 0000115E | 00002BFA | (LZSS) ? | | 007B3AD8 | 00006554 | 0000A31C | (LZSS) ? | | 007BA030 | 00001DA5 | 00004F60 | (LZSS) ? | | 007BBDD8 | 000047BF | 00007CF8 | (LZSS) ? | | 007C0598 | 00001D44 | 000037A4 | (LZSS) ? | | 007C22E0 | 000007DE | 00000800 | (LZSS) ? | | 007C2AC0 | 000000D4 | 00000160 | (LZSS) ? | | 007C2B98 | 0000009F | 000000F0 | (LZSS) ? | | 007C2C38 | 000000BC | 00000128 | (LZSS) ? | | 007C2CF8 | 00000094 | 000000F0 | (LZSS) ? | | 007C2D90 | 000000BB | 00000128 | (LZSS) ? | | 007C2E50 | 00004898 | 000062E8 | (LZSS) ? | | 007C76E8 | 0000014D | 00000328 | (LZSS) ? | | 007C7838 | 00000A51 | 000025C8 | (LZSS) ? | | 007C8290 | 000024C4 | 00003C90 | (LZSS) ? | | 007CA758 | 00000EB5 | 00001140 | (LZSS) ? | | 007CB610 | 00000517 | 00000688 | (LZSS) ? | | 007CBB28 | 000002C3 | 000009F8 | (LZSS) ? | | 007CBDF0 | 00000CFD | 00004308 | (LZSS) ? | | 007CCAF0 | 00003C84 | 00007808 | (LZSS) ? | | 007D0778 | 0000034F | 00000690 | (LZSS) ? | | 007D0AC8 | 00000C53 | 00001000 | (LZSS) ? | | 007D1720 | 000000E3 | 00000200 | (LZSS) ? | | 007D1808 | 00000D85 | 00001000 | (LZSS) ? | | 007D2590 | 00000136 | 00000200 | (LZSS) ? | | 007D26C8 | 00000A11 | 00001000 | (LZSS) ? | | 007D30E0 | 000000C5 | 00000200 | (LZSS) ? | | 007D31A8 | 00000A12 | 00001000 | (LZSS) ? | | 007D3BC0 | 00000131 | 00000200 | (LZSS) ? | | 007D3CF8 | 00000A4C | 00001000 | (LZSS) ? | | 007D4748 | 00000194 | 00000200 | (LZSS) ? | | 007D48E0 | 000001BB | 00000488 | (LZSS) ? | | 007D4AA0 | 000001FC | 00000420 | (LZSS) ? | | 007D4CA0 | 00000145 | 00000348 | (LZSS) ? | | 007D4DE8 | 0000DB93 | 00011988 | (LZSS) ? | | 007E2980 | 00002CAE | 000041C0 | (LZSS) ? | | 007E5630 | 0000527C | 0000A7C4 | (LZSS) ? | | 007EA8B0 | 0000081B | 00000A70 | (LZSS) ? | ---- ===== LZSS table 00001288 ===== This table does not use the same structure as the two LSZZ archives described above. ==== File reference structure ==== ^Offset^Description^ | 00 | 32-bit ROM address of the 32-bit destination size followed by LZSS-compressed data | | 04 | 32-bit source size | | 08 | 32-bit value (unknown purpose) | | 0C | 32-bit value (unknown purpose) | ==== Files ==== ^ Address ^ Source size ^ Destination size ^ (Compression) Description ^ | 0010EC90 | 000012E0 | 00001CFC | (LZSS) ? | | 006AF2C0 | 00001540 | 00004C8C | (LZSS) ? | | 000F0E30 | 00017340 | 0002A584 | (LZSS) ? | | 00109620 | 00003160 | 000059E4 | (LZSS) ? | | 00108170 | 000014B0 | 00001DD4 | (LZSS) ? | | 0010C780 | 00002510 | 000030D4 | (LZSS) ? | | 00092F70 | 00007010 | 0000F2E8 | (LZSS) ? | | 000AFF00 | 00006760 | 0000D6B8 | (LZSS) ? | | 00088000 | 00006710 | 0000CAF8 | (LZSS) ? | | 000A17D0 | 00006830 | 0000D390 | (LZSS) ? | | 00099F80 | 00007850 | 0000DD30 | (LZSS) ? | | 000B9DB0 | 00004AD0 | 00009DC8 | (LZSS) ? | | 0008E710 | 00004860 | 00009C20 | (LZSS) ? | | 000BE880 | 00004B80 | 0000AAB8 | (LZSS) ? | | 000A8000 | 00007F00 | 0000DA30 | (LZSS) ? | | 000B6660 | 00003750 | 000075A8 | (LZSS) ? | | 000DF030 | 00002640 | 00004F18 | (LZSS) ? | | 000E1670 | 00002570 | 00004FC0 | (LZSS) ? | | 000E3BE0 | 000025C0 | 00004F50 | (LZSS) ? | | 000E61A0 | 000026E0 | 00004F80 | (LZSS) ? | | 000E8880 | 00002540 | 00004C18 | (LZSS) ? | | 000EADC0 | 000025D0 | 00004BB8 | (LZSS) ? | | 000ED390 | 00002640 | 00004BB8 | (LZSS) ? | | 000EF9D0 | 00001460 | 00002654 | (LZSS) ? | Note: The source sizes noted above are +4 to account for the destination size value that precedes each compressed file. ---- ===== Level table 00001408 ===== ==== Level header addresses ==== Each address in the table below points to a level header structure. ^ Index ^ Address ^ | 00 | 0010FF70 | | 01 | 0017C6F0 | | 02 | 001DD8B0 | | 03 | 0024FDB0 | | 04 | 002C2970 | | 05 | 00332A30 | | 06 | 003A5630 | | 07 | 004185F0 | | 08 | 0048DB70 | | 09 | 00502FF0 | | 0A | 00576C70 | | 0B | 005EB9F0 | | 0C | 006819F0 | | 0D | 006604F0 | | 0E | 00668A70 | | 0F | 0066FCF0 | | 10 | 00676DF0 | | 11 | 006819F0 | ==== Level header structure ==== Offsets defined in this structure are relative to the position of the structure in ROM. ^Offset^Description^ | 00 | 32-bit offset of GFX transformations table | | 04 | 32-bit number of transformations | | 08 | Unknown | | 0C | 32-bit offset of LZHUF-compressed texture meta table | | 10 | 32-bit number of entries in the texture meta table | | 14 | 32-bit offset of LZHUF-compressed texture data | | 18 | 32-bit destination size of the texture data | | 1C | 32-bit offset of LZHUF-compressed misc data | | 20 | 32-bit destination size of misc data | | 24 | Unknown | | 28 | Unknown | | 2C | Unknown | | 30 | Unknown | | 34 | 32-bit offset of LZHUF-compressed texture coordinate table | | 38 | 32-bit destination size of the texture coordinate table | | 3C | 32-bit offset of LZHUF-compressed GFX/Collision commands | | 40 | 32-bit destination size of the GFX/Collision commands | | 44-7F | Unknown | ==== Level files ==== Below is a list of files referenced the level headers. ^ Address ^ Source size ^ Destination size ^ (Compression) Description ^ | 0010FFF0 | 000000D6 | 000002A0 | (LZHUF) Level 00 texture meta | | 001100F0 | 0000A445 | 0000D5E0 | (LZHUF) Level 00 textures | | 0011A570 | 00024333 | 0005592D | (LZHUF) Level 00 misc data | | 0013E8B0 | 00000048 | 00000074 | (LZHUF) Level 00 texture coordinates | | 0013E930 | 00001DB0 | N/A | Level 00 GFX transformation table | | 001406F0 | 0003BFC3 | 0005F90E | (LZHUF) Level 00 GFX/Collision commands | | 0017C770 | 00000085 | 000001E0 | (LZHUF) Level 01 texture meta | | 0017C830 | 000055E1 | 00008100 | (LZHUF) Level 01 textures | | 00181E30 | 00020477 | 000460B9 | (LZHUF) Level 01 misc data | | 001A22B0 | 00000037 | 0000004C | (LZHUF) Level 01 texture coordinates | | 001A22F0 | 00001D38 | N/A | Level 01 GFX transformation table | | 001A4030 | 0003987B | 0005BD41 | (LZHUF) Level 01 GFX/Collision commands | | 001DD930 | 000000D2 | 000002A0 | (LZHUF) Level 02 texture meta | | 001DDA30 | 00009908 | 0000E2A0 | (LZHUF) Level 02 textures | | 001E7370 | 000253F7 | 00052D09 | (LZHUF) Level 02 misc data | | 0020C770 | 00000053 | 00000084 | (LZHUF) Level 02 texture coordinates | | 0020C7F0 | 00002940 | N/A | Level 02 GFX transformation table | | 0020F130 | 00040C7F | 00063DED | (LZHUF) Level 02 GFX/Collision commands | | 0024FE30 | 0000009A | 000001F8 | (LZHUF) Level 03 texture meta | | 0024FEF0 | 00006DC4 | 0000A040 | (LZHUF) Level 03 textures | | 00256CF0 | 00025496 | 00051409 | (LZHUF) Level 03 misc data | | 0027C1B0 | 00000055 | 00000088 | (LZHUF) Level 03 texture coordinates | | 0027C230 | 00001AE0 | N/A | Level 03 GFX transformation table | | 0027DD30 | 00044C03 | 0006D2EF | (LZHUF) Level 03 GFX/Collision commands | | 002C29F0 | 000000C3 | 00000258 | (LZHUF) Level 04 texture meta | | 002C2AF0 | 00009371 | 0000BEA0 | (LZHUF) Level 04 textures | | 002CBE70 | 00029C0E | 000585AD | (LZHUF) Level 04 misc data | | 002F5AB0 | 0000002C | 00000044 | (LZHUF) Level 04 texture coordinates | | 002F5AF0 | 00002300 | N/A | Level 04 GFX transformation table | | 002F7DF0 | 0003AC30 | 000600DE | (LZHUF) Level 04 GFX/Collision commands | | 00332AB0 | 0000008E | 000001B0 | (LZHUF) Level 05 texture meta | | 00332B70 | 00006CA3 | 00008C60 | (LZHUF) Level 05 textures | | 00339830 | 0002BF48 | 00059985 | (LZHUF) Level 05 misc data | | 003657B0 | 00000047 | 00000074 | (LZHUF) Level 05 texture coordinates | | 00365830 | 00001F18 | N/A | Level 05 GFX transformation table | | 00367770 | 0003DEAE | 0005E91F | (LZHUF) Level 05 GFX/Collision commands | | 003A56B0 | 000000C4 | 00000264 | (LZHUF) Level 06 texture meta | | 003A57B0 | 00007A2D | 0000BA80 | (LZHUF) Level 06 textures | | 003AD1F0 | 00021886 | 00048E61 | (LZHUF) Level 06 misc data | | 003CEAB0 | 00000073 | 000000C4 | (LZHUF) Level 06 texture coordinates | | 003CEB30 | 00001F40 | N/A | Level 06 GFX transformation table | | 003D0A70 | 00047B62 | 000748F1 | (LZHUF) Level 06 GFX/Collision commands | | 00418670 | 000000D5 | 000002C4 | (LZHUF) Level 07 texture meta | | 00418770 | 000074C0 | 0000C8C0 | (LZHUF) Level 07 textures | | 0041FC30 | 00028454 | 00053A21 | (LZHUF) Level 07 misc data | | 004480B0 | 000000A2 | 00000110 | (LZHUF) Level 07 texture coordinates | | 00448170 | 00001E78 | N/A | Level 07 GFX transformation table | | 00449FF0 | 00043B45 | 00070C49 | (LZHUF) Level 07 GFX/Collision commands | | 0048DBF0 | 000000DC | 00000288 | (LZHUF) Level 08 texture meta | | 0048DCF0 | 00008649 | 0000C900 | (LZHUF) Level 08 textures | | 00496370 | 0002A379 | 0005F209 | (LZHUF) Level 08 misc data | | 004C06F0 | 000000B9 | 00000138 | (LZHUF) Level 08 texture coordinates | | 004C07B0 | 000020F8 | N/A | Level 08 GFX transformation table | | 004C28B0 | 00040728 | 000677FA | (LZHUF) Level 08 GFX/Collision commands | | 00503070 | 000000CF | 00000264 | (LZHUF) Level 09 texture meta | | 00503170 | 00008F11 | 0000BEC0 | (LZHUF) Level 09 textures | | 0050C0B0 | 00027A9A | 00050B51 | (LZHUF) Level 09 misc data | | 00533B70 | 0000005E | 0000009C | (LZHUF) Level 09 texture coordinates | | 00533BF0 | 00001C20 | N/A | Level 09 GFX transformation table | | 00535830 | 00041402 | 0006CBF6 | (LZHUF) Level 09 GFX/Collision commands | | 00576CF0 | 000000D9 | 0000024C | (LZHUF) Level 0A texture meta | | 00576DF0 | 00007F60 | 0000B4E0 | (LZHUF) Level 0A textures | | 0057ED70 | 00025E0C | 00049109 | (LZHUF) Level 0A misc data | | 005A4BB0 | 0000006B | 000000B8 | (LZHUF) Level 0A texture coordinates | | 005A4C30 | 00002FF8 | N/A | Level 0A GFX transformation table | | 005A7C30 | 00043DAF | 0006E823 | (LZHUF) Level 0A GFX/Collision commands | | 005EBA70 | 000000FA | 000002E8 | (LZHUF) Level 0B texture meta | | 005EBB70 | 00008A3E | 0000E3E0 | (LZHUF) Level 0B textures | | 005F45B0 | 0002AC96 | 0005DEE9 | (LZHUF) Level 0B misc data | | 0061F270 | 0000006F | 000000C0 | (LZHUF) Level 0B texture coordinates | | 0061F2F0 | 000023C8 | N/A | Level 0B GFX transformation table | | 006216F0 | 0003EDFE | 0005E93B | (LZHUF) Level 0B GFX/Collision commands | | 00681A70 | 0000001D | 00000054 | (LZHUF) Level 0C texture meta | | 00681AB0 | 00001A60 | 00001E00 | (LZHUF) Level 0C textures | | 00683530 | 00009634 | 00013A51 | (LZHUF) Level 0C misc data | | 0068CB70 | 0000001B | 00000028 | (LZHUF) Level 0C texture coordinates | | 0068CBB0 | 00000CF8 | N/A | Level 0C GFX transformation table | | 0068D8B0 | 0000F082 | 00018044 | (LZHUF) Level 0C GFX/Collision commands | | 00660570 | 0000004B | 000000B4 | (LZHUF) Level 0D texture meta | | 006605F0 | 00001A66 | 00003680 | (LZHUF) Level 0D textures | | 00662070 | 000046FA | 0000B9CD | (LZHUF) Level 0D misc data | | 00666770 | 00000024 | 00000030 | (LZHUF) Level 0D texture coordinates | | 006667B0 | 00000320 | N/A | Level 0D GFX transformation table | | 00666AF0 | 00001F5B | 00003380 | (LZHUF) Level 0D GFX/Collision commands | | 00668AF0 | 0000004C | 000000A8 | (LZHUF) Level 0E texture meta | | 00668B70 | 000020D8 | 00003A40 | (LZHUF) Level 0E textures | | 0066AC70 | 0000311C | 00007529 | (LZHUF) Level 0E misc data | | 0066DDB0 | 00000023 | 00000034 | (LZHUF) Level 0E texture coordinates | | 0066DDF0 | 000000F0 | N/A | Level 0E GFX transformation table | | 0066DEF0 | 00001DE1 | 000040B5 | (LZHUF) Level 0E GFX/Collision commands | | 0066FD70 | 0000003B | 00000090 | (LZHUF) Level 0F texture meta | | 0066FDB0 | 000017A4 | 00002E40 | (LZHUF) Level 0F textures | | 00671570 | 00003416 | 00007CFD | (LZHUF) Level 0F misc data | | 006749B0 | 0000001B | 00000024 | (LZHUF) Level 0F texture coordinates | | 006749F0 | 000002F8 | N/A | Level 0F GFX transformation table | | 00674CF0 | 000020C5 | 00003A8E | (LZHUF) Level 0F GFX/Collision commands | | 00676E70 | 0000003F | 0000009C | (LZHUF) Level 10 texture meta | | 00676EB0 | 0000184B | 00003240 | (LZHUF) Level 10 textures | | 00678730 | 00005AD3 | 0000DD71 | (LZHUF) Level 10 misc data | | 0067E230 | 00000016 | 00000024 | (LZHUF) Level 10 texture coordinates | | 0067E270 | 000004B0 | N/A | Level 10 GFX transformation table | | 0067E730 | 000032A0 | 000067AF | (LZHUF) Level 10 GFX/Collision commands | | 00681A70 | 0000001D | 00000054 | (LZHUF) Level 11 texture meta | | 00681AB0 | 00001A60 | 00001E00 | (LZHUF) Level 11 textures | | 00683530 | 00009634 | 00013A51 | (LZHUF) Level 11 misc data | | 0068CB70 | 0000001B | 00000028 | (LZHUF) Level 11 texture coordinates | | 0068CBB0 | 00000CF8 | N/A | Level 11 GFX transformation table | | 0068D8B0 | 0000F082 | 00018044 | (LZHUF) Level 11 GFX/Collision commands | Note: Level 0C and level 11 reference the same group of files. ---- ===== LZHUF table 00001450 (Common level textures) ===== ==== Addresses ==== This table runs parallel to the level table. ^ Index ^ Address ^ | 00 | 000C6690 | | 01 | 000C6690 | | 02 | 000C6690 | | 03 | 000D5C40 | | 04 | 000D5C40 | | 05 | 000D5C40 | | 06 | 000CE500 | | 07 | 000CE500 | | 08 | 000CE500 | | 09 | 000DC550 | | 0A | 000DC550 | | 0B | 000DC550 | | 0C | 000C6690 | | 0D | 000C6690 | | 0E | 000D5C40 | | 0F | 000CE500 | | 10 | 000DC550 | | 11 | 000C6690 | ==== Files ==== ^ Address ^ Source size ^ Destination size ^ (Compression) Description ^ | 000C6690 | 00007E6A | 0000A348 | (LZHUF) Common level mesh texture bank | | 000CE500 | 0000773D | 00010420 | (LZHUF) Common level mesh texture bank | | 000D5C40 | 00006907 | 0000A358 | (LZHUF) Common level mesh texture bank | | 000DC550 | 00002ADD | 00008318 | (LZHUF) Common level mesh texture bank | Note: The source sizes noted above are +4 to account for the destination size value that precedes each compressed file. ---- ===== Miscellaneous LZHUF files ===== The addresses of these two files (000C3400, 0002F480) are defined at 00001280 and 00001490 respectively. ^ Address ^ Source size ^ Destination size ^ (Compression) Description ^ | 000C3400 | 00003284 | 00008318 | (LZHUF) Global level mesh texture bank | | 0002F480 | 00057D3A | 000B8120 | (LZHUF) ? | Note: The source sizes noted above are +4 to account for the destination size value that precedes each compressed file.