|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 & ^/ h w! R! F# C3 A
; f. R r% L& j[FC][忍者神龟2][END选关]
. z$ x! B2 }8 V; X! D! {' _' [$ o2 D& v9 Q; C$ G: }8 |
时间:2017.3.31
6 X/ M$ f5 {6 @+ z( z/ ^8 T作者:FlameCyclone- .ORG $B9E0
+ s } m* [( S1 c - ora_data:$ j/ y% m# Z$ c6 s; X. c
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
9 ^; w$ R& `6 _* R* J- I - and_data:
1 K- S6 p' W# Q7 |, r' C* {: W - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
/ M/ D! z/ J; O u) N2 F7 Y3 G -
* Q5 K# \) Z% N - button = $F8
$ x' h) F1 \+ M R: U - flag = $6000
( `* }4 u) Y9 V - pause = $3D1 w, l% V+ h. L/ s1 ^' ^% M
0 `% U' O8 b& r ?4 u7 G: c- .org $BA00( H2 Y2 D: r2 T9 z( j6 V
- 6 z9 \6 g7 V) P5 Y2 h6 [
- PHA
$ f) P; A; c' _" @ K1 y: c1 h5 c - TXA
# _& d5 N( E3 y) ]( z4 x& d; i8 n L - PHA3 }, \% f) X( z9 Z6 D
- TYA5 J2 Z2 W# B" z, J4 T6 u3 v7 ~
- PHA% P: P. r- J& }5 Y$ M$ r
- JSR KEY_OPERATE/ e/ b$ E! B8 O) g
- JSR INV4 R; j" _8 ]# U. t- Q
- JSR LIFE5 Z" K7 d2 p! f. ^
- JSR BLOOD
: |2 y, z0 M$ S0 [ - PLA
1 B: ^3 t8 X+ W/ ?2 c7 ] - TAY
7 M' z1 ]& u- b2 p7 M: ] - PLA
# @3 L3 n$ Y/ P4 m; ~+ R9 e - TAX
5 f+ A- P6 [ t( A" X* M- t& ] - PLA7 ^/ f9 p V7 z! c
- RTS
9 k1 x2 h' j/ h) H - KEY_OPERATE:
5 @ E- e7 j; `- @0 n* U - data_protect:
" v& U Y2 d: @3 u: B - PHA
+ F0 q- x! s1 \! u - TXA( w2 }5 r5 T5 d+ X1 u" s( r* v
- PHA0 V" _; p" K8 M8 q$ M
- TYA
5 _4 X+ o2 ?8 p1 t - PHA
3 F+ f9 _9 ?) D5 h8 ` - ) W5 p- D. V% Q& ]# S# j
- FLAG_CMP:
( j1 z8 ~0 E* l2 s - LDA $600F4 r; U: R- F0 A" V- t+ v
- CMP #$7F ;标志数据初始化条件判断
8 w/ P* d, C: Y/ q - BEQ pause_cmp$ `! y: W1 Y V+ L$ j; Y/ v3 r, [% I
- LDA #$80 [$ X3 Y" o" e7 w V) t0 R3 i a
- STA $A001 ;6000-7FFF写入启用, |$ d: j/ t6 z: P
- LDA #$00( a: l" s% B& p: Z2 b) Q6 j, K. e) `
- STA $6000 ;数据初始化
/ V7 A( k% h3 X - STA $6001 ;数据初始化
) b' ~( S3 t5 T: J" K - LDA #$7F; _, |; m' G7 P3 o
- STA $600F- ?. I& a1 k3 _! m5 ~
- pause_cmp:
; ]# F, c. `2 u3 _* i9 N - LDA pause" X0 K2 m8 |3 P! W1 Q5 Q( U: D7 G
- CMP #$01
" f; T: k2 V4 W B b, j9 h - BEQ button_press4 _% `' ]7 f1 d- t- T
- PLA+ f; t4 S8 _$ v& t2 b
- TAY
0 f) L( u" i8 w - PLA
9 t |# g6 k) C' S - TAX0 }( x5 B/ m/ u/ u0 \5 p
- PLA
7 W7 A* Z$ z4 P3 U8 p I- }5 W - RTS( v6 X% H* g- `: r4 r4 c
- 1 J- U4 N0 b3 m0 c, `9 g2 g5 W
- button_press:# k' {# B |* {% i* I& I
- ini_Y:8 c. j. f( G3 D& h: Y; q1 {3 ^
- LDY #$00
" Z) m0 ]9 @& M& d- O# \" h - button_cmp:) F+ p+ i7 h% v; ], f. Z1 ^+ U
- LDA button,X
, [* j; m4 R; s9 V, _5 L6 I. D F - CMP ora_data,Y1 e: i5 I* P! q" p( ]2 ]3 s
- BNE count_Y_cmp
1 ?6 P0 z5 e" G# Q r - flag_cmp:
& t. Y2 w; I( S* ?2 M - LDA flag,X5 D& B' k7 C7 c+ z \
- AND ora_data,Y$ d/ r" H, k; W' B$ O4 w
- BNE flag_and
% K' O: G" o# N# W7 f1 I. m - flag_ora:) Y0 B% w- U: q) L+ N3 n* N5 x
- LDA flag,X
* t" V R% u$ F* q# u - ORA ora_data,Y6 d# ], L# g) z' {
- STA flag,X/ d% ?4 w$ ]( M, R
- BNE count_Y_cmp, t( e; @- v& W3 J8 x, _$ |" t3 J
- flag_and:
7 d! P' E5 G. H% H4 ^9 v - LDA flag,X
7 z- P; V4 g+ O - AND and_data,Y
! a3 I, @0 I7 Y# G - STA flag,X" o" K7 R$ b- E) S+ B& z" w5 x
- count_Y_cmp:
7 l) D" p4 ^) ~: t* {* L3 R - INY
9 z B/ t6 e* C; q) } - CPY #$08$ X# a; Z- y0 q% a9 M
- BCC button_cmp) `% f8 k/ v7 i0 S; U) a
- . M! ^* g" H% J' ]0 M5 c, x- c
- data_extract:
8 Q- `5 r, L, B; u - PLA- i! g/ {, u- {$ K! F4 T# c; t
- TAY
5 ]- D7 C; V5 Z - PLA
- T" H+ d* p4 Q! `( R - TAX
5 ~+ K8 }( [( e! T; v1 g8 G" F2 ` - PLA
+ }' ~/ ^: f5 n: @6 t5 C - - m1 v4 I" L7 a/ f- D
- return:6 W: M8 _4 w# o O5 O
- RTS
! a& v9 C2 t: e* W1 u! q -
$ a' b0 a$ N7 {" F - + d! a. N4 a% t. f/ t
- INV: ;无敌
; p. A1 n6 ?* E& _4 v: v - LDA $6000,X5 X# M6 N' h2 O; O+ Y/ y1 V
- AND #$08! l- A }6 Z4 m R, k- `
- BEQ INV_RTS- b- A! w! x3 G& ^5 ]/ V5 f3 t
- LDA #$05
: z! b& ]0 d: i6 B$ N - STA $93,X
5 g: ~+ C3 J3 u - INV_RTS:" J" Y+ a( Q \& i1 ` V$ Z- {
- RTS" w7 i9 t! g3 v" b" i
- * m7 B0 N+ P- V( x# [% ]
- . y& w0 W4 \8 p- J9 m
- LIFE: ;生命. m- c: y# {- j: ]
- LDA $6000,X
! ?0 C# b( f$ Z) ^; O" ^# b - AND #$04
& Y" S& i/ f# T! v5 z - BEQ LIFE_RTS5 `9 Z; c1 a3 f
- LDA #$09
! ]/ \- ^, L* b. Y- B7 o9 _% E - STA $4D,X3 k- T( f9 M3 H% @1 @9 a
- LIFE_RTS:! O* x+ \) [9 u' y, b) C
- RTS1 T2 C6 O( r9 g& d5 \9 J! r
# H$ Y1 @7 d' ?- 1 `& z: N3 q$ T; T3 Y
- BLOOD: ;血量
/ u9 J( L/ s0 \9 p2 v% Q' f - LDA $6000,X' O6 |$ ^7 @# g3 g8 V
- AND #$01
, K) S4 c, Y- }) N: v - BEQ BLOOD_RTS
( z" `0 D$ N' D7 U$ B - LDA #$38
n1 _) H' E+ G" Q6 | - STA $0568,X0 O3 }- C' @6 M# k3 K
- BLOOD_RTS:
( S5 ?. h6 T* J, p. R! I) D# x - RTS
f7 @4 R9 a+ U' G: P. { - ( E8 Y2 \7 P# h) }: ~) s. ^7 k
-
* L! m: J5 w4 }4 g - .ORG $FEFE% @! A5 {/ z b9 N8 S
- JSR $FF60* a- X1 y9 { `# g
- NOP
1 i7 r5 p- h) E5 Q5 R3 c" n7 S - 2 i ]- Y! f# t$ j- u o6 j; l
- .ORG $FF60
! n0 C/ P( T1 ]9 _2 { - STA $F8,X0 x* @6 F( T/ p) t: A" w$ J7 m
- STY $3A,X8 ]; e- B* f7 d- w2 j; Q
- PHA
8 z. _2 B7 }8 X7 _! a - TXA( L5 r- @" J" [* s7 x5 @6 [0 V6 j, H
- PHA% N7 H( y8 Y: k1 n" O
- TYA8 C, {! B( K! r5 H
- PHA
" g1 y# i1 v" C; N" ]1 Q - LDA #$02 K5 Y5 [. d1 q/ k8 L
- JSR $DB11 ;调用系统切页
0 U$ R6 k' K7 l) Y9 z - PLA
" z$ k3 f5 Y6 d( [7 V2 b7 J - TAY8 h, K) V. l4 V( u$ V3 o# {
- PLA
{* z6 V1 t- o5 N - TAX0 p2 G% `$ }' g1 g/ m2 _1 M4 S) _( F
- PLA/ @* \+ x$ {( R3 E+ h/ l" @
- JSR $BA00$ |5 E4 W. w* B2 [$ q
- RTS
' ]. @/ s% v F+ r4 @; X. j - 3 M2 z; r( m7 j; x' K
- ;[FC][忍者神龟PPU][END]1 y) e2 C1 [8 z7 `# H
% u5 @$ m7 x% k" ?6 ?- .ORG $BC00
- V' y7 [5 W" q, H! _/ C -
# n, M- s( {: n+ S) K - STY $4014 ;补上覆盖的精灵写入指令9 t& M. c2 E0 y7 c0 u ]3 S# X
- PHA a9 e7 w2 U" ]2 p$ p1 n
- TXA1 ]3 m) ~, l2 W4 {) U1 |
- PHA7 u% K* ~8 w. B9 u# W! e/ k
- TYA
: A7 L* X L* J- K) M - PHA1 W3 j @/ ~7 t, r
- LDA $018
- _1 l. Y! Y5 e! n - CMP #$01 ;比较是否为标题画面' c. `- i4 s$ X2 I% b
- BNE RET
# i- z- o" |% o* p4 d A - LDA $019
7 `$ F2 z8 |4 `) p' `, C5 d - CMP #$01 ;比较是否为标题画面$ {$ c/ c- Z$ m, ?" N; T) j% M/ y
- BEQ PPU_STAGE
7 M6 f" N% g3 A, m. J* v - RET:
( v2 v' {8 v7 N9 e - PLA4 E0 R0 x' [2 H& ^; g5 b
- TAY
, K) i4 H2 i! g2 e, k& f - PLA
' G+ s2 \1 c* o, ?: j - TAX
3 J- c- C# ?1 k9 v - PLA
) K1 s+ w* P! e7 c; h( h - RTS8 L+ B( y1 Y$ N/ b
- PPU_STAGE: ;STAGE显示程序. D0 {: I* `( N! ]( e* P# l6 n
- LDA PPU_ADDR_DATA0 K. s1 V, q! X, v }
- STA $2006
* v- u) y" }/ C - LDA PPU_ADDR_DATA+1( R3 U3 r* X0 C
- STA $2006 ;坐标设置/ }1 `) h' E7 Q! P1 Q# E- {
- LDX #$00* u$ Y3 M7 H1 l% V1 F# x
- PPU_STAGE_WROTE: ;写入STAGE字模3 H+ M* q1 x, u# R" C
- LDA STAGE_DATA,X
k; U7 D% Q" X2 Y8 } - CMP #$FF
5 u9 V6 Y! C2 ^* w - BEQ STAGE_CMP
: t& l. j/ ?' T9 J9 \% S: n, x0 J f - STA $2007
8 f/ h( E, b% e! E! K" a5 ?5 N( u - INX$ q% r( M$ ^; W0 P$ A0 z; g* z3 f% j
- BCC PPU_STAGE_WROTE
6 p! D. {& L' { - STAGE_CMP:6 F$ j5 d0 ^6 m8 `+ C* u: _( X
- LDA $6010
' u/ S1 B. D) @6 P+ d - CMP #$FF ;关卡数据初始化条件判断
$ _6 I _, G$ r - BNE KEY_B$ A2 ]0 ~( i6 N+ ?* Q3 R6 s
- LDA #$00
3 L6 |- U0 l: K/ {& o - STA $6010 ;关卡数据初始化6 B4 G9 O' M! w) ~
- KEY_B: ;关卡减少2 I$ K2 O7 ~# y0 c( C2 T4 x
- LDA $F8
5 N* b( Z! ^0 a c5 L4 v' S6 s - AND #$42 ;按键B或左减关
$ l; H0 g3 ]& \; r" O. e+ l# e+ b: [ - BEQ KEY_A
! f1 D& B+ d% F! I O - LDA #$FF
$ k1 [6 S5 @; w - STA $406 z7 O$ \9 p5 P) o/ D# S+ i! g+ L
- LDA $60104 N# c; y; _ I" Z3 L
- CMP #$00 ;关卡比较5 ~! z" F4 B$ f; K2 o9 Z( j
- BEQ KEY_A! v# H8 _0 e2 p7 `0 r- B, c
- DEC $6010 ;减关
/ J# K, n4 W* ~4 C9 o! o/ K2 m - LDA #$57
8 @- m& Q! E3 t0 K/ T - JSR $DB52 ;按键音效
0 N" n Y) }" M0 ^' { - KEY_A: ;关卡增加
% [6 H0 R8 D" r" c% ~( Y, i9 D - LDA $F8! U2 {: o; ]/ d1 ]5 k
- AND #$81 ;按键A或右加关4 U! S7 x6 R1 W+ n w8 l
- BEQ PPU_NUM_WRITE
, B2 f% _' j# J8 Y# e - LDA #$FF
9 O- q+ J" ]3 J1 d% Y) K/ Q1 D( F - STA $40* e+ t+ f2 g& C4 q' O. c
- LDA $6010
7 U$ e: e: Z% ^8 F/ b; E- L" y - CMP #$0B ;关卡比较
9 L8 P* L* J6 b' P) E, A7 F m8 b - BEQ PPU_NUM_WRITE
7 _0 o% N" b0 _5 B - INC $6010 ;加关, V# E. _) h3 z" t; P, P
- LDA #$576 \/ K" f3 ?- Y! c7 S5 i# f9 B9 R
- JSR $DB52 ;按键音效
k" ^8 n1 [1 _' k* n( }* a1 u - PPU_NUM_WRITE:
7 o, k4 a F! {# A" Y - LDA PPU_ADDR_DATA+ B( n; J7 A% |/ J$ A) H
- STA $2006
U3 ?- K, r2 I# d - LDA PPU_ADDR_DATA+1
- s1 T: R: ~6 \2 F/ m- u% W - CLC
) K0 B9 w& I( p3 c% B+ J - ADC #$06
s9 G4 H$ C' b. d L) b9 d - STA $2006 ;坐标设置
; R1 g* b# Y; M2 X& _ - LDA $6010& U) n+ S2 q4 X7 Z" z
- TAX
9 r, M# r1 R+ a. A - LDA STAGE_D1,X ;写入数字0 Z- n! j" |* l4 R" q
- STA $2007
; W" o) V1 H" e - LDA PPU_ADDR_DATA* z: X6 u, Y& T% v3 z
- STA $2006* T0 o( X' R$ w1 D& _
- LDA PPU_ADDR_DATA+1' L5 V- ^, P9 ]5 U
- CLC1 A% ?2 }9 B: z8 Z0 r: k
- ADC #$0B
) }* c4 v1 ^$ Q$ C# y - STA $2006 ;坐标设置
) t+ p& H; X7 }" C6 A! H9 A7 h - LDA $6010( H+ d' ]4 i+ S& h/ X
- TAX
5 v: t/ |6 R; }3 M9 j! k( g2 {& R - LDA STAGE_D2,X ;写入数字
- |% v! f" B: g6 Y5 C6 }" o! i - STA $2007( {- U) ]$ C% j4 U7 g1 q4 z
- STAHE_WRITE:
! g% D3 ?! N( {9 q4 ^/ { - LDA $6010
) v& ^- [1 P( A; r9 Y - STA $42 ;初始关卡写入: s4 F2 d, ]8 q. D
- PPU_RTS:5 H0 n! E1 z7 Z+ {) }
- PLA
& r' T4 R2 P. d$ m3 x, | - TAY
' r! K' l: d1 Y5 T) X! E - PLA' U8 y" _: \/ ^, l5 }
- TAX
9 [. c! I7 R2 B0 r: M: d' ] I - PLA
. K' B; i0 k" D - RTS
1 N u/ o& A; X% U -
: a v" g8 _% C! N6 X - 3 E# H% G9 P- a" X# A4 d
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据1 \4 }; Q& l$ ^3 \: B; c
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF8 Q( K. U5 k. j5 Z1 A9 O7 y
1 r2 n# o, B' [4 z) f' @, p9 E2 `- STAGE_D1: ;关卡数字
7 S. t/ _+ `1 H( \7 S0 _$ x - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08" ?/ u J D' U/ `
, R; w: s1 o2 Z$ `* A& Q" i9 v- STAGE_D2: ;场景数字
! G, P* L) D" E4 e s$ \& Q- n' k1 S3 H# T - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
! p2 ?4 j6 v1 y/ o7 q# g; u, ~ -
9 X' q% ^# U; u - PPU_ADDR_DATA:; }) Q0 H7 ^' u0 Y
- .BYTE $23,$4B3 F3 b- H. Q3 k5 R$ \: Q
- # c2 E7 b# \1 A3 r4 L
- + V1 J/ x( o' Z* T
1 y% j( c- G( {
+ ~3 \- a' M" ?8 v; L
" e) _7 V! m! r4 c. Q5 G2 y- .ORG $FE21
& V3 S) c& h5 @ - JSR $FF40' `% z. F. f3 m5 b; ~0 l, q
- 1 s7 p! D, \3 a. i8 Z
- .ORG $FF40
7 F. y) x7 P4 A* H. i4 Z - LDA $BCDF- W0 B; Q$ l9 i, g( k
- CMP #$7F
& }5 V7 a) V6 H8 J+ o& ? - BNE ADDRFF56
; G( g5 \! L7 ]& T - LDA $0018/ H0 c2 }+ \. S1 A1 ?: Y
- CMP #$04
- Q* R# Z' b0 z7 k" w - BNE $FF52* u6 Q' y! }& f$ s; ~: i
- LDA $6010/ A, b9 c# K1 f* ?
- STA $00420 [ O1 A# f* N0 r1 d
- JSR $BC00
) R! l7 C3 V, M% V9 k - RTS
2 _) m( A$ H6 P* V - ADDRFF56: , M7 E1 w4 ]3 P9 _4 p
- STY $4014
' v, s S. E+ v/ `' d" F$ F5 C - RTS
' c% ], t( a% B - 0 X2 v# q( b% u( R
复制代码 内容:
" ]2 P. A L1 G5 j 1.关卡选择: 标题时,左或B减,右或A加;
% @& O$ w' o- {0 ~0 J6 L0 C 2.一击必杀: 暂停后,按B键切换;1 l' {. S w2 s
3.无敌锁定: 暂停后,按上键切换;/ F/ K( n: s6 J" c
4.生命加满: 暂停后,按下键切换;5 S& N7 H; ]; \0 ^. o* b P
5.血量锁满: 暂停后,按右键切换;( ~3 ~& n8 x; t
    7 u! H- x; c) T @' M1 O p
. E- P* M* q8 G3 o' s% X, p9 EFlameCyclone.ys168.com
; d2 A5 d, O( {! M: X6 qwww.nesbbs.com9 y/ c& Y$ ~' V& I
! L. i; E- ]8 c: @ f
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|