|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
& h X6 h( u; e* |* d4 ~5 g9 k) v
/ G# p7 J, g5 Y) q2 S' P[FC][忍者神龟2][END选关]
9 k8 P& V" C. k% r& _+ z/ A, A3 g5 l! I+ m8 @+ N$ W) h* m& q
时间:2017.3.31
* G5 Q( G% G9 s- b作者:FlameCyclone- .ORG $B9E0
, j+ {& A$ J. [5 n) ` - ora_data:
, ?7 v. z' ]5 s - .BYTE $08,$04,$02,$01,$80,$40,$20,$106 X* W0 Y2 i# t, L/ M' c+ M
- and_data:2 i/ E' K- q, W7 ~0 t; }
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF% f7 u" |8 ?$ |1 q e [9 |
-
0 [$ m2 M" H0 ~ - button = $F8
" u2 M7 s+ _3 `; G8 C- d1 | - flag = $6000
! i& {% Q1 F# Q' W1 L - pause = $3D
0 @+ \* A- r: g
# {- @, q9 [0 T% ?- z3 r, b- .org $BA00* S. a, B' g$ ]
2 e8 G# ]" \ v- PHA; _: K/ {8 ]9 M* p# b
- TXA
- A" g7 j' z, }. G8 H8 S8 } - PHA
8 c: B, Z. P; w& N M& Z1 X' j3 G. d( Y - TYA, ~& p6 W: t7 j A( Y4 V3 ~
- PHA: B8 o, V- d1 B4 K' ]7 k4 ]2 `
- JSR KEY_OPERATE" q |% k1 B8 S" p) b% |& I
- JSR INV/ {! _% v$ `2 a5 X
- JSR LIFE
; `2 c& K- U. H" r0 Z4 x# { - JSR BLOOD; N/ ~0 r- \( e# t% b: A$ n8 k- V
- PLA
# S. i/ ~& V" r F9 E5 M - TAY
% z' X4 k6 {; V9 W6 H; V - PLA) S' O( f' D# T, s$ G0 e
- TAX8 i: r7 A: n0 p' ~2 }, k' s# U) b
- PLA) Z) s/ _5 u( D1 P7 p
- RTS
+ Z1 L3 {- D% i - KEY_OPERATE:
1 p3 q/ t. w0 _( { - data_protect:" d% b0 D$ x# Z. A( l1 o8 U5 }
- PHA
4 Y% T5 g% w+ B: X - TXA* n5 O! O! x9 Y5 V
- PHA
, W" J6 `# Q/ P& b - TYA/ T* j+ _: `* A- y# e, V6 f- d g
- PHA, }& X; O7 w C9 X* o" N! A( w
2 D, ~ H0 Q4 E- D- FLAG_CMP:: A* r$ o; y$ |" o2 j
- LDA $600F
4 k4 E- B2 D- o% X9 w - CMP #$7F ;标志数据初始化条件判断
2 n- o. K' B' T$ R9 Z( j - BEQ pause_cmp
% P# \; f/ `, c. ]/ p - LDA #$80
" m: L: z0 J# B8 J ]( J: ^ - STA $A001 ;6000-7FFF写入启用; F0 |) F8 ^5 A9 ]$ F1 m6 y
- LDA #$00/ z3 O+ F" b0 ] c3 h$ @: c- f
- STA $6000 ;数据初始化
8 L6 n3 E6 F1 l3 z; X - STA $6001 ;数据初始化
( z" W# d8 }3 k - LDA #$7F
3 A/ q q" h: c9 i9 @- h5 i+ A - STA $600F* M8 J4 z% i- [9 m9 N' [$ I3 o
- pause_cmp:
6 u4 B9 A. W- G; h2 ] - LDA pause4 O/ L: b9 c! z
- CMP #$01
' @8 p/ {( X. d5 ^& V5 G/ @ - BEQ button_press" n$ E2 @3 l$ g5 N7 f( D
- PLA
# u5 Z$ X v/ j8 ?" J9 l) m1 t, u - TAY
9 n' e9 }7 K* g - PLA' M1 N* M" s/ p) P. @0 d+ M
- TAX4 C; G& L, \+ q1 ?0 l3 k7 n/ T8 o
- PLA5 e" i( j9 F' l0 ]8 s" q/ E
- RTS4 M8 C: M( \' |' u; g8 i: W
4 b! w' B( I/ c7 V) z* s- button_press:) s% _8 n9 v- E
- ini_Y:
6 ~, k }! ^( A - LDY #$005 `5 @1 m8 m3 l1 Z5 v
- button_cmp:! x' R- t* r. i X- T/ E
- LDA button,X: E. C. D4 U! l y, V2 d- ~( [7 w
- CMP ora_data,Y
' F) P& _; P( ^! ~' J1 q9 Q0 C - BNE count_Y_cmp) T. b0 x" X- U5 q/ A% ]
- flag_cmp:
9 w7 n; o" X3 M2 g* K. d, I - LDA flag,X7 A' Y4 g+ N* n( @' N8 H# k
- AND ora_data,Y1 F8 X0 x; w( R+ F+ N+ r
- BNE flag_and& l l- l& t8 s9 H, d3 x
- flag_ora:( Q% i1 B& h# u; k2 i: H2 ^" J
- LDA flag,X K2 B: _& t* }- l. X
- ORA ora_data,Y. g% Y; n- ?; z5 t
- STA flag,X) h7 ~/ Y, k! }, H& I! l: Z8 ~9 ~' |
- BNE count_Y_cmp( j9 ^0 N3 ~ o1 F9 P9 ?- u J
- flag_and:
- E& ]7 x- E- n! x/ i - LDA flag,X
; ]4 K, P$ q; _+ n8 t1 n- S - AND and_data,Y
! k( D. b ]; W - STA flag,X
* C3 V+ i' l3 G+ H% @% J! I - count_Y_cmp:
3 l: b8 N; O5 o. Z% P - INY
) H3 E; t" c: a% f- i. k$ f3 L - CPY #$08
$ k3 Q1 f% n' m% { - BCC button_cmp8 f2 O- t8 e( f8 C; N) J/ A% H) H
-
& L7 Q* y6 O( l% _ - data_extract:
' Q7 Z: u( x& x) L - PLA
% _, b4 z) L/ O - TAY
; V- O- R4 g7 [* g2 ?( {& ], @8 c - PLA
' z& M. W, d, z% N# E9 W* l - TAX
( d, Z. K1 M/ t! T9 j& U6 ] - PLA+ u, c( c" z$ L
-
7 }: e1 b( Q5 s - return:
9 G. X: N, s5 ~ ?( C2 H2 V - RTS
, a; u. q# o( b* e3 z8 X - % a( f2 |! g, Q/ v/ G8 b
- % _7 ~4 M# E' \! V) n
- INV: ;无敌
0 ~3 p1 D& o: \+ {9 h9 ~ - LDA $6000,X5 U" E! \# p+ S) F) W
- AND #$081 T) E7 I9 \# r4 u0 b
- BEQ INV_RTS
8 C% o' C- v, g! x2 j - LDA #$05% v6 }5 j2 L/ \2 O" ]* s: b
- STA $93,X' q4 |4 s/ V) ?2 `& X9 |
- INV_RTS:
7 z* K# E' d/ R; C4 t( ]& k8 w - RTS/ H) k3 z" O3 y9 `6 u
* `- z3 M0 e- a$ l( r6 m- W' t; @- 1 f& H9 [. i) \0 S& N" m
- LIFE: ;生命
5 ~0 d6 |! m1 {1 Y - LDA $6000,X
1 X' `0 F2 s, r% [. n - AND #$04# |$ H3 m6 v! w4 j
- BEQ LIFE_RTS
1 Z, j( o/ u( z1 w* s: o: E, _ - LDA #$09
; C; s, I+ B7 [" x - STA $4D,X; {- U- ~/ f+ y7 `
- LIFE_RTS:
, K7 w4 h2 b1 ]3 L( Y+ P - RTS5 C1 F u% U5 Y
- 3 Z, |+ S# r" K( @# a
- Y) h0 u( |/ {+ B
- BLOOD: ;血量
& s& {% `$ ~; q - LDA $6000,X
, {9 R) O) X2 t0 x9 G+ S - AND #$01
P6 r" o3 r; N1 L; M" F - BEQ BLOOD_RTS
3 N) X; s$ Y+ I - LDA #$38
( ^4 u. a1 M+ S1 k2 H# | - STA $0568,X$ z) R, I. t$ O2 ]
- BLOOD_RTS:! T9 T7 D" a9 @' z# Y
- RTS6 [2 J4 J4 a# e: e! c3 s# d N
-
4 S& z# J) S5 z5 j6 L -
1 w5 A' F/ s4 O; X - .ORG $FEFE* V' X- A% t. ~" H
- JSR $FF60
: S3 p, ^8 O8 B) A) t - NOP/ \0 b( d6 ^2 G3 s: l0 D8 o
-
1 x; f/ m8 K1 `" j. E1 } - .ORG $FF60
. X7 t( L& q( i1 U0 s3 B& [ - STA $F8,X
. N$ ^. D7 n% V, F* {' R - STY $3A,X
% J, r$ q9 ?6 P4 h8 g! v - PHA, m$ v" U; e0 f( c
- TXA
0 i$ o( _5 k5 {- K5 _& g# c - PHA
4 N" o$ T8 D2 |0 W0 @ - TYA4 F8 ?# Z+ z2 x5 A, r
- PHA; G4 I: ]5 f6 F$ G8 ^) q
- LDA #$02
7 }% c- d$ k) J D3 ?( a - JSR $DB11 ;调用系统切页
6 m8 l* x$ D3 v& M$ n+ O9 y - PLA2 `% }% z3 m9 l2 W) e0 ~) X+ E9 o
- TAY3 j( s8 }! `2 g* f
- PLA
3 L9 x7 t( J+ ^3 F7 \. w- T - TAX9 n. m" j5 w3 E# Q, ~. i
- PLA
& o+ o- D2 z' q" U( k9 Z4 L - JSR $BA00/ C# J$ @; z- _$ j5 W6 x# [3 W7 e
- RTS
8 @7 z) L4 o) C- [ `
( {' E# {! m" g/ d- ;[FC][忍者神龟PPU][END]
; d2 g9 p# f+ i! @) ~$ F
2 X4 {* W1 t, }9 Q# c- .ORG $BC00; ~5 z+ h8 [' `; d
- 2 o) M8 d' I0 A
- STY $4014 ;补上覆盖的精灵写入指令
( ^/ n/ `+ O( O+ s. i9 Q# s - PHA
8 z, g' y8 G) v* t4 `4 G - TXA6 I4 {1 @) b/ b( _7 b
- PHA7 l% T& `5 i: v
- TYA
: [( c9 c8 Q+ w5 J& c - PHA
( ?' G: U$ n6 [' Q [2 u$ q, p3 { - LDA $018& [* l: n$ f; c* z9 A% x. c- ?& \1 {* E5 G
- CMP #$01 ;比较是否为标题画面- A0 Y9 n! J; g0 i6 K/ Z
- BNE RET5 t% x, ]- B7 J2 S+ _+ ?
- LDA $019
% K6 J5 p# A( d" V" D! X s, p - CMP #$01 ;比较是否为标题画面, j8 I: N% R7 G7 b9 E w7 w
- BEQ PPU_STAGE
# W- ?, E9 J9 @9 T - RET:3 z% |+ Q y+ L
- PLA
9 Y% u: C* h0 }- k - TAY( H3 Y# p @/ o# x! _: v
- PLA" n& n+ {% n5 H& F2 q) C. W
- TAX
8 k; ]' `; P' u% j& P - PLA
# F* o8 B6 _7 ?, u- u - RTS, D+ b7 H6 ^5 x; G4 T m
- PPU_STAGE: ;STAGE显示程序
/ `4 ~( g* e& w1 @5 _ - LDA PPU_ADDR_DATA
: D- H* P/ T5 F! X - STA $2006! v2 M: w# K! R; a5 }
- LDA PPU_ADDR_DATA+1 Y' m, e8 o+ u2 k
- STA $2006 ;坐标设置$ `8 t; a/ ^* g5 _" X
- LDX #$00
7 ]: F. n4 q, r4 L! ` - PPU_STAGE_WROTE: ;写入STAGE字模7 n3 w" w* D9 Q
- LDA STAGE_DATA,X
& N; n8 p& I! i; b - CMP #$FF4 H$ v- W$ M! r0 N
- BEQ STAGE_CMP
" t6 U7 M w. ~% R; M. R; |+ s9 A' e - STA $20072 R- v& |" S( y/ F+ U% g( Y
- INX% u- b: q! s9 n7 `3 U
- BCC PPU_STAGE_WROTE' Y; _; \0 v D: E5 f" l
- STAGE_CMP:2 Y7 J! V4 d9 i) r
- LDA $6010
7 [7 l7 O& O' I/ e; K - CMP #$FF ;关卡数据初始化条件判断
$ U/ }( R) p; y. I9 i6 z: G/ w - BNE KEY_B
) G5 d, e* L8 t% z - LDA #$00( l1 X ]0 H, }: ?) d
- STA $6010 ;关卡数据初始化
2 v( L7 K6 T3 }7 T5 x4 m; R- ]6 W - KEY_B: ;关卡减少
; |$ L/ P k3 w6 @ - LDA $F8
% c! X2 l( M2 c& r - AND #$42 ;按键B或左减关; A0 Z! @; A* d& S4 k8 p
- BEQ KEY_A- h/ z/ _4 V4 @* v! v3 m! V8 q
- LDA #$FF8 p% q3 z* b& i" b" L
- STA $40
7 L0 b' O$ S9 Y' c - LDA $6010
9 C$ s N' a$ @ - CMP #$00 ;关卡比较
8 ~+ g. e/ x5 _) p# g8 R/ Q - BEQ KEY_A
; i+ R6 A5 d/ @# E' n; }( ~# v - DEC $6010 ;减关. ?7 M8 B* ^0 t) M" a- ?. u' P
- LDA #$57
# o \) W8 F T D4 P - JSR $DB52 ;按键音效
) d1 c* {. ]" y9 ~/ j2 r9 \ - KEY_A: ;关卡增加
: w5 F: ^8 F9 c3 |3 B* h - LDA $F88 x: ?( L. d' P! T; `) P$ U9 q6 p
- AND #$81 ;按键A或右加关, q2 H# O& p7 q
- BEQ PPU_NUM_WRITE
9 D& m$ j4 \0 m2 M2 @2 o - LDA #$FF
* f& M( y4 Q9 F. [3 I5 E - STA $40
1 T, |! }; M$ u F - LDA $6010, M: A6 ^0 W9 \+ m' m
- CMP #$0B ;关卡比较
' f) }$ o, d. h: \7 | - BEQ PPU_NUM_WRITE
+ `# j% V9 { L# a! `0 w3 Y! i6 O - INC $6010 ;加关
( O2 ], C+ Q" w - LDA #$579 T! q+ z! @& d
- JSR $DB52 ;按键音效
+ ?3 ~5 d$ s1 |/ U$ \ - PPU_NUM_WRITE:
4 R, k- j4 D% _: D+ { - LDA PPU_ADDR_DATA
; m5 k& N- L% D9 f8 j4 I - STA $20066 c% a- H& P& t6 a
- LDA PPU_ADDR_DATA+1& h' q& L. W2 P6 K: v y% s
- CLC
7 K- J* v0 w" w1 W: K. z1 | - ADC #$06
) o2 y( s# J6 n6 B1 c; U1 c - STA $2006 ;坐标设置. C; K% C* m4 x' S8 `, u
- LDA $6010
, s- P+ m1 p/ g/ P4 G - TAX
* D4 A% Q. N5 D - LDA STAGE_D1,X ;写入数字6 Y( L* {' u( F
- STA $2007
3 _2 ]2 {0 [3 b' s# w* F. L) ~ - LDA PPU_ADDR_DATA
6 |/ W! T }& ?3 |4 r - STA $2006
* }! s" @8 N+ F J! R) P: G. s$ ]' ^ - LDA PPU_ADDR_DATA+1
# u6 s- E4 a7 Q$ z( n - CLC
6 v" _% h1 Q8 q/ U; ?) |. } - ADC #$0B
" O9 s# O9 K X" s% {" a - STA $2006 ;坐标设置0 f2 y% `/ j6 B% }& D
- LDA $6010
* l0 Y0 Z3 t7 j1 O1 W - TAX
7 w/ ?- @0 x# g1 G, a9 q. ~ - LDA STAGE_D2,X ;写入数字6 O2 z. t2 B* k9 O1 f& X
- STA $2007
- M/ m' e2 B3 U* p7 v - STAHE_WRITE:
: b: t/ v! k/ i) T - LDA $6010# c6 J' A6 R5 l7 F) D3 O- f
- STA $42 ;初始关卡写入. Q" ~- @# |3 b' `, Q! ^
- PPU_RTS:
, c7 I7 }) `4 r& B z) M - PLA
( p* S8 Q' V6 u& Y - TAY
$ z" \8 B# }% O9 x+ u6 d! h - PLA
7 N6 I' G% u2 k3 v" `) x. \ - TAX# @' o! {( }% Y* T) r, N
- PLA
; N( R* o$ `! c. f - RTS
. q: \. v+ @+ Q -
4 @7 V7 N8 e0 U2 @; N& D2 P - . i! x ]) Q+ U; ~3 o
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
1 y& |/ o) R/ T8 f - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF& \; P6 h" m* \% d. O; u; o" `7 f
- " s+ u; g! Y6 F- q ^
- STAGE_D1: ;关卡数字
* R+ C# [$ J( E - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
+ r' t: l' k) b% u
* S3 B" q# [6 u/ \1 ?- STAGE_D2: ;场景数字/ D& l" u; P% b w }- _6 w8 \
- .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
9 t; |4 q( q6 r8 b, ^. ~ -
; Y- S' |/ ^1 U2 C - PPU_ADDR_DATA:6 R+ Q* U( n( p" @1 W. `* T
- .BYTE $23,$4B) ^- c2 G9 @. `4 S0 o( P) G$ I
-
* z0 i! ]& I, g& F/ k
% p# m _# E0 r
5 ^6 ?6 b6 b; R5 y; H/ ^1 D
U- Y1 D% M2 u/ G8 f
% w* B5 d- d" U9 ]9 p2 A( t( w- .ORG $FE21 * |: G* A9 ]7 D- H
- JSR $FF40$ [$ d6 F% @" g
-
: w( F4 R ^& R; X- ]! ]1 ^1 b - .ORG $FF40
8 }/ y3 c6 o6 N: c) T - LDA $BCDF! N+ @* q8 S) c
- CMP #$7F
6 L* A; e' p5 P' @# T - BNE ADDRFF56
7 M1 h, A" {8 O. a$ H. G - LDA $0018& y9 _0 Q1 V! B" }' r1 Y
- CMP #$04
: g3 d' B! V: o) H+ @5 }9 q+ ` - BNE $FF52
& w" Y( j! T) t7 \# u; z2 V. R - LDA $6010
# u* P/ @7 V1 J* G" j6 X0 H1 i - STA $0042
' P( g; h6 g/ H! }0 X Q1 C& t/ J2 d' g - JSR $BC00
1 \/ Z. C* L0 j5 s - RTS" q8 }1 L/ l. [" Z5 N0 C
- ADDRFF56: " M( W+ b0 ~+ K. B
- STY $4014: W% O, H8 R8 i( t5 A
- RTS
; a3 x9 }$ {4 T7 |; {% p6 J -
1 @/ Y+ ~4 r' d d Y0 N& w- z4 r
复制代码 内容:' X C+ h4 a3 {; k! X* v- f
1.关卡选择: 标题时,左或B减,右或A加;9 R3 j( D t4 b' c
2.一击必杀: 暂停后,按B键切换;
' S+ E5 f3 }* C) p5 K 3.无敌锁定: 暂停后,按上键切换;2 }* V6 X7 \& m
4.生命加满: 暂停后,按下键切换;3 A5 R- p0 l2 ~7 q7 _, Z$ q
5.血量锁满: 暂停后,按右键切换;
8 l2 Q! ]9 P$ q9 E' V \/ k% ^4 P; z( m8 y4 I1 }
( B" e% C: v9 a- w) OFlameCyclone.ys168.com" B+ f: r+ {9 o: w4 x- N
www.nesbbs.com. U! M4 \* @. b0 P _
e+ ^! c8 `- t& [: I" ?4 o
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|