Yes
The short answer to it is that it's random. You have to kill the right tank on a "lucky" frame where the game doesn't check the left tank's status properly and lets you move forward anyway. Your odds of getting it right are 1/128. You can know when you get it if you have some experience with it and positioning for it, but trying to get it on purpose is kind of ridiculous. The good people at TAS videos did some work on this. Here is an overly technical explanation:
Quote from AnS:
Quote from AnS:
Quote:
Interesting, it seems like programming oversight.
Basically, this right tank is doing "death cleanup" twice, because left tank shoots at the moment. As far as I understand, this game is programmed so that only one tank can switch its status during single frame. This is probably made to avoid lag, because initialization of new objects (bullets) may take considerable amount of CPU cycles, so it's better to distribute them to different frames.
Details:
At 0x9F there's tank_counter that must be zeroed to allow scrolling again.
At 0x668-0x675 there's array of statuses (up to 14 objects on screen).
At 0x6E6-0x6F3 there's array of animation_timers (measured in frames).
Every tank enemy has following statuses:
01 - just created, increase tank_counter and switch status to 02
02 - intro, scroll screen closer, then switch status to 03
03 - wait for animation_timer to expire (btw, it's 96 frames), when it becomes 0 - then switch status to 04
04 - shoot -way projectiles, wait 9 frames, then switch status to 03 (so this is infinite loop)
When player nullifies tank's HP, the enemy is forced to switch status to 05 (making break from infinite loop).
05 - init explosions timer, switch status to 06
06 - show explosions for some time, then switch status to 07
07 - decrease tank_counter, then switch status to 08 (if possible)
08 - finish stuff, free memory
So, what it means for you, well, the only way to recreate this bug is to finish right tank at the very specific frame. […] There are two lucky frames within every 105 frames (one when tank switches from 03 to 04, and another one when it switches from 04 to 03).
Yes, and other enemies don't affect this bug.
Basically, this right tank is doing "death cleanup" twice, because left tank shoots at the moment. As far as I understand, this game is programmed so that only one tank can switch its status during single frame. This is probably made to avoid lag, because initialization of new objects (bullets) may take considerable amount of CPU cycles, so it's better to distribute them to different frames.
Details:
At 0x9F there's tank_counter that must be zeroed to allow scrolling again.
At 0x668-0x675 there's array of statuses (up to 14 objects on screen).
At 0x6E6-0x6F3 there's array of animation_timers (measured in frames).
Every tank enemy has following statuses:
01 - just created, increase tank_counter and switch status to 02
02 - intro, scroll screen closer, then switch status to 03
03 - wait for animation_timer to expire (btw, it's 96 frames), when it becomes 0 - then switch status to 04
04 - shoot -way projectiles, wait 9 frames, then switch status to 03 (so this is infinite loop)
When player nullifies tank's HP, the enemy is forced to switch status to 05 (making break from infinite loop).
05 - init explosions timer, switch status to 06
06 - show explosions for some time, then switch status to 07
07 - decrease tank_counter, then switch status to 08 (if possible)
08 - finish stuff, free memory
So, what it means for you, well, the only way to recreate this bug is to finish right tank at the very specific frame. […] There are two lucky frames within every 105 frames (one when tank switches from 03 to 04, and another one when it switches from 04 to 03).
Yes, and other enemies don't affect this bug.