Page 1 of 1

[arabian]+ Arabian

Posted: Thu Jun 19, 2025 9:36 am
by jman
arabian.xml

Code: Select all

<!-- Arabian -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@4264 = 18</action>
            <action>maincpu.mb@4602 = C9</action>
            <action>maincpu.mb@4624 = C9</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4264 = 38</action>
            <action>maincpu.mb@4602 = D0</action>
            <action>maincpu.mb@4624 = D0</action>
        </script>
    </cheat>

    <cheat desc="rapid fire">
        <script state="on">
            <action>maincpu.mw@172C = 7DF0            </action>
            <action>maincpu.mq@7DF0 = 10E6D3513A1444CD</action>
            <action>maincpu.mq@7DF8 = E67E344FD7A021C8</action>
            <action>maincpu.mq@7E00 = FFC947B07977C001</action>
            <!--
            7DF0 | CD 44 14 : call $1444
            7DF3 | 3A 51 D3 : ld   a,($D351)
            7DF6 | E6 10    : and  $10
            7DF8 | C8       : ret  z
            7DF9 | 21 A0 D7 : ld   hl,$D7A0
            7DFC | 4F       : ld   c,a
            7DFD | 34       : inc  (hl)
            7DFE | 7E       : ld   a,(hl)
            7DFF | E6 01    : and  $01
            7E01 | C0       : ret  nz
            7E02 | 77       : ld   (hl),a
            7E03 | 79       : ld   a,c
            7E04 | B0       : or   b
            7E05 | 47       : ld   b,a
            7E06 | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@172C = 1444            </action>
            <action>maincpu.mq@7DF0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7DF8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E00 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="action speed up">
        <script state="on">
            <action>maincpu.mb@170F = 00</action>
            <action>maincpu.mb@188E = 00</action>
            <action>maincpu.mb@190D = 00</action>
            <action>maincpu.mb@1A62 = 00</action>
            <action>maincpu.mb@1B7F = 02</action>
        </script>
        <script state="off">
            <action>maincpu.mb@170F = 03</action>
            <action>maincpu.mb@188E = 07</action>
            <action>maincpu.mb@190D = 03</action>
            <action>maincpu.mb@1A62 = 08</action>
            <action>maincpu.mb@1B7F = 06</action>
        </script>
    </cheat>

    <cheat desc="multiple jump (test)">
        <script state="on">
            <action>maincpu.mw@1719 = 7E08            </action> <!-- fall down -->
            <action>maincpu.mw@173C = 7E0D            </action> <!-- jump -->
            <action>maincpu.mq@7E08 = 1C1511031817D011</action>
            <action>maincpu.mq@7E10 = D7A121D11444CDD5</action>
            <action>maincpu.mq@7E18 = A6A877D3513A477E</action>
            <action>maincpu.mq@7E20 = FFE9EB1E08C257CB</action>
            <!--
            7E08 | 11 D0 17 : ld   de,$17D0  // fall down
            7E0B | 18 03    : jr   $7E10
            7E0D | 11 15 1C : ld   de,$1C15  // jump
            7E10 | D5       : push de
            7E11 | CD 44 14 : call $1444     // check input
            7E14 | D1       : pop  de
            7E15 | 21 A1 D7 : ld   hl,$D7A1
            7E18 | 7E       : ld   a,(hl)
            7E19 | 47       : ld   b,a
            7E1A | 3A 51 D3 : ld   a,($D351)
            7E1D | 77       : ld   (hl),a
            7E1E | A8       : xor  b
            7E1F | A6       : and  (hl)
            7E20 | CB 57    : bit  2,a
            7E22 | C2 08 1E : jp   nz,$1E08
            7E25 | EB       : ex   de,hl
            7E26 | E9       : jp   (hl)
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@1719 = 17D0            </action>
            <action>maincpu.mw@173C = 1C15            </action>
            <action>maincpu.mq@7E08 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E18 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E20 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xFF">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@3F39 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@3F39 = 3E</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop sound code 0x14 by sound stop button -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@00F0 = 7E28            </action>
            <action>maincpu.mq@7E28 = D7F021D369325A3E</action>
            <action>maincpu.mq@7E30 = E9CB02284ECB000E</action>
            <action>maincpu.mq@7E38 = CB234FB10FE67E23</action>
            <action>maincpu.mq@7E40 = 47B879E1CB022846</action>
            <action>maincpu.mq@7E48 = 2002FED10021E328</action>
            <action>maincpu.mq@7E50 = FE34012001FE3501</action>
            <action>maincpu.mq@7E58 = FE0618F03E042008</action>
            <action>maincpu.mq@7E60 = 787786103E052004</action>
            <action>maincpu.mq@7E68 = 14217E48232010FE</action>
            <action>maincpu.mq@7E70 = 0406D71021C6CBD7</action>
            <action>maincpu.mq@7E78 = 1009D623073809FE</action>
            <action>maincpu.mq@7E80 = AF470728A70A18F7</action>
            <action>maincpu.mq@7E88 = FE784177FD101737</action>
            <action>maincpu.mq@7E90 = C16E3BCDC5052020</action>
            <action>maincpu.mq@7E98 = FFFFFFFFFFFF9318</action>
            <!--
            7E28 | 3E 5A    : ld   a,$5A
            7E2A | 32 69 D3 : ld   ($D369),a // enable sound code check in interrupt
            7E2D | 21 F0 D7 : ld   hl,$D7F0
            7E30 | 0E 00    : ld   c,$00
            7E32 | CB 4E    : bit  1,(hl)    // read start button
            7E34 | 28 02    : jr   z,$7E38
            7E36 | CB E9    : set  5,c
            7E38 | 23       : inc  hl
            7E39 | 7E       : ld   a,(hl)    // read lever input
            7E3A | E6 0F    : and  $0F
            7E3C | B1       : or   c
            7E3D | 4F       : ld   c,a
            7E3E | 23       : inc  hl
            7E3F | CB 46    : bit  0,(hl)    // read button
            7E41 | 28 02    : jr   z,$7E45
            7E43 | CB E1    : set  4,c
            7E45 | 79       : ld   a,c
            7E46 | B8       : cp   b
            7E47 | 47       : ld   b,a
            7E48 | 28 E3    : jr   z,$7E2D
            7E4A | 21 00 D1 : ld   hl,$D100
            7E4D | FE 02    : cp   $02
            7E4F | 20 01    : jr   nz,$7E52
            7E51 | 35       : dec  (hl)      // decrease code -01
            7E52 | FE 01    : cp   $01
            7E54 | 20 01    : jr   nz,$7E57
            7E56 | 34       : inc  (hl)      // increase code +01
            7E57 | FE 08    : cp   $08
            7E59 | 20 04    : jr   nz,$7E5F
            7E5B | 3E F0    : ld   a,$F0     // decrease code -10
            7E5D | 18 06    : jr   $7E65
            7E5F | FE 04    : cp   $04
            7E61 | 20 05    : jr   nz,$7E68
            7E63 | 3E 10    : ld   a,$10     // increase code +10
            7E65 | 86       : add  a,(hl)
            7E66 | 77       : ld   (hl),a
            7E67 | 78       : ld   a,b
            7E68 | FE 10    : cp   $10
            7E6A | 20 23    : jr   nz,$7E8F
            7E6C | 48       : ld   c,b       // play sound
            7E6D | 7E       : ld   a,(hl)    // read sound code
            7E6E | 21 14 D7 : ld   hl,$D714  // set sound flag
            7E71 | CB C6    : set  0,(hl)
            7E73 | 21 10 D7 : ld   hl,$D710
            7E76 | 06 04    : ld   b,$04     // calculate sound address
            7E78 | FE 09    : cp   $09
            7E7A | 38 07    : jr   c,$7E83
            7E7C | 23       : inc  hl
            7E7D | D6 09    : sub  $09
            7E7F | 10 F7    : djnz $7E78
            7E81 | 18 0A    : jr   $7E8D
            7E83 | A7       : and  a
            7E84 | 28 07    : jr   z,$7E8D
            7E86 | 47       : ld   b,a       // set sound play bit
            7E87 | AF       : xor  a
            7E88 | 37       : scf
            7E89 | 17       : rla
            7E8A | 10 FD    : djnz $7E89
            7E8C | 77       : ld   (hl),a
            7E8D | 41       : ld   b,c       // restore input value
            7E8E | 78       : ld   a,b
            7E8F | FE 20    : cp   $20
            7E91 | 20 05    : jr   nz,$7E98
            7E93 | C5       : push bc
            7E94 | CD 3B 6E : call $6E3B     // stop sound
            7E97 | C1       : pop  bc
            7E98 | 18 93    : jr   $7E2D
            -->
        </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="1P start : 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@D100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@00F0 = 7CF8            </action>
            <action>maincpu.mq@7E28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E60 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E68 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E70 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E78 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E80 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E88 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E90 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E98 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
arabiana.xml

Code: Select all

<!-- Arabian (Atari) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@422C = 18</action>
            <action>maincpu.mb@45D1 = C9</action>
            <action>maincpu.mb@45F3 = C9</action>
        </script>
        <script state="off">
            <action>maincpu.mb@422C = 38</action>
            <action>maincpu.mb@45D1 = D0</action>
            <action>maincpu.mb@45F3 = D0</action>
        </script>
    </cheat>

    <cheat desc="rapid fire">
        <script state="on">
            <action>maincpu.mw@1716 = 7D20            </action>
            <action>maincpu.mq@7D20 = 10E6D3513A1445CD</action>
            <action>maincpu.mq@7D28 = E67E344FD7A021C8</action>
            <action>maincpu.mq@7D30 = FFC947B07977C001</action>
            <!--
            7D20 | CD 45 14 : call $1445
            7D23 | 3A 51 D3 : ld   a,($D351)
            7D26 | E6 10    : and  $10
            7D28 | C8       : ret  z
            7D29 | 21 A0 D7 : ld   hl,$D7A0
            7D2C | 4F       : ld   c,a
            7D2D | 34       : inc  (hl)
            7D2E | 7E       : ld   a,(hl)
            7D2F | E6 01    : and  $01
            7D31 | C0       : ret  nz
            7D32 | 77       : ld   (hl),a
            7D33 | 79       : ld   a,c
            7D34 | B0       : or   b
            7D35 | 47       : ld   b,a
            7D36 | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@1716 = 1445            </action>
            <action>maincpu.mq@7D20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7D28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7D30 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="action speed up">
        <script state="on">
            <action>maincpu.mb@16F9 = 00</action>
            <action>maincpu.mb@1873 = 00</action>
            <action>maincpu.mb@18F2 = 00</action>
            <action>maincpu.mb@1A2F = 00</action>
            <action>maincpu.mb@1B4C = 02</action>
        </script>
        <script state="off">
            <action>maincpu.mb@16F9 = 03</action>
            <action>maincpu.mb@1873 = 07</action>
            <action>maincpu.mb@18F2 = 03</action>
            <action>maincpu.mb@1A2F = 08</action>
            <action>maincpu.mb@1B4C = 06</action>
        </script>
    </cheat>

    <cheat desc="multiple jump (test)">
        <script state="on">
            <action>maincpu.mw@1703 = 7D38            </action> <!-- fall down -->
            <action>maincpu.mw@1726 = 7D3D            </action> <!-- jump -->
            <action>maincpu.mq@7D38 = 1BDC11031817BA11</action>
            <action>maincpu.mq@7D40 = D7A121D11445CDD5</action>
            <action>maincpu.mq@7D48 = A6A877D3513A477E</action>
            <action>maincpu.mq@7D50 = FFE9EB1DCCC257CB</action>
            <!--
            7D38 | 11 BA 17 : ld   de,$17BA  // fall down
            7D3B | 18 03    : jr   $7D40
            7D3D | 11 DC 1B : ld   de,$1BDC  // jump
            7D40 | D5       : push de
            7D41 | CD 45 14 : call $1445     // check input
            7D44 | D1       : pop  de
            7D45 | 21 A1 D7 : ld   hl,$D7A1
            7D48 | 7E       : ld   a,(hl)
            7D49 | 47       : ld   b,a
            7D4A | 3A 51 D3 : ld   a,($D351)
            7D4D | 77       : ld   (hl),a
            7D4E | A8       : xor  b
            7D4F | A6       : and  (hl)
            7D50 | CB 57    : bit  2,a
            7D52 | C2 CC 1D : jp   nz,$1DCC
            7D55 | EB       : ex   de,hl
            7D56 | E9       : jp   (hl)
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@1703 = 17BA            </action>
            <action>maincpu.mw@1726 = 1BDC            </action>
            <action>maincpu.mq@7D38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7D40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7D48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7D50 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0xFF">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@3F14 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@3F14 = 3E</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop sound code 0x14 by sound stop button -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@00F0 = 7D58            </action>
            <action>maincpu.mq@7D58 = D7F021D369325A3E</action>
            <action>maincpu.mq@7D60 = E9CB02284ECB000E</action>
            <action>maincpu.mq@7D68 = CB234FB10FE67E23</action>
            <action>maincpu.mq@7D70 = 47B879E1CB022846</action>
            <action>maincpu.mq@7D78 = 2002FED10021E328</action>
            <action>maincpu.mq@7D80 = FE34012001FE3501</action>
            <action>maincpu.mq@7D88 = FE0618F03E042008</action>
            <action>maincpu.mq@7D90 = 787786103E052004</action>
            <action>maincpu.mq@7D98 = 14217E48232010FE</action>
            <action>maincpu.mq@7DA0 = 0406D71021C6CBD7</action>
            <action>maincpu.mq@7DA8 = 1009D623073809FE</action>
            <action>maincpu.mq@7DB0 = AF470728A70A18F7</action>
            <action>maincpu.mq@7DB8 = FE784177FD101737</action>
            <action>maincpu.mq@7DC0 = C16DFBCDC5052020</action>
            <action>maincpu.mq@7DC8 = FFFFFFFFFFFF9318</action>
            <!--
            7D58 | 3E 5A    : ld   a,$5A
            7D5A | 32 69 D3 : ld   ($D369),a // enable sound code check in interrupt
            7D5D | 21 F0 D7 : ld   hl,$D7F0
            7D60 | 0E 00    : ld   c,$00
            7D62 | CB 4E    : bit  1,(hl)    // read start button
            7D64 | 28 02    : jr   z,$7D68
            7D66 | CB E9    : set  5,c
            7D68 | 23       : inc  hl
            7D69 | 7E       : ld   a,(hl)    // read lever input
            7D6A | E6 0F    : and  $0F
            7D6C | B1       : or   c
            7D6D | 4F       : ld   c,a
            7D6E | 23       : inc  hl
            7D6F | CB 46    : bit  0,(hl)    // read button
            7D71 | 28 02    : jr   z,$7D75
            7D73 | CB E1    : set  4,c
            7D75 | 79       : ld   a,c
            7D76 | B8       : cp   b
            7D77 | 47       : ld   b,a
            7D78 | 28 E3    : jr   z,$7D5D
            7D7A | 21 00 D1 : ld   hl,$D100
            7D7D | FE 02    : cp   $02
            7D7F | 20 01    : jr   nz,$7D82
            7D81 | 35       : dec  (hl)      // decrease code -01
            7D82 | FE 01    : cp   $01
            7D84 | 20 01    : jr   nz,$7D87
            7D86 | 34       : inc  (hl)      // increase code +01
            7D87 | FE 08    : cp   $08
            7D89 | 20 04    : jr   nz,$7D8F
            7D8B | 3E F0    : ld   a,$F0     // decrease code -10
            7D8D | 18 06    : jr   $7D95
            7D8F | FE 04    : cp   $04
            7D91 | 20 05    : jr   nz,$7D98
            7D93 | 3E 10    : ld   a,$10     // increase code +10
            7D95 | 86       : add  a,(hl)
            7D96 | 77       : ld   (hl),a
            7D97 | 78       : ld   a,b
            7D98 | FE 10    : cp   $10
            7D9A | 20 23    : jr   nz,$7DBF
            7D9C | 48       : ld   c,b       // play sound
            7D9D | 7E       : ld   a,(hl)    // read sound code
            7D9E | 21 14 D7 : ld   hl,$D714  // set sound flag
            7DA1 | CB C6    : set  0,(hl)
            7DA3 | 21 10 D7 : ld   hl,$D710
            7DA6 | 06 04    : ld   b,$04     // calculate sound address
            7DA8 | FE 09    : cp   $09
            7DAA | 38 07    : jr   c,$7DB3
            7DAC | 23       : inc  hl
            7DAD | D6 09    : sub  $09
            7DAF | 10 F7    : djnz $7DA8
            7DB1 | 18 0A    : jr   $7DBD
            7DB3 | A7       : and  a
            7DB4 | 28 07    : jr   z,$7DBD
            7DB6 | 47       : ld   b,a       // set sound play bit
            7DB7 | AF       : xor  a
            7DB8 | 37       : scf
            7DB9 | 17       : rla
            7DBA | 10 FD    : djnz $7DB9
            7DBC | 77       : ld   (hl),a
            7DBD | 41       : ld   b,c       // restore input value
            7DBE | 78       : ld   a,b
            7DBF | FE 20    : cp   $20
            7DC1 | 20 05    : jr   nz,$7DC8
            7DC3 | C5       : push bc
            7DC4 | CD FB 6D : call $6DFB     // stop sound
            7DC7 | C1       : pop  bc
            7DC8 | 18 93    : jr   $7D5D
            -->
        </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="1P start : 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@D100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@00F0 = 7C25            </action>
            <action>maincpu.mq@7E28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E60 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E68 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E70 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E78 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E80 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E88 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E90 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7E98 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
  • "no hit" : Player character will die when fall down from high platform.
  • "multiple jump" : Test code. You can't land on upper step by multiple jumps.
  • "sound test mode" : You can't stop sound code 0x14 by sound stop button.