[tnzs]+ The NewZealand Story

This forum is for posting M.A.M.E. Work In Progress "Arcade"cheats that are not quite ready for the prime time. If the cheats are buggy or the cheat descriptions are non-standard then please post them here. Help maybe given but there are no guarantees and they will only be added to the cheat file when the cheat file maintainer is happy with them.
Post Reply
jman
Posts: 901
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 4 times

[tnzs]+ The NewZealand Story

Post by jman »

tnzs.xml

Code: Select all

<!-- The NewZealand Story (World, new version) (P0-043A PCB) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0305C = 18</action> <!-- trap -->
            <action>maincpu.mb@0360E = 10</action> <!-- bullet -->
            <action>maincpu.mb@03C32 = 18</action> <!-- balloon with spine -->
            <action>maincpu.mb@05C6C = 18</action> <!-- bubble -->
            <action>maincpu.mb@06D86 = 18</action> <!-- sheep -->
            <action>maincpu.mb@1C1BE = 00</action> <!-- rock from bat ($81be) -->
            <action>maincpu.mb@1C6A9 = 18</action> <!-- urchin [moved] ($86a9) -->
            <action>maincpu.mb@1C767 = 18</action> <!-- urchin [fixed] ($8767) -->
            <action>maincpu.mb@1C851 = 18</action> <!-- urchin tentacle ($8851) -->
            <action>maincpu.mb@1CFA8 = 00</action> <!-- sea anemone ($8fa8) -->
            <action>    sub.mb@002E9 = 18</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@0305C = 30</action>
            <action>maincpu.mb@0360E = 2D</action>
            <action>maincpu.mb@03C32 = 30</action>
            <action>maincpu.mb@05C6C = 30</action>
            <action>maincpu.mb@06D86 = 30</action>
            <action>maincpu.mb@1C1BE = E8</action>
            <action>maincpu.mb@1C6A9 = 30</action>
            <action>maincpu.mb@1C767 = 30</action>
            <action>maincpu.mb@1C851 = 30</action>
            <action>maincpu.mb@1CFA8 = 11</action>
            <action>    sub.mb@002E9 = 30</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@4723 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4723 = B0</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@4C17 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4C17 = 78</action>
        </script>
    </cheat>

    <cheat desc="scuba air timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@28CD = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@28CD = 17</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@20E5 = 00EF80CD</action> <!-- fall down -->
            <action>maincpu.md@22AB = 00EF80CD</action> <!-- jump -->
        </script>
        <script state="run">
            <action>maincpu.pq@EF80 = 04E647E68C3AE5F5</action>
            <action>maincpu.pq@EF88 = 0B20B7E7BD3A0D20</action>
            <action>maincpu.pq@EF90 = 9721A7C360E1E1E1</action>
            <action>maincpu.pq@EF98 = 234BEDF1E1E7BD32</action>
            <action>maincpu.pq@EFA0 = 000000000000C9EF</action>
            <!--
            EF80 | F5          : push af
            EF81 | E5          : push hl
            EF82 | 3A 8C E6    : ld   a,($E68C)  // check jump button
            EF85 | 47          : ld   b,a
            EF86 | E6 04       : and  $04
            EF88 | 20 0D       : jr   nz,$EF97
            EF8A | 3A BD E7    : ld   a,($E7BD)  // check jump flag
            EF8D | B7          : or   a
            EF8E | 20 0B       : jr   nz,$EF9B
            EF90 | E1          : pop  hl         // jump again
            EF91 | E1          : pop  hl
            EF92 | E1          : pop  hl
            EF93 | 60          : ld   h,b
            EF94 | C3 A7 21    : jp   $21A7
            EF97 | 97          : sub  a
            EF98 | 32 BD E7    : ld   ($E7BD),a  // clear jump flag
            EF9B | E1          : pop  hl
            EF9C | F1          : pop  af
            EF9D | ED 4B 23 EF : ld   bc,($EF23)
            EFA1 | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@20E5 = EF234BED        </action>
            <action>maincpu.md@22AB = EF234BED        </action>
            <action>maincpu.pq@EF80 = 0000000000000000</action>
            <action>maincpu.pq@EF88 = 0000000000000000</action>
            <action>maincpu.pq@EF90 = 0000000000000000</action>
            <action>maincpu.pq@EF98 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="hidden warp gate finder">
        <comment>set before start the game</comment>
        <script state="on">
            <action>maincpu.md@4120 = FEFFCBDD</action>
        </script>
        <script state="off">
            <action>maincpu.md@4120 = 050336DD</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@1303D = B8E68C3AE00021FB</action>
            <action>maincpu.mq@13045 = 350120DFFEF92847</action>
            <action>maincpu.mq@1304D = 20BFFE340120EFFE</action>
            <action>maincpu.mq@13055 = 207FFE0618F03E04</action>
            <action>maincpu.mq@1305D = F7FE787786103E05</action>
            <action>maincpu.mq@13065 = 20FBFE05187E0320</action>
            <action>maincpu.mq@1306D = FFCD18EF1032AF04</action>
            <!--
            B03D | FB       : ei             // enable interrupt
            B03E | 21 00 E0 : ld   hl,$E000  // sound code address
            B041 | 3A 8C E6 : ld   a,($E68C) // read input
            B044 | B8       : cp   b
            B045 | 47       : ld   b,a
            B046 | 28 F9    : jr   z,$B041
            B048 | FE DF    : cp   $DF
            B04A | 20 01    : jr   nz,$B04D
            B04C | 35       : dec  (hl)      // decrease code -01
            B04D | FE EF    : cp   $EF
            B04F | 20 01    : jr   nz,$B052
            B051 | 34       : inc  (hl)      // increase code +01
            B052 | FE BF    : cp   $BF
            B054 | 20 04    : jr   nz,$B05A
            B056 | 3E F0    : ld   a,$F0     // decrease code -10
            B058 | 18 06    : jr   $B060
            B05A | FE 7F    : cp   $7F
            B05C | 20 05    : jr   nz,$B063
            B05E | 3E 10    : ld   a,$10     // increase code +10
            B060 | 86       : add  a,(hl)
            B061 | 77       : ld   (hl),a
            B062 | 78       : ld   a,b
            B063 | FE F7    : cp   $F7
            B065 | 20 03    : jr   nz,$B06A
            B067 | 7E       : ld   a,(hl)    // play sound
            B068 | 18 05    : jr   $B06F
            B06A | FE FB    : cp   $FB
            B06C | 20 04    : jr   nz,$B072  // stop sound
            B06E | AF       : xor  a
            B06F | 32 10 EF : ld   ($EF10),a // send sound code
            B072 | 18 CD    : jr   $B041
            -->
            <action>audiocpu.mb@027E = 00</action> <!-- enable sound -->
        </script>
        <script state="run">
            <output format="----- the newzealand story sound test mode -----" line="10" align="center" />
            <output format="left : decrease code -01"                         line="11" align="center" />
            <output format="right : increase code +01"                        line="12" align="center" />
            <output format="down : decrease code -10"                         line="13" align="center" />
            <output format="up : increase code +10"                           line="14" align="center" />
            <output format="button 1 : play sound"                            line="15" align="center" />
            <output format="button 2 : stop sound"                            line="16" align="center" />
            <output format="----------------------------"                     line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"                line="19" align="center"  >
                <argument>maincpu.pb@E000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@1303D = 3EF3C057CBEF0E3A</action>
            <action> maincpu.mq@13045 = DA32203EEF183201</action>
            <action> maincpu.mq@1304D = 3ED20021F30132E5</action>
            <action> maincpu.mq@13055 = 0021B35BCDE00600</action>
            <action> maincpu.mq@1305D = B35BCDE0065C3EC0</action>
            <action> maincpu.mq@13065 = CDE006003ED00021</action>
            <action> maincpu.mq@1306D = 26100001001EB35B</action>
            <action>audiocpu.mb@0027E = C8              </action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@0287 = 0289</action> <!-- ram -->
            <action>maincpu.mb@0C87 = C9  </action> <!-- rom -->
            <action>    sub.mb@065F = C9  </action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.mw@0287 = 0CBE</action>
            <action>maincpu.mb@0C87 = 00  </action>
            <action>    sub.mb@065F = 00  </action>
        </script>
    </cheat>

</mamecheat>
tnzsj.xml

Code: Select all

<!-- The NewZealand Story (Japan, new version) (P0-043A PCB) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0305C = 18</action> <!-- trap -->
            <action>maincpu.mb@0360E = 10</action> <!-- bullet -->
            <action>maincpu.mb@03C32 = 18</action> <!-- balloon with spine -->
            <action>maincpu.mb@05C6C = 18</action> <!-- bubble -->
            <action>maincpu.mb@06D86 = 18</action> <!-- sheep -->
            <action>maincpu.mb@1C1BE = 00</action> <!-- rock from bat ($81be) -->
            <action>maincpu.mb@1C6A9 = 18</action> <!-- urchin [moved] ($86a9) -->
            <action>maincpu.mb@1C767 = 18</action> <!-- urchin [fixed] ($8767) -->
            <action>maincpu.mb@1C851 = 18</action> <!-- urchin tentacle ($8851) -->
            <action>maincpu.mb@1CFA8 = 00</action> <!-- sea anemone ($8fa8) -->
            <action>    sub.mb@002E9 = 18</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@0305C = 30</action>
            <action>maincpu.mb@0360E = 2D</action>
            <action>maincpu.mb@03C32 = 30</action>
            <action>maincpu.mb@05C6C = 30</action>
            <action>maincpu.mb@06D86 = 30</action>
            <action>maincpu.mb@1C1BE = E8</action>
            <action>maincpu.mb@1C6A9 = 30</action>
            <action>maincpu.mb@1C767 = 30</action>
            <action>maincpu.mb@1C851 = 30</action>
            <action>maincpu.mb@1CFA8 = 11</action>
            <action>    sub.mb@002E9 = 30</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@4723 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4723 = B0</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@4C17 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4C17 = 78</action>
        </script>
    </cheat>

    <cheat desc="scuba air timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@28CD = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@28CD = 17</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@20E5 = 00EF80CD</action> <!-- fall down -->
            <action>maincpu.md@22AB = 00EF80CD</action> <!-- jump -->
        </script>
        <script state="run">
            <action>maincpu.pq@EF80 = 04E647E68C3AE5F5</action>
            <action>maincpu.pq@EF88 = 0B20B7E7BD3A0D20</action>
            <action>maincpu.pq@EF90 = 9721A7C360E1E1E1</action>
            <action>maincpu.pq@EF98 = 234BEDF1E1E7BD32</action>
            <action>maincpu.pq@EFA0 = 000000000000C9EF</action>
            <!--
            EF80 | F5          : push af
            EF81 | E5          : push hl
            EF82 | 3A 8C E6    : ld   a,($E68C)  // check jump button
            EF85 | 47          : ld   b,a
            EF86 | E6 04       : and  $04
            EF88 | 20 0D       : jr   nz,$EF97
            EF8A | 3A BD E7    : ld   a,($E7BD)  // check jump flag
            EF8D | B7          : or   a
            EF8E | 20 0B       : jr   nz,$EF9B
            EF90 | E1          : pop  hl         // jump again
            EF91 | E1          : pop  hl
            EF92 | E1          : pop  hl
            EF93 | 60          : ld   h,b
            EF94 | C3 A7 21    : jp   $21A7
            EF97 | 97          : sub  a
            EF98 | 32 BD E7    : ld   ($E7BD),a  // clear jump flag
            EF9B | E1          : pop  hl
            EF9C | F1          : pop  af
            EF9D | ED 4B 23 EF : ld   bc,($EF23)
            EFA1 | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@20E5 = EF234BED        </action>
            <action>maincpu.md@22AB = EF234BED        </action>
            <action>maincpu.pq@EF80 = 0000000000000000</action>
            <action>maincpu.pq@EF88 = 0000000000000000</action>
            <action>maincpu.pq@EF90 = 0000000000000000</action>
            <action>maincpu.pq@EF98 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="hidden warp gate finder">
        <comment>set before start the game</comment>
        <script state="on">
            <action>maincpu.md@4120 = FEFFCBDD</action>
        </script>
        <script state="off">
            <action>maincpu.md@4120 = 050336DD</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@1303D = B8E68C3AE00021FB</action>
            <action>maincpu.mq@13045 = 350120DFFEF92847</action>
            <action>maincpu.mq@1304D = 20BFFE340120EFFE</action>
            <action>maincpu.mq@13055 = 207FFE0618F03E04</action>
            <action>maincpu.mq@1305D = F7FE787786103E05</action>
            <action>maincpu.mq@13065 = 20FBFE05187E0320</action>
            <action>maincpu.mq@1306D = FFCD18EF1032AF04</action>
            <!--
            B03D | FB       : ei             // enable interrupt
            B03E | 21 00 E0 : ld   hl,$E000  // sound code address
            B041 | 3A 8C E6 : ld   a,($E68C) // read input
            B044 | B8       : cp   b
            B045 | 47       : ld   b,a
            B046 | 28 F9    : jr   z,$B041
            B048 | FE DF    : cp   $DF
            B04A | 20 01    : jr   nz,$B04D
            B04C | 35       : dec  (hl)      // decrease code -01
            B04D | FE EF    : cp   $EF
            B04F | 20 01    : jr   nz,$B052
            B051 | 34       : inc  (hl)      // increase code +01
            B052 | FE BF    : cp   $BF
            B054 | 20 04    : jr   nz,$B05A
            B056 | 3E F0    : ld   a,$F0     // decrease code -10
            B058 | 18 06    : jr   $B060
            B05A | FE 7F    : cp   $7F
            B05C | 20 05    : jr   nz,$B063
            B05E | 3E 10    : ld   a,$10     // increase code +10
            B060 | 86       : add  a,(hl)
            B061 | 77       : ld   (hl),a
            B062 | 78       : ld   a,b
            B063 | FE F7    : cp   $F7
            B065 | 20 03    : jr   nz,$B06A
            B067 | 7E       : ld   a,(hl)    // play sound
            B068 | 18 05    : jr   $B06F
            B06A | FE FB    : cp   $FB
            B06C | 20 04    : jr   nz,$B072  // stop sound
            B06E | AF       : xor  a
            B06F | 32 10 EF : ld   ($EF10),a // send sound code
            B072 | 18 CD    : jr   $B041
            -->
            <action>audiocpu.mb@027E = 00</action> <!-- enable sound -->
        </script>
        <script state="run">
            <output format="----- the newzealand story sound test mode -----" line="10" align="center" />
            <output format="left : decrease code -01"                         line="11" align="center" />
            <output format="right : increase code +01"                        line="12" align="center" />
            <output format="down : decrease code -10"                         line="13" align="center" />
            <output format="up : increase code +10"                           line="14" align="center" />
            <output format="button 1 : play sound"                            line="15" align="center" />
            <output format="button 2 : stop sound"                            line="16" align="center" />
            <output format="----------------------------"                     line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"                line="19" align="center"  >
                <argument>maincpu.pb@E000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@1303D = 3EF3C057CBEF0E3A</action>
            <action> maincpu.mq@13045 = DA32203EEF183201</action>
            <action> maincpu.mq@1304D = 3ED20021F30132E5</action>
            <action> maincpu.mq@13055 = 0021B35BCDE00600</action>
            <action> maincpu.mq@1305D = B35BCDE0065C3EC0</action>
            <action> maincpu.mq@13065 = CDE006003ED00021</action>
            <action> maincpu.mq@1306D = 26100001001EB35B</action>
            <action>audiocpu.mb@0027E = C8              </action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@0287 = 0289</action> <!-- ram -->
            <action>maincpu.mb@0C87 = C9  </action> <!-- rom -->
            <action>    sub.mb@065F = C9  </action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.mw@0287 = 0CBE</action>
            <action>maincpu.mb@0C87 = 00  </action>
            <action>    sub.mb@065F = 00  </action>
        </script>
    </cheat>

</mamecheat>
tnzso.xml

Code: Select all

<!-- The NewZealand Story (World, old version) (P0-041A PCB) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0305E = 18</action> <!-- trap -->
            <action>maincpu.mb@03610 = 12</action> <!-- bullet -->
            <action>maincpu.mb@03C34 = 18</action> <!-- balloon with spine -->
            <action>maincpu.mb@05B4F = 18</action> <!-- bubble -->
            <action>maincpu.mb@06C5B = 18</action> <!-- sheep -->
            <action>maincpu.mb@1C069 = 00</action> <!-- rock from bat ($8069) -->
            <action>maincpu.mb@1C554 = 18</action> <!-- urchin [moved] ($8554) -->
            <action>maincpu.mb@1C612 = 18</action> <!-- urchin [fixed] ($8612) -->
            <action>maincpu.mb@1C6FC = 18</action> <!-- urchin tentacle ($86fc) -->
            <action>maincpu.mb@1CE53 = 00</action> <!-- sea anemone ($8e53) -->
            <action>    sub.mb@0032C = 18</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@0305E = 30</action>
            <action>maincpu.mb@03610 = 2F</action>
            <action>maincpu.mb@03C34 = 30</action>
            <action>maincpu.mb@05B4F = 30</action>
            <action>maincpu.mb@06C5B = 30</action>
            <action>maincpu.mb@1C069 = E8</action>
            <action>maincpu.mb@1C554 = 30</action>
            <action>maincpu.mb@1C612 = 30</action>
            <action>maincpu.mb@1C6FC = 30</action>
            <action>maincpu.mb@1CE53 = 11</action>
            <action>    sub.mb@0032C = 30</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@4723 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4723 = B0</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@4BFF = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4BFF = 78</action>
        </script>
    </cheat>

    <cheat desc="scuba air timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@28CF = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@28CF = 17</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@20E7 = 00EF80CD</action> <!-- fall down -->
            <action>maincpu.md@22AD = 00EF80CD</action> <!-- jump -->
        </script>
        <script state="run">
            <action>maincpu.pq@EF80 = 04E647E68C3AE5F5</action>
            <action>maincpu.pq@EF88 = 0B20B7E7BD3A0D20</action>
            <action>maincpu.pq@EF90 = 9721A9C360E1E1E1</action>
            <action>maincpu.pq@EF98 = 234BEDF1E1E7BD32</action>
            <action>maincpu.pq@EFA0 = 000000000000C9EF</action>
            <!--
            EF80 | F5          : push af
            EF81 | E5          : push hl
            EF82 | 3A 8C E6    : ld   a,($E68C)  // check jump button
            EF85 | 47          : ld   b,a
            EF86 | E6 04       : and  $04
            EF88 | 20 0D       : jr   nz,$EF97
            EF8A | 3A BD E7    : ld   a,($E7BD)  // check jump flag
            EF8D | B7          : or   a
            EF8E | 20 0B       : jr   nz,$EF9B
            EF90 | E1          : pop  hl         // jump again
            EF91 | E1          : pop  hl
            EF92 | E1          : pop  hl
            EF93 | 60          : ld   h,b
            EF94 | C3 A9 21    : jp   $21A9
            EF97 | 97          : sub  a
            EF98 | 32 BD E7    : ld   ($E7BD),a  // clear jump flag
            EF9B | E1          : pop  hl
            EF9C | F1          : pop  af
            EF9D | ED 4B 23 EF : ld   bc,($EF23)
            EFA1 | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@20E7 = EF234BED        </action>
            <action>maincpu.md@22AD = EF234BED        </action>
            <action>maincpu.pq@EF80 = 0000000000000000</action>
            <action>maincpu.pq@EF88 = 0000000000000000</action>
            <action>maincpu.pq@EF90 = 0000000000000000</action>
            <action>maincpu.pq@EF98 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="hidden warp gate finder">
        <comment>set before start the game</comment>
        <script state="on">
            <action>maincpu.md@4122 = FEFFCBDD</action>
        </script>
        <script state="off">
            <action>maincpu.md@4122 = 050336DD</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@136D7 = B8E68C3AE00021FB</action>
            <action>maincpu.mq@136DF = 350120DFFEF92847</action>
            <action>maincpu.mq@136E7 = 20BFFE340120EFFE</action>
            <action>maincpu.mq@136EF = 207FFE0618F03E04</action>
            <action>maincpu.mq@136F7 = F7FE787786103E05</action>
            <action>maincpu.mq@136FF = 20FBFE05187E0320</action>
            <action>maincpu.mq@13707 = FFCD18EF1032AF04</action>
            <!--
            B6D7 | FB       : ei             // enable interrupt
            B6D8 | 21 00 E0 : ld   hl,$E000  // sound code address
            B6DB | 3A 8C E6 : ld   a,($E68C) // read input
            B6DE | B8       : cp   b
            B6DF | 47       : ld   b,a
            B6E0 | 28 F9    : jr   z,$B6DB
            B6E2 | FE DF    : cp   $DF
            B6E4 | 20 01    : jr   nz,$B6E7
            B6E6 | 35       : dec  (hl)      // decrease code -01
            B6E7 | FE EF    : cp   $EF
            B6E9 | 20 01    : jr   nz,$B6EC
            B6EB | 34       : inc  (hl)      // increase code +01
            B6EC | FE BF    : cp   $BF
            B6EE | 20 04    : jr   nz,$B6F4
            B6F0 | 3E F0    : ld   a,$F0     // decrease code -10
            B6F2 | 18 06    : jr   $B6FA
            B6F4 | FE 7F    : cp   $7F
            B6F6 | 20 05    : jr   nz,$B6FD
            B6F8 | 3E 10    : ld   a,$10     // increase code +10
            B6FA | 86       : add  a,(hl)
            B6FB | 77       : ld   (hl),a
            B6FC | 78       : ld   a,b
            B6FD | FE F7    : cp   $F7
            B6FF | 20 03    : jr   nz,$B704
            B701 | 7E       : ld   a,(hl)    // play sound
            B702 | 18 05    : jr   $B709
            B704 | FE FB    : cp   $FB
            B706 | 20 04    : jr   nz,$B70C
            B708 | AF       : xor  a         // stop sound
            B709 | 32 10 EF : ld   ($EF10),a // send sound code
            B70C | 18 CD    : jr   $B6DB
            -->
            <action>sub.mb@0800 = 00</action> <!-- enable sound -->
        </script>
        <script state="run">
            <output format="----- the newzealand story sound test mode -----" line="10" align="center" />
            <output format="left : decrease code -01"                         line="11" align="center" />
            <output format="right : increase code +01"                        line="12" align="center" />
            <output format="down : decrease code -10"                         line="13" align="center" />
            <output format="up : increase code +10"                           line="14" align="center" />
            <output format="button 1 : play sound"                            line="15" align="center" />
            <output format="button 2 : stop sound"                            line="16" align="center" />
            <output format="----------------------------"                     line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"                line="19" align="center"  >
                <argument>maincpu.pb@E000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@136D7 = 3EF3C057CBEF0E3A</action>
            <action>maincpu.mq@136DF = DA32203EEF183201</action>
            <action>maincpu.mq@136E7 = 3ED20021F30132E5</action>
            <action>maincpu.mq@136EF = 0021B9F5CDE00600</action>
            <action>maincpu.mq@136F7 = B9F5CDE0065C3EC0</action>
            <action>maincpu.mq@136FF = CDE006003ED00021</action>
            <action>maincpu.mq@13707 = 26100001001EB9F5</action>
            <action>    sub.mb@00800 = C8              </action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@0287 = 0289</action> <!-- ram -->
            <action>maincpu.mb@0C89 = C9  </action> <!-- rom -->
            <action>    sub.mb@0666 = C9  </action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.mw@0287 = 0CC0</action>
            <action>maincpu.mb@0C89 = 00  </action>
            <action>    sub.mb@0666 = 21  </action>
        </script>
    </cheat>

</mamecheat>
tnzsjo.xml

Code: Select all

<!-- The NewZealand Story (Japan, old version) (P0-041A PCB) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0305E = 18</action> <!-- trap -->
            <action>maincpu.mb@03610 = 12</action> <!-- bullet -->
            <action>maincpu.mb@03C34 = 18</action> <!-- balloon with spine -->
            <action>maincpu.mb@05B4F = 18</action> <!-- bubble -->
            <action>maincpu.mb@06C5B = 18</action> <!-- sheep -->
            <action>maincpu.mb@1C069 = 00</action> <!-- rock from bat ($8069) -->
            <action>maincpu.mb@1C554 = 18</action> <!-- urchin [moved] ($8554) -->
            <action>maincpu.mb@1C612 = 18</action> <!-- urchin [fixed] ($8612) -->
            <action>maincpu.mb@1C6FC = 18</action> <!-- urchin tentacle ($86fc) -->
            <action>maincpu.mb@1CE53 = 00</action> <!-- sea anemone ($8e53) -->
            <action>    sub.mb@0032C = 18</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@0305E = 30</action>
            <action>maincpu.mb@03610 = 2F</action>
            <action>maincpu.mb@03C34 = 30</action>
            <action>maincpu.mb@05B4F = 30</action>
            <action>maincpu.mb@06C5B = 30</action>
            <action>maincpu.mb@1C069 = E8</action>
            <action>maincpu.mb@1C554 = 30</action>
            <action>maincpu.mb@1C612 = 30</action>
            <action>maincpu.mb@1C6FC = 30</action>
            <action>maincpu.mb@1CE53 = 11</action>
            <action>    sub.mb@0032C = 30</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@4723 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4723 = B0</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@4BFF = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4BFF = 78</action>
        </script>
    </cheat>

    <cheat desc="scuba air timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@28CF = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@28CF = 17</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@20E7 = 00EF80CD</action> <!-- fall down -->
            <action>maincpu.md@22AD = 00EF80CD</action> <!-- jump -->
        </script>
        <script state="run">
            <action>maincpu.pq@EF80 = 04E647E68C3AE5F5</action>
            <action>maincpu.pq@EF88 = 0B20B7E7BD3A0D20</action>
            <action>maincpu.pq@EF90 = 9721A9C360E1E1E1</action>
            <action>maincpu.pq@EF98 = 234BEDF1E1E7BD32</action>
            <action>maincpu.pq@EFA0 = 000000000000C9EF</action>
            <!--
            EF80 | F5          : push af
            EF81 | E5          : push hl
            EF82 | 3A 8C E6    : ld   a,($E68C)  // check jump button
            EF85 | 47          : ld   b,a
            EF86 | E6 04       : and  $04
            EF88 | 20 0D       : jr   nz,$EF97
            EF8A | 3A BD E7    : ld   a,($E7BD)  // check jump flag
            EF8D | B7          : or   a
            EF8E | 20 0B       : jr   nz,$EF9B
            EF90 | E1          : pop  hl         // jump again
            EF91 | E1          : pop  hl
            EF92 | E1          : pop  hl
            EF93 | 60          : ld   h,b
            EF94 | C3 A9 21    : jp   $21A9
            EF97 | 97          : sub  a
            EF98 | 32 BD E7    : ld   ($E7BD),a  // clear jump flag
            EF9B | E1          : pop  hl
            EF9C | F1          : pop  af
            EF9D | ED 4B 23 EF : ld   bc,($EF23)
            EFA1 | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@20E7 = EF234BED        </action>
            <action>maincpu.md@22AD = EF234BED        </action>
            <action>maincpu.pq@EF80 = 0000000000000000</action>
            <action>maincpu.pq@EF88 = 0000000000000000</action>
            <action>maincpu.pq@EF90 = 0000000000000000</action>
            <action>maincpu.pq@EF98 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="hidden warp gate finder">
        <comment>set before start the game</comment>
        <script state="on">
            <action>maincpu.md@4122 = FEFFCBDD</action>
        </script>
        <script state="off">
            <action>maincpu.md@4122 = 050336DD</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@136D7 = B8E68C3AE00021FB</action>
            <action>maincpu.mq@136DF = 350120DFFEF92847</action>
            <action>maincpu.mq@136E7 = 20BFFE340120EFFE</action>
            <action>maincpu.mq@136EF = 207FFE0618F03E04</action>
            <action>maincpu.mq@136F7 = F7FE787786103E05</action>
            <action>maincpu.mq@136FF = 20FBFE05187E0320</action>
            <action>maincpu.mq@13707 = FFCD18EF1032AF04</action>
            <!--
            B6D7 | FB       : ei             // enable interrupt
            B6D8 | 21 00 E0 : ld   hl,$E000  // sound code address
            B6DB | 3A 8C E6 : ld   a,($E68C) // read input
            B6DE | B8       : cp   b
            B6DF | 47       : ld   b,a
            B6E0 | 28 F9    : jr   z,$B6DB
            B6E2 | FE DF    : cp   $DF
            B6E4 | 20 01    : jr   nz,$B6E7
            B6E6 | 35       : dec  (hl)      // decrease code -01
            B6E7 | FE EF    : cp   $EF
            B6E9 | 20 01    : jr   nz,$B6EC
            B6EB | 34       : inc  (hl)      // increase code +01
            B6EC | FE BF    : cp   $BF
            B6EE | 20 04    : jr   nz,$B6F4
            B6F0 | 3E F0    : ld   a,$F0     // decrease code -10
            B6F2 | 18 06    : jr   $B6FA
            B6F4 | FE 7F    : cp   $7F
            B6F6 | 20 05    : jr   nz,$B6FD
            B6F8 | 3E 10    : ld   a,$10     // increase code +10
            B6FA | 86       : add  a,(hl)
            B6FB | 77       : ld   (hl),a
            B6FC | 78       : ld   a,b
            B6FD | FE F7    : cp   $F7
            B6FF | 20 03    : jr   nz,$B704
            B701 | 7E       : ld   a,(hl)    // play sound
            B702 | 18 05    : jr   $B709
            B704 | FE FB    : cp   $FB
            B706 | 20 04    : jr   nz,$B70C
            B708 | AF       : xor  a         // stop sound
            B709 | 32 10 EF : ld   ($EF10),a // send sound code
            B70C | 18 CD    : jr   $B6DB
            -->
            <action>sub.mb@0800 = 00</action> <!-- enable sound -->
        </script>
        <script state="run">
            <output format="----- the newzealand story sound test mode -----" line="10" align="center" />
            <output format="left : decrease code -01"                         line="11" align="center" />
            <output format="right : increase code +01"                        line="12" align="center" />
            <output format="down : decrease code -10"                         line="13" align="center" />
            <output format="up : increase code +10"                           line="14" align="center" />
            <output format="button 1 : play sound"                            line="15" align="center" />
            <output format="button 2 : stop sound"                            line="16" align="center" />
            <output format="----------------------------"                     line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"                line="19" align="center"  >
                <argument>maincpu.pb@E000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@136D7 = 3EF3C057CBEF0E3A</action>
            <action>maincpu.mq@136DF = DA32203EEF183201</action>
            <action>maincpu.mq@136E7 = 3ED20021F30132E5</action>
            <action>maincpu.mq@136EF = 0021B9F5CDE00600</action>
            <action>maincpu.mq@136F7 = B9F5CDE0065C3EC0</action>
            <action>maincpu.mq@136FF = CDE006003ED00021</action>
            <action>maincpu.mq@13707 = 26100001001EB9F5</action>
            <action>    sub.mb@00800 = C8              </action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@0287 = 0289</action> <!-- ram -->
            <action>maincpu.mb@0C89 = C9  </action> <!-- rom -->
            <action>    sub.mb@0666 = C9  </action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.mw@0287 = 0CC0</action>
            <action>maincpu.mb@0C89 = 00  </action>
            <action>    sub.mb@0666 = 21  </action>
        </script>
    </cheat>

</mamecheat>
tnzsuo.xml

Code: Select all

<!-- The NewZealand Story (US, old version) (P0-041A PCB) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0305E = 18</action> <!-- trap -->
            <action>maincpu.mb@03610 = 12</action> <!-- bullet -->
            <action>maincpu.mb@03C34 = 18</action> <!-- balloon with spine -->
            <action>maincpu.mb@05B4F = 18</action> <!-- bubble -->
            <action>maincpu.mb@06C5B = 18</action> <!-- sheep -->
            <action>maincpu.mb@1C069 = 00</action> <!-- rock from bat ($8069) -->
            <action>maincpu.mb@1C554 = 18</action> <!-- urchin [moved] ($8554) -->
            <action>maincpu.mb@1C612 = 18</action> <!-- urchin [fixed] ($8612) -->
            <action>maincpu.mb@1C6FC = 18</action> <!-- urchin tentacle ($86fc) -->
            <action>maincpu.mb@1CE53 = 00</action> <!-- sea anemone ($8e53) -->
            <action>    sub.mb@0032C = 18</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@0305E = 30</action>
            <action>maincpu.mb@03610 = 2F</action>
            <action>maincpu.mb@03C34 = 30</action>
            <action>maincpu.mb@05B4F = 30</action>
            <action>maincpu.mb@06C5B = 30</action>
            <action>maincpu.mb@1C069 = E8</action>
            <action>maincpu.mb@1C554 = 30</action>
            <action>maincpu.mb@1C612 = 30</action>
            <action>maincpu.mb@1C6FC = 30</action>
            <action>maincpu.mb@1CE53 = 11</action>
            <action>    sub.mb@0032C = 30</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@4723 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4723 = B0</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@4BFF = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4BFF = 78</action>
        </script>
    </cheat>

    <cheat desc="scuba air timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@28CF = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@28CF = 17</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@20E7 = 00EF80CD</action> <!-- fall down -->
            <action>maincpu.md@22AD = 00EF80CD</action> <!-- jump -->
        </script>
        <script state="run">
            <action>maincpu.pq@EF80 = 04E647E68C3AE5F5</action>
            <action>maincpu.pq@EF88 = 0B20B7E7BD3A0D20</action>
            <action>maincpu.pq@EF90 = 9721A9C360E1E1E1</action>
            <action>maincpu.pq@EF98 = 234BEDF1E1E7BD32</action>
            <action>maincpu.pq@EFA0 = 000000000000C9EF</action>
            <!--
            EF80 | F5          : push af
            EF81 | E5          : push hl
            EF82 | 3A 8C E6    : ld   a,($E68C)  // check jump button
            EF85 | 47          : ld   b,a
            EF86 | E6 04       : and  $04
            EF88 | 20 0D       : jr   nz,$EF97
            EF8A | 3A BD E7    : ld   a,($E7BD)  // check jump flag
            EF8D | B7          : or   a
            EF8E | 20 0B       : jr   nz,$EF9B
            EF90 | E1          : pop  hl         // jump again
            EF91 | E1          : pop  hl
            EF92 | E1          : pop  hl
            EF93 | 60          : ld   h,b
            EF94 | C3 A9 21    : jp   $21A9
            EF97 | 97          : sub  a
            EF98 | 32 BD E7    : ld   ($E7BD),a  // clear jump flag
            EF9B | E1          : pop  hl
            EF9C | F1          : pop  af
            EF9D | ED 4B 23 EF : ld   bc,($EF23)
            EFA1 | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@20E7 = EF234BED        </action>
            <action>maincpu.md@22AD = EF234BED        </action>
            <action>maincpu.pq@EF80 = 0000000000000000</action>
            <action>maincpu.pq@EF88 = 0000000000000000</action>
            <action>maincpu.pq@EF90 = 0000000000000000</action>
            <action>maincpu.pq@EF98 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="hidden warp gate finder">
        <comment>set before start the game</comment>
        <script state="on">
            <action>maincpu.md@4122 = FEFFCBDD</action>
        </script>
        <script state="off">
            <action>maincpu.md@4122 = 050336DD</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@136D7 = B8E68C3AE00021FB</action>
            <action>maincpu.mq@136DF = 350120DFFEF92847</action>
            <action>maincpu.mq@136E7 = 20BFFE340120EFFE</action>
            <action>maincpu.mq@136EF = 207FFE0618F03E04</action>
            <action>maincpu.mq@136F7 = F7FE787786103E05</action>
            <action>maincpu.mq@136FF = 20FBFE05187E0320</action>
            <action>maincpu.mq@13707 = FFCD18EF1032AF04</action>
            <!--
            B6D7 | FB       : ei             // enable interrupt
            B6D8 | 21 00 E0 : ld   hl,$E000  // sound code address
            B6DB | 3A 8C E6 : ld   a,($E68C) // read input
            B6DE | B8       : cp   b
            B6DF | 47       : ld   b,a
            B6E0 | 28 F9    : jr   z,$B6DB
            B6E2 | FE DF    : cp   $DF
            B6E4 | 20 01    : jr   nz,$B6E7
            B6E6 | 35       : dec  (hl)      // decrease code -01
            B6E7 | FE EF    : cp   $EF
            B6E9 | 20 01    : jr   nz,$B6EC
            B6EB | 34       : inc  (hl)      // increase code +01
            B6EC | FE BF    : cp   $BF
            B6EE | 20 04    : jr   nz,$B6F4
            B6F0 | 3E F0    : ld   a,$F0     // decrease code -10
            B6F2 | 18 06    : jr   $B6FA
            B6F4 | FE 7F    : cp   $7F
            B6F6 | 20 05    : jr   nz,$B6FD
            B6F8 | 3E 10    : ld   a,$10     // increase code +10
            B6FA | 86       : add  a,(hl)
            B6FB | 77       : ld   (hl),a
            B6FC | 78       : ld   a,b
            B6FD | FE F7    : cp   $F7
            B6FF | 20 03    : jr   nz,$B704
            B701 | 7E       : ld   a,(hl)    // play sound
            B702 | 18 05    : jr   $B709
            B704 | FE FB    : cp   $FB
            B706 | 20 04    : jr   nz,$B70C
            B708 | AF       : xor  a         // stop sound
            B709 | 32 10 EF : ld   ($EF10),a // send sound code
            B70C | 18 CD    : jr   $B6DB
            -->
            <action>sub.mb@0800 = 00</action> <!-- enable sound -->
        </script>
        <script state="run">
            <output format="----- the newzealand story sound test mode -----" line="10" align="center" />
            <output format="left : decrease code -01"                         line="11" align="center" />
            <output format="right : increase code +01"                        line="12" align="center" />
            <output format="down : decrease code -10"                         line="13" align="center" />
            <output format="up : increase code +10"                           line="14" align="center" />
            <output format="button 1 : play sound"                            line="15" align="center" />
            <output format="button 2 : stop sound"                            line="16" align="center" />
            <output format="----------------------------"                     line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"                line="19" align="center"  >
                <argument>maincpu.pb@E000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@136D7 = 3EF3C057CBEF0E3A</action>
            <action>maincpu.mq@136DF = DA32203EEF183201</action>
            <action>maincpu.mq@136E7 = 3ED20021F30132E5</action>
            <action>maincpu.mq@136EF = 0021B9F5CDE00600</action>
            <action>maincpu.mq@136F7 = B9F5CDE0065C3EC0</action>
            <action>maincpu.mq@136FF = CDE006003ED00021</action>
            <action>maincpu.mq@13707 = 26100001001EB9F5</action>
            <action>    sub.mb@00800 = C8              </action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@0287 = 0289</action> <!-- ram -->
            <action>maincpu.mb@0C89 = C9  </action> <!-- rom -->
            <action>    sub.mb@0666 = C9  </action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.mw@0287 = 0CC0</action>
            <action>maincpu.mb@0C89 = 00  </action>
            <action>    sub.mb@0666 = 21  </action>
        </script>
    </cheat>

</mamecheat>
jman
Posts: 901
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 4 times

[tnzs]+ The NewZealand Story

Post by jman »

tnzsoa.xml

Code: Select all

<!-- The NewZealand Story (World, unknown version) (P0-041A PCB) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@03034 = 18  </action> <!-- trap -->
            <action>maincpu.mw@035E6 = 35E8</action> <!-- bullet -->
            <action>maincpu.mb@03C0A = 18  </action> <!-- balloon with spine -->
            <action>maincpu.mb@05B27 = 18  </action> <!-- bubble -->
            <action>maincpu.mb@06C39 = 18  </action> <!-- sheep -->
            <action>maincpu.mb@1C037 = 00  </action> <!-- rock from bat ($8037) -->
            <action>maincpu.mb@1C522 = 18  </action> <!-- urchin [moved] ($8522) -->
            <action>maincpu.mb@1C5E0 = 18  </action> <!-- urchin [fixed] ($85e0) -->
            <action>maincpu.mb@1C6CA = 18  </action> <!-- urchin tentacle ($86ca) -->
            <action>maincpu.mb@1CE21 = 00  </action> <!-- sea anemone ($8e21) -->
            <action>    sub.mb@0032C = 18  </action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@03034 = 30  </action>
            <action>maincpu.mw@035E6 = 3605</action>
            <action>maincpu.mb@03C0A = 30  </action>
            <action>maincpu.mb@05B27 = 30  </action>
            <action>maincpu.mb@06C39 = 30  </action>
            <action>maincpu.mb@1C037 = E8  </action>
            <action>maincpu.mb@1C522 = 30  </action>
            <action>maincpu.mb@1C5E0 = 30  </action>
            <action>maincpu.mb@1C6CA = 30  </action>
            <action>maincpu.mb@1CE21 = 11  </action>
            <action>    sub.mb@0032C = 30  </action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@46FB = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@46FB = B0</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@4BD7 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4BD7 = 78</action>
        </script>
    </cheat>

    <cheat desc="scuba air timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@28A5 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@28A5 = 17</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@20F6 = 00EF80CD</action> <!-- fall down -->
            <action>maincpu.md@22BC = 00EF80CD</action> <!-- jump -->
        </script>
        <script state="run">
            <action>maincpu.pq@EF80 = 04E647E68C3AE5F5</action>
            <action>maincpu.pq@EF88 = 0B20B7E7BD3A0D20</action>
            <action>maincpu.pq@EF90 = 9721B8C360E1E1E1</action>
            <action>maincpu.pq@EF98 = 234BEDF1E1E7BD32</action>
            <action>maincpu.pq@EFA0 = 000000000000C9EF</action>
            <!--
            EF80 | F5          : push af
            EF81 | E5          : push hl
            EF82 | 3A 8C E6    : ld   a,($E68C)  // check jump button
            EF85 | 47          : ld   b,a
            EF86 | E6 04       : and  $04
            EF88 | 20 0D       : jr   nz,$EF97
            EF8A | 3A BD E7    : ld   a,($E7BD)  // check jump flag
            EF8D | B7          : or   a
            EF8E | 20 0B       : jr   nz,$EF9B
            EF90 | E1          : pop  hl         // jump again
            EF91 | E1          : pop  hl
            EF92 | E1          : pop  hl
            EF93 | 60          : ld   h,b
            EF94 | C3 B8 21    : jp   $21B8
            EF97 | 97          : sub  a
            EF98 | 32 BD E7    : ld   ($E7BD),a  // clear jump flag
            EF9B | E1          : pop  hl
            EF9C | F1          : pop  af
            EF9D | ED 4B 23 EF : ld   bc,($EF23)
            EFA1 | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@20F6 = EF234BED        </action>
            <action>maincpu.md@22BC = EF234BED        </action>
            <action>maincpu.pq@EF80 = 0000000000000000</action>
            <action>maincpu.pq@EF88 = 0000000000000000</action>
            <action>maincpu.pq@EF90 = 0000000000000000</action>
            <action>maincpu.pq@EF98 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="hidden warp gate finder">
        <comment>set before start the game</comment>
        <script state="on">
            <action>maincpu.md@40F8 = FEFFCBDD</action>
        </script>
        <script state="off">
            <action>maincpu.md@40F8 = 050336DD</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@1356A = B8E68C3AE00021FB</action>
            <action>maincpu.mq@13572 = 350120DFFEF92847</action>
            <action>maincpu.mq@1357A = 20BFFE340120EFFE</action>
            <action>maincpu.mq@13582 = 207FFE0618F03E04</action>
            <action>maincpu.mq@1358A = F7FE787786103E05</action>
            <action>maincpu.mq@13592 = 20FBFE05187E0320</action>
            <action>maincpu.mq@1359A = FFCD18EF1032AF04</action>
            <!--
            B6D7 | FB       : ei             // enable interrupt
            B6D8 | 21 00 E0 : ld   hl,$E000  // sound code address
            B6DB | 3A 8C E6 : ld   a,($E68C) // read input
            B6DE | B8       : cp   b
            B6DF | 47       : ld   b,a
            B6E0 | 28 F9    : jr   z,$B6DB
            B6E2 | FE DF    : cp   $DF
            B6E4 | 20 01    : jr   nz,$B6E7
            B6E6 | 35       : dec  (hl)      // decrease code -01
            B6E7 | FE EF    : cp   $EF
            B6E9 | 20 01    : jr   nz,$B6EC
            B6EB | 34       : inc  (hl)      // increase code +01
            B6EC | FE BF    : cp   $BF
            B6EE | 20 04    : jr   nz,$B6F4
            B6F0 | 3E F0    : ld   a,$F0     // decrease code -10
            B6F2 | 18 06    : jr   $B6FA
            B6F4 | FE 7F    : cp   $7F
            B6F6 | 20 05    : jr   nz,$B6FD
            B6F8 | 3E 10    : ld   a,$10     // increase code +10
            B6FA | 86       : add  a,(hl)
            B6FB | 77       : ld   (hl),a
            B6FC | 78       : ld   a,b
            B6FD | FE F7    : cp   $F7
            B6FF | 20 03    : jr   nz,$B704
            B701 | 7E       : ld   a,(hl)    // play sound
            B702 | 18 05    : jr   $B709
            B704 | FE FB    : cp   $FB
            B706 | 20 04    : jr   nz,$B70C
            B708 | AF       : xor  a         // stop sound
            B709 | 32 10 EF : ld   ($EF10),a // send sound code
            B70C | 18 CD    : jr   $B6DB
            -->
            <action>sub.mb@0801 = 00</action> <!-- enable sound -->
        </script>
        <script state="run">
            <output format="----- the newzealand story sound test mode -----" line="10" align="center" />
            <output format="left : decrease code -01"                         line="11" align="center" />
            <output format="right : increase code +01"                        line="12" align="center" />
            <output format="down : decrease code -10"                         line="13" align="center" />
            <output format="up : increase code +10"                           line="14" align="center" />
            <output format="button 1 : play sound"                            line="15" align="center" />
            <output format="button 2 : stop sound"                            line="16" align="center" />
            <output format="----------------------------"                     line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"                line="19" align="center"  >
                <argument>maincpu.pb@E000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@1356A = 3EF3C057CBEF0E3A</action>
            <action>maincpu.mq@13572 = DA32203EEF183201</action>
            <action>maincpu.mq@1357A = 3ED20021F30132E5</action>
            <action>maincpu.mq@13582 = 0021B888CDE00600</action>
            <action>maincpu.mq@1358A = B888CDE0065C3EC0</action>
            <action>maincpu.mq@13592 = CDE006003ED00021</action>
            <action>maincpu.mq@1359A = 26100001001EB888</action>
            <action>    sub.mb@00801 = C8              </action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@0287 = 0289</action> <!-- ram -->
            <action>maincpu.mb@0C98 = C9  </action> <!-- rom -->
            <action>    sub.mb@0666 = C9  </action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.mw@0287 = 0CCF</action>
            <action>maincpu.mb@0C98 = 00  </action>
            <action>    sub.mb@0666 = 00  </action>
        </script>
    </cheat>

</mamecheat>
tnzsop.xml

Code: Select all

<!-- The NewZealand Story (World, prototype) (P0-041-1 PCB) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@03593 = 18</action> <!-- trap -->
            <action>maincpu.mb@03A9D = 9F</action> <!-- bullet -->
            <action>maincpu.mb@040AA = 18</action> <!-- balloon with spine -->
            <action>maincpu.mb@05E5F = 18</action> <!-- bubble -->
            <action>maincpu.mb@07C46 = 00</action> <!-- rock from bat -->
            <action>maincpu.mb@1C12C = 18</action> <!-- urchin [moved] ($812c) -->
            <action>maincpu.mb@1C208 = 18</action> <!-- urchin [fixed] ($8208) -->
            <action>maincpu.mb@1C2F2 = 18</action> <!-- urchin tentacle ($82f2) -->
            <action>maincpu.mb@1CA4E = 00</action> <!-- sea anemone ($8a4e) -->
            <action>    sub.mb@00455 = 18</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@03593 = 30</action>
            <action>maincpu.mb@03A9D = BC</action>
            <action>maincpu.mb@040AA = 30</action>
            <action>maincpu.mb@05E5F = 30</action>
            <action>maincpu.mb@07C46 = E8</action>
            <action>maincpu.mb@1C12C = 30</action>
            <action>maincpu.mb@1C208 = 30</action>
            <action>maincpu.mb@1C2F2 = 30</action>
            <action>maincpu.mb@1CA4E = 11</action>
            <action>    sub.mb@00455 = 30</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@4995 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4995 = B0</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@4DFA = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4DFA = 78</action>
        </script>
    </cheat>

    <cheat desc="scuba air timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@2EBB = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@2EBB = 17</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@21CA = 00EF80CD</action> <!-- fall down -->
            <action>maincpu.md@237F = 00EF80CD</action> <!-- jump -->
        </script>
        <script state="run">
            <action>maincpu.pq@EF80 = 04E647E7133AE5F5</action>
            <action>maincpu.pq@EF88 = 0B20B7E7103A0D20</action>
            <action>maincpu.pq@EF90 = 972284C360E1E1E1</action>
            <action>maincpu.pq@EF98 = 234BEDF1E1E71032</action>
            <action>maincpu.pq@EFA0 = 000000000000C9EF</action>
            <!--
            EF80 | F5          : push af
            EF81 | E5          : push hl
            EF82 | 3A 8C E6    : ld   a,($E713)  // check jump button
            EF85 | 47          : ld   b,a
            EF86 | E6 04       : and  $04
            EF88 | 20 0D       : jr   nz,$EF97
            EF8A | 3A BD E7    : ld   a,($E710)  // check jump flag
            EF8D | B7          : or   a
            EF8E | 20 0B       : jr   nz,$EF9B
            EF90 | E1          : pop  hl         // jump again
            EF91 | E1          : pop  hl
            EF92 | E1          : pop  hl
            EF93 | 60          : ld   h,b
            EF94 | C3 84 22    : jp   $2284
            EF97 | 97          : sub  a
            EF98 | 32 BD E7    : ld   ($E710),a  // clear jump flag
            EF9B | E1          : pop  hl
            EF9C | F1          : pop  af
            EF9D | ED 4B 23 EF : ld   bc,($EF23)
            EFA1 | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@21CA = EF234BED        </action>
            <action>maincpu.md@237F = EF234BED        </action>
            <action>maincpu.pq@EF80 = 0000000000000000</action>
            <action>maincpu.pq@EF88 = 0000000000000000</action>
            <action>maincpu.pq@EF90 = 0000000000000000</action>
            <action>maincpu.pq@EF98 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="hidden warp gate finder">
        <comment>set before start the game</comment>
        <script state="on">
            <action>maincpu.md@1D8E3 = FEFFCBDD</action> <!-- ($98e3) -->
        </script>
        <script state="off">
            <action>maincpu.md@1D8E3 = 050336DD</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@14AE0 = B8E7133AE00021FB</action>
            <action>maincpu.mq@14AE8 = 350120DFFEF92847</action>
            <action>maincpu.mq@14AF0 = 20BFFE340120EFFE</action>
            <action>maincpu.mq@14AF8 = 207FFE0618F03E04</action>
            <action>maincpu.mq@14B00 = F7FE787786103E05</action>
            <action>maincpu.mq@14B08 = 20FBFE05187E0320</action>
            <action>maincpu.mq@14B10 = FFCD18EF1032AF04</action>
            <!--
            8AE0 | FB       : ei             // enable interrupt
            8AE1 | 21 00 E0 : ld   hl,$E000  // sound code address
            8AE4 | 3A 13 E7 : ld   a,($E713) // read input
            8AE7 | B8       : cp   b
            8AE8 | 47       : ld   b,a
            8AE9 | 28 F9    : jr   z,$8AE4
            8AEB | FE DF    : cp   $DF
            8AED | 20 01    : jr   nz,$8AF0
            8AEF | 35       : dec  (hl)      // decrease code -01
            8AF0 | FE EF    : cp   $EF
            8AF2 | 20 01    : jr   nz,$8AF5
            8AF4 | 34       : inc  (hl)      // increase code +01
            8AF5 | FE BF    : cp   $BF
            8AF7 | 20 04    : jr   nz,$8AFD
            8AF9 | 3E F0    : ld   a,$F0     // decrease code -10
            8AFB | 18 06    : jr   $8B03
            8AFD | FE 7F    : cp   $7F
            8AFF | 20 05    : jr   nz,$8B06
            8B01 | 3E 10    : ld   a,$10     // increase code +10
            8B03 | 86       : add  a,(hl)
            8B04 | 77       : ld   (hl),a
            8B05 | 78       : ld   a,b
            8B06 | FE F7    : cp   $F7
            8B08 | 20 03    : jr   nz,$8B0D
            8B0A | 7E       : ld   a,(hl)    // play sound
            8B0B | 18 05    : jr   $8B12
            8B0D | FE FB    : cp   $FB
            8B0F | 20 04    : jr   nz,$8B15
            8B11 | AF       : xor  a         // stop sound
            8B12 | 32 10 EF : ld   ($EF10),a // send sound code
            8B15 | 18 CD    : jr   $8AE4
            -->
            <action>sub.mb@08ED = 00</action> <!-- enable sound -->
        </script>
        <script state="run">
            <output format="----- the newzealand story sound test mode -----" line="10" align="center" />
            <output format="left : decrease code -01"                         line="11" align="center" />
            <output format="right : increase code +01"                        line="12" align="center" />
            <output format="down : decrease code -10"                         line="13" align="center" />
            <output format="up : increase code +10"                           line="14" align="center" />
            <output format="button 1 : play sound"                            line="15" align="center" />
            <output format="button 2 : stop sound"                            line="16" align="center" />
            <output format="----------------------------"                     line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"                line="19" align="center"  >
                <argument>maincpu.pb@E000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@14AE0 = 3EF3C057CBEF0E3A</action>
            <action>maincpu.mq@14AE8 = DA32203EEF183201</action>
            <action>maincpu.mq@14AF0 = 3ED20021F30132E5</action>
            <action>maincpu.mq@14AF8 = 00218DF7CDE00600</action>
            <action>maincpu.mq@14B00 = 8DF7CDE0065C3EC0</action>
            <action>maincpu.mq@14B08 = CDE006003ED00021</action>
            <action>maincpu.mq@14B10 = 26100001001E8DF7</action>
            <action>    sub.mb@008ED = C8              </action>
        </script>
    </cheat>

    <cheat desc="skip ram check">
        <script state="on">
            <action>maincpu.mw@0232 = 0234</action>
        </script>
        <script state="off">
            <action>maincpu.mw@0232 = 0AF3</action>
        </script>
    </cheat>

</mamecheat>
  • "multiple jump" : I put custom routine into RAM area which is perhap unused because of no space in ROM. But if other routines access this area, some bugs will happen.
  • "hidden warp gate finder" : Set before start the game. Especially, tnzs and tnzsj have warp gate at start point in Round 1-1.
  • "skip ram/rom check" : tnzsop doesn't have boot ROM check (RAM check only). So "sound test mode" for tnzsop doesn't require this code.
Post Reply