|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
/ L$ K0 A5 U2 p5 d5 ? s! a( [& v5 a4 ~5 g
[FC][忍者神龟2][END选关]# S3 P6 M/ A4 [$ e5 r, B
8 G4 Q8 J1 V& I/ L( I1 _时间:2017.3.31( \$ O' ^0 @* K
作者:FlameCyclone- .ORG $B9E0
6 j* Q0 e/ i8 W$ T$ ]4 T; _ - ora_data:
6 @) d2 w. o2 c/ X- U - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
0 h$ q5 {* F7 A# j - and_data:+ m9 u2 _6 m2 r! U
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
) B' Q5 E5 g+ u' n s2 Z - 6 |% e# I0 ~8 D
- button = $F8
5 ^4 Z& c7 y' u) r( r. Q. h - flag = $6000
3 Y' c) J ^, ?* y: P - pause = $3D
6 s4 F' d y9 S& r5 {; }7 Z+ S' S- [
; V$ t- B j4 t" Q* m& D- .org $BA005 J0 n8 b2 A: v; G
- ( V: d; q. I) m: k6 d0 J" o# G
- PHA
; ?7 H% H c! w9 K+ `: N' \ - TXA4 A" J7 L% G" B7 d' j
- PHA; l4 P- Q6 [7 C0 v% h
- TYA
7 S6 l( P' w( O3 Y, h5 |9 P - PHA7 B/ @& U+ O1 N9 A4 c0 H2 j3 v
- JSR KEY_OPERATE6 T2 R& _2 X( E, j! e9 A9 F& F9 m5 f
- JSR INV
0 V( D1 @2 g1 m' ] - JSR LIFE
: v- T! T+ D b0 Y1 p - JSR BLOOD
0 X* s- r7 h' u( |- ] - PLA
: {, C4 G y O: r - TAY4 l6 o3 B! w, z; N/ \+ w& M& S
- PLA
4 G: ~. H' M4 a/ n+ w- B: x2 A - TAX5 Z. J. q$ `$ R U5 n2 [( D
- PLA
4 {6 H0 n1 C& z/ V - RTS6 K- @% m$ `0 b3 E
- KEY_OPERATE:5 \$ q, S0 F5 D8 T: y
- data_protect:0 p( V1 p4 U) o- _ i, F( j$ A1 J
- PHA
1 e% p3 J3 [1 } ^# K. I6 f - TXA
3 Y, ?' O) d- S4 x - PHA
" H8 I! V- s& l6 h - TYA
/ S/ r+ z( m( ?. ?; a! {; s - PHA
* i0 b/ Q R) r; f* }! m
3 A- x& o7 \8 g" H, E9 X- FLAG_CMP:5 A L/ V& q- {" ?9 J7 n
- LDA $600F
8 m. L3 v d3 v7 } - CMP #$7F ;标志数据初始化条件判断
4 H' C* a2 ?5 s* w$ o6 K - BEQ pause_cmp
- `! a9 {" t! Z. Q! y4 Z$ Z - LDA #$80
v2 C3 }( W4 G6 u; y; r - STA $A001 ;6000-7FFF写入启用- B+ ~* t8 J* u) D0 |
- LDA #$00: c- w# D. c# @9 r
- STA $6000 ;数据初始化* L8 @- m9 [4 ^- m% L, P- N6 L0 G
- STA $6001 ;数据初始化
2 A$ Q3 a9 B1 u6 } - LDA #$7F
7 b0 H( A7 b0 b) w - STA $600F: J$ z" n) |- E/ M
- pause_cmp:, Z6 @6 H8 ?( U
- LDA pause2 I; |' q7 a1 Q0 ]% ~. m: z
- CMP #$01; I/ \/ p! a" }! f: u0 O- |, W9 Q0 e w
- BEQ button_press, G9 {0 r7 C \9 [" d
- PLA/ F; q& t( {0 X ?
- TAY+ _$ Z+ p9 g1 _# _/ N% h1 ]7 W
- PLA& B8 X, o( h5 f" Z7 x' B
- TAX
* @: n% \! k* C+ a! ]8 O$ Q" f - PLA
4 y5 M6 {1 M e0 }& { - RTS
y; A4 n! m" u. q7 H) _( D5 v
; t, ^/ S6 P- p5 i8 I1 ^4 `+ `; `- button_press:
4 a: r4 a K0 L4 l - ini_Y: E, b; m/ g2 Y" w* X7 F
- LDY #$007 ~5 f& F* o$ ?3 o
- button_cmp:6 R; |. I1 s* |
- LDA button,X
' e! z1 P% Y( i$ r6 D- v) k' i, Q - CMP ora_data,Y; H, Z2 K( Q; n6 c9 Y* s+ F7 x
- BNE count_Y_cmp
- Q s1 s9 b, T4 g; m - flag_cmp:3 ?5 h( v$ ~ z
- LDA flag,X
1 S( M: E% g$ @( B Q; z2 i - AND ora_data,Y" K1 ^ ?1 a4 b
- BNE flag_and$ R" s# h" S7 L/ ~
- flag_ora:
; R+ Y4 s) B3 Y6 z0 E' C+ p, R1 m - LDA flag,X" E/ ]# S/ Q% b4 F
- ORA ora_data,Y0 ]: n; z( l# R* p( |" I* g, U) T
- STA flag,X, X5 A" c7 O* `( H9 A# g4 a
- BNE count_Y_cmp
" e# ~) H6 W7 s- R& O' ]. W+ B+ \1 s - flag_and:
6 S1 q( q+ ]- D - LDA flag,X
! _3 i6 N9 c. p. D' ] - AND and_data,Y: G: n9 h6 q& G% _( v
- STA flag,X
- k' \0 N+ I0 V - count_Y_cmp:7 Y1 ^& ^2 e7 f( g: Z" ~- U
- INY
4 |" p# I) A0 u5 B - CPY #$08, K, \ c& _1 e7 ], G8 ]9 Z
- BCC button_cmp* k( O$ d4 r+ n+ H( h' M
- : T2 L# ~" Y+ b: N
- data_extract:
4 U6 S8 Q& y* N# U! W - PLA
+ b" r) Q6 i4 T1 e+ T6 U - TAY7 F9 J2 c9 Y2 f
- PLA$ d$ [- ?& k5 v% s
- TAX$ Q9 M% E( W8 t
- PLA$ N4 w+ p2 p Q, p7 h2 q& A" S. S
-
: V8 A0 ^5 ?, {2 A: \! i - return:
& {, z G! g8 |, q/ t - RTS
8 C O; r* |& Z! N$ s4 N4 H- u- b' Z -
+ C* `( s% k5 F) w+ Y7 ~5 F( x5 T -
8 ~! M5 B7 r8 k4 w- I - INV: ;无敌
" A6 q F& p- o) W- | - LDA $6000,X0 {- h+ q4 z5 _
- AND #$08
3 ]1 J2 m, H: J, Z9 Z - BEQ INV_RTS: q0 i ?+ X9 z l8 N. p+ W' F" v% `; v
- LDA #$055 W* ?& a* d# ?) }& h
- STA $93,X5 p0 z9 I# Y& w( ~
- INV_RTS:# X4 V+ s# w0 P+ t
- RTS0 x3 n) B! \+ U% q
/ |2 A( q! q& S& K) m-
7 ]5 n0 L8 d$ a$ a! a1 [% W* e7 w' | - LIFE: ;生命7 O7 d, z, X9 I* B, }5 B. ?& X
- LDA $6000,X
* U( M: c+ j- i) t0 y8 A - AND #$04# G$ S4 v: h9 y, h& |; {: T _
- BEQ LIFE_RTS
# Q5 L& u+ b% n. b$ B7 U4 n. t - LDA #$096 [9 K# E9 q2 f* g
- STA $4D,X2 L$ I2 K6 ^: C5 u0 O. l# Y
- LIFE_RTS:/ g6 h4 d- E( q2 ^8 X' h
- RTS
8 {$ a' b4 _* G( A, q+ \2 |. o, y- D
. z7 v& a' q; N& l. a- . ~5 B$ L8 @% i% M
- BLOOD: ;血量, L" x2 w3 M6 U: ~1 |
- LDA $6000,X% I0 ~# x# E( `( R
- AND #$017 `# _! e, X4 f5 I
- BEQ BLOOD_RTS( Q, \5 o7 y2 g6 d
- LDA #$38
: F. V& P9 z7 N- g! z4 Y7 d - STA $0568,X
, ]( L' k( o! M+ c2 A - BLOOD_RTS:
# s/ U2 j' [5 `& Y. q1 y* } - RTS9 ]+ Y5 X$ v9 h; e
- ) p3 z# N- @5 L3 u: n) T3 X! }
-
" [+ t# J$ d# H% }2 ~ - .ORG $FEFE
2 S9 ^& B3 Q8 t - JSR $FF60
" T" N9 u9 Y7 t1 w - NOP
( W Z( u& k5 p3 z5 L, y! R, N) E& c8 D -
1 S4 R" c' P9 b' {8 o - .ORG $FF604 M) g- ?$ B% k* u! e) Z+ M
- STA $F8,X
5 [% [8 ~( b- V: K2 F - STY $3A,X
/ L8 ?2 c& ?$ y4 E$ s7 Y$ B - PHA5 d- S* n) f0 x) l6 h( Z. e) H! |
- TXA, g* I8 x3 U" `( S, x1 y! P
- PHA- n$ C6 ^7 _; v1 ?
- TYA/ s/ z: D% S+ Q( c a: y _% V
- PHA
; T5 k) M0 E& g3 O0 Z# V4 M - LDA #$02# j; M6 ]. v6 P$ a+ [; V
- JSR $DB11 ;调用系统切页5 H! [; [* ~4 d; Y9 {
- PLA
' H& [4 q* b8 k# J) D - TAY
7 k; n! o" W! N+ U - PLA. S* b; O5 ]! u1 h" e. o8 G
- TAX( M% r+ C$ W0 J' u, i* q% `+ u
- PLA: a& _3 N# V" Z$ @
- JSR $BA00( T4 X Q4 z" M& k# @
- RTS 5 ~ b; E' @4 I( w3 O2 ]" ~( }
' U% U0 g5 f2 h+ b; g4 V4 B2 m- ;[FC][忍者神龟PPU][END]
# z: V9 U1 @! z* ?* }, N - & D% d2 g" P( o! E; | A/ j0 U
- .ORG $BC00
, O. b8 q1 p+ Z* H- A9 ~8 G -
q8 ?3 W2 v* n) e( x - STY $4014 ;补上覆盖的精灵写入指令. T$ ?- x# b/ o! Z, I( C
- PHA1 v4 D4 }% _6 S% C0 D5 m) e9 ]
- TXA
, R! b1 ?' |. z A; g$ m - PHA
1 R6 D, ]& \, Q+ q& x - TYA# o u' y. W0 U, E" i
- PHA
2 Z q% s/ }% V. Z3 x - LDA $0185 Z2 h1 c$ y0 I# c3 y$ k- O- M; a
- CMP #$01 ;比较是否为标题画面
- Y; ?0 I% v5 ~& O# L - BNE RET
8 ^3 v& A: O7 W3 N7 s7 k* N - LDA $019; F: y0 \$ l0 ~9 T" Z. f
- CMP #$01 ;比较是否为标题画面
7 W* L' x6 S4 z' V - BEQ PPU_STAGE& g9 P6 v- x- @6 q5 E% H( ~( w/ u
- RET:; d2 D. ^' F H- j9 L* @1 K2 ~
- PLA
! e: ] @1 y* \- w$ H - TAY' k, B T1 M; G8 b
- PLA
0 |- y/ G D1 X, C - TAX
; I. o7 \* Y O1 H( v' u) S7 e - PLA
1 Z7 X' f! ^5 M; f6 N% o- G# }9 W8 P - RTS6 d. C4 O( x# o
- PPU_STAGE: ;STAGE显示程序/ S$ U: f) F. n2 m. U
- LDA PPU_ADDR_DATA8 k0 V, y6 E* D/ D8 j2 k
- STA $2006. W T3 Q2 U9 Y
- LDA PPU_ADDR_DATA+1
- M% @2 z; m# j2 W7 m, a - STA $2006 ;坐标设置
v9 y' p# Q- H) ]' F% V6 J - LDX #$00) T) o6 g! n+ N5 U/ o: u- A6 i
- PPU_STAGE_WROTE: ;写入STAGE字模
! ?0 g- v) M. r) |. e& w3 p - LDA STAGE_DATA,X) n. @; v6 g# w# U4 n4 F; N
- CMP #$FF0 w. ]& @( U# c9 y2 B4 J
- BEQ STAGE_CMP
; ?( U" X! g; N. B( M - STA $20073 M2 S; \8 U4 {% k @6 m( E+ O
- INX
x* `1 p( P: d, g - BCC PPU_STAGE_WROTE; f" I+ b! L' l, ~2 F4 S
- STAGE_CMP:
+ i. m' Y- Z4 @: ^8 h6 I1 O; r - LDA $6010
! b! i, S: V$ M$ ]& W - CMP #$FF ;关卡数据初始化条件判断: M& P: j* Y" g1 R% i X$ @
- BNE KEY_B
3 D: f. }; H' p. R: F - LDA #$00
( n& T+ ]9 j: C - STA $6010 ;关卡数据初始化3 I8 P4 _& R- y0 o$ Y4 L" c% e* v
- KEY_B: ;关卡减少4 W! d4 z( p9 V3 o# y
- LDA $F8+ P% @6 P, i2 V/ D( e( X
- AND #$42 ;按键B或左减关
. N& p o H% v h - BEQ KEY_A u& O1 h8 U" | _; l+ U
- LDA #$FF
j0 F8 x% |) W. \% s - STA $408 D f9 X9 g4 o) T, P7 W* Y6 p
- LDA $60103 H: q; N: W* j4 f. ?- {6 ^( s- I
- CMP #$00 ;关卡比较1 X- J! n% q% @$ J
- BEQ KEY_A
1 v& G# q4 I% ]! I - DEC $6010 ;减关
) h5 H/ u' n4 S$ P* S: l" ] - LDA #$57+ o2 `1 g6 A7 w9 i$ y9 P
- JSR $DB52 ;按键音效 Y' K- j2 I/ _' m
- KEY_A: ;关卡增加
, }9 U8 Q( o- @8 W& @/ I8 y - LDA $F8
- ?4 s: J9 |. Y - AND #$81 ;按键A或右加关
& e# k" @6 U' c1 g - BEQ PPU_NUM_WRITE4 W, L4 p, k( w) L/ _' g
- LDA #$FF% o7 ~4 G2 ]. a& e# o6 B6 P( V
- STA $40
' R8 t! n# C% K. ? - LDA $6010
$ Y+ K# B7 h0 V! {+ F% s - CMP #$0B ;关卡比较
" e7 e! T% U8 I5 g, Q6 T4 l1 k7 J - BEQ PPU_NUM_WRITE
" O5 x) T h& T2 [1 W - INC $6010 ;加关2 F8 m7 u# [+ ^9 J
- LDA #$57
- u1 [* z `! [/ m. o% r - JSR $DB52 ;按键音效
& @* {4 h8 @+ O c! j; d - PPU_NUM_WRITE:8 o/ Z% _' i: {8 T! z, _5 ^3 y9 l2 S' X
- LDA PPU_ADDR_DATA7 h6 ?4 ^- Y/ C3 @' L6 t
- STA $2006
* q& ^, K! B+ n/ F0 T( T) K - LDA PPU_ADDR_DATA+1
+ M; I" W2 r/ ^( \' Y9 H0 c3 B - CLC
% @* i) @- _! _; F+ O0 ^% y - ADC #$06
& k0 Y: y! X J - STA $2006 ;坐标设置' r5 G! H6 D6 M
- LDA $6010( Z* \& {4 ~8 T9 E
- TAX
# o5 e0 v' r6 j - LDA STAGE_D1,X ;写入数字
; v! F e7 M) z3 v6 B) `: [ - STA $2007
2 N5 o8 a6 X5 v d - LDA PPU_ADDR_DATA
$ n, s& U: S! ?4 a# C& H - STA $2006
7 k' U }* q5 k8 J/ r - LDA PPU_ADDR_DATA+1
( L/ j( l0 g& l: v - CLC
! a2 p) B, X" U/ |' ~' ~ - ADC #$0B
; x+ A! u: c: \ - STA $2006 ;坐标设置
; Y V; ^6 T% I( j% E# ] - LDA $6010: E- u0 r0 O* ~( K ?# X0 p
- TAX# ^9 ^( b# i+ u! P! Q% a
- LDA STAGE_D2,X ;写入数字. y9 @% }* t, N$ K2 ^& U. q
- STA $2007
+ d& ]' H7 g' \( s) z m6 b - STAHE_WRITE: X/ R2 @4 x, o) e) x. |% F
- LDA $6010
* ^6 c$ e" p# p( h9 J$ d - STA $42 ;初始关卡写入1 `* z7 h3 B8 ?0 [7 V7 E6 J
- PPU_RTS:
" U& P. \, q5 n3 e; t/ t - PLA
* G6 c5 e1 @ i, U5 U" \' s - TAY
8 W5 u ~8 B5 [ U+ a - PLA
3 A+ c6 h& |* y - TAX
4 L* s/ M# @- E8 _. q - PLA
' s; K: g8 J; I; j9 S9 z - RTS
# }0 [3 B6 e; S -
2 V9 B2 y$ @' [; s - " b7 Y' e# {' l9 a: Z. v
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
7 j. _$ {2 [( Y - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
, i4 x3 q1 o7 P$ @+ }& C - ! x2 ^2 b+ L: F6 b9 W; T
- STAGE_D1: ;关卡数字
+ V% k$ ]! d" ~5 y* n! | - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08/ u" E3 b. X/ r; l
0 c5 K( j' s: u6 o- STAGE_D2: ;场景数字9 Z" E, L9 G. d4 g: K4 u0 Z# L. L
- .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$030 ]/ y- n& h8 M0 @0 z+ U! e
-
2 ?4 E. d1 B4 u; n( ~+ o - PPU_ADDR_DATA:
8 L' U2 p0 E5 l7 _1 Z - .BYTE $23,$4B
) b A! l% ? K% j1 C -
8 V# g! g0 a! n7 Y# e$ a9 c - ( ]7 v& }! I) o8 o8 h# V
\( y6 A) m- n$ W- 0 a' E% w& A# J5 l
- , B5 S$ t! {5 t) K5 t
- .ORG $FE21 8 S: v4 F7 x( p
- JSR $FF40- @6 {1 [% [7 Z
-
# Z. \& ]( t. [: m4 m8 \! V - .ORG $FF406 n& T# @1 R- n9 W5 z! t$ }8 w1 P
- LDA $BCDF
/ S) e- G. |7 u4 a - CMP #$7F
4 ?1 C, L, A. b1 n& U - BNE ADDRFF56
/ ]+ C- ~( _$ V. h& _ - LDA $0018
+ S# K# l0 F2 c$ z1 O - CMP #$04, h) x6 F+ q, l4 g W
- BNE $FF52 m C) \' o" a
- LDA $6010
' K, ?6 {0 S& p# Q - STA $00424 A1 ]9 [7 Y3 ~: A \ K* G
- JSR $BC00
: |! L; p( p# O! _0 p( c - RTS) C: E- h3 X- u% C: j
- ADDRFF56:
- |* L5 u& G t2 ^. Q& X - STY $4014' f/ G- o/ h9 r
- RTS, e" X0 V* H9 N
-
/ t- B0 x" W. ?# y3 S$ A* p# K# y i
复制代码 内容:( z7 |5 R( H! g) N, d0 e
1.关卡选择: 标题时,左或B减,右或A加;9 J7 G: X; p n/ z: \ ~6 J" t
2.一击必杀: 暂停后,按B键切换;
) u3 Z" b7 x% c! z: h: x/ R 3.无敌锁定: 暂停后,按上键切换;
N7 Y! k$ Z& ]& r) b 4.生命加满: 暂停后,按下键切换;) i; F0 P" S- w2 z) ~' n. H
5.血量锁满: 暂停后,按右键切换;
" F3 G, ^$ I' h) V- [ G Q0 U! [    
6 _4 o. Y. `% M1 ]$ M2 d; T: c: P" n: S. y! l
FlameCyclone.ys168.com! s. a! N: }# ^, e: b% J
www.nesbbs.com0 B7 t2 r. z0 O, n! d, [6 l, s
# \! p* _* ~) H* ?9 L
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|