Language…
16 users online:  AmperSam, Cardioid, DanMario24YT, Dark Prince, DasFueller, Green, GRIMMKIN, Kwat1, Rykon-V73, Serena,  Shoujo, Skewer, SMW Magic, Tulip Time Scholarship Games, vktr,  yoshi3706 - Guests: 299 - Bots: 444
Users: 64,795 (2,373 active)
Latest user: mathew

SMW Memory Map

Displaying 100 out of 6551 addresses.

View: moderated | waiting (13)

Filter

Link
  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 65
  • 66
RAM Address Length Type Description Details
$7E1406 1 byte Camera This is set to #$80 if you bounce off of a springboard or a purple triangle (while on Yoshi, that is), and is cleared when touching the ground.
The game uses this, along with some other RAM addresses, to determine if the screen should scroll up with the player or not.
$7E1407 1 byte Player Player flying with cape phase.
Controls player pose as well (table at $00:CE79).
Valid Values
$7E1408 1 byte Player Used to index the cape gliding table at $00:D7D4 to see what the next step should be in the cape gliding phase. That value is (eventually) stored in $7E:1407.
#$00 = Make player rise.
#$01 = Make player sink (eventually swoop down).
#$02 = Holding off left/right button, make player sink, but not swoop down.
#$03 = Holding off left/right button, swooping down, make player sink less.
#$04 = Holding off left/right and X/Y buttons, terminate cape gliding.
$7E1409 1 byte Player Keeps track of the furthest stage the player has been diving during flight. Possible values are:
#$F8: the stage when not holding the right or left button
#$F4: Partially aiming towards floor
#$F0: Almost completely diving
#$C8: Diving completely, the stage where you cause an earthquake where you land.

When set to #$C8, the player will gain the large upwards boost (instead of the little normal boost) when cathing air.
$7E140A 1 byte Empty Empty. Cleared on reset, titlescreen load, overworld load and during part of the cape flight routine.
$7E140B 2 bytes Empty Empty. Cleared on reset, titlescreen load, overworld load, cutscene load and level load.
$7E140D 1 byte Flag Spin Jump flag. #$00 = normal jump (or on ground); any other value = spinjumping.
$7E140E 1 byte Sprites Layer 2 is touched flag, which is used in the Layer 2 sinking/rising upon touch scroll sprite. #$00 = Layer 2 not touched; #$01 = Layer 2 touched.
$7E140F 1 byte Flag Keeps incrementing in the Reznor battle room. It is used as a flag to determine that a different OAM index needs to be used for a smoke sprite or a puff of smoke, to make sure there's no conflict with the platform tiles.
However, since this keeps incrementing and thus sometimes hits #$00 again, it can occur that a platform tile disappears for one frame when a smoke sprite is shown.
$7E1410 1 byte Flag Yoshi has wings flag #1 (the other is $7E:141E). #$01 would mean that the player with a fire flower powerup can shoot fireballs while on Yoshi (never occurs in the game), whereas #$02 indicates Yoshi has wings.
Note that this one only handles graphics of the wings (value #$02), and that it disables the Yoshi tongue action (value #$01).
The value from $7E:141E is stored here each frame.
$7E1411 2 bytes Camera Vertical and horizontal scroll settings from header:
$1411: Horizontal scroll settings from header flag. #$00 = Disable; #$01 = Enable.
$1412: Vertical scroll settings from header. #$00 = Disable; #$01 = Enable; #$02 = Enable if flying/climbing/etc.

Note that setting these to zero will merely disable the screen from scrolling within the player, as well checking the scroll limits to prevent it from escaping the level boundaries. It is disabled by auto-scroll sprite generators to prevent the code at $00F713 and $00F7F4 from interfering with the generator from moving the screen.
$7E1413 1 byte Misc. Horizontal scroll setting for Layer 2. #$00 = none; #$01 = constant; #$02 = variable.
$7E1414 1 byte Misc. Vertical scroll setting for Layer 2.
Lunar Magic v3.00 and above add values 04-07; the original game and older versions only allow 00-03.
Valid Values
$7E1415 2 bytes Empty Empty. Cleared on reset, titlescreen load, overworld load and cutscene load.
$7E1417 2 bytes Camera The base vertical offset of Layer 2 from Layer 1, when vertical scrolling is enabled for it. This is calculated based on the type of vertical scrolling set in $1414, using the initial FG/BG positions stored to $1C and $20:

If $1414 is #$01 (constant), then this is: $20 - $1C
If $1414 is #$02 (variable), then this is: $20 - ($1C / 2)
If $1414 is #$03 (slow), then this is: $20 - ($1C / 8)
$7E1419 1 byte Sprites How sprites enter pipes with the player. This handles carried sprites and riding yoshi, and is always set regardless whether or not the player is carrying a sprite and whether or not is riding yoshi. When this RAM is set to any non-zero and the sprite is being carried and/or yoshi is being ridden on, they're placed behind layer 1 and yoshi's tongue is not shown (when licking).
  • $01 = Horizontal pipes (duck a little on yoshi and carrying sprites facing left or right).
  • $02 = Vertical pipes (face the screen).
  • $FF = Don't change image, only go behind layer (shooting out of slanted pipe). Note that this will probably work with all values #$03-#$FF.


Note: Yoshi always show his pipe animation pose regardless if the player is mounted on Yoshi or not, consider using this patch to fix it.
$7E141A 1 byte Counter Counter that increments every time a new level is entered (with a door or pipe) - this enables you to distinguish the 'mother'-level from sublevels, as this always is zero at the start of a level. Note: Don't enter a sublevel within a level 256 times, or a glitch will occur.
$7E141B 1 byte Flag Determines if you have played the bonus game before in the same level before. If it is non-zero (meaning you've played the game before), all blocks in the coin game will always be incorrect.
Note that if you don't hit a single block the first time playing the game, then this will be zero, and you can play the game again.
$7E141C 1 byte Flag What type of goal tape has just been hit, for deciding which event to activate after the goal walk is finished.
Although this value will still be written in vertical levels, it has no effect due to the goal walk not occurring.
Valid Values
$7E141D 1 byte Flag Whether "Mario/Luigi Start!" should be shown or not. Used for castle entrances and the likes.
#$00 = enable; #$01 = disable.
$7E141E 1 byte Yoshi Yoshi has wings flag. The only possible value for this address in the original is #$02, but setting to #$01 will allow the player to throw fireballs if on Yoshi, even if they don't have fire power. This will, however, disable flight as well as Yoshi's tongue attack.
It's recalculated each frame.
$7E141F 1 byte Flag Disable No Yoshi Intro flag.
#$00 = regular behavior (depending on the tileset, the No Yoshi Intro is either shown or not).
#$80 = the No Yoshi Intro is disabled, regardless of tileset.
$7E1420 1 byte Counter Yoshi Coins collected. Does not affect amount of Yoshi Coins on status bar.
$7E1421 1 byte Counter Counter used by the invisible 1-Up checkpoints. Starts at zero, and increments with one every time the next checkpoint has been touched. Resets to zero when a checkpoint has been touched that can't be checked yet, for example checkpoint #2 when #1 hasn't been touched yet.
$7E1422 1 byte Counter Amount of Yoshi Coins to display on the status bar. Values #$01 through #$04 are the values where it will display that number of Yoshi Coins, otherwise none are displayed.
$7E1423 1 byte Misc. Indicates which switch palace switch is being pressed.
Its value also varies depending on which side of the switch was pressed. (Left side -> it uses the first value, right side -> it uses the second.)
01/02 = green, 05/06 = yellow, 09/0A = blue, 0D/0E = red.
The bottom halves also set this, but this doesn't trigger anything.
$7E1424 1 byte Timer Used to determine whether or not the victory walk should display the number of collected bonus stars. If it is zero (see also $7E:1900), the amount of collected bonus stars is not displayed. Otherwise, it is. $7E:1900 is stored to it, causing this address to decrement as well. Also note that this value does NOT have any effect on the rest of the bonus text.
$7E1425 1 byte Flag Bonus game flag. If anything non-zero, the bonus game will commence after the level has been cleared.
$7E1426 1 byte Misc. Message box trigger. #$00 = none; #$01 = message 1; #$02 = message 2; #$03 = Yoshi thanks message.
$7E1427 1 byte Misc. Bowser clown car image.
#$00 = Regular.
#$01 = Blinking.
#$02 = Hurt.
#$03 = Angry face.
Higher values makes it cycle through the above ones.
$7E1428 1 byte Sprites Used as an index for the frames of the Bowser propeller. Valid frames range from #$00-#$03.
$7E1429 1 byte Sprites Used to calculate which palette to use for Bowser. Valid values range from #$00-#$07. This value is calculated based on the Mode 7 scale factor, with the table at $03:A265.
$7E142A 6 bytes Camera A set of RAM addresses used to determine the horizontal static camera region, which defines the size and position of the area in which Mario's movement should not cause the screen to scroll horizontally. There are three different 16-bit values involved in this:
- $142A: The origin position of the region.
- $142C: The left edge of the region (by default equal to $142A - #$000C).
- $142E: The right edge of the region (by default equal to $142A + #$000C).

It is worth noting that writing to $142C/$142E will not actually do anything, as those values are automatically recalculated every frame (at $00F6E0).
$7E1430 1 byte Blocks Lowest tile that's solid for sprites from below (in addition to 111 through 16D). It's on page 1.
$7E1431 1 byte Blocks Highest tile that's solid for sprites from below (in addition to 111 through 16D) plus 1. It's on page 1.
$7E1432 1 byte Flag Directional coin activation flag. This is set to #$01 when the sprite changes the music, and it is used to prevent the player being able to spawn any more than one instance of the sprite in an entire level, as it carries across sublevels.
$7E1433 1 byte Timer Scaling factor of the circle for the windowing HDMA effects used with the titlescreen, level ending and keyhole.
The closer to zero, the smaller the circle.
Loads titlescreen when value becomes #$F0 or higher.
$7E1434 1 byte Timer Set to #$30 to end level via keyhole. Works as a timer of some sorts, to indicate how long the keyhole sequence should last - but in SMW, this value is never set to anything other than #$00 or #$30. Also, this address freezes player and sprites by storing its value to $7E:13FB, resp. $7E:009D.
$7E1435 1 byte Flag Keyhole growing/shrinking flag. #$00 = growing; #$01 = shrinking.
$7E1436 2 bytes Misc. Used for multiple purposes.
Keyholes use it as the X position of the keyhole animation.
The Iggy/Larry boss fight uses it to control the player's X position when on the ground.

The overworld also uses it when spawning switch palace blocks.
$1436 is used as the current base index to the tables at $7EB900; it increments by 0x08 with each set of blocks up to 0x28, at which point it resets to 0x00.
$1437 is used as a timer for waiting between spawning each set of switch blocks.
$7E1438 2 bytes Misc. Used for multiple purposes.
Keyholes use it as the Y position of the keyhole animation.
The Iggy/Larry boss fight uses it to control the player's Y position when on the ground.

The overworld also uses it when spawning switch palace blocks.
$1438 is the base OAM index of the current block set. Increments by 0x20 with each set of blocks, then resets to 0x00 once it reaches 0xA0.
$1439 is a counter for how many sets of blocks have been spawned. It stops spawning at 0x08, but keeps counting up to 0x0C, at which point the spawn routine ends.
$7E143A 1 byte Flag When set to a value that is not zero, this will make the game overwrite tiles #$00 through #$05, #$10 through #$15, #$4A through #$4F and #$5A through #$5F with data it gets from $7F:977B-$7F:9A7A. These are uploaded during V-blank (NMI).
Is used to write the graphics for "MARIO START!", "LUIGI START!", "TIME UP!", "GAME OVER" and "BONUS GAME".
$7E143B 1 byte Misc. Which death message must be displayed. #$14 = "GAME OVER"; #$1D = "TIME UP!".
$7E143C 1 byte Timer Death message animation timer. Amount of time until the two segments come together, such as with "GAME OVER", where the animation goes like this: GAME --> <-- OVER.
Is set to #$C0, decrements by four at a time.
$7E143D 1 byte Timer Timer for the "TIME UP!"/"GAME OVER" death message - how long it should stay active after the two words have come together. Is set to #$FF, decrements by one at a time.
$7E143E 1 byte Sprites Scroll command number.

Also used during castle cutscenes. Iggy/Ludwig/Roy use it to indicate the switch was hit, Wendy uses it to indicate when the castle is fully erased, and Morton/Lemmy/Larry use it for deciding how to move the castle.
Valid Values
$7E143F 1 byte Sprites Scroll command number used on layer 2. This address serves as a complement to $7E:143E. This address is set by the init routine of the layer one of each scroll address.

Also used during castle destruction cutscenes as a timer for animations, as well as a few miscellaneous wait timers.
$7E1440 1 byte Sprites The starting Y-position of the current scroll sprite, left-shifted twice and with the extra bits still added. (Format: --YYYYEE, where Y = Y position and EE = extra bits).
Regularly adjusted inside the scroll sprites. It can be particularly useful for determining what type of scrolling should be applied with this scroll sprite.
This address is used for Layer 1 scrolling.

Also used during the castle destruction cutscenes as a frame number for various animations.
$7E1441 1 byte Sprites The starting Y-position of the current scroll sprite, left-shifted twice and with the extra bits still added. (Format: --YYYYEE, where Y = Y position and EE = extra bits).
Regularly adjusted inside the scroll sprites. It can be particularly useful for determining what type of scrolling should be applied with this scroll sprite.
This address is used for Layer 2 scrolling.

Also used during Iggy, Ludwig, and Roy's castle destruction scenes as a timer for the explosion.
$7E1442 1 byte Misc. Various flags used in the Yoshi's House portion of the credits scene. Used values:
#$00 = Player and companion walks in
#$01 = Various Yoshis duck and watch in excitement.
#$02 = Eggs are shattering, one by one.
#$03 = Yoshis get up and "THANK YOU" appears on Yoshi's house.
#$04 = Yoshis jump in excitement, then screen fades out.
24-bit pointers for these actions are located at SNES $0C:A1DE.

Also used in the castle destruction sequence as a pointer to what actions should be taken. Each castle destruction has its own pointer table for this address. $0C:C9A5 is a pointer table which points the the pointer tables of each castle.

Used in scroll sprites for tracking what type of scroll it is currently doing, usually depending on $7E:1440/$7E:1441. This is the Layer 1 counterpart of $7E:1443.
Castle Sequences Actions
$7E1443 1 byte Sprites Used in scroll sprites for tracking what type of scroll it is currently doing, usually depending on $7E:1440/$7E:1441. This is the Layer 2 counterpart of $7E:1442.

It's also a castle destruction sequence text timer. Starts at #$FF when the 'Welcome' music starts, and a new line of text appears every #$20 frames after that. (#$DF, #$BF, #$9F, etc.)
$7E1444 1 byte Misc. Layer 1 scroll command pointer/timer. This timer serves no defined purpose on itself, but is generally used for waiting a specific number of frames before updating scroll properties such as speed. For example, with the Layer 1 auto-scroll, this value being #$00 indicates the auto-scroll has finished.

Also used during the castle destruction scenes as an indicator to show the white surrender flag.

Also used as a flag on the overworld to indicate if the player is on a level tile. Value is #$00 when on a path tile, and #$01 when on a level tile.
$7E1445 1 byte Sprites Layer 2 scroll command pointer/timer. This timer serves no defined purpose on itself, but is generally used for waiting a specific number of frames before updating scroll properties such as speed.

Also used during the castle destruction cutscenes for various purposes. Lemmy uses it as a timer for the hammer animation, Ludwig and Roy uses it as a counter for the ? marks (0-3 for Roy and 4-7 for Ludwig), and Wendy uses it to decide how the broom should move.
$7E1446 2 bytes Sprites Layer 1 X speed used in the scrolling codes.
#$0001-#$7FFF = move left; #$8000-#$FFFF = move right. #$0000 means there is no movement.
Effectively, it's the X speed to give the player when they're touching the side of a screen, during a level which does not have regular Layer 1 scrolling. Values are different depending on the type of (auto-)scroll.
This value divided by #$10/#16 is stored into $7E:007B.

Additionally used during the castle destruction cutscenes for various purposes. $1446 is used in Morton/Roy's scenes to show the huff cloud at the end and as the Y position of the broom in Wendy's scene.
$1447 is used in Ludwig's scene as the vertical speed of the castle as well as a counter for the dust animation when it hits the hill, and in Larry's as the vertical speed of the castle as well as a timer for when it crashes.
$7E1448 2 bytes Sprites Layer 1 Y speed used in the scrolling codes.
#$0001-#$7FFF = move upwards; #$8000-#$FFFF = move downwards. #$0000 means there is no movement.

$1449 specifically is also used as a timer in Wendy's castle destruction scene for pausing between shifting broom directions or moving Mario to the side.
$7E144A 2 bytes Sprites Layer 2 X speed used in the scrolling codes.
#$0001-#$7FFF = move left; #$8000-#$FFFF = move right. #$0000 means there is no movement.

$144A specifically is also used in the castle destruction cutscenes to indicate what sprite Mario is holding, if any, 00 indicates the egg, 01 indicates nothing, and anything greater indicates something else (e.g. the hammer or broom).
$7E144C 2 bytes Sprites Layer 2 Y speed used in the scrolling codes, particularly in the Layer 2 scroll command (sprite EA).
#$0001-#$7FFF = move upwards; #$8000-#$FFFF = move downwards. #$0000 means there is no movement.

$7E:144D also controls the time until you can press a button to end the castle destruction sequence (after all text has been generated on-screen).
$7E144E 2 bytes Sprites This is used internally by the scroll sprites for updating the layer 1 X position. In particular, the routine at $05:C4F9 uses it to add the current speed to.

Furthermore, $7E:144E is used on the overworld to determine after how many frames the player should face the screen again after settling on a level tile.

$7E:144E is also used in the credits, as a timer that is set to #$06 and decrements every frame. If this is zero, bit 0 of $7E:144F will get flipped, causing Peach's image during the walking phase to bounce.

$7E:144F is a flag that makes Peach bounce during the time she walks in the credits.
#$00 = Peach frame 1, upright; #$01 = Peach frame 2, one pixel lower.
$7E1450 2 bytes Sprites This is used internally by the scroll sprites for updating the layer 1 Y position. In particular, the routine at $05:C4F9 uses it to add the current speed to.
$7E1452 2 bytes Sprites This is used internally by the scroll sprites for updating the layer 2 X position. In particular, the routine at $05:C4F9 uses it to add the current speed to.
$7E1454 2 bytes Sprites This is used internally by the scroll sprites for updating the layer 2 Y position. In particular, the routine at $05:C4F9 uses it to add the current speed to.
$7E1456 1 byte Sprites Used by the scroll sprites as an index for what layer to process. #$00 is Layer 1, and #$04 is Layer 2. The RAM addresses indexed include the entire area of $7E:1446-$7E:1455.
$7E1457 1 byte Flag This flag is set and used to determine whether to upload the multicolor Yoshis in the ending cutscene. The surprised Yoshi image (when the eggs are hatching) will appear regardless of this address, but the jumping Yoshi images require this flag to be #$01.
If anything else, they will not be drawn on-screen.
$7E1458 2 bytes Misc. Used in the Layer 3 images to control the X speed of Layer 3. This address is primarily used for the tileset specific images (not #$01 or #$03), for example the goldfish and the ghost house fog.
$7E145A 2 bytes Misc. Used in the Layer 3 images to control the Y speed of Layer 3. This address is used primarily for the rising/falling Layer 3 tide.

$7E145B is also used during the credits sequence for different purposes. During the Yoshi House portion, it's used as a counter for the number of Yoshi eggs hatched. It's also used as a timer to transition from the Yoshi House cutscene to the enemy roll, and subsequently as a timer for each enemy credit screen.
$7E145C 2 bytes Misc. This is used internally by Layer 3 images for updating the Layer 3 X position, which is used in (for example) the goldfish and ghost house fog.
It's also used as accumulating fraction bits for the Layer 3 Y speed during the rising/sinking Layer 3 tide.

$7E:145D is also used as a timer to determine when to move to the next game mode after the Yoshi house credits scene. Is set to #$F0 the moment all eggs hatched.
$7E145E 2 bytes Misc. Used by Lunar Magic to hold various settings, mainly related to Layer 3:

$145E: yyyyyose
- yyyyy: Initial Layer 3 Y position. Equal to the value shown in the "Initial Y Position/Offset" box divided by 2.
- o: Make sprites beyond level boundaries interact with air instead of water.
- s: Enable Layer 3 scroll sync fix.
- e: Enable advanced Layer 3 bypass settings.

$145F: yyyyxxxx
- yyyy: Vertical Layer 3 scroll setting.
- xxxx: Horizontal Layer 3 scroll setting.

Empty in original game. Cleared on reset, titlescreen load, overworld load and cutscene load.
$7E1460 1 byte Misc. Layer 3 vertical scrolling direction. #$00 = downwards; #$01 = upwards.
Also used by Lunar Magic when a level is set for auto layer 3 vertical scrolling, in which case it combines with $7E:1461 to hold Y accumulation bits.
$7E1461 1 byte Empty Empty. Cleared on reset, titlescreen load, overworld load and cutscene load.
This byte functions as the "high byte" of $7E:1460. SMW does not actually use this byte, however it is overwritten during level load (see $05:BE92).
Cleared on reset, titlescreen, overworld, level (with the exception of boss rooms) and cutscene load.
$7E1462 2 bytes Misc. Layer 1 X position, next frame.
Much similar to $7E:001A, maintaining the exact same values, with the difference being the usage of their values.
This is more notable in auto-scroll commands, for example, if $7E:1462 were to remain static while there was a Layer 2 auto-scroll going, the image would stay, but the level would move.
Is also used for temporary storage to determine how much the screen has moved horizontally in the current frame. ($7E:001A - $7E:1462 = $7E:17BD)

Also used during the credits scene for the second layer 1 X position, where the output is separated in two halves, each with their own scrolling.
$7E1464 2 bytes Misc. Layer 1 Y position, next frame.
Much similar to $7E:001C.
Is also used for temporary storage to determine how much the screen has moved vertically in the current frame. ($7E:001C - $7E:1464 = $7E:17BC)
$7E1466 2 bytes Misc. Layer 2 X position, next frame.
Much similar to $7E:001E.
Is also used for temporary storage to determine how much the screen has moved horizontally in the current frame. ($7E:001E - $7E:1466 = $7E:17BF)
$7E1468 2 bytes Misc. Layer 2 Y position, next frame.
Much similar to $7E:0020.
Is also used for temporary storage to determine how much Layer 2 has moved vertically in the current frame. ($7E:0020 - $7E:1468 = $7E:17BE)
$7E146A 2 bytes Misc. Used to determine how much layer 3 has moved horizontally in the current frame. This address is only used during the credits while displaying the enemies for the windowing HDMA.
Also used by Lunar Magic to hold the Layer 3 Initial X position/offset.
$7E146C 2 bytes Misc. When the level is using the advanced Layer 3 bypass, Lunar Magic (v3.10+) uses this to hold the initial Layer 3 Y position/offset (multiplied by #$10). This value is then used during the level to calculate the position of Layer 3 after scrolling.
$7E146E 2 bytes Empty Empty. Cleared on reset, titlescreen load, overworld load and cutscene load.
$7E1470 1 byte Flag Carrying something flag. Very similar to $7E:148F, with the difference that, if this flag is set, the player's graphics don't change, and throw blocks can still be picked up as long as $7E:148F remains zero. If used in a carryable custom sprite to check if the player is already carrying something, definitely combine it with $7E:148F to assure there are no exceptions.
#$00 = Carrying nothing; #$01 = carrying something.
$7E1471 1 byte Misc. Whether the player is on top of a solid sprite, and what kind of sprite that is.

#$01 = Standing on top of a floating rock, floating grass platform, floating skull, Mega Mole, carrot top lift, etc. This one calculates the player's position based on the next frame.
#$02 = Standing on top of a springboard, pea bouncer. This one calculates the player's position based on the next frame.
There's a check at $00:D60B so that the player can hold the jump button pressed for a longer while to jump higher.
#$03 = Standing on top of a brown chained platform, gray falling platform. This one calculates the player's position based on the current frame.
$7E1472 1 byte Sprites Left window X position of the top of the spotlight. It's always #$78. This is the value stored that is stored to $7E:147A every four frames.
$7E1473 1 byte Empty Empty. Cleared on reset, titlescreen load and overworld load.
$7E1474 1 byte Sprites Right window X position of the top of the spotlight. It's always #$87. This is the value that is stored to $7E:147C every four frames.
$7E1475 1 byte Empty Empty. Cleared on reset, titlescreen load and overworld load.
$7E1476 1 byte Sprites Left window X position of the extreme bottom of the spotlight.
Please note that this position is for the imaginary scanline #$FF, whereas there are normally only #$E0 scanlines on a screen.
That means that the value here is never equal to the left window X position on the very bottom of the screen, unless $7E:1476 is equal to $7E:1472, forming a straight vertical line.
$7E1477 1 byte Empty Empty. Cleared on reset, titlescreen load and overworld load.
$7E1478 1 byte Sprites Right window X position of the extreme bottom of the spotlight.
Please note that this position is for the imaginary scanline #$FF, whereas there are normally only #$E0 scanlines on a screen.
That means that the value here is never equal to the right window X position on the very bottom of the screen, unless $7E:1478 is equal to $7E:1474, forming a straight vertical line.
$7E1479 1 byte Empty Empty. Cleared on reset, titlescreen load and overworld load.
$7E147A 1 byte Sprites In the spotlight code, the left window X position of each scanline is calculated and temporarily stored here, after which this address stores its value to an even byte of $7E:04A0.
What is left at the end of every frame is the left window X position on the very bottom scanline.
This is used once in every four frames, probably to reduce lag.
$7E147B 1 byte Empty Empty. Cleared on reset, titlescreen load and overworld load.
$7E147C 1 byte Sprites In the spotlight code, the right window X position of each scanline is calculated and temporarily stored here, after which this address stores its value to an odd byte of $7E:04A0.
What is left at the end of every frame is the right window X position on the very bottom scanline.
This address used once in every four frames, probably to reduce lag.
$7E147D 1 byte Empty Empty. Cleared on reset, titlescreen load and overworld load.
$7E147E 1 byte Sprites Used by the spotlight to calculate whether or not to move the left window on a particular scan line into the direction of the resulting X position on the bottom left.
It works by adding the width from $7E:1480 to itself (starting at #$00 initially), and if the resulting value is higher than #$CF (or even overflows, setting the carry bit), the left window moves a pixel into the direction of the resulting X position on the bottom left.
$7E147F 1 byte Sprites Used by the spotlight to calculate whether or not to move the right window on a particular scan line into the direction of the resulting X position on the bottom right.
It works by adding the width from $7E:1481 to itself (starting at #$00 initially), and if the resulting value is higher than #$CF (or even overflows, setting the carry bit), the right window moves a pixel into the direction of the resulting X position on the bottom right.
$7E1480 1 byte Sprites Width between the top left window ($7E:1472) and the bottom left window ($7E:1476) of the spotlight. This value is always positive, and its sign flag is saved at $7E:1484.
$7E1481 1 byte Sprites Width between the top right window ($7E:1474) and the bottom right window ($7E:1478) of the spotlight. This value is always positive, and its sign flag is saved at $7E:1485.
$7E1482 1 byte Flag Used as a flag in the spotlight code to skip initialization of the top left, top right, bottom left, and bottom right RAM addresses.
#$00 = Run initialization; #$01 = Do not run initialization.
$7E1483 1 byte Sprites Used as a flag for the current direction the spotlight is moving. #$00 = spotlight is moving right; #$01 = spotlight is moving left.
$7E1484 1 byte Sprites A flag used in the spotlight code to determine which side of the top left window border the bottom left window border is on.
#$00 = bottom left is more to the left; #$01 = bottom left is on the same position, or more to the right.
$7E1485 1 byte Sprites A flag used in the spotlight code to determine which side of the top right window border the bottom right window border is on.
#$00 = bottom right is more to the left; #$01 = bottom right is on the same position, or more to the right.
$7E1486 1 byte Sprites Unused, set to #$01 in the dark room spotlight sprite. Change $03:C544 to EA EA EA (NOP #3) to change this into free RAM. If that patch is performed, this address is safe for other uses. Cleared on reset, titlescreen load, overworld load and cutscene load.
$7E1487 4 bytes Empty Empty. Cleared on reset, titlescreen load and overworld load.
  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 65
  • 66