|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑 ! r4 Y1 G+ q. f: ?7 M I7 A6 S2 d
8 ?# m" B- w) q% o$ ~6 {
[FC][忍者神龟3][END选关], c2 O4 g; ~" m9 F
( U# @/ O# V) o; l
时间:2017.3.30
- e6 z- x$ I( t1 _9 P% t作者:FlameCyclone
2 C4 H; ?% L! ]* W5 H内容:+ `, E+ K/ i: S6 U' i, L' E) ^
1.关卡选择: 标题时,左或B减,右或A加;
6 X# ?) Z9 f& P# ^" C0 [ 2.全屏击杀: 暂停后,按A键切换;
3 K) ]5 n5 P2 `' B- J H: B 3.一击必杀: 暂停后,按B键切换;- .ORG $FEA00 Z; C4 s0 \+ \) x5 Z4 u
- ora_data:
; @ H+ Q+ Y; k2 O) I6 ^8 r8 U - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
. @: U9 l+ T+ y" q$ ~$ @3 d - and_data:6 O; |7 q1 A; j5 [: n
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF- c. M4 }. v8 l. u7 S* a4 E% ]
-
2 ]' B+ a2 i; s - button = $F8$ d( e1 w' W5 S* L8 k- e
- flag = $6000+ d1 \3 ?) p i0 j( _2 |. C
- pause = $0045& D% [- ~+ Z9 A! v( X
- 5 D) q5 }. T% s$ P
- ! `, I0 U+ ], e/ v# M0 W4 e- e
- .ORG $F90D- I Z% R) o/ P7 b6 Q) G& w- `) V2 v
- JSR $FEC0
4 M# `; m3 E* B3 a1 H: p9 o& t -
& V) \0 U8 n/ e+ d7 i - .ORG $FEC0
) H# A5 V- M( [: a1 q) h - STA $54,X
- o' j$ w$ n8 h' a- y - STY $FA,X
# |2 F7 v1 @5 ]; C9 i. \/ f - PHA
! m7 k7 ]7 ~0 r, a% H+ O - TXA
& j' B- i' d1 w9 } - PHA9 _3 A/ x: A1 I: m9 A6 X9 ^
- TYA
0 Q. ?6 `" O8 j; w - PHA+ N! o5 A. h: l8 l
- JSR KEY_OPERATE* ]: h0 W# L. K, E0 t
- JSR INV7 Z6 x1 z7 w8 I0 S- @
- JSR LIFE5 {: ^0 t& Z2 }! U8 x b, g% |
- JSR BLOOD
5 x' d7 ?1 n% t. M4 v - PLA- F3 W+ Y8 O% G. a' H9 M
- TAY
7 p8 y) [% N" j- H9 E1 m - PLA0 m v1 t5 j/ z( O$ p- {
- TAX) p. ^' W0 {" ^: w" o- U
- PLA2 f8 I( P+ @' S' Z4 d: v$ [
- RTS- v" u: \! s% ?! D( W& |0 \
- KEY_OPERATE:
5 Q- K( p# r y# W! ] - data_protect:$ T9 |8 Z4 o9 R0 z9 a, Y1 v8 W
- PHA3 v2 o) ~. }1 X/ E. f6 c& L4 }
- TXA
. V* z6 J2 b) z9 p# B# R4 ~ - PHA5 l9 U: ^/ P3 ?8 ~& [
- TYA
( `* u5 V1 X6 v$ O ` - PHA
0 Y/ B' N g2 q3 Z( W
$ y/ @6 a) g9 P0 q2 b) F- FLAG_CMP:
7 q+ Z% t) F z - LDA $600F) R+ S$ r* i' f: B* A7 \
- CMP #$7F ;标志数据初始化条件判断, x" [# m9 E. U. m
- BEQ pause_cmp
" }1 x% G( U0 C3 \ - LDA #$80/ Y* V5 X4 Z9 A% a" m% a# P
- STA $A001 ;6000-7FFF写入启用6 Y# D8 } W; B/ h
- LDA #$00& S' Q0 O7 {+ a* R
- STA $6000 ;数据初始化9 y) g7 z& |9 z: T. ]3 W
- STA $6001 ;数据初始化: S6 m( f7 z8 Z, K0 \& `& m P, [
- LDA #$7F
) Z$ f0 ~" M, g G - STA $600F* U; r j6 D1 L8 i
- pause_cmp:
5 g: f$ R+ `, r' W6 p0 Z( E - LDA pause
! I# ?* Y3 c! x: m! T& ] - CMP #$01
E" B+ W2 x, _6 O- j# t3 | - BEQ button_press/ |6 C. R' I/ _( W( l
- PLA
; ?! x& P, v/ X& l' G) c( O5 r' ]$ S - TAY
. ?9 q( f6 V3 e2 J* g. _" V* B+ {9 B1 d - PLA
3 E0 ~( }/ o8 h5 X' ]/ L - TAX
6 X# ~ z: p6 s5 S8 g - PLA
; U$ r6 d% F: y - RTS
! A1 ]+ K6 H2 v% j K$ W! B3 A' o - , {* l4 l8 \" v( k0 h; V. C
- button_press:
2 E: U9 z7 Y! i9 ?4 P - ini_Y:' W+ _( t/ v6 {# w
- LDY #$00. h u9 U/ y1 d
- button_cmp:
1 z9 w& }# X" N3 \* l7 L2 J - LDA button,X
/ y/ h4 a) @' x! _ - CMP ora_data,Y
5 N- L9 c- I, J) w7 l - BNE count_Y_cmp
3 r' t4 v9 f `$ D% M* { - flag_cmp: T* O1 W+ m2 d& f0 L6 z c0 v4 j
- LDA flag,X8 \' T* \& Q+ m3 z+ T/ B) ?. e$ [
- AND ora_data,Y# W2 Y/ @7 a1 T/ H
- BNE flag_and
! L# M6 g9 j1 F# H - flag_ora:9 l) u I# [* n% S* ~
- LDA flag,X
( b5 z2 l% Y" ` - ORA ora_data,Y
) F7 ^0 r8 g) F2 ~/ R1 l, v - STA flag,X
/ L& ?9 l9 G( u+ k7 J( A - BNE count_Y_cmp' ~, [$ l5 i! I; f% }
- flag_and:
1 z. ]) \2 y2 `# O# z( L& z6 [ - LDA flag,X/ A- ]4 A! k1 S1 P) i9 z/ z
- AND and_data,Y
R" f) S4 G- j5 B& f7 r - STA flag,X5 n4 S+ E* J# h% G
- count_Y_cmp:+ D% Z5 o/ s7 T' T
- INY3 Y' S5 S* g% N2 M9 F9 C
- CPY #$08
. U* M, a* c K" W6 ^1 L: K$ z! n - BCC button_cmp
: U& O. y; }* R3 G -
+ B+ n; k! c( r - data_extract:6 i9 R" v0 P% l8 \
- PLA( z8 ?! l/ |# b V
- TAY4 {1 A" n9 O' W
- PLA
4 C" q3 w" [2 x - TAX
* R$ k# U3 E1 h) [" ]; a( } - PLA
/ P E+ `! w# {0 F) q6 g - ) V# k' Q# L* U
- return:4 f% f/ c+ y. R
- RTS
! _+ C4 |8 B$ n$ r- c& ]' q* k -
2 y2 V. e1 J; p/ _ I- N- y: k, }. B; d - ) k+ [- J5 P) V! ?) h5 r5 x
- INV: ;无敌8 F( h5 X) E/ B. d
- LDA $6000,X
; N; H* S. p7 e9 e3 ]0 m6 K% a - AND #$08
1 g) [; ^4 r4 A. n/ |: E3 x - BEQ INV_RTS' P9 ?. D: \ A& ~8 K' [
- LDA #$05
* p' A% B; G! y, h' I% K - STA $04FF,X' ]" `0 S" Q. b" O* {# ^
- INV_RTS:3 w$ u& C! Q T* t# ?
- RTS0 K& j6 M1 N8 K, {+ h2 A: H/ B
- 5 i6 q$ R# Q) s! J! s
- ) Z8 Y3 D' Z; [3 n7 b6 r
- LIFE: ;生命
4 n: G7 O6 g( u2 m/ r( o4 G6 k. S - LDA $6000,X
/ x+ v/ Y$ M: V; ? - AND #$04
" | l" Q9 i9 I6 p - BEQ LIFE_RTS
* w6 u+ h8 [! ^ - LDA #$09( x4 k% J* N) H! V" ^6 {
- STA $6A,X6 p# b {/ e0 L" [( K$ a( y" N, L
- LIFE_RTS:
& G( q! A! ~5 f6 Y& H8 J, J# q - RTS
5 T' n( s0 B9 l/ s8 E5 R. a+ N
. {1 m) W) U+ b' b0 z2 T) Z-
. Q) i' I1 S" W* y - BLOOD: ;血量
6 _0 R5 _# l3 J* M. f - LDA $6000,X' h& K/ u! o" b! o
- AND #$01& S+ H/ E. b3 Y6 y3 S6 L% o- e
- BEQ BLOOD_RTS
! |! W) |( ~/ e/ f - LDA #$7F
3 t5 P5 b0 S' _6 D0 n7 g0 Q, E - STA $04F1,X# z! v8 g& i6 F
- BLOOD_RTS:# g) n- ^9 r. H9 F
- RTS
]5 K, }. T$ H: A3 }( J5 m* D -
/ G$ o' i9 Y2 | [* L -
& g& L! A( u8 G/ ~( O" z -
+ Z+ s: I# g: A! l+ x& l" h - # K# Y+ x$ G5 a$ N& O6 l
- .ORG $D29F
# @8 y4 E! v1 J! @; K - JSR $FF80' l# P) h% Z2 E% }: k7 W
-
$ O- O6 n! E1 v- I - .ORG $FF80
m0 h% B+ [& `+ E' b8 h - KILLBOSS_BY_ONE ;BOSS一击必杀
8 J! Q, U2 @% s) Y* k - STA $0628
: h) c" S; O7 j ^ - PHA
i, R, o5 O0 S& B - LDA $6000
; U6 g4 f: U4 s, p' ^. ?$ p - AND #$40$ G' I% \, M: \0 K
- BEQ ADDRFF8E8 ~% V% c" F" w k
- PLA
' D( f5 J* ` B7 j* T$ B" ?' W - CLC ;敌方死亡状态判定
, H$ g8 h; P. u& Z1 ^5 R - RTS
; a* t- h: u3 U# n8 @+ [+ p7 _ - ADDRFF8E:+ h: O, a/ ~& J4 e* o+ f
- PLA L% I L- m, @# k) |& ~" X
- RTS
9 [% j9 V; L, d0 R# E+ O - ' ?, m$ b! g0 o r8 `7 ^. |" X
9 I/ `) u$ h, o3 O2 a6 P6 D- .ORG $D1519 v \) k; D% ~" P( Y0 i z
- JMP $FFA02 g& J# d- Z) A: D1 |2 _0 o+ C
- $ c! R# f" W" ]9 T" M
- .ORG $FFA0
- A- D5 v7 S3 o2 i& T - KILL_BY_ONE: ;杂兵一击必杀. T& T; A( _0 [0 J1 G7 h
- STA $0621,X
# G) [" g( U0 C, Q) t6 L \ - LDA $6000
/ k+ y% p8 E) ]! p, M& y# q - AND #$400 ]) w1 c' e* z" |, s* l6 y
- BEQ ADDRFFAD. F3 Y" |: @: T7 z
- JMP $D19A ;敌方死亡程序跳转9 \+ S7 W- _) \6 A
- ADDRFFAD: J, P; E' i i7 k+ e
- JMP $D154
) D( O0 L& K6 i2 c! F - 6 P: \) Y! |7 l8 Y. l% r
- 5 w0 M, }# K$ x. @
- .ORG $A7F6# V# j+ Z8 I5 Y& [. R
- JSR $FFB0
6 Z- q; ]. @2 s; B9 g- w4 q -
$ t, m ?8 k1 y% F/ b7 M( t5 I7 D - .ORG $FFB0 ;全屏攻击
2 M$ g7 G. I9 q: a: z - PHA4 Y2 {( F1 g- I9 B# ^# j' p+ i
- LDA $6000
& c% ]6 @0 _" B. X- V& m; i - AND #$80
4 U/ ~, Z' Q% j) V8 ] - BNE ADDRFFBD
' G3 S3 B; i; I, s1 k2 i- o - PLA
8 j9 v& q/ z7 I& m8 K4 q. a3 D' q2 w$ i& A - LDA $0015
' S+ Y" c% t9 u/ a: W8 D& E - SEC
. Z( t: S7 a& V% C: x( l: S - RTS
3 X* d* W E% t! ` - ADDRFFBD:) n) L. m9 c" r& X1 o
- PLA
6 J( R; f) D6 o9 b- W - JMP $A826& l% X$ v6 e# e+ @$ `, n
- % M. V1 m: G4 S
-
: C, i. u8 x3 ?3 h8 } -
8 d; C! l0 u; `% v3 m0 n - .ORG $AA6A
( N/ k7 A! s+ N9 j6 t; L - JMP $FFD0' x }0 `9 v: e- A% R
-
* e7 F0 A4 u" b6 n: l6 m - .ORG $FFD0 ;敌兵动作忽略
7 M, |+ \. w& } U: P* \ - PHA
& r" M- u$ Z/ b0 U) K - LDA $6000
" D3 ~8 S$ O. A# @1 A - AND #$80/ D, V" @5 o1 l" G0 o
- BEQ ADDRFFDC
1 A; k+ [/ O2 ^. B9 h6 ` - PLA
% _2 e- O1 C* R, a. y. P" D - JMP $AA72
6 R3 h$ S2 I; r( {5 V% C - ADDRFFDC: }- ^# Y2 d# l9 S( `
- PLA v3 k3 d, n. C% L
- LDA $0629,X
3 ?' J2 u2 w+ f5 b3 U+ j - JMP $AA6D8 Z" X( F0 y7 `+ d6 a( L W2 C
- ( f" k7 P3 t) i/ Q8 a
- ;[FC][忍者神龟3代标题选关程序]
2 Q2 }/ ]5 m& M: F n7 [ - ;作者:FlameCyclone 2017.4.19 E5 u: @5 `5 ?! x
- ( a& b" A t! r! u* W' \% Q' z
* C: u$ A5 u/ r/ z; P$ s( q- ;配置数据
0 C+ h4 |& S. l- X, o - KEY_ADDR = $F8 ;按键地址8 f8 {+ U; q6 x! a" a; V$ g9 c
- STAGE_TEMP = $6010 ;关卡临时地址
2 N! i) ~9 ]1 \: M/ H0 O0 v8 e - STAGE_MAX = $0E ;最大关卡数: u4 d) J% V" I; L1 s) P1 p! a
- TITLE_A = $20 ;标题条件A
z. N. E' ~0 a, U1 e - TITLE_A_ON = $02 ;标题条件A有效状态判定4 M* N) S5 X6 n6 J% }
- TITLE_B = $21 ;标题条件B
' M- X! P! s5 Y! S0 `( R: D1 B. R - TITLE_B_ON = $03 ;标题条件B有效状态判定
" g, }, J1 ~+ E% K - PPU_END = $FF ;PPU结束符" g, u. @1 F- x- W$ S
- TIME_LAY = $4A ;标题显示延时地址* e9 Q }7 U9 t J/ j- h, q& k
- BUTTON_DEC = $42 ;关卡减少按键
& z7 V- c7 E+ B d' o8 j - BUTTON_INC = $81 ;关卡增加按键
5 ]. ^+ l- A; {/ t - NUMBER_A = $06 ;数字A距离STAGE偏移量
5 e% R4 K. x' Z; ~! \) f9 A - NUMBER_B = $08 ;数字B距离STAGE偏移量
3 {9 O# a0 k l - PPU_ADDR_H = $23 ;STAGE写入地址高位
( \/ t* o: x) W2 b6 P; S/ H/ H. v - PPU_ADDR_L = $8C ;STAGE写入地址低位
+ s/ Y" Q) x( R) A4 |1 R, P - CHAR_S = $A2 ;字符'S': z5 I% N& Z2 \) e; E1 k: `
- CHAR_T = $A3 ;字符'T'
4 C3 \: D7 |0 e( k, c - CHAR_A = $90 ;字符'A'
% T: G( G2 n9 z! | G8 A - CHAR_G = $96 ;字符'G'8 s" i& N5 r: o5 |1 x( r" o2 _/ n
- CHAR_E = $94 ;字符'E'
; E# F+ n/ z8 M1 R - CHAR_SPA = $00 ;字符空格
) V8 b3 L. E) v - CHAR_LIN = $AE ;字符'-'
& g/ {, C- P: g; N& b - CHAR_O = $9E ;字符'o'
8 p$ |+ J; N U - NUM_1 = $81 ;数字'1'
9 U6 U: T/ d' _" ~3 l3 a6 [. I - NUM_2 = $82 ;数字'2'
4 M' w% ?4 m" r* ~( `: _! @ - NUM_3 = $83 ;数字'3'+ h1 F4 L H* G3 \ ~% n. N, F
- NUM_4 = $84 ;数字'4'5 t7 R; H/ H6 B6 [" R% D( Y
- NUM_5 = $85 ;数字'5'8 \! S+ n2 q/ O* j, O k
- NUM_6 = $86 ;数字'6'
; ^: U2 i. G% b, E1 y - NUM_7 = $87 ;数字'7'
2 d; L0 U$ Z6 X X7 f! w, q2 r, t - NUM_8 = $88 ;数字'8'
6 ]6 h5 d( o* T$ V ? - NUM_9 = $89 ;数字'9'
& f( v1 o, q/ ?7 v7 g1 l; N$ @$ E - NUM_0 = $80 ;数字'0'
( Y: C! q: Q4 |$ s! T# ~" w/ n6 V( h - - r( V" o6 t8 b; q
- .ORG $F82A$ x2 e8 L+ U _2 n1 K: v$ q
- JSR $E700
1 v5 g2 Y( I4 A8 W -
6 Y7 I6 S2 |7 X: j" r J4 R, z) `* _ -
5 u. k6 }7 T- j7 k- c* E1 _3 P5 ^ - .ORG $E700
. t0 B- M0 s; r - 8 g1 H/ T. o& x/ k; a+ ~' s' f
- STY $4014 ;补上覆盖的精灵写入指令
$ U+ Y# e$ t2 x Q% I; p( g2 v - PROTECT_DATA: ;数据保护5 O" p* m; l/ r6 T! [1 v
- PHA ;数据保护开始
5 p* f5 j7 d. Z2 h - TXA1 M5 |) ?$ Q2 h% ^+ B
- PHA0 f* W1 s8 r( \
- TYA( t* Z& Y' p8 ?) ]
- PHA ;数据保护结束
6 E# }+ q8 s- F8 C" F6 q - LDA TITLE_A9 O; t( T3 N( D
- CMP #TITLE_A_ON ;比较是否为标题画面7 B) a0 q: [& p/ u
- BNE RET
L/ K! _, D6 h, P1 F - LDA TITLE_B" l2 ^+ T' [! ^& z1 g4 p
- CMP #TITLE_B_ON ;比较是否为标题画面
& q# }. |8 m/ g5 ]2 i- S" h6 D( K( X - BEQ PPU_STAGE; r8 U( k1 t" J- U1 o
- RET: ;恢复数据! U( d( H# J( S- y. T" y: }7 s( h6 p
- PLA ;恢复数据开始3 z. O( O: c: H, ~0 j
- TAY! @2 ?: N6 x# o) V' P3 d
- PLA
: `( c8 j' z1 y* E - TAX& b m5 h Q0 C/ G
- PLA ;恢复数据结束# Y- R: C. G% W" n6 I* {) e d% Y
- RTS ;返回0 U; V. J+ a' d( F% |
- PPU_STAGE: ;字符STAGE写入程序
) D: n: u* S5 F$ D# B. m! B - LDA #PPU_ADDR_H 2 i, E7 J. }* M2 l' E1 N2 x
- STA $2006 ;设置PPU字符写入高位地址
7 t7 v% `, F: H4 K B - LDA #PPU_ADDR_L
: U) L" ?& |; x+ j2 a' m5 x6 h - STA $2006 ;设置PPU字符写入低位地址
$ T. [# P+ M' J5 X' r% _( |' S - LDX #$00/ k* v; r0 V& z$ ]2 _
- PPU_STAGE_WROTE: ;写入STAGE字模
# J+ B( m: x5 S( b' h4 o7 S) l* Q - LDA STAGE_DATA,X' r# ]2 l: }5 b: F! U5 A
- CMP #PPU_END ;判断是否写入结束
# ^8 u' q1 u/ t% C - BEQ STAGE_CMP3 E- _6 [) X$ |9 Z- f5 u8 d
- STA $2007* A5 |# X5 k s1 D& b. Z
- INX7 p; }$ \( @; }9 D# _4 Z1 S0 s
- BCC PPU_STAGE_WROTE+ p# R+ w/ \5 {0 P3 e _
- STAGE_CMP: ;选关操作
# [' n" o/ n/ F5 G0 {0 \* N8 _ - LDA STAGE_TEMP
+ ?% b+ z) Q, Z8 u L9 x3 L - CMP #$FF ;关卡数据初始化条件判断 n: W' G; n. ~* F/ i5 |- \7 Z( K0 c! X
- BNE KEY_B2 X* H5 h: `! f9 e, y
- LDA #$004 X3 \: w; ^+ {6 Z8 G
- STA STAGE_TEMP ;关卡数据初始化
( D O0 P* J! h S Q2 m' q* T5 a - KEY_B: ;关卡减少1 Q' W# Q# l- g- m7 H0 J8 [; ]
- LDA KEY_ADDR; a, o2 G0 R6 U' [. v, b
- AND #BUTTON_DEC ;按键B或左减关
5 K9 u! ^( Y$ B; X; } - BEQ KEY_A
$ ?% F4 e; W) C. y6 f3 o. r4 u - LDA #$FF
3 ]$ S" Z5 l6 i! W8 e6 f) o - STA TIME_LAY ;重设标题延时; j# T; ? _% Z F, H
- LDA STAGE_TEMP
; i" Z9 A+ K1 b# W3 _ - CMP #$00 ;关卡比较
) O; i! M; {5 q! U - BEQ KEY_A$ W1 u0 g# g# r8 u6 M
- DEC STAGE_TEMP ;减关1 z4 b% F# g7 R
- JSR MUSIC ;按键音效
3 Y, r; H8 X" D+ E - KEY_A: ;关卡增加
1 J, p$ Z( ?* {7 D - LDA KEY_ADDR
- {" @ K* l. Z' a! c - AND #BUTTON_INC ;按键A或右加关
U# b% ^- p( j - BEQ PPU_NUM_WRITE4 B! ?* G2 g3 L3 K- y1 a
- LDA #$FF
0 ^. }% n+ t9 ^/ C - STA TIME_LAY ;重设标题延时
) \* ?5 ]1 F$ C* c7 ?8 H% r% Z1 e - LDA STAGE_TEMP% X, J) ]' r$ v+ t0 O
- CMP #STAGE_MAX ;关卡比较
e+ H+ a# u$ f+ _ - BEQ PPU_NUM_WRITE
. O R$ m3 C8 e7 P) g6 ] - INC STAGE_TEMP ;加关
+ L" _" R' E' z! W, ~ - JSR MUSIC ;按键音效
* |" S/ S8 J& H5 O; L+ x1 C - PPU_NUM_WRITE: ;关卡数字写入地址/ M2 I3 \$ Y7 C, I5 {$ s# \1 Z
- LDA #PPU_ADDR_H2 c/ B& \# [$ s* ?' i( u
- STA $2006 ;设置PPU数字写入高位地址' M2 Z. t& {6 ?3 s* o t& x
- LDA #PPU_ADDR_L. V& @4 y3 ^' `6 E
- CLC2 ]7 Y5 _" p: C( X9 x3 w
- ADC #NUMBER_A# n" X6 ^& Q/ E4 h
- STA $2006 ;设置PPU字符写入低位地址' J2 O' \! {/ `# y( ~6 Y7 G
- LDA STAGE_TEMP1 F- I7 C: c2 m' x" f2 I# f) E" g
- TAX
( u9 {- w- p- P/ V% r& y3 t( R - LDA STAGE_D1,X ;写入数字# \* k& X+ U9 y0 c
- STA $20073 E, s8 s( `9 B: s
- LDA #PPU_ADDR_H
3 z; Y/ I+ w" J% u - STA $2006 ;设置PPU数字写入高位地址
( Y3 Z% B: {* T - LDA #PPU_ADDR_L
) u; U6 |+ }6 a- e) Y2 S" j/ p - CLC8 r# N/ l+ ^* n% I5 W
- ADC #NUMBER_B
* I/ F: V% O: c$ j8 U. n9 l - STA $2006 ;设置PPU字符写入低位地址7 H. d1 t0 @5 w- V' _: g7 _
- LDA STAGE_TEMP
* W! [" T) |8 R) A - TAX
+ }& n; J3 Z; B! @; y2 l - LDA STAGE_D2,X ;写入数字
% q7 B) v1 v/ T- o- [. ~ - STA $2007 K$ g* a6 X& k; [7 J6 W, b4 D( d
- STAHE_WRITE:+ Z0 e3 u1 k% a5 [
- LDA STAGE_TEMP3 F7 }; ?2 }2 g, H6 V3 F# N
- STA $2D ;初始关卡写入
3 v( i: ~, G2 c - PPU_RTS: ;恢复数据
- x+ B9 ]. }: V% P - PLA
: h4 ?1 t# ^; ^0 N7 c0 b1 }7 X& | - TAY
, I$ w6 C# y: W. Y - PLA
' Y8 z4 d4 I" J - TAX
- f6 E9 B# `+ l7 ?5 S% C6 x j" g* s - PLA
( ]3 _7 o- s- F5 S0 i) l3 U& W - RTS
; S: O/ J- D. M8 @7 L - 8 Q5 t3 t6 @3 Y% b. {5 ?
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据" K' E; U6 x5 O
- .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END2 x! E$ g. q* g+ E; D7 m- u
- : A/ X; l2 t' t, A3 T
- STAGE_D1: ;关卡数字
9 }$ W1 g1 ~; E x; c9 O t0 G - .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! {) T+ ^. f" Y; r/ q
- H# C! H2 u/ m; H( M
- STAGE_D2: ;场景数字: b8 |2 F) Y1 M7 N% [$ M! b7 v
- .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
+ V6 ]3 t! g' P. N- e H# Q: G -
$ J0 k5 O) b! M- K& I; ]" P. K8 j -
k1 w" l6 {" B8 r- o - MUSIC: ;按键音效 \5 W' Q4 \1 J9 l) q/ w: z- s7 h
- LDA #$3B ;音乐号
9 r$ n9 U3 t) U/ Z9 } - JSR $919E ;系统音乐调用
. E% e @! V) w7 k6 |' D - RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;
$ D4 U Z6 Z3 P: |) v* f" R# H 5.生命加满: 暂停后,按下键切换;
% N4 k; p- O1 C* z. d' {7 _0 C! p; y& ? 6.血量锁满: 暂停后,按右键切换;0 B8 x/ W- N$ Y6 P5 \* r( C% q1 q

. S& V2 B9 ^# [! w1 z6 b 8 [6 c7 G5 o8 Z8 G$ f+ R/ o0 S. m& x
2 ~! y* U, k$ [0 ^7 G& O3 b0 Y

# \* X" N7 d8 P. |* H) x& t2 ?5 v4 m5 M3 }$ r. q
FlameCyclone.ys168.com
& z; j5 P3 o/ U; S/ Q9 R z) |www.nesbbs.com8 X0 t" H' L& q, o
8 w* H X# ^3 B# {4 C7 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|