|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
% f! S& E& ^! U0 E( _
5 E& D* Y# Y$ _3 g! ~' F[FC][忍者神龟2][END选关]6 _1 Q4 Q" X! @( p2 y- X& L
& J6 ~ a k* P+ c6 c: K* z/ n
时间:2017.3.313 _! b; y5 C- H% P: ]; G& P
作者:FlameCyclone- .ORG $B9E0
' P B$ s u' D7 V - ora_data:
8 g" h8 K% s( z0 r+ c - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
( q% `, Z2 C1 h; [# G4 S3 N4 `5 t. v - and_data:+ v7 c% `, k0 D5 l2 z
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
# G0 I: d) D3 L+ S; v0 C* Q9 b - ; O' L1 G6 H7 J: S
- button = $F8: e3 U# f" G* X' i I, A. s
- flag = $6000
8 ~4 V0 t X. D9 O; v$ E( S - pause = $3D/ G, M: v4 J6 j2 y+ V
- - r. @& S. p; v! u& [
- .org $BA009 g9 n9 s! y7 N4 D+ D& H
* P0 ^! C$ d4 t( h- e: f- PHA0 d, S2 h6 M! n5 O* t+ i
- TXA( r+ d7 x, ` K! y7 K5 ^' ?
- PHA: z6 O- I V, U# u; z1 Y
- TYA% {, q+ @) ]/ S5 _2 j: I
- PHA
+ V+ U1 U- E0 \ ?" ^+ O6 l W - JSR KEY_OPERATE4 S6 y/ o' D' n& I: a- o' E4 P
- JSR INV2 d E2 X) f& z9 C- n' E
- JSR LIFE
) P) g1 D% n$ h5 Z8 G7 }) N - JSR BLOOD
% K- o: c' Z* {; }9 E1 l4 W5 r! c" C) w - PLA D" H: _2 I. j( e7 p' Q
- TAY
7 T: ~9 y: q' `/ h$ u - PLA
+ L9 x: M5 s; a& i+ S - TAX
& Y1 `7 i1 L- C# [, c3 A- h - PLA
1 w& o# A: Q! ], H - RTS! V9 u4 ?% L$ u3 L2 a* ^
- KEY_OPERATE:
" K" C! A$ ^! A E3 f, y7 c - data_protect:9 q) L" P/ C& v- H0 K- \! k
- PHA
; @- F9 a( `& o' y - TXA
# l" S' b# ]/ G: L" ^ - PHA1 K& _# H% H, @4 }, m
- TYA$ ]: n8 Z/ E3 Q3 m$ w( V7 z2 a+ j- c8 | W
- PHA
/ P# y! z2 Y- }
( o* u# Y) @# K9 S' q' s- FLAG_CMP:% C6 n3 x: h8 Y, Q( ^7 S% R6 m
- LDA $600F
G0 U+ w) k/ L% m, G7 A$ [ - CMP #$7F ;标志数据初始化条件判断- B& {0 |7 Z4 C8 g
- BEQ pause_cmp+ u7 P5 v& }# N# l% ]
- LDA #$80
% j1 g! \6 t4 c - STA $A001 ;6000-7FFF写入启用
8 K, C& ]+ _: ]+ p - LDA #$00
" A6 q9 s3 A$ {4 C% P; m( j. c - STA $6000 ;数据初始化- }' h/ p; r0 X/ g* {6 ~
- STA $6001 ;数据初始化: K6 l) U" Q9 y }! ^
- LDA #$7F
: K2 S5 _) ]$ ]7 E) k, q - STA $600F
( a( y9 p6 P3 C* d - pause_cmp:$ c3 T" b5 Q- I9 o4 H2 R* d
- LDA pause* ~7 F6 T$ l: a' i, y: f; _9 m3 y
- CMP #$01
1 z) u2 \% e: y+ k/ B7 K2 { - BEQ button_press5 C4 d) Y+ T5 d& V7 W- i2 G
- PLA
3 l1 e; ~, u! t1 | K - TAY9 T6 f. k$ {: z: O
- PLA# }. q8 [) g- r4 G) C
- TAX! Z" Q! v3 J% N" R" D4 P M4 M! `
- PLA4 B8 D5 [) _( g9 e% e; f- _
- RTS. P, ~. m P1 I/ n* U# P
- + u/ n; M- G5 b. J
- button_press:0 n$ H+ E3 d! ^: [+ B! A
- ini_Y:3 c" V: ~8 M. p f9 p0 i* ~ h
- LDY #$00" Q; c6 b" B: e. r' e8 Q: K
- button_cmp:
5 M& W0 u4 ?/ g- X: M - LDA button,X4 ]1 V. T" Y3 r% ?& D3 E
- CMP ora_data,Y
+ U' D; Q- E7 L - BNE count_Y_cmp
! O* g/ U: l: F" o; P E. t) ` - flag_cmp:
& E8 t4 [% m( s g% l! E - LDA flag,X' T1 N. U, y# q5 N; n
- AND ora_data,Y
/ x; o# _/ o$ a% ` - BNE flag_and
" _, S- N4 V4 F - flag_ora:4 f2 L D1 X( d) d! ^$ l3 I
- LDA flag,X4 o4 r% x. }8 o4 r. @
- ORA ora_data,Y& L; L+ ?) l" B, N. H$ W1 G
- STA flag,X b& B8 D, y9 _# p; y8 |) y' t
- BNE count_Y_cmp
- i; }; v+ ~/ [& i/ u( l0 ^5 [$ F - flag_and:. d; i4 B; K% E2 u- s
- LDA flag,X
" T( F2 B" U; ^8 _0 K5 ] - AND and_data,Y
0 ?5 Q7 D& `7 N% i6 j( s5 @4 W3 }8 x - STA flag,X5 H! d% o+ \8 Y: d k6 s
- count_Y_cmp:& ?# _1 K3 T. Z" D' ~1 S7 O
- INY
/ C5 P F) [: Z7 `( r - CPY #$08
1 b7 z4 u' A' j6 n: I& v! O - BCC button_cmp
4 M1 T& e3 q3 z; D L, e -
* t/ N) T& j B4 U1 Q$ ^0 O - data_extract:0 _% b' g9 {! l& w3 T! Z% f3 Q
- PLA
y. u0 p& y5 d) J$ J - TAY
, L, u, k! m( Y& p0 B' b7 ~ - PLA# t* o0 {% j! J- P: e* ?7 t8 J
- TAX( ^/ T& E+ e3 P1 O7 P
- PLA0 F. @" j% {" F# d% F
- : |3 `, ^' [7 n! M5 p
- return:. o' i' I: _8 J9 W; f) ^ q
- RTS7 `; y) B; Y1 D" t2 s. i
- 4 K# i3 s, Z5 ]0 E, m+ Y
- ; r& S) z: E9 O8 ?5 c8 Q
- INV: ;无敌# v$ M3 g% [0 q) m
- LDA $6000,X
1 Y9 }# _: B6 r/ b. B: \ - AND #$08
' Z$ X9 N- D* K8 F; W* \ - BEQ INV_RTS) c- M+ J7 d& X) ~0 D
- LDA #$05
; j2 X/ \0 C% n" M4 A, z& s, f$ }) ? - STA $93,X
- Q0 w" {) J) s6 A% k7 v/ Y - INV_RTS:! W+ \2 N- N! `" I/ y/ ?
- RTS
' V* m3 |, U2 d) n- {, { a5 }6 M$ ~
: U* c# T8 e5 F$ Y/ Z& v7 k- ~-
( F$ a! i: n) ]9 W - LIFE: ;生命
- N/ R- ]. j- L. d# r( ~9 i; X - LDA $6000,X
/ f+ g& T0 u3 x$ m - AND #$040 F" g3 I% y1 O3 U6 d
- BEQ LIFE_RTS
, i% G6 X& C- |7 Z - LDA #$09
4 @, i' Y/ Z/ S - STA $4D,X
2 ^0 g& ?( i6 @9 z; c& |: k - LIFE_RTS:7 X3 ~( ?6 A o; S- e, ~2 i7 i
- RTS; ?# s# Q6 Z* R# Q1 i
7 o5 |3 S5 ~+ D" t U1 U6 ^-
+ n6 h+ Q: U0 C0 M! b - BLOOD: ;血量1 f' L4 W# a4 u4 h
- LDA $6000,X* j6 W4 l5 t& K6 `
- AND #$01
) u) {" `& Y0 z. f& z - BEQ BLOOD_RTS
: I1 ]+ u* j( y1 w3 }3 i9 p$ k - LDA #$38
% y* ~7 t" _6 v - STA $0568,X
- r. |& o4 V/ t3 g$ h - BLOOD_RTS:1 r$ g: p0 ] C# q- {6 n3 M
- RTS4 f! A& n0 |+ {" d- _4 F) W- k- k
-
! G- o# K2 F; ?7 g( p4 O8 m - - U* I1 a. n) ?7 z
- .ORG $FEFE: A. |1 D& d8 a" W0 m0 B
- JSR $FF60% K0 w5 D$ m! s" x
- NOP9 T$ A% J0 M3 ~$ Q. W9 S" F8 F
-
2 C/ c* m _) l1 }6 }) K% I/ J4 w g - .ORG $FF607 X7 K, V0 a! P5 s) [( j
- STA $F8,X1 E0 R2 A( J: b! ]% g- Y
- STY $3A,X
' ~& X; d" H8 b2 r - PHA
: G7 N U. ^8 U - TXA
. d8 d4 s" y3 r( f6 w3 }/ q - PHA0 g2 o0 m% j& B) d+ D
- TYA
6 B5 _, }) O9 Z3 e: D. Z - PHA3 ~; L2 s7 a+ O1 m% Q
- LDA #$024 \3 t0 t, I, H6 K. m
- JSR $DB11 ;调用系统切页
& v1 x: B- X$ J; k% {1 N8 N - PLA
# Y$ ^+ [1 d/ k; |: X. u - TAY
7 p) Y0 E, |) j' o9 Y2 \ - PLA
& T4 G5 L, L" v: O3 M4 ^0 B - TAX3 \6 B: [/ ]3 c% X! Y
- PLA
# W& d9 S: |6 J+ a4 H. K' R8 L - JSR $BA00
0 z$ W+ g4 z4 G$ `2 a m - RTS 5 \0 [ K! E' V( G3 M Q
- " r7 K4 |0 ]* x' Z8 ]7 c6 | m
- ;[FC][忍者神龟PPU][END]
. A+ W+ q7 P1 u
5 Z# m4 e3 S8 r5 r9 y I7 p' \- .ORG $BC00
% v% B* t: }& A# | -
$ O$ C& ~. \) B, U1 z w$ { - STY $4014 ;补上覆盖的精灵写入指令
" Q+ p) V% i5 _0 O6 j0 Z7 p - PHA
! l& @0 c; y* K- s" Z - TXA7 K8 X" e G7 H
- PHA
& @; K' u. s; h9 O - TYA
3 Q6 M' a) D# I: u& f1 `. w - PHA
4 l. b; D; C) K2 [7 Y - LDA $018
: s6 T/ h& W# s$ @. ? - CMP #$01 ;比较是否为标题画面6 z5 |; V( n9 v
- BNE RET
3 h! i+ m, C; k/ l7 \# R+ L - LDA $019
- \ ]& o1 x' j - CMP #$01 ;比较是否为标题画面! y5 y) {$ Y+ k- @0 J7 K. j5 ~( w8 O
- BEQ PPU_STAGE) q% P$ Z( e5 e6 }: b$ Y( z
- RET:
. {. {# | E3 `* {0 { - PLA
! K5 e' O9 O' o2 a' z - TAY
0 M1 {- O3 `0 M0 b9 G - PLA
2 v( H# h8 h( a" s; @ - TAX
# Y, _: K0 Z$ v0 [0 f! @4 F - PLA
. V, U1 d% ?* t4 V! v - RTS
+ z2 t) |' a6 l' u; O - PPU_STAGE: ;STAGE显示程序8 U7 O3 i0 B' W& v" |# b6 G' d- ~9 x/ @
- LDA PPU_ADDR_DATA
% B( H/ j! N! X- O# D6 Y3 H3 ?& o - STA $2006- H' K5 L$ r" h: _9 W
- LDA PPU_ADDR_DATA+1
* B) H+ B& |* Z4 I: j5 { - STA $2006 ;坐标设置6 }3 Z) B2 E! v. e* o
- LDX #$006 X2 R K$ y+ K; Z- v" Q$ @" e+ Z
- PPU_STAGE_WROTE: ;写入STAGE字模' v" \! \ ^6 X7 b
- LDA STAGE_DATA,X
F# R C+ @/ I( t0 L8 @- e - CMP #$FF
% O V4 q. D- q5 I0 i' x, O - BEQ STAGE_CMP+ |9 H8 j9 K* R, _
- STA $2007' D+ k) F8 P3 `7 }# L4 ~
- INX
. d6 g. _$ E7 d1 K L. m - BCC PPU_STAGE_WROTE
7 V1 u+ \4 \8 K' N - STAGE_CMP:
4 k- b0 A( f9 U4 V" ? - LDA $60104 m: t% x; k* {/ z, J& S0 }
- CMP #$FF ;关卡数据初始化条件判断% {' H6 j ]" i7 {
- BNE KEY_B5 ^; w N+ j# n2 ?+ r5 a8 Q
- LDA #$00/ m3 z/ C" b6 i- ]
- STA $6010 ;关卡数据初始化5 p$ r. a1 d" {, q9 s6 W
- KEY_B: ;关卡减少0 i. j1 u3 X! z
- LDA $F8
! M% i' s/ e4 i. } - AND #$42 ;按键B或左减关
( f% ~* T4 e$ E$ y& L - BEQ KEY_A
1 ]+ k6 X. S9 k! @* I/ k - LDA #$FF
C0 T: W# D7 E2 Q - STA $409 c: i6 h& F2 n* J9 s r: p" Y U2 z0 U
- LDA $6010. F, s, Z6 x" G& P8 _
- CMP #$00 ;关卡比较
! R7 y" Q/ h W$ a2 D: \ - BEQ KEY_A
A+ v: A2 B' L2 N - DEC $6010 ;减关
6 [5 p$ B! S; G" D - LDA #$571 O$ W7 I! m9 ~
- JSR $DB52 ;按键音效3 G. R6 O: n$ y2 ]+ ?
- KEY_A: ;关卡增加1 C: D! Q2 r/ `7 p
- LDA $F8* J2 d4 h2 |: `: _! B2 I- o% X$ b
- AND #$81 ;按键A或右加关! A( i* t, X$ Q. T
- BEQ PPU_NUM_WRITE: H7 ^# k) o3 h6 a6 N& P
- LDA #$FF+ s8 H% n! h9 i+ P# }
- STA $40
' p9 h2 L" p; L4 V - LDA $60107 I+ a& q( o; a
- CMP #$0B ;关卡比较* x) L, K0 M! U9 o
- BEQ PPU_NUM_WRITE7 d# x/ a% E. O' I
- INC $6010 ;加关+ {- r: ]$ H( K; L& H7 y$ O
- LDA #$57
( s' v2 c1 F, f: R! ^ - JSR $DB52 ;按键音效# K9 O+ ?* K5 b" z/ M5 |- U
- PPU_NUM_WRITE:/ }4 H; h4 ^% A, W. H: j+ g
- LDA PPU_ADDR_DATA6 D4 S' K2 Q' t7 a4 G; Y* X7 O, L9 ]
- STA $2006
) _- z( d2 \# l# X+ y - LDA PPU_ADDR_DATA+14 f9 F& A; {2 S6 V: [" P _
- CLC2 t$ ^, ^" |4 n
- ADC #$06
2 m6 N# T$ p9 V2 w, J( B - STA $2006 ;坐标设置9 z7 @" V9 i4 ~
- LDA $6010: j5 O: R3 a3 {
- TAX
1 x5 N2 k# g5 J. u - LDA STAGE_D1,X ;写入数字" c& O0 _( p4 w% g* m2 z) [
- STA $2007' o5 Q# r& L6 ^0 N8 h
- LDA PPU_ADDR_DATA/ R" U6 f8 ? R. v8 P
- STA $2006$ ^- I/ h! \1 f% ]) m9 Q) |
- LDA PPU_ADDR_DATA+1
! t* K. I; H& {8 v* h9 h - CLC" f1 ^" Q* K+ ^
- ADC #$0B8 t. F- j4 i8 V( S$ s; {; n
- STA $2006 ;坐标设置
# T; O! l, p \4 e' W) v - LDA $6010$ d/ e8 z# Z& w j8 @1 t! p: H
- TAX
. `% g0 M9 u3 f" m( a3 E - LDA STAGE_D2,X ;写入数字
' y. C1 C% n5 y! `% m# V' \1 i+ D- O - STA $2007
2 K0 U2 r4 E4 r z+ P - STAHE_WRITE:
3 C' R2 Z; ^% ^- } - LDA $6010' x! N& M3 j7 d. P: w8 J& \
- STA $42 ;初始关卡写入4 N- Y. m# \! u" p x2 _
- PPU_RTS:& e- o! r( R0 k+ ]" h5 S
- PLA4 v' Z0 k/ \4 j L7 r+ Z6 \( e
- TAY# c0 I: W4 U5 E& F; Z
- PLA
! @9 B0 B8 x- B& L0 g9 j T3 ~ - TAX
% K- v- ?$ J$ ^% y G - PLA
# C0 h' Z- c4 }4 d% c/ O4 W- K - RTS
$ [' U }& V: E( v) z/ C$ M6 m - 8 f v8 V( K: x7 g6 J. J3 A
- 2 \8 U8 C. p( ~! e
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
5 o. C$ U. g& R! D5 m - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF i* a4 q4 s2 f+ K* z+ B+ Q
- ; T/ _0 S7 ?2 C3 S3 @; X) C+ ?
- STAGE_D1: ;关卡数字
0 r9 y: ~& x) F K v$ A$ V: z - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
6 r+ s: d% ^% O; Y- m+ P% I
) k2 f- P+ W7 z/ L- STAGE_D2: ;场景数字
_$ b! p& O" Y - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
. @3 S: o7 @# o8 q( } -
0 e4 m; w, h4 \; `! K9 _2 m2 Y - PPU_ADDR_DATA:* N; a" K$ `( ?, u! L3 J: Z/ A* R% [5 H
- .BYTE $23,$4B
8 w) z4 z: p$ z# S - * v% Y* H2 Q$ U! Q, q! m
6 B( v: ?2 v0 N+ ?2 z
o4 O+ n& _0 [) S% j
% b2 a! t) y, }6 ]$ B2 B
) ~2 _2 @3 g- T: E: p: R- .ORG $FE21 , ?1 V0 L0 n' ~8 T- B' c$ v
- JSR $FF40
3 @7 P) {8 L# E' W8 t2 w - . x8 L5 N n* D8 I$ ^: ]0 G0 ~7 f( F
- .ORG $FF40
4 h/ Y. U( |& w/ p9 A6 {" M - LDA $BCDF
5 J# A1 f" `) f( N$ @) ^& c - CMP #$7F% E7 w0 o% Z8 ^- C7 n6 r
- BNE ADDRFF56( R$ T N: k6 [& F
- LDA $0018
5 j7 _+ \- M& c! Y - CMP #$047 F) d8 c# a' e C2 E2 q
- BNE $FF52
; k% x5 n' o3 i6 O - LDA $6010
+ g0 N! D7 V* n4 u - STA $0042
_ |1 ]7 J8 ]: x1 K - JSR $BC00
8 F. t: ?* X( |% O/ Q - RTS
. w/ ^# ?( B/ M6 \% ` - ADDRFF56:
! D: b/ P, E* G5 U4 H" ^ - STY $4014
& q" _( |% ~0 ~9 C* ]1 u; O6 e7 p - RTS& m, f0 ]" m2 T4 s# d. ?
- / [3 ?# K, r. D/ k
复制代码 内容:6 O: Y2 t1 r" y" P5 I; M D, e
1.关卡选择: 标题时,左或B减,右或A加;
/ l' [, `. p" }5 ?/ f' D% M8 Z$ c 2.一击必杀: 暂停后,按B键切换;
) x6 Z- x( ^8 G x2 X9 o9 j* k 3.无敌锁定: 暂停后,按上键切换;
6 F. z* q( [( x- y2 b N: D- N4 X# }+ a 4.生命加满: 暂停后,按下键切换;
8 S7 W% C' h1 K4 p. z5 Q9 J 5.血量锁满: 暂停后,按右键切换;% Y! |# \( H# a5 y' b# W/ b) J: V
    % H+ U ]" D t* S5 D. H
" T* _- w6 }& h
FlameCyclone.ys168.com- }) }3 O# H) a2 X
www.nesbbs.com5 R _; x! q% r$ t
6 D/ j3 K0 l2 d* g5 H
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|