-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathnotes.txt
295 lines (260 loc) · 15.7 KB
/
notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
=======================
= TODO =
=======================
* Hook capsule music ?
=======================
= Information =
=======================
LoROM 16MBit
7EFFC8 = BGM en memoire (Options screen)
$80/885B ; Play sound, A = Sound to play
20 B0 87 JSR $87B0 [$80:87B0]
$80/9A2D 4C B0 87 JMP $87B0 [$80:87B0]
; Toutes les endroits ou la routine play music est appelle
$80:8613 ; Capcom Logo
$80:87AA ; Options Screen, All music after level music, Password Screen, Stage Select
$80:8D8F ; Title Screen play sound (8CB5)
9A2D ; Level music (C'est un JMP)
9709 ; Stage Intro Jingle
9CFA ; ???????
ABD6 ; Got a Weapon
Ne pas oublier que certaines musiques pause la musique en cours et ne call pas $87B0 (ex: Dr Light capsule)
PlayMusicRoutine PC = 0x7b0
; Place où se hooker pour le fade-in/fade-out dans le NMI
; C'est la variable qui set le vrai frame counter
$80/817A EE 9E 0B INC $0B9E [$80:0B9E] A:0000 X:00D1 Y:0000 P:eNvMXdIzC
$7E:7C00
Copy protection:
http://jul.rustedlogic.net/thread.php?pid=433506
=====================
= Music =
=====================
00 = Capcom Jingle (No Loop)
01 = Intro Stage
02 = Sting Cameleon
03 = Launch Octopus
04 = Armored Armadillo
05 = Flame Mammoth
06 = Boomer Kuwanger
07 = Chill Penguin
08 = Spark Mandrill
09 = Storm Eagle
0A = Sigma Stage 1
0B = Simga Stage 2
0C = Simga Stage 3
0D = Simga Stage 4
0E = Boss Battle 1
0F = Title Screen (No Loop)
10 = Stage Select
11 = Victory Jingle ! (No Loop)
12 = Stage Selected Jingle (No Loop)
13 = Boss Battle 2 Intro tension
14 = Boss Battle 2
15 = Zero Appears
16 = Zero Talks
17 = Got a Weapon (No Loop)
18 = Password
19 = Simga Stage Select
1A = Simga Battle 1
1B = Sigma Battle 2
1C = Ending Theme 1
1D = Ending Theme 2
1E = Boss Battle 1 Intro tension
1F = Sigma Battle 2 Intro
20 = Game Credits
=====================
= Sounds =
=====================
$0B = Login/Password Ding
$88 = Shizzzzzzzzzz (Charge shot sound)
$89 = Reading bleep
$8A = Description bleep
$F6 = Title Screen ?
====================================
= Play Music Routine ($80:87B0) =
====================================
$80/87B0 E2 30 SEP #$30 A:011F X:00A0 Y:0000 P:envMXdizC
$80/87B2 A8 TAY A:011F X:00A0 Y:0000 P:envMXdizC
$80/87B3 B9 6B 80 LDA $806B,y[$86:808A] A:011F X:00A0 Y:001F P:envMXdizC
$80/87B6 A8 TAY A:0168 X:00A0 Y:001F P:envMXdizC
$80/87B7 B9 7B 80 LDA $807B,y[$86:80E3] A:0168 X:00A0 Y:0068 P:envMXdizC
$80/87BA F0 0E BEQ $0E [$87CA] A:011F X:00A0 Y:0068 P:envMXdizC
$80/87BC 48 PHA A:011F X:00A0 Y:0068 P:envMXdizC
$80/87BD 20 D6 87 JSR $87D6 [$80:87D6] A:011F X:00A0 Y:0068 P:envMXdizC
$80/87D6 B9 7C 80 LDA $807C,y[$86:80E4] A:011F X:00A0 Y:0068 P:envMXdizC
$80/87D9 C9 FF CMP #$FF A:0140 X:00A0 Y:0068 P:envMXdizC
$80/87DB F0 0A BEQ $0A [$87E7] A:0140 X:00A0 Y:0068 P:envMXdizc
$80/87DD 5A PHY A:0140 X:00A0 Y:0068 P:envMXdizc
$80/87DE A0 F9 LDY #$F9 A:0140 X:00A0 Y:0068 P:envMXdizc
$80/87E0 20 C6 86 JSR $86C6 [$80:86C6] A:0140 X:00A0 Y:00F9 P:eNvMXdizc
$80/86C6 84 02 STY $02 [$00:0002] A:0140 X:00A0 Y:00F9 P:eNvMXdizc
$80/86C8 C2 30 REP #$30 A:0140 X:00A0 Y:00F9 P:eNvMXdizc
$80/86CA 29 FF 00 AND #$00FF A:0140 X:00A0 Y:00F9 P:eNvmxdizc
$80/86CD 85 00 STA $00 [$00:0000] A:0040 X:00A0 Y:00F9 P:envmxdizc
$80/86CF 0A ASL A A:0040 X:00A0 Y:00F9 P:envmxdizc
$80/86D0 65 00 ADC $00 [$00:0000] A:0080 X:00A0 Y:00F9 P:envmxdizc
$80/86D2 AA TAX A:00C0 X:00A0 Y:00F9 P:envmxdizc
$80/86D3 BF 00 80 89 LDA $898000,x[$89:80C0] A:00C0 X:00C0 Y:00F9 P:envmxdizc
$80/86D7 29 FF 7F AND #$7FFF A:488F X:00C0 Y:00F9 P:envmxdizc
$80/86DA A8 TAY A:488F X:00C0 Y:00F9 P:envmxdizc
$80/86DB A9 00 80 LDA #$8000 A:488F X:00C0 Y:488F P:envmxdizc
$80/86DE 85 10 STA $10 [$00:0010] A:8000 X:00C0 Y:488F P:eNvmxdizc
$80/86E0 E2 20 SEP #$20 A:8000 X:00C0 Y:488F P:eNvmxdizc
$80/86E2 BF 02 80 89 LDA $898002,x[$89:80C2] A:8000 X:00C0 Y:488F P:eNvMxdizc
$80/86E6 18 CLC A:8002 X:00C0 Y:488F P:envMxdizc
$80/86E7 69 89 ADC #$89 A:8002 X:00C0 Y:488F P:envMxdizc
$80/86E9 85 12 STA $12 [$00:0012] A:808B X:00C0 Y:488F P:eNvMxdizc
$80/86EB 8A TXA A:808B X:00C0 Y:488F P:eNvMxdizc
$80/86EC F0 1D BEQ $1D [$870B] A:80C0 X:00C0 Y:488F P:eNvMxdizc
$80/86EE A2 1F 00 LDX #$001F A:80C0 X:00C0 Y:488F P:eNvMxdizc
.loop_86F1
$80/86F1 9E 72 0B STZ $0B72,x[$86:0B91] A:80C0 X:001F Y:488F P:envMxdizc
$80/86F4 CA DEX A:80C0 X:001F Y:488F P:envMxdizc
$80/86F5 10 FA BPL $FA [$86F1] A:80C0 X:001E Y:488F P:envMxdizc
$80/86F7 9C A3 0B STZ $0BA3 [$86:0BA3] A:80C0 X:FFFF Y:488F P:eNvMxdizc
$80/86FA 9C A4 0B STZ $0BA4 [$86:0BA4] A:80C0 X:FFFF Y:488F P:eNvMxdizc
$80/86FD AF FE FF 7E LDA $7EFFFE[$7E:FFFE] A:80C0 X:FFFF Y:488F P:eNvMxdizc
$80/8701 CD 42 21 CMP $2142 [$86:2142] A:8004 X:FFFF Y:488F P:envMxdizc
$80/8704 D0 FB BNE $FB [$8701] A:8004 X:FFFF Y:488F P:envMxdiZC
.loop_8706
$80/8706 A5 02 LDA $02 [$00:0002] A:8004 X:FFFF Y:488F P:envMxdiZC
$80/8708 8D 40 21 STA $2140 [$86:2140] A:80F9 X:FFFF Y:488F P:eNvMxdizC
$80/870B C2 20 REP #$20 A:80F9 X:FFFF Y:488F P:eNvMxdizC
$80/870D A9 AA BB LDA #$BBAA A:80F9 X:FFFF Y:488F P:eNvmxdizC
$80/8710 CD 40 21 CMP $2140 [$86:2140] A:BBAA X:FFFF Y:488F P:eNvmxdizC
$80/8713 E2 20 SEP #$20 A:BBAA X:FFFF Y:488F P:envmxdizC
$80/8715 D0 EF BNE $EF [$8706] A:BBAA X:FFFF Y:488F P:envMxdizC
$80/8717 A9 CC LDA #$CC A:BBAA X:FFFF Y:488F P:envMxdiZC
$80/8719 80 34 BRA $34 [$874F] A:BBCC X:FFFF Y:488F P:eNvMxdizC
$80/874F 48 PHA A:BBCC X:FFFF Y:488F P:eNvMxdizC
$80/8750 B7 10 LDA [$10],y[$8B:C88F] A:BBCC X:FFFF Y:488F P:eNvMxdizC
$80/8752 EB XBA A:BB08 X:FFFF Y:488F P:envMxdizC
$80/8753 C8 INY A:08BB X:FFFF Y:488F P:eNvMxdizC
$80/8754 10 05 BPL $05 [$875B] A:08BB X:FFFF Y:4890 P:envMxdizC
$80/875B B7 10 LDA [$10],y[$8B:C890] A:08BB X:FFFF Y:4890 P:envMxdizC
$80/875D EB XBA A:0800 X:FFFF Y:4890 P:envMxdiZC
$80/875E AA TAX A:0008 X:FFFF Y:4890 P:envMxdizC
$80/875F C8 INY A:0008 X:0008 Y:4890 P:envMxdizC
$80/8760 10 05 BPL $05 [$8767] A:0008 X:0008 Y:4891 P:envMxdizC
$80/8767 B7 10 LDA [$10],y[$8B:C891] A:0008 X:0008 Y:4891 P:envMxdizC
$80/8769 EB XBA A:0078 X:0008 Y:4891 P:envMxdizC
$80/876A C8 INY A:7800 X:0008 Y:4891 P:envMxdiZC
$80/876B 10 05 BPL $05 [$8772] A:7800 X:0008 Y:4892 P:envMxdizC
$80/8772 B7 10 LDA [$10],y[$8B:C892] A:7800 X:0008 Y:4892 P:envMxdizC
$80/8774 8D 43 21 STA $2143 [$86:2143] A:7847 X:0008 Y:4892 P:envMxdizC
$80/8777 C8 INY A:7847 X:0008 Y:4892 P:envMxdizC
$80/8778 10 05 BPL $05 [$877F] A:7847 X:0008 Y:4893 P:envMxdizC
$80/877F EB XBA A:7847 X:0008 Y:4893 P:envMxdizC
$80/8780 8D 42 21 STA $2142 [$86:2142] A:4778 X:0008 Y:4893 P:envMxdizC
$80/8783 E0 01 00 CPX #$0001 A:4778 X:0008 Y:4893 P:envMxdizC
$80/8786 A9 00 LDA #$00 A:4778 X:0008 Y:4893 P:envMxdizC
$80/8788 2A ROL A A:4700 X:0008 Y:4893 P:envMxdiZC
$80/8789 8D 41 21 STA $2141 [$86:2141] A:4701 X:0008 Y:4893 P:envMxdizc
$80/878C 69 7F ADC #$7F A:4701 X:0008 Y:4893 P:envMxdizc
$80/878E 68 PLA A:4780 X:0008 Y:4893 P:eNVMxdizc
$80/878F 8D 40 21 STA $2140 [$86:2140] A:47CC X:0008 Y:4893 P:eNVMxdizc
$80/8792 CD 40 21 CMP $2140 [$86:2140] A:47CC X:0008 Y:4893 P:eNVMxdizc
$80/8795 D0 FB BNE $FB [$8792] A:47CC X:0008 Y:4893 P:enVMxdizC
$80/8797 70 82 BVS $82 [$871B] A:47CC X:0008 Y:4893 P:enVMxdiZC
$80/871B B7 10 LDA [$10],y[$8B:C893] A:47CC X:0008 Y:4893 P:enVMxdiZC
$80/871D C8 INY A:4700 X:0008 Y:4893 P:enVMxdiZC
$80/871E 10 05 BPL $05 [$8725] A:4700 X:0008 Y:4894 P:enVMxdizC
$80/8725 EB XBA A:4700 X:0008 Y:4894 P:enVMxdizC
$80/8726 A9 00 LDA #$00 A:0047 X:0008 Y:4894 P:enVMxdizC
$80/8728 80 12 BRA $12 [$873C] A:0000 X:0008 Y:4894 P:enVMxdiZC
$80/872A EB XBA A:0000 X:0007 Y:4894 P:enVMxdizC
$80/872B B7 10 LDA [$10],y[$8B:C894] A:0000 X:0007 Y:4894 P:enVMxdiZC
$80/872D C8 INY A:00C3 X:0007 Y:4894 P:eNVMxdizC
$80/872E 10 05 BPL $05 [$8735] A:00C3 X:0007 Y:4895 P:enVMxdizC
$80/8735 EB XBA A:00C3 X:0007 Y:4895 P:enVMxdizC
$80/8736 CD 40 21 CMP $2140 [$86:2140] A:C300 X:0007 Y:4895 P:enVMxdiZC
$80/8739 D0 FB BNE $FB [$8736] A:C300 X:0007 Y:4895 P:enVMxdizc
$80/873B 1A INC A A:C300 X:0007 Y:4895 P:enVMxdiZC
$80/873C C2 20 REP #$20 A:0000 X:0008 Y:4894 P:enVMxdiZC
$80/873E 8D 40 21 STA $2140 [$86:2140] A:0000 X:0008 Y:4894 P:enVmxdiZC
$80/8741 E2 20 SEP #$20 A:0000 X:0008 Y:4894 P:enVmxdiZC
$80/8743 CA DEX A:0000 X:0008 Y:4894 P:enVMxdiZC
$80/8744 D0 E4 BNE $E4 [$872A] A:0000 X:0007 Y:4894 P:enVMxdizC
======================================
= Fade-in,out,stop research =
======================================
; La même commande pour jouer des sons envoie des commandes spécials
$F0 = ???
$F1 = ??? (Stop sound ?)
$F5 = Resume ?
$F6 = ??? (Stop All ?)
$F7 = ???
$FE = Raise volume
$FF = Drop volume
======================================
= Copy protection =
======================================
; All offsets are for the 1.1 version of the game
; $84/A472 (when destroying an enemy)
$84/A472 AF 00 10 70 LDA $701000[$70:1000] A:0000 X:1928 Y:0008 P:envMxdiZc
$84/A476 1A INC A A:0060 X:1928 Y:0008 P:envMxdizc
$84/A477 8F 00 10 70 STA $701000[$70:1000] A:0061 X:1928 Y:0008 P:envMxdizc
$84/A47B CF 00 10 70 CMP $701000[$70:1000] A:0061 X:1928 Y:0008 P:envMxdizc
$84/A47F F0 0A BEQ $0A [$A48B] A:0061 X:1928 Y:0008 P:envMxdizC
$84/A481 CE 9D 1F DEC $1F9D [$86:1F9D] A:0061 X:1928 Y:0008 P:envMxdizC
; 84A3C4 (A2): if byte at $84A47F != $84A3CC (A1 tampered), increase $1F9D (when destroying an enemy)
$84/A3C4 AF 7F A4 84 LDA $84A47F[$84:A47F] A:D900 X:0000 Y:0000 P:enVMXdiZc
$84/A3C8 CF CC A3 84 CMP $84A3CC[$84:A3CC] A:D9F0 X:0000 Y:0000 P:eNVMXdizc
$84/A3CC F0 03 BEQ $03 [$A3D1] A:D9F0 X:0000 Y:0000 P:enVMXdiZC
$84/A3D1 6B RTL A:D9F0 X:0000 Y:0000 P:enVMXdiZC
; 848FCD (A3): if byte at $84A48B != $849D2E (A2 tampered), increase $1F9D (every frame, wrapping FF->00)
$84/8FCD AF 8B A4 84 LDA $84A48B[$84:A48B] A:1281 X:0000 Y:0002 P:eNvMXdizc
$84/8FD1 CF 2E 9D 84 CMP $849D2E[$84:9D2E] A:12EE X:0000 Y:0002 P:eNvMXdizc
$84/8FD5 F0 03 BEQ $03 [$8FDA] A:12EE X:0000 Y:0002 P:envMXdiZC
$84/8FDA A5 17 LDA $17 [$00:123F] A:12EE X:0000 Y:0002 P:envMXdiZC
; $81852B (B1): if $700804 (SRAM) is mapped, increase $1F9E (when X begins falling)
$81/852B AF 04 08 70 LDA $700804[$70:0804] A:0008 X:0000 Y:009A P:enVMXdiZc
$81/852F 1A INC A A:0060 X:0000 Y:009A P:enVMXdizc
$81/8530 8F 04 08 70 STA $700804[$70:0804] A:0061 X:0000 Y:009A P:enVMXdizc
$81/8534 CF 04 08 70 CMP $700804[$70:0804] A:0061 X:0000 Y:009A P:enVMXdizc
$81/8538 F0 0A BEQ $0A [$8544] A:0061 X:0000 Y:009A P:enVMXdizC
$81/853A CE 9E 1F DEC $1F9E [$86:1F9E] A:0061 X:0000 Y:009A P:enVMXdizC
; 819602 (B2): if word at $81853B != #$1F9E (B1 tampered), increase $1F9E (when jumping)
$81/960C AF 45 85 81 LDA $818545[$81:8545] A:0178 X:0012 Y:009B P:enVmXdizC
$81/9610 C9 9E 1F CMP #$1F9E A:1F9E X:0012 Y:009B P:enVmXdizC
$81/9613 F0 06 BEQ $06 [$961B] A:1F9E X:0012 Y:009B P:enVmXdiZC
$81/961B E2 20 SEP #$20 A:1F9E X:0012 Y:009B P:enVmXdiZC
; 819438 (B3): if byte at $809E5F != $818544 (B1 tampered), $1F9E |= 128 immediately (when firing)
$81/9438 AF 5F 9E 80 LDA $809E5F[$80:9E5F] A:0000 X:0002 Y:0040 P:envMXdiZc
$81/943C CF 44 85 81 CMP $818544[$81:8544] A:00EE X:0002 Y:0040 P:eNvMXdizc
$81/9440 F0 05 BEQ $05 [$9447] A:00EE X:0002 Y:0040 P:envMXdiZC
$81/9447 A5 35 LDA $35 [$00:0BDD] A:00EE X:0002 Y:0040 P:envMXdiZC
$81/9449 C5 67 CMP $67 [$00:0C0F] A:0000 X:0002 Y:0040 P:envMXdiZC
; 819950 (B4): if byte at $81853D != $819674 (B1 tampered), $1F9E |= 128 immediately (when jumping)
$81/995A AF 3D 85 81 LDA $81853D[$81:853D] A:0540 X:0012 Y:009B P:enVMXdizc
$81/995E CF 74 96 81 CMP $819674[$81:9674] A:0510 X:0012 Y:009B P:enVMXdizc
$81/9962 F0 05 BEQ $05 [$9969] A:0510 X:0012 Y:009B P:enVMXdiZC
$81/9969 60 RTS A:0510 X:0012 Y:009B P:enVMXdiZC
; 849D07 (C1): if $700505 (SRAM) is mapped, increase $1F9F (when X takes damage)
$84/9D07 AF 05 05 70 LDA $700505[$70:0505] A:0021 X:0BA8 Y:0008 P:enVMxdizC
$84/9D0B 1A INC A A:0060 X:0BA8 Y:0008 P:enVMxdizC
$84/9D0C 8F 05 05 70 STA $700505[$70:0505] A:0061 X:0BA8 Y:0008 P:enVMxdizC
$84/9D10 CF 05 05 70 CMP $700505[$70:0505] A:0061 X:0BA8 Y:0008 P:enVMxdizC
$84/9D14 F0 0A BEQ $0A [$9D20] A:0061 X:0BA8 Y:0008 P:enVMxdizC
$84/9D16 CE 9F 1F DEC $1F9F [$86:1F9F] A:0061 X:0BA8 Y:0008 P:enVMxdizC
$84/9D19 10 0D BPL $0D [$9D28] A:0061 X:0BA8 Y:0008 P:eNVMxdizC
$84/9D1B 9C 9F 1F STZ $1F9F [$86:1F9F] A:0061 X:0BA8 Y:0008 P:eNVMxdizC
$84/9D1E 80 08 BRA $08 [$9D28] A:0061 X:0BA8 Y:0008 P:eNVMxdizC
$84/9D28 A5 26 LDA $26 [$00:0E8E] A:0061 X:0BA8 Y:0008 P:eNVMxdizC
$84/9D2A F0 52 BEQ $52 [$9D7E] A:0003 X:0BA8 Y:0008 P:enVMxdizC
$84/9D2A F0 52 BEQ $52 [$9D7E] A:0003 X:0BA8 Y:0008 P:enVMxdizC
; 849F97 (C2): if byte at $849D0A != $849AF5 or $849D0E (C1 tampered), $1F9F |= 128 immediately (when X gains health)
; when this is >= 128 , start spamming bogus controller input every frame
$84/9F9C AF 0F 9D 84 LDA $849D0F[$84:9D0F] A:FF18 X:0002 Y:007B P:envMXdizc
$84/9FA0 CF F5 9A 84 CMP $849AF5[$84:9AF5] A:FF70 X:0002 Y:007B P:envMXdizc
$84/9FA4 F0 0B BEQ $0B [$9FB1] A:FF70 X:0002 Y:007B P:envMXdiZC
; 81816B (D1): if $700800 (SRAM) is mapped, increase $0C2B (dp+$83) (every frame)
; effect unknown
$81/816B AF 00 08 70 LDA $700800[$70:0800] A:0004 X:0018 Y:0004 P:enVMXdizc
$81/816F 1A INC A A:0060 X:0018 Y:0004 P:enVMXdizc
$81/8170 8F 00 08 70 STA $700800[$70:0800] A:0061 X:0018 Y:0004 P:enVMXdizc
$81/8174 CF 00 08 70 CMP $700800[$70:0800] A:0061 X:0018 Y:0004 P:enVMXdizc
$81/8178 F0 08 BEQ $08 [$8182] A:0061 X:0018 Y:0004 P:enVMXdizC
$81/817A C6 83 DEC $83 [$00:0C2B] A:0061 X:0018 Y:0004 P:enVMXdizC
$81/817C 10 06 BPL $06 [$8184] A:0061 X:0018 Y:0004 P:eNVMXdizC
$81/817E 64 83 STZ $83 [$00:0C2B] A:0061 X:0018 Y:0004 P:eNVMXdizC