EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
% A+ l; g; `3 E2 _4 }
" g) x4 s6 l, o! m+ ?" `" R- ^[FC][音乐12 IN 1]/ f3 J  g3 N; N" |0 j
时间: 2023.07.23) Q8 i7 a0 S* f. n6 X
作者: FlameCyclone
. K( n" J7 Z) l
# @' O' p5 p7 l  p8 \; g收录音乐内容:
, E/ y) J1 E' \; d2 t( }. M' ]6 F1.Raf世界
  W& P: |( q+ P6 s! K2.最终任务6 |, V5 w8 y2 b# |2 E5 h% h
3.赤影战士  w% |4 v0 [) i3 a8 T
4.双截龙
! R, \/ a8 C3 D" k8 n- W5.双截龙2# R+ b" G; [! z" `% R
6.双截龙33 E4 v- S' P7 i# Z7 N; m4 u) j. X
7.洛克人/ D. R0 P# J( ]3 J
8.洛克人2
4 v9 X3 n& c  i: `. z$ @- G) c" J9.洛克人3
1 l7 E& e, C- o. ?0 t8 F10.洛克人4
: ?% r/ }/ L- }1 Q1 r. A: a7 S* c11.洛克人5
7 e, @- B; y# [& g4 F3 g12.洛克人6& s; X/ d5 V+ m2 I% N' k& a

* x  G3 @3 v5 v! f1 H+ \+ n操作:
( i2 U# r  K6 }" Z1 I  y) r上键:         上一个专辑7 D" I' M+ s( e& X5 V
下键:         下一个专辑
& o2 P; v! W' b- o3 x左键:         上一曲, f$ ^4 [/ F* |
右键:         下一曲
/ w( f& \  x9 HB/A键:        前10曲/后10曲# n2 l& r1 [0 q, c% H& \) L. T
选择键:       下一页( d! R# }$ c' g( ]2 `! u
开始键:       停止/播放
' g: `, C+ _2 Y# y$ c  F: m5 `1 m* `! x, I3 J$ p
http://flamecyclone.ysepan.com/" X0 k; d& I- r3 x) S
$ y. y9 l" X0 X

2 B/ P. n4 t$ U. Q# F' [& s2 q2 F* e" E
# ^; `* b6 {7 U# O: ^
  1. ;[FC音乐][播放器模板]
    * h9 ^- T  k) Z4 I; Z4 n
  2. ;FlameCyclone 20230710% z  i1 e4 R6 T4 A+ m' U

  3. * M) f7 W( g. {* @3 `- w* w
  4. ;文件头6 `8 L% D, m8 u2 n3 n1 i
  5. ;======================================================================
    , y# i$ t; K$ t8 O8 x( _0 C
  6. .INESPRG 16                                             ;16KB PRG 数量) {$ G) D9 G! @+ V, ~: u3 M4 E
  7. .INESCHR 1                                               ;8KB CHR 数量5 _. \, ]( w" u# M" q, b/ C7 M
  8. .INESMAP 4                                                   ;mapper 4
    ! Z  \/ y  w4 p& T' L
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直8 m- e! {0 Z4 ~

  10. 9 _2 K5 ?; w( a, d
  11. ;==================================================/ d. J& Q; s& L
  12. SOUND_BAR_SHOW_ENABLE       = 10 m* _  J8 b( ?/ V- q- q" s5 p1 F
  13. ;==================================================# A# t- L" f! x0 A
  14. BANK_DATA_MASK              = $1F
    : ^# Y+ @# t2 i8 F7 D( r" y8 X
  15. CHR_RAM_ENABLE              = 0
    & A; _% _, J- V8 W0 ^( i$ i
  16. IRQ_SCANLINE                = 136( ^3 n& D# `) m4 Y# c! D( H% Q
  17. ;==================================================/ l0 X6 j0 A! G: j
  18. SOUND_DATA_BANK_00          = $004 t' j& `9 s* L  ^9 F! |
  19. SOUND_DATA_BANK_01          = $01& ?0 H4 d, G; P
  20. SOUND_DATA_BANK_02          = $020 I5 [- T1 d. d4 D: e/ G+ q
  21. SOUND_DATA_BANK_03          = $03
    $ ~% }( S( |5 S# y7 U! t  |5 w
  22. SOUND_DATA_BANK_04          = $04
    ! u/ m. o7 ?+ t; n8 a
  23. SOUND_DATA_BANK_05          = $05& n9 Y+ c* q4 y0 b/ Y
  24. SOUND_DATA_BANK_06          = $06
      }2 Z! ?9 U8 s2 `1 d! Y8 y- f9 _
  25. SOUND_DATA_BANK_07          = $07
    / N9 f+ y% w2 D; C( r
  26. SOUND_DATA_BANK_08          = $08
    / a2 e" W% h- m5 |8 v5 P
  27. SOUND_DATA_BANK_09          = $09
    & ~6 m% |2 C# `1 a) @9 h8 H
  28. SOUND_DATA_BANK_0A          = $0A
    % b. y! h: o( E! ?" k) h% L- c. E; I8 h
  29. SOUND_DATA_BANK_0B          = $0B
    " I. r( A% \' `5 R
  30. SOUND_DATA_BANK_0C          = $0C
    9 H, j$ @8 P  ]) f0 O, R
  31. SOUND_DATA_BANK_0D          = $0D( B9 J8 E- Y2 ~! X7 k, B) w$ l( c
  32. SOUND_DATA_BANK_0E          = $0E
    2 k" x/ z- s" Y& o3 O! r; _6 f- Z; N
  33. SOUND_DATA_BANK_0F          = $0F
    & W5 K6 Q. N( S! A2 ~
  34. 3 l9 n5 H! t. Z+ K5 }
  35. SOUND_DATA_BANK_10          = $102 X- L0 R  \; o3 U
  36. SOUND_DATA_BANK_11          = $11. a: _" _% P; j" e( C7 {( d6 x
  37. SOUND_DATA_BANK_12          = $12
    4 F" G: L- `: s* }0 h  S6 a8 }6 [
  38. SOUND_DATA_BANK_13          = $137 L+ ?7 o3 `, G  B
  39. SOUND_DATA_BANK_14          = $14
    ( U- I8 K6 g8 d3 P+ p' f
  40. SOUND_DATA_BANK_15          = $158 {& Z  g5 ~7 K* N5 q3 N
  41. SOUND_DATA_BANK_16          = $16
    $ ?$ m. F1 H, y8 R3 h: e* m; p  u% m4 B
  42. SOUND_DATA_BANK_17          = $17
    % W& {! D, M7 l+ W  f6 j9 l# h
  43. SOUND_DATA_BANK_18          = $18' p- d; A+ ~- S9 O7 I. U5 C
  44. SOUND_DATA_BANK_19          = $19
    1 X2 {/ n6 t6 \0 z0 ?3 c
  45. SOUND_DATA_BANK_1A          = $1A
    8 {& x/ N2 l, W5 D( r
  46. SOUND_DATA_BANK_1B          = $1B
    ' v- T4 e* g, Q  f
  47. SOUND_DATA_BANK_1C          = $1C
    ' u! T9 P: k7 D, V: \  D8 s
  48. SOUND_DATA_BANK_1D          = $1D
    1 @1 G- C3 E5 M8 X9 i

  49. * ]8 H3 \4 F% u  Z2 f- q
  50. SOUND_DATA_BANK_C000        = $1E% y* G+ x7 Z3 e- G3 ^
  51. SOUND_DATA_BANK_E000        = $1F$ J+ x. q  z# |. h. {# y: i+ a( ^
  52. ;-------------------------------------------------+ A. Z3 P3 u% t6 x- s; T/ I$ Q
  53. CHR_DATA_BANK               = $20
    - m$ K" p7 P% {, d, `
  54. CHR_DATA_ADDR               = $A000
    ! I6 L8 g/ |$ Z- r: x: [) ^1 A" s# C7 C
  55. ;-------------------------------------------------
    ' g, K* E: W* c& X- O- Q
  56. PROGRAM_BANK                = $00- J  p9 K: f2 c' \6 o# K/ ]# r
  57. PROGRAM_ADDR                = $80006 x( T+ G. B6 T1 C
  58. ;-------------------------------------------------
    ! s) U4 J. F% n- H
  59. RESET_BANK                  = $1F
    ( B4 Y: `! U5 p% s
  60. RESET_ADDR                  = $FD00
    7 R% G( M9 `8 K0 I2 x! c- A& a

  61. & I( D0 C3 q& ?5 p: W4 X7 ]
  62. ;==================================================! `% a. n# f3 ^3 B* ~5 E3 x
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数; J: q" o" i+ v0 l* q* N; C
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引+ ?! k1 p  A' ^
  65. PAGE_SIZE           = 5                     ;每页节目数2 [. P% ~. v& r2 q

  66. 0 T( `) K; F: g* @/ K3 T  J5 a1 n
  67. ;==================================================
    ! V" F9 C! h1 |0 h4 C( v
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    ! q2 c1 ^5 H& k
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    9 p  j2 ~  q% y3 p% V; @" c: \
  70. .ELSE
    ! E0 N" u" z) [2 W7 \
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    4 W" _! x6 z& @: P% Y0 `7 W3 r" E- ?# v
  72. .ENDIF
    * {2 M2 n; y! x$ q+ A  I

  73. / y" _8 C: D; }# _2 r- P+ }
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引& ]+ C9 ~0 H7 d9 O' V& R: T  J: l

  75. 6 b* x4 N4 d3 R% ~2 y
  76. ;==================================================% h7 f' h, u0 A% k, x) X& }
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    / _- M, y7 O+ ]! Q( U1 V% R6 [
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 29 |3 V( C$ }% C" h
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;: l1 s% q- d8 M9 w  Z( T
  80. ;==================================================
    ! u6 H9 D5 k; M$ S
  81. Caption_Text_Pos    = $204D ;标题文本位置1 Z6 o) f2 R8 n( p3 m
  82. Author_Text_Pos     = $2324 ;作者文本位置: s7 J) d5 F5 A5 u6 L
  83. Date_Text_Pos       = $236B ;日期文本位置9 R) D, F9 R1 o$ a  ^; F2 {: L4 [
  84. ;------------------------------- [1 w! S" \; Z7 m3 D; |/ V9 y
  85. ;------------------------------
    , L! n) s# m& w% c) s  `
  86. .IF SOUND_BAR_SHOW_ENABLE
    ' W6 Y  q! F( f) X7 f8 Z
  87. / E( |1 c. p7 j! j" |3 E4 e( L
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    2 F! u* f0 L( {8 q  S
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    4 S# g0 c/ C$ ~9 J: f/ U
  90. Play_State_Pos      = $22F3 ;播放状态位置6 L5 x5 i- V7 j4 r

  91. % c9 s/ a$ m5 ?
  92. .ELSE1 g" A& o) Q( C

  93. 3 ^/ d  F* H9 o! q4 o8 n
  94. Play_Index_Pos      = $226C ;当前曲目位置7 }$ ?, i+ }9 v, i$ h
  95. Play_Time_Pos       = $22AC ;播放时间位置7 h# B6 v5 O9 u( B
  96. Play_State_Pos      = $22EC ;播放状态位置
    3 ?! P  M$ H! d

  97. ; Y1 x; ^5 n* K- h. ~# \0 y/ g
  98. .ENDIF
    1 o* X) b4 M: `  C1 f3 y! n3 I
  99. ;------------------------------" C# g9 w& c* X5 |. J
  100. Track_Name_Pos      = $222B ;曲目文本位置
    ( \% K' {% p( j: ]2 W% @
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    7 L& _5 L. e& [9 m, }7 E2 h$ M# q) Y
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    6 Q7 W6 d$ Y6 G$ Z& }+ B# t) i
  103. Sound_Bar_Pos       = $2269 ;音乐条位置0 G6 K# b$ j1 v2 G7 l2 i, z6 F
  104. ;==================================================7 F4 ~% `/ j% B5 H" }8 Z( R
  105. Scroll_X = $00" T; Y: [$ S8 K, A
  106. Scroll_Y = $00
    4 H; [+ A7 B, i0 @
  107. ;==================================================6 j, }+ y+ o. d6 U- b% f
  108. Sound_Ram_Addr_1       = $0100
    1 C6 W* t1 V4 a7 g! S4 S9 k
  109. Sound_Ram_Addr_1_Size  = $80! p. }  I# }' O" R' O( m2 [: I" x
  110. Sound_Ram_Addr_2       = $0090
    * _' \( q  r, a3 v6 ~
  111. Sound_Ram_Addr_2_Size  = $70
    3 q! e9 z# [1 I4 O( }" s* I/ F) f
  112. Sound_Ram_Addr_3       = $07005 L6 q, ~3 y, {: n
  113. Sound_Ram_Addr_3_Size  = $00
    / Q0 s8 F5 I3 _! l8 k: j9 V- z
  114. Sound_Ram_Addr_4       = $0400
    3 J0 M5 G  e7 z/ \( Q1 ^! {* o# ~3 R
  115. Sound_Ram_Addr_4_Size  = $006 a! I& p/ h* d0 A8 J
  116. Sound_Ram_Addr_5       = $05006 b! I" n4 N* P( F
  117. Sound_Ram_Addr_5_Size  = $40  @& C  \+ r% B

  118. / L* M! _7 ~- h( ]" \$ M, a
  119. OAM_TEMP_ADDR   = $0300
    5 |* a) C. J# `7 z7 a6 t' ]3 I

  120. 4 g% M6 ?: [2 f
  121. ;==================================================
    * i4 \: K3 X  h# Q0 b9 |' v% G
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器& D, J0 o. L* Y% ]3 x3 l
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器6 Y6 L4 Z- x- w& O% W
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    % m! O- t2 a' |4 T+ t
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    ; ?( f8 m8 M; `; m3 z6 Z% X
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    : y& b2 o% y3 e. s8 o; ]
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    3 s; u2 C7 V, q& Q/ o$ U' j% n
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    - Z4 t( a1 e5 k3 N
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 $ w7 G7 V/ r# q) V
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存. t) H6 W7 {% e0 T# m
  131. APU_STATUS              =   $4015   ;声音通道切换
    0 x. _" [5 F# n* [$ j
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    ' Q! Q9 P2 F! B) z7 }
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通" p2 G+ o- R8 T, v; M2 L- Q
  134. ;==================================================; f9 U5 h0 a3 ~& f
  135. MMC3_BANK_CTRL          =   $8000
    & E9 Z. I' ^: ^2 i5 w
  136. MMC3_BANK_DATA          =   $8001
    * I% l4 A; A, W) ]
  137. MMC3_MIRRORING          =   $A000- |" N' J2 q9 c
  138. MMC3_PRG_RAM_PROTECT    =   $A0011 p/ }& h. r' K* _$ p* b3 X
  139. MMC3_IRQ_LATCH          =   $C000  E9 x+ b9 J: y& x- M; n6 X+ ~
  140. MMC3_IRQ_RELOAD         =   $C001% k3 L/ O1 \/ m, j0 V. |6 ]
  141. MMC3_IRQ_DISABLE        =   $E000
    7 r% ]) |/ @7 p/ G( f3 G
  142. MMC3_IRQ_ENABLE         =   $E001" x) l6 e2 K1 ~- f, `
  143. ' F2 u' I5 C3 w- `; x! `8 \
  144. ;==================================================$ |3 ?( E" e- R+ y4 X
  145. PPU_Addr        = $0200
      g- P. X% v2 N# @! d
  146. Palette_Addr    = $02C0( Q7 K0 n% p9 f4 a9 k. Q! @3 X
  147. Sound_Bar       = PPU_Addr+$E08 Q/ E1 m/ }( B+ ^2 Q# J4 m
  148. ;==================================================0 D2 Y/ [* ~" j! S& H; s$ p1 s
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    ( O( F% Z/ p7 W& Y: l! t' R
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11# \. v7 k; K( Q$ K% f9 \
  151. PALETTE_UPDATE_MAX      = $2C
    9 q9 E% B0 u9 z, {& d
  152. PALETTE_UPDATE_MIN      = $211 e4 c) J+ \5 u% L4 [
  153. PALETTE_UPDATE_INTERVAL = 60
    3 _, o# T  y- [5 I2 f, B; C
  154. ;==================================================% ^& E3 }+ Z2 P  I
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    ! E/ |1 T8 w& d1 C, x% z
  156. PPU_Cur             = Sound_Bar_Cnt+$025 `+ Q" v' _4 R
  157. PPU_Addr_H          = PPU_Cur+$03
    9 D5 f. K+ `  ~! r8 G4 m8 A/ q
  158. PPU_Addr_L          = PPU_Addr_H+$04% k2 c) c  H* ^
  159. Screen_Ctrl         = PPU_Addr_L+$019 l+ g2 F& }+ ?$ B
  160. Screen_State        = Screen_Ctrl+$01
    / J% ?1 Y* q+ c9 J. N; [
  161. ;==================================================
    8 Q; s( \% G1 f( }& Z% {
  162. Use_Ram_Begin       = $50
    3 ]! \4 P% P# O' a! y
  163. ;==================================================
    7 l% I! u1 `5 S4 Y. g+ d
  164. JSR_Addr_Op         = Use_Ram_Begin) w9 o: J! J4 B. r0 f4 |* P. d
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    ( z: q" M, S+ h6 U+ S) x  @  D
  166. JSR_Addr_H          = JSR_Addr_L + $01* w# O( x2 {4 ?# c7 d
  167. JSR_Addr_Rts        = JSR_Addr_H + $01! b: d% h8 |9 e, e1 e4 m) H
  168. Data_L              = JSR_Addr_Rts + $01
    5 u+ Q9 a: w6 F) m, M( t
  169. Data_H              = Data_L + $01
    ; g1 l) N$ L( `
  170. Data_Cnt            = Data_H + $01
    / Y$ V2 Z' @) a6 r; J- K
  171. Data_Buf            = Data_Cnt + $018 q7 O' c# H6 ~7 K' Q6 b
  172. Nmi_Time_Count      = Data_Buf + $01
      P1 X! T( q6 o; l3 e: i& I
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01. E" r4 d3 l" C! Q- Z
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $010 S+ J' j+ `9 J! h, P( R3 h

  175. 6 F& o: Z; _" _$ |* ^2 E
  176. ;调色板刷新标志
    1 Z/ j; S# E+ n+ t  u
  177. Palette_Update_Flag = Palette_Wait_Cnt + $018 N- \& F5 X' J6 b6 t

  178. - `  f# y" S8 a4 [+ z" g9 V
  179. ;当前帧文本写入禁用标志# T1 _% n  u. e8 m- B0 Z
  180. Text_Disable_Flag   = Palette_Update_Flag + $01$ y# T. H4 O" n, J9 q& J0 x6 i% t+ ?% E

  181.   `3 m/ c; J- _3 V6 ^
  182. ;==================================================# w1 Z* Q; s" G* c! r! t0 }; C! `1 [6 t
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    # q) {, _; |- I9 l; T$ j: M
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条, [* g4 l9 I/ ?+ e
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间" Q1 Q) h3 j  M7 o; M' W
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间) g+ @( C) b2 B4 [% _+ h* L# F* v
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间! i: H4 f- b4 U5 r: K
  188. ;==================================================
      I" X7 `! s) i$ ~9 l* o* ~8 C
  189. Key_Keep            = Text_Disable_Flag + 1  V+ X% n. L! r
  190. Key_Once            = Key_Keep + $01
    9 V+ v7 C1 b, Y# K: O' I
  191. Key_Kemp            = Key_Once + $01
    7 R* d% P# a, D9 S
  192. Key_Temp            = Key_Kemp + $01$ l: x/ n! K5 `  M: r5 {
  193. Key_Getv            = Key_Temp + $01
    , ?( c  p4 ]9 V. L0 e0 b
  194. ;==================================================, {' l# X' g- B& ]6 v- N
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集& s3 D' u2 y1 A0 I* I+ I
  196. Music_Item_Last     = Music_Item_Cur + $01
    5 X) v1 L/ ?" D" i
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集- P/ P) O9 H8 p
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    9 M8 A9 ]$ J: L) U( Y$ i
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    0 R# d8 I9 d8 I, K9 M2 O
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态$ G7 }' w9 O+ r8 W  Q
  201. ;==================================================
    5 S4 u! f7 o' [
  202. HEX_Data            = Music_Stop_State + $01
    4 u0 D" H( d! L; J+ i/ f4 n
  203. DEC_H               = HEX_Data + $01
    / ^6 r" t2 s8 z$ Y
  204. DEC_T               = DEC_H + $01! t9 K( Z/ Q6 W. l! ^
  205. DEC_L               = DEC_T + $01# x2 }4 Q. j& Z  s! m% j
  206. ;==================================================
    * |8 ?. l7 @+ m5 j
  207. Time_S              = DEC_L + $01
    ( B4 _" j) U; I" r2 m5 R3 s
  208. Time_M              = Time_S + $01
    * Q7 O6 [. @' W+ A/ [9 V1 c
  209. Time_H              = Time_M + $02
    # b  G" ^  M( O8 E9 _7 N4 m
  210. Time_Cnt            = Time_H + $030 F0 e# ?* W. }* ]9 ~' |+ U

  211. ' Z* M2 h# f2 E8 k9 k$ j' I5 B
  212. ;==================================================
    ' X% s: g# X1 Q* c) U
  213. Music_Bank_8000     = Time_Cnt + 1( G4 }! J: Q9 Z! O7 Z, k+ I: f7 m
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    3 J, ]# C5 t0 Y; u$ V! |
  215. ;==================================================
    % W7 L3 f8 ~  Y, r: p
  216. Scroll_H            = Music_Bank_A000 + 1% P* T0 K4 Q& \4 A3 M3 |
  217. Scroll_V            = Scroll_H + 1
    7 a( p* q# z: H+ A! ?: l1 |
  218. IRQ_Process_Index   = Scroll_V + 1
    3 K1 \4 ?5 Z) W% c; R* i
  219. ;--------------------------------------------------
    8 `8 r/ N/ d% Z5 Z- ^
  220. Page_Cur            = IRQ_Process_Index + $01
    2 E  {; q# X& ~# \0 ]/ R
  221. Page_Cur_Index      = Page_Cur + $01
    5 M8 H& ?) w# A% t
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    ( P* Y" R+ w/ K6 S- g8 ^4 D5 c
  223. Page_Last           = Page_Cur_Cnt + $01
    ) y; B0 w/ K6 b) o: H# j0 W
  224. Page_Last_Index     = Page_Last + $01
    , f/ c' Y" H/ L' L. R) g  {
  225. Page_Last_Cnt       = Page_Last_Index + $01
    . S; i, g+ N+ r! i3 E# e# N
  226. Use_Ram_End         = Page_Last_Cnt + $01
    3 N$ e0 _& \! e& ]0 q* d
  227. ;======================================================================( p+ K7 v  a9 I) v6 Q6 Q6 A& B" k
  228. ;音乐数据块4 N+ @9 n1 i! ~/ @( j
  229. , p/ ~+ v  _7 B9 p
  230. .IF SOUND_BAR_SHOW_ENABLE
    & E: D9 i" Y5 J% g4 `* v2 E
  231. / e2 f) _2 W* Z' q
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK0 ]: @) v: G* C1 q6 @
  233. .ORG $9000
    ( e* O8 W2 Y! J; Q! v, c
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    ( e& X" L. U  K
  235. / q0 F  b6 h0 s1 P9 n
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ; ?" F0 g& f& _) b0 P0 ^1 _  O/ b% W
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    * t2 V& K& v: o8 u

  238. 0 V; T; ~1 c6 b3 Q' \( k
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    ' {9 L/ I1 ]$ L- W, U2 m
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"# m2 s; a) _7 K) r1 y

  241.   h! d% }5 B! y4 V" J
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    . }# b& H/ l5 X# e
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"2 t/ `1 Z' B- W1 N" L1 j/ K

  244. / B( S0 J" L1 J, P  X3 [4 V
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK5 d5 F% u! N( P, T
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    0 i6 ^6 _, U$ A3 a0 |

  247. - c$ R+ `2 n3 H) v5 C% q
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK3 f' X% C' {" H  g; Q2 b
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    . v9 c- X# h! ^% E6 Y; U0 e
  250. * I: ]7 _8 M. m# U( R& m
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK2 B0 N7 o+ v) b! X2 D
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"  M6 G: S- {4 i

  253. ' \: v7 n2 q1 f. U4 w
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    3 K8 Z9 y1 W# T, Z- ^; K
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    ' _# I8 a- A& V: g

  256. ; [. R# s9 S  Z( K  m- I+ K1 S
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK1 {2 \( d& P$ Q' @: _; P+ K$ M  b
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"6 q3 ^) L5 l6 N% }- R( U" T

  259. % p! b& y& O: _! S% [  p- i
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    3 P' Y" t) _/ e/ g
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"$ n. n) P# T) `  F3 }. s

  262. 0 v+ e' ~. g: s  A
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK$ f. Z& d( o( W: `/ O
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    0 a" ?: G# @$ F/ c# _  E
  265. 2 o6 A. a. _' n
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK9 V) J  v  f' s1 s5 `
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    * O# T. ]4 E% K; v- Z% y$ P
  268. ; F! `" V& @' Q: @
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK# b1 k& s  k& B& `
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    4 |. W9 T/ g! n) ^2 N0 T  r

  271. 6 m1 {# ~5 I- R* L
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    + r+ ?4 a2 _5 A: Y3 i5 q% A
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    ' b) C" \5 b% |

  274. 6 S/ u' @7 e" K  r+ g
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK$ n4 u5 u& ^2 p& r$ E: X
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    / }! h1 d* f4 e3 n( j! H5 q

  277. 8 p. b6 G; G  E! Y1 |0 K% B( V
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK4 Q& b6 o( o0 T
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    $ }) S& j) ^9 `4 z9 L& J2 q2 v
  280. / r4 r. Z; O/ B
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    - _+ P- [4 T9 V4 l/ j! a) \
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"4 g8 j* [: Y4 h. M; Z* ~9 }

  283.   O; E% [/ x2 S
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    9 ~- X8 D" @& U( I# j; {
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    " S$ P' @4 |' i4 U8 S8 t
  286. 8 o7 ^8 c+ h" D$ u: F4 G$ Z1 y  \1 F8 s7 @
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK( F- B; P4 Q: W
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"5 y* i* [" N9 G$ W$ `, D
  289. - X: p' d$ e1 w3 Q
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    # |5 ]0 V2 _  u
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    : n- I. p$ P2 ?
  292. 7 ^& k- \$ f! {7 G7 [
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK/ n) n! d% H* c0 r5 g" ?, M. o
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
      X5 I: P1 r' w9 E( b
  295. ) N# ?0 ]0 `4 P' z( W% v) H0 y3 B9 e
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK. k1 i' Y  X& G1 @1 }
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"6 g7 O# ^/ L" ~. I4 V4 e. W

  298. - w, B: q3 B- R2 K4 \5 h
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    . A9 W3 M# ~$ C4 ^# b$ o  u; R
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    6 C* i! q% Q7 a! p, t* @

  301. 0 _! r$ @9 ?0 g
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    1 x. @1 t9 G, [- n
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    * I+ I& s. ]0 X+ f
  304. $ p. E! @( v/ K+ v
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK4 L, e0 G1 r+ C
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"7 G( k+ S+ i" I. Y7 ~
  307. " O$ O2 Z' T* h& t9 W
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    * B. o; v5 W/ M) t! q  _
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"! _  ]8 @0 z0 U# g
  310. : H1 D( h8 q, `, i# T( q$ w9 C
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK, B/ |3 D' O- [3 b# ]
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    7 i) h0 M$ b$ J' d) I3 C
  313. 0 m3 f7 z% F) Y1 ~: q( o
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK# z+ ]0 q. V0 S! `- |7 i
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    ( v% M8 J1 J1 e

  316. 4 `" [$ s. D8 G/ P. ?* u
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    4 c& B- ~- ~' z% z7 m8 G0 `
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"( K; @5 F+ [+ P5 S- E" }/ K2 [
  319. 0 Z$ q9 Y7 `: u
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK5 i" k2 h/ b1 z5 |( [: ^- A, i
  321. .ORG $D400+ s% B3 M! }4 {) h2 {5 f
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank". |+ M* ~  {2 q
  323. ; h) r& E9 F) h+ M; c* y8 ?, Z3 b
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK0 K9 r  u& h" B% R) Z) g' h0 Q
  325. .ORG $D800
    ' v3 p" Q8 e- L
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"" q1 L3 ?8 E5 o6 K
  327. + u4 R8 h) m: n$ X  V
  328. 9 I  s, U% t5 P3 s0 J
  329. .ELSE, J0 E' p* h5 p' e: i5 i9 P" S
  330. 9 s  t9 [2 u! g2 K% i5 C% {
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    ' E  O: v! C" S" M5 z1 T- I& ^
  332. .ORG $9000
    ! G# L4 g; c+ U+ H" t5 d  h
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"- i$ q1 m8 m% E" x+ x& e
  334. 5 D9 k! j  a* O! T' z& t
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    4 e) E6 ?' F, c! n' T
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"3 H6 m6 d1 C2 V* x1 ]5 R% |* m. r

  337. 0 V+ y' i7 j9 v: G; S5 c
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK* x0 |/ Q4 t) ]0 N
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    & a$ t! x5 O1 v7 S3 M" G

  340. . d8 A* F) y2 x
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK/ G2 m# D3 ?. c! L
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    ' v0 _4 W1 |/ y; F7 \2 f
  343. - l. ]4 v6 l4 S% J: R; s
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK" L$ B9 O/ O/ s
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    + ?! {/ u4 S. ~0 L. Q+ x: {

  346. + b$ O: b& e2 w& Q( R
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    3 S  J& u5 @8 X" K8 V, w) l. L0 `: ]
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    8 |; I' [1 i0 ]# E; w$ K; |6 F
  349. " E* c5 Y9 |/ [- y
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK) D: Q% B7 }! u% j
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"; i: ]: @8 c! Z/ b

  352. 9 F! g; W  i: x2 T) B
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK& p; C0 O' d  m0 D; Z
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"+ J' a0 j2 a. x/ f

  355. . S* W8 U- O1 Y
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK3 r8 e* ~4 O+ @
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    $ Z* A4 i% R+ v! S
  358. - W! d+ |5 ~7 ^* p6 H' u$ g
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    * n" ~! B* F) W
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"$ t- D- z5 c0 W& |4 E

  361. ) ?' }5 M6 `4 b4 M+ b
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK) A( x3 K8 o& _$ p' b" j! K! g
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"/ n6 a' M4 }' Z

  364. / Z6 X" c8 G5 T6 u4 ~9 w
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    8 ?0 k2 k+ I% H. _
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"1 c' q% z* W" ~6 X# X: O
  367. 7 M0 u1 e, [8 n* c' |
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
      o+ D; L4 v. i3 e- {
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    4 n# P$ }' K& j3 _& I* A! P

  370.   \6 W% u; K( ~5 b! Q  ^* o
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK$ {8 |: c+ M) x) ^6 o: l0 P
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"" Z& N7 a* ~  N- w

  373. 9 y8 G$ D2 E8 K9 V+ S
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    . [& t4 r2 @) D* g2 D
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"* S5 m' ^1 y. B" V' q% \0 @
  376. % k. p/ [* f5 P  b4 b
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK/ i1 B0 j& a) m8 ^) s7 ]7 _
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    / ^0 [5 C6 _) I( ?# U
  379. + W% c" S6 h! J5 K+ |) q2 A- q- O
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK) }) k7 j. A; w* j
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    ; m( a' w: _% O0 ~! c- k1 t
  382. 6 T& d+ O' e$ V1 q
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ; u3 ]4 |, Z, C) X& G0 [
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"2 N- M+ f8 _4 O) h
  385. ) @  ~0 [1 T) O" ?
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ! G1 R0 ?$ D" ?$ s6 d. K* J; g
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    ! j! w4 v1 s# J( h  Y
  388. 5 I( q8 q' m( g5 {/ F
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    . c* P% F  ~  Y9 t
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    - |* {. V; I" o# F' L

  391. 7 a3 |4 O5 C6 y% j
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK0 L) L# N1 a* Q% j  X) [/ r
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"& ?7 b5 k% R7 w  e/ R

  394. ! X8 r! t0 R! p- ?0 P; \( U
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK0 Q5 \" B; H6 G- B
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"$ C$ c. F& c3 i( C; w9 C
  397. 1 B* [: O8 k% C8 b
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    / i& r4 @4 u3 D% Y( O! f  \' i
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    0 J! J6 m6 |6 K1 x
  400. 5 s5 I0 A" J: V. _
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK( e+ J3 e$ d" a- G+ s. x
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    ! M+ l( x* ~5 Q" n( C

  403. # V, f/ O+ A  x1 C) h
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    4 p8 F; t+ X/ q, K1 D; m
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"* k: @5 B# I, v; n- A

  406. " _6 j4 t. r; }2 ?8 x& S
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK* y& u0 ^  o0 ^. I/ e
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"' V0 W% g& v7 ^

  409. : m* j8 ?. a3 R3 B+ z# _# O1 [
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ; Y8 ]; w4 [/ c' r, W
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    ! d3 g: U& l8 L2 U& v2 @
  412.   Z( K. `6 O& _# V( c
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    " O9 f# ^. c0 c) f2 {) z
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank") ~! K  \/ f# \1 h
  415. 5 I9 z/ y' z: D- Y7 Q
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    $ C2 P( O' z' y1 X- ]( F% v
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ! r  {* u+ x7 i7 B: J6 T- A

  418. , x& A6 W$ c; y& A$ _. W2 q
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK! [! C: [; M( M3 l; X
  420. .ORG $D400
    2 a$ Z' P2 H( E+ c
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"- [! U: `5 [' H" E- S) u
  422. * N3 Q7 j1 f  _3 t! ?
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    - R1 v' s+ g" {# j* K4 `- e
  424. .ORG $D800
    ' V0 [  ^% J  j2 ]
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    ) H! e3 h1 {* l, g  m# H& ^" }. F
  426. ; c+ M' q8 Y  W' ]0 ]: V
  427. .ENDIF5 f  s$ A9 @5 p6 z4 G* Q9 s" C9 ]

  428. ) A/ d% D, T7 U# Q7 O
  429. ;CHR图形数据
    % u$ w/ B# M# a1 |
  430. ;======================================================================
    " @+ u! a' k7 D- O
  431. .BANK CHR_DATA_BANK
    * K0 @- _  M  _, z; G+ o$ F2 W
  432. .INCBIN "chr_bank/chr_data.chr"6 Y- i- Z( I! Y, b4 }4 }; S

  433. ; J) d  `0 f. r( K. d+ d* ^
  434. ;======================================================================! K! ]" P" n1 n  \: O. u
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    5 P# o, h" ]/ k2 G# J
  436. .ORG PROGRAM_ADDR$ f1 Z/ ^+ l' u
  437. + W+ U) W0 n/ {9 [9 d: G
  438. ;==================================================
    ( C' t1 ]8 v$ r- ~: L
  439. NmiProcess8 s* p) U' N2 ?' m; ?

  440. 0 \- h- M* @" Z. D( `3 ~, \# w
  441. ;关闭屏幕控制9 m: _1 S  e& o7 U8 ^# y5 x
  442. LDA #$000 k& z1 ?6 b' g0 M
  443. STA PPU_CTRL& O7 P& q: R" F/ A( _5 h: j

  444. 1 B$ E1 {+ Z, u: h+ w9 |
  445. ;没播放音乐就不需要触发IRQ
    ( q! q5 Q" k! h! Q
  446. LDA <Music_Stop_State9 i3 J$ B; U5 T. h) o0 Q# R+ T+ m9 A
  447. BNE NmiNormal
    3 g: W' d! E# }1 `- T5 N

  448. , @) r1 t, A$ k' C1 Q
  449. ;重置IRQ索引/ |/ D  a8 Y: N% B; f& }
  450. LDA #$006 E# H7 ?4 E& P
  451. STA <IRQ_Process_Index8 B7 \" X9 A! z. b

  452. # y) t7 X$ Z  J9 }. I& h% f
  453. ;时间秒数为空则跳过+ b5 z9 c/ g- v. G
  454. LDA <Time_H/ n* r, P! ?3 n' U( [3 `. k! b
  455. ORA <Time_M
    8 z( o. b2 J+ Y% k$ J" b0 i
  456. ORA <Time_S
    # d9 t7 l; I8 T1 G# A, r
  457. BEQ EnableFirstIrq  `7 ?. l  R6 Q/ C. D

  458. # `9 L( A+ g9 ~0 Z* Z. b% t# b
  459. INC <Scroll_H! z1 Y, {, G: K5 d. Q2 A

  460. 6 f) P8 X  b3 ^% Z
  461. EnableFirstIrq 6 t% |# `# f0 p" W
  462. ;80条扫描线后触发IRQ. K7 C( q4 ^1 g4 u& T
  463. LDA #IRQ_SCANLINE0 Q3 q* q! R9 J! \- m1 p/ M
  464. STA MMC3_IRQ_LATCH
      u4 _# q3 s* G# o2 ?
  465. STA MMC3_IRQ_RELOAD
    6 K& H# X$ B% S  _8 x$ d
  466. STA MMC3_IRQ_ENABLE) U0 g  L) N! @# |$ L
  467. CLI( w5 l7 [& p# d9 u/ Z2 {
  468. ' T: N9 Y0 C: A1 P  j0 x/ z
  469. NmiNormal
    8 j4 }& W: S5 u3 P6 F* R, S4 h
  470. " D. i5 ~7 C' d( |+ K
  471. ;处理PPU图像
    + x$ e# b: K6 n, ?; w
  472. JSR PPU_Proc2 A  K0 V4 W4 E
  473. , Y5 I) h) I/ D. @/ a/ R
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    2 k, `2 G- v4 w0 J
  475. LDA PPU_STATUS9 o% w" R" r7 _* v
  476. ;LDA #$005 w& c5 o/ A3 x9 C: s, |5 Y# u3 b2 @
  477. ;STA PPU_OAM_ADDR
    2 B4 ]0 J4 B1 S6 X( B3 L7 [* P
  478. LDA #OAM_TEMP_ADDR / $0100
    6 h# f7 s: W1 t: N
  479. STA OAM_DMA% u6 G. i/ s" v5 ?

  480. " [6 U- E- ]7 @4 O" O0 j- Y3 g7 F
  481. ;启用NMI中断+ c8 w0 N) O- f  a; O5 H  [
  482. LDA Screen_Ctrl
    " F# J# C7 L: t  I
  483. STA PPU_CTRL/ J# R" G' K- {

  484. * o$ D$ ~: e" U
  485. LDA <Text_Disable_Flag! N. X4 m: Q6 q! K
  486. AND #TEXT_DISABLE_RAM
    , [; n( w  j$ V: g( K* h
  487. BNE Nmi_Sound_Play
    & T, G" M: F& Y. x8 }1 J
  488. ; `9 A' ^7 |. E# R/ g) }& ]
  489. ;处理手柄输入/ K. a& Q0 S1 e: e
  490. JSR Key_Proc7 k+ P  i) n$ m! K1 g2 a: m3 D: C& ^1 p

  491. 2 m* Z- n7 O1 x" s
  492. ;切换音乐(手柄触发)
    * t, J8 S3 E' s' B; k% N
  493. LDA <Time_Wait_Cnt
    % I- Y6 u7 [* ^8 h
  494. BNE Nmi_Cursor_Arrow
    . O. c8 b  r8 Y( i$ I6 W" L9 K  {
  495. JSR Change_Select_Item
    # V- r. ~! g9 f- c& r

  496. 2 P+ I2 N, {) ]4 K, @) r3 \
  497. Nmi_Cursor_Arrow; }8 b% }' t0 W

  498.   J2 Z3 }  O5 X0 B* R8 w& Y0 Q. {
  499. ;处理光标箭头+ K" B- g9 |( X+ W2 ?
  500. JSR Show_Arrow
    : f( [% r: W, G' O! i( T( N
  501. : d1 S" d- i$ `# {% o+ ?2 c, S
  502. ;更新调色板7 R: }* y7 z9 A- d! ^; f. \; T7 q1 a
  503. JSR Update_Palette_Data
    , Y) f. d* y+ ?3 Y: K  T* Y

  504. - u9 W, ^) |" k: o2 w* U
  505. ;显示时间(缓冲)
    6 p4 N# N+ r' V9 T3 L7 q
  506. JSR Time_Show
    9 n2 x: J2 L4 V% R4 v' T6 W

  507. ; z  r% l3 A" |5 F0 S( l
  508. ;音乐显示(缓冲)$ ^8 F. W$ C# t  o7 N$ a# m& L; L
  509. .IF SOUND_BAR_SHOW_ENABLE$ I* ~8 u1 C6 ]9 C# A; R
  510. JSR Music_Vision
    1 t0 |0 ]9 D3 i" `  A
  511. .ENDIF: H$ o+ i  s! l( t: @5 G
  512. % Q  a) Z1 e4 F5 f
  513. Nmi_Sound_Play7 e( H0 m9 v" r9 |
  514. ;播放声音
    " `; _: c$ Q& a2 B- Q0 s
  515. LDA <Music_Stop_State& L5 Q9 w1 ~. A1 x1 |
  516. BNE Nmi_Time_Wait_Set
    $ h& N1 j0 K) w; D; z
  517. JSR Sound_Play_Proc& w7 i# t: E! Q
  518. 9 v. Z* ?# o# S& O! ?8 ~
  519. ;播放计时
    9 ~9 v0 A: X+ N8 y/ U
  520. JSR Time_Count
    . |+ {# S7 [, Z8 ^3 I9 s3 f5 O
  521. ! \8 ~3 s: O" y% ~# `0 O! ]
  522. Nmi_Time_Wait_Set
    - C/ T; v% P8 w6 Z9 j
  523. LDA <Time_Wait_Cnt
    ; q5 U1 r9 i& @. c7 g+ x/ O) y
  524. BEQ NmiNormalProcessEnd
    0 M7 N1 |5 t0 A, m& U8 S/ @
  525. DEC <Time_Wait_Cnt
    - H: p6 m; V+ s, J7 _9 c
  526. NmiNormalProcessEnd
    2 A; e- i  T; w; L; B
  527. , O) p8 y- O8 X6 q
  528. INC <Nmi_Time_Count. t; Q" P/ A; N( f! d! f: R
  529. ; Z1 C1 E$ _' n
  530. RTS
    2 m; _2 p  f3 V- h
  531. ' I) u7 O3 r* S; y1 W: j
  532. ;==================================================  G; O3 Q1 |. a" y+ Q
  533. Init_MMC38 }* j9 T- X: Z
  534. ;==============================
    + I) t8 V3 M" j1 {! i* e  H: V
  535. ;禁用IRQ
    # d( w+ C+ q, Y3 |4 w( ]" U# r
  536. STA MMC3_IRQ_DISABLE# I. N. g  `7 v* R' a; H
  537. 1 b# X8 e8 a2 M/ t1 f5 a
  538. ;水平镜像
    * c9 X0 F0 v. ^
  539. LDA #$01$ i1 R8 w( U+ H6 ^- R0 P( X. u
  540. STA MMC3_MIRRORING
    # u3 V8 t$ H/ @
  541. 4 `9 @" K2 f$ D1 v3 w; ^8 {
  542. ;初始化图形bank4 Z0 ]. k; ]8 \# @
  543. JSR Init_MMC3_Chr_Bank
    0 W6 Z7 e+ J4 P- ^% I

  544. ( R9 w# f& u6 b6 S# q$ u* O
  545. RTS5 a/ h$ R) Z8 g; }% g
  546. ;==================================================
    . l( z  V, T, ^; g8 h" O" E  ^) J
  547. ProgramBegin;主程序' e5 W% ]# \9 d: V" l- @4 Y
  548. LDA #$006 B2 b! Z7 {. b' l- m
  549. STA PPU_CTRL
    $ G6 m1 M& I0 t/ }
  550. LDA #$00
    % W8 N6 U1 K) R6 M6 E; c1 `" H
  551. STA PPU_STATUS
    1 A, o9 c$ C! U  j
  552. STA PPU_MASK
    7 |8 r# k4 R1 p4 `
  553. STA JOY2_FRAME' B& Q5 I' V2 z9 }
  554. & R; n: q- N* c7 T
  555. STA PPU_SCROLL& ~, M# q; J5 U" s( S! ?2 m
  556. STA PPU_SCROLL
    ; E' O! K& ^3 e( g9 Q3 _# R) d7 ^

  557. ' a; W9 L4 x" J8 ?' V5 b( V4 F
  558. ;==================================================  O8 T% G$ V! Q2 i  h" m5 b
  559. LDX #$FF
    # ?/ W3 Q$ p9 y
  560. TXS3 z" d9 K7 v  Z# V# o7 t" m
  561. 0 X. h* b* l$ R6 v& V
  562. JSR Init_MMC3# p5 _) m% w4 }- Z5 ~5 E% F

  563. / r' ?- q+ \, G, y& g) F
  564. LDX #$02
    ! u! ~/ }2 R% j) a% c/ H
  565. Check1
    + E6 h% m$ w$ D% d
  566. BIT PPU_STATUS* g5 ?/ Y8 q. Y- Y6 _
  567. BPL Check19 A8 Z& S; V  B4 O- L: N
  568. Check2
    : ?- w2 v# K, ]+ h& D
  569. BIT PPU_STATUS( Z0 o: M: I% J$ H( P% Y& z  D
  570. BMI Check25 [( E* A6 R% R7 a* [1 R
  571. ' _3 R- W" w- n& c; o& P5 G
  572. LDA #$0F
    ! u# {! H- p! o0 O' X+ v
  573. STA APU_STATUS/ s7 S6 T; B& A9 p1 ^( c
  574. LDA #$C05 h" l5 _7 {4 Z) C$ c; o2 |
  575. STA JOY2_FRAME& l2 h! b3 i; p. U* g) a

  576. ) j) p# L/ m. Y; c  I* W0 `! z# H/ Z
  577. LDA PPU_STATUS
    : n. I6 ?2 `3 A; ~
  578. LDA #$10
    + P$ D" ?# E" F, _
  579. TAX; C; A; A/ |, u! R" S, T
  580. Check3$ J- l! C& j" c! S
  581. STA PPU_ADDRESS
    ! H6 N+ Z# b* w9 |& G8 {
  582. STA PPU_ADDRESS
    7 T8 g1 U3 Q- o1 Z" o9 E
  583. EOR #$00
    - c& n2 s4 `4 \- v0 B
  584. DEX
    6 w0 j# R: j; g7 n+ D9 X; Z
  585. BNE Check3
    + Q' @$ d. f* @' x. V4 z, [+ ~1 o
  586. ;==============================$ P) H2 a& w3 i2 w2 U4 k& w
  587. ;调色板清空
    0 E: q3 @4 n8 ~. ^2 O" `# h; \
  588. LDA PPU_STATUS
    ( O. H, s0 c+ i& w! A
  589. LDA #$3F
    * p) f" \, W  U$ y" }7 A! v- g% f7 g
  590. STA PPU_ADDRESS
    & n2 Q! q% W0 P2 k* E" U4 v& }
  591. LDA #$00
    / }: \$ c- z. \1 X& L, Y7 m& L8 I0 R  M
  592. STA PPU_ADDRESS* Q% X' f( e/ q9 c
  593. LDA #$0F
    * e" I/ X$ c- r/ t; }1 \# i( o
  594. Palette_Clear
    : m4 f1 p4 w8 D
  595. STA PPU_DATA
    ; v. H; l" V3 p& r, L
  596. INX
    & q& ~; |* C2 D. F6 X
  597. CPX #$20
    ; m+ d$ a& c. X- ?, k
  598. BCC Palette_Clear
    7 N- z" }* t* p7 t7 C3 x* _- y
  599. LDA #$00% [- B* ^1 W' y7 N$ d' y
  600. STA APU_STATUS7 x# j( @- k* T/ N* b3 X
  601. ; p7 H* J0 N8 w* q( k: ^/ Y/ }
  602. ;==============================1 p" a0 C' d4 N" c$ Q
  603. ;RAM初始化
    # Z+ X9 C3 R5 i
  604. RAM_Clear_All( j# M# ?8 }. S9 s8 Z8 u
  605. LDY #$00
    7 Z4 @9 Z2 W  n5 L" \" Q. p
  606. LDX #$08
    + ]1 b4 @+ p3 k; R/ ]
  607. LDA #$00! m$ V2 x) w1 F6 M- ~* c0 o) h: c
  608. STA <$00
    1 Z1 |* n6 E: U0 c" \2 w
  609. STA <$01. ?* _7 Q& H# _" }
  610. RAM_Clear_All_Start- c! o% x0 J, l6 l; |
  611. STA [$00],Y
    . _6 ?* \$ C& f
  612. INY
    * i! p* P( J4 K8 D3 v
  613. BNE RAM_Clear_All_Start! P% G% _! g0 G* j9 t6 d7 s) }
  614. INC <$01; U2 }+ d% q" _' M; B1 t6 R
  615. DEX/ Q$ R! \1 x5 G8 h2 l1 ^! f# f/ p
  616. BNE RAM_Clear_All_Start( L8 V" r! P. {) D6 `

  617. 7 Y9 T4 [. V* l% ?6 A
  618. JSR VramClear
    ; f- @; \" P/ ~0 z" z# C
  619. JSR VramInit
    , T+ a4 c: @! p+ i# D
  620. JSR OAM_Ram_Init, U, Q# q3 |5 w' L" d( V
  621. JSR Init_Palette_Addr4 P4 X( l* Q# X. i7 i

  622. 6 s$ m, s" [" X8 s1 ]! E6 R
  623. LDA #$FF
    ( q# u* ?* t' @+ s" L7 Y
  624. STA Use_Ram_End! a3 f! g% r! T: f' t
  625. ;==============================; q9 n+ [, g* b: [
  626. ;初始化背景调色板
    % b8 o4 y- r, J5 Z
  627. JSR Set_Palette_Color- o# I: O+ d7 z- K7 ^5 f/ ~: A
  628. JSR Set_NameTable_Attributes
    ; o) }7 S3 l$ j' J  p. V" S

  629. + h" b% O0 r( D! x, f/ b8 }
  630. LDA #$00+ ~, ?' E6 u7 K, j* C! W) K- W' ?8 H
  631. STA PPU_OAM_ADDR: f2 R- C5 W5 d3 J9 q
  632. LDA #OAM_TEMP_ADDR / $0100" V. t! _0 p/ m) H
  633. STA OAM_DMA0 N7 V" T# g9 W
  634. ! o2 x$ [2 N2 F- N, [( I7 m
  635. JSR Sound_Reset_Proc# P) V& L: H) X
  636. JSR Set_Sound_Total( D4 }; |1 l$ T
  637. / I% Q2 f* L+ ^2 j+ Q7 _; H
  638. Init_Start_Music* z' j% P1 S) E* P  A
  639. LDX #$008 T! g! s3 l" @7 y
  640. Init_Start_Music_Write
    $ H5 M' f1 |6 v2 T( e
  641. LDA Sound_Start_Port,X0 U4 ]; ^' ?: y% j9 G7 \# Q) V
  642. STA <Music_Cur,X# H  `4 B2 P+ V# }3 m
  643. INX) |& t$ l+ J4 _: Z; U
  644. CPX #ITEM_MAX_SIZE* ~+ J" s8 e/ _1 \. S* \* r
  645. BCC Init_Start_Music_Write
    ( e9 E8 x: A. K: u3 A
  646. 0 `; S4 J1 A2 C7 e. T
  647. JSR Show_Music_Text( a5 f: h% N1 L

  648. ; P0 c' F- r- O
  649. .IF SOUND_BAR_SHOW_ENABLE" I- I8 m3 t  ~# b
  650. JSR Sound_Bar_Text_Set
    - N, y; H. C" C& a2 Q0 k  E  J
  651. .ENDIF
    9 g  `; l. d4 Z/ r. W- ]3 F- _

  652. . _% r6 l5 G: A$ ~% f
  653. .IF Track_Name_Pos
    $ ]3 C4 m  Y" }3 B* ^0 q" A  F  g; N
  654. JSR Show_Track_Info- k. O8 R4 l" P3 [) }- G2 u
  655. .ENDIF
    7 r4 @- d- N" P  [, M

  656. 4 G* C! X' r# p' j; F
  657. JSR PPU_Proc
    . `8 O- C* U3 r
  658. $ |+ p3 c) Q( l! @) z/ \0 [
  659. ;==================================================4 |+ @3 O- M* D! j
  660. ;音乐bank初始化
    1 i! @) D; Q) p" V
  661. JSR Init_Sound_Bank
    & O# V1 Q* o% Y" k8 D& I& e  R

  662. ! G5 q, Y$ h3 _/ t) J: f0 Y
  663. JSR Music_Show; {$ d& ~6 v! e7 x( H
  664. JSR Time_Show
    ) m- U2 a# B( v/ m* _# D) W% `
  665. JSR Music_State_Show
    ; x- T! P( p/ V
  666. JSR Time_Delay4 o& I8 A$ v3 W$ T0 G2 B2 r
  667. # P8 h- D8 P+ S# |1 b  b
  668. LDA #$01& R4 p! l6 Z! s0 V
  669. STA <Music_Stop_State
    , D8 K6 Z+ M" l2 q

  670. 3 m4 R: t3 O' k: y
  671. LDA #$88$ y1 l5 J3 k+ Y- _( d; d
  672. STA Screen_Ctrl+ _; o* q; N! i7 d1 [* @
  673. STA PPU_CTRL4 l! |. f8 e) U

  674. - M+ r+ S( l9 u! t# U
  675. JSR Show_Page_Text; f; ^5 ^/ b* a7 N) x9 o3 Z1 ^

  676. " `9 d, R: S2 n
  677. LDA #$102 l% ~: o, k4 v5 n& `2 O5 N
  678. STA <Time_Wait_Cnt# s" d8 o2 ?7 `% t: g7 Q: }8 G

  679. , J$ i1 l: c7 T. E7 F4 N$ M# [
  680. Wait_Time_Over
    " A2 ^0 l9 K9 u% a6 N
  681. LDA <Time_Wait_Cnt
    1 b3 N- B9 H0 V$ M; O
  682. BNE Wait_Time_Over0 Z: P5 |: L' Q4 O
  683. " ?. M! B. M3 r* o- a( @8 ]4 q
  684. JSR Show_Arrow' e' {6 L9 |. d6 M) j( {
  685. LDA #OAM_TEMP_ADDR / $0100: Z5 B( i' x. k8 Y- C  D
  686. STA OAM_DMA+ y3 W+ ?+ C- W
  687. 9 s+ T. L1 Y2 t
  688. LDA #$1E' o& K3 E0 n/ M; {5 F. _
  689. STA Screen_State
    & ^* ]: ?' R) _
  690. # \3 d$ r& W% q3 Y
  691. LDX <Music_Item_Cur7 X  N1 d: Q6 w/ b/ \5 i6 Z
  692. LDA <Music_Cur,X
    3 X* u3 m. D# y" \4 [3 e
  693. JSR Sound_Init_Proc5 J+ b: Q. ]- Y. n$ f
  694. 4 p6 j+ ]9 p/ H& h! F  M4 {
  695. CLI1 F1 i  M7 Y4 I  u/ y" e6 q
  696. JMP MainLoop( h7 M4 V0 U' ]& A4 f' q

  697. * ?, C, q  \+ F
  698. ;==============================
    - V4 c4 ?3 a9 F
  699. Time_Delay;延时等待2 C2 K: d' Q6 [: j$ p+ f, O% A+ K( o: I
  700. LDA PPU_STATUS
    7 a9 p1 @# e3 X; E
  701. BPL Time_Delay- z( ~: U' _2 ^; Y, N- s
  702. RTS7 w) u2 Y* S4 y& G

  703. 7 W) l( F. D- R
  704. ;==============================3 m$ Q+ D( N( F+ J# ^9 ~) g5 i1 C
  705. OAM_Ram_Init;初始化精灵内存  G* W) X- K9 x: U3 E. c- M" l" f: }
  706. LDX #$00
    . F$ U6 ~% Y, L+ x8 g
  707. OAM_Ram_Init_Write% y2 r3 u( [% k0 z+ D# E" F( p( d
  708. LDA #$F8/ b7 w; [) o8 Z7 Y2 I& }
  709. STA OAM_TEMP_ADDR,X
    + L. ~9 G& f9 g, g) W3 u" r0 y% |
  710. INX% u. F7 K; u" J0 b$ V5 U
  711. LDA #$F84 o. z! u) B5 F
  712. STA OAM_TEMP_ADDR,X
    " q  O; L! C+ @: f; w7 I% l6 s
  713. INX
    0 a$ L# ]: o3 q: K5 A, [) c+ W
  714. LDA #$00
    9 ?. O) r% a8 |
  715. STA OAM_TEMP_ADDR,X
    1 N* _, x4 M5 v7 [& h% b6 X
  716. INX4 d: h( w! h1 l# g  @
  717. LDA #$F8$ x/ f/ N* V! h2 y
  718. STA OAM_TEMP_ADDR,X7 {2 k/ R, X! m( M
  719. INX7 v1 Q) L- s4 K
  720. BNE OAM_Ram_Init_Write+ R( m% E8 x. S
  721. RTS& C' U  g6 V7 j5 c

  722. $ r* g  J% S* Y( Z
  723. ;==============================
    8 B0 [5 b! ]4 }2 _* h( L, l6 [
  724. VramClear;初始化图形内存* m8 T6 _3 ^6 ~) c$ R$ ]
  725. LDA #$20. u: `$ S% {- e
  726. STA PPU_ADDRESS
    # P3 s7 H' f2 N7 D  e+ C8 l4 O" t
  727. LDA #$003 c' {7 Y; ~( {9 I# [
  728. STA PPU_ADDRESS! g" w5 s. t' U  \3 ~5 o1 i! ?
  729. LDA #$007 r* G! n$ e% b+ L( i
  730. LDY #$00
    7 e, c! c6 u4 |9 Z, B
  731. LDX #$10
    ) |- i; w0 K+ q! o: S7 W
  732. VramClearWrite
    7 S% E2 e( F& D- D
  733. STA PPU_DATA
    5 P0 D0 m2 o4 a$ d, @. e3 C! C8 U6 k
  734. INY2 s( P" w- E2 o* t1 V
  735. BNE VramClearWrite/ U  f& x, Q7 y+ d, Y0 P
  736. DEX
    9 t/ {, S1 P( E9 o2 ^! d  d. v$ l6 o
  737. BNE VramClearWrite
    . r. [$ \4 }/ L! b$ p* @) r2 x
  738. RTS
    ; T9 N6 q; Y6 a) N/ s

  739. 9 ^, B9 i  r: S5 m& }
  740. ;==================================================
    8 q0 q0 R' P3 B7 R% _9 `
  741. ;设置MMC3图像bank
    7 c: p9 ?# y6 y+ f* x- [) J
  742. Init_MMC3_Chr_Bank! z' C: o8 j! H" j# s, N& d% r6 c
  743. LDX #$05& Y& u2 [: M5 n( b% s
  744. Init_MMC3_Chr_Bank_Write
    + B/ Q, p. t+ o, i
  745. STX MMC3_BANK_CTRL
    # j7 d  l6 j( ?* `- {
  746. LDA MMC3_Chr_Bank_Data,X
    # @+ l- j: L/ W- M1 _5 |
  747. STA MMC3_BANK_DATA
    ( R" @5 r" E  t
  748. DEX5 R! d2 ~' u; g6 F
  749. BPL Init_MMC3_Chr_Bank_Write4 x$ L, ]: ^# W% ?/ Y' y, c. P8 @
  750. RTS
    5 g9 K7 L8 s! R
  751. ;--------------------------------------------------* X9 v+ r" A' A$ N5 o4 Y) S
  752. MMC3_Chr_Bank_Data
    3 `$ K! j) U" j/ l
  753. .DB $00,$02,$04,$05,$06,$07
    * A3 ~9 l% f5 `2 B, a% k
  754. 6 _2 B. x+ v" Y
  755. ;==============================7 h- o0 H. }, D( y# m  M# v) q
  756. VramInit;初始化图形内存
    $ }: I+ {0 c8 h
  757. .IF CHR_RAM_ENABLE
    5 I$ O6 y: a/ n4 V
  758. LDA #CHR_DATA_BANK- @+ r  D# |9 p
  759. JSR Switch_Bank_A000/ W  z0 D! N$ H& K4 E
  760. LDA #LOW(CHR_DATA_ADDR)
      y7 S% i/ k, R4 Q; M9 M, ?5 P
  761. STA <Data_L
    7 Q/ W* |2 S1 ]$ w! p$ i/ K8 z4 y
  762. LDA #HIGH(CHR_DATA_ADDR)! o7 \3 O, p8 D1 i9 U, q- O
  763. STA <Data_H
    # E$ w6 b( x; d: k
  764. LDY #$00
    : V0 s  J. F# R# H" r; _. n6 B
  765. LDX #$20% G; a0 K( w8 l# s4 ?. _  u
  766. LDA #$00" W* A) D6 M2 v# Y6 l
  767. STA PPU_ADDRESS( W" U8 k- p  q: @- _
  768. STA PPU_ADDRESS
    1 F+ ]  `6 K3 e) }- Y9 C
  769. VramInitWrite
    , ]9 w1 U3 b: M- [/ x8 y7 y
  770. LDA [Data_L],Y
    ; u! h8 d& J) U
  771. STA PPU_DATA
    6 I; P* c' M8 k
  772. INY
    ( ~! f- w. x, ?7 [+ Z0 `& s
  773. BNE VramInitWrite, q. ^& V$ e: e, [% K7 x- Z
  774. INC <Data_H
    4 D/ P; f* F: H& s$ Y3 e
  775. DEX
    : j* F+ h# d( n8 k8 n
  776. BNE VramInitWrite
    . M  S8 V9 \* {$ n  g+ r$ ?* @  b
  777. .ENDIF
    $ y4 e( }. V" i  q  G, F5 @7 o* f
  778. RTS
    - Z% U( h; `; t# q3 ?8 K* a

  779. . }9 z  [5 U) c& a, k$ v
  780. ;==============================- o9 L+ }% b+ s
  781. ;音乐切换
    9 n* h$ F; l  S: {; _% E! F
  782. Music_Play_Change, B) @8 z4 F6 s7 E1 [$ e
  783. LDA <Key_Once) H% w" P7 B5 h+ {7 J) Z8 S/ G
  784. AND #$FF, ?. S' M3 S2 |4 \, i7 h9 p
  785. BEQ Music_Play_Change_Check
    7 @" q2 L& u0 W* N+ j' n+ `: U

  786. : d$ a4 ?' }8 ]7 y; {/ o* R
  787. ;禁用音乐条刷新
    4 C2 E! u1 c( ~! Z6 ^
  788. LDA <Text_Disable_Flag
    ) v: X, r/ p0 z0 @* q( E1 R- Z
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME) O; e  @6 h- c$ X% I1 b
  790. STA <Text_Disable_Flag
    1 X  c3 Q4 x* H" K3 U
  791. $ d6 E, P. ?0 E" t7 T  I
  792. Music_Play_Change_Check
    0 Y0 G3 a  Y9 e9 r
  793. Music_arrow
    ! ?4 v* o2 k( N2 G( I3 v1 t
  794. LDA <Key_Once
    ! J1 a9 u1 e8 @: b" O/ q! [
  795. AND #$0F
    + P9 |9 j1 N$ `1 Y
  796. BEQ Music_Play_Change_End  r; u) x) W, v* x7 C3 C
  797. JSR Music_Track_Change8 K! h) l2 y+ _0 x4 S
  798. JSR Sound_Reset_Proc
    ) o5 o# z! H0 G; {* k. A; Q
  799. JSR Music_Show
    , s$ E' F7 d; e. `; s
  800. Music_Play_Change_End: M8 C4 |" Z8 K- K( T
  801. RTS
    : I. i# U6 M: e- C+ I8 B* R5 U
  802. & F4 _: t9 N3 h( F# O
  803. ;==============================! x% n7 b' {8 L9 N3 |
  804. ;音乐曲目切换
    + H, q0 U* T, _; w7 F" I' m
  805. Music_Track_Change: y+ _' }4 M: S+ V
  806. LDX <Music_Item_Cur
    % H, p( ~6 Y- R1 S; J: U! K; W
  807. LDA <Music_Cur,X
    & |: i# W5 S2 L  `2 {; J' ~6 b
  808. STA <Music_Last
    8 ]. P: C, z5 c6 y2 e
  809. Music_Decrease% u3 N1 M4 E, c
  810. LDA <Key_Once
    # B+ b6 U! `$ Z9 T% @, S' x
  811. AND #$42& Y6 @1 F  P# p5 _) @$ n
  812. BEQ Music_Increase
    " k4 Q; @( I+ ^- F1 r
  813. LDA <Music_Cur,X7 A4 a3 L8 u9 j. V
  814. BEQ Music_Increase: ~; \+ N9 {3 N2 D" v
  815. DEC <Music_Cur,X! O7 p* i4 x' ~& N! y5 ]6 I' p
  816. Music_Increase% S. p: z0 P+ d8 A/ b" ?* Q+ [
  817. LDA <Key_Once; M; c& \4 k7 C, S( ^+ v5 S
  818. AND #$81% ]6 {0 n; [5 \
  819. BEQ Music_Decrease_10# X1 f: ~& {) ?! N+ C( h
  820. JSR Set_Sound_Total+ X$ f" o9 X3 z- k
  821. LDA <Music_Cur,X; B, p' ]" F4 V4 o1 M; Q, [
  822. CMP Music_Total3 H& y  U/ V* ]3 G$ u% q9 U
  823. BCS * + 4! I; b/ X$ {0 }# [, S1 O
  824. INC <Music_Cur,X
    # d5 E2 J( U/ B6 l
  825. Music_Decrease_10
    , p$ k  i- M2 S9 w3 W# }
  826. LDA <Key_Once! b/ ]% ?0 R  Z8 {7 ]7 t1 T$ k
  827. CMP #$040 M, E7 e# o3 u3 Z
  828. BNE Music_Increase_10
    ! m+ p8 i- @; f8 J4 x: D) H, \
  829. LDA <Music_Cur,X
      T# y# y8 }: a2 V. f" o
  830. CMP #10$ }# K/ N& l) q- C. h
  831. BCC Music_Start_Song_Min
    ! R1 l$ [$ N7 d2 C0 z7 L
  832. LDA <Music_Cur,X: Z8 D$ x& a6 A$ a% b
  833. SEC
    2 B) C' ^7 e# f. T& \% ^
  834. SBC #10
    9 q/ `% a8 b3 ?/ x: @1 I) Q
  835. STA <Music_Cur,X( {4 d9 }" K7 x  j+ H, \+ F
  836. LDA #$00
    7 E2 c. F5 ~' o% G, a  _
  837. BEQ Music_Increase_10: f) R, r' n/ v5 \
  838. Music_Start_Song_Min( p- B0 }* j$ d
  839. LDA #$00  ~4 F& g4 {4 U0 y/ A
  840. STA <Music_Cur,X, u' s& B. G% t4 x0 P
  841. Music_Increase_10
    - e  l1 v) ]* ?9 h
  842. LDA <Key_Once
    8 N: G. t  |- w) R. @; v- t/ t
  843. CMP #$08; g& s3 D$ _: |9 K) Z9 Y
  844. BNE Music_Track_Change_End1 g8 N/ K8 v0 K: l
  845. LDA <Music_Cur,X8 l7 Q) ], t6 e2 |: P3 h$ ?
  846. CLC# z0 R5 [$ c$ E
  847. ADC #10( K3 Q9 d0 @5 b' @/ P+ m1 ?
  848. CMP Music_Total
    5 G- g6 }- }  t
  849. BCS Music_Start_Song_Max0 N6 C2 q9 {( g: r, i# l7 S2 M
  850. STA <Music_Cur,X/ `5 `5 b) x4 N
  851. LDA #00; j$ m; z* ?4 V2 M8 T, ]. o3 `
  852. BEQ Music_Track_Change_End5 G- s5 e0 T( A9 l# P& T
  853. Music_Start_Song_Max
    5 s, X- d6 h( |
  854. LDA Music_Total6 ?9 \; s. [8 U& T* U# S* N
  855. STA <Music_Cur,X: K+ \1 _3 i* X6 M$ |+ v
  856. Music_Track_Change_End
    ! X( C: |8 F+ g& j
  857. RTS" U/ ]5 i2 q/ ]' D6 E

  858. " n  L$ z& Q* V) Q; D6 h% N
  859. ;==============================
    9 Q) d: |$ i# n! b  S* m8 F$ [. Q" L4 X
  860. ;按键处理
    8 q) A% p2 w1 K% i7 s
  861. Key_Proc
    1 G# R  s: z; E* ^+ U' d7 i. x
  862. JSR Key_Scan  r. g4 g5 `2 f1 O+ J
  863. LDA <Key_Keep
    ( m; u5 _0 u+ y7 b  j6 U
  864. STA <Key_Temp
    ) \7 I, D4 G$ X9 P' K+ ^
  865. JSR Key_Scan
    ; X3 e4 r' M9 N, `. v9 L" U/ e
  866. LDA <Key_Keep
    % }+ M( U8 i$ X6 Y9 O; H1 F3 {# L
  867. CMP <Key_Temp/ {8 j  @; t+ t8 _0 \5 r
  868. BEQ Key_Get_Once# ~7 |8 m" d; O5 N7 j/ B
  869. LDA <Key_Kemp
    + s/ y0 ]8 F1 ]' D& L3 h% _
  870. STA <Key_Keep6 \, I, k1 p& M/ ?# a$ H' ^
  871. Key_Get_Once
    . X/ W; t9 b9 c2 A% I8 U, ]/ X2 r
  872. TAY4 j0 {3 T# W6 F  P0 {
  873. EOR Key_Kemp4 {+ n' P+ @6 U! ]( _; M4 t
  874. AND <Key_Keep( `/ I2 M5 @: u% ?7 P7 J! R, R
  875. STA <Key_Once
    . [' g' `6 ]% T1 l7 p, w
  876. STY <Key_Kemp8 ~& ^0 b1 Q4 T, |
  877. RTS- y. E% r) I+ S; B* y. L8 C: y
  878. ;------------------------------
    2 s- s1 V' n) ]+ B; t) C
  879. ;按键扫描& s; T2 s$ |! u+ s& L
  880. Key_Scan
    * M  `2 Z6 u4 c) C9 L$ ~; I
  881. LDX #$01
    2 x$ e* w. O5 N8 y3 `4 w
  882. STX JOY1_FRAME
    " b; k. G- Z* T$ ~" I
  883. DEX
    ) G" w  p: r+ a
  884. STX JOY1_FRAME- U7 w) C6 e# L( k1 P" f0 @
  885. LDX #$08
    & n  k& I/ D! I
  886. Key_Value9 u3 j2 S- A% g$ u3 h9 r1 z
  887. LDA JOY1_FRAME) h$ l! n& V# G+ u+ @2 }" p: E  B- R
  888. STA <Key_Getv, l% h% e% e, I
  889. LSR A3 M  @, ~% G4 W% A4 W' H
  890. ORA <Key_Getv
    1 j! q7 w8 W% {4 L
  891. LSR A
    5 [- ?3 ]- U' b
  892. ROL <Key_Keep
    % U7 D. ]" V! `+ A  ^$ Z: Y
  893. DEX
    + ~. u- J$ F% d
  894. BNE Key_Value* d  X# q: d  W/ J2 P# O7 |- T6 E
  895. RTS
    ) }  i5 y& r$ U% s

  896. 2 `0 u; Z1 ^6 r% b" _* o
  897. ;==============================
    ) f2 c" T9 a$ v1 l
  898. .IF SOUND_BAR_SHOW_ENABLE
    # @' g4 F+ j% v& i3 Z! D1 \
  899. ;音乐条显示5 H: w, f! x$ w3 W( V: b5 d" h
  900. Music_Vision
    3 t) g. J, ?' `5 h
  901. LDA <Text_Disable_Flag
    " G; q6 V9 c6 J
  902. AND #TEXT_DISABLE_ITEM
    ! h0 ~2 P  h2 O( ~9 \- ?
  903. BNE Music_Vision_End
    ' b, P4 o& a* ^4 `- }$ I
  904. AND #TEXT_DISABLE_BAR! J/ i4 K5 W+ V0 o5 S# ?, q2 b
  905. BNE Music_Vision_Set
    - c5 h: [  k& H, @
  906. LDX PPU_Cur
    * `( T' b+ R, R; ^
  907. JSR Music_Animation
    ! U( w) V1 q- r6 i) Y9 h' t
  908. STX PPU_Cur
    ! z' o6 _4 C7 j
  909. Music_Vision_Set
    7 W' `) D( L3 k$ P7 ~
  910. LDA <Text_Disable_Flag
    8 @' s# j( p# h4 I8 j  _
  911. AND #TEXT_DISABLE_BAR ^ $FF6 B, v; A6 K" [0 p8 c
  912. STA <Text_Disable_Flag
    0 r1 Y7 \2 a* \% D; A6 q7 S
  913. Music_Vision_End$ G- F1 F# X( v2 ]6 @# R
  914. RTS
    , C  L( v0 H# Y4 Y, y2 k- c5 T
  915. ;------------------------------. _5 Z7 ~( m( c1 a$ I% v" L: \) t
  916. ;音乐条显示处理- a0 Z& P4 ?. B
  917. Music_Animation" M2 G3 [' L' \: {0 _+ \/ S/ Q
  918. LDA #PPU_MODE_CNT_LINE
    + c6 J1 q  e, w  k7 G5 g
  919. STA PPU_Addr,X
      N" l: G3 i0 g/ x1 o- ^& Q) e
  920. INX
    " ?5 Y8 R. q) z+ m$ ?; r8 M
  921. LDA #HIGH(Sound_Bar_Pos)' M8 v" V( R. i6 e
  922. STA PPU_Addr,X
    + o4 H1 r  E: [+ D5 s
  923. INX
    + r8 p# K. M& f1 [
  924. LDA #LOW(Sound_Bar_Pos)
    & n  D' C, i9 O/ k& n3 r6 H* H
  925. STA PPU_Addr,X
    & b. M3 P  |4 u4 j: {  R0 V
  926. INX8 n% g0 y9 v  k1 V6 W! F7 i8 a  q
  927. LDA #$08
    ! k3 D5 A. L! v) ], p
  928. STA PPU_Addr,X6 O, W9 P$ O# ?5 W
  929. INX
    9 R  v: D" \) K* s6 D3 J
  930. LDA Sound_Bar4 o) t* k2 _) j+ T
  931. JSR Volume_Convert6 Q9 O! a" u) A  A7 S

  932. 3 V* h" T- X5 v
  933. JSR Volume_Set_Cnt
    ' i2 O) Q) f7 E/ W4 y6 z0 _
  934. LDA Sound_Bar+$4; o% w6 m% h8 O# ~) {3 e
  935. JSR Volume_Convert
    - ], B) @6 y  `' p& A# O. \

  936. & |0 ?6 b) l. o# h2 {3 J5 s
  937. JSR Volume_Set_Cnt$ ~0 |/ E7 |) r5 t- ^9 m' e1 N
  938. LDA Sound_Bar+$87 ?! l0 j; D+ B% f
  939. JSR Volume_Convert
    3 E5 T, W+ \: p* v

  940. " g" G, v3 `2 ]/ X- g* j* j+ s% y% e. |
  941. JSR Volume_Set_Cnt- ?& }( N' G8 o8 M
  942. LDA Sound_Bar+$C
    ! }2 R+ b$ T; e# a
  943. JSR Volume_Convert6 B4 o9 ]4 \; l$ s/ _7 W& q
  944. 6 \! A6 p3 \- h: @/ s4 a
  945. JSR Volume_Set_Cnt
    1 M2 u5 }- |- n" K% Z4 i

  946. ( V0 ~- L  g6 j+ C
  947. LDY #$10
    9 E# G8 }& N. [7 ?1 I( K7 }
  948. LDA APU_STATUS
    3 |; [! Y& ~2 F) m! O& M) b
  949. AND #$10
    ) ^6 q: T% w$ Y7 }% D- X
  950. BNE Volume_Count
    . K6 v" Q2 v8 Y% w* g/ g( B
  951. LDY #$00
    # X; E8 ?9 z- s& F$ H8 g# q" ~
  952. BEQ Volume_Count% ?$ n* @$ b8 [% c" z- _8 c, y) i0 ^
  953. / ~& _# T2 W# w% x) v: i, k4 S
  954. ;------------------------------
    9 p7 Y, W9 ^" j6 T8 q" J8 x
  955. ;音乐条处理, [6 m3 P, V; `# V' v$ _5 W/ q
  956. Volume_Convert
    0 ~  h; o; @* x. m) K7 s8 }
  957. AND #$0F3 a: E1 v7 Y$ D4 T' M' l$ a
  958. TAY  [# r4 a$ d7 \+ Y, p/ L% K/ @
  959. Volume_Count
    2 z8 x( _4 u1 A
  960. LDA #$086 g  b1 I" Y, |
  961. STA Sound_Bar_Cnt
    & ?: ^- x/ N6 y3 ^! S0 M& i: K* Z& o
  962. Volume_FILL1 g2 }4 m! o4 A' m: c( [
  963. DEY
    # v- @' i7 @# x( w6 j
  964. BEQ Volume_Half  u3 d) _& n. B, r  y$ S: B
  965. BMI Volume_Empty
    2 g3 Z+ `  i  ]* a; N
  966. DEY
    ( u7 w4 v. ^( D
  967. Volume_Full
    2 e- b# Z9 i5 K/ b
  968. LDA #$16  P  s' ?4 Q% ~$ D* e( a
  969. BNE Volume_PPU% e* p8 V" q; z) E: ^
  970. Volume_Half
    & Q* M1 B: R$ l$ C
  971. LDA #$15
    - e& i; P: S$ V+ p
  972. BNE Volume_PPU2 l1 K+ y4 p8 @; D0 h) b
  973. Volume_Empty" D/ S; ~0 t* D; S/ E2 A
  974. LDA #$14" M6 X5 h* x/ i+ N8 L: M
  975. Volume_PPU9 X8 n- h8 p% U6 Q
  976. STA PPU_Addr,X6 P* `2 F. D$ u7 l0 X$ ]6 }8 y
  977. INX9 \: s% X3 Y; q- C" F
  978. DEC Sound_Bar_Cnt  u0 ~- ~  s2 P' S- ~. i% T
  979. BNE Volume_FILL
    ' U6 e3 v$ ?7 A9 w7 R7 K- g# o6 s9 x
  980. RTS; N* G& U/ c+ T; P. R
  981. 1 C- F; X% w! o& M
  982. Volume_Set_Cnt" r) n4 n* m2 [( g- X$ o9 Z  W1 N
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    + ~- Y& G# e% q$ @7 r7 _, E% w
  984. STA PPU_Addr,X' ^' _/ h/ H' P+ W4 D0 H
  985. INX
    : [* z6 ]; A; \, r/ f7 J
  986. LDA #$08
    3 [" {2 ~( F, j6 ]2 Y9 ~2 n! j
  987. STA PPU_Addr,X
    " x% l" y7 `* y: N
  988. INX; `$ r6 f% L' i9 j2 o4 w* _
  989. RTS
    % I  ?4 `0 \7 w- d! K0 h; K3 U& _

  990. 9 ^: J4 Y, ~3 t
  991. .ENDIF+ J1 z& I2 F' _3 q) j

  992. . P# ~$ u" E8 U5 Y+ T/ O. N
  993. ;==============================: O& O3 ~8 P. @$ J# k1 |
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入; k5 d! w: b% K- }$ ?2 j4 _
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    6 P# ~* }: b/ Y1 z( ?/ D4 U9 w+ k
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除# Q5 \7 D" r1 e# C
  997. ;------------------------------8 U( K$ x. k: H
  998. ;PPU处理
    $ x* Q) I4 E" s1 o# N
  999. PPU_Proc
    ! Z* C- P( d7 l- ?7 |; k7 I  ?3 R
  1000. LDX PPU_Cur! a/ Q1 z! @7 k4 z2 J
  1001. LDA #$00
    + }( C+ c0 t( I. d
  1002. STA PPU_Cur' r5 Y( O/ T0 N7 k. g* J
  1003. STA PPU_Addr,X
    ; @6 \/ F% T3 i+ t) w, _+ N$ }0 q
  1004. LDA PPU_Addr; P6 o$ R& Y. H3 c
  1005. BNE PPU_Proc_Beg
    : C  ?. m9 o6 O# \% P. Q: z: s4 d; J
  1006. PPU_Proc_Ret
    * r( n# @/ L  q1 ^+ w
  1007. RTS0 ?! q: h0 e! \& S9 l

  1008. ! e$ D) @' w- k7 p7 {& P
  1009. ;------------------------------' y8 S+ I- Z6 I" B
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    3 F* A7 _1 y+ s2 ^4 J! V5 F
  1011. INX. p+ ~# I( y7 y& l8 T% }$ }
  1012. LDA PPU_Addr_L( a. I5 q$ l9 t' w; \4 t
  1013. CLC9 s$ g9 @% h* p1 `3 X9 ?
  1014. ADC #$20
    - b" H! \5 H# s! F5 }0 C4 O: c( m
  1015. STA PPU_Addr_L) }$ D2 C9 I. ^( K8 d/ ~
  1016. BCC PPU_Mode_Return_Cnt_End
    # W& [  X! \3 @8 p0 V5 |
  1017. INC PPU_Addr_H8 h% W. B: W+ `. j: l
  1018. PPU_Mode_Return_Cnt_End
    7 V9 o- X! m4 q8 U$ z; {6 }) [
  1019. LDA PPU_Addr_H% g1 R# N7 w' p' o: \' y2 _) j- n
  1020. STA PPU_ADDRESS& Y, f9 c+ G1 m! N
  1021. LDA PPU_Addr_L
    ! O4 c  s# n! p+ H! T: \, h
  1022. STA PPU_ADDRESS6 k7 H& \3 F+ O! b( Z6 G
  1023. LDA PPU_Addr,X
    , y( f& j7 U& T6 v+ X" i+ }
  1024. TAY+ r# ~- \9 i+ F, s! }/ }
  1025. PPU_Mode_Return_Cnt_Write* F) H& O5 Z$ W; T; e
  1026. INX
    & ^/ z4 ]' J$ [" ]& m
  1027. LDA PPU_Addr,X
    / `9 e3 N& \* P+ e: x
  1028. STA PPU_DATA# x2 K3 ~, J3 `# P: i
  1029. DEY
    / M8 Z3 y+ R+ k, O$ I
  1030. BNE PPU_Mode_Return_Cnt_Write
    : ?. Z* M$ A8 [# x6 }
  1031. JMP PPU_Proc_End& Y" F5 X/ F" u$ T/ ]& o  `% \

  1032. & R$ F8 a6 i/ Q
  1033. ;------------------------------" a* _- G, C0 \; |3 f3 t2 N
  1034. PPU_Proc_Beg  ;处理开始6 a# F$ ]' G0 o- Q1 B7 f, }: O8 n: x
  1035. LDX #$009 y4 k! P. [' C4 i" @" D
  1036. STX PPU_MASK
    8 c& V3 f7 U$ v  j* K! M! B
  1037. ;------------------------------7 z: X1 R8 ^  d+ _
  1038. PPU_Mode_Select  ;模式选择3 E) [3 Q6 g. K* v
  1039. LDA PPU_Addr,X. N' b' L% `7 Z0 b
  1040. CMP #PPU_MODE_CNT_CLEAR# x+ \- e( y+ N" A
  1041. BEQ PPU_Proc_Clear: W% ~; b% O3 b/ D2 I
  1042. CMP #PPU_MODE_CNT_LINE
    - U9 }& d& u3 N, ~
  1043. BEQ PPU_Proc_Cnt_Line
    5 P: M, R* d, f7 w- O
  1044. CMP #PPU_MODE_CNT_LINE_NEXT; f3 S6 ?( K+ d% ?. d
  1045. BEQ PPU_Mode_Return_Cnt+ h# ?* q0 [: l' D4 Q& M1 [
  1046. JMP PPU_Proc_End_Write
    8 T& B. z/ s* y9 j$ D
  1047. ;------------------------------# j* F% A! x' S! h  M
  1048. PPU_Proc_End  ;单行写入结束/ F; k6 M, @) t4 ?- ~1 g
  1049. INX
    7 @8 d  M0 [* s8 e/ r* I- w
  1050. LDA PPU_Addr,X
    # X$ J# P( D0 b1 x
  1051. BNE PPU_Mode_Select
    $ x  p! q0 r- `, {  A1 V! L5 s
  1052. STA PPU_Addr
    4 t# R8 C: i$ B8 g) C
  1053. JSR Update_Palette_Color
    * C1 z+ ?, o9 Q1 ?' A8 q" B. R7 Y4 U

  1054. 6 p2 v1 U0 I7 l  H
  1055. PPU_Proc_End_Write
    ( ~9 s7 T/ W. H
  1056. LDA #$00
    # m/ \4 t! }4 ^9 }& o% Q
  1057. STA PPU_ADDRESS1 d1 Q3 S' }5 l- _  v
  1058. STA PPU_ADDRESS6 ~/ N" f# ?* a2 _8 \
  1059. LDA <Text_Disable_Flag! K" k4 m% n6 X* l1 J+ p
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF: ]6 A4 d; p( I8 R) B1 _5 j" y
  1061. STA <Text_Disable_Flag
      I/ l: r9 G1 S; A3 w& q" W$ q
  1062. LDA #Scroll_X2 j/ a5 x$ G1 s; l: i' Z1 H
  1063. STA PPU_SCROLL
    : \/ J8 d( u6 U: U2 j" m- @
  1064. LDA #Scroll_Y1 s$ a9 m5 r6 i; z  r/ x
  1065. STA PPU_SCROLL! U$ h9 A+ D% z4 Q" B' p
  1066. LDA Screen_State7 o, O* i# q% l$ R/ u
  1067. STA PPU_MASK
    ' S, Z* s3 e3 f# E
  1068. RTS
    6 |. m8 n: A( Z6 z2 G5 O" ~% k/ k  m# y6 |
  1069. * L' S$ d& Y- m' p+ }' d% B
  1070. PPU_Proc_Clear
    9 [3 n4 E, Z7 R- H8 c
  1071. INX
    1 f9 P6 H! U8 }1 y) J4 D
  1072. LDA PPU_Addr,X
    % d; G6 [6 R3 T. ~& d- x
  1073. STA PPU_ADDRESS
    + H) F* ^. C# u0 C, s2 O
  1074. INX
    ; o8 L/ K* z' C: F- h5 d1 v
  1075. LDA PPU_Addr,X
    0 z: y3 H  X* R+ u5 Q9 g, Q
  1076. STA PPU_ADDRESS
    0 O9 I- x* d' y; O" F
  1077. INX
    7 J' F* N  x) N+ Y9 S% }
  1078. LDY PPU_Addr,X
    . M: M: s7 C+ d% H9 [7 J- l7 [
  1079. LDA #$00
    ( M5 m2 ?$ m- U% R; s- U- B
  1080. PPU_Proc_Clear_Write* v1 i$ G, M( {. g7 b5 f% c9 M
  1081. STA PPU_DATA
    : p# z( Z; P6 r/ y- M. s
  1082. DEY
      p* ^# k3 O( `& K1 @9 S' V
  1083. BNE PPU_Proc_Clear_Write
    2 P! E3 w& U: d0 |, l' T  S
  1084. JMP PPU_Proc_End1 \$ r% d$ Z0 ]3 z2 H) o3 ?- J6 _

  1085. + w/ T% w' e$ \0 B0 H! z- t
  1086. PPU_Proc_Cnt_Line
    % L6 `6 m; F3 c3 a4 N
  1087. INX
    2 Y* H) ^9 z; r5 Y6 I$ e, _
  1088. LDA PPU_Addr,X
    , q6 v, u0 c5 k- ^$ l/ C- r
  1089. STA PPU_Addr_H
    ( B! f$ s- s$ W6 R3 o
  1090. STA PPU_ADDRESS- X- n2 }6 e& ^* T* y% G
  1091. INX
    5 B1 q& p) C% O1 k: T  M
  1092. LDA PPU_Addr,X
    - u9 b! G4 z# M' s& F; b4 C
  1093. STA PPU_Addr_L: P% I6 X; }. j7 h& n4 ~! f1 l+ V
  1094. STA PPU_ADDRESS% @9 F' q$ s4 K5 F5 G
  1095. INX, ~* M- ~3 j7 h) e& T5 H6 h) T
  1096. LDY PPU_Addr,X! l+ A- l% G8 ?; B& Q8 ^7 J( u
  1097. PPU_Proc_Cnt_Line_Write
    " E( F; \7 B: s( ^
  1098. INX" V. ?7 [/ o+ a
  1099. LDA PPU_Addr,X# z3 Q6 D: y1 q3 e2 m5 k% L8 \
  1100. STA PPU_DATA  u* \$ u% a* `2 e
  1101. DEY1 ]2 \) E5 x% `* i4 t- w. `9 {
  1102. BNE PPU_Proc_Cnt_Line_Write& W, c" Z/ h/ m
  1103. JMP PPU_Proc_End4 ^( O3 y$ O8 W, g- T4 z$ f: l- y& D

  1104. " D5 a. S2 v/ n
  1105. ;==============================
    3 Q- L! |) S$ ]. h5 K: v; L
  1106. HEX_To_Dec;十六进制转十进制
    2 d- w5 s9 _/ h: {+ |5 T& V  e
  1107. STA <HEX_Data
    % X& u! w7 }, T
  1108. PHA
    3 B' r2 p# a6 T
  1109. TXA6 w4 [6 y& O7 \# N8 L8 T
  1110. PHA
    ( p# j' T, h1 `8 r  F) e9 [
  1111. LDX #$00
    ) B: l+ H  a' T1 b
  1112. LDA #$000 O+ x9 D7 x9 `+ ~( c0 I! ^
  1113. HEX_Cln- Q# L  o; C0 S6 D% A: b
  1114. STA <DEC_H,X
    # ^) g( P" y& H5 l0 d8 y/ s2 U% W
  1115. INX6 U  m, \& w- I2 p, Y" n4 P
  1116. CPX #$036 Q, k* ?, C/ \# C$ O
  1117. BCC HEX_Cln# x7 b- B5 O0 D0 X" Q; s) d
  1118. LDA <HEX_Data0 W9 k, B) L. G5 y8 r
  1119. ;------------------------------! j4 `( p( F1 F; X) R7 _8 ]1 \2 t
  1120. HEX_100
    $ z- v9 _, u7 K- `8 y
  1121. CMP #100* Q; |* m% n# _0 ~/ s- q+ Y7 D5 q
  1122. BCC HEX_10
    % H: b9 [: {. s) q, z6 P0 n+ [' O
  1123. SEC' b( C* V8 L8 O' ^
  1124. SBC #100. Y; s2 f* Y# o. ]* G: I; U
  1125. INC <DEC_H" h5 i- n8 g0 N% l6 S
  1126. BNE HEX_100& Y, K, N4 ?: ?! O5 h4 {8 u
  1127. ;------------------------------& h& g9 M6 |" R# J) W5 D
  1128. HEX_10
    # `7 a4 f$ I4 {+ c: [( D( F
  1129. CMP #10
    + _6 I, G0 C3 g4 X
  1130. BCC HEX_1
    6 W, R- B2 F+ a* ~7 \) U, X
  1131. SEC' J! F3 R* c6 a' {7 }; L" t' q
  1132. SBC #10* P: l; T' V% q& x
  1133. INC <DEC_T" ?7 Z0 T6 D( P3 y9 ^* _/ Q, o
  1134. BNE HEX_10
    % d2 Q; g7 i. j
  1135. ;------------------------------
    & Y. f2 \4 ?  m% Q
  1136. HEX_1
    6 d* e; {  O: Z+ D
  1137. STA <DEC_L$ h3 ?/ p* V& p( }9 Y7 i
  1138. PLA# M( u, G$ z0 B1 M
  1139. TAX
    4 X. t7 C8 e  i
  1140. PLA
    % }1 {5 }! [* n1 e8 k
  1141. RTS
    / V' I# Z  C/ g8 b& M2 X& {4 H4 b; q

  1142. - G- @. n1 H* Q( J* y
  1143. ;==============================
    9 e& H0 ~6 {1 M2 r* F
  1144. ;音乐曲目显示
    0 o8 B7 R2 X7 [4 F/ r7 L+ O
  1145. Music_Show
    % ]% Z, J, M9 I2 h# A7 z+ |7 V
  1146. LDX <Music_Item_Cur+ b  N- B, ?' [8 a6 L6 s8 ^
  1147. LDA <Music_Cur,X
    " D. C" l4 }+ e. |3 p2 q" [# ?9 l
  1148. CLC
    . i$ k# y1 u1 E! a0 j' ^  P
  1149. ADC #$01
    % e, a' Y' S3 t  Q9 N( X, u0 L- W+ e
  1150. JSR HEX_To_Dec
    9 }/ u  ?8 `! {3 m& W5 A' U" x
  1151. LDX PPU_Cur
    5 J- A8 t2 y2 X2 Y3 f0 t/ N
  1152. LDA #PPU_MODE_CNT_LINE  y9 d" x% j, }+ F& B( l' _) E3 ?
  1153. STA PPU_Addr,X  i: J8 k/ g! t/ r( [
  1154. INX' ~2 ]1 \  }  M  F3 l5 L
  1155. LDA #HIGH(Play_Index_Pos)7 d( [- Z/ I( M) L9 V4 B1 O
  1156. STA PPU_Addr,X2 {9 S3 O6 N, o; ]/ f
  1157. INX
    ' N/ H! v2 ~' b# z& Y5 g. i2 I$ `
  1158. LDA #LOW(Play_Index_Pos)
    & c) ]' r/ ?, P% R* l$ h
  1159. STA PPU_Addr,X5 j4 v; i: e2 d* J7 M" K1 g& n
  1160. INX! l2 i9 C3 x9 L$ n

  1161. ) W7 G' R( @& n
  1162. LDA #$074 p3 @' Q! u4 |& ]3 K9 s
  1163. BNE Music_Show_Length
    / N4 L7 w  H; r8 ?$ K5 y+ ?
  1164. + H7 s7 z( i" T1 r$ w
  1165. Music_Show_Length3 H" ~1 |% D/ k8 {9 Q7 [
  1166. STA PPU_Addr,X# M% d  Y" a: }; w) I; j
  1167. INX% u: d/ p! {/ e

  1168. $ R8 n5 R1 B# s" S* d
  1169. LDA <DEC_H+ p5 ?* L/ J: n3 T6 Q8 R
  1170. ORA #'0'
    2 d# [0 |  \; K% ~- L* h
  1171. STA PPU_Addr,X
    % z1 S5 x2 A, G! a( `1 B4 p4 N
  1172. INX
    : L5 r4 \8 G( {* D1 k, O4 M
  1173. 1 M3 K* b5 {5 J) ?
  1174. LDA <DEC_T
    $ V% M! r: X* c& X# Y& G, {/ E- a# m/ {
  1175. ORA #'0'; }* ~5 g! I, m0 h4 E& V( d
  1176. STA PPU_Addr,X
    6 X/ ~0 l& X) a* H3 @' a
  1177. INX5 ]: m) a! X/ ]3 S  g
  1178. : j1 s7 `- A  r* P! b! F
  1179. LDA <DEC_L
    0 L! n! j5 j9 ~" O% x/ `6 a
  1180. ORA #'0'
    / i& g- |* @1 j! W7 r# a$ h& K+ {
  1181. STA PPU_Addr,X6 F) j& L" @0 O$ a# q, g
  1182. INX
    5 c+ t9 k/ f0 Y( x2 M
  1183. 5 G5 C3 X& q! b
  1184. LDA #'/'! m; }5 D, T! ]. w& p, Z
  1185. STA PPU_Addr,X$ Y( U; V0 h4 a3 i9 H1 s
  1186. INX* t5 h; S5 _+ S" _' f& }0 Z
  1187. Music_Show_Total
    : S" T  d6 W5 c. u
  1188. LDA Music_Total
    2 }7 s6 K4 {) X
  1189. CLC
    2 h  e/ k4 N0 U8 z7 y
  1190. ADC #$017 r5 e. p1 X3 |6 c3 m! D) Z
  1191. JSR HEX_To_Dec
    & X% ]5 K: d& y3 V' E8 L
  1192. ) j( C8 y2 p% H) b% z
  1193. LDA <DEC_H
    3 {7 z1 C8 y! D2 i* l; d3 x/ e
  1194. ORA #'0'0 I5 v; [0 N' H6 Y- ]) V2 B- l9 H
  1195. STA PPU_Addr,X
    ! ]1 F7 R0 {/ f- \5 y
  1196. INX" B# t" L) @% a, Z
  1197. / u& J0 j7 G# O/ p
  1198. LDA <DEC_T
    " o0 x$ s( x$ F3 W* n8 [( P7 L0 j
  1199. ORA #'0'
    & j" c, o) X  S, s) q
  1200. STA PPU_Addr,X1 E# N( ^# `/ y$ P4 t( `
  1201. INX
    ! U& D) h. K6 j8 X! d) V+ g" q
  1202. 5 T3 I$ o9 \1 L' O0 v: a7 t
  1203. LDA <DEC_L
    - ~; _# ]8 i; P' G" o% y
  1204. ORA #'0'' w' c% \0 d: u8 ~( g: U
  1205. STA PPU_Addr,X
    0 s; M  e$ ~. x# g
  1206. INX; H6 W9 m! K' r

  1207. ( u7 b  N  D# Z
  1208. STX PPU_Cur
    # e4 n7 \0 l1 I5 H+ k3 d
  1209. Music_Show_End* s4 @: i3 E, Q
  1210. RTS+ d9 c1 f( {) P  V6 W; E
  1211. - U* ~: b$ D4 I4 l  w
  1212. ;==============================
    ; }* B5 ~+ {( c# s3 Q/ z, b# q
  1213. Time_Show;播放时间显示
    7 n. G% g/ k4 b" H
  1214. LDA <Text_Disable_Flag# X' A, ~9 D% O+ O' O
  1215. AND #TEXT_DISABLE_ITEM
    ( G7 ^) m5 K/ V
  1216. BNE Time_Show_End
    % c& o: O8 n# n2 p+ a/ S& e
  1217. AND #TEXT_DISABLE_TIME
    * s2 y# o0 u: J% N2 r  d. W0 \+ ]' u
  1218. BNE Time_Show_Enable9 H* i* ]. G; B' }

  1219. & Q/ K$ J5 x$ l: k9 g0 L
  1220. LDX PPU_Cur- }- ~8 n% g% \/ O7 ~
  1221. LDA #PPU_MODE_CNT_LINE. W- d7 e0 a% c7 `" z" |1 `
  1222. STA PPU_Addr,X
    : p" l: G0 D" n5 S, r$ m  o
  1223. INX+ z: u+ m+ M# D* B6 B
  1224. LDA #HIGH(Play_Time_Pos), Z# v* q2 u- l( t2 \$ v/ D1 M
  1225. STA PPU_Addr,X) ~. ^7 g8 r+ i' b
  1226. INX# c5 g7 y. C6 v3 A2 W9 @1 o) t, _; h
  1227. LDA #LOW(Play_Time_Pos)1 |& c& P9 [  t0 R. U+ b7 G
  1228. STA PPU_Addr,X% x6 u: ?& S! t0 ?" U0 Y) ^
  1229. INX8 V- J1 l, j& H. u* t1 D
  1230. LDA #$08$ S  t( @4 r$ v! |" t; \0 _
  1231. STA PPU_Addr,X/ Z% S5 ^% I$ E$ p6 s
  1232. INX7 E, s( i# l' q$ J8 u  O" A. p
  1233. Time_Show_H1 `1 g3 U4 v' U# Y* S
  1234. LDA <Time_H
    . H- F4 E& c5 I& b3 p: q
  1235. JSR HEX_To_Dec
    6 r% ^7 F+ s" ~& p
  1236. JSR Time_Digit- `- S. T1 q+ X6 O# l$ O
  1237. LDA #':': G7 C6 k/ C; A4 ?. f7 }6 q- t- w
  1238. STA PPU_Addr,X
    . d+ b% k2 p& e. I; L8 b
  1239. INX
    ( ~! M2 N6 U' A1 ?/ \( Z
  1240. Time_Show_M0 Z5 L6 u( _% A9 R9 o+ E0 j
  1241. LDA <Time_M& N9 z& [, O; a/ ]4 S( v3 H: N
  1242. JSR HEX_To_Dec
    " p! b! E3 Y, V6 h7 e4 \
  1243. JSR Time_Digit
    % `& P! \; d0 K1 D
  1244. LDA #':'2 J% f/ ?$ H( {/ x& O, L
  1245. STA PPU_Addr,X- y* f% c4 w9 l% ?0 z
  1246. INX
    ( H+ V9 _* E4 i+ d+ x) T9 J
  1247. Time_Show_S! h: c1 r' I0 C" T, C
  1248. LDA <Time_S
    2 F3 s& d7 S8 e4 I
  1249. JSR HEX_To_Dec
    ' _6 N+ [8 |8 G- B
  1250. JSR Time_Digit. o/ ^0 _3 \1 d6 L
  1251. STX PPU_Cur
    ' f( P  w5 T1 t+ j% ?1 ?9 I
  1252. Time_Show_Enable! u- I1 s2 T3 A& H8 W
  1253. LDA <Text_Disable_Flag/ p: i! o* m7 u
  1254. AND #TEXT_DISABLE_TIME ^ $FF* }( M% X7 ?- D  H4 V$ g9 \
  1255. STA <Text_Disable_Flag
    6 a9 a& {" |4 A
  1256. Time_Show_End
    8 q9 s6 H& u. c9 I" g: J
  1257. RTS
    $ l' U1 i' l4 q. C: C
  1258. ( e* h& l( }$ }* R
  1259. Time_Digit
    3 M9 [* ~. B: v7 a7 H- i8 m
  1260. LDA <DEC_T
    / o9 j$ E' V' X( a. b2 ^9 z' R0 m
  1261. ORA #'0'
    6 _" w  w7 r" _: W4 l
  1262. STA PPU_Addr,X1 w, S' n4 W2 X' V- t1 w$ @; D+ w; f1 @
  1263. INX) W+ v6 d0 e" Q; C! L0 [$ {
  1264. LDA <DEC_L
    ; c0 V" E! j* g% Q$ R
  1265. ORA #'0'0 }! t" L- @7 F7 n8 {: p9 f( _% B
  1266. STA PPU_Addr,X9 u6 \* I% {. ?# t( w
  1267. INX2 i  C. x# c) s. b8 s
  1268. RTS
    0 x. B& L' y- q: n
  1269. . v7 U) l4 o& Z- z& Z1 d# B* @
  1270. ;==============================$ ]' [3 G% V3 o9 _$ ^9 R$ E" C
  1271. Time_Count;计时
    " E. x* Y% H  b# G1 r) x
  1272. LDA <Music_Stop_State8 U1 V! n! w& K% \+ t4 u) Z4 {1 B
  1273. ORA <Time_Wait_Cnt  Y, r4 }/ f( U5 Z$ @2 h
  1274. BNE Time_Count_End
    ( a% V  u$ p7 j  g* I, R
  1275. INC <Time_Cnt
    " n! R- y9 C$ d( H! _
  1276. LDA <Time_Cnt
    ; p3 E, V) v2 K) c: X
  1277. CMP #60
    - b2 C. B; V. a  ?# s4 ?7 q
  1278. BCC Time_Count_End) e# m0 h0 K% d+ ?: P! l
  1279. LDA #00
    ) T4 Z" z) e. m  g( W" ]5 v4 ]
  1280. STA <Time_Cnt
    0 X$ ~4 d& e- ]
  1281. INC <Time_S
      `' S9 D2 c# Q/ n' o3 J* v

  1282. - p0 o8 w. m% z
  1283. Time_S_Cnt" L5 v2 r* F7 b# I7 ^& e5 N( W6 F
  1284. LDA <Time_S
    ' C( O% M: d1 G% t0 m' \' A$ C
  1285. CMP #60
    ! m) ^" R  Y# }. B5 U$ f
  1286. BCC Time_Count_End
      z) g2 m4 ^) L9 }+ M& U% ^' T6 w! C
  1287. LDA #007 B- D7 D$ k. M& L
  1288. STA <Time_S
    8 n( u! H' t' [1 o& ~6 R5 M1 j
  1289. INC <Time_M) x( x9 c6 ~; M  a* H
  1290. * ]7 T% S: v) [' M; z) s- t& y
  1291. Time_M_Cnt* t2 k( i+ J; d5 R7 [' d
  1292. LDA <Time_M. P% e8 H+ h! e4 W
  1293. CMP #60# j% N: c: `- o/ l5 l1 }- o
  1294. BCC Time_Count_End, W/ Y$ y1 g6 U, |
  1295. LDA #00) E/ ?' u9 r7 B; z% h
  1296. STA <Time_M
    . I) Y3 \$ s# u( T! I
  1297. INC <Time_H9 v( x9 ]2 l! Y8 F) b# y
  1298. % ^! Y# l: `" P
  1299. Time_H_Cnt7 v1 G/ B. z- |# k* \
  1300. LDA <Time_H
    - _2 w, s) T$ ?) ]
  1301. CMP #24  r0 i3 x8 z# Z8 M+ s
  1302. BCC Time_Count_End
    % R( G7 Q% f/ m. y% u- ~* w3 D
  1303. LDA #00- A- L& b, U3 W
  1304. STA <Time_H
    : M( ]- ~& I! k5 p1 [

  1305. ' R1 |6 K+ p, d3 x7 R6 G* N
  1306. Time_Count_End
    8 I6 ]: t( H0 s9 X: I1 Z& }
  1307. RTS9 |1 X( _+ l  ^( ^/ a' [

  1308. - S, w1 ?% e3 P8 k* s& C0 u/ P, T/ q# V
  1309. ;==============================* G# m0 A, x7 A! |% [
  1310. Time_ReSet;播放时间重置, j( t7 W: R" i( Y: C5 [" h7 D
  1311. LDA #$00$ V& p) o8 P  i3 O
  1312. STA <Time_S7 L1 p% {6 l$ d% G
  1313. STA <Time_M
    7 N9 j0 {4 k% L
  1314. STA <Time_H* Q6 _" W/ f( V: V: M: }7 F: H
  1315. STA <Time_Cnt
    : p& B! \2 X) o& W4 |$ ?/ X% [
  1316. RTS* m; K" T- a. Y3 M% d- {* u  A

  1317. $ T, d- d) {8 |/ y+ C, q
  1318. ;==============================) ]) V; }' u8 \; v
  1319. Music_Bar_ReSet;音乐条重置
      x. |$ S$ q- J2 }0 h& d7 w3 D
  1320. LDA #$00
    % J8 I* Q. K8 J( z
  1321. LDX #$008 J  i! O- [, S, i# P+ E# V
  1322. Music_Bar_ReSet_Set
    % {6 H: d* T( N
  1323. STA Sound_Bar,X3 y8 s- g5 t$ ?( f' `* K
  1324. INX# y8 s' o' U1 ~* @& {, H
  1325. CPX #$10
    4 P# f' c$ q/ u9 l  I
  1326. BCC Music_Bar_ReSet_Set2 {. S0 |9 I5 P' Q8 u
  1327. RTS0 g2 K: |; ]( y& k% _
  1328. 9 d* \) ~  X) E' b2 d8 V
  1329. ;==============================3 a4 Z0 Y& l- u( v) y# E. v
  1330. PPU_Data;PPU数据写入1 j/ s( P& Q+ E: W" `# Y' n+ ~
  1331. STY <Data_L( o$ R! [8 R" A
  1332. STX <Data_H
    1 |, W7 P4 Z0 D" y) Y+ N
  1333. LDY #$FF
    : [5 U" W' }( M# `& C9 [: w9 Z
  1334. LDX PPU_Cur* {& y* K6 k  [# L
  1335. DEX2 l- k) h, f8 q! B3 M; p
  1336. PPU_Data_Beg
    : i6 g+ x1 S, ]4 X
  1337. INX
    % b+ \+ D* {5 ~- D+ {8 V
  1338. INY
    ) I. _/ S8 P! o: Y4 d
  1339. LDA [Data_L],Y8 ]/ _  O4 j: q6 y8 i
  1340. STA PPU_Addr,X4 [5 V) \/ Y) k# f( E3 }+ e
  1341. BNE PPU_Data_Beg) I5 ^" R0 ^! m7 I0 O' Q2 a8 }
  1342. STX PPU_Cur2 Q$ C. j% {7 f  F
  1343. PPU_Data_End
    1 q  Z0 B/ [$ _! ~8 N' A
  1344. RTS- X* w4 Q. {- A4 H- C

  1345.   C: l0 K* w, G3 V, Z/ P9 l) C
  1346. ;==============================
    " u. d% j* g: m" r3 g/ f( s
  1347. Music_State_Show;播放状态显示
    ( E- r5 R  ^, R4 r6 A: G" a+ z( e) [
  1348. LDA <Music_Stop_State
    % c0 k- W# `/ {
  1349. BEQ Music_State_Show_Play
    ; @* S% a9 n$ \6 l& z# K# ^
  1350. Music_State_Show_Stop
    9 e, }: D1 ~2 G: o+ d2 A$ Q! I
  1351. LDY #LOW(Music_State_Stop)
    & }2 T2 w' c: S6 {$ J8 c* R+ L% c. Z
  1352. LDX #HIGH(Music_State_Stop)0 D' r) n3 b( n& }6 v2 t% y
  1353. JSR PPU_Data
    ) w  {4 X3 m2 j" A/ ~# K
  1354. RTS9 f+ Z" ]" e& t2 P, f: Q8 y, w
  1355. Music_State_Show_Play1 X8 x) F- q6 Q0 q
  1356. LDY #LOW(Music_State_Play), V* d$ `! h& _) R0 m3 b& z
  1357. LDX #HIGH(Music_State_Play)2 c1 m8 z: z9 `  V2 o) \7 I8 K
  1358. JSR PPU_Data
    * h- j8 f* E  {2 C
  1359. RTS
    * {. y3 u, ]  C' t" x

  1360. ' |( s( v4 @  X& `' Q4 L
  1361. .IF SOUND_BAR_SHOW_ENABLE% X; m1 U% m, c4 i5 E8 M
  1362. ;==============================
    / q: Z% S0 Z, N# B
  1363. Sound_Bar_Text_Set;标题与音乐条初始化* W8 m* M' e- f7 c$ p7 a) x1 `" I
  1364. LDY #LOW(Sound_Bar_Text_Data)0 g( w7 K! U. F; W
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    1 o' f% ~" F' S) Q9 p5 f
  1366. JSR PPU_Data* r0 _+ i4 m/ w1 {! ]
  1367. RTS
    $ x8 m" y) H" U% Z" p0 R, V

  1368. # ^# J% I, @6 s( a+ I
  1369. .ENDIF
    + ~/ A8 a# t# S3 P; B7 H

  1370. . k" j, U. `6 ?, `
  1371. ;==============================; B! E& l& H% S2 w! z1 Q
  1372. Set_NameTable_Attributes;设置命名表属性: i  P  y3 C* B
  1373. BIT PPU_STATUS
    % k* n+ Z. e) I. o' ]1 Q, z) L
  1374. LDA #$23
    % B! w3 O( S5 e. c: S; X
  1375. STA PPU_ADDRESS) I5 `& J1 U( o* Y  @0 W9 ~
  1376. LDA #$C0, l! d/ g; w- \' k4 f
  1377. STA PPU_ADDRESS
    ( i/ j9 J9 I' p) P- ?  e# B5 Q
  1378. LDX #$00
    ; s! M4 p! u8 g8 G8 ^
  1379. Set_NameTable_Attributes_Write
    $ z# b+ n6 Q4 z! b$ m
  1380. LDA Palette_Attributes,X
      g7 L) F& V! J
  1381. STA PPU_DATA5 K% l( s( y$ W7 U
  1382. INX
    ( d" }/ F: l; D2 N5 b6 g
  1383. CPX #$40: g' c* F2 u4 I7 |4 ^
  1384. BCC Set_NameTable_Attributes_Write
    3 I. `- o4 E0 N1 B: t% s
  1385. RTS
    ) A3 ]5 ?9 J. [9 _+ A
  1386. % _! E* X$ U! v$ g3 ]
  1387. ;==============================
    * k+ ]& _/ ^) E8 A. r
  1388. Set_Palette_Color;设置调色板数据
    * J$ G* H7 ^2 o3 H: _3 `
  1389. BIT PPU_STATUS; M4 h; d! D) D( d/ V
  1390. LDA #$3F
    0 B- ~( H# x0 b6 W- a) a
  1391. STA PPU_ADDRESS
    # P7 ?, e. q( @' Q8 E  ]! {4 b
  1392. LDA #$00! l3 k0 ~, W9 m; N' A# j( B8 G
  1393. STA PPU_ADDRESS
    ! J' W- d. q6 K1 |
  1394. LDX #$00
    # q/ {& u$ \* g/ ^$ P
  1395. Set_Palette_Color_Write9 u) Q! Y6 T) {4 {* X
  1396. LDA Palette_Data,X
    9 a) U( X! c4 F" t; d5 |
  1397. STA PPU_DATA
    % n) J! R$ J* s
  1398. INX
    ! Y- e" B" H' D7 Q( `& U3 T
  1399. CPX #$20
    ' [  Q+ I# K6 [8 D+ ^
  1400. BCC Set_Palette_Color_Write: @4 ~  D: O! v# x) O$ A; B
  1401. RTS5 x5 p7 k! q4 P3 p

  1402. - Q# D) Y) S8 K4 V: B1 V
  1403. ;==============================
    % b/ B9 G3 Z4 d+ c! x' L8 K
  1404. Init_Palette_Addr;初始化调色板数据
    3 I+ X. p. O3 i; _5 u$ k2 s
  1405. LDX #$00+ D, k3 U" S2 b- K5 M! l2 Z
  1406. Init_Palette_Addr_Write. o% g3 S- ?, x6 Z1 B& X
  1407. LDA Palette_Data,X
    # t% X8 L6 Y* I* ]+ e
  1408. STA Palette_Addr,X& Y' E3 z6 }0 ^/ A- K! [
  1409. INX
    ! Y5 n1 O5 Z9 _8 J
  1410. CPX #$20
    4 h6 d! U4 R* r% @0 N) L
  1411. BCC Init_Palette_Addr_Write- e. Y- l0 L" I) X$ `& W
  1412. RTS9 B7 }6 U1 ~* r

  1413. ( F# _1 ?) ]. X
  1414. ;==============================
    0 c6 B# S- H1 z! u
  1415. Update_Palette_Color;更新调色板颜色
    3 j) n, _: a! Z9 D
  1416. LDA <Palette_Update_Flag! r8 x" ^- e: l: @+ i3 z+ T, o
  1417. BEQ Update_Palette_Color_End
    9 m# A1 F( H4 j3 q' a$ h+ K
  1418. LDA #$3F
    * E2 B% O! x: q# @  i9 N
  1419. STA PPU_ADDRESS
    ; n- ~$ D7 x+ ]% X
  1420. LDA #$0C
    2 O; e9 X) F6 @# ~0 y7 Q
  1421. STA PPU_ADDRESS) w1 k. ]) u& [: y5 S; L; r
  1422. LDX #$0C. Q, G5 q7 ?: ?, g
  1423. Update_Palette_Color_Write
    ( F0 D3 X0 P2 ?
  1424. LDA Palette_Addr,X* U! Y. W2 b) E9 ]
  1425. STA PPU_DATA( i( C6 U' S& i
  1426. INX
    # A$ X- j8 Y! P$ |9 Z( s7 U
  1427. CPX #$14
    + o0 h7 b6 L  N+ k  w* L2 S
  1428. BCC Update_Palette_Color_Write
    % I9 G; M, x" T$ ~4 z& l) ]
  1429. LDA #$00
    / T. ?: Y( s+ P# c, P0 G
  1430. STA <Palette_Update_Flag
    , B/ M! Z$ B9 z" a6 I1 B
  1431. Update_Palette_Color_End. J' N, l; C5 U. _
  1432. RTS$ A4 Y+ w& K# u0 l& K

  1433. & E( M. A1 |9 H. h8 a! G; K1 h

  1434. . j2 L8 a& I1 C. d% Q
  1435. Update_Sprite_Palette_Data
    ! G9 W0 P: ~% `. m) q
  1436. .DB $21
    0 D4 j, Y3 |9 g- K
  1437. .DB $21
    ! z" M" b# |; J0 b' C
  1438. .DB $11
    * C8 ?. G% L- R
  1439. .DB $01
    . i" v6 }) f5 S" A0 V
  1440. .DB $01( V& ]) Z, j: g& d4 i) ~
  1441. .DB $11
    0 E) J4 _0 Y. ]% L5 y6 ^9 w
  1442. .DB $21
    5 I5 w* Y; q5 }. x. H
  1443. .DB $21: Q+ T% L% g9 B6 b1 A/ `
  1444. .DB $11
    - c# ?; G* {1 o5 B! i
  1445. .DB $01+ S0 B9 b( T! B' T0 S+ e
  1446. .DB $11; {5 M2 H& x8 q2 K6 M
  1447. .DB $211 O; E5 o/ N) w
  1448. .DB $21
    # e+ Q4 o6 D9 o8 f. c, y0 d% L: p
  1449. .DB $11
    : G6 t  n7 o$ ~9 Z" s/ ^
  1450. .DB $01) K; \6 i. W/ q3 `0 i5 p$ L& C
  1451. .DB $11% z  g4 ?" ?: ^, l
  1452. ;==============================% x1 Z& m! O- T
  1453. Update_Palette_Data;更新调色板数据
    & q6 T  L. ~% P% Z4 F, n# j
  1454. LDA Nmi_Time_Count6 H+ @2 _: I2 ?
  1455. AND #$08
    * _% {- v) p4 c" {7 h3 |" X
  1456. CMP #$08/ V' Z, W1 {! F, z
  1457. BNE Update_Bkg_Palette_Data
      ?3 n# f0 }  j
  1458. . j/ k  m8 l( [: j, z, ^% a8 T& R2 M
  1459. Update_Sprite_Palette_Data_Set
    7 w1 @4 o, j1 M9 U, c1 P+ k$ p$ R
  1460. LDA Nmi_Time_Count* l; L1 d) i# ]0 k- D
  1461. LSR A2 H, @( f& n3 e) q+ E+ L
  1462. LSR A* U9 `( ]  g  f3 U
  1463. LSR A
    ! j  U. W4 v) X* d# O
  1464. LSR A. _2 n+ e% ~) G0 d% e% P6 y. n
  1465. AND #$0F& ]; Q9 b7 ]1 c7 W7 t
  1466. TAX
    $ v. L# D8 h# @" K  p
  1467. LDA Update_Sprite_Palette_Data,X. Y& {( I, c# y0 |; B1 m
  1468. STA Sprite_Palette_Update_Addr
    ) Z9 V3 Q, Y6 f* |% X' r8 K/ d6 G
  1469. LDA #$01
    4 C+ H/ ~1 s; I! O
  1470. STA <Palette_Update_Flag
    ! n  `: Z8 U# ~- A' D

  1471. # V5 W7 A' c: A9 [: ~; n4 b
  1472. Update_Bkg_Palette_Data
    7 W' F8 H" d' ?8 J4 I
  1473. LDA <Text_Disable_Flag
    , Z4 B4 g, x, H  k9 N" P5 i; _1 f
  1474. AND #TEXT_DISABLE_RAM0 D! _0 R5 F( A. O: |
  1475. BNE Update_Palette_Data_End
    1 `, b/ q/ @2 c8 V' Y7 F' M; R
  1476. LDA <Music_Stop_State) m1 z+ {7 T5 w5 ?7 L
  1477. BNE Update_Palette_Data_End
      K+ ^! r7 c- H

  1478. 6 M1 d& d" \+ ?$ w
  1479. Update_Palette_Data_Check; l( P. z* W$ _* |2 {
  1480. LDA Palette_Wait_Cnt! I% `' [  N9 ~$ M9 i4 Y8 c$ z
  1481. BPL Update_Palette_Data_Check_Over
    - W1 k+ I8 q; D: y2 ^& x3 F4 v6 N$ x
  1482. LDA #PALETTE_UPDATE_INTERVAL4 K) H4 _& X6 o
  1483. STA Palette_Wait_Cnt% w- ]; A! J5 y
  1484. Update_Palette_Data_Check_Over
      F( T- z, k! g( h- ~9 n8 I
  1485. DEC Palette_Wait_Cnt# \5 ?6 O( M! Y( o( F* w
  1486. BNE Update_Palette_Data_End* Q1 ]# N1 R  f/ ?9 [) S

  1487. 4 _4 G) H( o' x' l
  1488. LDA <Text_Disable_Flag
    6 W9 G0 c# f# A; b
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ) p! ^* `3 F7 O# d1 T8 |
  1490. STA Text_Disable_Flag0 d/ _' q9 i3 \. {
  1491. INC Palette_Update_Flag& h! S; |) z2 t; N) @7 k% ~
  1492. 8 e4 S# u! {+ {* _9 P
  1493. LDA #PALETTE_UPDATE_INTERVAL
    5 D* E  _) X; s. e& I1 t2 v
  1494. STA Palette_Wait_Cnt
    1 x- r! T  h) [' q
  1495. # K& j8 c7 z$ w4 I
  1496. LDA Bkg_Palette_Update_Addr' v4 g5 w/ Q! V: O7 Q8 R
  1497. CMP #PALETTE_UPDATE_MAX
    2 b1 y5 C, P: a
  1498. BNE Update_Bkg_Palette_Data_Set
    + o: l# Q8 K6 P* m
  1499. LDA #PALETTE_UPDATE_MIN - 16 f& J  d% u4 H' c7 `
  1500. STA Bkg_Palette_Update_Addr( E5 N7 i9 z# B. S" ^. q; `
  1501. Update_Bkg_Palette_Data_Set
    4 [0 ?2 s2 r& v* M
  1502. INC Bkg_Palette_Update_Addr5 a* B! Z8 W' t

  1503. * p3 l  d9 [6 m6 H4 t
  1504. Update_Palette_Data_End
    8 n  S3 K2 S" j' t
  1505. RTS
    % \3 ]9 ~3 s' O' }. X6 ~  N0 l# m

  1506. 7 O/ j% x& I: W; {
  1507. ;==============================4 d2 D3 ]" U+ b: M1 N, o
  1508. Show_Music_Text;显示静态文本9 D+ f; h2 K* [- Z/ y' S) [
  1509. LDX #$00) g/ a! m' k5 a7 w8 G  z9 _
  1510. Show_Music_Text_Set
    " F5 \: I& I7 b- v2 U4 P
  1511. LDA Static_Text_Data,X: P/ S* F" N3 C9 Z* u
  1512. STA <Data_L
    5 a! s9 D: \* V. s7 ~7 _0 R
  1513. INX" b8 ~0 D, u9 F
  1514. LDA Static_Text_Data,X! y* I0 M6 t2 z5 `
  1515. STA <Data_H
      p& u& V. I! F. H6 Q6 z% v) w
  1516. INX
    $ q" e1 @5 I+ S2 n. L' |/ D
  1517. LDY #$00
    " B4 X9 S- q, J: t
  1518. LDA [Data_L],Y
    $ b2 y; @6 x' I0 U! F
  1519. STA <Data_Cnt/ b* |) O1 V9 U: G  F
  1520. DEX
    3 X- F' M  a6 Z; ?+ [$ l" Y
  1521. DEX9 G1 g, g9 V+ o2 f
  1522. LDA Static_Text_Pos,X
    3 h+ A) s' P; B( A$ I
  1523. STA PPU_ADDRESS! r" B" k: E2 G9 Z' ~' B0 C. j: F7 a
  1524. INX
    ( _7 G7 R. J3 y8 v( R
  1525. LDA #$20. u8 N- }' L9 G# s
  1526. SEC
    ( c* \+ U& e9 {1 i+ Y6 s2 z: O& J5 Y
  1527. SBC <Data_Cnt
    * J1 }# v) e4 V- T
  1528. LSR A
    : T# p' [! Q6 H9 C, A
  1529. STA <Data_Buf
    % ~9 P/ F1 S; y+ H1 a  o
  1530. LDA Static_Text_Pos,X
    * G. N8 r  G' A3 U+ m1 |( f
  1531. AND #$E0% F8 p* b" \6 c3 T8 C5 q
  1532. CLC) o3 l4 |: Y' B- [
  1533. ADC <Data_Buf' M/ {. S; {3 f
  1534. STA PPU_ADDRESS
    ! M7 t9 |: U- s( e! I% l
  1535. INX
    / B8 z- J& e7 m( k4 v
  1536. Show_Music_Text_Set_Write2 n  K8 R! b; b; K5 C' V/ s+ Z% b
  1537. INY1 R/ Q$ I% N7 e1 p/ |1 G4 X6 Q
  1538. LDA [Data_L],Y! T) x8 M+ X* Q3 |* T7 [
  1539. STA PPU_DATA
    " p4 a9 r7 ]" p2 O3 l; h
  1540. DEC <Data_Cnt. }6 G; J/ w' b5 U6 r) N+ w
  1541. BNE Show_Music_Text_Set_Write
    ) ^4 H) b3 ?# N. [( }4 n% k  J
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos3 ?: Z+ R5 b  p$ o( {% G3 C
  1543. BCC Show_Music_Text_Set4 ^% e/ v! A9 D. g
  1544. RTS# L! Q; z5 ^. t# [' j5 ?: n8 d) I3 _
  1545. ! @$ t4 p  Z# u# D! X, N7 G1 T+ E. y
  1546. ;==============================
    ) A# k; _/ w# i8 p) [4 J
  1547. .IF Track_Name_Pos;显示曲目信息
    , o9 N4 h$ W! h5 g5 g9 g& V

  1548. 5 D! `4 [% v4 _! Z& t; C
  1549. Clear_Track_Info
    3 p  G; x. Q7 l- {% v
  1550. PHA' Y# ~3 g! @$ ~" t* U' O% k
  1551. LDX <Music_Item_Cur6 {- ~( I3 [0 J& G: R3 c0 m  a
  1552. LDA Track_Name_Addr_Flag,X8 e" W* M: j& y" L3 |- l9 W
  1553. BEQ Clear_Track_Info_End_Ex+ ^2 {5 c1 G% L( P7 V. ^4 A7 v
  1554. PLA
    ! A0 b% v; F* C4 B9 @  E
  1555. , f4 G" i- n1 }' ~( [
  1556. LDX PPU_Cur
    3 l. s' }1 T3 z: {0 m3 ^/ ]
  1557. PHA6 Z6 `1 O  D0 B3 I# M
  1558. LDA #PPU_MODE_CNT_CLEAR' ^/ W6 G: @) q! q
  1559. STA PPU_Addr,X3 P+ J7 V! L5 v4 x; P1 T
  1560. INX/ m( N0 [9 `3 ]- S' U
  1561. PLA
    " H1 v* x1 [. G' q! u
  1562. JSR Show_Get_Track_Name_Center_Pos
    ( o3 d' S: L. O7 F5 `
  1563. STX PPU_Cur
    7 T& J1 |* C- G
  1564. Clear_Track_Info_End
    $ x, O9 a: G8 b1 A4 T6 J% A+ |
  1565. RTS2 S# _7 k" d; P: _: a/ d
  1566. Clear_Track_Info_End_Ex
    7 [* [3 g7 ?5 S' h7 G$ f
  1567. PLA  ^. e& k. X. @' M& F+ ^
  1568. RTS4 h0 H) n+ c$ v) n
  1569. ) ?4 g& C9 A6 l" ?& n! p
  1570. Write_Track_Info
    / r3 ]! }* g2 [# v
  1571. PHA1 W9 w3 _3 Y8 D! q& _  c4 z
  1572. LDX <Music_Item_Cur) o6 I  z& U2 [. b6 }
  1573. LDA Track_Name_Addr_Flag,X
    5 ^+ p) ?; |- O% o$ i. G0 N
  1574. BEQ Write_Track_Info_End_Ex/ ]; x3 k$ u* k/ q
  1575. PLA# V+ @% ?2 e0 x  ]$ M

  1576. , E2 Q# u9 ^1 @$ ?: K& v  z
  1577. PHA
    9 E' n7 c; a* j7 P/ i
  1578. LDX PPU_Cur
    0 `# }- a) \) d
  1579. LDA #PPU_MODE_CNT_LINE* C0 l. ?& ?8 U& f( T8 R. x
  1580. STA PPU_Addr,X% h# T2 J1 d" d# K' r5 W6 y+ b
  1581. INX! b/ s0 z' k2 q
  1582. PLA  L9 S, M. y) H( v5 G
  1583. JSR Show_Get_Track_Name_Center_Pos. k. ]% m" Q8 p& {% K; Y- f: M
  1584. Write_Track_Info_Data7 ]% N  s/ s5 I0 c$ _& U; G
  1585. INY
    : |3 _: H! @( D4 ~
  1586. LDA [Data_L],Y9 b) v& }4 K0 [% }- j7 L' k
  1587. STA PPU_Addr,X
    % x9 I8 p* ~* `3 p
  1588. INX$ J; `% b$ F9 v% O' x3 P
  1589. DEC <Data_Cnt( g1 [; T0 {6 m  r& i
  1590. BNE Write_Track_Info_Data- ^+ |7 K, ]4 |- s2 O, q
  1591. STX PPU_Cur
    # }5 [2 ?. i* Y1 }. A/ B
  1592. Write_Track_Info_End
    , X7 u6 T2 K/ V" \# Z, d% O
  1593. RTS2 c$ g6 B" B( t3 t- g
  1594. Write_Track_Info_End_Ex
    ! |/ U$ p; _& i! Q7 x
  1595. PLA
    , t' |6 U( J; K7 H( j
  1596. RTS' B2 y; a0 H0 ^2 C3 n/ t

  1597. ( \% R9 Q0 L- n! s, n7 H, k- L
  1598. Show_Track_Info& f1 K. |0 [% F1 c2 H* [, M
  1599. Show_Track_Info_Clear
    9 f5 T! P0 {# ?0 `( X
  1600. LDA <Music_Last- B% I+ K" B6 X% \+ R
  1601. 4 u' g  s  b/ G# o5 @9 {4 ]
  1602. JSR Clear_Track_Info
    # e" U1 P8 c! Y* o+ p- G: [  D3 U, X& M

  1603. 7 J( |* s4 f6 u8 l
  1604. LDX <Music_Item_Cur
    , O  Q& ~4 L8 B9 i9 ?5 D% ^$ p
  1605. LDA <Music_Cur,X
    9 ~# C# F+ t7 d3 @* Z: z" c
  1606. JSR Write_Track_Info
    - W- {2 @8 k* A+ H4 i2 T
  1607. RTS
    ' z) O# s+ V: L' w% i! k
  1608. , {( ]% D. H, j5 m, H2 q
  1609. ;==============================+ D% O. C" ^, T
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置9 i) S; z8 V4 c* K) O

  1611. , t. x# Y; d2 r- L& ^4 `  }
  1612. ;取出集合名索引
    & R0 ~- x; D) V  z0 c
  1613. PHA1 G4 R" O: _/ A# Q) ?( H

  1614. . |9 z$ ^6 z1 e
  1615. LDA <Music_Item_Cur
    # T5 U: B& _& V: b, C
  1616. ASL A
    6 e1 k% |! n. }4 D
  1617. TAY
    & M* v& b; v2 i8 Z0 F- U- F9 J
  1618. LDA Track_Name_Addr_Port,Y  T4 K" H) ^! O, `2 t
  1619. PHA
      ?' t+ C5 b, ~' A4 g$ N# u& X
  1620. INY- J$ L+ ~) w8 x$ v! G- `: c
  1621. LDA Track_Name_Addr_Port,Y: c* B! Q. E9 H
  1622. STA <Data_H8 ]; l# u3 V" p" Z! H/ \3 h( }
  1623. PLA
    * F2 M8 O$ c* @+ n, V) O
  1624. STA <Data_L- _6 z  T& c$ t

  1625.   D; R5 q2 g  ?3 I6 O
  1626. PLA) s% O  T! t8 M: F0 T
  1627. / F1 a7 I9 i3 @/ N8 W, K+ S) _
  1628. ASL A
    , W( R5 R! h1 o* {1 ^0 w$ h
  1629. TAY
    * x) H* A/ F5 ]2 T' @# a
  1630. LDA [Data_L],Y
    # ~! X8 V( b2 d
  1631. PHA
    4 d* W6 b  ]- a; q. g
  1632. INY
    / |7 z: N3 u! K) V
  1633. LDA [Data_L],Y
    1 q- h4 u' _  ]# r) b% K0 t. K
  1634. STA Data_H
    ) q# `4 _' t. v5 }) V
  1635. PLA5 X# S0 n, v4 h
  1636. STA Data_L
    ! p% C2 b, F; R0 M/ f8 j

  1637. * D% v# u7 D( R& T' e1 K" J. I0 s
  1638. LDY #$009 h; F) X& @9 ]/ ~: N( g& O9 q
  1639. LDA [Data_L],Y- Z7 @% K- G' d' O, c. ^5 \
  1640. STA <Data_Cnt0 v( T+ a: n& Q& K/ |# d% m8 y
  1641. LDA #$206 X$ c! v+ ~! }
  1642. SEC
    / E" ?- x, n4 p2 Y! S9 `* E3 `, B
  1643. SBC <Data_Cnt
    1 a4 g, F' j3 J# A8 {! t
  1644. LSR A
    # z4 P* H4 o: l3 z
  1645. STA <Data_Buf- @" P# p! f5 K2 M6 A& v! J$ D
  1646. LDA #HIGH(Track_Name_Pos)
    5 ?& y* J6 \; A8 ~$ b4 d" p/ E
  1647. STA PPU_Addr,X; g$ l& \* _1 {0 b
  1648. INX
    " R& V! ?) P8 ?! s: z8 `6 a2 l
  1649. LDA #LOW(Track_Name_Pos)7 Q- F4 `1 [) y6 L3 D8 S  y
  1650. AND #$E0) Z. n; h  e: O
  1651. CLC5 x0 \1 \7 j1 m/ w! U) Z
  1652. ADC <Data_Buf
    8 `$ C: o9 n3 I9 y+ x/ y  h
  1653. STA PPU_Addr,X3 F( z+ G: r( @! @6 D0 `3 A
  1654. INX$ j( k3 _3 z6 S! q7 [/ ?, g
  1655. LDA <Data_Cnt
      d' o3 n: ~# `2 X) G$ K
  1656. STA PPU_Addr,X* }  h$ h3 o8 ?) a4 {) w: i
  1657. INX
    * p4 K; O2 K- w1 H3 f) Y: M
  1658. Show_Get_Pos_Center_End) {, Y5 R2 V% E& @1 D3 H
  1659. RTS4 V' d. C9 R8 O, B9 J3 C
  1660. .ENDIF
    2 V- j) U: c; P  l. @0 x
  1661. ' A8 }8 y3 s. W2 v
  1662. ;==============================
    ' Q* X" X6 ?% O6 \
  1663. ;音乐端口清除
    0 k" r' U. n+ F1 M. E
  1664. Sound_Data_Clear
    4 s, J+ F7 j3 g5 ?. c& f2 b3 P
  1665. JSR Sound_Port_Clear5 S9 a# ^8 B8 p! W9 i' Z
  1666. JSR Sound_Ram_Clear6 D, O0 E( I0 V6 v+ S( L
  1667. RTS, p! k) ]! N/ U+ N6 C

  1668. 3 X; U+ t; u9 e9 d% m7 s+ V
  1669. ;==============================
    ; X  A2 }2 m* V) w+ f0 I
  1670. ;音乐端口清除
    ( Q) J0 d! k) |4 z! ~
  1671. Sound_Port_Clear
    1 b4 {6 B7 u& _, r. e7 E* c4 F  c
  1672. LDA #$00+ k8 N( [* \/ h% p6 i9 q
  1673. STA APU_STATUS
    ! L, n" B- h8 i' }3 k
  1674. LDX #$00
    5 Z8 B# e* B2 g. m
  1675. Sound_Port_Clear_Write
    ( D; T- r! p% k4 b# s# J
  1676. STA $4000,X, s4 n  P9 F6 I: A7 e8 m0 D4 W& k( o
  1677. INX  q& U; F2 l" B" B' W% I
  1678. CPX #$144 D) T  O* t* e. `% n- Z
  1679. BCC Sound_Port_Clear_Write, Z# R0 M0 x1 b$ B! x
  1680. RTS
      a, ^6 i) w9 Y, y" b% _
  1681. * J3 M! N9 {0 Q1 Y, W
  1682. ;==============================
    2 d2 A* W; y" P! S4 F1 n* w
  1683. Sound_Ram_Clear;RAM清除
    ) w- [# e' J6 R# _% Z. ~0 X
  1684. LDX #$00
    7 q) Q# q! Q" D' M  q9 P& o# I
  1685. LDA #$00) Y' g. o8 I* Q+ ^
  1686. Sound_Ram_Clear_15 i& q5 ]' F8 b$ Z- k+ l& e
  1687. STA Sound_Ram_Addr_1,X7 P/ j. ^4 H8 J: I; P
  1688. INX1 D: S: G; O/ ~! M% _7 `& D6 i3 `
  1689. CPX #Sound_Ram_Addr_1_Size
    ! ~1 e0 r' M) Y2 m' l) U
  1690. BNE Sound_Ram_Clear_1
      s  T* V% P! F/ _7 {
  1691. LDX #$00
    ) e# B$ |# a# z1 A
  1692. Sound_Ram_Clear_2
    $ y. R- @/ ]% a: t
  1693. STA Sound_Ram_Addr_2,X
      _* w/ ?" ?3 @0 O1 N( g8 S8 X' T
  1694. INX  S' [, D* ^: x
  1695. CPX #Sound_Ram_Addr_2_Size; s$ D% E7 G+ G5 x$ S6 L6 j
  1696. BNE Sound_Ram_Clear_2
    ) }* \$ }- V8 W9 W, r: _4 _. b5 V$ v
  1697. LDX #$00
    5 d; b2 q, W* w) }4 I7 K) O
  1698. Sound_Ram_Clear_3* k2 I% U5 w" [* u1 c, j. Z# k
  1699. STA Sound_Ram_Addr_3,X+ I. y$ p. S. b
  1700. INX* x. h/ Z- V: Z9 u/ C1 k' G7 n1 M
  1701. CPX #Sound_Ram_Addr_3_Size
    7 g6 X2 Z; ^5 d' F
  1702. BNE Sound_Ram_Clear_3$ D* D2 c7 {; q, ~: J
  1703. LDX #$00
    3 E" S- m, j3 S$ l8 H; a
  1704. Sound_Ram_Clear_42 r+ [, s5 Q1 _0 {2 d' e
  1705. STA Sound_Ram_Addr_4,X
    % e9 T% A6 F- _; F' _% c+ P
  1706. INX, O4 N8 S$ d' ?& y+ H  d& O7 k
  1707. CPX #Sound_Ram_Addr_4_Size
    " G' W6 e) M" Q$ j. w% C" `
  1708. BNE Sound_Ram_Clear_4
    ! }/ _! k: y# j# I# T
  1709. Sound_Ram_Clear_57 H) L4 |- q: g( }' b# \
  1710. STA Sound_Ram_Addr_5,X' N0 z- M9 {  ?9 F/ ^: V
  1711. INX
    + u5 \4 E% S! o! p
  1712. CPX #Sound_Ram_Addr_5_Size
    9 e( O: I) a9 W4 H/ X: Q
  1713. BNE Sound_Ram_Clear_5+ g* n0 q( S( P6 c) R6 [
  1714. RTS
    ! t, V9 L# C# I( k' V* ^1 t

  1715. , m! E) X; S& @
  1716. Get_Music_Collection_Name
    ) O3 X! H$ g: p9 }5 b( z6 V# f
  1717. PHA* }' _& Y% J- M; ~  H! Q6 E
  1718. LDA <Music_Item_Cur
    * O1 f* Q: X2 `& u; Y9 H8 d! B: @% y
  1719. ASL A
    ( w2 L0 n) K5 G+ B
  1720. TAY  r$ b- o) u! d6 R
  1721. LDA Music_Collection_Name,Y5 o4 N6 C0 X! S5 u8 w
  1722. STA <Data_L
    ; E. P6 ~" Y. g( q) ?
  1723. INY4 T5 _% e: J' B& @3 r, b
  1724. LDA Music_Collection_Name,Y4 B) e. i6 A2 t  r5 I0 V
  1725. STA <Data_H5 m3 M1 b0 m2 E0 N5 I% `
  1726. PLA. }0 {9 D$ ]% h  K. F
  1727. RTS
    2 a  K5 R$ P# o& H; P: p

  1728. / I1 l9 \' B! l7 U+ j- r
  1729. Set_Sound_Total
    - h" s0 f3 \0 a- a9 s: s" [$ y2 ]
  1730. LDY <Music_Item_Cur5 |! D( W; i2 R
  1731. LDA Sound_Total_Port,Y+ f# e2 r4 O. q* Y+ ]6 e
  1732. SEC
    : Z$ d' k% ^' [4 w- _
  1733. SBC #$01
    ; g4 q" ?1 U7 F" z
  1734. STA <Music_Total& f) ?* a! j& @, m: n( u5 L# Y
  1735. RTS
    ' f& W- `2 \: r

  1736. 3 O2 h, k  u! e7 o
  1737. Get_Sound_Start  R: M+ @+ Q' j1 A2 a9 E6 q6 c
  1738. LDY <Music_Item_Cur
    ! W: A: Q. c3 h) J$ a
  1739. LDA Sound_Start_Port,Y
    : \8 h, B4 Y4 U
  1740. RTS' ]: [, m9 Z9 u1 J, r
  1741. 5 V! N$ P) H9 L" Q
  1742. Set_Sound_Init_Port( R# P3 c* v; s/ ?/ H6 S
  1743. PHA$ X' e9 A9 U; \
  1744. LDA #$202 d$ k  Q' ~" b( ?3 [. `1 N5 _& K
  1745. STA <JSR_Addr_Op
    4 B, e+ N+ T+ G: c, Z) d3 X
  1746. LDA <Music_Item_Cur
    / @+ |. c& ~  k& U& W( i0 K/ w
  1747. ASL A
    7 M" ]+ E2 |8 c
  1748. TAY& Q3 v- \. x6 k: U9 q! z  w# o; Q
  1749. LDA Sound_Init_Port,Y
    6 i( I% J, a1 ~2 A6 f- P  v
  1750. STA <JSR_Addr_L/ [) U' I0 p0 Z2 i9 z
  1751. INY3 C& C% m4 q/ T) s& G1 w6 J
  1752. LDA Sound_Init_Port,Y
    , ^$ {6 N. p5 m6 M3 X
  1753. STA <JSR_Addr_H' g: a- q) N6 K
  1754. LDA #$60
    : P' K% i; ]7 O3 Z/ {/ H
  1755. STA <JSR_Addr_Rts, Z# h/ b& I" i0 k; s2 u
  1756. PLA) n* N6 o3 D' p1 |) n1 X5 U
  1757. RTS, g" L5 u$ e- J. \. d" p
  1758. 8 T) D- W: `( i5 o: {% s
  1759. Set_Sound_Play_Port
    2 G) {' J6 _* S
  1760. PHA7 V0 Y0 P3 f- g3 ^1 ?4 V' H
  1761. LDA #$203 f7 [. E! o! @$ i! Z! Y1 X& J
  1762. STA <JSR_Addr_Op6 e2 r. t# d- b" L
  1763. LDA <Music_Item_Cur
    $ `: r: K' M& D- n- q! t
  1764. ASL A
    / B- t2 k' n. X  j8 b
  1765. TAY; C- m. U' P8 r/ j0 q. ?+ p
  1766. LDA Sound_Play_Port,Y! c; ?) Q, w" B. o
  1767. STA <JSR_Addr_L; L/ i) P% @' ]& y9 i; V3 i. _
  1768. INY
    " M9 _, k* R' F) A4 s
  1769. LDA Sound_Play_Port,Y1 `2 |$ k7 I& K& A" u
  1770. STA <JSR_Addr_H
    ! W* {/ f% t# C( e( v9 W
  1771. LDA #$60
    ) J3 J3 b/ j( e& _. t  m
  1772. STA <JSR_Addr_Rts- E3 E3 T8 w. u" e- a5 W& i
  1773. PLA
    , Q9 R! l! \* ]# J! c/ b/ Q
  1774. RTS5 |: I( t: P" W6 |: Y6 E) E

  1775. % u- c# I9 n( |- t: K* ^
  1776. Set_Sound_Reset_Port
      m8 ]+ d+ K* @
  1777. PHA/ r- q/ U: G/ z/ [) Z* i. b
  1778. LDA #$20
    ' z% J) D/ ~7 ^
  1779. STA <JSR_Addr_Op
    6 [8 z9 F7 }0 @4 }, c
  1780. LDA <Music_Item_Cur2 D7 F+ f" W1 {' ]9 z# v5 L
  1781. ASL A4 o% q# E  K9 ^) x9 n) O2 g
  1782. TAY
    4 j2 i: ]' l+ x* r
  1783. LDA Sound_Reset_Port,Y
    - F3 p3 G+ b8 |2 `7 J, a$ D1 S
  1784. STA <JSR_Addr_L1 A5 y" i9 O; [1 P5 s
  1785. INY7 s& ?3 P. U; _* E
  1786. LDA Sound_Reset_Port,Y
    , z& |5 X1 H0 v: x. I1 k  O
  1787. STA <JSR_Addr_H; ^+ N% B3 ?9 V1 b* S0 ^5 L+ Y
  1788. LDA #$60
    + ~- \# @- w; d% v9 X! v
  1789. STA <JSR_Addr_Rts' t/ j, f) {) y* b; A
  1790. PLA3 H2 t& a& x6 y' x) C
  1791. RTS2 z5 q1 Q& c; y! B4 w1 [

  1792. 1 P& _6 E: D) b! t! D
  1793. ;初始化音乐bank
    , `. @- O6 m; P9 U
  1794. Init_Sound_Bank
    8 Q1 w( L. F- U5 [
  1795. LDY <Music_Item_Cur
    & {1 j( l" \5 b* B* X; h( ?) a
  1796. LDA Sound_Bank_8000,Y
    . r6 R% _" ]& t6 g0 @$ `) ~
  1797. STA <Music_Bank_8000
    2 L( D/ w% K6 y
  1798. LDY <Music_Item_Cur/ W& X! N- @: t6 S+ C: x! [3 ~0 b7 v0 \
  1799. LDA Sound_Bank_A000,Y, f7 k& |2 r9 N, J, a; y2 z
  1800. STA <Music_Bank_A000
    6 Q& `# Q1 k7 Z# f% w
  1801. RTS
    , f( q! U% f) |4 s4 X

  1802. : d4 |  b* w0 C% V
  1803. ;==================================================
    " Z, X1 h. n6 u
  1804. Sound_State_Reset;音乐状态重置. r$ Y3 f8 ?( w* z: x+ G8 l2 D
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    $ T+ I: C! r, W- t
  1806. JSR Time_ReSet             ;重置播放时间
    ; ~2 R: K- w( v$ {. ~9 x! w6 B" C
  1807.   ]% A( Y3 f; Q# s( }
  1808. LDA #$00
    - z  A9 Y6 Q' I  X' [, I
  1809. STA <Music_Stop_State1 z5 N: Z7 u, f* \
  1810. JSR Music_State_Show       ;显示播放状态
    / X/ T8 |; [. G. z

  1811. 8 Y; K; k6 ~3 G- p5 s2 u; ^! W
  1812. .IF Track_Name_Pos% u7 G- v% K! a, T) c" Q! X4 v. _
  1813. JSR Show_Track_Info        ;音乐曲目名显示6 @" P- h/ K5 P9 I' N
  1814. .ENDIF- Q0 E! ]6 ~7 H% K0 Y

  1815. # [2 O4 _% Z' [3 c) U
  1816. RTS0 y( U) x4 [; l; L

  1817. 6 ^, T. J4 L. U2 u$ s# ?
  1818. ;==================================================% x9 y' W! ~: T+ J# d
  1819. Sound_Init_Proc;音乐初始化处理
    5 T1 W7 d( [- `- D" w8 x
  1820. PHA2 m9 ~) Z4 T5 W# D8 Z+ P
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址8 e6 P- N" J, N: @# v
  1822. LDA #$00
    ' g0 c. h+ ^  W+ B, o7 Q0 n% K
  1823. STA <Scroll_H               ;重设水平滚动
    ' \) r9 }  L9 K/ X/ q/ t
  1824. LDA #$0F
    + v* H: [3 A: y: ]9 k
  1825. STA APU_STATUS, U6 e3 ]) ?. l. k, n- Q4 ]. M: N
  1826. PLA% E; a- m( }  @' O6 X' Y/ t4 n
  1827. JSR Sound_Init             ;音乐初始化
    4 j( J9 X5 S4 Y/ N$ G
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    ( E) h2 e: h) q2 x. g4 `
  1829. RTS
    4 W2 J9 W4 K. s# ?, \
  1830. 7 a+ \6 l& M2 f' b$ k1 g1 y
  1831. ;==================================================
      O: E4 q# R3 @9 f, T2 q: J
  1832. Sound_Play_Proc;音乐播放处理9 @3 R1 Y; l* D; \% L( k
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址; h  X) i+ |1 O( j- I
  1834. JSR Sound_Play             ;音乐播放
    3 W7 j+ X7 C9 r+ T
  1835. RTS* X+ Q4 N9 U% k6 Y% s
  1836. ) F+ ?- e# T% y1 x5 z
  1837. ;==================================================
    7 z% h+ Z6 O6 a9 L) r0 P
  1838. Sound_Reset_Proc;音乐重置处理) H/ P; H# _/ U# v9 T( f
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    9 D; m/ w( g8 O, ^1 i
  1840. LDA <JSR_Addr_L; _/ U  v/ D* k6 B5 i
  1841. ORA <JSR_Addr_H
    ! T  l5 s) u: a% z, d, f* u5 Q
  1842. BEQ Sound_Reset_Proc_Default' v2 C, \) z% O4 ~5 t. T
  1843. JSR Sound_Reset            ;执行音乐重置- L, r0 T: y# ]: l! Z, p6 y% E
  1844. JMP Sound_Reset_Proc_Init_Sound. H5 y) A; s  j- [6 X

  1845. 8 s& Y8 I: O3 @6 c5 T
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理# }/ l5 Q# @2 C
  1847. 2 v% k4 ~9 k0 m+ \
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断* |9 ]" c2 T; u0 n) U, g
  1849. LDA #$00
    ' a5 _/ S0 Q/ a) V0 E4 O
  1850. STA PPU_CTRL
    5 L& ^$ f; g& ~) F9 q9 j* J5 V

  1851. 3 V! l* V+ k- h; V* |* v: W! Q
  1852. JSR Sound_Data_Clear
    8 t( k$ C( r* {5 f: v& C# d

  1853.   K8 t) q' |6 H* n2 c
  1854. Sound_Reset_Proc_Default_Wait8 X; Z9 h6 n( X. S* `
  1855. LDA PPU_STATUS
    # |3 m  w: B+ g' m2 n* a
  1856. BPL Sound_Reset_Proc_Default_Wait" i8 B3 n/ j4 {2 K% T1 A# r6 Z. |
  1857. ! n7 g! V5 Q  u, M4 n% a4 z7 I
  1858. LDA #$00$ R% M2 R8 k3 [
  1859. STA PPU_ADDRESS: z  W" F3 I/ W! v# M9 M) u
  1860. STA PPU_ADDRESS
    9 ], W# B3 \( W8 }( X2 W( Q( _
  1861. STA PPU_SCROLL
    ) T4 [7 F& v7 @6 T( Q  A
  1862. STA PPU_SCROLL# l% M# C  z- D" X8 l) w+ |" X2 P

  1863. , U- Y* ~9 V" q
  1864. ;恢复PPU控制4 |. f9 H, n1 D; j
  1865. LDA Screen_Ctrl
    , i7 g$ M, S8 ]7 l6 o; K/ ?* j: d
  1866. STA PPU_CTRL, o9 ^1 w8 f) p
  1867. ( P: R1 D4 M: J; }
  1868. Sound_Reset_Proc_Init_Sound' E1 R2 z) K, j$ F( `
  1869. LDA <Music_Stop_State
    9 b1 Y2 m3 @8 t: G* f! D3 V
  1870. BNE Sound_Reset_Proc_End
    ) X- n. @6 e0 @+ x" l* X4 G
  1871. LDX <Music_Item_Cur
    / K+ X! e0 {% _7 g* P7 l
  1872. LDA <Music_Cur,X" {; \3 s$ z; T9 @$ l
  1873. JSR Sound_Init_Proc( n& B& V+ ?6 [+ r* Z9 R( o3 k
  1874. Sound_Reset_Proc_End
    : G2 V& [; v# v9 z, X! ]6 |
  1875. RTS
    9 V) k# `* y+ l# n* r3 d, j
  1876. ; |! p. H/ u5 Q' F
  1877. ;==================================================9 u$ u+ v0 L/ L, ]& @
  1878. Clear_Item_Text;清除页项目+ v* S/ [/ L% e6 p; V
  1879. LDX PPU_Cur6 _9 ?6 K) [9 T2 H
  1880. LDA #PPU_MODE_CNT_CLEAR) q! F+ u- Y' a, W$ e" v: l
  1881. STA PPU_Addr,X
    ! }* m' B' e. l8 F& f1 {0 k
  1882. INX
    4 D' R* r. ]3 @% S- t

  1883. / {0 k' I9 ^* |1 S
  1884. LDA <Page_Last( b% o6 u+ d. p% R* y, U* n
  1885. SEC) g5 u! G: _: s6 {
  1886. SBC <Page_Last_Index
    3 E) y( w5 J& [. c4 P- ]8 v
  1887. ASL A0 |6 l! g$ _# I

  1888. , ~& T" i4 c' B0 \6 M
  1889. TAY4 I9 X- t( m& c% [% l
  1890. LDA Item_Pos_Data,Y
    ) J5 d9 P* W/ ~5 Y! W; |7 `5 `) e
  1891. PHA
    & C4 Y4 E- u6 s" L) c+ l* @
  1892. INY
    . E- A/ ]: ]; u, y5 Y
  1893. LDA Item_Pos_Data,Y
      p2 N6 W. w7 c6 ^+ U
  1894. STA PPU_Addr,X
    + o% A- O3 ^3 R8 `
  1895. INX
    ) H3 H7 p% P/ e/ Q
  1896. PLA
    9 D$ j: }* V' l) [6 W; k% I
  1897. STA PPU_Addr,X
    + l. r" Q+ h& _9 N! ?5 @
  1898. INX; e+ w# z9 F1 C! i/ ~. ]# x- I" Y

  1899. , b3 R# {5 d+ ^! S4 p5 _; W
  1900. LDA <Page_Last
      x1 R% C  U) d5 @( ^
  1901. ASL A8 @7 G8 Q# ?  H
  1902. TAY
    / n- ?& R2 k. U, m
  1903. LDA Music_Collection_Name,Y
    : F9 X. `6 p* W1 t6 F
  1904. STA <Data_L
    7 _2 f4 x! b  h
  1905. INY8 l% V: B8 Q, Y" D' X$ {
  1906. LDA Music_Collection_Name,Y, g8 J5 r/ K3 N: u0 \( s% g* [
  1907. STA <Data_H; U4 }+ i/ y- C* F7 c

  1908. # p# b) @' P" W% [1 j8 e9 \
  1909. LDY #$00
    # Q2 s1 J$ ]& u( `- k! |# P- x
  1910. LDA [Data_L],Y
    3 n! h! Q: U& w+ G+ e6 ~
  1911. STA PPU_Addr,X
    2 j, m. `5 m0 C% }& N" S- K
  1912. INX% w6 C6 u2 ^) u4 Y/ p
  1913. Clear_Item_Text_End
    - N% ~3 L) N8 Q  E& J  K/ `( [' }
  1914. STX PPU_Cur
    2 R( I; d" P% ]" c' \
  1915. RTS
    8 e+ l+ x' N' P: S
  1916. 3 v/ e7 G" T) l% d: B: b& [
  1917. ;==================================================
    $ L4 B* W/ B( U6 O+ M; l3 |/ s
  1918. Show_Item_Text;显示页项目- h& U- W+ l% T* M7 h
  1919. LDX PPU_Cur7 u; E; ?/ s8 ?1 Z5 w, W
  1920. LDA #PPU_MODE_CNT_LINE
    / V' O/ T9 V' u* S7 \
  1921. STA PPU_Addr,X
    3 p( `$ ~/ H! N1 |# ?
  1922. INX
    , _3 `& v! e' N9 P. _' q3 q8 }
  1923. LDA Page_Cur
    ' j. B) n1 _& z* U9 H
  1924. SEC
    . |  `3 W; [6 Q) |1 i
  1925. SBC <Page_Cur_Index7 u: [# K* i& I! W( ~, R7 [
  1926. ASL A1 F6 \8 g1 @* A" Z% s8 I( p) z
  1927. TAY2 U! P0 y: m, S* W/ g. e! \, i
  1928. LDA Item_Pos_Data,Y
      J6 M0 `; e! w
  1929. PHA
    . O6 F" ~. L1 m. \8 o
  1930. INY
    : D+ }# X4 g- u$ m5 o
  1931. LDA Item_Pos_Data,Y
    " x. i: p' t4 a7 ~# m6 `5 p
  1932. STA PPU_Addr,X
    # E. A5 ~: D+ q5 R- L
  1933. INX4 ^! m3 J/ L2 o8 W  F8 v
  1934. PLA
    5 K, d: V5 _/ X  t; U+ D. V3 e
  1935. STA PPU_Addr,X( g0 W& m3 P+ L* |. G0 L
  1936. INX% g2 h% ?4 n% ]* R

  1937. , M) R; u" Y& f4 q9 r( n
  1938. LDA Page_Cur. u& \: p  G, n/ Q
  1939. ASL A: V+ u- O8 \' _' E* L
  1940. TAY, R( H" M4 z4 u, j* d3 i
  1941. LDA Music_Collection_Name,Y- H$ |2 ?& S- {- A$ C$ R2 I
  1942. STA <Data_L2 _9 I5 `8 i7 J: m' A* X( B; Y
  1943. INY
    4 W5 U, R1 T: W  e: Q
  1944. LDA Music_Collection_Name,Y
    " i' x0 H# o7 o( T5 ~4 z
  1945. STA <Data_H; @  }4 r8 \- {  @4 u
  1946. * ?7 n, ^" ~* L+ e
  1947. LDY #$00
    4 ]$ L5 Y5 y# d$ D  c" G; J* ?. |( _
  1948. LDA [Data_L],Y
    3 q/ f0 d2 C# v( I- E# s) g
  1949. STA PPU_Addr,X
    / E1 q( X; l6 j# r, [' j
  1950. STA Data_Cnt
    9 ~& n5 R4 `3 c2 F; Z
  1951. INX
    ; w; D# |; r6 I! K8 A9 e' g

  1952. 3 _' w: d. P* y4 O" u& f7 @
  1953. INY4 w6 a( N9 O7 L) B. N
  1954. Show_Item_Text_Write' b$ W" G8 T- B4 W  f2 _. ]
  1955. LDA [Data_L],Y" H) u3 E. X) m8 R. Z. A
  1956. STA PPU_Addr,X
      j3 b% G0 x; i; K: U; `( [
  1957. INY( f) e; e. S0 h; A4 v
  1958. INX$ K& s. r* n+ m. l! W
  1959. DEC Data_Cnt
    ( R4 z+ J& i0 [$ m1 Z/ H
  1960. BNE Show_Item_Text_Write
    7 L, p8 _" q# X6 z  q$ a& [
  1961. 2 W! B9 Y, M9 _, X5 P9 @
  1962. Show_Item_Text_End# a4 X  b3 U% m" q0 C
  1963. STX PPU_Cur
    % d) [5 N6 S% C0 C  I/ u
  1964. RTS0 _+ n6 k2 j/ I$ J' ]

  1965. " I1 l4 F: _6 z3 L& Q
  1966. ;==================================================
    % ~1 P, t& H" C
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量* X- y4 }! |. _% ~/ J' k0 N# ^/ Y: z
  1968. STA <Data_Buf
    & C0 U9 d! E$ x5 W
  1969. LDA #$00, B" E/ l2 Y  l3 V
  1970. Get_Page_Index_Calc/ }% Y4 M& C4 j* W5 Y: s; }
  1971. CLC
    . r. W0 `, A/ q0 O7 l2 k
  1972. ADC #PAGE_SIZE
    ) i2 q) f. N8 L# }
  1973. CMP <Data_Buf# C+ l+ a5 }2 a1 N1 i% B
  1974. BCC Get_Page_Index_Calc9 O9 H4 S% B: k. p6 @4 M& D
  1975. BEQ Get_Page_Index_Calc_End) i2 O$ x+ c. r  ~
  1976. SEC
    ( E5 J' ?! b) e! ^( T" H
  1977. SBC #PAGE_SIZE
    . ?- A9 E& G. T: `. U
  1978. Get_Page_Index_Calc_End
    ) N: m# D+ m7 u
  1979. STA <Data_Buf6 Y* c" c( I! \6 N
  1980. Get_Page_Index_Cnt
    6 ?8 |1 @6 m' x. S! N, ~
  1981. LDA #PAGE_SIZE. `/ i  k; d+ Z
  1982. STA Data_Cnt
    7 @( l- a/ G1 I
  1983. 3 c" A7 p1 C% r" S+ _9 {
  1984. LDA <Data_Buf, q, H) O$ f8 ]$ i0 F: Z$ P0 C- S" Y
  1985. CLC
    6 X' m: m, N# b
  1986. ADC #PAGE_SIZE0 h' B3 I- Y3 j( r% g
  1987. CMP #ITEM_MAX_SIZE
    ) v4 {" f8 a7 T% S8 H# C
  1988. BCC Get_Page_Index_Cnt_End' G; g: `& P) X# m6 K* K9 [* R

  1989. : j5 O% z6 ]2 z) f3 Z7 ]/ g
  1990. LDA #ITEM_MAX_SIZE
    3 r+ L) R& o- r) k) o( @
  1991. SEC
    6 V; F1 b8 y# n2 H/ b
  1992. SBC <Data_Buf
    1 z; C6 G  Q6 H, h# w' h
  1993. STA <Data_Cnt
    , U: K$ I% d# G! r
  1994. 0 ^8 ~: w- Y  ^$ W" B% N" c
  1995. Get_Page_Index_Cnt_End
    ; f$ B# t2 E: V% c/ z
  1996. RTS) G+ v+ ^0 _# V* g# O- n* ?8 B

  1997. ) [0 \' T- \& u: @" _5 ^% |6 z$ L
  1998. ;==================================================  S0 s- ]  K& M3 f$ r0 Q
  1999. Get_Last_Page_Start_Index! y  \/ A5 d* P( q; r! M9 z
  2000. LDA <Music_Item_Last
    3 R! f+ c9 `- V% I
  2001. JSR Get_Page_Start_Index
    / J- A- I9 z0 f5 C" _
  2002. LDA Data_Buf5 m7 Z. e2 Y+ h8 C7 x7 h; y
  2003. STA Page_Last
    4 P, S8 y& F& T" u0 e0 K3 d. D9 _
  2004. STA Page_Last_Index1 i7 C( m$ \( _
  2005. LDA Data_Cnt! W# H( I$ |' h' K/ S* ]
  2006. STA Page_Last_Cnt
    6 C% D* p( S' e8 Q: \
  2007. RTS' S! o; L+ o4 ?. E2 B0 {7 q+ C2 T

  2008. & h! l# S- S% L6 n# W9 V  S( k
  2009. ;==================================================7 @! q: s5 B: x& g9 Z, Q
  2010. Get_Cur_Page_Start_Index
    , K' v2 N' i% _* J+ v
  2011. LDA <Music_Item_Cur
    . M  C0 B$ b3 w6 h+ b2 }' B/ N! }# y3 z
  2012. JSR Get_Page_Start_Index" x' E2 m7 \0 X# w) @" R0 B) S
  2013. LDA Data_Buf
    / o5 D- i* G) y/ m' _( E
  2014. STA Page_Cur
    - G3 [3 |  G$ \
  2015. STA Page_Cur_Index
      U: ^& A& i6 {" r6 ^/ n4 x
  2016. LDA Data_Cnt
    3 o- s5 l) ~6 ~+ a5 @' i5 v
  2017. STA Page_Cur_Cnt
    ' d. Y" V3 Q! [
  2018. RTS! b' S' L8 [" g) N8 Z0 t

  2019. . I7 ^, z% `1 J2 q! M2 {. m6 L2 a
  2020. ;==================================================
    ! L7 D; f: R# q  p3 ~5 G
  2021. Show_Page_Text;显示页文本  `2 T5 c# C" R$ g
  2022. LDA <Text_Disable_Flag
    3 e, @" B' _- L/ W; @
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM9 y; P6 i2 l0 i! s* R
  2024. STA <Text_Disable_Flag4 u6 {! G$ h$ a5 Z" A4 Y

  2025. * N5 D2 E3 Q8 K  X# x0 m0 `
  2026. JSR Get_Last_Page_Start_Index
    ( X2 u, J6 j+ v
  2027. JSR Get_Cur_Page_Start_Index  Z  d) p' Q$ ?; E) t: q

  2028. 2 }* w3 d6 R0 j  g3 ~
  2029. Show_Page_Text_Set+ D6 P" T1 ^* K' r, j8 j. U. E6 g

  2030. 5 v- E) _, u2 z
  2031. Clear_Page_Last_Item;清理上一页: P+ A5 e& O  E& |& J% v  W
  2032. LDA Page_Last_Cnt
    ! m% T+ w- `  o- _  V0 @
  2033. BEQ Clear_Page_Last_Item_End$ U6 E  m  r" e; Z" n5 t% X
  2034. JSR Clear_Item_Text
    & ^( O- o4 A5 g2 N
  2035. INC Page_Last4 n/ S( B7 Y6 Z
  2036. DEC Page_Last_Cnt
    : K4 Q9 H" T# u$ j# U5 E2 b* g
  2037. Clear_Page_Last_Item_End
      b& C. e( n& q. P+ i
  2038. / }. y* `3 g1 m3 Y5 U+ [
  2039. Show_Page_Cur_Item;显示当前页/ `4 ?/ u6 R% V4 M
  2040. LDA Page_Cur_Cnt
    ! q$ ~3 G  \; C9 F2 t  i
  2041. BEQ Show_Page_Cur_Item_End; @! \1 ]4 j' m: T1 g/ T* [+ P& O
  2042. JSR Show_Item_Text9 B  J8 j3 |" s/ z" M6 J7 c/ n# l
  2043. INC Page_Cur
    8 O1 i- H) M3 X
  2044. DEC Page_Cur_Cnt( q% A' d4 z0 P' {3 D  l
  2045. Show_Page_Cur_Item_End
    3 g* u3 N3 I( m& e, i
  2046. 7 j: a/ K8 [" R1 s7 V! R5 _: Y9 a
  2047. INC <Time_Wait_Cnt
    " h# q0 ]) {/ D# k0 {' P- W7 [2 u0 ^
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作+ P/ S# p, H! }6 w
  2049. LDA <Time_Wait_Cnt
    % a6 _, ]( {, v2 ~1 T9 K) a
  2050. BNE Show_Page_Text_Set_Wait% l3 [/ i& h0 r$ @% _, k( f4 C

  2051. : l1 T4 k$ z) i( g1 T
  2052. LDA Page_Last_Cnt1 G# k7 [7 {* F9 {/ Z. o9 C
  2053. ORA Page_Cur_Cnt9 W* f2 [1 r7 Z7 K4 W
  2054. BNE Show_Page_Text_Set2 Z- G$ f2 n8 p; d5 e
  2055. LDA <Text_Disable_Flag5 I, }4 ~$ ~; G; A; o+ J
  2056. AND #TEXT_DISABLE_ITEM ^ $FF0 g5 o" h# d4 ]' o
  2057. STA <Text_Disable_Flag+ _5 F: c1 e: g/ ~
  2058. RTS% _4 T4 o8 `# \( L

  2059. : v! `( F/ a" O4 C
  2060. ;==================================================3 j, f5 D% B& J& Y2 Q0 o2 |
  2061. Last_Item;上一项
    8 t  t, t6 ^/ Z. F. R
  2062. JSR Clear_Last_Track_Name" B: q2 V& p) _9 c6 ?$ F  d
  2063. JSR Disable_Text_Draw
    8 v6 @5 u1 V: a1 V% S- d

  2064. ' G: {, L- v$ s9 E/ L& o
  2065. LDA <Music_Item_Cur
    $ B" U! z8 _0 f! \
  2066. STA <Music_Item_Last
    9 S( p8 ?% P$ K8 C1 h

  2067. * p+ N3 s, B. K5 J
  2068. JSR Get_Last_Page_Start_Index
    " d. |' C) v) G* n
  2069. # o& Y8 C) M" ~; f! Y  R
  2070. LDA #$00
    / D, Z* F! [9 F! O9 a
  2071. STA Data_Buf0 @" h$ `3 N. [9 w7 y- @
  2072. $ R9 k/ f" Y1 {3 c( _; ~
  2073. LDA <Page_Last7 O6 N+ V" l: P' U, H
  2074. CMP <Music_Item_Cur
    " \+ d- D& \& A8 C! _/ q- Q
  2075. BNE Last_Item_Begin" s) }) P3 P. \- @2 K

  2076. ) b& s- O3 r6 }7 X# y
  2077. LDA #$01
    ' M$ ]; i+ l4 I# `; A
  2078. STA Data_Buf$ p& S  I5 j% N2 o/ B5 V
  2079. Last_Item_Begin5 N* f4 R1 i  ^# P9 n" K# O
  2080. LDA <Music_Item_Cur6 O% M3 h: t8 [! l/ E; k0 U! c! q
  2081. BNE Last_Item_Set
    ' V8 I5 X) e2 A
  2082. LDA #ITEM_MAX_INDEX + 1/ I% p/ _; h/ o) r
  2083. STA <Music_Item_Cur
    ; w. J0 X4 Y9 e2 G* P

  2084. 0 \2 a. X3 \. _* p1 _6 O
  2085. Last_Item_Set/ _' P) h% \9 t0 J* B$ a9 `6 V
  2086. DEC <Music_Item_Cur, Y. I3 Y, ?% H6 N/ U+ `6 L
  2087. LDA <Music_Item_Cur
    1 _2 c" W) k( `, r4 n
  2088. JSR Reset_Current_Music
    ! H5 J1 \  P5 r9 Y

  2089. 5 _1 M- R3 a+ g3 E3 p8 T! _& A
  2090. Last_Item_Play. h- E8 w' J1 \3 a
  2091. LDA Data_Buf
    9 ^) U) ^% W! ~  x$ i, I
  2092. BEQ Last_Item_End5 \! Q# d$ P, Z7 {5 Q& V+ S
  2093. JSR Show_Page_Text3 A) r3 R( N# m
  2094. Last_Item_End
    4 x  |! n% R* o* [; U$ I0 {
  2095. RTS
    / K3 K2 E. @! P4 @2 A2 R
  2096. : Q5 i, Y6 R$ m* d: F
  2097. ;==================================================
    ' P8 h3 s9 U+ y
  2098. Next_Item;下一项
    8 ?, c2 o# r3 w8 g- h! ^3 ?) _
  2099. JSR Clear_Last_Track_Name
    % Q# }: f5 Q% B& D) y9 P6 d
  2100. JSR Disable_Text_Draw
    ' Y; }) r. J% J2 ]9 y/ [/ s
  2101. 1 A% ?7 m6 g+ N, j1 q0 v
  2102. LDA <Music_Item_Cur0 G9 H% T7 f7 U' u% R) i" e3 L! q
  2103. STA <Music_Item_Last
    1 t3 T' D5 ?  _# z
  2104. 4 w  F0 O: O0 B
  2105. JSR Get_Last_Page_Start_Index1 ?# R. k. K) h" ]* P
  2106. $ C1 L" ~) D* Y8 K" v
  2107. LDA #$00# m: \) X6 k* S) M# E
  2108. STA Data_Buf8 ^2 M1 t, M1 t' w6 e

  2109. ' V  U5 E  o$ e4 M" x0 X
  2110. LDA <Page_Last
    7 O  l% n6 E  P1 H4 |' z
  2111. CLC/ U' D) W; {( \; B* x3 w; i
  2112. ADC <Page_Last_Cnt8 X9 C8 V1 Q# Z' m% Q
  2113. SEC7 P3 I$ Q' Z1 I# O/ E+ e8 T7 c
  2114. SBC #$01" F6 \; v3 V( n
  2115. CMP <Music_Item_Cur
    . @4 D  P' S$ V
  2116. BNE Next_Item_Begin
    : X4 j# s3 V2 J# r; }, u2 Q

  2117. 5 _1 b! g( V$ o4 A2 ?) I
  2118. LDA #$01
    ; N& r  r$ d5 p( t) w+ ~
  2119. STA Data_Buf; J! B2 k% b& \
  2120. Next_Item_Begin/ g4 M3 b3 w- h; ~! L
  2121. LDA <Music_Item_Cur2 O5 ]& z* Y) p' ], P4 G' h
  2122. CMP #ITEM_MAX_INDEX
    & D* @. B1 [' T
  2123. BCC Next_Item_Set
    4 R- k7 S" @3 Z7 t6 D1 n
  2124. LDA #$FF
    7 X- T1 j7 L( W% P" M" Q0 k8 ^* d
  2125. STA <Music_Item_Cur. R! |, U& j& G6 b& p/ N" C
  2126. Next_Item_Set
    ; b# M2 R, N3 D9 l$ |6 O* P
  2127. INC <Music_Item_Cur- m/ C- w/ n  \% h; }
  2128. LDA <Music_Item_Cur
    . Z  m) s3 @/ K8 x- r
  2129. LDA <Music_Item_Cur
    2 K8 i; P: D$ x2 u  C
  2130. JSR Reset_Current_Music
    $ V  C) w1 ~  s5 \; E
  2131. Next_Item_Play
    0 X0 |* K! `" e+ G, r
  2132. LDA Data_Buf
    + H) W- n' d' v8 K" W2 A
  2133. BEQ Next_Item_End* H; m3 @) ~- _9 a
  2134. JSR Show_Page_Text9 L; l5 X* V1 H: w8 S# Z" D
  2135. Next_Item_End
    3 Y5 E& R( N) k! T* s) D
  2136. RTS2 K$ `/ l6 M1 t3 n% b( A
  2137. 0 u6 J4 h/ p. i" @  t- j# `
  2138. ;==================================================
    ( t2 y2 G7 x0 h  _7 u5 E8 o# I
  2139. Last_Page;上一页
    ) [; J9 B4 [, {9 ]
  2140. RTS
    9 }: `3 [, Y' p8 k! O
  2141. $ s) E6 V: V/ T9 f
  2142. ;==================================================8 H  V+ k' S6 u0 v4 L5 m7 ^
  2143. Next_Page;下一页
    . ]3 H# @' A$ r  @/ Z7 \
  2144. LDA #PAGE_MAX_INDEX9 q4 Y( N* m5 \3 W  j# I9 X' J9 e
  2145. CMP #$01. g$ I( G8 o8 f; u& _  l$ F
  2146. BEQ Next_Page_End
    ! d' d/ z# x6 G7 V
  2147. , ^9 `  U0 p5 t8 |
  2148. LDA <Music_Item_Cur) F( S5 F* {& G6 B) C) J
  2149. STA <Music_Item_Last# F' s) E3 X0 l& M

  2150. ( ]: m7 i7 t* [! n( P) J& F
  2151. JSR Get_Last_Page_Start_Index7 h" Q# q" k  U8 X
  2152. ; Q) c& D9 S8 f, F0 u2 B
  2153. LDA <Page_Last_Index
    $ k- u; _1 }; w/ A7 ^8 N% d: B
  2154. CMP #PAGE_MAX_INDEX; f& o1 j7 a" u/ Y: u2 _( n& M3 n* }) P
  2155. BCS Next_Page_In_End_Page9 t9 e+ p$ V: J, Q  V: A
  2156. - f' I" Q+ R& J/ J9 l+ A7 ]; H( M
  2157. Next_Page_Not_End_Page;不是在最后一页
    ' V( z! J$ W" d3 e
  2158. LDA <Music_Item_Cur
    0 _8 ?, a6 C8 k. W/ S/ C
  2159. CLC3 ~1 T  l5 C4 A
  2160. ADC #PAGE_SIZE
    * c) y* _9 i6 X6 I1 ]; {' W
  2161. CMP #ITEM_MAX_SIZE. I: L( P5 _' q& M
  2162. BCC Next_Page_Not_End_Page_Less# p) M. }& L4 u# h7 r* l2 {- ~# B+ b
  2163. LDA <Music_Item_Cur2 f9 g5 P3 H; f; l: W( H
  2164. SEC/ |: o( y3 I: h9 E, J6 z) R
  2165. SBC <Page_Last_Index
    / b. r5 a* _9 r2 ]  T; ^, e
  2166. CLC) R+ ~4 _+ m& ?% S4 y/ `
  2167. ADC #PAGE_MAX_INDEX
    : @4 X6 D7 x' m4 G% Q  Y
  2168. CMP #ITEM_MAX_SIZE# u0 L5 z4 ~6 A& r  d( C+ ?& Q
  2169. BCC Next_Page_Not_End_Page_Less& b* ?/ p4 u! h8 a- ]
  2170. LDA #ITEM_MAX_INDEX) a8 L9 |! O, M1 q2 v- |" y. P
  2171. Next_Page_Not_End_Page_Less
    * F& I5 m! e9 ?1 j4 ?
  2172. STA <Music_Item_Cur8 A* V% d9 ]$ p  A5 o
  2173. JMP Next_Page_Reset  b+ \/ T/ q; Z1 \
  2174. ; i0 O4 ~: [. @* }- j. ]' e
  2175. Next_Page_In_End_Page;在最后一页% g: F6 M2 K* Y
  2176. LDA <Music_Item_Cur/ t5 Z: T* P7 x
  2177. SEC
    3 ^5 e0 m2 N/ Y5 p. g0 a( a4 Z
  2178. SBC <Page_Last_Index( m) s9 X8 }% l$ l* v; M/ @8 y
  2179. STA <Music_Item_Cur7 _1 q" e6 k6 c  g" j# {, P2 c

  2180. ; S% X$ M  d- @  w7 k' e
  2181. Next_Page_Reset
    4 }( k. `. b9 A/ L
  2182. LDA <Music_Item_Cur0 x0 q+ ^' {& ^' z4 ~% e9 I* J
  2183. JSR Reset_Current_Music
    ) P& @( F+ p& \* Z* I7 _5 H. A
  2184. JSR Show_Page_Text5 ?5 y2 R' p( w9 h
  2185. Next_Page_End7 i2 ~( t5 ~$ l) M) h5 ]5 b! Z; L
  2186. RTS% \5 K1 |  u: P* O& w, z. y

  2187. ( d' |* n4 X3 F! C3 o% b- j
  2188. ;==================================================
      n6 |3 {: n& h+ p
  2189. Disable_Text_Draw;禁用音乐条刷新
    % l+ u3 |4 Z% x6 K$ b* U4 {% r
  2190. LDA <Text_Disable_Flag
    , ]) ]4 [' f  z% M5 Q6 O; U# q
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
      ^8 F  H, I& M# p
  2192. STA <Text_Disable_Flag- J; |. E) A+ L' E$ [
  2193. RTS) s4 q' M5 S$ ~4 h
  2194.   b$ \5 d  Q' K/ A5 E1 \( `
  2195. ;==================================================( ^8 O4 {; x- |4 E4 V& O( w
  2196. Clear_Last_Track_Name;清除上次曲目名
    5 b# q5 n3 N# W& Y
  2197. LDX <Music_Item_Cur
    - o% }, b4 |, j9 I
  2198. LDA <Music_Cur,X
    3 r" O& M4 q$ L# Q* e3 c* o
  2199. .IF Track_Name_Pos
    0 ?% N' N* o% F2 ]; n
  2200. JSR Clear_Track_Info" u4 `8 a# G4 J8 D5 s5 D# Q
  2201. .ENDIF+ v0 q2 g7 p  O7 m  F
  2202. RTS+ R1 x; P. C& }5 `

  2203. ! O" A& a4 d( C! Q: T: }! R
  2204. ;==================================================
    / r" i% x0 W; V* E1 ]! U% n2 B
  2205. Reset_Current_Music;重设当前曲目
    , S4 C& [& W2 |

  2206. - Z/ Y/ R) V6 S5 M. n0 b$ a
  2207. ;写入当前总曲目
    9 T) W. P& K3 s: d, W! s
  2208. JSR Set_Sound_Total, T& ?; ?' k& o4 Z/ \
  2209. LDX <Music_Item_Cur3 f! R' n8 a* ?
  2210. . k4 d1 j6 ]( q% N- t1 E
  2211. LDA #$00! C8 b* s* Y) F6 S' n7 p; ?! R
  2212. STA <Music_Last
    ! K( J6 X' d: q7 m4 h& D7 N; N

  2213. - c" F. j( R: Y2 n4 ?/ k  M
  2214. JSR Sound_Reset_Proc
    ) S* K# g" z- m  k& z
  2215. JSR Music_Show2 l3 v* S, P. P( \& @
  2216. RTS" e) }5 c) L) ?" v; A# ?; s- @
  2217. 7 B  B0 {* x; o' z/ z* w  s% Y! D
  2218. ;==================================================" r; B# c+ M5 y9 t. _6 k4 q
  2219. Music_Song_Stop;音乐停止
    5 \! m8 r* G* K$ u$ j: k
  2220. LDA #$01
    " B/ s3 S" S% j; U
  2221. STA <Music_Stop_State0 p* z! A# i1 c$ ^5 |
  2222. JSR Music_Bar_ReSet
    5 l) s2 }2 s& L. c( }
  2223. JSR Time_ReSet
    - U7 K% X' F) L, F7 I. `1 N* y
  2224. JSR Sound_Data_Clear
    - p+ h4 L0 G1 t5 U$ c: H; N
  2225. JSR Music_State_Show
    ' t, V2 v! k2 t* D2 z& L6 c
  2226. RTS% g8 W5 y7 [" i6 v: P9 D" g

  2227. 6 Z+ J, z, s0 j
  2228. ;==================================================, s- k* X  c, K; C1 Z5 w' l
  2229. Music_Song_Play;音乐播放: T$ J( t# }0 b% F$ H
  2230. LDA #$00
    " ~0 Y4 p; U- m: |+ C; N, n4 j
  2231. STA <Music_Stop_State
    : p+ K8 x7 o  H' c  A1 M
  2232. LDX <Music_Item_Cur
    4 R; w: l( w1 H  f
  2233. LDA <Music_Cur,X
    ! Y$ T+ a0 x' E- |$ {
  2234. JSR Sound_Init_Proc
    ; ^. S" C( f6 Q4 v2 a
  2235. RTS9 b- O7 u2 E3 M* i, P
  2236. ; |+ A4 R1 u- A! F
  2237. ;==================================================
    4 [  E' l! G. n- _
  2238. Music_Song_Last_10;上10曲8 ^. N. r; z  A. W: v1 T/ A
  2239. JSR Clear_Last_Track_Name
    5 y9 P/ C- i6 B" v
  2240. JSR Disable_Text_Draw
    . ^. m3 S) z/ e& f( N% H
  2241. LDX <Music_Item_Cur
    # p2 d3 q: j& a, D7 q# I
  2242. JSR Set_Sound_Total
    + I, R" T3 O8 v
  2243. LDA <Music_Cur,X: B6 g" d- ~) b( l
  2244. SEC( i$ u+ f, @2 X8 X- _7 V) `/ }
  2245. SBC #10& V' ?/ f: J% j$ l
  2246. BCS Music_Song_Last_10_Set
    5 ?6 t, w9 D. n
  2247. LDA #$00
    " H8 Z  g8 A5 L3 R: P: W
  2248. Music_Song_Last_10_Set
    ' @0 b) D8 {  b  @
  2249. STA <Music_Cur,X
    6 i/ O2 ]+ _( {; ?
  2250. JSR Sound_Reset_Proc& l7 n: J* d% L; y! y3 e' l" Z6 ?
  2251. JSR Music_Show0 z! I, T3 k& f
  2252. Music_Song_Last_10_End& _' c' M7 l% A* N; S: L
  2253. RTS
    3 L' E# z4 m1 D$ l! D! X0 y$ R

  2254. ! w7 H6 t: q. y! l+ X
  2255. ;==================================================5 o2 U0 J3 W+ Q
  2256. Music_Song_Next_10;下10曲; g3 ^8 |) j3 M% N
  2257. JSR Clear_Last_Track_Name
    ( e" ]9 S" |$ x5 O2 @  Y
  2258. JSR Disable_Text_Draw
    & w4 _9 b9 Y  w' Y
  2259. LDX <Music_Item_Cur, B0 b+ @! k! T* q, Y
  2260. JSR Set_Sound_Total
    % K1 L1 w2 _. F% k3 D
  2261. LDA <Music_Cur,X
    ( J# H) n" O) q0 L1 h- W
  2262. CLC- Y$ q6 J& L$ K. }6 r- s
  2263. ADC #10
    3 Z4 G7 g; v/ o9 |+ ~. ~0 V
  2264. CMP Music_Total
    5 j: Q" X) [% u  s" d' H9 c! w: ?
  2265. BCC Music_Song_Next_10_Set' |2 |4 N% ^( R
  2266. LDA Music_Total% E0 K8 O* m# \. j+ e9 H8 ]
  2267. Music_Song_Next_10_Set
    $ P; h# C5 e$ {! |7 ?, l6 f% C
  2268. STA <Music_Cur,X. C. M# X0 v' A; `2 X$ B" p# [. U
  2269. JSR Sound_Reset_Proc
    - X5 x7 _) A  i# a: w2 B
  2270. JSR Music_Show) V# ~. J, ?4 d* ?" n
  2271. Music_Song_Next_10_End: Q# ^/ t6 X/ B1 C0 ]
  2272. RTS: G$ N! A, l2 M- L$ T
  2273. ) x- `4 g( W8 y* Q  x' s' q" N
  2274. ;==================================================: j$ F) v& B+ r
  2275. Music_Song_Last;上一曲
    3 Z! v8 ^9 F$ E1 i, U" Q
  2276. JSR Clear_Last_Track_Name
    ( q5 ~6 }: d  B! Y( t
  2277. JSR Disable_Text_Draw
    ! N. `* M7 ~- L2 ^
  2278. LDX <Music_Item_Cur
    + i; G0 p1 D( @& Z( B4 Y* H4 u1 B
  2279. JSR Set_Sound_Total
    ( {1 x+ a7 E; o% \- {$ e* R" G
  2280. LDA <Music_Cur,X
    ; r$ B3 ~% j8 X  ~, o% M
  2281. BEQ Music_Song_Last_Set3 \1 X' T0 C0 ]; w' k
  2282. DEC <Music_Cur,X4 Y( S* M5 P; O" n
  2283. Music_Song_Last_Set! e; o' X; v- f7 k* d$ W
  2284. JSR Sound_Reset_Proc
    6 M3 [5 n2 w, {
  2285. JSR Music_Show+ L% h# }; ?9 t+ S  {
  2286. Music_Song_Last_End
    0 I- W/ c5 O, S1 d1 C
  2287. RTS
    , n  \) v1 i1 K. Q3 c

  2288. 2 ^; l/ {  w5 a
  2289. ;==================================================5 f* ^+ r  f& m8 |
  2290. Music_Song_Next;下一曲6 P/ U0 e7 R) ^# `/ j8 d
  2291. JSR Clear_Last_Track_Name
    3 Q# ]# C2 f% l4 o9 b! C+ P
  2292. JSR Disable_Text_Draw
    # L$ H0 N  f8 s& F1 X7 l
  2293. LDX <Music_Item_Cur
    0 M* B6 Q/ [  Q
  2294. JSR Set_Sound_Total
    , H$ n* _" f5 l8 @; k3 E: T
  2295. LDA <Music_Cur,X! [; C. B' L5 g4 O
  2296. CMP Music_Total9 I  C  n# y9 L3 _- C. g
  2297. BCS Music_Song_Next_Set
    6 L9 S  I8 q% d; ?, U
  2298. INC <Music_Cur,X2 r# e( g' O/ ^+ j7 L
  2299. Music_Song_Next_Set
    , q8 Z1 L8 O8 o9 r6 a2 P
  2300. JSR Sound_Reset_Proc
    # X. y  F% S/ o9 i# v6 s" y
  2301. JSR Music_Show9 [; Y) n* x) b
  2302. Music_Song_Next_End
    3 N5 r! U1 O  f' G" G" H9 }
  2303. RTS+ ~8 `3 \9 \7 e* b: G7 \4 B0 \
  2304. * k: J( j8 `' _9 p& e& \" l& C, M
  2305. ;==================================================& e) L0 E& x7 w- w4 n4 V
  2306. Change_Select_Item;改变当前选择项
    4 Z- y9 Z) I6 n* J4 Q9 n* A4 D
  2307. ;--------------------------------------------------: U5 r0 B2 l* R" Z+ _, m- A1 G3 M! `: J
  2308. Change_Select_Stop_Play_Item;停止/播放
    3 T( Q- o- \- V0 j$ b) {0 X
  2309. LDA <Key_Once2 ]( k. _4 s/ M# F) E, O
  2310. CMP #$10
    : }+ `9 X& A/ ~
  2311. BNE Change_Select_Last_Item. ^$ G2 C4 b1 Y! N
  2312. LDA <Music_Stop_State
    2 H7 B7 g! z: t6 H
  2313. BNE Change_Select_Play
    4 `. p2 E1 o# c6 X% ^- M: V# z
  2314. JSR Music_Song_Stop
    2 X( H( ^1 W8 c( m  X' Y, g
  2315. LDA <Music_Stop_State( j7 d, @% y$ k) \/ y& [
  2316. RTS/ [0 C; w4 t4 v) g
  2317. 2 D5 a" X9 I5 r* t! Z
  2318. Change_Select_Play4 w' p) w0 p+ w$ H+ \0 }
  2319. JSR Music_Song_Play
    : |' F  J: m; A2 Y( C1 S
  2320. RTS9 b0 i7 e! ~- |$ W* h% P
  2321. . P. t! C9 ^) i' F3 u  X* ~" b/ a
  2322. ;--------------------------------------------------- L1 h  w& p0 K8 Z3 S5 q( y  u
  2323. Change_Select_Last_Item;上一个专辑
    " W' d+ o) z$ M9 Z3 l% b$ V; \2 w
  2324. LDA <Text_Disable_Flag- V+ M, @9 f5 @" n- f* @1 z
  2325. AND #TEXT_DISABLE_ITEM/ h( \- x& ?4 _% h# m
  2326. BNE Change_Select_Item_End
    # r2 a8 M# ^8 q: `. C
  2327. LDA <Key_Once
    # a# V7 t0 P' X  q5 n
  2328. CMP #$08
    9 s; e4 Z+ O. W! L
  2329. BNE Change_Select_Next_Item. V! J) {# Q* v# x& }( }0 {8 A3 d
  2330. JSR Last_Item
    2 n: u, f9 ~  d' l, h& K
  2331. ;--------------------------------------------------
    ' ~/ X5 @, `  o" z; I
  2332. Change_Select_Next_Item;下一个专辑; v  E; J  a1 ~% S& w; p5 e
  2333. LDA <Key_Once
    / @5 h' B) w! T9 w, y% N2 s8 X
  2334. CMP #$04
    : u' j) }/ c( f' ^3 y  L
  2335. BNE Change_Select_Last_102 C7 n; b  [/ r4 u/ ?$ G' P; [* i
  2336. JSR Next_Item! I; O! A" Z4 u3 E$ y) w
  2337. LDA <Music_Item_Cur* f) d: z# f7 m9 I/ d. }
  2338. JSR Get_Page_Start_Index
    + F6 O: m! z6 I1 v9 a) P
  2339. ;--------------------------------------------------: |. ]% L8 f/ H- J$ ^% B! l& m
  2340. Change_Select_Last_10;前10曲1 K/ I+ p/ c* S# j$ {
  2341. LDA <Key_Once5 I. w: K9 n$ \6 S, e/ T5 [9 {
  2342. CMP #$403 j. T; C& T; a# y) |: ^
  2343. BNE Change_Select_Next_10( T3 F- `7 B* K" X0 e& ^# g* D
  2344. JSR Music_Song_Last_10
    : T' b3 [$ u( W- `: H2 X1 p
  2345. ;--------------------------------------------------
    ! `. t* U4 U+ G
  2346. Change_Select_Next_10;后10曲) Y% g: V; @3 j* d; x  I+ H. |
  2347. LDA <Key_Once, I: q! F. e" U! ?! {5 J$ {
  2348. CMP #$80
    ; `' O# z8 |/ u9 f" |* I, A
  2349. BNE Change_Select_Last
    3 W# \2 g8 F4 i* R/ @; T% V
  2350. JSR Music_Song_Next_10
    + S1 [) O( r# @6 I" A7 F8 ^- B4 n
  2351. ;--------------------------------------------------. o# T* P: _8 |% x. |) b
  2352. Change_Select_Last;上一曲' N& ?8 R7 U& V* D5 [4 V! A1 h5 M
  2353. LDA <Key_Once
    / a$ T6 u/ L& Z, r" D  |
  2354. CMP #$02
    ; i3 y7 E- e, }, z2 Q8 I- z' W
  2355. BNE Change_Select_Next8 v5 w+ [: }/ y- l' `8 k
  2356. JSR Music_Song_Last* W' e) g5 d+ z' E& u
  2357. ;--------------------------------------------------
    ) l, _6 S) F& C! m& R4 }! w+ M
  2358. Change_Select_Next;下一曲) x3 n: l# ^3 e2 w- I) Y
  2359. LDA <Key_Once- U9 s* Z8 g/ w; b/ ?
  2360. CMP #$014 p5 `0 y' d5 K; z  Z
  2361. BNE Change_Page_Next
    ! X7 E' f+ M& k4 Y) p
  2362. JSR Music_Song_Next2 x2 g3 \" S( m$ ?1 A* J, E
  2363. ;--------------------------------------------------4 G" ^5 T6 k$ ~. h! K" W1 C; {
  2364. Change_Page_Next;下一页$ I0 ]. d5 @0 P3 X
  2365. LDA <Key_Once
    ) o: f* i' p9 \* ^9 p2 K
  2366. CMP #$20/ o0 u4 C, P" F- L- K- u/ |
  2367. BNE Change_Select_Item_End" P# V6 v& w7 y# `1 Q( P0 B
  2368. JSR Next_Page  {, B$ B- n: @9 f) w5 W: o
  2369. ;--------------------------------------------------
    0 T3 p8 |  Z) ~; G* f
  2370. Change_Select_Item_End
    # b- t& |  e: B) y2 H$ A
  2371. RTS
    * Z5 a8 W% B) O' o" R8 E- q" c

  2372. ' U; k* _8 W: G+ I- o- C6 L) F; C0 {6 v# V
  2373. ;==================================================
    , p/ |+ X# U+ g5 ^
  2374. Show_Arrow;显示箭头光标
      T2 O1 \4 x4 M3 D' [/ h5 t
  2375. LDA <Music_Item_Cur
    : n( ?; X5 a& ?" g: W7 F0 R, y
  2376. JSR Get_Page_Start_Index  y% H# ^  d$ b0 j
  2377. LDA #$00! D( ~  q8 v$ k% m, X$ i; [: g5 A
  2378. STA PPU_OAM_ADDR+ Q! ^* k" Q: m! f+ ]& e* n5 C
  2379. LDA <Music_Item_Cur, z4 H7 |( w3 V. m
  2380. SEC
    1 q4 ^3 _2 X; O/ o( a' i
  2381. SBC <Data_Buf
    ! P: J  R/ |$ z9 w
  2382. ASL A
    / `" M3 g, E* t5 x( p- Q1 m
  2383. ASL A5 `' I/ E8 c6 _( b+ i; a
  2384. ASL A
    * D0 Z, f( `1 S/ q# \% z9 {9 |
  2385. ASL A6 p2 C- z' [: u5 `2 a, S) l, O
  2386. CLC
    ) \3 I3 n+ f( t! U6 O* t5 O
  2387. ADC #ARROW_Y_OFFSET# \; m: M) h% Q- @
  2388. STA OAM_TEMP_ADDR + $00& m; P: i) Y& x' K
  2389. ;STA PPU_OAM_DATA2 s4 s2 o% J  I4 [$ f: _
  2390. LDA #$1F5 J2 E9 [6 X# \0 a4 H1 v$ o
  2391. STA OAM_TEMP_ADDR + $01. W7 C5 W) r9 j3 @1 f, I# @
  2392. ;STA PPU_OAM_DATA
    7 Q* Q6 b& i/ ^
  2393. LDA #$00- H9 m% p0 Q2 E
  2394. STA OAM_TEMP_ADDR + $024 {  U  f/ X4 q$ a
  2395. ;STA PPU_OAM_DATA
    ' ~6 [; q1 s6 @! {5 J$ h
  2396. LDA #ARROW_X_OFFSET9 ]2 N( z; k$ c, n5 g) t8 f4 J
  2397. STA OAM_TEMP_ADDR + $03
      y& j' m2 w( f
  2398. ;STA PPU_OAM_DATA7 f& ^2 u* X3 T: j  P/ I, o
  2399. RTS1 b5 g# [/ {+ [

  2400. + ?# ?5 A8 a3 y; m) _
  2401. ;--------------------------------------------------
    7 }+ l2 Z+ G* @0 ^' w4 r0 n% ?
  2402. ;命名表数据
    4 v+ ^: q( j" ~7 u+ H
  2403. Palette_Attributes# X0 S  S, u+ J0 T, \& F
  2404. .IF SOUND_BAR_SHOW_ENABLE
    1 S4 ~3 H/ g% z9 E. t
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$550 {' Y0 I* {- \& N9 |1 k- a- e
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ( K( c/ Y# K0 x3 {
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    " d& H1 T( Q; A' A6 d0 g. s
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    & q- u9 o( m5 ~0 b1 o
  2409. .ELSE4 m9 V. G0 i7 p& @0 j
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
      ?$ q+ Q9 l+ {$ u; L
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    6 Q3 r! ^: f; `. b. ~  `8 ~
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    5 X1 ]- f0 G$ w
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA; P" g" \4 D% y
  2414. .ENDIF$ X5 s+ d! E/ a+ H

  2415.   s7 |: {* K6 y3 D4 \3 `1 O
  2416. ;--------------------------------------------------$ _, @  Z  ^6 y! z2 K
  2417. ;调色板数据' Q) R, l, c( C) c% i) c
  2418. Palette_Data
    : p% y7 w, Q) Y
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F# E+ L- y5 t" y1 Q% @, g. X
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    ' x4 K: G0 A  E1 f

  2421. 2 L# Q, V5 v! b0 j5 V# J' i
  2422. ;--------------------------------------------------$ B9 o$ v1 W2 V5 ]: Z* A) E
  2423. Static_Text_Data! v% J- W% W: S" b/ X% [
  2424. .WORD Static_Text_Caption_Data
    : A0 @2 `2 n9 {& J
  2425. .WORD Static_Text_Author_Data) `  M- M+ V8 c; L( Y
  2426. .WORD Static_Text_Date_Data
    7 P; K' L5 m( U
  2427. Static_Text_Data_End" ]8 I8 ]6 ]" U$ l" ^  V" q, E

  2428. - F3 t6 M. H0 G& Z; h8 x
  2429. ;--------------------------------------------------
    - e) h8 d6 s* i- e0 h
  2430. Static_Text_Pos
    , h- S% Y+ T$ A& q6 P9 b
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)* F) c0 q) A& e
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)9 l7 H& Y3 D6 H. a. F" ?
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)) N1 B$ Z2 B3 ~5 M% u' I& }# a
  2434. Static_Text_Pos_End" y* E' m6 d$ ?8 S! |/ j

  2435. * n. k2 u. x9 c" [2 L) ]$ @7 H
  2436. ;--------------------------------------------------/ |8 n4 P; h, W$ d, W. h
  2437. Music_State_Stop# C' N' z% `8 f; {
  2438. .IF SOUND_BAR_SHOW_ENABLE
    " _2 A( J* p3 o' ^7 [4 h' g
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00  D/ n( G- j3 j4 Q- [5 I# N: N
  2440. ELSE
    ( }2 ]$ [* w" b; b4 I4 ?: `
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    / q% r1 V3 C! p- n6 b6 F. v
  2442. .ENDIF8 f9 x. S1 h* {7 o
  2443. Music_State_Play
    ; m! J# G; _4 g& c" S& ^0 ^6 B
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    5 E+ w( m* q# y2 J0 [( y/ x  |
  2445. ' W8 ~" H) q8 F7 b+ @1 c
  2446. ;--------------------------------------------------
    3 d; ~3 f- g' B) }* E6 h
  2447. Sound_Bar_Text_Data;声音类型文本
    / J5 r" C4 ^" a/ o. H* ?1 o
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"9 n5 d1 |7 S; ?. ]2 r
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    7 G8 y$ @( u( c5 b
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    & M& T: [$ ~, Z% S# x5 ]4 N5 a
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
      U8 _2 K- Y5 i8 E1 l, G% x
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00. \. Z( b' F* [! L  E/ }7 C% _" q
  2453. 9 D* j' o: u  B0 g! S3 c" U/ V
  2454. .IF Track_Name_Pos6 u- k, q9 K: \/ |+ C

  2455. 7 H( v' f/ k) F1 i4 Q
  2456. ;--------------------------------------------------% V/ I7 e7 J* y0 L, b9 M, O4 _8 j; f
  2457. Track_Name_Addr_00;曲目名地址索引
    7 h  |& ?5 v3 i5 |
  2458. .WORD Trackr_00_010 W6 W6 |; \6 h# P2 X2 z2 k
  2459. , q9 ?3 b0 [7 \) B* o
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"  _3 Q) b. U9 a) J7 S
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    * }: L: t' O/ ~7 r6 u$ p2 l

  2462. ; }% U; I0 `+ z( ]6 b
  2463. ;--------------------------------------------------9 }& J$ M9 a% d' K
  2464. Track_Name_Addr_01;曲目名地址索引( g7 E5 ?) \0 _0 A! ?
  2465. .WORD Trackr_01_01
    4 b/ z3 J$ w8 O: @, u

  2466. ! `1 u* Q& ~# M) s% T
  2467. ;==================================================
    & z/ f& U5 C) T0 d- x+ [1 d6 _
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    9 d: S( h* s, j+ _$ ^8 C6 i
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    4 ^5 p; b; S! E9 Q
  2470. 5 B6 l; f1 q0 u3 [# E5 M. e; n
  2471. ;==================================================
    - B' f' S+ g  B( v+ h1 j* H4 Z
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引3 Y$ q9 |( J* x# E" n7 G
  2473. .WORD Track_Name_Addr_00) L9 l' B; u4 h% |* K. }0 \
  2474. .WORD Track_Name_Addr_018 b3 {$ Y) m+ d  Z9 ^) p  |+ W2 @
  2475. .WORD Track_Name_Addr_011 F  [1 z- C/ t/ g/ C/ j5 z

  2476. 0 |5 ~% ?( F$ _
  2477. .ENDIF
      u: P0 Z( f) W! \9 R; o9 ?# [7 D

  2478. ; x) }- H" g5 _' i
  2479. ;--------------------------------------------------
    5 U. X* I( \+ ?+ s( P
  2480. Static_Text_Caption_Data;静态文本数据* A* E6 w7 m7 k, S2 c) D: Q( _) z
  2481. .DB 16
    . G: R( V- l" Y! @/ v1 l' ?7 ~0 e1 \
  2482. .DB "FC MUSIC 12 IN 1"
    # K9 ?! l8 _9 n3 ?' k! k
  2483. Static_Text_Author_Data( {. Z7 q. ]" C( T9 Y: ]: s0 ?
  2484. .DB 25
    : S- O: z, R- u
  2485. .DB "EXTRACTED BY FLAMECYCLONE") L/ y6 C$ Z! m! Y) A, D
  2486. Static_Text_Date_Data: A+ U% \& f3 m$ O; B. Y4 l
  2487. .DB 10& s0 i. [3 r. T% I, {
  2488. .DB "2023.07.23"
    ' F! A) Q1 B( f# O9 M8 ?* s3 n. ]
  2489. 6 N1 T" N7 n4 a9 I
  2490. ;==================================================
    * k: P4 }7 N/ ^2 O, l
  2491. Music_Collection_Name               ;专辑名间接索引( ^9 X2 G# r3 d" v# Q9 f# e
  2492. .DW Music_Collection_Name_00' Y& x2 D6 ^6 R; S. I- R2 q$ V
  2493. .DW Music_Collection_Name_01
    0 G0 @) d/ H2 d  _8 [" v6 j
  2494. .DW Music_Collection_Name_02. r3 L7 e9 z  j2 l
  2495. .DW Music_Collection_Name_03
    9 l  V- X0 D6 n/ q+ f5 g$ f
  2496. .DW Music_Collection_Name_046 Q. Z' M! G7 b& A+ g- f6 K/ R3 q
  2497. .DW Music_Collection_Name_05
    , T* n3 t% O2 {! Q4 G) {& O
  2498. .DW Music_Collection_Name_06
    7 Z4 [- u5 w  v9 H6 M6 n& j
  2499. .DW Music_Collection_Name_07$ H9 A' i! k2 F$ b, c5 @! u/ S; X5 H
  2500. .DW Music_Collection_Name_085 z3 y& w. F  C* k5 I/ u
  2501. .DW Music_Collection_Name_09
    , Q: V  o) o: `3 ]' X7 M
  2502. .DW Music_Collection_Name_10, T/ }; S4 G7 `( i6 v, w+ \0 W
  2503. .DW Music_Collection_Name_119 t# ]4 h, k5 g: i5 j/ O2 Y* F1 U
  2504. 8 Y5 m6 b0 i3 Q: n! }
  2505. ;==================================================5 A+ d& r4 |8 ]8 ]- {
  2506. Music_Collection_Name_00            ;专辑名文本数据
    " e. y* h" z" s9 X5 l, w% L; c, E
  2507. .DB 11,"1.RAF WORLD"
      ^! M! E; y. Z5 C. h
  2508. Music_Collection_Name_01+ ]- e! m6 w/ V! {2 r2 @! }
  2509. .DB 15,"2.FINAL MISSION"
    9 E' w8 q. E6 w. b
  2510. Music_Collection_Name_02
    * Y( ~* g" u  z* q0 _
  2511. .DB 06,"3.KAGE"+ w  [* K" b* v0 p9 k
  2512. Music_Collection_Name_03+ X9 N8 \* M- |& j' L
  2513. .DB 16,"4.DOUBLE DRAGON"
    ! s% y. d5 N; g* d8 {
  2514. Music_Collection_Name_04/ D7 X' D/ I5 j8 O0 l
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    " T* [( V4 q4 Y0 T. i' e9 a
  2516. Music_Collection_Name_05
    8 X" b+ H% h1 V# x# X6 T* h
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    , U) ?( |# [% |3 f- p7 P
  2518. Music_Collection_Name_068 e; H0 ~4 e8 M8 v( a; Z% m
  2519. .DB 09,"7.ROCKMAN"" T6 ^8 [& P" u! [( n
  2520. Music_Collection_Name_07
    4 B8 ~, Z/ X! C& b! W$ b9 a
  2521. .DB 12,"8.ROCKMAN 2", z3 C  o! I$ l' b8 O
  2522. Music_Collection_Name_080 h! R; n/ ^! q9 `2 `( k
  2523. .DB 12,"9.ROCKMAN 3"
    , M2 h9 a! K7 p: K; p9 k) c
  2524. Music_Collection_Name_09
    ! Z; E; z( b9 l7 D2 M  J2 ~
  2525. .DB 12,"10.ROCKMAN 4"
    , T* U$ G. B- m% D4 E3 b) A
  2526. Music_Collection_Name_10
    0 A' G7 x7 @3 h, L% k5 n; k
  2527. .DB 12,"11.ROCKMAN 5"
    8 r$ m4 ?# a+ y# o5 c1 [3 g! Z
  2528. Music_Collection_Name_11' S" _. K6 U' e' A8 E; F
  2529. .DB 12,"12.ROCKMAN 6"
    # `# Y' E# O$ V& }

  2530. / i" b7 \$ [. L' }2 J# u
  2531. ;==================================================
    $ E4 Q. w8 G9 D! w
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    $ f. _! Z( U6 ^; b. u% k1 y" ]1 W
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,08 H* Z2 X- u, [' x8 T

  2534. * X( p% u4 R0 K1 P, h. [
  2535. ;==================================================, B6 g- n9 h6 f0 T8 F0 z
  2536. Item_Pos_Data                         ;光标箭头位置4 I4 a+ j6 _( `/ l
  2537. .WORD ITEM_SHOW_POS
    ! x4 R1 d$ g' w. E
  2538. .WORD ITEM_SHOW_POS + $0040' ~  y6 C- z2 Z1 f- g$ O
  2539. .WORD ITEM_SHOW_POS + $0080
      s* N% m% c  c
  2540. .WORD ITEM_SHOW_POS + $00C0
    6 Y+ S7 z* e8 o5 Z7 q# @0 h
  2541. .WORD ITEM_SHOW_POS + $0100
    & I+ J+ t' a% _
  2542. .WORD ITEM_SHOW_POS + $01406 Z8 a; _. T5 ?1 l' M- ~8 @

  2543. 0 M. O. x3 U( i  d+ g: E6 s
  2544. ;==================================================' r) g. W4 ?; X, b1 U
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    7 t( e: |  l3 ]. g" w" [' j% j
  2546. .DW $BFC8/ k/ v8 Z* \- r: p) ]  G
  2547. .DW $D7F06 s1 B+ N! Y" }# P6 ^2 i
  2548. .DW $9FC0
    , U+ B0 ^+ L3 O. V7 \  k) p0 i2 V
  2549. .DW $BF702 a$ v! G6 f6 q
  2550. .DW $8003
    * ]  K/ v! ]% `+ N
  2551. .DW $BF30
    ! v6 G' F6 A" E. v
  2552. .DW $9003
    3 p* B! A7 t4 `# S6 y2 [# p
  2553. .DW $8003
    4 Y/ v( p8 A  [: i0 Z
  2554. .DW $8003
    , _" k# x) j4 O, E
  2555. .DW $8003  H! m( ^6 j1 d1 Z
  2556. .DW $8003
    : r4 P5 a; Y5 L% {
  2557. .DW $8003' V- x4 [. y- i* u! \/ @
  2558. & \& q. s' [& D( a* E
  2559. ;==================================================
    " v1 R0 n- e1 |- N) x& {
  2560. Sound_Play_Port                   ;音乐播放入口地址( \  H: R7 @: ?  {
  2561. .DW $80002 u& b: z% [* x) y( u2 m& N
  2562. .DW $8001( ~: H9 G. B! L. Z9 a( s( f
  2563. .DW $A0002 t1 @& D$ x1 [0 }- g( e
  2564. .DW $8003
    7 A" B! p' ?( N6 Z% f) X9 u
  2565. .DW $8000
    ( X% n$ I4 ?& b8 j) q. u. U; I; p
  2566. .DW $8003
    2 e& N# q0 y( i9 a- I- w& T. m
  2567. .DW $9000" ^/ i& }$ s. ?+ W1 ?3 V5 D
  2568. .DW $8000
    + T* g1 g6 X+ T5 @* P; L
  2569. .DW $8000
    ) U/ B% A. ^- s+ x1 o
  2570. .DW $80002 U. c+ E+ H5 o" z- n) b' j" X8 A
  2571. .DW $8000# O( y6 u% y+ @' ~
  2572. .DW $8000  `5 `' d% D) I. |, ~

  2573. 7 o! _6 I+ `) t, u9 u& h
  2574. ;==================================================' D: Z1 k2 |: \
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    ( B# E: W4 B* G" l. z, f
  2576. .DW $0000' \, Z0 g/ D7 G
  2577. .DW $0000. y# M" J4 q  X. |+ j' A: ?
  2578. .DW $0000
    % B" \! w4 l3 }# E  V" b1 m8 e8 X0 b
  2579. .DW $00005 ^  j6 l1 t9 |9 V8 ?) C
  2580. .DW $0000- N9 d: P* @  m7 o4 ^
  2581. .DW $0000
    " j8 Q; u  u( {
  2582. .DW $0000
    5 r/ c7 J( C$ Q% b
  2583. .DW $00005 |9 n* O, h& S0 n  S, f
  2584. .DW $0000
    " }7 J3 L3 w' Y5 t8 R
  2585. .DW $0000
    9 l7 _4 h2 Z. h: o5 i; i
  2586. .DW $0000
      d, {: m2 x8 f& L" p8 N
  2587. .DW $0000
    , b* g% C( I/ i- p& G' N1 C
  2588. 8 _& a- P7 \* j% c9 R7 P
  2589. ;==================================================
    - W( V2 U, H, z% x$ A/ i0 ]
  2590. Sound_Total_Port                          ;曲目总数
    * b* o& _# o$ x- h
  2591. .DB 387 U0 I$ b( e" n) g% c
  2592. .DB 33
    % n/ O% r; P* w" p* |2 S" |
  2593. .DB 49
      V9 H" w- S4 x% N  b. x- u
  2594. .DB 412 Z- J9 K$ {7 c; m& P  ~% ^; [
  2595. .DB 83
    " t6 ~8 H) j% [7 D4 p& y
  2596. .DB 70
    8 B; G* D( W0 b" W/ C1 v, S+ s4 v7 S
  2597. .DB 50
    ; d9 c, L6 m9 a# q
  2598. .DB 67' t7 p9 P# U, l  q2 o( E
  2599. .DB 57
    0 R( U  H8 @, f
  2600. .DB 71- A5 K( K8 e- a0 m8 _
  2601. .DB 76
      e3 b! _6 W  ]! q3 j0 e1 m
  2602. .DB 102
    ; Z; }# V! w6 m0 k
  2603. 8 L" S$ g% u' `/ d8 ]! C# o: Q
  2604. ;==================================================
    6 ~0 T! j# A8 d! n/ N
  2605. Sound_Start_Port                      ;起始播放曲目
    : b4 j" k8 ]! ?
  2606. .DB 00
    ; o. R2 G. X1 y" @
  2607. .DB 00
    2 l* c7 @( b( k- s& o0 a  I
  2608. .DB 00
    + y) G! r0 i3 m% ?8 ^6 y
  2609. .DB 004 U; K  \/ n/ S
  2610. .DB 00$ C1 ]- Q2 F1 j. t
  2611. .DB 00
    3 ?( `; P, p- |9 s
  2612. .DB 00
    ! G+ Y! j' W  ^7 u
  2613. .DB 00
    ' {/ V! E; H0 t8 x: ?& w; ~
  2614. .DB 00
    + ^5 P) f$ ?) c% z
  2615. .DB 00- |1 ?+ ]. \. ?
  2616. .DB 00! F7 h4 }: P" @$ T
  2617. .DB 00% Q5 B+ Y/ h0 M* t& Q

  2618. & c6 \- a6 D7 \
  2619. ;==================================================
    / f5 B* q- ~' s$ s. n
  2620. Sound_Bank_8000                      ;专辑bank_8000+ @2 R- d; `5 O7 H/ \; h* H
  2621. .DB $107 y0 F: @, @! s8 b
  2622. .DB $12
    1 e5 Z0 R% D6 ^3 L
  2623. .DB $14! d( X6 _3 b8 g
  2624. .DB $16% }; E. k- ^+ @2 N! S. m5 n
  2625. .DB $18( r9 R- U5 j3 g' e
  2626. .DB $1A
    & r% h/ L6 G# t; W% h
  2627. 3 Q& Z4 i0 z( _/ L
  2628. .DB $00' U  x$ B/ S+ e& C0 s; y% E  ~& F
  2629. .DB $02' Q  B- Z( n; C6 W, i$ _
  2630. .DB $0D
    $ n# L% X! ]: K9 O9 A  l
  2631. .DB $04
    1 }' g" A$ e2 R2 ~  n
  2632. .DB $07
    5 ]  W/ ~; i3 j$ ]+ T/ y8 U
  2633. .DB $0A% c/ N* Y6 ^' x& U3 }& l

  2634. . |9 m* V7 Q- W4 S( J
  2635. $ _$ F9 N; }+ i
  2636. ;==================================================) i8 |6 U9 a3 S
  2637. Sound_Bank_A000                      ;专辑bank_A0009 T4 V. u+ S, [- d
  2638. .DB $110 v% u) x# }. m
  2639. .DB $13
    1 Y2 M. b( t8 |3 a$ _+ B
  2640. .DB $158 y4 M  i$ q) S8 v6 {) T7 x3 L
  2641. .DB $17' t3 k2 Y) D5 K1 m4 b) Z
  2642. .DB $19
    , v- h0 G9 _0 k) L
  2643. .DB $1B
    : T( b3 o; T: G- i" b8 ]3 ?

  2644. / |; }0 o/ R* U, [' Y. y/ u$ I4 e
  2645. .DB $01
    ) g/ _- l0 z$ z$ g
  2646. .DB $03. A3 |. U- L6 Z# t. L
  2647. .DB $0E
    2 X. t- S, X  {1 O5 P0 D/ B
  2648. .DB $05
    ; z+ w& P* I$ |
  2649. .DB $08
    7 u( T; h- C1 V" ~& V& ]
  2650. .DB $0B
    9 f  s7 }7 u7 i4 S4 ?

  2651. ; k) F8 H7 Y7 a# w5 r8 J
  2652. / o( E* t: X' Q( ]9 R. d1 C% Z
  2653. ;==================================================. [8 H  y6 J% h  L$ x* M' W
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    / z' E3 ?# B  y
  2655. .ORG RESET_ADDR; d$ t7 w( r/ y# ]1 V
  2656. 0 v# [/ N& j( G! W7 W/ N
  2657. ;==================================================$ W& t% L' F- Q- J: k% [0 N- n
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    / L1 n; o  n1 ?$ w" M7 f
  2659. PHA
    ) w  W5 z2 e1 r
  2660. LDA #$06( a9 X' x; f, ~- m, j/ L
  2661. STA MMC3_BANK_CTRL
    9 `& k: u% G: u4 C/ P
  2662. PLA
    3 K+ i2 v8 ?! m* U0 t# s4 T
  2663. STA MMC3_BANK_DATA0 r. u$ }* n7 v( x8 R; h  C  r
  2664. RTS
    7 C: c2 R0 A( Q& j. [- Z+ L

  2665. 1 c/ ~0 ], ~. I4 L9 S$ T  H
  2666. ;==================================================) z$ ~" V& W- ^# ?3 T
  2667. Switch_Bank_A000;切换bank到A000-BFFF. W: e$ O" ~3 R4 k! Q9 y% s
  2668. PHA
    " K* h  L8 |4 O" U
  2669. LDA #$07
    4 W6 `1 v3 f4 v% X/ \
  2670. STA MMC3_BANK_CTRL
    3 r$ ?' N, I4 ]8 y, M: u
  2671. PLA  b) E& K- `8 F' \9 y
  2672. STA MMC3_BANK_DATA# E8 z! M. F5 A/ Z! S
  2673. RTS& M* W; N% t) d7 o4 m

  2674. ) e# e# R3 q- X; p8 a* g
  2675. ;==================================================
    8 p8 C* u7 M) o( Q3 w7 {3 r
  2676. Switch_Main_Bank;切到主程序bank* b1 i$ S5 Y; ?
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK. A% T( v  W& P, T0 @- Y
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank7 X; O9 \2 j& `9 T0 X3 ^
  2679. RTS
    9 W9 T! X  k, w0 `1 T# C1 }/ N

  2680. 3 ^1 k+ I9 a  s# w5 @4 }. B* P& B: q/ ?( X
  2681. ;==================================================  n' G) F0 `  Y6 x, k% f7 P( B
  2682. Sound_Reset;音乐重设(如果有的话)
    4 n) t- n1 C; @$ x# T2 w; l, F- x
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    9 `, h) D  g: Z5 t$ |! m
  2684. JSR JSR_Addr_Op        ;执行音乐重置. [2 \5 [; s8 R" C
  2685. JSR Switch_Main_Bank   ;切回主程序
    & x- c( j. f1 K/ P" ]" z5 H7 E
  2686. RTS
    $ f! b: _) I2 _; L) ~8 ^* q
  2687. + V, T: e+ \; E+ t# v( r8 C
  2688. ;==================================================
    + B% J$ {, }$ Q9 n; Z$ c4 e3 `
  2689. Switch_Music_Bank;切换音乐bank5 {8 ^& r3 S# \* k5 @$ Z
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    8 ]# t  S% B' e! I8 Q+ p9 ^, {6 N" \
  2691. LDA <Music_Bank_8000
    : \- V: i& i3 C8 c
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank4 v5 }- {2 c" u  B1 T
  2693. LDA <Music_Bank_A000
    * t( J) T- h& Q! Z) K2 k
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    $ d% D' M, J$ r
  2695. RTS
    2 Q9 f! `- r& U
  2696. 8 O5 P8 k* g9 N7 L# [1 |4 w# R
  2697. ;==================================================3 }  e0 ~/ I$ B! K+ h) A$ W0 T* y
  2698. Sound_Init;音乐初始化# w- @* F6 a1 x  b3 J& W9 ^8 E! {
  2699. PHA3 _8 c% F9 Q/ l4 Y
  2700. JSR Switch_Music_Bank  ;切换到音乐bank  J% P4 k$ L7 M
  2701. PLA+ q# T  V* h$ \8 c8 Y
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    - I: E0 h2 z3 L1 o
  2703. JSR Switch_Main_Bank   ;切回主程序7 e! P# z: b0 Z3 |. r
  2704. RTS
    7 T9 p+ p; R: L" F
  2705. 6 k% W8 M, R. u0 d+ U) P
  2706. ;==================================================
    1 s; l/ N8 R' U, e; \* Q5 D
  2707. Sound_Play;音乐播放
    ) Z; v4 S4 ]0 I
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    & a& Y5 G+ q1 E% R3 ]0 h7 H- O# ^5 ?0 q
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    * r3 _& z. _  Q7 J# e$ l# k1 o2 v9 i
  2710. JSR Switch_Main_Bank   ;切回主程序' t& Z* K; \4 U
  2711. RTS6 O; e6 n2 D) O7 ?* }+ s
  2712. # Y: @3 b1 {* P& m, H  q# E6 J
  2713. ;==================================================
    % b8 a1 {; V% Y# o
  2714. MainLoop;死循环  d7 x: [  A2 q6 s
  2715. JMP MainLoop' D3 h* h7 L& h/ j' n
  2716. - O/ B& r5 j' r2 X% t
  2717. IRQ_SUBPROCESS_JMP = 0
    . Z) D/ D* P: Y/ u/ U

  2718. 3 a' z1 R. S3 @' K6 }. z
  2719. .IF IRQ_SUBPROCESS_JMP
    8 o& i4 K. I/ `) j+ L, ]  V+ j: @
  2720. ;==================================================
    & f+ o5 @! [! A5 G, E3 {" w4 A
  2721. IRQ_Process_0;IRQ处理过程0
    ( ~( f7 W/ w% ]
  2722. 1 Q  ?" f! i7 z
  2723. ;15条扫描线后触发IRQ8 m1 I9 s( a5 s8 W) `! D  [' a
  2724. LDA #15
    - D6 |" r) Q1 P' e. U; [
  2725. STA MMC3_IRQ_LATCH
    * c% h  F2 c4 _0 e! T+ o  v( O

  2726. # u/ t, e0 u9 R, s3 Y* q
  2727. ;设置屏幕滚动
    ' s6 p) z3 o1 Y& L
  2728. LDA <Scroll_H, v9 j9 h5 N: v$ L. t* b, }5 p8 e; i
  2729. STA PPU_SCROLL' R& T' N3 k# J1 M5 q
  2730. STA PPU_SCROLL( k" t$ F) e' I5 K8 T: C
  2731. % v) X6 O6 k* `7 W( K& C
  2732. IRQ_Process_0_End
    - h# m( t- }  p7 k: L  Z
  2733. INC <IRQ_Process_Index( S+ t1 }* ^) n' E3 c5 V
  2734. JMP IrqProgramEnd, m+ C, \6 k7 l9 y

  2735. ' B" G* t0 ^' E: n8 T. [
  2736. ;==================================================
    4 t% M" S$ S  s3 N: E9 ^" r
  2737. IRQ_Process_1;IRQ处理过程1
    - ^1 {+ p7 H: c- ~2 C2 P5 W
  2738. . @" H" |" R3 f# {$ |  w
  2739. LDA #55
    # B. T/ h5 j: [, d) S
  2740. STA MMC3_IRQ_LATCH3 X- u. |; n5 z: r$ o
  2741. , r9 r+ Z3 a# Q# z' Y2 L1 Z1 y
  2742. ;设置屏幕滚动, Q  K6 \* D( w
  2743. LDA #$006 }/ d+ X" l- u" Q$ \/ m
  2744. STA PPU_SCROLL
    8 ]+ P# o5 R- g% l4 W6 P
  2745. STA PPU_SCROLL
    : o4 z- x% m& a3 A1 u. R/ p

  2746. 8 s% P1 f+ q: `. q/ o
  2747. INC <IRQ_Process_Index: M7 b5 y# P. b; X
  2748. JMP IrqProgramEnd
    9 K) Z$ M9 B: W) a9 r

  2749. $ ], ^) I) }; l5 R
  2750. ;==================================================
    % M$ e) c/ q  t$ H6 E% [
  2751. IRQ_Process_2;IRQ处理过程2% n. h6 y) Z2 x6 y2 J
  2752. ( j, |% f$ P6 }5 }; y- {
  2753. LDA #15
    " u  |& n& K. f! q& M6 U' d
  2754. STA MMC3_IRQ_LATCH' U8 u. |6 t: e1 ]

  2755. % ]" ?1 [  a; ^4 s
  2756. ;设置屏幕滚动  w+ ^! m2 V+ \% F' y: j: R* d
  2757. LDA #$00( {# N; V  L0 w" u7 A) |
  2758. SEC( h$ I7 ^* ^5 _' S& u7 y
  2759. SBC <Scroll_H3 P6 y" j7 l5 n5 t2 X
  2760. STA PPU_SCROLL; g9 x/ g5 C3 n) ]8 \
  2761. STA PPU_SCROLL
    * u8 |5 ^! ^! v0 G2 T! c/ E
  2762. ' a8 l# B% W' M4 N; ]5 i
  2763. INC <IRQ_Process_Index
    ; k3 Q$ z, Y& F: f. r
  2764. JMP IrqProgramEnd
    * L2 [3 P, [7 ], _) [1 }% h' N

  2765. ! ~2 G* O6 X4 @" u
  2766. ;==================================================! O1 S9 q; }- H
  2767. IRQ_Process_3;IRQ处理过程3' T5 _: Y# c! ?' u& _7 R: C
  2768. " c; b5 |9 N9 x
  2769. ;设置屏幕滚动
    & a/ E# G( D' I1 G2 y. e! H* U0 g
  2770. LDA <Scroll_H5 E, O1 r: y' [$ d4 X
  2771. STA PPU_SCROLL! f/ h4 f% p7 K# w+ ~+ z
  2772. STA PPU_SCROLL( a& l( a0 `) q. H
  2773. 6 B" d7 v6 t$ A- L
  2774. ;禁用IRQ
    8 Y( x. ^0 [+ l: Z* B
  2775. STA MMC3_IRQ_DISABLE/ k1 I) E' `4 z( P8 }
  2776. JMP IrqProgramEnd: t2 e+ z: v  P* H9 C+ M
  2777. * G/ r& I* s2 j3 |/ k+ }
  2778. IrqProcessAddr
    ' E- h2 Y, g3 W9 Q& w1 a! }- s
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    - r, d& G$ A  ]5 X7 T

  2780. . X' k9 k9 _/ z+ Z
  2781. .ENDIF$ z9 W* }2 `* g) g1 r: O& s3 E
  2782. , Q" ]' u' Q# s" m& i
  2783. ;==================================================- g5 D3 d1 f9 w6 [/ h0 N
  2784. ;IRQ滚动模式常量9 U. j- R, h- j# d( Q5 @
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    9 r3 ^5 ^6 r7 K8 ?5 G( J
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    + \+ Z2 c4 ^4 X, Q
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
      E6 X! k2 A8 M+ d

  2788. 9 ~4 H: V, o3 J# ]2 j% ~
  2789. ;IRQ扫描线数据8 ^+ ]2 B* M7 L
  2790. IRQ_Scanline_Data% y& w( P- j# @3 V: ?% x. ^
  2791. .DB 8
      U! W- f' _3 l/ w8 [+ X. ^
  2792. .DB 542 S6 s# I6 G/ c
  2793. .DB 8
    ) ]; U, E8 H+ t* Z0 a* I0 R% h
  2794. .DB 00 ;关闭IRQ
    1 F- J3 C- [+ P3 o0 c3 }
  2795. ) x, D* \# i% F+ }  K
  2796. ;IRQ滚动控制模式
    6 @6 c" K$ y$ }: Y1 i( M4 f9 R, z
  2797. IRQ_Scanline_Mode2 L7 F. b. Z4 E9 Z) i
  2798. .DB IRQ_SCROLL_MODE_ZERO" N) D$ P% O. m' G( I' H* d5 C
  2799. .DB IRQ_SCROLL_MODE_ZERO, q! x9 x% ~& j
  2800. .DB IRQ_SCROLL_MODE_RIGHT% z, Y# N! A* i( X' O6 B
  2801. .DB IRQ_SCROLL_MODE_LEFT
    . A6 m- `- Q0 G
  2802. ! W4 r9 ?: c% W* W: Q. {! x/ ^
  2803. ;==================================================1 G, p+ Y9 ?. n3 ?
  2804. ;IRQ处理
    + {* G$ r% ^0 a9 _- Z, a
  2805. IRQ_Process- H% m  s2 W( k$ h3 e( E
  2806. LDX <IRQ_Process_Index3 b$ H  ^$ F, X: \
  2807. LDA IRQ_Scanline_Data,X
    " F- T. Q7 v$ f# t$ ^! {; j
  2808. BNE IRQ_Process_Latch
      v' w& e2 p( s! K( z5 U
  2809. IRQ_Process_Disable;禁用IRQ8 n  z; s. m6 N7 f& y6 F  ?. F0 x0 p
  2810. STA MMC3_IRQ_DISABLE
    1 [% _6 N9 d( I
  2811. STA IRQ_Process_Index) q5 w; g9 A1 P: R9 a- Q2 w
  2812. BEQ IRQ_Process_Scroll& |7 P) J5 x. H) g7 X! T8 A
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    ! v! {8 B/ A+ h; y0 m0 t+ C
  2814. STA MMC3_IRQ_LATCH
    + i# z6 J9 M2 X
  2815. INC <IRQ_Process_Index$ m' G) n1 q9 J
  2816. IRQ_Process_Scroll;IRQ滚动控制
    " }# W* P2 B, ~
  2817. LDA IRQ_Scanline_Mode,X
    4 r2 J" f) |# j4 _6 t
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    1 I4 k$ p/ {  i; k$ Y1 X, ~" b
  2819. BEQ IRQ_Process_Scroll_Left1 l4 H& t) ]* a7 v: C" \+ B
  2820. CMP #IRQ_SCROLL_MODE_RIGHT7 A) |& |& L9 ~. a/ K
  2821. BEQ IRQ_Process_Scroll_Right
    ! {" e% R' E) u8 t
  2822. IRQ_Process_Scroll_Zero;不滚动' q! r% _+ V/ A- G! u
  2823. LDA #$003 C2 m  Y; f& i8 w
  2824. STA PPU_SCROLL0 ?9 z" A# y( d. K' i6 V
  2825. STA PPU_SCROLL
    # ~) x& ]0 K6 n4 Z
  2826. RTS9 S. [1 t- ?* _2 G8 i- ]8 a
  2827. IRQ_Process_Scroll_Left;向左滚动. ]! S/ H0 b* s( b1 V7 E+ ?) t9 d3 {1 T
  2828. LDA <Scroll_H! y; {$ ~: X: R7 K
  2829. STA PPU_SCROLL( }6 J! M6 q( |# ?/ u8 D
  2830. STA PPU_SCROLL+ p1 U- D& O* i" _2 y
  2831. RTS9 f% b% [) o; n: h# ~) F" m
  2832. IRQ_Process_Scroll_Right;向右滚动; E) t) F  Q3 A- e: \: Z4 {% U; r- ^; H
  2833. LDA #$00
    + D" m0 Y2 r$ [- Y2 a: c, B% \
  2834. SEC; b% Z' d2 `9 e6 u
  2835. SBC <Scroll_H1 |( g+ `" F4 I  E" n+ F: |
  2836. STA PPU_SCROLL9 K! D' p/ i# Q+ b# {% i
  2837. STA PPU_SCROLL
    : j# L# P- s& U' m* g+ a
  2838. RTS* e+ ?& M' ?* r; [9 S, Z" @

  2839. & f9 B0 |: z8 G! Y
  2840. ;==================================================
    8 W5 }. q6 U# \7 D
  2841. NmiProgram;Nmi中断处理
    0 w; n% D: v' E! o7 @. m
  2842. PHA
    $ D' F6 F5 I# X# u' I- x: J
  2843. TXA8 Y7 F  n! V" |% R
  2844. PHA
    6 Q2 U+ k& c5 W% R7 J
  2845. TYA
    % X8 L+ s% s' q' m7 n/ p9 ]1 x
  2846. PHA
    ; R1 l$ U0 L- Y, r1 W

  2847. ) H& f) W! |0 E
  2848. ;读取清除Vblank标志, 防止重复进入+ J/ B6 y8 A/ x. z1 k7 Z9 s' g
  2849. BIT PPU_STATUS9 Z4 G& ~9 W1 E4 [2 a4 Z  A" ~

  2850. 4 \8 j- r" D5 c6 y, b
  2851. ;切换主程序bank
    : F' c& d7 Q+ {& R* @! _
  2852. JSR Switch_Main_Bank" r, G/ M8 v2 o3 X0 G, }
  2853. ) ?" \/ o) t! ]
  2854. ;Nmi处理7 R5 w" j3 B4 X: }
  2855. JSR NmiProcess
    % g) J. j( a$ i) d' |: q6 K" E( t& {, r$ Z

  2856. $ B2 A3 p! b- W6 I/ S. h: }
  2857. Nmi_Proc_End
    7 R( q! Q) I2 j8 Y+ r% V
  2858. PLA
    1 V& H" J6 ]( e# S7 {+ z
  2859. TAY- U4 V" n$ T% j
  2860. PLA  y8 i4 w" N( P2 q, Y; h
  2861. TAX
    0 Z* }" @0 `9 v" x
  2862. PLA  [7 K* S5 I. Q- t0 C0 ?- H& x
  2863. RTI% v8 J( U) T& x, e3 \0 w

  2864. - r) z, z/ p$ h/ t2 ?
  2865. ;==================================================1 \) V/ G: o" R7 g- F# m9 V: M
  2866. ResetProgram;重置中断处理
    ' S- U6 ~) e7 z& v+ n! r
  2867. SEI
    ; M- F' ]! _; t( S! ], X$ N+ e8 a
  2868. CLD
    - I- `7 L$ E: n: l  I4 n
  2869. LDA #$00, {; |: `- }) O- U. c
  2870. STA PPU_CTRL8 J8 g: q3 R1 s" m# M' G
  2871. STA PPU_MASK
    4 v/ s" @; a( q

  2872. ' P0 u% j2 h: Z8 x
  2873. ;切换主程序bank
    % g- q: B: U8 G- Q0 A8 {" p
  2874. JSR Switch_Main_Bank0 x9 L; Q; C# C+ P+ h6 @! q( N

  2875. $ Q  {' ~% a/ g
  2876. ;程序处理开始
    % V* o4 C( w. I& h. I$ D
  2877. JMP ProgramBegin$ I) o& r( A( d
  2878. / C- W1 i' e  J
  2879. ;==================================================
    ( ]/ Z# T  @- n. h7 ]1 F7 i
  2880. IrqProgram;Irq中断处理
    : A' l) A/ h# O9 j
  2881. PHA0 X; y" p8 `8 C+ N. V
  2882. TXA! p) ~6 z  T* m1 q- q6 @
  2883. PHA
    + |* W9 K) r! w# L8 V* V* Q
  2884. TYA9 \7 t: _+ ?; [: s% N
  2885. PHA5 M8 u5 Y' ?7 X( p( L3 W
  2886. 9 `  K- `7 R. b7 x3 u2 u
  2887. ;关闭IRQ
    5 [- F+ c0 [9 y. d5 O# E9 m0 q2 o
  2888. STA MMC3_IRQ_DISABLE
    ' M+ C" f% \7 [5 E: L. v6 F

  2889. 2 i4 _9 z5 y/ w$ F1 U, x. t
  2890. ;允许下个IRQ触发
    / q) s, h* h% n; P1 L4 I/ t& |( j9 {' d
  2891. STA MMC3_IRQ_ENABLE' k1 W& |4 e# O
  2892. " ~) r( o/ C! ?9 y" N" G
  2893. .IF IRQ_SUBPROCESS_JMP
    % [8 E/ p/ M* M
  2894. / G1 I" Q; s" y. I4 x' o6 h
  2895. ;执行IRQ过程
    ' l, y1 Q3 j2 E3 z, G4 z
  2896. LDA <Data_L
    9 o5 N# k# I; {: p+ E, M1 ^
  2897. PHA
    ) d( B# Y1 {6 o4 F  S- W5 f0 @/ g
  2898. LDA <Data_H
    8 v+ K; Y0 w: `
  2899. PHA% D# y4 j* M5 W1 h& [9 g
  2900. LDA <IRQ_Process_Index
    3 C. ^$ [7 u5 W6 e8 P) j
  2901. ASL A" n% J) p: m2 W- d/ @5 P$ r
  2902. TAY
    $ m( i, H2 i& @
  2903. LDA IrqProcessAddr,Y$ x) C$ [3 s1 i7 J& A
  2904. STA <Data_L* F* ?( u+ I, D, u$ c
  2905. INY& c# E4 J1 F# N4 F3 I- I" q
  2906. LDA IrqProcessAddr,Y
    ! @0 U  ]# I% }! ^3 l) O
  2907. STA <Data_H$ J3 r2 C& j- f3 W
  2908. JMP [Data_L]
    $ a1 ?) A9 |: m

  2909.   U" n- _7 y. V8 X) f3 h
  2910. .ELSE1 a+ |5 I1 s" f6 ]) H: c

  2911. : e" n/ q( P# ~/ Z7 a
  2912. JSR IRQ_Process* n6 m! L3 P+ t& B( U  v- P6 _

  2913. 9 K% Q! c# Q% K4 L# K
  2914. .ENDIF
    2 _0 o% H" f" R; M. K
  2915. " G- j6 t- O* N2 b9 b$ B  d
  2916. IrqProgramEnd& @' U. y2 |5 z; ^
  2917. .IF IRQ_SUBPROCESS_JMP7 w( e% Y. w0 P4 c( ?
  2918. PLA" O, G  D/ b* W: H; l& o
  2919. STA <Data_H7 G, ?& C5 Q% V! b9 Y6 r2 z, H
  2920. PLA
    6 }) I5 U0 u* K8 I7 R
  2921. STA <Data_L* m! s8 t5 p- g: @/ @1 l
  2922. .ENDIF. e5 m5 `; O% ^" S
  2923. PLA
    ' o  N+ J1 Z$ U8 Q' E/ p
  2924. TAY# K' S& F1 M5 m9 i- Y9 g- W
  2925. PLA2 ^/ ?3 K; v2 v2 u  c* F- y9 `
  2926. TAX5 [! l% [8 J5 E* d# i
  2927. PLA1 E1 r/ e- C" S9 d4 C! d( O5 R8 `
  2928. RTI
    ' ~; A+ H: {/ a: G: t

  2929. # a3 W2 f/ h% l3 v8 g5 |% d6 `
  2930. .ORG $FFFA0 ^# `7 w7 U" ~! P- J+ c$ u6 a) f2 l
  2931. .WORD NmiProgram9 \% U/ T+ P' M% B& I& f
  2932. .WORD ResetProgram% @6 s* @/ I- i# b3 R
  2933. .WORD IrqProgram
    & c, q3 S* v+ [6 s1 g" d
  2934. ; I' f8 G  f7 z  C. L
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    - X% a( c! s$ j
  2936. .IF SOUND_BAR_SHOW_ENABLE1 u# I( {  n+ ]6 l$ W4 q

  2937. ! C" Q7 A. t2 Q8 ~' ?" Q
  2938. .ORG $FE00
    % O) c) W* Y2 L
  2939. PHA
    ' ^! _+ q) i/ E8 P+ T6 e
  2940. STY $07BA. [6 ]+ T5 p& k  V" b
  2941. LDA #$8D& f9 d, T; e4 H, P
  2942. STA $07BC
    + F4 H7 A- r3 _+ t% Q: q4 S9 }* z
  2943. TYA( k/ M/ r8 R1 {- T4 g
  2944. CLC4 e. P' G2 j9 v. T$ M$ N
  2945. ADC #LOW(Sound_Bar). C8 _* n/ D; {7 A
  2946. STA $07BD, i2 [$ T' q8 p+ g3 ]- W- X
  2947. LDA #HIGH(Sound_Bar)
    8 D+ q2 g9 q) c. {, ~: q% l
  2948. STA $07BE, ]# A( j6 F) Z) h2 z; h% T
  2949. LDA #$60
      ?1 l/ F3 G' s! c& n7 M7 E5 f* Y) q
  2950. STA $07BF
    , R, \% f: V0 R$ ?
  2951. PLA) s, ?! _; d4 n) l9 H
  2952. RTS7 s0 e9 I  O5 O7 w2 y5 P& A' S2 ]
  2953. 5 ^% o4 c' l) G4 x
  2954. .ORG $FE20
    . \. |9 X4 y. c
  2955. STA $07BA/ P: D' w* U# H! G2 K8 t, C9 N9 F# U3 c
  2956. CLC
    & j) w' L/ o' S: A
  2957. ADC #LOW(Sound_Bar)
    ' b0 L& b% L$ Q9 S5 q
  2958. STA $07BD+ ?7 X3 \" x: v9 Y0 X! q/ W, I2 R
  2959. LDA #$8D! ?* G! L$ ?( L7 H8 ~6 C; B& L
  2960. STA $07BC1 `! p8 z2 G9 `( m9 ~
  2961. LDA #HIGH(Sound_Bar)% W) p( X+ {+ I0 @. A4 ~- o; C4 `
  2962. STA $07BE
    . L( M: l6 }( s5 X
  2963. LDA #$60
    $ g# K' j0 [3 o- b1 P" n
  2964. STA $07BF- e+ e  @5 o  o7 o$ ^
  2965. RTS
    9 o8 ?( G: H: X) R  A/ k1 E

  2966. " P# `2 e9 X2 e; w+ W0 r
  2967. .ORG $FE40( y; z1 M) X3 m& [
  2968. PHA
    4 v- L: t/ o9 c
  2969. STY $07F1- J0 |% |+ `) \& W# V
  2970. LDA #$8D
    # |0 B9 S% K2 s3 j2 g: U- y$ t
  2971. STA $07F36 [9 L6 e$ r6 [+ W" `
  2972. TYA
    , K; o" m2 T, x4 \- T9 z
  2973. CLC
    / w& ?1 |. x4 \) r8 I
  2974. ADC #LOW(Sound_Bar)7 \) D' Z) w7 o9 V5 b+ m1 A, t
  2975. STA $07F4: l! a' s; y5 A+ ?# M1 q
  2976. LDA #HIGH(Sound_Bar)0 n  W: t& R$ B' b$ D8 A- ~9 E0 c
  2977. STA $07F5
    8 |6 R* j3 E7 b3 J6 n5 I* E
  2978. LDA #$60
    " _+ v" e' J: V4 o4 y& b) |
  2979. STA $07F6
    8 c# H+ [) x, L
  2980. PLA
      Z, N2 ?- I9 b/ c$ |
  2981. RTS3 T+ _# U! x; p, a
  2982. $ F  ^/ R' F/ L2 h( ~
  2983. .ORG $FE60
    8 q" T' d5 }+ i; }# K& E" t, i
  2984. STA $07F1
    2 s. v- \, ^+ U# A
  2985. CLC
    ( ]- m+ a7 x. b+ L
  2986. ADC #LOW(Sound_Bar)
    ) q2 v- f8 w" D1 `' e; [
  2987. STA $07F4
    % o/ i* ?4 B( u' V) s  U" f: v
  2988. LDA #$8D
    ; s% ]5 e5 d/ k; x9 e, J$ j1 b
  2989. STA $07F3
    / K3 ^" r5 g+ O; x9 R- u% j' P
  2990. LDA #HIGH(Sound_Bar)
    / R6 y* {4 Y9 q" R
  2991. STA $07F5! g2 C4 ]9 d' Y$ G6 t; ~  E7 m
  2992. LDA #$60/ R& y$ t- d" y% T3 z1 `, }
  2993. STA $07F6
    $ x8 S/ ~: w# b
  2994. RTS
    2 C2 ]' s; G( o8 j$ `

  2995. ; z, X: C! N5 W3 d$ X- M* z1 J
  2996. .ORG $FF40% t& b5 k% p; C; |
  2997. STA $4000
    5 e( h9 P( {: C
  2998. STA Sound_Bar + $00
    ) r+ s6 |5 ]3 v
  2999. RTS
    3 @  L& e9 x3 n1 O' D
  3000. ' h! R# Y# T& e+ A3 q
  3001. .ORG $FF48
    % c& ~) A5 l0 n6 p
  3002. STA $40041 z* h* \% c. J, U
  3003. STA Sound_Bar + $040 P) {5 v) T: k; W$ p. a
  3004. RTS- r" {% v  m- B# l: b! S9 P

  3005. 4 {0 z# K2 }% K/ K$ v* F
  3006. .ORG $FF507 o- _: |- Z+ B1 a
  3007. STA $4008
    ; @9 B/ ]+ ^( j. Q! a
  3008. STA Sound_Bar + $08
    . Z. }; J. g' \7 x" s8 D! W+ o  r
  3009. RTS4 _/ q, I; j  {' x& n" k- r
  3010. ! b9 E  r, }6 t: _$ N+ H6 g$ `
  3011. .ORG $FF58
    9 f# h4 i: K5 n& J/ Y* ?; L
  3012. STA $400C
    4 b. B" V  l& L3 H9 X/ q8 B
  3013. STA Sound_Bar + $0C9 c- L: B2 [! ?. M7 z
  3014. RTS
    ! e1 B6 A2 w3 r  o. ]/ P
  3015. * H9 p: \3 F# O4 y3 {; z# v
  3016. .ORG $FF609 P- N( w# n2 p: v
  3017. STX $4000
    4 m9 _: ~6 u2 Q0 E2 b
  3018. STX Sound_Bar + $00
    $ u) \( c+ k% ^5 d
  3019. RTS5 S8 G2 n2 t7 n
  3020. : L1 m/ d; y9 V: g6 ^
  3021. .ORG $FF68
    - y. d; U: I! I
  3022. STX $4004& d- O- P: V' O* H
  3023. STX Sound_Bar + $048 \) E" V. j) t% ?0 }4 A
  3024. RTS
    " ~. k' D5 B5 q; |* s5 X8 [
  3025. 5 R/ \% N, F" }* S5 w
  3026. .ORG $FF70
    : c- _: d5 g/ L. k
  3027. STX $4008
    / v; i& e6 w( L  q9 d
  3028. STX Sound_Bar + $089 T( H" V) I/ J! |
  3029. RTS
    8 P& D- `( ]+ e9 g3 h9 T
  3030. : k. E- O* {2 |$ L
  3031. .ORG $FF78
    1 O  L$ T& `. o" Y7 w, G
  3032. STX $400C% B0 }( g/ |  V$ a, d+ ]
  3033. STX Sound_Bar + $0C0 O' M* b& J, l: n
  3034. RTS
    # I9 i8 R! \8 j6 U5 X  K+ C" H6 V
  3035.   o6 S1 g$ m4 R/ t8 h
  3036. .ORG $FF80
    3 {( X, n5 z3 {0 t* J
  3037. STY $40009 ~$ X7 G/ [# O; L& V; y
  3038. STY Sound_Bar + $00
    * p6 l# O/ n1 K7 I( U# I
  3039. RTS; v5 b. `" I+ q, c: r

  3040. * D/ S* b* I7 o: Z/ y
  3041. .ORG $FF88+ N) M; q1 @" ]$ y; D8 x' V
  3042. STY $4004
    / D* Y- Y+ ]. ?& L" A" E) r4 [
  3043. STY Sound_Bar + $04
    3 ^% ?9 M+ t  o
  3044. RTS
    1 ^, C2 d# N9 p" x+ H/ F
  3045. # }; W1 V3 H4 z- ?& }
  3046. .ORG $FF90( X# h# D2 w2 X! H: B
  3047. STY $4008
    : N  v5 u; j- X% e( A
  3048. STY Sound_Bar + $08$ ]+ s* u; B/ D7 a/ }) b/ I7 T2 Y0 Z
  3049. RTS# s1 X" m% s- a8 k2 C+ r

  3050. , p. V0 E9 T% Z. X) v
  3051. .ORG $FF98
    ) O0 R7 ]3 ?* T. g
  3052. STY $400C
    % M% T& A% s- D9 O7 j0 T  K
  3053. STY Sound_Bar + $0C$ d& O/ H; o) K- H% }  c
  3054. RTS6 B' Z- n2 p- l, ~

  3055. ) o6 [( R1 x- _+ E
  3056. .ORG $FFA0
    . \! I" p' @8 M" D5 ?" C1 c
  3057. STA $4000,X* V) }9 _+ n1 R
  3058. STA Sound_Bar + $00,X! o% }2 f! ?5 b) K
  3059. RTS# k) |4 v0 p/ S

  3060. ) r! t, Y, Q9 S( |3 ?
  3061. .ORG $FFA8) z% C0 M# \, C8 j
  3062. STA $4000,Y
    4 M% N0 E- w; E! c/ o; o- L
  3063. STA Sound_Bar + $00,Y
    + U3 u. }6 _. E5 W
  3064. RTS
    ; p5 M' Q0 [1 o' A3 G5 q4 B5 V
  3065. / x7 l% E0 e6 `5 X
  3066. .ORG $FFB0
    * j: n' y6 Y$ d- H
  3067. STA $4004,X
      Z6 }' c" }! _5 {7 q7 P
  3068. STA Sound_Bar + $04,X
    + P4 @0 B( ]1 X  i* H
  3069. RTS( L) U* P. x' ?9 J* ^; M9 P
  3070. 9 a+ y3 Q9 D0 f0 r# ?
  3071. .ORG $FFB84 k$ z4 e3 D4 f4 Z5 @
  3072. STA $4004,Y8 Z8 U7 U9 d/ f" \! u) z5 i4 U8 A7 s
  3073. STA Sound_Bar + $04,Y
    / n4 r% O% ~! e8 r: E7 D0 M
  3074. RTS, _  E# I, j; N! F' a* S' q

  3075. ) Q1 X0 G6 r* e4 J) k3 S$ d3 H
  3076. .ORG $FFC0
    / U9 \  m& D/ X+ D, }+ T
  3077. STA $4008,X+ u6 O1 K. R, o- N" n- C
  3078. STA Sound_Bar + $08,X
    3 W% I$ d% N& m  `, a6 ?+ m
  3079. RTS1 ^$ ~7 a. o0 z
  3080. $ H8 p7 P  N6 a! p
  3081. .ORG $FFC85 s9 e& k' e: v5 n( ^5 c
  3082. STA $4008,Y
    - i( f- _$ Y' B5 N' i- I
  3083. STA Sound_Bar + $08,Y8 O. M4 {& X0 P1 r" \$ {
  3084. RTS: X$ w& [  y- Y3 n6 S8 i
  3085. 3 k7 p5 w; l5 f0 e( |2 b/ C
  3086. .ORG $FFD0
    7 n( f- Y) E3 G! h# U. _- I
  3087. STA $400C,X
    $ ~# Y- ^) B  |  {+ v$ ]
  3088. STA Sound_Bar + $0C,X
    ' L3 \, N* l+ W' n, W) j, H6 e! f
  3089. RTS$ a. \0 B0 u9 Z! U
  3090. 1 g0 p& x4 p2 x5 \7 j- Z8 J& m
  3091. .ORG $FFD8* E# }6 O- M  ~4 `. f- M
  3092. STA $400C,Y
    + @* @) f- n- _
  3093. STA Sound_Bar + $0C,Y8 ]8 j. Q0 |0 r# R! ]  ?# d
  3094. RTS
    & ]) N' i. W" E7 C- ?+ W" q8 u& a
  3095. 3 Y9 [* w+ L$ V: \! c6 J
  3096. .ENDIF+ V( k' I4 t9 a% m
复制代码

6 a& H- l' L4 z( K( x- Q* q" p
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3264 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-20 02:09 , Processed in 1.127930 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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