设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
, @) Y" ?6 a! G
, ~/ Y) N2 q  ~, [  b! c0 q- h! T[FC][音乐12 IN 1]0 ?  R* n4 a. @; B7 v0 f! }( c
时间: 2023.07.23
; E4 P! o: V* I, ?6 P' x- i4 T+ n作者: FlameCyclone' r' h% |( [& a; i% d% c

0 f1 Z, G( e/ m2 p( _收录音乐内容:
4 a- n  {3 J* B% E" u5 W1.Raf世界# Z: X4 G* w+ n
2.最终任务5 [: z1 b- l1 z7 q
3.赤影战士2 d6 w2 _) `% q5 h
4.双截龙+ h. M. T8 y6 C" |" O6 D
5.双截龙2
! i5 t* D/ K3 H; q3 [, g8 e2 ]$ V6.双截龙38 B  h$ ^! n- E
7.洛克人
( B8 [8 x8 F/ J; |  ^8.洛克人2* L7 T4 c0 U: `) H( y: A$ }! P
9.洛克人3
& w. P1 v$ Z, y2 i6 l4 c4 ^10.洛克人4& s- u. m$ G  x  L: j- x
11.洛克人5- n) n: G6 S& N0 _% y4 d6 R8 r
12.洛克人6$ _+ o/ B2 q/ ^: T# i

  [. E: t1 e0 \. s+ v* D操作:# m. [( V; r* v
上键:         上一个专辑  A& e. `; b% K/ T% w' V
下键:         下一个专辑  J2 X) d$ |; q0 y1 W
左键:         上一曲
' D% K1 f- i. V7 m3 s" k& s+ K右键:         下一曲
5 K* T" x( o6 o& m6 y6 H' FB/A键:        前10曲/后10曲
% j9 n6 K0 D3 G: J* k选择键:       下一页
- A8 i' C+ U3 N9 M开始键:       停止/播放1 {8 V" M. N8 v: x5 P
4 y, a: z0 L. M7 g7 Y( c' y" d' |
http://flamecyclone.ysepan.com/
* t) q; {4 z, {& {  d
# t. K5 q4 u$ n# A, \0 I8 Y2 h! D- n& _$ x0 @2 f
1 P% P, c* L' }

6 S( {. P3 c, o% U8 f0 ~
  1. ;[FC音乐][播放器模板]
    7 H* M" G, F* S7 i+ a
  2. ;FlameCyclone 20230710. |3 z$ r3 L, C0 m1 U' r
  3. + t4 d8 x) U& M5 Q9 X
  4. ;文件头
    8 k8 D! E7 W8 J
  5. ;======================================================================) k4 I, ^. A# F- [
  6. .INESPRG 16                                             ;16KB PRG 数量
    * W" c/ p6 B1 Z/ M* e" {+ E
  7. .INESCHR 1                                               ;8KB CHR 数量
    ! [4 v6 l; [+ q2 b" D# x1 S
  8. .INESMAP 4                                                   ;mapper 4
    * i! O; f# `& P+ T' k' S0 l
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    3 C7 ?( _0 \* O' I7 D: L0 ]' R

  10. 1 ]. i9 X# o6 C( W
  11. ;==================================================& f* U, ^  c7 E0 y7 e& f
  12. SOUND_BAR_SHOW_ENABLE       = 1
    6 J" `, c* F( a  [; M: L
  13. ;==================================================* D- u1 ?4 q  ~/ h( ~' Y0 z5 Q
  14. BANK_DATA_MASK              = $1F
    3 W; t/ z6 M, o. i8 l* e. c) F
  15. CHR_RAM_ENABLE              = 0, m- y5 V% H6 R% b& A% m
  16. IRQ_SCANLINE                = 136( R3 Z1 _$ F) J+ y, ~
  17. ;==================================================* `# ^8 f5 ]( W' c0 Q) g! O3 b
  18. SOUND_DATA_BANK_00          = $00
    0 J( r7 d  I( x3 b1 R
  19. SOUND_DATA_BANK_01          = $01
    + L$ o, e) b- d: b
  20. SOUND_DATA_BANK_02          = $02. ^8 W& D, v6 E! r
  21. SOUND_DATA_BANK_03          = $032 f7 s0 w, V( G- U2 I3 Q+ A) f
  22. SOUND_DATA_BANK_04          = $04
    , v& W6 z" X: w4 S
  23. SOUND_DATA_BANK_05          = $05
      |1 a0 U2 W1 F  p! b: ~! k) Z
  24. SOUND_DATA_BANK_06          = $06
    $ {0 n  T9 r8 M9 j. J  o
  25. SOUND_DATA_BANK_07          = $076 I; Q0 q5 Q+ a) X# V; M
  26. SOUND_DATA_BANK_08          = $08
    1 o$ V: V5 d, f, T# B
  27. SOUND_DATA_BANK_09          = $09# l) \4 A! A5 _/ @/ B0 l' I6 ~
  28. SOUND_DATA_BANK_0A          = $0A
    4 y/ |. m/ ^3 a& b/ e$ O
  29. SOUND_DATA_BANK_0B          = $0B' e& D; A+ S/ t! p& O
  30. SOUND_DATA_BANK_0C          = $0C
    ! j( F! G' z7 D7 C2 b6 ?
  31. SOUND_DATA_BANK_0D          = $0D
    & F. K( a  W/ o9 z
  32. SOUND_DATA_BANK_0E          = $0E
    5 _7 G$ {8 K$ D* Y# U
  33. SOUND_DATA_BANK_0F          = $0F
    # P3 U! J9 v8 s5 e& P
  34. * U! u; }0 K1 c0 m7 K! K: R
  35. SOUND_DATA_BANK_10          = $10, x1 ?! {2 Y9 q. m# X
  36. SOUND_DATA_BANK_11          = $11
    ' J" ~$ m4 c, M' S5 i& a( G7 j
  37. SOUND_DATA_BANK_12          = $126 X0 B; e4 g* ]! e! G" `' @( ?" P$ @
  38. SOUND_DATA_BANK_13          = $13
    ; X, v. b+ f" a
  39. SOUND_DATA_BANK_14          = $14& d% E" J# J- }' z# j2 j/ y' b
  40. SOUND_DATA_BANK_15          = $15. `/ W0 Q& T; I, r8 ]$ m0 {
  41. SOUND_DATA_BANK_16          = $163 z2 r' n, m5 D8 H/ F& v
  42. SOUND_DATA_BANK_17          = $17
    3 {4 \: h/ U, n+ J8 m- b6 s" T
  43. SOUND_DATA_BANK_18          = $18& _' E. t3 l2 h" e
  44. SOUND_DATA_BANK_19          = $190 Q2 z/ L( M% A' V. k% u: t" i8 i
  45. SOUND_DATA_BANK_1A          = $1A
    + t; y% B9 Q7 J' n$ k& q
  46. SOUND_DATA_BANK_1B          = $1B
    + a/ ^2 v/ a) t$ ~4 q
  47. SOUND_DATA_BANK_1C          = $1C# e& F; Z3 V$ h1 d: _
  48. SOUND_DATA_BANK_1D          = $1D
    - f7 Y& R3 T: Y7 _4 M& [% @9 z
  49. % E& D& o7 Y1 J  W2 s
  50. SOUND_DATA_BANK_C000        = $1E# l0 R4 r7 \! y) o
  51. SOUND_DATA_BANK_E000        = $1F
    1 |# o0 }/ {; [4 b9 ]
  52. ;-------------------------------------------------- s4 L( \# M! R3 ?
  53. CHR_DATA_BANK               = $20
    & X+ G" s& G6 w1 J( j
  54. CHR_DATA_ADDR               = $A000! m, e3 |; U  d$ `1 J
  55. ;-------------------------------------------------
    2 i' B- m, |0 J
  56. PROGRAM_BANK                = $00
    4 V2 Q0 B0 H4 Q# _
  57. PROGRAM_ADDR                = $8000
    % q) p5 t3 u$ j+ S# r% L) w! S
  58. ;-------------------------------------------------7 [  ^$ ^, P: N8 p; Q
  59. RESET_BANK                  = $1F
    1 a: k& c3 n( D+ a& z' U2 o
  60. RESET_ADDR                  = $FD00
    , }9 F" c* J6 y4 e8 B
  61. * ], l5 A1 F0 _
  62. ;==================================================8 K# K1 v8 s6 L
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数. |4 C6 Y7 i0 M
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    ' N' N. l# T! X* S) U6 h. A
  65. PAGE_SIZE           = 5                     ;每页节目数% I# ?$ e4 Z& b$ w. z+ z$ l/ |
  66. & ]/ j7 O# M: {6 W0 D" ]
  67. ;==================================================
    ' Y. [$ u, w6 @( a4 n8 G% j
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    6 G- g$ P. B: q) o8 q4 Q
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数+ [+ K; B, ?3 p
  70. .ELSE
    1 r  W1 l  z+ @$ [% |. x
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    1 {/ o1 x5 r  \# ^; P" i, I
  72. .ENDIF
    2 I, y5 R; m' }( {- w! ~
  73. 5 F( z' ~! ^: u7 ^' ~  T$ Z
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    : l) U3 A9 V, R6 I4 j; O! G* G
  75. ; s# `3 W# n2 M
  76. ;==================================================8 s9 l* D+ E5 F# l8 r
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置. n# \/ y. y: k; h/ k
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2& s7 N' G& B7 ~& A0 }7 W0 h
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;2 s3 N1 a( ]; e) l  v1 S
  80. ;==================================================( q7 F) ^6 ]. n6 t4 z& M0 }
  81. Caption_Text_Pos    = $204D ;标题文本位置
    * K7 X% z% W; G0 {. M$ {9 ]
  82. Author_Text_Pos     = $2324 ;作者文本位置
    5 P+ K( e1 t, Z/ N- _* s, {7 M
  83. Date_Text_Pos       = $236B ;日期文本位置1 ]: k' r! T. X; \  w; L
  84. ;------------------------------8 V& z, g4 b+ E$ h* N5 N6 c* \- z  o
  85. ;------------------------------! s8 O0 H0 G" H& @9 L/ S
  86. .IF SOUND_BAR_SHOW_ENABLE
    ; g8 i# {1 z, j7 r! I5 X% P

  87. $ A* F0 t6 Z' m  C/ C
  88. Play_Index_Pos      = $2273 ;当前曲目位置6 ?' j& K2 }& v- l
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    4 \. _1 G; H! l( R2 V
  90. Play_State_Pos      = $22F3 ;播放状态位置7 Z9 m: M) `9 b2 N

  91. 6 i8 J# @: w$ N# l
  92. .ELSE
    1 r7 k- }2 V% P; B/ L, v

  93. % `3 K5 j% {% Q
  94. Play_Index_Pos      = $226C ;当前曲目位置% c# K. b: w6 |
  95. Play_Time_Pos       = $22AC ;播放时间位置% `7 I: X! _' Q7 L
  96. Play_State_Pos      = $22EC ;播放状态位置# \8 y9 B* o' b' c3 b/ l

  97. / q8 d- e: ^9 W0 D9 U" d9 ^0 A3 H$ G
  98. .ENDIF' e+ Z. B6 O( S6 ~& w4 g
  99. ;------------------------------) X6 z' [0 |5 M9 _* i/ F
  100. Track_Name_Pos      = $222B ;曲目文本位置* R/ b& U# c! x6 r5 b% @' |
  101. ;Track_Name_Pos      = $00 ;曲目文本位置6 D/ {7 t5 a5 b2 E9 L  f
  102. Sound_Track_Pos     = $2265 ;声道文本位置; `: u8 g  o" D8 p0 M
  103. Sound_Bar_Pos       = $2269 ;音乐条位置6 I5 j6 @# U& Q! v" M
  104. ;==================================================) C8 |+ H% @( ?( n, t
  105. Scroll_X = $003 z( X* H' u8 b  }
  106. Scroll_Y = $00
    + A/ K! @: x  K1 I+ T: `. r- g
  107. ;==================================================
    8 i$ q5 f0 a# ^! {2 @9 J; Y2 e- E
  108. Sound_Ram_Addr_1       = $0100
    ' o5 B8 _/ i* W" b9 _! x0 R
  109. Sound_Ram_Addr_1_Size  = $80
    * _8 Z3 }) Z4 ]
  110. Sound_Ram_Addr_2       = $0090  X( [' s/ ?! u% b# s. t
  111. Sound_Ram_Addr_2_Size  = $70
    0 O0 m8 E# [( D9 E5 p
  112. Sound_Ram_Addr_3       = $0700* e5 a+ j2 z# u* d  V8 P
  113. Sound_Ram_Addr_3_Size  = $00
    & t& L9 S9 y7 K& M, U3 G! E
  114. Sound_Ram_Addr_4       = $0400
    . l+ A, f* n& q: d0 M, y+ ?. Y
  115. Sound_Ram_Addr_4_Size  = $00
    8 E5 s  ]; e, O) ?) F& Y/ S: i
  116. Sound_Ram_Addr_5       = $05009 D. ~" F% ]0 P4 P, M1 N" @
  117. Sound_Ram_Addr_5_Size  = $40! }! V1 L' _- J. h( }( Y  v3 m
  118. * H3 I+ Y; M1 z! q" i
  119. OAM_TEMP_ADDR   = $0300
    $ N; T+ q  X; T5 p" t

  120. 4 C2 X9 F9 e+ p% Q2 W6 a
  121. ;==================================================
    * _$ @( P% K* |- q% a, @" d& A
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    , b/ t4 _  @* U- L' |* F. [3 D
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    1 U9 V. X5 R+ x* i5 M2 x
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位+ F& U8 j, d2 W( @% h7 b
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    5 P* Q( l# X+ o; c! \
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1" t- r  Y2 z5 u
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    4 L. k; p" ]/ B- U8 x
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    2 k5 D( a) x$ H& k1 Q. e
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    3 r: H  T, ~) v+ l# H; X% F
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存' |! K. {4 f, ~' l0 `" c' _9 f
  131. APU_STATUS              =   $4015   ;声音通道切换
    + B/ I6 U" V' q' z& J# a3 V! n
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通3 s; f5 H; i/ x# G; v2 R8 ^9 H
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    / y7 D4 u: c6 x; n0 e
  134. ;==================================================
    4 b# O7 o& J* A* g
  135. MMC3_BANK_CTRL          =   $8000
      w6 n- V! ]" N) I4 k# E* p) \. Y; J1 J6 a% a
  136. MMC3_BANK_DATA          =   $8001
    ; D! W' V5 R# t2 Y4 ?; J; d7 j
  137. MMC3_MIRRORING          =   $A000
    ) j  H% t: o1 H& X( h
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    / A% j  {* O! G% Z: X! ?+ x
  139. MMC3_IRQ_LATCH          =   $C000
    $ }4 `- q- q1 H3 ]( m7 Q1 z
  140. MMC3_IRQ_RELOAD         =   $C0018 t) e) m4 J4 t9 Z4 V& I
  141. MMC3_IRQ_DISABLE        =   $E0001 r6 P. P( [# Z9 h
  142. MMC3_IRQ_ENABLE         =   $E001
    % T* I7 d$ C& S& X/ j/ G! }. y

  143. & R' u6 B9 k7 I) k4 e
  144. ;==================================================$ V" x7 L8 k, w" Z7 g5 h* ~& j/ O
  145. PPU_Addr        = $0200/ ^9 M% e4 M' }3 L: f3 f* f# V
  146. Palette_Addr    = $02C06 N, v4 A! j+ A9 N
  147. Sound_Bar       = PPU_Addr+$E0( k( G# R3 A" V& L' X
  148. ;==================================================
    . q" p/ x7 F( p  ^3 |6 _3 ^) b/ U
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    ) }  K, F3 d1 M; G4 y- a
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    6 j6 I- X% U; s5 T
  151. PALETTE_UPDATE_MAX      = $2C" K; I: U* p! e4 k( L* ~
  152. PALETTE_UPDATE_MIN      = $217 a/ D. Y+ S: y" k
  153. PALETTE_UPDATE_INTERVAL = 60
    " }1 D! |: B$ Z$ U4 X
  154. ;==================================================
    * Y3 ^9 q" K3 q) M0 f
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    $ ~) _5 h. U5 j* ^# {
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    ) Y3 {4 L6 G; L
  157. PPU_Addr_H          = PPU_Cur+$03
    3 |& o* T! j1 b, Q
  158. PPU_Addr_L          = PPU_Addr_H+$045 y9 R/ ^! y+ n7 M7 ]; P
  159. Screen_Ctrl         = PPU_Addr_L+$01
    ' H3 d6 ^2 c) ~) j+ ~1 i$ p0 m* l
  160. Screen_State        = Screen_Ctrl+$01
    ) n4 g. X5 |3 T8 v3 q5 Y
  161. ;==================================================
    & O* z5 k) G7 u. h. n! C
  162. Use_Ram_Begin       = $50
    / Q1 Z" i! f4 [/ g0 [# I
  163. ;==================================================
    8 B$ I/ a. h3 A7 Q% R3 q& l- o
  164. JSR_Addr_Op         = Use_Ram_Begin  N5 u" u. s: K
  165. JSR_Addr_L          = JSR_Addr_Op + $01- E' _- k8 z: g" h4 \" o
  166. JSR_Addr_H          = JSR_Addr_L + $01, |6 i+ l& Q% I
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    ) u+ s4 a& Z8 e+ L$ O
  168. Data_L              = JSR_Addr_Rts + $01: [: P  M8 h+ m+ Z7 z/ ]
  169. Data_H              = Data_L + $014 o8 W7 t+ k$ V8 a, G( _2 ^- W
  170. Data_Cnt            = Data_H + $01
    / P5 p8 ^8 u0 M' R1 p% y
  171. Data_Buf            = Data_Cnt + $01
    3 Q4 l) B$ i1 c* s
  172. Nmi_Time_Count      = Data_Buf + $01
    . S) i* K% {- V( L9 p, f7 h
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01/ t8 M- s1 S9 e4 o; e6 a
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    & z8 }+ `, u9 j. ~4 z4 y) M/ R
  175. ; w7 _2 P  K, m1 C. F$ M
  176. ;调色板刷新标志( L8 f3 C/ n# ?% c
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    # M" u$ F* ^* L6 S8 J2 ~
  178.   X8 x# h0 l3 O6 f
  179. ;当前帧文本写入禁用标志
    / X3 _0 O, V$ {6 I; {
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    * A1 z6 A) A9 X
  181. + Z& v% ~, E9 O+ H' Y' `0 X. @6 z
  182. ;==================================================
    0 D) s& I+ n) i  y7 f
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动1 N* Z  p: z9 p' ~
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    " f. V# l: K) Z" P7 k' ~
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间1 k  Z8 P" q+ \. @
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间) I0 L' _4 a3 C9 J. _* j% |& l! n
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间/ w1 i8 F# s7 I! u0 z
  188. ;==================================================
    * Q/ Y$ D/ ]; F1 D9 G
  189. Key_Keep            = Text_Disable_Flag + 1
    ( u, T' }: R' Z- j3 G8 D
  190. Key_Once            = Key_Keep + $01: L; y0 D3 ~8 h
  191. Key_Kemp            = Key_Once + $01: [8 {* ]* v3 `( q
  192. Key_Temp            = Key_Kemp + $01
    5 e. Z6 B* A5 o2 b* n, D
  193. Key_Getv            = Key_Temp + $01
    , l2 \" O: U7 a( p
  194. ;==================================================& X/ K( o% n* m8 k& T1 k
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集$ \1 b( O; X3 N2 [
  196. Music_Item_Last     = Music_Item_Cur + $01
    4 e, p# _- ?+ d" Q) `# Z1 x
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集* J5 R% _. o1 V# H7 s5 ]: P3 g
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    % B+ j+ b  ^9 c9 a: B) @8 b
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    " S1 h. h0 q2 I/ Q5 P. R
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    + u8 D" q' j& g! q
  201. ;==================================================
    & n  |3 L# n0 A) ~6 W  S5 q, \( }
  202. HEX_Data            = Music_Stop_State + $01) {" e& W7 I% x, y6 r
  203. DEC_H               = HEX_Data + $01" P+ D% Z. r8 C% d, j( W6 ]" T5 d
  204. DEC_T               = DEC_H + $01
    , q0 }* c* G6 |: w* M1 J( L$ }# Z
  205. DEC_L               = DEC_T + $01
    5 V/ d) G8 P3 b* b
  206. ;==================================================; V3 h& |6 N9 J7 B0 H) A
  207. Time_S              = DEC_L + $01
    ) W5 G+ j7 u0 j! A* C0 V
  208. Time_M              = Time_S + $01% W9 f6 \+ ?; i/ ?' n$ L
  209. Time_H              = Time_M + $02
    - |8 O. V# Q% X8 ^
  210. Time_Cnt            = Time_H + $03* D; G6 c6 b7 b. _( D) U* b; ?
  211. " F$ u, N* Z7 i
  212. ;==================================================
    * \) ^/ C# ^4 |& `& ~7 |' L
  213. Music_Bank_8000     = Time_Cnt + 1
    7 a# n) x; p  O& f+ j
  214. Music_Bank_A000     = Music_Bank_8000 + 1/ k/ Z& Q9 ]% n1 r! m2 j
  215. ;==================================================
    " _' I! a! Z3 A3 D5 E& h- U& r
  216. Scroll_H            = Music_Bank_A000 + 1
    - c* F. v+ N* {1 B3 V9 }0 S% u
  217. Scroll_V            = Scroll_H + 1
    * j9 W: S2 R! m( p& v0 @8 U
  218. IRQ_Process_Index   = Scroll_V + 1( H* }7 l. b/ k! k6 B
  219. ;--------------------------------------------------
    , [" R' k5 Y4 q
  220. Page_Cur            = IRQ_Process_Index + $01# W& M/ x% A$ V+ [" l' \
  221. Page_Cur_Index      = Page_Cur + $015 O: F9 v2 K# D0 B& A- a' A  N
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    1 E' j- Y) @. f. b4 w/ @
  223. Page_Last           = Page_Cur_Cnt + $01
      j4 t! w# a' D" P$ ]
  224. Page_Last_Index     = Page_Last + $01
    + U% O" x9 ?( O. X
  225. Page_Last_Cnt       = Page_Last_Index + $01
    4 X) v2 w# L9 s1 z; j/ d* h' y+ K
  226. Use_Ram_End         = Page_Last_Cnt + $01( o6 ?; `- s: C5 S4 J
  227. ;======================================================================
    " p: I( z& y9 \( l: f
  228. ;音乐数据块: B+ \) Z& w0 f7 X" ~
  229. 0 X4 c' ~: z) i
  230. .IF SOUND_BAR_SHOW_ENABLE
    ; n5 A7 o/ _! i# k
  231. ; i6 M% d3 G* A% I. Z1 N6 f* r6 M
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
      U% ]6 ~7 Z( M" t" I! E- z/ k
  233. .ORG $9000
    $ J: G& W) p" w1 J) P" R
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    # L! y5 N4 t5 c
  235. : H3 h3 z% I3 w' X" y: T5 P
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    # M" o% |' g' p0 r9 a, l
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    # m; ~" |( q% v( j
  238. , [; {( I9 g$ c9 {) s3 z, B
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK4 A; i$ J7 l; j
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"3 U2 }4 H2 F. ]1 d4 C) k8 F

  241. + ^5 D7 z3 o4 H6 f
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    " Z2 C- |3 b7 v7 f, ?. }1 v
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    $ A9 ^% m2 j0 j. T

  244. 6 r" ?9 H0 Z# A3 |! X# X0 h, z
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK# f  N. s9 W  G" }1 W& ~* `
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank". R; K( z+ _4 p2 \7 \

  247. ) y8 }' e. i! l
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    9 r* R6 v( Q; e# W
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    * G* r  ~2 Q  w+ Z% |
  250. ' C  a6 ~9 m0 [7 O
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK% Q2 a0 Z& N# E
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"7 r4 @! p3 E, D! F* O8 v" V% @
  253. ' `5 V) z) Y5 v) R; u5 F7 q
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK4 }! I0 I" l2 M7 W
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"3 W, ?- ]! ]5 H1 t" K. `
  256. 4 ]4 {; E. W, E7 _$ k1 l
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK3 y5 o5 Z9 g( c8 ^' T8 C+ X3 F
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"' R8 R1 R. M9 B+ S

  259. ) `, J* r- B: x
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    & W2 k+ y* d) l* v4 d
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ! C! ~0 H2 F! C" K: h
  262. * z, l( f& l1 W: O/ e9 g7 o
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    + M: ]3 K+ t  D) K- Q1 ?4 R" V6 r0 c
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank". p" \) P# n1 W( [

  265. 0 s; S& L1 p7 h! M
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK9 a0 Q- i" l, L8 i8 I1 F1 a
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"5 {0 C5 k; l+ v6 F) t. o1 H
  268. : c8 j& c# u# w8 I5 O( M* g
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK9 C- _: B0 J% L& u1 \
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    9 i0 d1 c7 z6 l9 k% ]% q

  271. 4 ?, V7 e& Q( h8 W
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK7 J  R) L7 I2 _0 G$ @% a
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"  x/ e. R3 J  F. f8 @( \7 b5 V
  274. 5 M4 e% M: X, A8 L/ d
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    4 J# V8 \/ P! [  a4 \( E
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"1 ^3 z+ g+ g! v. S( q2 I% w

  277. ! k$ S  M  Q7 Y/ k  g, n
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK- f: [7 \, `7 n! \# s/ j+ w3 C/ g! _
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"+ X$ L% `% N* c: b" ^, y

  280. 6 S% V; a# |1 @
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    9 O: |( s' H! Y4 p
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank") _% @3 y, D6 g& Y3 C6 b" [" l
  283. . p9 j- S) _& u* n+ k/ B
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK! W+ T- O5 a/ d$ e+ @- ?) o
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    3 X) y/ ], Q, [' E% Q, ?
  286. ) N% L- H# ?8 s7 P; }& B5 C4 i7 \
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK5 Z7 R/ F- R( B& |( O+ u: t- X
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    & b3 X- N: r/ h+ V$ ?+ z* h) [
  289. ' ?, d0 w! q% o( r
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK4 y$ e* p" z, t9 c# N0 n
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    7 D1 u8 G2 \2 B1 p% _
  292. ' ~& i& O' W6 k( F) W
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK( y& N; Y0 Q+ L$ j$ R
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    + Z: A+ A& M+ k4 c8 L9 G" I
  295. & g: t( `# A2 l, V* {
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    2 n7 o+ o! H7 b4 Z4 i  l7 ]0 N: T
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    * u$ p! Q; U0 P1 i& q

  298. ( m  ^+ [" G5 P. a' w" x
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK: }# |8 B" Y- ~
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"* B$ h  w/ J6 d# n1 Q% `

  301. 3 A; F& P6 m( p, b! o
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    ( r2 g: H9 \9 ~8 U' `8 @6 v
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    7 D$ W# u% p- Q* b1 n( z6 T' `
  304. - Y% j8 D! [8 o4 t
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK: G/ _* A; ^1 s# c3 G5 d* J0 A
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"9 R' |/ H  m& y- t

  307. + w/ o  |* F; x" L' l
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK. t) u$ v" z4 O- ^
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"$ [7 _, G, W; o' a. Y
  310. 1 m2 ]: U1 R# e7 E; v: e, E4 p
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK9 X" Y/ m1 `' W# d/ ~2 n( T
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"* t2 j# S2 E3 K

  313. & Y) S+ J3 r4 ]( \( p# x
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    - h, K$ J8 N3 h: R! v1 s
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"5 e. w0 e7 x8 `8 u/ M+ t

  316. - b* N1 `, R" G; [3 x4 B) D
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ( q, F4 G7 Q4 ]2 K: k
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"6 ^, e: ]; d0 {6 G

  319. 9 ]( D4 Z% d  g: u" x1 d
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ' I6 ?1 r; o8 n1 O% v, M
  321. .ORG $D400) L5 {8 d! L' B5 ]/ f6 ~1 i& i! Z
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank", L7 \0 z! W- J

  323. % B/ S: u' ]8 [0 M: G% w
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    0 H. X- Y) s, w0 V0 t/ Q- }
  325. .ORG $D800
    : c" `& l* u! R3 ^0 o; N
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    7 W4 @3 w  E. ?0 t$ n# E9 m# T/ `
  327. % ^- @' l3 h0 I  ^

  328. ' H& \* E- b6 s% x, W  }$ x
  329. .ELSE/ V' s  C& \' G8 H
  330. 1 \$ m4 {1 k4 e! G# j/ O1 d
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK7 H( N8 W. T  S4 y) w
  332. .ORG $90000 s' n: }. G1 g( H/ e' D0 K9 z5 X
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"% O3 p1 l6 h# j1 [/ X
  334. % i' j7 b! M5 {6 V: o+ y- A
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ( e8 K+ K. M- \- V  T6 u* `  v
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    8 Z, ^; b( P9 j3 j; k- U, d# I

  337. 2 D7 x8 a4 a6 H- h0 y& a; t
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK6 ~# }  ^' V# j, B) f
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    6 i  u! }0 o" C, B5 q

  340.   M6 |) n% x  s
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    * V+ p" m: {$ N) R2 l: O
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    & e+ g; d) I0 L
  343. 4 ]- Z% q; [) b0 |& z
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK1 G9 _6 }: f* V, O0 n7 f
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"3 T; z. ]7 p3 }

  346. * ]% R  K1 ~& S% S& i3 M
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK7 A% t. X0 u/ b& X# [. {1 `( h
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    & _6 O) m9 ^5 J, R$ P  H4 J

  349. 7 w0 K: ~' l6 e$ s, D
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK" ~" V5 u' E- k) O. L  T
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"" f$ D! d& {3 S5 ]9 b3 d7 c5 C
  352. 9 E7 @: W8 F  |# s4 m- b
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    1 h% K# z6 n  l0 \0 r
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"0 y* ^: `- n. s
  355. ( H( z9 ^9 ~* G2 \6 J, ^
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    7 ?- i9 C" b& q& s& [0 f9 ^3 g
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"( ~6 {5 O; v* z% B. D
  358. $ \4 i, L! l6 z+ @
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK% `" E* j) {+ A- f! T0 q0 U7 k0 M
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ! {) ]; f8 _$ x7 Y6 k4 P3 v
  361. 3 V3 ?+ `7 P7 m
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK2 \% o0 Q' q! D: o! z! V* A. v
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    * A! ^9 q# z- \( M  A' G
  364. 4 |# L* e- Q/ S8 e9 k! D. C+ ]/ b
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    1 z5 Z& x/ }/ H( D! X. p) J
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    9 c9 L  @/ M9 ~) ]

  367. ) u1 o4 q: F6 O9 l& l
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK$ z( g- Q1 c- j% ], a/ D
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"* l, K) I3 y# \  b
  370. % g, b" T# `( p' \
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK- F3 \! Q5 |- O3 j
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"- I( Z, s4 r& m5 ]6 Z, F

  373. & g1 n  L/ q/ }3 {, p
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK0 W6 f' A+ q  \# D- r
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    4 n6 E' Q! w8 h; @" P

  376. ( `4 g- P5 e) T! r; r# j) R
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK. }% S- w7 ~9 c- Y0 y8 ?7 |9 S
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    1 P* H8 G  v  u$ p
  379. ! g! g  y  n2 D1 ^
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK% e9 }' \$ S8 m
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    / I9 M# {. p" [( h  _: Z6 o

  382. 4 r% g$ V3 a: G6 a
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK2 q6 L* O6 v+ \
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"0 {/ b4 |8 E$ Q" ?' s
  385. ; k. u9 X: H- E% F& m2 e$ C& @
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK# _0 h2 m6 k7 ?. ]
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    - T! a/ M" j* U6 R" [) |

  388. 4 _1 ?7 i0 u0 w, F% M  Z5 B
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    2 N' G& s& r6 ]$ t' E$ f
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"6 `6 c1 V/ V/ h% E! W; d/ _2 e2 S
  391. ; a. j7 ~7 {& ^  H* f$ U
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    ! ~; c1 k7 c/ P; X* o9 i" D0 s5 y
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"  K. T& t1 l1 @, R
  394. 8 S& j! c4 H' e
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    0 E" w3 {8 _6 F7 j
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank": [( d0 D5 P/ ]& Y0 I

  397. ! b/ M( z2 f6 H( H+ ~7 a
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    9 Q3 ]% J9 }6 R7 T) B1 z$ c
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    7 N4 f7 a1 g3 s$ l' H

  400. : M$ L- L" q* A2 l2 j
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK& X  J* m; ^' G2 [# V. W8 t
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    2 g& \; X; O$ p
  403. - B0 w" S- \# q* m* z/ w
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    ! ~4 `2 S! ^9 W$ Y% ]% d! T1 I
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"8 x0 Q! `! Y9 {6 E

  406. : H; z6 ~2 O# S3 S$ i
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    ' o$ n$ d( ~$ _9 e& R: j: _& b/ U/ G0 O
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank", r/ A8 |% h; ?0 s7 _6 |7 P

  409. / z/ x3 w; G6 @/ l5 s
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    - W  c( M8 W% k& n
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank". w# c" h" K7 u( j5 y# Z$ g
  412. 9 W7 o3 Y9 Q3 h* ^* g4 j$ P  W
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    * V) v! K+ z3 K# E8 s
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"2 S5 J' R# ?! |8 w+ H5 m

  415. ! g8 r1 e  m, ^
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    + {( }8 d9 f: a3 r. [
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"1 h9 n/ W2 U" F2 \& Z. N

  418. 0 e/ T" e% @; }- u/ Z
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK; ^. j3 z. ~/ v2 E7 H
  420. .ORG $D400/ Z% R9 K/ x# y- E. G2 U
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"* t# n( Y8 i/ V

  422. ( t8 b) C9 ]6 c6 B! [
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK' ]' Q) c. W; Q" D% w) \0 j, J# _
  424. .ORG $D800; A0 o% [/ U* c1 L
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"3 o' C* I+ Y7 R2 P) B5 `  _# y

  426. 6 S" X7 H& g+ G$ S$ ]5 ~) b- P
  427. .ENDIF- g+ t# Y. I' @2 b0 S& V" @
  428. 6 r, [- {1 w6 {3 ~; {
  429. ;CHR图形数据
    * x, }& K+ z2 a& v, C
  430. ;======================================================================
    # E7 ^) D2 S' r: U
  431. .BANK CHR_DATA_BANK
    / o0 n! v4 B. L: G  I
  432. .INCBIN "chr_bank/chr_data.chr"2 I+ I& t* f' \+ Q) c

  433. 1 Z. {( J$ Y$ C8 [
  434. ;======================================================================  {6 X7 f/ ]; S5 B2 \. D
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    5 }3 Z$ r( l& p0 _5 ]
  436. .ORG PROGRAM_ADDR
    1 Z0 d* Z9 B' q
  437. 3 G6 m8 [- }) r1 Q
  438. ;==================================================
    - g/ U) H5 ?5 ^2 @8 D, s
  439. NmiProcess
    / I( k7 |& Q- k; t; F
  440. " M! C0 R; c# n& Y+ q
  441. ;关闭屏幕控制' a  q& a/ |, X+ ^% W6 |+ u% O/ X
  442. LDA #$00
    6 j4 y) Y; ~9 F
  443. STA PPU_CTRL
      ^# X! \7 R! l% w" V) h8 R/ b
  444. # c6 R! r# a( D, [0 C& ?
  445. ;没播放音乐就不需要触发IRQ
    6 N- s: k: H5 a3 W: o
  446. LDA <Music_Stop_State; N* K- d7 D: L: \8 Q, }1 m  [
  447. BNE NmiNormal
    7 B: K6 H  H1 `4 E
  448. * J( F, B$ M  k
  449. ;重置IRQ索引
    2 n1 I3 e0 w, {+ B) Y, U
  450. LDA #$00
    , H) R( c& k5 Z& ~( E
  451. STA <IRQ_Process_Index
    : x) C' |+ N  j5 J1 W$ [, T
  452. & N- T/ j, v$ f# Y% c
  453. ;时间秒数为空则跳过
    - ^; W  k( p$ ^) w; Z" r8 C
  454. LDA <Time_H, B4 i2 k$ m& R5 Y/ Q5 D
  455. ORA <Time_M
    , w3 a. ^# {$ r* _; u5 ?; u
  456. ORA <Time_S7 G+ d+ a; V9 N+ o- j5 a
  457. BEQ EnableFirstIrq
    6 L! ]$ d; `& t; T- w4 t

  458. ! ~6 x$ e) g& e' N  G# C
  459. INC <Scroll_H
    / n1 y1 z- _/ {. M% \

  460. - b$ d( i, h5 H3 I0 [
  461. EnableFirstIrq
    & E  p; q; y; W% u& W1 T
  462. ;80条扫描线后触发IRQ
    5 N6 }. _3 |1 t$ f# \
  463. LDA #IRQ_SCANLINE
    3 ]) b1 R# W6 Y1 c# A) O% O9 F4 z
  464. STA MMC3_IRQ_LATCH9 s8 X3 _+ y# c$ o+ z: @
  465. STA MMC3_IRQ_RELOAD  G( P# ?# e- K5 n
  466. STA MMC3_IRQ_ENABLE
    9 A2 X% b. X* \9 Q# o
  467. CLI( w4 E0 G7 H+ s$ R7 Y* l7 o
  468. % ^, c8 s, X- \  E* m$ q$ c& M
  469. NmiNormal# m1 B4 O" q; P$ o7 ?' k' k
  470. ( a4 v& u- e/ S
  471. ;处理PPU图像
    8 f$ q! k) Z( Z% Y% u( e) T
  472. JSR PPU_Proc
    ! X. W+ s8 P! w3 D9 Y0 W& R$ I$ D: \

  473. 8 g2 n$ L& l, v2 J4 _  S
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    - t! j8 O2 Y8 R1 A9 i& J' c. ~/ u3 X# X
  475. LDA PPU_STATUS. A! N$ c# y/ C" A$ F
  476. ;LDA #$009 V0 ^3 v. ^/ n9 R6 x) B. d
  477. ;STA PPU_OAM_ADDR2 _2 T( y" T- c( A7 A$ }0 x, t
  478. LDA #OAM_TEMP_ADDR / $0100$ M$ r8 y  d: J
  479. STA OAM_DMA
    8 B" }5 T9 z: Z7 q4 h

  480. & I. K9 ^3 w; ?
  481. ;启用NMI中断
    . {( \. |7 Z% [' k5 F' I
  482. LDA Screen_Ctrl1 e9 r6 y% m: E6 M4 V# q: B. }
  483. STA PPU_CTRL# T% u: _% N- `" ]8 K* w  ^, S0 o

  484. % R' G( g1 S, {; |
  485. LDA <Text_Disable_Flag: l  r) B2 N+ x/ F3 Q6 z
  486. AND #TEXT_DISABLE_RAM' v2 h" A6 M, ]0 _# F: ~
  487. BNE Nmi_Sound_Play/ u$ \. T  @0 m, Y6 N% `% Q
  488. # q) G. m: q8 {, c4 h: r
  489. ;处理手柄输入
    , U; W) w8 ]4 e% b. V
  490. JSR Key_Proc
    " J- |0 M7 ]0 F# t
  491. $ e$ I3 J/ |. A
  492. ;切换音乐(手柄触发)* N3 J* \9 @1 g8 \8 y
  493. LDA <Time_Wait_Cnt3 r# B; K% n, D" p
  494. BNE Nmi_Cursor_Arrow& j3 S5 T4 `$ O+ @& L+ C$ r
  495. JSR Change_Select_Item
    4 r( i/ W! L+ M) f# I

  496. ) p$ t* C- G: k6 t/ X* o
  497. Nmi_Cursor_Arrow
    2 v9 w# I' H% o( ?. Y

  498. ' @) C  L; q! g+ E9 R6 y& ^3 O
  499. ;处理光标箭头
    2 {$ c' U( D5 A6 {. q1 E1 y% k, i
  500. JSR Show_Arrow$ D# B( K' Q" i9 R5 `0 d! G
  501. 6 w3 ?9 j, ^. f5 C
  502. ;更新调色板& b6 C. o6 C# B6 O
  503. JSR Update_Palette_Data
      f, A! K8 w/ w! i6 x" S2 B

  504. : ^) U3 P& a% P$ f/ X$ U; O, W
  505. ;显示时间(缓冲)
    . z$ E. F. @. o
  506. JSR Time_Show2 O; I6 U+ C. I. W. ~3 z2 U* m

  507. . q7 `2 A' q, w- [- W# L" y' v
  508. ;音乐显示(缓冲)
      s- h6 Q9 C; j: t4 _+ `; Z
  509. .IF SOUND_BAR_SHOW_ENABLE
    4 P* F. g7 p; d/ {4 K. T8 T0 _
  510. JSR Music_Vision; c4 a% r  O6 G+ n& H4 z
  511. .ENDIF7 ]& G, @# C4 R
  512. 0 _# G- H# |3 L3 l+ _, Q) [
  513. Nmi_Sound_Play: R- p7 P/ [1 e6 r2 k
  514. ;播放声音$ h: ^' t" \4 f7 Z: L: E3 L4 `/ R
  515. LDA <Music_Stop_State2 P( }/ a9 Y0 X. W1 C  u! |
  516. BNE Nmi_Time_Wait_Set+ @& n4 ^1 m+ X" K; y
  517. JSR Sound_Play_Proc
    5 r0 K, P0 ]/ {4 \' u
  518. / T/ s9 S4 T- O
  519. ;播放计时. T5 A: k9 K* e" W& s( m' a
  520. JSR Time_Count) R0 e: Y2 D1 k( e% N: R: R1 @

  521. 6 d# k5 u( B3 S: [2 s" D
  522. Nmi_Time_Wait_Set. V5 A3 B2 ]5 S8 }* k  {
  523. LDA <Time_Wait_Cnt5 g% E+ n% U* I+ ^+ A8 Z# p
  524. BEQ NmiNormalProcessEnd
      g' h" p! q4 [" p$ j
  525. DEC <Time_Wait_Cnt! v1 e$ G( n& [% p5 K
  526. NmiNormalProcessEnd" b7 u/ L1 ^9 s4 t& Y

  527. & g8 ]6 ~) ?, x% T$ h) \5 I: H
  528. INC <Nmi_Time_Count7 K, G0 }% L" k4 }

  529. - p& U- Z" O+ c7 x! E& q) T! A
  530. RTS
    0 n+ q3 G! I! r. f8 i9 j2 v

  531. " \% t, Y- }& W7 \
  532. ;==================================================; |$ s! m' t6 J2 [) ?/ r$ I7 n" G
  533. Init_MMC3& |, w* \' `7 w3 Y6 K0 f# n' d. Q4 M
  534. ;==============================8 }  j* x( ?' z' N
  535. ;禁用IRQ4 i4 c% R2 t* Z& z( S* `2 _
  536. STA MMC3_IRQ_DISABLE
    # I6 y- A. R4 J3 q6 ^" x
  537. ) @& {' O2 W; J$ S* `  b5 ], |3 [
  538. ;水平镜像- f) T, f; k! [* U0 S% A
  539. LDA #$01
    + ]0 n6 M, U. \
  540. STA MMC3_MIRRORING
    * z  C2 D; x( O: X4 I
  541. 2 k( i+ h7 B0 _* F1 K+ ~* @
  542. ;初始化图形bank
    5 @" F4 L' h4 u4 m, @& u
  543. JSR Init_MMC3_Chr_Bank
    * C# z6 t  G- B% M* X
  544. 1 Z4 O4 F3 T# ]& n. j8 t7 N
  545. RTS7 o. q! {' J8 g, K, s9 t
  546. ;==================================================; G" V# A6 _3 A) T
  547. ProgramBegin;主程序
    ' a# V8 h2 x! B5 Y1 v5 i
  548. LDA #$001 ~7 T& r: c% B/ z5 q
  549. STA PPU_CTRL( p7 I' D# v3 A' m  a  p, R! R+ W
  550. LDA #$00
    + K6 J2 u$ q* C* C7 ?
  551. STA PPU_STATUS4 p# f3 ]' H! R% M
  552. STA PPU_MASK2 u, F, W" O8 v, S9 U
  553. STA JOY2_FRAME# {( C3 Q/ X* {  P4 [

  554.   R5 z; r0 g' W5 n1 I6 u" v: H
  555. STA PPU_SCROLL
    & j/ }! j* _8 J+ E
  556. STA PPU_SCROLL
    0 E' e5 G. B, l2 g) R% j
  557. $ s. ~6 R( ~- v8 V# l  S' S
  558. ;==================================================2 }  z& Z! l% X# n( E7 k# G
  559. LDX #$FF
    8 ?! f! {, ]. A0 ?
  560. TXS# v1 r# H! ], R# K8 v5 d
  561. % A3 h: e0 V: g! P; `5 ]* o6 C
  562. JSR Init_MMC39 }0 x' L) U3 ]7 O

  563. ( t" C+ ^! v5 ]8 T& g% ~  J7 M
  564. LDX #$02
    - B& ?+ Z0 ?- r' f* x0 I
  565. Check1
    ( {! x7 C% F+ S9 F& y
  566. BIT PPU_STATUS
    ( z" |/ M1 J; J! ^& Q0 `& h; {
  567. BPL Check1
    ) p/ M' [, C& Z/ Y, j
  568. Check2
    * I& V" ~5 l, O, j" b) @
  569. BIT PPU_STATUS
    2 B* u/ L- f6 F6 _
  570. BMI Check2
    ! I$ v! r/ v3 N* u( K' s
  571. - c. A9 S; D) n8 I6 Q6 X" S, w
  572. LDA #$0F' g  f0 C' t% n
  573. STA APU_STATUS
    ! J9 b! H! G* p+ d
  574. LDA #$C02 O- b% n- f& ~; ]
  575. STA JOY2_FRAME& l' e8 c9 ?1 u+ s7 a; E
  576. . l* ?3 P: Q1 Q# a- A1 f" g) l: \
  577. LDA PPU_STATUS
    2 F1 x" H" Q" T, r. D
  578. LDA #$104 Z" Y3 K! y# I
  579. TAX
    0 v, ~* N/ u. e5 `/ [/ r
  580. Check33 z/ D$ H" ?, J0 ]' s8 C% D7 f2 A( A1 S
  581. STA PPU_ADDRESS2 r) s3 H, w/ Y. U5 J
  582. STA PPU_ADDRESS1 `2 l, V5 I5 O9 ?( h; U) x
  583. EOR #$005 l2 N8 S' o+ c. X5 K! y  e9 z( R
  584. DEX
      B  i( @& l3 m6 ?2 T/ C
  585. BNE Check3
    / \( K& Y4 }# F* ?/ q1 d4 D% N, E6 _
  586. ;==============================8 i8 O/ c% y6 ?$ M9 w
  587. ;调色板清空( \0 f! g! [0 g
  588. LDA PPU_STATUS
    9 m* Q" W% e) z! J2 l& T
  589. LDA #$3F; R1 m& h4 _% b
  590. STA PPU_ADDRESS  X+ @8 k2 s& R* {) e/ T3 s1 L
  591. LDA #$003 c# R$ ]0 o6 i. O
  592. STA PPU_ADDRESS3 G' b- ]+ Q0 ]
  593. LDA #$0F' O8 b& o/ b* Q
  594. Palette_Clear
    1 V5 q1 s& R( M2 g$ _: ?( p
  595. STA PPU_DATA: m5 G6 c) j. M1 O/ x
  596. INX' P- K4 J* b( C- ?$ T* }* h
  597. CPX #$20" }5 B, I* {& a% a4 `
  598. BCC Palette_Clear0 F' `6 i% k+ X+ o8 s
  599. LDA #$00; H1 S' r) n, g4 t( l1 |2 p
  600. STA APU_STATUS
    ( _5 h4 w. g! V6 A6 J1 G4 u+ P

  601. - V' ~8 C1 `' P+ y) L
  602. ;==============================
    ; p: o  I- w# y: s  h' u8 @
  603. ;RAM初始化3 j% D0 W; D7 A- F6 }6 A+ h: q- V
  604. RAM_Clear_All0 S' P( h0 d* W/ k4 |3 ^, [
  605. LDY #$001 \& U# [9 P/ M# t5 L* p" B( w
  606. LDX #$08% w: I3 i; d. K9 j/ o- P
  607. LDA #$00
    . X9 r& r2 F9 O7 i
  608. STA <$00
    0 ?* c* E+ G' F! Z: E$ o2 s" d
  609. STA <$01+ _. S" {4 W* [5 v% R) g! [# w& B
  610. RAM_Clear_All_Start
    " l" g) e' ~2 q, P0 S, A0 v9 F
  611. STA [$00],Y; B4 t% y# ^. S' X& |( Z. m
  612. INY
    # a. E2 i: n- X; t' K
  613. BNE RAM_Clear_All_Start3 x! x! ^6 l% b8 }' u) C
  614. INC <$01
    5 L& W+ u0 f" n, s8 a1 p
  615. DEX2 \! ^, m- o  N8 }1 s
  616. BNE RAM_Clear_All_Start: G9 i# c3 f. w) m; I
  617. : a4 F8 b3 m" c) r1 d/ t
  618. JSR VramClear
    7 F& K5 n6 q1 f) |
  619. JSR VramInit
    " @& M; I& G9 s* s
  620. JSR OAM_Ram_Init0 V! V9 r; l/ |# z% n8 ^2 ]
  621. JSR Init_Palette_Addr3 Q) U* Z7 d% t( d

  622. 5 w' Q( n6 c9 U: J" i# l* h8 j
  623. LDA #$FF+ |. n2 x) w' u5 Q+ |" I3 w
  624. STA Use_Ram_End. N) \8 ^, X. G6 W: k; \
  625. ;==============================; h9 t& ~, r$ B4 w. X. c1 Q
  626. ;初始化背景调色板% Q8 @: s" @' V
  627. JSR Set_Palette_Color
    2 x4 U; J6 S5 O0 ~2 ?1 p. k
  628. JSR Set_NameTable_Attributes1 H9 }- v. J3 {3 D% d
  629. : v4 G; C* m: x1 l
  630. LDA #$00
    1 z, O; L( W4 O0 S# d3 N, T1 a
  631. STA PPU_OAM_ADDR1 @" g& z' E( `- M  V
  632. LDA #OAM_TEMP_ADDR / $0100% ]. `; k. @. S2 B3 W- p7 L; X, H  z
  633. STA OAM_DMA
    # Z0 X/ G2 b3 q, ]
  634. ) c! @& T1 r6 }' q+ q* C" }
  635. JSR Sound_Reset_Proc9 x# j$ O+ j- {( ?6 Z( ?" m
  636. JSR Set_Sound_Total
    ) T, b! h% Z, C" S+ {  |4 @$ r  t" }

  637. # t' I! J9 G9 ~/ E5 |
  638. Init_Start_Music: h, w. t; u& q/ `; ]% {9 A- @
  639. LDX #$00
    & R- c7 i0 e5 \+ B1 K9 O. e' x
  640. Init_Start_Music_Write
    7 q3 \6 S6 g5 b3 h5 `/ t. C
  641. LDA Sound_Start_Port,X( c+ g  a  {7 T" ^1 P: s& V, S% i0 l
  642. STA <Music_Cur,X8 \9 l7 r' r* I) o
  643. INX3 o. D, f1 [4 ?& ?) G' X4 T
  644. CPX #ITEM_MAX_SIZE, O% f4 h, d+ {  E" m6 e! ?* [
  645. BCC Init_Start_Music_Write4 O2 a% E5 A. v* S) k

  646. ( g0 Y$ y* [) _8 ^
  647. JSR Show_Music_Text
    7 v) N" ]$ D8 t0 ~9 q
  648. ( Q2 P. t# F( m0 Q$ f1 v
  649. .IF SOUND_BAR_SHOW_ENABLE: y; K+ d) e  ~1 k! q2 |7 Y& ~
  650. JSR Sound_Bar_Text_Set& ]! `' j4 }" s
  651. .ENDIF$ h+ N: A3 M+ m/ f

  652. " O1 g  Z) x: z
  653. .IF Track_Name_Pos% A' O9 q1 r$ x
  654. JSR Show_Track_Info
    8 o# h1 i; p( R
  655. .ENDIF
    + o9 `1 U2 M+ E6 \  |

  656. & L' Z& R1 H+ M* z
  657. JSR PPU_Proc
    ) [2 ]2 u% ^, M: [* C6 `
  658. ' o' o8 ?' A$ `& x, u$ l
  659. ;==================================================
    * [+ E  ]. x% L2 I' F. m; u
  660. ;音乐bank初始化
    # w. [( c$ T, g/ L6 ]2 G  x' u7 H
  661. JSR Init_Sound_Bank% H% _7 U; y" R/ y3 |8 s

  662. - s2 B- m, d0 w2 P1 }
  663. JSR Music_Show
    % t( a1 x" ]" a3 y7 w  u& s
  664. JSR Time_Show
    1 W9 v/ W' {" F6 o/ R' \
  665. JSR Music_State_Show$ q2 @* f6 Z3 j: k9 A* x$ f0 X
  666. JSR Time_Delay' ]! [3 I6 F4 J8 C' x8 L

  667. 5 @8 O! T! ]7 P6 j
  668. LDA #$01
    5 z4 p4 q, Q( b- b/ T
  669. STA <Music_Stop_State- o. c6 D" u. B# E
  670. 8 ?, |, M  l1 ^9 I& x& `/ Z
  671. LDA #$888 g' f! {1 z3 A7 ]4 ]
  672. STA Screen_Ctrl9 I+ O: r' F3 H6 a1 O6 u% B1 C, _
  673. STA PPU_CTRL
      {. i9 ~5 s1 x1 e- H1 f4 J- ~, O

  674. - x- V+ O% s" G+ U& c; Q
  675. JSR Show_Page_Text
    . R: o6 m) j3 i" l( U& h$ I

  676. 5 g. z+ Y2 E2 U
  677. LDA #$10/ }. C" [! l+ ?# h" m
  678. STA <Time_Wait_Cnt
    ! t) s7 N; Y7 K' A( ?0 @& x- g

  679. " I6 Z5 D4 X- _! h, L& @
  680. Wait_Time_Over( |, g) S' I( C  T
  681. LDA <Time_Wait_Cnt. \/ R" a5 {4 l6 r7 s' o% M
  682. BNE Wait_Time_Over
    4 d1 e3 k  z3 ?6 u: N
  683. 5 H( X& D3 x8 r+ f& @) {7 N0 W* o; G9 c
  684. JSR Show_Arrow
    6 z; D; K$ r: @9 x- p; x- r! r  [. O+ B
  685. LDA #OAM_TEMP_ADDR / $0100
    % V3 l) U# P% N7 e0 s- q2 {
  686. STA OAM_DMA/ |/ T' }! Z% ^5 y3 E
  687. ) F+ o% k) N% W$ x. s& Y
  688. LDA #$1E
    1 T: R- O5 b4 X7 B+ r# R# [
  689. STA Screen_State% {3 [$ ~8 e/ |, M# l, v2 S" I

  690. 7 L: j' |' N+ q0 }9 c
  691. LDX <Music_Item_Cur/ Z& O! L4 O" C% E
  692. LDA <Music_Cur,X( M; m* A- d1 t  X
  693. JSR Sound_Init_Proc
    & l6 k; f" Z% o

  694. & _& S3 u; `# ?! B5 N8 p
  695. CLI& a# \5 j+ i4 C! n7 m8 T3 Z$ [
  696. JMP MainLoop
    - V1 m( d7 N$ r. O; l9 j* Q6 A: X8 v

  697. " u6 g, m! u0 L# L
  698. ;==============================! o! L, A8 R: w0 z
  699. Time_Delay;延时等待4 }) b1 F* ]3 E4 M! s
  700. LDA PPU_STATUS5 i) l- R; A; e) y3 `9 y3 a
  701. BPL Time_Delay( _/ ]* b& O: L- I7 }* y  w/ `
  702. RTS
    % K, C$ ]: }7 G1 w  @7 j9 Y
  703. ) G- X7 p9 J% U( |+ R- S! s
  704. ;==============================
    4 {+ o6 \+ D4 p" K; {: W5 {
  705. OAM_Ram_Init;初始化精灵内存
    # a- V! g, ?6 D3 x) J, _& _  {8 M. ?1 H/ {
  706. LDX #$00
    * C* _( y( n* N1 E7 Y% c
  707. OAM_Ram_Init_Write  M* K' F; g0 t: X0 P% G
  708. LDA #$F8; G2 k" |8 @' |9 w: N8 z* I9 t; @
  709. STA OAM_TEMP_ADDR,X1 l: a8 U  y5 Y6 Y5 i0 b$ }) L
  710. INX9 J+ C- A  T4 U7 L
  711. LDA #$F8
    0 D. Z; h& j9 o6 Y+ m3 l
  712. STA OAM_TEMP_ADDR,X( a- |/ h) ]5 U; ^9 H
  713. INX
      y3 Z$ F, _( s' e1 H' {' h
  714. LDA #$00# p( l6 ]; c6 m
  715. STA OAM_TEMP_ADDR,X8 W5 ]. N, A" V& x3 n
  716. INX  a+ U5 \, [' {* C
  717. LDA #$F8
    ' S$ c  ^! y; [( C: U! r0 o( K
  718. STA OAM_TEMP_ADDR,X
    5 r! L" o: P" Q9 m
  719. INX
    ) p" ]% g; m  F0 @" N. ^: Q
  720. BNE OAM_Ram_Init_Write
    ' p* k9 [! L6 M3 \* t
  721. RTS, @- g* z' k( u

  722. 3 h7 v3 P0 E" n8 [8 X* i. d
  723. ;==============================# w5 ^8 n8 n1 @. I5 b9 c& u
  724. VramClear;初始化图形内存, m" I0 ^6 j& |, O
  725. LDA #$201 t: `! k- }, b% T7 K
  726. STA PPU_ADDRESS
    7 T0 Z. U, j+ D5 f* Q! o" g3 F# e
  727. LDA #$00
    ) |7 l1 n6 P, l1 a* O! L, s
  728. STA PPU_ADDRESS
    4 ^: R6 o8 w* z2 E) v. [
  729. LDA #$00
    4 b. _' f/ o5 n: {& q; v) ]
  730. LDY #$00
    8 ?0 @4 V0 _  x4 H+ w
  731. LDX #$105 s1 u4 j( P  ?" }: B* Y/ o  N9 j! A
  732. VramClearWrite
    # N! o( e5 d! ?$ r# p4 ^) _( N
  733. STA PPU_DATA
    / L, E. R1 z( a( K$ N0 y
  734. INY' d) i5 M2 q3 f5 N  [8 D' O
  735. BNE VramClearWrite
    + o& `# P3 G+ ?$ I/ p" q" B+ K
  736. DEX
    1 F5 \( h! `& {9 t  v% I
  737. BNE VramClearWrite" V5 V1 Z7 ^# S: t$ }
  738. RTS
    , b) l0 e$ R$ `1 |# s
  739. ; a3 |  j: t5 c4 c: i
  740. ;==================================================
    * b: c" Z1 Q( ]* m1 e
  741. ;设置MMC3图像bank& e2 w! B$ B( U2 c
  742. Init_MMC3_Chr_Bank+ `' W1 y( v. `+ y5 ^* X
  743. LDX #$058 e* H* e# g! d" Q/ t: C
  744. Init_MMC3_Chr_Bank_Write
    ; {6 }. Z- @+ j' t) d! J0 g
  745. STX MMC3_BANK_CTRL8 [9 S+ [* `) z! w
  746. LDA MMC3_Chr_Bank_Data,X/ j3 J" F  Q/ m5 R8 z" y! v, U
  747. STA MMC3_BANK_DATA
    + H8 _. M2 X& K# G# S
  748. DEX+ U* ?) O+ H. V  y$ w; M3 w
  749. BPL Init_MMC3_Chr_Bank_Write8 _$ }* A; n) s. |/ a
  750. RTS
    " A9 w8 Z% X4 Q( v: V) ]: g
  751. ;--------------------------------------------------
    6 Q, m+ M! x3 h6 C! l! y( b
  752. MMC3_Chr_Bank_Data; ]9 q0 S: C2 }) \; B
  753. .DB $00,$02,$04,$05,$06,$07
    + T$ I! s0 P" M% l/ l! J9 a
  754. & }3 x# k1 ~6 M  S$ M! G! G
  755. ;==============================
    5 y2 g" ]4 C7 _% h% q6 P6 T; V
  756. VramInit;初始化图形内存  {7 x6 G% Q0 ?! I, A
  757. .IF CHR_RAM_ENABLE2 r6 `6 r: F4 @3 k" P: v- v
  758. LDA #CHR_DATA_BANK
    ) }9 z; J1 A9 x6 t
  759. JSR Switch_Bank_A000
    $ I& u$ A8 h2 n- Q) C
  760. LDA #LOW(CHR_DATA_ADDR)6 M* j# Z5 s9 J
  761. STA <Data_L! e5 q% r" B  A' f/ f: ?+ J
  762. LDA #HIGH(CHR_DATA_ADDR)" U& N, E) G( \; f
  763. STA <Data_H
    $ o6 R& j3 [* |6 `8 {. n4 `; i% e3 ]
  764. LDY #$00
    & _2 M0 j' c9 M$ O
  765. LDX #$20
    8 h! ^5 ]- i9 k+ I+ c) ^9 z
  766. LDA #$00
    4 Q6 s- C" [; C& W, H. W& a
  767. STA PPU_ADDRESS
    & A# F# Z+ G2 M5 P
  768. STA PPU_ADDRESS
    3 D/ \: K. ]; E  N( E( T& c% F
  769. VramInitWrite1 O0 U# M8 ^; \' }; e1 w
  770. LDA [Data_L],Y+ l1 Q$ B$ }& D1 p1 s
  771. STA PPU_DATA) m7 K! t+ p+ U9 \; K
  772. INY
    & H% f; d, P" r( |6 s1 u( r
  773. BNE VramInitWrite+ a/ X3 ~! V1 q( H$ x& t
  774. INC <Data_H
    " a* |1 \. ?/ _2 h
  775. DEX
    0 \9 V: D/ R$ C; f
  776. BNE VramInitWrite
    ; A) |9 R7 ~, Y/ b
  777. .ENDIF) E! r$ K2 s! b0 F! ~, E
  778. RTS, x2 z3 ^3 d7 n- K

  779. , Z% b& r" `+ y
  780. ;==============================: V: C/ \1 N/ {  N4 g% A7 }
  781. ;音乐切换; x8 f  L7 I( S7 W( j; N+ Y
  782. Music_Play_Change$ Q. j) C) b# b3 _* x% R! y
  783. LDA <Key_Once
    : o- S+ O8 [* I. X4 A
  784. AND #$FF$ b/ U* Y  U! I# c0 |
  785. BEQ Music_Play_Change_Check3 u4 {0 z! y& _+ z
  786.   ^% P7 E. }  t; p' S- E
  787. ;禁用音乐条刷新( I* }7 R/ U8 O) ~) F% k7 n% N% U
  788. LDA <Text_Disable_Flag
    8 e. Y: \- _" e" r* q$ F5 `$ k/ [
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    0 |0 D) I# h' g  @  \. J
  790. STA <Text_Disable_Flag
    . k8 P) s+ h# W4 b- S

  791. 6 W8 U7 x: J$ _" W6 v
  792. Music_Play_Change_Check
    2 j$ n3 ?$ _! [
  793. Music_arrow
    ( Q( @( @& ]  B( z
  794. LDA <Key_Once
    ; N7 j$ \4 G" Z4 K
  795. AND #$0F
    0 L9 G2 P# j  c5 y/ ^# S
  796. BEQ Music_Play_Change_End
    ) M  ]0 r# T, X5 E8 G
  797. JSR Music_Track_Change/ p  \9 [& o! q+ r! T/ V+ N6 `2 A
  798. JSR Sound_Reset_Proc) f+ M9 _# j3 M+ F! `0 M  R
  799. JSR Music_Show- u. [; r. K# l: G
  800. Music_Play_Change_End
    , l5 H- \) e, f+ l
  801. RTS
    2 S# Y4 ]9 p; c* ~. {8 D$ [

  802. " ^$ ]0 w  J8 Q# ?8 m* p$ P6 I+ i6 g
  803. ;==============================9 Y8 N+ q9 m$ Z
  804. ;音乐曲目切换
    3 n! j; p) O+ W6 V% o% L! P( w
  805. Music_Track_Change
    # A& X: f" u/ S- b
  806. LDX <Music_Item_Cur0 Q+ @- |" V/ f+ S) t( \; v: d. a
  807. LDA <Music_Cur,X
    ; N* t+ U" {! y1 C3 }, G
  808. STA <Music_Last" `5 e; A& x( U  V! t6 ]
  809. Music_Decrease
    9 ~0 t5 @& t% z/ J1 U
  810. LDA <Key_Once
    * J4 x# a5 _% T9 G+ E5 S, l
  811. AND #$425 ~4 ~! @' Q7 O- D# h  m! b; H; t
  812. BEQ Music_Increase: u8 B# i& x7 w( b+ p
  813. LDA <Music_Cur,X
    & N4 D  `# W2 y0 i
  814. BEQ Music_Increase
    8 |- w9 Y1 H+ q
  815. DEC <Music_Cur,X
    7 [# F" ~% n' Z5 ]5 R3 X
  816. Music_Increase, M* N/ K6 Q: I
  817. LDA <Key_Once- [; w) I' v( ?  l
  818. AND #$81
    9 M$ q8 i  a# H" t
  819. BEQ Music_Decrease_10
    & I  v5 x! {4 H2 y. e  j
  820. JSR Set_Sound_Total
    * G; Z  r- n6 D) z% [
  821. LDA <Music_Cur,X/ Y% W4 N" p" \
  822. CMP Music_Total
    % [$ J0 J- i4 w7 W# P: {0 i
  823. BCS * + 4
    & j1 L. M" w* Q- Z- x
  824. INC <Music_Cur,X$ ~" Y9 k" @, x
  825. Music_Decrease_10; [1 |4 m! \& l0 A( ]# J. c& l
  826. LDA <Key_Once3 l( w) N" e* b
  827. CMP #$04- @6 E) Q% m9 N9 Q
  828. BNE Music_Increase_10$ s- S# ?! d: {: y: |  I) t
  829. LDA <Music_Cur,X
      r9 r( Y1 z9 R8 t, }9 C0 C
  830. CMP #10
    & \; G9 P8 c6 c5 k
  831. BCC Music_Start_Song_Min6 ^" R( F0 W' J9 _
  832. LDA <Music_Cur,X9 U4 W( w) o7 X4 f' s
  833. SEC( H% K4 `$ z- l8 v* ^
  834. SBC #10
    1 C/ u2 m* K& q
  835. STA <Music_Cur,X9 P5 b7 X" i, f" J& m7 i6 ^0 j- L
  836. LDA #$005 U, }, N. _9 T; k: l# h! D* p
  837. BEQ Music_Increase_10
    + _  t- H/ ], d  W
  838. Music_Start_Song_Min
    ! {: X+ ?  \- R' v
  839. LDA #$00
    4 ~1 e# v8 ~/ _+ G4 x; C  Y
  840. STA <Music_Cur,X
    ' E! j1 h5 ~- D7 G2 J" L: b
  841. Music_Increase_104 s9 c' {7 v% h+ w- O
  842. LDA <Key_Once
    9 {( B8 b- N( E& U9 Q9 a
  843. CMP #$08
    5 I7 P+ a5 N4 E8 s# d7 e, I
  844. BNE Music_Track_Change_End# D7 x' U7 [" D5 Y: @3 B
  845. LDA <Music_Cur,X* d" u& W0 _+ }1 |
  846. CLC- ]* Q0 o/ h3 A5 h0 O4 @3 J
  847. ADC #10
    & s; w+ ~9 D( J4 _  Y
  848. CMP Music_Total
    - m: |! W( P$ y% U2 a
  849. BCS Music_Start_Song_Max: c% d- i- @+ K$ n% L
  850. STA <Music_Cur,X
    + H& U! L3 f. h0 j3 s; [
  851. LDA #00: T5 Q/ N  W* \0 s: u
  852. BEQ Music_Track_Change_End' O+ J9 K( _. T+ z& e- ^
  853. Music_Start_Song_Max
    . U7 ]* c' D% p& w, P2 {8 T  e, q9 |
  854. LDA Music_Total' P9 |! d* W5 n2 u+ f/ @* h
  855. STA <Music_Cur,X; t2 w5 F6 n/ Z: Q0 \
  856. Music_Track_Change_End6 H9 W! V. X: c# p
  857. RTS) x% ?9 q; ]/ U+ Y: M  b

  858. , K9 C4 C1 J# K' E0 W. s9 _' U
  859. ;==============================
    0 r( b  m& v% V0 Y
  860. ;按键处理
    8 o  r" }- n* ]! n. }2 e3 z: Q- ~
  861. Key_Proc& {7 r( g) H3 I% X. Q
  862. JSR Key_Scan" ]1 p' m; A" o" i
  863. LDA <Key_Keep7 v+ ?( Q7 k6 o! n: Z, E( ^2 P
  864. STA <Key_Temp
    : `3 \+ D+ g+ \( d3 D1 I
  865. JSR Key_Scan
    # e4 ]; b( Q  F8 Y
  866. LDA <Key_Keep. Y2 {5 ^0 @7 H. G$ w
  867. CMP <Key_Temp
    & U  a5 W/ J* x* q
  868. BEQ Key_Get_Once
    9 ]* t# v% g9 Z9 V; j8 t
  869. LDA <Key_Kemp1 u/ r) z$ Z. L3 H! _3 {: @) D
  870. STA <Key_Keep+ F  [' F' X- r0 A( ^; y6 c
  871. Key_Get_Once. K9 v+ l- m2 d, d. ^
  872. TAY
    , I6 m2 T8 ~0 V7 H
  873. EOR Key_Kemp
    " R5 x% Y) W. Q$ I) A! e
  874. AND <Key_Keep2 @6 t  u" H* D5 M6 l
  875. STA <Key_Once
    ) v' m7 N$ w5 b6 W6 Q  M
  876. STY <Key_Kemp
      ~) ?/ k$ G" V* n5 q* T
  877. RTS
    ) h! S% @, S7 @* z1 V
  878. ;------------------------------& ~! @; ^9 X8 i: X  f
  879. ;按键扫描( q( [8 f+ i  m! ~( b0 l0 q/ b
  880. Key_Scan& b: o, e1 j# t2 P2 s: S" e
  881. LDX #$01
    ) }; V# I- S- e7 _* B, z
  882. STX JOY1_FRAME2 \) E, T- _0 j( Z# r" K& X
  883. DEX
    0 P3 G" ^$ C* a2 H- W- Y  t2 a
  884. STX JOY1_FRAME
    4 h/ y1 b4 n, O7 K/ _6 w  l( K" O
  885. LDX #$085 x) C: c  y+ l" P$ \( P
  886. Key_Value. \  x! u2 ~# D* H
  887. LDA JOY1_FRAME- H: X; w+ a, \. R' J
  888. STA <Key_Getv* Z: P3 N9 @' G! e: V
  889. LSR A" @1 F' h! ?, T1 v
  890. ORA <Key_Getv( X5 j6 g/ U# ]
  891. LSR A- M3 T' p: C1 r/ Y, s
  892. ROL <Key_Keep& F5 H4 I  b1 B1 H5 c1 b, M
  893. DEX, L' w" [) x4 h) G( ~1 k/ A  \
  894. BNE Key_Value% E# Z/ w3 f' P$ I# N7 z, W4 H
  895. RTS
    - f6 u3 u- a& j/ u, c+ {

  896. 4 l1 K- l: ?1 t. j( Q+ U
  897. ;==============================
    # C, p6 D8 }6 l( K, o  a6 p: b
  898. .IF SOUND_BAR_SHOW_ENABLE
    9 N2 g/ O5 P3 u* m- ?' w, j- \
  899. ;音乐条显示
    " I2 k. ^# a  l; X3 g) g
  900. Music_Vision
    4 u, b/ X7 S" _
  901. LDA <Text_Disable_Flag
    5 Y4 h' c9 r8 ~. s
  902. AND #TEXT_DISABLE_ITEM! Z! d8 y! W  z  H: ^- w' B4 t7 R
  903. BNE Music_Vision_End
    8 O. f  `( t" G: ~2 w- ?! S
  904. AND #TEXT_DISABLE_BAR# W0 c6 {2 u5 E9 N+ x  C
  905. BNE Music_Vision_Set/ j- y# n; u7 m+ ?( ]
  906. LDX PPU_Cur
    ! K. p& S8 b0 W+ o
  907. JSR Music_Animation3 [9 ^* t. B$ Z: s+ V9 i2 N
  908. STX PPU_Cur7 q3 [- L# |# H: P( j; T: b
  909. Music_Vision_Set
    6 m3 W) ~6 w+ e0 T/ {" @+ P
  910. LDA <Text_Disable_Flag
    ; T8 c6 j( N4 H; \
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ; z# s0 T8 v/ w# x: [
  912. STA <Text_Disable_Flag
    + F# ?9 G9 |" X4 m, m  H8 w+ X+ m
  913. Music_Vision_End$ `3 p  L9 [+ k& |
  914. RTS$ E1 O7 f0 Z. v/ b
  915. ;------------------------------
      e& A$ a. a( A' m4 J9 m
  916. ;音乐条显示处理& s$ u/ W3 W. Z3 Z9 C% W
  917. Music_Animation3 T3 i3 ~( e8 }" F) t. r
  918. LDA #PPU_MODE_CNT_LINE
    2 P4 j& O0 k; m% G4 l" T& R
  919. STA PPU_Addr,X
    ! ]% }- D: K/ ?+ V0 J+ O" }
  920. INX- s. M" s( X' R2 j) z
  921. LDA #HIGH(Sound_Bar_Pos)' p  J0 ^! K/ S% F/ i5 ?
  922. STA PPU_Addr,X
    6 R  I( G' y, Q& D
  923. INX9 O1 n  y) t. A1 z* \
  924. LDA #LOW(Sound_Bar_Pos)0 g- k: E: q  u+ T8 a$ w7 i) Q
  925. STA PPU_Addr,X) L! p! v+ S0 u! p0 b3 v( F
  926. INX
    $ m7 v7 j9 v/ \9 n6 A+ F$ l6 @
  927. LDA #$08
    6 z6 }0 y, E: b
  928. STA PPU_Addr,X6 i2 |/ [: Q* I; p0 W$ E
  929. INX
    ; n. T' ~3 j% m( ?9 l# _
  930. LDA Sound_Bar
    & i8 d: u5 \* ~
  931. JSR Volume_Convert. R3 E- \* a$ w# P& l
  932. 2 {+ C4 l* v( |- q) F  M
  933. JSR Volume_Set_Cnt4 {9 u0 Y( v8 G& e& y$ Y
  934. LDA Sound_Bar+$4: H- _" z! ~% v/ V. A4 p
  935. JSR Volume_Convert
    $ |  p3 K& L' d- s/ f: H
  936. 2 u: l5 B, @; m% d$ m( a0 D+ X
  937. JSR Volume_Set_Cnt
    # ]  @+ e1 U. h# b: g, Q
  938. LDA Sound_Bar+$8
    0 K6 p  H" p" M8 {2 u7 z+ T
  939. JSR Volume_Convert5 n3 o5 @9 U3 a  D" [  U

  940. 0 H3 B0 c" Z/ o  y
  941. JSR Volume_Set_Cnt; |& N6 \% y5 C! |/ t- F1 E5 j
  942. LDA Sound_Bar+$C3 _2 u1 w9 {7 m, j) l& Z) _
  943. JSR Volume_Convert
    7 D+ K# D* r. o! e2 }1 N: g
  944. 8 t* e  ^, m; R% G8 ~' s6 x2 a; H/ d
  945. JSR Volume_Set_Cnt0 q5 Q, m5 r0 _) b( S+ P

  946. 4 \5 E$ ~: E9 ]' C* c! |; z
  947. LDY #$10: ^6 e) ^. J! M4 r# u( d
  948. LDA APU_STATUS2 a% ?+ f. t. Q% u- o1 M
  949. AND #$10; S5 \& }; d' N% A) v
  950. BNE Volume_Count
    6 U0 p7 W& w" e5 P# P8 d2 f4 p" T
  951. LDY #$00
      `# p  v5 Z4 C; t" B3 p
  952. BEQ Volume_Count% F9 n! r: Q  k" _4 i5 }! h' a

  953. ! k% Q, _. d( I( f' }
  954. ;------------------------------
    ( C" u) c3 w! @0 s; e- E, t! K% X' n8 B
  955. ;音乐条处理
    ' p  P( N0 l$ s; z+ J$ M$ B/ Y
  956. Volume_Convert) O# R9 o% I$ J2 X1 h7 J; T; B! }
  957. AND #$0F6 a+ Q# v2 H9 V
  958. TAY
    6 p1 `1 s8 v/ e# b$ s+ O9 {3 y' s
  959. Volume_Count
    ' y+ R  j* t; d, k& X
  960. LDA #$08
    + l" }' x; J) L' N; l7 _
  961. STA Sound_Bar_Cnt
    - T  [1 ]4 f& ^9 e; W& u
  962. Volume_FILL3 z9 _& M; y* _5 q7 v5 \
  963. DEY
    4 @# p9 v  E$ U# O9 L; L  ]2 R
  964. BEQ Volume_Half
    # P; d% p% Z; L5 W  p& \0 T
  965. BMI Volume_Empty
    $ h; ^( g( ?2 b
  966. DEY4 @+ t6 o) l) l( K
  967. Volume_Full- e9 l  X7 W8 ~9 [
  968. LDA #$16
    1 w( d5 B+ e! b
  969. BNE Volume_PPU
    4 f" f0 V& M  {0 Z) L! H" p7 c
  970. Volume_Half% T0 G5 `  w: l! {5 [$ ^
  971. LDA #$15
    7 s7 n6 q' w  T7 ]
  972. BNE Volume_PPU
    3 `/ \9 b" j! L- o3 w+ ^, f/ t
  973. Volume_Empty0 |$ F( [9 @4 `8 E+ x% C3 J/ |, T/ J
  974. LDA #$14
    ( s$ m; p+ m1 J& S  @. b3 D$ d# w
  975. Volume_PPU
    6 @. G8 ^+ }/ q1 o
  976. STA PPU_Addr,X1 p; Q2 K/ C: b
  977. INX, j/ E8 r3 |4 M! n- r# X
  978. DEC Sound_Bar_Cnt+ x( }3 Q/ ~- I$ }
  979. BNE Volume_FILL
    / f  H$ F& U2 y; n7 A! {% m
  980. RTS7 G' Y8 m' E& a
  981.   J# t( L/ I' K, R1 _- Y6 }
  982. Volume_Set_Cnt
    2 t" g  C# H4 c: k8 E* _
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    ' \+ p/ {# I! P2 {5 w8 V
  984. STA PPU_Addr,X
    & I$ S  Y7 L* f# g# i  ^! n8 e
  985. INX3 c. y5 o- o3 |# J9 \1 i
  986. LDA #$083 o3 _/ k) ?  V0 j5 ?
  987. STA PPU_Addr,X2 w  I8 o  b0 w7 H
  988. INX
    : ~" S+ ?. K) R2 p( h, y; l
  989. RTS- C5 s! h8 h6 @5 ?) Q6 B9 ^

  990. " U9 d$ t1 m8 `$ h- l7 B
  991. .ENDIF+ c4 K+ b( L+ ?7 t/ j
  992. ) D9 r1 G# s- ^& N  W
  993. ;==============================
    2 F. R2 w" U  N+ X( z4 ~+ P2 l" R
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    . ?& U# F! r3 Q! e
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    : _& N: A* N: z% ~1 |5 B
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    6 b% Z) c) x  P7 X
  997. ;------------------------------' J8 Y3 _7 I; p
  998. ;PPU处理
    ( Y" P$ _" K' O/ A
  999. PPU_Proc+ g% @3 r8 Z2 p" t6 {8 U' B5 B% x
  1000. LDX PPU_Cur
    - Y# R3 n7 N. W' K0 @
  1001. LDA #$00
    6 @* V( S+ L1 O5 o7 k
  1002. STA PPU_Cur! ]! N- F; M/ y. k" q- `9 n
  1003. STA PPU_Addr,X+ u8 l- D- ?; B9 k% X  H5 r
  1004. LDA PPU_Addr
    5 `) M2 C5 \  w9 [2 a* y
  1005. BNE PPU_Proc_Beg
    8 I$ ^9 {; o# |+ g7 t5 t6 [% {
  1006. PPU_Proc_Ret
    ( v, O& B8 z1 p6 |" b$ N3 m2 @5 y; o
  1007. RTS. z& O! ~5 O/ d( j

  1008. ! _: d* \& o9 }4 m( v
  1009. ;------------------------------# m3 T+ L. W! p6 s/ u/ ]
  1010. PPU_Mode_Return_Cnt  ;转下行模式6 |9 D. D1 R: h2 K6 K' }
  1011. INX- r$ T  ^+ k/ L
  1012. LDA PPU_Addr_L) B+ k) J+ q. R  @  D( u; |0 K5 r
  1013. CLC
    , g7 ^" A- b' V5 O7 ^3 e  k3 m) D
  1014. ADC #$20  `- Z8 j: \2 e# H' u. S- x  H
  1015. STA PPU_Addr_L
    3 d; ^6 M& i, L7 l6 S* u& M
  1016. BCC PPU_Mode_Return_Cnt_End
    ( I0 z/ T" b7 y: a! X+ T9 ~- \/ i) }
  1017. INC PPU_Addr_H
    & B$ H' ]% l1 @0 f3 z
  1018. PPU_Mode_Return_Cnt_End
    2 D2 Y2 m# F, _  `; a
  1019. LDA PPU_Addr_H, T9 V2 ?& Q/ s2 g1 b. N5 G2 o
  1020. STA PPU_ADDRESS
    : W1 U9 @( r' O; F1 ?
  1021. LDA PPU_Addr_L
    / F! p! N0 c$ k
  1022. STA PPU_ADDRESS
    ! |# N8 _3 `% k  d2 g
  1023. LDA PPU_Addr,X! A  h$ {! j5 d* U
  1024. TAY
    ) T  W, a$ A( W- A
  1025. PPU_Mode_Return_Cnt_Write0 y, x9 X+ E. r: N  ]3 g; k
  1026. INX/ }1 @7 j- T: h8 @7 P. H+ v* v! v
  1027. LDA PPU_Addr,X
    1 e0 o* S4 Z% i8 u; n4 l9 {
  1028. STA PPU_DATA7 M$ c4 J2 f; \. `
  1029. DEY
    ) F/ f4 F8 ?3 l) r! ]$ y
  1030. BNE PPU_Mode_Return_Cnt_Write
    & M# J( Y- W9 }  A
  1031. JMP PPU_Proc_End+ A. Z  L! @, j. r) k% `& H
  1032. ) `/ C& w3 d: @0 Z9 T& X. h/ e
  1033. ;------------------------------
    $ H, {" L0 E5 |8 p- r4 t/ y, @  a
  1034. PPU_Proc_Beg  ;处理开始
    2 n2 b, p, o8 L6 `5 C5 ?0 K" I
  1035. LDX #$00
    2 e; h5 K1 j  `2 `3 h$ V4 L/ M: P
  1036. STX PPU_MASK
    " A9 ~) ^; ^" F9 k; P: k# O; R
  1037. ;------------------------------
    $ \  S* _+ F; H9 c9 C/ E' v
  1038. PPU_Mode_Select  ;模式选择
    # N# S9 w. B, H7 `
  1039. LDA PPU_Addr,X
    " V( y1 h9 O" p9 `* P
  1040. CMP #PPU_MODE_CNT_CLEAR
    ) c$ |0 I! A3 A, u% m
  1041. BEQ PPU_Proc_Clear
    1 X8 V9 r( k+ M3 l0 @; b% ^! P: w
  1042. CMP #PPU_MODE_CNT_LINE
    3 @. `) }# u& b, ~0 o1 \0 v; V
  1043. BEQ PPU_Proc_Cnt_Line% D# R8 L* m/ [2 s& Z5 e
  1044. CMP #PPU_MODE_CNT_LINE_NEXT" P9 ?8 O6 P; k* t
  1045. BEQ PPU_Mode_Return_Cnt
    / l& x8 w# C! d* N1 ?
  1046. JMP PPU_Proc_End_Write
    0 a! Y6 t7 D0 X6 d& D4 k; e3 ]& I
  1047. ;------------------------------5 G* F+ Q* D& {, z/ L. O
  1048. PPU_Proc_End  ;单行写入结束
    8 m4 t1 C2 b( H, R
  1049. INX% V9 ?* ?' i, }2 p* w, d
  1050. LDA PPU_Addr,X6 ?& M; [: S4 d- j# {) e
  1051. BNE PPU_Mode_Select
    # w% S) W5 v0 \, B- L6 A( V
  1052. STA PPU_Addr
    2 I, R* e& I* K
  1053. JSR Update_Palette_Color
    4 R! Z! ]  O0 c* T
  1054. : q/ W8 O* t: y4 B/ g3 q1 ^/ b
  1055. PPU_Proc_End_Write
    ' h1 d. }- g8 d
  1056. LDA #$00# y( {% U6 T4 {1 u$ V, U
  1057. STA PPU_ADDRESS
    2 \1 |" w: Z! _) t6 v
  1058. STA PPU_ADDRESS. O: P2 j5 j# p/ H/ n
  1059. LDA <Text_Disable_Flag
    3 }6 e1 [) C$ X3 B5 \  I
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF! e1 _0 w- x' g( X, c' F9 \
  1061. STA <Text_Disable_Flag- P+ H5 u' s* f  E& t" v( D6 q1 ~
  1062. LDA #Scroll_X+ q9 Y3 k  F& t
  1063. STA PPU_SCROLL
    $ R% }4 ]: D" w8 V
  1064. LDA #Scroll_Y: v9 u' H+ p% ^* N( M
  1065. STA PPU_SCROLL$ t+ I% j  D; T/ |
  1066. LDA Screen_State$ r% W* z/ B+ F% G) ]- ?' G1 e% F$ x
  1067. STA PPU_MASK6 ~" R2 m9 f0 m; U, H1 _
  1068. RTS
    2 P. \) a) j1 ~; W2 P9 S$ h

  1069. ( w) k. @9 J) x+ |, ?+ c6 A
  1070. PPU_Proc_Clear% [; e: @! @+ Z9 z3 f
  1071. INX1 y; l) n/ i. D8 b+ H: d
  1072. LDA PPU_Addr,X
    # h' M  ]7 ~2 q+ w9 w# ~* f' n8 m8 Y
  1073. STA PPU_ADDRESS
    ! j7 U$ G- D8 u5 X" K# k$ F% u
  1074. INX# f2 I7 j7 J! u/ F
  1075. LDA PPU_Addr,X/ w5 z, q, L1 H' Y
  1076. STA PPU_ADDRESS
    9 e7 \( H, V  ?- [
  1077. INX+ t* N* G7 v4 A! ~+ `
  1078. LDY PPU_Addr,X8 a2 X9 q( [: R, T4 `
  1079. LDA #$00
    9 j7 H! N( d. O2 ~/ R) K
  1080. PPU_Proc_Clear_Write9 G9 u, }  [" f$ X
  1081. STA PPU_DATA  {8 p9 s$ s" T) }2 b, S
  1082. DEY' [5 I7 C0 B% O6 A5 T
  1083. BNE PPU_Proc_Clear_Write" @+ L- q" k# ]2 g  e
  1084. JMP PPU_Proc_End
    1 D' F' D: V: W. h
  1085. 7 w. y2 `/ ^2 C& E% ]3 H
  1086. PPU_Proc_Cnt_Line! \1 v! M1 |5 E" d- |
  1087. INX
    2 F5 q8 v+ m& `/ ^4 j& |9 M
  1088. LDA PPU_Addr,X
    ( \: ~9 F9 V' p0 ?) F4 z4 I) G
  1089. STA PPU_Addr_H- w6 \! e" I0 {/ ?
  1090. STA PPU_ADDRESS: g0 V9 }* l" @' o
  1091. INX
    4 i/ S0 D: K6 C. f
  1092. LDA PPU_Addr,X
    ! S& G0 R1 V- y& P% U% ^& Q% M% t
  1093. STA PPU_Addr_L
      L! o# h- C1 J! H& c
  1094. STA PPU_ADDRESS
    ; l$ _* \. U0 V6 J* _: P% Y3 w
  1095. INX
    % @$ r7 f0 e. I+ h1 h
  1096. LDY PPU_Addr,X
    # _" Z: v8 C: u$ o( D, V" ~& k
  1097. PPU_Proc_Cnt_Line_Write
    6 s. \/ ]- F; _, a
  1098. INX6 Z& a: R1 ]4 c" q, F
  1099. LDA PPU_Addr,X
    / V% ]# E  u; m  P( i: K
  1100. STA PPU_DATA
    & s* h, g# c( h6 X: M6 N0 z
  1101. DEY6 w2 q' J. k. B
  1102. BNE PPU_Proc_Cnt_Line_Write' a% U2 `6 X7 ^- W
  1103. JMP PPU_Proc_End( Q  O! b  W; @' R. ?* L. P! O

  1104. 8 c' b1 B  R& Q* G4 |6 s7 ^
  1105. ;==============================
    9 S1 }* m/ h- x' [+ S
  1106. HEX_To_Dec;十六进制转十进制
    6 d( y! P. w% |* P  i6 C
  1107. STA <HEX_Data
    : z/ c9 [- e+ i# p
  1108. PHA5 x5 j  P& Y! n1 w% Z
  1109. TXA1 S2 }5 I9 }9 w3 L, [
  1110. PHA5 c0 ~1 w$ w: N' C4 r3 v( L
  1111. LDX #$00- \0 N/ E+ i' V/ j; B
  1112. LDA #$00
    * }; L6 v% c2 V# q* y- ]
  1113. HEX_Cln$ V/ T8 U8 X" B% g* P! N8 S
  1114. STA <DEC_H,X
    / T4 f0 i4 {7 |& I
  1115. INX) X. I% E+ A3 D: K. d- z8 z% @
  1116. CPX #$03
    " m' O0 ^2 S% E- w8 i
  1117. BCC HEX_Cln
    ( s4 {; n8 O, E/ f. ?
  1118. LDA <HEX_Data$ U! W$ l# Q  ?& g* d5 o$ }+ k
  1119. ;------------------------------  i% k3 p2 g$ a, K8 T  ~1 d
  1120. HEX_100
    , m2 a8 j1 h" @' I! E
  1121. CMP #100
    ) a. o! ^# z2 M
  1122. BCC HEX_10
    - \- |/ k" I# A9 V) q% Z
  1123. SEC' V/ y( u. ^/ L
  1124. SBC #100
    , o/ x% p8 m/ r% v( p
  1125. INC <DEC_H: L3 w: b7 d' o1 G" A) j
  1126. BNE HEX_100
    6 J3 x3 v9 _$ Y$ F/ Y- `6 J
  1127. ;------------------------------! u0 c0 k* \; [- r0 n
  1128. HEX_10* h' \# P9 f: N+ ^+ l% y+ Z
  1129. CMP #10
    6 a+ l4 O" l! m3 i7 _1 r
  1130. BCC HEX_1
    " G3 n" f/ w/ e! E" ^7 c( ~8 W
  1131. SEC! {2 E. b; Y5 ^, @& a
  1132. SBC #10: c1 H6 M* N# c, i' k
  1133. INC <DEC_T
    # `3 _- o9 d1 Z0 u0 |' N1 N
  1134. BNE HEX_103 R) H& |+ x! c! N7 v% [  m  R
  1135. ;------------------------------
    , p+ M  e+ k4 F& B# e
  1136. HEX_1
    1 _; y# F+ Q( u# j
  1137. STA <DEC_L
    9 z  C1 k/ u, u* v# k0 j  x
  1138. PLA
    4 @1 a5 Q' S' k  c8 V8 Y/ ^
  1139. TAX
      \( |0 V$ K0 l2 @
  1140. PLA
    5 Y* ]" b! }$ n; r4 E6 S
  1141. RTS
    8 E* S0 Y( M) c1 u. o) P

  1142. 5 m* I% J! a3 J
  1143. ;==============================
    7 E2 |5 [5 C9 e( P6 z7 l
  1144. ;音乐曲目显示5 G' N1 d. ^$ y  c
  1145. Music_Show
    , F  }* ]* C3 o+ u8 T  C1 I
  1146. LDX <Music_Item_Cur
    : F) Q! E" t3 z
  1147. LDA <Music_Cur,X
    0 \8 Z5 x7 M$ W; k; o' Y
  1148. CLC
    . R  _. {/ \$ g# x+ X5 Z; i% D! K
  1149. ADC #$01- p5 i, b" F/ b& i9 n. P
  1150. JSR HEX_To_Dec% a4 S4 [5 n5 j. ^) r& S3 p
  1151. LDX PPU_Cur
    , A2 p/ e0 s$ @/ [2 D0 K
  1152. LDA #PPU_MODE_CNT_LINE
    ' ~+ g- ~4 p) }# [) u
  1153. STA PPU_Addr,X
    + t% a3 }+ ~1 B7 L( P
  1154. INX
    ' K$ F! u4 C/ E* G  x/ o4 x
  1155. LDA #HIGH(Play_Index_Pos)4 ^; v, R& |5 V$ w
  1156. STA PPU_Addr,X9 z) `1 q/ S9 V2 P- n
  1157. INX
    * m7 ~3 l" ]' ~  ^
  1158. LDA #LOW(Play_Index_Pos)4 Z" {. o1 y# n  Q
  1159. STA PPU_Addr,X
    * H; p$ l7 [) w& p3 f2 x
  1160. INX* g8 n* i( t9 L7 O9 i1 u% f( ?

  1161. / k- I" f% Y: \7 |2 p5 F
  1162. LDA #$07
    , b/ e+ ?' E2 i& t* X: w
  1163. BNE Music_Show_Length
    5 d1 W1 @) P4 t6 b! B2 [

  1164. ( d' @% E3 Y; X0 g. _5 {
  1165. Music_Show_Length6 R- h" R0 [" O7 ]6 X
  1166. STA PPU_Addr,X' N" K$ t' E2 N% H& e2 f0 p5 @! |2 S
  1167. INX
    5 m! M3 S! V9 ]0 N2 L& _- F' p
  1168. * k  V/ y# c2 A: Y* S7 K
  1169. LDA <DEC_H2 d, Y2 l. K$ ?2 m* E0 F
  1170. ORA #'0'% L7 W: \2 G$ P* N
  1171. STA PPU_Addr,X
    ' k9 i) k$ r' o/ p
  1172. INX8 n( C3 B2 u4 G! E3 }. U

  1173. + Y3 t& m+ G, N; R
  1174. LDA <DEC_T
    9 p. ?3 S. E6 `& C$ }6 `3 D$ m' M
  1175. ORA #'0'
    ) s6 B1 w7 q1 g9 T& _4 c
  1176. STA PPU_Addr,X
    5 T$ Z2 O. y: ?5 r
  1177. INX2 r; a+ W; V0 u$ i; x
  1178. ' a) F8 C  T" u1 s, F3 e( p6 b. m& e
  1179. LDA <DEC_L' U' ~) h& f& a1 C$ G' Z* N; n0 Z, R
  1180. ORA #'0'' [# R' J& n( _! ]1 I: l
  1181. STA PPU_Addr,X
    1 w& ^7 {, f9 ~! O# ?
  1182. INX  U  ]( b2 E3 {  t! _6 r
  1183. ) I/ O4 T% S  U( g* ?3 n& [) ]
  1184. LDA #'/', i: K$ s' u3 f, y% B2 E: M
  1185. STA PPU_Addr,X4 ]( c: D& q3 _& X+ D
  1186. INX. O9 r" w- P& }. b; |
  1187. Music_Show_Total
    " q: D8 u: V) b* |  O
  1188. LDA Music_Total9 M3 a7 @7 M' t+ z7 p2 u5 A$ D
  1189. CLC
    8 t: K5 @: D& m9 @/ c6 B. R
  1190. ADC #$016 c( Z% z: j9 [, H7 ]' ~6 Q$ A
  1191. JSR HEX_To_Dec# ^. i; [2 T9 h# g8 \+ h
  1192. 0 D. M& \( [8 @% f: u( E, A7 E5 [. {4 G+ T
  1193. LDA <DEC_H/ S" J  K0 A4 D! Y6 |. h
  1194. ORA #'0': i: T0 V; C' T! H
  1195. STA PPU_Addr,X
    6 h! M) R0 M) `- C$ E1 _
  1196. INX
    : K0 ]& h) S. u8 f' n

  1197.   s- U& E7 T% B5 a3 X
  1198. LDA <DEC_T
    , g5 l% |) h' B' |# K7 n% Z6 e& E
  1199. ORA #'0'
    " E* s$ V" y: J# x7 k! `' X: i, \
  1200. STA PPU_Addr,X, k6 \9 c- D2 a
  1201. INX
    ) r/ {1 K9 C5 w3 M# w
  1202. , L4 P0 L$ }- F. i2 h/ t: U0 w3 @" L
  1203. LDA <DEC_L
    , {+ |  q5 `" W3 n: ~
  1204. ORA #'0'
    4 P* D" {8 U/ K) E/ O* u8 i( B
  1205. STA PPU_Addr,X
    8 F  q! M( Y$ l1 j+ Z: H
  1206. INX
    % f. Y! w" }" C3 f( A3 Z/ U+ e
  1207. ; J+ ~4 W4 O4 K7 M- a8 u
  1208. STX PPU_Cur0 ?7 }7 ]$ N" s/ W
  1209. Music_Show_End  }$ u1 A: K) N
  1210. RTS$ A$ G; G. [6 z# S1 L. u. I  |: _1 N
  1211. , z4 w* ~1 r. d
  1212. ;==============================
    & w% S& h0 t9 F! A; k
  1213. Time_Show;播放时间显示
    9 J) i( B- E: M1 c4 B1 d' t- v
  1214. LDA <Text_Disable_Flag; k5 b7 `$ ^1 h5 z- ?) t
  1215. AND #TEXT_DISABLE_ITEM8 p- `& C; e6 G5 Q+ F2 w
  1216. BNE Time_Show_End
    % W3 X, }7 L. h" }* q
  1217. AND #TEXT_DISABLE_TIME. C3 T. v2 t, U3 I4 g
  1218. BNE Time_Show_Enable
    - p) y6 I7 |! b& @. ~( ?8 \! O
  1219. / i- A) [$ |& e1 }! i0 o: \$ b
  1220. LDX PPU_Cur
    2 G; C3 R! o+ Q& f6 {2 ]
  1221. LDA #PPU_MODE_CNT_LINE
    4 y  E: S# l" |: ]! S
  1222. STA PPU_Addr,X
    8 [$ \1 U$ r, z2 J: h
  1223. INX
    $ _# \& T. t) L( ~4 k: }
  1224. LDA #HIGH(Play_Time_Pos): b9 n7 ^/ |: W3 z1 _* ?% r
  1225. STA PPU_Addr,X1 x9 G- e7 h) |8 K3 B. W; X! b
  1226. INX
    ! P- R  t3 G- C4 X; @% h8 r
  1227. LDA #LOW(Play_Time_Pos). z; z; u) V3 k4 q- w
  1228. STA PPU_Addr,X
    0 I8 f  p$ x1 F0 X* h0 u9 _
  1229. INX- L' b% Y8 h6 S: _. K) J
  1230. LDA #$08
    2 f& A, q% ~0 ]' }
  1231. STA PPU_Addr,X
      i$ _) N5 V, f% {4 [2 R' B% h
  1232. INX
    . D4 G8 p: r2 M7 T1 l
  1233. Time_Show_H
    0 }0 Z2 J$ P7 O% k% O; p) a: X8 M
  1234. LDA <Time_H; W# q* r1 I' z" [3 q6 k
  1235. JSR HEX_To_Dec
    * Q6 a0 I. _1 ~) k
  1236. JSR Time_Digit6 F) |7 m& |$ W% \
  1237. LDA #':'
    5 G# e# Z; ~  H( a2 ^6 x
  1238. STA PPU_Addr,X# o$ [/ z1 \% A- B! s: N  V1 s* k2 h
  1239. INX
    ( y: _: F* J4 S& S  i3 x
  1240. Time_Show_M
    5 f7 b: p2 ~6 w4 U( B
  1241. LDA <Time_M
    ' T1 {# X/ l2 f9 z
  1242. JSR HEX_To_Dec
      B* ?% B& D, g7 f3 m" t
  1243. JSR Time_Digit
    7 N/ B9 @3 j- C: \. \2 t' J' a
  1244. LDA #':'
    7 r- {% p, b9 T/ Y$ e0 y- s
  1245. STA PPU_Addr,X6 d* l$ k* a$ }: _) O1 y! w
  1246. INX5 f! [% x2 @2 S! ]9 l
  1247. Time_Show_S
    % n! Z. J$ o) t- J+ {5 W+ h. z; t
  1248. LDA <Time_S: t: a5 K& R' J& B" [' r
  1249. JSR HEX_To_Dec5 n! Z9 g  o6 a# G" O2 j
  1250. JSR Time_Digit- i; r8 u5 I& ~, s; C( R) [3 Y" W
  1251. STX PPU_Cur9 e- c% X' i* n# `# |' L
  1252. Time_Show_Enable; m) y* W( M; D7 d# Y
  1253. LDA <Text_Disable_Flag1 \2 d/ j# z/ {
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    : w" A( X1 f+ F7 n
  1255. STA <Text_Disable_Flag
      i; A2 m8 t# w( Q
  1256. Time_Show_End+ _! t  Q# W; {" [( n
  1257. RTS+ g5 R/ {4 v" G
  1258. ! Z( W9 L2 T7 f* ?1 \
  1259. Time_Digit
    ) Y4 D! `1 X2 y+ v4 W' L% `
  1260. LDA <DEC_T, j# y4 z" Z6 h, G
  1261. ORA #'0'
    - v: s0 C1 U7 K# a, G7 H6 l) ~- |) t& P
  1262. STA PPU_Addr,X
    1 J5 S! [$ }' K$ `
  1263. INX" f+ A# }8 }: M4 c1 L2 r
  1264. LDA <DEC_L. Y1 e; A* O! m9 _4 r2 O
  1265. ORA #'0'
    # d4 C7 b6 o3 M/ W/ L( l1 P' B
  1266. STA PPU_Addr,X
    & l; U/ ^# P) [5 N5 H2 y" p0 [
  1267. INX1 m! D( {8 A9 r+ [1 I0 Y
  1268. RTS+ |: o# C: a$ p9 }0 \* ^
  1269. 2 V! u2 W7 y  j0 g8 c1 `
  1270. ;==============================
    7 E) c9 a4 B2 @
  1271. Time_Count;计时
    ) ?% E; R# T' t. p4 K1 `
  1272. LDA <Music_Stop_State
    ) g* ^  [: F9 c5 Z( O
  1273. ORA <Time_Wait_Cnt3 Q; Y  z# g7 ^( U4 g: P/ e
  1274. BNE Time_Count_End% S) C& {# j- j1 k! i
  1275. INC <Time_Cnt
    ( _7 E& T/ z! O2 o4 @
  1276. LDA <Time_Cnt7 R5 f. K3 I0 q; b3 ]9 C' S9 `6 I, Y9 @
  1277. CMP #60
    6 ~4 z/ U7 t  c$ d" M
  1278. BCC Time_Count_End+ M( j- U+ w% W9 Y
  1279. LDA #00
    & [# `; ^2 M; W0 |
  1280. STA <Time_Cnt) U! R3 r# z9 b# v* M
  1281. INC <Time_S8 y4 z! x. z' h9 W( c" y" L

  1282. 0 i/ v+ u  t. [% |2 @* y) J
  1283. Time_S_Cnt6 y& v; N9 ^; F4 R* `4 Q$ ]
  1284. LDA <Time_S
    6 y: D5 X9 S! |: t5 x
  1285. CMP #60' y) S% l! N! r5 y/ P3 ]% Z+ M2 j
  1286. BCC Time_Count_End. `8 h7 o  }9 G6 A3 S8 v
  1287. LDA #00
    * v7 b) {, l$ }
  1288. STA <Time_S
    ( n  h6 j* D/ X4 f6 k3 b6 d* d
  1289. INC <Time_M
    " O& D. S! ]/ [6 B  G
  1290. ! u; Q' m2 _9 `
  1291. Time_M_Cnt6 z0 b/ @  e! j4 F
  1292. LDA <Time_M
    " }0 n  Y  ]. a3 n4 ]% b* {. T2 D9 k
  1293. CMP #60
    # X4 M* C& A: J) P/ j
  1294. BCC Time_Count_End0 Y2 Z2 k( n! M$ Z8 P
  1295. LDA #009 B- e6 e5 G% p3 q; Y$ i
  1296. STA <Time_M
    : h" n; R9 R5 F3 {) g$ Q1 m+ y1 }
  1297. INC <Time_H1 k0 r7 {1 X( A2 p6 ?9 E' R& K$ p

  1298. 4 S- Y4 \: q1 E  B1 U
  1299. Time_H_Cnt
    & q9 F' O' E8 a9 w
  1300. LDA <Time_H
    * ?8 o4 B9 i% d3 s5 ?7 U3 k  m
  1301. CMP #24) \) T+ H6 Z' o' X; t
  1302. BCC Time_Count_End
    8 X2 i/ ?' `0 {6 s$ V0 ?$ V. N
  1303. LDA #00
    " U9 Z) M6 M% u! ]9 \" f# m( _  U
  1304. STA <Time_H
    . v8 D6 v5 F( F- J
  1305. " R1 N! e3 \# b/ t% M
  1306. Time_Count_End
    ' S4 a$ x4 o9 {+ K2 b! l
  1307. RTS
    + i5 W( @! t) i, P) J# i: ?

  1308. $ S$ @& @6 l) ~! q- g7 t! {) O' I
  1309. ;==============================
    & t* Q0 w- {1 f! o1 s5 R/ C" t( v
  1310. Time_ReSet;播放时间重置; B# t1 l6 P- K
  1311. LDA #$00
    , Q3 F% d6 h1 t
  1312. STA <Time_S
    ) }0 e4 c4 p4 [/ X0 x% f3 F
  1313. STA <Time_M
    " K2 i3 k+ m% r$ e9 W
  1314. STA <Time_H- b4 ^# c, _: j! Z& \
  1315. STA <Time_Cnt
    1 e! n. k0 [5 g6 {6 n9 \7 @; m" G
  1316. RTS
    - f/ b! X4 H8 A! {$ b

  1317. 2 U- @( r/ g; o" P
  1318. ;==============================
    3 z! q0 [0 r/ O: v8 S. z6 x: j' s
  1319. Music_Bar_ReSet;音乐条重置
    $ C$ H3 [- D5 Q
  1320. LDA #$006 B: m1 n2 ?) y$ h; Y# R* Q" R9 }
  1321. LDX #$00% r. J& e$ t. D( n* T) n
  1322. Music_Bar_ReSet_Set
    ; s6 U* O3 {: V
  1323. STA Sound_Bar,X' p" ^3 A- G. j( W& h
  1324. INX
    & z7 }2 X7 @3 O7 [9 @
  1325. CPX #$10
    - h% {7 ^4 l' l7 c
  1326. BCC Music_Bar_ReSet_Set
    % U, U1 t$ X! p2 A' O
  1327. RTS9 o- O- @6 p6 U" [

  1328. * ]( k! B1 G3 h5 m! J0 K0 t7 Z
  1329. ;==============================$ i8 _9 l3 }9 ]+ g" n% f9 d" s$ s
  1330. PPU_Data;PPU数据写入* U! W# B% T# Q( ~) n* [. z
  1331. STY <Data_L
    6 o7 }- U. p, Q( H% M' m# p
  1332. STX <Data_H- Q1 H1 ^; d: ?! h
  1333. LDY #$FF
    1 z! _8 P" s/ `
  1334. LDX PPU_Cur
    $ _( `- q( I5 B9 z1 u% K
  1335. DEX
    : }1 {& x& c; }. y0 y/ k. d
  1336. PPU_Data_Beg7 R5 s) n- P& {/ j
  1337. INX. m& m9 L( m# \1 x8 U
  1338. INY
    ' U( I  D' M$ h' p7 I
  1339. LDA [Data_L],Y' j: Q9 ]( R$ `4 A
  1340. STA PPU_Addr,X
    8 r+ K# C6 Z6 b' b+ a/ ^1 w0 R
  1341. BNE PPU_Data_Beg. |/ J; ]5 I0 F
  1342. STX PPU_Cur
    2 m* P! Y2 ~" Z* P
  1343. PPU_Data_End
    6 m0 C5 V# p- |. T9 K! v
  1344. RTS
    ( X' z4 h- G7 t# o' q( G  i% D, }* x
  1345. 1 _, @: T8 g8 N
  1346. ;==============================
    0 F- ?* B- ?& z, m8 [% r$ q
  1347. Music_State_Show;播放状态显示& ^% T" r; E% ^; V
  1348. LDA <Music_Stop_State- h8 x& J5 X2 w2 q. S5 g, ]
  1349. BEQ Music_State_Show_Play% P* a( A4 J! X4 c. D) f) L
  1350. Music_State_Show_Stop7 K3 @0 U4 }- L( }% l+ V
  1351. LDY #LOW(Music_State_Stop)
      m, ?, s7 Z3 \% r& o
  1352. LDX #HIGH(Music_State_Stop)2 Z. W' V0 q2 _$ Q3 D: B
  1353. JSR PPU_Data, ]8 e  W0 b) [
  1354. RTS
    # }3 `! N1 S' [% i+ d
  1355. Music_State_Show_Play
      h+ e% k$ n- Y
  1356. LDY #LOW(Music_State_Play)
    0 a0 K6 D" H. d% x0 X6 E: C
  1357. LDX #HIGH(Music_State_Play)
      A, B3 V5 K" C% b/ ]( ]9 |  B
  1358. JSR PPU_Data, |8 L9 H- \: _5 ^2 G7 S8 ^
  1359. RTS- J# I& j9 g5 B

  1360. 7 c! D/ m( _6 x) F; k% T: Q0 n8 K
  1361. .IF SOUND_BAR_SHOW_ENABLE" g. F' K, V4 [5 a7 o$ V& L* _
  1362. ;==============================
    5 N- l3 _( N( c& _5 p" z3 L$ T: F
  1363. Sound_Bar_Text_Set;标题与音乐条初始化4 n  ?$ \! ~3 Q3 j7 Z3 {* h9 f0 D) D
  1364. LDY #LOW(Sound_Bar_Text_Data): G% K2 X, r4 L1 G
  1365. LDX #HIGH(Sound_Bar_Text_Data)! _  ^( Q& }2 N6 W% L, x
  1366. JSR PPU_Data
    + \" ~, H; T7 S+ m, B  ]% \
  1367. RTS
    4 S9 D, T$ n2 _8 u# C" E

  1368. " [  c) Q# I* H& H' b; r
  1369. .ENDIF- u( ?! T; B$ \) h$ a  F
  1370. 4 y# r0 F5 m" p* ]- V. b
  1371. ;==============================' E- Y5 J8 H; N6 C0 r( R& @
  1372. Set_NameTable_Attributes;设置命名表属性2 D: \' J: B: w! L. k
  1373. BIT PPU_STATUS
    ' S5 O: w/ n6 y! q  {
  1374. LDA #$23/ b1 P, g9 c9 l$ D7 `* X' `
  1375. STA PPU_ADDRESS  c% H$ c4 \- S2 R& m  ?( R: ~
  1376. LDA #$C0
    + M( ]" R" D- }
  1377. STA PPU_ADDRESS
    & n! j: [! u8 [- O- G
  1378. LDX #$00. K8 Z$ z4 N, g( @( G
  1379. Set_NameTable_Attributes_Write0 e; o6 ^+ ?/ o
  1380. LDA Palette_Attributes,X
    ) b* a1 L  S$ O  Y* h
  1381. STA PPU_DATA
    ) l8 ?" F) @. a% N  K
  1382. INX, @# n! \" R  M; m6 o( O
  1383. CPX #$40
    * R% l+ w! A0 x9 R8 B
  1384. BCC Set_NameTable_Attributes_Write' X" r, @) \' |& c. o* i
  1385. RTS  ~/ v' q! {. O* K

  1386. + E; S7 Q" t# n" }2 J* `
  1387. ;==============================. ~% j0 p& E: V
  1388. Set_Palette_Color;设置调色板数据4 [. A& v) |8 I
  1389. BIT PPU_STATUS
    * b- W( c: e. ~
  1390. LDA #$3F0 z- d# n7 f$ H9 u
  1391. STA PPU_ADDRESS
    , C* z* I% B( B' m  j, j& H* E
  1392. LDA #$00
    ) o* m7 g) s1 h4 P. w/ b5 H' U4 f
  1393. STA PPU_ADDRESS( W1 h0 f/ @* {7 Q2 Z2 R7 M+ Q  B+ |& w
  1394. LDX #$00, {$ b5 F) S2 F( ?2 h8 v
  1395. Set_Palette_Color_Write
    3 ]3 M: C0 [3 p
  1396. LDA Palette_Data,X) B- k+ K  h8 {0 ^/ U( q
  1397. STA PPU_DATA: x7 S6 S" G! F+ c! [
  1398. INX
    4 V" G9 X% q7 ?+ F! u" b2 B% J; U
  1399. CPX #$20
    % k) y! ?8 q4 G
  1400. BCC Set_Palette_Color_Write9 X& S2 \9 e, |3 ~1 i
  1401. RTS" E3 p% s/ Q* E0 d" l' p

  1402. 7 V5 X9 r& A) z/ |4 s
  1403. ;==============================
    & b  z- S% Z2 c! P; h
  1404. Init_Palette_Addr;初始化调色板数据- T- C' |: c5 _" V; E
  1405. LDX #$00- `- D- x. e: M$ G- G( R7 e
  1406. Init_Palette_Addr_Write
    . g6 E6 Q" `" W4 K
  1407. LDA Palette_Data,X0 Z( ~: _5 T8 \+ X
  1408. STA Palette_Addr,X) A8 m  U1 @) h* F, W8 x
  1409. INX2 e# S( A+ C, d( k$ X$ y
  1410. CPX #$202 ]/ y' H9 y; e
  1411. BCC Init_Palette_Addr_Write7 t# R: y6 b4 b% j: q- A% H
  1412. RTS
    - \! }8 ?# U- m

  1413. 1 L' R: N+ B8 C* W" @
  1414. ;==============================
    9 x6 b! @8 Y( o5 o7 H3 }
  1415. Update_Palette_Color;更新调色板颜色0 ~3 q  `- P5 r+ V
  1416. LDA <Palette_Update_Flag
    - r. I: R, O; O' p5 n( k% ~
  1417. BEQ Update_Palette_Color_End
    ' h  S/ V5 V% f
  1418. LDA #$3F; O9 Z( I9 z2 u, [
  1419. STA PPU_ADDRESS
    5 N; M9 d6 O# X- D* ?6 z! m
  1420. LDA #$0C
    / W0 e3 J  B# u# H0 x. {' o
  1421. STA PPU_ADDRESS
    ' c# B* z; c/ e7 E+ v
  1422. LDX #$0C& d. N- s& U6 I0 x. O5 J$ Q
  1423. Update_Palette_Color_Write
    3 p: ~& A8 u9 I; Q
  1424. LDA Palette_Addr,X
    8 H) a4 \, p4 q- j8 Z1 T7 T
  1425. STA PPU_DATA( j4 I' z& d  l7 i& j, W
  1426. INX9 |2 }$ f+ R$ w  R% L6 b
  1427. CPX #$14" y& d% O, X* W' |) ~0 P" q6 I
  1428. BCC Update_Palette_Color_Write9 V) D) ^$ O8 c$ Q7 M( [" n
  1429. LDA #$00" r; \& W; l" Z& i: w
  1430. STA <Palette_Update_Flag
    5 s3 Y! w$ J& p3 G
  1431. Update_Palette_Color_End
    2 Z7 n; A6 o, q) k% w
  1432. RTS
    6 X) v/ Z8 X. T& ^# B* F

  1433. % T, h1 B. `# _7 M

  1434. , ~; R3 O7 r  r  v. B
  1435. Update_Sprite_Palette_Data7 S, X6 W% f/ b, T1 k3 P% h
  1436. .DB $21
    9 q0 ^4 g5 {# m6 R: D- m
  1437. .DB $21
    3 k; Q3 O1 P4 i2 t! t& I
  1438. .DB $11! Y+ h% ~9 w6 O6 D4 g- x. h
  1439. .DB $01
    ! c, ^8 e) V' \9 D* U0 Z& C
  1440. .DB $01
    , V7 S3 ?# t. L" H. G9 k
  1441. .DB $11
    # P1 T, T  O* F/ z. L
  1442. .DB $21
    ' `/ K7 O3 `" d& p' n9 x6 o. k
  1443. .DB $21
    % x$ x# l$ P; {. Y) _# N
  1444. .DB $11
    $ K& Q! E9 Y+ z( j* i+ Z
  1445. .DB $016 x5 n: e4 z" ^! @& ?0 ~. s
  1446. .DB $11
      Y; `  d# W, M. e
  1447. .DB $21$ L. B( d6 ]8 N
  1448. .DB $21
    0 E% ^3 a2 c- X) j6 G/ J
  1449. .DB $118 S* P3 H# Z2 A9 A
  1450. .DB $01
    / x, S2 y2 p( R7 [8 t  Y6 e
  1451. .DB $11' x! ?* C4 P7 Y, i, J
  1452. ;==============================$ o$ [8 f; Y" S( A8 a1 n; R" r
  1453. Update_Palette_Data;更新调色板数据$ n; W  S' ~1 v6 U) X: V
  1454. LDA Nmi_Time_Count
    ( u! Q% V1 J5 G& p7 h
  1455. AND #$08
    ' e8 {+ E, s7 B3 z1 ]
  1456. CMP #$08
    * X+ z  t- z; P  h
  1457. BNE Update_Bkg_Palette_Data$ U$ U. i- \$ h

  1458. / e( l. e% j2 q1 K! c' s
  1459. Update_Sprite_Palette_Data_Set9 c! q; I* T3 A" L
  1460. LDA Nmi_Time_Count- B- F2 H* V% M4 ]
  1461. LSR A
    1 G& v6 A6 |! w" H( w- G( }9 ~5 ^) D
  1462. LSR A
    ! ?% |+ N4 d4 d1 Q$ Q/ E$ I
  1463. LSR A
    ! G8 B2 I  Q/ _+ \9 G
  1464. LSR A8 v0 A. b: i  p$ ~- S
  1465. AND #$0F
    % j$ j3 N& M1 R# G; U
  1466. TAX' _& o; ~/ J- I0 @8 K
  1467. LDA Update_Sprite_Palette_Data,X5 _4 f0 A) H3 a5 A6 x3 |7 V) v
  1468. STA Sprite_Palette_Update_Addr
    0 |- j1 K/ X* L0 L1 m
  1469. LDA #$013 N' r" }# y# w( n; H% ^$ S
  1470. STA <Palette_Update_Flag8 n& F" W) |# j, W
  1471. 4 N: J; f+ U$ O7 ^
  1472. Update_Bkg_Palette_Data4 t& o& }+ ]+ u) h1 ~
  1473. LDA <Text_Disable_Flag
    5 ]' v- o1 N. P+ R* f% Q
  1474. AND #TEXT_DISABLE_RAM
    : j" w1 ?9 ^0 @& \
  1475. BNE Update_Palette_Data_End
    4 y8 ^& P  K5 ~
  1476. LDA <Music_Stop_State' S4 r5 M5 Z* x% O
  1477. BNE Update_Palette_Data_End' \0 Z: N9 t$ U
  1478. 2 G+ u% @3 E  H1 @; k5 O
  1479. Update_Palette_Data_Check
    ; H/ E* T! u3 n
  1480. LDA Palette_Wait_Cnt6 l1 t& y8 r, j' p
  1481. BPL Update_Palette_Data_Check_Over
    " x5 F+ U5 t& M: U: O
  1482. LDA #PALETTE_UPDATE_INTERVAL
    3 {. E+ ~* i& g( b3 T% R& X
  1483. STA Palette_Wait_Cnt
    & S. v/ v0 e' `1 x) k
  1484. Update_Palette_Data_Check_Over
    " L/ L. }' X6 j: O
  1485. DEC Palette_Wait_Cnt
    : U& [; `0 l: M! K2 `3 q' K' m1 G
  1486. BNE Update_Palette_Data_End
    + j+ e! r. Q1 c9 o" Y

  1487. , w" C6 c; h3 N4 H3 X0 F
  1488. LDA <Text_Disable_Flag) |& M# |: r: h! \7 u1 C' T3 s
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    9 q, k% D' d1 U! I1 ^$ Z
  1490. STA Text_Disable_Flag: x, l3 v6 c' I% Z$ H) r
  1491. INC Palette_Update_Flag4 f( i5 N8 U7 E3 E. Y8 X2 q/ d
  1492. * `9 c+ E5 s: S; U
  1493. LDA #PALETTE_UPDATE_INTERVAL& w1 G; d" c& ], Z
  1494. STA Palette_Wait_Cnt
    6 ~; i* _7 G' H2 r; B: Q
  1495. % B, W0 M4 u& {5 o) b
  1496. LDA Bkg_Palette_Update_Addr( z& x) ~* ^4 c7 V4 F
  1497. CMP #PALETTE_UPDATE_MAX5 P$ j2 H  L% V, B0 R5 T/ V
  1498. BNE Update_Bkg_Palette_Data_Set" f( I7 O( E! l  D9 u' B0 z
  1499. LDA #PALETTE_UPDATE_MIN - 1
    ( N' T+ M/ m, {) k1 m9 U" {
  1500. STA Bkg_Palette_Update_Addr& H* Y4 ]% {: @% _" w  J1 _7 Y
  1501. Update_Bkg_Palette_Data_Set
    2 G- ~+ [( e8 a2 i6 E: _
  1502. INC Bkg_Palette_Update_Addr
    8 J, {3 ?$ S* I5 F% h7 ^1 T8 Z

  1503. 0 h( e; ]1 s+ [* T" E
  1504. Update_Palette_Data_End5 a5 B) Y! e7 C, U+ }+ b. i; V
  1505. RTS
    " }: L) {# G3 Z6 E# E! z/ o  L

  1506. 7 u# }% Q- p4 M$ @# r; Z+ v
  1507. ;==============================2 f2 Q" G& f, t% A' K
  1508. Show_Music_Text;显示静态文本
    9 `4 U) C8 x+ L9 K# k
  1509. LDX #$004 y& k9 j$ l) B2 L5 E1 Y5 W2 s
  1510. Show_Music_Text_Set
    # h6 `2 R4 M% B2 A1 Y) R8 k
  1511. LDA Static_Text_Data,X: q: k: H9 e1 t+ [
  1512. STA <Data_L. w$ B  ^+ f9 I  }) t0 [7 P
  1513. INX
    1 I: m/ A5 b- y  S* j
  1514. LDA Static_Text_Data,X, L9 C+ S0 G2 W9 J
  1515. STA <Data_H9 o3 h$ L6 N, r8 L
  1516. INX2 _3 J& u# o% T/ g% `2 _
  1517. LDY #$00. W$ D& P9 c9 @* p5 c: ~- B
  1518. LDA [Data_L],Y
    ) F2 c* W; i  E* x
  1519. STA <Data_Cnt, Q8 @3 F8 \. J8 e" Z3 F5 O
  1520. DEX1 h% p% W5 f" N
  1521. DEX
    : V5 n( g% q8 k
  1522. LDA Static_Text_Pos,X
    " L! I( F5 _2 R4 [3 C
  1523. STA PPU_ADDRESS2 m( L. |6 F/ k+ b# e! D/ a
  1524. INX
    6 b  J( J) ]- @/ R: _$ X# `* f
  1525. LDA #$205 Y  c) I$ v2 F7 j
  1526. SEC
    ; ~+ u7 p- Z2 C: \6 E6 O
  1527. SBC <Data_Cnt
    ! p9 a, c$ o! v( d, L
  1528. LSR A
    8 q" p/ J0 C8 {! L. U
  1529. STA <Data_Buf# Q8 d4 d: F: q8 P; l
  1530. LDA Static_Text_Pos,X4 ~+ T6 N& e" s& s
  1531. AND #$E0* d7 a/ E6 ~& G! u
  1532. CLC
    : K/ Y# c9 D4 D. x3 m' a' ^9 i
  1533. ADC <Data_Buf' K# H& C5 {( P
  1534. STA PPU_ADDRESS
    ( I" q% R5 j5 m  D3 @" B
  1535. INX
    ! p4 ]2 c' Y* L! s" P
  1536. Show_Music_Text_Set_Write
    ; N4 {' l  k7 |) u1 ]
  1537. INY1 ?" q2 {3 H& |9 Z! w* t
  1538. LDA [Data_L],Y5 C. L' D6 {( ?& T
  1539. STA PPU_DATA
    ! m( O. i4 p. K+ j+ ^1 p/ \- S6 s
  1540. DEC <Data_Cnt
    4 |% ]1 {8 ~$ p! k" j
  1541. BNE Show_Music_Text_Set_Write  {9 _1 b6 @8 w4 s/ j
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    * a5 P, ~0 Z5 S
  1543. BCC Show_Music_Text_Set; K( F$ v% G8 }' `' z2 t  v" x
  1544. RTS
    % B9 S9 l9 a: ]1 [
  1545. / l8 c" O8 q* S, I! i/ ]3 L
  1546. ;==============================" ~4 o( s* }4 E0 |; f0 M2 ?. E
  1547. .IF Track_Name_Pos;显示曲目信息, ?  r# F+ V( h  ]  v9 h

  1548. ( f% n! Y0 S2 W  R, \- E+ E
  1549. Clear_Track_Info  O+ b' {  J4 ^' d8 l
  1550. PHA& {& k, V9 l/ p5 O0 r* N
  1551. LDX <Music_Item_Cur
    + ?! A3 ~2 c/ O" f. j
  1552. LDA Track_Name_Addr_Flag,X' {, R% W/ Q4 ^' K
  1553. BEQ Clear_Track_Info_End_Ex
    6 Z9 `" l# I$ B2 o
  1554. PLA
    # Y, k$ n0 M9 ~. l

  1555. & d$ J" G2 v+ K* t. ]1 @
  1556. LDX PPU_Cur
    ! G8 g' _3 \8 C1 y" ?9 I1 R2 M
  1557. PHA7 T1 U8 D/ T; m
  1558. LDA #PPU_MODE_CNT_CLEAR
    1 d: `5 x) A2 ^0 p3 e" V) ?4 S
  1559. STA PPU_Addr,X
    0 [, l8 C% K" z# }! ]
  1560. INX' D. ~  t# s* `/ O. a
  1561. PLA% v/ p, V1 l! Z. |+ b, f0 A6 a8 a
  1562. JSR Show_Get_Track_Name_Center_Pos
    4 n( D6 [+ `6 d8 e2 l
  1563. STX PPU_Cur8 d" F, E5 C1 q/ f6 V. B3 ]3 l( w
  1564. Clear_Track_Info_End
    ! A5 Y" n) K7 ?$ A$ v) }
  1565. RTS7 i+ P  m' F# `, j% p
  1566. Clear_Track_Info_End_Ex2 V2 q) T& a& e& C
  1567. PLA1 l' Z0 i2 \, J9 z3 h
  1568. RTS, r4 r* e- s3 r3 k& p  e4 N

  1569. 3 D  B1 K6 j* R6 C* s% P% i
  1570. Write_Track_Info
    $ a3 S& R* ]& \; v" f
  1571. PHA
    4 e, M) W' Y3 ]& K
  1572. LDX <Music_Item_Cur
    3 I: Y7 P# P! f6 v1 X
  1573. LDA Track_Name_Addr_Flag,X
    ) x; l* l# U# j+ u" I# r$ ~
  1574. BEQ Write_Track_Info_End_Ex1 E: B* |" V: C4 j0 |! o8 ~6 ?
  1575. PLA
    6 _' M& t$ g- {9 S; v. a

  1576. 2 G: w" x2 _9 f- r! q0 O5 Y* g: y
  1577. PHA
    + b4 z/ l# N. z+ L' B
  1578. LDX PPU_Cur: w! J# b, o5 h
  1579. LDA #PPU_MODE_CNT_LINE8 `: a' E/ J6 J/ k' U
  1580. STA PPU_Addr,X
    4 H4 i& p; K8 R7 C: \' w4 N. m
  1581. INX2 `* n4 s/ Y9 u: G+ H& |6 Y+ z
  1582. PLA
    8 Q9 n4 o9 |* D! r
  1583. JSR Show_Get_Track_Name_Center_Pos
    8 C& x' ^0 g) A) U0 O
  1584. Write_Track_Info_Data* |$ }" r* b7 Y- H- P
  1585. INY. |' y+ U2 O) ]: k3 y) j( M; U/ B
  1586. LDA [Data_L],Y
    # z) a0 W+ K; g+ z
  1587. STA PPU_Addr,X
    , m7 Q, t) w* K' ~
  1588. INX
    # g- a) G8 I" I2 G/ x1 X+ p
  1589. DEC <Data_Cnt8 h9 h8 ~7 A* B1 b. u0 B: ^
  1590. BNE Write_Track_Info_Data7 [, s; L3 G& U, d! b" i% n
  1591. STX PPU_Cur
    5 ]: Z2 K- ~# G. i& ?9 T
  1592. Write_Track_Info_End( U; b0 V3 j, i1 ^# T* t
  1593. RTS
    + e2 Q( K# p9 d9 T. K
  1594. Write_Track_Info_End_Ex
    8 N$ C0 m5 P" A& o8 O5 T
  1595. PLA
    1 t$ ?4 }5 w& T% U
  1596. RTS
    6 l8 [4 @9 @- N  b+ D

  1597. 5 ^6 ^' ^8 z* b; U" ~# z1 x
  1598. Show_Track_Info" K; `) n& j1 l" q1 ^
  1599. Show_Track_Info_Clear' c; e; g* Z. ?( r
  1600. LDA <Music_Last
    ' b+ [* s. ~/ a0 A
  1601. 1 M. T8 h4 @8 {8 `0 o
  1602. JSR Clear_Track_Info
    ; b) _5 l7 g+ Q* E2 N

  1603. 5 b" @3 o2 t# `8 h* `+ [+ L+ j8 R
  1604. LDX <Music_Item_Cur
    + U' X( k7 o: H+ I, V! A) o
  1605. LDA <Music_Cur,X
    ' Q: h9 b" O( Y2 f. J
  1606. JSR Write_Track_Info; J0 s6 ~( |" D4 r9 [
  1607. RTS9 S. C6 ~% A. C, N' A

  1608. " K+ R7 G; Y7 H: |. b
  1609. ;==============================
    : H. d+ o9 e) V( z
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置0 q- o$ Z- F) {8 Y7 T$ A

  1611. . U# h7 F/ E  K- B' t, ?0 [2 w
  1612. ;取出集合名索引
    9 e8 d2 o( i9 j( d, ~4 f# O
  1613. PHA1 d7 ]$ C3 A+ D
  1614. ' t/ u, E! [6 j0 _
  1615. LDA <Music_Item_Cur
    + O  e( ]0 |  W% A1 r
  1616. ASL A, y, ?9 w) ]: ]# e( e: {
  1617. TAY
    2 W: W. n9 s% \& _6 q
  1618. LDA Track_Name_Addr_Port,Y
    4 s; L. a) n" R1 t: L& e/ v
  1619. PHA
    * n0 n6 b; C5 q* K0 U
  1620. INY! H* t) R6 g, m  p% S
  1621. LDA Track_Name_Addr_Port,Y1 n; s4 `: f; X
  1622. STA <Data_H9 p& m# c1 t1 f0 g+ c" H9 K2 v2 i
  1623. PLA
    ) ^4 A4 ]2 W9 C, B$ V% S0 x* n
  1624. STA <Data_L
    $ ^& \5 E/ G& v" Q2 |
  1625. ! C0 T( @( P, x4 m
  1626. PLA3 ~% q) |& {: C  c# T% h6 M3 t
  1627. 5 t8 P/ o) z5 _8 o/ h$ C# M
  1628. ASL A
    5 o) c9 d% ?$ s; V+ O
  1629. TAY$ e" R; ^  ?6 A- r+ b: j
  1630. LDA [Data_L],Y$ n7 y/ f) o  i1 h8 Q6 B7 {8 h3 D2 f
  1631. PHA/ s- ^- s9 u; M* t6 l4 Z; T
  1632. INY
    7 U5 g2 c% x" `3 e4 ?- n7 b1 T6 `3 q, o
  1633. LDA [Data_L],Y' I. H; I2 [4 F. h! R9 m0 j1 i+ b
  1634. STA Data_H
    + a" q" J# @& p2 K! n5 m: K. e
  1635. PLA8 S3 {/ {" i" D. J
  1636. STA Data_L
    ) J7 C- A9 I: n1 o: K

  1637. , V& \- A1 ?, I( K: q/ g/ e
  1638. LDY #$00; D+ P) l0 f7 Q( o" R' _6 ]
  1639. LDA [Data_L],Y
    % o4 ?% ?& Q6 v
  1640. STA <Data_Cnt/ W  r: F/ H  Z( X# g+ S/ u* y
  1641. LDA #$20
    ) P  d3 b1 z* s, A5 `& {5 l8 Z. L
  1642. SEC
    3 u# J7 G: e9 X6 E) U
  1643. SBC <Data_Cnt* [; a9 L8 y( @* z" |
  1644. LSR A& [7 M- u, L; k# Z3 g
  1645. STA <Data_Buf
    6 t, _+ t: g0 i* u( G
  1646. LDA #HIGH(Track_Name_Pos)
    ' }% b7 @' m/ l, A1 `5 i4 P5 J
  1647. STA PPU_Addr,X2 i& w3 g2 |2 S, q+ I' G
  1648. INX2 b, f# h3 l  I% ]9 b* K. G  j. @2 Q
  1649. LDA #LOW(Track_Name_Pos)- b+ M* g8 ^- V
  1650. AND #$E0/ n( T$ H& Z% n# u( N0 w
  1651. CLC; ~3 V1 Z' z. a
  1652. ADC <Data_Buf
    . x3 c3 U0 [  j6 M. ?" s' J$ P
  1653. STA PPU_Addr,X$ ^( W4 j  `. |
  1654. INX+ ?+ O$ t$ O! X8 J
  1655. LDA <Data_Cnt
    * z6 x1 }- B$ I7 l9 H( f
  1656. STA PPU_Addr,X- _2 o. Z: I0 P1 I
  1657. INX
    3 J* G  V( ~" C- S" ^: y2 C
  1658. Show_Get_Pos_Center_End
    0 [* s% v' Z( m' R4 _+ l/ }$ V
  1659. RTS
    3 O$ z4 I: {& J
  1660. .ENDIF( W$ S3 {( r  x% C: H
  1661. . i% }) ]) Z2 j% F# M/ D) V& B* g% c( M
  1662. ;==============================
    $ k8 p/ G5 A4 Z2 h3 n0 ^
  1663. ;音乐端口清除+ b7 {7 R  q1 F. X$ }& Y# X/ r
  1664. Sound_Data_Clear( `2 o8 k$ E% y$ x- H8 @
  1665. JSR Sound_Port_Clear
    # m- \# W, C% O5 l- O/ R; D, v
  1666. JSR Sound_Ram_Clear9 ~# l$ `2 \6 w2 o
  1667. RTS* r' z( o, E6 [

  1668. 8 R6 x8 }8 r6 a" O, f
  1669. ;==============================$ H; D& A7 f$ j' ?2 Y4 H8 @
  1670. ;音乐端口清除
    6 L0 z" Q- V$ N7 t
  1671. Sound_Port_Clear
    $ H3 ?, V4 o+ u% D
  1672. LDA #$00) q1 X/ A8 Q5 S3 E) T- y' G/ H  {2 t: c
  1673. STA APU_STATUS
    8 F' n9 d8 r% ]- E8 T8 O
  1674. LDX #$00" @2 J, W. f0 V% l; G0 v6 X
  1675. Sound_Port_Clear_Write* j) d$ d3 z' a1 y9 o4 n4 T' K
  1676. STA $4000,X1 a6 x$ S& c9 ^
  1677. INX
    2 B% f8 _7 @. y
  1678. CPX #$146 l, `( I% M! T& J* E5 G' G
  1679. BCC Sound_Port_Clear_Write
    & @: H0 v: ?  E/ ^
  1680. RTS
    & b9 Z. i6 L3 g5 e8 W
  1681. 4 P9 [" I" u: x1 ~! d/ |& m
  1682. ;==============================
    ) J5 k9 }/ ]) _6 b$ C" z9 x
  1683. Sound_Ram_Clear;RAM清除8 ?' l+ O. G' P' y- C8 {, P! d* J
  1684. LDX #$00
    % i0 G$ O+ M+ `' b" L+ A
  1685. LDA #$00
    . u* c0 f7 ]! ]0 w4 ^- A
  1686. Sound_Ram_Clear_1& o* B: `! Y" p% |- }1 n
  1687. STA Sound_Ram_Addr_1,X: ^+ B4 ?9 J1 M2 {, C7 M; i
  1688. INX
    ) g0 [3 c' T, N% B9 Y) B" \
  1689. CPX #Sound_Ram_Addr_1_Size
    - n  C5 p& j% L! J. v- K8 u
  1690. BNE Sound_Ram_Clear_10 a0 i) h  z/ {
  1691. LDX #$00- z) J  D. B8 R9 t0 a
  1692. Sound_Ram_Clear_2
    & W2 Q8 U! q: k$ U8 Z
  1693. STA Sound_Ram_Addr_2,X
    ' d  \! K% B' e) ~! X
  1694. INX
    ' j2 g6 k! h! u( }% z, H
  1695. CPX #Sound_Ram_Addr_2_Size& j" J" c. @8 z  _" v7 ~' ?
  1696. BNE Sound_Ram_Clear_2
    4 x* _. A3 [( L8 P) {
  1697. LDX #$00
    ) i+ c$ s3 I1 i. J" ^
  1698. Sound_Ram_Clear_3
    2 [1 e0 ~0 m2 l. B5 o& o* I9 f: \
  1699. STA Sound_Ram_Addr_3,X# [# {9 y2 O9 Q4 U2 c% K# ~  V
  1700. INX
    1 d0 v- |( W5 Q; i
  1701. CPX #Sound_Ram_Addr_3_Size
    8 w& O- m* A3 H4 F" ?- w5 g
  1702. BNE Sound_Ram_Clear_3
    * W# \8 c) Y* O. K6 \& h
  1703. LDX #$00
    ) ^4 J6 g7 `4 T) r; @+ W- Y: f
  1704. Sound_Ram_Clear_41 G+ W+ W( y) R/ Q
  1705. STA Sound_Ram_Addr_4,X' _! v9 D. T8 J5 v, N1 t7 C4 N
  1706. INX
    * N0 d7 x, s/ F( f+ I7 v, a' E3 `! L
  1707. CPX #Sound_Ram_Addr_4_Size' U; m" ]# v& d, E$ Q: k% V/ }$ g
  1708. BNE Sound_Ram_Clear_4% |) z( h/ U5 W4 z
  1709. Sound_Ram_Clear_5
    ; g7 [. U! Y% `2 z
  1710. STA Sound_Ram_Addr_5,X* m. U0 X/ ^7 W$ \) y# }
  1711. INX
    ' Q$ N0 Y0 ^+ |8 E! D! d
  1712. CPX #Sound_Ram_Addr_5_Size
      `1 Q5 N1 m$ k/ D& z4 ]
  1713. BNE Sound_Ram_Clear_5
    * m$ S, U  N5 T) h
  1714. RTS
    5 i( N5 o' D8 f, L7 [# I. T3 j
  1715. ; `) Q& q( ~+ M# G6 g+ a1 b' a; C
  1716. Get_Music_Collection_Name
    # W" y8 O  _3 X1 v
  1717. PHA
    - R1 o( E5 N8 u" @
  1718. LDA <Music_Item_Cur
    % Z7 w' y# T# u
  1719. ASL A, O0 P: a; R( x- Y! D2 G: w' V
  1720. TAY/ c2 n* g9 D: G9 [
  1721. LDA Music_Collection_Name,Y) N. z. t# U6 G0 }5 c" R; _; p5 x
  1722. STA <Data_L9 W: b0 J2 \3 o: e& g8 q# H$ B
  1723. INY- B- i* K- f( ^) f0 m
  1724. LDA Music_Collection_Name,Y( h; W+ W" e. t. e& |
  1725. STA <Data_H
    ; c+ w  n  \5 ~0 ^+ v: F
  1726. PLA$ c! z; w! G* K& p
  1727. RTS, ?; R0 e$ }; v0 A
  1728. ! ]4 f) K, J' r4 k& T5 p
  1729. Set_Sound_Total& \5 i( n3 q$ ~6 X+ G
  1730. LDY <Music_Item_Cur3 k( E. S- _3 [8 ^# [
  1731. LDA Sound_Total_Port,Y+ {3 h! C- F" o* c4 ?; A# B
  1732. SEC
    ) M8 j( m4 v) k( N; j
  1733. SBC #$01
    : b  A% V, t! ]: q: ?, V
  1734. STA <Music_Total0 [0 N) h% W$ p3 r/ x, J9 ~! Y$ G
  1735. RTS
    " e: O3 t7 r' b# f8 g: v
  1736.   {" p) Q" `+ j' S. g2 F8 V
  1737. Get_Sound_Start; T9 a4 i% u4 G8 D" R8 a$ K1 U
  1738. LDY <Music_Item_Cur
    6 Y& D! Z. o1 A6 H
  1739. LDA Sound_Start_Port,Y
    + h5 ~8 z$ k3 I3 k, u8 m8 s
  1740. RTS
    + S! a- z2 E3 t  Q, }, d0 O
  1741. 5 e# s; d! r7 f6 d, @4 b8 S
  1742. Set_Sound_Init_Port* t! g. E5 j& j: Z6 L
  1743. PHA  D  v' v# T( w! b4 S0 K6 n
  1744. LDA #$20
    2 w" B& W1 |' r0 V; ^
  1745. STA <JSR_Addr_Op
    ! I" i5 F; ^$ `+ }- T
  1746. LDA <Music_Item_Cur9 x6 _! }, t1 z  D! [
  1747. ASL A1 i7 O- m6 D( f* i
  1748. TAY
    2 W- p+ J1 Y% ?* ]
  1749. LDA Sound_Init_Port,Y
    # K6 o; s$ L: M# {
  1750. STA <JSR_Addr_L
      l( d2 A2 t; P5 h! G: l2 `1 b
  1751. INY
    7 x  \0 Z4 I% {6 H+ l0 u& {' d
  1752. LDA Sound_Init_Port,Y! ^# ], _0 Q# I3 _" i" s
  1753. STA <JSR_Addr_H& @  ?& G3 B  ^3 W# u% d! g- V
  1754. LDA #$60& z( s8 n- D$ c  q  ~9 Y4 a
  1755. STA <JSR_Addr_Rts
    # U* y+ V" t8 S6 h( b7 |+ I7 C
  1756. PLA/ d( U4 q# s9 C. H. M
  1757. RTS; R) H% y8 T7 P5 }

  1758. ! M& Z+ t' _: p5 G1 f8 u. m
  1759. Set_Sound_Play_Port% A0 C3 c! G: w5 i" K# ?6 c
  1760. PHA
    , R+ L# r# `+ f2 D6 M
  1761. LDA #$20
    . E, f9 G9 F- {. K; }
  1762. STA <JSR_Addr_Op( Z( V* |+ l& h( D9 t0 e
  1763. LDA <Music_Item_Cur- a- @, {: i( {
  1764. ASL A
    7 c, f+ H: J- o7 V/ a
  1765. TAY# ?) g" _% `5 c9 X9 o
  1766. LDA Sound_Play_Port,Y
    & n: h+ Z2 H9 ~/ k( A  }( w8 s
  1767. STA <JSR_Addr_L
    0 B8 I9 T5 F/ w& H, L, c/ x1 O
  1768. INY
    ) G0 }. B& B5 P2 `6 d
  1769. LDA Sound_Play_Port,Y$ K) p& ~, E8 F7 ~+ \& O& r# I
  1770. STA <JSR_Addr_H
    . Y9 H  P# q! ~. i  L
  1771. LDA #$60
    0 Q: u, M) J$ t& H, Y( H7 F2 P
  1772. STA <JSR_Addr_Rts
    7 b& v, K+ _: Y3 `9 i" n, v: m' i
  1773. PLA
    : F( b, D, x  a, K9 m  N) J
  1774. RTS
    ! G- @4 E* R. \+ r
  1775. ' S5 }) r0 U' b1 b9 U
  1776. Set_Sound_Reset_Port0 _! K. x: w+ J  X) z
  1777. PHA
    2 f; g2 ]+ E  z3 w
  1778. LDA #$20
    5 j  z. A0 G6 R; L1 ?& v
  1779. STA <JSR_Addr_Op) W- U5 ?8 ^0 {& d4 \7 l( b9 m! D
  1780. LDA <Music_Item_Cur# J( I# S: T) _- s
  1781. ASL A
    $ O" I( f3 |" Q4 B
  1782. TAY
    % \1 c! m/ p+ P4 g
  1783. LDA Sound_Reset_Port,Y
    . \/ L# U/ U% Z
  1784. STA <JSR_Addr_L
    $ U1 i+ M. i* B
  1785. INY, g5 Q& P8 ?0 A4 s: V. z
  1786. LDA Sound_Reset_Port,Y
    9 S9 T- ~1 S  F2 Z
  1787. STA <JSR_Addr_H
    1 c, U% w9 G9 M0 @% X8 \7 _
  1788. LDA #$60
    " }/ g5 k$ c  Q
  1789. STA <JSR_Addr_Rts
    " B; a4 ?& a6 m5 w6 ?5 A
  1790. PLA; l& P2 S7 a- l' X( I3 t1 H
  1791. RTS
    ) y' q  M9 C3 I

  1792. / I# G$ }0 k4 I: d
  1793. ;初始化音乐bank
    # _$ c. |2 C7 L
  1794. Init_Sound_Bank
    + k' J( K; O; K1 m
  1795. LDY <Music_Item_Cur  n& a9 M2 q  m- p! m# D
  1796. LDA Sound_Bank_8000,Y
    # a1 b5 {0 l) A! Q1 k  v
  1797. STA <Music_Bank_8000
    % j1 O; A4 g* O0 _( m
  1798. LDY <Music_Item_Cur
    ; f8 B% J( @3 r1 p$ M
  1799. LDA Sound_Bank_A000,Y6 p, \1 L' R2 T- j: N' I# r# C
  1800. STA <Music_Bank_A000( V: f& C- l* v5 y  H3 y) Y. R" R
  1801. RTS
    : A2 {4 |/ Q- x2 e
  1802. ! N/ l5 E5 F1 }6 B" r; P6 H2 e0 V
  1803. ;==================================================! {4 n( L5 f! K( l8 {7 A
  1804. Sound_State_Reset;音乐状态重置2 o( P( c% X( |  A9 I+ _
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    9 x3 {! R6 O1 o( ?. `  C
  1806. JSR Time_ReSet             ;重置播放时间$ X$ A! X! o; b/ E, @
  1807. - r/ X3 b; X" A
  1808. LDA #$00
      z$ Q/ ~1 U$ N7 n& b: i6 ]+ N
  1809. STA <Music_Stop_State9 d. p: k# V: H
  1810. JSR Music_State_Show       ;显示播放状态
    " W4 a/ |' D  f1 o9 ~

  1811. 3 N5 }3 I/ j. O7 u, S- o) A- y
  1812. .IF Track_Name_Pos
    " Z2 Z# x* ~( r9 `
  1813. JSR Show_Track_Info        ;音乐曲目名显示- ]) K( t: w! v& d* \* i0 i" \
  1814. .ENDIF" y. R" w8 ~: A- z& @% X! s: i

  1815. + ?0 w$ R2 h. w& ]. g  H
  1816. RTS* A$ h5 b7 I5 U7 c& m
  1817. : e( A" T. ]; z: c9 ^) _. L
  1818. ;==================================================+ f# y% p4 ?- G! i/ ?* V+ i# X' _
  1819. Sound_Init_Proc;音乐初始化处理
    ' _* X; ~3 C% d1 Y1 b
  1820. PHA" v7 J$ y7 G" g, @+ M
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    3 d: a+ B- |! i8 K/ x' k# I, |2 ^
  1822. LDA #$00' |. {! j) G0 E( m: Q. h  F
  1823. STA <Scroll_H               ;重设水平滚动
    1 `9 M# g4 |5 g1 J; z( q' A
  1824. LDA #$0F
    ' F1 a8 a/ O0 t* x
  1825. STA APU_STATUS' k7 \6 n) c  N5 N
  1826. PLA
    . s! k$ B; q0 C1 r; M
  1827. JSR Sound_Init             ;音乐初始化
    : ~& W; X* y& u; ^% S' W
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    2 z+ V3 t" I, V/ A
  1829. RTS
    # V+ E; l4 Q" x1 E
  1830. % D! q# y: B+ L$ o3 a
  1831. ;==================================================
    4 P* H4 {- ]2 C" t& D, z
  1832. Sound_Play_Proc;音乐播放处理
    + K/ r/ J' c  G$ h9 O
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址! f  U( w; D/ V+ E- r2 l" q
  1834. JSR Sound_Play             ;音乐播放
    6 q9 i6 `1 f% V8 ?: u" {2 ]0 y! i# w
  1835. RTS* S/ a5 ]( q0 b' ?: B' g
  1836. $ n: P4 q& v8 R* W4 z, L% `/ I
  1837. ;==================================================
    / ~# b% ~  L  ~9 {2 Z
  1838. Sound_Reset_Proc;音乐重置处理" ?+ K5 \- T' t) z! E( g& G4 h
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址8 A( M& D) `% t+ _) c# B$ J9 u
  1840. LDA <JSR_Addr_L
    % d7 J' e: q0 A% I  W  k
  1841. ORA <JSR_Addr_H+ L$ f3 {/ K& w( ~: N/ n5 p$ _
  1842. BEQ Sound_Reset_Proc_Default1 \9 D. z& k0 f+ z6 l& b
  1843. JSR Sound_Reset            ;执行音乐重置+ Q' e, o. w7 q% n2 I7 b
  1844. JMP Sound_Reset_Proc_Init_Sound
    , _+ b+ V! l9 R  O
  1845. 3 `* U% j1 P+ E1 ^3 m. o
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    1 e. Q+ _1 X% J
  1847. + a; z  B% K5 I2 ^6 G5 d% ]" g
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断& e8 N; G8 }+ s
  1849. LDA #$00
    7 Z$ h: e' w# n1 I
  1850. STA PPU_CTRL
    8 [/ e9 {- ]- X4 Y; m

  1851. % S" r- V  y# X# {! Q; a% @
  1852. JSR Sound_Data_Clear
    $ e3 p* K& z6 _. d  D! ]1 d
  1853. 6 N9 x4 q5 G5 E; A8 s2 m
  1854. Sound_Reset_Proc_Default_Wait
    . T4 ]. V- `# x* S+ ^2 J
  1855. LDA PPU_STATUS  C) K- u% N/ S+ c7 |0 e8 j
  1856. BPL Sound_Reset_Proc_Default_Wait
    7 f8 H( s# J1 \5 ?5 ?4 l' N
  1857. ' u! t0 V3 O3 p/ y  y: c
  1858. LDA #$00
    % v3 o& }4 S- _+ C' l. n2 {8 q& `
  1859. STA PPU_ADDRESS2 D  R1 E8 ?: t! w2 d) `: e* g# m' G( Z7 V
  1860. STA PPU_ADDRESS
    * a7 k* m  n0 ^+ m- K7 ?" B' G
  1861. STA PPU_SCROLL& i. _5 Y- T6 u- a$ ?
  1862. STA PPU_SCROLL' u1 e0 D4 ^- B

  1863. 7 [1 M9 {6 b+ m. U$ B: e3 w
  1864. ;恢复PPU控制
      E7 ]/ r( D9 ?* U
  1865. LDA Screen_Ctrl8 Q, s( P$ v$ C* F! v
  1866. STA PPU_CTRL
    ' \  _, G/ C* L4 M! V3 r
  1867. * a( Y& o. t/ R  H5 E4 g
  1868. Sound_Reset_Proc_Init_Sound
    - |4 n, E7 [& K2 P( ?
  1869. LDA <Music_Stop_State
    2 M  q3 @6 m5 F2 Q6 O! U
  1870. BNE Sound_Reset_Proc_End
    ) R2 ~* A3 S, @. ^6 o/ M5 B" @4 R2 D
  1871. LDX <Music_Item_Cur1 [% v3 a  x: {" J% n1 I7 S
  1872. LDA <Music_Cur,X* e# e% e( `  n; e* Z/ I
  1873. JSR Sound_Init_Proc  E. K5 J: w% k+ R
  1874. Sound_Reset_Proc_End" J& o1 s* h* z5 {: x
  1875. RTS& ~# D- D$ y7 A$ o& N
  1876. ; s% V. ^# V# s  _
  1877. ;==================================================! D) B5 G8 p! y
  1878. Clear_Item_Text;清除页项目
    , y4 `& \% L7 O" C
  1879. LDX PPU_Cur0 }! M6 X3 M* Z6 H% c
  1880. LDA #PPU_MODE_CNT_CLEAR$ z# ^, \- P" x0 {8 K8 Z, c% @% M
  1881. STA PPU_Addr,X
      f( j! F( y' P3 ?) H' `
  1882. INX
    - h* b$ v9 B1 T% D2 g' _

  1883. ! m9 _" S5 l' t% r
  1884. LDA <Page_Last
    ! r; U* x; T3 b: ~" ?' s8 i
  1885. SEC
    6 h5 b3 T5 u0 y# V
  1886. SBC <Page_Last_Index
    6 F- w& Y# \9 {$ r
  1887. ASL A
    7 i3 _/ V, l/ u0 E+ ~  ?

  1888. / ?1 q' R' E8 o# ~; p" w
  1889. TAY$ N6 U( V# s% T0 ], L' A) X
  1890. LDA Item_Pos_Data,Y
    0 R' U+ ~2 q% ~* \  E# h! l; a# R9 [
  1891. PHA
    0 F. B- q# o& x- f" l
  1892. INY2 ]1 z) w$ l, Y0 ?
  1893. LDA Item_Pos_Data,Y* M' ^8 X: B9 o% T+ ?' d
  1894. STA PPU_Addr,X
    ; @, ~- b1 o" W- H3 v
  1895. INX
    # A4 D" y* ?5 c* u1 k( M
  1896. PLA
    9 s; I* g- j! n; |' v1 s) V
  1897. STA PPU_Addr,X( c+ \2 I/ R: r# z1 V9 h3 g
  1898. INX0 j5 y( e# z, O
  1899. ' M' U) X- V% k7 E; x
  1900. LDA <Page_Last
    & a+ R. Q  P* R8 Q
  1901. ASL A
    , D" l! {( x4 C3 Q/ l; a: W
  1902. TAY; ~: G4 C, k) K, Z
  1903. LDA Music_Collection_Name,Y
    ) X$ f' w* _3 r+ M
  1904. STA <Data_L
    3 P# r7 B& n( q8 g" T
  1905. INY
    # g! R6 r( V# ]8 q2 K" t1 u! t8 [
  1906. LDA Music_Collection_Name,Y
    - |$ \2 g& V6 V, v9 o, H$ b
  1907. STA <Data_H
    ! |- m! e6 e& {2 g
  1908. 4 K5 L# U/ U! ~) g9 o
  1909. LDY #$00
    ! E8 D' N& Z( m/ E9 l7 ]
  1910. LDA [Data_L],Y, @8 k2 b) c( ], f" g- f
  1911. STA PPU_Addr,X) _+ p, T& U. L- Q; g) s4 {
  1912. INX
    ( r$ i( c' k9 r# W0 L6 a/ R8 ^) {5 P
  1913. Clear_Item_Text_End
    # Z! v8 \) j7 w( k
  1914. STX PPU_Cur
    6 U5 b' F" D2 M% t1 M# R8 Y" S$ g
  1915. RTS6 B' T" j* J# d% b/ T

  1916. / j4 R# d( j' U
  1917. ;==================================================, n) O% j1 v. [1 m1 Y- y
  1918. Show_Item_Text;显示页项目3 ~, E3 _2 {! n  j) ?+ }
  1919. LDX PPU_Cur( l- F% R) {& F
  1920. LDA #PPU_MODE_CNT_LINE
    / A9 `; C( f/ z; J; r) V) h$ \
  1921. STA PPU_Addr,X9 @. u$ P* j* t$ I$ \8 v
  1922. INX9 E8 E% y( ]+ A
  1923. LDA Page_Cur4 q( q: d% p* p, g
  1924. SEC
    2 y4 Y  ?. H8 x8 f( C( K- c
  1925. SBC <Page_Cur_Index
    / |( b' h9 M, u! m( r( h$ C
  1926. ASL A
    : j$ H. S. }/ \$ p0 l3 X0 t) j. a% l
  1927. TAY
    6 |6 r6 {+ L8 b; t3 w+ o7 {' E
  1928. LDA Item_Pos_Data,Y0 g- ]% P# e: R4 a/ [
  1929. PHA
    7 a7 B$ q% v/ y# a/ B
  1930. INY$ j4 G$ r. L5 o* J! }' Q9 n
  1931. LDA Item_Pos_Data,Y+ s# J; b2 _' t1 F2 s! j7 X
  1932. STA PPU_Addr,X
    2 z3 H6 L3 }* S+ h$ V
  1933. INX
    3 s# l  ^+ \- Y& X, n( K  }$ J
  1934. PLA
    ! ~& |% F- d6 G! x
  1935. STA PPU_Addr,X: g* X# j/ V. V3 u5 N' r: n; u
  1936. INX
    ) D; b+ S+ B2 \. P5 A$ T" q
  1937. ( T/ T0 W) [) Q- s* P
  1938. LDA Page_Cur
    # f, ?! M; i# ]. m9 o) T- H0 A  r! u
  1939. ASL A6 i5 {4 i- v& u) u/ a& f
  1940. TAY
    $ U. a# G' @& B: B$ K" u% L9 p
  1941. LDA Music_Collection_Name,Y
    + T4 M% N- X  c( M/ W
  1942. STA <Data_L
    3 q, ]1 s5 ]( \2 h- H% r# y
  1943. INY
      R- ?6 j$ n" Q; m! o) H
  1944. LDA Music_Collection_Name,Y' j/ a1 K# ]9 i, |' N" a3 _
  1945. STA <Data_H) \: Q8 R- @$ @, n' Y/ R6 p

  1946. 4 n$ j: j; w- @6 P* l( |6 _
  1947. LDY #$00) Y3 p" B( q# @
  1948. LDA [Data_L],Y& ^9 ]- ?$ ^! ]/ V( b8 m/ N
  1949. STA PPU_Addr,X
    / Q4 S" O3 p8 x+ l5 _
  1950. STA Data_Cnt
      F3 B3 }/ j* [* @* s
  1951. INX& k: F/ S2 L+ n6 r0 s( P. _" v6 K5 z
  1952. 6 C! i8 a7 ^; c& Q' e. o
  1953. INY0 I# v5 j7 g4 E3 |8 o! o
  1954. Show_Item_Text_Write, {' k+ ~4 x5 H) ^7 t. x$ X$ ]- O
  1955. LDA [Data_L],Y
    6 h1 d) K3 t  ^8 {
  1956. STA PPU_Addr,X
    * G6 ]! @! w  R2 {5 _, I
  1957. INY
    : {  q/ H" ]6 c2 Y
  1958. INX
    ; T* s0 Y  B5 s) F) U# C
  1959. DEC Data_Cnt
    " D3 ?4 N6 r) Q/ \% @- ]6 L! Y
  1960. BNE Show_Item_Text_Write/ {9 c6 g# G3 N( g* s+ Z

  1961. + ?$ y8 }* d& B6 f" B: W
  1962. Show_Item_Text_End/ R& ]2 c4 }+ u+ A2 a8 h' Z' x; W' S
  1963. STX PPU_Cur0 {6 s1 Q' P& T# Q
  1964. RTS
    ( n0 V! ?4 W- s+ {  }" C

  1965. , _/ R) r* L7 q3 B+ l
  1966. ;==================================================
    8 r9 {* `7 B7 H  V" o; `
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量8 z! |. N+ G) U4 {' x  `% M
  1968. STA <Data_Buf+ E, D( z3 C' F* \% n/ {
  1969. LDA #$00
    5 m3 j/ x3 X4 p* }! V
  1970. Get_Page_Index_Calc# {0 G- c  U! F" V
  1971. CLC
    * c3 c0 p8 U: G4 T4 Y
  1972. ADC #PAGE_SIZE
    ( J+ w1 _( w9 Q  L, i4 O
  1973. CMP <Data_Buf
    . y0 O5 t% `: L1 [
  1974. BCC Get_Page_Index_Calc
    1 h0 R0 n4 _6 G$ I. y/ {5 S- |' f" D
  1975. BEQ Get_Page_Index_Calc_End
    % Q8 w6 M+ X( U8 [
  1976. SEC) D& a7 Q; x! U2 |8 P7 z% E
  1977. SBC #PAGE_SIZE
    . N. d* t7 a5 O; t4 s, i  e- V/ H
  1978. Get_Page_Index_Calc_End
    & f/ N6 {. _: x6 |. \
  1979. STA <Data_Buf) v, p- {& z$ Z
  1980. Get_Page_Index_Cnt
    7 F& O1 R0 I# u
  1981. LDA #PAGE_SIZE' X: V; {0 u& @, m  u" B
  1982. STA Data_Cnt
    + {( D5 N6 @' @/ E

  1983. . o- @: S- r& [2 [( w6 B  D4 G
  1984. LDA <Data_Buf
    ) o0 `9 ~1 I$ f
  1985. CLC( I; F( X+ H/ c7 J( R6 q
  1986. ADC #PAGE_SIZE
    " N3 j7 F0 F' e
  1987. CMP #ITEM_MAX_SIZE8 R  `* y. M* M
  1988. BCC Get_Page_Index_Cnt_End+ B  E3 f0 o$ a+ w' F  g
  1989. 1 Z) w0 n5 P  k) D' t
  1990. LDA #ITEM_MAX_SIZE
    + |$ e3 T/ ~& z6 b, ^' D) @
  1991. SEC: x& p; }% D  q& w6 h
  1992. SBC <Data_Buf
    * p; f3 p  e3 M$ S- T
  1993. STA <Data_Cnt
    ( r! j6 J5 c8 E
  1994. ; W4 |' y2 h6 ^! E; L( O, x2 D
  1995. Get_Page_Index_Cnt_End3 g' f8 ~: B" D
  1996. RTS
    " @* l5 e  ?! p2 ?2 `1 a

  1997. + @7 L! h$ ^* t3 W
  1998. ;==================================================& W2 q( H7 T- y# @! l  Z
  1999. Get_Last_Page_Start_Index( c6 h$ l5 y* B! j- T
  2000. LDA <Music_Item_Last
    6 Q+ p& T- J# H( M5 G
  2001. JSR Get_Page_Start_Index2 N6 X; v2 I0 Z* Y# v7 p
  2002. LDA Data_Buf+ Y& v; q9 c0 a4 `% ]6 K
  2003. STA Page_Last
    : R/ Q- ?) v# R, d
  2004. STA Page_Last_Index) p% u' Y' [# c3 x* M/ B$ u% |
  2005. LDA Data_Cnt2 _) ~- x" |( o6 z( X
  2006. STA Page_Last_Cnt
    8 ]) |# o' v* R1 Y8 U
  2007. RTS+ ^8 O2 Q5 i: f3 k+ |
  2008. * _' m4 k  C* d  H9 i' M3 B" x4 N! b
  2009. ;==================================================% q2 Z3 h& r/ [7 J( m) K
  2010. Get_Cur_Page_Start_Index0 z+ t. t6 X$ m: @+ p  d( r
  2011. LDA <Music_Item_Cur
    9 K" S# l- A$ T( Y7 N
  2012. JSR Get_Page_Start_Index( v% m' E" D! T
  2013. LDA Data_Buf
    7 C+ F& ~; Q& D
  2014. STA Page_Cur3 [) [; K* p/ k8 S4 ?2 S
  2015. STA Page_Cur_Index
    ( K- v+ e3 v7 E  n; p
  2016. LDA Data_Cnt
    6 L. D; [& w; c
  2017. STA Page_Cur_Cnt
    2 P; S" w9 s# K; t* \
  2018. RTS$ t- Y# w+ p6 y; W+ S4 z
  2019. 3 h8 m6 R* b& M2 l
  2020. ;==================================================7 z7 {3 l  {$ y1 z
  2021. Show_Page_Text;显示页文本2 S! r. j- z7 c" Q9 I5 H
  2022. LDA <Text_Disable_Flag
    : y  Z' T, z/ U/ Z# l- y, ~
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    1 ~, @0 T1 _3 C: i8 q' Z. u. f# G
  2024. STA <Text_Disable_Flag9 w. O0 }/ `; }3 R( Q* W  @  l
  2025. 9 `8 j5 L1 P- J; ~  P
  2026. JSR Get_Last_Page_Start_Index
    * _6 O4 W9 k; V' l
  2027. JSR Get_Cur_Page_Start_Index/ {$ m/ ^1 f$ C7 R0 i) _7 y' u
  2028. 6 v2 E* n" c4 w5 H  g$ ?
  2029. Show_Page_Text_Set
    & q% r8 A7 @/ X# ^, Q+ j! c; U
  2030. : m" n2 i# o2 B" R' a" g  T
  2031. Clear_Page_Last_Item;清理上一页
    . t8 D6 i( ^4 h
  2032. LDA Page_Last_Cnt, D" o3 h5 ~  S, G2 M9 U
  2033. BEQ Clear_Page_Last_Item_End" [2 W% u2 s' T
  2034. JSR Clear_Item_Text
    5 C+ C  [& o1 j) |( P, y
  2035. INC Page_Last
    & c% S$ [/ x* G/ i
  2036. DEC Page_Last_Cnt
    & S8 t4 x' P$ c, G
  2037. Clear_Page_Last_Item_End1 D5 ~' x7 C7 ?  E0 {
  2038. / k& }3 F! y% \4 R
  2039. Show_Page_Cur_Item;显示当前页
    3 T- K8 N4 A% K
  2040. LDA Page_Cur_Cnt
    4 ]9 Z/ [, a$ r! {  M0 v
  2041. BEQ Show_Page_Cur_Item_End
    2 R( Z: h3 ]# _" q( e) X
  2042. JSR Show_Item_Text7 ^9 S! i! o2 P' N) ?* N
  2043. INC Page_Cur
    7 u! @# Q+ \' K
  2044. DEC Page_Cur_Cnt
    8 C- G+ Z( L, V, c
  2045. Show_Page_Cur_Item_End6 s1 k- ?( Q/ Y( |" t& M6 q% J( V
  2046. 7 W7 c* t( C: m: h+ W
  2047. INC <Time_Wait_Cnt
    2 J" |8 D. P8 c8 c! t, M0 N& P
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作" S$ l' J4 g4 b0 c! m
  2049. LDA <Time_Wait_Cnt9 Q7 _# Y" ]/ U7 h; [
  2050. BNE Show_Page_Text_Set_Wait
    ) ~# i3 J7 {0 Q5 V' U, d# P

  2051. # t( ?% k* R$ X7 u2 \. `1 b) s& Y
  2052. LDA Page_Last_Cnt  G' i% x- f  D) b0 N/ u
  2053. ORA Page_Cur_Cnt  L& m* q1 x' L! B; v
  2054. BNE Show_Page_Text_Set9 Z8 O  ?4 i( p4 P% W
  2055. LDA <Text_Disable_Flag
    / ]4 R2 U2 Y3 P3 I( g2 f
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
      m: K: O# h' j! l: g7 y2 F
  2057. STA <Text_Disable_Flag9 h& U6 d" u: c) d  Z( [1 I
  2058. RTS
    * n! y* ]- U' E# ]. B$ V! U1 K* V

  2059. ! N. O$ R  M5 n5 W" N5 q- ~
  2060. ;==================================================
    # D) F$ I( N5 l: j& i/ m/ n
  2061. Last_Item;上一项. t6 ~% `1 n; [5 T# ^) t; @
  2062. JSR Clear_Last_Track_Name
    4 m$ ~" w2 U. P
  2063. JSR Disable_Text_Draw/ B% w2 Q% c' g0 r* a* S% ?

  2064. ' ], `. a6 i4 O7 ]& D
  2065. LDA <Music_Item_Cur
    / u$ _# l5 u6 w- p5 l" S) p
  2066. STA <Music_Item_Last9 p! n. T! w6 f2 Y0 o' h
  2067. # b0 u' a5 o  h) ~) D6 Q" M  v
  2068. JSR Get_Last_Page_Start_Index% _8 }# \+ E3 [; O

  2069. . A; G- @4 o% p# U1 S
  2070. LDA #$00, {" v9 H, W, q) N' t
  2071. STA Data_Buf
    8 {: R% ~' Z8 E

  2072. . c2 b. O+ x1 d2 U8 Y# K  l
  2073. LDA <Page_Last1 b+ m/ A% _6 h. d1 j; t0 v' R
  2074. CMP <Music_Item_Cur
    , s8 G' ?" i4 A: ~
  2075. BNE Last_Item_Begin
    2 Q9 E& t/ Y, T) A$ u  k; C0 r$ {

  2076. - }1 t0 `* l3 y/ D4 {
  2077. LDA #$01
    ! ~# d1 M9 }+ t
  2078. STA Data_Buf' V+ ?2 C2 w! C1 z# i1 w' i( L' r
  2079. Last_Item_Begin
    ! J9 q+ a0 ~0 A, I" b: b0 W
  2080. LDA <Music_Item_Cur
    1 \7 ]  A* _. y6 k
  2081. BNE Last_Item_Set
    0 [* U$ P) Q( o
  2082. LDA #ITEM_MAX_INDEX + 1
    : S2 W. @9 W" @
  2083. STA <Music_Item_Cur
    : d( P* o  n9 w/ J4 o% r

  2084.   v: |8 S6 L3 R) m: X8 \( Z3 v3 F
  2085. Last_Item_Set1 m7 Z& c8 g4 I2 J7 G) x5 `$ B5 u' J* ^
  2086. DEC <Music_Item_Cur$ P) H2 [" C6 E6 A
  2087. LDA <Music_Item_Cur
    9 A( u9 _/ x% }
  2088. JSR Reset_Current_Music8 W, A$ w: a3 E( S* \& T! V3 D
  2089. ; L! o- I5 _8 I0 G% ~& v9 u, ?/ g
  2090. Last_Item_Play
    ( A5 Y8 k8 u5 u2 W: X
  2091. LDA Data_Buf. `) F! \3 A& U2 b6 V
  2092. BEQ Last_Item_End
    & H2 w0 B! p2 d
  2093. JSR Show_Page_Text
    & K9 k+ F- }5 E4 N* o. }6 g
  2094. Last_Item_End  }8 o  w$ K& f* q6 i9 Z
  2095. RTS
    3 m. j% Q1 I% s# F* J
  2096. ; c! _" u7 x4 C6 T+ _% A1 h  y
  2097. ;==================================================
    " g; g* x: H) j! l4 }
  2098. Next_Item;下一项$ j( m" u; r( \
  2099. JSR Clear_Last_Track_Name
    3 g: E; p1 J% P
  2100. JSR Disable_Text_Draw
    + i$ d: U0 j8 _$ B

  2101. 8 V# S3 y, S$ F  o
  2102. LDA <Music_Item_Cur
    & v8 P* a$ m7 B) i6 I1 r- U
  2103. STA <Music_Item_Last
    + I* g, ~$ Q8 I# u; i3 |  C
  2104. 6 I" O$ ^  j3 j' G' O/ R
  2105. JSR Get_Last_Page_Start_Index
    # n. j3 F0 I% ^# r) M" u' _

  2106. ( U6 O4 S- F( ?( O
  2107. LDA #$001 z6 E8 I* i9 E2 B* W" D: a* c# W. ]
  2108. STA Data_Buf, h9 |# b/ l$ K4 H! L# m
  2109. 8 V. A# P: [7 z' K" z; p, ~  c
  2110. LDA <Page_Last6 y9 E2 i. e/ x( |: F
  2111. CLC
    9 |0 K; I  x8 U; S; x
  2112. ADC <Page_Last_Cnt
    7 Y4 G7 p8 u* B
  2113. SEC3 M8 j8 `; E  P5 H& s* j+ W3 S
  2114. SBC #$01
    / `# a6 g% h; o1 O
  2115. CMP <Music_Item_Cur
    9 v1 H  s* l! }+ x8 `) c; N+ n
  2116. BNE Next_Item_Begin
    & p6 C/ c$ N$ ]* ]
  2117. 6 g3 S0 X9 ~0 V! U: D
  2118. LDA #$01
    % K) @2 F) f- E( p' f3 }
  2119. STA Data_Buf
    : k' [& U% G2 P! Y
  2120. Next_Item_Begin9 A  E* S2 x4 r: ]- j4 z: f
  2121. LDA <Music_Item_Cur
    3 O4 h$ g6 t/ p
  2122. CMP #ITEM_MAX_INDEX, C/ {7 r2 M  K% E3 \: w
  2123. BCC Next_Item_Set
    2 e1 e( k& m$ o/ f- D3 N4 L
  2124. LDA #$FF, A( _+ B& U- v4 ?) ~
  2125. STA <Music_Item_Cur3 g) M- X7 D4 |, U( Z
  2126. Next_Item_Set
    ( D4 B. M, r$ a8 Y) G8 I/ f
  2127. INC <Music_Item_Cur& o4 l  O8 E& d' e
  2128. LDA <Music_Item_Cur
    2 q3 \; g! S* D! c) a" l: j
  2129. LDA <Music_Item_Cur. w! a! Q' k1 K, F! q0 ?+ M
  2130. JSR Reset_Current_Music
    * S" E* \5 o# i
  2131. Next_Item_Play' i0 |3 h  @9 |
  2132. LDA Data_Buf% r& O7 K2 d: z
  2133. BEQ Next_Item_End0 S- Z) y" E6 H3 {8 }% v6 E
  2134. JSR Show_Page_Text
    1 M: q5 t$ I- X# |0 H" m$ h. }0 J
  2135. Next_Item_End
    5 J& X+ q* y3 I. ~; e
  2136. RTS
    ( n" _: o! }: G3 c
  2137. : V, D' w6 n6 J# v
  2138. ;==================================================0 y, T2 S$ y1 e0 v: o' h
  2139. Last_Page;上一页4 y- x6 K' ^2 X
  2140. RTS9 ?4 t+ K/ h! c$ t1 b
  2141. ( t. F3 y! t8 B6 }: o7 u. V& b6 z
  2142. ;==================================================
    * k- c* c' y. \1 H
  2143. Next_Page;下一页" c; B+ {# }3 q8 j) Z/ L+ E
  2144. LDA #PAGE_MAX_INDEX5 o: n* I' X* S; N% U' `8 t
  2145. CMP #$01
    # V; |% T8 D3 b  R4 X; N& ?
  2146. BEQ Next_Page_End
    ; V' M+ b/ I# m$ u$ u- e/ l  |; c
  2147. 8 C* ~  g- d% _- E
  2148. LDA <Music_Item_Cur
    $ \4 C7 E' m% Q: S! h
  2149. STA <Music_Item_Last
    0 p3 u. }1 o( K6 a1 i, Y, J0 l) q! l" f

  2150. 3 j  Z& q' P9 W* e
  2151. JSR Get_Last_Page_Start_Index
    8 H- g( T- Y+ t% d+ i2 `

  2152. : y6 `) A0 M8 z
  2153. LDA <Page_Last_Index
    3 @- r# c% q6 [8 h! t5 `
  2154. CMP #PAGE_MAX_INDEX$ F" q" O* N/ h) R* c* d7 W# q
  2155. BCS Next_Page_In_End_Page
    ( U; Y" @$ S; p" T

  2156. / ~) L& ~. x, j$ X3 x
  2157. Next_Page_Not_End_Page;不是在最后一页# e* G; c; o$ x
  2158. LDA <Music_Item_Cur' f6 I& [$ Q2 z% S/ ?& Q
  2159. CLC0 X* ?% T& `8 c6 V6 X
  2160. ADC #PAGE_SIZE, G! x) K% W3 }( M
  2161. CMP #ITEM_MAX_SIZE, a0 v6 Z. e- Y* G) A& h9 _! z
  2162. BCC Next_Page_Not_End_Page_Less
    0 m! y# o' y% h- I! N; |
  2163. LDA <Music_Item_Cur
    $ [8 B* q$ y) A% h
  2164. SEC
    7 h! X8 c0 J1 l
  2165. SBC <Page_Last_Index/ G: k3 P5 q% h3 X" c. ^
  2166. CLC) d5 \2 q- a* d7 r3 n( o
  2167. ADC #PAGE_MAX_INDEX
    * t( T" W0 C/ _7 M% a; E$ m* b
  2168. CMP #ITEM_MAX_SIZE" o1 O: d$ z- H" {) |
  2169. BCC Next_Page_Not_End_Page_Less4 y. A: X* X6 g/ e* F. ]) e
  2170. LDA #ITEM_MAX_INDEX
    * h0 p5 ~7 S+ j  x9 x
  2171. Next_Page_Not_End_Page_Less5 r( n7 n6 {) ]
  2172. STA <Music_Item_Cur
    7 O% p/ s) b  a% Q
  2173. JMP Next_Page_Reset7 \% c) f( ^0 _# V7 y7 N6 O' N
  2174. ' T. Q4 \1 z6 h6 g9 r9 D" A+ }
  2175. Next_Page_In_End_Page;在最后一页
    ' Z: l; o* y( y
  2176. LDA <Music_Item_Cur5 b# s; V/ X3 S) |5 q/ |. C, }
  2177. SEC7 X: W7 m! \) C
  2178. SBC <Page_Last_Index$ a; c- F" X9 t$ H: J* _2 X! F
  2179. STA <Music_Item_Cur
    2 b1 ^  e2 ]6 x' y

  2180. * E; k- B$ l' J3 F
  2181. Next_Page_Reset/ ]  y$ b, F- d+ z) W2 V% A
  2182. LDA <Music_Item_Cur! m! N1 @7 @" x- F+ ^* O5 U* |( G
  2183. JSR Reset_Current_Music1 M# E3 o2 y4 x. o6 b# c
  2184. JSR Show_Page_Text7 u' `3 b# @5 B
  2185. Next_Page_End
    ! A6 O0 ~1 M/ L( _! N9 n7 G
  2186. RTS& z$ `. W4 x& W# U

  2187. 3 [. ], o$ Z" r1 A
  2188. ;==================================================
    ) Q0 W* g# L/ l# T- K
  2189. Disable_Text_Draw;禁用音乐条刷新- C3 L9 o7 L* y  J
  2190. LDA <Text_Disable_Flag- F* V9 F) K. B$ x5 N" G7 f. a
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ; S7 F5 K% q+ U) L
  2192. STA <Text_Disable_Flag
    3 U4 B% |; q! z% y
  2193. RTS
    ( e6 |$ w4 h: M, q, |  O
  2194. 7 \* O- F( j+ L& m& D4 ^3 h
  2195. ;==================================================
    % g* A7 _4 B6 t0 P
  2196. Clear_Last_Track_Name;清除上次曲目名# Z' c* d' [" n4 M# B$ p& |
  2197. LDX <Music_Item_Cur
    ! Y5 \! }5 y$ o. M
  2198. LDA <Music_Cur,X1 R; u6 t% m# ~9 V. h4 t* L
  2199. .IF Track_Name_Pos
    * @# F( |4 w6 ?1 {8 U7 _
  2200. JSR Clear_Track_Info
    + D- B9 [3 p( c. ?5 }/ `
  2201. .ENDIF& e; j$ p# `9 G4 F
  2202. RTS4 {& v0 A) }5 T4 C+ f3 V
  2203. 4 C  d# f# A+ V1 m: Q8 \9 _! v
  2204. ;==================================================) v0 w4 a# R3 S; `" W$ N' F
  2205. Reset_Current_Music;重设当前曲目
    " X+ f# B( i9 d  u0 ?& r

  2206. & Q& u# i" g; ]- m% w  v/ h
  2207. ;写入当前总曲目
    ; U4 f2 I. t( G5 ^" a) @
  2208. JSR Set_Sound_Total
    , w( o; O4 d" n) n
  2209. LDX <Music_Item_Cur% f5 r( n; p' z: X3 H  c- }

  2210. # v4 P; U5 w  b6 c7 T
  2211. LDA #$00! v6 Z  r+ ^  g' S; X! s( s
  2212. STA <Music_Last
    2 q" g7 X2 I$ |. f4 M
  2213. $ z8 M, @  P2 l, m" e+ Q( w
  2214. JSR Sound_Reset_Proc
    - _% V: E  D* V7 t* U( Q6 e" ?) q
  2215. JSR Music_Show$ a% K( N+ P# z1 [! G0 y
  2216. RTS
    . K; t" H( }% W/ m$ c" g  `

  2217. 2 q2 x4 x: d: m6 o7 t8 w" j0 M& E
  2218. ;==================================================# Y$ r, e- x8 |. g5 ]
  2219. Music_Song_Stop;音乐停止$ A. R$ D4 Y. r/ o* h* p
  2220. LDA #$01, D/ C6 A2 Q$ J
  2221. STA <Music_Stop_State- n( C8 p# E" k4 A2 z) ~9 R
  2222. JSR Music_Bar_ReSet% Y+ u4 f4 f2 m9 G7 c( j$ y( t4 H
  2223. JSR Time_ReSet  I& F- X6 k# c. [; @  s" N) I
  2224. JSR Sound_Data_Clear
    # ]4 ?8 C7 F2 e7 {/ m* |( t$ j6 w
  2225. JSR Music_State_Show
    5 {6 O0 _( i' r9 M7 R  u% E
  2226. RTS: N; L" ?$ i7 Z* M) g- U$ w

  2227. + Y; J; q  \+ D
  2228. ;==================================================% j4 ^; u3 [# h) M- Z
  2229. Music_Song_Play;音乐播放8 |/ G: i/ B  x7 {; _# M4 A0 M+ f
  2230. LDA #$00- Z7 R5 Q$ b5 ]. `
  2231. STA <Music_Stop_State
    # h8 z( z& g! c6 E+ {
  2232. LDX <Music_Item_Cur9 t- f0 U! X& I3 O! p! s, G7 M
  2233. LDA <Music_Cur,X
    - L& A  h) j& J2 n# Z" P9 t
  2234. JSR Sound_Init_Proc
    " U5 u) l0 C) _. I8 J
  2235. RTS
    : t2 b/ J+ x* c) p
  2236. , y0 Y4 h2 s8 K
  2237. ;==================================================
    1 ?% \4 i) t  w4 x7 _
  2238. Music_Song_Last_10;上10曲
    8 m; J$ B7 `  m) H! ^0 f
  2239. JSR Clear_Last_Track_Name
    ( Y2 Z8 q4 F. M
  2240. JSR Disable_Text_Draw, X) ^' M7 B0 i" \
  2241. LDX <Music_Item_Cur5 F6 J9 S( r6 ]( n6 i$ m6 |
  2242. JSR Set_Sound_Total
    * z/ K4 }6 s6 V7 Q) X
  2243. LDA <Music_Cur,X9 f( o' e& y1 P; d
  2244. SEC/ A$ R+ r# Z( {7 F# O+ u0 s6 ~) [
  2245. SBC #10
    3 F; j: {! Z2 V3 ~7 i
  2246. BCS Music_Song_Last_10_Set
    / u% i6 c, t$ q* i% u. r
  2247. LDA #$00; \% A/ @& O% d3 e: l
  2248. Music_Song_Last_10_Set9 M0 M, Y% g5 l
  2249. STA <Music_Cur,X* ~4 g( H' _9 N& R; ^+ k6 Z
  2250. JSR Sound_Reset_Proc
    ) N# W3 ~3 B! Y8 }- V# {6 y3 p
  2251. JSR Music_Show
    6 f6 b# R, t/ e* A3 y0 @( D* x
  2252. Music_Song_Last_10_End
    ) z$ Y. n0 }2 ?7 A2 p' w7 V
  2253. RTS* U, N& K  v3 G4 W5 B9 D4 M1 l+ R

  2254. , M$ ^& ]! A( U' f2 p; A
  2255. ;==================================================  h1 _5 h* R0 v) l4 D# \
  2256. Music_Song_Next_10;下10曲
    $ g3 I4 f' [( E: R
  2257. JSR Clear_Last_Track_Name9 e  O; L5 ]2 t3 w1 l6 C
  2258. JSR Disable_Text_Draw
    % [4 T0 u9 _; a. Q
  2259. LDX <Music_Item_Cur
      ?! v+ |7 [, G1 w2 i0 J
  2260. JSR Set_Sound_Total; ^# g, D/ g& n8 A2 {) l2 O
  2261. LDA <Music_Cur,X0 R0 N5 m7 k- C3 z, a
  2262. CLC
    7 ^. L' N% ?3 c
  2263. ADC #10  o' {) M+ V1 y3 ]% l. w! ^
  2264. CMP Music_Total, G$ @" ]4 \$ ?. b  [& m5 x# U
  2265. BCC Music_Song_Next_10_Set2 g+ e" l) J% `+ C! v7 `5 T$ Z
  2266. LDA Music_Total
    ; F4 c6 W$ D9 T. S
  2267. Music_Song_Next_10_Set
    2 E0 Z6 O& H. F* F/ m/ u
  2268. STA <Music_Cur,X+ U+ X9 w+ }. D- W8 e
  2269. JSR Sound_Reset_Proc. y, P& O" B. O% k
  2270. JSR Music_Show
    - W6 I; A% A6 ?% _1 r( K& q" y
  2271. Music_Song_Next_10_End! l+ H1 g, h& v
  2272. RTS5 |1 S8 l8 ^$ p3 Z
  2273.   @1 ]; A9 _* b: L& w; s
  2274. ;==================================================! j. `( i9 {. F3 D6 I' x. E% x
  2275. Music_Song_Last;上一曲2 n# ?% M3 X" O* _
  2276. JSR Clear_Last_Track_Name
    ) K' P1 i) N0 e. [& Q
  2277. JSR Disable_Text_Draw6 i8 ]& p+ j, j' q9 W7 @# H
  2278. LDX <Music_Item_Cur0 N8 c. s1 e& n  s" b- _
  2279. JSR Set_Sound_Total
    0 d9 A0 T" b/ f& o( u
  2280. LDA <Music_Cur,X
    % N  k) ^' S) `1 r; y5 `- K
  2281. BEQ Music_Song_Last_Set
    : j6 e7 j+ a; D
  2282. DEC <Music_Cur,X. ]# f$ A/ V) y- L6 o
  2283. Music_Song_Last_Set
    # s/ K( @- u8 w; z, N0 J2 B) d
  2284. JSR Sound_Reset_Proc0 r( n& Y) ~' f6 Z- W
  2285. JSR Music_Show8 }7 x& K: d; f8 x: P7 Q2 s
  2286. Music_Song_Last_End
    5 v# Q6 x& Q4 N7 C" Q6 n. Z; I
  2287. RTS8 J! x# F4 G6 I
  2288. + L1 M: F1 ?  k  _: U
  2289. ;==================================================) d5 ]. _) z5 ]4 a% w
  2290. Music_Song_Next;下一曲! Y+ C- l2 x2 q7 R% {1 P
  2291. JSR Clear_Last_Track_Name
    7 k2 A) _/ @) B- ]: L) r3 G
  2292. JSR Disable_Text_Draw
    ( g6 l( C9 r; |5 I/ n3 Z! m
  2293. LDX <Music_Item_Cur3 ?% d! u6 {7 G2 W  a9 X
  2294. JSR Set_Sound_Total
    5 A4 N8 `: D2 \1 b( M! f) R% E
  2295. LDA <Music_Cur,X
    $ Y# f5 y& E: X2 C' D9 j5 q
  2296. CMP Music_Total
    1 @# \- @8 J# ^
  2297. BCS Music_Song_Next_Set. h$ K) e' j! `- e( K7 ^
  2298. INC <Music_Cur,X9 Y! z, O( a: w( f  v( a8 ~2 |3 V
  2299. Music_Song_Next_Set  @5 B8 n) L2 J$ Q$ R
  2300. JSR Sound_Reset_Proc. S0 |9 d; d- a, q! z% U
  2301. JSR Music_Show' k2 j5 U+ |. b7 _: D) }
  2302. Music_Song_Next_End
    5 K: n/ j5 m4 `$ Z; L
  2303. RTS
    ( @1 n, t) l6 e: E& J0 o1 s
  2304. ( A& {, s! F5 |7 ?7 J2 i
  2305. ;==================================================! |4 Q! C: n  f1 P; p
  2306. Change_Select_Item;改变当前选择项6 ?  T/ {' v8 L5 O0 w, o9 e$ x
  2307. ;--------------------------------------------------8 O* @' {1 I' ^& Y
  2308. Change_Select_Stop_Play_Item;停止/播放
      A+ h" b( u4 j$ h! d  \
  2309. LDA <Key_Once0 V6 s$ i! {9 u: K+ h, M! b1 R
  2310. CMP #$10( V- W; W3 M- H% k; W
  2311. BNE Change_Select_Last_Item0 @2 j- o0 c9 _. }' j4 U; z
  2312. LDA <Music_Stop_State3 n& |8 |* Q. c
  2313. BNE Change_Select_Play
    - l% G# x9 _4 _* K( l$ b
  2314. JSR Music_Song_Stop2 c* `! c1 D) Z1 V
  2315. LDA <Music_Stop_State* m- P5 i: e3 X2 b
  2316. RTS
    ' q2 |! ^$ V5 Q6 x, i/ ~. A
  2317. , b$ F' c$ l  R$ t4 c
  2318. Change_Select_Play
    ( Q5 m9 E7 j: z8 v- _( E+ W
  2319. JSR Music_Song_Play
    4 L- V8 k$ `1 m' W$ ?8 S& O1 B
  2320. RTS
    % A" U% D$ Z* j
  2321. - t2 p* j0 R# F8 A+ X4 k( f
  2322. ;--------------------------------------------------
    7 P( K- @; r- X. H9 p
  2323. Change_Select_Last_Item;上一个专辑8 u  [. H# u2 R  k1 P7 j: |
  2324. LDA <Text_Disable_Flag
    # q, ~1 C- ]' ^3 f: Y; p# H
  2325. AND #TEXT_DISABLE_ITEM& x7 i2 j: |( {: i- [
  2326. BNE Change_Select_Item_End$ U, [2 b' S5 G3 M0 o4 N
  2327. LDA <Key_Once0 u5 s. T7 V& W) c1 A
  2328. CMP #$08  u. `) M, v6 ^+ d4 I
  2329. BNE Change_Select_Next_Item
    - o% I% }% ?  \$ @% u2 n( U" Z/ [
  2330. JSR Last_Item
    " G! i) p3 S& T
  2331. ;--------------------------------------------------
    - T' t$ |7 i- s3 A* I* k' a* [
  2332. Change_Select_Next_Item;下一个专辑5 ^2 ?- I! G: X( P: n% m( B
  2333. LDA <Key_Once
    ' P& K  {0 P& o/ `7 ~: K* X
  2334. CMP #$04
    2 ]1 p% M+ U. P/ F. F# ^$ M3 K
  2335. BNE Change_Select_Last_10  t8 q) o4 `6 [2 n$ s% M: `$ Z, U" h
  2336. JSR Next_Item& u) u. [5 a) N& z
  2337. LDA <Music_Item_Cur
    ( X- T4 G' W: h. i' n; _0 n
  2338. JSR Get_Page_Start_Index, H- g2 b; r4 |5 }
  2339. ;--------------------------------------------------" a9 \5 A/ A; W8 O/ }6 g
  2340. Change_Select_Last_10;前10曲
    3 I6 x$ s" x3 V
  2341. LDA <Key_Once' L  E  _' D% s- t6 [
  2342. CMP #$40
    ! t+ W8 h+ M" Y
  2343. BNE Change_Select_Next_10! y3 K7 ~2 D+ Y
  2344. JSR Music_Song_Last_10
    9 V8 M8 ]1 C# r7 O' ^2 h
  2345. ;--------------------------------------------------
    : y3 g$ H/ n4 C: u9 P/ H# D+ R
  2346. Change_Select_Next_10;后10曲, G, j, ]9 ]+ o6 w+ X& Z
  2347. LDA <Key_Once2 Y/ S2 i8 P4 L
  2348. CMP #$80
    8 ~! o- S9 j$ B
  2349. BNE Change_Select_Last6 C" p1 D6 ]" z; y
  2350. JSR Music_Song_Next_109 h: p! V! L! E
  2351. ;--------------------------------------------------9 T, J( {7 e) c
  2352. Change_Select_Last;上一曲
    1 f/ l& V: s, i" k3 d' B
  2353. LDA <Key_Once
    & T, }5 a  ~' |7 J7 V' I
  2354. CMP #$02
    5 H; ]1 Z! j8 n: H2 y  k  a
  2355. BNE Change_Select_Next: j  w/ U( r& o9 _5 s
  2356. JSR Music_Song_Last0 ]1 d5 ^$ Y# W% `
  2357. ;--------------------------------------------------
    ) `0 P, w' U) F7 \3 T
  2358. Change_Select_Next;下一曲
    1 \$ l8 ]# K/ ]! c" }. }
  2359. LDA <Key_Once5 @, i% h& ~, n: H% X$ R
  2360. CMP #$01
    $ \! [! E7 f) ]7 C! p2 \1 D/ o
  2361. BNE Change_Page_Next( }+ |( i2 w4 R- _. {
  2362. JSR Music_Song_Next* ^7 v( `( b- A
  2363. ;--------------------------------------------------
    + `" G1 S* }) |
  2364. Change_Page_Next;下一页& K$ \2 A+ a9 {( O& t7 O/ S5 l
  2365. LDA <Key_Once
    ) e% ^2 {) n  g, \7 O
  2366. CMP #$20/ H. u" e/ O( M/ ^  I8 s2 A
  2367. BNE Change_Select_Item_End* r+ j8 `7 N: o  Y- ?% S: c  W
  2368. JSR Next_Page
    ( G/ k  l! }* l4 x& K
  2369. ;--------------------------------------------------- ~& v( u; Y- H" ]# e
  2370. Change_Select_Item_End5 }0 \4 @7 ^# |+ o
  2371. RTS% E/ ^4 `5 k/ C& }% h' V
  2372. : N1 Z" C, v# R% H1 D/ \
  2373. ;==================================================
    8 P5 E; c7 U) [3 \( [
  2374. Show_Arrow;显示箭头光标
    4 F% {* `1 n  ^% x2 k
  2375. LDA <Music_Item_Cur( {& E0 k; k+ C' e% P: X
  2376. JSR Get_Page_Start_Index
    * z- d+ v9 ?5 x6 W& I
  2377. LDA #$00% p! a6 }0 J/ s
  2378. STA PPU_OAM_ADDR1 P  u; ~/ I# I  P$ B- H0 \
  2379. LDA <Music_Item_Cur
      Y" T* o% Y# s: C( B
  2380. SEC& A  ^$ l% G- k# u+ A
  2381. SBC <Data_Buf2 ^" |4 l: x. P+ j, |# `
  2382. ASL A3 f1 j: ?2 a  }  l% q7 h+ Z3 W6 Y, x; d
  2383. ASL A
    ; [0 P% F* ?" ~" E
  2384. ASL A7 g; ~7 }1 j- c2 d8 k1 C; ?! v8 F+ u
  2385. ASL A4 r6 [$ ?  _( J) X4 N- z: a
  2386. CLC3 {& p7 u' _* m/ ]) r. |- m+ C, p) N
  2387. ADC #ARROW_Y_OFFSET
    . h, K; |" J8 _6 i3 {0 m% ^0 C
  2388. STA OAM_TEMP_ADDR + $00
    , ?( i6 G( C2 e. n; m$ l2 ?1 A
  2389. ;STA PPU_OAM_DATA
    4 |; J4 ?) l! }9 Q2 z5 I% R2 Y4 t
  2390. LDA #$1F/ W3 C  f6 {! O2 M
  2391. STA OAM_TEMP_ADDR + $01- ~& J) N+ |& I; K0 b
  2392. ;STA PPU_OAM_DATA
    3 ]1 O; n; ?+ U4 i# j7 P9 t
  2393. LDA #$00$ S2 C' c+ S; D3 z
  2394. STA OAM_TEMP_ADDR + $02' ], t3 e* Y" N
  2395. ;STA PPU_OAM_DATA
    6 X* l0 x5 H9 G
  2396. LDA #ARROW_X_OFFSET
    . ]9 e. y) @) i
  2397. STA OAM_TEMP_ADDR + $037 c0 T; T' d6 Y3 q
  2398. ;STA PPU_OAM_DATA
    # b$ V- d4 c9 e; q
  2399. RTS
    % U8 ?: a: r. X4 _  j! O- s: j& U
  2400. ' A- B" J7 ]3 u0 j1 D1 J. D
  2401. ;--------------------------------------------------+ Z) j( \0 g  N& \. H4 t' x
  2402. ;命名表数据2 ?! E' t0 {: C" ]. _& g$ ~+ n
  2403. Palette_Attributes2 S% [/ n" n4 I$ r5 b; t2 h
  2404. .IF SOUND_BAR_SHOW_ENABLE
    : X7 t8 I0 s- @1 p& [
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55% W8 \5 l" E" e8 l& H
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ' J4 {; |2 u* A' w
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    1 ~  U4 P8 ]4 y; q+ M
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    - y% ~, @  ?* r( F
  2409. .ELSE
    8 h. T( \  {6 V, e
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    ) a/ S+ i2 r- D+ U9 B
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    , S3 ~4 M2 B% S  n0 Y  A
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75: A: `1 U  g' Z
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    ) F: [" G7 N) u
  2414. .ENDIF
    5 k! y- `% s' p  q1 F5 g; X& l
  2415. ( d0 `& P, \2 E( z6 y' \
  2416. ;--------------------------------------------------+ m0 g( l- S! K3 i1 J" c3 t
  2417. ;调色板数据
    + J  e: f9 O; Y0 i4 k  ~9 W
  2418. Palette_Data  H8 ?3 E- t# k3 x. Y8 Z- f
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F7 ?7 d' c( S% `* Q
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    * M6 d9 {4 C/ b2 Q. r) _5 ~
  2421. 5 @+ [& d; N& X5 D" I, ~; g
  2422. ;--------------------------------------------------
    * C, i; n8 X; a6 R* T7 D: o
  2423. Static_Text_Data- k' ], W) q$ v5 i. N; t0 ~
  2424. .WORD Static_Text_Caption_Data1 p& L2 e% S) ^3 M/ e
  2425. .WORD Static_Text_Author_Data6 Y+ U/ K1 p3 D* _
  2426. .WORD Static_Text_Date_Data
    3 Z& L% ^/ L/ z0 m' c  `2 R
  2427. Static_Text_Data_End
    / E- B, @4 m3 a1 f9 z9 A
  2428. 7 D( E# p6 B9 Z
  2429. ;--------------------------------------------------
    ' a! M. M# d9 e- }5 R
  2430. Static_Text_Pos6 w* B/ o0 f2 K
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    " s/ g; p; f/ i1 P
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)" B; U0 q/ X- K* N% o" e9 o( O, X
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)( a7 C% p1 r5 y0 i. u8 n, _( }
  2434. Static_Text_Pos_End8 w: Y8 s  d5 I  G& M
  2435. 3 o6 s6 ]! [! R% l7 u0 R( y5 u4 j
  2436. ;--------------------------------------------------% V9 U3 F1 d  }2 D
  2437. Music_State_Stop( ^4 W5 d6 F% Y& K2 \
  2438. .IF SOUND_BAR_SHOW_ENABLE
    - k' ~- P2 k) g6 f8 E$ s9 A4 H' e
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$001 @" A, M1 H, U5 f& k! k" ~
  2440. ELSE
    5 K, _9 k( W  @. E  t; |
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    , f/ t$ ?* R4 Z9 Z, h/ K! v5 e. E
  2442. .ENDIF
    6 B3 V  i5 \+ D+ H4 s: h: x
  2443. Music_State_Play
    & e. t# Y5 ?$ r. G
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$005 T% O% D- Q# t/ f! D( w
  2445. 8 z  }5 g# @4 `$ I5 o2 D' D' T
  2446. ;--------------------------------------------------
    ( r. C4 l0 _. N  T7 U
  2447. Sound_Bar_Text_Data;声音类型文本) R6 G' t* y' ^" }% I) Z
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    ' I3 Q& h% u. U7 a0 L9 E+ D! s
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    / ]- Q% H1 ?. H3 g
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    / f4 r  Y: A$ m. F
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"  V1 H7 a& a! e3 K+ E: X( c
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
      r" m2 ~4 X) i- {) w( n
  2453. * C$ ?9 U% T6 a" @8 @# _
  2454. .IF Track_Name_Pos
    , {# T0 _  e* x! o
  2455. 6 `* |! Y: E; o8 }5 R: s( @
  2456. ;--------------------------------------------------) {9 ]" v5 B* D9 K, h9 B8 K0 I
  2457. Track_Name_Addr_00;曲目名地址索引1 K! O+ z: u4 {7 q; M6 L7 A: P
  2458. .WORD Trackr_00_018 F9 K% a* n* \5 Q% V- u" I2 P

  2459. # l' f, |- n4 ~9 s& N
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    ( h3 ~) b, S, D: O* m2 Z5 w
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"# \+ z. Y9 I" v( k/ q+ l
  2462. ' q6 A: w% V* A. A. |
  2463. ;--------------------------------------------------) F( c- M$ H& D! g
  2464. Track_Name_Addr_01;曲目名地址索引
    $ U, Y- r& @4 |/ b1 a
  2465. .WORD Trackr_01_01
    : D7 x7 q; i9 V7 S* Z. z0 c

  2466. $ q, ^5 J, L: ?. k
  2467. ;==================================================
    2 a& `+ Y* o  l- [' d% N3 Q5 l# u
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    & U! C7 J' m  U  V- Y
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    & c; q1 N% Z  L& }2 w
  2470. 0 [, I+ v, H, N+ k  A  b/ R+ V
  2471. ;==================================================, \$ A+ P+ I) H
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    9 n7 s% R6 Z9 X) b8 B& ]& p
  2473. .WORD Track_Name_Addr_00
    . a4 {& {% f$ s; T' g4 L; F& ^
  2474. .WORD Track_Name_Addr_01
    . j5 w9 _- e. q# ]
  2475. .WORD Track_Name_Addr_011 U* {+ c: m" I: V9 ~; b- Y) P

  2476. 8 e6 w7 z: @( k' ^6 K* y
  2477. .ENDIF
    5 A- j2 F4 R7 B8 }1 Y% Q/ @+ Z' n

  2478. , r( a! v( u$ i: |5 q. r
  2479. ;--------------------------------------------------+ `) @7 P0 L; W  i% N
  2480. Static_Text_Caption_Data;静态文本数据' x) F0 o$ {( w  `+ c* b
  2481. .DB 162 v2 N! U: j$ o; N" X
  2482. .DB "FC MUSIC 12 IN 1"
    , V3 t' F& d, M4 d
  2483. Static_Text_Author_Data7 b# ?( v/ p5 }8 f
  2484. .DB 25
    * l: ?0 J1 J' o; w
  2485. .DB "EXTRACTED BY FLAMECYCLONE"' h1 |) x7 x2 w& G
  2486. Static_Text_Date_Data
    + o7 ^! J; H6 U$ \
  2487. .DB 10" F' S9 V% U" j! y, k) B2 k1 r
  2488. .DB "2023.07.23"; Q5 p0 W& @1 \
  2489. : ?4 y5 `/ d- C& |2 i. p/ t7 W
  2490. ;==================================================# C* \' o+ D) R1 R# f$ U
  2491. Music_Collection_Name               ;专辑名间接索引! z. P! \: J  }/ }
  2492. .DW Music_Collection_Name_00% y" }1 T# o: z  t1 H
  2493. .DW Music_Collection_Name_01
    4 Y3 o6 c5 T, r# r( P. P6 f
  2494. .DW Music_Collection_Name_02
    3 S# V- T9 t9 d( u5 W* ]0 Q' S% Y
  2495. .DW Music_Collection_Name_03; q6 h% s; |: R
  2496. .DW Music_Collection_Name_04- Q' b1 W# r2 s( N7 E* C' \
  2497. .DW Music_Collection_Name_05
    6 }0 Z& Y3 H$ U; v$ G& }
  2498. .DW Music_Collection_Name_068 {- d. O  U6 C7 y2 P
  2499. .DW Music_Collection_Name_076 t$ D* `0 O) z$ y9 R
  2500. .DW Music_Collection_Name_08
    ( e" j$ B+ a/ w4 z  u& |
  2501. .DW Music_Collection_Name_09$ X4 A; j; d, h6 m. `' L* k
  2502. .DW Music_Collection_Name_10
    2 S  |2 C; @3 f$ d) q* z7 Y1 K- B; e
  2503. .DW Music_Collection_Name_11  C& O0 @0 X0 G% o
  2504. " T! `# C' _3 a" Z+ v
  2505. ;==================================================
      R0 Q5 v+ V# T1 u- S. s( b
  2506. Music_Collection_Name_00            ;专辑名文本数据
    ; l. u) w$ U) _) P4 ?
  2507. .DB 11,"1.RAF WORLD"' u$ ?/ m: l, T8 ?- I% O6 G3 {
  2508. Music_Collection_Name_01# X+ s/ X5 I( c! ^0 g6 O, z
  2509. .DB 15,"2.FINAL MISSION"2 y* \$ H7 d) x. b; q3 S8 x
  2510. Music_Collection_Name_02# a: w. j2 j: {
  2511. .DB 06,"3.KAGE"5 P. E) h, U* o- J3 l- k
  2512. Music_Collection_Name_03; d3 K5 P8 w& Y) D  F, w1 U, H/ {
  2513. .DB 16,"4.DOUBLE DRAGON"
    8 k1 p& X, I4 R; U# k
  2514. Music_Collection_Name_04
    6 V+ x8 @" Y  S) P: I: l
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    . V! B2 O$ A/ f6 Q" g! H; b# r
  2516. Music_Collection_Name_05; k) N1 p/ f& X6 |& O6 A, ]
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    8 X9 B: e1 S$ d6 G% Z1 `2 p
  2518. Music_Collection_Name_062 B8 V+ b- G2 E* F( L( E# }. H
  2519. .DB 09,"7.ROCKMAN"
    ' I8 Q" T: H& H6 d( U
  2520. Music_Collection_Name_07
    . k* C! ^- t  R( g/ d$ o
  2521. .DB 12,"8.ROCKMAN 2"
    # b+ j) g1 s. Q# A3 x. G- H+ p& `
  2522. Music_Collection_Name_08
    5 Q" h6 ^, \% R: \
  2523. .DB 12,"9.ROCKMAN 3"
    ) J9 e+ ~& p" j2 L2 E& Q* L& s, K5 ~
  2524. Music_Collection_Name_09
    6 D7 @* j5 B) }
  2525. .DB 12,"10.ROCKMAN 4"
    * g& g, g% p" F
  2526. Music_Collection_Name_106 A, R% z9 u) T1 F
  2527. .DB 12,"11.ROCKMAN 5"
    & [2 @* \0 R& {% Z6 B
  2528. Music_Collection_Name_11
    3 T1 F% r: @% Q
  2529. .DB 12,"12.ROCKMAN 6": |8 ?8 K( {1 ^9 U& [

  2530. & k% k5 s+ p6 }& ]4 r5 Z7 z8 {8 z
  2531. ;==================================================& C8 K% u: R" G; U; g
  2532. Track_Name_Addr_Flag                ;显示曲目名标记4 p: A9 J$ ]+ N0 N- L2 s
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0" |% E3 @* `; T) e4 B3 I

  2534. % `$ t* o. ~& o' X7 J
  2535. ;==================================================
    * S7 m1 \! J, U' p8 S
  2536. Item_Pos_Data                         ;光标箭头位置7 F& ]& \6 Q4 z$ E  y
  2537. .WORD ITEM_SHOW_POS
    / n$ o* o# n) L8 y, X% z. p: A
  2538. .WORD ITEM_SHOW_POS + $0040
    7 }$ l8 ?; k( d
  2539. .WORD ITEM_SHOW_POS + $00808 N  r7 R7 W# ^( j2 S
  2540. .WORD ITEM_SHOW_POS + $00C0* m9 j& |' Y- S7 ?. @0 J0 ]1 U1 q
  2541. .WORD ITEM_SHOW_POS + $01004 K* G/ j/ B2 D. g
  2542. .WORD ITEM_SHOW_POS + $0140% \- @9 H5 B, M' k2 n% y
  2543. 0 {1 p, b+ C! b% A2 _% L
  2544. ;==================================================
    " s) O/ v' p2 ^! y/ C
  2545. Sound_Init_Port                 ;音乐初始化入口地址7 N6 p. G, W& P% R
  2546. .DW $BFC85 D7 M( k- _% t& C# r2 O/ _
  2547. .DW $D7F0( u$ ^# s. V/ H6 X; l
  2548. .DW $9FC0* ?) ^& `- }4 g0 R/ ^
  2549. .DW $BF705 I& H  v/ |* }( L& |! t
  2550. .DW $8003  j. T  \6 ^& F& A% B
  2551. .DW $BF30
    & ^* H" ?8 h' P  b0 K6 P
  2552. .DW $9003
    5 p; K: ~5 r- _, d% I. z
  2553. .DW $8003% R# c6 G' G' Z8 Q0 T2 o! |
  2554. .DW $8003
    5 N2 e; h1 w- Y; M! F
  2555. .DW $8003
    1 F' ]; q5 Q! t0 b4 P$ ~7 O
  2556. .DW $80034 P! `8 A% ?; ]# C& p
  2557. .DW $8003
    * ?$ s+ ^3 o3 F, E' a# N, O+ V
  2558. - r- [1 N1 A6 J* W
  2559. ;==================================================! M6 c+ T' D  a
  2560. Sound_Play_Port                   ;音乐播放入口地址% H7 i9 E& `/ _, Y6 c
  2561. .DW $80000 j! Q' f1 s3 ^+ k
  2562. .DW $8001
    : I( Y! v( O# v2 E- C. k. y+ D
  2563. .DW $A000
    4 ^6 v' G$ b) V
  2564. .DW $8003
    2 b6 g5 _( n4 x3 J
  2565. .DW $8000% I- D  ?* w* m# A2 C
  2566. .DW $8003
    * b, G* w. Z  z$ Z, e! Q
  2567. .DW $9000# g0 V7 S3 x( k7 a+ A
  2568. .DW $8000
    % y5 @6 g; r* E) Q7 U4 p# w
  2569. .DW $80005 U$ Q6 u) Y/ ~1 I
  2570. .DW $80007 G) }5 o# W& I6 T& L
  2571. .DW $8000
    9 p" z  i$ ]* y( ~( x5 ?
  2572. .DW $8000
    8 N# D: \1 x) I+ ~( Q
  2573. ) Y+ }3 ?) `( C3 V, @6 f5 a* A
  2574. ;==================================================
    ! J  l$ N! ?9 s" V
  2575. Sound_Reset_Port                  ;音乐重置入口地址" m) f) h& K# s0 j& w6 m2 P
  2576. .DW $0000
    # x+ E; C' h$ c9 a" `7 c# F! w0 O
  2577. .DW $0000' k" y  d$ c& L1 D7 t
  2578. .DW $00006 H1 }3 |; L& _9 D# y
  2579. .DW $0000. X0 M; H& }; O- V* J
  2580. .DW $0000
    ; ^( p- Q! p5 p+ i( o- m5 C, s
  2581. .DW $0000
    ) N$ t6 x6 i8 t0 [& d% w- g& d
  2582. .DW $00002 V! }8 ~3 O3 B
  2583. .DW $0000
    $ h. D$ |! N# i. d
  2584. .DW $0000  K$ |8 M' u  @' T/ p' |7 \
  2585. .DW $0000, z; ~% h7 j* \! H4 N
  2586. .DW $00004 J9 x' a0 N$ r! H2 Q  L
  2587. .DW $00007 p/ t) e) m. B, D0 X/ k
  2588. ) [; o$ Q! X  A+ c
  2589. ;==================================================$ K- t3 l  B6 ^
  2590. Sound_Total_Port                          ;曲目总数
    ) M& O1 W( B$ r2 A# ~
  2591. .DB 38+ M( e+ X" z7 h7 e7 v+ E( I
  2592. .DB 330 P; `; G: S, l: E0 S7 d% s8 C
  2593. .DB 49. Q* Q* a6 H3 y
  2594. .DB 419 z( r  m8 M9 [& b# }. [) y6 @
  2595. .DB 839 M, {- _8 B3 v5 B4 Z5 A3 J9 `
  2596. .DB 70! x2 S! B. ^( K
  2597. .DB 50: o$ Z/ r0 e, [9 f
  2598. .DB 67
    1 Z* t2 v& _# d0 h6 p
  2599. .DB 57# G4 j5 P4 u  n6 o! r
  2600. .DB 71
    $ ]4 N$ q7 d; a6 S0 d) H. W
  2601. .DB 76
    ! J# r/ o& Y, W" \- ?
  2602. .DB 102
    # z, h( j' m3 M8 a

  2603. 8 T7 x5 K* |7 {. E% e& h' ~
  2604. ;==================================================
    % q) i; T- C, [, ]- ^2 O
  2605. Sound_Start_Port                      ;起始播放曲目
    2 b" G. T8 H/ Q3 j$ _7 b1 V6 z
  2606. .DB 00
    & r" w6 F6 a3 v: g
  2607. .DB 00
    # g$ ^& s4 T, F9 Z) P
  2608. .DB 00
    * O7 ^$ ^" L5 Y5 ~
  2609. .DB 00
    / @. g( F3 w5 K% a$ t
  2610. .DB 00/ U" }8 b' H' U% `- @
  2611. .DB 00
    2 K: z0 B4 W0 n$ y' U! }8 g  M
  2612. .DB 00
    : j1 {# |4 t  }7 C
  2613. .DB 00
    ; b3 x/ ~0 A' u2 z) Z
  2614. .DB 003 V. [- Y9 Y9 |* {5 c, i
  2615. .DB 00# P, Z- v2 B( A. W5 T5 f
  2616. .DB 00
    8 s# W; n2 U# J1 i4 S. K. w  a* B
  2617. .DB 005 D5 ]" H3 M; z* h* D- b! Y
  2618. ( ~) U# l7 {* b; R' M- F2 P
  2619. ;==================================================
    ( M, u6 S9 U! s& d$ ?
  2620. Sound_Bank_8000                      ;专辑bank_8000; @* E, w+ K% a- N( D8 e
  2621. .DB $10
    ' k" N( I5 D5 ]8 V: J
  2622. .DB $122 l6 {  l2 E8 }1 `) O; V
  2623. .DB $14/ J0 s2 b% j/ \! C& b& Y4 {- N5 E
  2624. .DB $16
    - |4 N  b9 G$ |) u5 v
  2625. .DB $18
    9 D9 Z% E9 e9 ~/ k" p& s
  2626. .DB $1A
    , n# X% O1 A1 l4 l0 v
  2627. 7 }, [& M  k6 g6 f0 l
  2628. .DB $006 Z/ D( _' ]& `5 J7 [
  2629. .DB $02
    $ ~. t; K( Q$ i' u
  2630. .DB $0D
    , Y; x$ |, v1 V
  2631. .DB $04
    + U, n1 Y4 J' ]* j) S
  2632. .DB $07" F6 ^0 N7 Z& `% I9 t  X/ T6 r
  2633. .DB $0A2 w) G; N. r- i$ o6 ?. a4 R
  2634. & z( D- r7 ]" g* ]0 s5 X7 d6 X
  2635. - [! m1 ^; E7 E4 Q# R
  2636. ;==================================================
    8 o6 m2 i. E/ u: C5 G1 n# K. `
  2637. Sound_Bank_A000                      ;专辑bank_A000: h8 K$ _: I. V( T' b3 n2 {9 ^+ y# X
  2638. .DB $11
    / D* |* k  X! a, f- J' L$ H  i
  2639. .DB $132 c1 d2 |% x0 y3 q
  2640. .DB $15
    & b$ P! \* S( M) e
  2641. .DB $17" T7 v& O( J" E% s
  2642. .DB $19
    3 ?/ ]& S( W7 c+ ]3 R, L
  2643. .DB $1B
    3 O- U% S- o$ _+ r% O! M, k2 O

  2644. % e9 O. ?/ X. D0 X+ [
  2645. .DB $01' R( v5 n' P. F# f
  2646. .DB $039 X% M! I" R2 l; [
  2647. .DB $0E
    8 e0 |! m, [1 h. X
  2648. .DB $05( G& T' C, X7 p8 Z, i* ^$ {
  2649. .DB $08' o5 O" C: k+ v
  2650. .DB $0B
    3 @# @' N7 x( j6 R* ?' R5 o

  2651. . P. z% u  v1 C+ o3 R

  2652. - c' ]9 a, f5 x6 t
  2653. ;==================================================
    2 `/ {0 U0 w1 a( Q+ m- Q
  2654. .BANK RESET_BANK & BANK_DATA_MASK3 m3 i2 I" }. M: F1 L3 }# q& X
  2655. .ORG RESET_ADDR& Q8 l4 o  v8 g( {' i4 M  s. {
  2656. # `/ F5 G/ h% I; _
  2657. ;==================================================
    8 d. B9 ?- M* J9 f7 f1 x$ f5 A
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    9 P. |  z: P" ]1 T: ~; O. l
  2659. PHA
    . @& Z7 ]! s7 _) a
  2660. LDA #$06
    4 `5 \( H7 }6 q8 z. }* l; u
  2661. STA MMC3_BANK_CTRL
    ! T0 i8 Y4 f) ~
  2662. PLA
    % K! F; |$ z* g2 q  ]; G( H9 x. R
  2663. STA MMC3_BANK_DATA/ D0 N3 G' A1 K0 k- I8 @$ f
  2664. RTS
    ) y5 k$ a4 S$ U  H( E
  2665. $ N9 }6 t  G) z; e2 R# S
  2666. ;==================================================
    # q/ r$ x% s  Q
  2667. Switch_Bank_A000;切换bank到A000-BFFF7 }7 Z# X/ l2 u# E; o& k0 G
  2668. PHA2 g* [2 ]: K- e1 q* h
  2669. LDA #$07
    0 A" u- `2 W9 Q* ?. H; T6 I
  2670. STA MMC3_BANK_CTRL7 r1 z: D* B- j4 ^' b% U) B
  2671. PLA
    ; p; t4 d( R, w, v7 k. ~
  2672. STA MMC3_BANK_DATA; @8 i+ D# A/ {  A  k
  2673. RTS
    * c+ X; M$ Y* p4 U! s, k4 H

  2674. 8 H) [$ k4 W8 {* y$ R+ F* j
  2675. ;==================================================
    * H3 J/ x( V0 i, t/ ?$ Z
  2676. Switch_Main_Bank;切到主程序bank
    . C' _$ Z1 F! ^1 C. @4 |4 u
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    + T# A+ u/ X/ d! ?( A: T$ X3 M
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    * B' N' G6 {5 R# ~, ?' Q! p
  2679. RTS% L2 Z' N# y" c% c7 b6 K0 o3 _
  2680. - i5 S7 h2 Q; z9 G0 E5 p) p3 p- f
  2681. ;==================================================
    8 }* {4 m. E. A( B2 v7 Y) F
  2682. Sound_Reset;音乐重设(如果有的话)
    - p3 R$ o9 |0 F, ?4 E8 J9 R. f1 i" x
  2683. JSR Switch_Music_Bank  ;切换到音乐bank3 E9 U& [0 B9 l. ]; Q" ^
  2684. JSR JSR_Addr_Op        ;执行音乐重置3 U. e7 \3 c% r5 {; x  v
  2685. JSR Switch_Main_Bank   ;切回主程序
    : {( ?/ g% p- r2 e) N
  2686. RTS
    0 P1 C8 r3 y9 o# p

  2687. 1 j6 @" P8 E9 v  B$ v
  2688. ;==================================================5 R% F: m% {2 p) `$ s& F. ?% n8 z
  2689. Switch_Music_Bank;切换音乐bank
    4 ?' S2 G0 S/ E  l9 g2 c
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号1 E; ?" L! q& E: R4 T: f, O
  2691. LDA <Music_Bank_80005 v- H9 P! [  j( \8 B+ E
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    ' b. c6 Q% ?* K: k$ X  F% P% Z
  2693. LDA <Music_Bank_A000  Y) Y1 s' q' B5 R* g2 _3 ]
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    9 ^% q: y5 M! W6 p; K; u
  2695. RTS
    ' N6 ^+ R, Z3 x4 ?# `- [
  2696. 4 e1 W" d$ W* ~8 z
  2697. ;==================================================* h+ M) a3 s" d" W0 H
  2698. Sound_Init;音乐初始化" {  f* C( }+ u' }+ M7 c
  2699. PHA, _% z0 W+ C& m8 e8 Y* o6 W6 Q
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    6 D; T6 g: `3 ~  R/ u0 p9 s6 \
  2701. PLA. w: `9 b* e, t
  2702. JSR JSR_Addr_Op        ;执行音乐初始化1 n, h. A- ?8 b. S- @3 J2 I
  2703. JSR Switch_Main_Bank   ;切回主程序6 g9 g/ O5 h3 v& S" y8 A- Y& h$ }
  2704. RTS
    ; |, N0 o) o, Z8 z6 q" r; s% s

  2705. 2 B) X+ D" Y" J5 I
  2706. ;==================================================
    0 o- g; F5 t# K) T8 h/ M
  2707. Sound_Play;音乐播放
    8 {3 ]7 V9 O, f0 }% b
  2708. JSR Switch_Music_Bank  ;切换到音乐bank' a1 t2 p( K- L3 d
  2709. JSR JSR_Addr_Op        ;执行音乐播放0 `  w' p  W9 D6 V/ \% n9 y! Y2 p
  2710. JSR Switch_Main_Bank   ;切回主程序. J& p. j: A. }4 i) R4 Q, U. T
  2711. RTS/ J* ~1 w# `" _' ?

  2712. 0 c' K) n5 c: r( Q
  2713. ;==================================================: Z( d. X; i$ F, C+ J
  2714. MainLoop;死循环
    2 O7 f) h+ X: {4 H& E
  2715. JMP MainLoop
    ; [8 I7 |( \# b% c' Z! Q2 J" L

  2716. % a  e+ z  H) g3 @# Y% ~7 u
  2717. IRQ_SUBPROCESS_JMP = 0
    ! U( t& o5 [$ P7 B
  2718. . d1 M! I" Q( ]: \  ?5 C
  2719. .IF IRQ_SUBPROCESS_JMP
    0 a* ]0 G+ T  u- `2 q% Y. v3 J  k+ O
  2720. ;==================================================# x7 n% L0 w" F) e0 m5 A
  2721. IRQ_Process_0;IRQ处理过程0/ u) y5 z: j" g* P. V4 E5 p
  2722. 8 r) T; {( @% E
  2723. ;15条扫描线后触发IRQ7 C3 |) C7 M  r0 |: v
  2724. LDA #157 b" q9 E) E8 f: `3 }% f, ^
  2725. STA MMC3_IRQ_LATCH
    5 ^) v; _* N& X8 c' h
  2726. ) U2 G; E) v- c0 ]
  2727. ;设置屏幕滚动
    5 g0 y" ?) N5 n3 r: P$ j1 _
  2728. LDA <Scroll_H
    - p+ B) Z- \! Q9 K$ P
  2729. STA PPU_SCROLL
    7 \* D! _& {+ \
  2730. STA PPU_SCROLL( L0 D& R9 \! G( A( T
  2731. " t/ F7 ^% ^+ ]* U, I
  2732. IRQ_Process_0_End
    # v$ D4 v1 i, @8 Q8 a
  2733. INC <IRQ_Process_Index
    ) U! i, r3 E  F: n+ N. t2 A
  2734. JMP IrqProgramEnd: D- w9 L) ]. q" k8 v
  2735.   d- t" p. F/ K% C5 C* j
  2736. ;==================================================
    * {% ^! Q( Z  m. t* X# ?: I
  2737. IRQ_Process_1;IRQ处理过程1- i1 ^) S, P# c3 ]% v1 Z/ d" D

  2738. . i3 F/ \- I$ h# `# E5 s. i& u+ H
  2739. LDA #55
    ' ~& o; A7 @- `& k& o4 t* m
  2740. STA MMC3_IRQ_LATCH0 K3 r- j+ b2 h0 h- W
  2741. ) C: S% n/ T, z# H0 U$ l3 @. w  L/ T
  2742. ;设置屏幕滚动: q* d0 W7 O' o0 G( V
  2743. LDA #$00
    ) u8 I/ U( ]; K5 \- Y5 e6 @
  2744. STA PPU_SCROLL
    ( h0 Y7 ]+ u% x
  2745. STA PPU_SCROLL
    - i9 }& C7 J* _) e+ ~
  2746. 6 x% ?# w) f) K
  2747. INC <IRQ_Process_Index
    7 L( d- P: S( p: G% Z
  2748. JMP IrqProgramEnd
    8 t3 ?/ q) H$ a* Z$ G) P/ K, l5 s

  2749. / b. B6 K6 C. |, ~8 R% A
  2750. ;==================================================
    ) l' e- h  h0 m8 K- i( w
  2751. IRQ_Process_2;IRQ处理过程24 S4 T3 T4 u% J4 t4 V9 x- B

  2752. / I- K) R3 N( z4 w6 F) q; j, t
  2753. LDA #15
    ) `$ N; o, U  ~% Z( p9 V# l& p# D
  2754. STA MMC3_IRQ_LATCH/ W* l- X* h8 L3 F

  2755. 3 @& H- a7 |$ {2 z
  2756. ;设置屏幕滚动3 H/ g/ V9 H+ @' }2 _% R
  2757. LDA #$00( m) V4 e2 x/ M! I
  2758. SEC5 s) I3 ~* U; I4 D" y; `
  2759. SBC <Scroll_H
    ( Z% n" n8 R6 _; _
  2760. STA PPU_SCROLL
    + u. Y4 }4 a2 l% |' D
  2761. STA PPU_SCROLL
    8 L4 `) ^0 I4 A2 O

  2762. 5 A" Q5 S' @  B0 j* c; h
  2763. INC <IRQ_Process_Index
    & q/ w5 f$ |! ?. z( F
  2764. JMP IrqProgramEnd
    ) r9 d4 b+ R: G, K, K0 j4 U

  2765. 5 n  ]2 V- M# a
  2766. ;==================================================
    ! u; L  [0 w: R" r0 _: W% N  v
  2767. IRQ_Process_3;IRQ处理过程36 r- i0 t4 P& \6 G0 O6 Y% N- n

  2768. ) d: \' E8 ^/ s0 t% ^
  2769. ;设置屏幕滚动
    # w+ r) o. I3 |/ L5 Q
  2770. LDA <Scroll_H
    6 e/ t( U2 R( j, a
  2771. STA PPU_SCROLL
    ( X; X* b2 f; ~% Y
  2772. STA PPU_SCROLL, X# C! T" u8 B8 M" T

  2773. ' `8 S7 q1 g6 L
  2774. ;禁用IRQ
    $ h5 Q' B8 X& d2 Z! s' G) J
  2775. STA MMC3_IRQ_DISABLE0 C( X6 v& R8 t  H" r' S
  2776. JMP IrqProgramEnd
    8 D! @6 p7 P5 [( P0 q  \1 K2 v/ |
  2777. 6 e4 |* m. U+ c3 \, q7 L+ P* r
  2778. IrqProcessAddr
    2 D8 A" K9 r0 X+ Y& y) T( Z% M& f
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    8 f$ Z* c) F  P& {4 M& s
  2780. ( P, H6 O# S0 p  v0 g
  2781. .ENDIF/ k) l, t( {6 d4 d$ k( N( I8 L

  2782. , o# i3 p! K1 [6 U' `" f) K6 t! Q' q' x
  2783. ;==================================================
    # O- k# d0 |9 e' A/ ^5 z
  2784. ;IRQ滚动模式常量$ J! `0 n" R# G  G- m6 J5 H6 ~7 O; F/ O
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动3 ?, S$ ~+ o2 t( A3 H" M
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动) W3 A; ^8 Y/ n# d1 I" Y1 S+ K* {9 ?! ?
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动" _* P* j; @/ O- H, w, S& P

  2788. + c6 ~7 x% j$ d& m
  2789. ;IRQ扫描线数据
    6 s& F- p2 M7 m  d' x
  2790. IRQ_Scanline_Data5 J! q9 l4 ?. h$ K+ |0 L
  2791. .DB 8+ X2 d. _: j( P8 k2 y
  2792. .DB 54
    % K8 g4 z- f' o) V
  2793. .DB 8
    0 C' v: v/ o2 V- k/ R
  2794. .DB 00 ;关闭IRQ
    " K) n' }% p2 ^2 }
  2795. - f: ?) ^. N; O4 Z; p. B* E& l6 ]- y
  2796. ;IRQ滚动控制模式
    - ]2 f3 L. x  y% a
  2797. IRQ_Scanline_Mode0 n$ P" x% a. Y5 A6 U
  2798. .DB IRQ_SCROLL_MODE_ZERO+ \/ Y+ ]5 j' ]
  2799. .DB IRQ_SCROLL_MODE_ZERO
    1 z2 x* a7 F& y& a- `/ E$ B
  2800. .DB IRQ_SCROLL_MODE_RIGHT* T" j1 j, P; K' X/ [- y0 Q1 m
  2801. .DB IRQ_SCROLL_MODE_LEFT
    % Z9 `& z1 B+ w' x$ E  ~% ?
  2802. ( p% v2 Z# K8 W1 q5 e1 j* b- A
  2803. ;==================================================1 g9 ?2 Y" S! F1 G5 ?
  2804. ;IRQ处理: q9 l2 ]; O2 f" _
  2805. IRQ_Process
    6 Y+ Y5 e) F( u) K% ]
  2806. LDX <IRQ_Process_Index
    8 Q; @. F# ~' }9 L$ H* x/ s. h$ D) k
  2807. LDA IRQ_Scanline_Data,X
    " c/ `0 I0 d, T" _" q
  2808. BNE IRQ_Process_Latch. B  E. Y# Y$ A9 B
  2809. IRQ_Process_Disable;禁用IRQ
    % V* b7 H+ d8 [: b
  2810. STA MMC3_IRQ_DISABLE
    3 A8 c9 n# @- y4 L' m# r% _9 Z
  2811. STA IRQ_Process_Index
    3 o1 h, g7 Y! K9 z8 D& a  P
  2812. BEQ IRQ_Process_Scroll, C8 U- ]" w# V5 L
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线) E$ h# r( J5 x
  2814. STA MMC3_IRQ_LATCH9 u4 \1 G1 G  ~; W
  2815. INC <IRQ_Process_Index7 s# p+ S% i& W. \0 ^( M9 F
  2816. IRQ_Process_Scroll;IRQ滚动控制% c0 |5 Z0 ^+ A" x5 [2 o
  2817. LDA IRQ_Scanline_Mode,X! L& |; H; r5 F" M: v
  2818. CMP #IRQ_SCROLL_MODE_LEFT  }4 R/ B  C/ q+ K1 q! ^8 ]
  2819. BEQ IRQ_Process_Scroll_Left
    3 k* N  M6 S, y) ]  r- I* w9 P
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    4 a( X; i) l8 r0 D2 y
  2821. BEQ IRQ_Process_Scroll_Right( e6 I6 _! M/ A: C
  2822. IRQ_Process_Scroll_Zero;不滚动
    2 \0 f+ Y; _2 @# C0 f3 w, B
  2823. LDA #$00
    / d. x5 t" H2 l3 x
  2824. STA PPU_SCROLL
    % w5 O: s/ e3 S9 l2 Y# F. k* k" u( ]
  2825. STA PPU_SCROLL
    , `* u  ^! T) b) v0 Q
  2826. RTS
    $ Q2 _" F$ g9 N3 x& F8 D- R
  2827. IRQ_Process_Scroll_Left;向左滚动4 \4 H4 U. @' d
  2828. LDA <Scroll_H: X0 P4 i' s+ u+ y8 [
  2829. STA PPU_SCROLL
    ; H& m0 ]% R. ^( L, E6 {
  2830. STA PPU_SCROLL# v, Z2 @# B4 e' [" [  o4 c
  2831. RTS& g8 G/ d- D& D% g/ O8 [9 d* t% ]
  2832. IRQ_Process_Scroll_Right;向右滚动. ~: P' e! ]* \1 b" z
  2833. LDA #$00) r+ Z; x! M. i
  2834. SEC5 f" j2 ?; i7 Z  i( _* [9 P3 N
  2835. SBC <Scroll_H
    ! a# `; {& L7 ?# K2 [
  2836. STA PPU_SCROLL- q4 R  ]" B6 X% Z
  2837. STA PPU_SCROLL: _4 ^. o: f3 ]: t! [
  2838. RTS
    % \$ o1 }7 T/ f
  2839. ' y( a; Y4 b# x- X% b( T
  2840. ;==================================================. h$ `8 {$ x( L. G8 O9 E
  2841. NmiProgram;Nmi中断处理7 c1 u/ D+ g+ x
  2842. PHA) _$ F  N: S7 {! @
  2843. TXA
    ' Y, W% [9 s& ^4 o' ~( @; E
  2844. PHA; J) t6 i  X( C, ^# W3 G
  2845. TYA( E3 k) y& d1 u$ ?: [2 X- G) G! N
  2846. PHA$ G3 ]& _" m. {; J8 u% d
  2847. 6 r  D. U$ ]9 C* \9 E
  2848. ;读取清除Vblank标志, 防止重复进入8 F/ ]/ L9 o9 z1 }& Q' I
  2849. BIT PPU_STATUS' q$ a- c( O  M0 I1 I: W2 K

  2850. % ^; ]; O  U0 V+ `
  2851. ;切换主程序bank
    : D7 J* ^" M4 r8 `0 [/ D" J
  2852. JSR Switch_Main_Bank
    * G* b% Y- G  j' d5 V
  2853. 6 W2 d2 L: M! G( P8 `
  2854. ;Nmi处理$ L5 m1 D8 J/ Y3 `1 K4 P( D
  2855. JSR NmiProcess
    % Y  E0 ?6 Y! F

  2856. 0 N1 p$ o( P. L) q4 r
  2857. Nmi_Proc_End
    9 @) p% m. a) a: l% [0 t4 z
  2858. PLA6 t4 i0 Z0 H) e9 \, ^. o+ ]2 p
  2859. TAY
    0 m4 R5 P$ x% V" k4 ^
  2860. PLA
    2 G( y; N- U: k( K; H1 H
  2861. TAX
    # f3 h# I& e* P& h' q+ ]3 V2 f
  2862. PLA1 J9 D' t" G3 |3 @
  2863. RTI
    + d/ V# s2 m! G9 z

  2864. . b8 P( k8 z* c5 z$ `' _. K
  2865. ;==================================================4 M+ @5 d3 g/ L
  2866. ResetProgram;重置中断处理2 B. m0 J- d% C% p! J0 W6 t
  2867. SEI
    / _+ l/ M* K% G0 e& R9 a
  2868. CLD; A! s0 h. M/ o
  2869. LDA #$00
    8 \! j5 q( {7 T: Z
  2870. STA PPU_CTRL
    / L8 u& I" g1 O; h
  2871. STA PPU_MASK" s0 J0 J, n$ ~6 a+ x3 ~; I

  2872. 0 U" @5 [8 B2 A: F# [; m- a
  2873. ;切换主程序bank
    # _+ c0 O5 [4 \  g5 Q& V
  2874. JSR Switch_Main_Bank( Q- o1 G: E) f2 F: A7 u" U; e
  2875. ( k8 h8 H. `( C
  2876. ;程序处理开始9 m5 l- Z2 S2 q3 K4 L5 L
  2877. JMP ProgramBegin9 N. O7 H+ L5 a# }7 `. Q8 S
  2878. + N; y' i& q: v! i
  2879. ;==================================================- M/ o/ f1 @) p
  2880. IrqProgram;Irq中断处理
    6 ^1 D; R; d5 ?% _0 a# [
  2881. PHA
    ! s; q' b& P: Z# g
  2882. TXA- l8 o/ k( o: |" _) k) n  o
  2883. PHA/ x& k9 K0 a# q( V& u% `% Y  Q' N7 C
  2884. TYA
    4 p8 I: G5 K9 b8 ?
  2885. PHA
    8 M- z; R4 M! w: l& ^: A

  2886. 1 f$ F6 @/ J/ T' {, Z2 l$ J/ z0 U6 g
  2887. ;关闭IRQ
    : l& }9 ^0 |; h" d: |3 ?- g
  2888. STA MMC3_IRQ_DISABLE+ `: F4 }& D( Z

  2889. % K  _7 P& {+ K3 V* w
  2890. ;允许下个IRQ触发
    5 N3 {5 M3 ]/ v$ p. o4 E/ K
  2891. STA MMC3_IRQ_ENABLE2 e' ?; R, M* n) d8 P2 P! v( |

  2892. # ~7 [. X/ i' J9 i
  2893. .IF IRQ_SUBPROCESS_JMP  _% b  u4 G8 F# J6 c: [
  2894. 3 Z( a8 l* `# B! A5 R/ I6 @% V
  2895. ;执行IRQ过程! ^8 ?3 O2 c. N  q7 Q7 e
  2896. LDA <Data_L
    ; }( z% ^+ T0 a7 i% M
  2897. PHA
    : b, _8 c+ L+ `" h
  2898. LDA <Data_H
    & g( ^/ D8 L' d
  2899. PHA
    4 d& A( ?$ L3 H2 g! i; v# y" Q& P
  2900. LDA <IRQ_Process_Index2 A) K6 L1 c3 E# i
  2901. ASL A
    ' X4 c7 W. Y2 n8 t6 o0 g
  2902. TAY9 J! t9 X$ O+ l* l4 A( a# D
  2903. LDA IrqProcessAddr,Y0 L1 @+ N# y0 [1 I: b
  2904. STA <Data_L* i* H6 V/ h2 @2 T0 v" m* W
  2905. INY: p( C$ r+ x/ @" a: I9 H
  2906. LDA IrqProcessAddr,Y
    1 J8 h* E3 j0 {, i- n/ A
  2907. STA <Data_H3 Z. l- t% L- f
  2908. JMP [Data_L]1 g+ W9 t0 {# z5 `- H3 V
  2909. , p- N  D# Q# s3 G! O
  2910. .ELSE/ i" Q+ k# s1 a& d

  2911. 4 ^( C! u9 O( h# O. _1 i
  2912. JSR IRQ_Process+ q) K1 u. W, T% F& ?% {5 q7 V, Q
  2913. ; p, p7 L! r; G
  2914. .ENDIF
    ' `1 I% d* A0 P# D4 w
  2915. - V" J5 M5 X3 `$ n9 _: _/ w" ?
  2916. IrqProgramEnd
    & ?2 [" O  Q1 F# Q5 h
  2917. .IF IRQ_SUBPROCESS_JMP
    : p* Z( M3 U4 ~2 ?
  2918. PLA9 s. n" q# H, q9 Z
  2919. STA <Data_H
    & f# N0 p% Y6 d% L
  2920. PLA5 ]% U; y$ Y0 `2 c* p
  2921. STA <Data_L  w! Z8 X. V: G5 B
  2922. .ENDIF5 M2 L+ g3 q4 m
  2923. PLA
    ; i! U0 ]  N' E1 V' J6 `6 V2 |
  2924. TAY7 m" g: N  Z, O  g3 ]" W' r( @
  2925. PLA
    * w" L& r* D  M+ o  Z
  2926. TAX9 J  G1 d6 s5 ?) T& O
  2927. PLA
    0 o) e" }* y# w
  2928. RTI# u( l! |( k% ]* p) {8 X
  2929. 6 d, U  e/ b+ L2 a) K
  2930. .ORG $FFFA
    : w) H" Z4 c& y/ ]; l; p
  2931. .WORD NmiProgram  F( {! m' S3 S9 T: V. L
  2932. .WORD ResetProgram8 {) A  x# B9 O6 A
  2933. .WORD IrqProgram
    / X5 U  @  R1 e5 f4 W$ D# S

  2934. ( H1 a- ?3 i" C8 l; S  i9 Q9 A  C
  2935. .BANK RESET_BANK & BANK_DATA_MASK5 ]; Z. J  I. {* N" v
  2936. .IF SOUND_BAR_SHOW_ENABLE9 m7 N3 E0 k5 z5 Q

  2937. , T: i2 w/ }( E- |/ A7 H) U! S2 [
  2938. .ORG $FE00! N: S# G) _6 A6 p" n& b0 g
  2939. PHA! u1 j5 \9 i5 h3 M1 C' d( z
  2940. STY $07BA0 b, I. Q' b. i# D2 y
  2941. LDA #$8D4 Q4 }! R, a" q5 c+ d7 b/ X% d
  2942. STA $07BC
    2 R$ m9 M2 w, G& O: U9 p
  2943. TYA
    0 z/ o) T4 [* H1 T2 y3 e9 }& q
  2944. CLC
    ! Z: v; c6 f' Q2 ]
  2945. ADC #LOW(Sound_Bar)
    3 }7 ~) J* f9 d9 h8 u
  2946. STA $07BD
      W) p' X* S7 ?0 ^5 n
  2947. LDA #HIGH(Sound_Bar); e; G9 X  J8 z, D) P
  2948. STA $07BE; R4 Q( m) g" S  O( K0 {
  2949. LDA #$60" @$ [( M' D/ u) X' @# l2 w1 B
  2950. STA $07BF
    - M1 n/ F" q. \
  2951. PLA
    - R2 j5 X6 P6 }& Y% D) \
  2952. RTS
    / |3 z. L) T) ^- L2 O
  2953. ( D. u7 a; r$ a. B$ U5 e
  2954. .ORG $FE20" w, s7 e0 m6 V
  2955. STA $07BA, Q/ I. B2 I( W0 J# m, @
  2956. CLC7 D9 B$ Y3 l  a& ]5 v' Y
  2957. ADC #LOW(Sound_Bar)+ d& U* K' M# A3 O
  2958. STA $07BD
    9 g, H; M9 Q# N+ v
  2959. LDA #$8D0 |7 n3 y) G: d& n6 U
  2960. STA $07BC- M% T. \5 c9 N2 U1 n
  2961. LDA #HIGH(Sound_Bar)
    ; H3 ~2 b2 W: ?' Z, J1 P" D
  2962. STA $07BE
    . j- I8 W! q+ o- y
  2963. LDA #$60
    1 @# D; Y  Q& H4 j1 b2 P
  2964. STA $07BF
    , ?( J6 i( r. h* s- o
  2965. RTS
    3 |' U& u' ]) j7 w9 o
  2966. % i7 J9 \/ t) W9 ^' T8 f" M
  2967. .ORG $FE40
    1 t& x$ {$ @+ _- q
  2968. PHA
    6 c' j" p, p+ E' \/ _
  2969. STY $07F1
    ; W1 }/ N- B: {3 W% P7 H2 y
  2970. LDA #$8D! [# X+ I0 e& H8 t
  2971. STA $07F3
    - d1 C7 e) j' Z$ S' _% U
  2972. TYA
    ! S- l  t+ p, W; v5 V+ X) T2 j
  2973. CLC, a4 i5 ^/ ]5 K2 `6 z9 x3 j' {
  2974. ADC #LOW(Sound_Bar)1 r- C1 ]5 ~* H3 Z) o- I( P
  2975. STA $07F48 D- f' L. X' x0 {0 `/ e
  2976. LDA #HIGH(Sound_Bar)6 E) z0 W' y4 ?
  2977. STA $07F51 Q3 |# E- h0 Y0 Y
  2978. LDA #$608 Y$ B- {+ s- a7 D
  2979. STA $07F6
    ; v' c/ p; U% P  B1 B9 |
  2980. PLA/ v) ~) |7 T. ^+ N9 N7 \8 S! |
  2981. RTS" J, v: d9 E1 p; _$ o" L
  2982. ( [5 V! }2 y$ v5 D; y
  2983. .ORG $FE60
    - V3 @4 L. B2 ^7 Q
  2984. STA $07F1  I# r% G2 [% x% }
  2985. CLC
    ' q9 K" P) [7 Y
  2986. ADC #LOW(Sound_Bar)
    * y; H( j" {5 F9 ]
  2987. STA $07F4
    1 W7 p: m. K$ }3 [" A$ G
  2988. LDA #$8D. L* S2 {7 S+ ~) y8 N1 ~
  2989. STA $07F3
    - B' C& |9 p& t% ~. `/ z
  2990. LDA #HIGH(Sound_Bar)
    7 s1 G, x/ k! }. b# A
  2991. STA $07F51 m, b- U$ G3 R  Q# g2 H7 {3 B
  2992. LDA #$60
    , x3 S( `, T0 p1 l
  2993. STA $07F6
    6 C" W, _' J; c7 A/ N2 z
  2994. RTS4 W4 f. m3 r+ N1 W. h+ t4 H
  2995. - X; Q/ o" ]* v% L  u4 B! D2 ?
  2996. .ORG $FF40
    - F+ e9 x% C. @& `- l# n8 e$ [
  2997. STA $4000
    & Q/ i1 y. F' Z
  2998. STA Sound_Bar + $00* R" w: k! T  A  Q; S7 ]
  2999. RTS! ]: q. h/ H) @1 F6 l! s2 W# q
  3000. 7 t# e# S' O# p& m
  3001. .ORG $FF48
    * {- O8 E, M8 |5 \
  3002. STA $4004
    ) X) f/ [( P( t4 o
  3003. STA Sound_Bar + $049 |) T* [8 f* C  V) p. A6 K( N
  3004. RTS# @/ q* Q$ w0 i% c6 a+ w4 B
  3005. , ^* e& M( v9 d  V6 R8 w$ T
  3006. .ORG $FF50
    : G% i# q: d, V& @( g6 w6 y
  3007. STA $40080 d  [$ C) _* @) B) N) n( f2 w
  3008. STA Sound_Bar + $08$ Z2 r8 f8 ^4 o) s. [- @
  3009. RTS
    - M- G5 i. m: W/ m
  3010. ' A8 C* r* V( R  g) Q* D
  3011. .ORG $FF58
    1 ]1 |# o2 J/ v, t( v
  3012. STA $400C
    - u% j) t/ t* K
  3013. STA Sound_Bar + $0C
    1 h1 s5 [+ [) ^- `7 c% Q" V4 ?; S
  3014. RTS* o/ {4 G5 S" z4 W2 D( l" D
  3015. " [) z/ F# b* E% m6 Q
  3016. .ORG $FF600 L4 C* X% ~" W2 L0 Q5 Q
  3017. STX $4000
    0 r# P- I  \1 U( U, s
  3018. STX Sound_Bar + $00# g5 p( W; k' ]1 i
  3019. RTS
    2 k% H' ?  T! t% ^( [. k4 }; Y3 C( ?

  3020. 9 e. ?/ k; X0 N8 F
  3021. .ORG $FF680 y! N2 C* `' ?. Q
  3022. STX $4004
    5 c$ X2 W3 |$ Q; C' E0 j% P  k
  3023. STX Sound_Bar + $04; [! `, x, T7 G6 |! N7 P
  3024. RTS! B  ^) J" o+ C! A3 I% w
  3025.   \$ @6 h4 g0 r; A( o2 k; p0 r0 m
  3026. .ORG $FF705 N) G& p4 M7 z& u6 P
  3027. STX $4008" u9 Q( f) Q5 u0 ~3 ~+ Y
  3028. STX Sound_Bar + $08- u! b! w% k  g
  3029. RTS9 x. F; q/ T4 v/ _

  3030. ; G1 s0 B8 V: L: T0 T2 i
  3031. .ORG $FF78
    . v' S0 ?- ^8 N$ e
  3032. STX $400C; |/ h5 s: ~) n3 Z, P
  3033. STX Sound_Bar + $0C
    1 H* t2 W5 l- O
  3034. RTS
    0 q, {$ w# w& F/ v: x5 @# t

  3035. ) k7 l% o9 y2 T3 T
  3036. .ORG $FF80* }1 `; f2 h3 D; J$ w5 }
  3037. STY $4000- y  p4 f& W: ^; [# j
  3038. STY Sound_Bar + $00
    ; s0 {1 b1 Y+ x
  3039. RTS3 ^6 s7 J6 e  v: P

  3040. % I' p+ @& C6 ~$ G% R4 V
  3041. .ORG $FF881 L3 {! a& Z3 Y# g6 ^+ x
  3042. STY $4004
    6 ]2 f- G& f! g; X4 }
  3043. STY Sound_Bar + $04
      u  J5 v* V. I$ I
  3044. RTS. H  t2 B, B0 B9 ^
  3045. / |2 K& U" E, r# t. V) n8 G
  3046. .ORG $FF90
    7 G0 @5 Y. }0 v0 k$ n4 e. a% r! ~
  3047. STY $4008
    * m. T( Q  D2 ]5 Y! L2 v
  3048. STY Sound_Bar + $08% |6 f6 _& ^6 g
  3049. RTS
    ; v: W6 E# @. l) k1 u  W, O

  3050. 1 m, D( a+ M; O: f4 o
  3051. .ORG $FF98! v- K/ u& w% z# Z
  3052. STY $400C5 h& H2 g) O$ w$ _. X0 n% }
  3053. STY Sound_Bar + $0C5 D7 V6 _( r. G9 g
  3054. RTS
    / T1 P2 p, ]6 I, v2 I( H7 i
  3055. ( ~! B. V1 Q# r; `3 @
  3056. .ORG $FFA0
    % G9 J, a: e* M; L2 K
  3057. STA $4000,X
    0 Y. L& ]' S/ ~; n- H
  3058. STA Sound_Bar + $00,X! d' Y# _7 w0 g8 J
  3059. RTS* {% h/ h' _$ c: T

  3060. 5 ~0 q3 ~% }1 ^
  3061. .ORG $FFA8
    7 H; P" F4 o* i/ L+ {$ ~, {( z/ v
  3062. STA $4000,Y5 q5 R$ |4 }' \. {
  3063. STA Sound_Bar + $00,Y
    ; ^6 g# Q8 ^: a& U) i1 J
  3064. RTS
    1 [/ F' ]" t1 u$ s

  3065. 4 m7 q- k7 W0 x" x. |
  3066. .ORG $FFB0
    ' @0 ]+ D+ s+ A& g( S5 {
  3067. STA $4004,X. g+ F* I7 c8 d" H$ @2 g0 [# K* g
  3068. STA Sound_Bar + $04,X
    + X9 a) ^" a& R- e) G
  3069. RTS
    ; [9 S  h5 v% U$ q+ L

  3070.   B7 |( Y% `" h
  3071. .ORG $FFB83 g* A. t0 Q7 c8 B8 H% [# l
  3072. STA $4004,Y1 {0 R. m" [9 q" \2 E8 G
  3073. STA Sound_Bar + $04,Y
    ) S5 F0 Z% g& P0 e
  3074. RTS  S4 P* b4 F* A) X, y, r# k

  3075. 5 |( d2 R7 j- E0 `
  3076. .ORG $FFC08 A4 \' z) ?7 d" _! g
  3077. STA $4008,X. ?; \) g- O4 w7 }& P4 O
  3078. STA Sound_Bar + $08,X; t8 Z" Z6 W4 l5 M! x, L
  3079. RTS. \7 D  n  x: }1 j* Z) ]3 R9 P
  3080. 5 I& n; X2 r, E
  3081. .ORG $FFC8
    " P) G+ ~$ W0 f+ _* ^
  3082. STA $4008,Y9 e( a, w' j6 J& @, I% B& z
  3083. STA Sound_Bar + $08,Y
    , H, w0 u: c9 H0 }6 ?+ n
  3084. RTS% P9 |/ a. S4 x* T6 ]1 n; b

  3085. . u. C2 F1 g3 C" [
  3086. .ORG $FFD0
    + z7 p( \. n, h. r
  3087. STA $400C,X
    6 J6 B- h* a8 n1 w
  3088. STA Sound_Bar + $0C,X
    # b+ V* \( y" S( m* I+ Y1 S8 x2 }
  3089. RTS
    ! n- q5 W7 o7 l1 f( u4 n

  3090. 5 ^, ?8 g/ p3 `+ q% \1 @: P+ e
  3091. .ORG $FFD8* H: i8 N. ?" x6 ~% C% a* t
  3092. STA $400C,Y
    * C! Z: H0 U+ M- A: p
  3093. STA Sound_Bar + $0C,Y
      z8 C. Z; L; c
  3094. RTS
    ' I2 z2 ?5 C" H, a5 D( J
  3095.   n7 D/ ~! O0 N: w7 z& v2 W
  3096. .ENDIF
    1 P: v2 a+ g; S5 ?$ q1 }7 x
复制代码

4 N* N# v) L( a1 P4 f1 ]7 A
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3184 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-26 17:43

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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