EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
. M* K( }% S" J
% o3 k; ^5 d; `4 S& d2 Y[FC][音乐12 IN 1]4 s7 X& V5 k+ n" p
时间: 2023.07.23( t& N+ Y$ g" d  Y, W9 q
作者: FlameCyclone
% t4 C& H. k2 T
3 @2 \3 v% T: H! X' j收录音乐内容:3 g* `7 O0 X7 a: J- Q1 d
1.Raf世界9 T! \9 H3 `/ C
2.最终任务
2 e- U2 R9 U- W0 g* j3.赤影战士& r6 a5 K. Q, q( b' ]
4.双截龙
) z& q6 D, [' N5 D6 |3 x5.双截龙20 }6 V) m9 o  ~3 K
6.双截龙3& h3 H" {7 b* d2 [
7.洛克人
  i; _6 X( t1 e- M  R- ~- ~8.洛克人24 U  g) X+ ]" ^' S% b9 [9 L
9.洛克人3
3 B. Q. q/ {. y/ S7 H+ r" M10.洛克人4
. y* g2 q" @/ g) P- n! o/ U$ f11.洛克人5
7 W9 G/ }% \5 c" s) G7 T12.洛克人6
$ @6 j9 N5 w8 D3 l. z: p7 R) l1 l) {5 T% V! _0 m- g" m' I
操作:
; P7 J3 _5 @5 ]7 D上键:         上一个专辑+ [" I9 q" ~! {. t: p# P$ E
下键:         下一个专辑) N' J4 X, o* P
左键:         上一曲
# Q6 h. \/ P8 q1 ?% f& c" F& M右键:         下一曲( t6 d$ l. v9 f
B/A键:        前10曲/后10曲- Y0 u/ L  y, l/ n: Y
选择键:       下一页
0 S/ Q. T  s4 A$ e- l  F! U* P4 h开始键:       停止/播放( l2 i9 A. o2 M6 o/ Q8 J
9 b# Q* r) ^$ s& s
http://flamecyclone.ysepan.com/
) z( X$ Q- p  w' M3 X' A3 \! H2 U' ^7 j* Y) a' u
7 N; x2 t+ o8 @8 r

/ L( W/ P4 ]! H( k0 J
8 l0 Q- u2 f% O0 C' ^) _9 I
  1. ;[FC音乐][播放器模板]
    ; |2 c9 \6 }+ T7 i0 J
  2. ;FlameCyclone 20230710
      H. Q( r+ I4 N2 Z. {) w, l$ U# B
  3. 6 K  g* c' [+ S( t
  4. ;文件头
    % P4 b' W$ _- y5 j& C
  5. ;======================================================================
    7 d- D2 J0 ~/ [, A
  6. .INESPRG 16                                             ;16KB PRG 数量6 N& d$ L+ N$ z' j
  7. .INESCHR 1                                               ;8KB CHR 数量
    ( g# u  G0 j  a& x' P' h! {
  8. .INESMAP 4                                                   ;mapper 4
    & y9 P$ V5 y/ f9 a! K8 x. F3 Y
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    4 n* f/ l- Z) a. c) Y

  10. $ P! o0 N# Q# N: R9 I
  11. ;==================================================
    / U7 R- U+ B1 i" q* }0 i. j: c
  12. SOUND_BAR_SHOW_ENABLE       = 18 V: l% N3 M5 c0 r2 H; ^5 ^
  13. ;==================================================( o# y, F2 ~9 T5 K3 x) G4 g
  14. BANK_DATA_MASK              = $1F; e7 F2 S5 u* v
  15. CHR_RAM_ENABLE              = 0& v  L: f# y9 V6 O5 q3 c
  16. IRQ_SCANLINE                = 136+ P& `6 m. m' {( A6 C- [" T3 a& R; l; \
  17. ;==================================================+ o7 l: b6 @, j. E7 |, X; a
  18. SOUND_DATA_BANK_00          = $00
    0 X- C. I0 e5 h/ k1 P& ]* j
  19. SOUND_DATA_BANK_01          = $01
    3 t# ?4 @/ N9 X) I8 n
  20. SOUND_DATA_BANK_02          = $02
    ( l4 v/ Y+ f8 G- j. F9 q
  21. SOUND_DATA_BANK_03          = $03
    1 e5 h0 d/ q6 P! |
  22. SOUND_DATA_BANK_04          = $04
    1 |4 \9 g0 q- A& g+ u
  23. SOUND_DATA_BANK_05          = $05& W9 p- r# |& G9 C- E" B
  24. SOUND_DATA_BANK_06          = $06
      }9 h( P. h) |
  25. SOUND_DATA_BANK_07          = $078 B3 h: O# T0 }+ ?. [
  26. SOUND_DATA_BANK_08          = $08
    2 o0 `3 e% E, L  A
  27. SOUND_DATA_BANK_09          = $099 b! ], n1 t, E8 `9 z  l
  28. SOUND_DATA_BANK_0A          = $0A; c# w1 V( V! A# E- P  I
  29. SOUND_DATA_BANK_0B          = $0B
    * t' m9 N2 N% g' D. a
  30. SOUND_DATA_BANK_0C          = $0C: R" `- r% u3 s) E0 j( i2 m
  31. SOUND_DATA_BANK_0D          = $0D, Q$ B' Z' n7 v
  32. SOUND_DATA_BANK_0E          = $0E
    " M( |& T9 n( X
  33. SOUND_DATA_BANK_0F          = $0F
    9 l2 ^6 O% M. [
  34. & I1 h' b' b. }' v0 t: w( S! O6 J
  35. SOUND_DATA_BANK_10          = $10% F; l* u& }; E  C; |
  36. SOUND_DATA_BANK_11          = $110 a1 [( A3 [/ p; Z. k, O( |! j
  37. SOUND_DATA_BANK_12          = $12- p. @! \( H2 }/ f' h8 L6 Z2 H9 {, K
  38. SOUND_DATA_BANK_13          = $13
    , e# j' V: p) B
  39. SOUND_DATA_BANK_14          = $14" E6 I$ ~) M) V
  40. SOUND_DATA_BANK_15          = $15
    ; ^- `  |  W) |2 e: b% |8 E
  41. SOUND_DATA_BANK_16          = $16
    . D# F/ `+ L1 Y1 y9 |
  42. SOUND_DATA_BANK_17          = $17
    8 r0 Y" ^5 q* G. B( H
  43. SOUND_DATA_BANK_18          = $181 b* S$ p- d' t
  44. SOUND_DATA_BANK_19          = $195 u# a  Q" m3 a* O5 M; W( A
  45. SOUND_DATA_BANK_1A          = $1A
    ' [0 \% l- J* c! o5 \- E
  46. SOUND_DATA_BANK_1B          = $1B- d( N  Z- V' W% n3 S3 V! L4 i
  47. SOUND_DATA_BANK_1C          = $1C) I, b) p# {' k6 d# u8 N
  48. SOUND_DATA_BANK_1D          = $1D" g% {9 b  z' Q# M* |& j2 ?# r+ S

  49. 2 O; R  w; P# S# x% t! A4 D
  50. SOUND_DATA_BANK_C000        = $1E7 U9 y7 s& o  l; P4 ?) F1 ]. ^& [
  51. SOUND_DATA_BANK_E000        = $1F
    ! Y  ?; T+ `& i4 }% A
  52. ;-------------------------------------------------9 E9 |: \4 W( `) ^0 f% `4 E$ F
  53. CHR_DATA_BANK               = $20% X1 I4 j7 y2 x8 v& m
  54. CHR_DATA_ADDR               = $A000
    3 B/ u2 L* E/ f7 z6 B  l3 }3 `9 l& ]
  55. ;-------------------------------------------------
    + y9 j, l3 {1 R9 q) u6 M
  56. PROGRAM_BANK                = $00
    0 I6 u, T8 l6 o/ Z9 X
  57. PROGRAM_ADDR                = $80003 B9 {1 t% p, @% O% z. |8 H
  58. ;-------------------------------------------------% c( r+ m! q5 E: n7 d, x6 e
  59. RESET_BANK                  = $1F; L# l+ |; _7 H! }
  60. RESET_ADDR                  = $FD00
    2 m& l# n2 T9 o( ~- \9 n1 v4 Z; n
  61. 0 H1 k6 F; e, A& |, f3 o9 v* `
  62. ;==================================================! e2 w# s5 J1 w5 ~& `6 U
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数. T, J* d# ?3 C% x
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    , ^* B3 X& Q$ J4 `! w: ]0 k/ A; z
  65. PAGE_SIZE           = 5                     ;每页节目数# R+ I" ~  q' z8 s% A

  66. . d0 H$ U6 N$ o; ^7 f( H% Q
  67. ;==================================================
    9 Y/ ~* Z0 h9 H! X+ s3 w* Y1 m, n
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    7 {2 D0 `* y$ L% ~( Q
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    1 u8 ~& y& t# k" y- `2 V
  70. .ELSE8 h0 L7 W$ J' J" G4 S8 `6 }( t
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    " L# X3 C% j; i+ f! i6 W
  72. .ENDIF) Z* U0 N+ [: a& u9 r
  73. 6 V. x  h) M2 L3 M/ X
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    ; h& s2 {* a4 w* l

  75. 9 _+ f7 w8 h" M) m; y3 `9 H
  76. ;==================================================% z& O: W% ]: Y! m
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    7 Z* }" H8 ?3 X6 g! `: C  C/ }) a
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    ! s  V1 B* v- b1 ~  \" m$ K/ t
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;9 V# F, o  K/ L  `- f, r3 q. \% u
  80. ;==================================================
    ; u: B; P" H/ u. n* L/ [% }" g& J
  81. Caption_Text_Pos    = $204D ;标题文本位置
    $ g& ^# o. ]; G5 i* U  t; I2 C
  82. Author_Text_Pos     = $2324 ;作者文本位置' `  }; C- {2 i- p6 ]* n
  83. Date_Text_Pos       = $236B ;日期文本位置
    ) w# E/ N; a' k) ^
  84. ;------------------------------
    ) C9 f3 l5 p4 n0 O8 V
  85. ;------------------------------- W7 i6 e7 z7 B' J9 I) \* z4 W, L" T
  86. .IF SOUND_BAR_SHOW_ENABLE
    0 z3 A! s. Y) c. I; `

  87. 1 H$ n/ B. ~4 Q, u
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    4 x* e: j) l, |5 v$ P
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    ( g. p0 A. z. s+ N" @5 {
  90. Play_State_Pos      = $22F3 ;播放状态位置, p5 P0 N9 D3 L: R
  91. . Z; z( b) ^3 k3 R2 U  A
  92. .ELSE* T! o. X1 D4 p, l' B
  93. / S5 G, h, [! }0 s
  94. Play_Index_Pos      = $226C ;当前曲目位置& \* b; F& L& p  @# r
  95. Play_Time_Pos       = $22AC ;播放时间位置
    ' N/ C. I  ]3 c& U6 g! J+ J+ _
  96. Play_State_Pos      = $22EC ;播放状态位置  {1 A- p) x8 P8 k

  97. 4 B. z2 q; B# z% i, C- o* S
  98. .ENDIF
    # j6 j0 d. o) C4 H1 z  ~
  99. ;------------------------------
    3 E, L' O# W( @8 G
  100. Track_Name_Pos      = $222B ;曲目文本位置! M' H& P2 a2 R4 [' B' u
  101. ;Track_Name_Pos      = $00 ;曲目文本位置0 v! N6 W0 [8 b% Y* y* W' C5 X
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    ) A; G4 h. U5 I' R) V' |7 ?- @7 f1 F
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    $ |6 a. R: x1 m$ h" l( v
  104. ;==================================================7 o6 S' v5 r; {. {( T7 A; v8 c
  105. Scroll_X = $00
    : u  c# ~" z; i3 k$ V$ q
  106. Scroll_Y = $00; G0 E; @" Z( n% g
  107. ;==================================================# G; F* ?2 ~1 |7 [3 A$ q
  108. Sound_Ram_Addr_1       = $0100
    2 {: s  t6 p3 h2 ~5 o+ ^
  109. Sound_Ram_Addr_1_Size  = $80
    " d0 U' E3 b, g' @0 V. b7 g
  110. Sound_Ram_Addr_2       = $0090
    : m: m: O. C, E2 A9 N& u
  111. Sound_Ram_Addr_2_Size  = $70
    4 G: P  [( O& r4 j0 P* L9 ]5 X
  112. Sound_Ram_Addr_3       = $07001 g) |) A2 j; ?' g& g6 K
  113. Sound_Ram_Addr_3_Size  = $00) s0 e2 Z( @5 {( J
  114. Sound_Ram_Addr_4       = $0400
    " b: T5 Q0 ~& H8 F% E. L
  115. Sound_Ram_Addr_4_Size  = $009 Q) F/ z7 k+ n( I2 B0 T# o
  116. Sound_Ram_Addr_5       = $05008 p/ U; p& c/ ]6 j* U
  117. Sound_Ram_Addr_5_Size  = $40% Y+ b- e8 Z/ Q! p0 j1 a5 q

  118. 8 o. R5 t) O( L! X! L
  119. OAM_TEMP_ADDR   = $0300
    7 V5 {! G+ B% P4 s9 G
  120. * g& X3 f6 b# U' E' r
  121. ;==================================================0 C5 ]' x$ g; M  e$ N7 K3 g
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器' b6 j+ b7 E: w8 p: V$ u1 H! r
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    6 o% \- w- m% `! J' c; \- s
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位. Y' _8 C6 L: X& s
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
      \# k; \) o0 N8 H8 |
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    3 x0 }+ Q& p$ ^# V3 N
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 / \8 D6 H! h# o( ^
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加% I2 H- ^* v4 s# w3 A2 ]: {
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    1 Z' T$ y' f6 d7 h5 Q  w
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    * z, U3 T! ~$ m9 o2 z
  131. APU_STATUS              =   $4015   ;声音通道切换' Z7 x) D7 W4 f! |. D4 c. V
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通, H7 ~  x7 \4 x
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    6 e5 m$ @" J. `8 P- |* I7 _
  134. ;==================================================
    7 ^1 H4 B) {# l$ e3 a/ a
  135. MMC3_BANK_CTRL          =   $8000
    : G* M5 I/ |9 M# k$ x2 A) h
  136. MMC3_BANK_DATA          =   $8001
    9 C% Q; p  T+ s. Z
  137. MMC3_MIRRORING          =   $A000
    5 T; k8 n- j& H4 ^6 \+ r) h
  138. MMC3_PRG_RAM_PROTECT    =   $A0019 I1 N! e# O- w. B! @3 v. u3 {6 U
  139. MMC3_IRQ_LATCH          =   $C000
    $ [7 S: a2 w! U/ O" g$ f$ X3 O
  140. MMC3_IRQ_RELOAD         =   $C001$ Q' t1 o/ |( [! E+ K$ O
  141. MMC3_IRQ_DISABLE        =   $E000) ]/ K6 p6 M/ l
  142. MMC3_IRQ_ENABLE         =   $E001" I. Z, T! D9 ]. v0 c
  143. ' M2 F  g+ M# P4 m, U! k
  144. ;==================================================$ P6 }0 R. Y  W% T6 c. n
  145. PPU_Addr        = $02005 c0 V; V* r1 l" q# B
  146. Palette_Addr    = $02C06 d* Y5 o& O) w
  147. Sound_Bar       = PPU_Addr+$E01 b! S, Q& B1 V
  148. ;==================================================+ f$ t# U3 @+ o1 f. c2 [) Z
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    2 n. ]# R/ H" n$ r) s, y& |/ G( X
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$114 _# Z) P. {! t5 [* K
  151. PALETTE_UPDATE_MAX      = $2C* g" y0 |" X/ w" r
  152. PALETTE_UPDATE_MIN      = $21
    , D" t, S3 t5 C$ D6 h
  153. PALETTE_UPDATE_INTERVAL = 600 e! S0 |4 q; \- u' U
  154. ;==================================================7 f3 B& p/ a: U3 L6 }
  155. Sound_Bar_Cnt       = PPU_Addr+$F0) I, d. }6 D9 E; H1 j, |8 X
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    % t$ K+ D/ ?  H1 o2 I  W
  157. PPU_Addr_H          = PPU_Cur+$030 D% s* h( X8 D% x
  158. PPU_Addr_L          = PPU_Addr_H+$041 t, p, o) j* Y: X2 \8 w1 N1 F/ D
  159. Screen_Ctrl         = PPU_Addr_L+$01
    5 k. u9 O5 N5 T
  160. Screen_State        = Screen_Ctrl+$01/ \) o" P& ^8 l0 o" S# P
  161. ;==================================================
    : y' d8 {7 h- W4 Z; Y  K" F
  162. Use_Ram_Begin       = $50
    0 F0 g7 ]  m( p$ Q! ^: T3 K  T
  163. ;==================================================
    0 `( {8 X2 x( j9 f
  164. JSR_Addr_Op         = Use_Ram_Begin& x8 I! s( g& P- k4 K+ F
  165. JSR_Addr_L          = JSR_Addr_Op + $017 ]3 Y, m1 k, U8 n
  166. JSR_Addr_H          = JSR_Addr_L + $01) z" V) |: `* J8 e1 }  W, V
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    4 x( l4 M7 x! X# x% r3 N
  168. Data_L              = JSR_Addr_Rts + $012 t  L" S& u. P& a4 \, d  g
  169. Data_H              = Data_L + $01
    & ?* r. l1 Q  Z: D6 I
  170. Data_Cnt            = Data_H + $019 E5 E$ t( T( R7 g1 o
  171. Data_Buf            = Data_Cnt + $017 g4 e! S3 Z+ U0 c
  172. Nmi_Time_Count      = Data_Buf + $015 N9 N0 y+ V: l
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    5 S3 i( Y8 O4 O9 C
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    . ?. i9 ?9 E+ N9 R. T# t

  175. + D. Q, m8 z5 L$ b  `$ x  T1 g% p
  176. ;调色板刷新标志
      m' m9 Y" B- A. [. f4 H
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    " q. ]5 r( r! }$ E

  178. 1 q$ M  j8 e" u: {3 y
  179. ;当前帧文本写入禁用标志) z# [- R4 K0 b" @$ j
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    ( S' K: P. s& ]+ D4 {+ O1 ^0 `

  181. 9 n  C. J  v$ K# S& m; o8 P4 |
  182. ;==================================================
      p  F2 H- `- P9 n# T8 q4 o
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动. ~- I- Q, f/ n7 r& K) ^
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    ( E3 W% P$ f# i0 f/ v8 _
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间4 ^2 E- J: h) D, R0 l/ K
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间0 e+ B* O# ^; t( ?
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    ; u' c; [1 Y5 @9 ~! z. J
  188. ;==================================================
    ; w. {5 G/ A9 y5 Z% C% A: ]
  189. Key_Keep            = Text_Disable_Flag + 1: o. G# r2 ^/ ~  h( c
  190. Key_Once            = Key_Keep + $01
    ! L1 n3 K4 E4 k4 k: V; o7 t
  191. Key_Kemp            = Key_Once + $01, X( S. K% T9 y! |1 e
  192. Key_Temp            = Key_Kemp + $012 u% w7 Y. w2 |2 F
  193. Key_Getv            = Key_Temp + $01
    7 U/ J, c$ a* Q7 c4 ]* {4 Y- u+ j
  194. ;==================================================% }* W$ n3 b6 Z. G" L7 G; ]) |1 y
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集# _$ b7 {0 v' i
  196. Music_Item_Last     = Music_Item_Cur + $011 U4 ]+ R$ R2 n5 w" m
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    " N+ Z, r6 P* P6 J2 G# N$ ~
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    5 z5 V) y* x' X; j% [* q
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    ' X1 }1 F$ R  K/ Z
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    4 i* Z% k9 j+ p; V. K
  201. ;==================================================
    1 O0 g- P+ E' A
  202. HEX_Data            = Music_Stop_State + $01* c% F8 D. A* W* b
  203. DEC_H               = HEX_Data + $01$ J4 Y, Q$ z1 Z2 {- M4 B" k8 t
  204. DEC_T               = DEC_H + $01
    & X3 {- d( O2 v( Q$ ]$ v7 x
  205. DEC_L               = DEC_T + $01
    6 N5 l1 _- J$ [3 I4 r' {! n8 p- t
  206. ;==================================================6 N7 e# X1 a: K+ D# H% m8 U
  207. Time_S              = DEC_L + $01
    ! t6 z0 a- A& u6 Y7 z
  208. Time_M              = Time_S + $01
    ' C. u: ^0 \  _( H$ j$ i+ @
  209. Time_H              = Time_M + $02$ C0 Z  V* R7 N; B& |
  210. Time_Cnt            = Time_H + $03
    % V" g. D5 p3 U* E7 r  \

  211. - U5 ~7 H& L, S# G& K  u2 O' ^
  212. ;==================================================
      d  C5 `# B0 N
  213. Music_Bank_8000     = Time_Cnt + 1
    8 W$ ]! L9 c% {: a, K
  214. Music_Bank_A000     = Music_Bank_8000 + 12 _% c: C# X! e) |, o; M" o
  215. ;==================================================
    ) u- o# y  M- x* V5 v. ?
  216. Scroll_H            = Music_Bank_A000 + 1
    , W% O  S* Z' u3 n, b/ P
  217. Scroll_V            = Scroll_H + 19 P8 X# Z7 `5 |$ N$ \
  218. IRQ_Process_Index   = Scroll_V + 1
    $ m1 R- \; X, m- Y1 Y3 n
  219. ;--------------------------------------------------
    1 f, e4 ?. H3 Y3 M5 e
  220. Page_Cur            = IRQ_Process_Index + $01
    6 R- d/ z  A& |! N  ?
  221. Page_Cur_Index      = Page_Cur + $01# [+ y+ h5 C7 J  ?& ?9 D
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    : W9 r3 j- w& V; b, C) ?' B" G
  223. Page_Last           = Page_Cur_Cnt + $01
    8 L0 S% F0 S+ ^  e. o& ~9 N7 W
  224. Page_Last_Index     = Page_Last + $01$ x! S* ^6 \- U7 t
  225. Page_Last_Cnt       = Page_Last_Index + $01
    8 d3 R: Z% m6 ]& r
  226. Use_Ram_End         = Page_Last_Cnt + $01
    / a* y- @! \' E: x" B3 @
  227. ;======================================================================5 g) H$ U2 p5 u0 L
  228. ;音乐数据块: ~* I, B7 V6 H3 R+ h- L
  229. 0 I  o* z' p9 {9 L3 X
  230. .IF SOUND_BAR_SHOW_ENABLE
    $ w7 m0 K* P* d
  231. 3 l9 S# B% e3 |& Z9 e; Y  H
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    4 X2 Y4 R. q: R2 [) l  u" o! H
  233. .ORG $9000
    + b  X$ w8 N8 p. H( p0 F0 z1 x6 o
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"! K/ `- K1 N% Z" s+ n5 K7 m2 n* `. S; d
  235. $ ?1 Z4 j: o- ^; Y: h
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK$ C1 p/ x7 D# P4 Q! x9 d+ Q- {
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    , `2 p* |# [& J2 x
  238. % X+ K0 \# {) W: Q% o# s4 Z) y
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK4 i& c. [/ u. w/ K! y
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"+ |5 c& ]" u: M+ _! }+ ]
  241. 1 s. J. `- O- g' O
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK9 j$ e' Y2 Y$ K
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"+ [; O* i0 E( s7 R9 A$ a9 F
  244. 3 c4 Z& E( ]7 J
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    4 q" m8 g1 c3 t' M6 ~3 |. G0 B+ r" }6 W
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    2 L  u+ ~$ `7 l+ o1 o3 G3 |5 r5 e

  247. * L! s) Q0 p$ P# |- T' s0 {5 F
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK: h4 C3 k& ~* R  w- v. b3 @
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"* \# p  X. F* a8 }( U0 P4 F* Y$ b
  250. 4 y2 m  h+ _: _1 i2 v7 j6 ]
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK' a- y" U$ f- {  H% j# t0 Y
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    9 C& H0 L' P  {+ t5 R3 H

  253. ! K9 s8 q- V( `2 c& I; ^* w4 k
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK0 ^3 r" I3 n& b, y, @$ Z/ y
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"5 N) G2 w- g2 U' y0 k9 S
  256. 6 y9 l, Y! B' `3 {$ ?9 E! r
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK* s, u8 f. j6 i
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    $ H  X9 L+ @6 R" a6 w4 ?/ |" j/ \

  259. 2 x+ a1 i- s: e" Y5 C1 q, E
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK/ }/ }4 b) c% k( K. Z" b3 e
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    : L7 V6 e" V4 O, y6 P8 h$ C

  262. 8 I/ b7 F7 {0 Y! W5 C
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK- j7 u3 Q% v' c5 v6 q  [3 X$ Y
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"6 g% ~' |" B$ a. R1 Y! W" E8 T
  265. 3 \& y& K2 b8 B) h1 P& N
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK( B$ g5 V! w) D9 U* h
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    + W  N& i& ?# U. a

  268. 2 C: K# s' w5 l
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    1 X" w$ Y1 l$ L( ^
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"/ P; B8 g! S9 x5 G

  271. 7 w# u6 e) {' F. O; ]3 v+ N8 |
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    7 q7 x: n7 q# H# s3 O- Y4 L7 @
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    " o( u  y2 W5 u1 k* f4 H& V

  274. & |! Z! q) @4 T9 W) u, M7 p
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK" ]# W7 w$ `' t& C" y
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"+ n, R1 z  n& G5 Z- F
  277. 5 c" s3 J: ~+ W! x7 P* c. e) E
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK0 Q8 E8 N9 V, i
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"- f+ U9 `( p4 v1 f( Y4 ]% o% L
  280. 6 H) H  B- p2 A' Z5 Z
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK5 v5 j* W1 ?. A8 e
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"3 j7 ^( c! n' w# e8 ^' S

  283. ' g3 x# E  @$ x4 \: W) P' y3 E
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK4 j, J' T9 F+ ^0 x* T
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    6 n% i: f4 q" h$ B
  286. # Y% \; p2 A' X; g" a0 l
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK& R: W3 j) J' d. b
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    1 @) D/ [2 M" u6 |# X5 O) [
  289. 8 a9 _$ Y( A( }& q  c* G
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK0 `% m! N& K6 M6 W8 F
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    $ g# }) _4 V3 W1 \5 l

  292. 1 L# ]) n0 W! _+ Q/ D& @7 W
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK% A  [/ f- q8 S5 ?) w5 k; L
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"2 P8 V% Q/ R0 H" D% {9 t' Y
  295. + w5 T: g: H1 E$ p7 R% N7 Y
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    6 B  ]/ B! r2 `3 j
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    ) W: q9 u3 k! P$ B) v! p7 }9 n

  298. # e1 B& V8 n/ Q) S( D- a
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK  k# j" t0 a; ^& `5 n6 R
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"( V  W0 N# c" k' }, q: E

  301. 8 ]( k- ?1 A' |& ~5 J9 X
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK- ~: R, {6 Z4 Y' Z4 `
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"" Q, z5 V6 i4 |7 \' \; w: _
  304. 4 m! j) ^# E) L; _% N  ?  ]
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK9 y  O) N: [3 _/ q- G. F0 {4 ?
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"2 ]* w- _, ~; _, {

  307. $ x* Q3 l; k7 R& U2 i& P  F. A% H1 R
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK; g: _# M5 n( H! D
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"9 W; [& K7 |8 }& w+ X( Z+ W
  310. ' b! X# \7 ]( p' m* j) U) K: ^
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK4 |% _8 o* m  r) M) e" `
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"% w1 T, ~! P* M$ b

  313. 1 p3 m, @+ x- K( U
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    ( t: E" O$ N  _, h
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    + K9 ~% U6 |/ d+ Q, Y
  316. - c) i+ }- ^; g1 Y: a  `4 F( |
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK! J5 _$ M+ A( h$ K
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    , R. y# _# b0 u$ h1 J
  319. ! E: ~& L+ r, z2 |8 G. t6 r8 _9 @- @
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 m7 Y+ G& d( n# ^: v
  321. .ORG $D400
    4 P9 k8 h; a: ~/ u  N
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    3 I1 ]" C) T5 L4 R

  323. 8 H) l5 W0 g- u# t0 }% ~+ @
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    1 L0 N/ y# k, y2 [; a5 i
  325. .ORG $D800- x9 X4 B3 G0 x3 h
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    # Q8 z# f( Z: Q

  327. 9 C& I# Q! v4 ]4 T/ J/ J7 r
  328. 6 K% Z3 g, D+ H% |2 U
  329. .ELSE0 B/ m3 s( `3 {5 ?  k) W
  330. ! h& Q$ r* [! x: L; ~
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK4 V5 A' N) J. g0 W0 \8 d& }# W
  332. .ORG $90004 E. ~3 W4 Z4 L  q( v# h0 m* M
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    , }, H  o( E+ g4 B, t8 ]5 t
  334. ; H$ ~6 j" r. R
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK# V( \# a9 G1 P. {, z  z' m
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    6 u2 J$ b9 W, J! g- J0 a& \6 q
  337.   w- b1 [8 L" L8 S. q: X
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK0 S  j5 D# p$ p' c0 ?& b, ~
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    9 G! J) q5 D  D- S6 P

  340. % o  r! Q3 Q4 x
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    % }% }* [" B% F6 h
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    9 Q/ f$ L6 ?3 w3 y4 D" X* ^
  343. % B6 o- w9 {+ t/ r) l
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    " n2 E9 N8 B( M7 T
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"9 |' I/ O( Y/ Y: K8 _' _# y

  346. - q5 Y$ l& u! [* ^4 ^  [, Y
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    0 r, G% L7 S  ~
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"/ M" V! a" a+ y- ^/ H

  349. 6 s; y' C) {9 [* g' i9 s; R
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    9 }" |  a2 C+ E" C6 K4 [
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    9 x& z/ i; ]2 g  y8 C$ l* ^- E

  352. " F: e& P+ X7 f/ P/ s4 d
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    . J2 C! }1 h6 `3 @, z
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    9 Q6 _) X2 b9 H9 `; \
  355. * W+ R3 Y  D% @$ p' m
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK, a4 E7 R) |- u; R
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    . Q; x2 e  P+ t% E$ X+ i6 g0 y
  358. 3 s4 i: [& a% E1 n& W) g
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ) q4 N" g- `; ]+ W
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    5 O+ {$ y; z4 J; ?6 |; M
  361. 5 L8 J1 j( d% ^' C/ E0 W- k
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    : H$ l& W- E2 C2 @6 {5 Y: Y$ S
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"9 W5 H8 A7 I1 T4 G/ [6 x9 y

  364. % t3 N9 |) _& B
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK. c0 ^7 O$ e; M7 m
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"! \3 I+ F' k. \! x
  367. 9 P& w  O% v9 I- b" c: y
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK+ M) g% A) P* ~4 W0 M0 C3 O
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    : g; p4 M1 y5 G. M( Q

  370. ; b) W4 ~2 d- @
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK- T: }9 E  E7 z: d
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"* b* Q7 b: C, X- I; `9 B: p
  373. ) h7 D- H8 p& S- r6 V
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK( c; ^7 h" i) K* F8 F' C$ [
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"9 l, r$ C$ I- Y. `" F/ r! Y

  376. + A8 q7 U1 E* o) ]# p: w
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK# X% _: L: u/ `0 U! X$ q
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    ; F" `, O+ p* j4 L1 D/ k2 s7 n

  379. 3 p+ g/ p& X. t2 S3 [) m! B
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK5 A$ F- r( Y- C5 ]
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    9 B+ s, i# `5 v
  382. ( z, x( \* K% X
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK$ V: @2 Z! t- k& v
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"& p0 T- C8 l! V+ o- k9 x; T* q' `

  385. 4 e- C' X! A1 p  w
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    * n9 `2 _% `. Y
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    % B$ _, B9 o/ F: W
  388. ' Y, _: l7 Q6 S7 j# w& k
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    8 w: {6 ^" y! H. j  F& |* B
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    9 [4 C. R& ^3 h0 L5 l$ b' t# ~

  391. $ ?* b9 F$ O3 ]( \4 _
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK/ H' y3 j7 u. `+ P
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    # V) _3 [* o% X) F
  394. 3 G9 o! c* c8 W8 C' s8 i4 ?
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK" `2 ~) `1 X' Y! E) `- M. q7 s
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"& B# b+ r: U2 L

  397. % E1 M& o7 p5 i& R2 N1 M0 X
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    0 ~6 f3 \" j' d3 J
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    1 _" z( ]5 G0 w1 ~* s! R- v- ?1 S

  400. : f( l7 Q5 r2 I( p  C
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK( y1 N) m5 w5 W/ p1 V1 Z9 ~: b
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    6 o$ |" q5 `. m- o/ l: d" b/ Y$ `+ y
  403. . v9 C% a. n6 N- y3 Y
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK1 b6 g, ]- D  M& h6 p, }' K+ k
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"6 x6 e4 _9 |. j; I7 j

  406. 3 j- i3 _3 C" P' c3 e
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    $ E4 A2 B. P  K; k
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    . v; O9 X9 w9 }% d, m& ?
  409. ) W0 i  _7 E! `, P. H9 Z: r* ]: ]& `
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ' _1 v& _! y& A# w7 Q4 m1 h# N
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    # q2 A# r0 }. I2 s% P3 j3 p2 a$ A
  412. 6 w9 d7 `' v: D: U! K! y
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK5 B) P1 m0 e0 q% P
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"% \2 ~7 B+ ?! i/ s6 r' G5 ^" U

  415. 0 B' O8 j% B7 U1 c
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    3 D: o4 r: h- Z% }! v  V: K1 }2 w% P0 I
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    $ q, h; X+ m8 }4 C2 Y
  418. . p5 j" o* U2 ]( O9 v( j
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK7 |' e* H5 g3 I5 A
  420. .ORG $D400- K' S6 n+ O( b4 T
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank") A7 m% L0 y& `! r* K# d! \+ O

  422. ! `: z$ C0 M7 N7 E( `/ P
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    & _# ^+ X. k9 e
  424. .ORG $D800
    ) q! G! ?3 J' P! s' {% M  H: X
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"- D3 M8 [  f9 U4 w: c6 ?3 k
  426. % c( h  B8 a; i/ Q: g& I. L2 J) y( |
  427. .ENDIF
    6 a+ ]6 O) j( U- F0 q) J/ W' o

  428.   |/ G; N8 @4 j8 C7 X# r
  429. ;CHR图形数据1 Z" ^' i4 h" t- z/ j3 T2 V
  430. ;======================================================================
    $ W5 L, Y$ L9 l& _
  431. .BANK CHR_DATA_BANK
    0 ?  Y+ T- W! L8 O+ `8 m
  432. .INCBIN "chr_bank/chr_data.chr"
    / K2 m" Y8 z  {! j, B0 r

  433. # ]8 t* O1 `9 @7 w+ y, \
  434. ;======================================================================
    - h. G8 l/ [, B* G, ?1 F/ W
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
      D. L- G- w# p6 p! Q
  436. .ORG PROGRAM_ADDR
    ! T8 \' }0 j7 H7 C! @8 l  r

  437. ( J: R/ v1 l/ N. a- r8 W% P
  438. ;==================================================
    4 S: X7 n0 u% N3 `9 h
  439. NmiProcess
    5 D4 O* H# d# K" V3 Y  w  v

  440. # s) l4 F5 u; b& q! @4 I. H
  441. ;关闭屏幕控制
      _6 v1 x- ~2 J# Q$ Y7 l, q
  442. LDA #$00
    . d! k: q$ G+ P! O) H
  443. STA PPU_CTRL$ y3 t" l+ v% A) @4 L/ ]
  444. # _% |( \, y6 G$ F
  445. ;没播放音乐就不需要触发IRQ: V5 f0 i9 k% M! L- q' X
  446. LDA <Music_Stop_State, u2 l  e1 l0 a; g
  447. BNE NmiNormal( f8 r: ^, s; T$ C  F" f
  448. % n8 k* o$ s0 e- R
  449. ;重置IRQ索引% @  u5 O6 G4 f0 d
  450. LDA #$001 c- j. d# F1 U" c8 \4 p
  451. STA <IRQ_Process_Index& Z5 y2 g: b- x9 a( t" Z
  452. 9 v' @! z' ~7 c3 K
  453. ;时间秒数为空则跳过
    : t$ a4 X8 G; k, N  g( F  u
  454. LDA <Time_H
    7 ^% ^. c: j: D1 m6 U% A$ \1 {; S
  455. ORA <Time_M! n# I& R. B: r8 s2 M' I5 d1 Z
  456. ORA <Time_S
    - i9 Q+ f) B$ c/ f6 V" q
  457. BEQ EnableFirstIrq& G2 W" Z, U- W3 |2 [  \

  458. . a' y  `& ]7 h) k! C# n3 [
  459. INC <Scroll_H
    ( J# a9 ^+ c4 ~/ p7 t0 r6 Z. R
  460. ' I) ]$ n; q% L/ P* V
  461. EnableFirstIrq
    3 F  b+ S" J* J9 p- Z& ^/ }
  462. ;80条扫描线后触发IRQ
    8 s9 J/ S- k: G* e. R' h! p# g
  463. LDA #IRQ_SCANLINE
    # t+ n- a1 l" e" F
  464. STA MMC3_IRQ_LATCH
    6 G8 n7 c& U! r0 u' l
  465. STA MMC3_IRQ_RELOAD% s  q; L5 d+ U: t: J8 k5 T. C7 c5 O
  466. STA MMC3_IRQ_ENABLE
    / E9 q- \9 F/ e  R  ?
  467. CLI1 V4 _' I  R6 f: z# J  i- g+ b

  468. ) Y  V7 d- u( U. I9 m/ {/ \' s
  469. NmiNormal
    3 n7 s; a; e% }+ m9 J& v

  470. : a+ @  L- p' o  c4 w3 t
  471. ;处理PPU图像5 d" [5 ~- z' H0 e  Z7 ]2 y( L7 S
  472. JSR PPU_Proc
    9 P6 a1 [, o' K, n3 X+ _: ~$ |( i
  473. - A) r  o; ^$ v8 i" A& s: N+ h  [
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)3 R& [7 Z8 W% d7 P
  475. LDA PPU_STATUS
    , @2 ^5 k" v7 g
  476. ;LDA #$00
    7 P) H4 w: ~8 h
  477. ;STA PPU_OAM_ADDR$ k1 C2 }) Q+ k) R
  478. LDA #OAM_TEMP_ADDR / $01005 ]& Q! P& p  N$ I- j- }! c% W$ h
  479. STA OAM_DMA. @7 R: ?) }+ E
  480. 1 R9 S  j) r9 L, Q, v  [9 {3 c# e
  481. ;启用NMI中断
    - A, V8 B4 _4 o  {
  482. LDA Screen_Ctrl
    / C! L3 ^( c3 I: r: ]8 S! p
  483. STA PPU_CTRL
    $ L. c- \0 x. C, }5 G4 N7 ~

  484. ( T# T1 j0 e) ?8 |: T3 R: ]
  485. LDA <Text_Disable_Flag& X' {0 g: F, e4 |7 f" n! o4 _# \" `
  486. AND #TEXT_DISABLE_RAM, X; x7 a0 b7 {1 s& X! `
  487. BNE Nmi_Sound_Play
    5 J+ R) Y8 A- P# J5 t, l' B7 Y5 W6 |
  488. ; Q" O1 n  V3 R  e) ]- G# U
  489. ;处理手柄输入& o/ G% H9 b) {$ ?  b5 k0 S
  490. JSR Key_Proc
    7 A  ~# w8 Q+ e, x
  491. ' v7 T4 V$ s3 p3 d
  492. ;切换音乐(手柄触发)
    % A- A0 K( W. t5 O- E* o/ D3 b" y+ O
  493. LDA <Time_Wait_Cnt
    - R6 ]+ F2 q3 W1 N+ b( W" H8 T
  494. BNE Nmi_Cursor_Arrow
    2 v- i4 c& D/ `1 ~  m, e
  495. JSR Change_Select_Item
    4 n/ X* x# K$ J/ i8 X( G7 w  s2 Y7 D

  496. . \6 S/ G% m* V+ o7 y* ]4 P
  497. Nmi_Cursor_Arrow
    . r. b3 ^' R. `0 d  Z6 q3 H
  498. 5 r6 s  M4 G# W
  499. ;处理光标箭头# t% Q; G3 y$ g, V
  500. JSR Show_Arrow
    ! O+ L; W& S( p8 T

  501. 9 D: i' s& V( t; v* r
  502. ;更新调色板
    7 Z* {% G/ {/ ^, q4 Z
  503. JSR Update_Palette_Data
    6 }# ~# W& a% q/ f" U
  504.   O$ S9 [+ ~$ H$ ]; E/ ~6 H
  505. ;显示时间(缓冲)8 d/ V6 ?. w/ D9 {1 r9 r
  506. JSR Time_Show9 t4 e2 p9 f9 F% s' J+ g
  507. ) u* i8 A. q6 W# z
  508. ;音乐显示(缓冲)
    / x# S8 r% A; Z- k( O
  509. .IF SOUND_BAR_SHOW_ENABLE* ]/ m6 A& M$ d4 Q- d
  510. JSR Music_Vision
    $ P* v9 Q. m0 c2 d$ H4 H7 ~
  511. .ENDIF6 u! c2 y7 B( `4 W

  512. , O- u6 n4 R# @. l* p, ]6 f
  513. Nmi_Sound_Play
    ' B0 X2 n9 x! O5 k" M
  514. ;播放声音
    , s3 O$ g4 T4 d7 h6 {. l
  515. LDA <Music_Stop_State
    . d5 W- Y! f: T5 P& [; g5 N2 w) j
  516. BNE Nmi_Time_Wait_Set
    7 z6 R* p) U6 e2 Z6 M+ P5 K# ~0 h
  517. JSR Sound_Play_Proc
      c4 ]/ I* F5 D- z9 a
  518. % @9 n' b* H" _0 u7 d
  519. ;播放计时+ m: S! W" `3 e- O8 |, K
  520. JSR Time_Count8 V4 g% Z1 F* o4 R% C% T
  521. & e9 q; [' E# \
  522. Nmi_Time_Wait_Set8 i- @  z9 Z" P: s8 f- @
  523. LDA <Time_Wait_Cnt: i* x! c& ]- x8 L, p
  524. BEQ NmiNormalProcessEnd
    2 z/ S" P* g( P3 Z+ u
  525. DEC <Time_Wait_Cnt
    ! [: k3 c* r5 D; @! @3 q% z
  526. NmiNormalProcessEnd
    & [3 X8 J; d+ z: J

  527.   `' ^# A! P( E+ e
  528. INC <Nmi_Time_Count
    . Y) v% G8 J- g$ H) y
  529. ! ?$ M9 ^- F- M; x! l- Z: m3 h9 j
  530. RTS
    ; a% v, ^& n/ a5 k( n  r/ V  A: V
  531.   p' n- r( c6 C
  532. ;==================================================
    ) S" a7 l6 p, P
  533. Init_MMC3
    2 h2 S% f# O7 g; Q; x" y
  534. ;==============================, [& a, b9 b$ i$ k* c9 D
  535. ;禁用IRQ+ `) q! d- S/ d4 e. B5 [1 a2 M- s
  536. STA MMC3_IRQ_DISABLE! V- u/ r8 J, Y( Y2 `

  537. 7 K: k$ {( D! |% G
  538. ;水平镜像
    + {5 w# D" u% V# r7 O, y7 p
  539. LDA #$01  q. |% Q1 ~- l# e- o
  540. STA MMC3_MIRRORING8 F! g" |# G* j
  541. ) D% A& i2 l8 W6 G
  542. ;初始化图形bank7 S, m; p3 {& O& r! {+ |2 T7 [
  543. JSR Init_MMC3_Chr_Bank/ A% v% y7 N/ S1 M' }& ?

  544. - T4 F' M2 R4 v; _; ^+ G: @
  545. RTS
    $ q2 t/ N/ H# h8 Z5 j. T# d" j
  546. ;==================================================
    & |0 s% r" G$ q7 r$ I% C
  547. ProgramBegin;主程序# w2 i& e+ |2 [7 c. p
  548. LDA #$00  E- R, ?& \* j
  549. STA PPU_CTRL
      I9 \' d  s! l/ d
  550. LDA #$000 L4 N5 M2 ]; W4 O: ~
  551. STA PPU_STATUS
    . A7 v; N* c/ [! n
  552. STA PPU_MASK
    9 d& A: t$ H( {! s  A/ j  E
  553. STA JOY2_FRAME
    6 A. f$ O  x6 w5 Q
  554. ' W/ ^" _3 Q' l2 s" L) q! D2 _1 q0 |
  555. STA PPU_SCROLL7 a/ e% J2 W/ H. ?0 V
  556. STA PPU_SCROLL- m5 o7 i- a. \2 V, W, e7 L- ]+ D

  557. 5 p. g0 ?! @, n( n
  558. ;==================================================( i. Z9 M% q7 f7 `: `
  559. LDX #$FF7 I% b& Y1 r. r' f, [; o& x$ _
  560. TXS7 I8 o6 R0 l/ J  T( G4 ?4 z

  561. * u! U4 h' Z8 J" ]7 Z- u
  562. JSR Init_MMC33 D# c9 O8 i5 `: i- C
  563. 5 F. j$ S) \& z& K& j+ B& T
  564. LDX #$026 h+ `7 J( s! m
  565. Check1
    + V6 s  n* L: P  o3 H
  566. BIT PPU_STATUS
    ' ]7 e- |/ A* f7 `! ~
  567. BPL Check1$ W; d8 Q! `6 A- ~% Y
  568. Check2
    ! J) q  }. I' f7 f% L0 R; V* W9 m
  569. BIT PPU_STATUS% c* d3 n9 O3 ~8 e% \9 s
  570. BMI Check2
    $ Y# ?9 P0 ]6 r

  571. ( u% J# |8 k8 n) F, @
  572. LDA #$0F; H9 x# ]2 n6 g1 {: [
  573. STA APU_STATUS
    * r  I1 M  ?5 I% [1 l) r0 D
  574. LDA #$C0
    1 ^* c4 @: e* M) Y% s8 l3 W7 E5 w
  575. STA JOY2_FRAME
    - ?5 B- _3 V/ U; R. Z
  576. : D0 T7 v" s! a9 T$ i
  577. LDA PPU_STATUS
    ' {& T0 q7 ?$ Z' V* s
  578. LDA #$10) R" ?7 U" L/ R4 I6 N
  579. TAX
    " h, [" Z/ G! ]% n6 x  K* E
  580. Check3" i2 u( K* W5 A7 h0 d. O7 {
  581. STA PPU_ADDRESS
      g$ G1 R6 C# |3 T
  582. STA PPU_ADDRESS
    . J7 R- g  S+ \7 Q6 b1 k
  583. EOR #$00
    9 I3 P( Q3 O  R0 W4 ~4 A
  584. DEX3 f5 h" J$ L$ w1 t( @
  585. BNE Check3% s2 x+ y3 \. F3 e, l, ^
  586. ;==============================
    * f  J% l; `0 C" k0 c3 o
  587. ;调色板清空- J2 X2 e3 \" q+ C
  588. LDA PPU_STATUS
    ( i- o6 r2 T, u/ `' L  L, l( W
  589. LDA #$3F
    % u1 e  @3 z% ]3 [4 n
  590. STA PPU_ADDRESS- U& v# i1 T- B. \, H/ S0 H2 n
  591. LDA #$00+ [& _+ l; i/ n
  592. STA PPU_ADDRESS9 O, ?* ]% R/ f
  593. LDA #$0F
    5 B( `1 C$ O9 S' L0 {3 K( a
  594. Palette_Clear" k" X- _! N) a& u, K9 [
  595. STA PPU_DATA$ p0 |: A8 X4 d5 [2 m
  596. INX+ z/ g9 O7 M; H8 q  r  L8 ^
  597. CPX #$20
    ! w3 e+ P" n: F- H% o  n, s& @# \
  598. BCC Palette_Clear
    # }/ ?  d* ]2 o+ A2 ]. x
  599. LDA #$00/ O! X& Q8 H" a" T- F( R
  600. STA APU_STATUS" V+ ~" P+ M% d2 H4 S% V6 a

  601. / V6 K$ B9 _: w3 M9 E8 ~; k: u* Y3 r
  602. ;==============================
    7 {8 m  n# c. O; U: z% b- J/ I7 @, {
  603. ;RAM初始化
    ! g# j; d9 q6 u
  604. RAM_Clear_All
    0 @) p5 Q3 I/ r$ b1 z; i/ [
  605. LDY #$00
    ) H* c, u# F5 Q* A; [# \, Z; H' o, b% l
  606. LDX #$08
    ! X; k$ [4 o- `/ Z& i* ~: x
  607. LDA #$00
    2 F* R3 f! X2 X- t/ g+ t* u2 i
  608. STA <$002 ~6 p5 g# W; K+ C1 L2 n
  609. STA <$01
      C$ i3 |8 O* j; Q) F
  610. RAM_Clear_All_Start
    5 _# U, v6 X* a+ {2 b% i
  611. STA [$00],Y
    , A  Z9 i' J$ Z( p" a
  612. INY
    " L$ |) R0 D! v8 k
  613. BNE RAM_Clear_All_Start
    ; C; n* t; ?2 V7 ]/ z7 O7 k+ W; J) R
  614. INC <$01, G) ^" D2 s% j8 q5 F! j
  615. DEX  {% e. Y% {$ s- N4 G0 g
  616. BNE RAM_Clear_All_Start
    ! _. ?0 v, k4 q& s
  617.   L( m6 \/ v6 \* `# A
  618. JSR VramClear
      Z5 n) N8 ?1 G& |
  619. JSR VramInit
    ! j% ~7 n8 z- J/ H" f
  620. JSR OAM_Ram_Init" U: b! x6 y1 e5 N, F) |/ j% m
  621. JSR Init_Palette_Addr+ ~2 a2 f+ n1 s7 B4 c/ c) x% v

  622. 6 s5 e. d1 i8 l) W$ N0 ?& x6 Y; b+ t8 K
  623. LDA #$FF  B& Q( I) W9 B1 g# X) m8 [
  624. STA Use_Ram_End. }7 R' r! _$ B# F. |. _
  625. ;==============================
    + y2 k4 P2 K/ }
  626. ;初始化背景调色板0 L, D" i' a$ G/ a# p7 y" y
  627. JSR Set_Palette_Color' `+ _+ ~' @$ z) c- u
  628. JSR Set_NameTable_Attributes2 z9 y+ k3 g6 g) T# r
  629. # s: R; n1 a- m
  630. LDA #$00
    " O7 y- O1 `6 E
  631. STA PPU_OAM_ADDR
    ) `9 n, `9 E, ]' z& S1 x
  632. LDA #OAM_TEMP_ADDR / $0100
    3 ^0 k5 f1 N, {) m0 K6 B
  633. STA OAM_DMA8 T( s/ o+ n% }5 |8 C: }

  634. / x4 V. m( d  O
  635. JSR Sound_Reset_Proc
    , P- p, n; Q+ G: p6 w
  636. JSR Set_Sound_Total) r) r- {0 r. q  U

  637. $ d+ j* s$ m9 d! d- A3 s
  638. Init_Start_Music
    / _, G- Q7 }1 M1 a! n( v9 {
  639. LDX #$00- ?2 X7 v2 q7 R! N8 d; R' M" c
  640. Init_Start_Music_Write) w$ K0 [' ~7 p/ l; o
  641. LDA Sound_Start_Port,X
    ! z- G1 U0 s9 A6 q  p
  642. STA <Music_Cur,X
    2 `  W. l  M2 h* T
  643. INX
    - `" Q, A, i! Y& H  [1 T
  644. CPX #ITEM_MAX_SIZE# L+ V" ]( u+ Q0 B5 W* z9 _2 O3 u
  645. BCC Init_Start_Music_Write
    1 |# G9 S" L- F
  646. ! P7 D  F( H2 \  N! Y
  647. JSR Show_Music_Text
    1 O3 J& M- }, Y: K( F
  648. ( ]+ b' m4 ]' Q( c* I
  649. .IF SOUND_BAR_SHOW_ENABLE
    , l$ p* X9 X' [3 w) E' q- V5 l. E
  650. JSR Sound_Bar_Text_Set/ e, C  I: R4 l1 v2 U3 m5 n/ R
  651. .ENDIF  H! Q+ P$ z* U9 }" R  w0 W

  652. 7 n" M/ `/ i3 s/ {: W3 _, n
  653. .IF Track_Name_Pos; |, j2 ^+ T: e0 b% j4 K. `
  654. JSR Show_Track_Info0 J+ w* E/ {- c1 Z1 M- |: w$ |
  655. .ENDIF
    & Q5 o2 j% V( u. [
  656. 2 X4 n; L4 e9 E- U3 C
  657. JSR PPU_Proc
    8 `. P, i) q8 e' C$ B
  658. 0 v- k8 b, Y) h! g: Y
  659. ;==================================================- T0 r3 R2 i! J. [1 ?  M" e0 Q7 w  f
  660. ;音乐bank初始化 / H+ A. G6 w& q# E
  661. JSR Init_Sound_Bank
      z/ M2 u6 ?& C( T0 B

  662. ! e2 B/ ^* S) v/ W
  663. JSR Music_Show6 U# }) S. ]8 ?( e) h
  664. JSR Time_Show
    / R( `. o" W; g0 Q
  665. JSR Music_State_Show
    2 k) H5 H+ K6 P) ]) k
  666. JSR Time_Delay( t/ D3 z* u3 k2 b* V' s( z/ F
  667. * i. g5 ]2 ]3 l$ Q1 k( d' J
  668. LDA #$01  c) Y9 b6 }5 |" B9 n# r
  669. STA <Music_Stop_State; ]$ g2 Z8 R+ x4 l6 a

  670. - N' q6 }% p( \0 Q$ ?; D
  671. LDA #$88
    + r; |/ |5 y6 Z! g- f+ \
  672. STA Screen_Ctrl% S& \; B' n0 @1 _* g6 [# Y
  673. STA PPU_CTRL
    . h9 F8 d* H2 h3 s/ n/ I

  674. : |7 D1 l* W  Y9 V! U7 y1 c
  675. JSR Show_Page_Text
    7 `& ^  I) X1 a& i$ J) S

  676. " s5 R" E2 |1 c9 d
  677. LDA #$101 a1 H# e) O# b& D
  678. STA <Time_Wait_Cnt
    " L  z* J, Q6 \/ B$ J; k9 D0 F
  679. . Z3 c$ b. P$ z% g# e$ K; e$ j5 Y
  680. Wait_Time_Over% h9 f- z7 o7 S. o: M
  681. LDA <Time_Wait_Cnt# o. }" a5 j& @) D- y9 E
  682. BNE Wait_Time_Over
    ) \( F' d3 ?/ N+ Q1 E" I9 h

  683. 0 a/ }. ~% ~# E' D8 \/ T
  684. JSR Show_Arrow
    ! k% y7 d; y5 v" T) U: p3 `0 l
  685. LDA #OAM_TEMP_ADDR / $0100
    , z3 H2 X, D4 p  o7 t# b
  686. STA OAM_DMA
    3 A& B0 h9 l# F( C* P! K( w
  687. # s. i* l+ D! L2 `
  688. LDA #$1E
    ! R+ V# O+ N& |) l, v
  689. STA Screen_State
    ) Y; j- k9 o/ J% e# }9 k
  690. 8 i; i4 h* @+ m  H4 Z  [. A
  691. LDX <Music_Item_Cur
    ; Z( M- w/ }6 I  E9 _5 \3 P  T
  692. LDA <Music_Cur,X# a5 p2 o9 `2 o3 J+ d# t
  693. JSR Sound_Init_Proc! T" V$ [: p$ l' D5 P) m# S
  694. & S, s+ E( F& b) \9 r
  695. CLI! M& U, z7 [+ y/ u8 G  M; m4 }
  696. JMP MainLoop
    + C& ~3 l  b' p' H  t

  697. 6 g2 n' t3 E% w$ o$ t' u
  698. ;==============================
    ( x! H  u0 D) R4 Y
  699. Time_Delay;延时等待9 X4 [+ O4 {3 u1 c5 W
  700. LDA PPU_STATUS' X& t6 U/ q- e+ m' ?
  701. BPL Time_Delay
    ; W: E( x% }. c8 K; L) s- Q
  702. RTS; T9 c5 H" |9 |- ~! p, z: e' o

  703. 9 g# j/ }0 F. K' G; N
  704. ;==============================
    2 Z& V- ?) P( H2 J
  705. OAM_Ram_Init;初始化精灵内存
    2 O! [$ k/ Q, [5 ~' x  g+ T+ M
  706. LDX #$00' b0 X! u7 c6 o0 u! n" e
  707. OAM_Ram_Init_Write# K' g! @; p- e, I# M9 m
  708. LDA #$F8
    : P- c( j7 I* i
  709. STA OAM_TEMP_ADDR,X
    4 {& F) u& w8 q' D/ s
  710. INX
    , T2 B) B$ Z6 q, U2 ]% ]3 {
  711. LDA #$F8
    ) n, K2 r! F4 F& D# V; [+ V
  712. STA OAM_TEMP_ADDR,X
    & [( I6 `8 N$ w% k# B) W& v1 }* r# |
  713. INX" t1 ^1 p$ l$ n4 T! ]) X
  714. LDA #$00" ~& l& o9 [- P6 t# B+ |
  715. STA OAM_TEMP_ADDR,X# x! R" m/ o  l6 g" g
  716. INX; ^9 a2 A' S$ H" w# M5 D
  717. LDA #$F8/ y! N, d# p! g' y
  718. STA OAM_TEMP_ADDR,X2 ~. t! [" m' K/ I! C" Q
  719. INX! C1 I: O9 F- X) Z, M8 l; G7 [- B
  720. BNE OAM_Ram_Init_Write/ p* K. i8 y0 S4 S% c% P
  721. RTS. P% [. Q7 Y5 z, G8 F
  722. # u. C  l/ [" l) {3 U' {: g5 T
  723. ;==============================
    ; V  K/ N7 E! _
  724. VramClear;初始化图形内存3 R0 B6 s- Y5 O& S; t/ D
  725. LDA #$20
    , s4 c: E; q8 i( L6 M3 N* ^
  726. STA PPU_ADDRESS
    5 ?! p! d# b. P9 p; U
  727. LDA #$00# ~8 N: p" E+ k8 j, Y2 W5 M: @
  728. STA PPU_ADDRESS, `. [! a7 G  [! ~$ }$ P  v( F
  729. LDA #$00+ P" H4 o/ S6 C1 O# f9 }
  730. LDY #$00: e! s0 `! r5 o9 _% ?
  731. LDX #$10
    5 n# L1 j) h- u1 m+ g
  732. VramClearWrite
    ; H  I  _# N* o  x8 C
  733. STA PPU_DATA
    ! y' G3 s; J1 R: W! V, z  C
  734. INY
    * N$ i, @6 P+ R8 L' ]7 f
  735. BNE VramClearWrite
    ' q5 C* @4 c; Q# `5 `
  736. DEX
    , d- ~: x1 ?) o9 _5 m- P- z& ^' g
  737. BNE VramClearWrite
    * a0 s5 ?) v( Z% y+ \
  738. RTS/ Y$ j6 {% q! J1 d1 [3 r
  739. : z* t/ F# Q6 R; D! N+ ?
  740. ;==================================================3 U! C" t& Q" R+ w3 _7 U' ^
  741. ;设置MMC3图像bank
    ' l3 K: b) w6 S8 o
  742. Init_MMC3_Chr_Bank& Z  k; C% R, ?7 R
  743. LDX #$052 _7 Y" j9 W. S
  744. Init_MMC3_Chr_Bank_Write
    " N# {' X5 y" h
  745. STX MMC3_BANK_CTRL
    - Z6 I0 q3 C$ o! v$ l) Z
  746. LDA MMC3_Chr_Bank_Data,X
    ! q& l9 x% C3 o' @/ u* c  i+ B! Q
  747. STA MMC3_BANK_DATA
    0 I3 e* G& m/ c0 [2 B+ ?8 w1 a8 r
  748. DEX
    ! \9 B5 u, e; f3 i
  749. BPL Init_MMC3_Chr_Bank_Write. N, r+ t+ J# Q: a
  750. RTS
    5 ]$ E9 x; }  y& q* j/ M
  751. ;--------------------------------------------------4 M$ S. I* G% ~  u$ ?
  752. MMC3_Chr_Bank_Data( T- Q; M1 P) C4 Z* k
  753. .DB $00,$02,$04,$05,$06,$076 r* {, S& i) N

  754. % F# M+ z0 l# m2 n) W  K, S5 q
  755. ;==============================
    & K+ ^; P# [& E
  756. VramInit;初始化图形内存* W$ r- p( \% @9 t0 B! v! y
  757. .IF CHR_RAM_ENABLE
    2 ?7 [1 |& \' |) n! _2 f+ C/ D
  758. LDA #CHR_DATA_BANK5 Y% z# ]/ D, |+ v
  759. JSR Switch_Bank_A000
    $ r- v$ Q8 j( z8 Y* b1 @8 p. R, z
  760. LDA #LOW(CHR_DATA_ADDR)3 u2 L/ E  ^( J, r+ j; r' x
  761. STA <Data_L& u& ]5 j( E: t8 a% B
  762. LDA #HIGH(CHR_DATA_ADDR)- ]7 T0 k; x  D. Z! r$ j
  763. STA <Data_H2 ~/ _5 `( R/ h% n5 a% @
  764. LDY #$002 K8 @" C4 H. U3 X
  765. LDX #$208 H$ H; A1 ?! \1 c# `
  766. LDA #$00
      l' _! F* c/ q
  767. STA PPU_ADDRESS! B7 r- b: X9 P6 e2 _" Z2 \
  768. STA PPU_ADDRESS
    * N' w2 |8 d; V% d
  769. VramInitWrite
    ; E3 ]4 N. N. H% z7 u& F% Q! C
  770. LDA [Data_L],Y
    " [7 n& M7 O! `- O) L
  771. STA PPU_DATA
    ! q; C$ m  D' O  ?7 @9 J6 |4 G: i
  772. INY
    ( {% Y( ~$ `9 q! w; _+ G9 j( \: j
  773. BNE VramInitWrite
    % x- z7 p9 S3 G8 x9 |! O0 i
  774. INC <Data_H
    6 E) n, ~6 k2 l0 C: N; i3 h9 S
  775. DEX! R- B  @, K7 _* S0 A' @
  776. BNE VramInitWrite
    * b- F5 W) q! R
  777. .ENDIF
    % O! B# t& G) p% H6 A
  778. RTS& y# d6 {- F8 P5 v
  779. . g' T! _- g/ X) F' r' D
  780. ;==============================
    2 B' r9 i9 n7 A/ g$ k
  781. ;音乐切换. k6 m% F& d0 B! {* U+ V% q  x
  782. Music_Play_Change
    7 {+ H0 b+ B7 i2 ?
  783. LDA <Key_Once- l8 l4 D4 C& g6 a
  784. AND #$FF$ ^) D) J/ d0 j+ e6 d# Y
  785. BEQ Music_Play_Change_Check
    # H" Q3 `; _& ~- r! \0 W

  786. . ~# Z3 m( s, z
  787. ;禁用音乐条刷新7 N3 X% I; C8 w; y9 V
  788. LDA <Text_Disable_Flag) s# L. V. q/ b/ i4 \: @% l
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    & j) e8 _7 X# p: ]; o
  790. STA <Text_Disable_Flag; \3 M& o1 x1 R# L2 ^' a) h' x

  791. , X! \8 w& T: a8 E# I$ m
  792. Music_Play_Change_Check
    0 _  T3 n0 `4 ]
  793. Music_arrow
    / H% B0 k" t5 k+ }
  794. LDA <Key_Once! O3 f$ f# v/ A& A0 w& _
  795. AND #$0F
    & n; g& M4 u& V3 ?& Y/ A
  796. BEQ Music_Play_Change_End9 m( T5 I1 e0 R8 W( y7 p8 s# k
  797. JSR Music_Track_Change1 [5 k: T5 p5 Y; s
  798. JSR Sound_Reset_Proc+ {. a5 l* \7 j6 z, C9 E
  799. JSR Music_Show  A4 d. I+ c9 `9 v6 K% l* y
  800. Music_Play_Change_End
    $ |3 `& @" K$ e; d0 s
  801. RTS
    ) j/ U1 j2 y* U# E. T
  802. 9 T3 Z0 Q* ?# L- F2 x, H% p0 b; _
  803. ;==============================: H" _4 t: ?% u+ S* J
  804. ;音乐曲目切换% n9 j+ A, ?' O, j8 q
  805. Music_Track_Change
    : I2 Y7 n5 Y/ b. B
  806. LDX <Music_Item_Cur, [6 Y7 N. E) H+ P( |6 y; O& W) x" A, r
  807. LDA <Music_Cur,X
    , ]5 f% j8 D8 N1 A1 D) n
  808. STA <Music_Last4 _! E! P/ B9 ^
  809. Music_Decrease
    $ i* c" ?! c) N
  810. LDA <Key_Once
    + E  O" B: B$ T, |
  811. AND #$42
    & N5 r( K4 z" o7 r% r. U) |( p
  812. BEQ Music_Increase
    6 g0 |  j9 P+ p! H  m; H
  813. LDA <Music_Cur,X" x/ D& S. x8 ]& @1 ^4 V
  814. BEQ Music_Increase
    . U) |4 d: F" z8 `6 b
  815. DEC <Music_Cur,X- x1 G, B5 C2 q4 W, I0 P# S
  816. Music_Increase6 o+ Y5 A. ]9 U' O0 h5 ]1 F4 X6 E
  817. LDA <Key_Once
    1 ]& D0 J( Q  J$ B& Y, Q
  818. AND #$813 i) v( M9 M3 t2 z: I
  819. BEQ Music_Decrease_10
    / Y7 z! _3 ^7 @
  820. JSR Set_Sound_Total
    $ ]7 u- h# G: a6 A
  821. LDA <Music_Cur,X$ \6 ^6 Y! k: |0 v) d; x0 E! p
  822. CMP Music_Total/ p# Q/ \2 z9 p! _* x
  823. BCS * + 42 g1 c/ b6 A" Z6 ^
  824. INC <Music_Cur,X
    8 Y: [- |$ k. L" y& H- y" R9 |$ k  p" E
  825. Music_Decrease_10* T2 _! O- ?3 ?) ]2 v, P8 i
  826. LDA <Key_Once
    7 \# a- k- n' Z
  827. CMP #$045 I  h6 Y+ j% e$ T' K! U
  828. BNE Music_Increase_10; g$ c1 M, A% P% K" |) ]
  829. LDA <Music_Cur,X0 m4 X7 [( J. }2 e( \
  830. CMP #10
    ; Z# b. `/ m) @; T4 V1 t
  831. BCC Music_Start_Song_Min1 I% }1 N% T* h4 D4 ~9 I
  832. LDA <Music_Cur,X
    9 u- V( f5 M( ?& C" d
  833. SEC" U" u/ E6 A- F2 d; T& O
  834. SBC #10
    9 r3 ]0 j; d* w. u# R
  835. STA <Music_Cur,X
    ' [$ z3 I1 \& K3 Q5 y9 ^
  836. LDA #$00
    1 N, U) L6 v% u  A9 _
  837. BEQ Music_Increase_10
    ) e) b' J2 k1 Z/ V- P! K5 H1 ]
  838. Music_Start_Song_Min
    + s, O2 m; v! F( ]4 s, [& A* Y6 C
  839. LDA #$00
    - f+ L9 J3 _$ f% I* f) |
  840. STA <Music_Cur,X0 G- e' e$ |$ {+ o9 w# \
  841. Music_Increase_10/ a) L$ @3 ?+ N# w( n5 `- z3 m! M7 W
  842. LDA <Key_Once8 m& ~& }' {7 W5 B( `
  843. CMP #$08
    8 S- q. x$ l* [% f
  844. BNE Music_Track_Change_End
    0 K, p6 N& @+ ?. `
  845. LDA <Music_Cur,X
    2 t2 T" |4 Z. V6 {" _+ H7 S! s
  846. CLC
    5 ?0 E( r' ?# u* }5 Z( c
  847. ADC #10
    ( n/ q8 O5 w* H' `6 k
  848. CMP Music_Total' j6 f  Z+ O  |, r* W
  849. BCS Music_Start_Song_Max$ B9 \: k# @6 C' C8 X- L
  850. STA <Music_Cur,X
    3 p( G4 l, i" [% O# u5 c
  851. LDA #00; X+ T2 o/ H; i; C8 W; B8 X
  852. BEQ Music_Track_Change_End
    # F6 T" ~3 ^& r; g) ~
  853. Music_Start_Song_Max
    5 L) }2 v# E0 R! m
  854. LDA Music_Total
    6 |) t. S! m# D! w; J  d2 o' Q; u
  855. STA <Music_Cur,X! s( d7 b) y* N" A/ f" ]* ^& u
  856. Music_Track_Change_End8 D" T; Q* L1 i# ~; ]; c
  857. RTS
    5 ]& o& n6 u4 _5 k& N% P! D& b6 \

  858. ( r5 {- k2 s( N# W
  859. ;==============================
    ( o: ]1 g- B% \1 c8 Q) ^
  860. ;按键处理& \* b) |9 d0 v6 ?& {7 |
  861. Key_Proc
    ; A* Z1 o9 v" P9 ?$ h
  862. JSR Key_Scan/ o( d! ~2 |# e& n( ~
  863. LDA <Key_Keep' \$ i2 m' l3 f' g. Q
  864. STA <Key_Temp
    6 W4 J/ {0 x3 A) Z8 e" w
  865. JSR Key_Scan$ p* ]8 f) c: ?" _% E) L
  866. LDA <Key_Keep
    ) x+ v4 m% F. I9 X
  867. CMP <Key_Temp+ O% Z, o2 A3 j1 h+ r+ S1 C9 l
  868. BEQ Key_Get_Once
    , x+ k- p. Z, B5 v/ Z. |
  869. LDA <Key_Kemp7 J" N; k, B. A6 A
  870. STA <Key_Keep
    ) C" d, \# Y( w9 A! D! C5 ~0 T
  871. Key_Get_Once( @8 N. l" ]( c4 D/ x8 ]
  872. TAY  M7 y; k! u- Y
  873. EOR Key_Kemp
    6 ]1 ]3 I7 z1 ^/ d
  874. AND <Key_Keep, t9 a" `5 c7 W7 Z
  875. STA <Key_Once" v- _5 ]+ |1 Q; x, N7 u: I
  876. STY <Key_Kemp: G9 p& z# {: F
  877. RTS% O  W, C/ t6 K
  878. ;------------------------------( ]9 T% v" |- [* |( X- n
  879. ;按键扫描# x* {$ X5 d4 @3 s. f* b, D# D, N3 m
  880. Key_Scan1 E  m$ t- c3 q9 B- m/ F  J! ^! A
  881. LDX #$01
    " Q# y* F, J2 r6 Q
  882. STX JOY1_FRAME  V# \2 P5 ?1 C
  883. DEX1 o6 V! ?0 v9 i
  884. STX JOY1_FRAME% P: j. {! j5 f" t  h, f! s
  885. LDX #$08
    ( C& X9 q3 F7 E+ Y) n9 B! u8 K# U8 x; w
  886. Key_Value: L/ P0 ?1 [7 g. R( T6 S, A4 ]" Q
  887. LDA JOY1_FRAME" Z" c0 G( {9 h
  888. STA <Key_Getv2 _% u$ B6 w" k" v% C
  889. LSR A
    6 M+ e# {! t6 z& T
  890. ORA <Key_Getv
    : g" S2 k- Q$ ^5 F4 D+ b6 H
  891. LSR A
    7 @, z7 l% ?4 N, n0 c
  892. ROL <Key_Keep9 u/ s! E5 E3 q$ W: F9 t1 q
  893. DEX& {3 ~2 t) F" S
  894. BNE Key_Value
      s* }, @& ]  ]4 c' e9 V( t6 G
  895. RTS* B6 z3 X3 k# O: Q' e7 Q, b# d

  896. ( S: \" r- s3 p* q7 W7 S; M# M
  897. ;==============================
    # l# x; m& B! s3 Q. S  O5 M) k
  898. .IF SOUND_BAR_SHOW_ENABLE; |8 y' Z1 G* R0 K
  899. ;音乐条显示, n* O: U1 g, Q4 I& Y
  900. Music_Vision
    ; w2 w1 b0 g5 a. i% C: U2 F
  901. LDA <Text_Disable_Flag
    ( e9 ~$ k$ H/ b% s* F  ^
  902. AND #TEXT_DISABLE_ITEM
    / y; M. {8 b) a6 u
  903. BNE Music_Vision_End
      d+ e7 M. m: t4 [; Z& P
  904. AND #TEXT_DISABLE_BAR
    0 ?( b+ m  j1 Y# s5 u# T+ [9 }- \% ]
  905. BNE Music_Vision_Set
    1 m- s9 x$ y2 C, W! e0 R$ x
  906. LDX PPU_Cur
    . f4 f$ E2 q, o! j9 _' v
  907. JSR Music_Animation, m0 X, D) o4 z# y  ^! c! o
  908. STX PPU_Cur( l- `6 p( G  \- H! `$ t
  909. Music_Vision_Set
    4 h# ]' N, ?+ @6 Y( k: y( ?
  910. LDA <Text_Disable_Flag
    5 o7 k( t0 {$ D5 b! K7 R& h4 R
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ! e. g) c! u$ p
  912. STA <Text_Disable_Flag
    3 d1 h0 t0 H2 c( A1 Q
  913. Music_Vision_End3 v; L9 T( R9 [8 K- p3 e. P9 ~
  914. RTS& \2 n, h- i$ R) y8 g
  915. ;------------------------------4 j. k8 f9 P9 r
  916. ;音乐条显示处理
    # `+ |& E  @0 i4 _$ f+ D) Q
  917. Music_Animation  s( n, }% T) q8 D
  918. LDA #PPU_MODE_CNT_LINE
    * I( ?2 w, Q- H+ x8 G4 v
  919. STA PPU_Addr,X
    : K. X0 z- Q5 `* u5 f: ^
  920. INX
    $ r" N, h% l& [$ N" p  {  O7 Q
  921. LDA #HIGH(Sound_Bar_Pos); G5 |  [1 Z- V4 }& I
  922. STA PPU_Addr,X/ I$ S- h, \0 i$ m4 n: v
  923. INX  }9 s: L& D- ]
  924. LDA #LOW(Sound_Bar_Pos)
    # m1 t! w" h: k* B; K. S: d* t
  925. STA PPU_Addr,X2 N# d6 O. y: Y0 `! o, S) I- m* u
  926. INX
    " z0 o% j' {! ^
  927. LDA #$08/ K8 q5 e, x$ U4 N' c5 V
  928. STA PPU_Addr,X, r- ]* m% R# b/ D
  929. INX
    3 u+ F: M# n/ p3 Y; l
  930. LDA Sound_Bar, r# L8 `- W2 t* n
  931. JSR Volume_Convert, [" q1 @, f' \( q3 h' z4 p

  932. 7 R% \2 N1 k& X
  933. JSR Volume_Set_Cnt! m, W. {: X( j7 S8 `
  934. LDA Sound_Bar+$4. j4 w& p( p& y
  935. JSR Volume_Convert
    / A5 ]1 f! Z9 n  j. u) l* p

  936. - D! k3 t" ~6 M7 u3 z; \; E
  937. JSR Volume_Set_Cnt
    % z* Q  }% h+ Z  e5 B  n% P. _
  938. LDA Sound_Bar+$8  L& d, G4 J0 |( n
  939. JSR Volume_Convert; j; J: {4 d$ o- j" L+ @

  940. 7 i* Z# \& H/ _* Q) s+ p
  941. JSR Volume_Set_Cnt
    ; R$ [, T, x( h% F/ J
  942. LDA Sound_Bar+$C
    6 A. |$ U- ~" m$ Q; D) B$ V3 @+ r! T
  943. JSR Volume_Convert
    2 L5 r' B" @# K! h0 d, K

  944. 5 t  S$ j0 Z6 t# O4 s$ n
  945. JSR Volume_Set_Cnt
    # y5 H9 K+ P# \1 L  E: N% q( o

  946. 5 N. H4 p3 {. W
  947. LDY #$10" I3 `/ X) K. I! o
  948. LDA APU_STATUS6 Q( U/ j, M* S4 ^& U, n# W. |
  949. AND #$10$ V/ q# h- r  u. B* p
  950. BNE Volume_Count
    # K$ K1 y( V! W% G3 l2 ]; v2 g
  951. LDY #$00
    $ G( P: n# w" X1 |5 P5 u
  952. BEQ Volume_Count
    % Z& E' p: j: X- S+ c7 _3 e

  953. 9 M% ]5 S- J2 J0 W, j
  954. ;------------------------------
    . H; i! g( T' N9 j
  955. ;音乐条处理; x4 ^1 i/ j# C; f
  956. Volume_Convert
    ' S" b9 z# c" `
  957. AND #$0F5 u5 W  h* p) d* i* u( J
  958. TAY
    0 G, y2 W6 C" Q
  959. Volume_Count- I# l6 g3 w: q: w
  960. LDA #$08# @9 M  z  z# i: t3 P3 v( X4 K6 R: {
  961. STA Sound_Bar_Cnt
    # N" v( b- d* d  J% B( [
  962. Volume_FILL
    - ~) k# C& D& e4 d
  963. DEY
    ; `% m/ k2 ~; s
  964. BEQ Volume_Half
    ; I- q! k! Q, Q& B
  965. BMI Volume_Empty
    + R4 g) n1 O' o" P" u. x
  966. DEY) l' W2 g# v9 Y! c- i
  967. Volume_Full" G( O& N* p0 [8 ^  ]
  968. LDA #$16
    0 e$ k1 j* J" F( @4 T0 K
  969. BNE Volume_PPU2 E7 z# e2 @- L8 `7 W: ?7 g* S
  970. Volume_Half; Q" B" H( F4 q& k# k' |
  971. LDA #$15
    8 q$ n' l8 @; j/ l  p3 v7 u
  972. BNE Volume_PPU
    3 c1 b$ p- D4 h5 V
  973. Volume_Empty
    ( N( Z" W2 k9 S" x  N( N
  974. LDA #$145 b( m/ r) i0 O. R
  975. Volume_PPU9 k$ n) x$ J2 {
  976. STA PPU_Addr,X9 B4 `6 E: {* }3 l6 [
  977. INX
    ! H. A3 p8 s3 B3 @( O  j4 L" L
  978. DEC Sound_Bar_Cnt
    " w. b: d4 Y8 ?
  979. BNE Volume_FILL7 ]/ g, e% B, I1 k) `& n
  980. RTS
    # m4 b+ E" y- H$ B8 R
  981. # R5 O7 p1 c" W9 L$ ~; |
  982. Volume_Set_Cnt2 V. y# ]1 {. a) o4 p& b
  983. LDA #PPU_MODE_CNT_LINE_NEXT% q* k% G% R9 b+ t2 X) v
  984. STA PPU_Addr,X
    7 c( q3 c, a7 e0 l( \2 x  V9 @' x
  985. INX
      ]" k% O9 f6 `6 p/ K, z0 g
  986. LDA #$08
    $ d& w) ?! p' D7 b; j9 p
  987. STA PPU_Addr,X# t2 ]3 b$ t) C1 j
  988. INX5 r- {$ ^1 W% A9 f1 `" g
  989. RTS
    : O/ s6 Q& K+ t9 {/ K
  990. * J, m: V9 {/ d! a
  991. .ENDIF. n2 I7 h  G4 Q
  992. ' W, Y! j2 j" v' P
  993. ;==============================  t! s. }) p# M; J* H
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    % N) T+ j/ q( k% b3 E2 q
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式7 t; P, G/ R! V. z
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除7 {0 O- z- ~7 ]. }) ^  F
  997. ;------------------------------# c6 a) l) r  j; \0 w+ W
  998. ;PPU处理" l: v  v0 b/ P9 |; k
  999. PPU_Proc. Q& g$ s% ~1 g$ F1 h4 R
  1000. LDX PPU_Cur6 v- O: A6 t. M9 @! ^
  1001. LDA #$00
    + q+ z  _2 O/ a: S4 d5 I
  1002. STA PPU_Cur
    2 n9 P# i5 ~# e% m4 r3 P
  1003. STA PPU_Addr,X
    9 h* |$ V/ j) c. q1 `) f7 p4 ~
  1004. LDA PPU_Addr9 k; ]1 n" e# ^  A7 h
  1005. BNE PPU_Proc_Beg( z5 z8 |: i& I) a8 \
  1006. PPU_Proc_Ret
    * \$ ]3 u/ c) y/ ]
  1007. RTS
    # e# |' x- y8 ?7 A# h! V+ P" {6 g

  1008. % t" z) N0 Z, h+ ?, E) T; ?
  1009. ;------------------------------; Q' ?1 T1 v9 d) V+ j9 a1 }
  1010. PPU_Mode_Return_Cnt  ;转下行模式! s! \% @1 I' Y9 O( @9 R/ S
  1011. INX9 A+ J: C: H* M7 s: X
  1012. LDA PPU_Addr_L. t& H1 O) _! R$ }
  1013. CLC
    . k9 D% x, B- s( i% I
  1014. ADC #$20! f# [6 @9 |( u6 G; ^
  1015. STA PPU_Addr_L
    : v% D: U& Q' v* K3 t$ ?* w6 f
  1016. BCC PPU_Mode_Return_Cnt_End* \4 o" q9 l, Q  F5 m
  1017. INC PPU_Addr_H
    . u: D5 L! @' ?6 C& C. |- c6 a* m. p
  1018. PPU_Mode_Return_Cnt_End) M+ v* N( u* J" k
  1019. LDA PPU_Addr_H
    ( T. @% n6 G4 j, v0 ~
  1020. STA PPU_ADDRESS
    + R9 @& G" U5 ^0 D# k8 u
  1021. LDA PPU_Addr_L
    - v: m0 Y- q- b4 i- z/ f
  1022. STA PPU_ADDRESS
    * K' D# o7 T$ ^. X* m
  1023. LDA PPU_Addr,X
    : B: l" c, o* a" l% j, r
  1024. TAY0 Z/ C0 M/ [( H. L# O% V
  1025. PPU_Mode_Return_Cnt_Write% ^' g: Z) ^5 W4 \+ [
  1026. INX
      M/ P# |3 L+ X9 t
  1027. LDA PPU_Addr,X
    4 K6 W+ P* c2 L' R, o% L  k
  1028. STA PPU_DATA
    4 i. R6 M' O8 B% }) T7 ^& m
  1029. DEY
    6 D0 B) p/ J  k! p) d: Y- c
  1030. BNE PPU_Mode_Return_Cnt_Write& G, w) X* v8 h# |* Y* A
  1031. JMP PPU_Proc_End
    ) ]# ~+ f4 {% ^0 [8 I! p
  1032. ! g3 o' F* t8 x% r
  1033. ;------------------------------4 j3 i  f# e; R% V8 _
  1034. PPU_Proc_Beg  ;处理开始3 Z( H% `: y4 j5 t' B, K* C& i
  1035. LDX #$008 P; L0 c: y6 M# _7 B, T9 t
  1036. STX PPU_MASK% [& u. `! k* C% h  W$ `
  1037. ;------------------------------
      d2 D. J* z. u1 ~5 k" T6 V
  1038. PPU_Mode_Select  ;模式选择
    # e# _+ c7 |( R  \9 P$ e
  1039. LDA PPU_Addr,X
    . S/ N( p) ?2 }2 J. {
  1040. CMP #PPU_MODE_CNT_CLEAR
    & R; V% p+ G9 \* O
  1041. BEQ PPU_Proc_Clear
    ( Z: _& L: v* m. @! i
  1042. CMP #PPU_MODE_CNT_LINE
    , A8 P- @5 n& u) K6 y# T. X; [
  1043. BEQ PPU_Proc_Cnt_Line
    1 F! f; @( N" i2 s2 Q! a
  1044. CMP #PPU_MODE_CNT_LINE_NEXT2 d5 x2 Y* b' m: a( p- f  [
  1045. BEQ PPU_Mode_Return_Cnt
    ; W# r% P  R: x# `2 v
  1046. JMP PPU_Proc_End_Write) ?* N( {, `' h  J
  1047. ;------------------------------
    % s: `+ e: ^, X& A3 ?
  1048. PPU_Proc_End  ;单行写入结束6 Q/ L* e1 F" j- t+ n4 Y3 |
  1049. INX
    ; ]3 y$ S) a, k6 x. y
  1050. LDA PPU_Addr,X
    0 g9 _7 b+ C" J$ d& w) o. Z
  1051. BNE PPU_Mode_Select
    $ F/ b# Z+ J1 e; ^  H! x
  1052. STA PPU_Addr
    ) N" C! e+ y: S5 N" ^2 \3 C& u6 s  X
  1053. JSR Update_Palette_Color* R! M8 @0 v: _0 t
  1054. - g  J) {7 f; t, {; H
  1055. PPU_Proc_End_Write
    : ]) u/ d5 k! o( L# R
  1056. LDA #$00
    6 t! n9 Z2 C* u  I4 u
  1057. STA PPU_ADDRESS
    & k$ a1 @5 a4 @( c9 Z2 `+ X
  1058. STA PPU_ADDRESS
    4 n. ]) J; R  O: ]3 g% S$ m
  1059. LDA <Text_Disable_Flag
    ; r2 L" Y" t$ O% V# W9 F9 t; M
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    ! |) M1 q# N) x$ {) ~" p! l' a
  1061. STA <Text_Disable_Flag
    : M% V: V& u" c  P+ @0 S: u% e
  1062. LDA #Scroll_X) W7 r/ E2 f8 v+ I8 Q* |
  1063. STA PPU_SCROLL
    6 B0 V( M- z% b
  1064. LDA #Scroll_Y: Y: m; c2 ~6 y& h
  1065. STA PPU_SCROLL
    9 p; v6 d- n  x  M/ a
  1066. LDA Screen_State
    " L0 n* N% v, N0 ?9 ?. I  d
  1067. STA PPU_MASK' w' Y' v6 e( o0 ?+ v
  1068. RTS) y. S3 ^  ?4 Y$ Z2 L% s3 H/ N

  1069.   Q/ F4 g+ d, F* g
  1070. PPU_Proc_Clear
    6 r6 A. [/ F" ^3 r+ |% g
  1071. INX3 Q! J1 q( d* o) ^
  1072. LDA PPU_Addr,X
    - V  K0 U: C; ?+ j* \: r3 v
  1073. STA PPU_ADDRESS3 k9 N: z8 A9 ?4 @% a
  1074. INX
    3 z% A3 ^: S) I' |6 \3 u7 |
  1075. LDA PPU_Addr,X" ^3 K* Q" D* N2 J" c
  1076. STA PPU_ADDRESS! g) B3 H1 R) Q
  1077. INX: v! ]2 B3 h# W! ^4 E7 f$ A
  1078. LDY PPU_Addr,X
    . p/ H! E6 i5 C: ^
  1079. LDA #$00
    6 U/ P7 E5 B  v2 B/ y  i. I0 ~! X
  1080. PPU_Proc_Clear_Write
    / C/ G6 O1 j4 Q* V1 `6 H' a
  1081. STA PPU_DATA
    $ s0 h1 f; T. E% \9 x$ s2 L" z
  1082. DEY
    1 \; m' k. i7 Q6 b' S
  1083. BNE PPU_Proc_Clear_Write
    8 ?, l8 O0 R' x
  1084. JMP PPU_Proc_End
    ) U9 z  j6 g% A4 u

  1085. ) K: R+ @/ e: {- J# Z
  1086. PPU_Proc_Cnt_Line
    1 t5 N* W, S% x; \; h
  1087. INX. Y. e6 z3 G% {+ h9 S( L& N
  1088. LDA PPU_Addr,X1 T5 R1 Y" m7 Z- t) `8 k
  1089. STA PPU_Addr_H
    . C7 X; I) H) w
  1090. STA PPU_ADDRESS9 J. g9 |/ u  P
  1091. INX
    ' E, _8 `- }1 B
  1092. LDA PPU_Addr,X
    7 e0 i$ @; c' o, O  q$ @
  1093. STA PPU_Addr_L( z% x& ~) N: h2 W! B3 V
  1094. STA PPU_ADDRESS
    0 b8 w7 a6 t( }0 N2 s8 _
  1095. INX* v) B. K5 ?2 R- E' O
  1096. LDY PPU_Addr,X3 |* Y1 \/ \, _6 c
  1097. PPU_Proc_Cnt_Line_Write. N+ V- v% w0 L  T# m
  1098. INX
    % f8 y" Z9 a8 _! V. J" Z1 y
  1099. LDA PPU_Addr,X
    ) K* a; f. \" h
  1100. STA PPU_DATA- M3 a5 W3 q! z) a1 I, Y
  1101. DEY
    3 n% \( L! `0 Y. D* \: ^* r  P
  1102. BNE PPU_Proc_Cnt_Line_Write4 k; s7 ?, D( k9 p- k7 x6 Q; S2 f
  1103. JMP PPU_Proc_End/ X- A/ _: X( Z
  1104. ( H3 x! Q. Q& j( y: D
  1105. ;==============================% s, U8 g! M& w# j. r1 I& u
  1106. HEX_To_Dec;十六进制转十进制/ }. m3 t, M2 o. M
  1107. STA <HEX_Data
    + q2 D! f$ f. u9 V
  1108. PHA
    8 V& g# C2 o4 x) Z5 q$ [
  1109. TXA
    ) c4 U2 Q8 l8 r: }
  1110. PHA, K! X% R4 h9 A" m( p
  1111. LDX #$003 k+ l) a0 F$ j2 ~6 \5 O+ g5 k" S# [
  1112. LDA #$00
    . I# u% o  F9 B' `! Z0 v1 T1 \
  1113. HEX_Cln
    ' {6 s6 q  D" q. W: Q+ f4 g. q
  1114. STA <DEC_H,X3 r% p* M, P# c/ A
  1115. INX
    0 a  F8 D9 |0 p
  1116. CPX #$03
    ; x, m' }% \. j
  1117. BCC HEX_Cln! Y" b% Q) \3 |+ |* s% H1 z; n7 D
  1118. LDA <HEX_Data
    7 I  @* S3 T8 |: y1 C
  1119. ;------------------------------: i1 |. G. Y0 e+ o
  1120. HEX_100
    % f" o9 ~' e7 }. C
  1121. CMP #100# M! N+ \! Y. B# Q$ h1 H' p
  1122. BCC HEX_10
    # @* Y! Q4 g: t7 |5 F( Y& Q# S
  1123. SEC
    0 K6 _# R2 W% B. w3 j& p8 ~
  1124. SBC #100
    / S2 _/ `  D2 C& P0 T" A
  1125. INC <DEC_H. ?. y' {: S3 x. v/ b. k, w0 Y& T
  1126. BNE HEX_100' U  |9 q- _9 T, l( }
  1127. ;------------------------------
    3 X3 O6 d4 K% M  v* T
  1128. HEX_104 i) K: G4 }3 O, `: N& Z6 ^
  1129. CMP #10
    + M& |2 r7 `- n& O0 g/ R( f, h
  1130. BCC HEX_1
    - l% n% D& g5 _( }0 U0 j6 t
  1131. SEC
    ( x7 ]7 A; t9 _4 y* G
  1132. SBC #10
    * q" e% F- l2 S( q7 N. c1 v
  1133. INC <DEC_T- p- S, B, p% `( y' }
  1134. BNE HEX_10* e9 Q3 |2 y$ C. L7 l' B. d3 }1 _
  1135. ;------------------------------
    0 j8 ^4 [/ D8 G0 ~' N$ R( N
  1136. HEX_1
    * `% Z& p/ m4 u. ]
  1137. STA <DEC_L" e0 I9 W; m* T: Q5 G; C. N
  1138. PLA, L9 t$ W2 r7 W
  1139. TAX/ f0 r; `8 [- ^# Y6 X7 k" u9 F
  1140. PLA
    1 R  Y- s8 A/ j/ B% ?, J: ~
  1141. RTS
    ; [8 n! ^) u* ?5 V! z

  1142. : q6 I- n; _$ M3 _
  1143. ;==============================( K+ k/ ?) _* H3 r
  1144. ;音乐曲目显示1 p5 k4 t/ v+ w) D( o+ a
  1145. Music_Show8 K, a; X! F- U( r' d, w
  1146. LDX <Music_Item_Cur6 E# c* L# W- p( X3 q2 i
  1147. LDA <Music_Cur,X
    3 k- |, m# F6 Y7 R7 O5 e
  1148. CLC
    , S- }& u$ L5 g# o& r, _+ E
  1149. ADC #$01/ d7 X  V( N! G, S% C; @7 v! ~
  1150. JSR HEX_To_Dec
    & E3 F1 N( \" x( G' g" A
  1151. LDX PPU_Cur; u4 D. F" U8 ?/ c
  1152. LDA #PPU_MODE_CNT_LINE9 f) \, S( _; h" N& Z# E' {3 p) x8 O
  1153. STA PPU_Addr,X
    # [) B( g+ ]' p8 e
  1154. INX
    ( w+ `0 u! P  k
  1155. LDA #HIGH(Play_Index_Pos)$ `( T4 p+ d: i6 d6 B- m) D
  1156. STA PPU_Addr,X  }) I5 v( H; L: l5 A  P+ [
  1157. INX" ^0 ]: `2 d6 R' \4 }4 S
  1158. LDA #LOW(Play_Index_Pos)
      L( P2 r2 m2 ?. R6 {. D
  1159. STA PPU_Addr,X
    + P5 {$ ?8 A+ b, W0 w
  1160. INX
    ( f3 n3 n$ {, r% O0 m4 x
  1161. ! j7 T0 K: U9 R. |2 d
  1162. LDA #$07( l& r9 u: c  o. h8 S
  1163. BNE Music_Show_Length
    ( _8 U- X: Z4 F8 L- s2 ]8 G" K% \
  1164. & |3 M. Q* m: p0 U
  1165. Music_Show_Length$ q# b" v% {, C6 g8 Z' J4 e
  1166. STA PPU_Addr,X
    / i' _6 H$ w0 A' Y( {
  1167. INX; r% F& @/ v2 ^5 F1 t' Y: X* J- @

  1168. 0 U+ D' A* j: h1 d8 `' ?
  1169. LDA <DEC_H
    - }, _0 b0 K: n7 i/ A4 L
  1170. ORA #'0'6 M  y- V8 L1 X& N5 V$ O
  1171. STA PPU_Addr,X! h4 \2 ]4 A% V. I- m8 t; o
  1172. INX
    , \# Y( A, h  F% ?
  1173. % S# f/ ~# G+ [& z3 S8 H
  1174. LDA <DEC_T* L6 _3 F% j: r" j$ V
  1175. ORA #'0'( }- O" T  S* D/ B. r& D
  1176. STA PPU_Addr,X
    2 J! K+ @( ]  d* F5 U, N. h$ n1 I
  1177. INX
    / L5 _  `9 p5 W5 I: \$ M
  1178.   [# S9 _3 N* I$ l" M( b0 A
  1179. LDA <DEC_L. ^5 P- I4 P  ~) t" Z
  1180. ORA #'0'
    . r! L8 H7 t1 @; [
  1181. STA PPU_Addr,X
    $ `" C$ W  O5 ?+ w: _
  1182. INX& V% I0 F, n! ?! [

  1183. ' B- I  U' N0 j" `+ m
  1184. LDA #'/'
    0 |" [0 c0 s8 v
  1185. STA PPU_Addr,X
    ! O# q. ]  y* e/ Z" h, j7 k1 d/ y
  1186. INX' O9 |9 a; F9 F& @; d6 z
  1187. Music_Show_Total3 y) @/ V# @3 y- Z7 R6 Q# R: s; W
  1188. LDA Music_Total
    7 l9 C' h8 ?9 r- p$ [
  1189. CLC* Y4 T. V/ M' V
  1190. ADC #$01
    : t. |  P( k  W0 o4 D* r3 I! N9 Y! V
  1191. JSR HEX_To_Dec
    ) i2 E/ ~3 [2 z
  1192. % W. R9 u. _8 H$ A2 n( L
  1193. LDA <DEC_H
    ( I5 R; Z: ?9 x1 ?: ]0 q
  1194. ORA #'0'
    9 e1 G, W: p& x$ z; v
  1195. STA PPU_Addr,X) b! Q' `3 t0 [9 z  M
  1196. INX
    ; U3 u1 h& P* U% L( k" V) D2 x
  1197. 4 m! z, x3 X' p1 M
  1198. LDA <DEC_T
    & j) k1 n9 m4 d% {9 S( H
  1199. ORA #'0'
    ; S8 a' g  z/ D" L0 T* S
  1200. STA PPU_Addr,X
    ) V: V8 O6 Y+ e: k
  1201. INX( n3 b$ I6 ~, z* I( w9 B

  1202. 1 |" `2 `2 l7 f7 o! N0 f
  1203. LDA <DEC_L
    & J# Y3 |! h5 T5 V5 p( _' _
  1204. ORA #'0'$ I, J, k  Q$ X5 S- T8 ?5 Z3 i
  1205. STA PPU_Addr,X
    1 M# v& R) \% b$ e0 O: U
  1206. INX7 B0 q: m6 P) p% R. u3 e5 f( _
  1207. 4 E" O. d  x! Z7 a! U, S: Y, y9 l5 ~
  1208. STX PPU_Cur3 ^, G2 o# Z9 O- u, {
  1209. Music_Show_End9 V' c8 |$ k: G8 G5 K8 N% z- H
  1210. RTS
    ; d5 @' k( q% [$ z

  1211. & J5 p! }: z: t$ {
  1212. ;==============================
    1 g3 O: i3 l. M: U
  1213. Time_Show;播放时间显示
    # ^, j: E# K1 V
  1214. LDA <Text_Disable_Flag
    8 ^5 v, }' o' J" t4 l. @
  1215. AND #TEXT_DISABLE_ITEM! r2 M0 A- j5 h) i6 H5 U) T& C: S$ V
  1216. BNE Time_Show_End
    ! N! |) t% W5 Y& M) Q
  1217. AND #TEXT_DISABLE_TIME
    & X0 [9 [* u4 U/ D9 K9 i
  1218. BNE Time_Show_Enable7 s5 w. [3 O9 b; N2 I' _) \& t

  1219. 8 S9 }; ]8 P0 D( j4 d" L0 Y
  1220. LDX PPU_Cur
    $ u) `; E* Z5 C/ \8 j4 H
  1221. LDA #PPU_MODE_CNT_LINE
    0 a$ S1 |% d$ \- Q
  1222. STA PPU_Addr,X
    ; D3 j- V8 A$ ?
  1223. INX
    / o7 Y) P8 h( M
  1224. LDA #HIGH(Play_Time_Pos)% }9 G+ a. k3 B8 M8 b
  1225. STA PPU_Addr,X
    4 l: F2 S) x3 ^% F" t8 Z
  1226. INX. v4 V$ _, s6 ~% r) c8 z
  1227. LDA #LOW(Play_Time_Pos)
    . n' M2 h; t5 v4 g1 I) z
  1228. STA PPU_Addr,X2 a1 [: w% R3 `
  1229. INX
    2 v* v( G/ E. U6 j; I, f4 l
  1230. LDA #$08
    ' [" {* q: q6 k) S* `
  1231. STA PPU_Addr,X' p2 r& |3 |7 J) M0 Z
  1232. INX
    # r. O, P* f5 F
  1233. Time_Show_H' W0 n0 R; s$ L6 ~7 ^  M7 U
  1234. LDA <Time_H9 K4 A2 C& ~& ^/ T3 q
  1235. JSR HEX_To_Dec$ ?  i2 I, a9 |: g6 k/ U* H
  1236. JSR Time_Digit
    " P+ u" u# f7 }* v3 d- d. S# [) u5 h2 V
  1237. LDA #':'% e) b. F# z. L2 c
  1238. STA PPU_Addr,X
    ' ]8 R7 l( |, t9 t
  1239. INX1 H% c7 N6 A3 ^9 D( b
  1240. Time_Show_M& U/ f/ I3 @1 E$ l2 ^: @/ O+ v
  1241. LDA <Time_M3 o$ Y* i1 Y! g8 O% e( G+ y: G0 Z
  1242. JSR HEX_To_Dec$ F9 a  E8 a2 r4 }
  1243. JSR Time_Digit
    : M% W0 ~7 R* L4 v
  1244. LDA #':'# X3 H1 o$ h) h$ p
  1245. STA PPU_Addr,X  h3 i; Q) R) [, C
  1246. INX
    7 t+ w  K7 I* e( c- m
  1247. Time_Show_S4 I6 d) U( T9 _$ U1 r" y/ S
  1248. LDA <Time_S
    ! I* c: V5 g/ H! ^/ R" {/ d
  1249. JSR HEX_To_Dec
    , Q1 R0 s% A# Z6 q. L0 Y' M# k( w) Q
  1250. JSR Time_Digit& L9 t5 G  P' |2 h
  1251. STX PPU_Cur+ ]9 z3 M$ X# ]+ ~( ]9 H: V+ O+ u# |
  1252. Time_Show_Enable5 ]& n/ a9 X% t# f
  1253. LDA <Text_Disable_Flag
    3 j* m, k4 C; u
  1254. AND #TEXT_DISABLE_TIME ^ $FF. |4 E6 |: s+ u3 k- I/ \8 T3 s
  1255. STA <Text_Disable_Flag2 ?4 I% @1 [; j; s) `; s
  1256. Time_Show_End: ]% G. P( z' u# i3 S; ]7 K! @
  1257. RTS* B% S$ a8 X$ |6 I  C0 k- ?! \
  1258. ; E" X# [% j; h0 P( g( g- G  f7 _3 T
  1259. Time_Digit# f" R- q5 [/ a! I
  1260. LDA <DEC_T
    - h1 }3 Z% J" T$ _. Y
  1261. ORA #'0'
    , D1 f; m5 c* ?5 ]" C8 ]
  1262. STA PPU_Addr,X
    6 T% t& P% x& M( x
  1263. INX
    ( W; U& K  p4 L. ^8 P
  1264. LDA <DEC_L
    ) T6 @1 \& h) O4 v9 _
  1265. ORA #'0'4 x$ \( b( f, f! n6 V
  1266. STA PPU_Addr,X9 B; A* b4 a) h7 [
  1267. INX( K) s+ I) X# \
  1268. RTS/ ^8 {0 I5 _7 L( g1 W  a: P2 _
  1269. & o$ m" i" Y$ _# m
  1270. ;==============================3 f# s/ g: M$ @: z
  1271. Time_Count;计时5 v2 V" p$ `& j8 h1 i
  1272. LDA <Music_Stop_State
    . D* M1 ~4 L  H) M
  1273. ORA <Time_Wait_Cnt
    0 y% T+ D+ u/ N% S* l. o
  1274. BNE Time_Count_End
    : q/ {. g4 c. ~1 k' X0 y5 L9 f
  1275. INC <Time_Cnt
    4 D/ E3 o8 N; H( N7 F
  1276. LDA <Time_Cnt
    9 g( p- `/ K' v: ?- u3 n
  1277. CMP #60
    7 G/ d, a  I, L+ |+ o* i
  1278. BCC Time_Count_End. Y" Z, i) N) m) ~8 p: K
  1279. LDA #002 H. n& `/ L5 l, j
  1280. STA <Time_Cnt
    ' R% T. `; F- y" q- C0 ]4 h
  1281. INC <Time_S5 B* R! J* X$ p
  1282.   ]/ B1 A" |  o# ~5 {
  1283. Time_S_Cnt
    * K; }9 [3 Q7 H+ ]* o
  1284. LDA <Time_S* ~8 D6 S4 b7 T: D8 m7 {/ e: O0 A
  1285. CMP #60
    ; U( n, D$ t7 F* E) O
  1286. BCC Time_Count_End1 `$ [- c. ~8 [
  1287. LDA #008 Z% u* d9 K3 H6 l& ~
  1288. STA <Time_S
    : h2 C$ E0 |$ D: [5 r3 M/ H* \
  1289. INC <Time_M  q8 k# E) v# Z6 d4 Z

  1290. 7 Q1 Q; U+ D' L( }  w- I
  1291. Time_M_Cnt
    ! a1 b* A4 r( r4 Z) E
  1292. LDA <Time_M/ u" m4 W+ V. }4 B, |: J
  1293. CMP #605 X- I$ H: C8 a; l- L' w
  1294. BCC Time_Count_End  _& S, u: |9 j% O* w* r
  1295. LDA #00
    ; X$ ^% x7 {# p# n9 W6 b' A" I
  1296. STA <Time_M
    : M6 U/ j* I8 Q- I& j
  1297. INC <Time_H
    - ^% R" D- H" `( M8 i, @  i$ [

  1298. # x, Q3 v* L# Z3 n3 [" `
  1299. Time_H_Cnt/ E" D5 f7 T1 `# i
  1300. LDA <Time_H
      O" M& t$ w* ~4 X; J$ _2 z. o  C6 c
  1301. CMP #24: w# l$ a8 K6 U2 {3 c
  1302. BCC Time_Count_End
    5 v: [" X: s8 J$ T
  1303. LDA #005 F: `: h" f; n4 I9 M. w" \
  1304. STA <Time_H
      w) [, {  [* p! F

  1305. ' _& l. _* o" u+ z5 m5 u9 g- m, w
  1306. Time_Count_End/ D3 I$ i6 G; x
  1307. RTS
    * a) I. w; o; O7 `2 ]! R+ Z

  1308. 0 ^, c; h# K# Y9 s7 D9 i/ K
  1309. ;==============================
    4 @" }  M, {1 k: }* A1 q
  1310. Time_ReSet;播放时间重置
    # R* f9 L/ }$ j+ _6 F
  1311. LDA #$00
    9 u3 G7 o9 l$ G
  1312. STA <Time_S( i  }# ]8 x3 E* n% \$ _  l
  1313. STA <Time_M - G* `/ u2 I/ j/ J5 ?- D- n7 I# i
  1314. STA <Time_H
    ; S& ?2 V: `7 [3 |$ v3 Q
  1315. STA <Time_Cnt
    * m6 T9 z  i. k- X7 k1 l
  1316. RTS
    , j. ?& E# V7 d
  1317. 9 U: P8 k* x' S& a( ^# U5 B9 ~, ^
  1318. ;==============================) |8 W; H( c& A% C( Z  |( J- c% C
  1319. Music_Bar_ReSet;音乐条重置6 i( A8 E7 m- `4 [
  1320. LDA #$003 b$ v4 K/ d( S+ K6 ?+ @% B6 y
  1321. LDX #$00
    . H  Y3 `, O' g
  1322. Music_Bar_ReSet_Set
    ) C. s6 w- c& C
  1323. STA Sound_Bar,X/ {6 u0 J( v1 i' {6 q1 j1 v: m
  1324. INX: U4 S" F; Y/ Q: V. A4 @' _
  1325. CPX #$10
    3 G- y* f9 k0 l$ M2 L; l
  1326. BCC Music_Bar_ReSet_Set4 F; w) C; z5 U  S5 T2 `; d
  1327. RTS* r+ E& |* C5 d- x0 a9 O+ K
  1328. 7 Z- U1 n: m5 U' o8 \
  1329. ;==============================- K8 H$ s) B  _! S, x( }$ [! C/ ]
  1330. PPU_Data;PPU数据写入
    / {/ K# D3 v7 j- X
  1331. STY <Data_L
    8 t: k" D5 {7 o6 k/ o* e
  1332. STX <Data_H
    & U+ }  \5 o# Y8 K" i' u
  1333. LDY #$FF  R- O; J' m, F# ^
  1334. LDX PPU_Cur
    . b6 e3 c* m! H$ j& c: S
  1335. DEX" i& {4 v, z8 {6 E* ^8 Q
  1336. PPU_Data_Beg
    6 q. s6 }3 B: G5 T; z
  1337. INX: X* u5 [7 G' {9 D9 E' c
  1338. INY2 x* k0 u1 l0 {* C$ j% _
  1339. LDA [Data_L],Y
    % m7 z; c3 g4 p( X
  1340. STA PPU_Addr,X# }! \6 n5 @  F" W: ?
  1341. BNE PPU_Data_Beg  n2 Z8 h' M; _4 _$ p. A
  1342. STX PPU_Cur  w" j' }, v2 [0 q& k; ?0 G( w
  1343. PPU_Data_End
    ; s/ y8 n; o$ X+ J+ I3 j" Z4 M
  1344. RTS$ @. \2 r7 H. k& r6 a9 [

  1345. ) p) }: X) K+ Z0 w/ s- [) K
  1346. ;==============================4 Y& {9 G! h* D; e5 n
  1347. Music_State_Show;播放状态显示
    4 P# F4 o' Z5 _4 V9 B
  1348. LDA <Music_Stop_State! k4 C. J7 o0 X+ f6 |
  1349. BEQ Music_State_Show_Play
    . c2 t, i3 u% \9 e/ W4 p/ b
  1350. Music_State_Show_Stop
    & F; k- F5 L7 R7 c1 g4 Z
  1351. LDY #LOW(Music_State_Stop)8 u! r2 V; v6 U
  1352. LDX #HIGH(Music_State_Stop)% p6 A7 c! f% m$ B5 m5 A4 ^
  1353. JSR PPU_Data  j4 F% C4 S( Z8 x
  1354. RTS
    : F5 b. L  {3 X  g6 l& m+ Y
  1355. Music_State_Show_Play
    ' G/ ~' C* D% k; R* Q! m
  1356. LDY #LOW(Music_State_Play)' R! v0 s# J9 v1 `! m3 ^
  1357. LDX #HIGH(Music_State_Play)3 }7 b# R: j7 A6 H" k/ o
  1358. JSR PPU_Data; y( g0 U. a3 Y) P9 X# y2 Q; q8 i
  1359. RTS
    : H/ ]9 J- O3 ~: B& `, H
  1360. 3 t. K% p& c: f
  1361. .IF SOUND_BAR_SHOW_ENABLE7 D2 y: i5 v! Q; x9 g
  1362. ;==============================2 N( g8 H* J& u- @7 \" L+ |
  1363. Sound_Bar_Text_Set;标题与音乐条初始化9 j! V/ l8 A  h& F! T, i2 d0 G' j2 J
  1364. LDY #LOW(Sound_Bar_Text_Data)
    3 P' E, B; U) I4 D! i
  1365. LDX #HIGH(Sound_Bar_Text_Data)
      q5 |2 z% t! r9 h1 b2 L
  1366. JSR PPU_Data/ u% J) D+ a( n/ s0 g
  1367. RTS
    & M7 K- i) m6 G3 {9 m
  1368. . @; K2 T: B! Y% i! M6 i, p
  1369. .ENDIF
    6 d$ Q; s5 T1 f4 }
  1370. ( p# M& `( M4 J; M
  1371. ;==============================
    % m( p5 j  \$ X) O- _+ F# d
  1372. Set_NameTable_Attributes;设置命名表属性4 b  `. B, p; D) v2 _* k
  1373. BIT PPU_STATUS' l# B$ D/ F3 [& M+ U- ?/ N
  1374. LDA #$23
    $ ~4 n( [: Z- N9 z* z( A& f
  1375. STA PPU_ADDRESS
    ! L; L7 y% X$ u0 X+ m( N1 c
  1376. LDA #$C0
    : k% |5 z8 g5 j: h
  1377. STA PPU_ADDRESS+ G$ z4 s( H2 i5 N8 ^* ?
  1378. LDX #$004 X1 h; }4 L3 a( T; ~
  1379. Set_NameTable_Attributes_Write
    ( k  O3 \; {4 k( l- U0 x- \
  1380. LDA Palette_Attributes,X
    / p/ a0 t( e0 {/ i4 n( O
  1381. STA PPU_DATA
    $ h, y/ ~6 a3 ?
  1382. INX
    9 t+ I  {. D/ U
  1383. CPX #$40
    ) i# Y" F, Z. I) _
  1384. BCC Set_NameTable_Attributes_Write, G3 ]/ Y6 }9 @, K, m5 |7 p
  1385. RTS9 v% `6 h" x0 Q& C1 x! u8 w
  1386. ; S- x" T$ Z! z5 j, }
  1387. ;==============================
    % X* G% G" t* B
  1388. Set_Palette_Color;设置调色板数据( I; _  K* p, F2 I1 `* o" Z
  1389. BIT PPU_STATUS& O+ x+ e( u) Y7 r
  1390. LDA #$3F) O  V8 ?) M8 P7 }3 w0 L$ x
  1391. STA PPU_ADDRESS( l, Z2 B2 f8 o3 p& q! m, Q
  1392. LDA #$005 x/ j) e; t6 n
  1393. STA PPU_ADDRESS
    ' n. Q! F( s9 \
  1394. LDX #$00- @' B$ d( C' P% z5 T/ M
  1395. Set_Palette_Color_Write9 Z3 }1 A; D1 @' t
  1396. LDA Palette_Data,X
    7 d% {* B5 `: T' O5 t- m% S
  1397. STA PPU_DATA
    * B7 C5 y' e  N4 j6 C: k( f
  1398. INX
    $ E: N0 N% v$ c0 V! _) R
  1399. CPX #$20* P, P8 s5 h( M7 S" W9 ~9 ~
  1400. BCC Set_Palette_Color_Write
    4 E+ a/ K# g! A
  1401. RTS
      K3 |' U3 w7 R- x, D
  1402. + v9 _" g: ]7 @! _' c! H! d6 |
  1403. ;==============================
    & ]* |! t# o, ~' `! j) r
  1404. Init_Palette_Addr;初始化调色板数据
    + @0 a5 U6 D1 b% u2 S
  1405. LDX #$00/ i$ r7 ]  K$ D' E
  1406. Init_Palette_Addr_Write
    " B4 ^2 |$ ^3 ^
  1407. LDA Palette_Data,X
    5 T) m; {) p; l; p+ Y- Z' h
  1408. STA Palette_Addr,X
    ( x. t% E. ]# {. u* \2 O% Z3 B: Z. H. n
  1409. INX
    : D0 @; M: b& c1 r
  1410. CPX #$20" I) g# V- T9 {. n7 O% h& R0 E
  1411. BCC Init_Palette_Addr_Write
    $ G0 x& I5 p3 P5 J7 e& E8 K1 ]
  1412. RTS
    " ]0 w6 v3 Y! ]% q$ \7 S- m" S
  1413. ( Q* k' }* s' G4 d0 p/ W. }' x
  1414. ;==============================% ]$ P. P$ }4 U! U4 ]
  1415. Update_Palette_Color;更新调色板颜色
    ( i$ f0 p  i& ?% p9 ~5 Z7 Y' A
  1416. LDA <Palette_Update_Flag
    , F6 C  v+ S7 J3 m! t
  1417. BEQ Update_Palette_Color_End
    8 C$ X$ A7 X5 y9 D5 {8 e
  1418. LDA #$3F
    ! e' R+ w& N+ q7 k! y) X
  1419. STA PPU_ADDRESS- B; K: F+ Z1 W) ~1 T( P$ [, ?- Y
  1420. LDA #$0C% F' c$ i# F6 a9 R
  1421. STA PPU_ADDRESS. }# A% D7 Y( J) \9 Y
  1422. LDX #$0C4 G6 J; S6 U2 Z" N* X
  1423. Update_Palette_Color_Write* f, ^0 H; H, H/ }
  1424. LDA Palette_Addr,X
    + w2 q  K, c' {5 F5 ^+ f' x
  1425. STA PPU_DATA
    - T1 M  X; D) I4 [" }
  1426. INX
    0 |9 o: x9 c: [) l
  1427. CPX #$146 y2 h  B4 b) Y. q
  1428. BCC Update_Palette_Color_Write
      @8 R0 ]' E8 E% x  H
  1429. LDA #$00
      U/ s5 |7 }6 Q, y
  1430. STA <Palette_Update_Flag
    " ^# V' E4 }' S7 k1 k2 U
  1431. Update_Palette_Color_End/ N/ M9 }  X6 U% P% R& N2 W0 N
  1432. RTS# {, Z% S  W; g" B  G
  1433. & ~2 ~: @9 o- m+ }

  1434. 8 T: L0 P+ O3 h5 a& t
  1435. Update_Sprite_Palette_Data& Q/ N5 b. b& ]( @3 k
  1436. .DB $21
    ; I# o/ c" N# E  n. O" E
  1437. .DB $21
    + [1 p' p- g7 e% r0 q: K
  1438. .DB $11
    7 o( Q# Y, I+ V) y( d- J4 W
  1439. .DB $01# \6 J# [4 x( i. E, a
  1440. .DB $01
    % s1 C5 |( Q0 ]5 w3 w+ I$ C' s
  1441. .DB $11, L2 [* T% d5 B  U3 ?, C0 G' V! K4 s
  1442. .DB $21! u+ g2 y( z+ ]. P
  1443. .DB $219 G" T8 V  j" Q; R
  1444. .DB $11
    & B+ r' N. s/ t5 K; [/ d
  1445. .DB $01
    ; P5 Z- p. R, t4 C
  1446. .DB $11; E  E: _1 }* l/ p( Q. H
  1447. .DB $21; ~: x. N* m0 X4 {+ ?5 i/ o! I
  1448. .DB $215 w4 K2 \7 ]& I7 S8 L, `1 r2 ^
  1449. .DB $11
    6 v* q- b5 z' g, j# [7 w
  1450. .DB $01
    1 c. V0 d/ Y% s8 j" h+ N
  1451. .DB $111 F: ]- `6 Y+ B. q! M. q- U
  1452. ;==============================
    - C. o! u3 \3 H' ^  {* @9 C6 B. |
  1453. Update_Palette_Data;更新调色板数据
    - p1 m6 A  g# {. n( D; q4 ]
  1454. LDA Nmi_Time_Count0 }( p: ?! c& n* p) |
  1455. AND #$08( Q0 |% X7 f* }
  1456. CMP #$08$ H% N8 ^8 ^8 o$ C* H
  1457. BNE Update_Bkg_Palette_Data' r( N3 G5 ~* p! ~$ ~: c7 {1 l

  1458.   Z  U$ e: h. F7 k( M0 s
  1459. Update_Sprite_Palette_Data_Set
    3 H5 U  _4 |1 b$ `
  1460. LDA Nmi_Time_Count
    , m5 N- D8 O$ Z7 K  v
  1461. LSR A
    ) T0 y% |# ?; c3 ~' ]5 i# Q
  1462. LSR A! C  y; ^1 [( e2 ~" d
  1463. LSR A8 `. O' I& S/ n& V) n9 O
  1464. LSR A" d0 ^/ m0 R  E
  1465. AND #$0F5 K1 p: E' m4 g8 {
  1466. TAX
    - P3 r6 Z7 a4 ?9 o+ g8 V
  1467. LDA Update_Sprite_Palette_Data,X/ ]' ^/ j& Q3 B* J5 |, h1 M
  1468. STA Sprite_Palette_Update_Addr
      _" ~/ c( M1 p2 o  X" x$ Q+ u! p
  1469. LDA #$01
    ! e. |  U& f2 f/ O6 F% I
  1470. STA <Palette_Update_Flag: o) x0 O; M6 G7 ^1 S3 U

  1471. * z6 M: q8 j: K% k
  1472. Update_Bkg_Palette_Data0 m2 h  n! C( s$ I. K# ~5 g6 {$ `
  1473. LDA <Text_Disable_Flag8 u' }! h, l- a: _* P7 W
  1474. AND #TEXT_DISABLE_RAM1 M; o) H/ l4 V$ d0 C1 g
  1475. BNE Update_Palette_Data_End2 g* U# K' d% U% n' o8 }& `" O
  1476. LDA <Music_Stop_State
    : y1 R6 C& R7 m! \+ Z
  1477. BNE Update_Palette_Data_End
    $ {4 T* Z/ S* m3 [5 B# ?
  1478. 6 [7 I; n4 D# E' v
  1479. Update_Palette_Data_Check+ w6 ?4 j8 A; C, O0 K8 t. q3 Q' Q
  1480. LDA Palette_Wait_Cnt+ N) n. m% M" r+ I1 p# w
  1481. BPL Update_Palette_Data_Check_Over
    4 z& V9 \. G0 l4 C! n& k4 R
  1482. LDA #PALETTE_UPDATE_INTERVAL
    0 N( w6 x0 c9 M- a
  1483. STA Palette_Wait_Cnt) b" q( }4 t/ }  C! ^9 ?$ _# S7 G0 D9 I
  1484. Update_Palette_Data_Check_Over( a' s" x. ], X& ~9 L9 _. e7 z3 e
  1485. DEC Palette_Wait_Cnt
    4 x$ I9 b1 F/ H' P/ V
  1486. BNE Update_Palette_Data_End
    " H6 ^5 }* x. Y. L% f- A( S

  1487. ) ~8 {$ i9 F7 T7 ]
  1488. LDA <Text_Disable_Flag, Y$ k% V5 R, s! c; H: H6 U3 |
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    * J! ~3 A6 T6 S/ V
  1490. STA Text_Disable_Flag  t3 c0 `+ d# s
  1491. INC Palette_Update_Flag
    - b0 Y. R6 p8 w4 e! P

  1492. 8 Q% j9 n; O+ J$ K
  1493. LDA #PALETTE_UPDATE_INTERVAL, ~. m( `( n" f9 {2 b( L
  1494. STA Palette_Wait_Cnt" r# N' `8 ~( R5 W
  1495. ) G. W. f! t0 a( K
  1496. LDA Bkg_Palette_Update_Addr- |; j8 ^- L, O) \  ]1 T4 w
  1497. CMP #PALETTE_UPDATE_MAX
    / i% _. U5 R$ G2 e0 Q! @
  1498. BNE Update_Bkg_Palette_Data_Set
    ( Q0 j7 H5 J& D- W& G
  1499. LDA #PALETTE_UPDATE_MIN - 1
    + R( G2 `( m& n, |
  1500. STA Bkg_Palette_Update_Addr
    , ?% t( `5 p, g9 o% C8 Q( i
  1501. Update_Bkg_Palette_Data_Set
    # Y7 [5 z0 X+ O" f& _+ o
  1502. INC Bkg_Palette_Update_Addr
    - T; a' k* Y# ^) S
  1503. $ {; r; U7 z/ {; s/ h0 m* |
  1504. Update_Palette_Data_End" L$ g& ~. D# a- j. O
  1505. RTS7 l! F  D' l" |7 o. y

  1506. . |4 D& M  s$ [% h5 B7 v
  1507. ;==============================0 R3 L, Q% r  {0 L# @4 T, z
  1508. Show_Music_Text;显示静态文本6 g* H& b) r3 j% [4 S! V
  1509. LDX #$00
    # f0 P/ a  N9 G" ?
  1510. Show_Music_Text_Set
    2 E9 ?- [2 q# z
  1511. LDA Static_Text_Data,X  [4 |. D* f+ }1 U6 O7 u' M
  1512. STA <Data_L+ R/ d4 p; X8 P; C& [1 e) A
  1513. INX
    1 e+ \& f7 C) d
  1514. LDA Static_Text_Data,X8 {4 v( Q: i, b" g7 H: L
  1515. STA <Data_H
    , L+ D) ~2 ^# y% e
  1516. INX
    % ^/ }" l" ~1 F$ ]; |/ n
  1517. LDY #$00
    9 w# h4 ^8 i( z9 w
  1518. LDA [Data_L],Y
      i! }" q# T7 J3 e% H$ H
  1519. STA <Data_Cnt% G# w  Y1 M4 F. |: X
  1520. DEX
    # K5 v* f' N% I" Q6 h+ R2 l+ J4 i
  1521. DEX
    7 u3 Q/ ?$ [3 c: J4 H) w! S; X' U$ s& c
  1522. LDA Static_Text_Pos,X
    0 Q& @. s1 u2 q0 D
  1523. STA PPU_ADDRESS+ n2 O# B" C2 R* Z' n: w; [
  1524. INX
    4 x4 N5 I6 f  J' J- h8 F
  1525. LDA #$206 ~# Q" t3 `  Y! c$ S
  1526. SEC9 `+ [" u! r" Q; m0 O& W
  1527. SBC <Data_Cnt0 L4 }8 p; W! b, n/ Q8 W
  1528. LSR A  |8 u# v4 J' k4 K; V! A+ A( G" p
  1529. STA <Data_Buf
    . M6 y2 ?; V* q8 S: B7 J- ]* z
  1530. LDA Static_Text_Pos,X: v9 h0 e  u8 a, Y
  1531. AND #$E0
    ( s' `; o$ Y# @! Z# ^. k6 Q7 P
  1532. CLC3 o3 K$ x! p1 ^  n
  1533. ADC <Data_Buf
    % O# \$ `9 s, r$ f/ K6 L
  1534. STA PPU_ADDRESS' U4 f* r& z! ?$ t( p
  1535. INX
    " K. c: n7 C7 z
  1536. Show_Music_Text_Set_Write# E- \% g9 a+ N1 S8 e3 k  U
  1537. INY
    3 S/ B1 U- t; O& d, M8 y8 |6 U
  1538. LDA [Data_L],Y
    4 I) c! E' a4 h7 f3 i& K1 [5 P
  1539. STA PPU_DATA5 T$ c& [: T4 J7 ?1 N3 d$ B
  1540. DEC <Data_Cnt
    ! z+ C* n6 _2 ^; K7 Z
  1541. BNE Show_Music_Text_Set_Write
    * H# T6 u: k* Q% F
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos$ n5 X3 }8 ^' J- P5 i, ~+ i
  1543. BCC Show_Music_Text_Set
    ) c. i+ W/ g* H6 s' z  S
  1544. RTS
    6 v% ]& f1 o9 _4 x- W
  1545. 4 G( ?* G8 L1 c* B
  1546. ;==============================2 j  ^5 ^9 |3 k4 N& ^  x5 ?8 H
  1547. .IF Track_Name_Pos;显示曲目信息+ T, l" H; R! D2 J- w7 F3 b/ }

  1548. ; U# k+ f* @4 G2 k
  1549. Clear_Track_Info
    : l0 [. o9 K" D$ V: T+ s4 j1 a* C
  1550. PHA# B: I% \$ |4 w6 b# b
  1551. LDX <Music_Item_Cur) K7 S4 q' s- Q' U- a* N
  1552. LDA Track_Name_Addr_Flag,X
    ) ?5 U7 Q0 T+ H
  1553. BEQ Clear_Track_Info_End_Ex
    . K& @) \& N4 ~* a* j) r. ^  b
  1554. PLA" ]- t- d& {; X1 {( V( K
  1555. ; @5 m+ ^+ U  B, Y
  1556. LDX PPU_Cur
    0 @1 ]- t- v/ G2 u. J: D; p8 v
  1557. PHA$ J/ Y# S0 k+ K/ B
  1558. LDA #PPU_MODE_CNT_CLEAR  p0 l  {3 \& x, e
  1559. STA PPU_Addr,X
    6 I" g; t2 i# r7 @2 x* _9 a5 r
  1560. INX
    4 K) ]0 u* S5 G3 O. z8 t
  1561. PLA
    8 p( R3 V1 b* T( J7 E, ^
  1562. JSR Show_Get_Track_Name_Center_Pos
    ( `- B# [& u1 n. G
  1563. STX PPU_Cur
    + W5 A+ h6 K( ]" W: c
  1564. Clear_Track_Info_End
    ! ]) o1 Z( J2 g8 T
  1565. RTS8 N/ o% l4 S  b5 `2 c4 ?
  1566. Clear_Track_Info_End_Ex
    0 w; y( K: g1 s
  1567. PLA
    ( b, z5 g% G: X
  1568. RTS
    * O. ^! n0 M( N/ F0 O+ K+ f3 _
  1569. 7 |( i! q& s' w5 r0 s5 }
  1570. Write_Track_Info
    / A- @2 F) \$ H
  1571. PHA' B) n' D" d0 f$ H) [) S& R. T4 q6 M# @
  1572. LDX <Music_Item_Cur
    3 a; O7 Q5 K6 [
  1573. LDA Track_Name_Addr_Flag,X
    * [4 G; P% o2 b/ G. W, T
  1574. BEQ Write_Track_Info_End_Ex& L* D0 t& r  p& X3 i, _7 F7 Y
  1575. PLA
    $ y  m0 j6 ]7 X* @1 B/ g( _9 g
  1576. 1 ~1 c. z* {/ v4 C$ N2 K; F3 l- O7 }
  1577. PHA
    $ Z' p: {0 {" p& B/ y* v, A- \
  1578. LDX PPU_Cur3 k$ k( ?0 f; G+ _! Q6 ^6 u
  1579. LDA #PPU_MODE_CNT_LINE( R% b, \, \) w
  1580. STA PPU_Addr,X
    . a0 [6 _3 r$ c9 E' M: h& c" {7 ~/ p
  1581. INX! }) x  v. _+ @5 s
  1582. PLA; b* J+ _- Z$ s' m
  1583. JSR Show_Get_Track_Name_Center_Pos9 h& f' l2 m4 F* S8 f- \
  1584. Write_Track_Info_Data9 i, E: [9 L* `4 R
  1585. INY
    0 V# I9 u$ W6 F6 n$ j3 @( {
  1586. LDA [Data_L],Y
    2 q0 N/ \- a0 y* Y& }; g9 p% G
  1587. STA PPU_Addr,X4 w8 \: Z) K7 T* T+ V, O! D
  1588. INX
    7 u& T% V: ^+ S+ s( R  W8 J  X
  1589. DEC <Data_Cnt
    ) {$ H+ L$ z, c& P  t# ^, X( q) n
  1590. BNE Write_Track_Info_Data
    7 i# u4 |( ?! L- I* Z
  1591. STX PPU_Cur
    - \* r2 h6 [& x$ T+ b/ t0 A
  1592. Write_Track_Info_End
    ' j6 B( H; n7 q  J" V& w+ h2 }9 Z  T
  1593. RTS5 A: \6 r, n" m! I1 g/ F7 a0 _
  1594. Write_Track_Info_End_Ex
    . @- E1 x0 Q  ^) F3 t5 F
  1595. PLA
    6 V. Y3 D0 M5 p3 B
  1596. RTS. _/ D/ N8 h- n, |- Q6 R) E

  1597. 3 c, u: h: i- y" e& n
  1598. Show_Track_Info
    % z) g, R: [9 `
  1599. Show_Track_Info_Clear% u5 Y3 J0 N: K7 p
  1600. LDA <Music_Last
    # Q& ]' ^: C: Q# h8 ]
  1601. - r. r. W; v. }4 L
  1602. JSR Clear_Track_Info5 F% V% F, l, s' \* a
  1603. 7 o0 _! L4 Q. Q# ?7 O; m) S$ Q  o, b
  1604. LDX <Music_Item_Cur
    ; C5 w% _3 P$ L" x7 G$ b" e3 j
  1605. LDA <Music_Cur,X
    + K1 x5 I* n1 E  `# w/ D( [$ f
  1606. JSR Write_Track_Info( R2 V  }  _; P$ W  t* e  E' _1 B
  1607. RTS
    . Y# k; r' ~+ r) n0 b, D& ]8 j* U
  1608. ; P4 U' n& b7 u5 k: ?6 t7 N. g0 w
  1609. ;==============================
    # K6 S. V/ u4 z9 H" ]
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    6 P+ E; G; u( z- T: b) B
  1611. ! c- i4 I: D: w- _* V, [; X. ]
  1612. ;取出集合名索引+ B4 E* k3 |: j3 O5 R
  1613. PHA: X# D1 t2 T& M  d

  1614. $ j1 \. _6 P5 f" ^6 W: R- m
  1615. LDA <Music_Item_Cur  z1 d& P& w, w* G
  1616. ASL A, U* Q. _9 }" G( `5 I
  1617. TAY
    ' a% P' ?9 R& X
  1618. LDA Track_Name_Addr_Port,Y
    4 e. _- W6 p, r. _0 F
  1619. PHA
    3 D9 i: a/ j2 h* \7 d5 `) r3 y
  1620. INY2 H  r2 v1 ~& o6 }  ?# `
  1621. LDA Track_Name_Addr_Port,Y5 Y* B9 Z" ~8 b
  1622. STA <Data_H* a- h+ ~. V& J" C5 ^
  1623. PLA9 ~( H1 j0 v3 E: d0 T4 _7 a: v
  1624. STA <Data_L( n% d0 G/ b! l1 q/ s* v0 w; |2 ?

  1625. % [+ T7 {+ [/ v. O- ?
  1626. PLA
    * C- N3 m# ~9 |- s9 [" g; u9 V6 \
  1627. 1 \0 j; r6 r7 f" m% v( D5 L. w& I
  1628. ASL A, b& Z; h( g; r
  1629. TAY) B  L$ E. S, W2 q7 V
  1630. LDA [Data_L],Y
    0 \2 z& r! a& N, `4 R
  1631. PHA. Y' {8 \2 _2 |0 U+ U& T' \
  1632. INY/ j3 H' n1 \4 T$ s1 U
  1633. LDA [Data_L],Y
    0 R' Q. E5 u( U3 s
  1634. STA Data_H
    & ]3 \1 u+ x6 w3 W/ a5 x
  1635. PLA
    & V) {. g$ @/ k7 P/ m' y5 p
  1636. STA Data_L% m8 U, t/ P* ^( e7 i- U) d9 |' J

  1637. : ?& A; f$ H! t1 l) B# @
  1638. LDY #$00
    ( f) Z- p9 ^" r* A! [% ^
  1639. LDA [Data_L],Y" K/ K1 o+ D9 F) V& M9 V
  1640. STA <Data_Cnt
    + r. P9 E# Y: _4 v, R" S9 u
  1641. LDA #$206 c) W. N4 `3 d+ P9 B9 {
  1642. SEC: j4 Q6 l/ E5 Y/ p
  1643. SBC <Data_Cnt
    3 ]5 L8 d, N7 g, o
  1644. LSR A
    - N2 O" s# _0 C$ c# ^+ ]
  1645. STA <Data_Buf( R4 I% R; h, Y) L' s2 }
  1646. LDA #HIGH(Track_Name_Pos)5 K7 e. p& `- N# o0 z* P- F7 S, Z
  1647. STA PPU_Addr,X# d( F- D- A- R# q0 s
  1648. INX9 X1 x9 W5 V) t, ~+ [, B8 J( c' D" A
  1649. LDA #LOW(Track_Name_Pos)3 O6 P: T5 v- A/ J8 w
  1650. AND #$E0
    5 [/ B5 s* d2 |
  1651. CLC* D$ X+ S" Q: [
  1652. ADC <Data_Buf; @* }8 Y8 {5 x) J
  1653. STA PPU_Addr,X! M" g4 v+ J9 M
  1654. INX1 e$ Y! ]5 P2 {5 y' J
  1655. LDA <Data_Cnt' {; c  G: T* J2 Y, \4 A! B* @
  1656. STA PPU_Addr,X+ p  K% r; ^! A
  1657. INX
    : h! r) R& i! d( u7 c+ i+ @$ w
  1658. Show_Get_Pos_Center_End
      v; b7 z; A% E5 a1 h. L3 p8 u# U3 q1 H
  1659. RTS: M' d: M0 w- Y8 l
  1660. .ENDIF8 A& @6 y  r; Y- c" M
  1661. 0 ]7 h- ^$ u$ B1 i0 Z+ e# a
  1662. ;==============================
    . J$ Y! U$ b8 ~+ G& I
  1663. ;音乐端口清除6 w  m* |$ z) H4 G+ y! m- E" d$ o! u
  1664. Sound_Data_Clear
    5 I4 X9 b( O. S6 q
  1665. JSR Sound_Port_Clear+ E( _% S& Y" H& C$ y( ~/ l
  1666. JSR Sound_Ram_Clear
    # c& z, R- {8 X8 V& A1 B/ I" _
  1667. RTS! T. O+ B  ^% \% R* n! r
  1668. . V2 \, f: `) H; j
  1669. ;==============================# o4 n: F$ Z1 r4 E
  1670. ;音乐端口清除
    * }: d# p  S% T9 b
  1671. Sound_Port_Clear- ^: Y) W; f- E1 B9 D8 y, w: p
  1672. LDA #$00
    . Y1 P. z# @& x" _5 d: M  l) l# P
  1673. STA APU_STATUS
    / J" y4 w% i& X# N5 n
  1674. LDX #$00
    , f% x3 v9 C5 V/ K. W/ u! R
  1675. Sound_Port_Clear_Write; k* ?4 \& ]' e4 J
  1676. STA $4000,X6 v  @- Z" n4 E; j1 }! O: F- p' G* c
  1677. INX- w- m+ p( b! S' b9 C# G
  1678. CPX #$14- s. y" C! A9 A* U; m$ `) o
  1679. BCC Sound_Port_Clear_Write
    0 F0 ?8 t% i# R) k: z  [
  1680. RTS
    : e5 [, ?8 a7 e9 R

  1681. ! I  j% D0 P" K7 O
  1682. ;==============================
    8 |0 d6 o+ R" x- r; D9 W3 o' R
  1683. Sound_Ram_Clear;RAM清除
    ( \2 b% R( t$ z* H8 l( ]7 p
  1684. LDX #$006 _# K% V" k1 B5 C2 y( R  A
  1685. LDA #$00
    1 c) x  Z8 A% D8 r' ^
  1686. Sound_Ram_Clear_1
    4 k$ M5 |3 B: g" d
  1687. STA Sound_Ram_Addr_1,X
    % P4 u$ e* h. {
  1688. INX' T4 d, ]3 T6 y! s
  1689. CPX #Sound_Ram_Addr_1_Size
    ) V! w0 C% i+ x0 e3 a) l4 y. N
  1690. BNE Sound_Ram_Clear_1! O- r. K( X4 E  O, q
  1691. LDX #$00# A4 T) K/ u3 R4 H4 ~5 b& S1 L  d
  1692. Sound_Ram_Clear_2
    # C+ j! G: L6 P% `
  1693. STA Sound_Ram_Addr_2,X
    . Z) Y8 Q0 N: l- z0 L) e
  1694. INX
    " \6 l% i2 ^! z7 A/ L/ O+ l+ e0 i
  1695. CPX #Sound_Ram_Addr_2_Size
    3 h5 b) v, o" M3 P  |
  1696. BNE Sound_Ram_Clear_2
    9 e# y: F' g+ h% e- q% n
  1697. LDX #$00! c2 h$ O/ Z& U, w3 z
  1698. Sound_Ram_Clear_3
    . ~) a0 d" c6 Z  q1 ^" J# w6 s9 i9 S
  1699. STA Sound_Ram_Addr_3,X
    % q2 @: y; E8 s4 d0 J) k  ^
  1700. INX7 W& P+ p& H- U, I: x4 E1 m3 E
  1701. CPX #Sound_Ram_Addr_3_Size, u4 Q/ u& U+ o. b
  1702. BNE Sound_Ram_Clear_3
    1 \) F4 q( a" l. g+ K  F
  1703. LDX #$00* Q- R; Q# }( Y4 y- N
  1704. Sound_Ram_Clear_4! f) ?+ c5 M0 x+ \9 _' q1 N
  1705. STA Sound_Ram_Addr_4,X% h3 D9 @/ Y; A4 ~
  1706. INX
    8 w6 d" [9 D" @
  1707. CPX #Sound_Ram_Addr_4_Size
    0 m7 E/ g% `# v( d9 O
  1708. BNE Sound_Ram_Clear_4+ \- w( t6 g% B4 Z; `3 V
  1709. Sound_Ram_Clear_5& G& G9 V- p2 j- Z9 T/ J7 m: I
  1710. STA Sound_Ram_Addr_5,X( ]; }: U' c/ R$ Z& ~
  1711. INX
    8 B/ ^: P0 X/ A- ?% v8 v6 c' l6 ]
  1712. CPX #Sound_Ram_Addr_5_Size4 Y( Q7 p, Q8 J  d4 n" ]; e1 b& d
  1713. BNE Sound_Ram_Clear_55 \+ |$ j& K# J& Q" D( V- i/ O
  1714. RTS* j- s( R, w( i6 S! X, R; @* [

  1715. 7 X9 g! R/ g, K7 F3 p: s3 c
  1716. Get_Music_Collection_Name
    0 x: G9 l( a: ~) `# X
  1717. PHA
    9 \! t) L  N4 @4 D% B. l# I: e
  1718. LDA <Music_Item_Cur
    " _* W7 |4 O; F% Q6 ?3 h
  1719. ASL A2 A4 `# Q6 g$ i  z8 u
  1720. TAY/ F6 V2 u0 O) r
  1721. LDA Music_Collection_Name,Y
    6 U2 ]! n! W3 W0 [' h0 i
  1722. STA <Data_L/ q  e1 q! B- L- X5 C3 S
  1723. INY
    ' ]( l% O4 j# e% X2 S
  1724. LDA Music_Collection_Name,Y
    - e& {0 _& c4 P7 K& y
  1725. STA <Data_H
    , A" d( h2 ]8 t5 S/ o
  1726. PLA1 u$ E: F3 K8 Y" y  W/ E" K
  1727. RTS
    8 r0 V2 v: U/ l# Z: _

  1728. ! S. g  L1 k; t
  1729. Set_Sound_Total
    8 w  l; y+ N* l: e
  1730. LDY <Music_Item_Cur! P" G  A& U  x0 ?$ D5 r
  1731. LDA Sound_Total_Port,Y
    " Y  F' M* u  h& j2 p* v
  1732. SEC, c8 m5 `+ f  t4 Z' ?4 [
  1733. SBC #$01
      Z) ]! |9 |( A/ D% P2 ^9 I
  1734. STA <Music_Total3 ~5 E; i5 v6 r* r% U8 j
  1735. RTS
    ) j" N: `. D( c% C
  1736. " A, B1 y9 o1 y" e; J( I* C: Y
  1737. Get_Sound_Start# Z# ?5 g0 S# W; D* R
  1738. LDY <Music_Item_Cur
    8 z& o3 K/ a* I% t: j
  1739. LDA Sound_Start_Port,Y
    8 S1 I8 T7 r8 K* `# J; }; K
  1740. RTS
    " ?# ?; F7 ^% W& K+ D1 g' L3 e

  1741. . t& M& V* z; u9 {9 s# J
  1742. Set_Sound_Init_Port( z$ a) X4 X. e5 |+ L* t
  1743. PHA+ M' [& U6 q, b( ~' T+ H
  1744. LDA #$20
    : d% ?5 u( U$ @* y, W: S
  1745. STA <JSR_Addr_Op; R( s. D. \9 e7 U# k
  1746. LDA <Music_Item_Cur. y9 h9 x+ z: N4 q6 f& O1 c* U% S( C0 C
  1747. ASL A; e3 g2 m+ v$ ~9 z! `* p
  1748. TAY# H- \9 a* a& _0 g& ?' c0 ]6 F% A
  1749. LDA Sound_Init_Port,Y& J" w# g' ]: g9 o% O% t
  1750. STA <JSR_Addr_L5 y: i6 H+ {2 C7 o/ ]! u% g* o" }
  1751. INY) M: [; ]! [: @, H+ D& Z, ^, O
  1752. LDA Sound_Init_Port,Y# ?0 h2 t2 i4 t* P
  1753. STA <JSR_Addr_H% s& Q8 C5 ^% A7 m! @
  1754. LDA #$605 ?5 N, ?& g/ q0 X. k
  1755. STA <JSR_Addr_Rts9 v: b4 d) t+ r' K( g+ L& w+ u
  1756. PLA
    8 ^. ?/ e, n9 U/ E. |
  1757. RTS
    5 X$ I2 p& d7 o3 S8 Q0 U

  1758. - C; [- \0 E' t
  1759. Set_Sound_Play_Port
    2 g& q0 D/ t1 z0 A8 S
  1760. PHA! n* p  k  M3 |% H  f1 h, A' g, Z9 U
  1761. LDA #$20
    5 ~( T4 O( a& o: ?0 T
  1762. STA <JSR_Addr_Op
    % w8 C# h1 ~& a; n
  1763. LDA <Music_Item_Cur+ D& ?$ x/ ?) w( I0 e8 G- d
  1764. ASL A
    . Y7 k5 a( ?! [$ {6 K, R
  1765. TAY
    2 b6 Q8 v$ x4 q% c! P$ n5 D" K
  1766. LDA Sound_Play_Port,Y+ k% y( K* g5 K3 l7 S% b
  1767. STA <JSR_Addr_L. ]3 f9 e* d: a
  1768. INY! R  c+ v" ?$ O
  1769. LDA Sound_Play_Port,Y
    7 m8 A+ R! a0 D  f
  1770. STA <JSR_Addr_H
    ; G) Q3 X: ~, H/ x  x
  1771. LDA #$60
    : K6 V0 p4 k! |
  1772. STA <JSR_Addr_Rts
    2 X4 z- C' S, e3 v+ a* K9 l' j- |& _
  1773. PLA
    - p) u7 }; N# w. v! c# B0 w
  1774. RTS
    ; t9 e% W3 y& j$ d

  1775. , b0 ^( q5 v$ v  `) L
  1776. Set_Sound_Reset_Port
      l: H. G" X9 |8 N& G9 O
  1777. PHA
    6 x3 H/ }# `6 Z& z' k0 L$ D* k
  1778. LDA #$20- _4 A2 y: J( M0 C5 J. D: H( r
  1779. STA <JSR_Addr_Op
    & I; o$ z" {- ~) z' R
  1780. LDA <Music_Item_Cur
    / R. i8 ~+ p4 Z- r! [5 v
  1781. ASL A
    . v2 f) W6 e& f/ O$ B
  1782. TAY
    * p; m1 Y& |: {. ]
  1783. LDA Sound_Reset_Port,Y* p: L: n# Y" r) z9 O
  1784. STA <JSR_Addr_L
    " R! P/ T# r0 L0 @' d
  1785. INY
    ! F# @, w0 q$ ~, L
  1786. LDA Sound_Reset_Port,Y
    ; W& f' Y: V) f( W5 z0 d6 j$ s5 @; x
  1787. STA <JSR_Addr_H
    6 g6 [( d+ s% X5 f. b; W- y
  1788. LDA #$60
    2 Y2 a3 D* A) a2 V
  1789. STA <JSR_Addr_Rts, H' [4 P6 E8 b$ g" q
  1790. PLA: K# s' g. A( s
  1791. RTS
    8 ?; ]2 P) S' L" ~! h

  1792. 5 }: l! z+ N& I: \$ \
  1793. ;初始化音乐bank8 B2 e5 f9 Z/ t/ \+ G
  1794. Init_Sound_Bank6 G# Y: W, j5 ~$ S9 p- `
  1795. LDY <Music_Item_Cur
    $ w4 u1 Y' `' w0 A
  1796. LDA Sound_Bank_8000,Y
    * ~/ ]& u5 M. p% a
  1797. STA <Music_Bank_80001 V% M" k- x. {' ]: ^) i; Z
  1798. LDY <Music_Item_Cur
    , M( [! \9 W6 K+ X
  1799. LDA Sound_Bank_A000,Y
    5 @' h6 h6 q6 ?4 n9 t
  1800. STA <Music_Bank_A000- z6 Z: L5 b( }( H* i0 [
  1801. RTS1 y# B9 C9 z& {" U3 N4 e

  1802. 8 Q# z- E, j" Z% n$ D7 r6 U1 l
  1803. ;==================================================
    / H; ^, ]7 q6 K* w3 K+ z
  1804. Sound_State_Reset;音乐状态重置5 ~4 D4 I% R) F
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    # j% O7 D5 _/ C- _
  1806. JSR Time_ReSet             ;重置播放时间
    8 o# t: L, v! {. p: F6 c# Z/ l
  1807. 2 {1 Y1 z4 W$ F
  1808. LDA #$00
      V1 ?" T" {6 S0 ~" _, `7 G
  1809. STA <Music_Stop_State. E; l1 a$ u3 R( F) x
  1810. JSR Music_State_Show       ;显示播放状态' ?7 y, i% }: ^8 z& y
  1811. 0 f2 M7 g/ p0 \
  1812. .IF Track_Name_Pos. S; P) X8 c# V5 m
  1813. JSR Show_Track_Info        ;音乐曲目名显示  c6 ?4 ]+ @( E3 v: C
  1814. .ENDIF
    ( J% M( @0 o- a  l. G2 E1 g
  1815. 7 p/ o. c. s4 \# t! n' t6 R
  1816. RTS
    ) {9 T8 A) ?' i

  1817. # N* j/ r5 h' n
  1818. ;==================================================, f7 x) y. j5 W/ |
  1819. Sound_Init_Proc;音乐初始化处理
    5 R! z( P* L! [$ r. W8 R# c
  1820. PHA
    ( e: {2 \1 m! u+ F3 ^1 Y* u
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址- `* I( _4 K$ F$ ^
  1822. LDA #$00' X6 P1 n' Z, x0 M! z
  1823. STA <Scroll_H               ;重设水平滚动
    8 F: J' h8 V+ i, B3 B# p; R
  1824. LDA #$0F; `- B7 Q6 k7 U$ g  ~( I% c
  1825. STA APU_STATUS
    % m) s- y2 e$ w7 J0 F# E
  1826. PLA5 }- J4 B/ G7 k4 [6 ^  n9 R, ]1 }5 F
  1827. JSR Sound_Init             ;音乐初始化
    , ^0 n. p$ r5 c! @
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    6 c. b6 M/ H$ o* g- d1 I
  1829. RTS7 O' m- f/ C: J5 k: r4 w

  1830. 1 E% G6 S& P) G, {
  1831. ;==================================================
    5 Y+ Y) @, {5 V3 n' T+ k
  1832. Sound_Play_Proc;音乐播放处理% s! W4 N; `( b$ E8 r( n
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址1 Y6 v$ o" f$ J
  1834. JSR Sound_Play             ;音乐播放
    ( ]6 [; U0 P; T8 S, D7 A/ b
  1835. RTS
    - Q! n  A- q8 D9 m
  1836. ( d! @/ E7 P& _+ Q
  1837. ;==================================================
    ! e+ g) G1 ^0 M' {
  1838. Sound_Reset_Proc;音乐重置处理
    ) m& u1 s* s9 ?/ k3 _& K, r( ]2 q% E
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ; |6 _5 |- F7 i7 [6 S* I
  1840. LDA <JSR_Addr_L- s9 A4 ]. C9 j5 J$ `  t* s
  1841. ORA <JSR_Addr_H# `! `& H+ I/ v* b' i, X
  1842. BEQ Sound_Reset_Proc_Default
    0 ]6 u8 T4 I$ _1 b1 o
  1843. JSR Sound_Reset            ;执行音乐重置
    6 Q# d1 O' p3 o
  1844. JMP Sound_Reset_Proc_Init_Sound# ~% n) @7 c" m# _0 @
  1845. . @2 I2 y; x* e6 [
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    + I8 U* \6 S0 H1 R- e7 H

  1847. & o6 N6 a' }3 h4 \
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断6 m3 _$ \8 W. U0 Y
  1849. LDA #$00. y- s$ I+ P3 k* B' `
  1850. STA PPU_CTRL
    # ?4 K8 h* k2 I  j- H; h
  1851. ' F. E5 ~2 i- A: \% _
  1852. JSR Sound_Data_Clear  C* M) L9 ~! }3 q- f! }( W

  1853. 4 w7 e5 K3 N6 m
  1854. Sound_Reset_Proc_Default_Wait
    2 ^1 o$ a$ J4 @" e/ Y
  1855. LDA PPU_STATUS
    / \" G" m" T* r9 ]7 h% `# h3 J. z
  1856. BPL Sound_Reset_Proc_Default_Wait! O! X. ~6 v; s
  1857. - P, W- Y( n  k
  1858. LDA #$00
    0 B! N+ c4 J/ R3 s( d
  1859. STA PPU_ADDRESS
    , U% O6 B/ @5 \$ }9 T% S
  1860. STA PPU_ADDRESS
    1 b; i$ u. g8 [/ C7 p: A+ ]
  1861. STA PPU_SCROLL5 B! u0 h( L! t
  1862. STA PPU_SCROLL
    1 L! H8 c, o  u/ M
  1863. . m: O7 V( r; F! h3 O/ J# b  B
  1864. ;恢复PPU控制# B  a6 L+ _5 k/ y
  1865. LDA Screen_Ctrl6 t2 |! a4 k  f  e7 `) m  M
  1866. STA PPU_CTRL& O6 I) t9 {* _0 Z

  1867. 3 m# |* L% ^# o2 m
  1868. Sound_Reset_Proc_Init_Sound
    / G1 c9 Y  U7 Z2 K; O& @, @5 I7 @
  1869. LDA <Music_Stop_State
    ' Y2 b$ b' A0 y1 U: ?$ l
  1870. BNE Sound_Reset_Proc_End
    : n3 J5 Z, s% o4 f6 _  P
  1871. LDX <Music_Item_Cur
    " V, h  m$ f2 w
  1872. LDA <Music_Cur,X6 L: W( t. A% Z0 M3 Z5 X$ q. v
  1873. JSR Sound_Init_Proc0 Z8 Q% D7 q# r9 L, ?& i) `
  1874. Sound_Reset_Proc_End* d5 T  H  E' A, i9 p" Y
  1875. RTS3 W4 B. ~! u2 _& p, k5 b2 g
  1876. % M+ ]* k' s, d! a! ]
  1877. ;==================================================0 J. I- E/ }$ C, K  w8 i
  1878. Clear_Item_Text;清除页项目
    ' A3 W; y. F' b8 I
  1879. LDX PPU_Cur
    ( c0 p" T. e% ?) V. e7 A
  1880. LDA #PPU_MODE_CNT_CLEAR
    " u3 s4 a4 B$ u  ?6 Z
  1881. STA PPU_Addr,X7 o# f' Y' j( v
  1882. INX
    . R& }- E2 P- R- y# }7 B
  1883. 5 D. d; a( L7 F. _' [0 i
  1884. LDA <Page_Last, t( }0 a% @8 ]3 u' }2 H# o- e
  1885. SEC' T: ~- s: f% j  Q
  1886. SBC <Page_Last_Index
    ' T) Z" G: j, Y$ q$ j2 c
  1887. ASL A0 F7 J! m% V/ B* Y6 S, x

  1888. & `7 e" b! c# }  N3 \6 i
  1889. TAY; e9 A) I  ?5 j6 o3 `
  1890. LDA Item_Pos_Data,Y
    ( F. E7 U7 z; o9 g8 q# \$ a4 U
  1891. PHA
    5 h6 t9 E7 z* P  e& C2 U
  1892. INY
    $ P3 Z& N* _  o9 w/ A& U
  1893. LDA Item_Pos_Data,Y
      \5 F' l' K: a1 n
  1894. STA PPU_Addr,X
    + c* G+ [! a$ ?* o2 E5 J
  1895. INX
    " ]2 C% h+ L; T8 Q( F) V
  1896. PLA) z" W; y0 I8 t2 @9 |# d! T
  1897. STA PPU_Addr,X! r4 ?0 P/ {0 J- Q
  1898. INX
    ) e, i0 O/ U5 j/ d0 c9 M
  1899. 7 P9 \* K! ]3 d5 p! n
  1900. LDA <Page_Last9 f; V2 ?2 k+ G/ Y! X
  1901. ASL A
    . v$ n  ]/ j; u' g1 T
  1902. TAY
    # L9 K; G- b! L# m; d
  1903. LDA Music_Collection_Name,Y
    , z; x4 `9 g8 ^/ i. K0 v8 H
  1904. STA <Data_L
    3 z% D9 R( Y8 \+ ^$ ?! ]; d
  1905. INY8 a; ~' `. L& ]
  1906. LDA Music_Collection_Name,Y2 ^7 B+ G: l- D% C9 H, s1 Y0 O" ?
  1907. STA <Data_H5 S0 H0 d2 b% |5 d% g, a% f

  1908. 6 p, J8 t# G* C2 B( S
  1909. LDY #$006 ]# J# u' G$ a) e/ n9 {3 H
  1910. LDA [Data_L],Y( o2 |: m5 ?" L( Y; o
  1911. STA PPU_Addr,X
    , o1 ]$ w3 m; C2 e6 v7 j  w
  1912. INX
    ( }4 R& j6 P9 v8 J& S, t7 g
  1913. Clear_Item_Text_End
    , ]' f* q9 W- y2 ~. q  N% a
  1914. STX PPU_Cur
    0 r* ^9 {% U1 l8 c0 @. p9 L6 u
  1915. RTS
    & z0 x; O8 G" i) {# _. ?2 X. K
  1916. , w: m1 u, a: R+ R( i, k
  1917. ;==================================================
    8 r! Z; x9 L+ D7 [, @
  1918. Show_Item_Text;显示页项目3 O8 q3 [/ C+ s3 a9 ]4 n( k
  1919. LDX PPU_Cur+ U8 j8 C& i3 }+ c4 l8 ^; Y
  1920. LDA #PPU_MODE_CNT_LINE6 A* P) ^: @; j% v/ m# O1 v
  1921. STA PPU_Addr,X
    8 w" K) O7 ^$ D0 ]- w' M
  1922. INX
    7 v. i% r$ {" [" A
  1923. LDA Page_Cur, T3 h1 Q) N- X& y/ d: v6 L
  1924. SEC/ h* A" y/ Z8 a. _; _  P5 t8 N
  1925. SBC <Page_Cur_Index- D& F8 o- B/ h+ X# c
  1926. ASL A
    / o$ F6 j6 M5 u9 k
  1927. TAY
    $ f6 Q6 y' Q7 v+ d" K
  1928. LDA Item_Pos_Data,Y
    * L9 h) p! p& U% r4 G2 q( j$ ^' v( p
  1929. PHA
    , ~  i+ v" C; I3 ]" G
  1930. INY
    $ ]$ k8 Z* o4 ^$ v
  1931. LDA Item_Pos_Data,Y/ a6 B5 d2 R: m  u
  1932. STA PPU_Addr,X" ^/ `% q7 ?/ ?% Q
  1933. INX
    + U/ `! g7 E- H- {* K
  1934. PLA8 ?: E; S% s) q% x9 w" c% }3 n
  1935. STA PPU_Addr,X
    2 [7 q) |7 V0 ~
  1936. INX+ G. T# B9 l. z7 [
  1937. 0 k# J9 x8 Q5 K* b' X9 S- `  j
  1938. LDA Page_Cur
    ( p  d- ]5 \4 Y& `
  1939. ASL A- W# k( K" g% e( a% x8 C
  1940. TAY! Y& i+ e1 I" t/ F9 ]
  1941. LDA Music_Collection_Name,Y/ N, s+ V) ]8 u9 N( V- u" O5 }
  1942. STA <Data_L
    4 g7 `. k# O! J: L7 U8 o
  1943. INY
    ! F0 f, [2 \8 m0 {7 w. i" l2 h
  1944. LDA Music_Collection_Name,Y0 ~  S! g6 X4 N
  1945. STA <Data_H
    5 F8 u) D# X8 _1 X4 d4 Q0 j4 r6 l$ [7 R
  1946. % t8 Q" W" H1 u! ?9 P9 q
  1947. LDY #$00
      |4 @* D( x6 w1 i7 h
  1948. LDA [Data_L],Y
    2 N* @3 R) H! W7 b" R* k
  1949. STA PPU_Addr,X
    1 W: ~, U  Q$ P2 ^* u2 Y
  1950. STA Data_Cnt; Q7 b. t' [3 C
  1951. INX) a9 E! J. a2 m  G4 P: N5 J

  1952. ' z3 |5 U8 }7 f
  1953. INY
    + h6 a, {2 X6 u( `  }' q, p& `
  1954. Show_Item_Text_Write& _" M  [0 ^$ m  I
  1955. LDA [Data_L],Y  E+ A& j" }9 \8 a8 u
  1956. STA PPU_Addr,X$ ?/ y& j; }" h$ q" V8 q: P
  1957. INY( U4 b1 X2 T7 S, ?  w
  1958. INX( H4 @, E7 x, e: y9 Z1 S% l
  1959. DEC Data_Cnt! P* w5 r8 u1 ]* {4 u; T
  1960. BNE Show_Item_Text_Write8 o3 J; ~0 a8 a1 R4 p; _

  1961. ( e, U6 s& X  {8 f* w0 y5 u( m
  1962. Show_Item_Text_End8 Q! p# A8 y/ y3 a
  1963. STX PPU_Cur" `! f6 @4 T* }% G. l8 W0 f) e
  1964. RTS
    0 S9 C% q% y, Q8 \  S' q6 h

  1965. . F& j- f8 s" ~7 W& N* u
  1966. ;==================================================2 R3 u- A( \9 o8 E/ u( g
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量) p+ a* `  K" ]$ ~. ~  ^
  1968. STA <Data_Buf
    # U3 ^8 o; ^1 ^. @  B6 D6 A+ Z
  1969. LDA #$00
      o  F" S7 C5 T/ ^7 m- v# l  u
  1970. Get_Page_Index_Calc7 [8 l6 h/ F& @  n" e) O5 ]/ a/ t
  1971. CLC" k  n5 e$ j& n
  1972. ADC #PAGE_SIZE
    $ H4 S% O& r' T2 Z$ q& d* W9 }
  1973. CMP <Data_Buf
      L% B* i* f$ j) H4 ~  ]+ ^. E
  1974. BCC Get_Page_Index_Calc+ q8 J6 T* Q! E5 _( F& _) Q
  1975. BEQ Get_Page_Index_Calc_End% m, D" Z+ K5 O
  1976. SEC- D+ ^  l0 X( {0 ~3 E$ J
  1977. SBC #PAGE_SIZE
    & G! E  |' t! p' o0 B
  1978. Get_Page_Index_Calc_End
    ( P$ o8 l2 e& g2 r# B% r6 p3 J! C
  1979. STA <Data_Buf% S1 V" F# R% i' f
  1980. Get_Page_Index_Cnt0 P# g7 n- e/ U
  1981. LDA #PAGE_SIZE. p8 s# u* U; `% T! h
  1982. STA Data_Cnt* h* ?: D5 T7 R0 w8 U8 k
  1983. / V0 v/ u; L) a1 c2 a4 {# [5 y
  1984. LDA <Data_Buf- m- s! L7 R0 N. E. H
  1985. CLC3 ]( K  F8 I- i, t5 K+ Z" P
  1986. ADC #PAGE_SIZE
    6 M" d6 c7 u' D3 `, K9 j* y
  1987. CMP #ITEM_MAX_SIZE
    4 n- h/ k4 q& x" Y6 @9 L8 C6 z
  1988. BCC Get_Page_Index_Cnt_End; x  A' m& L/ Q: D: G

  1989. ) x. `' p3 _( O0 N- L
  1990. LDA #ITEM_MAX_SIZE
    , t) Z7 V/ ^, n  H3 f. ~+ p- B  v
  1991. SEC6 }1 P6 p. K% ?  e3 I2 i, `
  1992. SBC <Data_Buf
    - d& a2 L/ G- z
  1993. STA <Data_Cnt
    , H: _/ J/ ?; g4 l. V% v0 [
  1994. ' y2 Q" [; f. H( L4 i" g! \. w" I
  1995. Get_Page_Index_Cnt_End( R$ C& n6 _7 z) t; y$ j
  1996. RTS0 H( @  p# y/ Z& z: Y% A

  1997. 4 e& V) c7 y: f. W$ l) o
  1998. ;==================================================/ ]1 R, \% ]7 A; H' a. R* {$ W3 {, x
  1999. Get_Last_Page_Start_Index2 z! N# c, p$ v% l8 W
  2000. LDA <Music_Item_Last
    # w- Q$ _) @. t2 R) [( Z
  2001. JSR Get_Page_Start_Index
    $ K& R- ?0 V& k8 w" u; t  P
  2002. LDA Data_Buf  }  U* N0 G: ?9 n: i
  2003. STA Page_Last
    # |: f5 `. E; ~2 q
  2004. STA Page_Last_Index9 |# s; @7 q7 G% ^, `
  2005. LDA Data_Cnt, p3 q. q+ ?4 @+ l
  2006. STA Page_Last_Cnt
    " T: u1 R& C( \) J- `
  2007. RTS) l+ R- ?' }' u) O- B: d

  2008. 2 g% B, [# T( B9 a; l
  2009. ;==================================================* r1 V( V6 V4 K/ t
  2010. Get_Cur_Page_Start_Index3 D) H- U  `: N
  2011. LDA <Music_Item_Cur6 `& e' U; G+ ~4 W% Y
  2012. JSR Get_Page_Start_Index
    . e) P  n5 c6 W- X  O" {3 ^% L
  2013. LDA Data_Buf/ S% J/ k! Z' B0 {
  2014. STA Page_Cur
    . m2 P4 x% m+ }
  2015. STA Page_Cur_Index. a- \, @4 U$ L- z
  2016. LDA Data_Cnt
    # X. @6 d+ k+ ]; _# \& u7 W5 M
  2017. STA Page_Cur_Cnt
    + K8 k# g. P: I# a6 D5 j! d0 [
  2018. RTS
    / }6 j$ ?4 r' h$ `

  2019. ( d- A% R& R0 U1 d
  2020. ;==================================================
    2 r* r# l) X6 q/ N
  2021. Show_Page_Text;显示页文本3 P% r5 c- N3 u
  2022. LDA <Text_Disable_Flag: W: z, K5 k, n
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM* ^# K/ p# G) k* ]0 H
  2024. STA <Text_Disable_Flag5 A  s! v% K# Z+ X! r

  2025. , j$ m7 F: a* C2 v. A
  2026. JSR Get_Last_Page_Start_Index
    * R  I6 n7 n- Q  @3 Q# ]0 i/ ?9 w* @
  2027. JSR Get_Cur_Page_Start_Index
    - f4 T! R0 e8 D( ]2 d- \
  2028. ( e0 T& X+ ^) s0 W' P6 K& }
  2029. Show_Page_Text_Set7 I8 h0 Q! @. D/ f9 A" F
  2030. 6 h: B2 Y: y- W, U! Q, E* `1 |
  2031. Clear_Page_Last_Item;清理上一页
    + _6 a$ r! L0 p" x3 r9 d
  2032. LDA Page_Last_Cnt1 z3 L7 @% R6 F' b8 w6 {( |$ r) v
  2033. BEQ Clear_Page_Last_Item_End( a1 C  ~; J6 H4 q1 p* d. Z
  2034. JSR Clear_Item_Text
    + i3 ?( p( E2 h" k0 L
  2035. INC Page_Last
    ! V1 w0 i8 i' _' S0 O, q2 @
  2036. DEC Page_Last_Cnt
    , D7 `- O/ J3 ]& C
  2037. Clear_Page_Last_Item_End
    / Y% s- `6 g2 f1 R* Z% ]5 T. y8 W

  2038. 3 W) ], M: N6 w
  2039. Show_Page_Cur_Item;显示当前页
      q9 N/ ~" q  V3 e
  2040. LDA Page_Cur_Cnt
    * J' T- I) ?0 ^( E
  2041. BEQ Show_Page_Cur_Item_End
    - b; l' N$ m$ c5 E; U$ s
  2042. JSR Show_Item_Text0 f4 k# x+ }; V) j1 P) R: D
  2043. INC Page_Cur
    7 H% g8 Z  w: O- R
  2044. DEC Page_Cur_Cnt# T$ P) @: U, b  O" x
  2045. Show_Page_Cur_Item_End
    ' O" E% A" r' o/ ?; G# P

  2046. & w$ \- A: G  j9 }* v$ V% Y
  2047. INC <Time_Wait_Cnt8 D9 e2 \* u# L& a2 C
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作% `9 J$ l$ g( ~
  2049. LDA <Time_Wait_Cnt
    * e% ?. D( u7 F) @2 e& q
  2050. BNE Show_Page_Text_Set_Wait* g" H' _7 I; P5 c: L

  2051. 9 C! C& \( s/ j+ P* q. o* ^
  2052. LDA Page_Last_Cnt  @- U6 X- w" o, f) t2 }4 m
  2053. ORA Page_Cur_Cnt5 T/ P. q% L+ i5 i. I
  2054. BNE Show_Page_Text_Set
    3 w9 T1 o  ]& O6 b3 R6 U' {7 c
  2055. LDA <Text_Disable_Flag& |* m5 s) h8 O
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    6 D; N9 K0 r6 G3 R+ M+ q  l% c0 C
  2057. STA <Text_Disable_Flag
      I' |+ F" I3 O' D# s- V
  2058. RTS
    . V9 C0 h3 {) |

  2059. 3 |  C+ ]0 p+ z- w
  2060. ;==================================================1 F: |5 [  g6 c5 Q9 _0 }3 h
  2061. Last_Item;上一项
    % F2 K- u+ h4 [8 f9 V
  2062. JSR Clear_Last_Track_Name$ K5 B6 c5 X* P# _  F
  2063. JSR Disable_Text_Draw
    3 L# f- A. P( K( L' {( M

  2064. - x% i8 u$ E  i* w5 W' V* X) N0 P
  2065. LDA <Music_Item_Cur
    9 ]' b& l6 c. H) b1 n+ w  [& L
  2066. STA <Music_Item_Last
    % _) c6 x( N3 t
  2067. " {3 M: Y: F& G. a4 P; C
  2068. JSR Get_Last_Page_Start_Index
    8 }7 B; e$ |; Q0 n' j' d# y

  2069. , C0 P: `/ w6 \) q# i
  2070. LDA #$00
    ( G$ ?' ^2 D- N* ?: K" s; H7 d
  2071. STA Data_Buf
    8 |+ d4 ~! B( H5 N( l3 A7 W

  2072. 7 F1 u, [- w; s- Z6 g4 u8 W8 p
  2073. LDA <Page_Last  J3 _4 f/ s1 Z5 Y/ c/ o
  2074. CMP <Music_Item_Cur( M9 Q! G! q9 c& F! i2 F% ]6 u
  2075. BNE Last_Item_Begin
    ( A$ l, [, L4 u) K2 e
  2076. ( E# V# O4 l9 h9 M
  2077. LDA #$01; M3 M) ]4 s" p# N
  2078. STA Data_Buf
    8 `  m3 F; X3 [$ @$ b) v" n
  2079. Last_Item_Begin& Z1 J" L& o( X1 j- O
  2080. LDA <Music_Item_Cur
    7 q2 ]1 l; B2 z, [
  2081. BNE Last_Item_Set
    3 I% y1 p( Z: L9 |* d& O8 a
  2082. LDA #ITEM_MAX_INDEX + 13 [8 z+ }# @7 [0 D% y# p
  2083. STA <Music_Item_Cur
    6 g$ y, O3 J* A
  2084. ; h3 I, ~- k8 K% R' J
  2085. Last_Item_Set
    ; L  h0 F6 J. c3 d) C- K4 F" s
  2086. DEC <Music_Item_Cur
    # ~. f( k" E5 C3 K1 [9 L7 I/ y: f
  2087. LDA <Music_Item_Cur$ E" q$ w5 T4 {% z' Y; X& [, V
  2088. JSR Reset_Current_Music3 @) w! g$ h) @

  2089. . B9 A# A; l2 e1 A6 W0 y4 d& ?9 a# j
  2090. Last_Item_Play# D& l! V- @1 }+ }- j5 i
  2091. LDA Data_Buf
    ! E5 z1 x) k9 G& m# C
  2092. BEQ Last_Item_End
    % A7 ?0 ?1 c- `! T8 H/ n
  2093. JSR Show_Page_Text. a2 D3 B1 u* C( Y" K6 r4 F
  2094. Last_Item_End/ p+ `, O3 O/ G
  2095. RTS
    # ?" a/ b6 [" O5 ]; p1 m. Z) A

  2096. * \3 H# [  X1 J
  2097. ;==================================================, R6 h5 e; h1 r8 s! H) x
  2098. Next_Item;下一项0 f0 ]) W! Z9 v% \0 W
  2099. JSR Clear_Last_Track_Name
    3 O) F% [+ W2 L" \. Y  _2 z! @
  2100. JSR Disable_Text_Draw0 G$ s; n, V! ~5 C: @
  2101. 4 r) R9 k+ Z( _7 y. b* E/ L
  2102. LDA <Music_Item_Cur
    % y6 k* c' v$ ]0 r: n/ E
  2103. STA <Music_Item_Last
    & F! l/ @8 X. @6 f% D
  2104. ) T3 P: H% T+ `* `% l2 r
  2105. JSR Get_Last_Page_Start_Index- L8 L* H: J/ ]0 D; U& X+ {+ J, ?
  2106. / |- N+ W) e. H- ~$ n
  2107. LDA #$00
    ( Z% ?/ \) K$ a6 h& ]
  2108. STA Data_Buf
    9 B2 n3 M' X: r" q$ `: r

  2109. ) y" z0 R1 p$ Y8 X% z0 {* S
  2110. LDA <Page_Last
    - V, `. T9 }2 n7 j( }' F
  2111. CLC
    , d" b2 S& J$ w* n  C# k2 ?
  2112. ADC <Page_Last_Cnt4 B$ J/ K; }; r) {+ e% H1 @5 t
  2113. SEC
      [# R% W6 V1 o/ f$ W# {( U
  2114. SBC #$01( X* g8 k7 h: M% O& I8 P
  2115. CMP <Music_Item_Cur
    # L3 f* w: k& v# X! ]
  2116. BNE Next_Item_Begin
    7 d! h5 r2 M: p! C8 k5 a

  2117. / }# s2 p) a/ A) H% ~
  2118. LDA #$01
    5 h. f% ^: u1 D0 c5 \
  2119. STA Data_Buf  [6 d/ R6 m6 W
  2120. Next_Item_Begin
    8 u/ }# A* x+ k9 ]  }
  2121. LDA <Music_Item_Cur
    / K( N& K' ^) b% [' ?
  2122. CMP #ITEM_MAX_INDEX
    + n# `3 d6 e) |* v. S
  2123. BCC Next_Item_Set0 K9 w" S9 H: K% J$ z/ [% N( c7 j9 K+ v
  2124. LDA #$FF
    ! f. m! ]7 i+ a, V6 d
  2125. STA <Music_Item_Cur; {5 e; R1 q9 W6 D. T# Z( R
  2126. Next_Item_Set
    4 n8 G% p8 X0 v! ]0 l8 I) h
  2127. INC <Music_Item_Cur
    : O, A* H+ X3 ]
  2128. LDA <Music_Item_Cur
    # J2 |6 E2 R; {9 B! x" _- z/ j6 U- a
  2129. LDA <Music_Item_Cur
    / I! I( p; ^, q2 ?2 |- q+ x# L" ^
  2130. JSR Reset_Current_Music
    2 @3 I' D' Q' R2 n, Q% R+ T* ?
  2131. Next_Item_Play( {: @9 \8 s' Y2 V2 r4 m/ E
  2132. LDA Data_Buf# \& ~+ K9 q5 L5 ]( X6 P* b+ B( d
  2133. BEQ Next_Item_End3 d8 r9 G& _3 y9 ~+ i& _5 h5 I2 O3 T7 Y
  2134. JSR Show_Page_Text
    3 e1 N9 y  F$ u3 M4 [
  2135. Next_Item_End
    - p& L) P3 p0 F# j  t+ [
  2136. RTS
    9 }& R- ]6 C  N& E5 O6 z

  2137. , M% \6 V8 x4 [0 g
  2138. ;==================================================
      m5 B6 q# X: f" J' v0 F
  2139. Last_Page;上一页
    ( _0 b! d0 B5 t' k! O1 C7 H3 l" B
  2140. RTS; z3 J9 i6 M9 _; Z1 y" y
  2141. 3 [0 F1 @6 x7 {  o' n6 H6 U2 d
  2142. ;==================================================
    $ r2 ?3 \" [, L! I3 g; i" G
  2143. Next_Page;下一页
    " z& S: p, ]# `3 N/ H. w9 r
  2144. LDA #PAGE_MAX_INDEX
    ; n5 E) M) n) x, U
  2145. CMP #$01
    ' p5 h. a7 f# Q7 c  j
  2146. BEQ Next_Page_End
    ' @% {; K; P% C$ i& Q
  2147. 7 x) Q3 c0 y& z2 G% w
  2148. LDA <Music_Item_Cur
    + L) ]7 h1 {3 G, q9 w; Z
  2149. STA <Music_Item_Last
    % i9 }- g3 U  D+ A

  2150. 4 m. B6 I- O2 ?( @. V$ Q. O
  2151. JSR Get_Last_Page_Start_Index
    ( o: u& z$ E2 s* x% ^- S! {
  2152. 8 e' r' \( B: D1 Z, y
  2153. LDA <Page_Last_Index, o; D( u8 I: H" Z
  2154. CMP #PAGE_MAX_INDEX" t! G# i! x3 ]' Y6 l
  2155. BCS Next_Page_In_End_Page
    0 F- u, S7 t/ }: M
  2156. 9 m7 g2 \- i9 e6 u4 z
  2157. Next_Page_Not_End_Page;不是在最后一页
    6 C% a" l/ E) y( Z/ T4 d: i
  2158. LDA <Music_Item_Cur
    7 @  v& D4 ]. w" `8 S
  2159. CLC3 t$ V" ~2 J" O  i) J. D
  2160. ADC #PAGE_SIZE7 t# {0 t' j( x0 o' q$ Y3 N
  2161. CMP #ITEM_MAX_SIZE
    % f4 j  U* P, Q3 |' u" Q% D
  2162. BCC Next_Page_Not_End_Page_Less
    ( N" e/ J5 _2 O/ {0 v- Z0 k
  2163. LDA <Music_Item_Cur
    4 A5 N$ H/ h' D: [) c' Q6 j
  2164. SEC# k9 y: G  V; j# l; O, v
  2165. SBC <Page_Last_Index% {3 W5 w. o' }/ n0 W- U9 W: G
  2166. CLC
    4 T1 A2 O! Q  b$ s1 L3 b
  2167. ADC #PAGE_MAX_INDEX
    ( x" \# O; b1 Y8 W( C- X
  2168. CMP #ITEM_MAX_SIZE! C9 L, R  P# i  l* ]& B7 v1 i
  2169. BCC Next_Page_Not_End_Page_Less4 F0 N) U# \  t. {- K/ `
  2170. LDA #ITEM_MAX_INDEX
    4 z. |* \7 a) R  V% M
  2171. Next_Page_Not_End_Page_Less, V, W& u. M$ N
  2172. STA <Music_Item_Cur& [4 ~8 }7 U3 Y# p; S
  2173. JMP Next_Page_Reset
    ) t+ Q% I3 \% d! R  |
  2174. + F( ?3 B8 V( R5 q1 [4 k5 _9 @
  2175. Next_Page_In_End_Page;在最后一页
    & z6 ?+ H3 |( S2 u$ ^8 J
  2176. LDA <Music_Item_Cur2 O* ^" U; n0 o) h1 o( Y$ i( e7 b
  2177. SEC& |/ D# w+ J# [. N1 L& [
  2178. SBC <Page_Last_Index
    ; w9 S7 x* Y0 u  M
  2179. STA <Music_Item_Cur
    . V9 f) K1 X$ P" Z
  2180. ' V8 K: T  I, ~
  2181. Next_Page_Reset
    0 Z9 o9 |5 l5 q' G6 C
  2182. LDA <Music_Item_Cur
    " n7 r9 j0 I2 G  i& _; V
  2183. JSR Reset_Current_Music
    , s" z6 [6 T0 q; n( W( ?
  2184. JSR Show_Page_Text
    % s: U2 x/ x+ t4 O0 a" A5 k
  2185. Next_Page_End& `  ]9 ^/ O+ Q% ?+ ]! B7 Z( C6 j
  2186. RTS0 A" w! }3 N# X6 \

  2187. 4 `1 P. `4 v2 M0 K( Y! G
  2188. ;==================================================7 M& H) M4 x# a  w
  2189. Disable_Text_Draw;禁用音乐条刷新+ D: D. g7 y& t
  2190. LDA <Text_Disable_Flag
    2 c- t' X( M- N$ d% ^5 U; j
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME4 P4 `% O( D6 l3 j7 z
  2192. STA <Text_Disable_Flag* J1 M* i. [( ]
  2193. RTS) y& F1 y" Q$ [9 w; j

  2194. , j4 [% w2 ^4 ?+ M7 t6 k# V
  2195. ;==================================================
    1 S- c$ l6 V% O8 }+ {
  2196. Clear_Last_Track_Name;清除上次曲目名8 G/ I& A8 S: P* U$ \4 n
  2197. LDX <Music_Item_Cur
    5 Q0 p$ h! M+ M3 R! B2 |6 Z
  2198. LDA <Music_Cur,X# \) z" t4 }1 y( x/ y
  2199. .IF Track_Name_Pos
    4 W- [" g' I2 L6 k3 |7 X* @
  2200. JSR Clear_Track_Info0 l- X5 }# z0 ~
  2201. .ENDIF
    ! I; \$ u  p( K& L
  2202. RTS5 s& |7 J7 H2 |! v" n
  2203. * k, ?- Q) |7 Q; D/ T$ Q( t
  2204. ;==================================================
    8 h  B$ s* U. q" d; P& c, i
  2205. Reset_Current_Music;重设当前曲目
    " ]/ G: A$ p, G  c$ Y6 v' Z
  2206. . @" B7 N8 [4 `$ @
  2207. ;写入当前总曲目/ O0 a7 R' b! A2 v" }& h' [4 d
  2208. JSR Set_Sound_Total4 u9 A5 y! o! p9 U. ~+ w, z/ p& r
  2209. LDX <Music_Item_Cur0 e% c4 P3 v/ I" B/ a4 s7 Y" H

  2210. / X! L: p$ x) W0 p' @; H
  2211. LDA #$00
    - @/ u. d4 O1 Y
  2212. STA <Music_Last
    / Y. i4 J0 O& h3 T  c6 p) s, G3 k
  2213. / ~) w* @! _/ v: q
  2214. JSR Sound_Reset_Proc
    - f3 C7 ^! ~! U3 y+ \+ X
  2215. JSR Music_Show
    % h# F/ {& u& [$ p  V" F, e; ^
  2216. RTS
    2 W  ~5 W, {0 a& o
  2217. ' f) Z' j$ [1 G! k3 {* Y
  2218. ;==================================================
    1 k% ^3 }: q: C, I
  2219. Music_Song_Stop;音乐停止' E( Y* d# @4 Q% Q/ o
  2220. LDA #$01# R) I5 v6 `" U$ j" k
  2221. STA <Music_Stop_State
    - d. u. v  U2 V) ]
  2222. JSR Music_Bar_ReSet
    9 w9 F( G8 W" m& n, x
  2223. JSR Time_ReSet9 |5 G$ b, I3 k- H+ [( u8 i$ O
  2224. JSR Sound_Data_Clear
    , o9 y5 q7 Y! q/ p# L. h- r
  2225. JSR Music_State_Show
    5 h8 }0 ^' H6 v5 ~, u9 i
  2226. RTS
    5 i& ~) |$ {0 ?: I' a6 d

  2227. ( D. c7 [' d. u
  2228. ;==================================================
    ; r5 W! _. N; ^) w
  2229. Music_Song_Play;音乐播放8 P% g' Q2 X3 ~: U0 j4 i' C; i
  2230. LDA #$001 x' f# s- I. j2 T, Q9 L
  2231. STA <Music_Stop_State$ _  x% Y$ T" `! C/ _
  2232. LDX <Music_Item_Cur
    0 z. \+ h3 e- z/ Q, B
  2233. LDA <Music_Cur,X
    : |2 b- F9 M0 N" E9 X$ K) @/ p
  2234. JSR Sound_Init_Proc4 h% n+ ]! ~( [. C) r* i. X
  2235. RTS7 U! T! a, _- \2 w& A. Q2 W% g
  2236. 5 t2 L0 C" K5 {- o! o4 ]+ s
  2237. ;==================================================
    . t8 i3 W% E4 d
  2238. Music_Song_Last_10;上10曲
    , d! p6 ]' T/ y: G: Q
  2239. JSR Clear_Last_Track_Name
    9 {& w4 g/ y3 S5 \
  2240. JSR Disable_Text_Draw) q. u9 R6 F( P9 M* e& Q  D
  2241. LDX <Music_Item_Cur8 `3 b9 Z8 K9 ?$ j: j! Q
  2242. JSR Set_Sound_Total
    * q6 W+ Q+ [& \
  2243. LDA <Music_Cur,X
    & S. G# o% ~) P
  2244. SEC5 Q7 w3 F, K5 x2 b& A- n1 e& s
  2245. SBC #10  y: d: M/ g  c! L( g' T3 `) c& l
  2246. BCS Music_Song_Last_10_Set
    % u. R$ \& n8 j% R; e2 s
  2247. LDA #$001 t1 j/ f; |. |# H4 S
  2248. Music_Song_Last_10_Set
    9 v6 C, ?! {& V( X( C
  2249. STA <Music_Cur,X2 W6 f7 l0 T) x; N$ n
  2250. JSR Sound_Reset_Proc4 d# H, z2 M  z  x8 n
  2251. JSR Music_Show
    0 R3 w( s9 L% i$ [" T2 \
  2252. Music_Song_Last_10_End
    / w  Y' C5 J& D+ G' B& w# S
  2253. RTS
    + L" M. x/ G4 J) e

  2254. 0 w4 N0 r9 W2 y8 C: @1 y
  2255. ;==================================================8 P! z" H, `) e  ]1 J4 d. D5 Q
  2256. Music_Song_Next_10;下10曲5 ^# C! i; r, R( j4 o2 Q
  2257. JSR Clear_Last_Track_Name
    : f, s6 {) I. W" D1 K' N+ G
  2258. JSR Disable_Text_Draw; a; l/ r/ A+ Q2 @
  2259. LDX <Music_Item_Cur: g3 ]& t, _8 h: O
  2260. JSR Set_Sound_Total
    5 G+ N% ]& H" i- a1 j* c  |
  2261. LDA <Music_Cur,X
    / p$ x: C: t2 W6 I& a2 s/ s
  2262. CLC
    : k# S: J  S- g( H
  2263. ADC #10
    ! R) D  q" D4 R) \9 z+ x8 W
  2264. CMP Music_Total
    . [* v2 G' p/ D1 U& h% d! L6 K
  2265. BCC Music_Song_Next_10_Set
    8 B# z9 n* F" Q5 `
  2266. LDA Music_Total
    / l/ }# e% G7 Z. L% A# V- t" m
  2267. Music_Song_Next_10_Set, }4 V2 x  ?2 w- M6 n
  2268. STA <Music_Cur,X
    . s( M+ T& s8 V! x; H' u
  2269. JSR Sound_Reset_Proc
    5 h' u# S+ `( ^
  2270. JSR Music_Show
    % v3 G+ S' |2 q$ V6 f* F3 S- h; S
  2271. Music_Song_Next_10_End, P! ], N$ _  ^& t" T
  2272. RTS# k5 G; b7 u* w  t
  2273. 5 O/ ^+ h* u- @2 }9 c
  2274. ;==================================================. j( M$ A7 @6 P+ e* O# I
  2275. Music_Song_Last;上一曲( o, [* a: f" D3 R+ a- v% U
  2276. JSR Clear_Last_Track_Name: c( W( L& }8 a9 P" Y# b- P: Y
  2277. JSR Disable_Text_Draw5 W* G# d; o' f. l$ M
  2278. LDX <Music_Item_Cur6 K. C- n) ~6 o7 z3 o
  2279. JSR Set_Sound_Total
    , }' `' p7 N! D4 W# F
  2280. LDA <Music_Cur,X
    $ e$ t# |9 W7 V. w/ X
  2281. BEQ Music_Song_Last_Set
    6 ]- X/ ?  ^" t
  2282. DEC <Music_Cur,X: E+ x4 u' O, H" M  I
  2283. Music_Song_Last_Set  e! k& v2 H# N/ e
  2284. JSR Sound_Reset_Proc* k! s" s7 w/ v! W! u# Q" z6 s0 i1 A
  2285. JSR Music_Show
    1 Z6 [* B" c" Y$ G, h0 a" C
  2286. Music_Song_Last_End0 b: Q: r; m) y3 `$ r* q
  2287. RTS
    * x# S& `, P* [2 f

  2288. " u4 |  S9 v. B# {
  2289. ;==================================================
      j1 M; K3 @& e
  2290. Music_Song_Next;下一曲6 ^6 _0 i% |- X& \6 [6 j! w
  2291. JSR Clear_Last_Track_Name
    3 ?+ [4 q6 ]& V) D9 k
  2292. JSR Disable_Text_Draw. Y* G. @: v3 A8 O. [4 [
  2293. LDX <Music_Item_Cur
    , g# z: m: |+ Q3 V
  2294. JSR Set_Sound_Total
    " S9 v* q$ q! z) {! `
  2295. LDA <Music_Cur,X
    ' C; J7 g# V8 H# O
  2296. CMP Music_Total( p$ p% E( P! u' L/ R
  2297. BCS Music_Song_Next_Set
    " G7 i4 f/ `3 B+ O8 R' j5 h# y
  2298. INC <Music_Cur,X9 H! @9 z/ m3 n. Z
  2299. Music_Song_Next_Set* u: L2 O) H! Z6 v
  2300. JSR Sound_Reset_Proc
    . N! n% ~; c! R$ y! a
  2301. JSR Music_Show
    + B% K5 c, y" e/ C8 R$ P  l
  2302. Music_Song_Next_End" o: I- V8 c; V
  2303. RTS- P# x& z3 D+ C* i3 O, g" [
  2304. - @1 }: i# ^) z* ]' n
  2305. ;==================================================) {* v0 ?* i: j  m/ }: H: X5 S
  2306. Change_Select_Item;改变当前选择项
    5 p/ w  {5 Y( v! K0 v5 j9 f
  2307. ;--------------------------------------------------
    # I& Q' a/ ^8 X) ]$ n
  2308. Change_Select_Stop_Play_Item;停止/播放
    ) p1 b- n  k( y/ H! u  M# y. ^
  2309. LDA <Key_Once
    ) [& Z* ?2 x/ k- P0 g
  2310. CMP #$10
    8 _$ @6 j* m5 N4 R' y. A* ~
  2311. BNE Change_Select_Last_Item
    3 T0 j* L' F+ l9 j
  2312. LDA <Music_Stop_State
    ) N. U  e* ^1 n; a5 b
  2313. BNE Change_Select_Play
    5 f+ w  b0 x8 F% s9 u
  2314. JSR Music_Song_Stop7 e6 G& g- f9 F$ W& u
  2315. LDA <Music_Stop_State
    4 E. I% M8 Q( S5 L
  2316. RTS
    , O/ \/ @0 J9 B3 `; ~4 i
  2317. ) C9 F- ~7 |6 f4 s( v1 v
  2318. Change_Select_Play
    9 Z) }# m+ g3 Y' }" w  Z
  2319. JSR Music_Song_Play: K- p+ b$ y% S
  2320. RTS3 Z) e8 p$ S6 ]7 b$ v& }# ~
  2321. 9 n7 A8 R; C" C9 k
  2322. ;--------------------------------------------------1 j' L+ N6 I3 z. e+ @  k
  2323. Change_Select_Last_Item;上一个专辑; S, I0 }5 M9 ]2 i$ j6 \# t
  2324. LDA <Text_Disable_Flag; g% K. g4 p, J8 e8 [: z) k' C
  2325. AND #TEXT_DISABLE_ITEM
    . n. p/ \' a* D$ s7 x. h& P4 n  ~
  2326. BNE Change_Select_Item_End
    ( W3 V& E* g; h
  2327. LDA <Key_Once
    # _. u/ L' P9 }5 i8 Y
  2328. CMP #$08
    & {7 C! T' S; W6 c! S
  2329. BNE Change_Select_Next_Item
    " t$ a) _% B5 e; ~* r
  2330. JSR Last_Item
    - N7 D5 `8 r+ p
  2331. ;--------------------------------------------------" \5 j/ p, s8 {5 H8 Y  _
  2332. Change_Select_Next_Item;下一个专辑
    ; Z- f, m3 k% w  h
  2333. LDA <Key_Once1 {8 ?7 Z3 w5 }, h) B
  2334. CMP #$04
    ( O9 M1 }/ i& y$ z
  2335. BNE Change_Select_Last_10* b1 E9 Q! y5 i1 Q4 o: X
  2336. JSR Next_Item
    ' e3 b4 L& |" J2 U/ K- V/ q
  2337. LDA <Music_Item_Cur) F7 d  T% r& v2 g, ]" r' W6 x
  2338. JSR Get_Page_Start_Index
    ( t+ u9 P4 c) ]" x9 E# C
  2339. ;--------------------------------------------------
    ) Q$ _9 R& g( f- B
  2340. Change_Select_Last_10;前10曲
    1 [& i/ |1 u  T: h9 ?  O7 X4 N
  2341. LDA <Key_Once
    ) S' J" K9 c5 C2 `0 i8 H: J/ N# |
  2342. CMP #$40
    7 j( _1 p$ h/ o, X
  2343. BNE Change_Select_Next_10
      H0 F$ z# G1 l2 q- Y- w; t
  2344. JSR Music_Song_Last_10
    " ^) J4 `2 b- I1 Y# k
  2345. ;--------------------------------------------------
    7 r( w2 K# t$ M1 x
  2346. Change_Select_Next_10;后10曲8 u/ s5 @: }$ N+ A
  2347. LDA <Key_Once6 B  A: A( E/ q3 o0 a: A; X
  2348. CMP #$80( b: W2 g' |8 k. z+ B# U
  2349. BNE Change_Select_Last: B1 q7 W6 @) J  V* e
  2350. JSR Music_Song_Next_10- N: G' t# x* X0 S  p1 l+ `
  2351. ;--------------------------------------------------
    & i( s( w) @. N2 a% Y+ C$ A
  2352. Change_Select_Last;上一曲7 C# Y8 t$ {! U8 U7 F# `+ j
  2353. LDA <Key_Once4 y3 j0 i- D: f6 {& u9 }
  2354. CMP #$028 n) p4 K8 h! B  P& f4 O
  2355. BNE Change_Select_Next
    9 J$ B, A( C; l+ h
  2356. JSR Music_Song_Last+ j' q4 {0 S# @0 E0 E% ~! I
  2357. ;--------------------------------------------------. `" T9 ^: _$ f; c/ H
  2358. Change_Select_Next;下一曲
    1 i! c/ e! L/ }
  2359. LDA <Key_Once
    ! n; Y* ^% q! T; d" G
  2360. CMP #$016 W# n1 a0 \" ^- ^; W
  2361. BNE Change_Page_Next- s3 C2 ?$ v' P# _' \8 Z/ S
  2362. JSR Music_Song_Next
    $ e+ o! T% |, S
  2363. ;--------------------------------------------------0 l. U) a& ^$ K4 `
  2364. Change_Page_Next;下一页# S3 t4 T; S  v3 }! x
  2365. LDA <Key_Once
    % s5 g' j' `4 a/ o
  2366. CMP #$20
    / q1 _+ V) Z; W5 d3 s% }* F
  2367. BNE Change_Select_Item_End
    5 X2 ]% F9 w0 ?* W( P
  2368. JSR Next_Page1 j# Z3 [9 T  O$ S1 F' }
  2369. ;--------------------------------------------------1 u; I! ~* |; U: x2 s7 C! n+ Q
  2370. Change_Select_Item_End
    & _+ p  g5 b3 N( s, y
  2371. RTS2 q+ D/ d; R+ e' z

  2372. 5 S% c5 e/ V2 p; T: T( z
  2373. ;==================================================' j; F+ @" [8 R9 h! ?0 T3 q. M
  2374. Show_Arrow;显示箭头光标
      l$ {4 {8 g! l
  2375. LDA <Music_Item_Cur: i8 o" W/ e$ y4 R
  2376. JSR Get_Page_Start_Index
    5 N+ z7 j# P6 O9 b
  2377. LDA #$00
    / q/ l* H, ?( `5 [' i0 S( X
  2378. STA PPU_OAM_ADDR
    2 X$ k* n6 C, Q
  2379. LDA <Music_Item_Cur! M% l$ D8 S- m; [8 Q% u
  2380. SEC6 a9 t: y& k2 [. ]
  2381. SBC <Data_Buf9 [- D; E0 Y, F# d) N. A
  2382. ASL A5 j& y: p# v% H+ p
  2383. ASL A
    ( B5 O2 x& K  ?# u& @8 y, `! a
  2384. ASL A# ]4 N, l3 {% n. K
  2385. ASL A! t8 s& i0 v# V, j- ~
  2386. CLC
    " [, ?8 c  n/ d
  2387. ADC #ARROW_Y_OFFSET; a! g- _. a6 c+ w" ~; j: l
  2388. STA OAM_TEMP_ADDR + $00$ L5 k# O; ?8 R# U9 z
  2389. ;STA PPU_OAM_DATA: j( A3 B, r7 F: X3 a. y
  2390. LDA #$1F% y/ x8 r' @/ \3 R' o4 V" \
  2391. STA OAM_TEMP_ADDR + $01  z  G/ W1 Y+ C1 l! `
  2392. ;STA PPU_OAM_DATA
    % \2 u" D! Y" `2 @, x" U
  2393. LDA #$00
    & }( r1 A! M* {3 K! J$ v7 C
  2394. STA OAM_TEMP_ADDR + $026 i5 B" |( Z# ~5 b
  2395. ;STA PPU_OAM_DATA
    9 P5 u) b  O+ z) z+ s6 d: n
  2396. LDA #ARROW_X_OFFSET
    ( p4 {$ k, ^; x
  2397. STA OAM_TEMP_ADDR + $03: q) X; ~# D# E6 M3 L% E
  2398. ;STA PPU_OAM_DATA
    / _; C4 O0 r% L! i% Y* P; u* E
  2399. RTS
    * E1 E! B$ r2 f# R4 T) N* Y8 O
  2400. 2 \+ k' |7 Q% A% \2 V
  2401. ;--------------------------------------------------3 E  O7 ]& A, C: ?3 u) j
  2402. ;命名表数据
    ' J7 K; ^, N3 P* ~: o7 C6 Q
  2403. Palette_Attributes* i. k4 t6 p% [& A, E  F+ Q
  2404. .IF SOUND_BAR_SHOW_ENABLE9 l) o  \  H1 F/ f
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$550 Z; T& _- Y& j3 M4 h
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$551 w# ?$ _9 h$ ]# |3 f2 c# r' r9 W
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$750 y" y, N" ], N: v
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA& ~) J0 w( D  {, C+ r
  2409. .ELSE& \( k5 w2 C0 U- n) h9 J
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    7 _! a: D' ~, ^
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    9 D4 C: P0 w# U& `! b
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    , I' d1 O3 g: o  [2 _1 ~& k
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    1 Y" D( e1 v4 M+ W; E4 Y& `
  2414. .ENDIF
    ( q2 J% N  I. @# ^. z; ]0 [
  2415. 2 j5 Q  }( {, x4 {5 B
  2416. ;--------------------------------------------------4 G" [- i9 y" x8 O0 V
  2417. ;调色板数据3 a6 X! h  ^+ g  j2 Q# X: O
  2418. Palette_Data0 `" m, i( N5 s; d3 B4 g+ D
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F! U( N! O0 X) c  D0 J, y5 ~
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    / N3 W# Y- v: N( W4 [( G5 \0 t
  2421. * \/ t: c. I5 _4 z0 k  A
  2422. ;--------------------------------------------------% R% v: g0 Q! z: |  x
  2423. Static_Text_Data- Z$ G: V/ j0 _% O8 n
  2424. .WORD Static_Text_Caption_Data
    : K8 n# R8 O6 ?9 w" T, B# z
  2425. .WORD Static_Text_Author_Data
    ; @6 W2 e* P0 {* b# {3 C
  2426. .WORD Static_Text_Date_Data/ `, m- U, [1 \5 x' }( v
  2427. Static_Text_Data_End
    0 q9 g' s) M" h5 g
  2428. 1 G* z& B3 P8 H8 X, s
  2429. ;--------------------------------------------------4 h! M' O3 O1 h. f3 U5 |
  2430. Static_Text_Pos
    + b+ f* q" o4 _" B+ L
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    % w( _, f! k8 ]- r, F5 T
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos): p& v% ]# i2 R! ^' E5 G4 a
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    / ?7 }* X( K4 u+ D
  2434. Static_Text_Pos_End; W& @% q/ ]' z( l) q: U7 T9 E

  2435. $ B6 ~: v3 y9 m& y1 c
  2436. ;--------------------------------------------------
    2 S" k; ?8 a9 E- ^
  2437. Music_State_Stop8 ]) ~( q2 J5 @, L3 [
  2438. .IF SOUND_BAR_SHOW_ENABLE: e$ j- G: q' T+ i* u  A6 u
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00; k- J1 ~& Q" D
  2440. ELSE+ \" U/ l) I3 w- a7 ^
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00! e+ I% B0 _! D7 ~. z
  2442. .ENDIF, ~3 A3 ?3 P; P2 c( u% `
  2443. Music_State_Play
    ; ~2 ?$ p  d& ^' ?/ S
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    ( [& g2 y+ E5 P% v5 H7 f
  2445. 6 K: \* q: B! V$ ]* I. p8 c
  2446. ;--------------------------------------------------3 g; F3 T6 Q" k  y& g5 k9 u9 l
  2447. Sound_Bar_Text_Data;声音类型文本
    . O6 i. t- x4 {0 E
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    2 ?. O5 K; M, C& R5 {+ q
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    1 Q' V9 p3 p+ I" L  J( a; C
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"6 x: |  h  _0 w% f) g) _; B
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"0 j* f$ o6 `: X
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$008 X' f0 b" o- w9 W  _

  2453. 6 |/ v/ L, T0 T. ^
  2454. .IF Track_Name_Pos
    6 x7 B6 D, ]+ s) h$ }/ h7 M, N

  2455. , k4 ^6 R0 S, i3 H5 ], y
  2456. ;--------------------------------------------------
    3 Z- u( b5 |% S8 F& V1 d
  2457. Track_Name_Addr_00;曲目名地址索引
    9 ?, X, j, Y8 y/ c
  2458. .WORD Trackr_00_01
    9 j0 I3 N* E1 E
  2459. / W8 V+ Q5 m- ]7 O7 q
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    8 I' s0 j7 \/ z( I/ ^' U0 t
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    * t4 Z+ `9 P* Q

  2462. 9 ?- N8 Y/ O8 q) \
  2463. ;--------------------------------------------------" R& U( h8 J6 |! v1 y( b
  2464. Track_Name_Addr_01;曲目名地址索引
    9 z: a2 q* m+ @/ }9 s/ E
  2465. .WORD Trackr_01_01
    % Y% @7 g$ G5 g: ~$ H
  2466. , W% i& M+ l; S4 ?4 j1 u
  2467. ;==================================================2 z# e  ]8 C" z/ j! i4 n1 {
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"- F6 Y" n: l- J  h' g4 |
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    1 |  @4 E# l; y# N6 L) ~' S: v
  2470. 5 W1 [, [6 l) D& |8 o
  2471. ;==================================================
    ' {0 N, q  q; |- l4 C4 |
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引$ A4 v/ X& n# [
  2473. .WORD Track_Name_Addr_00! l2 O, b: B% Z2 a
  2474. .WORD Track_Name_Addr_01
    : o; L6 e4 ^: r& U" O# R" C
  2475. .WORD Track_Name_Addr_01! R1 `2 T6 A& ^* W8 E

  2476. 1 `5 k5 h( v, C/ S1 M! `3 Y
  2477. .ENDIF: _; X: m$ `# N( b

  2478. & e4 D) D" i1 n$ Y% I
  2479. ;--------------------------------------------------% |4 j2 o/ u5 v8 ~
  2480. Static_Text_Caption_Data;静态文本数据
    9 q/ {" b% W# a0 ]
  2481. .DB 160 }4 Y' H! x" _0 e( G/ a& z2 ?
  2482. .DB "FC MUSIC 12 IN 1"0 V6 E/ M8 i, c# z
  2483. Static_Text_Author_Data
    1 k4 ]9 o$ g7 \0 u- Z
  2484. .DB 255 U" K7 Q5 D: e! q% j: V2 c
  2485. .DB "EXTRACTED BY FLAMECYCLONE"8 n& l6 O$ f. B3 h5 n0 o2 S& c  F
  2486. Static_Text_Date_Data  ?, P2 p) h8 \4 V* \0 a7 q& f& @
  2487. .DB 10
    8 K7 `4 W: D: `- t
  2488. .DB "2023.07.23"
    5 a9 c" j" i* V0 X% m8 j

  2489.   Q# M! J2 K. f
  2490. ;==================================================' h8 w- z0 o% G
  2491. Music_Collection_Name               ;专辑名间接索引
    ' M! D7 n: g5 O/ i% `* f
  2492. .DW Music_Collection_Name_00
    % \2 h/ J! U: t5 t2 B2 D" U7 J, [
  2493. .DW Music_Collection_Name_01
    7 _0 `% Q% v$ u4 s$ r
  2494. .DW Music_Collection_Name_021 c( s7 T5 t4 l+ o+ O
  2495. .DW Music_Collection_Name_030 ^7 \3 ]! Y4 d, N
  2496. .DW Music_Collection_Name_04
      r1 N# j- }) P" ]
  2497. .DW Music_Collection_Name_05
    2 L3 R; F1 u9 e
  2498. .DW Music_Collection_Name_068 P8 L( V/ C6 _, _
  2499. .DW Music_Collection_Name_074 ^, z+ P# W8 T. `; v
  2500. .DW Music_Collection_Name_088 m* m, V' S/ I: u: u+ b2 E
  2501. .DW Music_Collection_Name_09
    " e9 _& H3 H! \% U& N" W* F+ d0 i
  2502. .DW Music_Collection_Name_108 Y) o7 l# H1 p: M# I+ \
  2503. .DW Music_Collection_Name_11
    % _  P8 E* Z0 [( J. d7 i: e. O7 ]' r
  2504. : |4 J2 T, ]5 O& p/ W
  2505. ;==================================================- s# K# T+ L9 m2 T* Y, y" S
  2506. Music_Collection_Name_00            ;专辑名文本数据" O) {; |8 C3 S3 `  Y2 F6 j
  2507. .DB 11,"1.RAF WORLD", N+ B( m5 |$ N+ I/ T- l
  2508. Music_Collection_Name_01$ y& L" L' @7 j
  2509. .DB 15,"2.FINAL MISSION"' V; x- _6 q7 j
  2510. Music_Collection_Name_02
    9 ?' w; v, U+ D, E0 g
  2511. .DB 06,"3.KAGE"
    0 ~$ d) ^" G5 S
  2512. Music_Collection_Name_03
    5 v& a- a( f  P
  2513. .DB 16,"4.DOUBLE DRAGON"
    $ h  u" D4 U1 e8 r; X* T2 O
  2514. Music_Collection_Name_04# C. h1 a* d/ p( M" a
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    ( I9 }9 I7 \; v, D) g
  2516. Music_Collection_Name_050 g- P2 z5 t: G9 c
  2517. .DB 17,"6.DOUBLE DRAGON 3"8 \% ^- z) l  k7 a; _
  2518. Music_Collection_Name_06, [% Q! t, I: a
  2519. .DB 09,"7.ROCKMAN"2 E1 v0 b* y/ o9 g/ j
  2520. Music_Collection_Name_07' w2 J/ ^* ]5 E
  2521. .DB 12,"8.ROCKMAN 2"+ ?6 y8 r/ Z2 D+ U
  2522. Music_Collection_Name_08
    4 ^3 r1 w. g- V# J8 r8 X' i
  2523. .DB 12,"9.ROCKMAN 3"5 X0 f1 [$ H! b1 G
  2524. Music_Collection_Name_09" z8 o  Q% _% w2 m
  2525. .DB 12,"10.ROCKMAN 4"* o# T+ T4 A3 R' E/ t7 T
  2526. Music_Collection_Name_10
    $ s9 j- W+ I5 }/ x+ j6 c: n
  2527. .DB 12,"11.ROCKMAN 5"( h4 P; I" v! _3 u2 y6 v
  2528. Music_Collection_Name_11( R* y. b/ ~& R5 ^
  2529. .DB 12,"12.ROCKMAN 6". H1 ^; w" v0 ~3 r# `! `; k
  2530.   }+ w* _, F6 h' ]7 F
  2531. ;==================================================
    ! i- D* D8 f/ [7 ?+ G5 f# J
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    * S* J% b4 z7 D
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    & }/ d' {8 g; V" {/ p

  2534. : b- O5 Q) r7 Y
  2535. ;==================================================
    9 O" t1 U) H0 \" j& G/ `
  2536. Item_Pos_Data                         ;光标箭头位置
    ; H& i! }2 ^% M  n8 f- n! T/ V
  2537. .WORD ITEM_SHOW_POS
    # @' {1 p2 N! D+ c5 o& r' @) m! \4 {
  2538. .WORD ITEM_SHOW_POS + $0040
    3 r2 f- J3 [& J$ D' O
  2539. .WORD ITEM_SHOW_POS + $0080
    ' r/ _2 ?, A: c5 }' w* Y, |# E7 r
  2540. .WORD ITEM_SHOW_POS + $00C0% ^+ b' o4 D; J2 ?, h$ \
  2541. .WORD ITEM_SHOW_POS + $0100
    2 F/ J) i) i: P8 c8 V" a
  2542. .WORD ITEM_SHOW_POS + $0140
    7 z. z- b/ l4 q) ?2 I+ P
  2543. 6 g) @5 x5 j6 a8 P% V
  2544. ;==================================================
    - ~3 j3 J  i& A
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    $ L0 z& ^  _2 g7 I9 M1 I
  2546. .DW $BFC8/ B3 E; Y9 j/ h; q3 x2 z
  2547. .DW $D7F0! s1 D$ |7 T* @) _
  2548. .DW $9FC0
    % }* R) G. J' y1 W- ?) _7 n
  2549. .DW $BF70
    - |. S. H( G2 A0 z
  2550. .DW $8003
    9 |! C+ G' p/ Q) J
  2551. .DW $BF30' r, A5 M; |0 S% {8 T! a
  2552. .DW $9003, K; g- R/ b' x7 F+ R6 N
  2553. .DW $8003
    7 C* t. [7 L' V& Z
  2554. .DW $8003
    4 N% [+ O$ l$ e! ^" ?, l* v. l5 k6 X( g
  2555. .DW $8003
    # [' p6 {  y- \# w7 w" ~& ?: c. ~8 e
  2556. .DW $8003( G3 O& z* v5 S# S2 ]" _! p
  2557. .DW $8003
    " d5 p: U4 U  p: }, W) F2 v

  2558. 0 w4 W. ]2 {4 F
  2559. ;==================================================2 v7 ]: R8 k) R- w4 a
  2560. Sound_Play_Port                   ;音乐播放入口地址
    / K7 f8 i! V+ w. n, E
  2561. .DW $8000$ F/ |! z% P6 U
  2562. .DW $8001( H6 j5 b8 \$ ~/ S0 G; f- J. d
  2563. .DW $A000
    7 X! Q  X" y0 a' H/ y0 P# h$ w
  2564. .DW $80031 z$ u4 y) t5 D- L" W
  2565. .DW $8000+ N3 }3 j7 w' ]' E2 l$ S% c. n: h
  2566. .DW $8003) {# e/ }% c' x2 l0 ~- U, A
  2567. .DW $90006 A! u: W" R/ E4 \' k
  2568. .DW $8000
    : `+ V6 B  w- C1 s6 I
  2569. .DW $80004 [+ n- Q! Y4 i! x2 P* ^: P. t
  2570. .DW $8000
    * U* I) _: d7 ~* A7 g' X
  2571. .DW $8000
      v5 \: R4 N* B
  2572. .DW $8000! s+ ~8 ~- v* \# i6 B
  2573. 7 K& n1 p8 p+ V' I# Z0 H
  2574. ;==================================================7 @. i; e9 T8 x1 n% j
  2575. Sound_Reset_Port                  ;音乐重置入口地址# W2 g( @5 u& z# b3 p  f
  2576. .DW $00001 M, J* K: l1 v3 h
  2577. .DW $0000
    , j7 F$ |) ~3 e
  2578. .DW $00005 W' n8 [& \$ h: c: ?  @8 {7 d1 L
  2579. .DW $0000: p( v- j! }3 u. L8 ~5 B
  2580. .DW $0000
    : w6 u# b& H  W2 Q
  2581. .DW $0000
    # ^7 W/ s5 }# i) P9 E8 m
  2582. .DW $0000/ Q/ c: Z- i3 P0 `' k
  2583. .DW $00006 P0 h! M& G! R
  2584. .DW $0000
    3 M. H" m3 P$ |1 Z
  2585. .DW $0000( c4 ^+ V' \$ M% {7 D
  2586. .DW $0000
    & f1 B1 v& S: F: e2 c5 f" T
  2587. .DW $0000: l6 c* W& _6 w7 W

  2588. : `* Z0 K4 a  F: F+ |: W" n5 G
  2589. ;==================================================
    / v2 j0 a8 C- G9 `! i) B5 g
  2590. Sound_Total_Port                          ;曲目总数
    7 E, ]3 v% {" k) n( B% E' n3 C
  2591. .DB 38
    - i/ T. {, ]' D; ^( ~/ k% W9 r6 C
  2592. .DB 33* c( S" g* y1 I! h2 X7 u% {
  2593. .DB 49
    5 ^) N5 S+ {+ f( P& {" p
  2594. .DB 41
    , p, h, \$ b' F
  2595. .DB 83
    " Z) ]' {4 E0 X9 D% C8 I
  2596. .DB 70
    ) g5 D/ D. M8 B+ f) G! L
  2597. .DB 50
    - `# I1 S+ i# g
  2598. .DB 67+ x9 g, [+ o* U/ l0 i  ]5 _
  2599. .DB 57
    $ g; ]) |, T/ c( h0 S2 S' ^
  2600. .DB 71/ v$ y$ F4 _4 s' x- t* r1 e/ T: k
  2601. .DB 76
    ! Q$ j4 t: |  Y& S% _+ n
  2602. .DB 102
    ( c! A7 m$ X7 ?* _
  2603. 0 [2 W: q( q& _# y
  2604. ;==================================================
    $ l+ j! h  r' s- p7 l0 W
  2605. Sound_Start_Port                      ;起始播放曲目
    9 k. D; k+ P8 d; z% e
  2606. .DB 00, k) z; t9 D% j& m5 O
  2607. .DB 00
    + Q6 n$ d! A% |, y. R; Z6 g/ v% D
  2608. .DB 009 x" V& U- `1 P* [9 I4 _; z& \  V
  2609. .DB 00% e0 E% {* i. O* K0 s* E1 I
  2610. .DB 00  Y+ N' v7 R! t2 A" M6 W
  2611. .DB 00& u. x1 V; F6 N0 r3 C
  2612. .DB 00
    $ ]9 ^3 n# m) @% _4 f
  2613. .DB 00
    2 G! e6 ]0 B( x, u: I- d1 g
  2614. .DB 000 |" D0 I# [: ^0 A* s4 A1 o
  2615. .DB 00/ V, L2 B$ K9 W# b
  2616. .DB 00
    , s  L" X( P( q
  2617. .DB 00
    3 z% s' V" }' `
  2618. . T8 P' l& \4 T3 _6 x) Z
  2619. ;==================================================! B5 M9 e; G  e2 o  [9 x
  2620. Sound_Bank_8000                      ;专辑bank_80009 h7 i. G, J$ v4 E( v
  2621. .DB $10
    , \& Z  ?4 a+ Q3 u+ C$ `* s$ J6 t9 a( L
  2622. .DB $12; N. V" z2 A/ w, s
  2623. .DB $14+ d. u- e2 X, [9 |" V( Z* k% I/ M
  2624. .DB $16
    % b9 o5 O# n- t4 L' v! H( J
  2625. .DB $18) \7 X" W" N& j2 b" v7 Z
  2626. .DB $1A7 E8 V7 s4 ?3 A
  2627. 3 _8 K1 X3 B# i( g6 j& U5 }+ ~
  2628. .DB $00) e0 S5 p: F/ n1 t: Z( R+ G* x
  2629. .DB $02+ J3 X- @7 N7 ]' e7 D  i' C
  2630. .DB $0D
    ' }; b# \( J9 \1 _* Z" ^# m
  2631. .DB $04  y5 q4 I+ c- A. M+ l: d7 n- \
  2632. .DB $077 D6 v8 S* H' C6 `( v
  2633. .DB $0A
    $ v7 h& U" o1 ^' M3 }8 ?2 @
  2634.   G# k3 Y6 N9 x6 G9 O; |+ B, v0 I0 j

  2635. * r* T5 f. A0 x- g1 b5 m7 j
  2636. ;==================================================
    7 H5 A& `7 w5 w" e; ?6 F
  2637. Sound_Bank_A000                      ;专辑bank_A000; W# g, P2 w( \- _
  2638. .DB $11  g1 e' H- G! {8 Q6 A! ^3 y9 g
  2639. .DB $13
    5 n% z7 u* g6 }) ], k
  2640. .DB $15
      O! I2 x" ^# I0 `
  2641. .DB $170 r3 m0 N" C; \2 q: @) ~" p8 x: ]9 x
  2642. .DB $190 a! w. P, N1 s
  2643. .DB $1B; B9 ^" ]( N% C

  2644. - ?) F; s8 Q8 N! H% ^
  2645. .DB $010 M9 Y+ [9 F; ~1 l
  2646. .DB $03
    4 E4 S' V; U2 R- ~: m/ z
  2647. .DB $0E
    - K7 n/ U4 p! Z) L5 c1 z
  2648. .DB $05' a$ [- ~' w3 R6 F# J
  2649. .DB $08
    5 c+ q3 G* t7 p- }
  2650. .DB $0B# @9 Z" c! y# d9 e$ g; n( p) ~
  2651. ' Z! `$ I8 g6 |& c

  2652. ' v% ?. S+ j& w1 s9 r  I$ g
  2653. ;==================================================
    4 R5 x0 i' o( _, i' \6 ?
  2654. .BANK RESET_BANK & BANK_DATA_MASK/ O" J7 [# ^5 m/ g; @
  2655. .ORG RESET_ADDR
    9 a; F6 J3 Q+ e. ^" |- E5 y

  2656. # J( s) v) F: L2 ]2 A
  2657. ;==================================================1 l1 I! [4 O( V0 _
  2658. Switch_Bank_8000;切换bank到8000-9FFF4 E( r- c- I$ [
  2659. PHA" h4 l9 g" @3 S+ E2 e
  2660. LDA #$064 `& s# V  t5 A1 ~( j- R/ x2 a
  2661. STA MMC3_BANK_CTRL
    ( E. Q% I  k- @6 G5 Q
  2662. PLA
    8 ]+ _, W$ i/ D2 C6 l! C
  2663. STA MMC3_BANK_DATA3 {6 e7 L8 [0 Q0 I" t( U" i1 u
  2664. RTS
    4 {. w0 [( m2 j/ i8 R
  2665. + e8 E. s4 C1 r( H# m# d0 T9 f
  2666. ;==================================================0 g; w: V4 J9 c) o7 Q
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    ) w6 V  f- c4 ~# A% q- N6 y
  2668. PHA
    6 e0 N3 M% D1 i$ D) R& K' N
  2669. LDA #$07
    0 Q6 \2 @. A2 g+ ~4 A# a$ q4 f
  2670. STA MMC3_BANK_CTRL
    & M% ?4 E( V6 N* W, |* N
  2671. PLA6 \  c5 D5 H" f0 m2 _
  2672. STA MMC3_BANK_DATA; ^0 p9 N- k9 p- J# v. ^. B2 d4 ?& V
  2673. RTS1 C% L0 w3 k: Y, Q* u3 v$ O

  2674. 9 j- S5 {; v& _/ _0 O$ y  x, X
  2675. ;==================================================
    + a" D- w: T) K2 z
  2676. Switch_Main_Bank;切到主程序bank
    7 W, Q2 h, b- a: c5 ]
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    , |, w+ w# i3 F1 u( m0 v
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank1 U( F& q. p/ _. Z, w% l# W
  2679. RTS1 l$ ~/ |, g8 b4 l' N3 N3 W) h" O# e
  2680. * h4 l( M4 F# z8 `: h# B8 O
  2681. ;==================================================! g: q, `" Y6 a- z* b
  2682. Sound_Reset;音乐重设(如果有的话)1 x  |% f3 `. Y) S2 f1 ?: N( r
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    4 Z# b8 I4 q# x
  2684. JSR JSR_Addr_Op        ;执行音乐重置) E! ]& x! m& h( J2 X! v% l2 Q
  2685. JSR Switch_Main_Bank   ;切回主程序
    3 S8 R1 n% g' o, W
  2686. RTS+ y" m2 t9 x2 w" z
  2687. # M/ ]# {1 F* ^" j/ Z; ^9 O7 j
  2688. ;==================================================2 L4 [& y( _  t9 `9 G0 S+ d
  2689. Switch_Music_Bank;切换音乐bank
    * d% O  U$ N1 J. l
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号  C. ], j( c& U7 v/ ?1 I* }
  2691. LDA <Music_Bank_8000( X5 z& Q! _% |! x) }  o: K
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    * s$ ]- Z. m9 M  T- ?
  2693. LDA <Music_Bank_A0006 x# K7 \6 H# K( o4 k
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    . f1 d" G! i8 i3 n+ E: f. p
  2695. RTS
    # H; x6 G, N) D
  2696. % i1 F) d; I: a
  2697. ;==================================================( s/ E% O5 c; d2 f" ?
  2698. Sound_Init;音乐初始化' t' Z( i4 k& C  ^2 z- G: }$ ?# j
  2699. PHA
    " M- [( q$ P  t# Q* \7 d( _
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    : M! g9 m& t1 u8 d5 L
  2701. PLA
    7 Y, t: \0 V) f! f* w0 S
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    1 _2 i* L5 N  B# w
  2703. JSR Switch_Main_Bank   ;切回主程序
    9 G' g4 W3 _7 O, S% l! M
  2704. RTS
    * |7 t2 @7 s4 l: h' ?
  2705. 0 f/ B$ I4 ~2 Z4 u6 X4 H
  2706. ;==================================================
    - A3 `1 b) w6 ~
  2707. Sound_Play;音乐播放
    % [5 x: z7 c& V$ H$ I
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    : I: ?1 R3 b9 ]4 J( |, m
  2709. JSR JSR_Addr_Op        ;执行音乐播放) F! q" ?; ?2 C% Y+ `7 k6 i# c
  2710. JSR Switch_Main_Bank   ;切回主程序: e* H& ^: h5 ]
  2711. RTS
    0 z: h: F: p. M

  2712. " l2 b+ i0 M3 I( V$ y6 W9 B& }
  2713. ;==================================================
    % X. H, G5 H. x  c* ~. x
  2714. MainLoop;死循环! w5 @2 g2 D7 P& s( n7 Y, N& \
  2715. JMP MainLoop% X2 y' g. [" y% A3 a, P& h- O
  2716. 1 N7 N  Z1 M7 @6 n- u0 F* x3 P6 h
  2717. IRQ_SUBPROCESS_JMP = 0# t6 b# X  i! L( g3 q8 t) f: {

  2718. * R* J( @, \- {
  2719. .IF IRQ_SUBPROCESS_JMP
    % U& v7 E+ }. {
  2720. ;==================================================
    6 U" O! v* I8 `
  2721. IRQ_Process_0;IRQ处理过程0- u/ I* K! `& t& ]- m8 X4 S0 ]9 A( i) Z

  2722. 7 `( W4 T# b. A2 M/ o
  2723. ;15条扫描线后触发IRQ
    5 h) z  u9 s8 }* i5 a
  2724. LDA #15( @5 k' D; @4 `; V) E+ [4 n
  2725. STA MMC3_IRQ_LATCH
      Y; D" U! z/ T
  2726. ' }# z. y0 |1 ?( p& ?( w
  2727. ;设置屏幕滚动# b% f9 u, v2 T; j4 d3 ^
  2728. LDA <Scroll_H" S8 q/ h% c- |$ I8 {. g, [  R
  2729. STA PPU_SCROLL
    ' y" P$ m' t6 ?2 j3 j
  2730. STA PPU_SCROLL
    - w* V) I; S( N; a/ A. A

  2731. " K& F& L/ q5 e' `4 x% \
  2732. IRQ_Process_0_End
    + L% `; d' K- E8 s' m9 R; a
  2733. INC <IRQ_Process_Index
    7 j. o: B7 X3 y2 w
  2734. JMP IrqProgramEnd; t, g$ g- o  Y$ r, a" a& W
  2735. ( S* @/ a0 {$ p# s+ H7 t5 R' A2 n
  2736. ;==================================================
    9 x! v$ r3 q; y+ s6 q
  2737. IRQ_Process_1;IRQ处理过程1
    5 j* Y  d( |& h: b

  2738. * ]' d3 f" B$ n$ W$ u- L
  2739. LDA #55
    ' x( y7 m7 U" r+ q! _9 s
  2740. STA MMC3_IRQ_LATCH4 E/ G  V' u3 R* W' c: E) d- @1 h# }
  2741. 9 Z9 b! O2 n$ ]' t
  2742. ;设置屏幕滚动
    & c+ N" o8 d8 E3 n$ m
  2743. LDA #$00
    ; ~/ y3 g0 J: R  t2 p" q
  2744. STA PPU_SCROLL
    3 \' h& Y7 y) t1 Y
  2745. STA PPU_SCROLL
    9 }0 Q. ^( M: ^( M
  2746. ! t7 l$ j+ D  P1 G6 V& y3 t' N5 v
  2747. INC <IRQ_Process_Index
    - q' @) H3 w" d
  2748. JMP IrqProgramEnd
    0 s0 b0 H; D5 g/ g+ r- z

  2749. 2 i7 g  v! w, \7 N' U
  2750. ;==================================================
    ! `) Q/ A* p3 q: M( H% I/ m
  2751. IRQ_Process_2;IRQ处理过程2
    $ h8 I. T* Y$ i+ [  O% S1 G

  2752. 5 X. l! t. v/ W% C! z
  2753. LDA #15+ y) H0 _& w1 P+ J: X# u8 h
  2754. STA MMC3_IRQ_LATCH
    1 Z5 N3 @9 p  q6 ]+ Y: l
  2755. 2 _  Q& N1 {8 U0 \; L8 T# U+ e
  2756. ;设置屏幕滚动
    # ]9 Q9 j: ^6 \4 d/ `  k
  2757. LDA #$00$ `4 ^6 G* Z: W2 N' P  B3 i  r
  2758. SEC  m* u7 h2 p* P  K( e
  2759. SBC <Scroll_H
      z  r# v1 Y. _+ ^
  2760. STA PPU_SCROLL
    0 H2 w. f+ c( w3 y; r
  2761. STA PPU_SCROLL3 j4 z: F+ F* {' X  L9 a, A% |7 t
  2762. 3 L% }& T0 C) O5 y
  2763. INC <IRQ_Process_Index; m/ W* N+ Y: j
  2764. JMP IrqProgramEnd
    ' r& k8 C, `& |5 x+ {
  2765. 2 O+ Q! ^+ u( T
  2766. ;==================================================$ U" ^( v5 Z% g: H7 S- C5 Z' S
  2767. IRQ_Process_3;IRQ处理过程3: w  u: |2 q, m3 ]# Y

  2768. ' `+ w" k0 Z3 n  U. I5 }
  2769. ;设置屏幕滚动
    0 D/ [7 Q. W+ \. ^$ y0 ^
  2770. LDA <Scroll_H2 Z6 v& X7 H) X9 [
  2771. STA PPU_SCROLL6 X9 X- T; M4 ]
  2772. STA PPU_SCROLL
    % g: z+ E) c4 Y

  2773. 2 i% P( s6 A# M0 Q5 D/ l1 Q
  2774. ;禁用IRQ
    ) N* f' T3 s$ l$ U
  2775. STA MMC3_IRQ_DISABLE
    & k8 E  A5 Q: r$ n1 ?
  2776. JMP IrqProgramEnd
    ' [! V4 }& X/ A/ k
  2777. " D( @' g" p1 f( k! c
  2778. IrqProcessAddr/ p4 W, x$ g! N- I
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    & v, u; \- o$ V0 @, L0 q2 }
  2780. ; z; A& l9 Y0 F, K
  2781. .ENDIF
    " @, C% w7 E6 {

  2782. % s% N: Z5 a2 [# m1 K
  2783. ;==================================================
    ! y% I9 m, N% [7 m- w" l
  2784. ;IRQ滚动模式常量
    " I3 t. A0 ^( l# p9 G, m
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动% H2 B, R( ]) c1 r& x$ }$ ~
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动! x# c/ W" e. r* r# T, A
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动/ b/ x+ p/ P* l6 _; g2 q- a3 t
  2788. , O, ]' Q* R3 E! P! t, U
  2789. ;IRQ扫描线数据; x0 L! X9 Y& h  M+ g- x
  2790. IRQ_Scanline_Data
    ' p' C) f. A  h, k! a* t/ h/ l
  2791. .DB 8# j8 Z9 r; y0 L5 J& A3 Z% P6 l
  2792. .DB 54
    ' q/ t- H$ K# e: ]
  2793. .DB 8- S* w3 e5 g% O" P% m
  2794. .DB 00 ;关闭IRQ
    ! I# s3 K4 o# h
  2795. 0 V' r  Z: ]  }. {7 j# J9 n
  2796. ;IRQ滚动控制模式
    9 F6 O, U6 H: {
  2797. IRQ_Scanline_Mode& N) M$ _9 p" U) l
  2798. .DB IRQ_SCROLL_MODE_ZERO
    ( G0 F9 q- s2 @3 q7 i3 o5 O
  2799. .DB IRQ_SCROLL_MODE_ZERO
    5 y" E7 e0 H! F* p8 Q
  2800. .DB IRQ_SCROLL_MODE_RIGHT, B8 ^1 M& p0 [( D1 v: j2 A
  2801. .DB IRQ_SCROLL_MODE_LEFT+ a% A2 Q$ \: K. j

  2802. 9 D, Q' I5 e1 V
  2803. ;==================================================
    4 y* G- n5 [) n3 p) n: V; ?
  2804. ;IRQ处理2 b" f5 V% T- P" L; x% I5 p
  2805. IRQ_Process7 D9 r, R4 J2 b; z% x. c% |
  2806. LDX <IRQ_Process_Index
    / K. N. j6 p% D- I2 i1 B
  2807. LDA IRQ_Scanline_Data,X
      o" e# F2 x7 f; H; M
  2808. BNE IRQ_Process_Latch- S- q* J+ F' D! ?; z& X
  2809. IRQ_Process_Disable;禁用IRQ
    : J# I, k$ H. O2 ]- z
  2810. STA MMC3_IRQ_DISABLE# q( D/ i; @1 B( b* _4 d, h
  2811. STA IRQ_Process_Index! v* N& _$ ?5 {
  2812. BEQ IRQ_Process_Scroll& i$ y& ^" e- Z) A2 b5 E9 O/ [3 P0 J
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    & d9 @) {4 I0 F; a0 w6 D
  2814. STA MMC3_IRQ_LATCH
    . M" V5 C( Y$ a* X2 h' e
  2815. INC <IRQ_Process_Index
    , a& O# C7 s7 m0 O
  2816. IRQ_Process_Scroll;IRQ滚动控制, e3 f0 k# q5 {# Q8 i( J8 ^/ s. o  _
  2817. LDA IRQ_Scanline_Mode,X
    & |: `* q! c+ \2 M4 _& s$ ~  K
  2818. CMP #IRQ_SCROLL_MODE_LEFT# t9 J" e5 l6 D- D! K8 T; @, o" ]
  2819. BEQ IRQ_Process_Scroll_Left
    - T* ]/ I) V# W3 f6 U
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    $ B% ?# W: R) `/ _" n" i
  2821. BEQ IRQ_Process_Scroll_Right7 c, ^) K8 [. l/ P7 a% N0 G2 V& |6 z
  2822. IRQ_Process_Scroll_Zero;不滚动
    / @( [) {# a, x
  2823. LDA #$005 I6 x7 @8 L% x" o% m3 j+ e
  2824. STA PPU_SCROLL
    2 \# }/ R2 r( h: j1 x  N
  2825. STA PPU_SCROLL
    4 H" V+ d. {2 {- N8 v+ _5 c9 N6 n
  2826. RTS
    $ a& Z. q' a! H: i% i& j3 ?
  2827. IRQ_Process_Scroll_Left;向左滚动$ k' v  c& H. D: A; O# j1 |( K
  2828. LDA <Scroll_H9 N" M/ _1 E% N% h
  2829. STA PPU_SCROLL
    8 J7 [8 ?1 s% b- ~/ v  p! k" _% ^
  2830. STA PPU_SCROLL
    / ~1 z6 r) _4 G. ?/ W: `
  2831. RTS  `% A, r) o; S$ U$ |3 V) x
  2832. IRQ_Process_Scroll_Right;向右滚动
    5 I; K4 P; N0 G) |5 e+ q
  2833. LDA #$00
    + ~% v' \+ }: L
  2834. SEC* P" }3 b  k* w1 \; ]+ Y5 \/ N
  2835. SBC <Scroll_H. M5 k8 n- b4 c- K# v- F
  2836. STA PPU_SCROLL
    ; q$ w/ w& X! o
  2837. STA PPU_SCROLL) M% _# g' S) T5 e* u5 ?
  2838. RTS" m2 E; d7 h( |; j) ~3 c2 o

  2839. 5 ^8 K3 {# f) {( d1 |& a& X
  2840. ;==================================================
    ) ^; b% W. j# Z* l; W$ u* s. r/ z0 H
  2841. NmiProgram;Nmi中断处理6 N. v* D& @  ]
  2842. PHA/ {0 q" a8 ?- |$ |6 }' n
  2843. TXA9 }8 `: C: h6 Y- Z, m
  2844. PHA
    3 i3 z$ O# A( N6 H
  2845. TYA
    $ S9 T4 T3 ^6 Z, T% U* r! e
  2846. PHA0 ~8 g6 d4 q4 a  F, N& K! V. S; ^

  2847. ; R  }4 J; o1 V+ l# }
  2848. ;读取清除Vblank标志, 防止重复进入: o0 @& O6 p3 z) U8 D1 ~
  2849. BIT PPU_STATUS9 ~5 @( [# q4 ^4 h/ u. Q8 W

  2850. . k: \9 j9 p# J: ]3 H/ o  J' l' g* t
  2851. ;切换主程序bank5 r2 O3 X% R- B3 V7 G
  2852. JSR Switch_Main_Bank
    , j8 Q0 {6 c" Y6 W+ q

  2853. : C" a' s- m2 O  u3 s
  2854. ;Nmi处理/ M5 r( `/ o$ b7 b$ `% L" A4 D
  2855. JSR NmiProcess
    . E8 R7 d% r0 k* m
  2856. # ]3 H; Q* @' J7 }
  2857. Nmi_Proc_End
    / i9 U3 U/ \$ i+ S1 a7 P* z
  2858. PLA( t+ A6 [. K9 u  X  {
  2859. TAY- Z: Q% a4 e+ i( V' M: S
  2860. PLA0 i* M: @1 ~8 [8 T
  2861. TAX' z+ X* y7 O- x4 N' f9 v' m' j
  2862. PLA
    # _) t; Y" A2 q
  2863. RTI' r- j( @+ f1 K1 Z' a! g# G
  2864. ( T, Z0 h$ W4 E( ]- {% j$ A* e
  2865. ;==================================================
    6 m' w1 Z# G+ x3 S' n2 [* n
  2866. ResetProgram;重置中断处理/ S, p1 Z2 N+ l: \/ T
  2867. SEI% Q3 i- j$ f4 L0 g- Z# L
  2868. CLD
    9 x1 \+ P  Z+ y; z* w) _6 d# W
  2869. LDA #$00! O, u7 a' |# [
  2870. STA PPU_CTRL
    " A5 z/ X* b( I4 D
  2871. STA PPU_MASK) r3 U( C0 V; {# ?

  2872. 7 W( Z, z3 T' e7 X  J, c
  2873. ;切换主程序bank
    % d* g3 K  @5 }
  2874. JSR Switch_Main_Bank
    : o6 R3 ^& K  F0 Z, \

  2875. # i. K% G$ s2 B0 Q) i
  2876. ;程序处理开始1 T& o8 N1 g0 C; G
  2877. JMP ProgramBegin- ^( _; Z+ S  P5 I1 E- _
  2878. 9 `( ~3 L1 [0 Z
  2879. ;==================================================' O6 p# ?; q, M# B1 s
  2880. IrqProgram;Irq中断处理3 F2 @' f. T, i* P; c
  2881. PHA0 Z' Q& D' k. P% s" U6 @8 R
  2882. TXA
    0 h) M  ?5 Q& V3 H0 n% W0 [/ ?0 ~
  2883. PHA3 {! L( U2 y1 ~+ E% N1 ]
  2884. TYA& G0 i3 A& ?. D( }* m5 f- o
  2885. PHA. ]5 ]4 `$ ~$ u0 i) @

  2886. ) v" ^4 W. y3 E" Z6 ^5 w
  2887. ;关闭IRQ
    ) u9 ?- p1 c! R- m% i; T+ H
  2888. STA MMC3_IRQ_DISABLE
    , [) n- Q) O$ O

  2889. ) h2 s) ^# X: l% G8 {* P' C
  2890. ;允许下个IRQ触发$ S8 t3 V2 ^; C" c/ y
  2891. STA MMC3_IRQ_ENABLE+ `- Y1 ?9 h" ~% M1 Z; y

  2892. 8 ]4 k4 v* v. H
  2893. .IF IRQ_SUBPROCESS_JMP
    9 n0 A- j5 o1 y1 C

  2894.   R6 i  B6 f$ o! z
  2895. ;执行IRQ过程/ U% V( q, Z" W/ U! z
  2896. LDA <Data_L8 `4 C5 Y( C* A/ P, O2 k
  2897. PHA# ~: u* T+ ~# \& }# i
  2898. LDA <Data_H/ L2 j2 i; }% U( Q* q
  2899. PHA
    $ h0 f4 G1 C& q4 c& Z' a6 ^
  2900. LDA <IRQ_Process_Index
    ! H# r. y/ N& b4 R$ K0 G
  2901. ASL A1 |6 Q. S# u5 I
  2902. TAY
    1 R' m, A9 M4 s  ^3 o+ t
  2903. LDA IrqProcessAddr,Y  Z' Z4 p* g$ i
  2904. STA <Data_L/ p+ \& @# ~& `' s4 A( e& J$ Y
  2905. INY
    ' Y3 x# H2 @# ~5 U
  2906. LDA IrqProcessAddr,Y
    ; t/ f- |2 h9 C6 w1 S
  2907. STA <Data_H6 o/ b  I, g, p) n( C& }% f
  2908. JMP [Data_L]/ r, \9 P" [  w1 K6 W$ I+ S5 A
  2909. % A6 I4 ]1 f8 p2 q$ X5 ^$ ]% E
  2910. .ELSE
    8 f  P! p% z6 v6 M1 W5 \
  2911. ) B1 w; ]2 a" _5 e1 b# x
  2912. JSR IRQ_Process4 o. U, x: h; X/ E/ P& D, }  a

  2913. 5 ?$ \& b$ t! A3 e' I
  2914. .ENDIF& h2 X' u" u& z2 [

  2915. , h# T) f: Y% a5 c
  2916. IrqProgramEnd
    7 q3 S1 \. n1 W3 H5 D- U, i0 W
  2917. .IF IRQ_SUBPROCESS_JMP
    4 d. K7 T, W/ x7 m0 _
  2918. PLA* j, q2 ~& L  x; z# F6 V( i  g  N; x
  2919. STA <Data_H0 {4 `5 s# y, {9 g+ z. X
  2920. PLA
    ( e% C; J( ^" G* o  L$ @, a
  2921. STA <Data_L
      G9 n8 ^+ n% ~& k: B% Q
  2922. .ENDIF
    : l; M+ ^" m2 }0 T" Y  y3 J7 ?
  2923. PLA! L  x! W/ Y5 j% @3 x- r
  2924. TAY/ ]' e/ ]% Z, Q: J; `/ |1 f
  2925. PLA/ g- m: B5 y3 G6 y; X
  2926. TAX# ~3 f& ^  r* {. n: j! j
  2927. PLA
    ! J3 z: X1 @* S% c$ C
  2928. RTI
    9 w2 j5 A" Y$ R3 T1 K8 G8 r: g: l5 H) @
  2929. 2 M1 l8 @0 `6 X# K+ `& V& V9 @
  2930. .ORG $FFFA+ N& L) v" E7 R7 e
  2931. .WORD NmiProgram+ ^& E. G- K8 S: X7 c  x& Y" o
  2932. .WORD ResetProgram9 ^" K* K/ C6 ^! {
  2933. .WORD IrqProgram$ I" j: `2 E: l3 ^& p# X+ }1 u% ~  M
  2934. 2 z# q& c' a: \$ t
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    2 Q1 u- T. R4 M
  2936. .IF SOUND_BAR_SHOW_ENABLE
    9 a+ K# ]- E2 v2 K

  2937. 2 A7 @9 ?0 z* u+ f( c3 j. i
  2938. .ORG $FE00
    4 H# N8 }5 _; i8 X, p6 a% |" N- N$ W
  2939. PHA
    3 z6 n8 a2 R; f1 `6 ~) m
  2940. STY $07BA
      T0 s8 W. E% e9 j
  2941. LDA #$8D
    ) S0 y: H2 u8 C" c
  2942. STA $07BC
    6 N7 G2 D6 I: Q: m3 ?2 z' _
  2943. TYA
    ) ^) @% O( A/ C9 P5 [( C0 F
  2944. CLC
    , y8 o1 w0 j3 s( O8 n% e
  2945. ADC #LOW(Sound_Bar)
    , c/ w7 @' h5 M. V
  2946. STA $07BD& |2 R% T6 u2 c- Q8 U4 v
  2947. LDA #HIGH(Sound_Bar)
    0 s' s$ D: c% |5 A3 I
  2948. STA $07BE
    * G- ]  ^1 I8 k1 `. F; T
  2949. LDA #$60
    8 w8 L, ~" O& @1 T9 F$ a- T
  2950. STA $07BF
    8 h- U9 w. F9 _8 P
  2951. PLA
    % s3 C1 ]$ N0 U8 M. O2 C% }9 X
  2952. RTS! c; X5 g3 @% s. j
  2953. ' ~, X0 Z; ~, S4 K& w0 l
  2954. .ORG $FE200 N# F+ w  @' u; r( `
  2955. STA $07BA" e7 G% ?2 Q& H. I1 p
  2956. CLC: h4 ?6 k& w5 F& `
  2957. ADC #LOW(Sound_Bar)7 ]6 O" d: ^5 k, P; k/ h% t
  2958. STA $07BD, H# ?5 K* e) T" D: L5 {6 Z
  2959. LDA #$8D
    . o( g( }, t* N& b
  2960. STA $07BC8 Q2 D7 {' l  n6 [$ K
  2961. LDA #HIGH(Sound_Bar)
    6 o( d2 H! {/ Y  _5 E& n
  2962. STA $07BE( [! r7 N5 Y/ U+ z
  2963. LDA #$604 `& j# \6 B& z5 w) m! B
  2964. STA $07BF. Y; x4 g. w6 Z, o
  2965. RTS2 O. D( k: W; M: P( V) U

  2966. / H, ?) E# Q, g0 G7 _1 [/ \. n
  2967. .ORG $FE40' b3 I: d" ]* |$ c6 Y
  2968. PHA: y$ g. t3 z" Y
  2969. STY $07F1& v0 n1 u$ P% Q
  2970. LDA #$8D% k2 k: ?7 {1 Z5 V6 F" q
  2971. STA $07F3
    6 m+ X3 k0 O& ^4 ]
  2972. TYA* A1 Q) [$ Y# s, a* z  u
  2973. CLC
    5 s1 `( n; p' f3 h/ h; U: o
  2974. ADC #LOW(Sound_Bar)/ B5 {, `: n8 y- V. E; j1 p
  2975. STA $07F4
    3 {6 J) ~# w# M+ n9 }
  2976. LDA #HIGH(Sound_Bar)" U& U: P) n) Y0 J
  2977. STA $07F5! @" C6 F- Z( ^
  2978. LDA #$60
    1 Z3 E% y7 l$ a3 Z: {
  2979. STA $07F63 r& }% j% A: w7 J
  2980. PLA
    . u' o* E! K: I% u& b" a
  2981. RTS2 O. V; `% ^3 d/ G7 o% w! l

  2982. ( F, _& E% Z7 d5 F3 `7 F, q2 s
  2983. .ORG $FE60- E/ z# H% a0 g0 v* S
  2984. STA $07F1
    ) t; ]8 }/ s* R, X8 {; W3 c0 k, p
  2985. CLC; {4 |; b; `- f4 ^6 ?
  2986. ADC #LOW(Sound_Bar)
    & k1 E! ]( {- s( j% H
  2987. STA $07F4& G; o1 i7 D3 L% E4 |5 d
  2988. LDA #$8D% E$ n; d, [+ E: `) Z; {) M1 b
  2989. STA $07F37 V6 v# u, b9 J) @7 C
  2990. LDA #HIGH(Sound_Bar)0 U0 M1 ^: l" [& n' ]
  2991. STA $07F5
    ) e4 u/ b1 w  T: ^& u
  2992. LDA #$60* Q, i& F1 [( y" V( K3 G
  2993. STA $07F62 x$ i2 r( _) h9 r
  2994. RTS
    ! ?9 k. V6 g4 s" V2 U- m. s
  2995. . j/ H" R% H$ n: x; m2 l& j
  2996. .ORG $FF40
    - |3 g6 v, y0 C* G; t' W
  2997. STA $4000( O, S+ O# R' n6 u
  2998. STA Sound_Bar + $00  k4 X8 c8 _) n% M" ^6 W0 ]3 O6 r% h, K
  2999. RTS( t5 i( |8 o3 M4 a8 P* k$ D' I# w+ u
  3000. % w/ W0 F% W( G1 L- T8 |& ?/ Q: c0 s
  3001. .ORG $FF48) B+ v7 m, _" E" N/ j. w& o0 R4 {
  3002. STA $4004# s( Y. @2 E7 Z0 ]  f2 S/ e
  3003. STA Sound_Bar + $04( B. `# E  ~8 A+ f
  3004. RTS
    " q6 @3 W" g" K# r/ v* S
  3005. 5 Q: o  d: {5 ?3 O/ |: F
  3006. .ORG $FF502 a, s5 U, P! C
  3007. STA $4008
    . q& I9 t) u# B" m) }
  3008. STA Sound_Bar + $08) ?2 L3 H/ ~1 }, h" Y0 h; b) R
  3009. RTS
    ; @  S5 f+ K' c  b8 _. ]7 n
  3010. ; ]  _) `% x. [' V8 y& F, d
  3011. .ORG $FF58' L* T5 k- l# ~
  3012. STA $400C
      y" k& q  p, L" d4 m; |' R
  3013. STA Sound_Bar + $0C$ f" C6 j" S/ u* |
  3014. RTS3 N; g8 a6 ]9 `. g! j1 V: D

  3015. ; P6 [) h( E; ]6 g! ^+ i
  3016. .ORG $FF60
    ! s( e- ~; U5 Q+ M, P, e3 j! J
  3017. STX $4000
    8 Q2 @. ]5 q& R& f, s% A
  3018. STX Sound_Bar + $00
    % W" \- ~" _0 w( R) g6 ~6 L, z4 H
  3019. RTS
    ' b6 s& q* W+ r7 Q9 Y# q  V2 q

  3020. % q/ P. `) C, f' y+ l
  3021. .ORG $FF68
    6 c: a: D/ N+ X. u4 k7 Z3 a4 X. U
  3022. STX $4004& Q: b- u2 Z- F! [9 E3 v
  3023. STX Sound_Bar + $044 a0 v* w# J1 k9 s) R. y
  3024. RTS7 n: B# T. A9 N  H& h
  3025. 5 ^9 P+ V0 t4 @$ L2 a
  3026. .ORG $FF70
    7 _3 m. ]. W! C6 _' i4 J
  3027. STX $4008
    - q; a5 `) ~% \: Z4 ~) a; a+ [
  3028. STX Sound_Bar + $08
    5 b: p. }9 F: T
  3029. RTS% x' ^, n2 ]3 Y, r8 d6 b% }
  3030. , j! k. Z3 a. o! K0 k
  3031. .ORG $FF78
    + I% M$ E  ~8 U- A5 Z4 S
  3032. STX $400C3 q. S+ O: }! r  B, ]; Z
  3033. STX Sound_Bar + $0C
    1 a6 b: U. f, E5 o4 d$ ?
  3034. RTS, F( P. a! Y5 n' p

  3035. 9 F7 I, p, O: |8 M! n
  3036. .ORG $FF807 c( x' ^# F9 Q. w# ]" s4 b/ r  g
  3037. STY $40000 b, u) y4 \* t' u
  3038. STY Sound_Bar + $00
    3 t2 c9 _, [7 G! A+ u1 u2 ]
  3039. RTS
    - l( k4 X; A4 _) k4 U

  3040. & Z5 z( A% m: J6 K+ h5 _
  3041. .ORG $FF88
    0 ~/ ]& m& y8 T; e, P; [
  3042. STY $4004
    6 e; {; {. Q/ y( ~* r6 K
  3043. STY Sound_Bar + $043 L, Q8 q* n* x) Q
  3044. RTS
    # k6 T" |3 N1 r! g, I, q
  3045. / D! E: J$ I6 s3 t1 I) H
  3046. .ORG $FF90
    8 F2 D1 d4 x' d. o; t; i/ s% c7 {
  3047. STY $4008
    . z1 w* T6 q" A! c' O
  3048. STY Sound_Bar + $080 P8 K+ d: {* h: b/ ]; O' ]: k# ~$ Q
  3049. RTS! K- C$ t2 T5 Y5 f

  3050. # ~$ X0 R; \+ \  w3 w% F: R# L: C
  3051. .ORG $FF98
    % E& P2 N5 D2 s" y( E
  3052. STY $400C4 j: y3 L) _2 P# o; `1 s
  3053. STY Sound_Bar + $0C4 C  H4 \: Y$ P$ V! S
  3054. RTS3 N" |4 F1 F8 K. z6 z& t

  3055. + a* ^7 z! J) I+ H7 s
  3056. .ORG $FFA0
    & |+ u* [0 N& L9 V2 M# U0 c
  3057. STA $4000,X& {  c0 }& f3 |  j
  3058. STA Sound_Bar + $00,X& x, p9 K& a4 K2 L
  3059. RTS
    9 d: z1 \1 [6 N" j1 d

  3060. ( h) R; J" G" ?- Y4 v# H. W
  3061. .ORG $FFA8+ n0 i! _. ?- I: J" _; j8 D0 C% U
  3062. STA $4000,Y
    ! [1 f  n" ^" |
  3063. STA Sound_Bar + $00,Y5 Z) a5 k* r7 q$ A# F
  3064. RTS
      A; c; z& ^, b$ {5 }
  3065. # o  E- C/ y/ S0 _5 N  L; a) q1 Z
  3066. .ORG $FFB0# K; N: O4 m; r$ B4 [4 E
  3067. STA $4004,X/ _7 S# l- ~0 \# \, }
  3068. STA Sound_Bar + $04,X
    ) P' L: O5 l8 e/ y9 {. E0 E( ^
  3069. RTS5 t/ e0 h& I9 }4 t

  3070. % {. q0 v5 z+ X0 K/ L
  3071. .ORG $FFB86 l; \9 s6 C; U  o
  3072. STA $4004,Y
    ) Q8 Y) H% E. Z+ o0 |0 k
  3073. STA Sound_Bar + $04,Y
    ! s4 |- t/ O" g: h
  3074. RTS& ?. E/ s4 m7 k$ W! M0 [5 D4 E
  3075. * t9 w; r) L+ x. H
  3076. .ORG $FFC0
    1 C8 [6 z6 v4 A" W; b: a
  3077. STA $4008,X
    . P" r' U( }5 b* R9 e
  3078. STA Sound_Bar + $08,X
    " N7 ?# ^8 y* F9 ]) Q
  3079. RTS7 L# d, ^, F! ]' D' [& O

  3080. * Q! K% a* g1 G/ d9 a
  3081. .ORG $FFC87 w- N/ n. l, A" J
  3082. STA $4008,Y
    " T% h# S. d4 F0 c
  3083. STA Sound_Bar + $08,Y  l; S3 i8 Y8 x" o+ ?# d
  3084. RTS
    3 `" d$ V0 ]) [& w& I- f& V
  3085. ) m: {1 A/ i' \* U! Y# T4 @
  3086. .ORG $FFD08 A# o5 J& x' G+ f3 C- g7 \+ p
  3087. STA $400C,X$ @. C0 s0 P" P. d7 ~9 C
  3088. STA Sound_Bar + $0C,X9 {; J' c9 X6 Q% v$ K2 {- B0 c
  3089. RTS0 D* m5 R+ `3 c6 D8 P/ h, f6 A
  3090. 5 Z& a6 C' S: t( [4 x. M/ c7 M% l
  3091. .ORG $FFD8
    - k  z9 f9 U- ]) A, i+ S# P) g# ~
  3092. STA $400C,Y
    . d( [) @  \1 N6 K- E2 V
  3093. STA Sound_Bar + $0C,Y
    + U8 c' S5 i, ^6 l1 G
  3094. RTS" G/ U6 t: h7 [
  3095. . ~9 M+ w( o  X: L+ x5 I. W
  3096. .ENDIF
    2 p3 L# a, X" {$ B1 c  O# L. X9 B
复制代码
0 h" f+ |8 X3 y5 a
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3115 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 05:59 , Processed in 1.115234 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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