Castlevania III: Dracula's Curse/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Added audio engine mappings for AkuDen. Some bytes still missing or incorrect, in all honesty. Better than nothing!)
mNo edit summary
 
(32 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{rammap|game=Castlevania III}}
{{rammap}}
  Address    Size    Description
  Address    Size    Description
  --------  ----    -----------
  --------  ----    -----------
  $0017              Repeat Counter
  $0017              Repeat Counter
  $0018              System State
  $0018              System State
                             00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;
                             ''00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;''
                             05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug;
                             ''05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug;''
                             08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry;
                             ''08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry;''
                             0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug
                             ''0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug''
  $0019              System Substate
  $0019              System Substate
  $001A              Step Counter
  $001A              System Step Counter
$001B              Updating PPU ''(prevents stack overflow by skipping game logic)
  $001C              Blackout Delay
  $001C              Blackout Delay
$001D              X Register Backup
$001E              Pausing Disabled ''(always 00?)
  $001F              Randomizer
  $001F              Randomizer
$0020              OAM Batch
$0021              Current PROM Bank
$0022              Previous PROM Bank
$0023              PROM Bank Backup ''(used by some functions)''
$0024              Bank Changed ''(for debugging probably)''
$0025              Nametable Mapping
  $0026      #02    Controller Buttons Pressed
  $0026      #02    Controller Buttons Pressed
                             01 = right; 02 = left; 04 = down; 08 = up;
                             ''01 = right; 02 = left; 04 = down; 08 = up;
                             10 = start; 20 = select; 40 = B; 80 = A
                             ''10 = start; 20 = select; 40 = B; 80 = A''
  $0028      #02    Controller Buttons Held
  $0028      #02    Controller Buttons Held
  $002A              Game State
  $002A              Game State ''(set $006B to 00 before changing)''
  $002B              User Paused (toggled by Start button)
                            ''00 = initialize room; 01 = initialize nametables; 02 = load horizontal room;
                            ''03 = horizontal gameplay; 04 = load vertical room; 05 = vertical gameplay;
                            ''06 = stair transition start; 07 = stair transition fade; 08 = door transition;
                            ''09 = initialize fog; 0a = fog parallax; 0b = horizontal partner swap;
                            ''0c = vertical partner swap; 0d/0e = <CUT CONTENT>; 0f = detect automatic stairs;
                            ''10 = automatic stair transition; 11 = tally score; 12 = <UNUSED>;
                            ''13 = flee Aquarius; 14 = initialize flooding; 15 = load flood room;
                            ''16 = flood room gameplay; 17 = map transition; 18 = autowalk to door;
                            ''19 = powering up; 1a = freeze water; 1b = thaw ice; 1c = Bone King escape;
                            ''1d = Aquarius ruptured; 1e = initialize map transition; 1f = map transition exit
  $002B              User Paused ''(toggled by Start button)
  $002C              Boss Defeated
  $002C              Boss Defeated
$002D              Entry End ''(valid in Name screen, garbage in Pass screen)
  $002E              Checkpoint
  $002E              Checkpoint
  $002F              Grant Defeated
  $002F              Grant Defeated
Line 27: Line 47:
  $0035              Lives   
  $0035              Lives   
  $0036      #03    Score   
  $0036      #03    Score   
$0039              Main Character ''(change this to not always be Trevor)
  $003A              Partner   
  $003A              Partner   
                             00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None
                             ''00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None
  $003B              Partner Active  
  $003B              Partner Active  
  $003C              Player's Health
  $003C              Player's Health
                             40 = full
                             ''40 = full
  $003D              Boss Health  
  $003D              Boss Health  
  $003E              Score Target (for extra life)
  $003E              Score Target ''(for extra life)
  $003F              Default Drawing State (write to $006D)
  $003F              Default Drawing State ''(write to $006D)
$0040              Scanline IRQ
$0041              Scanline Target
$0042              Default Vertical Scanline Target ''(write to $0089)
$0043              Scanline Next Target
$0044      #02    Draw State Address
  $0046      #08    CHR Banks
  $0046      #08    CHR Banks
  $004E              Hard Mode CHR Bank (overwrites $0049)
  $004E              Hard Mode CHR Bank ''(overwrites $0049)
  $0056      #02    View Position (little endian)  
$0050      #02    Tile Assembly Starting Address
$0052      #02    Tile Assembly Left Address
$0054      #02    Tile Assembly Right Address
  $0056      #02    View Position ''(little endian)  
  $0058              View Subpixel Position
  $0058              View Subpixel Position
  $0059              Left Spawn Area
  $0059              Left Spawn Area
  $005A              Right Spawn Area
  $005A              Right Spawn Area
  $005C              Tile Assembly Row Iterator
$005B              Tile Assembly Count Left
  $005C              Tile Assembly Count Right
  $005D      #02    Tile Assembly Pointer
  $005D      #02    Tile Assembly Pointer
  $005F      #02    Pallet Map Pointer
  $005F      #02    Pallet Map Pointer
Line 48: Line 78:
  $0064              Transition Timer
  $0064              Transition Timer
  $0065              Scroll Direction
  $0065              Scroll Direction
                             00 = left; 01 = right; 02 = unchanged
                             ''00 = left; 01 = right; 02 = unchanged
  $0066              View Refreshed Position
  $0066              View Refreshed Position
  $0067              Update View
  $0067              Update View
  $0068              Room Orientation
  $0068              Room Orientation
                             00 = horizontal; 80 or 81 = vertical; 82 = scroll up;
                             ''00 = horizontal; 80 or 81 = vertical; 82 = scroll up;
                             83 = scroll down; 84 = collapse up; 85 = collapse down
                             ''83 = scroll down; 84 = collapse up; 85 = collapse down
  $0069      #02    Stair Map Address
  $0069      #02    Stair Map Address
  $006B              Player Animation State (for transitions)
  $006B              Menu selections
                    and menu selections
                    Door State
  $006C              Current Instance (saves X register)
                            ''00 = unopened; 01 = load next room; 02 = scroll in next room;
                            ''03 = unlatch door; 04 = open door; 05 = walk in; 06 = close door;
                            ''07 = latch door; 08 = scroll out old room; 09 = end transition
  $006C              Current Instance ''(saves X register)
  $006D              Drawing State
  $006D              Drawing State
  $006E              View Speed
  $006E              View Speed
Line 63: Line 96:
  $0071              Room Size
  $0071              Room Size
  $0072              CHR Write Mode
  $0072              CHR Write Mode
                             00 or 03 = all CHR banks; 01 = status bar banks;  02 = clear NPC banks
                             ''00 or 03 = all CHR banks; 01 = status bar banks;  02 = clear NPC banks
  $0073              Previous Room Orientation
  $0073              Previous Room Orientation
  $0074              Music Loaded
  $0074              Music Loaded
  $0075              Transition Nametable (nametable to use after door closes)
  $0075              Transition Nametable ''(nametable to use after door closes)''
  $0076              Horizontal Spawner Block
  $0076              Horizontal Spawner Block
  $0077              First Spawner Block
  $0077              First Spawner Block
Line 73: Line 106:
  $007A              Vertical Spawner Previous (?)
  $007A              Vertical Spawner Previous (?)
  $007B              Spawner Count
  $007B              Spawner Count
$007C              Vertical Partner Y-Coordinate ''(used for partner swap in vertical rooms)
  $007D              Room Type
  $007D              Room Type
                             10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork;
                             ''10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork;
                             50 and 60 = Watery Grave; 70 = Flood Zone; 80 = Collapsing Bridge
                             ''50 and 60 = Watery Grave; 70 = Flood Zone; 80 = Collapsing Bridge
                             Note: lower 4 bits alter behavior
                             ''Note: lower 4 bits alter behavior
  $007E      #02    Time
  $007E      #02    Time
  $0080              Wounded Timer (invincibility frames)
  $0080              Wounded Timer ''(invincibility frames)
  $0081              Damage Received
  $0081              Damage Received/Effect on Player
  $0082              PC Height
  $0082              PC Height
                             00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing;
                             ''00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing;
                             04 = Trevor duck; 05 = Syfa duck; 06 = Grant duck; 07 = Alucard duck; 08 = Bat
                             ''04 = Trevor duck; 05 = Syfa duck; 06 = Grant duck; 07 = Alucard duck; 08 = Bat
  $0084              Hearts
  $0084              Hearts
  $0085              Trevor Subweapon
  $0085              Trevor Subweapon
                             00 = none; 01 = axe; 02 = boomerang; 03 = knife/book; 04 = holy water; 05 = fireball;  
                             ''00 = none; 01 = axe; 02 = boomerang; 03 = knife/book; 04 = holy water; 05 = fireball;  
                             06 = freeze; 07 = orb; 08 = axe; 09 = boomerang; 0a = knife/book ;0b = clock
                             ''06 = freeze; 07 = orb; 08 = axe; 09 = boomerang; 0a = knife/book ;0b = clock
  $0086              Partner Subweapon
  $0086              Partner Subweapon
  $0087              Trevor Subweapon Multiplier  00 = none; 01 = [II]; 02 = [III]
  $0087              Trevor Subweapon Multiplier   
                            ''00 = none; 01 = [II]; 02 = [III]
  $0088              Partner Subweapon Multiplier
  $0088              Partner Subweapon Multiplier
$0089              Vertical Scanline Target ''(HUD bottom in vertical rooms)
  $008B              Conveyance
  $008B              Conveyance
                             01 = Elevator/Frozen enemy; 02 = Scroll-locked right; 05 = Teeter-totter;
                             ''01 = Elevator/Frozen enemy; 02 = Scroll-locked right; 05 = Teeter-totter;
                             06 = Cogwheel; 07 = Mud; 08 = Waterfall; 09 = Waterfall w/current;
                             ''06 = Cogwheel; 07 = Mud; 08 = Waterfall; 09 = Waterfall w/current;
                             0a = Conveyor left; 0b = Conveyor right; 0d = Petrified; 0e = Auto-walk
                             ''0a = Conveyor left; 0b = Conveyor right; 0d = Petrified; 0e = Auto-walk
  $008C              Whip Spark Timer
  $008C              Whip Spark Timer
  $008D              Room Initialized
  $008D              Room Initialized
  $008E              Trevor Weapon Level   
  $008E              Trevor Weapon Level   
                             00 = short; 01 = medium; 02 = long
                             ''00 = short; 01 = medium; 02 = long
  $008F              Partner Weapon Level
  $008F              Partner Weapon Level
                             00 = one orb; 01 = two orbs; 03 = three orbs
                             ''00 = one orb; 01 = two orbs; 03 = three orbs
  $0090              Knockback Direction
  $0090              Knockback Direction
                             00 = left; 01 = right
                             ''00 = left; 01 = right
  $0091              Conveyor (see $008B)
  $0091              Conveyor ''(see $008B)
  $0093              Cog Proximity
  $0093              Cog Proximity
                             00 = none; 01 = right OR below; 02 = right AND below
                             ''00 = none; 01 = right OR below; 02 = right AND below
  $0094              Cog ID
  $0094              Cog ID
  $0095              Cogwheel Size
  $0095              Cogwheel Size
                             00 = small; 01 = large
                             ''00 = small; 01 = large
  $009C              Subweapon Kill Count (affects multiplier drops)
$0096              Terrain Present
  $009D              Variable Jump (for Grant)
$0098      #02    Spawner Data Address
$009a      #02    Terrain Data Address
  $009C              Subweapon Kill Count ''(affects multiplier drops)
  $009D              Variable Jump ''(for Grant)
  $009E              Subweapon Iterator
  $009E              Subweapon Iterator
  $009F              Previous Game State
  $009F              Upgrade Previous Game State
  $00A0              Recent Player Direction (copy of $009E)
  $00A0              Recent Player Direction ''(copy of $009E)
  $00A1              Previous Player Direction (copy of $0062)
  $00A1              Previous Player Direction ''(copy of $0062)
  $00A3              Game Step Counter (only increments while game not paused)
  $00A3              Game Step Counter ''(only increments while game not paused)
$00A4              Map Transition Checkpoint
  $00A5              Check Right Tile
  $00A5              Check Right Tile
$00A6              Default Drawing State Backup ''(used during partner swap)
$00A7      #02    IRQ Latch Backup ''(used during partner swap)
$00A9              IRQ Control Backup ''(used during partner swap)
$00AA              Partner Swap Previous Game State
  $00AB              Stopwatch Active
  $00AB              Stopwatch Active
  $00AC              Stopwatch Timer
  $00AC              Stopwatch Timer
  $00AD              Invincibility Potion Timer
  $00AD              Invincibility Potion Timer
  $00AE              Alucard Bat Timer (drains 1 heart when decreased to 0)
  $00AE              Alucard Bat Timer ''(drains 1 heart when decreased to 0)
  $00AF              Landing Delay (prevents walking between elevators)
  $00AF              Landing Delay ''(prevents walking between elevators)
  $00B0              Load Doppelganger Sprites (forces CHR updates)
  $00B0              Load Doppelganger Sprites ''(forces CHR updates)
  $00B1              Current Instance (backup for X register)
  $00B1              Current Instance ''(backup for X register)
  $00B8              Current Platform (ID of elevator or frozen enemy)
$00B2              Rosary Flash Timer
  $00B9              Crash Timer (stuns Player after falling too far)
$00B3              Bridge Out
  $00BA              Boss Fight
$00B6              Tile Assembly Count Vertical ''(only for vertical rooms)''
  $00BF              Faint Pause (pauses game when killed or time runs out)
$00B7              Power Up ''(used for weapon upgrade)''
  $00C8              Horizontal Scroll Lock (used by crumbling bridge)
  $00B8              Current Platform ''(ID of elevator or frozen enemy)
  $00B9              Crash Timer ''(stuns Player after falling too far)
  $00BA              Boss Special Hitbox ''(bitmasked)
$00BB              Boss Melee Hitbox
                            ''01-03 = Doppelganger whip; 04 = Doppelganger staff;
                            ''05 = Death's Skull; 06 = Moat Dragon head;
$00BC              Boss Hitbox Phase ''(redundant with Doppelganger)
$00BD              Bone Dragon King HP
$00BE              Bone Dragon King Misc. Ticker
  $00BF              Faint Pause ''(pauses game when killed or time runs out)
$00C0              Flood Halted
$00C1              Boss Object
$00C2              Boss Second Phase
$00C3              Boss Spawner
$00C4      #02    Boss Frozen Bitmask ''(used in conjunction with $0790, also prevents ally swap)
$00C6              Autowalk Data Pointer ''(ref. $00:9140 for autowalk behavior)
                            ''00 = Clocktower/Default; 04 = Forest; 08 = Alucard Caves;
                            ''0C = Ghost Ship; 10 = Mountain Pass; 14 = Castle Keep
$00C7              Thaw Timer ''(for frozen water)''
  $00C8              Horizontal Scroll Lock ''(used by crumbling bridge)
  $00CA              Flood Height
  $00CA              Flood Height
  $00CE              Weapon Kill Count (affects item drops)
$00CB              Flood Height Subpixel
  $00CF              Previous Conveyance (backup of $0088)
$00CC      #02    Boss Stunned Bitmask ''(similar to $00C4, but stops animation and allows ally swap)
  $00D0              Vertical Ceiling (lowest y-coordinate in vertical room)
  $00CE              Weapon Kill Count ''(affects item drops)
  $00EF              Audio Sample
  $00CF              Previous Conveyance ''(backup of $0088)
  $00F0      #04    Candle Status (32-bit mask)
  $00D0              Vertical Ceiling ''(lowest y-coordinate in vertical room)
$00D2              Cogwheel ID Copy
$00D3              Grant Corner Y-Coordinate
$00D4              Cogwheel ID
$00E0      #02    Audio Current Note Address
$00E2      #02    Audio Redirect Address
                    Audio Data Temporary Variable
$00E4      #02    Audio Data 16-bit Variable
$00E6      #02    Audio Track Base Address
$00E8      #02    Audio Track Address
$00EA              Audio Channels to Load
$00EB              Audio Routine PROM Bank
$00EC      #02    Audio Current Period ''(i.e., pitch)
$00EE              Audio Current Channel
  $00EF              Audio Track ID
  $00F0      #04    Candle Status ''(32-bit mask)
  $00F4      #04    Breakable Wall Status
  $00F4      #04    Breakable Wall Status
                             00 = unused/unbroken; ff = broken
                             ''00 = unused/unbroken; ff = broken
  $00F8      #02    Previous Controller Buttons Pressed
  $00F8      #02    Previous Controller Buttons Pressed
  $00FA      #02    Previous Controller Buttons Held
  $00FA      #02    Previous Controller Buttons Held
  $00FC      #02    PPU Scroll
  $00FC      #02    PPU Scroll
  $00FE              PPU Mask (for hue shifts and greyscale)
  $00FE              PPU Mask ''(for hue shifts and greyscale)
  $00FF              PPU Control  
  $00FF              PPU Control  
        '''''Audio channels:''' (grouped by 3, 5, or 7)''
            ''00 = BGM Square 1; 021 = BGM Square 2; 02 = BGM Triangle;''
            ''03 = SFX Square 1; 04 = SFX Square 2;''
            ''05 = Drums (DCM & Noise); 06 = Noise''
$0100      #07    Audio Channel Note Duration
$0107      #07    Audio Channel Song ID
$010E      #07    Audio Channel Next Note Duration
$0115      #07    Audio Channel Behavior
                              ''bit 0 = SFX (ignore ritenuto); bits 1-2 = init/decay/sustain/release;''
                              ''bit 3 = Al segno loop; bit 5 = coda loop; bit 6 = ignore envelope;''
$011C      #07    Audio Channel Loop Count
$0123      #07    Audio Channel Note Address Low Byte
$012A      #07    Audio Channel Note Address High Byte
$0131      #07    Audio Channel Al Segno Address Low Byte
$0138      #07    Audio Channel Al Segno Address High Byte
$013F      #07    Audio Channel Coda Address Low Byte
$0146      #07    Audio Channel Coda Address High Byte
$014D      #07    Audio Channel Previous Period High Byte
$0152              Audio Global Dampening ''(lowers volume for all channels)''
$0154      #07    Audio Channel Volume
$0159              Audio Global Fade Timer ''(decreases $017C after 2b steps)''
$015B      #07    Audio Channel Next Control Value / Channel Dampening Placeholder
$0160              Audio Global Fade Delay
$0162      #07    Audio Channel Default Duty Cycle
$0167              Audio Global Mute for Pause
$0169      #05    Audio Channel Dampening ''(lowers volume for specific channel)''
$016E      #05    Audio Channel Attributes
                              ''bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled'' '''needs more info'''
$0173      #05    Audio Channel Pitch Bend Amount
$0178      #05    Audio Channel Period Low Byte Backup ''(useless?)
$017D      #03    Audio Channel Octave (''raises octave by 5-n)''
$0180      #03    Audio Channel Note Offset
                              ''(adds signed value to note ID to look up period)''
$0183      #03    Audio Channel Period Low
$0186      #03    Audio Channel Period High
$0189      #03    Audio Channel Volume Envelope
                              ''(if bit 7 set, fade out instead based on bits 0-3)''
$018C              Audio SFX Register Offset
$018D              Audio Global Ritenuto Delay ''(counts up to $018E)''
$018E              Audio Global Ritenuto Cutoff ''(frames until $018F set)''
$018F              Audio Global Ritenuto ''(prolongs BGM note duration when set)''
$0190      #02    Audio SFX Square Sweep
$0192              Audio Current DPCM
$0193              Audio Triangle Staccato Timer
$0194              Audio Triangle Linear Counter ''(only used with $193)''
$0195      #07    Audio Channel PROM Bank
$019C              Audio SFX Square 1 Sweep ''(write to $4001)''
  $0200      #100    OAM Data
  $0200      #100    OAM Data
  $0300      #a0    Tile Data
  $0300      #a0    Tile Data
$03C0      #03    Audio Channel Volume Envelope Duration
$03C3      #03    Audio Channel Volume Envelope Position
$03C6      #03    Audio Channel Volume Envelope Loop Count
$03C9      #03    Audio Channel Volume Envelope Loop Point
$03CC      #03    Audio Channel Fadeout Point ''(fades out when equal to $100,X)''
$03CF      #03    Audio Channel Volume Envelope
                              ''(bits 0-3 = value; $03CC = duration*value >> 4)''
$03D2      #03    Audio Channel Next Fade Duration
$03D5      #03    Audio Channel Fade Duration
$03D8      #03    Audio Channel Alternate Duty Cycle
$03DB      #03    Audio Channel Next Pitchbend Duration
$03DE      #03    Audio Channel Pitchbend Duration
$03E1      #03    Audio Channel Sweep Rate
  $0400      #1c    Sprite Frame Index
  $0400      #1c    Sprite Frame Index
  $041C      #1c    Y-Coordinate
  $041C      #1c    Y-Coordinate
  $0438      #1c    X-Coordinate  
  $0438      #1c    X-Coordinate  
  $0454      #1c    Pallet Offset
  $0454      #1c    Sprite Attributes ''(palette & background priority)
  $0470      #1c    Attributes
  $0470      #1c    Attributes
                             01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker;
                             ''01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker;
                             10 = illusory; 20 = inanimate; 40 = moving; 80 = invisible
                             ''10 = illusory; 20 = inanimate; 40 = moving; 80 = invisible
  $048C      #1c    Animation Batch (even numbers)
  $048C      #1c    Animation Batch ''(even numbers)
                             00-06 = Player; 08-12 = NPCs; 14 = Epilogue; 16-1C = Doppelganger
                             ''00-06 = Player; 08-12 = NPCs; 14 = Epilogue; 16-1C = Doppelganger
  $04A8      #1C    Sprite Mirrored
  $04A8      #1C    Sprite Mirrored
  $04C4      #17    X-Coordinate Subpixel
  $04C4      #17    X-Coordinate Subpixel
  $04DB      #17    Y-Coordinate Subpixel
  $04DB      #17    Y-Coordinate Subpixel
  $04F2      #17    Horizontal Speed
  $04F2      #17    Horizontal Speed
  $0505            Partner Swap Ghosting Amount
  $0509      #17    Horizontal Speed Subpixel
  $0509      #17    Horizontal Speed Subpixel
  $051C            Partner Swap Ghosting Amount Fractional
  $0520      #17    Vertical Speed
  $0520      #17    Vertical Speed
  $0537      #17    Vertical Speed Subpixel
  $0537      #17    Vertical Speed Subpixel
Line 165: Line 305:
  $0579      #03    Subweapon State
  $0579      #03    Subweapon State
  $057C      #17    Animation Timer
  $057C      #17    Animation Timer
  $0593      #17    Sprite Frame (used to calculate $0400,X)
  $0593      #17    Sprite Frame ''(used to calculate $0400,X)
  $05AA      #17    Sprite Index
  $05AA      #17    Sprite Index
  $05C1              Moving Down
  $05C1              Moving Down
  $05C2      #12    NPC State
  $05C2      #12    NPC State
  $05D4              Player Stunned State
  $05D4              Player Stunned State
                    Partner Swap X-coordinate
  $05D5      #03    Subweapon Throw Delay
  $05D5      #03    Subweapon Throw Delay
  $05D8              Player Jump State
  $05D8              Player Jump State
                               00-1D = Trevor/Syfa/Alucard; 1E-39 = Grant
                               ''00-1D = Trevor/Syfa/Alucard; 1E-39 = Grant
  $05D9      #0c    Boss Use
  $05D9      #0c    Boss Use
  $05E5      #06    Candle Drop
  $05E5      #06    Candle Drop
                               83 = Axe; 84 = Cross; 85 = Dagger; 86 = Holy Water; 87 = Stopwatch;
                               ''83 = Axe; 84 = Cross; 85 = Dagger; 86 = Holy Water; 87 = Stopwatch;
                               88 = Syfa Fire; 89 = Syfa Ice; 8a = Syfa Water; 8b = Grant Dagger;
                               ''88 = Syfa Fire; 89 = Syfa Ice; 8a = Syfa Water; 8b = Grant Dagger;
                               8c Grant Axe; 8d-8f = Upgrades (8f removed); 90 = Wall Meat;  
                               ''8c Grant Axe; 8d-8f = Upgrades (8f removed); 90 = Wall Meat;  
                              91 = Invincibility Potion; 92 = Rosary; 93-9b = Coins; 9c = 1UP;  
                            '' 91 = Invincibility Potion; 92 = Rosary; 93-9b = Coins; 9c = 1UP;  
                              9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers
                            '' 9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers
  $05EB              Stair Stun Timer
  $05EB              Stair Stun Timer
                    Partner Swap Ghosting Speed Fractional
  $05EF              Stair Direction
  $05EF              Stair Direction
                     Grant Jump State Fraction (functions like speed variables)
                     Grant Jump State Fraction ''(functions like speed variables)
  $05F0      #12    AI Class (determines behavior)
  $05F0      #12    AI Class ''(determines behavior)
  $0602              Stair Stun (decreases $05EB)
  $0602              Stair Stun ''(decreases $05EB)
  $0606              Grant Gravity Subpixel (increases $05EF for Grant)
                    Freezing Rivers
  $0607      #12    State Timer (time between state changes for most NPCs)
                    Turning Into Bat
                    Partner Swap Ghosting Speed
  $0606              Grant Gravity Subpixel ''(increases $05EF for Grant)
  $0607      #12    State Timer ''(time between state changes for most NPCs)
                     Sinusoid Center Axis
                     Sinusoid Center Axis
  $0619              Ally Swap Y-Coordinate
  $0619              Partner Swap Y-Coordinate
  $061A      #03    Subweapon Damage
  $061A      #03    Subweapon Damage and Multikill Count
  $061D              Stair Timer (time to climb one step)
  $061D              Stair Timer ''(time to climb one step)
                     Grant Gravity (increases $05D8 for Grant)
                     Grant Gravity ''(increases $05D8 for Grant)
  $061E      #12    Miscellaneous Ticker (usually timer or counter for NPCs)
  $061E      #12    Miscellaneous Ticker ''(usually timer or counter for NPCs)
  $0630              Weapon Damage
  $0630              Weapon Damage
  $0631      #03    Subweapon Deflection (copy of $0658,X on Cross hit)
  $0631      #03    Subweapon Deflection ''(copy of $0658,X on Cross hit)
  $0634      #17    Miscellaneous Use (used by a couple NPCs)
  $0634      #17    Miscellaneous Use ''(used by a couple NPCs)
  $0646      #12    Spawner Index
  $0646      #12    Spawner Index
  $0658      #0d    NPC Damage
  $0658      #0d    NPC Damage
  $0664      #06    Candle Active
  $0664      #06    Candle Active
  $066A      #12    Applied Effect (copy of $061A,X on subweapon hit)
  $066A      #12    Applied Effect ''(copy of $061A,X on subweapon hit)
  $067B      #12    NPC Hitpoints
  $067B      #12    NPC Hitpoints
  $068E      #12    Weapons Impact
  $068E      #12    Weapons Impact
                               01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3
                               ''01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3
  $06DC              Music Paused
  $06A0      #03    Audio Channel Pitch Envelope Loop Start
  $06DD             Boss Scream Cutoff
$06A3      #03    Audio Channel Pitch Envelope ID
$06A6      #03    Audio Channel Pitch Envelope Position
$06A9      #03    Audio Channel Pitch Envelope Loop Count
$06AC      #03    Audio Channel Sustain State ''(80 = disabled)''
$06AF      #03    Audio Channel Sustain Position ''(from 0 to 3)''
$06B2      #03    Audio Channel Sustain Dampen
$06B5      #04    Audio BGM Square 1 Sustain Period Low Bytes
$06B9      #04    Audio BGM Square 2 Sustain Period Low Bytes
$06BD      #04    Audio BGM Square 1 Sustain Period High Bytes
$06C1      #04    Audio BGM Square 2 Sustain Period High Bytes
  $06C8             Boss Scream Time ''(stops DPCM at f0)''
$06C9              Music Paused
  $06E0      #90    Collision Map
  $06E0      #90    Collision Map
                              ''00 = empty; 01 = mud; 02 = convey right; 03 = convey left;
                              ''04 = fragile; 05 = ceiling spike; 06 = solid; 07 = floor spike;
                              ''08 = ice; 0c-0f = cracking''
  $0770      #08    CHR5 Solid Definitions
  $0770      #08    CHR5 Solid Definitions
                               Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;
                               ''Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;''
                               Byte 4 = crumbling; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike
                               ''Byte 4 = fragile; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike''
  $0778      #08    CHR6 Solid Definitions  
  $0778      #08    CHR6 Solid Definitions  
  $0780              Background Animation Frame
  $0780              Background Animation Frame
$0780              Entry Selector Column
                    Entry Selector Column
$0780              Map Clipping
                    Map Clipping
                               00 = To Grant; 01 = To Syfa; 02 = From Alucard
                               ''00 = To Grant; 01 = To Syfa; 02 = From Alucard
  $0781              Background Animation Timer
  $0781              Background Animation Timer
$0781              Entry Selector Row
                    Entry Selector Row
$0781              Map Fade-out Value
                    Map Fade-out Value
  $0782             Previous Selector Column
  $0782       #40    Fog Parallax Positions
$0782              Map Timer
                              ''32 rows of parallax with 2 bytes per row:''
$0782              Epilogue Ally
                              ''Byte 0 = subpixel offset; Byte 1 = pixel offset''
                    Previous Selector Column
                    Map Timer
                    Epilogue Partner
                    Sypha's Frozen Tile Column
  $0783              Previous Selector Row
  $0783              Previous Selector Row
$0783              Map Horizontal Speed Subpixel
                    Map Horizontal Speed Subpixel
$0783              Epilogue State
                    Epilogue State
                    Sypha's Frozen Tile Row
  $0784              Name Cursor Position
  $0784              Name Cursor Position
$0784              Map Horizontal Speed
                    Map Horizontal Speed
$0784              Castle Shake Direction
                    Castle Shake Direction
                    Leftmost Frozen Tile Column
  $0785              Map Vertical Speed Subpixel
  $0785              Map Vertical Speed Subpixel
$0785              Epilogue Text Page
                    Epilogue Text Page
                    Leftmost Frozen Tile Row
  $0786              Password Icon
  $0786              Password Icon
$0786              Map Vertical Speed
                    Map Vertical Speed
                    Rightmost Frozen Tile Column
  $0787              Previous Password Icon
  $0787              Previous Password Icon
$0787              Map Scroll Timer
                    Map Scroll Timer
                    Rightmost Frozen Tile Row
  $0788      #02    Password Decryption Dump
  $0788      #02    Password Decryption Dump
$0788              Map X-coordinate Subpixel
                    Map X-coordinate Subpixel
$0788              Epilogue Scroll Timer
                    Epilogue Scroll Timer
                    Water Freeze Counter
  $0789              Map Y-coordinate Subpixel
  $0789              Map Y-coordinate Subpixel
                    Frozen Water Room Type
  $078A              Epilogue Timer
  $078A              Epilogue Timer
$078A              Map Path PPU Scroll
                    Map Path PPU Scroll
  $078B              Password Errors (used for debugging)
  $078B              Map Path PPU Control
$088B              Map Path PPU Control
                    Password Errors ''(used for debugging)
  $078C      #02    Map Path PPU Address
  $078C      #02    Map Path PPU Address
$078C              Update Selector
                    Update Selector
  $0790      #10    Entered Password
  $0790      #10    Entered Password
                               00 = empty; 01 = whip; 02 = cross; 03 = heart
                               ''00 = empty; 01 = whip; 02 = cross; 03 = heart
$0790             Map Screen Platform
             #10    Boss Delay Timer ''(maintains current behavior while decreasing)
                               00 = full; 01 = short west; 02 = bottom east;
                    Map Screen Platform
                               03 = top west; 04 = middle west; 05 = bottom west
                               ''00 = full; 01 = short west; 02 = bottom east;
                               ''03 = top west; 04 = middle west; 05 = bottom west
  $07A0      #0a    Generated Password
  $07A0      #0a    Generated Password
  $07B1      #02    Stacked Breakable Wall
  $07B1      #02    Stacked Breakable Wall
  $07B3      #02    Lower Block Broken
  $07B3      #02    Lower Block Broken
  $07B5      #02    Upper Block Broken
  $07B5      #02    Upper Block Broken
  $07B7      #02    Wall ID (points to $00F4,X)
  $07B7      #02    Wall ID ''(points to $00F4,X)
  $07C2      #06    Spawner Type
  $07C2      #06    Spawner Type
  $07C8      #06    Spawner State
  $07C8      #06    Spawner State
Line 259: Line 430:
  $07E0      #06    Spawner Offscreen
  $07E0      #06    Spawner Offscreen
  $07E6      #06    Spawner NPC Object
  $07E6      #06    Spawner NPC Object
  $07EC      #06    Bone Dragon King Frames (two ribs per byte)
  $07EC      #06    Bone Dragon King Frames ''(two ribs per byte)
$07EC              Cyclops Lightning State
                    Cyclops Lightning State
                     Bone Dragon Cycle
                     Bone Dragon Cycle
                     Giant Bat Leader
                     Giant Bat Leader
                     Dracula Phase
                     Dracula Phase
                               00 = Dracula; 01 = demon; 02 = Pazuzu
                               ''00 = Dracula; 01 = demon; 02 = Pazuzu
  $07ED              Victory State
  $07ED              Stage Clear State
                     Bone Dragon Mirrored
                     Bone Dragon Mirrored
                     Collapsing Bridge Length
                     Collapsing Bridge Length
Line 272: Line 443:
                     Death Scythe Count
                     Death Scythe Count
  $07EF              Bone Dragon Attacking
  $07EF              Bone Dragon Attacking
  $07F3              Boss Phase
  $07F3              Boss Battle State
                               00 = boss fight; 01 = boss defeat; 02 = crystal drop;
                               ''00 = boss fight; 01 = boss defeat; 02 = crystal drop;
                               03 = battle over; 80 = boss waiting
                               ''03 = battle over; 80 = boss waiting
                     Victory Delay (timer after battle over)
                     Victory Delay (timer after battle over)
  $07F6              Hard Mode
  $07F6              Hard Mode
Line 283: Line 454:
  Address    Size    Description
  Address    Size    Description
  --------  ----    -----------
  --------  ----    -----------
$0017            Repeat Counter
                  Story Reel Border State
                            ''00 = no border; 01 = draw border; 03 = write to $0303
  $0018              System State
  $0018              System State
                             ''00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;''
                             ''00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;''
Line 290: Line 464:
  $0019              System Substate
  $0019              System Substate
  $001B              System Step Counter
  $001B              System Step Counter
$001C              Updating PPU ''(prevents stack overflow by skipping game logic)
  $001D              Blackout Delay
  $001D              Blackout Delay
$001E              X Register Backup
$001F              Pausing Disabled ''(always 00?)''
  $0020              Randomizer
  $0020              Randomizer
  $0021              PPU Bank (write to $B003)
  $0021              PPU Bank ''(write to $B003)
$0022              OAM Batch
$0023              Current PROM Bank
$0024              Previous PROM Bank
$0025              PROM Bank Backup ''(used by some functions)''
$0026              Bank Changed ''(for debugging probably)''
  $0028      #02    Controller Buttons Pressed
  $0028      #02    Controller Buttons Pressed
                             ''01 = right; 02 = left; 04 = down; 08 = up;''
                             ''01 = right; 02 = left; 04 = down; 08 = up;''
                             ''10 = start; 20 = select; 40 = B; 80 = A''
                             ''10 = start; 20 = select; 40 = B; 80 = A''
  $002A      #02    Controller Buttons Held
  $002A      #02    Controller Buttons Held
  $002C              Game State
  $002C              Game State ''(set $0068 to 00 before changing)''
  $002D              User Paused (toggled by Start button)
                            ''00 = initialize room; 01 = initialize nametables; 02 = load horizontal room;
                            ''03 = horizontal gameplay; 04 = load vertical room; 05 = vertical gameplay;
                            ''06 = stair transition start; 07 = stair transition fade; 08 = door transition;
                            ''09 = initialize fog; 0a = fog parallax; 0b = horizontal partner swap;
                            ''0c = vertical partner swap; 0d/0e = <CUT CONTENT>; 0f = detect automatic stairs;
                            ''10 = automatic stair transition; 11 = tally score; 12 = <UNUSED>;
                            ''13 = flee Aquarius; 14 = initialize flooding; 15 = load flood room;
                            ''16 = flood room gameplay; 17 = map transition; 18 = autowalk to door;
                            ''19 = powering up; 1a = freeze water; 1b = thaw ice; 1c = Bone King escape;
                            ''1d = Aquarius ruptured; 1e = initialize map transition; 1f = map transition exit
  $002D              User Paused ''(toggled by Start button)
  $002E              Boss Defeated  
  $002E              Boss Defeated  
  $0030              Checkpoint (used for Password Entry)
$002F              Entry End ''(valid in Name screen, garbage in Pass screen)
  $0030              Checkpoint ''(used for Password Entry)
  $0031              Grant Defeated  
  $0031              Grant Defeated  
  $0032      #02    System Effect Timer
  $0032      #02    System Effect Timer
Line 310: Line 503:
  $0040              IRQ Control
  $0040              IRQ Control
  $0041      #02    IRQ Latch
  $0041      #02    IRQ Latch
  $0043              Default Drawing State (write to $006A)
  $0043              Default Drawing State ''(write to $006A)
  $0044      #03    Score
  $0044      #03    Score
$0047              Player Object ''(change this to not always be Trevor)
  $0048              Partner   
  $0048              Partner   
                             ''00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None''
                             ''00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None''
Line 318: Line 512:
                             ''40 = full''
                             ''40 = full''
  $004B              Boss Health  
  $004B              Boss Health  
  $004C              Score Target (for extra life)
  $004C              Score Target ''(for extra life)
$004D      #02    Tile Assembly Room Address
$004F      #02    Tile Assembly Left Address
$0051      #02    Tile Assembly Right Address
  $0053      #02    View Position  
  $0053      #02    View Position  
  $0055              View Subpixel Position
  $0055              View Subpixel Position
  $0056              Left Spawn Area
  $0056              Left Spawn Area
  $0057              Right Spawn Area
  $0057              Right Spawn Area
$0058              Tile Assembly Count Left
$0059              Tile Assembly Count Right
  $005A      #02    Tile Assembly Pointer
  $005A      #02    Tile Assembly Pointer
  $005C      #02    Pallet Map Pointer
  $005C      #02    Pallet Map Pointer
Line 336: Line 535:
                             ''83 = scroll down; 84 = collapse up; 85 = collapse down''
                             ''83 = scroll down; 84 = collapse up; 85 = collapse down''
  $0066      #02    Stair Map Address
  $0066      #02    Stair Map Address
  $0068              Player Animation State (for transitions)
  $0068              Menu selections
  $0069              Current Instance (saves X register)
                    Door State
                            ''00 = unopened; 01 = load next room; 02 = scroll in next room;
                            ''03 = unlatch door; 04 = open door; 05 = walk in; 06 = close door;
                            ''07 = latch door; 08 = scroll out old room; 09 = end transition
  $0069              Current Instance ''(saves X register)
  $006A              Drawing State
  $006A              Drawing State
  $006B              View Speed
  $006B              View Speed
Line 346: Line 549:
  $0070              Previous Room Orientation
  $0070              Previous Room Orientation
  $0071              Music Loaded
  $0071              Music Loaded
  $0072              Transition Nametable (nametable to use after door closes)
  $0072              Transition Nametable ''(nametable to use after door closes)
  $0073              Horizontal Spawner Block
  $0073              Horizontal Spawner Block
  $0074              First Spawner Block
  $0074              First Spawner Block
Line 353: Line 556:
  $0077              Vertical Spawner Previous (?)
  $0077              Vertical Spawner Previous (?)
  $0078              Spawner Count
  $0078              Spawner Count
$0079              Vertical Partner Y-Coordinate ''(used for partner swap in vertical rooms)
  $007A              Room Type
  $007A              Room Type
                             ''10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork;''
                             ''10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork;''
Line 358: Line 562:
                             ''Note: lower 4 bits alter behavior''
                             ''Note: lower 4 bits alter behavior''
  $007B      #02    Time  
  $007B      #02    Time  
  $007D              Wounded Timer (invincibility frames)
  $007D              Wounded Timer ''(invincibility frames)
  $007E              Damage Received
  $007E              Damage Received/Effect On Player
  $007F              PC Height
  $007F              PC Height
                             ''00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing;''
                             ''00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing;''
Line 383: Line 587:
  $008D              Knockback Direction
  $008D              Knockback Direction
                             ''00 = left; 01 = right''
                             ''00 = left; 01 = right''
  $008E              Conveyor (see $0088)
  $008E              Conveyor ''(see $0088)
  $0090              Cog Proximity
  $0090              Cog Proximity
                             ''00 = none; 01 = right OR below; 02 = right AND below''
                             ''00 = none; 01 = right OR below; 02 = right AND below''
Line 389: Line 593:
  $0092              Cogwheel Size
  $0092              Cogwheel Size
                             ''00 = small; 01 = large''
                             ''00 = small; 01 = large''
  $0099              Subweapon Kill Count (affects multiplier drops)
$0093              Terrain Present
  $009A              Variable Jump (for Grant)
$0095      #02    Spawner Data Address
$0097      #02    Terrain Data Address
  $0099              Subweapon Kill Count ''(affects multiplier drops)
  $009A              Variable Jump ''(for Grant)
  $009B              Subweapon Iterator
  $009B              Subweapon Iterator
  $009C              Previous Game State
  $009C              Upgrade Previous Game State
  $009D              Recent Player Direction (copy of $009E)
  $009D              Recent Player Direction ''(copy of $009E)
  $009E              Previous Player Direction (copy of $0062)
  $009E              Previous Player Direction ''(copy of $0062)
  $00A0              Game Step Counter (only increments while game not paused)
  $00A0              Game Step Counter ''(only increments while game not paused)
$00A1              Map Transition Checkpoint
  $00A2              Check Right Tile
  $00A2              Check Right Tile
$00A3              Default Drawing State Backup ''(used during partner swap)
$00A4      #02    IRQ Latch Backup ''(used during partner swap)
$00A6              IRQ Control Backup ''(used during partner swap)
$00A7              Partner Swap Previous Game State
  $00A8              Stopwatch Active
  $00A8              Stopwatch Active
  $00A9              Stopwatch Timer
  $00A9              Stopwatch Timer
  $00AA              Invincibility Potion Timer
  $00AA              Invincibility Potion Timer
  $00AB              Alucard Bat Timer (drains 1 heart when decreased to 0)
  $00AB              Alucard Bat Timer ''(drains 1 heart when decreased to 0)
  $00AC              Landing Delay (prevents walking between elevators)
  $00AC              Landing Delay ''(prevents walking between elevators)
  $00AD              Load Doppelganger Sprites (forces CHR updates)
  $00AD              Load Doppelganger Sprites ''(forces CHR updates)
  $00AE              Current Instance (backup for X register)
  $00AE              Current Instance ''(backup for X register)
  $00B5              Current Platform (ID of elevator or frozen enemy)
$00AF              Rosary Flash Timer
  $00B6              Crash Timer (stuns Player after falling too far)
$00B0              Bridge Out
  $00B7              Boss Fight
$00B3              Tile Assembly Count Vertical ''(only for vertical rooms)''
  $00BC              Faint Pause (pauses game when killed or time runs out)
$00B4              Power Up ''(used for weapon upgrade)''
  $00C5              Horizontal Scroll Lock (used by crumbling bridge)
  $00B5              Current Platform ''(ID of elevator or frozen enemy)
  $00B6              Crash Timer ''(stuns Player after falling too far)
  $00B7              Boss Special Hitbox ''(bitmasked)
$00B8              Boss Melee Hitbox
                            ''01-03 = Doppelganger whip; 04 = Doppelganger staff;
                            ''05 = Death's Skull; 06 = Moat Dragon head;
$00B9              Boss Hitbox Phase ''(redundant with Doppelganger)
$00BA              Bone Dragon King HP
$00BB              Bone Dragon King Misc. Ticker
  $00BC              Faint Pause ''(pauses game when killed or time runs out)
$00BD              Flood Paused ''(only set when Bone Dragon flees?)
$00BE              Boss Object
$00BF              Boss Second Phase ''(for Death, set then cleared for Bone Dragon)
$00C0              Boss Spawner ID
$00C1      #02    Boss Appearance Bitmask ''(used in conjunction with $0790, prevents ally swap)
$00C3              Autowalk Data Pointer ''(ref. $00:9140 for autowalk behavior)
                            ''00 = Clocktower/Default; 04 = Forest; 08 = Alucard Caves;
                            ''0C = Ghost Ship; 10 = Mountain Pass; 14 = Castle Keep
$00C4              Thaw Timer ''(for frozen waters)''
  $00C5              Horizontal Scroll Lock ''(used by crumbling bridge)
  $00C7              Flood Height
  $00C7              Flood Height
  $00CB              Weapon Kill Count (affects item drops)
$00C8              Flood Height Subpixel
  $00CC              Previous Conveyance (backup of $0088)
$00C9      #02    Boss Stun Bitmask ''(similar to $00C1, stops animation, allows ally swap)
  $00CD              Vertical Ceiling (lowest y-coordinate in vertical room)
  $00CB              Weapon Kill Count ''(affects item drops)
  $00CC              Previous Conveyance ''(backup of $0088)
  $00CD              Vertical Ceiling ''(lowest y-coordinate in vertical room)
$00CF              Cogwheel ID Copy
$00D0              Grant Corner Y-Coordinate
$00D1              Cogwheel ID
  $00E0      #02    Audio Current Note Address
  $00E0      #02    Audio Current Note Address
  $00E2      #02    Audio Redirect Address
  $00E2      #02    Audio Redirect Address
  $00E2              Audio Data Temporary Variable
                    Audio Data Temporary Variable
  $00E4      #02    Audio Data 16-bit Variable
  $00E4      #02    Audio Data 16-bit Variable
  $00E6      #02    Audio Song Base Address
  $00E6      #02    Audio Track Base Address
  $00E8      #02    Audio Song Address
  $00E8      #02    Audio Track Address
  $00EA              Audio Channels to Load
  $00EA              Audio Channels to Load
  $00EB              Audio Routine PROM Bank
  $00EB              Audio Routine PROM Bank
  $00EC      #02    Audio Current Period (i.e., pitch)
  $00EC      #02    Audio Current Period ''(i.e., pitch)
  $00EE              Audio Current Channel
  $00EE              Audio Current Channel
  $00EF              Audio Song ID
  $00EF              Audio Track ID
  $00F0      #04    Candle Status (32-bit mask)
  $00F0      #04    Candle Status ''(32-bit mask)
  $00F4      #04    Breakable Wall Status
  $00F4      #04    Breakable Wall Status
                             ''00 = unused/unbroken; ff = broken''
                             ''00 = unused/unbroken; ff = broken''
Line 430: Line 666:
  $00FA      #02    Previous Controller Buttons Held
  $00FA      #02    Previous Controller Buttons Held
  $00FC      #02    PPU Scroll
  $00FC      #02    PPU Scroll
  $00FE              PPU Mask (for hue shifts and greyscale)
  $00FE              PPU Mask ''(for hue shifts and greyscale)
  $00FF              PPU Control
  $00FF              PPU Control
         '''''Audio channels:''' (grouped by 5, 7, or 9)''
         '''''Audio channels:''' (grouped by 5, 7, or 9)''
Line 440: Line 676:
  $0112      #09    Audio Channel Next Note Duration
  $0112      #09    Audio Channel Next Note Duration
  $011B      #09    Audio Channel Behavior
  $011B      #09    Audio Channel Behavior
                               ''bit 0 = SFX (ignore $01BF); bits 1-2 = playback state; bit 3 = pattern loop;''
                               ''bit 0 = SFX (ignore ritenuto); bits 1-2 = init/decay/sustain/release;''  
                               ''bit 6 = ignore envelope;'' '''needs more info'''
                               ''bit 3 = Al segno loop; bit 5 = coda loop; bit 6 = ignore envelope;''
  $0124      #09    Audio Channel Loop Count
  $0124      #09    Audio Channel Loop Count
  $012D      #09    Audio Channel Note Address Low Byte
  $012D      #09    Audio Channel Note Address Low Byte
  $0136      #09    Audio Channel Note Address High Byte
  $0136      #09    Audio Channel Note Address High Byte
  $013F      #09    Audio Channel Pattern Loop Address Low Byte
  $013F      #09    Audio Channel Al Segno Address Low Byte
  $0148      #09    Audio Channel Pattern Loop Address High Byte
  $0148      #09    Audio Channel Al Segno Address High Byte
  $0151      #09    Audio Channel Repeat Address Low Byte
  $0151      #09    Audio Channel Coda Address Low Byte
  $015A      #09    Audio Channel Repeat Address High Byte
  $015A      #09    Audio Channel Coda Address High Byte
  $0163      #09    Audio Channel Previous Period High Byte
  $0163      #09    Audio Channel Previous Period High Byte
  $016A              Audio Global Dampening ''(lowers volume for all channels)''
$016A              Audio Global Dampening ''(lowers volume for all channels)''
  $016C      #09    Audio Channel Volume
  $016C      #09    Audio Channel Volume
  $0173              Audio Global Fade Timer ''(decreases $017C after 2b steps)''
$0173              Audio Global Fade Timer ''(decreases $017C after 2b steps)''
  $0175      #09    Audio Channel Next Volume
  $0175      #09    Audio Channel Next Control Value / Channel Dampening Placeholder
  $017C              Audio Global Fade Delay
$017C              Audio Global Fade Delay
  $017E      #09    Audio Channel Default Duty Cycle
  $017E      #09    Audio Channel Default Duty Cycle
  $0185              Audio Global Mute for Pause
$0185              Audio Global Mute for Pause
  $0187      #07    Audio Channel Dampening ''(lowers volume for specific channel)''
  $0187      #07    Audio Channel Dampening ''(lowers volume for specific channel)''
  $018E      #07    Audio Channel Attributes
  $018E      #07    Audio Channel Attributes
                               ''bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled'' '''needs more info'''
                               ''bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled'' '''needs more info'''
  $0195      #07    Audio Channel Pitch Bend Amount
  $0195      #07    Audio Channel Pitch Bend Amount
  $019C             Audio SFX Square 1 Sweep ''(write to $4001)''
  $019C       #02    Audio SFX Square Sweep
  $019E              Audio DPCM ID
  $019E              Audio DPCM ID
  $019F      #02    Audio Square Period Low Byte ''(write to $4002/$4006)''
  $019F      #02    Audio Square Period Low Byte ''(write to $4002/$4006)''
  $01A3      #05    Audio Channel Downshift ''(doubles period of default note '''n''' times)''
  $01A3      #05    Audio Channel Octave ''(raises octave by 5-n)''
  $01A8      #05    Audio Channel Note Offset
  $01A8      #05    Audio Channel Note Offset
                               ''(adds signed value to note ID to look up period)''
                               ''(adds signed value to note ID to look up period)''
  $01AD      #05    Audio Channel Period Low ''(usually write to each channel's period register)''
  $01AD      #05    Audio Channel Period Low  
  $01B2      #05    Audio Channel Period High ''(usually write to each channel's period register)''
  $01B2      #05    Audio Channel Period High  
  $01B7      #05    Audio Channel Volume Envelope
  $01B7      #05    Audio Channel Volume Envelope
                               ''(if bit 7 set, fade out instead based on bits 0-3)''
                               ''(if bit 7 set, fade out instead based on bits 0-3)''
Line 475: Line 711:
  $01BE              Audio Global Ritenuto Cutoff ''(frames until $01BF set)''
  $01BE              Audio Global Ritenuto Cutoff ''(frames until $01BF set)''
  $01BF              Audio Global Ritenuto ''(prolongs BGM note duration when set)''
  $01BF              Audio Global Ritenuto ''(prolongs BGM note duration when set)''
$01C0      #40    The Stack
  $0200      #100    OAM Data
  $0200      #100    OAM Data
  $0300      #a0    Tile Data
  $0300      #a0    Tile Data
  $03C0      #05    Audio Channel Volume Duration
  $03C0      #05    Audio Channel Volume Envelope Duration
  $03C5      #05    Audio Channel Fade Duration
  $03C5      #05    Audio Channel Volume Envelope Position
  $03D4      #05    Audio Channel Fade Out Point ''(fades out when equal to $100,X)''
$03CA      #05    Audio Channel Volume Envelope Loop Count
$03CF      #05    Audio Channel Volume Envelope Loop Point
  $03D4      #05    Audio Channel Fadeout Point ''(fades out when equal to $100,X)''
  $03D9      #05    Audio Channel Volume Envelope  
  $03D9      #05    Audio Channel Volume Envelope  
                               ''(bits 0-3 = value; $03D4 = duration*value >> 4)''
                               ''(bits 0-3 = value; $03D4 = duration*value >> 4)''
  $03DE      #05    Audio Channel Next Fade Delay
  $03DE      #05    Audio Channel Next Fade Duration
  $03E3      #05    Audio Channel Fade Delay
  $03E3      #05    Audio Channel Fade Duration
  $03E8      #05    Audio Channel Alternate Duty Cycle
  $03E8      #05    Audio Channel Alternate Duty Cycle
  $03ED      #05    Audio Channel Next Envelope Duration
  $03ED      #05    Audio Channel Next Pitchbend Duration
  $03F2      #05    Audio Channel Envelope Duration
  $03F2      #05    Audio Channel Pitchbend Duration
  $03F7      #05    Audio Channel Sweep Rate
  $03F7      #05    Audio Channel Sweep Rate
  $0400      #1c    Sprite Frame Index
  $0400      #1c    Sprite Frame Index
  $041C      #1c    Y-Coordinate
  $041C      #1c    Y-Coordinate
  $0438      #1c    X-Coordinate  
  $0438      #1c    X-Coordinate  
  $0454      #1c    Pallet Offset
  $0454      #1c    Sprite Attributes ''(palette & background priority)
  $0470      #1c    Attributes
  $0470      #1c    Attributes
                               ''01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker;''
                               ''01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker;''
Line 502: Line 739:
  $04DB      #17    Y-Coordinate Subpixel
  $04DB      #17    Y-Coordinate Subpixel
  $04F2      #17    Horizontal Speed
  $04F2      #17    Horizontal Speed
  $0505            Partner Swap Ghosting Amount
  $0509      #17    Horizontal Speed Subpixel
  $0509      #17    Horizontal Speed Subpixel
  $051C            Partner Swap Ghosting Amount Fractional
  $0520      #17    Vertical Speed
  $0520      #17    Vertical Speed
  $0537      #17    Vertical Speed Subpixel
  $0537      #17    Vertical Speed Subpixel
Line 511: Line 750:
  $0579      #03    Subweapon State
  $0579      #03    Subweapon State
  $057C      #17    Animation Timer
  $057C      #17    Animation Timer
  $0593      #17    Sprite Frame (used to calculate $0400,X)
  $0593      #17    Sprite Frame ''(used to calculate $0400,X)
  $05AA      #17    Sprite Index
  $05AA      #17    Sprite Index
  $05C1              Moving Down
  $05C1              Moving Down
  $05C2      #12    NPC State
  $05C2      #12    NPC State
  $05D4              Player Stunned State
  $05D4              Player Stunned State
                    Partner Swap X-Coordinate
  $05D5      #03    Subweapon Throw Delay
  $05D5      #03    Subweapon Throw Delay
  $05D8              Player Jump State
  $05D8              Player Jump State
Line 527: Line 767:
                               ''9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers''
                               ''9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers''
  $05EB              Stair Stun Timer
  $05EB              Stair Stun Timer
                    Partner Swap Ghosting Speed Fractional
  $05EF              Stair Direction
  $05EF              Stair Direction
                     Grant Jump State Fraction (functions like speed variables)
                     Grant Jump State Fraction ''(functions like speed variables)
  $05F0      #12    AI Class (determines behavior)
  $05F0      #12    AI Class ''(determines behavior)
  $0602              Stair Stun (decreases $05EB)
  $0602              Stair Stun ''(decreases $05EB)
  $0606              Grant Gravity Subpixel (increases $05EF for Grant)
                    Freezing Rivers
  $0607      #12    State Timer (time between state changes for most NPCs)
                    Turning Into Bat
                    Partner Swap Ghosting Speed
  $0606              Grant Gravity Subpixel ''(increases $05EF for Grant)
  $0607      #12    State Timer ''(time between state changes for most NPCs)
                     Sinusoid Center Axis
                     Sinusoid Center Axis
  $0619              Ally Swap Y-Coordinate
  $0619              Partner Swap Y-Coordinate
  $061A      #03    Subweapon Damage
  $061A      #03    Subweapon Damage and Multikill Count
  $061D              Stair Timer (time to climb one step)
  $061D              Stair Timer ''(time to climb one step)
                     Grant Gravity (increases $05D8 for Grant)
                     Grant Gravity ''(increases $05D8 for Grant)
  $061E      #12    Miscellaneous Ticker (usually timer or counter for NPCs)
  $061E      #12    Miscellaneous Ticker ''(usually timer or counter for NPCs)
  $0630              Weapon Damage
  $0630              Weapon Damage
  $0631      #03    Subweapon Deflection (copy of $0658,X on Cross hit)
  $0631      #03    Subweapon Deflection ''(copy of $0658,X on Cross hit)
  $0634      #17    Miscellaneous Use (used by a couple NPCs)
  $0634      #17    Miscellaneous Use ''(used by a couple NPCs)
  $0646      #12    Spawner Index
  $0646      #12    Spawner Index
  $0658      #0d    NPC Damage
  $0658      #0d    NPC Damage
  $0664      #06    Candle Active
  $0664      #06    Candle Active
  $066A      #12    Applied Effect (copy of $061A,X on subweapon hit)
  $066A      #12    Applied Effect ''(copy of $061A,X on subweapon hit)
  $067B      #12    NPC Hitpoints
  $067B      #12    NPC Hitpoints
  $068E      #12    Weapons Impact
  $068E      #12    Weapons Impact
                               ''01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3''
                               ''01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3''
  $06A0      #05    Audio Channel Pitch Envelope Loop  
  $06A0      #05    Audio Channel Pitch Envelope Loop Start
  $06A5      #05    Audio Channel Pitch Envelope
  $06A5      #05    Audio Channel Pitch Envelope ID
  $06AA      #05    Audio Channel Pitch Envelope Position
  $06AA      #05    Audio Channel Pitch Envelope Position
  $06AF      #05    Audio Channel Pitch Envelope Loop Count
  $06AF      #05    Audio Channel Pitch Envelope Loop Count
  $06B4      #05    Audio Channel Pitch Envelope State
  $06B4      #05    Audio Channel Sustain State
  $06B9      #05    Audio Channel Arpeggio Position
  $06B9      #05    Audio Channel Sustain Position ''(from 0 to 3)''
  $06C3      #04    Audio BGM Square 1 Arpeggio Low Bytes
$06BE      #05    Audio Channel Sustain Dampen
  $06C7      #04    Audio BGM Square 2 Arpeggio Low Bytes
  $06C3      #04    Audio BGM Square 1 Sustain Period Low Bytes
  $06CB      #04    Audio BGM Square 1 Arpeggio High Bytes
  $06C7      #04    Audio BGM Square 2 Sustain Period Low Bytes
  $06CF      #04    Audio BGM Square 2 Apreggio High Bytes
  $06CB      #04    Audio BGM Square 1 Sustain Period High Bytes
  $06CF      #04    Audio BGM Square 2 Sustain Period High Bytes
  $06D3      #09    Audio Channel PROM Bank
  $06D3      #09    Audio Channel PROM Bank
  $06DC              Music Paused
  $06DC              Music Paused
  $06DD              Boss Scream Cutoff
  $06DD              Boss Scream Duration ''stops DPCM playback''
  $06E0      #90    Collision Map
  $06E0      #90    Collision Map
                              ''00 = empty; 01 = mud; 02 = convey right; 03 = convey left;
                              ''04 = fragile; 05 = ceiling spike; 06 = solid; 07 = floor spike;
                              ''08 = ice; 0c-0f = cracking''
  $0770      #08    CHR5 Solid Definitions
  $0770      #08    CHR5 Solid Definitions
                               ''Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;''
                               ''Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;''
                               ''Byte 4 = crumbling; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike''
                               ''Byte 4 = fragile; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike''
  $0778      #08    CHR6 Solid Definitions
  $0778      #08    CHR6 Solid Definitions
$0780              Background Animation Frame
$0781              Background Animation Timer
$0782              Epilogue Ally
$0783              Epilogue State
$0784              Castle Shake
$0785              Epilogue Text Page
$0780              Entry Selector Column
  $0780              Entry Selector Column
  $0780              Entry Selector Column
$0780              Map Clipping
                    Background Animation Frame
                    Map Clipping
                               ''00 = To Grant; 01 = To Syfa; 02 = From Alucard''
                               ''00 = To Grant; 01 = To Syfa; 02 = From Alucard''
  $0781              Background Animation Timer
  $0781              Background Animation Timer
$0781              Entry Selector Row
                    Entry Selector Row
$0781              Map Fade-out Value
                    Map Fade-out Value
  $0782             Previous Selector Column
  $0782       #40    Fog Parallax Positions
$0782              Map Timer
                              ''32 rows of parallax with 2 bytes per row:''
$0782              Epilogue Ally
                              ''Byte 0 = subpixel offset; Byte 1 = pixel offset''
                    Previous Selector Column
                    Map Timer
                    Epilogue Partner
                    Sypha's Frozen Tile Column
  $0783              Previous Selector Row
  $0783              Previous Selector Row
$0783              Map Horizontal Speed Subpixel
                    Map Horizontal Speed Subpixel
$0783              Epilogue State
                    Epilogue State
                    Sypha's Frozen Tile Row
                    Death Skull IRQ Latch
  $0784              Name Cursor Position
  $0784              Name Cursor Position
$0784              Map Horizontal Speed
                    Map Horizontal Speed
$0784              Castle Shake Direction
                    Castle Shake Direction
  $0785             Map Vertical Speed Subpixel
                    Leftmost Frozen Tile Column
$0785              Epilogue Text Page
                    Death Skull Floor IRQ Latch ''(always 86)
  $0785       #02    Death Skull PPU Address
                    Map Vertical Speed Subpixel
                    Epilogue Text Page
                    Leftmost Frozen Tile Row
  $0786              Password Icon
  $0786              Password Icon
$0786              Map Vertical Speed
                    Map Vertical Speed
                    Rightmost Frozen Tile Column
  $0787              Previous Password Icon
  $0787              Previous Password Icon
$0787              Map Scroll Timer
                    Map Scroll Timer
                    Rightmost Frozen Tile Row
                    Death Skull Background Position
  $0788      #02    Password Decryption Dump
  $0788      #02    Password Decryption Dump
$0788              Map X-coordinate Subpixel
                    Map X-coordinate Subpixel
$0788              Epilogue Scroll Timer
                    Epilogue Scroll Timer
                    Water Freeze Counter
  $0789              Map Y-coordinate Subpixel
  $0789              Map Y-coordinate Subpixel
                    Frozen Water Room Type
  $078A              Epilogue Timer
  $078A              Epilogue Timer
$078A              Map Path PPU Scroll
                    Map Path PPU Scroll
  $078B              Password Errors (used for debugging)
                    Death Skull IRQ Latch Copy
$088B              Map Path PPU Control
  $078B              Map Path PPU Control
                    Password Errors ''(used for debugging)
                    Death Skull Floor IRQ Latch
  $078C      #02    Map Path PPU Address
  $078C      #02    Map Path PPU Address
  $078C             Update Selector
            #02    Death Skull PPU Address
                    Update Selector
  $078E             Death Skull Background Position
$078F      #02    Death Skull Copy of $0788 and $0789 ''(unused)
  $0790      #10    Entered Password
  $0790      #10    Entered Password
                               ''00 = empty; 01 = whip; 02 = cross; 03 = heart''
                               ''00 = empty; 01 = whip; 02 = cross; 03 = heart''
$0790             Map Screen Platform
             #10    Boss Delay Timer ''(delays primary boss logic)
                    Map Screen Platform
                               ''00 = full; 01 = short west; 02 = bottom east;''
                               ''00 = full; 01 = short west; 02 = bottom east;''
                               ''03 = top west; 04 = middle west; 05 = bottom west''
                               ''03 = top west; 04 = middle west; 05 = bottom west''
Line 614: Line 877:
  $07B3      #02    Lower Block Broken
  $07B3      #02    Lower Block Broken
  $07B5      #02    Upper Block Broken
  $07B5      #02    Upper Block Broken
  $07B7      #02    Wall ID (points to $00F4,X)
  $07B7      #02    Wall ID ''(points to $00F4,X)
  $07C2      #06    Spawner Type
  $07C2      #06    Spawner Type
  $07C8      #06    Spawner State
  $07C8      #06    Spawner State
Line 622: Line 885:
  $07E0      #06    Spawner Offscreen
  $07E0      #06    Spawner Offscreen
  $07E6      #06    Spawner NPC Object
  $07E6      #06    Spawner NPC Object
  $07EC      #06    Bone Dragon King Frames (two ribs per byte)
  $07EC      #06    Bone Dragon King Frames ''(two ribs per byte)
$07EC             Cyclops Lightning State
                    Various Boss Uses
                    Bone Dragon Cycle
                        ''specific uses by address:
                    Giant Bat Leader
                        $07EC   Cyclops Lightning State
                    Dracula Phase
                                Giant Bat Leader
                              ''00 = Dracula; 01 = demon; 02 = Pazuzu''
                                Alucard Bat Leader
  $07ED             Victory State
                                Medusa Leader
                     Bone Dragon Mirrored
                                Death Aggro
                                    ''bit 3 = goto next phase; bit 6 = skull form; bit 7 = attacking
                                Doppelganger Character ''(same as $0634, for subweapons only)
                                Dracula Phase
                                    ''00 = Dracula; 01 = demon; 02 = Pazuzu''
                        $07ED    Giant Bat State
                                Alucard Bat State
                                Medusa Snakes Merged (bitmasked)
                                Death Movement
                                    ''bit 1-2 = horizontal speed; bit 3-4 = vertical speed; left if bit 3 set
                                Creature Shake Amount
                                Moat Dragon #1 Withdraw Speed ''(ff = normal; fe = slain)
                                Doppelganger Keypress ''(only 01 or 02 used for jumping)
                                    ''01 = right; 02 = left; 03 = down; 04 = up; 05 = B; 06 = Up
                        $07EE    Giant Bat Swarm State
                                Alucard Bat Swarm State
                                Death Scythe Limit
                                Wisp Defeats ''(00 = none; 01 = Mummy; 02 = Cyclops; 03 = Baphomet)
                                Moat Dragon #1 Height
                                Doppelganger Status When Hit
                        $07EF    Moat Dragon #2 Withdraw Speed
                                    ''ff = normal; fe = slain
                                Alucard Form
                                    ''00 = humanoid; 01 = wisp; 02 = bat swarm;
                                    ''03 = bat gathering; 04 = smoke
                                Death Scythe Count ''(for spawn positioning)
                                Doppelganger Recovered ''(impedes AI for one frame)
                        $07F0    Moat Dragon #2 Height
                                Alucard Transform Delay
                        $07F1    Mummy Boss Tally
                                Giant Bat Stunned
                                Alucard Bat Converge ''(arguably useless)
                                Death Transitioning
  $07EC             Bone Dragon Cycle
                     Map Effects Timer
$07ED              Bone Dragon Mirrored
                    Stage Clear State ''(XORed by #80 if new partner declined)
                     Collapsing Bridge Length
                     Collapsing Bridge Length
                    Giant Bat State
  $07EE              Bone Dragon Fireball Timer
  $07EE              Bone Dragon Fireball Timer
                    Death Scythe Count
  $07EF              Bone Dragon Attacking
  $07EF              Bone Dragon Attacking
  $07F3              Boss Phase
                    Story Text
$07F0              Story Line
$07F1      #02    Story Text Address
                    Meeting Dialogue Timer
  $07F3              Boss Battle State
                               ''00 = boss fight; 01 = boss defeat; 02 = crystal drop;''
                               ''00 = boss fight; 01 = boss defeat; 02 = crystal drop;''
                               ''03 = battle over; 80 = boss waiting''
                               ''03 = battle over; 80 = boss waiting''
                     Victory Delay (timer after battle over)
                     Stage Clear Delay ''(timer after battle over)
  $07F6              Hard Mode
  $07F6              Hard Mode
  $07F8      #08    Player Name
  $07F8      #08    Player Name


{{Internal Data|game=Castlevania III}}
{{Internal Data}}

Latest revision as of 01:35, 7 November 2024

Chip tiny.png The following article is a RAM map for Castlevania III: Dracula's Curse.

Address    Size    Description
--------   ----    -----------
$0017              Repeat Counter
$0018              System State
                            00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;
                            05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug;
                            08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry;
                            0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug
$0019              System Substate
$001A              System Step Counter
$001B              Updating PPU (prevents stack overflow by skipping game logic)
$001C              Blackout Delay
$001D              X Register Backup
$001E              Pausing Disabled (always 00?)
$001F              Randomizer
$0020              OAM Batch
$0021              Current PROM Bank 
$0022              Previous PROM Bank
$0023              PROM Bank Backup (used by some functions)
$0024              Bank Changed (for debugging probably)
$0025              Nametable Mapping
$0026       #02    Controller Buttons Pressed
                            01 = right; 02 = left; 04 = down; 08 = up;
                            10 = start; 20 = select; 40 = B; 80 = A
$0028       #02    Controller Buttons Held
$002A              Game State (set $006B to 00 before changing)
                            00 = initialize room; 01 = initialize nametables; 02 = load horizontal room;
                            03 = horizontal gameplay; 04 = load vertical room; 05 = vertical gameplay;
                            06 = stair transition start; 07 = stair transition fade; 08 = door transition;
                            09 = initialize fog; 0a = fog parallax; 0b = horizontal partner swap;
                            0c = vertical partner swap; 0d/0e = <CUT CONTENT>; 0f = detect automatic stairs;
                            10 = automatic stair transition; 11 = tally score; 12 = <UNUSED>;
                            13 = flee Aquarius; 14 = initialize flooding; 15 = load flood room;
                            16 = flood room gameplay; 17 = map transition; 18 = autowalk to door;
                            19 = powering up; 1a = freeze water; 1b = thaw ice; 1c = Bone King escape;
                            1d = Aquarius ruptured; 1e = initialize map transition; 1f = map transition exit
$002B              User Paused (toggled by Start button)
$002C              Boss Defeated
$002D              Entry End (valid in Name screen, garbage in Pass screen)
$002E              Checkpoint
$002F              Grant Defeated
$0030       #02    System Effect Timer
$0032              Stage
$0033              Block
$0034              Room
$0035              Lives   
$0036       #03    Score  
$0039              Main Character (change this to not always be Trevor)
$003A              Partner   
                            00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None
$003B              Partner Active 
$003C              Player's Health
                            40 = full
$003D              Boss Health 
$003E              Score Target (for extra life)
$003F              Default Drawing State (write to $006D)
$0040              Scanline IRQ
$0041              Scanline Target
$0042              Default Vertical Scanline Target (write to $0089)
$0043              Scanline Next Target
$0044       #02    Draw State Address
$0046       #08    CHR Banks
$004E              Hard Mode CHR Bank (overwrites $0049)
$0050       #02    Tile Assembly Starting Address
$0052       #02    Tile Assembly Left Address
$0054       #02    Tile Assembly Right Address
$0056       #02    View Position (little endian) 
$0058              View Subpixel Position
$0059              Left Spawn Area
$005A              Right Spawn Area
$005B              Tile Assembly Count Left
$005C              Tile Assembly Count Right
$005D       #02    Tile Assembly Pointer
$005F       #02    Pallet Map Pointer
$0061       #02    Nametable Write Address
$0063              Tile Assembly ID
$0064              Transition Timer
$0065              Scroll Direction
                            00 = left; 01 = right; 02 = unchanged
$0066              View Refreshed Position
$0067              Update View
$0068              Room Orientation
                            00 = horizontal; 80 or 81 = vertical; 82 = scroll up;
                            83 = scroll down; 84 = collapse up; 85 = collapse down
$0069       #02    Stair Map Address
$006B              Menu selections
                   Door State
                            00 = unopened; 01 = load next room; 02 = scroll in next room;
                            03 = unlatch door; 04 = open door; 05 = walk in; 06 = close door;
                            07 = latch door; 08 = scroll out old room; 09 = end transition
$006C              Current Instance (saves X register)
$006D              Drawing State
$006E              View Speed
$006F       #02    PPU Scroll 
$0071              Room Size
$0072              CHR Write Mode
                            00 or 03 = all CHR banks; 01 = status bar banks;  02 = clear NPC banks
$0073              Previous Room Orientation
$0074              Music Loaded
$0075              Transition Nametable (nametable to use after door closes)
$0076              Horizontal Spawner Block
$0077              First Spawner Block
$0078              Boss Scroll Lock
$0079              Vertical Spawner Block
$007A              Vertical Spawner Previous (?)
$007B              Spawner Count
$007C              Vertical Partner Y-Coordinate (used for partner swap in vertical rooms)
$007D              Room Type
                            10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork;
                            50 and 60 = Watery Grave; 70 = Flood Zone; 80 = Collapsing Bridge
                            Note: lower 4 bits alter behavior
$007E       #02    Time
$0080              Wounded Timer (invincibility frames)
$0081              Damage Received/Effect on Player
$0082              PC Height
                            00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing;
                            04 = Trevor duck; 05 = Syfa duck; 06 = Grant duck; 07 = Alucard duck; 08 = Bat
$0084              Hearts
$0085              Trevor Subweapon
                            00 = none; 01 = axe; 02 = boomerang; 03 = knife/book; 04 = holy water; 05 = fireball; 
                            06 = freeze; 07 = orb; 08 = axe; 09 = boomerang; 0a = knife/book ;0b = clock
$0086              Partner Subweapon
$0087              Trevor Subweapon Multiplier   
                            00 = none; 01 = [II]; 02 = [III]
$0088              Partner Subweapon Multiplier
$0089              Vertical Scanline Target (HUD bottom in vertical rooms)
$008B              Conveyance
                            01 = Elevator/Frozen enemy; 02 = Scroll-locked right; 05 = Teeter-totter;
                            06 = Cogwheel; 07 = Mud; 08 = Waterfall; 09 = Waterfall w/current;
                            0a = Conveyor left; 0b = Conveyor right; 0d = Petrified; 0e = Auto-walk
$008C              Whip Spark Timer
$008D              Room Initialized
$008E              Trevor Weapon Level   
                            00 = short; 01 = medium; 02 = long
$008F              Partner Weapon Level
                            00 = one orb; 01 = two orbs; 03 = three orbs
$0090              Knockback Direction
                            00 = left; 01 = right
$0091              Conveyor (see $008B)
$0093              Cog Proximity
                            00 = none; 01 = right OR below; 02 = right AND below
$0094              Cog ID
$0095              Cogwheel Size
                            00 = small; 01 = large
$0096              Terrain Present
$0098       #02    Spawner Data Address
$009a       #02    Terrain Data Address
$009C              Subweapon Kill Count (affects multiplier drops)
$009D              Variable Jump (for Grant)
$009E              Subweapon Iterator
$009F              Upgrade Previous Game State
$00A0              Recent Player Direction (copy of $009E)
$00A1              Previous Player Direction (copy of $0062)
$00A3              Game Step Counter (only increments while game not paused)
$00A4              Map Transition Checkpoint
$00A5              Check Right Tile
$00A6              Default Drawing State Backup (used during partner swap)
$00A7       #02    IRQ Latch Backup (used during partner swap)
$00A9              IRQ Control Backup (used during partner swap)
$00AA              Partner Swap Previous Game State
$00AB              Stopwatch Active
$00AC              Stopwatch Timer
$00AD              Invincibility Potion Timer
$00AE              Alucard Bat Timer (drains 1 heart when decreased to 0)
$00AF              Landing Delay (prevents walking between elevators)
$00B0              Load Doppelganger Sprites (forces CHR updates)
$00B1              Current Instance (backup for X register)
$00B2              Rosary Flash Timer
$00B3              Bridge Out
$00B6              Tile Assembly Count Vertical (only for vertical rooms)
$00B7              Power Up (used for weapon upgrade)
$00B8              Current Platform (ID of elevator or frozen enemy)
$00B9              Crash Timer (stuns Player after falling too far)
$00BA              Boss Special Hitbox (bitmasked)
$00BB              Boss Melee Hitbox
                            01-03 = Doppelganger whip; 04 = Doppelganger staff;
                            05 = Death's Skull; 06 = Moat Dragon head; 
$00BC              Boss Hitbox Phase (redundant with Doppelganger)
$00BD              Bone Dragon King HP
$00BE              Bone Dragon King Misc. Ticker
$00BF              Faint Pause (pauses game when killed or time runs out)
$00C0              Flood Halted
$00C1              Boss Object
$00C2              Boss Second Phase
$00C3              Boss Spawner
$00C4       #02    Boss Frozen Bitmask (used in conjunction with $0790, also prevents ally swap)
$00C6              Autowalk Data Pointer (ref. $00:9140 for autowalk behavior)
                            00 = Clocktower/Default; 04 = Forest; 08 = Alucard Caves;
                            0C = Ghost Ship; 10 = Mountain Pass; 14 = Castle Keep
$00C7              Thaw Timer (for frozen water)
$00C8              Horizontal Scroll Lock (used by crumbling bridge)
$00CA              Flood Height
$00CB              Flood Height Subpixel
$00CC       #02    Boss Stunned Bitmask (similar to $00C4, but stops animation and allows ally swap)
$00CE              Weapon Kill Count (affects item drops)
$00CF              Previous Conveyance (backup of $0088)
$00D0              Vertical Ceiling (lowest y-coordinate in vertical room)
$00D2              Cogwheel ID Copy
$00D3              Grant Corner Y-Coordinate
$00D4              Cogwheel ID
$00E0       #02    Audio Current Note Address
$00E2       #02    Audio Redirect Address
                   Audio Data Temporary Variable
$00E4       #02    Audio Data 16-bit Variable
$00E6       #02    Audio Track Base Address
$00E8       #02    Audio Track Address
$00EA              Audio Channels to Load
$00EB              Audio Routine PROM Bank
$00EC       #02    Audio Current Period (i.e., pitch)
$00EE              Audio Current Channel
$00EF              Audio Track ID
$00F0       #04    Candle Status (32-bit mask)
$00F4       #04    Breakable Wall Status
                            00 = unused/unbroken; ff = broken
$00F8       #02    Previous Controller Buttons Pressed
$00FA       #02    Previous Controller Buttons Held
$00FC       #02    PPU Scroll
$00FE              PPU Mask (for hue shifts and greyscale)
$00FF              PPU Control 
       Audio channels: (grouped by 3, 5, or 7)
           00 = BGM Square 1; 021 = BGM Square 2; 02 = BGM Triangle;
           03 = SFX Square 1; 04 = SFX Square 2;
           05 = Drums (DCM & Noise); 06 = Noise
$0100       #07    Audio Channel Note Duration
$0107       #07    Audio Channel Song ID
$010E       #07    Audio Channel Next Note Duration
$0115       #07    Audio Channel Behavior
                             bit 0 = SFX (ignore ritenuto); bits 1-2 = init/decay/sustain/release; 
                             bit 3 = Al segno loop; bit 5 = coda loop; bit 6 = ignore envelope;
$011C       #07    Audio Channel Loop Count
$0123       #07    Audio Channel Note Address Low Byte
$012A       #07    Audio Channel Note Address High Byte
$0131       #07    Audio Channel Al Segno Address Low Byte
$0138       #07    Audio Channel Al Segno Address High Byte
$013F       #07    Audio Channel Coda Address Low Byte
$0146       #07    Audio Channel Coda Address High Byte
$014D       #07    Audio Channel Previous Period High Byte
$0152              Audio Global Dampening (lowers volume for all channels)
$0154       #07    Audio Channel Volume
$0159              Audio Global Fade Timer (decreases $017C after 2b steps)
$015B       #07    Audio Channel Next Control Value / Channel Dampening Placeholder
$0160              Audio Global Fade Delay
$0162       #07    Audio Channel Default Duty Cycle
$0167              Audio Global Mute for Pause
$0169       #05    Audio Channel Dampening (lowers volume for specific channel)
$016E       #05    Audio Channel Attributes
                             bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled needs more info
$0173       #05    Audio Channel Pitch Bend Amount
$0178       #05    Audio Channel Period Low Byte Backup (useless?)
$017D       #03    Audio Channel Octave (raises octave by 5-n)
$0180       #03    Audio Channel Note Offset
                             (adds signed value to note ID to look up period)
$0183       #03    Audio Channel Period Low 
$0186       #03    Audio Channel Period High 
$0189       #03    Audio Channel Volume Envelope
                             (if bit 7 set, fade out instead based on bits 0-3)
$018C              Audio SFX Register Offset
$018D              Audio Global Ritenuto Delay (counts up to $018E)
$018E              Audio Global Ritenuto Cutoff (frames until $018F set)
$018F              Audio Global Ritenuto (prolongs BGM note duration when set)
$0190       #02    Audio SFX Square Sweep
$0192              Audio Current DPCM
$0193              Audio Triangle Staccato Timer
$0194              Audio Triangle Linear Counter (only used with $193)
$0195       #07    Audio Channel PROM Bank
$019C              Audio SFX Square 1 Sweep (write to $4001)
$0200      #100    OAM Data
$0300       #a0    Tile Data
$03C0       #03    Audio Channel Volume Envelope Duration
$03C3       #03    Audio Channel Volume Envelope Position
$03C6       #03    Audio Channel Volume Envelope Loop Count
$03C9       #03    Audio Channel Volume Envelope Loop Point
$03CC       #03    Audio Channel Fadeout Point (fades out when equal to $100,X)
$03CF       #03    Audio Channel Volume Envelope 
                             (bits 0-3 = value; $03CC = duration*value >> 4)
$03D2       #03    Audio Channel Next Fade Duration
$03D5       #03    Audio Channel Fade Duration
$03D8       #03    Audio Channel Alternate Duty Cycle
$03DB       #03    Audio Channel Next Pitchbend Duration
$03DE       #03    Audio Channel Pitchbend Duration
$03E1       #03    Audio Channel Sweep Rate
$0400       #1c    Sprite Frame Index
$041C       #1c    Y-Coordinate
$0438       #1c    X-Coordinate 
$0454       #1c    Sprite Attributes (palette & background priority)
$0470       #1c    Attributes
                            01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker;
                            10 = illusory; 20 = inanimate; 40 = moving; 80 = invisible
$048C       #1c    Animation Batch (even numbers)
                            00-06 = Player; 08-12 = NPCs; 14 = Epilogue; 16-1C = Doppelganger
$04A8       #1C    Sprite Mirrored
$04C4       #17    X-Coordinate Subpixel
$04DB       #17    Y-Coordinate Subpixel
$04F2       #17    Horizontal Speed
  $0505            Partner Swap Ghosting Amount
$0509       #17    Horizontal Speed Subpixel
  $051C            Partner Swap Ghosting Amount Fractional
$0520       #17    Vertical Speed
$0537       #17    Vertical Speed Subpixel
$054E       #17    Object Index
$0565              Player State
$0566       #11    Stun Timer
$0578              Weapon State
$0579       #03    Subweapon State
$057C       #17    Animation Timer
$0593       #17    Sprite Frame (used to calculate $0400,X)
$05AA       #17    Sprite Index
$05C1              Moving Down
$05C2       #12    NPC State
$05D4              Player Stunned State
                   Partner Swap X-coordinate
$05D5       #03    Subweapon Throw Delay
$05D8              Player Jump State
                             00-1D = Trevor/Syfa/Alucard; 1E-39 = Grant
$05D9       #0c    Boss Use
$05E5       #06    Candle Drop
                             83 = Axe; 84 = Cross; 85 = Dagger; 86 = Holy Water; 87 = Stopwatch;
                             88 = Syfa Fire; 89 = Syfa Ice; 8a = Syfa Water; 8b = Grant Dagger;
                             8c Grant Axe; 8d-8f = Upgrades (8f removed); 90 = Wall Meat; 
                             91 = Invincibility Potion; 92 = Rosary; 93-9b = Coins; 9c = 1UP; 
                             9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers
$05EB              Stair Stun Timer
                   Partner Swap Ghosting Speed Fractional
$05EF              Stair Direction
                   Grant Jump State Fraction (functions like speed variables)
$05F0       #12    AI Class (determines behavior)
$0602              Stair Stun (decreases $05EB)
                   Freezing Rivers
                   Turning Into Bat
                   Partner Swap Ghosting Speed 
$0606              Grant Gravity Subpixel (increases $05EF for Grant)
$0607       #12    State Timer (time between state changes for most NPCs)
                   Sinusoid Center Axis
$0619              Partner Swap Y-Coordinate
$061A       #03    Subweapon Damage and Multikill Count
$061D              Stair Timer (time to climb one step)
                   Grant Gravity (increases $05D8 for Grant)
$061E       #12    Miscellaneous Ticker (usually timer or counter for NPCs)
$0630              Weapon Damage
$0631       #03    Subweapon Deflection (copy of $0658,X on Cross hit)
$0634       #17    Miscellaneous Use (used by a couple NPCs)
$0646       #12    Spawner Index
$0658       #0d    NPC Damage
$0664       #06    Candle Active
$066A       #12    Applied Effect (copy of $061A,X on subweapon hit)
$067B       #12    NPC Hitpoints
$068E       #12    Weapons Impact
                             01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3
$06A0       #03    Audio Channel Pitch Envelope Loop Start
$06A3       #03    Audio Channel Pitch Envelope ID
$06A6       #03    Audio Channel Pitch Envelope Position
$06A9       #03    Audio Channel Pitch Envelope Loop Count
$06AC       #03    Audio Channel Sustain State (80 = disabled)
$06AF       #03    Audio Channel Sustain Position (from 0 to 3)
$06B2       #03    Audio Channel Sustain Dampen
$06B5       #04    Audio BGM Square 1 Sustain Period Low Bytes
$06B9       #04    Audio BGM Square 2 Sustain Period Low Bytes
$06BD       #04    Audio BGM Square 1 Sustain Period High Bytes
$06C1       #04    Audio BGM Square 2 Sustain Period High Bytes
$06C8              Boss Scream Time (stops DPCM at f0)
$06C9              Music Paused
$06E0       #90    Collision Map
                             00 = empty; 01 = mud; 02 = convey right; 03 = convey left;
                             04 = fragile; 05 = ceiling spike; 06 = solid; 07 = floor spike;
                             08 = ice; 0c-0f = cracking
$0770       #08    CHR5 Solid Definitions
                             Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;
                             Byte 4 = fragile; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike
$0778       #08    CHR6 Solid Definitions 
$0780              Background Animation Frame
                   Entry Selector Column
                   Map Clipping
                             00 = To Grant; 01 = To Syfa; 02 = From Alucard
$0781              Background Animation Timer
                   Entry Selector Row
                   Map Fade-out Value
$0782       #40    Fog Parallax Positions
                             32 rows of parallax with 2 bytes per row:
                             Byte 0 = subpixel offset; Byte 1 = pixel offset
                   Previous Selector Column
                   Map Timer
                   Epilogue Partner
                   Sypha's Frozen Tile Column
$0783              Previous Selector Row
                   Map Horizontal Speed Subpixel
                   Epilogue State
                   Sypha's Frozen Tile Row
$0784              Name Cursor Position
                   Map Horizontal Speed
                   Castle Shake Direction
                   Leftmost Frozen Tile Column
$0785              Map Vertical Speed Subpixel
                   Epilogue Text Page
                   Leftmost Frozen Tile Row
$0786              Password Icon
                   Map Vertical Speed
                   Rightmost Frozen Tile Column
$0787              Previous Password Icon
                   Map Scroll Timer
                   Rightmost Frozen Tile Row
$0788       #02    Password Decryption Dump
                   Map X-coordinate Subpixel
                   Epilogue Scroll Timer
                   Water Freeze Counter
$0789              Map Y-coordinate Subpixel
                   Frozen Water Room Type
$078A              Epilogue Timer
                   Map Path PPU Scroll
$078B              Map Path PPU Control
                   Password Errors (used for debugging)
$078C       #02    Map Path PPU Address
                   Update Selector
$0790       #10    Entered Password
                             00 = empty; 01 = whip; 02 = cross; 03 = heart
            #10    Boss Delay Timer (maintains current behavior while decreasing)
                   Map Screen Platform
                             00 = full; 01 = short west; 02 = bottom east;
                             03 = top west; 04 = middle west; 05 = bottom west
$07A0       #0a    Generated Password
$07B1       #02    Stacked Breakable Wall
$07B3       #02    Lower Block Broken
$07B5       #02    Upper Block Broken
$07B7       #02    Wall ID (points to $00F4,X)
$07C2       #06    Spawner Type
$07C8       #06    Spawner State
$07CE       #06    Spawner Timer
$07D4       #06    Spawner Y-Coordinate
$07DA       #06    Spawner x-Coordinate
$07E0       #06    Spawner Offscreen
$07E6       #06    Spawner NPC Object
$07EC       #06    Bone Dragon King Frames (two ribs per byte)
                   Cyclops Lightning State
                   Bone Dragon Cycle
                   Giant Bat Leader
                   Dracula Phase
                             00 = Dracula; 01 = demon; 02 = Pazuzu
$07ED              Stage Clear State
                   Bone Dragon Mirrored
                   Collapsing Bridge Length
                   Giant Bat State
$07EE              Bone Dragon Fireball Timer
                   Death Scythe Count
$07EF              Bone Dragon Attacking
$07F3              Boss Battle State
                             00 = boss fight; 01 = boss defeat; 02 = crystal drop;
                             03 = battle over; 80 = boss waiting
                   Victory Delay (timer after battle over)
$07F6              Hard Mode
$07F8       #08    Player Name


Chip tiny.png The following article is a RAM map for Castlevania III: Dracula's Curse.

Address    Size    Description
--------   ----    -----------
$0017            Repeat Counter
                 Story Reel Border State
                            00 = no border; 01 = draw border; 03 = write to $0303
$0018              System State
                            00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;
                            05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug;
                            08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry;
                            0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug
$0019              System Substate
$001B              System Step Counter
$001C              Updating PPU (prevents stack overflow by skipping game logic)
$001D              Blackout Delay
$001E              X Register Backup
$001F              Pausing Disabled (always 00?)
$0020              Randomizer
$0021              PPU Bank (write to $B003)
$0022              OAM Batch
$0023              Current PROM Bank
$0024              Previous PROM Bank
$0025              PROM Bank Backup (used by some functions)
$0026              Bank Changed (for debugging probably)
$0028       #02    Controller Buttons Pressed
                            01 = right; 02 = left; 04 = down; 08 = up;
                            10 = start; 20 = select; 40 = B; 80 = A
$002A       #02    Controller Buttons Held
$002C              Game State (set $0068 to 00 before changing)
                            00 = initialize room; 01 = initialize nametables; 02 = load horizontal room;
                            03 = horizontal gameplay; 04 = load vertical room; 05 = vertical gameplay;
                            06 = stair transition start; 07 = stair transition fade; 08 = door transition;
                            09 = initialize fog; 0a = fog parallax; 0b = horizontal partner swap;
                            0c = vertical partner swap; 0d/0e = <CUT CONTENT>; 0f = detect automatic stairs;
                            10 = automatic stair transition; 11 = tally score; 12 = <UNUSED>;
                            13 = flee Aquarius; 14 = initialize flooding; 15 = load flood room;
                            16 = flood room gameplay; 17 = map transition; 18 = autowalk to door;
                            19 = powering up; 1a = freeze water; 1b = thaw ice; 1c = Bone King escape;
                            1d = Aquarius ruptured; 1e = initialize map transition; 1f = map transition exit
$002D              User Paused (toggled by Start button)
$002E              Boss Defeated 
$002F              Entry End (valid in Name screen, garbage in Pass screen)
$0030              Checkpoint (used for Password Entry)
$0031              Grant Defeated 
$0032       #02    System Effect Timer
$0034              Stage
$0035              Block
$0036              Room
$0037              Lives
$0038       #08    CHR Banks
$0040              IRQ Control
$0041       #02    IRQ Latch
$0043              Default Drawing State (write to $006A)
$0044       #03    Score
$0047              Player Object (change this to not always be Trevor)
$0048              Partner   
                            00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None
$0049              Partner Active
$004A              Player's Health
                            40 = full
$004B              Boss Health 
$004C              Score Target (for extra life)
$004D       #02    Tile Assembly Room Address
$004F       #02    Tile Assembly Left Address
$0051       #02    Tile Assembly Right Address
$0053       #02    View Position 
$0055              View Subpixel Position
$0056              Left Spawn Area
$0057              Right Spawn Area
$0058              Tile Assembly Count Left
$0059              Tile Assembly Count Right
$005A       #02    Tile Assembly Pointer
$005C       #02    Pallet Map Pointer
$005E       #02    Nametable Write Address
$0060              Tile Assembly ID
$0061              Transition Timer
$0062              Scroll Direction
                            00 = left; 01 = right; 02 = unchanged
$0063              View Refreshed Position
$0064              Update View
$0065              Room Orientation
                            00 = horizontal; 80 or 81 = vertical; 82 = scroll up;
                            83 = scroll down; 84 = collapse up; 85 = collapse down
$0066       #02    Stair Map Address
$0068              Menu selections
                   Door State
                            00 = unopened; 01 = load next room; 02 = scroll in next room;
                            03 = unlatch door; 04 = open door; 05 = walk in; 06 = close door;
                            07 = latch door; 08 = scroll out old room; 09 = end transition
$0069              Current Instance (saves X register)
$006A              Drawing State
$006B              View Speed
$006C       #02    PPU Write Position
$006E              Room Size
$006F              CHR Write Mode
                            00 or 03 = all CHR banks; 01 = status bar banks;  02 = clear NPC banks
$0070              Previous Room Orientation
$0071              Music Loaded
$0072              Transition Nametable (nametable to use after door closes)
$0073              Horizontal Spawner Block
$0074              First Spawner Block
$0075              Boss Scroll Lock
$0076              Vertical Spawner Block
$0077              Vertical Spawner Previous (?)
$0078              Spawner Count
$0079              Vertical Partner Y-Coordinate (used for partner swap in vertical rooms)
$007A              Room Type
                            10 = Stormclouds; 20 = Autowalk; 30 = River; 40 = Clockwork;
                            50 and 60 = Watery Grave; 70 = Flood Zone; 80 = Collapsing Bridge
                            Note: lower 4 bits alter behavior
$007B       #02    Time 
$007D              Wounded Timer (invincibility frames)
$007E              Damage Received/Effect On Player
$007F              PC Height
                            00 = Trevor standing; 01 = Syfa standing; 02 = Grant standing; 03 = Alucard standing;
                            04 = Trevor duck; 05 = Syfa duck; 06 = Grant duck; 07 = Alucard duck; 08 = Bat
$0081              Hearts
$0082              Trevor Subweapon
                            00 = none; 01 = axe; 02 = boomerang; 03 = knife/book; 04 = holy water; 05 = fireball; 
                            06 = freeze; 07 = orb; 08 = axe; 09 = boomerang; 0a = knife/book ;0b = clock
$0083              Partner Subweapon
$0084              Trevor Subweapon Multiplier   
                            00 = none; 01 = [II]; 02 = [III]
$0085              Partner Subweapon Multiplier
$0088              Conveyance
                            01 = Elevator/Frozen enemy; 02 = Scroll-locked right; 05 = Teeter-totter;
                            06 = Cogwheel; 07 = Mud; 08 = Waterfall; 09 = Waterfall w/current;
                            0a = Conveyor left; 0b = Conveyor right; 0d = Petrified; 0e = Auto-walk
$0089              Whip Spark Timer
$008A              Room Initialized
$008B              Trevor Weapon Level   
                            00 = short; 01 = medium; 02 = long
$008C              Partner Weapon Level
                            00 = one orb; 01 = two orbs; 03 = three orbs
$008D              Knockback Direction
                            00 = left; 01 = right
$008E              Conveyor (see $0088)
$0090              Cog Proximity
                            00 = none; 01 = right OR below; 02 = right AND below
$0091              Cog ID
$0092              Cogwheel Size
                            00 = small; 01 = large
$0093              Terrain Present
$0095       #02    Spawner Data Address
$0097       #02    Terrain Data Address
$0099              Subweapon Kill Count (affects multiplier drops)
$009A              Variable Jump (for Grant)
$009B              Subweapon Iterator
$009C              Upgrade Previous Game State
$009D              Recent Player Direction (copy of $009E)
$009E              Previous Player Direction (copy of $0062)
$00A0              Game Step Counter (only increments while game not paused)
$00A1              Map Transition Checkpoint
$00A2              Check Right Tile
$00A3              Default Drawing State Backup (used during partner swap)
$00A4       #02    IRQ Latch Backup (used during partner swap)
$00A6              IRQ Control Backup (used during partner swap)
$00A7              Partner Swap Previous Game State
$00A8              Stopwatch Active
$00A9              Stopwatch Timer
$00AA              Invincibility Potion Timer
$00AB              Alucard Bat Timer (drains 1 heart when decreased to 0)
$00AC              Landing Delay (prevents walking between elevators)
$00AD              Load Doppelganger Sprites (forces CHR updates)
$00AE              Current Instance (backup for X register)
$00AF              Rosary Flash Timer
$00B0              Bridge Out
$00B3              Tile Assembly Count Vertical (only for vertical rooms)
$00B4              Power Up (used for weapon upgrade)
$00B5              Current Platform (ID of elevator or frozen enemy)
$00B6              Crash Timer (stuns Player after falling too far)
$00B7              Boss Special Hitbox (bitmasked)
$00B8              Boss Melee Hitbox
                            01-03 = Doppelganger whip; 04 = Doppelganger staff;
                            05 = Death's Skull; 06 = Moat Dragon head; 
$00B9              Boss Hitbox Phase (redundant with Doppelganger)
$00BA              Bone Dragon King HP
$00BB              Bone Dragon King Misc. Ticker
$00BC              Faint Pause (pauses game when killed or time runs out)
$00BD              Flood Paused (only set when Bone Dragon flees?)
$00BE              Boss Object
$00BF              Boss Second Phase (for Death, set then cleared for Bone Dragon)
$00C0              Boss Spawner ID
$00C1       #02    Boss Appearance Bitmask (used in conjunction with $0790, prevents ally swap)
$00C3              Autowalk Data Pointer (ref. $00:9140 for autowalk behavior)
                            00 = Clocktower/Default; 04 = Forest; 08 = Alucard Caves;
                            0C = Ghost Ship; 10 = Mountain Pass; 14 = Castle Keep
$00C4              Thaw Timer (for frozen waters)
$00C5              Horizontal Scroll Lock (used by crumbling bridge)
$00C7              Flood Height
$00C8              Flood Height Subpixel
$00C9       #02    Boss Stun Bitmask (similar to $00C1, stops animation, allows ally swap)
$00CB              Weapon Kill Count (affects item drops)
$00CC              Previous Conveyance (backup of $0088)
$00CD              Vertical Ceiling (lowest y-coordinate in vertical room)
$00CF              Cogwheel ID Copy
$00D0              Grant Corner Y-Coordinate
$00D1              Cogwheel ID
$00E0       #02    Audio Current Note Address
$00E2       #02    Audio Redirect Address
                   Audio Data Temporary Variable
$00E4       #02    Audio Data 16-bit Variable
$00E6       #02    Audio Track Base Address
$00E8       #02    Audio Track Address
$00EA              Audio Channels to Load
$00EB              Audio Routine PROM Bank
$00EC       #02    Audio Current Period (i.e., pitch)
$00EE              Audio Current Channel
$00EF              Audio Track ID
$00F0       #04    Candle Status (32-bit mask)
$00F4       #04    Breakable Wall Status
                            00 = unused/unbroken; ff = broken
$00F8       #02    Previous Controller Buttons Pressed
$00FA       #02    Previous Controller Buttons Held
$00FC       #02    PPU Scroll
$00FE              PPU Mask (for hue shifts and greyscale)
$00FF              PPU Control
       Audio channels: (grouped by 5, 7, or 9)
           00 = Pulse 1; 01 = Pulse 2; 02 = Sawtooth; 03 = BGM Square 1; 04 = BGM Square 2
           05 = SFX Square 1; 06 = SFX Square 2;
           07 = Drums (DCM & Noise); 08 = Noise
$0100       #09    Audio Channel Note Duration
$0109       #09    Audio Channel Song ID
$0112       #09    Audio Channel Next Note Duration
$011B       #09    Audio Channel Behavior
                             bit 0 = SFX (ignore ritenuto); bits 1-2 = init/decay/sustain/release; 
                             bit 3 = Al segno loop; bit 5 = coda loop; bit 6 = ignore envelope;
$0124       #09    Audio Channel Loop Count
$012D       #09    Audio Channel Note Address Low Byte
$0136       #09    Audio Channel Note Address High Byte
$013F       #09    Audio Channel Al Segno Address Low Byte
$0148       #09    Audio Channel Al Segno Address High Byte
$0151       #09    Audio Channel Coda Address Low Byte
$015A       #09    Audio Channel Coda Address High Byte
$0163       #09    Audio Channel Previous Period High Byte
$016A              Audio Global Dampening (lowers volume for all channels)
$016C       #09    Audio Channel Volume
$0173              Audio Global Fade Timer (decreases $017C after 2b steps)
$0175       #09    Audio Channel Next Control Value / Channel Dampening Placeholder
$017C              Audio Global Fade Delay
$017E       #09    Audio Channel Default Duty Cycle
$0185              Audio Global Mute for Pause
$0187       #07    Audio Channel Dampening (lowers volume for specific channel)
$018E       #07    Audio Channel Attributes
                             bit 4 = use waveform; bit 5 = alternate duty; bit 7 = disabled needs more info
$0195       #07    Audio Channel Pitch Bend Amount
$019C       #02    Audio SFX Square Sweep
$019E              Audio DPCM ID
$019F       #02    Audio Square Period Low Byte (write to $4002/$4006)
$01A3       #05    Audio Channel Octave (raises octave by 5-n)
$01A8       #05    Audio Channel Note Offset
                             (adds signed value to note ID to look up period)
$01AD       #05    Audio Channel Period Low 
$01B2       #05    Audio Channel Period High 
$01B7       #05    Audio Channel Volume Envelope
                             (if bit 7 set, fade out instead based on bits 0-3)
$01BC              Audio SFX Square Register Offset
$01BD              Audio Global Ritenuto Delay (counts up to $01BE)
$01BE              Audio Global Ritenuto Cutoff (frames until $01BF set)
$01BF              Audio Global Ritenuto (prolongs BGM note duration when set)
$0200      #100    OAM Data
$0300       #a0    Tile Data
$03C0       #05    Audio Channel Volume Envelope Duration
$03C5       #05    Audio Channel Volume Envelope Position
$03CA       #05    Audio Channel Volume Envelope Loop Count
$03CF       #05    Audio Channel Volume Envelope Loop Point
$03D4       #05    Audio Channel Fadeout Point (fades out when equal to $100,X)
$03D9       #05    Audio Channel Volume Envelope 
                             (bits 0-3 = value; $03D4 = duration*value >> 4)
$03DE       #05    Audio Channel Next Fade Duration
$03E3       #05    Audio Channel Fade Duration
$03E8       #05    Audio Channel Alternate Duty Cycle
$03ED       #05    Audio Channel Next Pitchbend Duration
$03F2       #05    Audio Channel Pitchbend Duration
$03F7       #05    Audio Channel Sweep Rate
$0400       #1c    Sprite Frame Index
$041C       #1c    Y-Coordinate
$0438       #1c    X-Coordinate 
$0454       #1c    Sprite Attributes (palette & background priority)
$0470       #1c    Attributes
                             01 = destroyed; 02 = frozen; 04 = unknown; 08 = flicker;
                             10 = illusory; 20 = inanimate; 40 = moving; 80 = invisible
$048C       #1c    Animation Batch (even numbers)
                             00-06 = Player; 08-12 = NPCs; 14 = Epilogue; 16-1C = Doppelganger
$04A8       #1C    Sprite Mirrored
$04C4       #17    X-Coordinate Subpixel
$04DB       #17    Y-Coordinate Subpixel
$04F2       #17    Horizontal Speed
  $0505            Partner Swap Ghosting Amount
$0509       #17    Horizontal Speed Subpixel
  $051C            Partner Swap Ghosting Amount Fractional
$0520       #17    Vertical Speed
$0537       #17    Vertical Speed Subpixel
$054E       #17    Object Index
$0565              Player State
$0566       #11    Stun Timer
$0578              Weapon State
$0579       #03    Subweapon State
$057C       #17    Animation Timer
$0593       #17    Sprite Frame (used to calculate $0400,X)
$05AA       #17    Sprite Index
$05C1              Moving Down
$05C2       #12    NPC State
$05D4              Player Stunned State
                   Partner Swap X-Coordinate
$05D5       #03    Subweapon Throw Delay
$05D8              Player Jump State
                             00-1D = Trevor/Syfa/Alucard; 1E-39 = Grant
$05D9       #0c    Boss Use
$05E5       #06    Candle Drop
                             83 = Axe; 84 = Cross; 85 = Dagger; 86 = Holy Water; 87 = Stopwatch;
                             88 = Syfa Fire; 89 = Syfa Ice; 8a = Syfa Water; 8b = Grant Dagger;
                             8c Grant Axe; 8d-8f = Upgrades (8f removed); 90 = Wall Meat; 
                             91 = Invincibility Potion; 92 = Rosary; 93-9b = Coins; 9c = 1UP; 
                             9d = Big Heart; 9e = Small Heart; 9f-a0 = Multipliers
$05EB              Stair Stun Timer
                   Partner Swap Ghosting Speed Fractional
$05EF              Stair Direction
                   Grant Jump State Fraction (functions like speed variables)
$05F0       #12    AI Class (determines behavior)
$0602              Stair Stun (decreases $05EB)
                   Freezing Rivers
                   Turning Into Bat
                   Partner Swap Ghosting Speed 
$0606              Grant Gravity Subpixel (increases $05EF for Grant)
$0607       #12    State Timer (time between state changes for most NPCs)
                   Sinusoid Center Axis
$0619              Partner Swap Y-Coordinate
$061A       #03    Subweapon Damage and Multikill Count
$061D              Stair Timer (time to climb one step)
                   Grant Gravity (increases $05D8 for Grant)
$061E       #12    Miscellaneous Ticker (usually timer or counter for NPCs)
$0630              Weapon Damage
$0631       #03    Subweapon Deflection (copy of $0658,X on Cross hit)
$0634       #17    Miscellaneous Use (used by a couple NPCs)
$0646       #12    Spawner Index
$0658       #0d    NPC Damage
$0664       #06    Candle Active
$066A       #12    Applied Effect (copy of $061A,X on subweapon hit)
$067B       #12    NPC Hitpoints
$068E       #12    Weapons Impact
                             01 = weapon; 02 = subweapon 1; 04 = subweapon 2; 08 = subweapon 3
$06A0       #05    Audio Channel Pitch Envelope Loop Start
$06A5       #05    Audio Channel Pitch Envelope ID
$06AA       #05    Audio Channel Pitch Envelope Position
$06AF       #05    Audio Channel Pitch Envelope Loop Count
$06B4       #05    Audio Channel Sustain State
$06B9       #05    Audio Channel Sustain Position (from 0 to 3)
$06BE       #05    Audio Channel Sustain Dampen
$06C3       #04    Audio BGM Square 1 Sustain Period Low Bytes
$06C7       #04    Audio BGM Square 2 Sustain Period Low Bytes
$06CB       #04    Audio BGM Square 1 Sustain Period High Bytes
$06CF       #04    Audio BGM Square 2 Sustain Period High Bytes
$06D3       #09    Audio Channel PROM Bank
$06DC              Music Paused
$06DD              Boss Scream Duration stops DPCM playback
$06E0       #90    Collision Map
                             00 = empty; 01 = mud; 02 = convey right; 03 = convey left;
                             04 = fragile; 05 = ceiling spike; 06 = solid; 07 = floor spike;
                             08 = ice; 0c-0f = cracking
$0770       #08    CHR5 Solid Definitions
                             Byte 0 = empty; Byte 1 = mud; Byte 2 = convey right; Byte 3 = convey left;
                             Byte 4 = fragile; Byte 5 = ceiling spike; Byte 6 = solid; Byte 7 = floor spike
$0778       #08    CHR6 Solid Definitions
$0780              Entry Selector Column
                   Background Animation Frame
                   Map Clipping
                             00 = To Grant; 01 = To Syfa; 02 = From Alucard
$0781              Background Animation Timer
                   Entry Selector Row
                   Map Fade-out Value
$0782       #40    Fog Parallax Positions
                             32 rows of parallax with 2 bytes per row:
                             Byte 0 = subpixel offset; Byte 1 = pixel offset
                   Previous Selector Column
                   Map Timer
                   Epilogue Partner
                   Sypha's Frozen Tile Column
$0783              Previous Selector Row
                   Map Horizontal Speed Subpixel
                   Epilogue State
                   Sypha's Frozen Tile Row
                   Death Skull IRQ Latch
$0784              Name Cursor Position
                   Map Horizontal Speed
                   Castle Shake Direction
                   Leftmost Frozen Tile Column
                   Death Skull Floor IRQ Latch (always 86)
$0785       #02    Death Skull PPU Address
                   Map Vertical Speed Subpixel
                   Epilogue Text Page
                   Leftmost Frozen Tile Row
$0786              Password Icon
                   Map Vertical Speed
                   Rightmost Frozen Tile Column
$0787              Previous Password Icon
                   Map Scroll Timer
                   Rightmost Frozen Tile Row
                   Death Skull Background Position
$0788       #02    Password Decryption Dump
                   Map X-coordinate Subpixel
                   Epilogue Scroll Timer
                   Water Freeze Counter
$0789              Map Y-coordinate Subpixel
                   Frozen Water Room Type
$078A              Epilogue Timer
                   Map Path PPU Scroll
                   Death Skull IRQ Latch Copy
$078B              Map Path PPU Control
                   Password Errors (used for debugging)
                   Death Skull Floor IRQ Latch
$078C       #02    Map Path PPU Address
            #02    Death Skull PPU Address
                   Update Selector
$078E              Death Skull Background Position
$078F       #02    Death Skull Copy of $0788 and $0789 (unused)
$0790       #10    Entered Password
                             00 = empty; 01 = whip; 02 = cross; 03 = heart
            #10    Boss Delay Timer (delays primary boss logic)
                   Map Screen Platform
                             00 = full; 01 = short west; 02 = bottom east;
                             03 = top west; 04 = middle west; 05 = bottom west
$07A0       #0a    Generated Password
$07B1       #02    Stacked Breakable Wall
$07B3       #02    Lower Block Broken
$07B5       #02    Upper Block Broken
$07B7       #02    Wall ID (points to $00F4,X)
$07C2       #06    Spawner Type
$07C8       #06    Spawner State
$07CE       #06    Spawner Timer
$07D4       #06    Spawner Y-Coordinate
$07DA       #06    Spawner x-Coordinate
$07E0       #06    Spawner Offscreen
$07E6       #06    Spawner NPC Object
$07EC       #06    Bone Dragon King Frames (two ribs per byte)
                   Various Boss Uses 
                       specific uses by address:
                       $07EC    Cyclops Lightning State
                                Giant Bat Leader
                                Alucard Bat Leader
                                Medusa Leader
                                Death Aggro 
                                    bit 3 = goto next phase; bit 6 = skull form; bit 7 = attacking
                                Doppelganger Character (same as $0634, for subweapons only)
                                Dracula Phase
                                    00 = Dracula; 01 = demon; 02 = Pazuzu
                       $07ED    Giant Bat State
                                Alucard Bat State
                                Medusa Snakes Merged (bitmasked)
                                Death Movement
                                    bit 1-2 = horizontal speed; bit 3-4 = vertical speed; left if bit 3 set
                                Creature Shake Amount
                                Moat Dragon #1 Withdraw Speed (ff = normal; fe = slain)
                                Doppelganger Keypress (only 01 or 02 used for jumping)
                                    01 = right; 02 = left; 03 = down; 04 = up; 05 = B; 06 = Up
                       $07EE    Giant Bat Swarm State
                                Alucard Bat Swarm State
                                Death Scythe Limit
                                Wisp Defeats (00 = none; 01 = Mummy; 02 = Cyclops; 03 = Baphomet)
                                Moat Dragon #1 Height
                                Doppelganger Status When Hit
                       $07EF    Moat Dragon #2 Withdraw Speed 
                                    ff = normal; fe = slain
                                Alucard Form
                                    00 = humanoid; 01 = wisp; 02 = bat swarm;
                                    03 = bat gathering; 04 = smoke
                                Death Scythe Count (for spawn positioning)
                                Doppelganger Recovered (impedes AI for one frame)
                       $07F0    Moat Dragon #2 Height
                                Alucard Transform Delay
                       $07F1    Mummy Boss Tally
                                Giant Bat Stunned
                                Alucard Bat Converge (arguably useless)
                                Death Transitioning
$07EC              Bone Dragon Cycle
                   Map Effects Timer
$07ED              Bone Dragon Mirrored
                   Stage Clear State (XORed by #80 if new partner declined)
                   Collapsing Bridge Length
$07EE              Bone Dragon Fireball Timer
$07EF              Bone Dragon Attacking
                   Story Text
$07F0              Story Line
$07F1       #02    Story Text Address
                   Meeting Dialogue Timer
$07F3              Boss Battle State
                             00 = boss fight; 01 = boss defeat; 02 = crystal drop;
                             03 = battle over; 80 = boss waiting
                   Stage Clear Delay (timer after battle over)
$07F6              Hard Mode
$07F8       #08    Player Name