EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
6 a9 c; _+ C' g) P0 N4 U' X6 O9 K, Y3 d5 G% a, y
[FC][音乐12 IN 1]2 Z& D' e- ^9 L$ G2 S4 Y
时间: 2023.07.23
* W# q7 G2 F) \, g* {' X9 h作者: FlameCyclone) G! j& q2 i$ W. o- s

4 j' u2 C0 l. G; t) g& ~; N8 i. }- `/ g7 Q收录音乐内容:
/ D7 [' A/ V$ W6 u8 p" |0 e$ S3 r1.Raf世界
; B4 g+ L- r# W4 I0 g9 C' Z/ l+ {, Q& e2.最终任务$ z6 p8 _% ?9 t' Y: s' k
3.赤影战士
3 t) W1 U5 [5 n4.双截龙
4 ^  p6 M4 |/ @* ]3 I; P& {, M$ k5.双截龙28 ^. H! ?6 A+ j4 p4 @& y+ [# z
6.双截龙38 i* N4 u- A6 Z8 {# [
7.洛克人- X! [7 N2 Z) {9 a8 y: d+ G/ ?" t
8.洛克人2
( ?  h5 V0 Y& x9 [/ @9.洛克人3
+ y; R2 ]/ z' T6 o- D10.洛克人43 q4 a4 C. E, w. r; s
11.洛克人5
1 V# S3 }. S1 c; o12.洛克人6
8 K  M, ?+ r3 d) g" B
" W, K8 `9 B$ V操作:
( \: u( K' I& `! }; Q8 Z; i+ @+ n9 ]1 u上键:         上一个专辑+ e0 z! N, I  K$ M/ s4 K
下键:         下一个专辑
1 u; a0 r& e0 B1 x" ?9 T左键:         上一曲3 B7 ^+ }* ^0 ?) D% b$ V
右键:         下一曲
7 F. {$ i" G8 qB/A键:        前10曲/后10曲3 v5 o, p' O. S9 b
选择键:       下一页8 O% d- `! m. {
开始键:       停止/播放
2 G5 a* \. F# d( B$ |% ?6 _. Q' i! @- G0 Y' r7 S0 x
http://flamecyclone.ysepan.com/0 ^6 P, c+ V5 x8 _8 ~7 E& ^' _
( i+ E3 [0 j1 N1 U
9 F+ z/ B- f' W& {# ^
! L. Q, w+ v1 @% \

: a' v1 `5 `' x1 \1 k) L. D
  1. ;[FC音乐][播放器模板]
    , @+ M6 A# l7 v
  2. ;FlameCyclone 20230710
    ) P" ?9 E$ A$ }* u
  3. + n) D: F. T& j8 m/ W+ f% x% L4 v
  4. ;文件头
    % V, q( G. L+ `1 Q/ c8 @- L
  5. ;======================================================================6 c# ~5 T% Z5 O
  6. .INESPRG 16                                             ;16KB PRG 数量1 Z/ l# n0 ?; L! t2 [
  7. .INESCHR 1                                               ;8KB CHR 数量4 j. H7 H: I; e6 K8 s, ~
  8. .INESMAP 4                                                   ;mapper 4
    4 \) o2 t+ O7 q5 Q, K1 ?
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直, J9 |" k# M. A- T' d0 a, m- T

  10. - a- m) N8 H% D
  11. ;==================================================
    , u# y# R9 y$ V% [. u' W
  12. SOUND_BAR_SHOW_ENABLE       = 1, A1 D5 o5 J8 k0 V8 p* v  v* |- m0 Z
  13. ;==================================================
    + b+ A7 P4 \& A
  14. BANK_DATA_MASK              = $1F: `0 b( h0 Q# r0 W+ n6 d- H% B
  15. CHR_RAM_ENABLE              = 0) G# g0 r7 @* C) m$ o8 T. P
  16. IRQ_SCANLINE                = 136; {4 o& d3 ^% v! G/ C
  17. ;==================================================8 H# U0 j- _5 j) x
  18. SOUND_DATA_BANK_00          = $00
    : S; B1 j& }- m
  19. SOUND_DATA_BANK_01          = $01
    0 U6 j/ T; ?& R( v" D
  20. SOUND_DATA_BANK_02          = $02) H3 [( \: g2 ~' p
  21. SOUND_DATA_BANK_03          = $03
    ' c5 Y  D! Q: o2 o& U/ `+ G
  22. SOUND_DATA_BANK_04          = $04* T0 \# R5 ^* W
  23. SOUND_DATA_BANK_05          = $05
    * \" c& }' U5 J. j+ ]0 z# e
  24. SOUND_DATA_BANK_06          = $06
    $ K3 l) P4 b$ G( Z
  25. SOUND_DATA_BANK_07          = $074 K2 U# j. u6 i9 m$ v( O
  26. SOUND_DATA_BANK_08          = $082 D$ h( ?% N5 t- q
  27. SOUND_DATA_BANK_09          = $09) ?. L) h5 x6 t* K
  28. SOUND_DATA_BANK_0A          = $0A. ?" Z$ J9 N5 X7 n4 x5 X6 E4 r( j
  29. SOUND_DATA_BANK_0B          = $0B, f* a: K% @' ^  T
  30. SOUND_DATA_BANK_0C          = $0C' }9 J6 u& W$ v: {& e
  31. SOUND_DATA_BANK_0D          = $0D
    7 ]/ r0 q* _- ~9 r- g
  32. SOUND_DATA_BANK_0E          = $0E3 V4 O9 G- K/ C! q
  33. SOUND_DATA_BANK_0F          = $0F
    " ~/ E! q/ s, B; B
  34. 3 \5 h2 c! l# n- ^) c+ H
  35. SOUND_DATA_BANK_10          = $10
    , S1 ~: x. U2 K: ~1 I
  36. SOUND_DATA_BANK_11          = $11
    0 n7 m7 y2 p2 C) q. p5 z
  37. SOUND_DATA_BANK_12          = $121 c4 ^; r" K7 V( ~' H
  38. SOUND_DATA_BANK_13          = $13
    + M5 ^6 X1 D5 Z5 Z* r
  39. SOUND_DATA_BANK_14          = $14& J8 W* h! K0 ^7 L6 E
  40. SOUND_DATA_BANK_15          = $15: `% I* o. `( g# S; |
  41. SOUND_DATA_BANK_16          = $167 u5 Q/ i  X8 K; `
  42. SOUND_DATA_BANK_17          = $17
    . r/ G9 a3 d6 O5 i& l' h, z8 u
  43. SOUND_DATA_BANK_18          = $18
    8 q  ~' o- Q3 M7 o3 U
  44. SOUND_DATA_BANK_19          = $19- ~# p, X! p) d2 [' v' ?+ f- t% Q
  45. SOUND_DATA_BANK_1A          = $1A8 ~4 J' e" ^* J! d% @; F8 {
  46. SOUND_DATA_BANK_1B          = $1B
    7 z# r4 v4 n! x' i$ K0 I. y3 H, K
  47. SOUND_DATA_BANK_1C          = $1C7 T3 h3 t- v/ d7 _$ Q* Y0 ]
  48. SOUND_DATA_BANK_1D          = $1D
    3 i/ x/ k& }, D) v6 P

  49. ) |5 ~# B& ]) ^- x9 P8 m: }
  50. SOUND_DATA_BANK_C000        = $1E
    # n8 U/ B* T2 D- ^
  51. SOUND_DATA_BANK_E000        = $1F. X0 ^' U( \& W0 M9 E
  52. ;-------------------------------------------------
    4 G4 h/ k) \9 c; q6 ~
  53. CHR_DATA_BANK               = $20
    ) C. t0 K0 f+ o5 ?" b/ \
  54. CHR_DATA_ADDR               = $A000) S" P3 R/ p7 T. v9 H. x
  55. ;-------------------------------------------------
    1 M" X0 p: t, E$ U3 f2 c# ?! ?
  56. PROGRAM_BANK                = $00& [( D. f2 L# \. i6 ?& @% X
  57. PROGRAM_ADDR                = $8000/ i0 x' F: ?8 G5 K/ Z6 T  P' w% t7 B. d
  58. ;-------------------------------------------------
    1 T5 x. I+ ^2 ^# q  I& g
  59. RESET_BANK                  = $1F
    ; U$ U- x3 n# p% q. U1 `! L0 t
  60. RESET_ADDR                  = $FD00
    & ?- N7 i+ y+ ~3 Y& t0 r- Q
  61. 7 j% Q! ~( K6 a5 o( e9 P( F
  62. ;==================================================" P2 Z# }" j8 [) z4 ?, ]* _
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数" t1 H9 h. [% _
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引7 N6 {5 y: _4 _
  65. PAGE_SIZE           = 5                     ;每页节目数! Y7 b5 }( s3 |8 R! S1 }. a$ c, l8 t( P
  66. ; P  p; o. o+ O* |
  67. ;==================================================
    : X% w3 |% p7 A. ]/ j- h$ ?
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除) {6 j4 n) T% x( w+ V2 w* ~  l
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    " z4 V) g- k( H) o; z' g
  70. .ELSE6 ]$ Z" q3 I( \5 A% @& \% P5 s
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    , o' ]8 x  n3 L
  72. .ENDIF$ T2 |3 y7 c/ {" @, I+ ?
  73. 3 ^- Y! j" m* k7 O  z: X
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引1 a* W- t5 l8 M; v. p! [
  75. 5 C& ~8 Z( [* W, p7 ~3 N
  76. ;==================================================4 q+ x+ }3 X+ ^# d  D4 f& {& |7 S' o
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    8 r) \! l3 v0 T& T# d
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    , C. W9 V; f2 R7 b
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    / R/ b) R5 V5 ~: e9 j6 |% p
  80. ;==================================================
    # k+ O' ~, K' t5 O) m5 P
  81. Caption_Text_Pos    = $204D ;标题文本位置
    . M- k& Y: {! |% c8 `5 H/ }
  82. Author_Text_Pos     = $2324 ;作者文本位置% [, F2 ?; v; U# R5 ^
  83. Date_Text_Pos       = $236B ;日期文本位置; _; S# S' d2 Q% Z
  84. ;------------------------------
    * T& C- R- ^3 ~
  85. ;------------------------------$ Y% o1 R  Z0 u6 w+ D
  86. .IF SOUND_BAR_SHOW_ENABLE) _5 u! }, S+ P8 V0 u% K6 v. A4 W
  87. . V! F/ h6 L% W' W; c# ^; ]
  88. Play_Index_Pos      = $2273 ;当前曲目位置; U8 D5 i  S  F& T* S' B
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    / O1 I/ a# t% A9 `, u' l( R6 x
  90. Play_State_Pos      = $22F3 ;播放状态位置
    ; j7 e  s! m# k+ |" R. A6 n
  91. 0 }! ?6 O, H, {, j$ E4 t- Q
  92. .ELSE
    8 ]8 Y1 D" f; q) q
  93. . ]: t/ K  \5 @) o
  94. Play_Index_Pos      = $226C ;当前曲目位置
    , a. V+ p1 z' ?8 M
  95. Play_Time_Pos       = $22AC ;播放时间位置
    3 N: D! \$ V: A$ U; G+ y
  96. Play_State_Pos      = $22EC ;播放状态位置
    ( l, T8 B1 F5 u+ s8 O

  97. 9 I- c+ W: Y6 A, o! q( w
  98. .ENDIF
    ; `- y  i! a1 w
  99. ;------------------------------
    / A9 N5 |) e* |! o8 T3 g
  100. Track_Name_Pos      = $222B ;曲目文本位置
    ( y! c6 `8 s  T* r5 @
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    5 l3 ]3 U) V0 D# p, Y
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    4 o( P0 N+ y1 U1 D$ y
  103. Sound_Bar_Pos       = $2269 ;音乐条位置8 ?: ?7 j2 P/ x1 O2 \) N. E
  104. ;==================================================$ b' m/ Z: D" E; q
  105. Scroll_X = $00
    & z: O6 [3 y0 J9 g) l" Z& R
  106. Scroll_Y = $00. [6 V& \: \' n
  107. ;==================================================  P8 |/ N6 \& e9 i- d/ V
  108. Sound_Ram_Addr_1       = $0100: ^! a0 S& y( B5 X3 w9 G4 e
  109. Sound_Ram_Addr_1_Size  = $80  z. B. Y! u& e$ A. U
  110. Sound_Ram_Addr_2       = $0090" \" O  x9 w! H1 F# d) \; r
  111. Sound_Ram_Addr_2_Size  = $70
    1 N2 a2 L1 H0 m8 p" n! c
  112. Sound_Ram_Addr_3       = $0700
    6 J8 u( d/ d: C4 o, _  K
  113. Sound_Ram_Addr_3_Size  = $00- k/ g( y* }( Y) G$ T- x6 ], v
  114. Sound_Ram_Addr_4       = $04005 o9 ~; J0 T- u% ?
  115. Sound_Ram_Addr_4_Size  = $003 b5 O9 i3 b  a5 C
  116. Sound_Ram_Addr_5       = $05001 E+ A9 B4 f7 Q
  117. Sound_Ram_Addr_5_Size  = $40  k5 s* w+ V: t7 F" o/ p% ~: ~

  118. " P8 x" H$ x5 V4 w4 l5 z1 B
  119. OAM_TEMP_ADDR   = $0300
    * x! h+ x6 ]- }. k2 S7 q' i
  120. 1 M. i. m& R0 E3 N8 p# _
  121. ;==================================================( F2 \3 F) {% s) o( \4 R
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器; H3 m( X  s0 j5 g& r3 l
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器2 J: A1 z& S9 \- a( m5 A
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位; q( Y* n2 D( g4 Q% h
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1' \- U" w4 m$ V3 j: d
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1, E6 f: w: E& T
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 + t5 p; U. j7 b2 [  Q5 ?" @
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    5 Q2 A8 f/ ^1 P! V& y8 u1 {+ Q
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    * M( }5 x. E# x1 ~" S3 B, K
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    7 K: \4 e$ f* u% ^. V
  131. APU_STATUS              =   $4015   ;声音通道切换0 Z7 ?* q* X& g5 {# q  j
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通+ }% m2 u0 `3 s9 V
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    * @  s7 @( U4 I. b- c
  134. ;==================================================% A/ g3 v" q& M
  135. MMC3_BANK_CTRL          =   $8000
    / X/ l. I! O' r; z- x. C
  136. MMC3_BANK_DATA          =   $8001
    , s' O5 h  d$ n8 y3 B2 ?" [
  137. MMC3_MIRRORING          =   $A000: T2 L3 R7 w$ U: w
  138. MMC3_PRG_RAM_PROTECT    =   $A0019 `. c: ^( A+ D+ `0 Q) _7 g) n& w& H
  139. MMC3_IRQ_LATCH          =   $C000
    " x3 f  F; c1 Y+ ^" O5 l
  140. MMC3_IRQ_RELOAD         =   $C001
    " W, z: s: }3 C; H3 {/ l
  141. MMC3_IRQ_DISABLE        =   $E000& u9 D2 B$ ~8 a+ M. w# X+ D
  142. MMC3_IRQ_ENABLE         =   $E0016 ~& q# X! Z) y# l$ l
  143. 7 q- P) W0 _1 q9 v1 r0 x0 a
  144. ;==================================================
    & [4 B; U6 X" \8 `# \
  145. PPU_Addr        = $02005 V5 @- K8 p# Y8 l
  146. Palette_Addr    = $02C0
    $ x6 F8 Q7 s* z1 q* h4 X9 y
  147. Sound_Bar       = PPU_Addr+$E0- w' }/ B! v/ O- i9 t+ H
  148. ;==================================================
    ) e+ R. N) J2 X0 V9 a& r1 c, p: m
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    $ c3 C0 e- B; [% d& o
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$110 ~" G7 e/ R6 n1 X
  151. PALETTE_UPDATE_MAX      = $2C: L2 m# _* t% ]  w5 u8 B( I
  152. PALETTE_UPDATE_MIN      = $211 _% u) C: {0 \! c- {3 r
  153. PALETTE_UPDATE_INTERVAL = 60. O* |" ?) j+ K  G" s
  154. ;==================================================
    3 x* Z1 E7 n  M' a2 W( \0 K9 Q; B
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    6 K5 j" t! g& z8 A9 b( u( g' a  t* K
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    , L$ a* p2 B  W& p7 s1 Y
  157. PPU_Addr_H          = PPU_Cur+$03
    0 M/ a  c0 |3 m, I5 [9 I, g; L
  158. PPU_Addr_L          = PPU_Addr_H+$048 Q: `! R* A. F7 y
  159. Screen_Ctrl         = PPU_Addr_L+$01. d: b# U" n. n# e# P% n1 p
  160. Screen_State        = Screen_Ctrl+$01
    $ A  x. c" H! x$ a6 R7 m" W
  161. ;==================================================( h& T1 o3 B+ a$ k6 z. N1 P! a3 a. j
  162. Use_Ram_Begin       = $50+ J0 f# m2 X; C
  163. ;==================================================9 r4 P. ~* ]& B* C# Y
  164. JSR_Addr_Op         = Use_Ram_Begin; W8 \# N8 u8 g  n
  165. JSR_Addr_L          = JSR_Addr_Op + $01; L$ B+ _  E( R4 w. x$ |
  166. JSR_Addr_H          = JSR_Addr_L + $01
    ) y% R. w$ u. T: G! d
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    , p. p. }0 r0 ?" l3 ~
  168. Data_L              = JSR_Addr_Rts + $01' Y- f2 m" n' J  q9 ?$ ^0 W
  169. Data_H              = Data_L + $01  Z5 W; r, {$ d' I8 z6 K$ X  @- S  w
  170. Data_Cnt            = Data_H + $01
    - p# w* G: [* f% D/ p5 O
  171. Data_Buf            = Data_Cnt + $013 R" ^: \; x5 q5 [" W
  172. Nmi_Time_Count      = Data_Buf + $01
    ' T! N. n5 @/ X
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01; U! Y2 ^  N# k0 o2 A
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    6 @' {  Y) A; z
  175. 0 ~8 h* [1 h* @0 c
  176. ;调色板刷新标志
    & c( \; l, y; }2 M; R
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    1 ]/ g3 G# ~; D4 h' s- v/ k  {5 {$ c5 A

  178.   |/ r$ c$ U) [7 J. j9 M/ s- r
  179. ;当前帧文本写入禁用标志% l& ]" q8 B$ p
  180. Text_Disable_Flag   = Palette_Update_Flag + $01( J- [$ I* ^+ n, q
  181. " V  d' K+ I) Y; f+ u2 E8 \
  182. ;==================================================" C/ S0 k$ C6 ^9 B
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    " T1 y& @2 Q3 v7 A2 v# d
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    ' a6 M' K) z7 Y. y8 Q2 `/ ?
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间/ w) J. ~- u6 m5 q- Z, {
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间7 ^8 O4 Y% y0 P; R5 m
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    1 p1 b9 y$ q) Q: y: I1 e( |
  188. ;==================================================
    ( P- A& ~- Q0 K, [: Z
  189. Key_Keep            = Text_Disable_Flag + 1! l. Y9 n$ x  f/ w0 [8 Z& x
  190. Key_Once            = Key_Keep + $01
    : S( d' H" {6 d/ w2 u9 l
  191. Key_Kemp            = Key_Once + $01; K# g  V" d3 y
  192. Key_Temp            = Key_Kemp + $01' ]% e5 k' U( _- |6 V% k" T  A
  193. Key_Getv            = Key_Temp + $01
    9 j: L) p% Z  B+ N# e" l: V
  194. ;==================================================
    , b" O* ^/ ~  R) S2 J- f, R1 |
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    ; o8 _; _6 A9 z2 n( f0 H3 V  j
  196. Music_Item_Last     = Music_Item_Cur + $016 A2 G. R" n! l8 `0 c
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集4 D/ }% p; s! t9 U1 R
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    6 Z% B4 {- C; H7 `: r3 r- S# W, v
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    / Q9 i( D) c" J. f1 J( P) w
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    : C9 ^3 p  n8 \9 f
  201. ;==================================================- J) Z" V: [+ C4 _& u
  202. HEX_Data            = Music_Stop_State + $01/ ~9 e! R0 T9 Q5 u$ C
  203. DEC_H               = HEX_Data + $01
    8 y, t8 o( l  W% t* `. S
  204. DEC_T               = DEC_H + $015 j$ y6 B+ p" j4 u4 t1 g1 o3 h/ V
  205. DEC_L               = DEC_T + $01& e" s8 D6 ]' o& O3 r. G/ E
  206. ;==================================================
    0 j' z* i7 y6 N
  207. Time_S              = DEC_L + $01
    , I5 Y7 m/ K  e# ?( \5 P
  208. Time_M              = Time_S + $01
    9 C* v' v+ L- o/ Z( k8 m3 u$ P7 ]
  209. Time_H              = Time_M + $02
    5 Y6 w: @0 [" _% j7 C
  210. Time_Cnt            = Time_H + $03
    3 j3 A0 k  L8 b/ [) n4 {* }

  211. * @& j1 j7 f$ r7 K0 D
  212. ;==================================================: y- z  k7 a4 s- t! f1 m# \
  213. Music_Bank_8000     = Time_Cnt + 1
    : n. C; Z: N, P
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    2 P" o8 u" K" F" G4 A* ^1 ]" F
  215. ;==================================================! W3 j' [4 R" X6 M7 g: Q
  216. Scroll_H            = Music_Bank_A000 + 1
    4 S  f0 x+ `9 u! x1 Z$ p3 F+ Q$ {
  217. Scroll_V            = Scroll_H + 1
    ! }9 X+ E7 \: C; l; M, P4 c
  218. IRQ_Process_Index   = Scroll_V + 1
    . G) A! ]- E/ U4 B# ~* ^3 ^
  219. ;--------------------------------------------------
    4 D( y3 p  R# w: }0 _3 j
  220. Page_Cur            = IRQ_Process_Index + $01
    0 \( _% I9 ]/ D# f
  221. Page_Cur_Index      = Page_Cur + $010 E# K. P( {  T7 B
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    8 X% |# f5 ?5 {& F# S  w# R8 S
  223. Page_Last           = Page_Cur_Cnt + $01
    1 A. [2 I! r/ R& y4 a: |
  224. Page_Last_Index     = Page_Last + $01
    . P& ]! v9 i3 g& p8 }: H
  225. Page_Last_Cnt       = Page_Last_Index + $01
    / k, Y: h. x, f4 Y# `1 c) K
  226. Use_Ram_End         = Page_Last_Cnt + $019 H$ k" [3 `) h- ^  A% M8 t
  227. ;======================================================================
      V) y" d! H( G$ K3 W# A
  228. ;音乐数据块
    / j5 M" M# B3 U6 @
  229. : \! V4 K8 b% U, z. ?
  230. .IF SOUND_BAR_SHOW_ENABLE
    0 e) Z* D8 T0 i# Z( T
  231. " l6 I1 |7 i4 u) x/ A2 J
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    * ~- x8 M) ^3 E' g
  233. .ORG $90007 [1 W' F* Q" H/ m
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank". O0 p6 A2 }, B4 ^( W* U- y/ |% y3 A

  235. ! U2 s$ N  ]/ x0 @
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK! P7 i$ e- W, f3 l5 A
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    $ C0 W" H! Y% l+ ~# {) \$ ^
  238. , v3 j& R" T' H0 t
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK/ h3 {% ~1 D1 D8 q: q
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"$ F- c: V( b  N* n; ~  q

  241. * Q2 q% f3 Z$ f% p
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    . {. h3 D: ]# I& q. M. Z
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    / [& G  j) X# v% s( S

  244. 3 [" c' ^; L: M4 D1 N$ u4 s! @
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    0 a3 X% J/ l# p2 n, c* S
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"! n$ M* d9 C5 Z! w: m
  247. 2 L( n1 m- N: \5 X6 Q$ |3 p
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    $ M. y+ i% K# u' w: y/ M
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"$ Z$ D# r/ `" J# T9 @3 R
  250. + e4 q" M4 ?5 x$ D, L+ G( j
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    ( E! u. e% J( |$ g# S. R7 j
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"  J$ |1 g: `; h. a/ T4 c/ r' z4 l

  253. ! @& z5 f% O. [6 \, L: M# F
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    / ]$ t& A% D* t  O7 \
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"1 p. J% F7 D6 U6 }
  256. ' J0 B$ }* j8 N6 [4 L
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK0 W4 T7 d0 _6 v: P2 x* Q
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    $ E, t. R2 i& j+ T& V: ]

  259. 5 u1 `  q7 w( j  P; l( o# ~% u* j4 P
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK+ B/ }1 Q0 b0 e# j6 w0 h
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    7 Q, [: B: Z3 V

  262. 8 E2 o6 u4 o1 D1 I
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    $ i7 N+ u+ r& E3 r$ E2 F
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    - B- V. D2 g% m1 d4 B' e
  265. 5 X4 \8 K* A6 ]) T0 i
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    * l5 `; _* s$ B" ~
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"/ I5 |* B1 n# @9 Q; H
  268. * b- O. w1 d/ k$ U+ z! r
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK5 E) d) x' T" `5 U- H
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ) O: @- y9 K: N6 T  X- m/ i" S
  271. ' g" r3 i- y, H8 C) `4 m6 B
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK& D4 l: M9 o8 h( y8 Y9 q
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank") j& T, K' i/ p- \6 U

  274. & ~  n  x3 a! s; q
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK* X1 r. G& H' ?0 E5 \! `2 j
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    6 e7 Z8 A' O* j0 j' T
  277. 8 h- G3 M5 U3 \# w7 b
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    - N8 T1 Z0 {& o: g4 ?9 x; W
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank", ], x: l. S) U7 {- _
  280. ' }5 {( w4 A: B* Q# X  ?
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK1 A& h% S: h- |
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"3 ]9 f0 }0 S/ g, w/ Y) m; }
  283. 1 B$ A/ S3 P( {7 c! @5 W) n
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK% d  ?  ]( G/ o: N  H
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"2 O9 }2 R& M. w  x7 k

  286. 0 X0 O+ i2 G% n; c, v
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    : e9 m: {% q* c( \. @) P
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    % _9 R  Z$ u; q! Z& _

  289. , S! t) X1 c. n# N
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK! ~1 ]. P, v0 C' m0 z
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank": u! s1 k; Y: ~1 w

  292.   n, C( ?& M! |1 L' u
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK2 k" Q+ t0 J/ i( ?1 R
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"# t3 S; i: w8 @% E( G4 J

  295.   @- m6 A9 e( t' T
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    0 Y# @# H& t( z% H" y+ v7 Z
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    - g8 M1 ?  i& {  P  \

  298. ( s6 j. j+ {5 _1 k% y6 m# W
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    7 Q9 }) s5 ^  S# m# w
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"9 U+ [. r; |- B: W/ D2 A' r) p

  301. & E; a; T- F: u- E" D0 t
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    ! z8 A+ d3 ]* s  t
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    ) Y. x0 [- e  j- h# A

  304. 4 r' m; f5 q1 `+ b+ u" d6 v
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK# a. c& b7 }3 ^& ?9 L0 u7 Y
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    ' O0 q0 s" y6 v* ~& I
  307. 7 x) W" I7 J4 |: P+ o4 h& W
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK& I( u% V! ~9 b* @6 N/ l
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    $ X( A. Q* j0 s, ^! o/ I6 W

  310. ) P: Z5 t. @/ \' Y6 O
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ( {4 Q' \3 s$ W/ b/ `( Z9 f
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank") J* K  {# D4 n5 h9 z
  313. # Q& i- v8 T' i" s  g- `4 S0 `
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK5 D& _/ J' r7 W& \* j* d7 A9 F
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    ; z7 N6 t  @# c3 V# G

  316. + C- M: |! \. f# t; H, `+ I+ S. X+ c
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ( k' ?3 I+ f8 c, f
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"$ Z$ u, |: f4 |7 r( }% X
  319. , L* \- g( A" ?* U: m+ j
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK% C$ s$ R+ }1 n) M$ B9 X' e* G
  321. .ORG $D400- ~2 I  v. k/ B
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    5 ?( d- n" ]& T0 y0 G% b
  323. " U" q7 b. i  X- v( T" b
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ) r) G! y2 ?8 A  n/ _4 P& r; [  K
  325. .ORG $D800% B3 }, p" ?! W6 b& x, e
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    7 P' q3 a1 |) l* O2 S4 ^

  327. * n. f3 G" [. E$ r9 Q

  328. ( z1 L7 m8 g2 f" L
  329. .ELSE0 P; e# K! P* ]: M: P  R7 }. K) X

  330. 2 N; s* d( r3 z& E5 ~6 n2 v7 T
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK" q( `  u  L( p# z7 a, I; w% u
  332. .ORG $9000
    7 F1 A3 ^# @$ q* F1 r) ]
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    $ J4 L/ k: }$ n7 w8 s
  334.   |2 I# Y& X8 E% x. b) c: m% Z
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK5 D, i/ Q) a1 c2 c; r
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    " |# U1 S* x) H/ T
  337. 9 }1 A7 C; R5 K3 W# y( ~5 w
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
      g8 M6 d9 H* ?7 W
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"+ W6 @4 O  t: b. k( Z+ X# \& a

  340. * j  N1 `  A: r  R/ d( M
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ) q8 E; X' ~4 p" S1 m  G5 m
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"  t( o, U; U9 I7 \. ]

  343. : o- h' Q( n  O& D# k, l6 U
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    + q! c8 o6 s* l1 i! W3 Q
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"; Q5 O5 I) h! O( Y0 R

  346. 1 P% e( b; q4 }8 k5 D6 M
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK2 v3 V4 F& R. Z  o! D$ C
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"; j6 k6 ]8 I8 B+ k7 p* X( n/ T
  349. ; t. Y3 @/ }8 Q
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK' I+ r- t0 Z) j) H
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"( l6 b$ e* O& x' C) v2 E3 q

  352. # d9 I, ^& T# O/ h
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    # r% W: V/ m/ }; ~' Y3 G
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    & M6 B3 ~- Z  a9 d0 y+ U7 `
  355. 7 ^2 E/ O' Q; }! u/ U7 G: f7 Y* R" s
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    $ P9 s; W0 {7 D5 R
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    ! t: \, L( R, o0 h) W

  358. 8 {* U- j. ^' `" d# Y$ Y; o' k  c
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ! a: L; b" W7 w7 N9 l' }
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"% g$ {2 v4 k/ O* n1 h9 O, y
  361. 4 O' O* \! Y, F( ~- A. g
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK5 A7 Z( ~$ N: _1 K( n/ n
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"$ ]% a9 D+ b6 W$ p. \6 [* b* }

  364. 0 c0 a# N4 p' Y9 N
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK5 w8 r- c' i- D- z2 J2 g
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    ! \% {0 I% F+ `- N- q9 f1 f4 C  r

  367. & ?. c% v2 X8 x6 b3 t- ?6 U9 P
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    - Y6 Q. v! L( }: |  a
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank". N1 j$ v$ s% l9 c2 {

  370. : T7 U8 c- n& L9 g3 F% [$ J
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK* p7 p; N& ]& N( {
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    $ J1 ?6 C* h8 A8 v0 L
  373. , R, o* o& f7 Q0 e; K0 \
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK9 d1 S, h- T, S$ c
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    ) i1 F' I  h( y. \! P) H3 V/ a

  376. 8 c. c- X" Q. J' h  v1 @
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK& S! r9 {) S9 P0 `; V9 c- r, e8 m
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"6 \9 l9 L; x5 j$ O9 A- K3 G
  379.   B7 u1 u5 `- [0 d* d+ w) P
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    # }* n9 a- g0 V, ?* C5 [
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
      G. O0 [+ p  M: K6 {
  382. 2 c. R) z- W9 G3 \1 x
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    : I" G! m% @2 o
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"' b( Y0 p" C* ^, p0 Q: F& u0 ]1 w( t

  385. 1 P/ F2 l8 ^8 J. u; R
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK, d& Z" ^) `& C
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank") X( v; s5 C* J( S+ A8 y. g5 F

  388. ) [% Y. c! s9 ~3 w+ p& c0 {
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    ! A( Z- f% c- ^# w
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"% p% ~% q: M$ T# ^! s
  391. " v( ]5 M. V5 B$ C7 @/ M& t
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK$ \5 c0 M. D3 \0 V# }
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    8 ]# a; }3 F$ W3 L5 |3 q+ S- O
  394. 4 u* y: B" [/ Q6 K7 R
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    $ b+ @; X2 W9 Z, H3 C9 S4 _& b
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"' I3 ^9 X4 V0 r( \9 e$ W4 b# ^5 ~
  397. * ^, |$ ], ?( k/ W# x' U
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK% G7 ~+ |; f( j: W
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"% a* B8 t3 c$ \  G% s( e7 _
  400. 3 ?9 q1 s. w' E/ X$ Z% ]: ?
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK1 w2 d& B: {# g" o6 L
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    ! k) t# [. x- k9 A% \
  403. ! N0 V! J! W' t# N2 \
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK7 t2 {! W! K- `8 p9 Y
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    ' `% X, l! Q6 [2 b  O& u# x
  406. / J) p' E& D2 p* d) ~% ~
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    * e2 }- ~1 ?# k5 a% f# B6 a; E/ W/ x
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"2 _3 L4 \% M) R4 a

  409. ! o# z! G$ @& c1 F7 E5 A0 r6 u1 R
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK, A) _7 j* T8 w, q, |
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"# C& Z* f% ?2 o" U9 y: t4 e2 j
  412. 3 E; s0 [0 G+ F1 R
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    % p' a) S' i" I$ v: ]7 T; f
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"& A( u' ?3 `$ [& u1 }: t0 v3 P4 n
  415. # G5 H3 q6 L: x. l$ n9 P% _
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK. J; Y" T+ A. Q, o" t$ t( W
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    & k' Z7 {2 l* B9 u' g0 `) Z
  418. ) d( ~, l( u2 K) x" d( I
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    / O# Z; `: G3 Y6 X* x/ l
  420. .ORG $D4001 Q& @$ B, T  i- e. j/ }. q, i
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    5 K; ~  [2 o+ _# \: @1 R7 U# L% x9 A
  422. 7 T1 i( \# W5 Y0 D/ q1 n4 _
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK/ ]9 v5 w7 ~6 ^  @: z- L! w
  424. .ORG $D800
    ( h0 @1 `, S) t5 J& B
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"  @0 P2 I1 v+ n" g0 l7 d
  426. 3 V" |0 R; p: G. J; |8 m3 h
  427. .ENDIF
    - J: w  I- `. V& `9 b0 C+ u% s

  428. 4 g  a7 [. m! A6 l
  429. ;CHR图形数据
    " _- {1 \# S  W+ ~+ P" F
  430. ;======================================================================
    & M" p4 i* u$ @* n& y9 M
  431. .BANK CHR_DATA_BANK
    * \% E  Y) i  v( J8 E
  432. .INCBIN "chr_bank/chr_data.chr"
    . d" C6 V" M2 @6 [% [
  433. # a, a, U! h6 h- @- ]7 \( ]
  434. ;======================================================================- q) b( l3 p2 K, r' c  y
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK+ P% J1 C* v: u, N: H9 Z
  436. .ORG PROGRAM_ADDR
    + [9 i" M  e7 I+ j' c7 A0 l

  437. : m" g% N3 r7 ^/ ]
  438. ;==================================================+ u( @2 h# p+ g
  439. NmiProcess$ g) B5 B2 A  I( P7 K7 u$ _% r

  440. 4 G% F8 V. a: e3 G+ k
  441. ;关闭屏幕控制. U: D, ^8 I1 r8 `, G0 [# |& _
  442. LDA #$007 h# T. a  u. V# g1 k
  443. STA PPU_CTRL
    ! g4 ?5 y$ i/ K$ @7 l3 E

  444. , z6 T: Z- _, A7 v
  445. ;没播放音乐就不需要触发IRQ
    ; t9 T0 ^* l7 x* K( \
  446. LDA <Music_Stop_State
    % e8 U9 y* c) C
  447. BNE NmiNormal. X+ ^  C+ S2 I2 x" m/ M0 H
  448. 4 A; s# K8 F) R, G
  449. ;重置IRQ索引
    - m1 g) P$ ]$ h- V- p4 l
  450. LDA #$00, D8 {2 ^! A4 _8 W
  451. STA <IRQ_Process_Index
    ; z( y4 m5 G* J2 h; ^4 Y( \
  452. 2 H* x; m0 V! k4 `1 r! R
  453. ;时间秒数为空则跳过* C: F$ g) B( k& ~9 D$ s9 s2 ]
  454. LDA <Time_H
    ( z7 U% y- Y( E4 c4 }
  455. ORA <Time_M
    6 N7 o4 G2 G/ B7 ^4 M/ t5 V
  456. ORA <Time_S9 ~- J  [3 _. F6 U
  457. BEQ EnableFirstIrq
    0 H* q7 |$ J- q& X$ a

  458. - Q( r, l; D/ z* ]" N& y
  459. INC <Scroll_H7 U7 g0 ?' O8 _" d! ~

  460. 8 y, I# e+ `# _- `
  461. EnableFirstIrq
    9 W8 J- [# A+ |' n$ B
  462. ;80条扫描线后触发IRQ
    4 T3 |3 a3 l: f- q6 h. d
  463. LDA #IRQ_SCANLINE
    $ n$ a5 s! I, s' P
  464. STA MMC3_IRQ_LATCH; `$ y. X0 ~3 r/ C4 y
  465. STA MMC3_IRQ_RELOAD9 K) {1 ~5 \7 y- `
  466. STA MMC3_IRQ_ENABLE9 o& o3 h! B9 \) g: f3 j& i
  467. CLI' I  |6 l' o. e* n4 ^9 b

  468. ( q+ c$ j' L0 I! i. U, C' s* l
  469. NmiNormal3 X+ ^" L7 P: o. T) G/ M% g
  470. 0 M1 S" E2 z: U8 e5 U" c& g
  471. ;处理PPU图像
    ' R% r# W; Y4 `  O& b
  472. JSR PPU_Proc
    3 l3 a, i# q4 u5 r7 n: M8 j
  473. 9 Y, O, }7 W5 s6 }$ \: P
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化); `# b7 K, z. I$ f0 u0 A+ y
  475. LDA PPU_STATUS2 H& T# K+ Y' c) e* m. t+ q
  476. ;LDA #$00! O& X7 d3 P$ C- A$ ^- s9 u% u  L
  477. ;STA PPU_OAM_ADDR8 V" R% a/ j  c7 v
  478. LDA #OAM_TEMP_ADDR / $0100) i2 Y2 ~  d: c: K
  479. STA OAM_DMA
    / l0 f8 u, T7 [, _+ X% i
  480. - Z6 [7 K) o8 f3 u0 |) g
  481. ;启用NMI中断
    & V0 i* m, }6 N
  482. LDA Screen_Ctrl
    4 X: \: p0 l* v; ^
  483. STA PPU_CTRL$ e" E! U9 Z6 p, A! y8 p
  484. , s" ]' b: D9 O: @: o4 _
  485. LDA <Text_Disable_Flag
    8 i9 n; @& d' K. W
  486. AND #TEXT_DISABLE_RAM# B1 u! W2 X1 I% G8 v) O
  487. BNE Nmi_Sound_Play- _7 Q0 |& \! M% w
  488. $ W, C. p' _9 I$ b% R) l
  489. ;处理手柄输入
    2 B/ n& q9 j5 }5 C& x: k
  490. JSR Key_Proc; W$ Q5 m4 M8 |; a, l9 s
  491. 8 P( j" f3 [) u  w1 ]1 j2 {
  492. ;切换音乐(手柄触发)0 m" D' j* M1 D% T8 ~
  493. LDA <Time_Wait_Cnt' L) @8 J$ X8 y- O9 Y3 o
  494. BNE Nmi_Cursor_Arrow
    ) o) C9 h$ o8 ?, H+ F
  495. JSR Change_Select_Item
    * a2 I- R7 a* D0 `0 l$ ~: O' N
  496. 0 F6 l8 w4 b# E2 p$ [7 _( ?/ W
  497. Nmi_Cursor_Arrow7 }; k% f1 h( h, Y

  498.   i0 G( y0 e7 A
  499. ;处理光标箭头7 b) R- j; J, f2 g' Z/ {# \
  500. JSR Show_Arrow2 C/ O( l( M* a: @3 h
  501. 3 V: r, U7 [$ ?/ y
  502. ;更新调色板
    1 X$ j* {; r( M8 `
  503. JSR Update_Palette_Data
    & n5 [, v% [& K) U( ]  D7 ?, ]

  504. 5 N+ ], [3 K, p2 ^; a
  505. ;显示时间(缓冲)
    + G; m* P3 G3 ]) P
  506. JSR Time_Show
    7 e0 M8 Z; S: E6 S$ t1 ~% z

  507. ; C0 _3 u$ t- M; H% i% M( K
  508. ;音乐显示(缓冲)
    ) R- x) c, q8 E% P" H, }
  509. .IF SOUND_BAR_SHOW_ENABLE1 m+ K0 }' \! j7 s5 ~' W
  510. JSR Music_Vision
    - ^2 x2 {0 [( P9 \) R/ X' q
  511. .ENDIF
    ; R7 I/ H' |+ U9 _( h
  512. % T8 A/ E4 _. T' L9 Y( T
  513. Nmi_Sound_Play
    ; n/ e7 F0 [9 G; _
  514. ;播放声音! V, S. m; B3 K7 v# B' ~! A
  515. LDA <Music_Stop_State
    3 t7 ~) c6 o) m2 [% @- x
  516. BNE Nmi_Time_Wait_Set
    1 S7 H) M( E- M/ X; w
  517. JSR Sound_Play_Proc
    0 ^2 V& C" @$ r# |5 X
  518. : m) o% R% d% W; C' x
  519. ;播放计时
    % @0 B; e, O7 q) n2 m
  520. JSR Time_Count* r) S2 ~. L  D" f# ~* t" d
  521. 8 I# X. o0 k; I/ Y: s' N, E
  522. Nmi_Time_Wait_Set
    9 |/ J$ I% G4 v' p. V
  523. LDA <Time_Wait_Cnt
    5 N! r6 o: Y- k, j/ R
  524. BEQ NmiNormalProcessEnd% N# h9 t9 t; x
  525. DEC <Time_Wait_Cnt
    % n7 h* L2 P1 e: m: V9 V
  526. NmiNormalProcessEnd+ v8 o4 Q+ x" W
  527. ' X) s& Q4 K3 E
  528. INC <Nmi_Time_Count
      Y4 I. B2 I! r' d' B' e2 c2 M6 E
  529. ' g7 U" k2 ?' T2 U# M
  530. RTS
    8 P/ z4 ]: S4 I3 U2 h

  531. ) L2 g9 g8 l, U" q; H1 L
  532. ;==================================================) D; R  |) C4 K6 r, v
  533. Init_MMC34 v" B( F5 u" c) ^& i3 |3 Z
  534. ;==============================4 Z2 c$ p) r2 f
  535. ;禁用IRQ
    , v3 m. H! W$ ?6 m
  536. STA MMC3_IRQ_DISABLE8 K9 B/ F9 n1 i) V
  537. 1 }2 }8 |, \$ L( t5 L
  538. ;水平镜像9 ]! Y+ v7 W; G( T( ~! S& I, K9 J1 A' z
  539. LDA #$01
      u1 x. F0 x' X* J
  540. STA MMC3_MIRRORING$ ^, m7 k5 r4 f: _/ g
  541. . }) c& M9 Z$ L; [
  542. ;初始化图形bank2 J: E0 e2 g. I7 ~4 `
  543. JSR Init_MMC3_Chr_Bank
    5 k' [7 \" @2 v1 S! A( }7 t
  544. ) k2 B8 p1 B& H! h4 b! V$ G
  545. RTS
    - |& g. K- @  Q7 y3 h
  546. ;==================================================; y7 B+ G* g, V" k/ ^
  547. ProgramBegin;主程序
    4 a1 k: G+ j7 D5 K
  548. LDA #$00# W* e% C* G7 r- B) [0 n! e
  549. STA PPU_CTRL
    $ Q) o8 J1 z; k& G6 [) ~* i$ S
  550. LDA #$00+ Q7 X; r; i5 D* {: }
  551. STA PPU_STATUS) W4 P! ]% f5 u
  552. STA PPU_MASK. {/ T3 A; t( T9 K! O' K7 _4 s& f
  553. STA JOY2_FRAME
    / \/ J% D. F4 c9 U7 `
  554. ; r2 I. F' U  R
  555. STA PPU_SCROLL! H  U- `0 g4 V. x0 U0 ?% E
  556. STA PPU_SCROLL
    # f+ R6 T( I9 s3 C& C7 a

  557. * c8 D- d  u) f! k+ t
  558. ;==================================================0 E- i* @* C. O$ ]- l
  559. LDX #$FF
    ) e/ p. t, v6 L/ `8 M
  560. TXS
    3 k; Q7 t( Y1 v+ c3 A$ g
  561. . T% ^+ L) }. u+ |( S& O
  562. JSR Init_MMC31 s# u5 m' W6 ?. ^9 B7 ?" I  Q: u  L* A

  563. , H( I- I6 j) S9 i* N
  564. LDX #$023 `% D# I  e6 u4 w- |
  565. Check1
    / [# D: Z& w3 U7 G! h; G; g# q$ i
  566. BIT PPU_STATUS, ~) _" [# _+ y; l7 W: y
  567. BPL Check1/ p/ L4 o- t! o/ y9 |* k4 |
  568. Check2
    / s1 J' O. m1 `
  569. BIT PPU_STATUS
    / q' x7 ~. n3 W# X
  570. BMI Check2- Z8 ]( g- {- X" k* K( Y$ ?& \

  571. 7 h5 C( [8 U5 y7 Z1 F  A( m; s
  572. LDA #$0F
    , w3 J0 \. y1 U% N
  573. STA APU_STATUS
    & o; R9 m6 f9 t; ~* l5 _8 f
  574. LDA #$C0
    / _4 ?2 l" P3 Z  l  M
  575. STA JOY2_FRAME
    1 t0 D% J; L* e. O% y0 M
  576. 1 D$ e8 D; Q! T, t: n
  577. LDA PPU_STATUS1 G& @. h% G, \& \6 P
  578. LDA #$10
    % B; |& t4 N& p6 j. @# [4 U/ a
  579. TAX
    / Y6 k2 `5 T, B$ f
  580. Check3) U8 Z) l% B1 {- T/ w3 Q( B2 |9 e
  581. STA PPU_ADDRESS
    ! l; o- j7 ^2 ~/ }* d  m
  582. STA PPU_ADDRESS
    , W* K) |1 P6 v$ I# T
  583. EOR #$00
    % l/ b" m3 h* K: k/ X6 }0 U
  584. DEX
    0 C& n8 k/ T6 [$ N* i
  585. BNE Check3
    0 P" ^& y' o3 W/ \1 }4 F
  586. ;==============================
    5 t* ~4 n; Z& f/ T1 i
  587. ;调色板清空
    9 {6 E6 p3 e1 X
  588. LDA PPU_STATUS7 s5 X( w" `- a4 y9 e8 X2 z& l
  589. LDA #$3F, ?! h9 f3 \6 Z5 K
  590. STA PPU_ADDRESS3 x+ x7 k) x! w% J3 E) G8 h# F  L
  591. LDA #$00- n/ K$ u0 j, o* |% b9 ^  d
  592. STA PPU_ADDRESS* E1 s; `( D% Q# a$ U+ ~9 D# v* `
  593. LDA #$0F( \) E9 `! D' V1 |8 J: ~2 O, B
  594. Palette_Clear
    7 B% P8 b7 P8 |9 q& W7 O" P
  595. STA PPU_DATA
    : j4 [. {! A) A. @& s
  596. INX
    7 d' w( u9 _7 q# G2 P. E) f% R2 x
  597. CPX #$20! q8 F7 U! x) I" o
  598. BCC Palette_Clear1 {" }; v6 A# u/ z" q- y
  599. LDA #$005 t/ `6 \( z8 g
  600. STA APU_STATUS2 z$ t2 d( w9 |+ c& a, H/ _% G4 d
  601. ! J) ?2 B' ?0 v0 {1 H- |9 p/ s0 l
  602. ;==============================" k* ?- n; N; M5 `
  603. ;RAM初始化& i/ d  Q# g) p! u! Y$ f
  604. RAM_Clear_All
    ) d# a9 B4 `8 I  }( O( p
  605. LDY #$00% X7 K! S9 v/ U% Z) Z4 q
  606. LDX #$083 O9 g* ?, i* c
  607. LDA #$001 G( }  i' n8 t4 l) ^$ C
  608. STA <$004 e  G! A) H7 [( ?' x0 w9 n
  609. STA <$010 h( j# M( r8 ^& g) V
  610. RAM_Clear_All_Start
    * O7 E( o+ B% W+ O1 S
  611. STA [$00],Y
    3 ]4 ?6 [9 @- p: o$ b2 Z. E" B( ?
  612. INY" B2 Z$ P  m- R% {0 v) h9 o
  613. BNE RAM_Clear_All_Start2 K/ i% _  V& O+ l- \* q
  614. INC <$01
    4 W5 |1 t$ M! |: ^1 S6 k
  615. DEX2 z6 Q7 A0 g! Q; e4 P4 [: |
  616. BNE RAM_Clear_All_Start  ]( A9 C. E8 H; c
  617.   D( v: ]1 d! a9 h
  618. JSR VramClear
    ! I9 I9 ^6 X# x( ^
  619. JSR VramInit
    " y$ _* B6 k# t1 K4 ?! d
  620. JSR OAM_Ram_Init- v3 \$ \% B% X' D' _, Z
  621. JSR Init_Palette_Addr7 J- n( y& t% X1 u0 L1 j7 o

  622. + g+ A9 Q- J$ X
  623. LDA #$FF! ^7 n  J: ^$ R2 E6 Y
  624. STA Use_Ram_End7 @5 {- r9 j7 d% b0 ]
  625. ;==============================
    5 O1 Y* t$ f$ i. e
  626. ;初始化背景调色板! K5 K' ]# R. }5 [& `- G
  627. JSR Set_Palette_Color8 d( Z% n8 [, H6 h: H& |# X
  628. JSR Set_NameTable_Attributes
    ' r8 C) z; x3 e$ g
  629. $ }! h) B% c% X0 \
  630. LDA #$00
    , u/ |6 @. p& p* A
  631. STA PPU_OAM_ADDR" Z2 Z, _9 H6 k2 d2 a" T6 a
  632. LDA #OAM_TEMP_ADDR / $0100+ |3 h, \7 {  q
  633. STA OAM_DMA  n6 f+ E$ \7 A# r/ n% R1 j8 V
  634. + ^: U, z8 E2 Z7 K- @5 J, Q
  635. JSR Sound_Reset_Proc) s3 X; y+ S! Q
  636. JSR Set_Sound_Total* O: v7 p0 b" S/ i) M- ^

  637. - y; z2 Y* }# K5 M1 k  T2 t
  638. Init_Start_Music
    3 b1 t; Y# G/ r+ K$ [% N) C
  639. LDX #$007 N8 k4 r0 D7 V0 {
  640. Init_Start_Music_Write
    ( C& S1 \. f0 m7 N
  641. LDA Sound_Start_Port,X
    , ^9 ~; L* D% O- t+ J
  642. STA <Music_Cur,X
    2 ^7 [( x- s8 g" B$ x
  643. INX
    ; o! o' p/ {) R, b) d8 D' R0 t
  644. CPX #ITEM_MAX_SIZE- K2 f# @2 V  a5 o& i* b
  645. BCC Init_Start_Music_Write0 }! m5 j$ G/ {; e- c3 m  C& w
  646. ( a# i  R, }# Y1 ]
  647. JSR Show_Music_Text
    3 R6 j% [# \1 S+ x6 R8 ?2 k) x
  648. % u+ U/ h0 T" O0 \: l6 k
  649. .IF SOUND_BAR_SHOW_ENABLE( \2 H  p+ p6 C  t' m+ U
  650. JSR Sound_Bar_Text_Set0 L# ?* e4 U; R0 n' Y7 e' g
  651. .ENDIF
    5 S" O( S: @- H, S$ f6 \' r
  652. : i* n# |/ l# I2 Z8 L
  653. .IF Track_Name_Pos, c2 d1 p) {$ k" s- J4 u- s  j# q2 B$ A
  654. JSR Show_Track_Info; D: P  B# ?' p1 q
  655. .ENDIF( ~. ^2 j4 ~. s8 a( s
  656. # Z! m4 g. K/ h4 ]2 T* D, k
  657. JSR PPU_Proc
    : }4 |& z$ d9 A. a/ l
  658. ) [7 y6 A8 z' o
  659. ;==================================================
    ! l( q8 R+ S! W) r% f
  660. ;音乐bank初始化 ' {7 M, R' `* s
  661. JSR Init_Sound_Bank- u% I5 \# W& m" S3 P7 a6 {

  662. + v( }) ~5 ]' c/ j; u
  663. JSR Music_Show& b+ \3 M3 S; l1 C6 D7 W( ^1 T- I
  664. JSR Time_Show
    5 E5 @) X$ R! \1 S& W% @$ w( v) S" r
  665. JSR Music_State_Show
      O- N+ X* m# G' ~
  666. JSR Time_Delay
    " {9 n3 y$ T7 |. w

  667. ' W  ^; `! n7 N$ u. ~0 U2 W9 S; Y
  668. LDA #$01
    ; C( v' l& H* ^; Z' L) c
  669. STA <Music_Stop_State
    1 J4 _( ~7 C# K6 L$ q
  670. . M( _2 {+ _* \) {/ X( v+ v% ?
  671. LDA #$88
    $ b# b6 n: G3 n2 H# W* B: T
  672. STA Screen_Ctrl! v* L; a" A" j- v
  673. STA PPU_CTRL: r. N- b# R6 Z+ z2 r7 Q; V- T

  674. 2 f# h6 e5 @* F2 p' v, G# e
  675. JSR Show_Page_Text; s6 z: v8 ]7 W. a6 a7 x7 M7 A

  676. : m# C! f% U. L9 J
  677. LDA #$10% M5 U/ S& j6 B$ k! l) L
  678. STA <Time_Wait_Cnt! }1 @9 X) N! I
  679. 4 \: d! w/ d2 W6 a: }. q
  680. Wait_Time_Over& Q0 T- W2 t$ {, ]8 Z( G  [2 P& K
  681. LDA <Time_Wait_Cnt9 P/ y# U9 Z) L' c' G# P) e& V
  682. BNE Wait_Time_Over
    0 x+ o4 e, I6 W( p' I! N" ?1 q

  683. 0 \& q0 U4 Z4 d2 q. D/ o
  684. JSR Show_Arrow
    # @. _+ O4 r! C. e/ r1 O4 S
  685. LDA #OAM_TEMP_ADDR / $01003 p5 M7 h7 j8 g% \+ ^0 F: e( v
  686. STA OAM_DMA: [' m' c5 }  J! |

  687. ! g$ n4 y8 E! Q" }1 j
  688. LDA #$1E# S0 Z) ^$ M8 A+ {, [
  689. STA Screen_State) W6 z6 |* q$ G" b6 |8 E
  690.   i% p. Q  k" T5 U0 A5 o# N- ^
  691. LDX <Music_Item_Cur
    6 r1 ]2 O# ?, J( u  t+ O
  692. LDA <Music_Cur,X6 k5 u% M2 `3 S: q3 ^+ z
  693. JSR Sound_Init_Proc
    * f+ ?( \0 W# L" x; n3 x

  694. % Z& c: ~5 p0 C- J( z* D
  695. CLI, Z" o' q' {+ }3 U/ R$ k- t
  696. JMP MainLoop
    3 @5 _; P9 z6 J

  697. . o/ I& f! g2 v1 F0 y
  698. ;==============================
    ; x# V% h2 Z" `. a0 V  }4 k
  699. Time_Delay;延时等待9 S' h: j* z. ^+ O8 [
  700. LDA PPU_STATUS
    / [6 `% |% A! \9 ~3 h
  701. BPL Time_Delay
    8 ?# H6 j$ ~; O! Y+ N0 c  ?
  702. RTS
    ( a' k4 z& h: k% ]* ?

  703.   x% I. b/ z3 ]/ _) v
  704. ;==============================
    0 N- r  I6 X( Y
  705. OAM_Ram_Init;初始化精灵内存
    3 O& l. k- p7 x$ Z
  706. LDX #$00$ o4 g+ t5 _3 U# x
  707. OAM_Ram_Init_Write
    5 c: Q3 T$ s  w/ z0 C& r3 b. E. l
  708. LDA #$F84 `+ L4 ~/ U* M3 F2 q9 }
  709. STA OAM_TEMP_ADDR,X
    6 ?4 Z4 J$ d! R6 W3 e# L
  710. INX9 o/ }( [% n. |5 X6 Z
  711. LDA #$F8
      o9 I3 ^7 ?3 X
  712. STA OAM_TEMP_ADDR,X
    + V' z7 ~5 z# n/ t
  713. INX
    & L1 w  j% {. h* ^$ Z* R8 F# t* W
  714. LDA #$00
    - S, k$ |0 r- o+ M# I
  715. STA OAM_TEMP_ADDR,X  z* q) p$ @1 W- O/ a
  716. INX
    + Y0 z5 \) P+ P8 w; p5 i& ~
  717. LDA #$F8
    1 P& r4 Z1 b' B6 K4 u4 g
  718. STA OAM_TEMP_ADDR,X
    $ m5 \' K6 j3 @6 b8 {
  719. INX
    ! X% s9 S* M: E" y0 b9 ?
  720. BNE OAM_Ram_Init_Write
    8 O1 F# r4 @& T' A/ v  f
  721. RTS3 |! u# H. X6 K+ v7 g* _
  722.   _+ Z+ |' \9 M3 n" A: a
  723. ;==============================
    5 T% x. T3 j& v
  724. VramClear;初始化图形内存
    6 B3 k- Q( m- e/ A" i( O
  725. LDA #$20
    5 n! ~9 w/ D+ c7 Y6 e; x  |
  726. STA PPU_ADDRESS
    & t" ]6 ~9 c: L- ~4 e7 F' [# R
  727. LDA #$00
    8 w) Z/ ~  d! N# U
  728. STA PPU_ADDRESS
    / w9 @& f1 o2 P
  729. LDA #$00) F( C+ x& @- C; p  F; v
  730. LDY #$00
    * h, N3 k. k6 {" u/ x8 M' ^
  731. LDX #$107 A' u; A" P4 c4 L3 X+ g
  732. VramClearWrite
    $ s; f3 s  R& I5 r$ _
  733. STA PPU_DATA
    5 O2 M8 h" S8 u' M4 E
  734. INY
    - u' A# j/ G  z/ m% l
  735. BNE VramClearWrite
    9 c6 K9 o. {- f. S" \) k
  736. DEX; S1 m% w% S, e' [; p7 K4 a+ K
  737. BNE VramClearWrite$ _6 i3 i$ M1 v3 f
  738. RTS2 w; a( c( z5 Z  V! w

  739. 5 ]) J6 ?( L( D8 p8 o: f5 u, c
  740. ;==================================================
    ; V0 B* ]' j; _
  741. ;设置MMC3图像bank5 X5 g9 q, t$ j) ^1 s( r
  742. Init_MMC3_Chr_Bank
    ' k) d0 a: G+ n! z4 G7 P  a
  743. LDX #$05
    . }3 k7 B! j, d( d9 B
  744. Init_MMC3_Chr_Bank_Write
    ) z# T+ f+ ^3 |
  745. STX MMC3_BANK_CTRL
    0 v" Z4 i7 S8 ~+ a5 R) c
  746. LDA MMC3_Chr_Bank_Data,X. L! ~% R  }/ I  f9 F/ n2 [; [$ s; j  {
  747. STA MMC3_BANK_DATA# g6 I$ w9 x/ U
  748. DEX
    ! J4 G7 D1 @1 d9 B$ x
  749. BPL Init_MMC3_Chr_Bank_Write
    8 ?/ D: h' E$ I- j* `
  750. RTS& y' h! D5 s# c  ?) D
  751. ;--------------------------------------------------
      i& b% j4 v# h, H: Z6 y- M
  752. MMC3_Chr_Bank_Data7 p# X/ H' o6 m6 x# a  Q3 W' ^
  753. .DB $00,$02,$04,$05,$06,$07
      |( a2 W: F' U6 @( B& _8 W. O

  754. & W/ i% b+ D  t8 Q% O$ [
  755. ;==============================
    + D" \* O7 f" o3 F9 u7 Y9 V4 R5 v' n
  756. VramInit;初始化图形内存3 l" A; |, T6 n4 F. r& B- u+ }
  757. .IF CHR_RAM_ENABLE
    7 y+ u* Y/ M, s9 h% d. k
  758. LDA #CHR_DATA_BANK
    3 A/ f) M5 k: Q' b
  759. JSR Switch_Bank_A0007 z  b, y+ G, F4 p( Y5 o
  760. LDA #LOW(CHR_DATA_ADDR)
    " x* ?$ _, N; ^. ~  x3 V" @. m
  761. STA <Data_L
    2 l5 X, _" X1 b9 c. _7 o" j
  762. LDA #HIGH(CHR_DATA_ADDR)
    8 h0 E1 V9 w0 k4 Q
  763. STA <Data_H/ t' Z: t+ U- M5 G; f, S1 ]" B! g
  764. LDY #$000 ]% H# A( D* E$ |! Y: N
  765. LDX #$20
    " `3 E2 i' V8 n+ j/ k5 B1 p, X
  766. LDA #$00# U* b& s# T$ p+ k2 U4 ~
  767. STA PPU_ADDRESS" I+ C6 J" K# A1 {' Q
  768. STA PPU_ADDRESS
    # Q- D: Y6 ~; T5 q
  769. VramInitWrite
    ' c$ o) O, o+ `! T: I" [
  770. LDA [Data_L],Y
    3 u- p4 D- ~) n' W' J) d( [
  771. STA PPU_DATA. o4 P) z# G, o( T2 r
  772. INY
    6 }5 C" r, o) i1 z0 y$ i1 A
  773. BNE VramInitWrite7 q' ^3 k0 w* O1 H  C" y; j) v
  774. INC <Data_H
    2 h: i9 D" R" O# b/ K4 s
  775. DEX6 ?! n# I4 d6 F
  776. BNE VramInitWrite
    2 Y; R% W% X  D5 N2 d6 U- p8 g
  777. .ENDIF
    4 S3 E( X+ @5 E  P
  778. RTS6 l' _( `  N% D$ r

  779. % o4 T7 `6 U3 r3 k' V6 _
  780. ;==============================
    ; e5 _. H( l6 F5 I8 n" a3 H
  781. ;音乐切换/ |* P9 G/ U$ _' c. h% a$ u
  782. Music_Play_Change
    8 C, L! _- z1 w. G7 a, M- l* Y/ T
  783. LDA <Key_Once+ E( y& Q1 a5 h1 H: k
  784. AND #$FF. Z0 L$ s/ }: ]2 Z
  785. BEQ Music_Play_Change_Check
    / Q& r; r6 q% ]) C, U

  786. % ?. N' f. j" F7 A
  787. ;禁用音乐条刷新
    . b; Q1 `2 r! d8 i
  788. LDA <Text_Disable_Flag; T* F5 a4 R7 @# ^7 D
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ! L; e0 I- w) s- K2 E
  790. STA <Text_Disable_Flag. x4 x# ~  b, r( M

  791. 3 i! x/ s! k9 m# w9 }/ z* _
  792. Music_Play_Change_Check
    - Z1 f" p' f; ^# r
  793. Music_arrow
    6 R0 c, v* }3 C; h9 k
  794. LDA <Key_Once$ V7 X0 N, g3 F, U# T; X" d
  795. AND #$0F
    ( ?) {. X0 B, x, |: D, w
  796. BEQ Music_Play_Change_End
    : M8 D! ]0 t- L! t6 ^
  797. JSR Music_Track_Change
    1 l- k+ ]# W5 J* d" {7 o
  798. JSR Sound_Reset_Proc
    , I( T4 M: p' y+ D% Z
  799. JSR Music_Show
    6 n0 J% l4 ^1 Z7 h
  800. Music_Play_Change_End
    " L, U* f6 b4 K- x
  801. RTS, r, [9 G: d& F' h7 [

  802. , ]7 t4 l* c! k+ C  _3 |( Z: t
  803. ;==============================
    7 w% o: j# T+ q# ]
  804. ;音乐曲目切换
    ' c  L% j' o+ L; }8 m
  805. Music_Track_Change
    ; v2 H, Y+ J% E; J4 |0 |- L
  806. LDX <Music_Item_Cur
    ) J/ Y4 j2 O% ]" e# X6 V/ c
  807. LDA <Music_Cur,X3 F: d8 ?2 D" O
  808. STA <Music_Last/ E; T4 X4 w1 I. q& K
  809. Music_Decrease
    / S. J3 H5 c/ S. F
  810. LDA <Key_Once) d. E7 M2 K+ ^4 W8 h
  811. AND #$42, ^' [6 s# @9 t" Y7 b* o- Q
  812. BEQ Music_Increase
    ! T& S" i$ ]! V: M5 s+ x
  813. LDA <Music_Cur,X2 F/ n2 `5 P# s% T# ~0 ^
  814. BEQ Music_Increase- `/ Q3 D, i) f2 d
  815. DEC <Music_Cur,X
    1 b' C& j7 U" E0 ]1 a
  816. Music_Increase; ]% q+ v4 P4 [8 `# S/ S# ]
  817. LDA <Key_Once* \' P2 J6 K9 z' L" b* \) Q  x
  818. AND #$81
    2 h( f# P& H* @5 t
  819. BEQ Music_Decrease_10: \6 z9 a8 a& A& N1 Y: I# X
  820. JSR Set_Sound_Total
    1 l0 `; ^# D# i
  821. LDA <Music_Cur,X
    3 Q- X8 y1 `4 H1 f! }
  822. CMP Music_Total$ L/ W; m( ]0 K+ H+ Z6 d) ~) |& y; G
  823. BCS * + 4
    . b2 r3 h, o+ ?
  824. INC <Music_Cur,X
    9 i5 J4 m% M8 l' B  ^( n
  825. Music_Decrease_10  Q5 @- L8 b, U1 {; U2 J
  826. LDA <Key_Once
    2 a; ~3 h2 [0 j( {5 [! X
  827. CMP #$04: I* C1 n, L. [( @% Z- F# n( ^
  828. BNE Music_Increase_10
    $ N0 f" h5 {( J% v+ l
  829. LDA <Music_Cur,X5 Z* ]$ ^6 V$ V$ _
  830. CMP #10: d( V' V; K" c$ }0 E% w) U0 B
  831. BCC Music_Start_Song_Min
    5 M3 s5 s& a# l3 C$ D6 R* L' w
  832. LDA <Music_Cur,X' N1 h; M8 `4 Y+ N0 Z7 ?
  833. SEC/ |+ Z7 V& l& d# F( P
  834. SBC #10& F' [4 \7 v2 Y
  835. STA <Music_Cur,X# s! Y5 ]( o" f. D5 d4 V  Q* y
  836. LDA #$00) U4 e# v5 u* {1 Q, Z/ |; w( \
  837. BEQ Music_Increase_10+ S; q4 M8 ~6 e& q5 J2 i
  838. Music_Start_Song_Min
    $ c4 b; R4 ~! k4 g: {! P" p
  839. LDA #$00. Q( M' H$ p9 ?- f% X
  840. STA <Music_Cur,X; Z1 k6 O, `6 n4 F. l# t' W3 p' i
  841. Music_Increase_10% m/ ?1 [0 |+ ^$ J$ x+ U
  842. LDA <Key_Once' c7 n' o$ g6 U7 h' _8 x
  843. CMP #$08
    4 I9 O5 h* m# M
  844. BNE Music_Track_Change_End
    / ]' m- Z- c  L* n6 x: Z& J0 `7 ]
  845. LDA <Music_Cur,X
    . V4 n2 M7 `# V# `! V/ j$ ^
  846. CLC; R5 I  ?0 X5 @6 a
  847. ADC #10
    3 w. L! r2 o" a- i3 C3 k
  848. CMP Music_Total/ `/ m/ o' _+ M  k
  849. BCS Music_Start_Song_Max
    - {& \) a' f: K0 s" H, i' F
  850. STA <Music_Cur,X5 e" j7 U* w# U, T* m0 x
  851. LDA #00, `" X5 C. R6 g  g( |0 l
  852. BEQ Music_Track_Change_End  a6 v+ W6 `; r8 _! a) M
  853. Music_Start_Song_Max5 P' v0 w# R4 }, |
  854. LDA Music_Total6 A9 s# R1 ^$ t  t7 ]
  855. STA <Music_Cur,X* {' I; L# a3 A- ]. e! k8 B
  856. Music_Track_Change_End8 @& H  A. _+ H/ \
  857. RTS0 ]1 P  @8 x; p6 D  P

  858. - \) X6 D  o, y4 x* _' A% R
  859. ;==============================
    5 _5 n6 X4 e& n; I6 }3 `( w
  860. ;按键处理
    $ F2 w/ c1 h  z
  861. Key_Proc
    ( z  z5 R8 ^9 f# w4 u2 U
  862. JSR Key_Scan! v. x' h) E) i: i: t" @1 N, }
  863. LDA <Key_Keep
    ! [' u1 n+ N) U
  864. STA <Key_Temp
    7 [2 |4 Z7 _( F. R9 Z
  865. JSR Key_Scan; n8 T2 G; |! T: H6 |0 S4 V
  866. LDA <Key_Keep0 p8 [2 t; D4 u5 @6 o! N1 _" W- l" ?
  867. CMP <Key_Temp) a# S4 E+ M, }' f4 B9 q5 L+ W8 k* d* h1 k
  868. BEQ Key_Get_Once/ U! \8 N" C! I- [* n
  869. LDA <Key_Kemp& }& q6 Z2 v/ @% Y3 \1 \8 j
  870. STA <Key_Keep
    7 a8 A8 {7 K3 E; s. ?
  871. Key_Get_Once6 ?9 u2 `5 w3 O1 x
  872. TAY
    3 b1 d4 W$ j8 V( t
  873. EOR Key_Kemp7 I, v  A1 Z: Q) n8 h
  874. AND <Key_Keep
    , R$ _1 `* I" w5 s" o. l0 F* k) v3 _
  875. STA <Key_Once
    " L3 Y+ S7 C1 j8 c5 Z5 A
  876. STY <Key_Kemp9 R, c1 \: c0 F4 U
  877. RTS. \  a; p# U  p5 S5 P) y6 S) p
  878. ;------------------------------2 z3 B) F) U: _7 w- w: D  B/ v
  879. ;按键扫描0 M* M2 V) R3 z- i* i
  880. Key_Scan
    / r$ M% J' f, j# J
  881. LDX #$01
    , c, ?5 E# p. F
  882. STX JOY1_FRAME/ Y" Z! u1 H6 P) D) V/ X! H
  883. DEX
      I9 p7 Q& S4 H" F! V
  884. STX JOY1_FRAME) |* Q3 K; Z+ c5 S  C
  885. LDX #$089 x! I' n: \: A. P* T
  886. Key_Value
    7 o% [& v3 Z) a, q4 E1 t
  887. LDA JOY1_FRAME% h% R. f; ~. E% o
  888. STA <Key_Getv) O& y8 p3 u/ L" S8 e  N
  889. LSR A
    - q5 G5 z/ l  z
  890. ORA <Key_Getv8 h. D/ Z. ]7 S, B+ t! e
  891. LSR A5 n! k: u( A! s. J) y2 n! K4 h
  892. ROL <Key_Keep) a$ G' @! A3 T( G% r# b) j
  893. DEX
    4 D8 q# `# L9 x) K7 ^- s) M
  894. BNE Key_Value8 g) C1 Y' u0 F% ?: z$ Z
  895. RTS
    & P# S1 x4 `6 X3 w. G, V
  896. ! J6 T/ F& f. o* J; u
  897. ;==============================' T& D7 m" j9 t& a& z6 `8 b# C
  898. .IF SOUND_BAR_SHOW_ENABLE
    - f, Q2 B: m1 ]" q% e
  899. ;音乐条显示9 T+ {( E5 p) |2 z4 U7 d
  900. Music_Vision! r2 @" ]. E% u) D2 }
  901. LDA <Text_Disable_Flag$ q" w- }0 w! \' s
  902. AND #TEXT_DISABLE_ITEM
    2 k; W, z; S  C$ v9 @
  903. BNE Music_Vision_End
    $ J( T% q5 p- O) _: j& ]# f( K7 P
  904. AND #TEXT_DISABLE_BAR% ~, M) ^9 U) U" E" s- }7 W
  905. BNE Music_Vision_Set
    : p' {$ l* D4 u  ~! U
  906. LDX PPU_Cur
    : w$ v$ f0 B9 o, x2 V* z
  907. JSR Music_Animation
    6 }! Q' F3 p4 S! j' r# C) M
  908. STX PPU_Cur
    * f( ]3 O2 X: G4 E
  909. Music_Vision_Set' g( [/ F( r  c% n( x& a& G
  910. LDA <Text_Disable_Flag0 G" F' @' r0 ~6 Z8 J% L( ?
  911. AND #TEXT_DISABLE_BAR ^ $FF) t7 c. _# S  }) I! a( V
  912. STA <Text_Disable_Flag$ B& C; W- e# R9 k) Q! s: y5 P
  913. Music_Vision_End
    3 Y1 U# [* t4 ?( m
  914. RTS( ~$ \/ H  O& ^) }0 b
  915. ;------------------------------! i* J- M5 l- k2 _8 w
  916. ;音乐条显示处理
    , j* c6 B5 W1 B/ g/ y  S5 c
  917. Music_Animation  Y4 A' h# N/ h: L" i
  918. LDA #PPU_MODE_CNT_LINE7 _  S& y+ d# U: }8 c
  919. STA PPU_Addr,X
    / Z- t! w! E' @# h& `: y0 w
  920. INX
    7 b3 f' j% t( ~6 z
  921. LDA #HIGH(Sound_Bar_Pos): M! J+ i; H" {" e
  922. STA PPU_Addr,X1 K7 g& l; f: ]
  923. INX# ]# S( Q: y" e! |  F# L2 X
  924. LDA #LOW(Sound_Bar_Pos)" _# \1 X$ y1 @
  925. STA PPU_Addr,X
    # `# f& F# A7 \2 N( C8 X
  926. INX' k$ Z4 s. N# w  A; I
  927. LDA #$08
    8 u5 y$ b- f0 Q9 s% H+ D( ?  x0 }. h! U
  928. STA PPU_Addr,X$ B5 o+ B* v: k' L- A6 [9 c
  929. INX
    ! b: c" {4 b% |0 P/ Y$ j% Q
  930. LDA Sound_Bar
    ; v/ E( x5 [! h: \( b2 C5 ?
  931. JSR Volume_Convert
    2 k/ U1 e3 K9 l# q- U* R

  932. 9 M1 h3 J( ?# u2 i+ J. D0 D
  933. JSR Volume_Set_Cnt5 ~3 |! `. Q# W1 E
  934. LDA Sound_Bar+$4
    8 ^- q- O6 C+ J. P! F' T
  935. JSR Volume_Convert5 ]3 ~3 s9 W# X5 s; k. d0 H5 |" ^& b

  936. # a; x" f, G1 P3 Q7 L
  937. JSR Volume_Set_Cnt
    + p$ }$ ?9 D# x% U2 m6 h
  938. LDA Sound_Bar+$8' @8 k4 Z* y" v- o0 |9 ]- o
  939. JSR Volume_Convert9 v! s3 v6 a. j- M

  940. + O# v5 B# V0 n
  941. JSR Volume_Set_Cnt& N+ _4 B/ Q. _+ W" o
  942. LDA Sound_Bar+$C4 C7 @  `0 H, R  Y0 Y# |# X( Z
  943. JSR Volume_Convert! t' o9 O5 Z0 X. L" I3 ^4 v

  944. 3 Z7 @" A+ {  F! A5 d1 E
  945. JSR Volume_Set_Cnt
    / r6 X7 u& r/ c' ^4 q- g

  946. , ]$ k! w, M! Q- o# S+ ^
  947. LDY #$10- d2 Z1 e6 |. {+ Q' ?
  948. LDA APU_STATUS
    4 V  m) `* q; k/ c* ?1 I
  949. AND #$10
    , D* p5 V4 y1 d# k! d( m0 w
  950. BNE Volume_Count2 x  }6 \  W+ U
  951. LDY #$00. `! S1 P9 L, F& k) s2 h) i0 {
  952. BEQ Volume_Count; r' c& o& a8 [# n
  953. ' s; [  V9 K  |
  954. ;------------------------------0 H& Y3 r- F  w" p9 x  [! n% {
  955. ;音乐条处理) f; D, x' f% `6 G2 y3 Q
  956. Volume_Convert
    7 {  @7 C# [5 z
  957. AND #$0F2 c! ^! F( s$ \* l
  958. TAY, f1 t! X! \, U0 n* u! n( E3 d
  959. Volume_Count
    ' b( T& u+ q# [8 M
  960. LDA #$08
    / P! ]5 m. [0 F1 T9 {# ^
  961. STA Sound_Bar_Cnt1 d' S4 V- b/ K7 Q$ s0 ~
  962. Volume_FILL! W( }7 i  V- l7 k4 l
  963. DEY& }7 H9 [+ D) }/ o5 q
  964. BEQ Volume_Half( Q2 F+ s8 @0 t1 k7 D/ w% S+ Q9 }
  965. BMI Volume_Empty
    4 U" ^, ~2 d" K8 h1 v# z- e& @6 x# ]
  966. DEY
    ( S7 |' ~5 L! _2 j* l; m1 k9 {) r4 ?
  967. Volume_Full
    ( E0 c+ f9 x5 c2 b
  968. LDA #$16
    ( a" r, ^0 z& @4 y7 d, q
  969. BNE Volume_PPU) }0 n8 @( w* }1 B# a# I; u
  970. Volume_Half
    3 ^, o9 m1 v' S- m
  971. LDA #$15$ [( z3 r8 N% {9 e& o& ?# |
  972. BNE Volume_PPU
    ' l  p6 h9 V1 N2 S$ Y+ U3 y; {
  973. Volume_Empty' X/ u+ h7 B: |
  974. LDA #$148 x+ B/ @4 F' x4 r- ]5 i( y
  975. Volume_PPU
    2 ^9 g' Y) h# ~! v: m" z( A
  976. STA PPU_Addr,X
    6 m! e/ L6 Y! \' ]
  977. INX
    7 I3 P9 Z4 |1 _
  978. DEC Sound_Bar_Cnt
    - j) `- Q$ `1 |
  979. BNE Volume_FILL
    . v: l' |' \/ B' d
  980. RTS
    ) n7 H2 N4 r; ?( Y* N
  981. $ t" k$ g/ d: O% A: H" Z5 p
  982. Volume_Set_Cnt
    2 {4 e5 I# c' w  p
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    1 W- [0 W' o* q; H
  984. STA PPU_Addr,X- X8 w! o3 E# X+ H9 s# Q. U! T
  985. INX% k0 K/ }7 k4 A3 i. M8 m$ d
  986. LDA #$08* ]- Z% u' i) H# w2 R4 n/ K$ ]
  987. STA PPU_Addr,X( q5 g6 x9 D9 N9 l8 q. O. o
  988. INX
    9 g4 b3 D* C( V  S0 ~% a
  989. RTS
    8 o  b+ M, P+ I& m- l% n' ?

  990. 8 M( q. ]$ ~# p7 a8 S6 x
  991. .ENDIF
    + d2 x# {  h& N& c

  992. * R( j' V& l* z( o: E2 B6 ]
  993. ;==============================) D; _* ], ^) S
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入; a' z# o% |# O- B
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式; m$ \# I. F% T" x0 Z' Z# T
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    5 s. G" N# H* h# d3 K
  997. ;------------------------------. A, O$ |% t+ ]  F3 f
  998. ;PPU处理
    $ ~% x* B! a& F5 s* a! p
  999. PPU_Proc9 ^7 }# z7 Z1 |) _
  1000. LDX PPU_Cur
      d0 g# V5 J4 a. F. w& G0 T
  1001. LDA #$00
    + R7 N7 l3 }0 h+ }" l- B" f9 J
  1002. STA PPU_Cur7 K; N. O7 j7 }7 o
  1003. STA PPU_Addr,X
    " {, P  ]  ^: B% D7 A
  1004. LDA PPU_Addr
    . y( Q: q5 s9 q: g( F
  1005. BNE PPU_Proc_Beg
    - o. S& n6 U( b& d, j. [. V1 n5 w8 ^
  1006. PPU_Proc_Ret
    + t5 m: A$ Z  d! X' w3 i
  1007. RTS
    1 \6 \) }9 p* T* i; n) k

  1008. + B0 k- n$ X/ X* k8 J
  1009. ;------------------------------
    0 R/ C" L/ l# K
  1010. PPU_Mode_Return_Cnt  ;转下行模式) l. w4 I5 d1 P' z
  1011. INX4 W. [* o2 ^7 N( F1 ]* y2 l4 T
  1012. LDA PPU_Addr_L. A% L7 i1 Z; R9 w: ?
  1013. CLC# x$ }* c3 D5 u4 b
  1014. ADC #$20$ X; f5 ?) t+ t
  1015. STA PPU_Addr_L
    - |; [; b) z2 @' O! h% q
  1016. BCC PPU_Mode_Return_Cnt_End- e# y0 L, q6 k7 @
  1017. INC PPU_Addr_H# y$ h1 P& z; j1 H6 l; ]
  1018. PPU_Mode_Return_Cnt_End
    / K6 G2 G' ?" x4 v1 B5 `. ?$ b1 }! _
  1019. LDA PPU_Addr_H6 H& C7 m6 F, W* }( R5 r: d
  1020. STA PPU_ADDRESS
    ' `& t7 h# x& f: c) Y8 d
  1021. LDA PPU_Addr_L3 L' i1 p+ y: P0 _! B2 z, d
  1022. STA PPU_ADDRESS
    - I3 J2 i% m# S0 k6 K# a
  1023. LDA PPU_Addr,X
    # F" i4 G6 |! a- B. C- q
  1024. TAY
    $ F4 H6 M. O$ Y) S! [9 b# u, D! x1 Z. h
  1025. PPU_Mode_Return_Cnt_Write& |, [: M5 ^) q
  1026. INX
    6 w( ^) c. F, v5 F
  1027. LDA PPU_Addr,X
    6 N0 Y; K. M+ l6 N9 F
  1028. STA PPU_DATA
    % s: Y% L% T# \1 F% r& Y6 }7 }
  1029. DEY
    $ y/ D  A9 T# m& y
  1030. BNE PPU_Mode_Return_Cnt_Write" G3 J* l/ K- Y9 `$ D
  1031. JMP PPU_Proc_End
    0 c4 d& [' ]7 }6 Y

  1032. ! {4 b' N( O. H4 ?' z; R/ {( x; K: I0 a
  1033. ;------------------------------
    3 W  E2 l' X$ g/ X7 L5 u4 r
  1034. PPU_Proc_Beg  ;处理开始+ |' t( _& r4 N8 T% T) t6 Y* I
  1035. LDX #$00
    0 }' z4 V1 L5 b! ]- I& }
  1036. STX PPU_MASK; r1 Y% ~: r) ?# i5 J- C
  1037. ;------------------------------
    6 k) ?$ F, l3 m5 v1 a
  1038. PPU_Mode_Select  ;模式选择
    " r/ j. Y. [0 S( Y
  1039. LDA PPU_Addr,X% A5 U; v% d: x( \9 y: \& _$ Q6 G
  1040. CMP #PPU_MODE_CNT_CLEAR( ^; y/ Y5 B$ [' d- C# v8 d- u
  1041. BEQ PPU_Proc_Clear5 B/ V3 `9 h5 w3 Y1 \/ G  Y) A7 m
  1042. CMP #PPU_MODE_CNT_LINE
    0 ~# \, N" j' A5 r
  1043. BEQ PPU_Proc_Cnt_Line/ X8 O4 U2 r: U1 D
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    8 W5 }* ]/ i' U3 W- Q; ]
  1045. BEQ PPU_Mode_Return_Cnt5 f0 Z0 D4 b1 E& @, y
  1046. JMP PPU_Proc_End_Write5 F. @4 y" _# U/ k
  1047. ;------------------------------8 r& r& t# ^; Y; H' G
  1048. PPU_Proc_End  ;单行写入结束0 P% I) X" @" D
  1049. INX% G* e% |& L7 q8 N2 i' G
  1050. LDA PPU_Addr,X. t  i6 l6 V2 t
  1051. BNE PPU_Mode_Select
    % M" X6 f1 \5 u' m
  1052. STA PPU_Addr3 F( x) t( z2 F; }4 ~2 [
  1053. JSR Update_Palette_Color
    4 C- u' U6 }5 E2 ^7 t* O) Q/ A5 m
  1054. , x, J9 N% C' ?8 X9 o# p
  1055. PPU_Proc_End_Write
      C+ c6 t- k8 L4 @9 P; Z
  1056. LDA #$00
    6 a- E, p0 k2 M' Y8 c; Z7 [2 L
  1057. STA PPU_ADDRESS
    8 s2 V5 u6 b4 X0 m3 Q
  1058. STA PPU_ADDRESS) v/ s! Y3 `0 ~! M5 C1 X6 D) x
  1059. LDA <Text_Disable_Flag
    * _8 e0 c, H8 y* q$ b# [, \
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF1 f; F6 {7 p5 ~5 Z" [* E. f
  1061. STA <Text_Disable_Flag" T6 L, U$ C, t% D  G8 J5 K7 q
  1062. LDA #Scroll_X0 ]& l: ?& ]9 g9 W' E
  1063. STA PPU_SCROLL3 O# j$ i3 }) v1 q( O8 |+ ?
  1064. LDA #Scroll_Y
    1 H" A: ~( z4 v% g% V' M% M
  1065. STA PPU_SCROLL9 V3 f% p; u9 q) b( X% o
  1066. LDA Screen_State1 q0 \3 L9 s& L, b& w
  1067. STA PPU_MASK4 m8 `, q: |. I  A8 j+ ^# _4 x
  1068. RTS* o, b, F9 O: R7 T- U. S; a
  1069. % D% m5 h6 q- w' N3 h/ l
  1070. PPU_Proc_Clear
    ! T. a- H, y& t+ C  |+ H
  1071. INX% B0 F7 o: w& h( M7 z
  1072. LDA PPU_Addr,X# h' e  y% B# n- y$ K
  1073. STA PPU_ADDRESS
    2 ~$ J% ?. l; m! N% u
  1074. INX
    $ F/ p0 y2 K" K' `
  1075. LDA PPU_Addr,X' F: c& j. w3 o- {# H
  1076. STA PPU_ADDRESS& g- O/ P. R7 y& F. B
  1077. INX6 i1 }" r7 k; }1 d1 m1 u
  1078. LDY PPU_Addr,X- j4 M( `' B) D9 F" u3 F7 L6 @0 ~( o
  1079. LDA #$00
    * s# J$ O1 h+ h' f8 n
  1080. PPU_Proc_Clear_Write' Z$ m; b( E: S7 Z( V8 k% i4 ^
  1081. STA PPU_DATA0 Y) l6 U9 o/ S3 X0 }" ~
  1082. DEY
    1 W! d5 c, T# J! E+ }/ S/ }9 t
  1083. BNE PPU_Proc_Clear_Write
    . I4 B. A' L) Y/ r. [$ D
  1084. JMP PPU_Proc_End
    % j. r& O) n  }0 F6 X) ^7 o0 B

  1085. 2 s7 \" s+ J: H: f" r& b6 l
  1086. PPU_Proc_Cnt_Line9 ?: r0 ]; J+ \$ L, D: ~5 p! w
  1087. INX6 L. Z: P5 j7 K; U8 I7 F5 u" v& l
  1088. LDA PPU_Addr,X. |& {" r: D, L* o) n: O
  1089. STA PPU_Addr_H9 y. ^0 D3 J' p( j
  1090. STA PPU_ADDRESS% }3 F" ^5 ^8 V/ _+ h
  1091. INX, j9 z4 h7 O" F" P, u
  1092. LDA PPU_Addr,X. n3 G# w. i; P' H( {
  1093. STA PPU_Addr_L2 w  h& \$ X% `8 ~' k! D0 V" k
  1094. STA PPU_ADDRESS
    * C- |6 h+ F6 X, G2 g' |' b; m
  1095. INX! A7 i7 |5 {# O8 L0 I. E
  1096. LDY PPU_Addr,X
    , q9 s/ @/ N1 L, T# k4 T
  1097. PPU_Proc_Cnt_Line_Write
    8 @6 b+ s; \6 p- K) M
  1098. INX
    6 h4 z. P3 y: M
  1099. LDA PPU_Addr,X7 h2 s; M1 U1 n$ M+ \+ r" @
  1100. STA PPU_DATA
    2 W; b  K  T9 D3 S1 [
  1101. DEY& s# U+ ?) l; T2 i) t
  1102. BNE PPU_Proc_Cnt_Line_Write
    ( f, l. W- Q) n$ F0 G/ [7 m9 J$ r* s. G
  1103. JMP PPU_Proc_End
      a) r# C' Q, E4 F

  1104. 6 Z1 e% B* U7 _* Z
  1105. ;==============================& ~+ Q4 X1 H4 P  s! |+ g
  1106. HEX_To_Dec;十六进制转十进制" s( S7 X7 ~" h* U( f
  1107. STA <HEX_Data
    , |; w- ?1 @4 k8 T* v+ h! \9 _
  1108. PHA
    0 M  D1 R( x- _4 `/ e
  1109. TXA; ^' h5 d6 F% s5 d" }
  1110. PHA
    ' X/ Y2 |1 S: z) l
  1111. LDX #$00( r; b8 |9 j+ o  ^& e
  1112. LDA #$00
    " G# P) V% K- T7 F
  1113. HEX_Cln, Z( y8 z# g" q
  1114. STA <DEC_H,X
    * }1 ]1 i* c0 j5 s; c; T
  1115. INX9 \8 w* \4 y7 X" \
  1116. CPX #$03. \; R, {6 i! w' t; }+ P4 p
  1117. BCC HEX_Cln7 f+ O# K) j6 R9 G( h
  1118. LDA <HEX_Data
    3 f- J  h) e) o
  1119. ;------------------------------3 N2 v  v& ^+ y* q& W" n2 S8 C
  1120. HEX_100
    ' s  M0 s) q5 _1 T
  1121. CMP #100
    8 K7 B7 f% x1 o$ N1 o' P
  1122. BCC HEX_10
    6 f% p$ ?7 r( V: |, Z
  1123. SEC
    ; [9 Q* t# G5 r+ i- e. g
  1124. SBC #100
    3 {6 j, G' Z( Z2 k& q5 V: @* q
  1125. INC <DEC_H
    : _' y+ ^, v  q' b9 r0 G  v1 {/ c2 y
  1126. BNE HEX_100# X- }/ _5 k0 Q* J
  1127. ;------------------------------
    1 v% i! C* d; k8 h& B! N
  1128. HEX_10
    ! \$ S/ b/ A! r+ F& g
  1129. CMP #10
    3 Z7 q1 o2 H* T1 }" @+ ?8 ]
  1130. BCC HEX_1
    0 ]! G0 j: v- o; r/ ^, k
  1131. SEC
    # G; F# }. ]8 H- l
  1132. SBC #10
    ' {, J5 [+ ^) i3 N6 ?/ C
  1133. INC <DEC_T  a% a9 ]0 e* h3 \; q0 I# j
  1134. BNE HEX_100 A) ^  j0 o! v" q" v+ ~8 K7 k
  1135. ;------------------------------" T6 ^. r  b( R( G" O, |2 g
  1136. HEX_1
    & b- ]. ~  c  n) t
  1137. STA <DEC_L
    * z7 q, ~  v# g5 A( r
  1138. PLA
    / |9 E) V- z0 n( H( L: v5 ]
  1139. TAX
    7 w; I6 T" k9 |, a6 J3 y0 z
  1140. PLA
    5 M7 ?8 x3 z# g9 o0 J: B' C- A
  1141. RTS+ h; ^: o5 H: _# {1 d4 u! `3 [

  1142. ! v" r( `0 D9 Z$ J" y
  1143. ;==============================. Y7 k0 Z5 {" B  q  C1 E" w
  1144. ;音乐曲目显示9 Y2 A: X5 O) @$ Q% f9 L" ~
  1145. Music_Show# |3 e# r4 M: b# F  w& \
  1146. LDX <Music_Item_Cur7 x$ h$ Z8 W0 h# r& `& Q4 }* W
  1147. LDA <Music_Cur,X
    . K& G( o; p/ q, g* r4 l- [
  1148. CLC
    . y8 d" y  N. e
  1149. ADC #$01
    1 A; o# D) O% f3 k- q- X4 _
  1150. JSR HEX_To_Dec
    8 s8 X+ W0 {  O3 X/ J* g; C5 f
  1151. LDX PPU_Cur% s* _+ `, b% i2 s& v
  1152. LDA #PPU_MODE_CNT_LINE) {0 R+ V. ~3 n& @& f6 a
  1153. STA PPU_Addr,X
    3 L0 V8 |2 x' Q$ S, p+ P0 B7 g
  1154. INX6 I1 k: c6 e4 e5 x* `$ u
  1155. LDA #HIGH(Play_Index_Pos)# }. ]7 \5 E  K1 O& v' S/ |( G
  1156. STA PPU_Addr,X- ]% d* B; h) r9 K7 r( e- w* h, d  X
  1157. INX- O' R. i% V8 n1 [* I
  1158. LDA #LOW(Play_Index_Pos)
    8 x# I4 g- {7 e$ P9 m
  1159. STA PPU_Addr,X
    $ j- N6 i0 Q" x3 f
  1160. INX
    : _0 x( C7 _8 C- Q$ }6 e* G
  1161. - T5 A5 E8 U& S6 {  L/ a7 H, |
  1162. LDA #$07
    , Q5 H" D% X% g% F  `) S* h
  1163. BNE Music_Show_Length
    ; L  L' r& i5 a& v0 K
  1164. , t7 F) k. s8 v5 t
  1165. Music_Show_Length1 ~; O5 A/ K7 ?! j( X. F+ X" T
  1166. STA PPU_Addr,X( E$ A* o# E" g# ^% }
  1167. INX: V7 _6 m4 {0 O2 A" h0 P( P) `

  1168. 2 h* Q7 }  w" [* E- o
  1169. LDA <DEC_H
    2 v5 ^' |8 y5 w" I9 m
  1170. ORA #'0'
    ( `1 p1 Z7 |8 a8 z
  1171. STA PPU_Addr,X+ q6 v+ b6 J5 o7 S% q
  1172. INX
    # Q- O( {+ Z* r$ @& t& U
  1173. 4 V  A5 t$ a! ?$ T% g/ g. x
  1174. LDA <DEC_T! E; V, ?/ l9 b2 V4 t$ i
  1175. ORA #'0'& }. X! ~1 T, l* K2 C9 ]* }8 K
  1176. STA PPU_Addr,X5 e6 S2 P. e% E$ L0 Z0 z  p
  1177. INX- C5 ]8 M7 }+ ]2 ^  W7 P! E

  1178. 1 l' b0 Z& {2 v5 Z
  1179. LDA <DEC_L
    - Y$ u' {  V2 j6 W. E
  1180. ORA #'0'
    ( G, P( T4 y# v% V* F' X
  1181. STA PPU_Addr,X
    " a0 y' z$ ?7 n5 b2 _
  1182. INX% g' _- ~# }" u1 z4 W+ T
  1183. 5 a# O; J4 H! l) M/ A5 l* W  S: w9 J
  1184. LDA #'/'- J9 T8 `1 M( N) [* C
  1185. STA PPU_Addr,X
    8 T) j: H: Q! w5 u" c6 e
  1186. INX. s3 o  ]1 K( e6 w
  1187. Music_Show_Total
    & A/ `3 h8 W% V, z5 c" ]. v5 v
  1188. LDA Music_Total
    : L. w! P0 I( G' d7 Z" ^3 F! x6 @
  1189. CLC* X. s: S/ f% L+ g
  1190. ADC #$01
    9 e1 Z5 b1 w) N* S+ A
  1191. JSR HEX_To_Dec( f$ L' U$ Y$ K  f& c
  1192. : ~/ F: d/ b- f0 g
  1193. LDA <DEC_H
    . y: s" h- M. N  z! E" p
  1194. ORA #'0'% \# C  p8 S- Y6 M" u- y
  1195. STA PPU_Addr,X! h( Z6 K: l5 y8 N# ~
  1196. INX
    ! j& Y/ w) o" K9 }. ]' F
  1197. 9 \/ V: K  O2 `! c" V+ N4 D2 o: _
  1198. LDA <DEC_T
    1 F& N* `7 o% s( p+ Q1 u. |
  1199. ORA #'0'" D3 K) |2 u% n% p0 I: a! ^, a" A
  1200. STA PPU_Addr,X7 G% @1 Y. ~# j2 A- r
  1201. INX
    + \+ w( S  G% i2 u' I( _

  1202. 9 ?+ j, G3 K1 N/ ]7 _8 V
  1203. LDA <DEC_L1 ]4 [5 `9 q  D" R
  1204. ORA #'0'
    5 `9 X" Q  |! K
  1205. STA PPU_Addr,X! F( t  E% B. n' t6 \$ G- e
  1206. INX
    3 b+ R3 K7 U7 m6 L0 H" D7 ]4 _+ t4 o

  1207. & ]) w8 a* K" k. @
  1208. STX PPU_Cur  V" `  Q8 U# K  k, Q. W
  1209. Music_Show_End
    5 t- ]/ g0 K: m* D
  1210. RTS+ w, d" [& ]) r$ @$ ~
  1211. , S  ~0 {/ v" ^: h
  1212. ;==============================4 L, q+ ?, y& c9 Z8 x
  1213. Time_Show;播放时间显示4 y* I/ o  d3 d' _" t) Y
  1214. LDA <Text_Disable_Flag4 Q; R( @" k1 d9 s/ E1 F0 d8 n& L
  1215. AND #TEXT_DISABLE_ITEM
    ( }+ g/ `, b/ i! z
  1216. BNE Time_Show_End. x3 n6 e1 ~; [) T
  1217. AND #TEXT_DISABLE_TIME) E! ?. Z$ C8 I4 ]* \& s
  1218. BNE Time_Show_Enable
    : ^1 n- B$ [) f+ n
  1219. % S/ C" C* q0 X! d! ]+ I
  1220. LDX PPU_Cur. H" |3 D2 H& s& L
  1221. LDA #PPU_MODE_CNT_LINE3 G6 {) K! e1 F3 f6 W1 B9 D6 T$ Q6 A
  1222. STA PPU_Addr,X. D$ D  X0 p6 z, w8 e- A
  1223. INX
    5 A# @/ h9 C1 X8 u" V, @
  1224. LDA #HIGH(Play_Time_Pos)
    : P- ~4 M0 h; G  a# X! [. l4 p+ p
  1225. STA PPU_Addr,X/ t/ K) Z4 P# h
  1226. INX  p9 G- D- ~) ^/ |. M+ ]4 D9 n
  1227. LDA #LOW(Play_Time_Pos)
    . V4 m/ @& @2 A0 Q7 y
  1228. STA PPU_Addr,X
    ' D7 ^, C% P0 d( C4 G
  1229. INX) j& t" P' o) Y; x9 a/ _) n
  1230. LDA #$08
    % Q9 T% P6 q2 D- ^
  1231. STA PPU_Addr,X
    4 e  k3 p. J: ?' A( k$ a
  1232. INX
    " t8 Q7 |* f& V, J; G
  1233. Time_Show_H
    0 @( p# v# N+ P9 N
  1234. LDA <Time_H
    : T. G" o  o# n
  1235. JSR HEX_To_Dec/ c; }3 Y" g0 S/ I7 M
  1236. JSR Time_Digit
      R, D: v6 n, r( t+ k7 ^
  1237. LDA #':'8 M, g3 L  p1 X* A* }- m' w
  1238. STA PPU_Addr,X: J+ {0 r$ W4 p1 {! ]( I5 j
  1239. INX7 K0 k5 v1 C* F5 z7 y+ ]6 ?
  1240. Time_Show_M# I% Q/ u1 l+ \$ g/ u& y+ y
  1241. LDA <Time_M: h! ]! d1 B" r9 B9 ?5 `/ c9 j6 A
  1242. JSR HEX_To_Dec* k6 B( c4 }7 z3 K) ?4 \
  1243. JSR Time_Digit  e( Q& q; G$ P# J% j! l
  1244. LDA #':'
    8 B# B8 Z( l* R. M! R3 i7 G
  1245. STA PPU_Addr,X$ d2 m0 a* O4 U/ o* {3 _
  1246. INX) W4 ^" d7 i2 f. E
  1247. Time_Show_S3 D, S) t! D2 C* x; w: f
  1248. LDA <Time_S. k2 U- ~( L5 a$ r+ A7 `, P1 p5 s" }
  1249. JSR HEX_To_Dec
      x$ g% E0 ]+ ]" D# S
  1250. JSR Time_Digit( O0 y5 U$ |8 {# y. {
  1251. STX PPU_Cur
    ( [( n6 R5 _" Z( @; S
  1252. Time_Show_Enable
    * o/ A' z( ~2 `
  1253. LDA <Text_Disable_Flag6 i* h% w' y6 K; m* v$ }! W% B
  1254. AND #TEXT_DISABLE_TIME ^ $FF+ ^2 C( a# g1 @0 Y
  1255. STA <Text_Disable_Flag
    0 A; {. _/ V" I) t* @% m# G
  1256. Time_Show_End. s" N8 Q  c8 n# }- f: B; z2 Y3 z0 }
  1257. RTS
    % y( ?* i4 ?, p3 R
  1258. 5 b2 i; I& g2 q9 h3 l. Z
  1259. Time_Digit+ X2 b$ ^, R1 V
  1260. LDA <DEC_T- R1 G$ ^' J' h6 c
  1261. ORA #'0'
    ; I+ v  z0 i/ \( p* U  U$ g
  1262. STA PPU_Addr,X5 p% F/ \, t2 y1 Q5 b4 i7 J4 b- ]
  1263. INX  r, f5 V$ W( l2 s
  1264. LDA <DEC_L
    5 L: Y9 f% V' M
  1265. ORA #'0'
    9 f& o& K+ ~5 Y" B1 @
  1266. STA PPU_Addr,X9 Q6 S, ^- I( p" k
  1267. INX1 `) H! u/ R1 Y
  1268. RTS  Y% B- s  ?4 u( Q3 i9 [

  1269. 5 P& \# G7 Z4 U& P) U; c
  1270. ;==============================
    0 W/ }& {# O* V8 |) H: X# ?0 J$ Y
  1271. Time_Count;计时- _+ q: b  z$ }2 D( z) I
  1272. LDA <Music_Stop_State% u) r7 g" }3 X9 o" ^7 _
  1273. ORA <Time_Wait_Cnt
    ( L4 I) `! F5 K# T8 A" `/ k% }
  1274. BNE Time_Count_End& ?) r/ D, `4 L! |" m! z& M
  1275. INC <Time_Cnt
    " y& U# f& T( A2 ^- t8 y% E# s+ q2 V
  1276. LDA <Time_Cnt8 _# `$ R/ }) x+ J9 F
  1277. CMP #60/ O/ f6 V  M8 x; m; S. K/ g
  1278. BCC Time_Count_End
    & j0 N6 o. U/ W7 H0 v
  1279. LDA #00
    ! i2 K9 g  i4 z& a
  1280. STA <Time_Cnt
    ' J1 N% c% y* f4 z. J
  1281. INC <Time_S
    4 X  r7 z- E0 Y: s2 {1 |7 S+ T
  1282. 5 s6 t1 `; m) M1 o5 x- y9 c% n) V
  1283. Time_S_Cnt
    ) j. C% ?# s, Z3 ?1 E! ?
  1284. LDA <Time_S
    1 t5 B" Q+ n) @# C1 Q
  1285. CMP #60
    # J6 O/ @4 G- ]
  1286. BCC Time_Count_End) e0 j: M4 O/ y( }# E  u& e$ A' p
  1287. LDA #00' O+ M0 ^" V) d2 y/ v
  1288. STA <Time_S
    8 v6 K7 c" m/ K! a- e6 H9 c
  1289. INC <Time_M1 h0 c* O& W& ~1 S) e) X

  1290. 9 ~' b5 O  Y1 s
  1291. Time_M_Cnt
    9 ~) m& m& `2 c# Q& Y( ~
  1292. LDA <Time_M& [0 i0 B6 ?- N& |( U
  1293. CMP #60/ m) t) C" `6 D" x1 _
  1294. BCC Time_Count_End
    0 f( q9 z; ?4 T4 z1 z7 s
  1295. LDA #00
    8 g+ J) @8 A" R( ]3 p, M7 E
  1296. STA <Time_M
    3 J- `5 M/ ~2 e
  1297. INC <Time_H
    , u0 n6 B# U. Y
  1298. 3 C. o5 O. k) K$ m3 L
  1299. Time_H_Cnt
    " s$ n3 o9 C; P" z. A
  1300. LDA <Time_H
    1 M% d  R4 m' v" f
  1301. CMP #24/ q& f+ a1 E( p6 w+ q
  1302. BCC Time_Count_End/ J/ O3 Q8 P0 R5 o: `2 t% O4 l4 d# g
  1303. LDA #005 `( C! l, ?! I" \
  1304. STA <Time_H
    ) O4 a3 c* E; Z* D2 W, o; i. `5 k/ Z

  1305. 0 v' ?6 ?0 v" z9 @- V) K. q& ?
  1306. Time_Count_End
    * v4 p0 f+ q# `' `
  1307. RTS# g% c& K1 Q* V% x

  1308. - m  i7 m, s: }7 S* x1 P7 A% K
  1309. ;==============================
    2 N2 B' q  C  C0 q4 b; Z, d- w
  1310. Time_ReSet;播放时间重置8 y  J+ N# G8 M. Z
  1311. LDA #$00! x7 m/ [6 O5 o8 A) a+ l+ A
  1312. STA <Time_S
      m$ Z5 i9 M" e/ G8 r2 @
  1313. STA <Time_M
    , [4 X4 j( G, p9 M! ?% k2 Y
  1314. STA <Time_H! l& b3 {5 L0 m6 P9 L, u8 t0 M
  1315. STA <Time_Cnt  E/ c$ C9 o  ^* x3 ]* `& Z
  1316. RTS4 z% [# C% n, s# O/ x

  1317. & G8 A* w  D7 b( `+ S  c( l4 x
  1318. ;==============================
    " [( z! s3 w' T3 X2 S
  1319. Music_Bar_ReSet;音乐条重置6 X8 k4 |; j; x
  1320. LDA #$00
    . m2 k; F, |( K% O8 |$ r8 ]
  1321. LDX #$00
    & G, D" e! u" v, a2 `9 d
  1322. Music_Bar_ReSet_Set5 @- L0 \) U9 ~1 W( ?: d
  1323. STA Sound_Bar,X$ m3 ~" s) _, o4 y. `% n
  1324. INX
    . ~1 Q" [, V" J- h- v0 Q
  1325. CPX #$108 b3 O5 K- D% ?7 @# x
  1326. BCC Music_Bar_ReSet_Set2 V0 }8 h* k: I  Z7 u: {/ E
  1327. RTS
    * u$ J) z. ~$ O4 X- o

  1328. : S; k2 b& i  @  b% X0 ^
  1329. ;==============================5 k) v* d/ R: b* _/ B7 _$ s  S: v. v0 q
  1330. PPU_Data;PPU数据写入
    ' Y8 |8 z- |" d/ C: G+ n' ~' J
  1331. STY <Data_L$ h( m& F- D5 o8 U; z
  1332. STX <Data_H1 f" O9 R0 F% c" f2 ?( `; Q
  1333. LDY #$FF
    . g6 c/ a3 I7 L
  1334. LDX PPU_Cur
    - J  K, u: S" S
  1335. DEX" u2 j% _" Q/ S
  1336. PPU_Data_Beg6 S( y9 T- I0 t' ~- @& i
  1337. INX9 q- O* T! _7 z0 t' P. R
  1338. INY
    9 t$ }+ x. c' {& K1 m/ {
  1339. LDA [Data_L],Y7 V. G3 P) g8 X
  1340. STA PPU_Addr,X
    8 |9 P* Z$ }4 X
  1341. BNE PPU_Data_Beg
    * E6 v2 l( |! \" d
  1342. STX PPU_Cur% \0 h3 ^8 o9 i* ^* M# \
  1343. PPU_Data_End+ F3 O2 d8 F0 \# J) D( t! E
  1344. RTS: H5 P2 d; N5 S* H+ e
  1345. $ b$ }7 P2 A/ a' F. O% Z
  1346. ;==============================
    ; \- K0 J: |  s
  1347. Music_State_Show;播放状态显示
    & `- \  v& g( g! ?3 f
  1348. LDA <Music_Stop_State1 {8 Z* O' ]8 X8 G' b. w% ~: o
  1349. BEQ Music_State_Show_Play  F8 q' N+ ~3 s8 ]+ s
  1350. Music_State_Show_Stop
    / ]! M& v/ H2 X' m6 \. _5 B
  1351. LDY #LOW(Music_State_Stop)
    - C. }# _# B9 e
  1352. LDX #HIGH(Music_State_Stop)% _# m7 o4 N1 h' |3 P/ M3 y
  1353. JSR PPU_Data+ C! l0 P! c8 m& T3 ?- M! F
  1354. RTS/ G6 `1 y9 ]6 g* X1 D( F6 b5 O
  1355. Music_State_Show_Play
    / C' u* F/ n4 {+ E
  1356. LDY #LOW(Music_State_Play)
    7 q) w' X6 R6 Q9 T0 d3 }* O
  1357. LDX #HIGH(Music_State_Play)7 v  ^' f& Y% Z8 q. h# b0 E3 A5 n
  1358. JSR PPU_Data# F# R' T3 U3 W: A9 Q0 I
  1359. RTS
    8 r$ P# j- B* N( P

  1360. + O: F  K) ^  ]
  1361. .IF SOUND_BAR_SHOW_ENABLE
    8 O& S2 d- |; g: G+ k  y7 Z
  1362. ;==============================
    8 R& h9 F! j. K: K/ K
  1363. Sound_Bar_Text_Set;标题与音乐条初始化' u0 X4 ?8 P/ t# x
  1364. LDY #LOW(Sound_Bar_Text_Data). W4 J3 ]* y% q4 ?7 B" ~
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    , ]: k: w; x2 N/ ]) V
  1366. JSR PPU_Data) h" ?  F' z* c: g
  1367. RTS
    3 Z' o: N. t1 y# u9 _
  1368. 2 j8 `$ h9 t0 {$ ]1 q0 t6 v
  1369. .ENDIF
    + f* c( `! \1 @5 j- R' \/ n

  1370. - F; r' b+ K% p
  1371. ;==============================
    " h6 @8 e8 W5 S' L0 S& g
  1372. Set_NameTable_Attributes;设置命名表属性
    7 e: m- t9 D% S# r) S# K6 p
  1373. BIT PPU_STATUS3 W0 s' p4 c' n. Y/ `
  1374. LDA #$23
    / V3 a8 o8 N: l
  1375. STA PPU_ADDRESS
      U. U- M" @1 g# C2 I
  1376. LDA #$C0/ V& O3 M$ k9 I
  1377. STA PPU_ADDRESS
    5 l7 N6 R9 S; c& `! w
  1378. LDX #$003 t( Z  V' o+ v3 {& W4 R! b( a! k& ~
  1379. Set_NameTable_Attributes_Write2 M$ U$ A) F; W" x+ {
  1380. LDA Palette_Attributes,X
    / g6 n4 Q8 ]- @9 l
  1381. STA PPU_DATA0 t8 t( p0 ]7 P5 f) a* e! m
  1382. INX
    ; ]0 T/ n1 u8 m2 D) _# J
  1383. CPX #$40
    . q* M- |5 ?0 d3 c: K; z: T
  1384. BCC Set_NameTable_Attributes_Write5 j9 _  M, p1 {
  1385. RTS
    ) `9 D6 f4 M( S& V* r

  1386. + \* s& y- Z( _" x9 P
  1387. ;==============================
    " ~" D: \9 L4 [, b
  1388. Set_Palette_Color;设置调色板数据
    ! W( ~3 q- r- X" U
  1389. BIT PPU_STATUS
    * ^2 d7 T( V' s4 ?0 D
  1390. LDA #$3F# \& O" B0 H0 U$ w& W: Z4 K
  1391. STA PPU_ADDRESS
    5 [2 o5 {" P4 K. b) y& E: T; B1 Q
  1392. LDA #$00
    7 w( x. q8 |$ g) k
  1393. STA PPU_ADDRESS
    " c" K& `* ?# L- K' |( K, Y
  1394. LDX #$00
    4 e8 z0 h  Q3 D; F
  1395. Set_Palette_Color_Write6 T5 u! t# T+ i7 j* \5 L* V8 @
  1396. LDA Palette_Data,X/ L* F+ p9 n1 L& F/ c( ]
  1397. STA PPU_DATA! A7 x- l' q, q$ a
  1398. INX
    & G  e6 p( x& M+ ?7 w3 K
  1399. CPX #$20
    8 ]- c$ D# {- T
  1400. BCC Set_Palette_Color_Write
    # y6 f. s5 T) h! X: b& g" P
  1401. RTS  e6 j4 A5 o3 Z: L3 ~

  1402. + u6 d+ Y  e3 W& e0 F
  1403. ;==============================$ `$ t3 h* _7 V' {
  1404. Init_Palette_Addr;初始化调色板数据4 D) g! S1 {6 s* o
  1405. LDX #$00# _+ D$ l% _$ W( a! L& ?, B1 M
  1406. Init_Palette_Addr_Write
    3 f! b2 n0 x; c$ W8 M9 `. O' k
  1407. LDA Palette_Data,X
    5 r4 q# B  \) C; h) w# x- |
  1408. STA Palette_Addr,X
    # Y" U+ x% n, c* d' c* `
  1409. INX
    4 ]; x. M- J8 E, H/ {
  1410. CPX #$20
    & ^4 c0 D0 Y1 Q1 U9 {4 o
  1411. BCC Init_Palette_Addr_Write
    . R0 `( F4 v8 B. P
  1412. RTS
    + v4 b: M* g9 `; k  e
  1413. 9 k% f6 [2 a4 R+ x+ s" z
  1414. ;==============================, ]# O- s: g' K. ?! }# E% C
  1415. Update_Palette_Color;更新调色板颜色
    , ]$ l& {5 z$ q9 l2 e0 r+ ^+ U
  1416. LDA <Palette_Update_Flag
    6 L1 u) y: E* J0 v2 z- q1 |
  1417. BEQ Update_Palette_Color_End1 z* K, g8 I+ i' ?  j+ Y# [, b
  1418. LDA #$3F
    / q  `( S3 ]& D- A
  1419. STA PPU_ADDRESS$ o0 X' I  C: s- y
  1420. LDA #$0C/ q  Y3 Q  G" I: F& [5 ?8 Z& ?: ]$ O* O
  1421. STA PPU_ADDRESS% K( ?7 v. U" c3 V) ^' d
  1422. LDX #$0C
    & X) |; ~9 l. C
  1423. Update_Palette_Color_Write$ e' U; J  x7 o5 f1 c# K% r# a
  1424. LDA Palette_Addr,X0 G7 y, l2 p+ A( f$ }4 j2 p7 V5 [
  1425. STA PPU_DATA
    - i: Y" J% [; A4 I. w
  1426. INX4 [1 n) s# w& [" \$ R4 y' o
  1427. CPX #$14  q3 m- c; |* d) Z. U
  1428. BCC Update_Palette_Color_Write- B/ @) P2 O0 Q: I/ o: B1 Y2 w
  1429. LDA #$00
    3 u0 l& d& S. q& v
  1430. STA <Palette_Update_Flag; e, k. b* `2 F) m/ m: f
  1431. Update_Palette_Color_End
    ( i2 U8 N5 T- A6 \' \! l' v
  1432. RTS* B' V5 P* P7 ^1 D4 ]$ h

  1433. ' K% M4 N1 q( k$ W% S+ a

  1434. - d  C1 S* \5 z% ]  L
  1435. Update_Sprite_Palette_Data
    - }0 t0 h1 M# \, n6 |; E. M
  1436. .DB $21
    . J1 w2 ]/ u; x9 T% S( G
  1437. .DB $21
    $ k  u, s7 b& L" T' m8 F- @% }: c
  1438. .DB $116 t( @9 h* x3 o! \
  1439. .DB $012 ~' s! j& J9 l* x4 f- t2 K# ?. O
  1440. .DB $01
    # A, S; h5 b, _5 g% O1 Q
  1441. .DB $11
    ' Y, n" z$ t  {; ]
  1442. .DB $21+ Y' r  E. q/ \/ j1 v7 s( M5 B4 X
  1443. .DB $21
    0 T0 C/ P# [3 D$ E# J" g0 }7 U. t0 Z1 F; B
  1444. .DB $11' }% O- E% u1 Z$ P) e5 q
  1445. .DB $01
    7 v: h" U& {# f4 Z9 ~- D
  1446. .DB $11. u7 e$ v* W! Q% m
  1447. .DB $21
    / ?9 E; C! Z4 f1 F# @
  1448. .DB $21- z6 h, \( P: J
  1449. .DB $11
    " m3 G; K, }" g0 C, K4 w4 g
  1450. .DB $01
    * Z9 o1 V8 q! N/ a  g$ x
  1451. .DB $11
    ! |; I9 T& }+ T/ B' w2 @' t! A
  1452. ;==============================
    $ N7 C6 p& m* L
  1453. Update_Palette_Data;更新调色板数据0 f' _2 T, `1 U$ [! Y: p
  1454. LDA Nmi_Time_Count
    , o5 ~: y( e2 z# m. E
  1455. AND #$08! u/ G7 R6 j" x' c+ m/ Q! s
  1456. CMP #$08
    9 f( {, D9 k2 U8 @0 v
  1457. BNE Update_Bkg_Palette_Data
    1 b; A7 S- @2 R4 ~$ ]- z

  1458. , |2 V+ Y. _" m$ S5 B; W3 M9 q
  1459. Update_Sprite_Palette_Data_Set, Z4 g/ O6 y" x. A0 e6 R: ?% |
  1460. LDA Nmi_Time_Count6 x& e' u/ m0 b: L. ?' ]
  1461. LSR A
      d$ K# A( ]! ]0 l; ]8 m( G
  1462. LSR A  Q+ m7 N! J, B7 P
  1463. LSR A
    6 o' [; {$ w, [+ f4 A, p* k
  1464. LSR A
    " X2 _- Q4 K' p$ F7 H. ]; x) r5 x
  1465. AND #$0F4 t; B& j# U3 w, A4 @! {2 M( v! r
  1466. TAX
    3 ?0 @$ @. |2 Z% v! _5 ?, f
  1467. LDA Update_Sprite_Palette_Data,X
    2 K: x% T. p' u' x6 ^% G
  1468. STA Sprite_Palette_Update_Addr# J" g6 Z# z$ v6 l5 }) N0 g
  1469. LDA #$01" q% U1 v& @% L- O& d" o
  1470. STA <Palette_Update_Flag
    8 G" L" n- L% t9 p0 i+ H0 m
  1471.   E# {; a' T4 T
  1472. Update_Bkg_Palette_Data
    9 U) P$ p! X0 H$ G
  1473. LDA <Text_Disable_Flag
    - f5 \( u. f# g
  1474. AND #TEXT_DISABLE_RAM/ M  e! e/ [+ k' r$ C
  1475. BNE Update_Palette_Data_End2 V1 C0 {* I0 E
  1476. LDA <Music_Stop_State
      N3 i1 K" \5 D8 Y  h
  1477. BNE Update_Palette_Data_End
    ; t) r; u0 Q9 D0 I0 c
  1478. ! C# O$ ^4 L9 D1 h9 o3 e, p
  1479. Update_Palette_Data_Check( }% I2 V/ @3 f1 i: W# O
  1480. LDA Palette_Wait_Cnt4 v7 D4 ]+ ]2 S6 u0 T
  1481. BPL Update_Palette_Data_Check_Over
    & u0 P& e5 ?' P5 ?6 ]. u; R. R; p
  1482. LDA #PALETTE_UPDATE_INTERVAL. z3 F6 {5 Z; ~
  1483. STA Palette_Wait_Cnt' \4 w+ k9 L3 z6 U
  1484. Update_Palette_Data_Check_Over" ]2 t0 w% \) Z0 n
  1485. DEC Palette_Wait_Cnt
    % B  E( F  _* Z
  1486. BNE Update_Palette_Data_End
    5 u7 m+ Y% |3 `4 d: n3 S

  1487. & s; ^6 r8 a9 ^5 A5 j
  1488. LDA <Text_Disable_Flag1 `" S! T5 p) u5 B: t& j
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    2 ]- G( x* f. C
  1490. STA Text_Disable_Flag* b. f7 _& Q- \2 G+ {
  1491. INC Palette_Update_Flag
    . _5 P/ a; Z1 _7 g+ w

  1492.   Z% U/ X; I5 s/ y. b3 L- e
  1493. LDA #PALETTE_UPDATE_INTERVAL
    ( C1 {1 A1 s9 A8 t6 u3 E" H1 D$ ?
  1494. STA Palette_Wait_Cnt
    7 e6 p  j1 {/ L, [8 C. K

  1495. $ k+ _& R7 q( V( V/ c+ U0 ?
  1496. LDA Bkg_Palette_Update_Addr6 s1 W: c1 j" P6 y6 Z4 i3 N: ?
  1497. CMP #PALETTE_UPDATE_MAX
    : `) y8 b. {( R0 Z* y
  1498. BNE Update_Bkg_Palette_Data_Set* p9 U# h' e: D
  1499. LDA #PALETTE_UPDATE_MIN - 1+ G0 w/ ^4 ?; v% G- V
  1500. STA Bkg_Palette_Update_Addr1 ~4 O. t1 j' n7 X  T8 j( @* O; [
  1501. Update_Bkg_Palette_Data_Set; I! e; ~. Q, Z8 a2 {0 y0 z$ p# F0 L
  1502. INC Bkg_Palette_Update_Addr
    * k! O4 |% k( C1 u

  1503. 6 C' s1 u8 I1 a* G9 T
  1504. Update_Palette_Data_End
    7 x9 R0 p3 m) S/ k+ e2 f# S
  1505. RTS
    2 _: K; n* a5 a2 L; C* n4 E8 u

  1506. 7 K4 w) N! o+ x) _$ @
  1507. ;==============================
    " V0 K; f6 i8 n  g+ G
  1508. Show_Music_Text;显示静态文本
    8 Z. t$ _! s, j" b% o
  1509. LDX #$00% V4 z" Z2 Z( R4 V( F: H; N. |
  1510. Show_Music_Text_Set
    ) ^  e3 I4 g( r& v9 g3 B3 ^
  1511. LDA Static_Text_Data,X1 z7 X/ r# f1 [- h0 r1 \
  1512. STA <Data_L5 i7 u3 b* G2 z  B% M# \1 a
  1513. INX
    4 S: q9 k- }( k% u5 E
  1514. LDA Static_Text_Data,X
    7 {" ~, M/ T4 a9 X
  1515. STA <Data_H
    & Z% w& ]' K0 k* p4 L: l
  1516. INX% u- J& |  t" j7 p7 J6 D% ]7 l
  1517. LDY #$00
      ]; R  j0 T, ~! U" z  n
  1518. LDA [Data_L],Y
      P4 {4 p5 |% s* E5 L9 v. J
  1519. STA <Data_Cnt# P" L! O% a6 j2 B
  1520. DEX& J' E" S/ b* M" P# B' b4 u3 r; y# }
  1521. DEX* \$ F7 N6 Z0 k9 Q. G/ f4 W
  1522. LDA Static_Text_Pos,X- v& T3 b  ?) U0 ?, I
  1523. STA PPU_ADDRESS2 _9 N1 G+ s( T. ?" {8 y1 G
  1524. INX
    . ~2 R4 c# J: Q
  1525. LDA #$20
    4 Z' ^) m* r- ~
  1526. SEC
    - ^% L7 P3 ~0 G# U# r( e# J
  1527. SBC <Data_Cnt" a4 P$ @" H/ f8 b7 P+ t1 @& F" f
  1528. LSR A' c) y+ L( n7 [6 q( D6 y( G/ ~. Y
  1529. STA <Data_Buf2 W6 Y9 W, l9 f0 q) L  K
  1530. LDA Static_Text_Pos,X% d) h& @* h5 n% ^- V, B, v
  1531. AND #$E0; C$ n, o' r' g( E. x6 W5 c: E  w% s6 q
  1532. CLC6 S+ \8 q! o+ K$ ^
  1533. ADC <Data_Buf
    6 w0 v- `. v2 ?0 J
  1534. STA PPU_ADDRESS
    / W9 D* c! `4 Q8 W6 Y: G2 Z1 o
  1535. INX
    ) s0 C; ]$ {; M! n+ Z
  1536. Show_Music_Text_Set_Write
    ; x+ \" H. J8 c# x1 f2 d( p
  1537. INY( {( G; f+ L1 {/ [! x$ a# n
  1538. LDA [Data_L],Y
    ' Q4 j6 j3 {! E( U5 t
  1539. STA PPU_DATA
    ; C$ C# G. w# m' i. l
  1540. DEC <Data_Cnt
    , s4 H' _- f" H) O( |" E0 a( x
  1541. BNE Show_Music_Text_Set_Write
    7 L5 I7 c2 a! U2 m2 x0 v# Z: u  E1 \, @
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    2 {  p9 Q3 [& _7 G- F- r9 O
  1543. BCC Show_Music_Text_Set0 x) ^' D0 \7 L! b
  1544. RTS6 a- X  Y1 m5 m6 f6 d5 Q) z. n' R4 N* q  t
  1545. , ^# Y* p/ w9 O- U
  1546. ;==============================
    ; s/ d6 F6 D$ J2 ?. ?1 t
  1547. .IF Track_Name_Pos;显示曲目信息; ~  `9 ?+ H; Q3 y% p  V; [

  1548. 6 ^5 t8 v% X- L" d
  1549. Clear_Track_Info
    8 r# R6 P9 h# X7 k
  1550. PHA% B, _, S* o: A# J( `/ h7 K
  1551. LDX <Music_Item_Cur
    8 A7 L* W$ _0 A0 k
  1552. LDA Track_Name_Addr_Flag,X" D2 v# s% M/ H* j: ~$ x
  1553. BEQ Clear_Track_Info_End_Ex7 p: U9 ?9 N1 P& M. b6 }4 M
  1554. PLA! g/ ?3 w& `0 O; ?1 d
  1555. + @* c; Q! P. w. |6 h6 u
  1556. LDX PPU_Cur
    4 D+ E, B8 r& z; W# ?* W) j; L! P
  1557. PHA
    ' n- ?. ~  [4 A: r3 y& G
  1558. LDA #PPU_MODE_CNT_CLEAR5 f5 ~* E# X6 d# H( [
  1559. STA PPU_Addr,X9 b+ ?7 \* N& N$ `0 x
  1560. INX; U( e9 @3 f% N% d7 X+ y) l
  1561. PLA; G* }( [6 F3 R
  1562. JSR Show_Get_Track_Name_Center_Pos
    5 r. a: \- J0 {$ e
  1563. STX PPU_Cur
    ' o5 h6 J$ w% v4 H  C$ r! \
  1564. Clear_Track_Info_End6 _( k4 t! \& P
  1565. RTS/ D* k5 |3 V/ d1 f' I1 t
  1566. Clear_Track_Info_End_Ex" y+ y+ @# R6 `- H, Y5 x
  1567. PLA2 [2 \* e0 Z; e& o/ g
  1568. RTS' Z! r: u6 s% W. F/ Q( ~

  1569. / ~) I1 `6 r% Y& a" M
  1570. Write_Track_Info9 p4 a5 u8 y5 w$ K; N
  1571. PHA
    * j9 c" G# v# F) N! H$ @' {
  1572. LDX <Music_Item_Cur
    9 h( _8 a- u, `4 o6 m7 Q
  1573. LDA Track_Name_Addr_Flag,X
    % @& U' I6 x1 a0 O/ [6 W9 F
  1574. BEQ Write_Track_Info_End_Ex9 {5 s- I' p/ q- z
  1575. PLA
    1 U3 \' s* F' S, h: R! F% X' v
  1576. ( v4 z4 V7 ~6 W# [6 s
  1577. PHA
    4 @6 c* c! x7 i1 G' b! o
  1578. LDX PPU_Cur" W/ b" z6 Q" ^9 I. j( |  e
  1579. LDA #PPU_MODE_CNT_LINE
    + a* X% e; i, P6 t' [9 f
  1580. STA PPU_Addr,X
    1 U5 C5 h! q6 ~* \
  1581. INX
    " ^& Z( t0 O' j1 U& Z  g! B2 @
  1582. PLA
    9 o( N. w0 Q8 }+ Y4 h
  1583. JSR Show_Get_Track_Name_Center_Pos6 s4 b: e4 A- D
  1584. Write_Track_Info_Data5 e6 m9 }6 [3 {. l* b( @
  1585. INY
    7 N: T, ^3 ?3 x! |- x4 W
  1586. LDA [Data_L],Y
    ; O6 Z3 F* Z+ w+ z4 @7 D
  1587. STA PPU_Addr,X9 _5 g( m7 L2 ?9 K
  1588. INX; P# x, a1 U( ^+ S  I9 o0 u
  1589. DEC <Data_Cnt% v/ I. n* x: q0 t& ]
  1590. BNE Write_Track_Info_Data
    , m% g! Y' O# `8 j
  1591. STX PPU_Cur
    8 V$ r9 @. M# Q  I
  1592. Write_Track_Info_End/ a! e3 B! Q1 i3 L3 ]
  1593. RTS
    / S" {4 e! ~1 k' h8 o
  1594. Write_Track_Info_End_Ex. Q/ T) ~0 ^7 c. s% O
  1595. PLA
    0 n* D% D8 h9 C6 x6 W1 `; A
  1596. RTS
    3 ^2 X6 s+ [1 `, T% v2 @* m0 d( H

  1597. . _. e0 G! i9 u# r0 ]8 w, g1 t
  1598. Show_Track_Info- A/ q5 s+ m( |: T" L9 p
  1599. Show_Track_Info_Clear8 x) R" s% d1 M; U8 x
  1600. LDA <Music_Last+ P9 z* y6 |/ j/ V
  1601. 8 i8 ~  C. V% B. s0 E, b
  1602. JSR Clear_Track_Info
    * P( q9 K$ N! y8 d8 q+ g
  1603. # c5 }- a9 D+ e- o7 X: Y4 Y6 W
  1604. LDX <Music_Item_Cur/ [4 y2 O. u$ h! ]# y1 `
  1605. LDA <Music_Cur,X
    ; C2 A- t/ F; S7 A
  1606. JSR Write_Track_Info+ k, K" C2 k0 [
  1607. RTS
    ! h: N8 T  I; ]8 C0 j3 c
  1608. ; p, f9 s3 Q' d. q# }
  1609. ;==============================
    ; h0 N- }5 q% J4 L( x6 d) Y
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置8 |( {4 Z( F% n6 s$ {

  1611. , Z, R4 g: K- U) z1 j
  1612. ;取出集合名索引: e* j- D8 u2 M) j
  1613. PHA# V% L9 Z0 l8 S" Q$ q# c

  1614. + z4 c1 s0 N& x, {
  1615. LDA <Music_Item_Cur, d3 n2 {: V% f0 d/ m
  1616. ASL A
    4 }% A  N- y2 g" D1 L
  1617. TAY
    7 g- e  V+ p. t
  1618. LDA Track_Name_Addr_Port,Y' _% w( {. ]+ |$ O
  1619. PHA! o0 ?9 X1 Q5 [
  1620. INY
    0 x3 r+ a$ X- X% K
  1621. LDA Track_Name_Addr_Port,Y
    , N+ M: A) `# P& q+ Y6 w
  1622. STA <Data_H
    * }5 p/ t: G0 y- \9 c+ ]" K5 \/ [
  1623. PLA
    ) h4 I7 J0 a6 Y# Q  g# e  ^
  1624. STA <Data_L
    ' o7 U9 l  V/ T) |. z: J9 H

  1625. . |" m: A& L+ F3 h0 p
  1626. PLA. M) }9 }% ?, p, T$ P9 O& j( |6 C
  1627. ) A. `5 Y2 @% W4 V3 ^
  1628. ASL A) m/ }- n* m3 F( a, G5 ~8 j' S# _
  1629. TAY
    + Q. [" V0 f' O- s' T1 M
  1630. LDA [Data_L],Y
    ! K8 u- M1 I( K( x7 x5 r
  1631. PHA
    0 @0 a' |1 }5 Q
  1632. INY
    ) f% H4 ]: A/ H5 h( u4 i
  1633. LDA [Data_L],Y! m2 O- T* u6 U4 Z
  1634. STA Data_H
    . G( o8 _, m3 p# F, d
  1635. PLA
    : H( }: J. ?6 u5 M% [  I6 D
  1636. STA Data_L; W* ?) N3 p9 }: V

  1637. ; _, H; D" K" v# W* e# R" ~
  1638. LDY #$00
    + A( b0 r: s+ B9 z
  1639. LDA [Data_L],Y  K! I; x/ }) W' h; r( r
  1640. STA <Data_Cnt
    2 R; q/ p1 M3 m# ~8 ^
  1641. LDA #$20* [* v. s/ H) S; e) i- U( X$ I) c  g
  1642. SEC: Z8 ?) d/ H8 Y
  1643. SBC <Data_Cnt5 q9 P8 R* R7 z
  1644. LSR A
    2 x4 w& F; F: M2 L$ S
  1645. STA <Data_Buf
    7 M- M! x5 H7 B9 D7 a1 m
  1646. LDA #HIGH(Track_Name_Pos)
    $ j' ]( b) Z& v% ?& T6 c
  1647. STA PPU_Addr,X
    1 T% h% {9 V, s  e, J3 m, `6 q
  1648. INX
    - F( S2 d" H* }& }
  1649. LDA #LOW(Track_Name_Pos)
    ! W# ?- T0 R7 T6 m2 V9 e4 C
  1650. AND #$E0
    7 F  M% H  ^) z* b% ]9 |8 v
  1651. CLC
    ! \; r: g9 J  z/ r$ w' n
  1652. ADC <Data_Buf
    0 E6 L3 a/ ?! A" {
  1653. STA PPU_Addr,X
    0 {' v8 `& @8 ]( O! ]) L5 l
  1654. INX6 E& \+ a0 r2 S7 h+ I5 L: N
  1655. LDA <Data_Cnt( S* I4 p7 S( m- c" B  c7 u
  1656. STA PPU_Addr,X7 V$ i, I4 w2 a; Z- y! W/ d7 j
  1657. INX
    % K; H# r+ o+ t+ d" r
  1658. Show_Get_Pos_Center_End
    * B3 c( C8 G6 q. {3 {. w
  1659. RTS
    ' \0 [- |  q1 ~9 J0 m( M7 X( D4 e7 e
  1660. .ENDIF# Y, {% @5 W6 y0 i: E' e( x  b

  1661. * r; k8 \* j+ F+ J
  1662. ;==============================( Z3 Q+ P, [/ p" P0 W$ Y9 }
  1663. ;音乐端口清除
    4 `1 w' O1 j3 \. {5 \( ?2 y- l
  1664. Sound_Data_Clear
      k) A) X. }' P7 n& ]
  1665. JSR Sound_Port_Clear
    - s3 s8 d# i: D& W% |
  1666. JSR Sound_Ram_Clear
    9 V: M5 x: M  R# A1 T/ l* x8 R6 n
  1667. RTS0 _' ^  F" _# d1 [4 h, o5 o2 e
  1668. + O- g; |* q# L' k
  1669. ;==============================
    9 |8 O- ^5 F* K9 p5 W; d
  1670. ;音乐端口清除
    , a1 K) \/ T2 }! G' }, c
  1671. Sound_Port_Clear
    ' X5 ^4 q- k% U5 T3 R
  1672. LDA #$00% h* t+ [) o% e5 M
  1673. STA APU_STATUS; k6 M+ s* H' V" ?# Z
  1674. LDX #$00
    * l6 T7 p# n6 X& X5 ^
  1675. Sound_Port_Clear_Write1 c) Q8 l1 T; w& {/ y( O% R  j
  1676. STA $4000,X7 K- r/ R' F0 b/ p- ^4 g4 d. [6 Y
  1677. INX
    + Q' F0 t" J, E& p
  1678. CPX #$14
    * n  D: A- J1 m$ \: T
  1679. BCC Sound_Port_Clear_Write
    - C/ O* n2 C, D8 K& `) \+ J
  1680. RTS, L7 R7 P; L! {4 S8 z
  1681. 5 ^% y: i1 W" `9 m& _
  1682. ;==============================) `. w- t8 a# y& K3 v
  1683. Sound_Ram_Clear;RAM清除
    $ `1 k! D  v: Y7 |$ k8 J; f4 b+ j
  1684. LDX #$00
    4 k( U: K! i' z! H9 [! W2 W8 L
  1685. LDA #$000 ~5 J7 N, x% _4 [
  1686. Sound_Ram_Clear_1- l% Q; B# \) [6 b
  1687. STA Sound_Ram_Addr_1,X8 a/ p. ?. H' G% v* Z' z
  1688. INX
      {; ]; G/ d/ L, {* l
  1689. CPX #Sound_Ram_Addr_1_Size& y- \" r# A" V" {; I: f+ e/ R
  1690. BNE Sound_Ram_Clear_1
    0 M4 Z  X( Z5 M6 t+ F5 @+ n# k9 g
  1691. LDX #$006 K8 i6 ^3 }8 p2 V' m0 D
  1692. Sound_Ram_Clear_2* _6 v( y" K- S) Z+ Z
  1693. STA Sound_Ram_Addr_2,X9 _$ w/ d6 O4 I7 y. y) K- t
  1694. INX/ _+ A8 v9 X( D
  1695. CPX #Sound_Ram_Addr_2_Size
    ! M  y- o: p' x9 \
  1696. BNE Sound_Ram_Clear_26 D. Z" L, N: k. `+ K
  1697. LDX #$00
    . U/ f4 f* m3 Z
  1698. Sound_Ram_Clear_3) j8 `$ Q3 W$ l& a' {4 d
  1699. STA Sound_Ram_Addr_3,X, @+ m. P; [# S
  1700. INX) d$ P* O& t% F6 q2 g4 Q0 p
  1701. CPX #Sound_Ram_Addr_3_Size
    / f1 A$ \- q- J( {
  1702. BNE Sound_Ram_Clear_3
    7 n/ L4 ^3 G/ N
  1703. LDX #$006 f% l" q5 W8 B! j8 M0 {& o" p) R
  1704. Sound_Ram_Clear_4
    ' x/ _/ {5 b; M# y$ d
  1705. STA Sound_Ram_Addr_4,X
    1 V6 w$ R0 C2 O# l
  1706. INX
    5 r. L8 o$ c: X* i& Q
  1707. CPX #Sound_Ram_Addr_4_Size
    6 i! \0 w" {; \# z/ D- V. X
  1708. BNE Sound_Ram_Clear_4
    ! C( m1 C. G# Q0 u# |* y5 i
  1709. Sound_Ram_Clear_5. n! E) m7 g# x! i: f  E
  1710. STA Sound_Ram_Addr_5,X! n# g5 `9 N" r# j1 k5 [
  1711. INX5 y) N8 n0 ~# C- L/ K
  1712. CPX #Sound_Ram_Addr_5_Size
    + M4 o" @- j* u. B2 j- d
  1713. BNE Sound_Ram_Clear_5$ J* X0 `# V5 ]0 J7 p$ q$ f
  1714. RTS! t3 B2 t7 i) }4 h* y

  1715. # t8 I& a) i* }; y  J& p
  1716. Get_Music_Collection_Name
    3 Q" Y" W% h3 y1 o) p1 o
  1717. PHA
    8 ^6 a  ~* R, d3 B' L. c* `
  1718. LDA <Music_Item_Cur% U/ ^7 @. H6 |/ w* D: |4 ~
  1719. ASL A
    . I6 a. c( O; x  L8 @# p
  1720. TAY( ~0 h, ]) H* Y$ ^1 k
  1721. LDA Music_Collection_Name,Y! x: g/ U( Z4 E/ Y- [7 f3 B" o4 N
  1722. STA <Data_L9 `, K7 A4 T2 ~% y3 {
  1723. INY8 l, r/ X0 F0 I# W$ T* o* }; c0 b$ H
  1724. LDA Music_Collection_Name,Y
    $ t- X7 c4 Z2 n& L: e+ t
  1725. STA <Data_H3 f: A) E, Q, u0 B. S
  1726. PLA
    " }5 `5 M6 _/ Y: s! |
  1727. RTS
    # P! K( p& J, L: X7 ?  @

  1728. / ^. f. {2 ?. z% u, s& @
  1729. Set_Sound_Total( Q) I( j5 z9 u
  1730. LDY <Music_Item_Cur
    7 Y( {% e3 a  a$ U8 V: ?% e
  1731. LDA Sound_Total_Port,Y
    2 P2 m. L/ h6 a2 }
  1732. SEC
    , L3 [; ]; Q8 X+ d$ @
  1733. SBC #$01
    ( c- Z- ^/ ?' a3 P4 L: {* k, u
  1734. STA <Music_Total( F) F. A8 z) u7 W* F6 x+ w
  1735. RTS7 R+ `, V7 j4 E; k) E! `+ b% [/ R
  1736. 4 S: }1 f- I4 @- p
  1737. Get_Sound_Start
    ' r+ [$ r: @9 n; m4 a! O
  1738. LDY <Music_Item_Cur' S7 i4 E) y1 @# U8 X' L/ J
  1739. LDA Sound_Start_Port,Y
    ; a) q3 f- J( m+ k! ~0 K
  1740. RTS) ?* H& w* ^( F4 }9 ?% B

  1741. 0 B- f  C& b) y
  1742. Set_Sound_Init_Port! q; Y7 W- A5 ^' C4 V  J# G
  1743. PHA
    ; [* G& p. b( R# X2 [* u9 b
  1744. LDA #$20+ q' `2 j, V. l8 ]/ i
  1745. STA <JSR_Addr_Op2 L) D/ w# g6 p1 e' l# F# W
  1746. LDA <Music_Item_Cur, F9 a1 ]; T4 J9 z) n1 B0 T; @
  1747. ASL A3 Z3 N8 Y" r4 V5 x3 u* y
  1748. TAY
    5 I) J) k- K5 m- L1 k, N
  1749. LDA Sound_Init_Port,Y
    $ h+ L! R, c9 X7 U' e
  1750. STA <JSR_Addr_L
    . p* h, d* a; a
  1751. INY
    * G4 E& _4 X, m; T( T# j7 S) S0 Y0 P, K
  1752. LDA Sound_Init_Port,Y' @3 D$ m3 Y, d) h2 [# b
  1753. STA <JSR_Addr_H
    8 ^3 Z6 ^( i5 T0 U
  1754. LDA #$60( t/ }; n  x1 P5 \' [7 O
  1755. STA <JSR_Addr_Rts  N. c* u% q4 l& j
  1756. PLA
    2 \: Z) o9 B- x& X6 K# q0 [
  1757. RTS
    ! Y  s: c! R, m; X  V
  1758. ) ]& f/ O& t9 d5 h! [
  1759. Set_Sound_Play_Port/ @2 Y$ k- Q/ y( X! N+ _! S
  1760. PHA% }# ~& r. J: d) B2 N( d
  1761. LDA #$20
    1 \& ?. }+ q! }! T3 m" f3 l
  1762. STA <JSR_Addr_Op
    1 m$ {9 J8 h; C- D4 X
  1763. LDA <Music_Item_Cur" c% |: N# S8 _" k+ N5 l
  1764. ASL A
    2 ?0 F+ a% [' L( m
  1765. TAY
    : y% e1 Q9 D) n( J
  1766. LDA Sound_Play_Port,Y  [/ C1 ]" ], w& a
  1767. STA <JSR_Addr_L
    8 y, w8 w, I2 n3 ?  T, D
  1768. INY
    * E* D* R2 @! W6 T
  1769. LDA Sound_Play_Port,Y0 c$ L- p" R6 @; G, x
  1770. STA <JSR_Addr_H
    . W8 k8 \* @7 W  y5 i3 u6 }
  1771. LDA #$60
    ' P: ^( z8 }0 m1 ^8 f
  1772. STA <JSR_Addr_Rts; V8 J6 }& [$ Q$ K& S0 _! W7 m( n
  1773. PLA
    " I1 C- E. f, A# R& N
  1774. RTS
    ) F. q. q( C" R. y% O
  1775. & q1 w: V% [) K2 U* \  B! ^! ^$ D) T
  1776. Set_Sound_Reset_Port
    + j! J. ?$ G; J% r. i% h
  1777. PHA) e% U% M+ K. _$ x9 f8 L: q1 M
  1778. LDA #$20$ G* o7 q4 z2 i) E
  1779. STA <JSR_Addr_Op
    + e7 z, g) G/ ]+ t/ n
  1780. LDA <Music_Item_Cur0 _* S5 q( F' E' T0 w
  1781. ASL A
    6 i" h2 D/ F: D5 A; S0 ]
  1782. TAY
    . ^, M* ^4 ^' g' p- r5 \
  1783. LDA Sound_Reset_Port,Y5 H3 Z* V& y5 k  S
  1784. STA <JSR_Addr_L% c; a8 t4 x# |, p3 ~/ c
  1785. INY
    2 X9 D+ Z8 C8 J* X$ i, T6 ~
  1786. LDA Sound_Reset_Port,Y
    7 I9 ]! [) y) A9 ]
  1787. STA <JSR_Addr_H
    + x  @1 D* J) y
  1788. LDA #$60
    ! r& p) o' x" c1 ?" T0 P6 _3 q
  1789. STA <JSR_Addr_Rts: {, y* p5 i- G% R: S4 h
  1790. PLA
    ; E1 I- ~3 Y* j3 k7 e
  1791. RTS( J% K- J: u' Z) o- j$ r% D, }3 H

  1792. % W: C" u9 N* j; M% e
  1793. ;初始化音乐bank+ H% o! B4 ^8 ~8 T+ w
  1794. Init_Sound_Bank
      A( o: Y# l7 X7 |
  1795. LDY <Music_Item_Cur
    6 T7 f) C/ u- j5 i; k$ D
  1796. LDA Sound_Bank_8000,Y
    ( `, o! ?6 a- k6 E% [& a* F
  1797. STA <Music_Bank_80009 F8 l2 ^! f  @8 D6 g
  1798. LDY <Music_Item_Cur
    ; ~% j4 a0 g' A8 x
  1799. LDA Sound_Bank_A000,Y4 c9 ]3 M9 a+ }+ V
  1800. STA <Music_Bank_A000. G; \. T7 X7 S6 ?2 F
  1801. RTS
    : t9 c2 T( A/ L1 Y
  1802. : X" Q( U9 n; z2 P+ \  y
  1803. ;==================================================
    ' H' Q( @4 M3 ~
  1804. Sound_State_Reset;音乐状态重置0 f2 B0 H4 h1 k5 _0 \. a
  1805. JSR Music_Bar_ReSet        ;重置音乐条: P2 i4 m$ G( {+ e9 W
  1806. JSR Time_ReSet             ;重置播放时间; }/ Z& U9 O5 V* A3 y0 d+ H

  1807. $ g  I7 W  S- h" w: [& i+ v- d
  1808. LDA #$00
    3 l( o9 q0 o+ Y
  1809. STA <Music_Stop_State
    7 O1 e/ G0 p4 K5 h2 w
  1810. JSR Music_State_Show       ;显示播放状态4 v3 q' s) O! S5 [9 u

  1811. 9 p  G# r  p" w) @4 c
  1812. .IF Track_Name_Pos% z9 H: J) Q% T4 C3 `
  1813. JSR Show_Track_Info        ;音乐曲目名显示3 B% b) L( G: t3 y1 Q0 m4 ]
  1814. .ENDIF* h. s8 g6 P0 `6 \; }2 o
  1815. 7 p! _, S" }, S, o, b/ r
  1816. RTS
    4 ], m9 ?# M  @  g

  1817. 0 Y0 k; @0 g( a; w& J1 f
  1818. ;==================================================7 h3 k$ ]4 S/ r* ?$ {$ _6 w% @
  1819. Sound_Init_Proc;音乐初始化处理1 w/ \" z  \  X7 V) S( |2 M9 r1 A
  1820. PHA
    & g4 }) h2 Q7 p% y2 n  ]
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址1 O  `) |+ D9 s" S
  1822. LDA #$009 D9 c: R  I4 u* Z: Q4 }8 |
  1823. STA <Scroll_H               ;重设水平滚动
    ; p! k' b% P; i+ P
  1824. LDA #$0F" J' m2 W, E# y7 d; b
  1825. STA APU_STATUS
    9 \  G: [6 J$ ^
  1826. PLA* Q7 |1 ^) U& g) ?  I
  1827. JSR Sound_Init             ;音乐初始化8 a" W4 {7 Q  V0 y9 B1 F
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    7 d: A) y1 {& o$ y  j5 |
  1829. RTS
    9 g( e/ e% v. e/ Z

  1830. ( k% o* p1 n# t3 n5 u
  1831. ;==================================================% P! E5 X- b* N1 n. s( x, `3 a% Z# _
  1832. Sound_Play_Proc;音乐播放处理) p6 ~$ v- D* k9 O
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址* x) O/ j) ]. z# T# X3 A
  1834. JSR Sound_Play             ;音乐播放0 s7 Q9 ]2 g4 P
  1835. RTS
    - m! j- c! i" ]$ v

  1836. 6 s0 T: c' w" E8 f  d) ^
  1837. ;==================================================
    , W* i! b. ]1 A' s
  1838. Sound_Reset_Proc;音乐重置处理
    7 k  C' x1 B1 r3 H. N( q
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    - J- G# \1 ~7 E* z4 z& L/ S4 ^* Q  P
  1840. LDA <JSR_Addr_L8 k) H1 l" y* b1 n/ R# c( G
  1841. ORA <JSR_Addr_H% \6 S( q% E$ s8 x  J% w1 a
  1842. BEQ Sound_Reset_Proc_Default
    + W) v3 m) E2 n9 I5 l3 Z4 [5 _
  1843. JSR Sound_Reset            ;执行音乐重置
    ! Q9 g, P4 E" N( c) X$ f5 P
  1844. JMP Sound_Reset_Proc_Init_Sound& s/ u7 V. g  Y/ Z( z
  1845. # ?4 ~/ J8 X7 V. s/ \6 t
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理! B: ~& s3 P2 Y1 a7 G
  1847. 4 c$ {! b' e9 {: l  \4 z
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断  _' [3 T  d  ?
  1849. LDA #$00
    5 _  \& {& C3 Z
  1850. STA PPU_CTRL/ I  z1 C! J+ F, p! z

  1851. , ^* r7 w% T; C- |; M
  1852. JSR Sound_Data_Clear- q; `. g8 o; G7 h8 C/ V
  1853. 0 F; T; f. E' A# m! \
  1854. Sound_Reset_Proc_Default_Wait
    / n( @$ a, z: n% m+ c
  1855. LDA PPU_STATUS) Y  v0 v( i9 N$ D0 Q
  1856. BPL Sound_Reset_Proc_Default_Wait
    8 b- ~* b9 P2 w2 }
  1857. " H6 `8 p+ E% u  M8 d0 k
  1858. LDA #$00
    5 G2 @" R$ r3 s( P
  1859. STA PPU_ADDRESS8 p" `8 [# Y# y6 p- k) p# @' H4 v
  1860. STA PPU_ADDRESS
    1 u7 L) ^" _0 M
  1861. STA PPU_SCROLL  d1 \2 u& O& K/ B
  1862. STA PPU_SCROLL& w, C3 e9 H5 ]) J7 `2 e* @
  1863. 4 T! Y, a1 a1 G& T( A$ b7 W# E
  1864. ;恢复PPU控制
    - ^8 ]1 b+ Y) S: U$ ?6 F7 b1 o% }
  1865. LDA Screen_Ctrl& t( V9 W& [# ]8 Q, r
  1866. STA PPU_CTRL
    % L; K* T' V: m/ l5 a9 c. e0 ~
  1867. + `4 Q7 v4 E+ T
  1868. Sound_Reset_Proc_Init_Sound* d( p, D* i% b& l; V* t
  1869. LDA <Music_Stop_State
    ( m* \' X) n) K  }/ n3 V
  1870. BNE Sound_Reset_Proc_End
    8 O# @2 X9 O, h  x- a
  1871. LDX <Music_Item_Cur
    6 T2 [  l) r% B" C: G$ |6 T0 t
  1872. LDA <Music_Cur,X) Y6 g1 o* {; f7 J3 b* [  B/ F
  1873. JSR Sound_Init_Proc. X; M) u" {; P& W/ d8 ~, n# t
  1874. Sound_Reset_Proc_End
    6 W; A3 ]$ U2 C# M3 G, f
  1875. RTS( w) p6 x( M5 f2 J  I

  1876. " w: G& Q- T0 C. q- C* N& y  q
  1877. ;==================================================8 j0 V# V" N0 A) o0 U. j. v7 Q& {
  1878. Clear_Item_Text;清除页项目
    & l- d* E+ F5 Z& T& \, z
  1879. LDX PPU_Cur
    - u) n0 [/ j3 n0 P6 s
  1880. LDA #PPU_MODE_CNT_CLEAR
    6 A" ^1 _/ g& R( ~* I
  1881. STA PPU_Addr,X
    9 B9 K; B6 j5 s# p
  1882. INX
    8 Z2 R. N' \/ p; j* ^

  1883. 9 F$ u  g# }9 R7 K2 `
  1884. LDA <Page_Last
    9 M5 h+ N( T* ~5 i7 J
  1885. SEC/ m/ X( G0 o# e1 I. X
  1886. SBC <Page_Last_Index
    8 y1 {' B( I, j. _5 x( v
  1887. ASL A# J# `2 ^5 W5 v' u
  1888. 5 b0 g2 z  X! d' a& i# Y0 ?: x
  1889. TAY
    ' q9 ^3 h. L& |4 h
  1890. LDA Item_Pos_Data,Y: `, S2 |8 f1 p0 P; i
  1891. PHA
    % N7 m# s4 `# z+ y8 d
  1892. INY
    ( M  J4 M) X9 X5 s9 D' e
  1893. LDA Item_Pos_Data,Y' O0 _' N2 \) ]0 X6 `* v" J' A; G& G
  1894. STA PPU_Addr,X+ i# o' e  t: N
  1895. INX
    2 A# ~' O, I/ y' ?! {/ W/ K
  1896. PLA( \. z7 Y! r8 `
  1897. STA PPU_Addr,X  G, Z8 k; F% w: C3 m4 x  }
  1898. INX
    % @/ s5 A; _+ h

  1899. ( R1 x  B3 |/ y1 t! T" _6 b6 [
  1900. LDA <Page_Last
    & X9 q/ u! Y4 U* W; Q  I
  1901. ASL A0 F5 H8 f% b+ S5 |4 a# |
  1902. TAY# {- c5 X0 B4 w" S
  1903. LDA Music_Collection_Name,Y# @8 B: k/ O" c0 `  n5 z
  1904. STA <Data_L
    ; Q* @* g) Q- b0 V# |2 k7 f, V4 g
  1905. INY8 j2 _0 H2 `- x$ L
  1906. LDA Music_Collection_Name,Y
    + t5 G+ {* r& Y* E: k
  1907. STA <Data_H
    : r8 u+ }) k) L8 S) f( F7 l5 }9 L

  1908.   ?# P9 D0 ^- X' ~9 ^; f
  1909. LDY #$008 Q9 V" \1 B, k5 A0 K2 W. z/ e% ?& |
  1910. LDA [Data_L],Y
    + w  |# o0 m- o2 s
  1911. STA PPU_Addr,X
    " {* J3 r* v6 J. ^, e: l
  1912. INX  A' z/ @9 k. I1 k# ]
  1913. Clear_Item_Text_End( \* e% B4 B# L+ E2 G& v
  1914. STX PPU_Cur
    & e! U0 S1 {+ t* X# C+ n
  1915. RTS3 j, D# ^& p5 c1 J

  1916. - i" D* @- ^' p- u2 T
  1917. ;==================================================
    - p9 D$ f4 X8 Z+ ^% w6 y
  1918. Show_Item_Text;显示页项目$ T' s8 G+ l/ H4 i& U- ^" J
  1919. LDX PPU_Cur
    # k  o- x* X9 z! c- M1 c0 Q
  1920. LDA #PPU_MODE_CNT_LINE- h# `% h  Z5 C1 Y  W
  1921. STA PPU_Addr,X
    6 F$ H/ u' i7 \* Z  H; ~4 g: e
  1922. INX# f; M9 B& \# t6 g
  1923. LDA Page_Cur/ b  T0 l' g, e& a
  1924. SEC
    " `$ Q2 q! `! |: @, T
  1925. SBC <Page_Cur_Index1 h& f! }1 Z1 I6 a7 A
  1926. ASL A
    + I4 H+ K" ~/ f# Y) Z+ O: `
  1927. TAY
    / C( {7 x& d) n
  1928. LDA Item_Pos_Data,Y
    9 j' s7 B! ~* y* t
  1929. PHA
    + n: j* _- [7 Q, _, Y. i. Y$ z
  1930. INY
    . o! c! r; h1 x
  1931. LDA Item_Pos_Data,Y/ y7 |* |# U  U- P
  1932. STA PPU_Addr,X
    1 z4 k# i' z' l/ h, E
  1933. INX& t! `! G6 B. m( e. r
  1934. PLA. u4 v) Z& o3 F+ M/ C
  1935. STA PPU_Addr,X% F  c' e8 B/ N6 P
  1936. INX- T7 M  y% v9 V& y; c" ~

  1937. . U0 c; c: H' X0 Y' I' g1 d
  1938. LDA Page_Cur
    * c8 y- }# g( {0 C; H
  1939. ASL A
    % w/ k& o5 u# I+ J' x
  1940. TAY
    6 ~. K- ]+ j$ U. B' ?
  1941. LDA Music_Collection_Name,Y+ a$ p" x2 e3 V1 G. n6 n, g9 J
  1942. STA <Data_L
    , s9 O! l8 Y" T% i8 g$ |
  1943. INY- E# y& U: s! n, M5 O' r2 B
  1944. LDA Music_Collection_Name,Y
    - R! |2 \9 ]' s  z' A8 c
  1945. STA <Data_H
    1 F# M/ \3 d$ U7 C
  1946. 7 Z0 D7 U- p! H$ T7 M  p$ f
  1947. LDY #$00% B! B3 T9 W3 o4 F8 b
  1948. LDA [Data_L],Y+ L, }; C6 P; L* \9 T7 y* K, O
  1949. STA PPU_Addr,X
    , R* U/ B# J$ l  `9 E' v5 |
  1950. STA Data_Cnt
    ' p) D' ]! B) U' r
  1951. INX
    / e, l# |- M" x' D/ U6 q0 R

  1952. % ?1 B% j" q5 l. H% i
  1953. INY
    + U; p: m0 B2 h1 ?' {) ~( j
  1954. Show_Item_Text_Write
    % R# ^* P. h+ s! t2 I( K" O
  1955. LDA [Data_L],Y' a( s- r- P% O1 c& u
  1956. STA PPU_Addr,X& @5 `  ~) o5 U* N* p/ v7 o! R1 ~( U
  1957. INY
      t  I& O5 `4 l. B: W
  1958. INX5 K' j$ M1 [1 }0 y- e; q3 r  J
  1959. DEC Data_Cnt1 m  d& M3 \8 Y/ `+ E
  1960. BNE Show_Item_Text_Write
    * L% ]5 }& k! r) o6 F& T- P

  1961. + s# W8 e1 N; x9 P
  1962. Show_Item_Text_End: n; I8 W$ a3 Y! [/ W
  1963. STX PPU_Cur$ b7 _. m: v! ~1 K" \
  1964. RTS
    . W/ r3 N" v& S$ C
  1965. " Q3 r0 l$ a1 m* ]# |$ J) a" h( b
  1966. ;==================================================# Y: X7 O% q* f' W* g
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量4 _  |' k* R% j2 [  \
  1968. STA <Data_Buf
    - _: e; j( }. n3 K: u, ?" q+ A
  1969. LDA #$00+ f6 @7 k+ L) a. p+ w2 w* G
  1970. Get_Page_Index_Calc
    / N2 c" ?% z2 m) @0 i
  1971. CLC5 g- V7 i& o1 t
  1972. ADC #PAGE_SIZE
    / Z/ X- V' D/ A% m, a7 L4 e
  1973. CMP <Data_Buf2 F$ B* `2 h# b" h
  1974. BCC Get_Page_Index_Calc
    " f) X& ~; v' I7 k# O
  1975. BEQ Get_Page_Index_Calc_End8 @- }+ w& l5 F
  1976. SEC: @) c; X! w; P7 l$ R' A  ?
  1977. SBC #PAGE_SIZE
    ! G5 E% u/ L  l
  1978. Get_Page_Index_Calc_End
    ) J& f& L& @) F* v  G
  1979. STA <Data_Buf" B& D6 s) c0 }6 D& g  r+ m" m
  1980. Get_Page_Index_Cnt3 @% N& P6 o# p& p/ E
  1981. LDA #PAGE_SIZE
    & ]) e0 _0 N% ^# Z* e
  1982. STA Data_Cnt  h% Y$ I0 }& M* X8 n+ k$ k/ _$ r" T& `' W
  1983. 8 p! C9 Y5 F$ n" m1 O( I6 b! u
  1984. LDA <Data_Buf. f; J% g. r5 n0 _- Q( t+ A6 _
  1985. CLC
    7 N! i& T5 s( h  C- n2 W2 c0 c
  1986. ADC #PAGE_SIZE2 A$ j$ Q- l8 G$ F) c# d
  1987. CMP #ITEM_MAX_SIZE5 q" r1 ?1 m  c3 g7 J
  1988. BCC Get_Page_Index_Cnt_End
    % B( l- d( D  U) Z- M

  1989. 3 \3 L1 j: j' @4 R6 a" ?' N
  1990. LDA #ITEM_MAX_SIZE! E! K! v: b; Y) H" _9 g, j
  1991. SEC8 r* _  e* I" S1 Y* d* r: G
  1992. SBC <Data_Buf
    & T$ c) k- j+ ]; F
  1993. STA <Data_Cnt# t* ]$ i8 ^8 F: D' z
  1994. 8 d$ G) E2 B4 M( p/ r. f
  1995. Get_Page_Index_Cnt_End
    7 q- U- G. G  `" n' N
  1996. RTS4 Q3 [( h4 R7 G9 c6 g5 H

  1997. : ]! E" i( e# S% }
  1998. ;==================================================
    7 P8 M% ~- Y& @$ G; f2 i9 w
  1999. Get_Last_Page_Start_Index
    - e; Y2 g/ L2 ~! U; e! s4 x
  2000. LDA <Music_Item_Last% M: p& w7 |6 K; [
  2001. JSR Get_Page_Start_Index' l  k! v8 b) v2 S
  2002. LDA Data_Buf7 }4 E1 [1 @* G" F, {! G8 U
  2003. STA Page_Last
    & z1 x/ ]8 P7 D6 l& k# [
  2004. STA Page_Last_Index5 h* s& F; s( e
  2005. LDA Data_Cnt' L5 F! P& W0 Y2 {' m. E( R
  2006. STA Page_Last_Cnt$ ~4 D; g; v4 M! ~
  2007. RTS
    1 s* o& C: T% c# \  O' Q

  2008. : ^5 M3 _  h+ ^$ j) I6 U
  2009. ;==================================================
    5 W6 m; j' ^; E; D6 w
  2010. Get_Cur_Page_Start_Index9 ~" R3 ~/ y9 d5 H! B
  2011. LDA <Music_Item_Cur3 ~3 ]; Z) ?; _4 }- u  ^
  2012. JSR Get_Page_Start_Index
    # H( u. c3 d% U  K
  2013. LDA Data_Buf0 t$ Z6 J5 l. Y! }4 l  `7 [8 L
  2014. STA Page_Cur9 [9 ^4 J2 \2 N7 ?/ d
  2015. STA Page_Cur_Index* `+ i) n% {/ r! D
  2016. LDA Data_Cnt
    / D/ f; ~* N5 _- T6 @" H
  2017. STA Page_Cur_Cnt
    # M& J! O3 e- L8 T7 K  x
  2018. RTS
    6 [( c+ @+ |% x) h
  2019. # S# G" j- H! G9 s( J" c4 I* h7 t
  2020. ;==================================================& p. O( c) @& `
  2021. Show_Page_Text;显示页文本
    # Z: g3 _  L- ?/ p; ^, N, f
  2022. LDA <Text_Disable_Flag
    ( Y# l) D9 Y; N( i
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    ; w6 `. m* u3 B9 o3 C$ `
  2024. STA <Text_Disable_Flag
    ' O& t& \/ }% v- x2 l& @- N
  2025. ! g& c4 U+ z6 R/ n: z
  2026. JSR Get_Last_Page_Start_Index% U% }2 X, i% }1 I2 [$ w
  2027. JSR Get_Cur_Page_Start_Index
    : s7 k2 b: {! v2 `& @2 x" }
  2028. , m& V6 \1 q4 Y" ~3 x! I
  2029. Show_Page_Text_Set
    + m* d  q, |( n6 L& p
  2030. ! W5 N5 [0 d" c  o- h3 K
  2031. Clear_Page_Last_Item;清理上一页
    3 ^4 f1 l& u2 e
  2032. LDA Page_Last_Cnt
    1 i) @/ o. r7 P' S' Z; _# W
  2033. BEQ Clear_Page_Last_Item_End8 N3 t1 S) ~. [: H4 n6 i
  2034. JSR Clear_Item_Text6 F' n/ q$ S0 v5 b' ^
  2035. INC Page_Last8 N4 g8 |2 g: X( `4 M
  2036. DEC Page_Last_Cnt+ o3 F9 V1 T+ u+ v9 r3 y4 u
  2037. Clear_Page_Last_Item_End7 O( m* q( A  V6 ]9 G+ l

  2038. 1 j7 E% |: e  ~  Q
  2039. Show_Page_Cur_Item;显示当前页
    4 `; h% w- W% ]( K3 `9 P' J
  2040. LDA Page_Cur_Cnt1 i2 q) a( \! U4 j* f, q' \
  2041. BEQ Show_Page_Cur_Item_End
    ) @7 _) U7 M+ L1 X0 _4 |
  2042. JSR Show_Item_Text* ^0 s9 {+ ~+ v4 T/ y# Z
  2043. INC Page_Cur
    # D9 X  C9 `6 J4 e$ m, r2 K  z  t
  2044. DEC Page_Cur_Cnt
      ~* U8 p3 e9 m0 ~( I
  2045. Show_Page_Cur_Item_End+ o' v2 ]$ c. z

  2046. " {, A1 x, Q% B4 r: k+ |5 X) k
  2047. INC <Time_Wait_Cnt! L8 N  B  ?9 L+ Q/ q$ f% X
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作6 G8 D. g& q% U8 V
  2049. LDA <Time_Wait_Cnt
    2 n8 i6 h6 z# b, K. W1 t1 z
  2050. BNE Show_Page_Text_Set_Wait
    0 f! n, c1 a/ m+ r) f  O( h* v
  2051. 6 j6 s$ h' h+ j% a/ J( G% n
  2052. LDA Page_Last_Cnt
    + z% K0 O9 M. F
  2053. ORA Page_Cur_Cnt, a1 n7 }9 o5 m! L$ t1 \" @0 f
  2054. BNE Show_Page_Text_Set
    ' N* [. Z* ?# z
  2055. LDA <Text_Disable_Flag" t% x3 o& x& C2 Q* ~& `6 N4 u" Q
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    0 h+ g" o5 e& N- q, a% m
  2057. STA <Text_Disable_Flag3 H/ H3 R4 n2 Y& V/ m: S
  2058. RTS. }/ Y1 A9 s2 v, y5 {! o
  2059. $ z  G9 \+ R0 `' u; g3 X) l0 G, k
  2060. ;==================================================
    , [3 J  x7 Y: S% w' ?0 ]0 M
  2061. Last_Item;上一项
    3 z7 }+ }4 N# G4 ~/ Q( P
  2062. JSR Clear_Last_Track_Name6 {* W- O% T5 S" F$ b* s
  2063. JSR Disable_Text_Draw# S( @! j4 C7 O$ w7 r1 c1 o

  2064. & d# r2 U0 N% i6 S5 q
  2065. LDA <Music_Item_Cur
    & n+ Z4 J& U/ p. S% d
  2066. STA <Music_Item_Last
    & T$ C' z4 a9 F( ]3 S

  2067.   \! ]9 ]2 G5 P( J6 n+ |1 l5 m) d
  2068. JSR Get_Last_Page_Start_Index
    8 M& ?: K& k+ Q+ a
  2069. : T% E1 u& R3 \( Q. u- g/ T
  2070. LDA #$00
    6 F* ~# ^; \( ?+ @0 m+ a
  2071. STA Data_Buf& v, U4 o7 j- c; V! r
  2072. 0 B- [; k3 V8 B' ?+ L5 b9 u
  2073. LDA <Page_Last
    + [% e/ E5 F9 Z" W; m: \0 t
  2074. CMP <Music_Item_Cur, W, Q+ r' B" M9 \
  2075. BNE Last_Item_Begin5 C1 m2 I/ j: }* c* E$ p1 U
  2076. " k& F! j4 K+ u4 z& b2 y
  2077. LDA #$01
    . c5 `9 L2 v: k' A
  2078. STA Data_Buf3 H1 W$ R1 o: x$ J$ n
  2079. Last_Item_Begin0 O5 \, l6 ~4 b/ K4 ^
  2080. LDA <Music_Item_Cur& q/ o, M6 T; f% i$ ^" J/ P! u
  2081. BNE Last_Item_Set
    - X4 r$ L+ \/ w+ ]( t* x
  2082. LDA #ITEM_MAX_INDEX + 1: B2 V) ^" ~4 ~+ @) s
  2083. STA <Music_Item_Cur
    3 u$ `/ |9 i% P% N$ }( |+ f! P
  2084.   {+ k- i4 G+ J  D( @9 Z8 e) x! c: r
  2085. Last_Item_Set. t' u, I+ @. j# ?7 H8 c
  2086. DEC <Music_Item_Cur' o" N) l4 y, g1 E. D7 n
  2087. LDA <Music_Item_Cur
    # ]) l0 u" {! D6 f& d0 d
  2088. JSR Reset_Current_Music3 p' o& C  r9 \

  2089. 3 Q; W7 \: `& ^6 o4 K
  2090. Last_Item_Play
    6 M, q/ y- h* w! a
  2091. LDA Data_Buf
    0 P! w7 H' E+ R& m
  2092. BEQ Last_Item_End- x' s8 Z) |6 ^' `
  2093. JSR Show_Page_Text
    : G0 g. C% u$ y& b) M- q
  2094. Last_Item_End
    1 x# T$ S$ t) o" {. Z5 R
  2095. RTS
    ' g0 D; v$ g$ V9 _
  2096. ) s4 H+ r+ h) _& \5 q  _
  2097. ;==================================================
    9 m: Q' _) Z8 H) V6 W
  2098. Next_Item;下一项7 k, e" d0 P0 j$ F& k
  2099. JSR Clear_Last_Track_Name
    ; v, x8 H* J( ^4 V% }7 {
  2100. JSR Disable_Text_Draw
    8 @' `- [$ U6 j1 W

  2101. 8 J$ J/ C- e8 h
  2102. LDA <Music_Item_Cur
    % `2 n3 b; v& m. B% [
  2103. STA <Music_Item_Last& ?( B# E: G+ l% x9 b

  2104. : B3 R; |& R! k- p% e3 b$ C" p$ r
  2105. JSR Get_Last_Page_Start_Index1 E) y5 a3 W8 \
  2106. * d0 U$ I, _7 s8 L" `. k) x
  2107. LDA #$00' E& Q( L, B3 q6 ~! ~7 T
  2108. STA Data_Buf
      w- u6 {' @/ M  M* m  k' s

  2109. ' v$ x# z' f+ |/ y& p6 E, y( f/ i4 I
  2110. LDA <Page_Last' Q; ]+ Y- S4 y
  2111. CLC
    - E5 X% W1 w8 R2 ^" L. c
  2112. ADC <Page_Last_Cnt
    3 f. g4 o) }, Y! f+ ~. R- i& U
  2113. SEC
    0 S! c. m2 f( i: E8 j
  2114. SBC #$01
    ' m8 _6 T5 f# t0 F
  2115. CMP <Music_Item_Cur" a# q+ H$ B" ]- h
  2116. BNE Next_Item_Begin7 A7 ]7 _7 b$ P. K/ K# D( b

  2117. - m0 @* U( G6 R- j% ?, C
  2118. LDA #$01. \( r  c8 V; p$ [/ w" K
  2119. STA Data_Buf
    & V6 L. F- s$ S8 J* c: c
  2120. Next_Item_Begin
      Y0 {3 \( [# }" ]  Q* I
  2121. LDA <Music_Item_Cur
    ; V9 B1 ]; ^/ ]2 b: p. p: ~, |( t; n
  2122. CMP #ITEM_MAX_INDEX) f6 l  _0 e# J3 V/ e
  2123. BCC Next_Item_Set
    ( i" I9 t  b; G( w+ ^3 @1 k/ [
  2124. LDA #$FF, c3 q, @6 Z  k6 L6 H; ~
  2125. STA <Music_Item_Cur
    $ r6 O* e9 ]5 F( B
  2126. Next_Item_Set) j3 [# U9 u0 E2 g9 `
  2127. INC <Music_Item_Cur
    4 T7 [9 Q9 g, d2 o: I
  2128. LDA <Music_Item_Cur
    - E6 ~$ z* z" {8 J
  2129. LDA <Music_Item_Cur
    0 a" n, }% d! i' t
  2130. JSR Reset_Current_Music& J3 D! L0 ]6 `. C& j9 l' v# G  `3 {
  2131. Next_Item_Play
    / j/ ~" S1 q; j# Y" t$ h- e
  2132. LDA Data_Buf
    # X& I8 R* R1 Y% H3 v% N
  2133. BEQ Next_Item_End
    5 x2 Q5 f( T6 E& U$ ~  a
  2134. JSR Show_Page_Text
    : u4 Y9 f# Q. n7 E! D
  2135. Next_Item_End
    . Y+ m: j1 ]4 D+ e% g
  2136. RTS
    * }4 z3 p+ ?6 [; l2 x

  2137. + H0 r* Y4 a% o- W/ u6 P4 c0 g
  2138. ;==================================================6 R, R* A" O1 Z
  2139. Last_Page;上一页5 j' t( u7 I7 x; |  `
  2140. RTS
    , J4 \9 \+ ?9 `, F$ Z# a

  2141. - m/ S" ^4 g1 p4 U4 q# |) m' `9 }
  2142. ;==================================================/ Z2 P  ?1 X& h0 [* d8 G
  2143. Next_Page;下一页: ]9 [* L2 A+ Y- {: t
  2144. LDA #PAGE_MAX_INDEX7 D! \$ Y1 ^; H' _6 g; q0 B
  2145. CMP #$01( [5 J, s' P7 e! i1 O0 @  p! \
  2146. BEQ Next_Page_End3 x( p/ c+ Z$ l& ]) b
  2147. $ f' R& k5 k, w. y
  2148. LDA <Music_Item_Cur  i: t4 R0 p5 E5 [( c8 N
  2149. STA <Music_Item_Last) _$ l6 }# y  U

  2150. : e: b1 I) n1 x( O8 W% c( f5 o
  2151. JSR Get_Last_Page_Start_Index3 {& m5 v5 c) `5 V
  2152. : E# @3 o* U% \* s
  2153. LDA <Page_Last_Index
    4 v( f6 U3 Y& L$ h
  2154. CMP #PAGE_MAX_INDEX
    ! O5 Z# Y7 _: x1 I
  2155. BCS Next_Page_In_End_Page
    / x& C, e! q  W: j6 @

  2156. ; w- m, I$ `9 q8 w" z. [  b4 [5 s
  2157. Next_Page_Not_End_Page;不是在最后一页
    " z9 P, F4 j5 k0 o7 x' w2 j
  2158. LDA <Music_Item_Cur2 l6 c9 V1 F. }" q% T6 d0 a
  2159. CLC
    * R; N, `! a. ]- U& h
  2160. ADC #PAGE_SIZE9 E1 w: e% v( E+ r
  2161. CMP #ITEM_MAX_SIZE
    $ V& l' \- k: c% r
  2162. BCC Next_Page_Not_End_Page_Less( p7 T3 ]7 F1 \2 B. J( _
  2163. LDA <Music_Item_Cur
    , [1 f& W9 c; b, `0 [. X
  2164. SEC
    # w! Z7 S3 i$ g9 H! J3 M# g) ?
  2165. SBC <Page_Last_Index3 ?3 ]2 u& Z* N9 h7 m# H
  2166. CLC
    ' P6 u; ?5 f; [' R6 t0 ^( T: W
  2167. ADC #PAGE_MAX_INDEX0 u7 z# X# I% |* S& x+ z0 m5 j
  2168. CMP #ITEM_MAX_SIZE
    . C7 h. }! g2 u) V5 x. h& f
  2169. BCC Next_Page_Not_End_Page_Less" n% j6 Q! Q$ F, {/ [& B3 g+ u
  2170. LDA #ITEM_MAX_INDEX
    # ^$ C! ^& g+ O% B+ p/ G
  2171. Next_Page_Not_End_Page_Less
    ) ?# P6 I' V9 @
  2172. STA <Music_Item_Cur1 i8 \4 S+ W+ l% E/ R
  2173. JMP Next_Page_Reset: |/ B+ j1 Y4 A' U  T* @
  2174. - l0 w+ h# B1 H7 B
  2175. Next_Page_In_End_Page;在最后一页
    1 }/ y4 \# l3 |. k+ P6 w3 X/ X
  2176. LDA <Music_Item_Cur# m4 q. I: e3 H( U) L4 s( u( o
  2177. SEC
    ' r% [: ^5 ?$ h+ |$ p
  2178. SBC <Page_Last_Index& u) ^, J' `. d1 ?& n, @4 I
  2179. STA <Music_Item_Cur
    ! n' J8 S8 n( D/ j4 P2 E. A
  2180. 1 B6 `: x$ ~, c' Z, w
  2181. Next_Page_Reset1 n! p/ N9 P2 q. f. E; A- N; S
  2182. LDA <Music_Item_Cur
    1 ]' O$ K+ b0 D) F
  2183. JSR Reset_Current_Music
    7 C/ B: \' J& w  \" R2 c
  2184. JSR Show_Page_Text. g7 }$ W: d# R3 Q6 O
  2185. Next_Page_End
    $ `$ t( i# g7 c. T% l, E0 w; |3 x5 x: {
  2186. RTS
    ' c; W5 A1 U1 y6 O4 l
  2187. 7 a- n$ e  Q3 P0 i9 G, k
  2188. ;==================================================8 @  Z( B  y* P% |1 ?* r9 ]- N
  2189. Disable_Text_Draw;禁用音乐条刷新. R3 j  \5 i( g6 [5 W/ N& v
  2190. LDA <Text_Disable_Flag
    - ~( j* Z+ A! F. E# i- A3 R; s5 V
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME4 @2 d1 O0 s& Z
  2192. STA <Text_Disable_Flag% A' l; r* ?( @& M2 o* C  i9 c
  2193. RTS& i+ ^3 P. c( P. I0 P

  2194. * \2 c# K2 @9 z# \
  2195. ;==================================================2 @3 w# E5 h: a- g6 D; g
  2196. Clear_Last_Track_Name;清除上次曲目名& w7 R" _2 q% B. k6 y1 D* k
  2197. LDX <Music_Item_Cur4 B5 V/ l+ K( a' w* i" q/ S" a' l) M
  2198. LDA <Music_Cur,X0 j) E) K  }/ }/ b$ L0 _: ]
  2199. .IF Track_Name_Pos# n1 N% o& ^( a' W' a% n3 |( Y: u
  2200. JSR Clear_Track_Info
    ! Y  O6 i" |* c
  2201. .ENDIF
    1 j! k5 X( b' h% x8 C
  2202. RTS
    - X8 k4 g) l% f- d9 N' ?
  2203. $ b2 k$ V, p, b+ d  f! k
  2204. ;==================================================
    ) H/ \, G4 e) i8 r! U
  2205. Reset_Current_Music;重设当前曲目
    & P9 X' m  w# _& H2 B5 W
  2206. 5 Y  }0 l  o, [; r- H3 I! L
  2207. ;写入当前总曲目
    + P8 x  \( n( G7 W4 ?- \
  2208. JSR Set_Sound_Total
    0 v% A2 U, @, ~$ @+ @' s
  2209. LDX <Music_Item_Cur
    ' K! r$ m- y8 Y( e

  2210. 4 I, O: w$ b) W
  2211. LDA #$00% e3 K( S) t/ B. w% W
  2212. STA <Music_Last
    " h* s$ {  M3 q! I6 d# o/ k6 U
  2213. " [( ], Q5 J- n1 R( t
  2214. JSR Sound_Reset_Proc' G$ F. w$ I, R  _% N2 l
  2215. JSR Music_Show1 A2 Z; @0 K7 j5 ~
  2216. RTS* E. `6 v/ {/ {6 y% d* [- ^% f

  2217. % _+ [8 [1 A  ]4 @: L
  2218. ;==================================================0 |# u5 D2 A( B8 o+ y
  2219. Music_Song_Stop;音乐停止# C. \( Y% |5 @# e4 j( x; {
  2220. LDA #$01' C+ s5 i/ W! [# `6 a
  2221. STA <Music_Stop_State
    $ x% ^$ O9 |0 S2 g* i0 u$ Z( `
  2222. JSR Music_Bar_ReSet
    * q9 S$ A8 ~+ E% W6 M% \- z
  2223. JSR Time_ReSet
    ; P- l8 e" g3 R0 F3 i' c3 K
  2224. JSR Sound_Data_Clear! T# S# S: C: k4 Q( k- _  K1 l
  2225. JSR Music_State_Show
    $ l. a9 P& R7 x8 X0 _9 F
  2226. RTS
    9 D  t: H" `, Y
  2227. , l. P/ o. r! ~  S8 o9 R( `" |
  2228. ;==================================================
    ! _: M' q( H' g9 C; [5 }0 Q
  2229. Music_Song_Play;音乐播放
    ) Y% L$ Y) p# E
  2230. LDA #$00
    2 ~. H7 o: [* T0 G$ O9 M
  2231. STA <Music_Stop_State
    9 Y- A. r2 i7 e! M% c
  2232. LDX <Music_Item_Cur+ e( ]! D+ C, n- ^
  2233. LDA <Music_Cur,X
    2 Q5 u; m* u' a2 j; V4 i1 D
  2234. JSR Sound_Init_Proc
    " c2 ?/ E6 Y3 t
  2235. RTS
    ( c% z# j% N" ~+ g( H/ @
  2236. % C8 [! v* v. v1 T. T% e+ d# u7 p
  2237. ;==================================================
    ! j) g+ `( S  y: Y6 n
  2238. Music_Song_Last_10;上10曲6 E! p. @2 w! l) Z
  2239. JSR Clear_Last_Track_Name. l8 K" B# X9 V0 j, b
  2240. JSR Disable_Text_Draw: M6 j3 l" c8 E
  2241. LDX <Music_Item_Cur  u5 p- ]; Y% v6 A! j+ z
  2242. JSR Set_Sound_Total
    5 N; `0 l  `4 H! K8 y
  2243. LDA <Music_Cur,X
    , E: ]' \& c! R6 Z: U
  2244. SEC
    6 n$ ]$ E0 a/ E4 f6 J6 T# S: f0 J1 O
  2245. SBC #10
    : q7 `& Z, p$ ]! |
  2246. BCS Music_Song_Last_10_Set4 b( u8 G7 {9 d2 C
  2247. LDA #$00
    . C" Q$ a+ h: Y
  2248. Music_Song_Last_10_Set
    * K/ n/ k& X, Q
  2249. STA <Music_Cur,X
    - k; s+ ~! _4 H4 B6 U0 d
  2250. JSR Sound_Reset_Proc
    / T+ @6 d, j8 ^! M  h4 C
  2251. JSR Music_Show; D. G/ c- l- U9 [
  2252. Music_Song_Last_10_End
    ) I4 H% f1 N4 W; f
  2253. RTS# _* _) |, A! U' P  I1 M
  2254. 9 g8 u5 K: [0 O" p8 Z( l
  2255. ;==================================================
    0 o" ~% G1 y# }& Q) R. p. w" b# z
  2256. Music_Song_Next_10;下10曲& T' C. l% t0 g! e8 z* W
  2257. JSR Clear_Last_Track_Name
    . v+ B* @/ |& L, \9 E2 u5 V
  2258. JSR Disable_Text_Draw
    . x" W+ m6 x$ _' m
  2259. LDX <Music_Item_Cur3 N. a/ j: A; N& W- d
  2260. JSR Set_Sound_Total
    3 ]3 d5 I- Q  p0 o
  2261. LDA <Music_Cur,X1 H: o8 b( b9 b# h: ]
  2262. CLC
    1 D2 S7 K4 l. Z) E
  2263. ADC #104 q6 H" ~  U5 y2 Y$ V' o
  2264. CMP Music_Total2 t/ T  s6 `0 ~6 v- B$ N, F  w7 p
  2265. BCC Music_Song_Next_10_Set
    + Y0 k6 k  z) g1 U, o6 M6 D
  2266. LDA Music_Total! J! _" f' ^  H
  2267. Music_Song_Next_10_Set) L6 @) T. m& |) A* K# \
  2268. STA <Music_Cur,X& {8 q. X7 E; O0 ^8 I
  2269. JSR Sound_Reset_Proc
    1 d! G% q1 p5 _7 |
  2270. JSR Music_Show# l& F  Y9 R( p, Q4 A
  2271. Music_Song_Next_10_End
    ; d+ z: c/ `9 v5 I# A; S$ Y
  2272. RTS
    ) H: Y2 G$ f8 v; R2 p6 s2 n" N! i
  2273. + f: ?4 k8 _% r7 G& ~' d4 R
  2274. ;==================================================% n- _) W7 F0 U
  2275. Music_Song_Last;上一曲. [: G* D1 N, @* Z7 }: D- s$ B
  2276. JSR Clear_Last_Track_Name
    5 k$ P# g( G) k+ ^( k4 z
  2277. JSR Disable_Text_Draw/ z. R3 U! f0 V' x2 R: I) Y  V
  2278. LDX <Music_Item_Cur* f0 P; @9 d7 g. P& [
  2279. JSR Set_Sound_Total
      |0 o2 X" e& Q  f7 y- Z4 R
  2280. LDA <Music_Cur,X# r% _: G/ J8 Q1 D% s- F5 Y/ l
  2281. BEQ Music_Song_Last_Set
    - k' S# S8 ^# C2 }$ O
  2282. DEC <Music_Cur,X
    ) W% l' R1 w  K9 o& V% i: @/ l: p
  2283. Music_Song_Last_Set
    6 X6 H, o" ^9 S7 Z; i' R4 U4 }
  2284. JSR Sound_Reset_Proc
    9 b) z) a( \$ H; s
  2285. JSR Music_Show
    8 ^8 Y( ^5 I5 H' j6 R
  2286. Music_Song_Last_End
    + r5 F3 ?8 z7 ^7 N7 N) r1 a  y
  2287. RTS
    ) `6 v# ~) u6 P  c, I6 U
  2288. ; y% K7 ], Y) P/ P& F, n# g
  2289. ;==================================================  @# i( b5 i) b' W" A- F9 i
  2290. Music_Song_Next;下一曲/ T( I8 Y5 n: G0 O0 L4 H
  2291. JSR Clear_Last_Track_Name
    9 b: F( Y# w! P5 n
  2292. JSR Disable_Text_Draw
    9 T4 M3 p2 C6 W1 V( o/ Q9 `% g
  2293. LDX <Music_Item_Cur
    1 Q9 ~# s5 c& V; ]
  2294. JSR Set_Sound_Total
    # ~4 f7 Q6 e( H/ N4 Y& {0 S: j
  2295. LDA <Music_Cur,X$ z2 b. j9 d, J6 K
  2296. CMP Music_Total" D, Q7 Z" c$ U" y$ h" W
  2297. BCS Music_Song_Next_Set; m! O# Y$ M, ?( ]  ]8 @3 j
  2298. INC <Music_Cur,X  u: V# c' f4 b, R( }; I
  2299. Music_Song_Next_Set/ f" q* k/ v1 s: F
  2300. JSR Sound_Reset_Proc! u* ~6 R, J- W! q
  2301. JSR Music_Show4 C* D% [2 _4 J, |
  2302. Music_Song_Next_End9 ?# h* c/ W( t  n; w/ i
  2303. RTS# P7 V2 c" g$ l; b. _9 D* X
  2304. 7 D7 h- ^- A( H. ?, }2 I/ Z
  2305. ;==================================================
      y, t6 n4 D- o0 \6 S+ V( F
  2306. Change_Select_Item;改变当前选择项
    & P* @8 c; \) e+ T  O3 I1 S
  2307. ;--------------------------------------------------; h4 t6 v& d( d) X
  2308. Change_Select_Stop_Play_Item;停止/播放3 a4 j; Z9 j4 h6 f: V4 i9 G
  2309. LDA <Key_Once2 ?% M0 X7 N2 J/ X
  2310. CMP #$10  }9 Q- h6 B' @* G
  2311. BNE Change_Select_Last_Item
    + ]* N  o" S- R% W/ S: v# [. X
  2312. LDA <Music_Stop_State6 n" _; k4 Y  W4 a: ?# k+ {. o* w
  2313. BNE Change_Select_Play
    ; y4 U7 Y/ W0 n
  2314. JSR Music_Song_Stop
    0 O# y/ u: i) x
  2315. LDA <Music_Stop_State
    4 `9 `3 k2 Y" |- W  ?7 @6 p: `) c
  2316. RTS' t! _% e+ P8 Y" }1 K
  2317. 3 o9 r2 k' C" ~, O* T- H$ y" C. g# J
  2318. Change_Select_Play  ]8 ?( u* @% i# _
  2319. JSR Music_Song_Play! Z4 [0 n7 s5 O6 g
  2320. RTS
    ( o* g7 f3 P5 X9 v* w
  2321. : Y; B, f! v! C0 k' j: g' G# {$ h+ C- U
  2322. ;--------------------------------------------------' W. q* A/ G8 f4 O2 X5 p, B
  2323. Change_Select_Last_Item;上一个专辑
    8 j. W- c( v6 Z, _+ q3 W) l/ k; Q
  2324. LDA <Text_Disable_Flag) G% B# ~/ n- V' y- J9 c
  2325. AND #TEXT_DISABLE_ITEM$ {  b) B3 P  u  u& T* _# v
  2326. BNE Change_Select_Item_End* t' u& F5 _! r8 r9 k2 K
  2327. LDA <Key_Once
    ; F1 Y2 Q- M5 i/ X. A3 l
  2328. CMP #$08' m, D4 I$ {, V" e" D. l0 s) u
  2329. BNE Change_Select_Next_Item
    1 |  w: V" u! _, o! y2 Z2 l# @
  2330. JSR Last_Item5 A1 Q$ S; W" R4 H
  2331. ;--------------------------------------------------7 h! y9 D! u6 X) N  r' U
  2332. Change_Select_Next_Item;下一个专辑6 j6 s) H/ D$ L- r. F
  2333. LDA <Key_Once; m7 J2 O2 S! y/ x) K* s7 z2 F
  2334. CMP #$04) ^  ?! S; P8 ^- C) n# M$ k6 h
  2335. BNE Change_Select_Last_10
      }, w4 I8 p( s' y! ~- B  M" |% v" v
  2336. JSR Next_Item, \5 t& S6 l+ n- N! B% ]1 v
  2337. LDA <Music_Item_Cur
    ! S6 q' n- F2 y$ z% [5 I( ]" }" r
  2338. JSR Get_Page_Start_Index1 z' u) @! C" o  I$ Z% w
  2339. ;--------------------------------------------------
    " G; h' H0 ~% a- g6 u. L
  2340. Change_Select_Last_10;前10曲
    ' _' o# f8 t& B" ^
  2341. LDA <Key_Once+ o, m/ K- v- E, i( t8 Z
  2342. CMP #$40$ Z/ r. O5 R) x/ r
  2343. BNE Change_Select_Next_10
    9 S$ Z1 F% i6 [. d5 A
  2344. JSR Music_Song_Last_104 Z  w. r  v: ]* o' }+ f# J! p& N$ K
  2345. ;--------------------------------------------------3 S* ]& @) ~5 I1 O/ ^  h
  2346. Change_Select_Next_10;后10曲
    9 x: G9 [* J1 `/ D1 ^: K! K
  2347. LDA <Key_Once, J5 j# {; y/ L7 p) G! j
  2348. CMP #$80/ D, x5 a  j2 u4 G0 Z' A
  2349. BNE Change_Select_Last
    / [: x! b( r' h$ q$ r( o9 `( N- s
  2350. JSR Music_Song_Next_10
    5 ~6 T" B; [' ?+ Q+ w5 o1 q
  2351. ;--------------------------------------------------1 r0 @/ y$ x3 u; v& ~% `
  2352. Change_Select_Last;上一曲' T3 O# S5 V* Q
  2353. LDA <Key_Once
    " ^5 W  V" o* T: K- W6 A
  2354. CMP #$02
    / n* n. ?! m5 U" ^! B( @) `
  2355. BNE Change_Select_Next  s% G4 Y4 @2 ~  [( f- q
  2356. JSR Music_Song_Last& _* \0 J) m9 b/ N3 h$ t
  2357. ;--------------------------------------------------
    , X6 `% m: o2 {0 K0 ]4 ~9 |
  2358. Change_Select_Next;下一曲. f6 J' Z8 v5 m$ u; X+ H8 T
  2359. LDA <Key_Once4 o( z, N& E5 r7 W" ~3 w
  2360. CMP #$01/ S" m1 {( e$ X/ f5 R4 {  d
  2361. BNE Change_Page_Next5 `2 D/ f6 H7 @  e
  2362. JSR Music_Song_Next
    9 Y# g$ G- @" X$ r% V; Y9 R* w& @
  2363. ;--------------------------------------------------
    0 x/ o1 i  j, h+ ~3 N% L
  2364. Change_Page_Next;下一页
    5 ], z7 ]6 V( w
  2365. LDA <Key_Once9 m& o+ U/ G* g# n
  2366. CMP #$20
    4 W6 S# q, [, D& c
  2367. BNE Change_Select_Item_End% w' O& a* i9 c9 E
  2368. JSR Next_Page! t. {9 M' X( a( J8 V5 A
  2369. ;--------------------------------------------------
    9 {( d" B& @; ^) Z
  2370. Change_Select_Item_End
    3 ]5 E! E! h: p0 Y) u* p, Z
  2371. RTS. k* ?  L+ m* X% W" e3 B" h
  2372. , ~+ w4 c& S; T* P7 B. a
  2373. ;==================================================9 M% g0 d. t9 V. {5 T$ R
  2374. Show_Arrow;显示箭头光标
    $ ?: |9 v' P: f9 C* l
  2375. LDA <Music_Item_Cur
    6 J- g# z! L$ z7 z: l2 x" S
  2376. JSR Get_Page_Start_Index
    3 s* i$ ~* }8 O4 t6 ?% T* z
  2377. LDA #$005 X; |2 D- g$ k9 `; T) w
  2378. STA PPU_OAM_ADDR! f  }- u5 I' N9 ^, }. \% U
  2379. LDA <Music_Item_Cur
    ( m. P1 e( A# U8 @/ L. Y0 s
  2380. SEC
    ' b- b+ J: c. a
  2381. SBC <Data_Buf
    - ]/ o; w# \& b  m0 }! O  N& c
  2382. ASL A- [! X1 n: r) |3 o/ P. J1 U) x
  2383. ASL A, b2 g5 E$ {  O) v" t* J) p( h4 b
  2384. ASL A
    $ Z$ ], H; l: a
  2385. ASL A
    " |& T1 o1 N' O+ y
  2386. CLC9 ~7 d9 {- n0 H4 G& H
  2387. ADC #ARROW_Y_OFFSET
    5 m  I& u/ B7 e! S0 `& R$ R4 ^
  2388. STA OAM_TEMP_ADDR + $00& o9 Q6 H/ r9 F! v( ^6 b
  2389. ;STA PPU_OAM_DATA8 {, P7 q2 }( o! @1 O4 z
  2390. LDA #$1F
    + ~# _& ~% L) {0 p. t8 ~$ a2 H
  2391. STA OAM_TEMP_ADDR + $01
    9 S% X: e: @. E7 z0 j$ Z* X1 R- G
  2392. ;STA PPU_OAM_DATA
    ) J  J9 i- H. e) V
  2393. LDA #$00! _$ G6 |  I2 @; K! y
  2394. STA OAM_TEMP_ADDR + $02
    ; ]8 ?; M, Y; _/ c( U" c  n
  2395. ;STA PPU_OAM_DATA
    ) c* z- L+ {" V& l! p3 P
  2396. LDA #ARROW_X_OFFSET
    1 ]0 `8 c9 f, B
  2397. STA OAM_TEMP_ADDR + $03  V4 p# p! h# X3 o( R
  2398. ;STA PPU_OAM_DATA( z/ b  ~' a  x/ Z4 T9 X
  2399. RTS
    - o7 G3 R" w- F( ~
  2400. & }2 d# ]+ c0 o5 I, X; g
  2401. ;--------------------------------------------------. I) i' L# f* P* u8 U: S
  2402. ;命名表数据4 _9 G" |0 A$ R, ~! ]# }
  2403. Palette_Attributes, P% F" W2 r8 c# h
  2404. .IF SOUND_BAR_SHOW_ENABLE1 n8 ^  o: F6 i+ L
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$556 X8 U' H) _7 ^7 m+ `) ]4 Z
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    3 c8 e6 x2 u' W7 `
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    9 {4 M0 {; X4 b
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    2 y, }- _0 F6 q6 n/ R
  2409. .ELSE
    - y  \; E6 ]& G' ~( O& k  ~% J$ m
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$550 N% w* l) }7 g& C* w3 K
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55) w9 d7 N% p: h/ m* ?- k
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$758 w" q9 P3 J/ |+ f" U1 H4 _3 x
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA, B/ Q( n! m$ D; k. W: J1 N- H
  2414. .ENDIF
    6 N" U+ R3 J9 r$ i# E: ~. O5 W
  2415. 8 ^# X1 X+ O; a4 }
  2416. ;--------------------------------------------------* i# }+ }6 Y. y8 F. a5 Y
  2417. ;调色板数据
    ; f( q& e7 e8 R/ B  F7 i; H6 v
  2418. Palette_Data
    7 z  u" \7 N  K5 X
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    9 S3 w1 a' f  H
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F& o% ^% W2 v6 K, o: W
  2421. * k; H* ~  R4 v! i; h, O5 H( |$ `1 I
  2422. ;--------------------------------------------------
    * y; {( I1 a0 S7 z" G
  2423. Static_Text_Data
    $ I. _: p6 V( r9 Q' \, O7 [3 J9 Z( u
  2424. .WORD Static_Text_Caption_Data" E5 _1 x  g9 T) p+ z$ U
  2425. .WORD Static_Text_Author_Data
    6 ]" K% o, |5 o
  2426. .WORD Static_Text_Date_Data' T" c" k3 P0 G
  2427. Static_Text_Data_End' R: M2 x1 n- H$ i0 |6 b
  2428. / `3 ~8 w+ O9 T$ p; I2 B  I
  2429. ;--------------------------------------------------
    9 v) E$ A8 J$ k( ?, S/ S
  2430. Static_Text_Pos$ ?+ Y+ O  O2 N; T- A3 a
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    # y1 H9 F# ~) G# A( Q
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)7 m+ r( B2 ?2 s4 Y8 O) I" q
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)# ~, Q2 e. [& e6 `" @! O
  2434. Static_Text_Pos_End8 J; E3 X! i/ n$ ?

  2435. ' M6 t1 Y9 t# c5 z# @0 O
  2436. ;--------------------------------------------------9 T& K5 v  J& J
  2437. Music_State_Stop. v" t# g0 e. m' a! s
  2438. .IF SOUND_BAR_SHOW_ENABLE
    7 y9 b" V' H: e9 l1 b
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    2 e. H8 L6 Q1 G* B8 B3 }" @
  2440. ELSE
    # c7 o. J& F- `& t! m2 \
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00, }7 M& z2 D, o1 m
  2442. .ENDIF$ B. g( E% X9 H9 j
  2443. Music_State_Play5 K" N% s6 L1 B" g3 O& H
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    . X4 Z9 e' d6 b9 W3 s8 O
  2445. 3 n, {0 P8 ]2 }6 J
  2446. ;--------------------------------------------------$ F* g. o9 E2 R3 h- E2 X
  2447. Sound_Bar_Text_Data;声音类型文本( ?" s' u) x! \! a5 j2 P. i
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    0 r+ x# A, p. E
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    & C9 r7 h, \# G" Z" U
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    . T% M8 v' V# Y1 C9 c! E
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    8 _( ~$ K4 I, o% c
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    ' k' B# y6 O1 Q# W- m
  2453. / U+ s$ s' w  u# n0 l* \; E  ]
  2454. .IF Track_Name_Pos
    ! ~2 o/ e& y4 L# Z9 z- ]
  2455. 4 v. }% n! g: T* D
  2456. ;--------------------------------------------------9 T2 ^# r7 Y- h% s; d$ o8 V
  2457. Track_Name_Addr_00;曲目名地址索引
    & b, l% d+ d% ?$ q- |3 u. h
  2458. .WORD Trackr_00_01
    : c/ g9 [. ~; y2 ?# R
  2459. 9 T, ?: K1 @6 C. C  O% y. J
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    . w0 J6 k- g2 v# ]% d2 M% u* P3 Y
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"4 X+ `7 N" {1 ~

  2462. 1 a2 `* d  y  M8 t0 M. h8 h( F6 E# t
  2463. ;--------------------------------------------------6 Q# h- l9 {- J) K
  2464. Track_Name_Addr_01;曲目名地址索引/ y. c% I1 D$ G% m3 o2 U
  2465. .WORD Trackr_01_015 U* P% m" z8 b; q1 d2 F) ^

  2466. % a( k: E; J$ E
  2467. ;==================================================
    : E. \  Z5 A% Y$ ]7 I, f* D& Q
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    , q# S' h2 H0 p
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2": A$ I7 q! O/ u0 j  e' N$ Q
  2470. 8 w& [8 @8 f7 ]
  2471. ;==================================================4 h; ?; _" s" D( X4 ?- v) y
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    ) X' n" d8 ?+ H. [' m' Q% {8 r  w
  2473. .WORD Track_Name_Addr_00
    ' ], V9 _7 V' X/ P
  2474. .WORD Track_Name_Addr_018 n: p  X' p% u; [8 O( i
  2475. .WORD Track_Name_Addr_01
    2 U5 r) s7 P3 G9 U0 `; g' c: c
  2476. 7 v' m. J0 @" P3 P+ q! F
  2477. .ENDIF
    2 D! ^2 d/ M$ Z( P8 r# A% x3 Y+ c

  2478. 2 Q. H$ {$ k+ W) P6 F- V% Z# s
  2479. ;--------------------------------------------------) g* u3 [# W2 d+ q/ h4 L2 G0 K
  2480. Static_Text_Caption_Data;静态文本数据
    6 Z! t% y& _* r' \5 r
  2481. .DB 16
    ( [4 R# j* d3 n% P
  2482. .DB "FC MUSIC 12 IN 1"
      ]% A# n; T7 z) U% @" {
  2483. Static_Text_Author_Data
    / F$ z7 p3 G9 x  m. W& G
  2484. .DB 25
    3 g+ m1 Y# g6 e8 ~2 T+ l2 h2 f
  2485. .DB "EXTRACTED BY FLAMECYCLONE"7 M" i1 u4 M) g( ~+ [* B+ n
  2486. Static_Text_Date_Data' [/ ?; \4 [8 f4 y8 z. i3 B
  2487. .DB 10- o9 \' I+ {3 e* }! f
  2488. .DB "2023.07.23"6 K6 {# n2 ~7 J1 x

  2489. 1 M% [( |" r. B
  2490. ;==================================================
      O: o2 l/ R( S$ p& R  A- L4 |7 \6 r
  2491. Music_Collection_Name               ;专辑名间接索引. g4 G( B* Z) j  I+ e, B  u: y
  2492. .DW Music_Collection_Name_00
    " c/ C+ j- o6 r
  2493. .DW Music_Collection_Name_01  C7 @8 o8 R) m. ~! I9 b6 d' o
  2494. .DW Music_Collection_Name_02
    + M2 d4 \; v* T" I5 I  D2 I
  2495. .DW Music_Collection_Name_03
    4 s) W1 K: }5 v! ^% D0 K
  2496. .DW Music_Collection_Name_04- g& d( @+ R6 U& A9 g6 a# K+ m& `7 `
  2497. .DW Music_Collection_Name_05
    $ r! e( A8 Y2 [
  2498. .DW Music_Collection_Name_06
    , `4 ]% V2 h0 l/ u
  2499. .DW Music_Collection_Name_07# S) u8 I8 O4 ^; |, U/ s0 H& m1 I
  2500. .DW Music_Collection_Name_08
    " j' i% n, Y' \2 L
  2501. .DW Music_Collection_Name_09
    " p2 \- A6 H5 h* Y3 G! z5 ~
  2502. .DW Music_Collection_Name_104 |3 O; K$ y3 G4 S
  2503. .DW Music_Collection_Name_113 n: Y3 s- ~! N; t1 u& t
  2504. 0 x: `. ^' E( m8 v
  2505. ;==================================================! i! C3 ]* u. F
  2506. Music_Collection_Name_00            ;专辑名文本数据, u5 u; [8 A  b5 U- x, \8 ^# A9 T: V
  2507. .DB 11,"1.RAF WORLD"& h; g2 Y, L# j" }- Y4 a; V
  2508. Music_Collection_Name_01
    % y- O3 g, U' C" j0 H; Y9 z
  2509. .DB 15,"2.FINAL MISSION"6 v7 g6 B: h/ Y! ?8 \3 C8 I. x
  2510. Music_Collection_Name_02
    6 c5 n( v2 Z& B8 T3 X4 @
  2511. .DB 06,"3.KAGE"6 |5 t+ b5 E9 O
  2512. Music_Collection_Name_03& ]- L0 O3 `" l, Z+ Q: s
  2513. .DB 16,"4.DOUBLE DRAGON"/ D9 V: G) c5 d0 S4 |+ G* k: V
  2514. Music_Collection_Name_04$ c& U* J, d1 X/ v4 T
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    $ m! B  T! x) h9 Q) z- Z+ J
  2516. Music_Collection_Name_05& v/ E. m$ ]1 u& ~
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    8 P* y0 Z* c0 g
  2518. Music_Collection_Name_06
    / V; n, _. {" X& o2 T, e  B) d
  2519. .DB 09,"7.ROCKMAN"" N" S+ |# [  H/ K- A
  2520. Music_Collection_Name_07
    # A$ H% G2 t- b7 t3 E
  2521. .DB 12,"8.ROCKMAN 2"
    5 e% v2 S; `0 i7 I( k7 x. b
  2522. Music_Collection_Name_08
    ) U5 b2 l1 O9 M: j3 E& M
  2523. .DB 12,"9.ROCKMAN 3"
    5 ^# p! |2 [0 |4 _/ ?6 Z6 V9 E
  2524. Music_Collection_Name_09+ u1 Y7 p! U- m  s) t  _5 s
  2525. .DB 12,"10.ROCKMAN 4"
    - d7 U" M. M, B# A
  2526. Music_Collection_Name_10
    + n' {6 A0 s. w5 d6 {
  2527. .DB 12,"11.ROCKMAN 5"6 v0 d$ u* C! S
  2528. Music_Collection_Name_11+ X3 m# U& F5 E0 P
  2529. .DB 12,"12.ROCKMAN 6"
    " Z3 @- [! O& A5 N& j9 f

  2530. ( L) K" g( D* V7 s% n9 N0 H
  2531. ;==================================================
    8 F! D! v- f( h$ L
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    ' c, I3 U( ^2 I
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,05 N: ^( y0 p2 a) ?& c' q1 s" @+ c
  2534. ; d7 N% q# l% [; Y
  2535. ;==================================================" S! A  p4 i, R& l$ `* f
  2536. Item_Pos_Data                         ;光标箭头位置
    , Z) ^* p+ P, ~9 _3 Y
  2537. .WORD ITEM_SHOW_POS1 [* W5 [0 \6 @7 }
  2538. .WORD ITEM_SHOW_POS + $0040+ d0 c. I7 L0 P* V$ R/ O' ]. t& L
  2539. .WORD ITEM_SHOW_POS + $0080
    ( L- d6 L) ]6 [/ A& o
  2540. .WORD ITEM_SHOW_POS + $00C0
    6 p+ X' a5 L9 D3 S) x4 T  f4 u
  2541. .WORD ITEM_SHOW_POS + $0100! [2 y2 ]" J2 f1 {5 `
  2542. .WORD ITEM_SHOW_POS + $0140
    : z2 ]0 i. H; d" u# n" v: V8 ^* [

  2543. $ f- M$ k, s3 a+ }; w7 I; ~
  2544. ;==================================================
    7 ~/ A. k1 J1 ~! [; t
  2545. Sound_Init_Port                 ;音乐初始化入口地址5 j6 m: L3 y6 a8 u
  2546. .DW $BFC8
    0 a! R# u: s; l) \/ T: f
  2547. .DW $D7F0
      i4 z7 t1 Z. }% k
  2548. .DW $9FC0
    $ \0 m9 ?8 \. u" C" I# S2 r
  2549. .DW $BF70, P, _4 x( L2 Y, X/ K8 X2 M
  2550. .DW $80036 t% C& g4 u) ]7 C# T
  2551. .DW $BF30& i5 s+ Y/ o, r' U- d
  2552. .DW $9003
    + q/ P, \. L* a2 @
  2553. .DW $8003+ t, _$ E% ]1 x% g, i+ W
  2554. .DW $8003; a2 l, E7 {5 o$ u5 n1 }' x
  2555. .DW $8003
    ( R* L' {7 _( p" P
  2556. .DW $8003
    ( h4 c# @& d  B3 r( \0 r
  2557. .DW $80033 W1 x; d. @1 H

  2558. + W+ B4 V- j$ {: A  |$ t' @) F
  2559. ;==================================================' n3 [9 W1 w: A8 C' v/ j) }
  2560. Sound_Play_Port                   ;音乐播放入口地址  q, j. [$ G; D+ `1 L4 }2 o  H/ B
  2561. .DW $8000
    5 Z% |9 ~! P. n5 r' B
  2562. .DW $8001* X+ V* Q% i$ r* d
  2563. .DW $A000
    ) L. j5 f$ ~( y  F, |$ Z" `
  2564. .DW $80037 r9 r/ j# ?9 \- W* d3 a4 ~
  2565. .DW $8000
    2 z" F) A/ g8 M4 F* R
  2566. .DW $8003
    $ _! _! T7 U* G6 O0 X/ F4 K
  2567. .DW $90004 b3 q$ J8 Z0 d) E
  2568. .DW $8000
    ; g* E9 X# T& R9 k* Q! H) ~
  2569. .DW $8000+ T/ d; n/ i, O# m) J$ l$ j
  2570. .DW $80007 _0 d/ P2 E) f) W0 {
  2571. .DW $8000
      J) p; R( _1 L2 C
  2572. .DW $8000
    ) s) d% z; V/ }

  2573. # x8 w2 o7 R- x  Y
  2574. ;==================================================* d+ y! m8 ]4 H7 L# a
  2575. Sound_Reset_Port                  ;音乐重置入口地址
      l: N0 U! b  W, g
  2576. .DW $0000
    # O$ ~6 m+ n' e! ^% G* X- [
  2577. .DW $00002 X3 \3 Q4 `7 A( l
  2578. .DW $0000
    ! E# y: b8 t+ h1 r- B7 B
  2579. .DW $0000% X, \% b9 P* x- l3 V& Z4 V  ^: F
  2580. .DW $0000
    ) W; [2 b4 Y! x2 t3 l  M" M
  2581. .DW $0000; e+ Z5 y, ?! V/ S% H
  2582. .DW $0000
    # u/ }5 z2 \! ^4 ?6 o
  2583. .DW $0000
    1 `" @% }, b2 V0 \  g
  2584. .DW $00003 G. @3 M; \/ U* r0 ^
  2585. .DW $0000
    , s' I  z+ Y$ C+ Z" S4 j
  2586. .DW $0000
    . w  l# `( C0 h6 A& I. C
  2587. .DW $00004 {( H, T. j+ N8 k: w; Q
  2588. ; s) e" `& t# F) @: F
  2589. ;==================================================3 B/ E& u* P$ Y: w
  2590. Sound_Total_Port                          ;曲目总数' L8 q8 |! Y6 ^! c9 x2 ]5 Y9 g/ c
  2591. .DB 38
    8 O' w/ i6 e. R3 }0 V+ b0 m! y0 R$ L! `
  2592. .DB 33
    4 _1 {. m% R. n9 x: D' ~$ }3 g
  2593. .DB 49- |- t* v1 `- `1 u5 W  v+ S1 d
  2594. .DB 41- i4 U9 E" M) L1 P
  2595. .DB 83
    $ O! O7 n$ s2 B
  2596. .DB 70
    " Y. y" b6 V! ^, r+ D/ H
  2597. .DB 50
    $ ]% ^4 S! \4 b; q
  2598. .DB 674 Y  p" m0 Y9 P( U4 x* p
  2599. .DB 57* z6 G- X2 k& A% p
  2600. .DB 71
    , |5 [% P7 {! l9 S: n, H8 v4 x
  2601. .DB 76
    / K1 P7 X( g! t7 h, `+ f+ o
  2602. .DB 102
    1 s; Z; U5 G3 j0 q
  2603. 9 z" S2 h! N0 P1 |0 w
  2604. ;==================================================
    ; V2 {; E: m/ l2 U/ v( w" v
  2605. Sound_Start_Port                      ;起始播放曲目' i0 M/ _& g' e3 y: _/ ]1 q
  2606. .DB 00* l/ x8 N# B: R4 O; e7 J8 ?
  2607. .DB 00
    5 }3 g- G9 B( Y; B
  2608. .DB 00
    8 ]2 ^# q- |) p6 \# Q1 i& l
  2609. .DB 00# w2 U0 q8 _$ g/ C6 s6 j
  2610. .DB 00% ^) \" @& o% b9 w1 {# `% S
  2611. .DB 00
    5 k! ?) Y9 ?/ ~1 h5 e- n/ ?1 A
  2612. .DB 00
    1 ~' A$ I& S. k) k, O
  2613. .DB 00" }% d4 z% K9 z& j" t5 C
  2614. .DB 008 u8 @/ R8 G1 ~# ]2 Z" J
  2615. .DB 00* U' }* ~$ F; p4 o" Q: V
  2616. .DB 00  U5 \2 `0 R" v; t2 c
  2617. .DB 00- z. s+ h: g9 b9 k6 @/ Y- V
  2618. 8 D1 y9 o8 [+ m+ B4 W6 ?6 T
  2619. ;==================================================* n, X- ~2 U* T, Z6 T
  2620. Sound_Bank_8000                      ;专辑bank_8000  l8 h/ T9 u, J1 Q
  2621. .DB $10
    & A3 h! t" \) \4 d, B" @7 {
  2622. .DB $12& g! B5 _, H: Y2 |: N: A
  2623. .DB $14& j3 T$ R1 ~$ W9 E( {+ u
  2624. .DB $16
    8 J  S* X0 I4 z2 o/ }6 G/ i* u9 Q7 C+ g
  2625. .DB $18/ c- Y; I$ Y8 u% L5 m7 P3 r
  2626. .DB $1A, _  q* U  x& n  z
  2627. # V9 n8 `% g- X- J
  2628. .DB $000 k5 |/ q% k+ Z, U6 O* V7 p
  2629. .DB $02
    / h5 E, ~0 v8 H; B# y3 v4 Y7 \
  2630. .DB $0D1 m" o7 J, W/ p) o9 ]; u
  2631. .DB $04
    - c# m4 P4 ~' O/ r0 R  [
  2632. .DB $07
    6 G% ^6 X8 a; S- j+ l
  2633. .DB $0A6 {8 j7 |, a$ b" y

  2634. / `+ L- d6 S+ F+ \. l% M3 P* z

  2635. : U$ r. L  D# _/ ]
  2636. ;==================================================
    " I0 b5 P, Y0 ^1 {
  2637. Sound_Bank_A000                      ;专辑bank_A000! Z- j9 K) @8 \8 \! U% C
  2638. .DB $11
    & c  M) u8 I1 ^9 T
  2639. .DB $13
    3 V- A: a1 i: g  l/ w
  2640. .DB $150 B3 k! s  |* {& i
  2641. .DB $17& V3 ?4 p' Z3 U
  2642. .DB $19, R% T; p( n, |! f, x$ U$ r" a" G
  2643. .DB $1B3 z& _$ o" o: x' X" X/ T

  2644. ) n0 U6 ^1 H! |5 w+ X$ Q4 ~% S& N) N
  2645. .DB $01+ }, m$ Y: L, j) i1 K8 E) a8 E! E
  2646. .DB $03: R! d& I& t) n0 m+ X- }: h
  2647. .DB $0E% U6 r% O  ~* t0 ?7 X" U, ?
  2648. .DB $05
    4 |2 q8 _4 k% [' c: s( M) T1 d/ ?! K
  2649. .DB $086 t" a) k; o* P' G& m7 Z+ I
  2650. .DB $0B' n7 @5 q0 H( d! d

  2651. 2 I( o2 g2 V: h0 }( G7 T7 U

  2652. 3 d& Z! Z5 j* p: F* E
  2653. ;==================================================& ~# ]0 O. ~# h; t# D6 W/ E8 e, x% @
  2654. .BANK RESET_BANK & BANK_DATA_MASK& h& k! Y1 O- _! I( o
  2655. .ORG RESET_ADDR2 Z+ `0 y% H; |
  2656. . b; ?7 R, D' ~: o. l- Z
  2657. ;==================================================
    . N2 X1 [; [3 Z
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    & _# ^* ?6 s; Z, n1 Q
  2659. PHA& f7 L' K2 W4 ^. R0 r
  2660. LDA #$06. b' z! _9 u) r! _: r7 I( R
  2661. STA MMC3_BANK_CTRL& P: _  z+ ~: I7 ^; c
  2662. PLA3 f8 F1 u1 j& l+ }
  2663. STA MMC3_BANK_DATA
    % o" Z& V& P' E% `+ l, c
  2664. RTS
    $ {% @3 p; l* i: K1 o2 J

  2665. 0 t9 B- Q2 \  [4 l& d6 f
  2666. ;==================================================
    % _: ]. ]+ E) Y. O
  2667. Switch_Bank_A000;切换bank到A000-BFFF2 I6 r& E2 z( x% A# V! n, p
  2668. PHA" K& T6 d4 g& i) K6 A) W
  2669. LDA #$07
    , s6 r+ I- B% e9 D5 j
  2670. STA MMC3_BANK_CTRL
    $ U- |  `* n" @/ _; U
  2671. PLA+ [+ g) P( V9 }2 i% t# J& _% }
  2672. STA MMC3_BANK_DATA
    4 C; ?' H( x* \2 S: U" {/ X, z+ f
  2673. RTS9 C% E8 x; k5 M1 Y  J
  2674. ) O7 T  _+ U# G  h" z9 p
  2675. ;==================================================" z0 ~) {/ V9 [* Y* z
  2676. Switch_Main_Bank;切到主程序bank
    ( e+ s  z9 v: \: j
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    ; O: V, _2 B; w# S$ l
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    ; G) }1 Q& E1 _; V! c
  2679. RTS; C( C  y8 y; i# h4 [* @
  2680. + a* h" \/ m, @: E  I
  2681. ;==================================================
    + j; _8 E8 f0 Y1 k# o; n
  2682. Sound_Reset;音乐重设(如果有的话)% ?, e9 r8 L. q/ e# W
  2683. JSR Switch_Music_Bank  ;切换到音乐bank& o' T. f; \- \0 Q  ^, p. n2 [
  2684. JSR JSR_Addr_Op        ;执行音乐重置" l2 Y6 p0 Q  M! r0 b0 d0 _; k
  2685. JSR Switch_Main_Bank   ;切回主程序2 |3 A- J  Q3 H& `1 K$ ^8 l
  2686. RTS9 f0 s0 F" h/ r/ r5 G

  2687. 1 z2 n6 C; i2 z1 |
  2688. ;==================================================$ i0 }# v; |; f; j8 A6 H5 p
  2689. Switch_Music_Bank;切换音乐bank
    # M) \" @' v8 }) ?2 x2 g' n$ b9 E1 c
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    6 w3 r7 a- h$ h" P/ L" w% K
  2691. LDA <Music_Bank_8000
    4 Z6 n; s& U0 N/ e0 s
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank: }$ E4 @0 k1 z
  2693. LDA <Music_Bank_A000. n$ s6 F2 ^6 k
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    5 B: q9 ~! I' ~* U+ x; D
  2695. RTS
    : P( X) @& q% `" d, T; b

  2696. / r/ G1 e- U& k2 P5 [) I# e
  2697. ;==================================================- p2 r) L& E; X- W
  2698. Sound_Init;音乐初始化
    " {1 F2 Y8 o' l7 J* J' p3 Z
  2699. PHA6 ?; G0 L) M6 F- E$ @2 d
  2700. JSR Switch_Music_Bank  ;切换到音乐bank9 _7 Q/ J( H6 O6 n, e+ H
  2701. PLA
    & E* f5 O" _% `* x5 ~
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    : W  R0 n. P& t) b2 h* A! [
  2703. JSR Switch_Main_Bank   ;切回主程序
    ( e  z" p+ h% a6 |
  2704. RTS
    0 t1 D& t. T0 |+ `: T% D* @$ V+ X& V

  2705. . s% D( D" X- R0 c; t# G3 b) Z
  2706. ;==================================================
    # _, X7 t. o2 [3 N6 z
  2707. Sound_Play;音乐播放
    ! q5 K' @1 Q$ O9 ~1 f; v
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    8 s' E8 z. w( e. Z6 z. v, H
  2709. JSR JSR_Addr_Op        ;执行音乐播放9 k1 z4 h( M" m! \" F* F- p
  2710. JSR Switch_Main_Bank   ;切回主程序9 c# W6 w) l( ^( P! ^
  2711. RTS; _, F  ~4 J" S4 g& z) C
  2712. 3 E* ^& j$ y9 M, d6 ^: M
  2713. ;==================================================$ ?, k, a/ A0 Z8 l, H
  2714. MainLoop;死循环4 T  y4 w' f& z
  2715. JMP MainLoop! Q$ k/ x! B; |9 e6 S/ I* R1 j1 x
  2716. ! l9 s+ y4 G8 ]( ]2 E
  2717. IRQ_SUBPROCESS_JMP = 0
    0 B; F1 d: k8 p

  2718. % Y  `! h) j0 j  q6 t2 y- p
  2719. .IF IRQ_SUBPROCESS_JMP1 j' c6 _# z' P6 g3 W
  2720. ;==================================================
    7 D7 z4 F3 ~$ T# K/ w4 q
  2721. IRQ_Process_0;IRQ处理过程0" ^4 X" y+ X( [8 {; B6 `

  2722. + g' x/ J: `5 I6 z
  2723. ;15条扫描线后触发IRQ
    3 q0 T- f0 ?' y5 ~8 a
  2724. LDA #151 t# ~3 l# l. {7 }- ~
  2725. STA MMC3_IRQ_LATCH
    3 u" L. h4 n, O; h  A

  2726. 3 L( B' w3 u: K5 W- v) x& y
  2727. ;设置屏幕滚动% v+ k1 ?% E9 M& k5 \; J$ Y
  2728. LDA <Scroll_H
    9 A& s2 S, m; f- Y3 E8 `' {: O! r
  2729. STA PPU_SCROLL
    $ L& h* h- v' D1 v+ L8 n. e
  2730. STA PPU_SCROLL
    / e- |( q& t# D* F6 m( W% }
  2731. ; e3 I* G2 X; c4 x
  2732. IRQ_Process_0_End& g% c5 D8 L/ V+ {, W( s# j& t
  2733. INC <IRQ_Process_Index. a# Q5 X) M, }+ n' N' K  W- {
  2734. JMP IrqProgramEnd7 I# D1 t9 D; j5 n: {( ?9 W2 `- r
  2735. & O. S- Q1 ~4 e! [
  2736. ;==================================================9 V7 a5 [* E1 `' s  e
  2737. IRQ_Process_1;IRQ处理过程1  R6 N/ j& D$ V6 l
  2738. 6 l0 l: H0 f5 C/ b
  2739. LDA #55
    6 ]. h/ f- [, v
  2740. STA MMC3_IRQ_LATCH
    5 ]% Y& L+ o! L* f! P

  2741. $ v# p" x$ J( M" K$ g# J6 f
  2742. ;设置屏幕滚动; k9 w% y& {4 d$ B
  2743. LDA #$00: _$ n' {0 v4 h% B: J
  2744. STA PPU_SCROLL$ _8 f0 ^' K. p- ?$ U3 F" B
  2745. STA PPU_SCROLL
    4 e* j) F' u" E* O, z
  2746. 8 s3 T' ~/ v" p/ w* }
  2747. INC <IRQ_Process_Index
    8 `3 @# `* u) w
  2748. JMP IrqProgramEnd
    & |; T) Y) M! s2 `. y
  2749.   B/ d! D& S$ y, I: N
  2750. ;==================================================' J9 t/ W: U5 y. ?* X% G) p, F
  2751. IRQ_Process_2;IRQ处理过程21 W6 N/ D- u8 a

  2752. / D9 r( g* X$ n' l% W, B: R" f
  2753. LDA #15
    6 c8 C* P/ C5 e: Y0 C
  2754. STA MMC3_IRQ_LATCH
    3 M( X% s! P3 k; V( e- \% c4 m
  2755. ) h) }2 [) G/ m- L" m
  2756. ;设置屏幕滚动
    # d$ Z" e4 ~0 H* `
  2757. LDA #$001 ~. E( o" M* ~' n
  2758. SEC# l+ e4 i; M( r! h2 b: ?
  2759. SBC <Scroll_H2 W2 A. M0 D5 L6 r. v
  2760. STA PPU_SCROLL" G' A& r: k7 {! W$ q
  2761. STA PPU_SCROLL9 |5 D5 ]2 |" i1 r/ p
  2762. & \3 c1 J! E8 ]. k! L
  2763. INC <IRQ_Process_Index6 G' H2 a8 I( O* @: k
  2764. JMP IrqProgramEnd
    8 c; a: ?6 U5 H3 l8 p& s
  2765. : w9 R- s. B& Y$ P. W& M5 |1 @
  2766. ;==================================================- n" v6 O* M% m# c! I# s' z1 [
  2767. IRQ_Process_3;IRQ处理过程3# z2 w: S; z. O/ o9 g$ K$ v" \
  2768. / N* i" ?+ Y1 L6 P1 `6 O6 M1 i5 W- P
  2769. ;设置屏幕滚动: N( O4 M' \- u5 K
  2770. LDA <Scroll_H" k4 `) ]& g* d( c
  2771. STA PPU_SCROLL
    & D3 C. m% I# [% J; P
  2772. STA PPU_SCROLL" J: y( s0 y9 c1 z5 \

  2773. 3 n4 R3 |; Y% G/ c- X
  2774. ;禁用IRQ- H0 G- s/ E0 H( U! ~. E" K- S# f
  2775. STA MMC3_IRQ_DISABLE/ t( `/ y7 B+ f$ T( d5 w
  2776. JMP IrqProgramEnd7 i1 w2 X- k/ m* H  \2 E5 S

  2777. " r9 z0 f, X' E& v8 l" _) x
  2778. IrqProcessAddr$ D  U- ~: b3 u$ S% x' M0 B
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    % p, y1 ^- T8 e0 s
  2780. / {& M+ @- [9 x% `! U  g
  2781. .ENDIF6 ~7 N) p( d4 z6 i

  2782. 6 N0 L+ e; N5 ?4 S1 q
  2783. ;==================================================" e3 ]5 w3 l$ V' _1 g/ W
  2784. ;IRQ滚动模式常量
    ; Y/ D. V6 F7 ^
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    ) }6 @) K4 I+ ~
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动6 g. Q/ B: ^2 k! w
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    0 Y# O% G1 C4 ]# h, F
  2788. & D" T9 [# n- X" E9 r% R
  2789. ;IRQ扫描线数据
    + e( z1 @% {& }$ w/ M
  2790. IRQ_Scanline_Data, f0 o/ F7 I" L3 p- {) q
  2791. .DB 87 t8 {2 u1 a) P8 a' Q! A6 W7 [
  2792. .DB 54' M- H( j: Q! ?& y8 L
  2793. .DB 8- u3 J" {$ f$ z; s" H
  2794. .DB 00 ;关闭IRQ
    - }) u, J! m# C% g1 a/ E5 j9 ^

  2795. 5 f& v7 x6 X3 L4 e
  2796. ;IRQ滚动控制模式
    : {) s9 p9 u0 ]; E  [9 M" f1 ~; o! X
  2797. IRQ_Scanline_Mode
    2 [& i2 y& s1 Z
  2798. .DB IRQ_SCROLL_MODE_ZERO- h, N& |. L4 t0 D$ r5 |+ B8 U+ o
  2799. .DB IRQ_SCROLL_MODE_ZERO2 j6 |0 A! A3 H2 y" I
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    ! |$ @% m, i7 m: O! A
  2801. .DB IRQ_SCROLL_MODE_LEFT
    . }5 m( u% P( V1 x4 t) i( f
  2802. % f% ~+ l( T. [: O' ?& Z
  2803. ;==================================================
    - ?- J& m" w  m$ r3 Z3 H
  2804. ;IRQ处理. @, |% ?% O8 `1 R9 X3 l$ ]8 c
  2805. IRQ_Process
    - G5 _6 J0 X( j: D3 f/ U
  2806. LDX <IRQ_Process_Index
    $ P+ G* P8 r4 R# h( _
  2807. LDA IRQ_Scanline_Data,X% U1 B% V. r' l
  2808. BNE IRQ_Process_Latch# S" K+ }! u* {- D* ]; z
  2809. IRQ_Process_Disable;禁用IRQ: v9 n- }! \3 }# H! }4 C
  2810. STA MMC3_IRQ_DISABLE, G1 D+ T- ]+ [$ a" a3 ]. d" Z
  2811. STA IRQ_Process_Index: d1 K! z# F( T
  2812. BEQ IRQ_Process_Scroll
    . c7 |1 G) C# x, B! c
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线) l% o" E9 b$ G
  2814. STA MMC3_IRQ_LATCH' Y6 S) r5 \7 P
  2815. INC <IRQ_Process_Index
    % z# O2 j' K  I- |) x! A, t' c1 M6 U
  2816. IRQ_Process_Scroll;IRQ滚动控制
    0 z4 h3 F7 W3 G% C: ?- l$ y
  2817. LDA IRQ_Scanline_Mode,X( w' U0 a% H, O7 ~" z8 p! }
  2818. CMP #IRQ_SCROLL_MODE_LEFT3 I6 q; D( z  N* G2 S$ T5 e, t
  2819. BEQ IRQ_Process_Scroll_Left6 d7 ]; o. \! d/ f* d
  2820. CMP #IRQ_SCROLL_MODE_RIGHT$ P# u* X# A0 c' Z: z: \
  2821. BEQ IRQ_Process_Scroll_Right; Y5 m' @4 X$ k' c, B3 s% @
  2822. IRQ_Process_Scroll_Zero;不滚动
    5 x8 l) S3 D/ p! h- g
  2823. LDA #$00
    # L3 ]9 P+ L: k% Z; V9 P
  2824. STA PPU_SCROLL
    : n- n" z  N. g' }/ H. @/ v
  2825. STA PPU_SCROLL
    ( S( s  d7 t( A/ e/ o8 x, u2 \
  2826. RTS
    % \; H# t- n- E. D* e
  2827. IRQ_Process_Scroll_Left;向左滚动% K6 ^; L; ?2 B% W3 i9 G
  2828. LDA <Scroll_H
    3 ~# p6 j* d4 ~  S* e1 z
  2829. STA PPU_SCROLL
    " ~9 I8 c# z, C
  2830. STA PPU_SCROLL
    . o9 w2 _" N  ]1 ^1 Y8 `+ N- s2 S3 i: x
  2831. RTS, F. }. |, o3 ?% F! N. O2 {4 K  m
  2832. IRQ_Process_Scroll_Right;向右滚动
    8 u/ A+ o+ U  g. a$ u
  2833. LDA #$00
    ! `- ^2 M3 b; T; p# }( @! @
  2834. SEC, G6 m7 ]6 c" h0 k: R! C. d
  2835. SBC <Scroll_H
    4 i! o+ x; u5 R4 m1 |  B. W
  2836. STA PPU_SCROLL' u( q* @  B3 _5 d) [; H" B8 ]
  2837. STA PPU_SCROLL
    # {2 {3 |) ?, u5 K( d- V
  2838. RTS
    / j& T* _4 S: J2 R* ^. A& R
  2839. # Q/ z/ l% T: F5 t4 K4 L3 `
  2840. ;==================================================
    4 b& ~0 ^0 X$ i4 _0 V- |. n3 M5 w( O: G
  2841. NmiProgram;Nmi中断处理
    6 C3 z: H: h6 E$ S
  2842. PHA
    % {+ I+ Q8 J* f
  2843. TXA
    2 q7 h4 D! ^$ c# u7 M4 Q
  2844. PHA
      H6 D' L! H# t- Q" f
  2845. TYA
    2 O- Y& [# ]4 ?5 R  t
  2846. PHA
    1 ]5 E3 W* n2 Q9 P1 c

  2847. ! x1 q  b# I7 o0 ^3 `5 d1 D
  2848. ;读取清除Vblank标志, 防止重复进入
    9 e7 y8 g- Z4 k
  2849. BIT PPU_STATUS
    * e- C0 D1 t* B5 y# f6 y; r0 W
  2850. # M) j( p1 j. R. J. V/ h- \  ^( C
  2851. ;切换主程序bank4 {9 Y5 K" S* p: w+ L! L
  2852. JSR Switch_Main_Bank  Y  a3 s4 O5 x/ i5 U3 q

  2853. ' ~3 z7 ], `; S) y
  2854. ;Nmi处理; E5 A3 ]0 Z5 Q5 M5 u
  2855. JSR NmiProcess
    - w3 d- S' F  ~# t8 S' G; ]

  2856. ' s& K, ]  y& N& `
  2857. Nmi_Proc_End
    : M" l, k1 q! w" U" K+ k1 P
  2858. PLA
    . {2 Z) k  i- x* A* p/ I8 K
  2859. TAY2 w' T5 f  x) i8 i4 Q. S
  2860. PLA0 y# }! B3 I( ?. Y! Y3 E
  2861. TAX
    1 L! x; @- J$ N% e$ R5 F9 w
  2862. PLA
      e# X  f! A: c- f2 ^# I; M/ j
  2863. RTI
    $ j) V; L1 s& E4 y

  2864. $ }  N4 @, w- \8 e7 X
  2865. ;==================================================- c$ c/ z; e, K6 L4 s1 w
  2866. ResetProgram;重置中断处理% E) x1 K5 {2 e! ^
  2867. SEI( |6 v# |* Q; p+ d$ Q
  2868. CLD
    9 C' y3 I/ Q8 `7 e
  2869. LDA #$008 R% V* m6 C) g" [) S1 y5 U9 u6 D  Q
  2870. STA PPU_CTRL. c# A" C4 u" G$ I# K
  2871. STA PPU_MASK9 f' R( {2 U% n; x) |( T
  2872. " {0 c5 L/ l8 c5 W1 S' h
  2873. ;切换主程序bank+ T7 X+ \. K( L2 [/ v$ E
  2874. JSR Switch_Main_Bank
    5 v. H( Z9 h) n" t3 y6 |  D/ H
  2875. ; A; q, b9 R  k; @
  2876. ;程序处理开始2 X; O& k) I9 J$ Z* ]
  2877. JMP ProgramBegin
    0 N8 @; \9 c9 Y; ?% j
  2878. / S2 W# X; T) o7 r/ r
  2879. ;==================================================
    6 o+ a1 l$ N6 H5 B
  2880. IrqProgram;Irq中断处理
    & m3 l9 Z0 K# N5 L% B
  2881. PHA
    , d* o! V( O; }
  2882. TXA
    ) ~8 V) }% J" f% t0 o, u
  2883. PHA1 K0 ]9 D- t' E3 j1 y8 \* a, v
  2884. TYA
    1 @1 u' z. J- ~
  2885. PHA
    ( N4 M" ^! g- L0 @" k( V( Y

  2886. + h% P8 d. ^4 [" m8 B
  2887. ;关闭IRQ4 c. x) c& R, E; s$ a! K/ C) |
  2888. STA MMC3_IRQ_DISABLE# u$ j3 B+ Y2 G

  2889. 8 b8 G7 `# t  y& J+ n% I* s
  2890. ;允许下个IRQ触发
    ! g! m/ p* ~3 D5 A1 P
  2891. STA MMC3_IRQ_ENABLE
    7 r* ]8 _) e0 [/ q+ T

  2892. & b! f$ e- n$ P9 a! a$ P
  2893. .IF IRQ_SUBPROCESS_JMP
    # `5 v# ?! C, ~/ B+ b
  2894. 2 A; g. v; `5 c% B  ?9 ?2 r
  2895. ;执行IRQ过程
    + c0 D) k4 I) q; Y" H5 \
  2896. LDA <Data_L2 b' z/ U% P9 a  y& N( y
  2897. PHA
    7 c/ e* w2 e. @
  2898. LDA <Data_H
    2 S) m" I+ F% A: K% {0 w! t
  2899. PHA, k  a# c; T9 }. T- U4 ?
  2900. LDA <IRQ_Process_Index1 ?/ N! S( B% g7 w
  2901. ASL A
    : J/ X9 Q% L3 d$ T5 a& e) ]
  2902. TAY( e5 K! |% `( }- B" _0 b2 }9 d
  2903. LDA IrqProcessAddr,Y, V; L# O, r. @4 B
  2904. STA <Data_L; a/ B7 w6 `- g! U% p
  2905. INY: e4 s: f1 x' i# c) v7 m8 C
  2906. LDA IrqProcessAddr,Y8 k% P0 D6 f7 T) M8 I: P
  2907. STA <Data_H
    ; o: H7 d! ~  F
  2908. JMP [Data_L]
    ) ~& ~/ _% A" q9 n  u
  2909. , E) c: d/ C$ c3 |; T& s1 k
  2910. .ELSE
    " ^( {# w3 ^# t# O

  2911. : @+ g) U( f5 b, w  N% x
  2912. JSR IRQ_Process5 v! F; j  E1 f! e& X. c$ l: [
  2913. * o5 f- D$ e5 n' k8 w+ f) q
  2914. .ENDIF
    : u$ w! h# X) J
  2915. , N6 B, i. n4 y- z
  2916. IrqProgramEnd3 t! D, E4 C1 F- Q) L; X
  2917. .IF IRQ_SUBPROCESS_JMP% ^5 H8 V5 q# s- j( M' R
  2918. PLA- g- e# p/ {, J' f+ W! X
  2919. STA <Data_H* ^. r1 b$ p3 E, @% D7 y
  2920. PLA
    3 k  l- O9 x; Z8 Z; `- [
  2921. STA <Data_L( ~8 K  M) L0 e0 e2 z, ]
  2922. .ENDIF6 d. A+ P; R" V, I+ d! Y. R
  2923. PLA  O+ Q$ \9 N, j% V$ a
  2924. TAY9 `9 s9 B9 z9 y6 Z, D
  2925. PLA+ t& k' X- X7 O# G' ]2 S
  2926. TAX
    ' c! t! `4 C/ M  R9 s' G% D
  2927. PLA5 q. Y4 \8 f* w# D; J
  2928. RTI9 M) _. c& j" R3 }

  2929. 5 q* s) K( b; i/ i8 h
  2930. .ORG $FFFA
    / ~% J. b1 M( {
  2931. .WORD NmiProgram
    $ e/ `/ s7 a2 o, g) n) d9 m
  2932. .WORD ResetProgram0 z+ p  N& m2 M( B' x) S9 k
  2933. .WORD IrqProgram0 }8 l$ X- i) I7 W2 D6 U
  2934. 2 u2 x- t% L* G5 w
  2935. .BANK RESET_BANK & BANK_DATA_MASK: c* x) z2 g4 d* w! v: L5 U5 ~, m7 S% ?
  2936. .IF SOUND_BAR_SHOW_ENABLE
    4 V; ?7 s; R& o6 a4 |2 x7 ]
  2937. - `# q7 n! n* C4 s3 ]6 i
  2938. .ORG $FE00% v4 o4 L' N! X
  2939. PHA
    0 W  E5 S# `" B" u0 L% K
  2940. STY $07BA/ I5 i# ~3 v; q2 k8 y. C6 R
  2941. LDA #$8D
    , `: A' `6 X+ T% ?0 H2 d3 u
  2942. STA $07BC
    & J& [3 H9 u3 S! \' P' b" G
  2943. TYA
    ! N9 b0 B2 F6 v% n
  2944. CLC3 ~) P6 ?* c  I' O6 U3 S
  2945. ADC #LOW(Sound_Bar)
    ' f. l, ~, b$ u: d( C* J0 w0 z
  2946. STA $07BD7 _3 W8 g) o2 Q
  2947. LDA #HIGH(Sound_Bar)) j! o- z5 ~7 E$ K3 E" K
  2948. STA $07BE3 x9 a) b8 n/ B1 [6 G) }$ T1 Y4 P0 b
  2949. LDA #$60
    6 U/ V  l# k7 q+ ~, H
  2950. STA $07BF. m3 ~* g; {/ |1 t# b) z% C
  2951. PLA/ p0 l- h; M/ ~* s: H/ y8 J
  2952. RTS
    8 g) T# j1 V! `6 W: }

  2953. & W) {3 r4 N9 ^( B* r9 h5 |+ D( d! w
  2954. .ORG $FE20
    / n0 ~: [9 c. m1 k+ n
  2955. STA $07BA5 Z( |1 Q5 g- o" Y7 c1 y) M
  2956. CLC
    " I; R0 ^0 B9 ?6 ]& p
  2957. ADC #LOW(Sound_Bar); x, R6 ?0 X5 U7 T
  2958. STA $07BD' {* }% j% l) L( w, D+ o
  2959. LDA #$8D) K, \3 S4 T  L' a$ o" G- G
  2960. STA $07BC0 q7 y# j/ L8 K4 d0 a
  2961. LDA #HIGH(Sound_Bar)
    + @, P; h3 [9 z9 `1 K: X
  2962. STA $07BE
    ' a; u6 G; p7 ]' r  d/ D
  2963. LDA #$60
    * `. _: q5 }; O9 `1 |0 }' O
  2964. STA $07BF6 L% R4 K. s6 h6 _' s3 r$ ]/ S. T& F! d
  2965. RTS8 M4 M* p! O6 ]

  2966. & C4 c8 P  x" Z; `  D$ w  y
  2967. .ORG $FE40! t) `. f  u4 I1 i6 V
  2968. PHA( _5 F8 m( d& H$ y: y" {# ?
  2969. STY $07F18 i% e+ [. {- E( }% f5 a
  2970. LDA #$8D; }2 b% P1 k/ @
  2971. STA $07F3( l. ?6 |9 A9 d/ |  L; p
  2972. TYA
    ) @9 Y; y2 d- D' p2 v* T
  2973. CLC
    # J  A% [5 V; U8 B
  2974. ADC #LOW(Sound_Bar)
    4 }* V' z8 P9 n0 y! W3 `
  2975. STA $07F4" [% d" }: j8 g3 I
  2976. LDA #HIGH(Sound_Bar)
    - b* O% C, j. z0 s% ?$ y
  2977. STA $07F55 b$ }! d0 }7 K' o+ K
  2978. LDA #$60
    : K& Q$ |) g, A% K. B
  2979. STA $07F69 [3 Y8 w# l( H, ?
  2980. PLA
    $ r1 F/ }) ]7 B" g
  2981. RTS
    8 X8 d0 v! S7 J3 ^3 o3 I( \

  2982. 7 C4 z3 ?/ y" \
  2983. .ORG $FE60
    $ v+ P& G0 [! V& Q
  2984. STA $07F1, K/ ^. v. ]% Y$ c' g
  2985. CLC
    ! h0 v, \7 G5 }- e& y' Z# M
  2986. ADC #LOW(Sound_Bar)6 r. {, O/ D: a( G  t5 }
  2987. STA $07F4; v- w9 k! J- P! C0 N- Q7 G5 F; N
  2988. LDA #$8D* n0 s, u( {$ W; l7 n! o' Y- n
  2989. STA $07F3% E: k5 J3 W9 J' |( R) g4 A
  2990. LDA #HIGH(Sound_Bar)
    2 N+ V4 `$ D/ Y5 V) w3 @  d% p
  2991. STA $07F5
    9 k7 |* M: r+ c6 m
  2992. LDA #$60
    8 |8 Y" o" _8 d
  2993. STA $07F6
    ) p1 |& C+ X" I  ^2 U' G* `- U5 r
  2994. RTS; I0 [- y) s1 B! j! {
  2995. 6 [. d) @( w$ [2 |7 l9 w5 d
  2996. .ORG $FF40! p) `/ I, |8 x& \1 T1 s. t9 i% U2 N
  2997. STA $4000+ X$ Z, L3 H! ~) U( I  l
  2998. STA Sound_Bar + $00
      b/ O* ]6 V! a7 E3 e- d
  2999. RTS
    ) _' B7 I8 a9 b
  3000. & Z0 s; |9 K$ O
  3001. .ORG $FF48
    7 D* }+ A' h, q( k* O
  3002. STA $40040 R0 n/ S; c" F1 f/ P% I" ]- f
  3003. STA Sound_Bar + $04
    - s9 Z% J, ?  I$ S% i. n
  3004. RTS
    $ \4 W& d* ]' Q! _4 F

  3005. * r- d8 x& r( W) a% H
  3006. .ORG $FF50
    7 Y' ]8 y+ [" l1 H, M
  3007. STA $4008
    9 k5 ]8 U6 q8 x" g
  3008. STA Sound_Bar + $08
    / f+ F5 P9 w; [9 u7 b
  3009. RTS
    2 A% f: a) P7 S
  3010. 6 }+ B/ [+ P+ Y7 {5 h
  3011. .ORG $FF58+ c- c" {) ?1 z( T" O/ ~
  3012. STA $400C+ ^7 r+ d2 ]0 Y1 W1 f
  3013. STA Sound_Bar + $0C
    # E, Y) ~; u/ B7 p
  3014. RTS
    4 R( Q0 J3 @  v
  3015. ; D+ I& u1 r" p: W
  3016. .ORG $FF609 R+ p9 P- R, f  {
  3017. STX $4000
    . [4 M+ @( o- r  M! W! L
  3018. STX Sound_Bar + $00" H$ n& X! W, q: \
  3019. RTS
    9 h+ e' T0 e- t3 }4 q9 R
  3020. % l& f7 H# z6 V" I
  3021. .ORG $FF68
    . X! w! e, G3 Z# S6 X" M. z9 V
  3022. STX $4004; A9 h8 q, z0 r/ Y5 {
  3023. STX Sound_Bar + $044 Y' v) v6 }% G$ ~2 n% z) Z
  3024. RTS  y, L7 n- E' y, A9 |/ s' g

  3025. / z  X4 G/ Z/ z% V5 S  G
  3026. .ORG $FF70
    ( n2 ?9 E8 ]* I1 G7 n: t$ X
  3027. STX $4008
    $ n; U* }0 i9 x$ g0 n
  3028. STX Sound_Bar + $083 ]- K3 @  v3 z$ ^
  3029. RTS
    0 T1 R8 x2 a3 b9 Z; f# R% v2 J

  3030. / G. D2 G+ }* d. g
  3031. .ORG $FF78
    ! |: K) e; B0 y! m' S0 k( c
  3032. STX $400C
    & r! _; X2 i  Z% }7 S0 L3 \
  3033. STX Sound_Bar + $0C0 `# {; d* Q2 g* s+ V3 Z$ @# ~" Z* S+ r
  3034. RTS
    $ s3 A8 T/ b8 H- V
  3035. ; h& R* z. P" s0 x% k  y
  3036. .ORG $FF80
    2 J4 Z& `' G1 P3 p4 i$ i3 W
  3037. STY $4000
    - x% k" d) ^/ C) X1 Z; t
  3038. STY Sound_Bar + $00
    ; V0 B7 k" a1 m  W* j) b
  3039. RTS
    % S" `4 `  |- c6 j% P" }  G
  3040. 1 L2 x" W  B1 q. T, E
  3041. .ORG $FF88
    0 r  L8 J* k' V" m9 x
  3042. STY $4004; b" X1 a0 ^6 ^/ ]$ C! y" ~" n
  3043. STY Sound_Bar + $04# @+ \1 j; {9 {0 S& X
  3044. RTS; W, `! {  W' O3 C: W
  3045. # a* ~/ r: a# _) T
  3046. .ORG $FF905 C  }! c9 O5 q+ O4 ^# o5 o
  3047. STY $4008
    7 W4 N9 z# H  @+ H
  3048. STY Sound_Bar + $080 K$ j7 I3 U* M8 S: m& I
  3049. RTS0 w  N4 c, m; P. y4 l  u8 ?
  3050. 7 n! X# q' z0 Z$ ?- Z8 w5 ]. v
  3051. .ORG $FF98
    % ?; k" ~$ L- y4 }3 w+ X- l
  3052. STY $400C" H8 j+ A1 K- |% u# m6 n2 a% b% ?. Q
  3053. STY Sound_Bar + $0C
    9 R" u: n( x. ^/ c$ S! A
  3054. RTS
    4 v3 r: }5 i; d! i/ d5 C+ i

  3055. 4 F4 P7 ]* z* q5 B% J
  3056. .ORG $FFA0
    / B% x8 P- H3 W
  3057. STA $4000,X$ P/ M3 |4 A( L4 y% J
  3058. STA Sound_Bar + $00,X# b( P# L' Y! U# Q9 P2 U
  3059. RTS! g( h2 n/ a4 o

  3060. 7 b& e6 e9 A, L% k* q& j4 M
  3061. .ORG $FFA8
    , A( J2 B) r" E: a3 P! |* o
  3062. STA $4000,Y
    % A) H( m5 I3 o% {% O% E
  3063. STA Sound_Bar + $00,Y
    # [# q( t0 S  K+ K4 |6 L$ ?0 J
  3064. RTS4 q5 G0 ?' F- d* }% C4 `& s3 `6 x+ c
  3065. ; @# D9 P4 i+ f! I  O8 `2 w
  3066. .ORG $FFB0" N0 h) k% S* i/ G( ?+ q; x5 V
  3067. STA $4004,X0 l1 e( y5 m7 W4 M* X
  3068. STA Sound_Bar + $04,X
    ) C; N, a$ B+ J2 x7 Z
  3069. RTS- L" ~/ N+ U! _, G2 Y; l& Y/ N9 |
  3070. 8 ~$ b8 F( t# ~  j2 q6 g9 m
  3071. .ORG $FFB8+ D6 \# B2 H) ^& S! @
  3072. STA $4004,Y
    $ S. ]; L' ]% R9 b& c  h
  3073. STA Sound_Bar + $04,Y
    9 |! X8 w6 s5 y1 i9 D
  3074. RTS; V; f& S7 m; M/ w, b& A

  3075. # M. Z) N+ J3 n) ^1 u. c1 M
  3076. .ORG $FFC0
    : b7 v$ |0 V4 r% E6 l. K9 Z
  3077. STA $4008,X* C1 L0 T0 Q. B& \* z# c( k% a8 m5 P
  3078. STA Sound_Bar + $08,X4 t. x' f! y( V1 {
  3079. RTS+ q6 @& f* @& z$ y
  3080. - V4 ^/ n7 u0 n6 D3 m
  3081. .ORG $FFC8" I# N3 ]5 ~* n6 H
  3082. STA $4008,Y
    * q' y. C5 S- C) ^0 q% @; a
  3083. STA Sound_Bar + $08,Y
    / M" r; H& u( r8 K8 k2 |7 C
  3084. RTS
    5 s1 @/ H7 |! }$ o2 H6 R2 l
  3085. , X4 R- F9 C) @9 {) {  z
  3086. .ORG $FFD0
    6 @4 Y+ D7 `% e- i9 |  Q' a. P
  3087. STA $400C,X& [! ^2 g. D- t# {" ~6 Y  s
  3088. STA Sound_Bar + $0C,X
    8 Y: ^3 J; T  q9 V# c# C0 B( z
  3089. RTS- T! w# ?2 t1 G. F0 k! V9 K
  3090. : K7 `' O: `& \  }! r  c
  3091. .ORG $FFD8& f, f5 w; V+ m& U7 S+ J4 n" s
  3092. STA $400C,Y) @/ Y; k" T! L/ A: F7 B
  3093. STA Sound_Bar + $0C,Y: p0 g6 q$ p# z, h
  3094. RTS
    % ^. a. X4 e5 x* z. ^' M

  3095. 8 p+ O( d$ m$ K7 f7 V4 Z' t& f: l: g* E
  3096. .ENDIF
    9 T; g) B- `/ p: D. k0 T
复制代码

+ o$ u$ q# h# f$ n
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3177 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 12:22 , Processed in 1.187500 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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