|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
, J* I* x. N7 m0 A; u& y& m; C$ O$ j/ J5 c) l, | _7 c
[FC][忍者神龟2][END选关]
' @" f9 [6 Z' d; Z; {
3 c, }% j8 i, V7 ^+ x时间:2017.3.31
- D$ C3 L2 [0 C作者:FlameCyclone- .ORG $B9E0; d; \" k) T2 z, [! b
- ora_data:
& _1 ^& ` M7 r9 |0 y - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
. c" J4 o F7 }, N# m9 H - and_data:
, d# Y t" _" P5 E) t" Q - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
" K2 _% X ]7 e8 x - 7 @$ x) Y& ^# D/ V( a; F( m# o$ _9 z
- button = $F8
+ i- Z8 R3 m9 s" I0 t: x6 c - flag = $6000' z* @" u/ N. O, p
- pause = $3D
7 L F7 ?: ]$ ?' B( N* G% K( q
5 D+ @5 y5 v9 I. N' M7 t% j; |- .org $BA007 `( E3 Y+ U( K+ T5 _" V2 u
9 n3 g" z# S% ~$ Q" W- PHA2 Q' h8 h5 `4 ]9 y4 T$ ]. w0 K
- TXA
+ h3 D2 x" n1 y2 N - PHA
6 C k# a" q- r% u8 n4 a: t6 f - TYA
/ R t* M% y) \ - PHA% k2 M, P- B) M+ E( P# P1 @7 F
- JSR KEY_OPERATE
! e. t5 h* u9 q. o0 d4 d - JSR INV
/ ?7 z4 S8 g3 r' o/ | - JSR LIFE% z7 K9 a$ L/ g! g
- JSR BLOOD* R6 V* o' |: M; S" W( ~; o
- PLA
, m4 d+ A! h- ?. F7 h. { - TAY
, x5 N$ D8 s7 n7 S# t - PLA4 F( t0 C+ \ O2 }# z4 V* K% x
- TAX
v; ]- {0 A4 Q! ? - PLA
( G5 L% `7 E5 Z+ N - RTS: {- |0 b+ l! {* U& t; u) C2 a
- KEY_OPERATE:
" I @& z( A3 Q, L - data_protect:
1 q; F. a8 E; e8 Q! D. a( } - PHA
% n- B( c/ J# O - TXA
" s* O$ }- W$ T- y1 r- \ - PHA
! _0 W' P9 o" { - TYA$ W1 H# I0 _8 k9 C
- PHA3 o$ h2 ?( @4 T
- ; R, I( X- M# B: h
- FLAG_CMP:9 b4 d1 R0 u: K) H: D1 s4 l# j7 [
- LDA $600F
( X2 o6 w; }4 S7 H - CMP #$7F ;标志数据初始化条件判断7 S4 U' i2 B; U3 X8 Q3 _
- BEQ pause_cmp
# G3 ~& u& I; Z# u1 J4 W6 [4 k - LDA #$805 j" m. d+ | v8 I. b4 z
- STA $A001 ;6000-7FFF写入启用
* I' u5 m8 S' g* v - LDA #$00
2 Q8 {/ u3 G& ]; a8 b- q; E - STA $6000 ;数据初始化. _, h% c$ r3 u: m6 ~: R H
- STA $6001 ;数据初始化
% Q$ `5 R6 z0 U9 X - LDA #$7F
; j- i9 L; m! F. G4 V$ N D! q9 P - STA $600F. O- q4 A1 ?; ~, o( ]) S: L
- pause_cmp:+ W2 }( x* @' h, W* k% D
- LDA pause0 }' j- p% X2 Q5 V" b+ G0 K
- CMP #$01: l/ p) p; h' M- D1 s
- BEQ button_press; U; r* Y' ?8 U. P _
- PLA
2 Y+ ^& W5 w6 [" T8 t - TAY
2 G# ^- g; ]2 i; c8 y - PLA$ u: d( b$ v) Q& K# K5 @
- TAX
$ I$ T8 i& V! J1 q5 e( i$ t% w - PLA% |5 M" }4 ^5 V
- RTS2 D' z4 \) s. O2 E$ I& s
- 6 {# f" j( X! K2 t: f
- button_press:
" Y$ V& k1 M/ \) [ - ini_Y:. P: G9 q6 D! N# t. E& @1 b& L
- LDY #$00
( ]0 [$ b1 A; Y* R% y% B - button_cmp:/ b% [* b7 B( c, m; ?
- LDA button,X8 Z) q5 D* f; X1 d' _9 P4 Y
- CMP ora_data,Y
8 j6 g2 Z" p" t* ^ - BNE count_Y_cmp
, o5 S- T6 @1 c% L7 l - flag_cmp:
3 E, o, V$ d+ G7 | - LDA flag,X
V6 ]& g3 B5 l8 f3 X - AND ora_data,Y
7 B- {& k% J D; d7 A; f. T8 H - BNE flag_and
: w& ?# s0 c- G9 o$ r - flag_ora:4 L' h/ m; S a$ i) v4 w; l
- LDA flag,X
2 [2 x# L3 Y- |4 @2 t* [+ A1 [! O4 b - ORA ora_data,Y& c' D1 V+ n3 A/ y# {2 D
- STA flag,X
7 L* r: {9 K7 @" T2 N- f% j! ` - BNE count_Y_cmp
: q3 t* O* [9 w( ~1 }1 x0 ~ - flag_and:$ f9 t' I" x! e3 L& _7 T
- LDA flag,X
7 \8 H5 |4 q' E& t - AND and_data,Y" _3 _" t' ?7 @/ f
- STA flag,X0 {( {+ l. r3 A8 E, o4 k
- count_Y_cmp:
; h$ d2 ` o2 U& Z$ c- h - INY& _, n* @' g1 M" ~' ^8 Q
- CPY #$08; g& V+ _- F2 P4 ]6 \
- BCC button_cmp1 }2 ~/ o: _, M' w# c
-
* L6 k* C5 ^" u: k3 A! u2 v1 t - data_extract:/ J6 H* Q% t+ X) _& r* b
- PLA
4 F& e/ c/ [9 @2 ]+ P5 \$ g - TAY
: h3 Z7 @" k7 ` - PLA
3 {( y9 Y! R% F, D P, G - TAX$ j) ~" W+ \3 u
- PLA. {! G2 _! T) i/ q: @" M( M3 _
-
7 i& Z& p4 \" R( _5 j/ a& w/ ~4 f - return:
; P4 X# q' q( O) |; J2 a - RTS
" u" J# y; c+ D- [1 z5 F' ~ - . F# M6 P0 U5 z( r5 |. ]) A
-
) z3 M9 n! [# } - INV: ;无敌
5 b$ `4 n3 \+ F - LDA $6000,X
& j, a: \) x) b4 |! z. B - AND #$08
- q4 D+ h) R% W. P! V - BEQ INV_RTS/ ~* b# [ E* W: H- T- Y
- LDA #$05
4 f3 |4 m$ ]; Y/ | - STA $93,X+ P+ L& g, A, d8 ]
- INV_RTS:2 X" Z* P! I3 P5 D( z, d/ @
- RTS0 y8 x* h+ `: P h/ J* P
- : m: c. v4 V( [ N1 J/ e
- 7 Z" X$ ^3 I& z
- LIFE: ;生命& q. a; c5 H' R; [ h, `6 H
- LDA $6000,X9 s# `+ i) O8 B
- AND #$048 L: J4 {" o2 E t$ n" l
- BEQ LIFE_RTS
" t- \, M! B: r# ? - LDA #$09
1 a+ G% e' ~0 z4 y; G - STA $4D,X. Q" A. N1 H4 q0 ?! y$ ^/ I
- LIFE_RTS:
. d: H( l- L3 [/ I' R( H5 S - RTS7 b+ b* m% H/ E
- % R3 j( o z( c |" K' y
-
6 Y& q( G$ e0 l - BLOOD: ;血量$ j0 g$ j7 M+ _
- LDA $6000,X1 d! T' V$ a' G) |- h
- AND #$01
. Z8 D0 `, F5 S6 W - BEQ BLOOD_RTS, v2 V: K) e/ g9 }! k1 g8 E
- LDA #$38; e. g: ^& \$ @# E! P" ]2 s A
- STA $0568,X
3 ~; @; l6 h7 R7 T! C - BLOOD_RTS:+ d, V; F7 Q# `/ G
- RTS* V1 W& D; P1 c+ a) B) ?9 t
-
4 P! B' i, g! n - 9 F% e1 d# }* H" W
- .ORG $FEFE
0 S) `# F. ?( C/ z" p6 A - JSR $FF60
/ }" e& F7 v5 @+ w - NOP. X" z* z' x- E* K$ x* j. F2 P' S
-
) L; A# b" M$ Z& [' o$ F+ V" g - .ORG $FF60
3 C N8 x2 R- U0 u# D4 K. t0 r$ ] - STA $F8,X: ]" ~ {7 d% g! ] i
- STY $3A,X
% v6 i5 O+ ^, s7 d4 r0 W6 {" S6 A1 K3 z - PHA+ k! Z$ m' I+ S2 ]3 H/ ?6 Q% A
- TXA% s) q3 z9 ^% D* b
- PHA
, A5 L7 g* o u0 Y& x$ f - TYA+ B6 N+ M6 `1 N8 n2 J U
- PHA
' H/ D0 i2 Y5 C, x. v: x - LDA #$02
! S- @( N3 I9 {/ x - JSR $DB11 ;调用系统切页
0 v$ @4 }, o! O3 i - PLA6 _# W* g2 h6 w3 h. t9 A2 _1 ]
- TAY" I8 h; u: q' j/ Q; R- I: ]$ i
- PLA
4 e3 s9 {) e& ?5 U% ^8 ]# A - TAX' O. ]5 \6 b* h6 O. i
- PLA" k( x$ p) y, x& P
- JSR $BA00: A) u1 K I& I
- RTS ( Q' j7 p+ }! _
8 D L* T4 d$ H- ;[FC][忍者神龟PPU][END]3 j) u: m( F6 m8 g* _* N
6 V7 s; f9 ^) o! ]- .ORG $BC00( S% l$ L. H# |+ k t* j. Q0 f
-
" j$ F! `; O4 _, v2 L" ]) E" Z; p - STY $4014 ;补上覆盖的精灵写入指令
& T# c. p: ?; {5 k: ? - PHA
: A9 h+ f, E. v% c% S" S - TXA
' \! E/ P+ \0 k% p7 H - PHA
$ f$ w: E2 M/ x0 F6 b) Q - TYA
2 r" R4 m7 n7 V9 ^9 i6 p - PHA
% |% a4 J* c' S: m8 k, J% S* e" T; f - LDA $018
, _) _# y. v9 @4 v X0 C - CMP #$01 ;比较是否为标题画面1 e. }& c# m9 Q1 s0 V) }
- BNE RET L$ S0 o8 {, F" y2 L Y
- LDA $019
: d) Y' K s L- B& {! \ - CMP #$01 ;比较是否为标题画面
8 _/ v3 F4 z. D; @ Z5 W. p2 k - BEQ PPU_STAGE3 m7 J1 ?' @$ |" K. y1 @0 w( r& |& d/ Q
- RET:
5 }- @+ r! b3 P - PLA
0 k5 C# R7 q/ w8 A# @) g }$ H) j - TAY
, H( R7 r y* W# O - PLA
b& h) F! q& N8 ] - TAX
! ^8 ?) R% V) f* a1 F5 T - PLA
. g' k" \5 _/ \! U V - RTS
# D1 s2 O+ L/ |5 K - PPU_STAGE: ;STAGE显示程序/ j9 W2 I: c( ^, m, I
- LDA PPU_ADDR_DATA6 t8 b& a: c8 @ h( X7 p/ y a
- STA $2006
# R4 e& u. a n. Y' l - LDA PPU_ADDR_DATA+1
+ e! f" t- { Y7 @2 |# { - STA $2006 ;坐标设置( x% J: a0 b" w0 ]8 g% s$ e* _
- LDX #$00" ~6 a3 [' U* ~" Z: V! Z9 k- p( D6 h
- PPU_STAGE_WROTE: ;写入STAGE字模 D3 O1 e) q4 @" r1 ^
- LDA STAGE_DATA,X
0 Q. t1 O3 d8 x% V. I( f - CMP #$FF
4 p: ?1 i4 f4 ^+ o( F - BEQ STAGE_CMP& ^% w* E' c, a7 c H1 n8 m
- STA $20073 n2 Y, @1 q9 i8 ~0 X
- INX- x* G- J/ N+ N) F
- BCC PPU_STAGE_WROTE
0 d/ i- ]* d3 h- Q( P: [ - STAGE_CMP:9 M$ d) h$ q* }1 F6 E: k; ?
- LDA $60108 Q. T" z' y, L
- CMP #$FF ;关卡数据初始化条件判断: Q7 Q8 ]( ^7 g6 x( @' s B" h
- BNE KEY_B
; \4 M- S4 F+ j5 { - LDA #$00% W" ]2 ?0 \# l9 W% y K% a8 O
- STA $6010 ;关卡数据初始化
: B3 Y& {: I& I, v, Q' S7 D - KEY_B: ;关卡减少. W( F% H- ?- _1 A- c7 x- J
- LDA $F87 L# q# J5 I) V) k& D
- AND #$42 ;按键B或左减关$ _' y6 L5 [+ z
- BEQ KEY_A" H6 a8 z3 b, W* a; j! {
- LDA #$FF2 a+ b: \ ~8 R8 ^9 X1 y+ I
- STA $40
7 W& j; W; N) Y! b+ T - LDA $6010. p% m/ f, O: Y* x* k
- CMP #$00 ;关卡比较5 Q# ~# a: J2 P. s1 k5 p
- BEQ KEY_A- N8 L" y' ?$ R2 F: @4 G' X
- DEC $6010 ;减关* u3 z, q' S) b" k( n$ v
- LDA #$575 _2 l3 X. z5 q
- JSR $DB52 ;按键音效
$ w1 V" I: z4 Y" v3 p - KEY_A: ;关卡增加
0 C/ d$ Y( }$ }5 y* ]3 V0 V) O3 O - LDA $F8
# M* F6 S! E9 N4 W+ h0 q9 w% h" F2 v - AND #$81 ;按键A或右加关0 c$ H- Z& D' S- j
- BEQ PPU_NUM_WRITE
3 W$ z! {3 Z A8 ]" K - LDA #$FF+ a* n3 m) F! v
- STA $40
5 k( t6 e3 Y) X5 U - LDA $6010 _0 K; ^7 |* `: [# ]
- CMP #$0B ;关卡比较7 H, @8 h. K3 T1 I/ Z2 P9 c
- BEQ PPU_NUM_WRITE
% j1 c/ b0 O" O$ e4 e" i - INC $6010 ;加关! J; Q5 s& P" u3 h* t& M, K9 ~, k# a
- LDA #$578 d* r9 ~' k' e) z7 D5 C
- JSR $DB52 ;按键音效! H2 D: u; f7 Y& ] ]
- PPU_NUM_WRITE:
5 I0 U+ s, e3 H5 V7 o - LDA PPU_ADDR_DATA
$ `6 M6 c4 s" c8 @ - STA $20069 Y9 [ d) E, s7 C [
- LDA PPU_ADDR_DATA+1
2 m4 m5 b7 @, h4 {; u: b" f - CLC" y2 D* r2 l2 P, }2 W5 ?$ ~# u. m
- ADC #$06
6 ^8 d4 H" O1 [" d# I- ? - STA $2006 ;坐标设置
9 N( t X) P* y1 A1 A1 q - LDA $6010
5 p# o# @. _2 S- | - TAX
. l3 R7 q' O# y v- V. j9 Z - LDA STAGE_D1,X ;写入数字' y* Z5 [5 D, p, d2 b- ?# E! m
- STA $2007
! h1 w, ^6 }0 J% v. h - LDA PPU_ADDR_DATA: ~5 c d, T/ M6 ^) o5 }
- STA $2006
& `8 F& d, X) p$ k9 f - LDA PPU_ADDR_DATA+1: I3 }7 ?, i, V! P3 h; @/ P
- CLC
, ]% P% |9 c- _5 n3 t) A5 l9 X - ADC #$0B
, @" v3 I9 r: u* `7 p# j2 A - STA $2006 ;坐标设置+ s K6 W2 }8 U- X# I( \
- LDA $6010
4 p- I! @7 r5 v: V$ W3 m - TAX
, m& z* @! j1 ~0 z& q - LDA STAGE_D2,X ;写入数字
" h+ u7 ^" L7 _- i* b8 j - STA $2007
" ]+ M8 A/ F- P- g9 L$ I! E; X1 { - STAHE_WRITE:0 ^' t. y4 z# u! V" Q) D* [
- LDA $6010% D+ V$ K+ M$ _9 M" u, c1 K6 X
- STA $42 ;初始关卡写入
8 E9 H. g `- o9 p1 t5 @ - PPU_RTS:
" ?0 }" }% n. I% a" v' r+ r, z - PLA: r# M- A8 S$ ?3 N; j1 b0 n
- TAY6 v. w; W2 ]" K
- PLA8 D. A7 N( p6 x% T9 d" N* F
- TAX
; ]; n4 ^! N1 h8 V - PLA
* F% z" ~& t# `" g) P - RTS4 ?; s! Z( r6 T! P; k
-
9 P7 n9 J7 Z) o - 1 v7 `: u Q7 D$ {: o+ p* u
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
! {( j, _, Q ~( d0 b - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
0 |& c% Z% Y0 ?4 E
+ v/ q$ |, E, b- C% }! W8 T- STAGE_D1: ;关卡数字8 j4 F1 d1 K' b, N3 ?; c
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$084 l7 J( F. t: }
- ' {0 q3 J3 G& g+ M
- STAGE_D2: ;场景数字& ]& F" M7 d( D7 q3 G& |/ m
- .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03. u% P9 E- p$ \- A# _
- a& u% y! E. G4 l, x+ [% h5 _ o
- PPU_ADDR_DATA:
0 }* o5 l- r% l b - .BYTE $23,$4B" f$ O+ S0 Z/ z2 C- ~5 |/ @' t4 x
-
* C" D& d9 |+ s% m3 `2 G- L - 3 C& |" |( L" P- C0 u2 I4 m! w
- ' U7 l5 F# ?. I5 z. s' ]" j
- + P9 T. i% u5 `# Z. B; E( j& R
- 3 o5 U$ L& r0 ?+ L2 F/ s
- .ORG $FE21
5 D& e- U* b4 Q* A1 g6 `7 G - JSR $FF40) `& M4 P4 s" \! p2 o
-
: w( [% u- ?- t& M4 m- P, t - .ORG $FF40
9 H( C; O; P7 Q8 {5 s1 @ - LDA $BCDF
1 w' s+ w( f' H/ {! u - CMP #$7F6 u' V& C7 a$ G' d
- BNE ADDRFF56
+ H3 u5 Y0 _8 [1 | - LDA $0018, o3 E( J! r( x; y
- CMP #$04
9 M9 c1 a8 K4 _3 v# o/ | - BNE $FF52) } F4 a8 g, S1 A4 R
- LDA $6010- d* ^8 x+ K7 G' ]& l( K
- STA $0042
y: d5 }! L# ~: F. _ |5 a - JSR $BC00
' a! s) I. Z" e4 f1 D - RTS
: u5 n4 @2 F6 c' E( n9 z - ADDRFF56:
' u2 Q I0 R, D* J6 O: ` - STY $4014$ O% O+ b& d; A3 M6 m3 S+ G: u
- RTS* N! t E9 D" j4 i, D1 I$ L
- ' d% P' {, A0 c2 R
复制代码 内容:) Q* X5 S4 q: b- G
1.关卡选择: 标题时,左或B减,右或A加;
2 v5 S' Y* @7 Y$ t4 t3 n 2.一击必杀: 暂停后,按B键切换;
7 u6 M' @0 P6 ~5 k# ] 3.无敌锁定: 暂停后,按上键切换;' J! Z% {/ l' c& x. K
4.生命加满: 暂停后,按下键切换;/ {5 x. e2 Z+ R4 Q4 a
5.血量锁满: 暂停后,按右键切换;8 h, G7 ?* E" q1 T- F
    
v. j+ a- b2 O% X# M; l+ p* d$ K
FlameCyclone.ys168.com
7 |6 U1 {+ L+ `- v5 _$ Gwww.nesbbs.com% R+ L8 i+ l! j
4 R9 w$ Y$ i( i! t
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|