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="<< sound code %2.2X >>" 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="<< sound code %2.2X >>" 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="<< sound code %2.2X >>" 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>