[powj] Prisoners of War/Datsugoku

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

[powj] Prisoners of War/Datsugoku

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@101b6 = 60</action> <!-- attack -->
        <action>maincpu.mb@1078e = 60</action> <!-- knife -->
        <action>maincpu.mb@10bb4 = 60</action> <!-- bomb -->
        <action>maincpu.mb@10ff6 = 60</action> <!-- tank -->
        <action>maincpu.mb@1149a = 60</action> <!-- crane -->
    </script>
    <script state="off">
        <action>maincpu.mb@101b6 = 6e</action>
        <action>maincpu.mb@1078e = 6e</action>
        <action>maincpu.mb@10bb4 = 6e</action>
        <action>maincpu.mb@10ff6 = 6e</action>
        <action>maincpu.mb@1149a = 6e</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@0147c = 6d</action> <!-- punch -->
        <action>maincpu.mb@01494 = 6d</action> <!-- kick -->
    </script>
    <script state="off">
        <action>maincpu.mb@0147c = 66</action>
        <action>maincpu.mb@01494 = 66</action>
    </script>
</cheat>

<cheat desc="attack speed up">
    <script state="on">
        <action>maincpu.mb@15a3 = 00</action>
        <action>maincpu.mb@1615 = 00</action>
        <action>maincpu.mb@1841 = 00</action>
        <action>maincpu.mb@19b1 = 00</action>
        <action>maincpu.mb@194d = 00</action>
        <action>maincpu.mb@1a21 = 00</action>
        <action>maincpu.mb@1a99 = 00</action>
    </script>
    <script state="off">
        <action>maincpu.mb@15a3 = 03</action>
        <action>maincpu.mb@1615 = 04</action>
        <action>maincpu.mb@1841 = 01</action>
        <action>maincpu.mb@19b1 = 03</action>
        <action>maincpu.mb@194d = 03</action>
        <action>maincpu.mb@1a21 = 02</action>
        <action>maincpu.mb@1a99 = 02</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@004be = 4ef9000194104a39</action>
        <action> maincpu.mq@19410 = 41f90004100043f9</action>
        <action> maincpu.mq@19418 = 0008000010bc003a</action>
        <action> maincpu.mq@19420 = 140112290001b401</action>
        <action> maincpu.mq@19428 = 67f60c0100fb6602</action>
        <action> maincpu.mq@19430 = 53100c0100f76602</action>
        <action> maincpu.mq@19438 = 52100c0100fd6604</action>
        <action> maincpu.mq@19440 = 041000100c0100fe</action>
        <action> maincpu.mq@19448 = 6604061000100c01</action>
        <action> maincpu.mq@19450 = 00ef66041010600a</action>
        <action> maincpu.mq@19458 = 0c0100df6606103c</action>
        <action> maincpu.mq@19460 = 0040128060baffff</action>
        <action>soundcpu.mb@009b1 =               00</action> <!-- forced to play music -->
        <action>soundcpu.mb@00a76 =               00</action> <!-- forced to play sfx -->
        <action>soundcpu.mb@00b08 =               00</action> <!-- forced to play sample -->
        <!--
        19410 | 41f9 0004 1000 : lea    $41000.l,A0 // sound code address
        19416 | 43f9 0008 0000 : lea    $80000.l,A1 // input and sound address
        1941c | 10bc 003a      : move.b #$3a,(A0)   // initialize sound code
        19420 | 1401           : move.b D1,D2
        19422 | 1229 0001      : move.b ($1,A1),D1  // read input
        19426 | b401           : cmp.b  D1,D2
        19428 | 67f6           : beq    $19420
        1942a | 0c01 00fb      : cmpi.b #-$5,D1
        1942e | 6602           : bne    $19432
        19430 | 5310           : subq.b #1,(A0)     // decrease code -01
        19432 | 0c01 00f7      : cmpi.b #-$9,D1
        19436 | 6602           : bne    $1943a
        19438 | 5210           : addq.b #1,(A0)     // increase code +01
        1943a | 0c01 00fd      : cmpi.b #-$3,D1
        1943e | 6604           : bne    $19444
        19440 | 0410 0010      : subi.b #$10,(A0)   // decrease code -10
        19444 | 0c01 00fe      : cmpi.b #-$2,D1
        19448 | 6604           : bne    $1944e
        1944a | 0610 0010      : addi.b #$10,(A0)   // increase code +10
        1944e | 0c01 00ef      : cmpi.b #-$11,D1
        19452 | 6604           : bne    $19458
        19454 | 1010           : move.b (A0),D0     // play sound
        19456 | 600a           : bra    $19462
        19458 | 0c01 00df      : cmpi.b #-$21,D1
        1945c | 6606           : bne    $19464
        1945e | 103c 0040      : move.b #$40,D0     // stop sound
        19462 | 1280           : move.b D0,(A1)     // send sound code
        19464 | 60ba           : bra    $19420
        -->
    </script>
    <script state="run">
        <output format="----- datsugoku 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@004be = 4a39000e00004a39</action>
        <action> maincpu.mq@19410 = ffffffffffffffff</action>
        <action> maincpu.mq@19418 = ffffffffffffffff</action>
        <action> maincpu.mq@19420 = ffffffffffffffff</action>
        <action> maincpu.mq@19428 = ffffffffffffffff</action>
        <action> maincpu.mq@19430 = ffffffffffffffff</action>
        <action> maincpu.mq@19438 = ffffffffffffffff</action>
        <action> maincpu.mq@19440 = ffffffffffffffff</action>
        <action> maincpu.mq@19448 = ffffffffffffffff</action>
        <action> maincpu.mq@19450 = ffffffffffffffff</action>
        <action> maincpu.mq@19458 = ffffffffffffffff</action>
        <action> maincpu.mq@19460 = ffffffffffffffff</action>
        <action>soundcpu.mb@009b1 =               c0</action>
        <action>soundcpu.mb@00a76 =               c0</action>
        <action>soundcpu.mb@00b08 =               c8</action>
    </script>
</cheat>
<cheat desc="skip ram/rom check">
    <script state="on">
        <action> maincpu.mw@045e = 0460</action> <!-- skip test -->
        <action> maincpu.mw@0470 = 57ce</action> <!-- skip result -->
        <action>soundcpu.mw@0b76 = 5a18</action>
    </script>
    <script state="off">
        <action> maincpu.mw@045e = 61e6</action>
        <action> maincpu.mw@0470 = 57d0</action>
        <action>soundcpu.mw@0b76 = 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: 850
Joined: Tue Dec 01, 2020 1:24 pm

[pow]+ Prisoners of War/Datsugoku

Post by jman »

pow.xml

Code: Select all

<!-- P.O.W. - Prisoners of War (US version 1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@10180 = 60</action> <!-- attack -->
            <action>maincpu.mb@10758 = 60</action> <!-- knife -->
            <action>maincpu.mb@10B7E = 60</action> <!-- bomb -->
            <action>maincpu.mb@10FC0 = 60</action> <!-- tank -->
            <action>maincpu.mb@11464 = 60</action> <!-- crane -->
        </script>
        <script state="off">
            <action>maincpu.mb@10180 = 6E</action>
            <action>maincpu.mb@10758 = 6E</action>
            <action>maincpu.mb@10B7E = 6E</action>
            <action>maincpu.mb@10FC0 = 6E</action>
            <action>maincpu.mb@11464 = 6E</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@147C = 6D</action> <!-- punch -->
            <action>maincpu.mb@1494 = 6D</action> <!-- kick -->
        </script>
        <script state="off">
            <action>maincpu.mb@147C = 66</action>
            <action>maincpu.mb@1494 = 66</action>
        </script>
    </cheat>

    <cheat desc="action speed up">
        <script state="on">
            <action>maincpu.mq@014D8 = 4EB9000193C06E00</action>
            <action>maincpu.mq@193C0 = 024300FFB1FC0004</action>
            <action>maincpu.mq@193C8 = 00606E0A0C2800FF</action>
            <action>maincpu.mq@193D0 = 002466024243B642</action>
            <action>maincpu.mq@193D8 = 4E75FFFFFFFFFFFF</action>
            <!--
            193C0 | 0243 00FF      : andi.w  #$ff, D3
            193C4 | B1FC 0004 0060 : cmpa.l  #$40060, A0    // check player or others
            193CA | 6E0A           : bgt     $193d6
            193CC | 0C28 00FF 0024 : cmpi.b  #-$1, ($24,A0) // check jump flag
            193D2 | 6602           : bne     $193d6
            193D4 | 4243           : clr.w   D3
            193D6 | B642           : cmp.w   D2, D3
            193D8 | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@014D8 = 024300FFB6426E00</action>
            <action>maincpu.mq@193C0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193C8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193D0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193D8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- 0x3a : boot jingle, 0x43 - 0x71 : music, 0x78 - 0xbf : sfx, 0xc0 - 0xd5 : sample -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@004BE = 4EF9000193E04A39</action>
            <action>maincpu.mq@193E0 = 41F90004000043F9</action>
            <action>maincpu.mq@193E8 = 0008000042101200</action>
            <action>maincpu.mq@193F0 = 10290001B20067F6</action>
            <action>maincpu.mq@193F8 = 0C0000FB66025310</action>
            <action>maincpu.mq@19400 = 0C0000F766025210</action>
            <action>maincpu.mq@19408 = 0C0000FD66040410</action>
            <action>maincpu.mq@19410 = 00100C0000FE6604</action>
            <action>maincpu.mq@19418 = 061000100C0000EF</action>
            <action>maincpu.mq@19420 = 660212900C0000DF</action>
            <action>maincpu.mq@19428 = 6602421160C0FFFF</action>
            <!--
            193E0 | 41F9 0004 0000 : lea     $40000.l, A0 // sound code address
            193E6 | 43F9 0008 0000 : lea     $80000.l, A1 // sound latch address
            193EC | 4210           : clr.b   (A0)         // initialize sound code
            193EE | 1200           : move.b  D0, D1
            193F0 | 1029 0001      : move.b  ($1,A1), D0  // read input ($80001)
            193F4 | B200           : cmp.b   D0, D1
            193F6 | 67F6           : beq     $193ee
            193F8 | 0C00 00FB      : cmpi.b  #-$5, D0
            193FC | 6602           : bne     $19400
            193FE | 5310           : subq.b  #1, (A0)     // decrease code -01
            19400 | 0C00 00F7      : cmpi.b  #-$9, D0
            19404 | 6602           : bne     $19408
            19406 | 5210           : addq.b  #1, (A0)     // increase code +01
            19408 | 0C00 00FD      : cmpi.b  #-$3, D0
            1940C | 6604           : bne     $19412
            1940E | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            19412 | 0C00 00FE      : cmpi.b  #-$2, D0
            19416 | 6604           : bne     $1941c
            19418 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            1941C | 0C00 00EF      : cmpi.b  #-$11, D0
            19420 | 6602           : bne     $19424
            19422 | 1290           : move.b  (A0), (A1)   // play sound
            19424 | 0C00 00DF      : cmpi.b  #-$21, D0
            19428 | 6602           : bne     $1942c
            1942A | 4211           : clr.b   (A1)         // stop sound
            1942C | 60C0           : bra     $193ee
            -->
            <action>soundcpu.md@0827 = 00E0D0CD        </action>
            <action>soundcpu.mq@E0D0 = 80D30F20A7F8003A</action>
            <action>soundcpu.mq@E0D8 = CD80D3803E0091CD</action>
            <action>soundcpu.mq@E0E0 = 32AF470000C30091</action>
            <action>soundcpu.mq@E0E8 = 78F12732013EF115</action>
            <action>soundcpu.mq@E0F0 = FFFFFFFFFFFFFFC9</action>
            <!--
            E0D0 | 3A 00 F8 : ld   a,($F800) // read sound code from maincpu
            E0D3 | A7       : and  a
            E0D4 | 20 0F    : jr   nz,$E0E5
            E0D6 | D3 80    : out  ($80),a   // reset sample
            E0D8 | CD 91 00 : call $0091
            E0DB | 3E 80    : ld   a,$80     // enable sample
            E0DD | D3 80    : out  ($80),a
            E0DF | CD 91 00 : call $0091
            E0E2 | C3 00 00 : jp   $0000     // reset soundcpu
            E0E5 | 47       : ld   b,a
            E0E6 | AF       : xor  a         // initialize sound flags
            E0E7 | 32 15 F1 : ld   ($F115),a
            E0EA | 3E 01    : ld   a,$01
            E0EC | 32 27 F1 : ld   ($F127),a
            E0EF | 78       : ld   a,b
            E0F0 | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- p.o.w. 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@004be = 4A39000E00004A39</action>
            <action> maincpu.mq@193E0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193E8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193F0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193F8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19400 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19408 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19410 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19418 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19420 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19428 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.md@00827 = 00F8003A        </action>
            <action>soundcpu.mq@0E0D0 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0D8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0E0 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0E8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0F0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action> maincpu.mw@045E = 0460</action> <!-- skip test -->
            <action> maincpu.mw@0470 = 57B8</action> <!-- skip result -->
            <action>soundcpu.mw@0B76 = 5A18</action>
        </script>
        <script state="off">
            <action> maincpu.mw@045E = 61B2</action>
            <action> maincpu.mw@0470 = 57BA</action>
            <action>soundcpu.mw@0B76 = 013E</action>
        </script>
    </cheat>

</mamecheat>
powa.xml

Code: Select all

<!-- P.O.W. - Prisoners of War (US version 1, mask ROM sprites) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@10180 = 60</action> <!-- attack -->
            <action>maincpu.mb@10758 = 60</action> <!-- knife -->
            <action>maincpu.mb@10B7E = 60</action> <!-- bomb -->
            <action>maincpu.mb@10FC0 = 60</action> <!-- tank -->
            <action>maincpu.mb@11464 = 60</action> <!-- crane -->
        </script>
        <script state="off">
            <action>maincpu.mb@10180 = 6E</action>
            <action>maincpu.mb@10758 = 6E</action>
            <action>maincpu.mb@10B7E = 6E</action>
            <action>maincpu.mb@10FC0 = 6E</action>
            <action>maincpu.mb@11464 = 6E</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@147C = 6D</action> <!-- punch -->
            <action>maincpu.mb@1494 = 6D</action> <!-- kick -->
        </script>
        <script state="off">
            <action>maincpu.mb@147C = 66</action>
            <action>maincpu.mb@1494 = 66</action>
        </script>
    </cheat>

    <cheat desc="action speed up">
        <script state="on">
            <action>maincpu.mq@014D8 = 4EB9000193C06E00</action>
            <action>maincpu.mq@193C0 = 024300FFB1FC0004</action>
            <action>maincpu.mq@193C8 = 00606E0A0C2800FF</action>
            <action>maincpu.mq@193D0 = 002466024243B642</action>
            <action>maincpu.mq@193D8 = 4E75FFFFFFFFFFFF</action>
            <!--
            193C0 | 0243 00FF      : andi.w  #$ff, D3
            193C4 | B1FC 0004 0060 : cmpa.l  #$40060, A0    // check player or others
            193CA | 6E0A           : bgt     $193d6
            193CC | 0C28 00FF 0024 : cmpi.b  #-$1, ($24,A0) // check jump flag
            193D2 | 6602           : bne     $193d6
            193D4 | 4243           : clr.w   D3
            193D6 | B642           : cmp.w   D2, D3
            193D8 | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@014D8 = 024300FFB6426E00</action>
            <action>maincpu.mq@193C0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193C8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193D0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193D8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- 0x3a : boot jingle, 0x43 - 0x71 : music, 0x78 - 0xbf : sfx, 0xc0 - 0xd5 : sample -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@004BE = 4EF9000193E04A39</action>
            <action>maincpu.mq@193E0 = 41F90004000043F9</action>
            <action>maincpu.mq@193E8 = 0008000042101200</action>
            <action>maincpu.mq@193F0 = 10290001B20067F6</action>
            <action>maincpu.mq@193F8 = 0C0000FB66025310</action>
            <action>maincpu.mq@19400 = 0C0000F766025210</action>
            <action>maincpu.mq@19408 = 0C0000FD66040410</action>
            <action>maincpu.mq@19410 = 00100C0000FE6604</action>
            <action>maincpu.mq@19418 = 061000100C0000EF</action>
            <action>maincpu.mq@19420 = 660212900C0000DF</action>
            <action>maincpu.mq@19428 = 6602421160C0FFFF</action>
            <!--
            193E0 | 41F9 0004 0000 : lea     $40000.l, A0 // sound code address
            193E6 | 43F9 0008 0000 : lea     $80000.l, A1 // sound latch address
            193EC | 4210           : clr.b   (A0)         // initialize sound code
            193EE | 1200           : move.b  D0, D1
            193F0 | 1029 0001      : move.b  ($1,A1), D0  // read input ($80001)
            193F4 | B200           : cmp.b   D0, D1
            193F6 | 67F6           : beq     $193ee
            193F8 | 0C00 00FB      : cmpi.b  #-$5, D0
            193FC | 6602           : bne     $19400
            193FE | 5310           : subq.b  #1, (A0)     // decrease code -01
            19400 | 0C00 00F7      : cmpi.b  #-$9, D0
            19404 | 6602           : bne     $19408
            19406 | 5210           : addq.b  #1, (A0)     // increase code +01
            19408 | 0C00 00FD      : cmpi.b  #-$3, D0
            1940C | 6604           : bne     $19412
            1940E | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            19412 | 0C00 00FE      : cmpi.b  #-$2, D0
            19416 | 6604           : bne     $1941c
            19418 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            1941C | 0C00 00EF      : cmpi.b  #-$11, D0
            19420 | 6602           : bne     $19424
            19422 | 1290           : move.b  (A0), (A1)   // play sound
            19424 | 0C00 00DF      : cmpi.b  #-$21, D0
            19428 | 6602           : bne     $1942c
            1942A | 4211           : clr.b   (A1)         // stop sound
            1942C | 60C0           : bra     $193ee
            -->
            <action>soundcpu.md@0827 = 00E0D0CD        </action>
            <action>soundcpu.mq@E0D0 = 80D30F20A7F8003A</action>
            <action>soundcpu.mq@E0D8 = CD80D3803E0091CD</action>
            <action>soundcpu.mq@E0E0 = 32AF470000C30091</action>
            <action>soundcpu.mq@E0E8 = 78F12732013EF115</action>
            <action>soundcpu.mq@E0F0 = FFFFFFFFFFFFFFC9</action>
            <!--
            E0D0 | 3A 00 F8 : ld   a,($F800) // read sound code from maincpu
            E0D3 | A7       : and  a
            E0D4 | 20 0F    : jr   nz,$E0E5
            E0D6 | D3 80    : out  ($80),a   // reset sample
            E0D8 | CD 91 00 : call $0091
            E0DB | 3E 80    : ld   a,$80     // enable sample
            E0DD | D3 80    : out  ($80),a
            E0DF | CD 91 00 : call $0091
            E0E2 | C3 00 00 : jp   $0000     // reset soundcpu
            E0E5 | 47       : ld   b,a
            E0E6 | AF       : xor  a         // initialize sound flags
            E0E7 | 32 15 F1 : ld   ($F115),a
            E0EA | 3E 01    : ld   a,$01
            E0EC | 32 27 F1 : ld   ($F127),a
            E0EF | 78       : ld   a,b
            E0F0 | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- p.o.w. 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@004BE = 4A39000E00004A39</action>
            <action> maincpu.mq@193E0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193E8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193F0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193F8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19400 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19408 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19410 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19418 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19420 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19428 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.md@00827 = 00F8003A        </action>
            <action>soundcpu.mq@0E0D0 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0D8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0E0 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0E8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0F0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action> maincpu.mw@045E = 0460</action> <!-- skip test -->
            <action> maincpu.mw@0470 = 57B8</action> <!-- skip result -->
            <action>soundcpu.mw@0B76 = 5A18</action>
        </script>
        <script state="off">
            <action> maincpu.mw@045E = 61B2</action>
            <action> maincpu.mw@0470 = 57BA</action>
            <action>soundcpu.mw@0B76 = 013E</action>
        </script>
    </cheat>

</mamecheat>
powj.xml

Code: Select all

<!-- Datsugoku - Prisoners of War (Japan) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@101B6 = 60</action> <!-- attack -->
            <action>maincpu.mb@1078E = 60</action> <!-- knife -->
            <action>maincpu.mb@10BB4 = 60</action> <!-- bomb -->
            <action>maincpu.mb@10FF6 = 60</action> <!-- tank -->
            <action>maincpu.mb@1149A = 60</action> <!-- crane -->
        </script>
        <script state="off">
            <action>maincpu.mb@101B6 = 6E</action>
            <action>maincpu.mb@1078E = 6E</action>
            <action>maincpu.mb@10BB4 = 6E</action>
            <action>maincpu.mb@10FF6 = 6E</action>
            <action>maincpu.mb@1149A = 6E</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@0147C = 6D</action> <!-- punch -->
            <action>maincpu.mb@01494 = 6D</action> <!-- kick -->
        </script>
        <script state="off">
            <action>maincpu.mb@0147C = 66</action>
            <action>maincpu.mb@01494 = 66</action>
        </script>
    </cheat>

    <cheat desc="action speed up">
        <script state="on">
            <action>maincpu.mq@014D8 = 4EB9000194106E00</action>
            <action>maincpu.mq@19410 = 024300FFB1FC0004</action>
            <action>maincpu.mq@19418 = 00606E0A0C2800FF</action>
            <action>maincpu.mq@19420 = 002466024243B642</action>
            <action>maincpu.mq@19428 = 4E75FFFFFFFFFFFF</action>
            <!--
            19410 | 0243 00FF      : andi.w  #$ff, D3
            19414 | B1FC 0004 0060 : cmpa.l  #$40060, A0    // check player or others
            1941A | 6E0A           : bgt     $19426
            1941C | 0C28 00FF 0024 : cmpi.b  #-$1, ($24,A0) // check jump flag
            19422 | 6602           : bne     $19426
            19424 | 4243           : clr.w   D3
            19426 | B642           : cmp.w   D2, D3
            19428 | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@014D8 = 024300FFB6426E00</action>
            <action>maincpu.mq@19410 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@19418 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@19420 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@19428 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- 0x3a : boot jingle, 0x43 - 0x71 : music, 0x78 - 0xbf : sfx, 0xc0 - 0xd5 : sample -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@004BE = 4EF9000194304A39</action>
            <action>maincpu.mq@19430 = 41F90004000043F9</action>
            <action>maincpu.mq@19438 = 0008000042101200</action>
            <action>maincpu.mq@19440 = 10290001B20067F6</action>
            <action>maincpu.mq@19448 = 0C0000FB66025310</action>
            <action>maincpu.mq@19450 = 0C0000F766025210</action>
            <action>maincpu.mq@19458 = 0C0000FD66040410</action>
            <action>maincpu.mq@19460 = 00100C0000FE6604</action>
            <action>maincpu.mq@19468 = 061000100C0000EF</action>
            <action>maincpu.mq@19470 = 660212900C0000DF</action>
            <action>maincpu.mq@19478 = 6602421160C0FFFF</action>
            <!--
            19430 | 41F9 0004 0000 : lea     $40000.l, A0 // sound code address
            19436 | 43F9 0008 0000 : lea     $80000.l, A1 // sound latch address
            1943C | 4210           : clr.b   (A0)         // initialize sound code
            1943E | 1200           : move.b  D0, D1
            19440 | 1029 0001      : move.b  ($1,A1), D0  // read input ($80001)
            19444 | B200           : cmp.b   D0, D1
            19446 | 67F6           : beq     $1943e
            19448 | 0C00 00FB      : cmpi.b  #-$5, D0
            1944C | 6602           : bne     $19450
            1944E | 5310           : subq.b  #1, (A0)     // decrease code -01
            19450 | 0C00 00F7      : cmpi.b  #-$9, D0
            19454 | 6602           : bne     $19458
            19456 | 5210           : addq.b  #1, (A0)     // increase code +01
            19458 | 0C00 00FD      : cmpi.b  #-$3, D0
            1945C | 6604           : bne     $19462
            1945E | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            19462 | 0C00 00FE      : cmpi.b  #-$2, D0
            19466 | 6604           : bne     $1946c
            19468 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            1946C | 0C00 00EF      : cmpi.b  #-$11, D0
            19470 | 6602           : bne     $19474
            19472 | 1290           : move.b  (A0), (A1)   // play sound
            19474 | 0C00 00DF      : cmpi.b  #-$21, D0
            19478 | 6602           : bne     $1947c
            1947A | 4211           : clr.b   (A1)         // stop sound
            1947C | 60C0           : bra     $1943e
            -->
            <action>soundcpu.md@0827 = 00E0D0CD        </action>
            <action>soundcpu.mq@E0D0 = 80D30F20A7F8003A</action>
            <action>soundcpu.mq@E0D8 = CD80D3803E0091CD</action>
            <action>soundcpu.mq@E0E0 = 32AF470000C30091</action>
            <action>soundcpu.mq@E0E8 = 78F12732013EF115</action>
            <action>soundcpu.mq@E0F0 = FFFFFFFFFFFFFFC9</action>
            <!--
            E0D0 | 3A 00 F8 : ld   a,($F800) // read sound code from maincpu
            E0D3 | A7       : and  a
            E0D4 | 20 0F    : jr   nz,$E0E5
            E0D6 | D3 80    : out  ($80),a   // reset sample
            E0D8 | CD 91 00 : call $0091
            E0DB | 3E 80    : ld   a,$80     // enable sample
            E0DD | D3 80    : out  ($80),a
            E0DF | CD 91 00 : call $0091
            E0E2 | C3 00 00 : jp   $0000     // reset soundcpu
            E0E5 | 47       : ld   b,a
            E0E6 | AF       : xor  a         // initialize sound flags
            E0E7 | 32 15 F1 : ld   ($F115),a
            E0EA | 3E 01    : ld   a,$01
            E0EC | 32 27 F1 : ld   ($F127),a
            E0EF | 78       : ld   a,b
            E0F0 | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- datsugoku 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@004BE = 4A39000E00004A39</action>
            <action> maincpu.mq@19430 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19438 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19440 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19448 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19450 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19458 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19460 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19468 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19470 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19478 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.md@00827 = 00F8003A        </action>
            <action>soundcpu.mq@0E0D0 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0D8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0E0 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0E8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0F0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action> maincpu.mw@045E = 0460</action> <!-- skip test -->
            <action> maincpu.mw@0470 = 57CE</action> <!-- skip result -->
            <action>soundcpu.mw@0B76 = 5A18</action>
        </script>
        <script state="off">
            <action> maincpu.mw@045E = 61E6</action>
            <action> maincpu.mw@0470 = 57D0</action>
            <action>soundcpu.mw@0B76 = 013E</action>
        </script>
    </cheat>

</mamecheat>
powb.xml

Code: Select all

<!-- P.O.W. - Prisoners of War (bootleg of US version 1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@10180 = 60</action> <!-- attack -->
            <action>maincpu.mb@10758 = 60</action> <!-- knife -->
            <action>maincpu.mb@10B7E = 60</action> <!-- bomb -->
            <action>maincpu.mb@10FC0 = 60</action> <!-- tank -->
            <action>maincpu.mb@11464 = 60</action> <!-- crane -->
        </script>
        <script state="off">
            <action>maincpu.mb@10180 = 6E</action>
            <action>maincpu.mb@10758 = 6E</action>
            <action>maincpu.mb@10B7E = 6E</action>
            <action>maincpu.mb@10FC0 = 6E</action>
            <action>maincpu.mb@11464 = 6E</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@147C = 6D</action> <!-- punch -->
            <action>maincpu.mb@1494 = 6D</action> <!-- kick -->
        </script>
        <script state="off">
            <action>maincpu.mb@147C = 66</action>
            <action>maincpu.mb@1494 = 66</action>
        </script>
    </cheat>

    <cheat desc="action speed up">
        <script state="on">
            <action>maincpu.mq@014D8 = 4EB9000193C06E00</action>
            <action>maincpu.mq@193C0 = 024300FFB1FC0004</action>
            <action>maincpu.mq@193C8 = 00606E0A0C2800FF</action>
            <action>maincpu.mq@193D0 = 002466024243B642</action>
            <action>maincpu.mq@193D8 = 4E75FFFFFFFFFFFF</action>
            <!--
            193C0 | 0243 00FF      : andi.w  #$ff, D3
            193C4 | B1FC 0004 0060 : cmpa.l  #$40060, A0    // check player or others
            193CA | 6E0A           : bgt     $193d6
            193CC | 0C28 00FF 0024 : cmpi.b  #-$1, ($24,A0) // check jump flag
            193D2 | 6602           : bne     $193d6
            193D4 | 4243           : clr.w   D3
            193D6 | B642           : cmp.w   D2, D3
            193D8 | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@014D8 = 024300FFB6426E00</action>
            <action>maincpu.mq@193C0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193C8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193D0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@193D8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- 0x3a : boot jingle, 0x43 - 0x71 : music, 0x78 - 0xbf : sfx, 0xc0 - 0xd5 : sample -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@004BE = 4EF9000193E04A39</action>
            <action>maincpu.mq@193E0 = 41F90004000043F9</action>
            <action>maincpu.mq@193E8 = 0008000042101200</action>
            <action>maincpu.mq@193F0 = 10290001B20067F6</action>
            <action>maincpu.mq@193F8 = 0C0000FB66025310</action>
            <action>maincpu.mq@19400 = 0C0000F766025210</action>
            <action>maincpu.mq@19408 = 0C0000FD66040410</action>
            <action>maincpu.mq@19410 = 00100C0000FE6604</action>
            <action>maincpu.mq@19418 = 061000100C0000EF</action>
            <action>maincpu.mq@19420 = 660212900C0000DF</action>
            <action>maincpu.mq@19428 = 6602421160C0FFFF</action>
            <!--
            193E0 | 41F9 0004 0000 : lea     $40000.l, A0 // sound code address
            193E6 | 43F9 0008 0000 : lea     $80000.l, A1 // sound latch address
            193EC | 4210           : clr.b   (A0)         // initialize sound code
            193EE | 1200           : move.b  D0, D1
            193F0 | 1029 0001      : move.b  ($1,A1), D0  // read input ($80001)
            193F4 | B200           : cmp.b   D0, D1
            193F6 | 67F6           : beq     $193ee
            193F8 | 0C00 00FB      : cmpi.b  #-$5, D0
            193FC | 6602           : bne     $19400
            193FE | 5310           : subq.b  #1, (A0)     // decrease code -01
            19400 | 0C00 00F7      : cmpi.b  #-$9, D0
            19404 | 6602           : bne     $19408
            19406 | 5210           : addq.b  #1, (A0)     // increase code +01
            19408 | 0C00 00FD      : cmpi.b  #-$3, D0
            1940C | 6604           : bne     $19412
            1940E | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            19412 | 0C00 00FE      : cmpi.b  #-$2, D0
            19416 | 6604           : bne     $1941c
            19418 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            1941C | 0C00 00EF      : cmpi.b  #-$11, D0
            19420 | 6602           : bne     $19424
            19422 | 1290           : move.b  (A0), (A1)   // play sound
            19424 | 0C00 00DF      : cmpi.b  #-$21, D0
            19428 | 6602           : bne     $1942c
            1942A | 4211           : clr.b   (A1)         // stop sound
            1942C | 60C0           : bra     $193ee
            -->
            <action>soundcpu.md@0827 = 00E0D0CD        </action>
            <action>soundcpu.mq@E0D0 = 80D30F20A7F8003A</action>
            <action>soundcpu.mq@E0D8 = CD80D3803E0091CD</action>
            <action>soundcpu.mq@E0E0 = 32AF470000C30091</action>
            <action>soundcpu.mq@E0E8 = 78F12732013EF115</action>
            <action>soundcpu.mq@E0F0 = FFFFFFFFFFFFFFC9</action>
            <!--
            E0D0 | 3A 00 F8 : ld   a,($F800) // read sound code from maincpu
            E0D3 | A7       : and  a
            E0D4 | 20 0F    : jr   nz,$E0E5
            E0D6 | D3 80    : out  ($80),a   // reset sample
            E0D8 | CD 91 00 : call $0091
            E0DB | 3E 80    : ld   a,$80     // enable sample
            E0DD | D3 80    : out  ($80),a
            E0DF | CD 91 00 : call $0091
            E0E2 | C3 00 00 : jp   $0000     // reset soundcpu
            E0E5 | 47       : ld   b,a
            E0E6 | AF       : xor  a         // initialize sound flags
            E0E7 | 32 15 F1 : ld   ($F115),a
            E0EA | 3E 01    : ld   a,$01
            E0EC | 32 27 F1 : ld   ($F127),a
            E0EF | 78       : ld   a,b
            E0F0 | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- p.o.w. 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@004BE = 4A39000E00004A39</action>
            <action> maincpu.mq@193E0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193E8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193F0 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@193F8 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19400 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19408 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19410 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19418 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19420 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@19428 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.md@00827 = 00F8003A        </action>
            <action>soundcpu.mq@0E0D0 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0D8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0E0 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0E8 = FFFFFFFFFFFFFFFF</action>
            <action>soundcpu.mq@0E0F0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action> maincpu.mw@045E = 0460</action> <!-- skip test -->
            <action> maincpu.mw@0470 = 57B8</action> <!-- skip result -->
            <action>soundcpu.mw@0B76 = 5A18</action>
        </script>
        <script state="off">
            <action> maincpu.mw@045E = 61B2</action>
            <action> maincpu.mw@0470 = 57BA</action>
            <action>soundcpu.mw@0B76 = 013E</action>
        </script>
    </cheat>

</mamecheat>
sound test mode : Improved routine for sound cpu. Now you can stop "all" sound (music, sfx and sample) by sound stop button.
Post Reply