Extra Overlay Areas: Difference between revisions

From SkyTemple
Add TeamStatsPain
Confirm TeamStatsPain
 
Line 109: Line 109:
|
|
|-
|-
|''0x1B70 - 0x1B90''
|0x1B70 - 0x1B90
|''TeamStatsPain''
|TeamStatsPain
|''(Provisional)''
|
|-
|-
|0x30F70 - 0x38F80
|0x30F70 - 0x38F80
| colspan="2" |'''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.
| colspan="2" |'''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.
|}
|}

Latest revision as of 13:45, 8 December 2024

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
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.