Page 1 of 1

[zerowing1] Zero Wing

Posted: Sat Apr 30, 2022 11:53 am
by jman

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <!-- background -->
        <action>maincpu.mw@329a = 0002</action>
        <!-- objects -->
        <action>maincpu.mq@b8ba = 382800143a04d868</action>
        <action>maincpu.mq@b8c2 = 00189a68001a3c28</action>
        <action>maincpu.mq@b8ca = 00163e06dc68001c</action>
        <action>maincpu.mq@b8d2 = 9e68001e43f90008</action>
        <!--
        b8ba | 3828 0014 : move.w ($14,A0),D4
        b8be | 3a04      : move.w D4,D5
        b8c0 | d868 0018 : add.w  ($18,A0),D4
        b8c4 | 9a68 001a : sub.w  ($1a,A0),D5
        b8c8 | 3c28 0016 : move.w ($16,A0),D6
        b8cc | 3e06      : move.w D6,D7
        b8ce | dc68 001c : add.w  ($1c,A0),D6
        b8d2 | 9e68 001e : sub.w  ($1e,A0),D7
        -->
    </script>
    <script state="off">
        <action>maincpu.mw@329a =             ff8e</action>
        <action>maincpu.mq@b8ba = 610000d208100006</action>
        <action>maincpu.mq@b8c2 = 662243f900080b70</action>
        <action>maincpu.mq@b8ca = 7013610000e40810</action>
        <action>maincpu.mq@b8d2 = 0006661043f90008</action>
    </script>
</cheat>

<cheat desc="no hit - bomb">
    <script state="on">
        <action>maincpu.mw@4dc4 = 4e71</action> <!-- background -->
        <action>maincpu.mb@b953 =   00</action> <!-- objects -->
    </script>
    <script state="off">
        <action>maincpu.mw@4dc4 = 660c</action>
        <action>maincpu.mb@b953 =   02</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@3336 = 60</action>
    </script>
    <script state="off">
        <action>maincpu.mb@3336 = 67</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x0080">01 (slow)</item>
        <item value="0x0100">02       </item>
        <item value="0x0180">03       </item>
        <item value="0x0200">04       </item>
        <item value="0x0280">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mq@5216 = 4eb90000ce404e71</action>
        <action>maincpu.mq@ce40 = bdfc00080000661c</action>
        <action>maincpu.mq@ce48 = 303c00004a426706</action>
        <action>maincpu.mq@ce50 = 6a0244403400303c</action>
        <action>maincpu.mq@ce58 = 00004a4367066a02</action>
        <action>maincpu.mq@ce60 = 44403600d56e0016</action>
        <action>maincpu.mq@ce68 = d76e00144e75ffff</action>
        <!--
        ce40 | bdfc 0008 0000 : cmpa.l #$80000,A6
        ce46 | 661c           : bne    $ce64
        ce48 | 303c xxxx      : move.w #$xx,D0
        ce4c | 4a42           : tst.w  D2
        ce4e | 6706           : beq    $ce56
        ce50 | 6a02           : bpl    $ce54
        ce52 | 4440           : neg.w  D0
        ce54 | 3400           : move.w D0,D2
        ce56 | 303c xxxx      : move.w #$xx,D0
        ce5a | 4a43           : tst.w  D3
        ce5c | 6706           : beq    $ce64
        ce5e | 6a02           : bpl    $ce62
        ce60 | 4440           : neg.w  D0
        ce62 | 3600           : move.w D0,D3
        ce64 | d56e 0016      : add.w  D2,($16,A6)
        ce68 | d76e 0014      : add.w  D3,($14,A6)
        ce6c | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.mw@ce4a = param</action>
        <action>maincpu.mw@ce58 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mq@5216 = d56e0016d76e0014</action>
        <action>maincpu.mq@ce40 = ffffffffffffffff</action>
        <action>maincpu.mq@ce48 = ffffffffffffffff</action>
        <action>maincpu.mq@ce50 = ffffffffffffffff</action>
        <action>maincpu.mq@ce58 = ffffffffffffffff</action>
        <action>maincpu.mq@ce60 = ffffffffffffffff</action>
        <action>maincpu.mq@ce68 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>set rom check skip then reset the game (F3)</comment>
    <script state="on">
        <action>maincpu.mq@0518 = 4ef90000ce700240</action>
        <action>maincpu.mq@ce70 = 41f90008010043f9</action>
        <action>maincpu.mq@ce78 = 0044000112001029</action>
        <action>maincpu.mq@ce80 = 000eb20067f60c00</action>
        <action>maincpu.mq@ce88 = 0004660253100c00</action>
        <action>maincpu.mq@ce90 = 0008660252100c00</action>
        <action>maincpu.mq@ce98 = 0002660404100010</action>
        <action>maincpu.mq@cea0 = 0c00000166040610</action>
        <action>maincpu.mq@cea8 = 00100c0000106602</action>
        <action>maincpu.mq@ceb0 = 12900c0000206604</action>
        <action>maincpu.mq@ceb8 = 12bc00fe60beffff</action>
        <!--
        ce70 | 41f9 0008 0100 : lea    $80100.l,A0  // sound code address
        ce76 | 43f9 0044 0001 : lea    $440001.l,A1 // sound latch address
        ce7c | 1200           : move.b D0,D1
        ce7e | 1029 000e      : move.b ($e,A1),D0   // read input
        ce82 | b200           : cmp.b  D0,D1
        ce84 | 67f6           : beq    $ce7c
        ce86 | 0c00 0004      : cmpi.b #$4,D0
        ce8a | 6602           : bne    $ce8e
        ce8c | 5310           : subq.b #1,(A0)      // decrease code -01
        ce8e | 0c00 0008      : cmpi.b #$8,D0
        ce92 | 6602           : bne    $ce96
        ce94 | 5210           : addq.b #1,(A0)      // increase code +01
        ce96 | 0c00 0002      : cmpi.b #$2,D0
        ce9a | 6604           : bne    $cea0
        ce9c | 0410 0010      : subi.b #$10,(A0)    // decrease code -10
        cea0 | 0c00 0001      : cmpi.b #$1,D0
        cea4 | 6604           : bne    $ceaa
        cea6 | 0610 0010      : addi.b #$10,(A0)    // increase code +10
        ceaa | 0c00 0010      : cmpi.b #$10,D0
        ceae | 6602           : bne    $ceb2
        ceb0 | 1290           : move.b (A0),(A1)    // play sound
        ceb2 | 0c00 0020      : cmpi.b #$20,D0
        ceb6 | 6604           : bne    $cebc
        ceb8 | 12bc 00fe      : move.b #$fe,(A1)    // stop sound
        cebc | 60be           : bra    $ce7c
        -->
    </script>
    <script state="run">
        <output format="----- zero wing 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="up : increase code +10"                line="13" align="center" />
        <output format="down : decrease 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 %2.2X &gt;&gt;"    line="19" align="center">
            <argument>maincpu.pb@80100</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mq@0518 = 30390008180e0240</action>
        <action>maincpu.mq@ce70 = ffffffffffffffff</action>
        <action>maincpu.mq@ce78 = ffffffffffffffff</action>
        <action>maincpu.mq@ce80 = ffffffffffffffff</action>
        <action>maincpu.mq@ce88 = ffffffffffffffff</action>
        <action>maincpu.mq@ce90 = ffffffffffffffff</action>
        <action>maincpu.mq@ce98 = ffffffffffffffff</action>
        <action>maincpu.mq@cea0 = ffffffffffffffff</action>
        <action>maincpu.mq@cea8 = ffffffffffffffff</action>
        <action>maincpu.mq@ceb0 = ffffffffffffffff</action>
        <action>maincpu.mq@ceb8 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="skip rom check">
    <script state="on">
        <action>maincpu.mb@04d9 = e4</action>
    </script>
    <script state="off">
        <action>maincpu.mb@04d9 = e6</action>
    </script>
</cheat>
Sometimes "special weapon item" appears in playing with bomb.
ImageImage
I fail to search the code for special weapon though.

[zerowing]+ Zero Wing

Posted: Sun Nov 19, 2023 1:31 pm
by jman
zerowing.xml

Code: Select all

<!-- Zero Wing (2P set) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@381E = 60</action> <!-- background -->
            <action>maincpu.mb@C1D6 = 60</action> <!-- P1 objects -->
            <action>maincpu.mb@C2D0 = 60</action> <!-- P2 objects -->
        </script>
        <script state="off">
            <action>maincpu.mb@381E = 66</action>
            <action>maincpu.mb@C1D6 = 66</action>
            <action>maincpu.mb@C2D0 = 66</action>
        </script>
    </cheat>

    <cheat desc="no hit - bomb">
        <script state="on">
            <!-- background -->
            <action>maincpu.mw@54AC = 601E</action> <!-- background -->
            <action>maincpu.mw@C27C = 0000</action> <!-- P1 objects -->
            <action>maincpu.mw@C376 = 0000</action> <!-- P2 objects -->
        </script>
        <script state="off">
            <action>maincpu.mw@54AC = 671E</action>
            <action>maincpu.mw@C27C = 0002</action>
            <action>maincpu.mw@C376 = 0002</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@38BF = 2C</action>
        </script>
        <script state="off">
            <action>maincpu.mb@38BF = 08</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0080">01 (slow)</item>
            <item value="0x0100">02       </item>
            <item value="0x0200">03       </item>
            <item value="0x0300">04       </item>
            <item value="0x0400">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@5952 = 4EB90000D7D04E71</action>
            <action>maincpu.mq@D7D0 = BDFC000800306E1C</action>
            <action>maincpu.mq@D7D8 = 303C00004A426706</action>
            <action>maincpu.mq@D7E0 = 6A0244403400303C</action>
            <action>maincpu.mq@D7E8 = 00004A4367066A02</action>
            <action>maincpu.mq@D7F0 = 44403600D56E0016</action>
            <action>maincpu.mq@D7F8 = D76E00144E75FFFF</action>
            <!--
            D7D0 | BDFC 0008 0030 : cmpa.l  #$80030, A6
            D7D6 | 6E1C           : bgt     $d7f4
            D7D8 | 303C xxxx      : move.w  #$xx, D0
            D7DC | 4A42           : tst.w   D2
            D7DE | 6706           : beq     $d7e6
            D7E0 | 6A02           : bpl     $d7e4
            D7E2 | 4440           : neg.w   D0
            D7E4 | 3400           : move.w  D0, D2
            D7E6 | 303C xxxx      : move.w  #$xx, D0
            D7EA | 4A43           : tst.w   D3
            D7EC | 6706           : beq     $d7f4
            D7EE | 6A02           : bpl     $d7f2
            D7F0 | 4440           : neg.w   D0
            D7F2 | 3600           : move.w  D0, D3
            D7F4 | D56E 0016      : add.w   D2, ($16,A6)
            D7F8 | D76E 0014      : add.w   D3, ($14,A6)
            D7FC | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@D7DA = param</action>
            <action>maincpu.mw@D7E8 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@5952 = D56E0016D76E0014</action>
            <action>maincpu.mq@D7D0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D7D8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D7E0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D7E8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D7F0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D7F8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="disable red screen flashing">
        <script state="on">
            <action>maincpu.mb@0172 = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@0172 = 67</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@062E = 4EF90000D8006000</action>
            <action>maincpu.mq@D800 = 41F90008000043F9</action>
            <action>maincpu.mq@D808 = 0044000112001029</action>
            <action>maincpu.mq@D810 = 000EB20067F60C00</action>
            <action>maincpu.mq@D818 = 0004660253100C00</action>
            <action>maincpu.mq@D820 = 0008660252100C00</action>
            <action>maincpu.mq@D828 = 0002660404100010</action>
            <action>maincpu.mq@D830 = 0C00000166040610</action>
            <action>maincpu.mq@D838 = 00100C0000106602</action>
            <action>maincpu.mq@D840 = 12900C0000206604</action>
            <action>maincpu.mq@D848 = 12BC00FE60BEFFFF</action>
            <!--
            D800 | 41F9 0008 0000 : lea     $80000.l, A0  // sound code address
            D806 | 43F9 0044 0001 : lea     $440001.l, A1 // sound latch address
            D80C | 1200           : move.b  D0, D1
            D80E | 1029 000E      : move.b  ($e,A1), D0   // read input ($44000f)
            D812 | B200           : cmp.b   D0, D1
            D814 | 67F6           : beq     $c80c
            D816 | 0C00 0004      : cmpi.b  #$4, D0
            D81A | 6602           : bne     $c81e
            D81C | 5310           : subq.b  #1, (A0)      // decrease code -01
            D81E | 0C00 0008      : cmpi.b  #$8, D0
            D822 | 6602           : bne     $c826
            D824 | 5210           : addq.b  #1, (A0)      // increase code +01
            D826 | 0C00 0002      : cmpi.b  #$2, D0
            D82A | 6604           : bne     $c830
            D82C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            D830 | 0C00 0001      : cmpi.b  #$1, D0
            D834 | 6604           : bne     $c83a
            D836 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            D83A | 0C00 0010      : cmpi.b  #$10, D0
            D83E | 6602           : bne     $c842
            D840 | 1290           : move.b  (A0), (A1)    // play sound
            D842 | 0C00 0020      : cmpi.b  #$20, D0
            D846 | 6604           : bne     $c84c
            D848 | 12BC 00FE      : move.b  #$fe, (A1)    // stop sound
            D84C | 60BE           : bra     $c80c
            -->
        </script>
        <script state="run">
            <output format="----- zero wing 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 %2.2X &gt;&gt;"    line="19" align="center"  >
                <argument>maincpu.pb@80000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@062E = 7010610053CC6000</action>
            <action>maincpu.mq@D800 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D808 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D810 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D818 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D820 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D828 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D830 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D838 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D840 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D848 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@0566 = 01E6</action>
        </script>
        <script state="off">
            <action>maincpu.mw@0566 = 01E8</action>
        </script>
    </cheat>

</mamecheat>
zerowing1.xml

Code: Select all

<!-- Zero Wing (1P set) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mw@329A = 0002</action> <!-- background -->
            <action>maincpu.mw@B8BA = 601A</action> <!-- objects : skip enemy/bullet check -->
            <action>maincpu.mw@B8E0 = 00B6</action> <!-- objects : enable item check -->
        </script>
        <script state="off">
            <action>maincpu.mw@329A = FF8E</action>
            <action>maincpu.mw@B8BA = 6100</action>
            <action>maincpu.mw@B8E0 = 00D2</action>
        </script>
    </cheat>

    <cheat desc="no hit - bomb">
        <script state="on">
            <action>maincpu.mw@4DC4 = 4E71</action> <!-- background -->
            <action>maincpu.mw@B952 = 0000</action> <!-- objects -->
        </script>
        <script state="off">
            <action>maincpu.mw@4DC4 = 660C</action>
            <action>maincpu.mw@B952 = 0002</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@331D = 38</action>
        </script>
        <script state="off">
            <action>maincpu.mb@331D = 0A</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0080">01 (slow)</item>
            <item value="0x0100">02       </item>
            <item value="0x0200">03       </item>
            <item value="0x0300">04       </item>
            <item value="0x0400">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@5216 = 4EB90000CE404E71</action>
            <action>maincpu.mq@CE40 = BDFC00080000661C</action>
            <action>maincpu.mq@CE48 = 303C00004A426706</action>
            <action>maincpu.mq@CE50 = 6A0244403400303C</action>
            <action>maincpu.mq@CE58 = 00004A4367066A02</action>
            <action>maincpu.mq@CE60 = 44403600D56E0016</action>
            <action>maincpu.mq@CE68 = D76E00144E75FFFF</action>
            <!--
            CE40 | BDFC 0008 0000 : cmpa.l  #$80000, A6
            CE46 | 661C           : bne     $ce64
            CE48 | 303C xxxx      : move.w  #$xx, D0
            CE4C | 4A42           : tst.w   D2
            CE4E | 6706           : beq     $ce56
            CE50 | 6A02           : bpl     $ce54
            CE52 | 4440           : neg.w   D0
            CE54 | 3400           : move.w  D0, D2
            CE56 | 303C xxxx      : move.w  #$xx, D0
            CE5A | 4A43           : tst.w   D3
            CE5C | 6706           : beq     $ce64
            CE5E | 6A02           : bpl     $ce62
            CE60 | 4440           : neg.w   D0
            CE62 | 3600           : move.w  D0, D3
            CE64 | D56E 0016      : add.w   D2, ($16,A6)
            CE68 | D76E 0014      : add.w   D3, ($14,A6)
            CE6C | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@CE4A = param</action>
            <action>maincpu.mw@CE58 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@5216 = D56E0016D76E0014</action>
            <action>maincpu.mq@CE40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE60 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE68 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="disable red screen flashing">
        <script state="on">
            <action>maincpu.mb@0172 = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@0172 = 67</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set rom check skip then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@0518 = 4EF90000CE700240</action>
            <action>maincpu.mq@CE70 = 41F90008010043F9</action>
            <action>maincpu.mq@CE78 = 0044000112001029</action>
            <action>maincpu.mq@CE80 = 000EB20067F60C00</action>
            <action>maincpu.mq@CE88 = 0004660253100C00</action>
            <action>maincpu.mq@CE90 = 0008660252100C00</action>
            <action>maincpu.mq@CE98 = 0002660404100010</action>
            <action>maincpu.mq@CEA0 = 0C00000166040610</action>
            <action>maincpu.mq@CEA8 = 00100C0000106602</action>
            <action>maincpu.mq@CEB0 = 12900C0000206604</action>
            <action>maincpu.mq@CEB8 = 12BC00FE60BEFFFF</action>
            <!--
            CE70 | 41F9 0008 0100 : lea     $80100.l, A0  // sound code address
            CE76 | 43F9 0044 0001 : lea     $440001.l, A1 // sound latch address
            CE7C | 1200           : move.b  D0, D1
            CE7E | 1029 000E      : move.b  ($e,A1), D0   // read input ($44000f)
            CE82 | B200           : cmp.b   D0, D1
            CE84 | 67F6           : beq     $ce7c
            CE86 | 0C00 0004      : cmpi.b  #$4, D0
            CE8A | 6602           : bne     $ce8e
            CE8C | 5310           : subq.b  #1, (A0)      // decrease code -01
            CE8E | 0C00 0008      : cmpi.b  #$8, D0
            CE92 | 6602           : bne     $ce96
            CE94 | 5210           : addq.b  #1, (A0)      // increase code +01
            CE96 | 0C00 0002      : cmpi.b  #$2, D0
            CE9A | 6604           : bne     $cea0
            CE9C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            CEA0 | 0C00 0001      : cmpi.b  #$1, D0
            CEA4 | 6604           : bne     $ceaa
            CEA6 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            CEAA | 0C00 0010      : cmpi.b  #$10, D0
            CEAE | 6602           : bne     $ceb2
            CEB0 | 1290           : move.b  (A0), (A1)    // play sound
            CEB2 | 0C00 0020      : cmpi.b  #$20, D0
            CEB6 | 6604           : bne     $cebc
            CEB8 | 12BC 00FE      : move.b  #$fe, (A1)    // stop sound
            CEBC | 60BE           : bra     $ce7c
            -->
        </script>
        <script state="run">
            <output format="----- zero wing 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 %2.2X &gt;&gt;"    line="19" align="center"  >
                <argument>maincpu.pb@80100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@0518 = 30390008180E0240</action>
            <action>maincpu.mq@CE70 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE78 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE80 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE88 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE90 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CE98 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CEA0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CEA8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CEB0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@CEB8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@04D8 = 01E4</action>
        </script>
        <script state="off">
            <action>maincpu.mw@04D8 = 01E6</action>
        </script>
    </cheat>

</mamecheat>
zerowingw.xml

Code: Select all

<!-- Zero Wing (2P set, Williams license) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@382C = 60</action> <!-- background -->
            <action>maincpu.mb@C1CA = 60</action> <!-- P1 objects -->
            <action>maincpu.mb@C2C4 = 60</action> <!-- P2 objects -->
        </script>
        <script state="off">
            <action>maincpu.mb@382C = 66</action>
            <action>maincpu.mb@C1CA = 66</action>
            <action>maincpu.mb@C2C4 = 66</action>
        </script>
    </cheat>

    <cheat desc="no hit - bomb">
        <script state="on">
            <!-- background -->
            <action>maincpu.mw@54BA = 601E</action> <!-- background -->
            <action>maincpu.mw@C270 = 0000</action> <!-- P1 objects -->
            <action>maincpu.mw@C36A = 0000</action> <!-- P2 objects -->
        </script>
        <script state="off">
            <action>maincpu.mw@54BA = 671E</action>
            <action>maincpu.mw@C270 = 0002</action>
            <action>maincpu.mw@C36A = 0002</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@38CD = 2C</action>
        </script>
        <script state="off">
            <action>maincpu.mb@38CD = 08</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0080">01 (slow)</item>
            <item value="0x0100">02       </item>
            <item value="0x0200">03       </item>
            <item value="0x0300">04       </item>
            <item value="0x0400">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@5960 = 4EB90000D8C04E71</action>
            <action>maincpu.mq@D8C0 = BDFC000800306E1C</action>
            <action>maincpu.mq@D8C8 = 303C00004A426706</action>
            <action>maincpu.mq@D8D0 = 6A0244403400303C</action>
            <action>maincpu.mq@D8D8 = 00004A4367066A02</action>
            <action>maincpu.mq@D8E0 = 44403600D56E0016</action>
            <action>maincpu.mq@D8E8 = D76E00144E75FFFF</action>
            <!--
            D8C0 | BDFC 0008 0030 : cmpa.l  #$80030, A6
            D8C6 | 6E1C           : bgt     $d8e4
            D8C8 | 303C xxxx      : move.w  #$xx, D0
            D8CC | 4A42           : tst.w   D2
            D8CE | 6706           : beq     $d8d6
            D8D0 | 6A02           : bpl     $d8d4
            D8D2 | 4440           : neg.w   D0
            D8D4 | 3400           : move.w  D0, D2
            D8D6 | 303C xxxx      : move.w  #$xx, D0
            D8DA | 4A43           : tst.w   D3
            D8DC | 6706           : beq     $d8e4
            D8DE | 6A02           : bpl     $d8e2
            D8E0 | 4440           : neg.w   D0
            D8E2 | 3600           : move.w  D0, D3
            D8E4 | D56E 0016      : add.w   D2, ($16,A6)
            D8E8 | D76E 0014      : add.w   D3, ($14,A6)
            D8EC | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@D8CA = param</action>
            <action>maincpu.mw@D8D8 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@5960 = D56E0016D76E0014</action>
            <action>maincpu.mq@D8C0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D8C8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D8D0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D8D8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D8E0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D8E8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="disable red screen flashing">
        <script state="on">
            <action>maincpu.mb@0172 = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@0172 = 67</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@062E = 4EF90000D8F06000</action>
            <action>maincpu.mq@D8F0 = 41F90008000043F9</action>
            <action>maincpu.mq@D8F8 = 0044000112001029</action>
            <action>maincpu.mq@D900 = 000EB20067F60C00</action>
            <action>maincpu.mq@D908 = 0004660253100C00</action>
            <action>maincpu.mq@D910 = 0008660252100C00</action>
            <action>maincpu.mq@D918 = 0002660404100010</action>
            <action>maincpu.mq@D920 = 0C00000166040610</action>
            <action>maincpu.mq@D928 = 00100C0000106602</action>
            <action>maincpu.mq@D930 = 12900C0000206604</action>
            <action>maincpu.mq@D938 = 12BC00FE60BEFFFF</action>
            <!--
            D8F0 | 41F9 0008 0000 : lea     $80000.l, A0  // sound code address
            D8F6 | 43F9 0044 0001 : lea     $440001.l, A1 // sound latch address
            D8FC | 1200           : move.b  D0, D1
            D8FE | 1029 000E      : move.b  ($e,A1), D0   // read input ($44000f)
            D902 | B200           : cmp.b   D0, D1
            D904 | 67F6           : beq     $d8fc
            D906 | 0C00 0004      : cmpi.b  #$4, D0
            D90A | 6602           : bne     $d90e
            D90C | 5310           : subq.b  #1, (A0)      // decrease code -01
            D90E | 0C00 0008      : cmpi.b  #$8, D0
            D912 | 6602           : bne     $d916
            D914 | 5210           : addq.b  #1, (A0)      // increase code +01
            D916 | 0C00 0002      : cmpi.b  #$2, D0
            D91A | 6604           : bne     $d920
            D91C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            D920 | 0C00 0001      : cmpi.b  #$1, D0
            D924 | 6604           : bne     $d92a
            D926 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            D92A | 0C00 0010      : cmpi.b  #$10, D0
            D92E | 6602           : bne     $d932
            D930 | 1290           : move.b  (A0), (A1)    // play sound
            D932 | 0C00 0020      : cmpi.b  #$20, D0
            D936 | 6604           : bne     $d93c
            D938 | 12BC 00FE      : move.b  #$fe, (A1)    // stop sound
            D93C | 60BE           : bra     $d8fc
            -->
        </script>
        <script state="run">
            <output format="----- zero wing 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 %2.2X &gt;&gt;"    line="19" align="center"  >
                <argument>maincpu.pb@80000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@062E = 7010610053DA6000</action>
            <action>maincpu.mq@D8F0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D8F8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D900 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D908 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D910 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D918 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D920 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D928 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D930 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@D938 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@0566 = 01E6</action>
        </script>
        <script state="off">
            <action>maincpu.mw@0566 = 01E8</action>
        </script>
    </cheat>

</mamecheat>