Page 1 of 1

[sstingry] Super Stingray

Posted: Mon Jan 17, 2022 2:16 pm
by jman

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@39d4 =   60</action> <!-- enemy (x position) -->
        <action>maincpu.mb@3aec =   60</action> <!-- enemy (y position) -->
        <action>maincpu.mw@574c = 4e75</action> <!-- bomb -->
        <action>maincpu.mw@6600 = 4e75</action> <!-- laser -->
        <action>maincpu.mw@67fa = 4e75</action> <!-- bullet -->
        <action>maincpu.mw@6874 = 4e75</action> <!-- missile (small) -->
        <action>maincpu.mw@6904 = 4e75</action> <!-- missile (large) -->
    </script>
    <script state="off">
        <action>maincpu.mb@39d4 =   64</action>
        <action>maincpu.mb@3aec =   64</action>
        <action>maincpu.mw@574c = 552e</action>
        <action>maincpu.mw@6600 = 572e</action>
        <action>maincpu.mw@67fa = 042e</action>
        <action>maincpu.mw@6874 = 7040</action>
        <action>maincpu.mw@6904 = 7040</action>
    </script>
</cheat>

<cheat desc="walk through wall">
    <script state="on">
        <action>maincpu.mb@39ad = ff</action>
    </script>
    <script state="off">
        <action>maincpu.mb@39ad = 00</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@3ed9 = 01</action>
    </script>
    <script state="off">
        <action>maincpu.mb@3ed9 = 30</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter min="0x01" max="0x05" step="0x01" />
    <script state="change">
        <action>maincpu.mb@31c9 =  param</action> <!-- up -->
        <action>maincpu.mb@31cd = -param</action> <!-- down -->
        <action>maincpu.mb@31d9 =  param</action> <!-- right -->
        <action>maincpu.mb@31dd = -param</action> <!-- left -->
    </script>
    <script state="off">
        <action>maincpu.mb@31c9 = 01</action>
        <action>maincpu.mb@31cd = ff</action>
        <action>maincpu.mb@31d9 = 01</action>
        <action>maincpu.mb@31dd = ff</action>
    </script>
</cheat>

<cheat desc="direct turn">
    <script state="on">
        <action>maincpu.mq@33c8 = 4eb90000d9104e71</action>
        <action>maincpu.mq@d910 = 102e000d0240000f</action>
        <action>maincpu.mq@d918 = 103b00081d400104</action>
        <action>maincpu.mq@d920 = 4e75000001ff0203</action>
        <action>maincpu.mq@d928 = 04ff050607ffffff</action>
        <!--
        d910 | 102e 000d : move.b ($d,A6),D0
        d914 | 0240 000f : andi.w #$f,D0
        d918 | 103b 0008 : move.b ($8,PC,D0.w),D0
        d91c | 1d40 0104 : move.b D0,($104,A6)
        d920 | 4e75      : rts
        d922 - d92c      : input/direction conversion table
            input direction
             01     00      : up
             02     01      : down
             04     02      : right
             05     03      : upper-right
             06     04      : lower-right
             08     05      : left
             09     06      : upper-left
             0a     07      : lower-left
        -->
    </script>
    <script state="off">
        <action>maincpu.mq@33c8 = 103b00341d400104</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>
    </script>
</cheat>

<cheat desc="timer speed">
    <parameter>
        <item value="0xff">01 (slow)</item>
        <item value="0x7f">02       </item>
        <item value="0x3f">03       </item>
        <item value="0x0f">04       </item>
        <item value="0x01">05 (fast)</item>
    </parameter>
    <script state="change">
        <action>maincpu.mb@2f75 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mb@2f75 = 0f</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>set ram/rom check skip then reset the game (F3)</comment>
    <script state="on">
        <action>maincpu.mw@1680 =             d930</action>
        <action>maincpu.mq@d930 = 41ee010043f9000e</action>
        <action>maincpu.mq@d938 = 000012001039000c</action>
        <action>maincpu.mq@d940 = 0001b20067f40c00</action>
        <action>maincpu.mq@d948 = 0008660253100c00</action>
        <action>maincpu.mq@d950 = 0004660252100c00</action>
        <action>maincpu.mq@d958 = 0002660404100010</action>
        <action>maincpu.mq@d960 = 0c00000166040610</action>
        <action>maincpu.mq@d968 = 00100c0000106606</action>
        <action>maincpu.mq@d970 = 1290115000010c00</action>
        <action>maincpu.mq@d978 = 0020660a14280001</action>
        <action>maincpu.mq@d980 = 020200f0128260b2</action>
        <!--
        d930 | 41ee 0100      : lea    ($100,A6),A0 // sound code address
        d934 | 43f9 000e 0000 : lea    $e0000.l,A1
        d93a | 1200           : move.b D0,D1
        d93c | 1039 000c 0001 : move.b $c0001.l,D0  // read input
        d942 | b200           : cmp.b  D0,D1
        d944 | 67f4           : beq    $d93a
        d946 | 0c00 0008      : cmpi.b #$8,D0
        d94a | 6602           : bne    $d94e
        d94c | 5310           : subq.b #1,(A0)      // decrease code -01
        d94e | 0c00 0004      : cmpi.b #$4,D0
        d952 | 6602           : bne    $d956
        d954 | 5210           : addq.b #1,(A0)      // increase code +01
        d956 | 0c00 0002      : cmpi.b #$2,D0
        d95a | 6604           : bne    $d960
        d95c | 0410 0010      : subi.b #$10,(A0)    // decrease code -10
        d960 | 0c00 0001      : cmpi.b #$1,D0
        d964 | 6604           : bne    $d96a
        d966 | 0610 0010      : addi.b #$10,(A0)    // increase code +10
        d96a | 0c00 0010      : cmpi.b #$10,D0
        d96e | 6606           : bne    $d976
        d970 | 1290           : move.b (A0),(A1)    // play sound
        d972 | 1150 0001      : move.b (A0),($1,A0)
        d976 | 0c00 0020      : cmpi.b #$20,D0
        d97a | 660a           : bne    $d986
        d97c | 1428 0001      : move.b ($1,A0),D2   // stop sound
        d980 | 0202 00f0      : andi.b #$f0,D2
        d984 | 1282           : move.b D2,(A1)
        d986 | 60b2           : bra    $d93a
        -->
    </script>
    <script state="run">
        <output format="----- super stingray 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@20100</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mw@1680 =             6ca6</action>
        <action>maincpu.mq@d930 = ffffffffffffffff</action>
        <action>maincpu.mq@d938 = ffffffffffffffff</action>
        <action>maincpu.mq@d940 = ffffffffffffffff</action>
        <action>maincpu.mq@d948 = ffffffffffffffff</action>
        <action>maincpu.mq@d950 = ffffffffffffffff</action>
        <action>maincpu.mq@d958 = ffffffffffffffff</action>
        <action>maincpu.mq@d960 = ffffffffffffffff</action>
        <action>maincpu.mq@d968 = ffffffffffffffff</action>
        <action>maincpu.mq@d970 = ffffffffffffffff</action>
        <action>maincpu.mq@d978 = ffffffffffffffff</action>
        <action>maincpu.mq@d980 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="skip ram/rom check">
    <script state="on">
        <action>maincpu.mw@1668 = 0002</action>
    </script>
    <script state="off">
        <action>maincpu.mw@1668 = 0790</action>
    </script>
</cheat>

[sstingry] Super Stingray

Posted: Sun Jan 14, 2024 3:40 am
by jman

Code: Select all

<!-- Super Stingray (Japan) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mw@39D4 = 60CA</action> <!-- enemy -->
            <action>maincpu.mw@3AEC = 60CE</action> <!-- enemy -->
            <action>maincpu.mw@574C = 4E75</action> <!-- bomb -->
            <action>maincpu.mw@6600 = 4E75</action> <!-- laser -->
            <action>maincpu.mw@67FA = 4E75</action> <!-- bullet -->
            <action>maincpu.mw@6874 = 4E75</action> <!-- missile (small) -->
            <action>maincpu.mw@6904 = 4E75</action> <!-- missile (large) -->
        </script>
        <script state="off">
            <action>maincpu.mw@39D4 = 64CA</action>
            <action>maincpu.mw@3AEC = 64CE</action>
            <action>maincpu.mw@574C = 552E</action>
            <action>maincpu.mw@6600 = 572E</action>
            <action>maincpu.mw@67FA = 042E</action>
            <action>maincpu.mw@6874 = 7040</action>
            <action>maincpu.mw@6904 = 7040</action>
        </script>
    </cheat>

    <cheat desc="walk through wall">
        <script state="on">
            <action>maincpu.mb@39AD = FF</action>
        </script>
        <script state="off">
            <action>maincpu.mb@39AD = 00</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@3ED9 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@3ED9 = 30</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter min="0x01" max="0x05" step="0x01" />
        <script state="change">
            <action>maincpu.mb@31C9 =  param</action> <!-- up -->
            <action>maincpu.mb@31CD = -param</action> <!-- down -->
            <action>maincpu.mb@31D9 =  param</action> <!-- right -->
            <action>maincpu.mb@31DD = -param</action> <!-- left -->
        </script>
        <script state="off">
            <action>maincpu.mb@31C9 = 01</action>
            <action>maincpu.mb@31CD = FF</action>
            <action>maincpu.mb@31D9 = 01</action>
            <action>maincpu.mb@31DD = FF</action>
        </script>
    </cheat>

    <cheat desc="direct turn">
        <script state="on">
            <action>maincpu.mq@33C8 = 4EB90000D9104E71</action>
            <action>maincpu.mq@D910 = 102E000D0240000F</action>
            <action>maincpu.mq@D918 = 103B00081D400104</action>
            <action>maincpu.mq@D920 = 4E75000001FF0203</action>
            <action>maincpu.mq@D928 = 04FF050607FFFFFF</action>
            <!--
            D910 | 102E 000D : move.b  ($d,A6), D0
            D914 | 0240 000F : andi.w  #$f, D0
            D918 | 103B 0008 : move.b  ($8,PC,D0.w), D0
            D91C | 1D40 0104 : move.b  D0, ($104,A6)
            D920 | 4E75      : rts
            D922 - D92C      : input/direction conversion table
             input direction
              01     00      : up
              02     01      : down
              04     02      : right
              05     03      : upper-right
              06     04      : lower-right
              08     05      : left
              09     06      : upper-left
              0a     07      : lower-left
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@33C8 = 103B00341D400104</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>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x7f">02       </item>
            <item value="0x3f">03       </item>
            <item value="0x0f">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@2F75 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@2F75 = 0F</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@1F8C = 4EF90000D9307E04</action>
            <action>maincpu.mq@D930 = 41F90002000043F9</action>
            <action>maincpu.mq@D938 = 000E000012001039</action>
            <action>maincpu.mq@D940 = 000C0001B20067F4</action>
            <action>maincpu.mq@D948 = 0C00000866025310</action>
            <action>maincpu.mq@D950 = 0C00000466025210</action>
            <action>maincpu.mq@D958 = 0C00000266040410</action>
            <action>maincpu.mq@D960 = 00100c0000016604</action>
            <action>maincpu.mq@D968 = 061000100C000010</action>
            <action>maincpu.mq@D970 = 660212900C000020</action>
            <action>maincpu.mq@D978 = 660412BC000160BC</action>
            <!--
            D930 | 41F9 0002 0000 : lea     $20000.l, A0 // sound code address
            D936 | 43F9 000E 0000 : lea     $e0000.l, A1 // sound latch address
            D93C | 1200           : move.b  D0, D1
            D93E | 1039 000C 0001 : move.b  $c0001.l, D0 // read input
            D944 | B200           : cmp.b   D0, D1
            D946 | 67F4           : beq     $d93c
            D948 | 0C00 0008      : cmpi.b  #$8, D0
            D94C | 6602           : bne     $d950
            D94E | 5310           : subq.b  #1, (A0)     // decrease code -01
            D950 | 0C00 0004      : cmpi.b  #$4, D0
            D954 | 6602           : bne     $d958
            D956 | 5210           : addq.b  #1, (A0)     // increase code +01
            D958 | 0C00 0002      : cmpi.b  #$2, D0
            D95C | 6604           : bne     $d962
            D95E | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            D962 | 0C00 0001      : cmpi.b  #$1, D0
            D966 | 6604           : bne     $d96c
            D968 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            D96C | 0C00 0010      : cmpi.b  #$10, D0
            D970 | 6602           : bne     $d974
            D972 | 1290           : move.b  (A0), (A1)   // play sound
            D974 | 0C00 0020      : cmpi.b  #$20, D0
            D978 | 6604           : bne     $d97e
            D97A | 12BC 0001      : move.b  #$1, (A1)    // stop sound
            D97E | 60BC           : bra     $d93c
            -->
            <action>audiocpu.mw@02FF = 3F80            </action>
            <action>audiocpu.mq@3F80 = 32810032803132AF</action>
            <action>audiocpu.mq@3F88 = 32803032033E8110</action>
            <action>audiocpu.mq@3F90 = 8059328050328039</action>
            <action>audiocpu.mq@3F98 = 0132807932807032</action>
            <action>audiocpu.mq@3FA0 = 5132103E81113281</action>
            <action>audiocpu.mq@3FA8 = FF3E807132203E80</action>
            <action>audiocpu.mq@3FB0 = 000002BAC3824032</action>
            <!--
            3F80 | AF       : xor  a
            3F81 | 32 31 80 : ld   ($8031),a
            3F84 | 32 00 81 : ld   ($8100),a
            3F87 | 32 10 81 : ld   ($8110),a
            3F8A | 3E 03    : ld   a,$03
            3F8C | 32 30 80 : ld   ($8030),a
            3F8F | 32 39 80 : ld   ($8039),a
            3F92 | 32 50 80 : ld   ($8050),a
            3F95 | 32 59 80 : ld   ($8059),a
            3F98 | 32 70 80 : ld   ($8070),a
            3F9B | 32 79 80 : ld   ($8079),a
            3F9E | 32 01 81 : ld   ($8101),a
            3FA1 | 32 11 81 : ld   ($8111),a
            3FA4 | 3E 10    : ld   a,$10
            3FA6 | 32 51 80 : ld   ($8051),a
            3FA9 | 3E 20    : ld   a,$20
            3FAB | 32 71 80 : ld   ($8071),a
            3FAE | 3E FF    : ld   a,$FF
            3FB0 | 32 40 82 : ld   ($8240),a
            3FB3 | C3 BA 02 : jp   $02BA
            -->
        </script>
        <script state="run">
            <output format="----- super stingray 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@20000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@1F8C = 41F9000418F67E04</action>
            <action> maincpu.mq@D930 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D938 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D940 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D948 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D950 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D958 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D960 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D968 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D970 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@D978 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mw@02FF = 02BA            </action>
            <action>audiocpu.mq@3F80 = 0000000000000000</action>
            <action>audiocpu.mq@3F88 = 0000000000000000</action>
            <action>audiocpu.mq@3F90 = 0000000000000000</action>
            <action>audiocpu.mq@3F98 = 0000000000000000</action>
            <action>audiocpu.mq@3FA0 = 0000000000000000</action>
            <action>audiocpu.mq@3FA8 = 0000000000000000</action>
            <action>audiocpu.mq@3FB0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action> maincpu.md@1DFA = 600000AA</action>
            <action>audiocpu.mw@0107 = 01CC    </action>
        </script>
        <script state="off">
            <action> maincpu.md@1DFA = 45F80072</action>
            <action>audiocpu.mw@0107 = 0112    </action>
        </script>
    </cheat>

</mamecheat>
  • "sound test mode" : Fixed sound stop by sound stop button.
  • "skip rom check" : Added code for audiocpu.