|
|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑 & b: Y5 N9 W4 Y7 V# t: N+ J. E
; c9 x% B. A+ b% _
[FC][忍者神龟3][END选关]7 c9 {; }8 D3 w/ ~1 s: k; J
% [4 `2 L- v; q7 h! t) u
时间:2017.3.309 O8 K1 ` V ?4 W
作者:FlameCyclone
/ d# R% i% A' n4 P* d内容:: @$ y5 v6 a' X7 t* W
1.关卡选择: 标题时,左或B减,右或A加;/ U% ~8 }3 F2 q% p7 Z0 O7 Y5 }; q
2.全屏击杀: 暂停后,按A键切换;+ n( u; S+ o; g# o2 ?3 ?: q
3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0& @# I/ C& R) F: s
- ora_data:9 r- Q. |' y" G- l! i* _
- .BYTE $08,$04,$02,$01,$80,$40,$20,$10 j$ e0 u$ `: p. h9 |
- and_data:
% o+ d: k" P3 u% h& a$ B - .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF* x) Z0 H' { W$ a
- ; y ]; M0 n8 l' o, c( L- b4 {& G
- button = $F8
# z) b/ x0 y, F- F2 |" I" L - flag = $60006 b# c s7 i6 g; b
- pause = $0045% d$ L z1 L/ t, }3 H n) T
- 4 J7 J! ]* b* B) G
# g3 v% q; f: B- .ORG $F90D
4 _1 C# w# A. Q$ W" ^) r: b( G7 H - JSR $FEC04 l0 Z `( J6 S% T
- x Y9 u4 g! v
- .ORG $FEC0. _! w- @* o) U5 b4 r) O' b
- STA $54,X8 x* S" d' d7 f6 k: Z; ~
- STY $FA,X
3 \5 X6 A: q% W% W% j+ s6 n - PHA9 N2 K0 t* s/ {; c; Y
- TXA
$ @# a7 R( ~# Y- Z* R - PHA
: M9 @( R% R# n - TYA. t4 N3 h/ m, ^4 }$ ]% K, D
- PHA
7 ?5 _9 Y; {5 h. L8 l - JSR KEY_OPERATE6 S; Y7 ?! b k& x1 m& ~3 C& x% T9 w0 m
- JSR INV( Z+ K/ ^) y4 ?; m. [
- JSR LIFE
- V: G \8 M' O) R0 [ - JSR BLOOD
/ ?; a- K. G0 [$ H! U- X1 ]- J! j: ~ - PLA# i# n5 e. r* P# ^
- TAY; Y. s% f8 N& H! f5 O, P
- PLA" m# U4 X- P8 p' X6 E7 j3 B+ T+ e
- TAX. o8 [# I3 ^# x7 t3 W: ~' g5 l
- PLA
3 E% k* K3 C6 a - RTS
5 ?' P3 Z7 D2 S- r2 K! a1 g* `) J - KEY_OPERATE:
" T+ Q+ \$ r9 |3 u* c. W, Y5 b - data_protect:
! N. s: b8 S" `9 |2 a& z M( o7 m - PHA
+ a7 v9 o: f% |! p- v* v# P - TXA4 N+ J2 S! p) H+ V% w
- PHA/ a- R M4 u; f& s6 j& l5 | b
- TYA
3 E9 @: U' @9 v" }4 J( A" z - PHA
+ z) ~ e6 e5 z" X% u0 V, Q - 7 b! [! e+ r3 _" p6 p" Q; @7 }
- FLAG_CMP:) ^, o$ H5 c2 o+ s" @
- LDA $600F ]" a. v1 `9 t1 f" q
- CMP #$7F ;标志数据初始化条件判断. \' S7 p$ n; f5 S; J6 I
- BEQ pause_cmp: @ m9 K- [1 j5 S$ t T: r
- LDA #$80/ \4 ]; f( P% Q8 O% _1 J
- STA $A001 ;6000-7FFF写入启用0 Q! e9 y2 n+ G, \4 i
- LDA #$00
) k% e" P2 ?( N+ J - STA $6000 ;数据初始化
; h: Y# S( L) Q4 u0 A5 G5 \. R - STA $6001 ;数据初始化
* S9 d$ l c- y. A - LDA #$7F c, u- L& T8 x" V" z
- STA $600F( @0 ^' o. A, J% ~2 P' x2 l0 a! ~
- pause_cmp:& ~+ s' h. W$ d9 \% X
- LDA pause' m& F7 p. K7 i4 l+ s
- CMP #$01% B8 e$ l1 @- W5 l3 M( i: ?6 I
- BEQ button_press
) b0 v& B2 B. d) s' {9 {5 q9 a - PLA
, e! Y" u- h7 e& f5 p( ~2 M, e - TAY, _" r4 o: P1 `( ^) a, K z
- PLA
; z1 j$ I% ^ @3 u8 y - TAX
8 o5 ~9 R- Z9 N! W/ h - PLA3 h8 F3 z, @6 D. c& D' @* J
- RTS
; f9 i- n" f0 k - * h: I: [/ [1 v/ E0 T# T
- button_press:- _- Y! y, i* P8 Z+ i. n$ P. |
- ini_Y:2 Z% b; ]5 d( Z
- LDY #$00% x' k* V; S' Y7 |
- button_cmp:
- Z$ o% N# a: ]/ c! s5 [+ ^3 s, p - LDA button,X' y. f3 ^: F2 ]: u3 t6 A& r& |. B
- CMP ora_data,Y% I) ]8 L( k. G
- BNE count_Y_cmp
: @! r8 d7 H0 L% x - flag_cmp:9 S1 o0 _ q0 w: W6 k
- LDA flag,X
8 b5 G+ ]( @$ I: l - AND ora_data,Y N7 `5 M6 p+ @7 R6 n+ B) v0 R
- BNE flag_and0 o8 r' r% w. K4 ~2 q9 X5 z4 L
- flag_ora:8 O2 K0 R7 y' Y, q
- LDA flag,X
3 M! k( |1 |9 E+ Z5 W$ E2 c - ORA ora_data,Y
' P5 n( }. u- J; H) Z! E7 R3 W" \ - STA flag,X: Q) H# C; m( X0 {3 U
- BNE count_Y_cmp
- J' l' C3 F/ a4 c1 z - flag_and:- Z' n8 M4 J: [8 u
- LDA flag,X h8 [; \: Y p5 m; x% g( `
- AND and_data,Y5 W6 s9 F \( E% J9 N" }; B* E
- STA flag,X9 D. A+ Y. M y$ Z- G
- count_Y_cmp:
/ Y8 s8 k% y) n: y3 D* g6 F. X) T4 Q - INY& B3 s8 t" n9 q% L4 d
- CPY #$08* d3 q3 t! [6 U# E# F2 B
- BCC button_cmp2 {) M$ _4 m* L O# B
- ' ~0 d% ?' s P
- data_extract:
1 r0 ~; d$ t% h: ~+ i - PLA
6 ]9 }$ |. x7 a- ~5 C - TAY
/ {4 {& E3 h( |, q, r/ G# D: z6 n - PLA
+ L. \+ d t- k/ g8 P) P3 O! S& l! D - TAX% u) V: v9 N% s! `4 n
- PLA
- P& V6 N8 A, {' F9 N5 t7 C - 7 T1 d& r5 u. i! h; C- L7 V4 m
- return:
& c2 H7 B- N6 x; W - RTS$ e) N0 j/ X7 g
- j. J( y) W" t) f) j& I
- * A" {2 ?0 L! Q6 w# A3 k0 Z7 j
- INV: ;无敌/ ~ q' {( Z9 y
- LDA $6000,X. c% \' S& }: [3 y: N" n
- AND #$08$ _. P& ^6 q; F- ]
- BEQ INV_RTS
3 \8 t+ ^9 J7 C, K7 q. Z - LDA #$05; Q) L5 b' n' S/ [0 p* b5 [2 V
- STA $04FF,X
0 s- C: V# X# t* V - INV_RTS:3 y3 P' u- Z: m0 G
- RTS
2 N0 E) j+ [- |" k% i4 {9 ]1 o - 6 z* K0 r" x4 b
- " T# k. d$ P/ U
- LIFE: ;生命& ?0 s7 _8 S) d" W) G) ?' c
- LDA $6000,X* o5 K' M9 Z x9 V* L% h4 {. M
- AND #$04
4 b2 k+ m" G: z6 M; N+ T - BEQ LIFE_RTS7 F! X" Q" o. ]9 z3 [, H
- LDA #$09
: ?) f& i( n2 |% M7 [$ `" l5 Y - STA $6A,X
; K8 {; N0 r, J - LIFE_RTS:+ u& k$ Z+ m; `7 n* G
- RTS
6 W8 S& [0 w' t. z. S - # i; C& A* s5 r0 V: H; {3 O
-
5 w: g/ J8 J% j( K4 Y - BLOOD: ;血量
+ t/ @- c, N" h4 d b, D/ B - LDA $6000,X
9 j/ L% x3 r# Q* j4 P- k - AND #$01
/ d% u" S5 u5 k- \9 F" t' X - BEQ BLOOD_RTS
! u# A. l# p* b T8 q6 G - LDA #$7F* l$ P) y. Q/ I! h) Y
- STA $04F1,X0 s4 X8 L. g$ s' o: o
- BLOOD_RTS: O; T/ y% B- }
- RTS
# d+ z4 `1 m) A+ z6 C - : s) z6 R3 w, z! k
- : I+ d) l' }) Y# }
-
1 i X+ m6 f* R0 N - * l6 Q. f* ^4 X, J$ F5 ?
- .ORG $D29F9 f3 B" y' {7 n* g- S% L2 A
- JSR $FF80
2 ]. M0 U; o& M% [/ K- O - - @8 j. Q% Z2 Z( R. P
- .ORG $FF80( u/ S; X0 L3 N( C
- KILLBOSS_BY_ONE ;BOSS一击必杀
% F1 y0 V1 i. y- t0 w - STA $0628' T/ O) F' [4 u* O! K+ [0 ^
- PHA
" ~8 p. B4 Q/ O& o3 x; V - LDA $6000
^9 b" T4 B1 _7 P: u - AND #$40# N" E0 c+ B( K: c; M- n% ?
- BEQ ADDRFF8E
. ?6 I5 D9 o7 T0 q: U0 B) E - PLA
4 k+ Z- n. ^4 K+ A - CLC ;敌方死亡状态判定, D& |, n3 v) Z7 J) W+ ^( I
- RTS
# u6 |; p" x0 A+ h - ADDRFF8E:
3 i0 n! k2 B& I/ Z5 r) l; B7 M9 ` - PLA
, }% S9 C1 P: |( Y. {- J1 O, D - RTS
) U% M5 Z) B/ n% G+ W! G0 B
5 P1 O; ^/ V$ r7 _3 f5 _4 E" r9 j
" Y7 Z l* o& V! y) V* j7 I, u, @6 M- .ORG $D1516 y& e8 a- a4 U8 ~8 u# c0 J/ q
- JMP $FFA0
4 [' v* u" z9 a* C- c; l4 i% c -
( J+ |# ]- B! i - .ORG $FFA06 G9 W q# w2 _! ~$ g: H$ {) S) { P
- KILL_BY_ONE: ;杂兵一击必杀$ B; I1 J) J( I% q
- STA $0621,X! r5 F6 [9 [$ s1 f' T o( a
- LDA $60009 V8 F! m$ b1 l, ]
- AND #$40- m$ c6 t; P3 z6 J) h1 W
- BEQ ADDRFFAD( G! ]5 \+ D8 p4 X% n
- JMP $D19A ;敌方死亡程序跳转# G8 v' {8 q, @! b' g- r
- ADDRFFAD:
2 j% P( k) g- k4 V- Q4 i' v - JMP $D154
, \0 T C. n3 n -
G, ]# f, s6 n& H( z4 V -
' m% E8 t3 ]3 K f1 h" } - .ORG $A7F6* s) S6 z: W/ Z. a# C
- JSR $FFB0
1 s% [3 }' j6 T2 W6 M - 6 x* m: u; U2 P$ _" ^/ y8 P3 e
- .ORG $FFB0 ;全屏攻击7 W+ R, c4 p+ R3 d$ D
- PHA. {7 {9 m* I" ?) c4 F
- LDA $6000
% x& w) G7 V z# G b - AND #$805 J( y- N- n9 p8 q7 w4 w' i6 N! c
- BNE ADDRFFBD
1 R i2 D' X( C- f: l - PLA3 @7 f7 h3 b! F u
- LDA $0015' j- k% S5 ]0 F4 `
- SEC7 O3 s0 q' m! c9 Q7 p- f
- RTS, {+ [8 V; J& D6 \6 H7 t- ^2 k
- ADDRFFBD:
6 u: }! v: B" ~5 h' G1 x - PLA: n' t- A: f' z/ ^4 d4 m6 p
- JMP $A826
( t; u2 q. ]$ c" k, z -
! v5 n) T l! N9 e& O1 W# G/ N! I# o -
: m$ X/ e; k5 s: {( B4 G - 4 F6 v, ] ?1 f* C
- .ORG $AA6A
) Z4 a1 T" ], l0 K7 P; ?" W' K b - JMP $FFD0
# ?8 p+ U+ p$ ~8 T4 w( a - 0 `0 n" {! M# G
- .ORG $FFD0 ;敌兵动作忽略" @$ o0 O: K9 X7 u5 ^' k& |
- PHA3 w7 S4 ^; i( [
- LDA $6000$ n& K+ P2 q6 m2 f, l; D9 w! a
- AND #$806 u% s6 @$ A/ ?; J, V( J L9 W
- BEQ ADDRFFDC
2 u1 W" o" {3 Z N; I& k! i( ? - PLA
7 e& D- h. X: `' [+ J - JMP $AA72, m4 d& U* O; u- B: U" D( k4 O
- ADDRFFDC:8 w6 K ?1 a1 ]
- PLA, p# l8 r9 c H- I1 j
- LDA $0629,X- f% ?; Y7 u% _ N& }# [
- JMP $AA6D E5 J, r) d8 Z* R) o
& f% u- d. q3 ^7 o/ o- ;[FC][忍者神龟3代标题选关程序]* d7 Z+ ?6 T0 z( ?
- ;作者:FlameCyclone 2017.4.10 O% F, z) f5 }% v& [" ~. }
- 9 H5 z6 H# t( _3 _
- ! ^) R6 j' d8 o* z' Z/ n
- ;配置数据1 l O( x& N6 P, D0 G
- KEY_ADDR = $F8 ;按键地址) P9 C2 \* i! D8 q2 z2 ?( M, b9 w
- STAGE_TEMP = $6010 ;关卡临时地址3 R d/ _- t5 b: ~: H
- STAGE_MAX = $0E ;最大关卡数
i0 G. s& V4 P# O* K# ` - TITLE_A = $20 ;标题条件A
+ L3 o/ p) W' J. n% I2 | - TITLE_A_ON = $02 ;标题条件A有效状态判定8 a' Y' Z$ O+ X% P# S# i( f- y
- TITLE_B = $21 ;标题条件B& e, @: _" t8 e5 b" K5 n
- TITLE_B_ON = $03 ;标题条件B有效状态判定
( y! w- P' Z) W - PPU_END = $FF ;PPU结束符
% S( W: F! d* [& n% M - TIME_LAY = $4A ;标题显示延时地址# m2 a9 ] S7 ], U, l3 T
- BUTTON_DEC = $42 ;关卡减少按键
* Y6 \1 C& o: I: D - BUTTON_INC = $81 ;关卡增加按键) B* p: z# q6 [1 v( Q( o4 e
- NUMBER_A = $06 ;数字A距离STAGE偏移量
9 Z# G6 Q B+ b7 q6 m9 F8 s8 V - NUMBER_B = $08 ;数字B距离STAGE偏移量
; c6 @" ~3 g8 K# m; r - PPU_ADDR_H = $23 ;STAGE写入地址高位4 w1 _! x: u$ l- m) W4 b9 a
- PPU_ADDR_L = $8C ;STAGE写入地址低位
: P& C" X. ~" Y7 p - CHAR_S = $A2 ;字符'S'
* w) {; H4 X6 r9 U" N - CHAR_T = $A3 ;字符'T'' c! K- t/ i! h
- CHAR_A = $90 ;字符'A'
9 y% i7 \* ]2 @4 s, M& g5 J* B - CHAR_G = $96 ;字符'G'
# m+ P" \- b) S5 f+ i0 C - CHAR_E = $94 ;字符'E'
7 \) w9 a ], D: c - CHAR_SPA = $00 ;字符空格 \5 S) E: J! }6 H8 T$ @
- CHAR_LIN = $AE ;字符'-'
+ G7 m/ e& y! Q: S: [% X, Y - CHAR_O = $9E ;字符'o'
+ O. g. c- o( T3 X - NUM_1 = $81 ;数字'1'
# F9 h1 J) Q; Q$ A' N* v - NUM_2 = $82 ;数字'2'0 a7 K* M' @3 X* @+ L R( [1 _
- NUM_3 = $83 ;数字'3'
" M# p" A& r# e- w - NUM_4 = $84 ;数字'4'1 F! E9 Y2 d5 l3 U7 P
- NUM_5 = $85 ;数字'5'# N7 R0 X+ t. c4 ~
- NUM_6 = $86 ;数字'6'+ u! S- Q' C/ `' |) K3 [$ ^
- NUM_7 = $87 ;数字'7'
% t( f4 o+ X4 T: e - NUM_8 = $88 ;数字'8'# i1 K8 y" X$ M; K, A1 F) u2 u
- NUM_9 = $89 ;数字'9'
7 y, _0 g4 N0 {9 A5 O5 }6 k3 t, I - NUM_0 = $80 ;数字'0'/ \' I3 q+ {6 B7 @
" S; b" K _$ I3 N5 P6 K- .ORG $F82A+ [1 O7 A8 T3 @, K2 I& C# b; }+ S
- JSR $E700' k$ a% u4 W i7 L# [
-
1 M8 N1 }) i e - ( v, A0 ~8 S5 C6 @, E
- .ORG $E7000 G- P+ B# F$ Y, N6 ^
-
1 `! G) n( Y) x+ E$ E - STY $4014 ;补上覆盖的精灵写入指令) M% T- l9 c4 M; Q
- PROTECT_DATA: ;数据保护
5 l7 J, e/ e5 Q6 u- W - PHA ;数据保护开始+ N" w+ D' t3 [* z0 h; L4 L
- TXA
8 }0 f2 d0 {) f8 Y% K: C( N& ` - PHA. j8 y6 |8 w1 K, {( N9 ~
- TYA
% T: S! b7 h3 e& U2 @! Z - PHA ;数据保护结束 V% d2 e' ~4 f7 n4 q' T7 E/ t
- LDA TITLE_A( g7 X, Z. ]0 M
- CMP #TITLE_A_ON ;比较是否为标题画面* ?( W6 k+ V- K6 j8 A8 y
- BNE RET
$ Y) i/ T: X1 j. \: ]) w1 v - LDA TITLE_B' ^9 \- w4 [' k6 d2 A* h% R; x
- CMP #TITLE_B_ON ;比较是否为标题画面
/ A- r+ ?9 d# K8 \/ D - BEQ PPU_STAGE
, w. K! w: {! l - RET: ;恢复数据. l- x) ~6 f7 K7 X& z" r( \2 `* b
- PLA ;恢复数据开始
) v# o! v9 P! } t - TAY
: U% P) k1 [. H$ _ p; ~$ F6 N - PLA
! G4 \" w. n- R - TAX& ]. m! n3 p. Q. j J" C+ J
- PLA ;恢复数据结束# ?' a! I8 O2 x7 P- D1 x2 K6 q& L
- RTS ;返回+ Z0 D) x: x9 F* B$ v; _
- PPU_STAGE: ;字符STAGE写入程序
2 R9 f5 q! p! F5 r) ^ - LDA #PPU_ADDR_H
3 h, K! q# [, [) F - STA $2006 ;设置PPU字符写入高位地址
0 V* ]! J; d- I* b o1 r9 b - LDA #PPU_ADDR_L
4 \. W. Q' f) b E. _ - STA $2006 ;设置PPU字符写入低位地址: Y$ d+ C. w+ x( U4 Z0 Z! Z
- LDX #$003 A& G9 S) a s. S' n J
- PPU_STAGE_WROTE: ;写入STAGE字模
4 B; d# J7 w' b, i$ T - LDA STAGE_DATA,X* M5 \2 e6 S- R, `, n
- CMP #PPU_END ;判断是否写入结束
7 h0 d# B/ N* m' w8 F& [ - BEQ STAGE_CMP8 ~4 ]0 |8 @" ~" m5 ~0 R
- STA $2007( q' z5 c. `4 F8 T, U4 u8 ^
- INX, @6 Z0 ~& Q" c
- BCC PPU_STAGE_WROTE
! c4 ?5 g2 T3 {8 L3 D' m - STAGE_CMP: ;选关操作1 W9 C6 a4 J; g) P" h4 @
- LDA STAGE_TEMP. q- {3 B; I7 T5 d. E# Q
- CMP #$FF ;关卡数据初始化条件判断
$ H2 K8 T7 J1 N - BNE KEY_B
. f7 o' ~; f, @2 m9 A% b - LDA #$00; Q8 H7 X9 o- I7 v9 F$ `* G/ _
- STA STAGE_TEMP ;关卡数据初始化2 g6 j" g1 L3 {& Z* E4 z' b
- KEY_B: ;关卡减少
- e. L O& L) ?1 d5 W" } - LDA KEY_ADDR
8 d! ?% E. F. O* h; ^7 v( V, M+ M" T3 m - AND #BUTTON_DEC ;按键B或左减关0 p1 q9 b3 o7 J. ]( [7 E, d
- BEQ KEY_A
' \9 a$ n+ I" v+ `) W+ p! W- o7 o - LDA #$FF
# G( T& S3 v; R - STA TIME_LAY ;重设标题延时2 F- p+ B1 U: U9 k* C
- LDA STAGE_TEMP4 S l9 l, U5 m' z# P- t3 Q
- CMP #$00 ;关卡比较$ ~/ r, L! e7 Y
- BEQ KEY_A
4 Q& { W F5 O5 O" l3 N. P# S - DEC STAGE_TEMP ;减关
1 r. k. h( V0 t- v$ X4 m, y - JSR MUSIC ;按键音效
; S, F4 m2 o0 j1 s$ v - KEY_A: ;关卡增加/ b; N* S: s/ J7 O* a
- LDA KEY_ADDR
1 U( K: }3 b/ {+ a - AND #BUTTON_INC ;按键A或右加关* `0 j- s4 J. e
- BEQ PPU_NUM_WRITE
$ j; u% J( w i, o U: N - LDA #$FF
3 u2 w1 h. j) q& l1 o - STA TIME_LAY ;重设标题延时
" M0 z* B0 L# y4 S' N - LDA STAGE_TEMP
* w% o; ], I' _4 ]4 N6 K - CMP #STAGE_MAX ;关卡比较
$ q K8 o9 F, I ]. I* g1 w& _ - BEQ PPU_NUM_WRITE
0 K" f/ M+ F) A8 r% H0 N3 @ - INC STAGE_TEMP ;加关% }+ Z" E- H% P. V& b" M' o
- JSR MUSIC ;按键音效7 q, n# ^1 ^2 L: @! }
- PPU_NUM_WRITE: ;关卡数字写入地址
3 K3 @" q" w+ f3 c0 M, d+ W - LDA #PPU_ADDR_H
& J1 X9 }' _8 x- C% l- y+ u - STA $2006 ;设置PPU数字写入高位地址
% P d; l& G- R; |$ I+ W }6 e/ I - LDA #PPU_ADDR_L
2 o- T0 j3 g0 k% a - CLC' |% S6 g% s. t- S* P1 d- [6 _+ D+ F
- ADC #NUMBER_A
* l7 _; H# y q+ L( c7 v2 Z - STA $2006 ;设置PPU字符写入低位地址1 l' G5 K# G: h
- LDA STAGE_TEMP0 f/ `' x1 ^ B$ A
- TAX( X" ~4 L8 W! ^5 c8 Y& I1 L+ F4 L1 p
- LDA STAGE_D1,X ;写入数字
7 i( D6 K- \# b! J/ I - STA $2007
* S8 z, q5 y/ t' D/ Z) [2 j - LDA #PPU_ADDR_H
( v% m! J' |3 L; Y: v4 r- x - STA $2006 ;设置PPU数字写入高位地址
$ A$ o! `, d, B) ~; {: }5 ^ - LDA #PPU_ADDR_L: a) o* f0 K; ?( N B$ X
- CLC
" V7 t8 n3 P* s, S8 t m) J/ S - ADC #NUMBER_B
# X8 b9 J# C9 C, T4 r! c2 c - STA $2006 ;设置PPU字符写入低位地址# m* A- o# L( t( F
- LDA STAGE_TEMP
5 E$ c4 ~$ N! d! ~( @ - TAX
$ s" {# a) P( i- a - LDA STAGE_D2,X ;写入数字
( \0 d% W+ i' C0 e! p - STA $2007
4 R, [4 {( r# l% K9 V - STAHE_WRITE:
4 H7 Z) z& Z4 l - LDA STAGE_TEMP
' o7 r7 r7 R3 S# p+ L5 \# V - STA $2D ;初始关卡写入" m7 ?! \% u4 d% n0 F- i
- PPU_RTS: ;恢复数据4 d' Y9 g: X. s
- PLA
/ b7 A. Q$ B' @6 U6 W - TAY, f0 c1 M7 N* k
- PLA+ f! @0 f+ B& l L
- TAX
! q" ]( b/ {3 T2 `/ V - PLA. [- V( W& I' N. p$ P1 N6 ]
- RTS5 D+ p1 [7 r6 i
- 2 N+ A5 y3 s3 U- X) {1 |$ T
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据7 g" j( x0 P2 K5 v# w- {
- .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END. _8 r9 I5 F$ S' X# b, s
; @3 W1 S( C$ |7 f- STAGE_D1: ;关卡数字
! x7 |$ f1 s, x+ k$ I4 s - .BYTE NUM_1,NUM_2,NUM_2,NUM_3,NUM_4,NUM_4,NUM_5,NUM_5,NUM_6,NUM_6,NUM_7,NUM_7,NUM_8,NUM_8,NUM_8! U( A* I8 h$ Y2 k4 ]
- " ^" a! Z* K2 J
- STAGE_D2: ;场景数字$ Y: U" T( n, {) J0 p- N2 J
- .BYTE NUM_1,NUM_1,NUM_2,NUM_1,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_3
1 Y' A1 h& O' { - ( i' ]0 a w6 w
- : m, B3 @- E' a; k2 }8 C; P
- MUSIC: ;按键音效: X0 y; @* Y6 b, [7 H: u* L, O
- LDA #$3B ;音乐号
/ M4 I- ]9 ^' u' I - JSR $919E ;系统音乐调用
5 d% V! E2 }, B0 U+ C8 v* [# P- I - RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;
9 }% d l" Z# Y% Y 5.生命加满: 暂停后,按下键切换;' L# w- @$ L2 M
6.血量锁满: 暂停后,按右键切换;: X- `% L& e) n. B3 B0 {! ]- h# x
. `5 `9 B8 |4 D: h, F1 `
4 R) p7 y4 w& d+ n. i4 I {6 f

; H' n- H" t$ @$ I: u
+ } N0 y& w$ {4 S# p i$ P$ h5 B* a n5 |* a/ q) ~% G+ i
FlameCyclone.ys168.com
" T: p" f$ f6 y$ w% w8 j% ]$ Nwww.nesbbs.com
/ \: I4 s5 F0 g8 V
8 G# |- z* \* f$ c( W4 D. F |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|