AddressDescriptionTypeSize
$7E0055Direction of scrolling for Layer 1. #$00 = left (or up); #$02 = right (or down). Used to index the various camera tables at $7E0045 to $7E0048 and $7E004D to $7E0050. When handling routine $00F70D, it is set to $00 if the player's on-screen X position is less than the value of $142A and $02 otherwise. This is used to determine which side to enable spawning sprites depending which side the player is on compared to $142A. It is also temporarily set to #$01 during level load for loading onscreen sprites.Camera1
$7E0056Direction of scrolling for Layer 2. #$00 = left (or up); #$02 = right (or down). Used to index the various camera tables at $7E:0049 through $7E:004C and $7E:0051 through $7E:0054.Camera1
$7E005EIn horizontal levels, used as the level's width in screens, i.e. the screen number (plus 1) at which the camera should stop scrolling rightwards. Equivalent to the "number of screens" dropdown in Lunar Magic's "Change Properties in Header" dialogue. Not used in vertical levels, where it is always set to 01; see [url=https://smwc.me/m/smw/ram/7E005F]$5F[/url] instead. Also set to 00 in Ludwig and Reznor's boss rooms. Instead, those rooms used a fixed width of 1.5 screens.Camera1
$7E005FIn vertical levels, used as the level's height in screens, i.e. the screen number (plus 1) at which the camera should stop scrolling downwards. Equivalent to the "number of screens" dropdown in Lunar Magic's "Change Properties in Header" dialogue. Not used in horizontal levels, where it is always set to 01; see [url=https://smwc.me/m/smw/ram/7E005E]$5E[/url] instead.Camera1
$7E13F1Vertical scrolling unlocked flag. When in a level that has its vertical scroll setting set to "No Vertical Scroll at Bottom unless Flying/Etc", this flag controls if the camera is currently locked at the bottom of the level (zero) or unlocked (non-zero). For managing if vertical scrolling is enabled in general, see [url=https://smwc.me/m/smw/ram/7E1411]$1412[/url] instead.Flag1
$7E1400Controls if the camera should move to be at the proper place compared to the player. If this is set, L and R are ignored. #$00 = normal case, don't move camera automatically, keep it in place (assuming L/R aren't used). #$08 = move camera right. #$0A = move camera left.Camera1
$7E142AA 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 (calculated as $142A - #$000C). - $142E: The right edge of the region (calculated as $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 [url=https://smwc.me/m/smw/rom/00F6E0]$00F6E0[/url]).Camera6
$7E1B7CAccumulating fraction bits for the Layer 1 X speed on the overworld, used when the camera returns to the player after having been in free scrolling mode. This address handles incrementing the Layer 1 X position when it overflows.Overworld1
$7E1B7DAccumulating fraction bits for the Layer 1 Y speed on the overworld, used when the camera returns to the player after having been in free scrolling mode. This address handles incrementing the Layer 1 Y position when it overflows.Overworld1
$7E1DF0$7E:1DF0 - X position of the camera when using the overworld scroll function, low byte. $7E:1DF1 - X position of the camera when using the overworld scroll function, high byte. These values are only used to determine which way the camera should go to get back to the player.Overworld2
$7E1DF2$7E:1DF2 - Y position of the camera when using the overworld scroll function, low byte. $7E:1DF3 - Y position of the camera when using the overworld scroll function, high byte. These values are only used to determine which way the camera should go to get back to the player.Overworld2