|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
& u4 A: F! O" z1 F- X, m' E
, D; N$ s* }8 T! S, h# r) y[FC][忍者神龟2][END选关]
' X) f( j0 ?* [4 G4 k9 V% x
8 b% ^7 U- _/ B' F U时间:2017.3.31
; t, ]0 ?7 J% G0 F/ |8 Z作者:FlameCyclone- .ORG $B9E0# A6 P0 G& t& z+ A
- ora_data:
1 C k1 \, g. I; ]" M% g. R - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
. N; V: n$ @3 C5 d2 u" p - and_data:
/ Y. m1 t- p# ]4 E" F B# ] - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
" x+ `: t a. e$ n( o) `1 u! z -
- n% l, m4 Y9 q" L - button = $F88 B: L: g" K8 A- M8 C# j, e
- flag = $6000
: {& F. u3 y: V! l- D - pause = $3D+ i9 Z' P0 x8 X* F' \8 h
( s8 H. ]; x1 L( D) V- .org $BA00 H6 b# _% V' s; ~; @; S
- / `) L7 J7 u5 n1 d3 x
- PHA
* _) j; R* t Z/ M - TXA4 ?" r" b/ {& b
- PHA
: d/ ^' `" v# b% _# J5 T$ D - TYA. C: e; n- q2 [
- PHA
" `/ c) C* R" B/ J2 \3 f - JSR KEY_OPERATE
: G3 Y7 a/ L2 A7 T4 V - JSR INV5 b* F) y5 H# c/ S+ v% l, b4 Z3 m
- JSR LIFE
9 U, E- c) s2 z+ n' G - JSR BLOOD
$ M! D8 I7 X9 [' e5 e# {: V - PLA
# a& g! h: i1 A+ v) `( r' j - TAY# x9 y6 E9 r) l
- PLA
+ K; @, w5 m) h& Q& O: G+ V( _ - TAX1 E" l; l( G" C' ]2 S
- PLA0 U! H1 T1 o2 t# H# F) O
- RTS
* t' C" \1 S3 i+ ^ - KEY_OPERATE:
2 d$ y- A- k% E - data_protect:
) r k( B1 G/ q* a. M* @1 o6 { - PHA
+ K% k E$ j0 b - TXA
0 h; W c8 p3 J: X - PHA: {+ j) t3 ?4 w. t$ [ ?
- TYA
2 w% c% K, S/ W# q9 R9 B9 Z - PHA: k( W' k, c0 a. q$ M: b: s
- H; z. A2 V" K5 A/ D- FLAG_CMP:
, T5 ?4 a# W8 G9 v - LDA $600F
0 p- W* D8 r7 s5 ~3 Z8 ^3 `, v2 L - CMP #$7F ;标志数据初始化条件判断! ~: {, F4 H# i+ c; @3 f
- BEQ pause_cmp( \8 W8 u W1 W# v& |; `5 Z
- LDA #$80
6 S; J3 e/ Z4 H r$ ~/ U+ R' e8 Q - STA $A001 ;6000-7FFF写入启用
" |4 N# T0 C, K2 \ - LDA #$00
* l# H6 N" `# \/ R, \6 b" U" w - STA $6000 ;数据初始化
6 o: h3 \8 T; f& I$ N - STA $6001 ;数据初始化
9 F+ B. M m2 z8 t4 V - LDA #$7F
t8 e5 t+ m7 [; G - STA $600F
* v1 Z- P* M+ ]- |! e3 T - pause_cmp:; P. c2 b# ^1 }5 u$ @/ f
- LDA pause
" @* ~# E) [4 C5 i - CMP #$01) k4 B) W e2 U* U f- \# x
- BEQ button_press; q$ Z% M' G5 F, @
- PLA
" R8 N, }" i w/ H9 R - TAY$ ^6 B+ M; j. }6 ?
- PLA, c$ W) b: V7 u( r! J3 ] |
- TAX
4 V q7 `- J) {2 }! x3 L. z - PLA& L1 v" U, k K( i
- RTS
7 s. m( M$ v+ C o4 f% u: o1 k
- l1 {5 }' u9 g7 D9 Q. B- button_press:6 J; c9 Z2 N4 ?# p
- ini_Y:
* Z0 w' Q V( X2 j - LDY #$00
4 v1 K8 J- \- H0 E) T2 S+ O! ^ - button_cmp:) f; T) A- r/ \8 L% H
- LDA button,X
_2 g) E7 s( b - CMP ora_data,Y& r) ~+ H9 A5 o7 Y+ ^* I- B
- BNE count_Y_cmp
8 c/ }' c4 ^* u1 a' r$ B2 { - flag_cmp:8 l; J- P1 z( w$ H5 S2 [6 S
- LDA flag,X
% i/ o; c! k1 Y) v, K8 F# |# i0 N - AND ora_data,Y! o: I' H+ B) I& ^* }
- BNE flag_and
I3 r$ j6 I0 A4 n5 R# t - flag_ora:
7 `6 v' v. d4 [ - LDA flag,X
7 V8 C% i$ G1 o4 m - ORA ora_data,Y
0 y% X+ J& G% m) `; c2 ^3 ~ - STA flag,X
8 z; ~; ^' B; o2 j - BNE count_Y_cmp, f4 G7 m4 a4 J' z$ M$ W
- flag_and:
) G- M2 Z+ ~: h - LDA flag,X. L% R0 a' @& t2 }; f8 s/ e
- AND and_data,Y
: \5 @) q4 N- ?. D - STA flag,X
- @) V/ i. n3 G! t - count_Y_cmp:
$ w1 _4 D( s" A- w( H - INY
2 [/ _( f) a) Q( _- u( [; ^3 q3 a3 D/ V - CPY #$08
. [0 Q, J2 t/ W6 U - BCC button_cmp
7 C, C7 r& x8 H3 K1 R -
1 X1 z$ U ]3 c! P m - data_extract:8 P& t5 l* F4 |% B
- PLA
$ F# N7 t% ^/ U( g3 l! Q - TAY
* y: ?& W, T) _, p7 A: ~ - PLA
# `& l2 Z% r9 | - TAX
( p. u$ d" k: W* k# O! z$ b% R% E - PLA
# E! e/ |" H( u+ T. ]) @ - . L$ j0 ^8 O1 M& X+ o
- return:
6 k8 F1 l( n& y: S* r - RTS
5 M+ q L) `5 J# K2 ^9 u& ^ - 5 G$ x) H4 T6 P& `, w5 B9 b; u, S$ Q
- ! u2 U/ Z; K- R$ F
- INV: ;无敌4 F: W, `6 {- K" D% m" X- y5 m: h
- LDA $6000,X
3 ], M0 G9 A9 k$ G. e+ f - AND #$08; W1 |1 l; `4 |( p
- BEQ INV_RTS1 f5 p, A. O$ v) T8 C( k% T8 J
- LDA #$05
% J6 N" M5 L' T( J* \8 ^& ] - STA $93,X7 r G+ p- g W3 p" `9 a& Q7 g! u* a( a
- INV_RTS:
$ M& A/ n% t, U* V( }6 J" ? - RTS
4 |* p: m; T- Z4 z1 L
( R( C- Q. B. h-
! [: ~% U0 ~3 Z: C) }* O) P - LIFE: ;生命
7 u7 x: |3 o: a& _' _* T: V - LDA $6000,X8 y4 O' c" L% Z6 [+ z h! ~& C
- AND #$04! s: |3 X0 C8 m0 C! a
- BEQ LIFE_RTS# l' k3 J6 J( @& x% _# R
- LDA #$09; U' v7 q/ |' u' m. |
- STA $4D,X" V+ a: p- {7 W4 J
- LIFE_RTS:6 L+ p9 ?' y" F7 d
- RTS
6 H1 y9 g1 t( T% p" k - F! }* \: x O2 F( _* Y" h s& r
- ' B! z0 G4 K9 n$ Z% Y
- BLOOD: ;血量
3 [% P/ }' _4 x- G9 C) P7 o! k. Q - LDA $6000,X1 T# `2 ` b7 t: F3 l7 L; @
- AND #$014 x2 L$ Q1 N* o( w e+ A2 A
- BEQ BLOOD_RTS- e: ?5 B: Z3 V6 p" E( E
- LDA #$38
& A m0 |9 z* v. g# @) G3 z2 j - STA $0568,X1 `- W/ ^" C0 p L3 C
- BLOOD_RTS:3 [) r; q, V$ d3 v, X! }
- RTS/ ?1 s, }. e- b
-
8 g$ R# Y4 h: Q; E7 A# o -
% S1 A* T- |8 f, Y: ], w - .ORG $FEFE& u1 r9 k# r5 m9 L g. P) n, q" g
- JSR $FF60( G) i, a, w0 a( U& u
- NOP
0 d" H! ?8 f' d6 d -
- |" J+ ~% ?* W1 f: G4 W. F, _/ G - .ORG $FF60
2 C$ @% b) y# q( f2 I - STA $F8,X
' I9 K% r& L" n, O9 y& G$ t/ X9 B - STY $3A,X( L" ]& G' J% e4 ^/ D; v7 }" v
- PHA6 I8 s0 a* v* u, n0 e
- TXA B, }/ T* r$ ~- i1 g2 h; v
- PHA
! B) e' J( k& O" P5 I4 v. E0 W - TYA
, H; o( d @! b4 X2 r. _, {2 l - PHA
R3 i; U2 D A. |& W - LDA #$021 c$ F% H4 ^2 `0 c2 a a) q# y
- JSR $DB11 ;调用系统切页
7 _( o5 ~: F/ F7 C5 u& t5 N - PLA
3 N [* c5 f: g$ j2 w% F+ k3 w6 Q - TAY
9 v( F/ b( M8 g3 f+ S# o% D - PLA
. [; S$ R/ ?( a& x8 H$ f( h - TAX
" Z7 A T) [4 L) } - PLA* a e1 T- U n2 B1 v
- JSR $BA00
?$ N$ C: @$ F4 U - RTS
6 M9 H# {) N" h
9 h/ d5 ^! P, \1 m6 Y, k0 Q- ;[FC][忍者神龟PPU][END]1 I. p9 D; | j7 M
- 0 T4 z. @% U1 D4 M$ X. N9 F; m7 a
- .ORG $BC00
( e: p- z; s/ I' ?! M -
& \% i# W- @2 P& B - STY $4014 ;补上覆盖的精灵写入指令 N$ B3 n( Q: u; K1 t3 W
- PHA& n; L/ w$ M) j, M) S' J
- TXA1 c: D) }! Q, |+ [, o
- PHA" L' V; ~5 B5 X5 z1 X/ X* `& ~
- TYA* @3 U! e, C2 M- e- U' X
- PHA
" m, d$ B+ f. _$ u! M: {$ ` - LDA $018
% k0 l8 U) k( n; C1 u - CMP #$01 ;比较是否为标题画面4 q( b, s) B) M6 K2 Q( u* K/ \9 u- ~
- BNE RET/ ~) N$ q* ~2 ]6 e
- LDA $019* ~( n4 H' w6 G9 M) }. k$ o' l( Q
- CMP #$01 ;比较是否为标题画面( i8 q/ _3 R+ K7 l, K4 }; ?
- BEQ PPU_STAGE
* k; M# m6 L% H* B c - RET:4 @- L; O( A R$ q1 Y* K% E* e
- PLA% R( I% @) i& \# F) z0 | l
- TAY( G2 t( f4 b \8 f8 B
- PLA/ b- [6 b; |7 V7 D- J' j1 o# _7 H
- TAX
- e+ t( j6 U& s0 E; T! V - PLA& w! u) M: f. C8 S0 V1 z! S; `
- RTS
5 J2 e) u1 B/ N* a4 }4 Q6 G - PPU_STAGE: ;STAGE显示程序
* u3 b& ]; `! p2 Q# g* @: w( q - LDA PPU_ADDR_DATA+ Y+ }2 H# C* {, _
- STA $2006
u; p9 I2 H) e& J, Z4 \ - LDA PPU_ADDR_DATA+1
7 ]9 W0 l# S' V0 \& z - STA $2006 ;坐标设置3 X: T+ ] D' `* c
- LDX #$00
1 z: @% C* j: T3 a A2 [ - PPU_STAGE_WROTE: ;写入STAGE字模; [ ~2 ]+ x- u6 \# C. X8 q
- LDA STAGE_DATA,X
j; v# Y$ z D - CMP #$FF
! R7 y; C- ?9 q/ u) B. @0 S - BEQ STAGE_CMP4 ?2 [0 n' I+ q& F# X: A: Q) w
- STA $2007
: g, g2 b! d: g8 O' l& E - INX
1 L* N' R m. C; t! \ - BCC PPU_STAGE_WROTE5 m: v9 ~; q; v2 z$ ]9 f# ?
- STAGE_CMP:
) d3 v, y. H4 G3 r9 f: G - LDA $6010* ]! Z ]' p( T$ z
- CMP #$FF ;关卡数据初始化条件判断
$ G5 k$ y( ]+ e9 D8 ` - BNE KEY_B/ [7 U+ {8 r: V b) l
- LDA #$00! c0 K- y3 b$ ?% f$ ^1 Q9 ?
- STA $6010 ;关卡数据初始化- b( p$ O4 [. P0 Z1 x
- KEY_B: ;关卡减少
% [0 }0 N/ C: ]' u, Q - LDA $F8
9 Z+ r* f# m b5 k" J5 M V* c - AND #$42 ;按键B或左减关
) ^+ B$ k; W& L# m7 @) d - BEQ KEY_A
y0 \5 C- }: C2 k% B% y# v - LDA #$FF! o/ K0 H5 v6 Z" _
- STA $40
" q+ L! M& U, U4 ^3 e6 K; u$ c - LDA $6010
8 g3 T4 U) c7 X5 Q - CMP #$00 ;关卡比较
2 _0 E/ C% B- @7 v' d7 I - BEQ KEY_A
% x2 b" e: [6 q- l, J8 G. p- Z h - DEC $6010 ;减关* W1 e1 w {7 g6 J
- LDA #$57
3 J; f$ _( b" l6 L5 J - JSR $DB52 ;按键音效4 r" z; A8 U O
- KEY_A: ;关卡增加; y7 v h2 s, f3 b$ |7 L j. m
- LDA $F8
' z, z, W+ {; h4 r0 M - AND #$81 ;按键A或右加关" K* ^: ~, O# d3 R1 [; K+ s4 T
- BEQ PPU_NUM_WRITE3 q/ k1 z+ G! T6 X
- LDA #$FF- o' x) B% ]+ E7 ]
- STA $40+ E/ E# g1 N7 Q9 j$ ]
- LDA $6010
8 t9 s( e8 T8 t+ c- ]$ _6 T$ t - CMP #$0B ;关卡比较/ C7 E% R( @6 K% N! ]
- BEQ PPU_NUM_WRITE
$ l# G2 o* B6 x. ] - INC $6010 ;加关
0 {+ I* ]# E e$ j - LDA #$57
0 g5 Y" B% Q: {2 N2 `, ~ - JSR $DB52 ;按键音效
( ^ {& t6 n; ^ }1 T( a# o0 I - PPU_NUM_WRITE:
3 F& @( d0 z, p/ w8 i8 C) `0 G+ q - LDA PPU_ADDR_DATA" _4 T; w4 r z6 _
- STA $2006' f( Y: Y5 |7 ?- k. P' H G" ^
- LDA PPU_ADDR_DATA+1
' y# O. Q/ z7 j. k0 K - CLC
9 n% P$ t( B. u0 }9 B4 v7 m- c - ADC #$06
/ f3 w: r/ e7 d - STA $2006 ;坐标设置
9 @+ I- d0 ~, v \$ i5 [ Z0 Z5 } - LDA $60104 m: ]# x$ C4 v
- TAX# S* i9 |; ?. v6 p
- LDA STAGE_D1,X ;写入数字
1 H- v5 u8 T+ _8 T$ s2 V( e9 d - STA $2007+ n# \1 g# V" E2 {+ O- T1 W
- LDA PPU_ADDR_DATA
/ A2 {- {. x8 v* a( ~0 M3 ]' N - STA $2006; @ D4 U" O7 D5 x6 d5 B0 w
- LDA PPU_ADDR_DATA+18 y$ U4 t8 W" j( ~
- CLC; `2 |4 q5 |# k6 E3 b2 n
- ADC #$0B
0 k7 d( e4 n+ H - STA $2006 ;坐标设置& u% m- A: `( D- p% Z+ r
- LDA $6010
- ~- H/ ?* s5 J/ ^) d - TAX
7 U! d" {9 P( x& P0 R - LDA STAGE_D2,X ;写入数字
+ V1 W* N& C6 _2 c" s( j& o - STA $2007
6 b' {: F, q! z! F/ X. M( \ - STAHE_WRITE:
5 a/ q, _& @$ `: {" O - LDA $6010
8 s' x; b# C$ W9 T" e' D4 { x S - STA $42 ;初始关卡写入
( ?; ^3 X% m }6 L# w" q4 O2 d3 V - PPU_RTS:- Y& a- D8 c" W9 a) V9 z- x$ M1 a
- PLA
0 b7 R, `* ~6 h- `) F - TAY
# V! a: Z" K6 P' `! r, l. i - PLA) P! g" b: H8 ]4 R# A
- TAX
' }4 u! x& V, `- l' K, S - PLA* \4 o( |7 g3 x' f# u* Z
- RTS y7 Q2 }5 P8 I
-
% o" Z) \; I" Y -
$ [7 i' p0 b' J7 u. n2 A$ m2 N - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据- K4 d) V2 {) E% b$ A4 h) q
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
2 ?; w1 h- t4 Z5 E4 M1 Y6 @ - / a+ i! J) D6 a6 O5 ?! R
- STAGE_D1: ;关卡数字
' `/ z0 Y; Z* V0 q+ n - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08; D* U. B) }! J
- 1 g/ v' g! n! v* h( Q
- STAGE_D2: ;场景数字
" C& h& R3 a# a; `$ v# x - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
/ R# z) Q+ X+ T3 } - ) Y& f9 k7 C ?2 o V
- PPU_ADDR_DATA:
& h. `) O' |) i1 { v" s - .BYTE $23,$4B- ^' S3 c& V$ f4 [
-
8 L: \/ [$ g! [9 \7 M1 p" \ `" s! T - ' j& D1 N- b7 F- c
; {$ `! k/ n& L% w
! C0 k! g* ^* e5 f2 F- + y2 C( s9 \6 {! c8 c' h, k
- .ORG $FE21
$ k3 m8 N! u0 `! H4 C& |& @+ E) ~ - JSR $FF40
# L* m) j9 X0 m% ~' M5 _6 j - * o" Y( z) N/ h) N* F# M
- .ORG $FF40, {3 t6 J2 }+ ]8 Q
- LDA $BCDF6 F: M$ }$ s/ U
- CMP #$7F
3 b$ G3 w, T7 P" d - BNE ADDRFF56( d s: P: Z1 c
- LDA $00189 ~3 p5 H b0 x1 }! {
- CMP #$043 J& c9 J! h1 M7 x- d7 y
- BNE $FF52
7 P9 m2 K+ s0 P) q( `* } - LDA $6010
& b( \/ Y1 I6 V4 k; q - STA $0042
* B4 B. {, k/ W; Z( T - JSR $BC00
0 a# Z3 O8 E- ?! k. Y7 O - RTS7 z1 B6 ]: j" J- _* H+ U7 B
- ADDRFF56: 0 ]; x& e! d- `( v
- STY $40142 ?& I# U$ [% e
- RTS/ D6 Y# }- `0 X1 A% v9 n& `
-
2 A/ I2 e- ^/ d8 c1 i! P2 `
复制代码 内容:
~2 ^: v! e( ^$ Z5 j 1.关卡选择: 标题时,左或B减,右或A加;
- z8 q( {- [& L1 P. s6 ~- U 2.一击必杀: 暂停后,按B键切换;
5 X. ?) Q4 x' r' o- M4 d 3.无敌锁定: 暂停后,按上键切换;" u1 |3 S! O. q. Q' o6 K
4.生命加满: 暂停后,按下键切换;& v' K7 G; p$ W- t& f1 R. U8 a
5.血量锁满: 暂停后,按右键切换;
( L4 D, T" {, Y1 j- G: A' G    ( M- G2 N8 [( N2 p( _8 M
8 t: U- i0 u* ?" {/ u: P2 RFlameCyclone.ys168.com
! l9 }2 \; w9 n% M4 n( N) W+ W6 G) ^www.nesbbs.com! ? ?- N- U# f5 ^- A/ V
2 }, r. K B' b. Y6 F/ y |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
2
查看全部评分
-
|