Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.
The wiki has recently moved; please report any issues in Discord. Pardon the dust.
Castlevania III: Dracula's Curse/RAM map: Difference between revisions
Jump to navigation
Jump to search
(more stuff) |
m (Hawk moved page Castlevania III:RAM map to Castlevania III: Dracula's Curse/RAM map) |
||
(40 intermediate revisions by 4 users not shown) | |||
Line 2: | Line 2: | ||
Address Size Description | Address Size Description | ||
-------- ---- ----------- | -------- ---- ----------- | ||
$19 Menu Mode ( | $0017 Repeat Counter | ||
$ | $0018 System State | ||
$ | ''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;'' | ||
$ | ''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 Radio Mode ''(halts most code except music) | ||
$ | $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)'' | |||
$0200 $100 | $0024 Bank Changed ''(for debugging probably)'' | ||
$0025 Nametable Mapping | |||
$ | $0026 #02 Controller Buttons Pressed | ||
$ | ''01 = right; 02 = left; 04 = down; 08 = up; | ||
$07F8 | ''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}} | |||
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 Radio Mode ''(halts most code except music) | |||
$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 | |||
{{Internal Data|game=Castlevania III}} |
Latest revision as of 01:20, 24 January 2024
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 Radio Mode (halts most code except music) $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
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 Radio Mode (halts most code except music) $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
Internal Data for Castlevania III
| |
---|---|