|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 4 b; P3 U ?$ [* Y7 ^
- u4 N/ N* ^. @- T* Y
[FC][忍者神龟2][END选关]
9 ^" I# `2 j2 W6 T8 g9 w
! Q' |; w1 j9 b+ k时间:2017.3.31/ Z% i; Y4 l4 K
作者:FlameCyclone- .ORG $B9E0
0 i3 b: H0 R6 e$ T9 I - ora_data:3 p2 s# L+ I6 m
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10 s, p1 {) m! I5 r2 [2 G% z
- and_data:
- e, ~) F8 C% ?3 q - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF" [! G8 j8 k" o* b* _# e
- ) b! G6 Z. M( P' G
- button = $F8
5 z3 f2 c8 O3 Y0 q. D' U: J" d! l: R - flag = $6000
. y4 h' L4 J- p - pause = $3D
8 H0 Z% P E f
" k8 I* ?0 X) P- .org $BA00
2 y) }6 y# e, o) a, ~
" ?+ z' `3 H/ ]! q0 q- PHA/ l4 o* [# h" y% X
- TXA
g8 z# y/ P3 _" A - PHA
! ?5 u) t3 g5 i! |8 a$ Q! r; ?+ _7 Z - TYA* d4 y% ?+ l" Q/ h
- PHA7 l0 I/ F J' |+ ?
- JSR KEY_OPERATE
$ c. K; p, x# _. I9 Z$ y' E( V* a - JSR INV
2 U8 } h% B, t+ E - JSR LIFE. P" o; Z* b) m6 X/ U- t4 X) W
- JSR BLOOD
. C; `% A+ X' k" y# T7 M$ S - PLA3 m. m, R* ~& h# a9 \
- TAY
- Z6 _) M" C& }. a4 S9 k - PLA5 r8 Q- g* e) w/ i3 |
- TAX
* n4 R7 n, Y6 I6 G5 I$ v - PLA( v. N. C* M1 O4 L, S+ W; {2 W- }5 m
- RTS+ g' Z% ^. X, I5 `& P5 e
- KEY_OPERATE:" r E7 |# }& G) A' |2 q" S' l
- data_protect:! P3 h/ e! k7 U4 ]8 V) ?! n& N, ]' m
- PHA$ g# S% \ \! E) c1 c
- TXA
. `/ d5 D* u% }4 |1 I$ X' X - PHA
* A% ~5 k" A0 Y3 B$ h, ^ - TYA5 L- B7 e) b V4 b- {1 K
- PHA( @# e2 [ ]% m# c& R
' s" j- K5 }5 \- A- m- FLAG_CMP:
9 }0 M& w$ F$ V# J* m - LDA $600F
4 H2 Q1 ?- p' u" S3 y; j - CMP #$7F ;标志数据初始化条件判断
* v& I$ I+ B8 Y - BEQ pause_cmp0 E2 ]% S: c6 a
- LDA #$80; ~$ f* ~6 J4 N+ q8 z, v" P# ]
- STA $A001 ;6000-7FFF写入启用
+ y5 y1 p, X$ k' k - LDA #$00" Q; }: i& u) ^1 B
- STA $6000 ;数据初始化
3 d8 X# a$ ^% X0 A# f7 f' u - STA $6001 ;数据初始化
6 D+ @7 M8 A7 ?8 c, ?0 v - LDA #$7F' W* W) P8 _4 F% T$ Z4 S2 j
- STA $600F+ L: i* o/ ~6 E; ?( W% M' q
- pause_cmp:2 m h9 V, E J' d/ }. Q* ^$ P* o
- LDA pause7 _1 A& }& T+ c0 I2 Q
- CMP #$011 O( I: }9 w d2 C0 }- o. K
- BEQ button_press! g8 s6 a4 q: U N6 j' Z" }
- PLA9 V* B9 g" [- S( E
- TAY
7 Z& `1 m& f+ f' }4 U: F - PLA
1 s# R5 f5 \" p: ^; I$ u' | - TAX
: u+ n, g) c2 J - PLA
+ W% J4 k. o* a - RTS
7 R! _ W" g# j! C- R9 R5 H
X& c$ I- w8 v% ?! S- button_press:
' W0 `% C1 M$ i; Z9 Q6 w* u) ~ - ini_Y:
r1 B$ S6 D0 g5 c# m3 F - LDY #$00
8 |" X0 ?" Q+ V; A0 f - button_cmp:& y' ~9 G; V$ j( G8 t% i& _
- LDA button,X2 x6 N$ g" s6 C8 n$ d! [/ C+ ^
- CMP ora_data,Y
( W/ }" a" Q1 X& K) z - BNE count_Y_cmp. e# [ ?8 f7 r, ]+ z+ R
- flag_cmp:$ v9 S$ j% w# B- ]% f
- LDA flag,X
T9 }/ Q. K7 G - AND ora_data,Y K% f4 L. `; ^: `3 U; q, G
- BNE flag_and) z7 a) t5 _! S
- flag_ora:
" L1 K; }* U3 s! B+ i7 e; M/ F - LDA flag,X/ O! p. S8 }. X! Q" e4 a/ A: n
- ORA ora_data,Y$ `( e6 O6 ^: K3 ^; d
- STA flag,X& b3 D8 y- P3 u
- BNE count_Y_cmp2 r9 N: L9 C; h6 \- W- B o
- flag_and:
. E D$ c! k# R- {0 s- h - LDA flag,X+ K$ ^+ J8 T' F+ h+ ~8 O
- AND and_data,Y8 B; q! i! |% ?; I8 m
- STA flag,X6 T* j0 c- d) w0 n2 t' U( w$ A- Q, q
- count_Y_cmp:- r# N$ a' c5 i4 G
- INY% U, ^ V: i Z C @1 g' N/ T
- CPY #$082 |% \$ b4 w9 Y2 x/ k1 K. B
- BCC button_cmp
~% E% x ^$ W1 l - * a/ T8 O3 M9 `( A& c( c
- data_extract:! G) B& @: Z$ S D7 S' `/ _2 S
- PLA
% i- ]+ q* G/ K! p - TAY. Y1 H& Q" A$ ]
- PLA
; w1 g: t) c& G( z* I - TAX( E7 F K0 u% c! d, s6 e0 i
- PLA
5 d% U5 v5 F8 x. D1 y -
- b7 T( d6 t) a3 _* J7 v8 u - return:
! }+ E+ J/ m) _- f& L) g: J - RTS) G4 h' I3 P: f, v* F* y
- 2 v# V6 b$ _" U$ w U
-
3 D. Q5 S: e' G# ?' V7 Z - INV: ;无敌
, K0 b' \$ c/ ^0 t - LDA $6000,X
% F2 @ s/ X2 i/ r( U& R h* X& t - AND #$08 x: \8 T% O+ R; D% p& |8 @
- BEQ INV_RTS$ Z+ c( B5 y( t$ m0 @2 O
- LDA #$05
, X/ w5 r: r. ?. E9 ~# v/ X! f - STA $93,X3 m. M; m- {$ [ C
- INV_RTS:: t! D, {1 ` J% v* t- [
- RTS
' z2 ^9 R; ]0 \0 m - # }/ s3 R" b- T) w1 H: ]6 l0 K
-
+ i2 i! T& k4 G - LIFE: ;生命
$ B* W8 w/ s& [2 m0 p0 Z% ~ _ - LDA $6000,X, j) ] u. r2 r5 E6 v: m0 t
- AND #$04; n% Y. r2 V3 A& m
- BEQ LIFE_RTS
4 m- ]* C4 d0 O- J. @; V- s. E - LDA #$09
e4 h" Z" [* N) C( L - STA $4D,X- G7 e! D( {9 j6 i9 W; q0 X
- LIFE_RTS:
7 e+ i6 G7 r1 t7 U - RTS' G: y' _9 _$ ~/ |5 R" L6 @/ |/ ~( }
4 Q& p+ f2 m0 W$ o) Q- & A! F2 U! c* w* ^6 V- F
- BLOOD: ;血量- W0 E+ W @6 F7 X8 ^& }
- LDA $6000,X
% P6 Y( V% q; G# ]. d - AND #$01
; V4 Z' |* r! O7 H4 |% h" R+ S - BEQ BLOOD_RTS( |( @8 X9 Y3 T2 B! U( Z' S
- LDA #$38
7 g6 n0 e! ^" G - STA $0568,X1 x, S" J: e4 L c" n
- BLOOD_RTS:
3 j- C% |$ i o- O* P - RTS! j# Z1 h* x, W9 U
-
" P; ?' b3 I+ F, m3 |5 S - * N% r9 ^! D8 s' X5 o. _$ V/ d
- .ORG $FEFE
( C- n9 K# r* H - JSR $FF60* x0 K) \" E) G/ v- i0 i: b# k
- NOP
$ f( F. F$ {, v& _: i3 I' E8 b - $ h! n9 N6 a/ j& ]# @2 H6 [
- .ORG $FF605 R! f& E* g# C' Z3 r1 s1 e2 P
- STA $F8,X
0 ]- Q( m+ j& j - STY $3A,X
$ d# p2 T1 X/ a) Q; [( O4 o5 f - PHA+ V Z4 ?' Y+ B! ~
- TXA- U3 `' {) x5 T8 A* {) I+ i- B
- PHA, u' y8 m& J& s/ w* X
- TYA; Z l3 H& ?$ @+ Y
- PHA
' \ v* X8 V/ }7 @' \. O - LDA #$02" `) O( o- A% }) X _* ^+ ~
- JSR $DB11 ;调用系统切页5 z& {; H8 {5 e9 n9 k, X3 O
- PLA
( e! l; u8 ?7 h5 ^* L# L - TAY
, c, R/ _$ p, x& w8 |; B - PLA! E' \5 U4 c& i2 j. J ^( ?
- TAX5 o+ M" j9 |2 R) h
- PLA2 T& n: D6 f5 S, {4 w0 {0 P5 X
- JSR $BA00
" @9 H: e' W! Y' s - RTS ' b2 [; T* F7 h, c, ?& p
- V! z( @& G# L" S2 W! p8 n
- ;[FC][忍者神龟PPU][END]
: N# w) B0 [( [! t+ \: C* q, B - * B( x( o6 s) c2 b$ J+ Y7 i
- .ORG $BC003 e7 s, E! ~ l( L1 _; U! R3 a% B
- $ \: v* Z! j% z: I6 K# x7 @
- STY $4014 ;补上覆盖的精灵写入指令% t& n7 I1 G6 f) M& h& J
- PHA
9 T6 _- i$ ~, h/ ~! i4 S2 O& X - TXA2 D1 p$ h1 ~9 i
- PHA. z! U6 H4 U y2 V% s, p# k# A
- TYA& }( s* P0 k A. B& a
- PHA0 w( F) ~4 _1 @2 x& Z: o* }
- LDA $018
# G3 n: c4 C; o8 E7 y7 y# U - CMP #$01 ;比较是否为标题画面' V9 w2 ?: q1 F& X/ H/ d
- BNE RET1 ?2 k* d, U! V8 v6 C/ b( d
- LDA $019
' v7 Q4 K* t4 D! G$ M; m - CMP #$01 ;比较是否为标题画面9 D$ h5 m$ h/ V! [7 G) ?
- BEQ PPU_STAGE1 y& v; |, Z m4 K8 G
- RET:
6 t# U. W+ y, E2 t9 v - PLA
8 F; L4 B; J. D1 V9 p7 k - TAY" U% ~' n5 X, j0 M& v8 M. q
- PLA! d! W e% b" z& R l. M$ v
- TAX
% y9 Q: E3 @" E# x/ j- Z - PLA
) f4 u2 _' P6 X5 Y( y - RTS+ u5 P! b" r) D3 t' _2 r
- PPU_STAGE: ;STAGE显示程序
8 i9 N; E) Q( ~$ A* ]9 `% o6 E - LDA PPU_ADDR_DATA
0 F. _5 @& p/ U: t& f* ^ h - STA $20066 X/ F" ]# N$ Q. W8 e+ A( q
- LDA PPU_ADDR_DATA+1. ~+ m$ M4 s4 ?3 W
- STA $2006 ;坐标设置4 w. z' ~' R/ ~
- LDX #$009 g K x1 `: j! E E
- PPU_STAGE_WROTE: ;写入STAGE字模
7 ?) U$ H C' N4 { - LDA STAGE_DATA,X' ^, W4 r+ X. h% J {
- CMP #$FF
$ f. g9 B, I, I- s O6 N" U# x( l - BEQ STAGE_CMP; f. j* ~) |+ l
- STA $2007( J* e7 ]9 b8 G+ r! K
- INX4 A0 W% N+ |7 J. Q
- BCC PPU_STAGE_WROTE
. y' g, h' n0 [: G - STAGE_CMP:
. ~& t# L, n( U( X8 k - LDA $6010
$ j2 `9 ~+ ~" l6 b8 R - CMP #$FF ;关卡数据初始化条件判断
# l1 [* M. p( l/ K) \ - BNE KEY_B4 V8 n& {+ \' B1 ]: ]4 q/ s
- LDA #$00
9 x- f4 V: r/ m7 \2 f - STA $6010 ;关卡数据初始化 D' ]3 g7 C0 m& }" q$ Y( y
- KEY_B: ;关卡减少
0 X' h7 ?( {2 \+ i+ b4 q, z" Q - LDA $F8& b6 H2 D) x- Q- k* ^; T
- AND #$42 ;按键B或左减关 }, {$ n$ @0 G6 q. X
- BEQ KEY_A
4 w0 g4 g7 v( `. A2 } - LDA #$FF8 C2 _2 G2 Y: L+ C* Z4 y- D
- STA $409 e8 V5 c" L' Y9 I
- LDA $6010
: A8 e- ~' E8 `9 ?8 F5 k; \9 M - CMP #$00 ;关卡比较! X& t8 A& l* [! D* h- Q3 N
- BEQ KEY_A. L( c' }/ _* J/ p6 h( m
- DEC $6010 ;减关5 H' A2 q9 W! |! {" v. s4 U
- LDA #$57; @! {* Q8 o6 d
- JSR $DB52 ;按键音效
0 o2 j7 Y1 Q/ u' d( _1 {& { - KEY_A: ;关卡增加8 J1 e/ t9 R+ z* r6 A4 v
- LDA $F8
+ M$ y9 L5 o# K4 V - AND #$81 ;按键A或右加关
: o$ f2 w( |% j - BEQ PPU_NUM_WRITE
' v, I& I4 V# E5 Y - LDA #$FF
# D9 N& f$ E+ Q7 ? N; g G - STA $40
) V3 C: U3 o- w, q - LDA $6010! w o/ }. U7 d+ K
- CMP #$0B ;关卡比较
% Q a( b3 G2 x9 @, E - BEQ PPU_NUM_WRITE3 c) U8 k m, h, Y
- INC $6010 ;加关
7 Z; d1 i+ R' C( F* e: @7 z Z/ D) r - LDA #$57/ }) D0 ?7 O: {
- JSR $DB52 ;按键音效0 F+ [0 @' p: L: o) s. y' D3 L
- PPU_NUM_WRITE:
! R/ q: G0 c# G( G% {, O& D - LDA PPU_ADDR_DATA
/ }% n* S5 A, ~$ V. Z: }9 z - STA $2006
- \8 B% c/ p$ N/ m* K2 v' i - LDA PPU_ADDR_DATA+1( M' R6 }$ ?. U
- CLC
+ l6 }4 r4 y3 u" b1 V$ e" G C/ k2 L - ADC #$06
. Q& @' o4 W5 H2 T$ n - STA $2006 ;坐标设置, f7 K1 T8 o7 k! E0 N
- LDA $6010% [" r2 N, @* A) f1 j# M
- TAX+ k' Y/ S3 t: @4 w9 \
- LDA STAGE_D1,X ;写入数字, e8 T: F/ z7 f2 n7 y
- STA $2007& t0 @0 T: C0 Z1 E
- LDA PPU_ADDR_DATA- H' O- ?9 X/ l$ [
- STA $20067 l$ Q4 G _! I: k& g3 @ t
- LDA PPU_ADDR_DATA+1
. e, ~5 x" S; v; n - CLC H: z- H( `2 J- i2 v
- ADC #$0B! L8 D' P1 T: m$ b' a" N; m# h. k
- STA $2006 ;坐标设置
9 S4 H2 n( s }7 k - LDA $60108 a$ ^! d6 n- g" p# _* ^9 ]8 K: G+ Y
- TAX$ ?& c, ~+ B3 r4 {, C" A
- LDA STAGE_D2,X ;写入数字7 A8 x6 p. b, P7 B( ]
- STA $2007% V3 o9 `" B8 M, C$ c; z1 ]
- STAHE_WRITE:6 f) i, Y. Y3 k
- LDA $6010
$ r& d& n8 _5 w - STA $42 ;初始关卡写入
7 h8 U8 y/ T# |) B2 k - PPU_RTS:
5 l* e; K3 @/ f1 [7 ^/ b - PLA$ `7 q2 ~: H' v8 R
- TAY w8 ^8 B1 t, A' Q
- PLA
7 H$ A& S: G: b0 ~, P - TAX
+ |9 c& t5 U9 t4 z2 y0 M - PLA
; I6 B% b$ ~8 D! S8 h3 T8 S( v) O6 E - RTS
! L) R7 g3 u- c$ J3 K - / t) a. J6 R( W( q
-
+ h% J2 {0 R' I! J- V# \2 J# g7 z( ~ - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
! ?: _4 F9 ?7 B; C2 d - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF2 {! S( e( {) M D. I& d( L
- & h: i2 T6 Y8 E) G
- STAGE_D1: ;关卡数字! n2 F5 g% \ K, A- X& l
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
) ?. c2 @, m0 x
; {" L; n u! _4 ~4 b- STAGE_D2: ;场景数字/ I4 A2 f2 y0 v5 |
- .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03! {$ S7 P+ {1 o6 Z
- 8 _7 ?8 c+ v5 \2 L# u2 E+ ^# @
- PPU_ADDR_DATA:8 C5 \2 V- R: o P8 [8 z% A' w8 I
- .BYTE $23,$4B. l# w# A, ?; g% M! r; r
-
! z9 g. n; x' r% g1 u9 Y - 2 G- C2 E+ k9 x n e" O3 v5 R9 v& L
% ?8 L' Q* s( m0 e# R
* |' F; a, B& w7 k# X* G! y
$ W: S, r% g. V' _% F! e& W, @- .ORG $FE21 , O" T' I9 X. P7 c1 J
- JSR $FF40- {5 n* D4 e8 n" W; H2 {% e
- 4 d6 K# x/ l4 W2 Q" [
- .ORG $FF40
* S' P, i4 ^( O1 A7 I; x - LDA $BCDF
5 D& P- F1 A2 M - CMP #$7F
% c7 F) X) U5 ^$ T* i1 Q - BNE ADDRFF56+ D2 T9 H5 ^* h O
- LDA $00181 j- @# |- l! [, Q
- CMP #$047 u/ i' u4 R; q5 h6 K5 F. H* x
- BNE $FF520 A$ X# X, ~0 m$ a& i
- LDA $6010
, Y6 b: _- X- \. I. z1 G$ X4 l - STA $00424 b- z0 A0 v* U$ C; t& W9 X9 s
- JSR $BC00
& a1 w1 ?% A; p9 P - RTS
, U& {) _4 S: b- u - ADDRFF56:
- A! f( \/ u8 T8 u- j% z - STY $40148 E' e7 Q* Y1 G) }8 N- ~- _3 o& F: E) R
- RTS" W- v; i, U. u: `7 e' v
-
- {) E7 J9 |+ Y3 k& z
复制代码 内容:- B! `5 v9 [6 c$ m3 R& K
1.关卡选择: 标题时,左或B减,右或A加;
) p' e9 _( l3 k1 A% b 2.一击必杀: 暂停后,按B键切换;. s& o3 b. T8 n% z2 G* Z& \
3.无敌锁定: 暂停后,按上键切换;
) J7 T, T2 U* a/ R5 t 4.生命加满: 暂停后,按下键切换;
8 f( {" P* ^& e' z/ D9 N0 Z 5.血量锁满: 暂停后,按右键切换;& K/ }$ M! e% h& ^
    
M6 d: a) D) S5 `1 }7 d8 `
: O1 F t) Y* D1 G' ~FlameCyclone.ys168.com9 Q( K/ l" K3 Q* y
www.nesbbs.com
9 s3 f; H! g. x h
0 W9 n6 g% `+ t& E/ D |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|