|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 ' e! m& o7 y8 P9 G" i! ^
9 a$ C& V$ A; Z[FC][忍者神龟2][END选关]: n- l* e d( e: I& E. q+ X
' M9 D0 ?1 y* O7 w% c1 q1 D* s时间:2017.3.31
; z! L% g* @! o* m X- A作者:FlameCyclone- .ORG $B9E0
9 b! W5 G# W: G+ M' J" G# c/ _ - ora_data:& y3 k/ ^2 w% q. i. | l; K
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
$ T" m- ]. e6 P- q) e9 O! X8 A - and_data:
' I/ t1 o0 I" ?) c3 j - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF9 S) c$ K a- I, u# v# n: m( e
-
$ c7 v) B2 A2 R, _# k* G M - button = $F8
8 s$ o0 v- p) N - flag = $60001 y. g9 v+ q0 }8 d0 Y$ p( M
- pause = $3D1 G, \- ?' ^6 G X5 T- w0 P' D9 D! `
- 4 y K+ U0 o1 f* A! q! u" E
- .org $BA00 y# ?/ O) y: {5 w# X; n
- & C% N( W+ ]" ?* i0 T3 a7 }
- PHA) @ W; E7 q$ ^1 s. W
- TXA4 M. v5 _9 s; G6 q6 t1 o
- PHA$ \+ s! S$ p- E5 d$ S2 V6 ?
- TYA
1 P8 p$ t- f& G6 f2 H* A+ ~ - PHA9 @. i6 c2 t3 h+ m* B& \
- JSR KEY_OPERATE
' `6 B4 t, X# n4 ]7 R3 |9 N% m - JSR INV& v% h a/ @2 ^5 U
- JSR LIFE. f* L% p, z4 E+ ^: Z' C9 _
- JSR BLOOD5 s) _+ Z5 t; o- X" q
- PLA. N5 W9 h' v8 G* M
- TAY
" i3 R7 ~2 u$ \" |( P6 v" q9 ] - PLA
+ Q( g4 ^5 I: R! u3 p$ x4 E p s* x% S - TAX& G \/ h% ?& b+ @& R: k) ], Q
- PLA
- \5 k2 a" X5 B( W9 g - RTS
4 u7 o" W) D6 y- ]6 s7 H0 U$ f - KEY_OPERATE:; ]& h4 ^' H& f: i& e+ E
- data_protect:
5 A5 d0 p" r8 B% @( B7 R - PHA' n9 \. M: v/ m) T a9 g6 _: \
- TXA9 w1 A- h9 S, S: S5 p
- PHA# L+ c2 o( h" _; W" g! J# P
- TYA- U: y5 O9 n/ [0 u0 J! q
- PHA& d7 E4 h0 N5 ~
- 5 G B" D. z. h' @
- FLAG_CMP:8 f8 l6 Y; T; P
- LDA $600F
' y5 p: ^3 d/ t% y# I - CMP #$7F ;标志数据初始化条件判断
+ E/ @5 ]' i+ j( N - BEQ pause_cmp6 Z8 ]) i, E7 [' n, j$ ]+ V
- LDA #$80# s4 A2 C* R0 f# @$ k+ n! R
- STA $A001 ;6000-7FFF写入启用0 z; u( C0 ?( E. E* h' v% Q
- LDA #$00 N/ B! M0 z; K. K
- STA $6000 ;数据初始化1 _6 u, g/ l% p- L4 [
- STA $6001 ;数据初始化) w& r8 ], T) h
- LDA #$7F6 l+ D5 `9 c, a6 h; x# ?: s
- STA $600F
$ q5 f* Y4 }9 b0 ^ F. F& g9 @ - pause_cmp:3 b: l, b+ }" J; x: j
- LDA pause. l `2 a' x$ O% M' n
- CMP #$01
3 ~: C+ u+ Z: P* h - BEQ button_press
6 d; Z3 t8 Z) L( V5 h - PLA/ x; z9 y* P, t# ?; f
- TAY [) E& Y% x/ B' f1 z J
- PLA" i' R) U1 U9 i1 u0 }6 A+ ]" h |
- TAX1 ?- _( q) P* I [
- PLA* ]# h! r. o! z
- RTS
; H! s, Y2 J& T
5 U3 e4 G1 ^0 r2 p& w2 V) r- button_press:' Y! C+ j& o6 @1 h2 W$ n
- ini_Y:; U& M* W/ i# T% Z h7 V7 p0 j
- LDY #$008 p/ v! R; A; ]% |" Z: p; }/ Q
- button_cmp:
, W% N; b: z5 A - LDA button,X' Z/ a; I0 f0 A! n( j; n; o X( e
- CMP ora_data,Y
/ x1 B- w+ C* P& m i9 ] - BNE count_Y_cmp
' a7 g: D( c( E8 ^6 h- C2 f - flag_cmp:6 h7 ^; E- t, k# s$ {; O" M! u
- LDA flag,X
/ @" B- p' M' U! F - AND ora_data,Y" B, z. @! p6 Q# X6 v1 l
- BNE flag_and; x$ n# @* e9 T0 l+ Y
- flag_ora:
/ S. q! S$ [: B0 ^# w& y - LDA flag,X( L2 m% D) A3 m6 g# E: W. A
- ORA ora_data,Y
7 E [6 O0 v" e" E, D0 Q# ?8 B0 J - STA flag,X
" M/ |2 t" M+ H7 O$ u* K' e - BNE count_Y_cmp
6 V6 S! H5 c5 j9 |3 e7 b - flag_and:* K, n1 o/ a7 j6 p, B
- LDA flag,X4 W9 n ?. h6 i% Z# r3 J; g8 B
- AND and_data,Y
/ }# V9 f4 }7 t6 O) T5 M( J; g - STA flag,X
: O& T/ P# n+ Y9 B - count_Y_cmp:
! \- h: M, y& t# k8 J - INY Y r6 w3 P% J, w( Z1 n# C* Q
- CPY #$08* V* u' \* u2 n o8 B, Q3 }' P v0 d
- BCC button_cmp% ?1 Q; C T( U3 p
-
& J# Q* [& A5 X5 b( i. _3 } - data_extract:
$ k+ ?/ Z* u7 l& \* `( q - PLA
% b( e, ]- k' H" R$ i; @7 a% P - TAY5 |4 c [% B) o' x3 h' g5 p0 Z
- PLA; k9 w" J3 f9 Z5 v6 Z$ v) E
- TAX
0 o4 |0 n* ]' n2 R0 y - PLA$ y; T0 L! ? H/ P- K
-
( c" {) J! C) p' ~( r/ j. G% I - return:
% Y/ q5 C% W. b8 U - RTS
! ? P; J$ c. ?" i U) m: c - ; X+ y. {2 L2 K) c
-
1 L* l, C/ {0 k! Y2 c; N6 { - INV: ;无敌
9 u5 c3 e4 |9 V' \& D5 D+ O; u - LDA $6000,X
5 a; N5 M+ g; W8 ~; v5 v- L1 } - AND #$08
& O2 W8 z, ?/ x- A; B& M - BEQ INV_RTS
) h" i' ~' E0 v2 e% q. j5 D, P - LDA #$05) i; h" p& h' O& B: @5 I, c( ?
- STA $93,X0 W+ k+ ]( T* i/ y4 J' n7 b
- INV_RTS:+ l9 l- F) N# `, k' u) T1 N. T, Z
- RTS
! F. {( V. G4 v% p - |2 `; G' q2 x
- ! q7 t& l$ U& _" P& S# g
- LIFE: ;生命. z) F. Z2 p6 c4 y' `0 X
- LDA $6000,X
) b6 ^( W$ ^4 Z" @/ M - AND #$04
8 I. j' V( [- M v2 x9 _3 R5 _7 X - BEQ LIFE_RTS
& B+ S8 x1 `' F) \ - LDA #$09: B, \, z0 d; b, j
- STA $4D,X3 X+ y! O& S5 L: ^0 u9 q
- LIFE_RTS:. l/ h' c/ z) R, F! Z: O) [7 ^# L
- RTS
% Q8 n3 M$ ]6 o2 Y; p - % q' R( X4 Z$ R6 W5 ^4 k6 L
- 8 @# P* t0 F4 |% b) l5 d: k+ n- E
- BLOOD: ;血量
* \1 y: [: g* y( L - LDA $6000,X/ Q5 F' ?* ?. U8 k0 i: P% H
- AND #$01
: T& q9 P' K9 m - BEQ BLOOD_RTS5 h: `. r. K! k" o1 p- }+ }+ ^/ E
- LDA #$38
7 e" ]: @ A8 \. L$ R) _ - STA $0568,X& I9 W( B- b, ]" t
- BLOOD_RTS:
' A% j* ~( V! o- L9 G9 h2 n0 r6 B0 R. @ - RTS& Q# Z: x7 \0 P2 T2 \( }1 ?- o7 g0 D2 A
- - {! \ Z" ?0 i4 E
-
; Q) {7 Q6 P( N# X1 b8 s - .ORG $FEFE6 K I8 e' \7 L h
- JSR $FF60
0 E$ {$ H5 a) c4 Z" r# Y ] - NOP: e4 M. L) P. i. T
- % W, k+ g* T1 u+ I' h3 h, X
- .ORG $FF60
% {8 x0 o. h2 Y& V$ `* C - STA $F8,X3 \" p$ Q1 c* `3 n N1 B+ [: d, A
- STY $3A,X7 i2 y ~0 a* [- o" a
- PHA
4 ^; F8 G7 C7 d" G9 f - TXA* f' T1 X: T( h, r
- PHA
9 @! b" `8 ?1 M; w: [7 f' t - TYA3 E, L# o& x* ~5 `1 ?/ S0 b
- PHA2 q ?) Q+ ?: O% K
- LDA #$026 O& K8 S% M; y9 A" I- z
- JSR $DB11 ;调用系统切页' t3 p2 \6 e' P+ O4 g& E
- PLA
( }/ N1 s+ F6 q - TAY* q# t' O7 `0 b' a A
- PLA* A. H. M& S M, Z
- TAX
! m) U3 K# L4 `" \, C. C Q - PLA
' X# j6 K2 P1 N% h. p. [' t: w - JSR $BA003 }9 c4 i" K( l$ t/ L1 J; W9 R
- RTS
# s, l# }6 c" G: y* B
t, f7 K2 ]3 m# }, s( k! u! J0 |# @- ;[FC][忍者神龟PPU][END]2 [. _; j5 N2 p6 q/ X. g. E
- 4 M- Z0 M4 |% [6 g' _/ u& n+ E8 D
- .ORG $BC00
( \# G* |" ]0 G" Y - 2 L3 e9 h" X/ f, [1 [' `% V: S. j
- STY $4014 ;补上覆盖的精灵写入指令
% @8 \( Y3 G. I* F - PHA' V' S8 R9 R h; k3 M) n9 |
- TXA
" G/ w0 }8 S. m2 j3 h. N, | - PHA
; k2 J8 U) Z; H7 L, F. e: o - TYA
' f9 @: z2 O4 {, p. Y, p! U - PHA3 p2 W. o4 [+ @5 o, `" u5 w
- LDA $018
B! X+ W8 }- `2 S+ c - CMP #$01 ;比较是否为标题画面, s d* Z2 y9 S7 \! G2 e) J
- BNE RET
5 w4 D W/ U a/ c/ e5 z - LDA $019; L* `! \$ O9 T( Y+ U& Z) G. o, B
- CMP #$01 ;比较是否为标题画面( Q6 _& g# D6 O _$ u1 F" ]5 Q! O
- BEQ PPU_STAGE( S, u# B4 y9 ~; P
- RET:. m" |9 A# ]0 p/ d: L' |
- PLA
6 f- O* Z' {" }' f+ K - TAY
9 ?5 k; r/ s' y- M+ c4 | - PLA
* }+ k# S2 H1 e! y( i) G2 x) a - TAX# M8 a5 a$ Z# @+ o% O
- PLA# E) R8 t5 I$ H
- RTS1 l8 g2 ]' i$ ?: c+ X
- PPU_STAGE: ;STAGE显示程序5 L3 V1 ~: x9 I# y5 X) z5 J6 d
- LDA PPU_ADDR_DATA; g# _7 \; z8 A; G
- STA $20064 S1 Y. d% _+ G% g
- LDA PPU_ADDR_DATA+1# `0 y+ s+ ` Q
- STA $2006 ;坐标设置5 }* @$ ]$ K$ F& t
- LDX #$009 q, w, b2 c& c7 w2 M
- PPU_STAGE_WROTE: ;写入STAGE字模; \) e9 i6 ]% t4 c" i! C' ~' R
- LDA STAGE_DATA,X
$ ^/ W0 v& D9 e# \+ e( K" v - CMP #$FF
6 n7 t: b0 Y$ C7 S% i - BEQ STAGE_CMP0 A: @. i* x) D$ f1 V. f( _9 F! [. q
- STA $2007" T1 T& w0 P6 ]$ F
- INX8 _$ v; z, F5 `' c* Q! B
- BCC PPU_STAGE_WROTE
! z0 | O+ A0 }) L$ a( E - STAGE_CMP:% S1 A$ \' K! [! w
- LDA $60103 x4 ~/ h4 u, d9 f
- CMP #$FF ;关卡数据初始化条件判断) u- x7 ?8 v2 g0 S2 A Z5 T
- BNE KEY_B
7 B5 b# N; e, t - LDA #$00, r+ p7 f+ Z# d
- STA $6010 ;关卡数据初始化* v: W& g) p6 I( ~6 J7 J
- KEY_B: ;关卡减少
2 p. b& m0 ^: D. x, M - LDA $F8: v% Q; P. Y8 J
- AND #$42 ;按键B或左减关, a$ O' ^1 o/ u9 D2 ]: |
- BEQ KEY_A
# e% |' @1 R$ f$ y3 y - LDA #$FF O# K, n c4 c6 J& @7 d9 @1 X
- STA $40; X9 x$ n. a7 X
- LDA $6010+ ?0 _6 B" A% R- h
- CMP #$00 ;关卡比较6 A9 z% t D# ]0 ?) s
- BEQ KEY_A8 L1 V# A' f" A1 `
- DEC $6010 ;减关. O0 l" p" x5 a" U
- LDA #$57
6 K, c' H% P5 k/ F7 v, v, ] - JSR $DB52 ;按键音效/ H, `! I7 @8 e/ z0 H
- KEY_A: ;关卡增加0 G- S1 j4 j( s) Y0 W
- LDA $F8
3 R; X" H% }# O8 k - AND #$81 ;按键A或右加关% {# o+ K1 U. [( g
- BEQ PPU_NUM_WRITE
3 @6 c5 P4 E0 g' [ - LDA #$FF
. I5 S; a4 O; ?6 x5 J - STA $40
' Z; |( [/ w( P% C. S- ? - LDA $6010
+ j' r7 \4 y) s, i! H, i0 } - CMP #$0B ;关卡比较' v: s* E3 o5 p7 Z5 s
- BEQ PPU_NUM_WRITE
2 m2 p5 [3 i' \ - INC $6010 ;加关
O: l' u. z0 D7 `- L _! }- S - LDA #$57
9 g8 m) E0 F- D: v - JSR $DB52 ;按键音效. H! g: B% p7 O m7 h7 F
- PPU_NUM_WRITE:
$ d2 v+ Q, j. R! q. w6 j) p' y - LDA PPU_ADDR_DATA
# \, L# H+ t& @0 y, Q0 n; f - STA $2006
, x0 r. Y/ t" V% b, ^ L - LDA PPU_ADDR_DATA+1/ A' a1 o" X y0 L+ y0 F9 q {8 P
- CLC
* M2 t. ] w; y7 G4 g* F% S - ADC #$06
( e/ V+ ?1 ^: U8 I: h6 R+ O, j - STA $2006 ;坐标设置
" y2 C( |( b: j - LDA $6010
* a+ F4 ]* I4 S* v. F2 m; J! R - TAX
9 Z5 x( y5 q" h( ?5 y - LDA STAGE_D1,X ;写入数字4 F/ \/ H' B! I. l/ D2 ]9 u
- STA $2007. l8 V) W, N- D" V: S& V2 H! n/ d
- LDA PPU_ADDR_DATA0 [$ M5 x4 T: L/ R
- STA $2006( s% u" q s( Y! V+ y
- LDA PPU_ADDR_DATA+1
! o: s% [' B6 t3 f$ z - CLC' i3 z+ C* R2 S: F3 c
- ADC #$0B
; ]( C, V" p! ? - STA $2006 ;坐标设置
# u1 ?& a$ A7 G4 @6 e3 T; I - LDA $6010
$ O3 ?7 o u7 B7 N - TAX
. g$ _: e" z, W& |. I8 n5 H6 O2 n% R - LDA STAGE_D2,X ;写入数字
9 Y& m: d% P7 |) ]) z - STA $2007! p; A! `0 ?( [0 N ~6 p0 P
- STAHE_WRITE:
! b4 }# t6 B# b; i% e8 X - LDA $6010
& Q& ]# R( N9 `! q* {" E3 o5 q - STA $42 ;初始关卡写入) `/ N2 w; v5 R0 f0 G, Y
- PPU_RTS:
7 t5 j5 P: ]6 R4 P - PLA
_' g- K/ w9 M; `4 _! p1 a - TAY
$ w; M% y; \$ P - PLA0 M5 {; l/ G8 ]0 O3 G5 R1 m
- TAX
' m6 \* p- t, m! M - PLA) s2 Q1 X& V( \0 @( l$ I# \
- RTS. h8 l( l+ L1 e1 r9 A6 C' {
-
7 `- q) |* u" ?3 l! u' Z -
$ k! G' |; [0 Z$ P2 u) h, t, ] - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据: b* r8 C% W: O6 p4 B
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
' q. n! b) u, ^2 c1 w$ Y4 V! O - ( G( U) c" }, j, ]8 G. {, W
- STAGE_D1: ;关卡数字
- @: ?- J7 v' y( E3 c$ x - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08; H5 ^0 a9 P3 }& b3 R
8 h4 x: Q0 e$ F& w0 R! U- STAGE_D2: ;场景数字
/ s; i* V/ d4 |7 V% H7 t - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
; r- Q/ g- _. U& w$ ] D - - z) S6 d# A" a) e9 V
- PPU_ADDR_DATA:
. A$ {; C# ]( A* c- O. V: K$ `: g8 | - .BYTE $23,$4B" L4 ?( G& w7 V% U3 K- F: H" Z
-
! L d1 T. b! ~' S* C3 V - ! P* n* [1 W! j! ?/ v
- ' ?$ a6 v: D" J8 V& r. `- E- Y
: [2 P# p3 a% O1 w: e& Z- 3 m* L: Z6 o# E7 y0 r/ _
- .ORG $FE21
+ h6 [- }+ L2 k. a# G, ` - JSR $FF401 ^# ?, A5 b) Z7 L* k% ?3 r
-
6 H. f- _% D( [! N - .ORG $FF40) @. ~3 i p7 A. l9 Q
- LDA $BCDF+ {) r. s8 \6 r; p
- CMP #$7F
* k6 S4 \& r$ a; ^9 X" W$ C0 w4 o& l - BNE ADDRFF56
1 W s5 N2 K% C: J0 W1 g) B - LDA $0018
+ B$ n) F0 J9 w T - CMP #$04
4 w" I! O6 V# J8 f/ J - BNE $FF52
3 A) i4 _/ \8 Z/ l' X4 r - LDA $60101 B% j/ D- }! @8 K9 l7 Y* s
- STA $0042
: r/ k# X2 `& M9 o/ U2 o - JSR $BC00
6 n: k6 _3 `+ z8 _1 Y. E - RTS- j! ]4 t ~/ r( b: a; o! R
- ADDRFF56: / L! e3 ?2 t& {+ C
- STY $4014
% m# C; }3 Y1 v* K - RTS! S( B. Q1 _& z6 Y+ ~5 s, b* v
- / B, ~4 |( V9 @7 }6 w% Y0 E3 c
复制代码 内容:
$ {7 v! t' \& I8 l+ c 1.关卡选择: 标题时,左或B减,右或A加;$ f* C+ i7 }, D8 }' }1 T t
2.一击必杀: 暂停后,按B键切换;% ^9 i9 L* q; a1 N5 G8 n. Z
3.无敌锁定: 暂停后,按上键切换;4 S$ r: l& C4 N s" v; r5 N
4.生命加满: 暂停后,按下键切换;
" r& a1 o/ F; A. j3 i. m) H 5.血量锁满: 暂停后,按右键切换;
% Z" j) d; \/ Q    
2 h; v4 E4 G, h* s9 @% A& U* N- W$ M6 c; w
FlameCyclone.ys168.com2 b. u# j* D2 l5 [! C; x
www.nesbbs.com( a- F+ A- e5 z+ m* \. Z( g
- u m, w& r8 ? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|