|
本帖最后由 yandagui 于 2017-4-21 18:58 编辑 1 ?1 B( c( `4 z! \: Z8 |& J. r7 V- R9 W
1 \3 c, T8 k" {% W {1 W [FC][最终任务][END选关]4 t# E- _9 u2 w! Q8 ^5 e
F( @1 C; a# Y8 w" C/ x2 Z时间:2017.3.294 e) K P- n/ x/ G$ ]0 X$ s
作者:FlameCyclone3 m+ F) c$ ^# c8 U, Q1 b
内容:: H c# A T( j7 Z' U1 g- a; C
1.关卡选择: 标题时,左或B减,右或A加(1-5关);) E8 w+ S% l" B' t
2.无敌锁定: 暂停后,按上键切换;
0 F% ^: ^0 g. v7 H 3.生命加满: 暂停后,按下键切换;
' }, C2 Z& Q2 T( m' Q% @/ D5 r 4.速度调节: 暂停后,按左键减,右键加(1,2,3三级);9 O3 U6 P# n' h( C; Q
5.子弹切换: 非暂停,选择键切换(普通,W,L,B);
0 N( X* s9 P/ V 6.B弹数量: 暂停后,按A键切换(1个或2个);
" O4 L1 R8 j. S1 S( b/ X 7.副武器类型: 暂停后,选择键切换(普通,W,L,B),非普通时子弹方向是向右发射的;0 s- K0 w: M! V8 C: N: Y
/ m4 I8 f1 r. e/ D; p
% y' K9 q/ F$ W, z0 S
$ L. l! R9 T3 f0 E( W

; C& |$ Y6 h X" y
2 f" W; o& O3 `7 d8 o1 d ?0 ~& c( E6 V' p" K. t
& V8 D" ^" f" y% fFlameCyclone.ys168.com
2 o2 c7 e* r. K, a! G5 rwww.nesbbs.com- ;[FC][最终任务KEY][END]* a% U9 `; Q' `, F9 t# Q7 f2 o6 ~- Z
- button = $04 ;单次按键
; f w) D! I8 S5 U* b) B1 ~. | - flag = $6000 ;功能开关标志
4 a6 A, J- l1 Y# K; M- Z - pause = $000E ;暂停地址
P7 E2 P8 {# L% ~* W7 D - ( j$ ` b6 S: e" |: d; R
- .ORG $80008 c+ s/ d! g9 b) I s2 m, _4 [$ N
- LDY #$08 ;自带的按键程序
V; X/ S* H# N! r" y - ADDR8002:4 [& [/ q! ^1 O1 X
- LDA $4016,X
7 R$ K1 i9 i: T2 q' P& H$ g( H - LSR/ I: d4 V1 E# ?
- ROL $0021& ~+ z8 a4 C+ F& K+ ^% A c/ l
- LSR
+ U; l% j+ b% s9 Z - ROL $0029) e( T9 d0 H h1 e5 G. x [( {9 y
- DEY3 `: u% x. g: u
- BNE $8002
5 [' g0 V- z7 t; z* b - LDA $0021# Q C9 g' L# [- w' s7 N7 |
- ORA $0029
- X2 S) m! |4 R% W - STA $0021, f/ w# v/ N1 O5 j+ I$ \( d9 N
- LDA $0020
$ d* J* v5 |; U - AND $0021
4 J6 X; }: K! ^9 q3 ~4 R, a4 k* c - STA $0020" w9 q. {% V* f" {+ S
- LDA $06,X
) ^* y7 l3 l8 j6 D7 Z, L - EOR $0020
: Y( V; V7 v3 |% D0 H5 n/ X - AND $0020
6 y A- Y# @: E/ w9 P - STA $04,X# e$ U! k7 r. ?9 l% F% e; K- [
- LDA $0020, ?# j$ m& j5 |+ O) `: q% [
- STA $06,X
: [+ Q7 a8 W% r$ `% Y6 _' y8 S - JSR KEY_OPERATE
, ]: q0 U0 p3 K' q - JSR Function ;功能调用
; b% b3 c$ g6 C - JSR Weapon ;武器切换调用
4 ^; A$ H0 d/ s5 A0 \" B4 |& W: X - JSR Power ;威力调用7 Q# m* c( i! I# b/ o
- JSR BULLET_NUM ;子弹数目, K6 r. E$ D5 e, g- \3 q( Z0 t% M
- JSR BULLET ;副武器类型) [$ P+ J/ z+ q; d8 r
- RTS
" }2 R- f) ]9 t( G - $ P7 F* P* Q0 a
- 9 p d) A8 y0 M3 `- X
- 6 g9 t. V0 V9 \
- .ORG $8050+ B7 ^; Q0 C3 x2 h- H+ a# {9 y8 T
- Function: ;功能
. ~! [6 ^* V7 j - WUDI: ;无敌 I& J+ u. Y5 e- k) M1 A5 U
- LDA $6000,X
% H: O, h( f8 V - AND #$08 ;开关判断
$ I8 s6 c9 j. W% A - BEQ LIFE4 T9 v- k! E" X( g2 Z1 z
- LDA #$052 ?! n6 ]/ q$ a B5 e" A+ S% n+ ^
- STA $05DC,X ;无敌锁定+ o- F* Q3 H) ^8 X) V! w
- LIFE: ;生命9 Z# k3 D! v( n' Q& ?+ c c1 B2 ^+ ~
- LDA $6000,X4 F, P0 T& }7 s+ \9 ^
- AND #$04 ;开关判断
! D7 l5 q! @! L* X( ? - BEQ FUNRTS6 b- W# q3 N1 R3 f5 v1 W
- LDA #$05
3 w3 j5 f# M& d' m3 J0 v8 \ - STA $1C,X ;生命赋值/ r* T& R- O1 c. B
- FUNRTS:" k( O3 E6 u8 R& Y9 M8 X
- RTS
9 k# z6 A- i4 M; d) \9 U7 _ -
: i. z; _# d1 Y2 p - Weapon: ;武器切换
4 {) j( g$ e: f! t! V - LDA pause ;暂停状态判断; X: O6 \) X' D n3 V* o2 R, L
- BNE WEARTS
- ^! p( t: R8 Q' B8 a7 T - LDA $04,X
+ c" r8 O) f# _8 W! e4 f - CMP #$20 ;选择键判断( ]0 O2 D+ H* L
- BNE WEARTS
9 r$ \% E: a* U( Y% k2 ~ - LDA $12,X
6 }. T" c+ x! ?+ u1 R - CMP #$03 ;武器值判断
) H7 J" i0 n5 S6 s2 i r - BCC WEAINC1 b0 j4 h0 M7 b! k. x, J& S
- LDA #$FF
& n/ {9 ]( y* _; p/ p - STA $12,X ;武器重置
* }* w3 M. L2 L7 _- A0 Y* v. g - WEAINC:
! G1 `, u7 \* Q. }* E8 j - INC $12,X ;武器增加 l2 n. J( i4 f7 m* i k
- * ^9 @7 ?: K- S; J, S% D/ d( B, d
- WEARTS:( C1 U) L+ p4 e& \
- RTS
8 ?" v+ H2 s& r: z n - * k: H7 f, ]# Z+ @6 N
- Power: ;威力7 j9 N8 ]( T% @; \
- LDA pause ;暂停状态判断
3 t0 n8 S# M% r3 F# M: q, c - BEQ SPERTS+ B0 z( Z3 m5 y% g
- BUT_LEFT:
4 b9 D( V3 `* f! s& n! o - LDA $04,X. a: ^2 D4 {2 }% ~& f5 X! h
- CMP #$02 ;左按键判断2 ~" | G3 D+ l% L
- BNE BUT_RIGHT
+ ~7 i, A; j8 R# @) ~) {4 J - LDA $88,X: |$ v9 {9 }" y% `
- CMP #$00 ;威力判断$ ]+ m: g- c: ]1 _1 h
- BEQ SPERTS
7 j5 W6 n9 f. v+ n/ V0 l - SPEDEC# |+ A. C* F3 R+ U* _: w
- LDA $88,X ;读取武器值% A9 R7 P( m+ {
- SEC
0 i6 D5 N- b9 v8 b l - SBC #$08! }# |. N6 y' z8 |3 k
- STA $88,X ;威力减小; F2 `3 T. W/ Y; L g
- BUT_RIGHT:# N+ m! g8 Q2 \( T4 [) U6 Y8 c
- LDA $04,X
0 U# f+ ?! y I' |; ` - CMP #$01 ;右按键判断( L5 e6 c* o; p3 O7 i* ]
- BNE SPERTS" C- }7 l1 `$ ]+ [) {: k9 k: }
- LDA $88,X
8 l& A$ f9 L! O: {& s/ X - CMP #$10 ;威力判断
+ O' [& E5 l9 ?5 J5 F/ o6 _, o - BEQ SPERTS/ ?! a- ^! @% a7 ?1 E
- SPEINC:( y4 r& ~* v9 u! _5 g0 `
- LDA $88,X ;读取武器值7 w. ]. K; X" A1 d: p9 U q
- CLC
+ e9 m3 b1 n8 p - ADC #$08
4 l* l7 J. N3 K$ u- C5 w - STA $88,X ;威力增大2 ~1 n0 \/ g0 P1 y- {, o- Z
-
' X8 y. C3 ~. \; H% C$ W3 Y - SPERTS:$ r3 n y) ?5 p7 u3 q% p* D
- RTS
4 d; x) ]1 U- p; z* g - . ^1 l/ Z: m5 g3 T
- BULLET_NUM: ;子弹数目
7 f, [# E* z& h3 p2 o - LDA pause ;暂停状态判断
$ ?& }% ]" R+ a; v4 d - BEQ BULRTS$ y( C4 o9 D7 j8 O
- CPX #$00 ;主机玩家判断& Z) T- ]9 y `0 ~% O$ I: p0 `! \
- BNE BULRTS& _; w+ r' Z& }/ O8 d- y
- LDA $04,X ;主机玩家判断
8 f! v" P5 ?! x" _. s. l - AND #$80 ;按键A比较% w) ^7 V. p7 g" Y. X4 M
- BEQ BULRTS' `; V3 `% s2 L7 e
- LDA $87 ;状态判断5 P4 M5 t% {4 k& g+ H0 g1 v% |
- BEQ BUL_2. `2 ]6 K8 I% Y8 d: n, \
- BUL_1:! A, r# e m' O C* w! s: M3 t' N8 {
- LDA #$00! |* a A8 T3 j/ A
- STA $87 ;1发子弹
. R6 \$ }4 H: `. } - BEQ BULRTS
9 T$ y5 A4 S8 V8 l: d - BUL_2:, |' [) b" R$ o$ x+ J
- LDA #$01
9 x! c9 Z7 q _1 k2 o i& ?" z - STA $87 ;2发子弹
( ]8 {; d" D1 Y7 D! s% d! |( _ - + U% m) p" n1 E4 y
- BULRTS:
/ c- J6 F" n% L( H* G - RTS
& A8 [! C; l# x- b - + A5 d7 ^- F. q& ~# i9 _5 |. ~
- 6 g7 @+ W3 M4 R
- BULLET:& x" I0 y" s% Q; s8 l/ H* Q
- LDA pause ;判断暂停状态% E. c6 u4 L! |% F
- BEQ BULLETRTS
7 k8 P9 k' V* H9 H, i% y - LDA $04,X& |3 d, b+ C+ c. U
- CMP #$40 ;按键B比较
. m0 M2 G" k f9 Q" r: m - BNE BULLETRTS+ ?# c( V! r# R3 v# y. l7 [% ^
- LDA $6002,X ;读取副武器
5 z8 Q+ e# c% J' {: E9 Z k* U - CMP #$03' e0 P9 { E5 d; l4 U
- BCC BULLETADD
; _) c+ B+ u" J! ?1 r0 N2 [ - LDA #$FF
. r* r' E; e! j" @5 q" G - STA $6002,X$ E. ^2 B, f3 G* ^3 ]7 q/ f
- BULLETADD:
. ]0 Z, P# o h1 B - INC $6002,X, F+ n- U) o8 {8 S) x" [3 u$ ^. ~
-
2 N) t% e; o2 _4 Q, F1 L0 w6 H - BULLETRTS:( C7 i8 y5 O9 x3 U& B, ?
- LDA $6002,X
* i# d) U2 N4 ?- Y* |2 k- K - TAY& _( [7 p( v. {% v
- LDA BULLET_DATA,Y- P7 r" b) L0 h' ]2 P+ \4 [* h
- STA $6004,X ;写入副武器数据
! Q8 f8 m$ L N3 \' B - RTS
7 ~4 q: [3 |- a/ ^( U4 c -
7 M" J' j& y) }7 k3 _6 L -
; g' e* b# I0 R R% Y - BULLET_DATA:
) G" |, F9 ?. Z6 A( w' l& J& Z5 x' p - .BYTE $06,$02,$03,$040 {; R6 j2 N* x4 n( _: G
- $ k) h8 V" Z5 M0 u3 M$ S7 t
-
x/ M8 H V' ~. O' s0 h! d$ Q - 8 v( i e5 N# u
- KEY_OPERATE: ;按键开关操作
; \" d- [ r. i3 d - data_protect: ;数据保护 h3 t! h0 [. G$ f2 I
- PHA
( t! M, r' c3 \2 _; `( j7 J4 R - TXA
_* V- q/ h9 P% v: t - PHA! D- r- q) T2 r9 Q3 V
- TYA
& f* M2 h' I& }+ s8 U& W$ U# b - PHA1 Z- i6 k8 Y, X9 z+ l
- / h* T; E5 m7 W l3 i& v) c
- FLAG_INI: ;开关标志初始化: y( \# p$ v2 k3 O
- 7 ]1 I+ n$ c" M
- LDA $600F
i/ y1 t: Q8 }8 L - CMP #$01
+ L. y$ g( F: H4 x2 h! [& k - BEQ pause_cmp3 Q! S" H! U+ d, Y+ K& A) W
- LDA #$00
. Q1 v, A6 X) ?1 R2 Q$ e8 z. K% @ - STA $6000: e3 k) g9 }' s/ b
- STA $6001) V9 m3 t) e8 j p; j' n
- STA $6002
9 P9 J: }2 a( @7 h- o - STA $60035 D+ @/ I) ~. _; u# N, d" ?
- STA $6004
, @" {! a7 C' [6 h0 g - STA $6005. ]$ Z Z$ j! S1 I9 R8 I( N
- LDA #$01
0 x$ }1 d" l) R, c/ } - STA $600F6 l' C: K9 J2 A% F0 h; @4 |
- / V; h& {' e% W+ \. q! Q( {& t: B
- pause_cmp: ;判断暂停状态4 b' F, `( @' [; K2 C2 v
- LDA pause! |- L' x) j! F+ E# b8 Q: _+ ~% i
- CMP #$01 ;判断暂停状态) C4 Q' \3 | X0 O1 S
- BEQ button_press: x7 ~3 y( Z, r
- PLA% K: \( O+ u! |) g
- TAY
8 X& k9 P& S$ I& N - PLA8 {' i) k. m6 {' O+ J5 z2 o5 k
- TAX& ~5 S8 R6 h$ w4 ~* t
- PLA* [7 T0 W7 P. ?8 K( ^4 m
- RTS
# l7 k1 G/ N+ ^% R3 Y" ~ - 7 V- D2 `- U0 X# G9 ?% ~3 U
- button_press: ;按压操作
$ ~# O; F3 x4 I - ini_Y:
3 a& x7 ^- z9 _4 B6 W! P - LDY #$00! j" Q/ o" W! b: }! ?' Y# c+ v
- button_cmp:
$ f8 K t( y z+ D9 }6 o( G - LDA button,X
7 M* _( \9 w5 r - CMP ora_data,Y
' Y) t( z7 S. ~7 d - BNE count_Y_cmp$ ^; M# s% f. r
- flag_cmp:& e% s; ?8 ]# p+ `* e
- LDA flag,X
4 y9 ~' n) P& k - AND ora_data,Y
. R: `' o0 Y" m - BNE flag_and& P4 @2 `# d" D
- flag_ora:
) M. B4 u( N; H- i - LDA flag,X5 N9 i3 P3 T* {- z* E
- ORA ora_data,Y
, [3 o! Y' r# ^# X8 s: R( y - STA flag,X
% ]! B5 y# D* L: V - BNE count_Y_cmp" W- {( \) W8 _
- flag_and:1 Q( S& K2 v. s i
- LDA flag,X" k6 S2 E! ]0 R6 I- B( s
- AND and_data,Y
2 D! b" r+ d1 a ? - STA flag,X8 K, P- M6 U) k0 ?7 S2 x
- count_Y_cmp:
8 N3 R9 j$ @ I5 I4 P0 w6 R - INY4 V- m2 }. ?3 T+ j$ h/ ^/ \
- CPY #$08
) _& _& ^) w6 ` - BCC button_cmp
) \1 q( E9 u0 Q7 w! o7 C0 I - , @6 H6 Y9 s. f2 f9 F: q9 ]
- data_extract: ;数据恢复
- o& p$ x9 y8 J* D! s3 J - PLA
: ~. B1 ~8 C' z% A- U/ z( A - TAY
6 s( y( z/ G/ t0 ?0 J& ] - PLA7 G% F/ ?7 r) t5 K: a
- TAX% y0 |/ P6 z' L$ j6 m- z& J
- PLA4 ^5 u+ x; j8 A
-
# |- U. f H. D/ A0 K0 m, I - return:
$ C% z/ Q) L/ C/ w% _7 D - RTS. |4 F9 V& p7 }8 X/ ?5 m0 |/ k$ Z& p
-
" x- s8 Q) Z7 \$ q/ V# a - ora_data: ;按键相或数据, T. \/ n5 K; z) R5 ?/ s
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
) J& B, c1 [$ l L( j - and_data: ;按键相与数据
/ p! _) F" y4 e0 ], N9 x+ V - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF9 C3 G8 T/ g! Z0 l) D( O
- % K% _; r: _& p+ h
- ! e4 @8 G2 x/ {( w( q
-
O0 Z! Y/ D% B3 }8 z. d -
$ x- y7 _+ P+ Y! r7 }4 t - , ], I" _- }' ]9 Y
-
$ u% z9 v# |) Y; C, \: p1 m# [/ Q - * K) a) }* n5 U5 n
- e7 n# Y7 v% V8 T2 I( o, H6 ^) g- 5 t% G, f+ [& L9 `7 g
- .ORG $C264 ;自定义的MAPPER2切页程序* t& ?* \4 m+ t: _) b) l' Q- @4 \
- PHA
+ G" N8 h& q: c9 p/ d) ^ - TXA0 J1 d: t3 @- p- f* k' y: p0 E% y6 D
- PHA
' `; S+ ^' V6 g$ R - LDA $0066
& c: C+ p3 S" v7 y - BNE ADDRC280
9 u/ n; c6 l' ~5 i8 {- [ - LDA #$07
# e* Y( F1 P- d b7 [ - LDX #$03
+ k1 }3 P) O2 j5 @# C, l1 j - JSR $CD9B ;自带的切bank方法0 P9 K9 K* Z! Y, \. b
- PLA
0 Q5 h7 h a/ F5 v( z6 I- h* ~ - TAX) s$ C/ n6 f1 x
- PLA9 k) w) d S8 Z r; b
- JSR $8000
2 B; C) C7 a) V8 I, B! N; Q, L+ {3 N - LDA #$06 A8 Z9 k0 X% C1 h4 e8 Z
- LDX #$03
& o! N9 R1 R# w& \6 U2 r/ z! _ - JSR $CD9B ;切回原该切得bank(可以不用)0 y5 H: M5 d% Z! |. Y; k% q
- RTS
5 l* |5 Q# U n9 F; P. A - ADDRC280:
; ? G" `3 a' J) X! p3 l - PLA- Z x5 R+ D, R8 q9 x( D2 M
- TAX
O; ~5 K+ q& ^, L+ K - PLA0 m4 ?5 f( E7 J( c% Y
- RTS
1 J2 _" c" E# f/ _0 K - 4 S. ]* I- F }9 r& m$ W8 n
-
9 k5 ?. A" Z, B: k& i$ r" G" k - ;[FC][最终任务PPU][END]
/ J- ^* ^( u. B9 \6 M - .ORG $C056 ;跳转到PPU重写程序3 M9 c0 m {2 K8 Q' \2 ^1 r
- JSR $7000
/ q7 I' G! S) w, ^9 e1 I( Q$ w - 2 c; d: d: ?1 O o' B
- .ORG $CEBF
; E; ~6 M" j- {; }1 g( ` A4 f - JSR STAGE_DATA_WRITE ;跳转到关卡数据写入
+ T6 w- R* Y9 N - ; u" c/ L% b9 m/ f
- .ORG $E460
2 f- E( e9 e. ^ C, ]( w2 N - JSR BULLET_DATA_WRITE ;跳转到副武器数据写入
' B( s! K: {; l0 A6 {- r* q - 4 f( z8 U, d% D( f: e
- .ORG $71F0
8 ]: y" c5 U: R, z5 Q - STAGE_DATA_WRITE:9 \6 {9 \ L% l& R- ^) }0 n
- LDA $6010# Y8 a1 b: \4 s% b$ y$ a
- STA $1E ;关卡写入
/ i& V4 o6 Q7 ~1 D, I% O( V. } - LDA #$00- `! i* I' Y& E$ d9 E8 K8 Q
- RTS& [ I" K" Y: s
- .ORG $71C0
( T. l, M. e% Y4 o6 L - BULLET_DATA_WRITE: ;副武器数据写入
4 s" A' a1 [% U) J. Q' ], }9 b! H - CPX #$0E
- C* k: g8 v+ n: K - BCS P2_BUL+ ^) l+ \ n- l! ?4 h* Q( m
- P1_BUL:
' j( V7 _; I9 L3 Q5 p) E) f) K/ ~ - LDA $60041 P. z& D1 V7 J8 {- ]8 O9 W3 X
- JSR $D7D0 ;P1副武器数据写入2 X& l7 r% h/ V* D* h! s
- RTS
. u9 ]9 B* {/ R V* S# i z - P2_BUL:$ c0 `6 V6 T0 f$ [
- LDA $60054 ]4 w* p: T; Y8 Z6 Z3 d
- JSR $D7D0 ;P2副武器数据写入
/ m! R2 u5 Z+ n6 s - RTS
8 `" d. c5 d7 M - ' m) b: K/ d% C6 V4 f
* R4 x: V5 p; E/ \$ {- .ORG $70006 C: R; K- H$ E! z% c: E% ?
- / {8 l7 `( n, K$ W1 m, _4 e( |- S
- STY $4014 ;补上覆盖的精灵写入指令
6 v J' b9 p9 F0 m% z! A3 m' G - PHA
/ s( i' @# @4 {* n: Z3 {! B - TXA3 ]5 E$ X, @' X" R* p9 H5 `+ `
- PHA* o+ m0 G$ v1 X3 v; ^$ ~" k' A
- TYA
K0 c% x& ?( U" ~" D/ D# H - PHA
1 ~9 Y; O* h9 b/ w - LDA $0C
% k& {6 g5 U1 ?3 h* s+ H" {$ U - CMP #$01 ;比较是否为标题画面# o/ y. {1 d$ C, R: t4 r$ I$ F( A) R
- BEQ PPU_STAGE: n9 F7 C$ B$ \) g* c
- PLA
+ ~2 W3 t2 D; [' a. Y3 \0 N" l1 h - TAY
1 u# b) Z C4 p. M) U: f - PLA3 h+ U# p/ M- s1 f3 k2 R
- TAX
W+ U' o' A7 a( h) l" E q& e1 d - PLA# D* e0 C" W5 [: T7 k+ q5 k' z
- RTS
4 D3 O1 W* r1 G/ t0 ^5 ^$ Q0 O - PPU_STAGE: ;STAGE显示程序
! N. z7 n! Q6 j5 Q - LDA PPU_ADDR_DATA
: J! P/ m" ?1 Q2 S2 u' k - STA $20061 L6 x' a+ c4 P' d. K* [
- LDA PPU_ADDR_DATA+1
) s" |$ b/ W/ q2 _1 y2 T - STA $2006 ;坐标设置. x5 V, h' f6 |! f# m# s
- LDX #$007 E: }$ S- D1 c5 c
- PPU_STAGE_WROTE: ;写入STAGE字模) N2 a+ b7 E) g. d, U( y* ~7 g
- LDA STAGE_DATA,X
2 e/ y4 a u6 k3 ?$ X - STA $2007% S1 V6 d. I# C. ]- {
- INX
! }! {) n. O6 _* V* l$ @4 a1 N - CPX #$06% B9 H! ]# m& }2 T! M
- BCC PPU_STAGE_WROTE0 O$ q0 }: x( E- }; f0 i- r3 `
- LDA $60105 o0 z9 p7 k* ?% T, O# c" V
- CMP #$FF ;关卡数据初始化条件判断4 r8 O7 |' O: [; s0 k
- BNE KEY_B
3 y, d3 u1 a2 o- \5 A - LDA #$00" o7 O k$ A- K5 N1 ?" N
- STA $6010 ;关卡数据初始化7 @7 t! E6 i% t* |& u! ^
- KEY_B: ;关卡减少6 Q1 D2 B9 u" L P
- LDA $04) @9 ]6 m( R. d' q# S6 z
- AND #$42 ;按键B或左减关: J) a# m+ M; Y5 a4 V# o1 [
- BEQ KEY_A& e- @6 q8 n4 E
- LDA $6010
# `. P' l, c# d h. r/ U - CMP #$00 ;关卡比较
( e0 r# W8 M. x' k* @ F0 T+ k2 Z+ d - BEQ KEY_A
) r/ Z f2 C; E$ `+ s3 N - DEC $6010 ;减关
, Y8 \1 B9 _* H: z - KEY_A: ;关卡增加
" A% t/ a9 `" W$ ^ - LDA $04
9 M* q4 ]3 n1 q* f9 t" B" W( }% q) ] - AND #$81 ;按键A或右加关6 W; _5 r/ ?' ?3 }: g
- BEQ PPU_NUM_WRITE' ?2 s8 y: r# L' c% Q
- LDA $6010
. Y9 q8 N' u$ V' J4 W5 Q - CMP #$04 ;关卡比较7 q9 E' A% d/ T/ g
- BEQ PPU_NUM_WRITE
5 t8 f+ j. t+ U, J7 \- J6 r - INC $6010 ;加关 H4 |/ b* _; @: V ~4 j
- PPU_NUM_WRITE:
j4 |8 s9 x' R( Y8 U - LDA $6010! L6 Z4 t, z1 y0 f. a
- TAX
3 U" A& E$ C7 ^* c( m) ?' m - LDA STAGE_NUM,X ;写入数字
+ n! F1 m b6 V" _% u - STA $2007
_( R0 u! n8 i( ` - PPU_RTS:9 Y$ U( A0 G+ a5 d4 H
- PLA
6 R1 R- L8 D# ]% w - TAY" G: Z: q/ N& F, z0 o
- PLA+ i4 I j& x, j) l2 k4 d- p
- TAX
( ~' U( L, V. p3 f3 k) A, ~ - PLA) b1 C3 i9 }: e* l3 D) q
- RTS/ w) G* `5 G8 N
- / S" B; c. r; q0 {7 t
-
+ `+ N5 p0 I2 D - STAGE_DATA: ;关卡文字S,T,A,G,E,字模数据4 Z, ?9 C, S* S" @' b1 ~
- .BYTE $EC,$ED,$DA,$E0,$DE,00
}% u2 N7 N8 ]/ P8 ~& n - STAGE_NUM: ;关卡数字1,2,3,4,5字模数据' c; Z: Y; B/ J
- .BYTE $D1,$D2,$D3,$D4,$D5
& ] \$ q1 W p -
& S1 y. ^6 d& N2 t% D. z" t - PPU_ADDR_DATA:
( n: B! j, e9 i8 P1 }2 ~; x - .BYTE $23,$0C
- |3 o1 Q2 O, R; y A -
4 ^4 G1 I6 V- y
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|