|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 / r0 `8 b; [- Q" e9 G
1 Z8 K2 {6 n5 H: c( n& b5 [. ][FC][忍者神龟2][END选关]$ b8 m: P2 @8 F: ~! c% b" o4 O
2 d% r4 x, A" ^时间:2017.3.31. ^. D7 T) y# n2 t( \ a8 F) w
作者:FlameCyclone- .ORG $B9E0
3 m- E# V% P$ D, u - ora_data:
! `& }" a! I3 H6 _- j# ?9 r3 M' }, U: e - .BYTE $08,$04,$02,$01,$80,$40,$20,$10
- {1 E" C6 B- Z% J7 y - and_data:
0 X/ M! x2 e- x6 ~ - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
$ n2 C) [$ F. ?& z( j) y; o( x; } -
7 I( Q- K6 }6 F4 b5 M+ G - button = $F8
, M+ a' f! D# i& [, S1 U5 P/ f9 p c - flag = $6000) o/ r7 o( R5 x2 r1 \
- pause = $3D
, }$ i* h |( q, e- b3 U l
7 ?' q0 i" w( o K3 J- .org $BA00
: r; h/ N! c n- |$ w4 Q - ( g5 g: _5 n) G$ [; E+ N$ Q
- PHA$ R2 v8 ?6 a! v5 H2 @2 y( l( q) G* l
- TXA
, b: e8 T- z" Q# f; l, @6 w - PHA( S9 d) m0 {1 \
- TYA
. {9 i M# G4 F - PHA
) S% C7 ?. {* R8 P2 H - JSR KEY_OPERATE; S* W6 {' ^5 R- x7 z! ]6 o
- JSR INV
2 f/ S2 c! B, \5 v - JSR LIFE$ m0 G8 V( r, w4 C
- JSR BLOOD
+ |4 A( Q6 a) t1 p) ~1 | - PLA% }; `7 V2 t; T, `9 d! r
- TAY& |3 k/ `1 ~, o5 ]
- PLA: M+ \0 M+ M/ A! U
- TAX. i- E# ]. \" e9 ~5 K$ M9 G
- PLA
i2 o7 L' i. E - RTS y4 M( o% m1 Z0 z$ Y, D
- KEY_OPERATE:
7 @9 x, E" V6 g- z) F - data_protect: [( M4 O x) v+ I `
- PHA" {* t% w, Q3 _
- TXA6 b" _ s8 H; Z
- PHA
1 N+ Q5 ~3 \0 N" F - TYA* a: u, x4 m7 V- b! M w
- PHA H2 u9 N0 F) v) A0 \
7 U H- g0 {2 u# t* V- y- FLAG_CMP:
' B3 W: P: `6 @$ V% ] - LDA $600F
0 A3 v9 G9 x0 C/ j' k9 H& j - CMP #$7F ;标志数据初始化条件判断
( t8 b7 a: w7 `. z) y7 @ - BEQ pause_cmp+ D$ J& H* ?( G7 ]
- LDA #$80
/ m1 f5 f, x0 a, h O1 W+ Q - STA $A001 ;6000-7FFF写入启用
z% ^+ ^4 x) N3 x- R - LDA #$00
. V+ F- N8 p7 o# w# |, \1 F - STA $6000 ;数据初始化
) D$ o2 w/ U& i0 Q* E' Y - STA $6001 ;数据初始化
9 K! c( u5 m! F8 c& i - LDA #$7F. | h( |8 s: N; O4 ?1 i
- STA $600F
8 x* {- u3 ~9 ]- ?% `2 `$ L- A+ a - pause_cmp:
+ Z0 g/ h( ]! F+ @9 p' @+ \: C7 C - LDA pause( A# Y0 ]) \6 |: ^0 M1 [
- CMP #$01
, C" F3 g9 c. y( a$ _5 r0 k - BEQ button_press% g9 S' k h, |+ x6 v6 i0 u
- PLA
, O+ @# E$ ~+ {, f - TAY
9 A7 u% F* g8 h d2 { - PLA/ m1 L1 f& N" j( A* F2 d
- TAX1 _4 e! m# t( J4 E* `+ L
- PLA& y; Z5 q4 K* i: K% q
- RTS
: G( @ n6 `, `" K3 R, [ - % Y% l, }$ _0 p% w
- button_press:/ i# G$ J- i, B! s `* A- v
- ini_Y:& W8 _, `6 R4 P' q+ H v
- LDY #$00: Z& E+ i& @ M! Q
- button_cmp:- o [# i: M1 ~
- LDA button,X
- e" ~5 S, j2 O. P - CMP ora_data,Y& U: S, |4 |2 q: I7 U/ D$ A% ?
- BNE count_Y_cmp& R0 g3 k0 y$ B/ V- H
- flag_cmp:! m- e- t9 x. E0 \8 d( Z4 y
- LDA flag,X
( q3 u: h% u: u - AND ora_data,Y+ c# Y. |* q2 A* f$ H
- BNE flag_and
6 M: `* p$ i% b; ]" g$ e3 R - flag_ora:
7 S5 |; S7 q# _ t1 H1 ]; G" R - LDA flag,X' {$ v8 b4 @" l
- ORA ora_data,Y
$ h# @% Q% h, o/ @3 \ - STA flag,X( B s( b- X1 B& O( F$ T
- BNE count_Y_cmp0 w$ u* K9 u3 B( y }9 |( C
- flag_and:2 z% z5 I+ N" w' j, t; z8 G8 s
- LDA flag,X
, Z0 T! U. D0 N; n2 ~0 o5 X3 y - AND and_data,Y
; {) C& J& `7 D- L - STA flag,X
{# i% w( O4 k" W7 n: j - count_Y_cmp:/ M' a3 w9 P- }+ B4 z8 K
- INY% h- H4 K0 `/ j7 A
- CPY #$08# v. d' K* N4 p6 b" J ?' F
- BCC button_cmp
& W( a2 E- L/ K8 D. S7 y( @4 L$ ` -
$ G9 O( ~# ?! w& J2 h - data_extract:6 d. k( `% C5 U3 h; `2 X
- PLA
4 A) B) w8 p6 L - TAY
2 Z- @- f* `; N2 i X V( g - PLA( o! r6 T c5 B) B- P3 |' F* }+ n
- TAX
. w+ `; B' f0 W - PLA
% z3 b2 j+ h# @# d" l -
. l; w9 j5 `' F - return:
# a9 l- h+ J' |# O: E; o2 R; _ - RTS2 T; p! J2 E8 v! j5 a: _
-
5 |8 }% v5 C: N( `% A0 E3 S0 c -
0 T) R) A6 K$ _3 L/ Z" I - INV: ;无敌+ w6 {1 t2 p" ~0 X2 W; Y
- LDA $6000,X
% ?! B8 X: ]+ d$ E: | h- p2 y# w% l# h - AND #$08
$ w8 f( H" o' {- x' i - BEQ INV_RTS
+ o9 N D2 A. ~' j' ] - LDA #$05) N4 t$ B9 w8 I' W' a
- STA $93,X: M2 l. T+ H7 ~( l) k( v1 p
- INV_RTS:
) h! E: f1 }, Z7 H# C( c - RTS
7 s% X4 p0 j7 l/ _, O |: ^
* _$ _. F4 M/ { f' P. E$ i-
- {. j, L* w4 u- w. y5 I. K7 `# \ - LIFE: ;生命& A% x) G% L4 D. H
- LDA $6000,X7 W \0 S4 J0 [4 ^
- AND #$04+ u6 L. |$ R! m! ?) t) }7 E
- BEQ LIFE_RTS
- V; `) y( k& Z/ i8 _6 r - LDA #$09; m3 a1 V! ^* I% g; V8 ]0 r
- STA $4D,X
- A9 Q4 S7 ]5 y' c9 I! R - LIFE_RTS:4 S5 o# I/ [2 T6 W/ ~! {
- RTS' I7 v. @4 r, {# M1 N N* f
* C8 a- z. x/ N-
+ J L( ?: t% v1 K! N1 C% o - BLOOD: ;血量
4 q2 j5 E6 z8 g9 i# q - LDA $6000,X
- P5 e; \$ w9 [* h6 Q$ h - AND #$01- U* J6 C. M f# k
- BEQ BLOOD_RTS
/ j! s9 X$ u9 K: l - LDA #$38
6 \9 G7 T) W" E j# e0 K( ~ - STA $0568,X
# t3 k" t1 k- b! ? - BLOOD_RTS:
, a9 c, ^* U9 f% v+ I% Q - RTS8 b2 n K3 p( J5 Q M: f
- 2 P: G/ j) w# E
-
4 R4 p7 D, o$ h - .ORG $FEFE
( }) X) L& u, n* a K8 N/ T: y' _ - JSR $FF60- w- Y& F! U7 w- i6 p5 q8 R( m
- NOP5 d- w$ I# k4 r7 G3 f
- ! J/ F; E* S* m
- .ORG $FF608 r M3 R! K e" {. P7 |4 T
- STA $F8,X
- ]+ V- k0 J- m p' B. o! ^; x3 f - STY $3A,X; Y4 N5 r$ C0 h3 h+ n! X5 A
- PHA
" U" O8 R7 v: j( ]( p - TXA
: E+ c; c* B; T0 k, ^. u - PHA
# F3 N' ]# |: O9 ~& w3 u8 ^4 [ - TYA
8 Q; K" U% D- I! z6 f! S# \' \; F* F! b3 ^ - PHA* @9 N! g- Y8 t+ v
- LDA #$027 k# f* l) Z2 f& o- y$ J( e
- JSR $DB11 ;调用系统切页
# f+ h0 P& ^# U* s# L5 { B - PLA
, x; F( U; n v7 y+ l: H* s+ c& l - TAY
" t8 O: n; N( o8 s - PLA, A0 V4 n! H, ]' Q
- TAX
) a+ `/ X V0 ~2 [' Q, ~: C% l - PLA
l) Z& ^; a4 L$ _6 w: U, n: b! I - JSR $BA00
7 c0 t. t3 m6 n$ a - RTS
: l# A/ @) ?( [6 ]- v# s7 @; Q
/ e% Q( u, I+ v' }5 k! Y: z- ;[FC][忍者神龟PPU][END]6 f1 y5 B. W; P: l' U! `4 S( u3 w
9 u t0 Y6 n# p1 ?# {# K- .ORG $BC00; a: a p2 k+ N" w
-
: Y2 c9 W2 |* @% L$ N: K: ` - STY $4014 ;补上覆盖的精灵写入指令
" ~3 z6 ?4 ~+ X% A - PHA9 F: z( ^4 B8 e$ E! ^- @. H8 a
- TXA" O+ C8 m% Q m& \$ k% Z7 n
- PHA
I$ u1 _) i* B3 s6 U: }& B - TYA! W1 E* \, Y- @* O: _, J
- PHA
4 T' H; v$ d0 B* M - LDA $018
& `0 P/ [. Y7 M J" t, U% C - CMP #$01 ;比较是否为标题画面
( h z2 X+ T9 A N8 _ - BNE RET$ m4 t) x# q+ g9 y& ~9 m
- LDA $019
. D( Z$ |3 n% K+ l" d3 ? - CMP #$01 ;比较是否为标题画面: I# l4 m0 D" T% R
- BEQ PPU_STAGE
# X" v, j* T$ ~* V8 V( T' Y - RET:. u c; ]1 z+ g. j/ x/ n2 p* m3 n1 W
- PLA
- ~7 _6 a: H" @5 i9 } - TAY6 n) H) e4 I; [1 p5 y& J5 t! |
- PLA
}8 ?) c( T+ s% _ {5 u - TAX2 w5 F" v+ A/ ?; G' S! p$ Y
- PLA/ t1 e6 w- g1 B# b" x _* j" i5 O
- RTS% A2 c0 m* B, c b( ^; @
- PPU_STAGE: ;STAGE显示程序' b0 ]! r% X7 Y( O; h% z% c1 Q% k0 l
- LDA PPU_ADDR_DATA
5 ^( Q, T4 v% r* ^* k- Z - STA $20066 }' n. @2 J N
- LDA PPU_ADDR_DATA+1
+ o/ i1 \- a7 A5 w, a/ c. o# B - STA $2006 ;坐标设置
2 h7 |! ]! c& ~' L2 l - LDX #$00
+ o, u7 @- E* V! ] - PPU_STAGE_WROTE: ;写入STAGE字模
. @; n" W& F9 d8 a6 t& D ^ - LDA STAGE_DATA,X
% @4 [& {& |: p+ x% G, k6 I - CMP #$FF! B4 ?1 p! [9 u3 ?) j2 |8 \
- BEQ STAGE_CMP
$ {5 E1 L. ~7 J$ W - STA $2007* ~# a+ Q- M3 X. }
- INX
; i# Z, E$ w1 M - BCC PPU_STAGE_WROTE
; D4 x/ p0 x' Z - STAGE_CMP:; S7 o2 [; Q) A% K! I: X
- LDA $6010& ^( Z, N' F- F; ]4 s
- CMP #$FF ;关卡数据初始化条件判断
. k$ G/ f+ q, L3 R, w! H - BNE KEY_B2 H9 G; e4 V) A$ U) w: d! P
- LDA #$00
% g y% |( E A, U/ U* o8 ] - STA $6010 ;关卡数据初始化
) Z& M& F: s: D# K - KEY_B: ;关卡减少
( W3 V: a8 s: i" k1 C: d - LDA $F8
* z$ ~. t/ m6 E+ K - AND #$42 ;按键B或左减关! X" U% |/ E8 W9 h1 ~; l' q
- BEQ KEY_A
/ B0 Y: n( Z/ h( N. \ - LDA #$FF$ u) d) z; `+ A% r q
- STA $40" C; t- |) K" h% E |. K- o2 b
- LDA $6010
) k( c, } H9 ]6 R! Z$ j3 E - CMP #$00 ;关卡比较4 `0 V+ v/ C" c
- BEQ KEY_A
/ {% M% t2 N( s, v- @# k - DEC $6010 ;减关
. G$ u$ W$ m- r! D# o - LDA #$57
! v* V0 I) C/ ^! l; \' b - JSR $DB52 ;按键音效) S& o, H h: i8 G+ V2 V
- KEY_A: ;关卡增加) ^& S! X X7 p+ W0 x% Z5 e
- LDA $F8
- }: k; o W1 ?& x# o- O) M" O k - AND #$81 ;按键A或右加关
4 b/ E$ b( K, c: j2 A+ r - BEQ PPU_NUM_WRITE
& A K6 D4 ?; M8 P - LDA #$FF4 A5 `+ f0 b0 j, h7 s
- STA $40
+ F" U, j7 `8 f8 S8 m, N0 ~* ] - LDA $6010! {6 i8 o) d/ R4 u
- CMP #$0B ;关卡比较" x' C w/ x+ l x5 U7 m, c( S/ {/ S
- BEQ PPU_NUM_WRITE
' W3 r* W; u, L: b( b1 y( I - INC $6010 ;加关
v3 x0 V+ ~+ N% q - LDA #$57
* X2 E. [# h1 [ W - JSR $DB52 ;按键音效
; E( J/ q& T) N7 T4 A# Q - PPU_NUM_WRITE:6 ^ b* } @0 |9 T
- LDA PPU_ADDR_DATA/ U5 a# J( g' V6 f1 n
- STA $2006( ]0 S2 P3 y5 Y, ^# J$ I- \1 r' Q
- LDA PPU_ADDR_DATA+1
- O6 Q) a5 o+ h' u - CLC3 B: b, o7 g" \4 N3 Q
- ADC #$06% I6 s# @! l7 \
- STA $2006 ;坐标设置
' n/ H7 q# G" `" j, B9 X1 o. K# m - LDA $6010
/ l T$ a, J3 J6 Q, t" b7 a - TAX
0 E) q4 m/ R5 B9 H9 f - LDA STAGE_D1,X ;写入数字4 S6 H& O {6 @2 E# [7 O
- STA $2007
4 k4 {& n! I: V! S - LDA PPU_ADDR_DATA( _$ T) M7 `8 M0 z
- STA $20064 Q( m8 p2 |2 i+ K9 n p- \' F
- LDA PPU_ADDR_DATA+1
; C3 N3 w- S; b+ n% L8 r - CLC
2 V6 J- ~0 G. Y- l* s @' ^ - ADC #$0B
& F$ t R( I4 b* t5 m8 g - STA $2006 ;坐标设置
; D; x7 n8 V5 p% X - LDA $6010
6 D) s" G* M8 Q4 w% q) _% J# k: @ - TAX
9 j7 X+ e9 a6 d" L |0 G8 t, r; p - LDA STAGE_D2,X ;写入数字
* g5 q# t6 r6 y N" y1 M - STA $20072 E$ ?4 {+ T0 c7 X7 f$ r) K
- STAHE_WRITE:
/ P, G$ U: ]4 }8 \5 y$ r/ t - LDA $6010
; g; I+ z- e1 k$ m* E! F0 }* `% ] - STA $42 ;初始关卡写入$ `4 x1 [9 b1 q( _8 [
- PPU_RTS:! Z( ~/ A" d$ k* G* f& ]8 C, ~/ c
- PLA3 O7 _3 Q' r3 T, \, F
- TAY& p& J9 G( I5 [0 i% P/ i2 V1 |1 y- o
- PLA, D4 j% E9 n! d$ y+ a% S
- TAX& t- ], v6 R l1 V0 f+ s
- PLA
8 y" n8 a5 Q0 g! \3 ` - RTS
; o6 x' \2 F1 @$ t- U- \ - 7 `' ?2 v7 d5 E- E% l4 v
-
$ P d# y$ l1 C, Q* H' o; \6 ? - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据" L% W1 Q' e% k+ s% u
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF" F: z8 U1 |+ L$ l2 d! a7 m2 t
- - m, b. U }' G0 e6 O
- STAGE_D1: ;关卡数字
0 q+ B1 j4 Y2 R+ {6 z% Z0 e* { - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
% M( {/ _8 Y6 H ~ - : C3 d9 W, ~$ D' u. |
- STAGE_D2: ;场景数字+ c! i5 f- [' W1 z
- .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
% y2 A* [2 P! D; v! c" l -
' N7 T% h f$ r+ z - PPU_ADDR_DATA:* j2 o- \2 O6 E6 s/ w7 G
- .BYTE $23,$4B
; ~: p8 `7 [: C% b- Y -
, j5 `# D, |3 ~9 _ - + z6 |' T" } ?8 l; \
8 u% M* X/ v/ \$ ~. c7 N! y3 K- 2 s8 x8 V, F2 e7 r: O# `' @) g. e: k
* o# t# t) y: X+ ]6 z- .ORG $FE21 ! B7 r$ K6 [" z
- JSR $FF40
- @1 C! D8 F0 Y+ v# d- y - 9 _3 `' z/ L/ B8 p$ p3 s& u
- .ORG $FF40' L7 ]" i& @2 a) @6 Q0 }7 x! e
- LDA $BCDF) t8 g6 @+ @7 K v: U7 i( Q
- CMP #$7F9 L; ~5 f' S, h1 F
- BNE ADDRFF56% }# Q- `( ~6 r
- LDA $0018) c4 {4 L: F& T# Q# {
- CMP #$04
* B' N2 I8 e2 q! M - BNE $FF52! R0 ~ E- b- l5 A
- LDA $6010 g" p2 w2 d: d0 q' I. @0 Z5 a
- STA $0042
/ W% V" V# j1 d+ [! x - JSR $BC00
+ f. K& Q$ V5 R: j. j% \6 o# ?% T) Y - RTS9 ?3 z& N, ?5 B) a- Y7 k
- ADDRFF56: $ G: K: C" u1 ?
- STY $4014# R/ D, ?/ |" o9 ~1 {: f
- RTS
- G ?, t: a2 G) L+ I6 n7 c& U -
% i5 ~4 M2 B; t* V8 b9 O, B* d, k
复制代码 内容:
8 i ~, h) o. ` 1.关卡选择: 标题时,左或B减,右或A加;
. F' |! U; q% [- D% H4 t: y 2.一击必杀: 暂停后,按B键切换;
2 ]" P, O# ^& H8 v" n* {0 X 3.无敌锁定: 暂停后,按上键切换;4 {+ b A m1 r5 y
4.生命加满: 暂停后,按下键切换;
1 Z1 o2 G$ ?- v- y8 m 5.血量锁满: 暂停后,按右键切换;7 j8 u& Z" B* ~' g. r5 J
    " E) A: v3 x9 D" A G( K$ K4 [$ Y; B
7 o2 [% z4 r3 k7 a3 ]' K2 p
FlameCyclone.ys168.com) @) A/ v/ E2 {; e* r
www.nesbbs.com
; K3 Y l+ J" B; P: B" K
, f1 v1 q. G/ m8 a( g |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|