|
本帖最后由 yandagui 于 2017-4-2 13:21 编辑
, S4 Z1 E* l; @0 \6 S9 U- w2 F" ?
& J J! B+ q( G2 k i2 i! K& Y[FC][忍者神龟2][END选关]5 c; d7 v; X8 I* G1 }2 j0 W
( t2 Y3 W% l# J/ }. s
时间:2017.3.31
2 W1 g5 Y' b% o, I( V作者:FlameCyclone- .ORG $B9E0
2 K4 T2 m' ?) J+ X9 D - ora_data:
9 z# X# m% J: H' b - .BYTE $08,$04,$02,$01,$80,$40,$20,$104 e6 q, B5 x* u4 y
- and_data:6 h, ?0 A: R3 {$ E! \4 u
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
& X v; ^+ ~4 K5 S$ W. ~$ N. e - 0 \) l( g. G7 q( v
- button = $F8) J; h; P! @- b7 N; S3 S0 y6 ?
- flag = $6000
0 `2 `( s1 `/ J; w - pause = $3D
4 O5 o2 L4 @" y4 K3 G
; D! u8 \1 ?% O+ R, u- .org $BA00
0 s3 F6 }" P# ^5 [
0 a- S; P. g6 D7 |- PHA1 R- y" I' }+ N" r5 d6 a4 `: E8 [
- TXA5 M$ ?' P3 {- M/ B
- PHA8 A! E& m g0 K. y! A2 n
- TYA
- r6 m R t9 s; @2 P2 D - PHA
/ P3 W7 k5 [( k1 k9 |2 R3 | - JSR KEY_OPERATE
& o' k) O0 I) }+ b. x/ } - JSR INV9 C' W' N* W5 R4 ?# G: x
- JSR LIFE1 d6 Q6 q6 p5 J/ p9 h7 n7 p$ L
- JSR BLOOD+ K- S+ w# z: s! M( a
- PLA
% M: I8 [$ {* i7 h - TAY
L ]9 X: H( P/ E1 P4 @ - PLA
& e1 \" F: K# a4 Y; T - TAX2 J/ \2 a5 @% c' W
- PLA
3 h, F" i, b' S) U# R0 n - RTS# z" ^, v3 h, x+ C: `6 e
- KEY_OPERATE:
. `* k. ~) f1 I3 Q, E# P2 } - data_protect:
/ n, c/ b' p) H/ q! u; K - PHA8 s+ a4 w! Z& u4 D! `- V% G
- TXA/ o) ]) _7 Z8 R' j$ W0 q( b
- PHA/ ?1 @" ?- d( B, k# l+ l( p6 H8 h! p
- TYA
7 x$ D/ X( i! m4 z, Z% z( t0 _ - PHA8 x/ f9 Z; H2 \; Q: n, O
5 `8 ?4 _ f6 @- FLAG_CMP:" ]7 ^) a) ~: Y) l6 D9 }6 w$ z, C
- LDA $600F
q7 B) W0 w; ~- h* C# ` - CMP #$7F ;标志数据初始化条件判断/ Q# y$ O0 p) |+ g9 ^
- BEQ pause_cmp
7 ^+ g& P' B- _ - LDA #$80
7 B M( y" @# y4 E - STA $A001 ;6000-7FFF写入启用
) W0 i( G( ?3 j3 ? - LDA #$00
9 Z7 |" |5 h) h2 h$ u. E, ^& x6 U) d - STA $6000 ;数据初始化. Y B. N! b5 l. I* I
- STA $6001 ;数据初始化
/ N7 H3 j9 w" M2 v" L0 O - LDA #$7F5 p# Z% W4 |( r; Y
- STA $600F& g+ x/ j( D/ t1 f
- pause_cmp:/ K M0 t. }8 C9 v4 f2 S) v
- LDA pause p5 f( m5 l X/ I% w9 G6 x: g2 R
- CMP #$01* C: G' U) [& v! J' Z$ T0 C
- BEQ button_press
9 B; _+ V( W* U. o7 ]! Z2 G( z - PLA
+ ?) V: j/ c3 w - TAY
% m, s$ x5 |9 @ - PLA
+ O2 V! a& c. d. o - TAX7 C! m" C, ~& N# `$ y; Z
- PLA
+ Z( R6 d) ` _% S& U$ h% i - RTS
2 I8 X# H# ~* J- e4 u ~
$ U5 n7 V" `4 A( m4 L1 Q- button_press:* M% a$ A% ^. i( y$ j
- ini_Y:% }: c6 q6 z: O* G
- LDY #$00, T. o7 n3 X' X( I9 ^& z7 h
- button_cmp:% U3 J9 `! N7 O- K2 X' w
- LDA button,X7 h6 e% o- |0 G4 o6 ?' b
- CMP ora_data,Y
, g" D1 D; x6 V8 V - BNE count_Y_cmp& l2 F# [. z/ ~4 T3 T
- flag_cmp:
5 J# _* ]1 {; H - LDA flag,X9 Z6 @9 ^- d2 d4 b! }9 G' [. B
- AND ora_data,Y
4 }* L; P0 T k0 k3 j A - BNE flag_and' g3 w9 }; F& N4 R3 W$ G1 {
- flag_ora:
& q; _4 M6 h' X0 s5 `8 n - LDA flag,X
- O2 `: b; s: m! ]+ B; @ - ORA ora_data,Y3 a6 Z! j7 x0 A5 E" Y: _
- STA flag,X
! U3 u" Y1 n0 f7 B) v - BNE count_Y_cmp
4 \# N8 D% K, J7 }( Z. N$ u( j8 w - flag_and:
0 e* H& |! s, K7 L1 u7 t% E - LDA flag,X
( `& L5 o/ H6 d+ t7 j' w5 u+ m - AND and_data,Y( M; i: B+ I3 \( a
- STA flag,X. Z( ^4 F# w+ S' f3 \! b
- count_Y_cmp:
' m! E4 B8 M5 x# c- ]2 A - INY8 m6 F. n r7 J) `
- CPY #$08; k) K; N b! |* r+ B3 L* C# p
- BCC button_cmp. v f" r. p' |7 H# q) F- u
-
6 g) y. R! f. O" B - data_extract:
* q( q% U& }" [5 W3 g5 \3 A - PLA8 s5 g0 ~- r2 ]& P0 \7 c7 O# r
- TAY9 A s6 U9 a9 g9 g s* N% k
- PLA: t1 K+ m3 n) g& P* G- d$ _) b
- TAX
n( M9 C4 K) `& x+ m7 m" |, o/ f4 Z - PLA) @- i% g8 g3 W
- ) k0 r! S/ ]+ q9 M! m
- return:% o( I# s5 L, Z1 w8 Z7 o J* X. j. q8 R
- RTS& f2 K( y9 p. B% t0 K) q
-
: U3 r. F5 j5 S4 S -
+ z) P; d% y5 A' ~ - INV: ;无敌
1 b- X: p: @5 F: c. W& ]" y" `, F - LDA $6000,X1 x3 U1 D0 H9 p) j, C
- AND #$08, H" y' Y; l" T* n
- BEQ INV_RTS% K" }6 k$ {* u! v6 z8 B& L1 h
- LDA #$05/ S/ E& S1 i: I# F5 c( e) r5 F
- STA $93,X! R/ J; `1 O! B9 c5 c9 P+ }
- INV_RTS:* x# t: c7 m5 x% g' w" R
- RTS8 Y/ |1 X3 _# X: I1 K' X0 ^1 w1 {
- % K( ]. B% X1 n' |5 i @3 a7 T+ H
-
( H e' V/ f2 @ R$ d7 T - LIFE: ;生命: H; U" x; K: W9 g
- LDA $6000,X% t7 Y. X: ?* R7 T; Y
- AND #$04
& ]; D% W T V6 a1 R# h3 B - BEQ LIFE_RTS' y1 B: q- B0 J2 u; A% R
- LDA #$09
5 `" w4 v/ K- d ?4 R% S+ A! R - STA $4D,X
8 O: ]/ h9 ^# h) W+ y - LIFE_RTS:
1 d7 u$ B' R/ x9 I" g8 P8 @- x - RTS
9 Q& N5 F2 O) Q& G6 @1 g2 f- s
( B( ?' s4 N: c' Q-
- G2 U, ^& E" V& W4 Y0 b/ J7 Q - BLOOD: ;血量& N" t' M9 T! F5 R$ V6 E. k' |( Y/ h
- LDA $6000,X8 S! E- F6 A: A) _1 T* `, Q; Q% ?
- AND #$010 H4 J# l4 I: K+ o. ^2 r3 Z5 {
- BEQ BLOOD_RTS
, P) J% ~; G/ P$ \! I - LDA #$38
0 k7 _+ d- N3 w1 R1 _' v/ ~; l2 D - STA $0568,X' D2 N7 R/ U# C, Q" s+ ~
- BLOOD_RTS:5 i1 U1 J5 m6 L* I2 U
- RTS" N* H1 b# u: ?$ d/ Q
- 0 V' f7 W0 j+ b4 \
-
- V% ~5 l* e' @$ \+ e- ~+ E - .ORG $FEFE5 J# Y, ?4 Y/ L0 A b8 S
- JSR $FF60
! h& r t- ] l2 {; p - NOP- [2 L8 m1 r( L3 h l+ h r7 T
- / v- J4 A) j9 \! F. O
- .ORG $FF60
?: e& Q* ]' b4 |0 x* @. ]: Z - STA $F8,X
i: k4 D2 W6 f1 d# v2 Z - STY $3A,X9 D$ m, K9 s V7 o" o8 v$ f% n/ m/ k' }
- PHA
" z T& Y& P8 ?' \ - TXA
; F$ Y# Z5 g! R8 V \' U: y1 W: |% k/ y; \ - PHA$ v7 e( C- q9 K* c( J, k/ Y3 `8 J: S. q
- TYA3 j4 p6 S, L$ h
- PHA
" i$ m5 ~+ N4 {& } {. ]3 u - LDA #$027 J" J: V" Q% N9 R f" [
- JSR $DB11 ;调用系统切页
+ i8 k- N8 z h6 a9 }! V: c- s* K8 J - PLA
$ z* d: r6 y, x1 V: c( ]% \ - TAY& l# R c/ B, L3 k; L% B
- PLA
8 D7 Y! B" z/ _ g+ Z7 J - TAX
) n# \0 } g. h) l - PLA* | }; ^' d1 W3 L
- JSR $BA00
6 W/ v& h& M6 x7 [' ]4 b - RTS
# y/ s( }1 u; t& ]2 W% j2 T; i
9 }/ B) C! w. _) O/ U9 }- ;[FC][忍者神龟PPU][END]
2 a6 R# _% e) f2 G- B. F. G. O# n - , C' d4 E4 p" R' P
- .ORG $BC00- k) C7 V' ]0 ]* M
- 0 ?! Y4 f" w8 c$ b
- STY $4014 ;补上覆盖的精灵写入指令8 @! Y3 g) n/ m* t! p' l
- PHA
/ u7 w4 k7 @/ \2 M - TXA
0 a2 C. D6 f& c; ]; g( R8 M6 ` - PHA
! Z" z$ Z3 z( a - TYA) H1 p7 t/ ]) o# u5 D; P4 G* R
- PHA+ F5 b5 n+ a$ X
- LDA $018
- y; x. D) n7 S& z) C3 B" e - CMP #$01 ;比较是否为标题画面
7 e. d# n" R( ?- ], w$ q/ \ - BNE RET0 B- a: P! |4 a6 h
- LDA $0197 }! e: z3 F( [# F% i
- CMP #$01 ;比较是否为标题画面9 S1 ?2 j4 F& s5 g
- BEQ PPU_STAGE
" {7 V. A0 i9 X1 i" {, o: s# a1 F' a - RET:" k5 V9 d! I2 ]7 h
- PLA
: Z4 W3 b- q; t5 k8 p - TAY4 q) g* s' X- u( z4 @
- PLA
" }: \5 L% k! |2 b - TAX: z2 B% ^" a. K9 g, U# x- `; v) B: ?
- PLA9 ?$ P+ @1 T) D& P2 {! ]
- RTS8 R. Q7 X- x: U, D N
- PPU_STAGE: ;STAGE显示程序2 F, `! a! [; W# [- B: |
- LDA PPU_ADDR_DATA6 p# N9 M2 \+ m, C, P) C
- STA $20069 z0 ?) T! A1 c# s6 P+ n9 [
- LDA PPU_ADDR_DATA+1* j4 I4 d$ a0 A1 x% @+ L. ]
- STA $2006 ;坐标设置
v! u7 v m: g; s6 b( e - LDX #$003 d7 J3 A: ^% V5 J1 Z. Y: w' N
- PPU_STAGE_WROTE: ;写入STAGE字模
7 i& s8 D, n* i# z - LDA STAGE_DATA,X& O! G2 w. A7 n/ D" d
- CMP #$FF
+ Y( f/ H8 Q- m7 x$ ] - BEQ STAGE_CMP8 K: y8 e# I: \8 u% g- K3 A( ]
- STA $20073 I9 Z \ k: _$ T
- INX, c2 u3 t! `- c' J* g8 D
- BCC PPU_STAGE_WROTE' ]1 ~! q& b6 ]& {" E' s% T% q
- STAGE_CMP:
4 f% s$ N/ b: {$ T+ R6 t - LDA $6010
3 ~$ G5 D0 ~: J7 C- F( p; k7 } - CMP #$FF ;关卡数据初始化条件判断
V, k8 F% e4 D X9 d - BNE KEY_B
) t& j$ T1 K" L) U& } - LDA #$00! H1 A+ Y. C9 l" W& \( O
- STA $6010 ;关卡数据初始化( w" q- w/ c/ C. R, r/ G
- KEY_B: ;关卡减少
1 {7 q: I/ X3 t9 m1 X - LDA $F8
( C$ b3 }' C& ^$ g. ~ - AND #$42 ;按键B或左减关& |: J0 E9 u; g7 } ]* Y
- BEQ KEY_A
% B! ]/ Q1 V" ]4 F' X - LDA #$FF
' ~) ^$ v" j% |* A# ~5 M* p# B; k6 x - STA $40( t0 n7 g+ O& N" S8 O
- LDA $6010/ J% _" e4 n' X5 e, O6 I
- CMP #$00 ;关卡比较
( G! h# k3 z0 B+ L9 u0 L/ i V" h - BEQ KEY_A
7 A7 }) y3 \; K; W - DEC $6010 ;减关* G# L2 O5 N9 t: @
- LDA #$570 O4 w% ^# H0 R0 @
- JSR $DB52 ;按键音效
" y4 v5 r' n# j9 Z - KEY_A: ;关卡增加
& I H/ s2 f8 U: T - LDA $F8
7 }4 d4 t- {0 L6 `8 i: K8 o' h - AND #$81 ;按键A或右加关
$ @0 ~: Y' d, j" p: s* C' n - BEQ PPU_NUM_WRITE
. f' X! }$ E" i/ D4 h; k3 w% _ - LDA #$FF! i3 N' P f$ Q3 C- {# F1 e5 b& f
- STA $40
. n! u8 i2 x+ p; ]4 ]# P9 `6 B - LDA $60100 W6 U9 f9 h% o/ E# C& v- _
- CMP #$0B ;关卡比较
# w9 [+ d9 S+ k7 V8 a8 @( W/ D; v - BEQ PPU_NUM_WRITE) q2 v; T3 M: \8 T# r# G9 Z, y
- INC $6010 ;加关
* T" n, y. C5 o3 M+ | - LDA #$57# c+ h3 Q9 E o5 W1 O
- JSR $DB52 ;按键音效
5 Y2 J6 Z& _0 S* _/ ` - PPU_NUM_WRITE:
- ]5 w5 F& Y r3 y - LDA PPU_ADDR_DATA1 D- B" s& K4 P0 v; ~# n
- STA $2006
" C' q- t0 R: c5 Z9 K) D% F - LDA PPU_ADDR_DATA+16 ]# S% V! r# t3 E! y w
- CLC
8 l3 a9 b. Y: [. o2 ]8 P - ADC #$06& y8 M0 v0 G6 W y: x
- STA $2006 ;坐标设置
. L' ~7 Q0 k9 K/ Z8 x" z& p$ o, m - LDA $6010
4 {5 h v2 ^. M - TAX
. M; X* O' `% P% {5 s# V - LDA STAGE_D1,X ;写入数字
6 V) U9 {% ~ F b6 y. Z- J8 K* H6 D - STA $2007
) D+ N- ?' N" l- N6 s2 `( K - LDA PPU_ADDR_DATA: f$ z4 X% A: s( m
- STA $2006 c; |& X, _& {% ?) m
- LDA PPU_ADDR_DATA+1
$ h9 M. u3 {) \) {8 J" H - CLC- ~. V" q0 {* ]/ e
- ADC #$0B
* S! D$ E; Y1 e: n: k) C - STA $2006 ;坐标设置
% `: U" z/ q' v0 O - LDA $60108 W5 T5 k; X! _- v0 {
- TAX
2 B# o8 n: }8 j# z4 R0 s - LDA STAGE_D2,X ;写入数字- X' V! ^* M4 B
- STA $2007% H# s% |* n8 Y" ~5 A
- STAHE_WRITE:
* p9 g6 v3 l( v6 K' j- y - LDA $60105 u' e6 L. w2 e- R5 q* ^% d
- STA $42 ;初始关卡写入, U$ X- p3 y2 y& [
- PPU_RTS:+ s* B5 t Z4 X$ a0 h
- PLA
6 D* b6 D3 U% ` - TAY
8 y- y% q9 w; L9 I' ]1 R - PLA
5 _/ f) M- V; @7 p* \( @, ` - TAX
% D- K# @" w, ^3 G. q' W+ @ - PLA. p' v, L* u. d+ R
- RTS
+ ^# p, v N7 K+ a) b; { -
" W' u$ @. n1 j- g -
- x' X' E) K: o& d* F - STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据5 H( p4 o9 G5 o* m+ @+ N; [
- .BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF2 P5 I8 j: T& ?+ g+ j( O# s: d
- 3 f4 e- F, N" \
- STAGE_D1: ;关卡数字
6 w) ?5 j/ ^% I2 X3 [' S - .BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
1 S, x; [; i2 Q
* K& ?( h9 B- c- STAGE_D2: ;场景数字
1 O; W/ ]; w0 h( F- I - .BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
/ p. H& ~+ _+ j- y' J' T2 X -
( T. o5 c; ~# G4 {+ ^4 g - PPU_ADDR_DATA:
" d) L: o. s0 A& H3 o' D) u- V - .BYTE $23,$4B7 M6 {, m; E9 B/ A4 {! r% [
-
3 O( J4 o* K2 Y4 A4 z9 v4 ]
# [( ]7 ^" |* T- F$ D s
- |) ?, {! u" t; S
3 G% P- s% z `
+ e( E' S9 \' ?, |" u \( y6 m- .ORG $FE21 : |6 J1 \- W9 \
- JSR $FF40
. d) X4 F" a* a& k1 ~9 h% I -
4 p" r1 T0 n# k, N - .ORG $FF402 C" Z6 B' ~& I" n3 Q
- LDA $BCDF
9 G6 i Z* H! @ k - CMP #$7F
% T& u9 k/ ~% C, k+ Y - BNE ADDRFF56" w( y" |! b( H2 ^
- LDA $0018. a/ ~& X" C! u
- CMP #$04 E; W4 E' L8 {
- BNE $FF52/ p' Q2 t3 A( Z3 F' N/ m$ G
- LDA $6010
/ n0 \4 w1 A/ |7 J; }) Y7 Q7 U - STA $0042( \$ |7 h! m0 `9 Q+ f# [0 v
- JSR $BC00
% b6 m% x+ b0 ?! }. ` - RTS2 h0 H0 H7 l0 C& J8 n$ b6 Q
- ADDRFF56: , \5 H' I, \* r/ m# H9 S& K' }
- STY $4014. r5 F2 o. V) {' O/ D
- RTS0 X" K* z5 i: {: K5 p# C3 v$ H
-
) H( c6 i( Q5 b+ J- ~, n5 J* Z
复制代码 内容:/ v( m9 q# F6 x; Z: k# ^ ^, n" s
1.关卡选择: 标题时,左或B减,右或A加;5 P# [1 f( Z- x% t0 U: B$ j+ c
2.一击必杀: 暂停后,按B键切换;. f. A8 I' b' L1 F' v* B8 ?5 u& d
3.无敌锁定: 暂停后,按上键切换;6 b1 Q: W1 r4 x# ^
4.生命加满: 暂停后,按下键切换;' ~* r5 R2 n3 I6 u2 B; \
5.血量锁满: 暂停后,按右键切换;. I* ~' [; R' z0 s
    5 p. H! _/ u# a: ~& x6 a
8 B" e, l4 E7 U* MFlameCyclone.ys168.com
; o |$ r0 A5 i: p3 dwww.nesbbs.com2 _* w& L$ O$ q* u
7 W; j0 Z" {- k5 C+ a |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
2
查看全部评分
-
|