Nov 24, 2022

Was the Invincibility Potion a Buggy After-thought?

Byte $0088 in RAM (CV3j) is used to carry Trevor et al on moving platforms. It gets set when byte $007E has any of the lower four bits set. Byte $007E also stores the damage type that an enemy dealt to Trevor. The damage type sets the upper four bits of byte $007E. Unfortunately, enemy damage is saved directly, so in practically all cases it clears the lower four bits of $007E. 

So what?

The platform collision happens before the enemy collision. However, the code to ride a platform happens after enemy collision. So if a platform is detected, but an enemy damages Trevor, Trevor is no longer detecting the platform. When it comes time to move with the platform, there is no platform registered anymore and Trevor falls through. 

What if Trevor is invincible?

Here's where things get sketchy. There are two invincibility timers: an iFrames timer and a potion timer. Both timers prevent Trevor et al from losing any health. The invincibility potion does not prevent damage, it prevents losing health from damage

In summary...

If Trevor et al has an invincibility potion active and is riding on a moving platform, colliding with any enemies, projectiles, or traps will cause Trevor to fall through the platform. There is only one invincibility potion in the entire game (and it's pretty useless too). Did they find the platform bug and decide to keep it in as a gimmick, but then later decided it made the game unfairly difficult, so they took out most of the invincibility potions rather than fixing the bug?

No comments:

Post a Comment

©TheouAegis Productions™. Powered by Blogger.