|
|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑 ( @7 O1 ?) W. _( ~0 Q+ R& a( p
) y; F$ d% z6 [- {: V M9 n. |[FC][忍者神龟3][END选关]& S5 c; A. w, \6 K" G2 O7 _
! T. q, h6 ], \7 i时间:2017.3.30/ R7 Y8 |1 E, T6 z. l2 Z( H4 ?
作者:FlameCyclone @9 ~( w# ~2 ?9 M4 M" c, y4 a6 U$ K
内容:0 K5 x8 R `( W L
1.关卡选择: 标题时,左或B减,右或A加;1 H$ {( `: S+ d c) n# x
2.全屏击杀: 暂停后,按A键切换;1 {" m q$ z! B
3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0
; y, r1 R1 r! z6 ` - ora_data:
" j/ c' Q" e/ v# V" q7 k: k( X - .BYTE $08,$04,$02,$01,$80,$40,$20,$106 i7 S) D: @. ^" h
- and_data:
$ ]! Z1 P! d5 k7 ]$ { - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF; ]! x7 `" P2 y7 L: ^. w
- & Q+ t" a) ]) [6 a! Y4 T
- button = $F8
9 H8 S. d8 a4 `: ` - flag = $6000
, h! u- s4 {7 W4 P+ } - pause = $0045
1 Z$ L- r2 ~ C) @) d9 X, _
4 W3 f! q0 y4 P/ c1 a0 ^- # F& P* x" s8 M; M. ^; F0 Z
- .ORG $F90D
7 S( b* f5 J- j - JSR $FEC0
) E" M& T" _( d$ w5 Y2 I0 b7 x - ' n+ _1 M( ]& B. l- D9 W
- .ORG $FEC09 x" ?" \& k$ ]* l' Q
- STA $54,X- J& V! f4 t) r# T* [
- STY $FA,X; M" X+ u- Z+ i# t
- PHA
d) t, N" \/ v/ F3 | - TXA O2 w6 R* w, t' }) j G0 T
- PHA" K6 k- Q4 W) H7 p) C$ w0 P
- TYA
+ ~/ w- g0 k& t. {7 s - PHA
6 B" c. m, n' }( I' Y$ C8 H2 P! i1 K - JSR KEY_OPERATE6 C9 }/ m; X; J3 {
- JSR INV/ g8 a, b7 e. G6 _5 e1 {
- JSR LIFE
& g; i6 A( B0 A: Y" p - JSR BLOOD, y. W8 L' M& D1 x- D9 }$ p
- PLA
. I6 g$ e1 f; V$ d+ c/ T - TAY: K# s& z0 `; W b
- PLA' j+ v$ O5 m0 Q: f: z3 z0 u
- TAX0 {5 ?+ h) A. r3 A9 s( P
- PLA
0 n1 D! D. \5 R# q: | - RTS8 R9 U# i+ ?0 |+ R7 V! `; y
- KEY_OPERATE:
5 ^ N/ ] j* M - data_protect:
- v3 O- o7 M. z5 U+ | - PHA4 j a+ i# O' x/ T8 B0 _
- TXA5 z3 G( h* G2 \; f
- PHA
0 ~2 j/ X3 M4 C' b2 Q, w - TYA
q- ?, d- q" w* i1 q, f! b2 { - PHA# w& c" [" h9 x- Z
! r+ c4 p& }5 C5 P3 k! M- FLAG_CMP:: p9 W+ V- `! ]3 c2 X4 j5 @
- LDA $600F" b4 T2 J0 k7 E/ m) @% m* B9 R
- CMP #$7F ;标志数据初始化条件判断
3 w3 V$ S, J; X" |* E - BEQ pause_cmp
/ D# S1 f+ g9 H* L/ q' t - LDA #$80
8 O+ H; u1 V2 r9 e# f. f, V - STA $A001 ;6000-7FFF写入启用
3 b) C0 o- x7 Z# C- e$ `9 ?1 b8 x! }) O - LDA #$00
+ P7 H; B" S+ [7 Q" G; Z1 s - STA $6000 ;数据初始化
* O4 V8 `( q* X; s6 U& ]" b6 | - STA $6001 ;数据初始化
$ t0 L" \- e/ ^9 H) A - LDA #$7F" I1 S/ J& C* l
- STA $600F+ @7 S( k8 O. A
- pause_cmp:9 A% V* c* P( K. d+ v( {
- LDA pause
& d5 H) @4 }) u& f! T0 D5 y - CMP #$01+ [" O2 S" a+ ` f) X7 r
- BEQ button_press6 }+ m8 o6 A* n2 S6 }. E; |2 V
- PLA) M! h4 b) G& Y$ I
- TAY" T, _* F* e: J+ v
- PLA
% n" `( y, e5 [( {$ m% C7 B. }: p/ y - TAX
6 ]5 D3 X( }7 }7 o" G) ] - PLA; G* _8 u0 O" N+ p9 f7 o# ^
- RTS. S. x y9 m7 r* r" i0 n* q; g0 P
$ _- h4 Q4 `( v. [& P3 C; t- button_press:, q. ~+ K( ] N7 M6 E q
- ini_Y:8 u4 n- { S2 K8 _& Y, x
- LDY #$00 C; s/ D8 `" N6 G+ U1 }0 U
- button_cmp:1 M6 S) q; a/ ?( Y9 ] D
- LDA button,X
% } }& o% s. Y- [' e5 {8 B - CMP ora_data,Y4 d2 K# v. s. z; C' w/ u9 b8 W
- BNE count_Y_cmp6 H) o+ S9 l+ x% P, c1 U
- flag_cmp:
9 Z7 X R0 P; p - LDA flag,X- K% n, j) b" ^# K3 P; C$ l' i8 g* m
- AND ora_data,Y
- v' Z: `9 k4 a8 I2 ]0 y - BNE flag_and0 F$ Y8 P0 X- |! f' }* Z) _. d
- flag_ora:
$ _# K& [) d5 g$ }. D# B8 z - LDA flag,X
! J. j- }: p+ w$ A( [% i F/ Y - ORA ora_data,Y# [: Q6 F5 y/ M) Q& V) p1 A5 p
- STA flag,X6 C1 h& A2 A8 P1 A' h
- BNE count_Y_cmp3 [' M+ ?3 ~4 P$ T6 b
- flag_and:( T3 U% |; o9 B4 B$ o
- LDA flag,X
4 \1 f( m x2 ?( U1 ]; p& l - AND and_data,Y& k3 P r7 R+ M3 A- @$ L* g0 E* o
- STA flag,X0 s& E+ u J1 i7 q; g$ d* C# M
- count_Y_cmp:7 M- V/ W: F; a5 V. v% i- I! \' @1 S2 f
- INY
6 X! ]1 @+ [6 h$ g4 o- @ - CPY #$08
! Z4 ~$ |3 H4 ]- @ - BCC button_cmp- e( c# J. _% ]. ~% Q9 G
- ! R7 ?0 m4 D3 R
- data_extract:
2 |4 t7 f0 W+ t" \4 L+ @ - PLA
. g' H8 k: P8 y4 l - TAY
$ R. y! N% q! z' s; q$ t - PLA
- x5 w$ N/ X4 m2 N - TAX: d, t; p1 _- ?$ v8 l/ _
- PLA
# X, V2 B: V/ R/ S4 `0 N - - Z2 e) B1 F5 M. y: J% X
- return:
1 _9 X3 \" @& b, d - RTS
2 D) E* @ o( m0 c6 a, b - % W6 u' v; G! e7 K6 c+ f! U
-
2 Z; ?2 k R" h, \ I+ \ - INV: ;无敌
! @- S7 V( N2 r; g - LDA $6000,X
! y9 u$ } I/ t" _* U; A$ [7 A - AND #$08
. u. j9 H7 k& f - BEQ INV_RTS
" k# Z- A- c7 `# ]$ o# ~( D* Y - LDA #$05
3 f l7 N8 F: X" c - STA $04FF,X8 Y% \/ q2 N1 ?7 F! ]
- INV_RTS:/ {/ T3 M) p" ?
- RTS3 t: B [9 O0 l' J0 l4 [# @1 Q
! n9 t$ N: \8 Y( Q5 V$ s* j1 w-
( p: m [* G+ L, O# G - LIFE: ;生命
% W1 P7 J- B) [. `5 n; P - LDA $6000,X
3 w0 u" `4 C' N5 e9 \" k0 e - AND #$04
- D8 X' I$ A: L+ i4 g! g - BEQ LIFE_RTS7 C( r/ A* k7 i- ?) d3 K- v
- LDA #$09
" z E# N: T4 _3 \* u - STA $6A,X9 Y7 H; h2 C5 A* ~3 ^
- LIFE_RTS:$ [5 r1 N/ U$ T1 I9 e$ |; K
- RTS
0 @; L! ]$ ^/ j3 r$ G
4 ~2 T9 T% X0 ?; d2 T% d- ( [" E& V( E9 ?( u# C H$ W
- BLOOD: ;血量
, q, p9 C4 s% |2 T/ V1 G8 J - LDA $6000,X
' J& z" \, E7 Y* m! g% Y/ x - AND #$01
7 B" ?! k3 G) c - BEQ BLOOD_RTS
. h( {& h; B6 q - LDA #$7F$ `6 e9 k* C* m* C5 L. ?
- STA $04F1,X2 N/ M1 @# ^1 s( f) s
- BLOOD_RTS:; R+ k9 S) C* f$ `! r
- RTS9 q& n- f7 C' q) d! Y3 X0 V
- " q$ }& C0 ]2 w/ A( ?
-
R# }1 q' e) z) H, T0 r" K0 L -
. x" U2 H5 w: f0 q! [5 { - 5 s# L6 |( R2 y
- .ORG $D29F
d* `' z- S+ B" e( ~ - JSR $FF80+ V- z M: o3 C. O( v; Y6 _
-
* `6 g) e: Y9 |& q$ w+ [" @3 l0 Y$ j8 t; o - .ORG $FF80/ k" E" C9 F% f) n5 a/ g7 x
- KILLBOSS_BY_ONE ;BOSS一击必杀
3 `, B5 d" a$ U7 y+ w - STA $06282 `- y7 ^$ F8 q& Z( T7 h: x
- PHA" W) z3 T6 L" ?7 o4 w
- LDA $6000
% \7 t4 g- \' M/ H& i6 \4 J' ` - AND #$40
+ y7 @+ a% ~! B: K/ _ - BEQ ADDRFF8E! q+ q5 N4 J6 f3 ]0 f
- PLA8 _8 [1 [3 S8 h/ {6 p
- CLC ;敌方死亡状态判定5 V) c( [: m: v% T3 r8 Z
- RTS
3 o8 T1 J( h. J# _ - ADDRFF8E:
7 s. o& w$ f+ U6 _- g% H: W! d - PLA
6 h# a3 X& @1 _ - RTS7 v: D- Q4 e0 D2 G' d
, S; b x }, Q+ C' K8 ?
( ^7 z( k6 ?3 ?* x/ ~- .ORG $D151
$ b4 P. ?5 l( w% u4 R/ {1 Z: l - JMP $FFA05 B$ v/ c+ M' F* C i, c
-
( F/ j$ h" l( o; ] - .ORG $FFA0
) n( ]; \: Y6 e- s& Q3 F - KILL_BY_ONE: ;杂兵一击必杀
" d* b ^! B8 f/ _3 F! L" O: H - STA $0621,X
' u7 D% D: ?0 A9 T - LDA $6000% i4 s e8 M4 a5 s
- AND #$40/ U" B0 J1 }8 o% S, A, J# h
- BEQ ADDRFFAD
) @! p$ } H4 m- x% w4 Q" I - JMP $D19A ;敌方死亡程序跳转3 X1 Z2 m0 f5 a4 O1 e! B/ l: {, j0 l( s
- ADDRFFAD:! G+ G: B! l9 z- y/ I( t6 ?' I
- JMP $D1540 | s$ x7 ?' z! R [& }0 T
-
/ u7 X8 b. x/ F% @$ F* D& [2 M - % d7 K5 H. v& M& Q; W$ W/ g
- .ORG $A7F6
! N% _, ^# }5 A; o5 W" X/ | - JSR $FFB0
' ?( z* B' _* r% s -
2 W& i6 b% S9 ?9 h - .ORG $FFB0 ;全屏攻击+ N: d: V' x2 \" I& s1 O5 M
- PHA
- B I+ ]3 f$ H- i - LDA $6000
5 h, W' R- [* ]9 Z' B& h& C1 y - AND #$80
7 C$ `4 U( ^% P/ y9 Q; V$ f - BNE ADDRFFBD" P R. @$ n, S! R# B8 i
- PLA
' r& @/ a+ v5 t% m _ - LDA $0015
. Q# r! M/ H. S' }/ G - SEC( Y& v. I' s+ f+ f2 q7 W* s. Q
- RTS
9 C) x7 f& [4 D! c* L- U - ADDRFFBD:+ g" ]0 ^% d+ {! Z/ R7 P' X8 g0 y
- PLA
6 G/ Q8 Y0 ?6 j; | - JMP $A826
( ]3 F1 `7 Z$ o4 Y0 W9 z* r -
8 Y0 z0 L$ H5 b# Y# e -
- w9 r A0 m. G6 k6 D5 T: L" [1 Y - & y* T$ S# n# L, M- p2 C5 r
- .ORG $AA6A
4 G' o W0 E. ~% c - JMP $FFD0( a) ]) H" j8 I% r, Q
-
4 F1 ]- O4 o* G3 U - .ORG $FFD0 ;敌兵动作忽略
( Z9 x! P9 f) E) d$ U - PHA
4 `& P; @5 H J5 c' m! R3 b1 P - LDA $6000
$ H+ Z3 z- _9 V6 X4 s/ a# q. y - AND #$80
4 @( r7 f1 \/ m! w9 d8 I2 F - BEQ ADDRFFDC
$ Y* \9 P, }; a% A: c - PLA
+ N4 }$ B2 I, v* X2 h3 P4 W - JMP $AA72+ I: L- a4 [* x& I( G! \/ R% Q9 U
- ADDRFFDC:
, r+ `: ~* ~$ Y$ C5 j) p* J7 T - PLA0 |$ `# y) S# a
- LDA $0629,X
) r# h2 q# E! _6 n8 M+ M - JMP $AA6D& x2 r: |) T7 b7 D9 S
4 G2 d3 M( Z$ W! N. Y) f- ;[FC][忍者神龟3代标题选关程序]
0 `7 H; @& I+ M/ z - ;作者:FlameCyclone 2017.4.19 J" I9 s1 t ~% l
- 8 b+ B( j) H# e; i8 R
- & F& s. F( Y& y' E3 D- W! w/ k
- ;配置数据
$ u$ d) a! u: g9 D$ C7 e0 ? - KEY_ADDR = $F8 ;按键地址
6 G& c( Q' h: [( @ - STAGE_TEMP = $6010 ;关卡临时地址
6 p9 f& P) r; D; _8 H - STAGE_MAX = $0E ;最大关卡数9 O* X2 H" y" |6 r, a
- TITLE_A = $20 ;标题条件A5 D7 o$ {- V* B4 D$ @% s. i$ G) H* d
- TITLE_A_ON = $02 ;标题条件A有效状态判定7 [) K2 U- J* G
- TITLE_B = $21 ;标题条件B, M0 U# j7 g9 ]. y& | r- y
- TITLE_B_ON = $03 ;标题条件B有效状态判定7 v) X4 T4 D1 P: h* ~
- PPU_END = $FF ;PPU结束符; V5 h" f# T m6 C
- TIME_LAY = $4A ;标题显示延时地址% J/ Q' b t7 o4 D8 }, w5 K
- BUTTON_DEC = $42 ;关卡减少按键
0 E4 j; y4 G* G5 i# ]7 [' w3 S( Q - BUTTON_INC = $81 ;关卡增加按键8 d1 g1 ^0 O2 g; {% M: p' y
- NUMBER_A = $06 ;数字A距离STAGE偏移量% I5 `" A# w+ `% r
- NUMBER_B = $08 ;数字B距离STAGE偏移量5 _% M' G' T5 P- x
- PPU_ADDR_H = $23 ;STAGE写入地址高位
) G$ D& T, W! }2 ^+ } - PPU_ADDR_L = $8C ;STAGE写入地址低位
$ X7 G: K# i: c1 F" Y - CHAR_S = $A2 ;字符'S'. I3 f7 ~" L f: Z; H6 t- L; y: t8 F
- CHAR_T = $A3 ;字符'T'
8 A! W" X4 M4 ~ - CHAR_A = $90 ;字符'A'+ p: r' M6 L w) H/ }" S, ~
- CHAR_G = $96 ;字符'G'
5 I Q* k' b% Y7 N - CHAR_E = $94 ;字符'E'' k3 o& n6 V2 b
- CHAR_SPA = $00 ;字符空格# d, a" C3 C+ m0 F
- CHAR_LIN = $AE ;字符'-'
* Y+ u- M; v- F' L9 i( Z3 q- y/ [' Y - CHAR_O = $9E ;字符'o': U" \6 b8 ?, T- p' f% I' v9 n) c
- NUM_1 = $81 ;数字'1'
+ N0 p7 I5 y& u* r* _: F - NUM_2 = $82 ;数字'2'
% `3 l2 J9 r% P7 j - NUM_3 = $83 ;数字'3'
4 A8 M" O0 i- Q& N. Y( i; u. V - NUM_4 = $84 ;数字'4'' c% n& j" j* t* O1 z$ i$ |1 a% `2 r
- NUM_5 = $85 ;数字'5'/ g! l& s# N; Q( c( Z
- NUM_6 = $86 ;数字'6'2 C5 q I; b) t6 m
- NUM_7 = $87 ;数字'7'8 {8 F, Y7 k. V# x2 n& R
- NUM_8 = $88 ;数字'8'4 z+ H8 _+ e* n: j( `! J/ h' j& f
- NUM_9 = $89 ;数字'9'
' ?. _# L% T4 C& H/ R6 E4 I3 N - NUM_0 = $80 ;数字'0'4 J0 V; P! D3 |3 u: T
F) {3 O7 d) q! J; ^- .ORG $F82A
- j! M& v' x9 n6 k - JSR $E700
& w' e+ F; \/ D+ |8 V) P - + l( I Y |1 N& [" o3 [! K1 Z
-
* j) G" p& M. J! o - .ORG $E700* d, G' P# K7 W* p3 k! Y3 u
- 5 t7 i5 K9 ~1 H$ w
- STY $4014 ;补上覆盖的精灵写入指令
- Y- o% B* }, @) d% X* ^ - PROTECT_DATA: ;数据保护3 ~! l- u) \, X+ y
- PHA ;数据保护开始
Z# z0 m" S& w# f; P! v$ [ - TXA
- G) L2 _4 r9 w# v- H8 m W - PHA* P! b9 P n$ z6 ]: k' J# W" Y
- TYA/ d" }9 q$ q. j. {
- PHA ;数据保护结束 b7 ] Q( b: R5 I! R
- LDA TITLE_A
4 R8 j# h3 O' g/ G9 S8 @% J - CMP #TITLE_A_ON ;比较是否为标题画面+ l2 v" K% o8 v7 J5 y
- BNE RET' Z8 D' w( T4 L7 K! l
- LDA TITLE_B
; A0 v$ S+ `" ?3 ^6 }+ e! \ - CMP #TITLE_B_ON ;比较是否为标题画面$ t6 _' x# p9 q' p& U* j
- BEQ PPU_STAGE) m) Q$ V- b9 o U
- RET: ;恢复数据. L! L. P% s5 v: O2 o3 m5 j
- PLA ;恢复数据开始
6 I7 o2 J$ Y! S% ]' f - TAY; ?$ J% r4 W8 u; F, J
- PLA# P4 Y U) _0 Q3 u: ?
- TAX' B* P% E. V1 Z# }( q: }1 t
- PLA ;恢复数据结束, y% x, P$ U3 `5 r* _, R. ]1 H
- RTS ;返回6 d Q; e/ S, ?% ]
- PPU_STAGE: ;字符STAGE写入程序! a7 ]. X! B# s. ?
- LDA #PPU_ADDR_H
1 B2 \, f: N8 q; s0 M7 ~ - STA $2006 ;设置PPU字符写入高位地址
/ U" o* l; |" D. K7 M - LDA #PPU_ADDR_L
% a, `3 N4 K7 c - STA $2006 ;设置PPU字符写入低位地址& a, f+ Y: x1 b+ ?/ S* E
- LDX #$005 @+ ]. M# H, L; m ~# |8 v# }) J
- PPU_STAGE_WROTE: ;写入STAGE字模; j( k( U: B7 Q: }/ v
- LDA STAGE_DATA,X
9 `7 M% c" r: I8 ^* o - CMP #PPU_END ;判断是否写入结束
1 b- J4 _$ z4 Y- B/ d - BEQ STAGE_CMP
* \9 m* c8 Z5 W# t7 v - STA $20073 ^/ A+ m2 A- O. v
- INX. o" k5 A! C8 R6 F+ I
- BCC PPU_STAGE_WROTE9 X: g7 m; m+ A/ p9 ~7 e: s
- STAGE_CMP: ;选关操作" R) c# Q5 n# Z
- LDA STAGE_TEMP
& t9 I; A0 ^$ }9 J. ?8 Q - CMP #$FF ;关卡数据初始化条件判断" }. V) O4 D2 L* C! y) X
- BNE KEY_B
9 k$ H1 m' {; T) a; t+ ] - LDA #$003 n, v+ Q* `( C
- STA STAGE_TEMP ;关卡数据初始化
- c3 D! e7 h9 Y* @6 [1 R - KEY_B: ;关卡减少( x9 n6 M' E, X* V
- LDA KEY_ADDR5 `; Y0 u7 w2 C. |$ y
- AND #BUTTON_DEC ;按键B或左减关
# p/ [( N2 K$ J2 }5 f - BEQ KEY_A
' P' y- n5 {- Y- Q1 ^ - LDA #$FF
' } Z% ?# l2 o0 Z- u - STA TIME_LAY ;重设标题延时
0 q, \2 W0 a& H - LDA STAGE_TEMP
7 Q) t7 {+ F4 O - CMP #$00 ;关卡比较
: {- e' J7 E8 _; G - BEQ KEY_A
& S7 y' P" H& N& p. `+ Y* ? - DEC STAGE_TEMP ;减关- y2 I- }8 ~: D& T$ X" W2 L
- JSR MUSIC ;按键音效
, d7 ?4 v1 p! b3 m - KEY_A: ;关卡增加
1 |; c5 k! I! _6 L: O* I - LDA KEY_ADDR
. V. ?& I. O7 b n - AND #BUTTON_INC ;按键A或右加关
/ ?+ ~- Z; f" ?8 D& _ v - BEQ PPU_NUM_WRITE
8 v" E6 ]& l }% b - LDA #$FF T( q* Z7 ^* X2 n2 b
- STA TIME_LAY ;重设标题延时
2 e+ {$ x! S/ l/ A- [0 g - LDA STAGE_TEMP
9 n! F# Y" v' z; p6 q$ \ - CMP #STAGE_MAX ;关卡比较
- d! C/ U/ \' r - BEQ PPU_NUM_WRITE! O) A! ^; l& `- [
- INC STAGE_TEMP ;加关. i! }$ i6 h! l# o P: J
- JSR MUSIC ;按键音效
+ a4 }- i0 I2 |7 B% y! | - PPU_NUM_WRITE: ;关卡数字写入地址
# \" H( O0 {: Z: ^ - LDA #PPU_ADDR_H
; m9 }; ]! z& Y( |& F! N4 M# K0 M - STA $2006 ;设置PPU数字写入高位地址
& }+ D5 a. U+ U" z0 ?2 w - LDA #PPU_ADDR_L
/ w! w* b* Y& q: l3 b. E, e9 L: e - CLC
/ |7 T, K5 S; ]$ M - ADC #NUMBER_A
: L# A7 j: b/ L" R( p, B' g% H7 V4 \ - STA $2006 ;设置PPU字符写入低位地址
T7 `/ D, c+ D4 ]2 x5 d% h - LDA STAGE_TEMP. i0 ^) E0 U; F
- TAX
; ^( @0 W) S6 H) c$ l) N( ~ - LDA STAGE_D1,X ;写入数字' M |9 V+ W+ F
- STA $2007
" p% `5 P$ A4 a7 W# h% \ - LDA #PPU_ADDR_H$ T% Y( |; ^' q. _) q N
- STA $2006 ;设置PPU数字写入高位地址' A8 t- G) M0 s# h u
- LDA #PPU_ADDR_L
) Q5 ]' H. J7 i/ k: x6 w' T - CLC. n7 \2 {6 e6 M1 I
- ADC #NUMBER_B
/ l4 V" g$ W9 a" R; F; e- l - STA $2006 ;设置PPU字符写入低位地址0 T0 H7 @8 Z6 I7 t0 q; Z* }# _2 j
- LDA STAGE_TEMP
' G& h; o! o, x6 `5 J- K/ t \ - TAX
, |/ P. |+ R# h! G, H9 l - LDA STAGE_D2,X ;写入数字- ?/ }) z) A) T, r8 L: D! v
- STA $2007
8 c6 f, d: v S0 x( b! q6 ? g - STAHE_WRITE:; I' L7 ^: ]# Y! x) [" R& V U W
- LDA STAGE_TEMP- g2 {& c% Z# p* P7 f$ G* U
- STA $2D ;初始关卡写入
; P: @; w) `: h! @/ H* \ - PPU_RTS: ;恢复数据' o! ~ G+ v+ o$ H
- PLA
; q4 A+ h. I+ L. b) y9 O( h - TAY
?. E. U+ T2 j2 \ - PLA
& g% l5 b, m; F* V2 ] - TAX
! r0 C6 S1 f$ F+ Z( c* ]4 d' j0 z - PLA: T4 n7 d. ? p3 w3 k
- RTS5 s2 D0 r: r. O
-
6 W5 {9 F y* F. H& D/ T$ R6 N - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据) Q. u* \4 P! J
- .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END/ P3 P$ C8 F# F% a# T! g- n
- * v# u$ p3 g" T; h2 Z; I3 E* F
- STAGE_D1: ;关卡数字
0 O8 V/ O5 R, a* o& {6 j7 a - .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
7 \- @& j# y5 a6 p
% @6 ]; d) r6 D$ u5 R) S$ L- STAGE_D2: ;场景数字
! Z. a) u; {& u+ `5 y - .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_3
$ U8 `2 b' h$ k5 C4 C -
4 d! c6 L7 P; D: G& d! h O# ~( v -
" q) e7 R( A; Z3 u, v# Y8 M, ` - MUSIC: ;按键音效
6 @5 Y+ B- r' [8 P5 A' d7 m - LDA #$3B ;音乐号
9 r) Q3 R8 x, p - JSR $919E ;系统音乐调用/ s; ^2 M1 ^1 T6 v0 q' x# |0 K
- RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;
0 U7 a9 p$ @9 G. B; k' v 5.生命加满: 暂停后,按下键切换;
( v! N' y! G* ?( F 6.血量锁满: 暂停后,按右键切换;# r( w2 |3 }; _( {! z( a

8 ?1 a8 L$ x) E, c, H
5 C# G5 S# T' @6 z $ s( s* y' a: q

3 i2 p8 D% B, c7 |. {& ?, T5 D5 p' B- q! d
FlameCyclone.ys168.com" O1 K! B, Y0 T
www.nesbbs.com9 Y8 V! E( e& r
, P2 e# z4 h5 k/ c4 T4 z1 k |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
1
查看全部评分
-
|