|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
# c4 M% i1 A: S
6 [8 L8 i, Q9 c# ^& r% e9 @5 e4 F[FC][忍者神龟2][END选关]
- v1 H* C4 V, s* k) l/ I6 k& l! o! E1 H8 k. D+ }. a0 F/ b
时间:2017.3.31
3 Z& z* _5 l# `$ Z; _: F作者:FlameCyclone- .ORG $B9E01 _: o) ^/ s# N) Z9 X
- ora_data:
2 k4 z! b4 u# b/ z* I - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
: Q4 Z( n/ D6 ~* d& M2 x( { - and_data:; o: d* N# Y! t1 l* j, S: W+ b& s( y
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF* u" d! r9 `. u/ J" A
-
- s8 W9 ]0 K2 Z, Q0 Y8 e: B0 E - button = $F8
. n( a# E& p L - flag = $60001 F0 m! x6 ~5 P s$ J) J
- pause = $3D0 A6 W) n( w& y! V6 }( n
- . K& p2 N; r2 |
- .org $BA00 ^1 R! s6 M$ V6 q- K. W- s
- ' I2 n+ u1 s! y0 ]7 @
- PHA$ N. K4 ~& V- a. P
- TXA
/ @4 F. u! b' n5 m8 ~4 ~5 O - PHA6 {& `% c4 i$ ^* V" G9 }
- TYA
; J2 n- w( k4 r7 m - PHA
5 Y H! e( E$ k; |( t5 ^0 n' A- c# M - JSR KEY_OPERATE
: E) i: ^, ]' Q8 [; u - JSR INV
0 z$ }( S" w4 o# B4 { - JSR LIFE
' W7 ]$ |. C3 x. ~) a5 ? - JSR BLOOD
* K& k; _* f; S5 x; e0 M - PLA( }3 K* i" E& d* Y" p# q
- TAY' ?3 e5 g/ ^* a( O1 _% y; w
- PLA5 v: q v) U4 |* o
- TAX
) r9 T6 L7 u6 O! B - PLA
0 M7 R7 Y, P. y1 M% U7 C1 k9 s - RTS
9 L$ x9 B4 h. d; ]5 L - KEY_OPERATE:
, c$ i) a0 |7 J% Z- M- i0 Z4 X8 K - data_protect:
! l8 M8 Y- p) Y - PHA `: ]6 R$ U) V, K5 z
- TXA
$ d8 s, s$ J @ - PHA4 s( c2 e: R1 t; u* e4 t! S, v/ K
- TYA
1 o1 c, H$ d5 c - PHA
; ^9 O; a' Q0 h& `" c* t; p
5 A& E8 i$ c& f. A* a- FLAG_CMP:
" g, s: x2 A; c+ Q% t. U( Z - LDA $600F/ f: ^, W+ `0 M* y6 v, s
- CMP #$7F ;标志数据初始化条件判断
/ r9 C. m3 R5 s) c1 K - BEQ pause_cmp3 R8 I2 u# r( U* E# _8 L" I& M
- LDA #$80
% a& V/ B% a6 { - STA $A001 ;6000-7FFF写入启用8 E8 ~2 O) X# e. w* J, N0 k9 P
- LDA #$00+ O8 f+ y$ A- @5 e% i
- STA $6000 ;数据初始化
2 a' U: q, k9 R% k$ H - STA $6001 ;数据初始化0 d& q; T6 U2 H- H; e/ [5 |
- LDA #$7F
2 Q: e7 T( u5 {# ` - STA $600F' g7 R" x! P1 _$ U" V8 K) e
- pause_cmp:
0 D% N* T2 b8 r. {" l - LDA pause
* @( B- i d( L0 F8 y - CMP #$01' ]; o, m6 [+ `* w$ b5 |) r6 @# Z
- BEQ button_press
: I; [; ^& u3 B - PLA- Y4 D9 x. i: I3 j) ^; ?) f
- TAY) u% u D. S0 R3 I" `% ^0 |( m2 O* C& r
- PLA
7 \& W5 o. Y: o& O: n) z! v- ^; J - TAX
4 p7 Z5 |* h2 i! { d - PLA4 j- j$ m3 Z) c5 \/ o0 _/ o2 j
- RTS
. V' }: `+ [- j- T6 z6 o% h$ K) j. u
, y' \1 I I4 Y: I- n, I0 Z- button_press:4 g1 P4 w, H( T' c5 g
- ini_Y:* ^5 G4 l, w" |/ u. r; h' t
- LDY #$002 |' c8 K$ ^9 X3 `8 H5 J- C# m
- button_cmp:
* B5 u7 W: {5 u$ D/ d, q1 F - LDA button,X
* {, S" O' z) g - CMP ora_data,Y
$ M8 m/ L7 }" e) C - BNE count_Y_cmp9 `' T, ]& O% x: I" t
- flag_cmp:
7 @+ \1 Q/ l2 s' Y( m t; G* m - LDA flag,X
+ m; M' n) ?6 W/ p - AND ora_data,Y
( g& b2 ]/ l6 `5 c1 z3 X - BNE flag_and
/ z/ z% ?1 U2 N - flag_ora:
; E# R" _: v+ t, ]* f: y* u - LDA flag,X
9 R' {9 }& Z$ R& @2 A' z: S - ORA ora_data,Y
& w# t. a5 [, `, ]" V* \ - STA flag,X
, W7 P. M/ d2 ?, f5 H) A& J - BNE count_Y_cmp
4 J6 J) _' }! V! k) \ - flag_and:
, u+ |3 x6 S$ u2 H - LDA flag,X1 d- k1 E, t2 k6 \, T+ g- m
- AND and_data,Y# R: B4 |/ S% \1 d0 _* O* N# r; l
- STA flag,X2 Z# x/ ~7 h5 i. L! v- W
- count_Y_cmp:
6 n4 O8 Q, v7 Q - INY; H5 s( _+ `; E# S% n B' F; x- w
- CPY #$08; {2 F- `& |5 F% r7 V p q5 I
- BCC button_cmp
0 T( ~7 H# r8 q7 O; q& D/ G -
) O2 m$ G( ?& K! V! j- a - data_extract:( s7 x$ Z `3 e1 a7 j2 n, z
- PLA
5 ~% c# |. ?5 f5 S( J, p" j - TAY
6 L' O% m- L/ Q - PLA
0 {0 o1 |3 U+ K - TAX( [6 p, x. U$ ~" }1 Q
- PLA! C% {- V9 J: c% A% l; ]- D" a
-
! G8 c5 y# b T" F - return:5 `/ v6 _. b1 R: C ^; W" K
- RTS
2 q1 ]: p K7 E* W - ( T$ a3 s) ]% O% `8 o4 ?4 b6 Y
-
. K' M s. e7 J1 h. k4 ] - INV: ;无敌
( X. X& ~5 M: A$ a9 Y - LDA $6000,X% r" t/ q" S+ R" g/ m) z# }
- AND #$080 K1 r+ n, M" U4 n7 R$ q( ]
- BEQ INV_RTS) Z. r! s0 c4 H: a
- LDA #$05
' |, |4 a o2 h, L: n - STA $93,X
7 `& [" Q2 O s - INV_RTS:
/ D' @! j& ]# O! U2 y! j$ K4 T8 } - RTS( v8 c3 n# x9 o4 G0 w
- : z- x- P% N+ b1 a; c- O3 e3 j
-
+ x4 A5 l) `- m$ z6 T u L2 Y - LIFE: ;生命
) j* t. E! Q6 d' X- l - LDA $6000,X
. k0 |9 r: ]- |% V - AND #$04
4 ^. J3 ~. f- _ - BEQ LIFE_RTS3 }# b' l- \# T- U
- LDA #$09, B" @6 A1 Y- f A4 z
- STA $4D,X
4 S7 u4 g! @, b; @: @2 X ^! O8 N D( @ - LIFE_RTS:4 `2 e' D4 B" B8 v9 C
- RTS
, D5 v- Y+ o6 t, Q9 j. ^7 K
% d; I- |) j0 |7 X$ B-
, ~2 ?- [6 A1 Q/ {! J - BLOOD: ;血量: ?4 |" r1 \; |1 g2 [! ]
- LDA $6000,X$ I( A; f8 ~( |9 C; A3 Q3 a! E5 m( r
- AND #$013 `7 [1 E- E5 y4 w* T4 j
- BEQ BLOOD_RTS6 x; m5 g' o" h7 B
- LDA #$38! D, }3 V Y' [) B7 k2 N
- STA $0568,X
' z9 S" h- w/ g4 r3 p" k" x8 I' C - BLOOD_RTS:
G J0 \2 ?" g0 [% S; S - RTS% \+ t, W- d! f9 ~: _3 q
- % c; E+ o/ n6 [
- : e% n. h: s7 O" n" R1 g; F
- .ORG $FEFE$ z, t+ ?. N" c, n' h* X
- JSR $FF60
. n9 K9 a& B, q. P- ~; `* A9 L - NOP
+ |* c, d( H% K# ?+ k m -
/ J# [$ r0 Z) I9 S, [% |0 f4 A1 P6 L) ` - .ORG $FF60 R4 w/ y' h% |5 R: c
- STA $F8,X3 A" S6 h, Z# F1 k( A, O
- STY $3A,X
/ {# t, |- e i" T5 Y5 H# Z - PHA- r6 v9 r0 c" B. p6 P4 w
- TXA6 z( w% p; L( r" h0 X
- PHA
$ d* ? X) U" y9 | - TYA. W) h5 r2 E; B; G
- PHA
0 V) A' Z0 w) h3 B9 A - LDA #$02
+ C" x3 L# ~. M2 S5 b - JSR $DB11 ;调用系统切页3 W9 t# m* g( Z0 T6 f5 B
- PLA; J4 ?/ [) `: c: B7 g2 |
- TAY9 c$ R' L! _) y% w* p, \
- PLA
$ }/ j0 p' P% {! X+ ]- C - TAX& v3 A$ Q) d# M; D G
- PLA. F" C* X) ~6 W1 a( P/ e
- JSR $BA00. R! R- L" j4 Y7 ^2 A. O
- RTS ) ^$ Z, f B; O; C4 z
% h; o8 v' m9 q6 ]7 Y" C- ;[FC][忍者神龟PPU][END]
) J8 n* R, w: V, r: U! _ - 9 \! X) ~; X' o9 y& M* V
- .ORG $BC00" Z5 G' v* E4 q2 c5 ^1 ^: H
- " f* `( @1 u8 Y( O- l- \
- STY $4014 ;补上覆盖的精灵写入指令9 F4 }2 ^. q% k$ ^$ \6 C2 w
- PHA1 `' o6 I2 c; x7 w1 l7 {& D1 R
- TXA9 W+ S- l" E% \" m5 a/ R
- PHA1 ~, m5 _+ Z* N1 e3 ` A
- TYA
& d( n2 m2 z* {7 t" k9 r - PHA
, W( V( j& O/ ^; \7 K$ L - LDA $018$ i6 _3 M2 m4 ~) I2 O' ^
- CMP #$01 ;比较是否为标题画面# r* M7 r6 K# c. g$ M1 `
- BNE RET
5 x9 o7 n* |* U, u0 D# l - LDA $019
$ b) a8 e1 e5 q5 D: Q$ {3 c - CMP #$01 ;比较是否为标题画面
. L6 ]8 |6 x* x2 C1 s; o - BEQ PPU_STAGE
8 f0 ?4 u# w/ a - RET:
3 x. G, \5 ^; ]! Z( m - PLA/ ~: B# T# C7 K: n
- TAY
& B7 g( E( z8 b9 B$ n3 F - PLA" v" T- o" {; m1 Y8 L
- TAX0 @, S: B* B3 n6 a
- PLA
3 b: M- N6 H2 U% l - RTS+ z' r! h) `1 G- a! `2 E) e
- PPU_STAGE: ;STAGE显示程序6 J8 y! V" ~0 c2 t3 |+ ^
- LDA PPU_ADDR_DATA; c' X4 f1 }3 D4 j- a3 d
- STA $2006: Z Z3 {1 ?- o1 H
- LDA PPU_ADDR_DATA+1
( J4 Z' L% K0 w( ?/ B - STA $2006 ;坐标设置
3 }, e! `; p$ `0 O3 O - LDX #$009 Q! f2 W) O9 a5 B
- PPU_STAGE_WROTE: ;写入STAGE字模
: t' [( G; U3 q8 q - LDA STAGE_DATA,X A% U' t1 M) ^' T+ j& T6 W
- CMP #$FF6 Z) A( o' J# [ j5 g
- BEQ STAGE_CMP
3 D$ \1 I5 i4 [/ x& ~ - STA $2007% u% u h& }5 Y: B, c, u
- INX+ E2 F, B. O5 t4 h6 y
- BCC PPU_STAGE_WROTE
+ [! _) p! S1 B; ]0 A - STAGE_CMP:
, j g! U; e9 g( m% {% D - LDA $6010+ [8 J! I" n& _! Q
- CMP #$FF ;关卡数据初始化条件判断
p4 _8 g3 y8 U, R' r8 q - BNE KEY_B4 f- d. x& J0 B) N
- LDA #$00+ ~8 \3 W8 o( [4 K3 ?; s, t. `: b- \
- STA $6010 ;关卡数据初始化
\% _7 w# s: `+ l3 ^+ Z3 b4 U - KEY_B: ;关卡减少
1 o4 t+ ~. X1 |3 B - LDA $F8
" Y8 J2 Y1 H5 B/ z# K% N - AND #$42 ;按键B或左减关
6 L% Y' s; A) P4 d - BEQ KEY_A3 }* Q# T* h7 s# r j8 G
- LDA #$FF6 Z+ s3 }' E; F- x$ U8 r
- STA $40$ D8 H6 }9 `9 s4 s& }( {4 i) |* D
- LDA $6010, a% p& n" P& k/ t& n2 J" h
- CMP #$00 ;关卡比较. I8 m- C* B5 _
- BEQ KEY_A
1 [! G. P" l1 W% e/ A - DEC $6010 ;减关
5 v! Q' |1 y1 g' _# j- B0 T - LDA #$57
Q4 a' b4 t, q+ N7 i( t - JSR $DB52 ;按键音效
3 C, n6 J" e0 F( ^# ~5 T+ F - KEY_A: ;关卡增加1 V! P1 T# R6 N& h2 t/ r
- LDA $F87 }! k0 k" t* S D* X4 v2 V# T
- AND #$81 ;按键A或右加关" a% f9 L7 h! c8 Y9 q8 E
- BEQ PPU_NUM_WRITE
7 y/ n$ F. T% {0 A. n# a' V - LDA #$FF
. Y8 Z R# C* F2 d3 K - STA $40. a7 S6 J: W& N
- LDA $60107 B, r) [5 \! l6 a- K2 J0 k
- CMP #$0B ;关卡比较
) I" |3 ~1 V; T) F" | - BEQ PPU_NUM_WRITE
; R' Q1 _( g" L- @& |1 ~' {( X - INC $6010 ;加关
( ]# I4 ]' t+ }! B - LDA #$575 } }) ^1 Z R$ @" M, |% e7 {
- JSR $DB52 ;按键音效
+ V2 Y O" U" S' |; w5 w - PPU_NUM_WRITE:4 O+ _$ Y7 N* V# Z$ N8 Q3 b9 b
- LDA PPU_ADDR_DATA
4 o0 T) ~/ b) g5 X8 w$ O2 c - STA $2006
8 `( o# F& H* c0 O - LDA PPU_ADDR_DATA+1) M" \0 \. I9 l; S% j
- CLC u, U% h+ k# `7 I( D
- ADC #$06" J2 Y$ D- G0 @0 w4 e2 f
- STA $2006 ;坐标设置
4 q7 S A/ O( F6 u- r* f2 E* M; p - LDA $60101 [+ u, E; O3 X a# W
- TAX$ @+ _/ d; f9 \4 P9 S2 N
- LDA STAGE_D1,X ;写入数字
2 z0 g2 e* C, l6 q2 ~1 l6 O - STA $2007" [; X( s. |, p' Q& r/ E6 o
- LDA PPU_ADDR_DATA- L5 S; M* O, v* U6 s- [
- STA $2006
+ p; {9 u R5 S- e: C; w# G - LDA PPU_ADDR_DATA+1
. D0 c, w5 M4 v# y8 z& k0 t - CLC
" e1 P- }. J+ ?* w( o - ADC #$0B
1 }/ ] S% d/ R# ]) w8 k9 X/ T - STA $2006 ;坐标设置
( |1 @* Z; W7 t - LDA $6010
/ v; D5 S1 P% `7 n% r/ | - TAX
8 _3 C8 c) A+ O# N - LDA STAGE_D2,X ;写入数字2 @( |* c5 P" \- y6 c7 Z3 C/ A
- STA $2007
- B3 W( O) t: G, s/ N7 ~, [1 | - STAHE_WRITE:) e6 j7 S H2 |8 `
- LDA $6010
) q1 |$ Z, K" ~ w- x - STA $42 ;初始关卡写入. }0 p" A0 I, Z( F) F
- PPU_RTS:
2 d! m. y8 l3 Q$ n - PLA9 i# _# E) Q+ K
- TAY- l/ L( H4 r" @9 c X/ p
- PLA. o$ ]3 ^" j- R/ l: f, w8 S. Q
- TAX- ~0 Y$ `; @$ O. x: z2 M
- PLA
0 y& P; h0 G4 K1 u7 p5 k7 K - RTS
2 e* M8 a* V/ l) U* p* S0 ], f& \ -
( f& p ?+ S( u8 `+ ]. j8 @" Q x -
8 I- S; B7 w. A' ~8 e+ Y) ~ - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据' E7 r# l7 v) q) f; ~! H) |
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF' G" ?! |- t4 f0 g( z
- 0 c# C) q5 U& ^0 {2 b
- STAGE_D1: ;关卡数字& X+ c) ]$ K1 N* f) y5 q# z
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08 B0 O5 T+ @* z4 d: p
, ?5 x- j, l7 Z4 p9 j$ \- STAGE_D2: ;场景数字
; d8 r( i+ |! d! } - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
: V0 l: O" v& ~2 I1 Y -
% S4 V0 x- _" g7 e4 x7 \ - PPU_ADDR_DATA:
+ E6 C* P& Y$ R, ^! n( O' b - .BYTE $23,$4B: o" f0 C# R# @1 d* J
-
" B" G5 V& m1 @0 n4 D
6 O4 W5 _6 q5 O0 @- F7 X/ K" F% R& ~8 ]% M
3 ^6 w" v3 q( w; s# ?: T {- ( |: z" Y& I' j
- .ORG $FE21
4 J# V+ A9 Z2 W$ M8 T - JSR $FF40
7 e g1 v( a! t- M1 C3 G -
$ R @ R8 s1 B1 Q/ [* V* D+ P - .ORG $FF404 V/ |$ s) u& b% W- O
- LDA $BCDF
; |6 G+ w/ x, `9 K0 F$ P - CMP #$7F
$ |* ~# l! Y& m. B4 v f' y. e0 }2 s( W - BNE ADDRFF56
& w- A& c4 O9 m( m7 T) Q) h - LDA $0018
$ }( L# B: c- n, o% X# Z - CMP #$04
8 m1 Y6 ^/ m; j: L% g; d - BNE $FF52
: F- n/ J, B& F: C3 ?. |( d5 l - LDA $6010
, `6 E) L w, j* o - STA $0042
+ w: s* R# f. p# I* K; g7 d- T( E - JSR $BC00
+ x# j* I) M* Y* M: l5 L i% q - RTS
- Q$ p& R: J4 A - ADDRFF56:
+ P* B. e" M C: q( g0 @ - STY $40149 t( X3 ?4 j7 V, l$ w( q
- RTS
$ }$ O" E, J5 f7 C - " n: r8 _3 _4 t; w% S3 L6 Y
复制代码 内容:
' M1 a# {+ p/ S$ x7 H7 b8 u2 | 1.关卡选择: 标题时,左或B减,右或A加;
7 O( _% h* |' t$ A$ c/ `0 Z1 ] 2.一击必杀: 暂停后,按B键切换;
4 h2 t5 `" x x# Y 3.无敌锁定: 暂停后,按上键切换;, Y5 t v0 ~$ f) x! o
4.生命加满: 暂停后,按下键切换;
! V- O+ y/ K6 w( ~ 5.血量锁满: 暂停后,按右键切换;' ~: e9 |& S4 U4 {/ `
    1 U& n B9 D6 q- @2 U
. m/ r4 Y- l( O
FlameCyclone.ys168.com
9 J k w: Y% kwww.nesbbs.com
2 H" w/ k5 b8 \- E, t" x/ a
% ]+ n0 A7 y e7 o |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
2
查看全部评分
-
|