Page 1 of 1

[megadriv/arrow]+ Arrow Flash

Posted: Sun Aug 25, 2024 3:05 am
by jman
megadriv/arrow.xml

Code: Select all

<!-- Arrow Flash (World) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <!-- objects -->
            <action>mdslot:cart:rom.mq@0FD74 = 00024EB90003FD60</action>
            <action>mdslot:cart:rom.mq@3FD60 = 0C68000B0004670E</action>
            <action>mdslot:cart:rom.mq@3FD68 = 4A7900FF32EA6604</action>
            <action>mdslot:cart:rom.mq@3FD70 = 70014E7570004E75</action>
            <!--
            3FD60 | 0C68 000B 0004 : cmpi.w  #$b, ($4,A0) // is item?
            3FD66 | 670E           : beq     $3fd76
            3FD68 | 4A79 00FF 32EA : tst.w   $ff32ea.l    // is used arrow flash in robot mode?
            3FD6E | 6604           : bne     $3fd74
            3FD70 | 7001           : moveq   #$1, D0
            3FD72 | 4E75           : rts
            3FD74 | 7000           : moveq   #$0, D0
            3FD76 | 4E75           : rts
            -->
            <action>mdslot:cart:rom.mb@8C4A = 60</action> <!-- background -->
        </script>
        <script state="off">
            <action>mdslot:cart:rom.mq@0FD74 = 00160C68000B0004</action>
            <action>mdslot:cart:rom.mq@3FD60 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD68 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD70 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mb@08C4A = 66              </action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>mdslot:cart:rom.mb@0B07 = 02</action> <!-- flag -->
            <action>mdslot:cart:rom.mb@0B0D = 00</action> <!-- timer -->
        </script>
        <script state="off">
            <action>mdslot:cart:rom.mb@0B07 = 1C</action>
            <action>mdslot:cart:rom.mb@0B0D = 07</action>
        </script>
    </cheat>

    <cheat desc="player speed (test)">
        <!-- speed doesn't change in robot mode with arrow flash -->
        <parameter>
            <item value="0x7a01">01 (slow)</item>
            <item value="0x7a02">02       </item>
            <item value="0x7a04">03       </item>
            <item value="0x7a06">04       </item>
            <item value="0x7a08">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>mdslot:cart:rom.mw@8E92 = param</action>
        </script>
        <script state="off">
            <action>mdslot:cart:rom.mw@8E92 = DA41</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- no sound response after playing 0x4f or later -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>mdslot:cart:rom.md@00DEC = 0003FD80        </action>
            <action>mdslot:cart:rom.mq@3FD80 = 41F8800043F88001</action>
            <action>mdslot:cart:rom.mq@3FD88 = 123900FF07ACB211</action>
            <action>mdslot:cart:rom.mq@3FD90 = 67400C0100046602</action>
            <action>mdslot:cart:rom.mq@3FD98 = 53100C0100086602</action>
            <action>mdslot:cart:rom.mq@3FDA0 = 52100C0100026604</action>
            <action>mdslot:cart:rom.mq@3FDA8 = 041000100C010001</action>
            <action>mdslot:cart:rom.mq@3FDB0 = 6604061000100C01</action>
            <action>mdslot:cart:rom.mq@3FDB8 = 0040660810100000</action>
            <action>mdslot:cart:rom.mq@3FDC0 = 0080600A0C010010</action>
            <action>mdslot:cart:rom.mq@3FDC8 = 6608103C00FE4EB8</action>
            <action>mdslot:cart:rom.mq@3FDD0 = 0C7A12814E75FFFF</action>
            <!--
            3FD80 | 41F8 8000      : lea     $8000.w, A0   // sound code address ($ff8000)
            3FD84 | 43F8 8001      : lea     $8001.w, A1   // temporary input address ($ff8001)
            3FD88 | 1239 00FF 07AC : move.b  $ff07ac.l, D1 // read input
            3FD8E | B211           : cmp.b   (A1), D1
            3FD90 | 6740           : beq     $3fdd2
            3FD92 | 0C01 0004      : cmpi.b  #$4, D1
            3FD96 | 6602           : bne     $3fd9a
            3FD98 | 5310           : subq.b  #1, (A0)      // decrease code -01
            3FD9A | 0C01 0008      : cmpi.b  #$8, D1
            3FD9E | 6602           : bne     $3fda2
            3FDA0 | 5210           : addq.b  #1, (A0)      // increase code +01
            3FDA2 | 0C01 0002      : cmpi.b  #$2, D1
            3FDA6 | 6604           : bne     $3fdac
            3FDA8 | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            3FDAC | 0C01 0001      : cmpi.b  #$1, D1
            3FDB0 | 6604           : bne     $3fdb6
            3FDB2 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            3FDB6 | 0C01 0040      : cmpi.b  #$40, D1
            3FDBA | 6608           : bne     $3fdc4
            3FDBC | 1010           : move.b  (A0), D0      // play sound
            3FDBE | 0000 0080      : ori.b   #$80, D0
            3FDC2 | 600A           : bra     $3fdce
            3FDC4 | 0C01 0010      : cmpi.b  #$10, D1
            3FDC8 | 6608           : bne     $3fdd2
            3FDCA | 103C 00FE      : move.b  #$fe, D0      // stop sound
            3FDCE | 4EB8 0C7A      : jsr     $c7a.w        // send sound code
            3FDD2 | 1281           : move.b  D1, (A1)
            3FDD4 | 4E75           : rts
            -->
        </script>
        <script state="run">
            <output format="----- 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@FF8000</argument>
            </output>
        </script>
        <script state="off">
            <action>mdslot:cart:rom.md@00DEC = 00000E10        </action>
            <action>mdslot:cart:rom.mq@3FD80 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD88 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD90 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD98 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDA0 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDA8 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDB0 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDB8 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDC0 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDC8 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDD0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
megadriv/arrowp.xml

Code: Select all

<!-- Arrow Flash (USA, prototype) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <!-- objects -->
            <action>mdslot:cart:rom.mq@0FCCE = 00024EB90003FD60</action>
            <action>mdslot:cart:rom.mq@3FD60 = 0C68000B0004670E</action>
            <action>mdslot:cart:rom.mq@3FD68 = 4A7900FF32EA6604</action>
            <action>mdslot:cart:rom.mq@3FD70 = 70014E7570004E75</action>
            <!--
            3FD60 | 0C68 000B 0004 : cmpi.w  #$b, ($4,A0) // is item?
            3FD66 | 670E           : beq     $3fd76
            3FD68 | 4A79 00FF 32EA : tst.w   $ff32ea.l    // is used arrow flash in robot mode?
            3FD6E | 6604           : bne     $3fd74
            3FD70 | 7001           : moveq   #$1, D0
            3FD72 | 4E75           : rts
            3FD74 | 7000           : moveq   #$0, D0
            3FD76 | 4E75           : rts
            -->
            <action>mdslot:cart:rom.mb@8BA4 = 60</action> <!-- background -->
        </script>
        <script state="off">
            <action>mdslot:cart:rom.mq@0FCCE = 00160C68000B0004</action>
            <action>mdslot:cart:rom.mq@3FD60 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD68 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD70 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mb@08BA4 = 66              </action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>mdslot:cart:rom.mb@0B07 = 02</action> <!-- flag -->
            <action>mdslot:cart:rom.mb@0B0D = 00</action> <!-- timer -->
        </script>
        <script state="off">
            <action>mdslot:cart:rom.mb@0B07 = 1C</action>
            <action>mdslot:cart:rom.mb@0B0D = 07</action>
        </script>
    </cheat>

    <cheat desc="player speed (test)">
        <!-- speed doesn't change in robot mode with arrow flash -->
        <parameter>
            <item value="0x7a01">01 (slow)</item>
            <item value="0x7a02">02       </item>
            <item value="0x7a04">03       </item>
            <item value="0x7a06">04       </item>
            <item value="0x7a08">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>mdslot:cart:rom.mw@8DEC = param</action>
        </script>
        <script state="off">
            <action>mdslot:cart:rom.mw@8DEC = DA41</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- no sound response after playing 0x4f or later -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>mdslot:cart:rom.md@00DFE = 0003FD80        </action>
            <action>mdslot:cart:rom.mq@3FD80 = 41F8800043F88001</action>
            <action>mdslot:cart:rom.mq@3FD88 = 123900FF07ACB211</action>
            <action>mdslot:cart:rom.mq@3FD90 = 67400C0100046602</action>
            <action>mdslot:cart:rom.mq@3FD98 = 53100C0100086602</action>
            <action>mdslot:cart:rom.mq@3FDA0 = 52100C0100026604</action>
            <action>mdslot:cart:rom.mq@3FDA8 = 041000100C010001</action>
            <action>mdslot:cart:rom.mq@3FDB0 = 6604061000100C01</action>
            <action>mdslot:cart:rom.mq@3FDB8 = 0040660810100000</action>
            <action>mdslot:cart:rom.mq@3FDC0 = 0080600A0C010010</action>
            <action>mdslot:cart:rom.mq@3FDC8 = 6608103C00FE4EB8</action>
            <action>mdslot:cart:rom.mq@3FDD0 = 0C7A12814E75FFFF</action>
            <!--
            3FD80 | 41F8 8000      : lea     $8000.w, A0   // sound code address ($ff8000)
            3FD84 | 43F8 8001      : lea     $8001.w, A1   // temporary input address ($ff8001)
            3FD88 | 1239 00FF 07AC : move.b  $ff07ac.l, D1 // read input
            3FD8E | B211           : cmp.b   (A1), D1
            3FD90 | 6740           : beq     $3fdd2
            3FD92 | 0C01 0004      : cmpi.b  #$4, D1
            3FD96 | 6602           : bne     $3fd9a
            3FD98 | 5310           : subq.b  #1, (A0)      // decrease code -01
            3FD9A | 0C01 0008      : cmpi.b  #$8, D1
            3FD9E | 6602           : bne     $3fda2
            3FDA0 | 5210           : addq.b  #1, (A0)      // increase code +01
            3FDA2 | 0C01 0002      : cmpi.b  #$2, D1
            3FDA6 | 6604           : bne     $3fdac
            3FDA8 | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            3FDAC | 0C01 0001      : cmpi.b  #$1, D1
            3FDB0 | 6604           : bne     $3fdb6
            3FDB2 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            3FDB6 | 0C01 0040      : cmpi.b  #$40, D1
            3FDBA | 6608           : bne     $3fdc4
            3FDBC | 1010           : move.b  (A0), D0      // play sound
            3FDBE | 0000 0080      : ori.b   #$80, D0
            3FDC2 | 600A           : bra     $3fdce
            3FDC4 | 0C01 0010      : cmpi.b  #$10, D1
            3FDC8 | 6608           : bne     $3fdd2
            3FDCA | 103C 00FE      : move.b  #$fe, D0      // stop sound
            3FDCE | 4EB8 0C7A      : jsr     $c7a.w        // send sound code
            3FDD2 | 1281           : move.b  D1, (A1)
            3FDD4 | 4E75           : rts
            -->
        </script>
        <script state="run">
            <output format="----- 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@FF8000</argument>
            </output>
        </script>
        <script state="off">
            <action>mdslot:cart:rom.md@00DFE = 00000E22        </action>
            <action>mdslot:cart:rom.mq@3FD80 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD88 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD90 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FD98 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDA0 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDA8 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDB0 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDB8 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDC0 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDC8 = FFFFFFFFFFFFFFFF</action>
            <action>mdslot:cart:rom.mq@3FDD0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
"sound test mode" : No sound response after playing 0x4f or later