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