|
|
本帖最后由 yandagui 于 2017-4-21 18:58 编辑 $ q3 ~& L1 |" n& a$ c H
8 V6 j1 d9 i% J [FC][最终任务][END选关]( g. y: {, V c9 n8 j- ?& s9 L5 r
" R. T7 |' C& j8 V8 z6 p* Z时间:2017.3.29) A4 V: c6 k4 z8 Q( M9 Q$ ]* V
作者:FlameCyclone
: D1 k- |+ N* n3 ^- ^内容:5 ?* Y7 V7 [" F) Z7 T$ Q* }
1.关卡选择: 标题时,左或B减,右或A加(1-5关);
* G4 j* f* Y+ O9 B- e 2.无敌锁定: 暂停后,按上键切换;
/ g! B' J c: o2 Z# n 3.生命加满: 暂停后,按下键切换;3 S2 c* M* o& [. u! l6 F( y: g6 y
4.速度调节: 暂停后,按左键减,右键加(1,2,3三级);" w: C' v) S0 y
5.子弹切换: 非暂停,选择键切换(普通,W,L,B);4 ]' e, f, v) w4 Y+ A, L
6.B弹数量: 暂停后,按A键切换(1个或2个);) {) x8 k g b3 }# p
7.副武器类型: 暂停后,选择键切换(普通,W,L,B),非普通时子弹方向是向右发射的;
3 M' X9 G1 r: e& b$ \; `' T! w. C) v; p* G: ^
! [0 |" S7 b. ^0 Q8 d# F* d4 r- [- o" A
* Y' L5 I8 v( e' P- s# F

: B( {! l+ S+ w; x. q# D ! b+ O; T5 J! y5 y
. c2 Q1 [5 E p6 n) A2 G" F6 F0 T( ^9 a2 f( X- J- R
FlameCyclone.ys168.com& w8 x: v) e) ]" ]. H/ L
www.nesbbs.com- ;[FC][最终任务KEY][END]3 S/ @7 V. }. L2 v
- button = $04 ;单次按键
3 d4 u& U6 n0 N& U' ]6 S - flag = $6000 ;功能开关标志
9 C. B/ Y1 D/ B7 w- f5 F: B - pause = $000E ;暂停地址 G& H! D! t3 U7 K
- % B3 P8 x% [; S; G1 j/ _$ B: m
- .ORG $80003 C/ F5 V/ a/ ^& q
- LDY #$08 ;自带的按键程序
- B$ u5 {/ y# \6 K8 O$ x - ADDR8002:2 \& m) y9 K! _! P* a
- LDA $4016,X
: K( x5 M, R) u8 | - LSR
5 I% \' Z, Z8 Y - ROL $0021
, o! Q- m/ {5 h# E( ] - LSR
, [9 C* F6 V/ W5 K - ROL $0029( j/ I% B& b; Z' r8 Q
- DEY
0 @, x1 Q7 y4 b' ]! d - BNE $8002# G6 X5 o9 s o
- LDA $0021
8 p3 j; h: h% M' e# A - ORA $0029( t( D6 _7 u( _ y2 ?
- STA $00215 a/ [" u0 f5 l9 g8 H3 Y
- LDA $0020
2 Y5 ^5 v5 W/ |- l/ j" m6 F. f - AND $0021- [& j% Y+ M, V# `3 _) O
- STA $0020 j& `* Z* e- C4 T' }( D3 j
- LDA $06,X
9 t! d6 @8 f7 h0 V4 S - EOR $0020: D7 q( p+ ]2 }, f# O/ q4 d, Q
- AND $0020! _. u |& ^9 R( l7 ]0 ~5 e" p
- STA $04,X
: X2 l. _9 k1 N1 [+ ?; D$ w - LDA $0020! a6 d( W; G) x, r6 C& J6 t
- STA $06,X: g: M& ?1 O" H- W5 C+ E
- JSR KEY_OPERATE
+ _& K3 V& q0 d/ C, F9 f0 x: d - JSR Function ;功能调用, \% d: I1 G& e3 p. W$ a& \& f
- JSR Weapon ;武器切换调用
4 H# M1 v9 {9 u3 j0 i" i - JSR Power ;威力调用+ O/ f. H: O3 h
- JSR BULLET_NUM ;子弹数目
6 D! T! w, R2 R; v - JSR BULLET ;副武器类型) A+ m( Q) Y; P/ K M$ V \) ^, @
- RTS
( d, F& m- t2 n- i3 Z5 X8 S - " `! `# p$ t, S: K
-
) x0 a. S; c7 P
* [2 n# Y' L6 V- r, x+ i- .ORG $8050/ M3 Z5 A1 I0 i) Q$ u; N- D0 K/ ~
- Function: ;功能9 z+ Q1 q8 v5 {2 B/ \1 ~3 a6 h
- WUDI: ;无敌& R1 x& a! Y( x/ j' { k% A" D
- LDA $6000,X: Y! ~6 w6 P6 K6 h/ Q
- AND #$08 ;开关判断
" r& S6 m) e$ N6 F - BEQ LIFE5 Q8 l6 L5 r: t3 p! l
- LDA #$059 N$ f' A0 ^3 i, S2 f
- STA $05DC,X ;无敌锁定, L5 Q) o6 c2 p' N7 @
- LIFE: ;生命
" e1 @6 o+ k; }" v+ v - LDA $6000,X: g" v7 U/ x: A% g
- AND #$04 ;开关判断1 N8 ^6 J |8 E* D. |7 S4 V. d
- BEQ FUNRTS; g2 V- g' x3 w
- LDA #$05! D) v2 M$ Q8 @6 G0 o, O; r& z
- STA $1C,X ;生命赋值
1 h! v1 m$ A1 c - FUNRTS:, ]) a" C6 w( b/ U+ u' X3 o1 {
- RTS
; N$ l H: q0 A7 j5 u6 ` - ! v+ p7 C" }% @8 r$ \
- Weapon: ;武器切换4 _9 ?! _- s/ e4 V" n# f' h
- LDA pause ;暂停状态判断% j: o# k. S1 ^' T8 _
- BNE WEARTS2 @& d5 f/ Y4 F* V! l6 t7 M0 M
- LDA $04,X
5 }6 n2 Y L- Z+ A( |) C4 D$ J - CMP #$20 ;选择键判断, z0 t" q4 i, x; Q0 ^2 F" {
- BNE WEARTS) r2 [; E- m& g, U. N
- LDA $12,X
8 k% |; e2 F5 P& z0 C2 B. {# p* Y - CMP #$03 ;武器值判断& x( c; j c: G4 F; q
- BCC WEAINC6 Q! Y) G0 k* P8 f
- LDA #$FF2 M1 ~9 S4 e+ A) q
- STA $12,X ;武器重置
+ e8 T' i$ |; X( ~' ~ - WEAINC:8 X+ }: E/ Z2 g8 C: v
- INC $12,X ;武器增加
4 X/ K7 Z% W8 B& o; b -
& A: L+ |: ]& [) ?% C& U5 D# [' k - WEARTS:
' f g! U$ R' _5 j: |- ^2 F - RTS: h, T" v8 F9 R
- & n4 {3 m( ?! x- ]" G
- Power: ;威力/ R% _. d1 i0 M: h9 }( Q, a* e
- LDA pause ;暂停状态判断& W. A5 m2 G. c5 O: x
- BEQ SPERTS: Z6 H" n' I n2 S2 l8 x% `& Q
- BUT_LEFT:
: E* g" O1 s2 B% J - LDA $04,X
4 i9 V" O2 r' d4 j - CMP #$02 ;左按键判断
1 I% z! y* I1 g) h - BNE BUT_RIGHT
8 B, {5 _' G$ E6 C3 \5 A7 H; N - LDA $88,X0 j* j! n; b! V d6 L
- CMP #$00 ;威力判断5 z& v. n( m6 \
- BEQ SPERTS F F$ W/ \" e% @+ t" E A0 X2 G
- SPEDEC. N4 m% J; A# m) d4 V( ~' w
- LDA $88,X ;读取武器值
8 q% h* n& C0 v2 x4 a - SEC
: Z, E5 b' Q6 U B# d4 T - SBC #$08' N7 z: Y3 m" T3 y& Q; u' y k* g
- STA $88,X ;威力减小
8 S% w' u/ p' `' K2 q) B - BUT_RIGHT:- t; G& c! J) ~+ j
- LDA $04,X
- {- q b' K; }, @2 J' O - CMP #$01 ;右按键判断
" j- r& s6 Z; U+ o - BNE SPERTS
/ d" n% X: w1 c+ v- U - LDA $88,X
" @; i: C, R; C; Y' p# s6 t" ~ - CMP #$10 ;威力判断
2 {, K- H0 y9 w9 w; B/ ~* s - BEQ SPERTS
" X2 N/ ]; x, { - SPEINC:- B6 K8 E8 f" {4 P. F" L
- LDA $88,X ;读取武器值2 H) q( }7 L" s4 N. S4 `+ _
- CLC
2 [4 n) v& f: v2 ?" W" h7 E - ADC #$08% N. P# b6 R5 f* N
- STA $88,X ;威力增大
' p; m) |7 c$ B) P8 k) L- T: I -
* Y2 u4 |: Y y( [0 I - SPERTS:% ]+ P a# x" v g x7 p" e
- RTS8 P3 s5 ^ ~" \$ V
- - \' D$ l, k G) q" d; ]+ R. `! Y
- BULLET_NUM: ;子弹数目
; D( p. W6 R" n- Q - LDA pause ;暂停状态判断
; a, H" K# v/ N" s$ I# h - BEQ BULRTS: u7 ?4 a4 f/ _4 V% T j
- CPX #$00 ;主机玩家判断
; m4 v9 j3 d' M Y - BNE BULRTS; v3 |& O% F6 p( h8 |0 G
- LDA $04,X ;主机玩家判断4 ]) W; e' r C2 Q. T$ W" k# `
- AND #$80 ;按键A比较
6 ~* _; x4 a( Y! H# |" m - BEQ BULRTS
5 M* |, t/ B0 @: D2 Y- j1 f* y - LDA $87 ;状态判断, _# `7 a+ B. Y3 z# r
- BEQ BUL_2$ x. i+ F2 d- f- _: K9 K
- BUL_1:
1 o( A& b3 {8 s; J - LDA #$00
! z& ]0 o3 t" r5 {* I - STA $87 ;1发子弹/ L4 Y) f* n/ l. D0 Z( s) s4 R
- BEQ BULRTS
) b& L" l' u% V - BUL_2:, V7 ]" S. @' k1 G
- LDA #$01
5 O% }$ S! ~! S M1 M& w' I& Q! x - STA $87 ;2发子弹
+ t8 c" L% N; M: ^5 t -
" V7 t) s0 c% l1 K' X - BULRTS:+ C1 [, a7 f0 M" R3 e# i& g
- RTS5 _' |5 z, j! l9 d) m; X: g- D
-
% p$ U- B8 s# h4 I* x& h
3 w+ y# ?; s2 ~; H- BULLET:
9 a* d7 x) h. @9 u - LDA pause ;判断暂停状态
7 C+ |0 f9 i0 @. N) x. T" p - BEQ BULLETRTS, R9 O* ?' ?; Z# V. v( v
- LDA $04,X: I# n0 c3 b- F8 k
- CMP #$40 ;按键B比较# W" M! T: S0 {- w8 a
- BNE BULLETRTS
; s0 Q5 E1 s2 f7 ?: z0 w - LDA $6002,X ;读取副武器
+ ^- {1 c: `. y- b' G) t% Q* V - CMP #$038 `! }' D! J4 ~+ V% [6 i
- BCC BULLETADD7 y) j+ a& [* @) h/ W5 o ]
- LDA #$FF! K: V4 B' P8 d) |
- STA $6002,X
; ?; l+ W! M9 W9 b* R9 H - BULLETADD:
5 Z2 Q4 ?) I1 m- d" e+ P: D - INC $6002,X
5 N4 W9 j) H0 K" }' W; W4 f - & f. q8 {6 q/ E' r: [
- BULLETRTS:: v L0 P. w* n u2 u
- LDA $6002,X
1 e6 p i+ Q) p) Q. f - TAY
' w! l! @: ~& k: Q( ]* Z - LDA BULLET_DATA,Y$ h9 ]+ X ~( R7 d
- STA $6004,X ;写入副武器数据
- P/ A3 ~1 N. R4 m - RTS5 S0 a# o( N$ ]0 F; Z0 N
-
8 t: H/ ^ w2 e6 |( _ - $ p& I8 n& M% S1 N1 `! C
- BULLET_DATA:
4 C& m* _/ Z( M; r0 W - .BYTE $06,$02,$03,$04
7 L2 r/ j) v% C -
3 [4 D' R. P. R# P% a - 0 V( b4 ^( }# ^ t& {$ B" V* R* q
-
7 [7 ~" v5 e6 W5 y - KEY_OPERATE: ;按键开关操作
" g, h! G+ {/ w: F& Z - data_protect: ;数据保护 D4 l0 s+ w, Y2 b. V7 n! z. _2 }
- PHA8 x+ H# \1 N2 a2 k
- TXA
5 Q$ F! @; d: o - PHA& j$ o' w6 R% b) H
- TYA' V; j6 z* Q9 b# r
- PHA
* n, U) i$ l5 _& Y/ Z: \
: R3 E8 ]7 G) m9 G$ H' F- FLAG_INI: ;开关标志初始化
- l. m d2 X; B9 q- D4 t; h - 5 @8 o5 k6 G( G& @1 z
- LDA $600F
% t1 u. s. ~1 t: V# O) B/ p' n - CMP #$010 V9 A ~! X+ \4 H
- BEQ pause_cmp2 ~- J! M. I1 x$ Z/ u1 F' [
- LDA #$00
* P" E2 g9 f/ u' j - STA $6000
! ^ Q) r/ b! v1 `& f* I% k - STA $6001
$ ~, I% R6 E+ v- g0 M0 f - STA $60025 H8 C6 \' c% Y/ m1 h
- STA $6003
0 z# I) w% b1 E* q - STA $6004
7 `7 H1 I, D9 U7 p7 F& g - STA $6005; E( t$ \2 z# o5 y
- LDA #$019 n7 h2 u6 k4 g b
- STA $600F
9 v, W/ g* y+ \3 X1 B - ! [8 n& ~4 B; j& F
- pause_cmp: ;判断暂停状态, |( N9 @3 j* k' [( q$ m
- LDA pause
( K& C* q* ?$ E" `, g3 W0 ~( C - CMP #$01 ;判断暂停状态
& a' \% [! r4 N+ Z, M& S5 c0 F - BEQ button_press k- e- \1 U' }& X1 H# o9 Z
- PLA
& s* R# p7 x; e3 v - TAY
1 E& x# N/ N- B - PLA
1 m# }' H8 w9 ?; c5 S - TAX6 t; s1 m4 j$ |. T
- PLA2 |/ ?. B% O) N& f
- RTS
; f6 ?' N; Z3 s9 O3 V - 7 R Q4 a$ L5 ^: f6 m
- button_press: ;按压操作
3 f. N2 M3 O$ g, @' y - ini_Y:7 K7 y% ~+ R5 E! u$ f* |& G
- LDY #$00* |3 J: a) H" L
- button_cmp:
& T7 ?1 |0 d( y" _: h - LDA button,X' E. `# ?! S& a) K6 m- l
- CMP ora_data,Y1 T; i+ a3 O3 A* S( ^; L; p
- BNE count_Y_cmp
: B4 c& l, c5 l9 P* S* W - flag_cmp:' Z# h* L( k- m& ?# }, |( X
- LDA flag,X0 o0 d. q5 C( B q! c, H
- AND ora_data,Y
" ^. \0 ]6 F& |& G x - BNE flag_and
/ L' R8 h$ c" p - flag_ora:
2 X1 M. J& d- d2 {& }) C$ x3 ] - LDA flag,X
, o' O0 E4 Z) K, q1 p( c3 i8 p - ORA ora_data,Y
4 Q+ y: D: X* z* i- {3 {' p) g' ~ - STA flag,X
( w# Q& D) K& w! d% y - BNE count_Y_cmp4 R5 V3 B& a0 y! r/ ], ~( H
- flag_and:
. q4 D+ C# e$ H, X& m* o6 s - LDA flag,X
- I1 S5 ^0 S' J+ a# o) k - AND and_data,Y
# w$ q8 k+ j) K h - STA flag,X
( r [ |$ M: n/ W - count_Y_cmp:' Y# V( I0 P8 L* \) h$ v: Z* x) S
- INY$ q7 r! ?( t/ v0 y* G& j
- CPY #$08
7 d6 {' o) v M - BCC button_cmp, e3 T i9 D* H: V! Y; K& s
- . E/ K. U a. S8 E
- data_extract: ;数据恢复
5 D6 y2 L* Y$ z5 ?( E" H8 R - PLA
5 W- x9 J$ Q) k! K! z1 T/ B$ h5 m - TAY7 Y# w7 A4 A: O+ k( u, R( a9 ]1 n
- PLA% y# f1 v$ p! X. k0 B8 B$ x
- TAX
7 {' G" M9 x5 K+ Z7 G5 I" ]; k - PLA, ? b( s7 b8 V6 `" @8 J# l2 E
-
: h! x# \+ V9 ~* a! _7 T- { - return:% n0 S- @6 d! P& A6 Y9 p( h; D
- RTS
o# A+ D [: U- k! e -
7 R: K: k* Y8 P7 D( K - ora_data: ;按键相或数据
2 v* p5 a* a4 o/ [ - .BYTE $08,$04,$02,$01,$80,$40,$20,$10* [- F2 f! Y. A% |
- and_data: ;按键相与数据
1 `8 `. G3 p" U- A+ F+ D - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
$ B6 _; L' m/ ]2 t. l - ( v, ]1 q1 @0 \1 t! G! v
-
- X! x- W R* p: M4 {6 n- O: L -
' L& f3 M' {) Z8 ^9 ], Z -
8 G* J6 f/ |5 N- N$ s0 i -
* J4 J9 p4 [. A3 g -
- Z! a) L+ j% ~# U - ) B7 {+ ? {& k1 r5 Q8 W9 E
% w, P/ i$ s+ m9 G b- ; ^0 }6 x3 S- S j, q2 C8 ], Y
- .ORG $C264 ;自定义的MAPPER2切页程序, C4 ^( E8 D7 v4 n$ x
- PHA' e( a. c. M; v8 g2 m! _# m9 k* |
- TXA1 X9 L, Z' `% S' {& E9 v
- PHA& i4 z4 f& j* A
- LDA $0066+ d4 p. j( h F8 L( W# z
- BNE ADDRC280
& L5 a4 i; J5 ?: { - LDA #$07
# }: y( |- m7 L5 @- L4 l$ Z6 b, ^ - LDX #$03! X3 l) d9 _) n
- JSR $CD9B ;自带的切bank方法
5 y5 I$ S- q1 L" n$ l) t - PLA
, `# ^8 a6 i0 C. p& b! l2 Q+ ]. f - TAX
; P( \2 r' u& W5 n% x" s - PLA
+ p! t0 d' ^- l# { - JSR $8000
" u. F) A. I3 q4 Q) R - LDA #$06 G3 |% X9 k. F4 v* }* L: c
- LDX #$03
& H+ l$ L/ ~/ c/ Y, m$ h3 G# f - JSR $CD9B ;切回原该切得bank(可以不用)
) V& c3 b% l4 [# H9 J - RTS2 b1 |/ Q* b0 _
- ADDRC280:
" n+ A. m; Q( G: x9 e - PLA ?+ U. C2 ?5 S# k* l0 G
- TAX; i) c8 L% Y) D: ~# Z* D
- PLA* q* c) ?9 e7 w, [" z( T* C. Q
- RTS
5 S1 T/ P) ]( f$ d -
5 b# b3 Q& G3 I4 F -
' r1 E) s: y& o5 c - ;[FC][最终任务PPU][END]
5 ^' x* X6 m$ g, N8 |( H4 o - .ORG $C056 ;跳转到PPU重写程序
) V5 o2 G8 U! |: T - JSR $7000
5 D T; `# m; G" R! i$ G7 K) Y4 k
" L/ o3 r9 W7 b- Z( X, O- .ORG $CEBF
: `, E3 i! n/ H) B$ } - JSR STAGE_DATA_WRITE ;跳转到关卡数据写入
( N0 G4 Q( c& W* W2 i0 s" x; E - ) O; O h5 x2 u" X! O9 t& P
- .ORG $E460# w+ u, Z2 n$ l
- JSR BULLET_DATA_WRITE ;跳转到副武器数据写入
5 J y# m* m0 f1 _- ~6 d/ G -
* h1 v* H2 l1 a9 F' i - .ORG $71F0
6 d. k2 D: a2 G, O - STAGE_DATA_WRITE:
+ j6 Y7 |, H% i: u J - LDA $60105 ^% ?8 p T& h" S0 r* z
- STA $1E ;关卡写入
1 V" C9 _# |5 h4 T6 h( E! E - LDA #$00
- Y$ }$ D& V: Z4 }0 J# o - RTS! T; R1 I2 J- A' o' P. x" w
- .ORG $71C03 w8 t$ l2 d. e$ p5 A5 P' k
- BULLET_DATA_WRITE: ;副武器数据写入
8 ^. C7 s3 M9 Q% K2 V% D - CPX #$0E# `8 M8 X1 q8 I' y4 i* p
- BCS P2_BUL" |9 w/ r3 o' r& k& u+ K
- P1_BUL:& Y4 E$ w0 K- l, l
- LDA $6004* D# ^* y/ _* A" N
- JSR $D7D0 ;P1副武器数据写入" i) z7 p$ C6 [3 D
- RTS
# {$ Z: g* y# i' V) J - P2_BUL:* H: f6 w7 [# p: g# h
- LDA $6005: b& S9 P! z9 U7 i& d* m
- JSR $D7D0 ;P2副武器数据写入( x5 P4 K8 h: _/ ?; y3 M7 I
- RTS
0 d! ^# l2 Y; D - 3 m$ S: _) d, a/ G
- 6 O3 G$ L3 c. g0 `7 ]
- .ORG $7000
6 ]( Q# ~& Y+ f5 p* _ - 2 z" V8 V* g L/ P
- STY $4014 ;补上覆盖的精灵写入指令
4 @0 x* J) f0 E: l$ F* P8 X+ ] - PHA( t4 I# l8 \) I' l; S* o
- TXA
( E h( Q% K1 x5 v - PHA
) ^/ q$ q: w) A1 T6 }2 J - TYA4 u. R* T: N0 O- b# _
- PHA
( D0 z! Z1 a$ w# I& y; }, H' } - LDA $0C) c0 `, K! G ~6 g# \; k
- CMP #$01 ;比较是否为标题画面3 n& j2 w$ R/ c
- BEQ PPU_STAGE3 q$ J6 G! y2 R3 ~7 |; Y
- PLA5 X: E3 @+ y$ a' A3 y" ?
- TAY
: y2 f7 s. K4 Y+ X7 J - PLA
: F. U% _0 n# G: k: C - TAX
4 F0 r+ u0 N7 ?% O9 o - PLA6 n! c* Y0 d* E4 R7 u9 Q1 y5 O
- RTS
* F8 N F/ d# x4 a# [ - PPU_STAGE: ;STAGE显示程序+ w8 B v3 U7 ^. Y$ V8 l
- LDA PPU_ADDR_DATA
. I# H! n3 Z$ C2 X$ Q% | - STA $2006
' f9 ]2 C' ?( b) F5 v9 c - LDA PPU_ADDR_DATA+1! c' d: D" b5 g) \( u
- STA $2006 ;坐标设置" ?/ q: [1 | r) H2 i
- LDX #$004 T: G3 x% z9 A" \ p# y& L$ j0 Z
- PPU_STAGE_WROTE: ;写入STAGE字模
. l! W1 e( ?! w9 _0 S) q+ x& a - LDA STAGE_DATA,X
' A8 _! d5 d! K2 m7 _" y2 f0 z+ Y0 z - STA $2007
( x6 A$ a$ C/ f; y6 o5 q - INX: s% E" r7 s1 |; H4 \: u
- CPX #$06
}2 J- C' }# u, r4 A+ ^ - BCC PPU_STAGE_WROTE
& H! B% w6 b8 d; ^8 W - LDA $6010
2 V, R) c* p0 r! f! O3 }) n0 w - CMP #$FF ;关卡数据初始化条件判断& t8 Z. ~- _, r; S/ f8 v( |9 v1 F
- BNE KEY_B
3 L7 l; e8 k z6 q) s - LDA #$00
6 s% o" m' H) d( h) N - STA $6010 ;关卡数据初始化" m1 k% |# I" Q3 g
- KEY_B: ;关卡减少 j( c' l. \& A6 x8 Q" `
- LDA $04
' `" p* C2 c7 l - AND #$42 ;按键B或左减关
`: v5 y% x% k' F6 T8 h - BEQ KEY_A! s7 y5 N6 @3 b6 D
- LDA $60109 ~ {; r" c- I" w v) G
- CMP #$00 ;关卡比较( [9 k' D0 ~9 N/ ?& m* R& w) F
- BEQ KEY_A, s) x4 k- m+ ^2 O1 `/ |
- DEC $6010 ;减关
: v) C; Z |0 N: j0 [4 F - KEY_A: ;关卡增加 @# s! M& x1 ]; r1 m
- LDA $04
: K. f |% [- T+ L% f - AND #$81 ;按键A或右加关5 ]$ o. Q4 A7 Y B$ J' G
- BEQ PPU_NUM_WRITE
7 ~7 I; O+ G" j/ Q. j, o3 J - LDA $6010, Y+ B9 ]/ q v& i( E# f
- CMP #$04 ;关卡比较
9 h. w9 m1 c" n - BEQ PPU_NUM_WRITE
% N& C) y( B8 d# y0 O+ m - INC $6010 ;加关
, q( [/ x9 {7 w - PPU_NUM_WRITE:4 B) n. v/ L/ c. g' ~5 p
- LDA $6010
$ `, C5 Y' n( Q& N" W7 t- X - TAX
! d/ V+ C7 }2 _. s - LDA STAGE_NUM,X ;写入数字
% N4 o5 ^# L" h+ R) g/ A4 a - STA $2007
! g9 X: q9 s/ `7 M1 `4 [! ] - PPU_RTS:. a7 P4 W, a7 \" Y$ G
- PLA
0 H( d+ m9 f, T& F* W/ a$ `$ B ]9 ~ - TAY+ X, b- f- ]. S& U3 @5 y* d7 X0 D
- PLA
( g7 D& B& b0 B1 F3 [ - TAX- x0 G$ U; a3 h* d- o: A. q
- PLA4 M" e& F9 c' L2 ]4 h& P7 [
- RTS
4 f' R# M' e& s; E8 T: H4 {$ C3 h+ | -
0 |' k& g5 |* _- z7 y1 a -
+ l2 {* {, z4 J0 x1 a0 J' V - STAGE_DATA: ;关卡文字S,T,A,G,E,字模数据+ a' X6 d) l) O5 y( E
- .BYTE $EC,$ED,$DA,$E0,$DE,00- z, L+ m* V- l6 h
- STAGE_NUM: ;关卡数字1,2,3,4,5字模数据+ ~+ r5 a% m7 Y. F+ j9 `5 |$ B
- .BYTE $D1,$D2,$D3,$D4,$D5
* v& h5 f' e/ [$ C2 f6 s -
: {! m3 c. f. L4 ? - PPU_ADDR_DATA:1 l8 z9 S% u; y; m: M. N3 ]
- .BYTE $23,$0C
1 Q" s0 ]% W x& H6 Z, E3 R% X - - F5 P! H' z0 u! ?1 d2 Y3 z( K
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
1
查看全部评分
-
|