Page 1 of 1

[csilverj] Captain Silver

Posted: Wed Dec 15, 2021 10:18 am
by jman

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>sub.mb@436a = 20</action>
        <action>sub.mb@46bc = 20</action>
        <action>sub.mb@41d3 = 1a</action>
    </script>
    <script state="off">
        <action>sub.mb@436a = 24</action>
        <action>sub.mb@46bc = 24</action>
        <action>sub.mb@41d3 = 05</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.md@98e2 =         bdedd012</action> <!-- in jumping -->
        <action>maincpu.md@9db5 =         bdedd012</action> <!-- in standing -->
        <action>maincpu.mq@edd0 = dc13c51027028a10</action>
        <action>maincpu.mq@edd8 = 9713853039000000</action>
        <!--
        edd0 | dc 13 : LDD  $13
        edd2 | c5 10 : BITB #$10
        edd4 | 27 04 : BEQ  $EDDA
        edd6 | 8a 10 : ORA  #$10
        edd8 | 97 0f : STA  $13
        edda | 85 30 : BITA #$30
        eddc | 39    : RTS
        -->
    </script>
    <script state="off">
        <action>maincpu.md@98e2 =         96138530</action>
        <action>maincpu.md@9db5 =         dc138530</action>
        <action>maincpu.mq@edd0 = 0000000000000000</action>
        <action>maincpu.mq@edd8 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="multiple jump">
    <script state="on">
        <action>maincpu.md@9da7 =         bdede012</action>
        <action>maincpu.mq@ede0 = 9613852027034f97</action>
        <action>maincpu.mq@ede8 = 4296428102390000</action>
        <!--
        ede0 | 96 13 : LDA  $13
        ede2 | 85 20 : BITA #$20
        ede4 | 27 03 : BEQ  $EDE9
        ede6 | 4f    : CLRA
        ede7 | 97 42 : STA  $42
        ede9 | 96 42 : LDA  $42
        edeb | 81 02 : CMPA #$02
        eded | 39    : RTS
        -->
    </script>
    <script state="off">
        <action>maincpu.md@9da7 =         96428102</action>
        <action>maincpu.mq@ede0 = 0000000000000000</action>
        <action>maincpu.mq@ede8 = 0000000000000000</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>sub.mb@f994 = param</action>
    </script>
    <script state="off">
        <action>sub.mb@f994 = 39</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.md@8848 =         bdedf043</action>
        <action>maincpu.mq@edf0 = d711f61801d11127</action>
        <action>maincpu.mq@edf8 = f7c1fb26020a10c1</action>
        <action>maincpu.mq@ee00 = f726020c10c1ef26</action>
        <action>maincpu.mq@ee08 = 0496102006c1df26</action>
        <action>maincpu.mq@ee10 = 058627b7180c20d8</action>
        <!--
        edf0 | d7 11    : STB  $11
        edf2 | f6 18 01 : LDB  $1801 // read input
        edf5 | d1 11    : CMPB $11
        edf7 | 27 f7    : BEQ  $EDF0
        edf9 | c1 fb    : CMPB #$FB
        edfb | 26 02    : BNE  $EDFF
        edfd | 0a 10    : DEC  $10   // decrease code
        edff | c1 f7    : CMPB #$F7
        ee01 | 26 02    : BNE  $EE05
        ee03 | 0c 10    : INC  $10   // increase code
        ee05 | c1 ef    : CMPB #$EF
        ee07 | 26 04    : BNE  $EE0D
        ee09 | 96 10    : LDA  $10   // play sound
        ee0b | 20 06    : BRA  $EE13
        ee0d | c1 df    : CMPB #$DF
        ee0f | 26 05    : BNE  $EE16
        ee11 | 86 27    : LDA  #$27  // stop sound
        ee13 | b7 18 0c : STA  $180C // send sound code
        ee16 | 20 d8    : BRA  $EDF0
        -->
    </script>
    <script state="run">
        <output format="----- captain silver sound test mode -----" line="10" align="center" />
        <output format="left : decrease code"                       line="11" align="center" />
        <output format="right : increase code"                      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@0010</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.md@8848 =         b6180543</action>
        <action>maincpu.mq@edf0 = 0000000000000000</action>
        <action>maincpu.mq@edf8 = 0000000000000000</action>
        <action>maincpu.mq@ee00 = 0000000000000000</action>
        <action>maincpu.mq@ee08 = 0000000000000000</action>
        <action>maincpu.mq@ee10 = 0000000000000000</action>
    </script>
</cheat>

[csilverj] Captain Silver (update)

Posted: Tue Dec 27, 2022 12:56 pm
by jman

Code: Select all

<cheat desc="sound test mode">
    <!-- you can't stop voice by stop button -->
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.md@8848 =         bdedf043</action>
        <action>maincpu.mq@edf0 = 9711b61801911127</action>
        <action>maincpu.mq@edf8 = f7d61081fb26015a</action>
        <action>maincpu.mq@ee00 = 81f726015c81fd26</action>
        <action>maincpu.mq@ee08 = 02c01081fe2602cb</action>
        <action>maincpu.mq@ee10 = 10d71081ef270681</action>
        <action>maincpu.mq@ee18 = df2605c627f7180c</action>
        <action>maincpu.mq@ee20 = 20ce000000000000</action>
        <!--
        edf0 | 97 11    : STA  $11
        edf2 | b6 18 01 : LDA  $1801 // read input
        edf5 | 91 11    : CMPA $11
        edf7 | 27 f7    : BEQ  $EDF0
        edf9 | d6 10    : LDB  $10
        edfb | 81 fb    : CMPA #$FB
        edfd | 26 01    : BNE  $EE00
        edff | 5a       : DECB       // decrease code -01
        ee00 | 81 f7    : CMPA #$F7
        ee02 | 26 01    : BNE  $EE05
        ee04 | 5c       : INCB       // increase code +10
        ee05 | 81 fd    : CMPA #$FD
        ee07 | 26 02    : BNE  $EE0B
        ee09 | c0 10    : SUBB #$10  // decrease code -10
        ee0b | 81 fe    : CMPA #$FE
        ee0d | 26 02    : BNE  $EE11
        ee0f | cb 10    : ADDB #$10  // increase code +10
        ee11 | d7 10    : STB  $10
        ee13 | 81 ef    : CMPA #$EF
        ee15 | 27 06    : BEQ  $EE1D
        ee17 | 81 df    : CMPA #$DF
        ee19 | 26 05    : BNE  $EE20
        ee1b | c6 27    : LDB  #$27  // stop sound
        ee1d | f7 18 0c : STB  $180C // send sound code
        ee20 | 20 ce    : BRA  $EDF0
        -->
    </script>
    <script state="run">
        <output format="----- captain silver 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@0010</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.md@8848 =         b6180543</action>
        <action>maincpu.mq@edf0 = 0000000000000000</action>
        <action>maincpu.mq@edf8 = 0000000000000000</action>
        <action>maincpu.mq@ee00 = 0000000000000000</action>
        <action>maincpu.mq@ee08 = 0000000000000000</action>
        <action>maincpu.mq@ee10 = 0000000000000000</action>
        <action>maincpu.mq@ee18 = 0000000000000000</action>
        <action>maincpu.mq@ee20 = 0000000000000000</action>
    </script>
</cheat>
"sound test mode" : rewrite routine. add up/down key (code ±10).

[csilver]+ Captain Silver

Posted: Tue Mar 05, 2024 1:18 am
by jman
csilver.xml

Code: Select all

<!-- Captain Silver (World) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>sub.mb@41D3 = 1A</action>
            <action>sub.mb@436A = 20</action>
            <action>sub.mb@46BC = 20</action>
        </script>
        <script state="off">
            <action>sub.mb@41D3 = 05</action>
            <action>sub.mb@436A = 24</action>
            <action>sub.mb@46BC = 24</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@9900 = BDFE7012        </action> <!-- jump -->
            <action>maincpu.md@9DD3 = BDFE7012        </action> <!-- stand -->
            <action>maincpu.mq@FE70 = DC13C51027028A10</action>
            <action>maincpu.mq@FE78 = 9713853039000000</action>
            <!--
            FE70 | DC 13 : LDD    $13
            FE72 | C5 10 : BITB   #$10
            FE74 | 27 02 : BEQ    $FE78
            FE76 | 8A 10 : ORA    #$10
            FE78 | 97 13 : STA    $13
            FE7A | 85 30 : BITA   #$30
            FE7C | 39    : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.md@9900 = 96138530        </action>
            <action>maincpu.md@9DD3 = DC138530        </action>
            <action>maincpu.mq@FE70 = 0000000000000000</action>
            <action>maincpu.mq@FE78 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@9DC5 = BDFE8012        </action>
            <action>maincpu.mq@FE80 = 9613852027034F97</action>
            <action>maincpu.mq@FE88 = 4296428102390000</action>
            <!--
            FE80 | 96 13 : LDA    $13
            FE82 | 85 20 : BITA   #$20
            FE84 | 27 03 : BEQ    $FE89
            FE86 | 4F    : CLRA
            FE87 | 97 42 : STA    $42
            FE89 | 96 42 : LDA    $42
            FE8B | 81 02 : CMPA   #$02
            FE8D | 39    : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.md@9DC5 = 96428102        </action>
            <action>maincpu.mq@FE80 = 0000000000000000</action>
            <action>maincpu.mq@FE88 = 0000000000000000</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>sub.mb@F994 = param</action>
        </script>
        <script state="off">
            <action>sub.mb@F994 = 39</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop voice by sound stop button -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@8848 = BDFEA043        </action>
            <action>maincpu.mq@FEA0 = 9701B61801910127</action>
            <action>maincpu.mq@FEA8 = F7D60081FB26015A</action>
            <action>maincpu.mq@FEB0 = 81F726015C81FD26</action>
            <action>maincpu.mq@FEB8 = 02C01081FE2602CB</action>
            <action>maincpu.mq@FEC0 = 10D70081EF270681</action>
            <action>maincpu.mq@FEC8 = DF2605C627F7180C</action>
            <action>maincpu.mq@FED0 = 20CE000000000000</action>
            <!--
            FEA0 | 97 01    : STA    $01
            FEA2 | B6 18 01 : LDA    $1801 // read input
            FEA5 | 91 01    : CMPA   $01
            FEA7 | 27 F7    : BEQ    $FEA0
            FEA9 | D6 00    : LDB    $00
            FEAB | 81 FB    : CMPA   #$FB
            FEAD | 26 01    : BNE    $FEB0
            FEAF | 5A       : DECB         // decrease code -01
            FEB0 | 81 F7    : CMPA   #$F7
            FEB2 | 26 01    : BNE    $FEB5
            FEB4 | 5C       : INCB         // increase code +01
            FEB5 | 81 FD    : CMPA   #$FD
            FEB7 | 26 02    : BNE    $FEBB
            FEB9 | C0 10    : SUBB   #$10  // decrease code -10
            FEBB | 81 FE    : CMPA   #$FE
            FEBD | 26 02    : BNE    $FEC1
            FEBF | CB 10    : ADDB   #$10  // increase code +10
            FEC1 | D7 00    : STB    $00
            FEC3 | 81 EF    : CMPA   #$EF
            FEC5 | 27 06    : BEQ    $FECD // play sound
            FEC7 | 81 DF    : CMPA   #$DF
            FEC9 | 26 05    : BNE    $FED0
            FECB | C6 27    : LDB    #$27  // stop sound
            FECD | F7 18 0C : STB    $180C // send sound code
            FED0 | 20 CE    : BRA    $FEA0
            -->
        </script>
        <script state="run">
            <output format="----- captain silver 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@0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@8848 = B6180543        </action>
            <action>maincpu.mq@FEA0 = 0000000000000000</action>
            <action>maincpu.mq@FEA8 = 0000000000000000</action>
            <action>maincpu.mq@FEB0 = 0000000000000000</action>
            <action>maincpu.mq@FEB8 = 0000000000000000</action>
            <action>maincpu.mq@FEC0 = 0000000000000000</action>
            <action>maincpu.mq@FEC8 = 0000000000000000</action>
            <action>maincpu.mq@FED0 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
csilverj.xml

Code: Select all

<!-- Captain Silver (Japan, revision 3) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>sub.mb@41D3 = 1A</action>
            <action>sub.mb@436A = 20</action>
            <action>sub.mb@46BC = 20</action>
        </script>
        <script state="off">
            <action>sub.mb@41D3 = 05</action>
            <action>sub.mb@436A = 24</action>
            <action>sub.mb@46BC = 24</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@98E2 = BDEDD012        </action> <!-- jump -->
            <action>maincpu.md@9DB5 = BDEDD012        </action> <!-- stand -->
            <action>maincpu.mq@EDD0 = DC13C51027028A10</action>
            <action>maincpu.mq@EDD8 = 9713853039000000</action>
            <!--
            EDD0 | DC 13 : LDD    $13
            EDD2 | C5 10 : BITB   #$10
            EDD4 | 27 02 : BEQ    $EDD8
            EDD6 | 8A 10 : ORA    #$10
            EDD8 | 97 13 : STA    $13
            EDDA | 85 30 : BITA   #$30
            EDDC | 39    : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.md@98E2 = 96138530        </action>
            <action>maincpu.md@9DB5 = DC138530        </action>
            <action>maincpu.mq@EDD0 = 0000000000000000</action>
            <action>maincpu.mq@EDD8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@9DA7 = BDEDE012        </action>
            <action>maincpu.mq@EDE0 = 9613852027034F97</action>
            <action>maincpu.mq@EDE8 = 4296428102390000</action>
            <!--
            EDE0 | 96 13 : LDA    $13
            EDE2 | 85 20 : BITA   #$20
            EDE4 | 27 03 : BEQ    $EDE9
            EDE6 | 4F    : CLRA
            EDE7 | 97 42 : STA    $42
            EDE9 | 96 42 : LDA    $42
            EDEB | 81 02 : CMPA   #$02
            EDED | 39    : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.md@9DA7 = 96428102        </action>
            <action>maincpu.mq@EDE0 = 0000000000000000</action>
            <action>maincpu.mq@EDE8 = 0000000000000000</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>sub.mb@F994 = param</action>
        </script>
        <script state="off">
            <action>sub.mb@F994 = 39</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop voice by sound stop button -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@8848 = BDEDF043        </action>
            <action>maincpu.mq@EDF0 = 9701B61801910127</action>
            <action>maincpu.mq@EDF8 = F7D60081FB26015A</action>
            <action>maincpu.mq@EE00 = 81F726015C81FD26</action>
            <action>maincpu.mq@EE08 = 02C01081FE2602CB</action>
            <action>maincpu.mq@EE10 = 10D70081EF270681</action>
            <action>maincpu.mq@EE18 = DF2605C627F7180C</action>
            <action>maincpu.mq@EE20 = 20CE000000000000</action>
            <!--
            EDF0 | 97 01    : STA    $01
            EDF2 | B6 18 01 : LDA    $1801 // read input
            EDF5 | 91 01    : CMPA   $01
            EDF7 | 27 F7    : BEQ    $EDF0
            EDF9 | D6 00    : LDB    $00
            EDFB | 81 FB    : CMPA   #$FB
            EDFD | 26 01    : BNE    $EE00
            EDFF | 5A       : DECB         // decrease code -01
            EE00 | 81 F7    : CMPA   #$F7
            EE02 | 26 01    : BNE    $EE05
            EE04 | 5C       : INCB         // increase code +01
            EE05 | 81 FD    : CMPA   #$FD
            EE07 | 26 02    : BNE    $EE0B
            EE09 | C0 10    : SUBB   #$10  // decrease code -10
            EE0B | 81 FE    : CMPA   #$FE
            EE0D | 26 02    : BNE    $EE11
            EE0F | CB 10    : ADDB   #$10  // increase code +10
            EE11 | D7 00    : STB    $00
            EE13 | 81 EF    : CMPA   #$EF
            EE15 | 27 06    : BEQ    $EE1D // play sound
            EE17 | 81 DF    : CMPA   #$DF
            EE19 | 26 05    : BNE    $EE20
            EE1B | C6 27    : LDB    #$27  // stop sound
            EE1D | F7 18 0C : STB    $180C // send sound code
            EE20 | 20 CE    : BRA    $EDF0
            -->
        </script>
        <script state="run">
            <output format="----- captain silver 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@0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@8848 = B6180543        </action>
            <action>maincpu.mq@EDF0 = 0000000000000000</action>
            <action>maincpu.mq@EDF8 = 0000000000000000</action>
            <action>maincpu.mq@EE00 = 0000000000000000</action>
            <action>maincpu.mq@EE08 = 0000000000000000</action>
            <action>maincpu.mq@EE10 = 0000000000000000</action>
            <action>maincpu.mq@EE18 = 0000000000000000</action>
            <action>maincpu.mq@EE20 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
csilverja.xml

Code: Select all

<!-- Captain Silver (Japan, revision 1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>sub.mb@41D3 = 1A</action>
            <action>sub.mb@436A = 20</action>
            <action>sub.mb@46BC = 20</action>
        </script>
        <script state="off">
            <action>sub.mb@41D3 = 05</action>
            <action>sub.mb@436A = 24</action>
            <action>sub.mb@46BC = 24</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@98E2 = BDF02012        </action> <!-- jump -->
            <action>maincpu.md@9DB5 = BDF02012        </action> <!-- stand -->
            <action>maincpu.mq@F020 = DC13C51027028A10</action>
            <action>maincpu.mq@F028 = 9713853039000000</action>
            <!--
            F020 | DC 13 : LDD    $13
            F022 | C5 10 : BITB   #$10
            F024 | 27 02 : BEQ    $F028
            F026 | 8A 10 : ORA    #$10
            F028 | 97 13 : STA    $13
            F02A | 85 30 : BITA   #$30
            F02C | 39    : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.md@98E2 = 96138530        </action>
            <action>maincpu.md@9DB5 = DC138530        </action>
            <action>maincpu.mq@F020 = 0000000000000000</action>
            <action>maincpu.mq@F028 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@9DA7 = BDF03012        </action>
            <action>maincpu.mq@F030 = 9613852027034F97</action>
            <action>maincpu.mq@F038 = 4296428102390000</action>
            <!--
            F030 | 96 13 : LDA    $13
            F032 | 85 20 : BITA   #$20
            F034 | 27 03 : BEQ    $F039
            F036 | 4F    : CLRA
            F037 | 97 42 : STA    $42
            F039 | 96 42 : LDA    $42
            F03B | 81 02 : CMPA   #$02
            F03D | 39    : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.md@9DA7 = 96428102        </action>
            <action>maincpu.mq@F030 = 0000000000000000</action>
            <action>maincpu.mq@F038 = 0000000000000000</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>sub.mb@F994 = param</action>
        </script>
        <script state="off">
            <action>sub.mb@F994 = 39</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop voice by sound stop button -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@8848 = BDF04043        </action>
            <action>maincpu.mq@F040 = 9701B61801910127</action>
            <action>maincpu.mq@F048 = F7D60081FB26015A</action>
            <action>maincpu.mq@F050 = 81F726015C81FD26</action>
            <action>maincpu.mq@F058 = 02C01081FE2602CB</action>
            <action>maincpu.mq@F060 = 10D70081EF270681</action>
            <action>maincpu.mq@F068 = DF2605C627F7180C</action>
            <action>maincpu.mq@F070 = 20CE000000000000</action>
            <!--
            F040 | 97 01    : STA    $01
            F042 | B6 18 01 : LDA    $1801 // read input
            F045 | 91 01    : CMPA   $01
            F047 | 27 F7    : BEQ    $F040
            F049 | D6 00    : LDB    $00
            F04B | 81 FB    : CMPA   #$FB
            F04D | 26 01    : BNE    $F050
            F04F | 5A       : DECB         // decrease code -01
            F050 | 81 F7    : CMPA   #$F7
            F052 | 26 01    : BNE    $F055
            F054 | 5C       : INCB         // increase code +01
            F055 | 81 FD    : CMPA   #$FD
            F057 | 26 02    : BNE    $F05B
            F059 | C0 10    : SUBB   #$10  // decrease code -10
            F05B | 81 FE    : CMPA   #$FE
            F05D | 26 02    : BNE    $F061
            F05F | CB 10    : ADDB   #$10  // increase code +10
            F061 | D7 00    : STB    $00
            F063 | 81 EF    : CMPA   #$EF
            F065 | 27 06    : BEQ    $F06D // play sound
            F067 | 81 DF    : CMPA   #$DF
            F069 | 26 05    : BNE    $F070
            F06B | C6 27    : LDB    #$27  // stop sound
            F06D | F7 18 0C : STB    $180C // send sound code
            F070 | 20 CE    : BRA    $F040
            -->
        </script>
        <script state="run">
            <output format="----- captain silver 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@0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@8848 = B6180543        </action>
            <action>maincpu.mq@F040 = 0000000000000000</action>
            <action>maincpu.mq@F048 = 0000000000000000</action>
            <action>maincpu.mq@F050 = 0000000000000000</action>
            <action>maincpu.mq@F058 = 0000000000000000</action>
            <action>maincpu.mq@F060 = 0000000000000000</action>
            <action>maincpu.mq@F068 = 0000000000000000</action>
            <action>maincpu.mq@F070 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>