|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 : U% p, R3 J1 V! e* n) w1 a
9 G2 k8 t* a4 s* B% L
[FC][忍者神龟2][END选关]
/ s. j" H1 A D* g' V. g/ g# g, ?# ^
时间:2017.3.314 r4 l' _3 ]! }. P$ K+ l
作者:FlameCyclone- .ORG $B9E0
- T- {! z6 F; ~+ \' b - ora_data:
( r1 A* j! \2 s8 c( v! z- k5 |4 F - .BYTE $08,$04,$02,$01,$80,$40,$20,$10' p5 p3 H( _/ i& F/ i8 L
- and_data:
! F4 `, [5 _+ U - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
# K: r3 ?8 R# [' ?, b -
: _. q0 h* W; K1 t9 h, r- O+ B) ]( s - button = $F8
: Y& Z2 I* G ?! P- ?* r( Z - flag = $6000
2 I8 H( V' E* P& u - pause = $3D1 Y+ O5 Y* |* o# } _* r
( q! F% U; @) p- |3 ?9 }- .org $BA00
9 X- K9 Z% Z1 q8 g% F
$ Y3 ]2 b8 \ b0 e: ~( M- PHA
) Q: y3 v0 E {3 g - TXA1 y6 |8 f e4 ^/ D' k
- PHA
' n4 }7 G" f) b& d( G' z, _7 H/ Y - TYA
% P; \3 k0 ~# A* T, B/ @ - PHA! G) |' i, n E3 o" W" \5 a! a
- JSR KEY_OPERATE; _' Z" {7 E2 s, L9 P) _
- JSR INV7 \6 B0 @* a; k, y
- JSR LIFE/ D, Q1 M7 X* ?9 U5 G6 w
- JSR BLOOD
, x f3 F- z8 X0 i I$ i- c: t - PLA- J, t$ ~! A! G, z. L/ M; U
- TAY9 V- G. i' t+ a- O
- PLA
! V+ {7 y; q- D6 V X0 ~ - TAX6 r: q# [! }# |7 C# ?+ R- `: w+ j
- PLA; k2 N4 n: g! I0 @8 C
- RTS
+ |" [" K2 u2 \. J: P! Q6 A& Q - KEY_OPERATE:+ M" Z, H! c" f. \
- data_protect:
: X( d0 R+ L# ~/ C9 t" z! D0 k* S2 y! S - PHA
6 ~' ]) h7 R4 H( { - TXA, u1 o8 o' m" j
- PHA5 |# ]7 | E, ` B8 `3 l: A
- TYA% i Y6 q5 J6 n- G; S' K1 F
- PHA
6 Z% i- X4 G# S' G
* a" j( C. a# Q" p& C5 E4 l- FLAG_CMP:3 X9 M- ?6 V. p* B
- LDA $600F' d' H7 k9 O% S
- CMP #$7F ;标志数据初始化条件判断
/ p- R) }! T: t7 n1 l - BEQ pause_cmp9 T& r R8 w- n3 I3 H/ @) A* ~
- LDA #$80% H) g% V0 ~: [% y' U
- STA $A001 ;6000-7FFF写入启用
T4 g( X' m2 d) W' u - LDA #$00
2 i* J% P! o2 P$ C9 J# L' C. f - STA $6000 ;数据初始化( I# }! p$ E; I5 z# e) e
- STA $6001 ;数据初始化
4 U; v% {" p+ E - LDA #$7F1 S7 c( N( G# H( o9 F& S
- STA $600F0 e6 A* d4 B) z6 w
- pause_cmp:
' k# m* Q6 s. s9 i/ \7 {- w& c - LDA pause3 \4 i: k2 \9 v/ `
- CMP #$01
\+ Q: U% x+ G- I - BEQ button_press
* M3 W R5 h, G2 c( l. S - PLA0 s2 j4 i4 J, R* P* u. a0 f; |
- TAY
5 o1 O9 V4 _3 _5 B. e - PLA
9 z2 A4 y0 Q$ a) c8 h4 ?# H' I - TAX
( c! Z0 h. G8 i2 G, Z - PLA, @# c9 }3 Z# {
- RTS
. s1 m# c( }; H3 v* y+ Y) a - / M: B( L' j- B9 y
- button_press:
) s) t9 i7 n! T" E: h! [! m - ini_Y:1 J! c% }" h* ^! c
- LDY #$00 a9 _4 b8 k' k7 `
- button_cmp:, V( y8 H3 P2 k# Q' M$ _
- LDA button,X
: u D" J, ~) n5 E - CMP ora_data,Y# |' }5 S. X7 k2 }$ E) x/ d( T2 U
- BNE count_Y_cmp
, ]" b* C- o( x0 O) O - flag_cmp:
; O2 S% J- y5 N* G) A - LDA flag,X
& c& j4 M3 b; [. y; D$ ~$ H - AND ora_data,Y
1 C+ T' l, W8 N# w/ g0 \, [ - BNE flag_and$ l' O/ J+ `: q, P- {7 d
- flag_ora:* W( y2 z' W# I; v
- LDA flag,X
! T F# s4 f* g4 e; I - ORA ora_data,Y& i0 N/ P- e" c/ _( t! ]4 _3 J
- STA flag,X
2 {* M( A4 `% P. i$ g/ k I' E2 l - BNE count_Y_cmp
! `, ~1 ]. [) X3 @ - flag_and:
* t& I3 b& G) r! Q: y t3 W - LDA flag,X
5 V- N! O+ Y4 s# M8 R - AND and_data,Y/ @& j& A0 O: H3 E; a
- STA flag,X0 h7 D: P+ L3 u5 `) O
- count_Y_cmp:# G4 o2 @. O# B- Y8 h3 F9 z/ E
- INY e* y9 F1 [* m1 X& t
- CPY #$08
& L: V5 o! \) H& C' g - BCC button_cmp
; Q7 O! q0 l5 R2 f: v$ O -
7 ]* U, E- L# U6 R- ^4 J1 n9 m) x0 y) \ - data_extract:0 B6 Z+ M1 i: ]5 \& p& b
- PLA. X: A1 @8 m& y `6 k1 g
- TAY
/ R- e9 K' w& s4 E- a& \# N - PLA( k# G& [' \, v0 ~! K3 @# f5 ^
- TAX3 N( A8 H5 ]! A2 }1 A5 M1 u
- PLA
2 @1 ^" X7 P6 F# V - g+ H" M; @$ w4 K; \
- return:
5 B4 D) Z1 w8 E - RTS
& }4 Z: F8 k4 ?6 w8 R P - $ p" V. M0 k4 |* e4 Q
- # K* Y9 d6 P. I7 q' e) S3 S% _( L
- INV: ;无敌
; w, {* O" Y8 K - LDA $6000,X' ~3 @, f" K |* L6 k+ _
- AND #$083 L+ K$ I) O. x$ f
- BEQ INV_RTS
: L& I# G! r- w/ S - LDA #$051 W, m3 b& n; M; l K( R
- STA $93,X& H$ b, a. O8 v& z
- INV_RTS:
( L7 g/ R v) h% F - RTS- } f( {( ^4 i# t, j9 Z
- 0 c5 Z, W6 M; d X9 I6 ?
- , K+ U. r s4 u8 v0 A9 M1 J
- LIFE: ;生命
( ?8 W+ |" E* C - LDA $6000,X
/ N$ q: B' ?% v+ A" @7 W - AND #$04
; \' d! @- B, y6 e - BEQ LIFE_RTS8 p$ z5 v* o. p# x
- LDA #$09% R2 p( X! l2 n* @- V4 y$ z
- STA $4D,X
0 i: U/ L1 V% U) n. L - LIFE_RTS:9 S2 x0 A( u* e9 \
- RTS
, {0 Q* D$ Q# C1 o - 0 ]1 F q0 H& q6 G4 J
-
4 V3 ~; K5 m$ N3 X* y5 W; x6 j - BLOOD: ;血量+ G8 s$ c" \5 b
- LDA $6000,X
& R; ^" ~8 T; \ - AND #$01* t4 ~2 |6 d/ {* C) ?% g5 R0 B
- BEQ BLOOD_RTS
* o ?4 g9 G" Y# | - LDA #$38
* U* M! w7 n# _% ?8 V - STA $0568,X; ?3 L3 m3 J0 {; D7 e
- BLOOD_RTS:' { d! r8 g3 J. O' h
- RTS
, v. `, f o0 `" B -
; t7 c" ^0 u# I; n0 F - - F1 z. d2 {! p' } j
- .ORG $FEFE0 P$ d4 g$ @" \3 z, b* u
- JSR $FF60
: `+ {7 g4 m/ ]; s ~8 K - NOP4 c; D5 s& {/ }% h& y
- % y- x# p9 e* y8 P; L
- .ORG $FF60
- F* ^3 }% q4 r5 O6 A - STA $F8,X
: Q6 Q$ S' d7 f# o5 A' e- a - STY $3A,X
2 T* i8 G" K# l# u6 W2 ?- ~4 \ - PHA! j( M# O( M$ [ f. b8 W3 t
- TXA
. U6 a& p% {% I5 c - PHA
$ v. t9 T- A; m - TYA7 I' ]2 y @3 k, O0 L
- PHA
+ t4 [* w8 g- {0 } - LDA #$02& t1 G' i- b' j. K E
- JSR $DB11 ;调用系统切页# |) I0 j* [9 J/ V3 O
- PLA+ ~7 F- I$ e4 V; E2 A( g
- TAY
1 w" }. r: c% O: G2 I% _. k - PLA
& c: I L/ x V! F ~9 U - TAX
2 h, _# Z7 v" r6 ]5 V - PLA
+ s. O0 |3 t7 j! G' X+ N7 \ C$ t - JSR $BA00+ R2 o% N% d# ]& Z" U
- RTS / }: h$ J8 T+ M x- N# d; {9 O
- # a- d0 a9 y, ^6 o" A. ? [# W! W
- ;[FC][忍者神龟PPU][END]
# O3 x: H! z5 Q, \; U$ B$ \ - ( ?( Z: |: s* A. f) _" k
- .ORG $BC00& d- w0 Q, z2 P2 k" ]9 w
- ; |# L k' K8 W5 w# V
- STY $4014 ;补上覆盖的精灵写入指令3 F1 I3 y( K \0 I* r4 E' Y
- PHA) L p$ ]- ?! p8 s C8 Y. H
- TXA% k" n% g7 Z; z0 c4 f1 ?6 U# `' y
- PHA, L" x# ^4 u2 y" }1 j
- TYA3 C. M$ e: T: @; p( [: y" H9 v
- PHA
0 u0 M p! q" h& j( F6 N - LDA $0184 [& N I6 a* U# v( S5 {' h1 b
- CMP #$01 ;比较是否为标题画面
0 k- ~, {2 U3 h/ O2 G - BNE RET
3 p8 b: N6 n' ?0 y8 y - LDA $019
* Q- x5 ]6 w9 m% C - CMP #$01 ;比较是否为标题画面
% J* |, Q$ v. B$ Y8 s - BEQ PPU_STAGE
# `/ O# {2 {) k1 Q - RET:
- a4 j) ~9 I" U3 n( O& h" f4 b3 R - PLA) r2 F7 @( ^9 H
- TAY# R7 S& y2 V# }0 x; G
- PLA: _9 @; G' r: G+ c1 J# @
- TAX5 K V" Z' S/ a
- PLA$ s; j& y y; x
- RTS! x( F! c7 j4 t1 ]
- PPU_STAGE: ;STAGE显示程序
# U& x2 z$ ^0 @ - LDA PPU_ADDR_DATA
% Q8 w9 `2 P% X# ~' S - STA $20067 u& Y5 e/ N" ]
- LDA PPU_ADDR_DATA+1' a$ J$ ?1 g2 |
- STA $2006 ;坐标设置
$ _8 |% a0 i9 T - LDX #$00
8 [' n( Z4 h: l% g8 L' j! Q$ r - PPU_STAGE_WROTE: ;写入STAGE字模4 l0 L# B1 }8 [3 b- q
- LDA STAGE_DATA,X
$ p3 T+ q* _1 J3 ~ - CMP #$FF8 y% \) V# S2 ? X+ m
- BEQ STAGE_CMP* z* N, u8 _! K6 m
- STA $2007
( |" i% \/ s4 e) S - INX
: x& @" G) x4 M) ^) X, l - BCC PPU_STAGE_WROTE
, ^- w1 J1 P4 p1 B# Z- U - STAGE_CMP:
/ U3 b: Y6 z: l9 w - LDA $6010
- n6 G8 s$ Y1 p! n9 I4 U0 [ - CMP #$FF ;关卡数据初始化条件判断3 L, ]8 B* c4 l! X# Q3 |
- BNE KEY_B
6 F8 z, j% B+ v) N! L. X6 D, n - LDA #$00
& U, u7 _! e7 z - STA $6010 ;关卡数据初始化
3 T) ?% N) p4 k$ {. r - KEY_B: ;关卡减少7 p, s0 ~/ S5 B7 o4 T' G
- LDA $F8# U! Y( K! P* D
- AND #$42 ;按键B或左减关
% f/ h3 N5 r& w2 y - BEQ KEY_A
, ]% F4 A: c$ C2 x - LDA #$FF
4 [4 c7 ]6 G9 X) o1 l; |1 b9 W - STA $40
- T4 [+ |6 G7 w3 | - LDA $6010) O2 t0 x* a# u5 L7 J$ F- J
- CMP #$00 ;关卡比较
: T; d9 I1 @8 a! H- V- [6 k - BEQ KEY_A3 H* Z$ m6 z( \ Q7 ^
- DEC $6010 ;减关' ?3 n1 m! d( a
- LDA #$57
5 u! O) n" S6 L6 j - JSR $DB52 ;按键音效
/ F- `2 p, T- F - KEY_A: ;关卡增加
+ ~' L# L7 t" v3 A5 Q! u - LDA $F8/ g, r: n( ^% {! u
- AND #$81 ;按键A或右加关- C8 V+ t; c+ [5 s5 V( o% o
- BEQ PPU_NUM_WRITE6 L3 ^- @* W' w' }
- LDA #$FF
* d: n! g, e/ I+ D4 { - STA $408 J( q5 l+ o L |1 B' [4 C7 H
- LDA $60101 m# y7 C* g# L
- CMP #$0B ;关卡比较7 _4 b0 u- L/ p) G0 ]/ q3 v. \
- BEQ PPU_NUM_WRITE
! k6 d f4 H' {# M - INC $6010 ;加关4 j. n+ y" F/ b$ C8 l( e, h9 k
- LDA #$570 [7 R6 h- ^( @! {' M2 I
- JSR $DB52 ;按键音效
2 t+ R! e2 k/ I - PPU_NUM_WRITE:# E( Q" e! k }3 i3 W$ d! T8 U. t# U
- LDA PPU_ADDR_DATA, [5 E3 j: ]9 w+ \* R
- STA $2006
. c; I* h2 o& o& n; B v& ~ - LDA PPU_ADDR_DATA+1
) s" L9 z$ k" N4 @/ V5 k0 O9 P - CLC1 f3 ]: ` o0 r3 G4 ]5 u9 a
- ADC #$066 y! k) l2 Y- g
- STA $2006 ;坐标设置5 K9 W- z/ |, C8 t# S3 G ^, ]
- LDA $6010; |( o# k1 x: T' N0 l" U
- TAX
: ]# A2 t( q5 ?: n" l M! W9 J - LDA STAGE_D1,X ;写入数字, p6 V7 J! \! ?8 M) x5 d J
- STA $2007
1 |. ^+ Y( G# W* d1 J: K - LDA PPU_ADDR_DATA
! S a v8 r. S& u - STA $20060 L9 U9 H- A' K2 m- Y) i% k
- LDA PPU_ADDR_DATA+12 W E4 y c. O5 s9 Y
- CLC* h5 B6 l* W+ C
- ADC #$0B/ O: G) a8 ?, e. \: v' l" b% l
- STA $2006 ;坐标设置
: r5 L3 F- \' V; I* s. z4 M& l - LDA $60106 F ^ K: {2 Z2 Z6 F& v' P, v. n
- TAX
7 H7 B) o) X' Y! ?; W - LDA STAGE_D2,X ;写入数字% A# x/ P' ]3 l4 U: ~ D
- STA $2007
1 ~ A- F" o t* t& P" {* n+ o - STAHE_WRITE:5 M. K: `1 j- C% n
- LDA $60108 L+ ~/ Y4 f! O$ M D" O. Q ]
- STA $42 ;初始关卡写入4 ]% R" x6 b+ v6 x! `- c7 d
- PPU_RTS:
" {5 s# q" c$ U* ?5 t, H$ b - PLA
9 v& G& O4 T. z. g9 \" c1 B - TAY% v+ [$ v5 }, }( Q
- PLA* t- v# ?3 J/ T/ r4 ]2 X# f: f
- TAX
z% a) I4 P& U0 v. x3 Z4 P4 b - PLA
. X! ?/ _+ ]& v" h/ t* e4 `) W - RTS) c5 G5 b h- l, m. w; W3 t* o
-
4 b2 B! b5 }; C6 k8 w5 T' s h+ U9 V - # f0 C/ _( y, Y4 q* Z3 W
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
1 ~+ p, h0 B4 @( y$ q, ~1 m7 W! W; \ - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF# R- k5 P2 \! q. r2 b% }% E' S) ~
7 E' R) I3 }& N5 G. {' ~- STAGE_D1: ;关卡数字1 o) ~) C% y6 R6 T2 D
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$083 l& i, h, A# t: k3 F( B/ h% \
. b! k/ e- H$ W8 x$ w- STAGE_D2: ;场景数字
! }$ _# O# e" d" R( h. X, z& t, _$ r - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
; V9 }) Q% u! V3 D( a1 O+ ~! b -
) R: H! u: H- K S) f G, v5 K - PPU_ADDR_DATA:
" [% d0 L u e9 Z1 p! \5 e - .BYTE $23,$4B% Z/ e% Q; H& H- q9 m
-
' T: c- I$ W* @; O
. W; A6 y. V& q" t' W+ M9 N
) \# R3 T( u# d6 v& L: F. u. y
0 _/ i& A# f% e- / r1 ~: j* }9 E3 j7 d4 U G
- .ORG $FE21
1 ^/ R- ^) {4 K2 ]6 T K - JSR $FF40: ^! y7 M6 N( n A) C
-
4 [/ k" Y3 Z1 s - .ORG $FF40
/ G# @9 E; w$ A5 z p7 g9 ~" A7 h - LDA $BCDF
' N" x: {3 d% x) V - CMP #$7F" a1 F% \5 l) ]) ]
- BNE ADDRFF56
( ~* N! c; ]3 @3 P1 d2 ?: C - LDA $0018
/ K: E& O* q0 k/ j, D - CMP #$04( S `9 ^7 h- P
- BNE $FF523 G, D0 a6 K8 y$ ]9 a0 F i
- LDA $6010
$ l8 I, } _; C- F4 m- x - STA $0042
q: b- i. _$ }* _: S; | - JSR $BC00
, R8 o/ k$ @0 a l7 ?" O, P - RTS
% P9 d% J* v9 N. J$ } - ADDRFF56: 4 C4 ~- t! I: h, [5 s) }
- STY $4014
% g% T& d: _/ W4 x - RTS' { v) d" m1 h3 n! p. P9 F7 }
-
& k# l/ r* `6 K' u# O9 @ _
复制代码 内容:
5 d, r, _& H) C: y" ~- W Y 1.关卡选择: 标题时,左或B减,右或A加;
: N, u( v( K/ r2 c% `) _7 S 2.一击必杀: 暂停后,按B键切换;8 }) [, _5 k! l# c0 y
3.无敌锁定: 暂停后,按上键切换; ]; @( W) i* ~* S# R
4.生命加满: 暂停后,按下键切换;3 @4 u' n5 Y1 R& [; l& V: C
5.血量锁满: 暂停后,按右键切换;
: D/ M7 r& C& i% x' _7 [/ e8 D    
i3 a. ?, e( Z( ?4 Z
; s' V( k" a+ I+ fFlameCyclone.ys168.com: |8 x" ~) A% P( i
www.nesbbs.com
# U5 F2 c- I* ^3 M8 E m! I7 h
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
2
查看全部评分
-
|