|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 . i. E( g- s4 v' I1 S5 K
! L# i. }: N+ v[FC][忍者神龟2][END选关]
) x3 T5 L9 Q9 ]/ h' V* _" v/ w* Q. v5 G0 L
时间:2017.3.31' m! B: }* C; h* ^+ b! P3 a0 M5 E
作者:FlameCyclone- .ORG $B9E0
+ \9 E- D2 n1 n( Z$ Z! {& O; v - ora_data:$ g% q3 w& N) v2 S
- .BYTE $08,$04,$02,$01,$80,$40,$20,$108 s$ i" p m" M
- and_data:% x/ x1 S! E6 V/ S# b/ J. `
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF0 G# ?3 V5 g' D& S+ ~" p, G
- 8 i- g9 `' o0 O( q3 h
- button = $F8
4 U& i; C+ r* I" `, Y - flag = $6000 K9 f' `# I: T. u* T0 ^( M
- pause = $3D, {3 X# o; d0 o* C
( @" ^+ Z% s A. ]5 U7 @- .org $BA00
2 N1 m& Z8 N, x; W( c - % g3 e, L) X4 Q3 w4 f" m3 O
- PHA' Z2 R# ?, l0 W% ~* |
- TXA+ ~, S1 V) Q' S z$ ^% O: v
- PHA0 O. G, L0 \' n/ u
- TYA- o' [5 h+ f1 h5 A' |6 v3 F3 r4 F* }
- PHA
: K7 Z& W9 v) z# I2 R9 H/ c - JSR KEY_OPERATE. ?( b8 }/ S2 R9 m
- JSR INV+ |5 q$ Z& q1 w: L, @
- JSR LIFE d6 H0 z& S# ^8 `
- JSR BLOOD
; P" F+ g! A2 T9 f# B+ \: Q) G - PLA/ t; @* W: Q9 T* Z1 C" p
- TAY
5 c& J0 m& \: @! Q - PLA! I7 V. e0 ]) p; X# E6 p
- TAX5 Q2 A& N3 \: D. s
- PLA2 p" F, l6 M' O# ~+ B/ A( P
- RTS
! ^ r6 `% h" U$ n/ X - KEY_OPERATE:
7 a+ {& R/ c/ `- y - data_protect:+ p g, h6 n. b) O" ]
- PHA
0 b1 R5 f: m8 K4 @+ O+ A* I9 E - TXA
" K6 _% R; G$ O$ j2 n$ j$ b: B - PHA" l% J8 N0 ?: v9 p
- TYA
7 r) p' }7 d0 b- p7 b& ?9 i; z - PHA
5 w/ J# F" C: v5 X2 {; y' F6 v9 G4 k
/ S" f) F5 d* y# T; W# _, }* ^. Y- FLAG_CMP:
& D5 P: _ f7 P - LDA $600F2 s/ O. ?' z. [" Q* d P3 x0 x& R
- CMP #$7F ;标志数据初始化条件判断
& T7 n" Q* q& w+ e3 D9 a - BEQ pause_cmp$ j/ p3 e( U" R2 D' i0 I
- LDA #$80' G& c0 |) ?2 F* M6 d
- STA $A001 ;6000-7FFF写入启用, K0 h3 W! H+ t- X0 v
- LDA #$00
4 H6 W) d E; O1 n8 t0 a% e - STA $6000 ;数据初始化
) }7 `' y% H8 p4 z - STA $6001 ;数据初始化
+ v7 z7 u( Y! O# ]# x8 O/ U - LDA #$7F; G% e0 N7 x1 m0 ?1 c2 b
- STA $600F y7 \- b2 ]' |& l4 x
- pause_cmp:
4 {1 D0 i p- \8 W! M3 A - LDA pause
5 }4 {8 [3 T l1 H - CMP #$01$ @$ ]$ [8 e% f1 J, `% c
- BEQ button_press
$ y, v6 A) N9 S+ p/ y - PLA7 X1 N& A( o, o% j- v: s& k* Q5 A8 G
- TAY: t# U0 ?! m9 K; c! L
- PLA% X3 O% s: b. m& x) @: B
- TAX5 k5 N3 ?, y& k Z
- PLA* ^$ L7 _, `, o5 d) @; ]' B/ e
- RTS
/ \5 r1 i C( S4 @+ J
8 l) |' t" m# Y& A4 K9 l: i3 g- button_press:# C$ Y( m* O4 E+ V/ i
- ini_Y:
' b4 G8 J; X% @0 ^: G% I1 m - LDY #$00+ `2 M+ @% V& \/ R; \% ^
- button_cmp:
4 s6 ?: P9 H( G: D' y - LDA button,X
! w z% u4 r# |( D) e - CMP ora_data,Y
; W ~' n2 e+ c/ _ - BNE count_Y_cmp: j7 ]3 P- L* h. ~( V
- flag_cmp:
! D% D0 S& c9 A9 F8 Y2 ? - LDA flag,X+ q; ^; o O" |) `% N% F
- AND ora_data,Y/ i& J) I; a5 {% |, S
- BNE flag_and1 l! `- i+ f- C4 E9 S2 Z
- flag_ora:
" V( Y, r& S, X - LDA flag,X
9 S; K/ j: r( `3 e* g; m - ORA ora_data,Y
" p3 v; r$ G6 D$ a5 W# Y - STA flag,X
/ j" T5 n7 J f" ~& w$ j! ]6 r5 ? - BNE count_Y_cmp
' i# h6 t1 ]9 F" y' j% {& B* i - flag_and:2 ~9 N& n) a0 W9 q# s
- LDA flag,X, U0 _% v+ J% q3 o- B
- AND and_data,Y
) j/ V' l& K& |( q5 \, a; X0 M5 d - STA flag,X
2 X c B( P6 `" s - count_Y_cmp:/ _ b1 Z8 i" l6 S) ^& n
- INY
2 L9 R1 j5 K; L' _) x; i0 [ - CPY #$083 j4 ^2 i% v- Y; P) ~
- BCC button_cmp
- @. A' G" Y- W7 w8 G1 D -
$ S$ Y6 ^: C& R0 W7 x- v3 \ - data_extract:
/ U* w( V/ D& {/ M2 ~9 }( T ] x2 T - PLA
* R0 j0 [) @* c7 m. ?8 l& G& e - TAY. b' g8 }3 P1 D; m1 @
- PLA
. e( `/ B/ I/ T8 ]- {1 ?! H# c! K - TAX
! i |7 _6 H! A! L0 n/ @& ?4 n - PLA
, s# s$ j: Z& d' d9 M6 Y -
; k- c% y, @( _. Q3 Z/ N( d - return:
, G6 Z! t% z" M4 z H2 ~ - RTS
; S, Z- |: B' @' t& i6 h- r -
0 H% N3 n0 _1 K# ]& F7 X -
) {( a0 d# H8 A* L& J4 S, n$ x - INV: ;无敌, `, a& c8 \4 U$ v2 K
- LDA $6000,X
! b- n2 ^# c& p* g1 t - AND #$08
. a9 \9 U" Y) A% r - BEQ INV_RTS, F2 {) N) a5 x7 F, p) |3 u3 \
- LDA #$05. t6 @; O, Q* Q- |
- STA $93,X
3 r5 t: c ]3 P% Q; P - INV_RTS:, |2 q. E1 ]! Q% D8 }2 m. j! S
- RTS. z9 r+ G: n! h5 R( p( q" l
3 V4 g5 h9 P! g% v1 H, e-
$ c# B, h A, J! X& d - LIFE: ;生命$ [" E. L: f$ v7 s$ q* ~; z
- LDA $6000,X l. m8 v$ s$ \
- AND #$04
9 R( z8 {' B) P4 \* q5 c - BEQ LIFE_RTS2 i: V0 j# ]5 Z" l3 `2 n( _* c) |# Q
- LDA #$09
" B1 W9 z' j5 i* y8 | - STA $4D,X
h( b3 ~+ h, q. G7 V4 Y- s - LIFE_RTS:: d0 a- c+ e) t9 ], U& }! {
- RTS- z" ^/ |4 x. M1 s+ _
" p/ D( J- J0 h+ a" K* [/ @- . A' @, P9 G4 x- l& ^$ \! \* u6 i
- BLOOD: ;血量
+ o+ e' i0 @# T1 k0 ? - LDA $6000,X5 B) C" M( T/ ?' L- ~* F" L; M
- AND #$01
$ L. f1 V0 n; B# K" M2 c - BEQ BLOOD_RTS
0 U: |6 t$ R; L3 w6 b5 l N5 j - LDA #$38
( {" Z5 H* y! c4 X+ G - STA $0568,X7 n' G6 ?" d# S, J$ A# ]" `
- BLOOD_RTS:
% v( y7 w7 \- u/ J) |+ p - RTS0 K& u7 W, Z0 w1 [ M* Q2 p
- s3 ?, n% E+ s# b
-
2 F/ U2 h1 g% N+ k6 m - .ORG $FEFE1 j* d% b7 S% ?6 k# b2 ?$ Q' A' c
- JSR $FF60
1 [) I% Q0 W8 A1 u3 d - NOP
; \0 }/ \( B, [7 P, W, p: x- ~$ N -
2 b4 P& a( u5 U' D' \. R - .ORG $FF607 D1 {) [/ d" L6 u
- STA $F8,X& H2 p) ?" _6 U7 f) N6 K0 g! u/ N
- STY $3A,X
) w9 }' J; r* `7 _- Y. U2 `8 ] - PHA
5 I( t5 F0 D- c' K m( K! s - TXA
- Y4 [" j* L I$ i - PHA
+ }. W/ @" N# L - TYA, e% o) I. h1 g9 m2 \) k
- PHA0 v: z4 \: m( t- D
- LDA #$02
! O* i/ d- K" U! q- E1 Q9 e) Y% l - JSR $DB11 ;调用系统切页
7 M6 n' C$ ]+ i# f' T3 V - PLA1 y$ u3 h* j5 F4 h# m& D# a
- TAY
2 F9 v. Y& K4 @/ V6 G8 a* ? - PLA5 `8 g- s1 O8 u- O. i) b" _8 `
- TAX* M! K) P. N5 f0 H; X/ C$ n* n
- PLA, l8 u2 v) J' o; E6 ^
- JSR $BA000 L; G0 Q, w: t7 t# z
- RTS ! s# S! Z$ q; T/ B3 S+ T
- - t! l0 B) a; [9 I* K
- ;[FC][忍者神龟PPU][END]; ^7 k2 n5 i2 G. C* W) ]' _
- ! z; X, E5 W. w [% ]
- .ORG $BC00* S! \' Y+ D" C: {7 I& A8 ?
-
0 Z, {, ~. {( K' p - STY $4014 ;补上覆盖的精灵写入指令
/ ]* |) F6 d9 R" i [+ P$ f - PHA4 m- _( S$ X6 |2 C/ _
- TXA
8 ~+ E! G4 G% ?2 k# l+ R* \ - PHA6 o5 |" ~% {4 n
- TYA
7 l" h R# \) n$ l6 F - PHA! s: y o) y7 E8 y- C
- LDA $018
+ y5 [. {+ L. b: }6 ?* n" Y3 X - CMP #$01 ;比较是否为标题画面* W: j, ] h! k" U1 `) s7 |) u
- BNE RET% n% q! j ~& u# J
- LDA $019& a5 t& q& x+ y4 B
- CMP #$01 ;比较是否为标题画面
! K2 q e7 `6 G \ - BEQ PPU_STAGE4 z; S/ N5 J, Y" P4 ~! Z
- RET:
' B+ A. {4 _' \7 S" s' c) f7 H - PLA0 b4 T7 e% D. \" S3 j
- TAY& v3 G5 n! O& ~
- PLA; @% A. m& P( r l: x
- TAX
& g+ O* W) V: L, [: g) x - PLA
6 f4 V5 C$ f6 z' f - RTS
, R9 r, U5 k3 B9 u - PPU_STAGE: ;STAGE显示程序; h) Z4 q& M& o) V5 j" l7 U' W
- LDA PPU_ADDR_DATA
+ o# h$ _- h0 u7 J) D; F0 u - STA $2006
. c9 n8 R! E# Z8 Q5 s - LDA PPU_ADDR_DATA+13 _3 Q B8 d" k: M3 I
- STA $2006 ;坐标设置2 U, _1 {6 W- M+ k- i0 S
- LDX #$00
2 T2 r8 b* H3 X! q. g - PPU_STAGE_WROTE: ;写入STAGE字模: Q% w( w0 R% J
- LDA STAGE_DATA,X
5 k$ N9 V# m; W$ H9 g - CMP #$FF( g; M. ^. | ]3 O+ b* Z
- BEQ STAGE_CMP- |- t- S! g/ O* R
- STA $2007
/ W3 i' O5 ^6 Z+ P5 a - INX
" ?8 s5 c X1 Y - BCC PPU_STAGE_WROTE
& m: {3 N, v6 m0 V7 J2 s - STAGE_CMP:
; l3 I! M$ w) A% ?3 V - LDA $6010
! M7 Q7 y" n, l2 E2 b - CMP #$FF ;关卡数据初始化条件判断
6 o% [- y: ~! y: G( A - BNE KEY_B
4 D9 `* y9 D, l# i1 A' P - LDA #$00
0 g! m* ?$ k" p7 O& T - STA $6010 ;关卡数据初始化
7 D5 g6 M7 K9 t) H$ M - KEY_B: ;关卡减少/ d2 T+ D" p- O
- LDA $F8
9 ?9 @& D1 Z. l8 R. O8 K* i& i - AND #$42 ;按键B或左减关
; N; \6 \! ^5 S" a1 k% B2 [4 Y% _ - BEQ KEY_A
6 x: a1 Y: U. D7 [' s - LDA #$FF
0 `0 {# e) B2 s - STA $40
Z& i- C% w" n- H9 N1 G - LDA $60104 {4 ?& Q- W% \' H3 `) N; V1 v3 I q& z
- CMP #$00 ;关卡比较
; x1 v3 g, T7 p; j2 _ - BEQ KEY_A( h% c$ b4 p0 I% h3 w( a
- DEC $6010 ;减关: s3 L+ Q: [' t$ R
- LDA #$57& Y9 a0 W8 z; ?
- JSR $DB52 ;按键音效
3 L$ G. S# C& i2 e4 b - KEY_A: ;关卡增加
0 R. ~: h4 Y# F7 i. j/ F b+ P0 w - LDA $F8
) J; V+ X' l% v) U2 g - AND #$81 ;按键A或右加关; M7 m0 w$ g$ s9 I- ]6 W+ g
- BEQ PPU_NUM_WRITE) @. @& P+ t/ l/ V0 G9 Z' f% ]
- LDA #$FF/ D6 g0 C- o! s; ^) ]8 k( w
- STA $40: B# _, j9 u+ N% j# c7 o+ p) d$ A
- LDA $6010- b7 ^6 K5 M6 ?* _# C1 u
- CMP #$0B ;关卡比较- [: o; r) u3 O: m5 K
- BEQ PPU_NUM_WRITE# Q# w$ a0 ]: y& t) `
- INC $6010 ;加关
' n$ k3 u6 i* ^$ C/ i9 o; S - LDA #$57' {" x: i' }/ K/ J: a+ y( G
- JSR $DB52 ;按键音效* Y/ K- o2 m5 X* F \
- PPU_NUM_WRITE:) h3 Y& y7 J; d, d( J! o
- LDA PPU_ADDR_DATA
$ ^: ?/ Y6 f9 A! T% } - STA $2006# L8 \3 g Q) ?5 H& I$ d* Y
- LDA PPU_ADDR_DATA+11 D }5 C- \$ ]% F! B' ~
- CLC
$ C2 k `7 U8 {6 { - ADC #$060 B5 a9 \% g; k$ j( l) l: ^. {" Z; W
- STA $2006 ;坐标设置* q3 v; @# o1 U% ?+ \+ n" _0 C+ H
- LDA $6010
1 A3 s( R! B6 V$ E9 W% X% p - TAX8 C9 ~5 R9 c' P
- LDA STAGE_D1,X ;写入数字% F! A, `" V7 A; B3 Z
- STA $2007
) Z% \4 R2 c M; c- F. s, \& \2 s; B - LDA PPU_ADDR_DATA' b' E$ b. ]" _- e4 @2 q3 A
- STA $2006
& }; d; S2 h5 \6 M8 @2 C7 a3 X - LDA PPU_ADDR_DATA+1$ _6 |# b; M, A3 r
- CLC
* J, K- [' _3 ]7 H - ADC #$0B6 ?" H x0 r# G% C
- STA $2006 ;坐标设置
/ r7 Q5 z. T% E/ w! E* J4 p6 d - LDA $6010; {" K8 z: y4 y( s
- TAX; h6 X' J) E! G
- LDA STAGE_D2,X ;写入数字
6 R! p- ~- v0 }0 @( ^! o$ e - STA $2007
# n5 H; `! h5 C3 {0 |1 z3 `- m - STAHE_WRITE:% `, t: t, N5 S6 D' o0 `& S) O
- LDA $6010: u9 q1 y) A! v3 V# u" _7 u
- STA $42 ;初始关卡写入1 G: h) `7 Z0 w: D* }& T
- PPU_RTS:; X9 f$ W2 F0 U% H+ b$ |
- PLA7 j2 d+ A: K: {: J, }
- TAY) B( S+ _7 Z: _; U3 K+ J
- PLA
; M" I0 @# s7 e* \ - TAX
8 x7 P- }5 F- \+ Y0 ? - PLA5 I# q: [0 v# q( `
- RTS
7 g/ U I4 b# D( G$ W3 I+ x. L -
/ L; c8 X# W& O7 s$ ~' u - ! f# d$ Y9 g! p" ^1 S
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据( a0 W2 G0 S, M! g
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF; w/ u: j& R( {+ h# K
9 ~' K2 n5 c8 \$ q+ F2 Q- }- STAGE_D1: ;关卡数字7 i4 X; S/ ?# t3 ~6 a1 [7 c
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
" V1 T( y7 L1 }
0 D% ^; [+ m8 G! I6 F% {- d- STAGE_D2: ;场景数字
! g* s0 s8 @: p! Z" N" }2 Y - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03; h, @# t' g2 ~* |7 i
- ! H8 A' J g! u9 {( ~* v
- PPU_ADDR_DATA:) g; g9 x4 Q6 T6 w/ l/ c* V! S# X
- .BYTE $23,$4B+ |4 W" B, L2 ?2 ]* x6 x
- $ J* j/ T/ U/ }8 o. g9 s
( } C3 ]2 J+ ?4 M0 v( k3 T
2 l9 z( _5 U, K6 Y: s
/ N+ F9 B/ H- p' N$ ]- 4 E" z7 A9 o! q/ V7 l) d6 D
- .ORG $FE21 j8 l; c* C1 R. a* @
- JSR $FF401 S( T: Z, P. a) [2 ?$ }& \ }( l
-
# V2 t2 Z6 V, A8 s! v! R( e - .ORG $FF40; Y3 b* s" b- X, i9 o; Z
- LDA $BCDF9 ]# ~: s1 i) f. K# Z& |$ {' c
- CMP #$7F: C6 ?/ h) h: n) }1 ?3 U2 p$ x
- BNE ADDRFF56
q0 H9 C. F& K2 S - LDA $0018
, r9 j5 ]8 D# M6 s9 ` - CMP #$04( J% N q0 \" i1 j& L
- BNE $FF52
/ Y+ `, m5 M7 t- ], {2 K - LDA $6010
; X0 q- S6 x g& J8 {- m1 Z - STA $0042* _. H7 p. u3 P9 N1 P" \! s
- JSR $BC007 d( }6 p; e5 z5 `9 F( H
- RTS, F! u8 ?6 y7 y- `: U: c
- ADDRFF56:
& y- Q' K7 Q/ @( m! b" Y - STY $4014' _3 `6 h# N% M
- RTS
; Z) D# J! h# T; W$ N& w* s - * c. m' L! W* q8 i% c2 }. {
复制代码 内容:/ X( I, v* r, \% u6 r
1.关卡选择: 标题时,左或B减,右或A加;0 Y+ q/ a# o/ }: S
2.一击必杀: 暂停后,按B键切换;
s0 {9 r$ ^2 t) O8 F) n 3.无敌锁定: 暂停后,按上键切换; f3 Q5 S8 u& y( p' b
4.生命加满: 暂停后,按下键切换;
8 M! K& i& N0 h2 C% l& q) U$ W 5.血量锁满: 暂停后,按右键切换;( k$ S1 ?+ v0 Q. v' `; U9 `
    
6 i: y: f7 K y# S2 H1 F( o4 U+ }) c# R4 \3 i V; G8 O0 i3 d' J
FlameCyclone.ys168.com1 x: f% M/ }- l5 t% s! S" c4 S
www.nesbbs.com
9 e2 C% C& ^* } Y6 x) {
3 e# \9 Q4 e- M0 ^: _ b: B7 K |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
2
查看全部评分
-
|