EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
9 Q" o- k1 E, u: d4 b
, ~4 t! X9 ]' x. C& d5 |[FC][音乐12 IN 1]& H+ ?: }' b' V4 b3 J4 d$ ^9 X5 x9 W
时间: 2023.07.23
) j% j: h; @. L作者: FlameCyclone
2 [% z" |% E" ?7 \4 U0 V
: k: }$ o: G& c# c收录音乐内容:
' m: G# q5 v7 |! P+ h9 {1 k* M! ]  f1.Raf世界
  Z( r: R+ N; y4 `% \0 z% U4 E2.最终任务! l! F# ?. @' c
3.赤影战士
9 }3 e/ S# A& ~4 l( t4.双截龙
, e; m$ j, z  r8 G" c7 d# N5.双截龙2
: K/ d: ^& v% b3 |. I% M9 |$ _: S6.双截龙3
' g3 n0 {/ U  n, W, g7.洛克人
4 `! p9 p' m( J% f+ j! B8.洛克人29 w+ J4 {7 y- i/ ?) t
9.洛克人3- M8 @/ z# t- Z# h( `
10.洛克人44 n6 Y* G9 |& K3 P; O, U
11.洛克人5. M) j) i1 N/ h. F3 C+ g) H" s
12.洛克人6
4 }7 x; u! E% F' r( `* A8 m
" s6 r+ \7 j  @* W' L操作:( u7 w. Z  Q5 Q6 x3 o
上键:         上一个专辑$ V8 K; N. O4 f! a5 M8 K
下键:         下一个专辑
' `$ d9 S7 U, h: l% q左键:         上一曲
, N. K( u0 p1 ?2 Y( c  [' u& n: k右键:         下一曲
! J9 Q; p0 r+ y7 m+ YB/A键:        前10曲/后10曲( E# x# Q* J( w+ k1 ], T2 b  m5 e
选择键:       下一页
0 M* ^. t- }5 l; C: E5 @5 }$ k% T开始键:       停止/播放
& d3 S- D1 J$ U
& M4 z8 q; _% z- Y1 k( Xhttp://flamecyclone.ysepan.com/
- u' F/ `8 O" S- q8 g0 X/ d1 k% i! _) f
( B  I9 H+ j; K# M

" Y5 P' l3 V5 C& p. C/ q: w( ~3 i
7 ]' n- g; l* d, }$ j5 r; {
  1. ;[FC音乐][播放器模板]
    9 D! S9 `: T& B
  2. ;FlameCyclone 202307109 d0 H' e! j  K  O1 ]. X
  3. * o  o* ?! ?/ ]2 u! ?/ t
  4. ;文件头
    / f0 y  Z, J& q+ D0 q; F! z. K  H
  5. ;======================================================================4 M! q1 f" m1 A0 ^9 F
  6. .INESPRG 16                                             ;16KB PRG 数量
    * q# R' {# d; i  j" t8 O* _; M
  7. .INESCHR 1                                               ;8KB CHR 数量/ O) L0 Q1 `5 a6 ~
  8. .INESMAP 4                                                   ;mapper 4, C* I- r: ^% j! K+ f1 Z6 S' j
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    1 y% a; `5 A7 N; I' Q: _2 q9 q

  10. " i; T: k  ?4 q6 U
  11. ;==================================================, ^0 ~. U6 R% g, H; w' F* @8 w
  12. SOUND_BAR_SHOW_ENABLE       = 1$ w: T6 a" `2 l+ T9 ~9 I3 O8 r
  13. ;==================================================4 f2 H  w5 ~2 X" n  I( b
  14. BANK_DATA_MASK              = $1F
    $ o; |! n. q0 y0 ]. t* X2 y
  15. CHR_RAM_ENABLE              = 01 V& B- A! i' l: w) F
  16. IRQ_SCANLINE                = 136
    ; j4 k# W  M6 a& ^8 M- h; b
  17. ;==================================================
    1 ~$ \5 E/ B$ G4 p' E. h6 U! n0 Q, H
  18. SOUND_DATA_BANK_00          = $00
    " l; }$ G1 j$ E8 R
  19. SOUND_DATA_BANK_01          = $01
    7 {6 G2 i3 u4 K4 s9 G& C. o# Q
  20. SOUND_DATA_BANK_02          = $02
    , {* }7 I; G; h/ A
  21. SOUND_DATA_BANK_03          = $03% F3 D3 Q- o: O! q4 Q* w
  22. SOUND_DATA_BANK_04          = $04
    / Y$ E+ T" v) o% h. x* X
  23. SOUND_DATA_BANK_05          = $05, N# f1 N- b: J
  24. SOUND_DATA_BANK_06          = $063 x, @2 \$ j' j, n: D
  25. SOUND_DATA_BANK_07          = $07* Q: _& c' l' S
  26. SOUND_DATA_BANK_08          = $08
    % V+ Q3 U1 v- j+ K
  27. SOUND_DATA_BANK_09          = $09
    3 j: d4 G. a8 ]6 w4 j! [: i
  28. SOUND_DATA_BANK_0A          = $0A
    " T3 k  w4 z2 y$ U/ _3 p
  29. SOUND_DATA_BANK_0B          = $0B
    : N- q2 o1 Y9 t/ `) e, ~0 c
  30. SOUND_DATA_BANK_0C          = $0C
    1 X1 N, q6 R% S2 h
  31. SOUND_DATA_BANK_0D          = $0D: c! f" l5 a5 b0 z
  32. SOUND_DATA_BANK_0E          = $0E
    / D/ y" o1 g9 H* E' S2 F. O
  33. SOUND_DATA_BANK_0F          = $0F  o% f8 p. A/ |" }
  34. $ s" \: z  ^; ?) v. Z
  35. SOUND_DATA_BANK_10          = $109 C3 U, c( _3 y
  36. SOUND_DATA_BANK_11          = $11
    + ?3 q) \% u1 Q8 E! f8 l6 \
  37. SOUND_DATA_BANK_12          = $12% o5 o+ w' C$ [! m
  38. SOUND_DATA_BANK_13          = $13# X  {8 ]2 ~  W2 `) l9 F
  39. SOUND_DATA_BANK_14          = $14
    7 Z" _# I/ Z- B4 m5 U$ M
  40. SOUND_DATA_BANK_15          = $15$ P& S) c! N1 V, \
  41. SOUND_DATA_BANK_16          = $16
    ) d. ?: a0 l) k2 f# ?
  42. SOUND_DATA_BANK_17          = $17
    8 O1 R' g4 J4 R8 C% g
  43. SOUND_DATA_BANK_18          = $18
    : H( d' V: G6 D) l; x' w. O
  44. SOUND_DATA_BANK_19          = $19
    7 _6 i  l0 b- P6 R% L7 W% ?: p. N# C
  45. SOUND_DATA_BANK_1A          = $1A9 C6 v! w; N  O& o/ n5 z9 v# Z
  46. SOUND_DATA_BANK_1B          = $1B
    2 E0 a1 `2 g$ F* H& ~/ f6 \
  47. SOUND_DATA_BANK_1C          = $1C) T" _3 a" D( o
  48. SOUND_DATA_BANK_1D          = $1D  r3 k( A' q) C/ @7 a6 V2 `
  49. / s- J0 e, r" v& Q, t" f
  50. SOUND_DATA_BANK_C000        = $1E" t' n5 m" [) y- u
  51. SOUND_DATA_BANK_E000        = $1F) g/ U  @+ x3 F1 U; M
  52. ;-------------------------------------------------
    4 V, B+ }1 A& z6 T) R+ a+ o
  53. CHR_DATA_BANK               = $20
    5 M) n5 ?! ?" g8 p) C( M& n
  54. CHR_DATA_ADDR               = $A0007 M6 {8 o+ E1 X* G. C. V) L
  55. ;-------------------------------------------------
    $ T! R+ ^3 g- }: ~. Q+ X
  56. PROGRAM_BANK                = $00
    " F) U7 h3 |& ~! H
  57. PROGRAM_ADDR                = $8000
    / n4 p# }1 L2 I$ T/ \
  58. ;-------------------------------------------------, I4 _8 D7 Q' _' t  P" j1 t8 z' o
  59. RESET_BANK                  = $1F
    . d% b- L* s  d/ f
  60. RESET_ADDR                  = $FD00: W$ l; s% v) ?- u9 H7 ]
  61. , B% [/ ~) q5 Y- m
  62. ;==================================================
      ^1 }) P: x9 H2 g$ y: G+ e) I
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数  F/ w2 R" H, D& [
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引. D' Z, w, @& `/ g0 P) x1 @! c
  65. PAGE_SIZE           = 5                     ;每页节目数/ q6 R2 ?$ O& g, X1 v1 W  Y6 R
  66. $ n8 P# ]1 {4 `% K
  67. ;==================================================$ j( L' H; S; c: ?7 n
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    ! R5 v' w' N& f5 z$ _
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数/ C. g- {* J. E1 X. n& ^
  70. .ELSE+ t/ l, n0 F& n. s; m! O* |! e
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    ! B- B- f( Q3 t0 R6 x9 m
  72. .ENDIF& B* q2 E4 B! s/ S6 ^  q

  73. ; U# I3 H( n$ L' a( W' N; d
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引4 {! q1 d# k' M& H* ]1 q

  75. 1 i' z, e) c1 D. S6 q0 W3 z
  76. ;==================================================
    6 F3 N8 |1 m8 n) T! ^
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置, W) I, p- h0 b7 \9 r) H& c
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 27 A6 n$ j0 O( y: q9 D
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;9 H! D8 b5 G( v% C
  80. ;==================================================3 A- y* ^$ r& j7 G+ e- y9 {9 Z. b) u
  81. Caption_Text_Pos    = $204D ;标题文本位置( p! S0 \0 V" W- V) \0 h0 s
  82. Author_Text_Pos     = $2324 ;作者文本位置& x) _2 O  @( M/ P! r* U& V8 E9 J
  83. Date_Text_Pos       = $236B ;日期文本位置5 C& \# C5 P; v* i2 G& {
  84. ;------------------------------
    * K3 F- t; Q( W3 m' g0 f$ q6 S
  85. ;------------------------------, N, d7 `; |% _8 m1 W5 i
  86. .IF SOUND_BAR_SHOW_ENABLE. J7 g' s9 O4 X$ M7 B* Z
  87. / u6 T2 I7 ?' c
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    8 n. ?5 u8 G. N1 z* C
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    - @. W8 B$ s$ z5 J' X" i. Q
  90. Play_State_Pos      = $22F3 ;播放状态位置' [9 n/ b. e8 c- B: ^

  91. 6 ~7 t( U7 Q; \. R2 m6 n2 {
  92. .ELSE
    3 }$ @9 J9 V2 [9 M$ B
  93. " ^+ A" l$ ~( u
  94. Play_Index_Pos      = $226C ;当前曲目位置3 }% j) A4 Y' k7 o3 @7 v! E* C
  95. Play_Time_Pos       = $22AC ;播放时间位置
    / P: |' j- H4 i  s! b2 Y1 C
  96. Play_State_Pos      = $22EC ;播放状态位置5 R3 }' z9 M: k$ Q- O

  97. ; E% v1 d( z7 r4 ^  t) G) @
  98. .ENDIF
      S6 o) ]* b" h6 m' C# y- i
  99. ;------------------------------
    . R4 l/ D4 u! ], j2 n. ^  \$ O
  100. Track_Name_Pos      = $222B ;曲目文本位置1 a9 Z7 Q7 H' k- U8 Y' J
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    % q2 L) x6 @- m5 V9 q, X- m6 s
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    5 y. u9 s% X  c" b. b
  103. Sound_Bar_Pos       = $2269 ;音乐条位置; B  N7 i9 M' @/ N
  104. ;==================================================; _0 S! B' k0 s2 ?% f9 W) m
  105. Scroll_X = $00
    " L/ d8 |  q! \5 ^( R6 j
  106. Scroll_Y = $00" H/ j; y( K& Z" S6 g9 Q
  107. ;==================================================4 G! d. j6 H# Y6 F: V
  108. Sound_Ram_Addr_1       = $0100
    ) |2 y, \  ]/ X7 x9 B1 o( V
  109. Sound_Ram_Addr_1_Size  = $800 r( @* R5 ^4 I. Y
  110. Sound_Ram_Addr_2       = $00909 Q7 f6 `/ I- F" k5 I" E
  111. Sound_Ram_Addr_2_Size  = $705 N! T% O8 n# n
  112. Sound_Ram_Addr_3       = $0700
    / ?# |% Z! U7 S* v+ i
  113. Sound_Ram_Addr_3_Size  = $00
    0 x3 G8 _3 @$ z( D3 s# a" ]- T' a7 h
  114. Sound_Ram_Addr_4       = $0400% z* d9 w2 a% f: r3 Y
  115. Sound_Ram_Addr_4_Size  = $00
    8 s4 i6 f+ O. N+ d7 ^
  116. Sound_Ram_Addr_5       = $0500
    " [+ F8 ~% z: e6 r
  117. Sound_Ram_Addr_5_Size  = $40
    " f* A0 I, w. S+ v1 K  D+ v* z( q

  118. ) O% H7 M# R" g. ^* H; |
  119. OAM_TEMP_ADDR   = $03001 f$ o/ g4 V5 }& x, d. ]
  120. + D  Y! R% B- S: V! E6 z* I
  121. ;==================================================
    2 `/ Q7 M) l- }" ^9 f& {1 T* [
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器+ i7 }* m( h$ L, s: o, n
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    " n( b* o% |6 J) U7 r0 e! L
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位* e, J- J; y% Z# C0 E
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加17 G. A9 l* ]9 _2 e* a: J
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    # b' K0 o9 V! o
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    5 M; ]# J: f- V! L6 P# [' H: d
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加9 D3 d2 S' T- H+ u$ o3 n! @
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 # J% }" D' N; h4 q  L- {* o5 u$ {' t
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存$ M$ E3 ?9 X4 |6 v4 c
  131. APU_STATUS              =   $4015   ;声音通道切换
      i% |/ K, W0 j1 D( |* ~( ^8 g7 E
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通5 r9 t2 U2 _6 y! |6 F7 Z: \# t
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通, z% B# Z$ D  M; ^0 s' y. m
  134. ;==================================================; S( T9 w6 K8 ~/ |4 d3 O
  135. MMC3_BANK_CTRL          =   $8000
    : E4 o0 Y/ U: h' u+ U
  136. MMC3_BANK_DATA          =   $80013 B5 }8 W1 o: Q
  137. MMC3_MIRRORING          =   $A0005 J; w) z: ?4 Z0 H$ u- O# A: R  E
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    $ t# c& Y; x  i6 ^6 h) G& g
  139. MMC3_IRQ_LATCH          =   $C000
    ! Q8 A# X) k- u# l# ^
  140. MMC3_IRQ_RELOAD         =   $C001
    - s$ W- z8 b  A# d
  141. MMC3_IRQ_DISABLE        =   $E000! F8 o2 @" q/ A$ {" z
  142. MMC3_IRQ_ENABLE         =   $E0015 s  T% x: t' c2 g
  143. " Y- O# ?/ ]+ n
  144. ;==================================================" K5 M8 _9 z; O, ]# l1 t& L
  145. PPU_Addr        = $0200' S2 \; r; P# {
  146. Palette_Addr    = $02C0" W3 b& q) A  e
  147. Sound_Bar       = PPU_Addr+$E0
    $ d" R8 ?+ t) {
  148. ;==================================================. Z, |$ \0 P" E! B
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D5 V/ z6 A! u& ]' d3 p2 y
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    / E- N! R3 T- }( x1 ^
  151. PALETTE_UPDATE_MAX      = $2C
    8 o/ t7 x; ?1 ^' S
  152. PALETTE_UPDATE_MIN      = $21
    - s2 j' ?, P) c) X( w
  153. PALETTE_UPDATE_INTERVAL = 60
    & T6 Y$ C8 r( d2 ?3 C" k4 J
  154. ;==================================================  _0 v5 p- }# }! J" d
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    ' g3 x( @% q0 m) b+ L- l" F
  156. PPU_Cur             = Sound_Bar_Cnt+$02/ F4 h. q5 V! w( k' C) p) r
  157. PPU_Addr_H          = PPU_Cur+$03
      g  @% K. y5 x0 J) s3 B% M- ^) a/ y) c% S
  158. PPU_Addr_L          = PPU_Addr_H+$04$ ]. i. l3 P; T( Q3 b
  159. Screen_Ctrl         = PPU_Addr_L+$01
    9 J* \# _/ q/ P8 {4 `2 U
  160. Screen_State        = Screen_Ctrl+$01( `8 Z9 r( c  z  G' A% k1 ~
  161. ;==================================================' k& C- p2 j( }* P" ^. o: y! i
  162. Use_Ram_Begin       = $50- K$ o$ X7 S, N7 b+ b1 N; |
  163. ;==================================================5 P! z: n6 ?( b4 J
  164. JSR_Addr_Op         = Use_Ram_Begin
    - c( I4 [) a2 O4 I. @3 M; L) d% i
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    1 U3 J8 [7 b) s/ |+ p- |- B+ r
  166. JSR_Addr_H          = JSR_Addr_L + $01
      @' k$ L! q8 r" Q6 B  l
  167. JSR_Addr_Rts        = JSR_Addr_H + $01. t  {+ c3 f" t7 Q7 T2 n
  168. Data_L              = JSR_Addr_Rts + $01# m2 p9 l, l( U
  169. Data_H              = Data_L + $01
    6 D8 \( @5 p( Q
  170. Data_Cnt            = Data_H + $01
    : }, j% ^* J3 y* E" d% ]
  171. Data_Buf            = Data_Cnt + $01
    2 ]8 Q6 s. t8 _" m9 |# A
  172. Nmi_Time_Count      = Data_Buf + $018 z, ]5 |4 H* b# c+ N
  173. Time_Wait_Cnt       = Nmi_Time_Count + $014 L0 z" q' F( P4 n1 a$ C
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $017 o0 r" p8 c# G+ ]  L
  175. 2 P+ U) |0 m2 i6 T% z0 K2 z
  176. ;调色板刷新标志1 O0 d8 w) e& J7 A( _: p
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    * ?( s! F) Z: C/ i
  178. 3 f1 ?, W9 G' Z' D& X
  179. ;当前帧文本写入禁用标志: y, q' a6 k2 f' ^- c. y7 n
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    ! U( T+ e2 Y/ i: ?: P6 E
  181. 4 o$ \. [- J3 l0 h- R3 `
  182. ;==================================================
    4 j: H2 |3 c5 e; x; u5 m- ?! y& u
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    " X/ ~  h3 w  i
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条  d4 E* C: J2 X, {) f
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间9 C8 a6 h: F8 t/ R1 e
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间7 N# y9 F$ n* s: G! O+ t% x
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    - W  [" d2 O$ z/ b5 z
  188. ;==================================================
    & N; @1 d; A- `) k+ t5 M0 G" h
  189. Key_Keep            = Text_Disable_Flag + 1
    # S% z3 h7 V( O6 U
  190. Key_Once            = Key_Keep + $01# G! w% M0 ~$ C) ~; D
  191. Key_Kemp            = Key_Once + $01
    * u) n# O8 `- l" i! ^2 N
  192. Key_Temp            = Key_Kemp + $01
    - h) v3 t; {! N) K
  193. Key_Getv            = Key_Temp + $011 J! N, `4 Q: g# b
  194. ;==================================================% Q1 {7 _- X! n7 I( t. _7 u
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集$ I9 a* k  N/ ~( i$ c
  196. Music_Item_Last     = Music_Item_Cur + $016 Y' _3 {& k" B4 d
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    9 g4 y4 m) a( O5 h1 E, [" x
  198. Music_Cur           = Music_Total + $01  ;当前曲目" [& g5 \, r2 g, d: e( i
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    1 v3 n5 t- h& _6 E( L
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态7 }0 [; W; Y4 h4 |! S- |
  201. ;==================================================1 Z" R: c- d, ?
  202. HEX_Data            = Music_Stop_State + $01! a) A1 o' Z0 S. t7 o2 m
  203. DEC_H               = HEX_Data + $01  t9 H4 F5 e/ `# Q8 k: Y9 k$ ~
  204. DEC_T               = DEC_H + $01) D- h  `: {# }; W9 M$ D
  205. DEC_L               = DEC_T + $01" m+ ]. V2 h3 p/ l% ?
  206. ;==================================================' `7 c9 V8 d! z; s- C3 H7 Z, y2 ~
  207. Time_S              = DEC_L + $01
    4 t* x. Y$ d. o8 F) j: w
  208. Time_M              = Time_S + $01
    - B6 i, u* H% O6 p2 S
  209. Time_H              = Time_M + $02$ S% T! d. X( Q. e6 {
  210. Time_Cnt            = Time_H + $03+ s3 O% X! }, v; ^) P* |: o
  211. ) h  A' s  g/ M5 {! t
  212. ;==================================================
    / f* e) i; |4 n% I$ Q6 g1 d' Q- i, C) y
  213. Music_Bank_8000     = Time_Cnt + 1! d: ^, G8 @" {/ F, I% E: Y
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    6 e/ T& _( G2 ]% }1 y) {
  215. ;==================================================
    . D" K8 w8 X( M5 Z6 i6 f
  216. Scroll_H            = Music_Bank_A000 + 1' o; [6 \. B8 [7 k
  217. Scroll_V            = Scroll_H + 1
    1 Q9 P- y; M  o3 J$ k' @
  218. IRQ_Process_Index   = Scroll_V + 1
    , A3 S3 D7 U' M# f3 K3 t1 u
  219. ;--------------------------------------------------, r1 h) @# B  n9 x0 ]* t. o5 h1 L+ l
  220. Page_Cur            = IRQ_Process_Index + $014 L( E( l( @8 ~2 R" m: V: d6 H; z
  221. Page_Cur_Index      = Page_Cur + $01  l$ @& m% V/ D% |5 N& H5 m
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    9 U1 a/ A) ?- a$ A: S2 Z0 Z
  223. Page_Last           = Page_Cur_Cnt + $01
    / K- z) K3 C" J& ~8 F9 a  }
  224. Page_Last_Index     = Page_Last + $011 M% V6 b3 n6 J) I' O
  225. Page_Last_Cnt       = Page_Last_Index + $01
    6 C  G6 ~" C% Z" S/ I
  226. Use_Ram_End         = Page_Last_Cnt + $010 G, ]; \2 D. l7 S& B/ a7 M
  227. ;======================================================================
    4 }* m  q; D* \! P
  228. ;音乐数据块
    : k. `2 a# n9 }% O/ u4 v3 ^  [( w

  229. 4 ~4 z7 m/ Z2 u1 Z' d, H
  230. .IF SOUND_BAR_SHOW_ENABLE0 v8 e3 n7 n- b$ k8 q$ V
  231. 7 L+ y$ P% y' T: A6 U4 f
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    . d4 _# r0 u7 {! P! v0 f% X; H# E9 F( b. b
  233. .ORG $9000  |) G4 `2 o! l% s
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank". {6 k# g6 w; P1 |- O4 l  M4 `

  235. ; B3 m! O5 E8 D2 X3 o
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    9 G4 B% k. i' n  M9 W  J2 ~9 u$ L
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"& k/ a( D, h! L# W: H- t' J% t8 |

  238. # D& x+ k- z6 A2 r' ?' m: H3 p
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK+ I6 l9 {+ W* X. I- J
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank": A" ^4 p3 ?8 a" k. ~
  241. - \; X) V# _! B+ T# R
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ) m$ \, _' U3 E; P; n, J" Y& U
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"; {' y8 t7 Y4 @% r' b+ N% U
  244. # @' y9 |- n1 Q( D9 T% G$ |$ L
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    & F. s8 H) ?" N" i& M3 A, e1 [* T% K
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    ' l( Y( f! ~* t$ A+ Q* _0 d

  247. % H: Q# ^' x  N" F2 V- C
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    % V& E0 f$ \) K- L) h0 P+ A
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    3 L  ~+ Y. i% @1 P. Q
  250. 5 [/ [( x6 V3 c& ^
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    0 T- p$ H2 r( D  e
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    7 e. U! L) v5 s$ D7 H5 M0 G9 |" ^! X

  253. $ B* d( Z6 l5 Q; h/ ?
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    & n/ l$ I; y# }! \' G
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    ; N( c8 \$ [/ h1 I# W9 A8 i. b

  256. 5 I9 M) J* `$ L6 A$ b  s: s
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    8 W$ h; X1 j  ^3 y  l
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"/ J& n, ^, M( A. ]

  259. 5 K3 v6 _& a: }3 ~/ |
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    4 H" B: m6 A3 \& D4 n, D
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"- R3 F$ }; u) |( X) p

  262. 0 n2 q# }6 y" z1 v' b1 p0 X, a
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK) V$ T" L2 A& ~% N
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"% V9 a+ u: ^: Y; K% m2 Z' _0 S6 }

  265. : N2 Q; Z- M) K( U" S* X
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    & E0 t- [! Q7 _+ U$ a* f
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    - z# t, _/ ]- D/ N

  268. # m$ ~8 s3 u6 i- [0 y7 J
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK9 F, ^6 n6 d8 b8 D
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank". c: {! R- A1 u& L6 H
  271. 0 @+ \( N5 N4 J9 P
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK$ `; S5 I, Z$ `4 @8 `. w
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    & i, _: F! h2 G% }

  274. # Y/ p: t6 o7 b. e' U
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK1 `. A3 {! u5 m( q$ @- x
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    + D) L, G6 x5 V
  277. - V5 L+ G+ m( r
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    ) `: F9 _! x2 J
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    $ V# i$ B; L3 `
  280. + }- P6 s  ]# G7 u& Q* D  c3 I
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK6 a  g# D6 g. V* \+ y
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    , y6 k/ F5 H2 S. [

  283. $ f; l" s$ C. p. w9 r: E) N4 H
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    1 c0 E" e2 \# N7 j: m4 A
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"" q- x2 m% F8 w! b
  286. ' L% b; l+ w5 K$ ]4 Z  h
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK# }! P; N. k! x+ K5 c- r/ s
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    . w! v; ]/ `" ^% {1 ?* f; O  Z
  289. 3 V1 x7 H/ Y: J3 a7 G& x0 m3 O- D2 {
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    9 T5 ^: T9 w% y/ y' C
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"9 n8 L1 t* Y- a- J

  292. 6 O7 ?' r& n+ v5 Q% o* }
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK3 [4 z, O7 I  r/ p% [
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"3 U' M" X: a' `- h6 D

  295. " ^$ g* `& X/ `# d$ V& o( I# D$ {
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    1 a& @9 O1 I  c2 @( \# ?
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"; }7 ]- Y5 N& ^- `5 h

  298. . F' h3 g1 D- s! P5 E
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK( q, Q. B0 T5 I6 A# S& J- e4 w
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    # ?; ^$ n6 L: w0 s) {5 W- _

  301. 0 h) M- |7 W1 d: P% |
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK) `2 T' x/ U  y0 U1 V
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    % F; s3 u) o3 O; y" i, g

  304. 5 y% \4 a) g" k* l" u
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    9 r( M% U; }$ @2 D2 }
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank", }# W+ L+ m3 f5 z

  307. $ Q9 [/ R/ {: V4 o8 ?; ?+ n1 z
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK1 g0 Y4 j  v6 P3 }, i7 w, o5 |4 Z
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ( N3 i9 Q0 y* b- b! d0 [& s

  310. - @$ p2 n0 ^2 K4 D
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    8 a. ~3 u' G) e, y& L" @7 Z4 @# l; W0 e
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"* j  o  z7 e! E& a' D. Q3 |0 K
  313. 0 E& u& h/ j. O- Z! Y
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK5 z% h  E4 J1 E9 {% P
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    $ _( {3 Z2 a4 \3 o+ E7 k) t' V0 M

  316. & I1 r) ]8 {4 b. [
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK9 e5 I4 F& i3 {7 z
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ' w4 X2 h, z% b0 v1 y" }# o9 [
  319. ! n+ `& N! R) R, |, r, f
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    / A# w7 C# o" G4 n+ E: p
  321. .ORG $D400
    ! Q" _0 b. j, ~' J4 O$ ?# u
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    . W9 A0 t0 Z2 A; W4 f

  323. 3 S: ?: G0 S, R8 |
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    0 O1 `9 l  v* j8 U. |8 H! E) r5 E
  325. .ORG $D800
    + y7 C: H9 i9 C+ k, A2 P
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"7 [* K& ]" \8 h: {; c# [9 b
  327. 9 h4 K- g- V1 k7 Y5 q' y. @

  328. / \% Z. W4 A' |2 n2 E& v
  329. .ELSE. v  v" \% L( G

  330. ' A& ^# `) Y) Z6 C5 r' s% \/ S$ q
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
      l( ?% M, L3 E/ K! l, K$ u
  332. .ORG $9000( O, s1 W% T- t, u  b- l; s( Y
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    * s+ y2 M6 Z# L

  334. % ]8 u6 m9 d/ D' D8 n+ m: N% I# {
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK7 p6 I7 a, O% [7 D: l  {
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"( L, Y2 G: Q* z

  337. 6 ?% f+ ^6 A6 |6 r3 m7 E9 T; s6 z
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK6 i& {0 P8 x# K$ `8 _( J; i# S
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    6 `2 C* |  `. f; d

  340. & d) k1 f3 Y) r( A$ Q
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK- Z" u' k: Q& M6 N; p+ A
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"  U' r$ S2 }0 X, D) T. F2 c
  343. 1 v* j: v0 V' H. J
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK$ ?( ?% P) |; P6 h# j
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    ( e, h# R- N% z9 m
  346. 8 Z5 o$ P* @4 Q; X9 c# Z2 M
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK3 b  C' t' C) [* E$ f0 g+ M
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank") r) y% I9 e( H. u) [* ?
  349.   X) Y3 X! m8 W6 L3 J9 T
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    * g: v2 M2 y$ j5 P
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"& ~. i  `& @% ~8 K9 N+ b7 R

  352. 8 {: ~+ ]" I; J5 m# D# U
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK4 h3 U& H  p* o) I6 Y1 K
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    , V. l4 X2 u6 H8 @& I

  355. * W2 u. o, v5 ?. U
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    5 Y  I4 D$ }, _+ L) K
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"5 Q/ v% z" w7 T. ^! d+ f

  358. / h1 h4 \6 T( W0 w4 I5 r
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    3 \! z1 a3 r6 h# z4 b
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    4 H5 w& |6 X9 M7 C' k  @

  361. # w" j3 i7 O( [) Z6 ]9 h7 z! H( j
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    . \! T. D  ~9 a" G3 N1 q
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    ! t6 N2 A+ @) A8 S/ B( I+ l$ v

  364. $ m" ^1 R' Z8 O& L
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK) H9 t/ ~1 _+ J9 m
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    + K# t6 j4 T& v

  367. 1 H9 Y, ^. l, ]! X8 c, v
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK0 E9 Y  c) L( o' z: d4 b8 k( ?
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"! u- B/ ?& S1 F1 K; X+ g" t

  370. % |! v- u/ E; D7 h* w( i
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK+ T# f7 S( `/ S8 n& A1 y
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    ' i: `# _" \0 |1 W
  373. 5 K2 {' q8 K0 k$ n4 d1 m( Q# w- F
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK+ U8 L, X2 j8 V( h0 D
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank", _4 ~3 U! ~; _; S8 u3 Y

  376. # Y& {4 p( f* r; s7 ^
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK" |. o6 A, `0 I  T1 {% |6 U
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    - ~/ h- |  E* q( [/ D1 u0 l. Z0 h

  379. + M& U$ H' }7 T, H1 v
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK; K( h$ K. D& x$ ~
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"" D; M  R( \( s- u5 n' [

  382. # Y" }6 [! @) }) S5 i$ N- V
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ! g8 I' D% P5 L- E! i
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    . E( d. R( G% I# X
  385. 4 `' {/ s5 `- \! t
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK) L+ C4 U- J7 l2 ~; F* v" s0 a+ c' k
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"; a8 X" i' j. M3 ^* ]6 B" Z# u
  388. 0 r& y5 O( S7 ?9 S( J" j
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    ! [! f7 ?  s  d% Y
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    0 [  L( U0 e! R5 M3 L, d0 u. @

  391. ' V, n+ D) v; J7 _9 n: K
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK& q3 V3 P  c2 v4 K5 l' [$ a. U3 m
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"9 t6 w7 B. A0 S1 {5 L. |/ d
  394. & b% p& T7 t% h7 ^/ E; W& z' z/ x
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK9 W- x3 a( b0 D) {' L5 G7 i
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    . ?' M2 F" g  t

  397. ; m: ]0 F5 L- W+ W5 T
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK% x2 I* F+ F. @& z6 B- c0 I  M
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"% h# D; {; }2 S$ j

  400. & K1 h6 z! f4 s3 U4 i8 q
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK" V) a0 b% y6 C; N2 e
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"; I- J' \2 i7 s, ~+ Z) c2 ?
  403. ' b  H3 ^2 {" v7 M7 _1 g( M- B: f0 O
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
      R& _, u+ w6 ?  ~
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    / v6 W$ M2 U8 J, }. W( _# i% m

  406. , D% a7 G/ \: I' E6 ]
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    5 @0 E" d# W: p$ _# J9 K
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"+ E- W3 F$ L/ |# G% ~6 }9 v

  409. $ ~$ `, O, J- {9 x3 m: O
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK* m2 Z$ P* H7 B  j. O# K0 @
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"( L- G: v, X" g! h0 [
  412. : U- U; i) l2 Y) ?3 w2 w# e* k
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    2 W8 _8 {1 I- y
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    # \+ M1 f9 @- H" x% W3 [
  415. ! h! E$ n' t% x1 y9 K( Y% z
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 `. w0 D% s/ I- N7 g: a
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"% V: P9 k5 F' u' D: R& s) }  z2 A

  418. 3 f! P7 |0 H  [7 d! H
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    0 X1 d1 H4 n2 G/ T
  420. .ORG $D400( g8 E4 q! s3 q* V: ?  b
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    5 U0 J$ P' i- V
  422. % R' r1 z* m; ^1 K1 z
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    . [& O6 H  }& e& M1 S. R9 @) D) T! V
  424. .ORG $D800
    7 P9 a7 H. ?2 K( V! J+ o
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"2 E& H$ n% A9 ~
  426. : |5 r! j9 J1 J1 F, q
  427. .ENDIF
    2 l6 Q5 y8 }( m" O* Q
  428. , S& Q6 H/ \6 q' H# r
  429. ;CHR图形数据
    " x7 y  t2 {( h/ a9 |
  430. ;======================================================================
    5 e7 d7 @( I  }1 c3 p9 i0 x0 ?6 _
  431. .BANK CHR_DATA_BANK+ h* j" u+ ~1 F  Y5 w- t
  432. .INCBIN "chr_bank/chr_data.chr"
    ! B) p1 U8 W5 ?$ i* Z: V# v' j1 v

  433. 6 h3 m* v9 ?5 S, j
  434. ;======================================================================- ]- q( Y* {$ d. [% c: B4 y
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    ) ^. N% s/ }$ T( c
  436. .ORG PROGRAM_ADDR
    , g7 e, s# y. `2 B* f# f6 I
  437. & B% l& @3 P) H0 P  w( {0 `
  438. ;==================================================
    * ~2 {0 k* E1 e1 M, c
  439. NmiProcess( L# }# M+ R9 o3 d, s7 ~) J
  440. . S4 i' S9 g- J& q
  441. ;关闭屏幕控制( x4 ^' I# J( W! `
  442. LDA #$007 H7 c! o+ V! B7 W
  443. STA PPU_CTRL
    " {2 J- J0 k6 E+ _  j1 [0 m7 o

  444.   M( B8 a6 T5 a! ?  j, [: q
  445. ;没播放音乐就不需要触发IRQ" u- n# i2 `6 Y$ l
  446. LDA <Music_Stop_State
    : V- V5 e3 {9 X% c$ J
  447. BNE NmiNormal, q* Z2 l2 h: p5 P% v

  448. . h$ v% l& t# B- f: g
  449. ;重置IRQ索引+ H$ A: ~" k6 [; z2 {. H
  450. LDA #$00
    % z2 C9 I( r0 s
  451. STA <IRQ_Process_Index
    % G+ n: j+ @# D- D6 |- I
  452. 0 t7 J/ S3 {. {+ n' [( Y& h- u
  453. ;时间秒数为空则跳过
    8 T+ Q. j6 \0 w. @: j3 @1 C
  454. LDA <Time_H
    ( l# L( |4 b/ p( M' h' a
  455. ORA <Time_M* m  C* [) ]1 n3 K) ^9 a3 F
  456. ORA <Time_S
    ) V0 X- e' W. z) ~' R) I$ V  Z, R
  457. BEQ EnableFirstIrq
    * A1 Q$ Y  R8 i
  458. & C- z4 _2 o) }7 i! C, Y
  459. INC <Scroll_H1 z$ F- {8 K: Q0 P+ _' V3 q& H

  460. 2 v( f3 I8 o' e* Z) o5 W, m4 ~
  461. EnableFirstIrq + v4 k2 y% W; Z$ A
  462. ;80条扫描线后触发IRQ
    " c& a3 R+ a: U3 b9 m# z% v% U
  463. LDA #IRQ_SCANLINE3 U. w5 V3 ]! M( I* K+ K
  464. STA MMC3_IRQ_LATCH) P$ b: |$ f1 Q
  465. STA MMC3_IRQ_RELOAD; T1 X/ `; m  u8 q
  466. STA MMC3_IRQ_ENABLE
    1 @  X" b% j2 }
  467. CLI2 H) G6 r1 U! x- }5 x7 ~

  468. ' }* F' i6 t- {: n$ O/ J
  469. NmiNormal
    & D) ]& g' B; Q2 r- a2 p& i

  470. 8 ]. [+ g# h5 e# A
  471. ;处理PPU图像
    % S0 R7 [* B2 J
  472. JSR PPU_Proc$ R' ^& C" D0 C* n: q
  473. 5 _+ x3 V. h# W4 b1 o" t4 c
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)) P% {6 Z9 ^4 g4 H; L( Y  ~
  475. LDA PPU_STATUS
    ( }) q7 C# ?6 I& j, J
  476. ;LDA #$00
    ; ^) _/ U. o& \# O" Y
  477. ;STA PPU_OAM_ADDR7 X# y# {; x# r% Y% g$ _( Q
  478. LDA #OAM_TEMP_ADDR / $0100
    " r  Q4 w% p/ t' ]! |
  479. STA OAM_DMA  S7 P% e4 f3 t

  480. + P; P$ n" p; X
  481. ;启用NMI中断
    , C7 r$ F8 b+ v" f
  482. LDA Screen_Ctrl
    ( X3 ~& W: [( Q: H- ^
  483. STA PPU_CTRL1 x+ n; k; G$ E0 d
  484.   X# X6 [: r2 E. b9 j1 K
  485. LDA <Text_Disable_Flag# i8 \/ F4 f7 w5 H& h5 h5 S8 w# E
  486. AND #TEXT_DISABLE_RAM
    ) w4 H/ W& M* P; }6 N6 Z
  487. BNE Nmi_Sound_Play
    ' o( \, o! ~; D2 X. S' u3 b

  488. 8 \! y) i6 R/ c) O. k
  489. ;处理手柄输入
    * g6 o3 D" q  Y/ B8 y4 D
  490. JSR Key_Proc
    / G+ r5 S7 M$ B& l
  491. 4 m# z* y) f# y5 v* N2 l. \  m6 m: H
  492. ;切换音乐(手柄触发)
    ; i: u9 g) S  j; e
  493. LDA <Time_Wait_Cnt
    ) b1 J6 [3 G1 m6 X/ c! W; ~+ H
  494. BNE Nmi_Cursor_Arrow
    * z+ Z1 f2 C. |" J9 M9 \: r. a
  495. JSR Change_Select_Item
    5 w$ Y& w' @+ N1 s
  496. 4 v3 p( c8 r5 v, q
  497. Nmi_Cursor_Arrow
    % R# h: h( u  t  z. V

  498. 8 }* M6 ^* W6 ]+ G( D, `
  499. ;处理光标箭头; O0 U  `6 k/ h+ z
  500. JSR Show_Arrow
    0 ~7 ]' q. n% Y* s2 `$ |6 a
  501. 2 J1 }, z$ r/ F2 F
  502. ;更新调色板1 I+ M3 ~3 ^7 W. O" |9 @
  503. JSR Update_Palette_Data
    : K+ c; V& ?, ]9 a1 U! i

  504. % O' |( g4 I) o
  505. ;显示时间(缓冲)
    3 I& t: G9 F8 M/ d  X
  506. JSR Time_Show
    3 {* E( l+ t9 t& E0 D6 |
  507. 4 I; n- i9 ^" B6 O7 W6 c
  508. ;音乐显示(缓冲)3 [! G1 ~" x% m( L
  509. .IF SOUND_BAR_SHOW_ENABLE
    " ?; x/ ~9 D1 ?6 Q  B5 T5 S
  510. JSR Music_Vision5 A3 I9 k# u: b. d& t
  511. .ENDIF: `# T% P$ R0 e; Z$ `
  512. / V8 L! T7 E  M% J* f
  513. Nmi_Sound_Play7 R) z0 v- y, u: W4 ]3 M4 A% O
  514. ;播放声音  E) I! G) h  _% I/ b: ?& v
  515. LDA <Music_Stop_State: Q8 W1 Q7 u8 O0 Q8 `, e' g
  516. BNE Nmi_Time_Wait_Set4 {3 b7 R% u6 x3 E. C' w
  517. JSR Sound_Play_Proc
    3 B$ G% S& B/ D* g
  518. + m# P! L+ M& @( p
  519. ;播放计时/ `, F1 K; ~6 V: P* f
  520. JSR Time_Count6 x. Q* n' B  ]' w
  521. : E7 v/ ~0 J0 v8 b
  522. Nmi_Time_Wait_Set
    8 X% j( d$ Z& o7 w8 c. K  y3 w
  523. LDA <Time_Wait_Cnt  L7 {/ V) X! T7 p; k2 T
  524. BEQ NmiNormalProcessEnd( a; X3 U# j! {7 s! _3 l
  525. DEC <Time_Wait_Cnt
    : C3 V  }7 a% p. g, k
  526. NmiNormalProcessEnd
    , C; m& n" ^9 ]% `

  527. 6 y5 @# i1 g' W' g2 S# D
  528. INC <Nmi_Time_Count
    & @( E' ?, C% Z& `+ q4 M
  529. * \  G; k* r  D. q
  530. RTS5 y1 o" v8 k: t) W  d8 a( c/ D

  531. ; Z7 Z* _9 c" T" D
  532. ;==================================================
    4 E, l) ]- D& {( q  D! `3 |5 g
  533. Init_MMC36 S2 B! ?: e/ X8 K: @: g
  534. ;==============================6 t8 s" }7 c7 d2 B
  535. ;禁用IRQ3 v& N  }5 ]% x1 G1 F6 @: c3 s
  536. STA MMC3_IRQ_DISABLE' [/ z+ O$ j7 w& m( |2 F6 O
  537. # [3 w; B# V$ G6 i, U* O6 B: {7 t- A
  538. ;水平镜像
      ^( X  t7 Q) \" K5 R* z
  539. LDA #$01
    ' Q) ?# d& O( t( q
  540. STA MMC3_MIRRORING
    9 P( C) Q7 Z, D

  541. $ O2 G% l$ Z) \+ |' e1 n$ t
  542. ;初始化图形bank
    $ z5 b  x0 F! @% Q; L% u  V# _0 J
  543. JSR Init_MMC3_Chr_Bank6 \$ K5 F- C' o5 |4 v. G7 w; d: [* l
  544. : R+ K( g9 ]" B1 G* e% G
  545. RTS- G; c& F+ ?; [5 j$ i8 K
  546. ;==================================================" u" U! O" E- Y& F2 c+ _) \
  547. ProgramBegin;主程序9 _" C# ^/ J# i- X' z
  548. LDA #$00
    # N5 M. p4 D' ~/ z
  549. STA PPU_CTRL8 Q; x) c( ?* f2 E& a4 e8 n) b
  550. LDA #$00* L6 B2 e) p8 F3 w8 L+ j" n
  551. STA PPU_STATUS4 I- n/ [4 W8 z( t  z8 @2 ~% ]
  552. STA PPU_MASK
    + {: z' T; H; u
  553. STA JOY2_FRAME
    ; |, ?1 H4 R8 t- O& ^
  554. 2 `7 f( t3 N- |  X' W
  555. STA PPU_SCROLL: j2 h6 p8 N, w4 k+ v
  556. STA PPU_SCROLL, i+ e0 R- m. a  F) ]
  557. : @- K1 {) R# r; C8 t( U0 \4 X
  558. ;==================================================5 J1 r4 G, v0 O* x
  559. LDX #$FF
    " I4 ~6 d2 J: g& f8 d; F' l
  560. TXS# ~; A0 ?5 F. S& [3 ~+ b" L
  561. ; A+ z2 @0 N1 g$ l0 S
  562. JSR Init_MMC3
    / v! k2 u1 }8 ^- j: I
  563.   x$ W& Q3 q4 y8 ^5 e; v$ F
  564. LDX #$02. y; |- L$ t0 B  B9 |2 R" e
  565. Check1& g$ R+ |: G8 x; A" ~  Q* w- f
  566. BIT PPU_STATUS! p2 K- |0 D' [3 x8 r9 i1 c
  567. BPL Check1
    * ^( {7 q; \) |* _2 ]8 H3 A% l
  568. Check2$ A! Z: C8 e& s4 y7 J8 B+ }1 t
  569. BIT PPU_STATUS
    * A+ O9 ?0 f1 ?  {/ ?' e
  570. BMI Check2( C5 E& I6 @  B3 i
  571. 4 s( _* a1 g# V( B9 Q8 e
  572. LDA #$0F8 U8 K, _+ E* h. }+ v
  573. STA APU_STATUS
    5 d" G( ~1 E8 n# y
  574. LDA #$C0
    + o, F; Z: Z; Y) w& Z1 o
  575. STA JOY2_FRAME
    2 r# n1 x4 I! W9 n8 |

  576. ' X( a/ Z# ]% @6 C& E' F& m% k
  577. LDA PPU_STATUS
    2 f9 D4 A" _7 T, c5 M! T2 ]! M+ }8 [8 G
  578. LDA #$10
    $ {3 |$ ]+ c0 }( }% D) l
  579. TAX
    3 |% l& Z& g- T. R# N& _
  580. Check35 Z. h3 R0 w8 }/ w6 V' t7 a
  581. STA PPU_ADDRESS
      |  s+ F- N; a
  582. STA PPU_ADDRESS% u2 u" q; O4 p: O& b
  583. EOR #$00, k. l1 w. E& f: g
  584. DEX
    ' h6 g% J. c# `; T8 n% b: Z' Q4 z$ w( A
  585. BNE Check3$ r7 h4 J9 f+ i+ L& p  E
  586. ;==============================
    % Q! T; x7 r+ s
  587. ;调色板清空4 R! U. Z& I7 i2 _7 s
  588. LDA PPU_STATUS
    7 e& a: U7 g8 q# T3 n
  589. LDA #$3F
    $ |  B; Z& }/ {# z) G1 Y
  590. STA PPU_ADDRESS3 t% D& t$ {3 o6 D& Z' v: n
  591. LDA #$002 e0 _+ W$ K. a
  592. STA PPU_ADDRESS, K; Q. l' R* }( |+ D  M
  593. LDA #$0F
    5 C8 `9 J! t  W- p$ e
  594. Palette_Clear2 F6 S0 _2 Y* \1 o  ?8 ^
  595. STA PPU_DATA
    2 g5 x* q' E# Z' B
  596. INX
    0 M6 a; s! F; O# _0 |# V; z
  597. CPX #$20
    ; d7 r( Y8 }- Z
  598. BCC Palette_Clear' S0 x5 [2 q4 m1 w5 D7 w/ F5 Y& P
  599. LDA #$002 q6 s( p, O! h
  600. STA APU_STATUS
    + s8 O1 `$ d- a+ _' ^) U

  601. + t: M7 j7 w1 M0 h4 b, X# [% r
  602. ;==============================' }" T& C4 {4 R# M* }) w, G
  603. ;RAM初始化
    ! B) y. m+ t$ N: v, l
  604. RAM_Clear_All
    / ]1 l" \& k/ i( E8 M( D
  605. LDY #$00$ g' T. b6 g7 z# p" b/ s
  606. LDX #$08
    + u+ Y) T2 P% E* o. u% Y; v2 d
  607. LDA #$00
    ' S; C2 |8 p; D2 q: p& W+ V2 y6 Y
  608. STA <$00
    " O! n2 b4 U) G& w" ~# x4 l% S5 W- T
  609. STA <$01
    $ S! f( u! |/ L9 U5 C
  610. RAM_Clear_All_Start7 ~' J0 A; x/ r+ N; J
  611. STA [$00],Y
    3 z5 m% R6 P7 \  R# U( _8 F
  612. INY- w8 o) M) X- j& e/ \
  613. BNE RAM_Clear_All_Start0 n( z7 ?  y; }8 X5 m" n2 E1 c9 l
  614. INC <$01
      H9 z- Z' B) ^7 m: ~
  615. DEX% I6 N5 d# G3 {. g) T% i. y: ?
  616. BNE RAM_Clear_All_Start
    ) }- `* D$ y; B8 `8 Q& d! C6 s0 s
  617. " p  J+ z, ?2 u9 A: ~$ S* H
  618. JSR VramClear
    2 B1 H' |& ]2 p$ x8 D( E; E+ r
  619. JSR VramInit5 `) n' N6 I' s6 f6 j
  620. JSR OAM_Ram_Init  \% P: i" E  p% q( Z& F
  621. JSR Init_Palette_Addr7 b# |2 r' a" U2 x1 T# o5 N% ]

  622. # M- l( \; p1 _* x% \
  623. LDA #$FF8 E8 {& @! z" V+ ~
  624. STA Use_Ram_End0 F9 H0 A4 @8 D0 ^
  625. ;==============================9 B/ N0 @# N; Y5 N* i7 q- O/ y
  626. ;初始化背景调色板
    / }% R7 g0 G) c
  627. JSR Set_Palette_Color
    $ {  \4 P* O& ^7 S8 L3 u0 N7 d  `. O8 Y
  628. JSR Set_NameTable_Attributes
    2 z* l5 Z& ]: Y  a

  629. ' A: y1 }  k' t" l
  630. LDA #$005 g" `' O  H: k
  631. STA PPU_OAM_ADDR/ c9 c: W7 l  |. o: G- R7 n& g2 e
  632. LDA #OAM_TEMP_ADDR / $01002 F% M% d$ p' Q: E6 y9 C/ ?) L3 W, N
  633. STA OAM_DMA
    , \, |: F  v& W& _9 Z+ y% c
  634. " x6 M5 [* R4 N; L5 U
  635. JSR Sound_Reset_Proc+ K  z( H6 L* ^( M. m
  636. JSR Set_Sound_Total& l" ~- J8 m1 O  K# a. [

  637. . q$ K: L4 a, r  K
  638. Init_Start_Music) g8 Z/ E* j3 E/ c8 O5 A
  639. LDX #$00
    ' L6 c# s% N$ g# S0 ~" I" R! G6 j
  640. Init_Start_Music_Write& w8 p6 W5 P( l8 Z1 _0 b
  641. LDA Sound_Start_Port,X! }* X( ]( f; D5 D7 Q6 `- D
  642. STA <Music_Cur,X+ y( s5 d7 t. w6 v. W, ~7 ?! O
  643. INX" q; U4 B$ Q- r$ I6 {3 K1 a7 N
  644. CPX #ITEM_MAX_SIZE
    " |8 d  j1 R# x" K
  645. BCC Init_Start_Music_Write
    . z! O) r( Y+ t* P$ v; d  ]
  646. * r* O& b1 Z5 T  n0 x) d- B) u/ t
  647. JSR Show_Music_Text- V3 h1 R- p" J
  648. : B" f1 \8 \7 ~3 x. o
  649. .IF SOUND_BAR_SHOW_ENABLE- X: t# e( ]4 ^
  650. JSR Sound_Bar_Text_Set
    7 ]+ n0 ^# M; ~$ t- W" v# O
  651. .ENDIF
    7 V; ?" O" H6 u9 ?; r
  652. 0 J4 @% @& T1 w4 y6 |  o. I  \- o
  653. .IF Track_Name_Pos' u  A5 Q6 j$ p1 E& u' j
  654. JSR Show_Track_Info* ]$ P5 w- o3 T- h. W+ L- n: V
  655. .ENDIF, o2 z( a/ P$ s, Q7 b

  656. $ n9 t2 j: O  w( }. G. A! }
  657. JSR PPU_Proc" |' n3 [3 G8 k. H. G% _; B

  658. ' y# p$ e4 J% j1 h; B& V
  659. ;==================================================
    - e+ g7 X" s, b8 X
  660. ;音乐bank初始化
    . E8 w5 ~& v: g9 X: L0 w& k
  661. JSR Init_Sound_Bank* d$ {) a, M& P6 ?& p/ _0 T
  662. , F% e1 {8 O2 n; R+ t* w9 l
  663. JSR Music_Show9 }) \! n9 G" B  V. I! e
  664. JSR Time_Show
    1 ^% B1 Y0 e5 e1 \
  665. JSR Music_State_Show$ z1 i; E* |- ]. O( v
  666. JSR Time_Delay
    ) {6 d8 }$ {+ n- v, e! b4 y

  667. 2 i: Q2 l! \; T9 Z0 U$ O8 |& b
  668. LDA #$01! O( F+ `! u7 ]4 A, Z+ c
  669. STA <Music_Stop_State
    ) R0 L  H& V7 H! [; X

  670. - W  i6 s3 m' G- m; ]8 \# I
  671. LDA #$88
    / B) g1 N; I+ Q, n, w
  672. STA Screen_Ctrl( X! C1 f) ]7 c& z9 s  r
  673. STA PPU_CTRL! Y. g# L0 [8 C- |* w
  674. " x' D) {' y: n% \& {6 q
  675. JSR Show_Page_Text
    " p: {1 l' r: W
  676. 3 h9 s8 S+ Q" l
  677. LDA #$10: Y+ k( l4 ]# b8 [$ P
  678. STA <Time_Wait_Cnt5 ]! _* A8 {4 G% K5 d; o( P- r5 d
  679.   q5 X2 Y+ i% u# ~
  680. Wait_Time_Over
    ! F+ g# O. F' x- Y/ ?# t! @
  681. LDA <Time_Wait_Cnt+ W) }  Z, h4 A' |6 J
  682. BNE Wait_Time_Over( x9 Y( s& e) n3 z- c: W. [
  683.   H& c  v7 i& s( x, x6 a
  684. JSR Show_Arrow
    $ J0 O+ t+ v) n5 p( d0 M: |, K
  685. LDA #OAM_TEMP_ADDR / $0100: {1 c4 n! [: a8 X: t
  686. STA OAM_DMA
    2 s+ N% S. Q1 }/ O2 d

  687. % c: f" h3 b) h7 l8 K. s7 A
  688. LDA #$1E
    * P7 A3 U$ a, B& Y- Y) y
  689. STA Screen_State) L. T3 u3 a# s, J& k) Q
  690. 3 f: q1 p  h& Y0 f
  691. LDX <Music_Item_Cur5 [3 f3 {7 G( r7 h
  692. LDA <Music_Cur,X
    0 }( d  i4 e- v8 Q: ?1 r
  693. JSR Sound_Init_Proc
    - I& h( I5 v1 A7 I; S3 C

  694. 2 o1 v  w9 o( |( a
  695. CLI8 q# H" M% `/ g2 Y
  696. JMP MainLoop
    # Q# z9 |7 t0 a
  697. + X) a; F' c$ V$ X  q
  698. ;==============================
    ' Y/ i. D+ }7 a
  699. Time_Delay;延时等待
    6 n# C. U1 S7 Q& @2 S( T' z- W
  700. LDA PPU_STATUS
    ; f7 @2 [2 R2 S$ s
  701. BPL Time_Delay
    5 q+ x! ]5 O, D" z* i
  702. RTS
    9 h' m# U7 s& z& q7 N
  703. & H* g" w+ z/ X$ b9 O
  704. ;==============================
    # t- Z7 i% W, x0 {
  705. OAM_Ram_Init;初始化精灵内存
    , b- _8 l4 i! u
  706. LDX #$00
    , y0 ]" A9 j3 `1 a4 g
  707. OAM_Ram_Init_Write
    9 L3 ], e* c2 q8 U8 q* s
  708. LDA #$F8
    . \% J9 }* S0 E9 f
  709. STA OAM_TEMP_ADDR,X1 l8 R# U8 W7 d- ^/ M5 y8 |' C
  710. INX
    2 G9 D& Q) B1 l; _" _  \
  711. LDA #$F8; _) [2 `" e  y& d( ]" s
  712. STA OAM_TEMP_ADDR,X
    2 x) r& B$ U* b
  713. INX
      X; [6 @' g  ?! E/ t( q* l
  714. LDA #$00- E  e; n9 u* t5 u
  715. STA OAM_TEMP_ADDR,X
    - @4 H2 m8 Q$ n: W
  716. INX
    ) I0 ^1 a* v: l2 V+ c% y3 v
  717. LDA #$F8
    : n0 i% f( n9 s; ~  [
  718. STA OAM_TEMP_ADDR,X; c. G6 m) Z4 l$ j0 y- L
  719. INX$ H% C7 P/ ]4 H6 H: k* [( r; G
  720. BNE OAM_Ram_Init_Write
    * E( x5 t( c8 \0 b
  721. RTS
    # m6 G, D( i9 B3 F- @* h5 F
  722. ( X3 d# [$ k. u  W; Q" D5 N
  723. ;==============================
    9 q0 R% ^) u0 U3 h' T6 g2 O( Z
  724. VramClear;初始化图形内存) l: z. h; Y3 i% @4 s7 }
  725. LDA #$20
    " s% G; @0 l% z2 T- K# n( i
  726. STA PPU_ADDRESS* U- C3 d8 B& B* s
  727. LDA #$00
    & {8 O8 C. k4 C! F9 ]8 D
  728. STA PPU_ADDRESS4 S3 }- ]: z& A( k
  729. LDA #$00
    4 L3 ~' d1 i# c6 G5 \: B
  730. LDY #$008 M# x$ a4 y+ g$ e1 ?  k2 t$ n  ^
  731. LDX #$10
    & s2 J% U1 {$ M+ Q9 L3 x# W' L, z# s' e; ^
  732. VramClearWrite+ a3 P# P2 ]1 @0 O* H5 g0 q
  733. STA PPU_DATA
    ; l) R) v- X( I& W, W4 a8 t6 F8 x
  734. INY
    + t, ~: C; L0 Q. S
  735. BNE VramClearWrite+ ]  l6 E0 i6 I5 S( I) j1 i3 I
  736. DEX; I9 k5 \/ M1 s+ [' R; V
  737. BNE VramClearWrite
    ; \1 D* s; i/ `, h1 k
  738. RTS9 e' }9 w4 n( I; \0 i4 @/ [9 U
  739. 6 H% D( {. i9 y6 N) {' f
  740. ;==================================================' ?* s- a3 P6 s0 v+ d! L
  741. ;设置MMC3图像bank
    ' ?9 w# K! _5 j$ I( }
  742. Init_MMC3_Chr_Bank
    ; f3 I% ]* g: ]3 n
  743. LDX #$051 X5 `+ k' K) l' q% k' c
  744. Init_MMC3_Chr_Bank_Write; T: z2 f4 g; O' X/ v7 ?. b
  745. STX MMC3_BANK_CTRL
    8 o7 Q  g( R" c: t% U$ }
  746. LDA MMC3_Chr_Bank_Data,X5 p$ c0 r( Y5 a1 D1 b0 J
  747. STA MMC3_BANK_DATA
    & r; L7 M. |: d1 I. A$ z9 U5 x# m
  748. DEX. t: N) a" t' h! x( K/ Q! I
  749. BPL Init_MMC3_Chr_Bank_Write
    9 ^1 U# w3 X# _; m
  750. RTS
    / D  Q. g' A, ~
  751. ;--------------------------------------------------+ E% x( f8 p# O2 \9 Z( Q
  752. MMC3_Chr_Bank_Data3 }# w/ B& u) p! M7 W/ F
  753. .DB $00,$02,$04,$05,$06,$070 T, t8 W7 x4 R# {
  754. 8 b) o: J$ O9 \- I- v* R! m
  755. ;==============================
    ) K, N% Z0 P  N. d
  756. VramInit;初始化图形内存
    $ g( P6 x1 r+ J5 `, X
  757. .IF CHR_RAM_ENABLE! [5 x% R; L* w, J' Y/ J) A
  758. LDA #CHR_DATA_BANK0 d( G5 v+ d$ H+ U7 C6 ]! y. Q5 p; \
  759. JSR Switch_Bank_A000: ], D4 X2 k* ^
  760. LDA #LOW(CHR_DATA_ADDR): ?, B. M1 W5 b: o8 I$ C1 |* M
  761. STA <Data_L
    ) Z9 U& |! g) C0 H  l
  762. LDA #HIGH(CHR_DATA_ADDR)* ?8 q# O8 G# T( Y9 q# e) Q. n1 B
  763. STA <Data_H
    8 H4 J4 {7 \/ H! M1 F
  764. LDY #$00
    ! _3 ?# _0 ]; ]4 E3 w3 y
  765. LDX #$20& h5 |: K* T" M8 f
  766. LDA #$002 ]' g$ C& y" N2 n1 u* m7 Y
  767. STA PPU_ADDRESS3 M9 q- M8 U! {0 |, h; W
  768. STA PPU_ADDRESS4 K8 }$ n/ E! H' s1 _! r
  769. VramInitWrite
    / W4 B$ W4 u! C
  770. LDA [Data_L],Y
    , `) w3 `/ P. o; f
  771. STA PPU_DATA
    * d7 T' v2 v. e. ^8 @
  772. INY
    : ]% H3 D$ h) i  r3 [5 w  }6 i
  773. BNE VramInitWrite
    ) N5 q" ^- A" h* l, {  H- y% q
  774. INC <Data_H! p6 H% H  |# D
  775. DEX" U; _: n5 _* X, ~
  776. BNE VramInitWrite4 b1 V5 e# R' |# m4 }) U3 ~
  777. .ENDIF( Y$ D  e$ ~9 ~' i" l
  778. RTS. Q/ |: H) |& D; W! b

  779. % j+ O8 J6 ^/ K4 t  c
  780. ;==============================% Z- d" {, F' X1 H9 F1 a( U
  781. ;音乐切换" a! A7 |7 M; W9 J' ~5 K4 v/ f$ \- ^
  782. Music_Play_Change5 c+ X+ V8 ^1 @7 I* v
  783. LDA <Key_Once
    / X# J* {* _2 D# b8 }: Y
  784. AND #$FF/ S8 Z1 h! `* V
  785. BEQ Music_Play_Change_Check
    , ~* r! g+ L+ h0 s

  786. ! p* E9 `- ~+ ~
  787. ;禁用音乐条刷新
    5 R, }' N/ G# j, O, n$ Q! ]! }
  788. LDA <Text_Disable_Flag
    / T* z8 H0 [& ?3 ^0 U( O3 q
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    : F/ ], P8 p$ X# K$ |  W& Y3 \
  790. STA <Text_Disable_Flag
    & \: m  P( E0 a2 z6 t# _$ ~% N

  791. 4 b% A0 Q2 f+ E: |
  792. Music_Play_Change_Check
    4 ]' i9 F3 }6 d
  793. Music_arrow
    & E  `9 L3 W8 x, `: i" Y
  794. LDA <Key_Once% w0 j2 d- I  }
  795. AND #$0F
    " H5 E4 C. \1 w" o% N- R
  796. BEQ Music_Play_Change_End
    * O! W; p  `" D" W& _) Y( {7 S/ L
  797. JSR Music_Track_Change$ B$ U/ @( D3 q7 W! L/ {
  798. JSR Sound_Reset_Proc) I$ _8 }9 ?! G
  799. JSR Music_Show
    * r; u3 e* T9 b, v, T/ b
  800. Music_Play_Change_End( j, i  L, ^$ z; F& p* e
  801. RTS
    4 N4 K9 f# s) Q" m

  802. 9 y1 J0 C! f% {- r- D
  803. ;==============================6 `5 {, }% B5 y
  804. ;音乐曲目切换" s' K6 L* i# Y& P0 J2 i/ g6 A
  805. Music_Track_Change( L1 E! o+ L, @5 \, n
  806. LDX <Music_Item_Cur5 r: t) K0 y* l- J( K) I. E
  807. LDA <Music_Cur,X
    , t6 c9 Q2 ~  v; r
  808. STA <Music_Last) \, C" |* J# }7 d" t/ {
  809. Music_Decrease
      ^) a* R+ p- ]; b& ?6 Y
  810. LDA <Key_Once
    ( `* i+ D! I- g5 c; M  C' j! f2 x' ?
  811. AND #$42
    # P" k. {5 k1 r/ _9 u5 j  c
  812. BEQ Music_Increase/ y6 E/ S+ M% S: `
  813. LDA <Music_Cur,X
    + J) ?0 V) S! y& ^1 H+ {1 h: M  l3 L
  814. BEQ Music_Increase
    , b0 h# p5 H: }' E: q
  815. DEC <Music_Cur,X
    ; s1 e* [% ]5 c7 I5 ?9 g9 j
  816. Music_Increase3 _, k; U, {/ H3 ~1 C3 x$ n
  817. LDA <Key_Once7 `2 k8 c9 J/ ?6 @6 ^6 s2 J. a
  818. AND #$81" B. I. F: T7 v# e2 v+ I6 p# p* P
  819. BEQ Music_Decrease_10
    . [; P* _4 A* a& A! @/ |8 E0 Q* z
  820. JSR Set_Sound_Total
    0 X- i/ d% G8 H* W
  821. LDA <Music_Cur,X" c" A, U6 e' P$ x6 V& P5 x$ X
  822. CMP Music_Total& x/ E; |) @3 x, F
  823. BCS * + 4. s& T9 B! n  U( P& E
  824. INC <Music_Cur,X, j7 w# G9 |1 r5 K5 J1 V' F& I
  825. Music_Decrease_10$ K2 Z$ c) f( E3 ?
  826. LDA <Key_Once
      f/ u4 P1 r/ y9 D+ _5 O+ j9 A- p
  827. CMP #$048 X* A. G2 h( `
  828. BNE Music_Increase_10: N3 {5 t- _, c- o1 }
  829. LDA <Music_Cur,X
    " B8 I; L# ?* `  w. V) d8 J, `
  830. CMP #10
    , q, u% d- R3 x) f( f1 G
  831. BCC Music_Start_Song_Min
    # I8 f: p% ]; P( I' `! ^0 x
  832. LDA <Music_Cur,X7 S9 A3 T! S! f: c2 i
  833. SEC
    % S2 i5 ?1 ]' j/ b+ u4 V3 x2 t1 K
  834. SBC #10
    ( f! w) S+ U  W  ~' f
  835. STA <Music_Cur,X# x( X* u. P- W% @# n6 h. }& P8 T7 {
  836. LDA #$007 c9 p$ E# y+ a# b
  837. BEQ Music_Increase_10
    5 X4 G0 q7 B* W  B1 q: _
  838. Music_Start_Song_Min- _$ }1 g" q# u/ F9 H; x
  839. LDA #$00* P$ P% ?6 u; P/ F! d
  840. STA <Music_Cur,X$ K2 }7 w1 h/ h9 w  V6 g1 F: Y! D3 X
  841. Music_Increase_10
    " W" v. f' W+ ~3 h
  842. LDA <Key_Once
      i' K* z0 g: H0 H/ c" q
  843. CMP #$08- w* J" [* a- w; B5 z, v) v  _
  844. BNE Music_Track_Change_End
    % ~5 \% U' @# W. W0 Y
  845. LDA <Music_Cur,X8 Z5 }- ^* {! A) u* b* M0 T8 o1 Q+ y
  846. CLC
    8 l7 a, ^; ]& B. x0 I% f, `
  847. ADC #10" Z! `9 b; ]7 J+ Q0 h4 ^
  848. CMP Music_Total
    5 F! D4 G' e% i6 ^2 x* M
  849. BCS Music_Start_Song_Max
    ' K- l6 S1 r6 ]3 ^
  850. STA <Music_Cur,X
    , v4 I# v& g& p- Y
  851. LDA #00& M6 |# ]1 `* ?
  852. BEQ Music_Track_Change_End, R1 D3 M9 \4 m$ A1 F
  853. Music_Start_Song_Max
    ( y- e0 s7 V' ^! G5 r0 ~. N* Y
  854. LDA Music_Total4 g2 Z5 d" G" T' Y5 c8 Z
  855. STA <Music_Cur,X
    % O" v# `$ R% }
  856. Music_Track_Change_End
    . y4 ?5 T/ z% D1 K( O0 d
  857. RTS- C/ I4 F' n; e( x

  858.   a, g( y! \4 Y6 o- a# ~% B. m
  859. ;==============================8 R0 R' V$ ]9 n% j$ y
  860. ;按键处理
    - A2 d. s9 U3 w
  861. Key_Proc
    ; ?0 Q) A/ q; G; U+ b5 ?0 E
  862. JSR Key_Scan
    ( s7 L6 o* }" d
  863. LDA <Key_Keep
    5 i6 }, ?+ @+ y, i" H
  864. STA <Key_Temp1 V% W3 o1 n$ K2 \4 I
  865. JSR Key_Scan
    7 O' c; a  d, p+ }2 A- i( j+ L1 v6 o. j
  866. LDA <Key_Keep
    7 L+ {) I# h2 r9 f3 k+ Z
  867. CMP <Key_Temp
    / h) s0 j$ q4 R) m0 ?7 m3 {/ I
  868. BEQ Key_Get_Once
    ! \7 i# Z1 J" y3 @  ^
  869. LDA <Key_Kemp
    ; @3 ^0 M- D& O2 s8 B
  870. STA <Key_Keep
    , y( U( d- }" }& a( O+ N+ Q
  871. Key_Get_Once
    , Q* Z4 V9 B' c) r4 g. D
  872. TAY
    1 l- m5 F1 T" _# ?/ r% t+ c: g
  873. EOR Key_Kemp$ Q4 `/ \  {& J
  874. AND <Key_Keep
    : Y4 e& Z  S. f4 i1 ^7 o8 l# ?
  875. STA <Key_Once
    / W5 d1 S: |4 }
  876. STY <Key_Kemp
    / R* o) F/ t. z2 p$ W3 ~( R
  877. RTS4 O( A6 y* M) a3 P6 a
  878. ;------------------------------
    " J, q/ ]' s( ^, I/ I7 @
  879. ;按键扫描0 F5 p$ C8 v  o# X8 R- C
  880. Key_Scan3 {- B) y3 C9 @: u
  881. LDX #$01$ T' m9 a0 {/ P
  882. STX JOY1_FRAME
    ; {9 Q# j8 K2 t8 ^6 u4 i- Y8 V) {
  883. DEX  d+ d% ^0 O9 W0 U6 W
  884. STX JOY1_FRAME8 X! L% h& C! V% |3 g  j
  885. LDX #$08
    : v' O. f" r) O7 o4 c! V
  886. Key_Value
    ) Q5 l% F& a! ?
  887. LDA JOY1_FRAME
    3 \" U0 ]/ u6 Q& D! _7 R- l
  888. STA <Key_Getv9 s) L; ~! o) H; I7 w8 V, U" @4 R
  889. LSR A' y2 E' y! k$ x; }( l+ m7 `) Q
  890. ORA <Key_Getv
    & R4 W4 R8 u+ N3 b1 s' H3 V0 X1 K$ _
  891. LSR A# Z& r3 L5 y# s! h
  892. ROL <Key_Keep
    2 F' b5 x/ S+ `* m
  893. DEX0 x/ G8 Z& K" L& c4 k  W3 ]; X& [
  894. BNE Key_Value
    7 z4 v! S- f- S0 [, e& Z; }) i0 n
  895. RTS
    8 V, I) j3 w* M' ~! }

  896. % Z- a9 T# C7 c7 _) r& I
  897. ;==============================
    # r, ]! x/ Z* j$ ?, K( U
  898. .IF SOUND_BAR_SHOW_ENABLE% Z: ]4 K0 ?# b5 F1 l
  899. ;音乐条显示
    3 r7 F  G6 e$ d! o
  900. Music_Vision
    5 b) j$ |  _) |
  901. LDA <Text_Disable_Flag6 ?  C( k# V- @: |: t4 ^
  902. AND #TEXT_DISABLE_ITEM
    " N% @; k. [) F8 h1 d9 [
  903. BNE Music_Vision_End
    : ~8 c5 v; p  S' q* g( p" l; j
  904. AND #TEXT_DISABLE_BAR; `- r0 u3 ~, E, c+ k6 V" e
  905. BNE Music_Vision_Set
    9 b% @/ Z9 C. o
  906. LDX PPU_Cur
    / |3 \: n/ T. i; ]! z3 J, h& j% w
  907. JSR Music_Animation
    + K  f3 Z" o" h1 z4 }: N
  908. STX PPU_Cur  m$ w5 c% v3 u; ^# X
  909. Music_Vision_Set6 |: `6 I: |$ o& G
  910. LDA <Text_Disable_Flag0 g1 J7 o# z' C: {  j  p0 [
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ( W( w+ O" N. V
  912. STA <Text_Disable_Flag$ S  R8 M& T: Q7 x
  913. Music_Vision_End
    ' Q: w+ }- |8 g$ f; D% P- M8 T
  914. RTS5 W, b1 ]% y1 G: @! X$ b! |
  915. ;------------------------------
    # }2 H: _: E7 l9 s6 M
  916. ;音乐条显示处理9 c2 s$ f0 A1 o, d# K% G
  917. Music_Animation  I5 v! f1 p7 u# [4 I9 ~) s4 ~
  918. LDA #PPU_MODE_CNT_LINE
    " ^8 @( D+ z" `9 t9 i6 r
  919. STA PPU_Addr,X' r5 D* j3 o$ a
  920. INX& f+ |9 g1 S( T6 {( b& `
  921. LDA #HIGH(Sound_Bar_Pos)
    $ Q# a  T7 o$ r7 u& j) K
  922. STA PPU_Addr,X
    ' `* F- U- D% o  z5 O. M4 A) ~
  923. INX
    # V5 N) p& v- s3 s
  924. LDA #LOW(Sound_Bar_Pos)" A7 P5 }( K( D, x- D7 p) G
  925. STA PPU_Addr,X
    : k$ I8 B/ `) u  j4 U, U+ u2 R! r
  926. INX
    3 ~  M' d# }0 A3 p: e: j- Z7 V  {
  927. LDA #$08
    " U% p7 C# k1 s: l4 V
  928. STA PPU_Addr,X, F0 _& {1 H. C- \2 `4 x6 V
  929. INX. s/ ], u5 Q7 ^5 ?
  930. LDA Sound_Bar" A# a' C, D" u) i' Z* T% B! p
  931. JSR Volume_Convert
    7 O' M7 e. Y/ [  W# G. q+ C0 s3 r

  932. 6 p$ k4 V0 x3 j
  933. JSR Volume_Set_Cnt
    8 p, p" h& j+ x& V. N" |5 B- s  t$ V
  934. LDA Sound_Bar+$4( c0 C8 `; h2 C5 v5 T* r7 d! d/ f
  935. JSR Volume_Convert* K1 p  q9 ]+ Q
  936. ! l" i5 T5 o/ T6 q$ @  t4 j
  937. JSR Volume_Set_Cnt: E7 }8 w6 E; \! b5 d' P- O3 a
  938. LDA Sound_Bar+$84 ^% O  o: N2 B4 }; o1 r) u
  939. JSR Volume_Convert
    $ v6 J4 r' _+ ]: K, w- V" u

  940. : G: J0 G' b% I1 y
  941. JSR Volume_Set_Cnt, _3 R+ D3 o: T0 g6 C3 O
  942. LDA Sound_Bar+$C
    * d6 s" \, {8 p4 `: m0 I. \% W# k5 P
  943. JSR Volume_Convert# X5 A- A# E$ w9 T+ j2 o, C

  944. . |6 d5 c" N# N, J
  945. JSR Volume_Set_Cnt
    ' k' D- K4 A* [  J8 f; W$ z

  946.   Q  @, _% O( A" r4 ^0 h
  947. LDY #$10+ ?) [2 s! F9 ~
  948. LDA APU_STATUS) z: m/ I# D+ S
  949. AND #$10
    ) C/ b* l: R8 S9 T3 g  ]1 @* w' m
  950. BNE Volume_Count$ m0 H+ z& }7 n$ J% D
  951. LDY #$003 o/ M; V5 X9 w/ u: I
  952. BEQ Volume_Count
    . C2 @$ D/ l  u+ q* ]6 h& W; h
  953. 3 t2 e0 o2 n, e; C# @+ t
  954. ;------------------------------
    ) I" v( _5 b. c! `! j1 w: L( f% R
  955. ;音乐条处理
    0 K" D! x. Z& T! E
  956. Volume_Convert
    " }4 Y4 L0 ?# s, k' q3 D
  957. AND #$0F
    7 t. b4 N2 ?) J, j; H5 q3 U+ X# b
  958. TAY) f3 A$ m8 L" J
  959. Volume_Count5 m# E3 F7 X& e! t5 V3 y+ v
  960. LDA #$08
    . g/ ]% a; \& y* k, ~
  961. STA Sound_Bar_Cnt  o9 M& L. G6 G  P' Z5 h' \
  962. Volume_FILL
    ( K6 n$ g9 m- U% Y. d
  963. DEY
    7 k" C5 I# Z5 ^
  964. BEQ Volume_Half
    + `8 I+ u4 i6 v" c' ^
  965. BMI Volume_Empty2 R" c  ?/ V6 x( c
  966. DEY0 d: g8 A2 s" e+ z
  967. Volume_Full
    ' [% e& C# s8 Y2 P
  968. LDA #$16* \, q/ f6 _- q* p% K2 B$ X
  969. BNE Volume_PPU
    - D6 @1 e8 n* t$ N2 O  ~$ x2 C) N
  970. Volume_Half3 p! \8 R) I! l! ?2 D: ], }: m
  971. LDA #$155 I- l% X8 n% w& p9 ]
  972. BNE Volume_PPU+ F3 [% E& \8 n2 [( m$ T' j
  973. Volume_Empty7 |# u3 w( s" M
  974. LDA #$141 n: p; ^* U1 L7 l7 ]
  975. Volume_PPU+ A1 D* H% T2 U) S3 {2 x2 C
  976. STA PPU_Addr,X  W) @! W0 y  M
  977. INX( b  m! q  a( e/ S: o- P
  978. DEC Sound_Bar_Cnt
      D4 M" e, B' v5 A7 b
  979. BNE Volume_FILL" X' {7 X- [1 k
  980. RTS
    6 n7 L: a6 P& r( ]

  981. . G1 W6 S. `! r  X# q0 l5 j2 f
  982. Volume_Set_Cnt4 G8 P2 c- {& T7 Y" i6 U$ D3 v
  983. LDA #PPU_MODE_CNT_LINE_NEXT+ j# A. K; n* \) [: z* U: L4 F& n
  984. STA PPU_Addr,X
    : @1 ?& K& X1 B$ S
  985. INX. h7 T! A1 |* r) h9 |
  986. LDA #$08# E. U9 o. e& J' N  J
  987. STA PPU_Addr,X% `) N8 U4 z/ a0 Z
  988. INX2 S6 D3 Q$ ~& O: Z' N
  989. RTS& u8 D+ G3 C1 D/ h1 Y
  990. 4 h  R9 Y$ E0 V. ^1 k! E3 V
  991. .ENDIF' n, G: T6 H. g0 O0 T
  992. - T' o: c- ^0 l1 W
  993. ;==============================* l6 v4 ?. v1 e$ B- V3 q
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    6 m: u: T# @2 I8 C" D6 K
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式4 i- n! Q/ `/ j2 z% o
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除! k2 n8 n2 F5 E( L, h4 Z% C
  997. ;------------------------------% x$ c, T4 D4 E) a& q3 O" R* D7 W" `
  998. ;PPU处理
    $ [+ k; x# ]% f
  999. PPU_Proc
    - L. D0 b( I2 E
  1000. LDX PPU_Cur
    : o  S6 u& f+ b9 X0 Q* U5 @( F
  1001. LDA #$00& [% b! }( Q1 f) [( P3 |( I
  1002. STA PPU_Cur! @4 G+ H# ~/ y, X% b2 ^
  1003. STA PPU_Addr,X
    & @8 @- B! d/ I, P" |7 v
  1004. LDA PPU_Addr
    - g9 @( n% ]9 ~4 b/ k  r" D
  1005. BNE PPU_Proc_Beg
    + i6 ]. a3 H: m' h5 R7 S
  1006. PPU_Proc_Ret4 f8 b, N3 B) d! E' z
  1007. RTS
    0 O  P+ R; `2 _7 s; {
  1008. + J0 n: E( e2 M* Q5 y( g
  1009. ;------------------------------( g; X/ D3 L$ i  R! b% H
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    # f# i; z- V% Q1 P
  1011. INX
    * F# ^/ M$ M8 N9 b. P
  1012. LDA PPU_Addr_L9 ?" ~1 O" A! L$ @7 E
  1013. CLC
    # ^) j8 O- ]' @/ K! H
  1014. ADC #$200 c# Z8 Y0 ?% r, [# V& |7 W$ ]
  1015. STA PPU_Addr_L
    ' N5 S$ ?" W6 y. h; t) P
  1016. BCC PPU_Mode_Return_Cnt_End, e. F& M# s6 L( C, m
  1017. INC PPU_Addr_H
    ' R; w2 Z. V6 ?9 x5 v
  1018. PPU_Mode_Return_Cnt_End
    7 d) e" @* I" H7 E- o/ K5 Z
  1019. LDA PPU_Addr_H
    ! e$ u2 x) `, y' U# `6 t9 ~) k, T
  1020. STA PPU_ADDRESS; H5 L, b% t9 p) C
  1021. LDA PPU_Addr_L  I+ D9 S) n1 k' M) r  k/ q+ b0 J1 n
  1022. STA PPU_ADDRESS+ b! p- n( U. U
  1023. LDA PPU_Addr,X
    9 G7 n4 {+ I5 z$ N- r1 W5 H
  1024. TAY
    4 \  E: F9 t* x# J$ S- [+ {
  1025. PPU_Mode_Return_Cnt_Write" w* {0 n" S$ o" l
  1026. INX
    , e4 w5 ]- a4 w7 N/ j. c( Q
  1027. LDA PPU_Addr,X' r" n' A+ i1 h+ Y0 E7 B
  1028. STA PPU_DATA% Y8 Q5 g" f* P+ H, b
  1029. DEY# \8 }. l+ W  H3 i
  1030. BNE PPU_Mode_Return_Cnt_Write/ r) s) X' M; w! G! u" H( c# x
  1031. JMP PPU_Proc_End) u5 r4 Q/ @7 w
  1032. + T' @+ I: q8 S6 Q! O. _. m
  1033. ;------------------------------8 N3 G- h$ G! E( P2 a' W+ e" f
  1034. PPU_Proc_Beg  ;处理开始
    : U( v$ S6 B5 X% A" ~5 V
  1035. LDX #$000 n$ N# L; {: g. c6 u
  1036. STX PPU_MASK' d7 z. `& z  d& n' v, p8 g6 K
  1037. ;------------------------------
    " W1 n: _- B: E! h3 s' g! j0 r
  1038. PPU_Mode_Select  ;模式选择
    . c. F0 \3 O7 R8 v7 Z
  1039. LDA PPU_Addr,X; s' |( X, w2 G' O- K" V
  1040. CMP #PPU_MODE_CNT_CLEAR2 M# j: L. [8 {$ r5 l2 D" a
  1041. BEQ PPU_Proc_Clear
    . F  m% X2 r4 n
  1042. CMP #PPU_MODE_CNT_LINE
    1 p/ v& V  l: J2 A2 \5 [3 `
  1043. BEQ PPU_Proc_Cnt_Line
    & _# N( I2 h8 H6 H3 W
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    , m; \: K9 U5 G1 E, Q2 Z
  1045. BEQ PPU_Mode_Return_Cnt8 E- y( h* A" m: H( k1 _, e
  1046. JMP PPU_Proc_End_Write
    . u. H7 e9 @" O* i/ z
  1047. ;------------------------------7 g3 N* {, X( M. b8 c
  1048. PPU_Proc_End  ;单行写入结束
    + X7 t' w2 j' J8 U* \6 s9 s6 m
  1049. INX, }3 |7 m7 P4 J7 l5 y7 o6 ~
  1050. LDA PPU_Addr,X: V' h1 J8 f5 X# C% W; S+ e3 x6 @
  1051. BNE PPU_Mode_Select
    . F/ N# l4 \5 M9 }, P' \9 U$ v9 w
  1052. STA PPU_Addr
    8 T% O- t/ W, H9 p
  1053. JSR Update_Palette_Color
    - n; ?% ^+ [0 j" N# B
  1054. ' _3 F, r3 Q: t* g
  1055. PPU_Proc_End_Write
    6 W2 v$ A" d  G& l) z3 H
  1056. LDA #$00: M- |/ ]0 T% M8 B/ R5 u' F
  1057. STA PPU_ADDRESS+ J5 F* F' ~# y1 T
  1058. STA PPU_ADDRESS
    4 E- t- W3 ~0 `1 [
  1059. LDA <Text_Disable_Flag" m; D2 q1 J  [/ D
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    ! R; ~1 P! q+ F0 ?
  1061. STA <Text_Disable_Flag
    2 f3 s' y) f# g& y  Y* O
  1062. LDA #Scroll_X+ q9 j$ \7 b* D* R' |
  1063. STA PPU_SCROLL/ g' V( M) R% A
  1064. LDA #Scroll_Y2 q  ^* p# o6 O+ \- R0 b
  1065. STA PPU_SCROLL1 a0 t1 D& |" @* ~2 ~  Y$ e/ N
  1066. LDA Screen_State3 W  O, I% H2 w5 C% F, l' R
  1067. STA PPU_MASK4 K5 d/ @* p% Y8 C! r% D$ w' j5 _
  1068. RTS/ q, }+ f" S( u" F0 W

  1069. % ?2 B; k# o2 c: t' l# A
  1070. PPU_Proc_Clear2 N$ {' |) y+ T4 j# q$ g
  1071. INX0 Q) n: E/ c5 _) g& }+ l' Y/ Z; g- L
  1072. LDA PPU_Addr,X( @9 E) q) y( c
  1073. STA PPU_ADDRESS
    9 J$ o: U4 O8 ~; j
  1074. INX) T' m6 s8 X( B9 q8 ~- ^
  1075. LDA PPU_Addr,X  z. X* O6 Y: K2 ~2 Z
  1076. STA PPU_ADDRESS
    % f  u& }0 p( Q$ O# u' K) R
  1077. INX
    . e! s# W9 \. u* K1 n
  1078. LDY PPU_Addr,X
    $ U4 J0 S0 W& `& R4 v5 T- C
  1079. LDA #$00
    - |7 u% h6 B- j3 B  v/ ~
  1080. PPU_Proc_Clear_Write9 M. W; N8 a# ~$ P/ h/ T: }
  1081. STA PPU_DATA
    ) O0 i6 f. n0 z3 y8 n, w0 t0 N
  1082. DEY
    2 l" R: a2 V9 X0 T  N* c
  1083. BNE PPU_Proc_Clear_Write0 K5 W2 B  x! R  Q# _
  1084. JMP PPU_Proc_End
    & G' a  E1 v: j+ F; H, q
  1085. ! @/ s3 E: S6 ^2 J2 g' D
  1086. PPU_Proc_Cnt_Line' @2 Q% o1 g3 k0 T* K9 I/ j5 w
  1087. INX" M7 X$ d; d0 A) _
  1088. LDA PPU_Addr,X
    3 Z/ _; R% x1 X8 N# T9 m
  1089. STA PPU_Addr_H: P6 ^: i, j  ?8 b, h3 E+ r
  1090. STA PPU_ADDRESS+ @  j5 |5 w. G4 ~. A1 C- K
  1091. INX9 h" @2 c+ ?% r( i" h" K. B
  1092. LDA PPU_Addr,X
    . U3 {; e+ {6 }2 s8 s
  1093. STA PPU_Addr_L
    # O/ p! T! _" Q( P0 M
  1094. STA PPU_ADDRESS
    - ]5 z: M& n3 L9 f
  1095. INX
    " C' A2 n8 h! a  ?
  1096. LDY PPU_Addr,X
    ; u1 I8 ]: E( w9 z& `8 T
  1097. PPU_Proc_Cnt_Line_Write  I* y! h7 b' o& f: o
  1098. INX
    * h$ ]/ k( S& b4 e+ i2 \9 |
  1099. LDA PPU_Addr,X6 F- P& i# t5 ?) F0 m
  1100. STA PPU_DATA
    + p1 w: v& a5 v! I$ K2 i4 h4 C0 P
  1101. DEY
    " l( R8 c4 c1 B! ?! r2 W
  1102. BNE PPU_Proc_Cnt_Line_Write  n2 [. O! O- u
  1103. JMP PPU_Proc_End( x# J" t( b5 X- |( ?2 e: o

  1104. ' w  B3 S- o2 G6 U5 c
  1105. ;==============================
    0 y+ s% }/ Y' M/ f; m- m* \$ ~
  1106. HEX_To_Dec;十六进制转十进制% Y1 d1 O& y( e/ |8 B/ X+ i
  1107. STA <HEX_Data
    ) q# s8 I1 u& y, P2 H+ v
  1108. PHA
    2 o4 \5 `% P- `; j* `, A5 Z, B! o
  1109. TXA
    ; {, [, ?  ]; Q  {
  1110. PHA. m1 |- G1 N. d) L7 A  J. E. H
  1111. LDX #$00
    $ b/ s& ]8 @; n" A5 ?( f
  1112. LDA #$007 Y1 K% }* G+ ?0 f# M3 K! j
  1113. HEX_Cln" h( ]$ O& F$ B
  1114. STA <DEC_H,X; l4 {4 R5 U7 V/ V: L# G
  1115. INX
    4 `6 O% w7 u+ B9 k" R3 ]1 }( ]0 j2 b
  1116. CPX #$03
      J( y2 g3 v. A% ~( I+ H; J
  1117. BCC HEX_Cln% m  B) E2 o7 v8 X
  1118. LDA <HEX_Data# y: `1 O1 Y$ h9 ?' j8 P' Z% R
  1119. ;------------------------------
    5 Z9 U2 k) E' Y; b) T
  1120. HEX_1008 u! H$ o9 M( |& o; B8 u& D
  1121. CMP #100- ~3 q  F8 w3 m; T! @8 ]
  1122. BCC HEX_10! F' C' [8 ?* w. g
  1123. SEC
    # G5 e8 G1 f6 ~6 S: V* n
  1124. SBC #100
    " h2 q  Q# y3 w
  1125. INC <DEC_H
    % C2 S& J$ p" n
  1126. BNE HEX_100) P/ k7 i: ~8 e! g6 I4 a' X
  1127. ;------------------------------1 B; g3 C' F- ?/ n$ l4 f
  1128. HEX_10
    & q! V, H9 c, h) P$ m
  1129. CMP #10
    ; x7 B& F  K3 z2 x
  1130. BCC HEX_1
    5 W# g* `- x, V: B. [  H% |
  1131. SEC
    $ d+ ~7 ?, [+ z4 v  r1 t
  1132. SBC #10
    4 p/ o- |4 R( G% m4 Y
  1133. INC <DEC_T
    ; v/ N* E# Y. ]& t9 z8 f) J, \
  1134. BNE HEX_109 E# E( J1 E( ~! o
  1135. ;------------------------------
    9 [/ e) F( M8 v! }
  1136. HEX_1  P) c& |2 M" B  e" G. i
  1137. STA <DEC_L7 v  i. u' l/ Y' ]& k0 t
  1138. PLA
    " ^+ T% |9 w, q6 U7 G1 e
  1139. TAX
    4 n" g' v0 Y' P& d/ K" Z/ l
  1140. PLA" E/ b& X( Z3 q  j
  1141. RTS/ M, r8 I- v5 A: A0 k

  1142. ( j' `' s: F; k0 Z% _1 j
  1143. ;==============================% M: G1 n( M% q% ]0 z, E
  1144. ;音乐曲目显示# c: z1 T. j0 w& L: z
  1145. Music_Show) I4 @, u: V4 [' [/ a
  1146. LDX <Music_Item_Cur
    , P( _5 M4 G1 C" k/ p5 {
  1147. LDA <Music_Cur,X
    : E5 S4 W9 v* C1 W- a
  1148. CLC9 s+ l/ H( L. j0 M! z
  1149. ADC #$01
    " H9 `" z+ |/ c# v
  1150. JSR HEX_To_Dec- B- W( t. k  T  P
  1151. LDX PPU_Cur
    ' k7 X, G' H) p& t  ?
  1152. LDA #PPU_MODE_CNT_LINE7 k/ r0 i2 C/ S
  1153. STA PPU_Addr,X
    ( c# A; ]3 ~9 t
  1154. INX
    6 X: e/ U  j3 p: r$ `; e/ O' T
  1155. LDA #HIGH(Play_Index_Pos)
    - o. }8 z, T4 J. \  e) v; e
  1156. STA PPU_Addr,X
    : Z# E; G6 M* j7 Q. f9 y
  1157. INX; C, C' d; D2 ?! D* Q
  1158. LDA #LOW(Play_Index_Pos)
    ! c! Q  a9 ?8 d2 m0 l  Y
  1159. STA PPU_Addr,X
    ) @2 _7 _+ `* n# K8 v
  1160. INX
    - D% b6 n1 e( q
  1161. 3 E' m5 `1 \: g: @7 b" p  `
  1162. LDA #$07- c# P6 P0 \+ K6 ^+ U* |+ ^" I7 Q+ S/ e
  1163. BNE Music_Show_Length8 D" x8 ~3 L9 c; m
  1164. 3 Q9 d" a" S! c* [0 H( v
  1165. Music_Show_Length
    ( f( A/ |; a" O$ P) E+ Z
  1166. STA PPU_Addr,X
    ! a! d; J9 L: D2 {% d8 H* G! |
  1167. INX* w8 ]7 S$ \; a: p
  1168. . c8 |! Y1 m% |
  1169. LDA <DEC_H
    3 d. d2 K$ G" ?/ N0 t- u5 W- i. [
  1170. ORA #'0'+ G# G- g- I/ n; |+ O
  1171. STA PPU_Addr,X- m7 F, Q4 E5 ]0 b: Z1 E
  1172. INX2 ^; h1 Q5 S3 h" o9 y. s7 x) r1 ~

  1173. * \; J- A( Q0 v% J- y
  1174. LDA <DEC_T6 r% [* K) Y6 Z/ H5 G
  1175. ORA #'0'& s1 T8 Y4 e% R& }' O
  1176. STA PPU_Addr,X( s5 M1 y6 L0 k' B- ~: v
  1177. INX$ W# y2 L- W9 T  `3 H" C3 z
  1178. ' B* R: ~; \) ]
  1179. LDA <DEC_L8 M0 O" P& @1 I* q& u( k
  1180. ORA #'0'8 W; {- ~% J9 F
  1181. STA PPU_Addr,X
    . `1 ?" h, T& l
  1182. INX
    8 j3 b' Y( a9 X, ^
  1183. ' D/ g5 ~4 h$ H  \/ y- f3 q/ m
  1184. LDA #'/'* k( N/ Y, O  s' z9 u
  1185. STA PPU_Addr,X) K( u4 _# j+ z( l" c
  1186. INX
    / H7 u; M  D: ~7 ~" |
  1187. Music_Show_Total. ~/ l9 I6 r$ M+ O3 i+ ~
  1188. LDA Music_Total
    $ W' `- Y. F) d2 ~# x/ k
  1189. CLC
    - }5 j& `1 z; d% z
  1190. ADC #$01
    4 @0 l+ l9 g- {; n
  1191. JSR HEX_To_Dec
    * X6 v* A1 o( ~/ M! V( q

  1192. & a, q. {# ~$ K2 R
  1193. LDA <DEC_H
    : {+ C* n6 k( Z# C( Z
  1194. ORA #'0'9 ]1 }6 Y0 Z! u$ E& K: |
  1195. STA PPU_Addr,X
    1 ~5 q1 c( W$ i* c, |) N
  1196. INX# R7 z6 [4 K1 X( T
  1197. ; @# t' P* v, k# o9 `9 S% A
  1198. LDA <DEC_T
    ! K. i1 S3 n  l* {& P+ }
  1199. ORA #'0'4 v1 a4 A1 P& A7 }1 G% E+ q8 {; b  Z
  1200. STA PPU_Addr,X$ k8 Q' S. F+ ]1 u; V
  1201. INX( b6 c' Q5 K5 P
  1202. 0 v! v8 }* a6 `1 t) P- n* ]! F; D
  1203. LDA <DEC_L
    ( ^& Q  m; _# q* k% i: C; w8 j
  1204. ORA #'0'0 {) }! w1 ~& b. o
  1205. STA PPU_Addr,X
    % p* C( ~% k9 f: p* [
  1206. INX3 t. ?& a  a& b2 l9 P% Q! g6 _/ _

  1207. 7 {. H) m, V5 T' c
  1208. STX PPU_Cur
    # \& \2 \- q/ M
  1209. Music_Show_End
    * v) A0 R. B' P7 a0 f1 J0 u. _9 ?
  1210. RTS, [" f: Z" N- e; T, E0 X7 f
  1211. " U6 R3 \1 W/ w3 Y. ?! ~
  1212. ;==============================
    4 g  L7 |4 e6 Y! x. ^; w8 x
  1213. Time_Show;播放时间显示
    ' S" \5 {3 b9 @, g% H/ e/ M$ w7 u9 c
  1214. LDA <Text_Disable_Flag" ?8 }1 u5 R) E0 _7 ]
  1215. AND #TEXT_DISABLE_ITEM
    0 n. D0 Q5 J$ ~( e
  1216. BNE Time_Show_End0 W5 M( S( G. p; z
  1217. AND #TEXT_DISABLE_TIME; B0 A7 x( I1 g) p
  1218. BNE Time_Show_Enable! h3 d8 c- O% [, _, P
  1219. 5 `( s" _& e5 {9 h6 _# U$ Z6 [
  1220. LDX PPU_Cur
    4 q% ~- C7 s( s# U
  1221. LDA #PPU_MODE_CNT_LINE! x( [( `; g6 c; _  H
  1222. STA PPU_Addr,X
    8 ~* S3 k" u' u( a6 v1 H0 a
  1223. INX, y; q9 b# H* }  L! }
  1224. LDA #HIGH(Play_Time_Pos)1 ^5 s9 Q0 g; n2 y9 B" k. H$ w- i
  1225. STA PPU_Addr,X
    ) P4 M9 ]0 m# F0 I0 Y  g9 \& O
  1226. INX
    ; o5 }0 n; j6 H8 i1 h4 k
  1227. LDA #LOW(Play_Time_Pos)
      t& y4 i6 C; r8 W
  1228. STA PPU_Addr,X+ N, n9 C" I1 `6 K: d3 y; C6 B& W
  1229. INX* k5 z( G& A- F. V
  1230. LDA #$08
    2 n" q- y5 h1 \* X" u2 Y
  1231. STA PPU_Addr,X7 T! E8 @4 x% w6 f- _
  1232. INX
    / t# [. ^# Q% z6 k! k7 D% W
  1233. Time_Show_H
    % }( A7 u' k4 H
  1234. LDA <Time_H& z7 ~) S/ J% j5 H1 x* _: t
  1235. JSR HEX_To_Dec
    % {& L# u- M2 w! j
  1236. JSR Time_Digit6 f% |# h1 ~$ @# a6 B- P
  1237. LDA #':'0 \& Z) I$ G$ z- |8 A" e
  1238. STA PPU_Addr,X- {3 R' n3 h' v  z8 k+ ]
  1239. INX
    ( _7 A1 R4 f' C
  1240. Time_Show_M: _$ v4 Y2 _; y0 q1 a0 @1 [
  1241. LDA <Time_M+ @, z( E5 f; R
  1242. JSR HEX_To_Dec
    . P: E( [. ?) ~! s/ i8 A
  1243. JSR Time_Digit
    # {6 l; c% p9 Q# K) t
  1244. LDA #':'6 X/ T# Y1 D: G5 C6 F
  1245. STA PPU_Addr,X
    " F/ l' H  Y$ g; ^# C4 n
  1246. INX% R; _" I& }0 c) P1 P
  1247. Time_Show_S
    ) T' f2 b2 w" q2 S5 p5 b
  1248. LDA <Time_S6 C5 T- f$ l' \* K/ j, Y
  1249. JSR HEX_To_Dec
    7 L2 m3 r: s0 z( J( ^' R7 C
  1250. JSR Time_Digit0 Q' T1 O) J8 a) v
  1251. STX PPU_Cur' B6 R. s; R, Q) U
  1252. Time_Show_Enable6 u% p0 i1 G4 `4 {( a3 X
  1253. LDA <Text_Disable_Flag; P; v2 M8 A$ |& G: i- T
  1254. AND #TEXT_DISABLE_TIME ^ $FF* r7 z. N+ J) F( Q
  1255. STA <Text_Disable_Flag, i6 j$ B% R0 ^1 Q8 Y" ~/ `7 T
  1256. Time_Show_End
    ! a3 W4 C+ I( S/ v
  1257. RTS
    ! V( [( ~% i+ `; P4 t8 A( J3 z" F  N
  1258. 2 {8 I5 D: b* m; C' H  j2 B  [: s
  1259. Time_Digit- {! x, O: F3 g7 \
  1260. LDA <DEC_T
    , c7 _& t& w# Z+ \4 X
  1261. ORA #'0'  B' q% B; k: g* ~7 `0 e
  1262. STA PPU_Addr,X6 ^$ q. n+ f# p6 s
  1263. INX) w0 T  P* [% W
  1264. LDA <DEC_L
    ! g/ P. w# o/ z9 ?% X2 H
  1265. ORA #'0'. x0 ?2 o+ j/ X7 @$ T; t" r' K; N
  1266. STA PPU_Addr,X- O" C- V. p+ {0 l; j9 D
  1267. INX
      h0 f9 U: q( A! ?( T( s
  1268. RTS2 D$ `& c- f. c2 g/ z
  1269.   c: r9 r% s7 q7 R
  1270. ;==============================: f+ b; J$ {9 ?7 h/ a% p/ q/ ?$ a8 _
  1271. Time_Count;计时
      p: n; j" U( b% n
  1272. LDA <Music_Stop_State$ v, |9 f! i7 O
  1273. ORA <Time_Wait_Cnt
    7 W0 O9 ?/ E+ ^" c
  1274. BNE Time_Count_End8 N) f) E: a! M* U) u4 _7 B
  1275. INC <Time_Cnt! V; L1 k8 G, N) s+ a& Y1 M
  1276. LDA <Time_Cnt
    6 ~' Z& X4 Y9 V7 p
  1277. CMP #60/ o, K/ }1 j# E6 B( G
  1278. BCC Time_Count_End- O, G# M' B1 a6 M
  1279. LDA #005 j( ~" E, i0 _) I2 _/ M! d
  1280. STA <Time_Cnt
    # s4 h2 a& \% t7 C7 F
  1281. INC <Time_S- O0 F9 d& G, d0 g
  1282. , u0 o% |$ C! @  }5 O
  1283. Time_S_Cnt
      J# M( T: B9 ~* ?; i  U  x
  1284. LDA <Time_S# C( @9 W3 e2 M' W+ o
  1285. CMP #60
    5 A$ g4 ~- M1 [! ^- g9 d9 B$ y* s
  1286. BCC Time_Count_End
    8 M$ U' g! x; R1 h7 U) A5 f& F8 x
  1287. LDA #00
    ( z* |$ Z. Z5 F# y% b: {
  1288. STA <Time_S' Q8 i' W  A& S8 j$ j" O6 r( f- i
  1289. INC <Time_M
    + h9 |0 D) {6 `2 _% I+ y

  1290. / C5 G' [5 D3 h, L
  1291. Time_M_Cnt
      m5 [! E: j3 x0 r2 @5 n- ^1 l8 v. b* A
  1292. LDA <Time_M+ `* K$ ?6 l6 J, ?' z% s7 e
  1293. CMP #60: z* z5 ?: ?- u8 P
  1294. BCC Time_Count_End
    2 `+ O( E# u2 f& C- ?
  1295. LDA #00
    / a5 |8 c- |; O* w
  1296. STA <Time_M
    + {( V) ^5 x  g7 {) S# s
  1297. INC <Time_H: G. l: z) B4 _. q/ N1 u1 T

  1298. / E4 K1 p# ?! S* C
  1299. Time_H_Cnt' Z2 Z# u0 u2 i' V1 j+ Q! h" t
  1300. LDA <Time_H! A" K" B3 a* V8 d4 A# d9 A% I
  1301. CMP #24" m+ e: w) J: k% c
  1302. BCC Time_Count_End4 R: F5 H9 [  R9 _7 T/ Z  E( q2 ^
  1303. LDA #00
    " K4 N8 k4 c/ V/ ^' |- R8 j2 U. d- a* A
  1304. STA <Time_H- D2 D- _6 T* w+ F7 W

  1305. & S1 F8 S5 Q; P. |3 A4 O6 W* E
  1306. Time_Count_End
      A% m+ c9 Y  Q
  1307. RTS* |7 C. `- G- i) ?

  1308. 4 M/ j% c- D; l& }6 v+ p
  1309. ;==============================
    6 s4 _: s5 s) i& B
  1310. Time_ReSet;播放时间重置8 D. S8 K, u; N' {0 D. l& f
  1311. LDA #$00
    * i( Y$ y( P5 a3 N0 h+ ?
  1312. STA <Time_S* V1 _) T  d* h, N6 P; U
  1313. STA <Time_M . d8 q$ ~- \: J
  1314. STA <Time_H
    ' I* g" a. A+ H) J7 _3 b0 P& |
  1315. STA <Time_Cnt
    8 R7 _9 K. Q3 L' E# v
  1316. RTS
    ' H% \% n. I$ U5 K$ f1 D5 X" B

  1317. 6 }, U2 u; ~2 \) Z
  1318. ;==============================- A: b+ d+ \- d/ Z
  1319. Music_Bar_ReSet;音乐条重置
    $ g- M; L* p* Z  J; ^- M
  1320. LDA #$00
    7 o% E( {/ f& d2 N* d; x! p+ {  [
  1321. LDX #$00
    , S5 E1 E2 P4 ]1 E$ u9 B
  1322. Music_Bar_ReSet_Set6 ~8 A, N2 t# X+ L
  1323. STA Sound_Bar,X% g/ `. a# c% W" S- Z1 T' v5 j
  1324. INX
    8 D6 X( M8 y2 g; Z4 G; s& K# z  O
  1325. CPX #$10
    2 k; Z, M2 _0 j5 G& U
  1326. BCC Music_Bar_ReSet_Set
    2 {5 Z8 D% o1 G' p! |0 y
  1327. RTS
    ) W: C, {; e% p3 j; t7 k4 ?

  1328. * n; s- _, f' l, [4 n: f9 z
  1329. ;==============================
    9 V1 ~4 `5 Z; B! l: v& f  s
  1330. PPU_Data;PPU数据写入1 l, c0 d4 r3 F& S1 P6 E) l. Z
  1331. STY <Data_L5 R$ ?  h( U- m9 }
  1332. STX <Data_H8 x0 ~% f) }; J! C: [
  1333. LDY #$FF
    $ q: E& H9 a- C+ K2 R7 N
  1334. LDX PPU_Cur
    * U3 O4 T% _, @+ u
  1335. DEX
    # L% }, N3 J, `8 e0 C1 \" a& x* ?1 l; [
  1336. PPU_Data_Beg/ u6 E/ b9 ]1 O2 Y0 N
  1337. INX
    ; \) l) n$ W9 ?0 x* s
  1338. INY
    ' D( ]. c0 [' {: Q0 t
  1339. LDA [Data_L],Y
    - l; H" F0 ]4 o: ~8 k' Y
  1340. STA PPU_Addr,X
    : Y5 x; k; o, r+ e" ?
  1341. BNE PPU_Data_Beg
    , J$ e5 ]6 a+ k; ^
  1342. STX PPU_Cur
    $ r8 w& A2 c# O
  1343. PPU_Data_End
    8 o9 f* q; `, r& Y2 |9 ~
  1344. RTS
    . k! ]/ w! ]# \
  1345. : V7 z: s( L" C# ~( j+ _$ o5 W
  1346. ;==============================
    3 [5 N" v% b; H& p
  1347. Music_State_Show;播放状态显示
    5 V. E: j, Q& G
  1348. LDA <Music_Stop_State
    , ^8 G" ~  H: G% p6 e
  1349. BEQ Music_State_Show_Play
    7 z7 ?1 T' q+ H9 a7 X" p4 X' i+ e
  1350. Music_State_Show_Stop
    : y, e. k: e# o* J
  1351. LDY #LOW(Music_State_Stop)* Y* ^7 m3 N% a5 O
  1352. LDX #HIGH(Music_State_Stop)
    8 F1 S1 n# o' O9 \' @
  1353. JSR PPU_Data
    . S  z4 X. V3 B2 T- L
  1354. RTS0 E, ^+ u8 c7 e
  1355. Music_State_Show_Play5 B0 l0 K7 f/ _# w* i5 L$ T. O
  1356. LDY #LOW(Music_State_Play)
    9 D, }; m$ R. \
  1357. LDX #HIGH(Music_State_Play)
    : N3 c* N. e% U& X- b  q: R
  1358. JSR PPU_Data
    0 ?2 j0 E0 l8 I5 z4 N. c8 q
  1359. RTS6 }& U9 W8 M0 `0 c" |4 r' [; \
  1360. . u8 s! M2 @- ?5 c9 j
  1361. .IF SOUND_BAR_SHOW_ENABLE8 r2 M! v2 g* s7 o7 t1 T3 v! I
  1362. ;==============================  y, X( g* a; l. k7 I
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    ; l; k2 k, T) }7 R8 d
  1364. LDY #LOW(Sound_Bar_Text_Data), s8 d: [/ P) o+ p/ o8 i# Y
  1365. LDX #HIGH(Sound_Bar_Text_Data)0 V. ?& u4 O& E- s8 F1 a
  1366. JSR PPU_Data
    ! n' E9 }7 P3 T7 L% G0 X" U
  1367. RTS) p8 h; }" t8 b2 N1 N! _1 Q, }7 {& g

  1368. / x2 X1 M( R- I2 ^) ~
  1369. .ENDIF: m: T; o$ b* h0 N7 j0 f2 t6 H& x

  1370.   B! t! f1 s; _3 P2 Z+ K
  1371. ;==============================
    * w" ]" i6 Y% `5 v
  1372. Set_NameTable_Attributes;设置命名表属性' Y! d' e$ m  t
  1373. BIT PPU_STATUS
    9 V( [4 ~4 w3 b
  1374. LDA #$23
    9 ^7 z0 C% H5 B# D  E
  1375. STA PPU_ADDRESS
    % w8 R8 }9 `+ ]6 t& `+ d
  1376. LDA #$C0
    ! {- L7 ^; P0 J
  1377. STA PPU_ADDRESS
    6 C: v& N# S2 k7 J3 b4 F1 b
  1378. LDX #$00
    8 |: t& P, i7 _* q
  1379. Set_NameTable_Attributes_Write9 M5 E' I. U; o8 J: D. k) R
  1380. LDA Palette_Attributes,X+ J5 R3 J! {) K
  1381. STA PPU_DATA
    * z! g8 ^/ N( z" I2 x
  1382. INX
    * O  `8 d  g8 d/ V) ]) z
  1383. CPX #$403 J( p& X! z& T$ v
  1384. BCC Set_NameTable_Attributes_Write+ a3 g- ~) J+ z( R3 a
  1385. RTS! o/ x8 O! B- X  h1 V' U( S& h

  1386. , W. a* }5 k' |. [4 V0 N& S
  1387. ;==============================
    2 B1 W1 u, A6 L/ l( J6 w, ~1 p
  1388. Set_Palette_Color;设置调色板数据
    0 Q1 m% X( D; i8 M9 l
  1389. BIT PPU_STATUS
    ' p8 L0 ~" [* F% b/ G7 B4 b
  1390. LDA #$3F
    # l' m- y4 Q( j9 m4 `
  1391. STA PPU_ADDRESS
    $ W: k0 R: J( R, d  o7 h9 J8 f5 N7 e
  1392. LDA #$00
      t" N' r# K  G/ j/ |' Z
  1393. STA PPU_ADDRESS# x% m) I. M, C% k7 x9 R- R
  1394. LDX #$00# p4 c" v: r- H" v+ x) v2 p9 _
  1395. Set_Palette_Color_Write9 D+ c9 R5 ]8 }
  1396. LDA Palette_Data,X1 r' s" _9 S2 Y
  1397. STA PPU_DATA
    / A3 z  J+ O/ [8 i" L( t* q0 v
  1398. INX
    ; k+ U) Z- R* N) r2 V
  1399. CPX #$20# |# p7 \0 `; j
  1400. BCC Set_Palette_Color_Write+ a8 ^6 q$ |( X; r4 `. [
  1401. RTS: z: U8 ?1 w! X9 V4 E0 Q
  1402. ( P; j$ b7 N$ m
  1403. ;==============================
    # q& W1 O2 U6 O' C/ |3 c
  1404. Init_Palette_Addr;初始化调色板数据+ D( d* K3 e" z/ v8 d
  1405. LDX #$00
    - ^, T* v& a$ J- z8 \5 f6 a
  1406. Init_Palette_Addr_Write
    : p, j. p6 n; B( M% W' D) O, E6 n# c
  1407. LDA Palette_Data,X
    ; |2 ~7 h3 l3 y* }
  1408. STA Palette_Addr,X) V: }9 |0 a$ a# H& T% t  b% f
  1409. INX
    ! S+ y# k  t4 K6 Y4 o% B4 v
  1410. CPX #$20* B- F5 P# c1 k7 U  b, B% U, O5 _
  1411. BCC Init_Palette_Addr_Write( n+ q' |- ]# @1 Y$ o* N
  1412. RTS6 X5 v0 u, K" B+ b- \
  1413. % n1 W% T& x- |9 U& x# O$ H% o
  1414. ;==============================# \2 n" A/ M! M
  1415. Update_Palette_Color;更新调色板颜色: F9 n0 _* E2 C& r( a
  1416. LDA <Palette_Update_Flag, Y% r: K0 E" x9 j+ W$ j- [
  1417. BEQ Update_Palette_Color_End
    # v; Q4 W6 w. a' \' \0 g
  1418. LDA #$3F
    % G' ?2 D, u$ y  Z% Y3 z* i2 [" ]
  1419. STA PPU_ADDRESS7 _; H3 p2 d* S5 e  `* h
  1420. LDA #$0C7 w- ]  h/ _4 i! Z/ |# i$ h6 Y
  1421. STA PPU_ADDRESS. s( Y' l/ k1 M4 ^" M; h& o9 L( m
  1422. LDX #$0C
    2 F, J4 g- U, T4 y- {" M: e" y; i
  1423. Update_Palette_Color_Write
    # J/ |; v  L. ]" g* Y
  1424. LDA Palette_Addr,X7 |6 R4 w! |) w* W- l
  1425. STA PPU_DATA
    0 D# I' R$ O# j% M  O( N' Z
  1426. INX
    7 `4 l' \4 o5 f5 ?! x8 ~( ^+ R
  1427. CPX #$14! t. J2 i% |* D# H( q) Y
  1428. BCC Update_Palette_Color_Write
    & Q+ I5 B9 i/ J  s; g+ _
  1429. LDA #$00
    5 T' C2 p! }/ D* U7 D
  1430. STA <Palette_Update_Flag/ G: i! W) L5 T. y
  1431. Update_Palette_Color_End
    * t  d: c- j5 b$ m
  1432. RTS0 R1 U. I  U  t, Q! F5 j3 V+ |
  1433.   b* w$ `% s  U0 |/ \  [
  1434. 6 q, w+ t. G3 u4 y
  1435. Update_Sprite_Palette_Data
    , K2 ^' G1 B8 y  s$ W; C
  1436. .DB $21
    # Y4 I. r; x3 t" Q1 i9 I
  1437. .DB $21! F& y: p9 K  c1 ^  d* n6 u
  1438. .DB $11" z9 n9 l" O) D. ~' j" a% L% X/ x
  1439. .DB $018 |; w7 c; a* K! a2 k
  1440. .DB $01! G# ?# Q$ V# D7 P
  1441. .DB $11/ L  @% m3 \: a1 `% s
  1442. .DB $21& ]/ Q( [* l) V
  1443. .DB $219 @, {; n$ k! a* S- ^
  1444. .DB $11# G- H/ n6 N* ^- {' k! x- V; w
  1445. .DB $01
    0 D( J) m  E& M% s
  1446. .DB $11( x( H, U6 x9 c- n) o3 j, q
  1447. .DB $21* R; c" g/ g/ K+ S8 g' m  b
  1448. .DB $21( J: L; t* B4 N' M- Z
  1449. .DB $11
    0 Q0 ]& |# t1 J# \8 A! X4 |- C
  1450. .DB $01
    , h0 U' h+ B3 @+ I8 ~8 |8 Z
  1451. .DB $11
    5 x- n8 z/ J1 h$ r, g( ?1 l
  1452. ;==============================
    . \# K3 ?4 B2 j
  1453. Update_Palette_Data;更新调色板数据1 R8 g: @0 z/ ]4 o7 t* P' w1 U
  1454. LDA Nmi_Time_Count! Z! Z% C! ^1 Q/ X2 g2 y! I( a
  1455. AND #$08
    ' n- C9 y; j3 s4 q
  1456. CMP #$08
    0 q" P) O: X7 [  q0 Z
  1457. BNE Update_Bkg_Palette_Data
    & c  c" _- k: }' z' p

  1458. + p  J# t$ T0 S0 F& c, V. C3 }$ R- s
  1459. Update_Sprite_Palette_Data_Set
    6 y1 c! q  ^& y! G3 n! o: z
  1460. LDA Nmi_Time_Count7 b) s  N' f" B2 `) f
  1461. LSR A3 f8 v  j3 y' x0 r
  1462. LSR A
    5 n8 K  W4 v( B% U+ _' K$ F0 x
  1463. LSR A9 E: }& J  t$ O; L
  1464. LSR A
    & S& V" C1 S' J) e2 w7 i- w
  1465. AND #$0F
    , Y" ?3 @# {- h# h  U6 c
  1466. TAX$ W9 u8 z3 l) @% k! l' _7 o
  1467. LDA Update_Sprite_Palette_Data,X
    : l! U; [, ]& C2 g5 ~8 _
  1468. STA Sprite_Palette_Update_Addr
    ( t  n% A7 M( v* ~! x( \
  1469. LDA #$01( Z+ L, }5 N% A9 ~8 J- |1 K
  1470. STA <Palette_Update_Flag
    / {; d- d/ w! }1 s' }3 c# z0 g4 U

  1471. * |$ \" W4 z. |3 x& V3 F& v
  1472. Update_Bkg_Palette_Data6 q* E1 O6 J4 F- B5 A
  1473. LDA <Text_Disable_Flag) \/ A4 P( _5 @0 P! N9 R. g
  1474. AND #TEXT_DISABLE_RAM
    $ H9 V' L" A9 F/ V
  1475. BNE Update_Palette_Data_End
    , }* u  e) a/ O( X$ }7 z
  1476. LDA <Music_Stop_State
    ' S7 |# Y8 M) ?* z/ _! R& L
  1477. BNE Update_Palette_Data_End
    % r+ W7 V- [8 `  }/ x

  1478. & |/ ]! J& f  G% ^
  1479. Update_Palette_Data_Check9 {, g: r4 V4 o  |2 H! _
  1480. LDA Palette_Wait_Cnt
    " e4 H5 X- g- \4 J1 h) S* F
  1481. BPL Update_Palette_Data_Check_Over
    3 h& s- o: z) _& x% G$ J% ^
  1482. LDA #PALETTE_UPDATE_INTERVAL
      y9 j" m: o7 o* x& N8 ?
  1483. STA Palette_Wait_Cnt+ i8 Z: P; i6 u, _
  1484. Update_Palette_Data_Check_Over; `) z0 z( R  g' }
  1485. DEC Palette_Wait_Cnt0 c8 b8 K( ?; A* [6 K
  1486. BNE Update_Palette_Data_End
    , h9 w, a! W; m7 M; m6 B
  1487. 8 \: M* M, q1 b6 R3 O
  1488. LDA <Text_Disable_Flag8 C6 d2 v; r% x4 z; x
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    2 T  M; Q3 K7 H* c- J: `( V  g
  1490. STA Text_Disable_Flag$ W! @; @8 b0 e. t7 r1 _6 T4 y
  1491. INC Palette_Update_Flag; S& F* p, J4 z+ X7 H$ N' S$ \# e
  1492. $ _( l; o$ v0 ?' J4 Y, Q
  1493. LDA #PALETTE_UPDATE_INTERVAL
    & D. H2 g& S/ P: R
  1494. STA Palette_Wait_Cnt
      K' v# x6 @6 m  D+ f; r* J: K

  1495. ; r) }) `% m! K8 V% D" x/ C
  1496. LDA Bkg_Palette_Update_Addr
    : Q+ a# S, H: b1 i
  1497. CMP #PALETTE_UPDATE_MAX' k$ x7 X2 D/ S7 C; A0 U4 G5 I9 w
  1498. BNE Update_Bkg_Palette_Data_Set
    : }  L) S. y% i4 h7 W
  1499. LDA #PALETTE_UPDATE_MIN - 1
    $ R, i+ z7 ~& B2 j
  1500. STA Bkg_Palette_Update_Addr/ ]3 w5 z) m/ h: S/ h; p8 H
  1501. Update_Bkg_Palette_Data_Set( E' E' i) q4 K; J! h+ I8 [
  1502. INC Bkg_Palette_Update_Addr7 Z  |  O* p8 M3 a3 p+ i7 n
  1503. - f4 y3 l; D1 r& @
  1504. Update_Palette_Data_End0 I+ m% A( L8 T( M' U6 K
  1505. RTS# k% I* M/ W, T$ {2 ~! g

  1506. & m5 G, U0 q3 A/ r
  1507. ;==============================
    # M4 l* k! t6 ]& K3 B
  1508. Show_Music_Text;显示静态文本
    / g6 \) I( n4 \
  1509. LDX #$008 C  x# m+ N% X9 c
  1510. Show_Music_Text_Set2 \) Z% n' @+ Y6 E/ O5 F8 z
  1511. LDA Static_Text_Data,X# O7 w/ R  d3 u! T
  1512. STA <Data_L9 k/ D, K6 Z9 l
  1513. INX
    & D2 @: X* [2 h' R% @: z' Y( S
  1514. LDA Static_Text_Data,X
    ; }( m* [# w: o' m. d1 w% ]
  1515. STA <Data_H% u) Y6 }7 A8 s+ Q: ?+ }+ U
  1516. INX* H( C& _1 ]  R3 C& a
  1517. LDY #$007 ?! i5 s4 [) T& F0 Y7 s: @6 ~9 \
  1518. LDA [Data_L],Y
    , {) y! F$ M/ L
  1519. STA <Data_Cnt; x+ B( R) ~& v- A$ e
  1520. DEX
    ' e# c, M8 Q5 U0 Q2 P; t: u
  1521. DEX. e$ T9 ?8 z/ N7 L! \( l
  1522. LDA Static_Text_Pos,X# j7 N$ \6 A4 k9 `8 u; o' z4 g
  1523. STA PPU_ADDRESS5 Q, I: s! j1 k8 ], ]- ?
  1524. INX, k5 H" j8 s* x4 T( r
  1525. LDA #$20/ Y' x5 a' x5 u. t! q; S
  1526. SEC
      j: S8 j% a2 R9 {
  1527. SBC <Data_Cnt
    6 U. R. v- c% }% P* ?( r
  1528. LSR A
    ! o, ^5 r9 h/ `5 O( L
  1529. STA <Data_Buf# c/ {6 o8 u; f: U2 l
  1530. LDA Static_Text_Pos,X
    , Y! ]2 `; M# A7 y
  1531. AND #$E0
    # A; ?. b, [* z. G7 D* i& t8 N
  1532. CLC
    7 H: t( e* d: K5 b& n6 |2 |
  1533. ADC <Data_Buf0 k( q0 p( S; s5 l
  1534. STA PPU_ADDRESS7 v8 V; D, y/ |3 z6 n  h! \
  1535. INX9 {" w: P+ O8 H1 x
  1536. Show_Music_Text_Set_Write2 l; M, y6 T3 }1 `# u
  1537. INY$ W8 R4 v; S' m4 q( M3 Q/ ~; k
  1538. LDA [Data_L],Y8 m) Q3 l  Y- V, V
  1539. STA PPU_DATA. Y% W+ N8 x4 E( r1 p/ c0 q
  1540. DEC <Data_Cnt
    " V  O& j  I3 K' w9 x
  1541. BNE Show_Music_Text_Set_Write/ |' j8 A. v+ ~4 I
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    0 [( v- _+ k) ~  ]5 L( Z0 G% G
  1543. BCC Show_Music_Text_Set1 O/ ]: I, d1 u5 ?! E( }9 y
  1544. RTS% _8 V6 e, a/ h( M! z
  1545. ! l# r7 M; _  @4 p2 k
  1546. ;==============================: j/ R$ ~* H6 H, v+ r! v9 r
  1547. .IF Track_Name_Pos;显示曲目信息
    ; Z, j/ y# x6 e* N7 J( \

  1548. # {6 I( e8 X7 S0 L- @" |% c
  1549. Clear_Track_Info6 ]8 H. r  d& h& {+ ]3 l) t
  1550. PHA
    # ]0 M3 Z# T8 I" h) I" f5 ~
  1551. LDX <Music_Item_Cur
    2 A* j$ N" I% z, I) G
  1552. LDA Track_Name_Addr_Flag,X$ ]' P$ o6 i( ]+ ~  z! C. m; e) q
  1553. BEQ Clear_Track_Info_End_Ex
    * [/ p- \/ i( D
  1554. PLA
    - W, M5 k$ [) f1 M' C

  1555. & R+ y: V1 A/ l8 q9 y# _
  1556. LDX PPU_Cur
    8 P0 u. m) B/ f
  1557. PHA
    % P4 U) p; R, }) S
  1558. LDA #PPU_MODE_CNT_CLEAR+ ~0 f0 u0 q8 W# p# }2 n' ?
  1559. STA PPU_Addr,X* k4 w/ B* p! y0 C& l
  1560. INX7 B+ x; y+ D/ J" V% @" B- V( g
  1561. PLA. l$ x  H0 {- x% b" j
  1562. JSR Show_Get_Track_Name_Center_Pos
    ( p# r0 U; v$ f! B% y5 Y2 |
  1563. STX PPU_Cur2 k7 m& ]1 E0 L; O
  1564. Clear_Track_Info_End- E6 P- n" N; c$ N# p
  1565. RTS$ `5 R/ N" R% T- F1 w( t7 Y; {2 |
  1566. Clear_Track_Info_End_Ex# p  v# i8 b& A+ v
  1567. PLA4 o/ E* A6 J) m
  1568. RTS6 l  t. L6 t/ c6 ~& D5 @

  1569. , p2 }9 I( l7 J) z
  1570. Write_Track_Info
    6 |2 V6 D; F9 }! ~
  1571. PHA
    2 M9 a2 s4 S3 k2 M) `- Q
  1572. LDX <Music_Item_Cur
    $ {- t. k1 _  V
  1573. LDA Track_Name_Addr_Flag,X
    ! @) F0 F- F+ Z  x; m4 X2 H* [
  1574. BEQ Write_Track_Info_End_Ex3 Z& U/ L# f" Z3 A; ?
  1575. PLA. E! [7 F& o2 q1 i6 ]
  1576. 1 e' s. ^5 P- K* n! O
  1577. PHA8 d  V- \5 Y* ^
  1578. LDX PPU_Cur
    # n2 {# a+ C6 b' w* q7 M; {( V) b
  1579. LDA #PPU_MODE_CNT_LINE' D$ e" D+ Y9 R' s
  1580. STA PPU_Addr,X8 |. n8 h. v+ O
  1581. INX
    " y! }; }$ a3 x% n$ i% L& H0 y
  1582. PLA
    7 Z: {2 q, {- I- k
  1583. JSR Show_Get_Track_Name_Center_Pos, u* O- F6 x3 e7 j
  1584. Write_Track_Info_Data
    : Z, f' E* C/ e1 K+ t
  1585. INY  b" K! i) `7 i3 |# L# E; q$ x3 @: F  m
  1586. LDA [Data_L],Y
    1 x+ a1 N2 K  `; J1 u$ f! }
  1587. STA PPU_Addr,X
    , a' B, d! |5 A
  1588. INX3 X% I/ d4 b3 W: F. l& B9 r
  1589. DEC <Data_Cnt
    * i7 o+ I7 M, i: p* L7 ^3 G3 x
  1590. BNE Write_Track_Info_Data
    ! s: w9 {- `% T+ C8 K
  1591. STX PPU_Cur2 d' ]1 H- Z7 n1 \' P. V
  1592. Write_Track_Info_End. u5 G; B' G! C5 k
  1593. RTS" u& f  L# p# q7 z, D7 S
  1594. Write_Track_Info_End_Ex7 l3 t3 \( `2 L8 Q9 P
  1595. PLA
    9 s+ A9 M4 Y% y" T' [0 E& c! p
  1596. RTS
    , U7 |/ C0 {9 @( ~( f1 @4 a
  1597. : s  u( X% M. M4 m
  1598. Show_Track_Info# W0 ^( T6 q. o0 c! v
  1599. Show_Track_Info_Clear
    7 q  |( X; X0 E1 m+ @8 h
  1600. LDA <Music_Last
    7 o# V. x) }. d. ?( X" t7 D( ]4 k( O

  1601. 5 Q6 G3 F! \2 G9 s  D  ^
  1602. JSR Clear_Track_Info
    " V8 d+ E' j. I: ^$ y4 [

  1603. 5 m9 v- o9 b. O! w, z8 c* E' n
  1604. LDX <Music_Item_Cur
    # ]/ z8 U, u* w; r) f3 s
  1605. LDA <Music_Cur,X6 U* [$ q0 C# `3 F4 ~+ r) g  h
  1606. JSR Write_Track_Info
    8 u! l0 Z0 ]% d) b" M; G
  1607. RTS
      J% Q4 |- e1 ?' g
  1608.   a8 O# G* Z( Q: J
  1609. ;==============================% d" V3 P+ }8 ^: S8 [$ S. u
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    1 K: r' S  X8 S4 b1 `9 c
  1611. 1 j* {. ~9 w  m  F
  1612. ;取出集合名索引, z3 ?% N. k3 d+ k5 j
  1613. PHA
    . n& [5 H% l2 p$ R

  1614. # M4 u$ h; [) w) P1 U) H
  1615. LDA <Music_Item_Cur9 m' R0 }& u7 S8 c4 L6 e
  1616. ASL A9 q/ K# `: N0 J
  1617. TAY& V$ Y9 @) `, n: k6 h7 \
  1618. LDA Track_Name_Addr_Port,Y8 m" I' \6 d# h% A) A+ t: M: b) O6 h$ [
  1619. PHA
    9 {; k) ?2 c0 H/ j
  1620. INY: N  ?" _+ [& t- G. M& Z
  1621. LDA Track_Name_Addr_Port,Y5 Z, f1 x7 |9 q3 g2 Q4 a# U5 A
  1622. STA <Data_H' s6 U! Z' V. E' M
  1623. PLA
    ! S- c/ X; G5 J& M; @7 k$ a. o
  1624. STA <Data_L
    . v, ?( A3 }, |2 `6 G+ I: X
  1625. 6 }! f# R- u: f* }
  1626. PLA9 b) b. \, J5 N* y9 Q- I

  1627. / y4 ^3 W3 ?/ E( ?# `
  1628. ASL A& ?/ g7 r! d5 h5 u6 }# J
  1629. TAY- t% d7 N- e- X/ M' B3 R" b
  1630. LDA [Data_L],Y3 K$ L7 t9 J4 t9 n$ P+ j9 ~
  1631. PHA
    6 `" g" @# w" y5 L/ z2 H6 o
  1632. INY. x7 j! y- f- G" D) Z" S$ g
  1633. LDA [Data_L],Y/ H) s* W9 J* ^2 {- G# @1 s
  1634. STA Data_H
    3 G% L! \4 r' z* z- X
  1635. PLA- a1 i/ ~( d6 |
  1636. STA Data_L* n3 C; h5 D, [: o, T0 s

  1637. 7 Z0 y) w  T, F, o) g/ L
  1638. LDY #$00
    * Z9 B7 o# a; q% z/ F
  1639. LDA [Data_L],Y7 `$ M! \0 c/ Z4 k' f* P2 ^. ]5 s
  1640. STA <Data_Cnt
    3 {9 a( B, r8 {* ]9 s* n( J" l
  1641. LDA #$20
    9 Z. q) n& j' O  _9 Q  C
  1642. SEC  t5 N' b; A/ [2 i: q
  1643. SBC <Data_Cnt6 H* i1 u# B0 H9 a
  1644. LSR A
    % D- I; D0 O# m* o) |. n
  1645. STA <Data_Buf, \/ p* G" W5 w4 q0 f! n' |
  1646. LDA #HIGH(Track_Name_Pos)0 d# G# a! |' ]1 m$ V; D  T- L
  1647. STA PPU_Addr,X
    ( r8 z# }  r  L0 ]3 G* v
  1648. INX
    7 L$ @: @0 y) x6 b4 P8 ~# m, G' u
  1649. LDA #LOW(Track_Name_Pos)
      b8 v+ a- k, F; @& m+ z- J; P
  1650. AND #$E0. l1 @6 [1 m/ Z- Q; Z/ N' x5 ?
  1651. CLC
    ; ]+ }1 K! R1 S1 k) L2 K2 c
  1652. ADC <Data_Buf
    . H7 \2 `4 @7 ~2 V
  1653. STA PPU_Addr,X- D8 `1 C% I6 r8 n4 d% Y4 h
  1654. INX
    ' ]- f8 d5 @# ]0 b4 a# g
  1655. LDA <Data_Cnt6 B# o; L+ e, ^8 S$ S, ]7 K
  1656. STA PPU_Addr,X4 `" i$ ?$ d" e1 y
  1657. INX4 N+ p1 H7 X: k/ U
  1658. Show_Get_Pos_Center_End
    6 S; s: @3 J, X6 u) \
  1659. RTS: A/ W$ B; [+ f2 ~9 k0 w
  1660. .ENDIF; u: \' _0 N; E/ F0 M

  1661. : p4 _$ @3 N5 z5 ~4 \
  1662. ;==============================
    4 Y5 T2 q/ ?/ g+ L4 h
  1663. ;音乐端口清除# K# J, ?+ H* i
  1664. Sound_Data_Clear+ J, r( e5 Y7 w5 d# d' T
  1665. JSR Sound_Port_Clear
    ; O. w# D8 q2 c. `6 p! m1 y; g# ]
  1666. JSR Sound_Ram_Clear
    3 T( t% a  u6 B. A) }, H  S
  1667. RTS
    + V6 s% J6 o: H4 J/ A
  1668. * Y' M. p1 n0 w; E+ D, h
  1669. ;==============================9 o* I" `$ E" x( E# m
  1670. ;音乐端口清除9 E3 X; Y% ^/ P7 F
  1671. Sound_Port_Clear
    * ?  R1 X- q: d6 B7 t8 L/ Q( h. b: C
  1672. LDA #$00# p) A/ T! L+ }" t4 o5 S
  1673. STA APU_STATUS' O* c2 P- x- s: g" ~6 e8 k- O" E
  1674. LDX #$00
    ) A5 _6 P! x. Q
  1675. Sound_Port_Clear_Write6 I! T( D3 b9 i% ~4 t% R
  1676. STA $4000,X$ k% l. u" G9 {2 z& t
  1677. INX6 m" [& h# e; {* q; ^3 s! v# u# j
  1678. CPX #$14. b' k5 d& E% o
  1679. BCC Sound_Port_Clear_Write  S$ H8 A0 z8 t. J% @! f
  1680. RTS
    0 W2 F8 R' n/ E: B8 g1 i" c
  1681. % X/ Z! [( ~. ~
  1682. ;==============================
    6 N  Y) C5 o8 Z8 o$ B$ b- w
  1683. Sound_Ram_Clear;RAM清除/ \$ J! W% C5 Y8 u, R3 o# C! K- R
  1684. LDX #$00
    9 Q; ?" {' O7 K/ H2 _
  1685. LDA #$00+ q2 y/ s& D& J! ~
  1686. Sound_Ram_Clear_1$ J' W5 s% [1 m
  1687. STA Sound_Ram_Addr_1,X& A1 B) T' L3 Z# e- h1 {6 F
  1688. INX
    / Z6 @, i- [0 \/ M: ]+ u
  1689. CPX #Sound_Ram_Addr_1_Size
    / k# O2 u5 e) C) }
  1690. BNE Sound_Ram_Clear_1! D; H/ J; u1 p4 |; p# |
  1691. LDX #$00
    0 D: Y9 V" D& h9 |" ?! k
  1692. Sound_Ram_Clear_2
    4 ~) L' I# M7 N* G" s
  1693. STA Sound_Ram_Addr_2,X, Z6 Z" X; P3 G4 N" T
  1694. INX5 q* ~& p7 b/ Q6 `* ^8 L
  1695. CPX #Sound_Ram_Addr_2_Size
    % T; ]" p* W* w6 ?" u4 c
  1696. BNE Sound_Ram_Clear_2
    . O& E. h& b2 t: P# w
  1697. LDX #$00
      S8 G% h2 r% ?7 |1 I
  1698. Sound_Ram_Clear_3( j- V# {# J' Z* O
  1699. STA Sound_Ram_Addr_3,X$ s5 B9 o" B( C" w. I
  1700. INX# J& f4 g- _9 L7 S. o& ]
  1701. CPX #Sound_Ram_Addr_3_Size
    / J9 ]. W; b' N" n  H0 O
  1702. BNE Sound_Ram_Clear_3
    1 R, r" g1 V8 b. U7 y( }- ^' ?
  1703. LDX #$00" i, d" s) l; ]  J7 G7 o
  1704. Sound_Ram_Clear_4: J! q+ G# Q8 C% Y
  1705. STA Sound_Ram_Addr_4,X& v  f5 D( p* l0 W
  1706. INX& U" }( X- @9 B  l* R! i
  1707. CPX #Sound_Ram_Addr_4_Size
    3 G. l1 f% f- r$ I; j$ F
  1708. BNE Sound_Ram_Clear_4
    ; q& [* U; {  A: @4 v$ [
  1709. Sound_Ram_Clear_5
    8 a+ l7 `( d& l/ h: F  K
  1710. STA Sound_Ram_Addr_5,X
    * i3 @; r2 O$ b: C4 M4 A. X
  1711. INX
    9 o) ^& M' u: x
  1712. CPX #Sound_Ram_Addr_5_Size+ c5 T0 O  \- G+ M) f2 C) I
  1713. BNE Sound_Ram_Clear_5
    ' ]. Y/ ]/ N" i2 I3 {( w
  1714. RTS3 d. C- t3 v2 s! |
  1715. * e8 |9 \6 f" @6 h- s, K4 a
  1716. Get_Music_Collection_Name
    2 N! y3 y: k8 x, W) V& J+ T
  1717. PHA
    & C- S+ O9 \1 {; d
  1718. LDA <Music_Item_Cur$ B4 P; c1 S1 A4 }: C- I
  1719. ASL A. F; g" g2 N3 l- n, |% D& B
  1720. TAY
    ' n: _9 E0 W% J: A$ w5 Z
  1721. LDA Music_Collection_Name,Y/ A7 ^, T/ A$ p* |9 {9 A
  1722. STA <Data_L( o" n) a5 e, X
  1723. INY, f- k, D3 O7 O7 L' a
  1724. LDA Music_Collection_Name,Y. v9 i2 P0 [1 x) l
  1725. STA <Data_H0 F# L$ ?, w9 A( S8 t
  1726. PLA
    + }0 H8 F0 [+ u9 d  g6 [
  1727. RTS3 R8 r" {: O6 x4 E% V

  1728. - c4 W7 }, E6 z0 e
  1729. Set_Sound_Total
    0 D( T( m2 m! k' C5 _( K
  1730. LDY <Music_Item_Cur
    , A. I' f* M5 H& x3 ~0 c5 G8 `
  1731. LDA Sound_Total_Port,Y
    / L; p- R& r( i- z. t( a
  1732. SEC
    ; f: g- z# ]2 X) q0 ~
  1733. SBC #$01) N3 u3 }* m7 d4 ~; L; G) |
  1734. STA <Music_Total
    5 K7 v4 r: d8 k
  1735. RTS4 ]6 v" j; x( o' I+ U4 R

  1736. 3 r# D" V0 q+ x1 a+ U/ D6 {2 c
  1737. Get_Sound_Start
    6 d9 ^/ z1 A# ~% \6 E4 F% z
  1738. LDY <Music_Item_Cur
    + ~. c# E+ @7 b, M8 a& b
  1739. LDA Sound_Start_Port,Y
    3 x. K' g  P1 L( M6 U3 H
  1740. RTS& d- o$ }8 M' b

  1741. % A: @+ \  b  E
  1742. Set_Sound_Init_Port3 C5 c5 l- r& R) |* c& Y' u5 `
  1743. PHA
    & @$ y: Y; ?+ H* t" w4 a
  1744. LDA #$20
    $ _+ L0 w: {3 w3 U& d9 s
  1745. STA <JSR_Addr_Op* a/ D! z$ ]  g. o1 W; |
  1746. LDA <Music_Item_Cur
    7 Y6 A3 q% u9 s5 m. c( O& G- Y
  1747. ASL A
    " q0 b4 G3 i: ^, o& Z
  1748. TAY. N9 ~% ~$ e6 H
  1749. LDA Sound_Init_Port,Y. L: W0 G( S: G; _
  1750. STA <JSR_Addr_L* J7 O  e- M2 A* s; b2 A( X
  1751. INY
    * ], w( G  j5 P6 M# C! c
  1752. LDA Sound_Init_Port,Y3 q3 ~9 O) T5 s
  1753. STA <JSR_Addr_H  u5 |- f: J8 N
  1754. LDA #$604 I5 U- g" ]( G- v; A! O7 S5 o) N
  1755. STA <JSR_Addr_Rts
    3 P1 q. m8 k" [& F2 @* Q
  1756. PLA' U: n1 J/ l! d2 M
  1757. RTS' c$ N( l/ U2 w6 @" N1 [' O/ ]

  1758. 8 D1 g8 k5 i$ o" [8 |5 P! K3 H) ?
  1759. Set_Sound_Play_Port6 i& ]4 n" ^* I( K; v* m' G
  1760. PHA
    ! t* E  T( l! I  G8 B! V# h
  1761. LDA #$20
    ! J# G/ K1 g/ Y2 @1 X; n
  1762. STA <JSR_Addr_Op" N: O+ t0 N& q& }0 n: `
  1763. LDA <Music_Item_Cur  d2 k1 R1 @/ F; t& Y
  1764. ASL A
      ~$ x4 V  M% p9 v' ^4 y  G
  1765. TAY
    * g/ V* [! }6 ~" K4 O9 I: o0 ?( n
  1766. LDA Sound_Play_Port,Y
    0 [* y8 v' X7 M) X8 ?4 M
  1767. STA <JSR_Addr_L# ?( U$ X) z, s& w
  1768. INY  y8 Y' Z7 s$ V
  1769. LDA Sound_Play_Port,Y
    : |( K- C; ^  G. f4 a
  1770. STA <JSR_Addr_H
    - R; ]  {2 j( U0 h
  1771. LDA #$60
      d' Z! |7 w( q/ o% K) j
  1772. STA <JSR_Addr_Rts# {. s8 F( W* P8 W9 S, G% ~2 H, I
  1773. PLA, L+ i7 u) x% w$ y1 {3 p6 F" W
  1774. RTS
    ) H7 k+ T& ^: \5 Z, ?& z/ o3 E: `

  1775. ( J1 @' k, H; u. m0 {' E# F3 ?# U
  1776. Set_Sound_Reset_Port
    ) ]7 D& l5 S! r& j
  1777. PHA
    , V4 C, ]; Q" y, \
  1778. LDA #$20
    ) c/ T; @0 w9 E( j1 ]
  1779. STA <JSR_Addr_Op
    1 ~) g2 I4 [: h" s2 Y5 h/ q
  1780. LDA <Music_Item_Cur  t; Z: \6 d. I, S
  1781. ASL A" O2 Y9 P8 a6 Y3 h- X
  1782. TAY9 M+ A1 `/ d' A" N6 `. z
  1783. LDA Sound_Reset_Port,Y
    2 l7 B0 R# h3 c! W% p: I) M" y
  1784. STA <JSR_Addr_L
    2 Z. x! j) l1 q/ T" f) s* `! |; ?, `( G
  1785. INY2 D! C5 D% V3 B# p7 L# @
  1786. LDA Sound_Reset_Port,Y* x3 }; A  s9 t- T$ y$ r
  1787. STA <JSR_Addr_H
    - _+ m$ Q% J. `
  1788. LDA #$60
    & l0 O3 s0 B+ D5 K
  1789. STA <JSR_Addr_Rts3 N# f# f8 J! {/ \- g" F" M
  1790. PLA# n/ Y# Z$ B  B" s  n- i( Y0 T: _
  1791. RTS
    / d, |& F) r- @8 H" |# X* \( ]2 J

  1792. 8 d0 _; @% L* F: ^- b7 x
  1793. ;初始化音乐bank5 R) r0 y- C! \
  1794. Init_Sound_Bank
    4 Q- v) I4 \- w. o; Q
  1795. LDY <Music_Item_Cur) g) U9 o9 p, y, D8 g; b
  1796. LDA Sound_Bank_8000,Y
    4 _+ M2 o5 ?( z4 d: x3 M# i
  1797. STA <Music_Bank_8000
    $ m6 k3 V- |! l) D  D& G( h
  1798. LDY <Music_Item_Cur4 Q5 W: }* u; K5 F( w, n2 `
  1799. LDA Sound_Bank_A000,Y+ A( \& L; P# X% P2 ?  z( A5 ~
  1800. STA <Music_Bank_A000
    $ `! n4 W+ z9 J2 a! y  H
  1801. RTS
      }$ V% t4 _) s: _' P+ j

  1802. ' y: A* p6 Y. Y
  1803. ;==================================================
    " W' x3 y  ~* _" Z
  1804. Sound_State_Reset;音乐状态重置9 F3 m$ @( F; I5 C$ O. O  P% O
  1805. JSR Music_Bar_ReSet        ;重置音乐条% J2 G% T  D# r
  1806. JSR Time_ReSet             ;重置播放时间
    ; [+ g' `' e% g
  1807. , w# s: a- t, D5 d# G
  1808. LDA #$003 r3 o6 M: A4 N1 z7 e
  1809. STA <Music_Stop_State
    7 s& P, R, @9 `7 z0 c6 ]! q
  1810. JSR Music_State_Show       ;显示播放状态
    " I7 @2 @; C2 W  J
  1811. * ]& U& t4 {, i7 ]* ]
  1812. .IF Track_Name_Pos
    ! P. Q9 K1 ]) a& N4 c( T7 S) c
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    2 W) F& w0 ?! G
  1814. .ENDIF
    - r1 ?+ q( V) ?  k; f6 N% D5 V
  1815. # d- u* [2 T# }. n: l
  1816. RTS
    + A0 E) l2 ?- _; Z" Q1 C7 f) h
  1817. : K* y! B, D  \( e' t7 |
  1818. ;==================================================
    6 D1 k4 ~; v4 Q7 D; b' d; x
  1819. Sound_Init_Proc;音乐初始化处理
    3 j; ?# s7 @" X3 O) j
  1820. PHA
    5 E# u9 p8 T% F/ f, I
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址, q6 v1 C2 Y9 ]
  1822. LDA #$00
    , k5 X7 k& }, ]+ i; O
  1823. STA <Scroll_H               ;重设水平滚动
    ( }) A* z% b9 T6 y2 ^4 s" _9 R
  1824. LDA #$0F& ?$ Y3 |$ U1 G, f2 k
  1825. STA APU_STATUS
    % [% l/ w) F& H* H: l. Y
  1826. PLA
    % q; h$ j$ q+ P* M( G6 e0 N
  1827. JSR Sound_Init             ;音乐初始化+ Z1 U, f1 N' U+ j- `8 v
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    3 ?( {! W  t* x; J
  1829. RTS- ]( C8 {. P0 q6 e+ M' @1 |$ k

  1830. , V- {. Q" @! f: W
  1831. ;==================================================! \1 c; X! `; [4 q4 y, r/ [
  1832. Sound_Play_Proc;音乐播放处理$ N" _, w" Q: ^
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    0 M& M1 w, c# L# A$ _! N
  1834. JSR Sound_Play             ;音乐播放
    9 h: S& o: H: U* a: \& ^4 @- ]- ?* f
  1835. RTS4 s/ q4 T; V- N+ R8 r' |) Y) c

  1836. 7 a) I- c- @# e; O! p
  1837. ;==================================================* B8 f+ K& k6 c! M3 c# l, I
  1838. Sound_Reset_Proc;音乐重置处理$ a2 U: b( [& P$ Q, J9 C  G, D+ ?
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ) a$ z% B7 e+ D! ?( t( |& _
  1840. LDA <JSR_Addr_L
    ! n4 d9 M7 t) i6 o; J
  1841. ORA <JSR_Addr_H: S0 y5 e- M  t; R3 O
  1842. BEQ Sound_Reset_Proc_Default
    . ?/ f0 N6 q1 h- P1 E1 F
  1843. JSR Sound_Reset            ;执行音乐重置" z* _6 _( v9 `% X
  1844. JMP Sound_Reset_Proc_Init_Sound
    , b; C. g$ ~# H/ I

  1845.   {, \8 d4 c: A" h" K& j1 n  ?
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理; R9 B/ E1 p6 |

  1847. . r8 Y. j' t" p
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    : \  o5 K7 b4 M% [. @0 O  T6 b
  1849. LDA #$00
    , p: ]: Z0 r! f
  1850. STA PPU_CTRL
    4 N. R7 P/ S" L/ O" }" E% ]2 N

  1851. ) g6 g  C* Z, t* C
  1852. JSR Sound_Data_Clear
    7 _( Z- Y6 A# j

  1853. " w% \! J" g$ S# ^+ Y( |' b4 s# e
  1854. Sound_Reset_Proc_Default_Wait
    , E: }' U! x: q1 ?" U6 ~6 P4 p
  1855. LDA PPU_STATUS! b- n3 [% ]! l, d. V! q+ ~9 ~
  1856. BPL Sound_Reset_Proc_Default_Wait. \- _" j/ ^4 l% v
  1857. - ~) o! n( {+ @  c+ |
  1858. LDA #$00
    ' d7 ]4 ~/ `! ?3 b5 x( Z- U4 ]0 }! u
  1859. STA PPU_ADDRESS
    6 `$ P& }" a3 T, l
  1860. STA PPU_ADDRESS
    9 _) t5 b4 S/ X- N+ x+ g
  1861. STA PPU_SCROLL% v5 h! i8 x3 B9 l8 k
  1862. STA PPU_SCROLL
    ' C  j$ E/ I2 r' L( ]* I3 E

  1863. 3 o+ ~% E1 u0 s0 Y/ `
  1864. ;恢复PPU控制
    % M- W0 T6 J2 P7 \% w
  1865. LDA Screen_Ctrl2 L/ d  l+ e1 [
  1866. STA PPU_CTRL
    + }1 b1 z$ ^# e9 F0 V, J

  1867. / q5 p) ^6 V- G6 y( |
  1868. Sound_Reset_Proc_Init_Sound/ u& I& D/ D, ~" Y/ i
  1869. LDA <Music_Stop_State2 [$ S6 I! Q8 k2 {9 t+ q" x
  1870. BNE Sound_Reset_Proc_End: v6 |4 Z7 W: @# z0 K
  1871. LDX <Music_Item_Cur! v6 M- c) \2 H1 Y# @! e" [# m" n
  1872. LDA <Music_Cur,X$ |* M! @( {) N: @4 X3 U! w
  1873. JSR Sound_Init_Proc
    7 H. N1 v) u1 T8 X+ g, I
  1874. Sound_Reset_Proc_End% q. Y0 k; f7 v$ ]: G$ w& A
  1875. RTS
    & Q- W  W. i4 C( ^9 K2 j3 b5 L$ {; t

  1876. ' @$ G) h' G8 x! C3 O. g
  1877. ;==================================================
    ; a( x; p6 t% d) E' K: A3 P3 ]; |2 f' x
  1878. Clear_Item_Text;清除页项目5 L- v) C7 }7 O# @
  1879. LDX PPU_Cur
    ) h/ X8 t2 {; A; d7 s0 x# J! m: Z
  1880. LDA #PPU_MODE_CNT_CLEAR
    - m" h& N2 f4 a) Y1 C8 \  s
  1881. STA PPU_Addr,X
    ! \9 Z0 N" ^7 I5 b# {
  1882. INX- E6 d/ @3 |4 H, {) {" d+ i7 c
  1883. " _2 ]6 d6 C# n. B4 L3 B9 c0 R
  1884. LDA <Page_Last9 V' y  H% g3 r- z+ k) x
  1885. SEC* C' K$ j  A9 f
  1886. SBC <Page_Last_Index5 K7 }/ E: m; n
  1887. ASL A7 J8 c- S# p' Z7 L  ~

  1888. ! g, A* r% q; h& z- w) u
  1889. TAY5 {2 `# _; N7 J/ e; I/ d* x
  1890. LDA Item_Pos_Data,Y. n! @% q" b. Z* C( u/ o- \# H8 {+ V
  1891. PHA
    - N$ Q. b1 w* r( ~5 o. z
  1892. INY
    ) Q- ~1 y- y: I5 v* k* ?. O7 h0 ?
  1893. LDA Item_Pos_Data,Y/ E3 Z1 C6 [$ X
  1894. STA PPU_Addr,X& X" n* e( X4 s, T5 _1 ^! ^; h: C
  1895. INX$ f3 \, R9 W9 P) B  K. U
  1896. PLA/ z- O- O& T/ B  f9 e. u* E
  1897. STA PPU_Addr,X1 e8 t8 l4 b5 R
  1898. INX8 f/ ~# l" w2 s
  1899. 1 z+ B) i# K) w& |
  1900. LDA <Page_Last5 O; _$ l9 m% z4 G% x6 f" b
  1901. ASL A# q( l# ~4 k  V1 M6 F; Q
  1902. TAY! H5 J6 {) Q3 V; c: A) s. m
  1903. LDA Music_Collection_Name,Y% [4 k" V. }9 |- k+ m8 j5 D  C# t
  1904. STA <Data_L
    + t( ~/ O2 e8 y1 c, i; ]6 t
  1905. INY
    ( H* [  r1 x6 a6 P7 ^4 K2 j  K
  1906. LDA Music_Collection_Name,Y
    - @, z; t& L, {
  1907. STA <Data_H/ G% ?" A9 c& S$ f: W  L# E

  1908. $ {. Y0 v& D$ v6 N9 n4 Q" t
  1909. LDY #$003 H5 t: N- C4 I; r
  1910. LDA [Data_L],Y
    : @: F# Q1 s6 u* d" b: Q% W% m8 t
  1911. STA PPU_Addr,X1 F& E7 U: ?3 a, U( N- V7 w
  1912. INX/ Y! ]/ J' B0 T3 n
  1913. Clear_Item_Text_End* \2 j: @% K# V- U2 {
  1914. STX PPU_Cur
    $ I2 ^/ V. G* r6 `. ^) J; f
  1915. RTS. T: Q/ }% n7 [$ \. W  w7 ~

  1916. 2 K( x0 d' L# A$ U. A: `1 n
  1917. ;==================================================( X$ c. b% }" v3 v* e, L+ e
  1918. Show_Item_Text;显示页项目& q6 Y8 D' x- M9 m( y
  1919. LDX PPU_Cur
    6 c& K2 T! E, m
  1920. LDA #PPU_MODE_CNT_LINE' L- x4 w: a; _1 t. a
  1921. STA PPU_Addr,X0 Z, [2 ^% f7 B& r
  1922. INX
    , m3 p7 l) T9 x( |- b* I  R! _9 j
  1923. LDA Page_Cur9 L2 H, l8 N; p# `5 d" j
  1924. SEC
    % p9 p3 i# U: G, _& O, z
  1925. SBC <Page_Cur_Index  i9 R3 W: G# t/ x+ p
  1926. ASL A6 D, f( q1 W' |1 [
  1927. TAY6 p" u8 {& n' ~' o# J1 l0 X- o( n/ }
  1928. LDA Item_Pos_Data,Y
    ) v% H* ~: d- r+ D" Z
  1929. PHA
    & V# ^) _5 w  [, F  T$ _9 W* ]
  1930. INY
    / v) W3 k, b$ n. M. v1 J( n$ q
  1931. LDA Item_Pos_Data,Y
    - d# i: m, R$ U) G+ Y
  1932. STA PPU_Addr,X
    . _7 L  d; H* f1 `8 u% g% n/ K
  1933. INX
    * A) k# y  g; b8 L$ W
  1934. PLA4 i. `: y! D/ z% ^8 }/ N9 D. p
  1935. STA PPU_Addr,X* C/ ~7 ]* M# l4 U
  1936. INX* q" s: ^. C- ?4 u& f# \" O

  1937. ( p2 ]+ V( ?. W. a8 s
  1938. LDA Page_Cur3 q) R5 K% u" ^( A; f6 ]1 Q
  1939. ASL A! D2 }% N  W. Y; K- p
  1940. TAY4 ?& e6 F/ W- ~4 p7 \- ?4 w4 Z3 C( C
  1941. LDA Music_Collection_Name,Y
    # a  e; t( P/ R
  1942. STA <Data_L+ X2 A8 d  t$ n0 f
  1943. INY
    & J. H/ t% ]8 n, Y1 Y3 r. `' H
  1944. LDA Music_Collection_Name,Y
    & v, }7 J" r. a) }5 H
  1945. STA <Data_H% y$ D2 U& k/ V8 Z0 V. |
  1946. ; {6 K9 n/ E6 r2 {* g5 y" U
  1947. LDY #$000 }5 K. }* |8 S0 G' J6 j$ R
  1948. LDA [Data_L],Y5 j/ b* w6 q0 r: ^7 `0 B) W
  1949. STA PPU_Addr,X4 B4 U+ h. `/ w
  1950. STA Data_Cnt2 a# n- f5 V' b5 ?( M+ A3 |
  1951. INX
    7 @9 j4 Q; e* v% Y! @# k; J

  1952. 9 j% y6 f  R. J" c" R& N8 b
  1953. INY
    : y; D- D1 k  ^1 x. w
  1954. Show_Item_Text_Write" r6 Y+ Z' |0 K5 g
  1955. LDA [Data_L],Y
    ; ?2 t6 E% f3 @5 j
  1956. STA PPU_Addr,X+ A2 {1 X2 C" M: u. v0 ~: d
  1957. INY3 v5 m' U9 T3 z" T
  1958. INX
    * N; I! b2 q( i
  1959. DEC Data_Cnt
    : W/ [% d6 m, i  D: n# \
  1960. BNE Show_Item_Text_Write
    2 K) d1 A8 r! e# {
  1961. , [/ a4 d* Q' l9 ~: Z
  1962. Show_Item_Text_End, |6 Q: n) g' |  d8 P
  1963. STX PPU_Cur
    - q# L7 d$ c: B" N9 t  v* z
  1964. RTS: z# C" V" r! E. d

  1965. , H- e( [% a1 x" \
  1966. ;==================================================
      ], `( M0 z) Q' {
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    ! X4 k; p0 P8 {- W" p
  1968. STA <Data_Buf
    , c' P/ c0 h3 z2 i$ J1 Q! o
  1969. LDA #$00& |7 h) J* E; [/ ^) ]
  1970. Get_Page_Index_Calc
    / R# h, [0 ~2 W! g# e% e: s4 x
  1971. CLC
    : p( U0 y" ]7 ?" o9 ], |2 w1 i9 S  Q
  1972. ADC #PAGE_SIZE% d$ I* P8 n, H2 p- e
  1973. CMP <Data_Buf
    * v9 ]2 ~) L" ^% o
  1974. BCC Get_Page_Index_Calc7 i& p+ K4 r) K+ j! i0 W- v/ f5 ?6 V
  1975. BEQ Get_Page_Index_Calc_End( X, l$ W9 n5 N' X5 f* I
  1976. SEC
    2 m- T) R( \4 O( F
  1977. SBC #PAGE_SIZE5 |7 V9 Q" s# G+ ^
  1978. Get_Page_Index_Calc_End9 d6 i3 X( ~) q
  1979. STA <Data_Buf
      [: M0 I% L7 J% A1 L( _
  1980. Get_Page_Index_Cnt
    / W: o, O3 t; _0 ?4 S1 m  ^
  1981. LDA #PAGE_SIZE+ W3 V  ~  f. X" K& z" d+ a/ k
  1982. STA Data_Cnt2 z! @0 G/ V& K/ E8 i

  1983.   U4 {8 N4 E% f. O
  1984. LDA <Data_Buf4 j2 P2 e$ {: x' Y! l
  1985. CLC
    . j' q5 e5 X% ^* J, A+ m
  1986. ADC #PAGE_SIZE7 z+ s" g$ `. |8 r1 C, E" {
  1987. CMP #ITEM_MAX_SIZE
    : z  q- ^6 s$ a3 x/ \1 f. c9 s7 z
  1988. BCC Get_Page_Index_Cnt_End) F0 M. ?8 l2 S+ M1 r4 ^

  1989. " `: z3 I* G6 s6 O9 {
  1990. LDA #ITEM_MAX_SIZE
    $ Y! b! a' O8 l( M2 q6 z; J" B
  1991. SEC4 E2 \, x+ C  e' @) g0 ?
  1992. SBC <Data_Buf
    2 K% R/ \3 D' e! K# E
  1993. STA <Data_Cnt. N% \0 |. t& {& ?- h/ E. z) E

  1994. 1 ~0 Y, ?4 E9 w
  1995. Get_Page_Index_Cnt_End
    : t  _* ]8 y8 s9 Z" |- f1 g6 x
  1996. RTS
    ) X; a" y7 z) X2 `# m( z6 q

  1997. 3 z$ v  f; P9 I0 k
  1998. ;==================================================
    2 L6 X* ?" v. f; V. f: S
  1999. Get_Last_Page_Start_Index3 h: ]* q0 i4 k8 Q5 V* B  y
  2000. LDA <Music_Item_Last3 h5 U  H; h1 b: t7 C/ b
  2001. JSR Get_Page_Start_Index
    ! {( K/ o( j! @
  2002. LDA Data_Buf( Y# Y4 W0 U) @% ?: G/ c) z
  2003. STA Page_Last
    4 z7 P  C. r( S9 K" q
  2004. STA Page_Last_Index
    . h, Q. {' ]0 k( W- e' y4 |
  2005. LDA Data_Cnt% \! K  v/ h4 f: X# j
  2006. STA Page_Last_Cnt
    6 M, b% v8 t7 u% L
  2007. RTS
    # d/ {! {1 [" X! Z! X7 g" A

  2008. $ B6 f6 W& P3 p9 ?! S
  2009. ;==================================================, J7 ~' U! j( E  O( Q
  2010. Get_Cur_Page_Start_Index5 E2 R. B$ f* ?) g) b- v; J$ ?0 z
  2011. LDA <Music_Item_Cur
    1 {6 m9 N  v/ g( s
  2012. JSR Get_Page_Start_Index" r: `+ y0 q4 |& D1 a0 \6 ~# s7 R1 K
  2013. LDA Data_Buf
    / k7 H/ y4 D7 `# U: m3 Z3 G
  2014. STA Page_Cur
    8 x% ^2 K" v% J
  2015. STA Page_Cur_Index
    ; Z( K/ j6 E8 S, L: w1 z
  2016. LDA Data_Cnt
    ) B) C& E" T7 D/ X( p% o! V
  2017. STA Page_Cur_Cnt( D! L, S, J3 v% I( W4 [$ l3 S  X
  2018. RTS
    % l2 D& P+ W- r9 L  \

  2019. 6 I9 x. l% [$ p+ _9 V- m
  2020. ;==================================================9 P( B% L+ H# ?* O# B" E  [2 F
  2021. Show_Page_Text;显示页文本
    3 q3 i. Y5 {( o* v) j6 ?
  2022. LDA <Text_Disable_Flag
    # Z$ L6 [) T& ^- U3 |
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    5 I# I3 \1 b  u  f1 b
  2024. STA <Text_Disable_Flag- w  B5 Z( T9 {* H, U$ `" t0 P, Z

  2025. $ U+ @$ [7 H, Z& b( s( t
  2026. JSR Get_Last_Page_Start_Index# z+ `" U8 f& i9 O, Q3 D4 d
  2027. JSR Get_Cur_Page_Start_Index5 }# Y6 |* L  h; z6 G$ u8 N# y

  2028. ) e5 ]7 M8 m$ Q
  2029. Show_Page_Text_Set
    . x9 O* @; R$ D" Z7 L8 ~

  2030. % a5 S( x5 H& w9 V; x" T  O
  2031. Clear_Page_Last_Item;清理上一页
    + M$ g4 N# J9 G
  2032. LDA Page_Last_Cnt
    / J8 z6 h# g. f, D3 V% s
  2033. BEQ Clear_Page_Last_Item_End
    # w4 O0 X' N/ E
  2034. JSR Clear_Item_Text$ j4 O( `, u( h# t/ u
  2035. INC Page_Last2 Q8 F$ a! T  g
  2036. DEC Page_Last_Cnt
    . |$ H8 Z+ p" P& ^
  2037. Clear_Page_Last_Item_End% y8 R0 u0 P( y1 G( ~
  2038. ( Z9 ~8 D1 g" i9 h& x  k& @
  2039. Show_Page_Cur_Item;显示当前页
    4 h* P5 m" ]+ t+ J0 n# m3 e0 S
  2040. LDA Page_Cur_Cnt6 [/ u5 p( `& O2 o
  2041. BEQ Show_Page_Cur_Item_End
      W9 a/ n9 q/ K1 S7 F
  2042. JSR Show_Item_Text
    2 ^: _2 C7 t9 l1 S( @
  2043. INC Page_Cur  v1 G) K( c% [% L! N
  2044. DEC Page_Cur_Cnt
    " ]* t# W  N4 n% R+ C
  2045. Show_Page_Cur_Item_End- U, @2 @8 w  {$ h

  2046. 2 }: r% L2 s7 }/ T4 T' t( M
  2047. INC <Time_Wait_Cnt6 ?0 u9 n# u6 v+ U! A
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    ! D$ O/ _( d% e. P9 ?- q4 J' q
  2049. LDA <Time_Wait_Cnt
    : r1 X/ m7 K& U, t% w! W* y( |
  2050. BNE Show_Page_Text_Set_Wait
    $ ^7 ?' Y% I- G- j5 N; ^- \
  2051. - H2 w/ ?/ ~% p& j7 |
  2052. LDA Page_Last_Cnt
    ; v* [* H8 O; S. |
  2053. ORA Page_Cur_Cnt
    $ d) b0 ]) Z- H& d
  2054. BNE Show_Page_Text_Set% ^0 O1 m, g) M4 i
  2055. LDA <Text_Disable_Flag
    / k# ?9 U! @& S; f" q6 C# K
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    ( d# J1 r/ l: Y7 l
  2057. STA <Text_Disable_Flag
    9 ~, F* X5 `5 @6 g) a
  2058. RTS5 D2 l8 P" S0 [1 ^' ~5 W
  2059. ; v  n$ x5 @$ N0 M
  2060. ;==================================================- x1 S7 M5 u/ G
  2061. Last_Item;上一项
    0 i- R* |7 m( X4 \' A1 c
  2062. JSR Clear_Last_Track_Name. F/ ~* J( J4 P& ?& K9 M% Z
  2063. JSR Disable_Text_Draw
    " `  X4 I) W( D7 m

  2064. , s, |/ f/ E* L9 `8 T' p% F# `
  2065. LDA <Music_Item_Cur
    ! u' p* f" T9 s9 [7 z2 r
  2066. STA <Music_Item_Last/ U9 T' \  N# n

  2067. ! R# r2 |7 d3 x+ _2 |
  2068. JSR Get_Last_Page_Start_Index
    5 E  I$ t! w, c) r# b+ o
  2069. 4 v8 l! I5 q5 X5 l- u
  2070. LDA #$00- L) |, t, O- ]- D( p
  2071. STA Data_Buf; m; I$ Q2 l  A0 V9 _8 a3 |% F

  2072. , a3 ~. L9 r: G1 K
  2073. LDA <Page_Last
    , y4 y7 W- E2 _- b# @; k1 A& d
  2074. CMP <Music_Item_Cur2 z/ T0 f  N) M7 m1 t. i2 Z8 r
  2075. BNE Last_Item_Begin; S1 X% O3 e' H/ d4 Y% Q. I

  2076. 4 {4 N9 Q5 n# ]0 W
  2077. LDA #$01& ^9 D* W; X0 I% z( m7 A2 x
  2078. STA Data_Buf& a0 {: m3 H; k( s3 Q1 V
  2079. Last_Item_Begin- w. u" j. h# [3 _" [9 v0 q) u3 n
  2080. LDA <Music_Item_Cur! H. t- \6 \$ Y3 W- f. |1 T4 K
  2081. BNE Last_Item_Set
      l. @" O" I: {+ \6 V
  2082. LDA #ITEM_MAX_INDEX + 1* P0 W$ [  [, v" h5 K# k# [4 B
  2083. STA <Music_Item_Cur# K/ ?* _: ~# ]: Q4 e. a

  2084. " ?9 u/ O) |9 M
  2085. Last_Item_Set3 [9 b: d( p# o$ a6 O% f
  2086. DEC <Music_Item_Cur! L1 i% `# j: x7 v- J
  2087. LDA <Music_Item_Cur7 r0 _" W. ]# I, \
  2088. JSR Reset_Current_Music
    ( \+ ?0 b% g" r% a2 ?, w, M, h

  2089. & O( j  w  f% Y, v: H* N
  2090. Last_Item_Play
    " a! c/ a& \9 D
  2091. LDA Data_Buf
    5 W. u- h# U' A! _
  2092. BEQ Last_Item_End5 f" g' F) k" X& U9 C- k5 ~
  2093. JSR Show_Page_Text: w5 `3 l0 T. `# q
  2094. Last_Item_End5 U/ u2 g8 I! B1 o- c" t
  2095. RTS! c9 j+ M! J4 A9 h5 K. W
  2096. / l/ L+ J$ @: z) P+ o! X
  2097. ;==================================================& ?: g1 z* A, X6 x
  2098. Next_Item;下一项
    5 @: `- ^7 A1 n3 M
  2099. JSR Clear_Last_Track_Name6 v4 O' f+ R8 D4 ]
  2100. JSR Disable_Text_Draw
    ! d( F8 @* V( u5 V& c( @% r; v

  2101. / m# X3 A) ~6 [5 _0 C5 A3 i
  2102. LDA <Music_Item_Cur1 S# W7 t- w, d5 Q- o1 c
  2103. STA <Music_Item_Last) ~: N, k) h+ I% v

  2104. 2 E3 h" {6 U. r+ [& X/ j, X
  2105. JSR Get_Last_Page_Start_Index
    1 f9 ^6 S5 h7 I

  2106.   n1 z( Q" `( C/ z' K; [3 k
  2107. LDA #$00
    ' F5 s8 u6 }* L" ^
  2108. STA Data_Buf3 K, Q6 F7 X3 Q; d
  2109. $ y; e0 n- J- \, k
  2110. LDA <Page_Last
    & N$ l" o% A  ]6 F* {7 \; ]4 o1 m9 R. B
  2111. CLC/ U" q- f$ h  s" ]) i. m
  2112. ADC <Page_Last_Cnt# j2 z; B0 f$ Q
  2113. SEC
    % J( j* A/ P. |1 T
  2114. SBC #$01
    . ]8 o( r7 E& |4 h
  2115. CMP <Music_Item_Cur
    - M3 ]3 b  D7 v! u
  2116. BNE Next_Item_Begin4 M6 A$ E/ X7 j

  2117. 6 k) X, c$ @+ k; Z/ s. c% Q" @
  2118. LDA #$01+ n& B5 T9 Q- z- g9 Z" ?3 k
  2119. STA Data_Buf
    4 K: |* G. j- m# Q: c+ w1 W( y
  2120. Next_Item_Begin
    : p( V" ~1 v! F$ n
  2121. LDA <Music_Item_Cur9 Z' c  _: B; Z: h
  2122. CMP #ITEM_MAX_INDEX$ P1 H+ t6 D; u' @
  2123. BCC Next_Item_Set
    ) ^# I* l$ L) K2 i3 z
  2124. LDA #$FF- q& s: C4 ^2 `% s8 m6 Y% m; R! u# R
  2125. STA <Music_Item_Cur
    2 }* J0 W+ N" Z2 v& C
  2126. Next_Item_Set& g( Y1 k; v) B( f! H* Y, c& N/ S
  2127. INC <Music_Item_Cur1 \& R' r6 o( h  f. k
  2128. LDA <Music_Item_Cur
    . z# N( n' Y; ]
  2129. LDA <Music_Item_Cur
    ) \2 z4 ?! v( b/ t& N" D9 e
  2130. JSR Reset_Current_Music1 f1 ?0 F/ P% }' I& b
  2131. Next_Item_Play
    : j' R4 w6 Q( N# U2 K5 q
  2132. LDA Data_Buf7 j& [  q- Z5 E
  2133. BEQ Next_Item_End
    ! @' b0 j; w0 B% w
  2134. JSR Show_Page_Text
    : t0 G! W: }. i. \
  2135. Next_Item_End
    $ `; h: V: P5 q* R* D) p# L
  2136. RTS
      k5 @2 y7 g& F2 [
  2137. 3 b0 A" @# C6 z. @( N7 E+ |* d
  2138. ;==================================================
    ) ^. V; p' I* G, l6 N* O, t; }
  2139. Last_Page;上一页/ ]8 {' c8 }3 W; }. @7 j0 W4 A
  2140. RTS# l; c: |6 R' t1 K1 `! J3 d

  2141. ' Z0 M, s% o  \8 `/ b* C8 R
  2142. ;==================================================
    * V* J: L2 _7 M6 q% J, z2 l' _; x
  2143. Next_Page;下一页  ~( x" g# |$ G0 C* h# h1 c" c
  2144. LDA #PAGE_MAX_INDEX
    & @* G& v4 Z; b8 K+ n
  2145. CMP #$01
    . T7 j( X6 Z" w2 l3 P
  2146. BEQ Next_Page_End
    " k6 Y4 [/ D8 y) E1 J5 a( f
  2147. * M8 D0 ]" B% [
  2148. LDA <Music_Item_Cur5 l% f) V4 U7 V" B& p$ a% Z# i( B+ C
  2149. STA <Music_Item_Last
    ) F+ `+ J4 c! @. X

  2150. : `9 @+ K# e  U, o: l
  2151. JSR Get_Last_Page_Start_Index5 \/ g. O" z! Z; G# U% D* C3 k
  2152. 9 w2 O# f5 i" r1 }
  2153. LDA <Page_Last_Index% B/ Y0 {7 k- p' i5 e
  2154. CMP #PAGE_MAX_INDEX
    * z% W$ l  w- M* W1 e5 _
  2155. BCS Next_Page_In_End_Page+ C0 T6 X. t0 a4 w1 Z8 n! \% e
  2156. + u& v$ c( k1 |3 R& b3 C2 V  M
  2157. Next_Page_Not_End_Page;不是在最后一页" Q& G, g' l% K
  2158. LDA <Music_Item_Cur
    . r9 |4 K( o3 w% m4 d4 T
  2159. CLC
    . \- k3 K) Y% l8 H, P
  2160. ADC #PAGE_SIZE
    9 g  b6 p7 R2 S5 o
  2161. CMP #ITEM_MAX_SIZE
    2 ?4 J/ A7 @. u5 D; y! A0 _
  2162. BCC Next_Page_Not_End_Page_Less
    ! l0 m+ Y/ g: ~+ o) B, g2 m
  2163. LDA <Music_Item_Cur- H% @+ P' K5 l# M  E. c
  2164. SEC
    8 D5 D% @5 ^3 z8 b
  2165. SBC <Page_Last_Index
    ) p- j; ?  i! E, E$ _+ I3 Y
  2166. CLC
    5 E, ^! P. ]! t, F5 W' Q* k7 Q
  2167. ADC #PAGE_MAX_INDEX
    : ?+ j8 j+ v/ j3 Y* c. A: K) x
  2168. CMP #ITEM_MAX_SIZE3 G% E3 Z* L9 h7 q  @
  2169. BCC Next_Page_Not_End_Page_Less
    * l0 c( t/ u) J5 a% D- G
  2170. LDA #ITEM_MAX_INDEX
    & C4 n) c1 |( q1 _7 z- m
  2171. Next_Page_Not_End_Page_Less
    , X* N! M1 ~5 J  q
  2172. STA <Music_Item_Cur/ ^/ B  u" o/ Q, Y
  2173. JMP Next_Page_Reset: b& g5 g' a. w7 d, i0 g( W) W; x
  2174. 1 c& Y8 }5 @+ d8 Y9 @' W, H7 t  ~
  2175. Next_Page_In_End_Page;在最后一页
    ; X' b8 M& V8 T6 L' c; N6 k; v
  2176. LDA <Music_Item_Cur  t# h) p4 G+ u- b1 y9 Q& d; l0 o
  2177. SEC1 D( T- |3 ~2 v+ H8 R# u8 `
  2178. SBC <Page_Last_Index
    3 q" o* F. C/ X  B6 X) z9 b, ~: a0 ?
  2179. STA <Music_Item_Cur+ x- s+ ]6 h; |  }4 ~

  2180. 1 W* p, n( S0 I. G! G) ^
  2181. Next_Page_Reset% I9 P. `4 G" [, T0 Q- M: _
  2182. LDA <Music_Item_Cur8 G+ Y5 {- ~8 G- U7 b6 k
  2183. JSR Reset_Current_Music
    3 [: i7 Q% O1 k0 ^$ k
  2184. JSR Show_Page_Text
    ) L! A, ?0 a' a4 L& V) }
  2185. Next_Page_End; y6 e4 v6 _% A
  2186. RTS- U. J9 {9 x; X7 I$ w+ v. D

  2187. ' U$ x* V& D1 K; m! K( C, a
  2188. ;==================================================
      O2 k/ P  J9 ^+ w3 ^
  2189. Disable_Text_Draw;禁用音乐条刷新$ h, x4 p* X+ j* J
  2190. LDA <Text_Disable_Flag
    $ ~! {( I# [+ ?5 {. z) Z1 B
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
      K4 M8 o& k5 ^! t3 ~5 Q
  2192. STA <Text_Disable_Flag
    3 U2 w0 f8 i4 S8 D" @( q+ w& W4 I
  2193. RTS
    6 @) W5 D' C: X) `' E7 |
  2194. . [: V$ O# |+ a! ]& t5 H
  2195. ;==================================================# z1 U' H+ P4 X5 X6 X* S, L
  2196. Clear_Last_Track_Name;清除上次曲目名: a# D1 _0 C1 I5 k4 Q2 u4 K
  2197. LDX <Music_Item_Cur& M$ l) }1 Q2 o5 W" ~: R
  2198. LDA <Music_Cur,X, s7 ^5 U) K0 _; v1 S8 @
  2199. .IF Track_Name_Pos
    7 R+ H0 B; U3 h
  2200. JSR Clear_Track_Info
    # P5 @/ P7 B" w7 u% W% U
  2201. .ENDIF
    " A/ ^% I$ w* `: m  t& [+ S
  2202. RTS
    4 g, O' q, [/ j+ A

  2203. 5 f3 ^. l5 f9 Q- u! V# X$ S
  2204. ;==================================================
    6 ?1 Z8 y0 T- t; m) L
  2205. Reset_Current_Music;重设当前曲目1 W- F/ ?: m. f3 O9 u3 J! L* ~
  2206. & u" Y+ y% @1 D; z
  2207. ;写入当前总曲目$ ]5 L' k" e& q, L/ L  _% F2 K
  2208. JSR Set_Sound_Total8 S( }7 z# q( L0 X: `; ^
  2209. LDX <Music_Item_Cur2 I7 b2 @$ }8 p8 g$ l: [

  2210. 6 B3 q+ g! c3 U$ X8 `
  2211. LDA #$00
    5 ]$ c  I2 h  N7 p9 Q" t
  2212. STA <Music_Last& j3 R/ D8 t% m# k8 x: {1 D  [

  2213. 2 S' N' L0 ~' u7 e. y+ @
  2214. JSR Sound_Reset_Proc1 \0 G* W) Y2 H9 @7 S
  2215. JSR Music_Show
    1 |& K1 U2 t7 a2 e
  2216. RTS* l9 N3 u% M" v) `5 @: G$ z3 z

  2217. ; m/ I/ n4 i2 a
  2218. ;==================================================
    ' B0 E- h+ W) ?
  2219. Music_Song_Stop;音乐停止
    5 F, Q. ?& n+ R
  2220. LDA #$01
    ! p8 f5 L$ l0 |4 |( ~' u9 N
  2221. STA <Music_Stop_State1 Y% Y& p; C; H8 a/ O  z  X
  2222. JSR Music_Bar_ReSet& Q* Q5 z% m, X! J1 {! C7 s* _
  2223. JSR Time_ReSet( ?2 m+ h2 D* t! t% c8 M5 W
  2224. JSR Sound_Data_Clear
    7 v& T- |! M5 \$ g% `: h
  2225. JSR Music_State_Show) t' ]/ ], `. d3 P) T
  2226. RTS
    ! p( u8 K$ G6 o# V' m
  2227. " [* Q7 n# z% p: v  g
  2228. ;==================================================  \( Y' P& M: p; i, U/ ~
  2229. Music_Song_Play;音乐播放, C' o# X* m) o1 B0 R' S: o
  2230. LDA #$00$ y7 z, u7 n& b4 o5 w
  2231. STA <Music_Stop_State
    ! j; ]$ T8 r+ A) ~
  2232. LDX <Music_Item_Cur) x% J( _6 Y3 w: `- P
  2233. LDA <Music_Cur,X
    ) L, J& Y1 n6 [# Z4 \
  2234. JSR Sound_Init_Proc
    & z" m/ I6 F3 U* H
  2235. RTS
    ; R  h" F: k3 h8 j6 I" u5 l

  2236. 0 N6 X8 b0 T7 [% @  E% m
  2237. ;==================================================
    7 O0 A( [" w$ k6 p7 {
  2238. Music_Song_Last_10;上10曲& q2 ]/ D" i1 n+ G$ r
  2239. JSR Clear_Last_Track_Name
    ) e; m9 j9 T$ v, I
  2240. JSR Disable_Text_Draw
    / }# j. y0 i& s6 ]0 Z! t
  2241. LDX <Music_Item_Cur6 J. F6 }! U& E  A" v) R1 Q+ y
  2242. JSR Set_Sound_Total2 x8 @2 E" \5 b
  2243. LDA <Music_Cur,X( `4 {! p* L8 h
  2244. SEC9 a) ^& b; ~, ^- h) V5 Y' l
  2245. SBC #10
    3 I! ~/ B" P; l/ P
  2246. BCS Music_Song_Last_10_Set4 }. ]: i$ [, o' p
  2247. LDA #$00- d- K" n" O' l# q0 i' P) a! f
  2248. Music_Song_Last_10_Set- w) [, o) V/ b2 Y8 f4 p$ W
  2249. STA <Music_Cur,X
    / x* Z; Z! r5 K8 F8 {
  2250. JSR Sound_Reset_Proc
    # }* f/ D" B2 }. I5 k$ I
  2251. JSR Music_Show' g! O2 z7 T( I% `
  2252. Music_Song_Last_10_End/ a+ G# z# ]2 v. Q: D$ }
  2253. RTS
    : v; {) H; l2 G7 ~4 f& B: W2 d1 T: W
  2254. " `3 o2 q: R# g' i! R
  2255. ;==================================================/ W' A0 c! Q, o5 n
  2256. Music_Song_Next_10;下10曲
    9 i3 m) u! ^/ j3 D* C2 \
  2257. JSR Clear_Last_Track_Name
    5 t4 o- v; d4 ~' o- G. g0 B; B
  2258. JSR Disable_Text_Draw* R  o1 X8 r" y' M% u
  2259. LDX <Music_Item_Cur
    0 e8 B  w7 e2 p
  2260. JSR Set_Sound_Total; j. v7 u0 c& l0 O6 _
  2261. LDA <Music_Cur,X: R4 B+ x. e" S. `' M! D$ {
  2262. CLC
    $ Z7 ]: o5 {! F0 c6 L
  2263. ADC #10
    & M3 Q5 D- t2 b4 z  M8 ]# p
  2264. CMP Music_Total
    ( O+ G' P3 e- f" p, c) o
  2265. BCC Music_Song_Next_10_Set$ o) Z) h/ M' j, ~( |% g
  2266. LDA Music_Total1 y( C# B) J. U% Q% @  V
  2267. Music_Song_Next_10_Set7 X0 E( h$ q* U3 x+ q" e& c" ?
  2268. STA <Music_Cur,X' D" c1 ]/ ~7 G: O( ~" K5 Z  A* D' w
  2269. JSR Sound_Reset_Proc
    / G2 r7 x+ l' ]/ A3 c# }* {2 ^
  2270. JSR Music_Show
    # [6 D" N2 B: s( K
  2271. Music_Song_Next_10_End
    5 o8 B0 B8 @  S" n9 L+ g, n
  2272. RTS& @  l5 p# S- ~. P# d( \. M. V( \

  2273. % F2 M3 c6 c4 w# d
  2274. ;==================================================2 M% J9 {6 z+ O1 x+ K
  2275. Music_Song_Last;上一曲4 }, ^5 i' ]' |/ m+ }9 p% N2 z0 V
  2276. JSR Clear_Last_Track_Name
    * Z; I) E3 C. z
  2277. JSR Disable_Text_Draw
    * K2 X9 T3 g0 a
  2278. LDX <Music_Item_Cur
    / K# q8 R1 m6 j
  2279. JSR Set_Sound_Total7 t1 X8 z* x/ _7 k8 w. e
  2280. LDA <Music_Cur,X! V5 d& l$ p8 l+ \! M1 e* I
  2281. BEQ Music_Song_Last_Set
    # ]8 L8 R3 y: j! d
  2282. DEC <Music_Cur,X
    $ K, k( \8 R, r/ T
  2283. Music_Song_Last_Set
    2 O4 v; E$ s) {$ V1 a) L
  2284. JSR Sound_Reset_Proc
    3 G+ w3 w# Z6 g! M' F- |6 `
  2285. JSR Music_Show
    ! I( [0 n( [+ P- q( x
  2286. Music_Song_Last_End3 ?# @6 p* v: z8 m+ {5 N
  2287. RTS5 [, `; O# B$ N+ b3 p

  2288. . o3 w, y# C. S, j, ]0 q2 K. r
  2289. ;==================================================
    ; S% D: \' U* G8 X: T/ D
  2290. Music_Song_Next;下一曲4 n3 R+ L) K2 T/ ~
  2291. JSR Clear_Last_Track_Name
    * Q1 y0 i' Q6 b/ \2 j
  2292. JSR Disable_Text_Draw
    3 v, m$ `; P' e: `; a( K
  2293. LDX <Music_Item_Cur
    7 x3 |9 s3 d2 R( u
  2294. JSR Set_Sound_Total
    7 \2 C5 m( X3 `; e2 K6 H) u; Y
  2295. LDA <Music_Cur,X& \5 ?- J7 G- \' ~# {% o$ X* ]
  2296. CMP Music_Total
    - ~$ g' p% r& m" v! ^' s+ ~9 @' k- ^
  2297. BCS Music_Song_Next_Set. O6 l5 q2 N: n: q( `8 ^
  2298. INC <Music_Cur,X
    + l$ q8 h0 k- s2 G$ T- {/ S
  2299. Music_Song_Next_Set
    1 _+ f2 k1 X, i2 }
  2300. JSR Sound_Reset_Proc
    ( Y, y9 L- \" \
  2301. JSR Music_Show3 u* g) i. a# u5 l( w# G
  2302. Music_Song_Next_End0 X9 X- K0 b$ [/ @" u" s% d! ?
  2303. RTS
    7 Y, S. ^( W, ~
  2304. ! u: v( D1 @7 O& F4 @
  2305. ;==================================================
    , T  d5 e% ?; j0 b! B/ c1 T3 q( Y
  2306. Change_Select_Item;改变当前选择项
    ( W1 k% Z# `3 o: t+ _* ~# K; D, h
  2307. ;--------------------------------------------------
    # C5 e- S5 u6 L! z5 k5 H$ a
  2308. Change_Select_Stop_Play_Item;停止/播放4 D% F. @: P, }" o: b
  2309. LDA <Key_Once
    & t/ t# W2 k* H, r  M
  2310. CMP #$10* h* ~; @, R' @- q; ]* a% G8 P
  2311. BNE Change_Select_Last_Item" O( a, O- Q' z9 G- i* H, X
  2312. LDA <Music_Stop_State% z: d8 g; @5 M; L# I# Y' f& p
  2313. BNE Change_Select_Play
    0 {3 m6 j0 H7 M. t0 R6 D! p: R
  2314. JSR Music_Song_Stop
    3 j" m) O( p/ J3 V% {7 o% }4 e' n0 s
  2315. LDA <Music_Stop_State5 V" ]8 {- l/ y: ], ]
  2316. RTS
    ' ~! P# t4 z2 z2 X- W

  2317. 2 [' D$ L5 x; ?4 Y' n8 [8 |# ]( E  `
  2318. Change_Select_Play* a1 W! o! P* \1 v; L, X
  2319. JSR Music_Song_Play  v0 P! f0 w) F$ y1 K: c' Y+ Q
  2320. RTS, l/ `+ T: Q4 ~7 P
  2321. % B# w8 a7 u2 ]3 A+ k6 v+ w# P
  2322. ;--------------------------------------------------" y. s, L7 w. A. W: _
  2323. Change_Select_Last_Item;上一个专辑7 j' b) L' U! J1 A* p1 {) y
  2324. LDA <Text_Disable_Flag* {- \& d- a# B
  2325. AND #TEXT_DISABLE_ITEM
    * ?( ?0 H) {" j; S! d* H2 J8 m0 E
  2326. BNE Change_Select_Item_End- [5 |$ Y3 O5 V( ?& Q8 d; T8 J- K
  2327. LDA <Key_Once' r# z6 e! a* W! ?  y
  2328. CMP #$08
    0 t  Y4 \2 i4 m5 x
  2329. BNE Change_Select_Next_Item
    / G9 Q7 n/ ?* j1 h& L! X% I
  2330. JSR Last_Item( \7 A( H' X% U' Q& C8 v
  2331. ;--------------------------------------------------
    : c- X, u% [* c. j
  2332. Change_Select_Next_Item;下一个专辑
    ( A. ?; ?) i- M: P) W" ]+ N/ F1 ]8 l
  2333. LDA <Key_Once  j9 R" q9 Z4 h4 S
  2334. CMP #$04
    / ^& n4 Z; ~, ]8 t
  2335. BNE Change_Select_Last_10. \% N# r' A9 @! q2 j0 Q
  2336. JSR Next_Item
    6 V$ h9 U1 I; l6 k
  2337. LDA <Music_Item_Cur
    6 G7 \+ B  k% Q
  2338. JSR Get_Page_Start_Index  p( i* j* A9 `4 O2 k
  2339. ;--------------------------------------------------: @, R2 F+ T5 H- c" ~
  2340. Change_Select_Last_10;前10曲
    ) D% D4 h* F- f+ r% w  v
  2341. LDA <Key_Once  N' J5 H# N9 ?
  2342. CMP #$40' A/ C# ~* }4 V. {
  2343. BNE Change_Select_Next_10! g- {1 p- {! s  q0 G* p) J' y
  2344. JSR Music_Song_Last_105 Q: n0 Y: b+ R  g, q2 K3 F! [7 ^
  2345. ;--------------------------------------------------
    3 r1 H5 O2 N4 j3 L
  2346. Change_Select_Next_10;后10曲
    5 _; P3 k) r, ~* k$ F5 w6 P+ u
  2347. LDA <Key_Once9 N. K5 J$ S4 H3 U5 x( |! I4 E
  2348. CMP #$801 `* \% m+ a3 Z8 U6 Z/ z
  2349. BNE Change_Select_Last9 y3 b+ |$ d' u/ M" R; u
  2350. JSR Music_Song_Next_10- V  _2 |3 U) b% F, p
  2351. ;--------------------------------------------------
    / l0 c& a0 g9 X, w
  2352. Change_Select_Last;上一曲
      A* o5 Q$ G9 |5 \5 J1 s" X- c
  2353. LDA <Key_Once
    5 ]! W3 d) |+ D
  2354. CMP #$029 U0 g# W) I% p, m! {, r' u
  2355. BNE Change_Select_Next
    7 T2 V9 F' u8 s' I. ]* O
  2356. JSR Music_Song_Last$ ]0 U. K, Q: y8 s
  2357. ;--------------------------------------------------
    4 B) x( u& o9 h7 J( Q
  2358. Change_Select_Next;下一曲6 A5 m& i( v. j( I/ U$ D
  2359. LDA <Key_Once
    # ~2 K& t9 L/ H3 L0 q
  2360. CMP #$01. i7 D, c# P2 i0 \7 Q) [* Z
  2361. BNE Change_Page_Next% ^. p/ u1 o3 n
  2362. JSR Music_Song_Next9 [) [" Y. w1 N7 _2 h2 F: E
  2363. ;--------------------------------------------------# W% O! g" F5 a
  2364. Change_Page_Next;下一页$ e* Z, d1 R+ k% j2 o: T1 ^
  2365. LDA <Key_Once
    # s9 H# \, ]8 r- s% T
  2366. CMP #$20
    ( b1 R: r' a" [7 W  l9 I
  2367. BNE Change_Select_Item_End4 A5 A# U) |5 Y9 L# D( _2 ?& r
  2368. JSR Next_Page
    + f* n% {8 c, X5 u0 Q
  2369. ;--------------------------------------------------' u* t; {7 E3 z+ @" U  E
  2370. Change_Select_Item_End
      N3 H; H' L3 l: ~8 Q4 T! ^7 x$ l
  2371. RTS
    & e. C1 z# l! z% V

  2372. ( N( j0 m. g3 H- @
  2373. ;==================================================
    2 d( G$ G- q+ b' H  A; s
  2374. Show_Arrow;显示箭头光标; B& y( l& V8 o9 d/ o
  2375. LDA <Music_Item_Cur
    7 b+ M* m' j9 V7 d" t4 J( K
  2376. JSR Get_Page_Start_Index# B" s) `0 `5 s( d: k
  2377. LDA #$00' z, |& r; _1 n0 ~3 ]
  2378. STA PPU_OAM_ADDR% M  C1 l; v) W$ y2 F1 i
  2379. LDA <Music_Item_Cur8 L( K! Q$ d# L" r. e( c1 W  B% ?
  2380. SEC  d: t2 _$ p3 c( c0 `
  2381. SBC <Data_Buf
    1 w1 U, l" U. v+ o: M( h
  2382. ASL A
    # p3 |  t: C. J* a5 H
  2383. ASL A3 S/ F# |% _8 T0 _. r
  2384. ASL A- ]# i* ]6 T( J* J7 E2 B  _+ ~
  2385. ASL A
    % e: G1 n$ O( j% i9 {( l# `
  2386. CLC
    , I+ O2 G# D% F* m' k7 |# v& G8 G# _
  2387. ADC #ARROW_Y_OFFSET
    ' B4 U5 t4 j- U
  2388. STA OAM_TEMP_ADDR + $00& m( z6 d/ c7 @. V, _
  2389. ;STA PPU_OAM_DATA# o2 S+ T8 U2 h% D
  2390. LDA #$1F
    4 {9 a5 L6 H5 G6 ?3 X9 k- u
  2391. STA OAM_TEMP_ADDR + $011 _$ z% `+ O; L; s9 n# e
  2392. ;STA PPU_OAM_DATA
    * `$ ^; R7 t8 Z/ F
  2393. LDA #$00  c, k: I" E" n5 B1 v4 P8 h
  2394. STA OAM_TEMP_ADDR + $02! E- c% @( K8 p1 q; V8 ?
  2395. ;STA PPU_OAM_DATA+ `3 C  y  ?% P8 _" M) u7 o
  2396. LDA #ARROW_X_OFFSET
    . z$ h. e7 D- O$ ^/ @7 c5 i
  2397. STA OAM_TEMP_ADDR + $032 `- ~: H: M! F; y6 F$ L- m9 q# |
  2398. ;STA PPU_OAM_DATA$ G7 F- O2 e" c6 x3 i9 n# W! ^& S
  2399. RTS, w: D2 K8 G+ [
  2400. ) z; v5 I: {- C
  2401. ;--------------------------------------------------0 P, j2 A. o1 q& C6 ^6 x! ^
  2402. ;命名表数据3 P$ A8 W4 ?1 c( v6 u9 C2 L
  2403. Palette_Attributes7 }- Q& [; e# P% ?% D/ B$ J$ v+ \
  2404. .IF SOUND_BAR_SHOW_ENABLE
    / @5 s+ U+ D- o2 ?
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    7 y1 `& _2 w: i- \9 p
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$550 N  h& ~" B7 ^8 Q9 ^
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75  j, Z4 _7 D8 l
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA  y2 _6 D) b" L  i* w* w( @3 s! D
  2409. .ELSE# s! j( G9 y( G
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    ( G6 W, x7 ~' s6 h
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    & h% N/ O1 e- G6 O: x- C6 H, l- |
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    # Y- J5 n3 q$ d' e
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    8 F  q$ L0 k, K: Y0 A9 L
  2414. .ENDIF
    ! Y  k4 O/ [! z

  2415. 5 B) [. Y0 }4 M3 Z# z
  2416. ;--------------------------------------------------
    9 N. N+ {) c" i+ z' G  E
  2417. ;调色板数据3 o" A. g+ y# X2 f6 i( H. [# E* T% S
  2418. Palette_Data
    # I/ y  b# I5 W
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F8 k5 ?: M5 s; @9 c% v& ]7 v
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    ( g' Z4 w: s" u) @( N: k

  2421. 2 W5 S& S, z' p' W! _" g8 A9 U
  2422. ;--------------------------------------------------
    . F4 _2 b* A8 u& _: Y: d# ]% u
  2423. Static_Text_Data* x4 L9 [; }9 T
  2424. .WORD Static_Text_Caption_Data
    2 f- m  E, O$ K7 H
  2425. .WORD Static_Text_Author_Data; V7 z& r; E1 K& @- z
  2426. .WORD Static_Text_Date_Data
      _8 u: I0 r9 r+ X0 a0 F4 u& Q
  2427. Static_Text_Data_End7 A# G( w. F4 ]

  2428. ( R5 B- ?0 }/ A' D$ j
  2429. ;--------------------------------------------------
    + K; n% f. u& q, K6 X; c& a0 [4 K& p. I
  2430. Static_Text_Pos
    8 G% G' O6 D" g. @
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)7 |  s1 s* s" |% j- C: V' g5 q
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos): c- P, W: r/ `2 ]
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)# c5 f) p' c# }9 B
  2434. Static_Text_Pos_End6 o5 b6 |6 Y  j; p% g

  2435. 0 `% l6 e. T# O- j, X
  2436. ;--------------------------------------------------' @  s5 g2 r& O/ F" }
  2437. Music_State_Stop4 @9 j2 W: C" n5 l
  2438. .IF SOUND_BAR_SHOW_ENABLE$ [/ x5 r$ b% N, Q% b8 {
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    ( M8 b' S3 c+ I3 @3 F1 S2 e3 q1 _8 a
  2440. ELSE! J$ K. x. B) X! g) v+ Y
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    . z& q9 I% i  v$ u
  2442. .ENDIF/ G+ x, Y; G1 v" i
  2443. Music_State_Play7 [$ O* M0 Q" k0 M. v; Z
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    9 x7 y' K" u* x8 g
  2445. - d3 e; t7 t$ \: L$ @+ {
  2446. ;--------------------------------------------------
    : P- H7 D/ E2 ?+ W' Q
  2447. Sound_Bar_Text_Data;声音类型文本- a+ ~8 _2 L' M9 S: t
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    : B+ X$ h3 |/ G! s2 j
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    2 o7 d2 k# `- \
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"; G% p! b  H6 s8 E
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"' ^1 v/ x$ [& ]. v' m
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00* W7 ?* L/ y* B' \! v4 _

  2453. 6 V4 n8 b) ^9 R' b  l
  2454. .IF Track_Name_Pos
    0 r! t1 T! B& e  b3 |; `& K
  2455. ' X) U  t" D! n+ p
  2456. ;--------------------------------------------------
    * x6 l/ \: W6 X# v/ P* w5 c; d
  2457. Track_Name_Addr_00;曲目名地址索引8 \( [2 I& S- x, U
  2458. .WORD Trackr_00_01- p4 `6 q* L! z' f- M* V7 r; d

  2459. 0 l0 ^# }! l3 [3 p, y1 N) k5 G
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"  `+ \! s+ e" }4 K
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"4 T; m+ r7 u% u) X& M
  2462. ; {. w2 j# B  \0 C
  2463. ;--------------------------------------------------/ M6 e8 ~  D. }4 D; v* ^- s
  2464. Track_Name_Addr_01;曲目名地址索引
    8 I% h. s2 Y+ i7 |. P7 F1 Y& T
  2465. .WORD Trackr_01_01
    7 K/ Q0 J) d, v3 Q
  2466. 3 W. D6 j; j. \; h. j* o; b
  2467. ;==================================================  a" Z: N1 Z- Q6 k0 p$ g# P
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    4 e" d  C, v! D
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"% ^; H+ w8 s, M- u3 Y2 c. [: g
  2470. 1 z5 }' I2 G1 y0 V& {! P
  2471. ;==================================================, U8 r2 x$ B* Q
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    : r6 F1 |2 ~5 \6 S: }+ u
  2473. .WORD Track_Name_Addr_009 @) N* T" e( n2 V( X3 @7 c
  2474. .WORD Track_Name_Addr_016 W; ?( r, n8 z1 J
  2475. .WORD Track_Name_Addr_01
    / {! W% }' q' C. j" P2 F" D4 r

  2476. , t/ G9 `& T" {
  2477. .ENDIF) _, O* F6 [/ v( ?
  2478. 0 F' H: j- r6 o7 ~% |
  2479. ;--------------------------------------------------
    + k* `5 M) R& S4 s3 @
  2480. Static_Text_Caption_Data;静态文本数据
    0 \" _% c: }" b
  2481. .DB 16
    ! J" p! ^3 L  e0 ^; @6 O5 \) G! l
  2482. .DB "FC MUSIC 12 IN 1"
    % S0 W9 H6 }% B
  2483. Static_Text_Author_Data" m% r. A! {9 A
  2484. .DB 257 u6 D: n, N: C, R8 X2 ?2 d
  2485. .DB "EXTRACTED BY FLAMECYCLONE"! M1 H) H# Z7 H  J5 \7 L
  2486. Static_Text_Date_Data
    3 }" d6 ^9 {1 \4 Y  b9 n+ z  z
  2487. .DB 10: F8 c0 L' C7 v$ T! e0 k/ s7 G: T
  2488. .DB "2023.07.23"
      m8 T% i! I; B6 M, g* A0 `
  2489.   |) u  h0 p7 ~  a  T1 {  N
  2490. ;==================================================' ]& v3 k0 f& v+ A" o4 X# u' t: @
  2491. Music_Collection_Name               ;专辑名间接索引$ c5 C/ S+ M# f1 }8 L" a
  2492. .DW Music_Collection_Name_00. I# A* ^, r* w$ M; v
  2493. .DW Music_Collection_Name_01) D# `9 [/ h7 Q7 r' ~% c3 S( Q: V( N
  2494. .DW Music_Collection_Name_02
    ) Z. X: A1 k) n+ t0 s
  2495. .DW Music_Collection_Name_034 ]% d0 {& m7 f, k) A" S
  2496. .DW Music_Collection_Name_04
    # \1 \) k# v, l# \' F! }
  2497. .DW Music_Collection_Name_05
    5 j* G, @5 ]3 J+ z/ w/ v
  2498. .DW Music_Collection_Name_067 [3 [4 I, c. b: C
  2499. .DW Music_Collection_Name_07" O. J3 F2 n* o4 m
  2500. .DW Music_Collection_Name_08- g; k6 A1 P8 a+ [7 O
  2501. .DW Music_Collection_Name_09
    0 [/ p- N& r' x$ g/ d$ @
  2502. .DW Music_Collection_Name_101 x& h$ b0 t0 A; T- g. j
  2503. .DW Music_Collection_Name_11, }- A% V) ~. r% x7 W

  2504.   D9 s) y* ]4 {4 V" l6 X% \4 P
  2505. ;==================================================
    ! G$ J# m: v6 C3 O: i1 h
  2506. Music_Collection_Name_00            ;专辑名文本数据& C" J& z' i* Y) f1 w6 ~
  2507. .DB 11,"1.RAF WORLD"
    ! c6 N4 L0 q: X4 M# b; H# m
  2508. Music_Collection_Name_01+ S9 t, U" B* _0 ^7 [" x8 V
  2509. .DB 15,"2.FINAL MISSION": i( Z6 g* L. D" h) L2 b3 V
  2510. Music_Collection_Name_02$ s. h3 s8 `7 s6 k7 a' C
  2511. .DB 06,"3.KAGE"
    ' N% K; ~: v9 V1 b5 y/ [
  2512. Music_Collection_Name_03
    3 @- K7 o; P% M  @5 @/ c
  2513. .DB 16,"4.DOUBLE DRAGON", W9 t9 \& A' W5 i+ W& }
  2514. Music_Collection_Name_04
    & _; ], ]9 ~$ v( x
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    ! G" [+ j8 X- f9 Q3 O
  2516. Music_Collection_Name_05
    3 `0 a1 {/ `7 I0 N& F
  2517. .DB 17,"6.DOUBLE DRAGON 3"2 k5 r! |; F' T* {7 \
  2518. Music_Collection_Name_062 W2 W! ^! f* u& q, Z) {+ r: D: i
  2519. .DB 09,"7.ROCKMAN") A/ E8 d6 A& }1 X$ B, t0 I  z: @$ W
  2520. Music_Collection_Name_07
    & b+ v- q  R: n; N, M
  2521. .DB 12,"8.ROCKMAN 2"& j. |3 @% }" W( }9 d7 |
  2522. Music_Collection_Name_081 G  \# l+ q+ y. k1 i* |" g
  2523. .DB 12,"9.ROCKMAN 3"% S- k4 Q* O* b! o# S2 e* U
  2524. Music_Collection_Name_09
    8 u. f$ |' C3 j6 z6 n* W4 f0 f
  2525. .DB 12,"10.ROCKMAN 4"
    . _) v0 o$ }) ~5 I2 l
  2526. Music_Collection_Name_10
    * P* i0 Q. [7 G: X
  2527. .DB 12,"11.ROCKMAN 5"- G3 W) o4 Z% U- R; o% r
  2528. Music_Collection_Name_11" O  J1 s' h3 n
  2529. .DB 12,"12.ROCKMAN 6"
    * u* ]# }$ h3 x) q. F  w
  2530. & ~0 z4 d' R4 L* k$ {# e
  2531. ;==================================================& Z+ }$ N1 w* _
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    2 R% l0 L" v) ^6 y( n3 H3 Z2 v
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0/ O) p4 }6 B, p  u" ?7 u9 ?3 L* S

  2534. 9 [" }# Z  q0 M! |! L: i
  2535. ;==================================================
    9 O* U$ Z% k* R1 M1 q. U9 R
  2536. Item_Pos_Data                         ;光标箭头位置
      H' c# I) ~% w; P! }9 a' b
  2537. .WORD ITEM_SHOW_POS0 C3 \4 }0 x( N+ c7 v' [3 o
  2538. .WORD ITEM_SHOW_POS + $0040
    1 W& s* w% G2 ?, P% R5 L# D
  2539. .WORD ITEM_SHOW_POS + $0080- G3 b0 n& b8 X7 m1 E
  2540. .WORD ITEM_SHOW_POS + $00C0
    * h; s+ E/ R: n: ?
  2541. .WORD ITEM_SHOW_POS + $0100+ Z9 @/ e( J! T) ]3 k
  2542. .WORD ITEM_SHOW_POS + $0140
    6 Q! C3 |! u+ S! q/ R" r# U$ j
  2543. 7 V6 i) H: b. C5 t- t8 }
  2544. ;==================================================
      U; J. a1 @& X) G9 G
  2545. Sound_Init_Port                 ;音乐初始化入口地址" H$ e& G% r9 C) }6 I' ^$ M8 _
  2546. .DW $BFC8- W: K* d7 K* |$ d
  2547. .DW $D7F0! ~: Z% |/ M! u4 A1 d; X
  2548. .DW $9FC09 [, m8 @2 ]4 i* y# ]. q
  2549. .DW $BF70; f4 ?+ d4 d7 ~; D3 N7 J
  2550. .DW $80035 ~# K2 F3 e: y, J- D
  2551. .DW $BF30  E# P# U8 X/ a0 @  u4 ~) O
  2552. .DW $9003
    , S7 Y2 q  H' j# [2 I. f
  2553. .DW $8003
    ' _- c+ i) K) N( R5 }* d0 y
  2554. .DW $8003
    ( P* f  f3 m4 ~! R3 u4 W
  2555. .DW $8003
    ' G% H& E  L- f) w
  2556. .DW $80038 E( j3 V5 L" x& Z8 o+ E6 h
  2557. .DW $8003
    ! [* G/ T9 W3 G& \/ |

  2558. # n2 k- x+ d0 s2 a, V
  2559. ;==================================================
    - `2 Y) }" h' q
  2560. Sound_Play_Port                   ;音乐播放入口地址  L# a& \! V& w: U3 f. [! f  [
  2561. .DW $80000 w4 _& N" ~( K; E; C3 w
  2562. .DW $8001" V0 J! S; _7 _/ l! p5 ^! g
  2563. .DW $A000
    ) k0 ?! K$ k8 o' x
  2564. .DW $8003
    1 a+ u1 ~, O$ {& D5 ]$ f
  2565. .DW $8000
    3 w" }. j; t# d2 o
  2566. .DW $8003
    : [) U% N$ x2 F3 l2 ~* W' V
  2567. .DW $9000
    " Z" _3 u0 P8 D# Z3 I" L, }
  2568. .DW $8000
    4 ^1 t. T1 K; D: F& Y4 H9 _7 q
  2569. .DW $8000
    # W: h& P. I- h
  2570. .DW $80003 H4 t) L, g8 r0 t8 w, v1 X  P
  2571. .DW $8000' |5 f: l1 u) P0 ^. l9 }
  2572. .DW $8000, h) k: o& y. I' l, {

  2573. 1 O1 P! _6 G: ^, M2 u
  2574. ;==================================================
    % K+ ]% \2 H9 H: _* y
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    1 E9 @- r; c6 D
  2576. .DW $0000
    1 T1 S2 h8 C# [. m- b/ D. j
  2577. .DW $00007 s* Z/ O9 G% J
  2578. .DW $0000% `5 `" H" P% e4 A* l3 ?9 I
  2579. .DW $0000
    , Q% t& j6 Z8 ]6 [! I! E! q  s9 a
  2580. .DW $0000
    4 B4 d2 Q3 u; Z6 ~
  2581. .DW $0000
    , h/ A* b6 ?; P0 ^6 J! A5 d
  2582. .DW $0000( a0 K# Z! c9 V! D$ r; }
  2583. .DW $0000! \( G7 [/ {) m" s2 E( ^7 w
  2584. .DW $0000: K( P/ {- i/ p, J* e; X
  2585. .DW $0000) d( R' l6 {/ l  V
  2586. .DW $00005 \, `/ B$ ?/ \1 V  o
  2587. .DW $0000
    % V) ]' u5 B, W! [* Z% |) W+ X
  2588. , @" [9 z) j% C$ I" ]
  2589. ;==================================================9 r% \6 T; b; h$ k7 Z! q: e
  2590. Sound_Total_Port                          ;曲目总数
      B5 T: q* e# c- \/ v, T8 X/ e6 |6 _/ A
  2591. .DB 38( e4 P; g9 I+ a, E: j5 L
  2592. .DB 33
    - W" Z8 R1 I- Z0 `: L( d
  2593. .DB 49
    ' i3 ?4 y, j) I/ F# r7 Z
  2594. .DB 41& G# U# z% ~3 @* h. T% e
  2595. .DB 83( x! k3 n4 n* H2 h. W; d
  2596. .DB 70
    8 C7 Z: y( @5 w& Y5 P
  2597. .DB 50% p9 z$ T) N2 l, i0 y8 h6 r# J# K
  2598. .DB 67# i2 }. B3 E) G; v9 T9 @3 _
  2599. .DB 57
    9 u; e, `* v+ v
  2600. .DB 71
    6 r. k& Q) D2 M. V
  2601. .DB 76
      ?/ O) E6 z! S! D0 O4 `
  2602. .DB 1023 X1 n7 X3 p7 ]: d

  2603. - r" N8 J+ R& @! \1 _! `$ l$ o
  2604. ;==================================================
    , p1 o+ Q* O& b
  2605. Sound_Start_Port                      ;起始播放曲目3 _! w& z" o& w4 C' g7 I0 k
  2606. .DB 00
    * T0 k3 _& }% ~7 V
  2607. .DB 00
    ! t  _# t) q$ }) d! c6 K% \
  2608. .DB 00
    1 o: [% _9 u! j" f8 L7 o% q) |
  2609. .DB 00/ r0 j4 q1 C* ^9 t( a
  2610. .DB 00
    , t( u  I, q5 F( c1 J) J6 |: I! k
  2611. .DB 00! y  n2 a# ]5 `: Y
  2612. .DB 00
    . O# Y' L0 q/ D7 ]$ r
  2613. .DB 00
    ! z( _2 O( Q8 \0 s/ s& [2 d3 M
  2614. .DB 00
    0 r! L2 C4 @$ Z( @) a) x* l( I" |, R
  2615. .DB 00) q" V5 N6 b( s; H5 \
  2616. .DB 00/ T. w! |9 G; t
  2617. .DB 00& |( H  y1 u8 V+ v- Q; u

  2618.   }' ]" o( f. z+ T5 b9 g
  2619. ;==================================================
    6 ?) u) }, |. T& [. z% Y
  2620. Sound_Bank_8000                      ;专辑bank_8000. `# r/ U) m( L' a( I( w" \' m
  2621. .DB $10
    ! v% R+ {0 B+ n8 q. i
  2622. .DB $12
    + I7 c' s* ^; C+ }2 D, j
  2623. .DB $14" J" u! _2 u& s  Q6 O
  2624. .DB $16
    & U; _& h, v; v% X4 I
  2625. .DB $18' c  g# O! D& a: s) I5 W) Y
  2626. .DB $1A
    1 @  Y; d7 ]& ?2 A. d8 D
  2627. ' K$ a9 O. s! V, K. D) m3 x
  2628. .DB $00
    ( [. ?  G% S6 a7 n6 @
  2629. .DB $021 w; j# z! P$ \* i% }9 G
  2630. .DB $0D
    4 O6 T% C- r/ h6 j4 V8 W5 ~# \% Q# m7 a4 A
  2631. .DB $04
    ' {/ v4 E+ a2 b/ O- H" |3 D6 E
  2632. .DB $07
    + E" g( t; K: y( _
  2633. .DB $0A" G7 k8 |6 g* X  S/ `* s# [! h: ]

  2634. & D$ h; S$ }+ E
  2635. , x% K8 v1 I  r$ \
  2636. ;==================================================
    2 l2 z4 D( n# k/ ?8 ^  b
  2637. Sound_Bank_A000                      ;专辑bank_A000& ^5 _* k( v6 Z5 g7 `
  2638. .DB $114 m9 Q- p/ D0 H! Y
  2639. .DB $138 h/ K2 k  o1 E9 [
  2640. .DB $15
    8 U# K. R9 T% a* K' z
  2641. .DB $175 J" H: [' t" d0 Z+ l
  2642. .DB $19
    " i; Q* t+ c: x" x) j; i
  2643. .DB $1B
    3 \2 X9 U: A7 B- j

  2644. # D2 ~) s8 i$ z1 P" F4 F9 n# {2 T
  2645. .DB $01, ?# O$ ^6 y  m
  2646. .DB $03
    3 E( k. `  g9 z) z4 ^
  2647. .DB $0E
      ]6 Q& P; t; N6 n/ L9 m- T
  2648. .DB $05
    8 z) O, q2 L2 R8 C
  2649. .DB $08# Z" K. X$ S) p! o
  2650. .DB $0B
    * z8 s( u0 W9 Z0 }  N5 V
  2651. 8 v. }  Y7 \, r2 i
  2652. # Y/ [% }& v0 k8 C6 Y) X
  2653. ;==================================================" A, t. L# C/ q" D6 x7 U
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    # J8 k2 }: X, ?) A5 s# C* b
  2655. .ORG RESET_ADDR
    9 N* P; O7 Q# c  x
  2656.   x  k: h9 y+ ?# ?
  2657. ;==================================================9 B  D* g/ K% Q/ X2 k, b, s
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    , N# V3 H* w+ F+ d! u3 F+ o/ Z% O
  2659. PHA' {, b5 B1 f- {2 `
  2660. LDA #$06
    , X7 ^, ~, {5 A8 Y6 y9 f
  2661. STA MMC3_BANK_CTRL
    - L/ j" U. b5 p/ \: K  A* J9 ]
  2662. PLA
    $ ~* p! {( i/ H# y; b4 ~6 X- S2 @7 _
  2663. STA MMC3_BANK_DATA
    & O; Q0 E& ]" u
  2664. RTS) O, Y; h7 @* R
  2665. + X# l: z$ l0 ?/ ?: v* E
  2666. ;==================================================
    : f* V3 }. q: q/ x$ V* m5 P
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    * H- P7 S0 y# r; `9 S+ J
  2668. PHA1 V, |% ^$ M. L  b6 q0 ]2 v
  2669. LDA #$07
    0 N) r7 G7 D" U% ^0 }; D0 P
  2670. STA MMC3_BANK_CTRL
    9 Y  N/ A$ M% K; _2 h. r
  2671. PLA3 f1 K. [9 E5 ]4 v: l/ V& f
  2672. STA MMC3_BANK_DATA
    , V5 d0 C9 u( L7 L/ _8 h( n) @
  2673. RTS
    * ]% c# o$ }; D+ g' a

  2674. ; a/ |" c/ t! a1 U9 k  G
  2675. ;==================================================8 d: |% x+ z  W7 w1 f+ B; A- {) r
  2676. Switch_Main_Bank;切到主程序bank
    % v) r5 m' m) I3 _2 V# S; w1 `
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    $ L7 I8 D; Z; u, ~* d
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank4 z4 O: _: q$ x7 b
  2679. RTS# n: }- h4 L4 Y

  2680. 2 e' T+ |  X# r9 A" N
  2681. ;==================================================
    " g4 ~8 w! i+ Q1 _( F. K% Y
  2682. Sound_Reset;音乐重设(如果有的话)
    ! h) `0 u* r, N% T" V! Z* F: e7 _
  2683. JSR Switch_Music_Bank  ;切换到音乐bank4 Z4 s- G3 W8 B- C0 O) ^
  2684. JSR JSR_Addr_Op        ;执行音乐重置) b$ H, M6 f- u- J4 @# |4 Q
  2685. JSR Switch_Main_Bank   ;切回主程序
    % u3 h" W) s; S6 I
  2686. RTS
    & }6 P3 d5 x7 w( _/ _

  2687. 1 b8 d$ b: n0 ]4 w+ Z$ F
  2688. ;==================================================
    1 f+ v- i& {+ [, g1 n
  2689. Switch_Music_Bank;切换音乐bank+ c: j: g: @2 m& v- D
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    ) c. g4 S0 B7 s3 }( x
  2691. LDA <Music_Bank_8000- D1 x/ k3 d) p( Q. x- \' g
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
      H  m2 g2 J3 e# O7 a" ]. J
  2693. LDA <Music_Bank_A000
    1 p" u5 Y  `/ ?) v. c- k' J
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    5 Q% i& T; }- ^8 x  C( a; R
  2695. RTS
    9 w- d. w1 I& e3 k% \# T
  2696. : Q/ J+ p* C: l
  2697. ;==================================================
    4 V; l" e' {+ ~* T" q! a
  2698. Sound_Init;音乐初始化
    9 E) B$ A& K; Y3 @7 f/ c
  2699. PHA; }% _: r6 Z6 U/ A1 |- j
  2700. JSR Switch_Music_Bank  ;切换到音乐bank1 F+ e1 v1 J3 E- a) W4 g& y
  2701. PLA
    6 J3 d, p1 o+ Q& v- [5 l
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    % ], G2 s1 c+ U  t. c# m6 ?: C; n' e
  2703. JSR Switch_Main_Bank   ;切回主程序2 h  H2 l' D6 s7 B, n/ @1 r
  2704. RTS
    9 P+ e0 C; d6 o# \9 D

  2705. 8 [: K) O8 h( X- n
  2706. ;==================================================) a' x4 J* a9 A1 ?# q
  2707. Sound_Play;音乐播放
    , O: p. w  d  s2 p: ^
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    # }4 d2 e! \) `6 `  ?9 x
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    + y( k$ i* L& b1 Z
  2710. JSR Switch_Main_Bank   ;切回主程序
    2 R. p+ D; h% E. {) X
  2711. RTS# y6 }! p# D" C: L" i+ Z$ y6 h
  2712. 8 D. \9 e, ~2 R/ n4 P7 w1 g
  2713. ;==================================================
    / }) N* G8 Z6 ^& l8 {4 x2 H" V
  2714. MainLoop;死循环
    : S! b/ N0 F! I; A
  2715. JMP MainLoop# P' d  `& o4 m2 {4 G% Y; M* [
  2716. ; ~* e) q- k/ N" R9 ^: c9 h# G
  2717. IRQ_SUBPROCESS_JMP = 0
    " ^3 l0 s- F, C! t/ u

  2718.   w, i; G; S  D, k' C
  2719. .IF IRQ_SUBPROCESS_JMP
    2 N+ H4 O+ x5 M7 X# s
  2720. ;==================================================4 j; ~% I1 q7 p
  2721. IRQ_Process_0;IRQ处理过程0
    , U8 I+ a/ A7 I" D& F8 e

  2722. 5 _! S1 L' J/ I* J
  2723. ;15条扫描线后触发IRQ
    # \5 a/ |/ E6 }# \
  2724. LDA #15/ s  H4 G; ?6 _3 C. O
  2725. STA MMC3_IRQ_LATCH7 n* ?5 H; c' l; T0 T4 D2 d  a: y
  2726.   b& N2 c& S6 j) L
  2727. ;设置屏幕滚动) Z9 h- ~# X9 ~' b+ t, w
  2728. LDA <Scroll_H8 y2 f$ P! Y& s8 j& w
  2729. STA PPU_SCROLL
    * y/ Y7 p! C* R' [7 M
  2730. STA PPU_SCROLL5 @9 D. U2 E5 o" a
  2731. + w( ?" D1 O1 V7 r; L' V
  2732. IRQ_Process_0_End
      j9 s0 M( e$ L) A# o
  2733. INC <IRQ_Process_Index) C% G7 {; i- U7 ~/ P6 k
  2734. JMP IrqProgramEnd
    : d7 }+ ?; U, F7 ?

  2735. 3 @5 L7 j, @% ^5 H8 J, w0 G. l
  2736. ;==================================================
    ; M2 F7 s" a/ t6 a! _4 w, E
  2737. IRQ_Process_1;IRQ处理过程1) m  x) k/ P8 N, Y2 T

  2738. 3 y' Q% p6 A7 K
  2739. LDA #55
    # i. C! L! J* |5 ^$ J1 j
  2740. STA MMC3_IRQ_LATCH
    7 ]. `4 b7 N3 K) f: e0 R

  2741. 9 d8 Z* ~' Z% W7 V3 }4 A8 ]
  2742. ;设置屏幕滚动' F3 A$ j. C- i+ t) p
  2743. LDA #$00
    - s% X& k" ^. c8 v' t8 {- ?0 J2 H7 x
  2744. STA PPU_SCROLL* J# x# ~7 X3 t% V( t
  2745. STA PPU_SCROLL
    7 T% r1 b& u' ]$ f- o% i
  2746. & W4 G2 G' x5 K2 f( ]
  2747. INC <IRQ_Process_Index5 \* ]% L2 v* _% l, J
  2748. JMP IrqProgramEnd
    + K" z; p! A- _' R$ d! y  {- A

  2749. ) \. Y( u/ g' T" ^5 G
  2750. ;==================================================7 w" M0 H" x; g+ w; S/ W+ E% g
  2751. IRQ_Process_2;IRQ处理过程21 D2 E: `- P) {/ K/ E. s% W7 `: @9 F
  2752. 7 b2 l+ c* c, d( V+ c3 a
  2753. LDA #15
    ( ~( l! x# R" N: E
  2754. STA MMC3_IRQ_LATCH
    " I5 k$ Y* p7 I# }- K
  2755. - I3 U, \" F2 _, T) A1 r
  2756. ;设置屏幕滚动- `5 h: f) B& {! v+ Y$ {
  2757. LDA #$00. M3 T$ b8 N( k; x% F
  2758. SEC+ [( P2 U5 e! K# a0 f9 x
  2759. SBC <Scroll_H8 C+ D% S9 `. J0 O' i: W. e6 T
  2760. STA PPU_SCROLL
    3 t8 q% G! Y  M/ ^
  2761. STA PPU_SCROLL3 E! _* ^+ o" Q. l/ f4 ?) `- i3 c
  2762. ) T  M. z, Q0 I- z$ `
  2763. INC <IRQ_Process_Index5 I( W* \7 l6 E2 q" d) `& E
  2764. JMP IrqProgramEnd) {- ~6 o7 l6 d+ Y+ i0 r/ t1 w5 Y
  2765. / P* g- B7 C( G6 D( p! Y
  2766. ;==================================================! [- R+ d5 m. f9 V! g7 r: W
  2767. IRQ_Process_3;IRQ处理过程3
    & j( z, Q( |. x- K2 [* G: F

  2768. 2 z. f# I) Q1 E. r& I- N
  2769. ;设置屏幕滚动; c" R. s$ n/ P' E
  2770. LDA <Scroll_H
    3 i. p" j3 |- t" r; ?
  2771. STA PPU_SCROLL7 T5 B7 O0 T' D* {5 W! j" v2 ^" i
  2772. STA PPU_SCROLL
    * i, k$ m5 l6 g' ^7 R! _7 U, `# N
  2773. ' p# }/ k6 H, V
  2774. ;禁用IRQ" G& C1 u7 s/ M/ W2 E0 y
  2775. STA MMC3_IRQ_DISABLE, U3 N' a7 O: s4 \0 R
  2776. JMP IrqProgramEnd0 u* \! _) E! L# m& |- w

  2777. 1 k; e% M0 W' u7 Q/ y) W
  2778. IrqProcessAddr2 m8 N: c. \7 D  k9 G7 [+ j  Q
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3" |' R2 T2 d# V; h

  2780. 7 t8 i% P" ], \$ i
  2781. .ENDIF
    7 |- Q# L+ I& P) x
  2782. 4 Z0 K+ t# ~# A5 r+ Q1 O% T$ `3 v
  2783. ;==================================================
    " }/ Y+ w- O$ s$ M$ h6 L* [6 d
  2784. ;IRQ滚动模式常量
    % e* {2 n! N% v/ m( f% t5 `
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    ) s9 g1 D$ p' W6 E# S
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    3 v+ f2 b7 f1 ?# L! c
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动0 g  y- _  @; O/ z% g0 h
  2788. 6 [* S+ Z) p: N" `- ]1 k
  2789. ;IRQ扫描线数据
    5 D+ G$ n) y$ a  I
  2790. IRQ_Scanline_Data0 q0 R, u5 B. L) Z0 O
  2791. .DB 8
    # e' C4 h$ n  i
  2792. .DB 54, t& r$ c' O( p" h
  2793. .DB 81 r& ~$ v9 U0 R4 y
  2794. .DB 00 ;关闭IRQ
    7 s# L9 |2 i  l8 N0 y% p! k
  2795. 8 n* |/ p: c# h/ {) s0 \
  2796. ;IRQ滚动控制模式0 b% d1 T5 t; x6 F5 i
  2797. IRQ_Scanline_Mode
    1 X' S2 F; {9 U9 }4 ]
  2798. .DB IRQ_SCROLL_MODE_ZERO: ^* A* z  L4 y% R: b
  2799. .DB IRQ_SCROLL_MODE_ZERO3 w8 _$ w' B4 @( y
  2800. .DB IRQ_SCROLL_MODE_RIGHT0 u6 p( B" u3 t: g
  2801. .DB IRQ_SCROLL_MODE_LEFT
    5 c0 B4 i% l& k0 U6 F. {) f

  2802. " f! v" L6 c1 x
  2803. ;==================================================
    1 ~+ N5 v& L$ b# ?% \' k+ `
  2804. ;IRQ处理4 E, S3 h$ B0 T" D5 t
  2805. IRQ_Process) c  l$ s) X. Q$ |
  2806. LDX <IRQ_Process_Index
    3 v, @+ N) q' A. V: l
  2807. LDA IRQ_Scanline_Data,X- i% S1 o7 ^, U! Y+ a4 w" v6 k, b, r
  2808. BNE IRQ_Process_Latch
    ( {0 t+ ?  q7 }* ?6 U% H
  2809. IRQ_Process_Disable;禁用IRQ8 T+ w+ B) ]9 t0 N" Y! M
  2810. STA MMC3_IRQ_DISABLE, `* d7 M. e% ^6 }
  2811. STA IRQ_Process_Index
    % U0 I1 I; G( p9 ]
  2812. BEQ IRQ_Process_Scroll
    ! @8 p. y! ^7 Q+ E( o
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线4 u6 w0 \- Q, T( {% `1 i
  2814. STA MMC3_IRQ_LATCH
    8 M; I2 M0 f& ?5 }, r. o
  2815. INC <IRQ_Process_Index9 \3 S3 n$ N: L4 q# i6 `
  2816. IRQ_Process_Scroll;IRQ滚动控制
    1 {; P( x& F# Q0 o+ x2 w2 K
  2817. LDA IRQ_Scanline_Mode,X
    " y! S5 K2 z5 s' `
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    $ B0 ~# {* j) C. |  g2 M
  2819. BEQ IRQ_Process_Scroll_Left) h, ?: g) R1 V* f: q
  2820. CMP #IRQ_SCROLL_MODE_RIGHT1 P  b0 A" d  d0 \/ v. |
  2821. BEQ IRQ_Process_Scroll_Right
      b1 |2 F' G1 g  Y1 Y5 z
  2822. IRQ_Process_Scroll_Zero;不滚动+ `+ k0 [" v2 T) P
  2823. LDA #$00
    / y5 o! n8 o2 ]8 D5 I5 M  e+ }
  2824. STA PPU_SCROLL
    / ?: A- {+ F" B5 X
  2825. STA PPU_SCROLL
    " w: {: U1 ~/ o0 A
  2826. RTS. `% R; q# x' j# M( Y
  2827. IRQ_Process_Scroll_Left;向左滚动8 `# L9 k  {1 [) v* b: v
  2828. LDA <Scroll_H
    / u' N$ ^- M) Z& `
  2829. STA PPU_SCROLL
    0 q" K1 m, o/ f0 `0 z$ v
  2830. STA PPU_SCROLL
    8 M. c# a  ~" o& _- L8 O) s
  2831. RTS
    5 y* y) _& ]* W: d3 d# m3 M
  2832. IRQ_Process_Scroll_Right;向右滚动
    - P: q6 ]- ^1 }
  2833. LDA #$00! H1 Y9 X2 Y! Z, N
  2834. SEC
    9 M4 D- I6 c% ?9 X
  2835. SBC <Scroll_H
    , F8 H* F- [" _0 p0 j; T: D
  2836. STA PPU_SCROLL
    ) o; q6 \! C' l7 l9 p, y- k
  2837. STA PPU_SCROLL% |# u: N' {3 v! r# a# ]
  2838. RTS2 S( x+ M0 O( Z& q
  2839. 5 S4 Y  l% }% {# x) h1 p
  2840. ;==================================================7 e8 T( X( s1 ]. T) }8 m
  2841. NmiProgram;Nmi中断处理4 M4 y* t- u, T  H: f
  2842. PHA% `/ J7 o! w, `0 T8 b( E% w( |
  2843. TXA1 W. V5 W3 ~1 c1 q/ k
  2844. PHA
    6 F" [3 _7 b- A, ^5 s
  2845. TYA1 C4 R' S( X8 Y
  2846. PHA
    6 }& i0 y& {+ s. X$ _! p
  2847. ) l, R* j; f& U  I1 g+ ]+ q
  2848. ;读取清除Vblank标志, 防止重复进入: y3 u7 Z$ L; [
  2849. BIT PPU_STATUS8 J5 V3 ]  q* v

  2850. 4 E4 _: h/ y; h7 \% l
  2851. ;切换主程序bank
    0 F9 J) h  F# E# i) U; ]( m
  2852. JSR Switch_Main_Bank
    5 W% b0 c5 Q* i8 v  A3 b* W

  2853. $ v. V9 W9 X' \( I
  2854. ;Nmi处理/ m, x+ y  [+ y5 V# t+ u
  2855. JSR NmiProcess
    ! c' a, n# i& Z  n* Q$ I

  2856. ) O& R( e. u- {3 n# Y! P$ C
  2857. Nmi_Proc_End
    5 p. _8 M7 C6 V  f3 c) W1 C# N9 [8 @
  2858. PLA
    ; V7 }+ X0 E" ]9 R3 [
  2859. TAY; J% A& V+ m9 M6 N( P
  2860. PLA: G- {  \! r& t/ S) N; z
  2861. TAX. H3 f: o  b9 z' K! {. c) O* I
  2862. PLA1 G3 v0 s0 @/ o: i5 {6 f) I
  2863. RTI
    " A& {& Y: s9 N4 i* v; G: ^
  2864. - D' M' Q8 h2 P6 Y$ ]
  2865. ;==================================================
    " P! P  E5 h; t
  2866. ResetProgram;重置中断处理6 I7 E, ]" ^+ k; F. _  r. u
  2867. SEI
    - M1 \4 q# L7 N/ `
  2868. CLD
    9 V7 l4 y( r4 ]# @# o2 K  {
  2869. LDA #$00
    5 H4 Y) f+ q. @; O# O
  2870. STA PPU_CTRL1 q- I% r, E9 N1 I1 W! W) e9 R1 b: p
  2871. STA PPU_MASK5 ]; i0 W3 [, B! ^3 X: k% s
  2872. 6 P4 y/ n5 x. S. f3 F; F! ~
  2873. ;切换主程序bank
    8 Q' [. h5 Z) S+ A+ X
  2874. JSR Switch_Main_Bank
    ) I8 W) \, B# G4 W+ Y
  2875. 2 s: {2 D' Y. p- x5 N! G
  2876. ;程序处理开始5 H$ P# F, ?: @) O" f0 m) c- y* x
  2877. JMP ProgramBegin
    # o2 R$ x3 B/ x. W
  2878. $ B! |7 z6 Y( g! m3 E7 u! G& e, k2 \
  2879. ;==================================================; V. M0 J/ V4 }+ ~7 n! W
  2880. IrqProgram;Irq中断处理
    ' W" }4 v) ]0 k/ d, G9 G
  2881. PHA, b% C9 H7 \+ D2 D" ^
  2882. TXA
    $ y  y5 f( i; \6 D5 V* X# z
  2883. PHA
      R1 T" m, Q4 a* m3 T1 q
  2884. TYA
    , ~: E: ?$ J) Y+ r
  2885. PHA! J2 A2 y) G5 Y0 R$ O2 l; p
  2886. 7 o/ I9 O/ {. V& ~% l1 J9 W
  2887. ;关闭IRQ. }9 O. Q, q; z* u8 u
  2888. STA MMC3_IRQ_DISABLE5 g7 S6 V! e( C. S* k; u
  2889. $ N* k8 @! s$ U2 U, i! {" v
  2890. ;允许下个IRQ触发3 W- m! w/ v9 T8 z# ]" r
  2891. STA MMC3_IRQ_ENABLE
    % D) ~& |$ f: o* }' e
  2892. ; j: r! H5 D% Z, Y4 E
  2893. .IF IRQ_SUBPROCESS_JMP6 m4 S  G* w" B# }$ H+ X  B# t

  2894. , n4 e' \! s% N- y- ^& e  T
  2895. ;执行IRQ过程' W7 _# [4 Z. {- i# P
  2896. LDA <Data_L
    / u' G) L' e3 W; [0 c4 g/ p
  2897. PHA9 O; L" l; ^. }8 ?
  2898. LDA <Data_H
    ! b- }7 B- m8 a# H
  2899. PHA
    ( E$ u, f9 k/ f7 G
  2900. LDA <IRQ_Process_Index9 i  h# f- ]; ?. p" k
  2901. ASL A- Q$ Z1 o- y' i. }. G  U
  2902. TAY
    0 r9 S6 y4 d+ j: c" a
  2903. LDA IrqProcessAddr,Y
    9 p% l- I$ q% Y. p
  2904. STA <Data_L' l" f  Y- f& A
  2905. INY+ X2 Q2 O, Z' y) U2 \+ Z
  2906. LDA IrqProcessAddr,Y( y, x7 n2 C5 f7 J& m
  2907. STA <Data_H( T6 |4 Y) h  y  }! E* H/ I( {& v
  2908. JMP [Data_L]
    7 V/ ^9 z4 r0 M$ v( P
  2909. - w8 L5 O6 e2 R3 B* A7 X# X5 Y
  2910. .ELSE
      D3 J7 P' r0 U* e' g3 N. ?! x  ]$ t
  2911. 6 l9 `! \3 A% |  X6 z! \
  2912. JSR IRQ_Process
    * D* _! \( e) p" }# _2 C

  2913. " g; `$ e( |3 d* e% i: h
  2914. .ENDIF
    1 z" Q' c& C- h5 p6 o7 C3 w( p
  2915. ! E5 l5 ?1 _. \3 w3 o2 W
  2916. IrqProgramEnd
    ; p" @: d+ p+ e6 |( {* `
  2917. .IF IRQ_SUBPROCESS_JMP
    / k/ ~: p3 [$ A' ?! s' u
  2918. PLA
    7 I- v# x# M9 n, B9 [
  2919. STA <Data_H, x+ h: u0 M% H6 V) p
  2920. PLA9 p9 p; o1 ]) y+ v2 `  @' R" m
  2921. STA <Data_L5 d1 X3 ~0 a! i# Z5 H( f
  2922. .ENDIF
    8 T$ K4 I. B' z
  2923. PLA
    , g2 w/ @; g) v. ]7 k2 j9 ^9 }; e. C
  2924. TAY6 d/ R/ g9 D3 p4 Y7 J# x0 q# [- ^8 F- Q
  2925. PLA( \) ]* G' b& v4 {; A4 u
  2926. TAX" j# F, b( G" t
  2927. PLA0 p: i5 _* G- }/ G) D9 k
  2928. RTI
    / Z8 g' A/ m% d" v- g( q
  2929. 8 @7 W: E' Z0 z
  2930. .ORG $FFFA( v7 K6 x' ~$ m9 N
  2931. .WORD NmiProgram9 \9 N2 M6 p- W- o
  2932. .WORD ResetProgram
    0 ?' p4 b" O* Q- x
  2933. .WORD IrqProgram
    % ^, ^; h( P" g. d

  2934. $ E$ a7 g' j3 [) ]+ Z
  2935. .BANK RESET_BANK & BANK_DATA_MASK0 {9 k2 m: p( B0 Y. c/ `- Z
  2936. .IF SOUND_BAR_SHOW_ENABLE6 j7 H. K$ s. ]" x% u
  2937. & u( O- c% d! d, U( L8 S; s$ _! }7 T
  2938. .ORG $FE00
    9 v2 u5 U2 q4 N5 P& _: z
  2939. PHA5 l- x' z# d% J; n. C' w
  2940. STY $07BA
    + l( N. N& G( X# d2 m/ y! `. j6 Z
  2941. LDA #$8D
      v8 @% v6 c6 p
  2942. STA $07BC
    " Z% `2 B) _4 M! e0 o7 _" F- H* g8 s
  2943. TYA
    0 T- g: S# i# \$ k. T
  2944. CLC( V* _! Q# ~  [) O& y% V' R/ R
  2945. ADC #LOW(Sound_Bar), r+ d4 [) D4 z$ B, a
  2946. STA $07BD  ^/ B3 [7 F/ f) S1 [
  2947. LDA #HIGH(Sound_Bar)  U% O3 r* A  G. K1 S
  2948. STA $07BE( T( m  B2 Q; H/ J- \) _
  2949. LDA #$60
    ( C5 T; F$ c! A  L5 Y( `4 B0 I
  2950. STA $07BF( E4 G) C8 }0 D6 [. L9 ?
  2951. PLA- U: @/ B' j. ?. M. Z# r" O% m- V8 }
  2952. RTS" y6 n/ c! [2 A$ J- }- W
  2953. 8 x+ }# d' ]5 Z% x
  2954. .ORG $FE20
    . Y9 R& Z9 \' W/ g
  2955. STA $07BA
    9 l, D1 C. b/ ^+ G5 B
  2956. CLC1 ^7 U3 |) b, ]1 F' G
  2957. ADC #LOW(Sound_Bar)  P0 K. S& I3 B
  2958. STA $07BD' `/ M* k$ O/ A& u5 b
  2959. LDA #$8D
    9 p: q# Q: I+ x
  2960. STA $07BC/ x4 D3 o* ~# \" k% \' R
  2961. LDA #HIGH(Sound_Bar)4 l; y) I! b1 j
  2962. STA $07BE& i+ G; n5 e7 j4 z( b0 ~' }6 M
  2963. LDA #$60
    & E: S8 Y4 E) `* D; B* L
  2964. STA $07BF1 g5 k9 K5 m& G# Z+ p& e7 g1 A
  2965. RTS
    ' g; v# |4 h' ?# v: A0 u+ D
  2966. * f& b" I4 }% n/ o) ]
  2967. .ORG $FE40& J: F$ k# H2 _2 E% a0 O4 G. I+ J
  2968. PHA' c. g4 W4 I* u
  2969. STY $07F1" K8 ]0 P* H' {- N9 ~
  2970. LDA #$8D
    : `8 i( y/ t: i& t* T
  2971. STA $07F3
    ' Z$ D2 i- b- e
  2972. TYA+ ?8 i8 h' J! l6 r, m3 e- g3 M
  2973. CLC% }( ^7 ^$ j" N4 C8 m7 y
  2974. ADC #LOW(Sound_Bar)) \. ]4 M' N1 A
  2975. STA $07F48 S$ H: M# t9 \2 C3 d
  2976. LDA #HIGH(Sound_Bar)$ t% o: J- E7 ~4 G; o- I6 n$ _' b
  2977. STA $07F5
    7 F( t$ H: T- u7 a, V8 J
  2978. LDA #$60+ A* F: g* k5 y& r6 k: L$ L, \
  2979. STA $07F6
    3 f5 @0 E. Q: x! H8 I) e3 H( c
  2980. PLA
    ( m0 Z8 h7 J! e# D
  2981. RTS! A- T& Z2 W/ H( }  E& S3 J, m
  2982. " U" C+ l, Z& [- ^! O6 D
  2983. .ORG $FE60" V) ?- q$ P% K* t# D
  2984. STA $07F1) q9 V+ s. r, N7 s/ \
  2985. CLC
    ' f. ~$ z% c2 J* N# T! l
  2986. ADC #LOW(Sound_Bar)$ F( q" I, {0 ]; x8 o, {
  2987. STA $07F4) ~& _/ J0 w+ W1 k
  2988. LDA #$8D# C3 s6 S0 k( Z" x8 b) q3 V( q; h
  2989. STA $07F3
    ' l7 }' n+ d( k
  2990. LDA #HIGH(Sound_Bar)  S8 Z  S0 j3 l; e, h6 m! i
  2991. STA $07F5
    / z' ?, s0 r( ]$ L; V  t, ~$ [
  2992. LDA #$60
    ( [- J6 b! Q; p9 c
  2993. STA $07F69 a- h# B2 @9 K+ e
  2994. RTS/ f  c1 Q+ s# K7 B7 K
  2995. 3 c" A3 x- W. W4 E+ @
  2996. .ORG $FF40
    5 r6 N. g4 i: o4 J) d+ m' ^
  2997. STA $4000: Q5 N/ ?/ |- f
  2998. STA Sound_Bar + $00+ c% j6 \, ?/ E, t! G; E
  2999. RTS
    & k4 l/ P1 M/ y
  3000. " h; X( i7 Z2 R% Y1 x, S2 K* i& p  m
  3001. .ORG $FF48
    6 k- p) U6 k/ f4 ^; p
  3002. STA $4004& S; R1 ~+ ^- U) v7 O
  3003. STA Sound_Bar + $04
    - W8 y5 S& [* q* J9 {/ S9 m
  3004. RTS
      w. S2 ~  t  ^0 L
  3005. 8 k' V$ h* U4 E3 W
  3006. .ORG $FF50, _, o$ U- {) ]! F# _/ {9 j
  3007. STA $4008- {0 \0 Z8 r4 I7 X+ Q0 C0 E* i+ V
  3008. STA Sound_Bar + $08
    1 T7 f3 _7 @' R& Q) r. X) h5 _
  3009. RTS
    ) ~8 q6 M% S# k1 U
  3010.   H# `, g) U7 d  q" C- v# b
  3011. .ORG $FF58
    & @# L2 A: T; Q& Y9 ^' W
  3012. STA $400C
    ; T9 f  ?. G7 w5 a  s
  3013. STA Sound_Bar + $0C' ~& N8 q8 x* k
  3014. RTS8 {) v7 q. K6 U  l' w+ X4 w" @
  3015. : w/ X4 j: y" G$ b: R* [
  3016. .ORG $FF607 r0 X: v3 D0 i! N
  3017. STX $4000
    , I! E& j& W" t: a  \) m: t
  3018. STX Sound_Bar + $00  C+ C$ R  f3 j" p
  3019. RTS
    - k. F8 ]! L6 h5 S9 ^
  3020. ; s( A- R. c0 p# a7 I( I
  3021. .ORG $FF68
    / l/ \4 T7 V: Z% W  k7 Y; y
  3022. STX $4004
    # _3 A3 T" P& ]( y- t+ ]
  3023. STX Sound_Bar + $04" t  u9 G4 j+ \/ q
  3024. RTS
    " g( I8 o1 s& k+ g/ d

  3025. + T, k, ?$ o3 R# N1 `9 D
  3026. .ORG $FF702 I; Q( m; ~8 M2 R
  3027. STX $4008
    # J# L" \' N! R7 w1 S2 E: \* M" A
  3028. STX Sound_Bar + $08
      z4 w! ~$ v# q8 r+ K
  3029. RTS# h# S5 A/ T% y

  3030. 2 @  \# V2 p$ b- B( A
  3031. .ORG $FF78
    9 c2 x3 F# T: J9 b/ _! f$ K8 {( f0 u
  3032. STX $400C
    0 g1 o/ a( }4 r6 v8 l7 _' ?* s; E
  3033. STX Sound_Bar + $0C
    8 \/ I4 w& N$ X
  3034. RTS, @, f  Q5 r  s$ ~( W, p
  3035. ( Q6 X5 N( j- R  v& Z6 M# \
  3036. .ORG $FF80
    / o6 X, i: D7 l! u! s, }: _
  3037. STY $4000
    * b& y/ _& M& z! |6 C& g
  3038. STY Sound_Bar + $00
    ; E1 h' g- D* `3 j: v8 d
  3039. RTS9 ~  K, `" P; |% H0 M
  3040. - Q. E* K& E; F- W% s6 p- i  t
  3041. .ORG $FF88
    7 \% l8 W) n# S# \
  3042. STY $4004
    5 f7 _$ K7 T) E8 c" P3 D" g
  3043. STY Sound_Bar + $04- C" s% ~1 J' n; ?8 s. x1 i
  3044. RTS
    , A+ R7 P: e/ ~, P( w
  3045. 8 |4 w7 _# _- X& A
  3046. .ORG $FF901 o- C6 z: L& J" e9 m2 ]" i' F1 G
  3047. STY $4008" G1 y9 S$ }2 v% h7 F" p: [# y
  3048. STY Sound_Bar + $08
    0 a3 ]5 B. e+ k( r0 m
  3049. RTS
    2 _4 h+ M3 u; o1 o& ?

  3050. : a9 M2 }/ h! x  ?6 d0 f. P7 Y
  3051. .ORG $FF98) t- P9 \" {" h0 v2 g. `4 v
  3052. STY $400C
    1 U6 `8 _( T. M- G) V$ M* T
  3053. STY Sound_Bar + $0C; S* R3 N9 t. o4 L8 d5 x& I; g0 o
  3054. RTS
    ' g3 _) Y/ E1 }0 z* P+ D1 t  N5 L$ T
  3055. 1 a+ k$ K. X/ L. t- b. z2 [/ f
  3056. .ORG $FFA09 b  @* e! e9 `
  3057. STA $4000,X4 w/ Q( O/ ]4 N+ [; z
  3058. STA Sound_Bar + $00,X
    ; i- r' d0 |' g3 l. ]
  3059. RTS1 ^. d2 }7 A! I) d. d0 {

  3060.   \: Y! O  w- V, O9 g
  3061. .ORG $FFA8$ f# ]7 U8 x' Z; p
  3062. STA $4000,Y: U( i! F0 b4 r( d9 \
  3063. STA Sound_Bar + $00,Y2 |: I) Q1 `3 f# U9 l
  3064. RTS
    % t2 ~  C) ^0 k* l% X' z% i
  3065. 6 S3 L$ p. y% H) r/ h/ N
  3066. .ORG $FFB0
    3 O! C+ ^6 A: B
  3067. STA $4004,X6 p. M& K8 I& Q' U/ M% E- A- f4 K
  3068. STA Sound_Bar + $04,X. s" G9 M! l& _8 D) k7 ?
  3069. RTS9 |7 v, N2 M& W  z- p9 m, b
  3070. % n1 c2 a) q4 y  T. {! ~
  3071. .ORG $FFB8) F5 K4 f" Y9 ?
  3072. STA $4004,Y& ?$ s/ Q& g0 H* w4 \  K+ T, `
  3073. STA Sound_Bar + $04,Y: b' r1 W8 h! e6 P8 R- `
  3074. RTS  S, u8 A4 P/ d) U4 z

  3075. 0 W7 f' v5 X4 Q; W1 D6 Y8 X
  3076. .ORG $FFC05 R* k" b# K1 F6 d# S
  3077. STA $4008,X3 a, f: h2 S+ t
  3078. STA Sound_Bar + $08,X: c+ V7 x+ R3 U! K) U/ k
  3079. RTS
    # [8 m" Y; E9 Y) |) g. I; e4 [
  3080. : {" T' W; l* ~
  3081. .ORG $FFC88 R: k7 O  o/ e' b% r
  3082. STA $4008,Y
    4 \" _& ~0 M, |# q" }1 [
  3083. STA Sound_Bar + $08,Y6 Z" s" U4 @) D% x3 ~% `
  3084. RTS
    * R3 L5 U, u% M

  3085. ) v9 B6 O  L) k0 w0 ^; J: f! D6 X
  3086. .ORG $FFD0& _; }$ y7 |2 R' X
  3087. STA $400C,X
    + o% p8 ]4 T" l, w' z( P
  3088. STA Sound_Bar + $0C,X
    / v% z$ e6 e9 Q8 ?# B
  3089. RTS0 W) s* C0 h" @4 W$ z

  3090. 5 E6 A) n4 f7 o) d2 z
  3091. .ORG $FFD8/ ?& ]6 k5 O( {: a, ^
  3092. STA $400C,Y- C: a- y2 ]; H# i
  3093. STA Sound_Bar + $0C,Y
    , E; w; H, E3 G. u
  3094. RTS
    # d$ J- \% v, e+ q

  3095. - M% n# Z/ q# N% z/ E) _
  3096. .ENDIF
      B5 ~1 n6 N3 ]; h5 ~! S. [3 ]
复制代码
! V9 ?# B* k" V& ^
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3366 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-18 21:35 , Processed in 1.113281 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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