[searcharj] Search And Rescue

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

[searcharj] Search And Rescue

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <!-- object -->
        <action>maincpu.mq@033a8 = 4eb9000272e06a00</action>
        <action>maincpu.mq@272e0 = b3fc000405de6708</action>
        <action>maincpu.mq@272e8 = b3fc0004061e660a</action>
        <action>maincpu.mq@272f0 = 4a68001067043802</action>
        <action>maincpu.mq@272f8 = 6004024401ffb444</action>
        <action>maincpu.mq@27300 = 4e75ffffffffffff</action>
        <!--
        272e0 | b3fc 0004 05de : cmpa.l #$405de,A1
        272e6 | 6708           : beq    $272f0
        272e8 | b3fc 0004 061e : cmpa.l #$4061e,A1
        272ee | 660a           : bne    $272fa
        272f0 | 4a68 0010      : tst.w  ($10,A0)
        272f4 | 6704           : beq    $272fa
        272f6 | 3802           : move.w D2,D4
        272f8 | 6004           : bra    $272fe
        272fa | 0244 01ff      : andi.w #$1ff,D4
        272fe | b444           : cmp.w  D4,D2
        27300 | 4e75           : rts
        -->
        <action>maincpu.mb@0e9a9 = 2c</action> <!-- alien tongue -->
        <action>maincpu.mb@0f348 = 60</action> <!-- iron hand -->
    </script>
    <script state="off">
        <action>maincpu.mq@033a8 = 024401ffb4446a00</action>
        <action>maincpu.mq@272e0 = ffffffffffffffff</action>
        <action>maincpu.mq@272e8 = ffffffffffffffff</action>
        <action>maincpu.mq@272f0 = ffffffffffffffff</action>
        <action>maincpu.mq@272f8 = ffffffffffffffff</action>
        <action>maincpu.mq@27300 = ffffffffffffffff</action>
        <action>maincpu.mb@0e9a9 =               2e</action>
        <action>maincpu.mb@0f348 =               66</action>
    </script>
</cheat>

<cheat desc="no fall down">
    <script state="on">
        <action>maincpu.mb@a686 = 60</action> <!-- walk -->
        <action>maincpu.mb@a6ae = 60</action> <!-- roll -->
    </script>
    <script state="off">
        <action>maincpu.mb@a686 = 67</action>
        <action>maincpu.mb@a6ae = 67</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@aea1 = 02</action> <!-- P1 -->
        <action>maincpu.mb@b19d = 04</action> <!-- P1 -->
        <action>maincpu.mb@ae43 = 02</action> <!-- P2 -->
        <action>maincpu.mb@b301 = 04</action> <!-- P2 -->
    </script>
    <script state="off">
        <action>maincpu.mb@aea1 = 2a</action>
        <action>maincpu.mb@b19d = 1c</action>
        <action>maincpu.mb@ae43 = a2</action>
        <action>maincpu.mb@b301 = 1c</action>
    </script>
</cheat>

<cheat desc="joystick hack">
    <script state="on">
        <action>maincpu.md@0aa7e =         00027310</action>
        <action>maincpu.mq@27310 = 428043f900040196</action>
        <action>maincpu.mq@27318 = b1fc000405de6702</action>
        <action>maincpu.mq@27320 = 5849302800140c00</action>
        <action>maincpu.mq@27328 = 00ff6706e44832bb</action>
        <action>maincpu.mq@27330 = 000a4eb9000021ba</action>
        <action>maincpu.mq@27338 = 4e75000000010002</action>
        <action>maincpu.mq@27340 = 0003000400050006</action>
        <action>maincpu.mq@27348 = 0007ffffffffffff</action>
        <!--
        27310 | 4280           : clr.l  D0
        27312 | 43f9 0004 0196 : lea    $40196.l,A1
        27318 | b1fc 0004 05de : cmpa.l #$405de,A0
        2731e | 6702           : beq    $27322
        27320 | 5849           : addq.w #4,A1
        27322 | 3028 0014      : move.w ($14,A0),D0
        27326 | 0c00 00ff      : cmpi.b #-$1,D0
        2732a | 6706           : beq    $27332
        2732c | e448           : lsr.w  #2,D0
        2732e | 32bb 000a      : move.w ($a,PC,D0.w),(A1)
        27332 | 4eb9 0000 21ba : jsr    $21ba.l
        27338 | 4e75           : rts
        2733a - 27349          : direction/gun convert table
        -->
    </script>
    <script state="off">
        <action>maincpu.md@0aa7e =         000021ba</action>
        <action>maincpu.mq@27310 = ffffffffffffffff</action>
        <action>maincpu.mq@27318 = ffffffffffffffff</action>
        <action>maincpu.mq@27320 = ffffffffffffffff</action>
        <action>maincpu.mq@27328 = ffffffffffffffff</action>
        <action>maincpu.mq@27330 = ffffffffffffffff</action>
        <action>maincpu.mq@27338 = ffffffffffffffff</action>
        <action>maincpu.mq@27340 = ffffffffffffffff</action>
        <action>maincpu.mq@27348 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>set ram/rom check skip then reset the game (F3)</comment>
    <script state="on">
        <action> maincpu.mq@00412 = 4ef9000272e06000</action>
        <action> maincpu.mq@272e0 = 41f90004100043f9</action>
        <action> maincpu.mq@272e8 = 0008000010bc003a</action>
        <action> maincpu.mq@272f0 = 140112290001b401</action>
        <action> maincpu.mq@272f8 = 67f60c0100fb6602</action>
        <action> maincpu.mq@27300 = 53100c0100f76602</action>
        <action> maincpu.mq@27308 = 52100c0100fd6604</action>
        <action> maincpu.mq@27310 = 041000100c0100fe</action>
        <action> maincpu.mq@27318 = 6604061000100c01</action>
        <action> maincpu.mq@27320 = 00ef66041010600a</action>
        <action> maincpu.mq@27328 = 0c0100df6606103c</action>
        <action> maincpu.mq@27330 = 0040128060baffff</action>
        <action>soundcpu.mb@00a76 =               00</action> <!-- forced to play music -->
        <action>soundcpu.mb@00b40 =               00</action> <!-- forced to play sfx -->
        <action>soundcpu.mb@00bf3 =               00</action> <!-- forced to play sample -->
        <!--
        272e0 | 41f9 0004 1000 : lea     $41000.l,A0 // sound code address
        272e6 | 43f9 0008 0000 : lea     $80000.l,A1 // input and sound address
        272ec | 10bc 003a      : move.b  #$3a,(A0)   // initalize sound code
        272f0 | 1401           : move.b  D1,D2
        272f2 | 1229 0001      : move.b  ($1,A1),D1  // read input
        272f6 | b401           : cmp.b   D1,D2
        272f8 | 67f6           : beq     $272f0
        272fa | 0c01 00fb      : cmpi.b  #-$5,D1
        272fe | 6602           : bne     $27302
        27300 | 5310           : subq.b  #1,(A0)     // decrease code -1
        27302 | 0c01 00f7      : cmpi.b  #-$9,D1
        27306 | 6602           : bne     $2730a
        27308 | 5210           : addq.b  #1,(A0)     // increase code +1
        2730a | 0c01 00fd      : cmpi.b  #-$3,D1
        2730e | 6604           : bne     $27314
        27310 | 0410 0010      : subi.b  #$10,(A0)   // decrease code -10
        27314 | 0c01 00fe      : cmpi.b  #-$2,D1
        27318 | 6604           : bne     $2731e
        2731a | 0610 0010      : addi.b  #$10,(A0)   // increase code +10
        2731e | 0c01 00ef      : cmpi.b  #-$11,D1
        27322 | 6604           : bne     $27328
        27324 | 1010           : move.b  (A0),D0     // play sound
        27326 | 600a           : bra     $27332
        27328 | 0c01 00df      : cmpi.b  #-$21,D1
        2732c | 6606           : bne     $27334
        2732e | 103c 0040      : move.b  #$40,D0     // stop sound
        27332 | 1280           : move.b  D0,(A1)     // send sound code
        27334 | 60ba           : bra     $272f0
        -->
    </script>
    <script state="run">
        <output format="----- search and rescue 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@41000</argument>
        </output>
    </script>
    <script state="off">
        <action> maincpu.mq@00412 = 4a39000e00006000</action>
        <action> maincpu.mq@272e0 = ffffffffffffffff</action>
        <action> maincpu.mq@272e8 = ffffffffffffffff</action>
        <action> maincpu.mq@272f0 = ffffffffffffffff</action>
        <action> maincpu.mq@272f8 = ffffffffffffffff</action>
        <action> maincpu.mq@27300 = ffffffffffffffff</action>
        <action> maincpu.mq@27308 = ffffffffffffffff</action>
        <action> maincpu.mq@27310 = ffffffffffffffff</action>
        <action> maincpu.mq@27318 = ffffffffffffffff</action>
        <action> maincpu.mq@27320 = ffffffffffffffff</action>
        <action> maincpu.mq@27328 = ffffffffffffffff</action>
        <action> maincpu.mq@27330 = ffffffffffffffff</action>
        <action>soundcpu.mb@00a76 =               c0</action>
        <action>soundcpu.mb@00b40 =               c0</action>
        <action>soundcpu.mb@00bf3 =               c8</action>
    </script>
</cheat>

<cheat desc="skip ram/rom check">
    <script state="on">
        <action> maincpu.mw@00408 = 040a</action>
        <action>soundcpu.mw@00c61 = 5a18</action>
    </script>
    <script state="off">
        <action> maincpu.mw@00408 = 6296</action>
        <action>soundcpu.mw@00c61 = 013e</action>
    </script>
</cheat>
In sound test mode, code 0x3a is "sound hardware no error" music. If you want to play "error" music, turn "skip ram/rom check" off after enter sound test mode then play 0x3a.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[searchar]+ Search And Rescue

Post by jman »

searchar.xml

Code: Select all

<!-- SAR - Search And Rescue (World) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3217 = 16</action> <!-- P2 enemy -->
            <action>maincpu.mb@322D = 00</action> <!-- P1 enemy -->
            <action>maincpu.mb@323B = F2</action> <!-- P2 bullet -->
            <action>maincpu.mb@3247 = E6</action> <!-- P1 bullet -->
            <action>maincpu.mb@32ED = 40</action> <!-- P2 enemy -->
            <action>maincpu.mb@3313 = 1A</action> <!-- P1 enemy -->
            <action>maincpu.mb@E669 = 2C</action> <!-- alien tongue -->
            <action>maincpu.mb@F008 = 60</action> <!-- iron hand -->
        </script>
        <script state="off">
            <action>maincpu.mb@3217 = 18</action>
            <action>maincpu.mb@322D = 02</action>
            <action>maincpu.mb@323B = F4</action>
            <action>maincpu.mb@3247 = E8</action>
            <action>maincpu.mb@32ED = 42</action>
            <action>maincpu.mb@3313 = 1C</action>
            <action>maincpu.mb@E669 = 2E</action>
            <action>maincpu.mb@F008 = 66</action>
        </script>
    </cheat>

    <cheat desc="no fall down">
        <script state="on">
            <action>maincpu.mb@A346 = 60</action> <!-- walk -->
            <action>maincpu.mb@A36E = 60</action> <!-- roll -->
        </script>
        <script state="off">
            <action>maincpu.mb@A346 = 67</action>
            <action>maincpu.mb@A36E = 67</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@AB03 = 02</action> <!-- P2 -->
            <action>maincpu.mb@AB61 = 02</action> <!-- P1 -->
            <action>maincpu.mb@AE5D = 04</action> <!-- P1 -->
            <action>maincpu.mb@AFC1 = 04</action> <!-- P2 -->
        </script>
        <script state="off">
            <action>maincpu.mb@AB03 = A2</action>
            <action>maincpu.mb@AB61 = 2A</action>
            <action>maincpu.mb@AE5D = 1C</action>
            <action>maincpu.mb@AFC1 = 1C</action>
        </script>
    </cheat>

    <cheat desc="joystick hack">
        <script state="on">
            <action>maincpu.md@0A73E = 00026FA0        </action>
            <action>maincpu.mq@26FA0 = 43F900040196B1FC</action>
            <action>maincpu.mq@26FA8 = 000405DE67025849</action>
            <action>maincpu.mq@26FB0 = 4280302800140C00</action>
            <action>maincpu.mq@26FB8 = 00FF6706E44832BB</action>
            <action>maincpu.mq@26FC0 = 00084EB821BA4E75</action>
            <action>maincpu.mq@26FC8 = 0000000100020003</action>
            <action>maincpu.mq@26FD0 = 0004000500060007</action>
            <!--
            26FA0 | 43F9 0004 0196 : lea     $40196.l, A1       // player 1
            26FA6 | B1FC 0004 05DE : cmpa.l  #$405de, A0
            26FAC | 6702           : beq     $26fb0
            26FAE | 5849           : addq.w  #4, A1             // player 2
            26FB0 | 4280           : clr.l   D0
            26FB2 | 3028 0014      : move.w  ($14,A0), D0
            26FB6 | 0C00 00FF      : cmpi.b  #-$1, D0
            26FBA | 6706           : beq     $26fc2
            26FBC | E448           : lsr.w   #2, D0
            26FBE | 32BB 0008      : move.w  ($8,PC,D0.w), (A1) // read table
            26FC2 | 4EB8 21BA      : jsr     $21ba.w
            26FC6 | 4E75           : rts
            26FC8 - 26FD7          : input/direction conversion table
             input shift direction
              00    00      00     : up
              08    02      01     : upper-right
              10    04      02     : right
              18    06      03     : lower-right
              20    08      04     : down
              28    0a      05     : lower-left
              30    0c      06     : left
              38    0e      07     : upper-left
            -->
        </script>
        <script state="off">
            <action>maincpu.md@0A73E = 000021BA        </action>
            <action>maincpu.mq@26FA0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@26FA8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@26FB0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@26FB8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@26FC0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@26FC8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@26FD0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop sound code 0x3a by sound stop button -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@00412 = 4EB900026FE06000</action>
            <action>maincpu.mq@26FE0 = 41F90004000043F9</action>
            <action>maincpu.mq@26FE8 = 0008000012001029</action>
            <action>maincpu.mq@26FF0 = 0001B20067F60C00</action>
            <action>maincpu.mq@26FF8 = 00FB660253100C00</action>
            <action>maincpu.mq@27000 = 00F7660252100C00</action>
            <action>maincpu.mq@27008 = 00FD660404100010</action>
            <action>maincpu.mq@27010 = 0C0000FE66040610</action>
            <action>maincpu.mq@27018 = 00100C0000EF6602</action>
            <action>maincpu.mq@27020 = 12900C0000DF6602</action>
            <action>maincpu.mq@27028 = 421160C0FFFFFFFF</action>
            <!--
            26FE0 | 41F9 0004 0000 : lea     $40000.l, A0 // sound code address
            26FE6 | 43F9 0008 0000 : lea     $80000.l, A1 // sound latch address
            26FEC | 1200           : move.b  D0, D1
            26FEE | 1029 0001      : move.b  ($1,A1), D0  // read input ($80001)
            26FF2 | B200           : cmp.b   D0, D1
            26FF4 | 67F6           : beq     $26fec
            26FF6 | 0C00 00FB      : cmpi.b  #-$5, D0
            26FFA | 6602           : bne     $26ffe
            26FFC | 5310           : subq.b  #1, (A0)     // decrease code -01
            26FFE | 0C00 00F7      : cmpi.b  #-$9, D0
            27002 | 6602           : bne     $27006
            27004 | 5210           : addq.b  #1, (A0)     // increase code +01
            27006 | 0C00 00FD      : cmpi.b  #-$3, D0
            2700A | 6604           : bne     $27010
            2700C | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            27010 | 0C00 00FE      : cmpi.b  #-$2, D0
            27014 | 6604           : bne     $2701a
            27016 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            2701A | 0C00 00EF      : cmpi.b  #-$11, D0
            2701E | 6602           : bne     $27022
            27020 | 1290           : move.b  (A0), (A1)   // play sound
            27022 | 0C00 00DF      : cmpi.b  #-$21, D0
            27026 | 6602           : bne     $2702a
            27028 | 4211           : clr.b   (A1)         // stop sound
            2702A | 60C0           : bra     $26fec
            -->
            <action>soundcpu.md@08CB = 00AF10CD        </action>
            <action>soundcpu.mq@AF10 = 80D30F20A7F8003A</action>
            <action>soundcpu.mq@AF18 = CD80D3803E0091CD</action>
            <action>soundcpu.mq@AF20 = 32AF470000C30091</action>
            <action>soundcpu.mq@AF28 = 78F12832013EF116</action>
            <action>soundcpu.mq@AF30 = FFFFFFFFFFFFFFC9</action>
            <!--
            AF10 | 3A 00 F8 : ld   a,($F800) // read sound code from maincpu
            AF13 | A7       : and  a
            AF14 | 20 0F    : jr   nz,$AF25
            AF16 | D3 80    : out  ($80),a   // reset sample
            AF18 | CD 91 00 : call $0091
            AF1B | 3E 80    : ld   a,$80     // enable sample
            AF1D | D3 80    : out  ($80),a
            AF1F | CD 91 00 : call $0091
            AF22 | C3 00 00 : jp   $0000     // reset soundcpu
            AF25 | 47       : ld   b,a
            AF26 | AF       : xor  a         // initialize sound flgas
            AF27 | 32 16 F1 : ld   ($F116),a
            AF2A | 3E 01    : ld   a,$01
            AF2C | 32 28 F1 : ld   ($F128),a
            AF2F | 78       : ld   a,b
            AF30 | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- search and rescue 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@40000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@00412 = 4A39000E00006000</action>
            <action> maincpu.mq@26FE0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@26FE8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@26FF0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@26FF8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27000 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27008 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27010 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27018 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27020 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27028 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.md@008CB = 00F8003A        </action>
            <action>soundcpu.mq@0AF10 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF18 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF20 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF28 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF30 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action> maincpu.mw@0408 = 040A</action>
            <action>soundcpu.mw@0C61 = 5A18</action>
        </script>
        <script state="off">
            <action> maincpu.mw@0408 = 5F56</action>
            <action>soundcpu.mw@0C61 = 013E</action>
        </script>
    </cheat>

</mamecheat>
searcharu.xml

Code: Select all

<!-- SAR - Search And Rescue (US) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@323D = 16</action> <!-- P2 enemy -->
            <action>maincpu.mb@3253 = 00</action> <!-- P1 enemy -->
            <action>maincpu.mb@3261 = F2</action> <!-- P2 bullet -->
            <action>maincpu.mb@326D = E6</action> <!-- P1 bullet -->
            <action>maincpu.mb@3313 = 40</action> <!-- P2 enemy -->
            <action>maincpu.mb@3339 = 1A</action> <!-- P1 enemy -->
            <action>maincpu.mb@EA4D = 52</action> <!-- alien tongue -->
            <action>maincpu.mb@F3EC = 60</action> <!-- iron hand -->
        </script>
        <script state="off">
            <action>maincpu.mb@323D = 18</action>
            <action>maincpu.mb@3253 = 02</action>
            <action>maincpu.mb@3261 = F4</action>
            <action>maincpu.mb@326D = E8</action>
            <action>maincpu.mb@3313 = 42</action>
            <action>maincpu.mb@3339 = 1C</action>
            <action>maincpu.mb@EA4D = 54</action>
            <action>maincpu.mb@F3EC = 66</action>
        </script>
    </cheat>

    <cheat desc="no fall down">
        <script state="on">
            <action>maincpu.mb@A72A = 60</action> <!-- walk -->
            <action>maincpu.mb@A752 = 60</action> <!-- roll -->
        </script>
        <script state="off">
            <action>maincpu.mb@A72A = 67</action>
            <action>maincpu.mb@A752 = 67</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@AEE7 = 02</action> <!-- P2 -->
            <action>maincpu.mb@AF45 = 02</action> <!-- P1 -->
            <action>maincpu.mb@B241 = 04</action> <!-- P1 -->
            <action>maincpu.mb@B3A5 = 04</action> <!-- P2 -->
        </script>
        <script state="off">
            <action>maincpu.mb@AEE7 = A2</action>
            <action>maincpu.mb@AF45 = 2A</action>
            <action>maincpu.mb@B241 = 1C</action>
            <action>maincpu.mb@B3A5 = 1C</action>
        </script>
    </cheat>

    <cheat desc="joystick hack">
        <script state="on">
            <action>maincpu.md@0AB22 = 00027440        </action>
            <action>maincpu.mq@27440 = 43F900040196B1FC</action>
            <action>maincpu.mq@27448 = 000405DE67025849</action>
            <action>maincpu.mq@27450 = 4280302800140C00</action>
            <action>maincpu.mq@27458 = 00FF6706E44832BB</action>
            <action>maincpu.mq@27460 = 00084EB821E04E75</action>
            <action>maincpu.mq@27468 = 0000000100020003</action>
            <action>maincpu.mq@27470 = 0004000500060007</action>
            <!--
            27440 | 43F9 0004 0196 : lea     $40196.l, A1       // player 1
            27446 | B1FC 0004 05DE : cmpa.l  #$405de, A0
            2744C | 6702           : beq     $27450
            2744E | 5849           : addq.w  #4, A1             // player 2
            27450 | 4280           : clr.l   D0
            27452 | 3028 0014      : move.w  ($14,A0), D0
            27456 | 0C00 00FF      : cmpi.b  #-$1, D0
            2745A | 6706           : beq     $27462
            2745C | E448           : lsr.w   #2, D0
            2745E | 32BB 0008      : move.w  ($8,PC,D0.w), (A1) // read table
            27462 | 4EB8 21E0      : jsr     $21e0.w
            27466 | 4E75           : rts
            27468 - 27377          : input/direction conversion table
             input shift direction
              00    00      00     : up
              08    02      01     : upper-right
              10    04      02     : right
              18    06      03     : lower-right
              20    08      04     : down
              28    0a      05     : lower-left
              30    0c      06     : left
              38    0e      07     : upper-left
            -->
        </script>
        <script state="off">
            <action>maincpu.md@0AA7E = 000021E0        </action>
            <action>maincpu.mq@27440 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27448 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27450 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27458 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27460 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27468 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27470 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop sound code 0x3a by sound stop button -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@00412 = 4EB9000274806000</action>
            <action>maincpu.mq@27480 = 41F90004000043F9</action>
            <action>maincpu.mq@27488 = 0008000012001029</action>
            <action>maincpu.mq@27490 = 0001B20067F60C00</action>
            <action>maincpu.mq@27498 = 00FB660253100C00</action>
            <action>maincpu.mq@274A0 = 00F7660252100C00</action>
            <action>maincpu.mq@274A8 = 00FD660404100010</action>
            <action>maincpu.mq@274B0 = 0C0000FE66040610</action>
            <action>maincpu.mq@274B8 = 00100C0000EF6602</action>
            <action>maincpu.mq@274C0 = 12900C0000DF6602</action>
            <action>maincpu.mq@274C8 = 421160C0FFFFFFFF</action>
            <!--
            27480 | 41F9 0004 0000 : lea     $40000.l, A0 // sound code address
            27486 | 43F9 0008 0000 : lea     $80000.l, A1 // sound latch address
            2748C | 1200           : move.b  D0, D1
            2748E | 1029 0001      : move.b  ($1,A1), D0  // read input ($80001)
            27492 | B200           : cmp.b   D0, D1
            27494 | 67F6           : beq     $2748c
            27496 | 0C00 00FB      : cmpi.b  #-$5, D0
            2749A | 6602           : bne     $2749e
            2749C | 5310           : subq.b  #1, (A0)     // decrease code -01
            2749E | 0C00 00F7      : cmpi.b  #-$9, D0
            274A2 | 6602           : bne     $274a6
            274A4 | 5210           : addq.b  #1, (A0)     // increase code +01
            274A6 | 0C00 00FD      : cmpi.b  #-$3, D0
            274AA | 6604           : bne     $274b0
            274AC | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            274B0 | 0C00 00FE      : cmpi.b  #-$2, D0
            274B4 | 6604           : bne     $274ba
            274B6 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            274BA | 0C00 00EF      : cmpi.b  #-$11, D0
            274BE | 6602           : bne     $274c2
            274C0 | 1290           : move.b  (A0), (A1)   // play sound
            274C2 | 0C00 00DF      : cmpi.b  #-$21, D0
            274C6 | 6602           : bne     $274ca
            274C8 | 4211           : clr.b   (A1)         // stop sound
            274CA | 60C0           : bra     $2748c
            -->
            <action>soundcpu.md@08CB = 00AF10CD        </action>
            <action>soundcpu.mq@AF10 = 80D30F20A7F8003A</action>
            <action>soundcpu.mq@AF18 = CD80D3803E0091CD</action>
            <action>soundcpu.mq@AF20 = 32AF470000C30091</action>
            <action>soundcpu.mq@AF28 = 78F12832013EF116</action>
            <action>soundcpu.mq@AF30 = FFFFFFFFFFFFFFC9</action>
            <!--
            AF10 | 3A 00 F8 : ld   a,($F800) // read sound code from maincpu
            AF13 | A7       : and  a
            AF14 | 20 0F    : jr   nz,$AF25
            AF16 | D3 80    : out  ($80),a   // reset sample
            AF18 | CD 91 00 : call $0091
            AF1B | 3E 80    : ld   a,$80     // enable sample
            AF1D | D3 80    : out  ($80),a
            AF1F | CD 91 00 : call $0091
            AF22 | C3 00 00 : jp   $0000     // reset soundcpu
            AF25 | 47       : ld   b,a
            AF26 | AF       : xor  a         // initialize sound flgas
            AF27 | 32 16 F1 : ld   ($F116),a
            AF2A | 3E 01    : ld   a,$01
            AF2C | 32 28 F1 : ld   ($F128),a
            AF2F | 78       : ld   a,b
            AF30 | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- search and rescue 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@40000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@00412 = 4A39000E00006000</action>
            <action> maincpu.mq@27480 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27488 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27490 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27498 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@274A0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@274A8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@274B0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@274B8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@274C0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@274C8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.md@008CB = 00F8003A        </action>
            <action>soundcpu.mq@0AF10 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF18 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF20 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF28 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF30 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action> maincpu.mw@0408 = 040A</action>
            <action>soundcpu.mw@0C61 = 5A18</action>
        </script>
        <script state="off">
            <action> maincpu.mw@0408 = 6514</action>
            <action>soundcpu.mw@0C61 = 013E</action>
        </script>
    </cheat>

</mamecheat>
searcharj.xml

Code: Select all

<!-- SAR - Search And Rescue (Japan version 3) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3217 = 16</action> <!-- P2 enemy -->
            <action>maincpu.mb@322D = 00</action> <!-- P1 enemy -->
            <action>maincpu.mb@323B = F2</action> <!-- P2 bullet -->
            <action>maincpu.mb@3247 = E6</action> <!-- P1 bullet -->
            <action>maincpu.mb@32ED = 40</action> <!-- P2 enemy -->
            <action>maincpu.mb@3313 = 1A</action> <!-- P1 enemy -->
            <action>maincpu.mb@E9A9 = 2C</action> <!-- alien tongue -->
            <action>maincpu.mb@F348 = 60</action> <!-- iron hand -->
        </script>
        <script state="off">
            <action>maincpu.mb@3217 = 18</action>
            <action>maincpu.mb@322D = 02</action>
            <action>maincpu.mb@323B = F4</action>
            <action>maincpu.mb@3247 = E8</action>
            <action>maincpu.mb@32ED = 42</action>
            <action>maincpu.mb@3313 = 1C</action>
            <action>maincpu.mb@E9A9 = 2E</action>
            <action>maincpu.mb@F348 = 66</action>
        </script>
    </cheat>

    <cheat desc="no fall down">
        <script state="on">
            <action>maincpu.mb@A686 = 60</action> <!-- walk -->
            <action>maincpu.mb@A6AE = 60</action> <!-- roll -->
        </script>
        <script state="off">
            <action>maincpu.mb@A686 = 67</action>
            <action>maincpu.mb@A6AE = 67</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@AE43 = 02</action> <!-- P2 -->
            <action>maincpu.mb@AEA1 = 02</action> <!-- P1 -->
            <action>maincpu.mb@B19D = 04</action> <!-- P1 -->
            <action>maincpu.mb@B301 = 04</action> <!-- P2 -->
        </script>
        <script state="off">
            <action>maincpu.mb@AE43 = A2</action>
            <action>maincpu.mb@AEA1 = 2A</action>
            <action>maincpu.mb@B19D = 1C</action>
            <action>maincpu.mb@B301 = 1C</action>
        </script>
    </cheat>

    <cheat desc="joystick hack">
        <script state="on">
            <action>maincpu.md@0AA7E = 000272E0        </action>
            <action>maincpu.mq@272E0 = 43F900040196B1FC</action>
            <action>maincpu.mq@272E8 = 000405DE67025849</action>
            <action>maincpu.mq@272F0 = 4280302800140C00</action>
            <action>maincpu.mq@272F8 = 00FF6706E44832BB</action>
            <action>maincpu.mq@27300 = 00084EB821BA4E75</action>
            <action>maincpu.mq@27308 = 0000000100020003</action>
            <action>maincpu.mq@27310 = 0004000500060007</action>
            <!--
            272E0 | 43F9 0004 0196 : lea     $40196.l, A1       // player 1
            272E6 | B1FC 0004 05DE : cmpa.l  #$405de, A0
            272EC | 6702           : beq     $272f0
            272EE | 5849           : addq.w  #4, A1             // player 2
            272F0 | 4280           : clr.l   D0
            272F2 | 3028 0014      : move.w  ($14,A0), D0
            272F6 | 0C00 00FF      : cmpi.b  #-$1, D0
            272FA | 6706           : beq     $27302
            272FC | E448           : lsr.w   #2, D0
            272FE | 32BB 0008      : move.w  ($8,PC,D0.w), (A1) // read table
            27302 | 4EB8 21BA      : jsr     $21ba.w
            27306 | 4E75           : rts
            27308 - 27317          : input/direction conversion table
             input shift direction
              00    00      00     : up
              08    02      01     : upper-right
              10    04      02     : right
              18    06      03     : lower-right
              20    08      04     : down
              28    0a      05     : lower-left
              30    0c      06     : left
              38    0e      07     : upper-left
            -->
        </script>
        <script state="off">
            <action>maincpu.md@0AA7E = 000021BA        </action>
            <action>maincpu.mq@272E0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@272E8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@272F0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@272F8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27300 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27308 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@27310 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop sound code 0x3a by sound stop button -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@00412 = 4EB9000273206000</action>
            <action>maincpu.mq@27320 = 41F90004000043F9</action>
            <action>maincpu.mq@27328 = 0008000012001029</action>
            <action>maincpu.mq@27330 = 0001B20067F60C00</action>
            <action>maincpu.mq@27338 = 00FB660253100C00</action>
            <action>maincpu.mq@27340 = 00F7660252100C00</action>
            <action>maincpu.mq@27348 = 00FD660404100010</action>
            <action>maincpu.mq@27350 = 0C0000FE66040610</action>
            <action>maincpu.mq@27358 = 00100C0000EF6602</action>
            <action>maincpu.mq@27360 = 12900C0000DF6602</action>
            <action>maincpu.mq@27368 = 421160C0FFFFFFFF</action>
            <!--
            27320 | 41F9 0004 0000 : lea     $40000.l, A0 // sound code address
            27326 | 43F9 0008 0000 : lea     $80000.l, A1 // sound latch address
            2732C | 1200           : move.b  D0, D1
            2732E | 1029 0001      : move.b  ($1,A1), D0  // read input ($80001)
            27332 | B200           : cmp.b   D0, D1
            27334 | 67F6           : beq     $2732c
            27336 | 0C00 00FB      : cmpi.b  #-$5, D0
            2733A | 6602           : bne     $2733e
            2733C | 5310           : subq.b  #1, (A0)     // decrease code -01
            2733E | 0C00 00F7      : cmpi.b  #-$9, D0
            27342 | 6602           : bne     $27346
            27344 | 5210           : addq.b  #1, (A0)     // increase code +01
            27346 | 0C00 00FD      : cmpi.b  #-$3, D0
            2734A | 6604           : bne     $27350
            2734C | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            27350 | 0C00 00FE      : cmpi.b  #-$2, D0
            27354 | 6604           : bne     $2735a
            27356 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            2735A | 0C00 00EF      : cmpi.b  #-$11, D0
            2735E | 6602           : bne     $27362
            27360 | 1290           : move.b  (A0), (A1)   // play sound
            27362 | 0C00 00DF      : cmpi.b  #-$21, D0
            27366 | 6602           : bne     $2736a
            27368 | 4211           : clr.b   (A1)         // stop sound
            2736A | 60C0           : bra     $2732c
            -->
            <action>soundcpu.md@08CB = 00AF10CD        </action>
            <action>soundcpu.mq@AF10 = 80D30F20A7F8003A</action>
            <action>soundcpu.mq@AF18 = CD80D3803E0091CD</action>
            <action>soundcpu.mq@AF20 = 32AF470000C30091</action>
            <action>soundcpu.mq@AF28 = 78F12832013EF116</action>
            <action>soundcpu.mq@AF30 = FFFFFFFFFFFFFFC9</action>
            <!--
            AF10 | 3A 00 F8 : ld   a,($F800) // read sound code from maincpu
            AF13 | A7       : and  a
            AF14 | 20 0F    : jr   nz,$AF25
            AF16 | D3 80    : out  ($80),a   // reset sample
            AF18 | CD 91 00 : call $0091
            AF1B | 3E 80    : ld   a,$80     // enable sample
            AF1D | D3 80    : out  ($80),a
            AF1F | CD 91 00 : call $0091
            AF22 | C3 00 00 : jp   $0000     // reset soundcpu
            AF25 | 47       : ld   b,a
            AF26 | AF       : xor  a         // initialize sound flgas
            AF27 | 32 16 F1 : ld   ($F116),a
            AF2A | 3E 01    : ld   a,$01
            AF2C | 32 28 F1 : ld   ($F128),a
            AF2F | 78       : ld   a,b
            AF30 | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- search and rescue 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@40000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@00412 = 4A39000E00006000</action>
            <action> maincpu.mq@27320 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27328 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27330 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27338 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27340 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27348 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27350 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27358 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27360 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@27368 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.md@008CB = 00F8003A        </action>
            <action>soundcpu.mq@0AF10 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF18 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF20 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF28 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0AF30 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action> maincpu.mw@0408 = 040A</action>
            <action>soundcpu.mw@0C61 = 5A18</action>
        </script>
        <script state="off">
            <action> maincpu.mw@0408 = 6296</action>
            <action>soundcpu.mw@0C61 = 013E</action>
        </script>
    </cheat>

</mamecheat>
  • "no hit" : Retraced program code.
  • "sound test mode" : Rewritten routine. Fixed sfx unstop problem except sound code 0x3a.
Post Reply