EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
4 x5 }: O- |, K2 w% F, Y+ Z( x+ {! @0 X& a1 R+ f8 S4 K. G
[FC][音乐12 IN 1]4 G$ ~- d0 C4 M5 n: i# `4 v
时间: 2023.07.23
( F& s- u2 ~8 x" X6 ?8 C作者: FlameCyclone
1 q; N- m1 y. a) f- B. [: L2 U( u7 m& d9 o! y
收录音乐内容:, S3 B1 M7 Z7 b4 e5 ?4 x
1.Raf世界
9 ?4 Y: a. A0 W  B7 ~5 Q2.最终任务
% F" s8 B4 ~) R& s3.赤影战士' l0 h; s, H! Y4 I2 g
4.双截龙
3 W1 \- p/ R2 b/ @: j0 Y& H, B5.双截龙22 E- H  S4 r* {& W/ R
6.双截龙3
* f3 l+ A# `! F1 a7 r7.洛克人  e/ v; g  j' q- l
8.洛克人2
% o4 \, y9 b, Z5 `: n7 N4 A: A9 K9.洛克人38 C7 w6 P* w+ j1 C2 y5 m
10.洛克人4  {; }) B; ?% F7 Y* }
11.洛克人5. U/ k: c( ]" |# N7 w+ s
12.洛克人6
3 H8 e1 h3 D) h, E4 V3 V% C3 U; D& N1 V+ \- P3 ]9 E) ~
操作:
. b5 p! ^5 Z7 e  R3 w3 Z( f* E6 @上键:         上一个专辑
  g; I$ E8 I2 ~; f. g5 f下键:         下一个专辑5 \6 u2 R! K/ Y/ l% Z$ b
左键:         上一曲
4 F+ @% ~6 C/ G; ^/ ]2 V, H+ x右键:         下一曲: J$ ]! s$ G' T
B/A键:        前10曲/后10曲
. g- o, d9 A, C6 R* @3 |  I选择键:       下一页4 m3 N3 [& L3 w) j6 j
开始键:       停止/播放6 X0 r+ X' S' g* [8 ^
- O& G& f. ?/ F! k3 W- N1 i: l
http://flamecyclone.ysepan.com/
& O1 y7 ?( R0 d; N& {  ^2 {6 z" ^! P: y$ z& k
' g8 S3 S+ Z9 o, g' I0 o5 A! p
) M+ H2 D9 N& n2 V
/ g  S, F# b4 `3 F1 k+ F
  1. ;[FC音乐][播放器模板]
    ; ~1 ~7 I" l4 `/ E2 d5 j
  2. ;FlameCyclone 20230710
    ! p1 C$ Q  ^% y% h1 Q. I( C. o6 P2 y

  3. 4 b& O0 i% Q+ W' X( {" D
  4. ;文件头
    : k% y+ ~" n! I; W0 J
  5. ;======================================================================
      z& Q3 O( o, {, v
  6. .INESPRG 16                                             ;16KB PRG 数量
    , L0 c% l& u  r+ r1 n( P3 E
  7. .INESCHR 1                                               ;8KB CHR 数量8 a6 D7 v* ^; [: t. `8 e/ p
  8. .INESMAP 4                                                   ;mapper 4, b% u' A1 r2 ~9 V& X: n2 L+ \( |
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    : F( H, b; G$ Z- ], i! S( I
  10. + j" I; q( |+ k( n* n/ H
  11. ;==================================================
    ! T% ^. g3 F" [1 K
  12. SOUND_BAR_SHOW_ENABLE       = 1
    1 Z+ G1 C# o& S* L0 A# E( {
  13. ;==================================================
    : m7 ~# T* e, r5 i" z: V
  14. BANK_DATA_MASK              = $1F* ]# G1 a. b9 I4 c" R3 v' ^
  15. CHR_RAM_ENABLE              = 0$ n- j5 X* s5 I$ r( r8 v  ~5 e
  16. IRQ_SCANLINE                = 136
    * P9 C9 R0 C, Z8 Q
  17. ;==================================================: R8 V5 r# U- S( W( x  p2 O
  18. SOUND_DATA_BANK_00          = $00  O( r( U9 k& O6 J" u6 a
  19. SOUND_DATA_BANK_01          = $01
    + Q: S' n. _+ t5 p
  20. SOUND_DATA_BANK_02          = $02& h$ X0 C  u8 x1 G' {/ g: ]% _7 D
  21. SOUND_DATA_BANK_03          = $03) g# F$ u" v- i
  22. SOUND_DATA_BANK_04          = $04
    8 s7 ]8 x9 p! F" S  [! ?
  23. SOUND_DATA_BANK_05          = $05+ K* s* T- P$ B( X7 S! b7 I& P3 h# r
  24. SOUND_DATA_BANK_06          = $06
    ; }4 i6 h) {9 O
  25. SOUND_DATA_BANK_07          = $07: J6 P' N: C) H8 f- d
  26. SOUND_DATA_BANK_08          = $08
    - g8 c% y  G, s- q: g
  27. SOUND_DATA_BANK_09          = $09
    9 C' D/ p0 @+ |, _1 `
  28. SOUND_DATA_BANK_0A          = $0A
    ( w* h! D, U5 U* D# E7 B
  29. SOUND_DATA_BANK_0B          = $0B
    . s  K+ B4 p/ \( X, R  B+ y
  30. SOUND_DATA_BANK_0C          = $0C
    / g- h5 k$ t5 d  s
  31. SOUND_DATA_BANK_0D          = $0D1 v! Z' E8 f* `4 D- U- x* X9 ?
  32. SOUND_DATA_BANK_0E          = $0E  c/ `: w/ N& N4 G, w
  33. SOUND_DATA_BANK_0F          = $0F
    8 z# E: g0 z/ J4 @" |

  34. 5 M' c. W+ m; N7 b$ L
  35. SOUND_DATA_BANK_10          = $10& {, h1 M8 u- R
  36. SOUND_DATA_BANK_11          = $11- Z; U% }# B2 x; X1 T0 e/ ?4 j- m# x
  37. SOUND_DATA_BANK_12          = $12
    / O: f% W% s: M" a& Q# J
  38. SOUND_DATA_BANK_13          = $13
    9 `( U2 [5 w# v9 p8 Q) T7 G
  39. SOUND_DATA_BANK_14          = $14
    ; S3 p1 W" W' v
  40. SOUND_DATA_BANK_15          = $15) E9 }4 D3 K% `7 d; m5 k0 ?
  41. SOUND_DATA_BANK_16          = $16
    7 Q/ c; O/ M% q- C- M
  42. SOUND_DATA_BANK_17          = $174 j& _$ P3 u1 J& N; |
  43. SOUND_DATA_BANK_18          = $18
    + C, q/ m( m. N* e- {( J
  44. SOUND_DATA_BANK_19          = $19
    " s" h- J% g, l. o7 n
  45. SOUND_DATA_BANK_1A          = $1A3 a- o. D  R& }4 B  C
  46. SOUND_DATA_BANK_1B          = $1B/ k. l5 J$ k( H- J) x
  47. SOUND_DATA_BANK_1C          = $1C9 \1 c! z! l9 R6 S+ o, d- I2 M! O. l9 W
  48. SOUND_DATA_BANK_1D          = $1D
    7 o; S+ ?, a8 O! r

  49. 4 ?0 N7 P. U) e
  50. SOUND_DATA_BANK_C000        = $1E% k) C, {# ~) V0 k
  51. SOUND_DATA_BANK_E000        = $1F
    8 g' v. P* _; }3 C% r& w5 Z
  52. ;-------------------------------------------------$ t2 k! B  e0 u% d& m/ U
  53. CHR_DATA_BANK               = $20+ Q+ g% m8 a2 b# T7 O
  54. CHR_DATA_ADDR               = $A000) Z9 q8 S, z# r
  55. ;-------------------------------------------------' {) ]3 w' K) h4 {- B( K: Z5 c# S
  56. PROGRAM_BANK                = $00
    . H! Y+ T' D- J
  57. PROGRAM_ADDR                = $8000
    0 ?, c' V9 }7 @; c- w( J
  58. ;-------------------------------------------------5 @0 Z) o" M! V6 X. f4 w( O
  59. RESET_BANK                  = $1F
    % J  A( {' r3 a# ]
  60. RESET_ADDR                  = $FD00" |0 O7 `: a. \: x$ m
  61. " U! _& _2 C% I( \$ M! [
  62. ;==================================================
    7 R# f7 W& p6 t0 C( q
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    2 h0 b' z) J. V) `* o: J5 N/ {& N; U
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引- D: O' }  _9 G3 m' D$ m
  65. PAGE_SIZE           = 5                     ;每页节目数
    & @9 O3 N+ B: L6 }! K$ M$ F
  66. - z6 g3 ^! v3 B6 d5 d* [. V& X
  67. ;==================================================
    / d% G! J7 A$ F& A
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除" R/ h; U7 [" f% {  i  g- z' B/ }
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    5 N' B2 O! E+ d- m2 s
  70. .ELSE" a- L# c# e# B' E
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    4 W6 j0 n3 _9 J  r5 h+ s
  72. .ENDIF$ Q6 Q* Z' B) l7 A4 v0 C0 T

  73. $ L. G( ^( b) e, Q. b
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引  n) k8 ^0 P2 w7 ], M1 R1 r
  75. , Q& N# \  F$ f+ Y: k+ R
  76. ;==================================================
    % x" R6 z- b% W0 h; m
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    & ~! G( l8 ~& g/ i; d2 \9 |
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 23 Q% K  k  Y! H1 c3 `; b4 A
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    ! I* j$ o) a  s7 @' r/ Y
  80. ;==================================================
    # B8 e$ Z% Z6 B$ V* |3 i5 q
  81. Caption_Text_Pos    = $204D ;标题文本位置
    # V. q) v5 h- [4 P- @9 H/ P& |" l
  82. Author_Text_Pos     = $2324 ;作者文本位置
    , f8 `8 @  V, ^3 A1 p; `
  83. Date_Text_Pos       = $236B ;日期文本位置
    / _) i. r: f0 {8 w* R
  84. ;------------------------------
    ) h! s& ~) X$ t
  85. ;------------------------------
    9 M$ h+ Z; l% U& z8 L
  86. .IF SOUND_BAR_SHOW_ENABLE3 E3 E2 j1 n3 `' ^( ~) x8 ^# i* Z
  87. 2 ~" O/ _+ _- }! r8 w  x) A  F
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    1 _4 o) ?$ o' Z; D) C
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    1 B4 u: K9 w" P
  90. Play_State_Pos      = $22F3 ;播放状态位置% z- E3 ^# y2 p, E2 ^- i* f

  91. & S7 l- q8 c% i: B7 [
  92. .ELSE. w( B; F0 s* p3 J8 J9 }6 Z

  93. 7 m/ [% j8 f8 S
  94. Play_Index_Pos      = $226C ;当前曲目位置
    9 P( f. q! c5 s  g# C
  95. Play_Time_Pos       = $22AC ;播放时间位置
    . I: a+ ~8 D1 H
  96. Play_State_Pos      = $22EC ;播放状态位置3 _  ?& E* T% _: D; C

  97. $ F1 W0 k  _# Q
  98. .ENDIF8 A9 u' O/ _" v
  99. ;------------------------------
    8 s7 {$ v9 C' d$ E2 C$ y
  100. Track_Name_Pos      = $222B ;曲目文本位置. t5 z" `( `  H0 @
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    . ?1 \# m$ r% {- r7 X: ~1 ~7 u
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    ) O; p1 G4 \! Q6 T
  103. Sound_Bar_Pos       = $2269 ;音乐条位置8 G! n0 y8 w5 O! ~/ q+ S
  104. ;==================================================/ p$ w2 `# Y3 w( V$ B
  105. Scroll_X = $009 |# J( B* R; v8 k* F2 l! `) H9 J
  106. Scroll_Y = $00
    - p: \" }6 c4 L; }& ~" B
  107. ;==================================================
    $ L  f1 \) K- {, H1 H6 W2 y
  108. Sound_Ram_Addr_1       = $0100
    ( T" S- Y" t( h8 w
  109. Sound_Ram_Addr_1_Size  = $80
    1 U# i) W" f& V: o2 X' N& M& t
  110. Sound_Ram_Addr_2       = $0090- u7 f, d; u9 W. T2 Z$ k/ h! @7 |/ }
  111. Sound_Ram_Addr_2_Size  = $70
    9 L* s5 u; f( W  R4 Q* ^
  112. Sound_Ram_Addr_3       = $0700: q: R' E& @* N9 L8 V
  113. Sound_Ram_Addr_3_Size  = $00/ b6 t) a$ s  ~2 @; H
  114. Sound_Ram_Addr_4       = $0400
    0 D$ e+ Z& p9 @8 H& z( W
  115. Sound_Ram_Addr_4_Size  = $00% H5 y: ^) v, {+ f5 t
  116. Sound_Ram_Addr_5       = $0500
    # o; m" L) A  C8 M! e
  117. Sound_Ram_Addr_5_Size  = $40  B1 l/ Q5 |' D6 s
  118. 8 ~* m5 R/ ]4 X7 w- c' t: h, ~
  119. OAM_TEMP_ADDR   = $0300
    2 c% p* F2 H2 Q

  120.   r9 n# R' {8 q* E* a) T3 H
  121. ;==================================================
    0 c, R! v, x" p  n7 l
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    9 M# K& _- {& p# u3 F
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    ! ~4 E' _9 m. c- [4 m( R$ @
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    # Z6 ^: v5 M6 @0 P$ w% X; ^) v
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加19 C' l8 X+ H: n" k( t
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1$ Y% Q" L0 x! y* B+ E, H4 U" j* g
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 3 a! a! s/ i) C9 \: \' \
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    ( @" ^# [; g9 E1 o
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 6 N$ l. v: P4 F# ^5 d% G0 y
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    + V/ N( U: H; _' c! V$ s' _
  131. APU_STATUS              =   $4015   ;声音通道切换
    9 `6 z: L! S. I8 D& Q
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    & e1 [- I6 o3 N, _/ r
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通* g8 V% [+ _% d, y
  134. ;==================================================% |6 A  G) ^' b; X% Z6 i" h
  135. MMC3_BANK_CTRL          =   $8000
    , D7 F. W0 y/ {  P
  136. MMC3_BANK_DATA          =   $8001
    " I3 k) {- ^$ n8 Z0 X# I; s: n
  137. MMC3_MIRRORING          =   $A000; I6 S+ c* ~3 I; h) ?
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    ) Y! S/ M) Z5 E. B) _5 v
  139. MMC3_IRQ_LATCH          =   $C000
    ; ?4 @/ I! l! }: {. [1 x& z5 F% p
  140. MMC3_IRQ_RELOAD         =   $C001
    9 n) k2 L' c& I3 I' L8 q
  141. MMC3_IRQ_DISABLE        =   $E0007 g# z" r/ z8 n
  142. MMC3_IRQ_ENABLE         =   $E0018 q1 B. L" B' U$ k' e/ _
  143. ; B0 X7 E8 q+ h$ {: N
  144. ;==================================================
    5 y- Y+ i/ e" T9 \5 p0 k
  145. PPU_Addr        = $0200
    4 K; {: X- b5 ^9 Z4 P; {( [: _+ b* e
  146. Palette_Addr    = $02C06 v" }5 ?- F, C0 H$ ~3 w
  147. Sound_Bar       = PPU_Addr+$E0
    $ D3 `8 W/ d- f' u5 k: y' |6 G
  148. ;==================================================! p) N3 \) K2 R* s9 o6 O  U8 e
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    # B( `) l- B  F" p
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11( w+ s* I* Q: i6 c
  151. PALETTE_UPDATE_MAX      = $2C
    1 a5 @- R* J$ G" s! p3 Y/ R+ h
  152. PALETTE_UPDATE_MIN      = $21# G& p: s- G9 p, H, M) b( j$ j
  153. PALETTE_UPDATE_INTERVAL = 60% E& g8 Q9 A# ]" q
  154. ;==================================================# {0 e# A! f4 ^) @0 M
  155. Sound_Bar_Cnt       = PPU_Addr+$F0% ~" [' v) T" b2 J
  156. PPU_Cur             = Sound_Bar_Cnt+$029 h9 ~6 E. N" b' z/ V9 S5 o4 @
  157. PPU_Addr_H          = PPU_Cur+$037 e$ u% N) s, |$ ?5 P0 r( M- C) s* e: J. _& A
  158. PPU_Addr_L          = PPU_Addr_H+$043 q6 q7 m5 _1 }) ~! q
  159. Screen_Ctrl         = PPU_Addr_L+$01: m( ?) R& V# P# K
  160. Screen_State        = Screen_Ctrl+$019 M) h* Q5 u- c) k5 R
  161. ;==================================================  x  x0 }- d# I  J6 K
  162. Use_Ram_Begin       = $50
    * P+ D0 M3 Y3 _& W; D8 ~8 i
  163. ;==================================================% F8 ~% `# h2 z* [* T
  164. JSR_Addr_Op         = Use_Ram_Begin# g, a/ F, u4 k& {6 O% f
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    9 e& J8 ~& Q) |' M( v, l
  166. JSR_Addr_H          = JSR_Addr_L + $01
    / y& `( a4 Z; p+ j3 B+ [7 ~) K! ], d
  167. JSR_Addr_Rts        = JSR_Addr_H + $011 m+ K+ ?" I5 \0 T
  168. Data_L              = JSR_Addr_Rts + $01
    * O  J) }5 k" t4 E4 x' `' P
  169. Data_H              = Data_L + $012 L3 }* J5 L. }
  170. Data_Cnt            = Data_H + $01- d; [& O" Q+ X8 U0 @
  171. Data_Buf            = Data_Cnt + $01! C+ _! |. L% h4 y6 A
  172. Nmi_Time_Count      = Data_Buf + $01( D$ \: Y% \6 i8 k
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    & R8 Q0 E8 o- r0 g& w$ G* _
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    - ^3 k7 G- }* b$ k$ W" r0 O7 t

  175. $ g; V& o9 c9 X
  176. ;调色板刷新标志
    & A& m1 S1 {* K% S1 Y$ Z/ Z
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    # {* ~! L! ?* i  t, _" |* h% ^# m
  178. & L/ k5 z! O6 u5 w% j7 Q; w' p: K
  179. ;当前帧文本写入禁用标志
    ( l& Z, `# T' Y9 \
  180. Text_Disable_Flag   = Palette_Update_Flag + $012 b7 X% h3 `9 T& r
  181. 2 g- I  X: \+ d  k6 E, ?  ?  l+ a) J# ~
  182. ;==================================================
    % A& p$ R2 U4 T; y6 l( |
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    3 e% ]: T6 h! A/ R! ^
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    ) u1 O! @, ?9 U9 ~5 B, V" }  t5 s
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间% Q1 N( K# z0 i; R# `! ~$ Q4 c
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间- v% U4 F* P+ J
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间  g! c# x$ i* {( z5 O
  188. ;==================================================
    4 H9 [2 t( o4 S( e; {  a- E1 A
  189. Key_Keep            = Text_Disable_Flag + 1
    9 J! r, i( M: R0 G: E) |1 E7 _. P
  190. Key_Once            = Key_Keep + $01$ |: P6 E4 E) w; w3 W) H" {" D
  191. Key_Kemp            = Key_Once + $01
    5 u. z- B7 q1 A$ {8 [; h* P
  192. Key_Temp            = Key_Kemp + $01
    4 @- Z# ]% |0 T5 T8 j# D$ n
  193. Key_Getv            = Key_Temp + $01
    $ B9 @7 ~- V* r
  194. ;==================================================- a5 t( s- {  B  b* }* ^, P9 B9 \
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    ) O% X: a8 Z2 {7 ?9 f9 s
  196. Music_Item_Last     = Music_Item_Cur + $01+ l6 V; X" o& [! {' B
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    , Q% N/ D- N& Z$ l' x
  198. Music_Cur           = Music_Total + $01  ;当前曲目( J  _" q: M; ~; _, Y
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    . Q1 o8 V- t" ~3 o! M- h2 J+ s. ?9 q
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态2 F! ^3 Q+ p2 G. {& s) U
  201. ;==================================================; F6 O& ^" m* R* i
  202. HEX_Data            = Music_Stop_State + $017 ], J  m5 c4 m" \& A; Z
  203. DEC_H               = HEX_Data + $01
    & K1 [* d! L& Q' }$ j5 |: ?4 ^+ B7 Y
  204. DEC_T               = DEC_H + $01
    1 M- F, D; k  Y5 u/ c* n8 M
  205. DEC_L               = DEC_T + $01
    & y* r8 j9 Z( x0 ~% b; |$ A
  206. ;==================================================
    " P3 Y4 b' F! n: {6 T# c
  207. Time_S              = DEC_L + $01
    9 x+ w' s5 |$ Y8 J4 }! L  n
  208. Time_M              = Time_S + $01* W7 k7 e8 P) w
  209. Time_H              = Time_M + $02
    * |8 ~0 G$ O; T: |' k
  210. Time_Cnt            = Time_H + $034 O/ n( c) R+ c" P- Y7 u
  211. ; V6 _1 j/ b' B5 @0 A% x
  212. ;==================================================
    # M2 G, e- U" j
  213. Music_Bank_8000     = Time_Cnt + 1
    / T; D/ w3 u' C7 C; K$ }
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    : M  y4 J% V) f9 ^3 P1 w7 ?! H
  215. ;==================================================" I  w, W2 ~7 @+ S- r( z) Z
  216. Scroll_H            = Music_Bank_A000 + 1( F  R# K1 V5 N5 @$ I% {0 @# t
  217. Scroll_V            = Scroll_H + 10 m* u. b: W/ p% H5 |  k
  218. IRQ_Process_Index   = Scroll_V + 1
    ! u3 G; T  I9 A6 n3 Y3 j$ Z$ ?+ H
  219. ;--------------------------------------------------) E( s1 i8 }) X) d
  220. Page_Cur            = IRQ_Process_Index + $012 a5 X' e, L( v- |3 s2 }% r
  221. Page_Cur_Index      = Page_Cur + $01
    7 L/ C  j- p/ \+ q
  222. Page_Cur_Cnt        = Page_Cur_Index + $01' `2 ~) a9 k4 T
  223. Page_Last           = Page_Cur_Cnt + $01
    & W/ N" t' I! w
  224. Page_Last_Index     = Page_Last + $01
    ' U! m$ [5 W, b
  225. Page_Last_Cnt       = Page_Last_Index + $01
    : Q  ]# h& o# n8 Y+ U+ T6 q# p
  226. Use_Ram_End         = Page_Last_Cnt + $01
    3 L4 h3 V# \9 Z
  227. ;======================================================================- g& L- x9 T1 V, P; X; E1 @& E/ t
  228. ;音乐数据块
    " u& ^4 j( H& J. t
  229. 8 h% W3 x* [' M4 T6 {. t
  230. .IF SOUND_BAR_SHOW_ENABLE
    ! m6 ?3 F( a' b+ r) j, x
  231. % i& _! L+ u1 T0 N6 c
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK' r1 ?: R6 r. C% }4 O
  233. .ORG $9000% P, v$ L7 _& ?! t
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"7 p) v+ q7 M1 N) A  z; h- T* D
  235. & Q# h4 i2 `4 F# j  ~6 ~; y
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK8 _, l1 o. l# _9 D* J, k
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"/ ~4 ^8 Z+ W- A' l4 `: @% X

  238. ! T" i8 z3 t% G. F
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK8 h' s0 @# Q9 n; M' u
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    : l& z* \0 d- [9 q+ j

  241. 9 L: e- p% B$ t! {+ R" _
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK) W' f6 j* S( Q  r1 P* V
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"( k* U" r" G6 z0 u; N( m

  244. 3 m( y1 c' |  y
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    ! H: u8 ~2 y; e' @  l' U
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    ' r5 y, K8 d1 a) R+ i9 M" \
  247. ; f8 I. Q- n3 k: o% _
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    " g$ }# b9 u2 A2 S! G$ ~; u
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"% `4 g3 c+ ~1 l
  250. " U4 I  B$ D$ x
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK4 t4 j% M3 R% P
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank": I; h4 g5 b0 F* d3 @4 {2 V2 l

  253. ( [: ?" ~, }) r, }( t
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK1 b, D$ |$ d' W, P8 k
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    * q7 K$ Z8 `, i6 K
  256. ! c: r0 `; [" B. n
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK, R) k" i4 r: V+ F
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    * m; n6 J: c2 m- ?# Y/ p

  259. : Z% ?  G( t' L& p2 n+ Z5 K
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK% |- S, W  e& Q7 D/ a6 n: W
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    & p7 ?- b* v) }; a& V: H% o9 p

  262. 0 P' Z' B, K& F' \
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    # C1 W9 [3 M1 h' ]4 y4 k
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    - j0 I9 F4 b5 a3 F6 w
  265. 4 v* w( Q- k' [/ L& |
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK  A' n% a- r2 \. M2 s
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"4 m( W, ~, \& T+ C9 C. ]: O: `
  268. 4 R7 O$ ], D* z6 ~+ d
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    . q2 |% K; G' p2 B; X
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    2 S6 v: W/ u4 p* j, W
  271. , Z. h3 S9 O+ E: ]' K& a
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK3 s/ [* s( k8 l
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"; {' a2 m9 ?4 ?# y! c/ ]7 f5 _2 m# j

  274. 5 u& Q& x6 y: M3 ~: P
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    % o4 F) h8 a6 i- I
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    & L2 V  O+ w& C3 ^" {
  277. & L7 b# j( p6 f
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK/ F+ F& l0 P9 b6 @+ U
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    * d6 v1 e% d& G# z9 T+ c  w
  280. & i3 p& o9 V, ]" S. b- h; [
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ( U# r4 x+ M4 i. K: B5 q3 ^7 \7 G
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    # A& ]% |' W) }9 j# l9 U

  283. ) ]9 r. m' U0 I; x) E2 O) A
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    . k% ^, V$ D, R: u
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    " w7 q3 `+ {* _
  286. # f% q9 B9 k! E+ g+ r2 N
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    / D' K/ ^& }' r/ Z1 X6 _
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    / x/ E' ?' L) H

  289. 9 U( S, b+ G& K) F2 _) E
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    / U( V) N  I( l! n
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ! D( l& W! T6 G) {8 o/ b2 F  g
  292.   D( o( d+ g# B6 C4 i, c3 T
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    4 {9 {& Z7 ?6 e' B7 h/ }' I
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"8 F& L: o& `: a/ a

  295. " `( W6 A8 \" H* X6 p
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK6 o8 ~& j. G5 X% y
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"7 g1 e0 ~& \9 v/ Y

  298. & v9 y2 |$ ~7 Y" N
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK7 N- m1 C8 L/ ^
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    6 R9 y( H9 I  Y/ O( g$ v3 J* c

  301. * Y; r' `3 @3 W  q! h1 A. s! `
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    8 Q9 w' o% i* M0 O
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"- S3 @+ g3 C$ u, e; L% a
  304. # Y+ X3 R+ x: {2 k/ u
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    & e5 T) ]( l( F, x: F! c
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"7 [  c& p* X4 I/ m) Y8 R& N6 }

  307. : y! ^4 q9 x8 W4 m$ x# S# o8 I
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    3 |+ [  L' y1 |+ ~7 `' D- S. j- K
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"6 y( Q: j7 l$ z- B2 `( T: i0 X

  310. % I2 D/ _/ P- p; N2 W* M1 w. e
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    : n8 t) }. q0 n: v" x$ _/ a
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    $ L' D% x; b4 p. g

  313. * G7 ~; D: l) E0 [" t% h' g3 l
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK6 G% G. t$ f& C5 |
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"; K! x% b; L; a1 @
  316. 7 Q: a7 Y& P7 N
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    6 J. G& T( t& h8 X" ?' {9 v
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"$ G4 ^# R* q1 {' c% Q% s
  319.   t! G4 O# F  H6 W. s8 q/ U$ P
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    * L  ]+ _* M2 p
  321. .ORG $D400
    4 O+ S5 R% @. i2 ]  w3 h4 k% \
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"4 _. O: U. t& f. c9 `" z: D
  323. % n4 {3 X# e* _+ S
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK0 ^1 z, u- [/ P8 N+ e
  325. .ORG $D800
    , ^* A+ l! W4 O2 J- F! Q. W# H9 \
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"4 {% S  B- j  s8 Y1 u
  327. 2 q5 z1 |/ o6 j7 V2 F

  328. # F7 H" K) W- _# a& {
  329. .ELSE
      B2 l* D9 P" u4 p1 x/ d

  330. # W# A2 J& X# X! D  q6 R
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK5 f+ h( j  I. a, G) H
  332. .ORG $9000
    ; p6 k1 T5 c. [7 Z; G, `
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    9 w. k% R+ u) G7 y1 J
  334. * Y4 Z7 |7 K; I: g5 C% `* F5 {
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK- o! _. a3 f& Y8 P  R- H
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    , q" m/ J  r* k3 a
  337. 4 V% u1 [* a. q( H7 u
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    . q: c( i8 F$ I* g. M$ Z" K- S
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank": z0 W0 T' m; A$ E* x
  340. " z/ w% T  C( \" i6 p9 J! l) E$ s
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK! {$ m! j: j( R# K3 H$ F
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    * W  J# N1 L( Q# _

  343. + N1 V. q, K, `3 H1 e7 x* i
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK7 a- i( F- w5 \5 ]" t7 X- z4 G
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    : ]. M; t/ m9 {  K% Y. K6 d7 C
  346. % d  t) U) b4 M# K; @3 e
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    5 V5 L# g( ]3 H2 `- c  }8 G. P5 b# `
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"5 {  F+ y! J  d4 n( a

  349. 3 W- X: q3 Y# b$ m  h
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK; S* g) C" O% H9 `% v* x1 M
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    ; g* C5 C$ L6 I. j* o# S9 N/ g
  352. 8 S3 P. ]# V: l7 f+ k& Z
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK9 w  I/ W  E0 {2 N8 J9 T. A# |4 p
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"' X- \" u4 U1 Z

  355. * D* ^5 c3 |" `, y& r
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    - d  x0 S! n$ h/ r4 [! c" z
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
      _# W3 G  ^- ?8 N' W; n2 Q0 Z
  358. 9 Q* [' F, y( v! C
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK! f8 N( `; N7 K5 B' E9 j' i* S
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"/ E* C* z- {+ I6 o

  361. * H# p! P7 d! {; j3 ^6 J0 Z4 ?9 B
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    0 {2 A9 h: l3 Y/ U% Q* r2 e% q' n
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    + n; {; o& _4 O( e# e0 w

  364. 8 V( D( z3 h( s( u3 J5 D
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    3 ?  z3 Q. b) V/ Y0 y: ?* R/ j
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    0 h; ]+ h% P* f5 H. w
  367. ( l5 E4 {0 U, F2 f; `
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK6 K+ U5 g3 `) H& ?
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"4 ~: ^8 o! S) Q! z- c
  370. $ r, b5 s4 _* |
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    2 e% Y: L, h7 R
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    2 S/ Z" F/ |6 r7 [4 Y* |$ a

  373. 6 d; o, E% K! n1 i) @& r
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    ! D: b- O5 W5 ]! `( z% d2 \. w  S# l
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    * C  R# q& l8 g8 ~2 @( k% N

  376. 1 q* q  ~" K# `7 d5 s
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK% H; c6 F" Z7 y  V. Y7 s5 z  _
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    . t- A8 @% Y9 _
  379. : g: P5 c1 {# b7 {$ T
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    & ?, q  w3 q! f/ S% c: g
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"8 B2 x7 V7 m. P& V" g% [" s
  382. 5 z6 W: A6 k+ I: J2 [0 b
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    4 I! z. s$ w1 U6 Q4 l# m
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    5 T. c% ^$ x' m3 F5 Z
  385. 1 `/ Z7 |/ _' y5 m8 Y
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK! ?7 D4 t+ g) E
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    8 V" X! Q# g" m6 ]1 m1 ]  W

  388. # v/ H- e& ]8 H# j1 u9 Z
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    + T0 T1 u- P( D) v. X, {$ }
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    9 m  O) `- k; d+ m: U
  391.   N$ E  j( a. j5 z, e: U. f. N
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    0 T3 O) M. t/ l: I1 d$ r
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    1 l' t, [" {4 E1 X- {8 P

  394. 7 W! T4 f  u* T7 E/ [
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK6 b& E2 v% Q1 D, `, _. f7 [6 y
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    ( h: v) a1 n: z) s( U

  397. 9 o- i+ J0 ?' x- x! O7 `7 L9 ]$ u/ ]4 u
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK+ T1 v9 w+ Q: B: _6 }
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    / f+ i+ w5 p: a, B; N( f( T

  400. ; c/ z' E/ b0 r! s; u% `7 @
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    # B# d% U/ h8 @! Q+ H+ o$ j: a, ^
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    2 r$ _1 C: X9 f7 W- t& ^( }" L

  403. ! e( Y: y9 v: K* o( D$ C
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    * X% E% ]$ V' r6 O( p7 a7 v
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    : p& k! C9 H0 Q2 d5 P

  406. . S5 p, X% H; r* [+ _
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK! U# X. {, W( _2 ?  K  W
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    " `8 [# R; _. l8 u) t
  409. * F5 y  F9 c. O% a! T. Q8 I
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    4 `2 M8 s2 w8 K+ ~! u! e0 O
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"1 h4 r* q7 @! ?; H, A6 I
  412. 3 O, Z, ?. v1 ^' ]# K
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK, _8 r! b9 d" m0 T
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    3 x+ }! c: G$ T2 j6 g
  415. 6 V: Z  C& ^6 I3 L4 u! N- Z; h
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    : e9 t6 k) Z$ ^) U. ~3 r  W
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    " p1 w) [% g0 y( [1 @0 R
  418. : A4 K0 w9 b, ]7 {3 X, p( N
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK$ _( J+ N6 Z' h# R
  420. .ORG $D400
    " r+ M/ R% u% o0 z9 X
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"' G2 G4 n+ l( S
  422. ) Z9 V3 t# C3 S" ^9 ]7 e" i
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK$ u! ^% t8 {( @- c
  424. .ORG $D800& U$ k; ~$ {2 ?  j6 J+ |
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    - W" d7 o' e$ h$ `8 [* A

  426. ' K% Q5 \3 ?( b5 e, l
  427. .ENDIF
    : Q6 ]$ V5 J0 l- \: g

  428. - i' E8 l0 S# E' W. w
  429. ;CHR图形数据3 h6 N5 u+ {0 m
  430. ;======================================================================
    8 ?# J" b* G* V- ~
  431. .BANK CHR_DATA_BANK1 O8 M" S( {6 O# x/ X% f+ [
  432. .INCBIN "chr_bank/chr_data.chr"+ x: R2 H/ D. w# a: `6 W1 D6 M: r

  433. % G! M( r4 L* p( A; h
  434. ;======================================================================
    ! f- V5 F/ {- F
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK$ w  L, v# P4 `8 M/ N* U, q
  436. .ORG PROGRAM_ADDR2 h3 E+ H( ?6 P" p3 E8 H# b. d5 H

  437. . Y# G5 |5 _' a7 r
  438. ;==================================================$ e2 Q0 q4 B) p. {1 q, [
  439. NmiProcess8 l9 [- ]7 q$ R8 m( P' j/ g

  440. ' @5 ^' r4 {4 Y5 L! E
  441. ;关闭屏幕控制
    4 r+ D: d: Q; f% y1 ^" s% |" l/ O
  442. LDA #$00; W0 s- c) V0 h6 z5 T2 Q, I
  443. STA PPU_CTRL$ e5 ~) j: z: K. y  X

  444. 3 w7 B: D1 K" l3 K" b# g5 W% T, ^4 S
  445. ;没播放音乐就不需要触发IRQ0 G* Z. \5 M) p' ^, j- O
  446. LDA <Music_Stop_State
    " X- w' f4 i* J2 C, f% q! e
  447. BNE NmiNormal# Y- i) Z' E+ ^) Y' E0 l( i

  448. 7 A  _, d- x& Z2 E) |* u
  449. ;重置IRQ索引, F# @( D: D* u
  450. LDA #$00$ e* d; T! M* y) _4 z0 G
  451. STA <IRQ_Process_Index! Z4 e2 g3 c4 y, w# }

  452. , U9 H  e+ E/ Z7 f- W- L# }3 g- E: j6 Z
  453. ;时间秒数为空则跳过
    ' k  a: G: [, L
  454. LDA <Time_H
    6 ?$ A) _" x: k2 E9 e" o
  455. ORA <Time_M# _9 [: {' a. O/ c
  456. ORA <Time_S
    # t, ^; L1 {/ Q* a: o# V8 j, ~
  457. BEQ EnableFirstIrq1 e4 _* {$ R* T1 B/ ?

  458. 2 j9 x! m7 J7 c! J. p
  459. INC <Scroll_H% R' V5 ^* A. q2 b, ]( E
  460. 3 p+ O8 |" z& F% ^: I  Z3 Z
  461. EnableFirstIrq
    3 y4 y1 V5 D, {* Y/ h# [
  462. ;80条扫描线后触发IRQ
    " p* H, X/ V& N' C* n  P& p
  463. LDA #IRQ_SCANLINE- w' f( v: A, @
  464. STA MMC3_IRQ_LATCH- E. r' \- W% t3 E8 b
  465. STA MMC3_IRQ_RELOAD% J$ \, p0 Q- J& W* m' [0 |- g+ {  L
  466. STA MMC3_IRQ_ENABLE! b) I3 e( R: u
  467. CLI5 w( l* }+ Z0 ~/ B
  468. 2 I9 b+ F9 h) e  m4 l
  469. NmiNormal. O6 M- G5 \* `/ h" p: z  R

  470. 2 }) W8 M, u2 H+ h
  471. ;处理PPU图像
    0 G0 X4 C6 V% b  o; J2 k  p% c
  472. JSR PPU_Proc% |, d" m( `( ~8 j
  473. - H8 K/ a+ r5 V% b7 t
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    ) B+ ?# Z( w) P) ~" L/ v
  475. LDA PPU_STATUS
    0 [1 R, m$ t5 Z* e& _3 M7 V
  476. ;LDA #$00
    & V& @2 O0 o: r4 X
  477. ;STA PPU_OAM_ADDR
    " k' [  g, v2 [- ?1 P- h
  478. LDA #OAM_TEMP_ADDR / $0100
    8 x2 x% Q$ b$ q" l7 p
  479. STA OAM_DMA
    . z* D* l7 |: P: F

  480. " ]0 {! M0 i# X" K& b' }
  481. ;启用NMI中断
    ; {/ m/ M. T: H, u
  482. LDA Screen_Ctrl% o4 [$ X, B- B' ^2 k$ h) w
  483. STA PPU_CTRL
    9 p6 M8 B) D5 p/ V

  484. + b; t1 h0 g- V5 c. K1 n6 T
  485. LDA <Text_Disable_Flag
    0 @$ ^  u. ?  l8 R( k7 X/ ^
  486. AND #TEXT_DISABLE_RAM( Y( @% P* x' I3 c4 I. ]1 ~
  487. BNE Nmi_Sound_Play
    ' R) E6 e3 z" u7 f0 n& l! Q
  488. 5 D0 N( A$ t6 h3 b' M; p
  489. ;处理手柄输入4 ]3 n& W& [( V* {3 J: ^% Z
  490. JSR Key_Proc
    ; m2 @* `' C1 I( r. \; ?1 d7 b: _1 R( o

  491. 9 [, W5 A$ J- [  y# ?/ B& L2 ^- `
  492. ;切换音乐(手柄触发)
    / P3 ~2 }8 _0 n  j
  493. LDA <Time_Wait_Cnt
    . z" s* x! m' i5 ]1 V( N+ ?/ ?) s2 b1 d
  494. BNE Nmi_Cursor_Arrow
    4 a7 q( G( U. P& Y9 `9 F
  495. JSR Change_Select_Item8 H' L- ]7 G+ x% S' c9 @
  496. ( V/ v4 z4 P& q, W. y5 X
  497. Nmi_Cursor_Arrow1 h3 C! h, z3 M. S$ Y
  498. - k0 ^1 S8 D+ \) `: ^. r6 T& R# W
  499. ;处理光标箭头
    1 V8 ?" e* E% e& W4 w7 ]3 K
  500. JSR Show_Arrow
    0 O! F6 `' d1 S+ J/ T

  501. , e+ R* v6 j+ i' h# A
  502. ;更新调色板8 H, [7 u" _: V7 d% l, ^
  503. JSR Update_Palette_Data
    , B% l; l  G% ~2 W6 H
  504. . C1 A* f+ x+ U2 u
  505. ;显示时间(缓冲)
    " P; S" N7 a) b4 V, P, j7 y, H
  506. JSR Time_Show
    2 k- u* S( M1 v4 p
  507. 8 @" [9 C5 [. ]+ u6 U; S
  508. ;音乐显示(缓冲): |, S: p1 Z" U  T  V* A1 ^" c
  509. .IF SOUND_BAR_SHOW_ENABLE
    8 I9 _; m/ `5 q) c6 C. [
  510. JSR Music_Vision
    0 |9 y" P; N" X& }, n! Z% ]
  511. .ENDIF; d- [9 {6 U" ]+ L  m5 |% Y

  512. 4 |' G, {& T% x+ M5 t  h$ f7 K
  513. Nmi_Sound_Play
    ' G' g4 O% N/ a
  514. ;播放声音
    ' X6 u9 k/ n) v3 a& }( E
  515. LDA <Music_Stop_State
    6 I" H3 h# V! F* `4 q+ e  b1 Z# Q
  516. BNE Nmi_Time_Wait_Set
    9 q. c+ ~0 E# M& @! r  V+ W# f( q; k
  517. JSR Sound_Play_Proc6 F. u/ T; n6 T5 O7 S

  518. 2 i$ ?' z: z5 A# @4 h; G' y  ?
  519. ;播放计时
    " @+ d( v$ n9 {2 Q# g+ p4 u! Z
  520. JSR Time_Count" n  {: D) ~2 Y/ r+ ?
  521. % B; C" c6 L/ h, k) w: Q
  522. Nmi_Time_Wait_Set
    ) D8 w' |% D# K! ?- `
  523. LDA <Time_Wait_Cnt
    ' h2 ?3 s- n# Q8 T. t1 p* e
  524. BEQ NmiNormalProcessEnd
    . H( Y$ |! u4 f$ Q# |! n" X
  525. DEC <Time_Wait_Cnt: f6 e! Q% `+ [% M: _; N5 ^
  526. NmiNormalProcessEnd/ ^6 K/ x' i+ S! B

  527. ( y* P4 `+ |: ~7 R1 }
  528. INC <Nmi_Time_Count4 r# O) z% _( \1 W: s/ s- J
  529. , h3 g1 N! @8 B" @7 Q
  530. RTS
    * Y7 J  k: C3 Y. f3 p- x) B! O7 z' r

  531. , l5 ?1 j! m! T  B$ b7 t5 u
  532. ;==================================================
    7 z5 G2 F9 r; B
  533. Init_MMC3
      g# X' N9 |: Z: B" H
  534. ;==============================
    8 F! e) }8 U* ^6 N$ q2 l
  535. ;禁用IRQ5 ?' s/ M% Q/ L) e9 k( g/ {1 |- b
  536. STA MMC3_IRQ_DISABLE1 j' H+ @6 X+ C# Q$ M

  537. % G6 J0 |- ]5 {( i7 \; a
  538. ;水平镜像! }5 y& A6 P. A; _, A( Z- x
  539. LDA #$01
    9 ~8 L! L- H( y  q4 T5 v
  540. STA MMC3_MIRRORING# F2 P0 |, G4 N: ]0 N
  541. * p/ G6 N- [" K$ v8 [% y! v
  542. ;初始化图形bank
    " Q0 C' W/ z+ w1 g7 F" h4 `8 e
  543. JSR Init_MMC3_Chr_Bank( O1 t9 b4 g: y( i5 z( A7 j

  544. 6 J  o, V8 M( _
  545. RTS9 ~0 r$ O4 d" {- z* }  b
  546. ;==================================================' Q7 ]' G1 }# T
  547. ProgramBegin;主程序0 p" i( E  l0 l, y
  548. LDA #$00: m- t) j' B  e0 K: p
  549. STA PPU_CTRL
    & A! r0 N7 b, T: K7 a' N7 F
  550. LDA #$00: g, S! L. Z9 v' ]0 B
  551. STA PPU_STATUS0 W5 P9 S2 W8 Q; \& L
  552. STA PPU_MASK
    * c( s& E" n- l( v
  553. STA JOY2_FRAME' G" j9 E- A1 r
  554. " F7 i, |: ?2 o. B
  555. STA PPU_SCROLL
    # U: U8 p: R" d' [8 O2 M( _7 q
  556. STA PPU_SCROLL
    # t& @. a! |/ `/ e3 \
  557. 8 e, t5 k9 _& r9 c
  558. ;==================================================1 `) s, o, f: c9 I( Z
  559. LDX #$FF
    ! ]+ f6 T8 Z* l
  560. TXS
    / C) j" o" Z5 r8 G

  561. 1 F: K; @& Z/ d3 E! F. K9 N
  562. JSR Init_MMC3
    1 ^# I$ b( a& t3 W' t( I  v  f7 j% i

  563. ) s; d7 p  P9 ~- n) h# ]9 T* I
  564. LDX #$027 Q( p6 }4 z: a: {0 G
  565. Check15 A  w5 A0 ~2 \
  566. BIT PPU_STATUS
    * n2 Z4 ]1 E8 z( ]0 U
  567. BPL Check11 w* }& y/ V, z& C7 m3 u
  568. Check2
    2 t- I, K) X7 l0 e% S1 N% N
  569. BIT PPU_STATUS
    7 W) Q2 j8 ^' C, q, [
  570. BMI Check2
    # }7 s! e0 _8 C+ W9 _

  571. 4 P! y% u( s3 C+ G) l0 P
  572. LDA #$0F
    & Y7 x* |8 G1 |$ T! X+ L- P
  573. STA APU_STATUS
    , R- g( M+ z  L, r# q
  574. LDA #$C05 T$ j: h! u* i" N7 d
  575. STA JOY2_FRAME7 H* o" v. p3 T2 A1 M# M( m* c

  576. 9 J; s( A& K8 p( n4 @: l3 w
  577. LDA PPU_STATUS) h3 a9 w2 _, d8 l; ?* ]) f
  578. LDA #$10) o! T$ b! k# I3 y
  579. TAX
    8 s: u+ C2 J6 N) K+ \( [2 Q. G
  580. Check33 |2 d; y' v, u/ W% o
  581. STA PPU_ADDRESS; m! R0 k! C. ?$ L/ l) \; C9 y
  582. STA PPU_ADDRESS6 v2 o/ O  R# }5 W
  583. EOR #$00: p% }5 v( N( ^4 q1 l  ^
  584. DEX
      b, l4 n% a& r2 U% [: ?+ \1 w
  585. BNE Check3
    7 {. ]9 d. q2 v0 T/ K& Z$ a
  586. ;==============================
    , o/ |" F% a. s; Q0 i/ n. c/ |
  587. ;调色板清空+ m4 g6 S& n; I' k8 ]$ p
  588. LDA PPU_STATUS
    3 K6 _; z3 M( }0 ~- w2 c
  589. LDA #$3F# T4 l3 ]7 `. ?; p
  590. STA PPU_ADDRESS
    # f& S7 w1 e+ A' S8 G# B- f5 r
  591. LDA #$00/ c& ]% e  x! W7 |5 U- J
  592. STA PPU_ADDRESS
    ' K: `4 I# P' J8 f- t3 |
  593. LDA #$0F) [& C' z4 U0 }( K+ j
  594. Palette_Clear- L- S1 S& B  L+ U& t" o
  595. STA PPU_DATA
    & y2 P" k0 j3 R; ?
  596. INX
    2 l; C) P7 t, E0 r6 {4 H
  597. CPX #$20
    + [: P4 @2 h$ i
  598. BCC Palette_Clear
      e. f5 {& n$ I* O
  599. LDA #$007 G: V3 Q8 a+ m* [9 W
  600. STA APU_STATUS- [7 w/ ^8 T  C- a0 N6 N  O
  601. 6 {  N- m; B, c8 W
  602. ;==============================0 q6 ~4 K3 _0 t  l. m6 O) j7 p
  603. ;RAM初始化2 W5 E/ A( n9 B$ h' M1 Y
  604. RAM_Clear_All9 ~3 Y, {, C  Z# L! b
  605. LDY #$00
    8 t' C, ]/ K0 `( r
  606. LDX #$08
    ; ~/ o, `' Y! J* K+ H
  607. LDA #$00% S1 I( l# [1 c
  608. STA <$00
    2 i0 n* L8 X) u
  609. STA <$011 a$ }5 H) K$ S& \4 R( L& c3 j
  610. RAM_Clear_All_Start
    . A2 j6 B6 c* ^
  611. STA [$00],Y& k* _0 ~3 }, V4 [$ u
  612. INY
    ) M4 e6 A, T  _* r2 p# p" B
  613. BNE RAM_Clear_All_Start
    4 Q$ e* N2 e! W) e
  614. INC <$017 D; F3 o& |) H* R
  615. DEX
    1 A3 O/ H: j4 n7 x
  616. BNE RAM_Clear_All_Start3 g" e1 R1 b- e6 z5 J, a/ N
  617.   z3 s3 a' S/ N3 {
  618. JSR VramClear2 ]. C; |) h9 W- Q
  619. JSR VramInit
    5 `( j+ t7 G& r, M8 T/ q1 ~
  620. JSR OAM_Ram_Init
    7 r! U5 n- q6 {
  621. JSR Init_Palette_Addr
    # C+ H( e3 G1 i" x  R7 F* \" W, p

  622. % y( i) r) v6 O& [
  623. LDA #$FF( U5 Q3 a# B# c9 z- |
  624. STA Use_Ram_End$ a, j0 J0 [, A0 |
  625. ;==============================
    9 L7 B0 l; {9 c; c
  626. ;初始化背景调色板
    " @# q0 x: {" u
  627. JSR Set_Palette_Color
    2 c$ V" Z, Z) @' ]9 r# ]
  628. JSR Set_NameTable_Attributes
    $ L( L1 R/ d2 W
  629. ' ?$ F, S% K' @# `5 X
  630. LDA #$00; h4 p8 }( f0 S
  631. STA PPU_OAM_ADDR
    : K- O0 n9 z+ z
  632. LDA #OAM_TEMP_ADDR / $0100' @8 D  B' q' `- z% g
  633. STA OAM_DMA! ~; U2 B4 I6 M1 |3 T1 @: ?
  634. 7 K9 d1 j% R& A9 n  U
  635. JSR Sound_Reset_Proc
    ) G4 o& _0 O- A* ?: J* J* }
  636. JSR Set_Sound_Total
    3 T$ H  n' y+ G9 s1 J' A5 z

  637. / C3 ?  T! e; ~/ g" }  a
  638. Init_Start_Music. s: N! c& F% P1 W# G! i9 H- E5 C
  639. LDX #$004 d: x, l9 K& O7 T7 W8 e
  640. Init_Start_Music_Write
    - w6 I: E3 d2 _! f8 h, N. q
  641. LDA Sound_Start_Port,X
    ; v6 D6 i; x) D. k/ A! ~; B1 e
  642. STA <Music_Cur,X
    6 Q! T) \) l7 R% e) b5 X% b
  643. INX
    * S9 w) o/ i) K% W# F
  644. CPX #ITEM_MAX_SIZE: Z3 E3 ^: q6 Y- w# e7 o
  645. BCC Init_Start_Music_Write
    ' T( O- s# @7 J; U& ?3 f3 b9 Y
  646. * ]$ i& V  ]& D" \: z
  647. JSR Show_Music_Text
    7 [9 t- x& X) z* E, N! `, Y! t- j3 T
  648. " Z: i9 v  p5 p& O6 T" t$ v* X
  649. .IF SOUND_BAR_SHOW_ENABLE7 {! D3 z, z6 Q$ l0 `1 I
  650. JSR Sound_Bar_Text_Set
    2 v$ a" H4 x( g* W9 Q
  651. .ENDIF3 b2 P# D4 Y5 T: e/ n# l

  652. 2 \& o. r2 `/ F( |! A
  653. .IF Track_Name_Pos
    - m+ I5 y& \3 m. w
  654. JSR Show_Track_Info4 b+ v6 P" o+ U5 K9 U& V
  655. .ENDIF% a8 U8 G3 P' a4 b
  656. ( H5 V2 J* v4 `8 X
  657. JSR PPU_Proc9 M4 j! X( l: t* B: y6 {- W6 c

  658. $ ?5 {! m/ }& P4 Q) s6 n  I# k
  659. ;==================================================3 u( E* L9 T! n, ]
  660. ;音乐bank初始化 ) B, R: B1 B6 [
  661. JSR Init_Sound_Bank) m( @* ?" M& T- }, K( D

  662. ! F5 J  V+ q7 u
  663. JSR Music_Show% ]3 V+ A9 Z% s0 J4 M
  664. JSR Time_Show- a" ]) Q6 q" S, h: S7 w  h
  665. JSR Music_State_Show
    5 L* y8 Z$ y  z0 p+ \- I( b
  666. JSR Time_Delay; a5 i% }& [, G% G
  667. # O( L; l1 Y$ \3 r  V2 K* Q
  668. LDA #$01( O( ]2 `; A; w4 z
  669. STA <Music_Stop_State
    8 S8 \( e3 P$ v( T* ~

  670. 9 t* j( E' }7 K+ U. j, Z9 ]
  671. LDA #$88" {9 K1 a; }" t# O+ c
  672. STA Screen_Ctrl
    & H  c! [# b/ w# v
  673. STA PPU_CTRL
    6 b9 j0 r5 j& ^2 P( ^

  674. 6 Q/ d, \9 y8 t: p) ^
  675. JSR Show_Page_Text
    2 u, k% J# v% f' M2 p/ d

  676. 8 |0 e3 u: e* X$ N- ^
  677. LDA #$10
    $ i0 a, ]4 [" i7 A% l2 c
  678. STA <Time_Wait_Cnt- R! G" u  e- i& i3 D  F0 G, c& z' i
  679. 9 c' ^% j- a, T0 P. {# N5 W
  680. Wait_Time_Over2 r4 P; M- s9 F/ s
  681. LDA <Time_Wait_Cnt
    " a' o3 |5 M# e( ^1 q
  682. BNE Wait_Time_Over
    2 o+ M8 |8 x2 r' k3 d

  683. ' ?; i- ~6 t/ m. Q1 v- F" _  d
  684. JSR Show_Arrow
    + J# d' t  |1 ^
  685. LDA #OAM_TEMP_ADDR / $01004 B: l8 t- i2 S; F: j
  686. STA OAM_DMA) v1 [  R. S: J2 f6 o# o
  687. 6 `: z/ o" D2 k$ q6 j! C4 _
  688. LDA #$1E( k/ q$ j% y. l  B; M) A6 z
  689. STA Screen_State- T+ i# W  K& Y4 @2 h- a
  690. . p* P: O: U' I3 V1 p
  691. LDX <Music_Item_Cur; W% h6 `( [2 N. G
  692. LDA <Music_Cur,X
    . B; e1 [3 B; w' I
  693. JSR Sound_Init_Proc5 h9 z4 U4 ]. l4 }% R  T- j

  694. + r8 U: X! B  `1 L% C
  695. CLI8 R  l, G  A7 b6 ?$ t6 H& }
  696. JMP MainLoop/ ?0 i7 t$ \6 t. D
  697. ; F5 Y5 `' n7 c( D
  698. ;==============================
    8 V3 x+ E7 F! D2 i) n* \
  699. Time_Delay;延时等待
    - Y5 ?- n, q$ ?2 e' S" d
  700. LDA PPU_STATUS) [( v4 {! o, P0 D" F" ~0 m
  701. BPL Time_Delay
    $ }2 B& r& n& ~3 d
  702. RTS# l( p+ q2 U5 M- a

  703. 9 a" u# l. L) E- \
  704. ;==============================5 a9 l3 i: M0 J2 k- \
  705. OAM_Ram_Init;初始化精灵内存
    5 j4 M' Q. P6 T
  706. LDX #$001 v8 r9 x- g! s/ m1 R. I; b
  707. OAM_Ram_Init_Write. ~) y$ x4 O6 G
  708. LDA #$F8  {9 i. a( z" M, w0 ?2 g
  709. STA OAM_TEMP_ADDR,X! _; b9 R; A  [3 z  ~  C! y
  710. INX
    ; D; v) P) h% J, j
  711. LDA #$F8
    ' K4 c% J9 d, `  J
  712. STA OAM_TEMP_ADDR,X
    # O& Y, m& q/ X5 e+ s
  713. INX
      C$ y1 u8 Y, B- c
  714. LDA #$002 I9 {; V9 v& g9 G
  715. STA OAM_TEMP_ADDR,X: _8 @2 H+ t# h. h, f# f$ g
  716. INX
    2 N) d" Q" M( n
  717. LDA #$F8
    4 \2 n' W) C, I6 \
  718. STA OAM_TEMP_ADDR,X3 |2 O  J, n' F
  719. INX
    6 H, k) Z  l: z7 f
  720. BNE OAM_Ram_Init_Write
    - b; ^3 I7 R0 h: F
  721. RTS
    ' [1 N& M- p) e, c; Z. q9 H; p
  722. 9 ?. f  B- n* v7 j0 H
  723. ;==============================
    6 O1 K1 W+ }* B% C
  724. VramClear;初始化图形内存
    5 p) A! {9 W" b5 h- m, \. Q2 l
  725. LDA #$207 g- a7 ^, ?" C2 c
  726. STA PPU_ADDRESS
    6 ]+ J7 Y; l9 U8 Q
  727. LDA #$00+ F8 D4 E  P6 |
  728. STA PPU_ADDRESS
    ; O1 S1 T2 O9 }7 D/ \: t* D) A
  729. LDA #$00
    ) G! h1 q6 C6 y- @" C: h
  730. LDY #$00
    5 U: L1 z' b* v) k
  731. LDX #$10
    ( R8 ]  @1 `/ G& {9 L# M7 A' z, @
  732. VramClearWrite( [4 p) @, B# i% D1 `; t/ r* V4 X4 S/ A9 e
  733. STA PPU_DATA1 a# ~$ i$ J( n0 y$ y+ b5 G  j3 r
  734. INY0 ?% p0 x& {6 e3 T8 s: @  m6 s8 ?
  735. BNE VramClearWrite- H& Q" _$ I; V8 Y* C8 \
  736. DEX# ^( c5 S+ ?/ w1 C
  737. BNE VramClearWrite
    . ~# ~4 h# t6 I9 o. d5 ]
  738. RTS
    / ?* _0 J6 @) V+ S7 B+ O0 Z

  739. 4 m8 C( X" g7 j! m) q$ v
  740. ;==================================================' w& [9 L3 S8 e9 e5 c/ w/ O2 S
  741. ;设置MMC3图像bank
    5 \3 c, z1 Z5 y7 k2 q# d+ z
  742. Init_MMC3_Chr_Bank
    1 g8 c  o0 T( n1 w1 d. c5 E* D
  743. LDX #$05* k2 @: ]- @4 x5 j
  744. Init_MMC3_Chr_Bank_Write3 N( S8 }" u, i1 `9 x0 n( [
  745. STX MMC3_BANK_CTRL' w6 ]; v$ K8 s8 T2 v
  746. LDA MMC3_Chr_Bank_Data,X
    ' b' i* y1 i$ V4 t
  747. STA MMC3_BANK_DATA2 c& N" z- v2 [' S0 j8 F3 C1 T
  748. DEX
    $ z! Z. a/ G' Y/ z
  749. BPL Init_MMC3_Chr_Bank_Write! s; i) f3 {" s3 S$ C4 x
  750. RTS
    ! v7 P: G+ P" {+ D0 i
  751. ;--------------------------------------------------* h- |' {1 [+ L" S: S
  752. MMC3_Chr_Bank_Data) \- `% D& I9 t/ k
  753. .DB $00,$02,$04,$05,$06,$07; j/ I; d- v) a! i1 M0 h* g3 F

  754. ) U1 x  j) `% K  n) R0 q
  755. ;==============================
    ) B6 H2 y+ ~: j; M5 F1 t- A
  756. VramInit;初始化图形内存
    / H+ ?* [8 X7 L* f# a
  757. .IF CHR_RAM_ENABLE- k7 o# J& }# u% B
  758. LDA #CHR_DATA_BANK1 C. ]/ a: m% u( s% a( H/ Z
  759. JSR Switch_Bank_A000
    1 x  ^- x$ M' I" o
  760. LDA #LOW(CHR_DATA_ADDR)
    ) C9 h  j+ M) g2 }4 c8 Y, z
  761. STA <Data_L
    4 s5 p# @4 `: B+ X( q* I: F
  762. LDA #HIGH(CHR_DATA_ADDR)8 h1 w+ W' h! ]: R, a
  763. STA <Data_H4 x8 S% o3 A! j$ O! O5 R5 n* @8 T) _
  764. LDY #$002 R: S& {0 l6 K' u4 v# C& b$ x1 h6 v- k
  765. LDX #$20
    ( |  E- C, \: \9 a
  766. LDA #$00
    2 G8 O" k" _: X: k; K1 Y
  767. STA PPU_ADDRESS3 u5 M* m9 l/ F4 L3 b! U# ^5 Y
  768. STA PPU_ADDRESS
    0 n. A) [2 f9 w4 d
  769. VramInitWrite" L3 P8 P* X1 C  Q1 J4 a# p; c' H
  770. LDA [Data_L],Y
    ; b2 s/ k* {( R4 Q; S8 `3 T% W
  771. STA PPU_DATA
    " v$ {* {& G. M4 K  ^
  772. INY
    . A: `/ L3 F' |  M; R9 N" H% G
  773. BNE VramInitWrite
    + @0 v% G# [3 g7 b, k; u7 l
  774. INC <Data_H0 D; o8 B; G4 [2 M% [4 h
  775. DEX7 a0 e! N8 k( t6 |, q7 u/ b8 g
  776. BNE VramInitWrite0 g, X& k7 Z+ X; x% ?1 [+ N
  777. .ENDIF" e3 E) B& h) m' L: s7 V; E: ]
  778. RTS+ J. n+ s7 D  E' G5 m1 S. _# {5 D
  779. 1 j  z" Q! i- P- s/ S" m
  780. ;==============================
    7 K; n6 [# f4 [9 c& \7 W
  781. ;音乐切换/ V* h1 d2 Y  P) N3 U/ t- ?, U
  782. Music_Play_Change
    3 D, h' ^; L2 F' x$ J; {+ g1 T8 E, ?
  783. LDA <Key_Once# ]7 F9 H' Y( Q* @5 J
  784. AND #$FF
    : v. H' V7 @9 D: R5 M/ e+ B
  785. BEQ Music_Play_Change_Check9 y: _- f* ~  ?' Q! g. V& \
  786. / W7 e$ p1 x$ i! t# l3 E
  787. ;禁用音乐条刷新
    , s% W% X+ [- Z$ E7 Q. D. t$ O
  788. LDA <Text_Disable_Flag
    ' ~$ a# |: w' o# A( J
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    5 e4 U% ]3 ], v8 ^" W$ w; O8 ]
  790. STA <Text_Disable_Flag
    0 T! g( e( Q7 J. z3 ]4 F/ g& E
  791. 0 q% i6 C/ g$ t) q
  792. Music_Play_Change_Check
    4 W/ t5 }; f1 f8 l3 `
  793. Music_arrow+ G" ^: @- U9 C0 X0 {
  794. LDA <Key_Once8 ?9 Z) K* ~: W; C" Z+ S
  795. AND #$0F
    9 |( q! c0 i# {. _  a' V- Z' R
  796. BEQ Music_Play_Change_End5 C: \3 ]. I6 f1 E9 Q
  797. JSR Music_Track_Change
    ) \" A5 x' A" I3 M  Q  B; w; S( c5 D
  798. JSR Sound_Reset_Proc
    ) p8 T3 j2 W! U* k3 O6 I5 T/ B
  799. JSR Music_Show' o/ ^5 K3 D/ ]. e& e
  800. Music_Play_Change_End
    3 n: P3 x" {. N( H' ?
  801. RTS: X0 C8 _/ ?: l8 Q& h" C

  802. 4 g5 m/ @: Z# B
  803. ;==============================# a# N# b3 b+ r* ?! _- w
  804. ;音乐曲目切换- P& R( [" b- K
  805. Music_Track_Change
    7 X) `* H$ c$ r7 ~* H% j* p# t
  806. LDX <Music_Item_Cur
    " D- R7 x. f: s; ^3 g1 I
  807. LDA <Music_Cur,X
    1 t8 M$ U& ]* L5 d' X6 e! I7 f+ l
  808. STA <Music_Last
    ( g. d3 o. [6 G7 M+ t- z$ ~
  809. Music_Decrease
    - ]; o" v  T! U: b+ {6 t7 x
  810. LDA <Key_Once
    ' O$ D" y" C9 P
  811. AND #$42
    $ _) n' T1 Y0 s6 I, K
  812. BEQ Music_Increase
    ! A) w* d4 S$ F7 k( g' ^
  813. LDA <Music_Cur,X
    * ~, n# o! A' n" o% t% ~  N6 _
  814. BEQ Music_Increase% G4 j/ w) n# y1 f# I2 A
  815. DEC <Music_Cur,X6 M$ i8 j2 C! j; a
  816. Music_Increase
    0 Q: J& r+ f4 |6 L7 l8 X# Q) C
  817. LDA <Key_Once( x! U$ I. Q! X& Q6 j
  818. AND #$81
    5 y9 w# V, K4 H# b; G
  819. BEQ Music_Decrease_10
    " v( }; |7 X4 P# T& D
  820. JSR Set_Sound_Total1 o" n/ H' E  O- L4 G" q
  821. LDA <Music_Cur,X. H& B/ }) X: q, N
  822. CMP Music_Total" \# N: j, v9 K2 k: ~7 E% W
  823. BCS * + 4* ?7 b" t7 b; V% m) w- J
  824. INC <Music_Cur,X
    " @. P  o. W( _- B
  825. Music_Decrease_10
    4 X8 Q5 u4 w9 z* w
  826. LDA <Key_Once
      i/ T4 C0 y1 G0 n: k9 A. p
  827. CMP #$04
    6 \& ^! ~0 k* A% k
  828. BNE Music_Increase_10; y- ^2 R) \3 ?' N! `
  829. LDA <Music_Cur,X+ h9 I4 m; g1 J% ~; K$ O3 @8 l4 i! K
  830. CMP #10! x2 ^9 e7 z% u- C* P6 R% u
  831. BCC Music_Start_Song_Min
    3 R* J7 c7 ~- P9 ^$ V
  832. LDA <Music_Cur,X
    7 C+ I* Z5 T8 d/ o9 L
  833. SEC
    ' B% ~- T. T, x- V. n% E9 F
  834. SBC #10
    4 J1 {! f7 H' O/ P# P# n
  835. STA <Music_Cur,X
    6 U: Z6 K9 q% B9 g$ K/ x+ F
  836. LDA #$00
      c, g; Z; T. S
  837. BEQ Music_Increase_10
    % ~' a( S) g# c: V! t
  838. Music_Start_Song_Min7 W2 l, g: }+ N
  839. LDA #$00
    + M! o. V1 p, f) z" c' V/ p
  840. STA <Music_Cur,X. B7 D9 y- x: I# l
  841. Music_Increase_10! b2 |, H0 R9 r: k# F5 |7 @
  842. LDA <Key_Once
    1 j& c, g' b7 Z( U/ U
  843. CMP #$08
    4 Z4 F, d& d* i; |, O, N  |
  844. BNE Music_Track_Change_End
    2 G2 D+ v$ z9 o# z
  845. LDA <Music_Cur,X
    ' ^) G3 n3 N* O( H' {2 G
  846. CLC, l' @. T) o, c, t0 K' d9 i' a- `
  847. ADC #10
    0 X8 p# N/ n+ F- a9 m: z. l5 l
  848. CMP Music_Total
    9 @& v- X9 D$ Z$ W1 _
  849. BCS Music_Start_Song_Max, a, T4 M; t; w/ ?# d4 s; e
  850. STA <Music_Cur,X
    . y, X3 r, T0 H
  851. LDA #00: ~4 o' `# g/ [9 m+ Q3 R
  852. BEQ Music_Track_Change_End
    : a) E8 v! Y/ r( u. T! o3 k* z. B
  853. Music_Start_Song_Max: m. I+ V: ?. r7 n. F" I; M
  854. LDA Music_Total
    ) k9 u( E. }& ^' Q
  855. STA <Music_Cur,X1 u8 h# j  q* q  L
  856. Music_Track_Change_End
    . M$ ]1 Z) G% j: y' a3 g0 i; @
  857. RTS) O5 v2 C3 O, r0 l7 j* P0 j
  858. 2 Z5 V- U/ S. H6 b9 E
  859. ;==============================* ?5 V  w0 r& k8 V: W9 T
  860. ;按键处理
    1 S7 E+ c$ z, M$ f; y$ o& N( [, X( m
  861. Key_Proc. i/ q# A; _0 L1 e' V8 M
  862. JSR Key_Scan
    4 C8 F& H) a$ j* F1 W/ s( F4 J
  863. LDA <Key_Keep
    4 Q" @0 ]: z8 F
  864. STA <Key_Temp: M& ^: j! E9 R! }0 ^& n# j7 B
  865. JSR Key_Scan  u! W3 V; i% Q! e) O9 }
  866. LDA <Key_Keep. F) O6 i" V8 @+ x" [
  867. CMP <Key_Temp
    3 @# C2 P, A" {+ m% \
  868. BEQ Key_Get_Once" x0 v6 J- h9 B( I
  869. LDA <Key_Kemp
    % X1 H. y+ }3 u" K
  870. STA <Key_Keep
    + i6 v' F9 c7 D  k3 p$ A* m
  871. Key_Get_Once  ~* A; a+ E0 ~2 }0 m5 ?
  872. TAY
    6 K* Y5 `/ `0 d. t3 O
  873. EOR Key_Kemp  U- e* f3 R: o" M8 t6 K
  874. AND <Key_Keep
    * g* Z  o) ?! u/ K) X/ X: ~* ]
  875. STA <Key_Once4 c8 l0 X: F& d+ B# H
  876. STY <Key_Kemp
    1 S3 }; @4 ?$ v
  877. RTS3 G  L/ U7 O* C% R3 l" v8 E7 \
  878. ;------------------------------) g- X  E  r( f2 A3 M  S0 c
  879. ;按键扫描
    7 {6 b5 s+ _( _$ L# N+ L
  880. Key_Scan
    ( \5 O8 @3 m0 V" {( e9 n+ F- s" y
  881. LDX #$01/ n; s+ M3 y2 S& q9 g0 k; K8 g
  882. STX JOY1_FRAME$ P% g0 H+ P( D% ~& b0 q8 c; }0 y
  883. DEX
    4 J8 `6 g) c5 X5 z; x2 k
  884. STX JOY1_FRAME+ A2 ^3 T$ f: e; B: C: s
  885. LDX #$08
    - ?6 I8 M( I3 _' \& U
  886. Key_Value* v( A, G, }7 H) Q$ K/ V% P
  887. LDA JOY1_FRAME
    4 m$ i: u) q1 b
  888. STA <Key_Getv
      H9 K- N5 r- R
  889. LSR A
    1 O' q1 X4 C; K" ]% u" P% ?, A0 O( \
  890. ORA <Key_Getv
    $ E' ?: M+ G+ B! _6 V
  891. LSR A
    2 d/ {( h- V/ U% ^$ |9 V
  892. ROL <Key_Keep& _# y3 f" p7 q9 X! M! b" S
  893. DEX
      ^2 }) j) U5 r. ~8 y, T! |
  894. BNE Key_Value
    # [# t: M: P; t$ L+ a' G6 x6 X
  895. RTS% Z& L  J# U9 x: y
  896. ; E1 q7 B, Z; M' a8 f* i8 D
  897. ;==============================' v9 H. ~+ [' X5 |
  898. .IF SOUND_BAR_SHOW_ENABLE
    6 U8 ^5 {4 w8 A  b7 [
  899. ;音乐条显示6 s7 @7 w8 d# B
  900. Music_Vision
    " @. h9 q9 L6 ]0 O
  901. LDA <Text_Disable_Flag. N+ A+ W0 B2 h2 c8 b- ^
  902. AND #TEXT_DISABLE_ITEM
    7 X' q$ e+ _* x4 g* @% n, N
  903. BNE Music_Vision_End/ j. A" b6 o7 U. A* Z
  904. AND #TEXT_DISABLE_BAR" |. ~, n2 g$ k/ d- x" h
  905. BNE Music_Vision_Set
    # }0 u& c( H7 g2 b& R/ d
  906. LDX PPU_Cur
    ! K# U1 }: f, @# k5 X
  907. JSR Music_Animation
    ; n/ p# H- U2 x' b2 K% Z8 O
  908. STX PPU_Cur- r8 h3 {% R' a
  909. Music_Vision_Set* b1 M1 v, Z- _6 s, C
  910. LDA <Text_Disable_Flag
    0 ~9 n5 ?7 v+ g# {' O# x- K; s- q
  911. AND #TEXT_DISABLE_BAR ^ $FF- }1 v2 u: X3 q6 ]3 k
  912. STA <Text_Disable_Flag- y* y: e( \/ f; G9 @( i
  913. Music_Vision_End
    6 Q) W+ A* \- t3 n8 w& y' B% ~
  914. RTS/ B- b# K) G/ b: L
  915. ;------------------------------2 K* U/ x/ q6 ^4 n) \( U' \
  916. ;音乐条显示处理4 o+ s0 [  f/ Y
  917. Music_Animation
    # P2 N5 B1 Z9 k  y+ m# D3 Z
  918. LDA #PPU_MODE_CNT_LINE7 T% P! [# W& n0 Z, G
  919. STA PPU_Addr,X9 ?0 f# z- D+ H  n9 r: W' J$ |7 s
  920. INX
    9 t. z2 a5 i: I) p$ l# b0 c
  921. LDA #HIGH(Sound_Bar_Pos)8 B0 b( G) T- N: B
  922. STA PPU_Addr,X
    1 Q0 U1 @! T* R5 C. w3 R; O1 l- a
  923. INX/ b& N' m, ]( G; a, v! W! p) Z
  924. LDA #LOW(Sound_Bar_Pos). o9 S4 j; W2 D$ r- ?) X/ V
  925. STA PPU_Addr,X
    % Z' [2 g5 x. }# l3 A! a; g
  926. INX2 Q! Q4 @" ~4 O
  927. LDA #$08/ |0 r% {1 [! @3 x
  928. STA PPU_Addr,X
    $ _1 q6 g# H8 |
  929. INX
    2 I! [( I& m/ u/ j$ b8 W% ]( W6 R
  930. LDA Sound_Bar
    4 H1 Y. k1 o3 d$ ^
  931. JSR Volume_Convert( i" O& V8 S4 Q0 D0 a
  932.   g2 G% e/ n" m9 P. E6 y) f1 j" s6 H
  933. JSR Volume_Set_Cnt
    2 S% J+ H& O2 O1 O  b0 ?
  934. LDA Sound_Bar+$41 D( A! j3 `3 y- ^
  935. JSR Volume_Convert
    + k! I1 ~+ p6 ~7 r" ^: d4 `
  936. 3 j3 i6 \( ^) j. r7 T8 }
  937. JSR Volume_Set_Cnt
    . F. Q+ N* p. K2 H
  938. LDA Sound_Bar+$8
    + B6 P* K, B9 z% |6 @: B
  939. JSR Volume_Convert9 |" C: G+ [, q8 {/ U0 g, K3 ^0 b
  940. 9 d& j5 o! j$ x! V& p0 e. V
  941. JSR Volume_Set_Cnt
    2 B2 o% d) q2 X
  942. LDA Sound_Bar+$C
    - x& {$ E  p- }- g
  943. JSR Volume_Convert9 f. d( {( w6 W3 S/ t

  944. . ?: s5 g5 \+ Z3 z
  945. JSR Volume_Set_Cnt1 }% s9 H$ V3 l: \
  946. % \: Z1 i0 Q+ ^: E" B# D& x. l
  947. LDY #$10
    $ }6 }1 o# J$ X
  948. LDA APU_STATUS$ y9 J: c9 Y7 x3 ]4 U1 r
  949. AND #$10
    $ U. a- `! a3 Y& K' l, v3 X
  950. BNE Volume_Count
    ' T: {' g7 n8 L9 t
  951. LDY #$00
    0 M% o( q& y1 T3 h7 E1 Z/ g4 q# k  `
  952. BEQ Volume_Count1 e' r: s* o8 n) z' n

  953. - K" f. |9 e) x9 T% V
  954. ;------------------------------( `  h/ Q& n. w/ p# f
  955. ;音乐条处理4 o: P  B# r* y8 j3 k1 m7 U
  956. Volume_Convert# q+ G% Q/ o3 b8 L' t- ~
  957. AND #$0F
    . \1 i. H) n- [2 O2 E
  958. TAY
    " |4 ^, J, B! u
  959. Volume_Count9 |0 i! {5 b! g# r7 {6 \
  960. LDA #$08
    8 o& _5 m* ]5 P  w$ i
  961. STA Sound_Bar_Cnt7 e! U5 b" W" n
  962. Volume_FILL
    * h  h' B  ?# E1 T) w  G- b
  963. DEY0 \3 W' P9 O( n8 j
  964. BEQ Volume_Half9 w! ]+ I; c2 Q( L
  965. BMI Volume_Empty7 x2 H# B* t- ^
  966. DEY
    4 b$ F3 j0 s, i3 n* u  }5 F% x4 }
  967. Volume_Full4 U/ H: x5 q  X, _
  968. LDA #$16
    + M- k& v7 L! m# B0 L' C) W4 K# e
  969. BNE Volume_PPU! a, y6 V0 X8 r
  970. Volume_Half6 G6 \8 D* k, F% h  Q% L" Z4 Y$ W
  971. LDA #$15
    ) e0 w# D  F' ~! B8 Q: L
  972. BNE Volume_PPU- Q. E3 B% k) X
  973. Volume_Empty
    7 p0 q# H! i" m1 Z
  974. LDA #$143 v% _+ {5 k7 c1 h- f5 ], H
  975. Volume_PPU
    - B+ W  h3 \, G% F! O8 `' E( ~
  976. STA PPU_Addr,X3 `9 H  R8 a: O$ [% ?% Q6 K
  977. INX
    7 ^& J9 K/ D1 w3 @
  978. DEC Sound_Bar_Cnt' L9 F- w+ n  B% e# G5 T
  979. BNE Volume_FILL
    4 E  a, s" C+ u2 b6 J! S! V0 {
  980. RTS% T! a+ c8 P2 H+ t/ \

  981.   S/ n" t, T4 r) ~; N3 j$ T  k
  982. Volume_Set_Cnt" j; K4 w3 f2 H" O8 O8 R$ N' ?  {
  983. LDA #PPU_MODE_CNT_LINE_NEXT6 c- @- D) }: L' V* b
  984. STA PPU_Addr,X
    9 O6 _$ |* _6 T! U
  985. INX
    : h5 b; S5 I' _
  986. LDA #$08: c: x, f: \0 a$ i" m$ D
  987. STA PPU_Addr,X! b1 }! T3 d+ y6 O' C& {
  988. INX' r0 R9 m' c1 T, m# e( q
  989. RTS; X: ]% H. N) z  {' }# y+ R
  990. ' C7 j/ r, X) u: N# ]5 p: d
  991. .ENDIF
    / Y3 W' o2 q' z  X9 s7 j

  992.   k3 t1 d+ v2 `2 |" \; p
  993. ;==============================
    ( W) w) e/ p- X  k" N! i- @
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    / o! o2 Z4 @" h
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式" w6 d9 Y: }- S, {0 e% V/ K" @; q
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除" ?) j. h: }' G9 {) E# K- Z* Q
  997. ;------------------------------7 f" ]: L& Z1 a& x: R' R
  998. ;PPU处理
    ) ?, ?( t) L# u8 f6 S
  999. PPU_Proc* n, i, D+ W+ n1 n4 G2 Z8 h
  1000. LDX PPU_Cur7 R1 {- @5 R( ?; e8 M; t
  1001. LDA #$00
    7 Z% C. g4 v7 I
  1002. STA PPU_Cur* L% K7 k9 [, T. h
  1003. STA PPU_Addr,X
    / y9 l4 Q; W" c0 L; h" T9 q
  1004. LDA PPU_Addr& L0 c: q) v$ f6 {/ r& c& f
  1005. BNE PPU_Proc_Beg
    4 x, P5 m4 a1 G$ U: C" \8 n
  1006. PPU_Proc_Ret
    , |; y; g8 C" U6 z, y# }% U$ o9 `3 }
  1007. RTS" a& o0 `- w; c# Y
  1008. ! x' T( v. d2 f; p. b* Z: g( B3 G/ b
  1009. ;------------------------------
    ( D5 D) g, p) B% ~* {4 a
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    ; u' }9 q. q) {
  1011. INX# g3 s4 s* f& m) j
  1012. LDA PPU_Addr_L
    8 L( h5 O1 ~6 e: F* f
  1013. CLC
    % t! h' i6 V: M3 n
  1014. ADC #$20. [1 s" x' @; Y$ [
  1015. STA PPU_Addr_L
    # {5 e# N, k! T# F
  1016. BCC PPU_Mode_Return_Cnt_End
    7 q$ @" ~& n. V& P
  1017. INC PPU_Addr_H
    % Q( ~0 v" U6 j2 z4 x. e4 k
  1018. PPU_Mode_Return_Cnt_End2 ^9 I( R' u) l1 Y0 V: A
  1019. LDA PPU_Addr_H. x- i4 y" P, A8 T& {3 S! l
  1020. STA PPU_ADDRESS& C8 J. L$ v! q( c" B' z7 h
  1021. LDA PPU_Addr_L
    : A" E! X3 I( O; v5 a9 J
  1022. STA PPU_ADDRESS
    9 \4 B4 i( W# s
  1023. LDA PPU_Addr,X( V# s9 ~4 u2 X" i
  1024. TAY
    . F" S+ n+ x) z# h
  1025. PPU_Mode_Return_Cnt_Write
    + u4 Y% s4 v' `, [
  1026. INX* E' G) @9 t7 C- l0 d- u+ e
  1027. LDA PPU_Addr,X
    - c: V# z8 y9 }7 K- S: u
  1028. STA PPU_DATA/ ^/ e6 m1 V9 G3 b: b
  1029. DEY! z, N; q  m* t0 g
  1030. BNE PPU_Mode_Return_Cnt_Write
    % N: ]9 x% G: i3 B1 P
  1031. JMP PPU_Proc_End
    9 G; [' h  {4 s! a

  1032. , g- c0 g. L9 R% t* R' T5 o% y
  1033. ;------------------------------( N. F# S5 a! v; Q) `/ S5 ^
  1034. PPU_Proc_Beg  ;处理开始) A5 M5 V8 {5 W5 v% l
  1035. LDX #$00
    - }* F! H) H) t+ b6 L4 L/ x, a
  1036. STX PPU_MASK! K* g& e7 q, L1 a  k% B2 Y" g
  1037. ;------------------------------
      H: o( H1 x5 j$ e0 l
  1038. PPU_Mode_Select  ;模式选择. }- [  Q- \  |# i/ {
  1039. LDA PPU_Addr,X  U* o, w% \- u/ @5 o- @5 N
  1040. CMP #PPU_MODE_CNT_CLEAR
    1 m# G1 E- Z. d& ?
  1041. BEQ PPU_Proc_Clear* t5 f% J: ]9 o3 K  ?9 k. b
  1042. CMP #PPU_MODE_CNT_LINE* R, w5 e1 W+ R% o1 f* W* p
  1043. BEQ PPU_Proc_Cnt_Line1 [0 j' M! E+ d! N( {- g
  1044. CMP #PPU_MODE_CNT_LINE_NEXT( g& p6 f# Q+ C8 L
  1045. BEQ PPU_Mode_Return_Cnt
    % n( m5 @' W) T3 \- z- K9 t! f
  1046. JMP PPU_Proc_End_Write
    # O! N7 Q7 \7 }! M1 u( R
  1047. ;------------------------------
    ; g2 J" @2 F8 T# P! c
  1048. PPU_Proc_End  ;单行写入结束$ ^! g' w) b8 P$ C
  1049. INX* A2 A* v: @1 d2 N$ c1 r  y
  1050. LDA PPU_Addr,X
    $ P' [6 z% x" r# d& `3 t
  1051. BNE PPU_Mode_Select
    + k$ X0 I, ~" \; e. S" u
  1052. STA PPU_Addr5 G; e& X3 N# F# o0 X$ Y
  1053. JSR Update_Palette_Color% d% p4 P( L& l; p" T% \  c$ o

  1054. % G& U4 |) G; m# n' T
  1055. PPU_Proc_End_Write
    3 H6 z, A  I& V, k, }7 r& ?  ?9 h
  1056. LDA #$00
    / E. ~( G3 C  M  ?
  1057. STA PPU_ADDRESS
    0 [& |- J! T$ w+ }8 v( }
  1058. STA PPU_ADDRESS
    ; M4 Q4 y; ?) G# I5 x/ H- k1 |
  1059. LDA <Text_Disable_Flag" @- I, A* S9 b: F& F) M* t
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF2 k( E& i1 r3 K6 z5 h
  1061. STA <Text_Disable_Flag
    & p1 ~/ L& P  i" H) [
  1062. LDA #Scroll_X
    0 M. m7 k' Y4 Z6 {5 `/ M! k
  1063. STA PPU_SCROLL: w( F# E$ B2 F1 `8 f5 @1 D: ?/ N
  1064. LDA #Scroll_Y
    - H9 b" C$ X& `& n2 r! P
  1065. STA PPU_SCROLL0 m% w* s6 V8 A4 @' a
  1066. LDA Screen_State
    " f# |3 K* `$ w; \1 x
  1067. STA PPU_MASK
    $ `$ c( i' ~5 O+ z1 }! }3 p. w" P# O
  1068. RTS
    9 X% C1 i& G: F) P: b: X/ _- j+ D9 ^

  1069. 6 d; T# K0 m& Y$ i
  1070. PPU_Proc_Clear
    # _, b1 a$ {7 ?1 E2 W8 k. b" H" G) d
  1071. INX
    , ?. m) V& A( K$ l, k6 [2 g
  1072. LDA PPU_Addr,X4 x8 m. e5 _) B, I3 w% V5 B/ q& b
  1073. STA PPU_ADDRESS$ N! u7 _6 U3 g" ]1 c
  1074. INX, i* ~! j2 T- K. I* c4 Q3 z
  1075. LDA PPU_Addr,X
    ; A' n8 I) ?! F7 ~% L% ~* J
  1076. STA PPU_ADDRESS
    ( w5 r1 ?) G; L6 A6 U  d
  1077. INX/ O% `! }7 G, v+ x5 }
  1078. LDY PPU_Addr,X
    5 ]( }& M9 U  [) l' t
  1079. LDA #$00* r& t/ H% _- P6 ?( R
  1080. PPU_Proc_Clear_Write
    ! |' l8 T# k$ h
  1081. STA PPU_DATA
    7 d+ f8 A: F5 {" X4 w6 t; `- u0 D
  1082. DEY& w2 _9 |+ S0 m$ g
  1083. BNE PPU_Proc_Clear_Write
    + }9 Z' T4 G% y& O! C/ J
  1084. JMP PPU_Proc_End
    3 I4 H6 |6 W/ k5 S, o
  1085. / b4 H3 P* M$ R
  1086. PPU_Proc_Cnt_Line
    $ z8 i# _6 x8 K1 D
  1087. INX
    , q1 j) E9 L6 s4 Q
  1088. LDA PPU_Addr,X/ }7 k2 ^+ `; T2 j* b( {! ]
  1089. STA PPU_Addr_H
    0 f* I3 G* D& B& r! }! X
  1090. STA PPU_ADDRESS
    ' W; U2 Z8 X5 z
  1091. INX$ L2 m- V8 q/ Y  T
  1092. LDA PPU_Addr,X3 [1 l1 o' U5 y% [3 _, p- K
  1093. STA PPU_Addr_L: l* e" h" V6 A  h
  1094. STA PPU_ADDRESS
    8 l4 A% q4 v9 _( l7 P$ ?8 Y9 K
  1095. INX
    2 K' t3 \0 K# f
  1096. LDY PPU_Addr,X
    9 L( {# I: @# T0 |/ T  C2 a$ F
  1097. PPU_Proc_Cnt_Line_Write( m3 o, c/ H/ c
  1098. INX
    / w+ r. X/ V0 e0 W+ W
  1099. LDA PPU_Addr,X1 I8 z- i$ y2 `) t# V
  1100. STA PPU_DATA
    . m, n8 C- g; A2 U
  1101. DEY
    . ?9 Q$ K/ @. t$ y% k8 {/ v
  1102. BNE PPU_Proc_Cnt_Line_Write/ e0 [( e# X1 Q9 @: ?" u( r
  1103. JMP PPU_Proc_End
    0 p- h0 ?$ ?1 M, a; a

  1104. 7 C8 @" G8 `2 D3 }+ S( h2 ^
  1105. ;==============================
    9 l( N5 u0 e1 `
  1106. HEX_To_Dec;十六进制转十进制
    " n- s# p) L4 O/ t' l& \) m+ Z6 x
  1107. STA <HEX_Data- e: R. w% Q# @; F/ `
  1108. PHA! ]4 Z. {+ T( g
  1109. TXA/ j3 [  B+ c2 R0 |
  1110. PHA. Q3 F% j. s) C# k6 s' j6 y9 W* ~1 D
  1111. LDX #$00
    ) _  O& ~' t' O: e+ F' Q' x
  1112. LDA #$00
    6 W( x2 a$ |8 L1 g: p; q' ?6 b
  1113. HEX_Cln/ R1 z  U: l4 U0 L$ J6 U' L
  1114. STA <DEC_H,X
    $ t- c' s+ N  @" j0 F
  1115. INX
    $ M  p. i$ K2 L7 J. l' B7 t8 c
  1116. CPX #$030 Q' L* S* `9 ^# L* Q* X
  1117. BCC HEX_Cln( M: x" ]  v  o9 x5 m4 C, Y! s- I
  1118. LDA <HEX_Data% Y7 U$ P' f  Z( z
  1119. ;------------------------------' {& `. @; w6 v% U6 D
  1120. HEX_100. R& X/ N# }# h- d2 O
  1121. CMP #100
    : d. s1 a% r+ O( X) ?5 p- `, O3 m$ ^
  1122. BCC HEX_10+ b) i- B# i5 s: ?' I7 x
  1123. SEC+ u/ `  p. \' _# h, z
  1124. SBC #100& b8 ]1 v  D5 E, \) ]
  1125. INC <DEC_H" M& Y5 k' _! u; j/ D. h, T$ h9 d
  1126. BNE HEX_100
    : ?% o5 q9 \+ G. Y2 B" M! v
  1127. ;------------------------------
    $ Q" G. L% ~* P) \
  1128. HEX_10+ z3 r/ D9 R9 p: V2 Y
  1129. CMP #100 _7 \7 `. D$ ?& u  J
  1130. BCC HEX_17 o0 O( v* d, D2 k6 s2 n: o
  1131. SEC
      Z7 S# o" S7 N  n
  1132. SBC #10" X8 J: y% K3 E' P
  1133. INC <DEC_T
    " c  R& `/ @* j. g6 p/ e8 e. |- B
  1134. BNE HEX_10; y7 ?% Y. G) z' e# |" s
  1135. ;------------------------------* F5 Z" ^, x" y$ [* A, O8 D0 y
  1136. HEX_1
    0 z8 o& v1 p2 O. x, ]7 ~
  1137. STA <DEC_L2 c# m8 H- ^( ?" r* k$ E
  1138. PLA
    " m$ K- W9 p2 ~, @2 W
  1139. TAX
    9 M  H! U2 ^# ^
  1140. PLA
    * K( ^. L  q, |5 L
  1141. RTS
    " c1 |. {6 A6 ?' D: [; M" Y

  1142. ; P! o8 |) x& E/ x' N4 d
  1143. ;==============================
    ! S! a6 k; u& H* w
  1144. ;音乐曲目显示6 |% ^* F' f5 B+ q. V1 K  M
  1145. Music_Show! E+ l- g  c& h* K! I
  1146. LDX <Music_Item_Cur6 C5 d, d$ ~* N) b
  1147. LDA <Music_Cur,X( K: v8 D( q$ k
  1148. CLC
    ) ~# x, t3 I  F: k& F5 T
  1149. ADC #$01* G5 }8 V( ~& w5 N
  1150. JSR HEX_To_Dec
    1 S# \. b# ]4 d- ~. i
  1151. LDX PPU_Cur- p( a% N' G- m8 ?7 b; p
  1152. LDA #PPU_MODE_CNT_LINE6 W, w6 r8 l" ]
  1153. STA PPU_Addr,X5 u/ [# u$ P0 U2 J9 u6 C" b- t
  1154. INX
    ! k1 ~3 G2 ?7 j- _: h/ D
  1155. LDA #HIGH(Play_Index_Pos)
    ) F3 A6 y: {6 x, P7 I' S
  1156. STA PPU_Addr,X4 G' ]; O- N9 S$ f  Q
  1157. INX5 ~# o5 `3 p) x8 ~. _- O9 c7 {+ @6 Q
  1158. LDA #LOW(Play_Index_Pos)+ Y* q& @- H; Y- ^. Q* l0 X9 u+ Q
  1159. STA PPU_Addr,X
    / }) V8 u8 R; d, w
  1160. INX
    + M! T' j7 w3 {3 M2 o6 a
  1161. 8 F. M7 P* i4 M$ ]7 G
  1162. LDA #$07
    " _$ x5 }  q% l& s$ [
  1163. BNE Music_Show_Length
    ; P) v( G0 k( `& `- T. h, r: b

  1164. ; v8 N6 J& i7 F) n
  1165. Music_Show_Length" g- d3 J% M5 k0 |0 T
  1166. STA PPU_Addr,X/ D( ^4 q" ^1 ?
  1167. INX2 e, B  _8 [* r7 A& c1 _

  1168. 3 h7 f/ R( p  F
  1169. LDA <DEC_H
    0 |, k. U% V- f% Y# T
  1170. ORA #'0'
    5 v( R& }2 E2 q: h' u' f0 L
  1171. STA PPU_Addr,X
    5 t+ T# y8 t% z1 G3 y) }1 t
  1172. INX5 J( F, W/ h8 }9 {% N8 Q9 P) ^
  1173. 4 \9 ?6 M* z$ t6 D& j, f
  1174. LDA <DEC_T
    $ b0 n6 S" u5 Q/ V, C5 w3 D
  1175. ORA #'0'
    / u/ h1 e1 @3 Y! J% C
  1176. STA PPU_Addr,X5 b& [! g2 ?% n+ n
  1177. INX3 r7 Y- b" w4 }0 Z: P$ B% L/ m

  1178. ! b; ^+ j" y" R  J
  1179. LDA <DEC_L
    % C' \8 Y- w3 p
  1180. ORA #'0'
    , D3 h, a  W9 d
  1181. STA PPU_Addr,X+ k6 s) g& g4 v- d0 X
  1182. INX! b& X$ F* ~4 i7 m  e& Y7 t

  1183. 3 ~5 p& W: Y, L/ M; y
  1184. LDA #'/'6 n* s* i7 H) ]; y) D
  1185. STA PPU_Addr,X4 ^" o. b, Q8 K0 R: N
  1186. INX
    $ H; `7 L  ]+ N, |/ t" t( x4 t9 K
  1187. Music_Show_Total
    " w' H1 z+ M0 n" `" Z( O. c
  1188. LDA Music_Total& y1 ?8 U: o" E# I) ^
  1189. CLC
    - m8 X6 C% }! p" @9 L
  1190. ADC #$01
    % e7 m9 e5 B9 M2 r1 S3 x' `8 o5 {/ J0 s
  1191. JSR HEX_To_Dec' @! d  c" Q4 d) h3 f6 e& r
  1192. ( n5 Q. g% W, a. n" T8 w% W2 u, M
  1193. LDA <DEC_H
    $ u' M( k+ Z3 G8 \$ b% n% R" \8 `
  1194. ORA #'0'9 L" s; |# P! n2 ~
  1195. STA PPU_Addr,X! |, T' Y/ Q* d4 V  u; k3 b: t
  1196. INX& r. H& R9 }6 x/ n0 P7 m0 H! B2 n

  1197. 3 Y  `! D# b0 v( V# t  K# ^
  1198. LDA <DEC_T8 j+ @6 Z( H/ h3 s: W% O
  1199. ORA #'0'
    , o& i, ]/ m9 N  L4 X
  1200. STA PPU_Addr,X
    $ E) W. c9 O$ R) s2 s
  1201. INX: c5 T+ t6 U( _& t* }3 }  @

  1202. 4 ~8 M+ }6 C3 u1 R. N6 D
  1203. LDA <DEC_L
    / L5 G0 ]6 U9 j% j" A) Z1 d7 G3 y6 r
  1204. ORA #'0'9 P$ _2 d2 `. R& }8 }
  1205. STA PPU_Addr,X
    , {+ D6 s4 @: o
  1206. INX1 C3 @) Y+ v8 V; U9 S, n) ]

  1207. 1 e" J! s9 [% |0 M5 Z$ M
  1208. STX PPU_Cur/ Y& B; a) N/ f7 _6 N8 `/ B. K
  1209. Music_Show_End1 I+ Q8 t  Y3 P
  1210. RTS
    # f: m4 ~: M% @$ T; j
  1211. ! n4 H. P5 \8 i( V# c9 Y. b1 r
  1212. ;==============================
    - x2 l7 [; f8 G9 Z4 B$ I
  1213. Time_Show;播放时间显示
    1 g/ G* I2 G" V: z- ]
  1214. LDA <Text_Disable_Flag
    % G; J% s1 ?. J1 ]/ H
  1215. AND #TEXT_DISABLE_ITEM; x5 F0 R4 F" \0 u, o- R' d
  1216. BNE Time_Show_End3 ?' ]7 j1 d5 L/ j. {/ B8 y9 R
  1217. AND #TEXT_DISABLE_TIME, x. _: w; a& i
  1218. BNE Time_Show_Enable: b* B8 v. w2 V, f

  1219. $ Q  ?7 n. s  h! G5 T7 A
  1220. LDX PPU_Cur" D, t* O5 u' o( S
  1221. LDA #PPU_MODE_CNT_LINE6 n  _- f: o5 p+ m9 @
  1222. STA PPU_Addr,X
    , E$ h) a* i6 `6 u
  1223. INX8 O' ^2 m3 @- M& d& \- ?$ S( ~
  1224. LDA #HIGH(Play_Time_Pos)
    . @, a9 [! c- t7 @. R
  1225. STA PPU_Addr,X7 x% e) O$ o( \1 X7 _
  1226. INX
    " [; X( p* |6 G! i! p
  1227. LDA #LOW(Play_Time_Pos)
    . {  _" e7 N' `6 Q( I( c
  1228. STA PPU_Addr,X! T% h! T- O$ v/ h' v
  1229. INX
    8 T! B+ s; q" b* e
  1230. LDA #$08
    9 k- B, F3 u# M. W& e: [# [$ \
  1231. STA PPU_Addr,X9 r2 B7 @; I* }$ k! m
  1232. INX
    * h# k  x. @+ u, Y
  1233. Time_Show_H
    ) R: H6 a' a/ _# q$ }6 [
  1234. LDA <Time_H
    - ?( y4 V* w+ x
  1235. JSR HEX_To_Dec
    / j8 F% A8 a+ I- f! J
  1236. JSR Time_Digit
    % a+ q5 E; K3 r% E/ D2 E0 W
  1237. LDA #':'
    , v( L; P- j6 u0 [
  1238. STA PPU_Addr,X" {6 q' a- R4 u' [' L
  1239. INX
    5 e- }; y( ]  y/ \1 v
  1240. Time_Show_M
    % e5 B4 ~0 ]# M- |1 o% |: @" ^0 _: G
  1241. LDA <Time_M5 v, b2 [1 [; x( N0 }, _
  1242. JSR HEX_To_Dec
    7 i5 F6 Z% K! x) a' |
  1243. JSR Time_Digit
    ; `9 L3 ^! A% W# w" B
  1244. LDA #':'
    . y3 M4 d6 J$ A& P0 K
  1245. STA PPU_Addr,X" X" z1 A7 L3 H+ C1 V' ~
  1246. INX" Y: b  X3 N0 I$ y; L8 S& T: h
  1247. Time_Show_S
    , e4 r* b. p3 ^. K/ l0 ?: R
  1248. LDA <Time_S
    6 Y; ?' k+ L( d$ S- l* W
  1249. JSR HEX_To_Dec
    & t3 J- y) I, R* h4 b/ H3 ^
  1250. JSR Time_Digit
    . a3 F. _4 G" F  K
  1251. STX PPU_Cur( [: I: E: L% V: z$ f
  1252. Time_Show_Enable  t0 w5 f4 e) ?0 i$ r2 b8 w) B
  1253. LDA <Text_Disable_Flag' F% R/ {9 S! P& t3 o* S
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    8 o0 F+ g% V  f2 r3 R* s+ R
  1255. STA <Text_Disable_Flag
    1 k# R% p4 m+ ~0 f9 q0 d1 p3 g1 e
  1256. Time_Show_End
      T- Y& L7 i  H, m. U
  1257. RTS
    $ F+ {% p  {3 Q2 D. b* T

  1258. 3 J: ^/ R! |2 U4 v  l. W% l
  1259. Time_Digit
    8 H# r# L0 [& Z. M1 _  W
  1260. LDA <DEC_T# J# H! }# A4 p  z& q% y! V
  1261. ORA #'0', c; X5 g0 K: @; s6 y! r
  1262. STA PPU_Addr,X
    9 P  N$ p3 X: j- r; t  ~2 a$ w1 j; w2 v
  1263. INX1 \- q- y7 q7 w: \; G) m
  1264. LDA <DEC_L! _+ l+ r" {. h9 O
  1265. ORA #'0'
    + S2 f: K8 s0 J
  1266. STA PPU_Addr,X
    . @! j, T4 R6 ?0 B' n
  1267. INX
    , U# l( r/ j; W1 t- ?6 f
  1268. RTS7 O& o6 C; @) e" m

  1269. 0 X$ x9 T9 V! C3 v
  1270. ;==============================5 i$ A# ^; W0 L. B' @
  1271. Time_Count;计时
    3 z8 C$ [6 ^* j8 c5 t+ N4 A) Y
  1272. LDA <Music_Stop_State
    5 Z# b+ c0 V3 U4 C  L+ U- }8 N. t
  1273. ORA <Time_Wait_Cnt
    , r2 S2 N: y9 E
  1274. BNE Time_Count_End
    * ]" ^4 P/ D9 R- W7 z) P
  1275. INC <Time_Cnt
    $ j, L, y$ t+ \- X0 E
  1276. LDA <Time_Cnt
    ( y' V  H/ u9 x6 H: I- c
  1277. CMP #600 L! X  z0 l# w/ n1 J: d  J
  1278. BCC Time_Count_End
    $ v: v2 Q/ J# p# K3 d" _; E
  1279. LDA #007 P/ f( ?7 N6 z+ l! h1 ?5 e4 T
  1280. STA <Time_Cnt
    7 t" d/ m0 k8 a1 i
  1281. INC <Time_S
    - U" N6 a4 m$ o. o& C8 f
  1282. 5 o4 M( q4 U* @/ i* T" J
  1283. Time_S_Cnt( }7 l( h0 D- T% Y1 ~
  1284. LDA <Time_S
    6 |( @+ n7 D  J0 V
  1285. CMP #604 d! A4 |$ Y! F* ]
  1286. BCC Time_Count_End
    4 Y" N, j9 n: V0 P/ R" Q* o
  1287. LDA #00
    3 }. T* ^& n+ |
  1288. STA <Time_S
      D" g( C% D" W$ E
  1289. INC <Time_M' O* ]6 V4 ]" V$ [; V
  1290. 9 ]! T; h7 u5 O7 k5 e
  1291. Time_M_Cnt. S. X7 K2 Q7 _" @5 W% T
  1292. LDA <Time_M
    , y5 y$ V& P. o. [* p8 L+ A) `9 Y+ v
  1293. CMP #60- W& Y% O  k) r. L4 n
  1294. BCC Time_Count_End
    ) |% I' x8 ]5 W; ]+ P1 I
  1295. LDA #00
    ' J' @3 J( v# x8 T3 r
  1296. STA <Time_M
    1 _6 |6 q& ~$ e9 P6 y6 N
  1297. INC <Time_H6 m1 h. L5 g6 Z& H8 F) ?
  1298. 2 P5 [8 {, n# ]: O
  1299. Time_H_Cnt& b: j* f3 Q: i
  1300. LDA <Time_H9 g) I3 _8 o  s' K5 l3 C7 @
  1301. CMP #24
    5 o  _, E  b% A* |9 Y% Y( S# S
  1302. BCC Time_Count_End
      J  X: t9 @- S0 m+ L8 C& y+ D& C- u
  1303. LDA #00
    - `7 J, K- I1 `4 D
  1304. STA <Time_H; C8 S" i6 s4 k! C
  1305. 6 m( b1 @2 d  `) s
  1306. Time_Count_End
    8 [0 }4 f- p& N8 X
  1307. RTS; |  q. S/ w1 q- ^, X1 C
  1308. ; n+ r) i& ^" D' X1 |0 X: Q
  1309. ;==============================
    ; Y; A% ]& P0 k" f# j% a% s
  1310. Time_ReSet;播放时间重置/ c: P; H5 d' o3 X( e) N5 ~2 @
  1311. LDA #$00* {7 {1 T$ n& `# `8 F& c
  1312. STA <Time_S
    6 r0 z( y7 p. w1 R8 Y- R3 D
  1313. STA <Time_M ' B; t% b0 G* G8 U" z5 N4 j# v2 z
  1314. STA <Time_H
    " J& Z' V1 J4 N# ]  y
  1315. STA <Time_Cnt
    ( l% M  u1 Q3 }) ]) O* c) w
  1316. RTS
    , T5 z# {- D4 [. Z2 x- T5 Y
  1317. 5 Q7 @) }2 J: F, z: a5 d- r+ c3 `! W
  1318. ;==============================
    6 k" i, T0 \' X1 ]9 Q& E. X: K  G
  1319. Music_Bar_ReSet;音乐条重置
    : c! W# o0 I. s! b" g
  1320. LDA #$00
    . o0 N6 I! X& R$ o7 s2 F
  1321. LDX #$00
    / H6 h* i* W2 ~# d
  1322. Music_Bar_ReSet_Set
    + y9 G4 p& ]* F# V6 j1 U# s
  1323. STA Sound_Bar,X
    5 U0 K8 O& L/ ?6 J
  1324. INX
      R/ G1 j: l1 U+ e# D+ ~$ U
  1325. CPX #$10
    ( r2 t2 I: e) E5 b* J+ i
  1326. BCC Music_Bar_ReSet_Set
    8 W' B% O$ h, ~/ H2 x
  1327. RTS
    1 B* h% q+ X$ Y: f, g0 ]1 ^* j+ \
  1328. , L% e# z: j; X5 U  y) p2 @
  1329. ;==============================5 P  @0 `! q  u6 A. Q7 ^* F1 m
  1330. PPU_Data;PPU数据写入( q* Q3 w8 ]0 P$ Q
  1331. STY <Data_L7 q7 x6 H6 H- {
  1332. STX <Data_H' n2 B4 [2 x" h- w
  1333. LDY #$FF
    . c" Y3 H3 g: K5 u
  1334. LDX PPU_Cur
    , H" t/ ]$ `  {0 O1 r7 v) p* j
  1335. DEX* Q. d7 s" X2 L' Y( _8 K& {, s; M
  1336. PPU_Data_Beg
    8 U% c1 N$ w& l/ [  c/ _
  1337. INX5 |+ A( b3 I' y1 _- p" \/ t
  1338. INY+ S8 G( a( Y3 P5 W! B
  1339. LDA [Data_L],Y
    % f- L$ D4 ~& p/ n! S
  1340. STA PPU_Addr,X5 W; ]* J7 a$ q; v6 T
  1341. BNE PPU_Data_Beg
    $ E/ N1 x% `1 T
  1342. STX PPU_Cur
    ! g) c, K% v% W$ O& O3 ]* ]5 E# A
  1343. PPU_Data_End: q" i5 }7 Q  C. b* }3 h- @
  1344. RTS
    : {( h  w: ?% `* E1 ]+ U9 _

  1345. 9 _5 v. P: b# D1 k
  1346. ;==============================2 n1 }- x( X' V- L0 t4 }' M% Y$ n
  1347. Music_State_Show;播放状态显示! Y, \: P- U: Y4 z; O
  1348. LDA <Music_Stop_State
    - C- F4 ~' X" h4 Y4 b' L! r' Q5 e
  1349. BEQ Music_State_Show_Play+ L; H! }# e$ q; j$ o8 |! W% y
  1350. Music_State_Show_Stop
    2 k; i* j0 n5 G! L
  1351. LDY #LOW(Music_State_Stop)
    % O5 V1 G" w! m6 b* J9 ^
  1352. LDX #HIGH(Music_State_Stop)* \, {) b" \8 s$ A
  1353. JSR PPU_Data
    0 w$ S( o% y7 o0 K$ @* t8 f. r
  1354. RTS6 Z$ x+ J: j; k4 W7 O+ D3 C
  1355. Music_State_Show_Play
    + b0 i% t. B3 C
  1356. LDY #LOW(Music_State_Play)" I$ @! ?" q: g0 t! |$ s5 ]% e
  1357. LDX #HIGH(Music_State_Play)
    6 ^" [( o' S6 ?4 h7 ?& s
  1358. JSR PPU_Data/ l: X' y5 Y; F+ S
  1359. RTS
      m+ k' u& K& P) O- w5 s& n
  1360. $ g0 K& W- l& w& m4 Q. {
  1361. .IF SOUND_BAR_SHOW_ENABLE
    $ B1 G- z4 X% O8 Q4 o3 G
  1362. ;==============================8 i* w3 Z! {$ [, {+ H; k  b/ G
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    ( a( h6 J# ]* J, ?" `) q
  1364. LDY #LOW(Sound_Bar_Text_Data)/ T- K, W0 M0 u5 ]2 C
  1365. LDX #HIGH(Sound_Bar_Text_Data)9 S+ m7 N3 b+ b- M1 j
  1366. JSR PPU_Data
    1 j# S, m( W- w
  1367. RTS
    5 s9 d( `& `3 C: D( g) B5 O! q

  1368. 4 X" {* T; e$ `$ `: X+ D% u
  1369. .ENDIF
    " B- Q1 U1 X  I3 H
  1370. : q. Q" W* C% K, L$ C
  1371. ;==============================% R# |% q( j) R& T, M
  1372. Set_NameTable_Attributes;设置命名表属性
    " j/ x4 l3 O& j1 T1 k
  1373. BIT PPU_STATUS
    ; Z: g) S& b! Z1 Y
  1374. LDA #$23
    + E, c2 G9 a% Z4 L' {3 c* L
  1375. STA PPU_ADDRESS5 D9 N1 l: a- h
  1376. LDA #$C0
    , _; m/ w4 d5 Z2 R% Q- @5 I
  1377. STA PPU_ADDRESS
    9 V' }: c3 o4 r, o2 a0 c! z5 J
  1378. LDX #$00' ?/ Y0 e! n7 b( s3 ?3 l( G
  1379. Set_NameTable_Attributes_Write$ V5 `; o/ ?# p! C) {& }
  1380. LDA Palette_Attributes,X8 F, Z+ h' m2 A: _, F
  1381. STA PPU_DATA6 q) A$ s3 s* a- E2 C% Q
  1382. INX+ M& k2 M( L  v9 R: o
  1383. CPX #$40" ^$ {+ h4 ~$ d. `1 O
  1384. BCC Set_NameTable_Attributes_Write  Q/ D( O* Q1 u/ p0 m) m" l
  1385. RTS
    8 U+ R, S5 g' t, R7 p) I2 N
  1386. * m: z- \% w- ?1 L2 c8 F1 T, x4 C
  1387. ;==============================
    4 B6 k5 V  D# X3 ~) {; e" v- e
  1388. Set_Palette_Color;设置调色板数据
    ' a: O3 S  l" p0 g* V2 J2 c
  1389. BIT PPU_STATUS  P) N4 {9 B7 [+ |& a' C) W( _# ~. U
  1390. LDA #$3F
    & A' i3 E  y9 G, }% v- X
  1391. STA PPU_ADDRESS
      _# n, D1 r7 o2 W( C: U
  1392. LDA #$00" m- |& s! G* r7 A9 N9 f
  1393. STA PPU_ADDRESS# V  i# T+ D6 F! A5 p/ b( F( r
  1394. LDX #$008 o) j& F2 o! I
  1395. Set_Palette_Color_Write
    # B1 D7 r; F- {0 w8 ~' G$ {
  1396. LDA Palette_Data,X1 K5 w6 s" G1 c3 V5 X
  1397. STA PPU_DATA5 D/ {: T0 i' j5 m* v9 ?
  1398. INX7 N# q, b* s! U+ T7 m! p
  1399. CPX #$20) ?! j4 F( ^: n2 \9 r2 \% g
  1400. BCC Set_Palette_Color_Write
    ' Y$ D' o3 j0 y' }
  1401. RTS
    5 V3 X/ |2 \7 M2 _

  1402. ! p1 H0 x! @5 X$ U8 |* I
  1403. ;==============================* D' d- _! S% r4 X; S
  1404. Init_Palette_Addr;初始化调色板数据, F3 G- X* [% O  u0 _# K# ]" L7 }; d8 F
  1405. LDX #$00! G8 i# H$ R) |  q
  1406. Init_Palette_Addr_Write
    2 u4 F/ U0 W& P0 ^# z  z, D8 N/ T
  1407. LDA Palette_Data,X& d; K- p2 J. ]6 j
  1408. STA Palette_Addr,X
    6 L8 X& t7 m* U7 u* m1 k; D
  1409. INX
    * T# f# _5 I/ J  N6 @& V( c
  1410. CPX #$200 H( S7 T- D2 H, A  ?: e1 k- c
  1411. BCC Init_Palette_Addr_Write
    - b+ t9 Y  E' K8 ^) ?; k( N
  1412. RTS" T* h# F0 Y; W( W& L8 T4 @
  1413. & ]0 w8 f- \3 l# U" g9 }
  1414. ;==============================
    / b3 a. ~6 A6 P& ?/ J. e5 y6 ]
  1415. Update_Palette_Color;更新调色板颜色
    + o+ F5 n- z% U$ h+ X0 u6 c! W' x- [
  1416. LDA <Palette_Update_Flag
    + \7 R% U& ?5 c, q2 @  [- L: H
  1417. BEQ Update_Palette_Color_End$ E' k4 ?4 j* t6 S; \! Y
  1418. LDA #$3F
    * f: ~7 G1 @; ]0 J
  1419. STA PPU_ADDRESS
    8 ]4 V0 }; y# r! g+ b' V, o
  1420. LDA #$0C& ~/ z5 S2 C* P/ i; o
  1421. STA PPU_ADDRESS
    " H+ j- u; H6 j1 l7 m- b9 a
  1422. LDX #$0C+ y7 w# f. y8 n; X* ?; P
  1423. Update_Palette_Color_Write4 g9 }7 F  U+ V7 z
  1424. LDA Palette_Addr,X
    , S$ {$ i$ O" w8 q  r5 h/ L1 k
  1425. STA PPU_DATA
    . J' B# M; p" x* T
  1426. INX8 S" s) |4 ~1 `& X4 [* s
  1427. CPX #$14
    4 R* R! v5 m; L- ?
  1428. BCC Update_Palette_Color_Write% [8 h8 C4 d; C7 j
  1429. LDA #$00. }/ ~. r" y  E* C
  1430. STA <Palette_Update_Flag2 Z: {! h1 H, a" B3 j' U8 o
  1431. Update_Palette_Color_End& R2 O; @6 K0 ]/ H. @6 ^
  1432. RTS
      d5 ?3 F" L, A$ r9 L- G

  1433. - `& ^8 J. e2 y( t

  1434. - o$ A; X+ {* i, r! M, s( N
  1435. Update_Sprite_Palette_Data. Y7 q: G6 j" I$ T- u6 g, b
  1436. .DB $212 K( H. n. w8 f3 r  d0 K2 |
  1437. .DB $21$ j; q  r/ v9 i0 t) z$ |; p
  1438. .DB $11; E% z* ?8 j7 ?9 ]! _: \
  1439. .DB $01& B& E; c4 V5 K7 a0 @4 t' ~
  1440. .DB $01: E" e' o+ g. u
  1441. .DB $11! |, K% B" {  x2 b% I
  1442. .DB $21
    7 K! ]/ z% m( H" G% b; d9 V* Q2 S
  1443. .DB $21' z) U3 E: c& c1 z8 [
  1444. .DB $11
    & y0 Y  T5 R0 F9 w# ]% p
  1445. .DB $01
    - I2 h5 w" j& B% w$ t/ F; S
  1446. .DB $11
    4 \8 I& V0 j& E
  1447. .DB $212 c! @0 `! r; m$ M
  1448. .DB $21, Z  B7 s4 o1 L! Y9 ]; P2 E
  1449. .DB $11
    5 Q9 `- t4 _- T6 m0 R9 S# d. T
  1450. .DB $013 ?' J/ e7 F. r# h/ o" J- s
  1451. .DB $11
    : t8 ^8 e# j: T5 Y$ g( V9 U
  1452. ;==============================
    3 w' ^1 ?" \( m# S  ?
  1453. Update_Palette_Data;更新调色板数据
    $ c, @1 \: ~( |+ N6 [
  1454. LDA Nmi_Time_Count
    4 m& S* v7 |( r6 v
  1455. AND #$081 a: G2 _/ P  C
  1456. CMP #$08
      o2 B3 y; E3 X
  1457. BNE Update_Bkg_Palette_Data
    # s. o/ N) O  l

  1458. # M5 n0 M& `" C3 e- b8 f5 J6 E) k" R4 w
  1459. Update_Sprite_Palette_Data_Set
    ; S7 D/ X$ }' p! O- m1 P" }
  1460. LDA Nmi_Time_Count
    , p3 L" r2 L+ ]  Q9 w3 k
  1461. LSR A' N' j; W! a; f2 W
  1462. LSR A
    + w) g6 B9 J3 ^2 O( P
  1463. LSR A7 f& U  T, }& Q9 T
  1464. LSR A& {* [+ G/ J9 T8 B+ Y
  1465. AND #$0F0 S7 ?8 A- {0 W
  1466. TAX
    ; r& O5 C1 I+ A  Y
  1467. LDA Update_Sprite_Palette_Data,X' Z- R6 v+ r0 I
  1468. STA Sprite_Palette_Update_Addr% k/ d; ], R- V
  1469. LDA #$01- u, J( c" t' o9 h
  1470. STA <Palette_Update_Flag
    ( t6 X- i2 p& ^% _# h

  1471. - d/ s* B' c- W( `* T
  1472. Update_Bkg_Palette_Data
    + A  D: z7 x/ Y% ~: a( p: y
  1473. LDA <Text_Disable_Flag
    ' U3 q% ~6 q4 F- @
  1474. AND #TEXT_DISABLE_RAM
    ) o1 E/ s5 K( j# u* |
  1475. BNE Update_Palette_Data_End
    6 _% ^3 \: V( ^
  1476. LDA <Music_Stop_State3 S/ J3 M% Q/ t4 m- p" e: y; l) ?
  1477. BNE Update_Palette_Data_End% \9 N+ k5 p( A! ]: C

  1478. ) I% Y) X8 M# C8 N: b) |
  1479. Update_Palette_Data_Check( G% X. B3 f2 z" O
  1480. LDA Palette_Wait_Cnt& W& F% F! E: H# _3 {5 Q
  1481. BPL Update_Palette_Data_Check_Over
    + |" a& Z8 W( a: X. K1 M
  1482. LDA #PALETTE_UPDATE_INTERVAL
    # h0 ?* U8 M5 t* k; P( |. N
  1483. STA Palette_Wait_Cnt+ r* p5 G/ W8 L5 w
  1484. Update_Palette_Data_Check_Over
    $ `: ^  d! z# m2 M
  1485. DEC Palette_Wait_Cnt( M" j/ p! ?9 A/ ~" {
  1486. BNE Update_Palette_Data_End
    ) @1 G% j! ?0 I4 I, W
  1487. ) w) w/ u, G- v1 L; w, A
  1488. LDA <Text_Disable_Flag7 ^- D7 |! |0 k8 W9 u7 M4 _
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    3 T" N3 y& I. u9 T' H. }
  1490. STA Text_Disable_Flag+ ]' O' _0 f  Y( l: S/ B
  1491. INC Palette_Update_Flag+ q* p% m: K& `0 o" b6 x7 F% i
  1492. 9 q2 s, G" U3 P' Z" k7 C6 `2 F
  1493. LDA #PALETTE_UPDATE_INTERVAL
    ' A; n% f2 i5 i1 ]2 H
  1494. STA Palette_Wait_Cnt7 S7 G/ W' S! M. E/ k

  1495. 5 c  b0 @! h& q! b; @/ E8 Z
  1496. LDA Bkg_Palette_Update_Addr
    + R/ ]' p# n9 R6 u, S/ j# X
  1497. CMP #PALETTE_UPDATE_MAX
    : Z9 ^/ \8 q, ]7 Y+ S/ O; o
  1498. BNE Update_Bkg_Palette_Data_Set; O3 j; ]5 |6 w  u  K# j: ?) w- L2 F2 `
  1499. LDA #PALETTE_UPDATE_MIN - 1
    - N4 q( q- M- a8 H& U! }5 E
  1500. STA Bkg_Palette_Update_Addr' J) z! J3 g# d$ _
  1501. Update_Bkg_Palette_Data_Set, G) I) |3 K9 p- v& D3 D( F
  1502. INC Bkg_Palette_Update_Addr/ @" N; h7 n7 R6 Z6 [

  1503. # w$ O2 o# z3 h2 U4 e1 ^
  1504. Update_Palette_Data_End
    $ @  z+ X, K! Q+ L9 ^& v* V
  1505. RTS* \' k# G! C8 \0 d( s
  1506. 6 K3 U; C5 q8 Z" y0 h" x) Q& U
  1507. ;==============================
    $ n! c! ]. X( T; z1 d6 i
  1508. Show_Music_Text;显示静态文本
    9 ?, F; Q6 H. i6 z; _
  1509. LDX #$00
    6 W2 w% N2 P* p: f' T
  1510. Show_Music_Text_Set
    5 l6 Z( F# e) E# b/ {4 F
  1511. LDA Static_Text_Data,X
    5 r+ c0 W1 Q4 x) d2 c( N
  1512. STA <Data_L  Y6 U' Q3 z; H8 P' J
  1513. INX
    $ |- |4 S9 y9 b+ L* F
  1514. LDA Static_Text_Data,X
    , ]& o; w3 d+ ^& G
  1515. STA <Data_H' ~/ R: p2 d. p* J
  1516. INX$ j: F2 }) w  x, m) z2 M6 B- d; U
  1517. LDY #$00
    6 s& y+ L. O% z; n, a( ?4 O( ~
  1518. LDA [Data_L],Y- j1 g! D# x7 f2 W  H! N
  1519. STA <Data_Cnt
    % A0 Q& U  T7 t( u
  1520. DEX
    ; `. [& V6 l) p& V6 s! i6 T* N
  1521. DEX
    5 o& K9 W3 ~$ l! q0 W/ B
  1522. LDA Static_Text_Pos,X
    ) v0 [& i6 k! e: k
  1523. STA PPU_ADDRESS
    ( P+ j1 z# _: e- s7 h* K" r1 S
  1524. INX
    ! a$ c4 H0 ]5 l
  1525. LDA #$20+ Q  G& F% H' t" ^4 D# G
  1526. SEC; H  U7 m) G4 O8 l, Y1 Z; ?
  1527. SBC <Data_Cnt
    ( ]' q9 G9 K, k6 x
  1528. LSR A
    ) ]* J. H- n+ l9 C
  1529. STA <Data_Buf
    : j! ^# f7 x3 N& Q- N
  1530. LDA Static_Text_Pos,X) X% @; ^% ^/ ^0 C0 U# \" ]+ V- V
  1531. AND #$E0
    5 S5 \+ `! L6 L9 U
  1532. CLC
    1 R  G6 E; ?( |* X) r- z
  1533. ADC <Data_Buf; J  _1 }. _0 o. y( t5 q# v% F
  1534. STA PPU_ADDRESS
    6 w- q. L" `& i, |5 t% z
  1535. INX
    " e% W3 _8 {! `! b* t# F
  1536. Show_Music_Text_Set_Write
    4 g$ e) A2 ^) o2 Z. g  a( u
  1537. INY
    ' r% r' G7 Z3 P/ x, \9 z
  1538. LDA [Data_L],Y9 \. M2 {. M6 Z6 w0 k3 `
  1539. STA PPU_DATA, b3 J4 t5 l* ?& v( g9 b; i
  1540. DEC <Data_Cnt
    ' P% Q' P% J& C! d0 P0 e. m7 @
  1541. BNE Show_Music_Text_Set_Write( z! Y+ @. b/ b$ E
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    9 }7 L  i0 @! N* V
  1543. BCC Show_Music_Text_Set
    2 }  h( y& i8 L* }: d8 z
  1544. RTS$ k* E# w: U# W& R: x: [6 m

  1545. ' V  g5 B3 f& I
  1546. ;==============================# B. m3 I0 V; y* K8 R, y+ E
  1547. .IF Track_Name_Pos;显示曲目信息' ]9 o- b& ^! G1 U' w  T& `

  1548. 9 o" D, P" g+ y: K$ y
  1549. Clear_Track_Info
    ! I7 P4 ]! l! C9 I+ _
  1550. PHA
    : @1 i7 ], W7 f; }0 y7 u) _2 M
  1551. LDX <Music_Item_Cur: g( S. w5 j% G  ^
  1552. LDA Track_Name_Addr_Flag,X
    " ?& I/ e# w/ H6 `3 }( U
  1553. BEQ Clear_Track_Info_End_Ex
    7 h9 a4 {  @0 @' _9 [1 }# X) V
  1554. PLA
    5 n0 i' g; Z/ R4 v7 n% Z

  1555. " t. n1 n* T! v; t' ~6 ^& }% ]
  1556. LDX PPU_Cur
    " t( n, Y2 y, s, |
  1557. PHA- x* A& o" d) s( g8 j
  1558. LDA #PPU_MODE_CNT_CLEAR
    # ^9 c" h$ r' y% T$ ?3 ^$ S, ~
  1559. STA PPU_Addr,X" o; o1 V/ f+ U8 ?9 o7 D! W, Z
  1560. INX* F" {' R+ M; k1 |6 o/ @1 U
  1561. PLA6 q) |' Q  E/ E# U
  1562. JSR Show_Get_Track_Name_Center_Pos
    ( `+ G) D- M$ g- A; {6 u- q
  1563. STX PPU_Cur
    5 G9 z9 y: S  Q8 w9 C( f. M4 I% A
  1564. Clear_Track_Info_End2 J5 |8 a; H* W5 P; ]
  1565. RTS" y! E3 w/ ~" K
  1566. Clear_Track_Info_End_Ex3 _* ~  G5 d( d, W$ V; I+ f
  1567. PLA
    / t- n8 ]8 ]! T8 B! s0 z1 g
  1568. RTS
    . E& m: {8 i* q  O( v

  1569. * u5 Q- K* u# b3 o5 u; q  n5 _) E
  1570. Write_Track_Info
    . x7 b: n' y/ m% T
  1571. PHA: k* G5 u& a& x0 N+ e. k3 `+ Z0 L
  1572. LDX <Music_Item_Cur- c2 H4 ]( p% V' D# J8 r/ r# s
  1573. LDA Track_Name_Addr_Flag,X
    # U; V5 ]" s3 u- c
  1574. BEQ Write_Track_Info_End_Ex" e3 L  F) C1 A! H) l" p3 R
  1575. PLA+ T9 H$ Y+ Y; _8 {
  1576. + H- B" N( \5 V  A
  1577. PHA  M( X: a; I. r: p0 c
  1578. LDX PPU_Cur) n0 B" a9 S5 j; {" t0 }6 Q3 F, K
  1579. LDA #PPU_MODE_CNT_LINE% _- V' a2 ?: D5 d. f; d1 K
  1580. STA PPU_Addr,X
    , A5 u  @( o3 e2 t& h
  1581. INX6 C3 V9 ?; `+ F) x9 ~
  1582. PLA" I) h' {" H+ A& [: R; A
  1583. JSR Show_Get_Track_Name_Center_Pos, f. G( t9 r* p5 [5 k6 j: J5 _8 e
  1584. Write_Track_Info_Data
    & A5 o% O$ ^' e) K
  1585. INY
    # D6 ]8 B6 Z7 s( U5 s# B# K) R
  1586. LDA [Data_L],Y
    4 P8 h2 D# ~. M
  1587. STA PPU_Addr,X
    4 e0 w; T0 e: B# r1 @
  1588. INX- F& A- A6 \( D, J: O+ L
  1589. DEC <Data_Cnt
    # e3 Z8 t; z  a4 }, \& j4 v
  1590. BNE Write_Track_Info_Data& Y9 s/ ^: A5 H+ y
  1591. STX PPU_Cur
    # j) d% V9 \7 W
  1592. Write_Track_Info_End# w7 C% |; C1 u9 t+ n5 n! d
  1593. RTS" g' G3 n- p7 S3 P/ Q, l
  1594. Write_Track_Info_End_Ex
    $ _" f1 Q4 i; d" J0 d
  1595. PLA
    5 U+ @4 d" j9 F9 ?4 v! C% q
  1596. RTS! {/ _: B9 x4 q3 K4 o

  1597. 9 d# S& X5 L7 b. t" O
  1598. Show_Track_Info
      Q, @2 b- j3 t0 s% K
  1599. Show_Track_Info_Clear
    1 T6 C9 s8 h: D1 n$ H
  1600. LDA <Music_Last
    $ D9 Q2 X: c2 I) B: k. q
  1601. : |$ ~/ C/ q6 A; y) v
  1602. JSR Clear_Track_Info9 M9 f' ?0 n( u, l5 l5 t- S5 |' W
  1603. 4 ]- G. ^& b! ^! q
  1604. LDX <Music_Item_Cur% T! _# \8 H; j, y( H" R
  1605. LDA <Music_Cur,X
    * E  k% h* I' N
  1606. JSR Write_Track_Info
    9 m0 H' H% T) E7 @6 b+ D9 ]
  1607. RTS
    ! X+ ]+ c1 ]: ~" M/ W

  1608. ; d" k. P& m, p! ]: |& y( W9 g# V2 |; W
  1609. ;==============================
    ! y( s3 [  L/ c
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    9 k0 ^2 t, }' ?6 P- H9 G+ b
  1611. " O. I+ M) c9 y) ^
  1612. ;取出集合名索引$ D- u. Y6 K7 v0 A9 O
  1613. PHA
    5 m1 Z$ w9 j  X* W

  1614. % l2 E* j: U& g/ l  y3 \
  1615. LDA <Music_Item_Cur! M8 n1 e! p1 w
  1616. ASL A3 a, O( K" j8 }! a
  1617. TAY& J1 h& ^, R3 e6 p, N9 S8 r
  1618. LDA Track_Name_Addr_Port,Y0 j7 T. v- |+ n. Q  q3 X+ P3 I3 s- K
  1619. PHA$ c0 _; x, I% ?& U
  1620. INY
    * m8 \7 L' u1 h( n
  1621. LDA Track_Name_Addr_Port,Y% N, `. B2 G0 W! z# @2 s+ I3 B
  1622. STA <Data_H2 R: z  f# @; a; Z- g  L
  1623. PLA
    $ s0 s; U7 Z3 i
  1624. STA <Data_L
    ' U# _( F- T3 C* b; `

  1625. + g# D2 b* ]$ J. U
  1626. PLA
    : K4 u0 V0 u9 h5 g
  1627. - c6 f7 @! t" g+ _$ Q1 p
  1628. ASL A
    0 O1 |5 X7 C) b0 H7 w3 A) [4 X
  1629. TAY4 P& K* j- u5 X- R) t
  1630. LDA [Data_L],Y
    7 y; q$ i; _. i6 N0 e/ S
  1631. PHA
    0 h7 \6 P2 B' V! T4 w/ M& h
  1632. INY
    3 E- x7 B7 A* d) T
  1633. LDA [Data_L],Y
    . @& V# V+ k% P( O
  1634. STA Data_H
    2 S8 R3 |1 H! j; y( Q
  1635. PLA
    - a( W: d" z. w5 w( |4 E
  1636. STA Data_L
    / ^2 Q4 }$ Z, E6 ]5 V9 }

  1637. ) d4 s' ~# S2 h/ o7 q1 _1 N' V- |
  1638. LDY #$00/ z; P6 y/ u3 Z3 N
  1639. LDA [Data_L],Y/ ~$ R4 i6 S; E9 X  t( _
  1640. STA <Data_Cnt
    $ g7 d) O6 H. S- s/ l
  1641. LDA #$20
    7 |0 E1 ]# L  z1 N
  1642. SEC, A0 [- n4 ?5 G- c9 [  M( h1 P
  1643. SBC <Data_Cnt
    & j  K1 F2 b8 q- L# @8 T
  1644. LSR A# v; I; [" y) i  X& `
  1645. STA <Data_Buf
    4 Y, Q0 x. L# S9 J
  1646. LDA #HIGH(Track_Name_Pos)
    ) D' H, Y. }0 }% V4 X* i
  1647. STA PPU_Addr,X7 }7 g' s' v% ~" m1 P( R# _
  1648. INX! s! g2 u+ C5 {
  1649. LDA #LOW(Track_Name_Pos)
    + D# W2 T3 p; v- ?
  1650. AND #$E0
    6 f4 o" m5 k" k6 K; ^- n* @; r6 J7 C
  1651. CLC9 R& r- @# }/ g# S3 s/ X
  1652. ADC <Data_Buf" t; P# |% M  O4 @
  1653. STA PPU_Addr,X
    6 g/ L$ D! z; z. J7 T
  1654. INX. e. f$ Y- p/ q  w  O# W1 M# b6 i
  1655. LDA <Data_Cnt/ R8 i; M) p% C, w* G
  1656. STA PPU_Addr,X9 U7 {7 w1 w3 D8 F( \  u, ]) t
  1657. INX9 Q+ {9 h8 I# s% I2 r7 N
  1658. Show_Get_Pos_Center_End
    6 C% i4 W( s: p  ~
  1659. RTS
    2 J# m7 r0 }, ?- {8 W" S
  1660. .ENDIF
    # o/ n1 y4 F" b. {

  1661. 2 h; y( E& F+ H3 m" y
  1662. ;==============================/ H  o/ y5 T  y  B  o8 U9 L; }
  1663. ;音乐端口清除
    0 W  ]0 o/ B9 J/ k3 c
  1664. Sound_Data_Clear
    1 Q! q7 c9 a1 k
  1665. JSR Sound_Port_Clear
    2 U" T: M2 p1 i
  1666. JSR Sound_Ram_Clear% ^# ^6 m: T" u/ K3 K- W9 I; T5 E- ^
  1667. RTS
    . C) o8 s+ t6 b2 ?3 j5 C7 ]
  1668. % o& t0 o! N2 w5 |  k, U0 m
  1669. ;==============================
    . T% C! U6 I( D
  1670. ;音乐端口清除
    . F* W% E" d' I. ^: u/ W1 \. G
  1671. Sound_Port_Clear; L  ?- Y6 N3 b5 n! n
  1672. LDA #$00) i; f% e; _* k. ^9 z/ V! [
  1673. STA APU_STATUS  z; j6 k  T  T! J( W
  1674. LDX #$008 k8 p. b( [6 z2 o( d) k, t& g
  1675. Sound_Port_Clear_Write8 r& N6 W( C4 X/ ~9 B0 p
  1676. STA $4000,X( u7 \/ u9 o, j) `3 |8 J
  1677. INX. Z% I/ |$ S4 I
  1678. CPX #$14
    # Q9 Y1 e, _  F! g, A1 u
  1679. BCC Sound_Port_Clear_Write
    3 N% u  |! Q# s* U1 y
  1680. RTS
    ! N! J: i+ B0 O5 g4 l

  1681. * ]. i. ?) b/ e
  1682. ;==============================
      f! r7 T, e0 `8 i% |. p; N6 y3 J
  1683. Sound_Ram_Clear;RAM清除5 ]! G/ N4 N: L  Y: K" W+ Z) m* p
  1684. LDX #$00( Y. ^% {4 \0 L' A! r
  1685. LDA #$00# i( s* q0 S' ?! `+ d+ J3 G
  1686. Sound_Ram_Clear_1: g+ R2 a: Z; Y" a
  1687. STA Sound_Ram_Addr_1,X
    ! P8 k: `& C! C" M* c& X1 m
  1688. INX* O/ s# F/ l5 w; {3 t
  1689. CPX #Sound_Ram_Addr_1_Size
    - ^' B9 P& `6 S4 `* w" R
  1690. BNE Sound_Ram_Clear_1
    8 g, p# H* v1 q" p' L' `# B
  1691. LDX #$00
    ' d8 d7 T& F0 h# r  g& Y& T* u1 Y
  1692. Sound_Ram_Clear_2
    , k1 [* L# G2 d4 G
  1693. STA Sound_Ram_Addr_2,X0 W8 ^& {9 E& P0 W* F
  1694. INX  E) p( C& F" B# d! p
  1695. CPX #Sound_Ram_Addr_2_Size
    ' B4 w- o! p7 U" R
  1696. BNE Sound_Ram_Clear_25 k% r( X" P- {  Q
  1697. LDX #$00
    - G+ o/ z8 f' Z; b+ q
  1698. Sound_Ram_Clear_3
    7 Q9 Z$ d! H( o! g( h
  1699. STA Sound_Ram_Addr_3,X
    & ?5 p8 e5 Y, B/ r* h
  1700. INX
    " q9 L: V+ O+ G" G% L3 V& o, `2 B
  1701. CPX #Sound_Ram_Addr_3_Size& N: Y! \, F& J
  1702. BNE Sound_Ram_Clear_33 ~+ V$ l4 T2 _+ q! X) ^% v$ i
  1703. LDX #$00
    ! {! f7 ^2 G( L" @
  1704. Sound_Ram_Clear_4% R4 Q% p( }0 Z0 u6 N( k9 C: ?
  1705. STA Sound_Ram_Addr_4,X
    ( L# Y: w& e" M0 p+ L
  1706. INX- E1 L, G5 E" ]3 i- I
  1707. CPX #Sound_Ram_Addr_4_Size
    ' Z% q& x9 @3 J9 |: @- b' ?
  1708. BNE Sound_Ram_Clear_4
    * G( `. {* u# S% R4 X& q
  1709. Sound_Ram_Clear_57 s7 q9 r3 I* d7 d9 j. N
  1710. STA Sound_Ram_Addr_5,X. t: A6 u& z% ^$ Y
  1711. INX
    ; j! A. f% n2 Q9 Z5 m; }
  1712. CPX #Sound_Ram_Addr_5_Size
    ( M- s4 z4 {. z0 h* H
  1713. BNE Sound_Ram_Clear_5
    4 c5 E6 ~6 j; P. H2 s6 a8 Y! }3 s
  1714. RTS" Q1 w; l7 }0 b! r- r
  1715. 5 }3 C+ b3 e' e% y( f6 J: s
  1716. Get_Music_Collection_Name6 ?4 ^' G  n9 d) H+ A* R6 o( @
  1717. PHA
    $ h/ Z4 A6 M: Q: ^, Q5 u; N
  1718. LDA <Music_Item_Cur
    / n/ N5 @! h% i/ E( l" v
  1719. ASL A+ p! R2 t  W0 a2 F' |( M- S4 }% A9 Y
  1720. TAY
    2 k! y1 c& E7 Q. O+ }
  1721. LDA Music_Collection_Name,Y
    ' l# G; S% J# S+ v
  1722. STA <Data_L
    ! ~, V2 o8 X1 r$ @; _& ~0 T
  1723. INY
    ! w* r7 g& s( h2 e: ~3 u' K
  1724. LDA Music_Collection_Name,Y
    $ d* P9 H& R% Z4 ?( |
  1725. STA <Data_H2 u" `" Z2 I1 j! l( @; U+ D$ S; H
  1726. PLA0 I+ F, f' v8 F) Z
  1727. RTS
    7 Q5 Q/ y% {2 z4 D+ ?

  1728. ( [3 d5 L! J5 r' Q5 l! {
  1729. Set_Sound_Total' C6 x: \# d4 k6 [: [  q; v
  1730. LDY <Music_Item_Cur: x7 w7 v& z, {% N
  1731. LDA Sound_Total_Port,Y
    " H/ [8 r% {& i- e! ]( h
  1732. SEC3 w6 g- Y2 T+ J0 Q% K6 C
  1733. SBC #$01- Z$ p" N' Y2 D+ H
  1734. STA <Music_Total
    ! [! \% [0 L, W* g' e& V0 c
  1735. RTS
    " s" q8 }5 u9 M( {

  1736. $ j0 X+ L  w) z- T  G7 W; h
  1737. Get_Sound_Start
    7 `9 Q- @: f8 m
  1738. LDY <Music_Item_Cur. {/ z0 z$ ]7 I/ E
  1739. LDA Sound_Start_Port,Y) N% P# a7 w8 m- F) H' F
  1740. RTS
    5 m& W$ g, q' S* a; I" a

  1741. , F; I  {3 Y4 M7 d5 O# b
  1742. Set_Sound_Init_Port
    : V1 h0 S$ A6 j% Z" H  p8 u
  1743. PHA
    , f$ i1 Y. M$ u6 s
  1744. LDA #$20
      s2 L" P; ~" P: v  v8 p+ {
  1745. STA <JSR_Addr_Op! Z# e9 b) [( I
  1746. LDA <Music_Item_Cur
    / x0 N9 D; p) U4 Q) F- E8 ~# ]- \: [
  1747. ASL A" j; ~0 {7 U9 K8 A- o; H
  1748. TAY
    ' w% W: c$ C* v+ ?/ p9 l1 U' [
  1749. LDA Sound_Init_Port,Y- m0 l3 m# s+ ]; ]: y6 K+ u
  1750. STA <JSR_Addr_L! w5 r6 v) `  Q( U: L) _: k
  1751. INY% T# }9 X0 ~8 C- }7 m  l) x
  1752. LDA Sound_Init_Port,Y5 l+ c* B, y  C  l
  1753. STA <JSR_Addr_H5 C5 H4 V* R. j
  1754. LDA #$60
    8 W% @, k0 D7 G  g: N$ G- j
  1755. STA <JSR_Addr_Rts
    5 Q& B; u2 ~0 \4 r: H
  1756. PLA
    ; q2 ]3 B+ o0 e) U0 b6 \/ C
  1757. RTS
    ' l/ U* b+ y0 ?3 |9 Y+ w; I6 R

  1758. , R( z* j9 e& S7 T2 B
  1759. Set_Sound_Play_Port
    2 ]% C# i( R  I$ t
  1760. PHA
    8 y: B/ }: d, E  x
  1761. LDA #$20- b: m' [2 {, Y  Z- [' l8 a
  1762. STA <JSR_Addr_Op0 I6 O+ b/ o) o: H) Q% s- X
  1763. LDA <Music_Item_Cur; ^: c$ C0 q# ~4 K5 m( ~
  1764. ASL A
    . R( E4 C% v& `3 K
  1765. TAY
    9 t. Y5 Z' Q. m9 S5 i; r% h* t9 h
  1766. LDA Sound_Play_Port,Y
    1 l8 R# V. W/ j( t
  1767. STA <JSR_Addr_L
    2 \1 t# L2 D5 B; A7 `3 l7 H7 h, W. ^
  1768. INY/ B% O; y9 Y6 u& N2 C# n8 S
  1769. LDA Sound_Play_Port,Y
    8 b4 I! [) g6 I6 o. r; R4 J5 \
  1770. STA <JSR_Addr_H
    9 ?& |! Y7 k9 b2 `0 R0 Y
  1771. LDA #$60
    5 g/ Y* u* d) N
  1772. STA <JSR_Addr_Rts
    $ ~( ^6 P& S$ S7 ?% E& m7 q/ m
  1773. PLA6 J5 I0 T7 O. b& Q  [, @1 u
  1774. RTS9 J1 R/ U- H" i

  1775. % G$ \6 q! G9 W( y* ~7 ?
  1776. Set_Sound_Reset_Port
    ( i. ~. C. z3 z* D- @, P
  1777. PHA
      [0 r; A9 R  N* w  I! s
  1778. LDA #$20
    9 b1 g4 r! z$ A* K2 G! a
  1779. STA <JSR_Addr_Op% q* L6 {8 X! L( P  J& M
  1780. LDA <Music_Item_Cur5 E( N( E( N/ n: I
  1781. ASL A
    3 J+ l- O* [, o0 K  h: l
  1782. TAY- V5 ~  p, g$ d0 q& B; d4 f6 _- p
  1783. LDA Sound_Reset_Port,Y
    " A  Y% v0 N# |1 S% b: R8 L
  1784. STA <JSR_Addr_L  F1 c# q0 {0 F- k4 O
  1785. INY/ |4 k3 c$ Z0 y2 z6 R
  1786. LDA Sound_Reset_Port,Y
    ) E% M) `8 I! g5 e
  1787. STA <JSR_Addr_H
    1 l* Q/ _4 l7 _6 m: z% c) f
  1788. LDA #$605 D% u4 S$ [9 U  {5 M: `
  1789. STA <JSR_Addr_Rts
    5 |2 [' {: L( G& b
  1790. PLA
    0 f( [4 G5 V+ B, C% X3 @8 _9 @' c
  1791. RTS
    " k1 a& v. `7 V" L! ?/ {9 Q
  1792. 0 f( L* T( q. z
  1793. ;初始化音乐bank. @! \$ [& Y( J: L+ n
  1794. Init_Sound_Bank
      R1 n  b. `; s9 H0 f2 J' N+ h
  1795. LDY <Music_Item_Cur
    4 y( L  J& q" F0 a$ w; k( A
  1796. LDA Sound_Bank_8000,Y8 y9 `- S, ^4 k2 }  S- S
  1797. STA <Music_Bank_8000, S1 H! p5 m3 X
  1798. LDY <Music_Item_Cur
    " W. t+ F7 ?: \( A- _7 T8 t
  1799. LDA Sound_Bank_A000,Y
    . O. P6 I  K% I' M) V
  1800. STA <Music_Bank_A000
    - e- {( c5 k  g" A  E) [
  1801. RTS- A! ]& ^" J' B9 y& n' M  Y2 w& C8 V
  1802. ' [( m# }5 p. X7 |
  1803. ;==================================================0 A  ?- C+ f# c5 _5 U: ]" n
  1804. Sound_State_Reset;音乐状态重置
    & M9 z, x! P2 o% y9 E. Y+ ~, x+ E) h; u+ h
  1805. JSR Music_Bar_ReSet        ;重置音乐条  \( J+ V1 k& F, g! y( y
  1806. JSR Time_ReSet             ;重置播放时间
    0 y: c/ v7 x1 E( q

  1807. + s6 R! L! N! n9 o7 ~. J% W' ?1 o
  1808. LDA #$00! q! y( d$ T5 W- ?, H4 q& K% R
  1809. STA <Music_Stop_State
    , g+ j6 B4 L* ^  G
  1810. JSR Music_State_Show       ;显示播放状态5 m! |) w: h6 Z- g

  1811. ( J( ~, i! d! z, V8 |* Q# M2 h  a$ z
  1812. .IF Track_Name_Pos- K8 e, E  Y# ^: U2 c1 W3 `2 ?
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    * E5 M: v8 O& S
  1814. .ENDIF: y. `& D, ^! ^0 U" g4 K8 J: q

  1815. : b* [0 {+ H" B: S* ?# o  h% `
  1816. RTS
    1 ]3 d% z! H2 U# F

  1817. 2 D/ C, d7 e6 J* }2 K" ~! V4 `, P
  1818. ;==================================================1 m0 i+ B8 P) B  d6 n1 o: J
  1819. Sound_Init_Proc;音乐初始化处理
    ( J; M: v2 d* H  H7 w" M
  1820. PHA
    . F1 Q4 G) f& D* ?* S- r
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址) m% S- F5 r  w$ t7 s- P
  1822. LDA #$00
    / t: N7 R7 _$ I. e8 o7 L& f( t
  1823. STA <Scroll_H               ;重设水平滚动  H6 Z" i+ h+ |' z/ S5 m
  1824. LDA #$0F$ A: n) _6 K6 c$ m0 K6 ]
  1825. STA APU_STATUS
    - ~8 b. w9 w! G1 @$ q' i# z2 S& g1 e
  1826. PLA; s% u$ J1 C- V7 k2 U: b% Y
  1827. JSR Sound_Init             ;音乐初始化
    8 B( E4 w! d8 O1 M$ z
  1828. JSR Sound_State_Reset      ;重置音乐播放状态8 W. W; ^7 d/ D' f
  1829. RTS, ?7 |' Z7 K8 I/ R
  1830. ' t. f0 i' R2 n/ D1 r5 I) n
  1831. ;==================================================
    9 K6 s7 `+ C6 ]3 n/ K2 A$ q: X
  1832. Sound_Play_Proc;音乐播放处理
    6 d' v3 B* F  y/ B7 \% c
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
      I9 k* |' R$ X+ S) C' n# O& C
  1834. JSR Sound_Play             ;音乐播放: n! c. n0 V9 @
  1835. RTS
    3 Y( ~6 A- K) d
  1836. ' x% k/ k. o* u% G2 U- O
  1837. ;==================================================
    . G  Y8 ~) K' ?0 A7 [1 c+ Q/ L3 g7 i
  1838. Sound_Reset_Proc;音乐重置处理
    + e2 r: S0 [6 V3 g' ], a
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址  u$ i/ T  @. P7 e  j
  1840. LDA <JSR_Addr_L
    2 W& H8 X4 W5 W2 I
  1841. ORA <JSR_Addr_H
    6 G/ N' X3 e7 [" r9 Z8 Y' q
  1842. BEQ Sound_Reset_Proc_Default
    ! o9 t5 W/ h% T3 i. r2 @  w; L* x
  1843. JSR Sound_Reset            ;执行音乐重置
    4 n. I( N) H& A3 ~
  1844. JMP Sound_Reset_Proc_Init_Sound
    5 c8 |; G. F) h6 p
  1845. : M" `. K- Q; r8 l4 O8 W
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    - O! B; I; R& l' V$ W) k# H

  1847. - S+ N7 L9 p. h# o' I8 S- v8 Q
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    4 ?  _) u; r1 G& x# i& J* J, z
  1849. LDA #$006 ^/ x1 s0 d8 D+ q) U
  1850. STA PPU_CTRL
    1 P. N+ R, |3 ~6 i. ^# U

  1851. - X1 u; d3 x7 c* `, h
  1852. JSR Sound_Data_Clear
    . {! G8 d( j' t& c7 F2 w' i8 q

  1853. 0 G; B4 D& _! \7 U8 D4 t
  1854. Sound_Reset_Proc_Default_Wait
    ' ^" o+ Q: s, A. v8 G. C1 \9 T
  1855. LDA PPU_STATUS
    : {; i* P" @" R' L' m0 j- K
  1856. BPL Sound_Reset_Proc_Default_Wait
    , t: \: J' y- o" U; D
  1857. 8 u9 g$ ~) s5 t& K  _, r
  1858. LDA #$00  u: H, {9 V7 k& B
  1859. STA PPU_ADDRESS$ G  C( S( Q' K4 i% E9 h8 `
  1860. STA PPU_ADDRESS# t* \4 o: r& M1 W- ?3 T$ T6 S$ ^2 Q! V
  1861. STA PPU_SCROLL4 [/ h% j2 V6 M; O
  1862. STA PPU_SCROLL
      j3 Y" I. C! M) O% m; X* Y
  1863. % }6 }  V, @0 T! F* {$ j
  1864. ;恢复PPU控制" ^/ T- g: \- E6 W% a# F: y
  1865. LDA Screen_Ctrl
    9 o1 k( c1 E/ e. x9 J. b
  1866. STA PPU_CTRL4 Z: T+ R$ Y0 J

  1867. + C" V! b& B  L: H
  1868. Sound_Reset_Proc_Init_Sound- Y; E2 H7 H# y- A' s
  1869. LDA <Music_Stop_State0 |+ f# R7 J8 Z0 X. z) W
  1870. BNE Sound_Reset_Proc_End1 m, f2 P; K* U
  1871. LDX <Music_Item_Cur
    ! R5 z$ P0 q9 t& ]* Y
  1872. LDA <Music_Cur,X" W5 i% T. n. A  a
  1873. JSR Sound_Init_Proc
    3 P  ^5 }! ^3 \# \+ @+ P
  1874. Sound_Reset_Proc_End$ b& n9 F# A6 k$ Q2 h& P
  1875. RTS+ e/ X3 A3 \3 G( c( c* j
  1876. + N0 v$ U* J9 k1 U" i$ H
  1877. ;==================================================
    9 R. u+ S% L6 \4 b
  1878. Clear_Item_Text;清除页项目
    9 Q' _" b- ^/ M- G' E6 }5 A+ _
  1879. LDX PPU_Cur7 K0 _& W5 k$ O4 K) Q
  1880. LDA #PPU_MODE_CNT_CLEAR9 l& R/ _% w8 d0 o( @
  1881. STA PPU_Addr,X- N9 P+ V7 Q  K3 R
  1882. INX2 C2 O' z5 N; ?
  1883. 8 p, }! r* _( M/ d7 V
  1884. LDA <Page_Last
    , g, t, g" \) q
  1885. SEC
    0 T. t) I# D2 f# w. B8 G
  1886. SBC <Page_Last_Index
    ! L/ M2 `5 {5 t& Z5 T
  1887. ASL A
    ; r0 q7 T& F5 N4 [

  1888. ( F8 @# a2 l# y( K+ M% P
  1889. TAY
    # e4 W$ Y" j: z
  1890. LDA Item_Pos_Data,Y7 Q( c5 K6 {0 C9 ~( U& {
  1891. PHA4 A! E! k) n. b( b* J
  1892. INY
    % J5 D$ m. X& Z2 i+ o
  1893. LDA Item_Pos_Data,Y# D+ q, z; p, W+ n; ~7 v. Z
  1894. STA PPU_Addr,X+ u5 @* G" _3 b
  1895. INX; K6 ]0 g: m! n: \8 g
  1896. PLA* u% J, U& T- R8 B* H5 E
  1897. STA PPU_Addr,X
    % n6 \* Y* N4 e# x
  1898. INX
    - s: Z, S8 I2 @! b% F, C( u' T

  1899. ) i0 k4 N) H5 k0 ?* t1 L: q& c
  1900. LDA <Page_Last  ?; U0 ^1 P; k4 p$ ~' l! o* x; T
  1901. ASL A
    7 H' w; _# _3 B7 t8 q* f& y& ]: K
  1902. TAY
    2 V, u6 `' W$ j/ [( @# V" U
  1903. LDA Music_Collection_Name,Y
    " W5 F# |0 V) G  A8 Y' F
  1904. STA <Data_L! _4 P7 g( W% D, {2 G
  1905. INY- }) u( t6 l, K; x  f
  1906. LDA Music_Collection_Name,Y
    , o2 J5 U% O2 ?8 y# J
  1907. STA <Data_H
    : j% \% k$ \& C2 _0 q1 r
  1908. % W0 u: i$ Z6 v  P
  1909. LDY #$00
    " A# H- l* K$ P9 |7 q! R& t. {  _
  1910. LDA [Data_L],Y* T7 L1 q* F0 F% N9 {9 y/ k
  1911. STA PPU_Addr,X
    5 X8 F* q1 e2 S# h9 X9 j8 [
  1912. INX9 A: V& A0 o) J2 W* }  [
  1913. Clear_Item_Text_End
    % a7 F/ ~# |) W8 z' F* K
  1914. STX PPU_Cur1 O4 X) |% n7 i! w5 D
  1915. RTS
    9 j! y; l0 Z  ], y) l1 V

  1916. - C; c7 X  b; H3 f# @
  1917. ;==================================================
    ! X+ O: }8 Y! ]
  1918. Show_Item_Text;显示页项目
    + |" ?, R* _: @# Y' Q: o
  1919. LDX PPU_Cur
    - N. p; Y; e0 C* f' M3 p, W
  1920. LDA #PPU_MODE_CNT_LINE
    7 c. {, B0 G7 x$ ~% o- l
  1921. STA PPU_Addr,X
    0 G9 j- C6 F) {) _' i; }
  1922. INX
    ( H  M& @& I1 Y  E6 Z8 Y8 @9 A) f
  1923. LDA Page_Cur
      e' e+ G# K% h( q
  1924. SEC7 d0 a1 b) l4 w$ C/ a8 n& n
  1925. SBC <Page_Cur_Index8 L! P7 ~$ z  X$ B. p2 P/ W
  1926. ASL A* z8 l/ ?8 P9 ^
  1927. TAY
    $ {, G9 D8 y: m! t8 n# ]* ?! O/ j! h
  1928. LDA Item_Pos_Data,Y
    9 q5 x! l5 r9 V
  1929. PHA
    $ g1 h( g8 a/ s, b& h) v7 H! z6 N; ?
  1930. INY  K* B9 V- n0 \% N. D1 C- |+ o
  1931. LDA Item_Pos_Data,Y' u7 u" t. W" D7 X" W$ v2 k
  1932. STA PPU_Addr,X
    4 ?: ]7 ?& v0 O( V& o
  1933. INX# b. v: m9 `1 o9 D) n' g' G5 ^' l
  1934. PLA
    8 N) P" G- V6 [
  1935. STA PPU_Addr,X3 W/ }+ c2 S! Z$ |# ?* l1 T
  1936. INX9 r/ x6 _% }$ l9 z) D
  1937. 5 g& ]/ |! b5 k! Z. x2 X
  1938. LDA Page_Cur
    - {  K8 F; l4 A5 h& q4 Q
  1939. ASL A
    5 n7 G8 K, B, ]3 A0 t
  1940. TAY2 t# F- e' T8 _! l2 G. D8 L- n+ q- U9 W4 ^
  1941. LDA Music_Collection_Name,Y5 d2 I1 p& G) |( W
  1942. STA <Data_L
    4 E, g; `7 l2 _0 h
  1943. INY
    % Y% r- R" F; Q* n1 {, r
  1944. LDA Music_Collection_Name,Y( o+ p' l7 Y- w% p% o. z6 O. S
  1945. STA <Data_H
    " W+ d' i1 j) D0 d4 E

  1946. , h6 [. `1 g2 D. D% `  s2 t: u0 s
  1947. LDY #$00
    & {2 O+ t6 w/ d6 @3 Y
  1948. LDA [Data_L],Y, C& B$ {$ u3 Y; I* K. M; E; k8 J0 A0 D
  1949. STA PPU_Addr,X7 B( ?( \5 r2 q( Q. B: ~. g
  1950. STA Data_Cnt
    ! z. x/ z$ S5 c* ?% N+ a1 S, \. X
  1951. INX. q- b0 `- ?6 P# s8 e

  1952. # e( Z. H# ?( z/ I" N  ^
  1953. INY9 Q! {& M! o7 j/ ]1 f8 w& ^
  1954. Show_Item_Text_Write, S' r- C: q1 f0 H5 ?% O, H% P
  1955. LDA [Data_L],Y
    7 L" n3 \$ t; l9 X7 g
  1956. STA PPU_Addr,X
    7 L9 C2 ?) V6 E# k/ N, b3 [$ e
  1957. INY
    # ?. z# ]( k, Y5 M. y4 d0 u
  1958. INX
    . t+ }! l! m2 S* \' c
  1959. DEC Data_Cnt
    ! D: u( M* [8 e- V
  1960. BNE Show_Item_Text_Write
    % b2 ]5 K* p9 t

  1961. & {1 g+ g8 F' o+ u
  1962. Show_Item_Text_End- l# a, V5 F$ k* }
  1963. STX PPU_Cur
    ! d; s  _6 ^9 h( K
  1964. RTS
    0 r* N' F: `( d& v6 u
  1965. " ~+ _2 c" p" j$ n( P
  1966. ;==================================================: f  m  y4 v; K$ ]6 L5 i% q
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量4 k: s$ D/ J% F% ?2 U+ ^6 k0 Z8 ?
  1968. STA <Data_Buf; ^2 h+ z4 @0 T% F, T! w
  1969. LDA #$00% j+ k; E, d1 z) V6 {' A; E4 F
  1970. Get_Page_Index_Calc1 d; j3 u. E, X7 a& r( c; u2 |
  1971. CLC
    + m0 a, J; p9 F0 X/ C
  1972. ADC #PAGE_SIZE  _; W2 f+ N0 Q
  1973. CMP <Data_Buf7 Z, z4 }9 f; P: h, r( I6 m4 |
  1974. BCC Get_Page_Index_Calc' B8 O/ D$ w1 S+ [* f
  1975. BEQ Get_Page_Index_Calc_End# P' @" v$ D  X3 ?# W5 S
  1976. SEC1 M1 O" A' L7 o( ^8 L; _
  1977. SBC #PAGE_SIZE
    1 ^. T6 t8 w5 h9 q0 B
  1978. Get_Page_Index_Calc_End
      h. q# |" F) l& B, l
  1979. STA <Data_Buf, Z& ]3 J' z* ^7 T, W. Q
  1980. Get_Page_Index_Cnt
    2 ^4 u6 ~: e& J; A3 ?
  1981. LDA #PAGE_SIZE
    5 N9 b) _$ t2 t3 V5 g+ ~: k
  1982. STA Data_Cnt) A; ]- J! C* ~( y

  1983. 2 p; t5 [1 A; v* n4 T- v) D# c
  1984. LDA <Data_Buf- S( ?8 y) D! D" H
  1985. CLC
    % o0 B2 c7 N( G" `9 f( t
  1986. ADC #PAGE_SIZE/ U7 \0 w& b5 u! b- X: h8 w
  1987. CMP #ITEM_MAX_SIZE
    % [9 |# \  C5 V' q9 c1 _* u
  1988. BCC Get_Page_Index_Cnt_End
    " h7 e1 ~! _  |) y" Q# G
  1989. # v) Z8 o1 ~" R
  1990. LDA #ITEM_MAX_SIZE
      N) {+ ]4 h* O" V# B+ u  B
  1991. SEC- \' [8 y8 ?: Y
  1992. SBC <Data_Buf
    ) ^+ c+ C' I6 Q" B
  1993. STA <Data_Cnt
    & C, Y5 Z/ V+ D9 e! h" a2 U
  1994. 1 w. W1 I* G& j; f6 U* ~3 G
  1995. Get_Page_Index_Cnt_End% J' \2 t9 E8 R* c2 |% x
  1996. RTS! D% L# ^  \. ^. ~  E  L; m9 @- N5 Q
  1997. . {& {0 |) v4 t5 V
  1998. ;==================================================
    6 A* L& o+ C8 j5 o( F
  1999. Get_Last_Page_Start_Index! l! l+ Z" k# Q& V* K! N3 }' V
  2000. LDA <Music_Item_Last# e) [3 _8 C% J: X
  2001. JSR Get_Page_Start_Index$ i/ b: |: Y. q7 l4 t3 j6 E
  2002. LDA Data_Buf" w; R/ ?- L7 V5 s: i2 W2 J
  2003. STA Page_Last
    7 O( f+ G0 _0 Z, d7 w0 y+ r. v
  2004. STA Page_Last_Index
    0 _) [/ X  p6 J5 B
  2005. LDA Data_Cnt, H4 H' e: K2 Q) L) g$ o
  2006. STA Page_Last_Cnt3 P+ L% ^! f& J
  2007. RTS+ O1 c2 J; |% B3 Z

  2008. # E0 w) w- k* V' u
  2009. ;==================================================" F8 y6 N2 x4 L1 W
  2010. Get_Cur_Page_Start_Index  M$ z5 g5 g9 p* y, B8 ?, M9 E/ h- Z
  2011. LDA <Music_Item_Cur6 Z/ {, X& j  s; p4 h2 x7 G
  2012. JSR Get_Page_Start_Index
    3 o! {& }/ _# f0 Y
  2013. LDA Data_Buf, V* Q6 E4 _3 S% t8 j: z
  2014. STA Page_Cur
    0 T8 ~  W; Q6 c3 ]& x6 m5 \
  2015. STA Page_Cur_Index
    4 e  @% z5 P0 W# P
  2016. LDA Data_Cnt, e; V% C( d3 o' K( X
  2017. STA Page_Cur_Cnt/ ?9 d  t6 A! U4 {# a
  2018. RTS+ z/ Q" K  j8 w9 B! W0 {9 n. _9 K3 S4 q
  2019. 8 S" g3 L/ T# S
  2020. ;==================================================: q; i' ~1 D  l/ B& O
  2021. Show_Page_Text;显示页文本. ^7 O( N5 ?. f
  2022. LDA <Text_Disable_Flag* T! t" e& Z! V; E& Q2 n+ |
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
      i1 n. e5 U& W$ e: |+ T! O! [
  2024. STA <Text_Disable_Flag1 N& z: x2 N4 F, `

  2025. " _, b) V% C" X4 z; V, M1 E
  2026. JSR Get_Last_Page_Start_Index
    - d1 o0 M9 H4 q
  2027. JSR Get_Cur_Page_Start_Index
    & y, `3 s# e4 I9 ?5 g" y2 g5 Q

  2028. ' L5 ], j) c- a" _! E
  2029. Show_Page_Text_Set
    , `4 c4 K! E0 Y& ]
  2030. ( z% n, N/ Y0 u! v& G+ W" r/ B$ |
  2031. Clear_Page_Last_Item;清理上一页6 C) X" K7 ^1 ~: E" p5 a
  2032. LDA Page_Last_Cnt, U' P8 b0 q, \3 w0 R& D
  2033. BEQ Clear_Page_Last_Item_End% N( X8 n  \4 u9 b
  2034. JSR Clear_Item_Text3 k* t# n& {1 q7 M) j0 j7 q
  2035. INC Page_Last) |6 I2 C( F  R- y% h
  2036. DEC Page_Last_Cnt* [8 ]/ N9 v# I; ?8 f/ I# S& D
  2037. Clear_Page_Last_Item_End- r/ X% s) J6 k5 ~$ B& [. H0 w- G3 m
  2038. " @6 G4 s5 L/ _- e2 J- n6 \
  2039. Show_Page_Cur_Item;显示当前页) U7 \: ~" I; t: p, z6 |; ~3 Q
  2040. LDA Page_Cur_Cnt+ q% F1 k; J. ?  U4 ]1 G
  2041. BEQ Show_Page_Cur_Item_End& V2 q, o% Q8 e* r' }
  2042. JSR Show_Item_Text
    ( t* R9 c4 M& P$ `1 i
  2043. INC Page_Cur
    8 N* i: K- C7 N0 @- `" t! U8 d
  2044. DEC Page_Cur_Cnt9 b9 y3 Y, U' \% v6 ]+ K: W2 |
  2045. Show_Page_Cur_Item_End# O0 u% v) m/ U, H( \

  2046. ' n* a3 H, {; r
  2047. INC <Time_Wait_Cnt$ ^4 a  r$ B1 ~
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作! t! t9 N' |# i+ J2 w) T- i% X
  2049. LDA <Time_Wait_Cnt
    7 P; [) a, k" s# e( w
  2050. BNE Show_Page_Text_Set_Wait9 p9 S- T5 a/ N# A/ n
  2051. " _1 ?3 u9 T. s- Z6 N7 o
  2052. LDA Page_Last_Cnt: O; Q+ Z+ {: ?' {
  2053. ORA Page_Cur_Cnt/ ~  E% C; d  v8 ?' o9 {
  2054. BNE Show_Page_Text_Set6 S2 n: u8 [* i$ X
  2055. LDA <Text_Disable_Flag
    - x! Y( P" r; k7 L- M$ D; e
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    ! b+ j$ S# K/ \  W0 w9 Q( w- P$ m
  2057. STA <Text_Disable_Flag
    8 d1 g+ N+ R- x2 S
  2058. RTS  p: e6 [* y6 W/ z+ v0 O
  2059. 0 P( p! C- B7 [, H9 I
  2060. ;==================================================
    ) F2 H$ ~1 S" R* M- B& ?. [. m
  2061. Last_Item;上一项
    + P* N" ^' j2 `1 F
  2062. JSR Clear_Last_Track_Name, l7 Q, _# q4 R4 ?
  2063. JSR Disable_Text_Draw1 e, ~" V2 ]; C4 [! h) ^9 i

  2064.   U3 \) P  ?1 ]8 Y
  2065. LDA <Music_Item_Cur* ~/ [* q& y- k7 W6 a  e% p
  2066. STA <Music_Item_Last
    9 @( V; |( o- X0 Y  ^9 g# j
  2067. ; }- ]3 W3 d( _; v/ P
  2068. JSR Get_Last_Page_Start_Index* U% C; r& s% a; E6 T

  2069. : s3 c) t+ B0 u3 j
  2070. LDA #$003 s* m, u! t# v  f% G3 j
  2071. STA Data_Buf- z8 W2 _/ A, b' ^) O

  2072.   }+ F1 t: R. |; G( \
  2073. LDA <Page_Last
    + t5 I' F, ?# E  z" M7 [
  2074. CMP <Music_Item_Cur
    6 i/ p1 x; H! e% C& Y2 m- {* z& R
  2075. BNE Last_Item_Begin
    9 D. h0 p0 P) n9 W  i
  2076. ! M3 E/ d6 C- v9 G9 b9 m
  2077. LDA #$01
      c$ q$ ^$ `8 v4 b1 Y* t* U% U8 ]" G
  2078. STA Data_Buf' k  r9 d7 c8 @$ G  C) g# U
  2079. Last_Item_Begin* b: |0 g# b/ T
  2080. LDA <Music_Item_Cur+ L( j8 W6 M: H& W+ @% r$ n( u
  2081. BNE Last_Item_Set, w/ P1 h; h! m5 M/ O
  2082. LDA #ITEM_MAX_INDEX + 1
    7 m( k% _# r' a  }3 Z5 N) E
  2083. STA <Music_Item_Cur; ^* W  O' i9 T
  2084. 7 I% R2 W0 z, _+ t% f9 V* ^- H
  2085. Last_Item_Set
    ; e" `3 }0 s' e+ p1 ]2 S$ S
  2086. DEC <Music_Item_Cur
    + c6 ~* N- ]# H  z1 B5 d/ Y
  2087. LDA <Music_Item_Cur3 [! Q0 {% @# Y5 R& m
  2088. JSR Reset_Current_Music
    2 `" f! Y" I  _" B5 R! J% B
  2089. 0 m8 k8 a$ u7 K
  2090. Last_Item_Play( _% i+ X2 e2 c6 R0 _
  2091. LDA Data_Buf
    # ~1 Y6 m2 e# u/ @9 t6 r
  2092. BEQ Last_Item_End% j% W# f' u/ q) g
  2093. JSR Show_Page_Text
    : L/ T9 Q5 V( y) c8 L- W8 [
  2094. Last_Item_End( `9 v# b8 m+ j( c8 h7 i: a
  2095. RTS
    % |- R7 L  a8 \  y: j* z, s
  2096. ' R0 r8 l/ n& g8 c: }% l. O1 X4 X
  2097. ;==================================================' u( F6 Q+ k5 a/ @1 Z
  2098. Next_Item;下一项
    8 q* ~4 d1 q1 `. L  G" F
  2099. JSR Clear_Last_Track_Name
    " o/ z$ _, m0 o! v) n
  2100. JSR Disable_Text_Draw# I% X8 ~: \1 [* o1 T

  2101. * n( h) r8 E1 U7 S# @! i6 s4 ]" z
  2102. LDA <Music_Item_Cur8 O0 C) X1 t3 A! y2 P) [) s& T
  2103. STA <Music_Item_Last" a$ P, m( E% _; N) j6 J
  2104. 5 ?) R+ [/ {& ^5 P# Q9 S
  2105. JSR Get_Last_Page_Start_Index
    " p# [  ]8 Q5 ?8 P3 T

  2106. , r1 u7 T4 h  o1 Z2 b
  2107. LDA #$001 J+ u7 ~' P2 z) W# D+ L& F
  2108. STA Data_Buf
      r8 b2 c4 a, ?+ p3 s8 w! ^
  2109. " K2 s. f+ \8 G  N9 e* \' F
  2110. LDA <Page_Last
    ( u6 B- V% P9 D& X% _
  2111. CLC8 v& C4 o. _& l; M' W7 i" W1 a2 x
  2112. ADC <Page_Last_Cnt1 S/ V- Z3 y, B8 H8 c* u! o
  2113. SEC
    ; t, [! [6 D+ e- s# B* N
  2114. SBC #$01
    4 e9 z  P# _6 T* I$ s0 f2 d
  2115. CMP <Music_Item_Cur
    5 {* I% o+ }+ a+ g6 S
  2116. BNE Next_Item_Begin
    ! ]5 c' H; u9 W0 U

  2117. + b" u9 A; x: b
  2118. LDA #$01' {( Z/ M+ a* s  _9 l5 g
  2119. STA Data_Buf" m) @4 _6 Z% A& j8 t
  2120. Next_Item_Begin; b* C- R! t" d: s
  2121. LDA <Music_Item_Cur
      S, n$ N) m1 b0 U5 d! L
  2122. CMP #ITEM_MAX_INDEX
    & e8 ^6 p' k3 i1 z
  2123. BCC Next_Item_Set
    2 V" v7 n  @' Z
  2124. LDA #$FF' y  K' X, v8 ?
  2125. STA <Music_Item_Cur
    " J4 x  X3 K: @- x; T
  2126. Next_Item_Set
    , I: ^) |4 G; M( B; A
  2127. INC <Music_Item_Cur
    2 t5 P+ N2 U- \; y" c
  2128. LDA <Music_Item_Cur0 O2 q' n4 i+ B" \4 O3 m( O! D
  2129. LDA <Music_Item_Cur
    5 @( d9 G) p1 q4 K
  2130. JSR Reset_Current_Music) P7 W6 {: v. b& Z. y
  2131. Next_Item_Play
    4 k$ `+ W0 G/ I
  2132. LDA Data_Buf. e% p8 e7 f) O0 h0 z5 y- p
  2133. BEQ Next_Item_End
      x% S8 m* l9 Q3 j! a$ o2 @
  2134. JSR Show_Page_Text5 ^1 s, v9 G/ r+ L& [% S
  2135. Next_Item_End
    - N' J) O5 v2 W
  2136. RTS) _, J0 u7 }( e$ I

  2137. 9 U* y6 _+ j* O. ]3 ^
  2138. ;==================================================! p2 j; l) ^$ u" T; P: F
  2139. Last_Page;上一页
    / u; `$ N) \) @* E( P- U8 p
  2140. RTS& m- {% y4 n8 ~: `

  2141. - G; @6 w" q; z: x% X5 W* f
  2142. ;==================================================( Z2 f: f% w$ o7 |( f9 A
  2143. Next_Page;下一页
    1 I5 W  R- k! C9 F1 J* [4 e
  2144. LDA #PAGE_MAX_INDEX5 f$ [! s* m/ g3 O3 V0 @3 G3 }7 n0 S
  2145. CMP #$01" i5 k3 o& D( t& e2 n5 i
  2146. BEQ Next_Page_End
    " `* C- h4 [! M  z

  2147. * U$ |1 D8 m. u3 X
  2148. LDA <Music_Item_Cur
    7 e# ?; a% i5 [- r' j8 Z
  2149. STA <Music_Item_Last
    * n( B1 F2 ~% @1 z! M

  2150. 2 {6 W/ X& ], }* k
  2151. JSR Get_Last_Page_Start_Index9 q2 g4 y5 ~) i  ^! Z/ m1 @
  2152. 4 Y$ k4 i8 [; o+ M9 I) f
  2153. LDA <Page_Last_Index
    6 B! s4 T0 M% p& s, a$ w
  2154. CMP #PAGE_MAX_INDEX0 C% G, b8 p2 Y8 n# P
  2155. BCS Next_Page_In_End_Page: K2 b+ w. n1 f1 A) n6 j9 T
  2156. ! v& d1 j3 Y" }( p' J
  2157. Next_Page_Not_End_Page;不是在最后一页! x8 L, z5 q2 I% K  p
  2158. LDA <Music_Item_Cur
    - [/ u7 n) Y* e
  2159. CLC
    . ?( C' e# z+ {* l
  2160. ADC #PAGE_SIZE: v" a( c/ B# c0 [- ~2 I8 R6 r8 l
  2161. CMP #ITEM_MAX_SIZE& C+ d/ q. r4 I+ E3 L  r
  2162. BCC Next_Page_Not_End_Page_Less
    3 U& p# f+ w: R' t
  2163. LDA <Music_Item_Cur
    . p' p; m) @3 F* [3 T$ F
  2164. SEC& B3 L4 m" J( {5 y4 c1 m
  2165. SBC <Page_Last_Index
    6 p- O* M& K5 G. G. L) u3 ?$ {1 C
  2166. CLC2 w8 t( m5 Z5 g8 R
  2167. ADC #PAGE_MAX_INDEX/ L- f, o1 z3 t1 ^* u9 t
  2168. CMP #ITEM_MAX_SIZE
    & {) v1 X8 f( j$ O8 {
  2169. BCC Next_Page_Not_End_Page_Less
    1 A: y& ~8 E& o* t
  2170. LDA #ITEM_MAX_INDEX) f9 Q' I6 |, k6 Y# {% ?' i
  2171. Next_Page_Not_End_Page_Less
    : ]4 W+ M% o3 l7 ]9 x
  2172. STA <Music_Item_Cur5 \9 d6 @+ ^* m& I9 F
  2173. JMP Next_Page_Reset
    . F7 a- @6 c& B2 H
  2174. 0 _* g# e" Q( E
  2175. Next_Page_In_End_Page;在最后一页
    5 Y) l( c1 A. Y3 u3 _5 p
  2176. LDA <Music_Item_Cur1 _; Y% Z% Q* J7 e# ?. l; D  A. T
  2177. SEC+ k5 A, q4 A$ m3 f% m
  2178. SBC <Page_Last_Index: h+ x% u/ a* P* Q* [! K+ [6 k$ t
  2179. STA <Music_Item_Cur% ]: j' c. r+ i! I" s/ }

  2180. 6 p, U  a. G9 l1 _. D; b$ _; X. @
  2181. Next_Page_Reset2 W" z8 z8 @1 R/ j6 o1 R9 M
  2182. LDA <Music_Item_Cur
    0 h4 ~1 W% c( P8 ^" P7 A" B
  2183. JSR Reset_Current_Music
    , H0 j% ~3 K: [3 c
  2184. JSR Show_Page_Text
    - P& {, q* Z: ?
  2185. Next_Page_End
    / h0 C! M1 c- D. A, n  ]
  2186. RTS! M% N% s, u# Q/ S' a

  2187. / P* p* @! m1 a6 Q1 \
  2188. ;==================================================
    7 Q4 P( r4 V. D) e! g
  2189. Disable_Text_Draw;禁用音乐条刷新3 T" e* z0 a" u6 L, p
  2190. LDA <Text_Disable_Flag
    # z7 u) D/ P& W  J5 b+ Z; D  ~# b0 N
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME" r$ j6 W- Z& L; X2 I
  2192. STA <Text_Disable_Flag
    + [" ?; P  v3 }& l( O% u
  2193. RTS
    0 ]" v2 n* g- q; c2 }# w. {& |
  2194. * V* w& c: R3 I: e" n
  2195. ;==================================================
    / |- O$ M: \' Y. P$ l
  2196. Clear_Last_Track_Name;清除上次曲目名3 q/ d2 Q# Q3 ]/ O+ L2 r* {& I2 }% _
  2197. LDX <Music_Item_Cur
    & g8 V" e( J- O8 A" F3 _& o, V
  2198. LDA <Music_Cur,X
    ) W6 z3 a7 k  Y7 A2 b: G4 h1 ~
  2199. .IF Track_Name_Pos4 z# W$ {8 V; M0 p7 v  o1 e
  2200. JSR Clear_Track_Info
    4 ^( G! U' i8 \& B
  2201. .ENDIF
    & N' a5 V; V/ ~; G' i. q* L
  2202. RTS
    2 n: ~/ G- P; D0 a) J: s: g

  2203. ' ?3 {& a# k$ {5 w4 m6 d
  2204. ;==================================================
    ; c$ M! z) x' I
  2205. Reset_Current_Music;重设当前曲目' U4 u/ n3 S6 b

  2206. / z8 U& Z! B8 l/ Q  K3 x
  2207. ;写入当前总曲目8 I2 |6 o- }* |4 D; i6 t8 o" W
  2208. JSR Set_Sound_Total- `( ]+ n. _& m3 j3 k, i4 N% E
  2209. LDX <Music_Item_Cur
    ( v: z( D5 K0 i) K% \  V

  2210. ! @: _( t  d* |" b, \8 j
  2211. LDA #$00$ [4 g: a$ S1 m
  2212. STA <Music_Last
    # c( g- ?9 K/ B( u! p/ @( `4 M
  2213. , E6 E5 o4 W4 u9 C5 z+ z
  2214. JSR Sound_Reset_Proc3 \$ R' G& v/ ]* C  M
  2215. JSR Music_Show
    : }; e$ i7 c/ `1 I
  2216. RTS& O  M+ r4 w% `
  2217. 1 N3 \/ I2 k. V1 c6 c7 G
  2218. ;==================================================
    ! Y& J; c  x( L  h7 C' H
  2219. Music_Song_Stop;音乐停止
    $ D" {; I" P0 t
  2220. LDA #$01
    ; k4 l. t! F8 C& X! _0 x5 I
  2221. STA <Music_Stop_State" Q+ T6 g; g5 Y, i, D
  2222. JSR Music_Bar_ReSet
    ' j! y+ x+ w6 b+ L$ D! C  T
  2223. JSR Time_ReSet
    + g: A& Y2 K0 Z* n: L
  2224. JSR Sound_Data_Clear
    ( ?/ d8 S, P3 `6 y9 Y0 M
  2225. JSR Music_State_Show
    + u# l6 u8 J9 g2 R* q, D' o
  2226. RTS
    . x  \1 Q" @0 D5 ]1 G
  2227. - v# ]# H0 h' z  \2 B
  2228. ;==================================================) H" E9 z7 s3 ?5 W" }* D1 a' V
  2229. Music_Song_Play;音乐播放
    # l! X: W# T4 D+ x8 T* F
  2230. LDA #$009 l* H; \! v+ F5 a
  2231. STA <Music_Stop_State
    ! R$ ]. @7 r9 }( L& i
  2232. LDX <Music_Item_Cur' j  J# ]4 l6 h* k# f0 v7 e
  2233. LDA <Music_Cur,X+ z( E$ J& e0 q0 ?7 T% T2 X
  2234. JSR Sound_Init_Proc
    4 B8 i+ K% N  i
  2235. RTS
    : Z* E: F; a0 x& E3 Q  o
  2236. # n" Z9 c5 ~3 C1 p  o
  2237. ;==================================================! h+ s9 y% Q; M1 X# C
  2238. Music_Song_Last_10;上10曲$ g, I7 d0 R4 g$ }
  2239. JSR Clear_Last_Track_Name$ f7 f. `& h7 K8 f6 E0 u
  2240. JSR Disable_Text_Draw
    & }! U; I8 a/ |+ ]
  2241. LDX <Music_Item_Cur
    ) P  b. T1 w3 A+ `' \7 D  `. T5 `
  2242. JSR Set_Sound_Total
    & n! D5 L) I7 ~6 @; C
  2243. LDA <Music_Cur,X/ M4 q) ~+ S% y" U. L
  2244. SEC8 M9 X. k' i- ?4 d
  2245. SBC #103 j" U. M7 X6 e& i9 w+ j
  2246. BCS Music_Song_Last_10_Set7 e# r% A- f6 f2 p$ t1 K
  2247. LDA #$00+ a/ A% c( z0 s+ e. R* l8 a$ k: C
  2248. Music_Song_Last_10_Set' d# w) ]( J" j! ~: B5 H' ^) S
  2249. STA <Music_Cur,X; F) K3 r& b4 v% r8 |
  2250. JSR Sound_Reset_Proc3 f# b- U/ G9 X5 p" R* P3 b% q5 ^
  2251. JSR Music_Show, p' {1 e6 F. @: B
  2252. Music_Song_Last_10_End( T+ d+ r( C  T! w4 }1 f/ ?/ |
  2253. RTS6 o: q& P  j, C

  2254. ; u# q6 G0 c1 F8 ^; P7 H9 c4 l
  2255. ;==================================================
    3 d0 O; I* l( x/ w
  2256. Music_Song_Next_10;下10曲8 G5 m8 \" l& w5 B' m/ K  l' N- ~
  2257. JSR Clear_Last_Track_Name
    ; o0 ~, T" F0 T
  2258. JSR Disable_Text_Draw
    1 e) m% O& ~& U1 g6 q5 O
  2259. LDX <Music_Item_Cur
    6 w6 n' `( O0 }4 J- p- n
  2260. JSR Set_Sound_Total3 k3 ^, [+ N' C6 q0 D% `. X. }8 n1 k
  2261. LDA <Music_Cur,X
    * n- p( S0 E0 G$ S# ^9 j/ @0 Q$ V
  2262. CLC3 f1 H' W$ D# E  b
  2263. ADC #104 c4 N& _" z. Y6 C$ g  A, h
  2264. CMP Music_Total' L, m- g: N6 l
  2265. BCC Music_Song_Next_10_Set
    4 f) g& i' _: u* V; b
  2266. LDA Music_Total
    " K- Y- J8 n- Q* y: G
  2267. Music_Song_Next_10_Set
    # x" }# a& S! S6 i/ Y
  2268. STA <Music_Cur,X
    ! t. B" p" Q3 [# {
  2269. JSR Sound_Reset_Proc
    : c8 |  e8 M; ]0 ~3 w& Y
  2270. JSR Music_Show/ A# z. l3 T+ n$ f9 a9 a
  2271. Music_Song_Next_10_End
    9 t% k1 e$ p7 V. p- t( I- M
  2272. RTS
    8 J0 r+ v) g, u1 v5 r
  2273. ) X7 e- R' g5 \* Y4 }  }
  2274. ;==================================================
    & y, j. W8 t4 [- H% ^) ?$ H
  2275. Music_Song_Last;上一曲
    * z: S2 d- X3 N0 \6 s3 a
  2276. JSR Clear_Last_Track_Name
    1 r9 s, X# ?: k4 B! h
  2277. JSR Disable_Text_Draw: J9 w1 ~2 j. B' e' F
  2278. LDX <Music_Item_Cur
    + r6 G. q8 K! X9 k+ O
  2279. JSR Set_Sound_Total1 w& g  L) `8 V
  2280. LDA <Music_Cur,X
    ! T) x' i" F) L* b7 k6 T7 ^
  2281. BEQ Music_Song_Last_Set2 X0 O* O' M$ i- `
  2282. DEC <Music_Cur,X
    ) G1 K- J7 R' X1 X3 {( k1 u
  2283. Music_Song_Last_Set
    & n! z" u6 f" z# ]' f5 ?
  2284. JSR Sound_Reset_Proc
    % e1 p( y! [: r7 k& o
  2285. JSR Music_Show
    + O* t& }: a( N& l! H7 f, m1 v
  2286. Music_Song_Last_End
    * F" C$ `9 Y# Y$ H6 K1 B
  2287. RTS' g  f4 K$ @  ?. a/ G$ H) {8 }& P

  2288. # L( |; e2 N+ I3 I: u( j
  2289. ;==================================================
    - H2 a% \( Q4 t4 {& f/ A) ^
  2290. Music_Song_Next;下一曲$ x) S( W) r; ?" Z" b9 b* ~$ M% ^) S
  2291. JSR Clear_Last_Track_Name% j4 K% @" ]3 ^$ {9 ^% ?8 y* M& B% W
  2292. JSR Disable_Text_Draw. ?& m8 }+ c$ F0 ]
  2293. LDX <Music_Item_Cur4 a, m$ E, K' w; ~7 |. y7 d( _! J
  2294. JSR Set_Sound_Total
    2 I) ]7 l% o- I0 }3 m
  2295. LDA <Music_Cur,X
    # K9 _4 R/ [, Q' {( n) p" X' A
  2296. CMP Music_Total
    % B+ F: i. a6 y6 \# \
  2297. BCS Music_Song_Next_Set$ a% F) T0 g! c3 w
  2298. INC <Music_Cur,X* l8 Z5 X5 {0 q5 b
  2299. Music_Song_Next_Set
    1 X; k2 Y& ~1 _! k
  2300. JSR Sound_Reset_Proc5 I2 |7 G2 D' E* w6 Z% T+ d: ~
  2301. JSR Music_Show
    & Y  R$ m# W- @
  2302. Music_Song_Next_End
    $ N% a( e7 J/ @' b4 z" H& }
  2303. RTS! V; }' N) ~. @- H+ H
  2304. 9 l+ C9 A' p7 p# v
  2305. ;==================================================
      G# W2 n; L& e! w
  2306. Change_Select_Item;改变当前选择项
    0 d; F3 b. p- m  F' w+ d, o
  2307. ;--------------------------------------------------
    0 I( n4 Y' f* w) u7 o
  2308. Change_Select_Stop_Play_Item;停止/播放2 ~: U/ G$ h  z: w8 V- i* o. a
  2309. LDA <Key_Once+ U, ]& w" @7 {4 s0 @
  2310. CMP #$10
    * Q2 h! c$ y- l6 o; i; ~; a3 w
  2311. BNE Change_Select_Last_Item" G* _; B" k/ [$ v$ M
  2312. LDA <Music_Stop_State
    0 |8 w- w# W5 ?$ T# u5 @% F9 ^& W
  2313. BNE Change_Select_Play: b) f1 `  p$ v' ^
  2314. JSR Music_Song_Stop/ _9 \" `& b( g
  2315. LDA <Music_Stop_State
    " J+ X2 I- ]9 m  B4 Y1 I! U; o9 |
  2316. RTS) r0 E, q! p, S6 a! {5 O+ O, P( x0 h
  2317. 3 r$ e$ X$ o9 z$ q5 n  n. G; f( P
  2318. Change_Select_Play% b" T$ T8 Z( ~+ e2 _6 c% J
  2319. JSR Music_Song_Play
    " N! P3 G+ y6 M8 [  p0 N
  2320. RTS
    ' a. W) U# a/ ?2 ~
  2321. % m. p7 s. t2 ^/ K
  2322. ;--------------------------------------------------2 n+ n$ \. ~2 K, p' ~
  2323. Change_Select_Last_Item;上一个专辑
    ! @6 j; F: r# H/ P# i) S* U
  2324. LDA <Text_Disable_Flag% ~/ I7 A8 P5 q  {( k( E
  2325. AND #TEXT_DISABLE_ITEM
    . v- d7 O! _" g
  2326. BNE Change_Select_Item_End
    . C0 i. ~2 P, j/ c
  2327. LDA <Key_Once1 U1 P, }, I- H7 r  j
  2328. CMP #$08" ]; x% ]' r6 _% W
  2329. BNE Change_Select_Next_Item4 a9 Y% w, C1 {$ o/ H! ^/ V/ O
  2330. JSR Last_Item
    - f4 U: x: {0 R5 }/ I* C( K2 ~) {  e
  2331. ;--------------------------------------------------
    0 G+ @5 e- f; L
  2332. Change_Select_Next_Item;下一个专辑1 Q: Z) g+ D  B" }, |, h
  2333. LDA <Key_Once5 j# j) g0 R' U
  2334. CMP #$04% t+ }2 [  V0 D" C) A, d
  2335. BNE Change_Select_Last_10* n0 q: S* y: R% U$ B9 |% l7 O, N
  2336. JSR Next_Item
    : W( F1 \. @7 V$ s* @7 U
  2337. LDA <Music_Item_Cur
    , z: Q& [, _% }& L: n5 O9 Y( g8 C- ~
  2338. JSR Get_Page_Start_Index
    2 h' }2 ?. }" S5 a: E( F
  2339. ;--------------------------------------------------
    * O! N5 |8 c% \* j+ g/ W
  2340. Change_Select_Last_10;前10曲
    / h! x2 q+ a; R% s, v' `* Y5 {
  2341. LDA <Key_Once
    ! g/ C# ^1 j0 G! e4 v  p. v
  2342. CMP #$40
    ! o. @) F# |; |5 x' Y
  2343. BNE Change_Select_Next_10$ X/ p3 V% T' U8 q- s% C9 X9 I) U
  2344. JSR Music_Song_Last_10+ F0 D- m, A; @( G* X
  2345. ;--------------------------------------------------
    ' r- z8 N% j  J* d9 z
  2346. Change_Select_Next_10;后10曲
    ; i* y7 d% W( I2 n6 Q6 D
  2347. LDA <Key_Once3 I) @, \0 @' {( o6 p5 [7 Q! D
  2348. CMP #$805 A/ q' p8 O) @! m- ^
  2349. BNE Change_Select_Last- B8 J% ^2 d9 J5 }1 l6 c* M- x
  2350. JSR Music_Song_Next_105 [* E0 g4 y9 L* K0 V
  2351. ;--------------------------------------------------
    , r, u4 v" l( {8 {
  2352. Change_Select_Last;上一曲
    0 m# ^+ ~: D9 U& i# _  Y
  2353. LDA <Key_Once) @9 y9 Q# {$ D& k
  2354. CMP #$02) M/ x1 x) _* h( ]1 N1 m$ {2 \
  2355. BNE Change_Select_Next: e; Y5 d, u$ j+ P. g  }* I
  2356. JSR Music_Song_Last+ I4 g' c' Q+ g7 ?! c: A
  2357. ;--------------------------------------------------
    7 `- v3 |9 [. D  T- @8 i5 w, m, o
  2358. Change_Select_Next;下一曲
    / a4 E' W5 l( ]  ], N, P) X5 O% L
  2359. LDA <Key_Once4 p7 e6 D! R. x0 f" Z* ^1 Y1 Z9 J
  2360. CMP #$01
    ) p0 e9 i9 r- B, ^$ S, q. X$ ^
  2361. BNE Change_Page_Next! A" l! X; Q8 X' _6 h) O# I8 B! u
  2362. JSR Music_Song_Next
    , V9 B4 G3 s* _3 A- N* A, w& c
  2363. ;--------------------------------------------------
    : [* ?, k7 K" Q
  2364. Change_Page_Next;下一页$ j" g( R1 ]3 e5 {: B  h) v
  2365. LDA <Key_Once
    ; g5 H2 ~) I( o& R0 f
  2366. CMP #$20
    % S: t" `) ]9 Q
  2367. BNE Change_Select_Item_End
    6 e5 \' a3 K& I: H6 r. h: e
  2368. JSR Next_Page7 o6 C. N- x, W  S
  2369. ;--------------------------------------------------/ A) H5 Z, W3 S! k' w3 s9 X5 r8 y
  2370. Change_Select_Item_End
    7 F9 U7 E+ d, E" H- F# u: W
  2371. RTS
    / f: Y' N8 d+ n- \
  2372. 7 a$ Q/ Y# Y' f9 E" E
  2373. ;==================================================
    ; P! b3 |+ d; ~  |) F" U' w. Z
  2374. Show_Arrow;显示箭头光标
    6 w7 ]+ S( u( c( W
  2375. LDA <Music_Item_Cur8 f: F7 q; h/ y5 a
  2376. JSR Get_Page_Start_Index
    8 q7 E( g. A3 @# ~7 L; f
  2377. LDA #$005 {8 [5 S/ i1 W  e
  2378. STA PPU_OAM_ADDR, F8 a# H# h6 D4 N" M; g8 I
  2379. LDA <Music_Item_Cur: I6 J( S6 M3 J; K
  2380. SEC2 X2 k+ u1 Q; R& a5 X- H4 B2 @
  2381. SBC <Data_Buf1 e2 H9 k- b- ^( d0 P
  2382. ASL A
    / R0 w# v) ?6 z- E/ x, |
  2383. ASL A
    + h( _& i6 O; ?" `2 L1 ]' A6 v
  2384. ASL A1 _. H" {5 }( v2 g1 N1 J% D6 m
  2385. ASL A3 I5 @4 Q# P% h- C% L  ~% O, O
  2386. CLC- ~+ i& B0 J( C5 M% S
  2387. ADC #ARROW_Y_OFFSET3 J+ s8 _! K  C+ Z! I
  2388. STA OAM_TEMP_ADDR + $000 X9 T6 S# y1 `1 [3 m/ x) f
  2389. ;STA PPU_OAM_DATA
    9 q( I, @- Q: m* y7 v
  2390. LDA #$1F" W9 b, Q9 ~2 M0 A+ c
  2391. STA OAM_TEMP_ADDR + $01
    8 S$ f# Y) o% A$ Z, l6 ?6 [
  2392. ;STA PPU_OAM_DATA
    $ m  g/ o# O9 {- Z6 c) h8 q
  2393. LDA #$00
    / d5 E7 D) Z, `( s7 v% A3 ^
  2394. STA OAM_TEMP_ADDR + $02
    4 c3 l. n5 Y5 D
  2395. ;STA PPU_OAM_DATA4 M. W% C0 [+ o' B) s( a1 H
  2396. LDA #ARROW_X_OFFSET# K- a7 ^( \7 }  Z* x
  2397. STA OAM_TEMP_ADDR + $03" b9 O9 @- m) c
  2398. ;STA PPU_OAM_DATA* X# M1 I+ E) B2 h
  2399. RTS
    : R3 w. M5 M% D, A9 y
  2400. $ L- e4 a- a9 V: v
  2401. ;--------------------------------------------------
    6 |% S  ]$ B! ^
  2402. ;命名表数据: m: a. N0 z$ K6 T7 Q
  2403. Palette_Attributes
    , e, m  K" k# m
  2404. .IF SOUND_BAR_SHOW_ENABLE- o9 D9 a9 Y; v+ r0 N7 @
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55, h: G. L" ]# z- [2 ^$ }
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55/ J& y. B9 |; k" ^  i8 |/ B
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$750 u& e7 h0 h+ S: x
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA6 ?$ Z& t. j+ T  r: z0 |
  2409. .ELSE2 x5 R$ V% Y! m) f
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55* r: w* J/ t0 D, G' E
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    % M; x; N9 y  e! Y& l# }
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75# M2 E+ n; T3 q1 ?) j/ [
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    3 w& ]) R% e* {& ~5 [
  2414. .ENDIF
    8 D! p0 s9 e5 c% m
  2415. 6 W$ V# J/ Q" @" q2 F7 M0 P. ?
  2416. ;--------------------------------------------------
    6 Q; T. ?; {( \  a
  2417. ;调色板数据0 W& _# i: k0 D2 _; b" i  `2 q
  2418. Palette_Data/ z5 s, i$ ]. i! e6 A
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F# N+ @% O+ b1 l2 U1 t* W7 [
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    4 E! l" y# h9 u* S2 Z2 b

  2421. 3 d  j& I5 M* [& _6 P
  2422. ;--------------------------------------------------! p  P: b9 N. V4 t% f( B# u* t
  2423. Static_Text_Data
    " q6 ^, v  H* X$ D- D3 E3 i
  2424. .WORD Static_Text_Caption_Data
    : T) A4 v" w& k! D
  2425. .WORD Static_Text_Author_Data+ [1 i0 C1 z% }0 M! u! i0 c
  2426. .WORD Static_Text_Date_Data
    & ?1 \/ q" H2 ?5 b: _0 F! Q& g
  2427. Static_Text_Data_End
    4 s- {* u1 f. t( q) S: ~
  2428. 2 t, G) Z% u4 w4 u0 ?( X
  2429. ;--------------------------------------------------# ?  f9 H6 z% i; D8 @4 T
  2430. Static_Text_Pos0 d& o: H; f: G* r, A; K  F5 k
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)/ t6 c( l& t! d& ^  D
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    $ Z+ y* |5 g8 j; [! k* Q( Z6 n
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)4 b- k9 x. i# t  M# v. k
  2434. Static_Text_Pos_End1 H4 w5 M" b1 m& x) V1 l( C% r
  2435. 6 e6 D1 i$ j' ?* X8 b
  2436. ;--------------------------------------------------
    / E) A1 ?! c* \& o% V  L6 X
  2437. Music_State_Stop8 y# o: t2 N6 f8 t' T1 b
  2438. .IF SOUND_BAR_SHOW_ENABLE
    , R5 R$ i- y) Z  k% Y
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00- N% o4 E: J0 ?* H; m
  2440. ELSE
    7 _7 h( z) [5 B$ X! k2 l
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00  E& ^- \, V# O# b
  2442. .ENDIF
    7 w0 A* K* C0 {2 O) H; Y
  2443. Music_State_Play
    1 ^8 \; c& J$ \- Z' J- r
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    ) `$ t1 E% M) g- K+ ?' o

  2445. ( m0 w5 y) i$ ]
  2446. ;--------------------------------------------------
    ) W; S& T+ R# l1 Y6 ]
  2447. Sound_Bar_Text_Data;声音类型文本( S. d, M3 X5 U; F
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"( t* Z/ g+ j6 E4 S/ [) D& ]
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    ( `, S/ X/ d2 z7 x! h( }
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-": k" }% _1 R8 V/ l. Y3 w4 L
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"1 `0 g( r: M6 h7 R4 }) ~
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$008 ^/ N! k1 O6 k
  2453. 5 E! ~5 ~5 I. X: O% ?
  2454. .IF Track_Name_Pos. v& h% J3 k! j% P1 U

  2455. % k- n/ S/ T6 G
  2456. ;--------------------------------------------------6 b4 p7 T! }& v( L7 a, s
  2457. Track_Name_Addr_00;曲目名地址索引1 R1 S; B0 y: b0 p1 C
  2458. .WORD Trackr_00_01$ `% A& B. B$ z# A
  2459. + k7 O% b7 A9 o" z& J
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"/ N. W  U' |: u& t& c
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"4 Q, Q3 M, [- `5 ?1 P' e/ I

  2462.   u- v( [0 ~( S2 `
  2463. ;--------------------------------------------------
    ( o# v, D+ h* w4 c9 ~. `. h  t, S
  2464. Track_Name_Addr_01;曲目名地址索引
    4 f3 ~$ ]. i1 A# q4 w% ^; |
  2465. .WORD Trackr_01_01
    - A$ m2 z7 W( C/ o" }7 m2 W
  2466. ( m$ G3 _- d. ^: `
  2467. ;==================================================0 R/ w6 x* y) f3 m
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    1 i1 P8 D& e$ f2 t  r3 [
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"9 ~2 Z, ~3 Y/ ^( ?
  2470. / j8 i. g; o; s7 s; J
  2471. ;==================================================
    2 L5 j+ k9 `- o
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引8 m8 f* H$ B& r/ w/ D
  2473. .WORD Track_Name_Addr_00
    ; v* t8 O4 U9 J, s! J: R, s1 J
  2474. .WORD Track_Name_Addr_01. U9 U& c4 x' ]- q4 ~/ r  \4 ?& y( S
  2475. .WORD Track_Name_Addr_01( f; Z2 m, X# Q6 t1 x: |; X

  2476. / P5 x: s% D! [) ~9 N
  2477. .ENDIF
    $ h0 p. t! V. U6 E- B+ I

  2478. 3 g$ d- D6 ~2 L. j
  2479. ;--------------------------------------------------
    4 P$ K- M, L6 s2 Z
  2480. Static_Text_Caption_Data;静态文本数据
    9 Y/ X3 Y) S( \: O+ ?: ^
  2481. .DB 16: E) X+ z3 J) D1 C- b( e# [# p( \
  2482. .DB "FC MUSIC 12 IN 1"
    2 P9 D( v1 U# L
  2483. Static_Text_Author_Data/ R/ E1 E' z3 x% v7 e5 ]( b0 `4 h
  2484. .DB 25
      V$ Q. f5 e" x
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    1 b5 Z. T- b5 B
  2486. Static_Text_Date_Data+ V0 o! U% f& o, X
  2487. .DB 10
    $ m( p" W2 n  H! S' k
  2488. .DB "2023.07.23"
    - c6 l' e  _4 [! I" B
  2489. 4 T% O3 u% |! r, F7 W
  2490. ;==================================================
    - r& s% D/ @* N  l6 _1 K
  2491. Music_Collection_Name               ;专辑名间接索引
    0 z' W9 |3 b6 N5 P2 P. j4 w7 U
  2492. .DW Music_Collection_Name_00
    ' ^% X& k! ?. J( u" ]+ ]8 [
  2493. .DW Music_Collection_Name_014 |: `; |) r, @: a, k
  2494. .DW Music_Collection_Name_02
    8 i, k9 r7 |3 d1 t/ o% G- c4 o
  2495. .DW Music_Collection_Name_03- P8 ?1 u2 [8 C/ l8 C
  2496. .DW Music_Collection_Name_04
    # T2 K( x/ y6 n4 D" {1 H' \
  2497. .DW Music_Collection_Name_05$ f0 y$ B, N: N, W
  2498. .DW Music_Collection_Name_06
    0 e% s% S2 U" ~: }  E& ?% r
  2499. .DW Music_Collection_Name_073 D9 U, ?) b$ B$ Z2 w' N# X
  2500. .DW Music_Collection_Name_08
    ) F. D6 C9 a# ]& q( k* [/ s) ^
  2501. .DW Music_Collection_Name_09
    $ \. p% g8 u* m! |9 L" }' y
  2502. .DW Music_Collection_Name_10
    " A/ \6 n. M0 b# C6 _% s: _
  2503. .DW Music_Collection_Name_11
    ! p$ t) C' Q7 I# H3 k# e! x+ A

  2504. % ^. n. r; C! s8 S; A
  2505. ;==================================================
    % x6 U* _  a) D; J% C4 H6 n2 Q
  2506. Music_Collection_Name_00            ;专辑名文本数据3 U1 H+ E) g4 F
  2507. .DB 11,"1.RAF WORLD"( r, r( {- c# _8 T
  2508. Music_Collection_Name_01
    - c9 e* q( D, E4 M' o! z: h
  2509. .DB 15,"2.FINAL MISSION"
    7 w0 d8 ~6 A* s! A1 f6 b- `
  2510. Music_Collection_Name_02( y9 i' V. X6 u' L/ L7 [# d) }
  2511. .DB 06,"3.KAGE"& Y, v, i2 L6 O5 i- ~
  2512. Music_Collection_Name_03
    & ^2 }- U0 u* I: Q- l& b
  2513. .DB 16,"4.DOUBLE DRAGON"; W; d( o( ^5 P9 S- N! G! O& V1 q
  2514. Music_Collection_Name_04( Q) X9 K5 _- T* C
  2515. .DB 17,"5.DOUBLE DRAGON 2"/ E' h1 U  j* Q& Q
  2516. Music_Collection_Name_05
    & U$ W& V' f3 ^0 R8 `
  2517. .DB 17,"6.DOUBLE DRAGON 3"2 K+ x, s: P* @( g3 q
  2518. Music_Collection_Name_06
    5 w* {& a4 E8 x9 C
  2519. .DB 09,"7.ROCKMAN"
    3 E( q& Z$ V1 c# G
  2520. Music_Collection_Name_07
    ) }# I" p2 R) K* i" }5 i
  2521. .DB 12,"8.ROCKMAN 2"1 Z. U# i# L9 h. R% T- m% o
  2522. Music_Collection_Name_089 l3 b3 h/ Q' a. n% _# A
  2523. .DB 12,"9.ROCKMAN 3"
    8 g' z  G+ M+ ]
  2524. Music_Collection_Name_09
    9 ?+ Y! m& C2 Z
  2525. .DB 12,"10.ROCKMAN 4"7 }; z  R% Y+ \2 [' b
  2526. Music_Collection_Name_10  @. {3 {1 H- _7 Q2 W, B' ^
  2527. .DB 12,"11.ROCKMAN 5"7 o+ T+ m3 m: p( N$ ~8 R2 A0 b
  2528. Music_Collection_Name_11
    ( k7 h1 K( ^& \0 k  K9 Q* o
  2529. .DB 12,"12.ROCKMAN 6") T4 J+ T/ ]* B  c$ G2 P
  2530. / H/ C6 s5 {; \3 `" J6 r
  2531. ;==================================================1 F5 @* k& n3 {) |. _) t8 G
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    2 f3 p: ?/ v- m2 {
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,04 Q$ h$ L8 |; v

  2534. 2 ^9 b# I+ U8 i) `4 Z
  2535. ;==================================================
      h& D* S6 G. o( A8 U, g9 c2 v
  2536. Item_Pos_Data                         ;光标箭头位置
    + d+ m" y1 R0 \4 [, g' A
  2537. .WORD ITEM_SHOW_POS, h  {8 l# f% U3 _4 X! O& ]* ~" |7 [8 s- N# H
  2538. .WORD ITEM_SHOW_POS + $0040
    + D( D& x* I2 f1 G: ?) ?
  2539. .WORD ITEM_SHOW_POS + $0080  x% C, W. q: s/ U$ D* q( Y
  2540. .WORD ITEM_SHOW_POS + $00C0, m( P  A. D9 i9 X9 y3 l
  2541. .WORD ITEM_SHOW_POS + $0100
    4 x% L( E& p1 z
  2542. .WORD ITEM_SHOW_POS + $0140
    " v9 l- C  @7 w' L; X1 w; j

  2543. 0 S. A$ ]4 ~$ z, d9 P1 |* A
  2544. ;==================================================
    , d4 C. E5 K9 l2 J9 P0 x& V
  2545. Sound_Init_Port                 ;音乐初始化入口地址5 ^/ f4 i  z( E* Y7 F! Y5 P- m# O
  2546. .DW $BFC8
    6 f6 R" p5 {/ b7 U3 J( N) L
  2547. .DW $D7F0
    9 b" A* g) u5 V
  2548. .DW $9FC0( w$ f8 `5 m: d1 t
  2549. .DW $BF70
    . h; S( I& R8 U  G
  2550. .DW $80033 r% O8 K4 }5 c
  2551. .DW $BF308 x8 ?8 O' j' Z, b; `4 ?/ G5 [' u
  2552. .DW $9003
    6 S, u4 N: m$ ?+ q7 ]5 F
  2553. .DW $8003
    + @6 F% j" E) @
  2554. .DW $8003
    6 d, C6 t+ m# v
  2555. .DW $8003
    9 e4 H6 g7 ?3 r4 r* w. H. O: b) Z- g$ c
  2556. .DW $8003
    4 l3 [& e) T9 ^$ [+ |$ p5 i
  2557. .DW $8003+ |) T8 l! C, ^  N2 r* @+ d) Q

  2558. / C( h$ H/ B" S* R
  2559. ;==================================================" R2 ^' L5 d' c/ ?/ s7 {4 d0 q
  2560. Sound_Play_Port                   ;音乐播放入口地址6 n1 j, Z) P0 H* J% v
  2561. .DW $8000
    3 w! U, {$ b* V- D* x
  2562. .DW $80015 S( e( W3 r: m, f& A
  2563. .DW $A000
    5 X5 B2 G7 k9 q4 h+ T2 {
  2564. .DW $8003* l1 B' _; S5 c/ j6 P/ a" @) x' w* K
  2565. .DW $8000! z; ]: ?& l% k* a5 \; u- X- m
  2566. .DW $8003
    # e, d! |" D- `" p& @
  2567. .DW $9000  t3 g9 L1 k5 e: f2 h) f
  2568. .DW $8000) w, {$ @; V. U
  2569. .DW $80003 {, }  Z3 h* `" `! i, Z. A0 B
  2570. .DW $8000
    " Q6 W2 T+ l8 y4 q* v9 ]
  2571. .DW $8000
    ) o& L3 `9 V6 Q- R$ }, P5 N4 q" J4 B
  2572. .DW $8000
    . o* w% n8 @3 y( ]. `1 o* d

  2573. 0 ^* n4 j- X3 W9 ^9 T$ G( ?9 {
  2574. ;==================================================0 {* Z  [  [0 x% j7 r: e
  2575. Sound_Reset_Port                  ;音乐重置入口地址% \% b: O8 g# m6 [9 D% |' D& R
  2576. .DW $00002 e5 {& u- M( C3 N4 _( Y
  2577. .DW $0000
    5 K) I8 L" ^& {1 l0 |  ]
  2578. .DW $0000) A! U4 [- d( L3 E  P% e: B
  2579. .DW $0000
    ( c, s, @/ \0 O4 V* S
  2580. .DW $0000* Y$ u: f" I% v1 Q2 }6 q
  2581. .DW $0000
    4 ]8 j. A" M+ A
  2582. .DW $0000
    7 _7 x5 z# R2 L6 L% M. y
  2583. .DW $0000! H7 {$ X5 e: f" i& Q1 D8 Y1 _' S& ^3 `
  2584. .DW $0000
    2 C  `' `. b! R- F1 M7 Z' d
  2585. .DW $0000$ [# U- g3 u& j1 I6 b
  2586. .DW $0000
    , F  T1 z4 s/ l- d. M1 y4 g
  2587. .DW $0000
      b+ P, K- ^% X  F% m( t7 [: E1 v
  2588. 4 C- m+ b7 ?% ]
  2589. ;==================================================
    1 }0 W$ c  G/ p0 s/ j
  2590. Sound_Total_Port                          ;曲目总数  \- b6 V4 p0 O; I
  2591. .DB 38
    6 o, w( }. \7 }+ P
  2592. .DB 33
    0 ]* y# d9 H! _  N& o
  2593. .DB 49
    / E$ D- X# c/ e% b
  2594. .DB 414 ]5 [$ j4 S# X& w8 n
  2595. .DB 83/ w$ n. W$ P4 S: s6 F
  2596. .DB 70  i) Q' [6 |6 j, V2 E) T" u+ L" R
  2597. .DB 502 b0 _4 A4 s- p" R/ T) j1 Z9 n, h/ _
  2598. .DB 67. X, i. R9 b* P2 C  i: Y
  2599. .DB 575 M+ }1 a% M! [: l
  2600. .DB 710 G; A; s/ Z. b' w' o. @+ v
  2601. .DB 76
    $ K- y, K5 I0 e; z$ }
  2602. .DB 102
    8 A: r+ d9 j% S& T0 D9 ?

  2603. . L+ y) Q4 C3 ~6 G
  2604. ;==================================================2 [, ^, m0 z( L1 C8 {/ d
  2605. Sound_Start_Port                      ;起始播放曲目
    ) y7 ^' G# \! \' I
  2606. .DB 00
    ! s! L: ^! v* N4 W
  2607. .DB 00
    + x1 E) C  u9 D2 I! f4 D
  2608. .DB 00
    - h; i/ y2 |6 S( O# s9 j/ }2 U
  2609. .DB 00! K4 J2 ~. d4 r
  2610. .DB 00
    # G, M! h' R. K3 m7 l8 R
  2611. .DB 00
    * m( X7 p+ t6 s% E! u" d3 j
  2612. .DB 00
    2 h5 Y9 E& g2 n% x& ]
  2613. .DB 00
    ' R$ p/ U! \2 p: |6 Z
  2614. .DB 00
    , A( D+ v1 m) f
  2615. .DB 00
    7 b$ i" e$ S# C& p
  2616. .DB 00
    5 d1 R0 L) v7 Y1 |+ g  l" i# o
  2617. .DB 00$ i* {  V/ b# W3 u8 |# ]+ K

  2618. " U% |4 Y' {# V
  2619. ;==================================================5 s4 y6 g0 k* m
  2620. Sound_Bank_8000                      ;专辑bank_8000* E/ V3 a- ^% h  \* n) Z2 F
  2621. .DB $10
    4 r& @4 A& a5 R6 V
  2622. .DB $12
    $ h/ O  d* o4 p% M5 A0 s( I
  2623. .DB $148 Z+ Y  }) L$ @; g
  2624. .DB $16
    7 t' y1 j3 F& g
  2625. .DB $18
    5 B9 m5 j6 q, Y
  2626. .DB $1A
    ; _% F9 S, y1 g/ y( d% E) q* ^- c

  2627. & M2 H7 [) ]1 [6 x! R
  2628. .DB $00# c+ n; a! H+ A5 k: p* l. i! R
  2629. .DB $02
    9 D! Z- y9 G. E8 O
  2630. .DB $0D. Y0 A" Y0 s0 @/ X1 ^: d, n
  2631. .DB $04
    ; x9 l, ]* v. u7 j6 F
  2632. .DB $07
    2 r8 Z, q& z* i
  2633. .DB $0A
    5 V. \" [' y. i# k9 ?! N
  2634.   [0 f: u( g3 x2 Q5 y, o

  2635. 9 x! z+ ?4 r% t- d
  2636. ;==================================================
    % O9 C2 R( r* E& H! z/ n' [* P
  2637. Sound_Bank_A000                      ;专辑bank_A000
    . i. e- \5 G% N7 t, S
  2638. .DB $11& |8 _  D+ K) |6 i3 h
  2639. .DB $13
    # C6 A# Q+ f, `3 x
  2640. .DB $156 W3 P: m' T  M
  2641. .DB $171 }7 @% H( z$ C8 U& f
  2642. .DB $192 \2 N/ Z' \( V, b9 X* c+ j
  2643. .DB $1B$ X$ K& `( J. d
  2644. ; d1 v" f% Y: Q8 c
  2645. .DB $012 J) T2 U% ^* N# C6 m
  2646. .DB $03
    & B3 Z8 a7 \& [& c
  2647. .DB $0E& ]( M6 c7 f/ C: r  h  j
  2648. .DB $05: q& R7 H3 [: ^. k2 n9 ]
  2649. .DB $083 z* S* o; }3 e1 F
  2650. .DB $0B
    8 C3 F/ P" X" F# m

  2651. : R. Y$ W, @3 b- ~. Y4 }* f& g
  2652. - F! z& N0 ?: |# c3 O
  2653. ;==================================================
    3 Y- O7 z* F+ t& [/ q
  2654. .BANK RESET_BANK & BANK_DATA_MASK1 J3 ]+ m$ i1 u7 g
  2655. .ORG RESET_ADDR" ~. {2 ?# _; [" v, [
  2656. 3 o. }( M* r8 b, o4 V: L" Z2 X
  2657. ;==================================================
    7 ~% d% F, }( L- L6 }: P- Q
  2658. Switch_Bank_8000;切换bank到8000-9FFF: b- u7 s& A5 n7 u
  2659. PHA
    5 \9 B0 q6 |% ^7 ^, b
  2660. LDA #$06
    2 `& ~( y1 N9 y6 s! E7 L, e
  2661. STA MMC3_BANK_CTRL
    % C) W- R6 X7 [& g9 M9 W) m
  2662. PLA
    + [0 L  T  h; p  V0 [, B' z
  2663. STA MMC3_BANK_DATA
    2 y- D( g* I9 Q: H8 q( ?* Y
  2664. RTS" w" c7 u# u" r

  2665. 3 f; Z' j2 y0 C) t$ A
  2666. ;==================================================
    ) C: u9 O: h% y; T- L$ [
  2667. Switch_Bank_A000;切换bank到A000-BFFF: y( M8 n2 e6 O. g
  2668. PHA
    , c- _' ]" B- u9 y7 ~6 y" l
  2669. LDA #$07
      A8 d# R" X- t0 F4 M3 X
  2670. STA MMC3_BANK_CTRL1 L, V+ }# y0 r0 z' H3 L/ i
  2671. PLA
    ! D4 m- {7 _& n1 e- K$ d
  2672. STA MMC3_BANK_DATA
    9 [$ H; i9 {8 m) o
  2673. RTS
      ~; V: I5 X5 |

  2674. $ f7 m4 z9 c& }+ v
  2675. ;==================================================
    ; T" ~% ?( u8 e! N, X+ K
  2676. Switch_Main_Bank;切到主程序bank
    0 K2 ?  P1 P5 R" |
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK2 |5 W2 I! o! S
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank; J# d4 O0 V/ n
  2679. RTS
    + Q$ E; Z+ V( c% H7 |  A3 C; j

  2680. # h; F8 W! O6 E) f
  2681. ;==================================================
    4 h  t4 b4 I2 j4 s1 U
  2682. Sound_Reset;音乐重设(如果有的话)1 i5 |% P$ V. e5 N
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    & A  u' W5 {* ]5 `* n3 l6 O2 [
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    # t. F. G6 U5 P& X1 d
  2685. JSR Switch_Main_Bank   ;切回主程序, P# s% A, q/ D# K
  2686. RTS3 G% y2 P; K3 A# J# r; ]

  2687. " c+ D; c& X9 |
  2688. ;==================================================
    ! `0 A) q& a9 l8 x8 E2 Z! X
  2689. Switch_Music_Bank;切换音乐bank  d- L+ q8 q- i3 @+ f6 [2 w4 s6 Z
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号: S' S6 Z# a) U+ J* j
  2691. LDA <Music_Bank_8000% w* ]" y, g& k& g, h7 g* b0 }
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank* M* T2 c# y3 }) H
  2693. LDA <Music_Bank_A000$ [4 y0 w3 m# R0 G' B- r  r. S
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank. ~) C; D8 t  d0 }  O
  2695. RTS
    # N. _8 Q9 Y9 T) x: o$ k

  2696.   O* j  t1 f  p3 m, Y" v9 G: V, s
  2697. ;==================================================  s0 X) n$ j2 a  e3 Z1 c
  2698. Sound_Init;音乐初始化
    " K5 a  P$ T; D
  2699. PHA
    9 B4 h. ^5 J! }& P* i9 J6 B
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    & D, r# r1 H% D1 T$ V7 B
  2701. PLA% l8 q" d6 P8 j: E, C
  2702. JSR JSR_Addr_Op        ;执行音乐初始化0 S* W, C  J7 r) r
  2703. JSR Switch_Main_Bank   ;切回主程序
    % \+ v4 o7 c2 C+ k3 i" O
  2704. RTS
    . Q0 R8 d( p7 ~/ u6 ~; [2 b6 \5 \
  2705. ; l; x& Z) {  @* ~+ M  Q
  2706. ;==================================================
    1 ~. w# b6 ^4 @5 {" L3 H
  2707. Sound_Play;音乐播放
    9 d, X/ z8 {; n7 ]) `9 u
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    . K6 a( v0 V1 N  o* h
  2709. JSR JSR_Addr_Op        ;执行音乐播放0 a+ t- E' y5 x: ^" a% q
  2710. JSR Switch_Main_Bank   ;切回主程序
    " F: u1 u: j6 m# m' C/ D; I
  2711. RTS
    : F6 R  n( F+ O3 v( T6 d- J3 Y
  2712. ' l% x, |6 {$ Z. m, P
  2713. ;==================================================$ m  l6 s) ]# o
  2714. MainLoop;死循环
    5 s* y4 K7 ^1 g) s( K" y4 @6 o: u
  2715. JMP MainLoop
    . l  o. J6 |9 ^

  2716. ( W- z" C1 J; F$ N* V. H8 y% z
  2717. IRQ_SUBPROCESS_JMP = 0
    ) A& p( P' i1 e. C: m# Y

  2718. : o, P  m# n& v) E' q" Z9 I2 d5 ?2 m+ A: A
  2719. .IF IRQ_SUBPROCESS_JMP
    ) q5 Z* G; O5 s4 I' {
  2720. ;==================================================
    . t: K" j, e; `9 X
  2721. IRQ_Process_0;IRQ处理过程0
    5 x( j: `+ }* G7 o
  2722. & W( R- t4 O+ O# \: b
  2723. ;15条扫描线后触发IRQ
    * y+ W& ~( {$ S) }; }
  2724. LDA #154 g  e7 M( F& S) l5 h
  2725. STA MMC3_IRQ_LATCH
    8 E5 ]5 A- N$ ~) m
  2726. + R0 J+ H0 k- j' e
  2727. ;设置屏幕滚动& b/ u7 r$ a" `% D% I0 l! l
  2728. LDA <Scroll_H
    5 L+ w3 \6 Z7 ^
  2729. STA PPU_SCROLL: ^+ i4 s2 g2 Z
  2730. STA PPU_SCROLL
    ! Z' O5 v( v; R' ~# B
  2731. , W- j1 e" F2 l. W# S! `" s# V
  2732. IRQ_Process_0_End
    # O2 {# i% B3 N2 X: q" x' X2 e
  2733. INC <IRQ_Process_Index1 E( }! H2 D" u
  2734. JMP IrqProgramEnd
    7 [! s2 S( u; j2 m, k9 n2 x

  2735. . h" ?9 t8 j6 ^1 ?8 G' w: }& F
  2736. ;==================================================
    4 H* |3 G( n! c9 F) S0 p/ {- {
  2737. IRQ_Process_1;IRQ处理过程1/ _: y% F2 g" Z! D
  2738. . q  V* g4 [  _: g+ V
  2739. LDA #55. J8 s- [6 ]' j7 }9 b( ?: q* Q
  2740. STA MMC3_IRQ_LATCH; e! N' R$ k+ D0 j: m0 e
  2741. $ v' A' ~  u" l) l% F
  2742. ;设置屏幕滚动$ q1 z) |( ]! K! S: R
  2743. LDA #$00* \3 {3 V6 }. U0 E! ?) D) _  `" p1 P  [
  2744. STA PPU_SCROLL7 Z- A  x+ o5 z) r9 y# w0 N
  2745. STA PPU_SCROLL/ M2 ]/ m# X- h' h
  2746. , ~. O0 ]: |/ I0 K: M5 h
  2747. INC <IRQ_Process_Index7 Y" n' M8 E+ @! }2 {
  2748. JMP IrqProgramEnd
    + g5 n7 x" a1 Q: k  }6 }1 k

  2749. ( \: Q# [. v+ l' ?
  2750. ;==================================================0 p7 a# y$ b/ ~; @. b
  2751. IRQ_Process_2;IRQ处理过程2( T; ~) Q' |& x- H2 [0 K+ w3 L
  2752. 9 |+ d9 Y* M# `6 g: H$ ~
  2753. LDA #15
    : M- O4 o4 `. X5 z4 l) u  ~
  2754. STA MMC3_IRQ_LATCH
    : [3 k; @- J+ }* a- f  _7 d

  2755. 3 |, l) n. t3 j0 f. V4 t& ^
  2756. ;设置屏幕滚动
    7 a8 N* I# C/ w8 S+ n+ Z
  2757. LDA #$00( u5 }. X& ]' a! a7 o4 L( I$ i
  2758. SEC
    " M: w( ^& R+ O, _. k/ P
  2759. SBC <Scroll_H. Q0 [7 W+ K. B" E8 W
  2760. STA PPU_SCROLL' d8 }, o$ v6 s
  2761. STA PPU_SCROLL
    3 f/ u+ D; E+ p& B: J8 x7 v9 Q

  2762. 4 f2 p  z$ r  }1 Y' a! I) b* u2 W
  2763. INC <IRQ_Process_Index
    % E( {- I0 ^  ^7 K: W# x$ h+ a& @9 S
  2764. JMP IrqProgramEnd; m3 E0 M: Z% N9 |- }5 k* d

  2765. - k0 i1 }- H: P! g2 T
  2766. ;==================================================
    & j& C# F. L! G% y
  2767. IRQ_Process_3;IRQ处理过程3
    ! b& F" \7 z5 U, Z1 C. M

  2768. 0 `. c2 n- V) w4 t# E
  2769. ;设置屏幕滚动
    ) D3 G8 K( M# C
  2770. LDA <Scroll_H
    0 g5 g7 P8 Q; R* k7 v3 \
  2771. STA PPU_SCROLL
    1 [  L" n5 k! t; T, N
  2772. STA PPU_SCROLL% L- J4 z  D( Q; m

  2773. 7 a& Q% `# H& U+ n/ g/ o
  2774. ;禁用IRQ& z& S$ O% S$ Q$ w
  2775. STA MMC3_IRQ_DISABLE
    3 l, |. h- a* ?4 ~4 I. }
  2776. JMP IrqProgramEnd+ _! i4 x. u/ E- Z

  2777. ) R- w3 J( A& C4 c4 B
  2778. IrqProcessAddr
    ' K4 S4 s# K- _3 o3 ~8 ?4 C8 P+ w
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3% J  \* N9 T) F+ S6 ~
  2780. / O0 a1 c3 P: U  L
  2781. .ENDIF% k* W; d# l: {6 h
  2782. ) T7 c" T3 g! m& e. G
  2783. ;==================================================) C) A- g9 d5 v$ W
  2784. ;IRQ滚动模式常量
    ; L7 K; J- q& I/ A$ U! y
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    3 D' B9 Y8 D- z" G& ?2 G% b
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    : @! w9 ]& g- O0 O! B( ~  `, H
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动2 X- ^6 w6 O3 c8 _- a
  2788. 2 D* ^& a- w" z
  2789. ;IRQ扫描线数据( l- ^- U1 }% P2 C
  2790. IRQ_Scanline_Data
    2 I' v( W# N6 F5 L% w
  2791. .DB 80 f6 H: ^5 y# s8 M
  2792. .DB 54
    + w& k$ {7 w' a1 ?6 ~
  2793. .DB 8
    : v  p# ?2 k1 g4 f- t
  2794. .DB 00 ;关闭IRQ4 h, {$ Y, B# S) ]8 E
  2795. ( w, q8 \! Z" _) t
  2796. ;IRQ滚动控制模式
    / O  H  D' t8 S  c% `
  2797. IRQ_Scanline_Mode
    7 n7 g" h4 C/ q0 G  L
  2798. .DB IRQ_SCROLL_MODE_ZERO
    9 ]7 ~, \; c3 M4 R" |" d+ z1 q
  2799. .DB IRQ_SCROLL_MODE_ZERO& s# M; |: n( J2 _2 Q* r. o
  2800. .DB IRQ_SCROLL_MODE_RIGHT' o: E9 `1 c5 o4 `8 m/ M7 [+ S* d# f
  2801. .DB IRQ_SCROLL_MODE_LEFT7 n: E% V7 J' ?3 G  `2 R5 r: @8 V

  2802. + N2 q) A( E  t/ G  t7 R5 O7 X; \
  2803. ;==================================================% w7 N# P3 T) A4 e+ k' S
  2804. ;IRQ处理
    ) u; X, S! Q4 Q) V; v
  2805. IRQ_Process4 R4 V0 S: Z/ L' h" ]: _
  2806. LDX <IRQ_Process_Index+ D( s) o* s! t4 S) b) L; B" D4 M
  2807. LDA IRQ_Scanline_Data,X
    4 @% \$ d. k6 V! [
  2808. BNE IRQ_Process_Latch, P# Z* a/ m+ S: K
  2809. IRQ_Process_Disable;禁用IRQ
    7 H) j% Q: q" ^4 I5 Y) ]
  2810. STA MMC3_IRQ_DISABLE' a, D, _3 d; z& Q  T; ], a" b" |
  2811. STA IRQ_Process_Index
    3 t' v  W7 f9 i" X) q  ?
  2812. BEQ IRQ_Process_Scroll
    ; b, M( Z& y2 r/ n' @
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线& c; @& ?0 P, ?$ t6 v7 m5 b, Q8 _
  2814. STA MMC3_IRQ_LATCH/ T# B) v7 F" H2 k
  2815. INC <IRQ_Process_Index
    & {! _" ]1 w4 W+ ^# ^
  2816. IRQ_Process_Scroll;IRQ滚动控制6 |" h: v2 L7 e; [, G
  2817. LDA IRQ_Scanline_Mode,X
    : z) X' f$ V1 X) q6 Y' j! b
  2818. CMP #IRQ_SCROLL_MODE_LEFT9 {1 n6 C9 D. Z' U( T
  2819. BEQ IRQ_Process_Scroll_Left
    * ~8 G0 `& t6 g8 |5 H2 W
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    : n$ Y2 w$ v1 _8 _
  2821. BEQ IRQ_Process_Scroll_Right+ u9 s) _+ r* v+ V, E
  2822. IRQ_Process_Scroll_Zero;不滚动
    4 H' P( c  f$ u# E
  2823. LDA #$00' i7 X" v5 p! [2 V$ b
  2824. STA PPU_SCROLL/ x7 K$ ~' K7 t! A. B
  2825. STA PPU_SCROLL
    ; x; K. B; }  S) n7 s" ~
  2826. RTS
    7 p% o6 i! h/ Z& a( R/ |
  2827. IRQ_Process_Scroll_Left;向左滚动
    ( y, C# j8 C6 `# X* o5 @4 }
  2828. LDA <Scroll_H
    1 E# Z6 _4 D! P
  2829. STA PPU_SCROLL( v- I% J# S$ m' B" q: h& t* L
  2830. STA PPU_SCROLL  S  T6 E) F: Y, I
  2831. RTS5 {# k4 w9 V- l6 B: e0 k
  2832. IRQ_Process_Scroll_Right;向右滚动
    + J' V9 I& x' l6 I% h, w# R, C& M
  2833. LDA #$000 I) ~- c( U: D/ K
  2834. SEC; {) o: F: C7 ]; L- E0 `
  2835. SBC <Scroll_H
    $ I# L) b6 U$ l$ [) l7 x5 {% M$ r
  2836. STA PPU_SCROLL; G# E" ~+ s  |7 w6 @
  2837. STA PPU_SCROLL
    + p2 N: n% U+ V8 Z& [
  2838. RTS
      u  @% Z" ^9 z; S8 \- ^
  2839. - w6 f, O- k' [9 A, d* E
  2840. ;==================================================( {# ?( E+ O" R
  2841. NmiProgram;Nmi中断处理
    + o, P  {5 D  U
  2842. PHA
    0 w$ Y+ P- ]6 p  x! R( F8 }8 Z* U
  2843. TXA
    * a! ~/ c" }( `
  2844. PHA/ a5 Q8 V7 j6 }6 Z2 a$ O$ }2 l# @) N
  2845. TYA! e) D6 U$ o$ e- i0 p. y* V
  2846. PHA
    , l7 e0 ?! ^- l& h8 b/ w
  2847.   A% K* b6 Q6 S2 A! L8 M; r, J
  2848. ;读取清除Vblank标志, 防止重复进入1 i2 h' x$ q" e# _7 E6 y, C
  2849. BIT PPU_STATUS( V* R$ a$ ]' e0 R

  2850. 1 a" ~! {5 V$ }% H$ W
  2851. ;切换主程序bank9 L5 I6 n6 c  v# n
  2852. JSR Switch_Main_Bank$ d4 i# z* Y/ V# |

  2853. & t/ f1 y" e7 j
  2854. ;Nmi处理
      F  U% \9 k5 |# ^: }; F
  2855. JSR NmiProcess1 P0 w& I$ W8 x! u; t& N6 w, B- X1 w

  2856. 0 R3 m6 u- u+ _
  2857. Nmi_Proc_End# V. _* L. b! n7 V6 s
  2858. PLA
    & ~5 x9 n3 |9 r5 [$ z/ S7 k
  2859. TAY7 A; C* ?  R3 |5 A* N
  2860. PLA
    1 K/ }+ W/ e, u$ e8 Z* ~' C
  2861. TAX
    0 b; J6 i4 V" g" a- H0 v
  2862. PLA2 d( x# T, k8 I: `1 U2 R" t
  2863. RTI2 x0 Y' V3 b  ?2 |! }& u& D' X+ y
  2864. 8 @3 d3 w: H( J0 G9 }8 Q. s! Q3 q
  2865. ;==================================================9 J: T% x2 b4 e! b) H6 l
  2866. ResetProgram;重置中断处理
    ) \, [. E6 U3 b( V; Z* q
  2867. SEI5 e& {* S% r! S
  2868. CLD! v, H  \2 p& Q6 P
  2869. LDA #$002 n- |: F9 {/ ?; ^
  2870. STA PPU_CTRL
    * h% M* J. N) b, ]$ \" ?
  2871. STA PPU_MASK9 b$ L0 a! M: f5 s  S4 i

  2872. 0 C' h& h- W3 G$ P! A- u5 o
  2873. ;切换主程序bank
    0 J' T2 `( Y$ F& Q1 j  D6 [
  2874. JSR Switch_Main_Bank' `, R% m" C- W6 o) H. c+ {' X

  2875. % C" T" D" n4 ~& Y
  2876. ;程序处理开始: O* A& R1 c% H  j4 Z0 v2 A, L
  2877. JMP ProgramBegin
    8 r; H" P& n: Y, Y; F

  2878. ( n& v  {- J* J( B
  2879. ;==================================================) D8 {7 ]. b0 b0 S- `1 `
  2880. IrqProgram;Irq中断处理
    ( V3 ~& @: {/ Q9 V0 f
  2881. PHA
    7 F' D, R: a( t# h. l
  2882. TXA1 f2 z+ i- X# p- l7 n4 ?. F
  2883. PHA3 R& @7 k& _- I2 q7 V% v- l; Q
  2884. TYA
    4 B) J" S, T) I. J; L4 i/ [
  2885. PHA
    6 ^: h' t, B7 m  G: M% q- E; O
  2886. ( y5 ^; X# D- L9 L. w
  2887. ;关闭IRQ% B+ V, @7 ^. B  l: Y) e
  2888. STA MMC3_IRQ_DISABLE
    3 |, E# Z6 Q! _+ a+ _$ Z; X: d

  2889. + h9 y$ y6 N0 `4 X- Z3 s4 P
  2890. ;允许下个IRQ触发
    8 T) E9 }$ p6 P: D) T6 X% F3 [8 [
  2891. STA MMC3_IRQ_ENABLE7 e/ G  `$ K$ q
  2892. / ~7 }/ H: q3 U% i. Y' X7 |
  2893. .IF IRQ_SUBPROCESS_JMP1 X. A# _' g$ F4 s
  2894. 8 r; W7 m, z! u0 Z+ M
  2895. ;执行IRQ过程$ y. d) J) S5 O7 u3 d2 }
  2896. LDA <Data_L' q2 ?" Y7 l7 k* \* i
  2897. PHA
    * Q( b7 h9 H+ ~
  2898. LDA <Data_H
    / S6 U5 Y& o. E6 j+ V- E) n' x/ f
  2899. PHA4 O) T/ j$ X: ~, ]2 n, A
  2900. LDA <IRQ_Process_Index
    - l8 y0 o2 Z# r; z
  2901. ASL A
    3 O# ~- S# M& f2 w. r- _% D
  2902. TAY5 z7 k  ?0 J; Y% _* }
  2903. LDA IrqProcessAddr,Y
    6 r# f: Y8 M/ Y3 r  E: e" T
  2904. STA <Data_L
    & z# A. ?# I6 |7 G9 T6 T
  2905. INY$ }" }2 Q% a3 B: ~- Q( U* L
  2906. LDA IrqProcessAddr,Y! Y' C* l1 K" B) i
  2907. STA <Data_H
    ) m4 ?3 K. U8 o5 [4 P
  2908. JMP [Data_L]
    2 t1 U6 o& R  e- \9 i0 S
  2909. ! l+ p" |; c% K, O$ {
  2910. .ELSE7 I- i/ \/ C# s$ N/ H

  2911. 4 g% j' x$ l0 O
  2912. JSR IRQ_Process
    6 D3 @* a: [2 {& Z( [7 T. B/ T. U
  2913. $ w* N9 I6 Y2 ~9 R; }. e
  2914. .ENDIF' p3 T. ~- I. z

  2915. # N# e2 K3 T  p8 U( x
  2916. IrqProgramEnd% m+ ~/ n6 |" i- ]/ ^( \, ]" d
  2917. .IF IRQ_SUBPROCESS_JMP% D" E& E) p# p
  2918. PLA9 |! C% ?- F/ j8 }: I$ p/ n
  2919. STA <Data_H
    - E' a  E9 A& C
  2920. PLA& ^* w( C; ?5 h* a0 W
  2921. STA <Data_L7 d3 a$ c/ i$ p0 F& E0 b
  2922. .ENDIF* `& G3 W& l7 c% `& S/ k
  2923. PLA
    $ i7 u7 b8 @) t7 u$ @. I
  2924. TAY# v& I  t$ K/ Q4 w0 {
  2925. PLA
    1 w  x' [3 k- i% F1 h$ e
  2926. TAX
    " D1 \. W; V9 V; p) W
  2927. PLA
    * G$ h7 ~- m3 M9 K
  2928. RTI/ Z9 G- E1 _5 ]5 c

  2929. 8 G* C4 n5 R+ ~8 m
  2930. .ORG $FFFA
      q" X# G( A* |3 h# x0 i5 b
  2931. .WORD NmiProgram- P* H2 m, w4 b) c5 ?
  2932. .WORD ResetProgram6 Q9 A! ]# y* t+ }2 P
  2933. .WORD IrqProgram  T% k; e# o1 J2 K2 k5 X0 o

  2934. 0 ]  _! x& G3 w7 x
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    ) M& S2 x2 C  a1 {" F  u  u" c
  2936. .IF SOUND_BAR_SHOW_ENABLE
    5 U  z# n9 g! t/ k& e" Z5 ~

  2937. / ~5 U$ V6 G" Z8 f- |
  2938. .ORG $FE001 M: |, i$ |0 k
  2939. PHA! b  J& i. n! [$ A; K: U( e. h1 i
  2940. STY $07BA
    % H9 h2 t& c$ W# a; d) k
  2941. LDA #$8D
    & S/ d9 I" g% x1 h+ \
  2942. STA $07BC
    , m8 d3 W. K# N' Y. F
  2943. TYA
    ' G3 M7 g' E! |. P! Q
  2944. CLC
    ( f+ }) j  [- d; ?  s3 k, J
  2945. ADC #LOW(Sound_Bar)- W- p; A+ U$ h. X4 R" n6 |, e
  2946. STA $07BD; `/ a) T8 }8 [: K& S% e, A4 q5 G
  2947. LDA #HIGH(Sound_Bar)8 N1 C7 ?( A0 `) S& o5 `+ a
  2948. STA $07BE$ {( x: n; v" N4 f; f% d$ l3 H
  2949. LDA #$60
    ! t$ U9 j; `0 K. n; K
  2950. STA $07BF
    5 G7 ?; A, Q  ?0 Z3 S
  2951. PLA
    7 ]# r9 b2 A: B( R# H
  2952. RTS
    " t5 I6 R6 ~% B3 A% ?1 R1 I! m

  2953. ( S/ V! O: y; G9 ~2 D" z3 S
  2954. .ORG $FE20
      c( x7 I, {$ N" T
  2955. STA $07BA
    4 h! @" L4 W+ g
  2956. CLC; e8 D% Y+ Q' U- N
  2957. ADC #LOW(Sound_Bar)
    & c% E2 \, _9 `" F/ ]+ U
  2958. STA $07BD
    % J# e, |8 w/ ]
  2959. LDA #$8D2 q5 a' \5 @' V
  2960. STA $07BC
    ' w) g+ u! S, n! V' r+ Y/ G! B
  2961. LDA #HIGH(Sound_Bar)
    & r2 r( m+ D+ x3 K
  2962. STA $07BE
    / u% I) s+ [7 x8 Q+ r
  2963. LDA #$60
    8 X# H' L0 [8 ]4 p; T, f( L
  2964. STA $07BF
    . c7 X4 c" n& \+ ^$ f& m
  2965. RTS
    6 P2 F$ C. T, D; A( D
  2966. - l+ l+ [2 o0 K" }3 y" y4 X2 n# D
  2967. .ORG $FE40% r; O/ ]2 j( Q& Q
  2968. PHA
    ! l/ E- J. }9 a$ L; ^- Y
  2969. STY $07F1
    + L, f; K/ F8 `9 i! A5 P6 `& K- d/ J
  2970. LDA #$8D
    ; S5 T4 J1 V! c. h% {( @! W
  2971. STA $07F3
    * L% Q- g/ e! {, S
  2972. TYA7 e% S9 F' }" O! A, h4 C' \
  2973. CLC
    ! m- [4 J  ~# [& J, y9 D5 w
  2974. ADC #LOW(Sound_Bar)
    ( }0 _0 Z0 ?" ?) S- |7 e* G
  2975. STA $07F4& ?0 }& ~- b8 e
  2976. LDA #HIGH(Sound_Bar)
    ( T* A) D8 J9 c. c7 t. |6 i
  2977. STA $07F5
    0 T( N6 t$ H; w
  2978. LDA #$60
    $ G1 _% e0 M2 a( J4 f4 ]% q
  2979. STA $07F6, o  u8 S5 N4 c! e& ^
  2980. PLA
    : A* Q  h2 e0 J
  2981. RTS
    ! t. _0 I* u; t& d: g
  2982. 6 z! f" x6 A9 R( p4 m
  2983. .ORG $FE60* f* ]! q( i1 p- R6 Q
  2984. STA $07F15 e  P8 U6 F3 c( t5 ]4 S* y
  2985. CLC6 ?0 s: a! \, t# w0 U3 L6 o4 _
  2986. ADC #LOW(Sound_Bar)
    . I3 X! p, {" P( K! ?' Q1 l7 \8 a7 [
  2987. STA $07F4# p- o7 A) Q- E
  2988. LDA #$8D- Y0 H6 }3 O& _) J: P& b, j$ L
  2989. STA $07F3& N3 W! @; Q& `
  2990. LDA #HIGH(Sound_Bar)+ z2 d7 ?1 z1 P& n( H7 V( |
  2991. STA $07F5
      o* L' X. @% t5 r" ~
  2992. LDA #$60$ S  s/ i1 k; o) K/ A: L5 @, l( d
  2993. STA $07F6
    ' k) Z. B! i% ]
  2994. RTS
    ' K" K( y+ o; c3 B% P9 N3 x
  2995. ) J  A& \+ a3 I4 d. {
  2996. .ORG $FF40
    ; V- U! l) e/ E" c
  2997. STA $4000
    8 I) o/ w. H% F% B2 ]
  2998. STA Sound_Bar + $00
    ' \7 K! Z2 G/ ~  X- t2 x( P
  2999. RTS$ ~# c. G2 i1 Z6 {  q

  3000. 1 M; D& v7 v) n  Z* S
  3001. .ORG $FF48: Z0 @) r$ H$ X& u/ _1 i+ c* X
  3002. STA $4004+ ^- d2 j+ {( @+ n
  3003. STA Sound_Bar + $04
    - P) U; X, P1 E- U, h5 y0 O
  3004. RTS# l, m5 a* W3 n1 e, |5 C% A
  3005. * y2 f! U8 f1 X# Y/ U9 b9 u! r! K
  3006. .ORG $FF50) C: J, v9 ]( n0 B) p
  3007. STA $4008
    , j& I5 ~% g9 h( g( i
  3008. STA Sound_Bar + $082 ^, |6 w! w7 O- F1 }
  3009. RTS
    : P) s8 x; F5 T) n
  3010. . Y: z1 f3 X; J- |( S6 V
  3011. .ORG $FF58
    ) M" ]4 H" _/ ]
  3012. STA $400C. N+ V7 c$ i$ U; s) ^5 V5 v
  3013. STA Sound_Bar + $0C
    6 [3 v* s0 @- c2 f, A
  3014. RTS
    % j+ V' y! s1 L$ g6 d

  3015. : l1 r" x! H* u/ I. f: Y
  3016. .ORG $FF60
    1 j  R4 b6 Y- z# m6 `9 i
  3017. STX $4000
    3 R9 S% Z( W' r* v) K
  3018. STX Sound_Bar + $00. X% {: L: e. ~1 ]$ {1 a
  3019. RTS$ u) E. I. |! M2 R; s, B: Z

  3020. % m0 h0 e7 m9 t  B
  3021. .ORG $FF68
    * @3 B# X- ?0 o9 [& z
  3022. STX $4004
    # y1 F1 S& M7 B: V3 o$ D0 ]) K9 R
  3023. STX Sound_Bar + $04
    - j% Y0 O, ]3 P3 v* ]# M
  3024. RTS
    : a2 l: c! s' i6 e

  3025. . f7 r1 T' G0 U6 q. F/ Z
  3026. .ORG $FF70- C; N9 f' E; q6 _
  3027. STX $4008# K9 ^$ z; p" z- s
  3028. STX Sound_Bar + $08
    2 g0 G& B) E* H+ M% W% Y) i' R
  3029. RTS$ w; _' h  c) Q( M5 s
  3030. * W, i7 Y. B: p3 m- a0 Y
  3031. .ORG $FF78
    , c9 ~& f6 N( x! }
  3032. STX $400C% @  l. Y% y: h5 {2 B+ ?
  3033. STX Sound_Bar + $0C, _# @" ]4 _6 z; C
  3034. RTS
    8 ~9 S: O' v4 O) ]) z: x

  3035. ) G6 D- W! I( c: V
  3036. .ORG $FF80: W( Z  Q3 b& [
  3037. STY $40004 g+ E) v, c+ U2 t: b4 _
  3038. STY Sound_Bar + $003 i: W- k/ E% c* o' {/ V4 w0 ^
  3039. RTS) x- ^8 H, I( S, \* _

  3040. % `- h" O1 s6 `# L
  3041. .ORG $FF882 M4 @0 A  F: S& L1 v8 c- Y
  3042. STY $4004
    2 F1 M- ^, A! k$ Y
  3043. STY Sound_Bar + $04" W! M9 _4 C5 \" p% d" n$ h
  3044. RTS
    $ |5 ~! _7 |2 j0 B  y& q: b
  3045. % L: y1 S, n5 h* E3 x
  3046. .ORG $FF90
    ! O9 F" y# K8 c9 `2 E6 x  i
  3047. STY $4008
    ( J, Y+ b* k' w0 K8 {% W
  3048. STY Sound_Bar + $08
    $ B* @- R. u6 u9 _4 C
  3049. RTS2 j4 D3 J3 r0 M* f4 f$ A( ?; p" t6 g

  3050. & J7 v( L: h6 Z
  3051. .ORG $FF984 P( i! I: O2 g( n
  3052. STY $400C
    0 g+ w7 p) N+ P3 r0 R( Q" B
  3053. STY Sound_Bar + $0C
    9 g: E( C* t% z  }' a# I1 m
  3054. RTS* |: B4 L  L' Q, ^
  3055. : u+ ?& w9 n8 ?
  3056. .ORG $FFA00 y8 ]7 g, G6 W- K8 c4 p" I
  3057. STA $4000,X6 B" q* F: D& U
  3058. STA Sound_Bar + $00,X
    6 e5 ?' W) Z4 f" a; U
  3059. RTS5 {) `# F$ w! f& y6 @/ ^; i/ {

  3060. * m; n1 j; a1 r
  3061. .ORG $FFA81 {3 d  W1 u' ]* n1 s1 N6 j7 O% x
  3062. STA $4000,Y
    # _- J4 X& o, v9 y# z
  3063. STA Sound_Bar + $00,Y
    , b- c' ]+ V% k2 ?
  3064. RTS: {; S) \+ r  ?% m' e3 J+ k  Y

  3065. % F5 D5 o8 P; D) m0 X
  3066. .ORG $FFB0
    9 B" x4 c1 |  T. p
  3067. STA $4004,X
    5 W( R$ ^  r, p; W$ k
  3068. STA Sound_Bar + $04,X
    : I: ^( I9 k5 o1 r8 w
  3069. RTS
    & M5 A8 C3 |4 w! \6 t6 @# F" o+ j

  3070. 8 }7 o/ X* A7 l( Z0 @
  3071. .ORG $FFB86 B% F+ T4 w  K  \3 s
  3072. STA $4004,Y
    8 H" F* ]: r( U7 l+ l$ x2 c
  3073. STA Sound_Bar + $04,Y9 d3 _, S0 y% S. ?( \
  3074. RTS2 S% r5 R8 t8 g# x# ]) t- e
  3075. . ^8 V. F/ W$ y7 ]
  3076. .ORG $FFC00 u* O) f$ `! ^! x3 l
  3077. STA $4008,X1 D6 n" h6 |! B9 a8 z4 [. i5 r- P% C
  3078. STA Sound_Bar + $08,X
    ) _( D" w# U/ w# u' y5 U( ]
  3079. RTS% G. D4 [5 ^+ i" V6 _" O% X! A
  3080. % ]! E( o1 r) w% N
  3081. .ORG $FFC8
    6 j* f7 ^$ l9 o% B9 _& \
  3082. STA $4008,Y/ x1 F1 t5 s8 L0 \% j1 o3 `- u
  3083. STA Sound_Bar + $08,Y/ I! y1 j" M. ]
  3084. RTS
    + E, k1 K9 ^- z( n

  3085. 4 C: T' }' Z- Z- @! F7 s" x% D: O
  3086. .ORG $FFD0
    9 l: E$ {4 ^6 A
  3087. STA $400C,X5 f6 X3 M4 }  F7 k$ K
  3088. STA Sound_Bar + $0C,X
    # O3 K3 F$ V" J0 c4 }+ U+ c
  3089. RTS1 }4 Q# i* z# R
  3090. & a& j8 l! [" a
  3091. .ORG $FFD8% `* O: c2 S. x1 r2 u
  3092. STA $400C,Y
      y3 J6 j: X4 W& I# G7 `/ |
  3093. STA Sound_Bar + $0C,Y
    " H# y% `  s) z* G6 ?
  3094. RTS6 b, J- `; @1 M' C* z% A
  3095. ; J* M: W; G$ v$ e4 [" ~
  3096. .ENDIF
    7 b% w+ y% T" {7 z# o- e  ~/ T5 T" l
复制代码
  H1 u5 P/ F# n' t. P9 g. D2 z
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3198 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 07:28 , Processed in 1.123047 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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