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