Jul 25, 2006 at 5:03 PM
Join Date: Jun 18, 2006
Location: Montreal, Canada
Posts: 581
Age: 40
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..
- 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..