|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑
; M' _1 d% `# u U2 H( }1 I6 |# R
[FC][忍者神龟3][END选关]. m5 R7 q: `/ H6 M5 n* M7 Y7 T
( f; D) C1 S+ f* G
时间:2017.3.301 b7 U* ]& r3 i z& ]; U+ C
作者:FlameCyclone
; E1 g; U* k$ e" g, [( m8 p内容:1 A! U2 U) g: v# R
1.关卡选择: 标题时,左或B减,右或A加;1 E) b4 h5 P, f+ W4 X. s3 u
2.全屏击杀: 暂停后,按A键切换;
4 H. W9 `6 W# H0 R+ o# i ^ 3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0
+ b7 X, @; I: p8 P - ora_data:( ?, D' L) t+ z d$ m: k
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
( B" D7 l% y* J, I1 u - and_data:
" m$ p5 X1 t* m" c9 {2 ?/ w - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF1 U& ~( m$ [+ G* H+ k
-
& f7 v3 Y: o, n3 d - button = $F84 ^1 z1 J/ C7 C7 ~$ o
- flag = $6000
' I0 |6 S F- h3 c3 O - pause = $0045
. R5 ^% s6 M; p) | - 2 U* q) R4 D- N* w" u/ @
9 X9 k6 C5 z5 N) Y+ D0 }, f- .ORG $F90D4 w; y6 N, Y! G! E
- JSR $FEC0
7 ?1 l8 s' p) D/ `! H -
1 c+ k1 c' G9 [- ? - .ORG $FEC0
2 X7 K- e) Q' I5 T! D - STA $54,X
3 Q5 W* G( ~# ` - STY $FA,X" l6 S* U4 m9 o; t I9 q e
- PHA* {& \: q6 E1 z4 l" h2 v& d+ E! Y
- TXA3 m @5 T, F, T# }, J4 G; U
- PHA
; t2 N$ T1 j. J: ]7 j$ V! k - TYA: E7 r( b% c7 M
- PHA
8 T' k) h6 A4 Y/ K. { - JSR KEY_OPERATE
# @# h* h f! K' ` - JSR INV/ m% G; w7 ^! a
- JSR LIFE* q u+ P9 C g+ G- m
- JSR BLOOD4 P: m* e3 [( s
- PLA
9 L: y) u' J# N% M7 s1 O - TAY% E+ v8 h" Y! ~ A, R( l
- PLA
3 [" o+ M# ~! S% T7 f - TAX5 n, e2 N4 K/ N; T, S
- PLA
; e- i5 a1 Q0 T* L( T - RTS u- X' F6 N7 V6 M$ j+ ~
- KEY_OPERATE:
" C* ~! I2 T+ w) b7 h5 }4 ^ - data_protect:
" V; \/ i4 F, Z* a" ? - PHA
u' `, a, B- c3 b - TXA
( j% d- a& N. I& g- f' W* | - PHA5 k+ T$ P' P- G) h1 x; a' E
- TYA! o$ @ r: a2 d1 v
- PHA
' m( a8 I( s/ ?. q4 U, ~ - " |) u j% ]0 J8 `5 T0 w
- FLAG_CMP:
: ]4 Z7 U; T' }+ X4 D - LDA $600F2 V& }6 N- ]5 U# n' V/ a& @8 y
- CMP #$7F ;标志数据初始化条件判断 _ r4 b' M9 d( c: ^; y
- BEQ pause_cmp
; p: M! L, c0 f# P$ S1 z - LDA #$804 }% J; B6 k+ s; J* `# L$ z
- STA $A001 ;6000-7FFF写入启用" g- O- l! M9 R' T, v% Q
- LDA #$00
8 ^# {+ V( p4 i3 ] - STA $6000 ;数据初始化
9 X7 p, g% F# f8 @ - STA $6001 ;数据初始化9 e8 e8 g( y; z
- LDA #$7F% E2 s/ J H0 b: U$ ]. e# v! l4 ~
- STA $600F
# z. W7 h7 U- t+ t+ G - pause_cmp:) X* V, Q$ j. W: Y: M0 q% z+ X; Y
- LDA pause+ J$ ~" ~0 t3 @* ~# K2 y) Q
- CMP #$01
6 l$ y8 f0 v. v4 _/ H- G5 M! z - BEQ button_press4 \3 ]2 Z4 A' x* |1 n r' g/ M
- PLA
/ J% @& T# D; F8 M - TAY
4 c# R6 U: Z* Z2 v# A& T+ U5 ? - PLA- q$ c7 L q$ G9 \$ D0 ]6 b7 ?
- TAX9 C6 e' Q& p/ v, m( l
- PLA: x B! E3 J0 t9 j! m/ w7 D
- RTS: p4 L; ^1 Q1 [
- ' h! M. r) n" q- J$ l
- button_press:
3 G3 P' R- y! e' S( H- x1 O - ini_Y:
; { W% l1 P# N6 r& Q - LDY #$005 g% n. @$ R9 \
- button_cmp:8 l. x* U1 {- s" Y
- LDA button,X' U/ `- ]" h9 B& z
- CMP ora_data,Y
4 Q8 T4 R% ?, W) o- p A8 _5 b( `& Z - BNE count_Y_cmp8 [2 j7 q' l+ m1 j, c* R) t
- flag_cmp:
+ |! |+ L, S$ d - LDA flag,X
6 H' R1 d; l d- K$ v - AND ora_data,Y
% Y7 J3 | C6 L1 S& Q: ^1 W) ~ - BNE flag_and
' s- A# W) C- d q$ o - flag_ora:' z0 [7 s7 s- x M( v* G" p
- LDA flag,X
; Y! X5 v7 |' r) z' o+ V - ORA ora_data,Y) K0 y3 V" E9 I h: E! H8 I: X
- STA flag,X; n. ~8 C) V8 C$ k% X0 I
- BNE count_Y_cmp
9 i/ L2 @/ K7 g# `$ Y6 o - flag_and:
, o9 |4 d% g9 Y% u2 B, j - LDA flag,X6 t, r% B8 U! L( B h' N$ _
- AND and_data,Y/ ^, N; v3 Z: U: {7 ~% }
- STA flag,X; P; w! s8 o7 q. V
- count_Y_cmp:& W2 e; p, s1 m0 G( q. u9 Q$ m
- INY
; T& O! K6 b }" o/ L - CPY #$08
0 D& {* u1 ^- F7 n - BCC button_cmp
: T# B# j. j" \ - ) Q# ~ N( l! _& M+ D
- data_extract:. e% n. {0 |2 [# D" |1 j$ j. m
- PLA! G( c0 Y& |2 i9 V
- TAY
2 {' H( g, y3 Q. U2 |7 w3 Y$ K - PLA& S' m$ J" w/ F$ s, D3 T! @
- TAX* G/ G7 |" v1 S; E$ I2 G) ?
- PLA4 K" T0 j5 b) c7 h1 C# {
- 0 L6 N) u; t/ f- R$ u
- return:# z! P' x9 S, n2 j9 }' c
- RTS
4 w( p% x: Z: t+ K t$ H& z -
+ D6 ?* p! x/ M% f w- R -
" D# k4 \& S5 K% H) m6 g3 W2 E - INV: ;无敌/ f* H/ b, V: C& I" r+ A
- LDA $6000,X1 D" I M8 X3 S$ D; S- D8 U6 ~
- AND #$082 T- J7 q9 U7 W' e- R8 ], c
- BEQ INV_RTS5 a) |8 ]3 P/ d& U$ c) u) }2 Z6 ^
- LDA #$05
, I* v8 v( x' S- }" i - STA $04FF,X
1 L- J$ b' O d# h! a$ ^, `' _3 w - INV_RTS:( u" r7 M- \( R4 C4 O
- RTS* T9 q* D" J, k- K+ r8 Z% G/ p
$ |$ _; r0 z& ]. ]. _3 {- 4 m* s W1 N( r) r
- LIFE: ;生命% Z/ V, B: v8 L* t3 P! h3 Y/ [
- LDA $6000,X
/ W/ K% {4 M c& E3 B" } - AND #$049 R! d# G v4 O- e' @) I4 A
- BEQ LIFE_RTS
: O4 c7 E+ d/ p9 {1 b - LDA #$09+ x: G+ P8 _8 i% q' s' Z
- STA $6A,X! m4 U$ U) @/ ?) b/ M9 `9 L! G
- LIFE_RTS:' B7 v+ K( s4 @/ j" h
- RTS
8 u- N0 ^# Q# S0 k8 u7 n8 A - . Z6 W& n( O& D9 J. W
- $ _- ~* K9 h' o8 j
- BLOOD: ;血量9 N) N: [) j+ o, b9 D" A$ Y
- LDA $6000,X( H! l, e4 G" B. H( C8 }! O
- AND #$01
! ]4 E5 F8 ~6 X - BEQ BLOOD_RTS
2 x/ d8 g! O+ p - LDA #$7F
0 E: I* A2 e* Z4 i: K - STA $04F1,X& V+ g" }1 d' f6 q; r, b+ }& I- m; C/ k
- BLOOD_RTS:' A, F+ x/ D# J. s5 q7 g- O+ P
- RTS
3 B: H* O- }6 m) P - + I" u0 F+ `1 }6 y% Y6 [
- . ^& M/ u+ \2 V; M
-
j8 g H5 ~$ A7 u" n - T; u# d3 D8 _- g
- .ORG $D29F
+ v6 T- w5 L. W - JSR $FF80
3 C, L1 ~7 M" L$ k T -
4 j/ i& l: s! O; f3 p/ [ - .ORG $FF80
3 h; X2 f0 L, B- P8 e8 H2 Y - KILLBOSS_BY_ONE ;BOSS一击必杀
' C7 J! T. H3 i* J) M9 c1 ^ - STA $06285 F- i( Z; s* N- C
- PHA( U0 F" q9 u1 v0 c0 ~8 |
- LDA $6000
* v P! ?3 U6 O. w/ v* ?" q - AND #$40$ E' h! M' Q: v" N/ m
- BEQ ADDRFF8E" W/ q. @) U, P
- PLA
0 M" y5 Z q2 m - CLC ;敌方死亡状态判定: M9 j; P* `9 @3 j& t
- RTS
. j" R3 I4 L% H* v5 U& U - ADDRFF8E:
8 Y3 V6 J5 ~* K* c2 h, Z - PLA
0 {$ K! D# }8 m+ Z3 X0 e' j - RTS/ i8 }! k1 ?) P
- $ C$ A* d2 C1 p) ~9 L0 M4 u% @ q
- $ T- ?( A. I& X' T
- .ORG $D1515 r! e0 _$ m. e- E
- JMP $FFA0
* J" L0 h6 v3 n( U! ~' n2 r -
9 p- G, `( c/ M' ~ - .ORG $FFA0
, h$ ]# k: e6 e) E! G - KILL_BY_ONE: ;杂兵一击必杀
" S8 H6 E' D/ Q; N, x# o7 \ - STA $0621,X5 X6 G. k1 `1 V4 @( G
- LDA $6000
: F: R: b6 J r" V2 }' J - AND #$40
& S* E8 E* I6 T* k2 A) n - BEQ ADDRFFAD K2 R3 `* A$ U* @4 E
- JMP $D19A ;敌方死亡程序跳转8 X- B# f9 _9 g: O+ c( k9 d% F
- ADDRFFAD:
1 r7 X/ }& O6 c& e9 j& w - JMP $D154( y4 Y! U# G' ^* R( @0 a+ u) t. ^" Q
- ) L/ k1 K& V8 L* l" s, A8 R' j# F
- $ I9 H2 y3 O) _ Y( z" Y
- .ORG $A7F6
* l+ D& A9 o& G) m7 Q. ~ - JSR $FFB0
' ~: s6 y$ O2 w) W& H -
$ I2 b; W; k& T8 v& m - .ORG $FFB0 ;全屏攻击, ?8 y/ X. w: R$ E; {$ V, h
- PHA9 W$ k; x$ J7 Q" a, @0 X) o) z* M
- LDA $6000: ?0 W X0 ~' q- k' H
- AND #$805 l: |/ i+ U# p8 A, f7 B" l: L
- BNE ADDRFFBD/ E, O$ {. i+ ?2 C4 \. l1 ^
- PLA
d* M8 s1 W& ]$ G: O - LDA $0015' W& |% J+ c* \9 [1 u
- SEC
) T9 a0 |+ A% I$ ]' v - RTS& J* K. y0 {6 z5 A, K" N2 _: M4 m
- ADDRFFBD:
$ e$ J& d+ o& R% r" _+ n! | - PLA
: y) B) f3 R6 m: p - JMP $A826" H" @) f" l/ o% U P. l& d
- 2 X/ K( u* o; b% \
-
2 g+ Q3 U* q' D2 d -
+ A# A4 ]0 w* }2 b j; H - .ORG $AA6A
' b5 W2 D1 h- F4 @3 W% E4 c - JMP $FFD0
- H# e; e) P# E! c& E2 K - % h1 ~7 U( k( k
- .ORG $FFD0 ;敌兵动作忽略0 Z& f! D6 }6 L# j' b$ f0 s8 ?: g1 D
- PHA) P: A" q0 E; Y: D; l. m {7 i
- LDA $6000
3 W$ `- A, o) T7 \ - AND #$80
% F* v2 z; D# s, t( ]/ @5 F - BEQ ADDRFFDC
) \/ g) u- Q" o) h - PLA% B5 G8 b& I1 M( ?2 Q; j+ Q( I% O: l
- JMP $AA727 L. p. ~/ v) L
- ADDRFFDC:8 F3 m" r6 _ R4 l
- PLA
5 S! Z0 n e. ]7 x - LDA $0629,X
5 U$ i5 p, j" F8 i3 D$ f - JMP $AA6D+ c8 T; k( O. K2 \) c/ S' s, \
8 y7 X& a) C/ H1 T4 c- ;[FC][忍者神龟3代标题选关程序]5 T$ w" y |5 q. G: {1 Q. B& D9 X
- ;作者:FlameCyclone 2017.4.1
' I# _2 K; h& p
0 w3 x6 y: k+ B: \0 t2 k9 ]/ L, V- O4 |# i$ X; Z0 g6 Q
- ;配置数据
) ^& ]1 k; ~. R) ~0 p - KEY_ADDR = $F8 ;按键地址
' J# H7 Z4 ]; ], e: T, w0 E9 I - STAGE_TEMP = $6010 ;关卡临时地址- O3 l4 o1 m i# J! O \
- STAGE_MAX = $0E ;最大关卡数
7 z: U" O7 Q% l7 q+ W. ? - TITLE_A = $20 ;标题条件A* a5 d1 b9 H, v1 f
- TITLE_A_ON = $02 ;标题条件A有效状态判定
( E1 O: {1 z9 i# ? - TITLE_B = $21 ;标题条件B
7 I7 k. ~' _% D- ^; N& B, W - TITLE_B_ON = $03 ;标题条件B有效状态判定% ?5 P- g0 s# \6 V# f( H8 n
- PPU_END = $FF ;PPU结束符. A1 M) E4 ~* H6 b# j
- TIME_LAY = $4A ;标题显示延时地址& N2 O1 p) q0 [7 i [! T7 V0 w7 \
- BUTTON_DEC = $42 ;关卡减少按键+ Q- A* F6 F5 k L9 g% X
- BUTTON_INC = $81 ;关卡增加按键% _+ v; Q% p) c7 v1 g: \
- NUMBER_A = $06 ;数字A距离STAGE偏移量; E! F0 V" F! {8 h& |- |- \7 M" B6 A
- NUMBER_B = $08 ;数字B距离STAGE偏移量
H; {! Z% u% A - PPU_ADDR_H = $23 ;STAGE写入地址高位8 H( p/ R! P" v/ O7 j
- PPU_ADDR_L = $8C ;STAGE写入地址低位
; u' A% S8 g1 H5 C$ I- J) r - CHAR_S = $A2 ;字符'S'
. ?: z. @; e1 R+ J - CHAR_T = $A3 ;字符'T'0 s; \7 |0 t4 D8 p- b
- CHAR_A = $90 ;字符'A'
5 q& _( l/ Y/ j - CHAR_G = $96 ;字符'G'
% ]+ u; w! S% C3 [9 c - CHAR_E = $94 ;字符'E'0 `; Q$ ~' Q" P z6 B
- CHAR_SPA = $00 ;字符空格
2 \( ?9 q+ D: `+ O8 B - CHAR_LIN = $AE ;字符'-'
: C `! h" f# R9 @- i& T+ U - CHAR_O = $9E ;字符'o'
4 j2 z3 o+ o' u) h) L1 i' S - NUM_1 = $81 ;数字'1'
- u7 w8 b1 X) o5 V- G - NUM_2 = $82 ;数字'2'9 c- G9 J0 g" {7 u9 K
- NUM_3 = $83 ;数字'3'
( S/ I" }% s: P6 u4 S. I P# I - NUM_4 = $84 ;数字'4'9 D4 z- T# o, o$ m [5 s, E8 I3 }& e
- NUM_5 = $85 ;数字'5'
: z& l) l) f, |9 g - NUM_6 = $86 ;数字'6': U/ n2 |) q8 @ Y, q
- NUM_7 = $87 ;数字'7'
9 m4 S+ ~! I" w% b8 x# n* H' d: a4 l - NUM_8 = $88 ;数字'8' ? N, z- @# j3 k4 `1 |5 ~
- NUM_9 = $89 ;数字'9'# T' S0 c) q3 i; e# e& V2 R$ ?( i/ Z0 h) d
- NUM_0 = $80 ;数字'0'
& v4 z/ z5 A5 p4 ?! g: B! D
% ^, @ H8 k: ^' h- .ORG $F82A% [, x) L/ {! H
- JSR $E700
9 E+ `# S: B9 x4 v, |0 B - * G; I7 d1 h% c2 S) ^4 a8 A6 P7 d7 P
- ( u- ]$ X& I+ n' G0 A0 h
- .ORG $E700- y. @5 K, |* D4 n
- # b. C) ^5 E, `" H& r6 D% b% o
- STY $4014 ;补上覆盖的精灵写入指令0 W0 U+ P% ], C1 W) |3 v
- PROTECT_DATA: ;数据保护
- g( q/ N: D) `1 i - PHA ;数据保护开始
. ~: d# v' Y2 u( Q4 w - TXA
! D% C0 y) y0 A1 `3 ]6 ]7 o! C+ h - PHA
$ K3 G- m6 J4 S3 v0 | m; d9 A+ k" z - TYA R- g" x: y# M! p' ~. ^5 _9 c
- PHA ;数据保护结束
* p; }5 {0 d& l) ` - LDA TITLE_A
8 ], ~/ }( c" N' ~% u9 h9 Q2 t - CMP #TITLE_A_ON ;比较是否为标题画面3 w1 w. `) R' [3 y" d$ ]" B6 @3 w
- BNE RET# U6 p2 X6 H% e- I( F& G& h
- LDA TITLE_B& g q5 x, w3 p
- CMP #TITLE_B_ON ;比较是否为标题画面% m9 F* L3 ^9 n D
- BEQ PPU_STAGE/ u1 Y6 g) z. k$ E" \% @
- RET: ;恢复数据
Y& [1 q6 n2 f) u* n) p1 } - PLA ;恢复数据开始
' j; z+ O7 D6 s, b - TAY8 C' p3 d: l0 h$ d+ v2 \ l
- PLA
0 ~. a; T) C1 x; ~0 | - TAX, N7 V5 S6 _9 L( A& o. [4 L
- PLA ;恢复数据结束7 i3 y- R/ B7 `5 ^2 ~' t: E
- RTS ;返回
7 `# k3 F* e' b2 P+ O3 _/ m2 |3 J - PPU_STAGE: ;字符STAGE写入程序
7 Q/ r. [$ a" Y7 {. Q& C$ f% q1 K6 J; k - LDA #PPU_ADDR_H
2 d# I5 v. v3 S% g8 j - STA $2006 ;设置PPU字符写入高位地址; D* `1 ^% g% I
- LDA #PPU_ADDR_L
6 m4 H' _# _+ n ^% e9 B - STA $2006 ;设置PPU字符写入低位地址% `4 Q) Q5 q; `4 ~
- LDX #$00. v% S6 ~# ^8 _: I5 D" s9 \' ]
- PPU_STAGE_WROTE: ;写入STAGE字模* }1 ?. [! W$ ] J
- LDA STAGE_DATA,X
+ S1 i8 v9 Z4 z6 m - CMP #PPU_END ;判断是否写入结束/ O8 _ f4 N7 ?' C
- BEQ STAGE_CMP: _+ l$ a& H# w! a0 [4 l5 B$ U
- STA $2007$ x" g, f5 U- e$ p' k8 k9 V
- INX
+ h; z* p; i8 y1 r - BCC PPU_STAGE_WROTE
3 R+ L& `" Q! m# t+ m# G - STAGE_CMP: ;选关操作1 W" J- x) W i& C, P4 O
- LDA STAGE_TEMP
) Y4 w6 L9 w/ m2 ? n! _ - CMP #$FF ;关卡数据初始化条件判断
: A1 z7 l, D% w) w! u - BNE KEY_B
. W/ n% Y1 ?5 C8 {- V - LDA #$00+ V, I8 J1 T# }3 a
- STA STAGE_TEMP ;关卡数据初始化" w2 ] ^% R' w0 ~
- KEY_B: ;关卡减少
7 x8 i0 Y5 X( }; w - LDA KEY_ADDR
6 G. k" ~& w7 r5 E1 U* o - AND #BUTTON_DEC ;按键B或左减关* d8 S9 i9 z" E, Y; b A( E1 B/ ]- S
- BEQ KEY_A% P# V1 N( O Q. _5 J& ?+ B+ q
- LDA #$FF
4 O- D% U7 G* ?$ X+ @5 K - STA TIME_LAY ;重设标题延时
4 M# g3 o, n# s& @& |: e' k - LDA STAGE_TEMP
. o% ?; D6 j/ W% X' k - CMP #$00 ;关卡比较. p4 H; w# E+ V+ x* V' L
- BEQ KEY_A4 c! o* X5 [ R/ q* d5 D7 |$ T
- DEC STAGE_TEMP ;减关8 M. P* Z6 y$ H$ o1 N' _% z
- JSR MUSIC ;按键音效- q" W; ~8 q8 Y" Z
- KEY_A: ;关卡增加
- f6 p0 A2 H+ s) B6 @) z, A - LDA KEY_ADDR5 {1 v' a% \% k4 ?
- AND #BUTTON_INC ;按键A或右加关
. ?6 o' ^* k% O6 Q2 p! z, f9 Z8 w - BEQ PPU_NUM_WRITE- ?: ^& z6 p* B( K0 \: p# d6 N
- LDA #$FF! N9 D- s X9 r( C0 N2 |' i
- STA TIME_LAY ;重设标题延时
: w) r+ u% S' t4 s2 `4 [" Y" ~ - LDA STAGE_TEMP
! Q V! w! y- ^8 v" |7 J( P - CMP #STAGE_MAX ;关卡比较
2 m" ^/ z5 o6 C+ I- G - BEQ PPU_NUM_WRITE
( M7 z; t# p7 i9 M$ p+ O( _, G5 C - INC STAGE_TEMP ;加关% u! U% T6 T3 F2 ?! @5 X1 |
- JSR MUSIC ;按键音效
2 `3 D' w2 X ~: E" n, e - PPU_NUM_WRITE: ;关卡数字写入地址
0 _4 W2 a) m9 A6 m" Y - LDA #PPU_ADDR_H* c6 b: @& c! ?: W' k
- STA $2006 ;设置PPU数字写入高位地址) i* L0 x$ h W# w- l7 t
- LDA #PPU_ADDR_L* O% I3 b/ A* z$ q* g* Z! \; l
- CLC$ T5 W( t) A3 m3 k
- ADC #NUMBER_A) E1 o0 X6 t5 N$ m& X3 g$ I
- STA $2006 ;设置PPU字符写入低位地址
8 W" A8 T! ^+ V s9 m9 \ - LDA STAGE_TEMP
$ l* L9 a! g0 u - TAX1 q" s* h3 n ? ~/ y t' s
- LDA STAGE_D1,X ;写入数字
3 J9 `6 ~7 G+ r& g' M6 A - STA $20078 j) V9 r7 e# x# a1 K& ]+ i, w) I, P
- LDA #PPU_ADDR_H' @7 V6 J# [% T% X
- STA $2006 ;设置PPU数字写入高位地址
) w0 |" K# s2 K5 E1 t2 U - LDA #PPU_ADDR_L: z ~* T: e2 V4 P
- CLC
- d% \) M9 C4 g4 J - ADC #NUMBER_B
" k- `7 w/ S- f4 Q* I8 z - STA $2006 ;设置PPU字符写入低位地址
! K1 l( s( y6 ]7 M# \& k - LDA STAGE_TEMP, K D6 F( W- ~: |, @- p2 A; g2 P
- TAX
/ H7 e0 {" i$ t" A! a - LDA STAGE_D2,X ;写入数字
4 _1 I% Y! l7 Y F6 N - STA $2007
1 Q- t+ g+ N1 t - STAHE_WRITE:" S8 c' `3 f1 Q6 m) g+ h: q0 |: H
- LDA STAGE_TEMP8 k8 P- G6 ]( l
- STA $2D ;初始关卡写入. t& U$ O4 }# n. ?% O8 @. R
- PPU_RTS: ;恢复数据8 _# m) I) w! f1 u
- PLA T( c( O. |$ W6 O/ y
- TAY
9 q- F5 y3 v3 @$ Y$ R - PLA
% r, r7 n" Z0 G# E! D& f" y; B - TAX, y: V* i d* {# y+ N
- PLA1 A6 y* d$ }2 x& t- }) g. U
- RTS
c/ _% o/ w+ O8 b -
/ r4 k( d* w; q! y& e( z8 B$ G - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
; a& g6 r) Q# C8 C - .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END7 z# Z8 u3 m( X0 F9 W$ b: E1 p. @
- % y% m0 ?4 Y* k& ^6 r
- STAGE_D1: ;关卡数字$ A4 E! D% B- t0 \, R- W
- .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_81 p. v: A6 q" r8 f/ b! X
- 2 r; v% K2 G4 u3 f; X% x
- STAGE_D2: ;场景数字
' u% E8 y. |6 t( ^ - .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# v3 k$ V u: q& f# x/ ?1 M
-
6 G3 P9 D9 ^9 G) ^% U. a3 S - & e* d, f' q: V3 ]/ M! t
- MUSIC: ;按键音效2 B0 D6 k% K+ ~. p4 C
- LDA #$3B ;音乐号
3 W v |/ R! ~4 l% x9 o4 v6 [ - JSR $919E ;系统音乐调用
% i% N B& V/ D - RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;
( G0 j: }* \: z. G2 Q9 m5 C 5.生命加满: 暂停后,按下键切换;
( m5 Q& L: M' r 6.血量锁满: 暂停后,按右键切换;
* ^1 |3 j+ B! g) @9 V% I2 ~
- \0 i. C" Z3 t! W) m/ r % k) W6 ~# ~2 f( D
# N/ ^0 B7 ^ X
" N" B4 M5 g c. Q: h
1 D* p- N( N. E9 O' t! [% r
FlameCyclone.ys168.com9 Q& V8 D; x: R: Q
www.nesbbs.com
& U1 G) P6 b. @. D" Q7 }7 v! j: ^6 }2 L
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|