Extra Overlay Areas
This page keeps track of the areas inside overlay_0036.bin (the extra overlay added by the ExtraSpace patch) that have been assigned to ASM patches.
If you want to make an ASM patch that needs extra space, you can request an area in the overlay by asking Frostbyte. Make sure to know how much space you will need beforehand. Also please add a .area directive that includes the start and end address of your area after it’s assigned so you don’t accidentally overflow it (.area endAddress - startAddress
).
You can request the space assigned to your patch to be increased as long as there’s some free space after its section. If there’s not enough space before the next entry begins, you will have to request a new area and add the new extra code there.
An area that has already been assigned can never be unassigned nor reassigned, even if it’s no longer needed by the hack that requested it. This rule is needed since some people might have an old version of a patch that still needs that area.
Area (inclusive - exclusive) | Patch | Notes |
0x0 - 0x4 | - | Magic number 0xBAADF00D (little-endian) |
0x4 - 0x10 | - | Reserved |
0x10 - 0x480 | CompleteTeamControl | |
0x500 - 0x62C | MoveShortcuts | |
0x700 - 0x744 | HeroFaintKick | |
0x780 - 0x814 | FixMemorySoftlock | |
0x830 - 0x878 | DynamicBossesEverywhere | |
0x8B0 - 0x9B0 | RevampEggStarters | |
0xA00 - 0xA30 | PitfallTrapTweak | |
0xA70 - 0xAEC | BoldText | |
0xB20 - 0xB7C | ChangeTextSound | |
0xBC0 - 0xC10 | AntiSoftlock | |
0xC40 - 0xCC0 | Static init address array: 32 pointers to functions that will be called when the overlay is loaded. Null pointers are skipped.
Other projects that use this overlay and need to perform some sort of initialization should add a pointer to their init function on the first empty slot in this array. | |
0xD00 - 0xD80 | Static init ID array: 32 integers used to identify which project is making use of each of the 32 entries in the static init address array. Each project should have an unique ID. 0 if an entry is unused.
Projects must check these IDs to ensure they don’t overwrite an entry from another project. They must also make sure to remove their old entries (for example, if the location of the project’s init function changes) so the game doesn’t jump to outdated / invalid addresses. | |
0xE00 - 0x1120 | PushAllies | |
0x11A0 - 0x12F0 | BetterEnemyEvolution | |
0x1380 - 0x13B8 | NoWeatherStop | |
0x13F0 - 0x1400 | UnusedDungeonChance | |
0x1420 - 0x17BC | FixMemorySoftlock | >= v2.0 |
0x1840 - 0x1888 | MoreSamplesAndPresets | |
0x18B0 - 0x18E0 | AddKeyCheck | |
0x18F0 - 0x1958 | DisplayScriptVariable | |
0x1970 - 0x1A2C | ChangePortraitMidText | |
0x1A60 - 0x1B60 | MoreAudioMemory | |
0x1B70 - 0x1B90 | TeamStatsPain | (Provisional) |
0x30F70 - 0x38F80 | Common area: Anyone can use this space however they want without having to request an area. Useful if you don’t care about compatibility with other patches that might use this space. For example, this can be used if you need some space for a patch that is only going to be used in a certain ROM hack. |