|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 - ]0 c! ^9 ?# o
5 D/ Y) R7 n4 T[FC][忍者神龟2][END选关]
/ g/ o3 J% t2 D$ I! @
/ s; S2 M* X$ M3 w时间:2017.3.31, I8 r: `1 S' ~4 J
作者:FlameCyclone- .ORG $B9E0& H1 R. l! P0 `1 @4 i9 p0 r$ s
- ora_data:7 ?3 }# e$ V+ P: ~4 i- x' m* V
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
! v- i" x+ Y, p% ^3 [0 l1 H - and_data:) g$ I6 o# m" M2 H/ {3 e3 M
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
7 a7 y4 d5 a5 ]/ X - ! u6 o' U8 u+ R/ f
- button = $F8
- p6 \% T, i: G3 }; ^* R - flag = $6000
! m/ m8 c F' M% } - pause = $3D
% Q) i4 y7 }$ D& i6 E( {; v
: ?1 T, n v- {! O- F3 N$ L- .org $BA002 B% [2 r7 Z* h! G2 n- A& L: v
1 s4 g. W3 M5 D+ r" |! A- PHA
P; ?5 O# n5 Q/ M8 h8 p - TXA7 E s- O6 W# Z$ d j
- PHA
& b: Z6 y) J+ g2 P - TYA( d: A) P' u! n& G
- PHA) j' G) i& s7 y1 j0 D4 Z
- JSR KEY_OPERATE
1 G @& k' S" }! j. Y - JSR INV8 U$ L7 m9 k" z; a* |
- JSR LIFE2 R' p: t/ F0 {
- JSR BLOOD% t4 x5 k* j6 W1 k4 _
- PLA
$ w/ m) }* V0 c. i8 m+ m - TAY5 j9 s/ G, |- N0 W e( w
- PLA( M* ]; H7 ~1 g! Y
- TAX8 A$ H S7 }1 m( n& X$ L9 i5 L# s
- PLA# |: X6 b. Y% [9 l; F: A
- RTS3 b3 X+ I: T1 {6 s, i
- KEY_OPERATE:/ r8 Z! _. F0 ]+ ?3 `( I
- data_protect:; k3 z5 _+ V# \ U! ~( R- u% G
- PHA
2 o. M4 K! ?- L - TXA2 t7 R+ C' Y+ m8 F" i
- PHA
" y& F* M" b1 Y* D& Y - TYA+ F7 h9 m9 `2 v, _6 g& {, u% m2 `
- PHA4 k C) @/ o' U
- - ]' ]2 u' M$ r. \: @
- FLAG_CMP:
2 v! M) O# E7 @4 y1 T - LDA $600F
3 I+ z2 K. Y' c P# Q, }8 T- I4 E - CMP #$7F ;标志数据初始化条件判断9 H" z4 z v: D; `& h
- BEQ pause_cmp5 L. n, y% O# @& h1 H8 N: i) e* P
- LDA #$80' `8 X8 ?4 B& S: Z
- STA $A001 ;6000-7FFF写入启用: j& W: U- k3 A; h
- LDA #$00
1 t8 @6 K3 M7 _; X% u2 o" {. V - STA $6000 ;数据初始化
3 @& J5 L* Y( g - STA $6001 ;数据初始化! I; H+ ?- |/ C5 x9 q! x6 Z- s, V2 o7 [
- LDA #$7F; e5 Y6 y: V# o9 C% v+ v
- STA $600F+ a5 I( C% }$ g$ _. S
- pause_cmp:
2 F8 G# D% ]6 j$ c3 D0 q - LDA pause
3 n- q; U: X1 T* ^ - CMP #$01
, R2 n/ n' |, b; O4 H/ ?3 a( O - BEQ button_press8 y K7 x% B( d6 X
- PLA" k, m, I+ v2 a: \4 W; P8 Z0 L
- TAY
% H' P9 I, D `: y - PLA
4 ^2 l$ G& c5 I, { - TAX
3 ~5 T2 _: @$ X8 Z5 T o; Y - PLA* V G$ W; a; B
- RTS+ s( P1 T4 Q; o7 Y% a) a- u
/ \8 j2 n y: F0 S) s- button_press:+ q2 x9 v! ^! o' o6 f: W8 N
- ini_Y:. s" O' e3 z/ p G% B
- LDY #$00! d% V/ D! m" p/ G* k, c
- button_cmp:9 F+ D% D! R( G) P; _! Z! d1 W
- LDA button,X
7 n5 L9 `) z2 C- `9 X! O3 a$ c - CMP ora_data,Y
* _* Z# z0 M+ r - BNE count_Y_cmp$ ?9 @1 S# L5 }
- flag_cmp:
) @* {$ K7 L# h/ |1 L4 n3 e8 C - LDA flag,X2 k0 d/ h6 ?7 M" ~6 l. A: q7 ^
- AND ora_data,Y w& C) V$ @1 J$ z ~$ ]
- BNE flag_and% E( Z L$ d6 d3 {
- flag_ora:
0 J. d9 L0 s' M. t - LDA flag,X
$ Y4 l, ]$ ]+ o% C( c4 D - ORA ora_data,Y( c$ g/ |, @. O! X' C
- STA flag,X
/ c% w) i% o) z$ d - BNE count_Y_cmp1 i7 M& O2 [& q; m" Y' L
- flag_and:
* R+ O5 q0 T9 ]6 H$ F - LDA flag,X7 f( U% K2 c! V$ q
- AND and_data,Y/ K% ^ H' n7 I4 M7 I p# a
- STA flag,X
% g2 `+ j5 M/ p( ^% Z" b3 R# L! B8 t - count_Y_cmp:
m. V' S- F9 j0 F. u - INY' W0 v D; p# R& g2 l4 c
- CPY #$08
0 D, `" u1 e$ l! Z" r - BCC button_cmp
8 ^( {8 d2 x# C -
( t" B% J' P6 q7 T4 v - data_extract:0 C; ]5 M/ Q! {# W8 X$ E
- PLA
/ {1 p9 r- y4 h/ ~: a: ~ - TAY
`0 E2 \' J& d+ M - PLA
2 t0 m8 w5 J- _/ o& w- L - TAX
, H) T# G% B6 ^2 V% ] - PLA! R0 n, O. y. W" D4 q& ^1 c) i* {2 J' N
- $ Y: l7 S6 W$ x/ M+ V
- return:* `. E, X) X/ W7 P' t
- RTS, [8 Y4 h: S e! x3 s7 q
-
( H5 P U0 ]/ q% z' k( { r - , o0 K) k! ?" T$ m
- INV: ;无敌
0 A8 | c4 e {4 p - LDA $6000,X5 V5 g0 u4 Y$ ]4 { C# a
- AND #$08
`- \# h# F; K( o1 }" d0 p - BEQ INV_RTS
7 }' R" r2 o+ q - LDA #$05
6 m4 {( Y8 G% A6 m0 t' c" r - STA $93,X# P: U0 y7 z: C# H# t
- INV_RTS:
* Y$ T3 I9 |( Q' b - RTS
0 r$ k% M5 s1 K* S& U& `0 y2 i - 0 e8 g+ c% w' S
- - v# |6 B# j5 u2 s5 S/ E
- LIFE: ;生命
! e& m2 K/ O5 w/ L* F& ]8 C8 y' v9 l - LDA $6000,X {' n7 `' f$ A a5 @
- AND #$04* g8 S$ B& ^: A- C7 j, C/ ~( X9 w
- BEQ LIFE_RTS7 ^, `* f6 w- U8 z9 |; W+ L
- LDA #$09
/ ?5 S& g( x# r( w( L- C - STA $4D,X1 j6 a2 G# l& C v) w, N. r
- LIFE_RTS:
" ^$ G8 Y& a( k! f: v - RTS
) _# r" `$ |8 K/ N
/ U* N2 Q- r1 g/ M1 h- & E6 T. F+ c9 I9 P
- BLOOD: ;血量
0 i. D( i, g7 \& A1 W; k - LDA $6000,X( f- x9 W' a6 i% l
- AND #$01
. T- Z7 S' m1 M8 I$ h! \ - BEQ BLOOD_RTS
& o, t" f( p# u/ J* T, o! g# Q( N - LDA #$38
$ c' X6 m2 z) s4 u3 e3 a - STA $0568,X
1 y5 |; X/ J& f2 z" g - BLOOD_RTS:
, t5 W8 V. _9 i3 m9 f" \ - RTS
; S$ k. o3 K8 ^' O -
$ |0 \/ R4 B8 H6 t& H$ x - : j7 O+ s3 q# O# R: M
- .ORG $FEFE
L; ^( ?9 f! g0 M - JSR $FF60" Y3 [" K$ }# T* m# J; H
- NOP
0 [6 p& F1 X8 z- \ -
* t6 T2 L, B* ~* e - .ORG $FF608 A+ y- r5 v Y% m
- STA $F8,X
% h: v; F* w$ Y - STY $3A,X
. ^1 m& C+ r+ C' @4 v- r% W- a - PHA& x7 A/ d1 q$ l2 A4 i
- TXA
! y5 l) ~! k+ a" e ^5 b - PHA
P) F4 _+ j& G( j - TYA4 t( i. {( A/ k/ P1 Q
- PHA8 A% e/ K3 v5 v" W7 ?$ b3 m6 k
- LDA #$02" ]! k0 t3 k2 m/ [. m4 x4 m1 e+ ^
- JSR $DB11 ;调用系统切页
8 Z. G/ B5 ]( m! ]3 o% L - PLA0 A- Y9 g" [# L% ?- B. [. ]4 p
- TAY& |- q) u) b4 X! _
- PLA
& L& _# t1 w$ M+ m6 k4 o. j - TAX
( `% W6 l6 b' Y- G) Z! ? - PLA
% F3 b) h, @5 D - JSR $BA00( S/ I) k9 h/ K: O' E
- RTS + C1 `# k1 O3 q8 r# ?# x9 X" ^
- ( r# R _7 a) ~ p
- ;[FC][忍者神龟PPU][END]5 I" F* R$ s: @' Q7 B Q
- - e, k& e( _$ D, u
- .ORG $BC001 G) {" _' q. D6 n8 k6 d3 _$ J
-
% B' \: z1 j* M+ ~ - STY $4014 ;补上覆盖的精灵写入指令- _6 z: j8 ~# E8 p! Y
- PHA H b$ c) ` W% F& o& A
- TXA
$ J% {# J9 i7 { - PHA
! Z3 ]5 i" S7 e# p - TYA1 ^( @4 j' P0 j+ x' W
- PHA
/ P. {- o9 L( f- R+ @6 w - LDA $018
* a+ g) a6 t1 Z% A - CMP #$01 ;比较是否为标题画面7 u2 U! Y9 R. ~3 d
- BNE RET
% K# [. f: E) z - LDA $019. F5 ?/ A5 w: N6 z$ `
- CMP #$01 ;比较是否为标题画面
2 t8 j& z. z" H& c - BEQ PPU_STAGE( i8 }* p& `+ ?* k- Z
- RET:
; q; h7 Y X1 z$ |" \5 o - PLA
3 M$ u' v% Y' n2 V1 R* \ q7 _1 D - TAY& ? v5 P; A- @2 ?1 q4 f1 J! K; n, n
- PLA+ v5 N0 L B2 E
- TAX5 a0 V1 I- U$ E9 F+ @: c3 d
- PLA3 k. w- h' b, T. K1 b
- RTS% Z1 }& h% c2 |- }0 v8 k
- PPU_STAGE: ;STAGE显示程序0 D! m2 |4 k/ ~6 _: i2 M
- LDA PPU_ADDR_DATA& n5 L% E+ C l9 Y$ @1 z
- STA $2006
" r' ?2 f9 V/ n3 h9 V - LDA PPU_ADDR_DATA+10 v; t2 g9 f( t' E' c7 z5 W! ?
- STA $2006 ;坐标设置
6 |9 [$ y; r7 c! ~/ \; [, a. \ - LDX #$00
1 d, \9 q7 }3 X; }# z K6 f9 v - PPU_STAGE_WROTE: ;写入STAGE字模$ x! ^1 p' A8 E& ?% S4 m3 _. d
- LDA STAGE_DATA,X8 I1 F& L5 R) U+ e, _; S
- CMP #$FF
5 h* `. |3 r; \4 U6 N8 C6 r3 } - BEQ STAGE_CMP
% \5 P# u5 @. T8 | - STA $20076 V7 E6 N* H. j, R/ o) R
- INX( q5 D: n+ M( |* V0 X. u- T% H
- BCC PPU_STAGE_WROTE
; p1 w1 y) \% M - STAGE_CMP:1 E% M& o7 ~& c2 D" X# m
- LDA $6010' D4 A6 N# _+ [) P
- CMP #$FF ;关卡数据初始化条件判断4 Z" I6 Q' B* w5 |* g: V8 C6 U9 y
- BNE KEY_B, L: J) T* p4 S
- LDA #$00
, V' S1 D0 q* M; q) _+ h - STA $6010 ;关卡数据初始化2 \" `1 S; u$ D: [, a$ Y3 a
- KEY_B: ;关卡减少' \6 G* X; a+ w2 Z; z
- LDA $F8- G% R, q! N+ F) e$ l
- AND #$42 ;按键B或左减关# P5 K( A! x7 _; f7 n2 S5 I
- BEQ KEY_A
@9 i$ \* k$ p+ ~5 J, V! d# a - LDA #$FF( q* f) h) y: [5 h8 k
- STA $40, C3 T8 e( K% J- B
- LDA $60106 V" |! |) g7 K9 s3 R
- CMP #$00 ;关卡比较
+ z, z& m, U8 f8 T# R" F - BEQ KEY_A% p1 \7 k* R+ b" i a z
- DEC $6010 ;减关" o' X- \8 c% C% w; s8 C
- LDA #$574 y+ {$ T; ^2 T# a0 t2 q
- JSR $DB52 ;按键音效
2 V* [4 `# ^7 O6 e4 z" G# w7 u - KEY_A: ;关卡增加2 B; j0 w, k: q
- LDA $F8$ I$ A6 C' ~: H7 s* A( \
- AND #$81 ;按键A或右加关
2 T+ |) @# e* L+ | - BEQ PPU_NUM_WRITE
5 V h( b/ r9 `7 M9 S+ X; q - LDA #$FF" X6 p5 `9 f2 d7 M3 j- Y
- STA $400 j# E3 N% u" \4 j8 F2 t( F
- LDA $6010/ a% m2 X3 b, e$ r& T! r- U) i4 F
- CMP #$0B ;关卡比较
: [) L, c3 w& ]2 c - BEQ PPU_NUM_WRITE- W4 w3 d6 q. u' `# s6 B
- INC $6010 ;加关
% T$ Y4 j+ G' r8 n& H) R - LDA #$57% }1 \0 Q0 u* R* A0 H$ g
- JSR $DB52 ;按键音效7 O( w, x0 o" B- f. T+ p$ F
- PPU_NUM_WRITE:
$ Z- F/ |+ o. l$ H8 H+ Q - LDA PPU_ADDR_DATA. g( t0 |) q5 O" c- l7 y
- STA $20063 F6 ]$ d, R; X0 n' ~, Q
- LDA PPU_ADDR_DATA+15 l: G" l& G6 G" K
- CLC# c* I3 E( W3 m9 C; j) s, U* u
- ADC #$06+ B2 g! }, j( D8 Z. W; ~
- STA $2006 ;坐标设置
( _9 |3 f# S9 O% P1 O! W; K, a - LDA $6010
- k! }/ {4 W8 r+ Y0 s0 C1 `8 W - TAX
! k2 }5 h: n6 ~) {/ U - LDA STAGE_D1,X ;写入数字7 Q4 R! h* }: y4 P" K0 H" x
- STA $2007
$ z$ q7 Q$ J+ [1 @1 K5 h) l - LDA PPU_ADDR_DATA
' V6 Z% r# M8 b: c S2 d' D - STA $2006
5 u0 R2 o, }5 o: ?) ]( x |& j - LDA PPU_ADDR_DATA+1# K3 v1 T: j- W; W- v* h
- CLC
7 o4 K* s: a" p& l7 W0 p; b - ADC #$0B& f4 Z8 w3 P* p( R! W( K
- STA $2006 ;坐标设置3 n% h7 P0 N9 Q8 `& M
- LDA $6010
, U/ |5 M+ Y- T. Z' t: A" g - TAX
& E+ \' a) j$ t- { - LDA STAGE_D2,X ;写入数字$ [3 b+ v' [9 L% G& ~
- STA $2007! b+ o* `% r' [: U; L& l
- STAHE_WRITE:- {. Y3 k4 W* Z/ |
- LDA $6010- ]. d2 c) C' U0 ^
- STA $42 ;初始关卡写入
4 L9 ?; i6 Z+ V! x; J - PPU_RTS:
& c w; ^5 a& j) n - PLA; p" w# F4 m7 s5 b+ K
- TAY) t3 F& T! S0 J6 _
- PLA
+ K+ {" m) F& U. Z - TAX) v+ o; ~+ i5 f/ x! ^$ }9 D8 | `% b
- PLA( @6 L! V7 s6 y% Q4 e5 N3 ?
- RTS
' p* p7 w$ ^5 H& I: a -
) n) D9 x7 C+ o0 g4 B% p3 J/ ]1 ] -
3 P2 L5 S& G$ @" F" Q1 W* o" ` - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
. T2 C9 z& T3 s" H5 a- Y - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF& T- C- [- T" Z |! I: Z
0 R. A0 w( A v) o! j: ]- STAGE_D1: ;关卡数字
/ r% O; K8 U6 }" V8 U' @: l5 D# e - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08, X. O; x- u" x3 c' ^/ e$ ~" l8 v, ]
2 y% B- |) E J2 T, c* [0 b- STAGE_D2: ;场景数字
( J! y; f/ p- {4 I - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03. X+ C% j9 [; V% g0 Z' t! F
-
& _+ U0 n3 b9 P3 z - PPU_ADDR_DATA:7 _, \% K7 p/ N) C: S4 J
- .BYTE $23,$4B! _% k/ I2 ~0 f$ B
- ; _% K. G6 ` T c
1 Y' C, G7 U4 I4 @5 y- , l$ f, C. {$ [ i/ J$ J6 G
- I5 \( _/ A. B# f; v: Q- + m* C0 t5 }6 [( O
- .ORG $FE21
; @) X! E, c, Y4 `/ A! T4 y: \ - JSR $FF409 _. e0 y/ R; G2 A: T1 {2 N! t* g8 s
-
+ b+ T* P7 h2 L5 V0 c - .ORG $FF40- b0 P7 a" i, n4 E8 m
- LDA $BCDF
( F, Y c5 g I- l$ i7 [, \4 g - CMP #$7F
7 y7 m! x; A# L% `, x! o; b - BNE ADDRFF56& p+ l4 r i s! T1 Q2 _
- LDA $00181 r2 Z' f {+ w* s( f5 J- M, a5 u
- CMP #$04
* d: u5 O5 S0 b& s/ r$ J$ x' ^ - BNE $FF52
h: P! l1 J- G3 D" P( a - LDA $6010
9 ^ {. F& k7 x J. D( K - STA $0042
9 V$ D: Z0 k6 x0 i# M - JSR $BC00
4 M( i% d8 H8 m5 _3 p9 I: z - RTS2 l: v4 h/ q M5 x- @ V3 h
- ADDRFF56: $ L3 w% v1 _3 l7 k( o
- STY $4014
. ^* J# u, v9 m5 v/ Z, Y. {- K - RTS
. l: ^; G3 k: _; k- |' K - " \" b, y0 _, b" s# a% M# O) C
复制代码 内容:
( h' ^1 ?9 R G# J% |/ t, O 1.关卡选择: 标题时,左或B减,右或A加;- [! I/ t9 X5 E( z* B) x( ]; c
2.一击必杀: 暂停后,按B键切换;
4 ? @5 W" e) w 3.无敌锁定: 暂停后,按上键切换;% q h z- G5 n% Y
4.生命加满: 暂停后,按下键切换;
+ `: S6 B: {" g% Y$ o 5.血量锁满: 暂停后,按右键切换;: q8 i$ T- q0 k3 U/ N" c1 [0 N
    & [( f7 ~% S1 c7 ^
7 c4 C' |9 A3 k
FlameCyclone.ys168.com
8 o5 g/ M7 w: u$ k' ~; o+ v; }. [www.nesbbs.com1 R& G$ J& ^; ^. J* x1 y. k9 L! ]
, c3 C! S/ J8 [6 `, @$ A
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|