Page 1 of 1

[silvmil] Silver Millennium

Posted: Sun Oct 17, 2021 1:42 pm
by jman

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@10fda = 60</action> <!-- enemy -->
        <action>maincpu.mb@11030 = 60</action> <!-- bullet -->
        <action>maincpu.mb@110d8 = 60</action> <!-- boss -->
    </script>
    <script state="off">
        <action>maincpu.mb@10fda = 67</action>
        <action>maincpu.mb@11030 = 67</action>
        <action>maincpu.mb@110d8 = 67</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@bcf9 = 03</action>
    </script>
    <script state="off">
        <action>maincpu.mb@bcf9 = 04</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter min="0x01" max="0x08" step="0x01" />
    <script state="on">
        <action>maincpu.md@bbca = 303c0000</action> <!-- up -->
        <action>maincpu.md@bbde = 303c0000</action> <!-- down -->
        <action>maincpu.md@bbf2 = 303c0000</action> <!-- left -->
        <action>maincpu.md@bc0a = 303c0000</action> <!-- right -->
        <action>maincpu.md@bc1e = 303c0000</action> <!-- upper-left -->
        <action>maincpu.md@bc3c = 303c0000</action> <!-- lower-left -->
        <action>maincpu.md@bc58 = 303c0000</action> <!-- upper-right -->
        <action>maincpu.md@bc78 = 303c0000</action> <!-- lower-right -->
    </script>
    <script state="change">
        <action>maincpu.mb@bbcd = param</action>
        <action>maincpu.mb@bbe1 = param</action>
        <action>maincpu.mb@bbf5 = param</action>
        <action>maincpu.mb@bc0d = param</action>
        <action>maincpu.mb@bc21 = param</action>
        <action>maincpu.mb@bc3f = param</action>
        <action>maincpu.mb@bc5b = param</action>
        <action>maincpu.mb@bc7b = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@bbca = 302a001e</action>
        <action>maincpu.md@bbde = 302a001e</action>
        <action>maincpu.md@bbf2 = 302a001e</action>
        <action>maincpu.md@bc0a = 302a001e</action>
        <action>maincpu.md@bc1e = 302a001e</action>
        <action>maincpu.md@bc3c = 302a001e</action>
        <action>maincpu.md@bc58 = 302a001e</action>
        <action>maincpu.md@bc78 = 302a001e</action>
    </script>
</cheat>

<cheat desc="bullet speed">
    <parameter>
        <item value="0xffff">01 (slow)</item>
        <item value="0xfff8">02       </item>
        <item value="0xfff0">03       </item>
        <item value="0xffe8">04       </item>
        <item value="0xffe0">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@e7fa = 377c0000</action> <!-- red -->
        <action>maincpu.md@ea18 = 377c0000</action> <!-- blue -->
    </script>
    <script state="change">
        <action>maincpu.mw@e7fc = param</action>
        <action>maincpu.mw@ea1a = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@e7fa = 376c0008</action>
        <action>maincpu.md@ea18 = 376c0008</action>
    </script>
</cheat>

<cheat desc="unlock secret character">
    <script state="on">
        <action>maincpu.mb@152e9 = 06</action>
        <action>maincpu.mb@152b1 = 06</action>
    </script>
    <script state="off">
        <action>maincpu.mb@152e9 = 05</action>
        <action>maincpu.mb@152b1 = 05</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@03620 = 4ef90006c370244b</action>
        <action>maincpu.mq@6c370 = 41f90030100043f9</action>
        <action>maincpu.mq@6c378 = 003001c042805251</action>
        <action>maincpu.mq@6c380 = 4a5166fc14011239</action>
        <action>maincpu.mq@6c388 = 00280001b40167ee</action>
        <action>maincpu.mq@6c390 = 0c0100fb66025310</action>
        <action>maincpu.mq@6c398 = 0c0100f766025210</action>
        <action>maincpu.mq@6c3a0 = 0c0100fd66040410</action>
        <action>maincpu.mq@6c3a8 = 00100c0100fe6604</action>
        <action>maincpu.mq@6c3b0 = 061000100c0100ef</action>
        <action>maincpu.mq@6c3b8 = 6604101060080c01</action>
        <action>maincpu.mq@6c3c0 = 00df660a42002f00</action>
        <action>maincpu.mq@6c3c8 = 4eb90000079260ae</action>
        <!--
        6c370 | 41f9 0030 1000 : lea    $301000.l,A0 // sound code address
        6c376 | 43f9 0030 01c0 : lea    $3001c0.l,A1 // interrupt wait flag
        6c37c | 4280           : clr.l  D0
        6c37e | 5251           : addq.w #1,(A1)
        6c380 | 4a51           : tst.w  (A1)         // wait interrupt
        6c382 | 66fc           : bne    $6c380
        6c384 | 1401           : move.b D1,D2
        6c386 | 1239 0028 0001 : move.b $280001.l,D1 // read input
        6c38c | b401           : cmp.b  D1,D2
        6c38e | 67ee           : beq    $6c37e
        6c390 | 0c01 00fb      : cmpi.b #-$5,D1
        6c394 | 6602           : bne    $6c398
        6c396 | 5310           : subq.b #1,(A0)      // decrease code -01
        6c398 | 0c01 00f7      : cmpi.b #-$9,D1
        6c39c | 6602           : bne    $6c3a0
        6c39e | 5210           : addq.b #1,(A0)      // increase code +01
        6c3a0 | 0c01 00fd      : cmpi.b #-$3,D1
        6c3a4 | 6604           : bne    $6c3aa
        6c3a6 | 0410 0010      : subi.b #$10,(A0)    // decrease code -10
        6c3aa | 0c01 00fe      : cmpi.b #-$2,D1
        6c3ae | 6604           : bne    $6c3b4
        6c3b0 | 0610 0010      : addi.b #$10,(A0)    // increase code +10
        6c3b4 | 0c01 00ef      : cmpi.b #-$11,D1
        6c3b8 | 6604           : bne    $6c3be
        6c3ba | 1010           : move.b (A0),D0      // play sound
        6c3bc | 6008           : bra    $6c3c6
        6c3be | 0c01 00df      : cmpi.b #-$21,D1
        6c3c2 | 660a           : bne    $6c3ce
        6c3c4 | 4200           : clr.b  D0           // stop sound
        6c3c6 | 2f00           : move.l D0,-(A7)
        6c3c8 | 4eb9 0000 0792 : jsr    $792.l       // send sound code
        6c3ce | 60ae           : bra    $6c37e
        -->
    </script>
    <script state="run">
        <output format="----- silver millennium 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@301000</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mq@03620 = 377c0001000e244b</action>
        <action>maincpu.mq@6c370 = ffffffffffffffff</action>
        <action>maincpu.mq@6c378 = ffffffffffffffff</action>
        <action>maincpu.mq@6c380 = ffffffffffffffff</action>
        <action>maincpu.mq@6c388 = ffffffffffffffff</action>
        <action>maincpu.mq@6c390 = ffffffffffffffff</action>
        <action>maincpu.mq@6c398 = ffffffffffffffff</action>
        <action>maincpu.mq@6c3a0 = ffffffffffffffff</action>
        <action>maincpu.mq@6c3a8 = ffffffffffffffff</action>
        <action>maincpu.mq@6c3b0 = ffffffffffffffff</action>
        <action>maincpu.mq@6c3b8 = ffffffffffffffff</action>
        <action>maincpu.mq@6c3c0 = ffffffffffffffff</action>
        <action>maincpu.mq@6c3c8 = ffffffffffffffff</action>
    </script>
</cheat>
"unlock secret character" works on character selection screen.

[silvmil] Silver Millennium

Posted: Fri Nov 24, 2023 9:15 am
by jman

Code: Select all

<!-- Silver Millennium -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@10FDA = 60</action> <!-- enemy -->
            <action>maincpu.mb@11030 = 60</action> <!-- bullet -->
            <action>maincpu.mb@110D8 = 60</action> <!-- boss -->
        </script>
        <script state="off">
            <action>maincpu.mb@10FDA = 67</action>
            <action>maincpu.mb@11030 = 67</action>
            <action>maincpu.mb@110D8 = 67</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@BCF9 = 03</action>
        </script>
        <script state="off">
            <action>maincpu.mb@BCF9 = 04</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0003">02       </item>
            <item value="0x0006">03       </item>
            <item value="0x0009">04       </item>
            <item value="0x000c">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mw@BBCA = 303C</action> <!-- up -->
            <action>maincpu.mw@BBDE = 303C</action> <!-- down -->
            <action>maincpu.mw@BBF2 = 303C</action> <!-- left -->
            <action>maincpu.mw@BC0A = 303C</action> <!-- right -->
            <action>maincpu.mw@BC1E = 303C</action> <!-- upper-left -->
            <action>maincpu.mw@BC3C = 303C</action> <!-- lower-left -->
            <action>maincpu.mw@BC58 = 303C</action> <!-- upper-right -->
            <action>maincpu.mw@BC78 = 303C</action> <!-- lower-right -->
        </script>
        <script state="change">
            <action>maincpu.mw@BBCC = param</action>
            <action>maincpu.mw@BBE0 = param</action>
            <action>maincpu.mw@BBF4 = param</action>
            <action>maincpu.mw@BC0C = param</action>
            <action>maincpu.mw@BC20 = param</action>
            <action>maincpu.mw@BC3E = param</action>
            <action>maincpu.mw@BC5A = param</action>
            <action>maincpu.mw@BC7A = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@BBCA = 302A001E</action>
            <action>maincpu.md@BBDE = 302A001E</action>
            <action>maincpu.md@BBF2 = 302A001E</action>
            <action>maincpu.md@BC0A = 302A001E</action>
            <action>maincpu.md@BC1E = 302A001E</action>
            <action>maincpu.md@BC3C = 302A001E</action>
            <action>maincpu.md@BC58 = 302A001E</action>
            <action>maincpu.md@BC78 = 302A001E</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x0010">03       </item>
            <item value="0x0018">04       </item>
            <item value="0x0020">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mw@E7FA = 377C</action> <!-- red -->
            <action>maincpu.mw@EA18 = 377C</action> <!-- blue -->
        </script>
        <script state="change">
            <action>maincpu.mw@E7FC = -param</action>
            <action>maincpu.mw@EA1A = -param</action>
        </script>
        <script state="off">
            <action>maincpu.md@E7FA = 376C0008</action>
            <action>maincpu.md@EA18 = 376C0008</action>
        </script>
    </cheat>

    <cheat desc="unlock secret character">
        <script state="on">
            <!-- normal start -->
            <action>maincpu.mb@152B1 = 06</action>
            <action>maincpu.mb@152DD = 06</action>
            <action>maincpu.mb@152E9 = 06</action>
            <action>maincpu.mb@15317 = 07</action>
            <!-- join start -->
            <action>maincpu.mb@15F28 = 6F</action>
        </script>
        <script state="off">
            <action>maincpu.mb@152B1 = 05</action>
            <action>maincpu.mb@152DD = 05</action>
            <action>maincpu.mb@152E9 = 05</action>
            <action>maincpu.mb@15317 = 06</action>
            <action>maincpu.mb@15F28 = 6D</action>
        </script>
    </cheat>

    <cheat desc="selectable same character (test)">
        <comment>works in the character selection screen</comment>
        <script state="on">
            <action>maincpu.mb@152CE = 60</action>
            <action>maincpu.mb@1530E = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@152CE = 66</action>
            <action>maincpu.mb@1530E = 66</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@03620 = 4EF90006C370244B</action>
            <action>maincpu.mq@6C370 = 41F90030000043E8</action>
            <action>maincpu.mq@6C378 = 01C0428052514A51</action>
            <action>maincpu.mq@6C380 = 66FC140112390028</action>
            <action>maincpu.mq@6C388 = 0001B40167EE0C01</action>
            <action>maincpu.mq@6C390 = 00FB660253100C01</action>
            <action>maincpu.mq@6C398 = 00F7660252100C01</action>
            <action>maincpu.mq@6C3A0 = 00FD660404100010</action>
            <action>maincpu.mq@6C3A8 = 0C0100FE66040610</action>
            <action>maincpu.mq@6C3B0 = 00100C0100EF6604</action>
            <action>maincpu.mq@6C3B8 = 101060080C0100DF</action>
            <action>maincpu.mq@6C3C0 = 660842002F004EB8</action>
            <action>maincpu.mq@6C3C8 = 0792588F60AEFFFF</action>
            <!--
            6C370 | 41F9 0030 0000 : lea     $300000.l, A0 // sound code address
            6C376 | 43E8 01C0      : lea     ($1c0,A0), A1 // interrupt wait flag ($3001c0)
            6C37A | 4280           : clr.l   D0
            6C37C | 5251           : addq.w  #1, (A1)      // wait interrupt
            6C37E | 4A51           : tst.w   (A1)
            6C380 | 66FC           : bne     $6c37e
            6C382 | 1401           : move.b  D1, D2
            6C384 | 1239 0028 0001 : move.b  $280001.l, D1 // read input
            6C38A | B401           : cmp.b   D1, D2
            6C38C | 67EE           : beq     $6c37c
            6C38E | 0C01 00FB      : cmpi.b  #-$5, D1
            6C392 | 6602           : bne     $6c396
            6C394 | 5310           : subq.b  #1, (A0)      // decrease code -01
            6C396 | 0C01 00F7      : cmpi.b  #-$9, D1
            6C39A | 6602           : bne     $6c39e
            6C39C | 5210           : addq.b  #1, (A0)      // increase code +01
            6C39E | 0C01 00FD      : cmpi.b  #-$3, D1
            6C3A2 | 6604           : bne     $6c3a8
            6C3A4 | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            6C3A8 | 0C01 00FE      : cmpi.b  #-$2, D1
            6C3AC | 6604           : bne     $6c3b2
            6C3AE | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            6C3B2 | 0C01 00EF      : cmpi.b  #-$11, D1
            6C3B6 | 6604           : bne     $6c3bc
            6C3B8 | 1010           : move.b  (A0), D0      // play sound
            6C3BA | 6008           : bra     $6c3c4
            6C3BC | 0C01 00DF      : cmpi.b  #-$21, D1
            6C3C0 | 6608           : bne     $6c3ca
            6C3C2 | 4200           : clr.b   D0            // stop sound
            6C3C4 | 2F00           : move.l  D0, -(A7)
            6C3C6 | 4EB8 0792      : jsr     $792.w        // send sound code
            6C3CA | 588F           : addq.l  #4, A7
            6C3CC | 60AE           : bra     $6c37c
            -->
        </script>
        <script state="run">
            <output format="----- silver millennium 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@300000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@03620 = 377C0001000E244B</action>
            <action>maincpu.mq@6C370 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C378 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C380 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C388 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C390 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C398 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C3A0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C3A8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C3B0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C3B8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C3C0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@6C3C8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
  • "player speed" : Replaced value parameter to item parameter.
  • "unlock secret character" : Added code for join start.
  • "selectable same character" : Added new as test code. This works in the character selection screen, doesn't work in joining in the middle.