Project: Snes Gradius 3 Memory Map Mode 21 (Hirom) V1.0 Created By: slidelljohn Date: 6-18-24 Use: To apply the the patch you have to use a Gradius 3 rom that has a checksum of "SHA-256: 93DA752A0C76167D0907EFA832367E5D14AAB8E835B864F345C386071A9AF718". Features: Gradius 3 converted to Memory Map Mode 21 (Hirom). Fastrom that has around 5.6% less slowdowns than my Snes Gradius 3 fastrom hack "https://www.romhacking.net/hacks/7682/" but this hack is independent of my fastrom hack. All asm is in 1 bank (C0:0000-C0:FFFF) instead of the original 2 banks (00:8000-00:FFFF) (02:8000-02:FFFF) All long jumps (over 2,000) have been changed to short jumps and all long returns have also been changed to short returns. Over 700 bytes have been freed up in the asm bank due to using the shorter jumps. Details: This hack converts Gradius 3 Memory Map Mode 20 (Lorom) to Memory Map Mode 21 (Hirom). Memory Map Mode 20 (Lorom) is limited to the upper half of the banks (see included lorom pic for details). Memory Map Mode 21 (Hirom) can use the full banks or just the upper half of the banks just like Memory Map Mode 20 (Lorom) (see included hirom pic for details). All asm code runs in the full banks, and all compressed data is uploaded from the full banks. Some data is loaded and stored to wram using the upper half of the banks just like Memory Map Mode 20 (Lorom). Having the data used in this way its like having Memory Map Mode 21 (Hirom) and Memory Map Mode 20 (Lorom) all in on rom. This is just how Memory Map Mode 21 (Hirom) works but the rom data has to be used a certain way to fully use all of these features. I had to move a lot of the data around in order to get this to work to best utilize all of the features that Memory Map Mode 21 (Hirom) supports. This is where rom data has been moved to utilize all of the features that Memory Map Mode 21 (Hirom) supports. When the rom is using only the upper banks for the rom the fastrom banks 80-BF are used instead of the full fastrom banks C0-FF.: Original | New Map Mode 20 | Map Mode 21 00:8000-F9FB | C0:0000-7681, asm 00:F9FC-FFBF | Empty space, was removed. 00:FFC0-FFFF | C0:FFC0-FFFF 01:8000-FFFF | C1:8000-FFFF 02:8000-FF6A | C0:7682-F158, asm 02:FF6B-FFFF | Empty space, was removed. 03:8000-FFFF | C3:8000-FFFF 04:8000-FFFF | C4:8000-FFFF 05:8000-FFFF | C5:8000-FFFF 06:8000-FFFF | C6:8000-FFFF 07:8000-FFFF | C1:0000-7FFF 08:8000-FFFF | C3:0000-7FFF 09:8000-FFFF | C2:8000-FFFF 0A:8000-FFFF | C4:0000-7FFF 0B:8000-FFFF | C2:0000-7FFF 0C:8000-FFFF | C5:0000-7FFF 0D:8000-FFFF | C7:8000-FFFF 0E:8000-FFFF | C6:0000-7FFF 0F:8000-FFFF | C7:0000-7FFF Tools used to create this hack: DiztinGUIsh: https://github.com/IsoFrieze/DiztinGUIsh BSNES+ special version: https://github.com/binary1230/bsnes-plus/releases asar: https://github.com/RPGHacker/asar Mesen2 Snes Emulator: https://github.com/SourMesen/Mesen2 Documents used for Memory Mapping: SNES Developer Manual (Book 1) (Page 1-2-28): https://www.romhacking.net/documents/226/ Memory Map info and images: https://snes.nesdev.org/wiki/Memory_map Special Thanks: This project would not have been possibly without our romhacking community that shares information for others to use and increase their knowledge. So I say thank you to all of everyones research and uploads. :-)