AddressDescriptionTypeSize
$7E0F5EEmpty, cleared on reset and titlescreen load. This table was probably meant to function as a miscellaneous cluster sprite table (and note that PIXI does have defines to treat it as one), but the original game never actually uses it.Empty20
$7E1783Shooter number. #$00 = None, #$01 = Bullet Bill shooter, #$02 = Torpedo Launcher. Pixi uses the most significant bits of this table to hold the extra bits of the shooter.Sprites8
$7E18B9Generator type that is currently active. #$00 = None, #$01-#$0F = generators CB-D9. The pointers for this address are located at $02:B00C. Pixi uses the most significant bits of this address to hold the extra bits of the generator.Sprites1
$7E1938Sprite load status within the level, used as a flag to determine whether to respawn a sprite when its spawn position is scrolled onscreen. A sprite will only respawn if its value in the table is 00. Currently-loaded sprites can retrieve their index to the table via [url=https://smwc.me/m/smw/ram/7E161A]$161A[/url]. Shooters similarly have a table for this at [url=https://smwc.me/m/smw/ram/7E17B3]$17B3[/url]. The table is initialized to zeros on level load, indicating that all sprites should be able to spawn. When a sprite is spawned, it sets its entry to 01, and when it despawns offscreen without dying, it's set back to 00. However, if the sprite is instead erased by being killed, its entry will remain 01 to prevent it from respawning. The original game has an issue where only the first 64 bytes of actually get reset when entering a new subroom, which meant that if there were enough sprites in a level, sprites in sublevels could be blocked from spawning at all. Lunar Magic fixes this to reset the full 128-byte table. PIXI expands the table even further to 256 bytes by relocating it to [url=https://smwc.me/m/smw/ram/7FAF00]$7FAF00[/url], though as a safeguard whichever one is in use can be accessed via the !1938 define. Prior to v1.41, the relocation could be disabled via the !Disable255SpritesPerLevel define, but this is now no longer supported. Instead, this space is repurposed as a series of miscellaneous tables for various sprite types; see details for a breakdown.Sprites128
$7FAB10Custom sprite table used by Pixi. It holds the extra bits of a sprite.Sprites12
$7FAB1CCustom sprite table used by Pixi. Using during sprite loading to signal that the sprite being loaded is custom. Used for custom generators, shooters and normal sprites.Sprites12
$7FAB28Custom sprite table used by Pixi. It holds the first extra property byte of the sprite.Sprites12
$7FAB34Custom sprite table used by Pixi. It holds the second extra property byte of the sprite. The highest two bits are used by Pixi to determine if the sprite should execute the original code for sprite states other than 8 (main): if the highest bit is set, the original code will be skipped, while if the second highest bit is set, the original code will be executed and then the custom code.Sprites12
$7FAB40Custom sprite table used by Pixi. It holds the first extra (extension) byte of the sprite.Sprites12
$7FAB4CCustom sprite table used by Pixi. It holds the second extra (extension) byte of the sprite.Sprites12
$7FAB58Custom sprite table used by Pixi. It holds the third extra (extension) byte of the sprite.Sprites12
$7FAB64Custom sprite table used by Pixi. It holds the fourth extra (extension) byte of the sprite.Sprites12
$7FAB9ECustom sprite table used by Pixi. It holds the custom sprite number, as defined in the list.txt file, and is a copy of [url=https://smwc.me/m/smw/ram/7E009E]$9E[/url] for vanilla sprites. To get the act as of a custom sprite, use $9E instead.Sprites12
$7FAC00Custom shooter sprite table used by Pixi. It holds the first extra byte of the shooter.Sprites8
$7FAC08Custom shooter sprite table used by Pixi. It holds the second extra byte of the shooter.Sprites8
$7FAC10Custom shooter sprite table used by Pixi. It holds the third extra byte of the shooter.Sprites8
$7FAF00Custom sprite table used by Pixi. This serves the same purpose as [url=https://smwc.me/m/smw/ram/7E1938]$1938[/url], but it supports up to 255 sprites per level. Not used if !Disable255SpritesPerLevel is set. In custom sprites it's recommended to use the !1938 define, since it'll be mapped to either $1938 or $7FAF00 depending on the Pixi configuration (pay attention that in one case it's absolute, in the other it's long!).Sprites256