EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
' U& R5 ^# Y, R
, E1 b( G! `3 E. C[FC][音乐12 IN 1]
! O7 U$ ?7 E$ F0 _: n时间: 2023.07.23* W5 c& X9 _7 J; [& B' ?. d8 d# B
作者: FlameCyclone
4 g% h8 N& c8 N) c. L7 C
2 n/ I& b4 C( C6 k收录音乐内容:
4 S; a3 z. E+ l5 P1 o4 K1.Raf世界
* w2 k# |: J- ~5 X' e" A7 o  {8 y2.最终任务* q! t/ G/ d2 n+ V5 \4 j
3.赤影战士
& S8 y) K. g  y6 V6 u4.双截龙
% H& g) }1 B  _8 I; h. f3 ^5.双截龙2
' d- _# Z% I9 K9 ]& A% Q0 O6.双截龙35 b4 @. v' @/ z$ n" H  \  X
7.洛克人
* G+ p5 u3 w8 s0 ^! U8.洛克人2* M9 ^3 h1 o9 i1 B& D$ r0 a
9.洛克人35 n) o0 X7 T$ {/ o( C& B5 h
10.洛克人4& ]/ ]% L: d3 ]
11.洛克人56 M, R: R/ E4 J% g. u' l
12.洛克人6! z. Z5 f( m) x
+ I% s. t% L" [$ Q
操作:
, ]8 i# F* O( X; m% u# ^( C6 r上键:         上一个专辑5 @% a: c+ x! E6 N$ s1 y8 K) s, |7 a
下键:         下一个专辑  t$ D: X: q8 R, r' n) M
左键:         上一曲% t. _1 D6 X  y2 Z* a0 ^
右键:         下一曲
* |$ q3 S; j6 U! ]! vB/A键:        前10曲/后10曲
* E- {7 c3 g% R. J& B选择键:       下一页; O5 R: \& ^0 v6 @- j- n
开始键:       停止/播放  u/ U1 g8 l7 o7 C6 C  n5 H( {

' `) ~9 x3 D7 O' G: M3 Nhttp://flamecyclone.ysepan.com/
) `$ P0 g% Y7 k/ y1 B3 h5 g3 Q5 ~: b3 f* E; L/ N, ?7 b8 x
% }+ Q( N" I; y' G
0 o, A+ B1 y- z: _, j% C

! M. A) ]% Q' E5 Q& s# [8 N) U
  1. ;[FC音乐][播放器模板]; q- J$ t2 ~+ g1 K/ [& s2 z
  2. ;FlameCyclone 20230710
    " o& |- C3 g0 v7 E& C4 }
  3. + _( I9 J% e  h0 ~: q
  4. ;文件头
    4 d# v+ j/ L- r8 h
  5. ;======================================================================8 l3 T! `; e' D+ |
  6. .INESPRG 16                                             ;16KB PRG 数量
    / d5 C  d; c" G3 ?8 u. T! v
  7. .INESCHR 1                                               ;8KB CHR 数量! X5 N. i, S$ A: \6 Z$ S0 G, l
  8. .INESMAP 4                                                   ;mapper 43 R. q0 ^& r5 c) R  r: T; q
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
      E9 c! J# i( H0 Y6 d( r. }" k2 f4 d

  10. % o- N0 `" m' F7 ~
  11. ;==================================================
    : e+ \. H" Y1 U5 V, X# _
  12. SOUND_BAR_SHOW_ENABLE       = 1
    8 ^/ R- v' E. {+ i8 R# Q! G
  13. ;==================================================
    7 V/ b7 x# w" H0 H) k
  14. BANK_DATA_MASK              = $1F) f0 `6 l* S+ F' b" Z' f
  15. CHR_RAM_ENABLE              = 0: W2 v2 g0 _: E
  16. IRQ_SCANLINE                = 136( T! y% M, s( m: g! ^6 H* S* T" e
  17. ;==================================================) _  L0 D" F5 o* o; ?& P
  18. SOUND_DATA_BANK_00          = $00* j9 E) [: O$ m8 n! {, G9 \
  19. SOUND_DATA_BANK_01          = $019 Y; ?$ @$ y  \0 O
  20. SOUND_DATA_BANK_02          = $02
      E* S0 g2 u9 I7 v* ?0 B
  21. SOUND_DATA_BANK_03          = $03# Z# O8 ?" h. v: Z6 W
  22. SOUND_DATA_BANK_04          = $04- _* l4 y$ @( }. n, z4 m. Q5 _7 d2 e
  23. SOUND_DATA_BANK_05          = $05
    ; E' l* ?: a& u/ M% K' h& @2 o
  24. SOUND_DATA_BANK_06          = $06: T, X! z, c1 Q8 [
  25. SOUND_DATA_BANK_07          = $07
    ; O1 B7 B7 ^# N# g" _% r& k
  26. SOUND_DATA_BANK_08          = $08& {# z3 R: R3 D: D
  27. SOUND_DATA_BANK_09          = $091 z! q- v5 D, Q% k: G
  28. SOUND_DATA_BANK_0A          = $0A
    - y5 f/ V: F4 Y6 C# @$ |$ n6 c
  29. SOUND_DATA_BANK_0B          = $0B
    & e; o; n' q2 W
  30. SOUND_DATA_BANK_0C          = $0C9 i4 y4 L3 K( U8 ^2 K' t  Z
  31. SOUND_DATA_BANK_0D          = $0D1 y" s% r8 o: O
  32. SOUND_DATA_BANK_0E          = $0E
    # j: p( W' R, l. b: `& C2 r$ n
  33. SOUND_DATA_BANK_0F          = $0F
    2 b6 Y" M, {# p4 `) q( g9 T! ]
  34. ) S6 b" X, E7 `8 Q$ U
  35. SOUND_DATA_BANK_10          = $10
    / _9 G" X  }: y( F
  36. SOUND_DATA_BANK_11          = $11  v4 _# p1 [4 b$ J4 C& \9 Y4 z
  37. SOUND_DATA_BANK_12          = $12) o2 F% ^" A" W
  38. SOUND_DATA_BANK_13          = $136 P+ V9 y1 i! X
  39. SOUND_DATA_BANK_14          = $14% J- C* s1 S2 W/ i1 k
  40. SOUND_DATA_BANK_15          = $15- \* J; }. f6 w
  41. SOUND_DATA_BANK_16          = $16" K. G. U+ b/ N0 H) Y
  42. SOUND_DATA_BANK_17          = $17
    ! Z6 ]0 S7 t/ `
  43. SOUND_DATA_BANK_18          = $18
    0 h, U/ n1 b% ^" U+ U& y
  44. SOUND_DATA_BANK_19          = $194 A, h1 J3 u4 [7 x- s
  45. SOUND_DATA_BANK_1A          = $1A
    8 T9 a& k2 P  S. Y# P. d. l
  46. SOUND_DATA_BANK_1B          = $1B
    " E: }- d5 z" b7 K& W
  47. SOUND_DATA_BANK_1C          = $1C& t/ l  a) E" [9 U" |* H4 O
  48. SOUND_DATA_BANK_1D          = $1D
    - T3 G& W- k$ R

  49. 8 O8 d/ l/ w1 [! @* T# e
  50. SOUND_DATA_BANK_C000        = $1E- ]3 e* v0 F6 C/ e4 A! j  ~
  51. SOUND_DATA_BANK_E000        = $1F
    6 O! H3 q8 E2 v2 r
  52. ;-------------------------------------------------! g2 ?) |5 ?$ Q* r
  53. CHR_DATA_BANK               = $20& V& i: e# g6 V+ y! _" v" C
  54. CHR_DATA_ADDR               = $A000% d6 \5 U7 i4 q4 a, M/ m
  55. ;-------------------------------------------------2 t8 {9 l" y! w% s( Z+ ~; ]7 X  c
  56. PROGRAM_BANK                = $00
    7 u/ l* u, @9 S$ x; T% G7 T; p
  57. PROGRAM_ADDR                = $8000+ o5 m3 J) w2 Q4 n. ^5 C% u' u+ k) A
  58. ;-------------------------------------------------
    9 K7 k$ |% \4 r/ q
  59. RESET_BANK                  = $1F3 V: [- X6 x' C
  60. RESET_ADDR                  = $FD00
    - B) v7 X9 }2 z

  61. ' b3 W9 o" S: N9 x6 K) b
  62. ;==================================================0 I; |* n/ f9 m  w' M
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    8 t+ Z$ \5 \6 h6 Z
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引8 @0 i* @: E# ^7 k$ _8 ^- I# }& ?
  65. PAGE_SIZE           = 5                     ;每页节目数
    8 [+ L+ y  O% R1 p7 @, Y

  66. " \- @/ V7 J# q( ?0 }# g
  67. ;==================================================% [, y' V" L6 t: U9 Q
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    6 I3 g: n7 }% G
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数. f5 c9 D; F) B" z
  70. .ELSE
    7 `/ y  m0 m) Q" u3 n
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    3 |0 p  ^2 [9 F7 a
  72. .ENDIF
    / y" M; [1 c9 p& z- }

  73.   _. [4 R- ?8 Q+ z
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    3 |! J) |$ F- \: O1 A- _
  75. # Y1 ~# j! r1 i
  76. ;==================================================* A0 L; h% X. K- L0 @* Z% `
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    4 I% C* F  t" [, a4 ^* q
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    # p7 J5 z( ^" I" P
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    4 U! L" e) s0 P  ^4 {- m/ {
  80. ;==================================================) b0 P" [% \6 M/ P4 w% s& C
  81. Caption_Text_Pos    = $204D ;标题文本位置
      {- X: v- K0 ?  O
  82. Author_Text_Pos     = $2324 ;作者文本位置
    3 ]6 m" L& L  K& s; |" y
  83. Date_Text_Pos       = $236B ;日期文本位置
    ) i0 h$ l3 D. E9 r+ I+ o
  84. ;------------------------------
    8 @) r& ^- M* [+ i, T" `
  85. ;------------------------------1 P" M+ N2 v& O, U% A* r
  86. .IF SOUND_BAR_SHOW_ENABLE
      o1 M9 `) X; y; o1 a* n
  87. 4 g. Z4 a7 O5 F: }0 z+ z0 d
  88. Play_Index_Pos      = $2273 ;当前曲目位置1 Q2 _8 R1 m0 @: F, |
  89. Play_Time_Pos       = $22B3 ;播放时间位置. Y+ n2 `7 s# W/ U# Q$ w) Z
  90. Play_State_Pos      = $22F3 ;播放状态位置
    ; v, k4 u* u. W0 G7 t
  91. 6 G  t8 Q: D  K8 q+ g
  92. .ELSE
    + [3 f7 h* c+ u# Y

  93. 3 ]0 Z, C% b9 j) C" ~( X" x
  94. Play_Index_Pos      = $226C ;当前曲目位置
    : _+ B) o3 J' `0 z' o7 l7 @
  95. Play_Time_Pos       = $22AC ;播放时间位置9 e. w4 ?* R  e8 E# j; G) f& l
  96. Play_State_Pos      = $22EC ;播放状态位置+ F0 K: W9 S* |" n& x
  97. 9 ?9 f% O: t6 F7 L9 W) _
  98. .ENDIF
    8 ~7 ]/ Y' F; ]0 g
  99. ;------------------------------9 ]8 T% {& D" p
  100. Track_Name_Pos      = $222B ;曲目文本位置
    + w3 m* ?9 V: s
  101. ;Track_Name_Pos      = $00 ;曲目文本位置  P- A4 _# w. O# [& f- s4 S
  102. Sound_Track_Pos     = $2265 ;声道文本位置, K* f4 g: ]5 g: R
  103. Sound_Bar_Pos       = $2269 ;音乐条位置$ b9 Y5 @; e, j
  104. ;==================================================
    3 Q; H1 m8 t1 `6 S) h
  105. Scroll_X = $00
    ) ^) \! K+ r) O3 i3 G
  106. Scroll_Y = $00
    2 G( q6 t5 d, W- H% r0 F/ E
  107. ;==================================================
    " d% `* W. c+ d2 n/ _6 ~1 P* S/ E
  108. Sound_Ram_Addr_1       = $0100/ c# |- G5 {% B
  109. Sound_Ram_Addr_1_Size  = $802 O) l* h, A& z1 w$ M
  110. Sound_Ram_Addr_2       = $0090
    5 E, y; E* Z+ l1 J5 V5 M. s3 ]
  111. Sound_Ram_Addr_2_Size  = $700 h: A2 s: ]% T& N! \& d
  112. Sound_Ram_Addr_3       = $0700
    % r2 N" r9 X6 \4 i1 @
  113. Sound_Ram_Addr_3_Size  = $00/ J8 U" d& _1 v8 f4 `. V- e
  114. Sound_Ram_Addr_4       = $04009 [) D7 v8 Z% v2 w4 S) H
  115. Sound_Ram_Addr_4_Size  = $00
    % l% p/ u6 o$ o
  116. Sound_Ram_Addr_5       = $0500
    ' {8 S6 g- i' z) _0 E  M
  117. Sound_Ram_Addr_5_Size  = $40
    : @6 Q7 U) m$ e& {4 \
  118. ) ~; Q1 Z8 N6 D5 ]3 o- F6 C1 h
  119. OAM_TEMP_ADDR   = $0300
    1 V# p7 w  v6 f9 D  T
  120. % Y. R! k9 W7 h, L" ~; ]
  121. ;==================================================$ y# ~" u! [* S7 t( |
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器8 S% d/ Z: m* v* ^9 l/ D' n7 A
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
      h0 r5 t0 E' J( t5 f
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    & Y( ~. u: j* c
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1; B8 v) j2 l* J6 [3 o: C# ]
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加10 D$ r+ r' y! c9 r+ x6 y# Z+ v6 a
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    $ j; ^/ V( G& B8 J. S% U. k
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加6 ^: F% j5 N9 {9 X
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 8 y( M& B8 T; i
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存" L7 ?  P% i0 x
  131. APU_STATUS              =   $4015   ;声音通道切换
    ' o9 O! D4 Y2 z; P) L1 ~
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    2 Y( m6 `  r) i- p0 e; c
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    ! p# }1 {' o$ i+ Y  J5 Q, H( L" d( K7 y6 l
  134. ;==================================================/ c2 d; p- l; ~% r6 o& @- K
  135. MMC3_BANK_CTRL          =   $8000
    , V5 y  N+ S2 n" A6 Z4 h4 p2 x7 O
  136. MMC3_BANK_DATA          =   $80016 n9 Z6 O, |0 c* i6 \0 B4 F
  137. MMC3_MIRRORING          =   $A000  i4 ]! b& m: I+ p5 x- p
  138. MMC3_PRG_RAM_PROTECT    =   $A0010 z) S# m! o& _  Y4 }4 K: Y
  139. MMC3_IRQ_LATCH          =   $C0002 t3 o/ y& Z8 k8 K! _
  140. MMC3_IRQ_RELOAD         =   $C001. ]2 ^0 \/ I2 I$ m/ U6 v
  141. MMC3_IRQ_DISABLE        =   $E000  z5 `& ^. u1 z8 ^& @/ W9 \
  142. MMC3_IRQ_ENABLE         =   $E001
    1 b' D$ W) L( I6 _+ u

  143. " @! E( ~3 p1 o2 k$ [; }3 R
  144. ;==================================================
    % }0 F5 E- E' T% S; e# f1 ?1 a' X
  145. PPU_Addr        = $0200
    0 x/ h. t! L3 p: v
  146. Palette_Addr    = $02C0$ h# c$ Q' C" [9 i+ S
  147. Sound_Bar       = PPU_Addr+$E0
    3 x) L# L6 |9 p7 P+ z$ S/ ~4 v
  148. ;==================================================* B% C/ i" K% n2 z. @: }% e; j
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D" c/ R3 q- z4 o* B6 \8 H* b
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11' y7 O* g/ T* o
  151. PALETTE_UPDATE_MAX      = $2C. H1 K' m1 N/ K% X- M
  152. PALETTE_UPDATE_MIN      = $21: X" q/ y1 s+ y8 f* ^! F1 k4 {! [: N
  153. PALETTE_UPDATE_INTERVAL = 60
    , x, N) r9 U* S# G
  154. ;==================================================
    / ^3 g* a1 K% ?6 j/ L
  155. Sound_Bar_Cnt       = PPU_Addr+$F0" o# [0 Z, I) o' @, W
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    : I+ I) X' R, T/ k8 B& H' _: F
  157. PPU_Addr_H          = PPU_Cur+$03
    2 A/ B* ~2 _& ~& {3 g$ A& {
  158. PPU_Addr_L          = PPU_Addr_H+$042 R0 `/ Q; X0 _% W5 R/ D& u
  159. Screen_Ctrl         = PPU_Addr_L+$01, \0 @3 e0 S$ @' V7 C3 A
  160. Screen_State        = Screen_Ctrl+$01
    : K* v# T6 O  l/ j& H6 ?
  161. ;==================================================" Y( X2 }% c  u( m% E9 ^7 B
  162. Use_Ram_Begin       = $50* N5 `! O8 t% q3 G0 Y
  163. ;==================================================
    7 M; p+ X$ _" _4 ^
  164. JSR_Addr_Op         = Use_Ram_Begin
    3 l. u8 N& _$ f0 z9 p  K
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    . e$ k0 Q5 j4 D1 v8 S
  166. JSR_Addr_H          = JSR_Addr_L + $013 K4 @4 {* @$ f
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    - \1 E* C- N) j8 k, n, j7 l
  168. Data_L              = JSR_Addr_Rts + $01
    , y+ ^" K4 K" a
  169. Data_H              = Data_L + $01
    # N9 ^) l& H9 ?/ [: Z  ?! i
  170. Data_Cnt            = Data_H + $01% L9 m' J# d1 x' R% x
  171. Data_Buf            = Data_Cnt + $01
      J5 R. i6 o/ d* \+ c
  172. Nmi_Time_Count      = Data_Buf + $01
    ! W% [6 J$ C& n( ~. f
  173. Time_Wait_Cnt       = Nmi_Time_Count + $014 f( V+ @7 ]& ^+ T9 I- f3 P
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01: s% P4 {. n5 a) m, {$ E/ a& b
  175. # l6 g" U8 @7 @5 }' V( U
  176. ;调色板刷新标志( z" b: A' H  U
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01+ I8 t) i& o+ V6 h) e6 R) p# h

  178. 7 D7 p0 K$ H8 Y3 D
  179. ;当前帧文本写入禁用标志* E. q8 r. \7 |& w* [
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    " |; t- y3 x% o2 B: k0 O+ P6 v0 q. p
  181. 9 j8 p5 N! d5 L3 ^4 e' |+ \  I
  182. ;==================================================* L3 \0 m* T: ^. a1 b
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动  v& d/ s0 i% c: A# p
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    3 `1 F1 }/ P! x; D9 e. \
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    ' o1 N+ S$ \8 D. R, l/ V* ~
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间* y+ p$ s9 ~9 w, A
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间+ Q' D/ W2 K: N, }5 V+ Q# a( H
  188. ;==================================================: h% y6 F3 b4 n: w
  189. Key_Keep            = Text_Disable_Flag + 1/ G- K, r! c# z& o3 Z
  190. Key_Once            = Key_Keep + $01) U( k/ ^' ~3 `* m8 u$ Z
  191. Key_Kemp            = Key_Once + $01- l+ L6 K" ]9 k0 j- U$ I
  192. Key_Temp            = Key_Kemp + $01
    4 f+ \* Y* f/ N9 q
  193. Key_Getv            = Key_Temp + $01
    9 p" w  G' w$ O. n5 s0 q- ^$ k1 w8 e
  194. ;==================================================' d' @! a; j+ t0 T
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集5 f% ^9 }% b3 k" t  h5 R
  196. Music_Item_Last     = Music_Item_Cur + $014 U, m: o, J: z0 s
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    ' T* e8 E9 F! l
  198. Music_Cur           = Music_Total + $01  ;当前曲目4 J# e: K+ a, {2 B
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    ' i6 p# K. B/ p  H
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态+ S: K( T; |1 x
  201. ;==================================================8 V. z6 I: |# V$ s3 p
  202. HEX_Data            = Music_Stop_State + $01
    * J7 N. S; |# l/ ]3 H7 }4 M
  203. DEC_H               = HEX_Data + $01& X% S: K: I) B1 x. j
  204. DEC_T               = DEC_H + $012 K; Z# X* J% L! ^, s
  205. DEC_L               = DEC_T + $01/ w0 ?$ V, N% R" {1 I
  206. ;==================================================
    . ]& m) I; K  D8 J
  207. Time_S              = DEC_L + $01; c' \' o- Y8 \4 W6 Y8 }
  208. Time_M              = Time_S + $014 N; G4 W- ], U& k
  209. Time_H              = Time_M + $02
    - c, U8 S. Z: T) x! y
  210. Time_Cnt            = Time_H + $03& u1 Q0 F, \, J, a( {

  211. 7 G$ k$ t+ `2 m. M5 g- P1 F
  212. ;==================================================" Q: O' l) {$ d
  213. Music_Bank_8000     = Time_Cnt + 15 F2 `) B+ L9 n
  214. Music_Bank_A000     = Music_Bank_8000 + 10 |) i' Q! O1 _9 ?% Z
  215. ;==================================================
    / o- n' U" ?6 a; x9 t5 Q
  216. Scroll_H            = Music_Bank_A000 + 1
    5 O7 x4 P) @5 E
  217. Scroll_V            = Scroll_H + 1% Z2 K& n5 B/ V0 J: m9 D1 N
  218. IRQ_Process_Index   = Scroll_V + 12 X2 R+ h: w( g9 N
  219. ;--------------------------------------------------
    5 j/ ]' _, H/ C
  220. Page_Cur            = IRQ_Process_Index + $01; _6 ]. o  p3 y! R: ]& I5 o
  221. Page_Cur_Index      = Page_Cur + $01
    $ h5 n: Z1 R* x* |
  222. Page_Cur_Cnt        = Page_Cur_Index + $01; R# p! C* `, j5 p- l
  223. Page_Last           = Page_Cur_Cnt + $01) R2 \) Q/ R: U
  224. Page_Last_Index     = Page_Last + $015 G5 e  i- g; B$ ~  e5 I
  225. Page_Last_Cnt       = Page_Last_Index + $01
    4 d, e  M! U; j- \9 y, v6 f
  226. Use_Ram_End         = Page_Last_Cnt + $01% H; l; K6 q4 U
  227. ;======================================================================
    + F# T3 [) B/ r
  228. ;音乐数据块$ P* w/ C& R, d0 S/ P8 h! x

  229. 9 Y7 A4 }' A% `4 Y1 V. J5 T
  230. .IF SOUND_BAR_SHOW_ENABLE
    : X* w  B* y8 T* }9 F+ R, W
  231. * t' X* {1 M1 m6 [7 L7 q" X1 s
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK- ?" a! w9 D4 i  t. z
  233. .ORG $9000
    4 @' W& T( r7 T8 P6 R9 M5 I
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank": i( }) I: s7 I
  235. * ^0 _, S0 l. e- {1 Y+ e" T8 ~0 [( `
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK4 M4 |: U. @! c& R1 p
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    1 h  E" t9 u* U& s' l* ^) J

  238. / O" R& y& I( v$ K
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    ; \5 t1 O* Z3 {; l6 z3 F
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"3 y4 a9 B' u6 u/ q1 C8 w( a! W3 S3 x
  241. 0 ^0 Y0 X' Z% Q6 d- Y- q. i' k
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK' ]" ~. f, W; N  U7 f! @
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    . V/ b7 ]7 T; z. |
  244. - f+ ?7 \0 J! L( \
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    - O' }! l. F4 i' u1 b( y
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    ' o+ @! E) R& ?. {& b& o
  247. 2 A$ B0 |: N" o7 A1 W
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    * l! [7 D6 P, R' n9 R* M
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    2 s9 Y) O+ B3 J7 p6 X: [

  250. , `: M' g1 ^- k& n3 y( O, B- l% J
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    # r( ^" Z* c* Q1 j. ~0 d
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"1 ?; h! d* }5 k/ W9 \

  253. ; S1 [+ o0 t; Y% ^  t! H; m, P
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK+ w, ?- ]( q7 f4 H' G2 w
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank": h4 W( m2 x1 r1 Y; l/ F

  256. 7 {5 C9 d) p# F+ b8 O" B: g! }3 R% z
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    + C, Q* C  j4 w/ n/ @( m% {; r
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    " u6 I1 j5 B7 h+ R. Z

  259. % W$ A9 M$ @3 ]
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK/ e. @1 W. Q9 t/ t- {7 ~
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"1 U2 I6 U& _/ m8 L
  262. 9 ?9 b2 s: n" W. [7 R2 G* K
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK3 |; T- b7 ?3 }$ o/ G9 A
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    * Y, J0 t7 u% q8 O. j9 F# T

  265.   z/ [4 F% V+ F* X$ f
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK# v( |! N& p4 @/ R* `1 u2 d' L. }
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    . n: W! a, A6 T5 |2 k% m5 H* r& C

  268. % C. G$ `  V# \; b. |; E
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK5 k- s8 s1 O! U  V1 ]/ E
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"8 h+ D7 I. D) r1 _- \
  271. % \0 p& R5 ]# Z& t6 ^/ m- t6 _
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    * W" B" K/ {- D0 F
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"0 E0 J6 |; s2 I

  274. 7 q, F: @( d0 w4 |: f3 t7 P
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    : [# [( B( |1 T" b5 C+ \
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"$ W. i4 K) l8 {+ v

  277. 7 q' h$ Y/ E# S0 H6 G! i! I4 ^
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK0 z- y5 r9 N% P3 o
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"/ z  }+ Q0 u8 X, N. S

  280. % ~, Q6 |/ ^6 |( D; s
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK% A! Q" b+ U  t
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    8 ~3 r! E5 R  {9 ]( j( A6 X

  283. " y* [9 y- q0 V. {; L" Y8 S
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK+ q4 Q6 |" P- M$ l# _
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"1 v- [! e3 r, o5 @% I& l8 I+ Q$ B4 C
  286. ; G" l! }3 T2 d+ F( F8 @
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK8 Q+ i8 p( A" y  V' r
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    7 G4 Y) h( y, b* Q

  289. 9 R% y5 W8 `# g2 ]6 c2 i( j2 U5 H
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK1 ?9 ]1 q; J2 g- r' G# s1 D6 w
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank". K& E8 H0 o. E: B+ c: [6 ?

  292. ) y1 R) t- Z3 R' Z; E7 J# |9 p9 I, ^
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    ( E* F6 h7 r4 d6 H; v4 U6 A5 [# H
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    ) R- k5 A8 `, R  R$ J
  295. 1 p7 V. e2 D1 o' ^& L0 m
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK1 E. a( d* G: b. p+ z
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    2 D! H, {& z4 W4 n# a

  298. 9 D; b5 S4 a# p+ v/ r; D+ J9 C
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    $ I6 W' R5 |( D/ g. j) X- g
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    / W: i4 h+ b/ M9 {
  301. 8 d( s; H$ k% P( h; E! d7 y
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    2 W. O, E: R; V9 v) j& T
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    / E3 I$ G- d" b2 W9 R# T
  304. 2 a1 ]; H( L8 w/ `2 S% Q$ N
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    3 j( A. f4 q4 V" F5 A% O5 I2 X0 F
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank") d8 o" C5 G& {/ z; P; @1 F

  307. 5 W' H0 A* I) s2 ~
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK+ d' u# P, j8 Y8 Y+ }
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"0 t2 w* v! _( g% J& R6 S; ^) w% k
  310. # b" M9 w# Z" P& C- c
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK- O* m" n8 ~( `
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    9 z( I+ X. N- j, g! B& r
  313. ; M3 Y3 {+ Y. V' N/ R
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    $ }2 R. V% H& e. J
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"0 v9 _0 I1 x& K* t
  316. % g1 Q7 A0 S* A0 \
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    - Y1 [+ S( ]. H- H, q" q
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ) J  g* r3 H  W, F

  319. " C# }. }8 Q7 ]+ Y
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ! [4 P7 v' E/ j( F1 s0 G* X% P' w
  321. .ORG $D400
    + k: B3 F( V- G0 c8 f. l
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    , r1 E5 a0 A. L) X3 q1 I; J
  323. $ _& K" ^  ?3 q* }* O
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK& H9 j+ W+ F1 `% \# \' X
  325. .ORG $D800
    ! K& R$ T: b2 ]! R+ v9 k( y) x5 b  i* l
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"2 T% s$ I% O: }2 W

  327.   @! U0 I9 d4 v% q

  328. 0 \+ K" k) D* `( C' C% T& ?+ C
  329. .ELSE
    0 G. X5 [% @& H5 X* P- h3 B

  330. . B( S. }7 w( W
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
      t$ Y1 |; O( O2 i
  332. .ORG $90008 C$ z* v# u. a5 R5 r8 g, o
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    4 {8 [  i" b- [4 E5 T

  334. ( b. d0 i/ H2 J' Y
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    : ^' z& u2 G7 Y7 p/ M% ^' c
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    / \1 B+ _8 [/ B, w7 N5 e7 n# `

  337. 0 H8 o! E- P6 F" ]
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK: X! T8 |. u% ?/ x( Q/ `
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    + K1 C' A1 g6 D+ c3 O  i

  340.   L/ W# R9 k" \  `5 ~7 ~) A  v  Z
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK9 q' E+ b& n' {. r0 k( V* M
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    # u/ N( u7 j; n; H

  343. / [: k2 {9 A; W/ L6 ^
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    0 n0 S' U. E$ G  \8 u
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"5 k& V/ v3 `- l/ X

  346. " }$ C, G  l$ h8 E3 p* J
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK) u& ^6 s& c# [# ?0 e
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    $ k: B3 U6 ~8 K, h$ V
  349. . e6 b: y: g* @/ t& ~
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK" [2 o' E3 Z: p3 F6 F( P! T+ J9 w
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    & |) M3 U, H7 g4 w; X. b

  352. ) r" R) }) }* K
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK" _* g8 ?( K( W# U5 s
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    4 U* x$ C6 }1 r! h& d

  355. # ~0 Z5 M( C/ s5 t- o* ?1 }
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK6 N6 Q) F! |$ |
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"1 c2 H1 n$ ^& h5 v$ X# A6 k
  358. & F* v" c+ c# B! }  o7 S
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    6 `* _, L  [* B: O8 r9 s
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"5 ?( K) R8 H0 I& L: j  B
  361. 8 X( t. k& f8 w) Z$ {
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    : m, l3 R8 G7 ?6 I2 q$ y% @
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"% G) l$ K" x, H, B

  364. * t* G: ^# O7 m, ^2 R
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    2 |4 H# b5 n7 h. {& H4 J
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    / h8 C# p- k, Z. v3 q
  367. ) Q) W, f2 _8 {3 M  d
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK" B8 l- I4 D7 r
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"% d. a. T- U  R( _. _1 _# R

  370. ( ~" ~8 o- V# N- r
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK( P" h2 Z4 o- u  x" e* {7 i
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    ( B% E- K8 J- S7 F- u) O

  373. * u" ~6 `6 S, l5 h7 L/ w
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK7 D3 b% Z0 _: D, s2 }, a
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    % ]( m3 f* y' q5 d: q% f
  376. . L9 z0 Z6 C" e. k) B7 y
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    2 S5 f9 f" n- x* C* U
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    / @! N+ F, K6 A- I# r

  379. 4 i2 _) B$ e. f* S/ ~5 r3 w7 _
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    7 W, A& W! J  R! J5 j
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"8 ~3 C) c/ {# W3 n8 e

  382. - J) s7 e3 w+ b9 G* H" s
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ! j8 C) m7 B: ]4 f
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"# p2 a. L& e4 J% ^3 ?
  385. 6 e  G& A  U0 S' {
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ; H8 [8 x. R* T# ^+ ^
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"  g% |% M3 [8 x& N. s- B; y7 F
  388. 0 j' A, j5 h4 ^/ j! P
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    ' V% y- v" ?# G) ?' x/ K
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"  z% U8 l+ v# |3 j* l+ i0 d% C
  391. 7 `3 M1 U: A! J0 F
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    ! Y4 `! J) o3 U9 `+ x5 c1 z
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    / I, q( Y1 y2 s4 \! E+ t: {3 d

  394. , R2 l& A- ]- d9 v' L7 G
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
      H0 m; C9 L8 G& V& P) N7 v6 ^
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"( o; |6 C0 ~) N$ U' p' a
  397. - f5 o; h  W: k5 A& m* F* [2 ^
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK  ]7 |8 {% b) @( c; b
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    : E+ ~( s/ j0 @' r. |6 H

  400. % w: y  N3 m* D" R% `# l) N
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK% [& D8 T! ^5 O
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"; h  I7 Z  ~" F: z; @0 I# [
  403.   i# F# l% Z, G4 m6 z/ Q
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    3 U+ E7 A6 O& v* |' ^- e% Y2 J' Z" L
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    ' }* Q$ j( K' o9 R* v3 H' e
  406. & J" r) _. ^  N
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    & @9 U, D$ J3 j& Z8 h
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    . Z& k. j/ K/ S& e: k* e

  409. 7 S2 M$ }* U% i, Y, m
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ! K2 w! [! n, i6 S+ A
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    ' ^+ z2 r. r- ?$ N9 {: d

  412. 7 j' G" z5 a, S5 q" j- u6 w
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK6 K' a; Y9 a; A4 g
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    % P# O) t4 Y9 e" h: @& z

  415. 5 I1 J# _6 r; p
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    * g- ~& X+ u1 J) c# v
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"5 E. a# j/ r  }4 x
  418. 9 Y& V' O2 y6 |' G. Y  z$ W- M
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK/ v+ N8 r1 M$ B3 G" Q+ o, g
  420. .ORG $D400( U" g8 G0 `0 [1 T6 H2 H" L# x
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    ' `0 {# g' M# T# w' {

  422. 9 W0 z$ o( a7 \" I
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    6 R, I& S. t+ B) g( A
  424. .ORG $D800; R, j& ^, K6 A
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    : r$ O+ G1 [. d4 g. K

  426. ; Q0 L& x4 b/ p+ Z$ z
  427. .ENDIF
    9 @6 s; o) t$ e$ C

  428. ' o$ X6 Z! ~9 G. {+ c6 ]7 d
  429. ;CHR图形数据
    $ w  G/ P  v; F. |  o
  430. ;======================================================================
    8 |) v/ x. i5 A9 a
  431. .BANK CHR_DATA_BANK8 L7 {5 U- s5 ~
  432. .INCBIN "chr_bank/chr_data.chr"
    2 `& B% A8 \; R7 p3 t
  433. ' E+ ], R" A& S$ d+ G# m/ i: G
  434. ;======================================================================
    3 N$ Y2 i  U/ _8 ~8 k8 F
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK( }- L! r) w& A4 _
  436. .ORG PROGRAM_ADDR% i7 p/ t6 I  H1 V( E! _: q

  437. . Z/ B- K# A2 `$ _2 u
  438. ;==================================================1 f: T0 o! v" E- h
  439. NmiProcess  @% C7 ^( w# |

  440. ! U# G4 G+ Y# J9 e2 M: _3 o
  441. ;关闭屏幕控制5 h. V0 O1 {7 O( [; h6 r
  442. LDA #$00
    ; ]9 q0 ?+ H* C) u9 Z. b
  443. STA PPU_CTRL  ]- }1 O9 k& p+ o* ?
  444. . s( h4 `+ {# }9 Z: F
  445. ;没播放音乐就不需要触发IRQ
    2 T/ ^6 w9 k7 S  w4 \) V3 A
  446. LDA <Music_Stop_State
    , a1 H+ }: g* _# s* K* Q& J
  447. BNE NmiNormal
    % w1 f. \+ U* A1 O+ x; e

  448. + t6 s( J# P* O$ g% I3 V! u
  449. ;重置IRQ索引
    5 Y. X# Q% Y6 U) ~+ H
  450. LDA #$00' ^; h! r; i7 }* m
  451. STA <IRQ_Process_Index
    # n4 L( p9 {/ c& g& U1 E0 o' |2 @
  452. 3 J% c! c2 B  z
  453. ;时间秒数为空则跳过3 Y; u2 U4 ^) G3 K6 d) s
  454. LDA <Time_H
    . w4 U. I. Y" E0 C
  455. ORA <Time_M7 Q" b1 t/ ]& S& a: y
  456. ORA <Time_S
    ( u1 g7 c: y) Z6 w$ f; o
  457. BEQ EnableFirstIrq
    : J# s6 c  Z, L; H2 i9 Z

  458. 6 j& m+ q4 B: i' F* c& |3 D  n
  459. INC <Scroll_H. z  a$ Y9 R6 u

  460. $ K2 d  w( Y4 h' u  j1 g
  461. EnableFirstIrq 1 L% L0 r/ `8 Z
  462. ;80条扫描线后触发IRQ8 [  F- a0 }$ {! Z' d  U
  463. LDA #IRQ_SCANLINE* N  `4 Q4 t" y5 B
  464. STA MMC3_IRQ_LATCH
    # g9 K" q1 {% G7 l7 T; r
  465. STA MMC3_IRQ_RELOAD
    2 G: Y* b6 h. \, q' P( d5 R2 \
  466. STA MMC3_IRQ_ENABLE' ^1 O; ?6 |) ]& n+ f
  467. CLI9 H1 j  x& e: W: j& }
  468. ! W, d- v2 O6 |6 n# C9 D* N
  469. NmiNormal: w0 V5 c2 `1 ^3 v$ j( l" h" _

  470. ' {+ d6 @4 K) D1 K& {1 X/ n
  471. ;处理PPU图像+ F5 Q5 E" h! Z" t/ q
  472. JSR PPU_Proc/ M3 Q! Y' U; o* {, X2 B

  473. ( `0 C. [# j' H' y$ S8 C. p% R1 R2 H
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    . I! K3 E; `3 d/ ]
  475. LDA PPU_STATUS
    8 w  Z8 H1 G1 x& l: n9 }
  476. ;LDA #$00
    / Y- Q7 `5 n. S4 W- E1 [+ Y
  477. ;STA PPU_OAM_ADDR
    ( L: ]7 Y. Q. U
  478. LDA #OAM_TEMP_ADDR / $0100
    . X8 R: O8 {$ y2 I8 V. W- \6 _6 ~
  479. STA OAM_DMA
    6 f# |2 _$ h) Z! y: G- N6 E9 o) }

  480. 9 Q7 j, k5 E& L0 z# P1 ~5 ]% O
  481. ;启用NMI中断! U) x/ E* c0 c6 D1 R9 L6 \
  482. LDA Screen_Ctrl7 Z- e" R7 \- S% f9 y% d  o/ E
  483. STA PPU_CTRL( Q% Z8 |+ Y1 n9 J
  484. 3 @0 w3 G' H( ~
  485. LDA <Text_Disable_Flag! x, {, b- y" T% {9 ^: g
  486. AND #TEXT_DISABLE_RAM
    5 d& f% c4 `( C" d: v( S
  487. BNE Nmi_Sound_Play
    0 B' b# T1 s  b& f2 r; I7 j- b

  488. 1 g3 y; v2 P# {4 e
  489. ;处理手柄输入
    % i% f+ X, B2 [' w) T: _& Q! F
  490. JSR Key_Proc
    $ H! _2 u9 O5 l8 w# s. ?* r% L
  491. 8 l! k% K: P) n$ d% d9 B( N
  492. ;切换音乐(手柄触发); w/ \4 H- `4 Q' |
  493. LDA <Time_Wait_Cnt( V3 G, l4 I' V# j, J6 P1 j0 U* R
  494. BNE Nmi_Cursor_Arrow
    ! o2 F+ C8 t2 f$ K! e# R
  495. JSR Change_Select_Item
    9 w, f4 E. B5 d5 ]7 M  [5 D
  496.   p) T- [5 M- V5 _$ J
  497. Nmi_Cursor_Arrow4 C5 s  p, {1 W7 a
  498. ) A5 _: v& V0 u9 z; ^- ]
  499. ;处理光标箭头* h- B  Y* Z( Q" {5 g% M% P
  500. JSR Show_Arrow
    ( W* b8 X0 i& z: L

  501.   E# t2 r3 t' U0 q9 Z; E2 D
  502. ;更新调色板7 ^" a" S/ f; D  l
  503. JSR Update_Palette_Data
    & U9 U$ N) M8 I) z# [- T

  504. 0 V* B0 T9 z# j- p
  505. ;显示时间(缓冲)3 i1 ^( F$ n& t1 a) C  i
  506. JSR Time_Show
    + J- s- L* Z7 w1 @1 N( G

  507. 5 s" j3 C# t2 c, a: m
  508. ;音乐显示(缓冲)
    " O6 y; B& h5 f' q) |
  509. .IF SOUND_BAR_SHOW_ENABLE
    % ~' E7 c# j' m( z
  510. JSR Music_Vision1 w2 i! `; n. T% i
  511. .ENDIF: t4 s9 u, X4 j
  512. 7 N9 l( s0 \  b! z
  513. Nmi_Sound_Play
    1 Q( l  k( P* q
  514. ;播放声音
    1 V+ p5 G8 _5 |
  515. LDA <Music_Stop_State
    $ ]; m( E) l/ y
  516. BNE Nmi_Time_Wait_Set
    # r- j5 k' ~( |: M
  517. JSR Sound_Play_Proc
    , T$ v0 f- A8 A1 y, F! c
  518. 9 Y4 x4 Q& h1 B0 i( A/ n) R% X
  519. ;播放计时  B% I, Q! a! A
  520. JSR Time_Count, P  @: j+ h, b. `$ N
  521. 6 n7 d2 D. T( u# e1 i7 G& s. t; e. A
  522. Nmi_Time_Wait_Set6 m' G( b! w+ `7 W3 d( T
  523. LDA <Time_Wait_Cnt, v6 u; w! w. B% M. S
  524. BEQ NmiNormalProcessEnd
    6 L  {4 U! a3 y& n; N1 |
  525. DEC <Time_Wait_Cnt
    + ?  n. Y$ s' j) ~. o
  526. NmiNormalProcessEnd
    # q5 w  A! g2 H7 w9 A
  527. 1 \  L7 z0 v) ~* Q: B
  528. INC <Nmi_Time_Count
    . H+ \4 O8 y4 s1 ^$ N/ e) X1 P

  529. % C, i5 P/ L9 Y. Q
  530. RTS# |) L% o* u$ p( N
  531. ) h0 j0 G% P  u& {: M- j+ Y
  532. ;==================================================
    5 }6 I/ P! q2 C4 B. l# g' G' {
  533. Init_MMC3
    4 k  x. x! [# X/ u2 h3 C# L/ |
  534. ;==============================5 B6 u" u0 g; N0 C8 b5 y, I
  535. ;禁用IRQ2 M# x. q+ w* W! y5 u# U1 {
  536. STA MMC3_IRQ_DISABLE% s& w8 h; N9 Q0 L2 o7 |, f

  537. ) d5 r- w4 g: K+ I% r2 ]$ k
  538. ;水平镜像
    : h: ]2 k/ \- X& [4 l8 @$ ?$ N5 ?3 Y( O7 z
  539. LDA #$01
    ; m- C1 _# h$ x$ Q. ]
  540. STA MMC3_MIRRORING
    8 l! x) v" z& o# Q; R
  541. $ r( h8 o# P, Y+ d+ w
  542. ;初始化图形bank
    + Z) D) Q& W+ N- B
  543. JSR Init_MMC3_Chr_Bank
    9 g/ F3 S$ h3 O+ b

  544. * q6 @& `# A0 k5 Z
  545. RTS
    / ?6 a0 F7 {$ z+ f) u" l
  546. ;==================================================: s0 i# o7 e0 j
  547. ProgramBegin;主程序
    ' [! Q1 Z& e' Y) A
  548. LDA #$00, G7 v% c+ c9 n  U  G& r" e
  549. STA PPU_CTRL
    7 F1 F4 i0 i/ f' t/ h$ h9 _
  550. LDA #$00
    6 T6 a, ^: B7 I  E# w; o7 U
  551. STA PPU_STATUS
    - }& E& K( X) g  H. a; Y/ G! F7 F
  552. STA PPU_MASK2 k1 D6 F/ x8 d! u
  553. STA JOY2_FRAME' o. u  B! ~) h

  554. 4 B; _0 j8 K, |& l, Y( L! _5 X/ i( @. Y  j' ?
  555. STA PPU_SCROLL0 [2 f. ~) c  V) y* l5 v7 t8 n+ A/ Y4 f
  556. STA PPU_SCROLL
    % [; k4 `. Q2 g# T) Y$ [
  557. 0 x& v1 T) u( D9 C' `
  558. ;==================================================
    4 L2 ^: f. N7 Z" S) u
  559. LDX #$FF
    % ]- |) B: e$ J$ h) ]
  560. TXS
    : Q& n2 |8 G. L/ @6 @8 N
  561. & F% v1 m* b- _4 H0 G& P
  562. JSR Init_MMC3: Z  _  E  M& b7 x+ i7 x

  563. 7 s4 G6 c) |" `: G5 |
  564. LDX #$02
    " Z" v! K7 D/ \; n6 Q
  565. Check1
    : K/ \+ J6 y- t# d
  566. BIT PPU_STATUS
      N. b; V% ~6 P# o  g
  567. BPL Check10 L! s$ I: A/ B+ [( A# J
  568. Check2
    - ?& Z6 ]2 K5 t/ [) X1 p. m
  569. BIT PPU_STATUS. P7 ?& L9 x* {6 Q
  570. BMI Check2
    : ^0 K" ~4 a- W: g

  571. ' F/ x1 B3 n. a5 ?0 \% I, b
  572. LDA #$0F
    ( R5 @( m: L  |' U
  573. STA APU_STATUS
    ( N" A6 B7 c: w) {6 c; \) G' L/ u
  574. LDA #$C0
    4 X* g" [, t" c1 R" m0 S# Z$ V
  575. STA JOY2_FRAME
    ' ^7 ]9 n8 ^: G4 }; U- ~6 h  D

  576. . H2 I5 a1 c2 U: h; P$ ]
  577. LDA PPU_STATUS8 N+ h2 n, M2 x/ l$ a
  578. LDA #$10
    ) i- U2 j! a, H
  579. TAX& U+ X5 z+ w! g1 i0 g
  580. Check3& b7 S1 ?  k' s8 b" g8 k% R
  581. STA PPU_ADDRESS
    * g0 i: h# k' ?; s# J3 p
  582. STA PPU_ADDRESS) Z  _3 l) h) K7 U* T6 t' Z$ v7 p
  583. EOR #$00( C# J7 }" q4 d3 C7 K  M
  584. DEX
    ' i' N; r" F6 s2 X4 L- M
  585. BNE Check31 N5 K8 `9 w0 x2 ?$ `% J# ?0 m6 [
  586. ;==============================
    7 q# S5 G# L& u$ ~; Y: q, \6 U
  587. ;调色板清空, D1 @: t, x4 |' l. c0 e  S
  588. LDA PPU_STATUS% M/ z0 q5 L0 w: ~- D* \
  589. LDA #$3F' {4 V. q, x6 @  c
  590. STA PPU_ADDRESS9 J9 t7 g* f4 q: f" v4 V4 j
  591. LDA #$00. A/ u# Y$ g4 V5 @
  592. STA PPU_ADDRESS
    & G- K( g, f: Q
  593. LDA #$0F; u0 f  ]6 T" Q8 e6 }4 d# \
  594. Palette_Clear
    1 `# g- E8 R/ x. ]: q, }* F8 B8 ~
  595. STA PPU_DATA! o4 d# x2 E9 t: t( r0 x
  596. INX! @8 h7 ]8 d6 H7 i
  597. CPX #$20
    $ x  I% \) {# \) i& p
  598. BCC Palette_Clear
    $ G' S" [$ e) p4 ^# t& I& f' l
  599. LDA #$007 [; Y$ v4 B; y4 Y# C
  600. STA APU_STATUS
    ) o* N& ]" A5 n1 K& ^8 u8 T
  601.   U0 F5 V5 n& r/ k/ e6 q0 F
  602. ;==============================7 o0 F( n- W/ Y$ f6 W5 Y
  603. ;RAM初始化. w  ^! Z* \8 Z" A' v6 D; i
  604. RAM_Clear_All7 `3 E1 U' E0 |" M
  605. LDY #$002 l8 e$ t! S. r& t3 Q
  606. LDX #$08
    ) r1 \4 q3 x' h* v3 g$ w4 A4 X
  607. LDA #$00
    - [* y: V) c3 \( s
  608. STA <$00
    / @* c* g% W2 H( }* a& H* L
  609. STA <$01
    2 r7 j* m" j( u7 o3 D' c
  610. RAM_Clear_All_Start
    0 D/ |1 l+ D7 }
  611. STA [$00],Y
    5 \( `7 T: q" ~0 i, K" e3 @6 O
  612. INY
    - _4 L4 m: h" e: X- S: K' l- H) a
  613. BNE RAM_Clear_All_Start
    2 Q2 m+ q" l  s" I4 j
  614. INC <$01
    ( _1 h& \. w3 e# ~; f3 f
  615. DEX- f8 v" S4 {& ~5 |) l6 j
  616. BNE RAM_Clear_All_Start9 i/ d9 Y$ I1 B" m% `' X# W

  617. + o, b0 x. s) t) @' H0 V5 |* B" V6 K
  618. JSR VramClear
    4 W8 q0 Z7 x& X% B
  619. JSR VramInit
    : J$ P4 O+ i+ Q3 Y' Z
  620. JSR OAM_Ram_Init
      {3 K, r7 d7 J% F
  621. JSR Init_Palette_Addr
    ! b8 ?" r  s! J% u$ S

  622. * B  z* h  b$ v3 I$ h6 b3 w
  623. LDA #$FF
    2 J+ B1 `! H* j) C% q* F
  624. STA Use_Ram_End& B( M9 O' y: \+ S
  625. ;==============================
    ' L% D, ]4 f- Y# Q3 H# x! {
  626. ;初始化背景调色板6 \2 s, Y  p. o/ C5 V
  627. JSR Set_Palette_Color
    + [1 Y' Y& J. O6 X$ F
  628. JSR Set_NameTable_Attributes3 W" S! r) ^; s& u: z

  629. ) ^* T( d6 F; v7 ]: P
  630. LDA #$00
    - ^6 O+ Q6 o  ?
  631. STA PPU_OAM_ADDR! K* Y1 P* p) a+ r3 N
  632. LDA #OAM_TEMP_ADDR / $0100/ l" l0 w' b4 g, F4 V
  633. STA OAM_DMA8 T- I! O8 I7 \& A9 h
  634. ; b" G5 y- _' h: L. Z% X, I; @, R
  635. JSR Sound_Reset_Proc, {9 P9 w3 \1 t% u  o# s9 l
  636. JSR Set_Sound_Total
    1 r: E5 u2 V6 J0 A8 w
  637. 4 `: M+ t  f/ h. _" n6 x0 Y9 ~3 p$ y
  638. Init_Start_Music
    $ W/ w3 \. Y$ k+ V& f4 ]
  639. LDX #$00/ U# ~1 c' J+ k: l
  640. Init_Start_Music_Write3 K% y4 v  }" K2 c5 N# w) ?
  641. LDA Sound_Start_Port,X# L2 r4 i1 S0 f; S% ~
  642. STA <Music_Cur,X
    " k: e" {1 L" j
  643. INX" ~; N% @6 P4 J% C8 _& {- P
  644. CPX #ITEM_MAX_SIZE9 p+ a/ u& ?2 p4 U  L
  645. BCC Init_Start_Music_Write+ H6 h( S% y4 h5 M8 Q9 ]* X

  646. ; J7 k8 N1 M, ]& X* B4 F
  647. JSR Show_Music_Text
    $ O5 ~  a, S( K  V- R! ~! B; v9 Y4 U! ^
  648. ; {+ Y8 f6 l9 l3 F
  649. .IF SOUND_BAR_SHOW_ENABLE
    : T7 s  V7 V+ ~4 O3 F' i
  650. JSR Sound_Bar_Text_Set
    - K  Z3 W8 F7 r9 W4 ]
  651. .ENDIF
    . T5 N+ ~0 h; b& r
  652. & ?  G' H: K; ^& E, }2 D+ p3 C7 p) s
  653. .IF Track_Name_Pos1 ^% a3 ~4 B- e: ^6 O: e
  654. JSR Show_Track_Info
    : \* p( M1 E" e' F  }
  655. .ENDIF/ I; y: ^3 B3 }. W6 B4 U, g
  656. # }# @  S1 ~$ G9 l0 F
  657. JSR PPU_Proc
    ( ?2 s. L# T( i" W% a

  658. ) g5 m7 C+ D) C7 G
  659. ;==================================================' P# a  ~' _; \) y
  660. ;音乐bank初始化 , W3 r0 c( n  M( \
  661. JSR Init_Sound_Bank. Q/ q* R5 ^' t" ^$ S+ E

  662. 5 f6 y9 n/ O/ M
  663. JSR Music_Show
    8 F8 W- {2 `" ^- K! {+ N
  664. JSR Time_Show; d! T1 x" ?+ Z
  665. JSR Music_State_Show
    # ]* E2 g  Z+ z% [" e( I
  666. JSR Time_Delay
    ) f3 l# M. ^* L& W2 w' {
  667. 5 t: W0 Y# \8 B! `8 T* K6 d
  668. LDA #$012 H1 @5 [7 N* ~& b" n* c
  669. STA <Music_Stop_State: {3 X' A7 F4 E' u* r
  670. ! O. K8 L$ C0 Z  T0 J) p' p  g. X3 _5 T8 p
  671. LDA #$88) h# T7 n0 U. Q
  672. STA Screen_Ctrl
    & j, r3 l5 g7 @
  673. STA PPU_CTRL
    - Q) }: D5 d0 P8 y7 q1 [
  674. & y4 E, f4 a' _- L# ?
  675. JSR Show_Page_Text1 q1 o3 ^& C7 q& Z( l' x4 y% u

  676. 7 P& g( m  m5 i- c6 @$ F3 D
  677. LDA #$10" Z8 v+ ]" j* M% i9 b
  678. STA <Time_Wait_Cnt, o! `" g+ l$ d9 D( @' U" D) h% O2 r

  679. " b7 N0 C- n" G- B2 W1 n
  680. Wait_Time_Over; Q  E3 H0 x4 s; n1 a0 N
  681. LDA <Time_Wait_Cnt! W. i% ]1 q( E& v2 t3 ?( E
  682. BNE Wait_Time_Over, ?1 n) N) c5 x; Q

  683. 9 P; y- k5 Y. ~6 N
  684. JSR Show_Arrow
    ! w; t: d! J/ k* k; A1 q2 u2 h
  685. LDA #OAM_TEMP_ADDR / $0100$ a$ L0 e" a4 B1 X
  686. STA OAM_DMA
    ) i7 q2 L( [, X8 W) n" r

  687. + A5 Y+ u! \& p
  688. LDA #$1E+ L. U- _% ]9 D0 {. S
  689. STA Screen_State  y" \) ]3 o, `' n; S

  690. 2 |! d4 R* M6 q* r6 n
  691. LDX <Music_Item_Cur2 T) N$ n% S' S" J7 o
  692. LDA <Music_Cur,X
      ~1 u( v# S( Y
  693. JSR Sound_Init_Proc
    % t- o; _9 b) N4 i8 @% q8 H

  694. 9 J! v' U! X1 N" Y( s; {: W* O  o5 E0 O
  695. CLI, D! c7 [" p$ P! R  k
  696. JMP MainLoop( y1 r6 B1 H% [8 N' `- U3 c4 w! ^2 s
  697.   G* V! P  z% a* |% T8 m: f
  698. ;==============================( s0 w- v7 \6 a, n3 q
  699. Time_Delay;延时等待
    " t! ]9 j( ^- r8 a9 v" D
  700. LDA PPU_STATUS
    & C& S0 h3 I1 L+ m& N
  701. BPL Time_Delay
    $ Q, @( o6 G6 N2 }
  702. RTS
    3 z) p+ F5 u  H) Q& }& P1 J  i

  703. + G) }# t$ I6 R8 |8 ?, \' H5 b
  704. ;==============================% ?& P% w0 ?1 J& d4 J
  705. OAM_Ram_Init;初始化精灵内存
    ( z6 O" E8 ~" n6 v& K
  706. LDX #$00
    1 j2 |1 \* V. Y/ Z4 ~5 s
  707. OAM_Ram_Init_Write4 s/ o1 U$ d& P4 \' W& w
  708. LDA #$F8. S; \6 d4 I" U2 _! l
  709. STA OAM_TEMP_ADDR,X8 F' r8 _. G1 r6 x- h
  710. INX
    + H) C+ R5 D& E. Z  K0 @. O. e: Z
  711. LDA #$F8
    % K2 p2 @# z# O$ @
  712. STA OAM_TEMP_ADDR,X4 H/ Q  i3 h: `4 c: `/ M5 u1 D
  713. INX+ y0 u' \  [6 `( i( S# x. Q- R
  714. LDA #$006 |/ _$ h( j% Q! M+ u' O# w  O! A
  715. STA OAM_TEMP_ADDR,X
    * ]$ w6 K& m+ b; v$ Q
  716. INX# j" }1 X8 y5 c; P: c- R
  717. LDA #$F83 x5 i1 d4 l. J+ q0 @' O5 u( Q
  718. STA OAM_TEMP_ADDR,X: _$ c8 ^$ K; E+ l" r, E1 m% [. h
  719. INX
    1 M; R% ~* ]* d% A9 Z
  720. BNE OAM_Ram_Init_Write
    7 e+ U1 G( {! I, U# M: Z
  721. RTS; w5 e1 i5 V* ~
  722. " U' s7 ~0 Z- b3 U7 C; p
  723. ;==============================4 V* D  {: K: F+ |/ Q8 t
  724. VramClear;初始化图形内存, J* W/ R6 C( h! d" V% c
  725. LDA #$20
    . c4 _4 ]& _4 e! k
  726. STA PPU_ADDRESS2 u( t5 }1 J$ @# Q1 C% J1 `, j$ j8 m
  727. LDA #$00
    7 u4 }7 z  f. ~6 d! x. m  x6 c5 R
  728. STA PPU_ADDRESS
    % h+ ?: I' a! w1 J# l7 D& v
  729. LDA #$00
    , ~& }" t' @" A, i- N
  730. LDY #$00
    + P) x  Y! W& O) X6 H$ ]( r
  731. LDX #$10! S! e% K& G7 F9 k6 y3 E# o
  732. VramClearWrite+ T) ~: |7 V, k, A
  733. STA PPU_DATA
    3 p& ^3 X( O- H) g. `6 u7 E
  734. INY
    & l) f' k: b- |8 Y' \
  735. BNE VramClearWrite4 r) Q8 k" n) t; l) B, |4 @
  736. DEX6 u9 I: R6 P% f1 X
  737. BNE VramClearWrite2 Z/ m$ u. @  ^
  738. RTS
      Z3 G5 ?& ]" D2 a/ e

  739. ( k  Y3 N* j' n& S. Y/ g4 N1 H. ~
  740. ;==================================================( E5 x  e8 W% ?2 w, P. j( K  F5 u
  741. ;设置MMC3图像bank
    $ ~6 V/ B4 U* [2 F. P& E
  742. Init_MMC3_Chr_Bank' m& B) p  n! L$ L5 O2 ?
  743. LDX #$052 b- o9 N( X- y: P. \; S5 c
  744. Init_MMC3_Chr_Bank_Write7 @6 Y7 R$ p2 E" ?9 z! X  M
  745. STX MMC3_BANK_CTRL
    ; ~; |+ V% M% o
  746. LDA MMC3_Chr_Bank_Data,X7 G# W* U% g( `4 k
  747. STA MMC3_BANK_DATA2 Q+ b2 y) Z2 O& ?
  748. DEX8 b1 y0 D# r4 t7 H: u8 Y1 [
  749. BPL Init_MMC3_Chr_Bank_Write2 [  e8 M4 e" \" e7 s- k/ }$ [
  750. RTS
    , e3 g9 t  H% R7 V
  751. ;--------------------------------------------------% E# j% V. C$ ~" d
  752. MMC3_Chr_Bank_Data
    & F* Z& i; a, E. e
  753. .DB $00,$02,$04,$05,$06,$07$ q) @; I- i' C6 e" k6 \* U' X5 G
  754. 5 A9 a4 [: C: Y- i5 e
  755. ;==============================1 p; B: e+ N. a& Q& ?; ^' x" L
  756. VramInit;初始化图形内存; s: I. ~% C( c5 m% Y8 L
  757. .IF CHR_RAM_ENABLE# h5 k, B# z. }0 ^% {! u
  758. LDA #CHR_DATA_BANK
    3 _" ^$ u5 C2 B6 s( R8 b
  759. JSR Switch_Bank_A000
    $ a3 j3 H+ u9 ]+ G, _
  760. LDA #LOW(CHR_DATA_ADDR)' T& `* e2 d$ z% f0 v2 f' g
  761. STA <Data_L, S7 U3 Q+ a9 `0 Z0 c1 E
  762. LDA #HIGH(CHR_DATA_ADDR)
    - r6 P% c( p( `9 \
  763. STA <Data_H
    ' f% h1 }/ @4 o8 ]
  764. LDY #$00
    , o4 {$ y# O4 u6 V  L( r
  765. LDX #$20
    ' b; J+ y& R' _5 C$ _
  766. LDA #$00
    % Z7 @1 V: X. M* _& h
  767. STA PPU_ADDRESS! h) k3 S4 X% O8 x5 ?8 I( ]
  768. STA PPU_ADDRESS
    ) S5 l8 Z& Q% u
  769. VramInitWrite5 L. `# m* o& o$ R* e( c
  770. LDA [Data_L],Y2 E6 b' c' m  d( p7 W1 i
  771. STA PPU_DATA
    , i4 c% M; k$ e: j( n
  772. INY
    9 F! G+ s+ Y0 ]3 w- A- ~3 q
  773. BNE VramInitWrite8 t! w, l$ J$ [( Y
  774. INC <Data_H6 K3 l4 I4 P) Q8 I0 |6 J6 {5 s6 t
  775. DEX8 ]  ^9 q5 x" G' d; F
  776. BNE VramInitWrite# e9 s* o7 [& C0 P' \
  777. .ENDIF
    : K7 D, `9 {2 ?% s( l: ~
  778. RTS
    ; W; m) N3 k2 z' f
  779. & N7 ~+ O  D9 |" m( O5 r* ~
  780. ;==============================
    5 L8 p0 x7 f2 g8 ?
  781. ;音乐切换
    * t" S4 [* k, ?  c9 }' W* Q1 }
  782. Music_Play_Change+ A2 G6 a5 m0 |3 T# v
  783. LDA <Key_Once
      V2 u- H$ z1 J: d
  784. AND #$FF
    3 ^& Z4 D( Y. S4 g* T& ~) @
  785. BEQ Music_Play_Change_Check% X6 H4 d9 p/ T3 v+ q) N. l- R
  786. 8 ^9 ?/ _; }0 K; |
  787. ;禁用音乐条刷新. K+ r& ?% j" p* E# A' o- l
  788. LDA <Text_Disable_Flag
    $ ~3 G& E% p% P8 ^, d0 I0 C
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME( [7 k3 @1 ]1 i0 i' g2 e! j
  790. STA <Text_Disable_Flag
    7 u) S$ ^# D2 \& C7 U8 }

  791. 7 y1 A5 \* w0 f# a
  792. Music_Play_Change_Check5 [7 w' S/ b& ~7 N! Q) z& z% B: K& p% d
  793. Music_arrow
    " O( l) Y+ A0 J1 S4 Y; Z0 a% d# t
  794. LDA <Key_Once! q0 A7 a4 {& B
  795. AND #$0F
    5 p' P4 S7 K; I- a; g/ A# h
  796. BEQ Music_Play_Change_End- }# W+ T" }: y- [0 @& H
  797. JSR Music_Track_Change
    / A: ?5 [& O. `) M2 y: o
  798. JSR Sound_Reset_Proc
      q3 d/ a( x1 r% \: D7 _! c
  799. JSR Music_Show
    2 @% B4 }$ C+ {9 n; E
  800. Music_Play_Change_End, B9 o& W: L5 h0 f' B; q9 @
  801. RTS
    ( Y" R3 H- r! D+ c) L! A$ z
  802. / }  |$ {6 A* E% ^: o2 V. d7 D, v: c
  803. ;==============================& C* _$ b4 J/ D# z7 P: r, W
  804. ;音乐曲目切换5 m+ S2 g" ]& N* z- ^
  805. Music_Track_Change
    : z7 M& H& J9 j, J$ G
  806. LDX <Music_Item_Cur8 T! K9 Z+ V( p
  807. LDA <Music_Cur,X, q/ c$ U: s  [! m
  808. STA <Music_Last8 i: n, ^  f5 M7 [$ o
  809. Music_Decrease; @* R) ~8 M# ^  t: A, g
  810. LDA <Key_Once0 r1 e+ W0 H! y+ h" `! ?3 ^1 F
  811. AND #$42' z1 m; ?" G/ p/ W" v
  812. BEQ Music_Increase; a# E# f6 O3 p0 _
  813. LDA <Music_Cur,X
    4 t  [* Q$ s5 k( ?/ b
  814. BEQ Music_Increase
    - D: v2 i+ e/ r) u8 p, D
  815. DEC <Music_Cur,X9 q3 r' l  [+ ^5 D' G9 q
  816. Music_Increase8 z' o7 `) p6 d' J8 ^; h* W- k' b
  817. LDA <Key_Once
    9 R* E! F, j% g+ v; h: `9 \4 d
  818. AND #$819 o) f! d4 s( H0 A; k- s/ }& I6 L
  819. BEQ Music_Decrease_100 K! X. z" `( B2 H8 b
  820. JSR Set_Sound_Total0 e$ Q% u# t1 D3 ]6 f. Q
  821. LDA <Music_Cur,X
    6 k. o. {, |/ [* W* g, ?& Y: w9 x
  822. CMP Music_Total0 L+ r9 D6 K4 M
  823. BCS * + 4
    2 ]" Y9 W* w1 x- ^! N
  824. INC <Music_Cur,X
    " \7 u+ x; S/ v  U) `" M
  825. Music_Decrease_10
    . \1 J. K4 n+ N8 W0 U) c3 ]
  826. LDA <Key_Once* T/ m9 W( `  }
  827. CMP #$04
    - F8 S# J8 s1 F  A7 L. k
  828. BNE Music_Increase_10
    - e9 n, ^1 `3 Z
  829. LDA <Music_Cur,X
    ! g. y' V4 u* a" g" [: b: _
  830. CMP #10
    % k" R3 Q) a- g/ D1 m  E! P
  831. BCC Music_Start_Song_Min
    2 q, e" L6 _! }5 U- s+ n
  832. LDA <Music_Cur,X
    5 J' J& {) F8 `; K( \" A! E
  833. SEC
    ' G+ G, R# d) A2 c$ q& C1 k% H
  834. SBC #10  h) t& K" m' b$ g* M
  835. STA <Music_Cur,X
    % E' ]+ k) n# {: m* h4 Q( w4 ~2 c
  836. LDA #$008 y  L1 ~  I5 E' N
  837. BEQ Music_Increase_10
    / _  h- Z- O8 i0 ]
  838. Music_Start_Song_Min
    3 w9 |: Z. u3 B/ t& h4 u
  839. LDA #$00  t- k1 G- A. S7 f2 S" f- S9 S2 R
  840. STA <Music_Cur,X
    5 t2 Y- o5 H2 F/ }: l
  841. Music_Increase_106 g# b% L5 R* E0 L
  842. LDA <Key_Once! r1 H2 h. A# F7 U
  843. CMP #$08
    ; z; c; t  R6 b
  844. BNE Music_Track_Change_End
    & u5 Y8 E2 H) ]( ~, d/ W2 N
  845. LDA <Music_Cur,X
    " G+ ]1 B6 f7 W8 u3 u$ ?- g4 i/ K
  846. CLC
    7 }( z5 {/ y% c! J$ F% s" p& Q3 w$ d1 R
  847. ADC #10
    3 ^) E. x3 u- w7 h5 K
  848. CMP Music_Total; i2 g; [4 c# h! ^' _
  849. BCS Music_Start_Song_Max
    & r5 `8 r  z; z" K. e1 D0 C5 g- D
  850. STA <Music_Cur,X0 ^0 a  Y" _1 O: Q9 V
  851. LDA #00
    . _, K/ Y5 S3 q. W
  852. BEQ Music_Track_Change_End
    - X, c) X/ B8 e% X; {
  853. Music_Start_Song_Max+ c4 r0 Y% @( r/ B8 D
  854. LDA Music_Total
    3 V8 t7 u7 z, {9 x
  855. STA <Music_Cur,X7 H' L) D( p! U* `
  856. Music_Track_Change_End5 B/ g- n9 r( i# F
  857. RTS- q/ v9 C. U1 V* n- B

  858. 4 v  D2 k" H( r
  859. ;==============================3 z) r9 j: y" G
  860. ;按键处理" ~" l% f. S2 c1 Y, b, L
  861. Key_Proc5 f; i; A% b' y3 [' J3 K
  862. JSR Key_Scan4 Z1 B$ s( X7 {, ~
  863. LDA <Key_Keep
    0 ~4 a5 s7 b" R1 W- ~
  864. STA <Key_Temp
    ! R" M2 \, x( Q+ Y  p" R
  865. JSR Key_Scan
    7 D+ I& b, x  p' }" S6 ?
  866. LDA <Key_Keep
    , n* |, R' J$ f+ w$ M# C
  867. CMP <Key_Temp
    9 X$ n. q4 `% ~8 p0 G$ i
  868. BEQ Key_Get_Once
    , q; S: Z; M# f2 r
  869. LDA <Key_Kemp
    , q! G. o/ x( j! a
  870. STA <Key_Keep% A6 i2 G" b6 i: S, e  ^
  871. Key_Get_Once) N3 D1 `# m1 m- _3 z
  872. TAY& B4 S/ `8 L6 k9 X. d
  873. EOR Key_Kemp! k6 j+ k, Q0 t5 m+ ~' W* Y1 B) {
  874. AND <Key_Keep
    3 [2 C5 ?1 c2 P3 R) j7 h
  875. STA <Key_Once
    3 Q5 v, H* ?; _6 \8 l1 `
  876. STY <Key_Kemp- H2 d0 v  F# r& f) ]# T8 y* {
  877. RTS
    9 o  `, x' N; a7 [- `. `/ D' X
  878. ;------------------------------
    8 S: D* @4 {" Y
  879. ;按键扫描- X5 z' j/ P& B  J' G9 K
  880. Key_Scan
    ) m  t' t; t5 f6 ^& u
  881. LDX #$01+ |8 Y* o7 \7 d  D5 O' }' o1 T
  882. STX JOY1_FRAME/ C( J6 o. x, R) ^7 n
  883. DEX
    4 `. ^7 y9 ?9 b
  884. STX JOY1_FRAME1 p0 H' X3 N0 P
  885. LDX #$08+ f6 t% @% ]* u6 [! o5 M2 U
  886. Key_Value# j; l6 B) p' F! I' A
  887. LDA JOY1_FRAME
    / q- a4 P* f/ a: M+ l- Z. x: v
  888. STA <Key_Getv: @/ g$ _& _' x  }9 z2 b& v# j  M
  889. LSR A
    1 [3 _' r1 }$ C, z
  890. ORA <Key_Getv6 T- D6 R% ~5 O6 Q* C: A
  891. LSR A
    5 s; o. `  D# p% _! X
  892. ROL <Key_Keep
    - B6 n2 c' Z  V3 C6 g- R
  893. DEX# v# ]' \! j" H  f* O' I: R
  894. BNE Key_Value
    7 D6 ^1 ~. e1 r! H3 V% `* U
  895. RTS
    " H; @: Y- k) o+ Q0 R
  896. 1 E6 y# l, @5 O
  897. ;==============================
    . B! }1 Y3 K# a, ]& E
  898. .IF SOUND_BAR_SHOW_ENABLE# H7 N3 D8 o- A( J8 y3 M  m( C
  899. ;音乐条显示
    % B+ k" V; K3 W
  900. Music_Vision7 v% C1 e. f- ~5 w% |, E0 l
  901. LDA <Text_Disable_Flag% j, `2 _! |6 _/ O: ^  l% C
  902. AND #TEXT_DISABLE_ITEM* F7 c6 Q' P. `" l* E! n- p+ q
  903. BNE Music_Vision_End/ `" W9 G) d1 k  V7 y* P: D  E
  904. AND #TEXT_DISABLE_BAR5 L9 W. f# _, o, s$ X( t8 x+ {/ |
  905. BNE Music_Vision_Set
    ! @' m2 [9 l; J0 A- z: ^( G
  906. LDX PPU_Cur
    % r( N8 @! {) K: t% j6 K
  907. JSR Music_Animation
    / T! D- i8 q+ X7 C
  908. STX PPU_Cur0 G7 ~! [; @0 D7 K! f
  909. Music_Vision_Set3 I& @2 E) P0 h# S* D
  910. LDA <Text_Disable_Flag
    3 v2 A5 O! N) D+ X5 @2 d5 x
  911. AND #TEXT_DISABLE_BAR ^ $FF1 G8 [8 I! a, a
  912. STA <Text_Disable_Flag' g  b! n, K% S% c! R: p
  913. Music_Vision_End
    ! v* X0 A3 g1 X" L3 w
  914. RTS9 ]5 ?5 V$ E) S# P7 E
  915. ;------------------------------$ J4 S. Y5 x+ C7 @4 I
  916. ;音乐条显示处理/ m1 @+ j0 p+ V; l6 B. Q
  917. Music_Animation1 O2 J& d4 V- o! m  L$ k
  918. LDA #PPU_MODE_CNT_LINE
    " j" R0 y. |+ h& ?
  919. STA PPU_Addr,X0 [* v+ ]+ M0 O3 S/ S$ z
  920. INX
    0 `- Z/ C/ t. I- g. o9 ~
  921. LDA #HIGH(Sound_Bar_Pos)
    4 m5 |+ h* i, t/ m5 J5 f6 F
  922. STA PPU_Addr,X+ J1 }! y& L2 S2 V" {9 i
  923. INX
    / y% d' m; z0 J  ?, Y
  924. LDA #LOW(Sound_Bar_Pos)# v3 P( ~- {8 p( f7 h
  925. STA PPU_Addr,X
    ) y4 X( M% N9 y; L. p  Z& Y
  926. INX+ W1 B. b' u8 e4 o' g5 @4 [* X, X# n
  927. LDA #$08
    - {! d& w7 c, W5 B, [6 T- z6 @
  928. STA PPU_Addr,X# _4 @9 u0 o( p/ f7 w
  929. INX
    4 t( P9 z2 y) \0 s0 L
  930. LDA Sound_Bar1 c! ?' b) H7 i9 r0 t# M; D# u
  931. JSR Volume_Convert% b$ {. ^( G' @' I6 L- I2 |7 _

  932. : X9 ^5 D# b0 v, s+ A; ]8 e0 D3 |
  933. JSR Volume_Set_Cnt+ t$ M) }: c. v
  934. LDA Sound_Bar+$4+ L" r$ N) W8 Q6 S6 \1 {: S1 e% o
  935. JSR Volume_Convert' h) w' V. }5 K9 X4 o% s2 G9 _
  936. " C, E+ h0 L3 ]& O6 G
  937. JSR Volume_Set_Cnt0 z2 b8 b4 I% k
  938. LDA Sound_Bar+$83 c8 w* z$ G7 C! G
  939. JSR Volume_Convert8 v- s+ X2 j  q) i: ]3 g7 E

  940. # O+ d3 U0 n7 U# o- n+ n
  941. JSR Volume_Set_Cnt5 m1 h, m- p5 ]1 \2 G9 O
  942. LDA Sound_Bar+$C) K- o7 z$ x7 n& W0 Y9 q
  943. JSR Volume_Convert
    6 _; h3 O& m% s- L4 T: h  K

  944. - N+ `! h+ U1 R; |% Z* l
  945. JSR Volume_Set_Cnt
    8 c! q, L1 ?9 O- A
  946. - q0 O0 \, W" s# C6 z3 W/ e
  947. LDY #$10
    ) h4 L- h# I$ G* f
  948. LDA APU_STATUS
    7 {9 u# ]/ Y2 W: V
  949. AND #$10
    1 D+ t6 B8 Z& L0 H  e+ u
  950. BNE Volume_Count
    " N) x5 u3 L( k9 I. ]! ~
  951. LDY #$00
    + S7 z  Y2 Q& M9 ^6 X7 `0 F
  952. BEQ Volume_Count/ L1 b1 _1 W% O/ a
  953. / M# M. }4 a6 g8 W* B5 r$ @; U
  954. ;------------------------------* t' Z5 y3 a, l" ?& Y  v2 p. `
  955. ;音乐条处理+ f5 _3 _% f3 J- m3 T! Z0 F/ ]" I0 b
  956. Volume_Convert8 T2 m$ s( q  [! m3 c4 j" N
  957. AND #$0F; n/ ~+ e& f1 S! A: D* _2 l
  958. TAY
    5 p# C+ q# B& D! `5 P
  959. Volume_Count
    / d+ T" u- l% B# t, `
  960. LDA #$08& `! M: t- E. O+ w5 _6 T0 l6 l
  961. STA Sound_Bar_Cnt- t( B. T: z3 W. f/ z) k) l
  962. Volume_FILL$ {( J: m6 M& n7 i) L& i* u
  963. DEY
    : N0 ~3 f- J! k8 T; V
  964. BEQ Volume_Half- [* @9 ~4 t/ f! h( I' B6 g/ z
  965. BMI Volume_Empty' t* i8 f2 o$ l" X& ^
  966. DEY$ z; r6 Q8 _& h! n% j
  967. Volume_Full
    0 Y  B  k3 \' q/ Q, ^
  968. LDA #$16
    9 {" J' `- [1 |7 ?
  969. BNE Volume_PPU
    / q  n! b7 N( ~% n0 t
  970. Volume_Half
    % o9 `  [4 S" o2 c) R5 j& r) `6 I6 n
  971. LDA #$153 v& M' w* H( u9 o+ I8 L
  972. BNE Volume_PPU
    . W* P. m+ w/ t$ R4 B
  973. Volume_Empty. P( l) ^; ~' C( y* \( _
  974. LDA #$14
    , Z% n1 Z  V, H
  975. Volume_PPU/ Y* B3 ]5 q6 {: q: a8 T
  976. STA PPU_Addr,X
    : N, s, \3 A  @! K/ f
  977. INX
    & l; B( V# {. F7 Y0 E
  978. DEC Sound_Bar_Cnt
    + ?; J$ X# A" P! V9 w" h
  979. BNE Volume_FILL
      J& w! R& O+ O  I2 v
  980. RTS& z5 {/ S9 H# H: D6 N5 {

  981. 4 @5 j6 x' Y! m' ]+ ?6 s3 }6 k
  982. Volume_Set_Cnt
    : N( B  a4 k) k, e( q0 I
  983. LDA #PPU_MODE_CNT_LINE_NEXT1 [' ^1 H4 U# c- g
  984. STA PPU_Addr,X
    , O' W; t3 k2 M7 M" o
  985. INX: ?1 R- \# {$ g! d6 E
  986. LDA #$08
    9 a. J3 c/ g& k/ g
  987. STA PPU_Addr,X
    0 k$ d0 b. S/ @1 |+ z
  988. INX- ^, ?2 y/ w- Z6 p8 T/ g( l) t
  989. RTS2 Z' c7 k4 v  J4 f/ W& ~" [, u* {4 r

  990. / A# g/ j9 n1 u
  991. .ENDIF
    4 }5 Y  e; X6 E; l' N2 |
  992. 2 F6 n: ~  z0 I% @" A
  993. ;==============================# E2 r; q1 i7 m2 J
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    : {0 l% q) f& f( S2 \3 p6 z, O
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    & U1 e% ^0 b: N) f  Z
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    ' _0 _/ u  C) M1 W
  997. ;------------------------------
    ) ?8 C' }7 U( Z
  998. ;PPU处理: f$ V! i! M& O0 a* d& E: T
  999. PPU_Proc
    8 v' {! f+ ?# h" b6 h& ?& ^1 J1 W
  1000. LDX PPU_Cur* k$ z2 Y; p3 a" A
  1001. LDA #$00
    9 l5 ?' G( A( t& v
  1002. STA PPU_Cur( p7 H- R3 G; `% b% b; W
  1003. STA PPU_Addr,X) \; M1 V+ h4 D/ Y
  1004. LDA PPU_Addr
    ( o% {5 ?8 I8 o7 g8 c
  1005. BNE PPU_Proc_Beg( T$ I" h/ B9 b
  1006. PPU_Proc_Ret
    ! T( m2 U3 j) g5 q
  1007. RTS
    * O- K1 j0 i* s% n0 @# }+ K$ q8 n

  1008. & M. y$ t! @6 s$ ]  f7 U5 H: Y) u8 Q
  1009. ;------------------------------* b0 D$ K- d" O' @7 ?
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    . b; `* L5 y8 ]
  1011. INX
    , J$ I" o/ C3 p
  1012. LDA PPU_Addr_L( @5 m3 v- a1 c
  1013. CLC
    : V8 Z& ~9 G$ A7 O1 ?
  1014. ADC #$20
      V$ n7 t2 w8 [* V! u
  1015. STA PPU_Addr_L
    5 P5 e/ U6 _' r
  1016. BCC PPU_Mode_Return_Cnt_End# S, ^! K, u  V6 Q7 V  U
  1017. INC PPU_Addr_H
    2 z# v9 M' X0 |3 p5 X2 u& f5 \
  1018. PPU_Mode_Return_Cnt_End
    + \  }; _; t- m. A3 K/ t
  1019. LDA PPU_Addr_H
    : q5 j+ q7 \$ v/ Z/ ?* S
  1020. STA PPU_ADDRESS
    9 x! m& Y. v; p! p9 Z. m5 m
  1021. LDA PPU_Addr_L% o0 T# K+ R, w* D1 }* ~/ Y/ s
  1022. STA PPU_ADDRESS. N1 k) F% O! E" _& g' l$ n
  1023. LDA PPU_Addr,X" L. f/ L$ h. |" n
  1024. TAY
    8 @. e2 ]/ n6 Z' a6 ^. e. [
  1025. PPU_Mode_Return_Cnt_Write. P9 Y* A; P% K3 L) W# Z3 {  z
  1026. INX
    ' v, x( I, D9 b, M
  1027. LDA PPU_Addr,X4 b0 c  W/ ], a' }$ B" M) d
  1028. STA PPU_DATA/ h$ S/ c5 b& B1 Z
  1029. DEY9 W) w/ I6 @. X4 z
  1030. BNE PPU_Mode_Return_Cnt_Write
    * a3 {, e& Z. `+ e; ]1 V0 a' ~
  1031. JMP PPU_Proc_End  E+ T' J6 H! `9 |+ o1 H  c
  1032. : x% W  x& h" a# ^/ F& A
  1033. ;------------------------------
    3 I8 A/ h% I: u' C" E/ H) w; x
  1034. PPU_Proc_Beg  ;处理开始/ R8 d. R3 L+ a- b. t1 w7 W' Q9 m
  1035. LDX #$00
    , g' d. S' A) k
  1036. STX PPU_MASK. p. l7 C$ a6 D4 h5 i3 R: a
  1037. ;------------------------------2 s1 i: v5 d- T; W: x
  1038. PPU_Mode_Select  ;模式选择6 h0 v$ r; c* e6 O# W1 G3 U, v
  1039. LDA PPU_Addr,X/ D- S  s- i; f, @* D7 M; ^
  1040. CMP #PPU_MODE_CNT_CLEAR
    ) c  c" e0 ^( v& n5 k/ F/ x
  1041. BEQ PPU_Proc_Clear
    5 V) t4 l4 W( n4 Z& V/ E5 y
  1042. CMP #PPU_MODE_CNT_LINE
    3 _3 Q& k0 l+ i9 E
  1043. BEQ PPU_Proc_Cnt_Line! I: E6 Z+ t& b' q6 ^
  1044. CMP #PPU_MODE_CNT_LINE_NEXT3 w1 Q( n0 F9 o# M5 Q9 }$ s7 ^
  1045. BEQ PPU_Mode_Return_Cnt
    7 l7 \5 i9 ~8 W  u& [
  1046. JMP PPU_Proc_End_Write
    3 E% }" Q0 |+ s  X+ G& u+ p) {3 R
  1047. ;------------------------------
    3 s9 j9 M1 A1 c, ~3 j' d7 p  U9 p
  1048. PPU_Proc_End  ;单行写入结束
    ' {4 R' U4 t3 s
  1049. INX
      Q, }$ ]+ `5 ~4 }
  1050. LDA PPU_Addr,X; t# \! h5 m% j. H. a6 a% F! H
  1051. BNE PPU_Mode_Select1 N1 w4 q. x' c% v
  1052. STA PPU_Addr3 Y" [! a- _3 ~, s8 B9 g6 q. ?
  1053. JSR Update_Palette_Color. I0 m" O! c5 P% l6 r' t
  1054. - B4 m4 o7 T$ J0 t! s
  1055. PPU_Proc_End_Write
    2 I8 d5 }# D1 {. P& e
  1056. LDA #$00/ |6 f) C6 [7 s* @5 ~
  1057. STA PPU_ADDRESS, |6 z, H9 f; U1 e
  1058. STA PPU_ADDRESS/ D- U- Y5 _  ?( t
  1059. LDA <Text_Disable_Flag
    5 _$ h/ X* P, v, |' Z9 X! v+ r
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF8 S& P# \3 z. O; ~: S8 [: D( F" n
  1061. STA <Text_Disable_Flag. s0 G( ]7 m! t! N9 F5 z. o
  1062. LDA #Scroll_X. P  O' _# e" T5 O7 D' k
  1063. STA PPU_SCROLL$ v) D& G2 _. X, X1 T
  1064. LDA #Scroll_Y' M! d/ e8 U. R( x4 N
  1065. STA PPU_SCROLL# r9 }8 u+ x  U- x+ U7 u# W. n( E
  1066. LDA Screen_State/ }+ M* K" N1 `" }
  1067. STA PPU_MASK' X/ B9 E8 L. A$ I' P
  1068. RTS
    6 \4 U# ?; s- v" Z6 D4 r4 g
  1069. % G0 {( W* p+ W& T2 X! f2 H* A
  1070. PPU_Proc_Clear
    % V3 j2 \8 D" p) }# f- f
  1071. INX  @: ]/ p, {! b9 C9 t( B
  1072. LDA PPU_Addr,X
    ! ~! \' O9 W9 K9 H- M- j
  1073. STA PPU_ADDRESS
    3 n9 P2 W& A7 J  Y
  1074. INX5 J$ M5 Q! z8 ?% Q
  1075. LDA PPU_Addr,X
    8 ?  k8 j% c& K  ]  `
  1076. STA PPU_ADDRESS
    8 Y) K. E% i9 [& ]) ~
  1077. INX* h& E. V: k' s! u
  1078. LDY PPU_Addr,X. H% l0 x' f/ \+ h! K$ v. I( c
  1079. LDA #$00
    4 Y# W5 v' E+ Q7 ]* h( w7 Q
  1080. PPU_Proc_Clear_Write# K; ]  B% p, G9 Z: L  G8 c
  1081. STA PPU_DATA
    6 U% P7 M& S  y  W& h3 O
  1082. DEY
    0 M3 P5 C& {1 u' {" v: j
  1083. BNE PPU_Proc_Clear_Write
    ; G$ Q4 S% L4 `8 A& B$ O; {/ ?
  1084. JMP PPU_Proc_End
    9 @6 H+ h1 J  G& r1 f# r
  1085. & u7 f% {1 X* M# v9 s' |& `% A
  1086. PPU_Proc_Cnt_Line% D7 r7 H' D% D- z: `% \/ c, F
  1087. INX9 x- Z4 h' z7 i! o# `
  1088. LDA PPU_Addr,X
    % ?4 Y+ I( f( m2 _
  1089. STA PPU_Addr_H! A( a  Q! t% n- L, p4 U( r
  1090. STA PPU_ADDRESS& g1 P3 g& Y3 ~/ n
  1091. INX3 k+ U$ Q' l8 h9 B% N2 ?5 @
  1092. LDA PPU_Addr,X
    / t1 r4 s( p1 J, O7 O( y
  1093. STA PPU_Addr_L2 Z+ ?" r% a' h( C! w3 n# }
  1094. STA PPU_ADDRESS
    + F; G  V5 p' {% s
  1095. INX
    6 Y9 {# U1 i# f% H+ Y, ~
  1096. LDY PPU_Addr,X
    + g3 Z- N6 I9 z4 ^  B
  1097. PPU_Proc_Cnt_Line_Write
    + k: W  }- h  Y* c
  1098. INX
    6 q4 Y% O9 e+ h' P
  1099. LDA PPU_Addr,X* F0 z- t- T" H# D9 V
  1100. STA PPU_DATA$ c/ M6 ^& h4 h" m
  1101. DEY
    ; K; K* u1 X1 J; |
  1102. BNE PPU_Proc_Cnt_Line_Write4 q3 T# {  e/ t  A* P3 f% q
  1103. JMP PPU_Proc_End! z. b! L( @3 C* w" g8 H. f
  1104. % Q( ^. }& ?8 Y) G$ _9 `
  1105. ;==============================
    7 m$ j2 g3 b1 e" E
  1106. HEX_To_Dec;十六进制转十进制! U1 ^  J2 n6 X9 T. d( k( B
  1107. STA <HEX_Data
    7 |( v' c% M. m1 Q
  1108. PHA; G9 d5 q6 O. o0 X# B8 m# @+ |* a
  1109. TXA
      w5 X# z7 h' n& t6 Y
  1110. PHA" h1 W8 C/ b# i& C4 c% R) C
  1111. LDX #$00
    5 ^9 C* E9 f) s. f
  1112. LDA #$00# R( b% G4 D  k8 U' v6 Q1 D
  1113. HEX_Cln0 @$ X" O: j& E0 m% o
  1114. STA <DEC_H,X
    & I0 V0 k1 M0 G) n2 ?7 ~" e
  1115. INX
    " R3 Z7 T0 U( j2 N/ m
  1116. CPX #$03. h, U) Z: M: `' D) ]  J& p. g) D
  1117. BCC HEX_Cln/ `; S! x# Z1 }4 r1 B6 O( x
  1118. LDA <HEX_Data
    5 b1 l/ b% F' I- ^# r
  1119. ;------------------------------
    , a+ M3 I6 I  b  O
  1120. HEX_100
    : ]! \: u% Y" U! C+ `
  1121. CMP #100' I: \6 k2 I7 o  V5 z; w
  1122. BCC HEX_10
    ' W8 E9 O- B; b% @: x
  1123. SEC
    : @8 h' |) F/ D) C& R% G
  1124. SBC #100
    & m9 r, u" g# n5 r) E, U. V
  1125. INC <DEC_H; L  |# b. D! E# U  z( Q  Z& [/ T
  1126. BNE HEX_100
    # C+ I7 r* \) X. L. ^6 I
  1127. ;------------------------------
    * b4 N6 J. }: `1 V$ M- l0 ?
  1128. HEX_10
    ) L7 M' s4 u, b7 p
  1129. CMP #10# |% O, u( P& i6 R4 Y
  1130. BCC HEX_1; p3 Q. E4 M8 }. z
  1131. SEC
    1 B+ F* J' E" P( m8 w, `  a8 s
  1132. SBC #101 m: ?- q) Z: o0 @/ g( T7 L
  1133. INC <DEC_T( j; _0 M8 z9 i) {+ _: a' S
  1134. BNE HEX_10
    * r' W+ |' b; u5 i
  1135. ;------------------------------$ ?4 X: _5 T  K4 ^3 e9 Y: k) R
  1136. HEX_1% Q" J! r; E! X" \( C1 o
  1137. STA <DEC_L
    - }  [9 v7 _$ u* }- D' z: i+ H
  1138. PLA% d9 \3 w% Y$ w( {" c  H
  1139. TAX% ~3 t4 o/ h' L+ F. i
  1140. PLA
    . A0 a  C" O& M2 c# u
  1141. RTS, i4 _) u) Q9 G+ b' V! w+ x/ n. d
  1142. 6 P+ n; G  X. n* f- ]
  1143. ;==============================( K) C, V- @# D  S) `% p
  1144. ;音乐曲目显示: i! C3 {8 {* [6 `% U5 e  A: z3 f
  1145. Music_Show
    ) J+ [3 ^4 i9 k& v3 n
  1146. LDX <Music_Item_Cur
    ; L9 y( H5 f/ M- c1 C$ D) M
  1147. LDA <Music_Cur,X
    ) d+ R: C, s& e( ]
  1148. CLC6 _- C, z& Z/ E* B# y' n
  1149. ADC #$015 ]" t+ Q* Y+ @
  1150. JSR HEX_To_Dec% @4 f7 Z, E! l1 P$ `! Y4 t
  1151. LDX PPU_Cur3 U& C3 \! F0 G. b" K5 n
  1152. LDA #PPU_MODE_CNT_LINE: T+ [" C/ H. Z& p7 Z
  1153. STA PPU_Addr,X
    - b- h7 ~& Q; ~8 B+ G
  1154. INX% U3 v  X$ `3 ]4 C4 y; f( S
  1155. LDA #HIGH(Play_Index_Pos)
    . o* w/ S3 d7 Q/ q; j7 j5 D+ v
  1156. STA PPU_Addr,X
    1 B8 ^5 L6 ^. i0 ]: ~1 D" U& z2 x# c
  1157. INX
    # ]# C2 ^/ o4 d- m% e5 k; K
  1158. LDA #LOW(Play_Index_Pos)
      n# b( N% j1 X- P% ?' f
  1159. STA PPU_Addr,X
    6 F) N, t) E' y- o* r
  1160. INX- `- [- U9 X9 R0 |1 I
  1161. 9 n3 @3 s4 g% u( _
  1162. LDA #$07
    + l9 N9 n4 b3 ]! t
  1163. BNE Music_Show_Length- ?, ^+ }& Z( M& z
  1164.   s& ], h9 g0 D+ p- O
  1165. Music_Show_Length) j" K1 I0 A: ~( T" L
  1166. STA PPU_Addr,X! S: ]- p' o) j7 R3 }! u
  1167. INX! V4 e' R3 W# C6 V# ~. k3 E
  1168. 5 j) R/ V6 x; |8 \/ y& C( \) [. n
  1169. LDA <DEC_H
    9 n6 l$ }8 D( j: Y/ b) D: D
  1170. ORA #'0'
    % v) X- @* u" ~! Q- l8 u
  1171. STA PPU_Addr,X
    7 f3 t7 N) _( s. u( s% b+ q
  1172. INX1 n' l7 ~. \! j+ }. x! C
  1173. % T. v* o, [5 D
  1174. LDA <DEC_T
    9 {' F% y$ {+ D- E0 Z
  1175. ORA #'0'6 A( ?! y* `* [% ]8 v0 S' y3 B
  1176. STA PPU_Addr,X
    / Z" K5 X7 P; X3 g# Q: `, C9 h
  1177. INX, \1 J. G. i/ C" ]7 `
  1178. , ^. _9 A! I/ H, a* R
  1179. LDA <DEC_L
    . D; l  P9 l& F% M* S" G
  1180. ORA #'0'3 u4 I, h: h8 p
  1181. STA PPU_Addr,X; t$ H. v( j& U5 ?; Y  |$ }
  1182. INX' G: e" Q, F" x+ j7 ^7 ^

  1183. ) Y8 l& b, t* ~4 e4 J7 V( S1 I
  1184. LDA #'/'4 Y8 l4 d5 a/ }6 a% I' b
  1185. STA PPU_Addr,X
    1 }6 P8 h+ M  X" f+ S
  1186. INX; |4 D  X1 J* b& N& C
  1187. Music_Show_Total' e# C  c: m1 k+ C6 }# e
  1188. LDA Music_Total8 m: Z. W3 q; Q+ Y
  1189. CLC
      _* L- F* M3 c( ?0 t3 Y7 m
  1190. ADC #$016 l% O# T- C' X- F+ ~* @
  1191. JSR HEX_To_Dec' T% n+ S% f6 |- |. _; T/ |3 R
  1192. " }9 Q. D" V* ^
  1193. LDA <DEC_H, |: m( ~( s; O
  1194. ORA #'0'
    # z  E' m' [/ j3 X  U0 R6 o
  1195. STA PPU_Addr,X
    ; \: V  [  E- Q& c3 J) H2 [
  1196. INX6 W2 q, C! v9 c' M$ H: K# r
  1197. . `4 u. }, i9 x8 K" D" a+ `/ l
  1198. LDA <DEC_T
    7 E8 Y- i( m% d; ?' y- [
  1199. ORA #'0'! J7 M7 N3 k* j% \3 I7 O
  1200. STA PPU_Addr,X
    ' m, y9 V. w' \, a# W$ s
  1201. INX
    ( V7 u* I' g! G% @

  1202. ! b9 P% _- F9 @. o, n
  1203. LDA <DEC_L8 h. |9 `# Y, w" f( N
  1204. ORA #'0'/ e) G/ A' z1 P! {  }
  1205. STA PPU_Addr,X. B) |8 G$ H; C  l
  1206. INX
    - [+ \( D( _) m- r/ z

  1207. - P3 {3 e4 S8 t$ v1 f8 M9 D
  1208. STX PPU_Cur; f9 P0 P& k& k
  1209. Music_Show_End
    8 @  Z" Y8 u: u: y( N2 e
  1210. RTS
    ' `4 e2 S) q3 L
  1211. , z. i9 P8 e: P9 x3 @. Y
  1212. ;==============================
    ! m: v6 o; K( V6 n
  1213. Time_Show;播放时间显示
    . A* u) u( L. V6 H# H
  1214. LDA <Text_Disable_Flag
    . k, E$ {5 X" s
  1215. AND #TEXT_DISABLE_ITEM+ g/ D3 E7 \& U1 _
  1216. BNE Time_Show_End9 u; i2 D# S" B( q! E$ B  V: S" E
  1217. AND #TEXT_DISABLE_TIME/ K/ Z4 t3 E: k4 x# j
  1218. BNE Time_Show_Enable. U* w! t7 k5 b8 L, A
  1219. / N1 u4 i4 J. S' z) U: O
  1220. LDX PPU_Cur1 q) V  P" t: N& k
  1221. LDA #PPU_MODE_CNT_LINE
    0 M, u! Z2 _! N. X( C' M! g# |
  1222. STA PPU_Addr,X
    5 [1 Q! I" q& j2 \9 O
  1223. INX
    3 e/ n/ Z1 P  C
  1224. LDA #HIGH(Play_Time_Pos)3 }3 }: T: \5 z4 |5 r$ L
  1225. STA PPU_Addr,X2 Q3 G9 a/ E; r1 d
  1226. INX  r1 U/ I  T  O9 A6 y$ g
  1227. LDA #LOW(Play_Time_Pos)
    1 }, `7 x, r: H* Q; `- S; |- [4 p
  1228. STA PPU_Addr,X
    + y# D! Z9 J+ D7 a2 i* Q
  1229. INX
    ( k; ~) z* i: }2 d$ o
  1230. LDA #$08/ r) w4 s* M8 B) y" u
  1231. STA PPU_Addr,X5 }% q( l2 Y# e3 v  F; G
  1232. INX6 M, k/ d% ^( U
  1233. Time_Show_H+ |- s( D5 `, x" b9 d" d
  1234. LDA <Time_H
    5 {" J7 x; \+ @! C# I% s6 c* F
  1235. JSR HEX_To_Dec7 b6 O7 P7 x$ l9 }% B, h+ ]
  1236. JSR Time_Digit
    2 ^$ j8 y; ?" M  f+ o# X% D
  1237. LDA #':'% A7 {' C- x( }% \
  1238. STA PPU_Addr,X
    0 _* a. C) f5 `  a2 @
  1239. INX
    ) i! r% @( |. v' Q: `& f
  1240. Time_Show_M( ^: L  a5 n1 y! d! E/ g' V; E- e
  1241. LDA <Time_M
    + R* n( b6 c% y5 J8 z0 C( c. L
  1242. JSR HEX_To_Dec( F* O1 k5 ?3 x9 N6 ?# I; Z6 {
  1243. JSR Time_Digit$ `% p; E; d: F# U: w2 _4 P
  1244. LDA #':'7 o3 o/ ^! `! R1 @
  1245. STA PPU_Addr,X
    * O0 S( x1 T# I+ Y/ I: J: W9 H
  1246. INX' c6 l) o5 O4 C' I
  1247. Time_Show_S
    1 R2 m) c/ ?- N& m' Z. S7 s# e0 h
  1248. LDA <Time_S3 i) Z7 {, e6 N7 W4 V
  1249. JSR HEX_To_Dec5 E6 \" J: @. ]
  1250. JSR Time_Digit  T5 z: }' c( {# ^' `2 R* [
  1251. STX PPU_Cur
    ! _+ j- F/ v; a: H- G% r! w
  1252. Time_Show_Enable/ G3 l4 u( b- N# e* E0 U. R
  1253. LDA <Text_Disable_Flag
    # f/ g0 g& T* T( R9 X% C* m! \8 k. o
  1254. AND #TEXT_DISABLE_TIME ^ $FF3 h+ s' {, z( C* k
  1255. STA <Text_Disable_Flag
    % x: P! n  b- D" r' a, n
  1256. Time_Show_End
    - e. M. _- L. Z, c
  1257. RTS
    3 i3 \4 G6 Z! |, R, J
  1258. 8 s/ w# Z, q' S) T8 x
  1259. Time_Digit1 x8 \1 ]8 t0 G
  1260. LDA <DEC_T& X) k$ e; Z$ ^4 d
  1261. ORA #'0'* D# R* P, e( ~6 T
  1262. STA PPU_Addr,X
      S. f- o$ V# G( q
  1263. INX
    6 r" U, q% ?% I& G& M
  1264. LDA <DEC_L
    - h8 C; h9 C7 `' u
  1265. ORA #'0'4 V+ g; ^/ Z9 l. U; A
  1266. STA PPU_Addr,X9 e. w8 L: y1 }4 |' B
  1267. INX% R  B$ n2 `2 P3 |
  1268. RTS; t  P* q3 e: [) G( y* E1 \8 j1 F, W* d

  1269. + c9 _# w) r9 J8 S, E" j" `
  1270. ;==============================/ P% h& l( I# c7 K; v2 W
  1271. Time_Count;计时4 s/ O5 T+ z; l. j! R- G% x
  1272. LDA <Music_Stop_State6 M- {8 G$ S! a1 p" L
  1273. ORA <Time_Wait_Cnt/ Q7 {) K( R) B/ ~
  1274. BNE Time_Count_End
    + |- P# \" t* K: Q$ u$ f& `
  1275. INC <Time_Cnt
    5 C. \+ N1 o5 [7 U( z
  1276. LDA <Time_Cnt
    5 K% u. b3 x* r7 h0 H% B
  1277. CMP #60) p) X. W; w: J8 D  |" \+ E: s
  1278. BCC Time_Count_End
    6 U- L/ G: Q  L' f5 z% j6 l
  1279. LDA #00
    3 F1 M7 }+ w0 ^  p
  1280. STA <Time_Cnt
    6 b- w# m0 `' |' `, Z. i$ g! b4 Q
  1281. INC <Time_S
    9 {4 s6 [: G# X# |

  1282. / p6 Y) m! X: ^1 w
  1283. Time_S_Cnt
    # u. w8 r8 R) g: F3 N% \; w
  1284. LDA <Time_S
    * U9 a) b* h5 ^
  1285. CMP #60
    . S  [6 K: P" B9 t! z& _" d
  1286. BCC Time_Count_End
    " C0 T/ v* k* m0 n( s, R+ g
  1287. LDA #00
    9 f+ N. ~) O4 I/ O
  1288. STA <Time_S
    6 s5 a6 T& C! v3 A' l8 b
  1289. INC <Time_M/ B  D- K5 g. ]& o+ M" B
  1290. : z) }. [* Q: k5 r: @" j  _
  1291. Time_M_Cnt# `  h% B/ n" R, Y. d/ q1 @# c
  1292. LDA <Time_M1 F; _# R# r& e) _8 T
  1293. CMP #60
    . Z, L. s- [8 S; V& A2 M" z+ _
  1294. BCC Time_Count_End
    . V7 Q9 J2 f" m
  1295. LDA #00; Z* B. F0 T2 c, K, Z
  1296. STA <Time_M6 h0 O' r+ ^: p
  1297. INC <Time_H
    5 Q6 l, P9 |9 f
  1298. , n8 `/ U0 E* f# @' P6 A
  1299. Time_H_Cnt) a1 T# \$ k& H0 w7 H/ d
  1300. LDA <Time_H
    " j; q/ S1 c% y' L
  1301. CMP #24
    * k9 K. Z; D  J  R& V
  1302. BCC Time_Count_End
    * y% L8 l* Y3 X
  1303. LDA #00
    1 Z9 J! K/ I; D3 Q* v3 q
  1304. STA <Time_H4 A+ \9 Z1 w( E% m, Z# g/ u5 o- z
  1305. ! b7 c7 [# R1 M( t$ E0 h; F. L0 N0 [
  1306. Time_Count_End' M* ~2 l$ v7 c9 X9 G
  1307. RTS: B) t8 f. c+ c' w
  1308. 3 \9 K. v# E: b+ E- S( W) w
  1309. ;==============================5 f$ }" l1 j9 c% d1 L
  1310. Time_ReSet;播放时间重置
    % c0 {6 K, k" K6 b
  1311. LDA #$00# J9 W1 L2 n3 T" o- q! x$ s
  1312. STA <Time_S
    8 L* B9 Z0 s5 P9 h4 p! |1 S$ F6 w$ M
  1313. STA <Time_M
    0 u( d6 C) k  ^3 w" L
  1314. STA <Time_H
    3 l, Y- C4 S- g
  1315. STA <Time_Cnt
    9 k$ a( Q- P, l! Y! h$ _
  1316. RTS5 m+ o; c( M' \$ p/ [6 x6 J6 B* Q

  1317. * i# m4 x9 V" `+ {0 X* \
  1318. ;==============================  l( i4 H  B; t0 v$ l7 U: k8 Q7 d* o
  1319. Music_Bar_ReSet;音乐条重置! h1 m: N* J) r) J! n
  1320. LDA #$00' f2 V. t4 q; Y/ h1 _  T
  1321. LDX #$004 u9 X: ]4 W* [! x: b
  1322. Music_Bar_ReSet_Set
    : a4 [* X, t1 y- B; B7 ^
  1323. STA Sound_Bar,X9 {- p$ |- j/ Q# N8 t
  1324. INX. T  \, `; @# }, F
  1325. CPX #$10
    2 j0 w# u. W: [6 d
  1326. BCC Music_Bar_ReSet_Set
    * Y8 T2 o$ @2 m( ]# S! F- Q- {
  1327. RTS
    $ t, v4 V8 G3 W3 ]  A

  1328. 8 Q  s) `9 ?' _; s' L* x# O+ b/ n
  1329. ;==============================
    8 k# z& v1 [9 E; Z+ f  f
  1330. PPU_Data;PPU数据写入
    1 x8 X) y7 @' D( I
  1331. STY <Data_L! e6 ]& u5 Z& }7 \
  1332. STX <Data_H
      W0 ^0 [' x0 E; i7 k' v
  1333. LDY #$FF
    ! k/ t3 O9 h3 k  o: g: c: y; C
  1334. LDX PPU_Cur
    / t5 r. E7 h) O' L' ^; {8 F$ A
  1335. DEX$ g, V  g' _* F! V# @8 ?
  1336. PPU_Data_Beg. [7 j7 T- |6 J+ C0 I
  1337. INX2 m3 f: G- e8 F) y5 U
  1338. INY9 {* }. v" w0 l3 \8 q' Y$ U* i5 X
  1339. LDA [Data_L],Y
    9 j7 s, H2 ~3 {' g, T  Y4 J
  1340. STA PPU_Addr,X
    ) L! v4 Y" b$ t, _4 a1 S& V) T
  1341. BNE PPU_Data_Beg
    * Y8 p5 l8 R* y; w1 m+ f7 s# A# W
  1342. STX PPU_Cur! e4 ^+ X+ K% n& b
  1343. PPU_Data_End
    / k. `4 d( K/ |: d
  1344. RTS
    0 o6 z# c% B( `- D
  1345. : a; u7 b6 F& q5 K
  1346. ;==============================( z" c0 c8 W3 Z  S
  1347. Music_State_Show;播放状态显示
    . r- i5 X0 S; G
  1348. LDA <Music_Stop_State% ?; T! b' a& `/ E! f. K
  1349. BEQ Music_State_Show_Play; c2 e4 o' S+ p
  1350. Music_State_Show_Stop
    / h, y$ b# W% i2 k3 Y
  1351. LDY #LOW(Music_State_Stop), ~) r; s& ]! x& ^+ ?% z
  1352. LDX #HIGH(Music_State_Stop)
    . A' C* b% K$ W* ~
  1353. JSR PPU_Data' @, F( N: r, e
  1354. RTS
    1 [& r* ^" D( b5 M7 ~8 D- N9 J
  1355. Music_State_Show_Play* _( y' a6 V/ e! W5 Q$ Z9 q
  1356. LDY #LOW(Music_State_Play)( }/ [) G9 f9 M- Q
  1357. LDX #HIGH(Music_State_Play)
    0 R; o: c' y- I. w1 K, s
  1358. JSR PPU_Data
    5 i* \+ a( W* H2 a6 N$ x' d
  1359. RTS0 N6 D. J7 M7 \$ P4 H
  1360. # {; a! w# Q, L" v, S
  1361. .IF SOUND_BAR_SHOW_ENABLE7 [7 P" O$ D1 r# F
  1362. ;==============================/ p2 F+ i/ _( L, e  L8 l
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    6 U. O7 o& v- E+ M6 `6 g
  1364. LDY #LOW(Sound_Bar_Text_Data)
    1 m/ u9 |: d" B. G2 F
  1365. LDX #HIGH(Sound_Bar_Text_Data)& h8 u3 ~& a: O1 `  Y! H4 H
  1366. JSR PPU_Data3 B( ^) i( S8 f
  1367. RTS2 A' c( s( |  f: q
  1368. / z0 g& B3 f1 r
  1369. .ENDIF) r" z) w3 D5 A" f
  1370. 4 A* M/ |/ e, W
  1371. ;==============================0 ~1 E; A# B, P, Q, P
  1372. Set_NameTable_Attributes;设置命名表属性
    5 \: j, `* O# V0 O: i0 i, H
  1373. BIT PPU_STATUS
    5 Q+ z8 {# t- e0 _& O
  1374. LDA #$23% ^* T8 g5 H: m. q
  1375. STA PPU_ADDRESS7 G( }- H/ f  F$ t/ D& K# C
  1376. LDA #$C0
    , {. j8 r8 M! ]3 u9 p
  1377. STA PPU_ADDRESS+ v6 D" R4 |4 S( W" I
  1378. LDX #$00  Z- ^0 K; ]9 M7 [0 l7 X0 Q* c
  1379. Set_NameTable_Attributes_Write) G6 g' Z+ |  C9 p! H6 ]
  1380. LDA Palette_Attributes,X) b  c: S; D/ B7 |6 J
  1381. STA PPU_DATA
    ' @: \5 H+ ^1 Z* k; r2 [
  1382. INX" r. c, Q  |6 Q% l5 g' \0 U3 R
  1383. CPX #$403 C3 [7 D- W6 V5 T4 w
  1384. BCC Set_NameTable_Attributes_Write
    9 G2 b* n+ N! ^- b: G9 P
  1385. RTS
    9 L/ U3 @% U, q. f* Z3 G. T
  1386. 3 W0 Q% v9 f5 x
  1387. ;==============================
    8 p( A$ H4 f6 }  J/ i9 P
  1388. Set_Palette_Color;设置调色板数据
    ( T+ M( B6 M* X+ V" g9 E% W5 [7 E
  1389. BIT PPU_STATUS
    ! Z6 u4 X/ {1 V# P$ i& P" t
  1390. LDA #$3F* A8 r: j% U4 H' J: ?
  1391. STA PPU_ADDRESS
    0 T0 J5 [* W1 K. g$ r
  1392. LDA #$00
    ( L3 Z. Q9 _+ m& ~, b2 e
  1393. STA PPU_ADDRESS" q" Y' ]. J0 y) H
  1394. LDX #$00
    8 q" {4 K2 X* u1 a
  1395. Set_Palette_Color_Write
    ) c5 v; B0 E1 V; A7 v' L
  1396. LDA Palette_Data,X9 V& y: Z- i) ^( K- B" e
  1397. STA PPU_DATA, A- z+ O5 I: @% J" A
  1398. INX. @, @% b: x! |
  1399. CPX #$20
    ! h, y9 {, u3 g
  1400. BCC Set_Palette_Color_Write& \" Y8 `4 i# v  r
  1401. RTS
    : L( p: W" T  T7 z5 d
  1402. ; y8 _" z6 p" \8 @# t; h/ G
  1403. ;==============================
    . T$ V/ ^* l; k
  1404. Init_Palette_Addr;初始化调色板数据
    - X& R9 v+ }8 v0 J+ P+ ?9 i! K
  1405. LDX #$00
    " S1 t' F  V" w4 v* ~
  1406. Init_Palette_Addr_Write7 r0 n. o" s% e4 B
  1407. LDA Palette_Data,X5 Y" e$ R) K( H
  1408. STA Palette_Addr,X
    1 h) ~; L) H! \1 C$ G
  1409. INX3 B1 t* ~$ A7 _5 U! A2 Y2 ^! k/ u5 J
  1410. CPX #$20
    7 a! x  C9 |, a% A: V- r
  1411. BCC Init_Palette_Addr_Write) J3 N! r+ S. H# P; t4 z- r; d2 }
  1412. RTS
    9 A4 o8 Q3 K! y  x; `

  1413. 2 V+ ~+ C- A0 g6 a( ^' H8 |
  1414. ;==============================
    ' W: Y* T$ v: U; u
  1415. Update_Palette_Color;更新调色板颜色! c, v: E' S. ^  ^3 Z/ h
  1416. LDA <Palette_Update_Flag& g* J! _% d+ Z  m: H
  1417. BEQ Update_Palette_Color_End
    2 {. h& C4 k2 w8 E
  1418. LDA #$3F3 |  i0 `. V8 ^; v( |# v' b" d: q
  1419. STA PPU_ADDRESS0 ~# \3 a9 R- ]% y4 K- B/ |
  1420. LDA #$0C6 W/ i0 z  G6 }( i$ f
  1421. STA PPU_ADDRESS
    ( s; i2 Q  e/ d% C
  1422. LDX #$0C4 M: F9 b9 y# {7 R
  1423. Update_Palette_Color_Write( c6 |  K' }4 z, y% M2 p
  1424. LDA Palette_Addr,X
      \5 g; L; h3 ]3 c& C/ o
  1425. STA PPU_DATA
    % p( m, P  b3 B
  1426. INX/ K5 E1 q: O( z; N' g
  1427. CPX #$14
    . [1 U& s9 s9 m! [% {* B6 X9 P
  1428. BCC Update_Palette_Color_Write
    2 t- T. L. l, b; R( i4 E
  1429. LDA #$006 u- R0 P5 h3 q4 }& ^( v
  1430. STA <Palette_Update_Flag
    ! A4 D, ^! {: X
  1431. Update_Palette_Color_End2 Z5 z4 \7 C, \* b
  1432. RTS
    , H* k9 D" E8 g: b
  1433. " \% K' ]! g! c* r
  1434. * b. z$ ?3 {% B0 F: a# _# Q
  1435. Update_Sprite_Palette_Data( [% B3 V1 `4 Z1 M
  1436. .DB $214 Q6 `7 f( y( P) I
  1437. .DB $21; G# ]. r! r1 M  |- v+ Q
  1438. .DB $11
    ' l1 B1 l9 B* J7 \; P$ G
  1439. .DB $019 ~- m/ G( e" |- p3 i* h
  1440. .DB $01
    - q- f7 d  L9 a; R% B* X6 v
  1441. .DB $118 |8 P! Z, \: l
  1442. .DB $21
    $ o& }6 C- E) j8 m) e
  1443. .DB $21
    % m! ~8 }8 G, S, b. Y3 W
  1444. .DB $11
    ( G$ `5 |! Z, U/ B' D- u6 o
  1445. .DB $018 F0 Y. x0 I$ M! E3 K. X
  1446. .DB $11
    6 w0 B* ?- R9 E* w) w/ p
  1447. .DB $218 E1 z8 S4 }: K8 b
  1448. .DB $21) }& F/ L) p5 ^0 t
  1449. .DB $11
    % R  R  ^( ]2 v
  1450. .DB $01
    ; a" m- ?# m9 w3 d5 ^8 u( P
  1451. .DB $11( T& a; p0 y0 v" w: s! b; G+ V6 k
  1452. ;==============================5 _) ~9 _, o; b3 V2 H6 {
  1453. Update_Palette_Data;更新调色板数据
    % Z1 Q. W# ^7 |" q5 I9 k6 r+ u
  1454. LDA Nmi_Time_Count
    / {7 E& i; f; i# E: j
  1455. AND #$08
    0 }3 h0 d& C6 [9 i
  1456. CMP #$085 N7 a6 \3 s! ?' @+ l$ M! P8 J
  1457. BNE Update_Bkg_Palette_Data. S8 _; S4 N! c2 R7 `* D

  1458. 9 M! p. \; v. n  C
  1459. Update_Sprite_Palette_Data_Set1 O* M& M4 J8 W6 y5 m
  1460. LDA Nmi_Time_Count& w* Y, F. x7 C0 X# F
  1461. LSR A
    ; K, ~! J/ j7 W7 ?) z% w  d
  1462. LSR A
    2 j3 C& n3 f3 N' I  z0 o( V
  1463. LSR A
    ( o: \9 w& N+ J1 d0 r5 \
  1464. LSR A
    ' d+ v" B" c2 K: g! {" r! n7 l' R
  1465. AND #$0F
    ) {2 P% _1 }# O' x3 C: R
  1466. TAX- \( I4 j. B+ N8 Q* c% @( s8 l5 V
  1467. LDA Update_Sprite_Palette_Data,X
    / e! C/ O& m: o0 d5 G8 \; i
  1468. STA Sprite_Palette_Update_Addr
    1 t: Y/ Y4 ?2 h7 ^
  1469. LDA #$01
    " \: _; s# @3 K/ v
  1470. STA <Palette_Update_Flag
    6 d/ w' n& u* \; m9 E7 }
  1471. + t3 M" T  U( o
  1472. Update_Bkg_Palette_Data
    ' |/ X3 B" x" U1 B
  1473. LDA <Text_Disable_Flag- P' V( p  g: H; E/ T( W8 W& a
  1474. AND #TEXT_DISABLE_RAM, P1 H2 o. R3 K3 J3 [4 P7 I
  1475. BNE Update_Palette_Data_End3 X- l  E' @- h
  1476. LDA <Music_Stop_State( b2 G7 Y$ \& G+ V) k
  1477. BNE Update_Palette_Data_End/ G8 h; s. `. R, a; T
  1478. 2 K; Y! T0 r4 k. l" V. x' G
  1479. Update_Palette_Data_Check
    : `/ I" o2 d. j( E" m3 y! y
  1480. LDA Palette_Wait_Cnt
    ( b' H: j: V: _, l
  1481. BPL Update_Palette_Data_Check_Over: Z, o, T- t$ Y! D$ r& ~) P& c
  1482. LDA #PALETTE_UPDATE_INTERVAL
    - x/ f; _: `# u8 ~7 y
  1483. STA Palette_Wait_Cnt
    7 z( k; k) f7 Q1 R  j& d
  1484. Update_Palette_Data_Check_Over3 x, y- s1 L3 X: z, A1 y
  1485. DEC Palette_Wait_Cnt
    . ~+ Z+ e; g. _) F. G
  1486. BNE Update_Palette_Data_End' `6 s% Q8 ~( u7 y
  1487. ! g/ c' ?+ S' n
  1488. LDA <Text_Disable_Flag
    * P: ]& x8 o% J1 V7 l
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME  M. Q2 N9 A6 f% d% D& K
  1490. STA Text_Disable_Flag; z( [5 q6 Q# [) v- U2 p
  1491. INC Palette_Update_Flag
    - p) I: C0 w( o7 F
  1492. & I+ [" W* w6 ^# m4 o# K* K2 j
  1493. LDA #PALETTE_UPDATE_INTERVAL; E+ s  g3 f1 ^2 C8 j
  1494. STA Palette_Wait_Cnt
    " }2 o6 Z+ L: F5 {9 c2 y

  1495. . {- O! `. s( D7 G5 X9 t$ ]+ ?
  1496. LDA Bkg_Palette_Update_Addr8 q& c' K; U8 N+ d6 w  W7 F, x
  1497. CMP #PALETTE_UPDATE_MAX
    , W5 ?. x' X8 ?+ X. E
  1498. BNE Update_Bkg_Palette_Data_Set
    & j" e; [' r+ F  r8 ?, h
  1499. LDA #PALETTE_UPDATE_MIN - 1
    3 M( |! K+ S; v$ Y
  1500. STA Bkg_Palette_Update_Addr
      M3 q6 L' M; A& {8 ]5 {5 H8 o3 x9 N% L
  1501. Update_Bkg_Palette_Data_Set
    , N7 o$ b$ D7 H. a$ A" S
  1502. INC Bkg_Palette_Update_Addr: ?/ T3 p4 E: h! Y' O9 t

  1503. * n9 L1 V* `2 g( }* \
  1504. Update_Palette_Data_End
    9 G- I9 k6 O. b% |
  1505. RTS
    + P6 [& L, @3 r; W' r  a  |

  1506. 7 z. \. B0 Y* N
  1507. ;==============================
    8 a. K5 T$ y2 V& }& a1 v) t
  1508. Show_Music_Text;显示静态文本
    # T# M$ B1 b; l9 o- o2 C9 r# U
  1509. LDX #$00* A3 }1 g  R4 C+ x% i, `1 h! k8 j. o
  1510. Show_Music_Text_Set/ C; B/ S  I& g
  1511. LDA Static_Text_Data,X9 W7 b" M- A- R- q% I
  1512. STA <Data_L" k! s, c- p, w, R% }6 ]
  1513. INX
    7 R. a# y  N' P- ^' a
  1514. LDA Static_Text_Data,X
    6 I& H. l3 ~+ P! W( e- u2 I7 a
  1515. STA <Data_H, T5 n2 I; }# h# ]" [" w* g6 l
  1516. INX
    3 ~. Y, n' U0 E$ _
  1517. LDY #$00
    0 x; L% U  t: q9 W2 @
  1518. LDA [Data_L],Y- H; |; m9 b) C1 J1 c7 E
  1519. STA <Data_Cnt$ D8 h! q8 ?6 t
  1520. DEX
    / n: o, Q7 r( I1 x
  1521. DEX, }# g3 b0 x1 Z7 \1 g8 M4 I, H
  1522. LDA Static_Text_Pos,X  i/ {" {4 u, E: W/ Y
  1523. STA PPU_ADDRESS  K5 G+ [/ J6 t) g
  1524. INX
    . c% B1 w/ x5 {3 H. S  \/ D
  1525. LDA #$20
    " \& G9 i. I% s  @
  1526. SEC4 N# X/ F0 Y5 t( z" X- e' D5 {8 `
  1527. SBC <Data_Cnt
    ! X! H' i& u) K, R# e
  1528. LSR A  Y+ e; _6 H$ q3 u9 s
  1529. STA <Data_Buf
    $ e" s$ O7 I& s4 Y# E8 _
  1530. LDA Static_Text_Pos,X0 m1 V7 p# {6 J) v% ~
  1531. AND #$E0
    : g, W0 _8 o: \. S& Y! Y
  1532. CLC
    + h3 z3 e. U! b* M& |! t6 }
  1533. ADC <Data_Buf
    % X8 s0 Z) U% I$ V
  1534. STA PPU_ADDRESS  K) F6 o/ u$ {8 k2 x
  1535. INX
    $ ~& K0 U: `  F7 q5 Q% T
  1536. Show_Music_Text_Set_Write
    9 P, D5 p% _; d8 T1 V, x! r
  1537. INY
    : s# z' p; d; b% T# `+ Y( \
  1538. LDA [Data_L],Y
    - A7 P3 h  p: E6 N( ^$ H; F1 R3 c
  1539. STA PPU_DATA" |2 [" N0 w# I1 a7 ^+ k/ G4 [; {
  1540. DEC <Data_Cnt$ q9 W. W/ h& `$ M% A7 u
  1541. BNE Show_Music_Text_Set_Write
    . y* T# f! u" \* f! u  b$ v7 s- N
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    ; [1 x' k  f+ N' b5 e- }$ j
  1543. BCC Show_Music_Text_Set! k* p) z6 ~7 Y! n
  1544. RTS5 S' y3 U6 L$ D
  1545. ) A$ |+ Y8 ?; z
  1546. ;==============================
      P5 M1 ]" i1 V5 E$ x( T# O
  1547. .IF Track_Name_Pos;显示曲目信息
    2 J9 a4 i' ]8 c; m* S5 h

  1548. $ q7 @8 j$ D: [0 q; V* c2 l- d
  1549. Clear_Track_Info9 e8 g5 q! Y! B
  1550. PHA  J  E8 u/ x$ B" E+ D; a
  1551. LDX <Music_Item_Cur
    # h& U4 [' g) ?" Q& E2 w! B
  1552. LDA Track_Name_Addr_Flag,X, P3 u3 O# f7 d# ?
  1553. BEQ Clear_Track_Info_End_Ex% L! H+ v  E/ W- U
  1554. PLA
    # {5 n9 G* l! h. {, p9 p

  1555.   f& k  X, ^( ]: O. x/ O; b3 U: c
  1556. LDX PPU_Cur9 `/ M' S( t- M. f  j& W
  1557. PHA
    * T3 E8 o$ D. C) L1 T' s
  1558. LDA #PPU_MODE_CNT_CLEAR
    - [* X8 n& a! V6 z7 a8 X
  1559. STA PPU_Addr,X
    7 t& g# Q# l- f; p2 p) I. w- |
  1560. INX
    " ?- O* [! ?# V2 Z% B6 Y3 |1 [
  1561. PLA5 i. t# t* `, s+ {! j
  1562. JSR Show_Get_Track_Name_Center_Pos: G9 e: _0 C! m  w' s7 S: C9 L* O
  1563. STX PPU_Cur
    4 y6 J4 u9 D0 m; C3 v+ W
  1564. Clear_Track_Info_End: L9 c" w# `$ z( f' L: T1 w7 P
  1565. RTS! w  J" F5 t  `* D9 y) e5 T
  1566. Clear_Track_Info_End_Ex
    " V0 Q7 ^' i3 y+ }6 S* ?
  1567. PLA
    9 ?9 ?& y9 P& Z- O8 S! y& [. ]
  1568. RTS
    . U( U2 g0 B2 [8 j( I, T

  1569. 0 A% e/ H) o8 }8 H7 Y1 h
  1570. Write_Track_Info8 j- H  }( x/ n& ]. \* |% k
  1571. PHA
    . H( ^; _) H# ^# r4 \1 ^) Q* C
  1572. LDX <Music_Item_Cur
    ' ^8 O% N6 }0 P5 ~) K  q# n
  1573. LDA Track_Name_Addr_Flag,X
    2 ^; h: x" Z5 C/ L" M  q
  1574. BEQ Write_Track_Info_End_Ex3 O2 C9 }% V9 P  J; g/ e: {2 P; u
  1575. PLA) Q: J9 }# T1 U" ^/ I
  1576. & D$ l) z. d6 m+ C
  1577. PHA. R3 J4 W0 `. C* [* A$ }
  1578. LDX PPU_Cur
    ) b" \+ Q* F; I/ E
  1579. LDA #PPU_MODE_CNT_LINE+ _4 u7 W* a" Y- J. O8 w
  1580. STA PPU_Addr,X1 Z& u+ v+ g- T% }
  1581. INX! U7 d! `# S# `
  1582. PLA
    5 d# ^# x1 o7 P$ A9 J! V! |
  1583. JSR Show_Get_Track_Name_Center_Pos
    1 M  K( y7 E: Y. ~( ^7 Y
  1584. Write_Track_Info_Data- o1 a: h  I- ?. }
  1585. INY1 P7 y4 D, ]1 }. L# W) h8 |4 U
  1586. LDA [Data_L],Y, K! h4 _' F: q5 K3 p2 V
  1587. STA PPU_Addr,X0 g, N' w  E8 ?
  1588. INX+ Z: M: {: R8 m
  1589. DEC <Data_Cnt/ \! l5 a! f9 ~9 A1 g' L- T" _
  1590. BNE Write_Track_Info_Data
    9 A, N) T: F/ ~; }; ^
  1591. STX PPU_Cur2 i. x% d* u2 D6 p1 e+ R/ X! I
  1592. Write_Track_Info_End( \6 B" n! b7 w8 y2 b6 q- m4 B
  1593. RTS, M+ h6 D/ \5 c5 k- `
  1594. Write_Track_Info_End_Ex8 i- n4 `  T2 ]
  1595. PLA2 ]4 l/ V' S" L# @
  1596. RTS
    * ]' L; s2 x7 b3 P# R+ ^
  1597. / w, a" y7 C8 x" Z
  1598. Show_Track_Info2 X# I8 E2 U% D7 Q( B% u$ [7 ~. w* _
  1599. Show_Track_Info_Clear! p$ u  R3 d3 f+ x6 t2 Z9 {5 b) h3 t' E  @
  1600. LDA <Music_Last; v9 e6 @% T: _; j# c

  1601. ' j& e0 i$ f8 A& J
  1602. JSR Clear_Track_Info" `" |5 D, U. J$ S) S( a
  1603. & y: ~. i) Q3 _( _$ N' @
  1604. LDX <Music_Item_Cur
    : g- v7 ]. {% c5 a0 [4 E# j
  1605. LDA <Music_Cur,X
    * z' A$ K) S; s, n5 R- |
  1606. JSR Write_Track_Info3 O- H2 J, \  B/ d2 r% Y
  1607. RTS5 `1 V! I6 D7 u# V! q: F

  1608. * v2 r4 n6 H+ t& d2 S0 j( s! U
  1609. ;==============================% r" l2 @8 e9 S1 C. @) b- o
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置+ o( l/ y$ F" a  j) X  o  [

  1611. 3 F" s' X# W" {' G. G$ X
  1612. ;取出集合名索引
    0 z; D! N4 b: c6 l- ?
  1613. PHA) g* r; P! A! C/ V0 _

  1614. 1 g7 N: H) F0 }& f% o$ ?- q
  1615. LDA <Music_Item_Cur
    " A; E9 N, I; m. ~2 @- c2 Z
  1616. ASL A1 N* M0 n! N2 N4 l
  1617. TAY
    & G( x2 }/ [/ D- z% b
  1618. LDA Track_Name_Addr_Port,Y
      Q' D8 L. h6 x+ S5 W" F% D
  1619. PHA
    1 k- e3 o/ e/ s
  1620. INY
    , b8 ~9 Z5 L2 H0 f9 `
  1621. LDA Track_Name_Addr_Port,Y
    1 Z3 ]! W6 D1 ^6 W. d  Y$ z
  1622. STA <Data_H( I# M$ R- F8 L' J0 }: \" z  F
  1623. PLA
    . \) B5 M. M. \/ u6 ~, U0 t. B' o
  1624. STA <Data_L
      G* R' d9 S) R- @0 D
  1625. ( }3 l" p- g3 {) i- X1 c" ?
  1626. PLA
    " S% K% ~3 w' B% E$ `2 _
  1627. % d5 ~" j+ A: P3 @
  1628. ASL A3 w/ B$ s+ Q, H
  1629. TAY
    & o( ]  ]5 n3 X4 h
  1630. LDA [Data_L],Y
    3 x$ ]* `( A. ^+ a- ?3 o2 }
  1631. PHA. h5 n) u& ^7 t# R
  1632. INY
    2 O% {' e0 V% N! C$ i3 F1 x
  1633. LDA [Data_L],Y1 ?/ f# N8 y0 N9 c2 G
  1634. STA Data_H6 r* ]+ h/ ^' c  ]; M* J
  1635. PLA" ]- }* S+ t0 T, k
  1636. STA Data_L
    ! M. l+ c- W# e

  1637. ! J# O+ L& [8 X2 o& v
  1638. LDY #$00
    " `* P$ K# o3 W. u7 n6 z
  1639. LDA [Data_L],Y
    ) q: \. {0 N& T' a) ~# t
  1640. STA <Data_Cnt4 l! F8 }$ D& U  `
  1641. LDA #$202 X* d' |5 t4 y8 x6 ~
  1642. SEC
    1 }9 d$ Z- p8 F+ ]3 J
  1643. SBC <Data_Cnt
    9 Q9 {/ ?$ {; p+ P' a! V$ F
  1644. LSR A
    & J. O; {* A" c( d0 w7 p
  1645. STA <Data_Buf. B+ x: l5 {) @5 c  ]" _% ]
  1646. LDA #HIGH(Track_Name_Pos)
    " n" z3 A) O+ g2 C5 A+ a; D  z- |
  1647. STA PPU_Addr,X* r1 }2 E$ t5 t1 U# h0 n$ r& }
  1648. INX
    * i9 c. }5 p# v" P6 t$ Q
  1649. LDA #LOW(Track_Name_Pos)
    1 d) e: Y0 `$ P7 V; b
  1650. AND #$E0
      d- |* W! c& w5 b  y! h
  1651. CLC
    9 X; X9 F+ T; f' C& k: Q: R  V9 j
  1652. ADC <Data_Buf
    ( S+ Q5 d4 F  b# V: s2 i! k. N1 K
  1653. STA PPU_Addr,X/ F4 C1 Y% _5 Q! N4 L/ J  b
  1654. INX8 o' A! u5 _$ ]
  1655. LDA <Data_Cnt4 k3 V/ G& ]& U; L$ f6 s
  1656. STA PPU_Addr,X
    ) t5 X& T3 m* `) R- _) t
  1657. INX
    * ?. o' n- k1 Y" x4 C
  1658. Show_Get_Pos_Center_End
    7 t9 o: \! D4 h8 V: z
  1659. RTS
    ; e  Z% @! K- E9 Z# c$ d3 a: x
  1660. .ENDIF
    * o7 C% C% P0 G: `, ?9 y; r

  1661. 5 `: e% r2 j$ l$ {0 O9 @( m; i
  1662. ;==============================
    * Y6 K2 J( O/ f5 N5 v
  1663. ;音乐端口清除
    : ^" p: S1 ?/ A0 ^! Q, E& A
  1664. Sound_Data_Clear8 O" o6 S9 a3 y
  1665. JSR Sound_Port_Clear
    - O# W0 |0 w' I1 a0 n( O6 }
  1666. JSR Sound_Ram_Clear" u5 c, M  |+ h" y3 m
  1667. RTS$ n: h7 d9 T  [; W& |: z, }( C

  1668.   Q2 ]7 c- l- D4 D
  1669. ;==============================
    ! e6 b9 o+ R3 M, m* |
  1670. ;音乐端口清除4 ^4 d1 s) f, n. b( b5 h3 {6 {1 e
  1671. Sound_Port_Clear
    + [2 n6 c! W' V5 Q' S9 v0 o
  1672. LDA #$001 E# ^7 @# v, ?
  1673. STA APU_STATUS
    ) s3 m7 H- s3 C
  1674. LDX #$00
    7 @' b9 g: I  z" H. b
  1675. Sound_Port_Clear_Write& Y( k' t, R- F/ A% U) n. x
  1676. STA $4000,X
    * l+ A5 z+ {7 s" q
  1677. INX2 w! e4 c# J+ ]8 s0 Q0 U) m: q
  1678. CPX #$14# x) I3 U& v- ^
  1679. BCC Sound_Port_Clear_Write
    & ~4 S2 U* x( t- a$ U2 Y
  1680. RTS
      ~3 t1 u( Y) t7 k6 A7 f) F# ?  i/ d

  1681. # ^2 s! M! y9 z' |! g
  1682. ;==============================# k) u$ I. d1 L* a! i
  1683. Sound_Ram_Clear;RAM清除
    / g! a0 q% e" o" A/ b! n
  1684. LDX #$00
    $ R$ F: n, r5 l! [
  1685. LDA #$00
    7 G% G1 C, B8 F# ]( X0 U$ [: l
  1686. Sound_Ram_Clear_1
    + A, Q0 m5 m8 |" b8 }5 X" U. d$ ?
  1687. STA Sound_Ram_Addr_1,X
    , @8 |5 [0 L2 F1 [3 x
  1688. INX
    : N( ~, |4 w5 N0 N$ y$ f
  1689. CPX #Sound_Ram_Addr_1_Size
    ! F* I. p; [) Y- v  }
  1690. BNE Sound_Ram_Clear_1
    7 a9 w2 K1 V$ Y+ G# G$ j) w  ^+ J
  1691. LDX #$00, _  a0 U; a3 S7 I; k# V9 E
  1692. Sound_Ram_Clear_2
    + Y9 U5 l9 C" r( o# u
  1693. STA Sound_Ram_Addr_2,X& e, ]+ U% Z) |+ F6 g. T! v
  1694. INX! R* w+ V. p& y3 D- p: C( G# k9 j0 }
  1695. CPX #Sound_Ram_Addr_2_Size: Y* `! c4 G$ ]( N/ ]- q
  1696. BNE Sound_Ram_Clear_2
    ; T% Q+ f. h( h* ^
  1697. LDX #$00' Z5 S5 a: R5 n" s
  1698. Sound_Ram_Clear_36 u% p- E% w5 s+ B* ~/ e
  1699. STA Sound_Ram_Addr_3,X
    * d! \( q7 @, o1 C, U
  1700. INX- I' n2 A4 Q& v1 L5 S4 l
  1701. CPX #Sound_Ram_Addr_3_Size
    ; X3 z# _% j$ e- d" h
  1702. BNE Sound_Ram_Clear_36 e2 }+ c7 i3 X& s% b: S+ j
  1703. LDX #$00
    + r$ l) [+ W$ T  E
  1704. Sound_Ram_Clear_4  w6 \2 h- F7 ~; l
  1705. STA Sound_Ram_Addr_4,X/ e/ \3 a1 z% u
  1706. INX8 c. b" A. z; B1 l! T3 I, N. p2 p* E1 {
  1707. CPX #Sound_Ram_Addr_4_Size. ?6 `1 P8 j+ {6 o9 E
  1708. BNE Sound_Ram_Clear_41 O4 O9 F$ m( G4 u  y4 d. L3 X
  1709. Sound_Ram_Clear_58 O) W+ C+ I3 n" W
  1710. STA Sound_Ram_Addr_5,X
    - _: o3 @+ r$ \! m) j3 ?
  1711. INX' L" }) b, ?4 L* N" T5 l+ |" M
  1712. CPX #Sound_Ram_Addr_5_Size9 i# f6 i8 X! a9 G* q, V1 m
  1713. BNE Sound_Ram_Clear_5
    6 \) w5 z) c# K( u" r. K' R
  1714. RTS
    * v+ q5 |0 v$ S0 I5 B4 Z( O& a

  1715. 9 b; p3 d2 C/ C8 U2 b: Y5 R  p& x
  1716. Get_Music_Collection_Name
    % Z7 u3 L( V& u  ^, w1 F. c& c; E
  1717. PHA
    - P2 q) G# x. U: ?7 U
  1718. LDA <Music_Item_Cur+ ?1 H6 d' {) s! G4 E8 {: q
  1719. ASL A+ V' p2 C9 c- V# X
  1720. TAY
    , ^2 L% I/ M/ j5 e) v, ^7 G% i
  1721. LDA Music_Collection_Name,Y' U, a1 b9 v) v2 z/ L' G1 ?
  1722. STA <Data_L1 S( b1 E5 i2 d  T" }3 u
  1723. INY
    4 L- w, ]9 h/ p
  1724. LDA Music_Collection_Name,Y
    # V7 w% x0 G3 E& ~' t, s
  1725. STA <Data_H
    4 _2 U& Q: |. K
  1726. PLA
    ( X, j, I" S- d) W6 O6 ]4 o1 }6 L
  1727. RTS
    ( Z6 r7 C0 K9 w- T& c& Q/ M
  1728. # O1 f9 w6 a# }! q$ W' T7 G
  1729. Set_Sound_Total
    & m9 g5 f$ T( z) T$ i
  1730. LDY <Music_Item_Cur/ J. Z% p$ W% o+ @
  1731. LDA Sound_Total_Port,Y
    . i' G& Q6 h; H& K
  1732. SEC, q& {1 G# z9 x+ w
  1733. SBC #$01- h  W, }( ]7 U& `
  1734. STA <Music_Total3 ~" I2 ~' ^6 s! r! ?
  1735. RTS
    7 e, r% u) G6 k6 `9 ^3 u5 {
  1736. 3 H/ T  J  x& o" c& b( i. T4 f
  1737. Get_Sound_Start
    ( X7 z" u3 V' r! O3 ]7 \
  1738. LDY <Music_Item_Cur; s, w, B7 j, ?- z
  1739. LDA Sound_Start_Port,Y
    2 ~- B1 a. ^9 |5 q( d; s* N$ ~
  1740. RTS
    7 T6 s% H+ }* k
  1741. 5 m. ]2 a( D& l8 q" n  h5 {1 E
  1742. Set_Sound_Init_Port
    8 r5 i/ K* \4 m) W# N% F0 ?1 y
  1743. PHA9 j: \" ^1 N! p" l' h4 p! G
  1744. LDA #$20; v) c- c; s0 {3 j9 @  \, t5 v
  1745. STA <JSR_Addr_Op
    # N7 h1 H3 p0 @( e, W- F+ x/ j
  1746. LDA <Music_Item_Cur: L* H: ~, B2 ^
  1747. ASL A
    " y  r% ]( A2 ?5 T
  1748. TAY5 X% x, I0 [* k2 l2 n
  1749. LDA Sound_Init_Port,Y4 X1 p  D4 |1 k# N
  1750. STA <JSR_Addr_L
    9 v  e) e" r- Y% T! U
  1751. INY% w! B7 }: w. C/ [- {
  1752. LDA Sound_Init_Port,Y  G9 d- h6 k$ G2 F
  1753. STA <JSR_Addr_H
    $ D, }4 a  z; [
  1754. LDA #$60
    & }( I4 E" p/ q
  1755. STA <JSR_Addr_Rts
    , H; G9 K; t( V5 z8 M. c  E
  1756. PLA
    ' d' I, W' X9 v* l% K8 [0 t9 n
  1757. RTS- w! Q( X9 E# O  k7 N. [5 q
  1758. 0 g8 o8 w: V& E
  1759. Set_Sound_Play_Port+ W! ~, \  r3 b, S$ n% N
  1760. PHA
    / F5 a1 P) w9 m$ b
  1761. LDA #$20
    : j$ f( ?$ k( W
  1762. STA <JSR_Addr_Op
    8 [2 q+ ?0 u; c" S& q6 I
  1763. LDA <Music_Item_Cur% M& N; C" ?+ e$ ?) f, z% \
  1764. ASL A, H, }" l" |3 V; w( T- r: J
  1765. TAY5 h  _3 r$ {% t! x. O
  1766. LDA Sound_Play_Port,Y. z6 j8 z: J( q5 {
  1767. STA <JSR_Addr_L+ g* c6 J. a3 `8 r
  1768. INY. R" I1 ?0 l! `
  1769. LDA Sound_Play_Port,Y) k4 h  o+ q) e; Q& n' x
  1770. STA <JSR_Addr_H
    7 I3 t, R# c$ h. `  |0 \
  1771. LDA #$60
    ; |3 ]5 E+ z& {7 p* v, d
  1772. STA <JSR_Addr_Rts
    ! y/ N: m! d  ]6 ?1 ~; Z- h# e
  1773. PLA
    $ t$ Z5 G( h, `# m
  1774. RTS
    0 P) Q% w; [4 D3 p3 P3 u% W

  1775. - U( u* u2 u0 m6 T8 B6 s
  1776. Set_Sound_Reset_Port
    4 W  O8 q* E/ X+ j- n+ G9 b
  1777. PHA
    1 k3 f' O0 }1 `6 p
  1778. LDA #$20
    : r1 t( Y1 v3 f" i( N* X# B' ?: U
  1779. STA <JSR_Addr_Op# W# ~$ A! B  @# Q; Y: W5 g# ^
  1780. LDA <Music_Item_Cur
    % A* n* K9 @" a; L9 m8 R
  1781. ASL A* I) H9 {% C. f
  1782. TAY
    - S5 J- x# w6 e, x6 \& z0 n' ~/ ]
  1783. LDA Sound_Reset_Port,Y& G7 L& Q, U9 W' Q
  1784. STA <JSR_Addr_L
    7 z0 k4 n" _% ]: J/ ]
  1785. INY
    $ d1 g1 A+ M6 I; ^
  1786. LDA Sound_Reset_Port,Y
    4 I  c4 U5 e# t
  1787. STA <JSR_Addr_H
      a" j( f; I$ g. s1 A" w
  1788. LDA #$60- F: K- N1 {$ `. b4 V
  1789. STA <JSR_Addr_Rts
    1 j7 h! b) {8 T) H3 y6 S
  1790. PLA$ m4 H) R! R- b; J% D: B
  1791. RTS: @4 M1 X/ \) m; C" k) a" d; U

  1792. ' w3 Z& v, h$ ^9 p1 {* G0 o) K
  1793. ;初始化音乐bank
    3 J  F7 L3 m  p  E$ Q- C
  1794. Init_Sound_Bank+ }) A* ~' M5 T  b) K1 L" w
  1795. LDY <Music_Item_Cur
    $ B4 J, P. J% P' ?3 d
  1796. LDA Sound_Bank_8000,Y- M# D3 H5 \4 Y6 m& K% J: l
  1797. STA <Music_Bank_8000
    # Q, G: n( J& @& {4 L4 g* w
  1798. LDY <Music_Item_Cur
    0 Q8 K- X1 U( S* D0 z
  1799. LDA Sound_Bank_A000,Y5 P# e( R8 h- ~" U
  1800. STA <Music_Bank_A000' O) {( |% e  `4 ?% R2 u7 z2 x7 J  `
  1801. RTS
    5 N* V) @2 x+ ^1 o

  1802. ) {& f* w& p5 z" d3 ?6 f6 Z
  1803. ;==================================================
    # k/ U: B; \9 ?9 D
  1804. Sound_State_Reset;音乐状态重置
    $ f6 |0 B8 k* H. T+ c
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    1 M+ |1 V6 x4 v6 x4 |
  1806. JSR Time_ReSet             ;重置播放时间& O& D4 K; m% _9 o
  1807. . y+ H$ x; T: O4 m6 Y
  1808. LDA #$001 p9 b' U& V3 e/ ~
  1809. STA <Music_Stop_State! s' M5 v/ c  o+ T
  1810. JSR Music_State_Show       ;显示播放状态% R9 M; O# y, Q9 H* e+ K4 D% t
  1811. / c" J6 U" t  Q! g; `) f2 M
  1812. .IF Track_Name_Pos" Q* W& z, W4 w1 d+ \' ?; O: }
  1813. JSR Show_Track_Info        ;音乐曲目名显示% M3 n0 p7 Y/ |' l
  1814. .ENDIF
    8 H( G  \" g9 d; V/ _8 M+ n) a; K% I
  1815. 0 }' c3 n4 N- W$ B' _0 O
  1816. RTS. u% }, E& w; }" o
  1817. 6 L" B4 j" B1 J4 O5 j
  1818. ;==================================================
    / n8 y8 }- c* f4 ^
  1819. Sound_Init_Proc;音乐初始化处理
    ' D% \$ a+ b# E: g' Z$ M3 u
  1820. PHA1 z5 u# d$ |& V8 D  P" {$ s: R
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    0 B3 q7 G4 C, W5 O" s
  1822. LDA #$00! o- Y  n7 b  a# H$ z! u6 M
  1823. STA <Scroll_H               ;重设水平滚动7 f7 Q4 B# E, i# a( U3 }3 g7 f
  1824. LDA #$0F# T( s; r5 q) a' G+ ]
  1825. STA APU_STATUS+ g6 ]. \/ t: V+ r! w
  1826. PLA) Y% H  a' C0 j/ |6 D7 f3 ~; O! e
  1827. JSR Sound_Init             ;音乐初始化4 Y* M$ _, t9 O/ i/ j: i2 \- u6 c
  1828. JSR Sound_State_Reset      ;重置音乐播放状态" s1 v# B9 [2 U0 z( t1 d6 a2 T7 I; t
  1829. RTS
    1 y# @! V! [9 f( Q( {1 t
  1830. 6 _4 {) V) R% _1 Q* W1 S
  1831. ;==================================================% r8 E: \) b: U9 T4 A" I
  1832. Sound_Play_Proc;音乐播放处理
    ( A& k8 A. |2 r- t( a+ h  ^
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
      x9 L3 B" N% A
  1834. JSR Sound_Play             ;音乐播放9 q9 d8 b) B0 f9 l. N
  1835. RTS7 I5 |5 m% \4 ^2 l. A( D% f
  1836. : e, Q% J1 N) }
  1837. ;==================================================
    # v# a7 r2 o: Q- o( n+ M" p
  1838. Sound_Reset_Proc;音乐重置处理- I, d$ F4 T9 p) E% @* H9 p3 E
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    0 [4 o7 y6 }0 l+ k2 w& }6 |
  1840. LDA <JSR_Addr_L" B* R2 a& c2 }) H! p
  1841. ORA <JSR_Addr_H- B! s( a6 I6 w) E  n0 R5 _
  1842. BEQ Sound_Reset_Proc_Default- R' L* R* O* V8 w9 A3 L
  1843. JSR Sound_Reset            ;执行音乐重置
    ) }  B) U( q8 N8 z* q. Q
  1844. JMP Sound_Reset_Proc_Init_Sound" t8 b# b: F: p: m& Z; m" ~& U

  1845. 0 F3 H7 ^7 E% f
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理6 @& f& s8 m+ d$ C1 O* k
  1847. ( x- c" U/ L5 r; s$ D
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断" a. Z& D0 e. V/ ]$ q$ b
  1849. LDA #$00
    . L9 V4 B& l9 n+ k2 D: K
  1850. STA PPU_CTRL/ o0 ~9 X3 y7 d$ R+ n

  1851.   ]2 D+ R- t# p8 w8 ~; X+ q/ o
  1852. JSR Sound_Data_Clear
      W2 }' j, D2 w% q. c+ F9 t2 ^

  1853. " v  w/ I+ |% [4 R, p) L
  1854. Sound_Reset_Proc_Default_Wait$ p/ H0 N% v, {9 C2 {% W
  1855. LDA PPU_STATUS
    6 D  K* k) p% x" X+ u0 P7 k. L
  1856. BPL Sound_Reset_Proc_Default_Wait
    & P3 G. |6 x0 `3 G* {0 n
  1857. 9 N/ b- m1 S! Q. Q1 O, X& e& J
  1858. LDA #$00
    2 f$ T, _! B" @3 w  ?0 a
  1859. STA PPU_ADDRESS
    # }. `/ ~0 }% m$ T$ L. ]/ `
  1860. STA PPU_ADDRESS
    0 E8 f' a9 v1 f1 ~  D9 s
  1861. STA PPU_SCROLL
    " V7 }. ?/ u# r6 D# O* c
  1862. STA PPU_SCROLL
    $ w% l, ~% z+ H# v) ~. S

  1863. ' n% A, q1 p8 e$ F" m
  1864. ;恢复PPU控制
    2 ~9 r2 u3 f# J3 d" L2 I4 v0 E
  1865. LDA Screen_Ctrl4 l0 r5 g6 y' ^) E9 o/ m* T
  1866. STA PPU_CTRL
    - F5 w* @" ~; d* T9 m! ^
  1867. " H, Q5 J1 q' f; c  V
  1868. Sound_Reset_Proc_Init_Sound& O: ]+ a! U5 J2 n1 A
  1869. LDA <Music_Stop_State
    5 m! q/ H  ?+ X; U1 {0 c
  1870. BNE Sound_Reset_Proc_End0 ~3 _- N0 ^$ I8 d+ w& U% I  |$ R
  1871. LDX <Music_Item_Cur+ e- i- {. S2 p* r6 C0 f; y/ ^
  1872. LDA <Music_Cur,X' v. w9 e# I9 i: v+ I( ]3 s+ Z
  1873. JSR Sound_Init_Proc# J, @% t3 n# X6 V5 g. w, G
  1874. Sound_Reset_Proc_End. B  @. b0 {; I% O6 [
  1875. RTS
    $ S9 J- P8 N- @5 s' |

  1876. % w1 H- L; f2 ~+ d; t$ e
  1877. ;==================================================
    8 l& M# Z. R( K# V( }  N, U0 l
  1878. Clear_Item_Text;清除页项目
    & ~  q" V( u- d0 R( k! c. C
  1879. LDX PPU_Cur* Y, E# z8 a1 o9 m1 n, E, U( M
  1880. LDA #PPU_MODE_CNT_CLEAR
    ! H; c- J& v1 r. t0 {
  1881. STA PPU_Addr,X+ R# |1 W6 Q* U6 d: k# r1 M! r
  1882. INX
    ; e# L# K4 E0 w

  1883. * x3 f7 K* v% R  a2 F! F
  1884. LDA <Page_Last
    4 W# M/ L4 @( k! N
  1885. SEC/ Y& H. ?0 a1 L* G: J  G9 s! q; i
  1886. SBC <Page_Last_Index
    1 d! m2 J. [6 @& t, @
  1887. ASL A
    7 p( f. E0 i4 i. `

  1888. ; n+ w2 t% `* o% p5 u8 J# c# B, Z' @) Q
  1889. TAY
    # |1 v+ |3 O% O+ o" C4 r
  1890. LDA Item_Pos_Data,Y  g+ x' }8 s0 Z; |
  1891. PHA5 ~5 S% i1 x% o8 v# J
  1892. INY9 C$ S. z+ i$ ^/ ^) A
  1893. LDA Item_Pos_Data,Y
    / I7 W' `. F4 o" M" R: u$ ~
  1894. STA PPU_Addr,X8 v3 W4 `: I8 ^; q
  1895. INX4 X# |& T3 P8 G0 A6 H! G1 T
  1896. PLA8 d5 l' m8 S& A/ `5 u
  1897. STA PPU_Addr,X9 W2 ~- i/ B" J: u) m
  1898. INX. g  B: h: X' P

  1899. : _, [, m* z; ^; p( E6 N) C7 S
  1900. LDA <Page_Last) i7 p" U8 T% a# W5 w7 g) e
  1901. ASL A
    + K/ U: r& w9 D# `
  1902. TAY( e3 `" @, p  D' R
  1903. LDA Music_Collection_Name,Y
    + D& X& N& z; M- u1 E( V' t
  1904. STA <Data_L5 W0 X2 v- A, R# s( @
  1905. INY8 U& c! [4 y" X* J! ]% V% x
  1906. LDA Music_Collection_Name,Y
    ! t# Q  p2 d/ U, g8 d1 ~
  1907. STA <Data_H
    % P, j' K/ [9 z+ H; Z, d* h

  1908. 7 H& B. x# h3 X4 W$ _
  1909. LDY #$00& w/ I2 |6 g& M0 E$ N+ v2 O; c
  1910. LDA [Data_L],Y8 o9 h7 i$ H, f: `
  1911. STA PPU_Addr,X  j/ Q8 q& @6 W7 L- y/ h
  1912. INX
    * Y8 e6 _1 d% `4 a( y
  1913. Clear_Item_Text_End
    ( {3 c5 ^4 U( H+ K
  1914. STX PPU_Cur; h( w2 w, r  b* Z+ ^3 O! u! ^* H
  1915. RTS
    : i  F7 f6 z" I9 f+ P
  1916. . O- |3 _3 U; z) Z- }
  1917. ;==================================================
    ' r% o% y+ }4 z+ x/ g: d4 J
  1918. Show_Item_Text;显示页项目  R3 z9 G* Q# X! }
  1919. LDX PPU_Cur+ G* g4 b# X6 e4 `- s; P3 `
  1920. LDA #PPU_MODE_CNT_LINE
    5 E6 l0 i* U) n7 w
  1921. STA PPU_Addr,X6 ]- R' p  Q5 N6 G( w) p
  1922. INX: A( z, ^/ I$ c
  1923. LDA Page_Cur
    $ e/ Y5 e+ y" p( O2 h
  1924. SEC4 x$ u9 C) H4 `3 s
  1925. SBC <Page_Cur_Index
    , ?. D  d- F& ?6 ]
  1926. ASL A+ ^8 B  s& D0 R* b
  1927. TAY6 m5 f" d8 w" u( W9 g  k
  1928. LDA Item_Pos_Data,Y
    # ^3 P7 P; j* R2 V3 L% W& V4 ]$ A& O
  1929. PHA
    4 t9 ?, Y9 C4 U/ }+ X
  1930. INY
    - [1 B; t2 F; `+ D6 h
  1931. LDA Item_Pos_Data,Y, S' h' q( S: c$ o# U' ?" a. G8 [+ I
  1932. STA PPU_Addr,X5 z1 F4 C1 h2 |3 X
  1933. INX: \/ W" |6 _5 h5 `, a' f. H* W
  1934. PLA
    4 S! I; S! [; l. S8 I; E2 p: U# @
  1935. STA PPU_Addr,X7 f% z8 n; [& ~0 L3 k5 l  G
  1936. INX
    ! t$ ^, T# z" Z% {
  1937. + u; L" P" o# {. J# F
  1938. LDA Page_Cur
    1 a& r/ Z8 K7 N
  1939. ASL A/ s2 G0 C8 ^9 ^- k9 Z
  1940. TAY
    ( J5 B3 i7 a/ j
  1941. LDA Music_Collection_Name,Y5 h3 l3 R5 q; e
  1942. STA <Data_L
    2 X; F" ~, b# F  h" l/ T. [
  1943. INY
    " @; G( ]9 R: L' k& x" G- D5 `* g
  1944. LDA Music_Collection_Name,Y
    6 L4 R) r7 I! L$ x; A/ |. y2 K  r
  1945. STA <Data_H
    3 _! ?* J/ }; ^8 h
  1946. 4 v# F& }) L, y
  1947. LDY #$00! ^& M3 x) a% l* m: i) a& g$ }8 M
  1948. LDA [Data_L],Y
    ' _( D1 `* z8 d' B( Q% t6 b( ?
  1949. STA PPU_Addr,X
      w0 K' T( M- r( z, b2 O
  1950. STA Data_Cnt
    ) Q6 m, I" `$ E9 ?/ l
  1951. INX
    - J3 j* R  k& C5 O: r1 z1 s
  1952. + E2 n/ b0 Q* a1 i8 x& R) T
  1953. INY2 `, p* C0 T6 d5 N; ?" _
  1954. Show_Item_Text_Write$ c" e2 P7 w, p; H3 P8 E
  1955. LDA [Data_L],Y0 [" S$ S- f% p7 [7 d$ R" J+ o
  1956. STA PPU_Addr,X  g& F/ M) j7 J+ G5 m
  1957. INY) A. t6 D) ]1 N6 x6 |4 I  {
  1958. INX
    " E+ I- Y+ _& T/ A- \7 R$ B4 z
  1959. DEC Data_Cnt
    ; N# k6 X  q8 O: q. o; U+ n
  1960. BNE Show_Item_Text_Write
    ( K/ o4 C- b9 \  h& A5 D. _1 @
  1961. 3 B3 @2 X/ g4 {$ B
  1962. Show_Item_Text_End8 I1 L) v1 S7 a' W3 q0 k. A
  1963. STX PPU_Cur
    ' N! T3 _" L1 }) c* `+ B) f
  1964. RTS/ ~0 \% ]& j2 y5 O& r! u1 q
  1965. 1 a  e- D9 d0 t1 ^/ \# t. U
  1966. ;==================================================
    ; s' G( A# A. ]( ]
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量# [0 x+ V  T5 K6 d" F
  1968. STA <Data_Buf
    7 G, @4 t' ]4 _  `, B. i" u
  1969. LDA #$00
    , @, ?# c1 B4 K4 v" Q, {
  1970. Get_Page_Index_Calc
    6 g- \8 H  v% j8 J
  1971. CLC) l4 I: L- O2 E0 I$ e
  1972. ADC #PAGE_SIZE
    9 F( k5 L& X( E, a7 J1 x
  1973. CMP <Data_Buf
    2 t$ @. F. [5 Y
  1974. BCC Get_Page_Index_Calc
    # I( ~' p, G7 W3 N: u4 K+ ^) C/ b
  1975. BEQ Get_Page_Index_Calc_End
    * ~( `6 Q" J* p8 c, ~0 `: i
  1976. SEC
    ) J: V$ p# k# ~
  1977. SBC #PAGE_SIZE
    / i- Z9 W0 m$ b' ^$ b9 Z
  1978. Get_Page_Index_Calc_End
    * Y* y3 ]# k4 Z0 ?+ Q7 v: U$ p, v
  1979. STA <Data_Buf
    + }0 E( c* b: A; `6 Z& S' K5 H6 }
  1980. Get_Page_Index_Cnt/ f9 }; c3 `1 A! G6 `2 H3 q
  1981. LDA #PAGE_SIZE, M6 @# [% e" G' J% s3 }. i  S
  1982. STA Data_Cnt* L3 C: s# V1 S* X, K2 |+ O( R

  1983. ' h# T  ~1 }  t2 ?0 q, d, k3 A" r
  1984. LDA <Data_Buf
    3 L* e2 s& w3 f$ v
  1985. CLC3 q- {+ u$ z- S4 O0 N
  1986. ADC #PAGE_SIZE! k7 ^. m& y$ ~
  1987. CMP #ITEM_MAX_SIZE
    8 \/ _1 A" ?8 g% T. a
  1988. BCC Get_Page_Index_Cnt_End/ m8 Z; n- }- H$ ^6 f! A; v
  1989. + m: i/ m2 P/ e. E- w! e
  1990. LDA #ITEM_MAX_SIZE
    " A& D: V9 o* }+ T
  1991. SEC
    $ W) I  z' w# R+ d+ L0 ^. G
  1992. SBC <Data_Buf3 L+ \, |# p) p9 K6 Z
  1993. STA <Data_Cnt
    / N* o% _/ g0 j

  1994. # b5 |! O3 H: K# L, {1 W) l, A
  1995. Get_Page_Index_Cnt_End
    - \& V7 o6 _# J* G4 Q. l
  1996. RTS! ~9 n8 [0 X! K& C( I- l4 [4 Q6 l
  1997. . A- g3 ?( V. S8 m
  1998. ;==================================================$ M4 k* X3 e! ?) s
  1999. Get_Last_Page_Start_Index
    ! g3 l, T3 O9 Q! K/ O: G2 _
  2000. LDA <Music_Item_Last$ i& V3 R6 ~) n/ R2 h% D' |
  2001. JSR Get_Page_Start_Index
    ( z, ~/ b0 g9 H# ^( d3 k
  2002. LDA Data_Buf
    / w6 Y: {! D; }0 y9 @
  2003. STA Page_Last8 C* {* v+ ~! j" H" }  {
  2004. STA Page_Last_Index
    8 n$ s$ s0 Y7 K  H# N/ [' W2 R
  2005. LDA Data_Cnt
    ; B" W! f" o0 l0 V8 E9 g$ o. f
  2006. STA Page_Last_Cnt
    : A0 y1 ?; b8 H+ a
  2007. RTS
    3 t; u( p: y7 n' {1 N7 e  j9 ~
  2008. 9 S8 V5 f0 f1 f; f* j' W! f
  2009. ;==================================================
    8 Y7 @4 d1 \- F, G$ J2 U
  2010. Get_Cur_Page_Start_Index
    % w5 M  ?" \4 G2 f5 y- X
  2011. LDA <Music_Item_Cur# M) Q- g0 [) q; c- }6 t  A3 d2 S" L
  2012. JSR Get_Page_Start_Index+ I, c& x% Q& Q  A7 U; P
  2013. LDA Data_Buf
    " M% `8 x3 y* x" b& a5 w
  2014. STA Page_Cur
    9 r  g8 a5 W" x) S/ a$ p
  2015. STA Page_Cur_Index
    ; F; x% i, @3 A3 c) A+ f
  2016. LDA Data_Cnt2 Y8 L+ f& g5 }: f
  2017. STA Page_Cur_Cnt
    # L) _: @6 y( C9 @" V
  2018. RTS! z/ a& s6 E1 @5 n" w0 ]7 z
  2019. " V! p7 x. }7 Y9 W0 a+ G2 _7 v
  2020. ;==================================================
    8 Q' T$ }! d" I% \
  2021. Show_Page_Text;显示页文本. T5 ]6 |; O7 t' ?# I
  2022. LDA <Text_Disable_Flag$ t1 W5 b3 ^6 _( H$ w+ `0 b6 @
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM2 b. M- V, c* ?* W# m
  2024. STA <Text_Disable_Flag* w7 e' N6 C' [, N( g

  2025. 4 R6 V; [. ?9 c5 i9 {& j* ~1 l
  2026. JSR Get_Last_Page_Start_Index7 F3 ~  z* @8 x% J
  2027. JSR Get_Cur_Page_Start_Index7 T# y. i. ^# Q7 Q% J
  2028. ' ^7 ~1 r3 Y: I
  2029. Show_Page_Text_Set( I7 s0 N7 h$ S0 g1 z

  2030. * l: ]4 o4 f: [: ~
  2031. Clear_Page_Last_Item;清理上一页& H/ ]6 I6 A8 f& Z! Q# L
  2032. LDA Page_Last_Cnt! }" A) N+ F2 J4 r% f% n
  2033. BEQ Clear_Page_Last_Item_End) T+ Q9 o1 c/ V# ]
  2034. JSR Clear_Item_Text( G( c" |; a. G4 F& d
  2035. INC Page_Last
    5 s5 z& M5 l9 P, M) V! T
  2036. DEC Page_Last_Cnt" f6 Q1 Z! I- R
  2037. Clear_Page_Last_Item_End
    3 R9 }7 W  Q1 t. Z& L+ n( \
  2038. : [+ F7 Y& y6 B! ]
  2039. Show_Page_Cur_Item;显示当前页
    ! J: ?' [0 m* o6 F2 S! F
  2040. LDA Page_Cur_Cnt
    % E( n8 X  n% U6 _' P7 _1 A$ r
  2041. BEQ Show_Page_Cur_Item_End3 x1 t& D% Q! P# B% u
  2042. JSR Show_Item_Text
    : A! M# {! V% ]% i5 Q, b
  2043. INC Page_Cur1 C5 i# `- d$ q+ R0 y
  2044. DEC Page_Cur_Cnt2 M7 q' m) N: p) Z7 V  n$ y* T
  2045. Show_Page_Cur_Item_End
    + j9 |' E+ g8 M- o
  2046.   S, g& T; `7 a% h0 J4 u
  2047. INC <Time_Wait_Cnt
    $ b  j. X+ F) y7 \$ ?  \& t4 F: b
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    " a7 ^& b5 u& y1 f% v! g
  2049. LDA <Time_Wait_Cnt( d2 h  H  ^5 R& y7 t9 o. m. c) f4 x
  2050. BNE Show_Page_Text_Set_Wait  n4 Z/ z: i1 B7 D# [+ r8 E$ ?) w$ I
  2051. 5 T6 N" Z3 T2 f; I) z. I' y; I8 J* c
  2052. LDA Page_Last_Cnt( s( e: M' ]' y# L$ G4 d
  2053. ORA Page_Cur_Cnt
    8 k7 ?# {8 ^4 M* a% T4 |% h
  2054. BNE Show_Page_Text_Set
    * c8 j& u& G' t& a; E
  2055. LDA <Text_Disable_Flag3 j- c* H+ R" T: Y( o
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    + V0 e% \+ y; s2 S# I! H
  2057. STA <Text_Disable_Flag7 |$ d3 K, T, I+ N
  2058. RTS
    . e  \+ y4 F. L, D7 ~, f# A6 m

  2059. 0 f! J% T; F1 {% A. s+ a
  2060. ;==================================================
    & J( K% E- m2 t2 L3 `
  2061. Last_Item;上一项3 P4 O$ M2 y; r  D6 m5 G, O& \: ?
  2062. JSR Clear_Last_Track_Name6 ~8 U% J1 ]. q$ ~% k7 j( v- w
  2063. JSR Disable_Text_Draw0 P7 H2 M  B$ g- b7 i, c+ P

  2064. " p. x6 M5 s# g* X  v# \! ?- s
  2065. LDA <Music_Item_Cur
    6 @1 K' U0 _2 g1 w6 y$ o
  2066. STA <Music_Item_Last
    + [8 s) D' T: K! u1 W# v# k
  2067. - w# U0 i& u' r$ a2 y  ]; ~
  2068. JSR Get_Last_Page_Start_Index
    # P' J; m) H( s; s9 `

  2069. 0 P6 R) c( n0 v- y* i3 o
  2070. LDA #$00+ A" [6 j2 q% E$ o% ]) \% w
  2071. STA Data_Buf& G, `6 |0 J+ Q( V
  2072. 0 f  }8 f4 y" X! I: y
  2073. LDA <Page_Last% Q0 y' @. _5 `( o: u0 ~( I# A
  2074. CMP <Music_Item_Cur, l8 }' M6 @$ U3 [' D- @+ z
  2075. BNE Last_Item_Begin6 m5 g9 A  V7 N5 P2 O) Q, P4 ]

  2076. 5 Q9 R+ b1 {3 a5 n1 T$ M( M2 w
  2077. LDA #$01" b: }3 t4 l5 g% ]" o+ z8 G
  2078. STA Data_Buf* r" `. n* b. u+ {) I3 _, I
  2079. Last_Item_Begin  P* A0 ~7 C  d$ R9 D0 B
  2080. LDA <Music_Item_Cur
    4 b! _9 s8 ~  y' R
  2081. BNE Last_Item_Set
    # c  i  k' L1 L, ^' I3 _
  2082. LDA #ITEM_MAX_INDEX + 1- m3 O% z2 S8 L5 m
  2083. STA <Music_Item_Cur" }, t! k  c! I1 o  p, x

  2084.   D) e0 v4 Y! p: x- L
  2085. Last_Item_Set0 k/ s  |; q! s8 Q& F) y  q
  2086. DEC <Music_Item_Cur
    " r- p- d4 `. Y5 X" m3 S" u
  2087. LDA <Music_Item_Cur
    " w7 i0 v) I$ A/ U
  2088. JSR Reset_Current_Music
    - A8 [2 `, t4 `' g7 c

  2089.   a% k! r" F( V6 Q
  2090. Last_Item_Play& i* ]0 e" v  _6 f* }( o# d" b
  2091. LDA Data_Buf
    / }  ?, ]# j# F  S9 W% K
  2092. BEQ Last_Item_End
    1 ]  [( Q4 W) B4 M" _
  2093. JSR Show_Page_Text) [7 y2 v/ L" i8 }* a( x8 `; I5 @
  2094. Last_Item_End, K+ \, I2 Z$ C2 `
  2095. RTS
    * [8 }( P. c1 e

  2096. 8 c( l6 H8 V# z5 C- B: Z2 V
  2097. ;==================================================
    4 B2 U& v, k8 M; Y8 H' r
  2098. Next_Item;下一项: G" g1 i- s0 r9 t' r
  2099. JSR Clear_Last_Track_Name: {' ?0 g7 B5 b+ c' ~
  2100. JSR Disable_Text_Draw
    . r9 m% H7 N( p  S
  2101. 7 F0 j. _0 p; D$ k3 |! R+ W
  2102. LDA <Music_Item_Cur
    8 ^2 c4 a) s( `/ ]/ h
  2103. STA <Music_Item_Last# N# S+ ^& z  u, r( f
  2104. . Q8 O. x" [. F& D( H" S
  2105. JSR Get_Last_Page_Start_Index6 f$ A8 i  P* l: j4 h# y' O

  2106. 6 K; t! \/ V  N) W3 @0 o
  2107. LDA #$00* O, d1 k8 r7 G2 K, Q% P- r5 e6 j
  2108. STA Data_Buf
    ; [% x' B+ w3 _. g
  2109. : e" k! h. |4 z
  2110. LDA <Page_Last" ^% u0 ?( H- U  \  X
  2111. CLC# W3 _1 U8 z+ l0 C: G' L$ \
  2112. ADC <Page_Last_Cnt. R7 p4 J: s4 L6 S
  2113. SEC
    - t1 Q3 P& s  Z& ~# b
  2114. SBC #$01
    4 D) [0 ^: ~9 u- F1 e6 w
  2115. CMP <Music_Item_Cur
    ; r' n; J0 ^! I. r0 w" R) w
  2116. BNE Next_Item_Begin
    0 n- M: v: N( \" X1 `

  2117. : \+ L: @5 t, |' d
  2118. LDA #$01: h# X! Z; C5 ?
  2119. STA Data_Buf5 ~8 O+ g9 h* u7 K
  2120. Next_Item_Begin' S* v' @6 Y( _% A5 W
  2121. LDA <Music_Item_Cur6 _+ G2 v+ N  Y: b
  2122. CMP #ITEM_MAX_INDEX
    8 |4 p: ]& c& d$ `8 j; [
  2123. BCC Next_Item_Set1 C) I- C+ O2 D" B8 _
  2124. LDA #$FF
      j) M4 i$ m0 x( I# O
  2125. STA <Music_Item_Cur; u2 n8 U  {, \' a
  2126. Next_Item_Set
    / m. ~/ |. f3 M4 C3 X
  2127. INC <Music_Item_Cur; ]- L) ?' S1 ?6 n
  2128. LDA <Music_Item_Cur0 G8 a* ~9 P! S$ q+ W4 Q4 s/ U. `
  2129. LDA <Music_Item_Cur3 T1 }( K+ U, O& q/ ]
  2130. JSR Reset_Current_Music: G; X' i0 P$ _4 u
  2131. Next_Item_Play
    & @) M- k: L  Q- X
  2132. LDA Data_Buf! k# Y+ P$ s! L! Y$ b# l
  2133. BEQ Next_Item_End
    ! @! E( B  i& f8 K4 q+ ?) W
  2134. JSR Show_Page_Text
    7 f2 f0 N4 G! _5 E: K8 }& B
  2135. Next_Item_End
    9 ~8 K* R+ P9 \5 [+ N- m
  2136. RTS
    # j; p- ^4 ~0 g, D  |
  2137.   e* O* g$ c' w0 f4 l; X# j
  2138. ;==================================================5 [( D- e! g( ?& `; v' \
  2139. Last_Page;上一页0 Y5 R! e( d9 M- n  e
  2140. RTS
    5 `! Q# j1 l; q/ m4 K' N4 {" [
  2141. 3 q2 r6 N- Q, g- ]& w% H
  2142. ;==================================================9 t3 h5 i1 b# Y" n, u
  2143. Next_Page;下一页& b& U) x" U4 m  @3 f. S
  2144. LDA #PAGE_MAX_INDEX+ z/ d2 w2 o- }. v) h/ Y
  2145. CMP #$01
      l9 l4 W7 U) {, k4 @& d' P  Y- D$ L
  2146. BEQ Next_Page_End
    8 T& Q$ N* l1 f# o# g! n

  2147. / i% t8 M& j! ?, O' j  }' S/ s" S) M8 ]
  2148. LDA <Music_Item_Cur
    ' ]' R6 ]% k* \; G$ c
  2149. STA <Music_Item_Last1 t; R4 O" a2 e1 q* S  n
  2150. . }/ j- C0 [; t7 f1 y/ o; X! u3 \
  2151. JSR Get_Last_Page_Start_Index
    0 W" }5 X; f* Y, L/ g5 O! @
  2152. 8 g6 H1 u* b+ y! f
  2153. LDA <Page_Last_Index' U; J) t2 j0 N1 S9 q3 t* E
  2154. CMP #PAGE_MAX_INDEX
    " K% h6 T* k7 B2 P7 q
  2155. BCS Next_Page_In_End_Page) J6 O! t/ }/ }. j( q
  2156. 5 K/ t/ f! o) R
  2157. Next_Page_Not_End_Page;不是在最后一页
    1 Z3 z3 R. K# S9 Q, s) ^6 o( |, V
  2158. LDA <Music_Item_Cur2 V! ~: c( F: b2 y: E. ^8 T, ?' Y
  2159. CLC
    2 e( h0 G+ R/ C
  2160. ADC #PAGE_SIZE  n* G! v; q8 {
  2161. CMP #ITEM_MAX_SIZE
    8 `# u& F8 Z" J+ `2 ~) ]
  2162. BCC Next_Page_Not_End_Page_Less
      j. M& Q7 K0 S" L( h  x1 N
  2163. LDA <Music_Item_Cur+ f, `# }7 }# e; I& M7 T
  2164. SEC$ B2 @5 ]2 r/ U' h
  2165. SBC <Page_Last_Index0 ^& R# y. v/ b2 ^
  2166. CLC
    3 P$ g9 U. f6 i7 e" d
  2167. ADC #PAGE_MAX_INDEX# r2 ~( @, F+ ]! D2 v% v: A% c1 ^
  2168. CMP #ITEM_MAX_SIZE+ }5 L- {9 W% W8 n8 N% n
  2169. BCC Next_Page_Not_End_Page_Less
    ' g% U0 _4 i6 t6 T5 B* J
  2170. LDA #ITEM_MAX_INDEX
    8 ^* K+ X8 n3 V* ?5 H- _
  2171. Next_Page_Not_End_Page_Less& L7 z# a2 }2 S- N' g/ v/ o; Q
  2172. STA <Music_Item_Cur
    & k* H/ i" ?( ]# T) ?
  2173. JMP Next_Page_Reset
      U8 V5 v2 p  `/ ^, q

  2174.   e' \% y. {5 i2 \$ H& p! R% D2 v
  2175. Next_Page_In_End_Page;在最后一页
    7 a% f* K! n7 a$ |8 D3 ^7 L* J
  2176. LDA <Music_Item_Cur
    7 H& N- E2 y6 i( H& N1 n' H/ N: l% }$ f
  2177. SEC1 D# D! t) {$ d7 T4 B) z' e
  2178. SBC <Page_Last_Index& p/ Z" M- Q) w% w% x
  2179. STA <Music_Item_Cur2 n- v7 X1 p* I4 B

  2180. 5 F& a5 s4 `: q9 L( r
  2181. Next_Page_Reset
    4 i* T, B3 q$ L; T
  2182. LDA <Music_Item_Cur2 w3 w* w( P2 K( [2 J0 E
  2183. JSR Reset_Current_Music1 T7 g2 y- }$ p# X3 ]4 w
  2184. JSR Show_Page_Text  J* Q9 G" K& A' o. K
  2185. Next_Page_End
    % Y+ G! y: i7 y4 r9 h9 i
  2186. RTS
    % }: P& V) k. e/ Q- f) w, b" q

  2187. ' n" i; C. f' R/ k; K) m
  2188. ;==================================================& N# X8 l1 |# m  g( |
  2189. Disable_Text_Draw;禁用音乐条刷新
    4 r$ K' X0 e4 G: X/ A8 S
  2190. LDA <Text_Disable_Flag
    3 B. k3 o% ~; {! D$ }
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME9 L8 M/ c. L$ e+ W
  2192. STA <Text_Disable_Flag  |  m( i" X; `& S/ G0 T
  2193. RTS7 U- G. Z. c" G  {* T# A) s
  2194. . ^! {, B' g) x9 ]8 T9 i
  2195. ;==================================================
    0 I# r) ?) q7 O# d9 ~! \6 v
  2196. Clear_Last_Track_Name;清除上次曲目名. b, |* }- K4 |! X" A5 m& M: H) A
  2197. LDX <Music_Item_Cur
    ' B* l0 h; ~1 U  b
  2198. LDA <Music_Cur,X3 f' U: c; {) v% Y1 ?
  2199. .IF Track_Name_Pos8 q; c% O# x3 r7 C9 V; V: d
  2200. JSR Clear_Track_Info& F! E7 b4 @3 {9 q- m8 M/ }% K0 Z+ a/ C) h
  2201. .ENDIF
      a4 j8 @4 k( m# C/ F0 N
  2202. RTS
    2 ]1 k7 W! l* |+ ?4 D9 {
  2203.   Y5 r: I! n) W
  2204. ;==================================================" S* `$ O' T% H0 z. `" E$ ^7 n! `
  2205. Reset_Current_Music;重设当前曲目, h/ p3 ^" S/ k5 l

  2206. : {8 Y9 [( ?1 T+ y6 b  t/ a
  2207. ;写入当前总曲目5 t: W: U- z& l. O; b# g* {
  2208. JSR Set_Sound_Total( @% _7 M7 [+ {% @! j. b: r
  2209. LDX <Music_Item_Cur( Z8 J" H1 u, _7 R
  2210. 7 g: k# d7 e& g1 K" J' D
  2211. LDA #$00
    : Y) Q0 u3 C, H  k+ \* @" }
  2212. STA <Music_Last/ t8 K4 d* Y: {* F; }$ c" n! x

  2213. . {: t  \7 P1 |; l  \  W! F
  2214. JSR Sound_Reset_Proc% |( ~2 l; m% K3 y& f! K3 @
  2215. JSR Music_Show
    % M' M8 |: W& T$ y- }# |" d
  2216. RTS
    - T1 S+ R$ {$ ~

  2217. 1 p% L- |; _  k% _  k
  2218. ;==================================================7 |0 U8 ~8 t' b- ]; y5 ~
  2219. Music_Song_Stop;音乐停止
    $ S6 V  _8 P; o9 l/ \
  2220. LDA #$015 L9 X* D" T" k! q3 |' q
  2221. STA <Music_Stop_State; {9 g7 o/ U# P1 p& }0 m
  2222. JSR Music_Bar_ReSet
      b) n/ O5 b4 \' V# y
  2223. JSR Time_ReSet( \9 |: f" f0 e! u+ p% |) N: F
  2224. JSR Sound_Data_Clear8 X) [. k" J& f, z8 E* l8 |/ _
  2225. JSR Music_State_Show- }5 |( U' s9 A/ _5 E
  2226. RTS
    ! O( }6 Y9 i/ a" m; u
  2227. + v$ O& v$ K( \7 W
  2228. ;==================================================
    7 D( P; A) R$ x+ I. _3 \
  2229. Music_Song_Play;音乐播放6 q- n+ ]" x4 e5 u8 {+ G
  2230. LDA #$00
    # J. n% l4 T& n1 y
  2231. STA <Music_Stop_State' ]8 W0 P( L# K( G! N& r- z2 X% v7 B
  2232. LDX <Music_Item_Cur6 x  ?. L3 f  o: k1 F  O
  2233. LDA <Music_Cur,X: j' i  j% q: k
  2234. JSR Sound_Init_Proc
    : E: d- s+ ]: q( @- O6 h8 z7 b
  2235. RTS" y$ Y- Q% T# x' c0 e* I
  2236.   x) n. T4 ]! p5 @+ f. N
  2237. ;==================================================: j6 i4 O' k) I: r
  2238. Music_Song_Last_10;上10曲+ ?1 [# p( l: O6 n& _
  2239. JSR Clear_Last_Track_Name: l8 @; L# L  }8 z
  2240. JSR Disable_Text_Draw
    3 {% Q% X2 Q5 G# v
  2241. LDX <Music_Item_Cur$ g" Z8 F; T+ O6 ^+ r" q- g  l  k& X
  2242. JSR Set_Sound_Total
    " t; ?3 T! h% V6 C" w# n- P- Q0 v
  2243. LDA <Music_Cur,X
    ( L- W. b* V2 d% K  k4 j* h# k
  2244. SEC# O3 w1 M+ V5 M& U
  2245. SBC #10
    2 u5 M9 e4 X8 h. _! s. n  `
  2246. BCS Music_Song_Last_10_Set
    - W& T' S2 R; w5 z
  2247. LDA #$00
    / n0 J$ b6 k  o( ?( ?# \
  2248. Music_Song_Last_10_Set9 S" _- Q. P6 d5 N2 R9 D6 @
  2249. STA <Music_Cur,X+ l0 S2 x0 P" N* M2 K/ c
  2250. JSR Sound_Reset_Proc
    $ p, x4 j& G* ]7 y; z3 O
  2251. JSR Music_Show
    8 `* r# l- U" q2 W( L/ ]; M, t
  2252. Music_Song_Last_10_End' I* I# H+ U* W4 o: W. O/ D
  2253. RTS1 d! _) g& k5 j2 M( G

  2254. ! u( o$ P. H8 F# Y- D( c  s, V* n
  2255. ;==================================================7 u6 S' z  ~. A3 a7 m
  2256. Music_Song_Next_10;下10曲7 U6 ~# L0 U  N! L
  2257. JSR Clear_Last_Track_Name8 z* S0 H- r4 h; K0 q) l1 }
  2258. JSR Disable_Text_Draw
    % U5 `- G4 i8 X0 C5 r* Z7 {
  2259. LDX <Music_Item_Cur* i4 U5 B- @' {* H) O
  2260. JSR Set_Sound_Total
    : ~* r# l$ [, h2 m. C
  2261. LDA <Music_Cur,X! ?3 d- ]7 v1 h" U& N
  2262. CLC
    0 r7 X2 {' ~% c# t- I
  2263. ADC #10
    0 q) K; _0 p, l+ T/ _- z$ R# w& Z
  2264. CMP Music_Total4 K6 |8 l; G' w* A; B
  2265. BCC Music_Song_Next_10_Set
    ' C$ w) h& [2 D6 z: D! e( P
  2266. LDA Music_Total' {/ s# ]. Y$ [( {4 `  r
  2267. Music_Song_Next_10_Set
    # Y: L& a% q3 _# i/ E; C
  2268. STA <Music_Cur,X& F# n/ m. {& g0 g) P# O
  2269. JSR Sound_Reset_Proc
    5 z2 W( ?3 Z/ T5 ^: Z1 f1 V3 F
  2270. JSR Music_Show
    " S+ w8 G8 s4 r/ F$ B1 K6 s0 X
  2271. Music_Song_Next_10_End
    3 r% g, z3 {/ K
  2272. RTS
    ! L8 g" q& `& d7 M, q0 t+ _

  2273. 5 G# O8 W' H( M' R* D; q  B. p" R8 a6 {
  2274. ;==================================================
    3 S# G, z# k  u: V6 `0 R
  2275. Music_Song_Last;上一曲9 ~4 s. `  i% n6 T) W
  2276. JSR Clear_Last_Track_Name& x6 j& F' P. }0 G! Y+ E
  2277. JSR Disable_Text_Draw2 U( r4 R! _; S  j
  2278. LDX <Music_Item_Cur
    8 j9 a* T4 ?, n3 a6 B
  2279. JSR Set_Sound_Total
    : Y. |; D5 L; l7 u8 F  S
  2280. LDA <Music_Cur,X
    % @8 m  `& [2 Q
  2281. BEQ Music_Song_Last_Set
    3 F! n4 |8 ]) Z- I! C3 l( |4 k3 K
  2282. DEC <Music_Cur,X
    & w9 |8 {+ g# i0 L; @! m: n- ~6 E* c3 I
  2283. Music_Song_Last_Set
    $ m! t) i' L3 k" B, c
  2284. JSR Sound_Reset_Proc2 ^" H$ ]6 B! F( U7 s) H* W
  2285. JSR Music_Show
    / i0 Y: y! t+ e4 k2 [. Q
  2286. Music_Song_Last_End
    1 j) ?/ _# n7 Y, [9 S2 A2 w. g
  2287. RTS: B" C+ C) B* h! u/ ?
  2288. : K7 L- y- y! Q4 Z& F
  2289. ;==================================================+ \5 Y5 H0 s: C* M
  2290. Music_Song_Next;下一曲
    4 E) J# D, k, Z" }3 |# w
  2291. JSR Clear_Last_Track_Name
    ( a) x' Z/ g4 Y  j2 F- A: M  _0 d
  2292. JSR Disable_Text_Draw2 w. p4 g) B4 L# T
  2293. LDX <Music_Item_Cur: y, Q; n' f7 E7 h' B4 c
  2294. JSR Set_Sound_Total2 d$ R$ w* J9 z5 i' e+ A
  2295. LDA <Music_Cur,X$ O6 `4 x* @! ?
  2296. CMP Music_Total
      n7 @7 p: s# e! F4 |# U0 T
  2297. BCS Music_Song_Next_Set
    5 i+ @3 J, c- B; t* H5 `# ~( T
  2298. INC <Music_Cur,X& i5 y" U* P- e/ K1 Z% L! a
  2299. Music_Song_Next_Set' a2 N/ _  b% v/ R8 \6 r
  2300. JSR Sound_Reset_Proc: m2 b$ G% Y- `6 f  e: Q2 F4 d
  2301. JSR Music_Show% H; A% N' D8 x
  2302. Music_Song_Next_End) M; x! S0 L& L9 B: M3 [" S
  2303. RTS- x4 b4 {+ K* r* H2 F- A+ s
  2304. 6 _9 {* v, X: ?/ J3 C' r# t
  2305. ;==================================================9 B$ i, ?; z3 H/ q
  2306. Change_Select_Item;改变当前选择项; X, s5 |3 @% p  Q
  2307. ;--------------------------------------------------
    3 ]$ L, ?& o3 K9 D' ?
  2308. Change_Select_Stop_Play_Item;停止/播放1 }5 g1 L: \; f) W' b
  2309. LDA <Key_Once' [# ^' ~* l" }: u5 x: \. k
  2310. CMP #$10
    9 _! x( b0 z( N* q* K
  2311. BNE Change_Select_Last_Item
    " S8 l. s3 w5 f; z6 u2 X
  2312. LDA <Music_Stop_State
    " Z1 y6 w; v3 ?
  2313. BNE Change_Select_Play0 P1 r3 v% F- t! A+ J$ h
  2314. JSR Music_Song_Stop
    2 s4 Z! A$ e6 K+ X) j# S$ x
  2315. LDA <Music_Stop_State
    3 B, X& H3 Y3 U
  2316. RTS# f" J; ?3 m$ h3 {
  2317. 2 b! [/ j. `2 Q$ C, ]/ e, T/ D7 O- O/ `
  2318. Change_Select_Play7 q) V' f2 O) l+ Z
  2319. JSR Music_Song_Play: o1 }/ y% p" Y! K. O5 ^" M1 X
  2320. RTS
    : C$ f# x' K+ X2 U" n. f
  2321. / A" k, |, W2 k/ r2 Q! K- s6 Q# }
  2322. ;--------------------------------------------------0 c: G' n1 C3 w' @, x- F) L
  2323. Change_Select_Last_Item;上一个专辑! C) X1 Y, {; n3 Z: {$ v
  2324. LDA <Text_Disable_Flag
    . n  j# _% e# d$ v5 V0 y; Z! `+ \
  2325. AND #TEXT_DISABLE_ITEM
    $ k* {2 D9 m/ j  R! l: ~# T
  2326. BNE Change_Select_Item_End
    4 g: g& i! U, `5 T9 ^
  2327. LDA <Key_Once$ [4 u/ V2 D2 r0 a0 v! P5 }% n- p
  2328. CMP #$08- D; `! s5 j& W4 p2 ?
  2329. BNE Change_Select_Next_Item
    % L; O8 \7 C% f- \1 `. v
  2330. JSR Last_Item
    1 ]" ]/ U7 j$ x2 ~0 s: T3 _# V
  2331. ;--------------------------------------------------9 Y' g  @" ?% W
  2332. Change_Select_Next_Item;下一个专辑" f# V( H' v4 H/ }
  2333. LDA <Key_Once
    ' S- @; I% S8 T: W4 m, T( H: o6 w
  2334. CMP #$04
    & E2 d/ {& J0 k- C: X3 T6 W
  2335. BNE Change_Select_Last_10
    : t! u7 g8 O/ r, u
  2336. JSR Next_Item
    9 s" P: J  L8 b
  2337. LDA <Music_Item_Cur
    . V9 i, W+ O" @: Y) I: q
  2338. JSR Get_Page_Start_Index$ O: T2 V+ y, l7 G9 v8 ?. i( ~0 {
  2339. ;--------------------------------------------------& |8 I! [5 O, j, Y* M$ E
  2340. Change_Select_Last_10;前10曲
    ) W5 }4 q% O. e7 G6 r$ ?
  2341. LDA <Key_Once7 D5 F( j- u1 k( O0 K
  2342. CMP #$40/ E0 e9 n" q+ {! R
  2343. BNE Change_Select_Next_104 R  H& P1 z1 Y& R( G
  2344. JSR Music_Song_Last_10
    + x  q& I5 p1 S! N& L1 F
  2345. ;--------------------------------------------------
    & G# F- \$ ]: D* Q
  2346. Change_Select_Next_10;后10曲
    0 k$ g) b6 _( P) {; Q" i
  2347. LDA <Key_Once
    1 t' F3 y4 x3 Q5 M3 k
  2348. CMP #$80  P# ~+ y" E  Q( D7 h
  2349. BNE Change_Select_Last
    0 w9 s. X4 R( ~0 w
  2350. JSR Music_Song_Next_10
    , T1 I, q6 f% d/ j  @$ l
  2351. ;--------------------------------------------------
    " w  _7 Q* R* N) i5 v& w: k
  2352. Change_Select_Last;上一曲
    9 s* D/ B; G0 a) I
  2353. LDA <Key_Once
    7 [  l1 \8 j# [5 u' ^! [# H
  2354. CMP #$02! t0 M5 M1 P1 J& |# w% z
  2355. BNE Change_Select_Next
    3 b$ A) K6 J4 B1 g- U8 B! V  x. @
  2356. JSR Music_Song_Last) d! _- K0 T9 b* P1 k6 ^. i
  2357. ;--------------------------------------------------
    , U* P1 }: o' }7 ?1 b* a1 h
  2358. Change_Select_Next;下一曲
    6 L% a/ u, g# M* ?: K
  2359. LDA <Key_Once
    + V5 [8 n# j. Z& O! m
  2360. CMP #$01+ ~! G: t* C/ |7 E
  2361. BNE Change_Page_Next3 y8 X! q2 E# U7 Z# z
  2362. JSR Music_Song_Next
    0 d' k: E7 V! `/ B6 N2 P0 c
  2363. ;--------------------------------------------------! G$ R7 t1 C8 f# r& |
  2364. Change_Page_Next;下一页
    & x% }- g) Q, X  H# p( d! B; r) i. ?
  2365. LDA <Key_Once
    5 K7 @6 y+ c' F
  2366. CMP #$20
    ( F. i3 E9 a* x
  2367. BNE Change_Select_Item_End
    1 y$ o9 y* O$ o, }/ [7 c
  2368. JSR Next_Page
    0 S6 q& c4 W6 a! z* N' Z% a
  2369. ;--------------------------------------------------
    5 r) y3 }; L, f- K0 R
  2370. Change_Select_Item_End8 u6 W( Y& o/ y' [! S
  2371. RTS$ A5 H" E3 c; U5 U* `" u

  2372. & U/ ]2 ^- O4 o9 K3 }
  2373. ;==================================================( E. e# r* t' l: X7 u6 \
  2374. Show_Arrow;显示箭头光标
    ( d2 i% [& K, d7 U2 C
  2375. LDA <Music_Item_Cur
    : N3 {, a1 B6 Y6 e
  2376. JSR Get_Page_Start_Index( V( p7 f( L9 P8 Z- W1 G, k' S; x9 c% e
  2377. LDA #$00) u; H  h. y+ x5 s0 d" p
  2378. STA PPU_OAM_ADDR9 \4 e& w# X. o# k7 ?& G8 h
  2379. LDA <Music_Item_Cur
    ) \6 N8 ]* w4 d. @! p/ e0 \
  2380. SEC+ o$ e& L1 i: A9 J% v7 T/ a# b, a
  2381. SBC <Data_Buf7 C' L$ U5 w) T( W3 d& g
  2382. ASL A! c; q2 E, p2 k% |; g
  2383. ASL A# m6 [0 ?+ W2 Z8 N, L/ s1 P/ @" v6 _
  2384. ASL A
    : Y( }! Q1 d! O
  2385. ASL A: m: k: n) w1 `8 i
  2386. CLC
    . k# W6 F' x0 f8 D
  2387. ADC #ARROW_Y_OFFSET% r$ y$ w3 o  ^2 F! V" T: d
  2388. STA OAM_TEMP_ADDR + $00* a- }( X2 j6 {9 x7 G1 E* N
  2389. ;STA PPU_OAM_DATA6 V- U6 B$ \$ L- ?0 [5 E" u4 g" N' m( e
  2390. LDA #$1F, V4 |; ^7 @) J" p
  2391. STA OAM_TEMP_ADDR + $014 Z9 H2 a! k) N  n
  2392. ;STA PPU_OAM_DATA/ m( w' O3 Z3 J: Y0 }
  2393. LDA #$00
    ; H" \/ I5 ^# c$ y6 |: }/ T) B
  2394. STA OAM_TEMP_ADDR + $02
    # ]2 y( [4 b$ c) d5 U
  2395. ;STA PPU_OAM_DATA  o. R; @" l( d+ m6 ~
  2396. LDA #ARROW_X_OFFSET, E1 g# x8 Y+ x. O: O
  2397. STA OAM_TEMP_ADDR + $03+ E+ s8 ^* i$ G. M8 H
  2398. ;STA PPU_OAM_DATA
    2 k+ y0 @+ [1 {3 _
  2399. RTS
    4 Y$ L# P; ~# v( _- Y$ g. M

  2400. " F  m7 `& \+ C& d7 E7 O. o
  2401. ;--------------------------------------------------
    3 ^+ E7 \. z1 Z
  2402. ;命名表数据
    , P3 D! t, E" F; \0 \6 {# _
  2403. Palette_Attributes
    - q! B' o1 m: z
  2404. .IF SOUND_BAR_SHOW_ENABLE
    3 K# f8 \7 k* F2 l
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$559 H& C2 v9 W: Q" I' w; v$ r
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ' v; B  {- \& `" j* R
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    * a' D4 k# ~! N* |' p: y: t  p, {
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    , F6 I) m$ ?2 [, d0 w2 J% x1 z& F& y
  2409. .ELSE* D9 ], H7 l; G
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55/ }2 j4 P9 L' W
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    3 B3 e# `% {7 z% N
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75: }0 h# j0 I; l, F8 p
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    $ H) K$ p/ \  C4 a+ J' X, [5 w
  2414. .ENDIF9 Z- Q& ?! c+ Z+ N

  2415. 5 @( C# Z7 `: [0 H
  2416. ;--------------------------------------------------
    ! _/ `3 P1 \+ R
  2417. ;调色板数据* w1 R  S- Q' }
  2418. Palette_Data2 S. s) x0 ]1 ?3 U4 T* A
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    ; g& R/ Z6 t3 U
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    ( c4 T5 b+ @6 c: J+ H( Z$ o
  2421. $ h; m$ S* G- `* L) R
  2422. ;--------------------------------------------------; k2 E! E9 e( d) P1 E
  2423. Static_Text_Data5 q. L% q8 P1 ?7 v
  2424. .WORD Static_Text_Caption_Data
    " ~8 h' M8 @1 L( r1 B; u$ `
  2425. .WORD Static_Text_Author_Data
    & P0 B5 m+ m9 V& O2 O, P, q5 b& H
  2426. .WORD Static_Text_Date_Data
    8 K- k: x" ~9 k* N2 Z* G
  2427. Static_Text_Data_End
    ) i) G8 w4 l  n5 i  J) x% d
  2428. 2 F+ k. T( s) p! |* V# G8 y
  2429. ;--------------------------------------------------
    5 R8 l2 G9 n$ S  L
  2430. Static_Text_Pos" D. Z: x' y" F6 w; Y5 f' Q
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    ! f* p5 \1 ^, [' r
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos); ~( Y2 v5 E$ U: x
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)! l7 ^( H$ D% T# d
  2434. Static_Text_Pos_End& k* h5 [/ C- ]& T" n

  2435. 2 q5 n+ {6 f  R
  2436. ;--------------------------------------------------& ^4 }8 u+ x7 R9 i
  2437. Music_State_Stop3 H7 e5 p' Y3 e/ ^: y7 U, \
  2438. .IF SOUND_BAR_SHOW_ENABLE
    1 h  v% V6 k$ P/ p5 L
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    , t4 z4 Q- J3 E6 N& }
  2440. ELSE
    2 s' }! `. O% M" V
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00- b7 C4 |( u1 N' v) I
  2442. .ENDIF
    7 d6 o' [+ G+ |$ O5 S" U
  2443. Music_State_Play+ u) \- l: w0 l7 Q3 k
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00# m4 H; B8 `# Q% R

  2445. ) ?4 M' ?7 `- g. l! P
  2446. ;--------------------------------------------------/ j2 V) H8 a6 l
  2447. Sound_Bar_Text_Data;声音类型文本
    6 I5 }: m1 Q1 W' v$ Z& a
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    1 M, X9 |% ^# W$ U- S" q2 j) i/ R
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    5 d! M7 c! W: a. P
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"2 ^1 \5 F2 ?2 ]: P) H
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"9 b  h: j' g6 l2 S& ]6 W" t
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$006 ?& z' r5 q( m" i3 V6 D% g
  2453. " [8 h: ^; j8 I
  2454. .IF Track_Name_Pos
    $ [/ y; z2 \5 z: R& R! N

  2455. % g& o# ^6 N7 g; s7 @
  2456. ;--------------------------------------------------, c$ B9 n$ b( t
  2457. Track_Name_Addr_00;曲目名地址索引4 u/ `+ Z3 |( }2 J8 W, P8 V6 ?# C
  2458. .WORD Trackr_00_01
    7 P- `2 i+ {# M
  2459. 3 H7 d  P0 j( {  Y
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"9 z. f0 J: x! j
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"$ X. g6 |3 {# w8 H" g. C

  2462. % t2 n2 f  q4 G9 v% S0 H4 m; S! B
  2463. ;--------------------------------------------------
    - @, ?# s6 G- g/ n1 {( X9 _8 {$ z
  2464. Track_Name_Addr_01;曲目名地址索引( I& j' T: [+ [2 _; u  o  D: x: S
  2465. .WORD Trackr_01_012 @. ~& h0 R6 s8 Y% c

  2466. $ |4 K& @% |8 J
  2467. ;==================================================! b) Z6 F9 b5 }9 J& Q7 n
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    9 M9 x5 S  z+ l  p
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    5 ~! f% x# N( c6 u* `+ X! h
  2470. & U/ r  t& ?0 x$ k
  2471. ;==================================================
    + c( V: [+ C5 w7 j1 y
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    4 ^2 |1 X. \) w# d  K  J; L$ }
  2473. .WORD Track_Name_Addr_00
    6 s' o% r% `, K- ~" k
  2474. .WORD Track_Name_Addr_012 t2 @8 Z) w  A2 f& W+ u5 @! E& C
  2475. .WORD Track_Name_Addr_01) I: X& L' T) s* a
  2476. . A% Y+ w5 F9 h
  2477. .ENDIF
    / N% k$ w' S- j4 K5 W& X$ M% S

  2478. . N. @; V0 b/ R& b8 N, u' g' r8 X
  2479. ;--------------------------------------------------- `/ ~. x  T- B
  2480. Static_Text_Caption_Data;静态文本数据0 r) |" E( h# }- H2 |5 X  g
  2481. .DB 16
    " `" {" ^$ B, v8 S# ^
  2482. .DB "FC MUSIC 12 IN 1"
    # [. j/ X* x- [  |; a
  2483. Static_Text_Author_Data& Z; \) D  V% W6 D5 c
  2484. .DB 259 L, e5 ^8 a( u& S) P1 c* J9 m
  2485. .DB "EXTRACTED BY FLAMECYCLONE"; ~* `- ^: U; z/ E8 U: N9 F* s
  2486. Static_Text_Date_Data" O! {$ Y5 R% u; l3 _: ]
  2487. .DB 10
    # |6 E1 _( F8 U6 Z
  2488. .DB "2023.07.23"+ u  e- E7 x8 T2 z

  2489. $ t8 ]8 P$ U# }0 {7 i1 o1 h+ \
  2490. ;==================================================' o" M1 x8 u4 Y3 U9 O
  2491. Music_Collection_Name               ;专辑名间接索引" N: N" ~% R5 H: L! I/ p- |  j
  2492. .DW Music_Collection_Name_00
    " ]  T$ i  ]* N% {: }  a( \4 }
  2493. .DW Music_Collection_Name_01) t- o3 \! A$ R7 i4 l! `4 \
  2494. .DW Music_Collection_Name_02) }) ^" b' J. A: P4 t
  2495. .DW Music_Collection_Name_03
    2 b6 d# t! O. o: ^4 X/ M
  2496. .DW Music_Collection_Name_04) |) {& [9 g# G) d, V3 }; c) W) M1 k
  2497. .DW Music_Collection_Name_05
    4 ?) i9 l% ?1 s5 R9 y7 N( C: ~
  2498. .DW Music_Collection_Name_06
    9 m: v( f* H- }8 M
  2499. .DW Music_Collection_Name_07
    3 @+ x7 q! P$ ?9 j
  2500. .DW Music_Collection_Name_08
    ! @+ L* K5 a0 E& e' J
  2501. .DW Music_Collection_Name_09* R0 A7 |2 b4 _2 e7 l
  2502. .DW Music_Collection_Name_10& Y1 m7 R  Z# \8 O9 K3 R9 n6 p
  2503. .DW Music_Collection_Name_11
    " e" n) b3 ]  ~& x0 u. C) t
  2504. " `( s* h2 ~6 m5 U- A# k0 P
  2505. ;==================================================! I: z; d% u. L' q
  2506. Music_Collection_Name_00            ;专辑名文本数据% n8 }5 o* c( {" c5 y: H$ o
  2507. .DB 11,"1.RAF WORLD"% e! l# z0 M0 `5 I1 }4 `& q/ y
  2508. Music_Collection_Name_01
    - s4 T, H- \/ T7 }- O( u' v
  2509. .DB 15,"2.FINAL MISSION"/ N5 ?0 [3 ^6 Y
  2510. Music_Collection_Name_02+ j, j  K& `9 b9 }( ?# L3 L
  2511. .DB 06,"3.KAGE"3 k5 s  A6 M$ ?, |& ]/ }4 V# E2 i
  2512. Music_Collection_Name_03
      H( V& h; C# J/ H- T# c
  2513. .DB 16,"4.DOUBLE DRAGON"6 i- H. q6 I, t! `6 O+ ^1 ^3 _
  2514. Music_Collection_Name_042 t4 L9 J+ `: }/ t
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    1 c- o7 o( t7 L8 z0 R5 A
  2516. Music_Collection_Name_05; ?- ~5 T& n& s9 o) G2 L' a
  2517. .DB 17,"6.DOUBLE DRAGON 3"8 Q) E2 J" i  v, V
  2518. Music_Collection_Name_06. }  T% C# e9 j1 e
  2519. .DB 09,"7.ROCKMAN"( C' n# R1 H$ U5 s& k! a( h
  2520. Music_Collection_Name_07
    2 w7 V% s  D3 p5 E' F, Y2 b
  2521. .DB 12,"8.ROCKMAN 2"
    3 i+ a" r+ J+ f; L
  2522. Music_Collection_Name_08. E% S- }4 b. W- J# P) e+ y
  2523. .DB 12,"9.ROCKMAN 3"
    1 J. @3 }, ~; p6 K2 s
  2524. Music_Collection_Name_099 ?" v' x7 F, x, b* ?
  2525. .DB 12,"10.ROCKMAN 4"
    * [  n3 [) e' V  i
  2526. Music_Collection_Name_10
    " @, E2 s, P2 K3 Z) O! ^  t
  2527. .DB 12,"11.ROCKMAN 5"4 r' j6 A# g1 H2 h) p3 O1 a+ ^
  2528. Music_Collection_Name_11! D1 d" G8 O; j- S7 Y" T
  2529. .DB 12,"12.ROCKMAN 6"
    * z% y9 k8 S9 J) L' q/ b
  2530. 9 H6 H' I! _( i6 P1 d. }
  2531. ;==================================================
    ' k1 @3 r1 w6 X: c
  2532. Track_Name_Addr_Flag                ;显示曲目名标记# E. Z/ ~) g5 E0 J( ?
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,06 U& V+ {8 x3 t& [+ h- Y! _
  2534. # t9 A  L' m  l5 z& e" c
  2535. ;==================================================
    ( }5 ?7 B7 U1 M+ I7 b. X- v- t4 c
  2536. Item_Pos_Data                         ;光标箭头位置  y, m  u, Z, P" {' C; j
  2537. .WORD ITEM_SHOW_POS" ?8 B$ I3 o. j, m; m4 c8 B
  2538. .WORD ITEM_SHOW_POS + $0040
    1 D5 o; X6 Q- o* g
  2539. .WORD ITEM_SHOW_POS + $00807 [& }6 i- w; h5 G. l# s1 f: I
  2540. .WORD ITEM_SHOW_POS + $00C0, C% G# B) V7 r5 Q/ @
  2541. .WORD ITEM_SHOW_POS + $0100
    & A7 K' j/ y1 _7 t) m! J$ G
  2542. .WORD ITEM_SHOW_POS + $0140: v# d8 G1 s1 I( h& f* c* T: y
  2543. # m! B' B3 C% O/ {, c
  2544. ;==================================================
    ! k2 N  j& |( d
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    " `6 U* C9 N4 s/ T' L( H
  2546. .DW $BFC88 R: W0 d, f  G6 W' s# f5 `# C. T
  2547. .DW $D7F0
      x: C8 {# n( l+ N" {. i) Q
  2548. .DW $9FC0
    ; |! j- h+ J+ I. E3 e
  2549. .DW $BF70
    8 W$ d2 y4 J. G2 v: Q
  2550. .DW $8003, B0 u# v" t; p, E0 x9 H. a
  2551. .DW $BF30. p, a; ]" `( l
  2552. .DW $90036 p1 a) }5 x6 o( a7 @) ^% e0 H
  2553. .DW $8003! @5 M$ w( E3 \* x- l
  2554. .DW $8003
    , d  _) a- g. _4 Y# ~- @# A
  2555. .DW $8003: R; d2 Y5 \# z
  2556. .DW $80034 i% a, x5 q" ]7 D
  2557. .DW $8003: D1 C, M% B* o' c
  2558. + I5 R5 s) `8 T! U6 T
  2559. ;==================================================
    ) q* k& i. x$ ]$ c" N
  2560. Sound_Play_Port                   ;音乐播放入口地址
    / @4 i  Y0 l( Y/ c' J
  2561. .DW $8000, A, d/ J$ O1 }
  2562. .DW $8001" E$ b+ G5 P7 ?, n
  2563. .DW $A000
    7 G2 ^) K/ O) H$ l
  2564. .DW $8003: n0 `" I7 `# O6 W" b
  2565. .DW $80003 X) n- L& @4 e, D! }; |
  2566. .DW $8003
    ) M: Y$ a) |/ E/ k3 C7 F( h
  2567. .DW $90002 m1 U9 U3 i: |$ |: K1 k) z
  2568. .DW $8000
    8 }4 a; }$ Q# V$ p
  2569. .DW $8000
    " N  \  D- |4 H% ]' j* i
  2570. .DW $8000# J9 t/ k6 q9 O, u1 R
  2571. .DW $8000
    ) J; {) ~8 ?1 r  @
  2572. .DW $80004 L' Q- J8 O. `+ A

  2573. + l: _' \* Q5 C+ q- }
  2574. ;==================================================3 ~3 w# Z7 j" T2 ?& I7 r
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    2 `5 p7 c! m0 v9 }4 y. n+ ]
  2576. .DW $0000
    + W  G# D! Y7 _
  2577. .DW $00004 [6 ?# I5 \3 E& e/ [. `7 A# Z
  2578. .DW $0000) Z3 k8 x0 l; ^. m
  2579. .DW $0000
    ' P0 ~, Y0 _$ R# ]' Y
  2580. .DW $0000
    $ I0 W# J8 D" ^) r& j
  2581. .DW $0000
    . J/ i& p! n1 [% u
  2582. .DW $0000; b) O. r6 o; q4 X8 Q$ S$ j: N0 o
  2583. .DW $0000
    , {- O# b; ]; p# k7 F
  2584. .DW $00000 n! @- Q( w( |% d1 X) S
  2585. .DW $0000$ j7 C8 R2 U) R* g0 C* U. A6 h
  2586. .DW $0000
    ! m* z+ C& R9 Z' v
  2587. .DW $0000
    8 ?6 j  }, f& h5 p& _7 U
  2588. ( |6 J. Z* a! \( b
  2589. ;==================================================  X) W; ~  C1 I5 s* ^
  2590. Sound_Total_Port                          ;曲目总数
    % q. ^4 u- t& @, l# j# f( |
  2591. .DB 383 S, t8 I4 j. `8 [
  2592. .DB 33, j6 G* o( F9 N
  2593. .DB 49
    " N( [" D4 \7 l  }7 C- R( O: ~
  2594. .DB 41
    9 W  H. w  x3 O4 c% x& u& W" V: h
  2595. .DB 83, v' {3 A( z% ?, x
  2596. .DB 70. P& S  t# ^$ `4 }3 z  T
  2597. .DB 50
    2 \: g: i2 d8 l: V* M
  2598. .DB 677 P! ]0 A4 @! H$ g
  2599. .DB 57$ A* y" q, Q# L! h- i6 d
  2600. .DB 71
    / ~3 q1 a) S2 J6 U; Q6 R% p2 A
  2601. .DB 76
    ( z0 _" v3 ]7 k, Z& i$ l
  2602. .DB 102. @1 ^% Q# }5 C- N% J% {3 J

  2603. 4 k9 y4 V, g, o: Z6 O6 ^6 h7 }$ Z
  2604. ;==================================================+ @0 |& N. |& X( z- q- Z- |
  2605. Sound_Start_Port                      ;起始播放曲目
    - g- y1 o" h7 c
  2606. .DB 00
    ( i) \% a6 u0 k& p' s! y
  2607. .DB 00
    3 N7 L0 m# t7 a- k" S& k
  2608. .DB 001 {' D/ K" _% j5 F8 ~4 V
  2609. .DB 00; n; i1 L2 o& ^/ O6 j
  2610. .DB 000 z+ f3 `% S! E# D. I) P9 g  t
  2611. .DB 008 O& T+ I7 l. Z2 I2 }1 ]
  2612. .DB 001 a" }- @+ J) D1 e
  2613. .DB 00. P  S+ w9 ]' e( N. J$ l; E1 m
  2614. .DB 00
    5 b+ n: k' b" j6 V
  2615. .DB 00
    + X: r  E+ \6 R9 q; X
  2616. .DB 00% Q* x; E8 j- I3 S  V$ A7 }
  2617. .DB 00
    - q( n* h3 m* A7 j- Y/ [, s7 [

  2618. 2 L2 W. C" c" c  T0 E- ~9 _
  2619. ;==================================================
    0 {' m+ k: L6 j# B" m
  2620. Sound_Bank_8000                      ;专辑bank_8000
    $ u: f% \- G2 j
  2621. .DB $10
    ) T3 D7 N5 h7 t! i5 }2 G2 z5 X: }
  2622. .DB $12. O7 g) v6 b2 y5 y5 w1 ~
  2623. .DB $141 y( s; {# A/ ]+ N- U+ Q# }
  2624. .DB $16
    7 H) q0 B3 Z/ K( l  k1 f/ k
  2625. .DB $18* \2 M8 V  `- ^, _
  2626. .DB $1A2 P' r5 v3 i. h/ @: {* s# y+ ^

  2627. ) Y4 i# @6 l4 i5 U- w  u7 t0 x
  2628. .DB $007 ?5 X/ g9 Z2 x; ?3 s2 x
  2629. .DB $02
    7 B0 H# Y4 @% T9 z$ ?' {
  2630. .DB $0D; s! K' b0 G. q6 S
  2631. .DB $04: a" T* R5 U7 M, S) X5 M
  2632. .DB $07
    7 q. w( U" N' r5 q" t
  2633. .DB $0A& \. y% R, ]/ n! J
  2634. 9 W& [, A1 V1 {7 A# z3 U
  2635. " s7 f! v& m( F' ^# ?0 C. L+ I5 e
  2636. ;==================================================
    , K/ A! d/ g0 G7 F
  2637. Sound_Bank_A000                      ;专辑bank_A000; M+ P& G% E8 U: t8 `+ a( d
  2638. .DB $111 b# P! K. a6 X- |' o
  2639. .DB $13+ M6 ?+ p: U# A  L2 U8 u
  2640. .DB $15
    5 Q7 j3 i; Q5 g8 {3 D) ~
  2641. .DB $176 o! A2 }$ y4 F: ?3 l; y
  2642. .DB $19! u: d* O* E! u9 ~. G- x
  2643. .DB $1B4 L6 Q4 F# |  h$ t( k& o5 p! ~& Y
  2644.   j- \2 p+ b) V0 E
  2645. .DB $01( }/ R( }, c* s/ R
  2646. .DB $03
    : N  [" v, v, n$ {
  2647. .DB $0E9 |, U" {/ e" Y! X3 @
  2648. .DB $05( O; [( N/ \% o; s
  2649. .DB $080 v% ?# C) a! P# z  Z! c! [
  2650. .DB $0B# x/ r0 E( d) C. F2 V& n, n

  2651. 3 G6 V) J, C$ a. |
  2652. 8 W/ j# \; V; N# b
  2653. ;==================================================. W  u" `$ h5 \: @) K9 s/ d
  2654. .BANK RESET_BANK & BANK_DATA_MASK" H% N3 G* P3 }
  2655. .ORG RESET_ADDR. ~8 |7 Q# O4 u! r" F( i& E

  2656. 8 S* l" W. ?2 P% S2 W" v. m
  2657. ;==================================================
    & o2 @* [+ ~5 ?5 P
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    9 L. e* f. W6 w9 X+ J2 R( y! O
  2659. PHA
    & r0 b+ _) R  i$ x0 \
  2660. LDA #$06
    . ~! U# @, g* C6 n2 w
  2661. STA MMC3_BANK_CTRL
    + n3 D+ d/ |% t2 h: ]1 w
  2662. PLA
    ) ~: C& V: |' M. Q8 C
  2663. STA MMC3_BANK_DATA
    / T0 a7 U5 B1 Y7 ~% J/ R* u
  2664. RTS0 {6 m- M) t4 X2 {7 |
  2665.   p% J  ~. @8 D8 K0 |; @$ E0 e
  2666. ;==================================================* A. r. L* _5 V9 A6 g% R  ^; ^/ h
  2667. Switch_Bank_A000;切换bank到A000-BFFF8 |2 ^/ G* E! v+ l8 n' g
  2668. PHA+ B% |0 i: W6 T+ d5 v
  2669. LDA #$07
    9 T$ Q: c6 O$ l8 P
  2670. STA MMC3_BANK_CTRL5 g1 h  l  c7 _0 ~7 u. x
  2671. PLA
    6 d9 d1 z4 b8 |! n9 D. e. I" Q' w
  2672. STA MMC3_BANK_DATA7 H0 X' J9 m: z4 C8 L) u
  2673. RTS
    # K# r& x" y% M' u2 Z! T
  2674. ; e5 }) @! Z$ A; ?- K
  2675. ;==================================================" U3 x" _0 r4 S, k
  2676. Switch_Main_Bank;切到主程序bank3 I+ M) T  x& u1 _" F! |) |
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK$ @3 [1 F0 x* n7 f! @# f1 i
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    5 q- W% Q3 h6 C# w- Z% f; {1 E' _
  2679. RTS8 E2 w7 {8 M# K7 d  c

  2680. # P% V: z: E+ a
  2681. ;==================================================( V3 A) Q+ m) @
  2682. Sound_Reset;音乐重设(如果有的话)3 X  G. Y& [7 ~8 _1 ^( y
  2683. JSR Switch_Music_Bank  ;切换到音乐bank1 }) M: W$ m% ]
  2684. JSR JSR_Addr_Op        ;执行音乐重置$ C: K) s3 `2 h0 V
  2685. JSR Switch_Main_Bank   ;切回主程序& |9 r+ o8 p/ @" Q5 J
  2686. RTS0 }8 b( I5 h! C- p9 u5 K

  2687. 5 u6 M3 f' N. Y. O* Y" \. G# C/ W
  2688. ;==================================================
    ( \1 B0 r$ ^& r* r, B. {/ W
  2689. Switch_Music_Bank;切换音乐bank
    2 b0 W) N4 K+ s' h1 b
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    + e8 B6 `0 I9 n# {0 n% K
  2691. LDA <Music_Bank_8000. x& w! [$ w$ [+ N+ T/ m7 S
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank' T& F4 }; P2 c4 l
  2693. LDA <Music_Bank_A0000 M: L2 Z$ U2 [/ j! E; _( X
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank' ^+ p  g0 {9 A2 U
  2695. RTS) v8 S$ a1 Q* i. P
  2696. 9 k  k, D& Q& _9 B
  2697. ;==================================================2 H" d8 l+ B: @0 o9 I4 f) y1 I
  2698. Sound_Init;音乐初始化" i: E4 s+ _& Z8 J
  2699. PHA0 x2 s. q, W4 p
  2700. JSR Switch_Music_Bank  ;切换到音乐bank* _, L) Q. O+ _( J7 }/ V
  2701. PLA
    - `: q% a( r( ^: A' M( M/ K
  2702. JSR JSR_Addr_Op        ;执行音乐初始化, ?8 k: `" J3 K$ V
  2703. JSR Switch_Main_Bank   ;切回主程序
    ) Z4 E5 T* C6 [' U8 R* c
  2704. RTS: c7 c% f) P( v6 V5 n5 T! R6 y# k' K
  2705. $ \! ]8 q5 m* H4 k, L4 l$ A
  2706. ;==================================================  L  ?" h  \; S2 @* }0 v
  2707. Sound_Play;音乐播放. ~* F& S/ J% k1 c
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    # H8 y) n/ x$ j0 J; y, _: `
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    $ x6 ^* ~* s& L( ]; P
  2710. JSR Switch_Main_Bank   ;切回主程序6 [4 [+ `+ X* ?7 D6 M
  2711. RTS6 b. ]0 o$ }' s

  2712. , G  T2 o2 ]- Q* h! X% k
  2713. ;==================================================
    2 }8 @# Q1 I3 I( f- T
  2714. MainLoop;死循环
    . Q* @5 A* K& f. E
  2715. JMP MainLoop, z$ k( V$ P5 J% s. U: X2 V" s
  2716. & K; ]9 m% A' b: ?( S. `! m9 e
  2717. IRQ_SUBPROCESS_JMP = 0
    " R7 |6 ^, ~5 y
  2718. 2 ^: K- N  S" M$ }1 }1 P
  2719. .IF IRQ_SUBPROCESS_JMP
    5 X8 b6 X: t* G, ~+ C9 _
  2720. ;==================================================
    / j0 F3 ~( M% x4 W8 B
  2721. IRQ_Process_0;IRQ处理过程0
      B5 q9 j) s" T8 r. a. C, l! a
  2722. 9 r. y" i& h) S
  2723. ;15条扫描线后触发IRQ
    9 K$ o; h& b1 _; ]# a
  2724. LDA #15
    " Y" _- D" K7 S7 l$ r. q: G
  2725. STA MMC3_IRQ_LATCH
    0 w! r- t  J9 B8 w+ i& u8 s
  2726. ! I5 S  x' Z0 X& |! }
  2727. ;设置屏幕滚动3 p" n& T+ Z& X! J2 {; W* y
  2728. LDA <Scroll_H
    ) ]7 W3 A" u2 y" h6 _9 `" l# K! m
  2729. STA PPU_SCROLL7 c- A# a+ P6 h
  2730. STA PPU_SCROLL6 b8 e; j# ?$ L0 s) A

  2731. ( k; a+ Y6 F) Z' r6 V2 X1 o
  2732. IRQ_Process_0_End
    , Y9 q+ i9 g4 o& J6 I2 s
  2733. INC <IRQ_Process_Index
    % S- |8 N( U  E( e
  2734. JMP IrqProgramEnd! P4 p! s$ l7 h  b" w1 e0 y# U4 U$ M( N

  2735. - {" X. R8 @! Q3 z2 B( P" T
  2736. ;==================================================
    % v  I# N8 i) p8 S0 Y3 Q6 [3 Z& z8 y
  2737. IRQ_Process_1;IRQ处理过程1  Y" C: d9 {( i' y5 g# C
  2738. ; f# D) K# `+ W
  2739. LDA #55, b7 G# K! l( m( s  k0 A/ j, V
  2740. STA MMC3_IRQ_LATCH
    8 [7 f6 q+ W1 \7 e/ s

  2741. 1 o/ z7 w' ~( q& B
  2742. ;设置屏幕滚动% `0 O: R5 f2 w; |" ~# k( _- p/ Y+ Z
  2743. LDA #$00
    $ r$ O. K0 E4 i. _
  2744. STA PPU_SCROLL
    * b" d; ^: b+ @: d& K% F
  2745. STA PPU_SCROLL
    4 b4 K5 I  q# d5 r

  2746. ' e( N9 ^. K- j, o8 r$ j" w
  2747. INC <IRQ_Process_Index& X+ c9 p% d2 e5 @. ~- ~3 N! N
  2748. JMP IrqProgramEnd
    % q0 T: P4 |' B% f2 x5 p% I
  2749. . C# h& ~4 p2 C! z2 j" S% b6 @
  2750. ;==================================================5 ]2 S' n1 J8 P. `- w
  2751. IRQ_Process_2;IRQ处理过程2
    5 F  }( }' D0 l7 n! Q2 x
  2752. , c  u) w4 k" A; ?  Q0 q3 l
  2753. LDA #15& f& l6 I+ l& N4 n6 f  c' e  Z
  2754. STA MMC3_IRQ_LATCH
    $ |- f& q$ @6 h2 P+ d( ?: B

  2755. 2 a+ _; X2 H! @9 |& f& }6 }$ J3 C
  2756. ;设置屏幕滚动
    $ Y! U' k. h0 N& c! h7 E
  2757. LDA #$00$ r' L6 I4 S; E
  2758. SEC& A& m; n! K; X: ~4 G+ U2 G
  2759. SBC <Scroll_H
    % I8 @' l1 G4 _0 G4 m7 H/ [
  2760. STA PPU_SCROLL( l7 B& }0 U6 u5 ?$ t/ q$ c; f
  2761. STA PPU_SCROLL+ j! U# ~) E2 ]3 g2 ?* C
  2762. % ]' k, f$ ~# S6 K2 j
  2763. INC <IRQ_Process_Index
    ) K8 }# f* }9 D+ r
  2764. JMP IrqProgramEnd/ A" U1 u; s( T; ~
  2765. 1 g, z$ u/ M: ~
  2766. ;==================================================
    9 m* A$ x# }/ N" O6 z
  2767. IRQ_Process_3;IRQ处理过程36 G( W" [$ {& W/ Q. }0 E

  2768. ) n( ~. o8 ?: M
  2769. ;设置屏幕滚动( E  p$ O; q1 u/ O' J* A" C) y
  2770. LDA <Scroll_H. [% D+ S3 Z6 C' p
  2771. STA PPU_SCROLL6 o, U& x6 [0 q0 H0 l
  2772. STA PPU_SCROLL2 `+ w% G8 L( B4 b; ]& Z! i
  2773. - M% P" ]  T; T4 K% p4 H1 n
  2774. ;禁用IRQ/ B/ R2 f1 L4 T, K
  2775. STA MMC3_IRQ_DISABLE; m! S* R2 \7 x
  2776. JMP IrqProgramEnd; V0 v9 G( ^4 P7 d- e& v
  2777. 5 y2 _; k- f! g  Q: j9 r8 P! ?
  2778. IrqProcessAddr+ H* s) S- Y  ^8 b, t+ J
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    6 k+ r/ B' H& |: F5 P

  2780. 4 ]) t3 |9 }% E, V: P
  2781. .ENDIF5 v3 t; z; H- M! c1 [" p4 {" V
  2782. 7 K6 G0 M5 D1 `& r  `" z( n
  2783. ;==================================================
    & i4 H: q: P- i$ ?; ?6 U, p
  2784. ;IRQ滚动模式常量' E0 O  m! y( X0 R4 L5 W
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动7 |1 q7 C6 b4 |
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    ; u9 L1 S, d+ e3 i: ]' {
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    8 g- C5 y) ~' {" v, g! k8 J' |

  2788. ' O2 e4 S% b/ f" M7 q
  2789. ;IRQ扫描线数据
    3 k' M3 }' N$ A, w
  2790. IRQ_Scanline_Data
    3 e! C& R) q4 C0 G0 H
  2791. .DB 8
    5 A$ Z" n' V. k, s2 p- N0 S
  2792. .DB 54
      I8 k3 R$ O' x; h1 C) F' K
  2793. .DB 8; \- K% ?, e) P" d4 r
  2794. .DB 00 ;关闭IRQ
    5 @: {, H4 x  f  i) j! Z6 s
  2795. ! N* s% ?) [- \7 A! t$ P
  2796. ;IRQ滚动控制模式
    . \* A& F& T& q  d1 N5 K
  2797. IRQ_Scanline_Mode3 [- p4 f1 y, n, I( J
  2798. .DB IRQ_SCROLL_MODE_ZERO1 y# |+ M3 `" }) z/ @6 `0 D, Z0 `* k; s! L
  2799. .DB IRQ_SCROLL_MODE_ZERO8 |! k" S0 z5 P+ E2 h- S3 T
  2800. .DB IRQ_SCROLL_MODE_RIGHT3 U' z+ H% v1 Q+ R
  2801. .DB IRQ_SCROLL_MODE_LEFT
    2 q3 ^  l/ X+ s* J6 m- L% I( r
  2802. 0 G, g  U% e! ^) m: z0 [7 H" B
  2803. ;==================================================
    6 c; k7 _+ R2 y4 m$ y  U
  2804. ;IRQ处理. l6 w: r7 ]. c4 T" V# o
  2805. IRQ_Process2 L" t" z! Y, R9 ]& V" @
  2806. LDX <IRQ_Process_Index
    & Z0 N4 C; w1 _* w
  2807. LDA IRQ_Scanline_Data,X
    , I% q) m7 ^3 C+ t2 c; F4 h
  2808. BNE IRQ_Process_Latch
    ) ]0 t6 x" ?" q/ U6 p
  2809. IRQ_Process_Disable;禁用IRQ
    ' \% e' v2 E8 f2 f) b
  2810. STA MMC3_IRQ_DISABLE$ n3 M# Q: n1 z4 c6 m+ n' U& V, r2 M+ s
  2811. STA IRQ_Process_Index# t/ R6 q3 k9 k) S3 m" H
  2812. BEQ IRQ_Process_Scroll
    & }4 t% D  W5 z& x, _1 q
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线" q3 x$ i) M& `/ P) G3 @
  2814. STA MMC3_IRQ_LATCH
    / {8 |9 G% I% c/ Y; |
  2815. INC <IRQ_Process_Index
    2 d  [" F1 I: ^1 g
  2816. IRQ_Process_Scroll;IRQ滚动控制4 U6 }+ H; R8 ^0 A
  2817. LDA IRQ_Scanline_Mode,X
    5 r* R1 g: j# `2 [4 X
  2818. CMP #IRQ_SCROLL_MODE_LEFT" _4 L2 N. A7 R1 h
  2819. BEQ IRQ_Process_Scroll_Left; x6 x# U+ \  E0 k3 I
  2820. CMP #IRQ_SCROLL_MODE_RIGHT- N. z8 h4 P8 b# {) |5 l: k) u
  2821. BEQ IRQ_Process_Scroll_Right) o& x: [) S! z, x3 X% ]# X+ E
  2822. IRQ_Process_Scroll_Zero;不滚动
    ( U. F7 k* G( W  [
  2823. LDA #$00
    2 K2 ?% q8 W: F) x0 ~
  2824. STA PPU_SCROLL9 l& s& s$ R; q; e* l' p
  2825. STA PPU_SCROLL" ?5 v% u7 w8 r" |* |
  2826. RTS
    - ^# t) c4 M0 i6 U4 A2 k
  2827. IRQ_Process_Scroll_Left;向左滚动. a. ~2 m% d+ |+ O4 o
  2828. LDA <Scroll_H0 ?+ ~4 V! W9 A3 ?- Q6 d! p
  2829. STA PPU_SCROLL
    / z1 ~( Z$ b0 q: t% v* J7 b
  2830. STA PPU_SCROLL
    ' w3 _/ d4 ~2 K' |! o* n- m
  2831. RTS
    # ?7 T: T1 O# w3 p$ X: ]% g8 k
  2832. IRQ_Process_Scroll_Right;向右滚动
    2 O3 W; W* C% O$ Z4 W7 J: u6 Z
  2833. LDA #$00  G/ S8 [% I3 m* a& G
  2834. SEC+ V2 O- h2 K" C2 K- s9 G
  2835. SBC <Scroll_H2 V0 h" K; D  H+ `' M
  2836. STA PPU_SCROLL- g. G+ D# `) `+ K8 b1 r
  2837. STA PPU_SCROLL1 i9 {7 L+ U: }- C
  2838. RTS
    % D! |' K6 i' J. I; {) u

  2839. 2 I1 B* H$ c8 w/ K* ^
  2840. ;==================================================
    1 ?- L9 g  S- S  @- M
  2841. NmiProgram;Nmi中断处理
    2 h$ t. W6 L7 I& n- Q
  2842. PHA
    2 s8 Q2 w- _) j* d: N, Z) x
  2843. TXA% u9 H+ _* c3 X- ^0 D3 |
  2844. PHA
    ! d& J3 S+ x" f# Q8 Z, b$ H7 _; I
  2845. TYA
    - ?: p4 ~# ~- I" u/ n) p
  2846. PHA8 E7 A; @8 z$ w, }- G4 t
  2847. 0 _! J6 r/ Q& n
  2848. ;读取清除Vblank标志, 防止重复进入/ q( ~/ s" x3 z) `7 O+ C0 q
  2849. BIT PPU_STATUS8 ]! I5 M% [4 N; ?, Q- {* @7 N

  2850. , b( W0 I" F1 F" q: F8 F4 q
  2851. ;切换主程序bank- W9 Z. {# L3 z. T
  2852. JSR Switch_Main_Bank% B2 B9 r( G. ^: ^7 ^) u

  2853. - ^6 h; U5 \. e0 P* q* `' U. O; y
  2854. ;Nmi处理
    8 z/ `" P' t# L  u6 \
  2855. JSR NmiProcess1 Y9 k, H3 _; U/ N5 n

  2856. 3 r2 b- z. x* |% S. `( H; W
  2857. Nmi_Proc_End2 U# p! i9 l7 u& b& S! D5 N
  2858. PLA/ X1 P. d9 `0 d3 ?8 S+ I1 F
  2859. TAY
    3 I/ l1 H1 i9 M3 F7 s) i
  2860. PLA2 D- [- [1 s0 d' l2 |; r* l
  2861. TAX( b: r+ [" V  y* [- V, z
  2862. PLA) b& q5 g6 }* ]
  2863. RTI
    ; L( Z7 _  U, c: Q, ^3 {
  2864. 8 B+ l1 w" l! {% V
  2865. ;==================================================
    + A; ~* s* y% D, h3 n9 ]! H  d
  2866. ResetProgram;重置中断处理
    - D0 \4 E, k' t
  2867. SEI/ k$ u% s) ^- {( s
  2868. CLD
    ! \2 _/ j4 q% G0 O* }. I6 y' j+ I6 `
  2869. LDA #$003 ~: R/ N: v3 R2 r/ t7 P
  2870. STA PPU_CTRL0 ]3 _4 ]; g$ A( ]) C. d# g1 Q
  2871. STA PPU_MASK* q7 ^2 h, H( e

  2872. ( c7 s  N% W6 s4 O. p4 ^
  2873. ;切换主程序bank
    0 E$ G2 f/ X* e* X5 M- P
  2874. JSR Switch_Main_Bank
    $ U* n& ?2 q$ A
  2875. 5 X  W: m% b% v4 G, ]
  2876. ;程序处理开始
    4 R  c0 V# c0 U; _7 q' {
  2877. JMP ProgramBegin
    7 c# {* b; G# }7 F( c) D4 B7 ~, v

  2878. 1 \; h! l3 u5 i! e3 [3 @
  2879. ;==================================================
    " k; Y/ @3 @3 [& |& _8 I; G; F& n
  2880. IrqProgram;Irq中断处理
    / l% D0 v2 j1 b
  2881. PHA# L4 |# B1 I, |/ {( n/ a
  2882. TXA4 x% g$ o. q- W* B+ H
  2883. PHA
    9 I/ [/ c2 }; }; h
  2884. TYA
    * c- ~( j: V7 l: r& Q
  2885. PHA8 t# d: ~0 a/ ^' }
  2886. $ y& T1 A" f3 K. x/ o- m& r% ]3 ?8 N6 T
  2887. ;关闭IRQ9 P; n; m+ ^0 V6 K
  2888. STA MMC3_IRQ_DISABLE
    1 P/ H9 ?. A/ }8 _. M9 K
  2889.   @! K. E6 H) y- @7 g
  2890. ;允许下个IRQ触发* _% O; |' r) }) Z0 G8 w
  2891. STA MMC3_IRQ_ENABLE; B: T3 a6 b0 Z/ i- E
  2892. 0 _( c- P6 M( _' p* ^/ _; g
  2893. .IF IRQ_SUBPROCESS_JMP. y4 W% f; l* t/ T# y
  2894. % i( R6 d( D# h" o8 D' \. W5 F
  2895. ;执行IRQ过程
    % W  _. W; x/ B6 \0 y2 F
  2896. LDA <Data_L
    # {6 S2 c7 c; }. g8 o) [) R
  2897. PHA
    * O( U, }; c" E, n# x
  2898. LDA <Data_H
    * H8 g0 e" e9 B; g4 ^( H7 e1 z) u
  2899. PHA
    - i" x/ @1 j( }; n$ y; K
  2900. LDA <IRQ_Process_Index
    # v+ D3 d0 _8 C
  2901. ASL A
    : V; o% I; J3 v% B
  2902. TAY& u6 I. k! H1 b& ]; ]
  2903. LDA IrqProcessAddr,Y
    6 i, \9 v/ F) [5 D
  2904. STA <Data_L
    . E5 }8 k' Z3 e& A( C1 }, Z
  2905. INY
    + k  l9 f, i+ v, B2 o0 ~- X
  2906. LDA IrqProcessAddr,Y8 ~0 i+ _5 ~7 r2 ?, S' I
  2907. STA <Data_H5 k; @' h' f# B+ p) m
  2908. JMP [Data_L]
    % q5 l$ v; C. j5 D  D' `! h

  2909. 0 ~+ S1 I( @4 p2 D# I3 K
  2910. .ELSE
    , F2 k4 J/ S6 j$ n' \: f

  2911. : [0 ~0 a' r1 ^  A, D" _
  2912. JSR IRQ_Process
    3 F+ M9 O; s0 [

  2913. . t7 a. f! l, a8 ~$ y4 y& O5 W
  2914. .ENDIF: n, S9 x1 V- Z" S2 V

  2915. * a/ k2 Z0 x; B! a6 Q0 B+ q8 m' N
  2916. IrqProgramEnd$ _* V7 d: K/ |, c! m
  2917. .IF IRQ_SUBPROCESS_JMP
    7 t& [% r, w0 h9 U5 _
  2918. PLA
    : r; v. H: M% `6 B% |, \, h$ M
  2919. STA <Data_H
    9 I! |1 w  @0 {
  2920. PLA2 @) n8 S3 v; }+ s+ B
  2921. STA <Data_L
    $ u) x$ @  l+ N2 e* h
  2922. .ENDIF$ h5 S$ ~9 V, m  T, P" p! b! {
  2923. PLA  N7 w$ u/ D; U3 {. v' {- s
  2924. TAY  Z/ a. a' J* L, i- n
  2925. PLA  s5 J6 Y, L/ F
  2926. TAX2 k7 B! i- i( W( i" A
  2927. PLA4 V0 r6 C, C" F4 S4 _7 o  G( w
  2928. RTI
    0 J* a, Q7 {) v
  2929. ' C* O5 B8 y0 O1 L$ ^* O' B$ S
  2930. .ORG $FFFA* D8 G0 M& q6 k' o& ~9 B$ C
  2931. .WORD NmiProgram8 `0 y/ w- _; T7 C$ I" }- d
  2932. .WORD ResetProgram& T7 X, u+ l/ O5 J
  2933. .WORD IrqProgram
    1 W. `* j  d) y' A

  2934. ( o* a! A# a- F$ c
  2935. .BANK RESET_BANK & BANK_DATA_MASK7 {( m$ e  T: I0 d4 ~! m
  2936. .IF SOUND_BAR_SHOW_ENABLE
    % j) F1 A8 b7 G  \- O, \

  2937. 2 E: D$ `" Z+ E8 t! R6 A* r. ^. m
  2938. .ORG $FE001 C! M6 X& w* B- ]5 m
  2939. PHA9 I2 C  W4 Y) y+ ?  n. N# W
  2940. STY $07BA, D" M9 a. X6 E  G
  2941. LDA #$8D
    # o$ o1 m. e1 z2 F% k7 J' n& B, P
  2942. STA $07BC; a( R6 N: t  a6 r' {# k7 ?
  2943. TYA5 D; y$ U: y, N' M; \
  2944. CLC
    3 Q2 t, |+ c: W3 X6 {6 ^8 ?
  2945. ADC #LOW(Sound_Bar)
    ; `- J: i* V; [, {: h
  2946. STA $07BD: H# G6 ]; d6 o  F6 h0 N
  2947. LDA #HIGH(Sound_Bar), M$ Q6 ~5 _" n/ a
  2948. STA $07BE
    ! m" Y- z' f% B7 Q' J0 q( {, _
  2949. LDA #$604 g- v2 p# s. k9 b; U# ]
  2950. STA $07BF
    + x8 o3 H# D4 J, V7 f( G% l
  2951. PLA( C; L; d3 m6 @1 z9 }. @
  2952. RTS) q' ]( _& `! x1 M5 H, j1 t

  2953. 8 q3 T* e; e* K
  2954. .ORG $FE20
    , b# s, A. R8 b5 s' L. q
  2955. STA $07BA
    + j2 G$ Z& q6 N2 @3 s9 F
  2956. CLC) F9 j9 V" Y. I4 |* S. e  A
  2957. ADC #LOW(Sound_Bar)) f! d: [) o! d8 P2 Y
  2958. STA $07BD
    2 K2 U, T! l3 t# u$ ]. I
  2959. LDA #$8D
    0 N% ^" d8 c, f, _1 O, Z
  2960. STA $07BC% W5 f' c; A9 j
  2961. LDA #HIGH(Sound_Bar)
    3 f5 b/ S" C& F
  2962. STA $07BE4 ]* s9 h; T' B5 V+ \+ x
  2963. LDA #$604 E4 ]" Y! R  [, X
  2964. STA $07BF+ V, k% X$ L7 q5 a; t+ l
  2965. RTS8 r5 l5 Z+ D3 q+ y9 @

  2966. : ?, i) Y8 Z7 @, B# L
  2967. .ORG $FE406 w1 |! j2 y  Z9 }
  2968. PHA8 p6 g% Z5 A2 {) s4 x/ a+ K; H, @, y! p
  2969. STY $07F1" L0 e. }" M1 |6 M! V
  2970. LDA #$8D
    6 C+ o/ G* x3 e
  2971. STA $07F3
    / C& T4 C8 c- L  S( ]& {5 u
  2972. TYA
    ( }5 P- P* r$ s/ Y
  2973. CLC$ z  P3 `; G" u: F3 ]/ g# M$ Z
  2974. ADC #LOW(Sound_Bar)# E, H- X- D6 Q, `- {  N9 l
  2975. STA $07F4
    / U3 O  m3 w5 n  m1 I
  2976. LDA #HIGH(Sound_Bar)
    ; ]) Q# a# C, K# y/ y3 ~
  2977. STA $07F5) l3 h4 D- v$ l
  2978. LDA #$60
    6 k; W- o1 h& I0 _' O
  2979. STA $07F6( k/ A; q( E! t
  2980. PLA# Y3 g) ~: E; B* ~
  2981. RTS
    . G( y, J6 s! o

  2982. 6 g  d% u( y5 U) d( L' ^% i
  2983. .ORG $FE602 }- j$ e6 n; S
  2984. STA $07F1
    , V( ^9 h) R  e" L+ `9 s/ l, t
  2985. CLC$ \. w/ ~- c, U+ W
  2986. ADC #LOW(Sound_Bar)
    3 q! Y2 h" X; V; h
  2987. STA $07F44 B7 R% b$ t) T5 f5 U. k% m3 |
  2988. LDA #$8D
    ' j% i0 ]! w" B+ |5 q5 J$ B8 ?
  2989. STA $07F39 I6 k# m/ i" v" g% S
  2990. LDA #HIGH(Sound_Bar)
    ( @0 A; @, T6 z1 e8 y$ M
  2991. STA $07F5
    2 K9 w2 Y6 ~% R( |. c: P. `
  2992. LDA #$60* n- z) p' O# _4 o9 d: }& m% h1 }
  2993. STA $07F6+ m# Z* Q7 z$ T- R3 n
  2994. RTS
    & d0 Z: q4 U: H7 Q) l& Q

  2995. - Z1 g, \1 V% s9 q# ]
  2996. .ORG $FF40! F: R  I1 w0 r! V, W8 h
  2997. STA $4000
    / n6 r0 @2 [+ r% h; f4 D6 Z/ `
  2998. STA Sound_Bar + $000 F$ `7 X8 G* L" ^* W; g
  2999. RTS
    " a6 s- e9 Q& U
  3000. + K5 y9 @. y  C" P- s# q8 v
  3001. .ORG $FF483 V  B1 [+ _& a7 Q$ G# S8 E
  3002. STA $40047 o& z7 t0 i9 ^. H& l
  3003. STA Sound_Bar + $042 a  a* N$ e" `0 o8 M
  3004. RTS% g7 O/ A  z- p( u" a
  3005. . W6 q# D' v& r$ S
  3006. .ORG $FF50
    7 T- E$ ?+ g& {2 t! U( W
  3007. STA $4008
    0 s" R3 U; M, ~
  3008. STA Sound_Bar + $084 x* y2 V8 {( U
  3009. RTS
    . u; b% D" m  N, j
  3010. 1 h5 F4 K$ P2 k  ~. M+ }& ^0 F
  3011. .ORG $FF58
    " {3 {4 o# W4 p0 K0 s- {
  3012. STA $400C+ |; Q0 l- U! m2 _, E
  3013. STA Sound_Bar + $0C/ g' T+ n3 u- R9 ?' p
  3014. RTS
    ) ?4 y( k1 [( |; [! M- t0 U

  3015. 3 r  ^+ E! u- _5 u9 }% w# x
  3016. .ORG $FF60
    , o! D8 o4 B; x" q8 D1 S3 W) r
  3017. STX $4000( g- T7 k) H4 M* N9 e
  3018. STX Sound_Bar + $00
    & G( I# N6 P  |, y, b5 q8 T, x. o6 e
  3019. RTS
    6 V) E! A3 D* v5 x* @
  3020. 2 D. M0 A& V0 S- Z
  3021. .ORG $FF68
    2 f: N7 T: T( x" R7 ]5 B8 m+ b/ ]
  3022. STX $4004
    $ F, e9 d: o7 V: j
  3023. STX Sound_Bar + $04
    8 m3 J1 S5 _# D( M0 N" u
  3024. RTS' M- [% k0 C: ~& Z
  3025. 3 Q3 u2 j) V* C: h& ?3 |6 h5 R
  3026. .ORG $FF70
    $ [$ W! _% }6 Q' o  ]! K
  3027. STX $4008
    : M) S4 w8 C& R& _1 j) G- u. r
  3028. STX Sound_Bar + $089 w( ?0 b2 V) C& F+ A8 P1 A0 p
  3029. RTS5 e$ Y+ O5 T% j, M9 T! J
  3030. 8 y6 k% U0 a; o
  3031. .ORG $FF784 Q6 \" n" m  \5 |$ \
  3032. STX $400C( ]7 M+ ]) L& W; a9 @9 I6 G! `' P4 E
  3033. STX Sound_Bar + $0C
    . Q% l) Q; X; a+ V; B; U1 S8 ^
  3034. RTS
    1 v1 L% K+ k# d! @9 m" y

  3035. " q- V/ S9 o$ B
  3036. .ORG $FF809 A1 |1 A. U  H. m2 z. _# z; l
  3037. STY $4000
    ' v7 ~. X8 M$ C& ~1 `* D
  3038. STY Sound_Bar + $00
    ' h, b7 ?7 D% N7 H
  3039. RTS7 J5 m( k0 J7 w: g/ x& g, \( Z3 r
  3040. 6 h8 T/ e. m2 Y
  3041. .ORG $FF882 s- s8 v1 o. [& \. f
  3042. STY $4004+ j# N0 g5 l" p' J) P) B
  3043. STY Sound_Bar + $04. \+ P/ [% P4 Y& r. G' W
  3044. RTS  z- u: J8 ]7 C$ R

  3045. / ^( K$ W' p( t, W
  3046. .ORG $FF90
    3 {" G% ^* M& g/ d' A
  3047. STY $40080 h2 V/ ~: d9 r9 V
  3048. STY Sound_Bar + $08
    % K* P2 `6 B4 Z  ^9 _4 S  s/ p0 o
  3049. RTS+ n- t8 [, M! L) E4 ]) ^. c

  3050. ! `! @$ c' L) U; H5 H# B5 P, C
  3051. .ORG $FF98
    6 k- S; W! N" z1 y
  3052. STY $400C
    & P! Y' r( D7 q5 ~2 ]% P: d9 G. I
  3053. STY Sound_Bar + $0C
    # a+ M3 M8 @! y4 I2 t
  3054. RTS; v) K, ?4 p; `- ~4 d# _6 n
  3055. 1 Q+ _4 h9 v6 O7 [( \" g- g  W
  3056. .ORG $FFA0( Q* T' A* W2 G$ f+ q
  3057. STA $4000,X
      Q% O/ ^& G, n8 ^& B6 ?, o
  3058. STA Sound_Bar + $00,X
    1 A& w$ F. [) u" U
  3059. RTS2 j. r; ?! K/ T; V% r7 E: e1 n
  3060. 9 x- P- @3 J6 T5 `
  3061. .ORG $FFA8$ `9 s) I8 H; R" F. j1 g/ h
  3062. STA $4000,Y
    , G0 Z/ }8 W& _- R" q& [& a
  3063. STA Sound_Bar + $00,Y& {7 e9 O9 a* t* j
  3064. RTS
    + k8 l7 I$ z6 C; x% T
  3065. $ A! x  p8 i! D- b0 A& A0 w
  3066. .ORG $FFB0
    $ r" R  Q' T3 z" K0 D  B9 a9 Q& F
  3067. STA $4004,X
    : R" d, }0 G3 j' q/ F! b! U! w8 N
  3068. STA Sound_Bar + $04,X
    : w( O2 p6 a8 L. A$ [( Y+ \/ F$ R' Q
  3069. RTS5 k) X" @3 ?) M

  3070. ' n! n8 e$ p& E3 [" I( b
  3071. .ORG $FFB8
    9 c6 X1 [! n0 f3 x% i# S! f  G9 T9 |
  3072. STA $4004,Y
    6 c4 F- n' K/ O2 e+ k) h' ?- w! {
  3073. STA Sound_Bar + $04,Y
    $ a2 A) u+ ?0 w9 d" O, `3 T
  3074. RTS
    ; J% j& J1 q( _1 V5 m7 i
  3075. , G/ y3 `. Y+ x$ E8 H0 o
  3076. .ORG $FFC0
    - z) X; W( L' q% O0 V4 k7 @
  3077. STA $4008,X& I" `' J$ X, m$ C: b  ?% k$ T
  3078. STA Sound_Bar + $08,X
    + L! `2 z  y5 ?1 T
  3079. RTS
    ( c+ k4 y% i& |

  3080. 1 c9 I% p+ j3 K: @2 b
  3081. .ORG $FFC8! Q  K1 Y# P' l& }3 m" b( c# V
  3082. STA $4008,Y
    % g' M0 d9 \8 }
  3083. STA Sound_Bar + $08,Y; ~5 X! O( E4 W- U' O' G* g
  3084. RTS
    , X1 M+ v6 A* k! _! `4 o* M

  3085. 1 T1 U, O( i( m1 F# J. @. G
  3086. .ORG $FFD0. g* O8 w" X7 w0 b
  3087. STA $400C,X2 S# J. M6 X! M6 h8 q
  3088. STA Sound_Bar + $0C,X7 Z8 y# t5 I8 R/ y$ v- M7 n
  3089. RTS
    . k+ t6 ^  N% |5 I. o) {% w2 _0 c; I

  3090. ; {2 j: [: `+ ], {9 X* h: f! ~
  3091. .ORG $FFD83 Z9 e3 ]9 E9 h
  3092. STA $400C,Y
    ) |* [1 c2 {4 j8 h2 C5 B( ~$ X
  3093. STA Sound_Bar + $0C,Y
    ; E6 k8 H$ l, t
  3094. RTS
    ; e  r! l/ b1 r$ |6 F; z

  3095. ) f$ w% C3 M. U0 I' ?
  3096. .ENDIF+ b+ R% _2 H5 ~! G4 {
复制代码

* {+ C) Y! K' i1 j
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3419 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-11 00:55 , Processed in 1.097657 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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