|
|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑
" e. ]2 B- r( G! X% \+ G G- Y; Y/ n9 Y* b
[FC][忍者神龟3][END选关]
, z S( P: R' u% v; Z. n
& j' y: x/ X- {7 E" ^时间:2017.3.30
* Q6 w, _5 w: z) s1 h5 ?作者:FlameCyclone( w% I) _2 F9 Q
内容:; F1 m1 L6 P2 k1 o
1.关卡选择: 标题时,左或B减,右或A加;
' G" N; l' C* j! ~$ q) O 2.全屏击杀: 暂停后,按A键切换;3 r# x$ P7 Q6 t9 i2 O
3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0
& x6 S' h+ V" s5 l R - ora_data:
+ y# \+ B- w! E. b6 V, T - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
8 C$ s. g/ l' d' }& Q) w& F - and_data:
' z( ?0 ] o4 ~" _8 D; Y - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF% w& S6 K" E! n% o
- + k5 r' q: k/ s$ O
- button = $F82 q) j$ ?0 e Z% @/ t
- flag = $6000
* @4 L# _1 [$ J1 N9 f - pause = $0045
3 N# \; ?4 E+ L _/ p2 C: K: {; y5 P
8 e* i" d5 |" B5 [
0 M* u1 u. v& t# h! J i$ N- .ORG $F90D- G |' b6 F. r
- JSR $FEC0! ~+ K; K* w0 V: ]- G# C, ^
- 6 z: n/ { j H3 A" w" I
- .ORG $FEC0
8 E5 F+ C1 D8 r) Z. |" R8 G - STA $54,X
4 }4 w$ u0 ^4 Z" n2 B* [) b - STY $FA,X0 m& b6 @2 G- x
- PHA' \+ `) r9 ~: J+ R0 N1 t- P: O
- TXA
. G2 d' S4 h' B) Q0 H+ o% k - PHA( [+ _/ K0 h1 l T' [" N
- TYA8 Q. f: v- g; ^8 ]2 O
- PHA4 E" }& I! T$ X& Q0 Q J
- JSR KEY_OPERATE- f9 _/ g6 y/ g0 ?9 z1 v
- JSR INV: @3 }7 c+ V# ?7 S) k, V
- JSR LIFE
& i t2 w- _4 c) J - JSR BLOOD
( a& j0 b7 w4 }. f! V, \ - PLA, a0 q; Y* U0 z- ]3 z
- TAY. b' v. ?7 @- T4 ]5 v6 Q
- PLA
# }' d( c3 n) Y8 w - TAX
) D+ w% o+ C. l" K$ r0 h% U - PLA
$ m7 Z" s. E1 l+ ^, s3 ~( h - RTS
0 P5 x: Z6 o m/ l g - KEY_OPERATE:
7 j! `- _ u! G - data_protect:
+ c0 r, b9 ~8 a/ _ P - PHA
1 D% q0 s) }+ [ { m, j - TXA
- _3 b* j" k0 b" J- a) ~, Z - PHA
6 m% n& n5 q% ?$ `; G - TYA
) v" i6 e$ c& X/ t" L* @2 ^ - PHA
7 I3 ~( l: _0 n6 k% U# D. s
) c6 R0 V6 y5 l4 f+ |! i$ Y. b- FLAG_CMP:7 J' ]1 V" G. Y9 @6 v
- LDA $600F* a/ e( Y5 o$ y% C$ X- T4 j8 f
- CMP #$7F ;标志数据初始化条件判断: o5 q$ T! E( B$ O
- BEQ pause_cmp8 J6 d7 w" L" R1 n) i
- LDA #$80
% P9 c; y- |4 B7 c - STA $A001 ;6000-7FFF写入启用
+ V# e3 _& ]" Q8 j - LDA #$00
! v, q; u% R, G) Y - STA $6000 ;数据初始化
$ J) k# }6 J: e% w4 F - STA $6001 ;数据初始化
, E; h: h0 F! Q. w4 r - LDA #$7F- `! n+ T& U4 x; W3 P( F
- STA $600F# \' R* \# N7 l; z0 N
- pause_cmp:+ ]6 y0 w/ w0 n. F* O, b8 o2 `
- LDA pause! ?- B, y+ b' G: q0 i! w( m9 H# N
- CMP #$01
- ?' _0 T0 e1 W; L. L9 e" ^ - BEQ button_press
/ v# q* U' \: k - PLA
+ K) ?) k8 p) k, b& X - TAY
: Z; v6 ~# c# c$ } - PLA$ O+ v5 ?* E% |5 q# R3 I$ ~4 d
- TAX `: Q3 ?0 R6 k$ ^9 k( b0 z
- PLA
3 Z. }' v ]# _7 A4 R* N5 B9 ] - RTS
+ T# e3 ?5 g1 e( K8 D. @
2 l9 i( q. M1 Y4 D8 D- button_press:
0 U3 j" S# T/ p/ A) A - ini_Y:6 Y2 P% o: q. I W
- LDY #$00
! R$ b1 u# {* u7 ?) I - button_cmp:2 Y$ p$ K4 V. ^6 ` \, i, L" C
- LDA button,X% f9 H1 s: u" h2 b7 H: @
- CMP ora_data,Y
- _* j3 J' n4 q% t! C - BNE count_Y_cmp: Z- Q" f4 s: F
- flag_cmp:
. k: S+ P( u. J - LDA flag,X
6 ?* [) S1 K k" {9 V+ e! q3 N - AND ora_data,Y/ d/ X Z i2 _4 {
- BNE flag_and8 Z3 T1 h! |, A. U
- flag_ora:3 k& ]% P7 \4 e
- LDA flag,X
$ G$ w8 Q/ E u/ ^$ {# L) J - ORA ora_data,Y) `! ~9 v! V3 K7 ~5 v
- STA flag,X" j( N+ `7 g% B0 }# n6 z! Q$ t
- BNE count_Y_cmp
/ N! B6 ]& m1 N+ Q: a4 }+ R - flag_and:6 u6 p4 Z6 P+ K$ C- y
- LDA flag,X! y1 B1 P. S) |7 k- } i
- AND and_data,Y
1 P. t3 Q% T, V% R, R9 | - STA flag,X
- d2 Q; C$ h ^ p - count_Y_cmp: g% G- T& f+ u& T% j7 W' ]
- INY
$ ?5 d7 z# M! ] - CPY #$08
( F( F0 `& L5 Z; s - BCC button_cmp3 Z( M; W/ h+ D. D
- # C3 o$ s+ G$ H1 D7 s
- data_extract:
) A/ v: z3 z: k# B( T- W; J) t' X - PLA* b" e1 M: G5 s; ~5 l& A7 {4 d
- TAY8 ?: \! G( M% o$ V& N. T3 `
- PLA: T1 j2 Z3 k8 h4 Q
- TAX' E Z! F7 Q' a
- PLA9 E0 N( H& `7 U, u( o1 h
- ; n/ T+ [3 v7 `. z* l& k$ S+ L
- return:7 j9 m4 U! t) W% n& a/ Y
- RTS
: t$ w8 T5 i! o/ D c7 x7 u7 n -
6 X' r4 _/ f1 r I" g4 b; }# p - ( [ X- q/ i+ A! t
- INV: ;无敌/ g+ K4 d' [* ]& ?2 L5 h9 \
- LDA $6000,X1 U4 R# S: Y8 B% G5 ^- P" _
- AND #$08 ]9 _6 b; F' I
- BEQ INV_RTS
3 b( Q$ H" _9 U. C: l5 D! F/ Z$ w* d/ M - LDA #$051 H3 K' i" o$ ^" m P( w# R2 V
- STA $04FF,X' P& @2 l% ?& w; U0 P
- INV_RTS:/ t+ O$ T. S6 {% s3 Z
- RTS2 A6 t% o t, i/ w6 L1 M* F5 X" W0 o
( ~. Z' q9 _, v3 N7 f-
, V& ~! ~% p( w6 Z* B - LIFE: ;生命4 ]" g2 n4 {6 i% a
- LDA $6000,X
1 b# P( A5 Y5 v' v M; j6 z6 w* @ - AND #$04( t8 U- x4 D9 u# f$ L, F/ ^1 d( f! x: X
- BEQ LIFE_RTS
3 p; ^4 ~1 _, j8 o% A! c - LDA #$09
8 L% ^; i) s, A) k1 C$ x. q5 O - STA $6A,X( ^3 Y7 s: v8 L" L9 b; y, Q
- LIFE_RTS:3 i+ h; ?6 ~& q+ n0 I0 [" I" _
- RTS
" u3 J, d8 k- N e% ?
; o0 B: y/ N1 b6 {' E8 N$ S- q0 k' f-
9 Q. C7 N8 k0 [3 d1 g - BLOOD: ;血量& r/ M# Q4 n8 ?2 |6 p: Z1 a
- LDA $6000,X
' @; z/ W2 O" a; w$ b2 l9 d& _ - AND #$010 \9 h3 G: j6 t& j" l# H% j5 B
- BEQ BLOOD_RTS
6 O( C+ Z8 h! \* g; h' N+ D: D3 r8 r3 m - LDA #$7F4 |( L) c+ W; |: r3 F4 j6 X
- STA $04F1,X
: D8 V- o- [* F" d- U1 g# @ - BLOOD_RTS: b3 s6 z' l+ ~1 i0 ~' B
- RTS
4 F& J, {: U8 m, t. p* V ]; C7 _ - : U5 H7 O2 S" z6 Z1 o( w& E/ K# L
- ( v5 z: u% o6 Q; U7 O
- 8 |9 s: A" G& z: H* |' k
-
. z4 _. L4 g: k& ^ - .ORG $D29F( o7 a- T" c3 Z0 ?5 j
- JSR $FF80; C% ?6 {* X$ E
- 1 j; a j( z A# s& s4 p0 B) s
- .ORG $FF80
7 A" S. w$ j* T; U8 Q - KILLBOSS_BY_ONE ;BOSS一击必杀# X/ o% f/ w" j( o& J* U& F) n
- STA $06288 Z5 {3 O) _% r, ]5 g. ^
- PHA
4 t6 _8 g3 R6 {4 q$ ^( G- T+ W - LDA $6000/ [/ U& U' E, c; O9 \2 p3 u4 j. G
- AND #$40
5 g5 S6 s1 ?" b - BEQ ADDRFF8E) ?7 o, `6 n1 B1 t3 N6 L) }, x6 ^* e# x
- PLA
% x4 ]3 S3 e7 X+ G. | - CLC ;敌方死亡状态判定0 I2 i( Z4 z7 L0 s$ h0 ~/ ~
- RTS
% J3 h4 U" Q7 F: N. U) d) m: o - ADDRFF8E:
3 V4 J% h" X2 z% Z - PLA
# @; W$ q+ l$ { - RTS
: d. P$ M7 J/ @8 W! x - 8 |2 m/ w/ q' L+ \- ?& l
, Y8 X9 c4 O6 {6 Q- K% i- .ORG $D151
; G. e; z8 A* [% G4 l& O) R0 r! v; ? - JMP $FFA0
2 s1 [; h7 r5 }. Y - ) u) H$ n! Q$ S9 B* G+ ] d
- .ORG $FFA0
) [; A$ Z% k/ @( D# A) S7 |3 |: l - KILL_BY_ONE: ;杂兵一击必杀 M% X. q5 g% @ j! P
- STA $0621,X. g. x5 v& y- z/ ^9 Q
- LDA $6000
7 ~- Y+ D8 N7 q4 {2 N0 ?, q - AND #$40
; }. M9 m" c ~* K% n6 q0 J+ n+ p - BEQ ADDRFFAD
7 r% O% ]- l' v( i( \5 g$ c' s - JMP $D19A ;敌方死亡程序跳转
5 ~) K4 `6 F3 b7 ] - ADDRFFAD:# H2 o9 y* y% Y2 W$ Y0 i3 L2 B g7 N) X
- JMP $D1544 o. b2 ?+ Z2 d5 A' M; i9 H* E5 x
-
- ?1 s& x# Q* p - # d. _% D+ d2 f8 C: \! o
- .ORG $A7F6
3 G0 j5 S$ P/ F - JSR $FFB0
# d/ f4 Z: R3 \: b5 M+ A. J - 5 b. |' S+ N) a) ^( ?6 ^
- .ORG $FFB0 ;全屏攻击
# `. ~$ a" r( V - PHA& c% y; _0 F8 M/ Q P8 J
- LDA $6000& ]9 Z2 I; z( I; Z% t7 c, M6 y8 X* a
- AND #$803 O F) c7 w3 H2 X5 |7 O& Y
- BNE ADDRFFBD- ~+ S3 M4 A! j# o* O# f
- PLA6 z& B, c0 B; ^/ {
- LDA $0015" N. J0 Z' v& W% ~# k/ L$ J. d
- SEC. p% _- }0 B# ]" H" m, b
- RTS
( Y: e' Q5 B H - ADDRFFBD:$ g* i* T3 x e
- PLA& n. J! j/ g! G2 e2 X
- JMP $A826
3 v, n, ~' Q0 _' s$ Z% ? - 7 q! o. G3 P. C1 J1 ^
-
1 m% q6 f3 o7 Q& K! Q% y# A" M9 f -
0 Y; o" q, D8 z* ?% A' o @ - .ORG $AA6A
2 ]7 S- A: O6 z1 \3 C - JMP $FFD0; w0 x4 [) o4 m! ~
-
7 e5 L* Q4 S- ^' v( N: Z7 G - .ORG $FFD0 ;敌兵动作忽略) U x; i n9 X7 N a" _
- PHA2 B8 n6 I) [: t6 Q2 s$ N) Z$ d
- LDA $6000
! @3 _& y: }. o, H; V* i) t - AND #$80- u: W" `' A9 `7 j6 R' w
- BEQ ADDRFFDC
3 ]/ Q! G- y3 h \) Z4 O - PLA
: z* d0 ?* l; i. n1 s& o6 Z/ C - JMP $AA72
. ~1 k+ V6 B+ l' W" J - ADDRFFDC:$ \1 `# Q e3 q6 A5 a( G
- PLA
/ e% J3 g: @5 o5 C - LDA $0629,X/ [ ?3 ^+ T' `
- JMP $AA6D5 c# ?$ }* j* t; e" p
+ i- B; C8 @: A% ?- ;[FC][忍者神龟3代标题选关程序]
' `8 ^1 A+ }& \7 c' f9 v' r2 H - ;作者:FlameCyclone 2017.4.1; H( |, Z0 L% k8 t
/ L$ N9 \; L+ x" [ y0 G2 t
# k! l K3 P5 ^( E- ;配置数据4 m- s$ s. f% t$ S0 t4 Y
- KEY_ADDR = $F8 ;按键地址" a8 Z; q6 c' A+ i" H/ ?% q% M. t
- STAGE_TEMP = $6010 ;关卡临时地址
+ j' f. Q$ e) y p5 H# P6 c) V - STAGE_MAX = $0E ;最大关卡数
/ q* M4 N' N# W" E - TITLE_A = $20 ;标题条件A
8 r% S d5 d6 _2 [& ^' v4 ? - TITLE_A_ON = $02 ;标题条件A有效状态判定
3 |9 L1 F( n3 I- u0 p" X - TITLE_B = $21 ;标题条件B5 O8 [! Q; s! y; R$ p$ G
- TITLE_B_ON = $03 ;标题条件B有效状态判定3 H- t! o, c1 l! U( b% F0 U7 t
- PPU_END = $FF ;PPU结束符5 D9 D3 [6 _: o0 S4 i+ H$ \
- TIME_LAY = $4A ;标题显示延时地址
5 X0 A1 Y% M" g9 o - BUTTON_DEC = $42 ;关卡减少按键0 Z, P& d m! g# ^9 T+ d7 N7 o3 K
- BUTTON_INC = $81 ;关卡增加按键1 W# d3 h& `; O5 J( ~8 S
- NUMBER_A = $06 ;数字A距离STAGE偏移量% z6 G- D# t3 N: `/ J8 C- P5 E/ D, w- _
- NUMBER_B = $08 ;数字B距离STAGE偏移量8 W; A4 M$ D5 N0 V H! I
- PPU_ADDR_H = $23 ;STAGE写入地址高位% j8 \$ U5 s! d+ y6 r g' f. j
- PPU_ADDR_L = $8C ;STAGE写入地址低位
O7 |5 t$ u. ^* k - CHAR_S = $A2 ;字符'S'% @" D' c, E. M7 q* r2 T1 x# t
- CHAR_T = $A3 ;字符'T'% e' D; w( L9 c) R% ]% z* _/ n
- CHAR_A = $90 ;字符'A'% o7 x X ]# j w
- CHAR_G = $96 ;字符'G'" O R) B$ _/ D7 D3 ?4 ^9 B
- CHAR_E = $94 ;字符'E'& _9 D$ w/ B+ h# f% r
- CHAR_SPA = $00 ;字符空格) p$ \% G8 Y* F
- CHAR_LIN = $AE ;字符'-'
8 Z6 O, B0 |+ ?. B0 z - CHAR_O = $9E ;字符'o'- c8 c; ?% q3 M0 q- _. q
- NUM_1 = $81 ;数字'1'
2 R8 R! o6 @2 l: Q4 u: [2 [$ | - NUM_2 = $82 ;数字'2'3 Z, Z4 F1 f8 y9 \% o8 T. T) p# z( D! W
- NUM_3 = $83 ;数字'3'* f! n- D( p# H7 f$ G) f& N( F" R
- NUM_4 = $84 ;数字'4'
2 s/ t- Z1 p# [$ x+ \ - NUM_5 = $85 ;数字'5'# F* w& t+ X1 Z2 U; ]0 {
- NUM_6 = $86 ;数字'6'
; \' F* Z$ u$ v$ g& _ - NUM_7 = $87 ;数字'7'% q0 _/ l" [" q. x( L! Y+ \
- NUM_8 = $88 ;数字'8'- i E: _+ [/ Y' o1 p
- NUM_9 = $89 ;数字'9'1 o M3 s$ Y1 i3 |! h2 d: j0 D
- NUM_0 = $80 ;数字'0'
4 F; L9 ]& \ h, {+ d, H4 a - ! S& x2 N7 {! ?( Y
- .ORG $F82A# P" d) J# e* k& ?2 G
- JSR $E700
7 [5 ^: v1 k1 s( R# Q# `, ~ - 3 B* J/ G- Z6 _7 w1 E( i
- / E. z- c" j. o7 p2 c
- .ORG $E700/ v. `1 B) {. @4 w: w
-
8 w4 ?% U$ B" J( Q - STY $4014 ;补上覆盖的精灵写入指令
! `$ f6 V3 u! d1 ~4 w - PROTECT_DATA: ;数据保护
7 `/ }9 g; Y: G5 C& D. Y0 u - PHA ;数据保护开始7 {3 L6 O6 E G L
- TXA) F" w) ~/ D0 g* b( m0 {) \) a* f
- PHA
/ P* y/ d8 n4 F; G: {; t4 l, T k; D c - TYA
" s& k1 q) J6 v8 B" G9 x+ `& ] - PHA ;数据保护结束1 ]; j5 J2 W& o$ y4 P
- LDA TITLE_A* n7 y8 t5 s8 L& ~
- CMP #TITLE_A_ON ;比较是否为标题画面
( Z. d& q8 m0 T. y5 H$ P - BNE RET7 g8 W0 A5 H- J r$ j2 g" G
- LDA TITLE_B6 {$ \0 x& q u
- CMP #TITLE_B_ON ;比较是否为标题画面
. o6 t& i9 u6 X+ Q. B2 B9 H - BEQ PPU_STAGE& y6 T4 u% L7 J* t/ q4 q
- RET: ;恢复数据! q2 V) C( |2 E( F; }
- PLA ;恢复数据开始
( _" z9 K. C3 @3 Q |' |& s+ J6 p - TAY
: y6 \( D1 F9 f - PLA
! A. m6 G$ p8 ]2 Z: g6 x - TAX, B8 [& H2 N( n7 e6 I5 K
- PLA ;恢复数据结束
4 y5 w* W: R& S; |' z - RTS ;返回" d2 J5 A4 m% C* f0 n
- PPU_STAGE: ;字符STAGE写入程序2 H# v; L" P' z6 G4 n
- LDA #PPU_ADDR_H
% }. G0 Z% D. B' b* g - STA $2006 ;设置PPU字符写入高位地址( c5 ]+ m+ w4 X1 h z3 J! R
- LDA #PPU_ADDR_L+ h/ e: F$ O% E3 g0 E
- STA $2006 ;设置PPU字符写入低位地址& l$ y Z$ w) a0 t5 H; a
- LDX #$007 S' A3 \$ R* H2 `0 L0 G
- PPU_STAGE_WROTE: ;写入STAGE字模+ q( t3 P7 o- A! W5 F
- LDA STAGE_DATA,X
' `' ^, }1 P( Z2 r! d* N - CMP #PPU_END ;判断是否写入结束9 C3 V1 X7 z4 V: ^6 i, Y7 u9 z
- BEQ STAGE_CMP
6 w* } t2 _9 `/ P; J3 b. K9 U8 y! E - STA $2007
, v, U N) E& a4 U - INX& t! p5 ?; Q0 m3 e* h: x5 r
- BCC PPU_STAGE_WROTE
# Q2 N) Y, ~9 }2 Y - STAGE_CMP: ;选关操作+ h G/ _7 V l. n% D6 }
- LDA STAGE_TEMP$ }6 o) j+ I$ |, {
- CMP #$FF ;关卡数据初始化条件判断
: K7 O* b5 j3 P4 S - BNE KEY_B7 _+ E6 [3 C+ }5 n
- LDA #$00
( T: l4 N! b% v. g9 l* J - STA STAGE_TEMP ;关卡数据初始化
) Y7 b8 T8 _+ n! c, R5 y a - KEY_B: ;关卡减少% ^6 c$ N. t% t
- LDA KEY_ADDR6 t; [; D2 Q: d n& t
- AND #BUTTON_DEC ;按键B或左减关& j8 v9 L* V+ x6 v# X6 }, f
- BEQ KEY_A* h5 @' i( k8 ?( e4 i
- LDA #$FF
0 c; }* @ t* {* V1 y& e3 z - STA TIME_LAY ;重设标题延时
- Z) t$ V! u% s1 t2 {# J& d* a - LDA STAGE_TEMP
! p, j$ K8 N, q! \" O - CMP #$00 ;关卡比较; {: @. h$ c! M. t
- BEQ KEY_A' r, T/ j0 B2 Y# T
- DEC STAGE_TEMP ;减关
: U7 j& I$ H; a2 C7 Y. u& t - JSR MUSIC ;按键音效: g! {* t. u% G/ \% m$ m
- KEY_A: ;关卡增加
9 c' B, W2 y) t* \; d* f - LDA KEY_ADDR' }/ U& A3 i" j: ~( Y' _
- AND #BUTTON_INC ;按键A或右加关
' i8 q) c \! _$ V - BEQ PPU_NUM_WRITE8 Z, x+ D9 n4 _; `1 u3 \2 }6 ?
- LDA #$FF
3 f% D) p! @" R6 m( N6 z) z' q; i2 S - STA TIME_LAY ;重设标题延时
% h' c' [6 M3 |( C; Z: J - LDA STAGE_TEMP
a! G1 c, @& G. y& o7 n, U9 f& y - CMP #STAGE_MAX ;关卡比较
6 G" V5 A! Y, r6 n2 H - BEQ PPU_NUM_WRITE
$ \# E! V7 `3 v0 u1 ~0 ] - INC STAGE_TEMP ;加关
6 [( o* c: x! {- h- I9 ^6 k - JSR MUSIC ;按键音效- w }- `- B8 Z$ Z; r' M& P* s6 l$ P
- PPU_NUM_WRITE: ;关卡数字写入地址: {( L5 y' z2 j0 q9 }4 G
- LDA #PPU_ADDR_H
, v5 F- P2 W0 _9 @! _ - STA $2006 ;设置PPU数字写入高位地址
+ C$ f. ?- s8 J- L5 a' o' { - LDA #PPU_ADDR_L
1 n) [7 F1 E- M5 F; c; n7 s! h - CLC
9 j a9 h+ k) G+ y - ADC #NUMBER_A6 Q6 Q* T c9 z5 W( b8 @
- STA $2006 ;设置PPU字符写入低位地址
; h! J* m$ p( Y0 q - LDA STAGE_TEMP
: K1 x5 v& v, B1 @. q- B - TAX
4 {* f# x s! V0 d# g: u/ G - LDA STAGE_D1,X ;写入数字5 [# s! e4 _ G# s+ s+ j
- STA $2007
* d. G' S2 O! Y$ m( T# s - LDA #PPU_ADDR_H
: E$ t2 ]1 s1 j* H1 v - STA $2006 ;设置PPU数字写入高位地址+ T) \" k) c; P) p4 E
- LDA #PPU_ADDR_L& g3 L4 t- M) u& U9 a
- CLC; X9 I$ n7 o) Z& G
- ADC #NUMBER_B
3 u2 m4 m& f! ?9 | - STA $2006 ;设置PPU字符写入低位地址
1 B4 _) [$ U6 L. i$ C - LDA STAGE_TEMP
, K) r, z5 Q6 _0 {- r, L - TAX
( x4 ~" v9 Z& t0 e% B1 {! N: q- G - LDA STAGE_D2,X ;写入数字
& M1 _- C0 e( ~* ^7 o' C2 n - STA $2007* U# L1 @2 n# p( w z) h4 J
- STAHE_WRITE:
y _: R2 x5 l - LDA STAGE_TEMP
# g* ?% @6 i9 G! ?8 Y - STA $2D ;初始关卡写入* n/ G7 [* z# ? ]" Q- ]
- PPU_RTS: ;恢复数据: @0 X3 K% l( x. z
- PLA) U2 `0 ~9 W7 x, W
- TAY
! K: s' V6 r# T, C6 P3 N% G - PLA
$ S; `2 ~: ?! ] T - TAX' v0 f/ L9 j, m' o) s( ~ K
- PLA
( n/ W3 N0 j; G" ?% y! U - RTS
; b+ U0 L# G; F! k! o4 }/ G/ g - % ^' i# O: j. v1 \ D% |6 O$ L
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
h7 C9 J, L8 }* Z2 K1 n- M5 c% U - .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END: u5 m+ ]1 F1 J( R5 N+ d
- 6 I' Y6 ?, q0 W# q1 i
- STAGE_D1: ;关卡数字
% l* m: A! n4 C. m - .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/ j W2 ~* v; A) j
- 4 o: C. b/ c1 I# T% H" _& g
- STAGE_D2: ;场景数字; P; G9 e2 H, Q: ~/ Z W k5 Q: R
- .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
4 k4 S: L1 a- J9 I# x - + m0 z! ?/ b, S! ~
- ) @* e Z. [; o
- MUSIC: ;按键音效
; R( m. ]0 \2 o* z, Z- y& p - LDA #$3B ;音乐号* y1 b8 W' a3 ?/ C2 H" U9 Q2 f
- JSR $919E ;系统音乐调用$ d+ U* R, r; Q
- RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;2 _" E+ T# U: m0 h& J% s+ V' J
5.生命加满: 暂停后,按下键切换;
* h7 d3 F* i( F$ j! t3 \( I 6.血量锁满: 暂停后,按右键切换;, C" o8 Z& F# h) q0 w
/ ~( k% r' n) Y. \; @7 U; X
# x, ]8 S( [4 O3 _
: s) D3 V5 @/ d# X9 m6 e

8 p! I6 n2 b2 I& r9 v, |; ^9 D c' P6 X! w7 a; X4 {
FlameCyclone.ys168.com' F( N1 B6 H: J
www.nesbbs.com
. h+ O2 i1 f; M# I. }
6 E- w" M; |! I/ f& J( J |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
1
查看全部评分
-
|