设为首页收藏本站

 找回密码
 立即注册
搜索
查看: 210|回复: 1

[原创] [FC][音乐12 IN 1][nes + 源码]

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 % g( Q0 H/ ?9 g7 @
" a, v0 x- }. k' n$ A
[FC][音乐12 IN 1]( L: N# E/ y' u' t3 f
时间: 2023.07.23
' N, y$ Y$ A7 U. r- ?6 k作者: FlameCyclone
- D% p! E; l- X  c; e1 a
/ X9 _7 p+ X: S) F3 i  M& W收录音乐内容:
3 h+ E3 X  Y' [" n! C8 w1.Raf世界$ g0 r" W8 `+ E& b; G
2.最终任务
5 p/ k' ~4 p4 B9 R3 w- T3.赤影战士
- o7 y/ X# u. d$ i' {& y! Y: U* i4.双截龙0 C" }$ u( N; Z' v7 @' t
5.双截龙2
! g9 F) Q2 o7 R* i* u6.双截龙36 G9 V/ c" {+ l/ k
7.洛克人
$ h6 Q, x- F( K8.洛克人2
  l" L9 V: ^8 m2 o; j' u9.洛克人3- s2 E" [# [- v
10.洛克人4
6 X# o5 m) _( B, K11.洛克人52 N$ S7 n1 @" A" t9 z& {& \
12.洛克人6' y! k: W5 g  l8 ~9 z
' ^; Y; w6 j& n; I% Q3 |- r
操作:6 z$ e" q* s! d9 h" [3 U
上键:         上一个专辑- X4 Q0 s* C* j) o2 C
下键:         下一个专辑4 t9 L" _& Y) ?# P) J0 ~: [" A4 h
左键:         上一曲, H5 y" ]" g+ n
右键:         下一曲
& x$ @- I9 u9 ?. I' mB/A键:        前10曲/后10曲
8 F, {5 O1 i! V) N0 Y7 O选择键:       下一页
; y6 ?- p. q2 a8 R* U4 K! ?; r开始键:       停止/播放9 ?- |' s9 X5 a1 W, v3 P: T- c
7 U1 N, s7 \9 g( B( M
http://flamecyclone.ysepan.com/" ~- O# T' P, {1 f, O/ O

( v$ P: k, f2 M% ]( i5 ~( Z. P& C
! u, c1 S) q/ I( N) y) v9 g1 W2 H' _5 M; N2 `8 @) a6 H& b
2 g1 y4 n( |8 ?% G
  1. ;[FC音乐][播放器模板]
    & u, C( y! U  T& @, A
  2. ;FlameCyclone 20230710
    1 ?. n' _. c" m; P  L- t

  3. 7 E1 @8 E  V, l9 Z4 X
  4. ;文件头# u. x7 d% s1 H% a3 v8 }) D
  5. ;======================================================================
    5 T9 K' W% ?& P9 l* ?
  6. .INESPRG 16                                             ;16KB PRG 数量7 \, O% U2 w  T6 T( X% ^
  7. .INESCHR 1                                               ;8KB CHR 数量
    # V( T& T# k5 J* X% N6 _0 Z
  8. .INESMAP 4                                                   ;mapper 4
    4 G$ ?1 G- ^: s9 \( r7 ]
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    ) B/ l( A: R7 G5 E) ^, z/ Q

  10. / F6 J% i6 A- u! E$ [
  11. ;==================================================
    4 G* e# f7 i) c+ A( X4 K
  12. SOUND_BAR_SHOW_ENABLE       = 1
    7 I- O, {7 p$ i, l' E1 W* Z9 H, E
  13. ;==================================================
    5 S8 E4 v6 F2 ]) M4 T' u5 t. M- X) G+ k
  14. BANK_DATA_MASK              = $1F
    & O3 S% {# r5 q& D! {" |+ W
  15. CHR_RAM_ENABLE              = 0
    6 U4 S4 q- S; r# j0 _7 Z7 D1 j
  16. IRQ_SCANLINE                = 136
    2 k8 ^' ~/ ?: H8 k# F
  17. ;==================================================7 x6 X4 k' \4 u6 i8 @. o
  18. SOUND_DATA_BANK_00          = $00! D! T+ S/ y$ s1 ^* b" W& x
  19. SOUND_DATA_BANK_01          = $01
    + k+ p3 O* r% M" d
  20. SOUND_DATA_BANK_02          = $02
    , ]7 m4 Q, h; ]/ p7 v+ E
  21. SOUND_DATA_BANK_03          = $03
    4 q+ s! R. r0 @, W; Q4 W
  22. SOUND_DATA_BANK_04          = $04) J' `1 x0 I/ Z  o1 z
  23. SOUND_DATA_BANK_05          = $05
    " ^: V; G. ^$ o
  24. SOUND_DATA_BANK_06          = $06
    ; K- ^2 N  W! `: ^$ ?  ]
  25. SOUND_DATA_BANK_07          = $072 e' S. p& V3 B7 B
  26. SOUND_DATA_BANK_08          = $08- {5 ?, X) Q; a! T. y3 e
  27. SOUND_DATA_BANK_09          = $097 S3 n: \/ r  A6 v9 \
  28. SOUND_DATA_BANK_0A          = $0A
    % F' |4 y3 \2 O# ~& `7 g2 S/ Z; I
  29. SOUND_DATA_BANK_0B          = $0B
      n. C  A6 M$ `  K  |  d" L
  30. SOUND_DATA_BANK_0C          = $0C
    / Z3 P, \: ^, B# a
  31. SOUND_DATA_BANK_0D          = $0D( t( p' {) T4 l) }2 d# k
  32. SOUND_DATA_BANK_0E          = $0E
    : @. V5 z4 u( K
  33. SOUND_DATA_BANK_0F          = $0F/ A7 B: z2 K- f) Y$ f% }

  34. % Y5 u3 d% f! V/ X) _
  35. SOUND_DATA_BANK_10          = $108 k' |5 o2 C2 B( u+ t
  36. SOUND_DATA_BANK_11          = $11; C) ~5 F; @3 \5 ]  x5 H. {
  37. SOUND_DATA_BANK_12          = $12
    4 N" r8 M6 ~- y+ x9 T! t
  38. SOUND_DATA_BANK_13          = $13
    / N- e- z/ |3 E2 Q; M4 p
  39. SOUND_DATA_BANK_14          = $14+ }7 r4 p  \7 y
  40. SOUND_DATA_BANK_15          = $15' ~+ g' D7 L, N: C& a6 S% R
  41. SOUND_DATA_BANK_16          = $16
    8 D, I$ }. Y$ [; Q) h3 V3 n; {
  42. SOUND_DATA_BANK_17          = $178 B# G* m1 `2 ?1 @  E
  43. SOUND_DATA_BANK_18          = $18
    2 K8 k! X$ s; r9 E+ C
  44. SOUND_DATA_BANK_19          = $19) A9 V% Z+ A/ N& ~
  45. SOUND_DATA_BANK_1A          = $1A
    . P, `, N2 T3 a% x
  46. SOUND_DATA_BANK_1B          = $1B
      `  h* a# T2 X" M. q- C3 E
  47. SOUND_DATA_BANK_1C          = $1C
    ' ?# U' W1 R, Z- j* a
  48. SOUND_DATA_BANK_1D          = $1D
    ; j5 @$ y$ v1 ]; @# [' c
  49.   N' j  i- m+ f- B2 e$ w; R5 d& ~$ o2 L
  50. SOUND_DATA_BANK_C000        = $1E
    $ J' V& t6 U6 e4 \/ ]" K- k% ]
  51. SOUND_DATA_BANK_E000        = $1F! k* l- C) v2 l& c2 r9 w! q$ Y
  52. ;-------------------------------------------------
    , V, ~4 @( P+ O/ n7 B
  53. CHR_DATA_BANK               = $20
    - K! g2 W0 r& V) B" h
  54. CHR_DATA_ADDR               = $A0009 p' C; V6 M  v6 r- Q* G2 _$ R6 B
  55. ;-------------------------------------------------% ?, \# {0 d6 ]1 r" m- K  H7 W5 C% w
  56. PROGRAM_BANK                = $00* k/ S6 }& F" B  j9 s# @  U
  57. PROGRAM_ADDR                = $8000/ t0 H9 f( i5 b- A- ]0 Y% h8 K
  58. ;-------------------------------------------------' U. S7 Q' q! N; M7 S
  59. RESET_BANK                  = $1F
    ; \$ N& G4 L6 Y7 |# b7 V7 D
  60. RESET_ADDR                  = $FD00
    " G+ G. l3 v" a/ A  l

  61. 6 \* G# N, e2 m+ e; ^
  62. ;==================================================
    4 P+ o+ w- u) v+ ~+ e  D" ?
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数! b4 I3 `3 c' B* `# t
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引' u4 T" r2 E4 p! s
  65. PAGE_SIZE           = 5                     ;每页节目数% G4 Y& R6 u# F4 J) O) w) R- M

  66. 1 S( }5 h' c) C: k
  67. ;==================================================
    0 [* {2 f1 q; _# Q0 g$ b
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    8 [( G- O) k! H, r
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数% h3 q# \1 I- w6 B% F; I' h$ r- Y
  70. .ELSE5 b3 I( t+ D0 I( u
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数* X0 T/ Z2 o) W+ X# [+ W0 ?6 a; |& y
  72. .ENDIF2 d5 X6 [9 ~3 a: k, ~
  73. + y" M: R) q  Y
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引* G: e2 k& P7 e+ d- ^6 Q

  75. $ H2 @5 o/ O- Y
  76. ;==================================================
    + i  A; Q/ j; H8 h8 G: H% H& Z
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    - I" _7 F, I9 `9 `. S
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    3 {  K  D; g2 ~
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;) h; A1 @+ E% i: A) ^  g: [
  80. ;==================================================
    & o2 `3 T7 J# G% K5 p
  81. Caption_Text_Pos    = $204D ;标题文本位置
    9 X5 H/ w" x: C1 Z1 ^: {# y" }
  82. Author_Text_Pos     = $2324 ;作者文本位置8 g9 `' ^; a2 h# r3 t# h8 X
  83. Date_Text_Pos       = $236B ;日期文本位置& i+ p0 j" K: Y8 {; z3 |5 {' X
  84. ;------------------------------
    7 Y. S9 q7 j  J$ c
  85. ;------------------------------
    3 q/ y( |' X* u( T3 _
  86. .IF SOUND_BAR_SHOW_ENABLE. r7 F% g+ {0 O8 ?$ {) g/ E0 @
  87. 5 l& l; @8 @8 W: P* E; g
  88. Play_Index_Pos      = $2273 ;当前曲目位置& R( @) O: d# H+ }2 c
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    4 C  z- R  O$ `% ?6 E/ I$ y
  90. Play_State_Pos      = $22F3 ;播放状态位置; U- W, U: w0 t" v( `8 Y& b  ^+ v' N

  91. / q) L1 X- V. y7 h2 g# G
  92. .ELSE$ c7 p- H; N5 J  M' N! q; e

  93. 6 }* g$ ^$ g8 u! k3 t' p$ s# z
  94. Play_Index_Pos      = $226C ;当前曲目位置) H* A) k) t5 B8 P9 z& f
  95. Play_Time_Pos       = $22AC ;播放时间位置
    ' P3 K" V7 [, Y( B' [4 c1 K
  96. Play_State_Pos      = $22EC ;播放状态位置2 H' b4 r# y; D3 Z% ~9 ]

  97. . Y( D/ \( k2 Z" T- P% V
  98. .ENDIF
    6 `5 Z6 z& z, P
  99. ;------------------------------
    6 U1 p8 V1 o5 y, v8 w9 X- ~
  100. Track_Name_Pos      = $222B ;曲目文本位置
    % s0 I) S; M0 T! }0 [* |8 I7 P
  101. ;Track_Name_Pos      = $00 ;曲目文本位置% [+ f9 a  G! r9 U1 _+ Y
  102. Sound_Track_Pos     = $2265 ;声道文本位置# ]: O9 W* L. V1 I, `  U+ B
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    1 e+ R' y4 p6 h$ F) P4 T7 \
  104. ;==================================================
    " M9 I' t* \- h1 f9 A# n' r
  105. Scroll_X = $00
    & ?' f4 {5 v2 ~; Y. Z8 F
  106. Scroll_Y = $00
    2 w; J& f5 J5 [
  107. ;==================================================, ]* X# [% d- \' h" d' j4 d
  108. Sound_Ram_Addr_1       = $0100
    0 I- t) Y0 q  T0 |
  109. Sound_Ram_Addr_1_Size  = $80
    0 S- ]: S5 _; P8 _2 J
  110. Sound_Ram_Addr_2       = $0090
    3 E, j. O8 \. D( U9 l0 j2 z$ H1 D
  111. Sound_Ram_Addr_2_Size  = $709 v" f' k( [! P& S' i) Q1 K8 z# z
  112. Sound_Ram_Addr_3       = $0700
    4 e1 K! {) G6 D7 W
  113. Sound_Ram_Addr_3_Size  = $000 Q- y" K: l  _& D
  114. Sound_Ram_Addr_4       = $0400
    " z, x' \* v1 `" N5 S
  115. Sound_Ram_Addr_4_Size  = $00, W& V* ~& M) }# G
  116. Sound_Ram_Addr_5       = $0500
      m2 p$ O2 c( }% R& N
  117. Sound_Ram_Addr_5_Size  = $404 k! C; r5 y) Z) v% S7 `
  118. 1 I* o7 P+ r8 U$ [) E0 y9 L0 J! T2 |* W
  119. OAM_TEMP_ADDR   = $0300! V1 y; d9 Y! A5 m: `& z. Q& d$ l
  120. . |( w; {5 g& x+ o
  121. ;==================================================) T3 b% `' [4 l6 X. q9 t
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    ) T! H2 p% _3 [  x: {" Q" p
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    $ n3 |" _3 e, S, t4 }  e5 a
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位; y" G  I# K) {
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    & t( E. n9 T% c$ k( R1 A
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1; ]8 a( y2 G7 t$ W/ R' A
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    * r, s: p3 V; H: S7 _
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加* l! g  i' j0 o  l% v4 T; w
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    8 d6 s9 e" Y$ [5 D6 ?4 W4 }% d
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存) O% s/ t% j4 N! }( ~  u. a: l( Q
  131. APU_STATUS              =   $4015   ;声音通道切换
    ! v* b0 G+ l- T" b( J6 n6 R+ i( P
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    / d# P+ N9 H; Z. ?! S
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通" e. E9 u( x- i- v0 {3 M) B
  134. ;==================================================* b# b9 z$ h4 c* g" h
  135. MMC3_BANK_CTRL          =   $8000. L& {. |! d$ D, p+ `+ b
  136. MMC3_BANK_DATA          =   $80015 k- Z: y0 w# H' _) O/ A# ~- A
  137. MMC3_MIRRORING          =   $A000
    ! k/ d& z7 W6 u& F! u$ E% s
  138. MMC3_PRG_RAM_PROTECT    =   $A001" b3 M, z7 _& Y4 ?; }7 `& G  t" d
  139. MMC3_IRQ_LATCH          =   $C000
    ' K$ w- @7 e& }* Q
  140. MMC3_IRQ_RELOAD         =   $C001
    / u7 V$ x3 h6 ^4 j( K7 w% L
  141. MMC3_IRQ_DISABLE        =   $E0002 d# _4 F- ?, t$ ^% `7 {" q  s
  142. MMC3_IRQ_ENABLE         =   $E001
    9 m3 O" g+ K5 J$ D+ M
  143. 3 ^) H4 m9 a1 B. N! u+ j
  144. ;==================================================8 A8 |8 T5 y% G/ `$ Q( e
  145. PPU_Addr        = $0200! ?& j& q6 x0 Y" ?
  146. Palette_Addr    = $02C00 Q+ f7 A  e  n+ s8 Y
  147. Sound_Bar       = PPU_Addr+$E0
    ) [1 u/ B2 `7 b) O+ P2 F5 N; N
  148. ;==================================================
    2 d" Y. Z+ k: ~
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    : x5 Q: X+ p' |8 v: ]
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$114 i7 w+ Q- f, b- x* t
  151. PALETTE_UPDATE_MAX      = $2C3 v4 U  x) F5 u1 U' ^& f
  152. PALETTE_UPDATE_MIN      = $21
    $ ~% W$ [: H+ U  }6 H
  153. PALETTE_UPDATE_INTERVAL = 60' M% J) e# _3 q4 X
  154. ;==================================================
    ( d* n$ _; b! p
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    . {! L+ H  v* v$ K, V2 I8 u- l
  156. PPU_Cur             = Sound_Bar_Cnt+$02: F* {6 b7 |9 C2 S
  157. PPU_Addr_H          = PPU_Cur+$03& n1 X- L6 k6 ~, q+ _
  158. PPU_Addr_L          = PPU_Addr_H+$04
    1 q* C/ R* D% C" }
  159. Screen_Ctrl         = PPU_Addr_L+$01& \* r* e+ _# p6 u
  160. Screen_State        = Screen_Ctrl+$01  j0 e! [: M, k3 E7 S
  161. ;==================================================
    9 e9 ~& F$ |4 ^+ [- J" _
  162. Use_Ram_Begin       = $501 f0 k" o8 U9 M# L
  163. ;==================================================
    * R6 b$ {* t* d" Z  ~% T" I
  164. JSR_Addr_Op         = Use_Ram_Begin
    5 h. C/ w) {, D5 D7 G1 q7 U2 L
  165. JSR_Addr_L          = JSR_Addr_Op + $014 S& N: y/ d* [5 e/ ^- m7 T. r
  166. JSR_Addr_H          = JSR_Addr_L + $01; S$ n+ H9 U; ?( a; E& v& D* x
  167. JSR_Addr_Rts        = JSR_Addr_H + $01% E, S+ C% K6 v5 O; C4 w' }
  168. Data_L              = JSR_Addr_Rts + $01
    8 g" u6 d' m; N; N- f
  169. Data_H              = Data_L + $01' @  w8 h) v$ R6 F
  170. Data_Cnt            = Data_H + $01
    0 o+ P$ N) h3 V( n5 M
  171. Data_Buf            = Data_Cnt + $014 w( t9 N% L, N3 M+ ~1 _5 S+ G
  172. Nmi_Time_Count      = Data_Buf + $01
    3 `2 ]1 n% M: [; x3 f3 X* o
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    ; g2 m" Z; j+ i; X
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01- e  J8 k, ?- b% U5 ?

  175. 0 _0 P6 `3 X% t% j
  176. ;调色板刷新标志. X# X9 P. Y$ v  M* C% ]
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    ) O6 E. H9 u/ t1 m7 }

  178. ) n7 _( m7 r2 b) g! J
  179. ;当前帧文本写入禁用标志
    & A$ K+ G+ G! C3 Y
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    5 ^! Q  V* c* I  g8 p& e

  181. 6 p( O; F0 f7 h# r8 r% e4 l7 v
  182. ;==================================================4 m* k( j! A& E0 ~  ?1 s
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    ( T) v0 S4 B. e* e0 \1 h
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    : J. |& r7 @% r5 z
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    6 }# y) m9 @6 x! y$ n
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间8 \$ q3 o9 Y1 m# [
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间" Z, C7 M% v: ]- ]* e, X/ P* x
  188. ;==================================================
    - U- b% i' k  ^$ ?2 c; w
  189. Key_Keep            = Text_Disable_Flag + 1
    * d: M% E8 F; {
  190. Key_Once            = Key_Keep + $012 `+ |; |5 P9 m, Y3 F  Y
  191. Key_Kemp            = Key_Once + $01
    5 v) |  d4 U) `# S6 g! E4 D+ \
  192. Key_Temp            = Key_Kemp + $01
    : d2 A$ N/ i* O6 g
  193. Key_Getv            = Key_Temp + $01
    $ H# L; w7 m% U0 C  w: f$ U: O
  194. ;==================================================0 ?* ~. w' v$ _7 s! Q) |( o& s
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集1 Y# q! }5 n% U5 U2 G; w& u5 r
  196. Music_Item_Last     = Music_Item_Cur + $011 d9 U8 X1 y  Z, @; p
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    ( u+ T* l9 B  G. q/ b" c7 r
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    9 c4 m3 i) B2 v( r1 e( r
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目; _0 e* S6 ^' N* @% A4 K1 G$ E, {
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态9 g$ ]" ^0 V9 L
  201. ;==================================================
    + n/ }8 ?+ N* S
  202. HEX_Data            = Music_Stop_State + $01
    : G0 n" V8 `9 t" ?9 N
  203. DEC_H               = HEX_Data + $010 J1 y3 B" V) F( e) X8 S* M+ B  J
  204. DEC_T               = DEC_H + $01
    ' |$ h* m& {& n. n. c3 C$ _
  205. DEC_L               = DEC_T + $01) }  A( c) n) f' P: }' N8 F
  206. ;==================================================8 A! R- M0 b# p9 Q- j0 N
  207. Time_S              = DEC_L + $010 {" Z/ \7 f9 \) v
  208. Time_M              = Time_S + $01% _, ~" U$ S# Z5 v1 G6 f
  209. Time_H              = Time_M + $029 }$ S  J/ h1 L/ c
  210. Time_Cnt            = Time_H + $03
    # I( ?$ k0 D* n. i3 _2 {
  211. . A6 K4 {2 G+ T- G% X1 g
  212. ;==================================================
    + K0 h* @! M& z* M. N! I. }& I
  213. Music_Bank_8000     = Time_Cnt + 1( l! ~: S! p  }
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    ) d5 ^! D5 W* D/ ~" u
  215. ;==================================================! ~( I7 `( ?" G
  216. Scroll_H            = Music_Bank_A000 + 1! p! q# L% G; X! }
  217. Scroll_V            = Scroll_H + 16 f& w9 t" A8 t1 o8 X8 b
  218. IRQ_Process_Index   = Scroll_V + 1; A# j' V$ y3 u0 O
  219. ;--------------------------------------------------
    8 ]2 V2 h2 P3 `( Z" b
  220. Page_Cur            = IRQ_Process_Index + $01( w5 {: ], P" U: ~; x
  221. Page_Cur_Index      = Page_Cur + $01
    ) r; w7 J7 f) y* ^( q" n
  222. Page_Cur_Cnt        = Page_Cur_Index + $011 G3 S/ W& {5 L  n& J
  223. Page_Last           = Page_Cur_Cnt + $01
    . ]0 Q* }+ Q" Q. \, g: L7 D+ G0 ?
  224. Page_Last_Index     = Page_Last + $019 z1 ~' B1 i9 b/ g; O% `  B
  225. Page_Last_Cnt       = Page_Last_Index + $015 e6 y4 t4 C+ P  J0 D" b7 a- A
  226. Use_Ram_End         = Page_Last_Cnt + $013 _) k3 D& ^9 |5 S* ^1 W
  227. ;======================================================================  ?6 y3 g9 L* D0 ~
  228. ;音乐数据块. E% O0 R7 W5 Q1 z1 z9 f

  229. 7 f1 a4 N0 D! Q3 c( c& ?8 X( h2 i2 c
  230. .IF SOUND_BAR_SHOW_ENABLE3 l0 F2 V  r3 F/ d5 Y1 d

  231. % s( l2 l6 i; [" V
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    4 F' z& q! v+ ]4 T7 ~  ?
  233. .ORG $9000& W/ K+ w# T- g
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    3 V2 I5 |% ?8 |- G* |. I; n2 w# G
  235. . r3 D- L; g: N9 j3 A' \
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    : r4 w9 c* \0 W  G' I
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ' M3 \1 y* r. Y$ v- ]

  238. . v* ^8 P- w1 v1 C" l$ n9 X
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    9 l9 u7 g, s4 n$ B7 b
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    4 r$ P+ \8 w( U

  241. ; c* M( |; r& z6 C# w6 a
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK+ _; a. N, B( P7 l; d; D
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    1 W) _8 t4 q4 Z0 v

  244. & l- V, e, g4 j
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK% t+ ?4 R: D5 b7 W( L5 o, [7 _
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"+ h* j% |+ N" I6 u% Z
  247. " n. X  T3 h  H- _7 a" W
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    % e' R  `$ s4 I3 A# v" a: k+ |
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    8 G) n* Q) r% L) A0 j/ B8 X3 O6 }( E
  250. , S# Y$ ~9 w( K  i$ x
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    : X7 K" I1 m1 |, a) ^3 F
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    , q& R( g/ k, H" }8 _1 |
  253. + G+ j5 C7 Z$ H
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    / f- ~. U9 o8 M( J1 d, F
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    % |* X8 c* p9 i- D

  256. / V% x) T! [' U+ E1 B' h7 S) V
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    6 K3 Q* C1 R# A& F  F0 B: d
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    ! i+ d. c. V& b5 |6 w- B$ |
  259. : `( l5 [3 v3 m& l6 t% a0 k
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ! m& k& ?  K: H8 ~. p' E
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"% D$ H$ ^+ i8 p* K" E

  262. " I; s& t2 w% [$ e2 a- Z. F
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    3 f2 V( f. v6 Y
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    ( v  u( T1 S# s! [

  265. ; |/ j' g+ y0 X2 }$ g8 p+ \
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    5 H6 q7 V/ M7 y
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank") _7 x. y: I' R# V

  268. " [% v6 P; _# M; j! b7 s
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    : {9 P! W$ ]" h$ t
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    4 c$ }* k$ Z0 y

  271. & @: |/ s! A  `9 ?/ ]( j) l4 ?. D
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    7 h7 [3 Y4 ~0 ?7 z5 F
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank". C4 c- y8 c1 o

  274. / X3 S3 z3 I/ F" d7 h; I
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    3 v$ x; O0 q! p1 C
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    6 b+ c4 m) [% V$ d, v; q3 h

  277. ; {, K6 K- G6 y4 A& D
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK4 _5 A. U& O( h, Z' y' P
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    ! j6 E/ }! j" k' T- i

  280. 8 P. L; m7 M: O  @" ~
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    : z4 g" d  W) }+ S
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    . w# ~  w3 X# Z- F) k) t1 P
  283. 9 {; t( m; L) \( R
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK' r# ]2 a  d" Y" I
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    9 q; R1 k' F2 h0 ]" y* l/ A0 z
  286. : n' ^# g" B% O& q& c
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    $ Y/ ~0 h' h6 c. M6 i
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"1 d6 c" I' [" }9 L3 y# F% x

  289. ( C0 q9 z1 E4 T% c9 J
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    8 X+ j! m: e% S! P) U4 y! ]. P8 o
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    + D/ k5 H% y! ^- I* t/ p! r

  292. - K5 H% Z' i! w1 O0 k
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    : L8 z# E1 `; M6 K
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    ; l2 y# _, w* `+ z# H7 w; \

  295. # v8 i9 U( B, O8 T$ d; s- B& T" V. _
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
      f! }. i  E; k7 N, r) L
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank") u( Q. m/ w' d9 z* X; g

  298. 5 X4 n* h% R% j
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK# Q' W3 F% ^( l. N
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
      ^+ ?: x6 \3 V+ S2 _

  301. 3 ?3 e7 R5 ^: Y6 h2 E
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
      C+ z/ Y8 d( _: m/ i
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"% b. t5 I* r/ B

  304. , k/ K) Y5 N6 a- {6 r3 ]/ }+ b
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    1 ^0 i9 a2 R- I+ D& |( Y  M
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"! u- c( \4 E$ V. k$ @

  307. / j8 f. l8 P3 k  s0 S$ {' y  `% s
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    * A0 s1 Z! E* {+ @8 ^/ f/ M/ N
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"& Z1 z5 V8 E/ i
  310. ' m2 V  k7 N' Q* R1 x8 q4 y
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    8 o1 ?3 B5 ~7 _$ S) O" U3 t$ o
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"" a0 t% T7 J! ]( U4 `1 ^& z
  313. 2 a' W7 e# P8 D, s4 h) u  J* K8 N
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK" `: f9 Z9 ~/ N1 v7 ]1 a
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"9 W( l; d9 n: @/ k( M  w6 T# D
  316. 2 g/ L" ]6 f: A
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    3 ^1 ~6 F" ]1 v; @5 z! R
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"0 v$ l! Z1 t9 t1 a& y1 @' |

  319. * V6 a  m- R, S, O! h, r( D
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK( M) N# M% F, l
  321. .ORG $D400" L2 ]5 m# ^/ R$ ?
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    9 u2 m/ c# j) W/ y" N2 Z
  323. 1 S8 B% R) R5 C+ Q) H* e% J
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    2 }. j1 U# h% q5 e
  325. .ORG $D800
    4 H/ n3 m4 m" T' s1 K3 T! H% W: O( C
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    6 \# b8 z. H4 f6 |: W

  327. . c% O( n5 j, b- G! p0 R/ o

  328. ; ]+ t7 n' i; a* F; b1 U- O
  329. .ELSE% ?3 V) ?9 g5 B% R

  330. ; Z* e" i7 T8 g1 q
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    6 R% q8 T. X4 |' U& V# S; G9 u
  332. .ORG $9000
    2 c% n. O' {! c) y7 i3 w/ G
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank". Q, M+ T" ^# V, ?' D

  334. # E3 J8 n7 b, F3 c1 I  S
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK8 `, `9 a  c: A( a# u- N- i
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    * ~/ v4 S' y  F0 {
  337. * C4 }5 L9 U2 w- ^: u) [
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK0 `4 a7 F5 y" |) d' k- h
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank": C6 B6 ]. N( q  [
  340. ( V5 J  K8 `; Y
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK0 i  @4 T- x9 b( x! U2 `0 K% B
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"1 U! G4 d. w: j) Q
  343. 1 C9 ?& N( V/ l. @% Y$ \
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    0 l6 N' x4 d/ x" |  r
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    " Q2 g8 Q% h; L2 }) L
  346. * L$ I0 ^* Q" O# s# ~# z* g% K
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    * `6 \: T- r& R5 }# _
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    . F( B. o) O* F& ^( A+ |8 x

  349. * ^& R* d5 R( Y& |, e6 W( a
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    0 a( W; K8 f+ z) j3 N# J) l
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"3 t1 ]: e" d9 i# @9 J2 j

  352. 4 `/ C6 s& M7 E- \) g
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    , U* R2 k; R5 x! m7 c- l* E
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank". ~* }" o" B2 e- n1 {

  355. 9 F7 M6 [! [8 M: z
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK- k) x) e7 Q7 @1 o0 o1 b  h8 N- G
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"9 Q3 U; }8 q; c4 I2 K2 U

  358. - _: _# Z4 f) ?! |4 s2 ?  {9 }  y
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK4 e" z/ ], k  w3 z$ c; D
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"2 K( q2 |8 B' |+ Q

  361. . _, {6 ]- H; g3 I( @
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK; e/ x, ^* R/ z: o2 q, e
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"/ [$ i7 o  D. ^% V! g6 j
  364. 7 b1 Z* L! f; O( H
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    + }8 f  C4 f( c
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"  L: F0 I& j/ j8 I
  367. ' x  E" w7 C* @9 k3 k6 z, @# S3 B
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    6 M& U* `9 r9 L5 a6 v6 a
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    # {$ V5 a7 _& b# a( F. s
  370. / p' ]. J5 _0 A. G' s
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    1 R3 Z2 ~( }- [# C7 h
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"/ _, k5 {! ~4 x; C. C
  373. 0 |, v2 z1 y# |
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK- F0 @* d* T: \) k9 X) o7 t' V. |
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    7 t3 x8 n  a2 M+ V5 U( P: x
  376. 1 G7 X, l# W) Y
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK. l* c  E, m+ _" f  y
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"1 N) @2 L# q9 [" S; x' v2 j  `
  379. 3 g3 u5 W; D1 e
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    1 A) X: ^4 }6 Q6 {1 ~
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"4 W0 L" }* p. B" V

  382. , I3 o7 k9 k$ \6 E9 N/ \  E& @
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    2 ]0 \6 v5 d; J  d9 U7 z$ @
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"5 t0 I) r: p8 J' X. B& Y

  385. ( F' }- m6 P  ^5 d
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    % U9 P4 Y2 N, K9 j3 u
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    : d) B; k: e# E; \4 b. u5 f
  388. & M+ t# A$ ]. F6 n' H
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    , N$ j0 a! H* ?
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"' A3 ?+ |9 D# d0 K- E' P/ I
  391. ! Q6 H# s9 z/ t" y5 e
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK' _! S$ @. z' p3 B( `' G6 z
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
      j) L# }9 r( R! W. {/ W4 T
  394. # u! A0 n' h0 R- F/ D
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK$ o* Z* ]3 y0 X5 X6 q) r4 M
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    ; b& e& Z3 K# Y% I

  397. ) ~2 Q. ?9 \5 G9 Z" M  F& ~
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    6 f  O# i* l  }1 ~" B
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"/ ^0 S! A: G* A$ U6 U! s) b' s

  400. 6 s2 L+ ?3 n- n' @) `* j8 G
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    3 x; {' V% b- K) L4 O1 i, f
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    8 o  x8 K6 a" U2 i$ n7 D5 m

  403. 5 S: E1 e- e* W" w0 p3 Y
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    ' h' ~' h! Q1 c
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"8 p: `6 c) r% |/ m
  406. 7 ^$ Q- |9 h: z. a( i  [% o
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK- k) L/ p* w6 w/ K5 U
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"7 J* s  v, {. j$ [

  409. 5 l2 c; |0 V( p4 \/ p; R
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK- P- m5 L: c+ ?- F" r" r) X* Q
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    4 G( c) |2 q0 F# N3 G
  412. * h  V# `7 a+ q( u  i7 y! H" W
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK, C; [5 E+ r9 m; P$ }
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    8 Q) i' u# K5 }% F. J5 o- @
  415. , G* t2 x6 ?: ^% Y+ Q
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK/ h8 V: h2 L0 P& L5 b4 P
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"9 E2 T; q/ o  i! f# l+ }
  418. ; h+ |9 p4 r7 I+ @$ M
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    " N$ g+ h6 U- r/ {4 a
  420. .ORG $D400
    ' L: X3 \# L$ I2 w# a
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    $ I5 m) i2 @7 @$ h# S* x
  422. * q; X7 y2 n  z. W; `8 J
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    * X& v% {  o4 M$ Y3 h9 y$ J
  424. .ORG $D800
    " f) ^3 `6 E7 b2 r) p
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    4 _* k2 B( A& Z# }+ s8 Q

  426. 0 y/ F5 ^1 K% J8 V( g; p
  427. .ENDIF' |$ g7 v; \( a8 H
  428. 6 ~; v  m' l$ [
  429. ;CHR图形数据
    5 a, `- N! s" _) c' r- Z
  430. ;======================================================================, y  g6 k( R7 ~3 p  _
  431. .BANK CHR_DATA_BANK
    6 a0 P# k5 _& r: c) W
  432. .INCBIN "chr_bank/chr_data.chr"
    * ]6 H6 j. N2 O" k+ h: T
  433. ( _+ F2 b" z/ d+ h5 J6 J, Q
  434. ;======================================================================/ V+ T3 Z& R; H, R
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    % j. x; u) j! y
  436. .ORG PROGRAM_ADDR; ?- b2 d" X& `! K& O- ?: l2 E; E
  437.   p5 [$ \7 G9 b, U3 C7 p
  438. ;==================================================7 g7 g6 e9 U" ~" ~- [- l4 ]( o
  439. NmiProcess
    # L- ^6 t7 @- _) T3 h

  440. # F& T1 q% c) c+ o9 g. B
  441. ;关闭屏幕控制% y+ P/ c9 {  U+ ^* S; }; |2 d
  442. LDA #$00+ U- k* A  Q6 N* l
  443. STA PPU_CTRL( J7 ~) E# T& M2 q# W

  444. 8 |7 y0 ]$ d0 f, l
  445. ;没播放音乐就不需要触发IRQ8 a# B; P  |# ?3 a% K. @+ {
  446. LDA <Music_Stop_State. }! x% l: |: E
  447. BNE NmiNormal
    , _7 s; L) K+ k) u7 ]: O' y& D

  448. 6 Z- C0 z. p& [% c0 S
  449. ;重置IRQ索引" f/ e) q; G+ Z( O: g  n
  450. LDA #$00
    0 e' h) g+ C5 f* U- u
  451. STA <IRQ_Process_Index2 ^0 U# o4 X# h4 N/ k9 ]+ c

  452. 5 }$ J, D4 {& W5 A4 A- [
  453. ;时间秒数为空则跳过
    & Q- o9 b0 I) [) f" Z
  454. LDA <Time_H2 ]' J, M7 D: a* d6 H2 x
  455. ORA <Time_M8 a8 w  N, D" a9 d! t
  456. ORA <Time_S
    1 ^$ o; f! a( W8 o- A
  457. BEQ EnableFirstIrq6 G$ N0 G2 v+ l4 y5 |$ R$ t
  458. + T& q2 _0 E& n) z1 a# R
  459. INC <Scroll_H6 r/ C# d. v/ n; n- k3 X

  460. 6 S5 E3 u% Y, K* H2 w
  461. EnableFirstIrq
    6 [; h) h. B$ S: X. V0 {
  462. ;80条扫描线后触发IRQ# B1 ~' F' K" L7 h& b2 g* r
  463. LDA #IRQ_SCANLINE- m6 E/ M! Y, i* a* K$ ]
  464. STA MMC3_IRQ_LATCH7 y, _4 J' J% h: c, {: I3 w/ Y6 t
  465. STA MMC3_IRQ_RELOAD
    % N* @; f/ E( R  G" s
  466. STA MMC3_IRQ_ENABLE4 d, T3 E$ I) R: E
  467. CLI
    ; T8 q" P& e0 n

  468. ) D; y( G/ E1 j; {
  469. NmiNormal
    : X  ^! ~; Y; @: J$ P' {* r
  470. 3 W5 a: y# z+ Y8 v9 E  B
  471. ;处理PPU图像0 W; E0 a' x6 Q" f& C$ V( a. j! t, I
  472. JSR PPU_Proc% v2 R, e, ~; P/ L8 b
  473. 8 x% p6 R5 T! y: b) q
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    5 e1 b# _1 H# [1 D+ [$ \
  475. LDA PPU_STATUS% B+ @" J+ K# w/ k
  476. ;LDA #$00
    - w- e6 `$ ]1 k  s1 w  y3 X+ P$ h
  477. ;STA PPU_OAM_ADDR
    7 _! K% L7 I4 f. i
  478. LDA #OAM_TEMP_ADDR / $0100
    # E! f8 U6 f  [, q; g
  479. STA OAM_DMA: C" p6 w% f, \7 w& G: J
  480. + h  Y+ N3 e2 w
  481. ;启用NMI中断3 R- u6 L: X" G$ Q, e6 @; x
  482. LDA Screen_Ctrl
    # |* g6 N' Y+ @& q# j
  483. STA PPU_CTRL
      s: J1 |0 x2 ^
  484. * D* p$ S6 e$ s
  485. LDA <Text_Disable_Flag6 \$ H8 P1 M" S6 G
  486. AND #TEXT_DISABLE_RAM3 ~1 t: Z$ J$ z
  487. BNE Nmi_Sound_Play
    6 w& u" M; o" [4 D- k; ?
  488. & T4 A0 O* m: B  u9 y5 x
  489. ;处理手柄输入
    6 R$ N4 P  Q4 D
  490. JSR Key_Proc
    7 L' |% \: \! x4 M
  491. 9 c# d- X5 b/ [; m" {5 d5 L1 C, q- g2 S
  492. ;切换音乐(手柄触发)) I7 C2 }+ x1 p: I) a
  493. LDA <Time_Wait_Cnt
    % O  W) Y* Q3 ]$ d( A" d; o$ B
  494. BNE Nmi_Cursor_Arrow
    2 r$ }6 d; z* {% U5 V
  495. JSR Change_Select_Item
    ) v; r) I' }8 s: H3 J5 X, {( S

  496. ! c2 ?+ P2 o  p$ N2 J" g! y6 I: E
  497. Nmi_Cursor_Arrow, }) k5 x* V8 N$ ^8 V+ n
  498. & P" J9 m& w6 M7 N  s* s8 d4 q0 Q
  499. ;处理光标箭头
    # G" y7 w3 p; `, c" ?
  500. JSR Show_Arrow2 L0 ~: H; G0 Y* B# \. h7 {

  501. / ~) i. o- f5 Y2 X( K' E
  502. ;更新调色板
    : w4 l. c( O" @. f6 N) G% {
  503. JSR Update_Palette_Data
    6 m4 m. A' t" c: d
  504. ; N: f6 h. J7 ?/ v# @# C( O& Y
  505. ;显示时间(缓冲)
    ) Y' [  e$ ^- K% F5 w; f, r" }
  506. JSR Time_Show
    $ U: X% x& h) X

  507. 1 R4 S- |- ?/ a" i; |
  508. ;音乐显示(缓冲)7 s5 ?  \1 m" h% a( j( y
  509. .IF SOUND_BAR_SHOW_ENABLE
      p! l5 Z9 j3 {& t( S/ I
  510. JSR Music_Vision
    ) u6 @9 z2 l9 l! l" Y, H
  511. .ENDIF
    $ B5 N0 m- f! U- M8 N

  512. $ {: B, G6 w' v
  513. Nmi_Sound_Play
    ; t" o9 I* z$ z) V7 Z
  514. ;播放声音
    . U1 ?/ `+ Y7 F
  515. LDA <Music_Stop_State
    : q3 c$ V9 }6 U. V" V# {
  516. BNE Nmi_Time_Wait_Set
    - H9 N; Q) a- Y+ T2 k
  517. JSR Sound_Play_Proc
    - K, f; o& H" [# ^  s8 F

  518. / k' N2 m( o# O7 m6 A% Y% s0 B" N* z
  519. ;播放计时8 @* ^& B8 J, j
  520. JSR Time_Count
    7 p; L3 C; N1 w+ X& n7 v
  521. 0 p# e2 M1 E" p/ I( E
  522. Nmi_Time_Wait_Set
    , Q; [/ A4 |% [6 h7 j  }% E/ N3 i
  523. LDA <Time_Wait_Cnt
    / n0 m! F- o# j
  524. BEQ NmiNormalProcessEnd' O. S3 n% K% g1 q- G% j
  525. DEC <Time_Wait_Cnt
    6 G: X0 G9 o: X  k/ u" G( M
  526. NmiNormalProcessEnd9 H$ Y! f8 }6 E& c1 k0 w
  527. 5 |1 K, }! j" b7 n5 H2 {7 }
  528. INC <Nmi_Time_Count
    ) {2 D* Q% ^2 i5 H

  529. % {2 J" h" y2 u: k8 d
  530. RTS6 k5 ^1 q) A% t1 B- @2 D

  531. 2 V% L% N/ B6 v! J* R  O
  532. ;==================================================
    4 p+ W) [& S4 U  z. Z8 M1 V/ `9 U
  533. Init_MMC3
    ) O+ u5 T& z6 W- R# r" q
  534. ;==============================% Q0 m# _; k% p* \' \! w
  535. ;禁用IRQ
    ( z' t0 |" W6 V
  536. STA MMC3_IRQ_DISABLE
    2 B- E2 B( E' Q% }/ N# ^% {
  537. " I0 V. M4 i" X% u4 U4 |/ D1 v
  538. ;水平镜像8 W. Q, z# g$ p6 N* b
  539. LDA #$01: `& Z" W; \" w8 e3 P2 ~9 j
  540. STA MMC3_MIRRORING
    1 s4 j! m% \7 k0 K# L* _
  541. / V5 w( X6 {, C! Z' O% F/ ?, L$ f
  542. ;初始化图形bank
    ' S# {/ k2 c: o* M9 Z$ d
  543. JSR Init_MMC3_Chr_Bank
    ! T( V! Y; D8 v
  544. ' }3 P2 R6 _2 z0 t
  545. RTS' ]* J6 e# [1 K/ a/ D
  546. ;==================================================
    : u6 [+ Q) V5 d( L" D  S# O
  547. ProgramBegin;主程序. U. D4 c+ N0 d% B$ ~
  548. LDA #$00# g; B& N4 i! L& W) m' A
  549. STA PPU_CTRL1 y7 I0 t: T- s% [
  550. LDA #$00
    4 @0 g" [- ?9 m$ ^0 R# W
  551. STA PPU_STATUS
    # n$ W$ R7 p1 W4 j, `# J' C
  552. STA PPU_MASK
    # E. a" {9 c1 E! Z
  553. STA JOY2_FRAME
    + Z- I% [2 O1 i' p

  554. 5 K' K, K  _. ^
  555. STA PPU_SCROLL
    3 K' Z8 Q# i4 p$ k
  556. STA PPU_SCROLL. f. {5 a/ K9 T4 Q
  557. : q9 I: H  k) b# C
  558. ;==================================================) z; \- s9 b. L- ?7 @  M4 ?) o
  559. LDX #$FF
    7 g  t  z! ^6 G- F9 I# K
  560. TXS# J4 L8 [3 X) G$ {6 A2 P* s. x

  561. 2 g2 e3 ~( I" x+ P& Z; x  P
  562. JSR Init_MMC3( {! j) E. s* S' S" \: ?; l9 i, ~
  563. , ]6 _9 \( a+ r, Y7 E
  564. LDX #$02/ f9 [0 E" K4 C) e4 h7 [! h1 }
  565. Check1, c0 [& [+ A! P; G
  566. BIT PPU_STATUS
    1 g7 {3 f3 u; A; {- Q
  567. BPL Check15 Z4 T9 l5 z- l0 V7 `- n
  568. Check2
    0 S1 f: B/ l, b, ?) y
  569. BIT PPU_STATUS* m) l8 t2 C: @, j6 y! n
  570. BMI Check2
    * F9 q. r5 l1 D( F

  571. 7 Z9 S" H  n( W2 u
  572. LDA #$0F
    ) i/ D- z+ l$ B) X. `# [" F
  573. STA APU_STATUS) q1 x' a: V! S: Q8 x7 t
  574. LDA #$C0' E. i) J) g+ A8 H9 I3 z
  575. STA JOY2_FRAME. C1 ~+ O& p3 D" P5 A4 V
  576. ( ]+ Y' M6 q5 e
  577. LDA PPU_STATUS8 D( W7 ^# D, h2 q
  578. LDA #$10
    ; Z+ B/ }. Z" J2 n# R% C7 Z
  579. TAX
    8 i; R# l7 ~( j- s' Z
  580. Check3
    , X: T+ w7 M4 l
  581. STA PPU_ADDRESS  O. C! i. e/ ~1 X
  582. STA PPU_ADDRESS$ p) C, J8 O$ u( P7 P
  583. EOR #$00
    ( f" u% ~% c' M4 J
  584. DEX
    3 t- z0 r$ b3 {6 ]
  585. BNE Check3
    , J. U7 |4 S/ [$ D6 O7 p
  586. ;==============================7 O8 S2 F% `  h& Z: R3 E( F& }, _
  587. ;调色板清空
    2 L0 d' R8 V& R8 ^7 U* c
  588. LDA PPU_STATUS( u& p% X8 f; ^* R
  589. LDA #$3F: D- k1 C& |; X' x
  590. STA PPU_ADDRESS
    2 W; z0 g1 N8 P" x
  591. LDA #$00- N4 ^6 L& M5 \, P) w: T1 Z
  592. STA PPU_ADDRESS
    " d: h7 y. f) ~- A2 `& a- D/ C  x
  593. LDA #$0F
    2 B, b7 _9 @! L& f; q' C
  594. Palette_Clear5 n& C4 R+ E# Z% T4 \( C3 Q  z. P* X
  595. STA PPU_DATA' N1 b2 F3 N, E3 p3 D6 w) Q
  596. INX
    " i0 }) D5 a5 Q
  597. CPX #$20
    0 [+ K# ?! v% J* ?# s4 u8 i2 G9 q
  598. BCC Palette_Clear4 R3 k3 V2 r* E% G9 K3 W* u
  599. LDA #$00
      j+ E6 z! n8 v, z
  600. STA APU_STATUS3 W" J6 k; n% R5 G) c# z

  601. " F5 f8 L' @1 o8 ^8 J5 e$ j
  602. ;==============================
    , ~& P( s/ ~* h% C
  603. ;RAM初始化
    ; G1 z7 c; Q- O$ Y
  604. RAM_Clear_All
    * I+ J- t7 G2 c) p3 O% a
  605. LDY #$00
    3 X$ \9 B: e5 f2 X
  606. LDX #$086 m3 b$ [/ F: \4 ?2 l1 r
  607. LDA #$00
    $ ?. K7 Q; p$ S6 B; b7 T
  608. STA <$00# |: Z% N8 B: j* m
  609. STA <$01
    ' V* r. E3 S: f1 G4 C+ p  [' k
  610. RAM_Clear_All_Start! S- {& p; ]$ i
  611. STA [$00],Y
    + J1 V0 Y' E6 R2 e. H0 ^/ ?) M
  612. INY
    7 ?$ T) X6 D, Q& [
  613. BNE RAM_Clear_All_Start
    ) o# O# v3 L. m
  614. INC <$01
    : E, V( c2 c5 q
  615. DEX
    $ `. D" s+ Z) Y$ I
  616. BNE RAM_Clear_All_Start% ]/ ?3 u* o: k9 g2 X
  617. 1 l* l) @! @" c+ N" V, R+ A7 T/ p2 S
  618. JSR VramClear! Z, z  V1 x6 f0 h
  619. JSR VramInit
      I) z3 W# O4 p# u5 `- a
  620. JSR OAM_Ram_Init/ r) ~: Q( T0 g9 e( p
  621. JSR Init_Palette_Addr
    7 t1 U, D, h; F. m  e6 c4 A# O
  622. ' ~3 T6 d( T; R! r8 q: r
  623. LDA #$FF7 G0 l9 P; _5 O  y3 M& ?
  624. STA Use_Ram_End) k; r7 @- V5 U6 _3 D
  625. ;==============================( l, ?: P+ e  j
  626. ;初始化背景调色板" e" o3 N0 w% ~) r% K9 R$ ?( Z
  627. JSR Set_Palette_Color" J, S5 C8 d5 w, \
  628. JSR Set_NameTable_Attributes, n7 n7 [! O) o1 o" N
  629. # J; u, ~7 y1 f# [
  630. LDA #$00' |9 ^" U. d# }
  631. STA PPU_OAM_ADDR6 j! R# j4 {1 @& n3 s+ [: L3 d' Q
  632. LDA #OAM_TEMP_ADDR / $0100
    ! `/ K. @- [4 b: Q5 R) {
  633. STA OAM_DMA
    : a) y) U! P! o" C4 |, ]. |

  634. 5 N) Y- o/ V- G
  635. JSR Sound_Reset_Proc
    / @8 G' ^7 @/ K
  636. JSR Set_Sound_Total
    $ c( N$ q5 `! {0 v# K

  637. / p+ ?. F# f& h  d3 ^3 n) f
  638. Init_Start_Music. s6 o# C8 T- w7 N) L
  639. LDX #$00
    - F: r! E' h) g7 A7 W/ g
  640. Init_Start_Music_Write- O# a% _  M( s, I4 L9 q
  641. LDA Sound_Start_Port,X
    & w: \' t8 ?$ r+ [4 E1 k; A9 }
  642. STA <Music_Cur,X8 y( g% u" K  ]5 Y) m& G
  643. INX
    ) w0 `6 @( S5 x9 T# F# ?7 w
  644. CPX #ITEM_MAX_SIZE- `! W8 O; O/ l, s
  645. BCC Init_Start_Music_Write) Q6 X8 E; x% {
  646. / i: x2 W+ h4 @' k
  647. JSR Show_Music_Text" B6 e- y# h8 o$ V5 L' X

  648. 9 L7 I0 h# b( ?/ y  a/ X- b
  649. .IF SOUND_BAR_SHOW_ENABLE5 A* X' t  y( ?3 u7 J4 k4 S
  650. JSR Sound_Bar_Text_Set
    2 W0 j: o+ M$ z
  651. .ENDIF
    ( J. j5 q1 N& V$ K/ Q& {

  652. 9 a5 e( T' {4 C
  653. .IF Track_Name_Pos
    9 ]0 f5 z7 T: c; T
  654. JSR Show_Track_Info; s0 o8 O  A* q0 M7 }* d  G2 v
  655. .ENDIF
    # {- {$ H( o( l4 t+ g3 _
  656. 1 R8 V" `% ~# A
  657. JSR PPU_Proc
    ! B" N4 ~% v* R- c1 Q) T  r

  658. ( W' D1 Q0 A5 _6 l
  659. ;==================================================
    * L7 R: O! |3 C2 {8 V1 @
  660. ;音乐bank初始化
    ' i$ N' v0 l7 Y+ [) x8 i
  661. JSR Init_Sound_Bank
      \) K1 s9 [8 q$ O" _2 d7 @

  662. $ d: U2 B; ?- ~/ F: L8 e  O6 f
  663. JSR Music_Show
    3 c9 Q$ |" L( v* R$ E
  664. JSR Time_Show
    ) s- Y- e* d7 P' c6 b
  665. JSR Music_State_Show$ O5 }. ~  s. A! ]8 {
  666. JSR Time_Delay  g, M/ k3 N5 o  y# J& }

  667. ( F7 y/ t# f, d- w
  668. LDA #$01
    ' i5 Z' ~- k; O0 d* t
  669. STA <Music_Stop_State
    + R3 G1 @8 m# f* S+ q2 T
  670. ! V4 n7 ?1 h) x' @3 A
  671. LDA #$881 c, e8 F2 i# f# n6 Z& [
  672. STA Screen_Ctrl: N* M8 N* H! V* H3 n
  673. STA PPU_CTRL
    5 |( p( m0 O7 X, _: m2 n
  674. , m; v1 V. N( Z3 N% i2 Z$ H7 r
  675. JSR Show_Page_Text
    + |) g% p8 X* W2 u. R7 l

  676. " v; T1 P* h# w8 i7 b
  677. LDA #$10
    / T5 V- D6 ]% V& g6 @2 d+ a
  678. STA <Time_Wait_Cnt% {8 ^  B/ c# s# M& }$ V% H$ r, t

  679.   L; O. M" l0 d/ Z7 M, t
  680. Wait_Time_Over" [' `- I+ e7 K% [0 [8 U- N
  681. LDA <Time_Wait_Cnt
    + E3 E0 h# d4 v' m
  682. BNE Wait_Time_Over
    7 L8 B( l% V) T

  683. 3 }+ |- o- J, @7 B* ?
  684. JSR Show_Arrow% C7 I5 B3 S5 ^8 X+ E
  685. LDA #OAM_TEMP_ADDR / $0100" s2 w( O4 c$ e' n4 z' s9 N0 w
  686. STA OAM_DMA
    & g4 M; |6 `7 A) ?, D# ^, n

  687. 0 v# t; Q6 _( }% N5 w2 a# V; i- H0 ^4 s
  688. LDA #$1E
    . c( h/ ]* H' a
  689. STA Screen_State
    6 o1 Q, E" `: M) t9 l' g) Q1 R. m

  690. * f; {6 E4 E! N9 K* C
  691. LDX <Music_Item_Cur5 c) O- \/ c% A/ @/ r/ L1 @
  692. LDA <Music_Cur,X1 j7 T$ w/ g1 y7 r$ Y
  693. JSR Sound_Init_Proc
    # d" p) m. }; W1 X& w! b+ y& Y
  694. / P) U9 d( c5 t- U& o, T0 A
  695. CLI6 d& g& O- V2 \$ N6 |, K
  696. JMP MainLoop+ n8 d- @2 Q6 I! J) ?
  697. 3 `. o5 N& m3 B' J- q
  698. ;==============================9 z( p( r* U, p
  699. Time_Delay;延时等待
      ]7 q& c2 J& I; T; j
  700. LDA PPU_STATUS2 w6 t. W* W, o0 `
  701. BPL Time_Delay8 t5 |  I) z9 @4 }; h; h7 L  ^
  702. RTS
    2 Y4 P+ T* q: ^

  703.   A8 [( @6 }, j) ^! ]1 j) g
  704. ;==============================" }7 Q6 t$ J: v
  705. OAM_Ram_Init;初始化精灵内存& A# x& Z" }5 K+ ], ]+ d
  706. LDX #$00+ K$ R, T# R- A* t. f7 a6 Y: F
  707. OAM_Ram_Init_Write( l; A6 c* x' Y$ c3 N  b- G# u
  708. LDA #$F8& z3 K3 Y: }2 s  j
  709. STA OAM_TEMP_ADDR,X
    7 a) }9 v$ i$ n3 {) o# ^
  710. INX
    4 T+ K) [3 R4 l8 I7 j* \
  711. LDA #$F89 v' I+ M; X2 u) h
  712. STA OAM_TEMP_ADDR,X' l! u2 [: C  I1 B# M7 t8 G6 x
  713. INX! Z& ~- f6 T7 O2 k' ~& `
  714. LDA #$005 F4 G) o' j8 ]( A; w
  715. STA OAM_TEMP_ADDR,X: {- B7 S5 J6 ~% |8 Z: l
  716. INX* M9 z6 N/ ~5 u  C. a( P( W
  717. LDA #$F8
    4 P7 \+ Q) F* ]& x# H
  718. STA OAM_TEMP_ADDR,X
    & W& _' G& w$ }4 I" |; p" O
  719. INX$ q) s: K" b! J, f; M
  720. BNE OAM_Ram_Init_Write5 N8 @6 v7 _8 V" f1 I- R+ U  a, |
  721. RTS
    + A* D% j4 \/ }! n( \9 U

  722. / Y( i1 D$ X: i9 Z8 m" `1 u9 i
  723. ;==============================7 Y5 m1 G' e0 i5 U6 }' l5 M% R2 H
  724. VramClear;初始化图形内存
    ; N2 O5 X/ @9 _: p* Z5 p: {
  725. LDA #$20
    % \: W' W8 @" h# q
  726. STA PPU_ADDRESS% M$ n% P0 {' I* M6 H
  727. LDA #$00
    4 `+ e% U1 z/ a$ u6 |
  728. STA PPU_ADDRESS
    0 k4 o7 \! T5 M0 f( S5 ?
  729. LDA #$00
    9 m- v6 k1 o1 `! v2 O. R
  730. LDY #$00. O3 J8 q+ F& J& `- I
  731. LDX #$10
    & E, k! L9 Z7 J9 y: ~) i
  732. VramClearWrite" g8 |' W; T/ V: }$ W' E
  733. STA PPU_DATA
    ( w! k8 e7 E$ i) w9 b
  734. INY' y: U9 _% h2 ]
  735. BNE VramClearWrite+ u9 }) S5 E$ F) w
  736. DEX
      t4 a7 R$ U8 i. F, Q- c+ }1 V( x0 K( _
  737. BNE VramClearWrite
    + m1 s/ \" k- \
  738. RTS; J. ~: d5 V" Y, g+ r( E

  739. / Z. G, b7 z6 q: W2 R. v
  740. ;==================================================- F6 a  T* W$ R6 }1 A  i% [
  741. ;设置MMC3图像bank, r$ I6 l  G4 a7 R" X8 t' ~1 K
  742. Init_MMC3_Chr_Bank' Q- {: N9 r; @4 Q
  743. LDX #$058 y+ O9 L5 M5 t3 o
  744. Init_MMC3_Chr_Bank_Write
    ) Y: _+ K1 t- M4 w' |8 C
  745. STX MMC3_BANK_CTRL7 U3 s1 Z+ b. Z# y
  746. LDA MMC3_Chr_Bank_Data,X' ~* x( a) t- i7 L" k/ ~
  747. STA MMC3_BANK_DATA8 j* M9 ~; ^# |* j
  748. DEX
    " }3 G3 n& d. d3 h
  749. BPL Init_MMC3_Chr_Bank_Write7 Z) H' O+ V3 _- l
  750. RTS
      ~# f$ E  V; M
  751. ;--------------------------------------------------! p6 R; E. F; \
  752. MMC3_Chr_Bank_Data
      m$ R# e% Q, f( ?1 P* @' P
  753. .DB $00,$02,$04,$05,$06,$07# F4 a; X6 U$ r* f" Y3 [( e! n
  754. / M( D7 B. ^. h6 \  G& {
  755. ;==============================
    # y! M' }; {: m7 H1 |+ p8 `
  756. VramInit;初始化图形内存* w& \3 ~! j, f$ V: d
  757. .IF CHR_RAM_ENABLE
    % p( q" {0 J4 H4 U  o
  758. LDA #CHR_DATA_BANK0 h: {! A: J* R
  759. JSR Switch_Bank_A0005 X. f8 o7 V" @
  760. LDA #LOW(CHR_DATA_ADDR)5 u6 f/ S/ l$ U3 r! h
  761. STA <Data_L, j9 G% M! B  r# H% f0 t
  762. LDA #HIGH(CHR_DATA_ADDR)
    / A& O0 c# S9 F  y
  763. STA <Data_H+ h* w; P# I2 _9 K  E7 Q
  764. LDY #$00! _) n$ ^, E0 c7 U
  765. LDX #$20
    # }; M+ V6 L* F4 j, Z& ]
  766. LDA #$00
    6 L4 c( K& W% v$ S
  767. STA PPU_ADDRESS
    , T  l% d. g5 Y6 e+ l+ T( [& C
  768. STA PPU_ADDRESS6 N; A) z) x: _4 w# H
  769. VramInitWrite
    8 f7 G  L! m' g* w- I
  770. LDA [Data_L],Y6 ^" C% _/ f. S# {
  771. STA PPU_DATA; u3 c6 k) `( K" n; F
  772. INY
    5 S$ r2 t3 w( k
  773. BNE VramInitWrite# h9 |( P: {! g& l% w7 F! p2 X
  774. INC <Data_H
    3 e# x8 D: g/ V/ q  N( t( I- u
  775. DEX
    # A! ^2 }$ D. k, B" K  o
  776. BNE VramInitWrite" l9 y. h- e4 \6 _$ V* }: A: K
  777. .ENDIF
    " N  O' P7 B- c5 M* a9 l
  778. RTS' Y  A1 g6 [& C! C- @& l

  779. # Y/ s3 c$ I8 G
  780. ;==============================. C/ t+ U# }: x, o+ V0 I
  781. ;音乐切换$ g1 x4 X9 |; b. `
  782. Music_Play_Change
    + [# y( B& f: ^% Z8 z. @7 s* C: }& J/ n
  783. LDA <Key_Once
    0 I; L+ L1 b( C- S* m: m
  784. AND #$FF$ l, |8 m0 b, Y; c1 I
  785. BEQ Music_Play_Change_Check/ Y0 }3 E4 g7 _2 F1 ]! X* d( w

  786. ; V! ?3 h* ~# M. W" ?& ]+ L
  787. ;禁用音乐条刷新
    . d9 ~% {2 l$ \% J3 e: J' F
  788. LDA <Text_Disable_Flag) p, [: Q/ C: Q! A
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME; m: r9 V- N  q
  790. STA <Text_Disable_Flag
    $ q: ^$ s( y. W

  791. , g: W; f9 h* }0 r/ v- r/ n* ]! c
  792. Music_Play_Change_Check- S1 b- E8 A% G3 k9 s4 o/ a
  793. Music_arrow+ }& W, A  k& M# p4 [3 u) m
  794. LDA <Key_Once
    $ \% g9 V5 ?1 Z  n4 E! g8 j
  795. AND #$0F
    & V7 i8 D5 f6 f( z' X' i* z
  796. BEQ Music_Play_Change_End$ W6 b$ @8 t7 ~
  797. JSR Music_Track_Change$ f; E1 L2 D) ]/ j; G
  798. JSR Sound_Reset_Proc( r* _8 J* g/ u. ?6 v7 r% G
  799. JSR Music_Show+ B; j2 b. a! U8 |/ n, }" N
  800. Music_Play_Change_End
      {/ U' v  _* z) i, Y% `
  801. RTS
    ' S, |, e& k: U7 \6 Z! P/ E$ }: z

  802. ( C% ]  l8 W3 C2 c
  803. ;==============================
    6 `. W. d' J' o; i% r! q
  804. ;音乐曲目切换
    8 E) N  d) ?. |* M% `
  805. Music_Track_Change/ `* U' n6 _2 h  u% C! b! A
  806. LDX <Music_Item_Cur
    $ [& b- c# o0 ^9 C+ B' a8 R1 Y5 D
  807. LDA <Music_Cur,X
    2 \5 A1 O! a  F: Z' V
  808. STA <Music_Last+ r5 a9 S% ^9 F% j
  809. Music_Decrease
    + q2 z4 p& F' K7 g7 D5 X: T( f- Q) s
  810. LDA <Key_Once; B+ }, b' b2 c) [
  811. AND #$42) W3 r! V+ _" `' b
  812. BEQ Music_Increase/ |! J# ~$ G2 n" g2 h+ [
  813. LDA <Music_Cur,X
    9 ?4 X  m. a! i
  814. BEQ Music_Increase: x. v3 y4 W' \' a
  815. DEC <Music_Cur,X* F4 ]5 p: p2 o  L
  816. Music_Increase
    1 ^  `0 z& N/ D0 N6 D
  817. LDA <Key_Once
    ( H* ^2 ~. O* H4 r/ S+ _( r9 I
  818. AND #$813 d9 @4 s& t; K  j8 }
  819. BEQ Music_Decrease_10
    0 l+ _' U, c# J0 \* v$ l- f# G
  820. JSR Set_Sound_Total+ I9 c  g! @; z$ s" b
  821. LDA <Music_Cur,X0 e9 n) ^4 P" o$ q' l9 t5 L9 \( q
  822. CMP Music_Total+ Q: q2 u( Z- [0 n
  823. BCS * + 4" o- X* I/ U$ {  g. r2 L8 Y  h
  824. INC <Music_Cur,X: j. [; B1 W. A4 K9 }, {% z2 f
  825. Music_Decrease_10
    ' J# i6 |4 K( U9 q3 U' V
  826. LDA <Key_Once9 U$ u' \1 E/ ]# Y* r5 X7 P1 W
  827. CMP #$04
    ) `1 f, o9 _9 D; R
  828. BNE Music_Increase_105 O$ Z( B! q2 Z3 v
  829. LDA <Music_Cur,X
    1 K; T" E9 s8 p. _3 v
  830. CMP #10
    5 F, P( T+ i$ b
  831. BCC Music_Start_Song_Min
    $ y4 Q* o, E: S3 _( l8 a
  832. LDA <Music_Cur,X
    & S/ K- ]4 a  G2 n5 X. r8 u
  833. SEC
    , K$ K# j2 L; e7 D3 [, Y4 W
  834. SBC #10
    9 M7 m9 D2 g/ b+ [
  835. STA <Music_Cur,X
    9 Y7 I  {; G8 M/ }6 F, g( b. h; L
  836. LDA #$00
    / I* a$ O+ ?5 H. c. l" g& y
  837. BEQ Music_Increase_103 }+ Q* N7 D# {6 q! p
  838. Music_Start_Song_Min
      O* T3 ]. E7 N/ Z0 V
  839. LDA #$007 H7 }- U2 c1 B2 ~% [4 `
  840. STA <Music_Cur,X
    5 h6 W8 `/ v9 K7 Z/ H, p
  841. Music_Increase_106 W( G0 {" e4 l9 g1 f( Q' Y
  842. LDA <Key_Once
    : |) h7 X8 \# f5 e* G8 ~1 Y) B0 b
  843. CMP #$08! n( x  E; x5 E3 e7 `
  844. BNE Music_Track_Change_End: t0 b6 o( _1 J, ~) _) o: {' D
  845. LDA <Music_Cur,X
      `5 J" ?/ \5 ^! k: u7 r& t
  846. CLC: t* s0 B8 `) L
  847. ADC #10
    3 E7 K7 Y3 O: ~; U  f) _6 X
  848. CMP Music_Total+ x0 O% n+ W0 {$ m
  849. BCS Music_Start_Song_Max2 w0 p" u: e) m& W
  850. STA <Music_Cur,X
    + A( x& ^4 K8 i) p4 q
  851. LDA #00
    / c7 M, v! k& o" W: ]. C& A
  852. BEQ Music_Track_Change_End* b0 j% C8 h8 H# u) ], `
  853. Music_Start_Song_Max% I1 H( E- [! A2 [
  854. LDA Music_Total$ ?% ?! E0 O  ~
  855. STA <Music_Cur,X' a1 S( K3 u/ |/ Y/ M" `
  856. Music_Track_Change_End
    * W+ T3 Z* o2 Z2 N' Q& {
  857. RTS
    : e8 Z: T) z% Q. d6 Y1 c
  858. 5 B' K3 J( S( I) I) V3 f" Z8 \% y% X
  859. ;==============================
    & M4 v; N8 I, u0 ?" D
  860. ;按键处理
      P" B; B9 R( w9 L) Y8 `
  861. Key_Proc
    $ d7 s6 d  G4 K
  862. JSR Key_Scan, q. ?& g. z. I6 @4 d1 _$ e+ q' U
  863. LDA <Key_Keep
    8 I" X* F; t5 G
  864. STA <Key_Temp7 q* W$ n; q4 Y, T( ?
  865. JSR Key_Scan) S7 B, ?8 r% J3 [. B* S1 l
  866. LDA <Key_Keep
    # Y/ i' z. H% D1 ?" V
  867. CMP <Key_Temp
    9 r$ y2 ~* M1 X
  868. BEQ Key_Get_Once  p4 L; H4 V: h7 o
  869. LDA <Key_Kemp
    0 T( P: E& k' V4 n0 j3 I: j: H
  870. STA <Key_Keep7 z6 Q3 i1 F* ]& H8 p
  871. Key_Get_Once6 A* S# q  O% @( Y: G
  872. TAY
    & c8 {! t* n! [2 g
  873. EOR Key_Kemp
    8 v7 }7 O' H5 ?! ?$ c
  874. AND <Key_Keep
    ! p2 S5 C7 r+ Y. D
  875. STA <Key_Once
    * M6 }) l9 p) Q! C2 \
  876. STY <Key_Kemp
    : `2 X; b* K8 z
  877. RTS( F( h$ V, W( k8 V% i* P
  878. ;------------------------------  j+ z# P5 |3 r9 W8 n" k
  879. ;按键扫描
    9 I: f3 D+ `6 I/ F! y( w
  880. Key_Scan
    . }- m2 f; y# G, e& P: U6 m! G
  881. LDX #$014 E' m; [+ p6 X5 h& Q0 F, S( U
  882. STX JOY1_FRAME" w+ _* p; ^9 ]" V7 {; {4 T) u
  883. DEX
    . v. _! j5 F& l: L
  884. STX JOY1_FRAME6 z1 z' C! ^4 U5 c. I7 z4 J. d
  885. LDX #$08. v4 \( W( Z/ s" e* l0 T+ h
  886. Key_Value
    . k$ C8 h, ?  H' w6 j) t* t, C
  887. LDA JOY1_FRAME
    * F! N, v' O! K& C& M
  888. STA <Key_Getv
    : `& j0 P6 ?: ?8 u( G! W8 l
  889. LSR A
    " _5 i5 ], _) N& h" Y8 k2 l( l! y
  890. ORA <Key_Getv" s' ?2 x7 w/ L; \) k) }, Z
  891. LSR A2 e) n3 S/ Z5 Q" @: L! C: i6 S6 `
  892. ROL <Key_Keep8 {5 R. r4 N* W6 r; K6 x
  893. DEX5 W$ B' U: E8 @9 h4 ]
  894. BNE Key_Value6 }; R& s! Q8 T1 c
  895. RTS3 U0 Z5 C+ b% f! [

  896. , O" B2 I. H- k( }
  897. ;==============================& A: N, n+ U- Y: _" w" Q2 N
  898. .IF SOUND_BAR_SHOW_ENABLE( O# ~* V+ H( N
  899. ;音乐条显示
    + ?! \9 }4 C7 l
  900. Music_Vision$ L1 z5 B2 E2 h' {! q& {
  901. LDA <Text_Disable_Flag
    1 Q# e- R( F  `  E
  902. AND #TEXT_DISABLE_ITEM  y& E  h" B, Q! i' p8 I) j
  903. BNE Music_Vision_End. ~& f  @* V1 ]& o$ C8 C& u+ r
  904. AND #TEXT_DISABLE_BAR( R" y. S8 z( V/ n
  905. BNE Music_Vision_Set) v! z3 o3 [& ]/ L$ u; Z! w$ g7 u
  906. LDX PPU_Cur) f7 {) {) \  H  q% Z9 P' s
  907. JSR Music_Animation
    6 }+ T" d2 N( c3 h4 g" b2 C# X
  908. STX PPU_Cur
      I& f1 J! F0 {1 H4 F# ^
  909. Music_Vision_Set) ?/ t+ `7 N& T' i* w
  910. LDA <Text_Disable_Flag$ ^# \2 T5 f$ c3 w/ ?) u  ]) H
  911. AND #TEXT_DISABLE_BAR ^ $FF
    # C8 ^& e) ^8 E; L
  912. STA <Text_Disable_Flag
    ; S1 Z; A/ @' R% _. T# L
  913. Music_Vision_End# o; O2 H/ I1 e, o* ^/ v
  914. RTS1 J9 f, |/ O0 r( r/ A* t7 ?! `% b
  915. ;------------------------------, L4 e* V1 K8 o: k( Z' r5 d3 Z0 Y
  916. ;音乐条显示处理# o3 g/ o* X$ M* }. x! d
  917. Music_Animation
    + O/ P) X4 Q! _* l! u* T; s/ x2 U) T# {
  918. LDA #PPU_MODE_CNT_LINE, z, _0 E% e3 S$ ~9 M
  919. STA PPU_Addr,X
    : p, u' a5 s2 ^3 g" B
  920. INX
    # R6 |+ m9 L6 d
  921. LDA #HIGH(Sound_Bar_Pos)
    8 a5 [1 P9 p. ^
  922. STA PPU_Addr,X
    0 x- ~$ W5 H+ @$ `+ S+ Y
  923. INX
    5 l' H: G/ M( R% P, Q2 V  V; Y
  924. LDA #LOW(Sound_Bar_Pos)6 Z$ J' p; s# q3 F2 K! p
  925. STA PPU_Addr,X4 a  p& i+ c7 j& P; y* f
  926. INX
    & U0 N$ Z6 A9 L, d6 X
  927. LDA #$08* X% Y; G( s4 y2 Z( |
  928. STA PPU_Addr,X: k1 T2 K4 x$ E) D" V+ V/ k
  929. INX3 q3 l: U# e* [# {, F
  930. LDA Sound_Bar" p, E2 e/ R1 X: E9 K
  931. JSR Volume_Convert, C7 N4 u% g2 c: h3 n- J
  932. 9 I  }/ P+ n1 J
  933. JSR Volume_Set_Cnt# i6 I. t5 a' E% G- Z! o5 J/ ~( p
  934. LDA Sound_Bar+$4# ]8 K% U7 H; h4 J
  935. JSR Volume_Convert
    6 ^# n4 G9 ~$ F

  936. ! |" j) r8 d. F7 o0 f
  937. JSR Volume_Set_Cnt
    - X2 u+ ]% K5 _6 i4 E4 }8 _
  938. LDA Sound_Bar+$8
    & D$ T3 W- S% D; f3 r! y
  939. JSR Volume_Convert
    8 `; U" ^% H+ M! Z7 j' ?& N- ~! m% z

  940. , S' w' f7 A6 O
  941. JSR Volume_Set_Cnt
    & t4 W  L, x6 z# {8 F" [$ E
  942. LDA Sound_Bar+$C; B) a4 l5 ?2 W# Q
  943. JSR Volume_Convert
    ! B$ m7 r; \& h* E1 I4 F4 Y4 O9 i( k6 E
  944. 1 y. q0 _3 k7 O0 {4 V- {( M+ A+ Q
  945. JSR Volume_Set_Cnt/ N# o4 g' r. A

  946. ( h- t3 x, Z: Y9 T
  947. LDY #$10! |. J" e2 N5 ^, p. \- X) {
  948. LDA APU_STATUS
    & |4 W+ t# ?- b$ Q6 c2 e' \- Y
  949. AND #$10$ `; j3 a  p! X# |
  950. BNE Volume_Count* K' z$ o8 p/ ?9 K; B, D# Z4 D0 @  o1 b  |
  951. LDY #$00) ]. N  ?, W. y# p; X6 ?( O
  952. BEQ Volume_Count  {, Q# i. D  j0 E5 ]; A4 k

  953. # G, `  M: \, W+ f! V
  954. ;------------------------------
    6 q" S. O& m2 r0 t1 {1 Z; P' {) B* F
  955. ;音乐条处理4 L9 z& L, p' E0 j
  956. Volume_Convert
    4 m9 D, U; h4 R- P7 ^3 ?
  957. AND #$0F
    5 H% j6 e- S+ Q
  958. TAY# ?! V5 p0 z- y& i! B8 K
  959. Volume_Count
    4 F+ T, i: f6 ]1 B) e6 J' I% B
  960. LDA #$083 r1 B( a8 t9 l1 C" e
  961. STA Sound_Bar_Cnt
    + R$ @; h! M, J0 q7 ^! ^1 Q4 b0 N0 P
  962. Volume_FILL- _5 y/ @: ], _( W* m
  963. DEY
    * k% \) ?- x" ?6 q  w
  964. BEQ Volume_Half
    6 }+ U8 ]5 l3 h% L5 E
  965. BMI Volume_Empty. Y  q3 G  m5 C4 ]* H( D
  966. DEY" b1 O8 N* |/ w- Q( j8 [) N( g
  967. Volume_Full7 B* a' u  Y/ q/ J# R2 p" K3 M
  968. LDA #$16+ U. L# k6 m" I$ G$ ]4 n# b
  969. BNE Volume_PPU
    # n% C$ p) o9 c5 a( r$ @# S0 o
  970. Volume_Half' Z/ ^- Y5 W/ ^5 S/ A- M
  971. LDA #$15% N6 Z( {6 ~% l9 g$ Z8 ]* q* E
  972. BNE Volume_PPU
    * t. |0 t, x" p/ z
  973. Volume_Empty; y' h, K$ Z* e3 _3 \0 @' J% L
  974. LDA #$14
    * @5 n$ h- Z, c2 }
  975. Volume_PPU
    " A* i! Y" f. V/ U$ W- h5 A
  976. STA PPU_Addr,X
    ' x9 `- b+ d( ^! u9 [. `, U
  977. INX  n& g. _( h0 Z: ^1 q, G
  978. DEC Sound_Bar_Cnt
    , B* {- I9 Q/ L7 E7 f
  979. BNE Volume_FILL8 F1 h7 B2 o8 r% ?; {
  980. RTS
    3 k) _4 }, W2 \# e" V! Y" U

  981. : r; E* f7 o/ E. Z; S/ N5 e
  982. Volume_Set_Cnt  C2 C" {1 P% {+ N+ M+ P
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    ! n) U  G2 b9 c' i; @- A4 C5 M
  984. STA PPU_Addr,X& n2 `* O. F; }$ k! h7 P
  985. INX
    9 [: I! Q3 _8 _; N! w) k
  986. LDA #$08
    ' H! Z  \9 d* w# e4 O
  987. STA PPU_Addr,X
    % i3 q! T) Y9 F/ Z# g" @7 f6 B
  988. INX/ k* u' f0 \8 X& u$ ]! i" n
  989. RTS, _) R0 |' P3 u9 \  r9 r2 U* V/ s0 K1 V3 c
  990. 7 m. K9 t6 e2 i# ^7 {' g% v
  991. .ENDIF6 v  I. y9 n! f! E0 P
  992. ; N1 q& C) X6 T! o3 u
  993. ;==============================2 u& h0 q3 X% j) }0 E% H* e
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入- k6 ^2 Q1 w1 ]0 W2 N
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式: K) }( k0 @" T5 e  g" H" E$ S
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    % c  v, J& x# J$ F
  997. ;------------------------------
    " H: x: K8 R, _) n
  998. ;PPU处理. F, j9 D, L/ ^. K3 s& o) r
  999. PPU_Proc
    5 m6 A/ C$ w6 b/ b# C. F$ g+ S
  1000. LDX PPU_Cur, |5 W2 h  j% Y4 O9 a9 v
  1001. LDA #$00
    . m# x; M% {! D
  1002. STA PPU_Cur
    1 v! C/ L; A2 k" Y
  1003. STA PPU_Addr,X1 i6 l! ^( ?% I8 e
  1004. LDA PPU_Addr
      e. T, T- o: v8 p
  1005. BNE PPU_Proc_Beg
    % g+ W# t- i  H$ r% l! D, _+ q/ ?% j
  1006. PPU_Proc_Ret
    % K9 w% T1 h/ u2 N$ }, m8 q2 Q+ @
  1007. RTS
    ; a1 W4 V1 @+ ~  i: W
  1008. ' _" w: h9 ]$ U: x. W
  1009. ;------------------------------6 k' |: `& e9 Q. O
  1010. PPU_Mode_Return_Cnt  ;转下行模式: f0 ^  i+ r# _, x# {8 {
  1011. INX
    " S8 J2 R$ X9 ?
  1012. LDA PPU_Addr_L
    . I' w, H5 q- z$ e- |& N7 [
  1013. CLC
    ) n( ~) j- L! R5 x4 o. N$ `; {
  1014. ADC #$206 l  e8 M  ]. h/ d9 m- ^
  1015. STA PPU_Addr_L1 s% J( ^3 P! Q- w! w
  1016. BCC PPU_Mode_Return_Cnt_End
    9 B  T5 A; Z- P3 |9 R
  1017. INC PPU_Addr_H
    1 J) |1 c/ I. m: t( F, M- s
  1018. PPU_Mode_Return_Cnt_End
    0 X0 \% A# Z; e, h. d9 _4 w
  1019. LDA PPU_Addr_H; O$ Z1 K; X0 o) m% i7 e
  1020. STA PPU_ADDRESS' J( ^3 X9 j: Y/ W
  1021. LDA PPU_Addr_L
    8 E/ ?. V2 k/ D- A8 B
  1022. STA PPU_ADDRESS
    : K# o* d9 E1 I/ Z1 x
  1023. LDA PPU_Addr,X
    4 X8 E+ M: h7 ^9 D7 `3 a3 \+ A
  1024. TAY
    " r0 |( Q1 e$ O# X
  1025. PPU_Mode_Return_Cnt_Write
    * A. e! i7 V' G
  1026. INX& x9 S- P4 f4 O3 k) I+ v  L
  1027. LDA PPU_Addr,X
    5 S6 I4 b5 y9 Y$ G1 J5 D% X( s# a. q* U
  1028. STA PPU_DATA
    ( f. p$ C! f, j0 t# s
  1029. DEY
    ; @3 V- [2 `: @0 M" f3 W; V6 `$ X
  1030. BNE PPU_Mode_Return_Cnt_Write
    4 f+ O# S* d+ B0 p5 }/ P* G" \% [
  1031. JMP PPU_Proc_End0 C0 Y- C" \% K9 o* {

  1032. " i* N# {. f3 Z) c8 w8 A7 v9 v: H0 H
  1033. ;------------------------------) m, `0 W9 X. c/ s, i
  1034. PPU_Proc_Beg  ;处理开始
    7 |+ Z  y& W* ^5 ~% b' |- B
  1035. LDX #$008 U5 G9 m2 R; {
  1036. STX PPU_MASK) o) j: l* V2 j2 k( l7 W% e+ A
  1037. ;------------------------------) y& d! K3 G9 F: L3 \
  1038. PPU_Mode_Select  ;模式选择# q, v7 E; H( s: b) J6 g. y
  1039. LDA PPU_Addr,X
    5 [5 M5 D# X+ ]6 q" X8 _+ |
  1040. CMP #PPU_MODE_CNT_CLEAR
    5 X3 O' @& u6 \& b7 E2 f
  1041. BEQ PPU_Proc_Clear+ n, b4 ?: z0 y. W" U: x
  1042. CMP #PPU_MODE_CNT_LINE( R0 c8 b1 O: D4 r% d- D
  1043. BEQ PPU_Proc_Cnt_Line
    0 }: o9 f6 S: j" T+ j' i  N7 w
  1044. CMP #PPU_MODE_CNT_LINE_NEXT5 I  f0 r: N2 s
  1045. BEQ PPU_Mode_Return_Cnt
    * H7 w$ b+ j3 u4 d8 D' d
  1046. JMP PPU_Proc_End_Write& Y6 N' @( `0 a1 w/ N. i
  1047. ;------------------------------  F, S/ F0 f. p5 s8 j: j" F
  1048. PPU_Proc_End  ;单行写入结束
    : h& e/ H; o; y
  1049. INX
    ( o5 d+ ?( }! M: m( B
  1050. LDA PPU_Addr,X% v$ B9 r7 j; S1 q8 }& e& T6 _" J
  1051. BNE PPU_Mode_Select
    ) T9 j9 n4 H) u
  1052. STA PPU_Addr
    & c6 x! q# K3 R/ r3 a
  1053. JSR Update_Palette_Color0 q2 t" W; R! I  n9 \, M  [
  1054. ' G4 _" ?, U- O( U) Q
  1055. PPU_Proc_End_Write  L# w0 }& q# ?3 `
  1056. LDA #$00
    ( ], v' v. i. H$ B" O
  1057. STA PPU_ADDRESS
    : T3 V) A" B, A' S* _
  1058. STA PPU_ADDRESS
    6 ~' e" l: k' I- C
  1059. LDA <Text_Disable_Flag
    8 T1 P  R8 r6 [# ^& X
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF0 {' x3 R. T2 e3 X$ u; F
  1061. STA <Text_Disable_Flag
    + \$ D  u: J6 O6 H6 {% \6 w- x
  1062. LDA #Scroll_X
    : G( V* M( R* X% u" S8 j
  1063. STA PPU_SCROLL
      J( X  ?/ C* p( d: n6 q
  1064. LDA #Scroll_Y
    2 y5 g& X8 ?( ]0 A3 c
  1065. STA PPU_SCROLL
    5 s8 Y2 {; |2 H0 G" ]  o# b; v$ U
  1066. LDA Screen_State
    & B! A' x/ r! N% {. N6 z3 M
  1067. STA PPU_MASK5 Z, N8 q8 s' @
  1068. RTS/ I3 ^* S% [! i0 h

  1069. % {- _' T: a3 P
  1070. PPU_Proc_Clear# ?* {& L1 A5 ?5 _1 E
  1071. INX6 x6 x/ ^3 v1 x5 w
  1072. LDA PPU_Addr,X" d' T0 B9 u% ~+ u: O% F
  1073. STA PPU_ADDRESS/ t' t) p% v* J; g  R) q2 U7 B* L) z
  1074. INX, S! ]! B/ s8 d; v. Y
  1075. LDA PPU_Addr,X
    # r  \, B0 }5 Y& @  E
  1076. STA PPU_ADDRESS( D+ U; _0 K- Z- e9 q3 @
  1077. INX
    / Q6 C, Q" B' T5 R0 ^$ {; R8 g& j
  1078. LDY PPU_Addr,X  ?" w0 w8 |9 a: {- ^
  1079. LDA #$007 a, @% J, Y. a3 ?
  1080. PPU_Proc_Clear_Write
    ; z! v6 d8 B! ^/ R
  1081. STA PPU_DATA6 }) z6 r* j9 h
  1082. DEY/ ^9 V$ m, H/ W' L) f! ?
  1083. BNE PPU_Proc_Clear_Write
    * x) j) _4 A/ {. H
  1084. JMP PPU_Proc_End( B. V# D" X4 Q: a8 U

  1085. ; N- q) B* n( k; H8 m
  1086. PPU_Proc_Cnt_Line
    5 n/ t4 ^; \" d
  1087. INX6 S% h" ?( H! U; W) F9 ~
  1088. LDA PPU_Addr,X
    8 x% g4 ]* I: d: F9 Z. w. K6 Y2 d
  1089. STA PPU_Addr_H
    . K2 i& s" P# c8 y! S6 }
  1090. STA PPU_ADDRESS
    - P( m* `- d& K* k" \
  1091. INX1 s, V% v: f" V- p6 s
  1092. LDA PPU_Addr,X
    ) a& v9 r/ o* z- W+ ^
  1093. STA PPU_Addr_L2 C. `- ?+ B! H# G1 s1 c/ a& E
  1094. STA PPU_ADDRESS; m# S4 V7 h" W; k4 S! X# _
  1095. INX3 B1 `7 t4 |) Y
  1096. LDY PPU_Addr,X
    & I4 H' s( B) f8 M$ ^
  1097. PPU_Proc_Cnt_Line_Write% x6 d! j1 K, k( n, |; {
  1098. INX
    7 j( N+ r- d% _+ J! y
  1099. LDA PPU_Addr,X8 k% v! l$ W8 V& g0 Q
  1100. STA PPU_DATA
    * ^. X) E" a& ^7 b
  1101. DEY
    ! v4 o  @% |& k+ k0 V
  1102. BNE PPU_Proc_Cnt_Line_Write
    ' ]: U& M- D1 s: Q  L6 b9 b
  1103. JMP PPU_Proc_End
    # R- r7 p! D/ i9 K. f/ V) S' G* d* ?- }
  1104. 8 e8 R/ g  B4 K( C7 S/ x% l
  1105. ;==============================
    ' B) J* B7 N" a, i$ z1 N' M
  1106. HEX_To_Dec;十六进制转十进制
    ; t/ U1 }- U- t: r+ f
  1107. STA <HEX_Data
    " m) @. j5 C: i: Y; w: `( T
  1108. PHA+ ], S5 M8 s- Q$ [0 B$ u
  1109. TXA" Z" v' \8 b4 ~9 q6 s: y
  1110. PHA$ _) b9 M# P+ D8 U* Z
  1111. LDX #$00  w. g% [# X+ a) Z* t/ E( B6 Z. G
  1112. LDA #$001 s" z0 ?; ~9 r
  1113. HEX_Cln
    1 V$ S$ n0 z- k, l' g6 X& a
  1114. STA <DEC_H,X
      b5 T7 M7 s3 W+ [& w
  1115. INX2 G; `: |% l! H! A, Z* o+ X
  1116. CPX #$03
    6 O- @7 a" w9 ~- R2 |5 V( r
  1117. BCC HEX_Cln
    ; `  L8 V  B3 Z0 j5 V+ c
  1118. LDA <HEX_Data5 y8 ~3 G; J8 `/ S# U7 ^/ M9 ]4 t+ M: k
  1119. ;------------------------------+ {4 F# u  [* t5 f+ w8 l
  1120. HEX_100( z" G5 k% H$ [2 J
  1121. CMP #1002 h1 h2 l; W: \( c& t
  1122. BCC HEX_10
    4 v3 z6 _  ]7 D# K0 I+ E' s
  1123. SEC$ x: c$ @0 `" O+ B& A' O9 K
  1124. SBC #1004 a% b: v5 W! X! h
  1125. INC <DEC_H
    ; ~3 M6 O! f! Z% ]
  1126. BNE HEX_100  @. w0 l; z9 A# g3 O+ I
  1127. ;------------------------------
    # S: `. ^9 {% v: I1 \
  1128. HEX_10
    4 ~3 G* W. B5 T
  1129. CMP #108 F9 D( y( j# B
  1130. BCC HEX_1
      \; u) n' }/ M' H6 V" q
  1131. SEC9 g4 M7 p* w2 U# f0 R
  1132. SBC #10
    % g/ j2 g: C$ C9 m2 t
  1133. INC <DEC_T
    . g3 A; B3 Z) ?! j) _
  1134. BNE HEX_10
    4 C  B! L3 Z# i( b$ \; k
  1135. ;------------------------------
    $ a+ c+ C$ P8 |7 s# S; v
  1136. HEX_1- c' M* s8 c, I' {5 J7 i$ W
  1137. STA <DEC_L4 q7 r2 p2 [0 p
  1138. PLA* h& L; b8 k5 x' ^! Y
  1139. TAX6 {, }$ R) ~) E1 f* ^. T+ s/ y5 n
  1140. PLA
    ! H! |9 G0 t' X. Q& f2 r8 A, G
  1141. RTS3 b4 O5 P$ P8 H% {7 E/ b

  1142. 0 ?  s1 M/ T% H7 o
  1143. ;==============================
    - `; _8 j& y" Q3 }2 `
  1144. ;音乐曲目显示
    * ^% p. t2 d) P) y9 n7 m
  1145. Music_Show
    $ f* b6 f9 X! u4 u$ ?$ \0 p- ~! t
  1146. LDX <Music_Item_Cur8 P! z* V' l% S" k. O3 h  p5 H, n( I6 [
  1147. LDA <Music_Cur,X( N2 ~5 w% T/ q+ H& F4 _; C
  1148. CLC
    , e8 p- n# |* A, K, D4 [$ w
  1149. ADC #$01
      K- L" E1 A6 \
  1150. JSR HEX_To_Dec
    ! x; {3 Q+ g; }/ K
  1151. LDX PPU_Cur- d  r6 i  E" S! Q- z, C+ ~
  1152. LDA #PPU_MODE_CNT_LINE8 ]4 C7 f# ?( D0 D( g' o
  1153. STA PPU_Addr,X& I1 n  p% T6 E& V( u$ J
  1154. INX/ V( ?4 t7 o, Z1 R2 t
  1155. LDA #HIGH(Play_Index_Pos)
    : u5 V& m; I8 ?( [# k( [
  1156. STA PPU_Addr,X
    + o. W3 U1 q3 X6 v( V3 h
  1157. INX
    / J, W, r- ?* T$ g- \& O" ^5 v
  1158. LDA #LOW(Play_Index_Pos)
    % N) ^6 _1 H3 r
  1159. STA PPU_Addr,X2 J; X( R! k! K' N% U* B' z" n
  1160. INX! y6 v6 a/ [5 `& L" T
  1161. . K) p  M. i) C% X& B; }
  1162. LDA #$07
    5 k* @$ S& C5 C, m
  1163. BNE Music_Show_Length
    ! |! Z1 `8 \/ N( R9 G
  1164. 5 N' P& Q7 C( a8 R; x$ Z7 o0 M0 G
  1165. Music_Show_Length
    8 f2 y" X' R6 {: N7 z6 B
  1166. STA PPU_Addr,X. W) I7 w. a6 m6 N1 v$ d0 k
  1167. INX
    & \5 Y# V5 d4 v! c3 T
  1168. * f4 p3 {7 ~- t( b# Y* y1 S( M' n
  1169. LDA <DEC_H* H! f4 M: e% Y
  1170. ORA #'0'
    + {  H/ B4 P* ~3 M' r3 E% v
  1171. STA PPU_Addr,X
      v! b9 h+ A2 F# ~+ i+ t7 b8 b
  1172. INX
    % M5 o) [+ x' x) [/ p
  1173. ; B$ `; E2 f* h: c
  1174. LDA <DEC_T
    - \' n) D' ]$ T- H2 p+ e3 @* }, A* d
  1175. ORA #'0'
    9 d! h) [6 K2 Z
  1176. STA PPU_Addr,X
    1 J0 G7 v$ Y3 q# ?4 Q
  1177. INX
    3 S) ^; |/ P& l9 c2 G0 L( V$ j

  1178. 1 C0 ~4 o6 t8 g, C! r
  1179. LDA <DEC_L( n5 r! t7 |2 \& _& r4 J
  1180. ORA #'0'; R5 u; ]7 a8 i/ ~* O; I
  1181. STA PPU_Addr,X
      p" |+ p# C0 M$ ^- ~
  1182. INX0 `/ C" R7 M1 g4 v0 H9 N
  1183. + T& `8 l! `9 l/ A" Z
  1184. LDA #'/'
    $ c, g" x. k0 Z: V& O
  1185. STA PPU_Addr,X# v. A/ m9 @. A1 K* H' ^
  1186. INX+ |6 |4 H6 E! F  S8 A
  1187. Music_Show_Total
    4 a5 O/ b" M2 C2 y
  1188. LDA Music_Total6 ~/ i+ w) W- G* h8 ]
  1189. CLC# L# u" e! V; U% Z; m
  1190. ADC #$01! k, W) s. I7 X( Q* B, c' v
  1191. JSR HEX_To_Dec
    2 r" W9 P5 l. H$ l! ~7 x

  1192. 1 s) g( t7 A! W! G
  1193. LDA <DEC_H
    / d  n6 Z3 `4 M" X4 c8 G$ @6 k5 `
  1194. ORA #'0'3 u' [% I) i" W) K. W; [( C
  1195. STA PPU_Addr,X
    # P) J4 |5 i! o) t( }
  1196. INX
    9 V2 J+ H$ g4 w3 C* X
  1197. " d1 P9 {# `4 t: R9 E  y) C
  1198. LDA <DEC_T' \7 W3 Y& d7 B0 B% V/ _+ C
  1199. ORA #'0'
    9 @# g7 u1 B) F
  1200. STA PPU_Addr,X' }( _/ K& h- R9 u2 p; ~
  1201. INX
    + e/ h5 J% L$ s" {6 J( Y" ?

  1202. ! {7 v, K  M3 J! p+ l! c6 W
  1203. LDA <DEC_L
    % q. b" W+ V1 j7 u
  1204. ORA #'0'4 L, c; o$ D) F% X' P
  1205. STA PPU_Addr,X
    ! l* D2 _; s( ~. Q5 k- y
  1206. INX9 Z* w" n) U- `. h7 t3 T: d
  1207. + _. ^9 ~: ~- D' H& S( G4 c
  1208. STX PPU_Cur! L3 T' k/ ^$ v  D7 e$ C8 o" _
  1209. Music_Show_End
    7 g1 h8 S; v/ m2 n$ J$ [6 @  ]* m$ R
  1210. RTS' d1 t- x6 q  \& ^+ F4 f$ ]# B5 A

  1211. ) k; X) K$ N0 T, t
  1212. ;==============================( Z% {7 l' J5 k2 f! t- M8 ]
  1213. Time_Show;播放时间显示3 p8 R6 U7 B$ [; B' H" `' N
  1214. LDA <Text_Disable_Flag0 A" X8 G! H- o8 u5 r0 o
  1215. AND #TEXT_DISABLE_ITEM$ d( i' i& I* `0 `5 a7 z
  1216. BNE Time_Show_End
    $ m7 P. g! z( `' w8 |
  1217. AND #TEXT_DISABLE_TIME8 o  W* d4 V3 y$ b( O! s
  1218. BNE Time_Show_Enable! E4 _' X+ ^, x$ u

  1219. # A* ^- t, z: H8 g
  1220. LDX PPU_Cur
    8 L2 P/ `0 l; F# q6 y1 v8 Y
  1221. LDA #PPU_MODE_CNT_LINE
    8 p7 E/ h+ _' t& a: B/ V! Y
  1222. STA PPU_Addr,X7 H! J; P5 N5 {5 a
  1223. INX
    : P0 M# p. G! ~" X) A. h
  1224. LDA #HIGH(Play_Time_Pos)
    ! \4 B8 U0 v2 ^( U$ g
  1225. STA PPU_Addr,X
    ; u# c+ |! h1 \7 E3 ~  {( p
  1226. INX3 g5 }, a- M; W( G5 B( v9 D
  1227. LDA #LOW(Play_Time_Pos)/ ^( P' v8 E$ O: O' k" N. R3 P
  1228. STA PPU_Addr,X6 b5 e- X  E9 t, C; R6 T: ?, Q$ G
  1229. INX
    ' e; Z2 f# |: W& p5 J
  1230. LDA #$08# R- d2 K- _% F* K' [
  1231. STA PPU_Addr,X
    ; e, U2 ]9 F+ h5 m& }- P/ \8 ~
  1232. INX
    , }( P: C. a: Z, }, S' m8 s" C
  1233. Time_Show_H
    2 U' D/ ^" E1 r4 y: i9 z
  1234. LDA <Time_H2 z/ }. H6 @9 y  C
  1235. JSR HEX_To_Dec& ~$ _/ M/ N9 W- Q9 V& O1 u9 g$ ]
  1236. JSR Time_Digit
    " o* D9 H; b. Y0 r. Z" c. v
  1237. LDA #':', F$ R7 R( X7 r) {1 m
  1238. STA PPU_Addr,X0 r# h; m; ?3 @9 X7 X6 G( A( V- N
  1239. INX
    % l! x8 p, u7 X
  1240. Time_Show_M
    $ D1 w& ~  B2 r* \
  1241. LDA <Time_M
    $ i5 e/ l  H9 W) k4 p/ k
  1242. JSR HEX_To_Dec5 m/ s  I' Y0 p* u
  1243. JSR Time_Digit
    ; J$ w: n. r2 U+ }" r
  1244. LDA #':'4 h: B7 F% c* B# |1 w
  1245. STA PPU_Addr,X
    , j/ P, I% b& ]7 k
  1246. INX
    + C/ {. y+ {7 @4 `$ H4 n
  1247. Time_Show_S
    3 H% t# Y; D, c- z
  1248. LDA <Time_S1 h* m3 k; p4 `. h6 x
  1249. JSR HEX_To_Dec
    7 a( C/ {( g* y2 |/ ^* j& w  s
  1250. JSR Time_Digit
    ) _. N2 o/ O. M4 d8 w! q
  1251. STX PPU_Cur
    ( A. H- u; W2 r
  1252. Time_Show_Enable, Y$ A% d; Q0 ^  R! T
  1253. LDA <Text_Disable_Flag
    9 H& v/ ~* `4 Z/ Y* k. S& b" x
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    & e* z; R  l) U" p4 C' q
  1255. STA <Text_Disable_Flag+ M. P4 b) b9 _, Y. r
  1256. Time_Show_End3 Z% O6 v2 Q! w3 g* B( X6 `
  1257. RTS# O* Z7 |4 ^  Q" R
  1258. ' z5 b4 C; g% d+ K' ?. Z6 B$ P' P
  1259. Time_Digit" y3 f5 c7 R8 O& i) l. ]9 B
  1260. LDA <DEC_T; J& h4 O) |0 D  L( E& ]  ~# ~
  1261. ORA #'0'
    + Y1 z& d: `/ [4 ~
  1262. STA PPU_Addr,X( J1 y, R  d: j& e. a0 O3 u
  1263. INX
    & e1 p- h: b# R$ M! A6 l9 C
  1264. LDA <DEC_L1 h0 [+ z( }6 |- R8 v( d# Y& R
  1265. ORA #'0'
    , P9 N  B  C. {9 E( c
  1266. STA PPU_Addr,X
    1 T0 u+ g" r+ o
  1267. INX
    * z7 e) Y" K2 A0 X7 p; E; n
  1268. RTS
    6 E$ C4 ?- o, p3 t. w

  1269. / A2 b8 K2 w7 Y# @; ]; |2 x
  1270. ;==============================' l2 s6 j8 D7 U; K+ |. |
  1271. Time_Count;计时
    3 }$ f# i$ j8 [- `; z5 B
  1272. LDA <Music_Stop_State1 e7 g5 X- z: F' I$ ?7 `2 @8 C. T3 P
  1273. ORA <Time_Wait_Cnt
    9 o. o+ F8 ^8 ]2 \/ }6 @. F
  1274. BNE Time_Count_End* O& C* }1 Z( m' P
  1275. INC <Time_Cnt
    ! g1 X5 n* m( Z2 O8 A% d  S9 @
  1276. LDA <Time_Cnt3 I5 l6 |6 G* N, W# _  V0 c
  1277. CMP #604 a1 W) `. Q% N. v0 i. b. M$ q
  1278. BCC Time_Count_End
    ( X; ^% M  ^' @+ s- j
  1279. LDA #00
    7 [- |0 c) W! z* ~7 {! g, E  Q4 F
  1280. STA <Time_Cnt/ N. S. a* I; c0 F( v
  1281. INC <Time_S3 L7 {, \" z; J" O$ y
  1282. / F7 ]" b: ?: C
  1283. Time_S_Cnt, I6 P  x) ?3 ~* C8 c
  1284. LDA <Time_S
    + J( T! N1 B/ q- l( E
  1285. CMP #60* l1 c3 |6 m4 p* a" S2 O. E& z$ ?
  1286. BCC Time_Count_End
    5 X. Z1 u$ T% ^: b% @7 Q9 K! @
  1287. LDA #00& Y' d5 g' D* A% o6 ]
  1288. STA <Time_S
    ( A0 `2 v0 A3 l. h
  1289. INC <Time_M
    0 k  s% T7 T/ c1 C& z
  1290. 1 ~1 o( _) o" Y3 s4 Q0 k
  1291. Time_M_Cnt
    4 O. \2 h- O/ B
  1292. LDA <Time_M
    ' f$ h% _" X( y2 o, i4 H
  1293. CMP #60; M) ]6 S$ M  E  L
  1294. BCC Time_Count_End$ g6 O3 b" e0 \& L$ }9 r
  1295. LDA #00
    $ f$ i* l* G7 X! G  K: I
  1296. STA <Time_M1 i1 x8 v/ R9 Y! B6 H- [& s% w. v
  1297. INC <Time_H
    , V! |6 B; t  k6 u6 n! h1 W
  1298. 4 @9 ^/ q# F5 w  H
  1299. Time_H_Cnt* X0 H) S. e* v
  1300. LDA <Time_H% q. i. K( q4 Z
  1301. CMP #24
    3 b! b, b7 I7 n
  1302. BCC Time_Count_End
    % H5 f  ^. ]+ f: Y* l
  1303. LDA #00
    . S. b: W+ E' ~0 X( p+ ?, ]
  1304. STA <Time_H9 {% G) z' j! B& a; n5 s6 Q

  1305. # H( H9 M0 B* C& O, y3 _7 G
  1306. Time_Count_End3 F" t& r# P. f  x& f  ~
  1307. RTS/ e" Y9 Z2 E& H9 T3 K; q$ A
  1308. , ~8 W5 B. d0 p' ~. H+ a) u0 }
  1309. ;==============================
    0 B8 e& j) M9 u  t' X& b
  1310. Time_ReSet;播放时间重置
    4 Y+ ~$ F% H6 @: c. T9 ~& q
  1311. LDA #$00( o" [  u2 O1 U' C3 W7 X
  1312. STA <Time_S( t9 }# C- J8 R
  1313. STA <Time_M " l6 I9 k! \% g5 p* W9 j
  1314. STA <Time_H8 m" f4 f, x, u+ [- R: P
  1315. STA <Time_Cnt
    ! Q$ g& p& ?: X
  1316. RTS
    9 w4 C& ^5 |) g0 f5 z: _) i; A- x5 ]

  1317.   p4 C) F0 C# {1 h6 V& |8 e/ Q
  1318. ;==============================
    . n4 P, ?( U$ G( D
  1319. Music_Bar_ReSet;音乐条重置
    ( x7 m! L( b9 k" W) B
  1320. LDA #$00) D! C: D2 Q' c8 L: G) L( T
  1321. LDX #$00- Q: G" z  a' e
  1322. Music_Bar_ReSet_Set
    ' V" Y3 ^7 p8 i5 S
  1323. STA Sound_Bar,X. r( `3 {; @' p! `- R& Q# D
  1324. INX
    ! S! P/ p& ?& c. z! S) F
  1325. CPX #$10
    9 n6 t) X2 ]% c" T3 b1 W$ k1 @8 B1 L
  1326. BCC Music_Bar_ReSet_Set5 B" j1 r& h! x9 ?4 W
  1327. RTS
    / e( ]% ]- Z4 T1 `

  1328. % P/ N3 E% N4 \! F' D/ `
  1329. ;==============================5 S5 a7 W, q  J' `
  1330. PPU_Data;PPU数据写入
    . W7 y' X2 v* E+ j; a
  1331. STY <Data_L& J; u1 Z  t1 z
  1332. STX <Data_H2 K* \/ D3 w6 Y2 U8 }( `2 s/ F% o
  1333. LDY #$FF
    $ D. I" m" V# A6 e% ^
  1334. LDX PPU_Cur% I) g4 A- n5 q$ c) z. W! N
  1335. DEX
    5 I$ ~% A5 R, b& Q' O; ?
  1336. PPU_Data_Beg6 G% p, X( v8 X) I
  1337. INX
    # U+ y  p. \: m
  1338. INY; j8 P4 S6 N+ ?. w* I' n. Y
  1339. LDA [Data_L],Y9 \. h4 Q3 Y8 Y7 l
  1340. STA PPU_Addr,X
    # q" A6 n( O" i- y4 B  o! M" k
  1341. BNE PPU_Data_Beg% p  |$ f7 _$ e  ?& U4 I: X! v+ b- f. [/ L
  1342. STX PPU_Cur
    ) `9 i$ ~/ ~. w  c" G
  1343. PPU_Data_End
    ; s! b( B! r3 |: d% F3 }- F, a- q
  1344. RTS7 U/ U6 z( N( G9 b
  1345. ; Q! r5 k  M4 ?* S  N
  1346. ;==============================
    4 a+ O! J. W: R8 G0 h
  1347. Music_State_Show;播放状态显示
    3 z$ c: P" h3 f' B% V$ l. j
  1348. LDA <Music_Stop_State0 W: [+ e% r: d9 `
  1349. BEQ Music_State_Show_Play- ~% x- z; N: h7 T" j
  1350. Music_State_Show_Stop% x# W& ?4 _7 c' m4 Y& R
  1351. LDY #LOW(Music_State_Stop)
    + Z7 K* U$ [2 }8 F
  1352. LDX #HIGH(Music_State_Stop)
      I8 c8 M$ I" v8 G( ^1 u. p
  1353. JSR PPU_Data
    3 s4 m: t( `( I
  1354. RTS6 W6 _# x( N7 v
  1355. Music_State_Show_Play1 W4 d9 A# `+ h6 e. C8 q3 U
  1356. LDY #LOW(Music_State_Play)
    ; U8 A6 \' ~- Q
  1357. LDX #HIGH(Music_State_Play)
    3 a5 Q6 S9 u+ q5 d3 _  _+ _+ B
  1358. JSR PPU_Data2 Y8 n# `& y7 m+ B8 V0 |
  1359. RTS0 l1 u. Z( r* [
  1360. 3 A* Q4 o# K5 o& e: T+ X
  1361. .IF SOUND_BAR_SHOW_ENABLE
    9 `+ q& M3 }3 S. v
  1362. ;==============================) o1 v8 K( b4 l/ c% ]$ k7 a
  1363. Sound_Bar_Text_Set;标题与音乐条初始化$ t6 v8 b/ Z2 S1 \# K8 Y! D4 n
  1364. LDY #LOW(Sound_Bar_Text_Data)
    , o: K1 U: W8 @' r% @
  1365. LDX #HIGH(Sound_Bar_Text_Data)+ w! E2 G: d2 M2 \* s: X
  1366. JSR PPU_Data# B# G: H9 `' f5 P* ]
  1367. RTS
    - f3 v, |% Q8 J7 f& ]

  1368. , {1 e5 z% H; Y1 u9 P
  1369. .ENDIF
    8 K) r  \' _& n- }8 X% s9 \3 f! v
  1370. ) Z1 y! y( t. h2 ]3 N; b, q6 j" t
  1371. ;==============================+ c6 o* j: y$ G6 M% Q4 _" y
  1372. Set_NameTable_Attributes;设置命名表属性
    9 W7 b' M/ G3 b5 {
  1373. BIT PPU_STATUS+ {$ y1 z% t5 P: N
  1374. LDA #$23
    0 y& ^( ^' |+ X/ R: a" U
  1375. STA PPU_ADDRESS8 U9 q+ {5 a2 x" p, j7 w
  1376. LDA #$C0- q" `% y: v) B1 F) i$ [' A0 K
  1377. STA PPU_ADDRESS. H) \6 Q/ v' v; z* i
  1378. LDX #$002 Z7 P# i. W# i) Y; [' B+ n: o
  1379. Set_NameTable_Attributes_Write
    / s: M; _/ O7 e! d4 i2 S
  1380. LDA Palette_Attributes,X' G* B0 w& g, R: y3 q
  1381. STA PPU_DATA- ~3 b0 D* K  a- O. y; Z& v  \
  1382. INX
    0 [2 I1 x) w) {3 v
  1383. CPX #$40
    , N' E; v; c* V, z0 [9 P
  1384. BCC Set_NameTable_Attributes_Write
    ( a  |6 e0 p8 n
  1385. RTS" b: q, p# q* ~7 w% D2 w

  1386.   Q" Q& Z6 g) _5 G
  1387. ;==============================
    . X* _# o9 j1 m
  1388. Set_Palette_Color;设置调色板数据
    ' ^/ z7 x: z4 T# m6 d! {4 Y
  1389. BIT PPU_STATUS6 l" C  d. e' A
  1390. LDA #$3F
    . `; H0 }$ A. d
  1391. STA PPU_ADDRESS
    : _& V6 b" u$ t4 Q( g3 \
  1392. LDA #$00( M" v0 |7 F$ u4 K! y' |7 c
  1393. STA PPU_ADDRESS& D+ p3 x3 p0 I  l4 S
  1394. LDX #$00
    / [3 t4 W; G3 l, @3 g
  1395. Set_Palette_Color_Write) \1 D1 g* e( X. \1 z" a, W
  1396. LDA Palette_Data,X* n2 p8 y5 u! T7 D# r
  1397. STA PPU_DATA
    0 q3 {% K5 U% r1 P% v
  1398. INX) I$ ], l" ^) p
  1399. CPX #$20
    2 o. p- v- V! T
  1400. BCC Set_Palette_Color_Write8 U) [4 ^8 N" u. R3 C1 `
  1401. RTS
    8 i- Z0 F7 l) c7 W- H
  1402. 1 d# w5 T" X1 q' ~) ?
  1403. ;==============================  o5 x$ b. \9 y' F( F& [
  1404. Init_Palette_Addr;初始化调色板数据' i" v! Y, j* [$ ?% H% r
  1405. LDX #$00
    % }& C' F: v: M
  1406. Init_Palette_Addr_Write. J7 n. q4 }6 j% z+ M* \% }
  1407. LDA Palette_Data,X
    * J/ U' v: q. `6 X0 R
  1408. STA Palette_Addr,X; C" E; r* s7 p3 n1 v$ T( l
  1409. INX, m. l  ]8 x& _7 K
  1410. CPX #$20; j! o! d6 W# `. i7 {. f8 y
  1411. BCC Init_Palette_Addr_Write. q5 H% i# g2 g. ~: E+ b& b& m
  1412. RTS
    . s( u7 L6 K8 w7 C! r, J
  1413. 2 B* @3 l/ R2 X2 {5 z( v! e
  1414. ;==============================- P0 d* @5 U5 O# U1 t: j
  1415. Update_Palette_Color;更新调色板颜色
    ; a) a8 e0 |$ L* b# C( g% \
  1416. LDA <Palette_Update_Flag" ?3 |8 S3 P4 O2 f" g
  1417. BEQ Update_Palette_Color_End2 O' c/ [! k) Y; t# u
  1418. LDA #$3F
    7 r; w, N" y8 R, w* S0 \
  1419. STA PPU_ADDRESS
    + Q+ W( P9 |+ I
  1420. LDA #$0C$ m8 T9 f9 `2 o! t7 k0 T# W
  1421. STA PPU_ADDRESS% N1 c2 c- K% s, d
  1422. LDX #$0C  y& J- U4 ]0 U5 y5 u+ J/ g5 Q
  1423. Update_Palette_Color_Write) u; j# A. t* }6 T0 {/ _
  1424. LDA Palette_Addr,X
    8 i6 D& T- }$ `! p1 m
  1425. STA PPU_DATA
    5 J% W% W2 }6 }
  1426. INX4 g6 V+ J- q4 o- H7 Q
  1427. CPX #$14
    ! ^; q: L, }" O
  1428. BCC Update_Palette_Color_Write
    8 v3 o# Y: {# B2 B  k
  1429. LDA #$00
    " f- B; r4 e( n
  1430. STA <Palette_Update_Flag
      q+ _3 M" i+ ]" B3 K
  1431. Update_Palette_Color_End
    7 o: W. o- m' x% m! ?3 a* w% N
  1432. RTS) X/ X  a" ?: K& G  n! G7 z" s. l9 Q9 h
  1433. 1 N$ I: M! Y' {. X, J8 r" A4 S/ l

  1434.   t7 R* y( b& M- h# c0 e
  1435. Update_Sprite_Palette_Data
    + {# {) L2 [9 ~- p8 ]- c
  1436. .DB $21
    ! N1 }' L- E4 k9 o
  1437. .DB $21: b2 ~" u% B* u" N, C; C
  1438. .DB $11
    8 f5 w9 Z0 ?& j& j4 m
  1439. .DB $01
    9 |9 G+ m( ~" [  e7 O, J  m: w
  1440. .DB $01
    ' _5 W+ a' q4 p7 Z5 P0 @2 E( {# N) I+ ?
  1441. .DB $11& r* q- _# p8 e( T9 n6 _% j3 {
  1442. .DB $21- W+ g- W9 D3 x6 M  d, @1 y. ]
  1443. .DB $21
    , m; ~5 b2 s: x9 B2 F, m. w
  1444. .DB $111 _* O$ `1 N% H) a( v( A
  1445. .DB $01
    ( j* ^. Y3 h# Y& n/ O- T% L" ~
  1446. .DB $11
    3 s+ p1 t% a0 z* s3 V* ^% K
  1447. .DB $21
      Z; x3 ^* ]- Z0 Z( k( J% t" X
  1448. .DB $21
    3 [  d  R& ~, W2 A8 H
  1449. .DB $11  Y4 q$ u  |" c7 y
  1450. .DB $015 S: `) E3 r2 x
  1451. .DB $11
    ) Y- m7 g. T- e, c2 r; q6 k# ^
  1452. ;==============================
    - C) X4 v2 n1 R+ i5 k- y
  1453. Update_Palette_Data;更新调色板数据8 P% P* M! Y: v! R8 d' A9 R
  1454. LDA Nmi_Time_Count
    ) Q) C4 Y6 B9 C; t5 g9 s
  1455. AND #$08
    $ C% p: t0 s* N' d2 h; L
  1456. CMP #$08, N# P- a& C1 r; n, t
  1457. BNE Update_Bkg_Palette_Data, a. q6 i, r4 ]! a8 t8 q4 h& x$ x0 J

  1458. 1 [% q6 A. J4 B2 L$ p
  1459. Update_Sprite_Palette_Data_Set
    7 L. [5 e. P7 p- n( f3 w2 [/ P. x
  1460. LDA Nmi_Time_Count3 U6 n. C  w" m6 g
  1461. LSR A: Y2 Q! ~9 G+ `2 r
  1462. LSR A6 {1 Q9 E) b: p) E
  1463. LSR A4 _6 b! n2 a6 ]& N
  1464. LSR A. t( {$ E6 u1 I# _
  1465. AND #$0F
    $ |. D# F( D* K( F
  1466. TAX
    % s# L1 E+ M, n- ]  P
  1467. LDA Update_Sprite_Palette_Data,X8 D0 g, D" n7 h& N7 f" Q+ a3 E) j
  1468. STA Sprite_Palette_Update_Addr, R. e. I  Z7 c; m* \
  1469. LDA #$01
    6 Y9 x  x7 [7 O' ^! f6 `2 T" R
  1470. STA <Palette_Update_Flag; N0 o/ G3 [3 H4 H8 y1 R/ f+ R7 w

  1471. 1 q: A3 U0 b5 H8 y  n
  1472. Update_Bkg_Palette_Data; N) i8 g$ E2 l* F# P* h6 b; W
  1473. LDA <Text_Disable_Flag
    3 U+ V# [* `/ |9 M1 y& P3 |  T, [
  1474. AND #TEXT_DISABLE_RAM
    , N5 h& \( Y: ?' L- p
  1475. BNE Update_Palette_Data_End
    ( a* D. ]8 W2 \" q6 U
  1476. LDA <Music_Stop_State6 w' V* s% [2 E6 M
  1477. BNE Update_Palette_Data_End1 I4 X$ K8 G, k2 d
  1478. 4 E7 m" t5 I5 T9 N- d
  1479. Update_Palette_Data_Check
    ' M$ B. f; ^" l" Q6 V; Y
  1480. LDA Palette_Wait_Cnt
    % _- e% o5 S; }8 P* `* M
  1481. BPL Update_Palette_Data_Check_Over, d. d/ S/ D% Z7 M4 C3 `" I
  1482. LDA #PALETTE_UPDATE_INTERVAL
    0 ?& p9 g, c0 d' [
  1483. STA Palette_Wait_Cnt9 G4 b# s, _5 o, b8 x+ [. y
  1484. Update_Palette_Data_Check_Over
    6 G* A; a4 T. s0 r# v
  1485. DEC Palette_Wait_Cnt9 b3 C+ y, |3 ]
  1486. BNE Update_Palette_Data_End3 r  S+ {4 ~6 P! T" Q
  1487. % H0 I% m  N0 @3 E7 O" H- E
  1488. LDA <Text_Disable_Flag
    ! i5 M% p9 Y2 Q& M5 R
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME, G/ x5 p( W6 U4 V0 Y/ K
  1490. STA Text_Disable_Flag, v3 Y5 }' \+ p5 N" P! d
  1491. INC Palette_Update_Flag5 n; D$ |. R3 T* z' s$ U
  1492. ! q% [" t* I! }- h0 Y# Y& s* g
  1493. LDA #PALETTE_UPDATE_INTERVAL- y, d) r# x% H: h6 A
  1494. STA Palette_Wait_Cnt
    ' o9 z- E0 z" \* c% V9 D
  1495. 7 i# \# U3 F) v/ [
  1496. LDA Bkg_Palette_Update_Addr2 ?2 U  ^+ Y$ c* f& t1 d. K
  1497. CMP #PALETTE_UPDATE_MAX
    3 [' X$ C4 |. d4 [! C# v
  1498. BNE Update_Bkg_Palette_Data_Set7 D. I2 e7 Z! I. s1 x
  1499. LDA #PALETTE_UPDATE_MIN - 11 U4 L, t! t% r# ?. r, l
  1500. STA Bkg_Palette_Update_Addr6 P2 H, L; n/ ^: B1 K! K" F. Q6 A2 y& d
  1501. Update_Bkg_Palette_Data_Set  _8 R2 C1 f. t' G- h  ^0 C
  1502. INC Bkg_Palette_Update_Addr; ~+ T0 X* T1 U( ?. V8 S

  1503. % J8 B% g, B7 _4 I
  1504. Update_Palette_Data_End" I6 A! {. J+ j
  1505. RTS
    / U5 \  @7 [; T8 n7 Y+ H
  1506. 9 E+ N; z8 K& w
  1507. ;==============================
    7 v: b8 D! ~) V" P! D
  1508. Show_Music_Text;显示静态文本
    1 d' ?; _# B4 l" g, A8 N
  1509. LDX #$00
    ( N0 l+ \1 l9 D
  1510. Show_Music_Text_Set' R0 e, @, K3 G
  1511. LDA Static_Text_Data,X* }4 ]; e5 H9 s! ^) e1 _3 y. N
  1512. STA <Data_L+ c% R' Y9 l8 T" p
  1513. INX
    3 Y3 E( X# G% ~5 t, d
  1514. LDA Static_Text_Data,X% f1 s4 \3 H2 {" Y( N0 c
  1515. STA <Data_H
    0 {. d/ k: `& s" V  ~+ N4 c% @
  1516. INX
    , g% u0 m& F) Y* G( ^" n  z' n
  1517. LDY #$00
    2 G. c# h. F4 B
  1518. LDA [Data_L],Y
    : D. t2 N9 k7 k6 _" P! R2 h
  1519. STA <Data_Cnt1 `( F( }6 ]+ ]. ~2 N
  1520. DEX% ]5 k4 w2 i" l3 ]8 _
  1521. DEX
    3 i* V) h7 F& n: [, u
  1522. LDA Static_Text_Pos,X, Q$ {2 ?7 X) J4 B+ K- T9 y0 o( D
  1523. STA PPU_ADDRESS
    ) c: f4 H/ H% S9 a2 G& c8 |
  1524. INX
    1 W8 z  z! ?% M0 @
  1525. LDA #$20
    : `+ ?8 r, G: r  O" L9 N1 F/ n
  1526. SEC& U' w2 \% T: z0 A2 o* P0 r- |
  1527. SBC <Data_Cnt
    / M4 N; X% m2 d: ]
  1528. LSR A, @% V! U# l2 O/ z' F3 I$ \
  1529. STA <Data_Buf
    8 _! ^' j# t, Y6 p& j
  1530. LDA Static_Text_Pos,X
    # d) \' Y( M1 ^2 o, B; @
  1531. AND #$E0
    : B( [. B% o8 d  K) T1 i
  1532. CLC
    . N1 g, K! l+ u
  1533. ADC <Data_Buf
    0 V- l7 t/ e% T6 x2 s3 e
  1534. STA PPU_ADDRESS5 j! S5 v* m1 U+ Y4 u" U( q
  1535. INX
    / Q' }0 n- B& s& i  w% l: n8 S- C
  1536. Show_Music_Text_Set_Write( k- y# e* k% ~4 ]0 y
  1537. INY
    # `; [2 b: u: M# Z
  1538. LDA [Data_L],Y- G* `9 t" `/ `1 O. E
  1539. STA PPU_DATA/ M, F5 A3 F2 d$ [7 s* N  ?
  1540. DEC <Data_Cnt
    6 E6 b$ ~7 q0 Z. a, `7 \
  1541. BNE Show_Music_Text_Set_Write( G' m" {) O; R2 C# R7 `" O
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    : b) w: y5 K. T
  1543. BCC Show_Music_Text_Set2 R* {6 Z* B. |) F) T6 u
  1544. RTS
    ( ]) i/ P6 v6 X. W9 @3 g

  1545. 2 s$ e4 p  ~5 q" u1 P: ?; k  j
  1546. ;==============================
      [9 X* y6 ^7 i' z9 s. [. Z
  1547. .IF Track_Name_Pos;显示曲目信息# `: B4 ^& r/ d8 W6 h% o, L
  1548.   r& i, f, }; ^; u& P
  1549. Clear_Track_Info
    % p* J# Y- n- g, w1 n, c
  1550. PHA
    4 q; a- ]' n: q: e- N9 h& @
  1551. LDX <Music_Item_Cur
    % O9 k& y; ~+ Z0 I; [5 X6 }2 Q* q
  1552. LDA Track_Name_Addr_Flag,X
    1 _# r5 m7 }; c2 |% O# ]1 Z
  1553. BEQ Clear_Track_Info_End_Ex
    2 o: e0 T# ^( _) Z; A) J
  1554. PLA/ q- y8 q9 E0 m: |' c

  1555. 8 {) B5 T5 N  `
  1556. LDX PPU_Cur( H; S5 A  v* |4 v$ z
  1557. PHA$ M5 ]9 l9 q. c' c3 _1 _
  1558. LDA #PPU_MODE_CNT_CLEAR
      }; O. ?4 D0 R0 `
  1559. STA PPU_Addr,X
    7 a3 m) \( q3 ~/ a3 T. B0 q) L
  1560. INX# \, |, `0 p& I7 d2 O4 @  ]) p2 ^
  1561. PLA( N7 U* Z: _+ J  n
  1562. JSR Show_Get_Track_Name_Center_Pos6 \) X, `% W; z6 k
  1563. STX PPU_Cur5 ?& n2 d% v1 X
  1564. Clear_Track_Info_End2 Y) q) G- ?! [
  1565. RTS# \$ Y: x6 \8 L& j, q% E- A3 x
  1566. Clear_Track_Info_End_Ex
    % W# A8 i: t7 y8 m
  1567. PLA/ f+ P6 J9 G  x2 q0 z. l
  1568. RTS
    ' d, J2 M& @( ~
  1569. # j& M. u+ B' f' \* J
  1570. Write_Track_Info* r; ]  c% M8 P( G
  1571. PHA
    ; Q- k% N; I; p/ `' x1 |
  1572. LDX <Music_Item_Cur: H, `  J# G9 V3 R0 w7 _" V
  1573. LDA Track_Name_Addr_Flag,X4 m! d2 j( y' }+ a5 J
  1574. BEQ Write_Track_Info_End_Ex. s3 [  l" g) Q' n+ ~
  1575. PLA
    ; U5 v6 u  U) L4 k5 Y" }8 V
  1576. ( O2 ~' T% X6 t7 A6 e
  1577. PHA& B! r8 o5 x; |( p' {
  1578. LDX PPU_Cur
    + l+ X7 J+ }: Z( s( N! i9 m% b1 q
  1579. LDA #PPU_MODE_CNT_LINE
    * m3 K" [) h: O6 {
  1580. STA PPU_Addr,X
    # q( {: m; n1 P7 C& ~. [
  1581. INX6 V7 V" c% i3 G6 X+ G9 ^7 V3 x. K
  1582. PLA/ |- X7 Q/ `. |8 R5 `1 M' `( Z
  1583. JSR Show_Get_Track_Name_Center_Pos
    $ ~: T3 ]' C" n5 L; Q
  1584. Write_Track_Info_Data+ N" x+ k8 W8 e* ^
  1585. INY) N) }( J( ]) F+ E: Z: N
  1586. LDA [Data_L],Y) \! Q4 M9 t6 N: D5 _! G+ B
  1587. STA PPU_Addr,X  j  ~0 U; {( k$ F, s1 u5 x3 t
  1588. INX
    - e! g  h( o( n+ B
  1589. DEC <Data_Cnt4 i: n7 m& L* J- C: L* C* r1 J
  1590. BNE Write_Track_Info_Data
    # n% \( ?$ w  `3 y' N
  1591. STX PPU_Cur
    , O0 }) {8 d; W
  1592. Write_Track_Info_End
    - V8 g% v. j0 ^7 u
  1593. RTS
    3 [! L+ |" C$ s+ ^# c' z
  1594. Write_Track_Info_End_Ex% d  J4 o4 x7 |: K( V5 Z' {
  1595. PLA
    0 f. S" j, N9 l! l! {4 m
  1596. RTS
    6 h2 N7 W9 M2 s' g

  1597. 2 w8 Q+ F' }/ o3 z; L, k! T: ^% `6 E
  1598. Show_Track_Info/ @& V( d4 u5 l9 f
  1599. Show_Track_Info_Clear
    0 i& M) ?/ M8 l* v* F: O
  1600. LDA <Music_Last
    3 L; t: B" E+ Z1 [9 ~
  1601. ) E' `' d8 N# o. E( ?4 {7 |
  1602. JSR Clear_Track_Info
    ) ]5 I+ J' t' n! ~5 V3 B& ^$ c, m

  1603. - O$ ?. i  b7 ^6 A! R: b
  1604. LDX <Music_Item_Cur4 j9 \6 S4 t5 _  p
  1605. LDA <Music_Cur,X
    3 h. G0 S7 y( Z( e, F# P( r
  1606. JSR Write_Track_Info/ k9 ?5 I2 h% R3 }6 q
  1607. RTS
    ) N8 `- L6 A  d. s% S8 \4 I* ^

  1608. 0 ~) Q( y" i( i2 T: e) r; ]* C
  1609. ;==============================" y" w$ B  E' k. p$ T$ s( e
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置4 V/ d2 ~/ \. X% P% q

  1611. 7 M' {* }7 }) ~% q. o
  1612. ;取出集合名索引
    : p1 G% k* z" C5 z, Y: _$ ?
  1613. PHA1 p3 S0 Z$ H1 z& A7 D

  1614. 7 }+ k/ e* [# x6 J8 N* D
  1615. LDA <Music_Item_Cur* W% B2 E, V- i1 ?" L3 H
  1616. ASL A
    # y% G, z. T3 L
  1617. TAY
    7 X$ K0 W9 s- Z9 W
  1618. LDA Track_Name_Addr_Port,Y4 c* R7 L9 Y) @! P
  1619. PHA
    - {3 S( O% N7 q6 Y" f3 n
  1620. INY, T/ p& o) r; Z4 a9 `
  1621. LDA Track_Name_Addr_Port,Y8 V$ g9 p. b  g. s. @
  1622. STA <Data_H( g4 Q0 N2 }( i
  1623. PLA( }! a6 D6 s; j  u4 F: {
  1624. STA <Data_L
    ! m: ?2 c: b# J# }) ^6 \7 k4 a5 O
  1625. 5 |2 e$ j2 |6 a
  1626. PLA. M) y7 A$ b7 s* E* E. I' J' m6 w- F

  1627. : s7 j$ n$ O8 y; z4 P
  1628. ASL A
    ; C2 T$ r$ d% }# @. C5 O
  1629. TAY
    + ?. d+ P" e! J, C% ?
  1630. LDA [Data_L],Y0 A2 e# \$ w+ B
  1631. PHA
    / k' m3 }7 J' v6 r
  1632. INY
    + y  D  O! Y; U7 s
  1633. LDA [Data_L],Y9 t4 V; l) i* E, i& f
  1634. STA Data_H
    ( `! m7 j7 x# K3 D8 I0 k! `
  1635. PLA7 o6 [1 D2 r6 i, _4 u% Q: u. _' W* s
  1636. STA Data_L5 V* E- c, S1 ?

  1637. 6 T+ }. O$ t1 s9 Y$ [* I
  1638. LDY #$00  v$ @7 A; D" F
  1639. LDA [Data_L],Y
    ! t+ Q) X' U; k2 {! u
  1640. STA <Data_Cnt* {  t2 C$ G6 D) ?( u
  1641. LDA #$20
    7 A: W; \, c3 H0 T  J
  1642. SEC
    - H) Y1 b9 c* R6 d' `
  1643. SBC <Data_Cnt
    1 T: y1 \# y/ o& d, M5 `, O2 e% |
  1644. LSR A
    : T: @, j6 s+ g. ]9 k; d, l% A
  1645. STA <Data_Buf/ ?  Y9 X/ g% X8 X8 p
  1646. LDA #HIGH(Track_Name_Pos)
    ( f2 E) C3 K3 S- Q5 D6 \
  1647. STA PPU_Addr,X+ d6 c* [0 X4 H! m
  1648. INX. I9 ]( M$ r) l! d- D1 I
  1649. LDA #LOW(Track_Name_Pos)/ i3 R9 O  O) K; q- i
  1650. AND #$E0& m9 N' k. e' e- i
  1651. CLC$ H% I5 a0 @3 r! G
  1652. ADC <Data_Buf  R! Z# w: _0 _4 c; r
  1653. STA PPU_Addr,X! E- I9 I, z" b& P7 ?) ~" {+ F- t& p
  1654. INX  Q/ O* x! t9 T& n  U
  1655. LDA <Data_Cnt
      i1 e+ W$ N8 W8 u1 E& h" h
  1656. STA PPU_Addr,X
    # q- S5 V8 M7 F5 I1 w
  1657. INX  o/ n2 ~; @6 i0 r, q, M( w7 c5 u$ i
  1658. Show_Get_Pos_Center_End; J; c6 t* b+ [/ f6 V. Z/ j
  1659. RTS/ \6 H3 V8 x, E* y: r$ O( v' Y
  1660. .ENDIF
    * K( h0 a+ w% g4 V& u
  1661. 0 ~* Y' n2 k& D' F( u0 Q
  1662. ;==============================
    - l% @4 f% E6 L4 n/ n5 K9 G# T
  1663. ;音乐端口清除
    ) z* _! g3 K. j5 V
  1664. Sound_Data_Clear
    ) ]0 M/ g% Q1 W+ H, j
  1665. JSR Sound_Port_Clear" i0 F% g: h: _. c; b4 L
  1666. JSR Sound_Ram_Clear
    6 s6 h0 T- l5 m
  1667. RTS" K+ E2 ^2 b) ?$ k
  1668. 8 u3 |. A* {; ]# j& c
  1669. ;==============================' z0 K' y6 G, h  J9 m/ W( c
  1670. ;音乐端口清除* W1 c* F0 k6 k  K! B% K' D
  1671. Sound_Port_Clear
    - {  X! d, u5 @
  1672. LDA #$000 g" \6 j& r7 V4 \
  1673. STA APU_STATUS, q5 y% b! c- o- l
  1674. LDX #$00
    % |; b! M/ K# h# L- v
  1675. Sound_Port_Clear_Write
    3 a: U- l- T: A3 P; T
  1676. STA $4000,X
    8 u8 G% N* w! I/ e6 U
  1677. INX
    ' x, C* |9 E$ l& A) ~
  1678. CPX #$14
    ( F( V& L8 [  Q8 J8 g* L
  1679. BCC Sound_Port_Clear_Write3 U7 Q4 ^+ C( P9 Z9 [! k5 t
  1680. RTS$ ~; f4 p0 `2 M# v8 i

  1681. / C0 t8 y. D8 d1 }) Y$ T0 k
  1682. ;==============================
    * M; c7 s4 B6 G, t$ b6 t
  1683. Sound_Ram_Clear;RAM清除4 G, V$ e0 @8 W
  1684. LDX #$00
    9 M0 ^# k& @9 x: o6 L9 Z
  1685. LDA #$00
    - Z8 L) I7 d& Q; K2 W
  1686. Sound_Ram_Clear_1
    / O% P* o" ]# U# [) y) `
  1687. STA Sound_Ram_Addr_1,X
    & b6 I  t& x( b& `0 k. ^6 d
  1688. INX+ Z: \% f; d# a8 F" n/ q
  1689. CPX #Sound_Ram_Addr_1_Size( l# b; q+ Q4 k$ M+ i
  1690. BNE Sound_Ram_Clear_1
    ) W3 M! a6 s7 k% d- {5 h
  1691. LDX #$00* c" z$ `) Z; ]( Q! `% Y
  1692. Sound_Ram_Clear_28 q% f4 _9 F+ t! s; R
  1693. STA Sound_Ram_Addr_2,X2 N, V/ L6 {- A1 `; c
  1694. INX; \/ W# D1 ]8 L, F- O
  1695. CPX #Sound_Ram_Addr_2_Size
    . f  x4 J3 k! R2 s
  1696. BNE Sound_Ram_Clear_2
    7 G8 e+ z6 A' e; ~# n9 N
  1697. LDX #$00
    , D: i$ y$ ?/ M/ [+ H
  1698. Sound_Ram_Clear_3; V/ y$ ]9 d5 j9 ]& q3 F- j2 e
  1699. STA Sound_Ram_Addr_3,X1 b& R' B1 p1 ?- _5 T( ^
  1700. INX
    $ ^+ M5 X( |& H4 c6 c
  1701. CPX #Sound_Ram_Addr_3_Size
    . C; k& N+ w$ Y# [, g
  1702. BNE Sound_Ram_Clear_3
    * h4 u* }7 c0 ]1 X" `. |/ _
  1703. LDX #$00# M$ d5 M2 m  x3 E; n4 o
  1704. Sound_Ram_Clear_4
    / y% H! k6 L3 D+ Q# Z3 i
  1705. STA Sound_Ram_Addr_4,X
    ! |' B* q3 p) D8 ?
  1706. INX3 v& o+ Z9 r* n8 U; y% x; P
  1707. CPX #Sound_Ram_Addr_4_Size0 y0 W% @6 Y4 ]0 p: H
  1708. BNE Sound_Ram_Clear_48 M5 x1 C( D; c
  1709. Sound_Ram_Clear_5
    % G* j! G) \; |. p! W* ^( g
  1710. STA Sound_Ram_Addr_5,X& d! c, ?) e& |" I
  1711. INX
    " z9 X9 C# S, Z
  1712. CPX #Sound_Ram_Addr_5_Size
    ; @( m; [2 \5 D/ }1 n& L" F5 z
  1713. BNE Sound_Ram_Clear_5, a5 z% y& V1 @1 s7 A. L
  1714. RTS
    2 z" y$ x: @) J$ j
  1715. 7 N  j( r* P$ ^: E: N  \
  1716. Get_Music_Collection_Name$ |/ n7 T" B- o6 y$ m
  1717. PHA9 Y& a  N8 t6 h$ q) m+ b
  1718. LDA <Music_Item_Cur
    2 X! X8 [% G2 O, }
  1719. ASL A
    % w5 r7 ^5 W' j+ I2 V( y
  1720. TAY
    , x% y' q+ {. @" G3 l
  1721. LDA Music_Collection_Name,Y& F# r% U! c* H( i! X. v9 n
  1722. STA <Data_L% \/ c" v) |. E$ F9 v- P
  1723. INY& u- y' w+ X5 [( w: _6 a
  1724. LDA Music_Collection_Name,Y2 s5 X5 p, v: L7 `
  1725. STA <Data_H" j* o  @: D* Y
  1726. PLA( E% A4 s) p3 a5 w" i/ g' j
  1727. RTS$ z8 U" |. w' N3 w7 Y7 w9 I

  1728. 5 b! Z! D5 Y9 i: i2 o4 u- D$ T, w
  1729. Set_Sound_Total3 f5 Y# n, S# _* `' X
  1730. LDY <Music_Item_Cur% C# g4 K7 L' s$ M
  1731. LDA Sound_Total_Port,Y1 E0 o- Q7 s- R  _" F( w
  1732. SEC8 q- ?: Q- \. I7 v; w* J( A8 o: j
  1733. SBC #$019 C4 i) a# N9 x* s- a
  1734. STA <Music_Total
    ( G1 ]9 n1 {- K$ q" M
  1735. RTS
    : g, w0 b7 L0 x7 r4 o0 b
  1736. 8 A( B0 d4 o0 w* q6 z! C
  1737. Get_Sound_Start
    ' y+ s# e# J! N$ `, F. c) y
  1738. LDY <Music_Item_Cur
    ( m: r9 V2 y' O3 l7 M  ~0 P
  1739. LDA Sound_Start_Port,Y- r; L# V: i' l8 I7 W6 a: }
  1740. RTS* I  I3 a0 m: ]% e) Y* o5 g
  1741. 9 i; a2 Z) U# K$ T1 ?$ p- q* F
  1742. Set_Sound_Init_Port" x/ O/ W" t, d1 f4 n# w  D% ]3 j% B
  1743. PHA, a# u5 X' M9 m+ y
  1744. LDA #$20
    9 j( i7 p( V) o1 [1 \% l; Y9 q
  1745. STA <JSR_Addr_Op
    2 h0 L! q  X. Y# D, a3 T$ S% W
  1746. LDA <Music_Item_Cur
    ( v/ L* ^# M( o' }5 j
  1747. ASL A4 X, \1 V* h' C: Y" d
  1748. TAY) o# z+ V3 U: \; p) M
  1749. LDA Sound_Init_Port,Y
    6 ^+ f) N$ e0 R8 }  U
  1750. STA <JSR_Addr_L
    4 `# N1 L$ b- W4 c
  1751. INY
    / d! C7 c7 b1 r/ M# e$ ~1 }3 j
  1752. LDA Sound_Init_Port,Y- n! N! U" B- ^9 h6 o$ L! g" t- V
  1753. STA <JSR_Addr_H
    $ X4 e5 Y. C( a5 Y  \
  1754. LDA #$605 }$ e! j! F! i/ K$ O9 A; P( w/ @
  1755. STA <JSR_Addr_Rts
    " J$ I1 C0 \" E, B+ ^1 Y  L$ x  c
  1756. PLA8 w1 @) D5 C4 \0 }' h
  1757. RTS
    0 W8 c3 L5 i/ g% d8 l! ^: V3 S9 U

  1758. 8 t: j$ G% Q  ?8 @2 K' T6 Y
  1759. Set_Sound_Play_Port+ D; B( J0 z9 d" f) L
  1760. PHA
    # F# {/ a0 A' l7 V# I/ l$ K9 ~) ~: ^2 U
  1761. LDA #$20
    & j5 G# k- O: E! p. H8 F! M
  1762. STA <JSR_Addr_Op, b$ `# H+ a& T
  1763. LDA <Music_Item_Cur
    5 Q. L* u" J& x4 B8 m9 W) R
  1764. ASL A  _% r) {: u' \: q& q+ D5 Q
  1765. TAY
    1 E; U# q2 b6 s1 Y
  1766. LDA Sound_Play_Port,Y
      F: w& f+ a( e1 g: K# ?) C
  1767. STA <JSR_Addr_L
    # E8 ?9 V# C. Z& q
  1768. INY9 g, I0 Q+ I; o1 V( p8 a0 L0 b/ X9 l
  1769. LDA Sound_Play_Port,Y
    2 [! ?7 d, L  z! i' ?9 g: Y9 y
  1770. STA <JSR_Addr_H
    1 q8 R0 U3 \  U  }8 p9 L  i
  1771. LDA #$60+ O4 w' _5 [; x
  1772. STA <JSR_Addr_Rts0 t6 \- d" R+ c. f" e
  1773. PLA/ ?1 y& p- ~3 M# o4 F3 x' V5 \
  1774. RTS
    1 a% A, L& Y9 ]
  1775. : [6 o- A; ]6 H1 P4 w. I
  1776. Set_Sound_Reset_Port
    / n  j) w' {( r1 J
  1777. PHA
    1 M& _9 k' y% o- Y4 `2 Z
  1778. LDA #$20: {0 O0 I+ a/ p# b$ V1 C* r  j
  1779. STA <JSR_Addr_Op
    ! Z& T5 I: u# p/ S
  1780. LDA <Music_Item_Cur
    + ?1 ]0 S* ]" G& E( x$ a3 p; Q
  1781. ASL A: p3 e# A% J7 a% V, R2 J* J9 [* J+ _
  1782. TAY  ?5 i4 y3 v4 _' ~( V
  1783. LDA Sound_Reset_Port,Y
    # M& O* A. T9 v; {! d+ Q. G
  1784. STA <JSR_Addr_L7 _% |  I! I2 S' d
  1785. INY
    8 E+ ^& n# ?$ O( x5 B: U* J
  1786. LDA Sound_Reset_Port,Y
    2 S, _7 e2 n( t3 o
  1787. STA <JSR_Addr_H, z, r; ?9 x( `0 L0 x# h
  1788. LDA #$60
    6 h2 l# ~* O* z; v0 P. r
  1789. STA <JSR_Addr_Rts- i7 p5 c% H7 y0 l. B$ D; y3 O- E6 V
  1790. PLA
    ( S9 `( B# }8 v& Y) n2 N! t1 f
  1791. RTS
    . i% v8 L9 l7 V

  1792. 0 G5 S" h3 B6 K3 w3 `9 ~1 s# v
  1793. ;初始化音乐bank8 m6 C3 \+ t+ ?/ i/ {* }* `
  1794. Init_Sound_Bank! e0 k: u6 W, j! x5 Q
  1795. LDY <Music_Item_Cur7 U( q4 P! y/ S+ }
  1796. LDA Sound_Bank_8000,Y
    * r7 [( Q. n3 |
  1797. STA <Music_Bank_8000
    2 O/ w9 ]0 ^6 z: t2 ^
  1798. LDY <Music_Item_Cur! O% f8 F7 M6 I
  1799. LDA Sound_Bank_A000,Y
      k4 W+ {  Y+ `- F( c
  1800. STA <Music_Bank_A000
    ( U4 x# _; @$ d8 L+ R# p
  1801. RTS" a7 L" `. C3 A5 ?2 ], K" U, }7 o

  1802. 7 V0 r$ g+ F: c* r( r
  1803. ;==================================================  A, \6 A- L' N
  1804. Sound_State_Reset;音乐状态重置
    , F* P* Q0 Y, D: k* \$ j
  1805. JSR Music_Bar_ReSet        ;重置音乐条- X- _) [+ T4 K
  1806. JSR Time_ReSet             ;重置播放时间
    # ^6 Y1 |' z3 f  S9 |7 W3 e  u6 D3 Z

  1807. 5 D$ X5 D& o$ A
  1808. LDA #$00: n+ V4 L7 @4 ?) T4 u5 {' J0 @
  1809. STA <Music_Stop_State
    - j+ G. w$ Q) Y. }& {. J3 P/ p
  1810. JSR Music_State_Show       ;显示播放状态2 W6 e3 }- s  S7 R
  1811. $ |' d' g" o* Q
  1812. .IF Track_Name_Pos" v( I2 T3 s8 W% Q
  1813. JSR Show_Track_Info        ;音乐曲目名显示  E  v; ]! I, J8 `. `3 W/ G% f
  1814. .ENDIF- E# H. ]0 c. m- e" R2 m( P

  1815. / ?: u% T9 l# \+ @! ^; U) o
  1816. RTS  a/ r; A9 o" \$ S; y2 V

  1817. 2 ]/ a. m. N/ }: h" p
  1818. ;==================================================
    8 C/ [+ ^7 H- }( s' k; z$ z4 g3 B
  1819. Sound_Init_Proc;音乐初始化处理' D( H3 [' ]5 n# G( S
  1820. PHA- x3 S1 a8 J5 z  @- I
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址, J( G8 v5 Y0 G0 m' d: g' H9 X) l# x
  1822. LDA #$00
    ; U3 G  C  V; G/ [8 F
  1823. STA <Scroll_H               ;重设水平滚动
    5 q' G( ]& ^  ~/ k/ R
  1824. LDA #$0F3 v" g! @, f& u- [
  1825. STA APU_STATUS/ v8 C+ q& q$ O$ F% H+ T4 U
  1826. PLA% T2 s% O) x' @" s, X7 Z* r
  1827. JSR Sound_Init             ;音乐初始化$ @4 p0 S$ ^/ ^
  1828. JSR Sound_State_Reset      ;重置音乐播放状态, _2 K) W' v& p6 L7 h
  1829. RTS
    ( d& ?; q9 J6 u. _/ \' j, Z

  1830. - W- ^7 a) Z" R  ?1 Y
  1831. ;==================================================/ ]/ R/ y  A  z
  1832. Sound_Play_Proc;音乐播放处理/ T' @; l- v( _$ u6 ?/ q
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址8 G% j/ w& @) b/ K
  1834. JSR Sound_Play             ;音乐播放
    ! Y" a4 ]! q# ?7 i
  1835. RTS- V. V; ]7 X: ~7 }% I4 j% _8 w

  1836. % S" S, f+ b4 L( ?: e
  1837. ;==================================================1 F  @2 y* O4 w' S
  1838. Sound_Reset_Proc;音乐重置处理
    0 N5 S: u8 ^) C8 c* S$ j. R- h' E
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址3 @6 l3 f9 a+ o* U+ ?- h
  1840. LDA <JSR_Addr_L
    / h/ k7 C6 |$ K+ I5 n( b% T: [
  1841. ORA <JSR_Addr_H! a. Y' ?0 d4 C4 L
  1842. BEQ Sound_Reset_Proc_Default
    % I) v1 J3 c$ I6 c/ p) Z. T
  1843. JSR Sound_Reset            ;执行音乐重置
    4 y1 e% g9 ?: ^, P0 }: j3 i
  1844. JMP Sound_Reset_Proc_Init_Sound/ a' O: h- m. ]$ X

  1845. " F" N( k) R" e
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    + r6 I5 I* l4 M9 J* x/ T+ ~" e, }

  1847. 2 G3 u, X" n% W' R2 a  t" G
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断; j% M' l# }7 a7 o, h6 j9 u
  1849. LDA #$00$ i+ _* @( S9 ]  G' w
  1850. STA PPU_CTRL
    ; t* D0 r% b5 F/ V+ P1 C! H$ L4 h3 V

  1851. ; K' q, @* d9 F
  1852. JSR Sound_Data_Clear
    0 `" Q. h$ s5 E8 Z9 |$ O% \

  1853. % b& M( E+ N  ~) ^7 X/ U3 T/ E
  1854. Sound_Reset_Proc_Default_Wait+ o. f7 i1 p! w9 Z) O* g( j
  1855. LDA PPU_STATUS1 u2 d$ ]+ a! |4 [$ |
  1856. BPL Sound_Reset_Proc_Default_Wait
    ' O0 i$ u# `8 ]7 @2 o8 X* S
  1857. 3 p  ?* C. N+ e. {! t# n/ ^" e7 q, t
  1858. LDA #$003 E  I! C/ u" \4 J8 N0 F4 C" Q
  1859. STA PPU_ADDRESS
    + Y0 p2 }9 W3 r4 ?3 S
  1860. STA PPU_ADDRESS% S% T# E4 Q  Q9 p. H, z$ M
  1861. STA PPU_SCROLL: z; T9 Q$ ^' k0 M* h( a/ L
  1862. STA PPU_SCROLL
    " I6 T( H2 p6 N# Z
  1863. % m. v; j7 y: [! L) b5 W6 ~
  1864. ;恢复PPU控制
    ( j' o* p3 j- \  S5 m* [8 {7 Q
  1865. LDA Screen_Ctrl5 }( x- E) c6 e% _$ l& d
  1866. STA PPU_CTRL
    " y0 l, C! {1 }* A% b! S; t& j
  1867. $ p2 s" ~( Z# a$ w
  1868. Sound_Reset_Proc_Init_Sound# |/ A+ v9 Q5 T5 D
  1869. LDA <Music_Stop_State
    $ p  M6 P* D0 h; |4 s$ q
  1870. BNE Sound_Reset_Proc_End8 w: J- ~) X( m/ B
  1871. LDX <Music_Item_Cur
    ( x( y" P: i8 _( X( E
  1872. LDA <Music_Cur,X5 ?3 u) h0 |; [
  1873. JSR Sound_Init_Proc
    / Y7 o( m$ J( t( `
  1874. Sound_Reset_Proc_End
    * A7 b$ k1 Z  c
  1875. RTS7 Z- g- W) F3 v. q% |. g
  1876. ! M0 u! x  @, b+ h$ {
  1877. ;==================================================
    ( Q% e' D0 l4 N+ K6 b1 r
  1878. Clear_Item_Text;清除页项目
    : X  @# `5 j* U# P  f" N$ f
  1879. LDX PPU_Cur; ^+ r6 ]6 [  \: Y$ g
  1880. LDA #PPU_MODE_CNT_CLEAR
    8 T# i( e) {( h8 f# @/ i* [& X8 R
  1881. STA PPU_Addr,X
    " s  v5 p, }( x5 p7 q; b; Y
  1882. INX
    * l: t4 b4 k5 P' m9 n8 p3 h$ J( J
  1883. ) D- P* k$ {* r" \+ \& B
  1884. LDA <Page_Last
    + k; W" T0 w3 ]! f8 N( ]
  1885. SEC
    & K! E* i$ i; g8 F9 X
  1886. SBC <Page_Last_Index
    ( r) X, q6 b# W1 V4 D( ?8 Y
  1887. ASL A
    & j0 e& {* ]  U  P5 L4 f+ U7 d

  1888. / ]  L3 a, s  J' c, h- t
  1889. TAY- |, w- B2 ?- P7 K3 X! U
  1890. LDA Item_Pos_Data,Y+ K* w' ], G7 E0 i
  1891. PHA# N4 z) x' F1 K# T& c3 C4 f: y% R6 [
  1892. INY
    % r3 I% p: p: p# g" h0 B
  1893. LDA Item_Pos_Data,Y5 O* _# x# w2 i, T, O2 ~% i; o/ [
  1894. STA PPU_Addr,X) _. e& `+ y" a% O0 b$ n, k
  1895. INX
    4 ~' V3 B' B% [$ X+ S
  1896. PLA: f. l  H7 n& |! x* H. b6 B7 E
  1897. STA PPU_Addr,X) C' G  N" `( F  V9 ]5 p
  1898. INX. T1 b( w8 s  a; e

  1899. 0 r% P: K2 O$ C9 G, u
  1900. LDA <Page_Last
    ( a% P4 i& K7 U/ p+ h! Z4 {8 @* j8 v
  1901. ASL A
    : _2 U  n; I5 c' o0 u  @
  1902. TAY
    ' Y; O: D$ y; p* l3 T4 r5 M2 ^
  1903. LDA Music_Collection_Name,Y
    ! P- |  t/ M2 j0 i$ ?$ a  |4 ^" g
  1904. STA <Data_L  \8 d9 R  k. J. x
  1905. INY
    ! O5 q% I7 m' z, A- s1 d
  1906. LDA Music_Collection_Name,Y
    ( R5 s6 U4 u/ P  c" @! R
  1907. STA <Data_H
    % g+ D( c( @/ z  Y; l
  1908. 3 c$ o. P$ O& C) E
  1909. LDY #$00; |2 W7 o4 p/ R! k# l) j
  1910. LDA [Data_L],Y$ o5 c0 o* C/ s+ X' G
  1911. STA PPU_Addr,X. O; R0 Z& M' a1 ^. P( ?( `% E; z
  1912. INX
    : ?+ K: U) ~$ a) V4 f
  1913. Clear_Item_Text_End
    & K5 ?; o  ~+ n2 Z
  1914. STX PPU_Cur# ?# K4 |$ y( N5 x3 J
  1915. RTS
    - X; o. i: ~8 N2 J- O
  1916. ; q2 Y& J6 w  d
  1917. ;==================================================4 q0 ]# X; {' H% T% d/ m
  1918. Show_Item_Text;显示页项目
    8 p: S0 q$ Z$ U+ ]; {' |2 Z
  1919. LDX PPU_Cur7 m5 r9 ]/ v# O" H% P$ H
  1920. LDA #PPU_MODE_CNT_LINE
    0 O5 {$ Z# q! y+ t
  1921. STA PPU_Addr,X
    # d/ ^, A& l# B) {5 G- d/ D
  1922. INX7 |1 d; R- ~, K/ \6 S; n3 f
  1923. LDA Page_Cur
    ! @1 y1 `0 N4 L' ?& X6 }4 U% h0 v
  1924. SEC3 G: {8 @0 g! E7 I9 ^$ N; G
  1925. SBC <Page_Cur_Index
    , h  @, U' t& H. b
  1926. ASL A4 q8 v6 S1 F; A7 m
  1927. TAY
    / a+ H9 V  F8 u( {: O
  1928. LDA Item_Pos_Data,Y
    ! c9 e# W! q5 }# F4 }1 g  B
  1929. PHA6 F% a( d9 I9 U4 B; k6 E" H" P! R
  1930. INY) U: A7 s0 f5 I) E' Y  F$ ^& o: a
  1931. LDA Item_Pos_Data,Y3 I- Y% n& B& U- s% F( z
  1932. STA PPU_Addr,X
    % T3 R: P0 N5 h$ W6 J1 U& k: Y0 u
  1933. INX
    " l# U; V/ [$ M( N/ d% {
  1934. PLA
    6 D" a, G3 y( W1 l# n6 u2 g/ H
  1935. STA PPU_Addr,X
    4 P8 N: S# l1 h# y4 n. R. k
  1936. INX
    2 S" L% C$ E7 k
  1937. 2 D' Q% e4 c* ^
  1938. LDA Page_Cur% g5 G2 I( c# p' \& E6 p3 T
  1939. ASL A6 I: F; [, a/ r6 L9 [& \
  1940. TAY6 ?( M, Z6 X$ E4 M6 |# t& }5 z
  1941. LDA Music_Collection_Name,Y# B; ]- K' [/ L  S
  1942. STA <Data_L$ p6 N7 {& y5 d, N, K2 w+ ]6 S+ {
  1943. INY( |7 C; }! c* U  w2 p
  1944. LDA Music_Collection_Name,Y/ a9 U7 P: x- C, V- W6 f; b$ m
  1945. STA <Data_H
    4 A+ L! @5 I2 C2 E  P7 [# _9 m1 V2 I

  1946. 4 o2 p$ b) w( K* z
  1947. LDY #$00* m+ y0 n; g4 G/ w& B! C# Q
  1948. LDA [Data_L],Y" K+ f! [( j; R
  1949. STA PPU_Addr,X
    7 ~7 x% M3 W1 d: H1 R) P. b
  1950. STA Data_Cnt% i! G5 `$ T. u: k* G
  1951. INX
    5 B+ t1 E' f- d) J6 N  i

  1952. 2 M& X3 d' q8 N$ T* P2 J3 O5 d
  1953. INY
    5 [/ V0 q: Y2 |! V& B5 i5 {) t4 Y
  1954. Show_Item_Text_Write
    ; v, v+ m! X0 y9 l
  1955. LDA [Data_L],Y) v$ N$ T( \+ G' H! l. |% G, u- }
  1956. STA PPU_Addr,X$ q  c! D* |4 ~$ e# w* b) H
  1957. INY/ K" I2 T0 o1 J4 @% @5 h( t
  1958. INX
    + C- D/ {) A3 J
  1959. DEC Data_Cnt9 b/ `* O/ w! e7 ]
  1960. BNE Show_Item_Text_Write0 Z, C: j4 f6 _& h6 f

  1961.   j; D$ p) P$ I/ {) q. E
  1962. Show_Item_Text_End
    % H+ `( G5 Z6 Q9 E0 Q6 O
  1963. STX PPU_Cur
    7 |0 M+ ?8 ~: O$ V% h3 O  ?
  1964. RTS
    * }9 R  [# C- G( l6 ~8 y, x+ s0 J4 z

  1965. ' J# L4 j/ e0 q2 y9 w
  1966. ;==================================================
    # I+ i, c+ p) |2 c3 z7 ^  I+ R
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    % i7 d/ ^! v$ I2 w# v1 j
  1968. STA <Data_Buf
    ; M+ g+ a* \! \( |4 ^; C- e( P
  1969. LDA #$00
    ) t2 `" t0 h+ Y1 D$ I
  1970. Get_Page_Index_Calc
      r# U. }- p$ H( M( `3 S* x$ t
  1971. CLC
    ! j) y8 a+ C& Z+ `! x+ W
  1972. ADC #PAGE_SIZE
    6 G" @2 ^  d8 V  |% v
  1973. CMP <Data_Buf) |: s# y5 a. R8 B
  1974. BCC Get_Page_Index_Calc/ g3 ?: C. x: R/ Y% _
  1975. BEQ Get_Page_Index_Calc_End
    . V' }: w2 @, g  Q+ [/ F
  1976. SEC, ?: u- H' Z+ b. H; m0 q
  1977. SBC #PAGE_SIZE
    ( G- M( @' T) i2 R3 c
  1978. Get_Page_Index_Calc_End0 Z2 J" O; O: Z. d
  1979. STA <Data_Buf
    ) e. B2 }0 R; Z# i- R$ i
  1980. Get_Page_Index_Cnt
    . q& t) y" M& a/ K5 F
  1981. LDA #PAGE_SIZE! y/ N0 c% m' s2 U0 G4 U+ F: h
  1982. STA Data_Cnt
    + W+ a& x/ e5 A5 g4 x9 ^. Q

  1983. * H# i, b5 N# q  u& C' t
  1984. LDA <Data_Buf4 e2 N. p0 _+ ^2 O% |8 X5 S: A
  1985. CLC
    $ H; C( F1 o$ ~
  1986. ADC #PAGE_SIZE
    ( U+ a( N- ~$ p" s, n
  1987. CMP #ITEM_MAX_SIZE& m1 n/ N1 Q, Q1 v
  1988. BCC Get_Page_Index_Cnt_End' S7 ?2 `0 e0 d& d

  1989.   \; @+ [3 C2 |- F' b. I- U% D
  1990. LDA #ITEM_MAX_SIZE
    7 f) P( A* E4 X% L
  1991. SEC' ^) q/ g) H8 X
  1992. SBC <Data_Buf
    & m- ^8 N) x! F/ q
  1993. STA <Data_Cnt
    8 C% ?) J8 i0 V7 E; T

  1994.   f* b2 S6 y) B! R
  1995. Get_Page_Index_Cnt_End; c" _& `4 I  r6 l
  1996. RTS, p' C& \0 @% ~5 l

  1997. " r% i4 I: z  j, G# n$ \
  1998. ;==================================================
    6 M; b; c7 b9 @$ O' w
  1999. Get_Last_Page_Start_Index
    3 R7 i, b; P* o! y1 J- R
  2000. LDA <Music_Item_Last
    0 A6 h0 i7 R2 i1 d
  2001. JSR Get_Page_Start_Index
    7 H% Q3 b" H7 \0 w* a5 h+ M
  2002. LDA Data_Buf
    / e* b: R& l" Q( G
  2003. STA Page_Last
    * b& a. G$ J' m5 j
  2004. STA Page_Last_Index
    / |7 W% f: a, Q5 o
  2005. LDA Data_Cnt4 j' j3 z  \; l! ^
  2006. STA Page_Last_Cnt) D2 o' c, Q. ^8 V* m& V* @' L/ `
  2007. RTS
    . L' G/ a, X! L8 B" m/ T7 [
  2008. ! x0 ?  {" k( _+ m  B, Z# d
  2009. ;==================================================* [" T6 a, n" E
  2010. Get_Cur_Page_Start_Index
    4 L* h9 d9 G: m1 p; F, S# H7 W
  2011. LDA <Music_Item_Cur8 J# ~9 U$ R9 i9 d" A* l$ x0 S
  2012. JSR Get_Page_Start_Index# V6 k& Q* C: p/ V8 |% t$ l* z- @: A
  2013. LDA Data_Buf
    2 {( D# z$ K% T( O  A! c
  2014. STA Page_Cur& y3 _, T, M; E, P7 ]
  2015. STA Page_Cur_Index& N% p6 p  B  L* q
  2016. LDA Data_Cnt' ^4 L6 ?3 P2 }2 H
  2017. STA Page_Cur_Cnt$ H/ R; E; V6 D8 U
  2018. RTS& X4 {4 a6 o1 x9 a, P8 }6 V* a

  2019. $ i+ \% O! J+ `/ f* ~9 J  L9 F
  2020. ;==================================================
    8 w1 I& O0 E7 S: e
  2021. Show_Page_Text;显示页文本
    # L# ~, t. ]5 p& l3 y3 ]
  2022. LDA <Text_Disable_Flag
    1 \' h( V% }( g! |% ~3 E
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    , }6 V9 n1 F/ H  u  ^  p0 D
  2024. STA <Text_Disable_Flag1 g; Z' @" G6 Q/ n$ }' A7 u( v

  2025. - M+ u+ m1 F3 x) e- _
  2026. JSR Get_Last_Page_Start_Index3 k+ u* y8 G8 g6 |
  2027. JSR Get_Cur_Page_Start_Index
    " o: U1 h/ x) h4 ^8 e+ {- z4 ]) [0 R
  2028. 0 p/ \$ L. a, g6 o( R- O
  2029. Show_Page_Text_Set
    8 F* L4 D. ?9 c6 o
  2030. 5 r& n5 n( Y, R" z# p6 b
  2031. Clear_Page_Last_Item;清理上一页
    + K) K. y7 _" p, T. u1 X
  2032. LDA Page_Last_Cnt
    . J% Q) |' {$ d2 H
  2033. BEQ Clear_Page_Last_Item_End
    8 O4 s) E" R$ _
  2034. JSR Clear_Item_Text+ Z: J  @1 q3 h
  2035. INC Page_Last
    $ S) l& x8 H5 |2 N) ^2 \
  2036. DEC Page_Last_Cnt
    % W, I9 e- m( o0 x; B- v1 H' |
  2037. Clear_Page_Last_Item_End
    - X; `1 g% l4 `) H, Q; ^0 G9 S" D

  2038. ) i5 A1 d( e+ P) L& l$ K5 Y7 X8 B6 K
  2039. Show_Page_Cur_Item;显示当前页
    2 D8 [4 g$ {  q# S+ h
  2040. LDA Page_Cur_Cnt
    . i' j! `1 Z2 d  l9 L, j4 |9 d
  2041. BEQ Show_Page_Cur_Item_End
      y. a, W$ }# l0 q3 h" @7 f' P+ g
  2042. JSR Show_Item_Text
    ! s3 W" _* s( h# H% z# g
  2043. INC Page_Cur
    5 b; `1 z- n  A3 R7 n0 a) y
  2044. DEC Page_Cur_Cnt3 e4 O0 U; c8 Y- l$ g5 F6 w
  2045. Show_Page_Cur_Item_End& x  n+ L) y6 t( |# ^# N

  2046. 2 y" z, u: h2 {; m  \" j, [- z# {
  2047. INC <Time_Wait_Cnt
    5 J8 H; A: P  I7 p, J2 ?! O
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作# [7 l% E% a9 ]1 b: l% B
  2049. LDA <Time_Wait_Cnt
      K( \) {4 v1 O. I
  2050. BNE Show_Page_Text_Set_Wait
    7 X# A( j; [/ X  }
  2051. - F" s+ w. _8 i0 n+ U7 V
  2052. LDA Page_Last_Cnt
    " Z6 j, T0 P9 _9 r
  2053. ORA Page_Cur_Cnt: M8 N$ u7 D9 e+ g: k9 @. h6 H
  2054. BNE Show_Page_Text_Set
    8 r* \, m/ h6 L  w$ K% \
  2055. LDA <Text_Disable_Flag6 D- R  I8 B( o8 Q: I5 f
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    2 ^7 r' G, c( d
  2057. STA <Text_Disable_Flag
    , i, j3 x* B+ F% k' D
  2058. RTS! w3 G+ s4 M1 \' W2 z
  2059. , k8 e; i3 v+ H
  2060. ;==================================================
    ! p) `7 h0 L' ?2 n! t) r# X
  2061. Last_Item;上一项4 ]+ N9 G  V6 N
  2062. JSR Clear_Last_Track_Name
    , Q( a/ L( r1 n4 I) n
  2063. JSR Disable_Text_Draw  `& ~9 _. N( P7 h2 z3 O" T

  2064. 7 b) U( B. k2 A0 D. A8 b2 ?6 k: f) X
  2065. LDA <Music_Item_Cur( H* \: `1 C( h3 x5 O
  2066. STA <Music_Item_Last
    ( ^1 r, K/ O* U, i. I
  2067. % {+ `% q) s+ t  B" ?. ]
  2068. JSR Get_Last_Page_Start_Index- z6 h% g" u/ ?" p
  2069. 0 b' @6 X+ k0 p* H1 ^
  2070. LDA #$00
    ) ]& C# j) H6 A
  2071. STA Data_Buf
    + \( ?" d8 |5 H. R* |

  2072. / Q, x- t: S7 u* P5 q8 {6 G8 K
  2073. LDA <Page_Last; I2 v/ D) ~) m* W* l
  2074. CMP <Music_Item_Cur
    6 M+ n; h+ x$ ]' a% e9 H. ^
  2075. BNE Last_Item_Begin
    - X9 \2 A1 w) E( q5 {) r6 r
  2076. * q# q: b. _' B, Z$ E' E4 h
  2077. LDA #$018 }( f6 I% a& Q/ x
  2078. STA Data_Buf
    , ?1 g) j$ h0 q  a& n/ n
  2079. Last_Item_Begin
    / |$ p+ s9 n; D* t
  2080. LDA <Music_Item_Cur: k+ d% B+ ^- Y" ~6 F* C4 N8 Y
  2081. BNE Last_Item_Set
    ! E/ G2 ~+ u/ P' {& f
  2082. LDA #ITEM_MAX_INDEX + 1: R# @  E$ \- r0 E( U+ B' f
  2083. STA <Music_Item_Cur
    ! l& J& [  \% J8 {1 @
  2084. ( @, u) b, X' j' \0 \; I  t
  2085. Last_Item_Set
    # C/ ]# l. M- ^5 n6 H  R, Y) n
  2086. DEC <Music_Item_Cur
    8 r" G- t. q" y* {1 {4 I
  2087. LDA <Music_Item_Cur% Z3 o% F- s( \& S
  2088. JSR Reset_Current_Music
    4 ]  E" h( t/ T

  2089. # B; p- b" Y/ E9 |$ t, ]3 L$ C& x
  2090. Last_Item_Play7 `0 \4 |$ d; X! Y% Y4 J6 z$ x/ q
  2091. LDA Data_Buf
    4 _# o. n' l- A2 a" C/ s
  2092. BEQ Last_Item_End* }0 Y8 f9 {4 @5 w' l
  2093. JSR Show_Page_Text! v  H# k$ C( ~2 o
  2094. Last_Item_End
    " ]) g. H7 G) y  c
  2095. RTS
    / x. c% g9 M$ ?0 O# @" M
  2096. : I* T2 _7 M7 z. B5 i9 K7 u) O% H
  2097. ;==================================================
    6 a7 g' K) A8 G
  2098. Next_Item;下一项
    9 ~0 C/ L( f9 B& _6 M
  2099. JSR Clear_Last_Track_Name
    ! `6 S( @$ ]7 D7 l, P  z
  2100. JSR Disable_Text_Draw0 Z! m0 X7 a% c0 D5 `& d

  2101. 7 [: l+ X; n9 k/ W/ F. x# H; v
  2102. LDA <Music_Item_Cur7 s; `+ l! H. p- L3 u5 _( h& F+ c
  2103. STA <Music_Item_Last+ @! }4 l% U: `3 o6 D# }$ H
  2104. 1 w; c/ E8 k9 a, p0 H, x
  2105. JSR Get_Last_Page_Start_Index1 p4 i9 Y( F$ j8 s9 @( p2 e
  2106. ) ]6 L' U% x7 }/ ^! _6 R
  2107. LDA #$00" Z( `. O3 j; v7 b: f+ `
  2108. STA Data_Buf+ J% a0 H; N" k! J: i( }& @7 O

  2109. , Y) \1 [. n$ r0 g! }4 r2 V
  2110. LDA <Page_Last: ^; q# a7 R  M8 E+ b/ S+ [& z
  2111. CLC
    & y4 L4 i, W& C% l, Y' t7 k1 U
  2112. ADC <Page_Last_Cnt. L1 L. a, m6 |
  2113. SEC9 K& l9 a6 y0 \$ h' g
  2114. SBC #$013 k! N- c' [1 ~( L9 Y0 `; X
  2115. CMP <Music_Item_Cur8 G& }  A! t& r  E6 L1 }
  2116. BNE Next_Item_Begin
    & x2 \$ V% w  \' v  C& ~) K

  2117. 2 S* j0 P. A. }) p+ r7 }
  2118. LDA #$01
    % ]" Z0 p" \0 j1 d1 i% C: ?
  2119. STA Data_Buf2 c- v( c' L# K2 @
  2120. Next_Item_Begin. ]% ~% N. q4 b; F5 k* [
  2121. LDA <Music_Item_Cur9 R2 }  X5 e2 q: N
  2122. CMP #ITEM_MAX_INDEX+ W! Y) T) {9 `
  2123. BCC Next_Item_Set( ?" k7 p. j& |* ^1 Z0 s9 Z- N
  2124. LDA #$FF
    * ~( D4 Y  D; o8 a* w1 l
  2125. STA <Music_Item_Cur
    9 d, n$ X+ a" R% s; {. G
  2126. Next_Item_Set
    * ^; e7 x& P& o/ `6 n; N
  2127. INC <Music_Item_Cur
    3 ~- C/ p# p, b6 r! r) D; [( P
  2128. LDA <Music_Item_Cur
    - r; J: L8 j# c, W
  2129. LDA <Music_Item_Cur+ r  ~  X  b' o
  2130. JSR Reset_Current_Music# M' I) z% X7 R
  2131. Next_Item_Play; d: X* ^1 |. }7 t& x1 h# X, }
  2132. LDA Data_Buf
    # G# C0 h  K/ x9 R: z
  2133. BEQ Next_Item_End
    9 d9 U0 P5 O% o3 ?+ n
  2134. JSR Show_Page_Text
    " ?8 A% |% p& T8 j& W7 V
  2135. Next_Item_End
    1 m9 o/ o5 `( @$ @& o' t/ K
  2136. RTS
    " x" b: y. h* H- ~- ~
  2137. - H; f1 u- C& o) L$ A
  2138. ;==================================================) _9 Z4 s3 F! N8 I+ a+ v
  2139. Last_Page;上一页/ i( e" w/ M" W% n6 O$ B0 m
  2140. RTS
    5 G6 V7 M. w" P7 I/ G
  2141. + w: }( v/ E: j. T/ o" D7 e
  2142. ;==================================================
    ! U  ?: e' @) }* T
  2143. Next_Page;下一页  S) q5 h/ U2 Q+ e+ a& B- q
  2144. LDA #PAGE_MAX_INDEX
    ' t4 N7 B/ R9 u+ y; K$ A
  2145. CMP #$016 d; m5 F8 ^$ |# j! w
  2146. BEQ Next_Page_End; S! y! |' w+ T3 v! L% a& g

  2147. 0 D% u* H' x& A( J
  2148. LDA <Music_Item_Cur6 N% u% M) z8 g+ @# \
  2149. STA <Music_Item_Last
    9 S. x' b9 o9 E# Q

  2150. 7 R' ]9 p+ S7 a
  2151. JSR Get_Last_Page_Start_Index
    : |/ a4 Q0 r# G
  2152. 7 J9 K/ U/ g+ u  ~- v0 b2 q
  2153. LDA <Page_Last_Index5 s5 q! T" m" N/ r
  2154. CMP #PAGE_MAX_INDEX) z% u8 ~2 F6 E* b. Z5 X% i
  2155. BCS Next_Page_In_End_Page
    6 _, `9 X8 [/ L0 @5 ^

  2156. ( `/ u( p2 s" k6 V5 `; `
  2157. Next_Page_Not_End_Page;不是在最后一页
    3 H0 a: |3 v' S- m5 L# p
  2158. LDA <Music_Item_Cur) f6 f# E: m) l8 e
  2159. CLC8 N# B5 g8 S  s1 a5 u' U: r8 v
  2160. ADC #PAGE_SIZE
    3 M4 V4 R: {# h, _( N$ m
  2161. CMP #ITEM_MAX_SIZE
    . y+ f: d, y- W. ]. D8 Q5 e) z
  2162. BCC Next_Page_Not_End_Page_Less
    " R! V; Z" j7 E. t. s
  2163. LDA <Music_Item_Cur- `* d# t! g' o
  2164. SEC5 B. I# b5 b" z; D
  2165. SBC <Page_Last_Index" y1 H" u4 i  D: D. r& V: F$ K
  2166. CLC5 ?2 {/ y0 b5 C6 A
  2167. ADC #PAGE_MAX_INDEX
    4 J2 i& T% f9 Y
  2168. CMP #ITEM_MAX_SIZE' v* A; ^) u+ P
  2169. BCC Next_Page_Not_End_Page_Less
    " a6 A. t. X# ?: A3 K
  2170. LDA #ITEM_MAX_INDEX4 O. E" x* [7 ?8 I9 _
  2171. Next_Page_Not_End_Page_Less
    . u& G& T' C" H3 {/ o
  2172. STA <Music_Item_Cur
    1 z0 m4 H( p* b$ s& v: T, A
  2173. JMP Next_Page_Reset2 U5 V/ S: M% U9 d/ I3 g

  2174. ! S+ |# ~# K2 Z) a/ z
  2175. Next_Page_In_End_Page;在最后一页
    ) i* e  C- L  _$ ^$ i$ {  _, f$ s
  2176. LDA <Music_Item_Cur
    - J* v$ X" e/ E( e1 R8 E8 q/ x6 M6 s
  2177. SEC
    # L$ [0 z$ E" h6 b! W' B
  2178. SBC <Page_Last_Index3 A# F+ I) Z; y
  2179. STA <Music_Item_Cur
    + ]% C) R* M* E; Q3 T7 X- _! Q  r
  2180. ' i" q* y8 N/ Z+ h8 E% o" r/ j
  2181. Next_Page_Reset; }7 a, ^( n' M
  2182. LDA <Music_Item_Cur5 J. j9 u3 D" H3 b! R/ o
  2183. JSR Reset_Current_Music" R2 O  X1 p! I
  2184. JSR Show_Page_Text
      u% T8 `+ S8 B) i( ]0 c2 W* V  Y
  2185. Next_Page_End; M  o& J) h2 r1 A1 Z( r
  2186. RTS% V& m) f7 ?8 P; p

  2187. " ]3 z  c7 ?) m  b
  2188. ;==================================================
    4 L0 w6 B/ g) Y, U3 l
  2189. Disable_Text_Draw;禁用音乐条刷新9 _2 y: R3 U' Y2 e0 i
  2190. LDA <Text_Disable_Flag6 [* Z0 X: m# F" Q  w
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    # Z9 Z9 L# Q* B4 u) V  }& `0 B5 g6 g
  2192. STA <Text_Disable_Flag
    ! Y6 l: N. F" Q: y& ]8 y
  2193. RTS
    6 T2 ]# c  b, l- w7 u8 z5 ~$ D) {3 p

  2194. ) b; q1 Y1 }9 S+ P$ u9 K$ I/ M' U
  2195. ;==================================================
    / r+ j3 F  u7 X. C
  2196. Clear_Last_Track_Name;清除上次曲目名) H6 Q3 W: a2 @3 U' B4 R
  2197. LDX <Music_Item_Cur- E8 y8 Q  a3 n2 }& @5 g! C
  2198. LDA <Music_Cur,X
    " ]) ~6 S5 J9 V) W
  2199. .IF Track_Name_Pos
    : Z4 L( ?% s% G: Z& ?
  2200. JSR Clear_Track_Info* c7 k, v" E  m2 ]9 e  i& o8 F- O* c1 u
  2201. .ENDIF
    + `2 P! D2 u* X0 [7 A3 [3 t
  2202. RTS
    # T( }9 S: a( j

  2203. 4 J* ~5 ~( q5 I% k
  2204. ;==================================================
    0 l3 \% c3 e2 S+ A% i2 y4 f
  2205. Reset_Current_Music;重设当前曲目
    3 e) `6 R0 [/ A6 F9 Y  s3 w. L
  2206. & {0 J8 |% m, L  H
  2207. ;写入当前总曲目8 |6 H' d' {4 z3 Z
  2208. JSR Set_Sound_Total
    ( A; X$ v+ b  X) C4 _
  2209. LDX <Music_Item_Cur/ v2 |) A9 p1 Z- S3 ^7 d  ^

  2210. 5 x  @8 e4 {/ |* T( j
  2211. LDA #$00
    ) l5 o# O) q3 X' J& m1 V* _
  2212. STA <Music_Last
    8 g" j, {' ~  P  ^
  2213. 6 ]* m! U+ B9 R# R  M8 `9 U# C8 ~
  2214. JSR Sound_Reset_Proc
    7 _3 L- _$ t% b
  2215. JSR Music_Show+ q# C% I! J8 i& N7 |, G
  2216. RTS
    % L3 O$ \5 u& K7 n; A+ p/ Q3 ^

  2217. : z2 m3 @, i8 M+ O+ q1 z5 M
  2218. ;==================================================2 b2 J% ^: x! [$ D
  2219. Music_Song_Stop;音乐停止
    0 h5 W# B" `" _0 f- `2 X3 Q& }# g0 ]% C
  2220. LDA #$01
    4 G+ J! E3 K4 R- B  V
  2221. STA <Music_Stop_State9 }9 q/ q5 q0 H$ Y3 @
  2222. JSR Music_Bar_ReSet% J  G) Y$ [" R' @& \' X
  2223. JSR Time_ReSet
    5 |9 _! s1 n2 N* d5 @5 p# _
  2224. JSR Sound_Data_Clear. K6 m: n" a& w
  2225. JSR Music_State_Show6 x5 u3 E  j% y" W5 y+ w
  2226. RTS5 o7 G1 U8 w- n6 ]: t2 U, p
  2227. ; x. W0 x7 a4 l, y0 q1 F3 {
  2228. ;==================================================& k0 Y  L. x, J9 y, \
  2229. Music_Song_Play;音乐播放
    9 X' M" D& Z7 N- _& g/ |8 j
  2230. LDA #$002 A+ D& x6 c3 y/ w3 f( g0 v! f
  2231. STA <Music_Stop_State) g: _8 i. b3 @; O& p$ S: e5 H
  2232. LDX <Music_Item_Cur, u& u, w( M3 k$ s& D5 R+ q4 J4 z2 E
  2233. LDA <Music_Cur,X" Z& {/ i( s" c+ {( H5 j; g
  2234. JSR Sound_Init_Proc4 s- R- s9 k, }( z1 W7 O
  2235. RTS2 }1 @6 u- ^& h, e" H1 @# `

  2236. 7 j3 Y6 h6 P& ^/ |! G- [
  2237. ;==================================================
      d) g/ x( h8 ~2 \
  2238. Music_Song_Last_10;上10曲
    + |" S0 z9 L$ U& P3 N& R# O
  2239. JSR Clear_Last_Track_Name
    " t$ K; I! O3 V1 X! s6 Y, B9 ~
  2240. JSR Disable_Text_Draw# x; x% f. {7 m1 x, F+ f
  2241. LDX <Music_Item_Cur. j$ o$ _7 G7 r3 T2 |9 L0 u9 A
  2242. JSR Set_Sound_Total! Y2 L9 }: G9 [- ]* K2 R
  2243. LDA <Music_Cur,X
    # {( O( C0 J( Y6 t, a
  2244. SEC
    8 @& H+ p& m" M+ |
  2245. SBC #10
    % h# i5 q4 N- Z0 K) v% ]
  2246. BCS Music_Song_Last_10_Set
    6 ~, ~5 v$ B4 s6 d
  2247. LDA #$00
    # j9 O* o9 M7 v3 q9 b) \; s* A# ]
  2248. Music_Song_Last_10_Set& \) o0 R5 f  W0 i0 f: B
  2249. STA <Music_Cur,X
    0 i" _, N8 X: D8 b! n" Q
  2250. JSR Sound_Reset_Proc2 Y' L4 n* |) a1 U6 o
  2251. JSR Music_Show  \. \) N2 J" h) u5 E9 T* F
  2252. Music_Song_Last_10_End& `1 i+ O4 t" j! f$ x
  2253. RTS
    5 ^& l& R# `1 F5 G

  2254. , ^, E" @! l) ^" O% x
  2255. ;==================================================
    ) C1 _  U: q" M; o  b
  2256. Music_Song_Next_10;下10曲) l  x* ?6 A  q
  2257. JSR Clear_Last_Track_Name* q5 t  B# b  f; Z; a" l. e; {
  2258. JSR Disable_Text_Draw
    & ^- _# ~! o9 n7 ~& W
  2259. LDX <Music_Item_Cur$ }0 ~' Y" e& Z, s
  2260. JSR Set_Sound_Total+ W/ m/ r9 S4 R+ D8 }; x
  2261. LDA <Music_Cur,X
    # L$ e8 r) n# l1 K& }, J! x
  2262. CLC
    + }! }5 D1 w( d3 z
  2263. ADC #10
    $ Q* j$ \% w$ ^; F, c; Z
  2264. CMP Music_Total8 h" n1 M' a  A2 v1 O3 k! G4 B
  2265. BCC Music_Song_Next_10_Set& Y. T% Z6 G8 B4 R1 o
  2266. LDA Music_Total
    8 ~( l# ?2 S- ^1 R2 D
  2267. Music_Song_Next_10_Set3 {8 J& }4 L: r: q
  2268. STA <Music_Cur,X8 ~2 }* }( I7 s" i
  2269. JSR Sound_Reset_Proc% g1 ]8 A  C4 `3 f
  2270. JSR Music_Show1 [$ y% J% x* J. N- U3 Q
  2271. Music_Song_Next_10_End
    5 x+ O4 e) [. s9 j% r' a8 y6 ~
  2272. RTS' Z0 M  N6 ]6 C1 v
  2273.   j+ Z3 G8 r2 j1 N9 {5 [4 R" h( K8 }
  2274. ;==================================================, n9 H; s: q* q" U2 u! i( u
  2275. Music_Song_Last;上一曲
    1 g$ Y; J- T1 P2 X7 z/ E
  2276. JSR Clear_Last_Track_Name
    ! f" r$ H. @& L* S+ E* D
  2277. JSR Disable_Text_Draw
    1 x; T* z: |$ u6 X& K1 C
  2278. LDX <Music_Item_Cur
      i* E( j- z. A$ Q& G
  2279. JSR Set_Sound_Total
    # W7 M# m" j2 [- U
  2280. LDA <Music_Cur,X
    : Z& [* i. A0 N, H* G
  2281. BEQ Music_Song_Last_Set9 _% a! w7 V0 r+ Y
  2282. DEC <Music_Cur,X! N) ~4 U& I# {/ c
  2283. Music_Song_Last_Set: f: _2 \+ k; F( R" @8 {- g
  2284. JSR Sound_Reset_Proc6 \0 u; D' _/ \9 a" w
  2285. JSR Music_Show
    % n4 s2 x6 n) G+ ~3 k
  2286. Music_Song_Last_End- h% G& V5 k- k( @% e6 ?
  2287. RTS
      k. q9 P  X+ I5 T
  2288. / C. p+ M3 e8 o
  2289. ;==================================================2 T, m9 `8 d  P& b9 \0 W
  2290. Music_Song_Next;下一曲
    & }9 b. X: b. j( p* j! z
  2291. JSR Clear_Last_Track_Name
    9 U9 \' y9 d$ ?, @
  2292. JSR Disable_Text_Draw+ U$ C. B8 J' E1 Z
  2293. LDX <Music_Item_Cur
    % p8 K& A" {0 t
  2294. JSR Set_Sound_Total
    . a# H9 |) _2 o& m
  2295. LDA <Music_Cur,X
    / ~1 |/ [$ Q- \* S) R; P( N" P2 R7 Y
  2296. CMP Music_Total7 P  c  U1 ]) f4 ^+ d; P0 V
  2297. BCS Music_Song_Next_Set
    & D7 l( D7 f' Z$ u
  2298. INC <Music_Cur,X7 ~# @3 W- `  Y4 `
  2299. Music_Song_Next_Set
    ! ]  ]* Y6 ^. Z, k
  2300. JSR Sound_Reset_Proc
    * z5 y4 k' P% E+ E& y  C3 v! U
  2301. JSR Music_Show
    6 ]8 T) l  C  f
  2302. Music_Song_Next_End' [" T3 y3 f! U) Z, t8 x
  2303. RTS
    + @8 Z! _1 I. Y& |- P2 U( a
  2304. ; c6 y; Q' q3 X$ j9 N6 G
  2305. ;==================================================
    ; s, ?6 t2 c5 S3 O
  2306. Change_Select_Item;改变当前选择项& [+ E' X! T& t# c' u
  2307. ;--------------------------------------------------
    3 ~/ p$ n# M8 p, t8 u4 i6 Z' A  _
  2308. Change_Select_Stop_Play_Item;停止/播放
    6 h2 H8 @9 P2 {/ D( G! h' Z
  2309. LDA <Key_Once
    6 M1 n# u' W$ V
  2310. CMP #$10
    1 I0 J$ p2 A  u# Z# K2 V
  2311. BNE Change_Select_Last_Item5 @0 s) h7 L0 x8 H& ~5 Z
  2312. LDA <Music_Stop_State
    4 O. e% o' N# [
  2313. BNE Change_Select_Play
    , m5 B, v9 [6 m7 P9 D
  2314. JSR Music_Song_Stop
    # j5 n- x. Q* g+ p% O6 b
  2315. LDA <Music_Stop_State
    $ l4 H" ]! F5 {9 w( A2 c
  2316. RTS7 {3 M: y' p: B# i2 C+ q
  2317. - ~& B% X1 W* q
  2318. Change_Select_Play
    ! y# Y  b! C& ]. ]) F( Q
  2319. JSR Music_Song_Play" O5 {$ e% K* @& J% c9 e
  2320. RTS) t0 s) e; i' G- `* z5 C

  2321. 9 k  z6 `) ^* q) O$ _
  2322. ;--------------------------------------------------4 V4 H+ G7 {% ?' ~" }$ z
  2323. Change_Select_Last_Item;上一个专辑
    & t- P5 r4 R; }. o3 N: V
  2324. LDA <Text_Disable_Flag) n! @- N. I' O# x9 H
  2325. AND #TEXT_DISABLE_ITEM- v* {  i% `/ s% N; F
  2326. BNE Change_Select_Item_End
    . l3 m& [- |+ ?$ X+ Z
  2327. LDA <Key_Once* _8 D$ n/ R4 k% Z+ S) \, b( u
  2328. CMP #$08
    0 o, U! {, O8 I' S. Y
  2329. BNE Change_Select_Next_Item5 _  z3 t* o: k& }3 o
  2330. JSR Last_Item
    0 |  M6 s; _1 o3 m) D
  2331. ;--------------------------------------------------
    + j0 u+ O7 r2 Q& }. |, F
  2332. Change_Select_Next_Item;下一个专辑) S4 b8 F$ V( _
  2333. LDA <Key_Once+ H4 g4 q6 |7 z2 ^4 Q* m2 z
  2334. CMP #$043 o+ x# p2 \* p) t# g. d4 j+ Y
  2335. BNE Change_Select_Last_10
    5 {: e; K; b8 P( l% K
  2336. JSR Next_Item
    $ F, W2 ^# N" L' `( Y
  2337. LDA <Music_Item_Cur
    : U; d, u- k9 Y6 u, u8 C% ^, d' C! r$ o
  2338. JSR Get_Page_Start_Index, b) m( M& k3 _! W4 ^
  2339. ;--------------------------------------------------, s* a2 d$ M% l, L9 Y, x! v6 Y
  2340. Change_Select_Last_10;前10曲
    1 D. c# p" m! R; v1 W
  2341. LDA <Key_Once
    # n+ v& U  ~- w* I; g1 j
  2342. CMP #$40
    2 S3 b- {) ?6 a% m/ y
  2343. BNE Change_Select_Next_10
    7 J; U  }' H: j; p
  2344. JSR Music_Song_Last_10& m  {. V# k" P+ y4 u9 X% u% R8 j# ^
  2345. ;--------------------------------------------------8 o! N: R# @0 ]7 }# Z$ B
  2346. Change_Select_Next_10;后10曲
    . K: k$ s3 O# L1 C3 |/ m8 `
  2347. LDA <Key_Once
    8 v/ Z* d+ }1 `6 p: Q
  2348. CMP #$800 h& R6 K( @& v. s- A8 |( ~
  2349. BNE Change_Select_Last
    3 V) ^- n2 u( q
  2350. JSR Music_Song_Next_10
    ) z1 K3 V0 b5 p) x: F; f
  2351. ;--------------------------------------------------% X/ `$ w; I/ ?) k
  2352. Change_Select_Last;上一曲
      C3 Q4 m, z* M# n5 _
  2353. LDA <Key_Once
    7 X8 N, P$ ?$ W5 ^! J2 s1 p
  2354. CMP #$02
    # M1 r6 N: _5 W$ }2 t. }
  2355. BNE Change_Select_Next
      f4 y) d# o8 }( }3 u0 w: [7 b# \2 S
  2356. JSR Music_Song_Last5 ~& m% k5 L- V) O
  2357. ;--------------------------------------------------, Q! L( j1 Q3 A& |
  2358. Change_Select_Next;下一曲- Y. K7 k& q7 r  E
  2359. LDA <Key_Once" _+ E' v3 s8 V
  2360. CMP #$01
    & \' |7 t* |8 O; q* E% r: e
  2361. BNE Change_Page_Next
    . N* I& R  B5 x8 \: Z# w6 H' X
  2362. JSR Music_Song_Next
    * A1 n, a: p* X3 i
  2363. ;--------------------------------------------------
    1 E; D  U. O$ u7 e9 v. H' R
  2364. Change_Page_Next;下一页
    . Z& c) a4 k1 @; |8 _) y
  2365. LDA <Key_Once4 i/ A3 ?4 b- h! F
  2366. CMP #$20  E: O9 ^' l; m/ u* Q% ~# s( E
  2367. BNE Change_Select_Item_End
    , h3 v; [  u9 w
  2368. JSR Next_Page1 B7 \# y* m3 C2 ]2 e' Y
  2369. ;--------------------------------------------------0 t. O5 D# I3 k: b5 U4 d: h( v
  2370. Change_Select_Item_End% O5 b/ |- a) A( j$ W0 n+ J9 T
  2371. RTS
    7 o# ]- _% i" }+ s& Q8 I  o1 `* n
  2372. 6 R( J1 H" n: y/ ^
  2373. ;==================================================
    ( S6 b8 S4 Q6 m$ e/ {* R" I( X1 @
  2374. Show_Arrow;显示箭头光标+ O8 u# {" R! W
  2375. LDA <Music_Item_Cur6 w, [! c5 O  N3 {. Q* M5 n7 q
  2376. JSR Get_Page_Start_Index
    2 I  _$ a' Z6 `+ E. a: J
  2377. LDA #$00
    . F- P. [, y6 j% J2 w5 W* T( s
  2378. STA PPU_OAM_ADDR6 ]/ j/ v8 Y/ F5 X( `* j
  2379. LDA <Music_Item_Cur6 Y6 h! U( N/ Q3 r  i; n) E- [
  2380. SEC. L1 ]: Y% {5 b
  2381. SBC <Data_Buf
    ( q3 F5 q/ w- U
  2382. ASL A. H0 N# t  b5 O
  2383. ASL A
    9 e( s; R6 {1 \6 k: o
  2384. ASL A
    2 l. ~0 o* A3 y) i
  2385. ASL A
    9 _- Q! o. R3 h  Z* q
  2386. CLC' X4 w$ J1 z$ l# ^* s3 t0 w! \
  2387. ADC #ARROW_Y_OFFSET
    ! K, v# x/ w* s% }5 [
  2388. STA OAM_TEMP_ADDR + $000 s4 {' a# C! n! ~% Q6 ^
  2389. ;STA PPU_OAM_DATA0 S' P3 f& S5 G
  2390. LDA #$1F
    5 K$ ~- R# v0 S. p, c. v
  2391. STA OAM_TEMP_ADDR + $018 C& z0 f/ H, L, W+ `8 \! N
  2392. ;STA PPU_OAM_DATA
    / e7 S* n. `: f; d( I; y' e2 S
  2393. LDA #$00
    2 F; J% s5 a! j- y
  2394. STA OAM_TEMP_ADDR + $02
      }9 ?* c6 M+ R3 P. \  o  M
  2395. ;STA PPU_OAM_DATA7 C* [6 Q& q1 z6 N- c# a; l
  2396. LDA #ARROW_X_OFFSET+ ~' O0 [- Z# K# ]0 W: |+ G; a1 t7 d
  2397. STA OAM_TEMP_ADDR + $03
    0 G8 h' x4 x1 j& D, ~& P% t, |& h: I
  2398. ;STA PPU_OAM_DATA
    5 m  r% N$ g% V5 u( s
  2399. RTS3 o6 S9 l* ~* U9 o( J

  2400. * }# o* r6 y% {4 g9 I
  2401. ;--------------------------------------------------
    1 S; S8 y, N. |# O4 ~4 ~
  2402. ;命名表数据
    4 e9 \/ l# k5 G3 W$ m5 G& L( b
  2403. Palette_Attributes
    , ~% O  I- g3 e4 I1 n! U
  2404. .IF SOUND_BAR_SHOW_ENABLE! c2 G. {! m1 A/ [0 U) x4 _
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$551 ]& z) d3 D2 \: c" m  _" L
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    : s3 M: }- d' r6 ]" ^- I
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$752 }: s: S/ s6 E! w% z# g8 T
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA$ i3 o6 x" d5 f, I" i
  2409. .ELSE1 s5 ?/ q1 c9 n4 O4 c7 {0 `
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    / ?% o* u4 Q8 [3 }' p" l
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55( O) `4 ]9 \( s7 f3 e+ `( `) Z4 u
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    ! p. _, O+ n2 j0 |' F! R% @/ b
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA$ w2 _, G( I2 I3 i$ `" T
  2414. .ENDIF6 [% b6 |6 _9 K4 l

  2415. 7 n  I- W, C2 W) X
  2416. ;--------------------------------------------------
    , J2 P1 H6 I0 v  E# t5 Q/ T
  2417. ;调色板数据! I7 H, P; y2 E9 N
  2418. Palette_Data
    & L) ]7 ~' M0 W
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    ' p5 L* T" Y, \0 i% j" L
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F# ?+ T' E! u+ S' Z( }' s
  2421. $ T3 H& q$ c+ G7 R2 G8 S- Y7 \; r1 R
  2422. ;--------------------------------------------------
    3 K' w$ n' Y6 \
  2423. Static_Text_Data: C6 i# U7 x' S" R8 z  Z) w6 ]
  2424. .WORD Static_Text_Caption_Data4 s+ C. ]* C  A
  2425. .WORD Static_Text_Author_Data
    ' I6 I- q1 b! _7 A9 M( y% h6 o
  2426. .WORD Static_Text_Date_Data
    ( L7 N4 X) a& }+ k: S' \$ J
  2427. Static_Text_Data_End# u( Z5 ^& h; e

  2428. 9 w- w# w6 _. k/ @- i
  2429. ;--------------------------------------------------
    ; V/ [! ?$ j$ M4 F, q
  2430. Static_Text_Pos
    5 @/ N' A' j3 D' g' j# }- v
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    " e/ j9 c  x( @- p
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    - \- v- f; [, |. M
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    9 _/ Q* I% a3 L2 v3 {5 Z
  2434. Static_Text_Pos_End
    2 T! C& V' i$ A/ {+ B3 D# l8 f
  2435. 5 y$ O& ]. L0 R, w9 `$ {
  2436. ;--------------------------------------------------1 G# F& ~* r$ |4 j3 ~; Q
  2437. Music_State_Stop: v0 }  `, E2 V0 B* A; G1 z
  2438. .IF SOUND_BAR_SHOW_ENABLE! B* j3 r% `- ~( R$ L( L5 Y5 v
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    2 [7 F/ b- u  E9 p; U9 }# E
  2440. ELSE8 h% J, k- p; ?$ ~9 e
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    7 D" n4 F4 S' S  D
  2442. .ENDIF" \  l& p7 t. Q1 ^$ r% L' i% D+ _! o
  2443. Music_State_Play
    , G& h2 v( r7 l. O5 l
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00; O9 u7 i" Y7 G" W

  2445. ! B# ?' w6 H$ t$ |+ n% q' G8 D
  2446. ;--------------------------------------------------
    0 H# T9 Y( K: G+ v# w
  2447. Sound_Bar_Text_Data;声音类型文本
    5 m( M" O2 G7 N  ?  a
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"/ E! a% E/ E; q
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"5 F. [) O8 N* X6 n/ V
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"; r0 ~( F7 Y4 o5 n% u8 v& o6 a( s! G
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"! `! T' n* s/ M9 r- ~) d  d
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    0 k, s/ o1 @3 _  B

  2453. ' \* l. ~  |( G& f+ s% r
  2454. .IF Track_Name_Pos
    % q! b$ L1 s9 d7 z* F7 I& A! l
  2455. 9 s- n3 l& _2 Q8 U0 e
  2456. ;--------------------------------------------------$ ^2 C& R& |1 p, E
  2457. Track_Name_Addr_00;曲目名地址索引; C- r+ p0 O7 v
  2458. .WORD Trackr_00_01- B; y, V. S, u' g5 y+ Q

  2459.   @. U' z# t, C
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    5 B5 H( v3 l4 F# O/ x
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    7 \* t- Y& ~, j9 s4 q& n& B7 {

  2462. " _- i+ Y# H$ o* a. W1 Q( |; L& {
  2463. ;--------------------------------------------------! L- j- q" u! Q+ |9 }8 f" N- M  C. Q
  2464. Track_Name_Addr_01;曲目名地址索引
    6 m$ K3 I" c' F3 i; b) ^- T; {9 ~
  2465. .WORD Trackr_01_01
    ! V/ e% z& b, F0 @4 |; X
  2466. 7 z1 F" @9 _8 M8 q; P4 |
  2467. ;==================================================! M2 m' w' S: @/ o7 S0 `  x
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"5 R# H* D7 @0 [8 r* z
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    0 K! d4 {; E" W5 _

  2470. 7 g- P4 l  y4 A' Z- z
  2471. ;==================================================
    $ h  Z" R4 @: n' h. }4 j$ ~
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引5 K. G9 q5 O" s6 x( y
  2473. .WORD Track_Name_Addr_00
    - V: |: q$ P& ]' Q! [) j( r* [- A
  2474. .WORD Track_Name_Addr_01
    & h7 P& y8 \- \
  2475. .WORD Track_Name_Addr_01
    & q" s/ j- k0 h( q

  2476. " p* ^- O( t; |' ?
  2477. .ENDIF  \$ b# ]8 E! |! W
  2478. & t7 M7 {" S8 `7 _4 T  K* H# C1 z
  2479. ;--------------------------------------------------
    0 R- [( I: @6 Z  Y
  2480. Static_Text_Caption_Data;静态文本数据
    & l& P' O( h- V; Q, v$ n0 C
  2481. .DB 16
    , ^0 k% z  F5 t; Z
  2482. .DB "FC MUSIC 12 IN 1"" U9 d) t* P# y. J5 I/ h
  2483. Static_Text_Author_Data
    ) `% F- [" E% I& t
  2484. .DB 25
    7 N( S5 Z: X" |! w# ^
  2485. .DB "EXTRACTED BY FLAMECYCLONE"! Q! L# O# O9 a& m
  2486. Static_Text_Date_Data4 d! f: ]; t. ]$ i" Z, A
  2487. .DB 108 h" ]* N$ o% e5 P* g
  2488. .DB "2023.07.23"" U7 [* v( W1 M! a( o' H1 T

  2489. ; K: `9 m1 ]5 d: P
  2490. ;==================================================/ ~+ G  H5 E6 C7 X3 {5 l/ N# m4 X
  2491. Music_Collection_Name               ;专辑名间接索引
    6 n( v. O/ w  f2 i3 Z2 F: a/ B
  2492. .DW Music_Collection_Name_00$ X3 }+ n: M2 P: p
  2493. .DW Music_Collection_Name_01
    : h& r9 j( e/ j& v
  2494. .DW Music_Collection_Name_02- q# ]1 o& f0 l3 ^  P$ O6 f
  2495. .DW Music_Collection_Name_03. u6 ?* }) t* H+ h4 q6 K
  2496. .DW Music_Collection_Name_04
    , @5 s, C5 D# r
  2497. .DW Music_Collection_Name_05" K4 w) \  F5 h" Y  k8 a
  2498. .DW Music_Collection_Name_065 I' w) r6 X/ V& }# D: h
  2499. .DW Music_Collection_Name_07
    * M% b6 B8 [6 E' v- C2 U/ z
  2500. .DW Music_Collection_Name_085 L0 A6 s# r4 [! d: a! _
  2501. .DW Music_Collection_Name_09
    ! `% m6 ]6 q& V# T7 }* A
  2502. .DW Music_Collection_Name_10
    1 i( _4 F0 @4 P8 P
  2503. .DW Music_Collection_Name_11
    5 \4 o" A% z& W+ O: o' P5 S% b/ y+ |( ^' P
  2504. 9 h6 N2 W) C2 |4 r7 K
  2505. ;==================================================1 k& c. ^& s( K* U- W
  2506. Music_Collection_Name_00            ;专辑名文本数据
    # [9 x# f; Y% g1 p1 I
  2507. .DB 11,"1.RAF WORLD"
    2 o8 Z& _+ {- s& F- f. y
  2508. Music_Collection_Name_01- t; ]6 w7 W; {. w  a/ L% L
  2509. .DB 15,"2.FINAL MISSION"
    , _. M; B/ M3 \
  2510. Music_Collection_Name_024 ^/ w. Z; n! M7 P% x
  2511. .DB 06,"3.KAGE"
    5 ^, Z% [7 V. V' {6 P: v& o) x
  2512. Music_Collection_Name_03
    5 F8 ]; Q( J0 w4 s6 H' W/ E6 _7 p; G$ b
  2513. .DB 16,"4.DOUBLE DRAGON". O8 w6 g. ]4 @, A
  2514. Music_Collection_Name_04% w- `+ T  w5 Z7 O0 u9 z
  2515. .DB 17,"5.DOUBLE DRAGON 2"; k$ T, e2 s9 W, s: y8 S2 P
  2516. Music_Collection_Name_05
    6 c- \: a+ E* A( L* V
  2517. .DB 17,"6.DOUBLE DRAGON 3"2 }7 b( }+ G8 r9 Y6 j9 G
  2518. Music_Collection_Name_06
    % q2 r- F( f0 X' m4 V# k
  2519. .DB 09,"7.ROCKMAN"5 H6 {. |8 Z/ j& O
  2520. Music_Collection_Name_07! Y% V$ s) k$ P, y5 M1 J2 N0 k1 X
  2521. .DB 12,"8.ROCKMAN 2"
    " o8 B4 m( C+ s3 |& F6 F  l; q
  2522. Music_Collection_Name_08( J" M* V0 G- ^& U, R* M& G
  2523. .DB 12,"9.ROCKMAN 3"
    ! q8 x$ a4 |6 f/ Z; u* u7 F
  2524. Music_Collection_Name_09" y9 ]0 z0 ]$ e  i) m% G
  2525. .DB 12,"10.ROCKMAN 4"" N1 g  B4 k: J; }4 }0 F/ B
  2526. Music_Collection_Name_10, _! B: e9 M1 Z# ~% M8 [
  2527. .DB 12,"11.ROCKMAN 5"
    . k5 e# O9 B! `6 [* `
  2528. Music_Collection_Name_11' i7 s+ }% `7 e% G+ j
  2529. .DB 12,"12.ROCKMAN 6"
    $ [" l& p0 p- ^- Y+ l* w5 a# b

  2530. " s5 y) S1 x1 t7 l: P; |
  2531. ;==================================================
    ' ~7 U8 p; p5 H" n& a
  2532. Track_Name_Addr_Flag                ;显示曲目名标记: Y2 i; C/ i, w
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    4 w3 j- g$ A4 o$ l
  2534. 4 E) [6 y& o7 ^, T. g  \* M
  2535. ;==================================================. p* E5 G5 k* q& x9 M
  2536. Item_Pos_Data                         ;光标箭头位置6 K! i0 g7 @: N* J
  2537. .WORD ITEM_SHOW_POS6 }9 g) M7 m; B6 r' a, p, j1 Y
  2538. .WORD ITEM_SHOW_POS + $0040+ s0 f7 o( q8 `# y5 b
  2539. .WORD ITEM_SHOW_POS + $0080
    8 M( m0 v  e8 `& T$ e, g
  2540. .WORD ITEM_SHOW_POS + $00C0% W, l% z1 e7 ^9 Q: |% \# W  |5 E9 x
  2541. .WORD ITEM_SHOW_POS + $0100. o  f# t  I/ O5 B6 W* a7 Z3 q
  2542. .WORD ITEM_SHOW_POS + $0140- p' z  S( \2 R( [+ S! h3 n0 ~9 j

  2543. # N6 l7 }( g" E9 m3 G' \3 E
  2544. ;==================================================
    ! x0 R" A/ ?, _$ O# `$ e- I
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    ' @! Y3 N8 P6 C
  2546. .DW $BFC84 E' p& P" d+ k' B& h
  2547. .DW $D7F0! @7 [, N; b8 _3 ~9 T
  2548. .DW $9FC0
    & U4 u% d1 b+ S9 Z3 P
  2549. .DW $BF70& E6 ]7 t1 K. B" i
  2550. .DW $8003
    , _* N7 X9 `$ i
  2551. .DW $BF30" A* S4 R- h1 x3 A9 V8 X! b& O
  2552. .DW $9003
      h7 r. n$ q! [  Q) t
  2553. .DW $8003
    " G8 m( K' n7 W6 g" I2 f/ k* \- \
  2554. .DW $8003; M* P; M4 v; ]# ~0 _# C9 L/ U
  2555. .DW $8003
    / M  A& m2 W1 {( s5 e' P; C( K
  2556. .DW $80034 @. s. v' f& r* U
  2557. .DW $8003
    8 r! c- [) _2 ?2 y: K$ C' d

  2558. ' S0 [8 j3 v2 A3 [
  2559. ;==================================================' d& I4 C) q/ e' J& b8 [0 n: b
  2560. Sound_Play_Port                   ;音乐播放入口地址# ?5 N5 |- h; {5 `$ Y; }, I
  2561. .DW $8000* a/ `& [! C9 g! Q2 E8 [
  2562. .DW $80017 \9 U0 l- s  J5 t% y1 X! r
  2563. .DW $A000
    3 _4 c. X0 e' g. G$ x  d5 d& x( ?: X
  2564. .DW $8003( P, i0 E' }7 ]5 {- x
  2565. .DW $8000( V; R6 k! P2 ^8 n. ]+ w( F  b( T
  2566. .DW $8003  C5 D" d7 o/ \6 p' M9 r( V
  2567. .DW $9000
    7 C" w" {& E9 P# U
  2568. .DW $8000* J3 R+ O* i, `3 E# ~9 L) V
  2569. .DW $8000
    ! a, }6 _( m+ i* H7 j3 C' Y% T
  2570. .DW $8000/ |( t. h2 r7 P! c0 t5 \
  2571. .DW $8000( {8 i6 S5 g& U, N) P7 p  U
  2572. .DW $8000. x3 Q/ F  g; E! T. g

  2573. 6 t% x) [" y( ~8 y6 s* V, m4 [1 {
  2574. ;==================================================. [) _: [, w+ j8 k* M2 j5 k
  2575. Sound_Reset_Port                  ;音乐重置入口地址3 B* y8 U: b: ~% d2 a) l9 o! j+ W
  2576. .DW $0000
    $ O, P4 C- u7 `8 F6 R8 G
  2577. .DW $0000
    9 r2 ?# [& F$ s
  2578. .DW $0000( b5 {' @2 k9 E* v
  2579. .DW $00005 l" d: l% F& U5 Z$ }
  2580. .DW $0000
    4 n9 N; y. c6 Z% \* Y+ U) c2 H! Y, e
  2581. .DW $0000
    # x& k7 \  S/ N$ ?8 i
  2582. .DW $0000' c, q" E, J, R5 k( A. l% o* t
  2583. .DW $0000' {& c1 j* h. M/ d
  2584. .DW $0000$ i. N& Z9 g( M+ B* F$ V
  2585. .DW $0000
    6 Z6 m+ S( q3 f) f% ]
  2586. .DW $0000" I' X6 `# D2 L! G
  2587. .DW $00009 m" @1 C5 O( o( v$ e
  2588. 0 {1 W4 Q0 u/ Z# v1 |
  2589. ;==================================================9 y( e' u& g6 ^' G
  2590. Sound_Total_Port                          ;曲目总数# [: P& s" M! k. |' O
  2591. .DB 38; R+ ^3 E1 v- s* }& H
  2592. .DB 33$ @9 p% q/ w; E' i+ T
  2593. .DB 49
    2 J& y1 k# K, ^' ?9 T" C8 g
  2594. .DB 41( v5 |8 N% X1 p( A" `1 d" H$ q# R7 S
  2595. .DB 83
    , p* y2 w+ L' s! `2 _1 x( _7 _
  2596. .DB 700 v; J, S6 `1 p0 _9 t
  2597. .DB 50
    % X0 b" ]' Y% L3 \) X: t; [
  2598. .DB 67
    0 P0 K- k" I  `* l, Y
  2599. .DB 573 E" {0 \! l7 X- x% ]  A
  2600. .DB 718 w& Z8 ^% |/ h) G4 ]
  2601. .DB 76, C- W+ i6 a1 H% p+ s) q
  2602. .DB 102
    9 ~! @. C5 B2 i3 K" P
  2603. 8 y6 J7 o: `! f% b7 \
  2604. ;==================================================5 A: }% {# s+ J9 _7 ~
  2605. Sound_Start_Port                      ;起始播放曲目
    , n# ~1 \5 |7 s0 s
  2606. .DB 00
      L2 D( d7 t+ `- U; o- F
  2607. .DB 001 p1 x. P0 b$ ^' d  S
  2608. .DB 00
    $ X: v3 v9 b) h. X
  2609. .DB 00
    " }3 z1 e* O- t: t
  2610. .DB 009 Y( O7 H: r/ t/ s6 B
  2611. .DB 00" J: G0 Y, g) {$ a! I" \. M
  2612. .DB 003 _, P5 ~# z) l: V8 x- x8 l, u
  2613. .DB 00
    3 }: R, k5 `0 r& S; \0 |
  2614. .DB 00
    ' }$ P! f% c4 s; z9 p) {
  2615. .DB 009 Z6 S- |+ j! ]; W$ F
  2616. .DB 001 M" ^( R  f; `/ \3 \- ?: P
  2617. .DB 00. I  J9 e: L* ]2 o$ T

  2618. 2 l/ D7 x1 ]( [" ]
  2619. ;==================================================- }3 R& s7 `. i9 Y5 Q
  2620. Sound_Bank_8000                      ;专辑bank_80008 Z2 B1 g! K' n, G1 J# s2 v% B
  2621. .DB $10+ h/ e% z) [7 L. p& b6 V6 h
  2622. .DB $12- _& m2 i9 X0 A7 c$ m7 y
  2623. .DB $147 H" J/ Y% w3 f1 |' B
  2624. .DB $16
    : {) p8 R' a3 E5 q& D/ F) z# v" d
  2625. .DB $18
    " R. d5 u) B5 i# q' w
  2626. .DB $1A9 ~& \) s8 M: N" l1 a

  2627. ! Z+ E' A8 ]- u8 b1 I/ u2 v
  2628. .DB $00
    " L2 m7 o8 e( c4 B5 Q5 Z  B
  2629. .DB $02
    7 D& e' f3 D2 j" [2 M
  2630. .DB $0D" |/ a9 E) K5 l, y/ q( g( l2 i
  2631. .DB $04
    " g7 I( F+ L# n1 p+ u
  2632. .DB $07$ S0 n* s. Y2 l
  2633. .DB $0A
    7 n* ]5 I. @7 \, g

  2634. % f2 K! T& ~  i
  2635. , \( u; b4 a- ^$ U1 ~
  2636. ;==================================================
    4 d7 L6 J# R" s' x$ y# r, V+ T
  2637. Sound_Bank_A000                      ;专辑bank_A000" }  U! w- E( b9 Y& @. F
  2638. .DB $11% `6 ~- y7 d' _! x) u( A+ {# r
  2639. .DB $13
    + T/ f* [" Z! w
  2640. .DB $154 ?1 ?7 {2 m, G2 }8 M
  2641. .DB $17" M2 x0 P0 [8 y* m8 M
  2642. .DB $19* O9 ~5 G$ Q* ?; K: C
  2643. .DB $1B
    . |- A3 b9 x0 A  G! A9 N
  2644. 8 f9 L/ v  ?  H. M2 P2 k
  2645. .DB $01* n5 u/ T9 n" ^8 i) P
  2646. .DB $03/ o' ~0 R2 R% A: w  H  G4 J; U
  2647. .DB $0E, Y" o0 u$ U/ d- N+ p( }% @3 X
  2648. .DB $05
    % L' E$ t; V. j, n6 ~2 B1 \
  2649. .DB $08
    ) `* g; ]& B! z- S* o* v1 X2 L
  2650. .DB $0B6 M0 S1 }5 `3 [8 n6 M% B( {
  2651. & @& [5 |7 I6 `0 v2 Q! B5 O" t0 Q- @" W

  2652. 2 b) ]8 H# @& r: l
  2653. ;==================================================/ ?& X0 J. \; J
  2654. .BANK RESET_BANK & BANK_DATA_MASK+ V# \1 l$ C) h6 K
  2655. .ORG RESET_ADDR7 o  R8 B4 K! E4 F5 [2 X( i/ T

  2656. - z; b: X( C0 P+ y3 Z7 O
  2657. ;==================================================1 H/ S: ^" a5 ?# _! s& F$ m
  2658. Switch_Bank_8000;切换bank到8000-9FFF& v. v6 c) t9 e" D9 Z+ H4 o
  2659. PHA
    3 B, Y+ ^5 I7 g% j+ B6 _" e
  2660. LDA #$06! }7 U" F# x+ r9 D( w5 i
  2661. STA MMC3_BANK_CTRL8 X& g& l  H- e& M
  2662. PLA
    ) q! _9 S7 o* I" b$ K
  2663. STA MMC3_BANK_DATA
    ' l  }! ?' J8 W+ @' r
  2664. RTS
    9 M2 z4 Q2 U* q% c9 U
  2665. ! {7 `/ i4 x+ Y" P; ?5 x; `' z
  2666. ;==================================================
    4 b6 x' a  b  e9 R
  2667. Switch_Bank_A000;切换bank到A000-BFFF9 l& Z; |3 V4 }- U* W
  2668. PHA
    # |  r: r9 D# R1 M) x' I/ i2 a+ S! \
  2669. LDA #$07
    ) s1 T; o" [7 i+ u) m; H
  2670. STA MMC3_BANK_CTRL$ Y- _: D2 G: u- ~, w* e9 c# l
  2671. PLA! L; r% H, u4 D2 ]& S
  2672. STA MMC3_BANK_DATA
    - w8 e7 G6 w; U8 V
  2673. RTS
    ( Z% m0 Y$ ~" G+ D3 v" h

  2674. & U$ Z$ z( C. w$ @6 H. T1 O4 Z% b% X
  2675. ;==================================================
    3 j5 a( |2 {6 X
  2676. Switch_Main_Bank;切到主程序bank
    # b2 L# ?$ O3 P( o# l$ w. |
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    9 d  v7 y5 G1 _& J* K; r! l
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    3 M! Q" w8 x( {& j# N
  2679. RTS" O6 ?) M  u- k( y3 X
  2680. + E: j6 v+ x+ _& M, Y
  2681. ;==================================================! U# _3 T  H4 w7 q' {
  2682. Sound_Reset;音乐重设(如果有的话)  R$ l" h, }( [
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    " z' G2 ^# Y* u- j$ ~) H2 n4 a4 c  k
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    & g; J; L2 A( `2 a
  2685. JSR Switch_Main_Bank   ;切回主程序
      @% t  Q/ U9 Y& i( X3 _! {- U/ \
  2686. RTS
    : x# K/ N# Y* q. A
  2687. : C  W3 x- b7 {4 L8 ~6 n
  2688. ;==================================================
    & Q/ |: B0 Z& |: o
  2689. Switch_Music_Bank;切换音乐bank
      g, V0 {' Z  d5 i: w
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    : _0 f  g$ j6 p9 ]/ \9 e
  2691. LDA <Music_Bank_8000) j, T; H$ ^; v
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank- q. p% }! |7 o! _) W2 ~5 w) t) V
  2693. LDA <Music_Bank_A000
    9 T" ]6 M/ K) ^. L
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
      d  R3 t5 c  f. d0 @5 x( i
  2695. RTS
    1 c4 H2 ^! Y" d3 B2 w
  2696. . @  H3 T. h$ `9 o% b: M
  2697. ;==================================================3 A7 ?( ?( X5 j
  2698. Sound_Init;音乐初始化* d1 H- g' N; l8 c/ ^! m* S
  2699. PHA
    - R( s: y: j8 P) X6 z
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    % j* R, D6 M* L, e) i
  2701. PLA# A  W( m! r& s5 F; z2 v
  2702. JSR JSR_Addr_Op        ;执行音乐初始化+ e' @; Q, v8 p4 o, ]# q- b
  2703. JSR Switch_Main_Bank   ;切回主程序
    * P+ n1 x2 h% K6 i3 H2 |, B# T0 D
  2704. RTS
    $ R4 z4 W# O' B% ^
  2705. ( R* |, o! P  r$ c0 L
  2706. ;==================================================" P0 z* C0 A$ K
  2707. Sound_Play;音乐播放! B  J& `# l' {$ \
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    7 D$ j3 y4 B( [, K0 |
  2709. JSR JSR_Addr_Op        ;执行音乐播放6 v2 j5 T2 a7 ^- E' G' f8 W7 a
  2710. JSR Switch_Main_Bank   ;切回主程序& e: x: E% m+ Q+ |* L
  2711. RTS, Q5 _1 l$ `9 R7 H

  2712. 2 }" o8 b5 l1 ]" z' @
  2713. ;==================================================$ f+ X6 t0 w+ W9 O3 R. ]0 J
  2714. MainLoop;死循环2 e! N# L. W! z9 ]  Q
  2715. JMP MainLoop
    8 C  }2 r+ k2 g; x% g6 I
  2716. ; ]5 j& G  Q" l7 ?
  2717. IRQ_SUBPROCESS_JMP = 0
    & W! W( p9 ~: g% F- r! j
  2718. 3 Y8 K* S3 n; {; ]" I+ K) v
  2719. .IF IRQ_SUBPROCESS_JMP+ n4 f9 N5 O' z. r
  2720. ;==================================================
    2 F. K: ]! ?/ h
  2721. IRQ_Process_0;IRQ处理过程0
    1 r$ P6 X& D7 I% h

  2722. 8 D. e7 [' i$ d# A/ w
  2723. ;15条扫描线后触发IRQ
    / C8 q4 u' x5 c
  2724. LDA #15
    * Z( `2 P0 Z0 _  K! `5 u
  2725. STA MMC3_IRQ_LATCH+ M2 F9 U0 [, L
  2726. + ]  Y( p* N8 o, b  M
  2727. ;设置屏幕滚动) W& I, b9 R: K3 a- {
  2728. LDA <Scroll_H
    2 x) o: u# o& }, l) x# ~8 d
  2729. STA PPU_SCROLL
      q1 M1 ?' G/ s4 V
  2730. STA PPU_SCROLL, u& y. T1 {$ v$ d# w

  2731. 8 L; ]. S) ~) t; H7 A* g6 ^3 P
  2732. IRQ_Process_0_End' P+ o& C8 j$ E- T
  2733. INC <IRQ_Process_Index& t7 p7 d  k( B0 m
  2734. JMP IrqProgramEnd! c* s) c5 O6 s# X$ D

  2735. + k; l% A  h, A% z
  2736. ;==================================================
    + z* `9 }0 f" j1 S
  2737. IRQ_Process_1;IRQ处理过程1
      f% y" Z& X! U: J- W- c
  2738.   {: F& @6 ^( f2 G
  2739. LDA #55
    % H1 @6 H0 ^: S. j. z
  2740. STA MMC3_IRQ_LATCH
    5 q, Q/ U/ ~& z& T6 O+ |
  2741. % G& Y$ a2 x+ }) P4 j! x
  2742. ;设置屏幕滚动  v6 r  @% H, n8 H7 C( F
  2743. LDA #$00
    5 ?: J: y( X7 O0 r- x
  2744. STA PPU_SCROLL
    9 P- i; V* X$ B+ a7 L9 N" A
  2745. STA PPU_SCROLL
    7 w  a) Y+ M; i# H
  2746. 8 h4 A; Y% u) G3 D
  2747. INC <IRQ_Process_Index) B5 F( J9 G! t; \- b# k% W+ S8 u
  2748. JMP IrqProgramEnd3 @6 e3 i, m: B8 s: Y) |/ p5 p

  2749. - O# ?; g0 o, S0 u5 c' E! _
  2750. ;==================================================
    3 b3 V4 |1 h* v1 z
  2751. IRQ_Process_2;IRQ处理过程2
    8 O+ L* p3 ?9 i% Z
  2752. ; p: f- v% I$ M: O
  2753. LDA #15
    / P6 K5 C- [# j+ l! b* p
  2754. STA MMC3_IRQ_LATCH
    3 o% r: `: W: d" ?7 f; ]) o

  2755. % Z- O/ o7 O+ H1 N" l9 i9 m! ]
  2756. ;设置屏幕滚动! v! V( Y6 g$ X$ [
  2757. LDA #$00, v* y7 U9 C; Q6 @
  2758. SEC  L! z5 ?5 J/ c. j
  2759. SBC <Scroll_H' {) e4 e: u: H2 [  G" y
  2760. STA PPU_SCROLL
    . e/ v( f& N* {0 ]3 n
  2761. STA PPU_SCROLL) w4 Z5 r3 F0 s: q

  2762. $ _, q5 [! z- t+ T9 U$ O
  2763. INC <IRQ_Process_Index
    $ e% @1 i/ M. F+ e/ n/ e# f
  2764. JMP IrqProgramEnd
    . ]( T2 T  Q: h. Q( z1 I- N  F. Y

  2765. ! p9 E" D) t( z3 z: e3 n$ e
  2766. ;==================================================) J9 D6 _7 M/ E! I' g+ _5 T0 h% T8 v
  2767. IRQ_Process_3;IRQ处理过程3
    ( g/ w' F8 I2 G% J; n, c

  2768. 4 I) K- y  A2 `" j+ k, }, Q7 j
  2769. ;设置屏幕滚动0 k( Q; Z- H" k: U- `& h/ D
  2770. LDA <Scroll_H( |& ~$ c$ u, p+ T3 I8 Y: w9 o
  2771. STA PPU_SCROLL
    ; ]# E0 O/ i8 X. S
  2772. STA PPU_SCROLL" H3 b3 }9 g/ P5 }2 c

  2773. % B$ Z" e6 h2 }3 G. h! }
  2774. ;禁用IRQ$ r' \7 O, N- z$ b: |: n
  2775. STA MMC3_IRQ_DISABLE
    ; H$ A* z) t9 ~( z  v
  2776. JMP IrqProgramEnd
    : ]& C, e/ b# N7 k

  2777. $ P. H  J- d+ @- r
  2778. IrqProcessAddr
    9 k$ w, H1 X6 X# e5 h, Z: g4 Y
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    1 v" x- K, c: L! M

  2780. & Z2 C6 L: V( E
  2781. .ENDIF# ]! x6 n$ M( X- W9 C
  2782.   r6 r5 l4 [9 E4 P- E5 i
  2783. ;==================================================* Z- U6 b" s* X
  2784. ;IRQ滚动模式常量, M3 ]8 a& i! H- V
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动* w& L. H, T( \. ]
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动* j4 P" V* b! }- N  V8 B+ b7 B% i
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    & R+ j. q  g2 g$ }0 d
  2788. 4 N' L* {  q  A0 g! I; g
  2789. ;IRQ扫描线数据
    + \% p- [; ~3 A
  2790. IRQ_Scanline_Data
    6 p& e9 y% S5 O9 ~! i# G0 Z
  2791. .DB 8& S" ~. [0 \, B5 x; s% I0 h
  2792. .DB 545 f# P  h( P' k& p: ?# j( ]
  2793. .DB 8
    6 a) D1 [  s2 l0 s. T* t: _8 b0 y& ?
  2794. .DB 00 ;关闭IRQ7 V! ^* p$ D5 M( [! z/ j2 c! X
  2795. ) C- d' Q/ w+ G- u; t2 u% n
  2796. ;IRQ滚动控制模式
    % N  a7 y5 l3 V
  2797. IRQ_Scanline_Mode4 u4 l; O+ D( _0 W+ q/ V
  2798. .DB IRQ_SCROLL_MODE_ZERO% q* G) I8 E$ m# T5 d
  2799. .DB IRQ_SCROLL_MODE_ZERO
    ! H1 t8 e7 ~- Y( _$ N$ _! m$ K
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    0 v- p! D) `- p# `1 v( d
  2801. .DB IRQ_SCROLL_MODE_LEFT
    ' R+ b6 \" {3 o- E, ^% }! `& [7 N9 @
  2802.   _/ e1 @2 Y" Q! C8 [. A1 G7 Q
  2803. ;==================================================
    2 u0 C* d  T  h- _* q" w
  2804. ;IRQ处理5 t, W% t; ?, P8 ?! K
  2805. IRQ_Process8 u* b" E, n4 }" s" r; V' K
  2806. LDX <IRQ_Process_Index& E3 h5 U8 D/ k9 R0 i
  2807. LDA IRQ_Scanline_Data,X7 Z& |3 E0 c5 o8 X/ O
  2808. BNE IRQ_Process_Latch
    + ?" h7 h9 G- }+ j
  2809. IRQ_Process_Disable;禁用IRQ
    ! }+ A/ v7 z2 `/ O
  2810. STA MMC3_IRQ_DISABLE' A' M2 ]: P/ f1 M2 C/ t' X- r
  2811. STA IRQ_Process_Index
    * ^; f: D' I: g, s9 X; h
  2812. BEQ IRQ_Process_Scroll
    0 \+ ]9 }! m4 c0 Z1 N9 X
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    0 b, k8 p* e; b9 l, _- f7 \
  2814. STA MMC3_IRQ_LATCH
    ; p2 n! T' T0 e$ g2 p1 p
  2815. INC <IRQ_Process_Index; d& S. f$ `: H$ Z
  2816. IRQ_Process_Scroll;IRQ滚动控制6 `$ N. y8 a9 v6 H& [& G. e6 Y
  2817. LDA IRQ_Scanline_Mode,X4 A2 N( I3 }9 ~. Y% O# X3 ^/ \
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    ) D- n8 H1 T( U5 Y, {# z
  2819. BEQ IRQ_Process_Scroll_Left* X  h! J( f: A1 \- a* l, V5 k/ h
  2820. CMP #IRQ_SCROLL_MODE_RIGHT, n" q5 ^' j" U$ V- N
  2821. BEQ IRQ_Process_Scroll_Right& L" z2 J; R  _: y+ g
  2822. IRQ_Process_Scroll_Zero;不滚动+ W2 t( s; R" l2 O+ H$ k
  2823. LDA #$002 Q8 I) ]. ^5 n% m; a9 W
  2824. STA PPU_SCROLL0 B3 a; @3 F' w- j; p9 L8 o$ {
  2825. STA PPU_SCROLL
    " T* m" x3 b  f3 M5 m. ^$ \
  2826. RTS
    & n+ D, d" B, Y/ k2 ~7 g+ l  x- e
  2827. IRQ_Process_Scroll_Left;向左滚动
    4 Y8 X+ \3 P( @: M
  2828. LDA <Scroll_H9 h0 B$ {* e6 T4 q
  2829. STA PPU_SCROLL& m6 o$ L3 U8 S  b' a
  2830. STA PPU_SCROLL# s2 t" E. e8 v5 ?4 H5 g
  2831. RTS% k4 D6 @* g! Z8 [- C4 g
  2832. IRQ_Process_Scroll_Right;向右滚动# |2 X& m( ]/ x' G4 V" R3 A
  2833. LDA #$00) h6 W7 ~2 p) O' j( r' y
  2834. SEC
    2 n0 \0 U  X9 p" W0 v$ q8 r; e' B
  2835. SBC <Scroll_H& ~0 F! b5 U9 s, f4 G
  2836. STA PPU_SCROLL
    5 P/ R: m) ?, r% V
  2837. STA PPU_SCROLL0 {1 [7 Z6 ^0 }  h5 w4 \
  2838. RTS
    ) n* M! Q( u* ?* ?% {3 _4 S
  2839. # F9 e5 R' ]1 l# |, O
  2840. ;==================================================/ _# H) X2 D9 {( [, U
  2841. NmiProgram;Nmi中断处理
    . z" v+ F1 u, r
  2842. PHA0 ]: G1 |9 l4 S4 I$ {6 T) k
  2843. TXA" v# ]( m2 u* y4 l- i
  2844. PHA
    + W: P6 c+ c- G
  2845. TYA+ w. T( Z3 W, w4 ?
  2846. PHA
    . Y: k' x% v. C% j$ v9 t5 z7 t# k* l

  2847. ( c- q1 o8 s* m! K8 {3 T0 x
  2848. ;读取清除Vblank标志, 防止重复进入8 j2 W! a1 p1 O& t, g" u0 v
  2849. BIT PPU_STATUS. T) R- a& r$ v7 Z- q  s
  2850. 7 D& T. `. g7 L* r5 D
  2851. ;切换主程序bank+ y2 [: ]! i6 s" J, k7 s: @: X" x
  2852. JSR Switch_Main_Bank; \8 X. I6 Y5 l: x6 b" q: r/ d
  2853. ' ?& D4 {* Z+ o7 D  x
  2854. ;Nmi处理
    0 p1 Z# |* f1 h9 ^
  2855. JSR NmiProcess
    6 u4 E9 N: {3 O5 c4 Y& d

  2856. ' ]$ e5 a, }# J5 ~1 C
  2857. Nmi_Proc_End7 Y0 l, m+ B9 y. G3 p6 b5 ^
  2858. PLA
    2 N& u$ T6 u/ P* U# v7 v% H; v
  2859. TAY4 s7 A) ?1 Y7 n2 {& V- w
  2860. PLA1 k& i! p1 r4 B$ R1 o5 D- u+ `0 k
  2861. TAX
    1 l5 ~. A* P9 \8 H, n' s' z
  2862. PLA1 [1 r' z9 D3 d+ r
  2863. RTI
    5 l! V. l5 O: T4 C2 @+ y* E
  2864. # H! L; S( h& _+ u' S) r
  2865. ;==================================================
    7 ^0 p: A8 n4 `- |, Q1 j
  2866. ResetProgram;重置中断处理, W  d" m  R+ P. `. K6 }, d
  2867. SEI" q7 c7 z1 d1 K5 q
  2868. CLD
      e* A9 `4 G# J! u: y2 |
  2869. LDA #$00$ m: f2 Y, G# u& D8 D0 a
  2870. STA PPU_CTRL! \% ?9 h) P6 b2 h
  2871. STA PPU_MASK7 t% W/ h, x) s" H

  2872. 0 j9 g# h( `8 N5 P
  2873. ;切换主程序bank
    " R% P/ [4 L# Q' Y) y2 g6 K0 J& W, L
  2874. JSR Switch_Main_Bank
    # R* `8 R! F$ f  o7 p# H# N
  2875. + P3 S$ w, W7 G) h, J! ?6 x$ C% A
  2876. ;程序处理开始
    9 D1 M" j5 x# B
  2877. JMP ProgramBegin, U& V9 s5 b! j6 D. }

  2878. 5 j/ k6 T' e) l) W; p
  2879. ;==================================================; p6 U0 ]6 I! o' P% T
  2880. IrqProgram;Irq中断处理
    " |% u3 `' a/ f9 _8 z: _
  2881. PHA
    $ W. T  h) t9 Y6 Z
  2882. TXA  d0 E+ `7 p$ ~+ ?, N
  2883. PHA5 c+ {( ~0 c2 K- O/ ~
  2884. TYA$ {. A. N. ^& }; y
  2885. PHA
      j/ B$ R: k" r9 |7 s; p8 i

  2886. 7 _5 V( s3 D+ g, z
  2887. ;关闭IRQ
    : M6 V4 J% v  A' B( h9 I) n  M/ Z8 E
  2888. STA MMC3_IRQ_DISABLE) s$ U; H% n4 A

  2889. 7 C8 }/ i4 u0 Q: c; Z1 a
  2890. ;允许下个IRQ触发& B/ ?0 y: k, J
  2891. STA MMC3_IRQ_ENABLE
    - Y( Y% Z1 K, H) ~
  2892. ) W/ r0 ?! i& }5 u2 p0 C' g+ V
  2893. .IF IRQ_SUBPROCESS_JMP$ O: S  ]+ M7 G# B
  2894. ! q5 S6 B  a6 Q  y7 ]6 z+ W
  2895. ;执行IRQ过程& S4 l8 l. [. j; o- q3 N- M3 w9 z
  2896. LDA <Data_L% z' z& t8 }" L, U  F
  2897. PHA
    ; D" x  t6 {. E6 d' C  K, a
  2898. LDA <Data_H
    : c) W1 F5 w; f+ C" q+ ^
  2899. PHA
    / j& i0 |: o/ [$ L+ V" ~- l
  2900. LDA <IRQ_Process_Index0 T8 B/ z6 Z1 ^' }
  2901. ASL A  V3 U% U2 s! o. u, g
  2902. TAY
    / ?1 S/ ~- N' r% Q
  2903. LDA IrqProcessAddr,Y9 e4 C! r6 N. }2 e( W
  2904. STA <Data_L: J3 L) {- a' \8 [
  2905. INY% I( P1 o! X. J3 T* _8 E
  2906. LDA IrqProcessAddr,Y
    & x* G/ e5 q: W2 s- D& z: I# a
  2907. STA <Data_H
    ) j6 O* X0 `* ]
  2908. JMP [Data_L]) X$ j, K! ~- x9 H- f4 r
  2909. 9 z; k7 N7 O* p4 c7 W
  2910. .ELSE
    $ [/ p8 S' u5 `" `1 i, O
  2911. ' e4 D' d6 j8 c8 C/ L3 P1 K
  2912. JSR IRQ_Process
    ) i$ l5 @: @; T: G) h7 C

  2913. $ E! y& z' ~/ t* Y" Y, Z
  2914. .ENDIF
    1 P  N* K4 e! L) K" z

  2915. + V' e# |. X: N7 Y2 H. m
  2916. IrqProgramEnd
    + d( b2 X" F6 n3 i
  2917. .IF IRQ_SUBPROCESS_JMP
    5 t+ l: I3 \, M/ e
  2918. PLA
    : L' q6 {8 @  o) |4 Y- j0 W
  2919. STA <Data_H
    4 N4 H% L) U  G: x+ H
  2920. PLA) @6 O% X# S' H4 O# f8 {
  2921. STA <Data_L
    # W1 G" d& ^+ R
  2922. .ENDIF5 i$ t- M- s" G% y1 s: n( o5 W% d+ Q
  2923. PLA" d$ o  |" I6 p* I8 K
  2924. TAY
    ) C& u7 V) b9 f+ t! F7 s5 f/ ~
  2925. PLA* a" U. ]# m2 |% X) V8 Y9 e
  2926. TAX# A* E- r3 ]! _) k6 O
  2927. PLA/ Q8 \5 |, {# ]/ m, s) Q
  2928. RTI
    ( N4 I, n9 h2 i3 ^
  2929. 7 I6 V0 O+ `2 Y2 i# T
  2930. .ORG $FFFA3 F# K% ^8 Y  g
  2931. .WORD NmiProgram. Q0 q" w9 G. A4 f. r" E
  2932. .WORD ResetProgram
    + _$ p9 {5 A, w  i
  2933. .WORD IrqProgram
    ; f7 q4 k( L( }
  2934. 8 n; p/ D% v0 N) N
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    ( Q* ^0 ~( }: `9 t5 t8 J
  2936. .IF SOUND_BAR_SHOW_ENABLE7 Z9 A. @; p# T! p

  2937. ' o/ a7 u+ ]9 N# @3 v/ b2 O
  2938. .ORG $FE00; M2 U0 ]4 m6 M# B$ P& r. x! F6 v
  2939. PHA# N! x: {/ U8 {# q8 G
  2940. STY $07BA
    - `4 r9 \# \2 }, {* G/ ?; m4 d
  2941. LDA #$8D4 c: \4 q, x: B
  2942. STA $07BC, u0 j1 k! w$ A  G/ V
  2943. TYA) K6 _3 w( w8 Q4 O5 J
  2944. CLC3 W# v' R/ ]/ t- ^( \# P" p
  2945. ADC #LOW(Sound_Bar)
    # s" W7 ]7 ^8 u' a6 O( R- o
  2946. STA $07BD" s& \7 Y) H  H
  2947. LDA #HIGH(Sound_Bar)" B& C4 w/ z/ l8 `
  2948. STA $07BE
    3 U) w  \4 J+ t5 ~" Q
  2949. LDA #$60+ g  t9 K2 T, C- f4 t
  2950. STA $07BF) S( v& V- f! d/ u! \
  2951. PLA; w& h4 {4 l$ K3 F( _
  2952. RTS3 o% e4 f, V0 y* |! a4 x0 P4 {

  2953. # J4 W0 M& p4 L# X6 z6 K
  2954. .ORG $FE209 x% ^' P) W) X. {
  2955. STA $07BA' H1 l5 k4 ^% v. O
  2956. CLC
    ; [: i1 t# z/ ?- w1 c
  2957. ADC #LOW(Sound_Bar)
    - b" u' t; j; ]+ J5 ^+ X
  2958. STA $07BD
    $ O4 C( e/ m, k; b& U
  2959. LDA #$8D; Q9 x* k9 L" a; o
  2960. STA $07BC  L; ?2 W; l8 _$ z& z% V
  2961. LDA #HIGH(Sound_Bar)# F% c, J0 z# N2 F4 x; G/ _$ p
  2962. STA $07BE
    / Q  W" `1 s. \& @) b+ G- I
  2963. LDA #$60
    ' W. v/ p0 `# j
  2964. STA $07BF4 n  R. s$ M) `/ p4 ^! l; P2 R
  2965. RTS
      R' E0 R9 `1 x# w( @$ M8 M

  2966. 2 R6 W6 u* B3 l! P2 |
  2967. .ORG $FE40
    ) I: V- \% b& h' O+ r
  2968. PHA: R+ R: t; L/ L7 U! }3 ^
  2969. STY $07F1/ C- N. c0 r* [, ]  |3 M& Z  b7 i
  2970. LDA #$8D1 e  `/ K4 }4 e6 x
  2971. STA $07F3, h: B: X$ `. J* F0 U
  2972. TYA
    % X- O1 J/ Z. f5 e  H0 d9 J
  2973. CLC3 O0 {* ^% p$ D" e* ?; `
  2974. ADC #LOW(Sound_Bar)2 M5 X( p- \% b9 E, Y' F6 R% l
  2975. STA $07F4
      r& W$ Q- h# j& x+ \, I$ `- z2 Z9 o
  2976. LDA #HIGH(Sound_Bar)* n/ i2 N& {& S" D" Y* [  S
  2977. STA $07F5
    ! F3 f" b6 d  D$ T0 G2 s
  2978. LDA #$60
    # H) ^0 e% {) d& ~8 u
  2979. STA $07F6
    - N$ ?) T4 Y, v6 T6 B
  2980. PLA8 ]+ A# z9 |$ k8 k" h' v( o. G
  2981. RTS
    / V0 r( V) m4 u
  2982. / _" ~5 G$ }/ y# n
  2983. .ORG $FE601 g& r: \8 I9 r+ w' _1 S
  2984. STA $07F1+ H; N9 G; T8 w% g% S
  2985. CLC
    1 ]% W, b, X+ B/ H, b
  2986. ADC #LOW(Sound_Bar)8 g5 X, X+ Z5 m9 i% d* n
  2987. STA $07F46 P! N! z' `0 @( E: E7 `: b2 U: p
  2988. LDA #$8D
    * W! j1 [: q* g: L# Z# m1 Z/ Y9 }# k
  2989. STA $07F36 C- U% i5 K3 u1 y4 x7 P( ^5 L0 B
  2990. LDA #HIGH(Sound_Bar)% ~  k6 v: u/ n! N6 U) f% z
  2991. STA $07F53 X  q% K/ Q8 n9 u) u: P9 M( a
  2992. LDA #$60
    # Z$ B! z5 l) y' P7 ?
  2993. STA $07F6
    * `$ ]0 G7 w2 n
  2994. RTS
    & H$ E& R% w3 b; d! f
  2995. - f, y4 m& x1 D2 X- ~( [% M
  2996. .ORG $FF40
    - r( G4 ^2 ]- x# E! v) z
  2997. STA $4000
    ; y& O2 v- l0 S8 @) C! [
  2998. STA Sound_Bar + $00& b4 P5 @, y, ~5 q& K  K- w" f
  2999. RTS2 O9 a4 N5 Y2 X! u" f$ U. _/ n9 H
  3000. , a0 s& r7 Z2 R' ]8 ~5 f. A
  3001. .ORG $FF481 ~" q& Z* y$ ?. |: J
  3002. STA $4004
    # j" \1 ^1 [9 l& B, i. a0 N
  3003. STA Sound_Bar + $04
    ' F6 Y5 E  R* |" q+ A& P
  3004. RTS% h2 J2 p+ f" m2 Y# }

  3005. ; ~, L# Z" O+ l# V% F
  3006. .ORG $FF50( }5 P# N6 `: T$ ?2 L
  3007. STA $4008
    1 u1 _2 H1 L' S+ T. M9 ~, S
  3008. STA Sound_Bar + $08
    ! _! c- h3 b4 w
  3009. RTS: b* Z2 P: M/ g! e

  3010. / O. t7 b1 N! {6 p. c; t7 w
  3011. .ORG $FF58
      w# O. C! z1 t. X) ]# v7 S, k
  3012. STA $400C) W; o4 F) V: h' `% c, l
  3013. STA Sound_Bar + $0C, ]! n8 `& U: G
  3014. RTS
    4 x, t9 H$ v1 r2 {. Q$ V* p( U0 F+ [  D

  3015. , p, z- s& P( y/ c- U& l& p: B) f
  3016. .ORG $FF60; e8 p1 G& N' f6 m9 V* ~( f
  3017. STX $4000
    % V; \4 [/ x" R
  3018. STX Sound_Bar + $00
    0 i$ f# u6 u4 ]( Z9 v
  3019. RTS% y, a, Y' ]& s2 @4 z  [* `
  3020. 0 j5 Q% @2 \1 V
  3021. .ORG $FF68
    7 Z  F7 v+ i7 A4 a  f7 O6 J
  3022. STX $4004
    9 p* o1 c! k" E7 o. E- \7 q
  3023. STX Sound_Bar + $04: t" r0 r3 g, ^/ f4 t0 N& O4 X" B. e
  3024. RTS
    , m% g: Q3 {2 b3 X" w0 K2 P! G

  3025. 0 c9 r5 e, u1 {$ h& {
  3026. .ORG $FF70
    & e& K9 u! |% k5 b2 r, f+ O& ]
  3027. STX $4008$ c9 o. p8 k6 r
  3028. STX Sound_Bar + $08
    - ]  V1 G4 n3 ?  {7 ^
  3029. RTS
    % O/ V: Q6 _% R* F
  3030. ; o* c% B7 C: I1 E0 |
  3031. .ORG $FF78/ \/ t" |" h: d; L6 @2 t
  3032. STX $400C4 S9 U( s5 {6 t' K' \5 E
  3033. STX Sound_Bar + $0C
    / h% t! f7 P. w6 q1 R
  3034. RTS/ }9 @) [/ H! v4 f/ p4 a
  3035. : R2 @9 h( E2 `
  3036. .ORG $FF80
    : {& a! ]( a/ G9 U, a& T8 e) v2 F9 |
  3037. STY $4000  }, P# C; F2 Q+ `
  3038. STY Sound_Bar + $00$ o; ]& s. {/ e- w% h. ?9 t
  3039. RTS1 S, P- z- N! D

  3040. ) M) N) ?6 d* d- {1 j' f& r
  3041. .ORG $FF88
    5 w8 A# w/ w& ]7 z. E
  3042. STY $40048 b1 B4 o# i: ?4 L: ^! f8 ^) d
  3043. STY Sound_Bar + $04. b7 A9 H% l' b$ i  R- C
  3044. RTS
    4 j- `5 [( U+ |# y& W: a

  3045. 2 n9 F6 u4 \1 a; ?4 X  G
  3046. .ORG $FF90
    1 O9 U. X5 U% I  l) b& O
  3047. STY $4008; S* U; D6 M* ]- w
  3048. STY Sound_Bar + $08% c" I2 V$ B" y  T) A, p7 F( C
  3049. RTS
    ( B) n# V. N0 p  C/ J' ^' R: V$ _9 V

  3050. 7 O: I0 D6 u; ]- y& u, o1 g
  3051. .ORG $FF98: ]$ g5 X9 e5 j: M9 j6 I
  3052. STY $400C; u1 P0 [" s2 l/ ~; N% F+ y: _
  3053. STY Sound_Bar + $0C$ H& }6 ]% d9 n2 ~" P$ g/ ]
  3054. RTS2 \! q6 o% f0 N( c* x: c4 e  {

  3055. ) g* n* C' {4 L3 n
  3056. .ORG $FFA06 y$ M/ l3 l; a) h# |3 \- r
  3057. STA $4000,X
    8 S. M; j1 ]& l* K$ j+ P! }& {! y: g
  3058. STA Sound_Bar + $00,X
    1 G% i9 J% H' \! j# R
  3059. RTS
    2 W! P) n& F7 I6 X9 F
  3060. ' M! @4 I0 ]% o! q* l7 `) Q4 k
  3061. .ORG $FFA8' u1 }& u7 K- l
  3062. STA $4000,Y! b3 A/ l8 @9 H. i/ K
  3063. STA Sound_Bar + $00,Y
    $ Q1 a. W$ T" g9 G+ M2 G) @
  3064. RTS
    : r) d. F" v: `

  3065. 1 `( G( u" j" x% Y0 `
  3066. .ORG $FFB0* t5 u. X( e3 V5 A7 b3 a. R( n
  3067. STA $4004,X/ |" u3 D) ?3 ~
  3068. STA Sound_Bar + $04,X& |, X* A) X# N6 Q& ]9 J' l
  3069. RTS
    1 F& S" H$ u. d  Q

  3070. & b- U) a3 p# i4 I
  3071. .ORG $FFB8
    , z' a: @, \/ C, ?8 b
  3072. STA $4004,Y4 y8 b. ~+ `" r( d$ \( v
  3073. STA Sound_Bar + $04,Y% q) A  ~$ M" G2 b7 f
  3074. RTS7 j! |8 a, N8 e
  3075. ; B4 C; ^$ [$ a
  3076. .ORG $FFC0
    6 `* ]6 v- }3 V/ `
  3077. STA $4008,X
    - F7 Y3 K* F; O7 Q6 \# R
  3078. STA Sound_Bar + $08,X) [7 q; O. r% _
  3079. RTS# L' r2 G" s" c. s  i) h- J
  3080. 0 d# }9 S5 Q% l5 C2 u5 E, y
  3081. .ORG $FFC8
    / L# t% j4 ]/ V) V7 ?& V
  3082. STA $4008,Y
    5 v/ g4 P0 M3 ]: s/ h
  3083. STA Sound_Bar + $08,Y
    3 f5 {2 H* M/ Z9 z1 ~0 X
  3084. RTS$ h7 ?0 g! A. c' f1 M, {
  3085. . [! L' t3 C, ?  }# }! s: o0 x/ k- j# _
  3086. .ORG $FFD0
    4 Z( d2 I9 _' w( O0 K' g/ \$ g
  3087. STA $400C,X
    ( k) |# r! l/ w6 h! x+ P  q
  3088. STA Sound_Bar + $0C,X
    0 j. J% H; H0 C- u; ?! q' |
  3089. RTS
    ; d0 m) z. o8 ?9 A& s7 t1 F

  3090. ! c# b4 U, x; Z, @1 Y" J
  3091. .ORG $FFD8! |( R$ ?$ a+ L6 N
  3092. STA $400C,Y- \& u! P# t" L! ^3 ]
  3093. STA Sound_Bar + $0C,Y
    3 j7 l, c* [1 o" e" u/ |
  3094. RTS6 }' o& S" s4 Y9 K% ~( R# {0 T

  3095. 2 o. K! F) @# @  X/ }( C1 X. ]9 k
  3096. .ENDIF
    / x( N! z. H# N! n# h
复制代码
) Z4 C1 k. z+ Q- j9 L( N, ]. R
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[发帖际遇]: yandagui扶老大爷过马路,警察叔叔奖励yandagui 3 个 柠檬. 幸运榜 / 衰神榜

签到天数: 3148 天

[LV.Master]伴坛终老

发表于 2023-8-5 12:37:15 | 显示全部楼层
非常支持您
[发帖际遇]: 一个袋子砸在了 leshui 头上,leshui 赚了 5 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2026-3-17 04:08

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表