|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 & [* P$ t5 C# |4 ^+ [! x5 O
& m& `# G9 x) o! |2 _[FC][忍者神龟2][END选关]
6 ]$ u+ D9 _+ N3 h) X2 k( K* W3 X9 J, B6 P0 D& m9 N0 f3 h
时间:2017.3.31; L ]8 V. A* j
作者:FlameCyclone- .ORG $B9E09 r. K! ?+ {- a; z/ f/ g+ l9 e
- ora_data:7 B* h9 O1 Q- ?8 C/ v) m
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
' w% t8 u4 i8 O/ Q' E - and_data:4 z8 e d$ T+ \# z7 @# o; L5 `6 @
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF9 W: _) ?6 d: g
- ; E) A. L; A4 E6 r* z
- button = $F8* R6 \" `$ k \" m; L
- flag = $60004 w. H* X4 u& Z8 D
- pause = $3D! y$ o7 l# R+ n* t
5 f" f( ?# g, k; P& B( u q/ Z2 O- .org $BA00' C4 v/ L; w+ U1 z7 e$ j
" ^$ a4 J4 w$ I; E- d- PHA- _8 s7 O7 {& b. n
- TXA+ C4 G9 Y9 G- {7 a
- PHA
5 m; p/ W: D0 }! D. r - TYA3 Y6 y/ p! o( {( u
- PHA3 G9 e6 |- I4 l. i1 Q/ T
- JSR KEY_OPERATE- r) g3 c2 Q. C ^# O% W- k. F4 a
- JSR INV3 i% ~& f9 T. ?$ j! W9 J& e" y
- JSR LIFE
6 ~9 g8 i& t" B3 } - JSR BLOOD
& H: h# ^8 D, s6 A* L; y - PLA l* v. S* p8 @) U2 X
- TAY: d$ ]( l* {5 }6 u7 X
- PLA( a' r) R+ @2 h! @- [, `0 c6 B
- TAX8 j1 y9 }5 [+ k8 O$ M- t' L
- PLA
- _# l8 E0 b' m" p& _ - RTS
6 h; _- b! {; {7 E1 h& _1 b - KEY_OPERATE:
1 l0 e5 m4 f' f* k8 t4 e - data_protect:, B4 }+ R2 c/ F# T: s# o3 D- n( p- n
- PHA
5 ]* ?+ A. b1 d) h1 m: N - TXA1 \5 d3 \# N: X# ?! t$ J
- PHA/ c/ _/ n. L8 @: }3 h
- TYA- \! }9 N+ P. N& P& j2 _" {
- PHA, u1 o" l- h. u* S) X
- ! _3 B1 N: D5 d9 P$ u' N
- FLAG_CMP:$ N9 ]; f( K0 P! c( c# i0 ^& i
- LDA $600F" m: o9 a6 q9 {
- CMP #$7F ;标志数据初始化条件判断
% i" w9 _$ }$ b - BEQ pause_cmp
6 @) g! b8 C' ` - LDA #$80" C+ D, x, x1 D+ e8 A7 A
- STA $A001 ;6000-7FFF写入启用
! D: o+ d. n9 L - LDA #$00
( X5 L" T% m; ^/ y2 _5 z, ? - STA $6000 ;数据初始化
; J- i7 o6 y, g' W - STA $6001 ;数据初始化
) T% W v7 w! t' B# i% \7 E - LDA #$7F& j* c x+ M! w5 {, w% ~
- STA $600F6 x4 G2 Q8 t; U5 ^( n
- pause_cmp:$ h, S+ J$ w/ m" ^; O
- LDA pause
' A) A, B- A: f7 j$ T0 W6 | - CMP #$01+ l6 W- K8 G- ]+ j% B8 X" k. u
- BEQ button_press2 H, R2 s" q7 O6 A8 V' w
- PLA: e6 x# `( _- B3 j5 p5 M
- TAY
+ b- f+ I( Y' e( d- h - PLA
- D0 a; j: y4 }* s, ~; _5 n - TAX. x& o- R* v1 w/ z1 e! q( c# z
- PLA$ M, k8 z! [! D% }
- RTS
& j. ]; I" W) O& R O
8 m# }/ Y# I0 a t- m9 z) H- button_press:
( }7 q- g4 T3 i$ M- J# P - ini_Y:0 y: \/ X* `9 h. O! z
- LDY #$00" V( t! J) O6 N C
- button_cmp:
1 m. c3 w7 ?4 a Q8 y; r - LDA button,X
. Z' z6 k( h6 M0 a, U! O; p8 G - CMP ora_data,Y
0 a( D. X9 b( i6 Y8 Y5 h' w$ q - BNE count_Y_cmp |9 I- t9 Q9 F& B% f. I/ |6 \
- flag_cmp:
+ e. y& Z5 {% e# M - LDA flag,X
3 o7 v, Y4 z& {4 C, } - AND ora_data,Y
! B. F! @. W% q8 L9 P" J - BNE flag_and
; A' d% t) Z, \! k# S6 l- ] - flag_ora:5 ~7 p }5 J: @6 a
- LDA flag,X
3 I; G4 z1 m" M/ r. x - ORA ora_data,Y' i6 k: ~# g2 Z; v) G% i
- STA flag,X
+ a4 y# b1 H# c0 h5 q: H" u+ F, ]' D' K - BNE count_Y_cmp) e3 `4 W$ ^+ v
- flag_and:
/ ]$ f# p1 }& }* s& ]; ]8 }& e; p - LDA flag,X
) }; L2 @' A% u( c - AND and_data,Y
5 {- x; C* A# D* k1 m% W! [& c - STA flag,X) O3 A5 p9 {# N' _7 X2 W
- count_Y_cmp:
: l: B$ i- g2 m& d- L! C" M - INY
6 U9 |7 h' t# q: R# c - CPY #$08$ |1 N% l: }* W0 f
- BCC button_cmp
, l8 @3 Q. N' A/ ` -
# K9 w9 E6 h, \; l - data_extract:, A, R+ k% W8 W6 m4 g
- PLA
/ ]; L `! x) S- `) a/ a/ Y - TAY }, t6 q+ _5 X1 T
- PLA
- S9 z5 V3 {4 z! n" f1 ]2 X5 a - TAX* }$ w$ Q6 x7 U) y# Z3 i2 [ E' y
- PLA
" {7 t: J" O" _6 o, ` -
* t8 r& f8 r- S0 w: ^6 ~ - return:
9 I" M+ [' W3 b1 h - RTS
- p. T1 }7 u$ Z# v' o - $ l( W- c9 P. h4 u. x+ {- n) V
-
2 X% B, _( R! P$ \2 p, \/ U - INV: ;无敌
' j; A9 {/ C8 k/ ?4 A8 |; | - LDA $6000,X
4 t7 x4 F- W" m% G# A6 \5 I - AND #$08
! l$ m9 {+ Q! \+ ]9 \. K - BEQ INV_RTS
5 V' ^8 Q6 s9 @$ { - LDA #$05
% R( P! h4 z8 T/ N - STA $93,X% e& s' q' b. ?
- INV_RTS:
8 Y0 m: g5 n2 y8 a - RTS
% N$ J8 y# K' A9 {1 E
. ]) w4 c. V; ^2 Q( a1 f-
" Y. C' N& ]8 I$ ^ - LIFE: ;生命# z0 k& l0 J1 [! ^
- LDA $6000,X; x }" F) Q" C6 O& c2 J h, a
- AND #$04
% _/ d( j- ]- _3 I. }* }+ w. c - BEQ LIFE_RTS
3 y, y' s& j, {: z; Y, J0 ?- X - LDA #$09
. Z [" q) `- N& M, t - STA $4D,X
+ [2 l/ s. x; s4 G6 j - LIFE_RTS:
* r' f( ?; |8 q# Q - RTS
. P1 E4 ?2 \; I$ k
' N* n# J5 R5 J( R4 n$ N3 p-
7 k, ]- o. F) \4 D* e$ u2 P N - BLOOD: ;血量! h& j9 F1 p8 g ~
- LDA $6000,X
- i; V# U: \% h+ A, X - AND #$011 \8 [ d A- A; ~
- BEQ BLOOD_RTS2 e T# b; M+ Y* P0 p L1 I
- LDA #$38
\- T( I5 Q* B0 X a - STA $0568,X
5 c' A) c, ]) g0 q - BLOOD_RTS:) G' |7 z" t" }7 c
- RTS
6 f5 \ q+ a$ w& i7 L -
?- |( B( l, V, A& u$ w+ } -
9 i0 p+ I3 t0 d( w/ k5 }) r - .ORG $FEFE5 z$ v+ q% v& h
- JSR $FF60
: R7 p! e+ K6 b - NOP C- m9 B- a7 x
- 2 v8 J2 v, e# l5 N2 V8 _3 ?
- .ORG $FF60
5 p; }/ s/ Y1 [& Q) Z - STA $F8,X
/ J/ b7 a6 v7 B; G9 C/ {; c1 N: n" R - STY $3A,X
9 m+ H% g9 S! G; c - PHA* o0 k8 r6 I& z# U& z3 v. X$ ~
- TXA
3 }/ L3 x+ H; U$ G+ _ - PHA+ M5 G$ i" B% S* H( |
- TYA
8 i) B, \7 E7 d- v - PHA
/ X! a$ Y, P1 o( l, ]+ p - LDA #$02; Y) p3 c& j! x
- JSR $DB11 ;调用系统切页
5 T3 N2 _" _% Q9 i; V9 u - PLA
$ P5 ^: K; M( N; V - TAY6 N; O. @7 h/ c( Q# b0 D
- PLA
, t& F, A/ Y7 o3 ~ - TAX
# g/ E& U! Z6 b - PLA, U8 M) w2 `' h8 X
- JSR $BA00
3 ~9 W- h; ~8 F# Q$ M - RTS ) {! i% s, t; b: ~
1 d! p3 W8 i) r6 O# b" b- ;[FC][忍者神龟PPU][END]
( R. r3 r7 ^2 F& ~, d+ S8 J - / D# Z6 g! x6 _1 K2 z, ~$ M9 G# b
- .ORG $BC00
+ I7 K9 X( f8 |: X6 A - & ~' z8 T& }) H8 ~1 o
- STY $4014 ;补上覆盖的精灵写入指令" d8 D8 m! r3 W! @. p6 `
- PHA$ r8 V7 e) B) x1 Q% F1 w
- TXA5 r+ f- ?. l) t$ f) q* j9 X
- PHA5 V- [7 u2 V, T$ ]" q
- TYA
1 i% Y7 L' _% O) R" Q5 @ - PHA- B. y' G% _$ ?5 Q) D
- LDA $018
; e% S" P- M! X8 Y$ P A. n - CMP #$01 ;比较是否为标题画面
* u2 }! L# l/ P% S0 q3 Z! o: ~ - BNE RET
7 m6 C2 b5 s; e& P. p0 `6 W - LDA $0199 W% X2 y! H B& N* u Z" `+ C
- CMP #$01 ;比较是否为标题画面
8 l" B& G4 G5 Z) d - BEQ PPU_STAGE
+ M# L/ g& j& d$ ? f - RET:9 J+ {5 I' i6 L% a% K) e9 y
- PLA
5 A: X8 X5 m/ f' q3 T - TAY% A& d. L% i, X
- PLA; N" R& E3 \/ _5 m& x$ l. U8 Z
- TAX% \- a2 w3 A7 h( t! v
- PLA
/ g" I8 t9 F9 X) R: }) M7 M$ X2 Z - RTS/ G1 j* T9 h( V/ m
- PPU_STAGE: ;STAGE显示程序
: U5 K9 f$ Q# v# G0 I/ {5 y - LDA PPU_ADDR_DATA+ }6 a: ]% y# o! J/ f
- STA $2006
5 S5 i* e' V8 _5 d( s/ D - LDA PPU_ADDR_DATA+1
2 D& `) t( n) X; Q - STA $2006 ;坐标设置0 f) S0 M% N, k* z6 q4 T
- LDX #$00
8 \3 `% {& t" w9 H! j$ t5 a - PPU_STAGE_WROTE: ;写入STAGE字模
) D& i& l3 n! P4 m - LDA STAGE_DATA,X
1 F, \$ E+ v' h, n+ A8 d# x# C - CMP #$FF
* l3 I6 l5 W+ @& ]$ g; P3 L- [% X6 e7 { - BEQ STAGE_CMP
. A+ ~4 z" d0 }, g - STA $2007
5 q; _9 y3 J/ r7 d6 l5 ^ - INX+ S* p5 g8 G$ p" f& d# ]
- BCC PPU_STAGE_WROTE
5 C" v" Z! f2 a- _- m - STAGE_CMP:
A- z2 t4 T6 I% T- O! N3 o: b - LDA $6010
$ K, F M! Z; B6 Z - CMP #$FF ;关卡数据初始化条件判断
- m3 H; U8 M' Z: W/ E - BNE KEY_B
. N% h, V( j4 Z9 w2 q" m) N5 f - LDA #$001 X! E$ v1 R' x6 E, ~
- STA $6010 ;关卡数据初始化
0 U% x1 i/ i R) ]# ^- H - KEY_B: ;关卡减少# _' C! E5 g# ^7 f4 m" D+ y% \$ o2 {
- LDA $F8
1 B! A- n" v W$ `/ ~8 o! o - AND #$42 ;按键B或左减关
) E x( L) G- d0 L - BEQ KEY_A
g1 g; [3 Y+ L1 o - LDA #$FF u1 I( D+ B' G- s- z9 ^5 @, B3 U+ T/ l
- STA $40
3 t% r: i: k" y' E - LDA $6010- c7 |8 z0 I* ?% p% G/ Z
- CMP #$00 ;关卡比较
) {7 y7 j0 R9 T9 k- g& f5 A - BEQ KEY_A
' F) z. L+ A5 T: l1 h+ H) C9 a2 l& T6 S - DEC $6010 ;减关
* c$ I* t8 a" K - LDA #$577 m+ ]/ e9 U! J1 b" u2 {; P
- JSR $DB52 ;按键音效
5 o. `9 {6 G; Y# Y6 W - KEY_A: ;关卡增加
' ~* q. ~- a- t8 G5 z% h - LDA $F88 b9 [6 E" j) G" D0 _
- AND #$81 ;按键A或右加关$ Q* W/ u! h+ ^/ D" ?1 u! m- Y
- BEQ PPU_NUM_WRITE# w* a" R( [4 [. @ B
- LDA #$FF
' h- h6 P1 c; H* }1 ` - STA $40' S# {3 Y- X! k
- LDA $6010
. o" b. v$ C! t* z0 }4 p+ o- y& ^ - CMP #$0B ;关卡比较$ \; c- ~# O: s
- BEQ PPU_NUM_WRITE% \1 Z; _ U9 j j3 B
- INC $6010 ;加关: ^: D! g: U0 ] [3 f
- LDA #$57
6 D' Q. s! s# P( O& s: u - JSR $DB52 ;按键音效
0 a& x4 \, l7 J7 g( Q - PPU_NUM_WRITE:
5 H" K9 \& F" I( Q& K - LDA PPU_ADDR_DATA
$ H; S. c* l! i - STA $2006, U' Z& A# z3 \0 D" ~: V
- LDA PPU_ADDR_DATA+16 K8 I9 A, b1 J* s1 D g) p5 C
- CLC$ D" [( Q" J8 w, F, R1 h, c: P' y
- ADC #$06
" r$ x* r1 L" [* J/ E9 w - STA $2006 ;坐标设置
% h+ J( C0 U2 \# i - LDA $6010+ Y1 A' r: k! ]
- TAX
5 E) \7 l, P$ h# f: t9 i- g - LDA STAGE_D1,X ;写入数字( L3 ^) }' e1 e. I- R6 _" w1 D
- STA $2007: D) k, Y; ]! W2 `6 h# t5 D
- LDA PPU_ADDR_DATA% c5 D7 {; I- S9 ?
- STA $2006
6 U! F4 J$ R7 E8 v* [( H - LDA PPU_ADDR_DATA+1# \3 h0 }) W+ r6 ?7 R9 ~$ |
- CLC
/ i: X3 ?& ~, V& F* K* ~ - ADC #$0B k: x( Z! P8 d( P
- STA $2006 ;坐标设置
/ g' b. b0 u0 x; l - LDA $6010# ?- z `% I- P: {6 R. l# t
- TAX
( f. x7 L Y/ w/ i9 C; d2 ? - LDA STAGE_D2,X ;写入数字( }2 g0 `- D+ K% r1 Q# n$ U
- STA $2007# d3 L3 D. F' ~. K* n
- STAHE_WRITE:+ r$ X4 Y N9 A5 F& b
- LDA $6010
9 Y7 ?. M+ ?# A# g* c5 `+ C" l' r. w - STA $42 ;初始关卡写入
" ^. ~! `2 B* F2 r w# ~5 F5 v - PPU_RTS:+ t- a& T; b" B. c, T
- PLA
* o3 ?+ B2 _# d4 t# M. |6 e0 { - TAY. Q1 n; O( r+ {6 O5 S; D7 d: K* w
- PLA
7 P- Y& v. n/ C) m2 I- w# x' {" a( B - TAX% [* Z! }9 ^5 }5 |+ W' g
- PLA3 I; @4 m" y. _8 g6 E
- RTS( D7 W: E4 b- h) K
- & n; W: F5 S* k% e, c4 p; ~
- 3 G( |# c+ u4 G6 s2 ` O
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
+ [- i! I- f) L l! } - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
: {' i% |$ H+ s! D
4 m- P5 L& z' S( o6 w- STAGE_D1: ;关卡数字
% [ `( n- h* u) F0 ]. Q - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
p' f0 J: d& d# _0 \9 K0 { - 9 }6 c. g7 H% q& H8 T
- STAGE_D2: ;场景数字# e' I# A& p1 X' t
- .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
9 \' G( n7 f# E' T9 L5 V - 3 }5 d" d M, L1 A& ~
- PPU_ADDR_DATA:
' R4 k7 A3 t5 I/ Q/ T9 n% Y - .BYTE $23,$4B
' X D& j; }( b/ X0 L -
" W2 c' Z) D' U; g9 @+ D8 y! \ - 1 n' y3 o( b8 h+ _, J- |+ |
" Q/ h+ ]7 t4 _. i
9 `+ {) d) f6 p' L5 v" o/ c# ^- # ~# E1 w# f+ `/ n. N3 f
- .ORG $FE21
7 Q" K! y! e; t7 U# l* H - JSR $FF40% u U# h7 B6 v# ]8 x
-
+ u9 y8 t3 [8 | - .ORG $FF403 J1 ]7 l3 K+ u+ @4 O5 M: J
- LDA $BCDF, T1 |5 R% L& `% l5 f+ c
- CMP #$7F& S/ z% w* u f/ F' J: o1 v$ P4 j
- BNE ADDRFF56
/ m3 F4 y; q: m q - LDA $0018
( C7 U% ]" H5 M# }! k - CMP #$04) \; D" d$ v. S
- BNE $FF52
2 h2 A) L% s4 m" c, N - LDA $6010: k Q! n4 q! {, K. F, a
- STA $0042. a! b {) W; p0 a0 p
- JSR $BC00
) p: l9 s* T5 h1 r! y - RTS0 ]; I! U- f( h; x
- ADDRFF56:
6 G Q; l$ A; ]! l, j8 U' s - STY $4014" z6 _3 M: i# b3 f6 ]7 E4 _4 |
- RTS
" h: l$ k: j" w" r - 9 p8 M0 D; l+ `; |% m
复制代码 内容:
X! P, l- t- _- \1 [% M 1.关卡选择: 标题时,左或B减,右或A加;
- ?; f" b. {# @* X9 w$ b8 |' ^ 2.一击必杀: 暂停后,按B键切换;
, j- V6 C3 G5 a' P$ T9 s$ P1 S 3.无敌锁定: 暂停后,按上键切换;$ f+ d6 M1 y( F- r2 l) z5 L$ ?" d
4.生命加满: 暂停后,按下键切换;
7 r% T8 {+ T. M8 @ 5.血量锁满: 暂停后,按右键切换;
* y8 V$ ?( ~ U0 Y E7 |3 M    $ U: ]8 |( a: H! L7 r
) ]9 X# d' k& ]. X% N6 tFlameCyclone.ys168.com
. c) R! f9 D8 [7 Y/ r+ }2 lwww.nesbbs.com
6 t; C0 v' u' f) R6 d. T8 |. Y1 |. S) d
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
2
查看全部评分
-
|