Page 1 of 1

[sonicbom] Sonic Boom

Posted: Sun Mar 27, 2022 1:36 pm
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".

[sonicbom]+ Sonic Boom

Posted: Thu Nov 02, 2023 11:11 pm
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>