Page 1 of 1

[hangonjr] Hang-On Jr.

Posted: Mon Jun 02, 2025 9:05 am
by jman
hangonjr.xml

Code: Select all

<!-- Hang-On Jr. (Rev. B) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@2F10 = C9</action> <!-- enemy -->
            <action>maincpu.mb@357E = C9</action> <!-- obstacle -->
            <action>maincpu.mb@702A = C9</action> <!-- water -->
        </script>
        <script state="off">
            <action>maincpu.mb@2F10 = D0</action>
            <action>maincpu.mb@357E = D0</action>
            <action>maincpu.mb@702A = D0</action>
       </script>
    </cheat>

    <cheat desc="no offroad slowdown">
        <script state="on">
            <action>maincpu.mb@144F = 14</action>
            <action>maincpu.mb@1452 = 18</action>
        </script>
        <script state="off">
            <action>maincpu.mb@144F = 04</action>
            <action>maincpu.mb@1452 = 38</action>
        </script>
    </cheat>

    <cheat desc="no tire slip">
        <script state="on">
            <action>maincpu.mb@14B7 = 00</action>
            <action>maincpu.mb@14C0 = 00</action>
            <action>maincpu.mb@14C9 = 00</action>
            <action>maincpu.mb@14D1 = 18</action>
        </script>
        <script state="off">
            <action>maincpu.mb@14B7 = 1B</action>
            <action>maincpu.mb@14C0 = 12</action>
            <action>maincpu.mb@14C9 = 09</action>
            <action>maincpu.mb@14D1 = 38</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="on">
            <action>maincpu.md@1D03 = 277BD0CD        </action>
            <action>maincpu.mq@7BD0 = C901D67E2300362B</action>
            <!--
            7BD0 | 2B    : dec  hl
            7BD1 | 36 xx : ld   (hl),$xx
            7BD3 | 23    : inc  hl
            7BD4 | 7E    : ld   a,(hl)
            7BD5 | D6 01 : sub  $01
            7BD7 | C9    : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@7BD2 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@1D03 = 0F01D67E        </action>
            <action>maincpu.mq@7BD0 = 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.mw@786E = C800            </action> <!-- read sound code -->
            <action>maincpu.mw@0959 = 7BD8            </action>
            <action>maincpu.mq@7BD8 = 3A000EC80021F3CF</action>
            <action>maincpu.mq@7BE0 = 200E022067CBC212</action>
            <action>maincpu.mq@7BE8 = CB082880FEC2053A</action>
            <action>maincpu.mq@7BF0 = 3A010E0220020E7F</action>
            <action>maincpu.mq@7BF8 = 79100E0228A7C206</action>
            <action>maincpu.mq@7C00 = 012001FED42847B8</action>
            <action>maincpu.mq@7C08 = 10FE34012002FE35</action>
            <action>maincpu.mq@7C10 = 78C17867CDC50620</action>
            <action>maincpu.mq@7C18 = 185940CD032020FE</action>
            <action>maincpu.mq@7C20 = FFFFFFFFFFFFFFB7</action>
            <!--
            7BD8 | CF       : rst  $08       // wait interrupt
            7BD9 | F3       : di
            7BDA | 21 00 C8 : ld   hl,$C800  // sound code address
            7BDD | 0E 00    : ld   c,$00
            7BDF | 3A 12 C2 : ld   a,($C212) // read start button
            7BE2 | CB 67    : bit  4,a
            7BE4 | 20 02    : jr   nz,$7BE8
            7BE6 | 0E 20    : ld   c,$20
            7BE8 | 3A 05 C2 : ld   a,($C205) // read accelerator
            7BEB | FE 80    : cp   $80
            7BED | 28 08    : jr   z,$7BF7
            7BEF | CB 7F    : bit  7,a
            7BF1 | 0E 02    : ld   c,$02
            7BF3 | 20 02    : jr   nz,$7BF7
            7BF5 | 0E 01    : ld   c,$01
            7BF7 | 3A 06 C2 : ld   a,($C206) // read steering wheel
            7BFA | A7       : and  a
            7BFB | 28 02    : jr   z,$7BFF
            7BFD | 0E 10    : ld   c,$10
            7BFF | 79       : ld   a,c
            7C00 | B8       : cp   b
            7C01 | 47       : ld   b,a
            7C02 | 28 D4    : jr   z,$7BD8
            7C04 | FE 01    : cp   $01
            7C06 | 20 01    : jr   nz,$7C09
            7C08 | 35       : dec  (hl)      // decrease code -01
            7C09 | FE 02    : cp   $02
            7C0B | 20 01    : jr   nz,$7C0E
            7C0D | 34       : inc  (hl)      // increase code +01
            7C0E | FE 10    : cp   $10
            7C10 | 20 06    : jr   nz,$7C18
            7C12 | C5       : push bc        // play sound
            7C13 | CD 67 78 : call $7867
            7C16 | C1       : pop  bc
            7C17 | 78       : ld   a,b
            7C18 | FE 20    : cp   $20
            7C1A | 20 03    : jr   nz,$7C1F
            7C1C | CD 40 59 : call $5940     // stop sound
            7C1F | 18 B7    : jr   $7BD8
            -->
        </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="accel : play sound"                line="13" align="center" />
            <output format="start : stop sound"                line="14" align="center" />
            <output format="----------------------------"      line="15" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;" line="17" align="center"  >
                <argument>maincpu.pb@C800</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@786E = C701            </action>
            <action>maincpu.mw@0959 = 05AD            </action>
            <action>maincpu.mq@7BD8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7BE0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7BE8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7BF0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7BF8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7C00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7C08 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7C10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7C18 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@7C20 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>