the cutting room mirror

Haunted Castle Revisited

To do:

  • Elaborate on link between Watch and Cross (Cross has some Watch leftovers in its code).
  • Check for parity between listed and unlisted platforms (PS5 and Xbox Series X) so they can be added.

Haunted Castle Revisited is a remake of Haunted Castle from the same developers behind Castlevania: The Adventure ReBirth. It's notable for being the first "new" non-mobile/gacha game in the series in over a decade, following the lukewarm reception of Castlevania: Lords of Shadow 2.

The game is included as a bonus in the Castlevania Dominus Collection, alongside the original.

Debug Symbols#

The Nintendo Switch version of Castlevania Dominus Collection launched with seemingly all function and variable names still intact, leading to easier analysis of the games' inner workings.

Many symbols used in Revisited are prepended with "Drc" for engine-side/generic data (i.e. "DrcObjectBase" for the parent class that all objects inherent from) or "AC" for specific game objects (i.e. "ACEnemyZombie" for the zombies in stage 1).

Unused Items#

Stopwatch Sub-Weapon#

In the games' executable there is an unused sub-weapon with the index 0xF that gets overwritten by the cross, The Nintendo Switch debug symbols refer to this item as DrcSubWeaponWatch. The stopwatch was present in the original Haunted Castle and cost exactly 2 hearts there compared to other games it appears in. It was likely removed due to how overpowered a cheap-costing time stopper would have been with the remake's improved gameplay.

This weapon calls a virtual function for each active enemy, waits for 238 frames, and then redoes the virtual function calls but with the 2nd argument set to "false" instead of "true". Most of these virtual functions attempt to freeze the calling enemy in place, but bosses seem to have this feature intentionally disabled, calling a check function that always returns 0.

Unused Text#

Player Metadata#

Inside the definition file remake/config/ac_setting.psb.json there is a key named "player". The table for this key contains two separate definitions:

"normal": {
  "default_hit": [
    -8,
    -44,
    16,
    36
  ],
  "fall_syagami1": 36,
  "fall_syagami2": 22,
  "grav": 0.3,
  "jump_ctrl": 1,
  "jumppow": 6.9,
  "leveldown": 1,
  "stair_speed": 1.25,
  "sub_cancel": 15,
  "subweapon": 2,
  "walk_speed": 1.4
}
"classic": {
  "fall_syagami1": 30,
  "fall_syagami2": 18,
  "grav": 0.2,
  "jump_ctrl": 0,
  "jumppow": 5.5,
  "leveldown": 1,
  "sub_cancel": 1000,
  "subweapon": 1,
  "walk_speed": 1.35
}

Of note is jumping control being disabled and "subweapon" being 1 instead of 2.

Adventure ReBirth Entities#

remake/config/setting.psb.json refers to entities from Castlevania: The Adventure ReBirth. Below is an excerpt defining health values for the Hyde mini-boss as well as the Night Stalker and Jelly enemies:

"life_hyde": [
  15.0,
  25.0,
  35.0
],
"life_jelly": [
  4.0
],
"life_nightstalker": [
  5.0
],

References#


  1. 1↩︎