|
|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑
& N6 k {6 R6 Z0 c8 A
+ H' Z1 n+ {1 f( H8 @' T[FC][忍者神龟3][END选关]
! V2 u# i. Q+ |9 Y
* t1 \8 ^6 w( n8 q* Q3 c8 g时间:2017.3.30( Y* O! x1 }/ S% [, e; I p
作者:FlameCyclone. G0 e, a* _$ q0 V" i
内容:
& y& c8 G7 a F6 ^( A 1.关卡选择: 标题时,左或B减,右或A加;
1 y6 ]3 T, R4 s, o& T 2.全屏击杀: 暂停后,按A键切换;0 Q4 W1 ^2 v1 j; p
3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0- p& ~# ^* Q7 O& I5 l5 W2 g7 G
- ora_data:
$ a. _0 x) O# j$ L+ C8 B - .BYTE $08,$04,$02,$01,$80,$40,$20,$10- `+ g( g( S0 i8 F- W7 r
- and_data:+ J7 R' [# K) U- u; @* b/ S! B! v+ [
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF( M8 n6 F9 S5 D6 j8 Q
-
3 l- b p8 w$ E; _ - button = $F8
- S) M" X1 K( o% c r. v, e; M - flag = $6000
% f6 H" I" n' Y$ \9 B3 @ - pause = $00451 C& r9 v$ z' o) N4 `" U
. L1 m0 _) `' W+ k }% j5 P4 w- + N9 `3 Z0 W: k( G6 M1 b
- .ORG $F90D
% ^4 g1 U' ]1 K" S9 ~ - JSR $FEC04 t2 X# r1 W2 x9 z
-
0 b; ]! r3 ?( f6 C2 E - .ORG $FEC0
% Z: B* d3 X( k% o/ K& x3 W! E6 _* R) N - STA $54,X
3 ]3 @" _ S" n7 ], n - STY $FA,X
$ b, p7 Z2 o- ]' ~/ U, ]2 E - PHA
' K# L' O) B/ P W. h; _ - TXA
9 K# [( P! c/ V0 W - PHA- F G5 S% t2 @2 |# I
- TYA
+ A, m2 `9 T: }4 U! I2 A - PHA
( A" k/ M- W! M - JSR KEY_OPERATE9 ], W' J7 \3 a0 y8 C
- JSR INV
9 W( y" C) Z$ W - JSR LIFE. E7 H6 x; g' Y1 G
- JSR BLOOD
6 x( x& H; U( P - PLA. z8 i0 z6 T3 }5 j9 e' ]0 L) z
- TAY0 y6 v% m- u u7 m/ ~' P/ I/ I J
- PLA
: [+ ~3 L( E1 ~7 [ - TAX& H" M6 a. p, x# c: x
- PLA
" q' h6 @$ ~5 Y" O - RTS
) D* ~7 F& _/ ]$ o- l - KEY_OPERATE:/ d: {: Y2 G/ F9 N+ J8 ~% ]
- data_protect:
- G p9 v+ Z3 ^4 u6 G, e - PHA
) K9 a( v4 B2 t5 A* V - TXA4 q- l* }5 `: D6 z5 {$ A5 R- b% c. |
- PHA, ]7 k3 k% b9 E; V; [3 q
- TYA! Y. K" o1 r3 A5 ^$ N; C' H; ^
- PHA% Q0 ^1 c& P5 x' J* _1 v
. s2 \6 `/ v( n" d, F; O$ ?# q- FLAG_CMP:
( p6 G5 k0 v. i% [ - LDA $600F8 p, {; v; |% W, q- w
- CMP #$7F ;标志数据初始化条件判断& P( }( Q# ^* S$ B; b9 W
- BEQ pause_cmp7 L# h8 {1 K( W' |3 [, h$ y+ y
- LDA #$80
1 b9 u! J' t& W& j% _ - STA $A001 ;6000-7FFF写入启用) J5 E+ W% ~3 U# S$ o
- LDA #$00
% N6 Q# H9 c- Q" O* D' T - STA $6000 ;数据初始化
8 H, a5 ^! o+ X( C# q; l - STA $6001 ;数据初始化
9 ?- a" m! @, j2 x5 c+ M8 M3 L - LDA #$7F
i# U0 [5 N6 L4 Z - STA $600F
! Z4 A* ~ t: n7 B - pause_cmp:
% F* l) Z/ k& a/ H - LDA pause
. X# {3 P) L- F5 q - CMP #$01# ^$ V3 E: m& B% X$ r( Q6 h
- BEQ button_press" _% r7 K2 J4 F' G8 }0 k, Q
- PLA
7 E# O$ [) g4 a- |9 b4 Y - TAY
. n0 k; z* r3 D) n - PLA% ]6 i1 s# Q$ j' ]8 \
- TAX
Y" W0 h$ ^7 n - PLA
; n% _" B# }4 u6 U - RTS3 T0 O# r7 \* ^, d2 z9 [8 J
1 n# p1 P G6 w' a2 _- button_press:
. g8 \) X5 n$ Z0 C, U5 W% J* F7 p - ini_Y:; I' ]: O* T8 W% M( b4 z" h3 F
- LDY #$00
! N' H# r4 d- _ - button_cmp:
) G# B8 u& a9 U8 { - LDA button,X
3 W; `' b' P: X) A+ n: M6 [/ X - CMP ora_data,Y# M( J j ^1 q" Z' z- I
- BNE count_Y_cmp
' i; u) h! \: U: H1 F - flag_cmp:% W& r; ?& O& `8 |( m8 g$ @5 q6 C
- LDA flag,X( k' {1 R- u+ g; g6 |
- AND ora_data,Y
) c" ]+ q9 `' B. p2 J, s - BNE flag_and
C/ U' b) W. g1 R5 l - flag_ora:- ~0 L! g/ L/ s3 O9 h8 N3 W8 i
- LDA flag,X$ M R8 g7 k, `8 A# c
- ORA ora_data,Y
+ y/ E$ [2 ^" r# Y3 X - STA flag,X% _8 t' A7 Z3 u; B+ `
- BNE count_Y_cmp
& K( l8 n3 ?/ s: Z, ^; Z - flag_and:
; t# L8 L% d9 T: R - LDA flag,X& [1 i+ v+ q! ^
- AND and_data,Y
1 d* L$ z0 G" j8 o4 r/ b3 O$ b - STA flag,X
% C; B0 Z! a% c: z - count_Y_cmp:8 d2 K* \8 z$ K' r% S% r
- INY. D: M4 G1 d- u. V
- CPY #$08
0 U0 E$ y! b2 @+ O - BCC button_cmp" V' Y- y1 P2 q/ B9 G
- 9 \9 p: L+ H! O4 X
- data_extract:
- N5 J7 B% r; e8 A/ j0 n3 D - PLA0 Q2 u; l$ X: _
- TAY
2 {; I: ]+ l, |0 @; i - PLA
- U+ A$ a+ D1 d3 ]& X - TAX
5 j" R5 \+ ]4 j8 Y% b; s- }; G2 j3 { - PLA8 x: d! b* r4 v8 [3 c' z q
-
: z, x7 c, R8 O - return:
: G: n+ L$ G1 `7 Z1 s% P - RTS
+ ^) _0 U* N. ?$ L1 t K -
8 h* l( N6 O1 |* W -
, n7 O1 s# i% o, Y- m3 j; J9 D7 ` - INV: ;无敌2 I3 d: E9 [- `& n. W
- LDA $6000,X
. _8 L# y. G1 \/ C$ _* x" N - AND #$08# `8 m& |" g4 z5 B$ N: @- b& i* z- ^
- BEQ INV_RTS7 S0 o% p0 F, G- I
- LDA #$05$ P8 ?# @% V( U C; @
- STA $04FF,X8 L* w; n7 ?) u$ W" t2 G. h
- INV_RTS:9 Y7 Y8 \- m1 E- [% l
- RTS
$ x6 Z: h# R1 A; X% t7 R- ?' v
- _- g3 Y I. E8 I7 F" E6 V-
3 M1 Y8 M4 \' D; y- t# L - LIFE: ;生命3 `7 R) H' |4 W& V# u. X: X' c9 j
- LDA $6000,X
3 r* Z, d) O) j# ^. w7 Y1 ^% p2 j% U - AND #$046 K7 t) }5 F) C' [9 [; S
- BEQ LIFE_RTS
5 w( p% f# W6 f$ r5 O, `) N2 @ - LDA #$091 s) F8 j- e( W+ A3 Q
- STA $6A,X
% i1 _& ?, B9 d. l2 t. l2 o" H - LIFE_RTS:
9 ] w* K1 B) q0 P& E! \/ @. q - RTS) J8 o: R7 H3 z# n M6 @+ U
- 0 Y5 z! X( p: v5 w
-
% X) V- D' @/ e* G. {6 A- _, @ - BLOOD: ;血量
: ^/ i: s4 |9 M* L - LDA $6000,X
5 U0 W' u1 i" o* Z1 z$ `: Z/ S - AND #$01
" [% R- w+ M( _6 ^8 F6 @ - BEQ BLOOD_RTS) c' V Z+ F6 r' V, N* x% N& ]0 n
- LDA #$7F
( U1 q7 B+ j- X, O q, d( ]; ~" o - STA $04F1,X! i3 n1 }7 Z9 Y, {; u* g( B
- BLOOD_RTS:' z3 a% T/ m" I) `0 X( j
- RTS( p" r9 J2 ] i2 g
-
9 y9 V1 G8 R: |7 U& d - ! {& R9 q( r$ W1 D
- . o, O9 ]/ q2 h# U5 T9 h) @7 W1 C
- & M; x; e- e/ a; Z0 L
- .ORG $D29F* c6 K& t% q. o4 _2 g9 @% @! r
- JSR $FF80) f5 I+ f$ j' p. |! z% Y9 b
- 6 N# h: W9 v0 B& t1 \9 ~% r8 Q, L
- .ORG $FF80% b4 P# M5 ?( [& y) W
- KILLBOSS_BY_ONE ;BOSS一击必杀1 B6 L& m5 H0 m1 O# C
- STA $0628
+ Q% T/ ^3 H3 n& \, `1 V8 G - PHA) G3 I/ j! h. M+ C* w" o1 k- l
- LDA $60001 B' B- @$ B4 S7 o! h
- AND #$40
* ?7 b5 j* W3 E4 ?, I" o; C4 [ - BEQ ADDRFF8E2 N* c& z! J* f
- PLA
/ G: U8 C4 a5 U1 h/ `' M5 j - CLC ;敌方死亡状态判定
1 F3 d( @2 B3 O1 Y) n$ Y, s+ [ - RTS+ S8 F X$ a% C0 D& ~1 E3 [2 o( n
- ADDRFF8E:1 l) M3 G( b% g4 \8 r* [
- PLA6 @; J. ~% e- S8 b
- RTS
2 d$ Z% z; X) p- ]$ F: D( j$ J
f2 N1 W' s& P8 c& W) y* r9 v- ) f& b2 D) y8 a' g0 ~ M- D
- .ORG $D1515 S) m# e) \' K$ N2 ]
- JMP $FFA0
; G, l# X. P7 |# x - , ~3 Q' C, X1 C
- .ORG $FFA0
1 ], G" c/ E. a# H" o+ F9 N - KILL_BY_ONE: ;杂兵一击必杀
+ E2 P: b9 V% g- n/ G - STA $0621,X
5 n5 s. p( k) M% U - LDA $6000& L2 K& E0 J0 M4 n, S8 u: [
- AND #$40
$ F0 z" k+ N5 Z/ l; y8 _. m! Z W - BEQ ADDRFFAD
( N9 i3 V* ~, | - JMP $D19A ;敌方死亡程序跳转
+ `" b" \1 y- l# S - ADDRFFAD:3 X& t, |" j5 ^8 O2 k- i! V4 s9 y
- JMP $D154
7 ]$ v0 M8 ^* b& }! p6 H8 Z I$ p4 u -
0 g: G4 E8 {5 G7 \4 o% g8 S -
! A, h) D' [$ g, y- B% _ - .ORG $A7F6
' j% \1 D" a, f - JSR $FFB0
% t/ g+ p/ v& F/ H, d - & s E O( G1 k+ \; e3 s; B
- .ORG $FFB0 ;全屏攻击
, m) t) L; X) a7 w* N# x6 P - PHA5 s: i. z1 v$ H8 y$ \
- LDA $6000/ S( c2 A+ \+ t4 g" L5 l3 \
- AND #$80
9 c: l: | q+ r2 I - BNE ADDRFFBD
4 U* H4 {: ^6 k, J - PLA
$ n, H' Q! m( f- Y - LDA $00151 I5 B5 b9 w) N' y5 U; n* {" B
- SEC
* {" l! M9 {. J$ C) V& D1 L7 r - RTS
8 k1 J, X+ Z& r1 ] - ADDRFFBD:
. V# w' ~3 z$ j - PLA# q8 I8 x T2 e. ]% d6 R
- JMP $A826
9 r" Y2 @4 q* n# [* G- f% a -
* G0 y/ f* c/ {/ S8 f7 i - ! ]6 L! Z. g3 @5 O
-
4 |& F% Y( ]) x2 C0 f - .ORG $AA6A: N" Z. z: U- i6 \- f. c0 Z5 _
- JMP $FFD0
9 n% m# T' j# I; v3 N! F Z - 3 t' M- O6 A A+ `) ], m3 V; p% a; R
- .ORG $FFD0 ;敌兵动作忽略
' c3 |, e0 B* d- |8 ^; l+ ~2 A - PHA1 L/ x, I4 m: y
- LDA $6000 J& s3 v4 _$ s
- AND #$80
/ |4 z( \# l. j. j6 I: [, R - BEQ ADDRFFDC
( _ \6 @. v( q1 ^+ B/ ~ - PLA8 C3 m1 U' R# Z1 N; J m
- JMP $AA72/ f8 ~( O0 ?. c2 A; _
- ADDRFFDC:5 e/ H7 x# p6 d; H) B+ S! @
- PLA
7 A% ^* b% L5 N+ O; A, h0 _( q5 | - LDA $0629,X
, G1 [8 c! C* v8 t& J# X+ _6 j - JMP $AA6D
# a0 V( e; }4 \8 ~% ] - 3 w' S: E6 |3 b+ g7 I# G
- ;[FC][忍者神龟3代标题选关程序]* A) X3 u5 c. x5 }
- ;作者:FlameCyclone 2017.4.1 J" i. }: |, Q/ w i* S) M) w# d% M
- ! m( r" t/ h6 R3 ?4 ]5 q2 d
1 c* r* _ s7 X' c& U% Z0 ^1 m- k- ;配置数据. q+ v1 s6 a2 i( E4 z2 X/ {
- KEY_ADDR = $F8 ;按键地址
; f7 ~' } F- t7 n$ k - STAGE_TEMP = $6010 ;关卡临时地址
) Y% M& t% X. L - STAGE_MAX = $0E ;最大关卡数+ N* X: k& `1 w% X O+ Z) D1 L
- TITLE_A = $20 ;标题条件A
. k4 a. o; L) k0 g9 \1 \5 Y: Y$ D$ L' \$ d - TITLE_A_ON = $02 ;标题条件A有效状态判定
6 L+ |( `+ i- { E0 F - TITLE_B = $21 ;标题条件B6 B- k2 w; t% W! L$ ] c0 e& J
- TITLE_B_ON = $03 ;标题条件B有效状态判定* ], t0 b2 b) x! o
- PPU_END = $FF ;PPU结束符
2 L7 ^: Q" [. a2 h" g - TIME_LAY = $4A ;标题显示延时地址" U8 v8 x: q J0 o; Y$ E
- BUTTON_DEC = $42 ;关卡减少按键
! h5 V# L- T7 y8 Q - BUTTON_INC = $81 ;关卡增加按键
4 C+ g1 _- M' _ K: ]* S' l R - NUMBER_A = $06 ;数字A距离STAGE偏移量
" W0 U- p: \! U7 `' Q - NUMBER_B = $08 ;数字B距离STAGE偏移量' Z- i- Y C L# Z
- PPU_ADDR_H = $23 ;STAGE写入地址高位
, H' x! z6 V0 M K# m - PPU_ADDR_L = $8C ;STAGE写入地址低位% `. \6 M/ T6 `1 x( F F' `& }
- CHAR_S = $A2 ;字符'S'* k% b& m7 c. M; z3 a6 i9 C1 k
- CHAR_T = $A3 ;字符'T'( X5 ^+ h* F7 x1 `. e0 ?" i: H
- CHAR_A = $90 ;字符'A'4 \3 f( I" h0 U+ l; p+ |' F1 k' a
- CHAR_G = $96 ;字符'G'' O0 ~: a5 t2 \& R& {! d
- CHAR_E = $94 ;字符'E': G. R( a, q/ m/ M
- CHAR_SPA = $00 ;字符空格
' M& b$ D1 O5 `0 H - CHAR_LIN = $AE ;字符'-'
7 g& T" F7 T9 F8 ^ - CHAR_O = $9E ;字符'o' r' w7 H5 v: x: h6 x. g1 U
- NUM_1 = $81 ;数字'1'# Y8 j1 z/ ~- i$ b9 p) s
- NUM_2 = $82 ;数字'2'' p4 u& l- [: t& Q3 F4 V* h8 |
- NUM_3 = $83 ;数字'3'9 d) r" V, m" ~6 R/ K: C4 s
- NUM_4 = $84 ;数字'4'8 c& b5 Q: G3 `
- NUM_5 = $85 ;数字'5': |( W+ V1 @ M/ |
- NUM_6 = $86 ;数字'6'
* e$ b- v8 q" E M, D; U( \( J - NUM_7 = $87 ;数字'7'
1 T2 J! h! n7 r8 A( T - NUM_8 = $88 ;数字'8'- x. d8 }1 p4 @0 \! A5 l
- NUM_9 = $89 ;数字'9'! M0 q& V" _# E m/ ?% A
- NUM_0 = $80 ;数字'0'# } l1 G: o( N: B, \9 X1 o, V/ w
6 O& t- ]2 ]+ z% }/ \- .ORG $F82A
2 S6 p: |( W; R1 u+ ^* q - JSR $E700% G8 Y2 s) o' z" _; ~5 W9 ?
- 8 @" w! H: L; E @3 U( p
-
6 G0 y+ R+ X' E/ b) V - .ORG $E700
( L& m6 R! f9 I3 `$ ~! z -
7 S0 d) O: \' c) o9 I4 q - STY $4014 ;补上覆盖的精灵写入指令
# R$ J$ ]% X% g7 w - PROTECT_DATA: ;数据保护7 s* ~! g, s( h( ]4 K
- PHA ;数据保护开始& {( K3 _5 I+ y" K
- TXA
$ L* o4 ?4 P# S - PHA
/ U# Y( K- E* K) b4 j - TYA
1 G$ k1 Q! D2 b0 B8 a. J8 ?$ m - PHA ;数据保护结束+ ~+ z' [5 b% B. s0 \9 Q
- LDA TITLE_A$ t8 R- e6 X( }& T+ i. v: ]9 a& v! ?
- CMP #TITLE_A_ON ;比较是否为标题画面
( O9 d! B3 m9 P; r: n7 q( A - BNE RET/ A' n3 ~ g+ R2 i ]
- LDA TITLE_B9 I: D1 y7 Z( O3 E: w5 {5 C; {
- CMP #TITLE_B_ON ;比较是否为标题画面
7 I' f' O( O# y2 b( C - BEQ PPU_STAGE5 c' K. e/ Z9 K& }9 L+ l
- RET: ;恢复数据
% J1 Q' Q1 E7 x, D. Q - PLA ;恢复数据开始
1 C! ?1 h# q3 M- B - TAY; O9 m9 }* O9 N& ~5 J4 j& E' x
- PLA5 [, f( K* w3 M, F
- TAX
) o4 I3 Q5 Q7 N4 M n* ^+ a - PLA ;恢复数据结束
: H2 n: w% A$ n - RTS ;返回
8 {9 _5 K z/ z7 E& e0 E - PPU_STAGE: ;字符STAGE写入程序
( `* z" x) r( Y/ m, S% A" V - LDA #PPU_ADDR_H 6 N) `7 D5 H+ d) @* O3 J6 V" Y, A
- STA $2006 ;设置PPU字符写入高位地址& M5 _; I# i* \5 Y3 T% K/ U" W
- LDA #PPU_ADDR_L8 ^) F9 {: ^ h! ~& Q) q
- STA $2006 ;设置PPU字符写入低位地址
. Z8 ?8 X; V0 f/ o4 p - LDX #$00
. y7 m5 S# t; c8 K" ` - PPU_STAGE_WROTE: ;写入STAGE字模
+ P: @) x+ ~* D; V - LDA STAGE_DATA,X8 K/ e: t2 y6 J0 E7 r
- CMP #PPU_END ;判断是否写入结束
' @0 E! l& \7 j/ g: T8 W - BEQ STAGE_CMP
! D3 a7 B8 p9 w5 O9 J$ [" \ - STA $2007: V) ]- R) j6 z! [9 o) |) D
- INX& u1 u5 u; w9 Y+ [. _+ U f
- BCC PPU_STAGE_WROTE
- {6 A8 B2 s7 E5 U- A( i - STAGE_CMP: ;选关操作, h& B7 y5 ~: A" X3 |- T
- LDA STAGE_TEMP
3 ?$ t! j( ^ }$ ]3 K" L Q* [ - CMP #$FF ;关卡数据初始化条件判断
5 [4 E- t9 I0 o' L) W+ z - BNE KEY_B& ]( `* ]6 J! f& _
- LDA #$00 T! R( w* i: a. m' p6 ~" f
- STA STAGE_TEMP ;关卡数据初始化
$ u# l8 A- P5 I' ]8 S5 y+ H! I - KEY_B: ;关卡减少
2 R* Z& s# }- w/ V2 M/ H D - LDA KEY_ADDR! N) V5 \9 d1 y0 O9 \% x
- AND #BUTTON_DEC ;按键B或左减关. u0 z! e' b6 a
- BEQ KEY_A9 P5 U3 N' ~0 u8 m
- LDA #$FF
6 z/ z4 h3 U3 O) N6 L$ ] - STA TIME_LAY ;重设标题延时! b! |- M6 x5 y* _5 X! }$ I: G: U
- LDA STAGE_TEMP
) I( d3 V, x: r% j - CMP #$00 ;关卡比较
+ S3 B9 C) C, ^6 b - BEQ KEY_A) N* I7 F$ W m+ j5 h2 _# k* L
- DEC STAGE_TEMP ;减关
. E7 ^& P$ a6 w) o - JSR MUSIC ;按键音效
* M/ P( p1 s" x4 I - KEY_A: ;关卡增加4 G; S. l9 }/ P
- LDA KEY_ADDR
7 f. C* L9 W- P. W9 s/ T - AND #BUTTON_INC ;按键A或右加关3 H: m+ A, b1 k
- BEQ PPU_NUM_WRITE
, P T0 l& R+ `2 L - LDA #$FF0 W. |" R% G7 A x2 R# w7 n7 }
- STA TIME_LAY ;重设标题延时
' U) T# L" [2 z' l3 ` - LDA STAGE_TEMP
/ {+ n/ o0 F" J - CMP #STAGE_MAX ;关卡比较2 _% h- f0 n. k# Y
- BEQ PPU_NUM_WRITE. V* u% y E5 V
- INC STAGE_TEMP ;加关
A8 u3 j& j Z$ g/ \ - JSR MUSIC ;按键音效
3 G% B" e p2 b - PPU_NUM_WRITE: ;关卡数字写入地址, ]0 u, C9 q; M" k' C
- LDA #PPU_ADDR_H
$ R5 ]* N& P2 d9 n0 ?4 s# u - STA $2006 ;设置PPU数字写入高位地址
+ h& ^+ }% Q$ k4 S% p: } - LDA #PPU_ADDR_L
, k7 O( o B5 W2 x: L. v - CLC# q0 V: p: E; _
- ADC #NUMBER_A
# X" g0 D+ y% B. ~0 Y) V - STA $2006 ;设置PPU字符写入低位地址
% d8 N' W9 I- N0 v% L - LDA STAGE_TEMP ]& f+ I, v8 q, _7 P
- TAX
8 W/ I( k1 n* ~ - LDA STAGE_D1,X ;写入数字; v+ a# \% ?3 ^; X* D/ d
- STA $20071 q: `* }6 U" m' h2 _) R
- LDA #PPU_ADDR_H- E! i; u$ f. ?' y8 H& l
- STA $2006 ;设置PPU数字写入高位地址
% a9 l, j \3 E0 N, y# { - LDA #PPU_ADDR_L ~6 p f8 G; K4 W6 n8 y$ C2 v9 n; C0 P
- CLC/ [! I. w" Z6 T7 D
- ADC #NUMBER_B
6 _# O9 m5 ~' h6 l" }3 e - STA $2006 ;设置PPU字符写入低位地址
6 T# ]7 g( M6 @) p; W - LDA STAGE_TEMP- Z4 ?7 U# f/ u- Z0 a
- TAX" ]) t2 i! t, b' x: L: x, a7 u
- LDA STAGE_D2,X ;写入数字8 _* q/ k( g6 ]5 }
- STA $2007
* V: D6 ]7 b4 D. _$ d - STAHE_WRITE:
3 R! V) Y; M0 C8 k/ g - LDA STAGE_TEMP$ Z# u$ |6 ^+ |" f, F
- STA $2D ;初始关卡写入4 j+ f% s3 Z' j
- PPU_RTS: ;恢复数据
- t' s& m: \7 U( \8 X# p6 c! b - PLA3 a2 o- I! Y. W9 x8 G3 f6 P
- TAY
( L5 z0 l- M$ c# S) N7 E - PLA
7 s- X4 U9 R/ G# p - TAX
[9 ?4 F2 E( x/ I8 R: D' p% H - PLA
" ?' ~2 g" p1 E8 K+ ? N% c - RTS W+ s. x: n8 M# A2 O
- . z- [) O0 I L4 \6 L7 j
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据% [4 ^& j: }) G9 q4 v; ^8 k
- .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
7 \" V1 r! D3 B2 W+ K; _
( `+ t& W3 {' A- STAGE_D1: ;关卡数字5 ?- [( I" G$ [4 l1 }6 f$ M! Y
- .BYTE NUM_1,NUM_2,NUM_2,NUM_3,NUM_4,NUM_4,NUM_5,NUM_5,NUM_6,NUM_6,NUM_7,NUM_7,NUM_8,NUM_8,NUM_8
3 t S2 O0 w4 Y6 ~4 K3 h" @) ?
* Z+ g. w& j; R( ?+ T! \- STAGE_D2: ;场景数字
3 f( U: a9 h& t9 }: j( e - .BYTE NUM_1,NUM_1,NUM_2,NUM_1,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_37 }9 h+ `$ f" y! Q$ R; T4 p3 m! K) L
-
2 ^% w. g( ~! l' ~ - / r7 q# ?) t; Q3 [* B7 S9 ]4 W
- MUSIC: ;按键音效
: L& @# T. r4 s3 C4 `2 U$ U - LDA #$3B ;音乐号
% S2 M/ v$ T0 J1 V& x. G - JSR $919E ;系统音乐调用% F. w- |! Z4 P: D0 [) ?- }
- RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;
- X: d: d+ B: H2 n# ]1 H' w3 v 5.生命加满: 暂停后,按下键切换;' E, Q Z* u( f
6.血量锁满: 暂停后,按右键切换;
! O! f9 v" ^: Q) z" e" y0 o5 B
- G4 p$ q0 s2 D% v% S5 ?7 M/ T
4 m, I- i' n& k$ B. Q# _8 x & F# v3 p4 u' a5 w" @
. ^) z3 f& Y @9 j3 l
) S5 I6 A' A# t- a4 o* s& n: x: U. uFlameCyclone.ys168.com! D* X' p" H6 ?7 I6 \
www.nesbbs.com9 t9 a+ _7 X: w' p0 v* O! x
9 I: R% L5 V, } |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
1
查看全部评分
-
|