SM64 AltExtender 10/4/2014 Readme shyguyhex 2014 _____________________________________________________________________________________________ What this extender does ---------------------------------------------------------------------: + Pads with the rom with 0x01's to 24MB. + Decompresses all MIO0 files (with proper alignment) to 0x800000, with 32KB gaps after each file. + Remaps all of the pointers to these files in the level scripts (and one asm pointer) + Changes all 0x18 commands to 0x17 commands in the level scripts + Modifies the 0x1A command's asm routine to load raw files instead of MIO0 data + Replaces the segment 0x02 MIO0 loader with a raw file loader + Removes the main CRC check and replaces the CRC string with 0xFF's (optional) + Adds 'EXT2' to the image name + Resurrects the missing character textures from the Japanese rom to the end of segment 0x02 (Pics: http://imgur.com/1firmgd,zdT4VHZ) To use it, either drag your rom onto the exe or drag your rom into the exe's window and press enter. Like VL-Tone's extender, this uses BGNG's mio0dec.exe, but I've linked it into AltExtender's exe to make it more portable. mio0dec.exe and and a directory "mio0_temp" are created temporarily while the rom is being decompressed. _____________________________________________________________________________________________ What's different in this extender -----------------------------------------------------------: + This extender decompresses all MIO0 files to aligned addresses, meaning increased emulator support and support for real N64 consoles + With the edited 0x1A command, and replaced 0x02 segment loader, none of the decompressed files need 'fake' MIO0 headers _____________________________________________________________________________________________ This extender makes the following assembly edits --------------------------------------------: If you opted to do the remove the main CRC check: @ 0000066C: NOP // Ignore final CRC1 comparison @ 00000678: NOP // Ignore final CRC2 comparison @ 00003AC0: // New segment 0x02 load routine LUI A1, 0x0080 ORI A1, A1, 0x0000 LUI A2, 0x0081 ORI A2, A2, 0xA20C JAL 0x8027868C ADDIU A0, R0, 0x0002 @ 00033910: // New 0x1A command load routine OR A0, R0, R0 LW A1, 0x002C (SP) LUI A2, 0x801C ADDIU A2, A2, 0x1000 LW T0, 0x0030 (SP) SUBU A3, T0, A1 JAL 0x803284B0 NOP _____________________________________________________________________________________________ These are the rom locations of the decompressed files ---------------------------------------: (Original location -> Location after decompression) 00108A40 -> 00800000 00114750 -> 00822220 0012A7E0 -> 0085F5B0 00132C60 -> 0087C930 00134D20 -> 0088AAD0 0013B910 -> 008A3B90 00145E90 -> 008BF8E0 001521D0 -> 008DBF50 00160670 -> 008FA020 00165A50 -> 0090F170 00166C60 -> 0091A650 0016D870 -> 009327E0 00180BB0 -> 0095EA00 00188440 -> 0097D8E0 001B9CC0 -> 009E8810 001C4230 -> 00A08190 001D8310 -> 00A35330 001E51F0 -> 00A551C0 001E7EE0 -> 00A63050 001F2200 -> 00A800E0 00201410 -> 00AB0CF0 0026A3A0 -> 00AEC010 0026F420 -> 00B00970 002708C0 -> 00B0EF30 002A65B0 -> 00B1D530 002AC6B0 -> 00B333B0 002B8F10 -> 00B5B510 002C73D0 -> 00B83670 002D0040 -> 00B9FFD0 002D64F0 -> 00BC0930 002E7880 -> 00BE8A90 002F14E0 -> 00C10BF0 002FB1B0 -> 00C38D50 00301CD0 -> 00C556B0 0030CEC0 -> 00C7D810 0031E1D0 -> 00CA5970 00326E40 -> 00CB9990 0032D070 -> 00CCE1B0 00334B30 -> 00CE19D0 0033D710 -> 00CF61F0 00341140 -> 00D06A10 00347A50 -> 00D18A30 0034E760 -> 00D2D250 00351960 -> 00D3DE70 00357350 -> 00D52690 0035ED10 -> 00D666B0 00365980 -> 00D7AAD0 0036F530 -> 00D8F2F0 00371C40 -> 00D9E0A0 00383950 -> 00DCCF00 00396340 -> 00DF86C0 003D0DC0 -> 00E797F0 003E76B0 -> 00EAD170 003FC2B0 -> 00EDDA40 00405FB0 -> 00EF7220 0040ED70 -> 00F0ECC0 0041A760 -> 00F2F460 004246D0 -> 00F48820 0042CF20 -> 00F5EBF0 00437870 -> 00F7D630 0044ABC0 -> 00FB44C0 00454E00 -> 00FCDD50 0045C600 -> 00FE5BA0 004614D0 -> 00FF8880 0046B090 -> 010164A0 0046C3A0 -> 010217F0 004784A0 -> 01045000 0048D930 -> 010758F0 00496090 -> 0108D620 0049E710 -> 010A7450 004AC570 -> 010D67C0 004AF930 -> 010E5650 004B80D0 -> 010FE700 004BEC30 -> 011126C0 004C2920 -> 011230A0 004C4320 -> 0112DB80 004CDBD0 -> 01149340 004CEC00 -> 01152F00 004D1910 -> 0115FFD0