|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 & Q4 ]5 |0 s; ?
7 H p! i h4 t& V1 f% R# D- R4 l6 d[FC][忍者神龟2][END选关]3 J4 V- g) P; s' F9 x2 }
, b" Y, B6 N; x g5 X. `
时间:2017.3.31( j7 K5 N4 @/ z$ T1 M
作者:FlameCyclone- .ORG $B9E0; \/ v0 v, P) c. Y, R% e7 g
- ora_data:) W2 |* s% z( @, d
- .BYTE $08,$04,$02,$01,$80,$40,$20,$106 o8 O# L& a7 R" _) A
- and_data:" o3 I' z0 |& B) s; ~+ _3 ]" W
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF! x0 l: `) F" J% \* }) y8 L
-
' O( B8 G7 G$ V; B3 W& { - button = $F8
' ?% \. G; z) j1 c - flag = $60004 J7 w9 O" J4 b1 E/ Z, X/ B
- pause = $3D
" E. ?1 r ?5 m" `; M- x. @& _ - 5 ?: K- s! O- s
- .org $BA000 }& s4 L1 ^2 R
4 N& M% X U6 W6 v4 k9 A- PHA
' e N" } c0 ^' w - TXA
8 v* ~6 D2 }. @$ N4 U8 o0 T2 D - PHA1 f7 ^- M. H' S' K3 }7 \
- TYA0 l$ ~+ W1 v3 c' b. b* O
- PHA- K2 i4 Q1 w; B- L2 f" q
- JSR KEY_OPERATE
- W8 J5 v# H. v9 y% D3 V1 b% ^ - JSR INV: e' U# H# x( v4 P
- JSR LIFE
; N( o; u4 n. R8 W1 a ]7 S0 J2 t( o - JSR BLOOD- g8 X7 m( n- c4 ^4 ]
- PLA9 [ K; y, ?) R8 q: t" P
- TAY0 b/ g: o) H" \2 }8 j8 y
- PLA3 ~' s8 w9 M3 |/ `1 B/ D* H( j' J
- TAX( @; @5 }# O! Y |% O" _
- PLA& _3 Z, s( J) ]1 w3 h
- RTS
3 F) @0 D8 X- D9 x' I/ a! M& b - KEY_OPERATE:
0 ?' x. C+ B5 W9 c/ j( s- s' K - data_protect:
. a4 e' j9 T# a# S# S2 v8 t - PHA4 B9 C* E7 w: J7 O8 q+ e& ?
- TXA
4 U6 D; u! F" y - PHA/ B. D- i% `+ k) T4 f# b% F* u$ L
- TYA9 Y& ^) o3 I$ S, E& s
- PHA0 S' C& X6 D. o5 U
- 8 N9 O# |9 w, r3 e/ i* W( {" U- m
- FLAG_CMP:
) V- k* X- F& M/ O+ G& a - LDA $600F
0 B; B3 C: _2 T$ P/ x( |0 } - CMP #$7F ;标志数据初始化条件判断& O4 A- P% r0 f5 A
- BEQ pause_cmp+ L9 m1 `9 A/ F8 e; \8 X4 L( N8 W8 T
- LDA #$80! x8 i$ {, n2 M+ `8 R% c6 J4 v
- STA $A001 ;6000-7FFF写入启用
8 O% o4 |& ~* e; ?2 T - LDA #$00# Z$ f4 N+ N! k* t% r
- STA $6000 ;数据初始化+ K+ G4 m5 J1 Q; N% F/ V2 I9 f- I
- STA $6001 ;数据初始化3 |% K5 b7 L& Z6 D1 M7 k
- LDA #$7F+ b! O" D. a; }- F- S! {+ u1 G
- STA $600F. b, P3 T* }: |, W. z# [( o. P7 f
- pause_cmp:& M: B$ |. P/ y- Y/ Z: Y
- LDA pause
3 |. m r7 v" r m0 ]# @4 h u5 X" K - CMP #$01
3 ^" \& j* F. v/ } - BEQ button_press! Q/ k( m8 \) K
- PLA
. T E1 O+ k$ ]: D4 }% y6 l! L - TAY o- T% J: I4 ?5 N" z- X( D
- PLA
: f3 }' S( _7 ~! _! v; I - TAX
4 i) w, T W: V" b# M - PLA& m# ^3 i4 l4 p) ]# i! h
- RTS
+ k n8 f4 L C% X- F8 F0 q- i
' ]7 N6 E+ I; q- a5 f- button_press:' V# ]' m% C1 G( g4 T
- ini_Y:
7 x9 C; _: b7 w4 ~ - LDY #$00( w0 ?3 }$ p, R- Y6 }
- button_cmp:
$ t5 Y8 d( K% ~. A/ j - LDA button,X: F9 R2 @' `" b; n6 d0 b
- CMP ora_data,Y+ u* Y5 \2 c( P% \+ Y5 x
- BNE count_Y_cmp
) y2 M5 t L- P9 H. o - flag_cmp:
; l1 L6 l5 F6 F( N- L7 B9 w0 \ - LDA flag,X
$ Q( Z. Q! `; B) z - AND ora_data,Y+ m; s1 B- X2 n) N. }, V) k' I
- BNE flag_and
, P+ ^- K( B9 K* G0 ^3 K" m - flag_ora:: ^9 A7 B; I& a( k
- LDA flag,X$ H6 s6 B( l' U6 A& I$ ^
- ORA ora_data,Y# R( K& |. \4 u" [0 H
- STA flag,X3 N4 P4 U# D7 |7 L; s, F7 X
- BNE count_Y_cmp: e/ ^8 ?! S9 z; m$ u9 ]
- flag_and:
% e6 {6 T# o/ A0 _6 m( z - LDA flag,X" a8 U4 z& d( l& s0 a# K
- AND and_data,Y9 ?4 Z% K0 M: V, U
- STA flag,X
" z3 s6 o+ m% J& s1 H, L - count_Y_cmp:% z% }" c" ^7 a
- INY
4 I6 l5 b9 C3 _: F# b$ T: i - CPY #$08
5 ~( T: z% V9 Y2 ?1 ~1 @ - BCC button_cmp. s+ S3 Y+ {" T1 C$ g
-
7 ?, t/ |* B, d( p- H4 E - data_extract:( v" t9 C G( Z
- PLA$ ~9 w4 B3 @9 V* ]
- TAY
! C7 U6 m4 ^/ D: p2 s6 i; a8 q - PLA
. r' R3 U* A. y5 \9 X+ r3 O& i - TAX
+ k* f# A |5 C* S - PLA4 ~" E7 s7 i/ `. y2 j# Q
-
# O+ }7 a. Z3 T. G - return:8 }; \" |+ e6 v/ R* B
- RTS
" f' {5 ?; O; Z+ t; c; L8 B: | -
: I# g- Q" |3 _6 s0 ?0 q% D - ' w! n5 n7 l) A4 x6 r/ v
- INV: ;无敌" d; [+ M2 W8 I! z/ f- B
- LDA $6000,X
9 q3 `( g1 |" D - AND #$082 X! j- z f3 n$ g2 G# A
- BEQ INV_RTS. D' X' N+ f Q- [) A% S7 D) t( g$ e
- LDA #$05* R1 l. }/ j2 w! B" @, z
- STA $93,X8 _' r* n9 A+ C) m t' b
- INV_RTS:1 ~) F) r* @/ F; ^, t5 j. u" ?; ^
- RTS( c) L: M; M* m0 S
0 T" m: k) A6 v# j. v! a; ^- . |/ o. l: f" m$ q" |
- LIFE: ;生命
( v! D2 y% {7 `1 f2 f- y4 X - LDA $6000,X
& j9 Y# \5 i/ G# w) R: Y& d& b - AND #$040 b Q# R& t. d) X
- BEQ LIFE_RTS6 r' t6 p) m& | E; E% ]! X; q$ ~
- LDA #$096 S5 Q4 f7 _2 a _
- STA $4D,X
/ k9 W4 A' V7 Q) s - LIFE_RTS:
2 t+ f- X0 W- D& `% t, _* U - RTS; a& m J* H4 @
- . R$ ^8 e6 ]( Y- r: \8 S! ^: E
-
; r# X, L. G; \5 p- i, Z - BLOOD: ;血量1 n3 w1 p4 D& ]
- LDA $6000,X
8 f2 m' S3 M4 S' @$ l - AND #$019 Z% @; D# r# y2 c
- BEQ BLOOD_RTS
; v5 j4 `( x5 m0 n0 h% O& ]! y - LDA #$38
( r3 D. C+ @3 R9 l; S - STA $0568,X% Y8 P; E% ~" K0 Z1 D9 J$ u5 z
- BLOOD_RTS:+ r/ T5 y5 V% _: Q1 g D
- RTS
, r4 M! Y2 @- n5 ?5 @; `. i -
R) t" q, Y9 Z - P3 [7 o/ b" w+ }1 T" W
- .ORG $FEFE/ o3 B3 L1 ?" Q, V$ A6 J; R
- JSR $FF60
. F! q: N3 T \0 C( ~ - NOP
; c Q: O3 }% _* }: q - 9 K3 s+ I- o) G
- .ORG $FF600 H! W+ K5 s v' P8 Y9 {" X1 x; j
- STA $F8,X
7 p, g$ D4 Q3 {0 C" ~6 Q - STY $3A,X1 b6 I1 F F) f
- PHA s! t3 {0 S" v. ?& ^. o" ]2 p
- TXA
: R' R! G+ f4 i9 ~& [; w/ I - PHA, a! J0 n' y; r
- TYA+ l: A5 T- p$ P3 _5 j
- PHA& @( J% b/ R! W; s2 _
- LDA #$02% }6 s% k. u# `# b4 @. ]
- JSR $DB11 ;调用系统切页
9 D4 ~6 H) R E$ e - PLA
6 O& D5 i% B! C- Z - TAY6 J4 k0 h$ t0 h$ y
- PLA
/ ~4 ?9 S2 Z$ D - TAX
3 H2 A2 _2 L6 D/ K8 e2 w7 f' f - PLA+ {3 R' X9 c* J6 m' W! H- ]- n
- JSR $BA00
0 k0 `0 j* _4 Z" N5 s - RTS 8 a! Q0 l, C/ a2 _* f1 [
- % s6 \5 k. v/ M
- ;[FC][忍者神龟PPU][END]
7 r/ s: K+ A f8 {' S! J0 w0 z$ g - : D1 L; R9 {$ L# i: Q6 k
- .ORG $BC00
. D3 t* W; ^$ z6 v -
& w T, v9 y1 q1 l# j - STY $4014 ;补上覆盖的精灵写入指令
* O6 y+ C! L( `( Q - PHA4 B! Z6 s2 a% n4 S$ I1 I; U' m
- TXA
- d/ Q. j! d* J: I6 I" M9 e* ?5 I - PHA
+ t7 p5 n" q6 Z7 P6 E( F - TYA
0 F {4 u* X: f! V" I) B - PHA
9 o& n4 [5 X. m, ^7 @" L# o7 ]/ N - LDA $018
9 H( H+ A0 |7 z0 ? - CMP #$01 ;比较是否为标题画面2 J" Y$ A$ S7 f! N
- BNE RET* g" X/ A( l/ C% Y! C9 c8 U
- LDA $0190 J; I' }( y k8 o# {$ b
- CMP #$01 ;比较是否为标题画面
" i& x) n+ x2 f" ^3 f - BEQ PPU_STAGE3 Z N2 w; H* x9 [# J
- RET:) @9 _) H1 L5 d0 P* @
- PLA
3 O/ T0 q( j' W: n; W* n+ J - TAY
, z: J# ^4 l" E& [ - PLA, h1 C5 a9 u; D9 L3 W$ F: n; B
- TAX
# N) S \/ A$ Z! T9 C6 N. S& B1 k - PLA
, v0 q. \0 ]; `; \ - RTS$ g2 N% e; ~. |
- PPU_STAGE: ;STAGE显示程序3 @- b8 D* i4 P5 u U
- LDA PPU_ADDR_DATA
2 c0 k4 L+ b9 A8 L K! S - STA $20065 \" s$ e3 K3 V9 m# R+ f( D' K
- LDA PPU_ADDR_DATA+1
# V9 p4 }. H4 |( P3 S; u - STA $2006 ;坐标设置# f( m' r+ g6 h" u, W+ h$ Y& ?3 m/ Y
- LDX #$008 v0 b' E7 {- N2 t1 m" t( C
- PPU_STAGE_WROTE: ;写入STAGE字模! o/ }2 H$ j% X1 h
- LDA STAGE_DATA,X
% g @0 {6 a+ Q - CMP #$FF
* z7 C. [7 y; t7 C5 o) _ - BEQ STAGE_CMP+ w/ t( F3 ~, Z- \
- STA $2007
/ y0 s9 L" f% B- v' `% U - INX
2 M2 a$ B3 V0 w; h - BCC PPU_STAGE_WROTE6 n, {: _' F) t) j7 k f
- STAGE_CMP:: k( W# S# ` J, U
- LDA $6010% m7 F1 f- z; t& C! j! z
- CMP #$FF ;关卡数据初始化条件判断
! p5 f4 D$ p, ^/ `: M6 Q7 ^ - BNE KEY_B [; g+ X: G# s2 X! \* J8 M) K
- LDA #$00
* i! I! y/ ?, O2 g - STA $6010 ;关卡数据初始化2 p/ }! ?& e; f% X) ~% I
- KEY_B: ;关卡减少
5 [# @, f* g: r6 ?3 W q - LDA $F81 W5 k! j) U+ L9 ]0 [
- AND #$42 ;按键B或左减关# y! T4 d! P, x
- BEQ KEY_A5 t8 m. f' |! o9 ^7 M$ e4 v
- LDA #$FF
) n* Q0 u* _( t# r - STA $40' H5 j) o5 q! i# z) o
- LDA $6010
& v3 B$ v! I. q) m! p3 B+ v - CMP #$00 ;关卡比较; r8 @6 f9 I3 [# `
- BEQ KEY_A
; F& A9 W* t( _+ t - DEC $6010 ;减关
( k! G& t/ X' f1 ~* P) u. R - LDA #$575 o0 b. d* k# O! P! y2 U: K! U. N
- JSR $DB52 ;按键音效0 d" p; d% H2 o( X- F7 n
- KEY_A: ;关卡增加
* _& r3 v v. r, O8 X- r( u7 T1 e - LDA $F8* z1 N2 K9 M0 Y& d
- AND #$81 ;按键A或右加关
0 j5 H8 t! U6 [ - BEQ PPU_NUM_WRITE
# w' T8 h9 g! L - LDA #$FF
9 X, B& Z/ r4 ?7 O7 Q) g Z - STA $40
9 Y Y" ^1 T6 O+ Q, p - LDA $6010
- f; L4 G/ s' j# c( c$ M4 L - CMP #$0B ;关卡比较9 v1 Q, }; c. d8 ~9 G4 G/ V5 F0 @6 O0 d
- BEQ PPU_NUM_WRITE' p' h' H1 Q7 y4 i2 Q5 S9 [
- INC $6010 ;加关
- n: S# n: l3 U; ^8 b0 Z - LDA #$57
' B$ _' F+ L( S( L! i' a - JSR $DB52 ;按键音效% H5 B* ~. W$ J; [) P3 u
- PPU_NUM_WRITE:
5 D$ v! h+ t5 h& l, h( T- F9 y9 ~ - LDA PPU_ADDR_DATA
& w3 E& Q3 b3 k+ c - STA $2006
& u. w2 c' k5 l! m' V - LDA PPU_ADDR_DATA+1$ I8 U+ l( V0 O
- CLC
! p- F9 E" x7 m+ W8 b" v - ADC #$06
5 u5 W1 S' C' C( @2 ~3 [ - STA $2006 ;坐标设置6 P* n0 m7 J0 x" m, @- {
- LDA $60100 l5 Z s! Q3 l9 K
- TAX+ D- [# z3 j+ K4 i! [$ ^
- LDA STAGE_D1,X ;写入数字# N$ |! f/ e3 ^: T, G
- STA $20077 S- S) H7 Q( W6 x3 r: }. R
- LDA PPU_ADDR_DATA
6 f0 ?: H P# Q! y! j: z - STA $2006
9 Q& y6 |$ ~. f/ I2 @0 k8 L" a - LDA PPU_ADDR_DATA+1* z* u. j4 b! ?" C3 d
- CLC2 u' v8 ^% G( p, Z6 f2 D
- ADC #$0B' ?4 L: ?# o8 L0 g% \
- STA $2006 ;坐标设置
2 N# R0 ^/ @: C. O - LDA $60105 d, j8 V+ P3 i' R. T, L% {1 K& h
- TAX
1 h% a; ^2 r( N1 r. i9 o - LDA STAGE_D2,X ;写入数字
! n) W' Y5 w. q7 @1 H8 E2 q - STA $2007; _1 G3 R, g5 O9 [( {! W
- STAHE_WRITE:
3 \- n, y! M" }- { - LDA $6010
8 Z$ X% V6 k! C5 t* x" C4 g - STA $42 ;初始关卡写入
, I$ ~: F# j* C0 @/ z+ g2 X - PPU_RTS:9 G: z% i" }% t' W
- PLA, E1 V- \9 E( ?
- TAY* U! D8 g- F4 A( k$ T
- PLA* w8 J% z8 [2 f8 V. Q7 x4 D7 j Y
- TAX' r3 ?4 |1 t& Z/ y
- PLA
$ s# @1 _% L, d - RTS; B) W3 [, e" D1 G1 x
- & X6 t) l% u) \7 P. M' k: r! p
- 8 K0 H! A5 l8 s% H8 W8 ^
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
- z9 z x- r# t7 b% v; x5 ?1 T6 Z. H - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF5 C- ^- T8 @: T; z
# l5 @$ J. @" e( F! T4 r- STAGE_D1: ;关卡数字. G+ Y) V5 s6 z6 Y( B, h8 I
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
' X' n" A1 d! u9 w2 l* D4 r; Q - # c7 h/ t- [9 J& k3 A d
- STAGE_D2: ;场景数字
1 R- N! }' d6 o$ o, `# g( z - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
) V c+ Z( W6 n -
8 \& B3 n. D) n5 @ - PPU_ADDR_DATA:
# k2 r7 |5 Z" E( ^# s8 V$ W1 y( V% I - .BYTE $23,$4B
! w( Q6 @2 @; E# H: _* q2 W. ?8 S -
! {+ A/ z' I' A! A7 \
* `3 r& D* `" k% e, T% R: Q+ }& B
: q6 [- z# m1 q$ D- 9 r9 R/ E8 D" R/ r7 }5 j
- / }+ y: |9 A) n M! c& }* B7 e$ S
- .ORG $FE21 - C2 `, n* [) E
- JSR $FF40
# K. V8 h( H/ A9 y - 9 O+ ]! j9 A4 P6 M. M4 C5 j: g2 p6 C
- .ORG $FF40
/ j; l1 ^# \1 }. p( k- y1 r% y4 d - LDA $BCDF. b7 h, ~# @3 z1 ~2 i; G
- CMP #$7F
) H6 l* t* Y5 z- G, i - BNE ADDRFF56" c7 T3 r( y) k' n+ x9 d
- LDA $0018- J3 f5 z- o# `3 K7 P7 d
- CMP #$04" k6 _ I& w% E3 d _
- BNE $FF52, B1 w, a5 v/ [" O9 c. Z
- LDA $6010
1 f8 ~) n: k) p$ R( E/ K - STA $0042
8 A- e6 D, N' K2 G! H6 z - JSR $BC00
! m6 w# h4 s: O - RTS
! A, E$ r; Z$ X; x; s - ADDRFF56: : q+ }1 b; A! z$ w4 D: m1 \" F6 A; E
- STY $40142 b* c# k8 ~3 q b) Z: g+ \( `
- RTS
, l& a2 b* _# ^8 M -
; R" A& o3 D% `7 g
复制代码 内容:
A% ^+ Y- h8 }- k, m 1.关卡选择: 标题时,左或B减,右或A加;
7 [" h$ D1 G$ Z, @/ _- M 2.一击必杀: 暂停后,按B键切换;
/ S T* O6 m! I ^& J) [7 M 3.无敌锁定: 暂停后,按上键切换;
/ z/ A$ ^. i! d5 \! \6 O7 P; k 4.生命加满: 暂停后,按下键切换;8 I5 F; Q6 z4 X
5.血量锁满: 暂停后,按右键切换;, y7 T$ B* | V) c% H5 G; H
    4 {% j. s& z, l( R
- J3 Q. ]+ k' b6 TFlameCyclone.ys168.com
! z- T7 `3 y' n4 g2 A; e2 Lwww.nesbbs.com
$ h, S* M0 e& K/ D1 V0 ?/ z4 F9 ^- w3 A+ l6 I1 m6 ?" n' q
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|