The current URL is datacrystal.tcrf.net.
Wario Land: Super Mario Land 3/RAM map: Difference between revisions
m (new addresses) |
(→top) |
||
(51 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{rammap|game=Wario Land: Super Mario Land 3}} | |||
{| border="1" cellpadding="1" | {| border="1" cellpadding="1" | ||
|'''RAM''' || '''Purpose''' | |'''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-A11F || current active actor, copied from A200-A2FF | |||
|- | |- | ||
|A200-A2FF || active actors on the screen (enemies, bonuses, throwed coins, ...). | |A200-A2FF || active actors on the screen (enemies, bonuses, throwed coins, ...). | ||
Line 7: | Line 35: | ||
enemies with throwable items (eg : boomerang) need a second actor to manage the item. | 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. | |||
actors that are not used anymore (status = 00) are | |||
only actors that have status = 02 are drawn. | only actors that have status = 02 are drawn. | ||
Line 20: | Line 46: | ||
+0A : y position (relative to screen) | +0A : y position (relative to screen) | ||
+0B : x position (relative to screen) | +0B : x position (relative to screen) | ||
+0C-0D : sprite data pointer | |||
+0E : orientation (01 : right - 02 : left) | +0E : orientation (01 : right - 02 : left) | ||
+0F : animation counter | +0F : animation counter | ||
+10 : tile index in VRAM | |||
+12-13 : enemy function pointer | |||
|- | |- | ||
|A375 || | |A375 || trigger event | ||
01: level completion (player is teleported to bonus screen) | |||
02: world map event (huge [!] block at end of level) | |||
03: last boss fight | |||
XX: freeze player | |||
|- | |||
|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) | |||
|- | |||
|A5E0-A5E1 || rice beach levels that contains a treasure (after game is completed). Ends with FF. | |||
|- | |||
|A5E2-A5E4 || mt. teapot levels with treasure | |||
|- | |||
|A5E5-A5E8 || sherbet land levels with treasure | |||
|- | |||
|A5E9-A5EB || stove canyon levels with treasure | |||
|- | |||
|A5EC-A5EF || ss tea cup levels with treasure | |||
|- | |||
|A5F0-A5F2 || parsely woods levels with treasure | |||
|- | |||
|A5F3-A5F5 || syrup castle levels with treasure | |||
|- | |||
|A600-A6?? || sound effects and music | |||
|- | |||
|A600 || trigger sound effect | |||
|- | |||
|A615 || trigger sound effect | |||
|- | |||
|A61C || trigger music (01-30 range) | |||
|- | |||
|A61D || current music played (used with A61C) | |||
|- | |||
|A795 || rice beach completed. once world is beaten (a flag is put on map and player is moved to next world), value in A80B is copied here. | |||
|- | |||
|A796 || mt. teapot completed | |||
|- | |||
|A797 || stove canyon completed | |||
|- | |||
|A798 || ss tea cup completed | |||
|- | |||
|A799 || parsely woods completed | |||
|- | |||
|A79A || sherbet land completed | |||
|- | |||
|A79C || current world | |||
01 : kitchen island (fade in) | |||
02 : kitchen island | |||
03 : rice beach (fade in) | |||
04 : rice beach | |||
05 : mt. teapot (fade in) | |||
06 : mt. teapot | |||
07 : during fade in | |||
08 : trigger map load (used with A79E + A7EE) | |||
09 : stove canyon (fade in) | |||
0A : stove canyon | |||
0B : syrup castle (fade in) | |||
0C : syrup castle | |||
0D : parsely woods (fade in) | |||
0E : parsely woods | |||
0F : ss tea cup (fade in) | |||
10 : ss tea cup | |||
11 : sherbet land (fade in) | |||
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) | |||
|- | |||
|A7D1 || map scroll X | |||
|- | |||
|A7D2 || map scroll Y | |||
|- | |||
|A7D9 || wario X position on map | |||
|- | |||
|A7DE || wario Y position on map | |||
|- | |||
|A7E2 || joypad direction on map (similar to A7F1) | |||
|- | |- | ||
| | |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) | |||
|- | |||
|A7EE || world to be loaded (see A79C) | |||
|- | |||
|A7F1 || joypad direction on map (similar to A7E2) | |||
|- | |||
|A804 || current course id | |||
|- | |- | ||
|A805-A807 || total player money | |A805-A807 || total player money | ||
Line 33: | Line 179: | ||
|- | |- | ||
|A809 || lives | |A809 || lives | ||
|- | |||
|A80A || wario status. To be used with A956. | |||
00 : small | |||
01 : normal | |||
02 : bull | |||
03 : eagle | |||
04 : dragon | |||
|- | |- | ||
|A80B || rice beach completion. | |A80B || rice beach completion. | ||
each bit indicate if a specific level have been completed | each bit indicate if a specific level of the map have been completed | ||
total number of bits used can be different for each world. | total number of bits used can be different for each world. | ||
Line 43: | Line 196: | ||
|A80C || mt. teapot completion | |A80C || mt. teapot completion | ||
|- | |- | ||
|A80D || numbers of levels completed | |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) | |A80E-A80F || treasures collected (1 bit per treasure, since there is 15 treasures one bit is unused) | ||
Line 57: | Line 210: | ||
|A814 || syrup castle completion | |A814 || syrup castle completion | ||
|- | |- | ||
|A815 || indicate if level check point has been activated (00 : inactive, 01 : active) | |A815 || indicate if level check point (skull) has been activated (00 : inactive, 01 : active). to use with A816. | ||
|- | |- | ||
|A816 || this value is overwritten | |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 | |A817 || indicate if game have been completed at least once (pipe at file selection screen will blink) | ||
|- | |- | ||
|A8C4 || control level transition | |A8C4 || control level transition | ||
Line 67: | Line 220: | ||
02 : warp player to start of level | 02 : warp player to start of level | ||
03 : normal gameplay | 03 : normal gameplay | ||
0A : warp to last door used (if no door entered, crashes) | 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 | |A900-A901 || level scroll y | ||
|- | |- | ||
|A902-A903 || level scroll x | |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 | |A911-A912 || player position y | ||
Line 77: | Line 240: | ||
|A913-A914 || player position x | |A913-A914 || player position x | ||
|- | |- | ||
|A915 || player animation (walking, swimming etc...) | |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 | |||
|- | |- | ||
| | |A956 || wario status (00 : big, 01 : small). To be used with A80A. | ||
|- | |- | ||
| | |A957 || | ||
01 : move player to the right | |||
02 : move player to the left | |||
04 : scroll up | |||
08 : scroll down | |||
|- | |- | ||
|A964-A965 || remaining level time | |A964-A965 || remaining level time | ||
Line 87: | Line 267: | ||
|A97A-A97B || level coins collected | |A97A-A97B || level coins collected | ||
|- | |- | ||
|A998 || wario flying timer | |A984 || countdown timer (level intro, after dying) | ||
|- | |||
|A98E-A98F || last door/warp used. | |||
|- | |||
|A998 || wario flying countdown timer | |||
|- | |||
|A9A7 || set to 1 before save. it prevent restarting the game by pressing A + B + Start + Select. | |||
|- | |- | ||
| | |A9A8 || if non zero, freeze all actors. set to 1 by the game while pause is enabled. | ||
|- | |- | ||
|AA0A || flame thrower timer | |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, ... | |||
|- | |||
|AC87 || previous wario status, before being hit (see AC87). | |||
|- | |||
|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. | |AD00-AEFF || this array maps level 16x16 blocks to hardware 8x8 tiles. | ||
Line 97: | Line 304: | ||
there is 128 blocks in total, each defined by the 4 indexes of 8x8 tiles. | there is 128 blocks in total, each defined by the 4 indexes of 8x8 tiles. | ||
|- | |- | ||
|C000-DFFF || level | |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 | |||
|- | |||
|FF80 || joypad input | |||
01 : A | |||
02 : B | |||
04 : select | |||
08 : start | |||
10 : right | |||
20 : left | |||
40 : up | |||
80 : down | |||
|- | |||
|FF81 || joypad input (delta) | |||
|- | |||
|FF82 || indicate if vblank interrupt handler has just ended | |||
|} | |} | ||
{{Internal Data}} |
Latest revision as of 14:34, 24 January 2024
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-A11F | current active actor, copied from 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 | trigger event
01: level completion (player is teleported to bonus screen) 02: world map event (huge [!] block at end of level) 03: last boss fight XX: freeze player |
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) |
A5E0-A5E1 | rice beach levels that contains a treasure (after game is completed). Ends with FF. |
A5E2-A5E4 | mt. teapot levels with treasure |
A5E5-A5E8 | sherbet land levels with treasure |
A5E9-A5EB | stove canyon levels with treasure |
A5EC-A5EF | ss tea cup levels with treasure |
A5F0-A5F2 | parsely woods levels with treasure |
A5F3-A5F5 | syrup castle levels with treasure |
A600-A6?? | sound effects and music |
A600 | trigger sound effect |
A615 | trigger sound effect |
A61C | trigger music (01-30 range) |
A61D | current music played (used with A61C) |
A795 | rice beach completed. once world is beaten (a flag is put on map and player is moved to next world), value in A80B is copied here. |
A796 | mt. teapot completed |
A797 | stove canyon completed |
A798 | ss tea cup completed |
A799 | parsely woods completed |
A79A | sherbet land completed |
A79C | current world
01 : kitchen island (fade in) 02 : kitchen island 03 : rice beach (fade in) 04 : rice beach 05 : mt. teapot (fade in) 06 : mt. teapot 07 : during fade in 08 : trigger map load (used with A79E + A7EE) 09 : stove canyon (fade in) 0A : stove canyon 0B : syrup castle (fade in) 0C : syrup castle 0D : parsely woods (fade in) 0E : parsely woods 0F : ss tea cup (fade in) 10 : ss tea cup 11 : sherbet land (fade in) 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) |
A7D1 | map scroll X |
A7D2 | map scroll Y |
A7D9 | wario X position on map |
A7DE | wario Y position on map |
A7E2 | joypad direction on map (similar to A7F1) |
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) |
A7EE | world to be loaded (see A79C) |
A7F1 | joypad direction on map (similar to A7E2) |
A804 | current course id |
A805-A807 | total player money |
A808 | hearts |
A809 | lives |
A80A | wario status. To be used with A956.
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 |
A956 | wario status (00 : big, 01 : small). To be used with A80A. |
A957 |
01 : move player to the right 02 : move player to the left 04 : scroll up 08 : scroll down |
A964-A965 | remaining level time |
A97A-A97B | level coins collected |
A984 | countdown timer (level intro, after dying) |
A98E-A98F | last door/warp used. |
A998 | wario flying countdown timer |
A9A7 | set to 1 before save. it prevent restarting the game by pressing A + B + Start + Select. |
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, ... |
AC87 | previous wario status, before being hit (see AC87). |
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 |
FF80 | joypad input
01 : A 02 : B 04 : select 08 : start 10 : right 20 : left 40 : up 80 : down |
FF81 | joypad input (delta) |
FF82 | indicate if vblank interrupt handler has just ended |
Internal Data for Wario Land: Super Mario Land 3
| |
---|---|