We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Notes:Shadowrun (SNES)
Jump to navigation
Jump to search
This page contains notes for the game Shadowrun (SNES).
Location list
| To do: are there unused rooms lurking? |
Pro Action Replay code 9CFC6Cxx can be used to change the destination when using the open Matchbox cheat.
00 01 outside morgue 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F morgue lobby 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 debug room D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED "You have reached the end. Thank you for playing Shadowrun. (C) 1993 DATAEAST. Developed by BEAM Software." EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
Script commands
command, format, description
00 00 xx push xx 0A 0A xx push xx + #$FF00 14 14 xxxx push xxxx 16 16 ?? 2C 2C ?? 34 34 ?? 44 44 jjjj branch. jjjj = number of bytes to branch from beginning of script 48 48 jjjj jump. jjjj = number of bytes to jump from beginning of script 56 56 end script 58 58 ii multi-purpose, see below section. ii is an index for an unknown table starting at 82D895, and it's also * 2 for a jump table starting at 82D604 5E 5E subtraction 7E 7E 80 80 86 86 increment last item placed on stack 8C 8C comparison 9C 9C comparison AA AA check if equal BA BA BC BC (unk) display text, may be a variable length command BE BE C0 C0 push #$0000 C2 C2 Script command 58 58 58 4F used to get x coord in Matchbox script 58 58 50 used to get y coord in Matchbox script
Breakpoints
80F353, execute - breaks on each script command
Debug room
You must be standing inside the red box to enable the first Matchbox beep.
Matchbox script
The Matchbox script is located at offset 0E7C49-0E7D7F (SNES address 9CFC49-9CFD7F)
0E7C40 | 2C 0000 1858 570A 0E7C50 | FFAA 442F 0014 0002 5813 1400 027E BE44 0E7C60 | 2C00 18E2 2D00 1A58 1258 7F00 D258 5600 0E7C70 | 01BA 589E BC48 3301 0080 5813 0080 AA44 0E7C80 | 3301 00F0 0081 1400 0800 0400 1900 1400 0E7C90 | 0258 C758 7E00 0158 17AA 587E 001F 5817 0E7CA0 | AA80 4433 0158 2858 4F14 6602 5E34 0358 0E7CB0 | 2858 5014 D501 5E34 0500 1858 5700 01AA 0E7CC0 | 1603 C09C 7E16 05C0 9C7E 587E 0001 5817 0E7CD0 | AA7E 0018 5857 0002 AA16 03C0 8C7E 1605 0E7CE0 | C09C 7E58 7E00 0158 17AA 7E80 0018 5857 0E7CF0 | 0003 AA16 03C0 9C7E 1605 C08C 7E58 7E00 0E7D00 | 0158 17AA 7E80 0018 5857 0004 AA16 03C0 0E7D10 | 8C7E 1605 C08C 7E58 7E00 0158 17AA 7E80 0E7D20 | 0018 5857 0005 AA58 7E00 1F58 17AA 7E80 0E7D30 | 442E 0100 1858 5700 03AA 44FE 0000 0100 0E7D40 | FF00 500A FF58 4C00 1858 5700 05AA 4418 0E7D50 | 010A FE00 1858 1200 0100 FF00 660A FF58 0E7D60 | 4C00 0300 FF00 4E0A FF58 4C00 1858 5786 0E7D70 | 0018 5812 4833 01C0 0018 5812 C258 B856
offset, SNES address, commands, description
startup 0E7C49 | 9CFC49 | 2C 00 0E7C4B | 9CFC4B | 00 18 push #$18 0E7C4D | 9CFC4D | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7C4F | 9CFC4F | 0A FF push #$FFFF 0E7C51 | 9CFC51 | AA compare cheat counter to #$FFFF 0E7C52 | 9CFC52 | 42 2F 00 branch command 9CFC49 + 002F = 9CFC78 (goto 9CFC78 if cheat not already enabled) opened Matchbox menu with cheat active 0E7C55 | 9CFC55 | 14 00 02 0E7C58 | 9CFC58 | 58 13 exit Matchbox menu or Examine Matchbox with cheat active 0E7C5A | 9CFC5A | 14 00 02 0E7C5D | 9CFC5D | 7E 0E7C5E | 9CFC5E | BE 0E7C5F | 9CFC5F | 44 2C 00 branch command 9CFC49 + 002C = 9CFC75 Examine Matchbox with cheat active 0E7C62 | 9CFC62 | 18 E2 4D 0E7C65 | 9CFC65 | 00 1A push #$0A 0E7C67 | 9CFC67 | 58 12 0E7C69 | 9CFC69 | 58 7F 0E7C6B | 9CFC6B | 00 D2 push #$D2 (map D2 = debug room) 0E7C6D | 9CFC6D | 58 56 0E7C6F | 9CFC6F | 00 01 push #$01 0E7C71 | 9CFC71 | BA 0E7C72 | 9CFC72 | 58 9E 0E7C75 | 9CFC75 | 48 33 01 jump 9CFC49 + 0133 = 9CFD7C opened Matchbox menu without cheat active 0EFC78 | 9CFC78 | 00 80 push #$80 0E7C7A | 9CFC7A | 58 13 exit Matchbox menu or Examine Matchbox without cheat active 0E7C7C | 9CFC7C | 00 80 push #$80 0E7C7E | 9CFC7E | AA comparison 0E7C7F | 9CFC7F | 44 33 01 branch command 9CFC49 + 0133 = 9CFD7C Examine Matchbox without cheat active 0E7C82 | 9CFC82 | 00 F0 push #$F0 0E7C84 | 9CFC84 | 00 81 push #$81 0E7C86 | 9CFC86 | 14 00 08 0E7C89 | 9CFC89 | 00 04 push #$04 0E7C8B | 9CFC8B | 00 19 push #$19 0E7C8D | 9CFC8D | 00 14 push #$14 0E7C8F | 9CFC8F | 00 02 push #$02 0E7C91 | 9CFC91 | 58 C7 0E7C93 | 9CFC93 | 58 7E 0E7C95 | 9CFC95 | 00 01 push #$01 (map 01 = outside morgue) 0E7C97 | 9CFC97 | 58 17 0E7C99 | 9CFC99 | AA comparison 0E7C9A | 9CFC9A | 58 7E 0E7C9C | 9CFC9C | 00 1F push #$1F (map 1F = morgue lobby) 0E7C9E | 9CFC9E | 58 17 0E7CA0 | 9CFCA0 | AA comparison 0E7CA1 | 9CFCA1 | 80 0E7CA2 | 9CFCA2 | 44 33 01 branch command 9CFC49 + 0133 = 9CFD7C (goto 9CFD7C if on wrong map) 0E7CA5 | 9CFCA5 | 58 28 0E7CA7 | 9CFCA7 | 58 4F get x coord 0E7CA9 | 9CFCA9 | 14 66 02 push #$0266 minimum x coord (see screenshot above) 0E7CAC | 9CFCAC | 5E subtract minimum x coord from player x coord 0E7CAD | 9CFCAD | 34 03 0E7CAF | 9CFCAF | 58 28 0E7CB1 | 9CFCB1 | 58 50 get y coord 0E7CB3 | 9CFCB3 | 14 D5 01 push #$01D5 minimum y coord (see screenshot above) 0E7CB6 | 9CFCB6 | 5E subtract minimum y coord from player y coord 0E7CB7 | 9CFCB7 | 34 05 0E7CB9 | 9CFCB9 | 00 18 push #$18 0E7CBB | 9CFCBB | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7CBD | 9CFCBD | 00 01 push #01 0E7CBF | 9CFCBF | AA compare cheat counter to #$01 0E7CC0 | 9CFCC0 | 16 03 0E7CC2 | 9CFCC2 | C0 push #$0000 0E7CC3 | 9CFCC3 | 9C comparison 0E7CC4 | 9CFCC4 | 7E 0E7CC5 | 9CFCC5 | 16 05 0E7CC7 | 9CFCC7 | C0 push #$0000 0E7CC8 | 9CFCC8 | 9C comparison 0E7CC9 | 9CFCC9 | 7E 0E7CCA | 9CFCCA | 58 7E 0E7CCC | 9CFCCC | 00 01 push #$01 0E7CCE | 9CFCCE | 58 17 0E7CD0 | 9CFCD0 | AA comparison 0E7CD1 | 9CFCD1 | 7E 0E7CD2 | 9CFCD2 | 00 18 push #$18 0E7CD4 | 9CFCD4 | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7CD6 | 9CFCD6 | 00 02 push #$02 0E7CD8 | 9CFCD8 | AA compare cheat counter to #$02 0E7CD9 | 9CFCD9 | 16 03 0E7CDB | 9CFCDB | C0 push #$0000 0E7CDC | 9CFCDC | 8C comparison 0E7CDD | 9CFCDD | 7E 0E7CDE | 9CFCDE | 16 05 0E7CE0 | 9CFCE0 | C0 push #$0000 0E7CE1 | 9CFCE1 | 9C comparison 0E7CE2 | 9CFCE2 | 7E 0E7CE3 | 9CFCE2 | 58 7E 0E7CE5 | 9CFCE5 | 00 01 push #$01 0E7CE7 | 9CFCE7 | 58 17 0E7CE9 | 9CFCE9 | AA comparison 0E7CEA | 9CFCEA | 7E 0E7CEB | 9CFCEB | 80 0E7CEC | 9CFCEC | 00 18 push #$18 0E7CEE | 9CFCEE | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7CF0 | 9CFCF0 | 00 03 push #$03 0E7CF2 | 9CFCF2 | AA compare cheat counter to #$03 0E7CF3 | 9CFCF3 | 16 03 0E7CF5 | 9CFCF5 | C0 push #$0000 0E7CF6 | 9CFCF6 | 9C comparison 0E7CF7 | 9CFCF7 | 7E 0E7CF8 | 9CFCF8 | 16 05 0E7CFA | 9CFCFA | C0 push #$0000 0E7CFB | 9CFCFB | 8C comparison 0E7CFC | 9CFCFC | 7E 0E7CFD | 9CFCFD | 58 7E 0E7CFF | 9CFCFF | 00 01 push #$01 0E7D01 | 9CFD01 | 58 17 0E7D03 | 9CFD03 | AA comparison 0E7D04 | 9CFD04 | 7E 0E7D05 | 9CFD05 | 80 0E7D06 | 9CFD06 | 00 18 push #$18 0E7D08 | 9CFD08 | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7D0A | 9CFD0A | 00 04 push #$04 0E7D0C | 9CFD0C | AA compare cheat counter to #$04 0E7D0D | 9CFD0D | 16 03 0E7D0F | 9CFD0F | C0 push #$0000 0E7D10 | 9CFD10 | 8C comparison 0E7D11 | 9CFD11 | 7E 0E7D12 | 9CFD12 | 16 05 0E7D14 | 9CFD14 | C0 push #$0000 0E7D15 | 9CFD15 | 8C comparison 0E7D16 | 9CFD16 | 7E 0E7D17 | 9CFD17 | 58 7E 0E7D19 | 9CFD19 | 00 01 push #$01 0E7D1B | 9CFD1B | 58 17 0E7D1D | 9CFD1D | AA comparison 0E7D1E | 9CFD1E | 7E 0E7D1F | 9CFD1F | 80 0E7D20 | 9CFD20 | 00 18 push #$18 0E7D22 | 9CFD22 | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7D24 | 9CFD24 | 00 05 push #$05 0E7D26 | 9CFD26 | AA compare cheat counter to #$05 0E7D27 | 9CFD27 | 58 7E 0E7D29 | 9CFD29 | 00 1F push #$1F (map 1F = morgue lobby) 0E7D2B | 9CFD2B | 58 17 0E7D2D | 9CFD2D | AA comparison 0E7D2E | 9CFD2E | 7E 0E7D2F | 9CFD2F | 80 0E7D30 | 9CFD30 | 44 2E 01 branch command 9CFC49 + 012E = 9CFD77 (goto 9CFD77 if one of the cheat steps failed) beeping Matchbox section 0E7D33 | 9CFD33 | 00 18 push #18 0E7D35 | 9CFD35 | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7D37 | 9CFD37 | 00 03 push #$03 0E7D39 | 9CFD39 | AA compare cheat counter to #$03 0E7D3A | 9CFD3A | 44 FE 00 branch command 9CFC49 + 00FE = 9CFD47 (goto 9CFC47 if cheat counter != #$03) Matchbox cheat counter == #$03 double beep section 0E7D3D | 9CFD3D | 00 01 push #$01 0E7D3F | 9CFD3F | 00 FF push #$FF 0E7D41 | 9CFD41 | 00 50 push #$50 (sound index 50) 0E7D43 | 9CFD43 | 0A FF push #$FFFF 0E7D45 | 9CFD45 | 58 4C 0E7D47 | 9CFD47 | 00 18 push #$18 0E7D49 | 9CFD49 | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7D4B | 9CFD4B | 00 05 push #$05 0E7D4D | 9CFD4D | AA compare cheat counter to #$05 0E7D4E | 9CFD4E | 44 18 01 branch command 9CFC49 + 0118 = 9CFD61 (goto 9CFD61 if cheat counter != #$05) all cheat conditions met, enable cheat 0E7D51 | 9CFD51 | 0A FE push #$FFFE 0E7D53 | 9CFD53 | 00 18 push #$18 0E7D55 | 9CFD55 | 58 12 store result to cheat counter, 7E3BBB + 18 = 7E3BD3 0E7D57 | 9CFD57 | 00 01 push #$01 0E7D59 | 9CFD59 | 00 FF push #$FF 0E7F5B | 9CFD5B | 00 66 push #$66 0E7F5D | 9CFD5D | 0A FF push #$FFFF 0E7F61 | 9CFD61 | 00 03 push #$03 0E7F63 | 9CFD63 | 00 FF push #$FF 0E7F65 | 9CFD65 | 00 4E push #$4E (sound index 4E) 0E7F67 | 9CFD67 | 0A FF push #$FFFF 0E7F69 | 9CFD69 | 58 4C 0E7F6B | 9CFD6B | 00 18 push #$18 0E7F6D | 9CFD6D | 58 57 7E3BBB + 18 = 7E3BD3, copy cheat counter to 7E0000 0E7D6F | 9CFD6F | 86 cheat counter + 1 0E7D70 | 9CFD70 | 00 18 push #$18 0E7D72 | 9CFD72 | 58 12 store result to cheat counter, 7E3BBB + 18 = 7E3BD3 0E7D74 | 9CFD74 | 48 33 01 jump 9CFC49 + 0133 = 9CFD7C failed cheat, reset cheat counter back to #$0000 0E7D77 | 9CFD77 | C0 push #$0000 0E7D78 | 9CFD78 | 00 18 push #$18 0E7D7A | 9CFD7A | 58 12 store result to cheat counter, 7E3BBB + 18 = 7E3BD3 exit 0E7D7C | 9CFD7C | C2 0E7D7D | 9CFD7D | 58 B8 0E7F7F | 9CFD7F | 56 end
