Page 1 of 1

[hbarrel]+ Heavy Barrel

Posted: Sun May 12, 2024 2:29 am
by jman
hbarrel.xml

Code: Select all

<!-- Heavy Barrel (World) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@07B72 = 60</action> <!-- enemy -->
            <action>maincpu.mb@0DB1A = 60</action> <!-- arm (last boss) -->
            <action>maincpu.mb@0F6A8 = 60</action> <!-- P1 arm (boss 2) -->
            <action>maincpu.mb@0F6DE = 60</action> <!-- P2 arm (boss 2) -->
            <action>maincpu.mb@10F5A = 60</action> <!-- bullet -->
            <action>maincpu.mb@12770 = 60</action> <!-- grenade (time out) -->
        </script>
        <script state="off">
            <action>maincpu.mb@07B72 = 64</action>
            <action>maincpu.mb@0DB1A = 66</action>
            <action>maincpu.mb@0F6A8 = 64</action>
            <action>maincpu.mb@0F6DE = 64</action>
            <action>maincpu.mb@10F5A = 66</action>
            <action>maincpu.mb@12770 = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire - shot">
        <script state="on">
            <action>maincpu.mb@27D3 = 22</action> <!-- main -->
            <action>maincpu.mb@297B = 22</action> <!-- heavy barrel -->
            <action>maincpu.mb@2D99 = 22</action> <!-- sub unit (dual play) -->
        </script>
        <script state="off">
            <action>maincpu.mb@27D3 = 28</action>
            <action>maincpu.mb@297B = 28</action>
            <action>maincpu.mb@2D99 = 28</action>
        </script>
    </cheat>

    <cheat desc="joystick hack">
        <script state="on">
            <action>maincpu.mq@023CE = 4EB90005AA000C2B</action> <!-- main -->
            <action>maincpu.mq@024EA = 4EB90005AA007200</action> <!-- heavy barrel -->
            <action>maincpu.mq@5AA00 = 1A2B00220205000F</action>
            <action>maincpu.mq@5AA08 = 6706177B500C0034</action>
            <action>maincpu.mq@5AA10 = 1A2B0034D0454E75</action>
            <action>maincpu.mq@5AA18 = 00001000181C1400</action>
            <action>maincpu.mq@5AA20 = 08040C0000000000</action>
            <!--
            5AA00 | 1A2B 0022      : move.b  ($22,A3), D5
            5AA04 | 0205 000F      : andi.b  #$f, D5
            5AA08 | 6706           : beq     $5aa10
            5AA0A | 177B 500C 0034 : move.b  ($c,PC,D5.w), ($34,A3)
            5AA10 | 1A2B 0034      : move.b  ($34,A3), D5
            5AA14 | D045           : add.w   D5, D0
            5AA16 | 4E75           : rts
            5AA18 - 5AA27          : input/direction conversion table
                  input direction
                    01     00      : up
                    02     10      : down
                    04     18      : left
                    05     1c      : upper-left
                    06     14      : lower-left
                    08     08      : right
                    09     04      : upper-right
                    0a     0c      : lower-right
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@023CE = 1A2B0034D0450C2B</action>
            <action>maincpu.mq@024EA = 1A2B0034D0457200</action>
            <action>maincpu.mq@5AA00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA08 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA18 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA20 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="auto open a box">
        <script state="on">
            <action>maincpu.mb@13609 = BA</action>
        </script>
        <script state="off">
            <action>maincpu.mb@13609 = 78</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop samples (0x31 - 0x3e) by sound stop button -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@1403A = 4EB90005AA30207C</action>
            <action>maincpu.mq@5AA30 = 41F8800043F90030</action>
            <action>maincpu.mq@5AA38 = C01512001029FFEC</action>
            <action>maincpu.mq@5AA40 = B20067F60C0000FB</action>
            <action>maincpu.mq@5AA48 = 660253100C0000F7</action>
            <action>maincpu.mq@5AA50 = 660252100C0000FD</action>
            <action>maincpu.mq@5AA58 = 6604041000100C00</action>
            <action>maincpu.mq@5AA60 = 00FE660406100010</action>
            <action>maincpu.mq@5AA68 = 0C0000EF66021290</action>
            <action>maincpu.mq@5AA70 = 0C0000DF660412BC</action>
            <action>maincpu.mq@5AA78 = 000160BEFFFFFFFF</action>
            <!--
            5AA30 | 41F8 8000      : lea     $8000.w, A0   // sound code address ($ff8000)
            5AA34 | 43F9 0030 C015 : lea     $30c015.l, A1 // sound latch address
            5AA3A | 1200           : move.b  D0, D1
            5AA3C | 1029 FFEC      : move.b  (-$14,A1), D0 // read input ($30c001)
            5AA40 | B200           : cmp.b   D0, D1
            5AA42 | 67F6           : beq     $5aa3a
            5AA44 | 0C00 00FB      : cmpi.b  #-$5, D0
            5AA48 | 6602           : bne     $5aa4c
            5AA4A | 5310           : subq.b  #1, (A0)      // decrease code -01
            5AA4C | 0C00 00F7      : cmpi.b  #-$9, D0
            5AA50 | 6602           : bne     $5aa54
            5AA52 | 5210           : addq.b  #1, (A0)      // increase code +01
            5AA54 | 0C00 00FD      : cmpi.b  #-$3, D0
            5AA58 | 6604           : bne     $5aa5e
            5AA5A | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            5AA5E | 0C00 00FE      : cmpi.b  #-$2, D0
            5AA62 | 6604           : bne     $5aa68
            5AA64 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            5AA68 | 0C00 00EF      : cmpi.b  #-$11, D0
            5AA6C | 6602           : bne     $5aa70
            5AA6E | 1290           : move.b  (A0), (A1)    // play sound
            5AA70 | 0C00 00DF      : cmpi.b  #-$21, D0
            5AA74 | 6604           : bne     $5aa7a
            5AA76 | 12BC 0001      : move.b  #$1, (A1)     // stop sound
            5AA7A | 60BE           : bra     $5aa3a
            -->
        </script>
        <script state="run">
            <output format="----- heavy barrel 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 music"                    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@FF8000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@1403A = 7E09610005C0207C</action>
            <action>maincpu.mq@5AA30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA60 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA68 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA70 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA78 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
hbarrel.xml

Code: Select all

<!-- Heavy Barrel (US) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@07BF6 = 60</action> <!-- enemy -->
            <action>maincpu.mb@0DBF0 = 60</action> <!-- arm (last boss) -->
            <action>maincpu.mb@0F77E = 60</action> <!-- P1 arm (boss 2) -->
            <action>maincpu.mb@0F7B4 = 60</action> <!-- P2 arm (boss 2) -->
            <action>maincpu.mb@11030 = 60</action> <!-- bullet -->
            <action>maincpu.mb@12846 = 60</action> <!-- grenade (time out) -->
        </script>
        <script state="off">
            <action>maincpu.mb@07BF6 = 64</action>
            <action>maincpu.mb@0DBF0 = 66</action>
            <action>maincpu.mb@0F77E = 64</action>
            <action>maincpu.mb@0F7B4 = 64</action>
            <action>maincpu.mb@11030 = 66</action>
            <action>maincpu.mb@12846 = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire - shot">
        <script state="on">
            <action>maincpu.mb@284B = 22</action> <!-- main -->
            <action>maincpu.mb@29F3 = 22</action> <!-- heavy barrel -->
            <action>maincpu.mb@2E11 = 22</action> <!-- sub unit (dual play) -->
        </script>
        <script state="off">
            <action>maincpu.mb@284B = 28</action>
            <action>maincpu.mb@29F3 = 28</action>
            <action>maincpu.mb@2E11 = 28</action>
        </script>
    </cheat>

    <cheat desc="joystick hack">
        <script state="on">
            <action>maincpu.mq@02446 = 4EB90005AA000C2B</action> <!-- main -->
            <action>maincpu.mq@02562 = 4EB90005AA007200</action> <!-- heavy barrel -->
            <action>maincpu.mq@5AA00 = 1A2B00220205000F</action>
            <action>maincpu.mq@5AA08 = 6706177B500C0034</action>
            <action>maincpu.mq@5AA10 = 1A2B0034D0454E75</action>
            <action>maincpu.mq@5AA18 = 00001000181C1400</action>
            <action>maincpu.mq@5AA20 = 08040C0000000000</action>
            <!--
            5AA00 | 1A2B 0022      : move.b  ($22,A3), D5
            5AA04 | 0205 000F      : andi.b  #$f, D5
            5AA08 | 6706           : beq     $5aa10
            5AA0A | 177B 500C 0034 : move.b  ($c,PC,D5.w), ($34,A3)
            5AA10 | 1A2B 0034      : move.b  ($34,A3), D5
            5AA14 | D045           : add.w   D5, D0
            5AA16 | 4E75           : rts
            5AA18 - 5AA27          : input/direction conversion table
                  input direction
                    01     00      : up
                    02     10      : down
                    04     18      : left
                    05     1c      : upper-left
                    06     14      : lower-left
                    08     08      : right
                    09     04      : upper-right
                    0a     0c      : lower-right
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@02446 = 1A2B0034D0450C2B</action>
            <action>maincpu.mq@02562 = 1A2B0034D0457200</action>
            <action>maincpu.mq@5AA00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA08 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA18 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA20 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="auto open a box">
        <script state="on">
            <action>maincpu.mb@1370D = BA</action>
        </script>
        <script state="off">
            <action>maincpu.mb@1370D = 78</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop samples (0x31 - 0x3e) by sound stop button -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@1413E = 4EB90005AA30207C</action>
            <action>maincpu.mq@5AA30 = 41F8800043F90030</action>
            <action>maincpu.mq@5AA38 = C01512001029FFEC</action>
            <action>maincpu.mq@5AA40 = B20067F60C0000FB</action>
            <action>maincpu.mq@5AA48 = 660253100C0000F7</action>
            <action>maincpu.mq@5AA50 = 660252100C0000FD</action>
            <action>maincpu.mq@5AA58 = 6604041000100C00</action>
            <action>maincpu.mq@5AA60 = 00FE660406100010</action>
            <action>maincpu.mq@5AA68 = 0C0000EF66021290</action>
            <action>maincpu.mq@5AA70 = 0C0000DF660412BC</action>
            <action>maincpu.mq@5AA78 = 000160BEFFFFFFFF</action>
            <!--
            5AA30 | 41F8 8000      : lea     $8000.w, A0   // sound code address ($ff8000)
            5AA34 | 43F9 0030 C015 : lea     $30c015.l, A1 // sound latch address
            5AA3A | 1200           : move.b  D0, D1
            5AA3C | 1029 FFEC      : move.b  (-$14,A1), D0 // read input ($30c001)
            5AA40 | B200           : cmp.b   D0, D1
            5AA42 | 67F6           : beq     $5aa3a
            5AA44 | 0C00 00FB      : cmpi.b  #-$5, D0
            5AA48 | 6602           : bne     $5aa4c
            5AA4A | 5310           : subq.b  #1, (A0)      // decrease code -01
            5AA4C | 0C00 00F7      : cmpi.b  #-$9, D0
            5AA50 | 6602           : bne     $5aa54
            5AA52 | 5210           : addq.b  #1, (A0)      // increase code +01
            5AA54 | 0C00 00FD      : cmpi.b  #-$3, D0
            5AA58 | 6604           : bne     $5aa5e
            5AA5A | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            5AA5E | 0C00 00FE      : cmpi.b  #-$2, D0
            5AA62 | 6604           : bne     $5aa68
            5AA64 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            5AA68 | 0C00 00EF      : cmpi.b  #-$11, D0
            5AA6C | 6602           : bne     $5aa70
            5AA6E | 1290           : move.b  (A0), (A1)    // play sound
            5AA70 | 0C00 00DF      : cmpi.b  #-$21, D0
            5AA74 | 6604           : bne     $5aa7a
            5AA76 | 12BC 0001      : move.b  #$1, (A1)     // stop sound
            5AA7A | 60BE           : bra     $5aa3a
            -->
        </script>
        <script state="run">
            <output format="----- heavy barrel 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 music"                    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@FF8000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@1413E = 7E09610005D0207C</action>
            <action>maincpu.mq@5AA30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA60 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA68 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA70 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@5AA78 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
"sound test mode" : You can't stop samples (0x31 - 0x3e) by sound stop button.

BTW, this game has timer. Red grenades are thrown from out of screen when time is out.

Code: Select all

    <cheat desc="Infinite Time">
        <script state="run">
            <action>maincpu.pw@FFBE6A = 0000</action>
        </script>
    </cheat>

    <cheat desc="Time Out Now">
        <script state="on">
            <action>maincpu.pw@FFBE6A = 03C0</action>
        </script>
    </cheat>
The above "time out now" code is for hbarrel. In hbarrelu, you need to replace 0x3c0 with 0x400.
Turn "infinite time" OFF when you use "time out now" code.