|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑 7 N1 A; ~! Z2 t
4 P' F q( {$ R( ^[FC][忍者神龟3][END选关]3 ^1 g0 F" ?- a9 J
+ X% S3 F. f |6 U( f# B6 f2 Q
时间:2017.3.308 p Q o$ L( v; p" T$ J, [
作者:FlameCyclone4 j$ v8 n: m, }" S: T# {1 \
内容:
2 x3 X, o/ H P. l0 C, l \ 1.关卡选择: 标题时,左或B减,右或A加;
/ Y O) o8 e$ w" E: a1 V: |6 _+ d' O 2.全屏击杀: 暂停后,按A键切换;
" k3 D H B. S4 F) c7 q3 I% N 3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0
1 E H2 S& q# e+ f3 @6 ?! g$ V5 k( ^- x4 I - ora_data:
% Y4 Z3 ~* E3 h c) x* F - .BYTE $08,$04,$02,$01,$80,$40,$20,$10- _' @3 {) |6 R9 C5 g, ?. w
- and_data:
9 `7 ?" S! S/ e9 z4 X C - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF; k+ [* z0 Z# E0 h" j7 t1 Z. g
- # `9 K/ h( z2 n% T O0 _
- button = $F8
* |' z2 U" ?9 ^ - flag = $60003 P4 N; C0 [. C* @$ @$ z
- pause = $00454 w0 Q0 |5 b9 _6 ]6 y; J$ T+ @
- . F. O7 F S6 [: `
- 9 R! a8 W2 L8 Q: j2 g s* j
- .ORG $F90D
1 H! M& L" o& t9 \1 K - JSR $FEC0
O$ v# n; [2 }5 B- Z* W- ]4 E* P, Q+ u - 1 }9 O$ E* \4 r! z, n% f4 @
- .ORG $FEC02 w+ j } [; _: Y, V( e- L
- STA $54,X
! k$ k8 m) M1 h; H# n3 q' L' x! v - STY $FA,X2 n" b+ a. G" b
- PHA
, N. L) W' r% H) B' Q - TXA, q: h2 u: v. z; O* I- d
- PHA
/ ~( t3 G% F5 p, y! Q9 S! R7 t - TYA& Z7 v% T$ u+ z, x" I
- PHA
. b5 [2 c6 V9 A - JSR KEY_OPERATE
7 e9 g; h" e4 |; a+ C" s5 C - JSR INV
! d7 z' ?, T( B, p8 r - JSR LIFE4 E& R) C7 t' |+ D; V: x* w
- JSR BLOOD) _) G O* A( k: N. x
- PLA! V5 B5 K1 W& s7 Q5 O
- TAY
. ]0 l( j& e7 k* [! ]6 \/ A( C0 { - PLA. T6 L u9 b* s' d# {) p$ Z
- TAX0 S9 o9 M1 f) s) p) \
- PLA
% a0 w" Y v6 O - RTS
2 v. m# X3 S4 v1 j/ e; i6 y; V - KEY_OPERATE:
: r5 R, y; V# R3 T' K4 I o5 j - data_protect:# I9 v7 n2 B8 B3 r
- PHA
8 [& f& i% S5 ]- y - TXA
# v$ K* r* E* y - PHA6 z" X* t" d0 ]0 ?# B
- TYA1 Z$ E" a+ W5 p/ u8 Y# p9 x* u- v
- PHA! S! ~& u; f* l0 ? K8 _8 V$ |
, D7 |, A' t% S' j# j# ?7 T- FLAG_CMP:3 e* u0 H9 T! Y/ Z4 |: d+ }$ m
- LDA $600F& u' L% j$ N# \; M$ {+ u9 a, Y7 X
- CMP #$7F ;标志数据初始化条件判断' n! I* d# `' ~
- BEQ pause_cmp P: e2 L" b' U. a# C+ j
- LDA #$80- k% N1 | z: T
- STA $A001 ;6000-7FFF写入启用
4 m: y* ]# y9 w- J - LDA #$001 f5 l I( o3 W4 A
- STA $6000 ;数据初始化( e$ a r0 U) l# b9 C+ v
- STA $6001 ;数据初始化 v$ X1 I/ i4 Y2 h5 q8 ]
- LDA #$7F
- ]" f* {' k: T2 [ - STA $600F
! B$ K, N. C) I; N# D3 r - pause_cmp:
! a3 ]; e; a" }& |* y6 l B8 n - LDA pause& R' Y; R/ A' F
- CMP #$01' W; S$ _8 }0 \5 m
- BEQ button_press4 t$ u# w7 x2 m7 J1 A9 {; G
- PLA
! d* n8 R& z# a: D - TAY
4 r' s5 y4 A R4 t$ j( R - PLA
9 i; c; `% ]0 H$ Q* y5 O - TAX
$ H' Y, R4 h7 w- B+ E3 E - PLA
# P4 f7 b N) m- E* `" U7 H - RTS0 k$ D. [. L O6 S
- ' Y( ~/ Q! v( l
- button_press:7 }& b2 ] c' j" X6 ~8 S. v
- ini_Y:0 w* t5 P- j* a, Y8 P- G) p8 H
- LDY #$00$ K) Z$ T" e( P: b3 J: p; b% W: j$ O
- button_cmp:
. t1 @% b, Y5 O( V' b( }1 i - LDA button,X
8 @6 K! J7 X, q0 D9 H1 X g- I$ r - CMP ora_data,Y
- T1 o9 B7 @% d$ ? - BNE count_Y_cmp
# a7 @' N' E- z: s k t' f - flag_cmp:$ T/ D3 C1 u; A- k/ P! B) v
- LDA flag,X- z8 J, U; B, C% b
- AND ora_data,Y
' N) B1 ~3 m0 v- K - BNE flag_and9 e9 C) K( D; U$ E! r
- flag_ora:/ r" l) N) \0 R4 e1 g
- LDA flag,X0 `6 D! F$ W& o# E5 ?& Z
- ORA ora_data,Y5 r0 n. e) V; a4 s9 R! s P, }
- STA flag,X
9 A/ O& m8 l6 h/ R& S( B8 R - BNE count_Y_cmp
, [3 i9 u" w% K - flag_and:; G- @, p! x+ V/ ^5 S2 K- l3 }$ K
- LDA flag,X
$ d$ l) S$ {% G7 _6 x9 F) s, R# R - AND and_data,Y
& W) g8 I! U/ P* \1 N - STA flag,X l1 `9 ^$ W) p; z: P$ a
- count_Y_cmp:
- h8 I, \4 n+ l$ C9 d - INY
! @6 j: f+ c1 U, K3 v0 E - CPY #$08
/ g- Q& h7 ~. U2 X% U: o. @. Q p. G - BCC button_cmp
% t$ [: } T& i8 P" i/ k -
2 p, e) s. _- r6 i1 \( a - data_extract:
* }# T2 y: m0 s5 g5 ]1 e2 i - PLA
# s; e/ Q5 \! L. x/ k$ C/ j; Y( B) Q- V - TAY9 k7 c9 p" N( L8 H# K q/ ~; v
- PLA
$ T& w# Q; \+ L - TAX0 N- a$ \; M& e. L3 D
- PLA
- q/ d3 u, G0 K7 o3 S5 F -
/ D& t( ^$ M: m! k8 m# ^# T0 P3 B9 K - return:
0 B: ~! {! X+ a! ]( ` - RTS4 u& C8 J- n- @- N7 p4 h; m8 d
- Z# w: P2 I- H' |
- 0 q8 c9 t# P2 @
- INV: ;无敌) l0 i( f+ `8 ^! {
- LDA $6000,X
# f U$ g3 X0 a( X4 V" C4 v+ }+ J* I - AND #$08' R D( a) w% ?( g& G) S
- BEQ INV_RTS$ v2 @" N+ H5 F. j! u0 {
- LDA #$057 w; W" g/ g* p8 Y Q& f- j& z l
- STA $04FF,X
7 y# m" J. e! W( R+ {. P! N0 ? - INV_RTS:. x& U5 X! I. M1 J/ U4 Y' v
- RTS5 u/ L& l Z9 B$ S6 j/ J
& O" J0 p( r( a5 x( F y) }- ; @: a3 m6 b R7 T
- LIFE: ;生命
6 a1 \6 m: i; l0 X7 u - LDA $6000,X! Y) o6 I( U1 |7 e8 v9 C6 O" A
- AND #$04
0 o2 G% b7 a8 o2 ~! P, ^ - BEQ LIFE_RTS9 G: T' F) H! ^: Z0 l# }/ L/ b+ i: p: P
- LDA #$09
! W+ w' l* \5 d - STA $6A,X
7 ~& ^+ K9 `/ M# V3 ~ - LIFE_RTS:* n; p" @1 V1 U# V9 r0 W
- RTS# a+ s1 a$ Q$ q3 J
- , q( Q# D+ ^( F. }& Y4 t
- 3 \8 F) `+ D$ ^( {1 a
- BLOOD: ;血量
% A1 Q& x! t8 N2 `$ \7 P7 G6 U - LDA $6000,X
+ b( x8 Y2 z% @; F- i- K8 c - AND #$01
% W& g# R0 X2 W" R% L" b5 `8 P' [ - BEQ BLOOD_RTS
1 @8 w; q( F9 d" \7 ?! k/ N# b9 { - LDA #$7F
4 I% U$ Y. ?& S+ i) K - STA $04F1,X [; s4 E* Y9 W$ X: {9 V- z
- BLOOD_RTS:! u9 s2 c* G7 q% c' k0 u2 v
- RTS
% r' t" H) l/ n" |" @4 v/ Y - - {0 q: Y) f+ T- d* v5 K
-
% F' U' `, p( O$ a& L - ' t# E' y5 M& o4 \, z1 Y9 J
- 4 `* Z7 E5 B- h# K9 t
- .ORG $D29F
2 w) h+ Z# q; I - JSR $FF80
; g% R5 Y- C; x; \( B& n$ a, v - 3 _# @( Z* ]/ e9 B
- .ORG $FF80
7 ^6 y; h/ B% u1 d3 b - KILLBOSS_BY_ONE ;BOSS一击必杀
0 y5 ^% G7 J4 F. j, w7 F - STA $0628- f* v+ h" F7 \; Q
- PHA
d2 Q% Y6 ?: Q - LDA $60009 `" k$ c: f3 J4 s7 D/ r" ]0 u
- AND #$40
: l( H1 b- Y, G8 S1 H - BEQ ADDRFF8E1 V8 p6 `% }: v [1 e' i# S1 g( F. X$ D
- PLA
( ?+ d3 a. b7 F5 w& Z7 t2 d) y - CLC ;敌方死亡状态判定
: K5 g* a- U8 n6 }) x: ]; f0 C) s - RTS5 n- C& f% s9 K9 S
- ADDRFF8E:
" L% g9 e" b5 U$ C - PLA$ r) x2 ~. `6 A4 T: u' x- ^, _( I* R
- RTS
+ ^5 T& E1 _8 i" {
+ ~" P5 p: @$ {3 Y. H( W/ B
- V' ^+ q3 V+ H& p' X4 }# f- .ORG $D151* Y1 j: k: i! w) _ ?
- JMP $FFA0
4 i& F+ \2 I, M; G- D4 z5 b$ Z -
6 d) d" {1 U% B+ z* Q - .ORG $FFA08 f4 S& ~ @" c% V+ @* a! K0 J
- KILL_BY_ONE: ;杂兵一击必杀
' m, c7 B& G: \ K9 P - STA $0621,X2 j# W$ Q" J5 l/ Q+ Q
- LDA $6000+ `# b3 \0 K7 S) j: ?7 H
- AND #$40- o* ~8 y4 B% d
- BEQ ADDRFFAD0 P9 Y4 e* U+ I7 R% p
- JMP $D19A ;敌方死亡程序跳转3 D8 Z+ y1 _9 r9 ^; N9 u
- ADDRFFAD:
" \) f; ]0 X% Q7 Y+ v; _7 Y& O9 D8 h - JMP $D154! z; z, ?6 b( ^& a
-
' l, U. L+ V& v& ]0 ? -
5 Z1 R' K2 T- j2 L% z* I - .ORG $A7F6
% M! e5 Y/ L! T! |- `$ I - JSR $FFB0, m2 C& M9 G- U: z
- + Z1 s; G" j5 o0 o# @. d& s8 V
- .ORG $FFB0 ;全屏攻击9 K6 {4 L( _7 z* j0 A
- PHA
" ]3 M' n; T3 o9 G9 T - LDA $6000# g' a* T- I: H, C4 |7 g
- AND #$80
4 g3 v( m0 p7 o' E - BNE ADDRFFBD6 v, E. C6 v8 G
- PLA# `' x9 P. B9 l }! M# n2 B
- LDA $0015
2 z+ t9 S) |* V6 z* F8 [, b" z - SEC& @/ ~% h' V" j! G$ l C5 @
- RTS" v1 l# n7 B) q, w* p6 d" z
- ADDRFFBD:3 @7 R8 Q2 p% B( A
- PLA' l& t+ {: j# d$ y
- JMP $A826* i1 h0 t& L4 ]+ A
- $ c2 S+ ?7 @. \
- 8 Y% r. {8 N- Z! b% ` C
-
8 W6 n3 T& h; m: q4 S - .ORG $AA6A6 ^5 k4 c7 X: c0 p" m: c+ S
- JMP $FFD03 s- q+ n7 g* E0 k, r5 W
- : ?3 r; c$ W. U [# E6 Y( m6 P0 u; L9 v
- .ORG $FFD0 ;敌兵动作忽略
9 c. ~- G; S+ U5 D0 e - PHA
d) `' [' B* F" A. k2 H( g, Z - LDA $6000; O, g8 Q$ C2 L9 n
- AND #$80
+ l5 i! T; N2 T8 c- h' e - BEQ ADDRFFDC, L" e1 T1 U1 \. f" a3 d9 E- E
- PLA7 O$ {, _$ \5 F, u' a" U( z
- JMP $AA72' M9 p( n; f) f+ A
- ADDRFFDC:6 q% ]/ B2 T: w2 R g' R
- PLA. r8 B. ~* z6 M
- LDA $0629,X# M. p4 j7 S3 r) [
- JMP $AA6D
% ]; i7 [' O" L - * o% E+ l O# M9 t+ D* O' D
- ;[FC][忍者神龟3代标题选关程序]
! j5 o: y$ k5 r5 Q R6 J - ;作者:FlameCyclone 2017.4.1
1 a0 r3 e0 t7 |; F2 {6 e
/ b6 ~. J& T! ?6 L1 ^% _- 7 i( `$ n( d/ y `/ k
- ;配置数据9 @8 v5 ~5 m7 q8 q1 L
- KEY_ADDR = $F8 ;按键地址) J1 O9 x7 U! s3 x
- STAGE_TEMP = $6010 ;关卡临时地址
, Q; [ p( Y: j4 w8 F - STAGE_MAX = $0E ;最大关卡数
7 B3 j3 N8 R9 q" T9 d - TITLE_A = $20 ;标题条件A' n% `7 Z1 J, s/ A! A
- TITLE_A_ON = $02 ;标题条件A有效状态判定
! |0 W& H. g' h' f* s - TITLE_B = $21 ;标题条件B* C( R% y C5 n7 E& O% f1 I
- TITLE_B_ON = $03 ;标题条件B有效状态判定+ \+ e. K( J9 P/ {
- PPU_END = $FF ;PPU结束符
8 H+ g" n) D0 o" J' l - TIME_LAY = $4A ;标题显示延时地址+ b9 B. ^3 e7 W& X) Q; i
- BUTTON_DEC = $42 ;关卡减少按键' O0 ]3 I" S) n3 b2 b# \/ Z. i
- BUTTON_INC = $81 ;关卡增加按键# ]3 R, O2 d1 u S8 M* t
- NUMBER_A = $06 ;数字A距离STAGE偏移量. A8 z7 G! a+ _
- NUMBER_B = $08 ;数字B距离STAGE偏移量# l% _- ^% q7 ~
- PPU_ADDR_H = $23 ;STAGE写入地址高位
/ M, I. s4 u6 Q1 f9 e - PPU_ADDR_L = $8C ;STAGE写入地址低位
: u' v* L& S' c. e0 y4 h - CHAR_S = $A2 ;字符'S'
8 [( {1 r" G/ e: W/ {' t6 a - CHAR_T = $A3 ;字符'T'
# ?. m, C4 f8 w( u, S: s - CHAR_A = $90 ;字符'A'# F c' Q# j0 ?
- CHAR_G = $96 ;字符'G'$ n; i) ^, z0 I" T+ G7 m5 k
- CHAR_E = $94 ;字符'E'
. d# Y# x" I+ p7 ]: t - CHAR_SPA = $00 ;字符空格$ k/ B% {( _/ E3 q& l, M
- CHAR_LIN = $AE ;字符'-'
1 W# @: a+ i$ o$ X: r - CHAR_O = $9E ;字符'o'9 G5 i+ q/ E! K1 i3 I: R
- NUM_1 = $81 ;数字'1'
5 d+ r, F1 ^ n. r% ]# } - NUM_2 = $82 ;数字'2'
, K$ m. N4 x; G0 c+ ]2 ?7 Y - NUM_3 = $83 ;数字'3'
% z2 ~6 C$ ~5 d# Z3 g - NUM_4 = $84 ;数字'4'+ H) {1 w8 ^6 R r) }; }1 e% a
- NUM_5 = $85 ;数字'5' x* z T9 Q3 o! _5 c( ?
- NUM_6 = $86 ;数字'6') I% n% S; I- j$ r5 r8 a' Z
- NUM_7 = $87 ;数字'7'
% K; x! o3 M9 C9 R3 }9 x, q - NUM_8 = $88 ;数字'8'* R4 k1 C% R2 N1 G5 i9 W" Z& |
- NUM_9 = $89 ;数字'9'7 _3 W+ f9 X$ z& C7 x) v" C; _, P# x
- NUM_0 = $80 ;数字'0'
# P5 ]2 V* E9 v- e, t - 1 U Z! n; l, o
- .ORG $F82A5 T# M; d: H% A8 o* n
- JSR $E700) m3 ]8 o: ^* N0 G m& b, N4 P o
-
+ ^6 B0 y9 w; @7 G" u* f - & `% U2 v0 z7 T) s3 y. c
- .ORG $E700
- n H: e2 A! t, W+ K4 a - ! f0 k$ P% {4 W
- STY $4014 ;补上覆盖的精灵写入指令
* p% J1 s) l1 w0 M - PROTECT_DATA: ;数据保护 R7 F# t$ G+ t/ c6 i; |. y) X
- PHA ;数据保护开始
5 ^% _/ g- {/ |+ B% u - TXA
c' @8 z: D1 ]0 Z: B# p- V - PHA. V, T) T+ j" P T+ [5 I7 o. r2 ^
- TYA
1 n; ]/ `5 P+ J T - PHA ;数据保护结束
* g8 B1 N' \% z+ s2 s. K - LDA TITLE_A, ^7 W. v: b' ^/ C7 k% I
- CMP #TITLE_A_ON ;比较是否为标题画面3 w2 }3 r+ v/ z7 h) O; x
- BNE RET8 H n) A2 e+ k. [# z* n
- LDA TITLE_B& \: `; f- H9 a
- CMP #TITLE_B_ON ;比较是否为标题画面
; b- S7 S# u" G! I2 @" N6 O" m0 D# V - BEQ PPU_STAGE a3 m3 g }) W! A% B5 ? B
- RET: ;恢复数据
* v6 N- J Y5 V5 {: V- U - PLA ;恢复数据开始
' u( M: K% |) M% c" i' p - TAY
4 c! v% S) T* p3 {3 y, K - PLA0 |6 M, O0 n% a6 p1 a9 l
- TAX
% U( n" R' O- h8 w& K* n - PLA ;恢复数据结束% V r7 C1 d7 {4 F% r2 h9 D! G: v
- RTS ;返回
# K3 P3 W2 ~3 D f0 _3 L - PPU_STAGE: ;字符STAGE写入程序
1 `5 P* ~% A3 h* o, d1 L0 ^ - LDA #PPU_ADDR_H - v: h$ x( k: d6 }) {- n
- STA $2006 ;设置PPU字符写入高位地址
6 ~1 I4 {: N$ D2 C, s" J% \, A - LDA #PPU_ADDR_L
; S& `- r8 z! N' F! W - STA $2006 ;设置PPU字符写入低位地址. e ?$ j; i; @3 W
- LDX #$00
5 u1 m8 y8 K# s% B$ Z - PPU_STAGE_WROTE: ;写入STAGE字模! a4 v! _% x( Y9 Z
- LDA STAGE_DATA,X
: a! t4 D& m1 m7 y: n2 v7 H - CMP #PPU_END ;判断是否写入结束
0 w, v. L S3 t - BEQ STAGE_CMP: ^4 U0 x/ @4 k+ j* I) L7 ~
- STA $2007, E0 S, o1 h' K# o7 r/ ^ l
- INX+ P- _9 x5 u) a* V. D. y
- BCC PPU_STAGE_WROTE/ L! E7 I& q5 R5 @9 q: I* j
- STAGE_CMP: ;选关操作, F/ Z+ e2 f% s, d: H! v7 l
- LDA STAGE_TEMP
. g; z' D2 L) j' x! C" Y - CMP #$FF ;关卡数据初始化条件判断; e9 U: P' a( @( r+ L
- BNE KEY_B
! R* f' E/ W6 q - LDA #$00
5 | w7 D& V, O; u- e - STA STAGE_TEMP ;关卡数据初始化
. J: m' W2 |2 O" k$ c$ k - KEY_B: ;关卡减少! L! V, H+ p; k$ W" R
- LDA KEY_ADDR0 x0 O& T* A7 O0 p
- AND #BUTTON_DEC ;按键B或左减关
^! ^$ j' c2 O3 z$ Z - BEQ KEY_A
+ ? w3 ]1 A, r. T6 M( Q3 p; \ - LDA #$FF
. J. _; ]7 I6 t/ z4 ^ - STA TIME_LAY ;重设标题延时
" _( S$ S* l- H4 H0 T - LDA STAGE_TEMP! v8 d) C; C. h
- CMP #$00 ;关卡比较% _! v" N7 j# M$ R
- BEQ KEY_A
8 P) B* |- l, r4 _& U! q - DEC STAGE_TEMP ;减关
1 P$ {5 z+ m7 {8 G( V - JSR MUSIC ;按键音效8 p" h/ E6 t5 v
- KEY_A: ;关卡增加4 T. P- C. F* P5 z9 s- R: @
- LDA KEY_ADDR" ]! V2 @+ ?2 O1 A W
- AND #BUTTON_INC ;按键A或右加关( M' c; T; s3 E9 m! y
- BEQ PPU_NUM_WRITE1 J O8 o. t- l5 q! ^% D
- LDA #$FF
* E) G0 g, Y. s2 M$ D6 S& I7 o' h - STA TIME_LAY ;重设标题延时; o, d: g; e' I( p# t2 g% U5 Y
- LDA STAGE_TEMP# H1 I8 a* E$ n$ @+ k2 l, Z
- CMP #STAGE_MAX ;关卡比较
6 \) [/ h1 N3 ~! a; w. h - BEQ PPU_NUM_WRITE
/ p( ^# I2 E) x7 f3 K0 t; E0 W - INC STAGE_TEMP ;加关
. q2 |% B! r8 r4 {$ p/ D4 m - JSR MUSIC ;按键音效
6 r' f% W; F" E1 k% k U - PPU_NUM_WRITE: ;关卡数字写入地址
+ ^4 [/ u0 ]% t' D; l$ R' ]4 T- K - LDA #PPU_ADDR_H
2 c: V* V5 ], x) q# y - STA $2006 ;设置PPU数字写入高位地址
# y4 _, k7 U | - LDA #PPU_ADDR_L
1 J; K+ N" d" {( W5 F( z7 w - CLC' z' Y0 @# `% J& h( {+ a
- ADC #NUMBER_A+ {. n5 K8 e7 G, W# b, E0 l& |1 g4 j
- STA $2006 ;设置PPU字符写入低位地址
) n8 _( Q2 b2 I: [* p& E# R: T - LDA STAGE_TEMP
' \/ s L1 ]. _: Q - TAX2 S* k! [/ p0 ^1 ?" N! h
- LDA STAGE_D1,X ;写入数字0 X' T$ Y. x7 B, _2 G
- STA $2007
9 l7 U2 R8 v# w! `7 h# I - LDA #PPU_ADDR_H
8 E1 e/ E+ h( e4 U* T5 [/ F* ` - STA $2006 ;设置PPU数字写入高位地址* \; @% K" N' f4 L
- LDA #PPU_ADDR_L
% o$ m: C, W! ]- J( x# r8 Y9 [& @ - CLC
* n7 ?( e2 l! z' o - ADC #NUMBER_B4 w. _! u( C+ v( O" l
- STA $2006 ;设置PPU字符写入低位地址0 g- w' u: \' U' N$ @, p
- LDA STAGE_TEMP
" Z/ z0 ]. q& L% U - TAX6 ~# G4 |( Z8 J4 {* G- i8 e! X
- LDA STAGE_D2,X ;写入数字
& s2 F0 M% E2 j5 U c% ] - STA $20072 v4 F2 K# J# h) ?" J6 E6 W! ~6 _
- STAHE_WRITE:, M& j! E# m \7 p) a' i
- LDA STAGE_TEMP
, F- k# Z" | H8 |- z - STA $2D ;初始关卡写入; w3 O( O, d$ l+ E
- PPU_RTS: ;恢复数据, p! Q5 C& D; S) m6 ]! S
- PLA% l' k5 K6 L# f T/ |
- TAY
- D5 I. F& A9 Q) H1 F1 x - PLA+ d; f) |1 L' ^4 h
- TAX/ {$ ^0 N# P" s4 A" o3 D: Y
- PLA6 j3 R9 q6 Q: O: z+ a
- RTS. g, X" V5 p' c8 Z+ Q/ k; L7 K
-
/ t, e) a* |% I8 m4 q( W - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据8 e5 z6 y9 a7 d' H% N
- .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
# h/ M9 M. _% ~# @
! z# M% K e! c! z6 ~# u. U5 Y- STAGE_D1: ;关卡数字; {8 Z2 ~. ~+ T4 e$ f: I7 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: n5 `& a8 ~% P4 o) |6 K
! d, l5 p% K% n" \% M* m' d6 {- STAGE_D2: ;场景数字5 {+ Y' Q u" b
- .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+ j$ M8 s. N: u1 o/ V( ^
-
/ ~. Y ^) y4 K: I - O; r& C- E/ d% w
- MUSIC: ;按键音效
0 U+ U, j5 X" s3 T - LDA #$3B ;音乐号+ q! X5 f g. m/ \6 y5 l9 T
- JSR $919E ;系统音乐调用4 {* ~3 Y3 z3 Q: g
- RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;9 y1 M4 I6 Y/ j" y0 k
5.生命加满: 暂停后,按下键切换;
, q; f! D5 V# j0 E 6.血量锁满: 暂停后,按右键切换;
2 P0 H0 F+ k- U8 m 2 z6 l. C# C0 Q! p& b2 Q. M/ X9 [

! F& x. c% n- `1 M . ?; A3 A4 Q( M9 [

* G/ N |: W4 j' p! J$ }$ k; O; n, Z* q2 o" d! C. E- w: g
FlameCyclone.ys168.com
+ q& x* @( U4 N# {9 F3 [: M5 Fwww.nesbbs.com4 a- n- W& _: I+ D, U2 N& ~
/ B0 S& k5 ^' s
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|