|
本帖最后由 yandagui 于 2017-4-21 18:58 编辑
) Y" S ?7 G, v% |' b/ Y C1 e4 P3 r6 r7 N, g( {, @( x5 i
[FC][最终任务][END选关]
; ^3 A0 J2 Q/ @( {9 }1 I+ A Q9 g( }. ?# U: R! x
时间:2017.3.291 E a7 [$ N: G- G
作者:FlameCyclone1 S3 t- ^8 J& f( ^
内容:; B; b. z! x+ r7 S' {$ g) B
1.关卡选择: 标题时,左或B减,右或A加(1-5关);
, h+ p3 U' Q4 O7 n( {" c, g9 c 2.无敌锁定: 暂停后,按上键切换;1 A3 }- S+ ^2 x) p! g. V
3.生命加满: 暂停后,按下键切换;* i3 V. ?* R2 |0 b! Y2 Z
4.速度调节: 暂停后,按左键减,右键加(1,2,3三级);. }6 X. V2 @7 @ R7 _4 Z$ D% w
5.子弹切换: 非暂停,选择键切换(普通,W,L,B);
& d: A1 i- A+ d* |- k3 b 6.B弹数量: 暂停后,按A键切换(1个或2个);
( u/ M% ~9 K6 Z' G; M+ I 7.副武器类型: 暂停后,选择键切换(普通,W,L,B),非普通时子弹方向是向右发射的;
, v* P( I, e3 [' K
/ f6 H: T4 t! w + j) f. {0 X! M. Z P* e

& m% Q1 F+ |6 E9 f' y! Z Q
- k$ ^( C- Z5 }/ D
9 d) F4 f8 C; A. C' }# b, A8 t% p; r+ {0 J1 y
# F# P/ o% X6 v, r. xFlameCyclone.ys168.com: c8 Z( W. w! w
www.nesbbs.com- ;[FC][最终任务KEY][END]
% r! v- J. G0 O1 W. b' P - button = $04 ;单次按键
8 P$ G( d! r1 e5 `! w+ D% _ - flag = $6000 ;功能开关标志' b- p! W' [/ R
- pause = $000E ;暂停地址
6 H2 {' e$ `0 ~6 {% a - + T5 j( r1 S. j$ I1 j2 {- o
- .ORG $8000
9 ^1 z0 I0 c( \2 `$ O$ O0 N - LDY #$08 ;自带的按键程序
; ]/ Q( m# B. Z- j( L - ADDR8002:4 q7 {' a' r; T5 r( ^: @6 h2 u
- LDA $4016,X0 [4 k- I: c0 U5 C% i! k8 |
- LSR+ I& p7 j8 V% r0 O4 @# [; X; y) p) G
- ROL $0021
* a1 G% D* t+ y* [8 C- i - LSR
+ p% `4 F5 M! M/ @# U4 \; z - ROL $0029& v9 m4 E1 r8 p3 {
- DEY
8 K+ \& B8 @; q+ z, C - BNE $8002
2 N& U. \0 r) L1 m% ~ - LDA $0021. A/ r; R: _ Z" y5 \! O
- ORA $0029* x4 P4 ^ r1 E$ O2 Y! v
- STA $0021
0 K; a+ D2 P" L - LDA $0020+ \) N4 {4 g) `4 Z4 k" I# f
- AND $0021
! |6 e' U( U7 u0 u - STA $00206 I- [& I8 P% P+ H U
- LDA $06,X
( H g( T" ~. l- d - EOR $0020
* k5 S/ `- d* c - AND $0020
9 O: t# X6 u' C2 X8 i* _ - STA $04,X
" [. Q4 c, G7 u; ~ y- W% E - LDA $0020, u7 t0 \& |6 |
- STA $06,X
: o! x. w1 D: n; S' T - JSR KEY_OPERATE9 O- ?) Q9 {( N% Y6 e: F e
- JSR Function ;功能调用
& O& k) Y4 o: N9 @7 N - JSR Weapon ;武器切换调用6 U( T% d6 t! x1 N
- JSR Power ;威力调用! V' t# |/ ?- y- D! g+ p$ |4 m0 X
- JSR BULLET_NUM ;子弹数目
3 A) d) b$ C x& v H6 p( O; A3 U - JSR BULLET ;副武器类型
0 O( R' d) ~' G* D- D - RTS0 b6 G/ O' D5 O+ Y
-
4 f4 P" ]$ R# j. Y. p4 v( \ - ' X6 M { ]+ n: v2 ?+ @! r
& J s& e4 A) @* \ z) Z5 {9 `- .ORG $8050
- B L* u/ D& s5 m. h# f, E4 `* Y - Function: ;功能
9 M/ F. d8 m% o* g" s- ~ - WUDI: ;无敌/ h3 E9 a6 `: b( ^7 g& F8 O
- LDA $6000,X
5 ~' u; y1 n* k3 ] - AND #$08 ;开关判断4 u* c6 P: v" s) ~% _) D
- BEQ LIFE
" S, V! R; j/ K# S( q; ~ - LDA #$05& {1 D9 d' b6 G+ w, p
- STA $05DC,X ;无敌锁定+ t' Z; o) h. R3 d9 C3 M8 V
- LIFE: ;生命
4 f% E) K6 a/ g9 P7 C' _ - LDA $6000,X
8 g" N& l @- Q% R - AND #$04 ;开关判断
# n/ R0 e7 g* [" n( ~( G - BEQ FUNRTS
" q7 W4 F8 m" L( Z - LDA #$05
1 S8 @9 z! r h5 Z5 d# x - STA $1C,X ;生命赋值
( s p* k; v4 f& ^& W1 j1 T N - FUNRTS:* d' T. Y' D' Z
- RTS
7 w( z( Z4 b% s* H -
% |9 M- a) F4 `4 g* k* d: W% `3 z - Weapon: ;武器切换+ P9 q1 l- {' G% {3 Y
- LDA pause ;暂停状态判断; d/ F2 j( ^0 y `! S
- BNE WEARTS% k1 D+ s; b n6 F% Z* C; E
- LDA $04,X
: Q% V8 c( _, c. g8 h/ R - CMP #$20 ;选择键判断0 T. o2 U! l# J' t
- BNE WEARTS: T* W1 b j2 v& ?8 u) X
- LDA $12,X" e4 ~: ]: S; i# T- ^6 q3 f; r2 d+ D
- CMP #$03 ;武器值判断9 L7 ^# `& G# G# z# m4 t1 F ]
- BCC WEAINC
6 y9 O. u* U* E& u, P& @8 b) f - LDA #$FF
4 J9 l; m! e5 L. W - STA $12,X ;武器重置- ~( _$ k4 `) q: d2 ^: X
- WEAINC:; N6 f# t- S2 P$ u( k) Y
- INC $12,X ;武器增加
6 N, o; G: k N) o& v - - w/ n' {- W$ |$ V
- WEARTS:+ V& t0 n' ~9 O
- RTS
+ y* O# q6 U5 \' o( o% W. r - 2 d. S3 g) }" f
- Power: ;威力
& X. m- b$ J2 I9 S+ p s - LDA pause ;暂停状态判断) ?4 J# W% G5 Z: V5 j- s; E+ K" a; Z
- BEQ SPERTS
8 _+ M, d8 u4 [0 k# y0 C0 Y$ ? - BUT_LEFT:
% C- n% t: m1 J5 P - LDA $04,X1 _& b" t" v5 `% l$ ~
- CMP #$02 ;左按键判断' f& \. E( U; f! }' T& r, T
- BNE BUT_RIGHT6 ~# ~. {* B/ Y1 O6 Q# ~3 ^1 i
- LDA $88,X
5 `6 y; \: w1 B+ K: Q. K - CMP #$00 ;威力判断0 }! Q; g+ d9 V8 _5 N
- BEQ SPERTS
" H: J- h; b1 Y2 j# Z8 H6 G+ U$ G - SPEDEC
6 g( f/ o0 i" v) s, I4 Y - LDA $88,X ;读取武器值
* c$ Q4 S5 m0 Q7 `! A5 R( v - SEC
$ [& H' j# B" s" y6 D# y7 S9 j5 t - SBC #$08
7 v8 d! V- N# a& ` - STA $88,X ;威力减小* _ U3 Y% J t8 h! f7 v
- BUT_RIGHT:$ z% c7 ~5 p( y/ d0 f/ J$ ^! k( j
- LDA $04,X1 M$ e* Q% i+ _: j1 Q
- CMP #$01 ;右按键判断
$ P8 A8 e9 _* ^1 t0 Y - BNE SPERTS7 s! x6 {: B \# |( A
- LDA $88,X
7 j5 Q, ]5 k4 A, ? - CMP #$10 ;威力判断+ S. C3 @% P: i' V( K$ T
- BEQ SPERTS
$ v' Y* V# w: i g- o J6 q - SPEINC:9 b0 J* m5 A1 @6 O3 ~+ T; W
- LDA $88,X ;读取武器值
) _& A7 A+ q; A( ` - CLC. [: v2 c. C+ l6 Z
- ADC #$08% f, ?' ?$ ^5 b) |+ Z
- STA $88,X ;威力增大. T/ U$ d8 y( b0 M" k2 Z2 ]5 w N
-
! X8 g4 Y D: ~; f% F2 {$ h - SPERTS:1 q) I" I7 D" `* _* u5 i" W
- RTS/ u( ^2 J+ k1 C1 n6 ]4 _, g+ g8 L G3 ]
- 0 P" m6 {$ L I' ^1 @; g
- BULLET_NUM: ;子弹数目1 G3 d& w+ _5 p7 R
- LDA pause ;暂停状态判断( @. U" H0 A) O
- BEQ BULRTS( J1 e) [. I: j3 K0 T/ V
- CPX #$00 ;主机玩家判断
( I$ n' F+ _4 L2 D - BNE BULRTS' p" R( `$ U" }8 f3 K: d; N0 ^ x8 g
- LDA $04,X ;主机玩家判断
1 h2 f+ O! Z, n( {* J- ^: F5 s - AND #$80 ;按键A比较
- X+ W8 x1 ~; ]; @! B: I7 j - BEQ BULRTS
2 n0 ~% }9 m# ^. f2 w9 O3 ~/ X - LDA $87 ;状态判断
5 _7 ^$ h u: c4 `' R - BEQ BUL_2
1 ?# d9 _: _( T7 X& H* r - BUL_1:
8 N* ^- F: N3 \ t - LDA #$00
1 i: h' ?3 ^2 O, V( B; @7 i8 L A - STA $87 ;1发子弹( A/ k/ e+ s! @/ O6 {' Z4 S
- BEQ BULRTS
2 G, Q: D- e3 [( E. \ - BUL_2:
% d+ v1 q) K; W+ ]" y# y - LDA #$01
6 I$ a- U! S' S - STA $87 ;2发子弹) N ]3 ~$ M7 ~# o/ Z; [0 |: N
- * v8 c) o9 m" b+ O1 s! @8 ^
- BULRTS:
( g* K1 N2 R; v7 ^4 D' j - RTS9 I7 C1 B' a5 y( v, s4 ~
-
8 b S. k w- K& l, Z& c& W& ]& W
8 M, a( z& a# j- BULLET:
; [7 V5 h& P* g4 r - LDA pause ;判断暂停状态/ `: G9 Q9 s% j
- BEQ BULLETRTS; J$ U5 ]7 b" p7 G5 o* p" H5 ^/ k
- LDA $04,X
" m+ Z, I4 U) p& P: S4 B( E - CMP #$40 ;按键B比较
" G( E5 D1 I& J& _( F - BNE BULLETRTS* O3 f8 S0 e, T. X. \ J
- LDA $6002,X ;读取副武器( j& P% Z# E3 {8 u6 }' j1 Y
- CMP #$03
, q/ Z; P* X7 f- n! s - BCC BULLETADD
, J; h* `' {# k% l" ?- ~! R - LDA #$FF
/ o' u" Y# M" L" R9 C - STA $6002,X! }5 a3 D, T5 u* n3 C
- BULLETADD:- v- e2 P9 _ T' p2 Y, e% n
- INC $6002,X' {8 \4 ^! W) |3 o- t6 f
- 5 M6 p1 y* `( O2 t( _2 H
- BULLETRTS:4 T. ?5 V' Z, s3 F0 [* p1 }
- LDA $6002,X5 G9 M8 d( `7 B1 c0 f& ^( r
- TAY" \/ q$ q4 ^4 V- p$ W; q% M
- LDA BULLET_DATA,Y; ?7 @; D0 o& m' p9 v7 E
- STA $6004,X ;写入副武器数据0 P) f. m7 a+ U
- RTS- \% R' S6 j5 V. ^8 |
-
, Q& i( _; t; y0 A. s1 f - % [- j0 j: J4 [% P
- BULLET_DATA:
% T5 S& M. x6 y& V - .BYTE $06,$02,$03,$046 \& Q0 {: F6 ^" i; w
- ) Q1 w! A- J3 K: I& F/ h
- - p# P# A/ ~1 ~4 C
-
, K) G- a" R# a7 }/ w+ ] - KEY_OPERATE: ;按键开关操作3 e, E2 Q1 r i; P; q
- data_protect: ;数据保护
- H8 G q2 H2 x) B6 G% t - PHA: b0 p/ h" F5 P3 D# }$ q. V
- TXA" [3 I/ v" A+ r5 H
- PHA- Y; O7 X: { N" G9 \6 v! u7 J
- TYA
4 V! h6 M5 J0 n# f - PHA3 r: X: B( P- C& y
- * n9 l- Q0 n! Q- Z6 h. v
- FLAG_INI: ;开关标志初始化7 r; ?9 z& w8 e9 ?5 p- o$ T
$ C& E: ~# z& f# h5 ]5 E4 b4 T) l8 V- LDA $600F
% m; T& H2 ]; o. r( q3 R: W - CMP #$01
" F& G/ z5 i0 f. X# k, }: U! \ - BEQ pause_cmp# ?' x; S7 F, I+ ], T
- LDA #$00
# S" S2 ~; b) t1 Z h7 o - STA $6000
% Y1 b* E h. R2 d- j7 | - STA $60013 {/ S! c# R1 v. K$ o
- STA $60020 P3 X$ l6 J! Y: ?
- STA $6003
$ r6 n1 t5 U4 D$ i+ M5 v - STA $6004
: g" F. g) G: X8 ~: D0 p9 B9 ^ - STA $6005
9 w3 b% C4 }, {' T - LDA #$01
7 s2 E8 k# ?- Y Z2 h$ Z; l$ c - STA $600F
2 Y, l4 Z$ G) g3 k -
. y( N- c! z. t3 E - pause_cmp: ;判断暂停状态9 M% V) q% N7 e* z
- LDA pause: K' p' _; P6 e0 |6 i: l' A/ H
- CMP #$01 ;判断暂停状态
! P3 W) f. Q3 ]0 z7 h - BEQ button_press7 W/ Q* f; \8 L8 @
- PLA
4 i! Z8 e1 _5 p - TAY% ]( _. ~3 ~$ n& w3 ]7 A
- PLA
% V( n% M0 P5 i, Z; a' ?3 {, k6 @ - TAX! Z8 B+ r* K+ V
- PLA
$ L- [! `$ r! J! C2 ^$ _8 a - RTS
9 V( R1 |* R* C. C( Q1 ^
$ ~8 g( B* a$ b6 d* K- button_press: ;按压操作
! {! G' b$ w' C5 O" w- i h1 L - ini_Y:
) O% S7 n- i' B! f. z2 s - LDY #$00
+ \3 t4 c& I) ?& N- p9 J - button_cmp:1 h' Y" A5 b3 R J$ U2 V
- LDA button,X* G3 D6 c0 I) y. N. l
- CMP ora_data,Y
2 e! f- {, A: z8 v2 V - BNE count_Y_cmp
, g7 Q% M6 A. n5 y' i$ _6 |8 p8 g1 E - flag_cmp:
e. v+ L, _0 t1 C: y5 n c - LDA flag,X) G+ L, X' [. }. |
- AND ora_data,Y
' u r3 y& b% h& X) E& f - BNE flag_and$ \7 k, _5 L3 z5 |
- flag_ora:
2 W0 Y2 D2 Q( o0 @0 L - LDA flag,X( ^# v; @7 i0 M: E! ^2 s
- ORA ora_data,Y8 a* }- n2 R' z8 v( S; U
- STA flag,X
* Q% G( _7 ~* e7 k) ]1 o- m: C - BNE count_Y_cmp
* l- C3 S: C5 `6 w! F% _ - flag_and:5 w9 _6 O* C- o, T5 f1 L% |) n6 m. v
- LDA flag,X
$ I! {) t5 n7 Q" t - AND and_data,Y
1 `- F8 U' I9 f& U) ]4 s8 E - STA flag,X
8 S4 W" H% d' }" f- a! o - count_Y_cmp:
& B3 v+ }0 o# {: p1 U5 [ - INY. b( ^! j, P4 r5 a1 b; D) ?2 [
- CPY #$08% [/ a' K) k k! i* o, [6 f, O
- BCC button_cmp
# s) N. @4 c0 [, Y -
E4 M j! n) w) {& }" D+ ]- ? - data_extract: ;数据恢复) u" i+ r; q& Y/ D
- PLA
' k& M& y, ?5 i9 I+ G - TAY. P( r' `" g- n
- PLA
# Z, T( l8 K3 y5 u - TAX6 `# V8 t, N l
- PLA
- K( t7 m& Z. S& v; u - ; F+ m+ x* v4 K ^8 l5 |
- return:
2 J& M( x Y; d! d' R" b - RTS
9 ]1 G0 f8 t D -
~* y- U5 P4 u2 F" N; F - ora_data: ;按键相或数据$ U" v8 s+ f3 V( `
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
* ]8 m2 z( b/ D3 r - and_data: ;按键相与数据" \, J9 Z i! ^& w3 ]" V
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
0 Y1 n) M! F+ E8 T1 E- Q4 y% ? - - L/ }( T9 @7 l/ U/ u
- # M" B9 C$ k }3 U
- 2 q0 v/ H4 [. [0 }" p3 j
-
& T1 y+ S9 C& j4 t4 a -
|: }$ k' E" H5 i1 Y2 B* k! s# E' S -
! I. x% i7 O3 r& m - 4 Q3 j( s5 ~$ R1 p2 a3 j
- ; d6 g, K. n7 n. y) d
- w' R* G( g' T& m# I4 H: r2 h) s
- .ORG $C264 ;自定义的MAPPER2切页程序! `' S. P3 i4 T0 x
- PHA) \& T: d: ~/ _" r
- TXA" o& e- w) W& Q
- PHA, m( v" B$ E9 B2 h+ z
- LDA $0066
' u2 `6 ~! n! P4 Q - BNE ADDRC280
: H' I m3 y8 a [% D! A - LDA #$074 E5 f2 H1 I& c! q/ m( b H p" o
- LDX #$036 G g; M- O$ T+ y& V
- JSR $CD9B ;自带的切bank方法
' q( s! o, t, K8 h5 J - PLA
$ `9 D# s$ _& u - TAX* F% l/ M9 D1 c0 L0 g; i7 _
- PLA; ?8 N- z' W3 f
- JSR $8000. J4 F- O% Q9 x
- LDA #$06: y8 z9 `; Q. P( e; q
- LDX #$03( U; D* S# G* o& `1 X2 ~
- JSR $CD9B ;切回原该切得bank(可以不用)3 C+ ~, }1 F) F* Q7 @5 `
- RTS! r$ `4 g/ v1 s' h8 U
- ADDRC280:; ?7 `0 Q( N- h J; N
- PLA
( j: S7 z/ n4 k# |+ U. q' a - TAX) q4 }" C, i) c9 [
- PLA( E& _1 [- ?( J% e
- RTS
9 j$ _8 p; _. N6 x0 V0 v - - ^" A' g. g1 z/ V9 `$ @; Y9 F/ F: C
- 4 n$ y5 U" R3 `( J
- ;[FC][最终任务PPU][END]
3 ], m0 ?& q3 m1 K# W/ d - .ORG $C056 ;跳转到PPU重写程序
8 P: ~# A3 l/ ?5 f1 }: v3 ^ - JSR $7000
" s: ^0 r0 n, [3 {/ u2 t4 B - $ D+ q* z9 V# A! E6 }, l
- .ORG $CEBF3 `) a& y8 s2 A& V
- JSR STAGE_DATA_WRITE ;跳转到关卡数据写入
+ l8 I! o* w0 Z, W7 M& } ` -
, G2 \6 ~2 c) ]5 e' R# s - .ORG $E460/ v# `, y6 L4 H+ u% |' t/ v7 R
- JSR BULLET_DATA_WRITE ;跳转到副武器数据写入
0 L8 K; b/ d7 K. K -
G# G$ A+ E$ ^: x - .ORG $71F0
- X7 L7 p9 a/ ?4 c0 H - STAGE_DATA_WRITE:, O+ {7 ]0 W5 |8 E% @9 x' o L
- LDA $6010. |9 n/ h) D/ C3 y( x. X7 {, }) X
- STA $1E ;关卡写入( q& S; W W1 v% v, x- k
- LDA #$00) t# ~& E, R% s! u6 P
- RTS+ c9 M+ w* q1 Q* f" ?2 f
- .ORG $71C0/ e6 {- e% _$ A9 C; N" D m( e( @
- BULLET_DATA_WRITE: ;副武器数据写入
" o' w# Z) {2 p0 V7 u( q# Y& r - CPX #$0E+ w0 A+ x* x8 X2 }7 C2 s
- BCS P2_BUL
7 L. [4 u# g: S) g G0 d5 f+ y - P1_BUL: X& \- t2 u7 C1 `
- LDA $6004; H, w% Z( H) f( \. P$ Y U
- JSR $D7D0 ;P1副武器数据写入
* L6 {& G) G9 d& F: I& w - RTS# r! s( b/ P2 d' I$ _& e* d) g. ~
- P2_BUL:
' J1 C* w4 ^) L% o B Y9 H: ] - LDA $60054 ^/ B; G9 Q' k( G+ ?
- JSR $D7D0 ;P2副武器数据写入6 ~% n ~/ |9 N A
- RTS. V: A9 a" o8 C1 M
- 9 P* r6 b) i9 J( h
2 C& Q$ i" s5 V$ S- .ORG $7000
' ]' M. i$ ]/ x9 M# s -
/ U; F; \. D# z: j7 Z) v - STY $4014 ;补上覆盖的精灵写入指令
% ^2 v6 b/ `& E" ~0 R3 _3 @ - PHA+ l9 I" U8 @: a+ H* B
- TXA2 U' y9 N" }+ D2 Q! o% {* p
- PHA. S" }" O# d; D
- TYA7 D- P, G% M( _7 q, M' Z; D
- PHA
) V! d& u c% B6 m6 M. \ - LDA $0C
8 y: f3 { L) ^- d0 y- l - CMP #$01 ;比较是否为标题画面
1 k( _+ \& D6 a/ ?8 {; M. ~8 M - BEQ PPU_STAGE" ~" C0 l y1 Y/ T
- PLA' F7 K6 e6 i. J# X0 ^3 D' `( H
- TAY
8 I- H+ p9 U6 k5 z& x1 [ - PLA
) W! X4 F {+ f t/ S# b9 e - TAX K: n% m3 X8 s2 {. ~, M7 Z
- PLA
# i. b$ ]) s, T. `1 u+ x - RTS0 v+ s/ h! H+ @# |/ k
- PPU_STAGE: ;STAGE显示程序
& U( R$ N' ~: `2 s; h( M) A - LDA PPU_ADDR_DATA
# X+ `* F! w8 L6 L5 J - STA $2006+ X& `9 R, S0 g) c7 o' g
- LDA PPU_ADDR_DATA+1
1 p5 _2 _0 Q7 \% M. B) B - STA $2006 ;坐标设置) l0 a' y" J1 B) j
- LDX #$003 f3 R4 z* C% j m9 N
- PPU_STAGE_WROTE: ;写入STAGE字模
. g) C4 [! j2 f3 y, ^ - LDA STAGE_DATA,X
% q9 Z: x, i. r! f% D - STA $20077 y0 C/ u; [! M9 ?( }: C5 x
- INX6 ~) U$ e0 N0 o) Q3 t
- CPX #$06) V4 p9 g" J3 T$ i" K% z
- BCC PPU_STAGE_WROTE
* l$ _% e4 B# x% h, t9 x' m - LDA $60109 D! L: w4 n7 f8 g# F; O+ d% ~
- CMP #$FF ;关卡数据初始化条件判断: ^" w7 Y' n8 X, I
- BNE KEY_B
P# [) {. ]; n8 V% L) s - LDA #$00: n, ]: k9 s D) r0 m
- STA $6010 ;关卡数据初始化( u3 L3 w5 h; m, ^* Y# q- K
- KEY_B: ;关卡减少. m+ c: W; U2 b3 Z* M" V3 f% u
- LDA $04
. e3 C* ~* S; L& o/ g- K - AND #$42 ;按键B或左减关
: n- X+ }: c% U" ` - BEQ KEY_A$ d! e% W- w8 U. o2 C( I u
- LDA $6010! U" {/ Z! ^& q
- CMP #$00 ;关卡比较
) D9 z5 _1 \+ p8 L S- b - BEQ KEY_A
- r% \* D, k3 \# r" T9 A - DEC $6010 ;减关4 {8 W5 v& k' ]6 ?" {% N
- KEY_A: ;关卡增加
4 b' [" v+ B* B! k8 k( V5 d5 ` - LDA $04) M+ d% V. ]) a) y' c3 k: n/ W
- AND #$81 ;按键A或右加关
S' c9 L- ]6 e* L( L - BEQ PPU_NUM_WRITE
2 ?2 B' s' V# x K4 \$ c - LDA $6010# i4 X/ V# @! n5 X; E; B1 m0 L
- CMP #$04 ;关卡比较2 N) X# a5 x" \2 u* y
- BEQ PPU_NUM_WRITE5 j: N3 j. v+ l$ i$ O
- INC $6010 ;加关: J7 ]0 h- I6 z
- PPU_NUM_WRITE:/ T2 Y U+ B* o' n
- LDA $6010
" Z; j; M/ L0 c9 K# L' O - TAX- T O4 X- W- U
- LDA STAGE_NUM,X ;写入数字
. Q6 _+ H# A7 m6 m; t - STA $2007
0 x" {3 }, ^( H; k* \ - PPU_RTS:/ F7 M$ D9 T, M5 l5 `" X0 D
- PLA- `$ S( Q! N! {( a
- TAY" H; g" K W# |& j P
- PLA" @. Z6 x/ x: D. i
- TAX
C6 x6 C+ w+ E" S - PLA
/ E4 ]; s' v/ D1 R - RTS) B- N/ C% K5 x; N9 b
- # G* \) ?4 c# _
- 3 f. i: Q, ^3 o; ?. `1 E
- STAGE_DATA: ;关卡文字S,T,A,G,E,字模数据" @5 S$ c! ^3 G% N7 M1 z
- .BYTE $EC,$ED,$DA,$E0,$DE,000 }! z, Z2 K: [8 f* o
- STAGE_NUM: ;关卡数字1,2,3,4,5字模数据
: O$ A. V/ O: d) p - .BYTE $D1,$D2,$D3,$D4,$D56 [' A. Z- H3 i3 Q
- ' V; _8 D2 e8 I' s" S5 w. k/ X6 o
- PPU_ADDR_DATA:
2 [( u- r# G; |' i - .BYTE $23,$0C5 Y, J! I5 h$ f3 ?" o
-
' x, y% P) [8 F
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|