|
|
- Contra (J) PPU写入程序
0 N* u9 C4 Q# s( E g5 f5 O - 作者:FlameCyclone# m& n! Q0 e' O6 O; H; T' [1 T
- 时间:2017.2.12; w4 P$ l5 I/ Y( x& O0 c
- # g8 O7 G. s- i) o9 E1 v% u
- 按键跳转:0 ^" q. z! H. K4 @$ \; [$ a# F$ c+ z
- C1EF:95 F5 94 F1* a, k# C+ h0 B* q
- C1EF:20 70 FB EA
! P6 E! `) h1 \+ i7 u" M - : q4 U$ n5 l9 F" _* Q" t
- 滚动偏移:
j$ T( _; s) T - F936:A5 FD 8D 05 20 A5 FC 8D 05 20
- L; z. F5 U( N - F936:20 C0 FB EA EA EA EA EA EA EA0 x9 U; v$ R+ ? @& M& C" q9 k
- : B- M s% H5 z$ r, B
- 背景调色板:
+ L$ O& s* f I0 D7 s o. r9 g - CF20:9D C0 076 A$ U$ V! ]( n. o# N) m
- CF20:20 A0 FB
# O$ |3 s. j2 J$ F8 P/ v - ' v4 y8 N8 G& u( |
- PPU BANK号:4 |0 P$ U: b" k9 [! n1 v6 I
- C8C9:9D F4 07% V# O0 ~! W3 ] Z6 l9 t
- C8C9:20 B0 FB$ p O7 U; |6 V
- ' n4 s- q# M5 C6 {
- 按键跳转:0 z: C4 @, {, b
- FB70: 95 F5 94 F1 48 8A 48 98 48 A5 FF 29 7F 8D 00 20
* W$ y9 H. I9 @% M" x+ q0 J! f3 A - AD 00 80 48 A0 00 20 21 FB 20 00 A0 68 A8 C8 20/ U. Z) r! a7 p8 T ^4 O9 A
- 21 FB A5 FF 8D 00 20 68 A8 68 AA 68 60 FF FF FF
/ z: ]+ {3 F) v: ^
4 I4 U4 D5 ^; z- 背景调色板:
) l! \( B) T7 S - FBA0: 48 AD FF 7F C9 FF D0 02 68 60 68 9D C0 07 60 FF
6 s7 x! s2 t& P9 ?4 Q5 @
: Q# P3 }* g$ ?# f- PPU BANK号:9 @. J3 P/ }4 g8 `
- FBB0: 48 AD FF 7F C9 FF D0 02 68 60 68 9D F4 07 60 FF5 L3 J( n1 k- R: ~6 r5 y
7 b1 L1 b# o$ z% e# q! H4 m- 滚动偏移:. a# }8 l/ h: y
- FBC0: AD FF 7F C9 FF D0 09 A9 00 8D 05 20 8D 05 20 60+ \' i: A/ |% R9 K! C; T/ d9 D7 d) r. T
- A5 FD 8D 05 20 A5 FC 8D 05 20 60 60 FF FF FF FF
& \5 }7 k) [' o! p& q
* j1 h( O2 g& }9 F
; @0 Y) r0 l, p( M! D* b/ f- 切BANK后A000:
7 [7 B+ ~8 A h0 s8 z* _5 F! G9 m - A5 FF 29 7F 8D 00 20 AD 02 20 A5 25 C9 01 D0 0A B5 F5 29 CF F0 04 20 8C A2 60 48 8A 48 98 48 A5 25 C9 01 D0 07 AD 0A 01 C9 00 F0 03 4C AC A1 AD FF 7F C9 FF D0 19 AD A0 7F C9 00 D0 0B A9 FF 8D A0 7F 20 3A A1 4C AC A1 AD FF 7F C9 00 D0 DD AD 02 20 A9 00 8D 01 20 A2 00 A9 FF 8D FF 7F 8D A0 7F 20 6A A0 20 3A A1 4C AC A1 A5 FE 8D 50 7F A9 08 85 FE A2 00 BD C0 07 9D 00 7F E8 E0 40 90 F5 A2 00 A9 00 9D F4 07 E8 E0 04 90 F6 A2 00 BD 2A A1 9D C0 07 E8 E0 10 90 F5 A9 3F 8D 06 20 A9 00 8D 06 20 A2 00 BD 2A A1 8D 07 20 E8 E0 10 90 F5 A2 00 A0 00 A5 BD 48 A5 BC 48 A5 BB 48 A5 BA 48 A5 B9 48 A5 B8 48 A9 00 85 B8 85 B9 85 BA 85 BB 85 BC 85 BD A9 00 85 BA A9 20 85 BB A9 00 85 BC A9 60 85 BD A5 BB C9 28 D0 06 A5 BA C9 00 F0 27 A5 BB 8D 06 20 A5 BA 8D 06 20 AD 07 20 AD 07 20 91 BC A9 00 8D 00 20 E8 E6 BA E6 BC E0 00 D0 D4 E6 BB E6 BD 4C E4 A0 68 85 B8 68 85 B9 68 85 BA 68 85 BB 68 85 BC 68 85 BD 60 0F 28 28 28 0F 28 28 28 0F 28 28 28 0F 28 28 28 A5 BD 48 A5 BC 48 A5 BB 48 A5 BA 48 A5 B9 48 A5 B8 48 A9 00 85 B8 85 B9 85 BA 85 BB 85 BC 85 BD 8D 01 20 A2 00 A0 00 A9 00 85 BA A9 20 85 BB A5 BB C9 28 D0 06 A5 BA C9 00 F0 20 A5 BB 8D 06 20 A5 BA 8D 06 20 A9 00 8D 07 20 A9 00 8D 00 20 E8 E6 BA E0 00 D0 D9 E6 BB 4C 69 A1 EA 68 85 B8 68 85 B9 68 85 BA 68 85 BB 68 85 BC 68 85 BD 20 8D A2 60 68 A8 68 AA 68 A5 25 C9 00 F0 12 A5 25 C9 01 D0 0B B5 F5 29 EF F0 05 A9 00 8D A0 7F 60 AD FF 7F C9 FF D0 F8 A9 00 8D 01 20 A5 BD 48 A5 BC 48 A5 BB 48 A5 BA 48 A5 B9 48 A5 B8 48 A9 00 85 B8 85 B9 85 BA 85 BB 85 BC 85 BD A9 00 8D FF 7F A2 00 A0 00 A9 00 85 BA A9 20 85 BB A9 00 85 BC A9 60 85 BD A5 BD C9 68 D0 06 A5 BC C9 00 F0 24 A5 BD 8D 06 20 A5 BC 8D 06 20 B1 BC 8D 07 20 A9 00 8D 00 20 E8 E6 BA E6 BC E0 00 D0 D7 E6 BB E6 BD 4C 0E A2 A2 00 BD 00 7F 9D C0 07 E8 E0 40 90 F5 A2 00 A9 3F 8D 06 20 A9 00 8D 06 20 BD C0 07 8D 07 20 E8 E0 10 90 F5 AD 02 20 A5 FD 8D 05 20 A5 FC 8D 05 20 AD 50 7F 85 FE A9 00 8D 00 20 68 85 B8 68 85 B9 68 85 BA 68 85 BB 68 85 BC 68 85 BD 60 60 20 B9 A2 20 C0 CB 20 DE A2 20 FD A2 60 20 42 92 8B 8D 95 80 8C A3 80 90 96 8B 97 8F 8D A3 8D 96 99 98 8F 80 93 98 80 83 81 82 88 FF A2 00 AD 9A A2 8D 03 07 E8 BD 9A A2 8D 04 07 20 91 A5 BD 9C A2 C9 FF F0 08 9D 05 07 E8 A9 00 F0 F1 20 AB A5 60 20 28 A3 20 C0 CB 20 56 A3 20 C0 CB 20 7D A3 20 C0 CB 20 BE A3 20 C0 CB 20 EF A3 20 C0 CB 60 20 3B A4 20 C0 CB 20 69 A4 20 C0 CB 20 90 A4 20 C0 CB 20 D1 A4 20 C0 CB 20 02 A5 20 C0 CB 60 20 A3 9A 96 8B A3 8F 9C 80 81 82 FF A2 00 AD 1C A3 8D 03 07 E8 BD 1C A3 8D 04 07 20 91 A5 BD 1E A3 C9 FF F0 08 9D 05 07 E8 A9 00 F0 F1 20 AB A5 60 20 E3 9C 8F 96 93 90 8F FF A2 00 AD 4D A3 8D 03 07 E8 BD 4D A3 8D 04 07 20 91 A5 BD 4F A3 C9 FF F0 08 9D 05 07 E8 A9 00 F0 F1 20 AB A5 60 20 EA A2 00 AD 7B A3 8D 03 07 E8 BD 7B A3 8D 04 07 20 91 A5 A5 32 20 42 A5 AD 03 7A 8D 05 07 EE 05 07 AD 04 7A 8D 06 07 EE 06 07 AD 05 7A 8D 07 07 EE 07 07 A2 03 20 AB A5 60 21 23 A1 8F 8B 9A 99 98 FF A2 00 AD B5 A3 8D 03 07 E8 BD B5 A3 8D 04 07 20 91 A5 BD B7 A3 C9 FF F0 08 9D 05 07 E8 A9 00 F0 F1 20 AB A5 60 21 2A 00 01 02 03 04 98 97 90 9D 96 A2 00 AD E3 A3 8D 03 07 E8 BD E3 A3 8D 04 07 20 91 A5 A2 00 A5 AA 29 10 F0 07 A9 9D 8D 05 07 D0 05 A9 8D 8D 05 07 A5 AA 29 0F DD E5 A3 D0 06 BD EA A3 8D 06 07 E8 E0 05 90 EC A2 02 20 AB A5 60 20 B3 9A 96 8B A3 8F 9C 80 81 83 FF A2 00 AD 2F A4 8D 03 07 E8 BD 2F A4 8D 04 07 20 91 A5 BD 31 A4 C9 FF F0 08 9D 05 07 E8 A9 00 F0 F1 20 AB A5 60 20 F3 9C 8F 96 93 90 8F FF A2 00 AD 60 A4 8D 03 07 E8 BD 60 A4 8D 04 07 20 91 A5 BD 62 A4 C9 FF F0 08 9D 05 07 E8 A9 00 F0 F1 20 AB A5 60 20 FA A2 00 AD 8E A4 8D 03 07 E8 BD 8E A4 8D 04 07 20 91 A5 A5 33 20 42 A5 AD 03 7A 8D 05 07 EE 05 07 AD 04 7A 8D 06 07 EE 06 07 AD 05 7A 8D 07 07 EE 07 07 A2 03 20 AB A5 60 21 33 A1 8F 8B 9A 99 98 FF A2 00 AD C8 A4 8D 03 07 E8 BD C8 A4 8D 04 07 20 91 A5 BD CA A4 C9 FF F0 08 9D 05 07 E8 A9 00 F0 F1 20 AB A5 60 21 3A 00 01 02 03 04 98 97 90 9D 96 A2 00 AD F6 A4 8D 03 07 E8 BD F6 A4 8D 04 07 20 91 A5 A2 00 A5 AA 29 10 F0 07 A9 9D 8D 05 07 D0 05 A9 8D 8D 05 07 A5 AB 29 0F DD F8 A4 D0 06 BD FD A4 8D 06 07 E8 E0 05 90 EC A2 02 20 AB A5 60 8D 00 7A A9 00 8D 03 7A 8D 04 7A 8D 05 7A AD 00 7A 8D 01 7A AD 01 7A C9 64 90 13 AD 01 7A 38 E9 64 8D 01 7A EE 03 7A AD 01 7A C9 64 B0 ED AD 01 7A C9 0A 90 13 AD 01 7A 38 E9 0A 8D 01 7A EE 04 7A AD 01 7A C9 0A B0 ED AD 01 7A 8D 05 7A 60 A2 00 A5 FF 29 01 D0 09 AD 03 07 29 FB 8D 03 07 60 AD 03 07 09 04 8D 03 07 60 85 21 8E 01 07 A9 00 9D 05 07 A9 01 8D 00 07 8D 02 07 60 FF FF: ?- d4 n9 V" T4 d9 Z
7 A: B$ F! z# G" c0 K5 Z3 O- ' ^& C+ x3 I! F' O% y3 C! }; _
- 6502 simulator:' P2 C7 o7 L# n3 n- I: H; p- U
- PPU写入程序:0 ^8 F: h: G1 T8 Q- u0 {
- .ORG $A000
; Q# E6 v% g' \9 v* ? - CSP = $801 s D+ N$ t+ g6 O' ~ O3 x
- C0 = $81
9 M* M# ?5 P! a/ l; `! i - C1 = $82
' Z( Z" Z+ I5 E; `& p; G2 m0 m - C2 = $83- {7 z; x" W: _8 R; g( h
- C3 = $84
v( A2 M1 c0 v1 p2 b; l - C4 = $859 t5 }2 E' e* k3 u9 f5 b
- C5 = $86
2 G+ Z9 \0 v) g3 N - C6 = $87$ m& |& O- j0 H( m2 x
- C7 = $881 p* X6 z7 B+ i1 @' a- ]' a
- C8 = $89( C7 \- x% v; i' _( Q% t
- C9 = $8A S' j; M; p. e
- CA = $8B
6 S2 N+ h0 X9 B1 _5 ^ - CB = $8C
) n: G: m2 \+ T( k1 r - CC = $8D0 l+ @ a o+ O1 n# j2 G7 b
- CD = $8E4 [* K" B8 Y3 d' D) Y) o: B E
- CE = $8F
. _, d$ t4 [' y( y! R* k9 q; ` - CF = $90
$ i8 @ b% h; h5 V c% o+ N0 C4 W6 L - CG = $91
1 W, E' i/ x& G7 R, ^9 e& Y- \* m - CH = $92% Z1 k4 L" I, r6 i
- CI = $93
9 ?+ }9 s; g6 W& o, D7 k - CJ = $94
, W& S3 I1 U0 G( g; S. z - CK = $955 ^8 G# a. |4 i- p
- CL = $96
5 o7 v- m5 x: y) l w# D/ w, B - CM = $978 h. e. ]- e, y6 U, ?
- CN = $98/ C" }3 v& a. v& L. d% G. B
- CO = $99
4 p" ~7 n" y. h( { - CP = $9A9 w% W$ A4 O# \: D/ z4 w
- CQ = $9B
; q2 `4 F2 U8 k4 l& S - CR = $9C1 Z) a. D# Z {# B0 _5 K7 ]* t7 M
- CS = $9D
( S$ q( G$ o u$ P/ M! O - CT = $9E! |8 _$ u; I+ y8 d* y) l
- CU = $9F: R" [6 f6 I# F) m" S: h4 J# u
- CV = $A0
& a9 a9 k2 ?7 L/ f2 D3 e8 y - CW = $A1
3 N1 M* z" ~( b - CX = $A2; m/ e7 }3 L/ @9 k0 d9 p+ M# s$ A1 k
- CY = $A3
1 F. z+ w8 U+ {6 N1 n - CZ = $A4
2 o0 k1 e8 d6 ?; ?7 s9 M% P - CEND = $FF [! Z1 b/ C5 S E8 \: \
- # u( {" y/ w0 _% I! ~
7 D+ S' Q( d* b) ?3 U! _- CMP_RE:
; b5 G2 c+ \, f* X7 j5 c! x7 n - LDA $FF
% [/ s0 x9 N# c# Z: E( H/ J/ X - AND #$7F5 t8 s2 M( [5 i4 a" I9 [# k6 o
- STA $20003 P# h2 ^- f6 j: c3 I
- LDA $2002 x: X6 S; a% p
- LDA $256 `7 k8 L: w1 w2 F0 O7 |
- CMP #$01
E. `7 M2 G4 s! a( K - BNE PROREG
. V3 o6 Z. L; ^$ `$ F5 _ - LDA $F5,X
" G0 c( F$ y5 ] r - AND #$CF
; u/ f" o8 Q5 {0 N1 Z - BEQ PROREG
4 j' v/ L6 _; H u$ G - JSR PPU_CMP
4 P: p1 j, J/ u: a) W - C_RE:
6 a4 i M& N8 d - RTS
5 Y; {- r! j5 V! W; z - PROREG:$ s+ T9 ]3 D, t8 Y$ E6 \- U4 _
- PHA, J9 D! n5 F7 Q0 {& V) l! B1 f ]
- TXA
( m+ _; O7 k, s; v4 c - PHA
% l# J; l* u7 m - TYA* [# u9 {. ^" w
- PHA. Z% S6 |% ~" b) \
- LDA $25
5 K+ U% q# z+ \ - CMP #$01
) N' Y- e* @4 e4 e1 m6 x- F - BNE RE
5 z, X/ u' }* S5 t' j% w - LDA $010A; N8 M4 ]$ B; \ C4 M' H* a
- CMP #$00
2 B0 f: i% |% {; p9 u5 ~; x, U( E5 T - BEQ P1
' w0 _, Z8 c+ _9 o; Q# ~6 [' c - & t, B8 d3 e0 T% v L" J0 W
- RE:2 V s% {: ^) i' m" G: R/ M
- JMP PPUWRITE
& {/ E. k4 |- l% m -
7 `8 y) U& @2 q2 b+ _ - P1: ; 条件判断
1 X; }3 [4 H3 G - LDA $7FFF3 Q* \( V5 u) j v+ r& [: s
- CMP #$FF9 O; d/ Y* i& q( w" M3 h7 h \2 D) @; r
- BNE P1RP& j* E- d4 s& V& a. n
- LDA $7FA0: N6 Y: C* t! i" W. \ v( n @" y
- CMP #$00& x* v; I* J4 ?
- BNE P1CMP, n3 R/ u8 U& S- c! E& V
- LDA #$FF' l _/ [* X& H8 H
- STA $7FA02 k* o) d! Y! Z6 j
- JSR CLEANA) c6 n2 U2 ]& H I7 n, I x( `
- JMP PPUWRITE' S; M- y5 O4 ]( W- L
- P1CMP:
. }& ?( |8 a8 K8 Q0 B% ]& D - LDA $7FFF: `' d* _+ S( R p4 ?; a
- CMP #$00
. J. b: U! ]1 v) g" ] - BNE RE# h' S$ F# Y0 w9 a8 l6 y
- P1RP:
" z' h5 Z1 @& U) X. Y# V- ? - LDA $2002
- i# g7 Q/ w! R |8 I j" p - LDA #$005 S( c7 |& C6 L# T7 {: m
- STA $2001
5 E. `- ~9 [; W1 p/ F$ v - LDX #$00
! \, S+ u/ e" l+ Y* j - LDA #$FF( v/ e3 c. S2 k; C. c
- STA $7FFF; O) l T/ }; L, q$ K
- STA $7FA0
4 I$ V' H3 Q4 M! r/ d - JSR COPYPPU
* S6 n7 N0 C$ S" }3 h' v5 f - PIRP2:
5 ?, U% Q e; I( j+ K- y( K - JSR CLEANA
9 E7 k8 i2 C5 _" k - JMP PPUWRITE
& A8 V3 g: y, p. ~ - : ?% m& f2 \$ T5 B: _. k
- COPYPPU:
9 m1 M4 p" w( U5 s9 |/ B - LDA $FE8 f% Q/ ]8 l, O B' S( _
- STA $7F50
2 }7 p, @, A& s( k$ C4 z! S - LDA #$08
; u* L- G4 \% |6 G. f - STA $FE- v5 r: n- ?) R6 M/ K
- L0:
) V3 W! c- F1 E m( l7 O; y% { - LDX #$000 W9 l9 l# z- j
- COPY_07C0_07DF:
: p# K2 A h9 G/ e! v4 ?+ m v g5 g - LDA $07C0,X
7 {$ c& k# F9 Q - STA $7F00,X& @5 q4 k7 y; g
- INX' F' c6 o* L' K! n, o5 v
- CPX #$40; i" j1 U6 m0 y }& W5 b
- BCC COPY_07C0_07DF
4 h7 j# H! W$ _ - LDX #$000 I& E9 @: Y b( V* M
- PPU_07F4_07F7:
8 u/ t$ H- A+ Z7 l& v3 L - LDA #$00
# D1 z6 r' L6 ?( I - STA $07F4,X
4 [9 N b" E1 ]/ k4 U0 e - INX
8 N$ r# K u/ l7 ?# ^5 C* i - CPX #$04
1 W/ _& o; [& H, U. E( O - BCC PPU_07F4_07F7
/ h; `& [8 c- I7 G+ N1 i - LDX #$003 h- D" j: }7 E2 ^9 T# J5 s- J
- COLOR:
b Z- ^+ {! t6 R* T [ - LDA COLOR_DATA,X8 y# c1 ~! o$ E9 F7 w* q
- STA $07C0,X" a- s! j5 | o+ j8 @
- INX+ z/ ?2 ^( W1 s W/ [" @# P) e
- CPX #$10
7 l) M# o+ S7 R0 b, w3 V# P' ~' U# W- B% f - BCC COLOR, Y/ K9 V% i+ D' W( I
-
3 a6 G! v2 I& z3 ` - PPU_COLOR:. {! [ z0 { O) K( `' K
- LDA #$3F0 K5 j( b' a& \8 v
- STA $2006* f$ k2 A# A: k* ], O) |6 Y m
- LDA #$00
: ?( S( x: ?/ }; q7 O% Y. n3 M$ N - STA $2006
) \ H& h/ C/ R) F, ^ - LDX #$00
3 P8 f0 o/ T( P - PPU_COLOR_W:
+ \* Q4 ?- ~+ f7 \ - LDA COLOR_DATA,X% z8 ~8 h: l9 t1 k' } |- j5 g M
- STA $2007
' r% O1 X H% k, x6 _- h - INX
" }$ O6 n% I5 M; ^) S. g1 z - CPX #$10
. _; S: j5 b4 M+ t - BCC PPU_COLOR_W# z; Q# l, j7 f* ^: {
- / T' h" @3 ~2 r
- ( H% Q8 J2 R$ Z( v. r# h
- LDX #$00
6 D2 Y' `# S C+ ]8 W7 E - LDY #$009 Z e+ \% J, l( d Z4 c( r5 y
- LDA $BD
0 q+ n) P- p% O; o7 |4 x( Y& |, m - PHA
+ Y2 f4 h7 k* I1 x3 M - LDA $BC
3 K/ Y; B7 n% A( Y) ~; u - PHA$ D; Q* K; s" O$ t5 b
- LDA $BB
6 m: \6 v. W- z; S6 R/ r - PHA
$ s; r2 B4 T- D' d8 @2 | - LDA $BA
A8 _4 Y9 e. X6 P5 d - PHA& J* s. H8 r6 Y2 A
- LDA $B9
7 s/ @ ?. b) N$ B8 R- l2 _9 P - PHA* c9 ]' d: |: O5 Z. s5 N
- LDA $B8
( W5 [3 O. h9 A - PHA# z4 `! b b$ P) E" A
- LDA #$00- i# h8 ^- n9 h& \* b9 g6 N
- STA $B8: x$ s3 l* B& I" `, E+ Q/ m6 N9 V
- STA $B9
% X* w8 s, [0 c3 q: a - STA $BA1 e+ C5 F3 \' m+ ]# N, l
- STA $BB( Z* H( y9 Y- r
- STA $BC
& }0 U1 e6 P! X8 W4 {) l9 P8 _ - STA $BD1 Z8 T5 K5 ]+ j
- LDA #$00
2 N& _- [; z8 z9 S6 R3 F - STA $BA
* P" {1 R r0 \% a) E - LDA #$20
2 K/ ]5 K, _* m( p - STA $BB9 }2 R: ?* @! K1 C
- LDA #$00
+ h' R! b0 }! ]0 G" ~ ~9 p - STA $BC
/ D, F( F& b- l$ N( v, N - LDA #$602 ]& D# a: g( S# R2 w" P& W% M3 p, [
- STA $BD
+ A5 H1 ^. w; {& }% V+ x - - J4 c2 ~- b9 g. l
- L1: ; PPU复制
; x: o+ ^9 {6 Y' z! S - LDA $BB
$ J. l; x* T' l - CMP #$28' f- s8 h0 d" D, l& H3 b; r+ a
- BNE L2
0 Y5 F6 h, k- P5 r3 k# M3 | - LDA $BA
0 w% Y0 q% d2 T - CMP #$00
; j/ L& m1 d3 D0 s4 o | - BEQ PROADPLA7 `& }* G( I/ j8 S
-
; `& B0 |4 @8 N5 o6 P& w - L2:* ~' n, N, N3 {( E5 H+ o* @/ x
- LDA $BB4 e9 h, ~% f; e! A
- STA $20063 T7 O: |+ r2 \
- LDA $BA
& c/ A- F# S' W - STA $2006
! A% H+ ]5 U' S1 y5 _3 E9 m0 K/ ?7 U - # T" P( M4 i" z* `5 f& M+ E5 B# J
- L3:
& \4 s1 K; ]0 ^% [1 p% t/ Z1 u% _ - LDA $2007- S4 u1 ^. q, T2 w
- LDA $2007% A) B0 g( g4 u. x* y. ]% Y4 t5 U
- STA ($BC),Y
" c9 X) B4 ~$ y4 y+ M' T/ w! m( N
# D' e" D$ Y# O& J* Z: l9 i8 e- L4:+ U$ N3 ?$ X# X A9 i
- LDA #$00, `" d# q& D" B7 R& y
- STA $20001 R7 m9 c G( x" k5 n Y
- INX7 V$ {1 W4 ]" ~6 I$ D
- INC $BA
) v; i L5 a2 r* j6 R - INC $BC m) ^! y7 K; R* j+ d' {
- CPX #$005 J# a' A D/ N+ m6 N! J8 z* Y
- BNE L16 ?" A% l2 w% [1 w1 H# j! j0 y$ T
- INC $BB
N5 P, K2 \- S5 t/ q" F - INC $BD
& z+ H6 k5 S4 ~/ t - JMP L1
5 O* w+ O% z0 _( A - # j9 V9 Q9 e' l# y) M( g5 v& M
- PROADPLA: ;出栈
7 ]; o& @. |; U1 m7 p - PLA
, R: [$ n% d7 z# M5 g. ]* k* F, t! ^ - STA $B8
0 w: |$ z6 m2 @* p4 v0 z5 a& h - PLA
8 O8 o0 F& T P8 e5 O# I - STA $B96 l) b7 I3 N4 n6 }1 ~" j8 s
- PLA. o, S3 _& E( K8 {. |2 x" ?
- STA $BA* q' V* G1 R' ?4 N# ?7 v3 p
- PLA& q6 U) f/ ?, w ?% U1 B
- STA $BB
0 j" t; M" B! ?% q/ E - PLA( O S w9 N7 E5 R' q
- STA $BC# D3 d6 {2 S7 ~% \5 K+ @1 a
- PLA" _% h' t+ F( ?( ?
- STA $BD
/ M3 ?) U7 u( w: C - CPRE:
. F9 K3 D/ O! S4 B0 P. u - RTS) [, B' J# C- S/ w6 M; e8 Y
' S- }- T3 b5 I+ [: [9 a8 q- CLEANA: ; PPU清空( q M( A% j$ k4 c1 i
- LDA $BD. A' f! H7 C3 Y/ ^
- PHA
& K c0 u! x/ v - LDA $BC
# Q4 \# E3 r- K9 t; Q: S- m - PHA: i- B) K% v6 |" T" `& [5 ^6 c
- LDA $BB8 Z3 k- L1 v# z" S
- PHA
. @4 R: H- G3 | x% m - LDA $BA% J) Q0 Z6 K1 u/ m, ?+ C
- PHA
$ p2 u" O3 Z% Z - LDA $B9
" h9 W# E/ _ ` - PHA
& w3 C2 X! H, [1 p9 Q2 } - LDA $B82 Z/ T1 @6 V# ]( b! j
- PHA
5 t, H5 [: f+ E2 Z - LDA #$00
. i5 \" o$ c! ~! ~) g - STA $B8
: K, S, ]. q& {7 r$ ^ - STA $B90 ?2 }- s3 P$ ~
- STA $BA
" U; P% h: F, f/ h- f - STA $BB
7 Z2 S8 f3 {, `2 p - STA $BC8 h# x% V9 Y4 |; s- T5 `' c8 Y' z" a
- STA $BD8 L! X i$ n9 `" K' d4 Q
- STA $2001' h* V' i5 w# T! P; ?1 }% }
- LDX #$00
, {) Y; c2 G# I4 P `4 c" O T - LDY #$00
4 A# g) x3 Y! H0 z5 H - LDA #$00
- b8 ?# y. N$ j9 N - STA $BA5 ~: v) G5 x1 d4 z8 m" B0 {
- LDA #$20
& C6 O5 `1 f4 Q- u - STA $BB
4 T2 \1 [0 i8 }. Z8 a - - o: X. {1 e5 B8 }* y: _. {3 Y! B
- CL1:
1 P4 @* m6 R" [) p9 b: J# u - LDA $BB9 z; t9 i4 I" ]# s/ d' P7 f
- CMP #$28
$ \5 Z; h" s1 @3 w6 P( W0 R - BNE CL2
2 a" E( ^1 I+ A, F% A1 g - LDA $BA
! C% z5 w0 T0 D& i: C5 ]* { - CMP #$00+ k5 G" q6 R9 ? l
- BEQ FREEWRIYE! I* J" I; f/ x8 v
- / m: w! s ]" P- B4 @5 k( g0 i
- CL2:
4 v; {- U/ J6 |8 ?! D - LDA $BB
/ u A3 o' T, [' f - STA $2006
2 c- A/ k6 @! \+ [1 O. J4 @1 m' _ - LDA $BA
+ C0 N2 Q, w8 } - STA $2006
6 T0 X$ @1 X- Z3 {! h0 e -
! C3 v: G* h, X$ H" P - CL3:
4 R v( ^9 U) _4 N6 i2 K - LDA #$00& x* _ y1 o/ h; X6 i8 n
- STA $2007
0 w& C) W7 `3 q) p' j - + m+ I z) G& Y( |5 n' Q
- CL4:8 K6 b2 F" D# d, h7 B
- LDA #$007 b) U) y- L, I# q1 f+ B" ~
- STA $2000
/ t4 j, q% E* L9 ^0 n1 j# m - INX& I8 H+ ?) C' y" Y: D7 ?8 h
- INC $BA
+ W# J: |6 E6 [9 q! ~9 h - CPX #$00+ L9 l/ S# V4 \9 x, l
- BNE CL1
+ q: @' e# n- d1 C( F8 l - INC $BB
' g7 p9 l2 e& h1 u - JMP CL1
6 O1 k# u4 U4 t' l) _; T% u+ M - 2 C7 i6 H& ^1 O( {/ K) X
) H6 N( l6 t$ [) f! {4 Y- [- FREEWRIYE:+ m0 w/ S* \' I9 _9 Z/ [6 M
6 N: a/ }# |+ W2 t) N C3 S. j- NOP& R' n j2 J* U7 v N$ Q
7 n1 T8 q0 s0 y# V- u, A7 \- 2 l# q1 B- ^7 P/ r1 \
- ) o/ X- F; G9 g* ~+ X6 h! ~
- ! E9 n# v q, W. Q/ s% e
3 y9 ]8 M S7 g! i4 u* k) e- CLEANF: ; 恢复现场# J5 a$ c* m! @* J m
- : F- A# @( i) h* g) ^( [! a" l
- PLA
0 a: y4 ?" n" C( n2 H y3 Y - STA $B87 R# g6 J5 w0 C
- PLA
! I; t, {# ^! U# J - STA $B9. R/ T* O; W& |5 W' m
- PLA
/ r# J" m) c8 A( A) e4 g; u* X - STA $BA, n' V$ Z) @) y+ z$ v0 R# G) L2 g+ l' H
- PLA! v: _ v U5 o5 Z0 Z
- STA $BB
' c; |3 e* B* ? U q: d - PLA& r" j) ?% q8 b
- STA $BC
& w, e9 T1 Z' k1 n+ p - PLA6 m# Z& \% u3 a% |7 ?9 o+ C- B9 R
- STA $BD) T+ B6 x4 U0 P1 F8 p
- CLRF:
: {. Y8 @2 y F1 O# p, S. ]1 h - JSR FREE_PPU
& U i5 E2 R& ]4 d/ H2 n) @0 d - RTS9 e, G' V+ C! {
- 9 c; H( K. ] h8 [5 V0 i& R# X( Q1 ~
* o& f9 {4 M, Q* f- PPUWRITE: ;PPU写回
; [" I$ c' o+ J" k9 _; l - PLA: h# ~; v- {- s- m
- TAY
4 x- c! U1 H. P3 I+ U& Y - PLA7 X3 Z2 a. ?9 d& q0 K
- TAX
7 Z r% F" B' k2 H y - PLA+ f- x# V( L' @) ?$ Z
- LDA $25
( H# F, T! h% B7 w9 }1 X - CMP #$00( A& L7 g! ^5 |6 P% z! c# Q3 \; ?; E
- BEQ WP1
# g1 F4 }# Z/ @" i. T4 j, m - LDA $25
3 |' H( g8 D$ P3 A - CMP #$012 A5 q! c' k- u9 z
- BNE WRE
- d* F6 @& r: N: ~" `+ v - LDA $F5,X
+ g8 l$ M9 h: H$ E: s, Z* G" K - AND #$EF) D( a8 J* i$ S
- BEQ WRE
, P9 G: I6 ]9 m% ?: D5 W8 O. p - LDA #$00
! Y* X$ C' w/ Z3 ?$ l5 @$ P+ P - STA $7FA03 ]. g" P3 e4 e; Q2 R7 F z' m
- ( i Y P/ v# K+ C/ }
- WRE:
! q- ?/ t4 r' j; C - RTS
- A! k- G, s3 h -
1 N4 q$ S. O+ N1 y7 E: Z+ H& i - WP1:7 M6 K$ p7 L) k" k6 _, m$ H' X
- LDA $7FFF" l$ w w& [6 _* ~7 l8 o# d
- CMP #$FF( ^* G) F! m" u
- BNE WRE# }/ i1 t( w4 z! w. T7 ~
- LDA #$00
) ]5 j3 _* k3 H1 K% I - STA $2001
0 F$ Z2 o2 w' a9 x - LDA $BD
8 `' r' }) b- j" ^: h# s) q - PHA/ E. X' |9 z! m4 I% Q+ H
- LDA $BC
c5 H( @* [9 }( B3 Q - PHA
: J: M' A8 P, L3 h% D4 h - LDA $BB8 k- m' Z t( o8 V1 Y! }- \
- PHA
, G6 x' f( h. O' R2 o" J" b; n1 @7 I - LDA $BA
z5 Y6 I, a+ F - PHA4 u* |9 q0 p; v. _" s
- LDA $B9+ j/ p3 l5 n7 {1 [
- PHA9 |% s$ k, h; G9 d" `3 i- T
- LDA $B8
+ @( K1 t1 v2 J* l- k* w - PHA# @: j4 x i0 f4 {
- LDA #$002 N8 i( q/ ^: N" T2 ^
- STA $B8- G0 d* O" V% U
- STA $B96 a9 E4 S" k) t" r7 h, p
- STA $BA
. R6 Q# e' p! p% y - STA $BB; r% f+ d: B4 C/ N" k
- STA $BC, n: Q" o8 i- J* L
- STA $BD7 \* u' }( {# T
- LDA #$00$ s: _9 Q) U M
- STA $7FFF
+ N, X. B( p* P -
* K; i) k" R' Y0 Z, ~0 ^ - WL0:
0 D% F! ^' _/ E2 P [ - LDX #$00
8 F- n0 S& B9 p( n: l3 h: b - LDY #$00 D4 n+ Q, i' P# P% [
- LDA #$004 t4 a W; V8 S1 w4 j- o
- STA $BA) S* y8 l0 [" _& a1 m
- LDA #$20& R! c( W. X6 z: L" d# f: J
- STA $BB. n3 m5 ~, V) U: k0 J5 ?; m
- LDA #$00
% {" \* b4 Y8 ^' M& A( H6 t - STA $BC
! E: S+ K' w' D; p - LDA #$60
# ?8 x6 V! E! I6 s! l - STA $BD
/ j3 Q% p w( T1 x8 t6 r# y; u. Z; X, w9 P -
6 Q5 N3 C2 p* v - WL1:" f8 ^& N e) Z( _0 l
- LDA $BD
5 q) o/ A6 ^+ H - CMP #$683 V9 t$ j3 B. [$ W( b% M4 V
- BNE WL2, z! @+ e5 B' F$ [/ Y4 p
- LDA $BC
/ s8 b$ Z7 V2 _% n0 ]/ C - CMP #$00
# _5 H4 T* y" m8 f0 U4 e9 H - BEQ WLR
! Y2 X/ o" \6 Z -
7 I6 b" J% k% r% N$ f' | - WL2:: ~( ^, ?0 w& p- E; t
- LDA $BD
5 |$ h, g4 A+ h$ T - STA $20063 i C& e& C9 \* Y1 ~" I
- LDA $BC
0 c/ x' b" q# \% l - STA $2006
/ k" E; ?- [, E' N2 N2 x -
' s* y5 i; X! D% } - WL3:6 U! y8 K T6 F& }: h$ a; a
- LDA ($BC),Y$ o, {! G' ?0 E+ Y# N; o6 p
- STA $2007
: M7 Y! S) D" ~7 }& I. v
& X9 h( Y U" l" V @- WL4:
% H2 F! c' G8 ]* X7 ?3 n/ Q1 { - LDA #$00- A* q) C; @6 r1 b( \; o8 U" v" b
- STA $2000: b6 L3 H1 Q& f$ i# ]$ z
- INX
6 y3 t+ F2 f/ } - INC $BA7 A% C* ~1 c% w: |0 I9 F
- INC $BC- R( |% |. Q: p1 k/ o5 i
- CPX #$00
4 q1 B1 z |! P4 @& a - BNE WL1* K5 w9 p: ^* L" @
- INC $BB+ c0 [7 B' J& g6 Y7 ?; k
- INC $BD
2 t* {# i9 }; m2 L b' T - JMP WL1+ I# V' p: B3 X9 @( t: h5 F/ G+ x- {
-
9 D3 ?* p! i2 s8 k$ b& H$ Z4 h* X - WLR:
1 C! {2 M p+ e+ Z - LDX #$00
2 e; ~' ^& ~6 N1 y - COPY_7F00_7F3F:
: L5 Y+ }# J' f3 H - LDA $7F00,X' K; R& \4 Y: K6 V6 G6 F" X
- STA $07C0,X# b0 }0 S o: n4 j' P2 s {2 K) @
- INX
: t5 x) o) o, b2 e% M - CPX #$40
Q) n% z" m" |" Q - BCC COPY_7F00_7F3F
0 W/ C, B9 y0 g+ X- l# p - $ ^6 T# a0 a- E( e1 p
- LDX #$00, _6 Z: j' n4 r* Y# K
- LDA #$3F
0 g( s4 {* M) v3 M - STA $2006
; h2 R, E+ N# f% R - LDA #$00
7 c# q' b3 Q6 Z) \ - STA $2006+ T/ ^& F, i" {# U: A/ r0 D
- COPY_7F00_7F10:% \5 E2 p, [, l
- LDA $7C0,X: j7 Q: s; K7 o _! X
- STA $2007. N- V' O: O1 o2 A4 \6 C# p6 \
- INX# C5 w+ o. p+ r$ M* m1 I) w
- CPX #$10
/ l( {; P2 H' U% t) [$ v7 R3 l" O - BCC COPY_7F00_7F10
. J% ]- A- C" B% Y, C -
" `# r4 W5 l) `% c: x; Z - LDA $2002
0 i9 a( C+ Q4 U - LDA $FD
8 q& A% g0 X1 N/ m - STA $2005
" X* H9 g H7 U z. b - LDA $FC2 }+ W0 X ?$ w$ {' w8 N& |# B7 O
- STA $2005
; n) I& y) W* k8 v - # R u9 F) X7 f" p0 _+ i( D) ?
- LDA $7F50 S" r+ W! |2 M- c. Z& Q: i) l
- STA $FE
& p: z5 H$ Y+ C( Y8 V- ] - LDA #$00" U6 G0 w5 ]) |& v% p! A% E# R F
- STA $2000- e' Y. W% [: ]6 J3 F, o( |# a
- PLA+ s; \ O F# h& i) v
- STA $B8
" ~) X) H4 _; c: q8 L0 V0 L' W - PLA
K# J6 M, B0 a: |: W! f+ B - STA $B9
. ?1 l: q; F6 Y7 n. D7 A: { h! g! s - PLA8 t0 P2 p! G i* P8 r7 H- {4 U
- STA $BA' v7 R) H: B9 e* P
- PLA5 F7 W7 i, E' e! a1 W( @& H
- STA $BB
+ C; {$ s; { S - PLA
* y# w3 M- q+ F3 u; w& U( ^ - STA $BC" B' g( H. |: G: w* J
- PLA
1 ~$ T& C8 j/ r: L" v1 S0 M* J - STA $BD5 o3 [/ q- Z9 C7 h6 B
-
3 h" D* M4 r( | n% `4 ] - RTS. W1 X9 [. V$ T0 n" x* P$ a% f
- ( {; B; `* X- R' l9 o) {
- PPU_CMP:, r' y9 u+ g# J
# ^8 C7 @( {$ i n) Z2 S- 9 Q4 P7 Z& T4 |/ z- w
- PPURE:
! y4 L7 `) A' z: l0 `. W) x; [ - RTS6 z* l% ]4 s2 k% j9 Z5 T
- % u) x4 U" }1 G* l$ Z% |
: D! L7 I( M. C. K* P- FREE_PPU:2 G% m& s. D: r, L
4 f# G- k/ g5 x% O/ z! Z- JSR TEXT01_PPU- h( F: x( Q3 {9 v! e2 X" B
- JSR $CBC0
0 S- f$ u+ W% l - JSR P1_PPU% _0 G: G7 q# \. j
- JSR P2_PPU/ H& E% }+ P% _7 r; s: S. n% s
- RTS X' i9 D0 ^- i8 |! a, Z2 {% _* n: Z0 Z, q
- 4 K4 x/ ~) T3 S' Y! V
- TEXT01_ADDR:
' Q0 J( s- E; t1 @ - .BYTE $20,$42
J3 |! y* p' D1 w, r6 s - TEXT01_DATA:; ?/ g- m5 a$ y* Y3 l$ X
- .BYTE CH,CA,CC,CK,CSP,CB,CY,CSP,CF,CL,CA,CM,CE,CC,CY,CC,CL,CO,CN,CE,CSP,CI,CN,CSP,C2,C0,C1,C7,CEND) q; g% }& |6 ?& b
- TEXT01_PPU
# U2 F0 [' i& q& h2 i- W - LDX #$00/ Z; _* O# t6 H# @8 @8 E
- LDA TEXT01_ADDR
6 @9 Y6 G+ i) ?+ j - STA $0703& j1 G {0 r1 m8 Q, E& p
- INX
$ n6 }5 F" q; ]: } - LDA TEXT01_ADDR,X
) t! K2 O- M$ @ - STA $0704
6 b3 {: ?/ K6 U3 K5 N - JSR PPU_PROCESS
0 W: \ c7 f+ \, r. j# n - TEXT01_W:
2 Z- D) i# h- ? - LDA TEXT01_DATA,X0 T. L( k9 F% E* d
- CMP #CEND+ E$ C9 b* n" V( @( o
- BEQ TEXT01_START0 F9 E, G: | H6 y- H4 s) B N
- STA $0705,X& z4 [7 s. i& x8 D
- INX3 T6 |3 q, L) K( f1 }% p
- LDA #$00
+ r: A, b: Q) @ c( F" x - BEQ TEXT01_W, v! j ]( ], Y/ k+ f ?
- TEXT01_START:
. O* @% }: y4 `! S1 J1 V0 a - JSR PPU_START
( ^2 d2 m- A: T$ Y; ?# I I; X, @ - RTS
8 w% N4 T' @( l. ^ - 5 K4 N, c- f# }! g) p8 i; Q
# G' `$ O+ V2 B+ \% _0 i- COLOR_DATA:
% E N3 X( N( |6 T: d; O# x - .BYTE $0F,$28,$28,$28,$0F,$28,$28,$28,$0F,$28,$28,$28,$0F,$28,$28,$289 O$ |4 w1 T, d- @$ ^+ ?6 d
1 E/ C6 R) ]* p/ U8 `- P1_PPU:
- B0 w9 V8 L% r. J3 \6 U - JSR PLAYER_01_PPU9 Y; N. \, F+ a4 F/ [0 E! \: _
- JSR $CBC00 \( T* M' k* \% M% |
- JSR RELIFE_P1_PPU* g5 D& _% U' K! o0 I0 C5 s9 u' ~
- JSR $CBC09 w0 F4 z& A4 t4 z' q/ i, R
- JSR RELIFE_NUMBER_P1_PPU
. k" I# @% \9 b) f! {" B9 \ - JSR $CBC0
3 N' _: S5 ^, V9 a - JSR WEAPON_P1_PPU) T* a0 ~, Q% y8 v1 t
- JSR $CBC0
2 w5 N9 C/ [; _* P' } - JSR BULLETPPU_P1_PPU
3 P ^ T1 l& r4 P; {& a - JSR $CBC0
7 g1 R7 Y$ w; }* R* K. G - RTS0 L/ W! h) ]" H/ X( e, z( q p
- 1 Y, G% U' l7 O) ^
- P2_PPU:) h# E4 B, |% f1 l% s
- JSR PLAYER_02_PPU& h; t3 O) k& \; D5 V+ Y- R
- JSR $CBC0
- T8 s% L" b8 W - JSR RELIFE_P2_PPU
3 V# ?5 O4 z8 @6 _' Y7 _9 B0 R1 X8 D - JSR $CBC0& I2 c) [ a. ~) v
- JSR RELIFE_NUMBER_P2_PPU! t; \; ~% g' l V: B. [4 ?( G! b
- JSR $CBC0
& u9 m* M* `2 r) r( f) Z/ L' \ - JSR WEAPON_P2_PPU p0 u6 n- n$ _) k6 [* C
- JSR $CBC0* Y& W4 \6 c7 c
- JSR BULLETPPU_P2_PPU
2 A3 A O$ {$ l2 Q& \+ S- r \' t+ J - JSR $CBC0
$ v& W. X I) c! [7 }6 N! H - RTS: u- `; Y5 R* \1 s8 _, B; F2 o7 |
- 4 ?6 J4 N0 I, v
- / V. a, \! m$ Q+ g4 J
- [; X+ N0 g+ P8 A6 _
- PLAYER_01_ADDR:9 M) D+ L3 t% |; I9 J/ f
- .BYTE $20,$A3
9 X7 p! b E+ x6 J; G - PLAYER_01_DATA:
2 l! r& l& |8 H5 m& H1 U+ Q - .BYTE CP,CL,CA,CY,CE,CR,CSP,C0,C1,CEND
& j( p+ ?; l! [' s; Y4 _3 N - PLAYER_01_PPU:
$ N6 ?0 j3 s! C/ Q! @ e - LDX #$00( h C8 K0 @3 `. c: V1 U P
- LDA PLAYER_01_ADDR5 \- q& u6 Z+ \. w8 I
- STA $0703+ K# T" o# r; s( I9 K
- INX9 ]2 a- s$ t9 G3 U5 J, A$ b0 S$ B5 R
- LDA PLAYER_01_ADDR,X
. L5 J: p* ?6 D; m) v - STA $0704
7 U0 ?, H" l+ A7 y% }# M4 W, p - JSR PPU_PROCESS
1 x* c2 o; o% x1 z/ }+ w/ b - PLAYER_01_W:) ~) `6 J+ N4 s3 C/ ?
- LDA PLAYER_01_DATA,X7 W2 h- q: L9 G2 g/ ]0 W4 t
- CMP #CEND3 i) y4 R7 ?+ D" k y1 K' S( ^1 _
- BEQ PLAYER_01_START
8 v+ G, a' H+ Q/ ]' a& k - STA $0705,X7 N& R1 p3 d% k
- INX5 _- L) w9 @$ T* h$ z4 @
- LDA #$00* Y4 v9 u- I4 `4 \$ p, s3 D1 S
- BEQ PLAYER_01_W; }) Q3 R& e5 Q. V; U; B6 _7 @
- PLAYER_01_START:3 ^0 |) m" _) G& W( {! v. b6 l
- JSR PPU_START
3 b: B) q6 Y, B$ p; g2 i - RTS
0 F3 N% v% ]* k/ ~ - , z0 u, F# ^8 `/ u4 k
- 2 ]2 ~$ _- P0 Y
- RELIFE_P1_ADDR:8 L5 a) W7 Y) E) Z! x: R
- .BYTE $20,$E3
& v6 v( O J$ ~; L9 Q - RELIFE_P1_DATA:/ I; K* O; o) N
- .BYTE CR,CE,CL,CI,CF,CE,CEND
/ I5 }: T& |/ R2 X$ e/ ^) k' S - RELIFE_P1_PPU:
+ L5 Y' s: z! E: G3 C* g - LDX #$00
4 z& Z2 B; R. G1 c - LDA RELIFE_P1_ADDR5 a/ y+ m) }3 h" f
- STA $0703$ W) R1 ~8 E9 a2 o7 ^9 }
- INX
0 X" w6 V7 ~1 ~3 y* U' J5 d - LDA RELIFE_P1_ADDR,X, ?# I+ l* B9 ?2 V2 t8 u% q% A5 A" C
- STA $0704( ]+ Y6 C% a- t* B _# e; L8 ^& w
- JSR PPU_PROCESS9 V4 F: M+ z- Y- I- w% }* J
- RELIFE_P1_W:* H! R- Q7 v7 ]9 J
- LDA RELIFE_P1_DATA,X
, Y. X0 T: S' T$ W! X( q - CMP #CEND* Y! X H+ h$ @2 |: R
- BEQ RELIFE_P1_START
4 ?0 [; q0 }- s - STA $0705,X% G0 N0 E8 N* [2 M3 w+ I7 W
- INX
+ E5 K2 }8 n* l7 r - LDA #$00
7 H9 }) {! p6 ~4 c - BEQ RELIFE_P1_W
. U6 q% c% B4 g - RELIFE_P1_START:
/ ]# k- x; M6 f9 v - JSR PPU_START
0 U5 {4 m) K' N. u- M0 m - RTS
8 f2 }5 o! o1 O
7 d/ u" T$ V7 X4 h& y% }& g+ M% ~, b- ! h) S T/ }2 b0 R1 C! A# @7 L
- RELIFE_NUMBER_P1_ADDR:
' ~8 B0 H' l. X7 f$ t4 q& W" K - .BYTE $20,$EA
' \8 G+ N4 Z0 m - RELIFE_NUMBER_P1_PPU:, ^9 F& m5 S9 ?( Z: R. z: @
- LDX #$00; P c- {) B4 r! u, m9 h( T* x( b
- LDA RELIFE_NUMBER_P1_ADDR
0 P* t1 b6 t7 ^8 Q) A& A - STA $0703
" B; z M- e. N2 i - INX
5 I t4 h" B( x4 T7 V - LDA RELIFE_NUMBER_P1_ADDR,X
' C& Y3 O& l% P! U - STA $0704* {% P; B+ I3 E O# N
- JSR PPU_PROCESS# Z5 m i8 W- L
- LDA $32
( d; j1 f' R8 H1 B- q+ {9 x - JSR LIFETODEC
3 s6 `& B8 X' S/ e* [; S0 F - RELIFE_NUMBER_P1_W:
% B7 _( E# A& I0 b - LDA $7A03% N; h/ @* P( D/ k
- STA $07056 [# ~6 f# ]1 a5 ]1 _
- INC $0705
: {) q+ r( m) P$ W5 G" `+ f5 g - LDA $7A04
! C/ q0 h+ X, J; j - STA $0706
2 H9 S7 Z3 ^4 S2 s1 w7 I - INC $0706$ _8 f4 _6 s+ E F# i
- LDA $7A05
) J! o! c/ f! g8 n- m p - STA $0707$ A" W' J/ w) {5 {! Y
- INC $0707
4 x `$ V0 a4 G6 o7 S+ k: _ - LDX #$03; S' l, z/ J- g# M" W( J# u: R
- RELIFE_NUMBER_P1_START:& L$ Z& { U/ Q
- JSR PPU_START
2 k! G2 x% a+ I2 v. v Z - RTS
# z8 V2 e& s* L6 G e: B( A' [
D' U' M& f% {# y2 o9 n- WEAPON_P1_ADDR:4 g! B* J1 D: I2 H, F L5 f
- .BYTE $21,$238 {) P5 `# @5 W5 n. Y; d8 W; P
- WEAPON_P1_DATA:
* O. G+ F$ {, C1 R; q - .BYTE CW,CE,CA,CP,CO,CN,CEND, J) e7 S7 \6 g" R
- WEAPON_P1_PPU:* V. Z& A* W( ^, J: z
- LDX #$00
, n& m* i: Z- z# s7 \ - LDA WEAPON_P1_ADDR: D8 e y3 }7 E9 `% s
- STA $07033 L# r9 q6 r3 m' l
- INX
4 J% |5 q' y! I! O - LDA WEAPON_P1_ADDR,X$ N$ Y6 ~2 b. I8 u
- STA $07048 b" r$ f. K7 s6 l
- JSR PPU_PROCESS
; t4 M( Y4 U* J$ l& h- Q - WEAPON_P1_W:! X* U; I! `" @! Q
- LDA WEAPON_P1_DATA,X' D$ Q" z' x6 T9 P# b% Z
- CMP #CEND
; K9 b4 F! Y7 p+ L: \, l4 N/ { - BEQ WEAPON_P1_START2 K' |+ z8 A0 t6 n" Z4 g; j: z
- STA $0705,X
3 G' T% ?. R6 e: @% v - INX
+ U+ c3 \' e* R# _7 x5 J - LDA #$000 B( V5 K# R5 j. C
- BEQ WEAPON_P1_W Z4 e/ v: f- h* [8 X X1 j
- WEAPON_P1_START:) a' \' [ _( M
- JSR PPU_START6 h) U% Z& P) I Q! Q8 }0 w2 c
- RTS- U# L! R+ i& c; ~ u" _! ^/ |" \. `" x
- 9 V% d. x1 T/ M" b3 u* L. X! f6 m6 q
- BULLET_P1_ADDR: W* G- ~; H8 h5 @4 g4 H
- .BYTE $21,$2A! M6 ]; s1 }& Q7 M: d
- BULLET_P1_DATA:1 `. C- l, K3 e( X. ^ f6 V
- .BYTE $00,$01,$02,$03,$04* [/ m4 m( f. e/ H* }
- BULLET_P1_NAME:
9 J0 i4 l# z6 r - .BYTE CN,CM,CF,CS,CL
/ p! z& F- Q: X4 R4 @/ [ - 5 s1 c0 z; V! F# o( p, f
- BULLETPPU_P1_PPU:
+ D q( l L: M2 ^ - LDX #$00$ L, S# U- \9 S* X1 D
- LDA BULLET_P1_ADDR
, O7 d ?$ l' j: |4 d3 d$ j/ k; { - STA $07035 U' b' _( F' d; d- l& K* a$ m6 q
- INX) H9 R3 J" E: r' ]7 O- d, I+ v4 n
- LDA BULLET_P1_ADDR,X
, l5 }7 B* }3 [) R2 F( n4 X0 T9 I - STA $0704
* K6 p& [; e/ m - JSR PPU_PROCESS
~9 ^( R/ g" _7 O, x - BULLET_P1_WRITE:/ ?9 T' \3 o4 C1 ^
- LDX #$00
6 R* S9 m4 [, R3 B - LDA $AA
+ |4 j' ~+ ^; P6 j+ _ - AND #$10
7 e7 s( f# L3 v8 f - BEQ C_BULLET_P1
5 D7 R. J, |, u. v3 r+ x - LDA #CS
) ?( j9 d7 M: u* b - STA $0705
H+ T! ~, K% n$ u - BNE B_NAME_P1
: S1 j% Q( g; n. P4 _' w - C_BULLET_P1:
( U& h$ \9 E# Z - LDA #CC
. t# w/ D% s; [9 I# W - STA $0705" w: q9 T: z, f6 b4 @5 r
- B_NAME_P1:
. w" u. V0 }, `/ {4 `2 i - LDA $AA" m& X m( R5 n: ]
- AND #$0F
; a( H6 v4 |7 i% `) p: ` - CMP BULLET_P1_DATA,X" R/ n& V* K( z" E" D2 E6 o* z
- BNE B_NAME_P1_RECMP
. m, X" h: O1 f! O - LDA BULLET_P1_NAME,X( T1 a% _7 J% y( w
- STA $0706) }! e6 ~' g+ ?5 |# t: z3 ]4 x
- B_NAME_P1_RECMP
+ \8 J( o. e+ T* L; G8 W4 d - INX& A& k8 x( i1 v; V6 I, k
- CPX #$05
0 K: u9 T& R9 c$ M, p - BCC B_NAME_P1' p, o/ T" ^& O5 f7 p
- LDX #$02
/ g& B$ E# D, K, {& i - JSR PPU_START1 Q- h3 L4 N9 p0 N5 n
- RTS
& d g5 S) s! q" i+ T0 L - # D. K/ a" r) C X& y! z
- 5 B+ l# C( |! B! c0 B
- PLAYER_02_ADDR:
9 b3 d! ?, u! \* N; ` M - .BYTE $20,$B3, Y; ^6 u! |/ U
- PLAYER_02_DATA:
# r1 n# E6 S# N {0 M. d# v - .BYTE CP,CL,CA,CY,CE,CR,CSP,C0,C2,CEND
# B3 \' X0 J: _* ~3 j9 q x2 q - PLAYER_02_PPU:
4 V' Q+ d& j- w, O: V; a - LDX #$00
% h$ [6 a- z" F# B# ^1 q1 r - LDA PLAYER_02_ADDR
3 Q4 c+ i9 j4 m' |$ H6 i0 @" k - STA $0703& z2 m' o! g( A4 V
- INX
2 |, s8 ~9 y* F" t* E% d - LDA PLAYER_02_ADDR,X" M n% F) ^. r
- STA $0704
' q" Z& w8 @+ ^. G5 O. s - JSR PPU_PROCESS3 r# V& a5 b9 i* i6 s6 |; Y
- PLAYER_02_W:# g/ z/ X6 Z+ a5 m/ ~
- LDA PLAYER_02_DATA,X
, p9 \, i# ?2 ? N' o' X' v1 p - CMP #CEND) Z! R1 Q* g* N
- BEQ PLAYER_02_START& \0 m9 y5 i" r# h
- STA $0705,X
) X% K' u# s( M7 h' B# |) v - INX4 ^- p/ m6 O1 r' e+ L
- LDA #$00# w# e* m6 h- s& V9 H
- BEQ PLAYER_02_W
X+ \( ?9 v7 D# K1 z - PLAYER_02_START:3 B; ?( C+ Z" f5 Q. I2 ?
- JSR PPU_START
- m! g3 ]* k( y& H1 n/ W - RTS; v8 U( ?$ M0 K8 ]5 ~) l7 i
- # M4 x4 M0 @4 ?: ^. v' ]# q: K
: }. `1 |$ a0 d& }. ~- RELIFE_P2_ADDR:
4 }/ A) T& u8 u+ v& Q6 H - .BYTE $20,$F3) O! i V$ z" c9 k, z
- RELIFE_P2_DATA:
) Y2 `; K. z! e$ A) o; _ - .BYTE CR,CE,CL,CI,CF,CE,CEND* }% _8 k. _ }3 U7 w
- RELIFE_P2_PPU:
8 f) ]7 B u2 ?+ r: T - LDX #$00
$ h& \3 q: [8 |9 u( M - LDA RELIFE_P2_ADDR
0 Z0 s0 I- Q: I" f - STA $07032 y6 I; P1 G8 ~2 Y; {
- INX G+ S, z; m$ j1 m& p3 O
- LDA RELIFE_P2_ADDR,X
8 W4 d, V6 T5 l: b- c3 ~$ T; ~# Q. { - STA $0704 Z* K, D- P: `' ]2 [
- JSR PPU_PROCESS( R' r: Q6 I# a% m
- RELIFE_P2_W:
8 E8 B _# g) T& J5 T+ [9 |$ F - LDA RELIFE_P2_DATA,X
: ?: s7 t& n$ c$ Q% Z, n - CMP #CEND1 R+ ]5 P6 ~6 C ~' A
- BEQ RELIFE_P2_START
0 O$ \% M$ q1 B- X# |6 |$ D( g6 [0 k8 s - STA $0705,X- a, C2 o$ h9 S, O4 R" M
- INX
2 c- s: z$ H) K - LDA #$00
* @5 u9 h0 J! Y/ l7 a1 v. @ - BEQ RELIFE_P2_W
" Q0 v; b4 u- v! O - RELIFE_P2_START:
- M- L3 K4 Q9 g - JSR PPU_START$ z8 b3 E+ v2 z3 a S. c
- RTS y4 u( c/ m, E- x" D
+ p M5 x0 }* l2 W0 N! ^- I4 l
9 M6 ~$ d# `6 N4 k5 b, p1 k- RELIFE_NUMBER_P2_ADDR:
' R. m" u; f. K0 i9 } - .BYTE $20,$FA
. g+ a! d( `0 D) N' [7 H - RELIFE_NUMBER_P2_PPU:! }3 v0 N, e; T) {4 T) z
- LDX #$00
6 |: ]/ A8 B6 W) t: S/ s - LDA RELIFE_NUMBER_P2_ADDR
0 _9 l7 D5 B; ]/ w# b' @ - STA $0703
+ P! \" y0 y6 j5 }) M1 P - INX
' s: a8 M+ N# m4 x - LDA RELIFE_NUMBER_P2_ADDR,X& t% Z, |# v9 j" k, \& W: \6 @; r
- STA $07042 {/ m9 A& W+ z/ w
- JSR PPU_PROCESS5 w8 M! S7 ]* i) A
- LDA $33
" L/ Y& m' d M+ k: L5 Z" z - JSR LIFETODEC
! m) M$ W6 m4 F8 c/ z* [ - RELIFE_NUMBER_P2_W:
# L' I. \' _. t1 ` a - LDA $7A033 }2 c- d# ?; w* q. ~
- STA $0705' ~( V; g- {; ~2 I1 ]
- INC $0705
. h2 g% u8 m6 }" y! |* |, D; L - LDA $7A04
, n9 Y; M, R8 a; c) T- o - STA $0706
( D" H- x1 I+ H1 p: W) Z F - INC $0706
+ B" S) i6 r8 g: |* { - LDA $7A05
5 T5 Y2 M3 {! m) M0 n - STA $07075 `1 j) l0 M4 s; b
- INC $0707% ?, E7 @6 N q6 A" q R
- LDX #$032 B8 \1 ^' X9 ]6 U3 q
- RELIFE_NUMBER_P2_START: x2 S2 V- ^$ Z5 n c
- JSR PPU_START% U- G, Z9 i5 A
- RTS6 O& H9 O' y7 v( _9 ~
- 6 U; ?" u: L5 t# n+ H7 \6 K% e
- WEAPON_P2_ADDR:! C# [' z6 `1 A6 s1 G7 B
- .BYTE $21,$338 a! f9 w) T: _" @3 L
- WEAPON_P2_DATA:
5 H" |/ v5 \- f J4 J4 H - .BYTE CW,CE,CA,CP,CO,CN,CEND, V* S q8 Z! C1 n8 W: [7 H
- WEAPON_P2_PPU:( E0 H# L2 J, }
- LDX #$00
( B3 e! M! U4 m- p) ~ a - LDA WEAPON_P2_ADDR
; D9 I+ c! h# Z" I1 F6 A - STA $0703! q8 p5 |* T# W% }! [; W' G
- INX3 Z' [3 \6 m$ Y; j
- LDA WEAPON_P2_ADDR,X
- Q4 _2 C0 n. | - STA $0704
7 U9 I& M3 s1 x - JSR PPU_PROCESS
# d7 }0 Z9 g5 z - WEAPON_P2_W:
& i1 {& k% E& ?5 u - LDA WEAPON_P2_DATA,X
& Z# @' L0 o2 i/ k3 j. e - CMP #CEND
2 u& n' Z: D1 C - BEQ WEAPON_P2_START" n9 P) T5 i$ ]! x6 Z
- STA $0705,X
, }- U% B! A( j4 n: _2 Q - INX# r" \" _: S g3 c$ j% U2 r4 ?" |" L
- LDA #$00
. \/ y' t/ }* Y, M0 P: H& k - BEQ WEAPON_P2_W
8 ?) {7 W" [/ P* B2 b - WEAPON_P2_START:: T4 H! P9 l3 t% [% C6 l6 E
- JSR PPU_START
" K. |1 N. }2 a9 L1 | - RTS/ P) \; P: G' C' @8 d
- ) n) p' y; o" ^6 H7 l/ W$ N0 `& U
- BULLET_P2_ADDR:8 Q4 D) q' \( {! s& U) K1 m
- .BYTE $21,$3A
; k& T% s: d5 v6 d5 { - BULLET_P2_DATA:( z8 E8 f9 y8 O- ^
- .BYTE $00,$01,$02,$03,$04# t6 G: K6 `5 L% \- h( X7 V
- BULLET_P2_NAME:' ]; E; t/ h$ v# u3 x/ U0 u6 g
- .BYTE CN,CM,CF,CS,CL
0 G; E$ _, w: T$ O( F" F - ! z. g& u( Y$ J, b
- BULLETPPU_P2_PPU:
& T* h2 j% Q6 U - LDX #$00
, s$ f1 B4 f5 j* }7 ^# I3 R5 Z* S - LDA BULLET_P2_ADDR; b( K, @9 a' W
- STA $07030 ^2 y" g! g2 Q: c/ a% A Q4 L
- INX3 Y8 d9 X, y8 i' E: H$ u
- LDA BULLET_P2_ADDR,X
) _3 j t6 O6 O6 F/ e - STA $0704
" v* m* F. I& O3 e( |, ? - JSR PPU_PROCESS6 }- `: L: y. }5 ?- y& G2 J
- BULLET_P2_WRITE:
9 @/ `4 h. a2 g2 k - LDX #$00 l7 E n8 L5 {/ F0 R
- LDA $AA J- `2 B0 q7 m- d) ?
- AND #$10
6 a, W+ I2 [- a" H# w8 C( w - BEQ C_BULLET_P2) h! C4 T$ B/ [- a* `
- LDA #CS; [1 L3 E" r; k: C9 M0 m4 x
- STA $07054 ?1 t; U( m) ]2 H- F. T5 u4 R
- BNE B_NAME_P2
6 W+ I0 G# y4 x( H0 P% [ - C_BULLET_P2:6 A0 h& f( K2 g1 X* ]6 `; p( i
- LDA #CC
/ f, z7 _# K e - STA $0705' s1 r- u3 Q3 H8 i7 E: Y2 B. b! ~
- B_NAME_P2:
' L9 }& K2 ?5 q; A# B. f - LDA $AB
% r) Q4 s2 h( c2 ?8 b3 H' ]" | - AND #$0F
) i1 b8 k( l/ {* F - CMP BULLET_P2_DATA,X$ J/ l8 `5 H% M6 E$ ~, _1 z
- BNE B_NAME_P2_RECMP
/ f6 a0 y) l6 i! g# F6 }" c - LDA BULLET_P2_NAME,X! I9 C9 c: ~. D% R/ L: p+ }8 q
- STA $07069 J9 \" o- H% |, D0 {$ m( E# L
- B_NAME_P2_RECMP% P' T. `) n, }* e
- INX
' X$ Z. D2 `$ v( F" w5 @5 Z - CPX #$05
6 [, A# z# D1 I% J8 [- V - BCC B_NAME_P2& c" o: ]8 {4 F9 x
- LDX #$02
/ I, U$ _5 g s( f0 @0 Z9 }8 V - JSR PPU_START
* J. {! l4 H/ F, }, l* c8 W' P - RTS6 v( @6 N# g8 K/ x( K7 e/ S
- # v$ _ N4 n# H' E4 G# [
- $ v7 ?1 k9 K6 z$ }- j+ f8 |- C& |
-
& N7 H9 A7 O X( b
+ L/ f# y9 g8 o/ z" `' D- P
+ p# i, H; M# D, B8 U7 z& O- g
8 W- X$ ~1 f3 B' M' e! d, C- LIFETODEC: ;十进制转换
4 N, x; _) u/ a* f - LIFEL1: ;initialise* L: p+ C8 p/ E. a' Q; X- q
- STA $7A00 ;$7A00=F3- g( A% C* s( ~) L( a6 M o1 e
- LDA #$002 p) T/ o, ~( B/ {
- STA $7A03 ;$7A03=00
5 Y6 j" w+ Q5 h; p; J" M - STA $7A04 ;$7A04=008 x; E/ x! n% m5 ]0 o* r
- STA $7A05 ;$7A05=00 R' }- M, w6 v3 M# a
- LIFEL2: ;copy data $7A00 to 6001
4 x M0 d' T! T t/ ^0 j - LDA $7A00
8 S) t* V; A% L# w/ ? - STA $7A01
9 `& | V+ R1 Q$ E
& j$ d7 g; J3 g- LIFEL3: ;hundred6 Z8 p* k. r: q) _& Q0 h1 Z1 p
- LDA $7A01) H) q0 c; {9 y! c+ ]- R
- CMP #$64
9 V" F1 ]9 y9 z. N" [ - BCC LIFEL6 ;$7A01<100 goto L6- _+ _; d. O% Q' p' R+ D
- LIFEL4:
7 ]. J) @/ z& |9 p; H - LDA $7A014 O) i7 O5 Y Z# |& |9 b# o
- SEC- Y) ~! p: ?: `( e9 _4 v
- SBC #$64 ;$7A01=$7A01-100
7 p% s6 y6 Q3 d9 g - STA $7A01! o/ M9 g7 o1 v% B8 u4 m* b
- INC $7A03 ;hundred++, `2 i4 Q9 U0 ]1 o) F
- LIFEL5:
) {2 @# M2 s0 P - LDA $7A01
/ }8 B* L6 o' ?9 R/ p$ K5 O5 G - CMP #$64
$ M+ i3 u) X; ^. S+ A - BCS LIFEL4 ;$7A01>100 goto L4
1 U# S7 f: h, e" Z1 g0 b& ` - 6 r, f: j1 C! @0 D
- LIFEL6: ;decade
6 p- i. `( G, d) T5 j& ~ - LDA $7A01; y# V5 Z/ M' I$ u5 {/ R8 b
- CMP #$0A% g' l, p6 {9 A" [ Q9 m
- BCC LIFEL9 ;$7A01<10 goto L9
, A, z8 H2 a5 b8 t2 i& X/ Q - LIFEL7: 5 h; G3 b9 B% P6 X( Z9 w1 P( c
- LDA $7A01
1 Y: m% O. L* s8 N8 x1 v/ ]0 A - SEC
% U* X/ M6 h# c& X4 f/ D3 c& ? - SBC #$0A
4 n8 `$ H3 a1 G3 {8 j - STA $7A01 ;$7A01=$7A01-10
; u5 R" {4 g, Y# N( P- X( r - INC $7A04 ;decade++
! y" E- F J" m O - LIFEL8:) d2 C& M+ M6 h1 G* c
- LDA $7A01
5 W( M. n, K% L* q - CMP #$0A
9 t- ^2 A: m% J; A. r$ C0 \9 r, b - BCS LIFEL7 ;$7A01>10 goto L70 G; K/ j7 W; I/ D# A4 f
- ;unit5 n4 ^! ]2 Y6 H( m3 E6 R& j/ M
- LIFEL9:- I% o5 u1 o+ V. I J
- LDA $7A01 ;$7A05=$7A01. ?2 G, a6 w9 S+ z1 r) {
- STA $7A05 ;unit/ e4 t* N# f! {$ |5 _
- RTS ;return
+ Q3 h& D9 y- @ o% V - ( L3 V) g- l% e% h5 v( q2 ^$ L% e
- R. ^3 M: V$ k4 h
- % ]+ v: |5 S- i4 |. i' p/ N
- PPU_PROCESS: ;PPU地址处理程序
9 M! X- a4 L+ c- j - LDX #$00
4 e$ c% y% a: z4 E! K V7 H - LDA $FF {$ ` r+ u* d( v3 ]
- AND #$01' r( Z1 o: r8 R* c, k
- BNE PPU_2400_27C0
( Q; q5 J, F- O - PPU_2000_23C0: ;命名表1
) d) P3 M @( U& F - LDA $0703
/ p7 i9 ^0 q' n0 e' o& u - AND #$FB
q, l; X( ] v$ e - STA $0703
' n! I, W; e$ C2 F$ b8 I# N, Q! b/ c - RTS/ l, o1 J1 {/ g, q
- PPU_2400_27C0: ;命名表2
9 L1 q' c; G/ W5 e2 K1 B; C0 ~ - LDA $07031 H: P2 M+ o3 @# V; s& v( f
- ORA #$04
* `: |! a. h, y$ W8 ~ r7 | - STA $0703! S& i) M2 L& T$ s; h' n
- RTS
+ C6 [$ {* r/ p- D$ Z; ^ -
; B: Y+ [' d- G* s9 [ u+ J4 W - PPU_START: ;PPU数据写入
: }: [, Y2 C% \* q( n6 M - STA $21! Z' c0 P1 G& ?, V2 A# Q
- STX $0701
9 t, O0 D# T9 `, I+ n+ I; E - LDA #$00
9 W( i& h6 A2 ?. A; D - STA $0705,X0 v( f6 K* q4 ~
- LDA #$01$ b+ |6 \& r( ~& M9 y% p) `! q
- STA $0700
$ V9 Z' F: J V9 q - STA $0702 D5 ]6 j) Z- I- `3 u
- RTS
8 G6 r1 m/ A1 G" F5 I
: Q& h$ N+ I! }3 T/ q7 E/ J/ N( O7 C- / ?' z. v$ {! t$ D* l/ z
- 4 A: w# {7 }- B" h+ y/ s- Z5 H* l
9 O+ A( `4 E4 ]: i6 L. _4 ?
& ]( c8 ^5 b7 o% A ?: v% a. M
9 u- w0 ?1 @, [7 A" X: O4 s
复制代码 d! m! E$ d" Q9 e
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|