|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
6 P, P8 C. v3 Q3 P8 [1 z! x; m& E( ~/ x) ]
[FC][忍者神龟2][END选关]
& H. C7 V1 Q5 O+ O* C( R' C% ]: u- I( Q& `. Q
时间:2017.3.31
* ]- O& i9 Q; @9 n& G0 b作者:FlameCyclone- .ORG $B9E0
! L# H2 e! X6 m) ?6 I# }( L! y - ora_data:2 R' \1 s% c% m$ n' K% K# f
- .BYTE $08,$04,$02,$01,$80,$40,$20,$105 _/ V/ [$ ^, Z0 f
- and_data:2 Q) y& R# e+ C1 `
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
^6 n! M w! O0 H1 l6 I5 s4 J' Q -
W5 o# L% r1 \* i7 Z! | - button = $F8* p2 |- h1 U! ^& ?2 F8 t/ A8 M
- flag = $6000
" I) z8 J9 @4 J3 [4 q* u! v2 R - pause = $3D
% C. T5 N: n8 Y* z/ k& x4 b
: e# p( r. [1 j5 l0 G- x6 H- .org $BA00) }6 W+ }/ H" [
: Q1 m( i% H% [. O- PHA; K. C0 G! N: h% q! Y7 O
- TXA9 ?" T2 b8 n, k {+ e
- PHA
H V/ \8 y2 [: O* C- X - TYA6 v) }. f. M) K5 D4 Z0 Y; h3 ^. ~3 D
- PHA" U7 m ]$ p% I& h
- JSR KEY_OPERATE$ e* X0 g! E! x3 G$ l# N
- JSR INV: M" e) {' j/ s1 g' F1 @( j
- JSR LIFE
" l/ S4 v \5 c, t, G8 r2 T - JSR BLOOD
3 L2 l! a: |% k- ]* B( d& B; k+ R' N - PLA0 T; i# P# S' i5 t
- TAY
0 `9 W5 F: d+ j" e; z4 Y9 W) \/ F - PLA
0 ~! n) X6 M9 z& N# n1 q# q - TAX
9 D6 ?& R6 E# w- Y' l# E- w - PLA
( L \. n6 ]: }3 ^+ \ - RTS8 L8 G) \8 U" L& I
- KEY_OPERATE:
6 q+ X, \0 [" T8 i p - data_protect:
/ ]9 Q2 `! x% |* q0 S - PHA g. o% \4 V7 F0 A( o" y
- TXA1 x) l7 W) N# R6 X1 S, A% e
- PHA
2 d4 v( ^' k/ z6 S' s; J- p - TYA
" Y4 M3 l, e( V3 V3 M - PHA3 `( B$ U; o% x
- + z/ `3 h: n0 A# a
- FLAG_CMP:
) N( h1 v0 H3 C( ] - LDA $600F8 ~: n, o6 {' T5 O# r
- CMP #$7F ;标志数据初始化条件判断
* E, t$ c3 D- u% ]2 v1 }- B - BEQ pause_cmp
: ] P' n6 c% f8 K8 M) C& F. M - LDA #$809 `& m$ t' x/ U' z
- STA $A001 ;6000-7FFF写入启用. `% C, G$ c1 S
- LDA #$00
1 \0 g4 W) O' S( r! U - STA $6000 ;数据初始化/ O- E! Q3 e9 q# e" y" @2 a
- STA $6001 ;数据初始化
# Q2 m0 J: g7 y! e, W, X% Q% | - LDA #$7F* K3 i. t2 I$ d6 r# v% J: L' [
- STA $600F
. D" J, |( K/ Y6 e7 c6 S - pause_cmp:% v& D. X+ i8 ]5 [
- LDA pause
9 x" B9 x$ {3 p& e$ ^" b& i - CMP #$01
+ |1 p0 L# x0 Y) G, V( B; E - BEQ button_press
3 }( }4 S& c4 D0 w0 _9 k2 G0 t - PLA
6 k8 ?- x6 d9 C* n0 Z$ a7 `- b - TAY
) p" h# ?4 H9 k9 y4 h - PLA! G7 A8 \1 J4 |: S* Q0 U
- TAX
- B6 `0 m- ~' c+ V - PLA
" d2 E% t$ I8 i8 b - RTS
t2 }0 b6 d$ d' N
' v5 c9 Q' h7 W1 Z$ g" s6 l- button_press:8 d% r6 H- g: n: A
- ini_Y:
# f# o9 I+ k6 s1 g6 I - LDY #$004 e% v+ c$ E' d
- button_cmp:$ Z& x* h: L6 f
- LDA button,X
5 {# [ _$ b6 P9 {: m( A0 [& c0 l. U - CMP ora_data,Y
; e! Z0 o+ @ E0 W; T - BNE count_Y_cmp& ^# V3 O2 \, w6 U9 O% \, O, _
- flag_cmp: k- J1 _. g/ q( C2 f
- LDA flag,X- c% A5 w# S. x
- AND ora_data,Y# b' ]- O& r( b/ ~ k# T4 _, {8 l
- BNE flag_and
6 @4 t# ]+ G2 B: ] - flag_ora:' |5 Y. h" M( @
- LDA flag,X# [/ c! J9 _3 W% Q0 M3 H3 b
- ORA ora_data,Y- y! E, s, M6 ]
- STA flag,X
7 }' @8 W3 N; k7 z& X8 o% H- i - BNE count_Y_cmp/ G! L4 F6 {/ C& |8 A- _
- flag_and:
! P' l3 E ?/ [* b$ O6 r( y; E - LDA flag,X
2 I0 B( R& R! u% U( r; k/ o! w* V' l - AND and_data,Y& w6 Z/ g; m' y4 q: W
- STA flag,X
6 R. ^% f! K0 s/ X1 @& |: a - count_Y_cmp:
2 q4 {/ X% d; ?0 h/ g' ?4 f - INY
- u' d2 g& n" I1 ~, N - CPY #$08
; e" u7 X; K* Y1 j8 m8 X5 F - BCC button_cmp! {1 G# a$ R3 k! x( ?. d
-
8 I& n: Z& o3 n/ o9 w; ?6 m - data_extract:
0 a# i* K) {. m: ~( I# h c - PLA
% c) Q) O4 d( ]7 w3 K/ h - TAY7 q& B+ U+ `+ M) u2 D0 D, p
- PLA5 g Q9 p# j; L
- TAX$ P0 I. H9 o% E& m2 y7 A
- PLA- j% c5 V& l4 q
- & S* q9 [$ b* X% |" d1 m
- return:
4 S6 [. G7 a$ K } - RTS
/ N; U6 u1 _& c1 u. l2 t -
# H, F0 ^4 N/ z: D* v - ' u5 ~- m- `: y- X
- INV: ;无敌: n- U3 m% n7 ~* m! H% |- R; p- L
- LDA $6000,X$ d. H3 _! }+ e
- AND #$08
$ I7 G: t- I' n4 {& z - BEQ INV_RTS: d% o; c2 ?$ b" j9 Y8 g/ J! v y
- LDA #$05
/ Y8 j9 z: x+ z& `8 Q9 j' q1 U" F* M# q - STA $93,X
9 T( S1 M& Q7 p+ ?1 ?1 E7 g4 ] - INV_RTS:) m" L P( q, X
- RTS3 J! @- ]; [( [0 K" t* o1 t2 E
4 ?3 i6 H) K/ z/ i4 e1 b- y-
! b% f$ f1 f/ p8 h2 n* u - LIFE: ;生命$ ?; `3 b. r2 H
- LDA $6000,X
4 {& F: q' ~7 g* v# V, j0 U - AND #$04
! [, Y) S6 ~8 }) ~' P6 v1 ~) C; c - BEQ LIFE_RTS. ^# o: P' H E" P$ F! f
- LDA #$09
* P+ _% l. e% k' R - STA $4D,X& s: i4 U) D; P; ~& y" g9 s
- LIFE_RTS:
: t% b! j0 t+ ^ - RTS5 ^4 X* u/ \ Y1 z2 f, t4 m
- + p. }& J8 q" w( Z& l1 j, H, I
- * R3 O/ Y4 ^* U! I' m0 a: x. ~
- BLOOD: ;血量, Z: u: S- f; v5 y$ e* P1 ~
- LDA $6000,X
2 ^ @) W$ T* _" d; N7 I: R3 G( J - AND #$01# C& I1 U8 _) H( X
- BEQ BLOOD_RTS% _6 C5 n' n9 i+ ]( F t' f
- LDA #$38
# K& o: n4 Y* \6 c - STA $0568,X' e0 b8 m! P9 V+ s* l" g- E
- BLOOD_RTS:
% e+ g8 z) @2 B7 W - RTS" P4 s: i+ _' {2 ~2 l. @
-
; o% J, W1 f2 D7 O: |# q( A7 n -
( H8 Q9 w4 R0 H - .ORG $FEFE( y0 V+ e: Y% I9 Z1 A4 v8 E2 {4 O
- JSR $FF601 }7 K8 K0 p; z1 |' M' g
- NOP& d5 V6 U L, x; x( G" `+ V+ U
- ! V8 h. d$ K5 ^, n
- .ORG $FF60
% W) D( P" N' I6 k3 r - STA $F8,X2 M) i1 a1 o3 X: w! v# O
- STY $3A,X# H6 A0 w0 B+ ~8 ]
- PHA' j |1 L4 q, Y0 A6 y, s {; l
- TXA& m; F$ j* B4 D* m6 e2 H7 x
- PHA$ A; s. [$ R1 h8 g
- TYA
" M4 y$ H1 b# O$ j. A: `7 h5 ^ - PHA
5 |3 U/ N1 g2 T9 f" y - LDA #$024 | d/ e2 ^0 }4 b7 x
- JSR $DB11 ;调用系统切页
9 {( d5 N1 v- P+ V8 Q - PLA
9 b) M! Z% N$ J Q - TAY! P* ~7 N- r8 e" R
- PLA
6 R" W: F0 u) G) f1 H - TAX( \* M9 t& T% m" J. |
- PLA
0 ^: [, t! q: \# U6 k X0 J# ?5 i% i- z - JSR $BA00
: [( B! y/ G* S7 r* v/ l - RTS # Q( i- Q1 I3 R7 N
, o5 J; I$ }, B) v* m- ;[FC][忍者神龟PPU][END], K/ ?7 x; V$ P
- ; R+ Z6 r% t% d4 W/ l0 l
- .ORG $BC00
9 X( \1 P& Z5 z -
+ _& q! l ~9 [7 \( U/ d - STY $4014 ;补上覆盖的精灵写入指令
; E5 b" K# N" I e+ ^6 S$ } - PHA
$ M' ?- k7 D% {8 b - TXA
8 \$ ^; l& h8 U1 H: s; m - PHA. V( B3 s' z$ z, q' T" |
- TYA
4 h' Q7 {2 B1 T4 a4 M6 y- `, }$ ` - PHA$ Q# _% G; r# g% j& u0 n
- LDA $018
2 D" J& E2 y2 R" @( O! P/ \% ?: [ - CMP #$01 ;比较是否为标题画面- r: S7 ]0 k* }, ~
- BNE RET6 s/ ?- C0 D O/ W7 `3 f
- LDA $0195 f. s5 T* j0 N! j/ ?
- CMP #$01 ;比较是否为标题画面6 b) y& x7 `4 B
- BEQ PPU_STAGE- ]" ~+ k# ?' t6 u( n( l0 H! Q5 Z
- RET:) h4 J, x% _: N* a- [% R1 G
- PLA
! o+ G! a& H) Z6 L' l0 ~ - TAY
4 H( J9 V" `2 | - PLA
4 K6 Q4 f* n! _, a9 t. u* H, T. Q- m - TAX
( G4 y4 s4 t' G2 f) z9 j - PLA
, K [% {& s, U8 E o - RTS+ R% \+ j( O- H8 h( _- s" m7 F0 X
- PPU_STAGE: ;STAGE显示程序
. |7 O& e6 `' @! m; F1 Y9 y3 P' k - LDA PPU_ADDR_DATA
$ C3 y% H2 L4 [- { - STA $2006) q \1 _7 ~% s1 i
- LDA PPU_ADDR_DATA+1
. S" P! F* w3 ?& U& s - STA $2006 ;坐标设置9 C9 ?/ B L7 e' ^# X
- LDX #$001 i* r) d- W) S3 X1 J" H* k2 ?
- PPU_STAGE_WROTE: ;写入STAGE字模
( ?* @6 T0 D' G - LDA STAGE_DATA,X
" ]4 V/ W) P! z8 l - CMP #$FF5 y' h& i! ]6 n% Q
- BEQ STAGE_CMP2 Y6 V7 l4 W! z+ U# t! r4 Z# w4 E
- STA $2007) @+ y V/ L. j8 o' H5 | Z; @" l
- INX. G" `) d3 l7 {, H5 E K
- BCC PPU_STAGE_WROTE
[5 ?' o r& ~7 G8 X5 |- G - STAGE_CMP:
1 Y6 H! d/ Z! V9 x - LDA $6010
3 D) V3 q" p$ } - CMP #$FF ;关卡数据初始化条件判断
1 F: Q. N0 @% V$ \ - BNE KEY_B
$ A$ M3 f2 ]! c - LDA #$00" b. T+ _0 y1 p
- STA $6010 ;关卡数据初始化& _* g+ ]% ~) m
- KEY_B: ;关卡减少6 U* l$ F2 i& ?
- LDA $F8
8 v* v9 D% G( \! z( F3 z: h - AND #$42 ;按键B或左减关
0 B6 |* o o8 u6 I z - BEQ KEY_A, G$ d% Q9 t9 ~
- LDA #$FF! |( b7 x% S- w* v
- STA $40
2 Y1 i) C4 i* N, k R - LDA $6010
+ h+ \$ V' [2 U9 i - CMP #$00 ;关卡比较
# f2 t5 j& ?% j; g o; x - BEQ KEY_A
# a7 D" j9 Y5 v( i5 ^) t9 n - DEC $6010 ;减关
9 h# J" ] J/ n- g - LDA #$579 g1 S2 s# T9 D' r0 |3 s& l& b' `
- JSR $DB52 ;按键音效& Z2 ~# z/ m0 I9 g
- KEY_A: ;关卡增加7 C, L% {" ^! e" Y9 Z! a& m; Z
- LDA $F8
: q/ k6 P9 X6 K- B! h7 w - AND #$81 ;按键A或右加关; V) B# s3 c" C( V
- BEQ PPU_NUM_WRITE
. C* s7 C, Z! ^- M; c1 \ - LDA #$FF
, e7 l8 k/ z4 X6 d: ~) w8 S5 o7 H! o9 o - STA $40
2 s3 ~/ ], K0 g - LDA $6010- }$ n+ B' j1 w1 Y
- CMP #$0B ;关卡比较) W0 ]7 w9 ^ I* _$ d1 F. q2 |$ @% D
- BEQ PPU_NUM_WRITE9 p. a: P5 q: W$ @4 J
- INC $6010 ;加关 n G0 V+ i4 I! x$ {/ Y2 [! B6 S
- LDA #$57
n3 k& [# b. a5 _3 M - JSR $DB52 ;按键音效
( J" j }: c/ `% ]7 k/ O5 ^2 Z: h D - PPU_NUM_WRITE:
8 x, o+ \( Q! I/ W. W" u6 Q - LDA PPU_ADDR_DATA
7 X$ H j, |- D* K - STA $2006
$ A/ u& p5 S! v5 y; e2 Z' S/ D - LDA PPU_ADDR_DATA+1
0 s1 H! l9 {* N0 y - CLC
# c0 P1 `# {- F! |7 j - ADC #$06# ?8 g, x0 q. d. w8 q" M
- STA $2006 ;坐标设置) o7 P7 I- j+ G
- LDA $6010
: D) \- _' u" j# Z - TAX
+ s' x0 k. D0 S" |! ?8 H - LDA STAGE_D1,X ;写入数字
) G0 P. s- i9 t - STA $20078 b( [0 [+ e: V
- LDA PPU_ADDR_DATA
2 z# J0 a' B% t3 J( S - STA $2006- I! S9 M, I0 s- P) n
- LDA PPU_ADDR_DATA+1
) V( ] l+ ]" V- b6 r - CLC, {7 z9 b# `/ I# b; t! b) y- }5 y/ e3 L
- ADC #$0B% W* U( j- T" A4 k. R
- STA $2006 ;坐标设置
" O. H9 S9 |4 z( t8 T$ z$ I - LDA $6010
( w, c- X' O1 y( V$ Z! a5 U - TAX
6 @7 v/ h: } x' } - LDA STAGE_D2,X ;写入数字
6 j2 w5 T( S. D - STA $20078 O, S1 X6 T6 V
- STAHE_WRITE:7 r8 @4 C+ V. V% \1 p
- LDA $60105 w4 W# a) O5 }. T" L3 O- U- d
- STA $42 ;初始关卡写入; Z! U/ j. h) @+ C- s0 x- d
- PPU_RTS:
: Y8 S( `4 D' U. c* Z - PLA
( Q5 ?% U* m$ f" {4 ~, d - TAY+ b& e7 c& v/ W ^' G7 N% }- \
- PLA
) J1 p8 G9 g$ c' y1 o - TAX0 H5 q2 k$ n0 [# E+ I7 _& k
- PLA
6 E, n8 M* f* S6 |9 w+ h0 q* { - RTS( [! o; P/ [1 O w
- + q+ @0 r8 P. t
- " e' X1 N2 i, t+ [9 \9 b6 @: k
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
9 \' y2 ?% ^) k - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF5 _' Y5 A" h0 _5 w/ N
0 ]$ z6 v W. |" k9 }3 ?" P- }: C* H- STAGE_D1: ;关卡数字
* O4 Y+ N, ? I - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08/ {; G8 ?! i7 h
- 4 g( y, u. P% X: V( j) R( D+ j! U9 ?
- STAGE_D2: ;场景数字0 X5 b. `1 w. {8 r# {' o, C
- .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
! r0 j5 Q4 a/ p3 t9 q5 c0 l8 W -
8 `' }4 ~, Y6 Y% ~* m. G - PPU_ADDR_DATA:
' F3 J, R; m u. z - .BYTE $23,$4B
7 u. \5 @4 E& E# T! Q; ^0 a/ K- w - ( C* w5 S [; ^- K# I X6 m6 C {
- ! B9 g1 w, F" b; u
- " _& [! }: D# C
- $ Q8 k( Q$ B2 |- E0 ?& L
/ @& }9 x) K0 i% \% d# y) F) O# r- .ORG $FE21 4 c) m2 |0 X8 V. h) z' w- f& f7 ]
- JSR $FF40- @* W- N+ [- d) u* ]1 H" @1 R+ Z, T
-
7 l: `1 C/ W* ~* Z3 E6 A1 c5 B! M - .ORG $FF40- x, ]$ `7 V3 o3 e2 p6 V K# h; u( a
- LDA $BCDF0 F. O0 e( @% e3 K) E
- CMP #$7F8 r$ w; t* g0 L+ P" S x) X1 l/ ]
- BNE ADDRFF56, N$ L7 F1 m7 X5 B% }0 s3 O
- LDA $0018
# C- O" n+ s1 e( f# ~# H7 ^ - CMP #$04$ j) z4 h! H6 L s! O
- BNE $FF52' s' n( l$ J" t1 R( u" J
- LDA $6010 L$ `3 G" A$ O' `) v
- STA $0042
; C2 W) x' M1 d - JSR $BC00
$ i& L/ _) l) `+ _ - RTS
! W0 u( w+ a; M0 U - ADDRFF56: : \" x, E6 P* w
- STY $40149 g; G: S( b1 J" B: g
- RTS
* ?( G5 w8 w9 Z, u; Z2 ~ -
; d6 R! L, o; n3 a- n; t- N
复制代码 内容:2 c6 [" |7 |0 J k3 F
1.关卡选择: 标题时,左或B减,右或A加;
+ O# ~ u+ Y9 ? A+ g 2.一击必杀: 暂停后,按B键切换;
" H3 |4 @4 R9 p 3.无敌锁定: 暂停后,按上键切换;
! b5 e( K; ]5 Z5 w# r3 D; D) Y 4.生命加满: 暂停后,按下键切换;
3 D! |$ k( X2 b) X 5.血量锁满: 暂停后,按右键切换;- |$ F; w9 R* `8 U: r3 M. k
    
) s( o9 o! K1 h
% Y5 k3 @+ F6 a2 nFlameCyclone.ys168.com0 b, F# m4 D! k
www.nesbbs.com
0 Y2 V. M* x6 C8 W
! c* l4 w$ H5 G& p" C$ R& j |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|