|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑 4 T8 h: v- s* Y* K! n
+ {* G. G. d2 r) {5 u
[FC][忍者神龟3][END选关]' s3 E# t; N7 }& z8 w6 O( C
e$ f3 P8 _9 Y, W% _/ Y, N
时间:2017.3.30
2 s1 O( g5 W) ~0 |) ?! l. t9 p/ L作者:FlameCyclone& a) c" {7 u% n9 P3 A5 K
内容:5 }$ Q! z5 `" Y- P
1.关卡选择: 标题时,左或B减,右或A加;$ v4 v2 |3 u! Y8 r% k
2.全屏击杀: 暂停后,按A键切换;
+ T, _7 t! g5 j ?" e; g9 e- D 3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0
9 p: D* L8 B8 b' `0 c2 g - ora_data:
- b6 W- v& S0 I* |/ A - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
7 ?2 K; o# k/ W! D - and_data:
8 V0 D0 M9 A/ z! h4 x - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF/ f# _: ~ l- `. @* K; |- r+ U+ X
-
- z x) M6 \/ z& c6 L - button = $F8
: i7 w! P9 {7 ^/ D R' a/ I% j9 ]2 r - flag = $6000; U2 F3 W+ |" P/ w6 \
- pause = $0045
) E" ?$ m- P; b/ @4 i- x, x5 T
1 y1 e# W8 B! B, G W( l0 u: L- 4 V. G) j9 e2 n1 ?( K6 N
- .ORG $F90D: v. j3 M g& Z' J0 ~* v
- JSR $FEC0
1 E' ]6 e) Q( B - + o( N% l8 z$ U( _! R% @9 c$ w
- .ORG $FEC0 z4 J: @' q' o9 ?/ i4 `
- STA $54,X
3 [3 O g' X3 J& o% `5 q8 D - STY $FA,X
) ~- I) o! Z' a5 U3 N- l - PHA4 [; j. {: t% ^$ ~* d
- TXA3 @; K. B& B; W4 v
- PHA F0 c- _9 |3 |" {
- TYA
% |* Q' V6 g' N. ] - PHA
0 }9 j! n6 }% X0 A2 m! w/ ] - JSR KEY_OPERATE- u. J5 ]6 r5 }& @ l. }1 k3 K
- JSR INV
1 |# F7 V/ s1 G$ j - JSR LIFE
: I9 n' i# U; {. j" n2 e/ G8 i - JSR BLOOD
" P/ ]3 P, ^4 _) g4 B% n) z - PLA
# a/ C# a' a# p - TAY
/ z; e; g5 T- @5 P% \ b/ O/ E1 Y - PLA
& r/ y% o4 w5 _2 z) m - TAX' ]5 v# o# S3 o& ?8 E. ~5 I
- PLA* @4 F/ s- {4 _5 e
- RTS
1 _% g" e: p- r. I2 W8 f/ B - KEY_OPERATE:
, V8 |4 p; f4 ^5 H, N" l- i( i - data_protect:! N8 ] T: Z$ s. b1 r
- PHA
/ A1 T5 H1 Z) X7 w8 E2 J - TXA
/ t2 m5 D" Y7 R! c - PHA
3 M- q( L( d) r" A; e; j9 X. X - TYA" T% U/ A6 A) u# y
- PHA
% N) P F P/ m! i! Z3 L& r. z6 E - . l; M) K. H4 K
- FLAG_CMP:
0 G1 f4 d+ O/ \+ g5 i0 [ - LDA $600F
2 e5 | g4 d& P8 `* H - CMP #$7F ;标志数据初始化条件判断5 M/ @5 K/ b' j; q0 g
- BEQ pause_cmp" Q$ A' O& f& b3 B% J
- LDA #$80+ H7 y, @. c/ W" m- g8 Z& o3 n
- STA $A001 ;6000-7FFF写入启用
- E' H- O# D8 n% E6 c# r - LDA #$00
1 u0 Z; r* J; L' u - STA $6000 ;数据初始化
# v# W! f9 L) M+ K; J - STA $6001 ;数据初始化/ p) z/ Z8 ]& S6 H
- LDA #$7F9 j( a$ D/ z6 N. z& i/ [7 r6 L
- STA $600F3 C# s% M, R1 ]% s0 V! ]
- pause_cmp:
) e4 [( k$ q, e6 W7 l - LDA pause
& T! H; H: n* m- X, x - CMP #$01& u$ N' w+ q. Y& P* D
- BEQ button_press( ^; S C& E- V+ v
- PLA. c. k3 ?# F) ?5 b% {3 l
- TAY+ j: ^8 ` O. K6 L8 i1 u0 R
- PLA, S$ Z, g' o( u( x5 I7 C) N! s4 m
- TAX8 p5 p9 `" A& v$ i+ w2 e- i' H: U6 H
- PLA
/ _8 U3 z) N. ^ U% }1 j - RTS/ o: \7 \ P7 U' z) v
- : I8 G5 I: q; k w$ s& s) f/ B4 t1 D
- button_press:1 U( H( f8 s1 Q
- ini_Y:# N9 x6 h: H# {4 G: w9 R
- LDY #$00
4 e& Y! a$ I+ x6 H. W% L6 R - button_cmp:* h0 Y2 s9 ^* f: Y7 \# `; c! {4 L
- LDA button,X/ Y" w% N. ?4 Y0 v# C
- CMP ora_data,Y
8 d1 q1 v- A5 b - BNE count_Y_cmp2 `3 T6 N5 m# z; N' z
- flag_cmp:- q$ U) E3 D8 a
- LDA flag,X+ V$ ^3 m) t( w6 Y% d. a$ e( n7 ?
- AND ora_data,Y
7 @& g: L/ e! s - BNE flag_and$ r: {' ]6 S6 g% U9 J& o6 S
- flag_ora:
3 R3 {7 O) V9 G - LDA flag,X
) ?; k6 l4 j6 W! x% D9 D! ?7 k - ORA ora_data,Y( T" x3 L# y" J+ O- C- [
- STA flag,X
& M/ J9 Q) x& O9 G$ ` - BNE count_Y_cmp
4 n7 c& h. h: M& t5 T( X: o2 C( L% i - flag_and:7 B& q0 e2 e- Z5 R
- LDA flag,X
9 c4 C/ V$ n/ |! S/ {4 C - AND and_data,Y* s- y& f* n* @7 h9 S7 |
- STA flag,X
; a7 x* A) t, v( a - count_Y_cmp:
% a/ W% b e6 p$ N- p; d! j - INY
) i& y8 t5 z% H - CPY #$08) a+ t9 r' l2 O2 L7 J
- BCC button_cmp! \' l& L7 ^ r5 h# y
- ' W% m3 d" P" P2 C
- data_extract:
3 `7 W4 ~4 v! K - PLA
1 F, W; j" T' P8 q" [/ v - TAY! J2 v% p! m; v2 O- D
- PLA
* \$ \/ O6 R- G0 D - TAX9 O/ z: Y9 F$ }7 a5 S( o
- PLA" p4 M/ H% A' `, O4 P, O
-
* L S; x) ^: ?+ t$ ? - return:
, M$ I% ]- h; H' u - RTS5 I! p4 k9 [1 O: j
- 5 ?. P+ Z% y* V& O. m0 W/ d
-
6 ]9 {& r! e; N$ Y( E - INV: ;无敌$ G$ ~; U" t# M/ W
- LDA $6000,X
) C1 |. e2 ]2 N* R3 m' }" h V - AND #$08
" {" i/ p# `' a$ W ]- g- h- U2 q3 ^ - BEQ INV_RTS) o1 Y# s L$ q3 @8 w
- LDA #$05
# j- z0 h; X4 O, B* M$ e - STA $04FF,X& q1 a2 d4 ]( v9 f+ T
- INV_RTS:
2 r% @% |* a( z( g" _; c - RTS1 U5 B: v& `% ?9 c+ R; c3 P
- ; z$ A+ q9 [% K' @/ F
-
( F; p8 b( p5 S ?3 ? d8 Y - LIFE: ;生命5 ?7 A/ ^) M1 ~+ l" w3 o
- LDA $6000,X
1 Y% y2 p. B8 u+ @+ b - AND #$04/ e: U: E- M5 I) ^
- BEQ LIFE_RTS: G( Q4 ^; h) P) e1 C" b U
- LDA #$09* c8 [7 `# |% f X. n
- STA $6A,X% ~8 Z; c" e, d# P* o+ z9 p5 o
- LIFE_RTS:
5 [+ x% s* C- q! ? w' h - RTS
$ G3 |0 y" t3 ]
6 q3 c% o, j7 M, X! S-
9 \$ E$ a7 u8 e0 Q& `& a( b3 z - BLOOD: ;血量
# C0 _" i7 i3 r7 E1 |/ m - LDA $6000,X% b! T% _, \# u
- AND #$01+ Z6 Z5 [$ d# L2 b' S+ \# W
- BEQ BLOOD_RTS
' x. i; a. y3 N" x9 C - LDA #$7F/ e {4 z8 R5 a% f4 R5 H
- STA $04F1,X; N1 o/ V1 ^) C5 K. X+ R6 I& b
- BLOOD_RTS:( [4 m: d" h0 g8 D7 S, W
- RTS
2 X1 j' f+ E& }/ D- W8 F2 v -
/ v* [' _' M2 e% g8 Z$ k b - , O4 h; G+ G3 H( p: l
- 0 j$ V q7 G- d. P/ h: q" k, E
- / i3 W' w6 }! x& p% d
- .ORG $D29F
0 t) c: i; [4 L& V1 j e - JSR $FF80
1 L, e7 f1 A! t5 `* [; r - 8 E. d9 \0 N; `' S
- .ORG $FF80
) g2 e' V$ E( h - KILLBOSS_BY_ONE ;BOSS一击必杀2 o( n$ j7 b9 U k8 _% f
- STA $0628
1 y) ]6 i0 c" A, v1 C4 S - PHA2 w9 T, C3 @9 U. J9 J7 \/ R
- LDA $6000; C( N! E( D" d j9 k1 c3 ~
- AND #$40: i1 ]( }, L$ D5 ]) y- {7 L- G
- BEQ ADDRFF8E
; E; F/ ~5 G4 ~' l; \3 [+ w - PLA
) t4 Q# s L, e4 R" t% |! U - CLC ;敌方死亡状态判定2 o4 H6 k: X0 {8 x
- RTS
+ X9 P) L* B8 I5 J( u - ADDRFF8E:
$ O- U& N2 X: X& i- @0 @" ` - PLA
6 w2 u* E, H; x6 ^$ H3 {. y0 N) V - RTS
: J+ h) T% [$ f. }) F, M# c - / s3 k! J' X' p( s" a3 x
- , l( |0 R6 q2 @% x/ `
- .ORG $D1513 J# ^3 T* v4 s |: Y4 |# ]
- JMP $FFA08 b9 Z/ G' w7 ?
- : e$ N, G* O+ i8 o# ^
- .ORG $FFA0' z- i/ e( n1 }
- KILL_BY_ONE: ;杂兵一击必杀
4 }* Z( C6 [# r. t, { - STA $0621,X
; a" J, b5 o. {3 o% t; Q: X - LDA $6000* \: t+ W2 D) }0 r5 v7 S
- AND #$40( p r J, @2 O! q$ S1 E% a# H# a$ U0 y
- BEQ ADDRFFAD
5 v; f- m, L2 f, _ - JMP $D19A ;敌方死亡程序跳转
. _0 K$ M+ {& b - ADDRFFAD:
# i3 ~+ r/ ~0 Z& `# E6 U7 S7 t# ~ - JMP $D1548 W7 R9 |4 m }8 v
- ( S5 R% p( j" ^5 d) I
- 6 W" [6 Q% _7 `6 e
- .ORG $A7F6
' H( U- @/ C: r0 L4 n d) ~2 r, A - JSR $FFB04 U' Z1 c* t7 _" g. b! A" E u
- " K2 F' x* t+ \2 {7 i* W
- .ORG $FFB0 ;全屏攻击1 g/ i6 I! Y9 y' j6 `, G
- PHA
+ z9 @- d! k7 `+ f7 Y, I - LDA $6000
6 i/ r1 x6 ~5 I6 ^ - AND #$80
2 {5 j5 Q0 P$ ^: F; P - BNE ADDRFFBD
4 Q/ {; D2 g1 R2 x; ^1 u - PLA
2 l) g; U ~/ S4 Z# Z. q8 Q$ S k - LDA $00159 `% Z5 q% W' i9 x7 m3 W8 `9 i
- SEC# L+ G1 L# j3 i, Y7 v
- RTS
# M0 i6 T# B% S8 G5 g1 M - ADDRFFBD:3 I$ G+ C0 u6 H$ I5 ?
- PLA
6 N9 b2 C! p6 F8 a" j' f - JMP $A826, `& P3 h* ~; X0 [8 i8 e$ w
- ( h7 z) ^: ?% L1 R* A0 s! j: ]
- - W+ V3 d& \) A5 l5 Y! j5 }
-
9 H4 U8 n; I! i4 q- Y( A - .ORG $AA6A6 ?: L0 R% n) N' r; ?
- JMP $FFD0. q \; C0 \" {7 }
-
; B0 l3 y: U5 g8 { - .ORG $FFD0 ;敌兵动作忽略& x: M9 l b- ^. K- Q/ n
- PHA& h% D; R! i+ m& O, M" d! G
- LDA $6000
2 E; _' K) X/ [3 e& H' ]' M - AND #$80
9 o( O( E' ^" f+ f5 Z/ I# K - BEQ ADDRFFDC1 X$ K* I4 W: l# C2 z" i# ~7 k
- PLA
9 W. n1 \9 S8 ?' T+ i9 H0 ^ - JMP $AA726 U1 ~. i' ~0 Z" k; v' I
- ADDRFFDC:
! n: _6 `8 Z% b$ x8 J4 Z" N - PLA
- j7 t6 u0 A( h - LDA $0629,X
# b+ u% }# b( K5 H, z d - JMP $AA6D1 Z- U4 O) V4 g, k1 e
- 5 U4 ~! C5 ?6 w3 w6 u! z
- ;[FC][忍者神龟3代标题选关程序]
3 k$ F z+ ]; t. T2 A - ;作者:FlameCyclone 2017.4.1; r2 l9 H2 L- T6 w& Q! E2 U
- 9 r/ A& G8 s$ A8 U/ d9 V
- 7 G, {: Y: `7 B; @: y
- ;配置数据
- D, R* \, B* t- \, u; |$ { - KEY_ADDR = $F8 ;按键地址/ `7 x, {* H- Q7 I9 w$ o2 ~( b! K
- STAGE_TEMP = $6010 ;关卡临时地址
% e& h2 f6 W, u7 h! S. v, }1 b7 C - STAGE_MAX = $0E ;最大关卡数
3 ~) `, D( s7 J( u( l, o6 d - TITLE_A = $20 ;标题条件A/ R6 _& s* x& q* V; L ]! j( m
- TITLE_A_ON = $02 ;标题条件A有效状态判定# k% U, [8 k' R/ u, Q. R: K
- TITLE_B = $21 ;标题条件B
: @8 |7 L' G# M- z& J9 y! G - TITLE_B_ON = $03 ;标题条件B有效状态判定
1 |$ |1 t, K: \; i& [9 h0 c+ q0 T - PPU_END = $FF ;PPU结束符2 E' y+ E5 H; }3 z d3 r; W; [0 C
- TIME_LAY = $4A ;标题显示延时地址
' t) D' F$ \ @ - BUTTON_DEC = $42 ;关卡减少按键
( t/ V: E, D* [: i& ~ - BUTTON_INC = $81 ;关卡增加按键
" [& Q2 i, x0 f( m B7 R% e9 q - NUMBER_A = $06 ;数字A距离STAGE偏移量$ h& u0 |: H1 Y
- NUMBER_B = $08 ;数字B距离STAGE偏移量
3 b8 W8 B3 Q, \: G3 w' w - PPU_ADDR_H = $23 ;STAGE写入地址高位
* B3 r+ c8 p- L1 J$ j' L - PPU_ADDR_L = $8C ;STAGE写入地址低位
. ^6 F8 \$ G7 z6 R$ Q2 d - CHAR_S = $A2 ;字符'S'! M) d: M9 ]% N& [8 Z- q. D& V+ h
- CHAR_T = $A3 ;字符'T'
2 s7 ^5 r0 R1 d2 M6 T - CHAR_A = $90 ;字符'A'
4 i& Z( P* [* G - CHAR_G = $96 ;字符'G'
7 o( F5 s$ S# I/ D* J, s5 E7 F - CHAR_E = $94 ;字符'E'4 {. {4 V; I1 B% G5 {. L
- CHAR_SPA = $00 ;字符空格: ^ B* x" C' {+ J( t" i
- CHAR_LIN = $AE ;字符'-'
$ ?8 ^6 x- V% Q% O4 g, F4 D5 i8 y - CHAR_O = $9E ;字符'o'
# S4 c/ a# p5 ]8 K - NUM_1 = $81 ;数字'1'& Q. e7 _9 j; J0 S
- NUM_2 = $82 ;数字'2'+ c4 O k: j6 g0 L+ {8 J: r
- NUM_3 = $83 ;数字'3'
) \' J! j4 U8 @! z, s1 y6 e - NUM_4 = $84 ;数字'4'. L7 L4 A/ ]1 ~& U
- NUM_5 = $85 ;数字'5'
& f6 i% M! I; `; E( j& B! A" t! y - NUM_6 = $86 ;数字'6'( L- _% K& Z8 ~3 x* `; @
- NUM_7 = $87 ;数字'7'
/ C$ Y- Q4 k/ v- A4 E - NUM_8 = $88 ;数字'8'6 O6 Z/ S7 H& t: @2 s
- NUM_9 = $89 ;数字'9'2 Z$ c' t( M8 K; q& ~+ P
- NUM_0 = $80 ;数字'0'# G z7 Q' M' N. J! s- l1 g$ g3 y! m1 r
/ Z5 A2 M+ U; h' ~9 N- .ORG $F82A
' p4 {1 w! q' e# {9 H0 T+ u- l. D) K - JSR $E700" N4 W& }# C6 ]1 U6 x) c- _/ M+ ^
-
8 O4 n: C& _% {$ A+ S, U/ L; D% k* o -
0 } a/ G4 T- x6 ^3 z - .ORG $E700- g1 j$ Q5 d2 i, E; }8 \9 m
- 4 Y" V2 b3 e: V) o2 k" A# I
- STY $4014 ;补上覆盖的精灵写入指令7 j4 K0 l2 ]6 G. J
- PROTECT_DATA: ;数据保护
! @: \, P/ i6 f: F, g - PHA ;数据保护开始
/ `& W1 z1 n/ B# I/ o6 K - TXA7 m$ }' t. f' L1 j9 \# j' m
- PHA7 i: y8 b3 C7 P- i0 g V; C
- TYA2 J8 I! {0 ^, f) E5 r
- PHA ;数据保护结束
' G$ l, S3 ]2 |9 d- v$ y5 m - LDA TITLE_A# ^) Z+ h6 w' E; W0 a3 i! S
- CMP #TITLE_A_ON ;比较是否为标题画面3 [) f8 X) a: C/ e
- BNE RET
3 S: q$ q' E' G2 c! ] - LDA TITLE_B3 z/ c$ f) `; J# V, A5 B$ f
- CMP #TITLE_B_ON ;比较是否为标题画面& ~4 y1 j+ }3 P5 |+ K, A- C5 R
- BEQ PPU_STAGE
7 j: k+ W4 |( j7 w; } - RET: ;恢复数据
; R/ U) M9 C- h2 S1 f* i( |7 a) J - PLA ;恢复数据开始' B4 _5 M1 Z/ Z' J' S* p/ i' C
- TAY( J4 |9 J9 T8 u: Z- E# l$ }3 A
- PLA
; L o% w6 [. J: J9 L- p - TAX) ^0 z- l$ G7 H4 z
- PLA ;恢复数据结束
' M* S6 B0 r1 t, H - RTS ;返回2 N0 @4 Q( s! g% G- D, N
- PPU_STAGE: ;字符STAGE写入程序
0 A* N4 u R8 [1 r - LDA #PPU_ADDR_H 9 E# y" g# E* M# y5 {- M/ \
- STA $2006 ;设置PPU字符写入高位地址2 D' f9 ]4 P* V' V
- LDA #PPU_ADDR_L
" w2 S. c9 i. ~- ^- k - STA $2006 ;设置PPU字符写入低位地址* S' o1 C. E5 {3 k: F A# n! N# P6 T
- LDX #$00
+ Z9 u. q$ ]- t& u5 X; x& k6 h' r - PPU_STAGE_WROTE: ;写入STAGE字模' _5 w0 m) ?6 }
- LDA STAGE_DATA,X
# y- J! l o9 O4 i' X - CMP #PPU_END ;判断是否写入结束
0 m4 a9 P% W- | q8 t - BEQ STAGE_CMP
1 A- {# m! ?7 |2 [ - STA $2007
% V% a/ ^, R5 H) }1 W: `8 m - INX% j/ i5 P* s. B# `7 n) |! q
- BCC PPU_STAGE_WROTE' _$ D8 Y, J5 c) l. S
- STAGE_CMP: ;选关操作
! S% G f( H+ _. i - LDA STAGE_TEMP
4 d2 G% E3 `9 z0 R% g# Q - CMP #$FF ;关卡数据初始化条件判断
$ ~/ I1 a( m1 z; V) | - BNE KEY_B
6 B" @, E4 m% W0 c, u; U* r" o% _ - LDA #$00
/ b9 m" C2 Y' U Q% k% Y# H, x8 [ - STA STAGE_TEMP ;关卡数据初始化9 ?3 r% v$ S: u4 \" K: {
- KEY_B: ;关卡减少
D: Z% x! R) i+ Q9 ]" g! G - LDA KEY_ADDR
y4 a# n5 b0 u/ J - AND #BUTTON_DEC ;按键B或左减关
/ f' I/ e. `& B% P! ?+ S$ L - BEQ KEY_A1 }) O Q+ _% S1 }/ A; J( Y
- LDA #$FF5 o+ y- a3 b. c! @
- STA TIME_LAY ;重设标题延时
8 m* k9 z: |# V" P P - LDA STAGE_TEMP+ g0 w3 J! ]& C
- CMP #$00 ;关卡比较+ J- ]7 n7 d3 s8 R# ]
- BEQ KEY_A
+ n7 I* f7 I% t - DEC STAGE_TEMP ;减关. F6 F/ t l& `8 Q# {+ K3 x. o
- JSR MUSIC ;按键音效% ]9 p/ F* u( T4 {2 U9 J4 H( e/ j) t
- KEY_A: ;关卡增加( n# Q$ x! l( L3 z( E, {4 b
- LDA KEY_ADDR e# Z4 o) n' }9 A4 f. W# ?2 ~
- AND #BUTTON_INC ;按键A或右加关 o* h9 \4 P' Z; Z' y) g
- BEQ PPU_NUM_WRITE' i2 k0 h* W$ Q+ T3 o V
- LDA #$FF
2 C; H# E- ^; } P4 @ - STA TIME_LAY ;重设标题延时9 p) p0 r; K" g; f
- LDA STAGE_TEMP5 n! ^9 n: M* i1 u0 B# }
- CMP #STAGE_MAX ;关卡比较2 X* a; ?/ T. g' `1 f) a8 p
- BEQ PPU_NUM_WRITE0 k7 u$ J! V6 I- y2 J! u
- INC STAGE_TEMP ;加关
* P9 I) I0 w5 p& b! s5 w5 p7 `2 k6 V - JSR MUSIC ;按键音效
) A7 c9 h- N! x: b" D' O - PPU_NUM_WRITE: ;关卡数字写入地址$ k; Z: @+ \0 L& M, U
- LDA #PPU_ADDR_H
2 I* {9 ?) V+ C/ B" Z4 |2 t0 I& E - STA $2006 ;设置PPU数字写入高位地址: \4 e% r! P) w" x% h+ L
- LDA #PPU_ADDR_L: c0 q* T* k! y, r* ]
- CLC! y$ ~8 _' ^+ n7 Z7 E
- ADC #NUMBER_A+ ?3 d: p0 }) }8 W
- STA $2006 ;设置PPU字符写入低位地址
& [( h: `5 E; R+ ^* v - LDA STAGE_TEMP( ^4 k0 t! R4 j4 V1 Z: J0 j
- TAX5 T6 r( k7 I1 i
- LDA STAGE_D1,X ;写入数字
; w e! {' f1 G$ G) B1 y - STA $20077 [) ~& _$ t1 }! s2 d. u: a0 x7 k
- LDA #PPU_ADDR_H4 Y: }* d- K4 D9 v5 r- e% v* r
- STA $2006 ;设置PPU数字写入高位地址7 @6 ?; J2 y" y4 m% W" L
- LDA #PPU_ADDR_L
" X& _1 [2 f9 n* W; a - CLC
5 |/ {3 r/ M/ t- N. U - ADC #NUMBER_B
' M/ K0 f: p( V P" V { - STA $2006 ;设置PPU字符写入低位地址
! _0 q' u0 Y8 D4 L - LDA STAGE_TEMP
2 o- _* @* [6 f1 Z - TAX/ y" w- g7 D8 |$ C: S K. n; j
- LDA STAGE_D2,X ;写入数字
' S% B, f, \* ^' a' B& o - STA $2007$ ?1 A, { L* a, o3 K- E* K S
- STAHE_WRITE:
$ F# n, }$ |) t! e8 t. a - LDA STAGE_TEMP3 f' R) h2 R, R' F9 h+ Y
- STA $2D ;初始关卡写入
% N( @% O9 \' s! B3 Y/ y - PPU_RTS: ;恢复数据
% X0 H9 J$ Z5 T& _ - PLA. ]! N9 `8 ]5 R$ j2 X1 u* e; h8 W) \4 |
- TAY- a) A5 v, J( |9 _8 C1 O
- PLA% p1 Y7 b* W$ [6 o& [
- TAX
* I* T* m1 u) N" S# ` - PLA
) M1 @% ?2 a8 r$ L, F9 [ - RTS
8 {- x1 B0 z3 I3 u H6 }8 v* \* d -
! E# `- D6 N+ h g - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
# K$ e7 t& Z& l) O& `% f! y, i - .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END, M) v% Q2 u$ W; ~" W# c0 \" q
- $ D! c, L0 x! L% @9 P# n% }
- STAGE_D1: ;关卡数字9 R) u; y* S) U( P* ~' ~# U$ e
- .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( H2 t# V* @$ o9 P4 Z* K3 q7 s! p4 E
" r; @' T9 k Q7 `- STAGE_D2: ;场景数字% D( l6 `; ?0 Q L: p2 o5 q
- .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
, s; x3 d i8 B% C( w - & K4 W! V* h' i* a( E Y# K
- 0 e7 n" c, J* X2 g z) G8 O, X3 F g
- MUSIC: ;按键音效
2 ^8 L3 v J8 e/ l, W3 P! a8 r; h* j - LDA #$3B ;音乐号
5 f/ K. Z( a6 _/ X* y7 y - JSR $919E ;系统音乐调用; L9 e. i/ C$ @* O! }$ n
- RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;2 ?- j% ]# w9 d' m I
5.生命加满: 暂停后,按下键切换;( J. m6 X/ j6 ~2 k
6.血量锁满: 暂停后,按右键切换;
& Z' z* I' v" y) D# a- k( V( N: ?+ t# }; O' n; T
) e( _8 X+ @$ m9 @+ l( e
4 o. ~) P: R- S) L+ Z0 g4 y
4 M0 }0 y7 M! F, F9 F% D: {" }1 u' s
FlameCyclone.ys168.com8 H# q# ]! h+ }0 r
www.nesbbs.com
/ p+ {7 s1 C8 l8 c4 R) T( Q2 l7 ]# o( s7 j
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|