Last active
January 27, 2025 22:15
-
-
Save yuriks/1f601bbcc6faf08c2aa7c3c9b8e8a064 to your computer and use it in GitHub Desktop.
SMART Hardcoded/fixed addresses
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
List of hardcoded address locations SMART reads/writes to: | |
Allocatable object respecting project free space settings aren't listed here, | |
only things with fixed locations. | |
(Lines without a colon/label are grouped with the *next* entry's description. | |
Entries starting with "R" are reads rather than writes.) | |
Bank $80 | |
======== | |
$80:8001: if multiCRE patch enabled, to repoint the CRE tileset list | |
$80:8263 | |
$80:82A6: Updates count of default unlocked and total demo sets | |
$80:845D: Repoints address of SPC engine blob | |
$80:8F73 | |
$80:8F79: Repoints table of music pointers | |
$80:C4B5-C5: repoints area savelist tables (table of areas is fixed) | |
$80:FFC0: Rewrites header with same contents (including int vectors), with location depending on being LoRom ($80:FFC0) or ExLoRom ($00:FFC0) | |
Bank $81 | |
======== | |
$81:A3C0 | |
$81:AA11: Updates hex map count | |
$81:A551: Repoints hex map foreground tilemap | |
$81:A599: Repoints hex map background tilemaps | |
$81:A3D7 | |
$81:A3E0: Repoints tables of hex map palette pointers | |
$81:A3E4 | |
$81:A3EE: Repoints hex map palette update lists | |
$81:A3F8: Repoints hex map palette update data | |
$81:AB57-88 | |
$81:B01B-4C: Repoints hex map animation speed tables (LDAs only) | |
$81:AB20 | |
$81:B00B: Repoints hex map animation frames tables | |
$81:A9F3 | |
$81:A9F7: Repoints table of hex map label positions | |
$81:AB2A | |
$81:AB35: Repoints table of hex map label positions | |
Bank $82 | |
======== | |
$82:816D | |
$82:864C | |
$82:8691: Repoint table of demo room data | |
R $82:9531: Reads count of area maps from ROM | |
R $82:9540: Reads pointer to table of area map pointers from ROM | |
^ table is written with pointers, but it seems area maps are preferentially updated in place and not re-allocated? | |
R $82:9631: Reads table of per-area area label pointers | |
^ repoints table contents | |
R $82:BB4C: Reads table of per-area map elevator pointers | |
^ repoints table contents | |
$82:9717: Repoints map station data | |
$82:9444 | |
$82:9531 | |
$82:941F: Updates count of area maps (enables using Debug area map) | |
$82:9453 | |
$82:9458: Repoints area map pointer table | |
$82:9540 | |
$82:9545: Repoints area map pointer table | |
$82:BE67 | |
$82:BE6C: Repoints area map pointer table (even though this routine is unused) | |
$82:B6C7: Repoints address to Crateria map icons, in Gunship icon drawing code specifically | |
$82:B6CE: (Only applied if opcodes are vanilla) | |
$82:BB4C: Repoints area map elevators pointer table | |
$82:C7CB-C82B: Repoints map icon lists | |
$82:DF03: repoint SCE tileset list | |
CRE repoints only done for vanilla CRE without multiCRE: | |
$82:E415 | |
$82:E419: repoint CRE GFXtable bank/addr | |
$82:E797 | |
$82:E79B: repoint CRE GFXtable bank/addr | |
$82:E83D | |
$82:E841: repoint CRE tile table bank/addr | |
$82:EAED | |
$82:EAF1: repoint CRE tile table bank/addr | |
Bank $84 | |
======== | |
Hardcoded PLM instructions: | |
Used to determine items: $8764 $887C $8A24 $8A2E | |
Used to determine doors: $8A24 $8A72 | |
Bank $85 | |
======== | |
R $85:8243 == $AD | |
R $85:82E5 == $AD: Used to detect "Incompatible message box ASM" | |
R $85:8244 == $20: Checks to see if it's a JSR. Seems to be compatibility with some patch? | |
$85:8251 | |
$85:8255 | |
$85:82F2 | |
$85:82F7: Repoints tables of message box definitions | |
$85:8413: Repoints table of message box button icon locations | |
$85:8000 | |
$85:8040: Message box borders | |
$85:95C1 | |
$85:9601: Message box confirmation text | |
Bank $8B | |
======== | |
$8B:D5F5 | |
$8B:D5F9: Repoints credits font graphics bank/addr | |
$8B:DED1 | |
$8B:DED4: Repoints credits font graphics bank/addr | |
$8B:E0BF | |
$8B:E0C3: Repoints credits tilemap bank/addr | |
$8B:F6FC: Repoints credits object instruction list | |
$8B:CF43-61: Repoints intro text pages instruction lists | |
Bank $8E | |
======== | |
$8E:8000: Hex map forground GFX | |
$8E:D600: Hex map background GFX | |
$8E:E400: Hex map pause palette | |
Bank $90 | |
======== | |
$90:AA7D | |
$90:AA87: Repoints area map pointer table | |
Bank $91 | |
======== | |
$91:879F: Repoints table of demo (equipment+movie) data | |
$91:87FF: Repoints table of demo setup routine pointers | |
Bank $9A | |
======== | |
$9A:B200: HUD GFX | |
Bank $A2 | |
======== | |
$A2:A8AE | |
$A2:A8B3: Adjusts coordinates for gunship (enemy $D07F) lift-off code to match Crateria save $12 | |
$A2:A810: This patch is only done if SMART detects the opcodes in question are vanilla. | |
Bank $A7 | |
======== | |
$A7:AAEB | |
$A7:AAF1 | |
$A7:AAF7: Repoints Kraid lower half graphics (based on room Kraid enemy $E2BF is found in) | |
$A7:AAC9 | |
$A7:AACF | |
$A7:AAD5: Repoints Kraid upper half graphics | |
Bank $B4 | |
======== | |
$B4:EC1C: Default enemy vulnerabilities | |
Bank $B6 | |
======== | |
$B6:F000: Pause map palette | |
$B6:8000: Pause map GFX | |
Banks $A2..$B3 | |
============== | |
Various hardcoded enemy palette and graphics addresses |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment