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