EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
; \) U4 L+ I) m& N3 v9 D0 w3 E# J" F: F! `
[FC][音乐12 IN 1]0 E# l- E- P( H3 D. h8 w+ A
时间: 2023.07.23
$ T! B) E9 A2 @( {& B) @& o作者: FlameCyclone4 F/ J$ |: W$ z/ B# b' _: p, R
" h! |% J1 U& x4 M
收录音乐内容:, N/ w! x0 r" ]% N- N' i6 Q
1.Raf世界& F. M& O6 F) S% E
2.最终任务
/ G6 p; ?2 d9 B5 b$ E; X3.赤影战士
+ r( p5 H$ L& T& @4 j2 V4 ]" Q4.双截龙
( x2 {; E3 V& J5.双截龙2
8 [; \; [' K9 X# C; r+ N$ m8 X6.双截龙3: ~6 [( w% s+ J% ~3 v! N' I- l
7.洛克人4 e5 o6 }( ]6 E5 Z7 Z4 `
8.洛克人2+ p! J' O1 b& \5 c  y: z
9.洛克人3# e/ X0 O, n/ F. a2 V  f9 ~
10.洛克人4
- k4 q4 {4 Z& b# `4 n11.洛克人5
1 ~8 e$ x9 c( q5 x! |  b12.洛克人6  N: I! i2 d( o. L4 {+ h
( m" |# X& X, _6 o+ u7 F% e; [
操作:
' R+ l- g, ~/ e1 u& I1 }上键:         上一个专辑
; ]/ j' p5 ]9 N6 d# r: U下键:         下一个专辑
5 Z  W/ ^6 I1 l% `5 D7 W$ p左键:         上一曲
2 O8 t7 d* N. j6 R5 F( }3 B右键:         下一曲% p. |. Q$ V, h
B/A键:        前10曲/后10曲
7 W# V, w0 j8 H, _选择键:       下一页
' `. _6 l/ |% r: `: E+ n$ _开始键:       停止/播放
) `/ c) H" }4 M7 @
  j' R% F8 S: ^" K+ {# V& Zhttp://flamecyclone.ysepan.com/
# h+ r  B3 o5 M% h/ l
; @8 O7 V' P* h* K' ?. @
, V% H: }3 h- h" d  }8 S
; H: K: p* r# v' Y9 V
* y. X0 t. s$ D2 l
  1. ;[FC音乐][播放器模板]. N3 j% [+ B- x) j/ a2 j5 ]0 o
  2. ;FlameCyclone 20230710* N1 E+ s! x' w

  3. / W5 L8 C( Z+ [: p8 I6 J4 X' [
  4. ;文件头
    8 Z# X1 K$ A. ?
  5. ;======================================================================$ ^3 a+ ~/ U: Y7 H
  6. .INESPRG 16                                             ;16KB PRG 数量& B5 Z0 I; k. m3 U4 q
  7. .INESCHR 1                                               ;8KB CHR 数量
    ' a% M" n7 f3 H3 c; y1 N$ d( g1 {
  8. .INESMAP 4                                                   ;mapper 48 g8 d0 Z& r8 Q& |
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    , V& G1 W" B9 s9 ]+ b/ W
  10. 4 W* \! S( C! r/ U7 H, ^
  11. ;==================================================
    8 E! Y" L% f& X9 a0 [0 U- G
  12. SOUND_BAR_SHOW_ENABLE       = 14 F; w% R" x) m" X, V) T
  13. ;==================================================9 ]% c* g6 K4 b1 Q/ G
  14. BANK_DATA_MASK              = $1F
    " \& \0 s) _) [8 X; u
  15. CHR_RAM_ENABLE              = 0. ^6 q3 k1 ?, I0 k0 z( h) H
  16. IRQ_SCANLINE                = 136
    ' ^- ^" d! c$ m2 [
  17. ;==================================================* S' z; ]# p# k) V9 |* p- ^6 S" a
  18. SOUND_DATA_BANK_00          = $00  [5 v, ~6 N& T
  19. SOUND_DATA_BANK_01          = $017 I* @( b( I  `5 p/ Y
  20. SOUND_DATA_BANK_02          = $02
    ; j! b# c8 s4 W7 f8 X( \2 e& i* j
  21. SOUND_DATA_BANK_03          = $03$ Q0 s& K8 B- z" \
  22. SOUND_DATA_BANK_04          = $04: r" b) _" w9 ?/ Y6 e% m, N1 Y
  23. SOUND_DATA_BANK_05          = $05
    $ r$ [: u9 t( S. ?7 P
  24. SOUND_DATA_BANK_06          = $065 k2 f7 r3 t$ K+ N- \$ }3 e
  25. SOUND_DATA_BANK_07          = $07* w1 Q% @" W& ~
  26. SOUND_DATA_BANK_08          = $08# b+ U* o$ C* q
  27. SOUND_DATA_BANK_09          = $09
    8 ?6 Y; t' U) Z9 I5 I
  28. SOUND_DATA_BANK_0A          = $0A9 X8 l% {7 R8 D+ M! N
  29. SOUND_DATA_BANK_0B          = $0B
    ; n8 x. G& b  }
  30. SOUND_DATA_BANK_0C          = $0C1 m) A: R; ]: c# \1 t; D
  31. SOUND_DATA_BANK_0D          = $0D+ k- y2 \  S- z
  32. SOUND_DATA_BANK_0E          = $0E
    ' k. t2 z8 v& [$ V- }) j
  33. SOUND_DATA_BANK_0F          = $0F) b8 j  T! C- n( }* L

  34. ( [+ B* q4 O* T5 X, P1 }3 I+ L. i1 ?
  35. SOUND_DATA_BANK_10          = $10! A2 ~" i" K' W  j
  36. SOUND_DATA_BANK_11          = $11
    7 c+ d9 i: X% X+ z1 C: a
  37. SOUND_DATA_BANK_12          = $12
    5 U% a4 D* M4 d: `& F
  38. SOUND_DATA_BANK_13          = $13
    0 m/ Y" m9 j; B& G, o
  39. SOUND_DATA_BANK_14          = $14' B2 i3 f$ _2 D1 o2 K
  40. SOUND_DATA_BANK_15          = $15
      N3 v1 B8 V6 g! H
  41. SOUND_DATA_BANK_16          = $16
    1 P  i1 l- x, |5 m% B2 k/ X  e
  42. SOUND_DATA_BANK_17          = $17
    # j. ]. I& V( v
  43. SOUND_DATA_BANK_18          = $18
    3 ?1 `# Z8 g& E2 k
  44. SOUND_DATA_BANK_19          = $19/ C* p3 o! _+ c: F3 l% Z: y
  45. SOUND_DATA_BANK_1A          = $1A" h! `. S7 O  _( {) j# H
  46. SOUND_DATA_BANK_1B          = $1B$ p: j/ f% {/ q  J% P8 ^
  47. SOUND_DATA_BANK_1C          = $1C2 @9 c& c# P! F6 g
  48. SOUND_DATA_BANK_1D          = $1D% b0 R: z4 K) o1 _6 `- C
  49. # K% ?2 h$ `: J) g
  50. SOUND_DATA_BANK_C000        = $1E. d6 I" b. m' t; Q, E
  51. SOUND_DATA_BANK_E000        = $1F
    6 O: x. n8 F5 O' ^1 I5 P
  52. ;-------------------------------------------------
    2 h* N. y" L  S& m
  53. CHR_DATA_BANK               = $20- O) G  z! L! @6 _9 C5 v
  54. CHR_DATA_ADDR               = $A0003 Q2 q* A, U8 o7 V4 E; R) W
  55. ;-------------------------------------------------* M, J7 C1 C$ B- g3 y* U! {
  56. PROGRAM_BANK                = $00+ F3 [( N4 x8 \8 C5 p0 S
  57. PROGRAM_ADDR                = $80009 O/ X# a/ b6 Y. B* A6 q
  58. ;-------------------------------------------------
    0 s; h" C1 ^8 L. ]3 T; v' q6 w
  59. RESET_BANK                  = $1F- h9 q( v9 Q; G: I! V
  60. RESET_ADDR                  = $FD00, g7 _- u( R; F2 ^4 n1 V; d

  61. 6 \" p; K/ @4 ^1 M
  62. ;==================================================: I4 e' o5 s8 v
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数- {. H! I, Y, x9 D
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    $ ~: t5 F3 B+ b4 b* R+ K& s
  65. PAGE_SIZE           = 5                     ;每页节目数# K" M, G/ {3 y* m1 L  J. r( a& U

  66. 9 R) J7 n: z4 {' T$ M6 k
  67. ;==================================================0 f5 B- ?& i3 v& @: P0 h
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除* W0 o* \& Q' K2 }, x* F
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    + N7 V% N$ R& ]7 ?
  70. .ELSE
    ! p0 o- l' u8 Y- G7 i+ k* f
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    - \1 |4 N8 a* P' K" p5 o& c
  72. .ENDIF
    ; u: M1 P. D" B+ d: X) a

  73. : `% ]  B3 z/ n
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引. x+ n0 {  S( u: x8 X  m5 Z; T

  75. 0 }6 E( X: ?2 ?7 u8 g
  76. ;==================================================+ w, A& n4 \. E  o% X
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置! a+ n! l7 q3 E0 [$ M
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    ' e% S) |0 i8 A7 ]" D# z, L9 Y
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    ) n& b. B: L+ N) Y. E/ u1 t
  80. ;==================================================! M3 \# q; g4 [4 Y0 U! }7 v4 c
  81. Caption_Text_Pos    = $204D ;标题文本位置
      `% R1 s) ]) x. H1 Y: ]7 [
  82. Author_Text_Pos     = $2324 ;作者文本位置
    ( B2 ?" R8 s: v
  83. Date_Text_Pos       = $236B ;日期文本位置; L' \- x- J# V, o2 u# D" Y2 S
  84. ;------------------------------
    / Z. f/ {( w1 }
  85. ;------------------------------$ g: D" A. W# F4 I
  86. .IF SOUND_BAR_SHOW_ENABLE
    % }0 J) m2 x( R1 r% d
  87. # Z, z' P0 T" h
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    + J1 J; x8 m0 M  A
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    & ]5 t3 e( m2 ?( G
  90. Play_State_Pos      = $22F3 ;播放状态位置
    % E  n% I( |2 o8 Z, _* [

  91. & |" A$ ~) T! N
  92. .ELSE
    + h: A6 O# g/ F8 ~

  93. . r% U! ]6 w- P
  94. Play_Index_Pos      = $226C ;当前曲目位置
    , a2 D0 j0 y( d) c) \
  95. Play_Time_Pos       = $22AC ;播放时间位置
    ; C- Q; R# \# M( X  f8 ^+ s
  96. Play_State_Pos      = $22EC ;播放状态位置
    - l/ D7 v. I. h  w: I! y# Y. F
  97. + }+ U, x" w$ G( ?# x4 S7 D
  98. .ENDIF' ^7 l( @1 K+ a# U7 k
  99. ;------------------------------
    1 J; `  h; \8 p( w5 v4 C
  100. Track_Name_Pos      = $222B ;曲目文本位置8 C9 J7 K3 A1 j0 Z  [3 m2 g; Q
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    * C2 f9 J1 q( {( ?) n. ?
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    " C) K( y8 E' i0 z, {6 C6 h7 o
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    # }$ i& j; l3 P5 I& @
  104. ;==================================================
    % a+ ]8 Y, q; H: n% c$ ^
  105. Scroll_X = $00; y, z3 h7 S( G) ?
  106. Scroll_Y = $006 ~# F9 b; F8 H+ N( p- C
  107. ;==================================================
    $ i" b7 s: l7 ?" Q) G
  108. Sound_Ram_Addr_1       = $0100
    ' |# h8 B* U8 h$ P% C# d. b0 d
  109. Sound_Ram_Addr_1_Size  = $803 I& _. U3 a5 T( V' T1 n
  110. Sound_Ram_Addr_2       = $0090
    " f) w  c+ |6 r% `
  111. Sound_Ram_Addr_2_Size  = $70
    ( G  V' b; J" o4 i0 j( ~
  112. Sound_Ram_Addr_3       = $0700
      ]. x* D7 f$ \3 j& |
  113. Sound_Ram_Addr_3_Size  = $009 z7 u, `1 e* o" \  H# i, W. l
  114. Sound_Ram_Addr_4       = $04006 Y& d" A0 |  N  z8 ]! U
  115. Sound_Ram_Addr_4_Size  = $00) J/ [' @; g, {3 w0 k
  116. Sound_Ram_Addr_5       = $0500! t2 \" c, J+ a+ j+ ?4 {; M! w
  117. Sound_Ram_Addr_5_Size  = $403 x8 ]" o6 U: A+ }  ]! Q! G

  118. " I+ b5 z, q: l$ z. {6 ~: g
  119. OAM_TEMP_ADDR   = $0300
    # q0 G9 ^9 }# A. Z6 e
  120. # _$ e* N! x0 a% |9 Y
  121. ;==================================================1 U; k( ?" v, z+ `( P
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    ) Y0 l7 |; q% y+ `1 k
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器% Z0 ~+ ~( X3 U; Z: D& e- o+ Z
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    8 g, j- h) n8 `" ~& w
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    ! o0 A- \0 M0 C1 z3 V6 l
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1) _  h" O0 ]% S1 j- v
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    & F2 k2 l2 f: N, {) c2 V1 A! _
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加; h5 r; B3 B- q& d
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 : Y" ^, j. t8 {7 g4 [& Q0 N: _0 e
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    7 D9 M. Q2 c: z, O2 `$ w) f
  131. APU_STATUS              =   $4015   ;声音通道切换
    " r+ j3 f2 x* F
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    5 ^5 g! F+ z) z
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    0 e; b! U" A5 J& e' a
  134. ;==================================================7 k. F- @% j" p, u- o' D
  135. MMC3_BANK_CTRL          =   $80002 f7 k: y1 v. g& b; s& [- S
  136. MMC3_BANK_DATA          =   $80014 ]; c$ z) m5 }7 T5 L9 D+ @& X
  137. MMC3_MIRRORING          =   $A000
    ( l" t8 Q1 @0 k' H2 n( Q
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    5 F( e3 _+ f' {( g5 F
  139. MMC3_IRQ_LATCH          =   $C000- ?- m( m8 v, R! f7 A' B
  140. MMC3_IRQ_RELOAD         =   $C001, g  _, f  G2 w6 ^0 a
  141. MMC3_IRQ_DISABLE        =   $E0003 L* l4 _- C9 ^0 M% k
  142. MMC3_IRQ_ENABLE         =   $E001
    % Y; k6 T3 W# L  ]) f5 o* j. t) ?

  143. & U- q9 i  E1 r6 ^
  144. ;==================================================- j" M! ]  [$ t: ~0 ?9 u; F, n+ [
  145. PPU_Addr        = $02000 v5 p' z: A; Z% C$ F9 E
  146. Palette_Addr    = $02C0+ O" N& x# Z+ Z- W% X  c
  147. Sound_Bar       = PPU_Addr+$E0
    0 Y* X) Z0 `& O' S5 Q! w4 z
  148. ;==================================================- h3 g4 X' \; I+ N4 j) r8 H/ k
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D/ b# b3 p. [+ f, b0 s( c1 I
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    2 ^9 u+ Y2 ^7 q2 s" |4 E
  151. PALETTE_UPDATE_MAX      = $2C9 g) ^1 x' ^$ L1 W
  152. PALETTE_UPDATE_MIN      = $21
    ) E, n! a; T) u! I9 `: a
  153. PALETTE_UPDATE_INTERVAL = 60  Y2 P/ E2 r# A6 n8 \3 p7 t
  154. ;==================================================) C! j7 K' K" Z/ z4 y
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    * r* h; V: A+ e/ E- {
  156. PPU_Cur             = Sound_Bar_Cnt+$02+ Y) s& _( L9 s! c. k3 i% V5 K# n6 M
  157. PPU_Addr_H          = PPU_Cur+$03# _; }6 \% ], D) K- }8 u4 r4 z
  158. PPU_Addr_L          = PPU_Addr_H+$042 K. o5 i% b- E; u, h
  159. Screen_Ctrl         = PPU_Addr_L+$01& l0 Q6 u. x! q( O) }
  160. Screen_State        = Screen_Ctrl+$01
    % O3 g8 _8 ~+ _- k3 K: H! ~  i$ f
  161. ;==================================================
    . T6 ?1 _# s: [
  162. Use_Ram_Begin       = $50
      o  H$ Y, g+ H  X6 F
  163. ;==================================================
    9 E7 W- }+ t) z: ~  X
  164. JSR_Addr_Op         = Use_Ram_Begin
    8 z. `' Y; z3 T9 Z5 F7 D# \+ [
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    , f& T" h9 l: Y+ c) i) Q
  166. JSR_Addr_H          = JSR_Addr_L + $01' Y  W& b& W2 y' L; j7 j
  167. JSR_Addr_Rts        = JSR_Addr_H + $01. w) \' q! S/ o) l' ]0 n! @
  168. Data_L              = JSR_Addr_Rts + $015 i, `  e! K- e4 c/ T
  169. Data_H              = Data_L + $01" u+ S8 V4 Y% l
  170. Data_Cnt            = Data_H + $01
    / H1 J4 L! C7 c
  171. Data_Buf            = Data_Cnt + $01
    " t7 z" W; {2 o7 Z7 ?
  172. Nmi_Time_Count      = Data_Buf + $01, s) ]6 K. o  t7 H0 U: o: C
  173. Time_Wait_Cnt       = Nmi_Time_Count + $014 ~) P: Z7 z5 t$ L9 w# ~
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01  C& g$ E# Q9 r1 a: z6 I  k

  175. 1 `% t: S( @3 ~' w! {9 m2 E
  176. ;调色板刷新标志
    5 Z- i# U! g% V0 N* q# s" M* D
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    % ]+ T5 q+ V% m1 v# o
  178. . M0 P! _9 U) W& ]9 L: ]" s1 v
  179. ;当前帧文本写入禁用标志
    # ~6 t+ a, P: w+ ]
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    3 U% U: G' q8 p  `! X

  181. ! D, t) M" ~% R! i( J. b7 A5 x7 C
  182. ;==================================================; V. ], s: V! k  S' v3 j; F$ C* ^
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    & y) @% S+ l$ @! A
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条: |% C- f5 c- g: l4 T! H! N
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间/ h6 u& ~  d" M1 A5 \. o; m- Q# ^  T
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间8 f0 L, f. a/ ]( V) Y8 a' G
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    3 x- H* W7 y# `$ _* Y; `
  188. ;==================================================
    $ r' @$ e! V3 k4 s) p
  189. Key_Keep            = Text_Disable_Flag + 1
    * }* A3 K/ A5 a' x% k# J
  190. Key_Once            = Key_Keep + $01
    * q8 S; l, E. m
  191. Key_Kemp            = Key_Once + $01
    + S& z0 S/ X6 r
  192. Key_Temp            = Key_Kemp + $016 e, N" u2 f# }2 K+ v, S
  193. Key_Getv            = Key_Temp + $01
    & U" V; _5 A" b; A3 r# O0 X
  194. ;==================================================
    2 n- j* R. l4 H& ]
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集1 F! x! e; E: p) ~+ H; K
  196. Music_Item_Last     = Music_Item_Cur + $01) V' b+ s8 Y1 q5 i, D1 B* c8 \/ h
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    ' [- t9 W0 N7 e/ t8 t' g
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    + ]! _' Z$ z& o# f2 z
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    6 }, [3 @* q( |
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态" [6 K7 `( }" f. s2 O
  201. ;==================================================! ?! f/ ?- C, [" n' }
  202. HEX_Data            = Music_Stop_State + $01, l+ \# c& ~- d
  203. DEC_H               = HEX_Data + $01( o* m7 k, J2 V
  204. DEC_T               = DEC_H + $01
    9 V5 B5 Y3 }9 A1 v! P# \& U
  205. DEC_L               = DEC_T + $01
    ) i( r3 M6 j, T8 S" a/ o
  206. ;==================================================
    6 W# L7 N+ e( C1 q. C+ e
  207. Time_S              = DEC_L + $01
    2 G( d$ ^1 d6 o' Q
  208. Time_M              = Time_S + $01
    & k) g6 P4 k5 U* N+ [& H
  209. Time_H              = Time_M + $026 b: C' f2 p$ O! S, r0 c$ a
  210. Time_Cnt            = Time_H + $037 ]2 d# W9 F" t
  211. 1 V+ z* Q4 K% B. c* J8 N9 j/ D4 `
  212. ;==================================================& C. |0 w$ U1 n: R+ D* p
  213. Music_Bank_8000     = Time_Cnt + 1% Q/ t! R, j3 r) `3 l# _1 D& w0 R( |! Q
  214. Music_Bank_A000     = Music_Bank_8000 + 11 N( r7 z; E' c  ~
  215. ;==================================================" p4 `( s+ d6 a- I3 S9 w7 c3 l
  216. Scroll_H            = Music_Bank_A000 + 1
    - \4 e3 @) o8 x
  217. Scroll_V            = Scroll_H + 1
    . t; L0 ^% j# j- {
  218. IRQ_Process_Index   = Scroll_V + 1
    : [& Z1 {; @+ `8 f8 h
  219. ;--------------------------------------------------
    ; Z9 R( @7 v8 K) Q6 z& a* n
  220. Page_Cur            = IRQ_Process_Index + $01
      ~0 h1 T3 p  _8 _1 @; M# |5 c
  221. Page_Cur_Index      = Page_Cur + $01, A1 ]# Z# z+ j! J) b3 }
  222. Page_Cur_Cnt        = Page_Cur_Index + $010 J% y6 v9 L% ?; i* y) W
  223. Page_Last           = Page_Cur_Cnt + $016 c) F$ t8 s9 f
  224. Page_Last_Index     = Page_Last + $01' f+ H% e4 Q7 N( o
  225. Page_Last_Cnt       = Page_Last_Index + $011 Q- h( w, }' B9 `  T" x2 V" b
  226. Use_Ram_End         = Page_Last_Cnt + $010 K. q# ]8 I$ _6 A- R1 p
  227. ;======================================================================: Y% m- q9 G5 O# z1 [/ f) C
  228. ;音乐数据块
    + d2 t) M; X# D/ W. O3 z
  229. ; R# y8 T" i, C! _+ D9 V
  230. .IF SOUND_BAR_SHOW_ENABLE
    $ H8 Q* ^1 V0 S1 m0 e# K$ Y) b
  231. 7 Z) h. Z! G; r" g  L2 D
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK/ w9 B" q  _$ q
  233. .ORG $9000
    ' [5 P* {- e2 e9 g# ^2 f0 H
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"2 r1 w  z* c0 H" _9 ^- \+ o
  235. 9 a: f2 b/ n6 f  W
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK6 Z0 \) P8 I9 N5 V$ b2 z& |4 `- Q
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ! ?/ `* v9 J0 v% s

  238. # R  @4 U6 A3 q4 {' M' u  j  j3 ~
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK( j) ?- }0 z* e- o/ ]7 x; P1 Y& [2 F
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    - W. _. D, b1 C2 S
  241. 8 w( f5 F2 D* V: @+ M$ V' U  i. z
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    - Q- w) A( N! H) ^
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    : ~& }' H/ @! u& f. T0 c
  244. . W& k+ i9 y. M5 @  P1 W* q* F
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK7 T& @/ `* N3 F8 ~2 R" i
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    ) O0 V! o  C( R

  247. 3 Q, h$ ^: s. x, z
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK. R2 L3 A8 @. t
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"* C% W; e0 \8 E% X8 `: u' t$ J. X

  250. 0 l1 M: c! A0 W
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK* R8 q8 |; U/ T& d0 c, ^
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    * B8 |! D9 _! T

  253. 6 e1 N* q5 w' j/ W+ n
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK7 {: z) p5 R* |" T% K1 E- E
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    & v* L' ^1 f& Q( v- O

  256. ! R$ ?+ {5 @7 @
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK) M. G! b8 ]) U4 R  s
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"% ~1 @& K& _+ h, p. r9 k/ {$ _9 w: d
  259. . S1 l3 X& R2 h1 |
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK2 k. S" _, t$ }+ G
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"% n0 g- }7 ]/ y! t  q5 @8 l

  262.   P8 c" }- n6 K5 z  C$ n
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK5 V( ]% r! ?9 @/ e6 H8 Z
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    4 r' j; i2 e8 L' M% C! o
  265. * F/ }. Q- b% c; q8 v& {' p9 X  _' \
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    7 I3 C$ L) ^& {/ a9 A* B
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    ) n( N, `. W" \# g7 Q' q% H
  268. ' {$ s) ^0 s3 i& m1 q
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    # H) H% ~0 P+ M
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ' K0 V7 j8 e2 U: b5 u

  271. # B, a, b8 ]* J+ Q: H1 Z  g. N
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    ) X/ V8 {! w% O
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"- f7 v" O7 r5 x
  274.   N' e. H  S7 t- p
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK" e" c" m5 z) n- Z- I4 h& x
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    # b4 V2 S) C1 c: a; ]+ l' G! u7 W
  277. 3 O  [: T/ O: Q
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK: C' F; p: Q! C; i
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    ; E& E5 K, M6 V4 \  w- d

  280. 2 e% U  e" E9 j/ ?$ i' s
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    : S, h9 |- y7 V3 e8 B$ b
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    : j& X, T3 l5 b% H, X2 h

  283. - M7 Q1 A+ x1 p% Z
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ; p8 @2 [: [0 D: g! b  y
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"0 H% c6 Z1 {& k; ^

  286. # ~: M4 ]" m% u$ F& Y
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    , }. n0 m* F& [* O9 Y
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    / C) [' |' \( [* S* E# V
  289. ' N2 V3 b8 L4 S6 D, _
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    3 ~8 w1 c- I1 i  b
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    : q6 F( [) j: l
  292. 8 J1 N, z# m7 ]
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK$ P: ^, `1 o4 ^* D# i
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"- x, Y$ z: \$ w5 z4 A
  295. * g5 W1 _5 \; S- u! ~
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK! Y: o, U+ g$ |( G3 Y
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    4 I3 ]! g' |( B! c, q
  298. % f! o/ i9 g+ N  u9 b0 q9 h8 `( F
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    8 C* U# \' ^- d" g2 p  ]& j- `) I
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"5 H& X5 m6 T3 ]0 `

  301. 7 n8 F2 \: W3 s$ E0 E
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK' a, ?4 S) y4 t; T( U* Y' s& h
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"4 h& @/ z9 c( v# p, O

  304. . l8 q+ Q4 j: z" r* n/ h
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK/ ?. a4 w: E6 j3 a. P& h9 E
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    0 ^& _* ?; M( z1 t
  307. ; j% S4 ^9 |& K: H( u2 _6 {
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    0 Y1 W- A! R' E4 q# f
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    . w5 t1 ^# T# i; v. R& Z: A
  310.   {6 H4 {3 n, T
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    % R8 K6 @- m1 `1 Q  b
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"# [0 M/ I. y) P. s& z# e
  313. 4 i+ `( s- t- y% {2 w6 R; C% i! X4 {
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK4 g# f: J) l  a7 w4 n
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    : O+ b" R" b3 j7 U

  316. 8 k& h! R8 W' X# B! |: ^9 ~4 W9 @
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK( U: a2 }) e2 }
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    0 X# q/ c% y, L- [6 J
  319. 2 F2 l8 A& M. M; h
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK) G( b1 s* Y2 Y
  321. .ORG $D400/ a7 w$ n; [4 h& V, U4 [# m/ s
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"( ^' d# E" T4 V% G0 i; j& E5 @& E7 g
  323. " j- t* ]  b# t- R2 m2 h
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ! X# l) f+ }6 U6 e/ K
  325. .ORG $D800
    % H) M. a6 S( x
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"* `, R4 i( l+ Z) [  S) A

  327. 6 ~/ i, {7 t2 X$ I' ~8 K
  328. % k) y" `! @6 u6 f3 B6 _% j: L
  329. .ELSE$ X, V; f$ Y8 ]  n' j
  330. 8 g/ @$ Q/ Q3 }0 q2 L( L/ ]6 M  i4 N# G
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK6 K! Y9 a6 J: Z$ @9 N  [/ {5 y  x! D
  332. .ORG $9000& j* \# @% ?6 H5 _& N# U, C  o
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    ) ]5 l. J7 z3 s/ S2 L4 O
  334. 5 g# W- D: c" m! s
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK$ T5 o5 r; s/ \4 Y7 ?" N
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"  R, S- h1 U3 j/ C
  337. & e- D9 k: ]7 o) x6 J
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK* e. l" f8 H8 V8 O
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    4 f; s8 w7 I' H1 A1 |
  340. : e4 T/ y6 F* a; A3 p2 O7 I+ ~: T' O
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    % j! r; Z4 ?# E
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    , G! ?+ M! ?7 L1 a  v: u

  343.   s# l5 S/ d+ H5 a
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK6 }- e/ ]' O! ?9 G- Z
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"! R8 ^! R+ i* Y2 C: S* R

  346. $ h' b, I# m3 n8 m8 M/ ^* b0 f
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK) L& K# v  l! n
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    - P  Z4 o! y5 R

  349. ( J* j, l/ ~; {2 o1 c8 P
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK3 O5 X7 T, H0 y3 x# m' a) w
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"0 c' v: M, F: k7 _: k9 y$ S
  352. 9 A4 W3 g1 [* o. x
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    # C1 j4 v3 N: V% W
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    ) ~( E7 U( _: E5 M( {
  355. : y7 r8 q# x; h' H# {+ T2 R0 p' X
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK1 t; _. ~1 U3 E+ J3 i* J- T* B
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    3 C/ C% @7 C3 N

  358.   o9 O: t, ]+ I+ B/ Z: Y6 n9 \% \1 B
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    , P/ {9 A6 {& L" x* V
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    & |' u+ `5 y0 M- ~  \) f6 w
  361. $ C4 t7 m/ |" h
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK9 A+ X- M6 [/ _0 I$ S/ v' m3 }% b
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    5 S) ~6 z6 P' N# @
  364. 0 M1 o+ z7 r) z8 x0 h
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK0 E. k: T- `: A4 [7 _4 A/ K
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    4 y" [# T  r* V! L* @& a' h1 l, f
  367. . v) a$ M0 P7 c! A% n
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    : \3 Q+ \) B/ B+ \6 C# U
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    4 u( q, H  M) e# x. K0 N  J, S( x

  370. 8 r: t0 U; j2 S- o9 |# O2 Y9 h
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK4 p2 {" \1 f5 J# _" b; @5 g5 I; M
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"% k( q, p( n( h

  373. 5 l, U" i6 S0 J- j* N5 ^/ u
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    * \0 i$ i4 H' F. B! I
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"0 c; D0 K6 p3 q$ D: W: k# N+ E8 N
  376. / \& _9 F" f% b" t5 W4 U6 M6 k
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    ! B8 Q* R$ W3 s0 J7 ~- ]5 G8 A8 O  a
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    % j0 D5 C8 r$ R" N: E9 J

  379. ! o4 W0 ~: \" i; A  s0 o! D3 ^5 T3 {
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK3 I8 b) k8 X$ t5 C5 l1 L
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"; F$ d) ~' z3 @, e
  382. ; j) o6 R- M+ ]9 S  R! D" g. q
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK& C; @) O- Z1 `
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
      d. a9 o- _' n

  385. " ~. b# @- g* M
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK$ U- K7 F, q7 ?6 O5 V1 Z# s! A0 b
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"/ a0 c/ a* \  x8 J. p" ~
  388. ; p$ d0 x6 d% R' D; c; W+ Y( f
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK6 l7 ^$ s0 m4 K& i3 x* R* V
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    6 A, T5 {6 F" J1 M6 a. U( L- |

  391. - U9 E1 S1 {0 Y; w2 I. s
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK8 }" r" c3 J0 [( ^% {
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"2 v2 R( G  [* b8 Q1 U5 G, V, [4 r6 [

  394. ! U% m0 Z7 b1 H* k' q- M
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK6 m5 B9 W/ j" T8 ?" G1 x7 H
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"4 F0 x; t2 c/ F# n8 h6 w2 Y/ o
  397. 3 a( X* ?" @2 W+ |+ }8 k! ~; @
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK: k; i0 K# Z/ ~
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"2 r& v! @' b" E- w3 `2 p
  400. ( x" }4 D2 C* |1 V8 B
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK6 f& m2 `0 y! W1 k- y# h( r$ c
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"' T/ v- M( o& r' I: K& g
  403. 6 A3 ]( ^+ B3 L8 e4 J4 I
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK) H/ P3 \: N' B) B
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    $ p) f! M& J3 H  X$ `
  406. 4 U4 S* e+ M/ n5 l3 H
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    " Q- T7 P" {4 h/ t! K: V- M) b
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ( C9 y$ ?4 E! f' |5 q" b
  409. 6 a& j( H  D$ E: ^9 _& K  r! x
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    4 J0 O6 \8 X# ~/ y: C% Z" [
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"; D( W; Q- S  u4 P

  412. ( i$ a4 e" }' x+ p. E  E. \
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    ( g& d0 n: B) l" X
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"$ l. b8 H% A9 j& o! g

  415. ; ^$ U7 c. p0 ~+ O5 R/ b1 n& E
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
      b% s: B% ~: [; P" [! }
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ! K- {8 P5 `/ v4 ^; |

  418. / @+ e( J; ?( b/ {2 V8 V% q. [
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ' W( d3 d$ {" W
  420. .ORG $D400
    3 P8 M9 g# U9 l$ P% w" N5 b$ X
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    6 U! W$ ^4 B1 Q3 l- M  _
  422. 2 F2 Q, x8 d) H. G. ?9 R
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    " F" ~6 h4 |) h
  424. .ORG $D800! v9 q( R# @, t+ C; {2 k- q6 S6 {
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    ) b  q4 b3 ?: E5 J& d5 R
  426. # u: c8 n# v' D; I# p$ j
  427. .ENDIF
    9 x2 [: Q1 \0 j& W6 r

  428. ! D3 `$ d0 u8 G7 g) C/ l$ K  U
  429. ;CHR图形数据$ I% i' D* w. d2 x( P
  430. ;======================================================================
    & n! y. T2 N1 [/ ]- R; F
  431. .BANK CHR_DATA_BANK# a, w# _+ r$ C" k! v  Z- X
  432. .INCBIN "chr_bank/chr_data.chr"/ l' D0 ~* @5 j: L9 M3 B/ F: w# ^$ `
  433. ; \* o1 [3 P$ s2 @( o' C. z$ j0 F
  434. ;======================================================================! u* n) D  e. x+ L" B
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK8 H8 H; N! s$ r- A7 L
  436. .ORG PROGRAM_ADDR
    $ M* W- w) @! v/ R# e- u5 L

  437. . f! x- w( J. w0 O1 e1 N
  438. ;==================================================
    " x( ^' o* t3 g! d7 v0 p9 g' i+ K
  439. NmiProcess- i5 R( s+ l3 Y& [( c* G

  440. . c4 s4 l/ c8 y" K
  441. ;关闭屏幕控制
    / x& c( S$ D) m$ ?6 h
  442. LDA #$00) d$ Q- u; N$ f- g! m/ a. V
  443. STA PPU_CTRL& w6 r: J# E$ t0 H4 B
  444. : T8 p/ l  k* c3 Y- i' C) m
  445. ;没播放音乐就不需要触发IRQ6 O/ g+ C; Y9 |/ Y% S6 U: S
  446. LDA <Music_Stop_State# N3 M# \3 Z% w5 Y) v( [
  447. BNE NmiNormal  j/ |  D% ~# o
  448. , u$ r' m3 e9 D7 s0 J' u% }
  449. ;重置IRQ索引+ c) F5 c0 r9 n1 x6 ~
  450. LDA #$00( o/ E* m: B3 h
  451. STA <IRQ_Process_Index: u- Y& V, N0 o( |6 y& j
  452. 6 b0 a2 J  Q( v8 n  P
  453. ;时间秒数为空则跳过) U  |5 `- K) P# t( @4 X& n8 A
  454. LDA <Time_H
    & [+ ^& z2 X1 E
  455. ORA <Time_M
    * M3 l/ [: p1 j2 j3 q) V8 Y) n& S9 @
  456. ORA <Time_S
    # n$ D8 H" }& ^5 ?8 J3 V1 ~
  457. BEQ EnableFirstIrq/ X: E* Q$ Y2 k0 |* D

  458. " Z* E6 b5 H+ a; r8 `: t$ D0 O4 n
  459. INC <Scroll_H
    / O1 }9 ^, \. [1 `! O9 j
  460. 7 m6 ?) S& A. d7 q. t* z
  461. EnableFirstIrq 0 W5 e3 ^2 ~% m' S' U2 M/ I2 R6 r# S
  462. ;80条扫描线后触发IRQ
    4 i- s1 |8 _' Z9 n7 V
  463. LDA #IRQ_SCANLINE) U, `6 W6 \% h1 c  O3 ]1 q
  464. STA MMC3_IRQ_LATCH& R2 f( M6 U5 ?1 K9 n. u* U5 r
  465. STA MMC3_IRQ_RELOAD2 \0 Q2 w& |+ Y- b4 {1 P/ ^, c
  466. STA MMC3_IRQ_ENABLE! j# L! M; R) t. C4 h% u5 l: ?
  467. CLI
    & `: @2 t% d7 w+ v/ k$ @

  468. , |3 f# v0 x2 d" q; v# ^6 }
  469. NmiNormal
    ( Q3 h6 F( W, z4 _6 W

  470. . r- A6 s; q+ P4 x% N  C. V$ K% s
  471. ;处理PPU图像# P1 Z* ^: f8 e
  472. JSR PPU_Proc: ~  b3 b  |' g8 e( d9 `2 m

  473. / @  m9 J  k4 o' g# ]* d
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    - |+ h7 g  G5 y# q
  475. LDA PPU_STATUS+ V2 O- E3 Y) b) y  ~- @- E0 p* A# X
  476. ;LDA #$00" G: S" H( b% f9 D( j3 ^! X' d1 K
  477. ;STA PPU_OAM_ADDR. R- [% ^6 N; ?6 P. L- ?- ^
  478. LDA #OAM_TEMP_ADDR / $0100
    ; t2 @7 b9 M+ u! f# u
  479. STA OAM_DMA! `$ m  m- g' D: h) @% w, H
  480. - `8 j$ Y1 D' t, e4 d  ^3 i
  481. ;启用NMI中断
    2 i9 s% |3 A6 f
  482. LDA Screen_Ctrl; f9 F2 \+ Y+ U, A$ k4 E+ S
  483. STA PPU_CTRL
    # F7 d' N* r, ]" a5 H0 ^
  484.   U$ G% k% V$ h+ t4 Q0 O+ n8 b
  485. LDA <Text_Disable_Flag4 `* T% [5 F3 T( a; V6 C2 E- Q
  486. AND #TEXT_DISABLE_RAM$ O  C1 W# V5 A
  487. BNE Nmi_Sound_Play
    # |$ d$ Q% I) D7 ~6 r' f6 n

  488. 3 [2 v$ C1 a( M$ d$ j2 b
  489. ;处理手柄输入
    0 q  |# d% C2 d
  490. JSR Key_Proc
    % u9 U0 e- y  W5 y
  491. ; k) L- l$ s/ `
  492. ;切换音乐(手柄触发)
    " `0 f3 l; W; ]' V$ F- I
  493. LDA <Time_Wait_Cnt
    3 z2 x+ j* l, Z# V: M9 v% r
  494. BNE Nmi_Cursor_Arrow+ i3 g9 |! ?& b( f
  495. JSR Change_Select_Item: R3 Q$ d5 v# m
  496. * c; g2 x( u1 W, O  j
  497. Nmi_Cursor_Arrow' l/ z# h5 I2 W. K

  498. & P9 n# d# K+ c. _* A' }
  499. ;处理光标箭头
    + `8 _, o6 J$ r$ J9 A5 w
  500. JSR Show_Arrow
    + L& a) P) H* `4 l" r
  501. 0 W( q4 G6 _4 @7 V, S4 j. J
  502. ;更新调色板
    - o: j( f$ `) {+ ~1 y2 Q% G: f
  503. JSR Update_Palette_Data
    4 R  ~$ ?$ h! K$ A* Z2 G& Q
  504. # a% A# X7 m, G) B# P( W
  505. ;显示时间(缓冲)
    # ]* e$ r0 Z3 `7 p' C5 L+ m
  506. JSR Time_Show% ^  P) ?2 R; R

  507. 2 ]8 c/ {* `$ q# A! G  @0 ^
  508. ;音乐显示(缓冲); W- z' a+ p- I! a8 U7 P  K
  509. .IF SOUND_BAR_SHOW_ENABLE6 j8 n! u- h6 j: G
  510. JSR Music_Vision
    ) T4 ^8 z' A& t$ c
  511. .ENDIF2 ?3 h# ~, G( h3 ?1 e
  512. $ s: e# I. K8 X3 R& |  f' b4 E' g8 O
  513. Nmi_Sound_Play" q: U3 {* K' h3 a9 ~, ~
  514. ;播放声音7 N) `- w/ A% {4 K0 i
  515. LDA <Music_Stop_State
    + X2 R# A& p$ c3 W# f4 Y4 X7 ^* k
  516. BNE Nmi_Time_Wait_Set
    . V! W9 {3 E9 V$ R. v* q
  517. JSR Sound_Play_Proc
    ' |. v4 \; q# m0 [& H2 }! t5 w

  518. 4 g9 f2 z! d4 |  @
  519. ;播放计时0 J: k: q' B0 I
  520. JSR Time_Count3 Z. @6 b3 S9 y9 C) w* k
  521. ; Y1 V: ~/ ~% c% D& p+ j3 `1 g( }- l
  522. Nmi_Time_Wait_Set2 w; c9 X6 z% t! T7 z
  523. LDA <Time_Wait_Cnt
    7 E  |) E. l  d
  524. BEQ NmiNormalProcessEnd- s9 i6 J% i' o6 ?# b
  525. DEC <Time_Wait_Cnt
    ' r$ h) o* W4 {
  526. NmiNormalProcessEnd$ `: L' ]* k: b. M; A5 c

  527. & {7 F4 w4 v* G  h: C- u
  528. INC <Nmi_Time_Count, `$ z% }6 x1 _& ^/ {: C2 @6 F
  529. : O3 g6 y+ i# p: D! y
  530. RTS1 |% W6 k2 D. r" x
  531. * }$ R7 r3 H' w1 y7 ^' V  P. {) e
  532. ;==================================================
    ; T( h$ U6 n2 r% [
  533. Init_MMC3
    6 ?8 \2 }/ u, x$ ?  Q4 \% X  O
  534. ;==============================# z) R1 I8 l  b
  535. ;禁用IRQ
    * N! c. w' I; W( {5 z8 `
  536. STA MMC3_IRQ_DISABLE
    * D. a  M! r) R# e3 U1 p

  537. 5 V) O' c2 `* D: o. k% X4 p
  538. ;水平镜像2 F' S! V( \$ b2 c& {' k
  539. LDA #$01
    9 g5 t* _0 C0 k& m4 K7 A& d
  540. STA MMC3_MIRRORING0 W  C2 Y; d: W

  541. $ w/ L! X, V' F. r) X/ ^2 z
  542. ;初始化图形bank
    4 ?% g5 D1 p  x( j3 x
  543. JSR Init_MMC3_Chr_Bank2 Q7 V9 C* b) r! ?; m2 `- Z( X

  544. " O4 ?: m9 Y4 A# C/ ?
  545. RTS
    % t: c8 O4 d8 U( W
  546. ;==================================================/ F7 w% T& X! G- l* M! d
  547. ProgramBegin;主程序
    ' T5 G( g$ X+ z4 `# K& f
  548. LDA #$00* b5 A! x  _; H
  549. STA PPU_CTRL" F) Y$ M( `. }$ T! \- b4 U
  550. LDA #$00
    ; k! V1 F! U1 }9 K3 }
  551. STA PPU_STATUS
    ; n- B0 v+ u% R6 Z
  552. STA PPU_MASK
    & @! F; i. ?: _. j0 o8 X
  553. STA JOY2_FRAME: a5 `! _7 `4 @9 N8 r7 W

  554. % W' P" |; v1 \0 x* S) P  I
  555. STA PPU_SCROLL
    7 ?- j0 G8 N8 z0 |2 O! \/ ^9 \* Y
  556. STA PPU_SCROLL7 L0 U& F/ X6 ?6 s

  557. & p& U  g7 F/ G% H3 l8 _
  558. ;==================================================
    ; p8 o/ {0 _8 |
  559. LDX #$FF
    ) y$ X2 @2 a3 ~# @6 @
  560. TXS
    ' o0 l; p# p+ {  _

  561. * Y, c: a4 v5 E7 F; `0 T
  562. JSR Init_MMC3
    9 _/ y* [! C. `' J

  563. * E* }7 g  J+ R. Z: Q
  564. LDX #$02- R8 K. k: D- @, U$ w  }+ Y
  565. Check1
    1 R# M3 D. C  u; E$ V! }5 K
  566. BIT PPU_STATUS
    ; r( R6 Q, J2 Q1 u8 B
  567. BPL Check10 P3 M6 j. J: z3 h1 s
  568. Check2( t* e! ]! D2 |! Z* M
  569. BIT PPU_STATUS
    1 j' V) x2 X$ h% j5 u
  570. BMI Check23 o: u9 k6 Y( Q9 J
  571. / |3 k8 o) Y. }# k( N
  572. LDA #$0F
    2 e$ t$ o: T9 C3 Z( `6 i
  573. STA APU_STATUS, \; ?0 k4 H( X  `$ D1 m3 q) k4 x
  574. LDA #$C07 K( j" z/ q1 B$ x. x
  575. STA JOY2_FRAME) U) M* p/ C" P9 ^0 b9 l
  576. 3 i( Z# r+ t" s* Q2 H: m- _, _
  577. LDA PPU_STATUS
    0 c4 ~! _. C# X' v. q0 o; F
  578. LDA #$10
    5 F6 |7 Z1 _- p! e$ m2 L
  579. TAX. @6 j$ P* d! c  d$ S
  580. Check3/ t) r- u% N1 m2 v3 T/ ?" y7 b
  581. STA PPU_ADDRESS
    / O& M8 K  X0 O) B+ I8 Z' o+ r; Y
  582. STA PPU_ADDRESS/ d1 S' \: S8 o: x; H
  583. EOR #$00- v  W$ P% }$ T6 P  X* f7 {* Q
  584. DEX' c; u1 Y! H: H! ~
  585. BNE Check3
    ' K( a1 T/ }- g+ D- h3 r
  586. ;==============================
    : l1 Y! z  P7 o) G1 m
  587. ;调色板清空
    , k& Y5 F% ]4 O+ W
  588. LDA PPU_STATUS. ?, ^- J' t6 _3 m' W/ g' A& O( R( w
  589. LDA #$3F' P1 j8 }1 S1 a+ u
  590. STA PPU_ADDRESS* N% H. }5 |) Y: r2 u( z& |4 P3 w1 A
  591. LDA #$005 z5 [9 f$ o; i# J, N% C/ m
  592. STA PPU_ADDRESS! V) Q9 s! `. C% c! s  n( C
  593. LDA #$0F- [; M% |8 ~5 \8 o9 y1 {4 B* c
  594. Palette_Clear
    & c+ ?7 E/ v. P& m% l2 v8 S
  595. STA PPU_DATA
    8 v4 g; [9 z0 ~* |, i
  596. INX
    ' l' H6 M3 ^4 a8 G2 _4 C
  597. CPX #$20* {4 F6 n9 `% v6 P! h2 x5 Q& N
  598. BCC Palette_Clear0 o9 o, T  E' ]! f4 V
  599. LDA #$00
    : }! e: Z' E5 u7 n& c! _" ]
  600. STA APU_STATUS; h6 [, W, r" q) g# H7 M% }

  601. . V  ?/ }; r8 z0 {" _
  602. ;==============================
    , p$ o' \: \/ N- w
  603. ;RAM初始化
    . q  Z3 a: w, }3 `- c9 z. W
  604. RAM_Clear_All# }1 N$ f) `& b- O/ |! b  ^; @
  605. LDY #$000 w5 ?, X$ |% H2 E5 j9 M
  606. LDX #$08/ g1 {  _* X1 ?
  607. LDA #$00
    ; R; m/ t2 D0 n# p
  608. STA <$00* N3 ~& t- B5 x0 v+ h) d
  609. STA <$01
    2 ?9 S- @1 p2 A4 d0 u
  610. RAM_Clear_All_Start
    3 [; ^0 T- f7 ]  P2 O* a, c% Y
  611. STA [$00],Y& j* x! c5 L: {/ {
  612. INY- T" g, }4 F- ^6 j- D
  613. BNE RAM_Clear_All_Start
    ' K6 K/ H& `) u/ v
  614. INC <$01
    ' A' g0 x. C& l' l
  615. DEX" c% a& Q0 }3 R5 t
  616. BNE RAM_Clear_All_Start
    * N" R; q' j8 f3 O

  617. - ^( R# F! S; p2 N+ X
  618. JSR VramClear" g% ]% ], _+ B& \4 Z
  619. JSR VramInit% Z( r4 Y6 P5 ]' @
  620. JSR OAM_Ram_Init
    : O+ w' |6 E' e& d) B. v7 l
  621. JSR Init_Palette_Addr
    , `" M9 _2 y2 ~' n8 X& s( x5 S4 s
  622. 1 E( g  e9 z2 \- i
  623. LDA #$FF
    8 N! v9 @! m. x6 d9 z# H
  624. STA Use_Ram_End
    : U6 r$ V4 O4 n+ y4 A  Q* \
  625. ;==============================* U# M5 A7 H+ w8 l2 y+ t0 Z: n1 X  Y: B
  626. ;初始化背景调色板
    ( R$ B, e5 p6 z  P- s
  627. JSR Set_Palette_Color6 x. l" x2 B1 f( N/ Z
  628. JSR Set_NameTable_Attributes
    . ^( V4 j( T; |6 W, N5 \4 @

  629. 1 R# y; j+ |' W+ ~% K: G+ `& C
  630. LDA #$000 K# ?% g& d) k* A3 O+ q* P
  631. STA PPU_OAM_ADDR
    + g: r4 ?2 Q' B
  632. LDA #OAM_TEMP_ADDR / $0100# u- R' B0 H" G% ?4 c+ A
  633. STA OAM_DMA& W8 a. S- S- w: v8 w8 _
  634. ' O& s4 Q9 e4 m
  635. JSR Sound_Reset_Proc# J3 E. j5 I: u3 \
  636. JSR Set_Sound_Total8 B8 \: X. s# O9 S1 R/ I; ~; u
  637. $ U* g& a" Q& M) V3 M# \4 u) u# q
  638. Init_Start_Music- a( h- q6 L6 K5 B
  639. LDX #$00
    " K8 m& D& D; g) d" I4 q: B$ m8 o3 A9 `
  640. Init_Start_Music_Write2 u/ r7 `; N' _9 y
  641. LDA Sound_Start_Port,X/ d% k5 `, N& u7 ?$ U* L
  642. STA <Music_Cur,X, u1 ?7 \2 m& Q
  643. INX9 A0 f! X; U. x; y/ z
  644. CPX #ITEM_MAX_SIZE
    ! W1 f2 G* e2 H& ?) ~7 d, L
  645. BCC Init_Start_Music_Write
    5 h5 m9 Q, m) `- s1 t, N

  646. ( r% B7 L1 f8 p
  647. JSR Show_Music_Text  W: P# \8 ~+ s" P
  648. , A/ _; X/ O/ d* {4 {
  649. .IF SOUND_BAR_SHOW_ENABLE, ~7 V7 m1 V/ b5 [0 j$ n+ H4 s
  650. JSR Sound_Bar_Text_Set% \; J& u) r5 O) s
  651. .ENDIF
    6 i6 X! \2 j) C: r4 I6 @2 a
  652. " i, S5 \9 z! \- K* X9 K# V
  653. .IF Track_Name_Pos
    : ]' H5 _! t, o& s* F6 M* b! N* r3 e
  654. JSR Show_Track_Info3 y' E8 l' Q3 q8 ]: v, F4 V& U
  655. .ENDIF/ K% @( I+ g- A$ B

  656. 9 A! a1 U/ a* `8 a4 Y
  657. JSR PPU_Proc' i9 g$ Q; O/ V/ @

  658. % f" z3 W: h3 @9 r) [  E1 X+ o3 I% t
  659. ;==================================================
    # [8 ?4 s6 w7 N; C' I4 _% C
  660. ;音乐bank初始化
    , A  h& L, T7 }3 f, R6 @
  661. JSR Init_Sound_Bank' ~. U, w2 L% W
  662. / ~/ V' S( k; G" _
  663. JSR Music_Show
    % I2 f. O9 E" ]9 S; h; a; T
  664. JSR Time_Show
    ! X& Q# K+ p: m  R2 L$ ]+ |. u
  665. JSR Music_State_Show
    3 u: \: H" N( {6 Q8 f$ K5 U
  666. JSR Time_Delay
    % l, Y! y' p* G% {

  667.   t3 g' `  ^& W
  668. LDA #$01
    ! ]# V1 E0 L! r) N
  669. STA <Music_Stop_State
    ! P3 q7 y4 S: M1 T% Q0 I
  670. 2 y' Z6 A! w. _% J
  671. LDA #$88' b, c2 U  M. y) l/ ~2 }
  672. STA Screen_Ctrl8 E+ h% h& m; o$ t- t: U
  673. STA PPU_CTRL4 L  L8 e- K+ h5 [. n

  674. 1 n" n8 d3 \$ W
  675. JSR Show_Page_Text
    ( Y9 y6 w0 J1 S, ]

  676. 0 ?# |% g& d' j' I
  677. LDA #$10" ^) u* N# H& s; g+ |% F
  678. STA <Time_Wait_Cnt& ?- J8 j# s1 c

  679. # l4 A9 |! f: z: \
  680. Wait_Time_Over
    ' P; J2 @4 X: A! g) C8 u: ]- n
  681. LDA <Time_Wait_Cnt
    % @/ D5 B1 M1 D- M) L+ b4 n
  682. BNE Wait_Time_Over
    2 C) M0 Z1 y9 i" r  ?/ |
  683. ; j+ Q3 r9 a& e! m
  684. JSR Show_Arrow
    3 _* ?  j) U0 k
  685. LDA #OAM_TEMP_ADDR / $0100; f" n7 s1 l( e) `3 }4 ~/ M
  686. STA OAM_DMA9 T" `/ H( U& A) j3 Z5 j# O/ j

  687. 8 ~! y0 k8 \3 W0 N2 w2 S( d! E* q
  688. LDA #$1E* ~! X+ y/ t  x8 A* `
  689. STA Screen_State5 G8 F$ _# }7 V" K8 D1 X5 z4 f
  690. , N$ D9 C8 {# \' B" S+ L9 d+ e
  691. LDX <Music_Item_Cur
    ) j  h, y9 I9 o# |
  692. LDA <Music_Cur,X
    ( Q' x8 `& @% X/ ^$ v, z9 v; x
  693. JSR Sound_Init_Proc% ?; U3 _0 i$ C# {; v
  694. " |5 \3 u) @; u, T
  695. CLI* J5 N5 ^% [, Q+ m6 y9 [' H
  696. JMP MainLoop
    " p* o* k4 W/ k) _- X/ B

  697. + U+ N  @2 i1 i/ a! ^
  698. ;==============================
    1 o. o* M& j: e# O
  699. Time_Delay;延时等待
    ' ^) I9 `3 H' d) ]2 i4 F$ z4 o/ c! L
  700. LDA PPU_STATUS8 f2 v. P# @6 A  C9 F" s9 x8 I# J
  701. BPL Time_Delay
    - y# O+ x4 F+ \3 A  C
  702. RTS
    ; B6 v9 ~8 @" y- ^7 F" h! |2 _
  703. , j0 a+ L. X7 R5 Q& n
  704. ;==============================
    # ]( Q, E: l/ `" }0 K
  705. OAM_Ram_Init;初始化精灵内存* B6 Y, r3 r  \  z' H$ r
  706. LDX #$00
      Z/ o6 Q$ _! h* S+ _
  707. OAM_Ram_Init_Write+ N- I+ C9 c  L2 e. @) q; k6 j( Q$ e
  708. LDA #$F87 \. U  h. F$ W- v9 z
  709. STA OAM_TEMP_ADDR,X
    3 Q1 F# \6 ~$ |3 s1 I+ G$ X
  710. INX
    " ?! N7 M' _& D7 Q
  711. LDA #$F8
    4 M: ^: x4 }8 c% _0 X- z
  712. STA OAM_TEMP_ADDR,X
    ( l7 h+ |+ D/ _% Z6 y1 x6 w
  713. INX% z3 ~! h6 p4 P3 g. k' h
  714. LDA #$00& Y+ j# F  I! A3 I/ ?8 Q
  715. STA OAM_TEMP_ADDR,X
    $ X+ }1 ]& A7 ?
  716. INX
      O6 e: L& h. \) J3 d: p6 a" l
  717. LDA #$F8
    3 `5 Q$ B3 ]" v8 n, g* [6 f4 s
  718. STA OAM_TEMP_ADDR,X! f3 Z: y: f! E) e
  719. INX6 b8 i+ V/ p! {* J  f$ T
  720. BNE OAM_Ram_Init_Write8 {3 L/ y; Z0 Y/ U
  721. RTS
    + m( ?* S; V  U# C
  722. % C0 ~# w* S  `7 s
  723. ;==============================
    3 q# n! i( h- f+ m+ h& P
  724. VramClear;初始化图形内存8 V& u* H( @: W
  725. LDA #$20
    $ X: D( j; l6 P/ [! w0 A/ @
  726. STA PPU_ADDRESS
    0 ~7 w# I' Y" E0 E1 S$ c1 c
  727. LDA #$00
    ! Z7 p  u4 S) P. `
  728. STA PPU_ADDRESS
    " E# V4 l- v6 y/ F
  729. LDA #$00' C, k) U0 X9 Z/ e; h( ~1 g
  730. LDY #$00
    0 l" J' i9 h; P1 D( S% N$ A
  731. LDX #$10  |) {/ g) V9 s, c* ~: R+ h2 h0 _
  732. VramClearWrite
    0 I1 W( v" |% Y& C$ a. Y7 {. s
  733. STA PPU_DATA! Y) t4 R. h5 f! M- t
  734. INY3 t0 m: t) j4 W( q, f( K2 w, j" M
  735. BNE VramClearWrite
    ' O7 F2 }3 w3 m% M6 y/ ^, g
  736. DEX2 s% Q: F' f! p5 c* P9 J& t8 Y; m
  737. BNE VramClearWrite, E; [8 F" f* u! a
  738. RTS
    % Z$ Q7 R+ w, Q2 R% H6 W; T
  739. . X- J3 K! G& ]7 @& |( p  ~! ]
  740. ;==================================================$ d5 U: Q( ]4 T" y
  741. ;设置MMC3图像bank
    % F6 k% ]* |) L3 `  C
  742. Init_MMC3_Chr_Bank
    ; z! S" M% H: f
  743. LDX #$05. r- q% D0 _& p
  744. Init_MMC3_Chr_Bank_Write
    4 V- ?7 s) J" L
  745. STX MMC3_BANK_CTRL" X3 _# ^6 C% j- E, Q7 `
  746. LDA MMC3_Chr_Bank_Data,X4 W5 {$ p6 n8 `9 ]( l# [) e
  747. STA MMC3_BANK_DATA/ [, R2 W0 S9 L* _& j% o" l* J
  748. DEX
    2 n  n( t, J" {2 Q
  749. BPL Init_MMC3_Chr_Bank_Write5 f; B6 Q( [; D! D4 O0 d
  750. RTS
    # g, m5 I& r4 }! X4 I
  751. ;--------------------------------------------------3 j, H$ C; a% a. N4 e5 t
  752. MMC3_Chr_Bank_Data2 q; a& V7 e! x+ \3 ?3 i4 V& l( ?
  753. .DB $00,$02,$04,$05,$06,$076 x# z. o/ g$ \

  754. 9 w& R8 ]: m; |0 ~
  755. ;==============================& h1 ]9 h3 B) M0 c" j
  756. VramInit;初始化图形内存6 N- U# x  ^1 Q  A+ c  _- e
  757. .IF CHR_RAM_ENABLE
      T, c9 _- J) O* i
  758. LDA #CHR_DATA_BANK
    / B4 D: q6 M8 v* q( B- V) b/ h7 k
  759. JSR Switch_Bank_A000- i/ w1 \$ O' Q5 R" ^2 q0 B
  760. LDA #LOW(CHR_DATA_ADDR)
    9 `; A. y2 T3 p
  761. STA <Data_L
    6 N" @8 V$ K. P
  762. LDA #HIGH(CHR_DATA_ADDR)
    / q8 x( ~' l+ J1 t
  763. STA <Data_H
    5 N0 d1 Q7 c& h7 q& s
  764. LDY #$00
    - C6 F$ f; @% Z9 @- @5 [6 G1 x0 Q3 d
  765. LDX #$20
    3 y5 z6 t: j; l
  766. LDA #$00
    0 t, }+ d) D) ]5 t. W
  767. STA PPU_ADDRESS
    6 @# h( O; k. a' U
  768. STA PPU_ADDRESS
    1 e* B3 S$ W+ j4 g. s6 E
  769. VramInitWrite% W) D1 W, c, I0 r" a
  770. LDA [Data_L],Y7 ^6 m8 r& k3 P$ w7 j7 f: H
  771. STA PPU_DATA
    " {: H; u3 `0 c% {* a
  772. INY
    ) M) s, x$ a, C9 W: g  ^
  773. BNE VramInitWrite
    3 V$ t& M. ]* l+ P% P
  774. INC <Data_H0 ]4 x; j' |1 z
  775. DEX
    ; s8 h0 q2 M9 H1 B
  776. BNE VramInitWrite- w- ^$ }8 Y7 E) W+ U
  777. .ENDIF; X! A3 j+ F3 G9 ~( F
  778. RTS* @5 v( s- }% _0 I7 T# w
  779. * Z! ?/ A( c, d: [; W+ D9 j
  780. ;==============================* `4 n7 C1 |1 U7 N
  781. ;音乐切换
    0 b' v% @* s  n8 \5 F, P& @
  782. Music_Play_Change
      \8 ?4 D5 v0 A( r9 J+ a; Y: }
  783. LDA <Key_Once/ ?& A& E, u  _% f
  784. AND #$FF
      v$ a" `6 U: N, y. S; B# E
  785. BEQ Music_Play_Change_Check# F2 F) t: \/ ~$ I, z& d

  786. ! f. Y% T) Q1 ^. _
  787. ;禁用音乐条刷新
    $ t* w5 Y  s: L% `9 c7 z3 Q: u
  788. LDA <Text_Disable_Flag
    ' y  k. D& @2 E" z+ W" \
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME) _0 V/ t6 }  h/ W/ P) X7 u# M# C
  790. STA <Text_Disable_Flag3 u; R4 X, \) M! H8 Q' m+ x

  791. 0 r* |, J  q* \" z- x) w
  792. Music_Play_Change_Check0 S$ i9 D% M* q1 e/ M6 d# e
  793. Music_arrow# F" r$ V! Z: T% E7 q2 P1 |
  794. LDA <Key_Once* g, O5 @2 k* a: m4 _. w8 I
  795. AND #$0F
    ) h% H3 N! {! v$ ?) q7 a. A. v# P
  796. BEQ Music_Play_Change_End
    3 x, G+ g: @5 {2 K  }
  797. JSR Music_Track_Change
    6 k3 ^  ?- b& j7 H; W# o. b
  798. JSR Sound_Reset_Proc/ }: Q5 `+ j4 r* a3 z) Z/ @3 P/ \
  799. JSR Music_Show% D  z7 B4 H& B" S! o
  800. Music_Play_Change_End
    6 ?7 b4 p. _5 {' O- F! P
  801. RTS
    1 N. E& a5 q( |0 R3 O

  802. - ?5 f& E- ~6 q. @3 ~3 Z' ]# K
  803. ;==============================
    $ X4 @  M) {- l1 R7 m
  804. ;音乐曲目切换
    ( e. D/ C, a* B- F
  805. Music_Track_Change# R# \  T4 _: j& v& U
  806. LDX <Music_Item_Cur
    . V4 J5 K4 W+ ]( u, |8 _: D* h
  807. LDA <Music_Cur,X
    : A- n+ k( Q# M0 ]$ p6 g+ U/ ?
  808. STA <Music_Last" {, g7 H/ O. N; Y
  809. Music_Decrease3 _. P! }0 u2 L$ [) j
  810. LDA <Key_Once
    : y' G: ]  H3 U$ B; Q
  811. AND #$42
    $ T3 U. W% X  z4 J0 `- z" q5 {
  812. BEQ Music_Increase
    " S& @. |1 m2 Z; L8 s
  813. LDA <Music_Cur,X
    " N! y7 {" ~' n% e2 g
  814. BEQ Music_Increase
    3 m/ p2 W8 o2 [. s% M" ~1 G
  815. DEC <Music_Cur,X" _" F- \" |7 q  E4 G$ ?9 H3 F
  816. Music_Increase' G' e2 v7 F  e9 V* D; i* i
  817. LDA <Key_Once
    4 d! D7 L$ f1 J1 i9 s& x2 w
  818. AND #$81
    0 T  d9 B0 Z! ]  ^5 V
  819. BEQ Music_Decrease_103 @7 D! L( i  j! b
  820. JSR Set_Sound_Total
    + A4 o2 X( W: M
  821. LDA <Music_Cur,X
    / P  P/ V6 G0 |+ g: u& H3 K3 t
  822. CMP Music_Total8 E# ~- f+ _/ ^5 v! F
  823. BCS * + 4
    . h; Q, f; j, c, G# ]% [, M
  824. INC <Music_Cur,X: S" X% z1 N* W2 _/ x
  825. Music_Decrease_10: B% e3 N; D& ]
  826. LDA <Key_Once4 k; z4 b6 W7 F) d# z5 _  o1 C
  827. CMP #$047 U/ j! T5 H; S
  828. BNE Music_Increase_100 [; @7 O  e+ J
  829. LDA <Music_Cur,X: V% ]1 x4 G( B6 z  O9 D3 |
  830. CMP #10
    $ U% k( L$ A+ w- r8 M" y/ d+ I
  831. BCC Music_Start_Song_Min. O4 x$ e0 J0 N, R+ e/ L
  832. LDA <Music_Cur,X
    9 `3 y4 B, g( B( }& u* f
  833. SEC
    " p# i! q# m7 P; `
  834. SBC #10$ p  `- s) o9 X; s
  835. STA <Music_Cur,X
    3 U5 e" ]2 k  q3 S
  836. LDA #$00
    5 ]8 t  k7 \% l: T" r9 H+ D5 X
  837. BEQ Music_Increase_10  ~5 X# g+ @8 y  ]  X' V
  838. Music_Start_Song_Min6 |8 x8 `  y, @, e0 v4 d0 C% W
  839. LDA #$00
    7 @, n# M% W' C; s9 X
  840. STA <Music_Cur,X
    # ~1 S1 R2 t3 z7 |9 y( X0 t
  841. Music_Increase_10
    ' Z' y  ?# c; h. Q3 t
  842. LDA <Key_Once3 z9 ~& u& [: f
  843. CMP #$08
    * `9 U8 g0 [$ J  A3 \
  844. BNE Music_Track_Change_End* V3 |) R9 q# R! T0 ~
  845. LDA <Music_Cur,X- p( a, e# k5 y# v" s9 b5 H
  846. CLC
    : U: ^) U! n% ?
  847. ADC #100 H9 G4 w, h( L: m' Z+ L
  848. CMP Music_Total
    % I4 s4 Z- m  e4 N
  849. BCS Music_Start_Song_Max+ k) g3 q1 M, a' n9 T  z
  850. STA <Music_Cur,X
      y) ?/ x4 \6 G- p5 ?, Z
  851. LDA #00
    7 V6 D  u. c( ?
  852. BEQ Music_Track_Change_End- |+ s: e4 I7 Z4 s2 j' G
  853. Music_Start_Song_Max1 @1 H, H. i2 a2 T, \2 d
  854. LDA Music_Total
    3 A3 m; w% m% s  G
  855. STA <Music_Cur,X
    7 l1 [1 K5 ?" o
  856. Music_Track_Change_End+ O' H+ `4 x# ]$ b
  857. RTS! s- R, X8 F. W7 n
  858. ) _- F3 T1 x( |) {; S& y6 l/ Q  a
  859. ;==============================+ G" [8 z/ V6 f, z! N4 _
  860. ;按键处理
    - ]3 Y+ l& `/ [* o
  861. Key_Proc, J0 `  f8 z( d
  862. JSR Key_Scan
    8 N. {: I( A3 g, s. y- v6 x" s. K
  863. LDA <Key_Keep
    8 b& ~' W' V  S: \- w
  864. STA <Key_Temp; u' w6 t& r% W6 P8 Y, E( ]
  865. JSR Key_Scan) s( O8 U" ?4 W2 Z2 J! n# j! ?
  866. LDA <Key_Keep
    ' q& `1 g0 v8 K9 K3 A/ X0 _' A+ H
  867. CMP <Key_Temp4 S( k/ O3 y% O+ B. v( y
  868. BEQ Key_Get_Once
    ' q& a# N/ X7 l2 g" q3 u& R
  869. LDA <Key_Kemp
    9 t! m6 q9 y: h" h2 f
  870. STA <Key_Keep
    8 H! N4 o$ E" m0 q
  871. Key_Get_Once
    & G/ U5 b: z  T
  872. TAY
    % T( }4 L& m4 U, p" \
  873. EOR Key_Kemp
    ) f/ f% G8 j% x: T% ?
  874. AND <Key_Keep$ f# B2 ~/ ~' i  P
  875. STA <Key_Once% t' v" H! [& g( {: V* D9 _
  876. STY <Key_Kemp
    1 h1 X3 i9 \7 h1 O
  877. RTS
    , o/ }7 \: X( x. e* n/ X
  878. ;------------------------------2 r; O  P; j/ t
  879. ;按键扫描
    1 H: F  T, k. f8 B7 [5 _$ H# p, _
  880. Key_Scan
    / u- {9 E4 ^' Q0 ]" o$ y7 m2 _
  881. LDX #$01
    9 g9 l( x1 a; _* B3 E: \' f7 i
  882. STX JOY1_FRAME! j7 o6 ~  G5 c5 B4 @, ]3 W* `( M  ?
  883. DEX
    ( S0 b3 O' ~/ s  n: }+ ?8 g
  884. STX JOY1_FRAME& p- `# n* |7 Y0 M
  885. LDX #$089 ]" P2 T) ^$ `. P- q8 j& }8 Z# @
  886. Key_Value
    : {) K7 A) L) b$ H2 e! e  A
  887. LDA JOY1_FRAME
    ) T/ I/ |! u3 u) j4 J4 s( v
  888. STA <Key_Getv, b; j& |+ M: t- Q
  889. LSR A
    " O. g; Q4 U- z! n  n9 n7 p
  890. ORA <Key_Getv7 r2 I& `$ V+ R& i9 T* k. ?& Y
  891. LSR A
      H$ g" y- i3 s/ Y' {( y5 R$ O
  892. ROL <Key_Keep
    9 L8 c9 _% a- u; U% k# X
  893. DEX
    7 h$ g. V( X' t/ u/ W1 O  F
  894. BNE Key_Value
    7 ?* t& G$ j6 X3 M/ s  ]! l
  895. RTS$ T/ B% d$ B$ ~8 z+ j/ b* L
  896. # i4 l! P( }; p% V1 r4 S
  897. ;==============================- {3 c4 E) w2 \( d* ]! P
  898. .IF SOUND_BAR_SHOW_ENABLE
    * z8 L2 U6 U8 R. A! x
  899. ;音乐条显示
    , |6 C6 F( y; F
  900. Music_Vision
    , l; O( P7 a. C" Y, H& Z8 _& y* M
  901. LDA <Text_Disable_Flag* I( R% J$ L- F$ q5 u, P
  902. AND #TEXT_DISABLE_ITEM, Y: [% u/ z# ^7 v5 u$ [1 @
  903. BNE Music_Vision_End
    $ r- x* A" \% w0 Y$ M5 D0 @
  904. AND #TEXT_DISABLE_BAR. i6 K$ N5 \! k& z0 k* a/ a4 X; T
  905. BNE Music_Vision_Set
    2 B1 O8 C6 b; l7 m* i9 d9 P' o/ A8 G
  906. LDX PPU_Cur' M' U0 q0 s5 n
  907. JSR Music_Animation
    1 X# |; Y- p' A; @
  908. STX PPU_Cur8 V. @% p; M. }9 ]# z
  909. Music_Vision_Set
    $ N. ~0 P5 x% M$ f0 i( G
  910. LDA <Text_Disable_Flag3 G( D5 u$ L% O2 ~/ u: \9 T
  911. AND #TEXT_DISABLE_BAR ^ $FF
      M7 S0 ~- c3 K) H# d& W8 r
  912. STA <Text_Disable_Flag. M' ^2 T9 x% t- R# z8 }
  913. Music_Vision_End' @! ~, {+ H. V
  914. RTS
    2 S% T% q4 }% h( B
  915. ;------------------------------, a3 L. ]7 J3 ~& l- l2 }# |
  916. ;音乐条显示处理4 T0 j  ^9 n7 |; R
  917. Music_Animation) x' \$ Y# ^, M3 W2 u7 u
  918. LDA #PPU_MODE_CNT_LINE
    - H/ l+ @" ]6 a, o
  919. STA PPU_Addr,X0 P1 a# w6 r' J) @3 `
  920. INX1 f; t' k  D3 y0 ?- m& }) o
  921. LDA #HIGH(Sound_Bar_Pos)* E; v! ]( R; N+ N- G
  922. STA PPU_Addr,X3 i$ }* d/ f: v
  923. INX' `1 h% ^+ W2 [2 h+ ]
  924. LDA #LOW(Sound_Bar_Pos)1 b, e- B  D8 A* y1 `. l' l
  925. STA PPU_Addr,X
    / V. A+ m# }2 o/ }$ t$ _0 Z" M* c
  926. INX: k% w% ^4 c5 D" ~( g* ], m: R
  927. LDA #$08$ l3 O9 ?5 U* h
  928. STA PPU_Addr,X/ g/ P& e6 s# j; j
  929. INX3 b# ~  S, i- N8 B. z8 @: D  N
  930. LDA Sound_Bar/ U+ T0 R0 V' U% h1 @; c1 P
  931. JSR Volume_Convert# F" J9 G4 L2 l; k% B) n& \

  932. ! j# v# v, |* N
  933. JSR Volume_Set_Cnt
    " i6 [; i7 {* ]" O- i
  934. LDA Sound_Bar+$42 s3 B- X4 R: Y$ e) [) `
  935. JSR Volume_Convert8 e' v* X6 v. w" c" ~. Y# k2 \$ C' Q$ ^

  936. 9 I) h  M, E' V
  937. JSR Volume_Set_Cnt$ ]1 f' l9 p3 ?. l
  938. LDA Sound_Bar+$8
    ' o) |4 J6 w8 h* ^+ p) S% u
  939. JSR Volume_Convert$ N: J* K/ k! g3 v
  940. 7 h( ]6 [+ I$ Z5 ~
  941. JSR Volume_Set_Cnt
    & e; k/ f6 Q, H: p# X. ]$ K
  942. LDA Sound_Bar+$C
    % ]4 m1 D0 ^# I. ~
  943. JSR Volume_Convert
    ) N+ J6 E4 d% [: A5 F
  944. 8 H6 I. H  b8 p: c% X' ~- n6 z
  945. JSR Volume_Set_Cnt; d1 c$ H% g5 I2 I% S5 a$ u: l9 Q* }% ~
  946. ; J/ C3 y8 g4 Y) f8 \! s& j7 [% H# T2 e
  947. LDY #$100 _& C+ O! v2 o) c
  948. LDA APU_STATUS
    5 v" `7 d, n! A; t- x
  949. AND #$10' o2 P) S4 Z; H7 l2 b; I4 a9 i# \
  950. BNE Volume_Count$ d  k# [; Q7 o2 I% t3 c9 t
  951. LDY #$00
    7 n" x! q) g  P5 O
  952. BEQ Volume_Count
    & S6 W$ O( X" Y, e: \
  953. 8 F( E; {1 J  _# o: l) p
  954. ;------------------------------9 @8 v7 i' _) N0 d6 K
  955. ;音乐条处理5 X& p1 i3 \$ r5 p
  956. Volume_Convert- c6 L; z3 m4 H+ Y
  957. AND #$0F/ v& n7 x) @; @( u% j% S
  958. TAY0 e9 |6 v4 G7 ?! @2 x* @  |* `
  959. Volume_Count4 Q1 g, M/ |$ N+ E# ]1 b
  960. LDA #$08
    & a3 V" H. U. y2 f1 n7 a8 ]% y( W
  961. STA Sound_Bar_Cnt5 N4 \7 a/ R" ^) \/ S
  962. Volume_FILL
    / N+ s* W1 z  ~
  963. DEY
    9 {" a5 t8 `: n
  964. BEQ Volume_Half
    . l1 ]- ^- N$ T
  965. BMI Volume_Empty
    % ^0 Z8 b4 Z9 G4 [
  966. DEY
    $ w' q- \% ~+ J9 E  K8 Z
  967. Volume_Full, G; x. i1 V3 w+ b( X
  968. LDA #$16) r6 b6 }1 I$ Y, N8 o4 ~
  969. BNE Volume_PPU# Q' p+ G+ x# G! L" s" `
  970. Volume_Half. n4 v; {8 d. E: c
  971. LDA #$15' D7 s* O7 L' N* k% ?* z
  972. BNE Volume_PPU# G+ N( C  v  T( K
  973. Volume_Empty
      f- O( E, ?6 g- R1 K: C' g
  974. LDA #$14
      Y5 z9 D( u3 X5 t1 d
  975. Volume_PPU
    ; e/ N$ r+ m0 L; m
  976. STA PPU_Addr,X
    " i6 c0 E# A% t
  977. INX
    2 V$ P+ Z  ]: |& q8 K. Y6 O% i" }
  978. DEC Sound_Bar_Cnt
    $ q. o+ ~9 a( q7 T3 {. Y3 D; b/ j
  979. BNE Volume_FILL' L' k& e1 b2 J1 q' ~
  980. RTS
    , w+ C; K7 K+ p

  981. $ U4 M+ n$ V! v: v* K
  982. Volume_Set_Cnt* G4 f8 r( f  j- o5 w6 i
  983. LDA #PPU_MODE_CNT_LINE_NEXT8 w' d0 i) |. |4 h+ V
  984. STA PPU_Addr,X
    % Y& z. B/ }  k: J7 `
  985. INX
    8 N: b+ s. A; c5 @: s& ?) |
  986. LDA #$08
    * X7 S, J, k) a( i2 m5 I% Y6 e! y+ F
  987. STA PPU_Addr,X
    3 D& n* r2 l0 A7 v9 y7 q- a$ g
  988. INX
    " F  n$ l- h" I5 V
  989. RTS
    + N+ K2 R. L3 C% O" ^1 ^
  990. * j$ u) h, U" K& _! g
  991. .ENDIF9 K  m& m2 I( D) \# X
  992. * U" m5 T2 t  R% s7 M! M/ X. l; k
  993. ;==============================
    * ~0 c7 C- R/ n$ ~/ \2 w
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    7 x+ q2 P" B0 q+ x, o1 N
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    ' g- h: p+ H  H$ r
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除0 O+ z% y' i# \( |1 E1 w
  997. ;------------------------------8 L; K4 A  W+ R3 Q/ N
  998. ;PPU处理# X2 V$ a6 r1 y3 `
  999. PPU_Proc
    6 I' ^+ W+ r+ M: D, N6 m( C) M
  1000. LDX PPU_Cur  Q( g0 _8 Q7 j( P7 i
  1001. LDA #$00
    : Y$ h$ ]# w0 K( b- A
  1002. STA PPU_Cur
    6 q6 B1 ?" ]6 S5 ^" Q& o
  1003. STA PPU_Addr,X
    9 c8 z3 f% d6 v# x6 w
  1004. LDA PPU_Addr
    # `, R+ q- H, b; J1 q
  1005. BNE PPU_Proc_Beg
    - ?, t8 [/ F$ x! w6 K3 M
  1006. PPU_Proc_Ret" k3 V/ d  o1 M
  1007. RTS9 M* N0 |3 c. T4 k0 g+ |; r
  1008. # [; z" T) s9 x; c
  1009. ;------------------------------3 u+ }: g! Y, n0 U1 |
  1010. PPU_Mode_Return_Cnt  ;转下行模式# v- v; f+ I- {9 G& v% N
  1011. INX# i9 L8 [$ y" S/ d
  1012. LDA PPU_Addr_L
    8 v- Z' o4 h5 r6 B2 H% d# f* ]
  1013. CLC* R; L+ H1 p0 L' G
  1014. ADC #$20
    4 g$ G- P- @( u, o8 m4 ]
  1015. STA PPU_Addr_L
      v. D" S' J( P$ [) F9 S" D- K: \2 O
  1016. BCC PPU_Mode_Return_Cnt_End( Y7 ]" q$ S9 E( Y7 D
  1017. INC PPU_Addr_H0 y! C0 X# l" _4 X( X
  1018. PPU_Mode_Return_Cnt_End4 d& W6 S. I7 e5 S. d
  1019. LDA PPU_Addr_H4 D$ r" d5 @" i0 X- P! k
  1020. STA PPU_ADDRESS
    6 T3 F4 g# J  S) @! R
  1021. LDA PPU_Addr_L
    ' t5 {0 e$ r' D: i  C% v; r+ n
  1022. STA PPU_ADDRESS
    2 f! u, S. C2 Q7 Z) N- ?
  1023. LDA PPU_Addr,X$ s- Z) q8 c" f3 ?! R$ ~
  1024. TAY
    + m2 a' k6 ~3 [" g
  1025. PPU_Mode_Return_Cnt_Write
    ; G0 n( T$ K$ U9 q- Q, J
  1026. INX
    / W. V# l3 V) M# ^8 \2 w
  1027. LDA PPU_Addr,X  [# u9 h5 }# b
  1028. STA PPU_DATA
    : r  g& m- ^" l) a" Q" K8 U
  1029. DEY4 c4 ?- _( A1 f9 ^/ k9 Y
  1030. BNE PPU_Mode_Return_Cnt_Write
    & Z) Y$ n* d7 P1 x4 I/ Q  c
  1031. JMP PPU_Proc_End
    ) H' s$ C; x( l0 Z

  1032. . l3 b" m0 Q0 o
  1033. ;------------------------------8 b1 ~# t$ z' ~; z. J; ~+ C
  1034. PPU_Proc_Beg  ;处理开始4 s9 K+ k2 T- ?9 I
  1035. LDX #$004 Z+ ]- i3 D% ?6 R
  1036. STX PPU_MASK  d( v% X# M9 _  R
  1037. ;------------------------------
    / }& v. U+ Y3 V6 p5 k
  1038. PPU_Mode_Select  ;模式选择" g7 o' z& f. k. n
  1039. LDA PPU_Addr,X
    - X7 ~1 {( ]9 X& v: O
  1040. CMP #PPU_MODE_CNT_CLEAR
    2 z1 p$ P; a2 s
  1041. BEQ PPU_Proc_Clear
    + b- u- h: ^. h
  1042. CMP #PPU_MODE_CNT_LINE+ z0 R( Q0 q6 D5 }' l3 a
  1043. BEQ PPU_Proc_Cnt_Line
    + a% g' s2 N- q2 r- w5 m9 o: Y: N9 W
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    9 H3 N9 o) B2 D! u$ ^
  1045. BEQ PPU_Mode_Return_Cnt1 a2 T- S* j: |1 f5 F
  1046. JMP PPU_Proc_End_Write* j% q8 p9 B7 R9 ]( }% H
  1047. ;------------------------------
    . ^. ^# I" I' {7 `, T
  1048. PPU_Proc_End  ;单行写入结束8 z% T/ W" |) }" C2 s) i
  1049. INX5 J3 p' p  k; Q3 }$ F. a
  1050. LDA PPU_Addr,X
    : i+ \5 h5 s! U) W2 ^- w
  1051. BNE PPU_Mode_Select
    % n2 d! [" `; p& X; P/ X9 h
  1052. STA PPU_Addr6 I8 a' I3 b8 q& F6 W1 Z3 }
  1053. JSR Update_Palette_Color
    0 h2 u. w) d# \
  1054. : ?7 ^- J6 _; P$ E( D+ P! o
  1055. PPU_Proc_End_Write
    $ Z4 X) q3 \+ B0 U0 r0 s
  1056. LDA #$00  }& ]7 s7 J$ M! y8 O2 L
  1057. STA PPU_ADDRESS
    7 }9 t$ V9 P  u" g
  1058. STA PPU_ADDRESS# b5 i4 t! v, \1 W6 L& X/ D6 Z, Z6 V
  1059. LDA <Text_Disable_Flag
    ( z6 a# T! e6 k! U( D
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF" W% F& d/ k/ t/ D& J' t% Q
  1061. STA <Text_Disable_Flag
    0 K3 Z9 l/ n! ~
  1062. LDA #Scroll_X
    $ \) |* m% q" L
  1063. STA PPU_SCROLL) L$ a- J0 n: Q2 e( r% a
  1064. LDA #Scroll_Y% R: V" B0 W7 I; q" p
  1065. STA PPU_SCROLL
    + `9 Z# @+ X) e. h7 J
  1066. LDA Screen_State2 i" D" d& [8 I0 S) w0 v& U4 ~
  1067. STA PPU_MASK; ?5 s' @# k6 T8 r! R1 [) u; H% \
  1068. RTS
      N' K5 V* x9 C! B6 A! o+ c

  1069.   N2 D" K- D/ R- m
  1070. PPU_Proc_Clear9 P; a2 d3 r& t5 l1 \2 Z3 w2 F% o' O7 a
  1071. INX6 z) {" o6 M; @
  1072. LDA PPU_Addr,X
    ! [$ w. W4 l/ L5 g0 H/ Z) C
  1073. STA PPU_ADDRESS
    9 K- ]9 c" U" G# A
  1074. INX
    4 N; y4 X& `( k7 j2 U
  1075. LDA PPU_Addr,X! n+ z( a8 @2 q+ w& B
  1076. STA PPU_ADDRESS) }, Z: a( ?1 U" Y: q/ p+ V& s3 H1 l
  1077. INX& [+ [" K8 c5 I' d* Z: i
  1078. LDY PPU_Addr,X0 [& e) {+ s" L; `/ \" o
  1079. LDA #$007 {6 D6 C$ {3 ~+ N6 O3 c9 [
  1080. PPU_Proc_Clear_Write. Z7 t! T4 L6 H8 v
  1081. STA PPU_DATA
    . H' q* y0 Q8 [* g  Y7 a+ e
  1082. DEY) M; i# D7 k+ O  _
  1083. BNE PPU_Proc_Clear_Write
    3 I& S, M! ^2 s6 R8 Z0 |! E
  1084. JMP PPU_Proc_End6 R& N& s3 s2 R1 \- ]" s' b" ^
  1085. - C; o- Z& m0 e4 |2 k1 N
  1086. PPU_Proc_Cnt_Line
    / u$ T$ l' P' ?9 g; Z: S- \" X9 l! w
  1087. INX( Y& O* P6 _& G; N3 Z7 s8 S) D
  1088. LDA PPU_Addr,X
    3 y5 C; a( W% P1 ^1 f, L  `  ^- e
  1089. STA PPU_Addr_H
    9 \+ W2 B6 n1 {' p0 D8 }
  1090. STA PPU_ADDRESS
    " i' b3 E' J0 k) k* E
  1091. INX! m8 q! m# N. G1 r
  1092. LDA PPU_Addr,X) F, t* ]% g0 h. h
  1093. STA PPU_Addr_L% x" g+ _# c1 T
  1094. STA PPU_ADDRESS
    ; h1 }8 [  H+ I0 {' S1 \8 n/ r
  1095. INX1 S& R* }+ i) Y5 b
  1096. LDY PPU_Addr,X
    . T4 L+ m# t7 L# U4 C, m1 H# m
  1097. PPU_Proc_Cnt_Line_Write
    ( _% ~" x5 Z! p
  1098. INX
    ! p  ?" p3 j3 K  K) V  T7 Q. ]# }, i
  1099. LDA PPU_Addr,X, F, n8 q4 s* L/ O
  1100. STA PPU_DATA
    / O$ i( \  ]  ]; V
  1101. DEY
    ) r8 D7 D: e  h& P* ]3 x
  1102. BNE PPU_Proc_Cnt_Line_Write: v2 S; T+ M" y' \8 p5 u  A
  1103. JMP PPU_Proc_End9 _  @0 ^  t5 l8 u2 e

  1104. ( Y2 [$ |) e8 ]" _6 D, a
  1105. ;==============================
    7 i$ o4 i% u2 F# z+ }
  1106. HEX_To_Dec;十六进制转十进制" u" B9 z: @  Z7 ?
  1107. STA <HEX_Data
    2 u9 q0 K6 _% C2 a2 ~4 C
  1108. PHA4 }$ q+ t; v4 V
  1109. TXA3 P# J  y' w6 G6 ?- n8 B; y
  1110. PHA# n/ D( q  ~9 g& u6 x# Y* \
  1111. LDX #$00% \( N9 X' J1 E; Z4 g
  1112. LDA #$00
    0 l* J: a& ]7 r7 m$ l1 l* g5 o
  1113. HEX_Cln
    5 m: v; n( i7 v+ d+ T1 j$ S3 {8 ]6 G+ j
  1114. STA <DEC_H,X% Y9 G! i- ~3 {
  1115. INX
    ; J; S2 c- K+ @% l2 m4 R
  1116. CPX #$03/ S# z7 X9 S7 j: P3 c' r5 _
  1117. BCC HEX_Cln
    ' X" x4 P% I" ?; k
  1118. LDA <HEX_Data! J2 i& Y% ^' a7 x% F8 G
  1119. ;------------------------------
    + F4 V! z- u! f- [  X
  1120. HEX_100
    ) n* T1 y2 u! d* a- P
  1121. CMP #100
    : @1 i- a: {3 ^( j$ a3 [8 f9 X6 C9 p
  1122. BCC HEX_10
    1 U, B& s/ e, }( o3 p; L
  1123. SEC: t) \: S; D+ F( z
  1124. SBC #1003 @  |! L, w$ E4 k+ t) r
  1125. INC <DEC_H5 L; ^) C; T; t9 T6 j$ ?! c3 z
  1126. BNE HEX_100' C( g- q4 t  M+ i; W/ W6 x, c' a8 Q
  1127. ;------------------------------
    9 o" }8 N) L! v" r2 g" j0 x. R
  1128. HEX_10
    8 k; B5 G3 ~4 ^# v4 V
  1129. CMP #10
    ( x( H) O! s. P6 I. C
  1130. BCC HEX_1+ Q! e4 ]: W) f
  1131. SEC- D) ~; E  B# g% U
  1132. SBC #10  T6 k2 d# J+ ]  v- y8 n' K! {
  1133. INC <DEC_T  {4 W9 X- U/ n% Z
  1134. BNE HEX_102 `1 C8 M4 w+ }; m1 \7 r6 S& b
  1135. ;------------------------------
    % M1 p& g5 f6 M+ I7 @/ o  M
  1136. HEX_14 i0 {3 ]0 L& ~( o
  1137. STA <DEC_L
    , f/ ^  S8 L7 u4 n  Y, |
  1138. PLA0 l9 e6 {  s6 D) f2 \
  1139. TAX
    + k: [4 c; A9 F/ f3 L! j0 R
  1140. PLA9 x- V: w8 K3 r' C9 H9 }" c. g
  1141. RTS
    ' G) y: [% L. F4 `1 Y0 a6 d+ d! C
  1142. ! M$ H: [3 H& W% n: \' i
  1143. ;==============================
    / T9 Y3 p: T$ R. L% F: v
  1144. ;音乐曲目显示
    / q* W+ o: [$ r$ i1 l# ]  n
  1145. Music_Show
    3 t# _  N% ]  k* O- C
  1146. LDX <Music_Item_Cur
      A( o+ J/ y" W9 q( x7 x$ V/ G) c* o, j
  1147. LDA <Music_Cur,X0 ^" A4 \1 X: D( i
  1148. CLC3 ^9 p6 T; {4 F
  1149. ADC #$01
    6 W5 |5 d* H3 U2 @" S  H
  1150. JSR HEX_To_Dec
    0 a2 X2 p, w( K% f
  1151. LDX PPU_Cur* L0 H) c) z. H4 c! v
  1152. LDA #PPU_MODE_CNT_LINE
    $ z; Z3 @+ h- @- ?  A) C  u
  1153. STA PPU_Addr,X2 }6 V. z  k, f6 E2 [+ V9 G
  1154. INX4 b) h! j" P0 E+ A+ f1 a
  1155. LDA #HIGH(Play_Index_Pos)
    ! a5 C4 r# x! D
  1156. STA PPU_Addr,X
    9 P+ k+ ]) C" y% s+ O/ q/ u
  1157. INX
    4 H- W- e: }  c' C& E" ?: w
  1158. LDA #LOW(Play_Index_Pos)' k: t  z3 d8 j0 X* n  i. {6 v
  1159. STA PPU_Addr,X
    1 L! V- S2 c% E: g
  1160. INX1 `! S) d5 X) B3 c) @  ^7 M$ S
  1161. - S, Y9 ^) b7 q9 C5 C! J1 Q; q5 D
  1162. LDA #$07: u/ V8 U8 M( ?* p
  1163. BNE Music_Show_Length
    * B0 u9 n5 F: r$ m! R; [9 P

  1164. * X& C; M0 \: G" \$ s) n2 o. L
  1165. Music_Show_Length
    3 M5 j& f; i6 k' ]3 C6 u
  1166. STA PPU_Addr,X
    $ ^, v: }, |6 B$ W  m$ P
  1167. INX
    " a; s. F: k3 K0 x8 V" j. T5 r, ~" }
  1168. , e9 Q! j7 D5 c) `3 c- e
  1169. LDA <DEC_H
    / I& \5 p  g( }
  1170. ORA #'0'' o% e/ _! K% p4 n1 }
  1171. STA PPU_Addr,X
    0 i( W2 |. V( g: U
  1172. INX* e' L( _* ~; }! B( y
  1173. - \) ~& A4 p( g
  1174. LDA <DEC_T
      u9 g- v5 [6 m1 ~, }4 c
  1175. ORA #'0'+ r% }6 V+ ?& k2 j% k$ T  m/ n  {
  1176. STA PPU_Addr,X4 W8 w7 }: J0 _* v0 H/ ^* _7 C
  1177. INX& Z& @4 e% j4 v- k
  1178. ) f8 ?/ w. R# k/ N6 s3 e6 K
  1179. LDA <DEC_L
    ; ~4 U! t* H' r2 r
  1180. ORA #'0'9 M8 u+ o3 U. d+ H% W" }
  1181. STA PPU_Addr,X
    8 b" [$ k2 `# R) ?9 w
  1182. INX
    * ?! S: I0 n( A: G% _  V0 \6 S

  1183. 4 R& p! y" l! W0 V
  1184. LDA #'/'; c/ \7 z* u  }* Z* b8 X9 @7 V- o
  1185. STA PPU_Addr,X
    & q& z; y/ \1 ^  `. y& l) `, D
  1186. INX
    0 W4 |8 n8 n. @% y
  1187. Music_Show_Total
    % a& [9 \! u! G8 ~' f; A
  1188. LDA Music_Total
    3 y; Y. K2 g1 L$ j& q/ ]1 h
  1189. CLC' O9 P6 @1 {0 u! r' f" x0 ^' h7 t
  1190. ADC #$011 l2 o1 s/ e* s- R$ s0 t* u
  1191. JSR HEX_To_Dec% r4 t' ]7 \# [: p8 ]7 f4 |  V3 p

  1192. 3 k# ~2 F9 i4 W) G  v
  1193. LDA <DEC_H( g; Q& h: e+ w' ]( O0 ?0 V
  1194. ORA #'0'2 F. Y: Z& s/ Z! K! _+ J$ K6 {
  1195. STA PPU_Addr,X
    0 n9 ?' r" A( c" C* C% g. v
  1196. INX
    5 A0 |5 G) K' I" [( ]& N3 C
  1197. ; `; ^3 Y+ Y$ `
  1198. LDA <DEC_T
      g$ K$ r9 O5 e
  1199. ORA #'0'
    3 i; _$ C5 J# w" P
  1200. STA PPU_Addr,X
    / C  D" T) G/ n8 f0 i9 V  }
  1201. INX
    - o( [; f% m/ x) j& z0 @) Y# v
  1202. * P7 {' c% j0 n, L8 r  w" y  s
  1203. LDA <DEC_L
    4 S8 t9 p; q" Q8 V1 {1 C
  1204. ORA #'0'
    $ v4 z# E" ^+ p( x
  1205. STA PPU_Addr,X
    7 j6 a0 }) G1 T
  1206. INX  [: d4 z" q& ?- C# E
  1207. " N0 g. t# X# i5 a3 B
  1208. STX PPU_Cur+ k4 o& _4 ]' @- o; G
  1209. Music_Show_End
    # ~2 e# h. {+ V/ D
  1210. RTS5 K; u9 }$ h7 G  h

  1211. * s8 E( k. s; g4 h
  1212. ;==============================/ E* G8 F" _* q( v2 D+ c
  1213. Time_Show;播放时间显示9 k6 T2 J! R* S" ]; I& O
  1214. LDA <Text_Disable_Flag
    2 O8 p5 ~5 v+ z7 Z( W+ i  y
  1215. AND #TEXT_DISABLE_ITEM
    7 [" p2 z" e4 V! q# ^) ^
  1216. BNE Time_Show_End
    % P- V1 k+ k, Y6 A1 [
  1217. AND #TEXT_DISABLE_TIME
    $ G/ e% B' [4 n/ ^* m
  1218. BNE Time_Show_Enable
      d, V" |( {3 ^! I" a6 ]9 m: c
  1219. 9 p( q; p  s  p$ `# ]8 |
  1220. LDX PPU_Cur
    5 \8 V3 Y  w, F5 V
  1221. LDA #PPU_MODE_CNT_LINE; K+ u4 D* u# q8 ]4 I8 j
  1222. STA PPU_Addr,X
    1 M% h7 H- q+ Y: B7 ]0 E
  1223. INX
    % u4 r) l/ a1 Y# Z
  1224. LDA #HIGH(Play_Time_Pos)) B+ u/ L5 Y3 A1 {. ^- r! O, J
  1225. STA PPU_Addr,X7 f; V" b8 i( B) B
  1226. INX4 p0 B6 S" J9 T4 U9 v4 v
  1227. LDA #LOW(Play_Time_Pos)
    9 U. E# {- J3 y8 a8 T$ V$ H: f8 l6 H
  1228. STA PPU_Addr,X
    + v* d, W7 e7 @2 Q) u. @! L
  1229. INX( u. n4 m% Z0 b( E! |* F; d  t
  1230. LDA #$08
    6 }* @6 |7 h; D8 c
  1231. STA PPU_Addr,X. c3 H% N+ r' J8 \0 g4 z- c8 Y2 ^
  1232. INX
    ! s; D; B2 f, O" R! a8 _( B
  1233. Time_Show_H
    % `" C0 C+ K1 M6 ]5 m4 s: F2 o# b! {
  1234. LDA <Time_H, Y. }% T( Z  U0 W% }9 N" `
  1235. JSR HEX_To_Dec" H& t! z( l- R( O, t/ c. E
  1236. JSR Time_Digit
    : s5 j- H& L4 c6 n: K1 V
  1237. LDA #':'# j5 i# `* n, N- ?) b
  1238. STA PPU_Addr,X( r) T" q) q: A* @# c! O
  1239. INX) Y7 `6 X& I- ^0 H& a, {1 d& i
  1240. Time_Show_M0 L$ H: B6 V, D# r) S
  1241. LDA <Time_M
    ( {# _# ~- c: U( p, `, [+ y  y
  1242. JSR HEX_To_Dec# o5 D# k* h" M' A( ?
  1243. JSR Time_Digit
    & F* q5 X" A$ v1 _2 G- c
  1244. LDA #':'
    * X3 F1 G: v. p# @8 w0 l
  1245. STA PPU_Addr,X
    8 C+ F4 ]* M$ U: y0 t/ P6 L- G) }
  1246. INX8 I/ d- i# j4 n% d
  1247. Time_Show_S
    % G0 r$ u" F' ~1 z: ?8 u
  1248. LDA <Time_S0 R* E) @; R; ?9 j2 {$ s
  1249. JSR HEX_To_Dec5 G& \2 y" y! W
  1250. JSR Time_Digit! d( z7 b5 y/ B4 N2 q  _7 n) t
  1251. STX PPU_Cur* X* h) R. I7 T9 ?4 X" N
  1252. Time_Show_Enable
    2 K2 s! Q* X3 _) y
  1253. LDA <Text_Disable_Flag0 s3 B6 F5 Q4 d" d9 c! Z
  1254. AND #TEXT_DISABLE_TIME ^ $FF4 q1 M, C2 d$ H
  1255. STA <Text_Disable_Flag
    % U+ m( J9 r+ d3 C+ R
  1256. Time_Show_End
    0 y% G" ?( |& A3 }# C# `" W8 I
  1257. RTS) v( P  \% ^5 T/ V0 w# N
  1258. / x; E# b5 P' s& e2 `7 n/ j
  1259. Time_Digit5 s9 e1 r' s% z' y( k
  1260. LDA <DEC_T; V( M3 V8 `( N
  1261. ORA #'0'
    ( t/ w( n2 m$ O  s0 D4 B( R* }
  1262. STA PPU_Addr,X1 _8 k0 q$ Z4 L& E( c  K4 z
  1263. INX: ]) o* E* \% B& ?
  1264. LDA <DEC_L
    / G) y* {  B! \: |
  1265. ORA #'0'
    $ W2 R/ P2 h0 |5 A7 @: y9 d
  1266. STA PPU_Addr,X
    1 x- R: v% c% a5 U
  1267. INX
      P- b6 A8 x3 Z  M( M# v) p
  1268. RTS
    2 ^6 t$ w0 ], A  n

  1269. & l0 k: H/ m1 Y6 a- S9 O
  1270. ;==============================1 ~; K% d2 K! k# y9 \
  1271. Time_Count;计时
    4 P5 G( d3 \0 y/ i* s# d6 H
  1272. LDA <Music_Stop_State
    ! l/ Y$ E' x  Z) L6 n2 O
  1273. ORA <Time_Wait_Cnt
    , n+ q! Z/ M9 t) h
  1274. BNE Time_Count_End' M5 ^4 q/ y! o
  1275. INC <Time_Cnt; `4 C$ M/ P* m+ d1 g
  1276. LDA <Time_Cnt
    , ~) k" |! T. a8 i+ E
  1277. CMP #60" m4 {/ B+ ~- I
  1278. BCC Time_Count_End8 z6 E3 A1 k. j: V" G! t& t
  1279. LDA #009 ~. T: \, }9 F! H/ _# C$ E* U
  1280. STA <Time_Cnt
    3 j# [" z8 q: M# U- W
  1281. INC <Time_S
    % R' z5 O  G& q* W
  1282. ; ~' ]" z( s6 i. H! m
  1283. Time_S_Cnt
      U+ [. E! `/ d
  1284. LDA <Time_S; Z) R8 a: n# P. X9 q3 F
  1285. CMP #608 e& z9 g* }  l- s, [3 Y
  1286. BCC Time_Count_End
    1 _% a7 g+ j0 {2 x* W8 K; c
  1287. LDA #00
    2 u4 B. S' V4 C) L& b6 J, L# K
  1288. STA <Time_S
    4 @* i6 d( [: j" T/ |/ m
  1289. INC <Time_M
    0 ]6 Z. F1 o; Y# t' h

  1290. 0 f/ v6 }! ?1 n" y, k3 |$ t1 M; o' ~
  1291. Time_M_Cnt# u# Y+ G; F$ _6 w8 \
  1292. LDA <Time_M
    0 Y6 K: X/ j1 K8 a: ?. P) p
  1293. CMP #60
    8 W1 Y; \2 T$ }* ?
  1294. BCC Time_Count_End
    - U& Y& X0 m3 }" {# r
  1295. LDA #00
    9 S/ |- x, x4 s! H, T
  1296. STA <Time_M
    6 x+ r* Y/ P/ H0 h0 R
  1297. INC <Time_H( V& e3 r+ a: E- r0 L4 Y6 B

  1298. . ?/ R8 ^( P  }$ }( v
  1299. Time_H_Cnt9 E% S: M" ]7 h! T" ?
  1300. LDA <Time_H( D6 X5 I8 V: ~9 y" i
  1301. CMP #24
    . t* a5 M1 ^- h7 M1 S2 U
  1302. BCC Time_Count_End
    ( i9 _5 }2 V# o, [1 g2 X
  1303. LDA #00
    ! _/ `. n: o# _7 a  q' A( X7 x9 V
  1304. STA <Time_H4 A  L8 i! E/ Z' z8 `& H, T  ^
  1305. " R% @) G; o$ I( q* U$ E
  1306. Time_Count_End
    : ~8 L: y7 Y; s' }) _
  1307. RTS! N2 {, n( R; `2 ?7 Z

  1308. ; h+ f9 O3 L. ]9 P+ o; z/ R+ l
  1309. ;==============================
    . b+ F  Z) C% X9 ^  J
  1310. Time_ReSet;播放时间重置
    * i9 E5 O$ J, `8 p
  1311. LDA #$00
    ( w+ Q  |/ e9 K3 c+ s0 T; t
  1312. STA <Time_S
    $ l/ T+ f% ]% ~" j% J
  1313. STA <Time_M
    8 X1 W2 N) t1 Z  r8 _1 z7 G
  1314. STA <Time_H
    : _+ k/ T, E+ m" E* U$ B/ f6 y/ ]
  1315. STA <Time_Cnt3 j: _" x7 }- `: o) {! c5 \
  1316. RTS* d! [- Z* a# s- F- P# }2 u+ q
  1317. % l; q8 e5 G" T
  1318. ;==============================
    1 M. e, B, y! p
  1319. Music_Bar_ReSet;音乐条重置
    - Z$ _! i+ z; f: b
  1320. LDA #$00
    + \8 D) f# E8 B+ k- B* d) W7 V+ o
  1321. LDX #$00
    ; I1 J) r& a  A% F- ~0 Y
  1322. Music_Bar_ReSet_Set
    2 t! b  k; d5 C
  1323. STA Sound_Bar,X$ W  C" L: `2 |0 c
  1324. INX1 M, U$ `% @! b
  1325. CPX #$10
    . C3 p0 j* @( M8 [" ?
  1326. BCC Music_Bar_ReSet_Set0 y7 V2 V3 Y! e, T* j  m
  1327. RTS
    2 `0 F2 u* }! ^4 \! Q3 h

  1328. 8 a* d. X5 k2 y2 |: {
  1329. ;==============================. V2 M. X" k$ i, ]2 u7 U( Y% Y
  1330. PPU_Data;PPU数据写入' f! A! N8 f8 q$ s( o2 z! j
  1331. STY <Data_L
    + z$ ?$ L" W, E, A
  1332. STX <Data_H
    ! a% I/ k1 m4 W6 Y8 B' Y8 L
  1333. LDY #$FF8 B# Z% ?" N2 U# C& Y2 @
  1334. LDX PPU_Cur
    . B+ ^$ T4 `  A/ x, @9 l/ J% A# I
  1335. DEX# |( l5 m/ C. d! b
  1336. PPU_Data_Beg% W4 C% ?! d: F- ^
  1337. INX
    # B! Y! M# ]" M4 {6 n
  1338. INY' [- n: d+ z% b) _
  1339. LDA [Data_L],Y+ s7 q" `& A2 R6 M" e+ g7 m
  1340. STA PPU_Addr,X
    * @/ a) J/ X5 A5 g
  1341. BNE PPU_Data_Beg: E& Q: c7 T. a4 {, G1 H( Q
  1342. STX PPU_Cur
    2 Z$ R( d1 o) _" c
  1343. PPU_Data_End
    : \& p7 q  }9 |& k
  1344. RTS6 j! q1 z, {' E4 u/ y. j
  1345. , _1 x5 X: ]; b: P5 ^! c4 l; G; m
  1346. ;==============================, g) d$ V- P, W% ^% O! p- h4 e
  1347. Music_State_Show;播放状态显示! b8 x2 Y! I# u* z$ g
  1348. LDA <Music_Stop_State( h* [6 F& _; @' |% d6 z; p, D
  1349. BEQ Music_State_Show_Play
    ! m' e5 G7 L7 i) d/ p% ~
  1350. Music_State_Show_Stop3 i, s2 {9 K* z
  1351. LDY #LOW(Music_State_Stop)" Q# z, \, t- Y& {  _  C9 y
  1352. LDX #HIGH(Music_State_Stop)
    2 S2 F6 e0 G+ ^
  1353. JSR PPU_Data  }- ?! z& S# k  D7 ]7 |% e
  1354. RTS
      y! p5 \: C* n* w- _* y
  1355. Music_State_Show_Play
    6 V$ N, _; h( x6 \" G
  1356. LDY #LOW(Music_State_Play)% k1 a7 O7 a! l* @& |
  1357. LDX #HIGH(Music_State_Play)1 D' v4 q- m) z
  1358. JSR PPU_Data
    " @: F6 {& K1 s2 Q4 x; m) S
  1359. RTS
    , B! w1 T! o. b3 L6 }$ @
  1360. 4 Y' Q+ r- ?& O* X+ E, ?
  1361. .IF SOUND_BAR_SHOW_ENABLE" j/ F# H- I6 E
  1362. ;==============================) ^. F0 m, L0 \& ^
  1363. Sound_Bar_Text_Set;标题与音乐条初始化/ J5 v. @( F. i# \' x
  1364. LDY #LOW(Sound_Bar_Text_Data)
    & u$ T0 z7 b. w# |9 W# M' Z6 p0 u$ o
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    / |# R& f9 y# x7 x9 b! R
  1366. JSR PPU_Data
    : w, I$ j% x! v; i$ O
  1367. RTS( G, b- v  z) y6 s$ P) E8 f

  1368. : Z: U- O" j9 _: c& K2 h( ]
  1369. .ENDIF5 x) Y. n) [1 t. n& U) a9 V- x# G( z

  1370. 1 _$ J* d! C, Z! w
  1371. ;==============================) {0 h: X, B( m8 U+ M, d
  1372. Set_NameTable_Attributes;设置命名表属性5 v5 C. o+ f  t5 v. v5 T
  1373. BIT PPU_STATUS5 y" p0 W- e# _! g1 ?
  1374. LDA #$23
    7 e1 Q! }0 [% c. ~- T
  1375. STA PPU_ADDRESS
    & B# w/ Q& G0 b/ z
  1376. LDA #$C0, j0 Q3 Q. \" l7 N% g2 ]0 W
  1377. STA PPU_ADDRESS/ C' ]) s' S# ]+ {+ U7 A7 E
  1378. LDX #$00
    : y  F& e! B' Q0 h- `/ U& ]. V
  1379. Set_NameTable_Attributes_Write. H3 p) r! l7 Z, N- F! ?
  1380. LDA Palette_Attributes,X, t: ]+ T* ^5 G( o1 y
  1381. STA PPU_DATA" G  K9 B0 x( V, Z+ r; ?. ]
  1382. INX
    8 k* P2 D8 I5 d& B" o3 A6 R1 Y
  1383. CPX #$40
    4 n: n, U) v$ f8 Q& Y: f
  1384. BCC Set_NameTable_Attributes_Write
    ( U5 L4 N- M% K. V
  1385. RTS- P: t! k- x( B4 P2 p3 R: o) N
  1386. 9 q  v7 M& r! B9 g+ \
  1387. ;==============================& I6 ?7 ~$ z2 f# n% B9 ~* U9 o
  1388. Set_Palette_Color;设置调色板数据
    ; ?+ F# d- i: a8 F+ i, S% [& z9 g0 `, S
  1389. BIT PPU_STATUS
      Y! {& I* m3 f& f& v" T+ P
  1390. LDA #$3F
    1 i5 n$ f2 H1 F7 Q% o
  1391. STA PPU_ADDRESS
    * i$ S' n1 W' G  ?' `
  1392. LDA #$00  H) `' L/ z  Y9 }5 p
  1393. STA PPU_ADDRESS
    # s* p9 A1 y( ?4 H( z+ ?) G
  1394. LDX #$00
    - _# g' e: t) j3 t# C
  1395. Set_Palette_Color_Write
    0 K+ w3 }$ j* _; O
  1396. LDA Palette_Data,X
    + Y! I3 A( J! |1 }- T9 C6 U! l# I9 ]+ a
  1397. STA PPU_DATA
    * Y) ]% X$ @2 s, i- [
  1398. INX
    ) n$ j/ _7 f3 z; e  F
  1399. CPX #$20$ n+ U9 l) ~: a/ b+ y* }- W
  1400. BCC Set_Palette_Color_Write2 b( ?4 ?! e: K- o% g% C4 A
  1401. RTS% L% X! s2 B0 h0 F# `. n: r1 w
  1402. + W' x: Q2 }0 i. h5 A. O* @
  1403. ;==============================' e7 ^7 i0 i9 M
  1404. Init_Palette_Addr;初始化调色板数据
    # |% M+ h/ D% O- I& Z* A7 K
  1405. LDX #$00
    ! v1 j6 u/ T- ?
  1406. Init_Palette_Addr_Write* r2 w  ~% z( `, r7 a
  1407. LDA Palette_Data,X
    $ C2 s1 b; y- {/ z: k
  1408. STA Palette_Addr,X! Y6 ]/ V6 l3 n' c  Q/ {/ Q! D4 ^% I
  1409. INX
    " r$ Z8 }+ k0 B) C# N: V
  1410. CPX #$20
    % G0 g% p* k/ o/ o
  1411. BCC Init_Palette_Addr_Write: f' B6 `/ _/ s6 r, b+ v
  1412. RTS
    7 j" V  I" J) |; T. Q! H
  1413. + \& s8 \' ?+ N3 ^
  1414. ;==============================
    7 Y' |  o, j. H! J
  1415. Update_Palette_Color;更新调色板颜色
    & Y8 s6 |0 V$ F- Z! W) R  K( ?0 i$ a
  1416. LDA <Palette_Update_Flag2 F) T# |: L& c2 y) T0 @/ N+ C' y- P
  1417. BEQ Update_Palette_Color_End
    1 [/ H( q, y" Z  r; Y
  1418. LDA #$3F
    : c" I) f$ h8 B# n3 C
  1419. STA PPU_ADDRESS3 g) q. a' f- O  a
  1420. LDA #$0C0 d+ C, n* B- Y2 Z
  1421. STA PPU_ADDRESS
    - |5 w+ {& y9 z4 R4 Q
  1422. LDX #$0C
    , }# B" c" m5 M, p' E$ L  w+ ~& {4 g
  1423. Update_Palette_Color_Write
    3 `. y6 b3 A( C! k* h+ V
  1424. LDA Palette_Addr,X; J# ^+ j5 ]; n
  1425. STA PPU_DATA
    ; Y( E% k" Q5 ?1 \- s
  1426. INX
    ; E- s  a+ w2 C, a) _2 F0 s, v
  1427. CPX #$144 Q0 M  u2 z9 m2 c3 V5 ?
  1428. BCC Update_Palette_Color_Write" ]* B1 }8 ^, y7 C
  1429. LDA #$001 c2 Y/ C) ^& r: W
  1430. STA <Palette_Update_Flag* W4 w  O* Z8 v, g3 Q& J
  1431. Update_Palette_Color_End2 F$ S6 F( [) a- S0 w
  1432. RTS* \4 J0 L3 Z* q8 Y

  1433. - d1 Q3 S6 R+ v7 |

  1434. $ i+ r4 G( O/ m- u1 s* g+ L7 |( _3 [
  1435. Update_Sprite_Palette_Data
    ) k; P! Q! E  t2 T1 p
  1436. .DB $21
    $ _$ R, K- L; N" m7 j- C. u& p
  1437. .DB $21
    5 e: h( r4 H) J8 p
  1438. .DB $11
    7 Z' b  N5 s* J8 F
  1439. .DB $01
    8 ?; Q$ O7 u6 w% |! |5 p
  1440. .DB $01  e7 |( m/ i; F+ F  z
  1441. .DB $11$ X1 c; ~; Q7 K
  1442. .DB $21$ E+ _$ h/ h7 q& h6 z
  1443. .DB $21
    0 ~* q; N6 ^- G% r) {9 L) ^
  1444. .DB $11; P. |8 ~5 s; ~9 W
  1445. .DB $01
    - M( f$ e( @7 j  @) `1 ~
  1446. .DB $11
    ) j' O- H7 z; {1 G, [
  1447. .DB $21
    ' B! k% \. z% a" O$ r5 J# }2 Z
  1448. .DB $213 ^! U$ v3 D( [! V
  1449. .DB $11+ i" H% n( c3 k6 o
  1450. .DB $01
    6 X$ g$ G% \8 U) ]
  1451. .DB $11, P9 D: H$ m3 R2 k
  1452. ;==============================
    5 |1 W; a! a% F% C5 U6 d
  1453. Update_Palette_Data;更新调色板数据2 K( A( |. G9 i+ T% g
  1454. LDA Nmi_Time_Count
    9 }9 R6 b& q8 k, \) N% h
  1455. AND #$08
    2 D# K; }* U; o) Z' }4 I' a
  1456. CMP #$08. j+ ]2 w  `( H2 l
  1457. BNE Update_Bkg_Palette_Data
    1 n. B3 R+ j  R% r* V

  1458. ) D, G' o- L% H: q
  1459. Update_Sprite_Palette_Data_Set
    : w$ z% y& l; B( q2 B: H; d! @) }1 f3 a
  1460. LDA Nmi_Time_Count
    % K% M" P/ D* c* ^
  1461. LSR A/ S! j, l+ z4 j& j! K
  1462. LSR A  i" f2 N, j0 L# u* d  O- K4 l( A
  1463. LSR A
    ' ]3 m# Z! D$ U5 p% h# @$ @. n9 P
  1464. LSR A' x# P& p, L$ l' e: `$ p
  1465. AND #$0F" F9 f9 \' d/ Q( L7 }2 s% _  G: U
  1466. TAX
    + l. t, s7 o# d+ [* M
  1467. LDA Update_Sprite_Palette_Data,X" v! F2 k( H# Z. X" ~! z3 Z
  1468. STA Sprite_Palette_Update_Addr6 w- b; w9 x6 S7 x  y: s
  1469. LDA #$01
    4 h* P8 D- t/ B. x5 I  {% w; b
  1470. STA <Palette_Update_Flag
    & f+ K7 ~( u3 S

  1471. ; ^6 b! }* n& K3 N# E; i
  1472. Update_Bkg_Palette_Data
    3 z0 Y" R0 v/ r+ g
  1473. LDA <Text_Disable_Flag, I7 l, K4 [) C! s% J
  1474. AND #TEXT_DISABLE_RAM
    $ s6 L6 @2 f; U' l: V
  1475. BNE Update_Palette_Data_End$ ^* V  Z5 s3 w' {
  1476. LDA <Music_Stop_State, Z, R% y+ P7 p5 o% G% w
  1477. BNE Update_Palette_Data_End
    * x& Q+ @. S2 L% ?8 `

  1478. 2 R- g  L2 t8 z$ A
  1479. Update_Palette_Data_Check
    7 e. U3 [% v6 m/ \$ a
  1480. LDA Palette_Wait_Cnt
    ( R  ?  {, u) V, m$ ?$ x" ?
  1481. BPL Update_Palette_Data_Check_Over! k! C2 {, ^# H% n
  1482. LDA #PALETTE_UPDATE_INTERVAL' J$ K! D( v2 j$ M
  1483. STA Palette_Wait_Cnt
    + L1 h- `! L4 ~4 h
  1484. Update_Palette_Data_Check_Over
    7 O0 r2 k5 U6 O
  1485. DEC Palette_Wait_Cnt
    7 G% a% i3 t. r; v8 g
  1486. BNE Update_Palette_Data_End
    , N2 e  V$ U8 Q
  1487. + V4 b: `* S3 X
  1488. LDA <Text_Disable_Flag% y+ U* g8 r% c! F; k9 n9 j
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME- i9 {6 n3 n$ J* Q: m4 g4 J
  1490. STA Text_Disable_Flag  U+ [% n- k; `6 t) D" R
  1491. INC Palette_Update_Flag
    8 f9 |/ V+ H8 n% z" e# O

  1492. ' ?/ ]  U& l! Y( A
  1493. LDA #PALETTE_UPDATE_INTERVAL5 N& e- v" q5 Q+ n$ J  X* ?
  1494. STA Palette_Wait_Cnt  |* x" Y: h- X0 S" d7 b( x5 C  R  J
  1495. 3 o$ _5 E' Y) ~0 ^6 ~
  1496. LDA Bkg_Palette_Update_Addr
    # H! f6 i5 F. H$ R
  1497. CMP #PALETTE_UPDATE_MAX
    + K% h3 x' H# M  x' \% W+ F
  1498. BNE Update_Bkg_Palette_Data_Set% X+ F/ e* Y" T1 ]! s) K
  1499. LDA #PALETTE_UPDATE_MIN - 1/ s% m/ [. j; b: F. _
  1500. STA Bkg_Palette_Update_Addr0 X2 ~) o4 B- ]2 n
  1501. Update_Bkg_Palette_Data_Set
    0 N3 A1 t3 c& M6 W' E% h: L
  1502. INC Bkg_Palette_Update_Addr( L( F- a& O/ M+ U! |& l7 Z- U
  1503. : A' N3 }: f0 s( x
  1504. Update_Palette_Data_End
    , e! @. L! b8 N, ?
  1505. RTS
    0 O% X4 }; Q* E4 ]1 J( g7 T
  1506. , S& v4 r# @% y6 Y# q6 ]% u
  1507. ;==============================0 M9 T) z7 P  Y% a- ~% `- n
  1508. Show_Music_Text;显示静态文本/ ~8 C4 G. L6 n0 _
  1509. LDX #$00; K* r4 H+ n- I& r7 W% v0 L
  1510. Show_Music_Text_Set
    ( |& x( u1 h, v/ q
  1511. LDA Static_Text_Data,X( F$ I3 u- X6 z2 f% i! U# ]
  1512. STA <Data_L. P% n, R. G8 b/ ^
  1513. INX
    - R+ ?8 P8 n! d" Y
  1514. LDA Static_Text_Data,X; q4 H: ?1 y4 s0 |
  1515. STA <Data_H
    * N' a4 Q* ^/ a* A6 v
  1516. INX
    / J7 v# y. z- d  w3 ^" g1 X
  1517. LDY #$005 I% e9 u7 \! r
  1518. LDA [Data_L],Y( M- f. I) S: ^# ]7 k1 n# k
  1519. STA <Data_Cnt
    , g# y% z2 f/ l& s: y8 U
  1520. DEX
    8 U+ d/ A" Z5 l' ~; [1 V6 T
  1521. DEX+ |1 c1 g& V: R4 e- ]$ M8 q
  1522. LDA Static_Text_Pos,X
    2 ~  w; J$ Q- y! j0 i
  1523. STA PPU_ADDRESS/ @6 g! g# G: f) L% D  M
  1524. INX; F) h0 G$ h! J  _! p
  1525. LDA #$20
    9 p* q: B; k7 p/ R# @9 a
  1526. SEC
    ! b0 ]9 q7 `  u- b+ u
  1527. SBC <Data_Cnt
    % X7 n* z/ b* @- c/ r+ J
  1528. LSR A
    9 x5 l1 Q$ L7 ]2 X, o- ?
  1529. STA <Data_Buf! w1 O  t- _3 T
  1530. LDA Static_Text_Pos,X: F" b9 U2 i" I' p# }$ A
  1531. AND #$E0
    6 F6 r4 ^1 h. x3 B* d
  1532. CLC6 p  S/ l5 o$ f/ T$ ?- U; b: }
  1533. ADC <Data_Buf
    1 {. N( }/ m' C, W! Y
  1534. STA PPU_ADDRESS
    1 i$ _6 `* C) x0 m
  1535. INX
    6 U2 f9 \/ _2 V% n8 b
  1536. Show_Music_Text_Set_Write; Z. b/ |; V; ^4 ^2 }
  1537. INY$ X( r  P0 X3 M6 o! y+ U
  1538. LDA [Data_L],Y
    3 V- N/ x+ A" N  H
  1539. STA PPU_DATA3 _. U8 H: v) [9 f8 I
  1540. DEC <Data_Cnt
    " c% K6 e5 [/ @) e+ W/ f/ F
  1541. BNE Show_Music_Text_Set_Write
    ' U6 F0 I9 V. d: ]1 `/ q
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    . F! @+ d( O( o: o! F* R* N# o
  1543. BCC Show_Music_Text_Set: g# @) _1 J3 ?
  1544. RTS
    7 K' r# w' n, x! }
  1545. 8 n0 p' `) ^& L+ u4 d8 [
  1546. ;==============================' ~: i- [% T0 {5 N4 ^
  1547. .IF Track_Name_Pos;显示曲目信息* c( {$ Y+ K9 W  F

  1548. 5 S, s5 K0 K# ?3 L: f. l
  1549. Clear_Track_Info, t# r7 d8 J: m! e8 M5 E( [
  1550. PHA
    3 r3 Q2 l  D2 ~  S, ^- o. W
  1551. LDX <Music_Item_Cur" M# i& T2 K+ l$ n+ G  I
  1552. LDA Track_Name_Addr_Flag,X1 w& ^% i6 Z$ j
  1553. BEQ Clear_Track_Info_End_Ex
    , y% [1 b/ \9 P- k9 D
  1554. PLA) A4 x+ b  H+ s. k- j7 H6 D; |
  1555. 2 ~1 ~& f+ Y! ]5 F0 \8 `
  1556. LDX PPU_Cur
    ! n& g  K4 {% M8 k/ X6 _/ H
  1557. PHA
    % ]6 C$ G7 L* J: U
  1558. LDA #PPU_MODE_CNT_CLEAR+ q! c2 n& j) i* X
  1559. STA PPU_Addr,X6 [. G! ~( R4 I" \5 c/ |
  1560. INX
    . l+ }2 m( r/ S( Y/ {
  1561. PLA
    0 g1 W: C: i2 z. z1 H% q
  1562. JSR Show_Get_Track_Name_Center_Pos& b6 C+ K9 K2 w+ n& J) ^
  1563. STX PPU_Cur7 n  a/ c  S, O1 V% }2 W5 o! x
  1564. Clear_Track_Info_End! w  M2 j" y0 C8 q5 Q3 L: u4 q" r( j
  1565. RTS
    + V. T& m4 t. K- s
  1566. Clear_Track_Info_End_Ex9 ?5 H9 i6 n$ @
  1567. PLA' C3 B( u/ ~( T6 [3 ]
  1568. RTS
    7 Z7 b6 d1 a! B1 E; v

  1569. , l/ |9 D, Q" O, V
  1570. Write_Track_Info
    6 u% l( H, ]) o! a5 H; l0 ]
  1571. PHA/ a; C7 y6 j- N5 T2 S
  1572. LDX <Music_Item_Cur
    ( f$ i' G1 H2 ~  Y
  1573. LDA Track_Name_Addr_Flag,X2 y; ~- G. M8 Z. g8 ?9 v
  1574. BEQ Write_Track_Info_End_Ex, O& Z9 r2 R  }8 R- Z9 h. p6 Q" ?
  1575. PLA
      y- A, m) W$ z& ^! W5 g$ t6 |2 I
  1576. 4 K7 K2 M3 I+ j  g* m
  1577. PHA/ t6 i9 k  k1 z
  1578. LDX PPU_Cur
    # @1 K) P; R0 R% Q
  1579. LDA #PPU_MODE_CNT_LINE! H' ?; U  `' t" \8 u
  1580. STA PPU_Addr,X4 A0 d$ `6 i' Z! f
  1581. INX$ f, o2 Z% ~! h- L+ F- z9 u0 L
  1582. PLA
    1 x7 e" I5 D% J1 D; T
  1583. JSR Show_Get_Track_Name_Center_Pos
    + G: q+ P- E% D
  1584. Write_Track_Info_Data( g8 t1 b3 X# ]1 _
  1585. INY0 b' c( j6 z  U, L' E% v# ?: [
  1586. LDA [Data_L],Y
    3 @4 l. \' L0 C1 h1 V
  1587. STA PPU_Addr,X" i6 n+ z) O8 y  _3 {& Q9 Z
  1588. INX! F& H/ T# D5 Q0 y/ o
  1589. DEC <Data_Cnt
    % y; u3 i5 I% g6 o& N
  1590. BNE Write_Track_Info_Data/ o; V/ [! b" [, i& U
  1591. STX PPU_Cur, V  D* f- b4 U
  1592. Write_Track_Info_End6 z% R% x0 w: ?: P$ \/ n( x0 s0 ?; n$ i
  1593. RTS, P& }  j3 y" n
  1594. Write_Track_Info_End_Ex
    + T1 ?" V! O, ]$ X
  1595. PLA& `7 Q  t3 Q* a
  1596. RTS0 t; J# {/ I1 V0 P: N* s2 D

  1597. # S- B) K7 _0 {& _) X
  1598. Show_Track_Info+ h5 Q0 ]0 [9 a6 S
  1599. Show_Track_Info_Clear
    6 K, X9 W0 T, T! ?! ~, Q" q$ m% g
  1600. LDA <Music_Last; L+ J- f" n6 `, M' j

  1601. , l$ r( R- D5 E4 A! K2 _
  1602. JSR Clear_Track_Info
    & h( o( S& D. c. o6 F

  1603. / d$ X* z8 o6 b; a; x- F
  1604. LDX <Music_Item_Cur7 o8 C1 g6 }  D" y
  1605. LDA <Music_Cur,X
    % P1 }+ T" E& W6 E; F
  1606. JSR Write_Track_Info; x+ b! j$ g, e. G
  1607. RTS
    ; f% O# n9 J  q: o
  1608. : R4 O4 G: Y# H3 M
  1609. ;==============================
    . D6 B) ]* N, e
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置: E  w8 Z, A" W3 d

  1611. / M% c$ ?# M; h4 e' D: V. _
  1612. ;取出集合名索引9 J( T3 m# R+ _0 `0 S5 j
  1613. PHA
    7 m0 @$ r( I9 z+ ^* u6 e. c
  1614. " I! j4 z+ P% A
  1615. LDA <Music_Item_Cur
    ) U; N( x1 s+ l8 l/ k2 f  B6 Z% R
  1616. ASL A, T8 a( W5 R( c  L8 C: d
  1617. TAY
      P" x0 E' {# X3 x8 t+ i  n1 i
  1618. LDA Track_Name_Addr_Port,Y
    5 w' l& }5 C& \8 z$ N. A) z4 Z
  1619. PHA7 D. M3 I# q  U
  1620. INY
    - }- W# b3 z/ o6 m4 h& A% l, c% y0 O  k- Z
  1621. LDA Track_Name_Addr_Port,Y  b7 R( g! y# N8 q
  1622. STA <Data_H( F/ I" U+ ~/ S8 W: `( o
  1623. PLA- a1 N$ q* p6 W: r5 [5 N
  1624. STA <Data_L* i( y- V# l6 M, p) U% O3 e. P& ~

  1625. 9 t+ T6 _! h% ~  C/ y% e& Q
  1626. PLA
    7 S5 H) t  Z, ^- {

  1627. 2 t( q6 _# K  l. a
  1628. ASL A& m: ^1 q% x. z8 p7 B, J
  1629. TAY
    - h# W" r; t7 k/ b  i- b
  1630. LDA [Data_L],Y
    7 V3 ~7 T; n6 w! ~  I
  1631. PHA
    % @: C$ [1 j. a( {( e9 H6 ~
  1632. INY
    3 n0 H+ b4 C6 _
  1633. LDA [Data_L],Y1 U  S& ^+ m4 f0 h$ K
  1634. STA Data_H
    8 U! G; q1 k3 |$ O
  1635. PLA* Q6 K( j- J: [1 t+ N
  1636. STA Data_L# T! U5 ^9 x4 l
  1637. . O0 D. A* n4 O3 c- v6 \# r; `" s. W
  1638. LDY #$006 |' R$ ]! r: e! }! U# u% n
  1639. LDA [Data_L],Y
    * Z/ k1 C- ^% M  Q7 L% a
  1640. STA <Data_Cnt0 g. Z8 g! y* x" ]
  1641. LDA #$20
    9 z) }* h5 N0 R% `* c* P
  1642. SEC1 W4 j* t% X# q
  1643. SBC <Data_Cnt
    % m2 L/ K# E  B
  1644. LSR A
    + ^- s2 v$ l* R7 W- Q
  1645. STA <Data_Buf: ~# @' z1 P& s- d& K
  1646. LDA #HIGH(Track_Name_Pos)6 E+ @) v: p% X6 j
  1647. STA PPU_Addr,X
    9 W. D$ V& ]# F9 \' q5 S+ s
  1648. INX
    * H9 b1 J( c+ F8 h2 c5 o
  1649. LDA #LOW(Track_Name_Pos)7 S$ P0 l8 m5 P+ [
  1650. AND #$E0
    5 Z3 P+ n. b* e* w! t" d7 c
  1651. CLC+ \* U8 h- c3 a! ^# f  q
  1652. ADC <Data_Buf- @- _; d- W. W
  1653. STA PPU_Addr,X
    * |$ O( g9 z  K
  1654. INX
    + P' a; l5 F* q' S8 ~) H6 _, l
  1655. LDA <Data_Cnt: ?; q7 |% [9 x: ?3 F, L
  1656. STA PPU_Addr,X
    4 N- s1 e8 K$ |6 c$ c0 P" d
  1657. INX" l5 L( \( N5 G- E+ ~
  1658. Show_Get_Pos_Center_End4 V$ U1 i, ~1 ?0 j) |0 F' D
  1659. RTS- s0 m9 h$ `' y4 n7 ?  ~
  1660. .ENDIF2 M9 A7 o+ }8 `- Y$ f: y
  1661. 6 N% ?6 @5 x. Q1 Z4 ?. a
  1662. ;==============================2 D' b, o  c9 j! t* z4 b
  1663. ;音乐端口清除0 e: h2 }7 U; x7 K
  1664. Sound_Data_Clear
    : {4 D; ?6 d5 M, `1 M
  1665. JSR Sound_Port_Clear
    ) l! _9 v& A( a8 l8 b' r
  1666. JSR Sound_Ram_Clear* x( I& t" D* n2 C
  1667. RTS
    / E1 v" Z6 y$ e$ f* b7 w
  1668. , i7 n1 W6 S- [
  1669. ;==============================5 [/ b1 J% \0 ?' i$ ^7 a
  1670. ;音乐端口清除
    % {1 Q0 ]# L. s+ G
  1671. Sound_Port_Clear
    " l+ s. M4 h, t
  1672. LDA #$00; E% r/ D2 J* Z9 }4 a
  1673. STA APU_STATUS
    5 ]) g: b& i  O: d8 \4 D
  1674. LDX #$001 C4 {$ H) s/ ]% z9 V$ B
  1675. Sound_Port_Clear_Write$ i6 q7 S# J) z9 ?5 V
  1676. STA $4000,X
    ) `* a+ N! R& ?
  1677. INX
    - P" H/ v8 |1 K1 L2 f
  1678. CPX #$14
    ! W3 Q# Z$ {+ k$ }+ O
  1679. BCC Sound_Port_Clear_Write
    8 ]4 l3 u/ C( G3 X5 k: S; i7 G
  1680. RTS/ T* H9 V8 |) c% S
  1681. ) U. V5 k- _7 G4 }, _3 V- a; p
  1682. ;==============================- i& D# U; B$ f( o8 a8 O
  1683. Sound_Ram_Clear;RAM清除$ V- `5 U5 Q! t3 b1 C
  1684. LDX #$00  M/ ]& X9 h$ S+ @& I1 W
  1685. LDA #$00  T3 ]7 i% [0 F& _# ]3 \! B4 c
  1686. Sound_Ram_Clear_1
    4 I* ~8 m. T) N! p& q5 C- u4 e
  1687. STA Sound_Ram_Addr_1,X$ P/ O1 V9 r2 S! y
  1688. INX# ]0 r1 Y, c$ g& T4 ^
  1689. CPX #Sound_Ram_Addr_1_Size2 c0 ]/ @7 X$ S2 u
  1690. BNE Sound_Ram_Clear_1
    ) P6 ~* Z! b6 G
  1691. LDX #$00. M2 P' q& \/ F# n8 p
  1692. Sound_Ram_Clear_2& }/ W- J! u& [6 H; z; m; A
  1693. STA Sound_Ram_Addr_2,X
    * `! h2 ^8 l/ d! O" R; t
  1694. INX
    # W6 S0 m1 b' e" p* }5 R0 ~$ v5 @
  1695. CPX #Sound_Ram_Addr_2_Size
    ; L" F, S! l6 H+ k
  1696. BNE Sound_Ram_Clear_2
    ; g3 w9 Z2 J! P2 A
  1697. LDX #$00
    ) k( a. ~9 h2 {9 w
  1698. Sound_Ram_Clear_3" D4 W) X7 V- k# |; }/ k
  1699. STA Sound_Ram_Addr_3,X; {1 A7 G+ N2 C1 g
  1700. INX
    ) A9 E# N( _' H8 \1 ?7 C
  1701. CPX #Sound_Ram_Addr_3_Size1 W( ?- J% i  H; v6 |
  1702. BNE Sound_Ram_Clear_3
    : w; I, p* z6 o3 |$ t- I
  1703. LDX #$00  N! o; }: Y% T, I$ m
  1704. Sound_Ram_Clear_4* W2 J+ [/ J" B! a/ q  ~
  1705. STA Sound_Ram_Addr_4,X
    7 C6 ^- S1 g- s
  1706. INX0 F  B& m, ?( G3 ]
  1707. CPX #Sound_Ram_Addr_4_Size
    6 [# q; v* _7 P, v+ n
  1708. BNE Sound_Ram_Clear_4; \, I/ r8 Y. c
  1709. Sound_Ram_Clear_55 p; O6 l, z' X
  1710. STA Sound_Ram_Addr_5,X
    / N  s! A* i) i& O4 n
  1711. INX
    - ~  B' w# S/ u
  1712. CPX #Sound_Ram_Addr_5_Size
    $ i4 D$ u# h8 n0 i/ M: m- _. R
  1713. BNE Sound_Ram_Clear_5& @- V, t8 T& N
  1714. RTS
    % `5 G3 v7 P+ W, m) }- J+ R
  1715. " [6 V2 h" s$ y: A* X7 U) a/ s
  1716. Get_Music_Collection_Name
      T# P: i/ [7 o7 s, F8 J" c
  1717. PHA; Q3 p, ?( P7 ~/ H
  1718. LDA <Music_Item_Cur
    & W$ r. ~/ b* ^* E
  1719. ASL A
    & i  I2 Z) p; p: s
  1720. TAY, W+ @5 M7 X& J8 p
  1721. LDA Music_Collection_Name,Y$ l0 c: G5 C0 Y  u7 O9 O' [
  1722. STA <Data_L* d9 V7 ^$ g) a2 U
  1723. INY
    + L% Q+ A* F- x5 O
  1724. LDA Music_Collection_Name,Y
    - Y/ W8 q/ N6 Z1 M
  1725. STA <Data_H
    * c: L& t. s3 I5 G5 e
  1726. PLA
    0 C' e# \: M6 |+ J7 Q+ }
  1727. RTS
    . q0 {" y  f/ |5 Q* [

  1728. * \$ \$ `8 M) ]- P9 k; M
  1729. Set_Sound_Total
    , t* `- }0 \3 B
  1730. LDY <Music_Item_Cur
    ) i1 N+ i1 Z4 H: S0 v8 w
  1731. LDA Sound_Total_Port,Y/ N5 Z/ S0 j1 d, l, N
  1732. SEC) {3 p0 H6 \3 L8 O. M8 H; n
  1733. SBC #$01
    $ |0 z. r; K$ F4 L- G( O, g# B3 Y
  1734. STA <Music_Total
    . h! ~: P1 p" K  w
  1735. RTS* N$ u+ n. s2 A
  1736. - r7 ^3 ]5 X8 l/ z% g
  1737. Get_Sound_Start
    ) Z2 ?- r# W8 M  i. Q
  1738. LDY <Music_Item_Cur
    & w1 C/ z  Q  S6 U
  1739. LDA Sound_Start_Port,Y
    1 P  z! S8 e6 F* J: i
  1740. RTS
    - q6 {" O2 t7 Q: I9 o. j
  1741. ! N3 V# K) J/ q; G; c* l' e
  1742. Set_Sound_Init_Port* k) X$ @/ i6 i
  1743. PHA# q" _7 H4 [5 m2 s" ~
  1744. LDA #$20
    & E" P! r% L3 x' g& K' g
  1745. STA <JSR_Addr_Op5 [' C8 x& F+ D9 a6 f
  1746. LDA <Music_Item_Cur
    9 b0 S7 Q8 X  e$ Q* w1 \/ N
  1747. ASL A
    ( v( E" U% Z  E$ [' Q
  1748. TAY
    # i. u+ ]0 l# p4 E& T
  1749. LDA Sound_Init_Port,Y
    " t. I  C) a' Z5 W
  1750. STA <JSR_Addr_L( @- t" m9 S' c! l2 f! m
  1751. INY
    $ |& y) r) _# `; a9 J
  1752. LDA Sound_Init_Port,Y; q4 Z" R  X: Q" ^# ^: P
  1753. STA <JSR_Addr_H
    * N- f% }2 r  }& y8 ^9 U! Y9 Y
  1754. LDA #$60
    $ R# G  N1 r# J9 x- ]1 V5 i1 g
  1755. STA <JSR_Addr_Rts
    3 d9 @2 A4 a" l: g
  1756. PLA
    ' X4 v& a( Y0 T. K$ h# @* g# c) {8 I
  1757. RTS5 t% o2 ]9 W' ]: A1 f; Z
  1758. ) y- K$ ?+ `6 ]! E0 d+ V3 T
  1759. Set_Sound_Play_Port
    , x! ^4 l& W* F& m" ]2 X5 C# t7 x/ i
  1760. PHA6 E& I. {+ R( f7 ?; Y1 m3 Z
  1761. LDA #$20
    7 Y- A7 ?' [# n
  1762. STA <JSR_Addr_Op
    : V2 I/ e/ [  u7 v; Q6 p
  1763. LDA <Music_Item_Cur
    , d0 Y$ g+ d0 |
  1764. ASL A- l$ k" g) Q, _  L
  1765. TAY
    2 C. n* V3 @% A, E- }* z& c
  1766. LDA Sound_Play_Port,Y5 |' V# K3 r3 R; U7 _) `: w
  1767. STA <JSR_Addr_L3 n2 N% O  P, m' o5 c) E
  1768. INY5 e+ e4 y. }8 T2 q5 s2 K
  1769. LDA Sound_Play_Port,Y$ u3 L+ |/ C1 w. {3 N
  1770. STA <JSR_Addr_H1 v* H7 f: k6 t4 t0 X% h& x; q
  1771. LDA #$60
    4 H* b  ~3 W3 _9 F
  1772. STA <JSR_Addr_Rts: V# ]) p0 d$ ]" L: k1 ]
  1773. PLA
    ) a: R1 t+ x1 J* r( G9 ?$ @2 O
  1774. RTS
    , E$ _3 K5 |2 h% u$ x7 B
  1775. 7 s: @2 C8 C; P% N
  1776. Set_Sound_Reset_Port
    : v" O6 x2 A6 P5 K) y- A
  1777. PHA$ T  r% b9 Q2 m/ q
  1778. LDA #$20
    $ U: M" |2 ?( A7 q/ X0 A. b
  1779. STA <JSR_Addr_Op4 S( O0 a; H% I+ J
  1780. LDA <Music_Item_Cur
    2 D% X! m/ f2 [7 y7 Z8 Q' B
  1781. ASL A$ H; H6 X4 h/ V+ _5 s# K  [" s1 }) Z
  1782. TAY
    # @8 t' j$ F0 G5 u0 q
  1783. LDA Sound_Reset_Port,Y( N5 z& s) g. j4 [
  1784. STA <JSR_Addr_L
    * {: p) ]( y3 q6 W% ?) x; F
  1785. INY
    . h( b8 J8 I* d: t
  1786. LDA Sound_Reset_Port,Y" z0 \: l' Y7 u6 i/ W9 x3 c8 q) c
  1787. STA <JSR_Addr_H
    4 T) H) h1 M/ j9 S! a( M0 d% W9 h
  1788. LDA #$60
    9 ^  I( ?, I" G* F/ u/ f2 E! R
  1789. STA <JSR_Addr_Rts
      j1 J: N  q8 T% E
  1790. PLA
    5 r2 A7 M0 r+ W) v
  1791. RTS$ Q! k( w8 N/ w3 |% O2 [

  1792. ( Q  W; |& r& z, ~3 m
  1793. ;初始化音乐bank4 |$ Y" o, T: Y: n4 l4 g
  1794. Init_Sound_Bank2 {& ]9 [; F8 W1 o! V9 L
  1795. LDY <Music_Item_Cur
    , |: I6 ^/ l0 \
  1796. LDA Sound_Bank_8000,Y
    ) o% h2 Z# E/ n8 _: O" D% t( r
  1797. STA <Music_Bank_8000
    $ t( _$ m: j- ^' J4 \
  1798. LDY <Music_Item_Cur
    , h' i: t+ E4 y2 w; P
  1799. LDA Sound_Bank_A000,Y
    8 K& W/ F; k6 P: E+ W/ j. `
  1800. STA <Music_Bank_A000  H; C' ?' F( X: n1 C! ^
  1801. RTS, e, W. n/ q$ [, A7 h
  1802. 6 ]. m/ V  u! `- r
  1803. ;==================================================4 `! h" n" [& R# D8 G
  1804. Sound_State_Reset;音乐状态重置2 E+ y$ Z, N/ O& f  O( c
  1805. JSR Music_Bar_ReSet        ;重置音乐条) @  _  Q, w2 ?- J* A+ g3 l1 T
  1806. JSR Time_ReSet             ;重置播放时间9 c( t9 W0 |7 L# h
  1807. 0 q& l5 g. l& @: A; }5 B- g6 ]
  1808. LDA #$00
    8 k% u, @. d8 ?3 {, t
  1809. STA <Music_Stop_State2 _4 H. o" {5 d% z  b- r& A6 T
  1810. JSR Music_State_Show       ;显示播放状态4 G, L8 c& d% Y% M2 t

  1811. # @, ^  f; [. y" o
  1812. .IF Track_Name_Pos
    3 z: e, ?5 y0 e# x  U! t
  1813. JSR Show_Track_Info        ;音乐曲目名显示. A8 T8 G- u0 T+ Q; J6 _5 F  i
  1814. .ENDIF
    8 {" ]$ Z2 b3 M) n9 C
  1815. : S  Q" ?9 P" z! h0 g- i* d
  1816. RTS* N8 f& C: n& H1 z0 V0 ^+ V

  1817.   r# Z( u) ?  ^3 t% L+ F. w
  1818. ;==================================================
    ; t2 G* {+ I( y% b! ?
  1819. Sound_Init_Proc;音乐初始化处理
    # q! W- j' Y7 m3 ]2 |8 K! E
  1820. PHA& a/ {$ p& G, c3 g5 o8 d+ x+ ?
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址9 F( v0 m* k( z, q7 G
  1822. LDA #$00
    - S5 E: e5 i% o) L& s3 F! e' y
  1823. STA <Scroll_H               ;重设水平滚动. `% W) d0 r: r0 r* A5 h2 v
  1824. LDA #$0F- i5 k; f/ B" `1 W* F4 y- Q& V
  1825. STA APU_STATUS5 S9 n& ]7 `4 A' d
  1826. PLA2 O7 Z9 M6 e! m! d
  1827. JSR Sound_Init             ;音乐初始化
    1 i/ z" u) Z0 v2 o
  1828. JSR Sound_State_Reset      ;重置音乐播放状态* X" W3 c- o' k+ Q/ B
  1829. RTS
    9 J3 D2 ^0 P/ Q; W
  1830. ! ?! o0 G$ @7 |3 x
  1831. ;==================================================
      i5 m2 D8 w- }, }6 R
  1832. Sound_Play_Proc;音乐播放处理4 e& w/ b' m1 M* }
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址, m6 u  h# R' n/ F: s
  1834. JSR Sound_Play             ;音乐播放
    - I- _9 P2 ?2 t
  1835. RTS4 Q* x, j7 q% x; d, \; v# ?
  1836. ) }' D$ o+ U) @& U6 L% J- ~+ |
  1837. ;==================================================
    + L/ l' D6 l3 E3 f  e! j
  1838. Sound_Reset_Proc;音乐重置处理
    * V- X' H; P% P% I
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    7 D/ \  L4 k- g) T) r
  1840. LDA <JSR_Addr_L2 q- ?: p+ H- ~
  1841. ORA <JSR_Addr_H. ]5 [% R4 _( [3 c6 P  E
  1842. BEQ Sound_Reset_Proc_Default" n3 X5 j" S+ f  U8 |$ p9 @; l% A3 n( b
  1843. JSR Sound_Reset            ;执行音乐重置2 l$ x- F: I( t
  1844. JMP Sound_Reset_Proc_Init_Sound
    % q3 D0 F& A- S6 }4 p. ^

  1845. + g+ Z3 K3 n( h# J2 Y- Z- S+ k5 {
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    2 S' C4 A, \1 E( Z  R4 W5 }) ?
  1847. 9 A# f# c. h# b
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断% O1 T; n) w: i. A& Q' J9 E/ r
  1849. LDA #$00
    - `. P+ I8 O+ M! Y6 v2 L& T6 v
  1850. STA PPU_CTRL
    1 j0 \2 S, U( F' L! e' d
  1851. * x* z1 M; Y: m
  1852. JSR Sound_Data_Clear
    ) A' P+ {; K0 h0 N& r9 l0 O

  1853. ! g) X: K% S  }. @# {2 q! ~
  1854. Sound_Reset_Proc_Default_Wait
    - e4 N) F4 D/ m- i+ x& h/ y- `
  1855. LDA PPU_STATUS
    3 n0 f3 h2 t  X) y# L5 @% l
  1856. BPL Sound_Reset_Proc_Default_Wait
    2 p7 D1 U/ c" n( X  |9 s

  1857. ' x& G, o7 ]1 M' x4 U4 P" o
  1858. LDA #$00
    : }- `! s0 u5 w+ L
  1859. STA PPU_ADDRESS
    6 k4 G( e: X+ |5 p3 Z- g/ @
  1860. STA PPU_ADDRESS1 k  B* |5 j) J* U# i
  1861. STA PPU_SCROLL
    6 G9 f( ~- G. A8 r% C
  1862. STA PPU_SCROLL" ?" ~# [, i: }6 ]

  1863. : f1 Z9 K" \1 ^. s9 n6 z! v
  1864. ;恢复PPU控制
    ; S0 k7 Z3 l( O% c- \4 I
  1865. LDA Screen_Ctrl6 u8 B; R0 Q$ h% ?+ Y
  1866. STA PPU_CTRL9 @, v% A, _+ J4 u/ G8 M

  1867. 9 O$ `$ q- O) P1 `% g  f' H3 |% s
  1868. Sound_Reset_Proc_Init_Sound: L* f9 q9 Z4 B/ W2 e
  1869. LDA <Music_Stop_State! y0 X5 Y% u. v
  1870. BNE Sound_Reset_Proc_End
    4 O7 |8 ~& V1 ]8 Y2 K+ q
  1871. LDX <Music_Item_Cur
    8 K+ w+ o/ l* R0 I+ K' J% Q9 D
  1872. LDA <Music_Cur,X) @0 X5 g5 a% r$ L+ ~# s+ a
  1873. JSR Sound_Init_Proc! F4 ]! K  ?5 a/ s, T% ^" T, k
  1874. Sound_Reset_Proc_End
    , ^, a5 H3 T$ G3 N; B, x6 `
  1875. RTS* B) I: [7 S: E) q, r! Q
  1876. ' ~; |9 f' g, A  D
  1877. ;==================================================& n7 a' U2 z* I% r* ~
  1878. Clear_Item_Text;清除页项目3 y, F  e7 g/ s9 u5 p2 y: R! L
  1879. LDX PPU_Cur
    9 e. B" S% N; @* [) Y
  1880. LDA #PPU_MODE_CNT_CLEAR
    : x" \. X8 M4 ^6 y# H
  1881. STA PPU_Addr,X
    6 L1 k4 K1 r; L2 I, r
  1882. INX; V* I/ e0 z6 }8 |8 N8 `( ]
  1883. ! V3 N0 L0 O+ [$ m) w: w6 ]# m
  1884. LDA <Page_Last
    . p: u0 i: b2 G4 i, o# x4 I' U
  1885. SEC
    / v* x, V4 q5 n# p
  1886. SBC <Page_Last_Index* k! c# W: b* k9 X1 ?, G8 I
  1887. ASL A" i: ~0 D4 |/ F# ^: y, I
  1888. ! t6 Y# C7 _! ]( K1 \. `6 g
  1889. TAY4 I* ]1 K0 R' ~7 P3 j
  1890. LDA Item_Pos_Data,Y: l- `; V7 J0 o
  1891. PHA
    & `- K5 h  m- u9 w5 }4 f
  1892. INY
    % z. z6 F+ D# ~) W* i
  1893. LDA Item_Pos_Data,Y
    , I2 l# }" N* o% q
  1894. STA PPU_Addr,X
    9 t; l/ q, _7 \& ?7 K5 {
  1895. INX% V, X6 }2 }% `3 F) d
  1896. PLA
    ) g7 A: |" u3 S* c) f" \) j
  1897. STA PPU_Addr,X
    5 Z8 S4 M3 U0 k* V+ \) N! f, ~3 D
  1898. INX, x" O9 J3 D" r* c* I% J6 H

  1899. " o  a, H5 @4 a$ `3 q4 T8 Q  P
  1900. LDA <Page_Last3 F6 _: F% I: W" k" X2 {5 w1 l3 Z/ G
  1901. ASL A& ?: _. k! c1 x3 ^. d* F+ N
  1902. TAY
    ( I- h( ~$ n- ^  K% r, a3 t% f
  1903. LDA Music_Collection_Name,Y5 b+ D, H/ ]# |/ U
  1904. STA <Data_L' ^& _$ T' S! I) Y( i5 y
  1905. INY
    9 e% j! g- ?6 m# c! B4 p1 c+ z
  1906. LDA Music_Collection_Name,Y
    . P7 F3 `8 U, K1 K5 `% O2 o8 x& S
  1907. STA <Data_H$ U3 z% [' C. M6 g) P! \/ s# `
  1908. , {8 d& Z# U* s  r* {& M  n
  1909. LDY #$00' f& y5 X( ~$ l1 `1 Z+ y2 \/ |! T
  1910. LDA [Data_L],Y+ B; e) N! s% N, v
  1911. STA PPU_Addr,X: n4 Z2 Q9 T& B2 ]
  1912. INX- o( j+ J, g9 ]
  1913. Clear_Item_Text_End: B% M+ F/ {6 _5 V/ S. {
  1914. STX PPU_Cur# E0 E$ c3 E- B0 W' L- b
  1915. RTS
    / c5 f6 N3 P2 _- c; |) i
  1916. / v3 h" Y2 p/ y  H: X, p
  1917. ;==================================================
    ) `$ V- C3 H# R# |; R8 s1 s5 K
  1918. Show_Item_Text;显示页项目$ c) y% L  G8 D8 r
  1919. LDX PPU_Cur4 e/ [; n  v. d' ]. Y+ c
  1920. LDA #PPU_MODE_CNT_LINE
    ' e& N5 \9 X; V/ `! E
  1921. STA PPU_Addr,X3 c# y8 E* P9 i" ~5 x1 \
  1922. INX
    5 y, Q) v% F" p5 R. s( P
  1923. LDA Page_Cur  v! X8 Y8 L( t, f; k
  1924. SEC2 x# a1 A) g- p
  1925. SBC <Page_Cur_Index
    * n) B: L" J+ e" O6 C0 R
  1926. ASL A3 W! _! n4 K2 W$ z2 V  n
  1927. TAY
    5 r0 b3 _' J6 i# o
  1928. LDA Item_Pos_Data,Y
    & G- F# y2 N$ s9 s3 P
  1929. PHA' A( s' U' |) I: V3 z  I' s
  1930. INY
    7 [' X. p3 M$ m6 r# m
  1931. LDA Item_Pos_Data,Y( V" }* ^: d+ u) x0 E
  1932. STA PPU_Addr,X7 x8 {  s. T% D
  1933. INX% {5 i% K# b8 q) m! [
  1934. PLA8 ?- ?1 [& V& S; O. v% H# y/ Q
  1935. STA PPU_Addr,X
    , k. V- L9 E. @" Q, O
  1936. INX
    ( Y# S$ z( M* \& ?( Y' H& W0 A
  1937. 2 W; r# E$ [  v4 j- G! }0 b8 x1 l
  1938. LDA Page_Cur) k0 m( a5 M* I) e5 n
  1939. ASL A3 @$ y- U9 j- q( P0 `. W
  1940. TAY6 p  B% }* Q1 l0 \: \# u
  1941. LDA Music_Collection_Name,Y, _( ~+ d/ c  L0 n! I4 I1 X4 |
  1942. STA <Data_L& G3 \$ L+ {1 J
  1943. INY
    1 ?% @4 z5 g: E
  1944. LDA Music_Collection_Name,Y: Q# n" ~6 J, B8 d; r  r
  1945. STA <Data_H$ i5 x- m' ^* m1 l

  1946. 6 s  O6 R7 O" j. j4 c
  1947. LDY #$00+ ~; Q( I8 @6 v
  1948. LDA [Data_L],Y+ T7 [  Z' P% r* W$ X/ p
  1949. STA PPU_Addr,X3 H( n( H% p- R) H6 A0 e
  1950. STA Data_Cnt
      F1 L  l) {, q1 `+ `2 M) }- a
  1951. INX3 l1 I3 G* A% ~' q+ H

  1952. 3 {3 J$ L7 \! A% F
  1953. INY2 K/ y$ o5 k4 \% D/ Q
  1954. Show_Item_Text_Write+ Z/ F+ o5 B0 R0 w
  1955. LDA [Data_L],Y0 W: O% y7 v1 L8 e4 E
  1956. STA PPU_Addr,X0 W' y" b. ]7 B
  1957. INY
    ( o" \- f& O+ M. x) F  T
  1958. INX9 I+ Z& E9 c2 B
  1959. DEC Data_Cnt
    8 w5 `; {. X7 n$ K1 ?7 V8 X
  1960. BNE Show_Item_Text_Write( Q8 s5 p9 R1 B+ L( n. L$ d" I

  1961. ! Q0 v9 W1 b# p
  1962. Show_Item_Text_End
    ) N( _0 a: P: P* @; O$ v8 L
  1963. STX PPU_Cur
    1 H3 _  Z' A: i) f$ ^) n, d
  1964. RTS! w$ u/ b8 |4 U( a3 g. z

  1965.   D. w8 q! t/ c6 T, e1 U8 U! U
  1966. ;==================================================7 t& y. P  W) v$ [# C
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    ' x+ y4 R- P4 N0 `9 d  F
  1968. STA <Data_Buf) Z- X; `( q' s: G
  1969. LDA #$00
    ; M3 m: }; o/ ~9 {
  1970. Get_Page_Index_Calc, ~& ]* b6 W9 d$ q0 U+ l- b7 w; _  o/ u
  1971. CLC6 l' }/ `! G& k/ _' q9 k
  1972. ADC #PAGE_SIZE, c0 L; H9 n* |) z- X
  1973. CMP <Data_Buf/ `" N4 H" f" A, M
  1974. BCC Get_Page_Index_Calc, B% E6 i2 U$ H% I0 i' x" i
  1975. BEQ Get_Page_Index_Calc_End
    ) m+ n' {' P* s. X
  1976. SEC
    3 P& d" E+ d' d) {: y$ q6 f$ J
  1977. SBC #PAGE_SIZE" A6 S# c: z) t: v/ v) M' |
  1978. Get_Page_Index_Calc_End
    ( Z' K. R: {1 G
  1979. STA <Data_Buf. h8 y# P! T+ R- e* z
  1980. Get_Page_Index_Cnt6 }9 J5 v, B- s- n4 e* p
  1981. LDA #PAGE_SIZE, z3 {# @+ \: {) _5 m9 ~
  1982. STA Data_Cnt4 l2 \7 c$ h- F% [7 Z  I/ s  f

  1983. 9 v" A# B2 |- m
  1984. LDA <Data_Buf. t. K" x0 P7 X
  1985. CLC
    1 Y+ z9 N4 {# b0 `; b
  1986. ADC #PAGE_SIZE
    : r2 S8 O( T. I
  1987. CMP #ITEM_MAX_SIZE
    . f; r1 ]/ f/ z: R" J! B+ I
  1988. BCC Get_Page_Index_Cnt_End; Y# @4 W, Y, B2 i: D! e* N

  1989. ; v6 ^" j& T4 J8 ]
  1990. LDA #ITEM_MAX_SIZE3 d( K! q6 `# B) \: ^. K" y; ?/ a
  1991. SEC7 X/ }* l' O  t5 z6 S: N6 T
  1992. SBC <Data_Buf
    * \; `! [9 r& B; q0 \
  1993. STA <Data_Cnt( X0 L! L1 H# S8 Z5 n4 ]0 Q8 {7 \) e
  1994. ) V) @+ D' k. J7 T) f. T
  1995. Get_Page_Index_Cnt_End
    + ]; |- t& Z; n% d# b) w+ a6 Z8 `6 i
  1996. RTS& ^4 l0 P5 u" n% V

  1997. 0 N9 r; y* [! A2 W8 `6 d
  1998. ;==================================================
    + e" A7 A$ O9 z7 p$ I- C
  1999. Get_Last_Page_Start_Index
    5 S5 M& G& Q9 [, T
  2000. LDA <Music_Item_Last% u; W. D0 n/ h
  2001. JSR Get_Page_Start_Index3 V% K& Z! e9 I! W# M9 L
  2002. LDA Data_Buf
    5 e7 p* f! v6 q. T$ a
  2003. STA Page_Last; v7 g( V  i; m0 o3 ]% ]
  2004. STA Page_Last_Index
    ( [* \* ^- o% l! \# K
  2005. LDA Data_Cnt
    6 P: Q" H( b7 T/ D  V. D( a+ l
  2006. STA Page_Last_Cnt# S+ K' P8 U9 H4 x3 h5 O
  2007. RTS% ^, D7 X% {2 @" R

  2008. , i. i5 e) ~) i2 _& I
  2009. ;==================================================
    " d' ^+ j9 s0 Z4 j& G" q" i7 N" \+ s
  2010. Get_Cur_Page_Start_Index% t  o( m! |7 K- H7 ^4 n
  2011. LDA <Music_Item_Cur
    - b' U; s. h6 r
  2012. JSR Get_Page_Start_Index
    * ?8 z9 W8 ?1 @" l9 @* h
  2013. LDA Data_Buf
    2 y: ^/ }0 @4 l2 i( E
  2014. STA Page_Cur
    % _- W: N9 i% _& q8 [
  2015. STA Page_Cur_Index
    4 ?- Z2 K) ?9 P& x' F* q
  2016. LDA Data_Cnt
    % Z0 f4 [9 ^  @/ V! |8 d" d: ?' X. h
  2017. STA Page_Cur_Cnt# I1 D, ]- ~7 T' b; X
  2018. RTS' Q& m$ q& _# H! ?0 N

  2019. . a* V! u# R# c: e- `
  2020. ;==================================================* t' ~( K- \6 ~8 n3 n& x! O- v7 a
  2021. Show_Page_Text;显示页文本6 x: W! p' u/ B  j4 K5 V8 k
  2022. LDA <Text_Disable_Flag
    . h" e8 u' Y( a. [& A; ?7 @. a
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM8 C+ {6 [$ t3 `, l
  2024. STA <Text_Disable_Flag
    ( C2 g4 l& F" C6 S

  2025. / x8 g6 {, |9 Y+ z/ r
  2026. JSR Get_Last_Page_Start_Index6 ^8 W1 w, S' G5 A5 {: D
  2027. JSR Get_Cur_Page_Start_Index
    $ e7 ^3 F; Q% m$ x5 P7 I- x

  2028. 0 j& P" d! t1 y" D
  2029. Show_Page_Text_Set9 Z0 p9 p6 V; J; i9 m5 ^
  2030. + X3 Y" J4 A% M4 G; G- v
  2031. Clear_Page_Last_Item;清理上一页
    1 W. z! Y/ u# D- P+ Z
  2032. LDA Page_Last_Cnt
    & m1 V/ r/ R4 E! o4 }
  2033. BEQ Clear_Page_Last_Item_End; J0 z1 r" k7 v; @' x
  2034. JSR Clear_Item_Text
    % O' v! I$ y. `. T/ B; e
  2035. INC Page_Last
    , e9 }/ K: [. y3 O( U3 ^
  2036. DEC Page_Last_Cnt
    ) V" t. r, ^! C3 a5 t5 @
  2037. Clear_Page_Last_Item_End
    8 _8 ?4 @2 b/ H; o3 l, E

  2038. * ^" v; T" j  r( I  D: k; D
  2039. Show_Page_Cur_Item;显示当前页* y, ?- \% o7 x, h7 \" {
  2040. LDA Page_Cur_Cnt) D; c2 a6 i) D6 q; d4 ~. W
  2041. BEQ Show_Page_Cur_Item_End
    " n/ Y# y1 B1 G+ q1 L
  2042. JSR Show_Item_Text
      P3 Q& t7 @! z6 B2 ?! d6 |
  2043. INC Page_Cur" P! Z9 U; R4 H& k# @. c* F- [
  2044. DEC Page_Cur_Cnt
    ) s* E/ ~7 @1 r+ W7 X
  2045. Show_Page_Cur_Item_End( |5 o% c2 W; T! o3 q

  2046. & X/ U8 E1 o: X; B
  2047. INC <Time_Wait_Cnt' I7 n* M  a$ w" L5 N
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作/ ?4 t6 I* N2 u7 N% `$ A0 X
  2049. LDA <Time_Wait_Cnt: N& E( T/ v8 G; U+ O+ q9 s
  2050. BNE Show_Page_Text_Set_Wait' p* v+ Q- V( B( K

  2051. ) Y, A/ L5 f2 X9 M7 F1 j! [$ R
  2052. LDA Page_Last_Cnt( }* ~- P1 S! ~
  2053. ORA Page_Cur_Cnt) m4 c, u0 H7 W
  2054. BNE Show_Page_Text_Set% I; `0 q8 t/ F9 J% ?0 L
  2055. LDA <Text_Disable_Flag4 w5 I! m$ {! V- h: H
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    8 ]9 g0 {/ ~; R* h# u/ n8 X
  2057. STA <Text_Disable_Flag5 k0 V! x! A6 n$ v" s: E1 ], t
  2058. RTS/ Q# g5 X* K. o  C8 v7 L
  2059. ! g" s) r5 G8 U0 P/ h  m' `
  2060. ;==================================================9 C/ M. p. g8 g% r' J7 q! v* f
  2061. Last_Item;上一项
    ' P, Z0 }: v  P+ d
  2062. JSR Clear_Last_Track_Name
    % P, \1 Z+ ~; t) w
  2063. JSR Disable_Text_Draw0 M0 W  b! ^) l

  2064. , X5 B" D( a5 O- c. b1 ?
  2065. LDA <Music_Item_Cur
      m8 F. t4 ]# b7 g  o; t# V
  2066. STA <Music_Item_Last3 N' F0 b+ P! h6 [

  2067. & Y) Y0 h& N, n6 _# Y; x, G( S
  2068. JSR Get_Last_Page_Start_Index2 J5 W! c9 ]! D9 J1 w3 \2 V" p  A. o
  2069. 8 ~  M! f! j6 I) w2 u9 [4 h% r
  2070. LDA #$00
    9 d9 @: J/ G; p" G$ u6 l/ Z2 H
  2071. STA Data_Buf
    " I' Z  e8 r5 S4 h0 \* p* A
  2072. * b" c# F6 J: b" k) u6 O" ?
  2073. LDA <Page_Last
    0 c. S5 G9 A7 a2 H! O# F: I5 Y9 c
  2074. CMP <Music_Item_Cur6 Y8 j" d7 x6 o; L: F
  2075. BNE Last_Item_Begin
    ( R& a  a' A4 g& r2 e# A& z
  2076. * C3 e4 {0 G9 d; b7 E  q3 @
  2077. LDA #$01
    2 w; j' e, F. f3 V( n. d. s9 `
  2078. STA Data_Buf! o" x4 M( ]7 h+ i
  2079. Last_Item_Begin
    $ g& Z# w! F7 U; J+ M$ x
  2080. LDA <Music_Item_Cur
      K7 v( i3 H, r5 R8 A
  2081. BNE Last_Item_Set
    # j5 r5 W  Y- {+ [2 b8 q8 G' i0 |. n
  2082. LDA #ITEM_MAX_INDEX + 1% b9 u; s5 E0 p/ T* k- d. S
  2083. STA <Music_Item_Cur1 t0 O$ z9 [: c7 E: a$ V
  2084. 4 [% R- b. h$ b% G# h
  2085. Last_Item_Set3 @. E, B4 ^, _, h9 q7 F/ o8 ~
  2086. DEC <Music_Item_Cur
    3 ^! }. j( l9 P( Q5 H! x) ]" [
  2087. LDA <Music_Item_Cur
    9 ]# ?. u3 a) ~& Z+ v
  2088. JSR Reset_Current_Music1 d, D6 C+ U3 H+ Y: }$ @& q' u& F

  2089. / s& q; I% i! z" O9 V$ O- Z9 V8 r
  2090. Last_Item_Play" E* q$ {; _; n$ \+ }
  2091. LDA Data_Buf
    1 k/ o# `3 z& g. H
  2092. BEQ Last_Item_End
    " S0 ?9 s8 e; v* `4 H) X+ M
  2093. JSR Show_Page_Text; D1 t+ o. I9 Y* g4 L
  2094. Last_Item_End4 l( ]) e( e1 C
  2095. RTS
    . Q  j5 L. R) t- K

  2096. ! q# b) Z$ Z, C$ c$ n! m
  2097. ;==================================================: v9 J& g+ w' L9 \/ F& g8 a
  2098. Next_Item;下一项( P" q- c; o8 ]1 u( Y6 i: H# b
  2099. JSR Clear_Last_Track_Name  z* `4 _0 e! }! C. w
  2100. JSR Disable_Text_Draw; C% y" [5 i5 E# |
  2101. 2 g$ M+ S4 `3 U" x! y( ]
  2102. LDA <Music_Item_Cur
    & R# |& o( n  C8 r* F$ q, w
  2103. STA <Music_Item_Last3 W# p* s8 u, z

  2104.   D& L/ t. y+ d$ h
  2105. JSR Get_Last_Page_Start_Index! T$ J* i* R( Z! x+ w6 F/ |

  2106. 1 A: F$ u8 W4 N
  2107. LDA #$00
    ) W5 v6 h7 O/ c* Y' k
  2108. STA Data_Buf
    5 T: ^+ G3 X3 u! y  R) L
  2109. 4 J. N6 k  a/ L/ B" Y
  2110. LDA <Page_Last
    " H0 M: G2 s5 R  k/ A+ \3 z
  2111. CLC' i# `3 S3 L5 o( K7 G& N/ k
  2112. ADC <Page_Last_Cnt4 P) x; S, g8 x) P+ ]3 o' i
  2113. SEC
    . L  I7 h% ~+ v* `! U+ Q% o  k" j
  2114. SBC #$014 R. p3 C4 g" d
  2115. CMP <Music_Item_Cur2 k) w/ P3 o! ~: {/ @2 {7 ?
  2116. BNE Next_Item_Begin. ^" _9 ]5 T! d8 n& ^

  2117. 5 z- m9 ^% k) z5 ~3 f! @+ l
  2118. LDA #$01  l' {4 N! E* J# Q  j8 b* I: r3 {
  2119. STA Data_Buf
    , _2 i9 Q+ F+ |4 v
  2120. Next_Item_Begin
    5 z0 a$ A5 V3 J4 t8 W1 {
  2121. LDA <Music_Item_Cur$ d: m) {4 O8 Y! s6 c
  2122. CMP #ITEM_MAX_INDEX
    6 F! n: U0 W% ?) U3 i
  2123. BCC Next_Item_Set% N) l# i# W7 b+ k& B. Q- j2 I
  2124. LDA #$FF+ M( i: Z( [+ g: |$ o
  2125. STA <Music_Item_Cur
    ( T6 A* w. ^  d, b. z/ ~4 g+ O
  2126. Next_Item_Set3 M/ E$ K6 X+ {. I/ f/ M9 r" O9 f
  2127. INC <Music_Item_Cur% Y1 N+ L! b9 ^+ k
  2128. LDA <Music_Item_Cur
    * z/ U% [/ B, q  e
  2129. LDA <Music_Item_Cur
    3 [  N1 v2 W7 J5 W* w
  2130. JSR Reset_Current_Music
      ^5 x, s8 ^' |1 x
  2131. Next_Item_Play
    # M( t" G# s$ ?3 C* F& Y
  2132. LDA Data_Buf
    4 m8 o: o9 h1 S3 u% S
  2133. BEQ Next_Item_End
    * U- w8 k9 G- W' q7 i
  2134. JSR Show_Page_Text" N  H: _& H+ n" F1 G
  2135. Next_Item_End8 a0 P+ R5 P# S+ g  ?
  2136. RTS
    4 r! x& o" ?3 Y# w! @* Y" s& q# n

  2137. $ l0 D( x& E( |! e! W$ f2 ]
  2138. ;==================================================$ K" K" v1 y9 R  I
  2139. Last_Page;上一页' x$ k$ r( W& h) @/ O: j
  2140. RTS& L# A/ \4 q8 I4 F+ W1 U* |

  2141. % ]# W$ y( u- C9 g
  2142. ;==================================================4 j6 |/ W/ o  k. l7 p, B1 t* d0 c5 A
  2143. Next_Page;下一页
    6 g4 q# K6 m7 J# v
  2144. LDA #PAGE_MAX_INDEX' r* h% k; Y: w* f' N5 T9 j4 |
  2145. CMP #$01, U: _; Y/ E$ W
  2146. BEQ Next_Page_End
    $ L3 Y. S. D" y8 p
  2147. 0 _. ?3 R, ^) X( @
  2148. LDA <Music_Item_Cur
    / f% r* `5 x' i1 x% ]4 q
  2149. STA <Music_Item_Last/ C! v& `) s6 M1 {7 [8 l; u5 O

  2150. ; @+ @+ p: U# G! |0 `! f% P, ?* q
  2151. JSR Get_Last_Page_Start_Index4 U8 i/ \1 Z2 H, i9 P0 V* z4 F

  2152. 9 ^6 k0 r* t5 {% ]' H
  2153. LDA <Page_Last_Index  R& @  D2 t) Y
  2154. CMP #PAGE_MAX_INDEX
    9 ]/ L9 @  S5 t+ A
  2155. BCS Next_Page_In_End_Page
    $ I! K( r. X4 u. [
  2156. 7 C0 r" E9 J  K- A1 I# `
  2157. Next_Page_Not_End_Page;不是在最后一页( ?2 g& I1 U# m) A
  2158. LDA <Music_Item_Cur0 I5 M) b5 c3 r. d- E$ i6 x
  2159. CLC
    , M& h9 t% T3 n* R* v7 J# e! F
  2160. ADC #PAGE_SIZE* N3 N1 U. @: ~' s3 Y9 z* R& Q4 c5 L
  2161. CMP #ITEM_MAX_SIZE  e, C. F5 v' [( \5 K! S+ F6 t, I3 d
  2162. BCC Next_Page_Not_End_Page_Less; b3 Z" F- }6 i. O2 M
  2163. LDA <Music_Item_Cur
    , K6 l2 Z6 W: f0 C
  2164. SEC
      N, A# R* t: G. A
  2165. SBC <Page_Last_Index
      `* F/ C! L/ F$ d* i, w$ ^" @
  2166. CLC
    ' ~+ G# M( M6 p. g& X0 F
  2167. ADC #PAGE_MAX_INDEX
    " \6 B, r3 I7 }- x( V6 ~& U
  2168. CMP #ITEM_MAX_SIZE
    ' b2 d( n& G) m/ c
  2169. BCC Next_Page_Not_End_Page_Less
    ! h; s, k, i' K; f3 j
  2170. LDA #ITEM_MAX_INDEX/ U' p# L6 Q) q7 H: c  z( i
  2171. Next_Page_Not_End_Page_Less
    3 }2 a; d5 k. ]" Z
  2172. STA <Music_Item_Cur' R" i- R: D( J# c9 ]0 W6 n' c
  2173. JMP Next_Page_Reset
    - [+ W: C" o$ @. V( |

  2174. + G, h  b& q& ]5 y8 N' u
  2175. Next_Page_In_End_Page;在最后一页
      `% v5 \2 J& x2 b5 Z& B2 K
  2176. LDA <Music_Item_Cur8 |) w- ^% t" h
  2177. SEC
    ; O. t4 F! z$ ]  ]; T( f( ~
  2178. SBC <Page_Last_Index
    & {3 ^7 p8 k9 t: ?6 ~4 U  l
  2179. STA <Music_Item_Cur
    % G& N! A/ s" Q6 L
  2180. " L7 D8 A9 m, G" [* I
  2181. Next_Page_Reset0 e, Y& B9 r) C% }7 B
  2182. LDA <Music_Item_Cur0 P6 D4 ~& ^+ j4 D. X9 [8 G( N5 e
  2183. JSR Reset_Current_Music
    , a. A4 E7 S; T: n: P) j' [
  2184. JSR Show_Page_Text0 c& ^5 O& Q0 y- f* S
  2185. Next_Page_End
    / h. m0 ~; x; A' r5 \: E, @! a
  2186. RTS
    4 _) t- p1 V2 t4 w
  2187. 7 z5 u5 T% G" Y8 y3 c
  2188. ;==================================================0 S# g+ }6 w, e0 V5 I
  2189. Disable_Text_Draw;禁用音乐条刷新
    6 b$ F' T2 r' y# v0 Z5 {8 }
  2190. LDA <Text_Disable_Flag
    ; E  f7 f" D/ z) G# ?2 W- a4 {
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    " h% _3 B, o, A% X# a" ?1 |; @) t
  2192. STA <Text_Disable_Flag. i) m6 B, A2 O5 F& q8 L$ y9 d
  2193. RTS
    " m6 }9 a$ ]; p! L* q* g& T

  2194. 0 {  ]0 ^( q1 V& g9 V) w* \& L3 ~- o
  2195. ;==================================================
    ! k, p2 I$ X* k( h/ e) {- l" y
  2196. Clear_Last_Track_Name;清除上次曲目名. N% T( ]+ E9 Q" u
  2197. LDX <Music_Item_Cur& c& k9 H2 [5 P9 r2 v3 o
  2198. LDA <Music_Cur,X
    2 p) R7 R  B" B. f2 s1 R8 M
  2199. .IF Track_Name_Pos
    , d$ G- O+ U) e9 w3 t
  2200. JSR Clear_Track_Info" j- ~  q( Z- V  x* N& w, m8 ~
  2201. .ENDIF% M( a: s$ |6 _
  2202. RTS
    $ U+ b- K0 q+ B+ X
  2203. + X8 b+ s" E9 ]. ?0 N) G
  2204. ;==================================================- I  d2 c; ^3 j$ s, h& ?" E
  2205. Reset_Current_Music;重设当前曲目. l$ r7 a, P! ]' m: y
  2206. 6 U( X# O1 }) O/ G% D
  2207. ;写入当前总曲目! }! g3 y/ f! @& M4 a) K
  2208. JSR Set_Sound_Total
    / e% a2 T' x; ^7 ?1 i' E
  2209. LDX <Music_Item_Cur
    7 t8 `0 ~( L% f( `& ^, ?

  2210. . o; ?, W* |0 |3 H: @
  2211. LDA #$00
    1 ?9 b. h8 ]! N+ Z( n  R/ ]1 u% I
  2212. STA <Music_Last. ]$ S+ M3 a8 T/ G, h. p! c6 _! n

  2213. 8 o. y) e3 N9 z; S4 U5 _
  2214. JSR Sound_Reset_Proc, R' B/ P( j. [2 Q& R8 x5 i0 |1 Z
  2215. JSR Music_Show' _1 V- x8 A/ Y2 }
  2216. RTS
    / \' o" a- N( t) X# P# w

  2217. * S( W- [- }, [$ B* q0 }) v, D
  2218. ;==================================================0 n! ]' [7 E) [) b. {
  2219. Music_Song_Stop;音乐停止
    / z3 Q+ `( }  t7 H
  2220. LDA #$01
    1 S: ~9 c- O- _7 s7 }( R
  2221. STA <Music_Stop_State$ T" o, q6 W; v# U9 j  x
  2222. JSR Music_Bar_ReSet% f* @( |  h" {
  2223. JSR Time_ReSet
    + B( Y) |% ^0 N
  2224. JSR Sound_Data_Clear+ h3 e6 o1 _8 G3 j. _( Z
  2225. JSR Music_State_Show6 ?9 }. L2 W( }  M6 {4 O
  2226. RTS
    3 v* q+ p/ b. {4 V/ K4 I5 ~

  2227. , X& D5 c" V( E8 F
  2228. ;==================================================
    & S. e7 G$ |2 B
  2229. Music_Song_Play;音乐播放7 W) n) U, d: h( U: R" S
  2230. LDA #$00+ v( u0 y6 H- d% ]
  2231. STA <Music_Stop_State5 w) d4 D  z" k1 b8 ?) ]( a
  2232. LDX <Music_Item_Cur
    8 L9 h& _7 A$ w  K) ]: ]5 K
  2233. LDA <Music_Cur,X+ V/ s3 G# l+ L# d$ M
  2234. JSR Sound_Init_Proc* g" Q4 M2 [  X0 \) [9 P
  2235. RTS3 v$ _/ J$ i: I. Y; Y: w2 R
  2236. / a1 }8 |. ~: ^3 |
  2237. ;==================================================3 f+ b: x3 X# Y
  2238. Music_Song_Last_10;上10曲" D; b/ r  e% g; r
  2239. JSR Clear_Last_Track_Name# x; `% X2 c9 E1 k& [
  2240. JSR Disable_Text_Draw2 L" A$ a) s" e# J
  2241. LDX <Music_Item_Cur
    ' R) h, J8 ~% E0 ~
  2242. JSR Set_Sound_Total
    ( ?2 p' p% |( r2 Z' c5 G: b
  2243. LDA <Music_Cur,X
    - m- G/ J6 j% m) o5 k3 a
  2244. SEC
      X, j# V6 D' M& v. k
  2245. SBC #10
    - K9 c& L& ?2 k6 t
  2246. BCS Music_Song_Last_10_Set
    . v2 ^; e( p/ n' V8 C, x. {( z
  2247. LDA #$00# q: F: A1 u" J/ K# K; T4 \
  2248. Music_Song_Last_10_Set
    % g# K) Q6 i0 Z  ~
  2249. STA <Music_Cur,X
    0 s; r, P/ x0 r, U
  2250. JSR Sound_Reset_Proc& I, C0 a" h* ?6 k7 l% J' z
  2251. JSR Music_Show
    8 G% l7 P+ @( F4 Y( w
  2252. Music_Song_Last_10_End5 D0 o) K/ M5 @( w/ S( D
  2253. RTS
    ) m  L' j, r0 Z1 m3 t

  2254. 0 I2 [9 p. o% T3 M
  2255. ;==================================================9 C$ V1 U, c7 n0 u$ [3 v
  2256. Music_Song_Next_10;下10曲3 c2 ~) }" u! U( ]0 o, D
  2257. JSR Clear_Last_Track_Name  Y, n- H! k' c' q- B6 v! m
  2258. JSR Disable_Text_Draw* ^- `3 m5 S' b, }) E9 h2 [
  2259. LDX <Music_Item_Cur$ k. L/ w- W4 Z) z& `  h
  2260. JSR Set_Sound_Total
    0 _5 J( s* f& l, a4 A$ m# _7 J
  2261. LDA <Music_Cur,X
    % q6 h. l) A* n) B" W* P2 J2 x& L3 g
  2262. CLC
    + ~  r& p3 n' }, U# s5 x" x9 }: }
  2263. ADC #109 u% j+ y7 E* R2 {
  2264. CMP Music_Total1 F$ A$ M( R7 ~' k, t
  2265. BCC Music_Song_Next_10_Set. U3 y# [( N; P, F7 k% Y
  2266. LDA Music_Total
    + A" z, _! r6 a# g6 Y
  2267. Music_Song_Next_10_Set" ?  \* A6 ^" J$ ?7 }- c
  2268. STA <Music_Cur,X
    ) U# Q% {/ z: Q8 E
  2269. JSR Sound_Reset_Proc
    $ _0 G2 x) R- T  _) C5 g6 u
  2270. JSR Music_Show
    9 V! ]; f/ Y2 v4 p
  2271. Music_Song_Next_10_End& j, f" V  N+ {
  2272. RTS% M# f( x! W% k/ _$ L+ M9 d
  2273. 3 \# {8 w8 V7 M; ^0 q1 Q
  2274. ;==================================================
    ( h1 E/ Y# e! k. Q- ^; e
  2275. Music_Song_Last;上一曲8 p  V, p6 ]7 O; h8 \
  2276. JSR Clear_Last_Track_Name
    4 {5 h9 [  e8 L) U) z
  2277. JSR Disable_Text_Draw9 w$ ~8 }8 p7 z6 A5 w+ L
  2278. LDX <Music_Item_Cur, M" O! x# o# P7 T3 w; b
  2279. JSR Set_Sound_Total
    * D! N7 |1 i5 O: \4 _0 f9 Y/ U+ Q
  2280. LDA <Music_Cur,X
      i/ r  z5 M# @: }$ B$ H) k" L# X! ?
  2281. BEQ Music_Song_Last_Set! e  w! i1 T9 K5 a* l2 J
  2282. DEC <Music_Cur,X
      W# ]. t7 ?3 f5 h8 [% _
  2283. Music_Song_Last_Set
    1 ~, O% [1 I' e! C' k, A
  2284. JSR Sound_Reset_Proc% i4 Y2 e1 N" _9 n! Y: \( `
  2285. JSR Music_Show) f; Q) ?% h  `
  2286. Music_Song_Last_End
    * i- ~3 j2 l& _! Y7 u, u0 u' A& l+ m
  2287. RTS
    ! d6 Y4 A/ X! V

  2288. 3 u, K2 a1 f5 }7 F8 M8 U9 {% s
  2289. ;==================================================
    # O/ V8 K3 h) I8 V8 w$ k5 m0 t
  2290. Music_Song_Next;下一曲- E+ }2 ]7 M* \. Z. @( }
  2291. JSR Clear_Last_Track_Name7 P/ g- l8 L6 |! G; `+ i1 P. y
  2292. JSR Disable_Text_Draw  y: X! C4 X- o) A7 `1 e1 V
  2293. LDX <Music_Item_Cur6 ]( \" \+ d4 [4 p& f% u2 s, r
  2294. JSR Set_Sound_Total
    % W) H+ J' _& q$ C
  2295. LDA <Music_Cur,X
    / K& I, |4 }$ B
  2296. CMP Music_Total
    ; o  _5 j. o! Y. k0 S
  2297. BCS Music_Song_Next_Set- {9 n! T' e) Z( P' S
  2298. INC <Music_Cur,X
    $ d1 i" ^- d0 L2 {3 }$ w
  2299. Music_Song_Next_Set, o/ \' h% G* B/ W7 |% ^0 x
  2300. JSR Sound_Reset_Proc
    7 W1 `6 {- q$ p  W4 X; G( M
  2301. JSR Music_Show( q# H1 R9 W. g- g) R+ `
  2302. Music_Song_Next_End* h; Z5 v( C6 T# W4 F
  2303. RTS) ?' i1 N) y- D; M# g
  2304. 5 R/ u3 r2 |; F
  2305. ;==================================================
    $ d2 a2 X3 v5 c4 P4 o
  2306. Change_Select_Item;改变当前选择项/ P0 L3 d2 R, u% N# \1 Q$ O: e
  2307. ;--------------------------------------------------# d6 Q1 |+ i; [6 E7 v
  2308. Change_Select_Stop_Play_Item;停止/播放
    . s! Q* c& O+ B& ^
  2309. LDA <Key_Once
    6 d. e+ N, Y, r3 f6 l$ _% y9 I
  2310. CMP #$10) M. F6 ~( `2 v* T
  2311. BNE Change_Select_Last_Item
    9 z- p8 Y) G9 k2 _2 u
  2312. LDA <Music_Stop_State
    ' x# B) O. t8 g- J
  2313. BNE Change_Select_Play3 r% r' f2 f0 I
  2314. JSR Music_Song_Stop- Z# N- T3 k7 i9 }- D2 z
  2315. LDA <Music_Stop_State; N- M6 |6 _0 P, P1 m; [9 m
  2316. RTS1 D, t( Y  B- T0 b8 e
  2317. $ n, k7 e: V( K0 d; v
  2318. Change_Select_Play
    9 z. W+ x9 `6 Q% q, g
  2319. JSR Music_Song_Play0 t9 x% a/ n" ]$ [4 M/ X2 r
  2320. RTS" n# M/ e2 E# ?# k, Q4 A

  2321. 4 {: z/ o8 J0 @4 B
  2322. ;--------------------------------------------------
    ) U; c+ n7 C: e2 T- h) s+ i% i. j
  2323. Change_Select_Last_Item;上一个专辑
    ' T4 k) W% I2 I$ N
  2324. LDA <Text_Disable_Flag* W) @8 M+ n; ?. |
  2325. AND #TEXT_DISABLE_ITEM8 N3 o! Z5 H4 t) q" o% g
  2326. BNE Change_Select_Item_End
    / u( |) x8 {) K- F$ M5 M! A
  2327. LDA <Key_Once* P7 t6 t3 Z* Y; x8 q* k- ]
  2328. CMP #$08
    ' g- w; l0 k' U! l1 t- Z
  2329. BNE Change_Select_Next_Item
    $ p: [0 e- B. Y% \7 H& ?: W, p! c
  2330. JSR Last_Item
    ) H' \/ [/ u: m6 k  `& Q4 P8 ?
  2331. ;--------------------------------------------------
    4 \( l" c; _5 B5 [$ M  v
  2332. Change_Select_Next_Item;下一个专辑7 l4 }! h( H- H% ~8 |
  2333. LDA <Key_Once
    7 N; Q1 S6 \  q+ r) E. A. N5 {
  2334. CMP #$04
    5 G( x) k, q) K/ z. b. L- ~
  2335. BNE Change_Select_Last_106 f" e" ?( A! e$ t8 n
  2336. JSR Next_Item* }# x. U: C/ h/ `" Z4 R8 {2 V
  2337. LDA <Music_Item_Cur1 }% @4 F6 E" I: A
  2338. JSR Get_Page_Start_Index
    ( I) G; ?* Y' o/ P1 G2 L
  2339. ;--------------------------------------------------# {$ T+ m  p- {& c
  2340. Change_Select_Last_10;前10曲( A% w8 g. V& c% ^' K" Y
  2341. LDA <Key_Once7 y- U! X% m! Q4 e
  2342. CMP #$40$ X! L8 C7 G! l8 s$ f9 X
  2343. BNE Change_Select_Next_10' @( Z6 }5 _: ~+ U8 D: g3 i$ Z
  2344. JSR Music_Song_Last_10
    % q* \& e4 X2 ^
  2345. ;--------------------------------------------------9 y0 A. I7 R9 A" A
  2346. Change_Select_Next_10;后10曲
    - D2 u9 ?) x& U$ u. @7 X# `
  2347. LDA <Key_Once8 G& x6 B7 }, e( @! Q3 v8 N
  2348. CMP #$804 W' {; p9 O( G" Y4 h7 V, B: p) ]
  2349. BNE Change_Select_Last
    ) v$ |# M( v5 L% T0 _
  2350. JSR Music_Song_Next_10
    + [2 e1 ?5 i: h: E
  2351. ;--------------------------------------------------
    5 e: }* P! }$ f, s% y
  2352. Change_Select_Last;上一曲' F) o8 {' s" b
  2353. LDA <Key_Once0 R! q! C. L! z* L" O1 W( q% o: j
  2354. CMP #$02% w5 g( I$ X% d. Q: |# L( d9 X& v6 u
  2355. BNE Change_Select_Next) K1 |- i& J8 a5 i  M
  2356. JSR Music_Song_Last
    - l% \' X; s- K* A& c* Q; a
  2357. ;--------------------------------------------------
    $ i8 A2 J( z5 e9 ?6 a2 v# o, w6 E1 l6 K
  2358. Change_Select_Next;下一曲
    ; g0 P3 `1 M+ l& J
  2359. LDA <Key_Once
    # b6 d1 O0 S0 R; @: t  `, ]" ^
  2360. CMP #$01
    - X( p! i1 _1 Q$ z' I
  2361. BNE Change_Page_Next
      ~; X9 ~; A" z( e6 ?% _4 J7 ?
  2362. JSR Music_Song_Next; v" o8 J% B* F. C; d1 Z. c/ t
  2363. ;--------------------------------------------------
    0 ~0 T  p+ f) Q1 f& p0 F2 H
  2364. Change_Page_Next;下一页2 P+ s1 U- X# o2 s4 ]8 L
  2365. LDA <Key_Once
    ! n$ {3 `% N* R5 O" n( i2 f* P
  2366. CMP #$208 U8 A. @, e. v3 ^% U- a
  2367. BNE Change_Select_Item_End( L2 I/ h) |! ]0 d1 Z4 X
  2368. JSR Next_Page
    6 f% Q$ e. _" H; }2 ?& K& N) s
  2369. ;--------------------------------------------------
    0 g. k. G3 K# l) N7 H# Z( {
  2370. Change_Select_Item_End# p! _7 J0 a) r1 n5 Z& }
  2371. RTS) h+ K4 z! M- U. ?; x
  2372.   l: m/ y2 w6 g1 H
  2373. ;==================================================1 a( j8 Y$ z) ^
  2374. Show_Arrow;显示箭头光标
      h& E, V" a: {1 r) e
  2375. LDA <Music_Item_Cur  N  J5 X. B3 }, A
  2376. JSR Get_Page_Start_Index
    & A  v- g9 N- s- e! W
  2377. LDA #$000 N+ |: o+ z- ^& J( O- F
  2378. STA PPU_OAM_ADDR
    ' G: i7 T, v+ `" ]+ d* m" p
  2379. LDA <Music_Item_Cur# c! @' H/ x5 ^4 `
  2380. SEC
    9 e4 R4 O9 N5 n1 n& S9 [
  2381. SBC <Data_Buf$ i8 \7 x6 M) G. I2 l; Q5 V
  2382. ASL A0 H7 ?) R" ~/ d# w# p$ T5 _; h
  2383. ASL A/ t1 Y4 N: Y  \0 K/ V8 \
  2384. ASL A
    ) J( N, M6 Z' I
  2385. ASL A
    + M  d& W4 Q5 X0 k) a% F
  2386. CLC* ]! h2 w; t0 h0 F
  2387. ADC #ARROW_Y_OFFSET
    - N/ }1 J! ]' E7 @5 l
  2388. STA OAM_TEMP_ADDR + $008 C. L8 {% L9 `: X9 f2 P0 l( j
  2389. ;STA PPU_OAM_DATA' L4 p  h: D2 E; k% O% d& P! C; t
  2390. LDA #$1F
    0 k# V. Q& q: b4 K' S
  2391. STA OAM_TEMP_ADDR + $01
    4 g; l6 a, H$ V- P/ o
  2392. ;STA PPU_OAM_DATA
    ' P, o  H4 j( ^: [3 x2 B
  2393. LDA #$00
    . w4 K  O& m) m
  2394. STA OAM_TEMP_ADDR + $02
    # S$ _/ D' K( }
  2395. ;STA PPU_OAM_DATA
    , T7 k. k+ i7 ]2 s4 }
  2396. LDA #ARROW_X_OFFSET1 ]' B& k. d0 _  H+ W6 m+ c, f
  2397. STA OAM_TEMP_ADDR + $03
    7 D* N- O; M' l4 l( Z7 L, v5 n1 `/ r6 ^  J
  2398. ;STA PPU_OAM_DATA. M* m# T; D2 m- ]+ N1 u5 d+ {
  2399. RTS
    7 d" j3 R; ]' ^" ?& q2 d/ h2 V

  2400. ' a+ x1 G( K" Y) @+ ]$ t
  2401. ;--------------------------------------------------
    0 m# R2 w( a! \' Y
  2402. ;命名表数据* @; I! d, I2 @2 s' m% k+ j% O
  2403. Palette_Attributes
    2 d; e9 X* u9 p9 m
  2404. .IF SOUND_BAR_SHOW_ENABLE
    1 l5 \) t8 b% R0 f
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    + f' k7 I" V4 Y' q$ _( c6 \
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55( C6 H: z1 V+ [9 o
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75( k5 Q, G+ ~( f  l6 @/ c/ |1 ?
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA6 Q( ^6 y0 j: p4 b2 I# K* ?8 a
  2409. .ELSE
    ' ^3 _* C+ T" h; i3 y
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$552 o" m- I9 C9 b! g5 d9 D" q
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$552 \6 b, \+ |# R* c( C( Z$ \" Q
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$756 S' G8 ~( s( t6 r. i
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA& D* ~5 F& B: V
  2414. .ENDIF
    2 D' Z, o. j: `$ D% y- ^+ H3 P0 z
  2415. - }/ Y% S0 n& R. F& F" I
  2416. ;--------------------------------------------------
    + Z5 `$ t# f' _2 w9 W
  2417. ;调色板数据4 o8 `) h  y7 g. b) K
  2418. Palette_Data
    & Y' y! [2 I6 x1 {# J9 A0 f
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F$ v% K; T+ {2 l' T: x9 l% a
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F( w7 X8 b6 @( _1 V  K
  2421. / \. e1 H* c4 Q
  2422. ;--------------------------------------------------& {  y  z* q: V+ B$ g% y
  2423. Static_Text_Data: t+ s$ T4 Q7 R. M
  2424. .WORD Static_Text_Caption_Data( a0 N/ X* q/ ?0 P
  2425. .WORD Static_Text_Author_Data: f5 @4 @6 X- z5 u3 ]
  2426. .WORD Static_Text_Date_Data, d0 L$ j  R# |+ U
  2427. Static_Text_Data_End
    . _, {5 q3 l' }8 x! r9 d; a  V
  2428. , e& ]. b- A4 K; m) D/ X* ~
  2429. ;--------------------------------------------------+ F9 i6 K; O. d! `& U+ v8 Y
  2430. Static_Text_Pos
    $ X  _  y! U; l# g1 F
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    2 ~' H; `" n- ^! V
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)4 e8 n& `2 |( [; f
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    " P0 ~3 m) `; }% s+ M4 g' i
  2434. Static_Text_Pos_End
    2 C8 N: `; s. U/ `$ h- @
  2435. 5 `; @6 y! z8 o2 n
  2436. ;--------------------------------------------------
    1 H# V7 X% F! {
  2437. Music_State_Stop
      `" A$ L2 R' }4 p( e: D
  2438. .IF SOUND_BAR_SHOW_ENABLE5 A4 I1 T5 G9 R! E8 Z) W
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00/ l+ y. k" l) F9 V( ?9 s* I
  2440. ELSE
    ( m# O! g. c# ?! O
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00# t# f$ o2 ^* s
  2442. .ENDIF
    , X% [* Q) g0 u4 L7 E# _
  2443. Music_State_Play" |5 i( H. w; G% @. i% s
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    $ o" X0 ]6 m6 A, o7 i; ~
  2445. * `. T2 ^  E9 R/ q+ x) W
  2446. ;--------------------------------------------------, X& K' Z: K8 O3 V" \( F
  2447. Sound_Bar_Text_Data;声音类型文本
    4 U- S# @# \5 {) f% I
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    2 s! b; F  K" b- C% i
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    6 H- U: M! i8 z9 y" T
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"  f. I7 V8 ?, k& N* s
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    , g% d. A( |! v9 v
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00: v7 \" v5 i2 \+ A. g
  2453. 6 M& W- A( E" _3 Y' ?
  2454. .IF Track_Name_Pos
    9 v, i, g8 y& T4 W# K& c& [

  2455. ; s! T4 ?; a, j- ~5 N3 G
  2456. ;--------------------------------------------------. q4 Q  Y% l  }& m
  2457. Track_Name_Addr_00;曲目名地址索引
    4 K# V# ?9 ]' r( N+ g! E8 [
  2458. .WORD Trackr_00_01
    ; `' `1 Z$ K- U

  2459. % |+ [; h4 |, y- \9 A( m
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"8 M: r/ @8 S. W) |
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    & n) t0 F0 o+ ^- U
  2462. 8 k  H2 d: T% a4 N9 [' w
  2463. ;--------------------------------------------------
    / g2 H7 r" {/ V
  2464. Track_Name_Addr_01;曲目名地址索引
      {$ P8 s& R' O: u
  2465. .WORD Trackr_01_01: X3 k! ]3 Q- j: V! I) E

  2466. " v; p. }( e' L
  2467. ;==================================================9 ^" h4 C# E( b& w2 y3 x
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"! ]6 o6 W2 ^$ C
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"" ^; r7 N& P( H& Y" v8 |

  2470. / T" ~( f2 y( E- l7 m' z: p
  2471. ;==================================================( S0 l6 \/ J3 q& j2 k
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    8 K7 {3 l" h- Y4 I; T
  2473. .WORD Track_Name_Addr_00
    & d! u9 h5 P7 h" v1 {
  2474. .WORD Track_Name_Addr_01
    5 I8 u2 k) i5 K! H, O# u: G8 Z( y
  2475. .WORD Track_Name_Addr_01
    9 z, Y& h1 z2 p7 {

  2476. " P' y& Q: [6 K
  2477. .ENDIF) ]+ S" J0 J! k. r3 m" l2 o

  2478. # w: V3 n+ c* v$ q
  2479. ;--------------------------------------------------
    ! H0 u( R' Q# B8 w3 P3 K9 s
  2480. Static_Text_Caption_Data;静态文本数据) S) M- g3 W  i- ]4 Y0 O  u! N- @4 S
  2481. .DB 164 {. w; {1 Y5 y, y8 z
  2482. .DB "FC MUSIC 12 IN 1"# O6 E  V1 I) ^$ l0 E
  2483. Static_Text_Author_Data3 Q' x+ _; Q$ I  }
  2484. .DB 25
    ; W4 ^# \1 ~8 m/ `4 A; D8 I; m
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    2 L! Q6 s: Z5 [# }- e
  2486. Static_Text_Date_Data
    0 u: d: A% D6 U
  2487. .DB 103 k; Q. p+ B2 d* P# ^0 ~; T+ i! g
  2488. .DB "2023.07.23"" u0 I; N7 L2 {* c
  2489. ; O# P/ I+ R$ D
  2490. ;==================================================9 F6 i* t8 E1 P3 b, \' G1 _
  2491. Music_Collection_Name               ;专辑名间接索引
      C8 b: w9 s% L& S: u( S
  2492. .DW Music_Collection_Name_00
    4 ?. o8 z( C3 x& i$ O
  2493. .DW Music_Collection_Name_01
    ) B( o% Y  z* L( b
  2494. .DW Music_Collection_Name_024 N( d7 a/ T& d
  2495. .DW Music_Collection_Name_03
    8 j! S0 t* s1 I; o
  2496. .DW Music_Collection_Name_04
    . \) N' S2 K& j1 G6 Y0 L2 N% }
  2497. .DW Music_Collection_Name_05
    ! V2 p1 p& z6 f8 R
  2498. .DW Music_Collection_Name_06
    / a' }; `" K: T# F
  2499. .DW Music_Collection_Name_07
      U4 F1 b( X; E  l
  2500. .DW Music_Collection_Name_08
    , X9 O) p& |; a0 q7 m( M
  2501. .DW Music_Collection_Name_09
      ~; }3 z$ B3 K* a
  2502. .DW Music_Collection_Name_10
    : m/ K5 L" t, ^0 d' |% v
  2503. .DW Music_Collection_Name_11
    ( ?3 z- s5 M! y( g1 s- n; G& _

  2504. 1 Y9 ]+ Y  n1 Q6 r, H+ M% ]
  2505. ;==================================================  d: g2 U* K6 C
  2506. Music_Collection_Name_00            ;专辑名文本数据
    " k- F; i! Z. M
  2507. .DB 11,"1.RAF WORLD"/ e2 ~! a$ s$ T' f9 \
  2508. Music_Collection_Name_012 n  P+ s* N9 w0 f" a; J) x
  2509. .DB 15,"2.FINAL MISSION"
    3 q) l' V3 n0 K' C
  2510. Music_Collection_Name_024 r7 f0 o1 n: C, i
  2511. .DB 06,"3.KAGE"9 }, W* o! C- M2 Y' \
  2512. Music_Collection_Name_03
    ; |( J, A: T, b& n/ c9 t
  2513. .DB 16,"4.DOUBLE DRAGON"
      e1 ~; u, K& Z" J
  2514. Music_Collection_Name_04
    $ M, e- P: N( d0 |6 G' y$ A
  2515. .DB 17,"5.DOUBLE DRAGON 2"' I! H; b7 Q: w* a( y, t2 C
  2516. Music_Collection_Name_05, L! G( n8 J2 K( g
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    # U; Z& e% r1 n+ n6 d) A6 N
  2518. Music_Collection_Name_06
    ' P6 [% x  ^3 c7 ]7 ]
  2519. .DB 09,"7.ROCKMAN"* R6 V6 S2 J) Y$ x$ H4 b
  2520. Music_Collection_Name_075 i  f# p! t5 M6 X
  2521. .DB 12,"8.ROCKMAN 2"
    " D- n, v' T3 x, I( k7 i! w1 V
  2522. Music_Collection_Name_08
    1 x; x  ~9 V0 G) f$ O
  2523. .DB 12,"9.ROCKMAN 3"4 e0 B7 a. w1 j2 {
  2524. Music_Collection_Name_09
    / F; o0 k4 w2 S) P: k0 D
  2525. .DB 12,"10.ROCKMAN 4"
    + z7 x, }1 S6 d4 |( U, m4 R! B
  2526. Music_Collection_Name_10
    : b3 Q1 j: G% k3 |
  2527. .DB 12,"11.ROCKMAN 5"
    8 h5 d& \, d9 G, s
  2528. Music_Collection_Name_11
    2 a; L* y* V1 P" ~6 \" r
  2529. .DB 12,"12.ROCKMAN 6"
    0 u/ J9 {( q6 T; w8 @  i5 H
  2530. & |. }% Q9 q7 g4 ]1 |
  2531. ;==================================================6 G- K1 s8 w% \  k
  2532. Track_Name_Addr_Flag                ;显示曲目名标记6 Q# E9 u2 l  Q1 c
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    . `, J: [/ y# f
  2534. 2 S1 q# B8 J7 _) d! A
  2535. ;==================================================
    ( y/ G; x. w2 r3 y& ]
  2536. Item_Pos_Data                         ;光标箭头位置
    % U, V# X" |3 A; Q0 Y
  2537. .WORD ITEM_SHOW_POS. s( j  H/ q" c( w7 H
  2538. .WORD ITEM_SHOW_POS + $00409 Q! T  K" B0 R: ~: Q: N0 `
  2539. .WORD ITEM_SHOW_POS + $0080
    ! M6 F! D" W! J( J3 [
  2540. .WORD ITEM_SHOW_POS + $00C0
    5 P7 o" S- E4 S2 n
  2541. .WORD ITEM_SHOW_POS + $0100
    8 O) h6 c7 L4 ^
  2542. .WORD ITEM_SHOW_POS + $0140$ o7 I% G% G$ m" y, M* F2 s

  2543. ! d7 ^. N2 K0 X& \, W7 ~5 t1 M
  2544. ;==================================================
    ; x0 Q7 e3 S( d; d
  2545. Sound_Init_Port                 ;音乐初始化入口地址) N& @+ I8 H! c- X7 F
  2546. .DW $BFC8: ^9 W: [& K3 a/ q7 k7 p
  2547. .DW $D7F0  j) R" Q/ ~  N: X
  2548. .DW $9FC0
    2 ]# {- v6 n& c' E& I8 D8 \3 K
  2549. .DW $BF70% X& b( }8 R6 H5 v
  2550. .DW $8003- ?( Q4 X1 e+ Z- C6 X
  2551. .DW $BF30) N6 x+ }  d: q3 l# F  o
  2552. .DW $9003
    + f1 U3 u; y3 Q; H1 s% ^. z( B
  2553. .DW $80037 p; L& D: Q, h0 H! G2 v
  2554. .DW $8003
    9 @$ k, u9 d0 l% J  C1 O1 E# i
  2555. .DW $8003
      m- W7 O1 `2 x7 M- i: Q
  2556. .DW $8003# B; N0 I; }5 J5 W  A, ~4 Y% G
  2557. .DW $8003
    0 S# J1 \8 |- A1 L$ @1 T0 A; T* |

  2558. 4 W* a5 X  t6 ~
  2559. ;==================================================
    " }3 r" R/ J3 w
  2560. Sound_Play_Port                   ;音乐播放入口地址1 b$ T% C* X4 B3 _; ?& k  [
  2561. .DW $8000
    " o( b8 R1 d6 v( c) {7 v2 E
  2562. .DW $8001- z5 j' v3 ?5 A& I$ g
  2563. .DW $A0006 r) r9 u; f6 @8 u5 M+ i& _+ y# n$ P
  2564. .DW $8003: ^* P+ y- o" Y1 X' s2 C! ^
  2565. .DW $8000
    & b6 q, n. E" {
  2566. .DW $8003) H: q1 S5 n" Y$ K. X
  2567. .DW $9000
    6 Z& M! L! ~/ s: y* R/ r. M1 o: \3 x3 }
  2568. .DW $8000
    2 w9 C; D5 I. `$ C" K% L: J
  2569. .DW $80004 A: M" T4 m& c) t5 l1 `
  2570. .DW $8000: c# Y3 A8 j6 B& c+ A
  2571. .DW $8000( A2 N4 Q& D# B; J
  2572. .DW $8000
    , c: c% h2 E% F" r
  2573. : Z. t8 A6 E; O
  2574. ;==================================================
    1 a- V- D1 T2 }4 e, E% H
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    , J. Q, Z, H0 ~# p& B$ B5 }6 T! \
  2576. .DW $0000
    4 N' X; O& m1 U
  2577. .DW $0000, O+ g1 A! q/ B6 j0 Y) f& Y$ o) C: i
  2578. .DW $0000
    2 l5 J0 Q5 t. B8 a' M- o
  2579. .DW $0000
    % u6 ^# [1 w: p) s) Y
  2580. .DW $0000
    + g  z" h" n& ?. c* J: h
  2581. .DW $0000
    & w0 f  y9 U2 J' k
  2582. .DW $0000
    2 d, X8 q; \2 T3 c- G# o9 S! m* S
  2583. .DW $0000" O, [5 d! T3 D
  2584. .DW $0000
    + |! L4 k  u" Z# G
  2585. .DW $0000
    7 k0 ]9 F# F+ W
  2586. .DW $0000
    - b# |2 O3 y2 x( A1 ?
  2587. .DW $00007 c2 i3 b( g( E( f2 W- M
  2588. ( f2 O# @' e; e$ c3 O: J
  2589. ;==================================================. w9 L- s6 c% t. z: ]
  2590. Sound_Total_Port                          ;曲目总数
    7 m( J  e  K; R+ f9 O
  2591. .DB 38
    : j) q* v) l8 R5 w' w$ ]  a. N$ s
  2592. .DB 33
    - s9 q3 r* h1 d
  2593. .DB 49
    , }* R7 g! {! |# Q6 S
  2594. .DB 41
    3 v+ j) E  [/ @; l5 j" Z
  2595. .DB 83
    8 I+ s1 Z! O  U" Y0 n5 e- [) F9 A
  2596. .DB 70
    ' y4 j1 }8 x; H
  2597. .DB 50; |- x$ c% t# N$ P; [* |
  2598. .DB 671 {# l+ K2 {& t$ a* t/ n0 @) u
  2599. .DB 57
    " U, F% s1 |( P* F3 ]+ C  @
  2600. .DB 71
    2 _9 k6 {9 ?* g/ M! e/ Z
  2601. .DB 76" I8 V, C/ f1 S
  2602. .DB 102
    . i5 I0 O% I3 O0 R/ f4 I
  2603. ( I: W; d& Z  _1 i4 e' M% x
  2604. ;==================================================
    : h( Q: Z. W0 ?$ G
  2605. Sound_Start_Port                      ;起始播放曲目
    # X; w$ s2 h" N9 K/ V3 H- z8 i
  2606. .DB 000 ]; s& E. F& j& Y+ U6 a
  2607. .DB 00
    # a( L& P  G. R1 h; T) y: I
  2608. .DB 00
    4 U; [, ~0 H3 _0 a
  2609. .DB 00
    " x5 u" ?2 z6 B- d8 q
  2610. .DB 00
    3 y' [  f4 a; g  o7 N9 C+ d
  2611. .DB 00
    . H( m# v1 T$ O2 s- d0 [; _
  2612. .DB 00
    4 @: ?7 H. B, X+ `% J
  2613. .DB 00
    . H2 }8 Q2 }1 f( m$ I/ N$ V6 Y
  2614. .DB 00
    " \/ b# n  r$ O2 ~
  2615. .DB 00
    " \8 Y. P! C! k+ e' G4 v% Z
  2616. .DB 00
    0 W" S8 M6 I; R6 I9 B1 H5 N8 E7 R
  2617. .DB 00
    ( Q3 Y* w  E* Y! Y# Z; s

  2618. 7 }& C3 G( M; [
  2619. ;==================================================
    % r2 G  ^( u4 A; |1 S
  2620. Sound_Bank_8000                      ;专辑bank_80005 X" X' Q6 `3 l- Y# Y
  2621. .DB $10
    7 [7 F# H2 b, C- B
  2622. .DB $12' G9 r/ V+ O7 }9 @& k) A+ v$ E. J
  2623. .DB $14
    2 @# E5 a9 O7 R9 j
  2624. .DB $16
    8 ^# `. D: \  r+ {
  2625. .DB $188 U! g, b6 o$ @, U7 I
  2626. .DB $1A
    . J; }4 Z$ \& p" u% L1 m5 Q5 j  ~
  2627. ! q  R+ N& g- e' j" V/ M0 [
  2628. .DB $00
    * M/ [/ s: a# M1 }9 R6 t; S
  2629. .DB $02
    : i7 {9 ^8 X& i/ f8 O
  2630. .DB $0D
    7 |2 A5 ?7 I3 v; h, F
  2631. .DB $04" u* s: S" |& I8 e" C# J. s
  2632. .DB $07/ K3 T+ h3 W  `' u, W6 z; T
  2633. .DB $0A
    0 Q3 m4 V9 U2 F- y6 q

  2634. " E$ ], O! o( m* \& V$ d0 Y

  2635. * v3 r" C; `* Y- T" f
  2636. ;==================================================
    / r$ x# k, }. J
  2637. Sound_Bank_A000                      ;专辑bank_A000
    / X0 I/ N6 |% p
  2638. .DB $115 ^- A2 b5 n) x' ^
  2639. .DB $132 M. S& t$ W9 O
  2640. .DB $15! b, [# Q' ^8 C" d# S$ S
  2641. .DB $17
    1 g# F2 G$ u6 B
  2642. .DB $19
    ( J6 o- ^: n/ ]
  2643. .DB $1B# I; P7 ]' h: f# O7 z5 U

  2644. " ~0 k' N$ _  E' S' I) P' {  F8 L
  2645. .DB $01  g. K, Y( S6 A" ~
  2646. .DB $03
    ; n5 Z/ n" Q. R3 V9 l
  2647. .DB $0E5 y; n% G, M% z+ D, m' x
  2648. .DB $05. R6 Y% s( z0 \: t
  2649. .DB $08' D6 L1 X+ C7 X3 T" b
  2650. .DB $0B5 S- \1 v, ?9 ]/ x3 S* B, f

  2651. 2 y; R: @: G# z, L

  2652. ! v- q5 x: }. A/ J0 K2 c
  2653. ;==================================================, v# a  J$ d2 E6 D4 F8 a* I" s
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    1 h8 [" Z2 _- e/ U% b
  2655. .ORG RESET_ADDR
    8 b1 L* J1 F7 Y+ N
  2656. 0 K! n- v9 c# S
  2657. ;==================================================
    7 |7 Y: R$ O0 e
  2658. Switch_Bank_8000;切换bank到8000-9FFF: ]/ y  C& w' E8 M' @( G
  2659. PHA
      O; f7 _& u$ O5 j5 F; Z& t
  2660. LDA #$06
    3 Q" O+ C5 _  n% x9 {) U+ S  I' F
  2661. STA MMC3_BANK_CTRL
    / W/ m1 N, }# n* s" L
  2662. PLA! {4 {* o  P" s
  2663. STA MMC3_BANK_DATA$ r  T1 e  V4 f
  2664. RTS
    ! D1 u2 e5 D3 I8 H# B) K$ c# d' S
  2665. ( t2 s* W$ k5 K4 @3 y& t) t
  2666. ;==================================================
    # A- M% j( j; e+ z. ~7 _: \8 M" P$ c4 t
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    0 [* n% N' L1 @
  2668. PHA
      B4 B- ]1 f) v: ]+ S
  2669. LDA #$07
    4 g2 G) I* F/ E) J6 ~$ ]: O% u& u
  2670. STA MMC3_BANK_CTRL
    + H$ P7 b9 c* D/ t# X$ `
  2671. PLA; {# X$ L$ V3 F4 C% k* ~
  2672. STA MMC3_BANK_DATA
    : W/ |7 |/ B! S8 }% Z& `2 V. z
  2673. RTS
    9 x4 H! M' j9 @
  2674.   Q( e! t: j' B) R
  2675. ;==================================================
    9 y3 b+ M# Y0 k, T+ U; G( `( r
  2676. Switch_Main_Bank;切到主程序bank
    - H# S! v) \! P2 j! W9 p& Y( }
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK7 T0 b) A9 J: O# h8 y: ?% L0 G
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    $ j6 l6 q* |9 B' o4 b
  2679. RTS
    & n/ _' X6 w! j# g+ C- S/ C. e* a" r

  2680.   ~3 H: x, |3 R
  2681. ;==================================================  G  X+ \& w, t
  2682. Sound_Reset;音乐重设(如果有的话)
      x0 q# q& Q5 ~4 T
  2683. JSR Switch_Music_Bank  ;切换到音乐bank& c) `# l5 \. K
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    0 h' S" |# y- t8 C; B8 C
  2685. JSR Switch_Main_Bank   ;切回主程序/ r  E, U" ^" n. d( X3 G
  2686. RTS; D6 Q* h. W: J4 Y! ~$ G
  2687. * f7 J+ f8 e+ F# q7 E
  2688. ;==================================================$ W( s0 u: ~1 Z: X8 K- r
  2689. Switch_Music_Bank;切换音乐bank
    0 }  `6 i' M9 J
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号3 N; ?( T! `6 l, }. A4 E
  2691. LDA <Music_Bank_8000
    + Q# i1 L* A6 z8 j: x5 K/ V  o3 s- h/ x. A  X
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank& b& e  R* P+ v- L$ U  N/ z
  2693. LDA <Music_Bank_A000
    ; U1 m9 z1 O% K% i+ w0 K+ @
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
      j; F% q3 O" H' X& C
  2695. RTS
    ; z- P0 r! S4 A5 V0 X+ `: I

  2696. $ @+ s; a6 s9 O" a! o
  2697. ;==================================================: r5 l: ^# h/ K& g1 L
  2698. Sound_Init;音乐初始化
    6 S! a; t- M/ E. Z0 b  U6 `& R
  2699. PHA$ g1 s' d2 a& p$ x
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    ! E6 c, ?, f  N# j* I5 q1 I2 u' e2 t
  2701. PLA5 z: f! a' a8 n' E  Y1 B+ o# t- h
  2702. JSR JSR_Addr_Op        ;执行音乐初始化  V# G0 Y; c/ d/ ^! L/ e
  2703. JSR Switch_Main_Bank   ;切回主程序
    6 Z" @, {5 @; f1 C' U
  2704. RTS# _7 B8 x& F' M5 r7 R7 K
  2705. : D4 _2 u3 Q/ n0 M- G
  2706. ;==================================================* w4 R; d( b; I$ m
  2707. Sound_Play;音乐播放3 L9 L2 U7 }# ?- H1 E: e% H- S$ a
  2708. JSR Switch_Music_Bank  ;切换到音乐bank3 d1 s! I# u8 t# o/ l5 C2 @+ M( o4 T7 F
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    1 J7 q/ m9 B" h& `4 I6 ]
  2710. JSR Switch_Main_Bank   ;切回主程序
    6 g, _; D& X; m6 I* u/ J1 i
  2711. RTS
      M+ g# }2 X1 U8 \

  2712. - U7 r( t, F; P' {% b' c) p
  2713. ;==================================================
    2 H0 ~0 b  f% O5 {
  2714. MainLoop;死循环$ N' M; f5 \$ s; h
  2715. JMP MainLoop' w. O- G  v: t

  2716. ' Z( |( X- U/ |" L7 x6 X4 o; A' k
  2717. IRQ_SUBPROCESS_JMP = 01 D. g+ W* ^2 Z) w2 k8 M, k8 i
  2718. : p" T7 w4 t* t' ]  M( x. O3 L
  2719. .IF IRQ_SUBPROCESS_JMP% U' j* ~" L7 o% @+ t# ]+ v: c
  2720. ;==================================================5 L7 I' }: a: w9 }; O2 q  T
  2721. IRQ_Process_0;IRQ处理过程0
    ! y5 v5 s: E! N0 g* h. s

  2722. - }, M1 H4 Z+ E- i/ }" W; G0 W
  2723. ;15条扫描线后触发IRQ, t$ c8 }( i6 r: F0 C# L3 `
  2724. LDA #15
    8 w8 \, g3 [* s" H' j
  2725. STA MMC3_IRQ_LATCH, G! T. S6 q  Z" I8 r' G" J
  2726. + I+ f5 G. N3 K  e
  2727. ;设置屏幕滚动
    $ \, B' W8 F- v$ @4 ~. H  A
  2728. LDA <Scroll_H
    6 L& F  B7 M. f- Q- Q0 t, o; b" {! ?
  2729. STA PPU_SCROLL& E& W( C5 M8 A1 W4 T
  2730. STA PPU_SCROLL9 _5 s) N) _9 O( Z/ _; r

  2731. 8 ?5 x; w( e1 k& E4 n/ c; U) A
  2732. IRQ_Process_0_End! L% F; Z; O) I; O* L7 o- L4 B9 Y  }
  2733. INC <IRQ_Process_Index' N8 e7 t# l' {" n6 M% b* D0 d
  2734. JMP IrqProgramEnd5 i8 y4 _3 j9 i3 x. T" T3 l

  2735. 5 G3 T3 B" R$ Z0 f2 \
  2736. ;==================================================9 s4 q2 d! ^, Q2 O& u
  2737. IRQ_Process_1;IRQ处理过程1' q; T8 ^" j; I9 G6 h

  2738. 2 Y& y! n4 `$ L- k) I  h" f+ {
  2739. LDA #55
    2 E  G' V# d6 ~" \  V( P& A8 }; q. |
  2740. STA MMC3_IRQ_LATCH
    0 ~' n- }! V$ e8 J8 i$ A5 w3 L
  2741. 4 c5 A- y# q3 V( x) c; j/ |' W
  2742. ;设置屏幕滚动) ?9 I$ ?$ z4 k& M. S
  2743. LDA #$00* M9 U5 W; h+ Q+ m
  2744. STA PPU_SCROLL! j" N' c2 b# \0 u- N8 a
  2745. STA PPU_SCROLL- X' N  n9 Q; w3 H! f" ]
  2746. # h5 s  h  x  L" T! q
  2747. INC <IRQ_Process_Index) w, Q* y8 u# R. T# C: T' r) _2 V
  2748. JMP IrqProgramEnd
      t% T8 ], Y& H

  2749. 9 ~! X% e( }, K' C/ f/ u7 H" w' z& Y
  2750. ;==================================================; N+ g2 [* b" v3 h- Y% ~( L
  2751. IRQ_Process_2;IRQ处理过程2
    + v! {9 d0 r! a
  2752. & _6 L2 R( L" X" ?
  2753. LDA #15
    ) j( D3 j2 |! |# Z/ e
  2754. STA MMC3_IRQ_LATCH
    8 D! f" U' t1 |" W) A# {

  2755. # R! h1 e3 G; O
  2756. ;设置屏幕滚动
    8 |  A' d# m) y0 i! [
  2757. LDA #$002 Y: ]" _  H6 i7 i* \" C9 d
  2758. SEC5 i2 l7 B8 H# H
  2759. SBC <Scroll_H
    % U! Z5 H3 {% V3 C
  2760. STA PPU_SCROLL" W* v+ i0 {: e& i4 Y: S
  2761. STA PPU_SCROLL
    / r  _& q" O/ j8 i

  2762. ! m. M! Y3 R; R
  2763. INC <IRQ_Process_Index
    2 g4 N! s0 F/ J) g- m
  2764. JMP IrqProgramEnd; J& E+ m* ~" W: z/ z1 j1 I
  2765. 7 u& f/ z: X6 \/ u" a1 q& @
  2766. ;==================================================) k( D! _& [: I' ^2 v4 F
  2767. IRQ_Process_3;IRQ处理过程3
    ! z- w+ b: z  d- ^$ ~0 {& I

  2768. / K! |7 U. c3 g! X1 R' v$ c
  2769. ;设置屏幕滚动
    1 O/ O5 l. r0 i' u  T# _
  2770. LDA <Scroll_H
    ! U6 q9 G6 y1 Z
  2771. STA PPU_SCROLL2 _& g2 Z8 y- P/ M- v
  2772. STA PPU_SCROLL. ^* k5 s1 g) _* w% j! P

  2773. 1 |+ N5 G- Z8 O9 e/ J  N, j3 k  ?
  2774. ;禁用IRQ# V" Z* p0 G  b7 P$ d) @* z
  2775. STA MMC3_IRQ_DISABLE5 f; Q' `5 k9 R6 W; l& n/ `3 B
  2776. JMP IrqProgramEnd
    * v/ j( `& C* s# e$ ^0 r* A
  2777. - ], Q, x9 E! g3 o, A' c" W7 y6 P
  2778. IrqProcessAddr! ~7 I; s" ~+ H; X# N
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    3 ]! ~; X- H9 d& G

  2780. : w& r" _# h( a& V+ a
  2781. .ENDIF
    " ]# [( T& N+ G7 E
  2782. " O) F, o% L3 l+ Y* p
  2783. ;==================================================
    ! n0 }! z6 ?! ]; Z+ m& x
  2784. ;IRQ滚动模式常量* f. Z, ?9 b( y; Q
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    + N3 V% Q9 }+ _) ~. a5 L$ `5 p, x
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动6 n, C; `! i  {" W8 h
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动" n* G- d( t9 n% a- x, A/ V

  2788. 9 w- N( G0 G! \
  2789. ;IRQ扫描线数据$ c- U" a- a4 `5 c5 x. @; b
  2790. IRQ_Scanline_Data8 ]- L) q0 W! D9 K! b4 n/ I
  2791. .DB 8" E" Z, m4 S" o4 Q& o4 ]
  2792. .DB 54
    * @+ ^) W4 J1 X8 E3 x
  2793. .DB 8
    / d0 d( b; h  V% ~7 ?
  2794. .DB 00 ;关闭IRQ
    5 S9 c" Q8 s9 z) j

  2795. 9 |: }5 ?7 k. q! n
  2796. ;IRQ滚动控制模式
    * `+ r+ e( ~/ W' u% j7 Q
  2797. IRQ_Scanline_Mode
    : z% z: N0 j# O' r
  2798. .DB IRQ_SCROLL_MODE_ZERO6 z1 ~/ S- ~# r4 p/ j0 ^8 A( x" j; g+ Q
  2799. .DB IRQ_SCROLL_MODE_ZERO, f+ `& B. U, n9 y/ K
  2800. .DB IRQ_SCROLL_MODE_RIGHT% Z, r' q% g5 p! r/ r" B0 K( S
  2801. .DB IRQ_SCROLL_MODE_LEFT
    2 M0 X) ]( D3 R4 W
  2802. 5 e* w- o9 y0 F$ t, E
  2803. ;==================================================
    1 l4 [, U- J) k6 g: e4 w
  2804. ;IRQ处理) b1 P9 i+ @, |' r* m0 o( S
  2805. IRQ_Process0 Y  L8 ~& X1 ?* T
  2806. LDX <IRQ_Process_Index8 k9 H% U2 I$ |! R" @
  2807. LDA IRQ_Scanline_Data,X
    & k5 @6 g8 `9 ], o; n. @
  2808. BNE IRQ_Process_Latch( m% z9 S: C# I8 e6 p6 `
  2809. IRQ_Process_Disable;禁用IRQ& ?, G7 B2 v* R' Z. a
  2810. STA MMC3_IRQ_DISABLE
    $ |( g/ H" C( I" J
  2811. STA IRQ_Process_Index
    % n5 r  Q% D: m3 }0 [
  2812. BEQ IRQ_Process_Scroll
    % A, z$ N! d% H( T" t" F
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    ; u' I: S* f$ A& ?; c
  2814. STA MMC3_IRQ_LATCH
    2 b$ L* ?6 s) d6 D& Y+ N
  2815. INC <IRQ_Process_Index8 O) O. [" _2 d+ Q' a% _5 d# o
  2816. IRQ_Process_Scroll;IRQ滚动控制  b9 T+ L" O3 \% O+ r
  2817. LDA IRQ_Scanline_Mode,X( r( _1 ]' r5 ~; R3 E% G! [
  2818. CMP #IRQ_SCROLL_MODE_LEFT+ k- L( X9 A7 ~& r3 H: w# T, g( g
  2819. BEQ IRQ_Process_Scroll_Left
    % w7 n8 U5 @7 @% e
  2820. CMP #IRQ_SCROLL_MODE_RIGHT% F& e6 w0 v. Z& |& k0 b- ^+ D, ~
  2821. BEQ IRQ_Process_Scroll_Right% `: Q$ p1 _/ j, p: f2 }6 W
  2822. IRQ_Process_Scroll_Zero;不滚动
    ; c9 ]6 y: R: A3 Z
  2823. LDA #$00
    - Y' _5 |2 B5 ?4 @2 n" f
  2824. STA PPU_SCROLL
    4 y5 g. T0 \( A" `' U# Y  L
  2825. STA PPU_SCROLL
    - f* N, A+ v$ j
  2826. RTS( f2 y2 c$ B( m- R  k7 o% |
  2827. IRQ_Process_Scroll_Left;向左滚动- J0 j. K# p, Z. `9 M) {7 H) v
  2828. LDA <Scroll_H$ U" y# H9 r$ r( M3 v+ g
  2829. STA PPU_SCROLL9 R1 z! x- Y2 Y# L5 N1 N
  2830. STA PPU_SCROLL
    3 y1 [; C1 m# a; _. w: c: q
  2831. RTS' E# P9 c2 _1 F" t  X
  2832. IRQ_Process_Scroll_Right;向右滚动
    * ]; P+ ?8 A0 Z' S# E* \
  2833. LDA #$00
    ! z7 f. p, j8 @, M) y
  2834. SEC$ X, f5 x* n1 r
  2835. SBC <Scroll_H
    . y, T, F, }( X1 k  X
  2836. STA PPU_SCROLL
    8 z7 W2 w7 @! O  J  u3 G
  2837. STA PPU_SCROLL
    # y5 ~/ o8 j& H8 l
  2838. RTS
    & @8 V( {) c0 P0 C
  2839. 0 Q. q# w+ c# r, g# h9 D/ r
  2840. ;==================================================
    . M3 x8 Q+ }# l3 r  X4 n" h# }: o
  2841. NmiProgram;Nmi中断处理
    7 n/ M0 p- ^8 C4 w4 i9 R8 V8 \2 ]
  2842. PHA
    * ]# Y5 x) M( M3 f' B, ^, i* T' b' C( x
  2843. TXA
    1 Q, o6 U. C" ^4 D9 O+ w$ G
  2844. PHA+ z9 w+ @3 V: j. V& i
  2845. TYA
    & }$ b; M" \0 Z9 u
  2846. PHA# P" d  J* v/ ~0 s
  2847. $ z! v' s: l1 p! Q3 Z/ @+ q
  2848. ;读取清除Vblank标志, 防止重复进入7 n" ~2 N7 f/ ^4 ^8 G- C9 q
  2849. BIT PPU_STATUS
    3 u0 p6 X' R+ y8 Y2 |$ ?

  2850. ! u; d' H* }! b! J$ s2 R9 P5 x
  2851. ;切换主程序bank
    . y5 Q- m8 B0 M
  2852. JSR Switch_Main_Bank
    1 M  k" Y8 R0 V, J

  2853. 3 D" U0 k9 w* k# ]5 S. T! a  U
  2854. ;Nmi处理
    ( [. K8 t8 s% G9 G: r' U
  2855. JSR NmiProcess
    5 c- S5 y  x8 @) @" ]3 r/ w
  2856. ) U( e- M9 U4 n  C- f% c
  2857. Nmi_Proc_End" x) C% y7 A( f+ z
  2858. PLA
    + j8 Q7 u9 @. c
  2859. TAY
    ' W/ c2 W. o1 V2 t  v# `# e
  2860. PLA7 ?1 a. X# T: ?7 Z0 e: R; V
  2861. TAX
    " s; [9 z) }& B; J5 T% d4 `
  2862. PLA
    , \/ z2 C& d9 ~' `
  2863. RTI
    ; B4 W1 p1 F5 b+ S# F

  2864. 3 P# F: M! s1 s5 S* J' G
  2865. ;==================================================
    . a- a  V9 ?7 X6 a: x9 e$ X
  2866. ResetProgram;重置中断处理
    # d$ F$ x$ A8 S3 X* n
  2867. SEI
    ' v8 Z. X& Y, d1 G" ~( m
  2868. CLD
    ! h) {4 Q9 ^1 O6 n. `
  2869. LDA #$00% ]* U, Q" [& Y/ N6 t+ J
  2870. STA PPU_CTRL
    5 E. M5 K: `$ f' X' Y9 {2 \' q
  2871. STA PPU_MASK
    3 \( F3 y7 n& y. N/ s

  2872. 0 }; B+ q, u6 A) n
  2873. ;切换主程序bank+ f9 ]5 F5 w1 z- ^% C
  2874. JSR Switch_Main_Bank
    : [: s4 Z0 i$ `4 I7 f7 z( [6 k# m' s
  2875. ) O+ `. j" ^. ^7 I$ Q- [) u, `6 L
  2876. ;程序处理开始
    * k3 T* G5 B5 f& V+ u2 m' O2 Z
  2877. JMP ProgramBegin# n" Z) D' G% P, t1 `) g  N

  2878. - d, ^% M) D. f2 S6 E
  2879. ;==================================================
    ! Y6 h1 t* ]' B
  2880. IrqProgram;Irq中断处理
    0 t( N1 A1 r. c
  2881. PHA  g9 _: D8 Z5 |; m  h/ F  {* _
  2882. TXA& P" F& k0 P5 o! A# a# X
  2883. PHA- [* s+ Z" D) X1 }3 t
  2884. TYA( |- o7 c% L! ?
  2885. PHA9 \: r  ^2 m' h1 C
  2886. % j) q8 G+ C6 k! ^: I: s9 x2 n
  2887. ;关闭IRQ& l! i& w" ^3 C% H- x
  2888. STA MMC3_IRQ_DISABLE5 n9 e- j+ d1 A7 s1 p
  2889. & X( z) Q$ ]9 a" @
  2890. ;允许下个IRQ触发
    " W4 u4 M* s. P- E/ ?0 Y, F
  2891. STA MMC3_IRQ_ENABLE) t6 d# C! |5 O7 x% M. J# g
  2892. " t% V8 f2 w! X7 ~; L
  2893. .IF IRQ_SUBPROCESS_JMP- ]+ ?; L4 t9 D1 W
  2894. 2 V" a! z0 _1 c& ^3 e) l- j
  2895. ;执行IRQ过程
    9 W1 I0 P$ H) C  N
  2896. LDA <Data_L
    # Y. m  i: N& B: ?2 T# [
  2897. PHA( I* [- ?8 z4 B  U7 \" ~8 I* _
  2898. LDA <Data_H
    ; A' W$ E+ M* y( V9 X/ C0 \1 c
  2899. PHA
    7 I) O$ G' U& L$ v0 u
  2900. LDA <IRQ_Process_Index4 X( ^" `0 Q/ N
  2901. ASL A. o" |8 @# Z3 }& I2 U" K: J
  2902. TAY  m  n8 ^  {& ^' d: W4 U, d* p
  2903. LDA IrqProcessAddr,Y% g4 a! e5 S7 L5 m
  2904. STA <Data_L9 G* `1 K8 }1 T# d4 W& A
  2905. INY
    - Z4 w/ C$ C+ N; Q( d" I
  2906. LDA IrqProcessAddr,Y
    ) K. l& K8 C6 u# v
  2907. STA <Data_H
    4 A) H" |! L% N/ S
  2908. JMP [Data_L]
    - b/ {9 ], }  b4 P. S+ |
  2909. 3 O6 R% k$ B! l, o
  2910. .ELSE
    : j9 |0 u" |: _8 Y" x; \
  2911. % u* u$ n. [, \" X
  2912. JSR IRQ_Process
    3 l% c1 B, E" z, m6 o8 F

  2913. 4 u4 L. _, m: A+ @& y
  2914. .ENDIF
    - U, z# L7 x) N* ~* s' o$ @

  2915. $ d1 _9 g8 x" J! J
  2916. IrqProgramEnd
    + H2 y5 ^' A) R+ R
  2917. .IF IRQ_SUBPROCESS_JMP
    1 H6 f5 |; r% z& w) T6 S
  2918. PLA
    $ D& b1 L, j  \1 \3 Y6 w* j& B
  2919. STA <Data_H
    2 Z. \  i& \2 U4 G: X$ D5 E
  2920. PLA6 S; A/ o& S1 ~& z5 N& |
  2921. STA <Data_L) V; u0 x" c$ I- L: q
  2922. .ENDIF& V' k, R8 Y7 u; D$ a* ]) \4 @1 B
  2923. PLA
    ) ~# G4 o7 Q7 d
  2924. TAY) Q, q) `. f0 A; h; G. o
  2925. PLA* Q4 M' k. Q4 q4 @- `& H
  2926. TAX" G% c7 w  _. ?9 x, V
  2927. PLA
    4 x7 a4 A0 c7 b' r
  2928. RTI
    ! j! L- S# c$ `" C1 K2 A! l2 }4 Q% @
  2929. 1 e  J4 H0 h* J' u2 z
  2930. .ORG $FFFA7 @" t  T" N, {
  2931. .WORD NmiProgram2 f! T2 w& ~# F# }+ }/ a
  2932. .WORD ResetProgram8 d. i* u% y- I7 S" G" S
  2933. .WORD IrqProgram& s& @2 T" ]7 h. S" t

  2934. 3 A; Z- F$ Z$ _
  2935. .BANK RESET_BANK & BANK_DATA_MASK6 i' i4 x5 Y4 S& f( z8 S, y/ D: k
  2936. .IF SOUND_BAR_SHOW_ENABLE  I2 B, l, F1 Q5 Q) l

  2937.   x% }' \* S( c! W2 t
  2938. .ORG $FE00+ ~0 u, L  b- }. g* a3 \, Y
  2939. PHA7 p. A& p3 O8 X+ {# {( |; S7 y
  2940. STY $07BA
    & [' C3 n( c/ a
  2941. LDA #$8D( S5 s$ G9 O) X- D
  2942. STA $07BC( b5 s  e2 g) P+ E
  2943. TYA
    . b5 U1 e1 T6 m. n7 I
  2944. CLC
    " H3 f6 K: G1 v# O0 g
  2945. ADC #LOW(Sound_Bar)% {* r/ g' B( C/ F, ?" T) m
  2946. STA $07BD  Z7 q% T  V5 U# y0 O
  2947. LDA #HIGH(Sound_Bar)
    ; j- m8 M+ d. N
  2948. STA $07BE
    " r$ M; I/ D/ B, Q! |
  2949. LDA #$605 M, y( L, c" M  l  `
  2950. STA $07BF
    3 ?  D2 q8 e$ j0 p; S9 r2 B* t
  2951. PLA
    : w: }/ {9 v& u* u1 d2 b  ?6 n
  2952. RTS
    , P- T; L8 m, s7 l/ H
  2953. 8 ~/ `, O$ t+ p
  2954. .ORG $FE202 v; A9 C$ C) F/ ?
  2955. STA $07BA" ?% J9 w6 P( v5 j' }
  2956. CLC; i4 H  u$ p& W$ h+ @! R5 Y
  2957. ADC #LOW(Sound_Bar)# e! C( l6 s1 r- z' S8 g' A
  2958. STA $07BD
    5 ^; q$ L' X, a+ @# j
  2959. LDA #$8D
    & k% A% d! v9 u1 ]* Y, j
  2960. STA $07BC4 c7 U* |0 P# N& K
  2961. LDA #HIGH(Sound_Bar)# p7 S" A- }$ n8 @* }
  2962. STA $07BE# W& g8 d# X7 e
  2963. LDA #$60# k* W( s) p( B7 C4 L) a
  2964. STA $07BF7 k; m3 V! N9 z) y' y7 N1 ]' q0 [
  2965. RTS8 N) S& o$ z) m" X
  2966. ( p& d0 f$ P5 M
  2967. .ORG $FE40) T5 ?. ^* F# r' i
  2968. PHA
    ( y% u% `& e4 x# y9 f
  2969. STY $07F1
    0 |: R: B& u* }  r* H5 h
  2970. LDA #$8D
    9 _# l# h/ ^% ~. {, |) e; D# G( r" D
  2971. STA $07F3. V# S* ^# J2 ]+ R7 @
  2972. TYA
    7 [* ^7 D, W: D) V# `1 d! ?
  2973. CLC
    $ ?2 u$ D1 e/ W$ \
  2974. ADC #LOW(Sound_Bar)6 X* [1 ?5 F, I
  2975. STA $07F4
    ) u: A1 K. j' R% j- u
  2976. LDA #HIGH(Sound_Bar)- e) p( s/ ]# `0 q  ~
  2977. STA $07F5
    ) R: B8 d2 c, W; o
  2978. LDA #$60
    3 H: Y4 A- P) P% S* W# o
  2979. STA $07F6% o& j, Z9 Z+ @! p
  2980. PLA
    ) S  p/ s: W" K9 _- g
  2981. RTS
    1 v- R' Q$ \0 `4 a$ z( @

  2982. . V  {0 ?9 l2 e1 h4 j- C, b% H$ e& B
  2983. .ORG $FE605 @- y% k, ~5 H4 _, U, r
  2984. STA $07F1
    8 f0 f, u6 G% s
  2985. CLC* t& C( i0 E$ c- Q4 I
  2986. ADC #LOW(Sound_Bar)
    ' D" A2 I5 x$ Y. `
  2987. STA $07F4- S# x* g/ N# F- ~/ H
  2988. LDA #$8D
    9 S( p+ R8 H$ O. w5 A
  2989. STA $07F3
    9 D: _1 L! X& E0 `
  2990. LDA #HIGH(Sound_Bar)
    / J" L" |9 K- v4 }1 E. G
  2991. STA $07F5# P/ ?" X' m5 ?% B8 c5 u; O* g
  2992. LDA #$60  ^* H: B! [7 G* r! A7 A
  2993. STA $07F6
    + L, X9 ~7 [! `4 i4 i; t+ L
  2994. RTS7 ^# A/ B5 y# e3 ]1 z

  2995. : a/ l# G/ U6 b2 [2 j
  2996. .ORG $FF405 ^( u5 }- t; M; R3 S5 A0 m1 J- ^4 ~
  2997. STA $4000
    & ?! r* p7 f  }2 p
  2998. STA Sound_Bar + $00
    - @2 T- v5 M, q8 V, q  }$ C
  2999. RTS! ]6 m7 a1 w! o" K# I3 ^
  3000. / G  [8 w7 M% m4 a, [4 @1 ~
  3001. .ORG $FF48
    # A( z( M/ W3 d  O/ [2 h' ~
  3002. STA $4004" ~- t/ U8 }& J8 B) f6 E8 f
  3003. STA Sound_Bar + $04! |: y5 ]# g5 Q& B
  3004. RTS
    4 K# o+ V) s: H3 q" |
  3005. 7 p3 |4 |4 S( m- i+ c1 @" A3 R
  3006. .ORG $FF50
    & U! W# g$ n0 b0 D
  3007. STA $40082 u, J, ]. P2 U1 @) e& x  o6 q& k# q$ k
  3008. STA Sound_Bar + $08) M( W7 o  K4 ]$ Y4 U/ T- }
  3009. RTS
    ) T1 Q# _0 @2 A& o4 b. z

  3010. ) @" I3 _8 p6 S3 ~# o: C! h
  3011. .ORG $FF58" p, X& `( m: ?0 N
  3012. STA $400C# U: X! P  P: i: U
  3013. STA Sound_Bar + $0C% q" d. Q/ v& l
  3014. RTS7 O1 V+ ~: ?. ]+ H3 d
  3015. ; U# s; r7 F8 G9 ]$ ^
  3016. .ORG $FF60& p2 b3 d* [" t5 `/ m& T& _* U$ e
  3017. STX $4000
    3 c/ I/ h1 n$ @
  3018. STX Sound_Bar + $00" ]5 W# @  \' ^2 C# F
  3019. RTS3 P, B5 _8 s8 w

  3020. 5 P$ m; ~% [& q% _2 ^+ u# W1 q' v
  3021. .ORG $FF687 c' r$ J9 c7 U8 [" }
  3022. STX $4004
    ; M# K1 p6 U& Y' K& F: R
  3023. STX Sound_Bar + $04& m7 e# }3 Z% k7 o) B) o) m
  3024. RTS
    ! A* o8 B+ {' \; O" S% m

  3025. 1 ^$ [: G2 c" p7 a7 ^* K
  3026. .ORG $FF70$ M5 G  q  G9 z
  3027. STX $40080 @  s/ p0 R! D
  3028. STX Sound_Bar + $089 F& {, A( `, t% Y' W
  3029. RTS
    + Y: D6 e  \) P4 V: R! K* ~
  3030. 7 O* q4 @5 S( D& f1 O3 q+ ?# Y9 ~
  3031. .ORG $FF788 e  P+ j( f/ a
  3032. STX $400C! T6 E* a3 j# P& N  v
  3033. STX Sound_Bar + $0C4 C! `1 w3 |8 U. W4 M. h2 p( v
  3034. RTS
    5 [' e, E2 V6 J" o' K8 L) u

  3035. 0 f0 B" X3 l% [
  3036. .ORG $FF80. u) b4 e& {# A) w* D
  3037. STY $4000$ U/ y. @5 h9 v
  3038. STY Sound_Bar + $00
    " n) ]1 t- w) `7 \8 B# f1 |
  3039. RTS/ w3 l% j, P8 O- E8 j! x

  3040. ' I. ?" W" R$ {7 q% x! h* W3 G$ r3 Q
  3041. .ORG $FF88
    ; a" \3 z. U2 B! k/ N( H
  3042. STY $40040 M) @- z0 r5 x7 ]/ v6 q
  3043. STY Sound_Bar + $04( o  A- [. C4 ~. `1 a0 I* P
  3044. RTS
    - h* E7 C% B1 d, x( t  Z3 j
  3045. - T! x1 E1 f! v' r: F7 P1 x( Q
  3046. .ORG $FF909 X' d6 D* m  P& \- Z: I
  3047. STY $4008
    + Q) ]. e3 P0 F! U
  3048. STY Sound_Bar + $08$ S1 X' v, B; h) M. b& k) `
  3049. RTS& |7 [% }; g4 z: F
  3050. 9 U+ ^" V' F  G6 B4 w' E* F
  3051. .ORG $FF98# h' l9 }0 F5 R# C
  3052. STY $400C3 u) Z1 S  |, a+ z3 n2 w' E
  3053. STY Sound_Bar + $0C
    , N, G5 x: v5 g( ~+ C  J* ]
  3054. RTS$ }6 }! E- D  ?2 O  G

  3055. 9 I. C" T  [, Y; Y# U
  3056. .ORG $FFA0
    ' R0 j9 s! l! G
  3057. STA $4000,X/ G; [5 g; O: e" i  d
  3058. STA Sound_Bar + $00,X, L: c/ e& Q$ t. {( T: ]
  3059. RTS
    ! c9 O5 Z4 V; w' J" E* [- j
  3060. ; B$ V, f) O5 q9 {
  3061. .ORG $FFA8
    ( e# I' o6 `# h5 D1 L$ t
  3062. STA $4000,Y9 y4 R' t- W: t. X9 K
  3063. STA Sound_Bar + $00,Y7 g# g: n; C% c" a
  3064. RTS! Y  \* q; P0 o4 M# l: x' t& X
  3065. ) F5 c6 a, W& x/ y' B4 B
  3066. .ORG $FFB0
    : ~2 t' q! G* H* i7 s. N- @
  3067. STA $4004,X
    * a; }- Q: M% Z+ b
  3068. STA Sound_Bar + $04,X
    $ X6 U3 a0 G" }5 `' J
  3069. RTS
    4 w3 u. y3 I8 c6 @4 ?

  3070. 9 ^5 e+ S# r3 t; g1 k
  3071. .ORG $FFB8' t' X$ g  v& U* W! c
  3072. STA $4004,Y
    1 V) F6 W9 B5 m; d- N
  3073. STA Sound_Bar + $04,Y# b+ M" s. J/ ^  p) p7 `
  3074. RTS3 K9 a( e$ I- l3 L
  3075. + @6 L1 \5 }6 f1 y: y5 L) U
  3076. .ORG $FFC0$ A( B) U/ e/ ~0 L2 R
  3077. STA $4008,X
    2 f; h. @/ \3 R* ~  v7 ?0 ]
  3078. STA Sound_Bar + $08,X' Q+ |$ h! f+ v' j7 D
  3079. RTS
    # _! e7 b* T2 ~: Z2 t4 P+ l' b2 \
  3080. $ p3 [6 @" |: t. m
  3081. .ORG $FFC86 W- P3 c+ m( r, T( n, u
  3082. STA $4008,Y; s; X- h7 O0 m
  3083. STA Sound_Bar + $08,Y8 m, |  Y8 E& d5 R7 Y
  3084. RTS
    8 ^( d8 Q- ~6 y! D/ J9 z4 i
  3085. $ u% ^4 b' |( H' {0 k% x9 v' L
  3086. .ORG $FFD0
    + k' r9 ?. y- K+ g
  3087. STA $400C,X! M; a. A6 c. s' @
  3088. STA Sound_Bar + $0C,X5 P0 d) P+ y  M5 ]$ W
  3089. RTS% l  O! x8 _: p4 s

  3090. / |& ?/ l. L5 ^2 j3 k
  3091. .ORG $FFD85 C# v- E+ o9 X% M6 D
  3092. STA $400C,Y
    % `  I, C9 L0 n  ~3 _& @
  3093. STA Sound_Bar + $0C,Y' O- Y; V9 Q! k7 b& E
  3094. RTS
    $ T0 s2 n8 D& L, q1 l! E4 y

  3095. ! [. s0 J. B- r* ]8 ~0 J& d
  3096. .ENDIF) ]0 f0 h' f: _
复制代码
$ s$ V8 {- V+ c, k9 k
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3225 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 18:02 , Processed in 1.158203 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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