https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&feed=atom&action=history Ikari Warriors/Game Mechanics - Revision history 2024-03-29T14:26:15Z Revision history for this page on the wiki MediaWiki 1.23.9 https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=44408&oldid=prev Ktwo: /* Continue code */ 2023-06-25T07:45:47Z <p>‎<span dir="auto"><span class="autocomment">Continue code</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 07:45, 25 June 2023</td> </tr><tr><td colspan="2" class="diff-lineno">Line 75:</td> <td colspan="2" class="diff-lineno">Line 75:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Continue code===</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Continue code===</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>One of the most well known continue codes throughout the NES library, A B B A. Just press the button combination after having lost the last life and before the game over screen. In a casual playthrough, it can be expected to input this code 100+ times. In that context, it can be worth highlighting that the game only polls player inputs at the same framerate as the game, i.e. 15fps. When inputting the code that many times in a playthrough, it's not too unlikely that one manages by accident to tap one of inputs on three frames the game does not poll player inputs, leading to the code not working. As long as the game over screen hasn't appeared, one can however attempt again to input the code.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>One of the most well known continue codes throughout the NES library, A B B A. Just press the button combination after having lost the last life and before the game over screen. In a casual playthrough, it can be expected to input this code 100+ times. In that context, it can be worth highlighting that the game only polls player inputs at the same framerate as the game, i.e. 15fps. When inputting the code that many times in a playthrough, it's not too unlikely that one manages by accident to tap one of inputs on three frames the game does not poll player inputs, leading to the code not working<ins class="diffchange diffchange-inline">. Another risk is that two buttons are pressed in too rapid succession. There needs to be an empty input polled by the game between each button press</ins>. As long as the game over screen hasn't appeared, one can however attempt again to input the code<ins class="diffchange diffchange-inline">. To prevent the code from not working, avoid tapping too fast and try instead to hold down each button (but not overlap any button presses)</ins>.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The game checks for player inputs from instruction $FF89 and onward. Each correct button press increases the counter in $58. When it equals 4, the code branches to starting a continue (3 lives back etc).&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The game checks for player inputs from instruction $FF89 and onward. Each correct button press increases the counter in $58. When it equals 4, the code branches to starting a continue (3 lives back etc).&lt;br /&gt;&lt;br /&gt;</div></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=44407&oldid=prev Ktwo: /* Continue code */ 2023-06-25T07:40:01Z <p>‎<span dir="auto"><span class="autocomment">Continue code</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 07:40, 25 June 2023</td> </tr><tr><td colspan="2" class="diff-lineno">Line 75:</td> <td colspan="2" class="diff-lineno">Line 75:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Continue code===</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Continue code===</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>One of the most well known continue codes throughout the NES library, A B B A. Just press the button combination after having lost the last life and before the game over screen.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>One of the most well known continue codes throughout the NES library, A B B A. Just press the button combination after having lost the last life and before the game over screen<ins class="diffchange diffchange-inline">. In a casual playthrough, it can be expected to input this code 100+ times. In that context, it can be worth highlighting that the game only polls player inputs at the same framerate as the game, i.e. 15fps. When inputting the code that many times in a playthrough, it's not too unlikely that one manages by accident to tap one of inputs on three frames the game does not poll player inputs, leading to the code not working. As long as the game over screen hasn't appeared, one can however attempt again to input the code</ins>.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The game checks for player inputs from instruction $FF89 and onward. Each correct button press increases the counter in $58. When it <del class="diffchange diffchange-inline">reaches </del>4, the code branches to starting a continue (3 lives back etc).&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The game checks for player inputs from instruction $FF89 and onward. Each correct button press increases the counter in $58. When it <ins class="diffchange diffchange-inline">equals </ins>4, the code branches to starting a continue (3 lives back etc).&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>When reaching the end of a level (check of $73 at instruction $D1F0) or killing the boss in level 3 or 4, $FB is set to a non-zero value. This skips the ABBA-checking section in the code and continues are no longer possible until starting the next level. There are reports of the ABBA code stopped working in the middle of a level. From the code sections referenced above, it's not clear how that could happen. It's possible that $FB could be written to from other sub-routines, but it's also possible that these reports are from incorrectly inputting the code. If someone manages to record an emulator <del class="diffchange diffchange-inline">video </del>of when the ABBA-code stops working mid-level, please post about it in the forum.&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>When reaching the end of a level (check of $73 at instruction $D1F0) or killing the boss in level 3 or 4, $FB is set to a non-zero value. This skips the ABBA-checking section in the code and continues are no longer possible until starting the next level. There are reports of the ABBA code stopped working in the middle of a level. From the code sections referenced above, it's not clear how that could happen. It's possible that $FB could be written to from other sub-routines, but it's also possible that these reports are from incorrectly inputting the code. If someone manages to record an emulator <ins class="diffchange diffchange-inline">movie </ins>of when the ABBA-code stops working mid-level, please post about it in the forum.&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>(Credits to 'Fo__' for contributions to the code analysis of this section)&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>(Credits to 'Fo__' for contributions to the code analysis of this section)&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=44406&oldid=prev Ktwo: /* Continue code */ 2023-06-21T18:37:42Z <p>‎<span dir="auto"><span class="autocomment">Continue code</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 18:37, 21 June 2023</td> </tr><tr><td colspan="2" class="diff-lineno">Line 79:</td> <td colspan="2" class="diff-lineno">Line 79:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The game checks for player inputs from instruction $FF89 and onward. Each correct button press increases the counter in $58. When it reaches 4, the code branches to starting a continue (3 lives back etc).&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The game checks for player inputs from instruction $FF89 and onward. Each correct button press increases the counter in $58. When it reaches 4, the code branches to starting a continue (3 lives back etc).&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>When reaching the end of a level (check of $73 at instruction $D1F0) or killing the boss in level 3 or 4, $FB is set to a non-zero value. This skips the ABBA-checking section in the code and continues are no longer possible until starting the next level. There are reports of the ABBA code <del class="diffchange diffchange-inline">stops </del>working in the middle of a level. From the code sections referenced above, it's not clear how that could happen. It's possible that $FB could be written to from other sub-routines, but it's also possible that these reports are from incorrectly inputting the code. If someone manages to record an emulator video of when the ABBA-code stops working mid-level, please post about it in the forum.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>When reaching the end of a level (check of $73 at instruction $D1F0) or killing the boss in level 3 or 4, $FB is set to a non-zero value. This skips the ABBA-checking section in the code and continues are no longer possible until starting the next level. There are reports of the ABBA code <ins class="diffchange diffchange-inline">stopped </ins>working in the middle of a level. From the code sections referenced above, it's not clear how that could happen. It's possible that $FB could be written to from other sub-routines, but it's also possible that these reports are from incorrectly inputting the code. If someone manages to record an emulator video of when the ABBA-code stops working mid-level, please post about it in the forum.<ins class="diffchange diffchange-inline">&lt;br /&gt;</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">(Credits to 'Fo__' for contributions to the code analysis of this section)</ins>&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Some comments about various aspects of the game mechanics==</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Some comments about various aspects of the game mechanics==</div></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=44405&oldid=prev Ktwo: /* Memory addresses */ 2023-06-19T16:17:35Z <p>‎<span dir="auto"><span class="autocomment">Memory addresses</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 16:17, 19 June 2023</td> </tr><tr><td colspan="2" class="diff-lineno">Line 113:</td> <td colspan="2" class="diff-lineno">Line 113:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Memory addresses==</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Memory addresses==</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">$55&#160; &#160; &#160; &#160; &#160; &#160; Global counter that determines several random events/paramters </del>in the <del class="diffchange diffchange-inline">game</del>. <del class="diffchange diffchange-inline">The counter starts from 0 at the start screen (when you </del>have <del class="diffchange diffchange-inline">the choice between 1 and 2 players). It then runs continuously, except for fixed breaks when the screen turns black (when the game starts and </del>during <del class="diffchange diffchange-inline">the transition between areas). The value can at any given time, t1, be calculated with the following formula: [$55]=(t1-t0-55-142-x*840)/4, where t0 is 4 frames before $55 changed to 1 on the start screen and x is the number of area transitions</del>.<del class="diffchange diffchange-inline">&lt;br /&gt;&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Some addresses are mentioned </ins>in the <ins class="diffchange diffchange-inline">respective relevant sections on this page</ins>. <ins class="diffchange diffchange-inline">Below is a selection of addresses that </ins>have <ins class="diffchange diffchange-inline">been identified </ins>during <ins class="diffchange diffchange-inline">code analysis</ins>.</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$51C <del class="diffchange diffchange-inline">object </del>screen position y (mid)<del class="diffchange diffchange-inline">&lt;br /&gt;</del>&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* $55 - Global counter that determines several random events/parameters in the game. The counter starts from 0 at the start screen (when you have the choice between 1 and 2 players). It then runs continuously, except for fixed breaks when the screen turns black (when the game starts and during the transition between areas). The value can at any given time, t1, be calculated with the following formula: [$55]=(t1-t0-55-142-x*840)/4, where t0 is 4 frames before $55 changed to 1 on the start screen and x is the number of area transitions.</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* $65 - Flag for two players</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* $73/$72 - Big/Small level progress</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* $74 - Relative position compared to the center of the screen (y-direction) (probably telling the game if the screen should be scrolled and/or if the level progress should increase)</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$51C <ins class="diffchange diffchange-inline">- Object </ins>screen position y (mid)</div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* $6FC - Level flag (0 - level 1; 1 -level 2 etc)</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The below analysis of the memory addresses was made by TaoTao in http://tasvideos.org/forum/posting.php?mode=quote&amp;p=450038.&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The below analysis of the memory addresses was made by TaoTao in http://tasvideos.org/forum/posting.php?mode=quote&amp;p=450038.&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>&lt;u&gt;RAM&lt;/u&gt;&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>&lt;u&gt;RAM&lt;/u&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$3D <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>$2000 mirror<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$3D U8 $2000 mirror</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$3E <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>$2001 mirror<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$3E U8 $2001 mirror</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$3F <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>$2005 x mirror<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$3F U8 $2005 x mirror</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$40 <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>$2005 y mirror<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$40 U8 $2005 y mirror</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$41 <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>tmp variable for input reading<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$41 U8 tmp variable for input reading</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$42 <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>tmp variable for input reading<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$42 U8 tmp variable for input reading</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$43 <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>P1 input <del class="diffchange diffchange-inline">&#160; &#160; &#160; # </del>ABSTUDLR<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$43<ins class="diffchange diffchange-inline">/$45 </ins>U8 P1<ins class="diffchange diffchange-inline">/P2 </ins>input<ins class="diffchange diffchange-inline">, </ins>ABSTUDLR</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$44 <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>P1 input modified <del class="diffchange diffchange-inline">&#160; &#160; &#160; # </del>suppress continuous A<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$44<ins class="diffchange diffchange-inline">/$46 </ins>U8 P1<ins class="diffchange diffchange-inline">/P2 </ins>input modified<ins class="diffchange diffchange-inline">, </ins>suppress continuous A</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">$45&#160; &#160; U8&#160; &#160; &#160; P2 input&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$6A U8 current sprite buffer page<ins class="diffchange diffchange-inline">, </ins>2..3</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">$46&#160; &#160; U8&#160; &#160; &#160; P2 input modified&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">* </ins>$E4/$E5 U8 <ins class="diffchange diffchange-inline">P1/</ins>P2 life</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$6A <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>current sprite buffer page <del class="diffchange diffchange-inline">&#160; &#160; # </del>2..3<del class="diffchange diffchange-inline">&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$E4 <del class="diffchange diffchange-inline">&#160; &#160; U8&#160; &#160; &#160; P1 life&lt;br </del>/<del class="diffchange diffchange-inline">&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$E5 <del class="diffchange diffchange-inline">&#160; &#160; </del>U8 <del class="diffchange diffchange-inline">&#160; &#160; </del>P2 life<del class="diffchange diffchange-inline">&lt;br /&gt;&lt;br /&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>$0200-$02FF&#160; &#160; Sprite[64]&#160; &#160; &#160; sprite buffer 1&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>$0200-$02FF&#160; &#160; Sprite[64]&#160; &#160; &#160; sprite buffer 1&lt;br /&gt;</div></td></tr> <tr><td colspan="2" class="diff-lineno">Line 149:</td> <td colspan="2" class="diff-lineno">Line 152:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>$063C-&#160; U8[]&#160; &#160; object direction&#160; &#160; &#160; &#160; # 0..15&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>$063C-&#160; U8[]&#160; &#160; object direction&#160; &#160; &#160; &#160; # 0..15&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>$0674-&#160; U8[]&#160; &#160; object drop-related value&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>$0674-&#160; U8[]&#160; &#160; object drop-related value&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$067F <del class="diffchange diffchange-inline">&#160; U8&#160; &#160; &#160; P1 ammo of gun&lt;br </del>/<del class="diffchange diffchange-inline">&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>$067F/$0680&#160; U8&#160; &#160; &#160; <ins class="diffchange diffchange-inline">P1/</ins>P2 ammo of gun&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$0680&#160; U8&#160; &#160; &#160; P2 ammo of gun&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>$0681/$0682&#160; U8&#160; &#160; &#160; <ins class="diffchange diffchange-inline">P1/</ins>P2 ammo of grenade&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$0681 <del class="diffchange diffchange-inline">&#160; U8&#160; &#160; &#160; P1 ammo of grenade&lt;br </del>/<del class="diffchange diffchange-inline">&gt;</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>$0682&#160; U8&#160; &#160; &#160; P2 ammo of grenade<del class="diffchange diffchange-inline">&lt;br /&gt;</del>&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>&lt;u&gt;ROM&lt;/u&gt;&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>&lt;u&gt;ROM&lt;/u&gt;&lt;br /&gt;</div></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=44404&oldid=prev Ktwo: /* Continue code */ 2023-06-19T16:01:49Z <p>‎<span dir="auto"><span class="autocomment">Continue code</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 16:01, 19 June 2023</td> </tr><tr><td colspan="2" class="diff-lineno">Line 75:</td> <td colspan="2" class="diff-lineno">Line 75:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Continue code===</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Continue code===</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>One of the most well known continue codes throughout the NES library, A B B A. Just press the button combination after having lost the last life and before the game <del class="diffchange diffchange-inline">reverts back to the title </del>screen.&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>One of the most well known continue codes throughout the NES library, A B B A. Just press the button combination after having lost the last life and before the game <ins class="diffchange diffchange-inline">over </ins>screen.<ins class="diffchange diffchange-inline">&lt;br /&gt;</ins>&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">For unknown reasons</del>, the code <del class="diffchange diffchange-inline">doesn't work when you've scrolled until the very end of </del>a <del class="diffchange diffchange-inline">level</del>.&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&#160;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Sometimes</del>, the <del class="diffchange diffchange-inline">game </del>continues <del class="diffchange diffchange-inline">to scroll </del>the <del class="diffchange diffchange-inline">screen after </del>a <del class="diffchange diffchange-inline">game over (unknown reasons)</del>, <del class="diffchange diffchange-inline">which </del>also <del class="diffchange diffchange-inline">prevents you </del>from <del class="diffchange diffchange-inline">continuing</del>. <del class="diffchange diffchange-inline">This is quite uncommon though</del>.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">The game checks for player inputs from instruction $FF89 and onward. Each correct button press increases the counter in $58. When it reaches 4</ins>, the code <ins class="diffchange diffchange-inline">branches to starting </ins>a <ins class="diffchange diffchange-inline">continue (3 lives back etc)</ins>.<ins class="diffchange diffchange-inline">&lt;br /&gt;</ins>&lt;br /&gt;</div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&#160;</div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">When reaching the end of a level (check of $73 at instruction $D1F0) or killing the boss in level 3 or 4</ins>, <ins class="diffchange diffchange-inline">$FB is set to a non-zero value. This skips </ins>the <ins class="diffchange diffchange-inline">ABBA-checking section in the code and </ins>continues <ins class="diffchange diffchange-inline">are no longer possible until starting </ins>the <ins class="diffchange diffchange-inline">next level. There are reports of the ABBA code stops working in the middle of </ins>a <ins class="diffchange diffchange-inline">level. From the code sections referenced above</ins>, <ins class="diffchange diffchange-inline">it's not clear how that could happen. It's possible that $FB could be written to from other sub-routines, but it's </ins>also <ins class="diffchange diffchange-inline">possible that these reports are </ins>from <ins class="diffchange diffchange-inline">incorrectly inputting the code</ins>. <ins class="diffchange diffchange-inline">If someone manages to record an emulator video of when the ABBA-code stops working mid-level, please post about it in the forum</ins>.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Some comments about various aspects of the game mechanics==</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Some comments about various aspects of the game mechanics==</div></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=43867&oldid=prev Ktwo: /* Flying glitch */ 2022-04-04T14:44:29Z <p>‎<span dir="auto"><span class="autocomment">Flying glitch</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 14:44, 4 April 2022</td> </tr><tr><td colspan="2" class="diff-lineno">Line 62:</td> <td colspan="2" class="diff-lineno">Line 62:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>There are two ways to return to the normal state after activating the flying glitch.&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>There are two ways to return to the normal state after activating the flying glitch.&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>- The first is to fly to the end of an area and exit. You will then start the next area in the normal state. Since areas 3 and 4 have bosses at the end, this method only works in area 1 (no helicopter in area 2).&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>- The first is to fly to the end of an area and exit. You will then start the next area in the normal state. Since areas 3 and 4 have bosses at the end, this method only works in area 1 (no helicopter in area 2).&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>- The other method is to buffer a death when initiating the flying state. Upon breaking the flying state, the player dies and then restarts in the normal state as after a normal death. To buffer a death, the helicopter needs to be destroyed before it's scrolled off-screen. This can either be done by firing a missile just before entering the flying state (so press A slightly before pressing B) or have an enemy destroy the helicopter. The latter can e.g. be done by triggering a kamikaze soldier to explode near the helicopter<del class="diffchange diffchange-inline">. Note that you need to exit the helicopter and enter the flying state before it's destroyed (so e.g. a mine can't be used for this purpose)</del>. This method allows the flying glitch to be used in areas 3 and 4, since the bosses at the end of these areas require you to be in the normal state to defeat them.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>- The other method is to buffer a death when initiating the flying state. Upon breaking the flying state, the player dies and then restarts in the normal state as after a normal death. To buffer a death, the helicopter needs to be destroyed before it's scrolled off-screen. This can either be done by firing a missile just before entering the flying state (so press A slightly before pressing B) or have an enemy destroy the helicopter. The latter can e.g. be done by triggering a kamikaze soldier to explode near the helicopter. This method allows the flying glitch to be used in areas 3 and 4, since the bosses at the end of these areas require you to be in the normal state to defeat them.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Visual glitches===</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Visual glitches===</div></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=43835&oldid=prev Ktwo: /* Flying glitch */ 2022-02-10T10:21:37Z <p>‎<span dir="auto"><span class="autocomment">Flying glitch</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 10:21, 10 February 2022</td> </tr><tr><td colspan="2" class="diff-lineno">Line 58:</td> <td colspan="2" class="diff-lineno">Line 58:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>https://www.youtube.com/watch?v=kQF-OpUh99o&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>https://www.youtube.com/watch?v=kQF-OpUh99o&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>If you hold A, B and up at the same time while in the helicopter (they don't need to start to be pressed down simultaneously, you just need to hold them down at the same time), the character will exit the helicopter and continue traveling vertically at helicopter speed as long as A and/or B is kept held down (the glitch doesn't work with the tank). In this state, you're invincible and can't interact with items on the screen.&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>If you hold A, B and up at the same time while in the helicopter (they don't need to start to be pressed down simultaneously, you just need to hold them down at the same time), the character will exit the helicopter and continue traveling vertically at helicopter speed as long as A and/or B is kept held down (the glitch doesn't work with the tank). In this state, you're invincible and can't interact with items on the screen.&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>If you let go of A and B, you will be teleported to the <del class="diffchange diffchange-inline">(</del>small<del class="diffchange diffchange-inline">) </del>y-position you left the helicopter on. Your <del class="diffchange diffchange-inline">movement speed </del>will be <del class="diffchange diffchange-inline">back </del>to <del class="diffchange diffchange-inline">walking speed</del>. <del class="diffchange diffchange-inline">You</del>'<del class="diffchange diffchange-inline">ll </del>still <del class="diffchange diffchange-inline">be </del>in the invincible state and <del class="diffchange diffchange-inline">you're still </del>unable to interact with the environment.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>If you let go of A and B, you will be teleported to the <ins class="diffchange diffchange-inline">&quot;</ins>small y<ins class="diffchange diffchange-inline">&quot;</ins>-position you left the helicopter on. Your <ins class="diffchange diffchange-inline">hitbox </ins>will <ins class="diffchange diffchange-inline">however still </ins>be <ins class="diffchange diffchange-inline">linked </ins>to <ins class="diffchange diffchange-inline">the helicopter position</ins>. <ins class="diffchange diffchange-inline">If the helicopter is off-screen, this means you</ins>'<ins class="diffchange diffchange-inline">re </ins>still in the invincible state and unable to interact with the environment <ins class="diffchange diffchange-inline">(including shots and grenades)</ins>.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>There are two ways to <del class="diffchange diffchange-inline">&quot;break&quot; </del>the <del class="diffchange diffchange-inline">invincibility of </del>the flying <del class="diffchange diffchange-inline">state</del>.&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>There are two ways to <ins class="diffchange diffchange-inline">return to </ins>the <ins class="diffchange diffchange-inline">normal state after activating </ins>the flying <ins class="diffchange diffchange-inline">glitch</ins>.&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>- The first is to fly to the end of an area and exit <del class="diffchange diffchange-inline">it</del>. You will then start the next area in the normal state. Since <del class="diffchange diffchange-inline">there is no helicopter to be found in area 2 and </del>areas 3 and 4 have bosses at the end, this method only works in area 1.&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>- The first is to fly to the end of an area and exit. You will then start the next area in the normal state. Since areas 3 and 4 have bosses at the end, this method only works in area 1 <ins class="diffchange diffchange-inline">(no helicopter in area 2)</ins>.&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>- The other method is to buffer a death when initiating the flying state. Upon breaking the flying state, the player dies and then restarts in the normal state as after a normal death. To buffer a death, the helicopter needs to be destroyed before it's scrolled off-screen. This can either be done by firing a missile just before entering the flying state (so press A slightly before pressing B) or have an enemy destroy the helicopter. The latter can <del class="diffchange diffchange-inline">be done by </del>e.g. triggering a kamikaze soldier to explode near the helicopter <del class="diffchange diffchange-inline">or let an enemy missile hit it</del>. Note that you need to exit the helicopter and enter the flying state before it's destroyed (so e.g. mine can't be used for this purpose). This method allows the flying glitch to be used in areas 3 and 4, since the bosses at the end of these areas require you to be in the normal state to defeat them.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>- The other method is to buffer a death when initiating the flying state. Upon breaking the flying state, the player dies and then restarts in the normal state as after a normal death. To buffer a death, the helicopter needs to be destroyed before it's scrolled off-screen. This can either be done by firing a missile just before entering the flying state (so press A slightly before pressing B) or have an enemy destroy the helicopter. The latter can e.g. <ins class="diffchange diffchange-inline">be done by </ins>triggering a kamikaze soldier to explode near the helicopter. Note that you need to exit the helicopter and enter the flying state before it's destroyed (so e.g. <ins class="diffchange diffchange-inline">a </ins>mine can't be used for this purpose). This method allows the flying glitch to be used in areas 3 and 4, since the bosses at the end of these areas require you to be in the normal state to defeat them.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Visual glitches===</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Visual glitches===</div></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=43832&oldid=prev Ktwo: /* Flying glitch */ 2022-02-08T09:01:37Z <p>‎<span dir="auto"><span class="autocomment">Flying glitch</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 09:01, 8 February 2022</td> </tr><tr><td colspan="2" class="diff-lineno">Line 58:</td> <td colspan="2" class="diff-lineno">Line 58:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>https://www.youtube.com/watch?v=kQF-OpUh99o&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>https://www.youtube.com/watch?v=kQF-OpUh99o&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>If you hold A, B and up at the same time while in the helicopter (they don't need to start to be pressed down simultaneously, you just need to hold them down at the same time), the character will exit the helicopter and continue traveling vertically at helicopter speed as long as A and/or B is kept held down (the glitch doesn't work with the tank). In this state, you're invincible and can't interact with items on the screen.&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>If you hold A, B and up at the same time while in the helicopter (they don't need to start to be pressed down simultaneously, you just need to hold them down at the same time), the character will exit the helicopter and continue traveling vertically at helicopter speed as long as A and/or B is kept held down (the glitch doesn't work with the tank). In this state, you're invincible and can't interact with items on the screen.&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>If you let go of A and B, you will be teleported to the (small) y-position you left the helicopter on. Your movement speed will be back to walking speed. You'll still be in the invincible state and you're still unable to interact with the environment. The <del class="diffchange diffchange-inline">only way </del>to <del class="diffchange diffchange-inline">revert back </del>to normal is to <del class="diffchange diffchange-inline">exit </del>the area <del class="diffchange diffchange-inline">or if </del>the <del class="diffchange diffchange-inline">helicopter was destroyed after </del>the flying state <del class="diffchange diffchange-inline">was initiated</del>, <del class="diffchange diffchange-inline">but still on </del>screen <del class="diffchange diffchange-inline"> (</del>either by an enemy <del class="diffchange diffchange-inline">or </del>by <del class="diffchange diffchange-inline">self-destruction</del>).&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>If you let go of A and B, you will be teleported to the (small) y-position you left the helicopter on. Your movement speed will be back to walking speed. You'll still be in the invincible state and you're still unable to interact with the environment.<ins class="diffchange diffchange-inline">&lt;br /&gt;&lt;br /&gt;</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&#160;</div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">There are two ways to &quot;break&quot; the invincibility of the flying state.&lt;br /&gt;</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">- </ins>The <ins class="diffchange diffchange-inline">first is </ins>to <ins class="diffchange diffchange-inline">fly </ins>to <ins class="diffchange diffchange-inline">the end of an area and exit it. You will then start the next area in the </ins>normal <ins class="diffchange diffchange-inline">state. Since there </ins>is <ins class="diffchange diffchange-inline">no helicopter </ins>to <ins class="diffchange diffchange-inline">be found in area 2 and areas 3 and 4 have bosses at </ins>the <ins class="diffchange diffchange-inline">end, this method only works in </ins>area <ins class="diffchange diffchange-inline">1.&lt;br /&gt;</ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">- The other method is to buffer a death when initiating </ins>the <ins class="diffchange diffchange-inline">flying state. Upon breaking </ins>the flying state, <ins class="diffchange diffchange-inline">the player dies and then restarts in the normal state as after a normal death. To buffer a death, the helicopter needs to be destroyed before it's scrolled off-</ins>screen<ins class="diffchange diffchange-inline">. This can </ins>either <ins class="diffchange diffchange-inline">be done </ins>by <ins class="diffchange diffchange-inline">firing a missile just before entering the flying state (so press A slightly before pressing B) or have </ins>an enemy <ins class="diffchange diffchange-inline">destroy the helicopter. The latter can be done </ins>by <ins class="diffchange diffchange-inline">e.g. triggering a kamikaze soldier to explode near the helicopter or let an enemy missile hit it. Note that you need to exit the helicopter and enter the flying state before it's destroyed (so e.g. mine can't be used for this purpose</ins>)<ins class="diffchange diffchange-inline">. This method allows the flying glitch to be used in areas 3 and 4, since the bosses at the end of these areas require you to be in the normal state to defeat them</ins>.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Visual glitches===</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Visual glitches===</div></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=43672&oldid=prev Ktwo: /* Memory addresses */ 2020-11-11T22:09:19Z <p>‎<span dir="auto"><span class="autocomment">Memory addresses</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 22:09, 11 November 2020</td> </tr><tr><td colspan="2" class="diff-lineno">Line 108:</td> <td colspan="2" class="diff-lineno">Line 108:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Memory addresses==</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Memory addresses==</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>$55&#160; &#160; &#160; &#160; &#160; &#160; Global counter that determines several random events/paramters in the game. The counter starts from 0 at the start screen (when you have the choice between 1 and 2 players). It then runs continuously, except for fixed breaks when the screen turns black (when the game starts and during the transition between areas). The value can at any given time, t1, be calculated with the following formula: [$55]=(t1-t0-55-142-x*840)/4, where t0 is 4 frames before $55 changed to 1 on the start screen and x is the number of area transitions.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>$55&#160; &#160; &#160; &#160; &#160; &#160; Global counter that determines several random events/paramters in the game. The counter starts from 0 at the start screen (when you have the choice between 1 and 2 players). It then runs continuously, except for fixed breaks when the screen turns black (when the game starts and during the transition between areas). The value can at any given time, t1, be calculated with the following formula: [$55]=(t1-t0-55-142-x*840)/4, where t0 is 4 frames before $55 changed to 1 on the start screen and x is the number of area transitions.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td colspan="2">&#160;</td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">$51C object screen position y (mid)&lt;br /&gt;&lt;br /&gt;</ins></div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The below analysis of the memory addresses was made by TaoTao in http://tasvideos.org/forum/posting.php?mode=quote&amp;p=450038.&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The below analysis of the memory addresses was made by TaoTao in http://tasvideos.org/forum/posting.php?mode=quote&amp;p=450038.&lt;br /&gt;</div></td></tr> </table> Ktwo https://kb.speeddemosarchive.com/index.php?title=Ikari_Warriors/Game_Mechanics&diff=43671&oldid=prev Ktwo: /* Enemy AI */ 2020-11-11T22:07:19Z <p>‎<span dir="auto"><span class="autocomment">Enemy AI</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr style='vertical-align: top;'> <td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td> <td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 22:07, 11 November 2020</td> </tr><tr><td colspan="2" class="diff-lineno">Line 104:</td> <td colspan="2" class="diff-lineno">Line 104:</td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Enemy AI===</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>===Enemy AI===</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The game appears to use a fairly simple RNG-algorithm. Some enemy types appearances seem to be fixed (although they can sometimes be missing) and some appear to spawn more randomly (but still restricted to certain areas). One of the random enemy types, the blue soldiers equipped with normal guns, move about in what at first seems to be a random pattern. However, even if it hasn't been investigated exactly how it works, it's quite evident by observations that some enemy movements repeat themselves too often for it to be random. The following clip demonstrates this effect: https://www.youtube.com/watch?v=gIFoTTkVTRM&lt;br /&gt;</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>The game appears to use a fairly simple RNG-algorithm. Some enemy types appearances seem to be fixed (although they can sometimes be missing) and some appear to spawn more randomly (but still restricted to certain areas). One of the random enemy types, the blue soldiers equipped with normal guns, move about in what at first seems to be a random pattern. However, even if it hasn't been investigated exactly how it works, it's quite evident by observations that some enemy movements repeat themselves too often for it to be random. The following clip demonstrates this effect: https://www.youtube.com/watch?v=gIFoTTkVTRM&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The movement direction of the enemies <del class="diffchange diffchange-inline">are </del>stored in addresses 63E and onwards. A study of how the code changes the values of these addresses has not been done.&lt;br /&gt;&lt;br /&gt;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The movement direction of the enemies <ins class="diffchange diffchange-inline">is </ins>stored in addresses <ins class="diffchange diffchange-inline">$</ins>63E and onwards. A study of how the code changes the values of these addresses has not been done.&lt;br /&gt;&lt;br /&gt;</div></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr> <tr><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Memory addresses==</div></td><td class='diff-marker'>&#160;</td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Memory addresses==</div></td></tr> </table> Ktwo