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