Cavestory Bugs

Jul 25, 2006 at 5:03 PM
The Bartender
"All your forum are belong to us!"
Join Date: Jun 18, 2006
Location: Montreal, Canada
Posts: 581
Age: 39
Out of curiousity and interest, I've decided to start this thread to document Cave Story's bugs and glitches - be they minor or major. I'll get the ball rolling with a few things I've noticed.

- Some sloped terrain that meets in > or < point behaves oddly. If your head bumps the bottom part, you'll teleport on top of the top part.

- The FAC command is handled twice in the code. This hardly impact gameplay, as the second command (identical to the first) is never triggered: the game breaks out of the command parser as soon as it executes the first instance.

- The MYD command allows you to face an entity if its ID is specified, but only if it is above 10. Sadly, because the script parser places the parameter into an 8bit register (cl, IIRC), the ID must be 255 or less as the top 24 bits are trimmed by the script parser.

- There is very little validation on many script commands. For instance, flags can overflow into memory reserved for other things and invalid indexes can be passed to most commands.

- The game doesn't check how many weapons you have when adding one. As a result, if you don't keep track of how many weapons the player has, the game can crash (even though it acts like it would allow you to have, IIRC, 8 weapons at once.)

- When looking for an empty slot to add a weapon to the player's arsenal, the game scans 32 slots instead of 8. This appears to be due to an oversight on Pixel's part when copying the item code which does the same thing. This might be linked to the above bug.

- 0x0200 entities (512) can exist on a given map. 0x60 (doing this from memory...) shots can exist at once. If another is created, the game simply ignores it. Generally the game can give a pseudo-priority to entities, however, which lessens the impact of this.

That's that for now. I might have a few once I can review my notes..
 
Jul 26, 2006 at 6:53 PM
Senior Member
"I, Ikachan. The Life and Documentary of the OrigiNAL SQuiD."
Join Date: Mar 1, 2006
Location: Grasstown
Posts: 155
Age: 39
Discovered by seriousface:
The following formation
Code:
XX
/X
(where X is a solid block, and / is the upper part of a diagonally up-right slope)

Allows for the player to walk through walls or jumping through ceilings, by jumping at the point where the floor meets the ceiling

If there is no block or entity preventing it, it is possible to jump off the top of the map. While above the map, the game treats the player as being inside a block which allows movement, but not shots, through. From above the map, it is possible to walk off the side of the map, where the player will fall until the game is quit, or reset.
 
Jul 27, 2006 at 7:45 PM
The Bartender
"All your forum are belong to us!"
Join Date: Jun 18, 2006
Location: Montreal, Canada
Posts: 581
Age: 39
- The MPJ command uses the map ID to test a flag MP+ can set. However, nothing prevents you from having 129+ maps. Using the command then will lead to very unpredictable results (for instance, 129 will point to Quote's sprite's behavioral state.)

- Sometimes enemies can hit you twice if they overlap you well enough. This can sometimes be observed with the giant jellyfish enemy under certain conditions.

- Using your temporary invulnerability from taking a hit, you can fly up to the final cave before getting Sakamoto's rocket. However the game still prevents you from progressing past the door. :)

- Not really a bug, but the flash color is stored in memory but never altered nor used. Which is curious. Editing it with a bit of assembly knowhow is possible, and can be used to change the color of a flash.
 
Top