Wario Land: Super Mario Land 3:RAM map
|A000-A017||save game slot 1. The first 4 bytes (header) always equals to 0x19643957. When player enters the pipe, bytes in A004-A017 are copied to A804-A817.|
|A020-A037||save game slot 1 (copy)|
|A040-A057||save game slot 2|
|A060-A077||save game slot 2 (copy)|
|A080-A097||save game slot 3|
|A0A0-A0B7||save game slot 3 (copy)|
|A0C0||save game 1 checksum|
|A0C1||save game 2 checksum|
|A0C2||save game 3 checksum|
|A0C3||last pipe entered by wario at save game selection screen|
|A0C4||demo mode record index (00 - 06)|
|A100-A1FF||related to active actors on screen like A200-A2FF|
|A200-A2FF|| active actors on the screen (enemies, bonuses, throwed coins, ...).
each actor take 32 bytes. there is a maximum of 8 actors.
enemies with throwable items (eg : boomerang) need a second actor to manage the item.
actors slots that are not used anymore (status = 00) are reused when need of a new actor.
only actors that have status = 02 are drawn.
+00 : status 00 : inactive 01 : out of screen (not visible) but still active 02 : visible +01-02 : x position +03-04 : y position +0A : y position (relative to screen) +0B : x position (relative to screen) +0C-0D : sprite data pointer +0E : orientation (01 : right - 02 : left) +0F : animation counter +10 : tile index in VRAM +12-13 : enemy function pointer
|A375||writing something here terminate level (player is teleported to bonus screen)|
|A376||indicate if level exit (skull) is open (00 : closed, 01 : rising up, 02 : open)|
|A600-A6??||trigger sound effects and music|
|A79C|| current map
02 : kitchen island 04 : rice beach 06 : mt. teapot 0A : stove canyon 0E : parsely woods 0C : syrup castle 10 : ss tea cup 12 : sherbet land
|A79E||wario position on current world map. there is a unique value for each course.|
|A79F|| wario position on kitchen island
00 : rice beach 01 : mt. teapot 02 : stove canyon 03 : parsely woods 04 : ss tea cup 05 : sherbet land 06 : syrup castle 07 : bridge to sherbet land
|A7A4||world map timer (player, flags, water)|
|A7D9||wario X position on map|
|A7DE||wario Y position on map|
|A7E5||wario animation status on map (eg : hidden, going left, going right, ...)|
|A7E6|| wario animation direction on map
E0 : up EE : down FE : left F0 : right FF : no move
|A7E7||wario animation timer countdown on map|
|A7E8||world map timer (navigation arrows)|
|A804||current course id|
|A805-A807||total player money|
|A80A|| wario status
00 : small 01 : normal 02 : bull 03 : eagle 04 : dragon
|A80B|| rice beach completion.
each bit indicate if a specific level of the map have been completed
total number of bits used can be different for each world.
last bit generally indicate if world have been completed (a flag is then show on map)
|A80C||mt. teapot completion|
|A80D||numbers of levels completed (shown on pipe at file selection screen)|
|A80E-A80F||treasures collected (1 bit per treasure, since there is 15 treasures one bit is unused)|
|A810||stove canyon completion|
|A811||ss tea cup completion|
|A812||parsely woods completion|
|A813||sherbet land completion|
|A814||syrup castle completion|
|A815||indicate if level check point (skull) has been activated (00 : inactive, 01 : active). to use with A816.|
|A816||this value is overwritten everytime a level check point is activated. value seems to be unique and different for each level.|
|A817||indicate if game have been completed at least once (pipe at file selection screen will blink)|
|A8C4|| control level transition
01 : show level title 02 : warp player to start of level 03 : normal gameplay 0A : warp to last door used (if no door entered, crashes). to use with A98E-A98F.
|A8C6||indicate if demo mode is enabled|
|A8C7||indicate if debug mode is enabled|
|A900-A901||level scroll y|
|A902-A903||level scroll x|
|A905||game internal timer|
|A908||if non zero, freeze wario and time. set to 1 by the game while pause is enabled.|
|A90F||wario animation frame (when walking, swimming, ...)|
|A911-A912||player position y|
|A913-A914||player position x|
|A915||player animation frame (walking, swimming etc...)|
|A916||player horizontal or vertical flip, invert palette or half visible (bit 4-7)|
|A917||player blinking eyes timer (reset to zero if player make any move)|
|A93A||screen shaking countdown timer|
|A94B||wario invicibility countdown timer|
|A964-A965||remaining level time|
|A97A-A97B||level coins collected|
|A98E-A98F||last door entered. Each door in the game has a unique ID.|
|A998||wario flying countdown timer|
|A9A8||if non zero, freeze all actors. set to 1 by the game while pause is enabled.|
|A9AB||level animation mask. AC88 value is ANDed with that mask. This allow to control level animation speed (eg : lava).|
|A9E3|| indicate if (!) block is active. There is two types of (!) blocks.
00 : disabled 01 : (!) block A enabled 10 : (!) block B enabled
|AA0A||flame thrower countdown timer|
|AB00-ABFF||animated tile data constantly copied to VRAM (to 9200-9230). For each of the 4 tiles, there is 4 frames. Used for animated stuff like water, fire, piranha flowers, ...|
|AC88||level animation counter (moving platform, water, ...)|
|ACE0-ACFF||indicate scrolling bounds for each 32 16x16 sections of a level. 0 = no bounds, 1 = right, 2 = left, 3 = left and right.|
|AD00-AEFF|| this array maps level 16x16 blocks to hardware 8x8 tiles.
there is 128 blocks in total, each defined by the 4 indexes of 8x8 tiles.
|AF00-AFFF|| 8x8 visible sprites for actors (4 bytes for each). wario seems to be always the first.
+00 : x position +01 : y position +02 : sprite index +03 : h/v flip / palette
|B000-BFFF||array of actor indexes for each of the 256 x 32 level blocks. each actor index is 4 bits.|
|C000-DFFF|| all indexes of 16x16 blocks (for current level) are decompressed here. level is 256 x 32 blocks.
bits 0-6 is the block index (between 0 and 127). bit 7 (msb) indicate if there is an actor at that block (see B000-BFFF).
|C03A|| (coin mini game only) indicate which round is active
00 : 1st 01 : 2nd 02 : 3rd
|C0F3-C0F4|| (coin mini game only) indicate what is in the left/right buckets.
00 : money bag 01 : 10 ton weight
|FF82||indicate if vblank interrupt handler has just ended|