EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 ' M/ q# G9 Z" i5 Z3 e" w
0 o( G- [; t# F4 X- z( ~
[FC][音乐12 IN 1]; |- o  _& ?% D$ S
时间: 2023.07.231 a  q4 m( G  ~
作者: FlameCyclone
) [; h; S2 h4 H! M& g* }- S0 E( A; B* N
收录音乐内容:
1 w% o* U" x+ a, O" [, B1.Raf世界' f$ _. m  Z' t- n# ?& u5 ]0 Y! F
2.最终任务8 J1 ?6 L1 U  P- {( Z, g
3.赤影战士$ q4 e- S8 I# P
4.双截龙0 f' X. f9 r- b  o1 Y, T
5.双截龙2& G  e0 A% R& F* v/ `
6.双截龙3
% f1 [0 a' B' s; d9 v' E7.洛克人- \7 _6 I+ n3 ]0 {+ w( j" g
8.洛克人2& E0 G+ J, s3 G, N
9.洛克人3" P6 s* n0 e$ E& S$ s0 U3 n3 e
10.洛克人4
0 K( i5 l7 z& ?' r7 T+ ?2 c11.洛克人5
1 [+ y# H2 s: ~* ?7 e1 `# |4 ~0 a12.洛克人6
! y) C8 m8 X% I5 q) u" x( e/ l3 v5 z5 I  G
操作:
  D0 q! O6 r( s! U$ ^/ _上键:         上一个专辑
) m- c: [  s2 Z& {下键:         下一个专辑. I' J5 h! \) l. ^* N: y
左键:         上一曲
5 j- t' v! C8 l- G, e右键:         下一曲! k( p4 \" F! \5 S2 G0 a
B/A键:        前10曲/后10曲
9 f+ N& I2 V( z6 Z9 a: j选择键:       下一页
9 |" N% r0 s5 a5 k* ]开始键:       停止/播放
; u% o: [5 @. w8 P4 E) Z; W- r' k2 m' }" W
http://flamecyclone.ysepan.com/4 d% w5 I4 O9 U& M* i# Q
# a0 e- \! W5 c& M
1 H$ M* {/ C0 z% i
; W4 X, ~' T7 E& L

( }( H& J2 B  H( T7 W9 E
  1. ;[FC音乐][播放器模板]: c" r0 L# |  h0 q
  2. ;FlameCyclone 202307103 b0 o/ M) E* }6 H3 g$ g

  3. ( }9 k3 p7 w* _& h% [$ I4 W
  4. ;文件头/ O% h1 F5 y7 S* {
  5. ;======================================================================
    # F, i- m% b1 t; S( ~5 x" z
  6. .INESPRG 16                                             ;16KB PRG 数量3 N7 x6 D! ?# o9 c3 p- |
  7. .INESCHR 1                                               ;8KB CHR 数量' P' u5 {8 R! S6 |% W  z
  8. .INESMAP 4                                                   ;mapper 4
      i- |2 X5 J6 p2 {& h5 @' d3 x* w
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直. e4 H( i) O' R; ^

  10. ! o; |+ B: T6 U# c' |$ J4 T$ r
  11. ;==================================================, l' W, f6 x* n- [9 @! \2 g9 |5 m
  12. SOUND_BAR_SHOW_ENABLE       = 1) B4 m" X8 T3 a9 Q* g
  13. ;==================================================; ~) Z6 L+ Q% |& ?
  14. BANK_DATA_MASK              = $1F
    ( |* h  u; Q0 o' J. B0 A
  15. CHR_RAM_ENABLE              = 0
    & a0 v- I4 `# i0 A2 c( g" O
  16. IRQ_SCANLINE                = 136
    : @( U9 S' U. Q* Q4 f
  17. ;==================================================
    & H" }9 B; O9 h. \
  18. SOUND_DATA_BANK_00          = $00% j2 t' z. P1 s$ U% V, w* |+ `5 W
  19. SOUND_DATA_BANK_01          = $01
    , V1 F" p' ^) }+ U; h/ w: Q. `; y: R
  20. SOUND_DATA_BANK_02          = $025 W% V4 {( x8 T, r. |
  21. SOUND_DATA_BANK_03          = $03
      a) v5 e% q1 j; i. V5 ]
  22. SOUND_DATA_BANK_04          = $041 T; ]; x  @3 n; `
  23. SOUND_DATA_BANK_05          = $05
    7 u) y* D# p& @5 |8 c4 M+ d/ k% u
  24. SOUND_DATA_BANK_06          = $06
    8 ?+ {  M* {$ l8 \
  25. SOUND_DATA_BANK_07          = $07
    , ]4 p1 q- b  n: B# P
  26. SOUND_DATA_BANK_08          = $083 T3 k/ T" A8 y: i
  27. SOUND_DATA_BANK_09          = $09
    ; N8 o) G! x# c& M6 p9 K
  28. SOUND_DATA_BANK_0A          = $0A1 H3 ?( y  H" M" N2 G8 s' [; s
  29. SOUND_DATA_BANK_0B          = $0B' q% D% o3 M3 `
  30. SOUND_DATA_BANK_0C          = $0C
    * u+ K- i: o3 X% U& ~: M
  31. SOUND_DATA_BANK_0D          = $0D* i3 T1 S+ ~$ }: ?$ {' s3 E
  32. SOUND_DATA_BANK_0E          = $0E
    6 N7 q3 D2 `$ u+ n1 z( ]/ ?5 M
  33. SOUND_DATA_BANK_0F          = $0F3 d# t6 T' c, K7 X

  34. ! T- E% M5 q! l9 M# Z: Y
  35. SOUND_DATA_BANK_10          = $10% m4 e3 [  n* d5 I" b# B0 m
  36. SOUND_DATA_BANK_11          = $11
    + s. k& S+ s' c' K5 E7 ~" B! h
  37. SOUND_DATA_BANK_12          = $12, d  w6 a! L- s. {' n& T; P
  38. SOUND_DATA_BANK_13          = $13  |' }6 _( F" ]: d
  39. SOUND_DATA_BANK_14          = $142 {7 L5 p- O$ q, ~6 `5 L5 v
  40. SOUND_DATA_BANK_15          = $15
    $ ]8 E& O( E% w- C, T6 h# p* n" O
  41. SOUND_DATA_BANK_16          = $16
    2 q3 n& m) O/ r8 Z& W
  42. SOUND_DATA_BANK_17          = $172 v' a  V; {' t6 A, h% T7 s
  43. SOUND_DATA_BANK_18          = $180 \9 K$ ~: s$ d3 X$ H2 H  C
  44. SOUND_DATA_BANK_19          = $191 p5 f5 M) W% b* w6 k
  45. SOUND_DATA_BANK_1A          = $1A; G' d5 u6 ]9 V1 X0 W
  46. SOUND_DATA_BANK_1B          = $1B
    5 B- L! c' K6 y+ P8 m
  47. SOUND_DATA_BANK_1C          = $1C1 h+ ~7 V+ p2 T$ P# e# Y
  48. SOUND_DATA_BANK_1D          = $1D
    % l( ~" }$ ~- v; W2 P4 F6 w

  49. * ]. q) `1 ~9 }. A& j
  50. SOUND_DATA_BANK_C000        = $1E
    5 s* s% j3 j. I3 q3 N  q8 u
  51. SOUND_DATA_BANK_E000        = $1F
    2 U9 h2 V7 j, S' G% a3 Q+ c8 c9 U
  52. ;-------------------------------------------------
    ! {; D/ b1 v' g4 k
  53. CHR_DATA_BANK               = $20
      r$ a9 z% h! m; ~7 E* \6 H1 t
  54. CHR_DATA_ADDR               = $A000
    ) C# ?4 I" H% P. M, m
  55. ;-------------------------------------------------, _$ N9 t  ~" v$ T! G6 C
  56. PROGRAM_BANK                = $00& S& U: u+ u9 T( k. f, s, A  O; J
  57. PROGRAM_ADDR                = $8000) G) |$ _2 ~7 K/ i8 s
  58. ;-------------------------------------------------
    : l1 Z3 A! w# y
  59. RESET_BANK                  = $1F
    * a* Y% w% P. z. O
  60. RESET_ADDR                  = $FD00) l2 m0 u. }8 z9 V
  61. , g3 S, g: K6 x, E3 J
  62. ;==================================================
    * Y; D  Q. f; p3 [; y( K+ D
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数% M4 m9 ^' [1 ^8 N
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    ' F# b* X& }! b: @0 g
  65. PAGE_SIZE           = 5                     ;每页节目数
    + h7 I* C. I# H6 e7 S$ |, {
  66.   q: P$ k4 c" q4 F2 M
  67. ;==================================================
    1 o- j5 N! Q8 v" E# }; X2 r
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除1 u& v# i8 o/ J: [7 L+ e- z4 d
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数. x. [0 m$ U0 U, u4 W: P; N# z; K% y
  70. .ELSE
    8 h; I9 o5 W6 i( n
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    6 v: M% S/ |& {2 e" R
  72. .ENDIF
    # S/ l+ L# X& C  f1 u4 C* M0 R: i% k
  73. % ^- c  c: D, v  g
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引. |  s( V5 |, K* _: f* x, N

  75. 8 A) B* P; u& O% ]
  76. ;==================================================
    . n9 j/ O3 U* R8 Z& Z
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置2 j2 D0 O; _4 ~+ J1 l! u" F
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 21 ~* c0 k$ D- Y, j
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;- Q8 x& }0 M3 r4 x) l
  80. ;==================================================
    # o0 S1 |0 Y- Q) n3 I, G7 K
  81. Caption_Text_Pos    = $204D ;标题文本位置
    + a) B" k6 T' y) B; l5 K
  82. Author_Text_Pos     = $2324 ;作者文本位置
    ' i# b' k/ r" d1 R, V% R) I% q
  83. Date_Text_Pos       = $236B ;日期文本位置& m7 u& r, N4 t) q
  84. ;------------------------------
    & L% x/ A1 P8 |" \. y- F0 K% u
  85. ;------------------------------' S* [7 e, ~* j9 k; ~  P
  86. .IF SOUND_BAR_SHOW_ENABLE3 z) Y( V& s% x3 S7 d
  87. . u( \6 `. M# s( ?' }
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    : f1 O; b' ~4 ~
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    7 {2 G9 t0 }0 D
  90. Play_State_Pos      = $22F3 ;播放状态位置
      i' \3 T- b7 g" v% ]
  91. ; U) |9 E- J2 R! X0 x) r
  92. .ELSE" ~# q7 V. b. c- U
  93. : _! q+ S$ X0 w
  94. Play_Index_Pos      = $226C ;当前曲目位置/ b7 ^4 k( q0 @8 w: L- [: e
  95. Play_Time_Pos       = $22AC ;播放时间位置
    2 a3 J7 J% H/ H9 U, t
  96. Play_State_Pos      = $22EC ;播放状态位置
    ( ~1 x( u1 v3 H. l
  97. , z- L  R$ f1 A# n1 p2 _
  98. .ENDIF7 U/ _. x$ d8 D2 _
  99. ;------------------------------4 o. S1 d5 |0 s' L' P' P
  100. Track_Name_Pos      = $222B ;曲目文本位置
    5 g( T9 i6 o) i
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    5 f- o! p" T7 ?9 ~! x
  102. Sound_Track_Pos     = $2265 ;声道文本位置; \6 ]6 u2 t, _. |) d
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    5 E/ M- ^) z5 [- x1 U; x/ i
  104. ;==================================================) s! S0 D% x% c8 D$ g/ N* O
  105. Scroll_X = $00% N8 Y: ^" A0 s( ~8 O+ W" Y/ d
  106. Scroll_Y = $00
    * z* f7 F" l! V; a6 K
  107. ;==================================================6 p" J: `7 s* _2 \
  108. Sound_Ram_Addr_1       = $0100
    0 ^* p4 X3 O: l2 B: B. k& h: S8 D: ?
  109. Sound_Ram_Addr_1_Size  = $80
    2 |0 S8 ?* ^0 x% b" }# m  G$ @
  110. Sound_Ram_Addr_2       = $0090* y1 H# I5 r# y' m
  111. Sound_Ram_Addr_2_Size  = $70
    6 M- n0 j7 Q  _2 d4 ^* V" f- b
  112. Sound_Ram_Addr_3       = $0700
    2 r* e8 m" [; q' {2 h
  113. Sound_Ram_Addr_3_Size  = $00
    3 e( V5 O& g) W1 S
  114. Sound_Ram_Addr_4       = $0400
    0 Y  c' e7 A( ?1 H
  115. Sound_Ram_Addr_4_Size  = $00
    - m  @% |2 |0 M; i/ X
  116. Sound_Ram_Addr_5       = $0500. K/ b: i- W: Y8 m% X
  117. Sound_Ram_Addr_5_Size  = $40
    3 g/ R2 D5 I' c* m( T- e: K

  118. 1 `" P% b7 _+ |4 o  }
  119. OAM_TEMP_ADDR   = $0300
    ! n* n2 {1 [0 \! \$ t- U
  120. 8 \; d7 m8 k2 \9 p7 Q# G- [
  121. ;==================================================& C. _# H; V% N
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    2 E0 ~& j! `% \2 T* X6 \! L
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    , m& K% h9 _$ w) c; Y* O, Y) x2 m
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    ! a, f: f" b  e0 K/ n) ~
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    8 b! K+ j  W0 v. P6 x7 c9 Z9 b
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1; \8 g: T  N6 I  M2 x0 h
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 ( I6 k: }  O1 z! q2 [/ L% G
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加6 B7 b7 P: F: N- L& W
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 8 ]" t* j' r7 Q0 H& ?5 @
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    8 C( {8 p  e$ v8 j: k- N
  131. APU_STATUS              =   $4015   ;声音通道切换
    7 f$ Q6 _1 |% |4 V  G1 G) a
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通( l* x5 t8 O. b
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通. d5 r% S+ b( s4 S0 p
  134. ;==================================================
      d9 p! f" r; [1 v
  135. MMC3_BANK_CTRL          =   $80001 I2 P& d# |" p9 K( {
  136. MMC3_BANK_DATA          =   $8001
      a0 r' I7 n8 b7 D+ q( g
  137. MMC3_MIRRORING          =   $A000
    7 H$ d% G+ a8 d# y
  138. MMC3_PRG_RAM_PROTECT    =   $A0014 p) v5 r0 g; d" s9 b: q) A: Z
  139. MMC3_IRQ_LATCH          =   $C000
    . r( \. P3 m" A4 B4 r2 D0 q
  140. MMC3_IRQ_RELOAD         =   $C001& @% y+ ]! O, |8 ]6 f- @  b& V: u2 _
  141. MMC3_IRQ_DISABLE        =   $E000
    4 o/ `) J& t8 e: V
  142. MMC3_IRQ_ENABLE         =   $E001
    6 `; a5 M6 I+ r

  143. 4 |# k  X) Y% i" B% h0 Y8 N% }1 D
  144. ;==================================================- n5 N- B7 G, n
  145. PPU_Addr        = $0200
    " k+ ~* ^& A: _2 T' t/ D) ^  `
  146. Palette_Addr    = $02C0
      ^' Y8 }# f$ I
  147. Sound_Bar       = PPU_Addr+$E09 I% V3 i5 P" Q) H3 k5 [
  148. ;==================================================6 @% Y0 @" H( d( w) g- j. j+ e
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    9 U) x$ j  m7 c) b# g& U- e
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    . Y  ~9 X( c0 `: {( X" p  B
  151. PALETTE_UPDATE_MAX      = $2C
    / z- x6 H( }. X4 S
  152. PALETTE_UPDATE_MIN      = $21
    + I0 e+ W  {1 _( z
  153. PALETTE_UPDATE_INTERVAL = 60. |  \7 V/ w) E, L) w4 L5 {
  154. ;==================================================1 O3 h9 y! L& r! i4 E8 m  G. z% T9 [
  155. Sound_Bar_Cnt       = PPU_Addr+$F01 G  q0 u2 i2 l) n8 _
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    0 |! Q# @2 t7 w
  157. PPU_Addr_H          = PPU_Cur+$033 w) k) z1 M) f) ]6 c2 I) _
  158. PPU_Addr_L          = PPU_Addr_H+$043 a# h4 ^* g6 W9 Z5 G6 d( J2 N: @
  159. Screen_Ctrl         = PPU_Addr_L+$010 A- q+ r8 O4 }, T
  160. Screen_State        = Screen_Ctrl+$01! F2 X) H3 g5 J! U. {% s& L
  161. ;==================================================
    / e& q8 Z& Z6 s' A( R5 J  B# V1 `
  162. Use_Ram_Begin       = $50! u; t$ U9 ?- V; `/ C% E1 y7 W; E
  163. ;==================================================
    5 W9 O1 P' j* j
  164. JSR_Addr_Op         = Use_Ram_Begin& c8 N6 O% A) s# }, n
  165. JSR_Addr_L          = JSR_Addr_Op + $012 x( c7 d. A  S5 `
  166. JSR_Addr_H          = JSR_Addr_L + $01
    . i0 I$ ?4 `  h5 N7 m  n
  167. JSR_Addr_Rts        = JSR_Addr_H + $011 Z# \' w" J9 \, m9 A- f% c
  168. Data_L              = JSR_Addr_Rts + $01+ [: b5 f. T6 U
  169. Data_H              = Data_L + $01; L+ {1 R( g+ n6 w* C( Q4 s9 [* T
  170. Data_Cnt            = Data_H + $01
    ' d+ D- _+ z! F6 ~! B; w, x
  171. Data_Buf            = Data_Cnt + $01; @% \" i' t4 s; g
  172. Nmi_Time_Count      = Data_Buf + $012 e  R% ], Z9 D5 T1 I( R
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    - D1 |7 }  P/ o3 A& A
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01+ Y" F, i4 b- J* y8 G/ R- Z6 T
  175. 2 \, t7 X2 a" D' |
  176. ;调色板刷新标志3 x" B* M( K% U% b, p/ k$ ?
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01/ R7 u& R1 y7 i( z3 x/ j1 m4 G

  178. 1 s) I3 L: M, f. @
  179. ;当前帧文本写入禁用标志
    0 F" v& ?: }3 y6 f0 R) X
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    9 v& q- X( ^6 N% g
  181. ! ]! `( i7 I1 j; A& u* o
  182. ;==================================================
    " [& [' K0 Y2 H  Y
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    5 H. [6 E! O- G; k+ ^( ~* \& @
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    0 `4 I5 ~/ r; r) a, N
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    : p- C1 q. Y" z
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    ; h* O, {3 w* h. x  _
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    4 ~1 g3 n- Y+ k
  188. ;==================================================
    3 K' _+ Q, ?7 r$ \0 W
  189. Key_Keep            = Text_Disable_Flag + 10 O' P0 c. M3 R! ]9 _! C& E% \6 i
  190. Key_Once            = Key_Keep + $01
    . N1 q( W8 }3 `6 y
  191. Key_Kemp            = Key_Once + $01
    & @4 _4 U# `! Q% w. J
  192. Key_Temp            = Key_Kemp + $01
    , \8 j5 L4 F" v; u. E
  193. Key_Getv            = Key_Temp + $01. |! B3 O  C( [% W- Z* O
  194. ;==================================================6 G! F8 \& u  h0 R" f* U
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    : s! \, [% \. |: J  a$ [4 ^
  196. Music_Item_Last     = Music_Item_Cur + $01
    ) a5 U$ _. J' l0 h1 L, t; _
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    0 K! c' Z5 Y6 @6 X
  198. Music_Cur           = Music_Total + $01  ;当前曲目3 ?0 n) \/ T3 T% L+ p( |
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目. a* L- N1 O6 X
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态5 d% O* v. B6 T+ K! s- Y; |$ ~
  201. ;==================================================* L- n, a8 O' F3 {
  202. HEX_Data            = Music_Stop_State + $019 q' R& C8 [: |' `7 p0 @
  203. DEC_H               = HEX_Data + $01
    / @  i$ B3 j/ u6 w# X2 Q
  204. DEC_T               = DEC_H + $01
    . \2 {' {4 y% `
  205. DEC_L               = DEC_T + $01) Y9 b9 U. T* {  s  \: \8 B
  206. ;==================================================
    " M0 ]/ T2 ~" a0 N
  207. Time_S              = DEC_L + $01, _0 P6 K+ N  ?3 S
  208. Time_M              = Time_S + $01! F& ~. X" _( i7 k! m& h; F
  209. Time_H              = Time_M + $02
    : ~2 G5 f6 I3 N# {# ^6 H2 ^6 N6 X! F
  210. Time_Cnt            = Time_H + $03/ s: y+ X0 K# ?% z8 q: k- r" ]
  211. + V8 `$ A# H* O6 X$ x
  212. ;==================================================
    * |! E9 u7 x, ?( B2 e* ?7 A0 b/ g7 j
  213. Music_Bank_8000     = Time_Cnt + 1
    4 i8 ~9 o7 Y' g( N/ ]* b" r
  214. Music_Bank_A000     = Music_Bank_8000 + 1' d( e/ X( I& B& T
  215. ;==================================================
    " [& _8 X) D# s2 l- ]3 S  b1 i
  216. Scroll_H            = Music_Bank_A000 + 1; {. h$ i" w* }
  217. Scroll_V            = Scroll_H + 1
    6 i# p  E* B! P0 ?, O
  218. IRQ_Process_Index   = Scroll_V + 1
    " y) i; R$ m# `# E: W8 g! M  P
  219. ;--------------------------------------------------3 [9 x# ^3 ^( m" e$ d- i* B
  220. Page_Cur            = IRQ_Process_Index + $01
    5 Y8 l% ?5 G  X; |; i
  221. Page_Cur_Index      = Page_Cur + $01
    % w2 s1 y1 L* {3 L
  222. Page_Cur_Cnt        = Page_Cur_Index + $01$ B2 v' I6 X2 }' _# W
  223. Page_Last           = Page_Cur_Cnt + $01/ z  |9 U% ~7 p- t
  224. Page_Last_Index     = Page_Last + $01
    * Q" D3 x. C0 R
  225. Page_Last_Cnt       = Page_Last_Index + $01
    8 J5 e' R$ t+ }. {% L
  226. Use_Ram_End         = Page_Last_Cnt + $01/ K: ]" F  O  U9 k- V3 h/ j  l
  227. ;======================================================================
    ( J4 [' x- J9 n( y( |) \
  228. ;音乐数据块
    6 M" ?) T, |3 Z( O  f% Z- u
  229. + @3 @' [+ ^- O3 i3 ]2 N3 B
  230. .IF SOUND_BAR_SHOW_ENABLE
    8 J# S2 {- O7 z  f7 H8 j

  231. $ D6 k9 y6 Z+ H& J# m4 v; K7 k& }
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    ; K3 B& z) Y) s0 _4 V2 g4 h
  233. .ORG $90002 s/ S( v# i: Q: _2 d3 u
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    . B! Q9 _7 f3 C4 f1 D

  235. 4 X' t' z( M# Q5 D
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    7 v- Q& N& U" i" h$ L! C4 I
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"$ c! D" g! `: {% I) L

  238. 2 M4 u9 i9 r2 w. X, G$ }! a
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK/ T3 V9 f) ^8 q6 m; I- [, B, |/ A
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"3 R: |( [; _6 O* F

  241. & f  N. ~. M+ ]" ?* y; l0 a
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK, n- N' [( ?/ t
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"8 \2 H$ g- d1 e. H3 r

  244. 2 o% n9 g$ T* Y, V- m/ o
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK, [' ^+ e4 J$ Q& I
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    " L2 Y, _. W$ Y1 J& n% q& I

  247. 4 `; f" o* ~8 _3 ~
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK9 f" ?8 k; |- ?
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"  l$ s7 C* J8 C1 s
  250. / F( S* j- X: j7 E0 Q1 P( d
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    3 J. M! x2 w$ i4 k, _
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    2 b3 y7 b5 n. a8 o( j" b" B' P* `% ?6 A
  253. ! `1 `2 T4 ?% Z/ N4 [
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK& y; n9 ^3 B0 i7 B2 U
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"; n2 _: r! z/ R: K
  256. 1 o' t" \/ K# ~* P; T5 i
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    & t3 v! L2 l- f
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    ( t4 F6 g' t# p% w9 W" c3 |

  259. / ?$ \- a9 @0 p8 |
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK9 l, C+ H# S7 K# V3 X) U, E
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"* C( n) Y9 ?/ ?4 @( x$ E. S

  262. / G4 p* H. k8 M; ^7 v
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    , z! D( Y5 H9 L5 r. X8 X3 p0 x
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    : s& q7 U) @  L3 d
  265. $ `) k7 c' ?% A9 B5 @$ r4 c( X4 J/ P
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK4 T7 X/ X/ e& i1 _& }- g' X* Y
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    2 R( Q' Z& Z- z# e
  268. $ t8 _; D3 [- F' v
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK1 L; _; R0 X0 d9 o% a5 _
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    + B5 c- F$ N2 I! B
  271. / D  Z1 h$ [8 ?7 r) {
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK" u) s" D% @- q) _# q) n
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"( C9 r, I) p* x& s

  274. + B, ^3 B0 l# s8 S
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    ) Q# I  `# y/ w6 i6 G2 @6 L
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    ; w' _2 X- x$ g! R+ e4 d  R) _- f
  277. : ^9 [0 W4 U- v  J' e* L
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    ; J6 A5 B& g( n6 f: N) u9 d$ X2 n2 }
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    0 ^9 w9 m+ M9 y, n/ m
  280. % m$ [7 v( V1 M5 v. j( R" J
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK' \" c" k! E. t& w
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"# w- t) e* D5 t( H" g/ v7 p5 C
  283. 8 j# m3 n2 n; C* L( r: `$ N7 D- t2 c
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    - W% C3 Y4 G  S' d+ n5 ~
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"6 l' X& \  P+ p1 X1 x
  286. 8 n$ F' m3 q  Z" `6 G- h1 E( V
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK( S( ?. F( Q& q* A+ c! P$ V# `" w" y
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    % J0 i5 q* X/ @$ p7 j2 y1 |

  289. 4 U+ m! P8 B' j, }5 w% M
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    3 X! f5 X) E2 |. R/ t0 i
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    : ~- |$ D2 A6 }3 _: f$ k/ N% K

  292. , X. U. a6 G1 l' H
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    , D  C9 x% y3 }' ]1 o
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"1 \3 a0 @* Y" H. D' v- [3 `5 k
  295. : c! g2 k- r5 F+ `$ w7 p1 K  S! Z$ _  x
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    3 [# W7 G" Y$ E) ~
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    8 E) A& N! e# i' Q6 j

  298. ! Z( W8 i6 f2 J: W( @
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    # A5 m" z/ h6 V! l
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    3 B: c, H$ U: K9 {  z
  301. / h) f0 s3 C. Z6 H/ j
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK$ u8 c* Y. z2 f3 u5 h
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    0 L' u1 V  u0 M( a! i# m0 @
  304. " j' ?, {" Q' o) c
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK, \9 H$ Y- [  t) K
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    ( v! ?5 u5 I5 b! F

  307. 9 M- p4 {6 p  {% ^, S- A
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    / I0 G: F0 ?9 q7 M0 S( ?
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    + e3 B7 p5 Y2 }% y1 F9 J; |4 l

  310. % i" L6 d( u. m2 Y7 {, s
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK. z/ o8 D. f7 e- J9 q
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"3 c5 U4 Y( ?% O& T4 B# p! V! a
  313. ! F( C8 F: Z# K! ]
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    ( [: y% `  g2 H  s2 h- r, t5 {
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    4 e5 m& B0 ~0 l, [
  316. & J, y5 k; {" q, [/ b' b, H
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK/ C2 ]6 R' j, U: @# O+ [5 K! `! |) v
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"  W5 ?' F" n! Z) A

  319. & o1 l- u) a; N; D
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    3 v$ w6 Q3 V) ~/ t
  321. .ORG $D4005 m  ]" U. E7 j% t
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank". {2 U1 c+ ^' _, O4 u; _  L7 n

  323. ' Z8 l* v( g+ ^  ?& R5 y% R
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK+ v# i' a( z- J) @
  325. .ORG $D8006 k9 g. o3 v1 _1 u9 t7 J
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    ) {& n6 z2 r3 G+ M
  327. 5 ]7 [" {/ v0 D3 v$ @+ H

  328. ! M. X+ a* h  W* |) B* i
  329. .ELSE
    * x" i6 O: v/ O; J! P% }

  330. 5 \& Q  A9 a4 @. w3 K; |' X
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    $ u" L8 a3 b5 [5 e
  332. .ORG $9000
    ! x' B/ r) s& `! d
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"2 N8 l2 _& G4 I( I. y& F' o

  334. ( U6 n! w+ O4 k5 [# ?
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    $ s- s# `5 k- t0 s% t" W5 y) l3 ~" s
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"5 F" t  y7 ^$ s% ]- C- s/ y+ `" ~

  337. " p( |$ G9 l+ U$ l. `
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK& _# r8 v& `# A1 ]; _+ t$ J
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"& P) C; ~; V/ T0 _% A+ V! `
  340. 3 N/ Q% n9 A% _+ o; H! Y4 d
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
      i6 M5 t2 E2 X
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    1 |9 V/ c2 T, n' N3 |4 c0 j
  343. 1 P0 s; ~& D& W7 q$ |" L+ e
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK: x/ x6 ?' t9 V& y. ^; F
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    , x  ~0 v2 V9 F, y; |) J
  346. 7 R, `7 U, N% L& Z$ x
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    ; r0 ^, [0 D  K5 w! S
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"# B( k5 q( L9 ^6 k, x8 G5 x  V$ @
  349. 4 I: }# M8 h% k/ j7 V' \
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK, V, a: t: c- P
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"( L5 c. |& X3 ?1 b

  352. . l; K' c% S: M4 j3 I" K; }# _1 [
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK* `; ]9 O2 d" i+ ~4 g
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"% p7 g2 M* A3 a" g
  355. . N  s1 K" w; \; k0 U
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    5 m/ G3 q# W9 i. ?
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"* ^0 l: o$ B8 T# ]
  358. ) l5 f& [3 [! r
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK) d; s/ w9 P, l
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank". q6 C2 |/ `- }9 l. u) [& `
  361. ' W4 F1 X+ C% Q0 E3 s& i' _
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK0 k9 Y& C$ @. F: g( D
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank") B0 G" I+ B8 u8 Q

  364. ( T8 m; A/ q$ F
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    3 |$ h0 Q' V4 O. S2 u, {
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"( u* j# I: |4 Z4 J3 d

  367. : ~1 T' r7 ?  r9 n# L4 `: m3 y( K* i
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    . o* R  X$ h, O+ l- m
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"0 A5 L, ]9 Y2 @( k) x
  370. 9 j  Z9 D. T! A3 ?- m0 k
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK, h# |3 \  Q  q! Q  E
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"7 D( {$ A) n( `7 T' A. I# G2 O
  373. ( w2 x9 y) F& Q2 ]" m. B" T
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK; ~# H+ n% H- U7 B. |& C
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"# p% Z+ M' H5 @8 m& j- p2 f1 Q
  376. / H4 h- o/ ^4 h% T( K( }
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    ' H0 m, x+ |; j: j. u8 n
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"- }) R; o7 `, ^9 C8 y

  379. 9 g5 c* l$ P8 C  c* O4 D1 q
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK9 G' b; U- |2 W2 F8 ]
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"* a9 h: m& G/ ~7 L; D! V

  382. . B) X" u- c. L% }1 k/ \
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK. E' @/ N7 E! }9 d2 u& ]
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"$ {! f+ q" \# ~. y

  385.   q7 ~$ J$ h# f9 O* j' ^
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK- g8 ^& p# C; N( V' h( e8 g0 b- I
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank", e- L; x( M( |+ G

  388. 0 S  t& [$ H+ ]/ J' t2 \2 N
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    , I; H; O6 J$ l9 r
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    6 w4 E% D) {+ P! y4 e- a( K

  391. : P& P+ e5 v2 t( J( G
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    4 f" v3 x$ w" f
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"2 ~* @4 ^% R# F3 B8 h

  394. : c- z" a' P- m# L
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    6 o9 J& r- ~& `
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"( O# A  c0 Y* f# n- U) Q* h1 F! g+ s
  397. 5 i5 q# `: g! J& J' A
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK# x7 F3 O3 e9 @5 S/ ^$ G
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    : N- s  l6 W4 X

  400.   P5 c9 b% O: }! u
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK2 ], P* d# x, l& b  x: b5 S+ M
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"3 K2 }- y! Y7 I: \3 q
  403. % V+ x* X' f/ g6 C7 n
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK1 h$ v' d+ N2 |* R! ~
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    * Y2 M  {7 g4 w* I8 T! U9 g9 C

  406. * V1 ~. {0 F. X) `3 K+ _
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    ' n+ t! ]7 C- `" @
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    6 d0 R' |, y. T/ @

  409. . y& q8 I/ ]$ {$ ~; c6 o. u
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    - H4 ~9 {0 Q  Z' I0 s
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"5 z6 R$ i% u+ ?
  412. . A, A& c+ T' _+ i
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    4 g# M6 c/ U- A* l7 ^
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    ; q9 |7 C+ U  N0 W8 A3 o4 d6 N: u

  415. 7 H! C6 V! v. `, _
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK& U4 P( W5 T$ f3 t
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    # L2 c/ P. i. H0 C2 L) E: y; _
  418. 7 p4 u) M, t0 b6 A) [
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK7 O/ z/ W  g4 [7 J
  420. .ORG $D400) P' o0 h. ^( r) m8 @
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"1 ~1 V9 K2 o5 z( A* }
  422. 7 H! m( p0 ~  N. X- S% L
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK! I* I$ r4 w* v' y
  424. .ORG $D800
    : C+ r" W% \& K
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    $ H1 ^  `) e4 x6 p

  426. 4 K3 S  W7 [) |3 |
  427. .ENDIF
    # P' O/ h9 Q+ a8 t
  428. 2 z  i% m2 h1 z" L! M
  429. ;CHR图形数据, t. O% g+ r8 S5 y+ A6 y5 z
  430. ;======================================================================
    3 _* M' W2 F' ]
  431. .BANK CHR_DATA_BANK  C' `: Z, f8 @, z
  432. .INCBIN "chr_bank/chr_data.chr"
    7 ^3 |, ^: x, Q5 o; _
  433. ( K* e3 _" H+ ]! l. H4 c
  434. ;======================================================================' c, J. K" I4 e0 P# n
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK5 W! @- x% }: L6 S! J
  436. .ORG PROGRAM_ADDR0 i3 z# n: y! Z4 }6 l+ O0 R9 D$ s

  437. ! c4 q8 x! N$ N' |
  438. ;==================================================
    , }# i2 e6 k$ U+ A" [6 V; x
  439. NmiProcess
    : I) F# G0 e6 @
  440. ( o5 F. t- T& n
  441. ;关闭屏幕控制2 A% w2 G& B) n, f
  442. LDA #$00
    - Z4 p* I. O  k& R
  443. STA PPU_CTRL# e3 M. i( W0 }  Y, k8 r& s8 t( b& u

  444. . A' i6 j* O0 W% w5 B
  445. ;没播放音乐就不需要触发IRQ
    4 O. Y2 ]( B2 W! `1 d
  446. LDA <Music_Stop_State4 l1 _) p& N" S; Y. D
  447. BNE NmiNormal
    0 H- p+ P- w: b  S7 ]
  448. 6 C8 v: }" N9 J! n, U; {4 _& W
  449. ;重置IRQ索引
    ( K6 z; {  t/ j) T. r1 h
  450. LDA #$00$ ~7 q! M$ F! I* C8 a" R( V; T$ a( H
  451. STA <IRQ_Process_Index
    & t' \, [# F; _+ ?

  452. ( _* ]) ~* u) a2 T& n  t9 T2 H
  453. ;时间秒数为空则跳过
    1 \4 E( p( N  q$ b4 l! b0 _2 Q
  454. LDA <Time_H) Y$ R6 m0 S4 `7 w
  455. ORA <Time_M+ d$ P9 s, {3 I5 }: w0 o; d2 `& U
  456. ORA <Time_S
    # o# R( l! P& T
  457. BEQ EnableFirstIrq* k1 C9 `( [- V* q+ P- n0 B8 T$ t

  458. $ A, Q% l: |/ v$ W# x8 U+ A' w1 l2 m1 ]
  459. INC <Scroll_H
    + I3 @+ n& L' x/ J7 m

  460. $ X! K2 f6 h. y# G0 {
  461. EnableFirstIrq 6 S, n& a2 ~  ]( T
  462. ;80条扫描线后触发IRQ$ j; A* d2 ^9 }  {4 Y3 K
  463. LDA #IRQ_SCANLINE
    + s) j7 D: A4 @$ v8 S" n7 K
  464. STA MMC3_IRQ_LATCH
    7 A" X) E4 G+ r; {$ @4 z4 p" t
  465. STA MMC3_IRQ_RELOAD
    ' V$ [# S* f: c1 a, _; p
  466. STA MMC3_IRQ_ENABLE5 w% Y: O& x9 \& V1 [, \
  467. CLI
    ( w0 r+ x. x* ]% a

  468. 8 v  R( `% @/ p" L
  469. NmiNormal
    ; d2 M; U0 M  S
  470. / g4 h: F" t( T; K! `% B0 B
  471. ;处理PPU图像
    ! Z6 s- P9 m- M) Y. t
  472. JSR PPU_Proc2 \$ P4 ~5 N, v* [  l, M( U7 ?
  473. ) `" J) V3 a) H
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    . o/ x) I7 Z# S: `* L3 ^9 k, _
  475. LDA PPU_STATUS
    ; n( u* m4 U  F; }  a
  476. ;LDA #$00; [) V  k* d) O/ f$ ]. Q6 ?  T
  477. ;STA PPU_OAM_ADDR7 N4 s* G' E/ S# w6 F
  478. LDA #OAM_TEMP_ADDR / $0100, R# z: Y8 k! w( b, k1 ^( Q
  479. STA OAM_DMA
      {1 i2 r5 D, B% c' D3 m3 t

  480. ; x5 x, z* Q( ?% E
  481. ;启用NMI中断
    8 j" k" w+ j- N$ T; V; ]. _7 C
  482. LDA Screen_Ctrl- z) R0 p9 }: m
  483. STA PPU_CTRL" y) ?8 f' A* T. ]) u- Q, H3 ^& F" L
  484. & ?, U% |3 s! k0 z, N- d7 D4 @
  485. LDA <Text_Disable_Flag7 u8 u7 g2 m- O
  486. AND #TEXT_DISABLE_RAM4 Y5 V* O! y( m% Z
  487. BNE Nmi_Sound_Play: X: J2 \' R: [& s8 \# U

  488. ! ~; h4 s! k7 r7 M& B1 F
  489. ;处理手柄输入
    : D0 n1 B" g" @
  490. JSR Key_Proc
    8 s1 Q$ ], d; r  I( {  D. x
  491. , I& q. ~, R* k  i! }% O7 F. O  Y
  492. ;切换音乐(手柄触发)
    / C# x! E9 O) j( m/ s8 {
  493. LDA <Time_Wait_Cnt$ b' f* F2 G$ b9 U" h/ I- b
  494. BNE Nmi_Cursor_Arrow  N  K6 z; d% `& V& C' Q& K) Q0 L, {
  495. JSR Change_Select_Item" H& c& F# Q& Z4 d4 ]" ?) Q

  496. 5 k) i% o& Z" _
  497. Nmi_Cursor_Arrow! i# I5 l, h, T5 L1 }
  498. # V7 M/ O; i2 o+ x% d
  499. ;处理光标箭头
    4 I# N- W+ I8 e" {, e- O: C- h
  500. JSR Show_Arrow+ Y6 v0 |" `" f$ _* P' y  W  X6 E

  501. 7 y/ V' \) U; l9 V
  502. ;更新调色板
      O. i1 F' e) c+ n0 g3 u/ v1 P( q! E
  503. JSR Update_Palette_Data' ^0 l4 R1 U4 @$ e: i2 Y

  504. 7 n+ G) t$ j, B" Y7 S) U
  505. ;显示时间(缓冲)% E8 m. n: S" n' w: j: l+ t0 |* L
  506. JSR Time_Show  T& p: Q1 t. E7 u

  507. 9 y7 b+ [& a2 H' m' F1 C4 o  M
  508. ;音乐显示(缓冲)
    ! Q* B- _( ^+ n+ Q
  509. .IF SOUND_BAR_SHOW_ENABLE+ M/ e6 I* C1 Z
  510. JSR Music_Vision
    8 |* s7 N; ]# B  _
  511. .ENDIF) H4 I. r. `1 W8 @2 Z' M

  512. ! m/ X+ G& \1 L
  513. Nmi_Sound_Play
    ' d7 c4 D7 F* e5 [6 f! c
  514. ;播放声音
    6 Q! O5 F& o: Z/ ]) i
  515. LDA <Music_Stop_State
    : i% e5 a! v7 V; J& Y
  516. BNE Nmi_Time_Wait_Set2 v( p6 h3 N9 v; |1 K' Y
  517. JSR Sound_Play_Proc
    . g- Q* N( L5 g" V

  518. . ], Q) o' S6 V! ~7 w# g( E
  519. ;播放计时* t" K% l' j2 V7 [, J9 m  G
  520. JSR Time_Count
    ; ^; G2 E( |0 y* g7 g

  521. . W, J. i" {# r: V% y- P6 e) L* a
  522. Nmi_Time_Wait_Set
    ! r. J# Q2 d, _, L: V
  523. LDA <Time_Wait_Cnt6 c0 q& ]5 J  F4 |
  524. BEQ NmiNormalProcessEnd5 {4 `& ]3 P: @3 a* K4 a
  525. DEC <Time_Wait_Cnt
    : Y: @! ^' f3 b! k$ K
  526. NmiNormalProcessEnd, N7 s- s( |4 o1 n. ~+ V7 _( F

  527. : a; W0 d+ l! @6 h% K" Q$ J
  528. INC <Nmi_Time_Count
    6 M8 g' b# \! `9 _. d/ H6 h
  529. ' F9 ~+ ?' W+ e+ N
  530. RTS
    ; R# z6 W5 y: _3 C4 w
  531. 3 _$ k: r1 D9 s, U# _7 T) K! q
  532. ;==================================================9 U) |$ R% {+ p( d% }2 z
  533. Init_MMC3- y9 M; T5 o9 ^- o
  534. ;==============================! Y! F; P  f3 z3 _
  535. ;禁用IRQ
    . B. U6 b( k  l, k9 J
  536. STA MMC3_IRQ_DISABLE
    6 S( `' M0 W$ u- u
  537. $ P( H+ S0 d1 e
  538. ;水平镜像
    ( a) k) B- L, ]/ G) G: `3 c. a
  539. LDA #$01
    % X: y+ ?, u1 v4 ^) {3 r! m
  540. STA MMC3_MIRRORING2 w# x0 b/ Z" g3 N

  541. & `* c8 m0 c" P' H% F: R
  542. ;初始化图形bank
    $ p. I' m# ?' G7 P% Q5 |3 Q0 n3 T
  543. JSR Init_MMC3_Chr_Bank( G5 F6 {! J' z& a. I
  544. " i) ^; L7 z$ u
  545. RTS
    , l3 d* g/ n: \8 L5 U' [4 `0 _  m
  546. ;==================================================
    1 s$ W  {: _6 R% S+ _( ]2 Z0 j
  547. ProgramBegin;主程序- j& Z$ }  @* s; t3 s: p8 k" k; ^: j
  548. LDA #$00
    + p4 E7 P% @. N1 I
  549. STA PPU_CTRL0 |" n9 d  d% ~# `" y7 i
  550. LDA #$00. j, `% V8 a: l) P$ u! x
  551. STA PPU_STATUS
    4 G6 C( z3 }2 f# e2 k& d
  552. STA PPU_MASK3 a& Q* Q( z/ `9 f, v9 d: ?: v
  553. STA JOY2_FRAME
    3 ^9 h6 S; Z2 c2 ~

  554. & s2 C9 w1 ^. J$ F
  555. STA PPU_SCROLL
    ) Z8 f$ F2 y" Q; d
  556. STA PPU_SCROLL* B. c6 H) J2 h' S* A5 z
  557. : j5 P' t4 m+ Z5 E, ]
  558. ;==================================================0 F/ o# ^. y6 r# }, q4 F9 p# G
  559. LDX #$FF* A. `# ^) t9 h) j8 Z& j* o
  560. TXS
    ' M+ H3 ]- P# _4 h, j

  561. ' h6 G0 k! K6 d) @# }3 h, }
  562. JSR Init_MMC3) O+ J# |2 h7 ^7 @

  563. # g4 R4 Q: l2 z9 c
  564. LDX #$02
    * z9 Q- b1 ]  |! G
  565. Check1" I- H. @- m& }
  566. BIT PPU_STATUS
    8 h' i; i' @( K, D
  567. BPL Check1- Y6 \8 j; Z+ ^4 T; r
  568. Check2
    ( \" y- D2 T( F5 X, s( N& u
  569. BIT PPU_STATUS
    & e! s( b2 Q/ w# V. e
  570. BMI Check2; ^4 u8 I- l/ i3 O- q6 b
  571. 2 D9 z! r% P( H  ?5 Z" H3 h# X
  572. LDA #$0F3 v, I2 z2 u! F. q
  573. STA APU_STATUS
    $ t$ _0 P+ c' c+ V. G
  574. LDA #$C0
    * i" D3 o- ?: f. i# n3 @0 A3 K# B
  575. STA JOY2_FRAME
    / k# D. k) ^3 ?; b7 H

  576. 8 B3 [( k# t# J/ x9 E
  577. LDA PPU_STATUS' E, A3 q: p) Q7 ?0 o; i
  578. LDA #$109 \% h* [' R+ M0 Y
  579. TAX6 e+ b' n* O% b$ N" L% l6 c
  580. Check3
    0 G: F( _- v0 G/ G: N( W
  581. STA PPU_ADDRESS
    " o0 D; K- [( D, b% {+ r; z
  582. STA PPU_ADDRESS7 F/ G5 N7 _  e. i
  583. EOR #$000 R& @% r& v& @7 m
  584. DEX1 U0 i1 `( y  g* q" ]
  585. BNE Check3
    & r. m/ x9 R1 u* `5 f! f0 f) _- Z
  586. ;==============================
    & w" b. ~6 d5 S5 S
  587. ;调色板清空: D/ v) x, Z+ d' U# L5 Q
  588. LDA PPU_STATUS- F9 S5 [5 f- q8 e+ M! \2 y0 o; z+ {$ x
  589. LDA #$3F  ^' {7 ]  f& A+ ~+ Y
  590. STA PPU_ADDRESS
      p$ a# ^& `- p6 X3 ^
  591. LDA #$00
    ! S5 k0 \8 {; z1 g- u
  592. STA PPU_ADDRESS
    3 n/ W1 ?9 C; T; {; e/ }
  593. LDA #$0F! v. S9 T: n; y  f0 [
  594. Palette_Clear- s& H5 G7 ~  W( ~  S. U1 f
  595. STA PPU_DATA9 Z" p; `5 K5 ~) n& G
  596. INX
    - g* P) ^" Y5 W7 r1 M& z# I
  597. CPX #$20
    8 a: B  `2 \6 o
  598. BCC Palette_Clear4 P/ C$ H" H% v. ^& q  [/ Q8 n
  599. LDA #$00
    ( T3 G8 m) x4 ^( `+ R4 w# g  V
  600. STA APU_STATUS5 v7 N  m# C- X; y) y9 \
  601. 0 g2 n8 |' p7 v/ ]5 s/ M
  602. ;==============================+ R+ a5 {! \! O4 B8 n* r+ p( o/ U7 v. K
  603. ;RAM初始化
    4 a' @% d' X( ?0 f* Z% o
  604. RAM_Clear_All
    ( j& _2 L9 A% T
  605. LDY #$004 o3 ~# B; O0 c8 Q4 n4 d
  606. LDX #$088 j% ]- F8 b! I$ t5 A: W
  607. LDA #$004 r# Y0 y4 q& t" {5 X: Q9 }
  608. STA <$00
    . W# d1 ?$ V' a, }0 t) R9 n2 p, w
  609. STA <$01
      O9 p5 Y/ g6 x
  610. RAM_Clear_All_Start5 R  P3 h& u1 X+ `! L
  611. STA [$00],Y
    ; m. ]0 h$ G! O3 l8 n5 q* @2 h$ B
  612. INY
    % P" G/ f5 s8 d6 V( m
  613. BNE RAM_Clear_All_Start' Z5 C0 Q& L7 ^9 ~6 _- @- i
  614. INC <$01
    9 U5 I. @0 v) l8 Z  [
  615. DEX
    ! R- [, Q/ s/ a1 P* v9 K) ?: g
  616. BNE RAM_Clear_All_Start
    + i. d& X5 C% `% H" \# g
  617. $ j& B$ }1 x% z  q# t& ]
  618. JSR VramClear+ \9 X* ^1 {( N  |# @; {
  619. JSR VramInit
    % H; D' r5 a$ G! t( W
  620. JSR OAM_Ram_Init" \; S% L1 _- `* X
  621. JSR Init_Palette_Addr
    6 f" I: P9 ]3 U9 x" K
  622. 8 C" G( z; |; z5 M7 Q  @; T
  623. LDA #$FF
    5 H  ]. z, g7 h) `6 H" K2 P
  624. STA Use_Ram_End+ y9 _0 @( f8 H" d
  625. ;==============================% N! B, W& G  P8 \9 N( ~: t1 H
  626. ;初始化背景调色板9 N2 h! y& q7 Q7 X0 Y7 Y
  627. JSR Set_Palette_Color! V1 D6 J! n2 Z( y
  628. JSR Set_NameTable_Attributes
    % m5 X6 O% C( J# ~. D

  629. ' ]- ?, t& c1 w$ L% ?1 U
  630. LDA #$00
    " w& a: e" P8 i3 `( F8 \, D
  631. STA PPU_OAM_ADDR
      T; `: ~5 t1 |3 b. s
  632. LDA #OAM_TEMP_ADDR / $0100! M/ Z  L) Z1 f& R0 Y/ C
  633. STA OAM_DMA# `; x8 m& o5 L9 ^: Z9 Z
  634. 9 a8 u+ n5 H: r1 \( n
  635. JSR Sound_Reset_Proc
    ( y" w6 A9 V. Z* ?8 Q% x
  636. JSR Set_Sound_Total/ o% L2 Q" m4 P: ]4 f& d; D

  637. 7 ]( @6 m: W* T* h; J  p
  638. Init_Start_Music
    ) s! [" a* k( F4 I( B# S& }
  639. LDX #$00' L8 X# i2 s  Y- `* V
  640. Init_Start_Music_Write
    7 C+ G' x: ^1 c2 \# c
  641. LDA Sound_Start_Port,X
    ) K7 r4 H9 n7 [( |8 @: v
  642. STA <Music_Cur,X  j9 G7 ~- e2 j! r% |$ l
  643. INX
    0 G0 \1 e# [4 ~0 o' }/ W% G, f- g
  644. CPX #ITEM_MAX_SIZE! v# i9 p# P2 I) I0 v4 v: |
  645. BCC Init_Start_Music_Write5 N( P8 v% w; S" v& T0 `! c* m" R
  646. ! G0 `. C/ w7 a, D( Y
  647. JSR Show_Music_Text
    ; `: X/ z* E& o; T3 \

  648. 1 J3 }( `. Y4 l- |5 c4 W
  649. .IF SOUND_BAR_SHOW_ENABLE5 N; z0 i% Z( f5 m& j+ C0 U. Z9 e
  650. JSR Sound_Bar_Text_Set
    / K  T. d* ~! J, F3 K
  651. .ENDIF
    / d% R6 n9 F6 t( ]7 R9 p# e

  652. ( I( E: v; u7 r
  653. .IF Track_Name_Pos
    ; _  G' B0 G. [3 s) C. e8 w
  654. JSR Show_Track_Info- u, {2 J$ g, X8 \9 Z6 U  y
  655. .ENDIF
    & Y5 {6 U4 c+ f0 }1 i/ S
  656. 7 ]( E. i9 x" a7 t/ G$ c
  657. JSR PPU_Proc8 h/ @1 |0 e1 Q
  658. 0 B- f; s; u' z( X
  659. ;==================================================
    8 j1 @7 q" I8 N5 r% y
  660. ;音乐bank初始化
    ) ]) Y( G8 c$ o' V# |$ `
  661. JSR Init_Sound_Bank
    9 C/ |7 A1 b5 o5 M, c1 x% Q- O. `
  662. + y8 x, [, Q" f# k* B  d
  663. JSR Music_Show
    ) O6 m5 ~9 w# d9 d' E
  664. JSR Time_Show
    " c2 b& F; k3 a+ {8 x: ?5 @
  665. JSR Music_State_Show
    & P% M! ^3 T' `# v( T% J
  666. JSR Time_Delay
    - R  ^- |8 Q1 v& U; e

  667. / B4 c3 Z5 I; d) W2 k6 ~
  668. LDA #$01
    7 ~( v; B* ]8 k8 f
  669. STA <Music_Stop_State
    . K+ C2 ~7 z4 X$ Z) j- L

  670. ; w, E- _1 R+ V( [. h& \
  671. LDA #$88
    ; d- D' Z9 ]( I* A. q* j8 f
  672. STA Screen_Ctrl, k& W: r4 G6 m: N. L* J
  673. STA PPU_CTRL
    $ E) \- w; G, z2 g# t( O6 S
  674. 8 p4 |) H- U- [, q
  675. JSR Show_Page_Text
    , O: x. [2 a" Z; W; t% n& `

  676. 6 |% s: H( d1 s, R8 ~
  677. LDA #$10
    ( ~9 K% Z$ u% Y8 }& M
  678. STA <Time_Wait_Cnt! j' W: I) I  E/ `6 L  N, l) O9 ^
  679. 3 S8 T# Q! ?1 s4 C% c
  680. Wait_Time_Over' q. \( w. z1 F9 X3 }- O
  681. LDA <Time_Wait_Cnt
    % C7 f5 u  o5 n6 Y) B" U
  682. BNE Wait_Time_Over$ ?4 D8 Y6 t* \, u6 }

  683. ; }5 t* I1 O( o$ O
  684. JSR Show_Arrow
    * F# S( q) {% T7 V5 u9 |6 N
  685. LDA #OAM_TEMP_ADDR / $0100
    , t" \, @# `: C' R0 V- O( y
  686. STA OAM_DMA) |  n4 s+ P( e! }4 H; d( r

  687. , X- B8 ]( C3 Z' b" M+ X* l
  688. LDA #$1E: _6 A* u/ E$ c- \- W# |6 G# ^
  689. STA Screen_State+ f. S# ^7 }# ]2 U
  690. : G' u' f8 a2 i# O- Q
  691. LDX <Music_Item_Cur
    * U/ A3 l/ e* w& j3 X
  692. LDA <Music_Cur,X
    ! L$ {$ ]" V/ O3 Z
  693. JSR Sound_Init_Proc3 M6 X, p& t& |  t* S; N1 H; `
  694. ; D) ?4 \& o0 `
  695. CLI
    1 e" N2 T2 o* S  q: Z. l$ d7 K
  696. JMP MainLoop
    ( q2 \( J- X8 P/ z3 U

  697. 2 U& c. B; r' r5 A5 ]
  698. ;==============================9 T$ [# ^+ u: u
  699. Time_Delay;延时等待
    $ U( C, B$ |4 G4 g0 l$ h# a- s
  700. LDA PPU_STATUS/ M0 `) a8 P  x' O" z) m8 E% r- B
  701. BPL Time_Delay( ]: r* f3 Z0 I$ j5 z6 A# J
  702. RTS
    " H9 x* k, l" q8 R+ Q

  703. ! z: M3 g( C& ~- Y. B9 k( j
  704. ;==============================( B; t$ d$ y& w; Q4 Q
  705. OAM_Ram_Init;初始化精灵内存3 s9 Y9 j1 h6 h5 ~4 }! o
  706. LDX #$008 S7 G7 d; P: D% K- _
  707. OAM_Ram_Init_Write
    6 |5 V) I: A0 u8 _; Z- u" y
  708. LDA #$F8, B  j$ i& G' T( d9 N
  709. STA OAM_TEMP_ADDR,X$ }& F: n5 V+ F* ^8 A2 i' [
  710. INX
    % ?1 w" i3 G* M+ Q$ k
  711. LDA #$F80 }8 c9 f2 |  t5 K5 {  M) e
  712. STA OAM_TEMP_ADDR,X
    $ S% v; l" d5 X; x# |5 X% \
  713. INX
    / }9 r* X8 n) }! `1 d
  714. LDA #$00
    ( e2 p8 J" M7 ?+ `: p# K
  715. STA OAM_TEMP_ADDR,X: X) @5 J. e% y, n" r0 H* P
  716. INX' w! }& }" k, t
  717. LDA #$F87 c1 Z+ }& e" @' p5 Z  l- ]
  718. STA OAM_TEMP_ADDR,X
    ( u2 J- g& i4 K/ }
  719. INX. x4 Z% \  O5 Q  t. N
  720. BNE OAM_Ram_Init_Write
    3 n- e3 n( ?# y( L' g) h
  721. RTS; J' Q0 S% O' _/ z
  722. ; U; e+ d: I; B7 k1 a8 Y6 T
  723. ;==============================, y4 s& r6 R. W$ ^, D. i
  724. VramClear;初始化图形内存1 A# ?( H9 f4 q0 M
  725. LDA #$20
    ( \2 Z. a* Y, a3 W1 F2 q
  726. STA PPU_ADDRESS
    ' u* ^0 V2 O/ a0 z
  727. LDA #$00+ C1 x- q, q" d, P+ o
  728. STA PPU_ADDRESS1 o' h! N% A1 ^  o  J
  729. LDA #$00
    & p9 t. P& B1 F- ^2 h' r& U8 {
  730. LDY #$00% P0 C  M3 R/ c( @" j/ V
  731. LDX #$102 C+ c( L3 y1 N
  732. VramClearWrite
    2 t9 ?, a. `" v0 y0 ?
  733. STA PPU_DATA8 r% _0 i0 ^$ R" M7 f
  734. INY! k$ O: U/ V% x. ]
  735. BNE VramClearWrite# [, i$ c) `# m4 q, S* ~
  736. DEX
    2 Z$ Y3 V$ d; `$ ~2 T, Y
  737. BNE VramClearWrite9 l: `# K( J2 k, @4 ~  s+ ~
  738. RTS
    / U! x! }9 K% @* c( Q9 k  `, F. s* C
  739. ! D" E( Q8 x4 g: t
  740. ;==================================================$ G2 c3 g) m) }8 u/ b+ R8 u
  741. ;设置MMC3图像bank
    7 m/ J) g8 J& ~
  742. Init_MMC3_Chr_Bank  L6 @% t1 b* Y0 M- T4 M) m- V+ P* u( I
  743. LDX #$053 z$ E7 {% I6 A2 l7 a  _, G9 e
  744. Init_MMC3_Chr_Bank_Write; ?% F/ X3 t- G7 y& ^
  745. STX MMC3_BANK_CTRL
    5 x1 [0 k) q8 U- g( k
  746. LDA MMC3_Chr_Bank_Data,X* r. n  ^' o3 ^. o8 N" V
  747. STA MMC3_BANK_DATA( f% s9 v8 v  P9 x
  748. DEX
    * x. P4 L% f' R. E6 n
  749. BPL Init_MMC3_Chr_Bank_Write; [, I. L- E+ K8 V8 m
  750. RTS9 z: K, v$ W3 [, G1 x% J
  751. ;--------------------------------------------------
    ' c0 G  |6 |' T4 L  c) g1 l
  752. MMC3_Chr_Bank_Data
    " Q! k1 `; M3 F) j4 ?* d3 o! y2 c
  753. .DB $00,$02,$04,$05,$06,$07/ U+ v. [! v5 m4 q3 L* @

  754. - a7 @$ n+ ^( L- z5 }
  755. ;==============================
    ; n2 v$ l5 V6 M
  756. VramInit;初始化图形内存
    5 W- F5 X  Z" {; a( I
  757. .IF CHR_RAM_ENABLE
    9 ~6 j3 P& W" P9 `. C! I$ \2 D
  758. LDA #CHR_DATA_BANK
    4 r1 {, [) U8 {! c7 m+ r. }  U8 T
  759. JSR Switch_Bank_A000. x2 V: g) @- U( L
  760. LDA #LOW(CHR_DATA_ADDR)! L+ w1 Z* t$ ]
  761. STA <Data_L3 f; H8 W7 M9 A$ Z: F; E
  762. LDA #HIGH(CHR_DATA_ADDR)4 n% F, y$ [( o- O
  763. STA <Data_H
    , g: J% |3 z+ C4 Y7 ]2 s
  764. LDY #$00/ d2 O  f$ e$ Z. I* |  m
  765. LDX #$20  R, g& @' L& `# f# S
  766. LDA #$008 [4 p( r8 A! O8 v( ^( w
  767. STA PPU_ADDRESS9 k% C2 t% _2 z( E
  768. STA PPU_ADDRESS
    6 L3 v2 m4 y/ W9 |
  769. VramInitWrite6 p6 U4 _1 Q3 F/ X
  770. LDA [Data_L],Y: M: A0 a5 i9 p: m  s
  771. STA PPU_DATA
    9 P) X4 |: Z% m0 w& c" T
  772. INY7 H0 H( g3 p/ q2 j. L/ h
  773. BNE VramInitWrite
    & E, f: x! U& T6 g: H
  774. INC <Data_H
    # H# I0 z5 x( I: Q
  775. DEX9 J8 r. W& _  n& b" y. Z% p! t; j
  776. BNE VramInitWrite
    3 O& x  N- v4 N" w
  777. .ENDIF
    & _, r" X9 i9 P, z4 b8 e+ H
  778. RTS7 k* m' P( W. S$ Q' B7 V

  779. & }# D& Q. v1 x9 e  p7 j
  780. ;==============================  @8 f' u- M/ l  y" U6 j! p
  781. ;音乐切换
    & e* Y9 Z% C1 F! B, y
  782. Music_Play_Change
    & Q- ^! a' k, O1 D
  783. LDA <Key_Once, {5 Z, P" s2 A; d$ R
  784. AND #$FF5 F9 K, Y+ x4 i! U
  785. BEQ Music_Play_Change_Check! b3 R" T, |. E0 Z: z

  786. 2 l3 K" F5 I9 H6 R! j" A  A1 z/ h
  787. ;禁用音乐条刷新# a! ]$ s" n9 ]
  788. LDA <Text_Disable_Flag
    7 ~3 J8 Q9 ?, t% h( ]4 H
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME8 V3 C9 I7 d% v5 n/ b
  790. STA <Text_Disable_Flag
    ' D# l, G/ G$ Q6 K
  791. , A/ p* Q3 Q* e6 @
  792. Music_Play_Change_Check
    - }3 N0 A1 {' ~8 C" u
  793. Music_arrow' J  V/ ^( K  A
  794. LDA <Key_Once( l% z6 A) e* q4 z) O- Q9 N
  795. AND #$0F
    6 ~) Y9 [' p9 |) y4 e) V* P, t
  796. BEQ Music_Play_Change_End
    5 ]) {% r- C$ \
  797. JSR Music_Track_Change
    ) }: h2 t7 p- {3 h/ _( f/ O
  798. JSR Sound_Reset_Proc8 [: B7 Q9 ~3 K. J) M% T! u/ d
  799. JSR Music_Show
    + L" ]. h; T" o* E& |' E& F
  800. Music_Play_Change_End( X' m! ~3 k  q/ [
  801. RTS
    0 i7 K0 V3 [, R' X

  802. 3 y: f# J% ~% ]( Q
  803. ;==============================( w# M! L" c7 B: o6 T
  804. ;音乐曲目切换
    # L4 ?' I: @, V) G4 Z+ v9 M
  805. Music_Track_Change
    . A' E1 n4 X9 V5 X  V# x. N4 @
  806. LDX <Music_Item_Cur
    ; v- B" B2 c2 j( J' T
  807. LDA <Music_Cur,X: ]/ j# J" L, p; v! n! O# q! s9 G4 p
  808. STA <Music_Last; ^7 E; l+ @# ]7 ~- l
  809. Music_Decrease% C$ o+ j+ u3 C/ Q" e7 h  x( x
  810. LDA <Key_Once
    ( y( P/ ]% ?6 [
  811. AND #$42: n  H7 E; o5 j" S( @+ Q
  812. BEQ Music_Increase
    - s* k2 }" X# G' {$ I6 X0 ~4 m, Q3 w
  813. LDA <Music_Cur,X3 r5 ]9 o0 v* I5 C9 B2 @
  814. BEQ Music_Increase
    8 n: E9 W& ]. o( M* f- P0 v
  815. DEC <Music_Cur,X9 o6 U; r7 z; M7 A. ?3 M
  816. Music_Increase
    4 {* X+ B- F" h2 ^6 P! [2 x/ U1 T
  817. LDA <Key_Once  \, s% E  a  a2 \
  818. AND #$81. c* v9 h% J- w0 |
  819. BEQ Music_Decrease_105 X' h; H" S9 k. c' g1 C1 p
  820. JSR Set_Sound_Total$ a2 x' S( u7 z% {/ F( M/ J
  821. LDA <Music_Cur,X
    * _# v2 \3 M" x/ i* x" }: E
  822. CMP Music_Total
    8 b$ {  H6 U: |9 ?
  823. BCS * + 42 i/ K* V. i& B5 z
  824. INC <Music_Cur,X( p8 i* E. _/ `5 e3 k
  825. Music_Decrease_10
    - A" ?+ L2 e" Z6 S9 |
  826. LDA <Key_Once
    ; o, G# a4 u) ?5 K/ U+ G
  827. CMP #$04
    * x) x, C4 J/ b- q+ ?  u0 m* h. Y9 ]
  828. BNE Music_Increase_10/ K4 S( i8 S( d9 M
  829. LDA <Music_Cur,X
    , Z4 d! c& D" Q2 y& A3 g0 e9 S
  830. CMP #107 T% y6 F; U5 @, t: F1 t$ P
  831. BCC Music_Start_Song_Min9 [* j3 Z% D: u
  832. LDA <Music_Cur,X
    3 G  }5 W, a* u+ \- o1 ], @
  833. SEC2 Y' f8 H( w5 u2 {* x
  834. SBC #10! S" h7 j! H5 R6 x3 w
  835. STA <Music_Cur,X# \& @. D2 l' Z5 L7 T: _
  836. LDA #$00  I, E' z* y. B# f5 T3 p
  837. BEQ Music_Increase_10
    8 |8 U" x) s, o  Z' T8 b& }6 R# ]
  838. Music_Start_Song_Min
    6 D2 O9 y/ f, o  K) i* o; [# n$ C
  839. LDA #$00
    ) W% _% W+ M: m! N
  840. STA <Music_Cur,X" S6 D5 w8 h* W9 w% F
  841. Music_Increase_10
    ( L# g( b8 ~! N5 `" s5 U
  842. LDA <Key_Once
      F0 W/ a$ v. M0 @6 @5 E3 p
  843. CMP #$08/ A4 g! T- r& t0 x% G3 M- y
  844. BNE Music_Track_Change_End
    5 p% D: [6 U: P: E) \( V
  845. LDA <Music_Cur,X
    * }8 T* C& a9 X, q" M
  846. CLC* v( C1 R2 y* n) S) f. |, N
  847. ADC #104 g( ^# @$ _; e* Z* t
  848. CMP Music_Total0 k  r& K3 |1 b0 @( i
  849. BCS Music_Start_Song_Max
    ) I6 x! |, K' F, o4 o2 I4 W
  850. STA <Music_Cur,X  W6 e* L+ M3 j: b$ o& u
  851. LDA #00
    & ^) C9 Z- K( S1 P% J
  852. BEQ Music_Track_Change_End' r' c, f2 W' }1 M% D2 t) b5 r
  853. Music_Start_Song_Max
    ; m6 e, P' I# t; G' D1 c
  854. LDA Music_Total
    ! b$ @# b/ y& I: ~; {
  855. STA <Music_Cur,X
    % c6 X: s& Z( X7 O) r/ F4 {5 V- G
  856. Music_Track_Change_End
    8 H4 j2 W* q2 Z  A4 p6 h. m) x' d
  857. RTS0 @+ I) i% u4 ~& p  o5 Z

  858. 1 h. ?' F+ X; \& c7 d$ S
  859. ;==============================
    + }3 Y! d7 Z5 a8 L. n
  860. ;按键处理9 }. z. W0 ]# _6 `
  861. Key_Proc
    * N. v" T) v% k& P" S) U+ Q
  862. JSR Key_Scan+ y! X) q7 }7 M! N5 p9 L! r& H
  863. LDA <Key_Keep! p" J5 j) A. o: l2 `2 ~: T! J2 P
  864. STA <Key_Temp7 o" C' w$ L: P: U0 a2 b
  865. JSR Key_Scan7 H( D# b* [" p, _+ ?8 l
  866. LDA <Key_Keep
    4 {# R, s1 v: i" [6 t# v; u
  867. CMP <Key_Temp
    4 y3 V. |! W1 F/ p, E
  868. BEQ Key_Get_Once
    % {- _% @6 y: L* b. f; e# E
  869. LDA <Key_Kemp
    ( j+ e* u- Z# w$ ^( w* g
  870. STA <Key_Keep) O# T; U2 N* ^( Y
  871. Key_Get_Once. t# t0 ?( K* g  q2 B* @
  872. TAY! O! l. G7 D& i% e9 T/ O
  873. EOR Key_Kemp
    " X- r3 F. @) l6 r
  874. AND <Key_Keep) c" H( p  @/ _; v3 {% g
  875. STA <Key_Once& ~4 @7 b) s# V/ Z  n- E
  876. STY <Key_Kemp
    7 x+ u( M, a% [
  877. RTS2 {  G& I- A7 M$ b. C8 y
  878. ;------------------------------
    $ o0 K) R& {* m) N  `
  879. ;按键扫描. H( M$ t& Z, o) W+ A3 ]* A# U- q
  880. Key_Scan7 e7 [2 ~/ {% j4 S' r4 \* K
  881. LDX #$01
    ' k( y+ h* i' M
  882. STX JOY1_FRAME6 H3 v$ Y0 k; b. J) h& T1 I# w- F) a
  883. DEX, L7 W5 x4 Y9 `9 E; G+ U! q8 C6 o0 @
  884. STX JOY1_FRAME& D' @5 c& w: T( O" s5 f8 {
  885. LDX #$08
    * l$ R. x2 J# H% W0 d; x
  886. Key_Value3 V& P4 F8 u8 r, ^; d8 \" Y9 v
  887. LDA JOY1_FRAME
    0 P# y, M* C3 ~6 V
  888. STA <Key_Getv
    2 B5 T1 v9 x# i" s
  889. LSR A
      l' @0 a1 @3 v3 e( X, B* h8 F
  890. ORA <Key_Getv7 L! D3 n$ m" [/ F$ {0 p
  891. LSR A5 ~5 o/ g( ]: ?3 u2 Y% F6 P
  892. ROL <Key_Keep  \* w+ R+ r( I" l6 \9 d' u
  893. DEX& R0 R2 m9 s; l* {5 v# h1 y8 M( [  S
  894. BNE Key_Value# C/ w! k, Y  R' D2 ]. W1 ?
  895. RTS
    4 D' J1 W5 g6 q' I4 o" F! [

  896. 6 ?/ H9 y7 l/ w/ a) a: \' Y
  897. ;==============================
    3 O3 u  ~' q  e) Z: Z
  898. .IF SOUND_BAR_SHOW_ENABLE2 o3 `# e3 n6 |7 E$ O
  899. ;音乐条显示7 c- b$ s* f% q
  900. Music_Vision
    # R- f/ Z3 t! U% U' _. f0 V
  901. LDA <Text_Disable_Flag/ D% Q, ?5 {8 y1 O
  902. AND #TEXT_DISABLE_ITEM
    2 ?! V0 p/ F& ]
  903. BNE Music_Vision_End
    : [) X; X3 B5 e
  904. AND #TEXT_DISABLE_BAR: ]% z: v# Z9 B! `
  905. BNE Music_Vision_Set( f, \5 z: P# t' l5 T! X
  906. LDX PPU_Cur
    9 {0 E" b% k5 e# ^
  907. JSR Music_Animation
    ) e, D$ W* Y! B5 U" ^3 K
  908. STX PPU_Cur# n2 }* K, L0 N& X
  909. Music_Vision_Set
    # v- G8 c1 A, s* H  V8 e
  910. LDA <Text_Disable_Flag
    - v' k5 J/ F- w$ [$ U+ Q  ?
  911. AND #TEXT_DISABLE_BAR ^ $FF' _6 t8 q( r5 R, V
  912. STA <Text_Disable_Flag
    / q! U; C1 i# w7 v
  913. Music_Vision_End8 ~4 N% _- Z. l6 p3 i
  914. RTS
    3 d+ z" j: U& m; v' L# e. a
  915. ;------------------------------2 p( c* H2 g& a9 M
  916. ;音乐条显示处理
    - s) C, x7 b4 W& H6 m
  917. Music_Animation
    ' N1 ~9 U, }% s* D. o! J$ k- o& z9 E
  918. LDA #PPU_MODE_CNT_LINE
    . L3 N; G7 S& L9 H$ u) B
  919. STA PPU_Addr,X
    8 m# w3 j: ?& s! Q
  920. INX
    : n. L" r. c& t
  921. LDA #HIGH(Sound_Bar_Pos)
    4 r9 u" N7 t6 B' F- P/ S5 u
  922. STA PPU_Addr,X0 q8 T: N* H/ ]' n( \  @
  923. INX
    6 v9 D5 y4 s) \3 ~4 S
  924. LDA #LOW(Sound_Bar_Pos)
    & m8 q! F3 x- O' y/ W4 T
  925. STA PPU_Addr,X
    ! F+ l" c# H$ Y& y  K9 |; r6 t
  926. INX# K. M" U% s$ D0 j
  927. LDA #$08
    * V4 E' ^8 U, W
  928. STA PPU_Addr,X0 H- z' J+ P# j* R: Q
  929. INX
    ' |4 A% N  a6 q) G! L/ o; N# p
  930. LDA Sound_Bar
    - u# v% n$ X0 }. l0 g6 y
  931. JSR Volume_Convert- q. U7 ~+ V. u

  932. 0 H# t0 S$ ?$ L
  933. JSR Volume_Set_Cnt3 Z( |1 o; L/ F) c8 X
  934. LDA Sound_Bar+$4
    : W+ ]6 M* H+ W  C* B; v) j' U! @
  935. JSR Volume_Convert+ ]( ^2 h8 _1 B% P1 ^
  936. 0 y0 B5 e3 q  C. j/ d4 j
  937. JSR Volume_Set_Cnt7 ^8 A. `' i3 P5 D/ `
  938. LDA Sound_Bar+$8* j( z. l; e9 F2 F
  939. JSR Volume_Convert& Q6 }! r- q/ N; F
  940. 6 M- I% D: G# c
  941. JSR Volume_Set_Cnt0 [9 X9 h7 q& [2 f  H" S$ k
  942. LDA Sound_Bar+$C
    3 W4 w' [' ?& g& L' x
  943. JSR Volume_Convert: y( B/ w+ Y0 L4 h' U6 g
  944. . m  m5 M7 I8 X. \* r
  945. JSR Volume_Set_Cnt3 S* r' H* f  V& w
  946. % G' J4 f; _% U! A' S" M. v
  947. LDY #$10. Z7 l1 ?( n, D$ f3 H
  948. LDA APU_STATUS7 P7 G! |( T; R, C% i
  949. AND #$10
    0 B& t2 ^+ T* Y- u* K# @, h
  950. BNE Volume_Count( {5 u. s6 }& a) V, ~
  951. LDY #$00
    ) y% F, l/ K2 o
  952. BEQ Volume_Count& D% k& ?- C, s% E. w6 x/ P4 ?0 D

  953. $ x% y; x  b2 y8 }8 j
  954. ;------------------------------
    9 V$ S5 W) S/ j! ~+ D5 m
  955. ;音乐条处理" p5 u# G7 Z9 \1 n7 E& K
  956. Volume_Convert$ C! D4 C+ g1 {/ Z$ Y
  957. AND #$0F
    . R& G- z5 D% j2 f: i% j
  958. TAY
    ! i( ^/ S0 k% o
  959. Volume_Count1 f0 D4 P8 ]3 F; R
  960. LDA #$08
    2 n* B+ ]! c7 N) f0 q. f- _
  961. STA Sound_Bar_Cnt5 R) |+ [$ l3 T7 W4 s3 F+ @) f
  962. Volume_FILL7 L; b+ ]# I: `& E$ }
  963. DEY
    0 x- H2 D! I9 {! a
  964. BEQ Volume_Half
    - R, {+ @  G5 w2 c1 N
  965. BMI Volume_Empty: c) |4 _  M0 t# U
  966. DEY
    9 e/ n$ S- z3 u5 ^: ~
  967. Volume_Full
    0 g9 t; n/ D! C! V. ^5 n2 N
  968. LDA #$16
    1 i7 N) N. Q0 K2 L
  969. BNE Volume_PPU- ]% o; u# R5 r' x* R; O8 g
  970. Volume_Half
    ' A5 [5 g: q5 t, _8 E; v* k" R
  971. LDA #$15
    3 @3 Z+ {5 D1 C3 V) ~- s" s
  972. BNE Volume_PPU
    + {7 @# C) G+ G* T
  973. Volume_Empty
      @* c2 ?0 a' @- X, m
  974. LDA #$14
    ( R6 J  t- e; n
  975. Volume_PPU
    ; w- l) h' U+ X  G6 j3 ]! V
  976. STA PPU_Addr,X
    1 P: K. n+ K3 r4 E5 u( H
  977. INX0 A0 |6 Q* Q* G' m. C
  978. DEC Sound_Bar_Cnt
    , {' t$ X0 n7 {8 s( g$ S
  979. BNE Volume_FILL
    + v  d( m/ T: I/ D, J" w# G5 ]8 C
  980. RTS, v* K4 T* a/ _$ f! o9 M0 ~9 K8 r' E
  981. 4 t( v$ i' w5 k
  982. Volume_Set_Cnt) l0 w9 B4 k- @) j' H! N! I
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    # o( p- P: E; G. k. F" f* W' `
  984. STA PPU_Addr,X6 _. a# a, u0 p: F& ^; ]( a
  985. INX
    : [$ g2 D) _, L  @. [
  986. LDA #$08
    * D7 q$ H, V4 V
  987. STA PPU_Addr,X
    . u1 m! K/ j# i% O
  988. INX
    . i) ?7 i, l& r9 S  `2 l5 c! V4 A0 F
  989. RTS/ Z2 J& C7 W, W/ A" b& u; _

  990. % ]9 m4 U* l! B# W9 m5 U/ @
  991. .ENDIF* b+ P9 x2 E% G+ m. f, o

  992. % R1 A2 p& \, A; |9 M5 [* b# `
  993. ;==============================0 ]# g+ }6 A  Z$ ?
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    % w. V5 F6 n7 K
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式2 J9 ^7 ~5 d; x- N
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除( E! i2 Q9 `5 ^+ X, v
  997. ;------------------------------9 C$ K7 v9 O) k) b$ P5 u$ f
  998. ;PPU处理
    , ~5 x- h- |5 j, a7 G+ H& R
  999. PPU_Proc
    5 Q4 `: R6 ^  k% v6 c
  1000. LDX PPU_Cur
    ( N% d: F  F1 X, X, a# Q
  1001. LDA #$00
    # n+ y, B8 S1 _3 v8 ?, k3 b" N" b8 s5 E, i
  1002. STA PPU_Cur
    / ~6 T- B# N. ?& L% A
  1003. STA PPU_Addr,X
    : l6 W5 Y& v6 H
  1004. LDA PPU_Addr5 s, L9 y0 J* v( y- d& x
  1005. BNE PPU_Proc_Beg
    # i. H( @# u' B. D' W# X
  1006. PPU_Proc_Ret
    ! U* j; T: V5 Z% b  v# `
  1007. RTS+ y  z4 w/ k+ @9 [2 `! B
  1008. & c! M3 y" v- L, e% X1 m
  1009. ;------------------------------
    1 Y9 U4 B* }9 |) h% L
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    0 b& N& {+ D- f  o, r0 V
  1011. INX
    $ H7 D0 Q9 T( H% R
  1012. LDA PPU_Addr_L$ A2 R/ R: J/ \
  1013. CLC7 Q* y! c6 x% T/ H6 L) o4 u
  1014. ADC #$203 U" I  P- g6 n
  1015. STA PPU_Addr_L
    3 d" }' }' c, h5 w6 V
  1016. BCC PPU_Mode_Return_Cnt_End
      ]! N1 Y3 @: M
  1017. INC PPU_Addr_H
    & j8 e! U+ Z. B) A( \! s
  1018. PPU_Mode_Return_Cnt_End
    3 W+ r( K% k+ ], y3 r, _
  1019. LDA PPU_Addr_H
    9 X' w2 i( l1 x' @) l' W
  1020. STA PPU_ADDRESS
    7 E- |& t* k( I$ J3 E  J3 [
  1021. LDA PPU_Addr_L
    # k; x1 d0 p/ ?3 y& W& V
  1022. STA PPU_ADDRESS# N* |9 X0 f, v+ r3 V5 h
  1023. LDA PPU_Addr,X+ u% F8 Z% b( ], [
  1024. TAY
    ' r' m2 @( x" c+ E/ e! v  q$ `
  1025. PPU_Mode_Return_Cnt_Write
    6 ]( m% d& }3 ]7 P' q7 P+ V
  1026. INX
    3 g" |/ h) x" V) @6 e6 I
  1027. LDA PPU_Addr,X) r- r1 ], `3 k$ Z( k. ~
  1028. STA PPU_DATA5 G6 K( |* K& `- D
  1029. DEY4 S* {: d  S/ ?
  1030. BNE PPU_Mode_Return_Cnt_Write+ ^) F* c4 I1 N
  1031. JMP PPU_Proc_End7 D1 m  p# b3 n2 f  q

  1032. 9 W% d9 e' j5 R0 a
  1033. ;------------------------------1 B6 w3 _4 ~, ~9 Q
  1034. PPU_Proc_Beg  ;处理开始
    , x# f) u3 W0 v% `
  1035. LDX #$00. Q5 b- p) K' ~
  1036. STX PPU_MASK
    " j1 Z1 O! L; ?* s# r% L' F' L  o  L
  1037. ;------------------------------# L" Q! F4 F$ F  d
  1038. PPU_Mode_Select  ;模式选择
    6 P6 q; _! p* @# b" ^
  1039. LDA PPU_Addr,X
    % j, A' m4 V" b% N% E5 f+ i
  1040. CMP #PPU_MODE_CNT_CLEAR4 |0 `3 {% P" y. L; A+ Z
  1041. BEQ PPU_Proc_Clear
      n; L! N0 s0 Q4 l7 c- q
  1042. CMP #PPU_MODE_CNT_LINE
    & L9 W$ N- S( F  z
  1043. BEQ PPU_Proc_Cnt_Line: b+ i5 w* J" Z$ Y' w$ @1 _
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    ( |" g# I* H( v, _; r. o
  1045. BEQ PPU_Mode_Return_Cnt, t2 L6 \5 f( E9 d8 x" q" ?
  1046. JMP PPU_Proc_End_Write
    ! j9 I" J1 E4 B+ N, @
  1047. ;------------------------------
    % _, O9 V/ q  A% f* l: x
  1048. PPU_Proc_End  ;单行写入结束; P9 `9 a. V4 q4 f* A$ b
  1049. INX
    - |7 I- y( c2 [7 M; x+ ^0 A* m
  1050. LDA PPU_Addr,X
    # {6 w0 S) P, ?1 I
  1051. BNE PPU_Mode_Select
    ) j( N+ A- K- i4 |: m' h6 i
  1052. STA PPU_Addr
    8 w  w" b- P3 O
  1053. JSR Update_Palette_Color! _7 y6 f9 j  R" l) f
  1054. 2 C5 q& m1 L( w" s" U/ g6 H% A
  1055. PPU_Proc_End_Write% F8 g& {0 p6 S7 F2 d
  1056. LDA #$00
    0 M7 J! U% Z  l+ U
  1057. STA PPU_ADDRESS7 n: L# O( Q4 U8 F$ x) [" U5 o# L, o
  1058. STA PPU_ADDRESS4 J5 @  [2 |; @1 c- S* [' m
  1059. LDA <Text_Disable_Flag9 {) ^- l% i. Z2 N4 K& V
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF. V0 U. o9 M: {# ]( Z
  1061. STA <Text_Disable_Flag; L" s: A( v; H8 p3 o& m* u
  1062. LDA #Scroll_X0 }$ K% m8 O9 k0 c
  1063. STA PPU_SCROLL
    6 v: `+ x2 o( C3 k& @, Y& y
  1064. LDA #Scroll_Y' a9 x9 S* _2 Y- v" V  O) g
  1065. STA PPU_SCROLL  ^9 p0 S' }5 f4 ^. l& s
  1066. LDA Screen_State4 L+ F' p, i% l( g# C
  1067. STA PPU_MASK
    ' M2 v& Y6 }  l. @  Q- X! E% S9 n& G
  1068. RTS
    5 D* h+ j8 E+ u' x1 w6 k$ ~
  1069. % b9 d  ~' l$ V" j$ |3 w
  1070. PPU_Proc_Clear2 T9 y. J9 c8 u5 E: d
  1071. INX
    : m* Z8 V" f8 [9 L/ l: z8 ~
  1072. LDA PPU_Addr,X' O4 b1 B1 h/ H4 N: [
  1073. STA PPU_ADDRESS
    " {2 l, K+ S- s, D4 l$ ^
  1074. INX% |! X. D4 U6 C( `- K
  1075. LDA PPU_Addr,X
    2 O% f9 {8 ^+ ?  @2 I
  1076. STA PPU_ADDRESS! u+ k6 U& y4 b' g! K
  1077. INX
    / q  i. u4 i+ j# {+ I* }
  1078. LDY PPU_Addr,X  z% ^7 f3 M' w$ i: _$ Z& q  l
  1079. LDA #$004 u8 K  x; E8 K# w: K
  1080. PPU_Proc_Clear_Write
    4 j0 E( g; V& l  @, ?* {9 c) K
  1081. STA PPU_DATA
    , g& U) Y0 N  ^2 h' e
  1082. DEY" U( O8 d- z6 r) d6 K
  1083. BNE PPU_Proc_Clear_Write
    # B1 ~6 E/ \& ]/ I) e1 g8 A$ X% B
  1084. JMP PPU_Proc_End* \  @7 \! K8 A  M9 \$ R
  1085. ' l  D5 d9 `$ [8 Q; u( k2 t- O0 f
  1086. PPU_Proc_Cnt_Line
    3 H5 Y, u, V; \0 K6 Y/ @
  1087. INX, g2 G+ S- q7 [0 \) \' \* b
  1088. LDA PPU_Addr,X
    , f& a6 T9 [9 D* J) B# _
  1089. STA PPU_Addr_H% H0 u7 X& q) ?! A. X2 I
  1090. STA PPU_ADDRESS& O, K7 d; I  ^9 I" j$ n
  1091. INX' v+ H) h* W/ @( |7 M) q
  1092. LDA PPU_Addr,X% i1 P: K) I  p6 V; c0 ~& t4 @, g
  1093. STA PPU_Addr_L0 Y. c  L' X* D9 q! A
  1094. STA PPU_ADDRESS1 k/ S$ V% S, M' f0 D" o
  1095. INX5 u. K! j0 e+ M
  1096. LDY PPU_Addr,X% A) F# `) L# \9 Y
  1097. PPU_Proc_Cnt_Line_Write2 M" B; F+ `1 v; r
  1098. INX
    9 m- F: A1 x) `1 G  M: i
  1099. LDA PPU_Addr,X
    ) O0 X0 z% h  E: _7 D) j) t
  1100. STA PPU_DATA
    8 J6 E. Y) J: I3 Q; Z9 w( @9 K
  1101. DEY" j1 K6 ?, ^- l) v4 P  H
  1102. BNE PPU_Proc_Cnt_Line_Write. i# P+ H9 [- K
  1103. JMP PPU_Proc_End8 d0 Q  ~; S2 Y

  1104. 6 W' c( Q* o( ]9 }2 [
  1105. ;==============================
    9 E4 V5 x+ V7 s4 t( p. G, Y& m% X& l7 d
  1106. HEX_To_Dec;十六进制转十进制8 P* c' R& [: h' \9 M5 ?
  1107. STA <HEX_Data
    . Q# O5 s& Z+ }$ B3 h' `
  1108. PHA
    2 v/ M7 V5 e- ^7 f
  1109. TXA
    0 Z+ y* p/ q; J# g6 p: k
  1110. PHA. L3 q& O. L: y  o6 H
  1111. LDX #$00
    3 u2 @% O9 J! r1 u
  1112. LDA #$00
    . H5 U, W6 m! O& ]% V
  1113. HEX_Cln! `" a( L/ r, J( z
  1114. STA <DEC_H,X
    0 J, G6 o! V' N' ]4 i  _
  1115. INX8 z& i3 g- S' ?( }, P6 t5 L
  1116. CPX #$03: G" A/ d; z: p# d3 D7 [& H4 k8 Q
  1117. BCC HEX_Cln' L0 D& n3 j9 L( H# N1 z
  1118. LDA <HEX_Data
    1 u/ f7 X1 L$ L
  1119. ;------------------------------/ _- |& S8 z+ j# z  ^4 B* B
  1120. HEX_1005 P+ Z/ I8 p" e
  1121. CMP #100/ a( O7 _# y8 W0 B1 |
  1122. BCC HEX_10  P+ x, ]; Y0 O8 U+ _, F; ~
  1123. SEC  G" U% z0 m3 j, L, R( a
  1124. SBC #100
    ; [) ^% t+ g& `& j
  1125. INC <DEC_H# }8 G0 {/ Z5 W% ?# G; [  e
  1126. BNE HEX_100
    ) J5 @$ l5 r% o5 F: x. E7 b
  1127. ;------------------------------# m2 s0 T5 I% e4 p5 Q
  1128. HEX_10
    : t1 c: D3 J! L8 l4 ]/ k& R* c
  1129. CMP #10
    ! Z& t6 x3 d& D: N
  1130. BCC HEX_1
    4 Z: D& T2 A! Y, v8 \8 U( M
  1131. SEC
    % Y. z- g; Y8 V/ O9 f
  1132. SBC #10/ I# x5 E! `! @5 E/ I8 ^- J0 u! r
  1133. INC <DEC_T
    " m: Q- d+ I% k0 C. p
  1134. BNE HEX_10" @9 a1 @) P# ]. t
  1135. ;------------------------------: L! x& d7 i. }* w; |! J
  1136. HEX_1% m6 Q4 Y/ t% V0 o6 D
  1137. STA <DEC_L
    6 Z/ ~. i1 @  L7 P. M
  1138. PLA, O9 k, W3 ^! O9 M  t
  1139. TAX
    2 c5 X/ Y# T: ]  H
  1140. PLA
    + x- A$ x! _) k
  1141. RTS) V$ ?/ X/ V' W; C# z
  1142. + ?* h# O; @) V; y
  1143. ;==============================" `, {/ s: x, P3 E
  1144. ;音乐曲目显示7 x/ V5 |) c1 k! n
  1145. Music_Show. x8 @: W, N  }0 `3 Q) S
  1146. LDX <Music_Item_Cur& {" M5 N9 X$ `0 S7 [: l
  1147. LDA <Music_Cur,X: j. F! e' U/ X3 l0 B
  1148. CLC6 Y- g( E9 H  G  x* d/ n% x2 r
  1149. ADC #$01
    & g$ a& r3 |) b2 p3 O3 R$ x
  1150. JSR HEX_To_Dec
    4 C4 d4 n) _% e) k& X( T$ [4 d, W2 }
  1151. LDX PPU_Cur
      f0 @9 X8 `2 T- n! v
  1152. LDA #PPU_MODE_CNT_LINE7 H7 R( t( ], I3 I
  1153. STA PPU_Addr,X
    4 p  Z0 [+ b4 p' `" ?8 A6 ~
  1154. INX4 G( x0 u! z' Y9 D; L' H
  1155. LDA #HIGH(Play_Index_Pos)* @0 j) C" y+ c
  1156. STA PPU_Addr,X) s  g9 J, x1 ?( R5 K8 J
  1157. INX
    * ]0 \% D7 i" J& h4 J; A
  1158. LDA #LOW(Play_Index_Pos); u2 w. T+ _3 r2 z% t6 z1 M
  1159. STA PPU_Addr,X2 w; ~( }' Q  ?% G: f
  1160. INX
    - T3 C4 W) t: [1 G5 B! X* l2 T7 C' x1 I

  1161. ; r6 k$ h; M  z
  1162. LDA #$07- c7 q% g# l3 v; u: }( R$ Z
  1163. BNE Music_Show_Length
      I* G9 m7 [5 C% p# I* Y0 Q
  1164. 1 r. F) s' I& I
  1165. Music_Show_Length, U/ {7 q2 [' q
  1166. STA PPU_Addr,X
    9 \5 o' w8 r0 Y6 T: u
  1167. INX2 F) V7 e- ~, a1 D

  1168. + J6 E. T: c9 _. s' ]3 ]7 t
  1169. LDA <DEC_H  [* W; t; `+ Q% \4 e3 w
  1170. ORA #'0'
    * {5 O$ \# V) H) d3 B! l
  1171. STA PPU_Addr,X
    + K) G$ D- R  k4 H2 F
  1172. INX/ \, p- C9 P! I1 [" _

  1173. ) \: z: X. K) {  f; a
  1174. LDA <DEC_T3 z2 S1 g2 N% G+ o* c; N
  1175. ORA #'0'0 @# T* y8 n4 S# {9 u6 b
  1176. STA PPU_Addr,X2 i' V. Z9 ^0 l( d( s2 u3 A, H8 U& a
  1177. INX+ r! v9 [0 i, |" m5 v+ \; w

  1178. 3 c' W* ?0 G5 l3 `5 q6 j/ @
  1179. LDA <DEC_L' U+ O; E1 \( F4 V
  1180. ORA #'0'
    : c! N8 X2 E7 r- ?- @
  1181. STA PPU_Addr,X
    7 @# G, t. T! ]
  1182. INX. W( T. x( ?3 L% ~3 Q- X

  1183. $ @3 M: M( H; S
  1184. LDA #'/'
    1 j& q9 S2 p. G7 }% i
  1185. STA PPU_Addr,X
    ! u6 ~! p0 v# {- P
  1186. INX3 |" U- K% Y1 q# f# s* R
  1187. Music_Show_Total
    0 g& T' H/ @2 y& y
  1188. LDA Music_Total3 i: ^- d! \5 M( Z$ x
  1189. CLC. {/ \, |2 O) x4 [" M. l6 n0 N
  1190. ADC #$01* H( @+ r; R3 `8 W; Y. t+ A: o
  1191. JSR HEX_To_Dec) o7 y- Z5 A) I: m: j

  1192. , H  r  L. h& A  i; p. {- T$ ?+ m
  1193. LDA <DEC_H
    ( X3 ?0 S, M+ G7 f
  1194. ORA #'0'$ R  `$ z8 x9 L0 O
  1195. STA PPU_Addr,X% _( t' I1 y7 E
  1196. INX; O) D9 R9 x4 z$ r1 G  R" ^

  1197. % o1 m  E8 b. Q: a# A
  1198. LDA <DEC_T( q1 I- R/ i: Z* Q- g1 I
  1199. ORA #'0'
    , v8 g$ v1 I- c) y8 j2 Y
  1200. STA PPU_Addr,X7 u) ^; ?* R1 X2 P0 s
  1201. INX% X: m  Z, ^) o5 \; @9 b: p
  1202. . M9 u4 F- R3 [4 U
  1203. LDA <DEC_L* k- [% Z6 d4 i* m
  1204. ORA #'0'
    * D* n: L# R0 v* R) K$ Y3 N
  1205. STA PPU_Addr,X3 M1 e6 }( N+ i# {. L4 q
  1206. INX
    ; K3 u' q3 w2 E! F
  1207. 7 k0 Z4 P8 e2 ~8 F* u* S5 {
  1208. STX PPU_Cur
    6 j) l  O. v' ~8 b' h
  1209. Music_Show_End
    " \1 z' c7 j0 c
  1210. RTS3 x( u. e/ X! |
  1211. % U; W8 a/ I) l. S& R0 m
  1212. ;==============================
    & F/ R/ o1 ~1 ~; r
  1213. Time_Show;播放时间显示
    ! r" v0 b: j% e! a( V8 N- U5 g3 h
  1214. LDA <Text_Disable_Flag
    0 p) s2 _# \" j( u
  1215. AND #TEXT_DISABLE_ITEM
    6 I( c% T9 T+ |- v. {
  1216. BNE Time_Show_End
    6 E0 q! Y. l, i
  1217. AND #TEXT_DISABLE_TIME
    4 C9 ]5 U% `# |2 A& M: x. z3 u
  1218. BNE Time_Show_Enable
    * @; }: |. ~3 L/ |4 u4 d0 x" J9 X

  1219. % |% k+ A7 Z+ D9 S6 s! W( e9 ?5 W2 ^
  1220. LDX PPU_Cur
    2 j9 Z; L1 G, @6 \. a
  1221. LDA #PPU_MODE_CNT_LINE
    2 O# g0 q7 [6 K3 q
  1222. STA PPU_Addr,X
    : h( L% V, I4 p+ m0 w. K& S2 E
  1223. INX
    9 U; a- z* |6 ]. g0 m4 ~
  1224. LDA #HIGH(Play_Time_Pos)( d$ ^& u) Y, t5 ^3 r# |3 j
  1225. STA PPU_Addr,X
    ( U( N  g( B5 s' e. i
  1226. INX
      B) @3 _) m4 i% R! w$ c1 z
  1227. LDA #LOW(Play_Time_Pos)5 T! Q3 G5 y& p% [) k# P
  1228. STA PPU_Addr,X! m* o4 q7 H4 |2 @/ J
  1229. INX
    / d; w4 [8 Z4 f8 U
  1230. LDA #$08* V) U, Q& n" [7 n6 S
  1231. STA PPU_Addr,X/ q2 K' h0 G3 |- H' B  W$ X7 X; J
  1232. INX
    ' }' O: E3 P6 y3 j/ A% ^6 A
  1233. Time_Show_H$ z8 g2 ^/ u! x
  1234. LDA <Time_H
    - h3 G5 t) b7 ^+ x" l- Y' h
  1235. JSR HEX_To_Dec
    ( O1 l1 a- i2 ~8 N" V, [6 M( q/ {
  1236. JSR Time_Digit% ]# s6 m/ n# |! n+ A! T0 Q% W0 e8 [
  1237. LDA #':'
    / S& G3 G! t! _  p
  1238. STA PPU_Addr,X0 [3 F7 j, c. C8 h( ~  E7 ^. E
  1239. INX
    2 U! z# d; s2 M7 d- g- a8 m7 D
  1240. Time_Show_M1 c" m0 i, O: B& Y# ]5 l) e( J
  1241. LDA <Time_M3 |" }8 k( p! \& K
  1242. JSR HEX_To_Dec5 x+ ]9 p7 c  g0 b
  1243. JSR Time_Digit; R: m: j1 W+ y3 Y3 W8 {. [
  1244. LDA #':'. B( ]1 |8 E% y1 ]
  1245. STA PPU_Addr,X
    5 c2 O7 B; I+ C! F' X# Q9 ^
  1246. INX
    8 @. g1 F7 L. S; G% X3 V: O( |
  1247. Time_Show_S" l2 e2 D+ d5 s/ i( a% }# Q& O
  1248. LDA <Time_S
    , |3 z3 I  k1 z( g1 c3 V  S$ V
  1249. JSR HEX_To_Dec
    " }3 C! G' o8 K; R3 v1 k
  1250. JSR Time_Digit
    9 V% I  Z( A! h7 R/ S/ g9 z
  1251. STX PPU_Cur
    : F% f9 H- r" j. q# K4 Y5 \
  1252. Time_Show_Enable; @/ N2 D; v7 u+ e* @/ O9 |0 X
  1253. LDA <Text_Disable_Flag, N4 L2 k% q& m0 y, `# j
  1254. AND #TEXT_DISABLE_TIME ^ $FF+ h2 s$ e6 U  Y
  1255. STA <Text_Disable_Flag
    ' P3 J( ?" ^- ^
  1256. Time_Show_End/ a" J- q# w- H  w/ {
  1257. RTS# w3 f+ x3 q7 E8 E1 E
  1258. + n# x8 [6 @0 Q( T) C! @
  1259. Time_Digit
    - o# T7 z6 ~9 t( s" r) G
  1260. LDA <DEC_T
    & Y* a- z$ A1 h- q- p7 D7 |' n
  1261. ORA #'0'
    8 o5 i0 [, [) i% _: k0 i
  1262. STA PPU_Addr,X
      J- h  B* b- _9 ?/ J9 O4 l3 Q
  1263. INX* _4 v6 ^6 u6 T8 }& o/ `
  1264. LDA <DEC_L
    : k7 {+ e9 a' N
  1265. ORA #'0'
      V- R. D9 W: c, R  D4 ~4 W" Y
  1266. STA PPU_Addr,X
    % u  ~0 ^% P7 M3 n
  1267. INX
    1 l! s1 r/ u5 v7 U
  1268. RTS" J: U, I& D; h& ~' [- V- V: R
  1269.   ?3 w1 [3 f/ [
  1270. ;==============================
    7 g6 {5 u- ~: w# H
  1271. Time_Count;计时8 N; n. G% N7 }* p; @9 I
  1272. LDA <Music_Stop_State
    ! U7 I/ M# H4 _5 q- Q8 E; r0 }
  1273. ORA <Time_Wait_Cnt0 I- k3 T. a9 u6 H- [" ^7 K8 n
  1274. BNE Time_Count_End
    ) Q. y6 U% G9 }% ~7 ~5 h
  1275. INC <Time_Cnt- t) N8 R/ E0 B5 s
  1276. LDA <Time_Cnt3 P+ C- x0 [+ ~+ f+ T) x, N/ P
  1277. CMP #60' J) y' I! Z# O  b; ~
  1278. BCC Time_Count_End) F2 [7 @$ q2 b: N
  1279. LDA #00) Y8 ?" l; N* u2 f- V2 N  \3 @+ {
  1280. STA <Time_Cnt
    . N1 ?( _* z0 K9 E2 N' L' w6 y( t
  1281. INC <Time_S0 F) O8 q# Y+ W5 ]
  1282. 5 u& i- w& E2 I5 K* h4 g
  1283. Time_S_Cnt6 |8 |7 ]4 c" j  {" x
  1284. LDA <Time_S
    0 A6 m; ?# l+ _
  1285. CMP #60
    ) `) T  I2 J' p! Y
  1286. BCC Time_Count_End$ ~- ]+ G: a! b- ?
  1287. LDA #00' @5 e. r4 K4 l3 q' Q
  1288. STA <Time_S
    4 ^8 Y  q, Q6 \
  1289. INC <Time_M' a! F! Z  \) X# b5 m) T( B

  1290. 1 D8 w: ~1 p- E/ o8 J
  1291. Time_M_Cnt! L1 J( G1 y& P7 z: N
  1292. LDA <Time_M
    1 C5 p3 {7 b4 f
  1293. CMP #60% J6 E- }  q0 k
  1294. BCC Time_Count_End
    . m. x9 M, R5 p% |9 ^
  1295. LDA #001 w8 j& X  \1 ^8 L3 R/ i9 ^. \
  1296. STA <Time_M1 T9 a! P0 n5 `+ ^! c
  1297. INC <Time_H
    * s5 i( W( Q7 a; \3 x

  1298. . q  C& H% [9 o8 u1 D
  1299. Time_H_Cnt' {- ?' R# J6 G2 w' `/ b" ]3 _  C+ x
  1300. LDA <Time_H- z# }" ?+ [: ^# O% Z
  1301. CMP #241 n1 c7 G4 v+ I0 ~/ x  f: I
  1302. BCC Time_Count_End
    & m4 D# {/ B  X" y) I1 T' @2 \
  1303. LDA #00
    # g2 G, Y9 z& u) ]+ w6 z
  1304. STA <Time_H
    4 x. ^$ z0 ~/ `. [7 J
  1305. 3 Y) H2 _. H1 H2 Y9 E5 e. c( \
  1306. Time_Count_End
    . s* P( e2 t/ o* t$ G
  1307. RTS( f/ N+ R* R( j
  1308. % t: f0 m/ L" _# e& N
  1309. ;==============================/ N- h: `  Q" S  J# I
  1310. Time_ReSet;播放时间重置, X4 l9 C3 _. k4 c; K$ a' W" j
  1311. LDA #$00
    + g/ Q$ K6 Y- G- f9 D9 K
  1312. STA <Time_S% L- t4 E! S+ `8 E3 P% Z4 B% Q9 T
  1313. STA <Time_M ( |9 ]" a9 e4 W+ v3 Y( C
  1314. STA <Time_H
    ; }& f. ?, b7 y# m* Z) E. b) C
  1315. STA <Time_Cnt
      u* ^# h. a1 g  V
  1316. RTS# V: ]  j7 @0 b, _% ~: v
  1317. . w( K( k2 ]  j& f. e
  1318. ;==============================# k) p9 ^  o, u4 o5 H/ O
  1319. Music_Bar_ReSet;音乐条重置
    6 W6 N0 ~; Z* o( `4 b: o) i: E
  1320. LDA #$00- J2 g5 t7 _) F: y: w# A# {
  1321. LDX #$006 w$ i$ |, a5 X0 |- h% C9 G) k
  1322. Music_Bar_ReSet_Set
    + {% z$ `: l% x3 F" x) u$ _
  1323. STA Sound_Bar,X( L* k  ?( r2 S7 y' f4 w( Z/ x; Y
  1324. INX8 a* R$ E! A$ `: H8 @
  1325. CPX #$10
    . P* `% u% ~: V" E+ r- A1 n+ m1 ]: m
  1326. BCC Music_Bar_ReSet_Set
    9 R1 e3 a, L: P# h( \9 g
  1327. RTS
    8 |( j7 @+ }; Y  ~+ d  a; J/ `4 [5 D
  1328. & N7 {2 C% K& I  b' z# R) s2 \
  1329. ;==============================+ P: R6 F+ ~/ T9 T+ {
  1330. PPU_Data;PPU数据写入
    3 u6 T" R/ L# k, I# l% }0 o8 Q
  1331. STY <Data_L" P: B7 s. A2 F  T8 U1 U
  1332. STX <Data_H. Y# f) ]! `; ]5 G* C" w
  1333. LDY #$FF: D. @( Y. B2 n
  1334. LDX PPU_Cur
    . x0 \2 M9 S# o! o
  1335. DEX
    7 f- E# f0 a9 U- g4 B0 K
  1336. PPU_Data_Beg8 y5 g9 Q- u3 G# W2 T
  1337. INX1 D# ]/ s8 E, s* E9 S  S
  1338. INY
    7 N& M, g5 y+ c
  1339. LDA [Data_L],Y
    ; o  C- b7 _1 a4 e& D. k
  1340. STA PPU_Addr,X% ]# C6 m+ Z$ b9 A% G
  1341. BNE PPU_Data_Beg7 l: {; ^" R; x+ |6 V) b
  1342. STX PPU_Cur4 Y5 T$ `+ H! P& u7 j2 }9 G
  1343. PPU_Data_End
    % s4 c6 ^8 f. l; J
  1344. RTS
    1 Q7 W, M2 T& A: m) Q+ k: v
  1345. 2 O9 e( Y3 H: u' f
  1346. ;==============================
    ) ~' S3 S  `8 S, ]* |: v9 R1 W# x
  1347. Music_State_Show;播放状态显示' E5 _& Q9 G- m
  1348. LDA <Music_Stop_State/ K5 m1 W4 S& h: j
  1349. BEQ Music_State_Show_Play
    : w3 X7 X4 ~# T: u/ b
  1350. Music_State_Show_Stop% S' I( I, n9 Z) x* u! N: `
  1351. LDY #LOW(Music_State_Stop). P# R: \) o* b  U5 E0 P
  1352. LDX #HIGH(Music_State_Stop)
    2 W2 I# N8 N6 y7 c' M7 f% k3 k
  1353. JSR PPU_Data
    6 T' S. [4 K" E5 r4 {  A7 ~3 a9 _# G
  1354. RTS0 a; m( d& D, T
  1355. Music_State_Show_Play
    3 f8 j3 m- @; ]7 Q' k: N
  1356. LDY #LOW(Music_State_Play)
    # u5 q$ M3 K1 ]4 \; t+ y  N& ^
  1357. LDX #HIGH(Music_State_Play)7 ~7 ^9 o7 t% ^$ |1 d* d
  1358. JSR PPU_Data
    ' v. c- L* e* k3 `
  1359. RTS, v, {: Y+ n. ~% g1 T9 F/ V+ d

  1360. 2 E# ^/ ~! W% C$ ]4 X5 P/ ~( w0 |- f
  1361. .IF SOUND_BAR_SHOW_ENABLE4 c. x' N5 y1 V1 [8 X7 \+ ?; h4 x* i% n
  1362. ;==============================
    " o7 D. }9 c/ E6 C! E+ Q0 l0 l
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    ; L4 W5 ?; o5 N  \
  1364. LDY #LOW(Sound_Bar_Text_Data)1 K5 U. [# a* F& X0 S: w0 g, O
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    . S9 n5 Y  }# C. x+ {# u
  1366. JSR PPU_Data" L$ x5 k8 i  K5 }6 P8 n( P4 M, L+ I4 r
  1367. RTS
    1 x2 a3 h, ^5 \7 Y! _0 f- b
  1368. ( y4 d' Y! m" j/ |% L
  1369. .ENDIF" H8 _3 h& R5 r3 {; R

  1370. + j% [0 ^4 L9 |& z( |' k9 P
  1371. ;==============================" S% F* `, M! }! d2 G8 k
  1372. Set_NameTable_Attributes;设置命名表属性
    / e* M( H' ?  n: X0 z8 J5 c1 |
  1373. BIT PPU_STATUS3 t+ k) Z5 L  ?. j
  1374. LDA #$23
    # l1 A( }! m. ?0 L1 c
  1375. STA PPU_ADDRESS
    ) N) X+ R% M; B  c; u$ _# V
  1376. LDA #$C0
    2 j9 x. D: n8 r+ i3 l$ c; \7 G
  1377. STA PPU_ADDRESS
    6 C" S  M8 i  x/ A" {
  1378. LDX #$00* k0 T5 U$ \! Q! e: O) \) b
  1379. Set_NameTable_Attributes_Write
    ! R4 x0 v; d( u6 C" M0 A' k' p
  1380. LDA Palette_Attributes,X/ m- h) l/ \2 y7 |) X
  1381. STA PPU_DATA
    ' T3 t; n6 R& P2 F; n8 L# z1 D9 S
  1382. INX
    % J, _( i  N: ~4 _7 e
  1383. CPX #$402 x: E0 ~) |) `" n' [# `5 M% q- n8 m
  1384. BCC Set_NameTable_Attributes_Write
    6 H6 {0 B$ K7 t( D
  1385. RTS7 @6 X3 K- _# c. c. W
  1386. 3 ~1 g. h8 J  z$ \3 c
  1387. ;==============================: g0 T3 X5 O& d# |- [" y
  1388. Set_Palette_Color;设置调色板数据
    ! h" Q/ }; p: U! V: H
  1389. BIT PPU_STATUS
    - O* U" M; m$ F4 T8 F9 |$ H% E* o5 Q! O
  1390. LDA #$3F* ?. x0 v" l: S& G
  1391. STA PPU_ADDRESS
    " o) w5 n- O/ J0 `9 D8 Y5 K
  1392. LDA #$005 }) o4 Y4 R. l; j: j
  1393. STA PPU_ADDRESS6 f" F. [% r- `8 m; n0 V
  1394. LDX #$00
    : i2 K9 @# N3 b' ~+ \4 |0 ^, \- P
  1395. Set_Palette_Color_Write# B, k$ A3 n: ~/ h, c9 g3 w
  1396. LDA Palette_Data,X
    ! Y( H* u: e# I4 K
  1397. STA PPU_DATA1 o& B0 c1 D' D2 q; N  n" z
  1398. INX
    7 {. a! c7 b! A3 K( b7 _" o8 ]: {
  1399. CPX #$20/ }' c+ u  ^( g- V$ f
  1400. BCC Set_Palette_Color_Write
    8 d. X! ~$ w1 i- Y! Y
  1401. RTS
    . ^1 C  ^. F4 H- u  {' W& Y  s

  1402. + D& Q$ ], T# M3 E' z1 |* Y
  1403. ;==============================+ w, X9 B( N: B0 r" R+ k) V7 h4 x
  1404. Init_Palette_Addr;初始化调色板数据
    ) O+ h( J) c# U! ]: ~
  1405. LDX #$00
    ( P" O) x1 B0 q8 b
  1406. Init_Palette_Addr_Write  O; E/ P0 ^- M, W
  1407. LDA Palette_Data,X
    4 r, ]" Q" `: o# e; Q
  1408. STA Palette_Addr,X1 j5 T) s2 c' n
  1409. INX
    0 ~0 x, n1 {4 ?8 U4 }( P- w
  1410. CPX #$20
    $ h8 a; \+ M2 m$ B
  1411. BCC Init_Palette_Addr_Write# P: E4 |4 A8 h
  1412. RTS/ S" a* K3 r. l
  1413. 6 O. W; J8 ~/ |
  1414. ;==============================: w; \! J5 n) {$ N! u! d) @! z0 @5 T
  1415. Update_Palette_Color;更新调色板颜色
    ' Q+ e) O. A5 q2 g/ U  C
  1416. LDA <Palette_Update_Flag
    # e. y9 ?# N! w* q% f
  1417. BEQ Update_Palette_Color_End* R+ O1 w% q) o$ }
  1418. LDA #$3F1 @; w, H0 a/ K5 y2 L( _9 N
  1419. STA PPU_ADDRESS8 ~3 `! |- C9 t6 e. _6 k
  1420. LDA #$0C
    - |  ~2 q, g8 u2 D' f3 _8 D
  1421. STA PPU_ADDRESS
    # r# z/ j/ t! \
  1422. LDX #$0C
    9 J8 F& p& i) H3 ^2 [
  1423. Update_Palette_Color_Write
    / m2 z1 z$ j4 A( ^% t. r
  1424. LDA Palette_Addr,X
    8 ~. @; N3 n5 J4 H: \
  1425. STA PPU_DATA
      ~" h& M% B, M2 i
  1426. INX+ z; M* P9 T, L4 }% q/ x2 ~" J: f* t
  1427. CPX #$14; p8 ]2 _% C, H- o/ O7 ?! o2 ^0 O
  1428. BCC Update_Palette_Color_Write
    9 ~8 F, ^( |' y, D
  1429. LDA #$00. B( \5 q! {% z
  1430. STA <Palette_Update_Flag
    ! A: }! A6 G' L( w' B4 n* j3 \
  1431. Update_Palette_Color_End
    * r) @3 X  U" m" e" E5 |" K
  1432. RTS' u2 e% W0 W! Q7 @

  1433. * `; D- X3 O3 K! }( r8 z

  1434. + X8 d+ A; ~; V- [6 J: n0 }
  1435. Update_Sprite_Palette_Data
    ) q& m) ^6 Y3 l* V" \
  1436. .DB $214 x, `  V7 s' B2 [" i
  1437. .DB $21) u: p4 y' T, t0 z
  1438. .DB $11/ y4 Y: l$ n+ Z( G+ d
  1439. .DB $01
    & q  q: k6 }" W  u* V4 F
  1440. .DB $01
    : v$ L* j2 v/ W) w5 P+ P2 b
  1441. .DB $11
    8 s/ y( I7 }3 {" E3 t6 w; C
  1442. .DB $21, I1 G1 @; n" h7 {7 |
  1443. .DB $21
    . z0 r8 A2 m* i) ]% u
  1444. .DB $11
    8 Y3 F2 i, S7 S4 s
  1445. .DB $01
    " z2 l$ Z: I+ P! Q" ^6 R
  1446. .DB $11
    " ~+ h9 E  ?% l/ H/ H# J
  1447. .DB $21
    & j' w- J6 t2 @
  1448. .DB $21
    ' z8 C- @& K) [+ ^: t5 r8 c5 I* E& z
  1449. .DB $11
    9 i7 V# I* ^+ K+ k
  1450. .DB $01, M" x( h9 }. \7 C$ [4 P
  1451. .DB $11' l: S$ I  K9 s5 G+ C0 n
  1452. ;==============================# N/ C" P3 I: }6 `- x8 o5 W0 j
  1453. Update_Palette_Data;更新调色板数据
    $ G" E) M+ ?* x" f$ C* [9 h& b5 f& H5 z7 Y
  1454. LDA Nmi_Time_Count
    0 H4 [' P; ~- C0 e: _0 g* S
  1455. AND #$08; M  j1 I0 }7 p1 O9 {
  1456. CMP #$08
    ' ]4 ~! \. @+ w, C" J
  1457. BNE Update_Bkg_Palette_Data* g% n% [. J2 F& V  \
  1458. * T$ N3 B# o  Y7 h& J
  1459. Update_Sprite_Palette_Data_Set4 J' h! y+ y9 d5 y, J, G# F
  1460. LDA Nmi_Time_Count6 O5 }! E9 `. N
  1461. LSR A
    : m( U4 Z7 }% j: q: }: p
  1462. LSR A
    3 y" z0 |6 A0 ?0 a' q, h
  1463. LSR A/ ]2 a& l1 Z) {/ @+ a: I( w. `
  1464. LSR A* l0 W8 w; O3 k6 P' ~8 B
  1465. AND #$0F
    4 z& b3 r2 z/ g# b
  1466. TAX8 h( ]+ c' I$ A. l6 i4 Q5 O
  1467. LDA Update_Sprite_Palette_Data,X
    - X) ^1 I! S  \
  1468. STA Sprite_Palette_Update_Addr
    : ]* D$ S( M1 n: b/ a0 o" H- d: c: ~
  1469. LDA #$01
    . J1 x4 G7 q4 ?4 L, S9 [
  1470. STA <Palette_Update_Flag
    4 W1 j# t% d1 c0 V
  1471. 4 y: n- y8 F2 e7 l/ w$ J
  1472. Update_Bkg_Palette_Data
    ; E8 E( o' s, \4 s
  1473. LDA <Text_Disable_Flag
    * y8 I$ X) R8 U5 N4 N3 O; L- T
  1474. AND #TEXT_DISABLE_RAM& ~6 ?) o, p0 G7 O5 R2 `
  1475. BNE Update_Palette_Data_End. I1 A0 t+ I" V$ u5 r3 {5 S
  1476. LDA <Music_Stop_State: _. B; H1 E  D& F9 j3 n! I9 a
  1477. BNE Update_Palette_Data_End
      o; `5 R% T6 s# x( V/ D2 b
  1478. 2 s5 i3 i0 `+ g- h
  1479. Update_Palette_Data_Check( `* x8 p/ [6 I+ @1 F( n
  1480. LDA Palette_Wait_Cnt1 l7 L# S0 i3 X+ d$ Q# h
  1481. BPL Update_Palette_Data_Check_Over
    - |) e; p$ a+ K3 {; v
  1482. LDA #PALETTE_UPDATE_INTERVAL
    1 Z1 \/ Z+ N. c$ l% e9 u# l8 V! i
  1483. STA Palette_Wait_Cnt2 k' V4 K7 Y4 F, p
  1484. Update_Palette_Data_Check_Over; r- g' r& U- Y$ S* v4 n: g, V
  1485. DEC Palette_Wait_Cnt
    * U" k  T" X7 j9 Z
  1486. BNE Update_Palette_Data_End
    6 q! [, @1 G, Z3 e' m

  1487. & g4 M* {1 |1 M, b: P, B2 G3 Y5 a
  1488. LDA <Text_Disable_Flag
    7 q4 F) B: Z$ I% c$ z' e3 k% C
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME$ o0 Z" x% X- g5 p1 s, `
  1490. STA Text_Disable_Flag
    6 @( J) w: C6 P; N* f0 H5 O
  1491. INC Palette_Update_Flag
    . r* y% |" X& q; e- @2 p

  1492. 8 u/ D0 E7 F' D
  1493. LDA #PALETTE_UPDATE_INTERVAL8 j" f9 Q% i0 w- G
  1494. STA Palette_Wait_Cnt
    9 j9 i  J" M% D, W

  1495. ' C' x2 f3 \1 Q: u) ~
  1496. LDA Bkg_Palette_Update_Addr* ^$ x: m- l! k, v# s
  1497. CMP #PALETTE_UPDATE_MAX2 e! P% j9 S+ Y, l# [, d: A% J
  1498. BNE Update_Bkg_Palette_Data_Set
    ( D% j  H, l5 s5 }& }' A
  1499. LDA #PALETTE_UPDATE_MIN - 1
    0 h4 p3 L( T( N: X
  1500. STA Bkg_Palette_Update_Addr
    % R# q! a1 _) U$ k" j4 _- J! ~; }9 T9 I" X
  1501. Update_Bkg_Palette_Data_Set- t0 `+ Y8 a5 \; l+ b5 t9 T7 {  {
  1502. INC Bkg_Palette_Update_Addr& v( J4 I9 W3 a% g: Q

  1503. * k  y7 E, p4 ~9 o
  1504. Update_Palette_Data_End
    : B) B$ L# _, f: r& p! r$ ~7 @
  1505. RTS, t0 V5 `/ k' H) E

  1506. 3 I; _8 f) m' X
  1507. ;==============================! S1 w4 P7 m1 Q- [; [2 k0 s5 g* F& Y
  1508. Show_Music_Text;显示静态文本
    " P9 M' b# F- y' u! q( Z
  1509. LDX #$008 f% {* j4 q) k
  1510. Show_Music_Text_Set
    9 Q% j- ]% m% [- g6 {0 `& O3 l2 I
  1511. LDA Static_Text_Data,X
    - m% a! t* X4 Y! j; t( n
  1512. STA <Data_L  L9 A5 N6 a( o
  1513. INX+ o1 d. f. ~- O2 b& |# ]
  1514. LDA Static_Text_Data,X8 L. J3 n5 p3 g0 c- D) O4 |6 _! X
  1515. STA <Data_H! S; Q) B6 G) c( y5 D
  1516. INX- Z+ x0 P5 m6 w
  1517. LDY #$00
    - s5 w. F) [3 S: {' M. W
  1518. LDA [Data_L],Y* |, [7 l$ `! G( i6 B" R
  1519. STA <Data_Cnt% |* F  u- D4 ^
  1520. DEX
    ! @; \4 ~& J- f7 k
  1521. DEX8 D' [" k. W; C; ?! `  ~
  1522. LDA Static_Text_Pos,X8 P" @' A. F1 \2 `  e4 j! f
  1523. STA PPU_ADDRESS
    9 |$ ]) A* r! b0 Z3 H7 `4 |. ?7 ~
  1524. INX9 K7 N: g6 q6 v% f) j) z3 ~
  1525. LDA #$20' d( a- X" R( |' m
  1526. SEC" {3 Z4 i! I6 Z$ X' g6 S0 V, s  C9 x$ k
  1527. SBC <Data_Cnt0 b2 p* g: L4 R8 j: |! F; _6 @. \
  1528. LSR A7 B' t) P, Q; D) H% R' C
  1529. STA <Data_Buf# @) P6 z% E- G/ i+ J9 p
  1530. LDA Static_Text_Pos,X3 X7 h# q# _; D2 M
  1531. AND #$E0+ g' Y3 O/ F; r1 c) Q
  1532. CLC
    # X: B* Y* `; H2 o- d) L
  1533. ADC <Data_Buf
    1 n, \& g) Z  V8 B
  1534. STA PPU_ADDRESS) D2 Z8 |* y7 w: w8 g" i
  1535. INX
    3 b  t) r+ r1 v$ _
  1536. Show_Music_Text_Set_Write3 ~. Q0 X% D* J  w
  1537. INY+ y" p1 |3 R! B! m5 e
  1538. LDA [Data_L],Y! g9 T+ E0 `: b- Y9 f9 e" ]
  1539. STA PPU_DATA
    # _, W2 l; R8 Q, n8 T% U
  1540. DEC <Data_Cnt
    9 w: u) D- l6 B: X: ]2 N7 x( _
  1541. BNE Show_Music_Text_Set_Write
    1 H) W" z3 d" @$ @' P7 n2 p
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    ! M8 g( W1 N+ H" a4 d
  1543. BCC Show_Music_Text_Set
    7 \% ~4 X. y1 d  e
  1544. RTS  f* Z) m" J  O6 ^' ~
  1545. 9 E: j# T8 g& ~: w$ w
  1546. ;==============================7 c! ^( S8 T* w9 Q- ?* H
  1547. .IF Track_Name_Pos;显示曲目信息
    - ^* M; ?! {7 }0 h/ U( W( v

  1548. 6 Z3 C8 J* K; _7 V- D. Q: F  N
  1549. Clear_Track_Info
    ; a- m5 B4 u; c9 k8 W* o
  1550. PHA0 Q5 }( y. G1 X& {) Q) C
  1551. LDX <Music_Item_Cur1 y3 V/ ?! Q4 u
  1552. LDA Track_Name_Addr_Flag,X% j' N. O5 ?0 H) w+ y4 H4 _7 s
  1553. BEQ Clear_Track_Info_End_Ex
    % X- _9 s- V# Y) |
  1554. PLA" \6 i+ D. ^; R* e. q4 J
  1555. 6 V% |0 v4 x; p2 N9 t
  1556. LDX PPU_Cur
    9 B  y3 X1 s2 Q. }# [
  1557. PHA
    6 a1 F7 d8 j" j8 u9 x1 w1 W
  1558. LDA #PPU_MODE_CNT_CLEAR
    : h& o/ I; J8 u' c  |
  1559. STA PPU_Addr,X
      ~% q+ ~, K- E8 T5 O& z% y0 W/ l- G
  1560. INX) A( i7 N8 i! M$ U/ R
  1561. PLA
    ; h5 `  x- g( x! Y) g
  1562. JSR Show_Get_Track_Name_Center_Pos
    8 A1 V' P7 L1 l: O4 z6 r2 T- D
  1563. STX PPU_Cur
    $ y3 w" Q; v! O/ l" R0 X
  1564. Clear_Track_Info_End+ X5 G9 a* a3 h: n( _
  1565. RTS( P, z0 O( G% I! O. B7 a
  1566. Clear_Track_Info_End_Ex) q5 ^8 Q) V1 B: C
  1567. PLA
    0 v' D! x: ~* S! v! ~* s6 W9 f
  1568. RTS
    8 a. z" \( u2 U6 Z2 M+ K6 ^. _
  1569. 7 i% A1 @$ |5 g+ \- q' ^  A
  1570. Write_Track_Info3 h) X  a- J9 h- n/ g1 ^7 Z
  1571. PHA2 r" S& r" X* r; a. c5 u5 J
  1572. LDX <Music_Item_Cur5 l  l. R4 ~! y
  1573. LDA Track_Name_Addr_Flag,X0 P) R9 {7 N  \* J/ S' g
  1574. BEQ Write_Track_Info_End_Ex
    0 d% |5 L+ |$ D7 L% ]5 g. ^3 n' w5 r
  1575. PLA
    " ~. [) r, d# ]0 w
  1576. ! f& t" e+ j9 c
  1577. PHA
    0 q5 o3 n* V# R% Y- G- e( w
  1578. LDX PPU_Cur" h7 @8 ~# N& B; j2 ?- E/ c, [
  1579. LDA #PPU_MODE_CNT_LINE
    2 ~4 b* X% A( L; i
  1580. STA PPU_Addr,X5 s8 N9 C6 W  y" i% |  @/ u* Q' h
  1581. INX1 J, G; K% l% o4 s# B. T
  1582. PLA
    ( v' X: |' h7 u1 S; Y
  1583. JSR Show_Get_Track_Name_Center_Pos1 S+ x+ O" ~8 ]" {3 Z9 M
  1584. Write_Track_Info_Data0 q, T$ T; [9 P; c4 a
  1585. INY
    1 _' ^$ b$ A6 J3 k- A% L
  1586. LDA [Data_L],Y! h: [2 R5 `. B1 |0 Y/ u; }) m% k
  1587. STA PPU_Addr,X
    $ R/ I+ m6 X3 ^. C5 Z2 l' [: W
  1588. INX
    0 F$ s4 M. v7 t2 E; R& o8 r
  1589. DEC <Data_Cnt
    : a, ^  H! M) x1 S. k8 j
  1590. BNE Write_Track_Info_Data* y! O& b5 l/ D# \
  1591. STX PPU_Cur7 @" _4 F1 h2 e; _# n/ |
  1592. Write_Track_Info_End
    . ^! o2 F8 v1 g; b! l2 b3 p
  1593. RTS2 O% Y8 m9 C6 n8 N6 G
  1594. Write_Track_Info_End_Ex4 x2 \9 }1 w; R1 r
  1595. PLA' e+ I5 t/ U- {0 A$ R
  1596. RTS
    % m( Z2 \) J& f' w: F9 @
  1597. - T9 w- h  V: j" Q
  1598. Show_Track_Info
    6 z$ n2 Z/ o0 {
  1599. Show_Track_Info_Clear* I  B& [1 [. `; y) z( D
  1600. LDA <Music_Last
    9 m! \! O) t, Z5 _3 c7 P/ H

  1601. 7 r, U# ^# B( }' N5 t
  1602. JSR Clear_Track_Info3 D1 W4 a# f7 B( M8 |) }2 S& G

  1603. - O* f0 `' W. W6 E& |
  1604. LDX <Music_Item_Cur
    + E2 N7 C) \- g( b9 \$ D
  1605. LDA <Music_Cur,X
    2 x5 K$ P" G) [1 o$ w' ?8 @, l
  1606. JSR Write_Track_Info
    ; D/ |" H4 X+ h$ ^2 Z; z: w" Y1 E
  1607. RTS
    / x& {: z" _9 V- l% t7 K+ v# T
  1608. - N+ G2 L" N# _' Z- H# x( c$ A
  1609. ;==============================6 F2 h+ y, Y' P! ~
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    - A6 o7 p; ?- W* k% i

  1611. ) x4 v0 ^  x( G2 y, [2 G) M- s
  1612. ;取出集合名索引3 ?( x6 r4 P4 Y. {0 C, i
  1613. PHA
    + B" j' N7 D0 `

  1614. , C/ S4 d' D- y) u
  1615. LDA <Music_Item_Cur) v& w0 K* B" g0 ]
  1616. ASL A2 a* Z/ f' p, {0 k9 i$ C! E8 V
  1617. TAY$ G% m( Q. A" o/ c9 `
  1618. LDA Track_Name_Addr_Port,Y
    ) \# w! r6 ?8 I0 W' r' M/ D8 L! u% t
  1619. PHA# A/ s, T* n1 t1 Z% k' N2 Z5 G
  1620. INY
    4 L0 }8 r7 D# z1 x2 t/ Z
  1621. LDA Track_Name_Addr_Port,Y
      s& E/ v' b, c% W9 Q
  1622. STA <Data_H, }4 Q( Y. b2 @( _
  1623. PLA) \( f2 w$ Y5 ?& v
  1624. STA <Data_L
    5 }# i) R0 {( F2 L6 L  R( T
  1625. . W; N# z! f  G5 O* L) Y
  1626. PLA, F4 W7 k  w* P8 d
  1627. 9 A6 N$ I) d7 A, d& e: w# _
  1628. ASL A; Z9 K# E+ k: F! Y6 x7 G' v
  1629. TAY
    ! s  N! G( C- L( r' u6 `
  1630. LDA [Data_L],Y# h# A0 X1 |: a( e( ?
  1631. PHA1 X; {! e' q- E! h% V5 `
  1632. INY# e; h* L$ e3 n  h' T+ X0 C% S
  1633. LDA [Data_L],Y
    2 K' f( Q3 I8 b, P3 e
  1634. STA Data_H( k( T+ Y" R5 Z6 w" d# h2 h" K/ P9 P
  1635. PLA
    - m; ], H# J+ M' x% ^: R
  1636. STA Data_L
    " |. m" [; X8 S8 z- L6 P
  1637. ( f$ a! R$ C; o5 r! m7 b
  1638. LDY #$00
    2 l& G# E) p, Q' i2 g
  1639. LDA [Data_L],Y
    + T& p) @; Y# r. \: Q4 }- F1 U8 ?* \
  1640. STA <Data_Cnt
    1 i$ I3 V% x& Y- ~$ Q
  1641. LDA #$20
    ' p) w* i9 W6 l
  1642. SEC
    # M0 v4 d/ P5 D( [, t# s0 ~
  1643. SBC <Data_Cnt6 K& }4 ^: Q8 t7 M2 n) X2 _3 e' Z
  1644. LSR A1 Q9 z+ E! I: f1 s1 Y, f
  1645. STA <Data_Buf+ J- o0 n1 i* ]. F" s
  1646. LDA #HIGH(Track_Name_Pos)
    $ I% k' d/ M6 t' K: D9 h! L4 R7 V+ \9 v
  1647. STA PPU_Addr,X2 d+ O3 I7 p4 A
  1648. INX, R+ x! B) w3 t4 ~6 e" U
  1649. LDA #LOW(Track_Name_Pos)
    & y2 k$ }6 `6 `
  1650. AND #$E0
    - A) z2 k# o4 n: z3 \! l# _
  1651. CLC+ w  Z: O* }% c7 e7 b2 y7 {9 _
  1652. ADC <Data_Buf
    4 B! R7 @, Z- x0 M1 x6 E. B. Q
  1653. STA PPU_Addr,X
    % b# n$ n/ E) J) I
  1654. INX( Q- f8 z, ~& }
  1655. LDA <Data_Cnt
    + B9 V) q5 M8 H9 H/ Z" h) p
  1656. STA PPU_Addr,X0 c4 H( ?( ?  `+ @- a3 L; N  o, r
  1657. INX/ ?8 ?* C% u4 d; j2 x
  1658. Show_Get_Pos_Center_End
    3 K; K3 [& h& K
  1659. RTS* m/ N* D0 D4 O! G
  1660. .ENDIF
    . i& Z1 J. @! x

  1661. 1 q8 N* W/ r6 G* q
  1662. ;==============================
    1 R& @) W5 f5 V6 y2 y
  1663. ;音乐端口清除/ n; ~/ t% A5 @( p: P* |5 W
  1664. Sound_Data_Clear4 Y. X2 c$ h* c) Z8 @- h
  1665. JSR Sound_Port_Clear4 v, l1 r; ~0 K* Y
  1666. JSR Sound_Ram_Clear+ W$ k* U$ B' @! W2 u
  1667. RTS
    * v4 H/ N% Q) f2 N) _! F
  1668. # y( J4 t( u! l, n
  1669. ;==============================, z' K9 \+ G% R* s3 W1 ?. ~
  1670. ;音乐端口清除* @  G! R, F- ]  D+ u; E. g. e
  1671. Sound_Port_Clear( Z/ R4 i4 @8 A+ i2 _' i- @- E/ o
  1672. LDA #$00
    & A5 a1 G& H3 e; J% K
  1673. STA APU_STATUS. c% l# \) M4 s$ ^9 E5 s9 I& _
  1674. LDX #$00
    $ W2 \- ]6 y: Z) E; k+ R$ J
  1675. Sound_Port_Clear_Write( v* D8 U  y/ D
  1676. STA $4000,X
    , \1 N* M# }8 v5 h
  1677. INX, ~9 G- ^; e7 L$ P
  1678. CPX #$14; [* P% E  a, ^5 {% V6 z
  1679. BCC Sound_Port_Clear_Write
    & S* F- n/ f- Q3 y$ t
  1680. RTS
    ) y% L  |- D' _4 m: [. f
  1681. : `4 Y6 X$ p9 G
  1682. ;==============================
    9 O$ A3 }  S8 i6 L6 L' x
  1683. Sound_Ram_Clear;RAM清除
    % F) M+ I2 T- U/ J; N" V
  1684. LDX #$00; x9 g! C. H4 g% J8 H
  1685. LDA #$000 h$ G- z, q9 B7 K% j
  1686. Sound_Ram_Clear_17 `) e3 H4 ^( U- I4 d
  1687. STA Sound_Ram_Addr_1,X* \8 h* c$ |0 S/ T; H
  1688. INX# D5 S4 m# L2 B: o
  1689. CPX #Sound_Ram_Addr_1_Size5 A/ i3 |* B; k* b: T) I$ p
  1690. BNE Sound_Ram_Clear_1% N& |' J9 a. d5 h. |+ s, B% {3 s& V
  1691. LDX #$00
    6 \0 ?5 k0 S2 J4 L8 `! r' T1 p
  1692. Sound_Ram_Clear_2( V0 q- V: Q, Q1 M* g; ?" f: `
  1693. STA Sound_Ram_Addr_2,X0 O' G2 A5 t- A6 F1 ?
  1694. INX- c2 x1 [( d- y  t  u6 t, N( ?+ }
  1695. CPX #Sound_Ram_Addr_2_Size
    & Q# `. d- L/ g4 q
  1696. BNE Sound_Ram_Clear_2
    - [1 R% J+ i! n% p
  1697. LDX #$002 |4 h. U/ A7 v) O
  1698. Sound_Ram_Clear_36 m& d; v/ k' R$ u
  1699. STA Sound_Ram_Addr_3,X
    " P2 q7 c0 a! X) A% r& Z) G
  1700. INX3 J/ X" w2 p& q3 A; f; \1 P% U1 H
  1701. CPX #Sound_Ram_Addr_3_Size% C; W3 l3 a8 n6 Q! i9 ~
  1702. BNE Sound_Ram_Clear_39 {9 j9 Z  Y, m7 K7 h; F
  1703. LDX #$00% K! Z+ R0 n4 X" J( d& \
  1704. Sound_Ram_Clear_4
    0 I4 `9 w' R8 G2 Y' S1 r; i
  1705. STA Sound_Ram_Addr_4,X
    4 ]0 w7 P6 V7 t+ e4 Z' K" A" f3 y6 m
  1706. INX
    6 E) T/ p4 e+ Y
  1707. CPX #Sound_Ram_Addr_4_Size
    $ b( ?: ~" U8 W: C  Z3 ~9 x
  1708. BNE Sound_Ram_Clear_4! I; V7 ]5 \8 X+ n# I0 e$ e2 F
  1709. Sound_Ram_Clear_5
    1 `$ c* [9 P9 d2 g" x$ [* d
  1710. STA Sound_Ram_Addr_5,X0 z# P# K/ W! j. [( l0 O! B/ K: y
  1711. INX1 x8 W% H4 b  c
  1712. CPX #Sound_Ram_Addr_5_Size
    - l7 m) _8 ^. Y5 H
  1713. BNE Sound_Ram_Clear_5, Q$ i) T# [0 X" {, J. I
  1714. RTS! Z3 N3 k1 D: I) Z

  1715. " \( q! Y+ u" @3 L1 P
  1716. Get_Music_Collection_Name4 Q% |5 D+ n+ V
  1717. PHA$ T8 ~& S7 d# I3 a  d9 i
  1718. LDA <Music_Item_Cur0 _, g/ V; _( E0 ~
  1719. ASL A
    ) L5 ]5 Z7 [1 L5 ?% D: I  S. ^
  1720. TAY
    + v3 r+ `/ e# ]7 ?$ B
  1721. LDA Music_Collection_Name,Y6 j: O$ x, u& b4 H/ w# }+ z3 ~9 f
  1722. STA <Data_L1 U2 ?/ T. w1 M0 ?7 ]
  1723. INY
    6 a1 ]6 v4 K/ t4 w) C
  1724. LDA Music_Collection_Name,Y
    % l. f7 H! p& ]& R7 a( ?" T  r
  1725. STA <Data_H
    # p* M( I. D: |5 A4 G
  1726. PLA: R: ^! x( y( X
  1727. RTS
      t9 [. b0 _8 D6 M

  1728. / b$ `: Z3 E6 L. ]# d
  1729. Set_Sound_Total7 y: }* L7 u# v* T* t
  1730. LDY <Music_Item_Cur4 |& t1 r5 W0 [2 O$ k- T' e. l
  1731. LDA Sound_Total_Port,Y/ F6 `  T& `1 l
  1732. SEC
    8 J, c1 @3 |, G- J
  1733. SBC #$01
    2 p9 a7 d/ \, E' R/ f
  1734. STA <Music_Total" u/ h1 Y: M% u4 e: m
  1735. RTS
    % H( R* h3 p  }" ^, R* B" g% d
  1736. # W; ~! b5 u. m! i0 S* s3 u5 I
  1737. Get_Sound_Start/ f  O4 ?  a) c7 f: g5 x
  1738. LDY <Music_Item_Cur
    - N& Y& k* H2 B- F$ h
  1739. LDA Sound_Start_Port,Y
    4 E! Q" t( \" J" E0 V3 Q& p0 [
  1740. RTS1 u8 c) o9 A9 v2 R2 L

  1741.   p. L% s# a! F3 H# @
  1742. Set_Sound_Init_Port* d; Y: a* F4 U, u6 _
  1743. PHA
    # D$ F: M# D  ~0 |; V, r2 t+ ?: K
  1744. LDA #$20' Y4 L; K* `/ w' H
  1745. STA <JSR_Addr_Op
    ) F8 _/ t  \) {2 _5 k5 F: g, [" U
  1746. LDA <Music_Item_Cur
    % P1 p, h; t9 r3 e- E7 b- J
  1747. ASL A' |8 @4 _' _$ \% n
  1748. TAY
    " G& }0 N5 H( E0 w/ g9 d" E4 _
  1749. LDA Sound_Init_Port,Y" f' @" e. @) c' \* w# a8 @! R
  1750. STA <JSR_Addr_L
    , A" x1 m( M3 r
  1751. INY* j+ @: F* e6 V# Z6 i% j
  1752. LDA Sound_Init_Port,Y* k1 S. O; x  i1 Y, ^3 y
  1753. STA <JSR_Addr_H) v" \8 X/ O9 Z; ^, a
  1754. LDA #$60
    ' r9 s3 G+ s- L8 s2 O0 h1 v
  1755. STA <JSR_Addr_Rts
    8 ^8 V7 G/ j9 y6 L; r9 K  R
  1756. PLA/ `. g8 J5 \9 o  r! [+ k3 P, Q
  1757. RTS8 _* x# q$ p6 e8 w+ k$ j
  1758. + \& n# T, M2 j! y
  1759. Set_Sound_Play_Port
    , _/ t5 M2 k1 N5 r
  1760. PHA. u+ U1 N/ a3 `. ]/ D, p: N, r
  1761. LDA #$20
    3 p9 H+ W4 `0 W5 c6 I6 N
  1762. STA <JSR_Addr_Op
      V% t) c# q" |: e( n# H
  1763. LDA <Music_Item_Cur5 Q1 o( n7 i7 v8 r$ S6 X" _+ N
  1764. ASL A' t# U  v6 G1 K( E" {% q" u
  1765. TAY7 ?; y& o. C5 C- ~' Y8 U* \
  1766. LDA Sound_Play_Port,Y
    5 a+ L1 R) ]& S0 {
  1767. STA <JSR_Addr_L
    6 X2 c+ b" |8 j% i  x9 u8 J
  1768. INY
    $ D4 h2 f  G% B' m. A( y6 `9 |
  1769. LDA Sound_Play_Port,Y' K% [1 n# u) L+ Q
  1770. STA <JSR_Addr_H8 r4 Y/ X1 {' I; g/ b
  1771. LDA #$60
    $ i3 F" O/ n6 a% s
  1772. STA <JSR_Addr_Rts0 ]; J/ c7 z2 J) h  `
  1773. PLA1 \3 P4 ?! m) j+ g8 Y6 n
  1774. RTS) Q/ N& W( b* ]# S, G" R- ?: o+ Z

  1775. ) o' b2 Y( B0 l/ ~
  1776. Set_Sound_Reset_Port* Q: u( {6 i8 p( L" ?% G% m
  1777. PHA
    ) M4 L5 d+ L' T( T
  1778. LDA #$20
      Q; X; C" o; e8 y8 t
  1779. STA <JSR_Addr_Op( C. b( B. o# I8 }
  1780. LDA <Music_Item_Cur  U6 B; J2 N! L% L
  1781. ASL A
    " r2 F& h$ U& W9 Q2 ]
  1782. TAY
    . I1 n1 m4 m! s2 g, y# Z
  1783. LDA Sound_Reset_Port,Y
    " K% Z& ?) @' l+ P) x- B
  1784. STA <JSR_Addr_L
    ! ]; \" \; {# {3 A5 J
  1785. INY% ?3 R+ O6 a2 V- C
  1786. LDA Sound_Reset_Port,Y
    ) q& e; S. d1 O3 n- C# P
  1787. STA <JSR_Addr_H
      p5 w2 k+ t0 C- R1 g  T
  1788. LDA #$608 _+ q2 c' L; X4 ^6 F( a3 N7 z) Z7 J
  1789. STA <JSR_Addr_Rts
    . ~) I, J5 \% i% S* i: C! u9 \* u
  1790. PLA$ I- T1 W& W: L* U9 F% w; ]
  1791. RTS; ^2 x) g- K/ j# c$ E4 ^

  1792. ; _2 I  i, A6 m
  1793. ;初始化音乐bank
    ; B+ o  T; T. x: `3 M- C
  1794. Init_Sound_Bank: w6 f! I/ K+ O9 I, W8 B8 S- G
  1795. LDY <Music_Item_Cur
    5 R  h* K2 ~4 X. H/ k/ t+ m- @
  1796. LDA Sound_Bank_8000,Y$ O: D! F  q/ n8 u; W
  1797. STA <Music_Bank_8000
    ' u1 ~5 h+ o+ O1 J0 V7 ]! Z
  1798. LDY <Music_Item_Cur
    7 R; T. S( k4 r
  1799. LDA Sound_Bank_A000,Y
    ; {  I2 f* D+ L  E
  1800. STA <Music_Bank_A000
    6 `. p8 b  [# X  Z& U. [; P2 n
  1801. RTS
    0 e, ^6 y2 y# ^/ L* @, g! {

  1802. & _: z4 ?3 U- b2 q+ H0 h! V
  1803. ;==================================================9 s+ @9 G4 {, l* X
  1804. Sound_State_Reset;音乐状态重置
    # j6 v/ |' f& I3 ?
  1805. JSR Music_Bar_ReSet        ;重置音乐条) R! H3 ~' D! r1 ?4 x1 L6 q
  1806. JSR Time_ReSet             ;重置播放时间5 H1 I8 h+ ]0 u# }; @

  1807. 5 D$ y2 n* y4 W! a3 ?
  1808. LDA #$00
    % U; e! f. M" W! W- p1 [
  1809. STA <Music_Stop_State6 }6 c! q7 s7 I8 R( @
  1810. JSR Music_State_Show       ;显示播放状态& L2 E4 q; c! C* z
  1811. " w# D5 r( `4 f7 K
  1812. .IF Track_Name_Pos
    6 C. f" V! h* w# \& f1 f
  1813. JSR Show_Track_Info        ;音乐曲目名显示7 r) a) D" V7 f8 g& x: A
  1814. .ENDIF6 z! _8 r6 N1 @- e
  1815. ' Q  T* _  ]3 f% y
  1816. RTS. d, b4 |! [/ i, }
  1817. 5 ?, p5 \5 r, @" x' e+ l. d
  1818. ;==================================================4 D/ ^( P% j8 r, x
  1819. Sound_Init_Proc;音乐初始化处理) e% f; F0 a2 a) {
  1820. PHA
    ! b& O2 f0 j$ ]2 u5 `2 E5 K+ g! V
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址9 ~( X8 V! p3 Q  N3 T6 ?  E+ x& _
  1822. LDA #$00
    7 [# a% I1 ]/ b6 l4 @% S
  1823. STA <Scroll_H               ;重设水平滚动4 {( G, `; C" f3 p7 ~
  1824. LDA #$0F
    : f+ Q" g! ]& A( q
  1825. STA APU_STATUS
    . Z' O: R! O3 w/ y, O/ D/ N9 ~
  1826. PLA
    2 s2 J# m- P2 S# g1 s. Y0 _
  1827. JSR Sound_Init             ;音乐初始化- F: p  b; z8 N
  1828. JSR Sound_State_Reset      ;重置音乐播放状态! t5 N6 \6 s' O' ]( ~
  1829. RTS
    # P9 P) ]' w( `' C

  1830. 9 r5 {* p9 d: q' X) M
  1831. ;==================================================
    + N; e  n' p" i$ u
  1832. Sound_Play_Proc;音乐播放处理3 R/ m0 D, V1 z! K2 G0 x
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    ; O# w- A& R0 f9 T- ^6 `# C
  1834. JSR Sound_Play             ;音乐播放
    ' d6 K, A& V! }6 |
  1835. RTS
    " b6 N9 `, d/ K% _
  1836. : w0 {- w: C# c4 i7 H; [
  1837. ;==================================================3 _- i' o) F0 @4 ^
  1838. Sound_Reset_Proc;音乐重置处理
    $ J# U4 x0 Q3 x
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ; q$ c" E; P7 G0 b9 N
  1840. LDA <JSR_Addr_L/ C' k0 }8 t( z7 s/ B$ \$ B, }
  1841. ORA <JSR_Addr_H+ P9 l/ V% i$ V# X/ y' J7 M
  1842. BEQ Sound_Reset_Proc_Default# d0 D$ u5 A  H7 u: ?. K  }3 q1 G$ [
  1843. JSR Sound_Reset            ;执行音乐重置) U$ H. K3 r0 K7 u, D- p' V
  1844. JMP Sound_Reset_Proc_Init_Sound4 N( J& [, }! \+ ?1 h5 L! I' E

  1845. & [" i4 x# @- K& C
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    % ]5 e( \5 |& N) X3 o7 ^8 E" q
  1847. , q: Y+ H& O* F) s$ }9 g
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断7 A' p* ^* n! G
  1849. LDA #$00
    2 ^( V  [( A+ B* A
  1850. STA PPU_CTRL, |. R4 ~+ c8 z; v1 W" j5 N6 L

  1851. / A. Z, F: D2 l# @* I7 M
  1852. JSR Sound_Data_Clear
    5 s! L% i( S( Q1 _

  1853. ) r( B# g5 u+ b* {! ~, k9 [
  1854. Sound_Reset_Proc_Default_Wait' O! R9 S8 @& ]/ z! e3 U
  1855. LDA PPU_STATUS' G! i# a6 b: r! a
  1856. BPL Sound_Reset_Proc_Default_Wait
    : N3 S, t+ _1 R; [% s$ ?+ e4 O
  1857. 1 Y. B" s: i- G/ r5 k7 R: N% R
  1858. LDA #$00
    4 L9 H6 \- D. R+ z
  1859. STA PPU_ADDRESS2 Y& B8 k8 a! X6 Q
  1860. STA PPU_ADDRESS
    6 ^# m* W6 |  y# @" L! G  f9 i
  1861. STA PPU_SCROLL
    # X5 d: o  T; j6 x3 v
  1862. STA PPU_SCROLL9 `6 p) G' V( h, ?
  1863. / Q# a% B0 o* Q$ ?
  1864. ;恢复PPU控制
    , |6 r" F! O+ Z' K( w9 F
  1865. LDA Screen_Ctrl! y: p, A' w9 S5 W
  1866. STA PPU_CTRL
    $ ^6 b2 Z0 c( h3 F# `

  1867. ( R' z! W$ |+ p7 S
  1868. Sound_Reset_Proc_Init_Sound
    $ n* {3 v, P% D: S( a
  1869. LDA <Music_Stop_State' g' G$ N3 e. X+ m. E; {, _3 m5 m
  1870. BNE Sound_Reset_Proc_End$ M2 R7 d8 p) G( M: L
  1871. LDX <Music_Item_Cur. [$ o, [9 H/ ^$ f; A. N
  1872. LDA <Music_Cur,X
    6 r2 X. X- W) p- f) A0 @; h1 o
  1873. JSR Sound_Init_Proc% K5 ]" n% t6 O9 W( E
  1874. Sound_Reset_Proc_End
    # k9 v2 T' F! A+ G# J5 v
  1875. RTS
    / p& S) F. `) ^) Y

  1876. : K% g2 F, V/ R( X
  1877. ;==================================================- ^7 H, S* S: P& O/ W
  1878. Clear_Item_Text;清除页项目
    " X$ l9 T4 V4 _$ B; `
  1879. LDX PPU_Cur
    : {+ x6 h& d$ q3 @# Q; @
  1880. LDA #PPU_MODE_CNT_CLEAR
    8 c4 u6 B2 q, d4 e' ^% B  ^
  1881. STA PPU_Addr,X
    3 h7 l6 [4 i" w) U) f0 D3 P  K
  1882. INX' U7 f) a& @! T* X+ U
  1883. 4 e( h! ~0 I6 A1 F
  1884. LDA <Page_Last. p+ \2 Q% |; t: r! o. v
  1885. SEC. G: A  a( Y3 f- q9 b4 C% _
  1886. SBC <Page_Last_Index
    ' ~3 R! F; ^& u5 R
  1887. ASL A- a, Y3 _' j; o: F+ F& |8 P1 a

  1888. # j! A; g8 ?$ k5 p" `
  1889. TAY
    9 j$ K- L4 L2 ^0 C7 l3 L2 n/ A
  1890. LDA Item_Pos_Data,Y
      Y1 [0 f9 ~0 G+ U$ I
  1891. PHA$ P" G: p+ P3 r) x! A5 W
  1892. INY7 ]- Y* v- S6 Z" {
  1893. LDA Item_Pos_Data,Y0 r: B' J$ P; u& ?  F& T
  1894. STA PPU_Addr,X
    # O$ g, m$ Y+ }6 O; R$ T' S' {
  1895. INX
    ! ]# {* x  X7 F( p3 r& A: W4 A$ i* x
  1896. PLA
    7 [; m0 M9 b$ v$ @" X1 U
  1897. STA PPU_Addr,X
    2 A9 j* C% l1 P, |! X" K( Z
  1898. INX$ ^9 f  U9 C* R2 m9 o
  1899. 3 A; S- [6 b2 l, l* t
  1900. LDA <Page_Last
    % l" h& I3 w* p& I7 ~" S
  1901. ASL A4 I3 C0 r* r5 R, B+ H
  1902. TAY/ B+ s! H3 _0 a! y
  1903. LDA Music_Collection_Name,Y; W# o" \$ f2 l4 c' p
  1904. STA <Data_L/ Z; X$ J3 }, o( {
  1905. INY
    $ T) `0 \/ w# R4 E0 d  [
  1906. LDA Music_Collection_Name,Y
    4 c: ^4 l$ a: F+ y6 X! v! M3 _- E
  1907. STA <Data_H* j* x: v( i8 W

  1908. 8 Z) {1 Y2 S( L# y; C
  1909. LDY #$00! M& J  m) m, j, w
  1910. LDA [Data_L],Y, [6 f" u4 J1 m3 S- j% W! B- j
  1911. STA PPU_Addr,X
    ' S; f" b6 f( O* N4 T. h
  1912. INX) ?9 E/ k1 G3 s1 e
  1913. Clear_Item_Text_End; ~6 E- |8 Q* b$ s
  1914. STX PPU_Cur
      }% [8 b6 L4 Z6 N4 b+ Z% V
  1915. RTS
    $ e' A- Y. {  ]6 _9 l9 J
  1916. & |- R5 G2 Y) v3 Q  ]! F' x4 P
  1917. ;==================================================0 C* |% P  ?# L4 n2 _* b
  1918. Show_Item_Text;显示页项目* s' v  C0 f1 |% Z7 Z
  1919. LDX PPU_Cur
    # B) O1 n; U1 m
  1920. LDA #PPU_MODE_CNT_LINE# h+ {3 A8 J. z( I9 X) v8 `
  1921. STA PPU_Addr,X
    7 b, @/ p, U' a/ y* M
  1922. INX
    ' q& ]$ A$ q6 K* r4 K" M
  1923. LDA Page_Cur
    : Q1 a1 j& p6 Q* H$ Y, w+ w
  1924. SEC
    : C1 G/ [- N# p" Z1 _
  1925. SBC <Page_Cur_Index) W9 V. s( M' `$ H. y7 T
  1926. ASL A
    $ t5 k, D5 s' j* o
  1927. TAY8 D# m( w& S  D% x" [0 x0 N; C
  1928. LDA Item_Pos_Data,Y: H/ g% C& k+ l; E8 ?0 }/ m
  1929. PHA) C5 n+ a% b, I! k
  1930. INY& R9 r% w4 g* e4 }1 b( z& k9 V5 F
  1931. LDA Item_Pos_Data,Y
    + o' @" }/ s2 X
  1932. STA PPU_Addr,X
    8 c. I" c' h; V; E4 r% H
  1933. INX& u$ j, F$ N+ t9 C) z
  1934. PLA& v# s! b( V5 [1 w
  1935. STA PPU_Addr,X' M8 z" \- ~+ l# m4 e& Y1 ]
  1936. INX
    7 i; A5 ?+ A, G7 F6 e# n+ g

  1937. * S8 c  \6 [# K0 d0 z% b
  1938. LDA Page_Cur
    ) U- I, n) L& P! P% |: N
  1939. ASL A9 I, \, ~2 X: @& w* D
  1940. TAY; s4 U) h" Z* H; K8 M" f
  1941. LDA Music_Collection_Name,Y
    - s# \" R' P) ^
  1942. STA <Data_L2 ^/ b6 a6 X8 ~8 S9 q6 H' \
  1943. INY
    $ p- e( C* G5 C% ?, C6 m
  1944. LDA Music_Collection_Name,Y
    " T. u. q& @5 J; u% ]9 v4 r* h# l8 d( l
  1945. STA <Data_H" ]6 \. D. V6 c2 i1 e1 D" E

  1946. . Y$ V, v* {5 H! A9 Z; w
  1947. LDY #$00
    ) p. ^. ?" f6 l% F8 Y2 L- v
  1948. LDA [Data_L],Y0 D  [# _9 A  c; b( r; b8 ]8 k
  1949. STA PPU_Addr,X3 g0 d" b' ~# ]; P% O* X8 u0 a
  1950. STA Data_Cnt
    5 Q  C. m. a5 ?" F: b
  1951. INX; O+ l' j' l' k" B  r

  1952. ' M* A# u, K+ a" I2 M7 D
  1953. INY
    7 f( Z' t) e* d. K% {
  1954. Show_Item_Text_Write
    & ?) t3 B" s3 X
  1955. LDA [Data_L],Y
    1 `3 v/ w" u5 }+ h. X! R) E
  1956. STA PPU_Addr,X* p+ L1 ^! H) t+ O2 w2 O6 }
  1957. INY3 c( F3 I, n; p* g
  1958. INX8 n2 v9 A( _& m
  1959. DEC Data_Cnt* c' ^4 V- A; N# f- h9 t/ o; v
  1960. BNE Show_Item_Text_Write$ U4 t# j2 u( M  E4 H

  1961. & E9 H6 u: L; P4 }! N
  1962. Show_Item_Text_End
    1 _8 T7 n0 o4 X/ \
  1963. STX PPU_Cur
    . f4 ~: \3 m, y" o
  1964. RTS1 a3 \. p4 e3 u9 x, C! g- L+ O

  1965. ' M0 g9 U4 [8 _
  1966. ;==================================================3 @  O) G' Z- Y  Q9 u" Y! m
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    2 z, o2 i2 c: u3 L& ^( \, s+ k/ W. p/ u
  1968. STA <Data_Buf" o3 P, ?4 X( K& }6 M
  1969. LDA #$008 P' m% o6 p0 q" F) f4 `
  1970. Get_Page_Index_Calc, E" Y' y& u* T/ V+ S
  1971. CLC$ j0 ?* w" n, b7 ~. l9 h% w/ t$ Q, r
  1972. ADC #PAGE_SIZE
    9 ]" Z0 U/ w" A) n2 @# W3 P
  1973. CMP <Data_Buf- j; u( f5 O# _; @1 t2 o6 m
  1974. BCC Get_Page_Index_Calc1 a- U. t. i8 J. l- V
  1975. BEQ Get_Page_Index_Calc_End
    6 A0 y6 N/ p9 F- D' W+ H
  1976. SEC
    9 |6 U* M4 C7 s2 Z( {( t0 d
  1977. SBC #PAGE_SIZE
    0 [" e7 Z) I$ l  ?/ E
  1978. Get_Page_Index_Calc_End# m& U, `/ \" q8 s* M1 _3 Y( S
  1979. STA <Data_Buf
    * l/ \& M3 G5 F: T$ P4 E1 R. I1 f
  1980. Get_Page_Index_Cnt
    $ y" Z! K& ?- `( z$ K
  1981. LDA #PAGE_SIZE
    8 \/ O% g: f' W2 T
  1982. STA Data_Cnt
    5 }! ?# [0 L' K" O% i! N
  1983. 7 W/ e* `0 p8 H/ @: y
  1984. LDA <Data_Buf3 ~# t* P& G/ z% C+ I. k) l% f
  1985. CLC; E7 s2 P3 q8 I2 h' ]* y
  1986. ADC #PAGE_SIZE, w' t! b8 P! E' m+ k
  1987. CMP #ITEM_MAX_SIZE
    ! o4 I+ t0 s5 C) f0 c) ]
  1988. BCC Get_Page_Index_Cnt_End
    8 S! w! F) @) P2 E# s$ {& v
  1989. 7 R2 W8 e( v6 F  m; x% G
  1990. LDA #ITEM_MAX_SIZE! M' R- T6 x$ z7 ?0 Q4 [( N
  1991. SEC' G1 @- j, M0 q4 n1 V8 `; l
  1992. SBC <Data_Buf8 M' K. C6 a5 h) t; E, z9 B, x
  1993. STA <Data_Cnt1 L6 l6 Q; g/ G% d

  1994. 1 n5 X0 y1 Z! L. `! ~, X- j7 l
  1995. Get_Page_Index_Cnt_End! Y/ `9 Q/ Y/ H3 k  M; V) r
  1996. RTS; j% D5 @! {4 J7 c) S6 U1 f! r
  1997. 4 j# J/ A* Q8 v7 n% _! |
  1998. ;==================================================* B# T' V& S( r3 R
  1999. Get_Last_Page_Start_Index
    + e- y' Y5 s' v. }
  2000. LDA <Music_Item_Last
    0 A  B1 Y: s5 x/ o
  2001. JSR Get_Page_Start_Index+ J; E4 E/ Y% U  M7 e% C2 Y/ X0 @
  2002. LDA Data_Buf
    3 h# `" N# c; m8 M, B9 u
  2003. STA Page_Last* H# ]  n0 [1 w4 @! _7 l
  2004. STA Page_Last_Index
    % L4 M  s9 A$ n% `1 j( `" d" w
  2005. LDA Data_Cnt8 R, j$ Y2 l; b2 J" g
  2006. STA Page_Last_Cnt3 e2 ]$ _0 v7 L/ J* B- D
  2007. RTS
    " j% \. h9 A1 G2 I

  2008. % e* f% u5 A0 T8 v  x0 K
  2009. ;==================================================
    7 W" l% ]7 N" y7 P. d
  2010. Get_Cur_Page_Start_Index
    $ u" f8 k: c+ d/ j0 h
  2011. LDA <Music_Item_Cur
    5 M. k9 D  x" y8 ~) o- i  S  @
  2012. JSR Get_Page_Start_Index
    " @! L; w7 P, F. }
  2013. LDA Data_Buf- F. s4 T$ k: k
  2014. STA Page_Cur
    7 k& A1 o2 \8 W4 ?/ T' t6 s
  2015. STA Page_Cur_Index
      O4 q/ ^9 c# h2 y  d% t
  2016. LDA Data_Cnt8 V  }9 M" }( d8 q9 D/ P  c+ v% J! k
  2017. STA Page_Cur_Cnt1 w$ a8 v2 _! c$ V! [* U0 F" b
  2018. RTS
    - E$ m- ?3 }& R- Z0 L5 E' ?0 ~

  2019. 0 F& C  X7 B7 o" ~
  2020. ;==================================================  l# F1 }+ S8 S" `0 y
  2021. Show_Page_Text;显示页文本0 x7 P1 s! z' S$ z: x! H
  2022. LDA <Text_Disable_Flag
    7 Z7 Y4 |$ K2 M+ a4 D5 Y
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    + n" Q) Q$ g8 @
  2024. STA <Text_Disable_Flag
    ) k8 O2 E& p( z1 z) e  _7 }

  2025. 0 f5 @) ]& N" p- Z! n$ P
  2026. JSR Get_Last_Page_Start_Index
    5 w9 {: O- h! `# V
  2027. JSR Get_Cur_Page_Start_Index0 Q; T* I" _  Y( m# O) L
  2028. $ A+ k; N! C, M3 P4 G1 C
  2029. Show_Page_Text_Set
    6 a$ b5 Q# ^: V( u

  2030. $ g6 A. ^, L# G- j
  2031. Clear_Page_Last_Item;清理上一页  W2 R  y& V2 K, D" Q  @; m7 J' B
  2032. LDA Page_Last_Cnt2 y: P! V1 |$ G
  2033. BEQ Clear_Page_Last_Item_End. \5 Q+ `  M9 K" ~, n  e
  2034. JSR Clear_Item_Text
    8 I# C, a% F( |6 `1 D
  2035. INC Page_Last  C8 V  A" `9 A; r. U7 k: j
  2036. DEC Page_Last_Cnt" i3 X8 z7 I2 U% h( u5 r
  2037. Clear_Page_Last_Item_End
    5 F& E" F, k6 D7 S4 p9 S

  2038. ( z/ I) q2 R: ~9 ^5 |
  2039. Show_Page_Cur_Item;显示当前页
    $ h) x. c) o! `% t
  2040. LDA Page_Cur_Cnt" m' t: a: Z) H! E
  2041. BEQ Show_Page_Cur_Item_End
    * a! d; O' ?6 `) s
  2042. JSR Show_Item_Text
    5 {: g/ |- T* [! s6 r* v* d- v
  2043. INC Page_Cur
    * F- _0 K5 ?, U1 |
  2044. DEC Page_Cur_Cnt5 {# R6 C  {' p: Y! u+ E: W
  2045. Show_Page_Cur_Item_End
    ( a) I( l6 I. V3 L7 S

  2046. . @5 Y% w# s6 t9 T. {0 I! H
  2047. INC <Time_Wait_Cnt) w% p* @. v: m& j" j: X; _. H3 ^2 {
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    ! _4 \2 r% G9 g: R% r
  2049. LDA <Time_Wait_Cnt5 i. u$ s0 l- _5 N1 L  H
  2050. BNE Show_Page_Text_Set_Wait+ B+ |6 c) P1 E. k9 i

  2051. 8 G6 r9 Q& `/ m# s
  2052. LDA Page_Last_Cnt
    2 t; J* m+ j- j
  2053. ORA Page_Cur_Cnt
    9 {8 Z, P( y7 r
  2054. BNE Show_Page_Text_Set6 j; z2 W$ U( U' J/ C, |
  2055. LDA <Text_Disable_Flag0 ]# r9 P$ R6 j2 G! v4 z
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    9 N- J2 w: J3 l; F9 h0 j' K) U, L+ p
  2057. STA <Text_Disable_Flag
    0 Q, t" P# j  s8 N6 ^( s' T( \
  2058. RTS- |. W- y( U; x; U' }9 }

  2059. 4 x( |1 B$ P4 `6 h; h: D
  2060. ;==================================================% C) l. c% g$ {1 D- Q* P, N9 {
  2061. Last_Item;上一项* h4 i  O. K+ @& T
  2062. JSR Clear_Last_Track_Name
    & Q$ q5 j5 @  d9 M1 M5 w& \8 `
  2063. JSR Disable_Text_Draw/ F" {9 c6 v) c& a

  2064. ; z7 }$ I0 b1 z* i. C! j9 f( i
  2065. LDA <Music_Item_Cur! d7 G/ v$ A0 O" k& Z2 F& [( s$ d7 g
  2066. STA <Music_Item_Last! B! X% O8 i" c" y0 _
  2067. . J$ ], C5 K% X9 m0 G2 d
  2068. JSR Get_Last_Page_Start_Index/ k  z3 e% o* O' J
  2069. 6 s2 T% r2 U) i2 ^+ V' P. [' O2 q
  2070. LDA #$00  q6 z4 P) K: V, C" c
  2071. STA Data_Buf
    . _5 Z. e* p; i6 x5 m" x  Y/ Q
  2072. 3 z; X4 p  L/ n0 j( g
  2073. LDA <Page_Last) j# ]; j% c2 n0 ~" d  ~
  2074. CMP <Music_Item_Cur
    * z& C5 a2 E8 c0 \5 I% Y
  2075. BNE Last_Item_Begin
    / P0 [: R) ]( B
  2076. ; k7 m6 R5 x5 N5 a% m7 d+ s* D) _
  2077. LDA #$01
    3 _5 H0 K6 ^2 c3 U" \/ s4 ?
  2078. STA Data_Buf9 m1 o/ j. K7 y
  2079. Last_Item_Begin% S& {0 b9 h3 b0 B# i8 H- C+ L3 H
  2080. LDA <Music_Item_Cur
    7 z) t! L" p% z
  2081. BNE Last_Item_Set
    4 D. Z, P1 ]8 j6 m2 y  v8 Q
  2082. LDA #ITEM_MAX_INDEX + 14 \8 M, c1 @) p, M* @
  2083. STA <Music_Item_Cur' x9 m$ I- [/ D  D" ~
  2084. % i* |+ ?' T- G+ t6 Z, e7 ]5 V! i
  2085. Last_Item_Set
    ( X1 o  [: n$ f/ e
  2086. DEC <Music_Item_Cur
    ! l0 q1 A6 u( m( k# d" v
  2087. LDA <Music_Item_Cur2 G/ y) P" y5 `! a3 [( ]! G
  2088. JSR Reset_Current_Music
    1 L" i$ G9 n/ P# E* ~! Z5 P
  2089. 7 Y) h9 ~7 p2 |7 r: l& q
  2090. Last_Item_Play: t3 A$ p) @$ B8 I" A5 T) B
  2091. LDA Data_Buf
    ! l: O3 n1 W" I/ V/ L0 Z! K2 w
  2092. BEQ Last_Item_End
    8 G; T# O" d; H% L/ x
  2093. JSR Show_Page_Text9 i$ V+ g* K; W$ w( `6 K
  2094. Last_Item_End: B! k  \8 j* n  j! I
  2095. RTS: ^  s( G' A) {7 H" H
  2096. 1 R+ j4 F0 _' S2 _0 x
  2097. ;==================================================
    - b: j4 _/ f  h% N
  2098. Next_Item;下一项
    8 X$ `( V% i( G. Q. z/ r5 Z- j1 C! v
  2099. JSR Clear_Last_Track_Name
      q6 V+ Y5 F+ J0 B
  2100. JSR Disable_Text_Draw1 @+ {6 W- J0 ~+ |$ m" F. @

  2101. 1 c2 l9 F, g. g, G" p
  2102. LDA <Music_Item_Cur
    / T7 R, c7 `$ D7 V  e3 o" s
  2103. STA <Music_Item_Last
    ) u+ N( @6 O1 T4 ~9 p3 I
  2104. ( v) r7 {  {4 c( z2 A. u& q
  2105. JSR Get_Last_Page_Start_Index8 O! R" F) ?% t& B

  2106. & n3 q# e& [2 v! n  M
  2107. LDA #$00
    ) T4 T) M; q# s$ ^# d7 ~5 ^
  2108. STA Data_Buf
    ) ~) s, C% x. G" x! O1 h3 A5 z* q, Z
  2109. ( ^- K) z* |9 x  c
  2110. LDA <Page_Last6 g+ l* W5 F0 q# G0 X: ?( q
  2111. CLC/ @9 U; A9 E1 z) `
  2112. ADC <Page_Last_Cnt- }7 \5 g* w& p& U" |6 d
  2113. SEC
    $ [8 Y; |' o8 M: K, b) ?; O: R
  2114. SBC #$01
    8 E( H; K$ f8 x' @% V
  2115. CMP <Music_Item_Cur: j. a* E4 Z' E6 H: t; J  `
  2116. BNE Next_Item_Begin. v5 b5 o, X8 X6 ~1 H2 m

  2117. & n' m6 o5 z" F6 w  ]
  2118. LDA #$01
    : l: ]  {6 ?1 A3 h* l* p
  2119. STA Data_Buf
    , {$ h) P/ ^) i8 F. J
  2120. Next_Item_Begin
    2 |* I2 R+ S% k# J% O7 y
  2121. LDA <Music_Item_Cur
    # O' m! S. b: s' k1 J( I9 i% U+ k+ }
  2122. CMP #ITEM_MAX_INDEX" n& R7 u' o, u; v* W* e! z
  2123. BCC Next_Item_Set
    ; x0 Q; I' f# T& d" ?
  2124. LDA #$FF
    ' s+ o3 `* M1 J" J
  2125. STA <Music_Item_Cur
    ; m! Z: `0 c" N8 Q
  2126. Next_Item_Set* w9 ~2 n/ [' Z6 q- K
  2127. INC <Music_Item_Cur+ B0 s, {8 W7 `& i
  2128. LDA <Music_Item_Cur6 Q! Y+ B7 c4 V! I4 k0 H2 {3 Y/ p
  2129. LDA <Music_Item_Cur
    6 _5 b6 U$ x0 O; ]. |- T* y# {
  2130. JSR Reset_Current_Music
    1 l3 }; P, z9 |
  2131. Next_Item_Play
    ! O+ f1 U* c2 F3 r  G
  2132. LDA Data_Buf
    0 K+ o9 ?, R3 [9 Z( d: M& E! \' U3 t
  2133. BEQ Next_Item_End7 s1 Y3 y; f+ Y$ s& C1 @# I3 Q
  2134. JSR Show_Page_Text/ T3 B; \8 p5 z
  2135. Next_Item_End
    - h" G7 R3 o" s$ Q
  2136. RTS
    # `/ i) }/ m; O; J
  2137. ; w) G, f) {) a" }7 z  }% _
  2138. ;==================================================$ b4 k. u, {$ Y# C7 u
  2139. Last_Page;上一页
    ) x  J0 ^, }6 M" {
  2140. RTS
      |( g/ ~7 V; N; g
  2141. , o8 a, |/ T, s. n
  2142. ;==================================================' F1 Z- x+ K2 c, k
  2143. Next_Page;下一页
    9 b* f9 d' i- v$ Z# V5 p, S4 V$ Q
  2144. LDA #PAGE_MAX_INDEX
    + i1 \, S7 v0 t# q* b, S  a
  2145. CMP #$01
    8 [. _# V2 i6 U! E% J% \; a9 A
  2146. BEQ Next_Page_End/ l" w' l8 v. |  O
  2147. 3 y" R9 @) W' O9 z& a: T
  2148. LDA <Music_Item_Cur0 x) |2 E* r  l9 {
  2149. STA <Music_Item_Last( o) d, D0 E8 d: f- u

  2150. - G6 d2 l+ {" n$ \7 T  g+ ~
  2151. JSR Get_Last_Page_Start_Index. D6 Y9 [8 Z. a" P& W
  2152. 6 K% A9 G: @' c  [: j6 H9 K' M
  2153. LDA <Page_Last_Index( |: [9 W2 u  v
  2154. CMP #PAGE_MAX_INDEX
    : `( w9 d- N" Y3 D8 ~) ]
  2155. BCS Next_Page_In_End_Page
    ( U9 @) ]* s; N) B

  2156. ( ~8 [% U' f0 l% P/ e/ j
  2157. Next_Page_Not_End_Page;不是在最后一页- S, O7 E. X$ Q) u, K9 X' _
  2158. LDA <Music_Item_Cur
    - l0 n2 r; ?+ Q8 z
  2159. CLC# w- l  m- e4 u0 Z% V: T7 q) T
  2160. ADC #PAGE_SIZE
    & i# _: U% d, T7 g" [- A
  2161. CMP #ITEM_MAX_SIZE8 t( `+ A/ z" m- g
  2162. BCC Next_Page_Not_End_Page_Less
    1 L" c( A# Z. {! F9 E$ x' x
  2163. LDA <Music_Item_Cur
      S4 }7 I* f, ?3 L4 ?8 d" Z) y/ p2 V# X
  2164. SEC- R& q3 }9 f8 O9 l, d
  2165. SBC <Page_Last_Index' I! t  a7 l% J9 Q
  2166. CLC
      d2 f$ b/ y1 U; Y# }( b9 k' f
  2167. ADC #PAGE_MAX_INDEX
    * R4 K- g! Z% w; M# l
  2168. CMP #ITEM_MAX_SIZE/ F7 d! ?3 i9 e9 o3 l: J
  2169. BCC Next_Page_Not_End_Page_Less
    / X) c2 |1 |5 P8 a- z$ p
  2170. LDA #ITEM_MAX_INDEX
    , y- s7 z% t6 H& s0 }7 h" f
  2171. Next_Page_Not_End_Page_Less# h6 x# k" _7 S2 d3 q( L
  2172. STA <Music_Item_Cur
    ; ?; M3 V( g% m5 ?& ~4 u6 T7 \' S
  2173. JMP Next_Page_Reset( o5 y: y& x3 [7 ^: `
  2174. ) Q0 U3 p# W8 ?: P" j! K. ~. p- N
  2175. Next_Page_In_End_Page;在最后一页' M7 j# W& C0 z% w3 }
  2176. LDA <Music_Item_Cur
    4 v  L' b, ^) L7 c4 C. {4 L- |
  2177. SEC
    0 r4 d  _2 ?0 ~% ?
  2178. SBC <Page_Last_Index" @: ~! c% Y) H
  2179. STA <Music_Item_Cur
    9 y" ~" D: Q3 Z  b8 x) r

  2180. ( n* |9 ?2 s2 H
  2181. Next_Page_Reset, q7 g: c# o! @* X8 P
  2182. LDA <Music_Item_Cur
    0 C2 |$ i: G- J) q" L; i  z
  2183. JSR Reset_Current_Music1 Y1 }# [* ]# `& |5 _/ Z# ?1 _
  2184. JSR Show_Page_Text
    * n1 P* L, @; s# Q+ y" x8 V
  2185. Next_Page_End
    9 k. ^2 P) H& |! ]1 B6 V6 P
  2186. RTS) s  ~# Q7 G  w1 c4 s4 ]* s
  2187. & `* g8 P* O' I" x
  2188. ;==================================================
    ' Q+ x1 v8 D8 I; W
  2189. Disable_Text_Draw;禁用音乐条刷新0 y1 E2 E* W0 o% W7 e& s7 v# x
  2190. LDA <Text_Disable_Flag9 Y4 @) V7 V0 {/ T
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME  u1 Y0 q$ @2 z( h- R- |, K0 x% d3 @5 z
  2192. STA <Text_Disable_Flag9 e! p5 q8 R+ s- s2 V5 }6 h
  2193. RTS
    + `/ R, m% U. P+ n
  2194. 4 H6 B2 H* k' \5 E3 o2 Q$ P5 Z
  2195. ;==================================================
    % l2 {4 @- p" W
  2196. Clear_Last_Track_Name;清除上次曲目名4 X5 f5 c7 B( [. s0 H5 \; j+ T
  2197. LDX <Music_Item_Cur
    + w2 r3 {* W; p6 q" w' U
  2198. LDA <Music_Cur,X
    ) m4 |% d9 Y6 @* w5 M
  2199. .IF Track_Name_Pos
    3 \! \7 D8 o1 d, V: Q% o
  2200. JSR Clear_Track_Info# t$ u0 o2 X2 k4 K
  2201. .ENDIF- l% k. q- t2 C/ w# s
  2202. RTS! {6 e/ ~4 T" g: N8 u! Y+ d3 ]  \8 L
  2203. 6 I; ^4 r( d; m
  2204. ;==================================================. W3 e# C$ B1 ?  J2 n" L: y! N# B
  2205. Reset_Current_Music;重设当前曲目" k+ F  q$ z& E, q# F

  2206. - u" b! y; E" @; u/ [2 `
  2207. ;写入当前总曲目
    1 C. B9 P& v0 ~& N1 y+ o- F% Q0 @- F& Q
  2208. JSR Set_Sound_Total1 L4 m& P( L/ `8 {! b# u
  2209. LDX <Music_Item_Cur% i  K+ f9 [2 e$ R& G. t% U) n

  2210. 7 b' }, f6 r" {( Y% O0 T/ S
  2211. LDA #$00
    & Z1 |: f* P, Z- T7 S. p
  2212. STA <Music_Last
    ' R+ Q1 t& c0 T% x8 L' D& e, A
  2213. 7 c% _- y! I0 T; p
  2214. JSR Sound_Reset_Proc1 C9 l. J$ Z6 N# G
  2215. JSR Music_Show
    $ t1 ^0 ~3 a$ _, P# J
  2216. RTS
    6 \- c5 G3 R8 S& y+ `5 H7 J6 k
  2217. " r& h- P4 E: a2 [
  2218. ;==================================================
    . [5 V/ E' J$ [0 E* S/ M# K! L/ m
  2219. Music_Song_Stop;音乐停止# h% b4 o+ A; i1 a" A9 ~2 z( `
  2220. LDA #$01
    ) {$ n( i' E  c3 d  F
  2221. STA <Music_Stop_State
    7 t! C8 I8 s" t5 J( ]) m. N& I3 V$ e
  2222. JSR Music_Bar_ReSet
    + ]& C0 N3 s7 K; y& c* t
  2223. JSR Time_ReSet$ t' K% p, S% F0 h4 Y0 o0 h- f2 M
  2224. JSR Sound_Data_Clear7 ~7 N8 u- L5 k& ^+ g, ?" K; V
  2225. JSR Music_State_Show  S; V& L. p$ F9 |( P: n
  2226. RTS) F/ W& U- O: k; O* L8 k

  2227. + h% z; B& A8 ^" m+ t% F& ?
  2228. ;==================================================
    5 e* u, Z$ {0 r4 u" I) n
  2229. Music_Song_Play;音乐播放- k  M0 T2 N1 M9 U0 a) O; r
  2230. LDA #$00: w2 U0 l( V: ~, k* _6 O
  2231. STA <Music_Stop_State6 i  _  J: J* T
  2232. LDX <Music_Item_Cur& [7 B5 @7 ^. U
  2233. LDA <Music_Cur,X
    7 w! g6 k# m# X( n" i
  2234. JSR Sound_Init_Proc
    . _* {, Q; Q* t# l  ~& C
  2235. RTS
    & o- C& {- {$ g9 e4 k$ [
  2236. 0 y8 D$ ^8 T! f$ ]" ~- W- @3 w
  2237. ;==================================================
    5 Q1 P, ?' Q) c
  2238. Music_Song_Last_10;上10曲8 A! U7 R$ A9 o4 _. U4 Y
  2239. JSR Clear_Last_Track_Name! E0 E/ A/ |5 W. O1 @) C0 s) @
  2240. JSR Disable_Text_Draw
    . @  V' q8 Q+ g1 R
  2241. LDX <Music_Item_Cur
    - Z! F8 t- g) u. {7 {2 i; f
  2242. JSR Set_Sound_Total
      E( k. t: ~. @2 a" e4 e* c
  2243. LDA <Music_Cur,X; |. x* P( M5 u+ ~$ l8 X  V3 N
  2244. SEC
    ; [6 ^# p9 A: C& s& C
  2245. SBC #10
    & Q5 o5 y4 Q: v" f7 o6 R
  2246. BCS Music_Song_Last_10_Set
    6 s9 @% B0 ~5 w9 ]
  2247. LDA #$007 K. p" n5 j' v. j; g
  2248. Music_Song_Last_10_Set
    ' C3 Y% g  ~! r& m; z
  2249. STA <Music_Cur,X- i9 e; b1 X4 O6 m4 z
  2250. JSR Sound_Reset_Proc
    ! U% p# ?/ [2 H3 r7 W- V% z, b1 u
  2251. JSR Music_Show5 J% t3 l4 k2 \$ e# X" z0 ]! P( W
  2252. Music_Song_Last_10_End# y7 D' d" j7 ]% Q  O
  2253. RTS0 }( u% E; l7 K5 d5 ?

  2254. * l! |% j1 E9 ^9 J! |7 P  ?
  2255. ;==================================================
    1 g- r% y0 ~3 o, ?3 R
  2256. Music_Song_Next_10;下10曲2 V7 T" H, m& T1 g' S
  2257. JSR Clear_Last_Track_Name
    & U+ S2 y# `5 O/ ^5 \
  2258. JSR Disable_Text_Draw! d. Q  t! F7 O# Z$ W7 F. c
  2259. LDX <Music_Item_Cur
    ' l3 ~0 c3 Y/ j" [7 t& o3 B
  2260. JSR Set_Sound_Total' U: p; E9 Y2 y- H5 A
  2261. LDA <Music_Cur,X& d7 L: Q1 q% V, B
  2262. CLC
    + T( z9 B6 }) c. o
  2263. ADC #10! b. |0 }1 Z; ?" K$ F, Z3 h* F' ^
  2264. CMP Music_Total5 k2 v/ G3 X3 i% v& t1 v* ^
  2265. BCC Music_Song_Next_10_Set
    $ E+ _' D4 [% v  b
  2266. LDA Music_Total" U; p% y8 ^6 L9 V
  2267. Music_Song_Next_10_Set
    ! |7 ?- R% Y+ w& ?8 ]
  2268. STA <Music_Cur,X
    " k2 |( a. c' A/ P" {& h
  2269. JSR Sound_Reset_Proc
    ) S5 |! a5 E, Q% ]  Z1 I
  2270. JSR Music_Show# ?6 Y. M5 d% S& i
  2271. Music_Song_Next_10_End
    . x% P+ ]2 G( r7 [( b
  2272. RTS
    9 L( t4 z2 m2 H

  2273. 4 ~# t" ?0 G# y& V6 Y
  2274. ;==================================================) i" _4 |! H, K
  2275. Music_Song_Last;上一曲
    4 S% F5 W" B. A! f: P6 l8 N
  2276. JSR Clear_Last_Track_Name
    / Q1 r0 U9 f0 f( Y) T
  2277. JSR Disable_Text_Draw
    ; ]6 g; K! y! D# o2 ~, m* M* k$ \3 L
  2278. LDX <Music_Item_Cur
    7 `) [7 {( ]* h/ x; b7 P
  2279. JSR Set_Sound_Total9 T6 {! W+ V# R* I
  2280. LDA <Music_Cur,X3 [0 ~" G- [4 ~3 j, M! V
  2281. BEQ Music_Song_Last_Set
    4 E7 r3 `& z5 i- l% q  q
  2282. DEC <Music_Cur,X
    2 ~0 r' u# u9 l! g) Q! c8 N
  2283. Music_Song_Last_Set
    ( b; ?% D+ a4 K! Y9 f
  2284. JSR Sound_Reset_Proc
    ; m$ y  z8 F. e8 O% q
  2285. JSR Music_Show% ~# i9 h. S! j
  2286. Music_Song_Last_End
    - H1 _, E6 S6 F7 [* |$ t- Y
  2287. RTS. q1 {$ u; B) x, b

  2288. . W# c/ l& ]6 V- m. g/ u4 y
  2289. ;==================================================% ]* d. p$ s, a. w
  2290. Music_Song_Next;下一曲
    ' u/ j& w$ g0 M1 [3 B1 y+ ?
  2291. JSR Clear_Last_Track_Name& v/ Y. `2 G, C5 r+ V3 o, g
  2292. JSR Disable_Text_Draw7 Y' [0 d: }( h: [
  2293. LDX <Music_Item_Cur- a, y' P' H1 s4 e% E( K
  2294. JSR Set_Sound_Total
    2 u1 m0 h$ T  p* h$ v: e
  2295. LDA <Music_Cur,X
    : G* _$ S! A& r/ H' m6 x
  2296. CMP Music_Total
    , X; g" G6 I* l) Y
  2297. BCS Music_Song_Next_Set: Y. K5 ]0 w5 X( N/ y" G3 i" p
  2298. INC <Music_Cur,X
    # P0 C9 D6 E7 G$ T) ?3 T
  2299. Music_Song_Next_Set6 ~  E, _, b; \. f: G
  2300. JSR Sound_Reset_Proc
      _  Y; d! B. C) `) y
  2301. JSR Music_Show- s) ~9 q9 }) U* }$ Y& g
  2302. Music_Song_Next_End* U* O4 I) ^+ o2 _+ r
  2303. RTS
    ! _% H( ?, x2 A4 l, P
  2304. $ a- V- F  D" c+ @9 }
  2305. ;==================================================
    * Z6 ?  J2 _$ M
  2306. Change_Select_Item;改变当前选择项
    6 I9 b( C; d: [- c) \3 U% k
  2307. ;--------------------------------------------------
    0 |) E/ |7 c- ~! x" o) N: @/ f7 g
  2308. Change_Select_Stop_Play_Item;停止/播放  U8 |) ^/ W! R
  2309. LDA <Key_Once
    + n2 r1 i8 R- L8 i5 H9 I
  2310. CMP #$10
    $ D7 P  N" e9 p& F, A
  2311. BNE Change_Select_Last_Item  q7 H7 @3 R& X. p2 h
  2312. LDA <Music_Stop_State
    9 q2 D. c, ~) N5 X; t
  2313. BNE Change_Select_Play
    2 o. y  \+ U* J  R
  2314. JSR Music_Song_Stop
    $ k; Z) |4 X) @
  2315. LDA <Music_Stop_State5 y9 r$ Q* f' C! C* V8 D
  2316. RTS
    % u/ K! l6 t- F% e: Y* U" a

  2317. 4 ?9 J( c% M1 {/ W2 Y  h  N: Z
  2318. Change_Select_Play
      a1 X% a6 g1 Q1 J6 `
  2319. JSR Music_Song_Play) L7 \& }- c5 C: `8 X
  2320. RTS. e1 N) t$ I& l2 b

  2321. 2 L/ `- J5 J2 r, S; s
  2322. ;--------------------------------------------------. O, b: D) g! z, a8 L
  2323. Change_Select_Last_Item;上一个专辑2 {& b+ A! `/ v( Q' v: s4 r
  2324. LDA <Text_Disable_Flag
    1 X" o( b5 }/ W5 s- c
  2325. AND #TEXT_DISABLE_ITEM9 L8 S+ {4 y8 x* ~7 g: m
  2326. BNE Change_Select_Item_End& {- n0 {% a, D# B! D
  2327. LDA <Key_Once
    4 ~/ l* S& E4 U# E' ], ?$ L6 ]
  2328. CMP #$08
    4 K8 ~' n. I  A) `
  2329. BNE Change_Select_Next_Item
    + z7 V6 ?! ~- c
  2330. JSR Last_Item
    5 s4 [# y" s' _
  2331. ;--------------------------------------------------& |! T0 ~! o, ]' i! z# W
  2332. Change_Select_Next_Item;下一个专辑
    # f( a, Z. X9 @+ F- O
  2333. LDA <Key_Once
    8 }" E3 a% ?9 F* @5 l) L
  2334. CMP #$046 x( E5 B" C: i* c7 `' H9 e# U( m
  2335. BNE Change_Select_Last_109 y$ H* ~  G& I2 [* t7 U8 j
  2336. JSR Next_Item
    , z5 z  o1 C$ o; {! j9 O
  2337. LDA <Music_Item_Cur, R8 Q* y: g' N7 g
  2338. JSR Get_Page_Start_Index
    9 F! g6 g" l2 B: S
  2339. ;--------------------------------------------------5 V0 U) `7 Y5 v2 m5 H9 D3 K
  2340. Change_Select_Last_10;前10曲4 Z" P; ~; L1 i
  2341. LDA <Key_Once
    2 d" H) \  L* n
  2342. CMP #$40
    ) [3 l2 s5 U1 ^0 G6 l: s0 U
  2343. BNE Change_Select_Next_103 A+ y! R, X; U& u6 L; R* h1 a
  2344. JSR Music_Song_Last_10% a2 T! w# w0 ^8 _3 X
  2345. ;--------------------------------------------------! I- w4 c7 m; V/ Z& W) e
  2346. Change_Select_Next_10;后10曲
    6 C5 Y( T  L8 `5 G, w4 i3 P( y
  2347. LDA <Key_Once  k; Q- Y. E0 r4 `$ k
  2348. CMP #$80* F! D- f# A5 y* a# T
  2349. BNE Change_Select_Last7 l& t5 j# R& W9 U+ P1 J' C3 z
  2350. JSR Music_Song_Next_107 x2 j  U7 t2 b8 {; R
  2351. ;--------------------------------------------------- d6 X6 g& a8 Q4 n
  2352. Change_Select_Last;上一曲/ P+ S  K: R; I! T8 N8 j; a
  2353. LDA <Key_Once
    % J5 \5 b# t( p" M8 L9 J- O+ Z
  2354. CMP #$02
    7 M. I" C& i3 x' u
  2355. BNE Change_Select_Next) [  R, L! R8 y' _) L
  2356. JSR Music_Song_Last$ }! S: U  L8 M( I6 y# o7 M, \* i$ P
  2357. ;--------------------------------------------------
    5 P' ]/ q; e& X1 }$ Q' ~) a3 o
  2358. Change_Select_Next;下一曲
    0 ]: P- A, N- v' b2 `
  2359. LDA <Key_Once
    . A+ I1 }7 i7 j' r
  2360. CMP #$01% G5 q3 F( U# B
  2361. BNE Change_Page_Next
    ) V- ~1 D. o9 I2 b6 K% l* _! e
  2362. JSR Music_Song_Next  }6 k0 S: d& ?- N1 J: D3 B, T
  2363. ;--------------------------------------------------: `: X  p# m- ~: A4 s
  2364. Change_Page_Next;下一页5 b  q6 C/ A/ {: K  o- P
  2365. LDA <Key_Once
    : X. o: A5 N1 ]7 w
  2366. CMP #$202 a5 M4 E( C0 ^- H  r4 h, z/ b: i3 i; ?
  2367. BNE Change_Select_Item_End- k$ B' s4 V2 ^: T  X, k9 o
  2368. JSR Next_Page# v6 U( x( r1 R, q7 ?" ^
  2369. ;--------------------------------------------------
    $ g" Q$ Y: d4 x6 A$ ]
  2370. Change_Select_Item_End
    8 G' j/ d& M1 _8 \0 `9 d
  2371. RTS
    # ~9 S: U) l. m& _7 F- y! n
  2372. 7 Q4 o0 z: n/ r' p4 W! p  n3 {
  2373. ;==================================================
    , T( Z0 P5 x& G2 d/ t( H
  2374. Show_Arrow;显示箭头光标
    * q, S8 T9 h) j  h; O' Z4 n, I; H3 G
  2375. LDA <Music_Item_Cur7 v% n9 {5 u. y1 m6 q- ]
  2376. JSR Get_Page_Start_Index
    8 W, M% ?1 s/ z6 }) D
  2377. LDA #$000 L% S' M; h6 _9 Z7 n, s! l
  2378. STA PPU_OAM_ADDR
    " q$ {% N* |) |2 D& u
  2379. LDA <Music_Item_Cur
    5 O. k7 t: n0 L6 i( E" c' D: }; W$ s
  2380. SEC% h: b) H& F4 p5 ~4 X
  2381. SBC <Data_Buf8 k9 v- B: ?! Q3 @6 [9 O
  2382. ASL A
    ( o4 ~- K: @( _
  2383. ASL A0 S" v: E- U) E5 B) H1 _
  2384. ASL A- ^6 ?3 G" _: ^( c! ?3 O
  2385. ASL A
    $ F0 ~" e" m3 y+ m4 j$ J2 o/ H* z
  2386. CLC4 M( _6 F2 w7 P6 I, O
  2387. ADC #ARROW_Y_OFFSET
    : X/ J+ Z% A! V. a
  2388. STA OAM_TEMP_ADDR + $00* c9 r+ t- [! u4 b5 K) b3 f+ m
  2389. ;STA PPU_OAM_DATA
    * P3 d7 x; E7 P( C0 p$ f" Y
  2390. LDA #$1F( Z3 v; @/ p7 ^! @9 p- E
  2391. STA OAM_TEMP_ADDR + $01+ J6 _2 _  [5 ?/ c$ k2 ~5 A
  2392. ;STA PPU_OAM_DATA
    9 Z! P" c: b) w0 i7 [* n. ]
  2393. LDA #$00' x3 B+ e& x' b- i3 Z
  2394. STA OAM_TEMP_ADDR + $026 ~# [" J3 d% R  ~% t: P; I0 z
  2395. ;STA PPU_OAM_DATA
    $ A! n$ j0 [$ P+ d* C9 }/ t
  2396. LDA #ARROW_X_OFFSET1 T3 p3 w7 q5 C% r3 M* E
  2397. STA OAM_TEMP_ADDR + $034 R4 y2 ^: ]3 F. U3 p) X& A* V
  2398. ;STA PPU_OAM_DATA
    + [5 k* q7 Y2 b+ D- H& }% q
  2399. RTS
    ; O1 T( ?& Z- [6 ~0 I4 q+ _2 P1 `

  2400. , q# l+ P0 m0 }: J) J+ M
  2401. ;--------------------------------------------------
    - Q1 {7 j. S  o: z1 \
  2402. ;命名表数据
    ) e1 Q6 r6 l) ]
  2403. Palette_Attributes* h, c  V4 C$ @$ t* y/ B
  2404. .IF SOUND_BAR_SHOW_ENABLE
    2 w, p' P' y5 |& W. k
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    4 ^. H' p6 a% |  ^7 ]% y
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    & `: _# I( T# x2 m3 E5 ~
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    ( H: {7 J" [4 ]6 |# m8 N
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA0 ]7 P, \; j5 p7 c% q9 b; {  m2 N/ q
  2409. .ELSE/ X( G! x9 G. Q, Z. b3 Z. O) |
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    0 X" G( m. `" d0 F6 @0 h
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$550 w% f3 N& o  t4 }$ N4 R
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75$ k# v9 p& s! S$ j! u6 R
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA7 p  L. {; H, L$ ^, R: ?
  2414. .ENDIF
    ; Y4 f6 H# s9 J% I0 l) ]

  2415. ; q2 F+ ?/ Y# _' g. H7 c
  2416. ;--------------------------------------------------2 a% H" i5 J6 F; f+ x5 w
  2417. ;调色板数据9 n5 j3 z. b; I4 H+ T
  2418. Palette_Data
    7 n# g, N" D+ q8 L9 V) t
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    $ C+ ^0 a( A+ ], w
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    3 {. u5 t* S4 a; \% e* |- r

  2421. 5 |  ]; W  ]- n8 _3 f
  2422. ;--------------------------------------------------
    2 q5 s/ i1 S3 B' S8 A$ j) ^% N- H
  2423. Static_Text_Data
    / a$ p, [+ ~# J6 b8 w9 l
  2424. .WORD Static_Text_Caption_Data
    4 [* i! A9 z/ Z' X2 r- ~4 @; z4 R
  2425. .WORD Static_Text_Author_Data& w) v( O1 H4 c( |6 K5 x1 }6 A
  2426. .WORD Static_Text_Date_Data, G. W3 {  c& x
  2427. Static_Text_Data_End) j3 h9 W) L" K$ K* _$ v" ]0 D8 b
  2428. + g% u( U& G& R$ s7 C
  2429. ;--------------------------------------------------  W" Q, e0 t, K& x$ ?4 A, d
  2430. Static_Text_Pos$ b4 j: |, j" \
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)/ S( E# X- y0 t2 S4 I% w
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)+ g( K! a, j& \! l0 N: c
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos). \  N" X+ J# ^- o' i! w- N
  2434. Static_Text_Pos_End" G% C3 z9 ]$ c
  2435. . g" E8 [3 f  n0 \, ?* G( k
  2436. ;--------------------------------------------------, j: U4 ?) |: w1 ]
  2437. Music_State_Stop
    * U6 _7 `' b* V% g/ F7 V& j
  2438. .IF SOUND_BAR_SHOW_ENABLE
    0 f' U6 H$ z5 S7 K; p1 ]
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$001 V: q3 c+ P; J# K8 A) {4 V* Q
  2440. ELSE
      j2 r- |9 }0 F
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    " x8 X9 ]1 D& ?2 k
  2442. .ENDIF
    & O- |. O' a! ^
  2443. Music_State_Play' v  k! |. R* c/ ^* T  K7 l
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00  `4 L7 s& ~9 w
  2445.   W& Q  |) g* d5 _4 D. a# }
  2446. ;--------------------------------------------------
    % K/ d  q- G& x, y9 g
  2447. Sound_Bar_Text_Data;声音类型文本; J% H/ p* r) c1 g9 n! y5 s4 b. O
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    ( n3 M( z* |5 z$ a6 o- M$ k: m
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-", o, F, R: L1 \. j
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"! {+ ?3 ~) a' z# ?8 G/ G0 E
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    0 N) a& I2 g" F# e
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    7 [; b% j3 h& m5 X1 A

  2453. , E- I4 v3 B, q( s
  2454. .IF Track_Name_Pos! w: s# R! g5 ^
  2455. 9 _5 h5 h: _; ]" m6 r" a1 P1 m/ f
  2456. ;--------------------------------------------------& v1 L5 U0 s( V; f/ l# A  J# t; ^% U
  2457. Track_Name_Addr_00;曲目名地址索引
      c) r2 J+ c1 l0 \
  2458. .WORD Trackr_00_01
    + }( y! U+ _) H/ F* T6 Y

  2459. ( n; C' ^' x2 R" \/ Z4 C+ Y
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    : j- }% r+ y& S9 G% I% i
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    - E' Y! C- \1 s- H+ _7 G
  2462. 2 s1 M) A4 ~* b
  2463. ;--------------------------------------------------% M" v5 Z* J7 ~* {' b1 H# D
  2464. Track_Name_Addr_01;曲目名地址索引( x7 y" @* [, U- ]# P0 x; r
  2465. .WORD Trackr_01_01
    . F% ^8 d2 k5 ~! W4 @" z3 S

  2466.   k5 `: g, N, r5 A
  2467. ;==================================================
    : p- ]2 S1 V+ k8 d: \
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"7 D: `# o# p7 }% D6 \# X" k
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"; ]% Q) Z* v; V' S$ t4 R% J* r7 n
  2470. , Y; Y2 X7 [, R/ y2 }
  2471. ;==================================================) h- r$ O3 L5 h4 z
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    / C% @& T+ n' E
  2473. .WORD Track_Name_Addr_00) W5 H1 y- E& [( g- G% P- a
  2474. .WORD Track_Name_Addr_01
    2 Q3 Q4 c9 h, B/ b; _$ W
  2475. .WORD Track_Name_Addr_014 e: G, ]* o* T; ~! O/ z7 V. ?

  2476. ! i  A# [4 N- v$ X5 V
  2477. .ENDIF
    ! h  x( h" z' G* P& j3 C+ b1 w
  2478. 3 t. w; _$ h; X6 c# E# n& ~
  2479. ;--------------------------------------------------& M3 [# z  ]4 _1 ~& K+ K/ p
  2480. Static_Text_Caption_Data;静态文本数据3 f2 A% L) {; n5 ]
  2481. .DB 16* Y& B- s! z6 V) q8 w, s2 R- j
  2482. .DB "FC MUSIC 12 IN 1"
    " V: l2 J& s$ J5 `
  2483. Static_Text_Author_Data5 l! e/ q9 s% @" Y$ x. _
  2484. .DB 258 `# p/ t  H8 m% t$ U
  2485. .DB "EXTRACTED BY FLAMECYCLONE"# M; Q) C" Z5 |1 v1 k6 P) h9 _. y
  2486. Static_Text_Date_Data
    2 A7 v( J* x3 [  U# S& M
  2487. .DB 10: _2 O3 D9 t4 e
  2488. .DB "2023.07.23") [( M+ m- ~" k8 ~# x4 N
  2489. / t( i& S# W1 C* [# v* h
  2490. ;==================================================
    5 M7 u4 p4 b, E. t- Y6 P
  2491. Music_Collection_Name               ;专辑名间接索引: s/ A7 V* q  q- q) X* s' S
  2492. .DW Music_Collection_Name_00, K2 E! z( J9 C% }$ S2 F3 v
  2493. .DW Music_Collection_Name_010 X$ N! I- z, q" K/ o' x
  2494. .DW Music_Collection_Name_02
    # i. Q% F* e: Y" ~) c4 K
  2495. .DW Music_Collection_Name_03' z" g6 w; }5 i1 N6 Q
  2496. .DW Music_Collection_Name_046 l+ C& e5 f! G) W/ l; K
  2497. .DW Music_Collection_Name_05
    ! v* K4 \( d* }  N" t, G# z/ y5 b+ P
  2498. .DW Music_Collection_Name_06. v) ^0 Q# R' h4 N# O4 k# u# t
  2499. .DW Music_Collection_Name_07
    2 v: {+ c" [. }5 o  F
  2500. .DW Music_Collection_Name_08
    + \& P" p) F9 S# d( l5 Y/ [* X
  2501. .DW Music_Collection_Name_09' j4 E+ U# @8 M
  2502. .DW Music_Collection_Name_10
    4 I4 \5 u, B( u6 Z3 e$ _2 b
  2503. .DW Music_Collection_Name_11) R  A, k7 V$ o( W- y& M: W' o

  2504. # S2 u) q2 M) z8 V2 x
  2505. ;==================================================+ `" A/ S0 M" m/ \
  2506. Music_Collection_Name_00            ;专辑名文本数据
    . w8 p+ u8 @9 p/ t+ a) o
  2507. .DB 11,"1.RAF WORLD"
    3 R  E: {" m( d& h
  2508. Music_Collection_Name_01
    * l5 o& R$ p/ P8 s# v8 A
  2509. .DB 15,"2.FINAL MISSION"
    4 n, j. D4 p. f9 k
  2510. Music_Collection_Name_026 O+ l4 s* q* z
  2511. .DB 06,"3.KAGE"5 S! Y+ E, W( W' P- I4 I
  2512. Music_Collection_Name_033 R6 k( w/ Y3 e5 ]0 }( t
  2513. .DB 16,"4.DOUBLE DRAGON"
    2 R: G, Z- k% p2 C
  2514. Music_Collection_Name_04. Q( q5 r- x# z5 H+ P6 l3 s; p" b
  2515. .DB 17,"5.DOUBLE DRAGON 2"  \3 Z6 T6 R" B
  2516. Music_Collection_Name_052 c& t  U5 j. H, s- @: h: J# w
  2517. .DB 17,"6.DOUBLE DRAGON 3"; `  y* O8 A( W
  2518. Music_Collection_Name_06
    9 E, e2 @. K) ~& c
  2519. .DB 09,"7.ROCKMAN"
    / e( ?/ I) q( j# x
  2520. Music_Collection_Name_07! s5 ~5 T. e  \+ s2 F; G$ c" F
  2521. .DB 12,"8.ROCKMAN 2"/ u$ v$ Y- \$ k( B2 i; k% N$ O
  2522. Music_Collection_Name_08: G0 \# Z9 m1 t$ ]( C/ F' h5 h* }) w3 O
  2523. .DB 12,"9.ROCKMAN 3"
    & i( ]2 Q" G" @; u2 v
  2524. Music_Collection_Name_09( S- b' N! [- I9 b4 {4 N6 p; s
  2525. .DB 12,"10.ROCKMAN 4"5 r! x& h6 c- f; {
  2526. Music_Collection_Name_10
    ; y" ?; B3 U( W# m: Y4 S1 H
  2527. .DB 12,"11.ROCKMAN 5"2 }) a' x3 q1 d
  2528. Music_Collection_Name_11
    - B5 M! N* K- |! Y# @
  2529. .DB 12,"12.ROCKMAN 6"
    : a6 f9 K& D! A
  2530. 0 C5 B6 D: L+ q& M" k
  2531. ;==================================================
    0 ~9 x& l! _5 i2 }: m# ?( q8 Y
  2532. Track_Name_Addr_Flag                ;显示曲目名标记1 v. `4 ?# ^$ Q( I# {
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0& L0 I, A' q4 M

  2534. $ p3 c8 `. d  s7 i# ?0 r
  2535. ;==================================================& A- e7 |2 ]1 c  d2 o' E
  2536. Item_Pos_Data                         ;光标箭头位置0 y2 P* V- k2 A$ L7 H: _! [
  2537. .WORD ITEM_SHOW_POS
    4 k& i6 g; [& e3 K. D# Y! c* O, I
  2538. .WORD ITEM_SHOW_POS + $00401 |/ o) E: q, h! O8 q. `+ E) c
  2539. .WORD ITEM_SHOW_POS + $00802 q$ M: X# M+ x7 d3 M
  2540. .WORD ITEM_SHOW_POS + $00C04 T/ t/ |- i" c& f# Z* i; w6 [
  2541. .WORD ITEM_SHOW_POS + $0100. Z% k* X1 y$ ?* ?
  2542. .WORD ITEM_SHOW_POS + $0140
    8 _% w1 P. c# m1 T- r9 |

  2543. 2 B( T" z, [; K$ b' `/ p
  2544. ;==================================================% Z' \5 s- J: k; b
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    $ o  o- `, N) ~8 {6 k( K
  2546. .DW $BFC8
    . I  ^( v- k" O+ B
  2547. .DW $D7F0
    # G6 W; L# G6 M# ~
  2548. .DW $9FC0
    8 g0 \- \$ G" d' F% d# x/ i
  2549. .DW $BF70
    ! `- B. W& a' _) W+ c
  2550. .DW $8003
    5 c" p( h# B. C/ x
  2551. .DW $BF30
    " e. N8 F3 O2 g8 }6 F
  2552. .DW $9003" V# `7 ], w4 W
  2553. .DW $8003
    8 \8 H' g- y$ a/ o
  2554. .DW $8003) V+ e+ E- U) B
  2555. .DW $80032 P4 c7 T. `3 Y' B
  2556. .DW $8003; @7 J8 y6 D, L- c. j
  2557. .DW $8003& H5 O  t7 i! Y. u5 B, O
  2558. , v! t' D+ k; T+ j
  2559. ;==================================================
    * |+ w. g8 S0 ?' G; \
  2560. Sound_Play_Port                   ;音乐播放入口地址% E& o2 N5 T2 U% R$ Q7 E0 e: ]
  2561. .DW $8000  v+ e$ s* y, N1 t  B- ]# ^
  2562. .DW $8001$ d% i1 x) {; m
  2563. .DW $A0008 r! F' m9 S# I2 j/ ?1 O
  2564. .DW $8003
    7 G2 p9 O1 Q% J& H7 h' r
  2565. .DW $80004 ^$ n, @! q$ V) c7 d! h: v/ b
  2566. .DW $8003+ H9 s' {3 Z: R& V/ _
  2567. .DW $9000
    8 K! u" h! q& M' @. v, j" O( ~
  2568. .DW $8000
    * H+ I* T9 S1 v( h: R2 P
  2569. .DW $8000
    ! P0 G1 g3 a0 h& W
  2570. .DW $80005 g9 {: P' G9 I6 u3 L
  2571. .DW $8000
    , f: C' h  o4 Z1 m4 l6 _+ v
  2572. .DW $80002 |7 f: L: g! n. Z& V! D
  2573. " ~1 x9 K) D8 O( H+ b9 h
  2574. ;==================================================6 q1 F7 w, y3 p9 M+ y/ c" Y9 ]
  2575. Sound_Reset_Port                  ;音乐重置入口地址) s, X1 \2 s9 B! w2 z+ {, i) {& @
  2576. .DW $0000+ E  P$ y3 {" _, O7 D1 V' M
  2577. .DW $0000. K& d1 N& E- O0 w6 Z
  2578. .DW $0000
    + l2 f( O" p6 y& N% Z+ V% S# U# `
  2579. .DW $0000
    8 `9 N7 D: X5 z& a7 U& O- O2 B
  2580. .DW $0000
    - j8 m1 g! m7 N6 H+ M
  2581. .DW $0000
    * T1 |/ g, F; E7 @
  2582. .DW $0000
    0 |2 g; r. l' I1 z7 D0 R
  2583. .DW $00000 d7 h2 }. Y5 x& P
  2584. .DW $0000$ Y3 J2 a, B$ e- I; t
  2585. .DW $00007 b& @& Q7 k0 D6 \( E
  2586. .DW $0000
    5 V. b  A* u' Z" o
  2587. .DW $0000/ m6 V5 l% b4 m7 k# I

  2588. ) a) v) I& F/ h
  2589. ;==================================================
    " s2 t3 h: P' P" k1 D$ S: L) C6 {2 i
  2590. Sound_Total_Port                          ;曲目总数2 Q: U  m& x# ?- |( ]  m8 \  h
  2591. .DB 38
    7 c8 c+ V6 |" p: q9 c. a
  2592. .DB 33! [! A; D5 j9 ?4 v, t" X; e: G. s
  2593. .DB 49* H$ d( G, t% ~! e! y$ \
  2594. .DB 41
    & V8 c! W- v/ n/ A
  2595. .DB 83
    ; ^" C+ z- I3 y
  2596. .DB 70
    0 y$ m1 T4 t/ L/ x$ R) ^4 J
  2597. .DB 50
    % n% E5 d8 I' G3 V) r. t0 g
  2598. .DB 67, n+ e% ]$ I+ M6 i
  2599. .DB 57$ x+ X# d% X$ ^9 G6 y, m
  2600. .DB 71; H$ r' }% ?3 \& ~
  2601. .DB 76
    + o# p2 A/ L7 y1 i' X- `' s
  2602. .DB 102
    ' @' k4 q, S' S; T

  2603. ) p9 n: L0 _0 _
  2604. ;==================================================
    % T( v4 ^" ^' _) m7 l, `; h' n
  2605. Sound_Start_Port                      ;起始播放曲目/ P9 ^  h3 ~% o' f2 U. x
  2606. .DB 003 p1 c. }. P( ~" o1 ~1 J' h
  2607. .DB 00
    6 P, q7 q# u3 p6 S$ a! [
  2608. .DB 000 ~- k* W! \6 e7 e
  2609. .DB 00
    7 _! A2 b6 S0 B7 h7 B" |7 q  L
  2610. .DB 00/ l2 Z# J3 G" \! L5 _( L
  2611. .DB 00
    7 A: }: q* e2 j3 z' H3 ]: [4 Y
  2612. .DB 00
    0 S2 r/ G/ M' ]* R# q
  2613. .DB 00. s: A! Y2 h( ?4 Z, p' w1 g
  2614. .DB 00
      m0 G+ d9 O8 B* |, [, z& a! e, K
  2615. .DB 00
    8 o: D3 o$ y' n' }, q4 J
  2616. .DB 00
    % `# w( v% j8 f+ ^
  2617. .DB 000 T  u- l" w7 c' r+ h

  2618. . L/ w7 `7 {1 `) V
  2619. ;==================================================
    0 T, p$ \$ h# Y- r9 W1 Q+ o1 I
  2620. Sound_Bank_8000                      ;专辑bank_8000
    2 M' |- z* J$ @) t/ {* H; a
  2621. .DB $106 o# L7 |% z' q9 s2 x
  2622. .DB $12" Q+ V2 P8 @  h6 Q# Y
  2623. .DB $149 ?, {( W" ~7 t$ {8 T
  2624. .DB $16
    ( \' ?4 f% E, g7 E- J3 J
  2625. .DB $187 |2 y1 ?- b# Q6 }2 G* O
  2626. .DB $1A
    * h3 K  C6 Z) S% S1 {
  2627. 4 {$ p% L9 _, R* `
  2628. .DB $00! Z( P, d4 m- q# f  f" T( n: E2 t
  2629. .DB $02# T. U0 l. U% B7 [; |" [
  2630. .DB $0D
    : T2 ?8 T# R9 q, q3 g4 \+ O' \
  2631. .DB $04* c; b4 g9 j$ V, i3 \  ]# ~
  2632. .DB $07& E, n' I7 A: |! V
  2633. .DB $0A' F" z" a. V1 j) X; r# s
  2634. 9 p" p3 N8 X7 c+ U. P0 L: l* M
  2635. 1 [7 t7 z+ c8 }: d+ o- m5 g
  2636. ;==================================================8 s: _2 z; T: c, \. k& [
  2637. Sound_Bank_A000                      ;专辑bank_A0004 I% L4 e/ G8 L
  2638. .DB $11- t( W4 t  F5 d0 u: U
  2639. .DB $130 p' v+ J, J5 w; u3 Z
  2640. .DB $15
    : A' |! O: x& z2 W
  2641. .DB $17
    * P4 x4 R( f* q7 {( i& l
  2642. .DB $19
    0 v+ \8 @% o9 ]
  2643. .DB $1B% c( d$ s& X, V4 q+ Q- u
  2644. . n+ E" ^9 b+ J
  2645. .DB $01
    7 c7 R$ Q+ D: J1 w1 @& G
  2646. .DB $03
    8 [6 x3 ^4 B& D: D3 F, a
  2647. .DB $0E
    ' T+ t" \2 J. X  J: X
  2648. .DB $05
    & u' d) g) B# F5 Q6 G. _& T9 I' v+ C
  2649. .DB $080 T/ W9 _! f2 A6 O: _
  2650. .DB $0B
    1 F7 |/ t5 {! L4 K% }
  2651. & A/ E" n" J* [& Y1 d

  2652. 1 e/ |9 h% w  P( _/ ?
  2653. ;==================================================
    5 K* ~& G- g1 ?% g
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    0 Z5 A8 s. j" ]- e2 ^
  2655. .ORG RESET_ADDR
      X+ g6 h% Z/ F. A7 c) v* b, u

  2656. * P( V4 x: v6 R" S# N
  2657. ;==================================================
    $ b0 T8 w7 a. S* U2 k- ]0 L$ y4 l
  2658. Switch_Bank_8000;切换bank到8000-9FFF( y" n: O5 v/ x3 K8 v
  2659. PHA
    , X5 b6 ^6 r9 r( ^1 m5 ^
  2660. LDA #$06
    " h) @( N9 D5 w5 o# Q2 l
  2661. STA MMC3_BANK_CTRL
    , J3 {" N3 O( e; M( `- L+ M
  2662. PLA) C/ Q- r0 C* l* v: \& {4 f
  2663. STA MMC3_BANK_DATA, Q$ H9 M$ r/ I2 \% F
  2664. RTS& b: P6 a7 U3 Y4 E
  2665. / i; M9 E: J5 F3 Y3 }. B; m
  2666. ;==================================================. u: s2 t  @9 R- o5 Y% H8 }
  2667. Switch_Bank_A000;切换bank到A000-BFFF0 b: `* Q7 g, J2 L! ^1 @1 a
  2668. PHA+ l3 Y  H' j8 {: G" |! }$ k
  2669. LDA #$07. h- l4 ~; W3 q( X
  2670. STA MMC3_BANK_CTRL8 Z5 l% [( Q* \9 l
  2671. PLA
    7 }! A$ G+ M/ G% L7 O
  2672. STA MMC3_BANK_DATA4 G" U: v& i3 n9 l7 S
  2673. RTS& I6 w+ z" U: m) V0 Q% r

  2674. ; W1 U* z" s. l. Q1 ~& o% V
  2675. ;==================================================4 X7 L. ^0 e% o
  2676. Switch_Main_Bank;切到主程序bank
    . e2 l9 j  e) A- f0 {6 v4 M0 b) p
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK( s0 K. `" \, q" z
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    5 Q2 b" X. D2 [, f* @7 S$ L6 S7 a
  2679. RTS; L6 P! j: x4 ?
  2680. 2 J% D3 T- [( S3 q" T
  2681. ;==================================================
    3 I+ F* a9 B# _# m
  2682. Sound_Reset;音乐重设(如果有的话)
    5 e% x  s6 Z# D
  2683. JSR Switch_Music_Bank  ;切换到音乐bank4 K; z2 T' T2 s! R  K* f8 m
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    7 o( A1 D' G& |% {, ]
  2685. JSR Switch_Main_Bank   ;切回主程序
    ( O: x9 Q; i& }+ n( ]+ o
  2686. RTS
    4 n' m! t; ?/ U+ \

  2687. ! r, {, e  J$ D' z- y
  2688. ;==================================================
    9 I% R; v& O5 ?) R+ A
  2689. Switch_Music_Bank;切换音乐bank
    , v8 ~! z5 n# e4 `: B! i% E
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号. Q4 I  q0 S1 b$ z% K$ z" }% m
  2691. LDA <Music_Bank_8000+ J" ]9 ], Q4 \6 y* m5 [: F
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank* L$ c( A9 k, k( U* \) {5 N
  2693. LDA <Music_Bank_A000
    9 y) r5 y4 f% o: w+ C. }3 D
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    7 D! P- l( x" F& b4 ~2 B
  2695. RTS
    ! L2 R* _+ [. G' _9 z! |5 B
  2696. 8 T, q( }" w5 W1 q+ l: y; j) M) T
  2697. ;==================================================, m) \0 T8 O$ S# D, x+ h# q4 B7 K
  2698. Sound_Init;音乐初始化
    - V( j% |# W* Y# A6 @# a
  2699. PHA
    ) B2 ]8 }' V5 D- o* x  C8 _
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    : @$ E$ s5 o3 |6 ?9 g5 e& I
  2701. PLA& z( g2 \9 f& V- i+ V7 L6 b
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    9 F, ^! y) |5 ~  W3 }# t- u+ R
  2703. JSR Switch_Main_Bank   ;切回主程序+ k" [6 k) W- F) e
  2704. RTS* j4 \" g- R5 F* x4 l

  2705. ! d/ O, n, p; \- ~8 v' R: N' K
  2706. ;==================================================
    % h7 j4 n; T% O- g# k1 _- k. j
  2707. Sound_Play;音乐播放
    ! Y+ F0 b2 J( T
  2708. JSR Switch_Music_Bank  ;切换到音乐bank: L& C! ~( O7 e2 T& J
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    9 l1 P- f( f( V* T" ~' ]4 T
  2710. JSR Switch_Main_Bank   ;切回主程序: x) R0 @2 L( m0 n; r0 S" y( O% P
  2711. RTS6 j; t) g9 i( X1 ]1 [

  2712. + m: g2 k# s( v" U
  2713. ;==================================================8 L" o. N1 Q8 O5 x! {+ x
  2714. MainLoop;死循环9 G5 Y- b# a$ k. y  A3 j' N
  2715. JMP MainLoop2 Z" D8 o' L. ]: p6 y' ?, @
  2716. ) c1 p; s) U3 C* I) |! n
  2717. IRQ_SUBPROCESS_JMP = 0: W9 X4 a7 N1 m) |7 S* z4 R
  2718. 4 E! B7 R9 w6 ]+ V
  2719. .IF IRQ_SUBPROCESS_JMP
    0 ]! O' F$ `# [% w# s6 j9 G" _3 P
  2720. ;==================================================- h* [4 i- k+ t* Y# W0 K' K
  2721. IRQ_Process_0;IRQ处理过程0
    4 ^1 S, W6 _  {+ `/ L
  2722. * d) [$ I/ V0 H  u
  2723. ;15条扫描线后触发IRQ4 p5 ^/ |9 a; @3 O' u1 x4 L
  2724. LDA #153 }/ |; }+ D8 E# F
  2725. STA MMC3_IRQ_LATCH  E3 D# |/ u) A- O+ ~" @( u
  2726. " L9 h; n1 s+ B! w8 Z
  2727. ;设置屏幕滚动. ^; q" j) |! i- ~9 m8 d
  2728. LDA <Scroll_H3 d8 ~' M% |2 K0 ], N; |/ ^; F7 j/ E
  2729. STA PPU_SCROLL
    9 q( W* [" w! l" R) a0 u* S" x
  2730. STA PPU_SCROLL* f% p, b+ Z) A

  2731. $ \. R, L+ m9 @+ ^0 K( b& r
  2732. IRQ_Process_0_End
    5 f& n2 ~. t" T* Z1 p: j; |
  2733. INC <IRQ_Process_Index
    + Z5 U- `) ~6 ?' E9 `8 r2 @
  2734. JMP IrqProgramEnd
    1 a3 r$ y* G) O, X, k
  2735. 7 a/ p4 I& I3 I/ z' y
  2736. ;==================================================% I9 t- k* G9 ~" @
  2737. IRQ_Process_1;IRQ处理过程1
    # ?( ~1 y9 c* d- V& k
  2738. 1 J0 Y3 A9 o- q7 K6 |, h) m  a& w
  2739. LDA #55
    ) O  ]) j* k( c- J0 T. u+ r
  2740. STA MMC3_IRQ_LATCH- ]: \6 \  t) V" s3 p

  2741. $ c2 W2 ]( E. D; q, g3 i) R9 D
  2742. ;设置屏幕滚动
    9 X' e4 ~8 P  d% G  x8 f9 E: D- ?9 N  q
  2743. LDA #$006 \; k( |) ~$ f+ I8 W
  2744. STA PPU_SCROLL
    8 b( `6 e! P4 b  T7 _
  2745. STA PPU_SCROLL3 U2 O/ z: r: k7 c/ A. Q/ ?
  2746. # {1 s2 [1 }, ^0 G9 l4 g
  2747. INC <IRQ_Process_Index0 S" L% W, i3 l5 Y# E1 }3 Z
  2748. JMP IrqProgramEnd5 j: K" K8 L+ F6 U" }! K; k
  2749. 9 P) |5 m5 U$ {3 g& C
  2750. ;==================================================1 L0 H0 N/ r8 W) q& r
  2751. IRQ_Process_2;IRQ处理过程2& t2 g4 I$ p* S
  2752. 4 z; S6 F- D+ W& Z8 a* [
  2753. LDA #15
    8 }8 x# x, o- x1 x$ W8 V- F; Q( {9 p
  2754. STA MMC3_IRQ_LATCH1 t9 Y1 ?: p" _6 E" F! @
  2755. 3 B& F# p, M5 H) `. P3 r$ e4 M
  2756. ;设置屏幕滚动
    2 h2 h% y0 Y' P5 E" p1 n& k% z
  2757. LDA #$00
    1 w' P: {- @: l0 f$ @
  2758. SEC# a& I4 |. l; Q$ U9 M' [0 ]1 `7 [) y
  2759. SBC <Scroll_H
      L; `) S& @+ r
  2760. STA PPU_SCROLL0 r: i9 ?' J1 C  d, @
  2761. STA PPU_SCROLL
    % f' F+ H$ _4 ~- [/ G* m4 C
  2762. 3 K3 O6 j6 i, }: x% F0 X3 Z
  2763. INC <IRQ_Process_Index( g- d9 v9 q- J
  2764. JMP IrqProgramEnd8 b5 }5 i1 F1 h7 [5 D6 T& g& F% E

  2765. 1 M# H" B5 W$ _
  2766. ;==================================================3 ~( x& {8 [4 _4 \8 s- @; [
  2767. IRQ_Process_3;IRQ处理过程3
    & }2 ?  \7 z( x5 B/ j
  2768. 1 E% s; ]' @( |
  2769. ;设置屏幕滚动
    9 z; L1 |4 x, t# m
  2770. LDA <Scroll_H& e# N2 t7 z" Z/ x
  2771. STA PPU_SCROLL3 t! C( g* \% v/ o2 H& Y) f
  2772. STA PPU_SCROLL  k+ C: {$ m" g- ?+ `& w

  2773. . |3 c. T& S# n: z2 q
  2774. ;禁用IRQ! p% |% J( J7 A* `  F
  2775. STA MMC3_IRQ_DISABLE' o, X8 d+ P0 F/ p5 L+ o
  2776. JMP IrqProgramEnd! o6 v( _! W) j9 D: Y3 a

  2777. 0 |/ E3 j  J* G& \1 a. n8 C, h; e$ h
  2778. IrqProcessAddr; A6 s& F: k) c2 F$ O3 w1 j% j- o
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3! b0 D* L, }, D% @7 g! s; b$ ^

  2780. $ f! _0 j, N: C+ F3 h
  2781. .ENDIF6 n- c/ j$ x) r% \

  2782. " _/ J1 M5 E& Y* j4 L
  2783. ;==================================================. b. o3 \6 p/ g( @/ ~
  2784. ;IRQ滚动模式常量+ D# ]& K& L6 `+ E! G7 P; e$ |0 j' |
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    5 G9 _- a" ?/ C8 e7 U
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动8 N5 G" f9 O) F5 `; e
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动6 H* i# v+ U0 N0 d3 g
  2788. , ^0 X. e" ?' k% V9 M
  2789. ;IRQ扫描线数据
    2 D) N4 X' n0 h' o: R
  2790. IRQ_Scanline_Data9 _" H. o% W4 A$ M0 B$ n
  2791. .DB 8; ?4 ]/ H& K$ D; y5 h
  2792. .DB 542 ?4 z( W: q, J, ~$ w* N
  2793. .DB 8
    6 t$ O; q0 O) r+ T+ m& M0 y
  2794. .DB 00 ;关闭IRQ
    0 F& a9 m1 Q  I2 k/ n: F9 Y
  2795. % \* C% G; Q* X# T
  2796. ;IRQ滚动控制模式0 S8 V8 a8 W- l5 M3 A' H# Z/ d$ u
  2797. IRQ_Scanline_Mode! Q8 I/ R) |2 I6 g
  2798. .DB IRQ_SCROLL_MODE_ZERO, u( U& n* f' e3 h; d+ e
  2799. .DB IRQ_SCROLL_MODE_ZERO
    ' E1 f" [: ]$ V# B7 @& v- \
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    3 X0 d1 ~( @9 ^, I( m/ e3 Q
  2801. .DB IRQ_SCROLL_MODE_LEFT
    8 C# H7 G. Y' h" R' k  h

  2802. 8 _5 j) d. v( G4 G  f4 a, [; T
  2803. ;==================================================! z$ z8 i- i  b
  2804. ;IRQ处理- P4 w" U! n+ Y# ]
  2805. IRQ_Process
    ( Q* o! Z7 T7 G1 K; ?$ R" y
  2806. LDX <IRQ_Process_Index
    & _7 C3 _4 z- v" o0 h* A; q
  2807. LDA IRQ_Scanline_Data,X
    # Q- z) B+ G- ^2 {/ c
  2808. BNE IRQ_Process_Latch
      Z# |& ~7 f  M3 P. B
  2809. IRQ_Process_Disable;禁用IRQ) X% p, K: f& I2 ^% d" j: P6 Y
  2810. STA MMC3_IRQ_DISABLE  [8 e" y% t! ^& B
  2811. STA IRQ_Process_Index
    " {$ W, `  Q* f5 B( P
  2812. BEQ IRQ_Process_Scroll
    ! @6 k$ `3 ^! ^( ~: a5 V
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线% ~; K6 L' o1 J; m/ ^8 u! {
  2814. STA MMC3_IRQ_LATCH
    ; n& [3 N9 T: }+ T4 p% v5 v" V
  2815. INC <IRQ_Process_Index
    3 Y3 @3 i' h2 T7 \3 `5 e
  2816. IRQ_Process_Scroll;IRQ滚动控制' @4 m  w' C) X  i) s5 _4 V
  2817. LDA IRQ_Scanline_Mode,X
    + U2 M* O& e9 o% B& i8 S+ i) m, a, s
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    2 x' c7 J7 h* u6 Z. S2 x9 d
  2819. BEQ IRQ_Process_Scroll_Left0 `" o6 c5 _% |8 A6 i5 }
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    / F2 U; t/ y8 d& k
  2821. BEQ IRQ_Process_Scroll_Right
    ' @% }% j8 s. D1 y  Q$ G# p, F
  2822. IRQ_Process_Scroll_Zero;不滚动. T5 M& U) w8 V/ t
  2823. LDA #$003 `) _% f1 B# n* r5 {
  2824. STA PPU_SCROLL
    / V& L' R: b( P+ N& ]7 o" p
  2825. STA PPU_SCROLL4 ?1 h% X# {7 o: Q
  2826. RTS) E/ i  Z0 g8 E( n* t0 d: m
  2827. IRQ_Process_Scroll_Left;向左滚动
    % j" G7 j7 S( U- J7 t
  2828. LDA <Scroll_H3 E, h+ ]; o/ ^+ W0 }0 f
  2829. STA PPU_SCROLL
    4 T( E1 I1 Q5 |+ R8 j7 E
  2830. STA PPU_SCROLL( D: A# J9 ~6 t
  2831. RTS) `( \( X( Z4 l% S- r/ _
  2832. IRQ_Process_Scroll_Right;向右滚动
    + A# r0 y8 S5 j6 _) u
  2833. LDA #$00& @! b$ U! y# v' E( U# B, w$ }
  2834. SEC
    ; O) X* ^# Q0 \/ \0 J
  2835. SBC <Scroll_H" z5 @5 y% l, A* l. r
  2836. STA PPU_SCROLL
    9 I6 v2 s5 L8 c, R+ j4 n
  2837. STA PPU_SCROLL7 n, Z* e7 N/ s5 W3 k
  2838. RTS; {6 C' ?8 [/ V+ t

  2839. " e8 C0 h' |9 k& }$ T: w
  2840. ;==================================================
    9 b7 g! R3 x+ [. r9 l8 F% o
  2841. NmiProgram;Nmi中断处理4 F) H, n1 k4 b% y( Q% T0 p- Z
  2842. PHA2 S5 n* m5 P; W/ v3 V* M2 X
  2843. TXA0 E; f- j2 L: _7 U# b
  2844. PHA! Q! u3 p* G, h1 Y" @, R* H
  2845. TYA
    * V) @" }. c# P
  2846. PHA
    % C# Z1 u4 \$ P/ t7 V9 M* H7 |
  2847. . J. T. H' a5 f5 x
  2848. ;读取清除Vblank标志, 防止重复进入
    : V; z( r2 s1 C0 |
  2849. BIT PPU_STATUS
    * t: d/ W( h5 i' o- _+ K: Q
  2850. - C: F  |& x6 B
  2851. ;切换主程序bank- i) G2 C3 V  T1 ?. @
  2852. JSR Switch_Main_Bank
    9 G$ ]: Q7 H# S$ d
  2853. % H* ?1 X% T% T, q% h
  2854. ;Nmi处理4 S' f, z7 L# C: ?4 h
  2855. JSR NmiProcess
    3 i) ^7 N9 p8 }, q8 M: y' c
  2856. ( U9 \  I& h" i( k
  2857. Nmi_Proc_End
    / S2 H8 Y6 O- y" ^" I1 c$ ^
  2858. PLA
    : X. P. K6 t2 I* W# l/ U/ L( G9 o1 }
  2859. TAY, y1 u. V  Y# E. h6 t
  2860. PLA# ^" j" p- O! G& y
  2861. TAX
    * @( p% t: V( y$ u6 }/ R0 A, w
  2862. PLA: _, N+ U. h1 u* T7 V, N  u7 k
  2863. RTI
    ' x9 ~7 ?0 s- `, E: g$ V% q& B
  2864. . ?, n* f; }9 A/ n  a
  2865. ;==================================================1 Q% L) j7 p) i! Z3 f) y! O+ ?" i
  2866. ResetProgram;重置中断处理
    / s0 l3 `4 ?5 e+ g; I, X
  2867. SEI4 v/ E* h6 {1 ^
  2868. CLD7 ^) m, h9 d( Q; j# ]! f
  2869. LDA #$00) K' y) ~; ^( j1 w
  2870. STA PPU_CTRL0 H  K* H' x# s+ t! z
  2871. STA PPU_MASK
    9 d4 f9 J2 }* @5 R+ Y
  2872. 2 X6 d% u  K# Z6 W, K1 s  @
  2873. ;切换主程序bank3 t% I/ r# Y2 `! i. {
  2874. JSR Switch_Main_Bank
    4 y7 y) L  X, _3 j% H

  2875. 9 H: z0 X2 l* t7 v* U* _2 B
  2876. ;程序处理开始
    & e- z8 e! ~! d5 S5 j* ?, h
  2877. JMP ProgramBegin
    8 _8 r* J% b6 m
  2878. ' b0 p* I2 v0 s5 \; s
  2879. ;==================================================
    2 Y5 x; I; V+ _2 n' B- ~; s1 v
  2880. IrqProgram;Irq中断处理
    - i5 W2 g$ N0 C/ w3 G. G; B9 U. E1 `
  2881. PHA
    5 b& L- V$ w! d1 f& b7 I
  2882. TXA
    * A' x, E4 e5 f5 m* J' m
  2883. PHA  v, T3 j, }: Z4 H8 H3 a
  2884. TYA0 y! `# s4 Z' H
  2885. PHA
    6 I; Q# b9 `+ A- w
  2886.   p- x; Q3 W+ F
  2887. ;关闭IRQ2 S- C1 l6 X: m" Q4 Z' t+ d
  2888. STA MMC3_IRQ_DISABLE6 D% u# ^! V/ N( b! w8 d
  2889. , R1 D6 _1 i$ d* O. `
  2890. ;允许下个IRQ触发
    9 _0 z( ?" _! Q
  2891. STA MMC3_IRQ_ENABLE% s6 [9 e( V6 v

  2892. 2 G2 r, V/ s: N+ X( |2 C
  2893. .IF IRQ_SUBPROCESS_JMP
    0 o, E, }1 n5 }, U- D! F
  2894. ' f/ P9 ^" e$ W/ m6 S5 u5 y' y8 v
  2895. ;执行IRQ过程' C) N- ^: D* }" N: [' ]+ z
  2896. LDA <Data_L& J: ?# a4 h! q* R# z! d
  2897. PHA
    - Z* y) K( P# x6 y, v
  2898. LDA <Data_H
    ) m2 v& l1 ?3 y4 R
  2899. PHA  @8 m/ v0 O4 W$ M" P, \
  2900. LDA <IRQ_Process_Index
    + J' ~9 \* `, C! Z0 n/ O7 Q; {
  2901. ASL A
    & A# B$ |+ O. B; u# U' E1 f
  2902. TAY" |* c7 i# N, y  R; T1 l' d
  2903. LDA IrqProcessAddr,Y
      J0 V6 h  B, b8 r5 p& }
  2904. STA <Data_L
    1 R+ ~0 H. J6 }) h# x
  2905. INY
    * Z. b$ M) i3 d& P% a' ?
  2906. LDA IrqProcessAddr,Y6 Q/ z$ [; |$ t' J5 Z
  2907. STA <Data_H
    . e3 {" q7 B9 i( `0 ^
  2908. JMP [Data_L]( D* x9 y" c+ y& h( p5 D) P

  2909. ' ~* p+ `/ [) q0 w( i. O  F! h  A* x
  2910. .ELSE/ o) ^8 f$ e$ K3 x; a; F% {/ g
  2911. . t. u3 C: p; g9 Z
  2912. JSR IRQ_Process
    2 ]6 D: V; g; Q* @1 @+ [
  2913. : @( n' C+ J- a8 J8 P
  2914. .ENDIF% a/ O# v9 j5 g. E6 w. ~
  2915. - f, t6 {1 W: u7 \* m
  2916. IrqProgramEnd
    ' @. R8 c3 _" a
  2917. .IF IRQ_SUBPROCESS_JMP: k* i& N) i% ~7 r1 a
  2918. PLA3 t# L# v$ \/ d+ _0 P
  2919. STA <Data_H0 ]) z( A. A! N) \) l/ W9 Z% c
  2920. PLA
    . h& R# b+ I% u. B7 ]$ |
  2921. STA <Data_L
    & F& J1 j' ?% R9 F" z
  2922. .ENDIF
    * z' T7 d+ I% B
  2923. PLA
    ; Z6 _" v* v0 t+ n8 `5 C
  2924. TAY4 J! ~6 i8 k3 K- I7 b
  2925. PLA  z6 r: F8 S0 \; m$ Q
  2926. TAX
    $ f6 U, ]2 N- `: A6 o- V1 S
  2927. PLA
    * H5 l& ^# F0 m0 h* K, F+ c: U$ K3 N
  2928. RTI
    9 @+ a$ n& Z5 h. }! B! K7 T. g
  2929. 9 g' j" P, `; @. f: c
  2930. .ORG $FFFA
    4 V/ t  R( L6 e
  2931. .WORD NmiProgram
    - r9 B7 t* h  T  l8 b0 M' _' a- N4 ~
  2932. .WORD ResetProgram
    : J! x( c, \- A; V7 v/ j
  2933. .WORD IrqProgram
    6 X1 T6 F: P- o( d+ ]/ a" K

  2934. * B) B" b; Q2 Q# F9 Z- i- o9 b- v) o$ n
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    ' k1 m- v6 [9 x! ^, h& y! \. ]
  2936. .IF SOUND_BAR_SHOW_ENABLE
    - J% Q4 N- P+ q% S# O) k
  2937. 0 Z6 U4 S* c2 \( p0 v% e2 e
  2938. .ORG $FE004 ]9 C" P0 H" h! l; M, D
  2939. PHA% k& w! U' G5 L6 V4 m
  2940. STY $07BA
    7 j  e: p5 ?! q& q' [6 H
  2941. LDA #$8D
    2 D6 j& h" s2 U/ b# h
  2942. STA $07BC0 S( I2 m! D& U' p
  2943. TYA
    , q1 h6 V$ r4 F! ^6 b; Q* t: B
  2944. CLC
    " K; m: b5 L$ U9 L1 x. i
  2945. ADC #LOW(Sound_Bar)
    % a& W7 j% s: ^
  2946. STA $07BD
    $ \9 L; ]1 g% Z
  2947. LDA #HIGH(Sound_Bar)4 d4 J- {% B( P/ ~( _+ T/ y
  2948. STA $07BE
    4 f. x- B' f3 X( u5 X4 Q' [
  2949. LDA #$60
    ' ?1 E3 m7 L+ M; z3 K
  2950. STA $07BF
    " Q( G+ T2 S, `* q
  2951. PLA0 B" f2 M4 Z, o5 H& J& f
  2952. RTS6 l5 z8 U% H2 t

  2953. " i8 q2 s+ b5 G9 G7 Z
  2954. .ORG $FE20
    + [8 N) G: U" h8 v( D% L
  2955. STA $07BA
    & D6 p9 I2 Y6 `6 M3 ~' i% x: U
  2956. CLC4 O( }4 E- u) H# c! k
  2957. ADC #LOW(Sound_Bar)0 _4 S* v- z* f; A) D9 q
  2958. STA $07BD
    - [- y9 G; T. U! v
  2959. LDA #$8D
    8 q" ]% K/ Y/ ]; A
  2960. STA $07BC
    ( j0 D* {0 {# e! s8 d! c
  2961. LDA #HIGH(Sound_Bar). s7 h: I) R9 u: H+ K4 o5 Y
  2962. STA $07BE! D# ~; _& o- `+ Y
  2963. LDA #$60
    + H+ h* j# m" d* `
  2964. STA $07BF; L# D5 V* b5 v" z/ N3 f* Y
  2965. RTS
    4 _# x" Q5 G( i6 Z+ S3 H  h- [

  2966. 7 {, H1 s& Z" H0 W& K) t
  2967. .ORG $FE40& W' _0 M( }: `/ z' z5 }
  2968. PHA
    0 l4 `7 z% c- n6 Y$ _
  2969. STY $07F1
    / R- X8 r9 J+ e/ q" ]3 k: h; \( i
  2970. LDA #$8D9 ]9 @% Z$ S' Z  y+ J6 B; y7 b
  2971. STA $07F3+ ?/ a; |  w$ J5 d0 N, S
  2972. TYA9 F: l: V0 z! q8 [8 C$ B% w
  2973. CLC' [1 H( g4 }+ Y9 T
  2974. ADC #LOW(Sound_Bar)
    ! z4 C9 V, c2 |; s
  2975. STA $07F4% k, E( i3 Y" ?# f- U
  2976. LDA #HIGH(Sound_Bar)
    5 t# }; r8 _$ s0 j% N
  2977. STA $07F5
    # T1 s( e# J  P5 v; V
  2978. LDA #$60
    - P" _# T0 P" Z9 B8 E9 T$ s
  2979. STA $07F6
    # J4 o& |+ V8 I1 c3 c6 G# x
  2980. PLA
    * g# x! \" C5 q" @# L% L+ Y
  2981. RTS- j( L* g# l4 k# a
  2982. ) k0 H$ W/ V; P( r- Q7 w
  2983. .ORG $FE60
    ! \8 x6 m+ }9 V% ]" x' e
  2984. STA $07F1
      j) e/ L% y) _/ Z. T
  2985. CLC
    + Y5 A9 ~2 _- c7 }4 L
  2986. ADC #LOW(Sound_Bar)8 J, B/ T9 O+ p$ U' X
  2987. STA $07F41 h3 T' ~0 H$ V; U& Q/ U9 S+ H
  2988. LDA #$8D
    / ]9 L% p% L# d' f# n% P% z
  2989. STA $07F30 _" i; ?( I5 H3 p1 u
  2990. LDA #HIGH(Sound_Bar)+ Z3 i, |" @: S  g* v. G
  2991. STA $07F5" F; D, g4 i7 c5 d% t) J2 Q
  2992. LDA #$60
    9 ~! X- v- X8 I( h+ Q  m& K
  2993. STA $07F6
    + R- {) c( V. m0 n4 A! `4 u3 K
  2994. RTS1 l6 h9 ^, I5 J" N" L( C
  2995. $ I; P6 K2 T/ a, Y
  2996. .ORG $FF40, s' V- @2 _8 ]% u; {  z3 u
  2997. STA $4000
    8 H  U& f& p5 j* h6 X
  2998. STA Sound_Bar + $00
    : Y% D. S( R- t- m& s* V( \4 [
  2999. RTS
    ' Z$ V5 c+ [3 c2 O

  3000. , Z9 k7 X& Q- H2 X& f# P
  3001. .ORG $FF48
    0 T* J) E. U5 Q% Z6 X
  3002. STA $4004  e" w) U5 W, m; O
  3003. STA Sound_Bar + $04
    5 t4 }  \1 o/ u/ ~* D) p$ _
  3004. RTS
    1 |6 _3 t+ I. D! }6 ?8 a* P

  3005. 0 _0 M; ?  p2 e# H8 s
  3006. .ORG $FF50
    7 D, d! N" h# i! z. @6 ^
  3007. STA $40082 A- D5 E! l/ `9 U( B7 ?7 u% R. }
  3008. STA Sound_Bar + $08
    6 C5 f2 g  G7 |7 z
  3009. RTS
    9 K$ u7 `5 Z. Y$ B2 R/ N( C
  3010. : H/ k& T5 \$ R. a" M7 u( {
  3011. .ORG $FF58
    2 O  m# y& |. n- x
  3012. STA $400C6 P0 E: G$ q) I8 ~  k- d
  3013. STA Sound_Bar + $0C
    , L' k. z$ H' K/ v
  3014. RTS% G4 n" ]/ M; z! i8 S3 m

  3015. % J: f4 \' a# `* R
  3016. .ORG $FF60
    3 F# |3 w& |4 [4 `& g) {9 N9 Z* I5 o4 x
  3017. STX $4000
    : |/ M# b5 \( U' X# T
  3018. STX Sound_Bar + $00
    " Y9 |5 W6 E  e! [# U8 R
  3019. RTS& {7 K  |# `7 o7 h
  3020. 3 ^6 V( K7 U, A  k
  3021. .ORG $FF68: Y  z8 f6 G& ~; D
  3022. STX $40044 y8 Q6 r* i0 }
  3023. STX Sound_Bar + $04
      w# d$ c; f* s; F& S6 B
  3024. RTS; J+ d! h) F( s

  3025. ' x' z/ ]  d! \6 w" D! E
  3026. .ORG $FF70
    $ n3 c, S. ~5 C. H
  3027. STX $4008
    + T) N  U3 V' ~, k9 l; I, V
  3028. STX Sound_Bar + $082 H9 B5 ~0 e4 k1 A
  3029. RTS2 q' h1 v* b# u# M

  3030. # _3 J2 d8 o: h
  3031. .ORG $FF782 U" t6 ^, [8 ~; n
  3032. STX $400C
    . k$ ?+ b) F1 f  D/ L  C5 _
  3033. STX Sound_Bar + $0C
    $ E/ ^, L1 D: g3 N/ j
  3034. RTS* v% w* p+ [. X8 W% q
  3035. ( l* s/ U% ]. R% A3 _
  3036. .ORG $FF800 W- O& ^$ ]5 [0 p4 L" M- T4 G
  3037. STY $4000
    # c. G1 V" U5 [. u) K2 P
  3038. STY Sound_Bar + $003 Y3 G: @- r$ E, [4 e( {
  3039. RTS
    % ?! ^9 V8 k+ m3 X
  3040. 0 s4 X0 ^1 x( H. a( a* c# f" b. u) c9 B
  3041. .ORG $FF88' w# N& e8 Q  m' j' W% r9 j1 g1 }
  3042. STY $4004
    3 ~9 x! C7 g% ]
  3043. STY Sound_Bar + $04
    0 y8 B( e) i7 Q9 K, W
  3044. RTS
    1 X7 n$ y9 v: s6 C

  3045. * H9 w- l# Z. d5 b  c
  3046. .ORG $FF90' p8 Q" }$ u2 i1 W: Z+ O
  3047. STY $40081 ^& l# I! L7 [7 p+ o
  3048. STY Sound_Bar + $08
    / q$ `! u, N( J& v$ Q/ p! V2 h
  3049. RTS& p$ Q3 L' M" r" E" T

  3050. 4 @: Y0 z1 x! {% X; q  f8 F
  3051. .ORG $FF98
    . v: j; J$ y0 E% m
  3052. STY $400C
    0 J, n) n8 ]+ m9 O* z# T
  3053. STY Sound_Bar + $0C( n% ]& H$ ]/ `2 a  }% E
  3054. RTS
    " v0 j8 ?/ y) b2 }5 ?# [1 p
  3055. 9 i7 w$ ]1 c, J3 u) c2 B
  3056. .ORG $FFA0
    4 E% }5 e) y5 y% i8 m
  3057. STA $4000,X
    1 a  m' x5 |) M( ?
  3058. STA Sound_Bar + $00,X
    & a. [1 E7 L: f' J: L  ^' M
  3059. RTS, e& C  P# W7 {( ^0 z
  3060.   U5 f# b* k) C3 N0 n+ p: W
  3061. .ORG $FFA8
    / k9 z# j5 L5 E
  3062. STA $4000,Y
    " o* v! e& K  B" B1 z
  3063. STA Sound_Bar + $00,Y
    + k; M$ |. `4 k/ r
  3064. RTS
    . B, T4 N4 U  ~& u7 I: V' ?
  3065. ! u5 y! Y3 |8 Z* _
  3066. .ORG $FFB0, D# H6 m# M1 r* G1 a
  3067. STA $4004,X
      Z' _5 R5 ?6 Q' f: I+ V* l% o
  3068. STA Sound_Bar + $04,X
    6 x* M6 J8 c+ u9 V2 X+ E
  3069. RTS- Z4 U$ P( q! H  i- S5 ^" j

  3070. 9 |& H3 ^6 u# G0 v; w7 Q& b
  3071. .ORG $FFB8$ D. n9 a6 F8 \, l
  3072. STA $4004,Y% a7 y3 Z/ k7 O
  3073. STA Sound_Bar + $04,Y3 v2 R% H0 g7 [2 J# G% B
  3074. RTS
    2 C+ Y  ?. T, U% F" W7 h8 Y
  3075. , ~; F- s5 \7 F; X1 M$ m% O
  3076. .ORG $FFC07 ^$ a- _' B2 o2 h3 x1 o
  3077. STA $4008,X6 l8 o6 h/ X  u+ L( P7 g" X9 Y
  3078. STA Sound_Bar + $08,X
    ( I: f9 P8 c; |
  3079. RTS
    ; `6 o  q9 J4 `' u
  3080. $ T, r5 T+ Z+ ^1 U! G4 `- ]" M
  3081. .ORG $FFC8+ b1 z/ R: \: w9 h
  3082. STA $4008,Y
    : ?# Q: D% u3 _% ?* K2 _" O
  3083. STA Sound_Bar + $08,Y) M; r) P! k7 M+ A9 r( s
  3084. RTS
    1 v* z3 f( Y! `5 W
  3085. 4 H: ^! O( m9 I& S; P& H4 O& i
  3086. .ORG $FFD0
    % ?3 O2 S1 [4 n+ C- }
  3087. STA $400C,X
    8 }- q8 ]0 M; n$ g" J, O
  3088. STA Sound_Bar + $0C,X
    3 e4 S! v1 N8 s2 r
  3089. RTS# b& F2 k7 @% E" `+ v; ]/ P1 [

  3090. 4 Z) X+ @- _6 \+ n3 u: ?
  3091. .ORG $FFD8
    & B3 @5 u7 ]* a$ q+ k
  3092. STA $400C,Y& {% u' ]2 s2 M
  3093. STA Sound_Bar + $0C,Y
    9 n& O2 T6 {+ ], _0 |8 s
  3094. RTS
    5 ^! S2 k/ L3 T; {5 `& x
  3095. , `* ~: Q, y+ G& ]+ A* p2 ]8 b
  3096. .ENDIF: h: X8 K3 E  {! \' x+ W
复制代码

3 D7 H. v" r& Q, d: U
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3356 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 03:11 , Processed in 1.101563 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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