The current URL is datacrystal.tcrf.net.
Wario Land: Super Mario Land 3/RAM map
The following article is a RAM map for Wario Land: Super Mario Land 3.
RAM | Purpose |
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-DFFF | this range is cleared (set to 00) every time the game is started. |
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) |
A377 | indicate if treasure door (skull) is open |
A382 | set during a warp (eg: room with a treasure key or chest). indicate treasure ID (between 00 - 0F). Used with A377. |
A3B6 | indicate which item huge block will give (00 : coin, 01 : heart) |
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. this is same as internal level ID. |
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
00 : idle 01 : right 02 : left 03 : up 04 : down 0C : water down 0D : water up 0E : hidden |
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 |
A808 | hearts |
A809 | lives |
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 with current course id (A804) when a check point is activated. to use with A815. |
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 |
A93E | set to 1 if wario is crouched |
A93F | current block interacting with wario.
there is a table located at 1C69 that indicate which routine to call depending collided block. only blocks bigger or equal to 0x28 can interact with wario. |
A94B | wario invincibility 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. Internal timer (A905) is ANDed with that mask. If it's equal to zero, level animation counter (AC88) is incremented. This allow to control level animation speed (eg : lava). |
A9E3 | indicate the type of (!) block to process after a door has been used. To be used with A9FE.
01 : (!) block 0x39 10 : (!) block 0x32 Once a door is used, the flag is reset to zero. |
A9ED | similar to A9E3, but for (!) block 0x38. This type of block is not used in any level and does not seems to have any effect. |
A9FE | indicate if any (!) block has been set
00 : disabled (white) 01 : enabled (black) |
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 (sliding platform, lava, water, ...). Always between 0-3. |
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 |
B17D | flags indicating which directions can be used on world map, depending completion
01 : rice beach 02 : teapot 04 : stove canyon 08 : ss tea cup 10 : parsely woods 20 : sherbet land 40 : syrup castle |
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 |