|
|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑 ! Q1 w) N- v$ B
- N8 k; B* ^( \: C) u[FC][忍者神龟2][END选关]
5 b% e# i+ r+ M3 L1 n) a5 p4 I/ b, ~/ |$ g
时间:2017.3.31
5 l* F* S- Q5 s作者:FlameCyclone- .ORG $B9E0
$ M3 g7 I2 D: k% D ~; ^, g% W - ora_data:( J/ [ S9 ~2 [9 X2 a
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10
1 ~% ~$ O: l+ n. `. @ - and_data:
! ^+ j* b0 Z+ {4 f - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF" s1 b: k/ o/ i( ]9 x
- 3 Q- ~4 k5 D- s8 O" [5 v8 w+ q, i) V
- button = $F8
- @% E6 U2 A/ t( X$ A- n/ r - flag = $6000
6 R2 U( s5 q1 h- E E7 r- | - pause = $3D
, t$ ~2 J6 c/ J6 i Q1 [+ i - 5 c+ n7 [' I: ^5 A% W2 m, O; R4 z
- .org $BA00
' k# l& @# h1 f' U - : I* s2 _: {* {1 G: x5 W- o
- PHA
+ y* G, ^1 ~* _3 p1 B- p - TXA
% Z! F/ T! E5 m+ y# X - PHA
; b) K! ^; ]6 P+ q3 i/ f6 o - TYA0 s3 _# c, P. Q( R" k8 X& d
- PHA
2 h) G7 y4 Q; q - JSR KEY_OPERATE& a$ z d' b( k
- JSR INV$ w- {2 @; K6 ^+ R8 t
- JSR LIFE
- F }. T5 g5 I1 A1 M8 u) w, L - JSR BLOOD
3 @4 E1 ]8 P! O/ } - PLA$ B5 v1 |* {( s( `1 x
- TAY' b, @# o+ f1 \- `+ `6 u
- PLA5 u& @- x+ a* B8 {# [; j0 Z1 P+ F
- TAX1 x% S# ^; ]" S C
- PLA$ A) T& v! W) m+ D+ H
- RTS
8 R# k9 B9 [$ q9 K/ @4 `9 ?0 A. i% y - KEY_OPERATE:3 w7 s s2 k+ B/ |& j
- data_protect:
W/ a7 b; j- z - PHA$ I! t6 w. v) J: l' U2 n2 q/ C
- TXA) V! ^ r4 K3 x
- PHA3 G2 b& @. @+ P$ j1 Z+ d# c
- TYA
! m* _" m4 ?6 [$ s9 Y+ C - PHA
# S; j. Y6 \6 n* T3 u7 V
' q+ F, t8 d: \3 m9 Q- FLAG_CMP:
1 p) B: U. D+ e5 G - LDA $600F* V* F5 O# C3 Z- r
- CMP #$7F ;标志数据初始化条件判断
. Q( w' `; }! m- i - BEQ pause_cmp5 J- {, }5 S+ S
- LDA #$808 t; T+ J7 ~" o/ Z1 ^3 x0 U
- STA $A001 ;6000-7FFF写入启用. O0 j# B! T) i2 \# z! r
- LDA #$00
" A; E% C, a Y$ E5 h - STA $6000 ;数据初始化
8 A/ q" f2 R8 \: j! L - STA $6001 ;数据初始化
6 O+ v P8 }8 v: I/ J - LDA #$7F
/ |. u7 F2 r4 a- q - STA $600F5 c3 G/ a6 P ~1 S
- pause_cmp:9 g7 I- X; w9 `5 M V
- LDA pause
! \8 ?7 J. y9 y - CMP #$01 c4 E% j+ @ d& H1 x
- BEQ button_press, `& Y' n8 w' G/ E) G
- PLA2 X; e0 F/ B+ q5 b* f4 {
- TAY
7 P% O" E: j. j" i2 w+ o% g - PLA
" ^9 O0 S6 l) @/ [' w1 [6 A2 w - TAX
* d( A: l) f6 d: Q - PLA
+ T* n& z1 u& [- [- I' H) W0 q - RTS
7 }5 p* M/ o3 A7 \# |( f
* B5 A5 ^7 q1 F$ N! ^9 W- button_press:
7 s u- {: Z3 m - ini_Y:; y1 } y3 t2 \7 x) m8 \
- LDY #$00+ x' S) u- O& O9 w
- button_cmp:
! Y3 p3 @; Y7 ?( ~/ |4 d1 J - LDA button,X) E1 e- W5 ^$ O2 [! g) N( z
- CMP ora_data,Y! @0 X- ]" a/ D6 a
- BNE count_Y_cmp" _, i1 I2 G4 J" _
- flag_cmp: `$ D' h7 ~9 |2 {
- LDA flag,X: X% D* Z) z2 `' ?4 Q: }, l
- AND ora_data,Y9 ^/ v8 H0 `" B$ B5 C9 M# i. X
- BNE flag_and
) p3 i2 l, h3 g+ M - flag_ora:% u' S1 R) l' z4 O# M2 {
- LDA flag,X
* ~8 P }) x5 m$ j - ORA ora_data,Y
% C4 z r) `* h6 ~4 T" G8 y6 z - STA flag,X
2 m; Z; ?& n2 t+ M - BNE count_Y_cmp
5 N7 ^! q! Y5 d9 k3 z5 P4 W - flag_and:
( l: F1 Q b) P7 b* O - LDA flag,X) E- M" B7 {# T; H
- AND and_data,Y
: F+ a N9 R7 D' E - STA flag,X3 f. w1 t. O8 ^( b
- count_Y_cmp:; p$ n. B5 ]6 @/ \0 k! k: J( Z" F% L
- INY
8 f: d0 W2 d' k8 @. m. j, ?4 K' _ - CPY #$082 O# ?; [) S7 i d7 T1 {
- BCC button_cmp6 W r! p- d; Q. U
- , K W* M" n9 Q9 I# `
- data_extract:
; S- x8 Q5 S3 e# A - PLA
" m4 y H* ]0 `' i. r; c - TAY5 x9 ?6 Q! A/ ` e* E
- PLA
3 |( L; X9 }5 r4 v |, Y8 \. U* L - TAX- @3 S9 x: V' b# f3 [; O
- PLA
: s3 R8 H9 O$ j* d* z/ m5 S - 6 u9 ]: G+ ~/ @/ p4 l
- return:
5 M, {. e# [) M9 _7 S% E# p, Y/ L - RTS ]/ N, |& c+ `+ U0 h! F$ c
- ; y8 A/ k4 e+ x% m ^5 _6 P
-
6 l- L) T: d$ @: y; B - INV: ;无敌8 O1 _% }4 v( A1 {! T) U- _
- LDA $6000,X
2 y" Z0 V& R V7 d! B# C l - AND #$08: L1 w9 r) o8 D
- BEQ INV_RTS
- d- q: c6 v# @" K- U* @7 A E - LDA #$05
. I& ~! S4 B2 Z, z, A - STA $93,X% m* y8 A8 N( `
- INV_RTS:
' d9 u% w: {: I1 w0 X - RTS8 {! M( S B+ }, @7 ?9 g
" U2 X2 D1 f* U+ A; ?-
* W4 |+ I7 R& B; o - LIFE: ;生命+ R$ c9 `! S& I- g2 I( D
- LDA $6000,X
9 w0 ^* O6 [: M. B. ~ - AND #$04
7 L2 \0 S; W' o8 L$ H) O ^# h - BEQ LIFE_RTS; J+ R! e+ x4 v! T1 F# }# T& d! @
- LDA #$09
4 F. x# h0 U2 {. V9 X3 P; s - STA $4D,X$ \% {# j/ l) T( l1 B9 H: `5 o% Z
- LIFE_RTS:
$ D# ?5 q; c- h5 W( V/ l4 @4 @2 U - RTS
0 ~# Y: h; [# m
% c" I; w. e. x: U- m- 6 K7 F9 H6 _% a9 ]
- BLOOD: ;血量
8 p9 I. B9 w4 v/ \" Y - LDA $6000,X: p+ r- m7 L7 U: X+ M6 ]. ]
- AND #$01+ F" _3 x6 M/ d1 z. G% d
- BEQ BLOOD_RTS
# W$ v9 }6 h6 m- o! [ - LDA #$38
8 \2 ~0 s5 v: I$ n9 i. I& w - STA $0568,X
5 E0 n- P1 k e: C+ Y: u - BLOOD_RTS:
! b- u! I& a$ b; ~( @ - RTS j, y/ T3 M* p+ U
-
& O. j- O3 ~5 I - 2 n7 e" t8 J8 R; E9 B) s
- .ORG $FEFE
6 S2 S5 K, n+ _# x - JSR $FF60) R; K [( _( L, }6 `! e5 f
- NOP
5 A* W. @( T% u6 m0 w9 z* L. _ - ( a- I# T4 m" {9 K5 ]# n! \
- .ORG $FF60
% z9 m8 h* a) k - STA $F8,X* c h$ z, `% \4 r" M! v
- STY $3A,X U7 [" P$ a. h7 Z' J" p
- PHA
3 k" K* A. U" T, q) G* f - TXA+ v/ _6 Y$ v6 V# P/ Y
- PHA' D0 T; j0 {' b) J. D4 c& N6 M7 g n
- TYA6 d. r5 |7 T8 j( i3 L/ C
- PHA0 H" F1 V/ }, Q
- LDA #$02
, t! M' R1 M! ~" l3 W1 x: _ - JSR $DB11 ;调用系统切页0 J6 i" a5 W7 G" u
- PLA* k: M+ M0 Y: h' C) ?. ~- X
- TAY- k, }% L4 Y; c) J/ A
- PLA b* K" y0 L9 H9 M2 E
- TAX' q" @% n; g+ B& D
- PLA/ V q& V/ P6 X& I8 X; P
- JSR $BA005 m h% S. o8 T! \" _3 e# Z8 `
- RTS
: i, s3 e3 K; b, h2 {" v- T
; L" _( i- \9 g- c: h! ]- ;[FC][忍者神龟PPU][END]! b! J2 t5 h* T0 X& b! [; |
- 1 G# @2 Z/ n: ^; Z. z
- .ORG $BC00
, I; l5 E6 W, O7 K! H4 U% J6 n O' X - ) o y2 `! ~. j$ L4 ?
- STY $4014 ;补上覆盖的精灵写入指令9 ~/ C9 i- m2 u- P9 m+ B
- PHA
2 F& s. R7 L5 z - TXA( y5 n9 h4 s" }2 l, A1 B6 z) O
- PHA
7 d o) q1 _( F - TYA
" |, }# u" Q" I! ^ - PHA
; N' I {. [- C: ]" {; C5 S4 c# l& ] - LDA $018' h V8 _2 T( r2 e
- CMP #$01 ;比较是否为标题画面
. s7 N' \7 f7 W' I0 ~7 K% z! O - BNE RET) Q$ |: H$ H9 c
- LDA $019& w" K, F1 F! J/ H0 Y# x" V. i
- CMP #$01 ;比较是否为标题画面4 C5 }/ |; g4 M) k
- BEQ PPU_STAGE) x- A! U0 |% a9 s) b8 y+ H
- RET:% \6 u' c. w. @3 V5 u4 a
- PLA
# X" }$ ]9 T% B9 j9 D$ \( G - TAY. f! |# B: ]' h) P( s, c# |
- PLA) \/ n8 s' f' V& T* }0 u3 S2 R
- TAX
6 P, I% O% T% l# o8 |; a( d4 h - PLA4 s/ ^' O! A4 t1 P; E2 K6 Z w
- RTS7 Y! c" z2 w4 M" k' A% ]
- PPU_STAGE: ;STAGE显示程序( P7 B7 S4 d$ R% Z9 E+ r
- LDA PPU_ADDR_DATA
$ x' n) B2 t/ ?" K6 [ - STA $2006
/ R Y, M" d$ i - LDA PPU_ADDR_DATA+1
a. c( c4 @9 b' I& I1 p - STA $2006 ;坐标设置
* {) O6 n/ r& g/ ?+ Z - LDX #$00
% k/ d6 r: k5 r- I, L3 s% s - PPU_STAGE_WROTE: ;写入STAGE字模# N) ]8 H- Z8 e0 @1 h4 b
- LDA STAGE_DATA,X* |* }5 L& P, `( t$ n. j9 J
- CMP #$FF
: s. a2 b& P* I& \4 i' I0 p. i - BEQ STAGE_CMP
6 g0 H9 T# b' j$ U8 o - STA $2007
! N U5 U' D3 }; I: R - INX) F! K5 C$ H0 F( t2 X, F
- BCC PPU_STAGE_WROTE
6 }4 t/ V9 T! G: y# { - STAGE_CMP:$ |9 k; ~9 D% ?$ }+ F
- LDA $6010! B3 U$ m' l" ~
- CMP #$FF ;关卡数据初始化条件判断
@- l6 o& I) s+ h F - BNE KEY_B
% x. G- x0 N" N# P- v/ P1 w4 O+ f - LDA #$00
1 |) q6 }5 w7 j% [0 l0 b - STA $6010 ;关卡数据初始化% n' {9 L& Y- H3 v
- KEY_B: ;关卡减少
# k( g* g8 J3 G `) F/ ^& R3 N - LDA $F84 \7 h3 ]/ i) ]- _8 u
- AND #$42 ;按键B或左减关
7 n# m8 Y; M; B$ o& T - BEQ KEY_A$ K b3 X1 Y% Z$ r* d3 f9 x6 E# B1 j
- LDA #$FF( G1 _* J: C7 q
- STA $40; P8 P4 l# Q$ k- M/ m
- LDA $6010" ]! w9 R/ C2 c, y2 R
- CMP #$00 ;关卡比较! N0 B5 j2 X& x8 D3 ^
- BEQ KEY_A- a: o% ^% A/ G+ A) d& S/ n
- DEC $6010 ;减关1 y+ }4 D3 j) b x( D1 s. n
- LDA #$57
# v' B/ z. x+ [0 R. D* B* o - JSR $DB52 ;按键音效
8 L8 d1 f- |1 ]5 Q2 |- [ - KEY_A: ;关卡增加
. Z4 E6 ^8 t' v4 X7 @: g - LDA $F8
& i4 \/ B/ k6 ]$ x B, }& g - AND #$81 ;按键A或右加关
7 [& ]. S7 E8 }; {" G& a' A - BEQ PPU_NUM_WRITE
3 F" ^( m1 y; r3 l - LDA #$FF6 V' s I# Y! c& [! `1 e3 I
- STA $40
. w) r' g8 F, c4 ]* M2 W - LDA $6010! R5 ?& z( _0 V5 l9 {- C/ E/ j
- CMP #$0B ;关卡比较
% X3 p% {3 r4 o6 H - BEQ PPU_NUM_WRITE2 p* S5 f8 _3 [ }3 n" r) X
- INC $6010 ;加关
# O3 I, | V) U1 W' g/ x - LDA #$57
h" ^' l8 ~6 A! Y8 U; p - JSR $DB52 ;按键音效! C" T2 L- C+ f) v) S
- PPU_NUM_WRITE:
+ i0 X4 H I9 w/ O% z ` - LDA PPU_ADDR_DATA
+ h( P1 F8 N7 c% t% l6 }9 ^ - STA $2006$ q. B7 i0 `2 F3 L( {1 R
- LDA PPU_ADDR_DATA+18 }1 K) m! [0 P& I
- CLC
( x3 D) u$ U3 F7 j# _2 K - ADC #$06
* W/ ?0 N" V/ S# L/ i' `4 | - STA $2006 ;坐标设置2 e: M8 L2 e1 ? R& L {- j. i! B. x
- LDA $6010
& O9 K4 m: f8 X/ u8 q' o* u - TAX7 W6 _+ C1 E. W8 q
- LDA STAGE_D1,X ;写入数字- ]2 [* p: b' Z2 x; g/ _. O+ f
- STA $20074 u, y& A) Q: C3 m8 K: a( b
- LDA PPU_ADDR_DATA
: K2 P6 o! _% H' c1 ]. a - STA $2006' O5 M9 }) ^7 A5 W8 G1 ~3 L
- LDA PPU_ADDR_DATA+1" G$ e( G; a4 e$ v4 V
- CLC
5 A- m) `4 I+ v/ l& I! a& f - ADC #$0B/ n. J9 ]8 t) n, c$ E9 l1 B* d
- STA $2006 ;坐标设置. c! P& F& V$ G2 W7 _2 U2 d
- LDA $60104 {$ |9 F8 i3 r k
- TAX% F3 |8 |3 ?& z; a; ^2 h; {
- LDA STAGE_D2,X ;写入数字$ T* k8 a+ c; _) G9 R( n7 s
- STA $2007
. w* o4 j" ~) Z - STAHE_WRITE:3 c: |1 R. _9 \! i3 I: c
- LDA $6010
% }6 D9 Q1 e& T" {' F. j. { - STA $42 ;初始关卡写入
( l- }, o1 o S: z/ H - PPU_RTS:* q/ [0 A5 P3 k; j4 ~ { k
- PLA+ T% w) k8 m4 @5 l* V
- TAY y- l& l) _8 ]0 k( s
- PLA, A0 w+ O4 H" ]& E6 n d' U
- TAX
0 X& }0 ^' i! k6 } - PLA
# x0 A4 u& N4 @# H( |! z, l - RTS
- D9 T+ E1 B: o0 g, |: { - / _- z7 C$ q1 p N: H: R1 x6 S
-
E) i) Z9 U; I; G% U - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
' ~% `7 t$ L* g/ |5 F- [: w' U - .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF2 S4 P' k2 ]7 F) t/ O
$ e8 P/ O/ A# T* h- STAGE_D1: ;关卡数字7 r. x" n; B6 l6 O8 b4 A2 f2 t9 N Q
- .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
" i& q( L/ b# w3 T' [2 p# N/ v - $ E% A* _, I1 P- v1 P( G
- STAGE_D2: ;场景数字
/ ]% _, O2 X2 [$ F, b2 C, T - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$030 b) O; c$ M& X
-
2 o5 j- Q4 j, @9 k" z( P" _! n - PPU_ADDR_DATA:
5 Y$ T" n Y% m# P - .BYTE $23,$4B u! p1 O) s5 ~+ Z0 Z: M
-
( s1 M- M; v3 o - 9 g: G8 o2 N* r# s% c% Y
- 7 U+ k$ {% U3 ~3 r% {
5 m# O, U. w& ?' T: e- ' G8 p& f$ V8 Y; Q- B8 |
- .ORG $FE21 0 W ]. b; Q( k) ~
- JSR $FF40
/ G, c# H& G! q& g) Q5 { - ' E& w3 T) k q' ?- E
- .ORG $FF40
8 u2 H1 Z m. \! j5 f - LDA $BCDF7 Q8 s& U' q; G0 {; m2 M
- CMP #$7F. G" Y9 M7 {$ I8 @" N& Z& l4 J
- BNE ADDRFF56
# o. ?7 C* i0 F# ]+ | - LDA $0018
, d5 v, t, R; X7 H; x0 Q6 w2 p) v - CMP #$047 h0 Q8 `9 A1 G+ J
- BNE $FF52& K Q$ ?1 v# U* ^4 m* D# o
- LDA $6010
7 O, L$ z+ b' D. N( H - STA $0042
- {$ M# i7 Q6 {2 a+ z4 n - JSR $BC00
( O1 F5 d# g8 h6 C - RTS- z$ F0 ]' H) a; M- }
- ADDRFF56:
3 V, {9 `4 v; Y9 E& c& ^ - STY $4014( I" W7 k0 o9 P1 k% T
- RTS8 k: m" I% L/ ^2 T
- , P& W+ D! a3 s" T# j
复制代码 内容:
, Y& p9 Q0 Y2 ~5 @! q 1.关卡选择: 标题时,左或B减,右或A加;
+ i: b9 ~$ O) I; |; | 2.一击必杀: 暂停后,按B键切换;
7 b# v( M+ v# u, _% |6 r0 \/ W 3.无敌锁定: 暂停后,按上键切换;
& R5 v: L6 p! k- X. f 4.生命加满: 暂停后,按下键切换;
' t( s' V4 m6 o 5.血量锁满: 暂停后,按右键切换;3 H9 e( ^7 R& O5 d9 p' y" x& t
    . g3 r6 y8 x' |
0 O' l* K- Z+ x2 {; B
FlameCyclone.ys168.com
1 L3 ]2 @- G) A' N; y( p0 twww.nesbbs.com
/ c' b+ I# P: S8 Q$ Q
' [* b# {( I1 j5 N Y5 t |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
2
查看全部评分
-
|