Skip to content
InsaneFirebat edited this page Feb 24, 2022 · 3 revisions

This page documents the available freespace in the vanilla SM rom, as well as the freespace usage by the practice hack. This can help determine where to place new code/data, or which bits of code/data might be overlapping with a romhack's data.

FORMAT

Vanilla SM Freespace Address Range, Size (in hex bytes)

  • Practice Hack ORG Address, Approximate Size (in hex bytes), Filename " debug print text"

Practice hack ORG sizes are very likely to change. Do not expect these values to be updated here. Add PAUSE to the end of the build script to read the debug print text and determine exact sizes.

Bank $80

$CD8E-$FFC0, 3232h bytes free

  • $F800, 2D0h, save.asm " save start"
  • $FC00, 1C4h, infohud.asm " infohud bank80 start"
  • $F000, 46Bh, presets.asm " preset_start_gameplay start"

Bank $81

$EF1A-$FF00, FE6h bytes free $FF60-$FFFF, A0h bytes free

  • $EF20, 8Dh, spriteprio.asm " spriteprio start"
  • $F000, 288h, init.asm " init start"

Bank $82

$F70F-$FFFF, 8F1h bytes free

  • $F70F, 84h, minimap.asm " minimap bank82 start"
  • $FA00, 21Ah, presets.asm " presets start"

Bank $83

$AD66-$FFFF, 529Ah bytes free

  • $B000, D2h, rng.asm " rng start"
  • $B400, 6DAh, custompresets.asm " custompresets start"

Bank $84

$EFD3-$FFFF, 102Dh bytes free

  • $EFD9, 11h, fanfare.asm " fanfare restore start"

Bank $85

$9643-$FFFF, 69BDh bytes free

  • $A000, 258h, gamemode.asm " gamemode start"
  • $FE00, 14h, menu.asm " menu bank85 start"
  • $FF00, 40h, fanfare.asm " fanfare start"

Bank $86

$F4A6-$FFFF, B5Ah bytes free

Bank $87

$C964-$FFFF, 369Ch bytes free

  • $D000, 96h, misc.asm " misc start"

Bank $88

$EE32-$FFFF, 11CEh bytes free

Bank $89

$AEFD-$FFFF, 5103h bytes free

Bank $8A

$E980-$FFFF, 1680h bytes free

Bank $8B

$F754-$FFFF, 8ACh bytes free

Bank $8C

$F3E9-$FFFF, C17h bytes free

Bank $8D

$FFF1-$FFFF, Fh bytes free

Bank $8E

$E600-$FFFF, 1A00h bytes free

Bank $8F

$E99B-$FFFF, 1665h bytes free

  • $EA00, 31h, misc.asm " misc door asm start"

Bank $90

$F63A-$FFFF, 9C6h bytes free

  • $F640, D4h, **minimap.asm " minimap bank90 start"
  • $FA00, 38h, misc.asm " misc bank90 start"

Bank $91

$FFEE-$FFFF, 12h bytes free

  • $FFF0, Fh, misc.asm " misc bank91 start"

Bank $92

$EDF4-$FFFF, 120Ch bytes free

Bank $93

$F61D-$FFFF, 9E3h bytes free

Bank $94

$DC00-$DFFF, 400h bytes free

  • $DC00, Eh, misc.asm " EXTRAS=1 misc bank94 start"

Banks $95-$98

<full>

Bank $99

$EE21-$FFFF, 11DFh bytes free

Bank $9A

$FC20-$FFFF, 3E0h bytes free

Bank $9B

$FDA0-$FFFF, 260h bytes free

Bank $9C

$FA80-$FFFF, 580h bytes free

Bank $9D

$F780-$FFFF, 880h bytes free

Bank $9E

$F6C0-$FFFF, 940h bytes free

Bank $9F

$F740-$FFFF, 8C0h bytes free

Bank $A0

$F9D3-$FFFF, 62Dh bytes free

  • $F9E0, 16h, misc.asm " misc bankA0 start"

Bank $A1

$EBD1-$FFFF, 142Fh bytes free

Bank $A2

$F498-$FFFF, B68h bytes free

Bank $A3

$F1AB-$FFFF, E55h bytes free

Bank $A4

$F6BF-$FFFF, 941h bytes free

  • $F700, 15h, rng.asm " crocomire rng start"

Bank $A5

$F95A-$FFFF, 6A6h bytes free

  • $F960, 18h, rng.asm " draygon rng start"

Bank $A6

$FEBC-$FFFF, 144h bytes free

  • $FEBC, Dh, misc.asm " misc bankA6 start"
  • $FFE0, Eh, misc.asm " EXTRAS=1 misc bankA6 start"

Bank $A7

$FF82-$FFFF, 7Eh bytes free

  • $FF90, 10h, misc.asm " misc bankA7 start"
  • $FFB6, Dh, rng.asm " kraid rng start"

Bank $A8

$F9BE-$FFFF, 642h bytes free

Bank $A9

$FB70-$FFFF, 490h bytes free

Bank $AA

$F7D3-$FFFF, 82Dh bytes free

Bank $AB

$F800-$FFFF, 800h bytes free

Bank $AC

$EE00-$FFFF, 1200h bytes free

Bank $AD

$F444-$FFFF, BBCh bytes free

Bank $AE

$FD20-$FFFF, 2E0h bytes free

Bank $AF

$EC00-$FFFF, 1400h bytes free

Bank $B0

$EE00-$FFFF, 1200h bytes free

Bank $B1

<full>

Bank $B2

$FEAA-$FFFF, 156h bytes free

Bank $B3

$ED77-$FFFF, 1289h bytes free

Bank $B4

$F4B8-$FFFF, B48h bytes free

Bank $B5

$F000-$FFFF, 1000h bytes free

Bank $B6

$F200-$FFFF, E00h bytes free

Bank $B7

$FD00-$FFFF, 300h bytes free

Bank $B8

<empty>

  • $8000, 6E28h, menu.asm " menu start"

Banks $B9-$C1

<full>

Bank $C2

$B22E-$FFFF, 4DD2h bytes free

Banks $C3-$CD

<full>

Bank $CE

$B22E-$FFFF, 4DD2h bytes free

Banks $CF-$DD

<full>

Bank $DE

$D1C0-$FFFF, 2E40h bytes free

Bank $DF

$8000-$FFFF, 8000h bytes free (unused music bank)

  • $D500, 2000h, minimap.asm " minimap bankDF start"

Bank $F0

$8000-$FFFF, 8000h bytes free

  • $8000, 2AE4h, infohud.asm " infohud start"

Banks $E9-$EF

<empty>

  • Various incsrc preset_data.asm orgs in presets.asm

Bank $F1

$8000-$FFFF, 8000h bytes free

  • $8000, 749Eh, mainmenu.asm (presets/prkd_menu.asm)

Bank $F2

$8000-$FFFF, 8000h bytes free

  • $8000, 5263h, mainmenu.asm (presets/allbosskpdr_menu.asm)