|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑
1 B. }; g- J" n$ u' Q \
; |3 N& I. v: s& s" I( X; [! H[FC][忍者神龟3][END选关]
, p3 N' [# D4 E% ~% R
/ {. e# h7 a! r, g- S S' G时间:2017.3.30
8 ]0 x& D( P1 C作者:FlameCyclone9 q5 B6 [$ ^( k; V# F7 z
内容:
9 u8 L) s6 Q& _' f5 l( l" [, D 1.关卡选择: 标题时,左或B减,右或A加;
% j, n5 G8 L6 I( K. T 2.全屏击杀: 暂停后,按A键切换;
: G$ y& K P! [0 M, x' `) H: w 3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0" A3 V- p( Y5 F5 S; |! G2 T
- ora_data:
8 a v# }9 p& T* c9 _& a - .BYTE $08,$04,$02,$01,$80,$40,$20,$10% Z) T! X/ O$ b7 m6 h7 r
- and_data:
* w6 L6 H0 s1 Q" \ - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
* T& }" V/ D9 _8 u" o - - Y! P; I+ [4 w
- button = $F8
9 ^& o( {- [ z. z8 w; q - flag = $6000
4 U6 ~: b/ { w - pause = $0045
% p, M2 x; q6 {9 i6 A
3 Q* t5 L' x) w% ^1 s3 C' b- , h: n4 a, O5 U. X* C1 p* G! L- u6 s
- .ORG $F90D
! {' x9 U9 [& E! G& Z0 M4 P - JSR $FEC0, g5 e! x/ m) Y7 F8 }
-
6 n9 ?4 |$ T3 v- W! V; y2 u( q - .ORG $FEC07 y, Q7 v8 ]+ D& S4 w5 J* H
- STA $54,X6 ~3 d, i4 e( e" ]0 ~! P
- STY $FA,X/ w* Z+ @* D1 z8 u: h/ |& N
- PHA; P' {3 V+ n) @9 ?
- TXA; d5 D* g( F+ q8 [8 g) X1 }; ^- G: r. Y8 k
- PHA
6 I; q6 ~& @4 J+ ^. x - TYA
* ?( f+ V& G- _& g; T - PHA
; R( J, G4 Y( G$ D9 X - JSR KEY_OPERATE
) j: j2 Q7 a( w: { - JSR INV) \+ ]! |. Z! O
- JSR LIFE
' L% v2 D2 {* N! j! ]8 M7 I - JSR BLOOD/ l2 G1 E8 r% u9 Z# d! p$ p
- PLA
7 P3 c. _1 p9 D. L5 ^# U6 w - TAY
6 X3 k" T8 k; j7 ]6 R6 u - PLA. O4 Q5 \0 V7 F- Z% Q1 ^
- TAX& R& C1 V% Y4 E2 W" N) c
- PLA; E+ [; l) |; T) I+ W/ t
- RTS
7 A5 M& k, C n& }2 S# o, ~ - KEY_OPERATE:$ Z9 L0 |. g5 d9 ? E1 Z- x
- data_protect:
6 y$ @" \" `% q6 r0 p - PHA; B. L+ L, Q# B) Z8 Z
- TXA
/ K, C% }" a0 q4 y6 T% ?( s) \ - PHA
. z5 L' b! ?5 I# Z! n9 }* U - TYA2 }. i' K' m8 u# }
- PHA
! w7 D7 j6 s' c/ d) e - 5 _8 E" t6 }+ W$ O7 f
- FLAG_CMP:
X' @* z4 r3 r9 x* \+ e: F - LDA $600F
9 t. M3 R( B, ?: T. u* S* y, t4 L4 i0 \; s - CMP #$7F ;标志数据初始化条件判断
9 p8 F( u5 z: S8 Q+ R8 D3 D) y* v! t ^2 X - BEQ pause_cmp5 t. H" J+ @1 W. U% }( I
- LDA #$80
! w5 R4 ~+ Q9 ?7 t - STA $A001 ;6000-7FFF写入启用+ f2 p2 J8 u7 {5 F0 h
- LDA #$00
6 O Y3 J2 r/ P- x- u6 f - STA $6000 ;数据初始化
4 }/ Z2 e2 V' Y+ X - STA $6001 ;数据初始化; j/ q2 f2 H0 E+ i
- LDA #$7F5 J6 f X+ `/ h$ E( S$ Y; s
- STA $600F/ A( P6 ?, J8 u
- pause_cmp:
# g! C! `3 Z3 Z% g1 P - LDA pause
& L$ a4 G9 H. {2 j6 K& V - CMP #$01
" a$ A1 C: u6 b! Q) t' V5 L - BEQ button_press; P8 Q* |- }6 g6 T+ V
- PLA, a9 N5 M: ~9 Q5 I* J; P
- TAY
7 L# D$ S3 j* s! @) ] h" m - PLA \2 z, U7 t9 h& F* K3 f
- TAX R# o) ~3 ]! H; G# t0 b6 o
- PLA% |. W! B# X. Z8 w. B
- RTS6 v0 V9 C* b" `; {; z
+ |# f( v0 U+ V' S; [- button_press:
- E9 Y- S4 e# L) N3 o - ini_Y:
( H" B2 J8 F2 s4 j+ f - LDY #$00) p2 c: |/ q7 }
- button_cmp:
" `- ]* {5 N r( p) F* } - LDA button,X
; g3 s) ^6 ?! g, Z! Q3 g - CMP ora_data,Y3 m/ E6 G7 ?& ^: D
- BNE count_Y_cmp) ]/ x+ z. H- T
- flag_cmp:9 {8 o% S) }3 d9 v4 ?3 [
- LDA flag,X+ X8 O5 x2 G2 l0 y
- AND ora_data,Y
. ~* C. Z6 p! `6 s8 E$ E7 ~ - BNE flag_and
0 \0 T6 j" R: P+ ~5 c - flag_ora:
$ D% T' T" A, f& E8 j7 m - LDA flag,X
/ K; z: k& h- O# V - ORA ora_data,Y1 L6 m2 o! y5 P) E, H
- STA flag,X& a5 B8 L, I; o* K; n
- BNE count_Y_cmp* v, J7 _7 f9 T7 j* r% b( {
- flag_and:
* [4 A: ~4 x1 P3 x: P2 K! o2 h5 R - LDA flag,X3 A3 _% t, L; O9 w
- AND and_data,Y0 E' P" H; H8 L: F N* G- c7 q
- STA flag,X
5 T) m8 R. p+ c1 h2 s2 B - count_Y_cmp:8 X$ U" M: F' J1 L
- INY
6 q3 G+ s1 l1 ?8 w$ j- L - CPY #$080 B% g1 R' \6 q2 o6 K( r5 d+ A, u
- BCC button_cmp( [1 T W% k( |8 z2 h P& Q
- ! d* \( T5 \! u5 ` x
- data_extract:" O- J) Q7 D2 P! f3 o6 m s2 M
- PLA& ~7 ?) s) b# }1 v: i l
- TAY
2 j- O* |4 k: T& P; G0 B5 a - PLA& O5 G: _. A$ N' R: z0 i* J3 C
- TAX
2 b1 Q& ?/ t- s$ f+ [0 n" d - PLA
# V. T2 b! \4 V" ~ - ( O' `; }3 a h5 H9 c$ d8 ^
- return: r) `3 {3 n: z! o: X
- RTS
4 }1 N$ m, m2 q0 C8 f# X0 [1 _ - ; j6 ?! m% b7 @6 L- [9 }% z3 z A
-
6 u; G9 E+ l9 d) A: p" a5 P - INV: ;无敌2 I/ _0 w# Y! z1 C4 q3 O" @
- LDA $6000,X
0 m! P/ q: R1 x% D- k2 [ - AND #$08
6 `* _# P: n- A5 r3 D7 j - BEQ INV_RTS
$ E, S' P; \& r# z. f - LDA #$05
5 n1 d5 P* M: z8 v: J - STA $04FF,X+ p- U' X/ W" b, h$ b' U# X, @
- INV_RTS:3 i: G! V- O# w2 {. G6 |/ u) G, e
- RTS
& d' c2 c! W" w0 `/ S1 Y; P - m* R& q, C! |3 I4 t
- Q" Z* H) q6 `' Z
- LIFE: ;生命! K' p5 ]9 H9 ?" j
- LDA $6000,X3 Y# a6 ~! w1 w# W' m8 R
- AND #$04
7 b8 Y! a# u& Y7 r# W. h1 k - BEQ LIFE_RTS7 T6 Y% a5 B5 p$ [' T: z
- LDA #$09
3 v2 H k5 y' ^3 [ - STA $6A,X
. m, l' o$ q6 r8 p - LIFE_RTS:
8 [- N3 |* e# W - RTS6 l1 F& C4 G. l1 x" i; U+ r* S
- 4 q4 d: j2 A( B7 F y
-
( P* E$ U9 B0 R# t& A3 K C - BLOOD: ;血量$ M5 @% S3 n: U$ P* J/ @
- LDA $6000,X" n. I; M3 P$ C" U" S" q) a
- AND #$01% s; c/ N3 G% P8 ?' S6 ]( X
- BEQ BLOOD_RTS
- n) w4 d! s8 s" F* ^# {4 Y* \ - LDA #$7F
# h$ {6 g* T( R* A3 | - STA $04F1,X% J6 J6 k- D! U2 D
- BLOOD_RTS:
! y4 i. } Q, x3 I - RTS- }; S6 B I' F+ y. u6 w& Q' S3 U
- 3 p( y8 S2 g: T
-
1 F: y1 [4 C" L6 W! o0 x m0 h -
% n+ }' Z. {% e6 m+ l% M7 E -
+ V8 f$ o7 B( v* X" | - .ORG $D29F
5 p* H Z; `0 B( s - JSR $FF80* i! N5 q s: S' E4 N' |
-
8 i7 s# M" r& B( e9 N h - .ORG $FF80
1 o: v S* ~! W - KILLBOSS_BY_ONE ;BOSS一击必杀6 T4 D8 d) ~& z' y+ a
- STA $0628
T- {8 u+ x' O/ H" O8 `3 ~( e" V - PHA+ |; \# f) `! C6 h. B' n& Y9 }1 [
- LDA $6000 h/ I e, V! ^, x" Z. [! e
- AND #$40
$ x' A6 ?# X: D6 l7 b7 k - BEQ ADDRFF8E
7 n* S0 d0 N( g e/ r% \- {7 u! H - PLA+ ? f2 K- }4 ^3 L' v
- CLC ;敌方死亡状态判定
9 K! n+ M' ~# b+ {5 r4 p0 d6 V& u - RTS- V4 `( Z+ T' ~
- ADDRFF8E:
( X5 u2 V, B/ d - PLA+ h, G' |8 ]4 e2 }( j* S
- RTS
% L- j6 o# s" q- | - 9 l) f0 I& f5 {) ^' R& c4 {% [
( M* |0 ~# J$ w7 i7 K8 e; ^5 I- .ORG $D151
a( K: U8 d4 |- ^* F - JMP $FFA0# o/ S F4 e9 q F, V: K1 R
- 7 I% ~" h5 z, ?3 x a9 ~) [
- .ORG $FFA0
& J- @+ u2 ~2 P" E5 D$ j' s - KILL_BY_ONE: ;杂兵一击必杀2 x& o b8 T/ @6 w* ]; q' |& U
- STA $0621,X8 z, H+ P4 ^7 y6 z9 ~- b) w7 X6 i/ S
- LDA $6000& e- l* O8 l; \+ I5 ~
- AND #$40" c4 Y' h, \+ _/ C2 W
- BEQ ADDRFFAD0 i6 ~& Z2 ~4 X( g, U
- JMP $D19A ;敌方死亡程序跳转
8 [( s2 Q) k1 v' m - ADDRFFAD:6 q" {( L" h; v% B8 W9 Z
- JMP $D154) B& G0 d3 b' Y7 h8 R: B i
- 1 i8 R( |( g: Q/ V
- 4 c: `" B8 L/ ]1 {- ]+ Z
- .ORG $A7F6! ]9 J: P3 e6 k% Q, n2 v
- JSR $FFB0
( o- N$ N) k4 V# s* |) A - 3 g6 M4 U. z) k1 X1 C9 }/ X- u
- .ORG $FFB0 ;全屏攻击; l* ^! {' X* \4 y8 a% Q) ~' [
- PHA+ N/ ~, r; I# V6 u( Z
- LDA $6000$ c5 Q; h e! X+ {% I+ w
- AND #$800 Z* z$ m" ~7 m9 ?. ?' X5 x# G8 h$ u
- BNE ADDRFFBD* C$ d6 {0 C% b7 ^7 _
- PLA- Q" E& L8 f* s9 \* v: u
- LDA $0015
; F5 h; j! Z2 p, Y2 u7 D, ^ - SEC
; Q, c5 l3 l9 M& ~) L/ R: A; Z - RTS$ O, F5 {! s) \* p- v% S; Y
- ADDRFFBD:. z* `, c L" _! `3 g
- PLA
9 V% \1 W4 A; e/ \; L - JMP $A826$ K9 D# i" }5 d' v" A
-
9 n9 g6 F" |7 x3 F8 P - : ~0 b; O/ T5 y0 e3 t* x- \4 _
- 9 a e8 ~. z$ X( Z0 Z0 {* }0 {
- .ORG $AA6A$ M4 [- N1 b* _3 k8 g, g6 k
- JMP $FFD0
) O4 }* F6 Q* n, X$ [/ o -
$ `# j: n, v7 S - .ORG $FFD0 ;敌兵动作忽略- T0 C% v+ \( _$ R8 N. D9 Z3 n- |
- PHA
7 G0 o2 {/ `* I* u5 q - LDA $6000- N8 t h# a% {! j* l3 ^/ d
- AND #$80
) I# ]8 ^" ^" h3 ?. y7 e - BEQ ADDRFFDC: M( L L5 t+ E) W0 P
- PLA, o( K8 s7 R0 q, t1 L( j6 O8 R
- JMP $AA72
* U7 Y( N: P$ f* E5 N - ADDRFFDC:
! _6 m( e. H5 ?2 ]3 j - PLA
: a$ j9 o: O8 H/ _- H& u% } - LDA $0629,X4 d% z3 w, r, ]
- JMP $AA6D5 e3 p F& f+ f+ D+ O# M6 Z' w
- : x! R% d) L }0 F
- ;[FC][忍者神龟3代标题选关程序]+ z5 i, u4 b. ?( \% R8 b" f) F |
- ;作者:FlameCyclone 2017.4.1
/ P: s1 f& S+ s1 h& x! e* W - + ~$ X' J# l- G* V5 x9 u& g$ X: z* n
- 3 c; S @; U" \8 ~* R! I/ @; O
- ;配置数据
: o p6 F" }6 M4 |( V1 p" d! H - KEY_ADDR = $F8 ;按键地址3 N+ A' J6 ]* b0 V
- STAGE_TEMP = $6010 ;关卡临时地址1 K2 }# B, G9 e( x/ B
- STAGE_MAX = $0E ;最大关卡数7 d7 D2 Z- d! O; Q Z- ^' T8 g
- TITLE_A = $20 ;标题条件A$ v: T+ [' z' i$ \8 f
- TITLE_A_ON = $02 ;标题条件A有效状态判定
0 f; V/ k: G- h6 ^; ` - TITLE_B = $21 ;标题条件B
8 v; {, g2 I1 S9 \# M7 I9 x2 F! O - TITLE_B_ON = $03 ;标题条件B有效状态判定- t0 o) J X, d5 f
- PPU_END = $FF ;PPU结束符; ?* {7 j1 }5 u7 n O1 z8 m
- TIME_LAY = $4A ;标题显示延时地址% p$ R5 [+ S( t; R4 z3 R2 b
- BUTTON_DEC = $42 ;关卡减少按键
/ V$ a7 e5 C; ~ - BUTTON_INC = $81 ;关卡增加按键. e3 n9 R" W( V8 |2 ~
- NUMBER_A = $06 ;数字A距离STAGE偏移量1 }4 v( n5 C i# z1 M
- NUMBER_B = $08 ;数字B距离STAGE偏移量
5 e/ a7 G# I" A' \7 a - PPU_ADDR_H = $23 ;STAGE写入地址高位
# M9 ~: l$ z; z, i2 h" r - PPU_ADDR_L = $8C ;STAGE写入地址低位: q, K) ]% d7 R+ w, N( c: _
- CHAR_S = $A2 ;字符'S'2 _+ X8 h2 Y# v& Q2 l& ^
- CHAR_T = $A3 ;字符'T'
$ ~! N+ x4 O! j9 A - CHAR_A = $90 ;字符'A'
0 W# T1 E. [- A7 t; X. |8 C: P - CHAR_G = $96 ;字符'G'
. [( {6 I8 a$ @. ^0 j - CHAR_E = $94 ;字符'E'
) F: c( h* O) K5 @/ i& T - CHAR_SPA = $00 ;字符空格
9 |3 [2 Z1 [9 [' i2 S - CHAR_LIN = $AE ;字符'-'
0 T7 c4 k* P3 }) d F2 o) U5 p - CHAR_O = $9E ;字符'o'
0 `0 O& R- `( I5 Q) H" r* |/ f - NUM_1 = $81 ;数字'1'+ T& \/ P# \1 {
- NUM_2 = $82 ;数字'2'6 h# a9 c! @4 P
- NUM_3 = $83 ;数字'3'; d1 W1 z2 m# N: Y5 z) m2 ?& I
- NUM_4 = $84 ;数字'4'7 b# Q+ Q @0 K' O
- NUM_5 = $85 ;数字'5'
. H4 P" q+ h- C - NUM_6 = $86 ;数字'6'
( H, T# G9 p; [! e* o0 t7 W - NUM_7 = $87 ;数字'7'" e# f- d0 t* C: Z# [& i0 P
- NUM_8 = $88 ;数字'8'& [9 `6 a- d5 @+ r
- NUM_9 = $89 ;数字'9'/ a* P4 v- `3 k1 I
- NUM_0 = $80 ;数字'0'
# z! z. a- R) L+ ^ - 3 h( l, v4 y% n! a5 r
- .ORG $F82A) [! L/ ^/ t4 B ?/ T8 J
- JSR $E700+ Z( h" \; }. T. l0 A
-
4 `; w2 ~ u- Q' b6 T - . Z, o% h" m9 @
- .ORG $E700( p# L6 W4 T, N( B! s8 }
-
+ \( U4 c: e. P( e. e - STY $4014 ;补上覆盖的精灵写入指令
# i( ]- t; ?: x: w! a( }4 M( y( v2 R - PROTECT_DATA: ;数据保护( Y) q/ C' m# a( l+ r' ]: H
- PHA ;数据保护开始
' _, M6 n* l& i K& ^/ Q - TXA4 ]& {# U/ @7 _1 X5 Y9 D5 c
- PHA+ x+ V3 z: l, _( h! Z5 [* h/ b: E% W
- TYA O' @( L9 U0 Z' [4 k
- PHA ;数据保护结束
& z' }0 \% X/ p4 O7 _8 p - LDA TITLE_A
+ h, q( `# Z7 n8 B6 l/ ~# `. ] - CMP #TITLE_A_ON ;比较是否为标题画面3 u$ V! i, d: k5 F# ~2 [
- BNE RET
2 u& m7 ?$ j% B; S5 E, {9 D - LDA TITLE_B1 L' a; u6 s; m4 X. n9 e0 G5 A
- CMP #TITLE_B_ON ;比较是否为标题画面& |# i% n9 @6 z( j; d; k$ G
- BEQ PPU_STAGE
$ b) o1 M8 {$ j( H - RET: ;恢复数据
8 \0 n' ]. N8 ] s! K& F - PLA ;恢复数据开始8 s2 I* B( O+ ^, V. h
- TAY, p3 y8 N5 w2 P1 I
- PLA
/ m5 G, W4 ?; {. }, M3 |/ I - TAX
4 J4 H9 s9 @) z( w4 D. Z) d - PLA ;恢复数据结束
& [$ J' N0 M! @7 n- J! L - RTS ;返回
' p3 O6 ~6 k8 d$ L, v6 ? - PPU_STAGE: ;字符STAGE写入程序
$ E- ~ [# E4 I* o( P( f - LDA #PPU_ADDR_H + T& G9 L1 T& ]: z
- STA $2006 ;设置PPU字符写入高位地址; [& U, f, M/ D: `! o) S
- LDA #PPU_ADDR_L
: {" v% r7 k. S6 C - STA $2006 ;设置PPU字符写入低位地址9 n k% X8 ?! w" q- M! }- F1 q+ a
- LDX #$006 {* B, g& t2 h$ W* Q
- PPU_STAGE_WROTE: ;写入STAGE字模* B/ ~ j9 w' G0 U
- LDA STAGE_DATA,X
- j0 [) s: h5 G$ c6 c; I - CMP #PPU_END ;判断是否写入结束9 {/ d+ Z3 h' b
- BEQ STAGE_CMP; S, G1 T3 E7 s9 K6 X6 a4 x
- STA $2007
6 E, p) a9 w1 T* M2 i6 \ - INX% X1 @; h% p3 D% l
- BCC PPU_STAGE_WROTE; q, `6 }. P8 R5 M# g9 R
- STAGE_CMP: ;选关操作# p& T- T6 g! Q0 t+ U6 b* E
- LDA STAGE_TEMP
8 `; {# \# o: V" w0 I5 z - CMP #$FF ;关卡数据初始化条件判断
: L0 @* n' h e0 F - BNE KEY_B
' b0 l9 w" \ o. c6 j) x - LDA #$00: T0 v3 q& Z6 {8 V& c2 m! X
- STA STAGE_TEMP ;关卡数据初始化5 b4 V% U% v$ K. D1 I0 L
- KEY_B: ;关卡减少
: P9 O: l9 ^2 j' |3 J - LDA KEY_ADDR
/ c0 |! c; t( Y% I- P) M/ C - AND #BUTTON_DEC ;按键B或左减关
. e. r: `8 c2 }( @0 }7 P% p$ E | - BEQ KEY_A, F( I2 v ~) m- M5 S
- LDA #$FF
2 k# g$ w/ e$ c! w3 B - STA TIME_LAY ;重设标题延时
0 Z4 O( e4 T6 k, r4 k0 |2 d3 s/ q - LDA STAGE_TEMP# N C [* Z: A$ w" J
- CMP #$00 ;关卡比较
- S! c$ v( N( Z! t! J9 `' T/ P - BEQ KEY_A- \! N+ Q9 S, ], ]- T+ j: P+ ^' r
- DEC STAGE_TEMP ;减关
0 V- a/ u; ~' v5 {9 y3 c - JSR MUSIC ;按键音效
" }0 L x2 ?; C( s. D: @ - KEY_A: ;关卡增加& V3 o$ Q; v6 j. E+ |2 p* |
- LDA KEY_ADDR
: g8 ^- a4 C% w6 U9 k) i$ F - AND #BUTTON_INC ;按键A或右加关8 \7 I4 n/ f; }) v# Q; U m' h9 b$ @
- BEQ PPU_NUM_WRITE
& d( O2 m2 J2 ]2 q/ W% ]% c - LDA #$FF
1 j5 {$ I5 u- r" D3 _ - STA TIME_LAY ;重设标题延时! _# F5 Q6 _ h N
- LDA STAGE_TEMP
. e5 V/ l6 x& S/ E ^ - CMP #STAGE_MAX ;关卡比较
% J& M: v' S* j9 G X0 _$ v - BEQ PPU_NUM_WRITE
/ d3 p( Y ]- a' X6 c7 \1 k - INC STAGE_TEMP ;加关
% H$ d, {$ [; r8 C - JSR MUSIC ;按键音效4 X7 o: M. M8 d3 R+ L- L+ Y% d6 ^
- PPU_NUM_WRITE: ;关卡数字写入地址. K" ~& d. { l
- LDA #PPU_ADDR_H
1 @! A$ f( ?' D: C- C# D: K% L, ]* L1 q - STA $2006 ;设置PPU数字写入高位地址$ D$ W( P1 ~3 I$ L% s u
- LDA #PPU_ADDR_L
3 q/ B3 m- q3 Q6 b/ J" y - CLC
$ m f! t5 I# V1 F3 P* {5 U5 s# h7 _, a - ADC #NUMBER_A
8 B p; H8 L- Q2 m: |7 E - STA $2006 ;设置PPU字符写入低位地址/ D4 a3 N$ U# {4 D+ k" Q; Q
- LDA STAGE_TEMP3 ^2 ~0 W) f @2 D
- TAX: h# M2 O# H+ G8 \) r
- LDA STAGE_D1,X ;写入数字, t& ^! ~ A2 n8 F* {0 h
- STA $2007; U" d, T! Y4 \9 E9 l9 I
- LDA #PPU_ADDR_H" h' U/ F) o- O# ]( p
- STA $2006 ;设置PPU数字写入高位地址$ }( U x4 @. B1 D0 r
- LDA #PPU_ADDR_L0 S- ^9 H. g) \, D/ ^! p1 Y
- CLC
" H2 X! `- E$ B- X - ADC #NUMBER_B1 @0 Q8 h2 f8 @( H1 n$ n: a* a
- STA $2006 ;设置PPU字符写入低位地址
) u8 P& R) j5 g - LDA STAGE_TEMP" ^2 F1 `. K; i# n% A6 P% e( s k! [
- TAX
# ^3 ]2 ^' T' u" W - LDA STAGE_D2,X ;写入数字+ G3 }# L' A9 o8 k* I& U
- STA $2007
+ T1 R# t: n/ J - STAHE_WRITE:
9 r% i5 \& h1 `8 B - LDA STAGE_TEMP$ f6 d; g, F" Q a0 D4 n' }7 Y
- STA $2D ;初始关卡写入! e2 Q# k8 N o3 o( L" R8 E. U
- PPU_RTS: ;恢复数据) c( d8 \) [+ x$ L F+ |/ p
- PLA: [' S7 q/ R0 j Q7 k# c' r( C
- TAY# u5 U+ u1 W6 O& [% d
- PLA
' L, N w0 U# Y! S H8 x9 ] - TAX
: o9 U- W8 f$ ~5 }7 k0 N8 c3 i - PLA
7 T5 |7 f+ _; Z/ C" z1 I, e - RTS; F) s7 ]- w- t8 y- ^5 }* M
-
. L5 A2 t- W" Z( y' L" b: x+ u - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据. R9 N4 ~' E @! g. V1 t
- .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END J0 r) e; H! r2 Q! e
- ) N" l8 P! f% B. o$ z
- STAGE_D1: ;关卡数字9 n3 D, ]! Q- V+ C
- .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; ^ B: w
. Z O$ |1 ? X' V; `- STAGE_D2: ;场景数字* u* c7 i+ R* a8 |6 i# a; ?" c# [
- .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
$ _0 S% D6 C, W7 | - 1 {; p% X& Y8 l
- 0 i0 K2 M4 v" i( h( R
- MUSIC: ;按键音效
* [0 {! ? X4 J: Y5 }6 w3 E - LDA #$3B ;音乐号
6 F& D5 Y- s& M2 W; Z - JSR $919E ;系统音乐调用8 D6 d* d9 K6 }! R2 J. N
- RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;8 u* X1 ^/ i/ U4 h$ w1 s% e c/ W
5.生命加满: 暂停后,按下键切换;
2 ^1 a! R0 r0 \' b1 ?( i 6.血量锁满: 暂停后,按右键切换;
( o2 D6 u, t/ f" L6 y7 ?
/ @1 G. @- }! t* A- Z" ]
8 a" d6 o5 f% [ / F# Y& r4 c" x- @: p

( n& }& P* z( C1 p$ E1 a' z
% d8 ~% l. P& FFlameCyclone.ys168.com
, ?0 f1 g! |+ T, h8 k2 W, wwww.nesbbs.com
; _5 @: i& H& h9 t K( T" c+ T
3 j6 U; u7 |$ N" K |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|