|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 & ]9 U2 \, Z. K( ~) V* C4 I
9 Y% A. c. q2 `[FC][忍者神龟2][END选关]
& f/ F$ c" F: h# x
/ I% t. C% s$ m, s时间:2017.3.31
% y; e! p1 {! Y" R/ m$ u8 o! n* V作者:FlameCyclone- .ORG $B9E09 M$ {+ Q! b) \2 w& a ]- \* d; \5 D
- ora_data:
8 V! m% _5 w% H: D - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
3 D0 \ g6 y3 @+ E& W7 b2 E2 T - and_data:
& E8 }$ I, X' W( Z: x* d - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF# V# b7 w. \+ N! C7 `/ D/ r2 o
- " I! c" w" A% x7 ?# v
- button = $F8
7 d. j$ m" W/ i - flag = $6000! c. g+ N$ G. F$ |% v7 K* V
- pause = $3D
5 {+ H( z; A% I
& Q- B2 H) e# f! R8 j0 N H8 @- .org $BA00. l- }" j4 a- V2 X& N# G# \
- & R* u' I4 H R4 p; f
- PHA! g% _9 u j( [, Y% p0 S9 G
- TXA
+ @* e# q; l. Q! M* K( o/ ~( b - PHA
; a; }/ q& ]- K6 _9 Z1 _: u5 G, K/ C - TYA
, x7 Z/ H* R3 A - PHA4 T Y4 V" b: `( p
- JSR KEY_OPERATE
" ~6 w: f+ x! u - JSR INV( r* Q5 R( {& A: \6 Z! ^
- JSR LIFE% |5 c5 F' _0 C3 d/ V* P
- JSR BLOOD P/ Q$ C" o2 {5 P5 z
- PLA; c3 {7 Q& ?: d5 s
- TAY0 u4 r! ]4 C6 }
- PLA* }; Q' g) C" y2 E
- TAX) d% C0 G. R8 N5 @" t. m1 E
- PLA
/ Q; A) }% _; K, T! s7 ? - RTS5 H- R, U$ E, ?7 z0 e
- KEY_OPERATE:
6 i( B" v z2 Y$ L& f - data_protect:1 C' K' X% p: w0 U: V: p" P
- PHA5 R, [7 \) i T {, J$ j
- TXA; r1 d9 c6 N( X1 ~& _: _. v5 [6 B
- PHA
8 t0 L( D2 a% B% h$ _; v3 e8 m - TYA
- b6 D |# q6 r5 ^" k; Y! B - PHA
, u, t) z7 `. n! S+ J% k3 k* d
) I+ r; j1 w) A# }$ v- FLAG_CMP:% J5 k* S5 F, ?) M7 J
- LDA $600F
, y* j: ?) k% D6 Z+ n - CMP #$7F ;标志数据初始化条件判断
0 ~9 m: T" y3 i+ C; ? - BEQ pause_cmp) v4 k2 M5 C6 B
- LDA #$80
, p2 q1 a2 ]7 d) U - STA $A001 ;6000-7FFF写入启用
5 V1 M( a9 t8 I5 a9 D5 |3 `9 G - LDA #$002 p1 p7 W7 s& {4 a1 D3 C5 ?
- STA $6000 ;数据初始化& Q. l; ^2 u! n+ X, \, K. a
- STA $6001 ;数据初始化
& ^* u z5 C. u/ |9 ^" W - LDA #$7F2 D, H) D; `8 y0 d ~5 C3 M
- STA $600F7 j7 ^* A4 X; q/ ^- i( v2 R( T0 u% K
- pause_cmp:
! H2 f) d x- {- A - LDA pause( B0 [( [( _6 [4 y: O% R# y
- CMP #$01
5 _" r. V; B* s2 N' k( `5 Z - BEQ button_press& v* U. ?2 T7 e
- PLA
3 {, Y& r+ Z- y2 G- j2 `: y3 p5 b, Z - TAY
9 J3 {5 G, |, ] t- n - PLA
( G2 f9 j7 I0 _9 g/ P7 n6 D- Y - TAX
1 I/ E7 W, P0 X# R( u - PLA7 P% t+ ]+ ~% b7 p) O& g
- RTS
0 N' N" O. L4 i! a, P. E - 5 m8 b; P8 x# p& k4 R
- button_press:) h/ e$ j( H' `! r
- ini_Y:* L+ o% U! W2 r3 w( a; Q
- LDY #$00
8 |, I) m Y( E/ ~: c - button_cmp:
8 H8 p2 W2 Q2 L5 Q6 D7 g( X6 P - LDA button,X6 E3 t+ I3 w% W3 p( F
- CMP ora_data,Y) W& q' v I2 {2 Z+ A
- BNE count_Y_cmp) J# y$ Z0 M5 t6 V! e0 M: O
- flag_cmp:
5 K" B0 g$ L1 w( n- e/ _5 Z0 o$ } - LDA flag,X
1 ]' }9 q, t3 c6 I - AND ora_data,Y
7 d8 ~# J; j" c0 g" u2 H8 `; q - BNE flag_and3 b: A2 n3 V0 ]/ j+ O! C R
- flag_ora:
1 v1 i( Q9 j$ t+ ^2 N7 n - LDA flag,X
) M" a- I! w" C& {; d( b! z, Q( B - ORA ora_data,Y
' \. `: g9 G) [8 F8 x/ @! f - STA flag,X4 ^9 c3 ?' w! T5 E. m0 o
- BNE count_Y_cmp
) ^/ a& S+ E& q) @ - flag_and:6 p- _( E1 [2 W8 ]( ^3 w
- LDA flag,X
! n7 B1 e {" F' `! { - AND and_data,Y
6 Z+ x! }( R' K" v! b& j: P - STA flag,X: F* P' `& l- o$ i6 n
- count_Y_cmp:
: x; _( \3 P- Q2 ?6 b% n; c& O - INY
- @9 g' P& ~# ~4 E) U - CPY #$08
: D$ }! |5 W( A, k - BCC button_cmp# z5 J% }4 P& v' ~
- 0 r1 G8 i3 Z. O1 a
- data_extract:$ i- C3 {* l# m0 p# |( t, i
- PLA+ }* b) J0 W0 E0 F/ q5 I4 L
- TAY1 c: o: E& z, I6 h& ~4 A
- PLA
* d) N6 G; G) a+ {1 t/ p - TAX% W6 U! l; _: y" ?- D* @/ N
- PLA
; b. l- O1 ` w3 Y0 F; o) w: \ -
, z- T; X/ |3 ~4 N( r. {! ~ - return:) E/ W6 X8 [' I4 |- e, l" B
- RTS) P, {9 F9 O5 L
-
, M: p1 Q: K2 D ` -
2 R" ?9 m& Y0 X5 J: o2 I% e - INV: ;无敌
% b" t/ G# B7 z2 o# A - LDA $6000,X$ e0 k7 J' d+ e0 [7 C( E+ e) b
- AND #$08
) m$ l, b7 Z, i7 H j - BEQ INV_RTS! \; n5 ?& X0 M9 O3 U0 V2 Q+ u
- LDA #$05
! L. G9 U- |' W* q$ { - STA $93,X( R4 J, x0 r$ `) V1 Y/ Z
- INV_RTS:
/ R; s3 _1 Y0 y# z - RTS
l8 W' t' L6 G
3 u2 J s( m. M0 d- + _1 v; U0 s7 g6 k
- LIFE: ;生命$ h% y2 d! C' A, x* w# l! P1 D1 \
- LDA $6000,X: m6 F, Z" r, f, m3 a6 e6 P* p* Y; o+ P
- AND #$04
$ ~, H( Q4 |8 N/ { - BEQ LIFE_RTS
" o% {* t* n! T. R: P - LDA #$09
2 s- X# @$ D, I; |$ X. u - STA $4D,X G0 y' f7 I B: \
- LIFE_RTS:% H# x: D) M2 }6 P1 t
- RTS
8 P% W1 v3 A A) D% `/ n( X
9 V: x; x; p9 @/ I- 7 d7 ]4 o! @9 p- y
- BLOOD: ;血量) @! Q; S, e' E, j4 U# u
- LDA $6000,X% t T+ a9 Q: G0 t
- AND #$01: [: o7 w, u2 f, |1 D+ z
- BEQ BLOOD_RTS5 P2 P$ @* D! ^; J4 U
- LDA #$388 ^+ O6 c. c: U) d6 q7 h4 A$ Y* j
- STA $0568,X3 l; a* t- P9 g
- BLOOD_RTS:# w/ ^# P: E5 c0 ^( d" K% }) j
- RTS
- `: _ I( o1 J! Z$ X+ @1 ~ - $ ~9 Q4 Y3 @' G# v) X
- + B( |+ `2 ~3 M0 G6 y9 f
- .ORG $FEFE- }% y* ~# e' q& Y4 x, @6 x
- JSR $FF605 E: c0 l$ X( c$ m$ {: D
- NOP
# K/ q2 o4 U+ ` - ; e( C% |6 W. g1 C; V, w
- .ORG $FF60
0 p& p* A( s! U+ K( N' u - STA $F8,X
) c5 v! H* |: U W - STY $3A,X
* d9 x5 I/ a9 d: X, { - PHA9 U; f1 w& Z1 r
- TXA- ~& X% h& |' i: K
- PHA- u5 j& g* u- j+ E) r
- TYA# P* ]8 y1 P$ @7 f2 U2 u; q% m' V5 X
- PHA
7 X5 G7 d4 Q/ c& ` - LDA #$02# \1 ]; i; m7 D D* ]& b
- JSR $DB11 ;调用系统切页4 x8 l" Y7 m7 T% u+ B9 ~0 Q
- PLA
; Z& S$ z+ v: K+ m% j( f& c2 ?" K: K+ u - TAY
+ K4 B% m1 K& G7 {0 ^ - PLA& B. n% _( N! h6 j& o+ N: a
- TAX! ?& C8 `, M1 I% v0 f* b
- PLA
) ~$ }' U- C( @) ?6 H - JSR $BA00
$ M8 Q. [& }4 o- i6 l) z0 ^8 E - RTS . t! Q6 o# }9 l( E
2 t$ F; O. x8 @! K4 l! H/ j- H- ;[FC][忍者神龟PPU][END]
- c/ R# F; ^0 B: [( T( w
& k5 O6 [# j: e y; M: Z- .ORG $BC00 L4 X9 J& K: M& Y- m5 _4 ]$ M! j
- 0 u7 F4 G" d) I9 g
- STY $4014 ;补上覆盖的精灵写入指令
8 D I# m4 D' b7 K) z# B/ u - PHA
9 Z/ n1 v: D; G o+ q: o - TXA
# e) L# u' ^# f6 v# @' y7 u - PHA z# @2 s5 k# n
- TYA
4 q" U# d$ j1 w; W* F - PHA" h3 y- {4 y9 Q# D5 x0 b
- LDA $018
; k; a. C" d7 |/ | - CMP #$01 ;比较是否为标题画面
/ b9 r5 P/ y; x- s$ v - BNE RET
9 d' T2 n7 }* p Z - LDA $019+ Y* `, ]: }" J1 r8 }0 Q, B
- CMP #$01 ;比较是否为标题画面: U) q1 ?+ k, o% a
- BEQ PPU_STAGE
@% J) i' b- p* u0 q N/ Q" N - RET:
1 B" q9 L7 y" b* V: \7 T/ z - PLA$ y; T m7 N9 r
- TAY; p5 D6 d) B, l
- PLA
8 ~) w: D" u% N - TAX- i( s7 Y; Z+ x' \
- PLA
* M6 k8 f" C" J+ c; G: j - RTS
7 m9 Q, X: e; o( S. j) ? - PPU_STAGE: ;STAGE显示程序: o% P/ ]( ]0 P- i" }
- LDA PPU_ADDR_DATA& u4 j! B. p" H9 t& n
- STA $2006
8 P% d5 J) ~* D- a" g2 ]4 l, P0 ^# B - LDA PPU_ADDR_DATA+18 Z$ r/ Y. y- Z; |; O2 m
- STA $2006 ;坐标设置, O6 l0 v/ g4 p8 v4 J1 @
- LDX #$00
7 m3 C/ A+ P3 [8 B4 I- d& ^ - PPU_STAGE_WROTE: ;写入STAGE字模
: r9 v- Z/ f( m( p' F - LDA STAGE_DATA,X
# x9 F9 u, U% x% z* r3 l9 M6 S - CMP #$FF' g! M5 Z) `# _: l3 }4 l$ b1 c/ ?& P g
- BEQ STAGE_CMP5 `) B, l' \1 K
- STA $20071 H: `/ D E1 o% r5 y
- INX! a. r: J0 Z! l4 ]4 N
- BCC PPU_STAGE_WROTE
' l$ B2 o8 m, ~. f; ~6 m7 a( ]/ [ - STAGE_CMP:
4 f& ^7 k, ?# O$ w1 k; e! e" @ - LDA $60101 d2 u( ~: ~8 A- e: t3 S2 i
- CMP #$FF ;关卡数据初始化条件判断
" i! c3 T( w1 w. y" q( m7 s - BNE KEY_B
3 ], {; B* r* r - LDA #$00
5 O% S1 i8 U! r# j p - STA $6010 ;关卡数据初始化 ~( W8 j, V0 ^. H
- KEY_B: ;关卡减少
& `% q! v5 g- q - LDA $F8
7 B/ ^; c3 s+ v, i - AND #$42 ;按键B或左减关
' R4 @# ?0 P6 A6 E - BEQ KEY_A
7 n7 w' K6 o; ~+ r0 W; V# H - LDA #$FF
% W- s; ~- u! c) Z7 @" v - STA $405 J! G* ^ I/ G" c) H
- LDA $60108 T7 |; a* h* O
- CMP #$00 ;关卡比较
, ~4 N1 j \$ y K2 k, q - BEQ KEY_A; Q5 v6 S7 v3 j, O' W8 k3 i( v3 H
- DEC $6010 ;减关
0 }! }- A) C# \% X' y, G - LDA #$574 v. d% j d! L7 ?/ ~! q* u
- JSR $DB52 ;按键音效
, p# O' B6 _% w7 F1 N - KEY_A: ;关卡增加
( J0 R- M% [2 C/ d G - LDA $F8
0 Z5 J8 X6 Z, d; i( w' X4 j" P - AND #$81 ;按键A或右加关
& H( Q6 q+ V* T* `3 J3 K' s - BEQ PPU_NUM_WRITE
" j0 V2 G8 d0 U/ K. z+ k - LDA #$FF
' U: e( W; I+ E+ J c: d3 e1 ^ - STA $40$ m( D3 ~7 ]$ f2 X9 l
- LDA $6010
' Q$ i; {6 V5 K: X& `2 _ - CMP #$0B ;关卡比较
2 g& ]/ ?( M2 f# q: v& T - BEQ PPU_NUM_WRITE: Y% ]( {2 O7 b2 c, s# g$ ^
- INC $6010 ;加关
7 u! U# I& E2 N/ O3 u( a" G - LDA #$57
: @' Z( X$ a0 o, y - JSR $DB52 ;按键音效* B# |5 F0 D# X9 u8 o
- PPU_NUM_WRITE:
8 r: b% C6 J+ q( m8 l& V - LDA PPU_ADDR_DATA, | B' ]& P# h0 h W3 T- C: S2 b
- STA $2006
/ {/ n* V) F4 h8 X+ Y" |9 u- ` - LDA PPU_ADDR_DATA+1
3 j) M4 M, g* l/ p9 J- r - CLC3 G9 R H, Y3 {0 r5 F) e
- ADC #$06
! d3 l: C* _* M7 L - STA $2006 ;坐标设置
% W% w2 f* J0 O- Z) F - LDA $6010
0 D6 w% F; q. S" ^6 d% r7 O- X - TAX. A5 m1 J, s. }2 J# p
- LDA STAGE_D1,X ;写入数字; [! ^' W% M+ Y; b# v
- STA $2007
! \7 b* }5 r1 N" G/ L5 U5 { - LDA PPU_ADDR_DATA" F3 e9 v6 @$ I5 J
- STA $2006
( m2 f' F" f5 B - LDA PPU_ADDR_DATA+1, Y4 B! p% t" N$ z! i5 d' T
- CLC
6 U2 q o! v8 b; a - ADC #$0B. J; ]5 ?4 M" t; z' [/ V
- STA $2006 ;坐标设置1 o$ i+ r% p( \& ~. o0 t$ v* n
- LDA $6010
4 n/ g2 n" P& S0 J6 h- | - TAX9 R. u k* e) x1 c: y4 t, C
- LDA STAGE_D2,X ;写入数字
8 G' f, F+ P5 p% z1 b6 u9 \ - STA $2007" |4 ~- G" e) L! ~' p2 t c
- STAHE_WRITE:5 }0 p, p. i* o+ _: e n
- LDA $60101 L/ `: k8 p8 [# ]! h" E ?% Q: i
- STA $42 ;初始关卡写入6 j& Q% r/ _8 I3 C7 Y3 D+ v
- PPU_RTS:3 d9 _5 f" Y3 Y% {- A+ J
- PLA/ r" c9 A ~7 J* x7 a- _6 g F% ^
- TAY; B( l! ^; a! Q2 `+ g1 k
- PLA
( N& i% Y C+ ^ j$ I! d - TAX
c, H7 @4 U2 K - PLA
: r6 z. |' d: p/ K/ J# G - RTS& w: P8 o. |, g; E
- 5 c9 I& W: U" j& b
- * ] i/ O5 \: L, S! p: {' P
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据) J7 I" H2 g/ _3 B
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
9 v# n/ {1 Y. Z, M3 g* n1 e- ~ - 4 `- |; N$ L6 ~' p, t( Y
- STAGE_D1: ;关卡数字$ U$ ~/ j1 {5 T7 B& s
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$080 z% L5 F/ I) }# o4 l* o
' s4 E' ^ n o% I$ ?8 l- STAGE_D2: ;场景数字
g s' `' {; x - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03. |$ V/ a. u2 Q* r$ {( n: t6 j4 n
- 2 a- |8 K& y, U d6 @7 I4 _
- PPU_ADDR_DATA:* q9 o- d6 S2 r/ X% g8 Q
- .BYTE $23,$4B6 ~8 x* x" E+ k2 H. ]* C* P% J0 i
- 4 v& V' k& }) _5 {) ]% |
" Z- h- U, T, A
4 r4 G$ {: H' X0 A0 E6 _ N3 @6 P- 9 C! ~; y1 T5 K3 N" x( O
- : J) b3 S: [: }* y& o: p) ]
- .ORG $FE21 : q0 ~- F) I j/ q
- JSR $FF40
& U% [( H' `" i- { -
8 r7 }% J" `0 l( f - .ORG $FF40
3 U2 B4 |. I. B( w$ \# f - LDA $BCDF
) e% \4 }! H( h7 E- ]* H' p; S - CMP #$7F& f( `$ F. f6 }1 y6 _: D
- BNE ADDRFF561 P' ]$ D8 x4 ~( {# V
- LDA $0018( q# a( F. B( \
- CMP #$04
( K: [! ?: ?9 H1 g- F! }* R - BNE $FF528 `. U% M4 ^* R. G8 j3 @3 f6 ^8 K+ [
- LDA $6010
6 Q# M7 f" R2 w* a+ j5 y3 T - STA $0042% O% M: T$ [0 u V! k; O: V
- JSR $BC00
% e" i- f& {- J - RTS1 n* o9 L2 W: c/ l- ^& P
- ADDRFF56: - x; P: F4 \. j; ^% K
- STY $4014% N" N. {' U6 \" ?4 H' ~
- RTS
8 t3 b! y. n1 r -
- C3 _) l5 p v
复制代码 内容:
" L' ^) N7 l. {, C 1.关卡选择: 标题时,左或B减,右或A加;
4 Q! b8 x8 I6 R5 M; y/ A 2.一击必杀: 暂停后,按B键切换;
7 |5 \4 C" s# L' W" b' h: z9 E( B 3.无敌锁定: 暂停后,按上键切换;" \4 b; |! L& m2 l5 r) K ?
4.生命加满: 暂停后,按下键切换;
" t; G8 [% R! f4 z# g: `3 U 5.血量锁满: 暂停后,按右键切换;
) l( S C! s" l9 q& y    
7 v- _ c, P! ~: G3 j6 v# O# h( R7 I3 P, _2 N8 r# {" B
FlameCyclone.ys168.com
; ]/ x/ U" D9 q# r8 [4 y8 Fwww.nesbbs.com9 i6 P! |6 h' m. \' f" P+ U8 g+ L
' V. u) u9 `0 I
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|