User Tools

Site Tools


return_of_samus:basic_guides:initial_savegame

Editing the Initial Savegame

Now you can start anywhere you want! What a thought!

Location and Format

The data starts at 0x4E64 in ROM, and is (somewhat) nicely organized.

All 16-bit values are little-endian.

Address Default Use
Samus' position
0x4E64 $D4 Y pos, pixels
0x4E65 $07 Y pos, screen
0x4E66 $48 X pos, pixels
0x4E67 $06 X pos, screen
Camera position
0x4E68 $C0 Y pos, pixels
0x4E69 $07 Y pos, screen
0x4E6A $40 X pos, pixels
0x4E6B $06 X pos, screen
Tileset Definitions
0x4E6C $7520 Sprite graphics pointer (bank 6)
0x4E6E $07 BG graphics bank
0x4E6F $6000 BG graphics pointer
0x4E71 $5280 Metatile data pointer (bank 8)
0x4E73 $4580 Collision data pointer (bank 8)
0x4E75 $0F Map Bank (9-F)
Solidity indexes
0x4E76 $64 Samus
0x4E77 $64 Enemies
0x4E78 $64 Weapons
Equipment
0x4E79 $00 Samus' items
0x4E7A $00 Samus' beam
0x4E7B $00 Energy tanks
0x4E7C $99 Current energy
0x4E7D $00 Current energy (e-tanks)
0x4E7E $0030 Max Missile Count*
0x4E80 $0030 Current missile count
Misc.
0x4E82 $01 Direction Samus is facing (pointless?)
0x4E83 $02 Acid damage
0x4E84 $08 Spike damage
0x4E85 $47 Real Metroid count (BCD)
0x4E86 $04 Song to play
0x4E87 $00 In-game timer (Minutes)
0x4E88 $00 In-game timer (Hours)
0x4E89 $39 Onscreen Metroid count (BCD)

*00 is at 0x4E7F and 30 is at 0x4E7E in the ROM, resulting in inversion(it appears as $3000 in the ROM). This could cause confusion if not clarified.

Simple Procedure

If you're creating you're own hack, one easy way to do this is to:

  1. Go to wherever you want the start to be
  2. Poke the value 0x09 to the address 0xFF9B in RAM (to force the game to save)
  3. Copy the saved game from SRAM to the location in ROM
  4. Do some fine tuning as desired.

Check RAM map for more details.

Some limitations may apply.

return_of_samus/basic_guides/initial_savegame.txt · Last modified: 2017/11/02 15:26 by liamnajor