Skip to content
InsaneFirebat edited this page May 9, 2023 · 19 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. TinyStates uses the most freespace.

Bank $80

$CD8E-$FFC0, 3232h bytes free

  • $E000, 1BCh, crash.asm " crash handler bank80 start"
  • $F000, 43Bh, presets.asm " presets bank80 start"
  • $F600, 439h, save.asm " save start"
  • $F600, 632h, tinystates.asm " tinysave start"
  • $FD00, 226h, infohud.asm " infohud bank80 start"
  • $FF80, 11h, cutscenes.asm " cutscenes bank80 start"

Bank $81

$EF1A-$FF00, FE6h bytes free

$FF60-$FFFF, A0h bytes free

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

Bank $82

$F70F-$FFFF, 8F1h bytes free

  • $F70F, 8Ch, minimap.asm " minimap bank82 start"
  • $F800, 48h, layout.asm " layout bank82 start"
  • $FA00, 348h, presets.asm " presets bank82 start"
  • $FE00, 9Dh, tinystates.asm " tinysave bank82 start"

Bank $83

$AD66-$FFFF, 529Ah bytes free

  • $B000, 18Ah, rng.asm " rng start"
  • $B400, 87Eh, custompresets.asm " custompresets start"

Bank $84

$EFD3-$FFFF, 102Dh bytes free

Bank $85

$9643-$FFFF, 69BDh bytes free

  • $9643, 18Ch, fanfare.asm " fanfare message start"
  • $C000, 1485h, mainmenu.asm " mainmenu InfoHUD start"
  • $F800, 2E6h, gamemode.asm " gamemode start"
  • $FD00, 2Ch, menu.asm " menu bank85 start"
  • $FE00, DDh, fanfare.asm " fanfare start"

Bank $86

$F4A6-$FFFF, B5Ah bytes free

Bank $87

$C964-$FFFF, 369Ch bytes free

Bank $88

$EE32-$FFFF, 11CEh bytes free

  • $F000, 4AEh, " cutscenes bank88 start"

Bank $89

$AEFD-$FFFF, 5103h bytes free

  • $B000, 20DEh, " menu start"
  • $D0C6, CEAh, " crash handler bank89 start"

Bank $8A

$E980-$FFFF, 1680h bytes free

Bank $8B

$F754-$FFFF, 8ACh bytes free

  • $F800, D3h, cutscenes.asm " cutscenes start"
  • $FA00, 140h, misc.asm " misc bank8B start"

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, 12EDh, layout.asm " layout start"

Bank $90

$F63A-$FFFF, 9C6h bytes free

  • $F640, C8h, **minimap.asm " minimap bank90 start"
  • $F800, 15Dh, **misc.asm " misc bank90 start"
  • $FE00, E0h, **damage.asm " damage bank90 start"

Bank $91

$FFEE-$FFFF, 12h bytes free

Bank $92

$EDF4-$FFFF, 120Ch bytes free

Bank $93

$F61D-$FFFF, 9E3h bytes free

  • $F61D, 1E4h, **damage.asm " damage bank93 start"

Bank $94

$DC00-$DFFF, 400h bytes free

Banks $95-$98

<full>

Bank $99

$EE21-$FFFF, 11DFh bytes free

Bank $9A

$FC20-$FFFF, 3E0h bytes free

Bank $9B

$CBFB-$DFFF, 1405h bytes free

$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

$F7D3-$FFFF, 82Dh bytes free

  • $FFD0, 2Ah, damage.asm " damage bankA0 start"

Bank $A1

$EBD1-$FFFF, 142Fh bytes free

  • $EBD1, 63h, layout.asm " layout bankA1 start"

Bank $A2

$F498-$FFFF, B68h bytes free

Bank $A3

$F1AB-$FFFF, E55h bytes free

Bank $A4

$F6BF-$FFFF, 941h bytes free

  • $F700, 3Ch, rng.asm " crocomire rng start"

Bank $A5

$F95A-$FFFF, 6A6h bytes free

  • $FA00, 29h, rng.asm " draygon rng start"

Bank $A6

$FEBC-$FFFF, 144h bytes free

  • $FEC0, 6Bh, rng.asm " ridley rng start"

Bank $A7

$FF82-$FFFF, 7Eh bytes free

  • $FFB6, 49h, rng.asm " kraid rng start"

Bank $A8

$F9BE-$FFFF, 642h bytes free

Bank $A9

$FB70-$FFFF, 490h bytes free

  • $FBC0, 3AAh, cutscenes.asm " cutscenes MB start"

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

  • $F000, 969h, mainmenu.asm " mainmenu GameMenu start"

Bank $B4

$F4B8-$FFFF, B48h bytes free

  • $F4B8, Bh, **layout.asm " layout bankB4 start"

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, 2D8Ah, mainmenu.asm " mainmenu start"

Banks $B9-$C1

<full>

Bank $C2-$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"

Banks $E0-$E7

<empty>

Banks $E8-$EA

<empty>

  • $8800, 15800h, tilegraphics.asm " raw tile tables crossbank start"

Banks $EA-$EE

<empty>

  • $E000, 1BE90h, presets.asm " preset data crossbank start"

Bank $EF

<empty>

Bank $F0

<empty>

  • $8000, 2D29h, infohud.asm " infohud start"
  • $E000, ED4h, spritefeat.asm " spritefeat start"

Bank $F1

<empty>

  • $8000, 69BEh, presets.asm " preset menu bankF1 start"

Bank $F2

<empty>

  • $8000, 77D3h, presets.asm " preset menu bankF2 start"

Bank $F3

<empty>

Bank $F4

<empty>

  • $8000, 567Ch, tilegraphics.asm " tilegraphics start"

Banks $F4-$FE

<empty>

  • $D800, 4A800h, tilegraphics.asm " raw tiles crossbank start"

Bank $FF

<empty>