|
本帖最后由 yandagui 于 2017-4-21 18:58 编辑
* H9 J5 Y+ h. U+ q
* f0 D4 W! Y- U8 V [FC][最终任务][END选关]
/ h- b6 v4 N9 ^* B4 g% P7 C( e' h2 l- J! R7 ~* }
时间:2017.3.29
0 x0 P& L" y' w b作者:FlameCyclone
/ t- C: H6 C9 I内容:
) D& P k" E& |& x4 g. y) R 1.关卡选择: 标题时,左或B减,右或A加(1-5关);
3 h+ _- d- O. ^" I# I+ p7 c v 2.无敌锁定: 暂停后,按上键切换;9 O' r- I6 C( a
3.生命加满: 暂停后,按下键切换;
9 b1 v! O/ [ T- g6 y" ^ 4.速度调节: 暂停后,按左键减,右键加(1,2,3三级);! ~) w4 N6 m- z
5.子弹切换: 非暂停,选择键切换(普通,W,L,B);
: A4 j; l) \3 P3 ]& e 6.B弹数量: 暂停后,按A键切换(1个或2个);
% w- k( b5 K+ O+ i$ c/ N 7.副武器类型: 暂停后,选择键切换(普通,W,L,B),非普通时子弹方向是向右发射的;) j* g6 p/ e$ f1 Q) U, i( @
! y& a# {% Q; ~7 F$ n
& G8 H8 Z/ ?% w: E5 a: U+ W
2 h; B. c8 h+ O/ W" d2 Z! F( }

) z; l% T- z5 n1 `! Z9 D& M 3 S5 L, X" T- ?1 W+ Y. J6 a
8 S" J1 }" l* a% z; K6 R7 ?4 Z& q
& G4 f% p% v7 V8 V% J" R4 rFlameCyclone.ys168.com
; H# j A( H9 A" Iwww.nesbbs.com- ;[FC][最终任务KEY][END]: d( q0 [5 n- x
- button = $04 ;单次按键
& o; ^# z( |' I F3 C- A$ q0 q - flag = $6000 ;功能开关标志
/ |0 S& I, X. k) l - pause = $000E ;暂停地址 U7 [* C$ H4 k6 V
/ Y4 N( N& `, J" ^& z2 f( q0 I- .ORG $80004 B5 I: N- J q. o, a6 A5 C
- LDY #$08 ;自带的按键程序( G6 ]! @) X6 B3 b* [6 d }) I6 z
- ADDR8002:
& Y5 }, p% l( J - LDA $4016,X% M+ b; }6 M2 s
- LSR. `+ k8 Z- l' W& K/ ?9 a$ a: w" T
- ROL $0021) U* Q5 ^# j" b- @6 q4 \# u/ H( C" p
- LSR8 Y$ z; f3 Y, N1 f; h- \
- ROL $0029
9 Z- Z% m( t6 N4 g' u( @ - DEY
- M- F1 H4 p5 h* w9 o2 F2 G4 m - BNE $8002
" |5 W# n+ p" A) w, ? x: q - LDA $0021" j! B0 h2 `9 \* J" S6 s" b
- ORA $00292 X$ y; ?' a0 |% ]
- STA $00214 L0 x- ? B3 B, N9 h2 }3 @$ ~5 u+ N
- LDA $0020
# l! j" w% V, V% Q+ n' L - AND $0021; s! W$ S2 p: R# Z4 c! w
- STA $0020
' [9 m+ _; _3 E - LDA $06,X
- c$ h, O5 _' F3 F4 {. ?. @ - EOR $0020
; [ U4 D/ X8 q) B+ b - AND $0020* V j: `+ F2 p1 ]/ a
- STA $04,X
: w8 B3 r3 B* }6 Z& J* O# U - LDA $0020" H$ F3 c, w, d4 _/ y3 G& y0 l# S
- STA $06,X
1 R: M: u O9 n A0 F - JSR KEY_OPERATE
/ ]' Y+ E1 r. A2 f$ [7 ~2 R - JSR Function ;功能调用 s- _9 b! d8 \' g/ \ g0 M
- JSR Weapon ;武器切换调用) \* D& g- ~- s7 R# \$ v
- JSR Power ;威力调用" P" F! r& s3 X3 j3 G
- JSR BULLET_NUM ;子弹数目- k5 e( ~3 I* W3 m* a% V
- JSR BULLET ;副武器类型
7 D, g# _/ L2 K- a$ Q+ q J - RTS3 t6 a- [$ y9 B& B
- , ~. Z* X! \: G6 C) Y( a5 y
-
3 [0 T) k2 U- \0 E- F3 z! ?1 [7 E( U: F - / X) {# M* M+ @! D7 q
- .ORG $8050
3 \9 I3 P) ]/ y9 W+ U - Function: ;功能1 k+ N# u! T! q7 |+ E
- WUDI: ;无敌
0 a d3 ]* _$ S. ~/ ]" v - LDA $6000,X
/ D) l6 Y9 }* j* ~5 c; W: k% r - AND #$08 ;开关判断9 n3 X, w& e. h% E4 M
- BEQ LIFE- T5 Z, m8 j' W9 J' ~
- LDA #$05
) b q; n9 i) [8 f1 s/ ` - STA $05DC,X ;无敌锁定+ c; X' C0 C6 V0 a% f
- LIFE: ;生命
2 n9 ~" [3 _; f) j - LDA $6000,X7 Q% Q; J1 p4 _
- AND #$04 ;开关判断
7 I* s( ^' y8 G3 _ - BEQ FUNRTS7 w$ |: \4 H* \: Z( @9 U
- LDA #$05( c( Y: c9 {+ u; @5 A0 b+ r, g |
- STA $1C,X ;生命赋值
( L- J! I+ t# |' W2 |* j) ] - FUNRTS:
3 _: r9 I5 B# c M - RTS
: C, [! T8 \& N# w -
- g3 |- g! `( @ - Weapon: ;武器切换0 P+ A& S; ]3 b8 I6 N& p
- LDA pause ;暂停状态判断0 \& L3 y- a, S( P$ t, r" e2 ? ?
- BNE WEARTS N+ H& @( v0 m' U8 F% y3 p* P
- LDA $04,X
; p5 |: y9 J% R: c& W - CMP #$20 ;选择键判断
$ U4 R1 H! Y5 r8 o* h: R M - BNE WEARTS' ~& n" Y0 x6 F$ Q
- LDA $12,X
3 u. \; k( X1 X% W4 V# e) ^6 J - CMP #$03 ;武器值判断$ l4 B3 H$ j- B3 }: W( w
- BCC WEAINC+ {) P7 p3 |$ z) M% }% V% {
- LDA #$FF! q1 e ]: k- t3 j: h3 E5 s
- STA $12,X ;武器重置4 o- |/ J+ H2 ], z, ^
- WEAINC:
0 o6 Q+ \: r! k1 l - INC $12,X ;武器增加$ I2 I. R5 A5 ^" }& Z- `# S
- 0 _9 S0 Z5 i* a9 ^% r
- WEARTS:
; f6 J. {1 O! K2 E# t# {* ] - RTS, Q1 U' P/ a: D% d! m
- / a; I7 O& G# U& l: t* i. g' o
- Power: ;威力- D1 E% T6 @7 {
- LDA pause ;暂停状态判断+ ^* Q H4 a7 q
- BEQ SPERTS
" ], s9 C W* D( m6 k - BUT_LEFT:
" _* X3 Q3 w3 ^$ ^- ~ - LDA $04,X" s7 D5 b; y. H1 ?" U# p* P" O
- CMP #$02 ;左按键判断
8 M8 y, K* j" ]2 } - BNE BUT_RIGHT
( g: P7 R, e; q# @# {! K+ j; n - LDA $88,X
- J, t3 r2 P6 ~6 V* J2 K - CMP #$00 ;威力判断
4 k, k7 G+ C% b% B - BEQ SPERTS+ }1 g) W$ G. l, ?; Y' j
- SPEDEC
2 ]6 q+ D& Z9 }. ^2 ? - LDA $88,X ;读取武器值7 x1 V7 B% a; z' @% u
- SEC& m8 g; j; t+ J+ B- Z( I
- SBC #$08# l& W2 A" @3 \( X$ ]- a. E# C
- STA $88,X ;威力减小' t. t4 L& e$ `% {
- BUT_RIGHT:% D- {1 O. F1 r
- LDA $04,X( q! ]5 l* Z' Y0 \+ N
- CMP #$01 ;右按键判断7 J( g# U# H8 d+ H
- BNE SPERTS" }! z ~* F1 d+ S5 _
- LDA $88,X
2 M6 g8 _3 R+ ~3 J: j/ w/ x2 K - CMP #$10 ;威力判断% x3 W7 a$ h* f! z9 j9 B7 I# Y
- BEQ SPERTS! F& y9 ~8 c" ^9 M# n
- SPEINC:
; s7 Q! A6 d$ N' i - LDA $88,X ;读取武器值! G e( W0 v+ y+ g" R. v" X
- CLC9 H6 @+ s2 c! y5 K# d) U
- ADC #$08% B2 E% S) A: Y
- STA $88,X ;威力增大
( m+ J2 r0 y& L( p6 Y5 d$ l -
& _$ d' B3 a' a& G2 v2 g - SPERTS:
, y: x+ t, N2 q' a0 ~8 {8 g+ S - RTS1 _2 ]* X I1 \" b/ A; _7 w0 o
3 N$ Q# q8 D( n- BULLET_NUM: ;子弹数目$ ]# X/ `/ ~/ \! X6 [
- LDA pause ;暂停状态判断. k, K6 r5 T1 m
- BEQ BULRTS( m' u5 y9 p1 @4 i
- CPX #$00 ;主机玩家判断
+ Z0 B4 X9 x0 { q: B3 P - BNE BULRTS3 W. o! c+ @7 _" T& x
- LDA $04,X ;主机玩家判断( A! S& }7 z: l, l. Y o
- AND #$80 ;按键A比较* C* @) t, A. R6 b6 G/ \8 s% M
- BEQ BULRTS
9 z$ t, q0 V6 R k2 ]( O; y8 X - LDA $87 ;状态判断
" d' n8 {: X9 ?3 `. y - BEQ BUL_2
% p# _4 m, F6 z' I" T. v9 j2 z - BUL_1:
; L! C3 I, X P% u! U - LDA #$00
) L1 ^7 J$ ^( E - STA $87 ;1发子弹0 |0 b( a; N) Z8 n3 ~; ]
- BEQ BULRTS6 V: `# M3 ]$ z' M3 ^6 s7 `' v5 W
- BUL_2:& }) }9 c* R, s6 N! k0 H
- LDA #$01; B3 W2 P6 J- P N, M( x, V) u
- STA $87 ;2发子弹( z# ~8 G2 s4 b, Y
-
/ ^+ U7 z( c# L9 M+ ^0 `4 Q A - BULRTS:
9 ]/ V& `% Z7 ?0 U9 Y! T - RTS
5 n& d1 b5 [% [/ e/ C+ q -
6 r( X6 S* R( P - 1 v0 g% Q2 x3 d; V, U5 R3 K
- BULLET:2 i4 ~9 t) q' s4 f' f* |7 V$ Z* Q( B+ q
- LDA pause ;判断暂停状态) A3 l4 |: s8 m: T G# b- |
- BEQ BULLETRTS; I" F" o; v6 I0 A7 ]8 Z! {! l T
- LDA $04,X4 h. }5 W0 q+ X2 i( ]
- CMP #$40 ;按键B比较
0 [1 V! J: V0 \ - BNE BULLETRTS
% r" X, x" t' L8 {7 b3 E1 y - LDA $6002,X ;读取副武器
5 ?2 O' @) q9 L. w% x' E2 } - CMP #$03
3 a7 S4 K. J. l. j% x4 O' X - BCC BULLETADD
4 i: O5 P' z5 k; S* u( N9 ]+ ] - LDA #$FF
" j* x! ]& {* D; P4 ] - STA $6002,X, f0 M2 S% K5 @/ ^
- BULLETADD:2 |9 H9 p& p5 T3 ^5 h" q) h
- INC $6002,X! p) J; v4 r. l! ]2 {. t8 B
- / |+ q h) E, K/ g$ D/ d- f
- BULLETRTS:2 b/ U! s8 f9 r
- LDA $6002,X
5 c. E2 J9 F( Z( S( x1 T - TAY
0 l0 g& ?2 s) P$ I' _ - LDA BULLET_DATA,Y
( L3 B/ i8 L. F! `) c - STA $6004,X ;写入副武器数据3 E3 v t7 |6 q
- RTS/ q' A9 k6 f, I2 f
- 6 g* V# O3 u9 q, Y9 A
- . m3 @$ L. m8 B6 w1 g: G2 P
- BULLET_DATA:$ J; W) I: j% m# x3 U% L
- .BYTE $06,$02,$03,$04# p! A7 ]; `, p1 }+ E/ `
-
1 r. c( H2 [$ `3 i M -
1 c5 y' n) A2 k4 P# y. y! x -
8 @& [; u' A: j" k8 D, R7 L - KEY_OPERATE: ;按键开关操作7 |$ z1 f0 L' K3 j
- data_protect: ;数据保护; }% ^* ~) R6 {
- PHA
; _ M9 {. _7 [' A4 e1 a5 A - TXA
' Z6 F/ E( K% ~% O$ F. k - PHA/ t M. ]4 _: u
- TYA
: h- ?9 v J$ E0 |7 Q - PHA' G" m. r* Z9 ^
- * T( s. g: T* \: ]* r
- FLAG_INI: ;开关标志初始化
" i4 l% x7 H/ M/ h& n! u$ p' n) Z% M" q - + Q1 n$ i* Q t+ ]& z% e+ S
- LDA $600F2 F1 z; z0 A. m1 ~, d$ H3 R
- CMP #$014 e. W# _8 f% X. |5 d+ W. }
- BEQ pause_cmp) j' ]& T: X- \$ a
- LDA #$00
! \$ }; g3 r' U$ R - STA $6000
2 Y9 Y/ t+ p( C. F4 q2 E( C - STA $6001
8 m9 N* ~: Q3 P6 K3 i - STA $60029 t+ y7 z1 M( _! ?
- STA $6003$ O) ?) E. _7 u! }
- STA $6004
3 w: m& W3 f- T# u - STA $6005! E) Q g4 a; W+ V
- LDA #$01
9 O' E. t4 C$ j9 g) I j/ y! w# M - STA $600F
3 A7 s; Z! k1 Q" L - 2 W$ O1 I3 R* ?
- pause_cmp: ;判断暂停状态- L- E8 V7 \" c9 {' x6 l
- LDA pause9 f0 E' n+ E: z$ z+ @2 F
- CMP #$01 ;判断暂停状态
$ [# Q6 ]2 w7 q: x2 L - BEQ button_press
+ c. r" Y8 H3 o$ j6 L; C, P - PLA
1 Q, y2 Q Z2 o5 O0 g; p - TAY
/ |! ]9 M) H1 b# z: Y. \+ @ - PLA
5 v7 o u" Q0 j% j2 a* G - TAX8 b$ q2 @6 _/ {; S; X
- PLA
/ B/ b: O0 v$ l- r$ q - RTS* f$ _1 n ?0 K3 ?: W3 ~* [6 L
- M4 a/ x" h" f& z( |) {- [- button_press: ;按压操作 F0 \3 l( j$ k* F
- ini_Y:
7 d' `9 {3 M: A. p' q- b - LDY #$00
, a( L4 ~& a3 s - button_cmp:
$ G3 ~" X! s, L2 N; @8 i - LDA button,X
: B) m5 d7 [! b1 f5 p+ h - CMP ora_data,Y9 A$ a8 E2 S5 ~$ ?5 u4 |2 q
- BNE count_Y_cmp3 v- G4 }5 x" S) U
- flag_cmp:2 a( K! _! v: D( o) k, e
- LDA flag,X
* y5 {+ R7 X/ v( j7 `8 ]1 t0 u: T - AND ora_data,Y
% f: n# b, w) y+ J - BNE flag_and- q: x+ ]) \8 t9 f7 O: O, ^! `
- flag_ora:
( Q8 V% l \* U( |+ h @$ k - LDA flag,X
4 `, k$ W+ y$ [, l* X7 n& n - ORA ora_data,Y
/ _$ z! l0 p* g( F# A3 Z5 M - STA flag,X
, [# u$ u$ I# H% n( M - BNE count_Y_cmp
3 Y5 e p7 @- G" X! h" ` - flag_and:! k( C3 ~' d o7 x$ n1 t/ p
- LDA flag,X
& }" }0 E7 f& N' ~ - AND and_data,Y
9 H% C1 Z# K7 M9 \ - STA flag,X- X3 v# Z5 o8 ^
- count_Y_cmp:
( q6 D$ _8 X" q* F* D C1 y - INY
3 h" v1 I8 ^0 c+ B" s7 ^( R$ g - CPY #$08/ f% {6 ?2 [* W) L" s9 o
- BCC button_cmp8 v+ s1 ]) C$ B H; [
- 1 Z) }9 D% V( i& |
- data_extract: ;数据恢复
7 G8 e- _& d; b9 y - PLA5 G8 y$ A/ x, S# m3 E+ ]
- TAY
8 G5 X5 W0 _; b c9 D - PLA+ B, X: V6 z% f6 K8 T' |( D
- TAX
2 e3 E$ i, F) Z0 n! V - PLA5 ?% h( S8 S, D& x9 Q
-
* I" m; f& T' ^' ]: Q/ q - return:$ E% Y5 S! {& z |& b5 h
- RTS$ |: K ~& i1 V# y8 q
- : {$ X! g( e9 G
- ora_data: ;按键相或数据
5 ~6 A2 E+ a: r( p; s' ?0 I+ w - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
* F" g: U: D5 k8 m, s - and_data: ;按键相与数据; d. f2 h6 k3 |9 e, M+ C
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF7 B" Z& [* F8 h; U* H
-
1 d6 u# ^9 k H0 j' V N0 r -
% Q( b A; T! d6 f: x9 o! ^0 U -
% v5 g6 |3 b9 D: Y2 {+ c -
! ^- y7 l1 M( a& `$ f - # F0 e" ^/ T. B, A1 K& K1 } U, O+ X
-
% T; r, c: D d - 6 x2 V! x3 N5 e
8 X! ~2 b4 p4 E) y
. U6 h2 j% r7 h6 u- .ORG $C264 ;自定义的MAPPER2切页程序
" X' ?) U% z$ {, v* S, w# u9 l - PHA8 G, S6 q, l6 V- \
- TXA% w: O, k; ^ q! @
- PHA9 Y4 {& y; u/ D7 M; `
- LDA $00662 B* |: W/ I: H D# M( z
- BNE ADDRC2801 H3 M$ A; ^ P& x) A& \+ I
- LDA #$07) g( u( I& A3 f2 r9 Q
- LDX #$03& K( X* D6 A" z3 v6 J# [
- JSR $CD9B ;自带的切bank方法
1 q3 l0 U$ @# N3 c: _$ l - PLA; ~# W3 e9 c! ]4 P
- TAX
8 l: I Q6 P, E - PLA9 Z E; _ v; i4 K5 Q7 s
- JSR $8000
6 X3 u$ ~, P9 |$ W" i ~ - LDA #$061 ]& v4 E, T3 M8 z# K
- LDX #$03
5 U+ \/ A' j! ^$ O S8 O4 W - JSR $CD9B ;切回原该切得bank(可以不用)% c$ W; e2 @4 d+ l/ c& ~; g
- RTS
! w0 S+ i5 `7 }2 f+ ~+ g0 t. G: I - ADDRC280:) k0 D* z4 ]) u3 [& o" V' y! c
- PLA
. B* m1 f7 e3 K) g* k3 G+ x - TAX4 I! A/ v- D E& h& @
- PLA3 S& n: }4 K0 A
- RTS0 V- m+ T& @8 X+ C' M. ^6 R
- 2 b2 v2 l+ N U4 p4 ^. e' n
- / ~* }* U/ B( ~ D: W
- ;[FC][最终任务PPU][END]% T8 S1 d3 N8 F; }6 A8 j% r% B7 b7 g) e
- .ORG $C056 ;跳转到PPU重写程序( c- J3 V* ?% E6 T7 V
- JSR $70009 a9 T0 _% F0 J# {: t
6 L: w5 Y" e6 u/ ]4 n1 A- .ORG $CEBF( e7 S- Y0 M- q8 N! T e- f; U
- JSR STAGE_DATA_WRITE ;跳转到关卡数据写入
! L% }# p2 R1 L( P -
9 T$ i4 W# B2 S# e' @ - .ORG $E4603 P8 k5 ~* h! L* E
- JSR BULLET_DATA_WRITE ;跳转到副武器数据写入
7 H2 [( K: {: ? G$ D% |6 D$ X' b -
) s7 }( N! `8 { - .ORG $71F09 e% q$ | m2 v
- STAGE_DATA_WRITE:
4 b( e, _- q8 |6 H, F - LDA $60108 n3 R4 {* I% N& ]( ?
- STA $1E ;关卡写入3 K K' D4 S) G, T/ W3 q
- LDA #$002 J( p8 {+ x: z
- RTS8 `2 J; e: E2 Q5 F4 P& l
- .ORG $71C0
+ d6 k+ [; y* O8 d2 x' c - BULLET_DATA_WRITE: ;副武器数据写入5 _; o; |5 B. P+ J0 g% t# i
- CPX #$0E
) U! K9 t5 Z0 ]* e6 W - BCS P2_BUL, p6 Q! ?0 ?3 {+ i1 O
- P1_BUL:
7 h; U" p* h; i* w5 R - LDA $6004
, N7 I3 j3 w0 h( o) q - JSR $D7D0 ;P1副武器数据写入
# ~7 |( V- N- ~9 @8 G0 S7 |; I0 T# ] - RTS% V: x! X# a" W$ v8 M% M
- P2_BUL:
4 l/ n6 X3 {! r9 g# y3 j - LDA $6005
) P7 z4 w9 T$ r9 n0 [ j, O - JSR $D7D0 ;P2副武器数据写入2 \& R; r4 h6 ]" Q3 {: G7 O
- RTS( Y6 u1 u2 v1 }( W1 b. n
- 8 L% a1 j; A) O+ R
; H. \. `0 u3 T0 g* k- .ORG $7000
% z/ E+ i) c: A1 h" \5 q- {$ ^4 d -
* ?7 b+ P6 ^4 \% a% K/ H - STY $4014 ;补上覆盖的精灵写入指令& G& U2 r% A$ V: [( m/ ?2 P
- PHA
/ _. T! i- P% x) L0 t) P4 J$ z - TXA; j s9 r- V* _, g/ V1 J6 F: K0 h
- PHA& Q+ @$ v* u: Q% w- T7 a/ P5 P
- TYA
, X: \: d( S f4 a - PHA& X& N R8 H) V' w
- LDA $0C
& }, D: }$ B V: T+ i! ^' ~ - CMP #$01 ;比较是否为标题画面
6 O- T! r3 h* d6 g - BEQ PPU_STAGE
# _* o8 c) n6 u" J( v - PLA- i% I* ?3 \5 B( m% A' ?
- TAY
+ D8 B# u: v3 H( X1 I/ y e - PLA
7 V2 v8 x# h" |- p$ | - TAX
$ ?* @7 U+ a' ~- ^ J% G - PLA
8 R. i* x% Q, V q3 B6 X - RTS! s2 G$ i6 n: `3 ], a; X0 v- D$ G B' o
- PPU_STAGE: ;STAGE显示程序 U) o' Y# k1 _- _2 a- t
- LDA PPU_ADDR_DATA4 Q2 |+ _/ l+ ?5 x) z! c/ [+ c: X* E
- STA $2006* ]' w% S+ }2 H! o( c6 r3 ?
- LDA PPU_ADDR_DATA+15 I7 Z0 `" f. M
- STA $2006 ;坐标设置
" L- x" A, c( p- R! [$ V - LDX #$00$ h/ b1 z8 L s8 P" d& h
- PPU_STAGE_WROTE: ;写入STAGE字模
+ y" g- t' y; i W2 ?# ^/ \ - LDA STAGE_DATA,X8 l# h' s9 K- V7 |) q0 {
- STA $2007, Q, R( c+ w f X7 N
- INX3 L6 t5 o9 P0 g4 J" m
- CPX #$06
. g2 G0 [( I' D5 E - BCC PPU_STAGE_WROTE
: {; Q! N* K$ h0 i; Q3 X! j3 Z - LDA $6010
) v# @+ G9 s1 _+ n - CMP #$FF ;关卡数据初始化条件判断, G, j( i$ H* J7 g8 k( q
- BNE KEY_B
5 O8 K) Q7 j, r3 o5 o( a - LDA #$005 ], D; d7 c% M" I
- STA $6010 ;关卡数据初始化
/ [8 i% R/ f, d- B - KEY_B: ;关卡减少' V# z$ G, L. O. a4 {' ~+ z
- LDA $043 a* r! \+ M+ B# }. t' \
- AND #$42 ;按键B或左减关3 r8 N l. U8 Q2 V, C
- BEQ KEY_A
& S9 `1 }2 b! Q r - LDA $6010
( K8 _& j8 m+ |1 e5 v - CMP #$00 ;关卡比较
7 a2 b/ E ^2 S' v( l f1 w - BEQ KEY_A: S! C0 [- ~4 L# E |
- DEC $6010 ;减关
$ C) v& L# ~ j, p6 }9 n - KEY_A: ;关卡增加
a k3 C& D( w6 I$ \ - LDA $04; }/ c2 }- N# ]( i$ h! U. \
- AND #$81 ;按键A或右加关) \, P2 A O$ M+ O9 P! k
- BEQ PPU_NUM_WRITE; G `3 a' \- W* a# T* B' H1 W
- LDA $6010
t. h- \ ~& q* I6 E7 [$ R4 W8 ?3 w - CMP #$04 ;关卡比较
; z0 L' G- p4 t4 D. M+ i% j0 u- p - BEQ PPU_NUM_WRITE
7 @$ q6 |0 f1 l& k( R3 L - INC $6010 ;加关
6 I- E7 h4 G' O0 c! {2 L5 S - PPU_NUM_WRITE:7 b0 Q9 n+ y0 @% I
- LDA $6010! d- x( A7 D5 t# \/ _9 |( F6 A; [
- TAX
4 Q1 @9 e% N$ }& [ - LDA STAGE_NUM,X ;写入数字- N/ d) b2 |$ v( f K7 Q) Y: [
- STA $2007, N& i4 G0 a1 t! F- l
- PPU_RTS:0 G$ Y6 _7 ~" f! R3 h2 g+ t) @9 K
- PLA; M, B, d1 L) P
- TAY
$ _9 |) c2 u. d$ m8 n X - PLA
" L7 @& m, i P1 [. h! D - TAX
2 w3 _: G* g6 A; i& q9 q/ t7 X0 E - PLA' d6 m" O) Z4 E3 B
- RTS
% F# h2 [ m; g2 C. r7 M& E -
& T2 d8 _5 |* J0 `! N' d, P7 b -
! N4 F& f" H; ?$ @6 T: T* I- g - STAGE_DATA: ;关卡文字S,T,A,G,E,字模数据
. i* N+ c4 l: N* j4 W6 P - .BYTE $EC,$ED,$DA,$E0,$DE,00
2 i! Z) j7 b6 G - STAGE_NUM: ;关卡数字1,2,3,4,5字模数据
/ R$ f. x% ~+ Y+ |) B! p% N" d - .BYTE $D1,$D2,$D3,$D4,$D5
5 h3 e# C4 O4 C1 }" ~% e - 7 G7 l e% F! C( i
- PPU_ADDR_DATA:
$ k: F1 p' U! v3 x c- O8 z$ n - .BYTE $23,$0C) I4 M8 s, o# s2 _
-
% Y/ J- `1 ~7 a" W3 [+ \
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|