Skip to content

Instantly share code, notes, and snippets.

@yuriks
Last active January 27, 2025 22:15
Show Gist options
  • Save yuriks/1f601bbcc6faf08c2aa7c3c9b8e8a064 to your computer and use it in GitHub Desktop.
Save yuriks/1f601bbcc6faf08c2aa7c3c9b8e8a064 to your computer and use it in GitHub Desktop.
SMART Hardcoded/fixed addresses
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