|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 , {, `+ D: k7 s$ M* ?9 b
3 b7 W4 o& Q# d% V[FC][忍者神龟2][END选关]
2 H+ ^8 F7 D. F; A, l: j, e4 z. z: f) e+ c* Q
时间:2017.3.31) u$ Z: ?9 Y7 G$ d; u, a
作者:FlameCyclone- .ORG $B9E0
% V, G) W+ s& C" J( |1 s$ v - ora_data:6 `& w. J+ S( m$ ~
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10: p: B, Y3 \: I' M
- and_data:
; z8 \8 }; B7 R6 D4 ]1 V2 f: s - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
. h" H/ x; h" s6 T -
3 b! h7 I( x9 G - button = $F8- G, ?: [7 z/ o8 b
- flag = $6000
$ Q' S8 ]5 o8 Z2 }$ \ E - pause = $3D: y/ P1 N! o* d( Y/ P o8 x5 V
) R( `' X/ ]; I2 \9 b# v; y- .org $BA00
# c5 x: z7 D; f$ P+ T, ^; u4 d; u) Z4 ?
( Z( M) j0 S1 G1 A5 m/ \- PHA
% N' J- f# Y) D" ]3 J6 R4 ^ - TXA
9 b( L. i( n5 Q" }2 \) O8 o - PHA2 b: a! A& m, [% T, K2 j
- TYA! u, h" `1 j$ l& O. t+ b C
- PHA
+ [& }2 F/ J) i' F. z; f( U - JSR KEY_OPERATE
4 k8 K. u( _1 {3 w4 F( U7 z - JSR INV! k- }" m/ X, W& e2 W
- JSR LIFE
! `9 k/ H+ ]# a1 m - JSR BLOOD
$ u) o. ~* w$ { - PLA. X5 {+ e1 F3 e$ R
- TAY# I3 H6 G* F. y: r/ `
- PLA
6 o& N# e' `( N+ T - TAX. B# G8 Y& v m- h
- PLA
- f7 n! @! W: X( W% g3 O - RTS! z. }! o( J" Q
- KEY_OPERATE:
$ J$ f" h2 H5 @( U7 E - data_protect:
. C( x: }9 D/ ]; ^, X3 a/ X - PHA% e. J. D3 M; L" f6 F# I
- TXA' i$ w- [4 V7 c* I7 L
- PHA. e6 U- b* D7 P+ t( I' `7 K1 V- x
- TYA
. ~4 R6 q( ~1 z2 h6 u- p - PHA
- r' H! V! O/ K: k9 s5 O$ v - 6 K4 L& l4 T# t6 }
- FLAG_CMP:" E* f K% Z3 i3 o9 |; L# p6 i
- LDA $600F* Z7 L: ~0 b& F0 U% s, v0 Q
- CMP #$7F ;标志数据初始化条件判断
. ?" ~' c9 a) E2 [7 S8 ~ - BEQ pause_cmp& Y& I z9 T* T+ D! L7 v
- LDA #$80
% V* ^4 o. ?" A3 F! u. g' c* f - STA $A001 ;6000-7FFF写入启用
: j3 P9 K0 _8 K) r: o& V7 x) S - LDA #$00+ c7 I0 A9 I' {1 e; V
- STA $6000 ;数据初始化, c/ A: |5 H9 C6 |% X
- STA $6001 ;数据初始化- g( t3 L. q0 y# B) `( f
- LDA #$7F
7 `% ]0 ?% o5 {9 \4 _) j3 h - STA $600F, M% p# Z2 p+ k* \/ r2 Z; ^( H
- pause_cmp:
8 G% u# Y) \8 L - LDA pause
d$ z' }# `3 M0 c9 q - CMP #$01
3 f' K* G- E9 A A8 O: {5 p - BEQ button_press
/ g7 {- @. C* A! ~) Q4 k - PLA( c- t' w6 {* ?5 v, a# ^ {. D- l
- TAY% R# ?" c0 `- T8 X. S4 J9 p
- PLA
! Y$ z. |- w8 X" [ - TAX
. J; l0 V" O$ u. ? - PLA
( Y- m% s! O7 e3 }/ W4 ?/ O7 B - RTS
8 \' v P* A0 i2 p
, V/ c/ N- g# D4 K3 b- button_press:
1 p! @" P; s2 ]) L- D - ini_Y:
' S8 e3 l( g, p) q1 X/ M3 ~ - LDY #$00+ c: j- ^/ d. e k( E4 N; S2 J
- button_cmp:
# X1 C5 @# J7 j( t6 i - LDA button,X
7 l$ N4 Q4 c) N/ ]7 X H0 d+ K1 r - CMP ora_data,Y
0 U' ^$ ]1 N' J9 p/ b/ E; o - BNE count_Y_cmp
. Z# h: d3 s3 Z- K! n - flag_cmp:2 B4 c1 m& M! h7 b" G/ g d
- LDA flag,X) Y# B4 Z( D# B3 F6 X: y" G
- AND ora_data,Y
& E; h3 y. V9 K9 Z" U7 x" _! V( D - BNE flag_and
5 J8 F& d8 Z& _5 H7 X N5 U - flag_ora:5 h1 [/ d- y/ ], [8 U
- LDA flag,X& q8 G; r. k0 A! E
- ORA ora_data,Y, h# m6 Q6 T |2 Y4 V% s
- STA flag,X
1 y+ u0 N* Y* @ h7 f. ~ - BNE count_Y_cmp. X, o, w" U8 s, Z2 @2 q( H
- flag_and:2 |3 g' D2 z. Z0 Z" w
- LDA flag,X
" V1 G, L' t" Y/ |. \5 ^/ T1 L - AND and_data,Y& J! H( t2 [* V3 W; r
- STA flag,X
2 i2 P/ W# c2 N* g8 R% { - count_Y_cmp:8 x, p2 Z# T# [0 t
- INY
5 U" K0 t6 w/ v; D2 @ - CPY #$08
. E- h2 d3 T+ \8 R- y! @8 K0 v - BCC button_cmp
1 I: a5 b c/ g7 K! U/ ` - ; w: T' l+ J* L
- data_extract:9 t2 k S6 x. m/ ^2 L
- PLA
) q' U4 B3 |4 l4 a - TAY5 w |' s1 C" ]% e; I
- PLA2 Q& F$ Y4 W7 [& p' e4 p" L
- TAX. ?' t" y4 {% |$ N
- PLA5 Z. `* [- p Y1 F" | c7 B% s
- * x! |8 e, ^& a% K* Y) C
- return:- q. ?6 ]" j5 w( V
- RTS+ @$ j& Q+ r3 A' d! \
- 2 A* i% y; ~% G8 b
-
: P5 b" U/ c4 u! w, ?* e - INV: ;无敌
; h+ f B2 p! n/ I e" [ - LDA $6000,X
. _9 K6 u$ W" q! T! ` a ~ - AND #$08
$ g! |* g5 m* r0 b. \ - BEQ INV_RTS# Z: ^) n6 _( w I$ n% @1 y( y
- LDA #$05
! v1 L* T3 [1 s/ L/ R - STA $93,X" T$ g: [# m0 C! m, \$ E! Z( S
- INV_RTS:8 L c3 O% s9 x3 B
- RTS
9 K4 u% v* {8 k, w* I6 P2 S
3 W- F/ d+ p, Y2 C3 R1 m- / w X# r; J$ n L1 a
- LIFE: ;生命
5 S9 z1 q0 H2 T$ \3 a - LDA $6000,X
$ ^5 [+ y2 \* T5 g8 _* X - AND #$04
6 T/ f8 x- O S5 W& {, x - BEQ LIFE_RTS) ~7 L4 M4 l2 [( s' T
- LDA #$098 e7 {; Q# J8 w. R+ i! X* E1 |
- STA $4D,X
( F- t- Z. B4 E8 U - LIFE_RTS:
8 u' N' s- y% A - RTS
3 Z6 I P8 t/ z N$ R
. V$ f$ v' p: v8 ], A- 2 M+ u2 W% J, g+ D, {% I4 Z" S& N9 B7 A
- BLOOD: ;血量
7 m5 {7 T/ b u* i0 Y - LDA $6000,X1 m4 C2 G) x3 k# Z0 S7 J& T$ F" x4 @
- AND #$01
; r% B8 @* r- W1 g3 M - BEQ BLOOD_RTS. o, h1 O* S1 c" j0 M3 c
- LDA #$38 }& M. g) F P) Q. ]& }0 h
- STA $0568,X6 h- x; V2 J7 F; r* w) b1 t
- BLOOD_RTS:9 s" c+ D9 x3 w1 m q
- RTS; E2 @5 `+ X/ {$ {) i9 `! g8 m5 G1 I
- 4 @7 ]3 ]" X) ]& J
-
/ O" d' I; F `& y: P( j. h; t - .ORG $FEFE1 h9 {& ^5 q9 K
- JSR $FF60
0 ]" t" f6 B$ \ - NOP' J; _ b8 D2 Z \9 Y0 A4 _
- % x3 [; q: K; V/ [
- .ORG $FF60
( u! A% H; {! q: ` - STA $F8,X
% j" U; X/ m: s5 V3 b - STY $3A,X1 h. B3 Q' H& m1 a5 E, e
- PHA
/ v, m, j$ f: f5 v, v& f5 y1 F$ P% ? - TXA
9 Q s$ g H4 j - PHA
. ^7 a! ?" f" G5 q% V: ~4 ` - TYA, L- V; E! ^& m6 E# ~6 Y; s
- PHA, z2 c; `. O$ i" G# T2 }$ |
- LDA #$02
9 q' t. ]1 d7 ]# D' q8 C - JSR $DB11 ;调用系统切页# c% Q" H0 O* M" [" G6 e, e) E
- PLA
' d0 e: q! s% u5 A: d* ? - TAY6 G. U9 g( b- o6 \: T/ M$ l
- PLA/ y: H, Y) U1 y% \
- TAX; D& |! z- K# t
- PLA- `) V* b! ^8 T/ i# n# h1 m. D
- JSR $BA00
* p! y- N2 H3 t3 X0 i - RTS
/ K* Q6 d6 D5 \+ g4 A" b/ B - ) T; | p% U) u8 I0 _2 g
- ;[FC][忍者神龟PPU][END]
) R4 u4 O. [2 y! ?/ n& s9 w& e
* u# I' f* O! M8 U; F- .ORG $BC00
7 \: B4 \- x9 H6 i# {$ j -
q3 R5 T% g, n6 C$ N, i* z - STY $4014 ;补上覆盖的精灵写入指令
3 Z, r$ r# D3 ^/ r% B - PHA
/ o. C9 }/ p: ?4 n - TXA* Q, K( w' A3 d' T% N8 \ _
- PHA
t. B* C; Q' x& @# r - TYA! x1 Q3 Z- y5 e9 _' i# ]; q
- PHA6 ]9 {/ ]# `4 Z
- LDA $0186 M2 T& y, q; x6 l; o' o3 t1 x
- CMP #$01 ;比较是否为标题画面
# ^( p& s1 W& W- S' v - BNE RET% Q8 L4 ]" X2 ]! x: ]9 Y& \
- LDA $019/ V: z, Z" g9 G; Q W) b: u* z" \+ h3 W
- CMP #$01 ;比较是否为标题画面
, X; s3 k7 d* w' a& I - BEQ PPU_STAGE
3 J' J; o" X/ e1 G+ V* I - RET:
1 e9 T2 ]9 i7 Z5 L- [ - PLA
; }+ \7 H! m. w - TAY% R+ X7 m, z! T6 }
- PLA
( a& U+ E- v/ E, s - TAX0 _* c8 a) |+ \, k
- PLA
( y; {# |! y" C, ? - RTS
9 [) q& o1 Y# v% F - PPU_STAGE: ;STAGE显示程序) F6 d3 \* m' g% ^
- LDA PPU_ADDR_DATA, @# [0 T) s' y' c4 g
- STA $2006. i8 k% W! g0 C) Q4 ^. J! {% T
- LDA PPU_ADDR_DATA+13 R& j( g [9 Y. p8 R# C
- STA $2006 ;坐标设置
( q# f, Z9 W' J' A$ ~3 N6 y8 M - LDX #$006 C* b& e: S6 Y) G- D, R
- PPU_STAGE_WROTE: ;写入STAGE字模
9 x: o/ D' L& e - LDA STAGE_DATA,X. C$ d0 V3 g' L4 Z/ F+ x# x6 W
- CMP #$FF& e _7 E3 l$ v& I
- BEQ STAGE_CMP) ?) K. F+ X% |+ d3 y( ?
- STA $2007; z5 T! q( L5 ?7 F4 w. A/ n3 }) g
- INX
$ j q+ u2 }; O4 ~ q" w - BCC PPU_STAGE_WROTE
/ Q0 \$ O/ g" M7 |, U' I2 K - STAGE_CMP:' E! B F# O: I
- LDA $6010% {- L6 h8 Z/ R$ N
- CMP #$FF ;关卡数据初始化条件判断$ ]" `6 ^( |. Z7 c A2 l
- BNE KEY_B' b' ^5 m- Q% W" \/ V! j \
- LDA #$00
& ^7 x$ b+ V9 I1 D/ ]$ f+ v - STA $6010 ;关卡数据初始化
?# {5 g9 s5 h% ~, S - KEY_B: ;关卡减少+ q1 D) F$ I/ a `5 T
- LDA $F8& }4 ^5 T% F- f; w# H, ~! O
- AND #$42 ;按键B或左减关
% M9 _4 N$ x, W& U8 _ - BEQ KEY_A
) w' G. [* p+ e - LDA #$FF
1 {( C/ L9 i" P/ X - STA $40
# z" D7 a% Q$ j7 ] ]. Z# X& i* j5 \ - LDA $6010
% i4 K9 l+ M& O$ q- z5 i - CMP #$00 ;关卡比较
2 i' x. w; ~: [' k, Y! S& N" Q - BEQ KEY_A
6 Z0 p8 c [3 R5 g - DEC $6010 ;减关8 e( g; e9 w* O) l+ F( @
- LDA #$57. R# u2 L7 @ z2 b
- JSR $DB52 ;按键音效" @! L! f, @7 w
- KEY_A: ;关卡增加4 h6 k4 ]3 r6 e Q* d
- LDA $F8+ \" e8 }- B$ o& |/ G5 B' |, M7 n+ \
- AND #$81 ;按键A或右加关. W' n8 _; k; f* D5 d6 A, L& ^
- BEQ PPU_NUM_WRITE
! ?5 p# ]. F0 L8 c+ e( B( V - LDA #$FF
( H& N9 R& U$ \! E: d - STA $402 u, E7 h! K/ d o1 k1 N ^8 U- ~
- LDA $60108 D( m( z$ C7 X( C& M
- CMP #$0B ;关卡比较) s9 C- T; B/ t" U5 L x
- BEQ PPU_NUM_WRITE
& S- e9 ^* z$ X& Z2 D! U+ Y - INC $6010 ;加关
0 P$ A+ w' F6 p! S# W - LDA #$574 i1 X5 S4 H* w
- JSR $DB52 ;按键音效
, H7 N& d' O' `0 q3 n7 h6 E5 b3 [ - PPU_NUM_WRITE:& g* b4 ]' `; D) {+ C+ e
- LDA PPU_ADDR_DATA
" A& [0 ?) [9 g1 @( h - STA $2006) r% G1 c: R( P5 R5 Q) H1 `
- LDA PPU_ADDR_DATA+1" Z- K' D# P' O; R
- CLC* P8 c1 ?* m( t( v* f5 m
- ADC #$060 A0 z7 i" j& o1 o& L/ v
- STA $2006 ;坐标设置, H5 \6 n7 f1 d4 ]" N) @
- LDA $6010& v* K' `( g9 l
- TAX
% ]1 |4 R6 M& z) c0 \; ^ - LDA STAGE_D1,X ;写入数字
9 z" I2 x5 `% m1 } - STA $20075 G- l8 f. L7 p3 `9 C) {
- LDA PPU_ADDR_DATA k4 A1 o1 Y$ s0 [; f* p6 K# T
- STA $2006
) x# O- h2 I, ^9 ?. A$ c - LDA PPU_ADDR_DATA+13 r/ i, ]: _$ Q4 N8 T6 n g
- CLC" b ~% z5 p/ Z' j+ K2 a5 {
- ADC #$0B% f7 O. T, T5 [' f/ `' ]
- STA $2006 ;坐标设置
' a9 r0 X$ W* ~1 r' }. l - LDA $6010
- r% `, Z1 E. h' y7 m - TAX
0 z3 A i5 h0 t9 Z - LDA STAGE_D2,X ;写入数字! R1 W* i2 y+ [1 e L( F
- STA $2007
2 P/ G8 [$ L3 b2 D# H: _ - STAHE_WRITE:% [6 F; N1 y' V9 P0 u7 o
- LDA $6010
. {# f h& Z( \( B - STA $42 ;初始关卡写入4 u; ^3 u$ h) `7 [% d: y" ?. J1 ?
- PPU_RTS:
. E9 l% X8 K0 B% V5 ^ - PLA6 ]; r8 M! i! q
- TAY
2 _) E' S$ Q# L - PLA
1 ?. I. K7 a+ X - TAX9 w2 I5 f: z8 M& l
- PLA \$ H7 U& ~# T; x. p- [8 \
- RTS4 X7 H* D% h U5 ?7 u$ R$ J
- - z3 z: o$ p* D8 A1 U% V; f
- ! P' i6 ^: h% O5 d, f
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据) o% R8 @5 S: `2 l4 p
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF. h$ a2 s* Y! h9 U
/ E* t ` b) m s2 j4 K- STAGE_D1: ;关卡数字
6 v0 n% x9 Z% _! |( c$ T - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
( g! K' Q7 H9 p: P) C
: u/ E# k) A2 O' R- STAGE_D2: ;场景数字
2 s: @) M3 @9 l, m8 a& \+ E( y - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03* k4 p6 G# p- z1 I9 n, W; @
- 1 [; R4 I% D- i; S
- PPU_ADDR_DATA:# Z9 ]5 c" ]4 u
- .BYTE $23,$4B( E+ ^6 g, S, A/ k" ^8 t7 b
- ; f. `6 q& |* n9 k' n+ _
: X9 Y& Z$ c; v9 ]& s
8 a, t) I0 \* ~8 R% l; O: B- . P4 o' E. O: X# f: b4 s. i
- S6 i# R ~- G" b+ ]
- .ORG $FE21
! S; w) l) a" j - JSR $FF40+ H& x9 s9 b: e5 S) f; B* N
-
- q, D+ g r: A2 e. B& w - .ORG $FF407 Z: A6 s2 `+ O& F! R
- LDA $BCDF& e6 N& x/ H9 ^! C# f5 E
- CMP #$7F8 I8 l* ?; ?* O
- BNE ADDRFF561 W; |1 q6 C/ Q2 { }; H
- LDA $0018, U. m; d$ Z& A" Z9 a
- CMP #$04
: Z x* C+ e/ O4 j: z - BNE $FF52 y0 V6 I/ V& a* f: U
- LDA $6010
( e5 A7 u! l% G - STA $00421 N) _, Z6 E# h6 ]9 r
- JSR $BC00
1 y6 O( e6 X* O* {0 y+ ^% ^7 A - RTS8 \2 x) @* L4 h/ I/ v" _
- ADDRFF56:
8 C; n4 o9 s" f' F; W, L - STY $4014
( x$ ?/ v1 `* `& N- g, I - RTS
0 X% d* n7 M4 q5 u2 a: E' S -
. } [6 a- V. T# r4 f; k' P: x. {
复制代码 内容:
4 m( i3 o6 ^! m 1.关卡选择: 标题时,左或B减,右或A加;
1 D! N3 n/ M! N* t! G1 L' N# f 2.一击必杀: 暂停后,按B键切换;
; m4 N* o# i! i 3.无敌锁定: 暂停后,按上键切换;3 E# K/ b, I% _9 y9 `
4.生命加满: 暂停后,按下键切换;
! G/ }8 V& r1 z" y! F& S; X* ~ 5.血量锁满: 暂停后,按右键切换;; C D8 D" z5 y3 q( [' } e
    
i$ b& F" F7 e/ @
* G& p. B8 T& |" fFlameCyclone.ys168.com5 H+ n% M- o0 H b! S8 b$ O# M
www.nesbbs.com7 ^. x0 P+ Y& T! b
! l5 @5 K# w* J: b6 V# I6 P |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
2
查看全部评分
-
|