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

From Data Crystal
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(40 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{rammap|game=Castlevania III}}
{{rammap}}
  Address    Size    Description
  Address    Size    Description
  --------  ----    -----------
  --------  ----    -----------
   $19              Menu Mode (meaning depends on menu, i.e. title screen, password entry, game over, etc)
$0017              Repeat Counter
   $28             Controller 1 Pressed
$0018              System State
  $2A             Controller 1
                            ''00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;''
  $32             Timer
                            ''05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug;''
  $35             Lives   
                            ''08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry;''
   $36             Score 0000xx    
                            ''0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug''
   $37             Score 00xx00    
$0019              System Substate
   $38             Score xx0000    
$001A              System Step Counter
   $3A             Partner  00 = None; 01 = Syfa; 02 = Grant; 03 = Alucard
$001B              Updating PPU ''(prevents stack overflow by skipping game logic)
   $3C             Energy  
$001C              Blackout Delay
   $68             Menu selection (Start/Password or Continue/Password)
$001D              X Register Backup
   $84             Hearts
$001E              Pausing Disabled ''(always 00?)
   $F8             Controller 1 Pressed (same as 28?)
$001F              Randomizer
   $FA             Controller 1        (same as 2A?)
$0020              OAM Batch
   $7E             Time 00xx 
$0021              Current PROM Bank
   $7F             Time xx00 
$0022              Previous PROM Bank
   
$0023              PROM Bank Backup ''(used by some functions)''
  $0200      $100    OAM (sprites)
$0024              Bank Changed ''(for debugging probably)''
   
$0025              Nametable Mapping
  $0790       $10    Password data (populated during password entry)
$0026      #02   Controller Buttons Pressed
  $07A0       $10    Password data (for display on game over)
                            ''01 = right; 02 = left; 04 = down; 08 = up;
  $07F8       $8   Player name
                            ''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


{{rammap|game=Akumajou Densetsu - Japanese Castlevania III}}
 
{{rammap|game=Akumajou Densetsu}}
  Address    Size    Description
  Address    Size    Description
  --------  ----    -----------
  --------  ----    -----------
  $2a             Controller
$0017            Repeat Counter
   $34             Level
                  Story Reel Border State
   $35             Stage
                            ''00 = no border; 01 = draw border; 03 = write to $0303
  $37             Lives
$0018              System State
   $44             Score  0000xx    
                            ''00 = Title; 02 = New Game; 03 = In-game Transition; 04 = In-Game;''
  $45             Score   00xx00
                            ''05 = Game Over Transition; 06 = Game Over; 07 = Stage Select Debug;''
  $46             Score  xx0000
                            ''08 = Map Screen; 09 = Prayer Scene; 0a = Name Entry; 0b = Password Entry;''
  $48             Partner  00 = Trevor; 01 = Syfa; 02 = Grant; 03 = Alucard; ff = None
                            ''0c = Epilogue; 0d = Credit Roll; 0e = Respawn; 0f = Sound Test Debug''
  $49             Partner Active   00 = no; 01 = yes
$0019              System Substate
   $4a             Health  40 = full
$001B              System Step Counter
   $7b             Time  xx00
$001C              Updating PPU ''(prevents stack overflow by skipping game logic)
  $7c             Time  00xx
$001D              Blackout Delay
  $81             Hearts
$001E              X Register Backup
  $82             Trevor Weapon
$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;  
                             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
  $83             Partner Weapon
$0083             Partner Subweapon
  $84             Weapon Multiplier  00 = none; 01 = [II]; 02 = [III]
$0084             Trevor Subweapon Multiplier   
  $85             Partner Weapon Multiplier
                            ''00 = none; 01 = [II]; 02 = [III]''
  $8b             Whip  00 = short; 01 = medium; 02 = long
$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


{{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