|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑 0 G+ l" G' F: U8 a( U
. F8 C( d' j6 f! m% y! C; i
[FC][忍者神龟3][END选关]; o! u, _4 `; c( g* ~. S
! i7 W) \9 t9 w& `8 v时间:2017.3.302 i) [& }5 z: F$ d' V
作者:FlameCyclone9 t5 H+ o5 Z& @/ h* C B, W
内容:0 Y' l1 h! e/ l
1.关卡选择: 标题时,左或B减,右或A加;
/ m* A/ ~5 O: P6 Z- C# `9 q4 Q; E 2.全屏击杀: 暂停后,按A键切换;
% j2 i9 x. F3 v. W 3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0
k' a3 ]4 {5 m) F* } - ora_data:! H @6 X: g! d
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
4 f" p2 N' T: T5 u4 z; ^ - and_data:
; j8 D; v9 g( Q - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
. N2 K9 F+ a- }# @ - + t. E: P& {. T0 M
- button = $F8
3 k1 F" c0 i5 ^! P2 U9 n/ K* a2 H - flag = $6000' U1 D' |( @4 }1 i: G+ R. C
- pause = $00457 p/ f9 |, b; ^1 N2 ?5 s
- $ v+ B. {% p6 W& _0 `0 h
- 3 d* [! H% K- l. P0 k8 ]+ z, C( ]
- .ORG $F90D
3 d5 [* W9 @4 ]7 t& E - JSR $FEC0
& S7 M) n* r7 v& ?! V% z1 C -
. |* u! L/ y2 @* c - .ORG $FEC0
3 O2 Z! N% d4 C( w; |* Q& Y$ l5 r - STA $54,X G9 p2 c. {" p/ E3 ~. d+ |8 o9 T
- STY $FA,X8 q9 i5 o( x) ?6 C
- PHA: A' S* H Q3 T. M
- TXA0 Q* A2 [% |6 h X9 e6 E
- PHA7 N& D1 ]$ j7 d1 ~9 V# A
- TYA. l1 I5 J0 C; m
- PHA
" U$ L" Q) }' P" X0 I8 t6 l+ M0 B - JSR KEY_OPERATE1 v5 U& q) e% O6 Y' R7 i& D% k7 q
- JSR INV
- z4 n$ q/ e2 g5 K+ I - JSR LIFE: r* M. b- p; y# x
- JSR BLOOD3 _. X8 X, X' a" |6 V
- PLA, Y1 r k: U% f1 M' s1 [0 z- Y
- TAY7 V0 ~, l5 n* _9 Y( ~' B1 T: Q0 U9 k
- PLA
. E0 A3 s( `9 ~2 N! g* a+ B3 ?- w - TAX5 x$ |3 C* y7 c/ f/ C
- PLA; ]3 J# Y% W' L! E2 `$ e1 }
- RTS+ G9 P% l) Q& |
- KEY_OPERATE:
' n6 ]3 s; P& O$ n$ f: S( Y - data_protect:
+ F3 T3 o; h! B: Y. n9 v9 V. [# e0 ~ - PHA- X; c) F% ^, [+ m
- TXA0 e Z" [) S1 k- M6 R3 k0 O3 |1 n
- PHA# b: I" N j [
- TYA3 X( g+ U8 y% S. f9 b U5 k5 |# x
- PHA
6 o7 u3 @* W+ r! J9 Q - ) l* z( R# t. M F3 k% U
- FLAG_CMP:
; ^7 c$ c. F# } - LDA $600F
& T! j8 F$ W) n* n }3 z+ a) j - CMP #$7F ;标志数据初始化条件判断
6 I6 o/ X) l: v `0 `' R/ m: E - BEQ pause_cmp2 |- ^. t) \0 e$ p- G+ q
- LDA #$80
* d- ]1 ~* z, C0 x$ G/ w - STA $A001 ;6000-7FFF写入启用
) y5 G# }4 _) V; h( w& [ - LDA #$00
- \% G0 m$ S# ?$ H - STA $6000 ;数据初始化- l/ v r8 w' q9 F. K6 Y3 q
- STA $6001 ;数据初始化7 w3 g: w0 ?6 h- d' [
- LDA #$7F
5 ?# V4 S0 @' |9 R1 n5 c) A0 n - STA $600F% a; a+ |5 z! Z9 k: E! n
- pause_cmp:
8 z1 |3 m) B( y" D: Q: o - LDA pause v1 |+ Q* x4 m5 a; i# d5 c
- CMP #$01
0 j, b, `* c1 A# [: F8 G - BEQ button_press8 U) w9 I4 y: h6 _! j0 q, D u
- PLA0 U5 ~$ V& }! o
- TAY
* p9 h8 x5 _3 d4 A* Z, T$ c - PLA' |# N" y* f; |5 T) X. S: K$ {
- TAX7 u% Z9 b$ V7 H+ H, ^9 r% B
- PLA! n9 R3 f2 P. k) Q# q$ y t
- RTS
# V# Q9 U( T0 u0 E' r, r1 ?' d
& z& V1 B# O' c" G" Y. _- button_press:
& M. q) x7 W% ?, c" S - ini_Y:
+ l4 X% k( o/ ^7 _' F, c z% } - LDY #$00
: Q* z) {5 H" X* a5 s0 k4 B - button_cmp:
9 M4 d( d8 z/ a b7 r4 u0 R - LDA button,X
Z% K& R- f: I2 k - CMP ora_data,Y* E: w' c# I+ [3 q- u9 V% U* J5 i
- BNE count_Y_cmp6 j% O+ p% T: W R2 B
- flag_cmp:9 G+ w4 t$ I& f* f( v; x. r
- LDA flag,X' K; u; ]+ }# x
- AND ora_data,Y
# T0 W/ V, l7 [* ?1 z3 O9 S - BNE flag_and3 V. S. E5 J/ S6 M$ Z* F
- flag_ora:$ z) F K& @8 E6 |3 Q3 W$ k6 `- K S
- LDA flag,X
3 m+ q- U, W. G# ~( _3 h% J9 h - ORA ora_data,Y
4 E6 @' b8 r, i9 ] v - STA flag,X
+ ~* l5 R; a; K; Q* B7 D$ D( Q - BNE count_Y_cmp0 [ K2 l7 v0 q: N; w1 I
- flag_and:
4 X8 J: ]" C; z! x: _7 W& G; s - LDA flag,X* q. W" N6 Y/ u" @8 d
- AND and_data,Y7 L5 Q7 u" l" ?6 m6 E O" M
- STA flag,X
1 w, S/ C7 A- |7 Y7 n - count_Y_cmp:2 _& C& q/ m3 @4 c
- INY4 \% |" k( A' |7 z" ]% i& a
- CPY #$08
% j6 L; [ e# ]3 e6 D( q0 C. { - BCC button_cmp# p$ f; m! v/ A1 D7 X
- # _! B* g/ p! @# B3 K3 Z
- data_extract:) E1 _( b$ n% _" v* c3 ` r
- PLA5 P# M. B0 s3 z/ b
- TAY
3 Q* E5 Y& Y1 i0 r8 c. v# i, \ - PLA: M: q2 O7 ~ k
- TAX
: _! z; O7 M. R9 O! Y! ] - PLA
$ \6 F# K# [6 T6 w -
4 l- A, t$ `% a; i+ m4 F - return:
, L$ c2 @" z+ Y - RTS! @. n% T2 s9 t
-
1 w E" o' F- R6 C - 2 ~( |7 m! V' Y. J" ~
- INV: ;无敌
4 G% \7 `' w$ h+ o" {3 y2 f& y - LDA $6000,X0 R! v. B8 i/ V. |; G
- AND #$08. \7 {8 z* o) l3 y. b$ Z% P) `% }
- BEQ INV_RTS
) L2 ^+ ^ b* X - LDA #$05
; P2 @9 P. Q/ A! y" n - STA $04FF,X
' t |% f# a7 @/ u) ~- Z. m5 Y1 D) g - INV_RTS:
) m! x. X3 A$ m2 i/ V - RTS
; l: T* [% |9 \! b) k
! K3 k& T$ `# m$ |4 I, N- $ W) _/ b/ P; K8 i) S- ? z
- LIFE: ;生命( G7 n* e) q: l6 t# I8 C# k. x- L
- LDA $6000,X
+ j1 m4 S( t& G7 O; _ U - AND #$04- @% N( [; E) y; a. q7 d7 z
- BEQ LIFE_RTS, s4 r% V: F# }4 u6 w6 P
- LDA #$09 @+ D# R( a5 v* O+ E& z4 y
- STA $6A,X
- W- ], I$ b, @& L2 k9 @6 x - LIFE_RTS:1 F6 @2 x# [2 Y9 J9 ]2 Q4 ~7 b
- RTS& e" C# V$ c, s+ ~% n
- * H6 t6 s3 |! B
-
- X: T1 v" l7 A* y - BLOOD: ;血量2 a4 Y# o5 o- E% G$ }) S. N% a# Y
- LDA $6000,X% _7 u8 [! h3 S& v2 R5 d( o0 `
- AND #$01
- b% b9 Y& i! {7 {. b# {. o! E) W2 e* v - BEQ BLOOD_RTS. C$ R+ h6 u, Q
- LDA #$7F8 ?0 ~. z# p9 W: m9 [1 @" n8 {
- STA $04F1,X' z m ]6 O% o
- BLOOD_RTS:
- M, ~$ Z8 C3 g3 S6 s2 I5 [/ D - RTS
3 ^$ M' Z" Y3 X* `- h! R -
' I& y! {3 L+ S6 ?! ? -
) a) ^% R( \8 `1 X! ]3 M - 3 U3 J8 h6 H) [' z. m
-
1 ?1 g [! c% s/ e/ p$ r) y - .ORG $D29F
* K# p/ \4 K$ j/ C5 b4 R - JSR $FF802 H! N; h/ F1 C" U; G8 [) H
- 8 W |8 R' s3 J" p. e3 ?9 ^$ o7 i
- .ORG $FF80
7 _. k9 K3 i( D - KILLBOSS_BY_ONE ;BOSS一击必杀
5 f- S3 b l1 @, G1 J h - STA $06287 ~# L% o$ c! a, i) ]1 k
- PHA
) T1 d7 {! E* P0 \ - LDA $6000
+ P! W, [7 m5 l1 E2 ^7 H - AND #$40
# Q+ K/ g" D( F: }& q - BEQ ADDRFF8E
% ^- b1 l- T$ k/ _0 o& d+ W3 u; |$ h1 o - PLA
8 q/ q# x! K5 {' P! E - CLC ;敌方死亡状态判定
& C! x; x4 `$ `& H$ v; U8 Q5 [( | - RTS
% J; W+ x- F$ l' y - ADDRFF8E: p' {3 H2 Q3 ^& O! l
- PLA; {% |- Z! x. j5 {0 u/ L
- RTS# I* |' N6 A o
- ' {/ g1 M* [4 q% w/ R- V7 b
- 8 B7 X% J6 f7 \ |
- .ORG $D1518 s; O& H* m2 M x8 q
- JMP $FFA0
6 p2 ~$ S; S3 W' W1 g: e -
# R( i8 B* p9 q( N! P7 { - .ORG $FFA0
* r% Y( W$ r' Y% M8 X - KILL_BY_ONE: ;杂兵一击必杀
: a7 S% R! }3 J" {# Q9 w - STA $0621,X+ c6 q0 d0 S; N# ]/ f# M8 G0 D
- LDA $6000/ u, b- e0 ~; E
- AND #$40
' Y* J- ~, i" ~; ~ - BEQ ADDRFFAD% w6 ]" S0 h9 X- r& O, N( J
- JMP $D19A ;敌方死亡程序跳转$ ~7 Q( f) Y7 B# P
- ADDRFFAD:3 {. `( G( _( k7 _6 u
- JMP $D154
- ?9 m6 J, G9 ^: ? v - 8 Y& @3 j! d2 L# f/ x
- $ Q, g+ U, B) I( v
- .ORG $A7F66 M5 J. k/ [! [0 m8 \$ {) s2 M
- JSR $FFB09 S- G8 A# l9 M1 |! U, B
- ) D, ?# d! v) V, ^
- .ORG $FFB0 ;全屏攻击
. P$ c5 j# b; X3 o5 |+ m, L& b+ m/ P8 j - PHA% I( C4 c2 i% f" j1 R0 h ^
- LDA $6000
2 g+ A# n* u2 m, E3 D. r( W7 q& D - AND #$80; Z; S" x, Y, s
- BNE ADDRFFBD
+ S& M, D$ A$ \3 T - PLA
; k4 e# g3 ]+ J5 b% d- D$ m - LDA $0015
7 z9 J# y9 [9 V! W; b - SEC/ Y# P2 ?0 L) } ~8 Q/ C7 Z
- RTS
9 ]" c ~) l f |0 ? - ADDRFFBD:! Q% T1 J3 X2 Q/ D# S: @, d9 H
- PLA
5 b# f5 {4 l* A. a, E- \5 t9 B2 g - JMP $A826
. v# }( E7 g+ G2 T -
: x+ V6 g' O2 N -
7 b: E! T6 z! I( x, I2 w$ A: v, M -
9 T, F( ^: p# U- w - .ORG $AA6A
$ h4 t& O& J* j/ ~& f - JMP $FFD0
' F% x0 |0 Q" O6 e0 H, N, j4 { -
, ~4 K) u3 t* c0 r) o! _) K& r - .ORG $FFD0 ;敌兵动作忽略( L d5 s3 o1 k/ ~7 \( H; K
- PHA$ Z4 ~/ w% K1 Q# x& ^
- LDA $6000
. \& l, b! }7 {; V. B, }1 H - AND #$80
1 d' s5 G* J2 s( D - BEQ ADDRFFDC
! T+ Z. O' r! l% q6 ` - PLA
1 P' s I2 d7 O6 m r" m5 W. ? - JMP $AA72
* H& n5 }# ~- d - ADDRFFDC:
' `; t; l9 x2 V* O9 M4 C - PLA
: a4 E4 {1 j* M( B$ U1 E y7 [ - LDA $0629,X
o3 ?/ A" I% p) L% H! B - JMP $AA6D/ I& M7 O. l9 y) d4 a) M/ |) Z; i, j! z
- R3 u9 a7 A5 V* j0 c
- ;[FC][忍者神龟3代标题选关程序]
0 L' x5 {# P7 ]/ c8 v( N6 [( Z - ;作者:FlameCyclone 2017.4.1
9 B2 k! f' K/ y& n - ) d& D. m$ q* [- M9 {
- & R) m r6 C, L% V$ C$ Y0 i8 _
- ;配置数据
; B0 r$ P0 d. t. J- B - KEY_ADDR = $F8 ;按键地址
, C- y0 P" m. `% G - STAGE_TEMP = $6010 ;关卡临时地址5 M0 R" ]( K2 L
- STAGE_MAX = $0E ;最大关卡数& y5 f, Y: U+ c& w7 t2 \
- TITLE_A = $20 ;标题条件A
2 r9 v- v4 {7 I - TITLE_A_ON = $02 ;标题条件A有效状态判定7 z% t9 Y% ~( H3 X- N* \
- TITLE_B = $21 ;标题条件B
4 K6 x8 U- t) ~3 p - TITLE_B_ON = $03 ;标题条件B有效状态判定
& }# n& `% D N/ [ - PPU_END = $FF ;PPU结束符+ t) m) l% F5 |0 Q
- TIME_LAY = $4A ;标题显示延时地址
+ d$ |6 J* ^$ `0 y9 H7 W( F - BUTTON_DEC = $42 ;关卡减少按键* G* ] d% k/ a) {3 h8 \
- BUTTON_INC = $81 ;关卡增加按键
$ O4 }, d" V2 ?1 B - NUMBER_A = $06 ;数字A距离STAGE偏移量
- t) W5 k" E1 p1 W( G& o ~1 H - NUMBER_B = $08 ;数字B距离STAGE偏移量
4 @3 T5 P# c- @. O% O+ `! L - PPU_ADDR_H = $23 ;STAGE写入地址高位
( ^0 v* ^7 r% t9 L/ l- _! Q* M8 H - PPU_ADDR_L = $8C ;STAGE写入地址低位% A' _6 \4 A$ N# z. N$ J
- CHAR_S = $A2 ;字符'S'
# L& o4 y6 B4 d! W: M, _# F# h6 [ - CHAR_T = $A3 ;字符'T'0 ~* L( c! _, K, N, D' @" ]
- CHAR_A = $90 ;字符'A'
( `8 @( ~; r) ?: h$ Y& A - CHAR_G = $96 ;字符'G'$ W% X9 _4 n$ ~& v
- CHAR_E = $94 ;字符'E'
3 S( f6 r+ d0 _8 x/ h - CHAR_SPA = $00 ;字符空格
, {! g7 z/ o3 c, ^! j - CHAR_LIN = $AE ;字符'-'# P# U0 G, z" o* b8 z4 u$ s5 M. \; y
- CHAR_O = $9E ;字符'o'' A( G/ E% I( s9 u: V; w
- NUM_1 = $81 ;数字'1'
* y& \, l Q0 { - NUM_2 = $82 ;数字'2'
% U+ {& V4 u" q2 h - NUM_3 = $83 ;数字'3'
: v6 i( V8 t9 E( g# j - NUM_4 = $84 ;数字'4'
0 @! B0 ^, d' z% ~0 W3 V - NUM_5 = $85 ;数字'5'8 y6 b: W! Q4 h
- NUM_6 = $86 ;数字'6'
$ T0 a9 j2 h, \" l" M - NUM_7 = $87 ;数字'7'
5 Q/ k3 r7 b7 G. L5 X1 a - NUM_8 = $88 ;数字'8') q4 \, U a Y
- NUM_9 = $89 ;数字'9'. A! W u* t& U7 R6 g
- NUM_0 = $80 ;数字'0'
' R0 P {% B( ^7 s# x
9 m7 Y' E: |+ e. N9 ^8 c- .ORG $F82A! R% M5 }& E7 |5 _- g' a# J
- JSR $E700
' ] g( d4 A" V& {& y - + W: O, v1 j0 i( Z0 i! ~& P v; H& r
-
$ E9 {3 C7 D2 J/ f# I& G8 ` - .ORG $E700' X& g* E8 K7 c
- ; Y1 I/ j' v/ e6 p5 N
- STY $4014 ;补上覆盖的精灵写入指令- s i; [% T9 V- g
- PROTECT_DATA: ;数据保护1 s/ n& o" H+ Z k
- PHA ;数据保护开始
8 Z$ j/ v5 ~- w' p - TXA8 o+ w2 a. z) K4 ?! u- t! i p
- PHA1 {2 \% o: f! [9 Q- ]
- TYA
5 C. s4 }- Z2 |9 R w4 g) ] - PHA ;数据保护结束; F( T; c) E" a. l
- LDA TITLE_A
3 i2 P$ \! H% C- D$ j! y a, L9 H - CMP #TITLE_A_ON ;比较是否为标题画面
2 s+ p6 e- z, G! |; U - BNE RET
! {; r8 _- ^/ Y, _$ f3 ^ - LDA TITLE_B$ V* b/ Y3 z2 [
- CMP #TITLE_B_ON ;比较是否为标题画面
% v8 ^: h6 |( ~+ w% ~# ^ - BEQ PPU_STAGE) n" e: s$ Z( L, h7 ~: j7 g: e
- RET: ;恢复数据
% k! l6 e4 {/ n( O; G7 [9 B6 w - PLA ;恢复数据开始
' e7 P3 b7 F3 Q8 O4 Z% |1 r. I" C - TAY, @" ^$ M8 F$ J
- PLA
% F' t! S6 }; O/ v9 W0 O - TAX D( }7 u4 T; q. E( G8 w* H8 ]
- PLA ;恢复数据结束
- @5 X6 j2 t/ Y6 w. C% N* x2 o - RTS ;返回
3 Q5 z% U5 g: Z/ F% _ - PPU_STAGE: ;字符STAGE写入程序
/ C, |3 C8 k+ v8 [7 j9 K - LDA #PPU_ADDR_H
% Z" A ?, f$ B9 z1 Q - STA $2006 ;设置PPU字符写入高位地址
. I1 R5 n. N4 W- Q - LDA #PPU_ADDR_L& |) x# Y" W, N( s% ]
- STA $2006 ;设置PPU字符写入低位地址
/ [ t ] k [9 ] p9 c/ [% M - LDX #$00
) W8 Q. ]6 A. i$ x' i7 Z - PPU_STAGE_WROTE: ;写入STAGE字模, r3 o2 Z) |2 ~+ f
- LDA STAGE_DATA,X" _& ~6 M, z& ?8 b8 I8 w/ @
- CMP #PPU_END ;判断是否写入结束! {+ d8 h* m+ r) }' }7 [2 i
- BEQ STAGE_CMP1 S& W3 `# {; y' ^* V) C2 Q
- STA $2007# l q3 {/ ^- C$ f( J5 M: K
- INX3 N {6 s; N7 `4 T2 `* U0 l1 Z
- BCC PPU_STAGE_WROTE) X' J0 Z) D3 E& j; O6 J$ u6 D
- STAGE_CMP: ;选关操作
: U9 m7 c+ l( \ - LDA STAGE_TEMP O$ G4 g5 r& j6 A ^9 c) o
- CMP #$FF ;关卡数据初始化条件判断" n. z" C' n7 a' V" F# P
- BNE KEY_B
& X: F. @0 {8 c: k. j9 U - LDA #$00
" g! M4 p* A/ d& T; [. s - STA STAGE_TEMP ;关卡数据初始化
! J4 i0 N; m) {* R7 B - KEY_B: ;关卡减少
1 ~/ V9 v" d5 s. ] - LDA KEY_ADDR1 M* Q5 ~1 q/ O, o
- AND #BUTTON_DEC ;按键B或左减关
- {5 p9 A) x% r$ z" Z% N - BEQ KEY_A$ T+ r$ _, e% e; }) ]9 f4 k0 X
- LDA #$FF, j. n* M9 K4 c! k8 H' o
- STA TIME_LAY ;重设标题延时' s- j3 J/ n% a: U5 h
- LDA STAGE_TEMP: N, E( E: a! c. F
- CMP #$00 ;关卡比较; ~( O. j b; G9 j% \
- BEQ KEY_A
6 `7 D! T& J) p* S+ ?5 z% | - DEC STAGE_TEMP ;减关 W- P" E$ s0 v! c( ^$ B$ I K
- JSR MUSIC ;按键音效# x! ~/ K. G3 o/ I) P! q! U
- KEY_A: ;关卡增加* Y5 {1 Q0 e8 W
- LDA KEY_ADDR
" r( s4 r5 u' g7 s! F - AND #BUTTON_INC ;按键A或右加关
: E+ b2 F7 v& N - BEQ PPU_NUM_WRITE
3 V& x/ _5 ~! H M' } - LDA #$FF
( a; W! e% _# f5 o( K! c - STA TIME_LAY ;重设标题延时
' E1 y7 k8 Y3 c - LDA STAGE_TEMP
& C7 w" } W* Y: n& S4 b - CMP #STAGE_MAX ;关卡比较4 _$ h! S7 G( j! y% _/ F( x
- BEQ PPU_NUM_WRITE1 x0 ?) m$ N5 h' W
- INC STAGE_TEMP ;加关
8 {& ] b' o. |& I& t - JSR MUSIC ;按键音效
\ A7 }8 U9 U/ ~ - PPU_NUM_WRITE: ;关卡数字写入地址
. D* n3 W, h. W5 V7 A - LDA #PPU_ADDR_H
, B7 [6 k+ Z) P; ~ - STA $2006 ;设置PPU数字写入高位地址4 Q4 Q, Z6 k% v; }: M% `
- LDA #PPU_ADDR_L, F$ F, e( x) s# O" X' K( k
- CLC8 y! S" O6 t: Q' r" L7 b
- ADC #NUMBER_A% [1 d0 E+ @/ G5 ^# |* s
- STA $2006 ;设置PPU字符写入低位地址
: F% X$ ?4 T7 C9 V2 V5 P* t - LDA STAGE_TEMP. D |6 H4 k1 k5 v% ]
- TAX& F; g/ F8 d' q) j) Z# Z
- LDA STAGE_D1,X ;写入数字
1 H2 w/ e [3 T! J( \' H. k; k - STA $2007' \$ Z" v. O* h" E1 N0 Y
- LDA #PPU_ADDR_H# C- b7 ^: J( J( y' B5 M
- STA $2006 ;设置PPU数字写入高位地址3 p R1 r9 ]* B
- LDA #PPU_ADDR_L
0 B$ i# T3 g4 U. S - CLC
) Z6 M) ^. L' P9 j1 B6 n - ADC #NUMBER_B9 N0 D9 V; T- T# [& w b- l
- STA $2006 ;设置PPU字符写入低位地址
! |/ V: U, z7 r% y' H% j$ A - LDA STAGE_TEMP
# C5 ]. U) l+ n2 d - TAX
1 W5 i+ f! w8 V- e5 e" P/ {* u - LDA STAGE_D2,X ;写入数字
9 a0 ]" x5 B* q) U4 F2 X, ` - STA $20074 o& d/ q j) I3 o
- STAHE_WRITE:
4 ~' p% W. |! Q s - LDA STAGE_TEMP( a; I% g$ d( |+ b" C
- STA $2D ;初始关卡写入
4 i' C, J) v m, s; X - PPU_RTS: ;恢复数据
1 g" m) M! \, E% q" X- c3 E - PLA \5 L9 i5 W& d% v
- TAY
# |5 x y+ ]* D* W - PLA& p7 y& X% z6 o9 g+ V8 O# s0 t a, }+ E
- TAX
% d; W3 l' S, P) D" Q H1 t* O - PLA4 Y. j8 _: _, V2 V
- RTS
9 E# P0 P7 J, Y$ d1 L: A9 b - . p4 z; M- \' g y9 L! }; _; X
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
8 X. A; a5 s; y - .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
/ G7 H5 b0 c' p
. T/ K- W( E- V* a8 m! U- STAGE_D1: ;关卡数字$ d5 j% j: y( z3 @0 }
- .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 g, A+ Y+ z5 {
- : |$ L+ k y4 T( l- d& ]
- STAGE_D2: ;场景数字
& w3 w4 B! F. |9 J+ _ - .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 ^% |' K- O. {2 q
-
! }+ w5 m, `( ^/ S9 a, G3 U5 j- e -
* v3 r4 k* c; h( U( h1 w - MUSIC: ;按键音效
* A) c" L# _6 x \ - LDA #$3B ;音乐号
4 V \: R1 o5 c) p D2 b8 R+ g; F - JSR $919E ;系统音乐调用
- I" H7 Q+ R; }8 g( j) q6 @ - RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;
' p+ V" I& I" O% A" ~ 5.生命加满: 暂停后,按下键切换;- g$ e+ k) F4 M, `+ y! p+ `
6.血量锁满: 暂停后,按右键切换;
: N ?9 ^0 k, M$ C6 L+ F5 f . }* J- S" F9 A8 h" `: w
" ?1 ~3 ^! \& A# g) R: D

6 O& t( U) s" e7 {2 o: Z# Q% `; | # l) [, W' I; F0 l# s& Z
) Z6 a$ `8 L$ x' [ D8 ]FlameCyclone.ys168.com
% }+ X6 x- B# M7 Q4 iwww.nesbbs.com
: f+ Q' `' K% p, {% h* Y
2 k4 s0 ?3 \( T. V& a$ I; k% ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|