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