Nov 9, 2022

Cut Boss Content from CV3! Maybe it's nothing...

While trying to wrap up my daunting task of identifying the uses of most of the 0x800 bytes of RAM utilized in CV3, I came across a set of 3 variables pertaining to the bosses. One I had identified already, but misinterpreted its function. Let me just re-iterate that I FUCKING HATE THE GUY WHO PROGRAMMED BOSSES IN CV3!! Or rather, I hate the coding style. Moving on....

Previously, I had just assumed byte $00B7(j)/$00BA(u) was just telling the game when the player was fighting a boss. I was sorely mistaken. It's actually a bitmasked value telling the game if the boss fight uses a secondary set of hitboxes. Not all bosses have just one hitbox, so this variable relays that to the game. Then byte $00B8/$00BB basically tells the game the boss has a melee attack, or something. I mean, that's essentially where I've seen it used. And then on top of that, byte $00B9/$00BC tells the game if the boss has different hitboxes for multiple phases (e.g., Dracula and his three forms). This third byte was pretty pointless for the Doppelganger, which used $00B7 and $00B9 for basically the same thing.

Anyhow, looking over the data each of these variables referenced, I noticed something odd (which was one reason it took me so long to come to grips with what I was looking at). Take $00B7 for starters. It points to a set of 8 values: [0D, 29, 0C, 08, 00, 00, 0F, 00]. Each of these is an object index: [Dracula, Dracula's Drool/Pazuzu's Platforms, Death's Skull, Moat Dragons, empty, empty, Doppelganger Attack, empty]. While there is nothing suspicious about the final empty object in the set, the two in the middle stick out. Perhaps these were redundant values for the Doppelganger, like how $B9 is redundant for the Doppelganger, but then why wouldn't they keep the first value instead of the third? 

Looking at the hitbox data, it's clear some bosses have one hitbox (typically for invisible hitboxes like Death's skull) while others have two. Oddly, the empty objects also have hitboxes defined -- one even has THREE distinct hitboxes defined. That's not for the Doppelganger's whips, since those already each have their own redundant $00B7-$00B9 pairs. What's more intriguing is one of these hitboxes is relatively huge at 24x16 pixels. That's too short for Sypha's fire, but too big for any other character's. It's also pretty odd dimensions, being nearly square, but longer horizontally than vertically. The only extant boss that comes to mind is Medusa trying to slither. If neither of those, then I'm left to believe this was a boss left on the cutting room floor.   

 

And yes, while Dracula's drool is among the objects with distinctly defined hitboxes, I have not found any residual code that would suggest the unused melted weapon sprites were from throwing a dagger, axe, or cross at the acidic drool. Pazuzu's beams share the same object identifier as the drool, which is most likely why they are in this hitbox set. 

No comments:

Post a Comment

©TheouAegis Productions™. Powered by Blogger.