bandit.xml
Code: Select all
<!-- Bandit (US prototype) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<!-- offroad -->
<action>maincpu.mw@0A588 = 0100</action>
<!-- objects -->
<action>maincpu.md@19E5E = 000508C0 </action>
<action>maincpu.mq@508C0 = 0C41000A66100C29</action>
<action>maincpu.mq@508C8 = 000500076D080C29</action>
<action>maincpu.mq@508D0 = 000C00076D064EB9</action>
<action>maincpu.mq@508D8 = 00019F164E750000</action>
<!--
508C0 | 0C41 000A : cmpi.w #$a, D1 // check player or not
508C4 | 6610 : bne $508d6
508C6 | 0C29 0005 0007 : cmpi.b #$5, ($7,A1) // check item
508CC | 6D08 : blt $508d6
508CE | 0C29 000C 0007 : cmpi.b #$c, ($7,A1) // check item
508D4 | 6D06 : blt $508dc
508D6 | 4EB9 0001 9F16 : jsr $19f16.l
508DC | 4E75 : rts
-->
</script>
<script state="off">
<action>maincpu.mw@0A588 = 0040 </action>
<action>maincpu.md@19E5E = 00019F16 </action>
<action>maincpu.mq@508C0 = 0000000000000000</action>
<action>maincpu.mq@508C8 = 0000000000000000</action>
<action>maincpu.mq@508D0 = 0000000000000000</action>
<action>maincpu.mq@508D8 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="rapid fire - main shot">
<script state="on">
<action>maincpu.mq@00840 = 4EB9000508E0C2BC</action>
<action>maincpu.mq@508E0 = 22390030C0000801</action>
<action>maincpu.mq@508E8 = 0014661208390006</action>
<action>maincpu.mq@508F0 = 0031810E660808F9</action>
<action>maincpu.mq@508F8 = 0004003180294E75</action>
<!--
508E0 | 2239 0030 C000 : move.l $30c000.l, D1
508E6 | 0801 0014 : btst #$14, D1 // check button 1
508EA | 6612 : bne $508fe
508EC | 0839 0006 0031 810E : btst #$6, $31810e.l // check name entry
508F4 | 6608 : bne $508fe
508F6 | 08F9 0004 0031 8029 : bset #$4, $318029.l
508FE | 4E75 : rts
-->
<action>maincpu.mb@16D68 = 51</action> <!-- short interval -->
</script>
<script state="off">
<action>maincpu.mq@00840 = 22390030C000C2BC</action>
<action>maincpu.mq@508E0 = 0000000000000000</action>
<action>maincpu.mq@508E8 = 0000000000000000</action>
<action>maincpu.mq@508F0 = 0000000000000000</action>
<action>maincpu.mq@508F8 = 0000000000000000</action>
<action>maincpu.mb@16D68 = 53 </action>
</script>
</cheat>
<cheat desc="timer speed">
<parameter>
<item value="0x303C01004E714EB9">01 (slow)</item>
<item value="0x303C00804E714EB9">02 </item>
<item value="0x303C00404E714EB9">03 </item>
<item value="0x303C00204E714EB9">04 </item>
<item value="0x303C00014E714EB9">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mq@17990 = param</action>
</script>
<script state="off">
<action>maincpu.mq@17990 = 30390031AA844EB9</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.md@007AA = 00050900 </action>
<action>maincpu.mq@50900 = 41F90031800043F9</action>
<action>maincpu.mq@50908 = 0030C01512001029</action>
<action>maincpu.mq@50910 = FFECB20067F60C00</action>
<action>maincpu.mq@50918 = 00FB660253100C00</action>
<action>maincpu.mq@50920 = 00F7660252100C00</action>
<action>maincpu.mq@50928 = 00FD660404100010</action>
<action>maincpu.mq@50930 = 0C0000FE66040610</action>
<action>maincpu.mq@50938 = 00100C0000EF6602</action>
<action>maincpu.mq@50940 = 12900C0000DF6602</action>
<action>maincpu.mq@50948 = 421160C000000000</action>
<!--
50900 | 41F9 0031 8000 : lea $318000.l, A0 // sound code address
50906 | 43F9 0030 C015 : lea $30c015.l, A1 // sound latch address
5090C | 1200 : move.b D0, D1
5090E | 1029 FFEC : move.b (-$14,A1), D0 // read input ($30C001)
50912 | B200 : cmp.b D0, D1
50914 | 67F6 : beq $5090c
50916 | 0C00 00FB : cmpi.b #-$5, D0
5091A | 6602 : bne $5091e
5091C | 5310 : subq.b #1, (A0) // decrease code -01
5091E | 0C00 00F7 : cmpi.b #-$9, D0
50922 | 6602 : bne $50926
50924 | 5210 : addq.b #1, (A0) // increase code +01
50926 | 0C00 00FD : cmpi.b #-$3, D0
5092A | 6604 : bne $50930
5092C | 0410 0010 : subi.b #$10, (A0) // decrease code -10
50930 | 0C00 00FE : cmpi.b #-$2, D0
50934 | 6604 : bne $5093a
50936 | 0610 0010 : addi.b #$10, (A0) // increase code +10
5093A | 0C00 00EF : cmpi.b #-$11, D0
5093E | 6602 : bne $50942
50940 | 1290 : move.b (A0), (A1) // play sound
50942 | 0C00 00DF : cmpi.b #-$21, D0
50946 | 6602 : bne $5094a
50948 | 4211 : clr.b (A1) // stop sound
5094A | 60C0 : bra $5090c
-->
</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="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@318000</argument>
</output>
</script>
<script state="off">
<action>maincpu.md@007AA = 00014102 </action>
<action>maincpu.mq@50900 = 0000000000000000</action>
<action>maincpu.mq@50908 = 0000000000000000</action>
<action>maincpu.mq@50910 = 0000000000000000</action>
<action>maincpu.mq@50918 = 0000000000000000</action>
<action>maincpu.mq@50920 = 0000000000000000</action>
<action>maincpu.mq@50928 = 0000000000000000</action>
<action>maincpu.mq@50930 = 0000000000000000</action>
<action>maincpu.mq@50938 = 0000000000000000</action>
<action>maincpu.mq@50940 = 0000000000000000</action>
<action>maincpu.mq@50948 = 0000000000000000</action>
</script>
</cheat>
</mamecheat>