|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 4 F7 e/ W, k5 ^( u8 v+ Z- n
" C8 x3 t1 R( L) f( e1 k[FC][忍者神龟2][END选关]6 p A1 a+ B" D+ I2 b1 C1 f
/ a b' z3 F( d
时间:2017.3.31
; W4 j5 f$ C7 [- y' b B; p作者:FlameCyclone- .ORG $B9E0
% u$ w P6 `$ Q7 I - ora_data:
( |2 b! X$ q V2 y% p# @+ z - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
, y" _9 ~* n" E0 ]/ b& S6 ~ - and_data:
c8 E) Z9 o" N6 m! P - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF$ W) ~- m1 g$ \/ j$ B- p4 O
-
- l( f8 y" C4 ~+ L% p' [ - button = $F8( z# H7 z: q$ m
- flag = $60007 w7 H# l( p" M2 G5 [* [" S" {. b$ L
- pause = $3D
. i2 V! V, |- ?/ l - 2 s8 A# a; z' F% u3 L1 w
- .org $BA00- q5 V8 ~: }, y! o1 S7 v3 E8 Y
- % a1 G4 A% M# V+ Z) U/ ?
- PHA
& q7 O1 G! y9 g; | - TXA
6 s3 q) A: ` B" t& I2 I8 |* S - PHA
/ j# |! p/ a+ ]% p% _ - TYA
! T, Z& ]8 d( n" f+ d - PHA
' p! k7 m7 Q% K - JSR KEY_OPERATE- M8 f" P* u- m7 F% b2 t
- JSR INV; ^5 t4 S( b8 e6 n! K" [
- JSR LIFE9 ]# s B6 D+ o3 `2 U1 @
- JSR BLOOD
) X& I$ ?+ P3 _" w' \ - PLA
) J6 Z0 V7 Q) \; a- E4 g - TAY0 e0 q0 S' a& v! E1 U9 T/ H- r
- PLA
( ~7 t$ j+ U8 T- V: J# }( V8 O - TAX
) m2 W2 _( R+ B" \ [! x1 z, L - PLA
' X) G$ H7 d: M% B( b; Y$ S - RTS
i4 y% ]! Q4 t4 m2 U6 ^* t - KEY_OPERATE:& \ ?$ X+ C) W+ }& w& G. Q
- data_protect:) }1 i5 F3 f* g+ F4 Z
- PHA1 Z ^# F# r& o7 S" O
- TXA! y' F' L. q' T$ m- P- f) ?
- PHA: Z- \+ h+ D% M) u* w
- TYA# b5 B7 m& P' g8 P/ d3 R) V) Z
- PHA
# g& O# t+ ^1 |) i3 T( d1 G - 6 L' d4 Y6 N- q
- FLAG_CMP:5 ?4 {! s' |# U
- LDA $600F4 E) C1 A& E- z; c
- CMP #$7F ;标志数据初始化条件判断. _6 O: K* n( ^" q. V- `
- BEQ pause_cmp
5 {8 C- p0 k+ o. O - LDA #$80
; d. j# Z/ P4 y - STA $A001 ;6000-7FFF写入启用2 U" Q$ n; K5 L6 R$ L- b# C' I
- LDA #$00; R! ]% R, H7 [
- STA $6000 ;数据初始化
& D# V" }& ]+ ]4 S. y W - STA $6001 ;数据初始化
: G4 c' ?8 N( g* L - LDA #$7F1 Z2 Y' P9 b0 v0 o. ~
- STA $600F
9 @& u5 u& {: ^5 o! w5 E - pause_cmp:- ]" I: U8 K2 o) c) Y
- LDA pause
3 h" R1 x; [; x7 k - CMP #$01; I2 C5 s1 |3 g1 Q; w5 g1 ~# L
- BEQ button_press
+ }5 v9 U' x K% M - PLA0 k8 V: l7 t! H% w
- TAY( D; d+ ~% \/ Z, v/ X; S/ U3 G. V
- PLA& R) w8 w% a: F+ Z2 V
- TAX& z1 M- a+ Q' y
- PLA
" b& a' v2 S0 c8 n - RTS2 [8 \$ a$ v3 ?" @1 p
9 [$ L' z; ~+ r" W- button_press:! k3 |; v/ Q% W0 I! X W. O D
- ini_Y:) P; ?( b% | k" `+ ^7 i3 R# K" i
- LDY #$008 z3 ^8 K/ V+ B) \! X/ T5 N; M
- button_cmp:. H' K& f6 ~) ^& ?. ?; Z; H
- LDA button,X
@) [+ w* c' L2 @0 F9 v; A: | - CMP ora_data,Y6 ^! @7 k2 }9 I
- BNE count_Y_cmp
! D9 F0 i; W N - flag_cmp:/ s4 m" A, \% x1 E- z
- LDA flag,X
* q4 a4 Z! k+ Y" k4 B% K [ - AND ora_data,Y& A$ |8 ~& Y$ o$ K# H' \0 f
- BNE flag_and
2 @5 i, X! k( c" { - flag_ora:
/ C) \/ F# ]( P7 ~( O - LDA flag,X
) F- h3 A3 K& N$ a( F' ?! N - ORA ora_data,Y
, v- q' |% [3 L9 _ - STA flag,X
) k& b" `5 @ H& R* ~: c( z; s# ?5 }; [ - BNE count_Y_cmp
8 N* k4 i8 E4 x6 }1 M) q - flag_and:
! r2 Y3 u8 b2 Q% L3 M - LDA flag,X: O) Q1 Y8 Y1 i5 ] q. V1 A
- AND and_data,Y
: {5 W4 f5 j7 {6 k$ O/ b, f - STA flag,X) y; B2 ` ?. m4 {) [) k
- count_Y_cmp:
* `% l( M$ T% U6 e- p$ z - INY/ C4 V! x3 n. D* r% K4 {
- CPY #$08
/ O8 Q) t+ P) h4 I - BCC button_cmp
- H' i6 S- ?; O; J0 F -
2 q1 }" I9 d( ~6 I# J8 X - data_extract:
$ s: r% y0 ]! l- t - PLA1 S; e; R/ e8 n, G
- TAY# ?* B: t( a. T; D# I# I
- PLA
, T# V! {2 g# l1 ]* A1 e - TAX
: e& C2 t8 Q# f2 x - PLA
+ k* |3 S6 }8 s1 H1 s: { - / ^) h* |, Z0 w/ P5 K( |
- return:
( R" B) A5 T( A1 w- j - RTS
! C6 i( O9 D# y2 k -
3 [/ `. @- x9 \$ ~ - - U+ ~0 j* {: J
- INV: ;无敌2 Y, E, Z; i. c* L
- LDA $6000,X
7 s' m: i* T% M! e3 y) E& L; B - AND #$08: Q1 l' Y3 R" D3 `+ B5 l) ~$ r
- BEQ INV_RTS- q; F5 S3 o J
- LDA #$05! O- p# K$ g0 ?
- STA $93,X
; {2 {: Q- t0 J - INV_RTS:
4 r' {5 ^- s+ q; d - RTS5 }5 s3 r* M2 G3 q* {
- ( ?8 ^, x' I! t
-
$ g! m% L3 U/ K, |" @& ?9 ` - LIFE: ;生命$ k; L# e8 ]* t* t. ~ v+ D4 ^
- LDA $6000,X5 U# x8 B% F" a. M( e
- AND #$04
0 e' z' ]0 i0 \0 k; A/ h - BEQ LIFE_RTS
. |6 F9 Z/ _9 S) l% E - LDA #$090 U, g- Y# Y# D, b3 d; L0 O% q: H
- STA $4D,X
2 @# |! r2 b% j/ N) h - LIFE_RTS:4 h0 ]& l; W6 R0 t: W
- RTS
' Q2 V6 f8 b' h" ~" s% ~ G - 5 t, Z4 V, S S2 R/ n( `
-
4 r0 D' D7 Q6 @7 F2 X6 n4 ^ - BLOOD: ;血量: g$ o8 Y5 E4 v+ B D
- LDA $6000,X
* f2 h& n, Y: W" X - AND #$01. b# s1 n( [" Z( d; C: ~. E
- BEQ BLOOD_RTS
H4 A( c+ ^9 z2 N( Z8 A* E - LDA #$38
. K- _" W- `4 ?4 n7 z. e% P - STA $0568,X
' [9 l2 _/ v" I9 B$ M- ` - BLOOD_RTS:& i1 q0 p2 a8 x7 x6 H3 q% e( c
- RTS
) ~ _" {1 d7 C -
1 y# r5 ^! l7 ?9 h9 J9 \4 L5 `- w -
5 a5 A# S, l2 l6 B/ \5 u6 F9 H. A# M' P - .ORG $FEFE. p) T% E& ^; Z8 m+ L
- JSR $FF60
6 q+ n& h0 F7 { m - NOP
7 H, {0 u4 U! u2 I, Y4 t - 3 L& }, R5 U9 T+ V9 r# H. `) a. h+ c
- .ORG $FF60- s( m8 I+ j( D. A1 k& O" _7 x. M, M, X
- STA $F8,X, z5 b: B8 E$ r) s, _
- STY $3A,X* D! I& Q* l( l% O/ j F5 G$ z
- PHA' l& D6 \3 i( a6 A
- TXA
9 }2 C1 L: o ` - PHA
$ m: o" i% \/ C( S - TYA$ K2 @- a) A* I
- PHA
& d/ C# L: Y% ~' K+ J2 g - LDA #$02+ q5 d7 L& M. E# a
- JSR $DB11 ;调用系统切页
: p1 Z5 E+ {% q4 u* t1 H9 E - PLA
$ V# t( A% t2 U5 E: C' z/ r+ R9 v - TAY0 U; V' I9 d' S$ J" o) [6 L/ v
- PLA
) J8 _1 @$ n; ~ - TAX
5 V4 W. a& e7 D+ \1 O( s9 T3 n - PLA7 L! t! T7 c, b4 T T* J4 k
- JSR $BA00
7 O: Y$ `2 @$ X/ C/ T - RTS # I1 N/ x3 e; e( K, t* \) h& A: n4 r
- 1 X+ }; K; T- m/ j# B+ L7 k
- ;[FC][忍者神龟PPU][END]
2 W- g% J8 l8 _! A' R, n6 s' W& @ - W) ~9 }1 \7 ~
- .ORG $BC00
9 {' i5 F: u$ i: G+ z - , g+ S& T0 \0 [4 n; M/ k/ `7 p
- STY $4014 ;补上覆盖的精灵写入指令6 u2 d0 K3 r" j5 C2 y: a# O% L
- PHA- O3 [* E2 ^% B7 L2 D- j( t
- TXA
; @5 u3 u, i6 c: ^ C5 ` - PHA
1 C# R0 |' x- g( Y; l. d - TYA. s! A/ s( N: g8 g
- PHA
1 U" X5 z: X6 m0 q% x - LDA $018" ? \# I* a) F1 j; k. |
- CMP #$01 ;比较是否为标题画面
% Y" ~' W4 X7 y* R3 F: i - BNE RET1 a3 x. B5 g7 X1 n# C1 H
- LDA $019
$ v- ^$ \1 p9 \8 c - CMP #$01 ;比较是否为标题画面
" A$ Z& C8 x( Z - BEQ PPU_STAGE
$ k0 A. Y) j& a5 L9 O - RET:
- C, E- U/ D$ \/ }+ \ - PLA
" |/ s# F: l/ G" H0 [- B7 h - TAY
, u( T9 o, I: E) V | - PLA
y$ i! @! i9 P - TAX) Y& \8 ]. L h+ u- p( e
- PLA
+ b' u& C3 x3 @4 x* X+ E - RTS
# _9 k" z6 `. R3 _% [$ k/ k - PPU_STAGE: ;STAGE显示程序
) U) J, O2 t1 o - LDA PPU_ADDR_DATA$ }1 B2 W7 m0 {* x1 t. N
- STA $2006! A1 |0 e+ L7 q& ^; h/ @
- LDA PPU_ADDR_DATA+1
5 r, n4 N" e. X - STA $2006 ;坐标设置. i! F' `# X+ j: N
- LDX #$006 V; {% T9 j! P/ ?
- PPU_STAGE_WROTE: ;写入STAGE字模, p6 j7 Y; l7 s1 z
- LDA STAGE_DATA,X
9 ^3 e3 J% E" n9 k: `# W - CMP #$FF
5 V+ S* C$ {( a; Y8 j: I - BEQ STAGE_CMP
* c7 X* K8 @9 [- l7 X; i) ` - STA $2007
/ p+ W# _# c$ z' f7 H - INX
; c E" S* a; {" q$ t; w - BCC PPU_STAGE_WROTE3 \& _2 Z- T; y R, D
- STAGE_CMP:
- n( }0 f+ U! |* A6 V - LDA $6010
+ A7 k& W! p. [& F0 f& J P' Z - CMP #$FF ;关卡数据初始化条件判断
, \' h# s7 x1 j |) k6 J Y7 p. M, E - BNE KEY_B, o" G: v1 W4 S0 q* T+ ?* |
- LDA #$006 A" f; T8 k' C) ]' t
- STA $6010 ;关卡数据初始化% T% S0 e% b# r8 \ I3 ^
- KEY_B: ;关卡减少. s* U4 E3 Z/ [; ~6 i# a/ M
- LDA $F8
' R% b' k1 Q8 C5 w - AND #$42 ;按键B或左减关' F# x$ t7 L' f! G, u9 ?! P# C
- BEQ KEY_A
1 A) k; r* a8 S6 ~, D1 |4 Y9 L; C - LDA #$FF$ o1 q2 B' q3 @5 D
- STA $40
- ^" l0 r, C, S' }& T - LDA $6010; z8 R8 l7 J3 h
- CMP #$00 ;关卡比较5 {( h0 @7 `- g0 H9 s: r8 c$ p3 N
- BEQ KEY_A. [; ]: c; \0 g7 c9 n6 R6 ]8 B
- DEC $6010 ;减关
* `' X" O$ y( h - LDA #$57, ~/ S6 t4 F1 @: `& n+ ~1 Q+ n
- JSR $DB52 ;按键音效
! _& ~5 b: Q) {$ F w - KEY_A: ;关卡增加
$ \" F0 h5 ?; E5 H. y/ {: i, A - LDA $F8) s$ [# I! ~3 j1 B, z# G) Z
- AND #$81 ;按键A或右加关
/ M- L: r; h8 L; f6 x - BEQ PPU_NUM_WRITE2 G+ h# g ]! U0 i9 P# l% m P
- LDA #$FF9 v. Y( q9 q; P& D F3 A" v
- STA $40
- [0 I- c, l4 {- `5 H/ j1 S - LDA $6010. _0 `# ^5 a9 {( H; G" s
- CMP #$0B ;关卡比较
# ?4 o7 _; C3 j- P6 g6 h - BEQ PPU_NUM_WRITE- w6 s1 p: |4 {( K
- INC $6010 ;加关7 a" v2 v' Q- A8 s6 \" t
- LDA #$57' |3 M: v( t5 r9 O
- JSR $DB52 ;按键音效
7 ]7 z G/ @6 C- w) Y4 f# d - PPU_NUM_WRITE: J D0 `- n9 h
- LDA PPU_ADDR_DATA* z4 g+ u( i; E
- STA $2006& s; T# J9 ?/ S8 F- b5 o1 f
- LDA PPU_ADDR_DATA+1
! _, ~- B, @$ R/ l) d& `" M. L - CLC- I- m' F3 m7 j; z+ ~6 m# S- G$ ?
- ADC #$066 r% r( h4 Q6 E- S5 d
- STA $2006 ;坐标设置
$ L6 `# l0 a/ G2 t6 f! x% s - LDA $6010
# G+ G9 F- f" x e4 h, s& F' q R - TAX
) P# N* n$ @" Y( l) ]4 F - LDA STAGE_D1,X ;写入数字$ W9 _5 m( n. P# }0 r9 o
- STA $2007, B2 N4 S( u& u9 t% ?
- LDA PPU_ADDR_DATA
) Z+ d- F* F5 q* T8 h4 D( S. D - STA $2006# Y. H& I# r, V; R
- LDA PPU_ADDR_DATA+1 U* {2 Z C3 v
- CLC
# j3 |% r3 e) {1 [8 S3 | - ADC #$0B
0 F3 X8 B( B9 g E4 H+ b$ k - STA $2006 ;坐标设置 O, u: i& ^# x. o6 W* ?9 K
- LDA $60108 B" R- T7 Q* I. S
- TAX q6 o _7 D/ i6 j
- LDA STAGE_D2,X ;写入数字4 T: j! G9 | ~" n% o+ Q
- STA $2007
5 C# N& s1 q* ^2 F4 d - STAHE_WRITE:3 T3 h& \5 V4 \+ Y5 o1 V
- LDA $6010/ x, i, C1 a- G' {2 \
- STA $42 ;初始关卡写入
& g( E* N3 ]/ M' [0 I5 `" j- i - PPU_RTS:. `* z( W/ a) F( \' k
- PLA
& I1 G% L" {/ [* Y, s - TAY
5 @8 v7 d$ V3 a+ O" ?. c - PLA
0 C7 v% F; K+ l+ N - TAX# A- {1 k; k- H5 {
- PLA
; W. \ V( m& m+ Z; @3 z, x g& } - RTS9 K- w$ I' l: C* ^# L/ T9 w
-
! Q- ?) C# Y! R+ `1 A -
. I$ z; S6 a6 u - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据8 Q# c: q5 e1 K5 x/ |
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
' |3 }( }! @) |# h+ X
. C, V+ `5 \+ Q- STAGE_D1: ;关卡数字# P5 w( ^& C# t
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
) L P1 B: a7 ]) H! s+ K, I; e - : l8 g9 Q1 C6 ?# V* s, _6 f/ y
- STAGE_D2: ;场景数字
0 Y- S% K( I( D8 k - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03* j t# T c- c& c; D, D/ i u9 [
-
* |( G( O" [4 i - PPU_ADDR_DATA:# ~$ F3 t' S4 b3 d2 ^1 c
- .BYTE $23,$4B
/ m1 `: W/ N/ G W% ^2 t - ( p* _& c( P& M) K. s ^6 }
- + I2 @1 Y2 e1 A' W
- ) |; t5 e3 L+ B( n
4 J7 J S2 z5 c5 j8 b: W- 4 U1 U) c; L* G0 {( i p
- .ORG $FE21
' |8 q& s; l* W: ]$ m% o# M4 c - JSR $FF40) c4 a0 x9 U4 r% P; \! y* M& X
- , g$ ~! g f4 N
- .ORG $FF40( B% \ s# g5 ?( O: v
- LDA $BCDF
# a+ r5 `$ s* O& d - CMP #$7F
$ j7 @/ N" V" J3 ? - BNE ADDRFF56* v( M0 t9 q. v. g9 v' G% H/ v0 {
- LDA $0018
" u3 @" Q7 H. L4 y4 h' e - CMP #$04* }* @8 R, g6 u2 R5 ]+ c
- BNE $FF528 z0 Q2 U; R9 I# o/ y; W
- LDA $6010
) f( I! z+ Z" P, Z% B/ z6 N - STA $0042
# i9 Y: I- g; E8 W' L, W8 a - JSR $BC00" K, r/ U1 a N5 q
- RTS4 G* y3 Y4 x0 o0 q0 B
- ADDRFF56: 8 r! U' v" c7 Q1 I; V6 ~% B) B7 S
- STY $40142 Y# W( @1 W! Z' s
- RTS0 t3 M0 `6 G6 {2 j- |7 v3 V
- . B( `" R" O, }; M$ {& H
复制代码 内容:# D) d/ E" }. ^! E
1.关卡选择: 标题时,左或B减,右或A加;
1 B' F. g* `$ J! q4 @( j; S 2.一击必杀: 暂停后,按B键切换;
' \. P3 K& ^# k- M/ H0 r, x 3.无敌锁定: 暂停后,按上键切换;
8 M9 T0 b' o8 h& V. V* F; R5 n 4.生命加满: 暂停后,按下键切换;
6 D& K! p! o- s& h/ ? 5.血量锁满: 暂停后,按右键切换;$ H) q5 K9 s8 l3 G
    
+ p R& [# u* x% T5 g( F/ p2 V8 T- }' ^6 l1 f3 y
FlameCyclone.ys168.com
: E5 p- l4 N1 J4 L2 l* J5 @www.nesbbs.com
% B1 K* w+ c6 I
1 k2 g% x" r' c0 x+ A |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|