Language…
5 users online: Bonobi, Burst Man, PD3512, TheClassicOne88, TheXander - Guests: 75 - Bots: 118
Users: 70,224 (2,547 active)
Latest user: Isaquebros29

SMW Memory Map

Displaying 1 out of 1 addresses.

View: moderated | waiting (16)

Filter

Link
  • Pages:
  • 1
RAM Address Length Type Description Details
$7E0200 544 bytes I/O OAM table. Used to handle all sprite tile data, with 128 slots for tiles. Generally, the table is indexed from either $0200 or $0300, with $0300 being used for normal sprites (and Mario) and $0200 being used for various other sprite types. Tiles are drawn to the screen from top to bottom of the table; that is, a sprite in slot 0 will always appear visually in front of a sprite in slot 1.

The table actually consists of two sub-tables:

  • $0200-$03FF (512 bytes): Each slot gets four bytes in the order of: X position, Y position, tile number, YXPPCCCT. Unused tiles are generally marked by giving them a Y position of #$F0 (i.e. offscreen).
  • $0400-$041F (32 bytes): Each slot gets 2 bits %SX, with the X bit used to handle a 9th bit of the X position (for handling sprite tiles that go past the left edge of the screen) and the S bit acting as a "size bit" which (generally) controls whether the tile is 8x8 (0) or 16x16 (1). Since each tile only requires 2 bits, each byte of this table actually handles four separate tiles; see the details table for more information. It is not recommended that you write to this table directly, though, and you should use the table at $0420 instead. The routine at $008494 is responsible for then packing the data from that table back into $0400.

See details for a more-detailed map of the gane's slot usage.
OAM Map $0400 layout
  • Pages:
  • 1