|
本帖最后由 yandagui 于 2017-4-2 13:23 编辑
! U2 t" \; G" k3 x6 h1 e
' r7 w3 e W) G7 ?[FC][忍者神龟3][END选关]0 R' d+ e' y3 g! U
% n! }( d% e( \时间:2017.3.30% H0 x& V8 M% Z* L# d, R! o
作者:FlameCyclone
$ x% A7 s6 K" }( l4 g8 n内容:
" t' V; D1 r% n* s. V0 X6 C/ E 1.关卡选择: 标题时,左或B减,右或A加;/ Z" A+ I3 r0 x2 _% X. e
2.全屏击杀: 暂停后,按A键切换;
4 \4 |3 e/ H: J/ m3 f* |+ m9 j' R 3.一击必杀: 暂停后,按B键切换;- .ORG $FEA0- `* v9 l% ~6 h, @$ U! h
- ora_data:
" V3 H6 v3 L# {" p: H8 Y - .BYTE $08,$04,$02,$01,$80,$40,$20,$10' X& X3 |' t8 e/ i4 x2 l6 Z$ {
- and_data:. x8 @$ _( Y, L' i0 W2 E M" _" l" v& `
- .BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
+ A v0 L% z9 r - % C1 I8 W" z7 h6 ]+ |6 q
- button = $F8
+ u: \7 o- I A' [ - flag = $6000
- `4 Y6 B1 P- N. m+ O - pause = $0045 @6 k8 z8 v S7 Z6 r/ {& t; k
) g" j- G; c0 Q* m: N# @0 D- * W/ t' n& t6 h M: }4 }5 Q
- .ORG $F90D2 V6 ]& Z6 {9 P, i7 w' r
- JSR $FEC0
! d& [- g6 q/ R6 b- K5 ?' z1 M - ' [7 [; }4 w: Y4 t4 ]$ p
- .ORG $FEC0. Z% B$ Q( w {* t: R
- STA $54,X
, a3 M$ R9 X, {' B- W - STY $FA,X
4 N0 m2 w7 E4 [& E: [5 k A - PHA0 S( b- L a8 |% T7 O4 o# F
- TXA0 u$ I! N5 u$ l
- PHA( z2 X- k9 v a% d b
- TYA2 b# Z6 z2 _# ~+ M
- PHA- v# G/ i; _( B3 v3 w5 s
- JSR KEY_OPERATE6 b3 p, M% }$ @5 e" y
- JSR INV; K$ T. {( ~0 C5 E
- JSR LIFE0 c, F" j) [- T; |( h% _
- JSR BLOOD
/ N( L* ~/ R5 b" }/ h. c' u* H - PLA
& W' K9 c) _. B, ~: B - TAY n {1 z& I7 } W; s. `
- PLA- T% k9 ^1 \: N" b* u
- TAX
6 d- K6 ~9 F i+ y, E# J- ~: c; m - PLA; H$ g' N: B" f7 u9 w
- RTS
% O) G: f8 _; q& t - KEY_OPERATE:
' ^* ^: \$ y* u7 u - data_protect:
7 b1 E; z# r% B, w; B5 ^3 |- }! G5 o - PHA& j5 F3 o" l& X ~1 b; _; a
- TXA- z0 z4 y; G! t" r0 {
- PHA
/ i2 A. R: U$ v1 C% v - TYA
6 i7 f" Z* |7 C6 `8 {) h% U6 G - PHA
# L8 k+ a) m5 k6 x0 l" S \4 k - , ~9 @! u, H" x* M# @
- FLAG_CMP:0 K. `3 o. R% e+ \' x
- LDA $600F" E3 G( V. N$ G. h4 \! Q" C( u
- CMP #$7F ;标志数据初始化条件判断
# `# l \/ i$ H, D - BEQ pause_cmp+ @6 n- d. m7 V: h( L+ \2 E, J
- LDA #$80
8 U+ ]; y7 @( q2 } - STA $A001 ;6000-7FFF写入启用" E9 r) h6 C3 {6 {8 V
- LDA #$00( W6 y5 f! [( d8 [( R6 ^# M
- STA $6000 ;数据初始化8 m; W: B* o. m% S
- STA $6001 ;数据初始化
- D b& \2 t8 P) X - LDA #$7F. z, S5 x/ L k% Y$ q- b
- STA $600F7 u: B# L6 W/ t N O4 {# {1 [' f: h
- pause_cmp:( j! p% D5 ~! ?- _7 U( L h
- LDA pause
6 o- X2 ~) K- ~* T* ~ - CMP #$01
, W' Q- ]' S6 t7 T, Q3 { - BEQ button_press
/ c1 P; E* W1 M1 {) y, f - PLA, H" \) Z5 O% a& x8 W5 A7 S) M9 t
- TAY5 Z3 E4 f- g3 i. c( u3 S
- PLA! ]7 a0 \& V' x4 b- ~ x$ ? Q
- TAX
x# a8 t) f" m* k- k - PLA. @, h* @$ Q% j$ F
- RTS
4 G) ]) H: x! n8 C4 I9 o
; ^% u' j$ q9 k6 L- button_press:
' d) N% X. Q7 R6 U9 T+ j; `2 R% ? i - ini_Y:
5 ?0 K* J$ X% q0 j. i ^ - LDY #$00# d% i7 V4 t R: F
- button_cmp:
' w: J7 Z1 e0 p# W$ i* w! H+ U - LDA button,X, A8 n. `- g( s/ p- C! p
- CMP ora_data,Y
4 Y" j. _4 o; i- I+ b/ n - BNE count_Y_cmp9 Y* [+ m3 d! R8 y
- flag_cmp:7 t- g* r6 z, H8 T9 a2 P p
- LDA flag,X
( m+ l2 R5 `. _5 _2 U( b1 C; H - AND ora_data,Y
# C: |0 W% T1 E6 x( u - BNE flag_and$ R0 K+ o( r6 W4 t& i4 s
- flag_ora:
" J+ Z6 |* T. V. J# I6 F( r - LDA flag,X( O4 {* R1 E8 D$ Y& j$ T( R! `4 v
- ORA ora_data,Y$ W. K) \! v( @( s. n- g
- STA flag,X; u& V+ H8 B% R- [* Q' B
- BNE count_Y_cmp2 z# T- N) u# i
- flag_and:/ J4 u. Y4 L7 ]2 H: j& S; C9 w* q
- LDA flag,X
0 [6 {% q$ ]* Q% A; g - AND and_data,Y# z p! }" r6 r6 C
- STA flag,X
1 e, D) c$ e# W# r - count_Y_cmp:! L& p; ?1 U8 n' z; q1 V/ v4 T
- INY
% \& ~# T4 S0 t, E3 A, [6 j - CPY #$08
. P$ h3 g6 l1 J9 ?/ w- r r - BCC button_cmp
8 l6 S0 K7 j9 y) }8 f, @# [8 _ -
( a4 Y; @ V8 T - data_extract:5 i5 ?( P0 w; p7 g9 K6 e' O4 j
- PLA+ Q" U# n: Q6 M9 o G1 H
- TAY
* X ]. L, Y: S w4 Z6 N - PLA1 H$ E# b( U! A2 L3 |' c
- TAX
2 e7 Z. v- |6 {/ w. F$ Q3 x; G - PLA
7 u6 K& Q9 c, C% O2 E - + j c- F* k0 k
- return:
) j" s) z5 ^; E - RTS
) I3 V' \7 v Q, [ ^4 B - 2 n4 l! X' P3 ~$ J
-
! H' G1 N0 e. D2 @ - INV: ;无敌
+ ]6 M/ {2 [4 p7 e+ A, E! ?9 { - LDA $6000,X/ ]' G" U: Q$ m* ~1 \5 e
- AND #$084 ?6 e/ {9 W$ Y7 ^+ p
- BEQ INV_RTS
1 O+ v$ a/ [4 I' _2 Q5 x: ?5 m - LDA #$05& @9 V5 p) a5 w
- STA $04FF,X
0 O, b; I% ?, J5 }% u% u - INV_RTS:
0 n) X, V; M9 V% g( l: e& I - RTS
( K" _- d0 K% S* a& X. r - 2 A: n1 F( ~6 }( Z
- 6 Z, Y5 i- e }5 U! y. V
- LIFE: ;生命" O# L9 i! c1 p
- LDA $6000,X8 F6 N4 M8 Z( M" Y3 I% l( \
- AND #$04" h5 }# Q$ j" }
- BEQ LIFE_RTS, F! U! D7 k. W {: [
- LDA #$09, X; D: H9 m8 f" g
- STA $6A,X
1 B' v. X6 y7 I( ] - LIFE_RTS:
: ~' J& l3 C3 m8 k9 q - RTS
# r$ i1 o5 j3 h
" m( R) R W8 `; w/ \-
" Q% c" ~! @( { U- ?5 ^ D6 Y) E9 e - BLOOD: ;血量2 A% O+ B7 L1 Y# z
- LDA $6000,X) y: x, H7 s! \. a% R
- AND #$01
l2 l$ x* A* r$ I+ O+ o {. h - BEQ BLOOD_RTS
7 B2 X) L4 i5 R7 j: I. B/ _! l9 m - LDA #$7F$ p* c O# g7 q. e8 J
- STA $04F1,X
! V+ r+ S" c; s/ }- L2 w1 J( }: q - BLOOD_RTS:) V) u$ W% x* u+ u# ]1 f
- RTS
6 [$ ?4 r* I, n/ Z! l9 D" @ -
& W; B$ U/ t6 j# P7 a8 y -
" e" G7 x7 n7 `! p4 |/ Y* e - $ @- F1 ~8 q9 T. b5 M% C Y: a, m
-
; V! [1 m: T' j! }! T - .ORG $D29F+ K+ n+ ^. u6 r7 W, ?- Q
- JSR $FF80
# b0 E+ f V: F* Q - $ |) _$ i, o7 t
- .ORG $FF80
, Z- g0 U, |* m7 L, j& h% _& z& h - KILLBOSS_BY_ONE ;BOSS一击必杀) c t7 ?- s7 _9 I
- STA $06283 Y' R& y# V2 T: `% O9 g
- PHA1 P- q4 r; L1 X) }* m0 ^. [
- LDA $6000
' j/ L( x$ v. V - AND #$40
: X3 N# `2 R- ?8 W4 q - BEQ ADDRFF8E. X- m# n' p r% @
- PLA! h: B8 c( B4 _6 H! e
- CLC ;敌方死亡状态判定
- M) Y0 {( }0 W9 X7 y/ |7 O7 i - RTS, G2 Z. d9 r+ _7 D$ q9 W3 Z$ x% B
- ADDRFF8E:
7 s- c# w! v6 Q/ b/ R - PLA, m5 x+ m7 b/ b& {8 Y
- RTS
! \" C: F9 n/ d" j* W; F
% Q% m! g7 N; c- \8 d0 u- 1 G4 x. |# g" E- ~$ Z2 x
- .ORG $D151) [: _& k# p) N O: h. B; L
- JMP $FFA0
) \# _$ r c6 A- ]$ S: X$ t -
& l4 p$ c4 @, J/ Y7 F& f) `: Z - .ORG $FFA0! W& O+ W8 S! }7 M
- KILL_BY_ONE: ;杂兵一击必杀) m! D( B" f0 d7 X" H7 r4 t: n
- STA $0621,X/ `3 Y: p* d8 A2 r- `
- LDA $6000& F+ D- A+ l4 K+ ^5 f1 r: T
- AND #$40: m* c; \& @" H7 r# G
- BEQ ADDRFFAD5 ~, U7 w& x0 O7 ^: w
- JMP $D19A ;敌方死亡程序跳转
' k: b# X# T9 @' o- N$ n, ?# \ - ADDRFFAD:2 e3 C7 @/ K+ j
- JMP $D154
- m- u& I2 J# s6 q9 q' [7 H. g - 8 b5 v9 l' J: N& k
- 8 u- N% G& T0 u7 z9 Z. g9 W- S+ f: }
- .ORG $A7F6
# |. w# f( c1 Q4 F# @. E - JSR $FFB0 J: ~1 `) u W2 |! p! A$ o
- + O! V0 g: ~, j
- .ORG $FFB0 ;全屏攻击 p$ g3 t4 B* P% G* Y4 n5 R
- PHA
! E' p" e. t% O3 I& G5 k" [; d0 q - LDA $6000& t3 o# [- l& x; x: s- l0 X
- AND #$80
4 `: l! X- c$ P3 {/ K/ d/ F - BNE ADDRFFBD0 k0 Z1 U5 ]$ N+ z3 {
- PLA
! x, @) X/ X1 |: F% z - LDA $0015 a% `$ F2 }& u+ `8 D( r
- SEC. k- Q/ ?, e7 m5 t e+ {) f
- RTS
3 l0 g+ \( ~% P) z7 c - ADDRFFBD:
6 ~5 V$ N/ k" j4 A1 N3 T V' u" C - PLA
j7 N% g3 N3 i1 Z - JMP $A8262 N( \5 K% Y$ M9 k2 {9 p
- G8 p6 {( W8 @( s+ O% C
-
; b6 k; y% m5 q0 G0 @/ l& { - * Z% d, y- t' E; c5 N
- .ORG $AA6A0 D# i; E" m& q. g( e7 L, |4 \3 e) H
- JMP $FFD06 P7 Q' X3 u: U/ V
- ( D& a- `+ g9 W% Y: ~/ A
- .ORG $FFD0 ;敌兵动作忽略' f( ^( f2 i0 o2 F. T `
- PHA
9 M- q4 b6 ~8 X" I0 |2 h" e - LDA $6000! H+ w0 @3 @9 S! `
- AND #$80" W5 L5 O+ {! ]$ M
- BEQ ADDRFFDC
, u# K7 e. M0 Q" q - PLA
. R6 T. C+ W8 `6 W - JMP $AA724 A) m! D @% C; x/ ]8 z7 D! _. E
- ADDRFFDC:
7 Q8 g( @2 n! _8 n# ^0 ^/ Q b/ s - PLA8 b+ q" l1 G- R; H& i$ ]
- LDA $0629,X5 B% N' z0 R' w' M( Z
- JMP $AA6D4 M: h6 U$ x' L
2 L" r9 B+ B1 h, y Y6 u( n- ;[FC][忍者神龟3代标题选关程序]' a0 _7 B$ F" {/ z+ }* y* [# o
- ;作者:FlameCyclone 2017.4.1
# q+ l% b' j2 ~. z
; o0 @0 T6 O8 L. M3 t/ \3 y5 |
, C# j4 _# O% L- ;配置数据2 o: M. r2 k/ q5 Q4 h7 c
- KEY_ADDR = $F8 ;按键地址) v; f. ]& x* q5 e
- STAGE_TEMP = $6010 ;关卡临时地址+ e6 |7 n* Q3 x8 u8 y( {! X8 u
- STAGE_MAX = $0E ;最大关卡数
. ?: s$ i- G3 B4 r/ e - TITLE_A = $20 ;标题条件A- {. t3 q) ?. p/ a
- TITLE_A_ON = $02 ;标题条件A有效状态判定
3 c) q& _ H! A: g - TITLE_B = $21 ;标题条件B
, v* o6 G/ A0 o4 u) X - TITLE_B_ON = $03 ;标题条件B有效状态判定
6 a; \- ~: I/ k* v - PPU_END = $FF ;PPU结束符/ d/ y) r, z( _( w
- TIME_LAY = $4A ;标题显示延时地址
: ? R! ~8 |/ i4 c! ~! Z, \ - BUTTON_DEC = $42 ;关卡减少按键
! k0 N: |; Q8 q; Z - BUTTON_INC = $81 ;关卡增加按键& k. U" A0 G3 j( b
- NUMBER_A = $06 ;数字A距离STAGE偏移量
' J1 X5 D4 G! a+ r# _% `+ V! ] - NUMBER_B = $08 ;数字B距离STAGE偏移量1 d6 U) D" F0 w7 n% m
- PPU_ADDR_H = $23 ;STAGE写入地址高位
W- M( I' K4 e0 x - PPU_ADDR_L = $8C ;STAGE写入地址低位
- p! o( H) W4 S, O+ X# c0 E/ c - CHAR_S = $A2 ;字符'S'
+ G! |6 V/ D+ d# E# x4 \ - CHAR_T = $A3 ;字符'T'9 n* B1 n2 r' J2 N |6 w0 O
- CHAR_A = $90 ;字符'A'
0 s! Z Z! n- E/ o4 j - CHAR_G = $96 ;字符'G'
, R) b& n; T/ b& J. B - CHAR_E = $94 ;字符'E'/ }0 r7 P ^( U. f0 P
- CHAR_SPA = $00 ;字符空格% _( @. A. b# A. w/ f; k' C
- CHAR_LIN = $AE ;字符'-'# t& r6 ]+ h/ @
- CHAR_O = $9E ;字符'o'
" R# w0 O1 r/ M+ ?" a - NUM_1 = $81 ;数字'1'5 R; ?) u9 y/ h* j G6 m1 ^
- NUM_2 = $82 ;数字'2'
7 L/ O+ E/ l% J' [* F6 E0 f- }% A - NUM_3 = $83 ;数字'3'9 ], H& w, a) M" c' T4 w0 O
- NUM_4 = $84 ;数字'4'
o; E4 @0 m$ I# U+ }0 M7 x - NUM_5 = $85 ;数字'5'8 f; U$ t7 V3 ~" ^
- NUM_6 = $86 ;数字'6'& U4 u% c! i {
- NUM_7 = $87 ;数字'7'1 F; e& j5 `( g6 I
- NUM_8 = $88 ;数字'8'5 _" y! g9 f4 B: {- O
- NUM_9 = $89 ;数字'9'$ N. t w# r3 m n% E* H. J5 O
- NUM_0 = $80 ;数字'0'( H" i. _+ }* {$ k
- 7 u. y! l4 I9 p/ ]& k
- .ORG $F82A
0 g+ `$ w$ G" E9 w - JSR $E7000 G" e# s0 j* q% r
-
8 l& _) c# x2 _% @ - " m! e l9 a# n/ c/ _
- .ORG $E7009 K% Y4 f f" e* V" Y* [8 x& H
- 4 T1 r& z/ O5 I2 j* @+ M6 D- y
- STY $4014 ;补上覆盖的精灵写入指令
! T" v% H7 z# Q) {5 T# S - PROTECT_DATA: ;数据保护
7 X! {6 S8 A/ O5 l" b( v: R - PHA ;数据保护开始9 n K6 T4 P% |4 u \9 i$ W" q6 H
- TXA" N1 U% [2 _" C+ ^3 Z6 @, O) _* H# m
- PHA
+ R& J1 T" Z; e7 h% g' ]+ ?. w* M$ X - TYA, j: w/ `- U! T* b" _# _
- PHA ;数据保护结束9 [ v2 \& S( r9 S5 |, b
- LDA TITLE_A3 B2 v2 _+ }& l$ N6 M
- CMP #TITLE_A_ON ;比较是否为标题画面$ e* m; T& F2 K
- BNE RET
) ]7 B: V% d* L - LDA TITLE_B
1 l5 _. Y4 t% r - CMP #TITLE_B_ON ;比较是否为标题画面4 p# S" h% ~- |0 B( }8 |
- BEQ PPU_STAGE
3 W6 a$ D* q0 o i - RET: ;恢复数据$ F6 w$ l- h4 Y- k1 U9 [9 A6 I3 E
- PLA ;恢复数据开始
8 n% r# B- |" z( a) D$ t l+ W( g - TAY% n9 ^+ O% c5 x3 a
- PLA
2 h) _" V7 F1 ~* @4 T) b# s5 P - TAX( q# ?, F" b1 R* s+ ^$ ^+ T* Z; ^
- PLA ;恢复数据结束; \! c- b; e. @" ~7 R
- RTS ;返回
7 |* P1 f6 ?1 a* {; m' R8 m - PPU_STAGE: ;字符STAGE写入程序
% M$ y2 H/ M9 B5 N - LDA #PPU_ADDR_H
& a( ~$ v+ N/ M4 c$ f+ e6 | - STA $2006 ;设置PPU字符写入高位地址6 W7 t2 C* P4 b8 {
- LDA #PPU_ADDR_L
% g; R$ a4 p6 N& K - STA $2006 ;设置PPU字符写入低位地址& ^4 C9 d6 |" [ G9 h
- LDX #$00. g6 L5 R$ [5 z2 V
- PPU_STAGE_WROTE: ;写入STAGE字模+ P+ ]* D5 x( j/ Q
- LDA STAGE_DATA,X n/ R+ c1 u+ S1 Y7 U) h- z
- CMP #PPU_END ;判断是否写入结束" F. C) N$ c5 X1 \
- BEQ STAGE_CMP5 ~* c0 v- w/ T( r2 S( f
- STA $20075 t7 A$ a; V# {9 z6 b5 ]
- INX
* a8 J9 [- c! v! h - BCC PPU_STAGE_WROTE
$ S5 g Q) P* f D, s8 V7 ^" M - STAGE_CMP: ;选关操作, k: ~! j% V* z2 G7 j
- LDA STAGE_TEMP! g7 [$ t0 P7 i& R f7 g5 @) L' D% a
- CMP #$FF ;关卡数据初始化条件判断
1 f! { C- h4 B. x" O2 E - BNE KEY_B
* R" W9 n3 V* T - LDA #$00
2 Y- `& j. l5 C5 q% S2 L - STA STAGE_TEMP ;关卡数据初始化$ o: y2 _( y& d% Q
- KEY_B: ;关卡减少% i/ N7 Y9 y# g$ V! j k" p4 E# z4 R
- LDA KEY_ADDR
- Q# E# {' Q8 P' z5 u2 S - AND #BUTTON_DEC ;按键B或左减关
3 C2 l( K) r7 _- z - BEQ KEY_A5 w( V, G% N# m; h" Y# }
- LDA #$FF8 y; h/ ~- E6 I- E; N
- STA TIME_LAY ;重设标题延时+ l, L! ~2 A0 v6 ~: i+ [
- LDA STAGE_TEMP$ x5 M3 w; @$ u) O) O0 x; ?$ o5 f
- CMP #$00 ;关卡比较* B+ M/ V r' S& k/ H
- BEQ KEY_A
# l; z1 g: C: R$ y. G' l - DEC STAGE_TEMP ;减关
$ ?) h$ p% Q; G8 z2 ~ - JSR MUSIC ;按键音效
: Y% b. k9 X' u t, j- d3 h; q - KEY_A: ;关卡增加
' p9 ?+ P& t4 j: [$ X, z - LDA KEY_ADDR4 [, z( g& ~# V, b/ ]( h4 x% H
- AND #BUTTON_INC ;按键A或右加关
5 S0 Z7 K3 M) T& m9 R Z) M - BEQ PPU_NUM_WRITE
4 L8 Z, ?4 i, L" a; _# e" U - LDA #$FF+ ?! a( r+ y. U' @) ^
- STA TIME_LAY ;重设标题延时
1 V2 ^/ v/ P+ a* Y s - LDA STAGE_TEMP: R0 y$ r- L. R) O5 {$ I
- CMP #STAGE_MAX ;关卡比较 E8 W8 t( c* ]% K, F
- BEQ PPU_NUM_WRITE2 Q' P/ j' ?" J# p" r
- INC STAGE_TEMP ;加关
' B# X/ B' B+ S8 l2 @) m8 Y4 m1 ` - JSR MUSIC ;按键音效: [# g' }& p' ~0 }% J( |
- PPU_NUM_WRITE: ;关卡数字写入地址
4 n. V; p5 A3 \$ B2 f' O - LDA #PPU_ADDR_H
; Y* j# t6 Y8 m: C3 o - STA $2006 ;设置PPU数字写入高位地址$ P" ~ C% |& \" `! y( ] C( n$ P
- LDA #PPU_ADDR_L; s; u# o! o4 [+ D2 j
- CLC" i' @# t0 I2 }
- ADC #NUMBER_A
3 y8 N+ w' G1 ^$ T; s - STA $2006 ;设置PPU字符写入低位地址
0 }7 B- O2 R9 N, o: Q0 C - LDA STAGE_TEMP. \3 W+ q1 b0 h% Z; v% e( h% J- ~* x" O
- TAX3 X z; b5 c/ `# d9 q* p
- LDA STAGE_D1,X ;写入数字' `( x: @" p, S! G$ `0 F7 `
- STA $2007$ V+ h N f/ Z- l8 G( p( ~
- LDA #PPU_ADDR_H4 U7 z. ~6 ?' t; o+ R, m7 ] w7 A* Z
- STA $2006 ;设置PPU数字写入高位地址
" P0 }" i c1 v* O4 R- y2 p - LDA #PPU_ADDR_L( q. u' a- s4 S8 x% y: i8 Q+ _! L. r
- CLC
' J0 W2 S3 U$ @& H* J0 Z" I% ? - ADC #NUMBER_B
& @& V- \+ u* A! U - STA $2006 ;设置PPU字符写入低位地址1 @- [0 a$ `+ E+ @8 V
- LDA STAGE_TEMP
4 w/ E8 Y! G6 o5 E - TAX4 v0 H8 ~) ]( i- m! a6 y( J
- LDA STAGE_D2,X ;写入数字
' v( x0 |( s2 S/ a1 W! U5 A. y - STA $2007
% `8 v6 E8 S- d) x - STAHE_WRITE: ^. W# Z. @9 r; ]2 s0 U
- LDA STAGE_TEMP
+ n( r* [6 f4 I* V - STA $2D ;初始关卡写入
2 N B0 d8 W: I1 { - PPU_RTS: ;恢复数据3 ?3 c" J9 a k$ l3 z6 j
- PLA
7 P/ e3 B4 O9 Y - TAY4 U( Q; O# A, _; J
- PLA8 q3 W: ~7 R9 \! [, }% Z8 n
- TAX
1 Y6 x6 j' _6 g - PLA
2 |' K# F6 m; ?, G# P# E - RTS
8 a l) A3 b. ] C - 1 P: w2 A$ H) V. q
- STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据+ e3 V! Y. e' D8 T( P3 \
- .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
! e) q9 a. B. w% V- l3 X9 g5 `- O; y+ C" `
* X( N7 I S* A' Q' r2 {. n- STAGE_D1: ;关卡数字
6 g: ]7 p+ F L1 l* C# A - .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& T# ]- Y7 w2 O9 Q& T- h3 w( q
5 Q# [/ [" k. n; x0 w+ I7 Q) ]- STAGE_D2: ;场景数字4 e8 i& m) u0 K% \: `) q3 i
- .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: v4 p- J* ~5 V% B8 T
-
# g# U" c4 B3 o/ m& v8 s; q - : {) X: g" C# c, z8 o( h. U- P
- MUSIC: ;按键音效
9 }: g3 D. _ ]. \( V - LDA #$3B ;音乐号$ N `7 |- M+ a X0 ~; [) H
- JSR $919E ;系统音乐调用
$ b$ U- L' `" H' B% ?/ O- m" m" Q - RTS
复制代码 4.无敌锁定: 暂停后,按上键切换;
* S2 N1 c4 c/ \3 b m 5.生命加满: 暂停后,按下键切换;
1 g& P, f& j. d 6.血量锁满: 暂停后,按右键切换;
2 R- u% m; H9 M$ [ . L8 d6 B0 p q

0 C+ }2 J! T9 y" E2 ~6 v& k8 ?- M ( Z6 n# |8 r$ Z0 ?

- J4 m- ?3 M* X# m
2 [6 t" }3 f% f2 ~. P% O# K& TFlameCyclone.ys168.com3 w, |/ p6 v3 e4 `
www.nesbbs.com; }1 T% G) L( o- T8 c' w
0 I2 k/ Z( T6 x5 P2 T: Y( t' _! N; D. j
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
1
查看全部评分
-
|