|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
$ _) j4 R0 a' @& W# h! w4 x7 }
. c) }3 H# f! I/ q[FC][忍者神龟2][END选关]
% j& X0 V# ]2 r/ @# c- m. J, s! ]& f+ A) n9 q) Y( ?5 c3 z+ d. S
时间:2017.3.310 m) o, p1 N2 M& R
作者:FlameCyclone- .ORG $B9E0" v# W# L2 N O* f; ^8 U; g/ l
- ora_data:* a6 R$ M! t7 ^ r
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
0 M( ?$ \1 t/ e, m - and_data:6 [3 g5 C6 H2 @8 {
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
0 n6 w) V0 ?# z; Y% x -
) ~0 L8 [3 K5 u+ W C3 ^ - button = $F8* Z) n* n! v _
- flag = $6000
) r+ J1 x! |/ x- ^, A - pause = $3D/ f5 a/ \* K# L4 ^" w1 _
c$ E' Y( s6 r' e# { o' b- P% w- .org $BA009 }" c: R ^1 Q4 t r9 ?
3 j' ?6 w* u# N- PHA
9 Q+ q* I9 H4 ?7 T - TXA! k# O& S) @/ y1 W1 M% {
- PHA
3 m) f/ y$ K+ i& H - TYA: N4 D3 W% G+ y) s0 V0 c
- PHA. B P, c9 l2 V4 L" `. n
- JSR KEY_OPERATE
. o) u9 Y* n9 n# e - JSR INV
9 e! O8 M$ T, M8 q8 O - JSR LIFE
" k. l3 d9 c( \ - JSR BLOOD( n3 I4 K, }4 s% P1 \4 [: }( Q* X
- PLA% D U* s/ p' u$ V4 x
- TAY
5 p8 Q+ {# p8 L# f/ A - PLA) Q# f8 b. ` {& _- W
- TAX2 ]4 j9 S) | e4 L
- PLA: C- q3 i4 I. `" ?8 a+ V' B
- RTS, ]2 Q# A+ |$ T1 j) b% G$ s
- KEY_OPERATE:
0 h& J# f& d( N: S+ }2 C G - data_protect:% o( ^7 c6 d, _& U/ Y5 K
- PHA
" F0 | N U+ R* T7 `! F0 t: m k - TXA8 B7 j M a# |
- PHA( i5 _* [8 z7 K
- TYA
6 V2 H4 f9 b( `$ x3 d - PHA. ~5 z% m H' }
& \, s: e5 A) o0 n8 _# A- FLAG_CMP:
$ L8 ?' C; a# @/ B* k% Q - LDA $600F4 B) _& @9 G9 M$ m& ^
- CMP #$7F ;标志数据初始化条件判断* i- K' g! D! Q& ~" z2 }
- BEQ pause_cmp1 C: d: B0 F6 q$ |6 ~
- LDA #$80
. G9 @7 O; k" S* H: R& F3 V* ]" u - STA $A001 ;6000-7FFF写入启用
9 l0 Q6 E6 w( b9 m# |5 ^% } - LDA #$00/ `# |: S& M ~- j! \
- STA $6000 ;数据初始化7 D" o* `' ^, {+ R, e% |
- STA $6001 ;数据初始化9 B, P, C/ a* z5 B; J
- LDA #$7F: _ ?4 u; e0 ^& d# n7 o+ P4 u# P
- STA $600F
" t, |1 r& ~/ k! h* Y - pause_cmp:
6 g5 r9 J$ G+ ]. N# m - LDA pause; ^5 S' `' S5 a5 Q0 M- B; @& V5 o
- CMP #$01
1 I8 W2 a" C+ I/ A; x! z - BEQ button_press
9 _7 _& I6 v' \+ Y - PLA: e |9 ]: g5 B, l
- TAY
% ]8 r% t V% q3 d - PLA* N( E7 g4 O/ L$ ~8 S
- TAX6 o' h/ k7 t$ F1 R
- PLA
% E# W7 q; f) J/ N) H; h# r* H! t - RTS
+ F) W% V* y6 v! A) ]2 z - $ [( s6 H+ l) Z5 \$ V4 z, Q: \/ @
- button_press:, b9 H6 v& A) P& l9 U, T$ C
- ini_Y:
b }5 E; F! P! s - LDY #$008 s" I) R- P6 T& B
- button_cmp:
! _4 d% m4 y+ n/ N( o - LDA button,X9 T1 r6 j3 n0 R% F e9 i1 n: S8 {
- CMP ora_data,Y
8 T, W' Q" z( z - BNE count_Y_cmp2 u* c, Y k- y0 {( Y- ?
- flag_cmp:8 U) K: S) p, ~5 U \
- LDA flag,X( @; ]% ~- ~" F9 L# k
- AND ora_data,Y
% s+ g X; E$ Y' \ - BNE flag_and0 E( y, h: ^/ c8 y% O
- flag_ora:- g" |$ d$ P# k
- LDA flag,X
" A3 b/ L6 {$ }8 ~$ M, d+ ^ - ORA ora_data,Y) P6 @9 |& H" _& k& M
- STA flag,X! D& t$ y0 {4 P/ t& P8 v. O
- BNE count_Y_cmp% B ]* p+ y% n, E
- flag_and:6 @4 n/ F# a1 _/ L! g: p- L
- LDA flag,X2 A4 |, o8 y1 d1 U, z: d
- AND and_data,Y
7 ?6 j% B9 S( g0 s, D - STA flag,X& w4 `) D1 h) K* n% q) _, d4 A/ N) a
- count_Y_cmp:9 {" W' s5 b( I
- INY! M* `+ M4 b% [$ f& }2 s* B
- CPY #$084 Q! J" d- `7 {1 W
- BCC button_cmp
; c) `# L, N o+ _# v - / k- T) j. O; M# r' f- `! b3 y
- data_extract:
1 ?6 k2 Q. H7 P: l, r, @ - PLA# ]8 G5 H2 q6 E& p3 ]. M
- TAY
: S; [8 X) v8 Z. y - PLA. f+ [; x9 q4 k) `' {# f5 o
- TAX
- R$ p1 B! x" l# T E9 n- d - PLA u6 r7 K. C- F$ u; k1 X
- ' k; u6 F/ s+ y$ V6 M
- return:4 q0 k8 W7 y0 D* R, m
- RTS
% d% c8 ^& C4 s. @ w - $ R% b) U5 l- r. B0 |$ S4 @& n
-
2 q, \+ a( K* c9 Q - INV: ;无敌% }# O6 p" l ?% w" Z
- LDA $6000,X5 s' w z) C# H8 H# d
- AND #$08
! {" A* b; j ~8 K% w - BEQ INV_RTS
* q/ `' {; s6 j" C - LDA #$05. d& c8 Y0 ~, ~4 `
- STA $93,X8 x3 C/ {0 [8 P5 N: E& B+ J
- INV_RTS:; ~3 {8 k) K% v4 H0 i" `
- RTS
9 G+ R G8 E9 b! Z
2 w, _$ t% {" A0 a+ d5 C7 v$ Y8 x' o-
% @& _' e$ k1 _0 ]. `4 Y - LIFE: ;生命+ N2 G+ Y' t2 c) @9 q
- LDA $6000,X
$ Y* ]9 }5 r+ p& i/ K3 {1 ~- C& t) m - AND #$04. W' H; E& r+ u8 i k O
- BEQ LIFE_RTS
$ v0 j& u, X! [+ y - LDA #$09
* h" s- j8 G! O% n a; _ - STA $4D,X: Y; W. s7 F7 v6 N" q9 D6 @5 f
- LIFE_RTS:0 S' q; c7 O w7 g8 q, `& ~' q
- RTS
$ u* a5 _6 i$ X - 9 X5 g) }) z5 C+ s( i u
-
: [* A# U- H* ]2 F" c: N - BLOOD: ;血量, F/ A- ^; M# ]) p, X4 f* Z
- LDA $6000,X
$ | |# E. A6 H1 \) } - AND #$013 z$ Z$ e6 S4 V
- BEQ BLOOD_RTS
4 }" j* `5 c. q+ D( Z q$ ]% h - LDA #$38
& p) ^. U. {3 A) a" k$ c5 P - STA $0568,X5 W2 f2 U, G3 X O
- BLOOD_RTS:2 @8 r! M0 h$ E1 H
- RTS
- O; P) k& J' S# ~' w g+ _ -
8 C# h1 U' f2 Z7 \( O$ S6 T7 _ -
" J0 S) H& S/ _2 S - .ORG $FEFE8 b; C9 E' J; Q) r1 b& L
- JSR $FF609 ?+ K2 X; E( k5 z# x/ S5 Y9 ~
- NOP
: s4 d0 [" X) S- X C - ' E" C0 I/ p4 F# \- Y
- .ORG $FF60
7 q$ E. a! R0 y - STA $F8,X2 m6 U( s$ x( Q
- STY $3A,X
6 D# o# c9 p% p4 o - PHA$ M' m( v$ ?# F5 z# T
- TXA2 v! H9 z. J' g0 i4 V* N: E, R
- PHA
% m" m- n1 K' c; I - TYA+ t& t) ?7 w' a# _7 ^- h- `
- PHA
0 @$ i9 d% u) C K& Y0 ~& m - LDA #$021 n- S( R2 X$ A4 X
- JSR $DB11 ;调用系统切页; O1 H. e% S* s E4 }) W6 [
- PLA
/ l5 X* B: e5 s; S& u) a9 I- }: { - TAY3 }/ y7 r$ m7 |6 B0 c9 B, k/ b
- PLA, {, e4 @ \/ J- u2 N
- TAX. e3 F3 ?! n, t/ {( T# c- l2 ?7 Z2 E
- PLA
" |) ?6 o: e' V) S1 S - JSR $BA00) _; U6 z1 ]+ [# ]2 C, W
- RTS / V" f: i/ w4 _ j* V+ T0 E% z
- 7 y- C$ ~$ _/ n6 o8 h
- ;[FC][忍者神龟PPU][END]
& L* Y% @: N1 ~ - / O- Y, }' p8 w S1 E* M: O, |
- .ORG $BC002 n2 ^+ F$ Q7 C, Z8 b
- * Z: t- W6 h# V2 t: ?7 c( }( n
- STY $4014 ;补上覆盖的精灵写入指令
: y1 d$ C) T3 e8 I& E' Z - PHA
3 l5 s! A/ P% a+ B; D - TXA
, |, h G* g8 W - PHA
6 o/ a9 ~+ B# B5 {" e3 M$ l* o6 k( x* }, ? - TYA
7 a w- Y8 i% X$ S% F6 _3 b - PHA
* }! V, j/ k$ c5 h, c0 V$ z - LDA $018# _3 F1 M- ~5 A4 F5 }) y5 e
- CMP #$01 ;比较是否为标题画面/ G* D I& z+ x3 K* S, n6 I
- BNE RET: @& ]5 S; f$ A
- LDA $019
# c F% Z. f$ X% `9 r - CMP #$01 ;比较是否为标题画面
0 @( x- Z" _& A7 n+ \5 v - BEQ PPU_STAGE( \* P! a# L2 U! o* _1 h
- RET:* w6 ~7 V0 T8 a# z2 k
- PLA
& N' W( ^; r+ Y# s5 I% w# W2 u. q! s - TAY
" v* B: W i- B( ~ - PLA
1 [3 m$ \ y' O: U& W4 f8 v( Z - TAX+ s7 o; g& }! j$ G
- PLA% u- g |* [: L, ]1 ~3 Y- p
- RTS$ O+ _5 j, y9 J; X* z+ i
- PPU_STAGE: ;STAGE显示程序
4 m- ~" J% W7 m+ ]& x - LDA PPU_ADDR_DATA
: a4 z8 O3 H. D" t - STA $2006: B9 o1 E( V$ \6 i) n% A
- LDA PPU_ADDR_DATA+1
1 y& P R8 J, V - STA $2006 ;坐标设置4 _& Z3 G) M2 ^, t
- LDX #$006 t( b+ I: ]" C/ V# y
- PPU_STAGE_WROTE: ;写入STAGE字模
1 t- Q5 w* A2 m( ]9 x# \0 I - LDA STAGE_DATA,X
4 C! E6 `1 X# n' w' \ - CMP #$FF
3 M# E" z/ N6 y6 @% a: L% r$ K - BEQ STAGE_CMP5 Q# i2 b* j+ m# J
- STA $2007
& `2 a4 o D7 A - INX
( Z. E8 s) t ^4 A0 Q - BCC PPU_STAGE_WROTE
* [0 k, _& s. l9 I7 v! l - STAGE_CMP:" w( b) K$ d* g ~7 c. V) z" N8 ~
- LDA $6010
Q; Q4 f1 L( z$ g+ I) Q - CMP #$FF ;关卡数据初始化条件判断8 i1 G, I, @6 u
- BNE KEY_B
2 [" C. {. [& A: G. s% W2 \ - LDA #$00
9 g; \) I- u a - STA $6010 ;关卡数据初始化
; |& K. M2 X5 e6 }. v) t - KEY_B: ;关卡减少
, P* l5 c6 C6 H2 h x0 e1 O - LDA $F8( G) b: J6 N- e4 q# i4 z& v7 z( @
- AND #$42 ;按键B或左减关* ~( n+ u) |7 t S( {' p8 v
- BEQ KEY_A9 V, d- r) H" m( p( {! v) H: M
- LDA #$FF9 U+ `% o% g2 [5 g
- STA $40& S0 ]2 N/ m- r7 M' P2 J
- LDA $6010, ~) \5 H6 [. [9 y2 g( l E9 Y7 o
- CMP #$00 ;关卡比较+ \! R! a! Y+ k* H
- BEQ KEY_A
6 ^6 F7 \2 A% w0 @( A' Z! u - DEC $6010 ;减关
% a2 P1 u$ Z$ ~; ~6 i/ K - LDA #$57
* _& N- k/ N% v - JSR $DB52 ;按键音效
4 F7 P. b+ q+ ]1 K/ a- A - KEY_A: ;关卡增加
( \- ~. H3 l; ^, _/ ?# X9 k9 N7 ` - LDA $F8
3 |$ E! T: J' @ - AND #$81 ;按键A或右加关& M0 d6 F8 w' r- Z, i
- BEQ PPU_NUM_WRITE) u8 ~* c9 J% q$ J' }8 K
- LDA #$FF
* ?7 J, R5 A/ J. Q \8 u - STA $40
5 C5 ?( f$ B( R* m - LDA $6010
1 K) ]/ L, ~9 P6 V- l - CMP #$0B ;关卡比较
- ]+ `4 k0 G5 G - BEQ PPU_NUM_WRITE8 ?- O; K2 ?* t0 r! F$ h
- INC $6010 ;加关, k, ]( ]! P9 \7 ^
- LDA #$57
& a6 p* L2 V" `) ~, X2 s! U( g: m - JSR $DB52 ;按键音效
/ J8 u3 v3 r7 h% w0 y7 {& }! V8 M$ k - PPU_NUM_WRITE:
' p1 F0 c; @6 P4 n1 D* H - LDA PPU_ADDR_DATA+ q3 {4 T9 [' N1 @7 ^
- STA $2006
8 ^* A, @* a/ Q' | - LDA PPU_ADDR_DATA+1
3 @6 V+ J* a- b( r" U! p. \% ] - CLC
9 a9 w$ p6 ~3 \. ^- J% g7 W6 ? - ADC #$065 S- \! |" E6 ?& i- u4 t6 K
- STA $2006 ;坐标设置
% F! C/ X* @( H' V7 J - LDA $6010
) {# D G; T& t7 ]5 g - TAX' H3 d) Z7 \& O4 y; A
- LDA STAGE_D1,X ;写入数字, e( ^0 n& E: w
- STA $2007
- F j; N0 x+ d1 [ - LDA PPU_ADDR_DATA
5 S0 }4 V6 V9 l4 n/ S - STA $2006& z! j! s6 @8 C K( o
- LDA PPU_ADDR_DATA+1
8 i5 h5 [% Y' v - CLC) j5 b( C) g9 ?. T
- ADC #$0B5 G4 Y8 G" E! n( d5 F3 ?8 l3 ~* P
- STA $2006 ;坐标设置5 B! r4 L) I. J' _( d. i8 \
- LDA $6010
. t0 s3 z5 {& U7 A. | - TAX
7 A. o! V, W6 Z c - LDA STAGE_D2,X ;写入数字
( U; k8 I0 e3 `- W& u - STA $2007
+ [ i% t: D' Q$ B/ `" a2 S - STAHE_WRITE:
0 Y4 H0 M. k# N3 _# {, i - LDA $6010
( w6 R8 ]; X, p- A - STA $42 ;初始关卡写入
- M, x9 |/ ?( q2 }% {: S - PPU_RTS:9 y5 x8 j, g# p, b# u$ B/ @# ~
- PLA( T- O. z$ \( {& [. U
- TAY. u R& U! J; p" A+ N/ l7 @ H7 L
- PLA! O9 F" g; N) z$ p% @/ v1 E- w' r
- TAX$ ]' T7 ]" q& k- j% j& h7 F9 Z1 U
- PLA8 v& ?" T/ v( _9 b9 u
- RTS5 M9 T3 y2 O( F" F
- * n& g) n( X8 ]3 ~1 h& O
-
$ D7 f( {, H' D0 |' j) l - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
" t* Y* l+ D( h2 d2 q/ Q* l) D - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF3 i% M& R: W' c
- % r) t( l5 [: E- l% J, D% `- G& q
- STAGE_D1: ;关卡数字/ ]& t' g$ x% {) n8 w' l N
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
6 Y4 n5 ~2 M1 m8 e. U8 Q* D4 ^ - % ]3 O9 n+ q& [( G( u1 a, ]
- STAGE_D2: ;场景数字6 p/ f1 r; X6 Y9 `* l1 E1 r
- .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
# {# f2 j. R% @; a7 _, M# D - $ l! Y+ l: Q4 V0 p+ f
- PPU_ADDR_DATA:
( L6 S% d9 N( B2 a2 y8 ~ - .BYTE $23,$4B0 H6 H6 u; ~+ Z) e8 {* i
- & }7 D+ i$ ^5 V0 u% O ^
- 5 ~/ w/ N, P1 M% S; v
# N) T+ V& k. N* e) F, M- Q
( h, s5 `# M! z6 x9 @
2 | k" O: i4 }; F# f( k G0 R- .ORG $FE21 9 j, h. V' K. _7 S7 J# Q* E
- JSR $FF40
: p* X8 L* s, H -
/ u0 a+ A& ^& D% i - .ORG $FF40
' |. u4 f- w7 \1 j a& h5 e - LDA $BCDF( c0 v# d. N: [3 e& B2 q x
- CMP #$7F
' \3 F7 S, c( a2 S - BNE ADDRFF56
8 ^. P, a8 Q6 a - LDA $0018% A. u- F2 j: g4 `. F9 ^2 ~. f
- CMP #$04
8 s! P2 F- D: y. F - BNE $FF52
- q* F* D" ~( {* z) D. [# C - LDA $6010. L( L- T2 c( ?& U: m+ L5 q
- STA $00422 e7 i4 Y, l6 G: n G5 W: o: Z
- JSR $BC00$ Y5 o+ o2 o& @' @, b
- RTS+ P6 x1 F4 }5 p0 y* [, z
- ADDRFF56:
* F q+ a$ D1 Y6 k w3 {% I* D - STY $4014
4 H4 Q* k4 p j' a) I# N2 A* M - RTS
2 c" Q, ?7 \! _) B1 _) p! \ - ; S; g5 I1 T" v. R( i; V. \6 J
复制代码 内容:) x0 L9 c3 P0 r0 i H4 t
1.关卡选择: 标题时,左或B减,右或A加;
" A5 M. ], ]3 n7 I, e+ u1 _5 m 2.一击必杀: 暂停后,按B键切换;
, h4 i% A/ N: I' F! U2 s/ z 3.无敌锁定: 暂停后,按上键切换;
# I0 ]! X8 m) ]) J$ D' B 4.生命加满: 暂停后,按下键切换;
- Q3 R7 a7 `. Q+ J6 u8 {- Y2 ]# h 5.血量锁满: 暂停后,按右键切换;# u% o* I$ G) \4 l4 x9 J
    
1 Z+ ]' k7 z5 e) p1 g* {; t$ h! i
+ ~6 B6 ~! P+ `FlameCyclone.ys168.com
: m. B0 t# Y5 z1 {/ [0 f: c1 Cwww.nesbbs.com
9 M/ X7 x. y7 I( m# m+ X0 d: ~' w: M% W$ c
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
2
查看全部评分
-
|