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.

Castlevania II - Belmont's Revenge/Notes

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a Notes Page for Castlevania II - Belmont's Revenge.

HEX tweaks

Initial values

VARIABLE                          ROM LOCATION     VALUE
----------------------------------------------------------
 Initial lives                     01AA             02
 Dropping spike platform health    20F3             0A
 Small heart value                 437E (1:437E)    01
 Big heart value                   43D0 (1:43D0)    05
 Punagushi health                  45D1 (1:45D1)    04
 Forneus health                    4C73 (1:4C73)    04
 Plant & Cloud Castle Boss health  5761 (1:5761)    17 (written do $CC07 by routine 0:3B48)
 Knight health                     5783 (1;5783)    04
 Raven health                      57F6 (1:57F6)    01 (changing this number doesn't prevent its 1-hit death, so some other parameter must be involved)
 Merman health                     5B26 (1:5B26)    04
 ??? health                        64D2 (1:64D2)    03
 Night Stalker health              6971 (1:6971)    07
 ??? Castle Boss health            6F30 (1:6F30)    17
 Dracula 3 Boss health             7CA5 (1:7CA5)    17 (written to $CD07 by routine 0:3B48)
 Initial hearts                    F7A2 (3:77A2)    05 (note: the initial displayed value of "05" is hardcoded using tiles 09 and 04 at addresses F7A7 and F7AA)
 Ax/potion throw cost              187B2 (6:47B2)   01
 "10-lives" password lives         196C7 (6:56C7)   09

Game behavior

GAME CHANGE                                    HEX TWEAK
----------------------------------------------------------
 Deactivate whip degrade                        Replace value 3D at 1:47D7 with 00 (DEC A is replaced with NOP, which avoids decrementing whip status $C8D1)
 Expert mode (enemy collision = whip degrade)   Replace value C8 at 1:47C4 with 00 (in expert mode $C8A3 is set to 1, so with this tweak we bypass the $C8A3 check for nullity)

Text data

TEXT                          ROM LOCATION       INFO    
----------------------------------------------------------
 Story on intro screen         19B0E (6:5B0E)     DRACULA HAS ARRIVED. DRACULA IS LOOKING TO BE RE-BORN...
 Plant Castle name             F47F (3:747F)      displayed at 9C24
 Crystal Castle name           F48E (3:748E)      displayed at 9C23
 Cloud Castle name             F49F (3:749F)      displayed at 9C24
 Rock Castle name              F4AF (3:74AF)      displayed at 9C24

Password system

Passwords for the first 4 castles' completion state are stored in a lookup table at 19AA5 (6:5AA5), which contains x0F values. Additional passwords for completion of Dracula castles 1 and 2, as well as other game modes (sound test, extra lives, etc.) are hardcoded.

Each password is composed of 4 symbols from a 4-symbol alphabet {empty, orb, candle, heart}. By encoding each symbol with 2 bits, a password can be represented by 8 bits = 1 byte.

For instance 6E = 0110 1110 = orb/candle/heart/candle.

The lookup table contains the following passwords:

2F 6E BD FC 03 42 91 D0 27 66 B5 F4 0B 4A 99 D8

The routine that performs the password check is at 6:595C. If no match is found, the entered password is compared against a list of hard-coded values from 6:5967 to 6:597E:

Sound test        FF = 1111 1111 = 3333 = heart / heart / heart / heart
Dracula level 2   E5 = 1110 0101 = 3211 = heart / candle / orb / orb
Dracula level 3   7B = 0111 1011 = 1323 = orb / heart / candle / heart
10 lives          AF = 1010 1111 = 2233 = candle / candle / heart / heart
Expert mode       11 = 0001 0001 = 0101 = empty / orb / empty / orb

Sprites

Plant Castle sprites

Sprite pointers written to $DF00-$DFFF (x80 slots). First column is the index, second is the pointer, third is a description of the sprite.

1-1 and 1-2: x1D sprites from 3:40EE to $DFBA (5D-79)
 5D 4595 (1-2) Eyeball front
 5E 459C (1-2) Eyeball front down
 5F 45A3 (1-2) Eyeball down
 60 45AB (1-2) Eyeball back down
 61 45B4 (1-2) Eyeball back
 62 45BD (1-2) Eyeball back up
 63 45C6 (1-2) Eyeball up
 64 45CF (1-2) Eyeball front up
 65 45D8
 66 45DF
 67 45E6
 68 4250
 69 45E6
 6A 45E6
 6B 4616
 6C 461A
 6D 4622
 6E 4629
 6F 4633
 70 463B
 71 4648
 72 4652
 73 465F
 74 4E0A
 75 466F
 76 467F
 77 468F
 78 4696
 79 4E0E
 (sprites below were already in the data)
 46 44FE Rat on ground
 47 4505 Rat hopping
 40 44C1 Bat hanging upside down
 41 44B1 Bat wings open up
 42 44B9 Bat wings open down
 
1-3 x1D sprites from 3:40BA to $DFBA (5D-79) (Note: same patch as in 1-1)
 5D 4560 Giant Bat wings open fully
 5E 456F Giant Bat wings open partially
 5F 457E Giant Bat wings closed partially
 60 4586 Giant bat upside down
 61 45EE 
 62 45F8 
 63 4605 
 64 460C 
 65 482C
 66 483C
 67 484C
 68 485C
 69 4869
 6A 485C (again)
 6B 469A Skeleton on rope neck straight
 6C 46A7 Skeleton on rope arm behind
 6D 46B7 Skeleton on rope arm up
 6E 46C4 Skeleton on rope arm grabbing rope
 6F 46D1 Skeleton on rope arm folded
 70 46DE Skeleton jumping
 71 46EB Bone diagonal down
 72 46F3 Bone vertical
 73 46F7 Bone diagonal up
 74 4B11
 75 4B19
 76 4B21
 77 4595
 78 459C
 79 45A3
 (sprites below were already in the data)
 4C 4517 Forneus top of head only
 4D 4533 Forneus gathered
 4E 4551 Forneus stretched going up
 4F 47F8 Forneus attached to ceiling
 50 4801 Forneus attached to ceiling inflated
 51 480A Forneus stretched going down
 
1-4 x1D sprites from 3:40EE to $DFBA 
 5D 4595 (1-2) Eyeball front
 5E 459C (1-2) Eyeball front down
 5F 45A3 (1-2) Eyeball down
 60 45AB (1-2) Eyeball back down
 61 45B4 (1-2) Eyeball back
 62 45BD (1-2) Eyeball back up
 63 45C6 (1-2) Eyeball up
 64 45CF (1-2) Eyeball front up
 65 45D8
 66 45DF
 67 45E6
 68 4250
 69 45E6
 6A 45E6
 6B 4616 Mud man drop
 6C 461A Mud man puddle
 6D 4622 Mud man rising/collapsing from puddle head down
 6E 4629 Mud man rising/collapsing from puddle head up
 6F 4633 Mud man puddle tiny
 70 463B Mud man standing leg back
 71 4648 Mud man standing legs middle
 72 4652 Mud man standing leg front
 73 465F
 74 4E0A
 75 466F
 76 467F
 77 468F
 78 4696
 79 4E0E
1-5 (no new sprites loaded)
 41 44C9 Spider-Moving-1
 42 44DA Spider-Moving-2
 43 44D9 Spider still
 56 4305 Spider projectile
 
1-6 x02 sprites loaded from 3:4129 to $DFD6 (6B-6C)
 6B 4309 Large orb Boss defeated
 6C 4871 Plant Boss spear
 57 4DA3 Vertical moving platform

Dracula 1 sprites

Below: idx / address / name
Unused sprite indexes are left blank
Note that 74/79 (Extruder tip left/right) is available in all sublevels, despite being overwritten (with itself).

1-1 and 1-2 (no patch occurs in 1-2) patch x15 sprites from 3:41E0 to $DFD6 (6B-7F) and x0E sprites from 3:40BA to $DFBA (5D-6A)
 6B 4700 Night Stalker standing leg back holding boomerang
 6C 4710 Night Stalker standing leg middle holding boomerang
 6D 471D Night Stalker standing leg front holding boomerang
 6E 472D Night Stalker standing leg front raising boomerang
 6F 473A Night Stalker standing leg back
 70 474A Night Stalker standing leg middle
 71 4757 Night Stalker standing leg front
 72 4767
 73 4777 Night Stalker crouching arm up holding boomerang
 74 4E0A (1-2) Extruder tip left
 75 4797 Boomerang pointing up
 76 479E Boomerang pointing front
 77 47A5 Boomerang pointing down
 78 47AE Boomerang pointing back
 79 4E0E (1-2) Extruder tip right
 7A 4787 Night Stalker crouching arm out
 7B 4C9F
 7C 4C9F
 7D 4DC5
 7E 4DD8
 7F 4DF7

 5D 4560
 5E 456F
 5F 457E
 60 4586
 61 45EE Raven perched
 62 45F8 Raven flapping wings back
 63 4605 Raven flapping wings middle
 64 460C Raven flapping wings front
 65 482C
 66 483C
 67 484C
 68 485C
 69 485C
 6A 4869

1-3 patch x09 sprites from 3:40D6 to $DFD6 (6B-73) (Note: Skeleton overwrites Night Stalker, but not Boomerang and Raven)
 6B 469A Skeleton on rope neck straight
 6C 46A7 Skeleton on rope arm behind
 6D 46B7 Skeleton on rope arm up
 6E 46C4 Skeleton on rope arm grabbing rope
 6F 46D1 Skeleton on rope arm folded
 70 46DE Skeleton jumping
 71 46EB Bone diagonal down
 72 46F3 Bone vertical
 73 46F7 Bone diagonal up

1-4 patch x10 sprites from 3:41E0 to $DFD6 (6B-7A) (Note: overwrite Skeleton & Bone with 1-1 sprites)
 6B 4700 Night Stalker standing leg back holding boomerang
 6C 4710 Night Stalker standing leg middle holding boomerang
 6D 471D Night Stalker standing leg front holding boomerang
 6E 472D Night Stalker standing leg front holding boomerang above head
 6F 473A Night Stalker standing leg back
 70 474A Night Stalker standing leg middle
 71 4757 Night Stalker standing leg front
 72 4767
 73 4777 Night Stalker crouching arm up holding boomerang
 74 4E0A Extruder tip left
 75 4797 Boomerang pointing up
 76 479E Boomerang pointing front
 77 47A5 Boomerang pointing down
 78 47AE Boomerang pointing back
 79 4E0E Extruder tip right
 7A 4787 Night Stalker crouching arm out

1-5 patch x0F sprites from 3:410A to $DFD6 (6B-79) (Note: overwrites Night Stalker and Boomerang with Mud Man)
 6B 4616 Mud man drop
 6C 461A Mud man puddle
 6D 4622 Mud man rising/collapsing from puddle head down
 6E 4629 Mud man rising/collapsing from puddle head up
 6F 4633 Mud man puddle tiny
 70 463B Mud man standing leg back
 71 4648 Mud man standing legs middle
 72 4652 Mud man standing leg front
 73 465F
 74 4E0A
 75 466F
 76 467F
 77 468F
 78 47AE
 79 4E0E 

Snake Boss patch x0E sprites from 3:41CA to $DFBA to $DFD5 (5D-69) (Note: overwrites Mud Man)
 5D 4FA0 
 5E 4FA0 mouth open (same sprite as above, but slot 5D isn't used)
 5F 4FA7 mouth closed
 60 4FAE Head for mouth open
 61 4FB8 Head for mouth closed
 62 4FC2 Neck
 63 4FC2 Neck (same sprite, but both 63 and 62 are used)
 64 4FCF Body element
 65 4FD9 Body element inflated
 66 4FE3 Tail body element
 67 4FED Tail element
 68 4700
 69 471D