|
|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑 1 g" G" U2 P8 x9 ?, h
6 p5 U- t* P2 l" E2 ?- J a[FC][忍者神龟3][END选关]" H9 F! A0 o& h$ g% B
4 o* K$ f& ]; D3 b7 _$ P. ?' F时间:2017.3.305 w9 _" B l0 Y- x ^5 J/ x
作者:FlameCyclone
. v" u4 u( B m+ T; Y( B内容:
% P3 E4 Z I9 G) Z$ g1 Y& S* b 1.关卡选择: 标题时,左或B减,右或A加;
q, O; y4 _ V6 o0 R6 ~% ]! [' Z 2.全屏击杀: 暂停后,按A键切换;
9 y# A, g1 r H6 H- m- a2 X1 C 3.一击必杀: 暂停后,按B键切换;- .ORG $FEA01 ?: |5 C' { S% Y; r( v
- ora_data:
6 w+ O% u0 L/ W7 _# d0 K; } - .BYTE $08,$04,$02,$01,$80,$40,$20,$10- |& N6 r: | q# I, p9 H9 t
- and_data:
& a( t1 }( v: @8 \6 m ]+ V& F$ X j4 y& V - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
, \/ o9 H- C9 K# F. n+ ] - / f7 V! \$ s @! [9 [
- button = $F8
' i! }: i B2 r# {2 F3 V( ]9 | - flag = $6000( M `( @# |( z* N; A
- pause = $0045, m& Q. B% m5 b3 K# e. ?) x* c3 i
- I0 }0 @) ~- p$ J1 ^4 B ]
- ) r5 w/ t; C8 n) b8 Q. |/ o& ]( X9 J
- .ORG $F90D
% ]( T! Q% p2 H* e: m+ E - JSR $FEC0
4 v4 c/ \0 Z' w( A& ^; d -
5 S6 m9 c1 T) _- ]7 @ - .ORG $FEC0
8 X( F8 K- i! v1 V2 K - STA $54,X% J8 i8 O0 b4 z: c1 A. t3 J% H
- STY $FA,X
; _* @/ X4 I$ g3 v { - PHA
* C8 A2 \1 p3 ~& { - TXA
( u- d4 ~$ {3 x, g( W l1 Y( g( U - PHA
5 R( n; T9 e! N; J9 \* v - TYA* ~3 f- @& q$ U2 u+ t2 j* B
- PHA
1 K' U4 e: Q+ f5 E% l - JSR KEY_OPERATE! a( X/ t1 w3 e$ m" n
- JSR INV
, _ V( y* F( U7 ~0 ~+ n" W - JSR LIFE
) x2 }) F s$ ~* [* c# f - JSR BLOOD5 Q% N, \4 g) c3 c0 p! w- S
- PLA7 P% E) M" O8 X# T H& v* ?
- TAY" T( j! M$ E* T
- PLA6 _( m8 c: ]+ D5 g
- TAX
$ M3 C3 I' T* Y - PLA. s/ k. L2 _6 H5 X# t5 Q
- RTS
0 t( w% `0 t) B: V7 _$ L - KEY_OPERATE:
! u8 r5 s8 v; }4 [" w; v( D - data_protect:7 u* N. T$ m, j( g' A: D. D+ ]
- PHA
7 z* H9 H5 w6 s5 r6 T - TXA
0 A8 N, v5 d( X P2 I: N - PHA7 O, s, b7 `) r6 `1 ~ T$ w
- TYA
0 I7 O" z8 R2 U3 B( }, p0 w - PHA
5 N6 D; g1 r2 G' P1 q; r
: y( X, ?8 `+ J' |9 r- `9 N- FLAG_CMP:/ l6 {* o% V9 p& B3 i$ l
- LDA $600F
2 ~3 h/ I' k! i* _/ a' ]6 Q - CMP #$7F ;标志数据初始化条件判断: l }, P1 [5 U. V1 I7 J
- BEQ pause_cmp
+ [$ d2 X' U8 [5 \# j' C' Y0 m. n - LDA #$80
0 Q& P, F4 L+ {) W. r' a/ N - STA $A001 ;6000-7FFF写入启用5 ?5 ? E( _- {7 W; d) r% H' C: m( k
- LDA #$00; t/ @; U+ j; }" s2 X& Y) ?
- STA $6000 ;数据初始化
+ F: l3 V- b6 {' i - STA $6001 ;数据初始化7 \2 E/ b, U8 }. a2 N# ~6 F
- LDA #$7F
: K% H: I2 ~9 A8 t - STA $600F% N1 }. X" b3 j$ n, c1 b% P
- pause_cmp:
& y* U" g B6 ~" W - LDA pause& u3 H }& z, V5 s
- CMP #$010 w1 R1 O) _3 p9 [
- BEQ button_press
* g' g+ m U- P4 {. `. ~ - PLA9 f: @6 q/ `1 d& q% ]1 h" ]8 p$ L
- TAY
& S* L$ r% O% s: z - PLA
1 c/ H: J$ k. Q+ I# { - TAX
! V! n: Z0 m5 G: k3 c1 D - PLA
8 C: H! V# x* k - RTS* l0 i7 t9 G9 V& s) `: m- G
e ~2 W7 k# p4 B- D- @) E; q- button_press:- ^9 H0 s1 l& v( I. u
- ini_Y:" L" O- G5 N9 J7 M4 s5 \. T
- LDY #$00) m0 ^% i. {& ?, a
- button_cmp:* g% X& z0 c* @2 F S( m; F! h
- LDA button,X1 J& o3 f6 w5 O2 e
- CMP ora_data,Y- E( M8 u2 V1 o W7 k1 C9 e$ ?
- BNE count_Y_cmp* i9 O, B! ^6 K6 Z( Y. L( s
- flag_cmp:
7 r$ G4 b) J/ ? R+ {5 D - LDA flag,X. {8 m7 I4 e8 E! R5 ^+ `
- AND ora_data,Y8 O& r h- I- ^) G1 [" t8 v
- BNE flag_and
0 L! m1 X% P( }& i1 Y2 j" V - flag_ora:6 n1 e; p; u) J) y% U9 A" M& ]' r
- LDA flag,X2 G* E* f, h$ p% n
- ORA ora_data,Y
4 v; f1 C( k# [& n - STA flag,X
1 i3 F5 ?+ f6 E1 b/ M7 u9 b9 ] - BNE count_Y_cmp
( p; v* z, X: H: g: H - flag_and: }; V2 `& j& X: h1 O1 X; X, e& K
- LDA flag,X
/ ]* @* Z8 {8 g; W# K - AND and_data,Y/ X6 |$ t! y1 _: V# O& U
- STA flag,X
- t0 ~+ }, f( k @ - count_Y_cmp:
6 T; ^; s; L8 K, g" X - INY8 M& F( n: `6 j( N( _3 n# q+ W, Z- h& M
- CPY #$08
% g; k* S; \9 n+ D% } - BCC button_cmp
+ \: Y1 G$ v3 z; S$ |( o - % W6 D0 ] B" `8 H' c* ?+ t9 W' q
- data_extract:" [7 w2 \, Y, d6 A) M
- PLA
/ w! S* l1 }, ^% ] - TAY% c# n/ C6 K0 |* z
- PLA
5 n+ |- b; J% P" s- m- l8 }- x - TAX
8 G9 r# ]4 Y) s) f5 y - PLA
8 V: l. l7 F5 U9 | -
' _: j3 a3 `; f+ U9 W4 L Y W" o) M/ D - return:/ s' T+ o0 e$ C- p9 i- o/ u
- RTS. t) D1 D% ~4 w, O, ~8 a* g$ J& M
- # c+ x; B0 p' j
-
; Z; i- p7 g7 e S: ^1 A5 \ - INV: ;无敌4 P: `$ d- D, @' m
- LDA $6000,X/ o& ?/ v1 A2 U/ J7 |' z
- AND #$08; \% m' b% B. ]
- BEQ INV_RTS5 |7 x, e a( q/ [2 E& |
- LDA #$05
. H0 T" @5 s8 V! j - STA $04FF,X
& K% O+ X, a- @- j7 Z - INV_RTS:: i: u: c$ Y' h Q7 }
- RTS
. i7 H5 ^& I& l: J6 u
2 G- b$ |" c) b9 e) S- ! q( m( a: ]; k0 u0 i3 y
- LIFE: ;生命
% w/ d/ h7 _% P7 p5 }2 u3 q - LDA $6000,X
* ?, U% O9 H$ w - AND #$046 z6 i3 w/ k0 ~6 l% @
- BEQ LIFE_RTS Q3 x$ ^/ K3 Q
- LDA #$09
; C% W2 I( ]# F8 y: K4 v- h+ K - STA $6A,X: h. x/ @# b8 U
- LIFE_RTS:
$ } n2 n5 }9 U4 M - RTS9 V, ]. W6 F6 G n- G* j( z
- 4 r7 ~8 v; Y& X/ e" v
- 1 t b4 P+ \7 P9 X9 e+ b/ _6 \
- BLOOD: ;血量
: ~1 }; R, t" Q, D A6 a - LDA $6000,X
+ G( n) n' J3 x0 D, k - AND #$016 E( `( w8 C- n( T0 Y
- BEQ BLOOD_RTS x5 E% w2 ?' Z. b' ` N
- LDA #$7F, R5 @* I% t( H7 z% X% `& N
- STA $04F1,X2 Q; @& d$ ]) n% g* B1 U( c$ u
- BLOOD_RTS:
" W3 l z3 l: U6 O' l3 T - RTS! g3 `2 z+ }5 e
-
% @4 t& B3 b) w -
! S) u4 g M8 d3 s; b! h' I; } -
& }+ E; @6 G Q6 P# y7 ^7 \- U - : H) K3 m9 X5 G7 Y: e0 J
- .ORG $D29F
4 d) |3 r9 l8 e4 Z - JSR $FF80
4 B( d# x) ~% T) y - " ~2 X/ ? Q% |
- .ORG $FF802 ?) N8 E1 H6 ?: @3 C5 a+ B+ D. G
- KILLBOSS_BY_ONE ;BOSS一击必杀' r/ R4 K: A* J+ M- Q! x0 H& K
- STA $0628
# X( m( y& n T- F* V! m2 s - PHA
" J, r- N4 n1 M. e6 R( N1 _5 ~ - LDA $6000 b4 P7 n) a4 ^8 D" B6 P6 U2 v
- AND #$40
0 U/ G9 T. `* B0 e& ?2 F% L( G - BEQ ADDRFF8E
5 l9 `( s3 H7 v/ X - PLA* h+ C4 l, G& P/ j! Y
- CLC ;敌方死亡状态判定
; j2 F! J; ^7 c. u, M3 E1 Q3 o - RTS& U9 J2 `3 S6 e. O( W, e. ~
- ADDRFF8E:
2 t9 u* m& T Z- I8 n1 \: m; [1 N- h - PLA
- S7 l6 f V- b, H5 g - RTS& ]$ S) z9 |/ }% F9 Y, x4 l% o( r
- 2 @ R3 ~, }5 i2 Y; V
- * u, w9 A& c' e+ B9 u4 H
- .ORG $D151
! l/ E5 ~$ m: f& C& Q2 ]4 V5 W - JMP $FFA05 Q$ _! ?% [( ^; @
- ( G8 ?+ Q$ u& t7 C" c5 |, o
- .ORG $FFA0
; Q J. L" f+ v - KILL_BY_ONE: ;杂兵一击必杀
: X( K3 \4 A- K: `) A! h5 j9 t - STA $0621,X
4 Q3 Y0 k5 w& ?, o- X& [/ F, R p7 b - LDA $6000
. `5 e7 h- G3 w+ x - AND #$40
2 Z9 Q* Q' l4 l& }0 k# P$ y7 T - BEQ ADDRFFAD, p' Y* m% R4 D3 H* @+ ~6 q, V' }1 r
- JMP $D19A ;敌方死亡程序跳转
$ [# T4 p( d" m - ADDRFFAD:
' \! w* I. D9 M {) L, ]2 |' Y - JMP $D154( U5 _! P5 v6 I& R% A5 m. L
-
4 L. h. }- J C -
; c% O: g$ d$ t! u9 ^ - .ORG $A7F65 O* M- a2 e4 E
- JSR $FFB0+ i& @1 H7 z3 b) L
- . B" N+ P: ~: x0 K2 ^1 z; B, i
- .ORG $FFB0 ;全屏攻击$ \7 F% T A! e, ]5 I( w6 r
- PHA4 @- n: O3 E0 ]7 X* T! l" v+ @
- LDA $60006 Y" F' I P% ~1 Q. b) _: O
- AND #$80
, @+ X/ w# ~! J9 Q: s - BNE ADDRFFBD
0 w8 I! N$ o$ K/ J7 }0 r. Y - PLA
' d- y' B5 V }9 A0 \: T8 k# ^- b; Y - LDA $0015
0 A8 k5 ?1 R$ S% P7 x7 Z* | - SEC/ D$ O1 l' H, Y% x( }# a' ~7 J
- RTS$ |9 k7 e$ G2 k, d
- ADDRFFBD:! a6 v( y2 ~4 n; g' ]1 |- v6 W
- PLA9 O, T& S+ c, k) b; k
- JMP $A826: u4 c6 I; F( X% t
- 5 ~! G/ l2 }" Z5 _" D
- 7 J9 P" L2 V( U/ ], G5 A0 o
-
( ^8 y1 F1 t9 C7 t - .ORG $AA6A: Z: K b% X5 G. ^9 Z" w. K
- JMP $FFD0
4 m: T, m3 f) u `; D' ^, `+ J4 Q2 I -
1 ?4 B7 X) s8 I4 ` - .ORG $FFD0 ;敌兵动作忽略( E$ k5 u. X8 V0 d% P
- PHA
# o; t8 e1 |; z. w* L6 I$ S - LDA $6000
/ v. [) T1 ^% I# P3 G. {2 Q2 b4 | - AND #$80
3 [9 c0 Z" B( S - BEQ ADDRFFDC$ u# ^5 ` k1 E
- PLA K% F, T) J1 h0 X5 C
- JMP $AA72
# k- s: E5 Z9 G: @$ m8 s - ADDRFFDC:
7 }. t* J. J1 v! w2 k7 t' r c Q - PLA, `9 d# H- E. ^+ h5 w9 w
- LDA $0629,X: G0 V$ E4 q+ a2 K
- JMP $AA6D
5 L9 E3 y" V- u( z, U - 7 Y7 O& N8 A/ o4 l3 r
- ;[FC][忍者神龟3代标题选关程序]1 S0 D: q6 }0 m& n& X0 i7 h
- ;作者:FlameCyclone 2017.4.1; {5 v9 M n3 G0 |
) |7 L5 f" b' e& t9 U- # `& Y: Y+ `% t; {/ d
- ;配置数据
9 l2 L; h8 ^8 a, f0 g - KEY_ADDR = $F8 ;按键地址9 k+ L4 H$ w* D3 H
- STAGE_TEMP = $6010 ;关卡临时地址% e# p2 J' r0 Y f' ]6 D" J- F- [
- STAGE_MAX = $0E ;最大关卡数
5 ]4 x' o' N( e1 ^2 R. x+ e* | - TITLE_A = $20 ;标题条件A
2 Y6 ]0 W$ N/ @0 g" K - TITLE_A_ON = $02 ;标题条件A有效状态判定2 N, m/ f6 x5 g+ d- s
- TITLE_B = $21 ;标题条件B
k% c: _0 e. T% S( R* \' J: ]# h - TITLE_B_ON = $03 ;标题条件B有效状态判定. K% R# [2 C+ n1 D+ [
- PPU_END = $FF ;PPU结束符9 S0 z) l4 z# c+ D/ r: d& I& u3 `
- TIME_LAY = $4A ;标题显示延时地址6 A+ X7 b( I/ {2 [7 Y9 S4 X
- BUTTON_DEC = $42 ;关卡减少按键
& h; N- S: j5 N. G - BUTTON_INC = $81 ;关卡增加按键
4 X; H3 U: k- F: P - NUMBER_A = $06 ;数字A距离STAGE偏移量
" o* `9 ^8 W7 w6 o# c) Z& v. }6 m$ e - NUMBER_B = $08 ;数字B距离STAGE偏移量
2 P4 w- f+ `9 j/ l8 p( G% c - PPU_ADDR_H = $23 ;STAGE写入地址高位
# v. f: A; N/ a - PPU_ADDR_L = $8C ;STAGE写入地址低位8 @* h3 O# w9 e6 h1 `$ ~. ~# f
- CHAR_S = $A2 ;字符'S'
( R& u3 C* P* ~1 W% z - CHAR_T = $A3 ;字符'T'
' j- Y: t9 b, G' {4 t. K" q - CHAR_A = $90 ;字符'A'
$ a6 O- f* L! {" D4 M/ }3 p - CHAR_G = $96 ;字符'G'
. |+ l" O! @" K- ?) \" i. W - CHAR_E = $94 ;字符'E'
/ \$ b6 ~/ H! n5 [$ u4 ~7 Z/ A& g8 K - CHAR_SPA = $00 ;字符空格
; L7 |$ ^1 l+ P- Q- B6 M - CHAR_LIN = $AE ;字符'-'' x' L. i" R& X$ a& b% [
- CHAR_O = $9E ;字符'o'* R. q$ e$ S* G; ^' G J2 a8 k
- NUM_1 = $81 ;数字'1'
, V2 W. ^3 ~9 S% K5 h/ e w - NUM_2 = $82 ;数字'2'! q: F- A* Z% |" A. D
- NUM_3 = $83 ;数字'3'
, S- n) Z( J0 D3 j5 C( m7 c! x - NUM_4 = $84 ;数字'4'
1 M" T% j- [# u/ D - NUM_5 = $85 ;数字'5'! G2 Z# w5 Q% a, Y) {
- NUM_6 = $86 ;数字'6'( w* T/ {8 B( T: E" m
- NUM_7 = $87 ;数字'7'6 D2 P& ?2 P k( X# v8 c7 I
- NUM_8 = $88 ;数字'8'
) S! a% [$ y0 o' N% W4 D8 W1 n - NUM_9 = $89 ;数字'9'
- G5 y' g6 W+ z0 n' e/ b5 t0 P# ?. }1 l - NUM_0 = $80 ;数字'0'* I% y) R6 y( N5 F" C, f$ p. P
- 1 H& E: r$ o6 Z
- .ORG $F82A
) ?( o$ J5 `5 D' E - JSR $E700, i1 p# L; o/ ]) s5 i# } C
- ! v' C1 t2 o- G* ~# _$ D
- * x* Y$ a$ e. x# B' r* B3 O
- .ORG $E700- R/ N# r% s6 C h% r0 n' }
-
: k8 m+ q6 s7 D5 ` - STY $4014 ;补上覆盖的精灵写入指令
8 t8 ^5 Y6 L( f - PROTECT_DATA: ;数据保护8 \, H1 p9 F: v. N4 }1 e! g3 x
- PHA ;数据保护开始* L% V2 R& m- }
- TXA
3 S0 E" ^+ F& \2 n - PHA7 S$ K- m! J1 K8 Q- z. y
- TYA
' O& H& S5 w o3 u9 F: \2 f - PHA ;数据保护结束
4 z' S- v; @& t7 U) o* ]0 B4 i - LDA TITLE_A
5 k& n; m. }' k8 @6 N7 P - CMP #TITLE_A_ON ;比较是否为标题画面* ]$ o) W& [ D Y
- BNE RET, U; P5 c& z* O1 C% k. l1 I
- LDA TITLE_B
' [7 l0 [9 p8 h/ u: j% I- ~( r - CMP #TITLE_B_ON ;比较是否为标题画面) A$ T$ r) c& r' d
- BEQ PPU_STAGE1 ^, O* K+ o9 K; k
- RET: ;恢复数据 d) r& G3 t3 A4 H. }: f
- PLA ;恢复数据开始; R2 t, g& C |
- TAY
& i! t5 S7 k% f) S9 l( y - PLA
, z% b/ c+ |2 ~# G: u+ |9 w, }; a) X - TAX7 P1 ]9 h3 T/ |* C/ C
- PLA ;恢复数据结束3 v, L: j- v9 a. h" S! }
- RTS ;返回! |4 E* r: h* @, [. U! L& g% s
- PPU_STAGE: ;字符STAGE写入程序
# n" W! x+ P5 A- f" I# K - LDA #PPU_ADDR_H
" c) c# g0 Q$ i) D! r* i - STA $2006 ;设置PPU字符写入高位地址9 N: ?# u- I( E
- LDA #PPU_ADDR_L0 X$ |* @. P0 _) l2 ?& P8 x6 t5 N
- STA $2006 ;设置PPU字符写入低位地址. |; i/ N: w* W$ R5 d2 H" [5 b
- LDX #$00
" @ H; W1 w! j$ K$ v, ?; X - PPU_STAGE_WROTE: ;写入STAGE字模
( N7 J, f& ~; @ - LDA STAGE_DATA,X
2 W2 t. W5 C/ ^, O - CMP #PPU_END ;判断是否写入结束
" N1 X, W N! f- E0 g# [ - BEQ STAGE_CMP
1 J9 a4 f2 y& q& @ - STA $2007
1 C. H7 T/ g3 [$ K9 E" Y" Y4 |$ s5 S - INX: [& W! h( u2 g
- BCC PPU_STAGE_WROTE0 _7 a4 B* X9 Q' i9 u @
- STAGE_CMP: ;选关操作 d& H7 f' r2 m% M8 Q% L
- LDA STAGE_TEMP% |4 v% d4 L! B' `+ R W
- CMP #$FF ;关卡数据初始化条件判断
- R9 Q* v3 r8 Q - BNE KEY_B6 B G8 l; c5 X
- LDA #$00
# J: ~/ {' s/ _/ J. P5 X1 @, K0 I: U/ N - STA STAGE_TEMP ;关卡数据初始化
0 U6 Q- B" h3 k+ y- c. |8 o - KEY_B: ;关卡减少. u5 W6 i G- h( k8 }3 \
- LDA KEY_ADDR
. j" f8 C0 d$ E( M0 \, _ - AND #BUTTON_DEC ;按键B或左减关3 f( c3 u6 @' X1 ~
- BEQ KEY_A
8 q( h# f: Q! y2 F O1 U - LDA #$FF
) U) w& D' b# f, N: L - STA TIME_LAY ;重设标题延时# x% d" j( a4 _8 f# w
- LDA STAGE_TEMP# K. B! a7 u1 N, P2 j7 d& X
- CMP #$00 ;关卡比较
2 m( e7 u% e" s2 o' g1 y2 ~ - BEQ KEY_A
7 M& ^* V7 }$ R$ O- E. ~& U - DEC STAGE_TEMP ;减关
9 t% s& y% C% y4 s5 H - JSR MUSIC ;按键音效
: Y6 b9 O8 Q( Q8 i4 { - KEY_A: ;关卡增加2 b% A- Y2 g0 X/ n1 e
- LDA KEY_ADDR2 q$ ^/ k! ~, q; v! l
- AND #BUTTON_INC ;按键A或右加关
, t2 p% x% {, E U% a& J - BEQ PPU_NUM_WRITE- e5 O( [5 Q- H$ x& \, j) h
- LDA #$FF
( r) o, E! c, t* \9 q1 N - STA TIME_LAY ;重设标题延时
9 m: }- F' w3 P& ~! ]5 I- V4 @* P - LDA STAGE_TEMP. K s, ~& \# c# ?
- CMP #STAGE_MAX ;关卡比较
/ M3 [% i' J8 Q/ M, m - BEQ PPU_NUM_WRITE
* I& R+ O$ Q# T - INC STAGE_TEMP ;加关
% o* C( P% ]7 i3 V' w - JSR MUSIC ;按键音效- ~6 Q. P* o/ a
- PPU_NUM_WRITE: ;关卡数字写入地址$ }5 [ R# C8 H4 Q4 g# J. V9 v! E4 R7 Y
- LDA #PPU_ADDR_H
7 [: ], J( E' {. l- D - STA $2006 ;设置PPU数字写入高位地址4 I* P- ?# I3 O) E' y) N. ~: B+ \ ^
- LDA #PPU_ADDR_L, G1 V6 D+ s4 {
- CLC
# X# ^" \) \4 R/ U1 _ - ADC #NUMBER_A2 l! `# p4 U( x( \
- STA $2006 ;设置PPU字符写入低位地址
& D) f# B9 I1 F3 g# U8 x - LDA STAGE_TEMP
0 ^9 Q! U# W @ - TAX! o) s& @1 a# J% K+ g W/ i9 V/ |
- LDA STAGE_D1,X ;写入数字1 [8 q2 }+ t! c! E
- STA $20073 a9 n: p5 }; ?% b9 T
- LDA #PPU_ADDR_H8 h) X$ K, g. ^2 U% g
- STA $2006 ;设置PPU数字写入高位地址: d7 J1 e3 h/ P, t
- LDA #PPU_ADDR_L( {$ O, d! S' e
- CLC
2 _- |% t3 u; G& }' Z- M! e - ADC #NUMBER_B
& u9 m, j: W. Q; [/ A - STA $2006 ;设置PPU字符写入低位地址
7 y+ S% e( k4 ? - LDA STAGE_TEMP. L- R1 C o# E( i) w. \; e
- TAX
% h3 Z! W3 I7 ]/ B: o( l/ A - LDA STAGE_D2,X ;写入数字7 B+ j! a2 E4 w, p& G
- STA $2007' z% S$ F3 x0 m7 d" |6 l. n
- STAHE_WRITE:
" H' }; u/ w1 d7 P( J - LDA STAGE_TEMP$ L4 O. y/ b+ ]* v7 z: U
- STA $2D ;初始关卡写入
: h+ k% P* {* x" O X - PPU_RTS: ;恢复数据# Z. V" L5 [' X Y/ |
- PLA
& \# o n' V9 V5 ^9 G; O4 f - TAY
& v* z( \, k2 M" d) t) V6 Y9 q6 I - PLA
2 I: J0 `1 U% m - TAX) ~( B9 S" H1 \; A4 @# K8 J C" w
- PLA- Q, \0 ~; d0 \! U; x# X6 F# f
- RTS
- |# `5 w( Y3 @0 | - ! Z/ S$ p' }9 [6 z/ f
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据( g; e2 u$ c! g+ \" V! H: I/ M, L
- .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
- Q3 Q p2 Q% V1 U - U1 H8 h' _8 }) ^% u4 |
- STAGE_D1: ;关卡数字
. F# z2 u) e& p, V: r - .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
+ L0 E3 V2 ^9 t# A3 Z5 W/ t
* j a0 P0 L& x- STAGE_D2: ;场景数字2 X1 _, Q: S8 Q e' T, s$ E
- .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
" T; q% h9 s# ]) ^0 P+ x7 r" P, j - 3 g# n8 _* S1 A9 a- K# @9 S: g
- $ a1 ]% Q( w; J2 u! J8 F" O2 Z
- MUSIC: ;按键音效
& f. h: I, s: G - LDA #$3B ;音乐号
' C+ s3 d- [/ R) [. O. J - JSR $919E ;系统音乐调用( i! Z7 m2 E# S$ j) e8 n: w
- RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;5 y8 L: {, r) Y. w
5.生命加满: 暂停后,按下键切换;1 d' ]6 Q4 {5 j4 r! \! L
6.血量锁满: 暂停后,按右键切换;# C% @ O. W) w" C8 z6 S s _
% b1 p8 f7 c f! B! `
8 R. ~7 v3 X: j9 z3 G3 O

4 N1 ], }* @3 _; j3 |- W
f* D- s- J) ]! n3 `- f
/ x3 c& m+ c( X8 t- \ o! BFlameCyclone.ys168.com
( z8 @$ v" r( }/ \( t' I0 w0 F' owww.nesbbs.com, X1 a' p( o8 |4 u
( U3 }- Y; V1 F" y |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
1
查看全部评分
-
|