|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 # |5 h+ x& x& d% E
+ m7 y- e; U F& p6 @" A
[FC][忍者神龟2][END选关], o# j$ D, n5 v& o0 @+ Y4 C
" X8 K5 y6 M6 _% O8 C" ^+ W时间:2017.3.31
* O( h8 f! s7 B) b作者:FlameCyclone- .ORG $B9E0
& S+ d6 f( x" Z/ F. L( v0 i: d5 o - ora_data:
# p0 {8 X! T4 s+ z8 ~6 d/ O - .BYTE $08,$04,$02,$01,$80,$40,$20,$10: v$ o" Q6 i8 P/ ?' _+ G
- and_data:- i7 L h( c& {: ~" ^1 D
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
: c8 R7 y/ Q% j% R4 y -
( x$ v% k3 B! O' l( f3 q3 g - button = $F8
& X3 U( C3 o; [! o% g - flag = $6000( v6 b( @% v- W6 G) L% G7 Q
- pause = $3D
* z; z4 D3 `7 G - 1 C2 N3 r" W) ~" \/ F" |( i5 l9 k$ R
- .org $BA00. s% g9 H& \7 T, D, `
5 B. \9 I7 t& f) P3 D- PHA
. A$ c* j; k0 l. d# z - TXA
. N9 }* B3 m" Y/ C - PHA' x8 W$ l0 p0 p, F
- TYA1 t7 h8 C) @: w( j |, f K4 ~* M
- PHA) U4 ?4 {# K3 ?( I0 {
- JSR KEY_OPERATE5 B; L: V0 |+ ~# O3 J
- JSR INV" X" O& v( g2 g. ]+ h: d+ }1 W A
- JSR LIFE$ ?. R$ o; `+ Y8 a
- JSR BLOOD4 t: \0 ^6 |5 L3 M3 \! c5 S& O
- PLA# j8 O& @% H% ]. k2 e
- TAY
: M2 a0 O& C9 L" i6 F: q - PLA
+ v/ o8 [* D& o" E - TAX) t3 N( \6 ^, Y; B( J5 l8 r
- PLA
* s6 p2 t+ T5 m# b9 d9 g- R - RTS
" J& T; d8 p/ a d' ~ - KEY_OPERATE:
5 ^7 K! D, n3 n6 l8 p5 ] - data_protect:
1 }5 Y7 f# y( O! r# j - PHA
! E! P! p- P6 o s - TXA
, I- v# \5 t$ V( u7 G: f - PHA
& [7 t6 R9 m6 p* |: Y, T0 } - TYA
d% p: A5 [6 i - PHA
/ @4 S; r$ V6 Z) f3 f: q" T; w - " q/ l& F( q" V7 c9 G7 g9 T$ W5 ?
- FLAG_CMP:
! P L; Z. X) o U" {' y+ e, R. r. @ - LDA $600F
& V/ w! O4 Q5 s& w1 m$ g - CMP #$7F ;标志数据初始化条件判断
7 a0 x" Y0 r5 J3 V - BEQ pause_cmp/ z6 U* h9 s7 ^/ s0 C0 m' F
- LDA #$80% S! j8 ~; t7 N2 x+ w: Q3 y
- STA $A001 ;6000-7FFF写入启用
1 D8 v6 g* G1 J$ l - LDA #$00
" @6 j. a6 X, s( _/ M, p% N8 D- I - STA $6000 ;数据初始化
6 i$ j! v$ t, ~. U, |2 D0 J4 K6 _ - STA $6001 ;数据初始化0 U( o4 i9 [6 N' L+ _ L
- LDA #$7F
5 k) O2 N; C# b& t - STA $600F2 z; ~9 T7 [; G7 [. s
- pause_cmp:
5 T/ S4 N0 {: B2 P/ T2 W8 L0 i C - LDA pause
6 C6 }' q- o" e$ P2 _ - CMP #$01
' z6 E8 {3 s) S, c3 H/ f3 o - BEQ button_press
1 A: y* {6 T( }; O - PLA
0 d. b% F9 A2 N' b5 U- H3 V+ J - TAY8 z6 c$ n( l$ F4 Q" `4 Y
- PLA. E1 \/ q9 _% q# Q, k- }% G
- TAX- l o2 o4 q# J0 ]- l* v% Z8 N$ W
- PLA
: C3 R0 W; C+ t& S0 g1 a) I - RTS
% [* R0 ?2 e |. i% [8 G
" Q+ X ^3 u3 m- u8 S, o- button_press:
( Z0 ]# x2 m! T. V0 I/ U! \+ T - ini_Y:; f4 J2 ~8 P) i+ g
- LDY #$00
9 B! B+ J9 `, @# q - button_cmp:
- w* q+ U. O: ]$ ] - LDA button,X
w& [4 U$ ?0 J: |. y - CMP ora_data,Y1 a( Q7 R, {2 S$ T2 J
- BNE count_Y_cmp
. N1 G2 S% [ Q/ [4 _ - flag_cmp:
: J: T6 A* x& d - LDA flag,X
[" ]) K, `3 R6 ?3 `9 N - AND ora_data,Y L" e) U- H1 b; b2 y2 |
- BNE flag_and( [6 E( H4 ?7 Y( @) t8 ]
- flag_ora:
: l, F% I8 H5 _+ E, j% ~2 G0 p) { - LDA flag,X
- ]2 }0 R, w* }0 C/ y - ORA ora_data,Y
4 N( [( E/ U9 ^ r! r - STA flag,X
0 {3 `! `6 U+ j: h6 V; v. y - BNE count_Y_cmp
- x: o2 b# w9 }' j9 _7 G - flag_and:
* v6 G3 N1 t6 j Z( V, ~' ]4 j - LDA flag,X* W7 J& k4 g: a1 R, }; v, }
- AND and_data,Y6 p5 a# I0 r3 \. `) G8 o
- STA flag,X
`. W% ]# b+ J* {# Z8 O9 \# L7 w- B - count_Y_cmp:1 l# w: O% D, b" p8 t/ {8 X* C, ~
- INY
. T S' v8 l1 R+ q - CPY #$08! _4 k+ { t; I; h' Q( @' m
- BCC button_cmp9 Y7 @/ X* s# M. V0 q
-
?& L( X* c& w ^; ]% q: \ - data_extract:5 K1 Z% I# Q1 G1 D; S R
- PLA q# c' J2 H8 R7 u3 V- h. w
- TAY R1 {. U7 V* w
- PLA7 f; ]* ?( z/ d- Q, J0 U
- TAX' H- V4 s9 [+ S( S) w5 |2 v
- PLA
! s! V1 `8 i" M -
" m4 y, u/ _3 L3 x5 T - return:" v1 e; O3 s( A) C/ C
- RTS! w' [4 h9 @* G+ U
-
, w. v, N3 F+ n5 j -
' H9 N$ ]: `& u5 T8 ?0 y - INV: ;无敌
0 T. O; k# q; w2 T- F% | - LDA $6000,X, b" V6 U0 D) I- D) m
- AND #$08. x' S) ?8 R9 M7 I
- BEQ INV_RTS
7 m# a* k+ T6 m% Y7 N( W0 k- F - LDA #$05) N" w5 }& k3 l# ^+ _
- STA $93,X
: A9 b4 O% p& M1 f - INV_RTS:9 E# n+ X& R- P8 H! k% `7 Z
- RTS* J; O, h. f0 R+ N3 r! u
7 e4 d5 T3 p( d. V; m7 T+ E: g3 _0 w- 5 _6 m2 A8 V' X( A7 k0 e
- LIFE: ;生命
l6 x7 h7 ~; p2 d - LDA $6000,X
" U2 h7 t) Q8 g6 [2 z3 A - AND #$04' t. g6 _4 Z# V+ @ q5 b
- BEQ LIFE_RTS
: f3 J! a* V: @. Y8 K - LDA #$09. K* Z6 p7 q& W+ ~/ T0 R
- STA $4D,X
; d! n! ~9 M- \1 {6 ~6 `/ I" ] - LIFE_RTS:; c& `. X) w1 S/ ~" B" E6 g
- RTS
) f3 [* m: r3 `- r
8 f+ g3 k1 P( ^( _) j- 7 \7 J0 t# y" Z7 B
- BLOOD: ;血量/ q- D7 k( p, w
- LDA $6000,X
) N& s6 [) |# T9 z/ C5 W - AND #$01+ D4 O/ t3 `6 i2 S+ C
- BEQ BLOOD_RTS
3 X" }; G+ r) v; I" k& z& H( q - LDA #$38# p1 t8 r3 @- x- d* q
- STA $0568,X8 \" w( F. R8 y) P
- BLOOD_RTS:
% K6 l2 `: T! J6 x5 S! n - RTS
4 V% D$ e# x* Q& d - ) L# a* q; F1 i8 d- r4 `
-
/ _. z0 O( p3 q' x - .ORG $FEFE
& s$ n( W) V% P - JSR $FF60+ y. Z. y; E1 P3 @; d" s Q9 @9 k' e3 s
- NOP# _; x$ o! w6 j- F
-
4 q0 N/ e1 ^9 B$ ^ - .ORG $FF60
8 ?+ [9 \6 O/ I: S# m+ ^ h6 M - STA $F8,X3 G) B! [7 K! b* {
- STY $3A,X
9 f0 N6 j5 Y$ Z* N+ z/ k - PHA* g. i: ^) X% w9 a$ }
- TXA
6 ]& i1 l0 w: q. h! ^% W - PHA
! D+ l; W4 i2 Q, k" ]7 L - TYA1 a3 `* _% z7 W K& S% I
- PHA* W! N c1 {+ x! b! J" I
- LDA #$02
6 ^2 s* ]: e8 \+ R# B: J. n. y1 H - JSR $DB11 ;调用系统切页
5 n- c, I$ ?7 D, e - PLA
1 h/ A* U' v. j \ - TAY
6 [( v0 l1 _5 D2 n - PLA R) B- f) { o9 Y0 L; H
- TAX
- b- m: r/ J0 i - PLA4 N: \9 i& f. ]9 i/ _
- JSR $BA00
& q( W t: R, F+ r; ]) F% y - RTS
; ?& Z$ l) {2 L" S* K) J - 9 k( J' Q9 A1 I5 \0 T' }
- ;[FC][忍者神龟PPU][END]
, m0 H) e; Q! ?! |( Q; |8 e
* V% m1 D+ `% y1 W/ Z- .ORG $BC00
0 Y9 d2 w' t, Z -
4 g; L4 x% I3 \# A - STY $4014 ;补上覆盖的精灵写入指令5 [6 R& h6 Y+ m4 j1 p: v3 c/ X
- PHA
, ^4 X0 w: C3 M/ `' m$ Y; j5 I3 {3 u - TXA
( l2 a1 l7 H& q1 x v+ Q - PHA2 H6 e/ v7 k5 J$ a
- TYA
$ r: L# t5 `1 w# ^. {# s! y - PHA
5 X1 |, Y, ]: }9 j6 `' c - LDA $0184 Q0 h* @& m7 n$ }: o
- CMP #$01 ;比较是否为标题画面+ p$ `0 d3 u" b8 R1 z- x
- BNE RET
/ n, R1 X U2 Q. } - LDA $0194 n# f- G& ?) J6 p. g
- CMP #$01 ;比较是否为标题画面
' Y9 k: R, S. l! V8 |, h" F4 X; t& d- Y - BEQ PPU_STAGE
' M: z# V1 i5 T - RET:
' R. O+ v. ^# Q9 U2 w - PLA
/ d; V { m' x8 c - TAY
7 A. M& c+ i3 L3 d! i& B - PLA
/ _0 H1 ]& d5 E8 c' B - TAX
/ e. x/ `0 L9 y+ l& \: C! Z8 _! L - PLA) V( [4 H# d: |
- RTS
4 G# }* x( z7 D2 r- M1 y+ t% l - PPU_STAGE: ;STAGE显示程序, i4 x# h3 @3 Z# W9 q7 c
- LDA PPU_ADDR_DATA
& s2 r2 H9 ~6 U( Q - STA $2006/ Z K+ N: a+ Y+ R) C4 z* |
- LDA PPU_ADDR_DATA+1
. R7 k" T# j+ F" p* [. ?/ h. l" D! } - STA $2006 ;坐标设置
6 t# D5 |" d' w. a/ V) k9 N - LDX #$009 n, T/ S, A) h" _9 ?
- PPU_STAGE_WROTE: ;写入STAGE字模: E$ o3 m1 i8 \6 Q" h
- LDA STAGE_DATA,X. R* V; \& Q1 }4 u: [" d# |
- CMP #$FF
0 z0 V; C0 Y- u7 J2 Q8 R - BEQ STAGE_CMP
. b& F* e3 k' Y% X% w- b - STA $2007
6 \. Z" y2 C: g$ w" S - INX
( S6 ^8 v; f* W* j6 O - BCC PPU_STAGE_WROTE
7 U2 O/ E" C0 z: B% |/ _9 ^, L7 | - STAGE_CMP:, I- j E6 r" }; D% T5 @: A
- LDA $6010
# v/ R6 b" [1 z0 T: S8 U5 R - CMP #$FF ;关卡数据初始化条件判断5 o7 ^: a0 U1 T* F4 v" Z) q
- BNE KEY_B
. i. G( K" V1 q- }7 E9 o - LDA #$003 o8 ^* a+ ~! \/ |. V: C
- STA $6010 ;关卡数据初始化( W8 C+ R- ~- l/ x
- KEY_B: ;关卡减少
" A2 K7 ^( ]- h; g$ \" p% k! D - LDA $F8% Q+ J& r( d6 G% a8 }, \+ T h
- AND #$42 ;按键B或左减关. r- {0 N: k9 O
- BEQ KEY_A; V1 B/ H' E, Y
- LDA #$FF
' a- A" {! J s0 `# P - STA $40
, l2 I$ H" U4 c" w; h; v - LDA $6010
- a3 M( e: Z( z$ E& g/ Q6 z# n - CMP #$00 ;关卡比较( X: @4 o& Y2 W# U
- BEQ KEY_A
* M8 u) W1 y$ G - DEC $6010 ;减关
( H7 c& G8 |8 n% Z - LDA #$570 _7 c) h9 K; U1 M8 z5 S
- JSR $DB52 ;按键音效
z% J% A Q/ z F6 j( X7 P/ D - KEY_A: ;关卡增加7 _4 M. d1 @/ W! a' [: U. K/ @
- LDA $F8
/ ?/ G5 |* t, T; X - AND #$81 ;按键A或右加关8 L9 K' j. _6 m# o
- BEQ PPU_NUM_WRITE
J7 A! U3 T( D; c2 f5 q2 e - LDA #$FF4 j0 S1 L X; P) w
- STA $40
w; x; A C: W4 \5 x - LDA $6010
# M6 R* ~% [9 ~2 r8 L0 R* D - CMP #$0B ;关卡比较0 n* L5 Y5 v- R z6 M: g2 }
- BEQ PPU_NUM_WRITE
g2 Z# q P* k& V; U- f - INC $6010 ;加关6 q1 y( e% V1 J" y2 P2 |
- LDA #$57
0 Q& ^/ \8 w$ J% W - JSR $DB52 ;按键音效" B1 {. K% Q- Z
- PPU_NUM_WRITE:) v' K* @% U5 @0 \) \. P+ {
- LDA PPU_ADDR_DATA
+ [& { K5 j, {7 n9 w - STA $2006
T0 @% }, F) I/ _* f; V - LDA PPU_ADDR_DATA+1% D: k/ |+ R; X7 j
- CLC; P/ }# L4 i% i" P; b% A5 y
- ADC #$06: |! {! S m- o( I0 a4 F
- STA $2006 ;坐标设置$ e" C3 \ @ T$ l
- LDA $60104 p- F9 Y7 z. x) N
- TAX
9 j+ H) j0 l% Z1 h4 B8 h - LDA STAGE_D1,X ;写入数字# K" ~, R5 v' z m3 d2 y& [
- STA $2007
9 ?6 d. Z2 d2 w- S9 F - LDA PPU_ADDR_DATA6 O |9 P, B; B2 i
- STA $2006
1 x" L5 E( Z, N - LDA PPU_ADDR_DATA+1! M8 _( q; o4 V6 a$ r
- CLC
/ C/ [" |2 k6 I- ~ - ADC #$0B
! D+ p6 M" s2 Y) E3 p# w - STA $2006 ;坐标设置' T5 i0 r5 m% ?9 u
- LDA $6010
, J3 \3 E- t% y5 x - TAX
% B3 d. {+ b) _6 ^5 f9 Z7 [ - LDA STAGE_D2,X ;写入数字1 H0 j$ M; [3 K @
- STA $2007+ I6 h2 {6 l# z8 m5 ~
- STAHE_WRITE:
8 ]6 L, S7 s* _' k* P/ M - LDA $60101 C; ^2 }4 [8 e& u) j% G
- STA $42 ;初始关卡写入
5 R. X+ h7 u4 T* `4 p8 f - PPU_RTS:6 b, j" q2 P4 M* {% s. o
- PLA* Z# N6 s/ @1 E) p1 d' p0 I U
- TAY) S- M; r* r* Q+ b3 e$ y: R
- PLA
0 R' E) r% O! n! ]9 }$ C - TAX% L4 V* ^9 A8 ?$ M, e
- PLA3 |: U# r8 `% P1 l; N. F6 K
- RTS
U+ g" \5 W- L' x( |. x6 e/ m -
. j) |6 D8 g. i ]' b. t) P, ^ -
- Y( R' H! [9 v0 Y - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
$ h) L8 k1 o4 F! O( U* f - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF" G+ z+ N; g* z1 \) J
- + b$ I7 E9 } p$ y5 v
- STAGE_D1: ;关卡数字0 h6 T' ?6 K* a% W. Z1 q
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08+ b0 R; H/ [, D s" U# k$ m6 d% V
8 u1 W5 O0 I7 {! ^" w- STAGE_D2: ;场景数字
9 q1 ]# s& O8 `" m q - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03: n! K0 B B# q# E/ k
- " a) b9 j$ h! [) w2 w
- PPU_ADDR_DATA:- U( l4 w& z6 s5 K7 y7 e# ^' p0 \
- .BYTE $23,$4B
) Q# M4 G0 c- S& L3 m -
% v- g3 ~1 b* w' c4 Q - / M. t% o/ V6 r7 q. a' {: L
- 1 X) e4 a3 K, U L E# M
: @* z) ^" Q' C: F. q0 F- # P# h6 K p {7 W
- .ORG $FE21 / i) q5 i. y& O8 I9 C) t
- JSR $FF40# s. E1 p+ p7 ?8 w2 r7 R' ?
- % |9 ^8 h2 \% e4 s
- .ORG $FF40
) i1 J, y2 v5 O, X' ~5 h# C" H - LDA $BCDF
! \1 `) G* n0 D9 ` - CMP #$7F
) p9 E/ l! n/ G2 Z9 z - BNE ADDRFF56
4 s* }( p% P1 D6 G1 j8 B8 K1 ` - LDA $0018
|; e( {6 H2 l7 M; [. a- j - CMP #$04- k- K, q3 Y2 Z4 ~9 c6 F* {
- BNE $FF52
" f3 y1 a% e5 F - LDA $60108 J* x( f* \( l- t. K
- STA $0042& B! r( I: T" y" B) k
- JSR $BC00
& a* O7 F3 z6 i6 Z - RTS
, [( f5 w5 `/ P, n+ q - ADDRFF56: ; Z/ J% t# b3 q
- STY $4014
v" M% k0 Q2 A/ Q+ X$ h+ i - RTS9 E/ r" t: n6 f m& P( {6 H
-
5 ?! x% Y( f. }! m
复制代码 内容:( h# [ A7 u1 u& M3 z
1.关卡选择: 标题时,左或B减,右或A加;
; @5 ^# F+ u# s6 s# G" }$ e 2.一击必杀: 暂停后,按B键切换;2 W1 o8 Y+ Y, C3 n+ \$ f0 v
3.无敌锁定: 暂停后,按上键切换;
# d; D& j3 Z: r% Y1 ]) I' P 4.生命加满: 暂停后,按下键切换;; a. A* m+ j9 ~7 _% u$ {
5.血量锁满: 暂停后,按右键切换;
0 q: t q7 M( E( A![](http://www.emu618.org/data/attachment/album/201703/31/234012a25mlhm25yfm92d1.png) ![](http://www.emu618.org/data/attachment/album/201703/31/234012jqcaxb2qfjqb9q6f.png) ![](http://www.emu618.org/data/attachment/album/201703/31/234013ocdfrfinxczdygdj.png) ![](http://www.emu618.org/data/attachment/album/201703/31/234013ktphkb0t0xeh0hgf.png) $ o N! u) O* r8 c3 W3 S" B
5 e7 f& `; Z% j% BFlameCyclone.ys168.com
. j& O: B+ c3 @" rwww.nesbbs.com
# o* a: L, ^; i# F: q0 z9 K& f/ O3 K4 f
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|