searchar.xml
Code: Select all
<!-- SAR - Search And Rescue (World) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@3217 = 16</action> <!-- P2 enemy -->
<action>maincpu.mb@322D = 00</action> <!-- P1 enemy -->
<action>maincpu.mb@323B = F2</action> <!-- P2 bullet -->
<action>maincpu.mb@3247 = E6</action> <!-- P1 bullet -->
<action>maincpu.mb@32ED = 40</action> <!-- P2 enemy -->
<action>maincpu.mb@3313 = 1A</action> <!-- P1 enemy -->
<action>maincpu.mb@E669 = 2C</action> <!-- alien tongue -->
<action>maincpu.mb@F008 = 60</action> <!-- iron hand -->
</script>
<script state="off">
<action>maincpu.mb@3217 = 18</action>
<action>maincpu.mb@322D = 02</action>
<action>maincpu.mb@323B = F4</action>
<action>maincpu.mb@3247 = E8</action>
<action>maincpu.mb@32ED = 42</action>
<action>maincpu.mb@3313 = 1C</action>
<action>maincpu.mb@E669 = 2E</action>
<action>maincpu.mb@F008 = 66</action>
</script>
</cheat>
<cheat desc="no fall down">
<script state="on">
<action>maincpu.mb@A346 = 60</action> <!-- walk -->
<action>maincpu.mb@A36E = 60</action> <!-- roll -->
</script>
<script state="off">
<action>maincpu.mb@A346 = 67</action>
<action>maincpu.mb@A36E = 67</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@AB03 = 02</action> <!-- P2 -->
<action>maincpu.mb@AB61 = 02</action> <!-- P1 -->
<action>maincpu.mb@AE5D = 04</action> <!-- P1 -->
<action>maincpu.mb@AFC1 = 04</action> <!-- P2 -->
</script>
<script state="off">
<action>maincpu.mb@AB03 = A2</action>
<action>maincpu.mb@AB61 = 2A</action>
<action>maincpu.mb@AE5D = 1C</action>
<action>maincpu.mb@AFC1 = 1C</action>
</script>
</cheat>
<cheat desc="joystick hack">
<script state="on">
<action>maincpu.md@0A73E = 00026FA0 </action>
<action>maincpu.mq@26FA0 = 43F900040196B1FC</action>
<action>maincpu.mq@26FA8 = 000405DE67025849</action>
<action>maincpu.mq@26FB0 = 4280302800140C00</action>
<action>maincpu.mq@26FB8 = 00FF6706E44832BB</action>
<action>maincpu.mq@26FC0 = 00084EB821BA4E75</action>
<action>maincpu.mq@26FC8 = 0000000100020003</action>
<action>maincpu.mq@26FD0 = 0004000500060007</action>
<!--
26FA0 | 43F9 0004 0196 : lea $40196.l, A1 // player 1
26FA6 | B1FC 0004 05DE : cmpa.l #$405de, A0
26FAC | 6702 : beq $26fb0
26FAE | 5849 : addq.w #4, A1 // player 2
26FB0 | 4280 : clr.l D0
26FB2 | 3028 0014 : move.w ($14,A0), D0
26FB6 | 0C00 00FF : cmpi.b #-$1, D0
26FBA | 6706 : beq $26fc2
26FBC | E448 : lsr.w #2, D0
26FBE | 32BB 0008 : move.w ($8,PC,D0.w), (A1) // read table
26FC2 | 4EB8 21BA : jsr $21ba.w
26FC6 | 4E75 : rts
26FC8 - 26FD7 : input/direction conversion table
input shift direction
00 00 00 : up
08 02 01 : upper-right
10 04 02 : right
18 06 03 : lower-right
20 08 04 : down
28 0a 05 : lower-left
30 0c 06 : left
38 0e 07 : upper-left
-->
</script>
<script state="off">
<action>maincpu.md@0A73E = 000021BA </action>
<action>maincpu.mq@26FA0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@26FA8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@26FB0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@26FB8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@26FC0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@26FC8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@26FD0 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- you can't stop sound code 0x3a by sound stop button -->
<comment>set "skip ram/rom check" then reset the game (F3)</comment>
<script state="on">
<action>maincpu.mq@00412 = 4EB900026FE06000</action>
<action>maincpu.mq@26FE0 = 41F90004000043F9</action>
<action>maincpu.mq@26FE8 = 0008000012001029</action>
<action>maincpu.mq@26FF0 = 0001B20067F60C00</action>
<action>maincpu.mq@26FF8 = 00FB660253100C00</action>
<action>maincpu.mq@27000 = 00F7660252100C00</action>
<action>maincpu.mq@27008 = 00FD660404100010</action>
<action>maincpu.mq@27010 = 0C0000FE66040610</action>
<action>maincpu.mq@27018 = 00100C0000EF6602</action>
<action>maincpu.mq@27020 = 12900C0000DF6602</action>
<action>maincpu.mq@27028 = 421160C0FFFFFFFF</action>
<!--
26FE0 | 41F9 0004 0000 : lea $40000.l, A0 // sound code address
26FE6 | 43F9 0008 0000 : lea $80000.l, A1 // sound latch address
26FEC | 1200 : move.b D0, D1
26FEE | 1029 0001 : move.b ($1,A1), D0 // read input ($80001)
26FF2 | B200 : cmp.b D0, D1
26FF4 | 67F6 : beq $26fec
26FF6 | 0C00 00FB : cmpi.b #-$5, D0
26FFA | 6602 : bne $26ffe
26FFC | 5310 : subq.b #1, (A0) // decrease code -01
26FFE | 0C00 00F7 : cmpi.b #-$9, D0
27002 | 6602 : bne $27006
27004 | 5210 : addq.b #1, (A0) // increase code +01
27006 | 0C00 00FD : cmpi.b #-$3, D0
2700A | 6604 : bne $27010
2700C | 0410 0010 : subi.b #$10, (A0) // decrease code -10
27010 | 0C00 00FE : cmpi.b #-$2, D0
27014 | 6604 : bne $2701a
27016 | 0610 0010 : addi.b #$10, (A0) // increase code +10
2701A | 0C00 00EF : cmpi.b #-$11, D0
2701E | 6602 : bne $27022
27020 | 1290 : move.b (A0), (A1) // play sound
27022 | 0C00 00DF : cmpi.b #-$21, D0
27026 | 6602 : bne $2702a
27028 | 4211 : clr.b (A1) // stop sound
2702A | 60C0 : bra $26fec
-->
<action>soundcpu.md@08CB = 00AF10CD </action>
<action>soundcpu.mq@AF10 = 80D30F20A7F8003A</action>
<action>soundcpu.mq@AF18 = CD80D3803E0091CD</action>
<action>soundcpu.mq@AF20 = 32AF470000C30091</action>
<action>soundcpu.mq@AF28 = 78F12832013EF116</action>
<action>soundcpu.mq@AF30 = FFFFFFFFFFFFFFC9</action>
<!--
AF10 | 3A 00 F8 : ld a,($F800) // read sound code from maincpu
AF13 | A7 : and a
AF14 | 20 0F : jr nz,$AF25
AF16 | D3 80 : out ($80),a // reset sample
AF18 | CD 91 00 : call $0091
AF1B | 3E 80 : ld a,$80 // enable sample
AF1D | D3 80 : out ($80),a
AF1F | CD 91 00 : call $0091
AF22 | C3 00 00 : jp $0000 // reset soundcpu
AF25 | 47 : ld b,a
AF26 | AF : xor a // initialize sound flgas
AF27 | 32 16 F1 : ld ($F116),a
AF2A | 3E 01 : ld a,$01
AF2C | 32 28 F1 : ld ($F128),a
AF2F | 78 : ld a,b
AF30 | C9 : ret
-->
</script>
<script state="run">
<output format="----- search and rescue 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="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@40000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mq@00412 = 4A39000E00006000</action>
<action> maincpu.mq@26FE0 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@26FE8 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@26FF0 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@26FF8 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27000 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27008 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27010 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27018 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27020 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27028 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.md@008CB = 00F8003A </action>
<action>soundcpu.mq@0AF10 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF18 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF20 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF28 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF30 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action> maincpu.mw@0408 = 040A</action>
<action>soundcpu.mw@0C61 = 5A18</action>
</script>
<script state="off">
<action> maincpu.mw@0408 = 5F56</action>
<action>soundcpu.mw@0C61 = 013E</action>
</script>
</cheat>
</mamecheat>
searcharu.xml
Code: Select all
<!-- SAR - Search And Rescue (US) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@323D = 16</action> <!-- P2 enemy -->
<action>maincpu.mb@3253 = 00</action> <!-- P1 enemy -->
<action>maincpu.mb@3261 = F2</action> <!-- P2 bullet -->
<action>maincpu.mb@326D = E6</action> <!-- P1 bullet -->
<action>maincpu.mb@3313 = 40</action> <!-- P2 enemy -->
<action>maincpu.mb@3339 = 1A</action> <!-- P1 enemy -->
<action>maincpu.mb@EA4D = 52</action> <!-- alien tongue -->
<action>maincpu.mb@F3EC = 60</action> <!-- iron hand -->
</script>
<script state="off">
<action>maincpu.mb@323D = 18</action>
<action>maincpu.mb@3253 = 02</action>
<action>maincpu.mb@3261 = F4</action>
<action>maincpu.mb@326D = E8</action>
<action>maincpu.mb@3313 = 42</action>
<action>maincpu.mb@3339 = 1C</action>
<action>maincpu.mb@EA4D = 54</action>
<action>maincpu.mb@F3EC = 66</action>
</script>
</cheat>
<cheat desc="no fall down">
<script state="on">
<action>maincpu.mb@A72A = 60</action> <!-- walk -->
<action>maincpu.mb@A752 = 60</action> <!-- roll -->
</script>
<script state="off">
<action>maincpu.mb@A72A = 67</action>
<action>maincpu.mb@A752 = 67</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@AEE7 = 02</action> <!-- P2 -->
<action>maincpu.mb@AF45 = 02</action> <!-- P1 -->
<action>maincpu.mb@B241 = 04</action> <!-- P1 -->
<action>maincpu.mb@B3A5 = 04</action> <!-- P2 -->
</script>
<script state="off">
<action>maincpu.mb@AEE7 = A2</action>
<action>maincpu.mb@AF45 = 2A</action>
<action>maincpu.mb@B241 = 1C</action>
<action>maincpu.mb@B3A5 = 1C</action>
</script>
</cheat>
<cheat desc="joystick hack">
<script state="on">
<action>maincpu.md@0AB22 = 00027440 </action>
<action>maincpu.mq@27440 = 43F900040196B1FC</action>
<action>maincpu.mq@27448 = 000405DE67025849</action>
<action>maincpu.mq@27450 = 4280302800140C00</action>
<action>maincpu.mq@27458 = 00FF6706E44832BB</action>
<action>maincpu.mq@27460 = 00084EB821E04E75</action>
<action>maincpu.mq@27468 = 0000000100020003</action>
<action>maincpu.mq@27470 = 0004000500060007</action>
<!--
27440 | 43F9 0004 0196 : lea $40196.l, A1 // player 1
27446 | B1FC 0004 05DE : cmpa.l #$405de, A0
2744C | 6702 : beq $27450
2744E | 5849 : addq.w #4, A1 // player 2
27450 | 4280 : clr.l D0
27452 | 3028 0014 : move.w ($14,A0), D0
27456 | 0C00 00FF : cmpi.b #-$1, D0
2745A | 6706 : beq $27462
2745C | E448 : lsr.w #2, D0
2745E | 32BB 0008 : move.w ($8,PC,D0.w), (A1) // read table
27462 | 4EB8 21E0 : jsr $21e0.w
27466 | 4E75 : rts
27468 - 27377 : input/direction conversion table
input shift direction
00 00 00 : up
08 02 01 : upper-right
10 04 02 : right
18 06 03 : lower-right
20 08 04 : down
28 0a 05 : lower-left
30 0c 06 : left
38 0e 07 : upper-left
-->
</script>
<script state="off">
<action>maincpu.md@0AA7E = 000021E0 </action>
<action>maincpu.mq@27440 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27448 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27450 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27458 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27460 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27468 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27470 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- you can't stop sound code 0x3a by sound stop button -->
<comment>set "skip ram/rom check" then reset the game (F3)</comment>
<script state="on">
<action>maincpu.mq@00412 = 4EB9000274806000</action>
<action>maincpu.mq@27480 = 41F90004000043F9</action>
<action>maincpu.mq@27488 = 0008000012001029</action>
<action>maincpu.mq@27490 = 0001B20067F60C00</action>
<action>maincpu.mq@27498 = 00FB660253100C00</action>
<action>maincpu.mq@274A0 = 00F7660252100C00</action>
<action>maincpu.mq@274A8 = 00FD660404100010</action>
<action>maincpu.mq@274B0 = 0C0000FE66040610</action>
<action>maincpu.mq@274B8 = 00100C0000EF6602</action>
<action>maincpu.mq@274C0 = 12900C0000DF6602</action>
<action>maincpu.mq@274C8 = 421160C0FFFFFFFF</action>
<!--
27480 | 41F9 0004 0000 : lea $40000.l, A0 // sound code address
27486 | 43F9 0008 0000 : lea $80000.l, A1 // sound latch address
2748C | 1200 : move.b D0, D1
2748E | 1029 0001 : move.b ($1,A1), D0 // read input ($80001)
27492 | B200 : cmp.b D0, D1
27494 | 67F6 : beq $2748c
27496 | 0C00 00FB : cmpi.b #-$5, D0
2749A | 6602 : bne $2749e
2749C | 5310 : subq.b #1, (A0) // decrease code -01
2749E | 0C00 00F7 : cmpi.b #-$9, D0
274A2 | 6602 : bne $274a6
274A4 | 5210 : addq.b #1, (A0) // increase code +01
274A6 | 0C00 00FD : cmpi.b #-$3, D0
274AA | 6604 : bne $274b0
274AC | 0410 0010 : subi.b #$10, (A0) // decrease code -10
274B0 | 0C00 00FE : cmpi.b #-$2, D0
274B4 | 6604 : bne $274ba
274B6 | 0610 0010 : addi.b #$10, (A0) // increase code +10
274BA | 0C00 00EF : cmpi.b #-$11, D0
274BE | 6602 : bne $274c2
274C0 | 1290 : move.b (A0), (A1) // play sound
274C2 | 0C00 00DF : cmpi.b #-$21, D0
274C6 | 6602 : bne $274ca
274C8 | 4211 : clr.b (A1) // stop sound
274CA | 60C0 : bra $2748c
-->
<action>soundcpu.md@08CB = 00AF10CD </action>
<action>soundcpu.mq@AF10 = 80D30F20A7F8003A</action>
<action>soundcpu.mq@AF18 = CD80D3803E0091CD</action>
<action>soundcpu.mq@AF20 = 32AF470000C30091</action>
<action>soundcpu.mq@AF28 = 78F12832013EF116</action>
<action>soundcpu.mq@AF30 = FFFFFFFFFFFFFFC9</action>
<!--
AF10 | 3A 00 F8 : ld a,($F800) // read sound code from maincpu
AF13 | A7 : and a
AF14 | 20 0F : jr nz,$AF25
AF16 | D3 80 : out ($80),a // reset sample
AF18 | CD 91 00 : call $0091
AF1B | 3E 80 : ld a,$80 // enable sample
AF1D | D3 80 : out ($80),a
AF1F | CD 91 00 : call $0091
AF22 | C3 00 00 : jp $0000 // reset soundcpu
AF25 | 47 : ld b,a
AF26 | AF : xor a // initialize sound flgas
AF27 | 32 16 F1 : ld ($F116),a
AF2A | 3E 01 : ld a,$01
AF2C | 32 28 F1 : ld ($F128),a
AF2F | 78 : ld a,b
AF30 | C9 : ret
-->
</script>
<script state="run">
<output format="----- search and rescue 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="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@40000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mq@00412 = 4A39000E00006000</action>
<action> maincpu.mq@27480 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27488 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27490 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27498 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@274A0 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@274A8 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@274B0 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@274B8 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@274C0 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@274C8 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.md@008CB = 00F8003A </action>
<action>soundcpu.mq@0AF10 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF18 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF20 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF28 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF30 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action> maincpu.mw@0408 = 040A</action>
<action>soundcpu.mw@0C61 = 5A18</action>
</script>
<script state="off">
<action> maincpu.mw@0408 = 6514</action>
<action>soundcpu.mw@0C61 = 013E</action>
</script>
</cheat>
</mamecheat>
searcharj.xml
Code: Select all
<!-- SAR - Search And Rescue (Japan version 3) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@3217 = 16</action> <!-- P2 enemy -->
<action>maincpu.mb@322D = 00</action> <!-- P1 enemy -->
<action>maincpu.mb@323B = F2</action> <!-- P2 bullet -->
<action>maincpu.mb@3247 = E6</action> <!-- P1 bullet -->
<action>maincpu.mb@32ED = 40</action> <!-- P2 enemy -->
<action>maincpu.mb@3313 = 1A</action> <!-- P1 enemy -->
<action>maincpu.mb@E9A9 = 2C</action> <!-- alien tongue -->
<action>maincpu.mb@F348 = 60</action> <!-- iron hand -->
</script>
<script state="off">
<action>maincpu.mb@3217 = 18</action>
<action>maincpu.mb@322D = 02</action>
<action>maincpu.mb@323B = F4</action>
<action>maincpu.mb@3247 = E8</action>
<action>maincpu.mb@32ED = 42</action>
<action>maincpu.mb@3313 = 1C</action>
<action>maincpu.mb@E9A9 = 2E</action>
<action>maincpu.mb@F348 = 66</action>
</script>
</cheat>
<cheat desc="no fall down">
<script state="on">
<action>maincpu.mb@A686 = 60</action> <!-- walk -->
<action>maincpu.mb@A6AE = 60</action> <!-- roll -->
</script>
<script state="off">
<action>maincpu.mb@A686 = 67</action>
<action>maincpu.mb@A6AE = 67</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@AE43 = 02</action> <!-- P2 -->
<action>maincpu.mb@AEA1 = 02</action> <!-- P1 -->
<action>maincpu.mb@B19D = 04</action> <!-- P1 -->
<action>maincpu.mb@B301 = 04</action> <!-- P2 -->
</script>
<script state="off">
<action>maincpu.mb@AE43 = A2</action>
<action>maincpu.mb@AEA1 = 2A</action>
<action>maincpu.mb@B19D = 1C</action>
<action>maincpu.mb@B301 = 1C</action>
</script>
</cheat>
<cheat desc="joystick hack">
<script state="on">
<action>maincpu.md@0AA7E = 000272E0 </action>
<action>maincpu.mq@272E0 = 43F900040196B1FC</action>
<action>maincpu.mq@272E8 = 000405DE67025849</action>
<action>maincpu.mq@272F0 = 4280302800140C00</action>
<action>maincpu.mq@272F8 = 00FF6706E44832BB</action>
<action>maincpu.mq@27300 = 00084EB821BA4E75</action>
<action>maincpu.mq@27308 = 0000000100020003</action>
<action>maincpu.mq@27310 = 0004000500060007</action>
<!--
272E0 | 43F9 0004 0196 : lea $40196.l, A1 // player 1
272E6 | B1FC 0004 05DE : cmpa.l #$405de, A0
272EC | 6702 : beq $272f0
272EE | 5849 : addq.w #4, A1 // player 2
272F0 | 4280 : clr.l D0
272F2 | 3028 0014 : move.w ($14,A0), D0
272F6 | 0C00 00FF : cmpi.b #-$1, D0
272FA | 6706 : beq $27302
272FC | E448 : lsr.w #2, D0
272FE | 32BB 0008 : move.w ($8,PC,D0.w), (A1) // read table
27302 | 4EB8 21BA : jsr $21ba.w
27306 | 4E75 : rts
27308 - 27317 : input/direction conversion table
input shift direction
00 00 00 : up
08 02 01 : upper-right
10 04 02 : right
18 06 03 : lower-right
20 08 04 : down
28 0a 05 : lower-left
30 0c 06 : left
38 0e 07 : upper-left
-->
</script>
<script state="off">
<action>maincpu.md@0AA7E = 000021BA </action>
<action>maincpu.mq@272E0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@272E8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@272F0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@272F8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27300 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27308 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@27310 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- you can't stop sound code 0x3a by sound stop button -->
<comment>set "skip ram/rom check" then reset the game (F3)</comment>
<script state="on">
<action>maincpu.mq@00412 = 4EB9000273206000</action>
<action>maincpu.mq@27320 = 41F90004000043F9</action>
<action>maincpu.mq@27328 = 0008000012001029</action>
<action>maincpu.mq@27330 = 0001B20067F60C00</action>
<action>maincpu.mq@27338 = 00FB660253100C00</action>
<action>maincpu.mq@27340 = 00F7660252100C00</action>
<action>maincpu.mq@27348 = 00FD660404100010</action>
<action>maincpu.mq@27350 = 0C0000FE66040610</action>
<action>maincpu.mq@27358 = 00100C0000EF6602</action>
<action>maincpu.mq@27360 = 12900C0000DF6602</action>
<action>maincpu.mq@27368 = 421160C0FFFFFFFF</action>
<!--
27320 | 41F9 0004 0000 : lea $40000.l, A0 // sound code address
27326 | 43F9 0008 0000 : lea $80000.l, A1 // sound latch address
2732C | 1200 : move.b D0, D1
2732E | 1029 0001 : move.b ($1,A1), D0 // read input ($80001)
27332 | B200 : cmp.b D0, D1
27334 | 67F6 : beq $2732c
27336 | 0C00 00FB : cmpi.b #-$5, D0
2733A | 6602 : bne $2733e
2733C | 5310 : subq.b #1, (A0) // decrease code -01
2733E | 0C00 00F7 : cmpi.b #-$9, D0
27342 | 6602 : bne $27346
27344 | 5210 : addq.b #1, (A0) // increase code +01
27346 | 0C00 00FD : cmpi.b #-$3, D0
2734A | 6604 : bne $27350
2734C | 0410 0010 : subi.b #$10, (A0) // decrease code -10
27350 | 0C00 00FE : cmpi.b #-$2, D0
27354 | 6604 : bne $2735a
27356 | 0610 0010 : addi.b #$10, (A0) // increase code +10
2735A | 0C00 00EF : cmpi.b #-$11, D0
2735E | 6602 : bne $27362
27360 | 1290 : move.b (A0), (A1) // play sound
27362 | 0C00 00DF : cmpi.b #-$21, D0
27366 | 6602 : bne $2736a
27368 | 4211 : clr.b (A1) // stop sound
2736A | 60C0 : bra $2732c
-->
<action>soundcpu.md@08CB = 00AF10CD </action>
<action>soundcpu.mq@AF10 = 80D30F20A7F8003A</action>
<action>soundcpu.mq@AF18 = CD80D3803E0091CD</action>
<action>soundcpu.mq@AF20 = 32AF470000C30091</action>
<action>soundcpu.mq@AF28 = 78F12832013EF116</action>
<action>soundcpu.mq@AF30 = FFFFFFFFFFFFFFC9</action>
<!--
AF10 | 3A 00 F8 : ld a,($F800) // read sound code from maincpu
AF13 | A7 : and a
AF14 | 20 0F : jr nz,$AF25
AF16 | D3 80 : out ($80),a // reset sample
AF18 | CD 91 00 : call $0091
AF1B | 3E 80 : ld a,$80 // enable sample
AF1D | D3 80 : out ($80),a
AF1F | CD 91 00 : call $0091
AF22 | C3 00 00 : jp $0000 // reset soundcpu
AF25 | 47 : ld b,a
AF26 | AF : xor a // initialize sound flgas
AF27 | 32 16 F1 : ld ($F116),a
AF2A | 3E 01 : ld a,$01
AF2C | 32 28 F1 : ld ($F128),a
AF2F | 78 : ld a,b
AF30 | C9 : ret
-->
</script>
<script state="run">
<output format="----- search and rescue 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="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@40000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mq@00412 = 4A39000E00006000</action>
<action> maincpu.mq@27320 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27328 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27330 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27338 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27340 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27348 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27350 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27358 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27360 = FFFFFFFFFFFFFFFF</action>
<action> maincpu.mq@27368 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.md@008CB = 00F8003A </action>
<action>soundcpu.mq@0AF10 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF18 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF20 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF28 = FFFFFFFFFFFFFFFF</action>
<action>soundcpu.mq@0AF30 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action> maincpu.mw@0408 = 040A</action>
<action>soundcpu.mw@0C61 = 5A18</action>
</script>
<script state="off">
<action> maincpu.mw@0408 = 6296</action>
<action>soundcpu.mw@0C61 = 013E</action>
</script>
</cheat>
</mamecheat>
- "no hit" : Retraced program code.
- "sound test mode" : Rewritten routine. Fixed sfx unstop problem except sound code 0x3a.