[hal21j] HAL21

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

[hal21j] HAL21

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>sub.mb@022e = c9</action>
    </script>
    <script state="off">
        <action>sub.mb@022e = c0</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@4295 = 01</action>
    </script>
    <script state="off">
        <action>maincpu.mb@4295 = 0a</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter min="0x01" max="0x05" step="0x01" />
    <script state="on">
        <action>maincpu.md@410e =         067ee0cd</action> <!-- x position -->
        <action>maincpu.md@4153 =         067ee0cd</action> <!-- y position -->
        <action>maincpu.mq@7ee0 = ebf2003e0728a77e</action>
        <action>maincpu.mq@7ee8 = ffc979cb4f44ed7e</action>
        <!--
        7ee0 | 7e       : ld   a,(hl)
        7ee1 | a7       : and  a
        7ee2 | 28 07    : jr   z,$7eeb
        7ee4 | 3e xx    : ld   a,$xx
        7ee6 | f2 eb 7e : jp   p,$7eeb
        7ee9 | ed 44    : neg
        7eeb | 4f       : ld   c,a
        7eec | cb 79    : bit  7,c
        7eee | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@7ee5 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@410e =         0679cb4e</action>
        <action>maincpu.md@4153 =         0679cb4e</action>
        <action>maincpu.mq@7ee0 = ffffffffffffffff</action>
        <action>maincpu.mq@7ee8 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="bullet speed">
    <parameter>
        <item value="0x06">01 (slow)</item>
        <item value="0x0c">02       </item>
        <item value="0x12">03       </item>
        <item value="0x18">04       </item>
        <item value="0x1e">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@2937 =         287ef0cd</action>
        <action>maincpu.mq@7ef0 = 022012fe007edd5e</action>
        <action>maincpu.mq@7ef8 = ffffffc97bcb0c1e</action>
        <!--
        7ef0 | 5e       : ld  e,(hl)
        7ef1 | dd 7e 00 : ld  a,(ix+$00)
        7ef4 | fe 12    : cp  $12
        7ef6 | 20 02    : jr  nz,$7efa
        7ef8 | 1e xx    : ld  e,$xx
        7efa | cb 7b    : bit 7,e
        7efc | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@7ef9 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@2937 =         287bcb5e</action>
        <action>maincpu.mq@7ef0 = ffffffffffffffff</action>
        <action>maincpu.mq@7ef8 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="fast bomb">
    <script state="on">
        <action>maincpu.mw@29ef =             7f00</action>
        <action>maincpu.mq@7f00 = dd0c3806fe077edd</action>
        <action>maincpu.mq@7f08 = 39c6057edd060736</action>
        <action>maincpu.mq@7f10 = ffff3855c30577dd</action>
        <!--
        7f00 | dd 7e 07    : ld  a,(ix+$07)
        7f03 | fe 06       : cp  $06
        7f05 | 38 0c       : jr  c,$7f13
        7f07 | dd 36 07 06 : ld  (ix+$07),$06
        7f0b | dd 7e 05    : ld  a,(ix+$05)
        7f0e | c6 39       : add a,$39
        7f10 | dd 77 05    : ld  (ix+$05),a
        7f13 | c3 55 38    : jp  $3855
        -->
    </script>
    <script state="off">
        <action>maincpu.mw@29ef =             3855</action>
        <action>maincpu.mq@7f00 = ffffffffffffffff</action>
        <action>maincpu.mq@7f08 = ffffffffffffffff</action>
        <action>maincpu.mq@7f10 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.mq@0f1b = 26c30032033e56ed</action>
        <action>maincpu.mq@0f23 = c1003ae0d022fb10</action>
        <action>maincpu.mq@0f2b = 0e28f7fef6286fbd</action>
        <action>maincpu.mq@0f33 = 0c28dffe0d28fbfe</action>
        <action>maincpu.mq@0f3b = 1824e4180c28effe</action>
        <action>maincpu.mq@0f43 = 0118013ede1825e1</action>
        <action>maincpu.mq@0f4b = ff20d418c300327c</action>
        <!--
        0f1b | ed 56    : im  1
        0f1d | 3e 03    : ld  a,$03
        0f1f | 32 00 c3 : ld  ($c300),a // send sound enable command
        0f22 | 26 10    : ld  h,$10
        0f24 | fb       : ei
        0f25 | 22 d0 e0 : ld  ($e0d0),hl
        0f28 | 3a 00 c1 : ld  a,($c100) // read input
        0f2b | bd       : cp  l
        0f2c | 6f       : ld  l,a
        0f2d | 28 f6    : jr  z,$0f25
        0f2f | fe f7    : cp  $f7       // pressed right?
        0f31 | 28 0e    : jr  z,$0f41
        0f33 | fe fb    : cp  $fb       // pressed left?
        0f35 | 28 0d    : jr  z,$0f44
        0f37 | fe df    : cp  $df       // pressed button 2?
        0f39 | 28 0c    : jr  z,$0f47
        0f3b | fe ef    : cp  $ef       // pressed button 1?
        0f3d | 28 0c    : jr  z,$0f4b
        0f3f | 18 e4    : jr  $0f25
        0f41 | 24       : inc hl        // code increment
        0f42 | 18 e1    : jr  $0f25
        0f44 | 25       : dec hl        // code decrement
        0f45 | 18 de    : jr  $0f25
        0f47 | 3e 01    : ld  a,$01     // stop sound
        0f49 | 18 01    : jr  $0f4c
        0f4b | 7c       : ld  a,h       // play sound
        0f4c | 32 00 c3 : ld  ($c300),a
        0f4f | 18 d4    : jr  $0f25
        -->
        <action>audiocpu.mb@0bc1 = 2b</action> <!-- sound enable -->
    </script>
    <script state="run">
        <output format="----- hal21 sound test mode -----"  line="10" align="center" />
        <output format="left : code decrement"              line="11" align="center" />
        <output format="right : code increment"             line="12" align="center" />
        <output format="button 1 : play sound"              line="13" align="center" />
        <output format="button 2 : stop sound"              line="14" align="center" />
        <output format="----------------------------"       line="15" align="center" />
        <output format="&lt;&lt; sound code %2.2X &gt;&gt;" line="17" align="center">
            <argument>maincpu.pb@e0d1</argument>
        </output>
    </script>
    <script state="off">
        <action> maincpu.mq@0f1b = 3a15bacd0f3021dd</action>
        <action> maincpu.mq@0f23 = 4921ddc838e6c400</action>
        <action> maincpu.mq@0f2b = 31fc23c915bacd0f</action>
        <action> maincpu.mq@0f33 = 4948202020505520</action>
        <action> maincpu.mq@0f3b = 202045524f43532d</action>
        <action> maincpu.mq@0f43 = ffd1ff5055203220</action>
        <action> maincpu.mq@0f4b = ff20544944455243</action>
        <action>audiocpu.mb@0bc1 =               a8</action>
    </script>
</cheat>
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[hal21j] update

Post by jman »

Random maintenance.

Code: Select all

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@4295 = 01</action> <!-- normal -->
        <action>maincpu.mb@434b = 01</action> <!-- power up -->
    </script>
    <script state="off">
        <action>maincpu.mb@4295 = 0a</action>
        <action>maincpu.mb@434b = 0a</action>
    </script>
</cheat>
"auto fire" : fix auto fire in power-up.

Code: Select all

<cheat desc="player speed">
    <parameter>
        <item value="0x01">01 (slow)</item>
        <item value="0x02">02       </item>
        <item value="0x04">03       </item>
        <item value="0x06">04       </item>
        <item value="0x08">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@410e =         067ee0cd</action> <!-- x position -->
        <action>maincpu.md@4153 =         067ee0cd</action> <!-- y position -->
        <action>maincpu.mq@7ee0 = 0c30d1fe2e7edd4e</action>
        <action>maincpu.mq@7ee8 = f3f2063e0728a779</action>
        <action>maincpu.mq@7ef0 = ffc979cb4f44ed7e</action>
        <!--
        7ee0 | 4e       : ld  c,(hl)
        7ee1 | dd 7e 2e : ld  a,(ix+$2e) // check auto moving flag
        7ee4 | fe d1    : cp  $D1
        7ee6 | 30 0c    : jr  nc,$7EF4
        7ee8 | 79       : ld  a,c
        7ee9 | a7       : and a
        7eea | 28 07    : jr  z,$7EF3
        7eec | 3e xx    : ld  a,$xx
        7eee | f2 f3 7e : jp  p,$7EF3
        7ef1 | ed 44    : neg
        7ef3 | 4f       : ld  c,a
        7ef4 | cb 79    : bit 7,c
        7ef6 | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@7eed = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@410e =         0679cb4e</action>
        <action>maincpu.md@4153 =         0679cb4e</action>
        <action>maincpu.mq@7ee0 = ffffffffffffffff</action>
        <action>maincpu.mq@7ee8 = ffffffffffffffff</action>
        <action>maincpu.mq@7ef0 = ffffffffffffffff</action>
    </script>
</cheat>
"player speed" : convert value selection to item selection. Check auto-moving flag at game start because of out of screen with faster speed.

Code: Select all

<cheat desc="bullet speed">
    <parameter>
        <item value="0x01">01 (slow)</item>
        <item value="0x06">02       </item>
        <item value="0x0c">03       </item>
        <item value="0x12">04       </item>
        <item value="0x18">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@2937 =         287f00cd</action>
        <action>maincpu.mq@7f00 = 022012fe007edd5e</action>
        <action>maincpu.mq@7f08 = ffffffc97bcb0c1e</action>
        <!--
        7f00 | 5e       : ld  e,(hl)
        7f01 | dd 7e 00 : ld  a,(ix+$00)
        7f04 | fe 12    : cp  $12
        7f06 | 20 02    : jr  nz,$7F0A
        7f08 | 1e xx    : ld  e,$xx
        7f0a | cb 7b    : bit 7,e
        7f0c | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@7f09 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@2937 =         287bcb5e</action>
        <action>maincpu.mq@7f00 = ffffffffffffffff</action>
        <action>maincpu.mq@7f08 = ffffffffffffffff</action>
    </script>
</cheat>
"bullet speed" : adjust parameter and reallocate address.

Code: Select all

<cheat desc="fast bomb">
    <script state="on">
        <action>maincpu.mw@29ef =             7f10</action>
        <action>maincpu.mq@7f10 = dd0c3806fe077edd</action>
        <action>maincpu.mq@7f18 = 39c6057edd060736</action>
        <action>maincpu.mq@7f20 = ffff3855c30577dd</action>
        <!--
        7f10 | dd 7e 07    : ld  a,(ix+$07)
        7f13 | fe 06       : cp  $06
        7f15 | 38 0c       : jr  c,$7F23
        7f17 | dd 36 07 06 : ld  (ix+$07),$06
        7f1b | dd 7e 05    : ld  a,(ix+$05)
        7f1e | c6 39       : add a,$39
        7f20 | dd 77 05    : ld  (ix+$05),a
        7f23 | c3 55 38    : jp  $3855
        -->
    </script>
    <script state="off">
        <action>maincpu.mw@29ef =             3855</action>
        <action>maincpu.mq@7f10 = ffffffffffffffff</action>
        <action>maincpu.mq@7f18 = ffffffffffffffff</action>
        <action>maincpu.mq@7f20 = ffffffffffffffff</action>
    </script>
</cheat>
"fast bomb" : reallocate address.

Code: Select all

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.mw@0f20 =             7f30</action>
        <action>maincpu.mq@7f30 = c30011ff002156ed</action>
        <action>maincpu.mq@7f38 = 003afb12033e77af</action>
        <action>maincpu.mq@7f40 = 20fbfef82847b8c1</action>
        <action>maincpu.mq@7f48 = fe340120f7fe3501</action>
        <action>maincpu.mq@7f50 = fe0618f03e0420fd</action>
        <action>maincpu.mq@7f58 = 787786103e0520fe</action>
        <action>maincpu.mq@7f60 = fe78127e0320effe</action>
        <action>maincpu.mq@7f68 = cd1812013e0320df</action>
        <!--
        7f30 | ed 56    : im  1
        7f32 | 21 00 ff : ld  hl,$FF00  // sound code address
        7f35 | 11 00 c3 : ld  de,$C300  // sound latch address
        7f38 | af       : xor a
        7f39 | 77       : ld  (hl),a
        7f3a | 3e 03    : ld  a,$03     // enable sound
        7f3c | 12       : ld  (de),a
        7f3d | fb       : ei  
        7f3e | 3a 00 c1 : ld  a,($C100) // read input
        7f41 | b8       : cp  b
        7f42 | 47       : ld  b,a
        7f43 | 28 f8    : jr  z,$7F3D
        7f45 | fe fb    : cp  $FB
        7f47 | 20 01    : jr  nz,$7F4A
        7f49 | 35       : dec (hl)      // decrease code -01
        7f4a | fe f7    : cp  $F7
        7f4c | 20 01    : jr  nz,$7F4F
        7f4e | 34       : inc (hl)      // increase code +01
        7f4f | fe fd    : cp  $FD
        7f51 | 20 04    : jr  nz,$7F57
        7f53 | 3e f0    : ld  a,$F0     // decrease code -10
        7f55 | 18 06    : jr  $7F5D
        7f57 | fe fe    : cp  $FE
        7f59 | 20 05    : jr  nz,$7F60
        7f5b | 3e 10    : ld  a,$10     // increase code +10
        7f5d | 86       : add a,(hl)
        7f5e | 77       : ld  (hl),a
        7f5f | 78       : ld  a,b
        7f60 | fe ef    : cp  $EF
        7f62 | 20 03    : jr  nz,$7F67
        7f64 | 7e       : ld  a,(hl)    // play sound
        7f65 | 12       : ld  (de),a
        7f66 | 78       : ld  a,b
        7f67 | fe df    : cp  $DF
        7f69 | 20 03    : jr  nz,$7F6E
        7f6b | 3e 01    : ld  a,$01     // stop sound
        7f6d | 12       : ld  (de),a
        7f6e | 18 cd    : jr  $7F3D
        -->
        <!-- music and sfx stop at the same time -->
        <action>audiocpu.mb@0bc1 = 00</action>
        <action>audiocpu.mb@0be9 = 00</action>
    </script>
    <script state="run">
        <output format="----- hal21 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 %2.2X &gt;&gt;" line="19" align="center">
            <argument>maincpu.pb@ff00</argument>
        </output>
    </script>
    <script state="off">
        <action> maincpu.mw@0f20 =             15ba</action>
        <action> maincpu.mq@7f30 = ffffffffffffffff</action>
        <action> maincpu.mq@7f38 = ffffffffffffffff</action>
        <action> maincpu.mq@7f40 = ffffffffffffffff</action>
        <action> maincpu.mq@7f48 = ffffffffffffffff</action>
        <action> maincpu.mq@7f50 = ffffffffffffffff</action>
        <action> maincpu.mq@7f58 = ffffffffffffffff</action>
        <action> maincpu.mq@7f60 = ffffffffffffffff</action>
        <action> maincpu.mq@7f68 = ffffffffffffffff</action>
        <action>audiocpu.mb@0bc1 =               a8</action>
        <action>audiocpu.mb@0be9 =               80</action>
    </script>
</cheat>
"sound test mode" : add up/down to code ±10. Fix sfx stop when you pressed sound stop button.

Code: Select all

<cheat desc="open hidden character">
    <script state="on">
        <action>maincpu.mb@38d7 = 00</action>
    </script>
    <script state="off">
        <action>maincpu.mb@38d7 = d0</action>
    </script>
</cheat>
"open hidden character" : add new. This code opens secret character like Xevious automatically.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[hal21]+ HAL21

Post by jman »

hal21.xml

Code: Select all

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

    <cheat desc="no hit">
        <script state="on">
            <action>sub.mb@022E = C9</action>
        </script>
        <script state="off">
            <action>sub.mb@022E = C0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@4295 = 01</action> <!-- normal -->
            <action>maincpu.mb@434B = 01</action> <!-- power up -->
        </script>
        <script state="off">
            <action>maincpu.mb@4295 = 0A</action>
            <action>maincpu.mb@434B = 0A</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@410E = 067EE0CD        </action> <!-- x position -->
            <action>maincpu.md@4153 = 067EE0CD        </action> <!-- y position -->
            <action>maincpu.mq@7EE0 = 0C30D1FE2E7EDD4E</action>
            <action>maincpu.mq@7EE8 = F3F2063E0728A779</action>
            <action>maincpu.mq@7EF0 = FFC979CB4F44ED7E</action>
            <!--
            7EE0 | 4E       : ld   c,(hl)
            7EE1 | DD 7E 2E : ld   a,(ix+$2e) // check auto moving flag
            7EE4 | FE D1    : cp   $D1
            7EE6 | 30 0C    : jr   nc,$7EF4
            7EE8 | 79       : ld   a,c
            7EE9 | A7       : and  a
            7EEA | 28 07    : jr   z,$7EF3
            7EEC | 3E xx    : ld   a,$xx
            7EEE | F2 F3 7E : jp   p,$7EF3
            7EF1 | ED 44    : neg
            7EF3 | 4F       : ld   c,a
            7EF4 | CB 79    : bit  7,c
            7EF6 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@7EED = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@410E = 0679CB4E        </action>
            <action>maincpu.md@4153 = 0679CB4E        </action>
            <action>maincpu.mq@7EE0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7EE8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7EF0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x06">02       </item>
            <item value="0x0c">03       </item>
            <item value="0x12">04       </item>
            <item value="0x18">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@2937 = 287F00CD        </action>
            <action>maincpu.mq@7F00 = 022012FE007EDD5E</action>
            <action>maincpu.mq@7F08 = FFFFFFC97BCB0C1E</action>
            <!--
            7F00 | 5E       : ld   e,(hl)
            7F01 | DD 7E 00 : ld   a,(ix+$00)
            7F04 | FE 12    : cp   $12
            7F06 | 20 02    : jr   nz,$7F0A
            7F08 | 1E xx    : ld   e,$xx
            7F0A | CB 7B    : bit  7,e
            7F0C | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@7F09 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@2937 = 287BCB5E        </action>
            <action>maincpu.mq@7F00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7F08 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="fast bomb">
        <script state="on">
            <action>maincpu.md@43FC = DD7F10CD        </action> <!-- calculate y position -->
            <action>maincpu.mq@7F10 = C90575DD19004811</action>
            <!--
            7F10 | 11 48 00 : ld   de,$0048
            7F13 | 19       : add  hl,de
            7F14 | DD 75 05 : ld   (ix+$05),l
            7F17 | C9       : ret
            -->
            <action>maincpu.mb@4409 = 06</action> <!-- timer -->
        </script>
        <script state="off">
            <action>maincpu.md@43FC = DD0575DD        </action>
            <action>maincpu.mq@7F10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mb@4409 = 4C              </action>
        </script>
    </cheat>

    <cheat desc="hidden character finder">
        <script state="on">
            <action>maincpu.mb@38D7 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@38D7 = D0</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@0F19 = 7F20            </action>
            <action>maincpu.mq@7F20 = C30011FF002156ED</action>
            <action>maincpu.mq@7F28 = 003AFB12033E77AF</action>
            <action>maincpu.mq@7F30 = 20FBFEF82847B8C1</action>
            <action>maincpu.mq@7F38 = FE340120F7FE3501</action>
            <action>maincpu.mq@7F40 = FE0618F03E0420FD</action>
            <action>maincpu.mq@7F48 = 787786103E0520FE</action>
            <action>maincpu.mq@7F50 = FE78127E0320EFFE</action>
            <action>maincpu.mq@7F58 = CD1812013E0320DF</action>
            <!--
            7F20 | ED 56    : im   1
            7F22 | 21 00 FF : ld   hl,$FF00  // sound code address
            7F25 | 11 00 C3 : ld   de,$C300  // sound latch address
            7F28 | AF       : xor  a
            7F29 | 77       : ld   (hl),a
            7F2A | 3E 03    : ld   a,$03     // enable sound
            7F2C | 12       : ld   (de),a
            7F2D | FB       : ei             // enable interrupt
            7F2E | 3A 00 C1 : ld   a,($C100) // read input
            7F31 | B8       : cp   b
            7F32 | 47       : ld   b,a
            7F33 | 28 F8    : jr   z,$7F2D
            7F35 | FE FB    : cp   $FB
            7F37 | 20 01    : jr   nz,$7F3A
            7F39 | 35       : dec  (hl)      // decrease code -01
            7F3A | FE F7    : cp   $F7
            7F3C | 20 01    : jr   nz,$7F3F
            7F3E | 34       : inc  (hl)      // increase code +01
            7F3F | FE FD    : cp   $FD
            7F41 | 20 04    : jr   nz,$7F47
            7F43 | 3E F0    : ld   a,$F0     // decrease code -10
            7F45 | 18 06    : jr   $7F4D
            7F47 | FE FE    : cp   $FE
            7F49 | 20 05    : jr   nz,$7F50
            7F4B | 3E 10    : ld   a,$10     // increase code +10
            7F4D | 86       : add  a,(hl)
            7F4E | 77       : ld   (hl),a
            7F4F | 78       : ld   a,b
            7F50 | FE EF    : cp   $EF
            7F52 | 20 03    : jr   nz,$7F57
            7F54 | 7E       : ld   a,(hl)    // play sound
            7F55 | 12       : ld   (de),a
            7F56 | 78       : ld   a,b
            7F57 | FE DF    : cp   $DF
            7F59 | 20 03    : jr   nz,$7F5E
            7F5B | 3E 01    : ld   a,$01     // stop sound
            7F5D | 12       : ld   (de),a
            7F5E | 18 CD    : jr   $7F2D
            -->
            <!-- disable credit display -->
            <action>maincpu.mb@15E1 = C9</action>
            <!-- disable score display -->
            <action>sub.mb@0578 = C9</action>
            <action>sub.mb@062A = C9</action>
            <!-- stop music and sfx at the same time -->
            <action>audiocpu.mb@0BBA = 00</action>
            <action>audiocpu.mb@0BE2 = 00</action>
        </script>
        <script state="run">
            <output format="----- hal21 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 %2.2X &gt;&gt;" line="19" align="center"  >
                <argument>maincpu.pb@FF00</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@0F19 = 1214            </action>
            <action> maincpu.mq@7F20 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F28 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F30 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F38 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F40 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F48 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F50 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F58 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mb@15E1 = 3A              </action>
            <action>     sub.mb@0578 = 11              </action>
            <action>     sub.mb@062A = 0E              </action>
            <action>audiocpu.mb@0BBA = A8              </action>
            <action>audiocpu.mb@0BE2 = 80              </action>
        </script>
    </cheat>

</mamecheat>
hal21j.xml

Code: Select all

<!-- HAL21 (Japan) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>sub.mb@022E = C9</action>
        </script>
        <script state="off">
            <action>sub.mb@022E = C0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@4295 = 01</action> <!-- normal -->
            <action>maincpu.mb@434B = 01</action> <!-- power up -->
        </script>
        <script state="off">
            <action>maincpu.mb@4295 = 0A</action>
            <action>maincpu.mb@434B = 0A</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@410E = 067EE0CD        </action> <!-- x position -->
            <action>maincpu.md@4153 = 067EE0CD        </action> <!-- y position -->
            <action>maincpu.mq@7EE0 = 0C30D1FE2E7EDD4E</action>
            <action>maincpu.mq@7EE8 = F3F2063E0728A779</action>
            <action>maincpu.mq@7EF0 = FFC979CB4F44ED7E</action>
            <!--
            7EE0 | 4E       : ld   c,(hl)
            7EE1 | DD 7E 2E : ld   a,(ix+$2e) // check auto moving flag
            7EE4 | FE D1    : cp   $D1
            7EE6 | 30 0C    : jr   nc,$7EF4
            7EE8 | 79       : ld   a,c
            7EE9 | A7       : and  a
            7EEA | 28 07    : jr   z,$7EF3
            7EEC | 3E xx    : ld   a,$xx
            7EEE | F2 F3 7E : jp   p,$7EF3
            7EF1 | ED 44    : neg
            7EF3 | 4F       : ld   c,a
            7EF4 | CB 79    : bit  7,c
            7EF6 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@7EED = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@410E = 0679CB4E        </action>
            <action>maincpu.md@4153 = 0679CB4E        </action>
            <action>maincpu.mq@7EE0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7EE8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7EF0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x06">02       </item>
            <item value="0x0c">03       </item>
            <item value="0x12">04       </item>
            <item value="0x18">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@2937 = 287F00CD        </action>
            <action>maincpu.mq@7F00 = 022012FE007EDD5E</action>
            <action>maincpu.mq@7F08 = FFFFFFC97BCB0C1E</action>
            <!--
            7F00 | 5E       : ld   e,(hl)
            7F01 | DD 7E 00 : ld   a,(ix+$00)
            7F04 | FE 12    : cp   $12
            7F06 | 20 02    : jr   nz,$7F0A
            7F08 | 1E xx    : ld   e,$xx
            7F0A | CB 7B    : bit  7,e
            7F0C | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@7F09 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@2937 = 287BCB5E        </action>
            <action>maincpu.mq@7F00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7F08 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="fast bomb">
        <script state="on">
            <action>maincpu.md@43FC = DD7F10CD        </action> <!-- calculate y position -->
            <action>maincpu.mq@7F10 = C90575DD19004811</action>
            <!--
            7F10 | 11 48 00 : ld   de,$0048
            7F13 | 19       : add  hl,de
            7F14 | DD 75 05 : ld   (ix+$05),l
            7F17 | C9       : ret
            -->
            <action>maincpu.mb@4409 = 06</action> <!-- timer -->
        </script>
        <script state="off">
            <action>maincpu.md@43FC = DD0575DD        </action>
            <action>maincpu.mq@7F10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mb@4409 = 4C              </action>
        </script>
    </cheat>

    <cheat desc="hidden character finder">
        <script state="on">
            <action>maincpu.mb@38D7 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@38D7 = D0</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@0F19 = 7F20            </action>
            <action>maincpu.mq@7F20 = C30011FF002156ED</action>
            <action>maincpu.mq@7F28 = 003AFB12033E77AF</action>
            <action>maincpu.mq@7F30 = 20FBFEF82847B8C1</action>
            <action>maincpu.mq@7F38 = FE340120F7FE3501</action>
            <action>maincpu.mq@7F40 = FE0618F03E0420FD</action>
            <action>maincpu.mq@7F48 = 787786103E0520FE</action>
            <action>maincpu.mq@7F50 = FE78127E0320EFFE</action>
            <action>maincpu.mq@7F58 = CD1812013E0320DF</action>
            <!--
            7F20 | ED 56    : im   1
            7F22 | 21 00 FF : ld   hl,$FF00  // sound code address
            7F25 | 11 00 C3 : ld   de,$C300  // sound latch address
            7F28 | AF       : xor  a
            7F29 | 77       : ld   (hl),a
            7F2A | 3E 03    : ld   a,$03     // enable sound
            7F2C | 12       : ld   (de),a
            7F2D | FB       : ei             // enable interrupt
            7F2E | 3A 00 C1 : ld   a,($C100) // read input
            7F31 | B8       : cp   b
            7F32 | 47       : ld   b,a
            7F33 | 28 F8    : jr   z,$7F2D
            7F35 | FE FB    : cp   $FB
            7F37 | 20 01    : jr   nz,$7F3A
            7F39 | 35       : dec  (hl)      // decrease code -01
            7F3A | FE F7    : cp   $F7
            7F3C | 20 01    : jr   nz,$7F3F
            7F3E | 34       : inc  (hl)      // increase code +01
            7F3F | FE FD    : cp   $FD
            7F41 | 20 04    : jr   nz,$7F47
            7F43 | 3E F0    : ld   a,$F0     // decrease code -10
            7F45 | 18 06    : jr   $7F4D
            7F47 | FE FE    : cp   $FE
            7F49 | 20 05    : jr   nz,$7F50
            7F4B | 3E 10    : ld   a,$10     // increase code +10
            7F4D | 86       : add  a,(hl)
            7F4E | 77       : ld   (hl),a
            7F4F | 78       : ld   a,b
            7F50 | FE EF    : cp   $EF
            7F52 | 20 03    : jr   nz,$7F57
            7F54 | 7E       : ld   a,(hl)    // play sound
            7F55 | 12       : ld   (de),a
            7F56 | 78       : ld   a,b
            7F57 | FE DF    : cp   $DF
            7F59 | 20 03    : jr   nz,$7F5E
            7F5B | 3E 01    : ld   a,$01     // stop sound
            7F5D | 12       : ld   (de),a
            7F5E | 18 CD    : jr   $7F2D
            -->
            <!-- disable credit display -->
            <action>maincpu.mb@15E1 = C9</action>
            <!-- disable score display -->
            <action>sub.mb@0578 = C9</action>
            <action>sub.mb@062A = C9</action>
            <!-- stop music and sfx at the same time -->
            <action>audiocpu.mb@0BC1 = 00</action>
            <action>audiocpu.mb@0BE9 = 00</action>
        </script>
        <script state="run">
            <output format="----- hal21 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 %2.2X &gt;&gt;" line="19" align="center"  >
                <argument>maincpu.pb@FF00</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@0F19 = 1214            </action>
            <action> maincpu.mq@7F20 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F28 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F30 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F38 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F40 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F48 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F50 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7F58 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mb@15E1 = 3A              </action>
            <action>     sub.mb@0578 = 11              </action>
            <action>     sub.mb@062A = 0E              </action>
            <action>audiocpu.mb@0BC1 = A8              </action>
            <action>audiocpu.mb@0BE9 = 80              </action>
        </script>
    </cheat>

</mamecheat>
Post Reply