|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
( h# ^! y5 m* f
w; V% y3 a) S# B[FC][忍者神龟2][END选关]1 k( b! S f+ A. i) K1 N, U4 ?
" t( Z. I; N! Z( r& @
时间:2017.3.316 L" A* O* Y% d6 H5 Z
作者:FlameCyclone- .ORG $B9E0- Y) J/ N- [5 ?2 i* ]
- ora_data:
& w+ G3 z! \+ @+ V. B - .BYTE $08,$04,$02,$01,$80,$40,$20,$107 n6 ]9 L- T" ~! r3 ^# X
- and_data:
K: M: W2 |; I7 c9 ?5 g; m - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
8 G3 B; F- T: g3 S5 e5 ]( ~) X -
3 _% a2 [1 E, I# e6 O) j: t - button = $F8
- R. `5 G. t- m) W - flag = $6000
( Q8 v. F7 t3 k# n. p+ N8 T - pause = $3D
* v7 n" U, l8 ?8 G - & k' {- `: ~, q+ T. t
- .org $BA00
0 @6 w9 c2 f" E1 ~9 ~/ T
( M' a0 l% t. y# f+ E4 t- PHA
4 B, L9 S, b- M2 I- ?0 p - TXA! l V, u: q/ o" u$ s* w2 n
- PHA$ Z6 l7 a4 _* i% r
- TYA
6 N0 L8 J, q- R; e h - PHA
2 i+ N! i/ k% |$ S1 R4 j1 w - JSR KEY_OPERATE9 _/ e4 Z: ?& g& v; L7 O
- JSR INV0 d3 O, Y6 O! I: j8 D1 x4 u
- JSR LIFE1 X1 N6 F( u) l2 d+ K% ?
- JSR BLOOD
8 b" Z5 M2 o2 s9 m - PLA
4 _& S' t1 `6 V4 i4 N# d - TAY
# k3 j3 ~$ Q3 F6 a - PLA
2 ^' V o. I: l+ `$ B. l. ?$ C$ x: E - TAX' n4 i8 I5 F$ t0 } O
- PLA0 c0 g1 i) A: B
- RTS! z) d4 v4 Z% H2 l: ~! g
- KEY_OPERATE:6 x& C, z6 z' v' n0 m, ^
- data_protect:
7 U1 \( o7 i* ?% e/ \7 e; s- u3 U - PHA
7 I1 E0 t1 w3 H- ]8 S - TXA
! ^$ q6 ^) q. R" x+ ?. K5 v - PHA
+ F- b, R/ z4 k2 r4 i# K; [ - TYA- M3 l. f: u4 s! u( M9 V a- ^1 v7 T
- PHA! Z+ p: V1 ~% t0 P; Q4 N
- V+ \9 L6 H% }+ P# l
- FLAG_CMP:; _2 L8 p; @4 g: d
- LDA $600F: [' K2 P# B, l" H' r6 S
- CMP #$7F ;标志数据初始化条件判断
: T; w, |" J- H; L" _ c( ? - BEQ pause_cmp
0 ]8 ]! y; B: E' g9 m - LDA #$80) i) `" A2 B) r7 w- _$ Y1 Z
- STA $A001 ;6000-7FFF写入启用8 U: b6 }* a/ e3 n( T: Z: X2 w
- LDA #$00, e- `5 w1 X4 r/ N& V. _- o
- STA $6000 ;数据初始化
( W5 x& ~( R0 Z4 ` - STA $6001 ;数据初始化
% @7 o |% K* ~" G$ z* I - LDA #$7F$ ^0 S& j5 b6 a$ |, ?4 K
- STA $600F2 Q' V4 I) _/ a5 k' T- k
- pause_cmp:' c4 C7 u9 X6 N. k7 q/ a9 Y. X
- LDA pause
" a* B: d" V. @& j- h# q$ M4 h - CMP #$014 z- b' F9 P# }6 J
- BEQ button_press
, A/ ~% i( J* Q8 L - PLA
- b& {) ^- s, _$ L. p+ I - TAY
5 ^, H5 ?/ e, m; J - PLA
: A5 T" T% r/ X! [# N% \! \ - TAX
1 l% M0 l a9 F2 Q - PLA& o6 T' _/ X- g
- RTS( g# l8 Y+ c- F C
- T: k$ \% W" G% z
- button_press:
" e& i' c& f2 G) p, \ - ini_Y:
/ ]) U% o+ K2 J* ?2 ` - LDY #$00& k# U0 a E* r
- button_cmp:0 C6 B6 Q1 p0 |( E& O
- LDA button,X
) t9 U t: c1 X8 j' i4 i& ~ - CMP ora_data,Y' }/ ?) d- ]! U& W1 }0 z
- BNE count_Y_cmp R/ j. d5 K9 n7 e/ S, N" w2 Z
- flag_cmp:" r$ E. c. _6 S6 k$ {
- LDA flag,X3 ^9 { A, Z7 L
- AND ora_data,Y
& A1 ]5 C( y3 W# g% S! s4 U - BNE flag_and
7 G4 U; b6 r& F5 W: M - flag_ora:/ \9 a0 ~% m5 O9 J3 z' U m% a
- LDA flag,X5 Y& Q/ y0 E. y# B( u- D
- ORA ora_data,Y% x3 }3 H( X% J$ U7 i5 {
- STA flag,X
8 g% T/ j- N7 O! E7 L - BNE count_Y_cmp; B* K. d9 H7 V1 d2 d6 n1 {
- flag_and:, ?0 m0 {6 \1 A; B) ]. o% S% @; H
- LDA flag,X6 K4 m2 ~. Q# ^3 e1 w0 M/ m' o% q
- AND and_data,Y
0 m9 x$ o5 x2 Q4 N# R) Y - STA flag,X% H$ _; t/ b( A5 {5 t1 G
- count_Y_cmp:
+ s! G" N$ Z0 M# h" v. @ - INY6 Y. A( {! D9 i8 Z9 `
- CPY #$087 H) o2 G9 ~6 G# w: p' s& x
- BCC button_cmp9 ^% c2 O2 g: o4 u, L' _
-
1 _8 ]7 n. O# G! r$ L1 \ - data_extract:, ^0 s8 [# z) t
- PLA. _. |" V! Z6 @ G, X0 K- U
- TAY
1 _- i( q+ X7 T - PLA ]4 |, @6 x- Q
- TAX
6 _" M' y, U0 q - PLA5 w$ H$ Z0 A% y( r$ D
- 7 e$ d3 r7 m h9 G/ n
- return:9 l0 Z- g0 r- [1 {' u, v3 s
- RTS
( ?! C$ L0 c; S- t( V8 Z$ g -
7 ^' ?8 F. J( }2 { -
8 u5 g9 S) ]( [ - INV: ;无敌- N. X( |6 Q! s" I( `5 b4 P6 p, B
- LDA $6000,X4 U9 q. t7 }; b: H
- AND #$080 n0 S# ?3 ^) e7 l5 q& C
- BEQ INV_RTS
# g0 H; p, Y, `# n - LDA #$05. Z0 ^. \, A( P% p4 q2 c
- STA $93,X6 B' W0 a% f8 u' h" u7 T& H
- INV_RTS:
; h& y" |* b" R - RTS
0 w. x: t- Q4 n* a" I( E - : E% Q4 ~- P, F
- 8 T+ p- M" R* p' s6 ~; T% q( J# O$ t
- LIFE: ;生命
: n9 z$ E' f5 R; X5 k1 n" V# i - LDA $6000,X
( O S$ u( L/ s - AND #$04. i. B! U2 Q: M" a( H; ?
- BEQ LIFE_RTS
7 }, `5 u8 E. @1 V" P - LDA #$09
1 A) d, X/ x0 Y7 t) g# \$ e0 A - STA $4D,X/ \' G8 [. V' R& }/ x
- LIFE_RTS:
7 _( J) F0 `6 L - RTS' }1 R# D! V% \5 n; y) i1 {% l( ^
+ Z6 x) F2 G4 s& b7 u- 1 a$ } K* E* m, W1 r8 _) y
- BLOOD: ;血量1 ?8 I+ A9 R2 b
- LDA $6000,X7 F5 S- s8 ~& {( s
- AND #$01- z+ ~( u+ P' \9 p7 y1 c1 i4 x5 u
- BEQ BLOOD_RTS
/ w% B3 a2 s; R4 t- k2 x" A% D O" q0 @ - LDA #$38
8 Y. Q7 M; W& Z1 K - STA $0568,X# S3 p* k+ H* i2 T) {
- BLOOD_RTS:
/ r+ g' p$ D; ]" B; l3 s9 m - RTS
2 b% u, R& }: P9 i5 L) i - 0 V' S& J) f/ v( i2 n
-
/ M( w/ k6 Y' A2 j! Z - .ORG $FEFE
/ U0 g( v+ d% A& T9 a4 u% |9 o. X - JSR $FF60! G' _+ I {: Q+ X( L2 @( r
- NOP
7 @$ t5 r- `2 @& h: h% s$ ~8 z4 o - 7 K) K2 a" x1 Q' k' H
- .ORG $FF605 j# ] m0 K& `+ g6 v3 s
- STA $F8,X: C$ P3 R; Z& s
- STY $3A,X& u7 R5 J$ G5 D- ]# ~
- PHA0 s5 L# R% r, \8 d" t4 j
- TXA
; Z( P# P7 a m5 n - PHA4 J# O, W0 w& ~% q8 x. r8 P
- TYA
" w+ \% p9 ?" r, m - PHA
0 @8 s* f q0 u9 _; C - LDA #$02
8 P7 t4 e9 B1 U0 F1 a# _* Q - JSR $DB11 ;调用系统切页" {* k( `$ g3 G
- PLA
% ?9 N3 {* w$ O7 \1 ]# Q - TAY
7 V# a p, C& X7 k - PLA1 g' H4 g. S2 B/ s/ a: B( V
- TAX4 p5 ?; r* J6 Y$ a2 M2 R* C7 l. }
- PLA' ^+ l. ]8 u; i! N% \7 ?
- JSR $BA00
# o# _+ {: y/ |% Y X* D( O9 r - RTS 5 e2 A( ]+ ~7 ?5 ^0 @
2 f( f- R+ T8 ?$ ^6 h$ z% \6 b% i- ;[FC][忍者神龟PPU][END]) T- L3 C# o* Z5 _' `' a
- + z8 r/ J: r2 [( n/ p4 h
- .ORG $BC00
: v9 w8 V. E, f. U& u- K5 x& k' l -
* o' N9 X! M7 v. j$ D& [. ~ - STY $4014 ;补上覆盖的精灵写入指令
2 K! g: G; c3 y+ q7 p3 N c8 [4 o - PHA1 q3 V% V8 v) n0 X. u% w# i% V% W
- TXA9 U8 T! s3 K3 L: y$ f! {1 E. H
- PHA
6 D- R# a6 F5 q& b' K, C3 l0 b5 e - TYA
/ z a3 L. k5 F9 @8 V7 [& R X - PHA
- n9 M/ p9 ^/ [ - LDA $018( @! @! g: A6 l% [+ E, N! p
- CMP #$01 ;比较是否为标题画面+ j; H0 E J( N& u8 m* w4 n* u
- BNE RET
4 Y7 y8 b0 V9 @: Y) {. { - LDA $0193 K- f( \, y/ ` W4 x5 R# `2 o. y
- CMP #$01 ;比较是否为标题画面
6 ^- x& q, z" J. n; T - BEQ PPU_STAGE( w8 U0 h$ y' v% G% ~6 |' Z' N
- RET:
: E" T. L' r. U5 x4 N - PLA
. u+ w1 w$ @, w/ A/ @/ c - TAY" J+ N! Z' B- T/ q7 }: w
- PLA) k! u! y/ W! Q/ A5 @- j
- TAX$ J, [- Q* |* ]1 F) Q
- PLA% q2 q( p9 U3 ?; M8 L6 E$ z: H% \' ^4 B& ?* @
- RTS! e; U) U8 S2 Q: |( w, R+ e
- PPU_STAGE: ;STAGE显示程序6 Z1 E# w7 D6 v+ \& q
- LDA PPU_ADDR_DATA. F' j% P( H H
- STA $20065 i1 J0 @7 x/ n+ [
- LDA PPU_ADDR_DATA+1
4 n+ W7 A4 P. T - STA $2006 ;坐标设置
* |! T) C" _: z V# V7 C& a - LDX #$007 [. F* k {1 E
- PPU_STAGE_WROTE: ;写入STAGE字模 j1 Q- L* ?# V$ C2 ?* j/ v+ C
- LDA STAGE_DATA,X
- C R, I1 m9 r, t/ l - CMP #$FF
: l8 q8 A8 } V" M0 C) i) [5 ^) N6 { - BEQ STAGE_CMP" e* h% a G, | u% a5 m+ A
- STA $2007
$ l: X5 L/ b8 C" C& w - INX
5 K+ G. [! s0 B, ]3 n+ ~' N7 R - BCC PPU_STAGE_WROTE! K4 u3 j$ l; h) q
- STAGE_CMP:) h4 l; a) g2 d* Z! ~
- LDA $6010& I9 |) `4 w; V. i2 E; ^' y) `9 T
- CMP #$FF ;关卡数据初始化条件判断
. E# Q, y4 B9 G$ m - BNE KEY_B
/ ~/ h$ Y& D0 H+ h - LDA #$00/ U) U* L1 Y L- q& x+ }' f {# w7 \
- STA $6010 ;关卡数据初始化
) d- R5 k) }$ C7 w9 g2 _; v) r - KEY_B: ;关卡减少/ L% ?0 ^# o* H5 _# C4 F" i G/ ~" j1 ?
- LDA $F8
. t' T/ y; |. j/ t - AND #$42 ;按键B或左减关
& k/ c7 E! Z2 Z/ Z: d# g - BEQ KEY_A" s( k8 C+ [* H
- LDA #$FF
' _ H; o) R- ]+ o% C - STA $40
1 U% I; T5 t$ `& g) x! W - LDA $6010
2 I. ^- Z5 ]1 V9 P$ n6 S: H5 g2 t - CMP #$00 ;关卡比较
, C* N3 {' \5 ^" i& q3 B - BEQ KEY_A: A; B6 e5 n) P' n5 [8 V
- DEC $6010 ;减关. i" b: A/ x1 I! C) w
- LDA #$57
4 Y0 X/ I$ ]0 X8 n/ D0 q" @; \ - JSR $DB52 ;按键音效
, F! c3 R1 c9 {3 G* n - KEY_A: ;关卡增加3 x# M& K) h+ u9 _* J) f. _, Y
- LDA $F8
( I+ E% z$ Q7 t/ G& Q# w - AND #$81 ;按键A或右加关3 \6 s: ~- _* ^; @
- BEQ PPU_NUM_WRITE5 M- }( w" X3 Y, v7 g/ m
- LDA #$FF( C4 E2 P2 N7 E, H9 W# F! f
- STA $40
- b3 k2 u3 ~, f. Y' } - LDA $6010# C- a& Y1 J: r* C4 m" ]
- CMP #$0B ;关卡比较
' }! q, J! M1 t& `3 N- c - BEQ PPU_NUM_WRITE. E8 W9 q4 h) i
- INC $6010 ;加关
7 b o0 i4 {( D, q$ ?( s# e - LDA #$57# X! w/ W. f1 I' ]4 i! L& w
- JSR $DB52 ;按键音效
& F9 X& `# J7 y- ^7 l1 W* Y+ J. E - PPU_NUM_WRITE:7 N9 k( g2 }4 F4 I( f
- LDA PPU_ADDR_DATA4 l F8 k% F# [$ ~% i( M8 E z
- STA $2006
- G2 ^" a% y. Y4 o - LDA PPU_ADDR_DATA+1; f# ^6 y% @; }( O6 ?
- CLC1 b* T; t: a+ A3 Y l1 `5 N( N/ x- n
- ADC #$06
" n# E: i" b I! v7 Y O - STA $2006 ;坐标设置2 a1 R2 ]& V% J/ v2 f
- LDA $6010
# b+ j' J4 f" `2 t' `2 j. E - TAX, t" o" w% d6 J$ ^) N
- LDA STAGE_D1,X ;写入数字
5 ]/ m2 b9 X- H1 g - STA $20079 p' p. N4 K+ y. |" N$ A% r
- LDA PPU_ADDR_DATA0 v0 d. J3 T% e9 m/ c' G
- STA $20069 { t* W- i% [2 r6 t% G! p
- LDA PPU_ADDR_DATA+1* W- w0 x6 {! W2 m! T
- CLC( q* U& E! c% T; L. v
- ADC #$0B
: x4 m& B; Y |$ n. H$ k - STA $2006 ;坐标设置
! D8 n* Y9 Y3 U3 Y - LDA $6010
2 Y" P/ K% w9 a4 Q1 N - TAX
4 m8 e: i' g8 l: T$ R1 { - LDA STAGE_D2,X ;写入数字
- p* A5 n5 W& Y: R$ c1 j8 h - STA $2007; j) j, u+ R+ X+ p6 D- L5 O3 }
- STAHE_WRITE:
8 O' q) v- A- |/ r6 X - LDA $6010- k5 u' L; |2 E) o/ P" p8 v7 v9 D
- STA $42 ;初始关卡写入
P1 B3 c- c( ^, R) @* ` - PPU_RTS:
& y) k8 M1 ^- {( _ - PLA' P/ x0 i8 ?% G4 q. N
- TAY
; M D- \$ l0 j# ]2 C$ d- x - PLA
% V5 N" n. W1 U2 G. L% y+ h$ R/ U- E1 M - TAX1 T) p+ y4 { F$ }9 a3 _
- PLA
' I" B7 ?: O( q8 a - RTS. _0 C, {" }4 u$ A# J% }5 X; Q
- / J3 x$ y! u1 y5 _4 Q% e1 q" a
-
" _: J2 L( F! L1 ?- S1 y - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据8 u0 T8 i$ V: C: Q( [
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
$ ~! a& |& D# Z( z - - F, l. o+ \$ f
- STAGE_D1: ;关卡数字
' K$ Z8 h& Z% E0 c5 c b - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$081 y6 {' Z6 _6 ^. i9 U& S6 |
- i& v* H" h* r( E3 b2 m* q, e- STAGE_D2: ;场景数字
0 Z7 {6 J+ O& c2 P- H1 E7 f2 N - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
I4 Z$ b9 E+ y0 ]; L1 ] - " c# C* |. i% N4 e8 L/ j9 t
- PPU_ADDR_DATA:3 m: c; [/ g4 G
- .BYTE $23,$4B1 }( n$ _) [: P* R z# }1 S
-
% P2 D" @2 E: S7 A6 ?, ~/ |' n - % o& t$ U; [" Q
- f1 X1 f* h* R# K) e) U
- ) G+ y% [1 b; Q/ V
4 ~, O9 ^( d( Z( e t1 z" |0 a- .ORG $FE21 1 W, `: N* K( p$ K; U# ?7 b, D0 M& n
- JSR $FF40% |3 @- k+ x/ x% P8 _- O
-
) I3 a& O' v6 |$ r - .ORG $FF40
) U4 E0 b5 L% D# M. k - LDA $BCDF& p3 u% H; i# r
- CMP #$7F5 n2 z: P; ]& k0 h- B r% f
- BNE ADDRFF56
/ w" ]) N. j# W# o - LDA $0018* J2 V; C2 @# H
- CMP #$04' o4 k' }& O: i' B: {
- BNE $FF52
% v* u8 z5 a; D; U+ X - LDA $6010
' z% x$ r4 U9 i1 A2 S3 g* e - STA $0042$ r/ D. n9 b4 p9 X- f2 Q
- JSR $BC00
! L1 ]+ o2 Y; g* X* O - RTS5 z+ f \, k3 v: P
- ADDRFF56:
, {- ^- b' G2 p2 ] - STY $40147 M, g" R% n& @6 c3 p# m# t8 S
- RTS: U; F& K$ `) }( S+ F! h
-
6 H0 | q2 W2 w! C' D
复制代码 内容:. R; S' r G" O, @2 b3 |' _. T
1.关卡选择: 标题时,左或B减,右或A加;; n# H2 h* b& o) K* k
2.一击必杀: 暂停后,按B键切换;
. ~2 Z/ w9 C. R 3.无敌锁定: 暂停后,按上键切换;" R$ L& E/ Q+ v* X& n8 Y* `4 Q- c- e$ P
4.生命加满: 暂停后,按下键切换;
1 w; z% d; D. z$ p 5.血量锁满: 暂停后,按右键切换;% U$ | R/ I) T5 u
    $ u/ u' C0 u/ {; @- V8 |% n
9 }2 l8 B- S3 E* }
FlameCyclone.ys168.com( b5 m6 d% |0 H, X# b
www.nesbbs.com
( m; h7 b2 c6 _) r. [4 X
9 Y9 t7 _! h# f) s; x& H4 M |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|