[sonicbom] Sonic Boom

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: 843
Joined: Tue Dec 01, 2020 1:24 pm

[sonicbom] Sonic Boom

Post by jman »

Code: Select all

<cheat desc="auto fire">
    <script state="run">
        <action>maincpu.ob@3285 = 0a</action>
    </script>
    <script state="off">
        <action>maincpu.ob@3285 = 18</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x0c00">01 (slow)</item>
        <item value="0x1800">02       </item>
        <item value="0x2400">03       </item>
        <item value="0x3000">04       </item>
        <item value="0x3c00">05 (fast)</item>
    </parameter>
    <script state="run">
        <action>maincpu.od@31aa = 343c0000</action> <!-- left -->
        <action>maincpu.od@31ea = 343c0000</action> <!-- right -->
        <action>maincpu.od@323e = 323c0000</action> <!-- up -->
        <action>maincpu.od@325a = 323c0000</action> <!-- down -->
        <action>maincpu.ow@31ac =    param</action>
        <action>maincpu.ow@31ec =    param</action>
        <action>maincpu.ow@3240 =    param</action>
        <action>maincpu.ow@325c =    param</action>
    </script>
    <script state="off">
        <action>maincpu.od@0031aa = 342d0016</action>
        <action>maincpu.od@0031ea = 342d0016</action>
        <action>maincpu.od@00323e = 322d0014</action>
        <action>maincpu.od@00325a = 322d0014</action>
    </script>
</cheat>

<cheat desc="bullet speed">
    <parameter>
        <item value="0x0004">01 (slow)</item>
        <item value="0x0008">02       </item>
        <item value="0x000c">03       </item>
        <item value="0x0010">04       </item>
        <item value="0x0014">05 (fast)</item>
    </parameter>
    <script state="run">
        <action>maincpu.od@03ada =         303c0000</action> <!-- player -->
        <action>maincpu.oq@03a48 = 4eb9000400004e71</action> <!-- sidefighters -->
        <action>maincpu.oq@40000 = 303c00004a6d0014</action>
        <action>maincpu.oq@40008 = 6a024440d16d0008</action>
        <action>maincpu.oq@40010 = 4e75000000000000</action>
        <!--
        40000 | 303c 00xx : move.w #$xx,D0
        40004 | 4a6d 0014 : tst.w  ($14,A5)
        40008 | 6a02      : bpl    $4000c
        4000a | 4440      : neg.w  D0
        4000c | d16d 0008 : add.w  D0,($8,A5)
        40010 | 4e75      : rts
        -->
        <action>maincpu.ow@03adc = param</action>
        <action>maincpu.ow@40002 = param</action>
    </script>
    <script state="change">
    </script>
    <script state="off">
        <action>maincpu.od@03ada =         302d0014</action>
        <action>maincpu.oq@03a48 = 302d0014d16d0008</action>
        <action>maincpu.oq@40000 = 0000000000000000</action>
        <action>maincpu.oq@40008 = 0000000000000000</action>
        <action>maincpu.oq@40010 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="run">
        <action>maincpu.od@01114 =         00040020</action>
        <action>maincpu.oq@40020 = 41f8c20043f90012</action>
        <action>maincpu.oq@40028 = 34071200103900c4</action>
        <action>maincpu.oq@40030 = 1003b20067f40c00</action>
        <action>maincpu.oq@40038 = 007f660253100c00</action>
        <action>maincpu.oq@40040 = 00bf660252100c00</action>
        <action>maincpu.oq@40048 = 00ef660404100010</action>
        <action>maincpu.oq@40050 = 0c0000df66040610</action>
        <action>maincpu.oq@40058 = 00100c0000fd6602</action>
        <action>maincpu.oq@40060 = 12900c0000fb6602</action>
        <action>maincpu.oq@40068 = 421160be00000000</action>
        <!--
        40020 | 41f8 c200      : lea    $c200.w,A0   // sound code address
        40024 | 43f9 0012 3407 : lea    $123407.l,A1 // sound latch address
        4002a | 1200           : move.b D0,D1
        4002c | 1039 00c4 1003 : move.b $c41003.l,D0 // read input
        40032 | b200           : cmp.b  D0,D1
        40034 | 67f4           : beq    $4002a
        40036 | 0c00 007f      : cmpi.b #$7f,D0
        4003a | 6602           : bne    $4003e
        4003c | 5310           : subq.b #1,(A0)      // decrease code -01
        4003e | 0c00 00bf      : cmpi.b #-$41,D0
        40042 | 6602           : bne    $40046
        40044 | 5210           : addq.b #1,(A0)      // increase code +01
        40046 | 0c00 00ef      : cmpi.b #-$11,D0
        4004a | 6604           : bne    $40050
        4004c | 0410 0010      : subi.b #$10,(A0)    // decrease code -10
        40050 | 0c00 00df      : cmpi.b #-$21,D0
        40054 | 6604           : bne    $4005a
        40056 | 0610 0010      : addi.b #$10,(A0)    // increase code +10
        4005a | 0c00 00fd      : cmpi.b #-$3,D0
        4005e | 6602           : bne    $40062
        40060 | 1290           : move.b (A0),(A1)    // play sound
        40062 | 0c00 00fb      : cmpi.b #-$5,D0
        40066 | 6602           : bne    $4006a
        40068 | 4211           : clr.b  (A1)         // stop sound
        4006a | 60be           : bra    $4002a
        -->
        <output format="----- sonic boom 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@ffc200</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.od@01114 =         000081e2</action>
        <action>maincpu.oq@40020 = 0000000000000000</action>
        <action>maincpu.oq@40028 = 0000000000000000</action>
        <action>maincpu.oq@40030 = 0000000000000000</action>
        <action>maincpu.oq@40038 = 0000000000000000</action>
        <action>maincpu.oq@40040 = 0000000000000000</action>
        <action>maincpu.oq@40048 = 0000000000000000</action>
        <action>maincpu.oq@40050 = 0000000000000000</action>
        <action>maincpu.oq@40058 = 0000000000000000</action>
        <action>maincpu.oq@40060 = 0000000000000000</action>
        <action>maincpu.oq@40068 = 0000000000000000</action>
    </script>
</cheat>
Cheat state "on" and "change" have soft-reset problem in case of ROM hack (program code is reset at re-boot). So it will be better to use "run".
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[sonicbom]+ Sonic Boom

Post by jman »

sonicbom.xml

Code: Select all

<!-- Sonic Boom (FD1094 317-0053) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="run">
            <action>maincpu.ob@0361A = 60</action> <!-- enemy -->
            <action>maincpu.ob@0377A = 60</action> <!-- bullet -->
            <action>maincpu.ob@04786 = 60</action> <!-- large enemy -->
            <action>maincpu.ob@09E5A = 60</action> <!-- electronic line (operation 4) -->
            <action>maincpu.ob@122BE = 60</action> <!-- explosion (operation 2) -->
        </script>
        <script state="off">
            <action>maincpu.ob@0361A = 6E</action>
            <action>maincpu.ob@0377A = 6E</action>
            <action>maincpu.ob@04786 = 66</action>
            <action>maincpu.ob@09E5A = 6E</action>
            <action>maincpu.ob@122BE = 64</action>
        </script>
    </cheat>

    <cheat desc="no hit - sidefighters">
        <script state="run">
            <action>maincpu.ob@37DA = 60</action>
        </script>
        <script state="off">
            <action>maincpu.ob@37DA = 6E</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="run">
            <action>maincpu.ob@3285 = 0A</action>
        </script>
        <script state="off">
            <action>maincpu.ob@3285 = 18</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0c00">01 (slow)</item>
            <item value="0x1800">02       </item>
            <item value="0x2800">03       </item>
            <item value="0x3800">04       </item>
            <item value="0x4800">05 (fast)</item>
        </parameter>
        <script state="run">
            <action>maincpu.ow@31AA = 343C </action> <!-- left -->
            <action>maincpu.ow@31EA = 343C </action> <!-- right -->
            <action>maincpu.ow@323E = 323C </action> <!-- up -->
            <action>maincpu.ow@325A = 323C </action> <!-- down -->
            <action>maincpu.ow@31AC = param</action>
            <action>maincpu.ow@31EC = param</action>
            <action>maincpu.ow@3240 = param</action>
            <action>maincpu.ow@325C = param</action>
        </script>
        <script state="off">
            <action>maincpu.od@31AA = 342D0016</action>
            <action>maincpu.od@31EA = 342D0016</action>
            <action>maincpu.od@323E = 322D0014</action>
            <action>maincpu.od@325A = 322D0014</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0004">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x000c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0014">05 (fast)</item>
        </parameter>
        <script state="run">
            <action>maincpu.ow@03ADA = 303C            </action> <!-- player -->
            <action>maincpu.oq@03A48 = 4EB900039EA04E71</action> <!-- sidefighters -->
            <action>maincpu.oq@39EA0 = 303C00004A6D0014</action>
            <action>maincpu.oq@39EA8 = 6A024440D16D0008</action>
            <action>maincpu.oq@39EB0 = 4E75FFFFFFFFFFFF</action>
            <!--
            39EA0 | 303C xxxx : move.w  #$xxxx, D0
            39EA4 | 4A6D 0014 : tst.w   ($14,A5)
            39EA8 | 6A02      : bpl     $39eac
            39EAA | 4440      : neg.w   D0
            39EAC | D16D 0008 : add.w   D0, ($8,A5)
            39EB0 | 4E75      : rts
            -->
            <action>maincpu.ow@03ADC = param</action>
            <action>maincpu.ow@39EA2 = param</action>
        </script>
        <script state="off">
            <action>maincpu.od@03ADA = 302D0014        </action>
            <action>maincpu.oq@03A48 = 302D0014D16D0008</action>
            <action>maincpu.oq@39EA0 = 21F021F021F021F0</action>
            <action>maincpu.oq@39EA8 = 21F021F021F021F0</action>
            <action>maincpu.oq@39EB0 = 21F021F021F021F0</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="run">
            <action>maincpu.od@01114 = 00039EC0        </action>
            <action>maincpu.oq@39EC0 = 41F8C20043F90012</action>
            <action>maincpu.oq@39EC8 = 34071200103900C4</action>
            <action>maincpu.oq@39ED0 = 1003B20067F40C00</action>
            <action>maincpu.oq@39ED8 = 007F660253100C00</action>
            <action>maincpu.oq@39EE0 = 00BF660252100C00</action>
            <action>maincpu.oq@39EE8 = 00EF660404100010</action>
            <action>maincpu.oq@39EF0 = 0C0000DF66040610</action>
            <action>maincpu.oq@39EF8 = 00100C0000FD6602</action>
            <action>maincpu.oq@39F00 = 12900C0000FB6602</action>
            <action>maincpu.oq@39F08 = 421160BEFFFFFFFF</action>
            <!--
            39EC0 | 41F8 C200      : lea     $c200.w, A0   // sound code address ($ffc200)
            39EC4 | 43F9 0012 3407 : lea     $123407.l, A1 // sound latch address
            39ECA | 1200           : move.b  D0, D1
            39ECC | 1039 00C4 1003 : move.b  $c41003.l, D0 // read input
            39ED2 | B200           : cmp.b   D0, D1
            39ED4 | 67F4           : beq     $39eca
            39ED6 | 0C00 007F      : cmpi.b  #$7f, D0
            39EDA | 6602           : bne     $39ede
            39EDC | 5310           : subq.b  #1, (A0)      // decrease code -01
            39EDE | 0C00 00BF      : cmpi.b  #-$41, D0
            39EE2 | 6602           : bne     $39ee6
            39EE4 | 5210           : addq.b  #1, (A0)      // increase code +01
            39EE6 | 0C00 00EF      : cmpi.b  #-$11, D0
            39EEA | 6604           : bne     $39ef0
            39EEC | 0410 0010      : subi.b  #$10, (A0)    // decrease code -01
            39EF0 | 0C00 00DF      : cmpi.b  #-$21, D0
            39EF4 | 6604           : bne     $39efa
            39EF6 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            39EFA | 0C00 00FD      : cmpi.b  #-$3, D0
            39EFE | 6602           : bne     $39f02
            39F00 | 1290           : move.b  (A0), (A1)    // play sound
            39F02 | 0C00 00FB      : cmpi.b  #-$5, D0
            39F06 | 6602           : bne     $39f0a
            39F08 | 4211           : clr.b   (A1)          // stop sound
            39F0A | 60BE           : bra     $39eca
            -->
            <output format="----- sonic boom 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@FFC200</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.od@01114 = 000081E2        </action>
            <action>maincpu.oq@39EC0 = 21F021F021F021F0</action>
            <action>maincpu.oq@39EC8 = 21F021F021F021F0</action>
            <action>maincpu.oq@39ED0 = 21F021F021F021F0</action>
            <action>maincpu.oq@39ED8 = 21F021F021F021F0</action>
            <action>maincpu.oq@39EE0 = 21F021F021F021F0</action>
            <action>maincpu.oq@39EE8 = 21F021F021F021F0</action>
            <action>maincpu.oq@39EF0 = 21F021F021F021F0</action>
            <action>maincpu.oq@39EF8 = 21F021F021F021F0</action>
        </script>
    </cheat>

</mamecheat>
sonicbomd.xml

Code: Select all

<!-- Sonic Boom (bootleg of FD1094 317-0053 set) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0361A = 60</action> <!-- enemy -->
            <action>maincpu.mb@0377A = 60</action> <!-- bullet -->
            <action>maincpu.mb@04786 = 60</action> <!-- large enemy -->
            <action>maincpu.mb@09E5A = 60</action> <!-- electronic line (operation 4) -->
            <action>maincpu.mb@122BE = 60</action> <!-- explosion (operation 2) -->
        </script>
        <script state="off">
            <action>maincpu.mb@0361A = 6E</action>
            <action>maincpu.mb@0377A = 6E</action>
            <action>maincpu.mb@04786 = 66</action>
            <action>maincpu.mb@09E5A = 6E</action>
            <action>maincpu.mb@122BE = 64</action>
        </script>
    </cheat>

    <cheat desc="no hit - sidefighters">
        <script state="on">
            <action>maincpu.mb@37DA = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@37DA = 6E</action>
        </script>
    </cheat>

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

    <cheat desc="player speed">
        <parameter>
            <item value="0x0c00">01 (slow)</item>
            <item value="0x1800">02       </item>
            <item value="0x2800">03       </item>
            <item value="0x3800">04       </item>
            <item value="0x4800">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mw@31AA = 343C</action> <!-- left -->
            <action>maincpu.mw@31EA = 343C</action> <!-- right -->
            <action>maincpu.mw@323E = 323C</action> <!-- up -->
            <action>maincpu.mw@325A = 323C</action> <!-- down -->
        </script>
        <script state="change">
            <action>maincpu.mw@31AC = param</action>
            <action>maincpu.mw@31EC = param</action>
            <action>maincpu.mw@3240 = param</action>
            <action>maincpu.mw@325C = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@31AA = 342D0016</action>
            <action>maincpu.md@31EA = 342D0016</action>
            <action>maincpu.md@323E = 322D0014</action>
            <action>maincpu.md@325A = 322D0014</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0004">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x000c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0014">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mw@03ADA = 303C            </action> <!-- player -->
            <action>maincpu.mq@03A48 = 4EB900039EA04E71</action> <!-- sidefighters -->
            <action>maincpu.mq@39EA0 = 303C00004A6D0014</action>
            <action>maincpu.mq@39EA8 = 6A024440D16D0008</action>
            <action>maincpu.mq@39EB0 = 4E75FFFFFFFFFFFF</action>
            <!--
            39EA0 | 303C xxxx : move.w  #$xxxx, D0
            39EA4 | 4A6D 0014 : tst.w   ($14,A5)
            39EA8 | 6A02      : bpl     $39eac
            39EAA | 4440      : neg.w   D0
            39EAC | D16D 0008 : add.w   D0, ($8,A5)
            39EB0 | 4E75      : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@03ADC = param</action>
            <action>maincpu.mw@39EA2 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@03ADA = 302D0014        </action>
            <action>maincpu.mq@03A48 = 302D0014D16D0008</action>
            <action>maincpu.mq@39EA0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39EA8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39EB0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="run">
            <action>maincpu.md@01114 = 00039EC0        </action>
            <action>maincpu.mq@39EC0 = 41F8C20043F90012</action>
            <action>maincpu.mq@39EC8 = 34071200103900C4</action>
            <action>maincpu.mq@39ED0 = 1003B20067F40C00</action>
            <action>maincpu.mq@39ED8 = 007F660253100C00</action>
            <action>maincpu.mq@39EE0 = 00BF660252100C00</action>
            <action>maincpu.mq@39EE8 = 00EF660404100010</action>
            <action>maincpu.mq@39EF0 = 0C0000DF66040610</action>
            <action>maincpu.mq@39EF8 = 00100C0000FD6602</action>
            <action>maincpu.mq@39F00 = 12900C0000FB6602</action>
            <action>maincpu.mq@39F08 = 421160BEFFFFFFFF</action>
            <!--
            39EC0 | 41F8 C200      : lea     $c200.w, A0   // sound code address ($ffc200)
            39EC4 | 43F9 0012 3407 : lea     $123407.l, A1 // sound latch address
            39ECA | 1200           : move.b  D0, D1
            39ECC | 1039 00C4 1003 : move.b  $c41003.l, D0 // read input
            39ED2 | B200           : cmp.b   D0, D1
            39ED4 | 67F4           : beq     $39eca
            39ED6 | 0C00 007F      : cmpi.b  #$7f, D0
            39EDA | 6602           : bne     $39ede
            39EDC | 5310           : subq.b  #1, (A0)      // decrease code -01
            39EDE | 0C00 00BF      : cmpi.b  #-$41, D0
            39EE2 | 6602           : bne     $39ee6
            39EE4 | 5210           : addq.b  #1, (A0)      // increase code +01
            39EE6 | 0C00 00EF      : cmpi.b  #-$11, D0
            39EEA | 6604           : bne     $39ef0
            39EEC | 0410 0010      : subi.b  #$10, (A0)    // decrease code -01
            39EF0 | 0C00 00DF      : cmpi.b  #-$21, D0
            39EF4 | 6604           : bne     $39efa
            39EF6 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            39EFA | 0C00 00FD      : cmpi.b  #-$3, D0
            39EFE | 6602           : bne     $39f02
            39F00 | 1290           : move.b  (A0), (A1)    // play sound
            39F02 | 0C00 00FB      : cmpi.b  #-$5, D0
            39F06 | 6602           : bne     $39f0a
            39F08 | 4211           : clr.b   (A1)          // stop sound
            39F0A | 60BE           : bra     $39eca
            -->
            <output format="----- sonic boom 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@FFC200</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@01114 = 000081E2        </action>
            <action>maincpu.mq@39EC0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39EC8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39ED0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39ED8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39EE0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39EE8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39EF0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39EF8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39F00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@39F08 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
Post Reply