Open main menu

Castlevania Speedrunning β

Difference between revisions of "Cv3/rammap"

(Castlevania III - Dracula's Curse (USA))
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''[[cv3/hacking| previes page]]'''
+
'''[[cv3/hacking| previous page]]'''
 +
 
 +
== Castlevania III - Dracula's Curse (USA) ==
 +
 
 +
 
 +
<!--> Emty Row
 +
|-
 +
| $0000
 +
| 1 byte
 +
| ??
 +
| ??
 +
</!-->
 +
 
 +
Bogaa's RamMap
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Address
 +
! Leangth
 +
! Type
 +
! Description
 +
|-
 +
| $0000
 +
| 1 byte
 +
| Temp
 +
| Memory Holds ()
 +
|-
 +
| $0001
 +
| 1 byte
 +
| Temp
 +
| Memory Holds ()
 +
|-
 +
| $0002
 +
| 1 byte
 +
| Temp
 +
| Memory Holds (Hitbox)
 +
|-
 +
| $0008
 +
| 2 byte
 +
| Temp
 +
| Memory Holds (DoorPointer??)
 +
|-
 +
| $000a
 +
| 2 byte
 +
| Temp
 +
| Memory Holds (PlayerLocation??)
 +
|-
 +
| $0011
 +
| 1 byte
 +
| Temp
 +
| Memory Holds (WhipHitboxHight)
 +
|-
 +
| $0012
 +
| 1 byte
 +
| Temp
 +
| Memory Holds ((Temporary sprite_index Used to keep track of $007F and $0565. Adds #$08 to Trevor's y when ducking ($0565==#$1C)))
 +
|-
 +
| $0013
 +
| 1 byte
 +
| Temp
 +
| Memory Holds (Temporary y Used to keep track of $0041C when attacking.)
 +
|-
 +
| $0018
 +
| 1 byte
 +
| Screen
 +
| RomeLoader Mode 4=Loade 5=Black(07=debug)
 +
|-
 +
| $001a
 +
| 1 byte
 +
| RNG
 +
| Random line. This is incremented by 1 every step. It's used for randomization purposes and results in a linear pattern whereby a function X will return the same result X[n] steps later and X[n+1] will always be the same when n is a linear function. Of course, making n a non-linear function will yield results closer to what one would consider "random".
 +
|-
 +
| $001d
 +
| 1 byte
 +
| Temp
 +
| Temporary Used Memory Holds (set to 01 Pause) (Set When on Stairs ??)
 +
|-
 +
| $001f
 +
| 2 byte
 +
| RNG
 +
| Random bump. While $001B is used most for random actions, this will vary things up a bit. This gets incremented and then $001B is added to it. This is done repeatedly between iterations. Basically, in GM terms, thisi is run between the last Draw event and the first Begin Step event.
 +
|-
 +
| $0026
 +
| 1 byte
 +
| Controller
 +
| (01 Right, 02 Left, 04 Down, 08 Up, 10 Start, 20 Select, 40 B, 80 A)
 +
|-
 +
| $0028
 +
| 1 byte
 +
| Controller
 +
| Controller Value Button State. Create Value out of button presses add/subtract
 +
|-
 +
| $002b
 +
| 1 byte
 +
| Flag
 +
| When Pause = 01
 +
|-
 +
| $002e
 +
| 1 byte
 +
| Flag
 +
| Stage clear This gets set to 01 when collect Orb
 +
|-
 +
| $0030
 +
| 1 byte
 +
| Timer
 +
| ItemPickup Flash Timer. Set when whip upgrade is picked up. Trevor cycles through sprite palettes while this counts down.
 +
|-
 +
| $0032
 +
| 1 byte
 +
| Location
 +
| Stage (Level)
 +
|-
 +
| $0033
 +
| 1 byte
 +
| Location
 +
| Block (Section)
 +
|-
 +
| $0034
 +
| 1 byte
 +
| Location
 +
| SubRom (Screen 8=Blocks or 256Pixel)
 +
|-
 +
| $003
 +
| 1 byte
 +
| Life
 +
| CurrentAmount of Lifes. Not HUD
 +
|-
 +
| $0036
 +
| 3 byte
 +
| Ctr
 +
| Points will start with low byte. ($0036 0000xx. $0037 00xx00. $0038 xx0000)
 +
|-
 +
| $0039
 +
| 1 byte
 +
| Indicator
 +
| Player Always 00 (But could be someone else in theory)
 +
|-
 +
| $003a
 +
| 1 byte
 +
| Indicator
 +
| Partner (ff=empty 00=Trevor 01=Sypha 02=Grant 03=Alucard)
 +
|-
 +
| $003b
 +
| 1 byte
 +
| Flag
 +
| Character Index?? SubweaponObj?? 00 or 01
 +
|-
 +
| $003c
 +
| 1 byte
 +
| Health
 +
| Health Player
 +
|-
 +
| $003d
 +
| 1 byte
 +
| Health
 +
| Health Boss
 +
|-
 +
| $003e
 +
| 1 byte
 +
| ??
 +
| ??
 +
|-
 +
| $003f
 +
| 4 byte
 +
| CHR
 +
| GFXBank??
 +
|-
 +
| $0043
 +
| 1 byte
 +
| CHR
 +
| CHR Bank ??
 +
|-
 +
| $0044
 +
| 1 byte
 +
| CHR
 +
| GFX 2 byte (Holds Current routine Pointer for swapping)
 +
|-
 +
| $0046
 +
| 1 byte
 +
| Index
 +
| (Used in Door Transition) SpriteBank Transition Player Sprite
 +
|-
 +
| $0047
 +
| 1 byte
 +
| Index
 +
| (Used in Door Transition) SpriteBank PlayerWeapon Sprite
 +
|-
 +
| $0048
 +
| 1 byte
 +
| Index
 +
| (Used in Door Transition) Enemy Sprites??
 +
|-
 +
| $0049
 +
| 1 byte
 +
| Index
 +
| (Used in Door Transition) Enemy Sprites?? Bank??
 +
|-
 +
| $004a
 +
| 1 byte
 +
| Index
 +
| (Used in Door Transition) Bank 400-7ff
 +
|-
 +
| $004b
 +
| 1 byte
 +
| Bank
 +
| Current Bank 400-7ff
 +
|-
 +
| $004c
 +
| 1 byte
 +
| Bank
 +
| Current Bank 800-8ff
 +
|-
 +
| $004d
 +
| 1 byte
 +
| Index
 +
| (Used in Transition) Bank 0c00-0fff
 +
|-
 +
| $004e
 +
| 2 byte
 +
| ??
 +
| ??
 +
|-
 +
| $0050
 +
| 2 byte
 +
| Index
 +
| (Used in Transition) Next Section
 +
|-
 +
| $0052
 +
| 2 byte
 +
| Re
 +
| ??
 +
|-
 +
| $0000
 +
| 1 byte
 +
| ??
 +
| ??
 +
|}
 +
 
 +
<div style="white-space: pre-wrap">
 +
$0052 2 byte holds tilemap Left Section (past)
 +
$0054 2 byte holds tilemap Right Section (infront)
 +
$0056 Camera yPos or xPos 00xx (Depending on Scroll type) CameraLock
 +
$0057 Camera yPos or xPos xx00 (Depending on Scroll type) CameraLock
 +
$0058 ??
 +
$0059 CameraPos Right RanderTracker??
 +
$005a CameraPos Left RanderTracker??
 +
$005b Section Tracker/Counter Tracker counts left/up
 +
$005c Section Tracker/Counter Tracker counts right/down
 +
$005d 2 byte LevelLoading (StageInicator??)(Active when Moving into Stage)
 +
$005f 2 byte Pallets Index (Used in Transition) (Active when Moving into Stage)
 +
$0061 2 byte Part of the level tracker..
 +
$0063 Part of the level tracker..
 +
$0064 ??
 +
$0065 Scrolling Left/down=00, Scrolling Right/up=01, Screen not Scrolling=02
 +
$0066 Part of the level tracker..
 +
$0069 2 byte StairPointer For CurrentSection?
 +
 
 +
$006b debug cursor value/Door Transition (state 00-09)
 +
 
 +
$006e 01=SpriteSpeed right FF=SpriteSpeed left. Used when moving..
 +
$006f 2byte Current CameraBGScrolling??
 +
 
 +
$0071 Camera Look (RoomLeangh)
 +
$0072 HudFunction? 00 is bad
 +
 
 +
$0074 00=Will reset sound when you transition 01 or higher=Will keep playing
 +
 
 +
$007b Used in DoorTranistion. SegmentLeangth to Scroll new section?
 +
 
 +
$007e time 00xx
 +
$007f time xx00
 +
$0080 01 or more=Trevor Sprite Flicker
 +
$0081 Trevor Movment State. x1 above ground, x2 only move right x5 No Colution, x8 Left x9 Right Hurt xe=Cinematic exit X=Amount of Damage and initiate hurt animation.
 +
 
 +
$0084 hearts
 +
$0085 sub-weapon (Trevor)
 +
$0086 sub-weapon (Helper)
 +
$0087 Double/Triple value (Trevor)
 +
$0088 Double/Triple value (helper)
 +
$0089 02=refreshes screen somehow?  used in paralax i think
 +
 
 +
$008e whip power up level (Trevor)
 +
$008f whip power up level (Helper)
 +
 
 +
$0098 2byte CurrentPointer Candle/Enemy Table
 +
$009a 2byte CurrentPointer Misc Table
 +
 
 +
$00ae AlucardBatHeartDrain Timer
 +
 
 +
$00b1 Keeps Track of last action??
 +
 
 +
$00ce Counter If=05 a subweapon dorps instead of a small heart
 +
 
 +
$00c7 WaterFreezTimer
 +
 
 +
$00fc TitelScreen Scrolling Y
 +
$00fd TitleScreen Scrolling X
 +
$00fe If uneven Greay scale (WindowEffect)
 +
$00ff BankSetup
 +
 
 +
$00e0-$019f MusicEngineRamSetup
 +
 
 +
$01e4 Pointer??
 +
$01e8-$0312 OAM Sprite Assembly Table
 +
 
 +
318-3bf Pointers for level setup?
 +
3c0-3c4 Sound Effect
 +
 
 +
 
 +
 
 +
$00bf setting to 0x80 freezes stuff (preparation for death I think)
 +
 
 +
$00e0 - $0130 Sound Stuff
 +
 
 +
$400-405 Player Animation
 +
$410 Animation CandleStand
 +
$412 Animation Candle
 +
 
 +
$414 SubweaponFrames HolywaterBumerang
 +
 
 +
$416 Uneven will destored the image at $417
 +
$417 Displays IteamInfront of you??
 +
 
 +
$418 Hud Subweapon Sprite 50=Holywater
 +
$419 Hud ShotMultiplayer Double=58
 +
 
 +
 
 +
$41d 6 bytes Crusher Movement
 +
$647 6 bytes Crusher Movement
 +
$658 HitBox Enemy AB (A=1 MinimalDamage F=FatalDamage) (B=Effect 5 Sink 8 and 9 Push)
 +
 
 +
490 Misc Sprite Address
 +
 
 +
$4a8 Enemy Movement 00 01
 +
 
 +
$4bb Wipe Direction 00 Left
 +
 
 +
$4f3-4f5 Sprite Speed Direction 01=Right ff=Left
 +
$509-50b Sprite SubSpeed Direction 00-ff
 +
 
 +
550-56f Misc Handler
 +
 
 +
567 Misc rocker assembly and Ai (8627 Routines)
 +
 
 +
57c-57d AnimationFramesBoss
 +
588-58f AnimationFramesCandles
 +
-5a8    5a6 Whip
 +
5aa-5af AnimationIDSprites??
 +
5b8-4bf AnimationIDCandles??
 +
 
 +
 
 +
 
 +
5c1 Movement directions??Trevor ActionStateUpgrade
 +
5c2 Movement directions??Boss
 +
-5c7 Movment Sprites
 +
5ce CandleUpgradeAnimationState
 +
4cf CandleUpgradeAnimationState
 +
5d0-5d7 MovmentBehavier?Candles
 +
5d9-5df (FreezTimer) MovmentBehavier?Sprites
 +
 
 +
5f0-5f2 EnemyActiveState
 +
5fc-601 Candle Content
 +
 
 +
61e-625 Direction/speed Pendulum
 +
 
 +
 
 +
6e0-76f Collusion map
 +
 
 +
AB A=2x2 block square
 +
    B=2x2 block square
 +
0 bg
 +
1 Mud
 +
2 Convire Right
 +
3 Convire Left
 +
4 Crumble Floor (increment c e f 0 )
 +
5 spike Celling 
 +
6 Solid
 +
7 Spike Floor
 +
8+ seems do be solid till c
 +
 
 +
Collution pointers
 +
Collusion data 4a3 Stile offset range?? donno
 +
 
 +
 
 +
$07f6 01=expert mode
 +
 
 +
$07f8 - $07ff Player name
 +
 
 +
</div>
 +
 
 +
 
 +
<div style="white-space: pre-wrap">
 +
===SpiderDavesMap===
 +
 
 +
 
 +
$0018 mode (07=debug)
 +
 
 +
$002b paused if 01
 +
 
 +
$0032 stage A (Level)
 +
$0033 stage B (Section)
 +
$0034 Stage C (Screen)
 +
$0035 lives
 +
$0036 points 0000xx
 +
$0037 points 00xx00
 +
$0038 points xx0000
 +
$0039 character 1 (ff=empty 00=Trevor 01=Sypha 02=Grant 03=Alucard)
 +
$003a character 2 (ff=empty 00=Trevor 01=Sypha 02=Grant 03=Alucard)
 +
$003b character index (00 or 01)
 +
$003c life
 +
$003d enemy life
 +
 
 +
$007e time 00xx
 +
$007f time xx00
 +
 
 +
$006b debug cursor value
 +
 
 +
$0084 hearts
 +
$0085 sp weapon (Trevor)
 +
$0086 sp weapon (Helper)
 +
$0087 Double/Triple value (Trevor)
 +
$0088 Double/Triple value (helper)
 +
$0089 02=refreshes screen somehow?  used in paralax i think
 +
 
 +
$008e whip power up level (Trevor)
 +
$008f whip power up level (Helper)
 +
 
 +
$00bf setting to 0x80 freezes stuff (preparation for death I think)
 +
 
 +
$07f6 01=expert mode
 +
 
 +
$07f8 - $07ff Player name
 +
</div>
  
 
== Castlevania III RAM and ROM offsets (mostly Akumajou Densetsu (J)) ==
 
== Castlevania III RAM and ROM offsets (mostly Akumajou Densetsu (J)) ==
Line 8: Line 440:
  
 
work in progress
 
work in progress
 +
 +
==Info==
 +
 +
===Table Files for editing text in game===
 +
https://datacrystal.romhacking.net/wiki/Castlevania_III:TBL

Latest revision as of 21:31, 29 July 2019

Castlevania III - Dracula's Curse (USA)

Bogaa's RamMap

Address Leangth Type Description
$0000 1 byte Temp Memory Holds ()
$0001 1 byte Temp Memory Holds ()
$0002 1 byte Temp Memory Holds (Hitbox)
$0008 2 byte Temp Memory Holds (DoorPointer??)
$000a 2 byte Temp Memory Holds (PlayerLocation??)
$0011 1 byte Temp Memory Holds (WhipHitboxHight)
$0012 1 byte Temp Memory Holds ((Temporary sprite_index Used to keep track of $007F and $0565. Adds #$08 to Trevor's y when ducking ($0565==#$1C)))
$0013 1 byte Temp Memory Holds (Temporary y Used to keep track of $0041C when attacking.)
$0018 1 byte Screen RomeLoader Mode 4=Loade 5=Black(07=debug)
$001a 1 byte RNG Random line. This is incremented by 1 every step. It's used for randomization purposes and results in a linear pattern whereby a function X will return the same result X[n] steps later and X[n+1] will always be the same when n is a linear function. Of course, making n a non-linear function will yield results closer to what one would consider "random".
$001d 1 byte Temp Temporary Used Memory Holds (set to 01 Pause) (Set When on Stairs ??)
$001f 2 byte RNG Random bump. While $001B is used most for random actions, this will vary things up a bit. This gets incremented and then $001B is added to it. This is done repeatedly between iterations. Basically, in GM terms, thisi is run between the last Draw event and the first Begin Step event.
$0026 1 byte Controller (01 Right, 02 Left, 04 Down, 08 Up, 10 Start, 20 Select, 40 B, 80 A)
$0028 1 byte Controller Controller Value Button State. Create Value out of button presses add/subtract
$002b 1 byte Flag When Pause = 01
$002e 1 byte Flag Stage clear This gets set to 01 when collect Orb
$0030 1 byte Timer ItemPickup Flash Timer. Set when whip upgrade is picked up. Trevor cycles through sprite palettes while this counts down.
$0032 1 byte Location Stage (Level)
$0033 1 byte Location Block (Section)
$0034 1 byte Location SubRom (Screen 8=Blocks or 256Pixel)
$003 1 byte Life CurrentAmount of Lifes. Not HUD
$0036 3 byte Ctr Points will start with low byte. ($0036 0000xx. $0037 00xx00. $0038 xx0000)
$0039 1 byte Indicator Player Always 00 (But could be someone else in theory)
$003a 1 byte Indicator Partner (ff=empty 00=Trevor 01=Sypha 02=Grant 03=Alucard)
$003b 1 byte Flag Character Index?? SubweaponObj?? 00 or 01
$003c 1 byte Health Health Player
$003d 1 byte Health Health Boss
$003e 1 byte  ??  ??
$003f 4 byte CHR GFXBank??
$0043 1 byte CHR CHR Bank ??
$0044 1 byte CHR GFX 2 byte (Holds Current routine Pointer for swapping)
$0046 1 byte Index (Used in Door Transition) SpriteBank Transition Player Sprite
$0047 1 byte Index (Used in Door Transition) SpriteBank PlayerWeapon Sprite
$0048 1 byte Index (Used in Door Transition) Enemy Sprites??
$0049 1 byte Index (Used in Door Transition) Enemy Sprites?? Bank??
$004a 1 byte Index (Used in Door Transition) Bank 400-7ff
$004b 1 byte Bank Current Bank 400-7ff
$004c 1 byte Bank Current Bank 800-8ff
$004d 1 byte Index (Used in Transition) Bank 0c00-0fff
$004e 2 byte  ??  ??
$0050 2 byte Index (Used in Transition) Next Section
$0052 2 byte Re  ??
$0000 1 byte  ??  ??

$0052 2 byte holds tilemap Left Section (past) $0054 2 byte holds tilemap Right Section (infront) $0056 Camera yPos or xPos 00xx (Depending on Scroll type) CameraLock $0057 Camera yPos or xPos xx00 (Depending on Scroll type) CameraLock $0058 ?? $0059 CameraPos Right RanderTracker?? $005a CameraPos Left RanderTracker?? $005b Section Tracker/Counter Tracker counts left/up $005c Section Tracker/Counter Tracker counts right/down $005d 2 byte LevelLoading (StageInicator??)(Active when Moving into Stage) $005f 2 byte Pallets Index (Used in Transition) (Active when Moving into Stage) $0061 2 byte Part of the level tracker.. $0063 Part of the level tracker.. $0064 ?? $0065 Scrolling Left/down=00, Scrolling Right/up=01, Screen not Scrolling=02 $0066 Part of the level tracker.. $0069 2 byte StairPointer For CurrentSection?

$006b debug cursor value/Door Transition (state 00-09)

$006e 01=SpriteSpeed right FF=SpriteSpeed left. Used when moving.. $006f 2byte Current CameraBGScrolling??

$0071 Camera Look (RoomLeangh) $0072 HudFunction? 00 is bad

$0074 00=Will reset sound when you transition 01 or higher=Will keep playing

$007b Used in DoorTranistion. SegmentLeangth to Scroll new section?

$007e time 00xx $007f time xx00 $0080 01 or more=Trevor Sprite Flicker $0081 Trevor Movment State. x1 above ground, x2 only move right x5 No Colution, x8 Left x9 Right Hurt xe=Cinematic exit X=Amount of Damage and initiate hurt animation.

$0084 hearts $0085 sub-weapon (Trevor) $0086 sub-weapon (Helper) $0087 Double/Triple value (Trevor) $0088 Double/Triple value (helper) $0089 02=refreshes screen somehow? used in paralax i think

$008e whip power up level (Trevor) $008f whip power up level (Helper)

$0098 2byte CurrentPointer Candle/Enemy Table $009a 2byte CurrentPointer Misc Table

$00ae AlucardBatHeartDrain Timer

$00b1 Keeps Track of last action??

$00ce Counter If=05 a subweapon dorps instead of a small heart

$00c7 WaterFreezTimer

$00fc TitelScreen Scrolling Y $00fd TitleScreen Scrolling X $00fe If uneven Greay scale (WindowEffect) $00ff BankSetup

$00e0-$019f MusicEngineRamSetup

$01e4 Pointer?? $01e8-$0312 OAM Sprite Assembly Table

318-3bf Pointers for level setup? 3c0-3c4 Sound Effect


$00bf setting to 0x80 freezes stuff (preparation for death I think)

$00e0 - $0130 Sound Stuff

$400-405 Player Animation $410 Animation CandleStand $412 Animation Candle

$414 SubweaponFrames HolywaterBumerang

$416 Uneven will destored the image at $417 $417 Displays IteamInfront of you??

$418 Hud Subweapon Sprite 50=Holywater $419 Hud ShotMultiplayer Double=58


$41d 6 bytes Crusher Movement $647 6 bytes Crusher Movement $658 HitBox Enemy AB (A=1 MinimalDamage F=FatalDamage) (B=Effect 5 Sink 8 and 9 Push)

490 Misc Sprite Address

$4a8 Enemy Movement 00 01

$4bb Wipe Direction 00 Left

$4f3-4f5 Sprite Speed Direction 01=Right ff=Left $509-50b Sprite SubSpeed Direction 00-ff

550-56f Misc Handler

567 Misc rocker assembly and Ai (8627 Routines)

57c-57d AnimationFramesBoss 588-58f AnimationFramesCandles -5a8 5a6 Whip 5aa-5af AnimationIDSprites?? 5b8-4bf AnimationIDCandles??


5c1 Movement directions??Trevor ActionStateUpgrade 5c2 Movement directions??Boss -5c7 Movment Sprites 5ce CandleUpgradeAnimationState 4cf CandleUpgradeAnimationState 5d0-5d7 MovmentBehavier?Candles 5d9-5df (FreezTimer) MovmentBehavier?Sprites

5f0-5f2 EnemyActiveState 5fc-601 Candle Content

61e-625 Direction/speed Pendulum


6e0-76f Collusion map

AB A=2x2 block square
   B=2x2 block square
0 bg
1 Mud
2 Convire Right
3 Convire Left
4 Crumble Floor (increment c e f 0 )
5 spike Celling  
6 Solid
7 Spike Floor
8+ seems do be solid till c

Collution pointers Collusion data 4a3 Stile offset range?? donno


$07f6 01=expert mode

$07f8 - $07ff Player name


SpiderDavesMap

$0018 mode (07=debug)

$002b paused if 01

$0032 stage A (Level) $0033 stage B (Section) $0034 Stage C (Screen) $0035 lives $0036 points 0000xx $0037 points 00xx00 $0038 points xx0000 $0039 character 1 (ff=empty 00=Trevor 01=Sypha 02=Grant 03=Alucard) $003a character 2 (ff=empty 00=Trevor 01=Sypha 02=Grant 03=Alucard) $003b character index (00 or 01) $003c life $003d enemy life

$007e time 00xx $007f time xx00

$006b debug cursor value

$0084 hearts $0085 sp weapon (Trevor) $0086 sp weapon (Helper) $0087 Double/Triple value (Trevor) $0088 Double/Triple value (helper) $0089 02=refreshes screen somehow? used in paralax i think

$008e whip power up level (Trevor) $008f whip power up level (Helper)

$00bf setting to 0x80 freezes stuff (preparation for death I think)

$07f6 01=expert mode

$07f8 - $07ff Player name

Castlevania III RAM and ROM offsets (mostly Akumajou Densetsu (J))

Debugger File Bookmarks

work in progress

Info