EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
2 F' h' D0 m1 s# _4 @& F/ J
! V2 h  K' U5 V# o[FC][音乐12 IN 1]
0 T( x) a1 a$ K& d时间: 2023.07.23  r2 E, a4 ~# n2 z, `
作者: FlameCyclone5 b- T' m$ I0 Z2 F6 N1 @
8 g. [$ A4 N! o! w
收录音乐内容:
" x8 [" s" _" n) K0 I1.Raf世界
2 e1 d- H0 A9 Q: M* A# b2.最终任务7 h; P( H' Q: c5 T2 y: r
3.赤影战士- R3 E! l; Q; n( v( I
4.双截龙1 O+ ~1 |9 E6 J  w* f% }
5.双截龙22 \* x; n+ o! S
6.双截龙3& G' M/ C* @6 h# N
7.洛克人
! N. N7 W0 x4 e: q0 `2 V; |, O2 x$ t8.洛克人2
" E* C  t1 M5 n+ o2 G9.洛克人3
5 Q1 B, E, s( X1 w9 u8 j0 |10.洛克人4
+ ^# ~- M' F) M11.洛克人5
( u% q7 K6 R; Z) V( m" \12.洛克人6
/ {+ ^4 c5 O6 H9 @( l! R. ^2 j0 Q+ w3 Q: y# G# ~  J6 M  m
操作:3 Q, C+ H0 r0 P2 K3 H5 `
上键:         上一个专辑
) B* w% r" R; D1 a1 G% e0 u& |: H7 t下键:         下一个专辑, f% u: A+ y+ ]( G1 f
左键:         上一曲( Y; Q. x1 C9 O1 |6 d0 U
右键:         下一曲6 f$ V- h# b9 C8 }
B/A键:        前10曲/后10曲+ [7 w; r/ |- k
选择键:       下一页
4 B  z5 [- G' g- L开始键:       停止/播放
3 B# @% }' e& a% c% w) z( u
  Z' e& }5 }% c1 ~# W, }, w& fhttp://flamecyclone.ysepan.com/* w, o9 `+ e. J; `1 Z  f  h

, Q8 _' j8 B, j" i
2 ^1 W# [' _9 S3 ^: {! l) }
' f0 f: o! t5 r9 f3 B# O- G8 E- X
  1. ;[FC音乐][播放器模板]" h) T; S6 Y5 {+ l3 {9 t6 V* H# L( V2 m
  2. ;FlameCyclone 20230710# M# I% t6 Y1 g9 o' `5 q* x

  3. 8 t+ Z! a: `6 R- x# Q" b: R1 E
  4. ;文件头0 t; K2 j: E8 M' W* E; P
  5. ;======================================================================
    3 g* Q& T4 g8 H0 h3 _# q0 W0 i
  6. .INESPRG 16                                             ;16KB PRG 数量: B5 d) Z: D9 _7 U
  7. .INESCHR 1                                               ;8KB CHR 数量' x) j  s& }& O* d5 m& C
  8. .INESMAP 4                                                   ;mapper 4
    ; I" G* c( C* A: `( o
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直! d% k' b( f. O; B0 p% p; E$ c

  10. . T5 L) G" E2 x- R: @1 ^
  11. ;==================================================7 d3 ~8 u3 U) Q& @
  12. SOUND_BAR_SHOW_ENABLE       = 1
    / m( n7 T/ y1 G7 |1 A0 q
  13. ;==================================================
    - ~% Z- c2 `/ y7 `# e, b
  14. BANK_DATA_MASK              = $1F! `2 ~, S* r. M) B
  15. CHR_RAM_ENABLE              = 0
    9 D6 ^0 X& T% l) E0 f
  16. IRQ_SCANLINE                = 136' i8 _* c- `9 m% z3 Z
  17. ;==================================================
      U( }9 k5 y; ]
  18. SOUND_DATA_BANK_00          = $00* i) W5 x) E- H2 R. `: R8 b" m
  19. SOUND_DATA_BANK_01          = $01
    9 s8 l2 R" r: U% ?0 Q* W% J
  20. SOUND_DATA_BANK_02          = $02
    " ^% p) a- I2 o3 j- Y
  21. SOUND_DATA_BANK_03          = $03
    3 @+ M9 ?. b3 `  ^- }
  22. SOUND_DATA_BANK_04          = $048 l8 z' H% T' f; `2 j
  23. SOUND_DATA_BANK_05          = $050 a+ p( d9 x, m* b* o/ G/ s; e
  24. SOUND_DATA_BANK_06          = $064 g6 `* c/ G# q8 X3 O3 Y
  25. SOUND_DATA_BANK_07          = $07
    5 O% i4 S, m8 S
  26. SOUND_DATA_BANK_08          = $08; q; B  g  ?% d5 A, I9 k
  27. SOUND_DATA_BANK_09          = $09
    8 l! I9 u8 D7 d8 S6 U* x" d& w" E
  28. SOUND_DATA_BANK_0A          = $0A* z% i+ g8 W' a: z& n7 S+ S  U; _
  29. SOUND_DATA_BANK_0B          = $0B0 {, c& L, {4 m) w2 x1 S+ z
  30. SOUND_DATA_BANK_0C          = $0C
    . P% W7 `8 t# I5 b. i0 B1 K; e" a
  31. SOUND_DATA_BANK_0D          = $0D
    ; b- r  @6 u3 t
  32. SOUND_DATA_BANK_0E          = $0E
    ; y3 P# i' h/ {) Y/ ?# O: C  ?$ X$ @
  33. SOUND_DATA_BANK_0F          = $0F
    . i/ G) C8 M, x" W* s3 Q
  34. + D, u9 d. B4 n, e0 i) F' G
  35. SOUND_DATA_BANK_10          = $10  ?: G& \/ j# _& J% i# |& L
  36. SOUND_DATA_BANK_11          = $11
    ! W' K. |" }7 x/ B
  37. SOUND_DATA_BANK_12          = $12
    # h5 M' N1 c& \* ]
  38. SOUND_DATA_BANK_13          = $131 [  o9 q8 c) l  h; i
  39. SOUND_DATA_BANK_14          = $14' N0 t9 m& X( a# \- b
  40. SOUND_DATA_BANK_15          = $15
    " R8 |6 {3 a, r4 U+ Z" S
  41. SOUND_DATA_BANK_16          = $16. _# D0 ^3 }+ s( i' m$ b5 D7 V
  42. SOUND_DATA_BANK_17          = $17- P# F) @7 Q9 S# A+ Z
  43. SOUND_DATA_BANK_18          = $18# X1 d$ Q0 ]7 u
  44. SOUND_DATA_BANK_19          = $19
    5 Y% V1 e* \& u5 D: R* e5 Q) U: `
  45. SOUND_DATA_BANK_1A          = $1A. g- j1 O" G" L$ j  g, n0 l2 N8 S
  46. SOUND_DATA_BANK_1B          = $1B# Z' y1 ^7 `+ F6 t5 ^% ^
  47. SOUND_DATA_BANK_1C          = $1C0 s1 T1 c2 A2 F; S8 ]8 ?  c/ u% I
  48. SOUND_DATA_BANK_1D          = $1D
    : P$ ]  N1 D, T- D! _# x* C
  49. ; E2 y; ^3 t2 x" I
  50. SOUND_DATA_BANK_C000        = $1E" S/ U3 M0 {; c+ U3 }
  51. SOUND_DATA_BANK_E000        = $1F, a5 N' X0 x5 }+ g' d' u" [) P
  52. ;-------------------------------------------------/ g/ [* j  `( U0 O
  53. CHR_DATA_BANK               = $20+ }" _; M0 k1 A! v7 K) q+ Z
  54. CHR_DATA_ADDR               = $A000
    , _1 a  U& C6 [2 ~9 Y1 c* v
  55. ;-------------------------------------------------4 a: w! D! C& v% P4 T6 ~) Z" N
  56. PROGRAM_BANK                = $00
    & T3 ~* R  T+ ~) {" ?* r7 I9 N
  57. PROGRAM_ADDR                = $8000
    4 A, g' k' Y* w% y2 v' m! x9 o" w
  58. ;-------------------------------------------------
    1 ]; x  S% U' ?2 z( ^$ F( |$ n
  59. RESET_BANK                  = $1F9 N5 D" ^, S# l$ ^4 h6 ?
  60. RESET_ADDR                  = $FD00' T2 Y' S. g& W! ~0 o* g
  61. 5 A" n& M1 K4 M4 y6 p
  62. ;==================================================! C% {+ P1 q2 k! T& e% \0 I
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数$ j: t- d; _3 G8 U
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引6 p$ W8 x0 e' K( I3 U
  65. PAGE_SIZE           = 5                     ;每页节目数
    5 z% e8 G* [2 `  m/ u

  66. 5 ]6 F3 a# ?; s; Y9 N7 h5 |
  67. ;==================================================
    1 \  L% {$ n' v' [1 c& z2 ~
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除2 X* l2 T. R, [/ e$ w) r1 D, ~
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    & B- p4 }: `( u5 ~4 N
  70. .ELSE
    ! m) j% S! B* A* r( S
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数$ @5 Z  o+ c4 k5 {1 o" P: f: V
  72. .ENDIF
    / ~: b# T$ A/ @! i
  73. ) H' ]6 ^, S. R- h7 b
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    6 v( U0 p0 A- }* o5 m" I4 ~

  75. 3 y/ y* d& T1 b( q3 P9 X
  76. ;==================================================
      C: J- T; Z+ {
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    # T7 l6 ^' M2 O
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 26 r5 x0 d% P) y* E% n
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    ; a" H$ E7 f' ^9 K4 i3 ?9 J, l
  80. ;==================================================
    - ^: C8 }3 z& d( A8 h( }* a$ g( o* A  @
  81. Caption_Text_Pos    = $204D ;标题文本位置
    " z* K& ]# E( Z
  82. Author_Text_Pos     = $2324 ;作者文本位置
    ! G" ~) z( `; k
  83. Date_Text_Pos       = $236B ;日期文本位置0 X  D! F+ n6 {5 ^
  84. ;------------------------------
    1 \: P7 J; n0 B' w4 \, {. O
  85. ;------------------------------
    ! b/ m! ]! k, Z3 d1 v- i6 x
  86. .IF SOUND_BAR_SHOW_ENABLE/ h$ C" a0 J$ [) ?0 h0 z+ u

  87. ' r- Y2 O5 j( x, @
  88. Play_Index_Pos      = $2273 ;当前曲目位置! H8 m( J( y8 U% ^# U+ }; p  r4 F
  89. Play_Time_Pos       = $22B3 ;播放时间位置8 m; j& d' u" V6 j1 _
  90. Play_State_Pos      = $22F3 ;播放状态位置
    & Z+ j# w( ]5 P/ U! @5 ~: F+ o

  91. ' G* p  Y: D% s0 Z/ |
  92. .ELSE6 p5 a; f- ?8 j8 a3 U
  93. # t8 Q1 X2 I0 Y9 U: M8 z
  94. Play_Index_Pos      = $226C ;当前曲目位置
    * n: I' \/ n4 M  S
  95. Play_Time_Pos       = $22AC ;播放时间位置
    ( c5 y* {/ o, z; d; s0 M5 K: U. S
  96. Play_State_Pos      = $22EC ;播放状态位置
    1 r" Z3 Z* y  u- H) B' {+ y
  97. , O" ^2 p6 z* ~* k$ a
  98. .ENDIF
    # \  z- y  w2 ]5 P4 Z# p
  99. ;------------------------------
    ' K$ U) m4 \. Q8 T: k. @. B( H$ l" h
  100. Track_Name_Pos      = $222B ;曲目文本位置/ W/ ]7 [9 z$ t
  101. ;Track_Name_Pos      = $00 ;曲目文本位置# `8 P: \& M9 [
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    8 {9 h5 W9 a, \( j0 B
  103. Sound_Bar_Pos       = $2269 ;音乐条位置& Z* Y8 k! k& U$ g$ z5 ]
  104. ;==================================================
    2 C$ m; m) L* I, d
  105. Scroll_X = $002 }6 X  j( X% K. y3 k/ D) j
  106. Scroll_Y = $00
    + h# W9 m% V' A, k
  107. ;==================================================
    : G* k; u5 x9 B" y1 `$ @1 c
  108. Sound_Ram_Addr_1       = $0100
    5 d! Z, P" z; I$ X3 U! e
  109. Sound_Ram_Addr_1_Size  = $80
    8 U" a; _) j2 r& y+ H
  110. Sound_Ram_Addr_2       = $0090$ s: h1 ^5 E) Y5 T5 f$ x
  111. Sound_Ram_Addr_2_Size  = $70! W& b# j* _$ b
  112. Sound_Ram_Addr_3       = $0700
    0 [" @0 c  L9 [8 o3 n8 \# i% b$ s
  113. Sound_Ram_Addr_3_Size  = $00
    0 G1 B( T2 t0 |6 q$ {
  114. Sound_Ram_Addr_4       = $0400
    ' ?% w* b. r* h2 [
  115. Sound_Ram_Addr_4_Size  = $00
    5 Y+ J7 R: P+ n
  116. Sound_Ram_Addr_5       = $0500: F$ V& g" a2 D6 z3 ~) r
  117. Sound_Ram_Addr_5_Size  = $40
    ) I2 L1 |, X/ v, G0 ~$ F6 s

  118. 6 m$ C3 j1 Z7 M- u8 ?7 [# A
  119. OAM_TEMP_ADDR   = $0300" G2 E7 y% L, J. C! j
  120. - S1 \/ U2 X( @7 h+ g+ B1 Y
  121. ;==================================================) S" ^: A# X' z- c+ C1 S
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    1 I0 {6 p! H* j" Q2 S4 E( j+ y
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    * D" [7 d3 `& D! ?
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位* t3 h1 U9 M9 A$ _0 g' n: G
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    % N* ?+ a8 X& @) s
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    1 }$ u% H1 {5 M; S! Z1 ]
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 - d4 M+ U- B* Q3 _
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    / L' X  Y( t& V9 k& s+ b- B
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    0 N* ?% d5 ]. u; Q- P: b! t0 X
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    ) t& k6 ]7 }9 u( n0 P
  131. APU_STATUS              =   $4015   ;声音通道切换
      l2 X/ V) D3 U* i# h2 W; q0 M  G! @
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    / n$ e3 V0 |" j  _$ @; z3 Y" N/ P
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通& H$ u0 N: X" j$ Y  X" |9 _5 F/ S/ p
  134. ;==================================================
    5 }! Y6 [2 V! O* H4 N
  135. MMC3_BANK_CTRL          =   $8000" A  P1 B" [4 A1 L+ p; q- E
  136. MMC3_BANK_DATA          =   $8001% |; Y% d. D, p8 d1 v
  137. MMC3_MIRRORING          =   $A000; f; K+ J1 W  o1 ^
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    5 K; ~' [3 m8 h
  139. MMC3_IRQ_LATCH          =   $C000' g: y- P0 k- \( ^; F
  140. MMC3_IRQ_RELOAD         =   $C001' N+ H7 Q- U: Q" x/ B
  141. MMC3_IRQ_DISABLE        =   $E000% H% i2 y0 `" _- w; x6 \
  142. MMC3_IRQ_ENABLE         =   $E001
    3 B, E4 V6 N% H: {% A

  143. 0 q" E# t2 [- O+ p- C$ \- M
  144. ;==================================================
    * u& C) J" ~8 j
  145. PPU_Addr        = $02008 m% g2 ~+ I) V2 \7 v% g# M. ^
  146. Palette_Addr    = $02C0% W, u8 a% h" S% X2 T
  147. Sound_Bar       = PPU_Addr+$E0
    5 O, L8 R% {7 Z% z# ]8 j
  148. ;==================================================& j! e3 X1 U+ g
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D8 s1 w, C, n  `7 g2 A
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11( p% G! n1 T5 Q$ A" T/ B* _
  151. PALETTE_UPDATE_MAX      = $2C
    6 ~8 u& \+ g% ]5 s
  152. PALETTE_UPDATE_MIN      = $21$ V2 z" m, S5 ^6 z( `
  153. PALETTE_UPDATE_INTERVAL = 60
    - j0 `) U9 X% ^; m! {
  154. ;==================================================
    ) d% ~* \1 t4 y! c
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    0 l) U. o/ C$ U  F# t; h
  156. PPU_Cur             = Sound_Bar_Cnt+$02  i1 T% k7 c8 ]
  157. PPU_Addr_H          = PPU_Cur+$030 o! s- F; G: }1 i
  158. PPU_Addr_L          = PPU_Addr_H+$04
    2 G$ d  {8 D; o7 |8 |8 O% z
  159. Screen_Ctrl         = PPU_Addr_L+$01/ _, w. \0 {$ I2 J5 N+ c  D
  160. Screen_State        = Screen_Ctrl+$01. |1 T+ A& H" {. u  K; w
  161. ;==================================================
    7 q4 I0 q) }7 d4 g
  162. Use_Ram_Begin       = $50
    ; B# t& L% q' X
  163. ;==================================================1 K' @' O9 X8 t
  164. JSR_Addr_Op         = Use_Ram_Begin
    1 U9 B/ y4 M- @
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    2 f) f& V6 z4 w) M$ t, c
  166. JSR_Addr_H          = JSR_Addr_L + $01
    . G7 ]% |! `6 H( y
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    7 j, M/ n/ w3 f, M) W4 a
  168. Data_L              = JSR_Addr_Rts + $01
    9 I) X  B: e9 b- l+ l
  169. Data_H              = Data_L + $01
    8 F: c$ I, w! Q% ~% @- Z
  170. Data_Cnt            = Data_H + $01
    " u6 }) D! y  P( |6 L6 x
  171. Data_Buf            = Data_Cnt + $01
    # ~: J3 ?, _; I8 E* r" E
  172. Nmi_Time_Count      = Data_Buf + $01
    & W% z. Y" ?5 Q1 Q
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01. X. v1 X( y) n" `
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01' F/ x  W! e/ a

  175. . n. D2 _# B1 X6 Z0 r
  176. ;调色板刷新标志
    9 O' Y: A  n% f  V8 _9 S& T, }. |
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    - r: b+ M( u  N
  178. . J, y5 y  v  c3 h: q9 h: @
  179. ;当前帧文本写入禁用标志" |! G- k7 ~8 |
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
      F5 K/ t/ j9 h7 D1 I
  181. ! b" M) |5 |+ W5 f: H& d6 s
  182. ;==================================================' \1 g' H8 i  x7 i
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    . I2 t& l; O% d7 I8 e  f! u. I
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    # y& `$ B& l" Q) Y
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间5 _, p% Y% o$ A: o
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
      q5 @- ?) ]) `9 h* \" @
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间% t* s5 z6 f4 C! y# [
  188. ;==================================================
    6 S* K9 Q3 K2 Y7 D# {
  189. Key_Keep            = Text_Disable_Flag + 1! l% |, \" u9 }  I
  190. Key_Once            = Key_Keep + $01
    8 x: I' f3 }' r8 ~7 }
  191. Key_Kemp            = Key_Once + $012 ]0 q* O9 u6 P) m! L
  192. Key_Temp            = Key_Kemp + $01
    * Q# j# w" z% O/ G* P& d! E+ i( h
  193. Key_Getv            = Key_Temp + $01
    , i1 b0 ^2 {/ D' G
  194. ;==================================================5 k5 I* g1 _6 b+ f+ O$ J
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    ( i1 n  l2 `  ~/ D
  196. Music_Item_Last     = Music_Item_Cur + $01
    " s  L" i6 m9 h( f1 A1 K0 Z/ I
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集, [! w3 q- B/ |  j7 C( r& Q6 `6 U3 J
  198. Music_Cur           = Music_Total + $01  ;当前曲目  S( f2 m1 J/ S- G4 {
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目/ G% {3 `- N  J% T0 H5 I% \
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态" x8 X4 p# v  s. S* z6 l2 P, |
  201. ;==================================================: G% Q4 ~" b, a; {
  202. HEX_Data            = Music_Stop_State + $01
    2 P! C( t- K0 t9 q; h% X) N
  203. DEC_H               = HEX_Data + $01
    1 G* A) r# G! a0 X. E6 ^
  204. DEC_T               = DEC_H + $015 k) }. N# }0 k- ]
  205. DEC_L               = DEC_T + $01, W. v+ M6 U6 h: D
  206. ;==================================================+ o) H' D* F# K2 @0 V# B
  207. Time_S              = DEC_L + $012 _& R4 k2 R% x( f2 }5 c
  208. Time_M              = Time_S + $01
    5 A; a4 G: A) ~
  209. Time_H              = Time_M + $02
    0 Q3 c" u/ f, M2 t4 o# N
  210. Time_Cnt            = Time_H + $03  ~; N4 @) s# B6 J6 i
  211. 1 e. M  Y9 t) O- N. }+ f
  212. ;==================================================3 V; T- i$ \; i1 A
  213. Music_Bank_8000     = Time_Cnt + 1
    8 }* Q5 e/ r7 F
  214. Music_Bank_A000     = Music_Bank_8000 + 1. F( s. K/ C7 I$ [% H0 Z  B# C1 H+ J9 m
  215. ;==================================================
    ' F+ N4 j3 G' X+ c- Q! c" n( E; |
  216. Scroll_H            = Music_Bank_A000 + 1
    : K$ K, F0 {7 \' U. g% N. m+ ?
  217. Scroll_V            = Scroll_H + 1: R' Z* B, J! F, N
  218. IRQ_Process_Index   = Scroll_V + 1
    ; b; u" F" S( Q& d
  219. ;--------------------------------------------------2 Q* A+ P9 K8 E9 C! S3 a
  220. Page_Cur            = IRQ_Process_Index + $013 f4 x; A  i& X7 {* ?0 {1 @; c
  221. Page_Cur_Index      = Page_Cur + $01; s  K# I! d( G$ x8 G" G, C
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    5 ^# v+ h8 N2 d7 R
  223. Page_Last           = Page_Cur_Cnt + $015 t9 G1 X; @1 I6 }6 [; C2 ^7 P
  224. Page_Last_Index     = Page_Last + $01
    9 r4 N( _& L( H; w9 z
  225. Page_Last_Cnt       = Page_Last_Index + $01
    : Q8 N$ G; l# M) g$ O
  226. Use_Ram_End         = Page_Last_Cnt + $01
    % i) L2 n4 r* U# p7 k7 q
  227. ;======================================================================/ v: t8 C; ]& ~$ T8 N. T+ Y: Z
  228. ;音乐数据块. u- b) c$ y8 N- n& O& R2 O
  229. 3 m# m7 e4 S" I1 m- U0 ~7 G5 W
  230. .IF SOUND_BAR_SHOW_ENABLE% l9 B& M+ B  q) \+ o; B/ t
  231. & T" a+ W# H; v. D
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK" {  o, x/ p/ m- ?7 E( j3 A; d$ g
  233. .ORG $9000/ g, `7 w; P3 T' \# {$ b. h8 S* N
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"; l! B% b+ _3 Z: V

  235. / `& a( |  r1 c5 d$ J
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    1 x1 q) O" y* y" T/ ], l" r2 Y& a: ^
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"' B! V6 L+ \# Z% a
  238. & ]5 s- I/ s: @  C9 b  y; s! {. I
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    # B  o  H, }! S" T9 Y7 p
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    0 f. k, }9 }6 E3 @( L! `

  241. 7 E3 I& C5 P1 l+ S) B) @
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    , `8 ~+ v; T3 [2 c) A2 N+ L: ?' M
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    ; s$ }; ?$ E" m

  244. / {- a  v1 o" O! G" t
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    / \" s$ V; {& X7 Q% z1 _% G# i
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    7 u) ?$ {% y) y! Y7 _* q! O
  247. ' \3 W  O& _3 m' h, Q6 @
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK2 q' T9 B: D. @7 c0 u" L5 T3 q) p$ c
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"5 s9 n# J6 U- A

  250. 7 ]9 Z% H! W1 `
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    ! G4 |+ f6 O! Q. U; ?" Z
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"1 n! S, @+ [& u( e

  253. * d! S$ k2 E' Z8 a, x% h5 C+ g
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK0 Q& l9 s2 D) F2 L
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"& S6 j" u' A9 j3 w5 d" x8 v9 ]

  256. * v) ], u2 m# J/ A% ~9 u, n
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK0 t4 z; J- o/ j/ s$ J% ~$ d( m
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    / O6 B/ c) N4 A  t: n
  259. $ a  P3 v* [7 b
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK% L+ O" d1 b9 s2 i$ m
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"2 V9 B! R# x$ ~, T. k
  262. % U( b" E) ?# z! S0 ]) r
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK3 s* t1 |7 q: Q! Q; R! r5 |
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    ' S: L7 L& g. e( F

  265. 5 E" e/ z. V& Y7 T7 P. d+ d1 m
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    ; q% H% T' P: b
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"  n& J0 O+ y1 ]; n: t! N

  268. ' Y6 y: Z1 t. X) p" S8 ^6 r/ M9 Y
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    5 b% E$ e" s. o
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    4 U& s$ Z, ^  x$ S8 {  g
  271. : V" f8 I! L( D/ M
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    " ^- g. h+ I  u8 _0 p( h- R1 ?9 O
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    3 K" Y7 @' i& c9 b4 v# J
  274. 5 l# _/ x8 F/ A3 ^8 v" e
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
      R4 d! f, z3 m/ j/ T
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    : n) E0 i( C% B! o# J

  277. % o3 p* B) J7 @2 ]! [
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    6 H' Z+ A9 }3 D+ e1 J" R
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"7 b* k1 K; R  e: H8 w

  280. 7 z, ^! B2 c7 L) |2 Z
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    - L( s$ T- Y. {/ p. L
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"8 e, [9 b. O9 w" r
  283. - y( a  z, g0 A  v8 t' M
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK% f' i4 [2 H5 K
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"3 |1 P# t' d# {5 |( k* V7 S  v4 x1 k
  286. & ^6 S# t& ^8 l# A2 j
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK( J' f4 j+ ?3 H. j6 c) e
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    ; q" k& g1 j; B' o

  289. ' f: p  t) `% z
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK1 `5 q) Y0 A& ]2 y5 n4 U
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"* Z8 ~5 f2 s* y

  292. ) y. y* Z% g" i
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK' A0 Y+ E3 o- c' y- D* X
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"! V0 n6 J# Q1 c. r  ]

  295. 1 K* n, Q! c6 B- e3 I7 Y
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK* ?* q& n2 J; }0 k" s
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    % a0 G% x5 I3 h& k
  298. 8 b5 W0 k: C; \, {$ |$ b; X+ d
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    & j: R6 q/ v& |1 r& y! x$ I
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    - C) }7 {. X: R
  301. ; v0 b$ [0 b( T* o5 t+ J9 D
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK( ]8 a! P& T; R7 L1 z* Q7 x- W
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank") ~/ O# M0 ?; U8 f. D
  304. ) b* {; W  h3 g/ a0 K
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    ; M! z+ w4 S# |/ S
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"+ m# ^7 ^, _! `, u1 T
  307. 4 L/ U+ W; k% [9 j2 o8 w. ?/ r
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    " K$ c2 I& g; ]- Y, r( A9 D7 e% f
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"* Z; |) B% c( ^4 F

  310. 9 Q) W( a" E! C7 }( Y  J! N8 c
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    " u+ q/ l+ I% f) H2 g$ b+ W
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    1 `" p' l2 h1 j0 M( c5 x7 I) ?

  313. ; Q. s9 _* b4 R* I0 ?3 G
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK$ _# t; w- ^. G8 `  r# S
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank", j# m, h3 q3 G7 c. l

  316. 0 d) p6 Y9 H2 w% I
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK' q/ Y; t! R6 I, P" u- w
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"( I6 W9 v; V: l/ T! ^. ]& |
  319. : M( C4 d9 O" x- p/ A0 I9 C* U3 ^
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    5 w" ?3 z; M2 E' q. n% q
  321. .ORG $D400. Q0 _& |: w& a2 o" W/ q) @
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    7 B/ Y! a2 ^3 b& w7 \! S: r
  323. 0 D) k5 C# I& \* b" r3 d
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK9 C+ P, L* X& e1 \
  325. .ORG $D800
    0 A# {3 w# F& n* a+ s1 ~
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    1 w6 n) i6 v1 O* ?; r. k) k7 c

  327. 8 m% J$ {7 u: J6 u! O* x

  328. + J( ?- {) A8 a/ [
  329. .ELSE
    , F/ l! C' K5 G  Z+ M/ ]

  330. : V& u$ X! S/ T) g7 y6 K- ?- i. D: I
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK- D8 C1 \* R$ l
  332. .ORG $9000' n; E; r+ ^1 H7 ^/ {
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    4 Q: D9 S0 a) x4 ]

  334. 1 V' Y" B; @) G7 Y- v) @; T
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    " V4 ~3 ^3 F5 m  b
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"! O+ y& h! a6 N6 g, |
  337. $ j, g( U, o2 ]5 x; c3 Z# r
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK& E: b  \8 N) a3 O# Q# h" }  @
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    * z! G$ p  p) e' {

  340. - l1 ~8 C( \) U2 i& Z
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK4 U% U, r0 b& G. o9 K' J0 e
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank". Q8 |  x4 H/ t* }/ v6 L" U
  343. # K: X  b! a  [2 J' N( G! v
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK, u: U5 v: f7 @" U+ J
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"6 p: n2 v, G$ Z/ O" ?) O
  346.   R% ?" R/ G, ?; S. l
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK! L9 ~1 ~4 W% l% w: Q- i. r
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank". M6 K2 }' I& X
  349. " F' L! V# [) s% J
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    4 Q  p3 Y# W/ P- w1 J
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    3 K! t5 g" V  \) A
  352. " ~7 x3 Z! p- w9 b0 y& b; i8 s
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK* j; s& L$ K6 n  M
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"  L) Z; e- |+ v7 W
  355. * I$ x* d# t1 T3 H1 s
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    & f! d. O8 h& N! Y4 W5 @
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    ) B4 c/ N) e7 c% r/ j6 ?% F7 Y
  358. ; E: c) w7 r" O7 z
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    1 n/ p4 P& K; J/ r: r% b2 D+ B$ v
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    + U& h& `2 g/ v3 H7 A8 G0 p3 F/ T+ H
  361. 9 d8 y1 F; y) w, @! e% G- l
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK" Q+ S9 @/ n" w) L; B! t/ Q# @
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"0 R( D' [, u! N( O! h
  364. 2 p/ e2 }1 z& u% ~* e/ p# y
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK% R5 U- w& n" m: B( e9 j+ X
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    1 X1 O7 R  }  t& u/ ~2 J
  367. * B- I) c2 D. H8 x5 b0 |% z
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK4 n: L8 v+ }, k7 }% r% P8 a
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"1 l( C$ E6 M2 u+ E- a3 C0 P8 P

  370. * H# N% K/ o/ U# w
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK" T' R5 Q) F0 b) e
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank": K* d: ?8 n, @

  373. ; ?) c7 M6 z7 w( @- _& W  F
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK' ?' S/ \5 w/ `2 j( q
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    + C5 P3 c- r' a5 n, J5 D
  376. 1 ^8 o  b6 V# B% W' I" o6 U
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    4 Z7 v5 Y7 f. V; R$ w0 E: l; k  y
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"0 X3 F7 q. N9 I
  379. % y" W0 V5 E5 c
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    3 f* ~! j$ p" R
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"+ S( T5 x0 h7 l

  382. 0 q3 O# `" Z1 @& q
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK2 u2 j! ]! V! {( @; x  _
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    & P' x) H( P: u: U

  385. + x! l: r1 e' `- z: M0 H, `0 L
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK5 l0 E% Z+ k, R- s, g2 O. k
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"# _$ d5 H% P( W. Y$ R
  388. 1 D4 q; j8 }3 J
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK0 m* a2 l  H: B/ j6 e3 w
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"7 Z: j5 E/ @$ v& ~8 A! l

  391. ( O" G7 b1 J; p0 a8 M# P0 J! T
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK  @( ~# N- t: \- R6 o
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    ( \0 ?: E7 w% f& y

  394. - N9 S7 _% u  P, g* j5 x
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    $ e& ?! v( C# E$ y& B5 i0 ?
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"; o% i, ]0 k! W- {2 U

  397. ; `5 B8 L3 W- y! i; T
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK; R! R( L$ y% F* U* j
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"4 A4 u+ l0 [  q: v2 j
  400. ; c' s. C' Q: [2 U- ], `/ h, w
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK% S3 D* p- w  e: w) U( Z6 g* D
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    4 H3 }& T3 L# \3 E) A9 Y
  403. 0 m6 a- u9 O( k% I" a
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK( g& r. g* h3 D' }5 e# o
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    . S% _0 \% D0 j

  406. ( t' C) L) S5 v- v( b
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK. u8 ^0 Y% D( @- ~- S; F
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"4 k$ n; S! |5 k$ ?1 U; z2 [
  409. . {: F: ?2 i( m0 v$ h
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    - s7 {( G% G- E$ M
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"; x, A8 B$ q- u- _* ~$ c- v9 n
  412. $ p  z' A2 M9 S( D% |2 ~* N, J
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK! ~  g8 M, @4 R" @: q0 I0 ~
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    0 H8 R) i0 m4 p5 R

  415. % ?; B! U6 e! j
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK8 W4 M9 o; D% l1 c
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"" [" C( ?2 e  x9 V2 d

  418. * e7 G! p  b8 E' ~& }- e
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    4 q' H0 G' Z+ e# J4 `" O9 D
  420. .ORG $D400  x" t! N7 B8 t, x1 L* m9 X& z
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    . q6 ]6 ~8 t7 L- N; O4 J
  422. " F2 A6 p8 e" m9 Q! `& B* f
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ' j+ @8 ?/ l! e& {0 D
  424. .ORG $D800
    ' o: }4 [/ w2 o9 A# d4 D
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    ) u( c; M/ P- h
  426. % G. o. C1 I4 y$ C- R. T5 r3 p
  427. .ENDIF7 U5 l1 u: E; Y/ y( M
  428. ) G: v8 N9 L; M0 t- }# G
  429. ;CHR图形数据
    8 k" X+ g$ t7 ?1 E1 P
  430. ;======================================================================
    * E$ U9 k, f& n( u
  431. .BANK CHR_DATA_BANK
    ; k$ `: u3 b& E& r7 Q6 z
  432. .INCBIN "chr_bank/chr_data.chr"6 Z/ H  r* d6 |/ Y$ C+ ]% I
  433. . p2 @. U2 L6 c6 w, x* d1 \
  434. ;======================================================================2 Y+ Q2 Q" I9 A; }
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    " n6 w8 @' ^( w8 }4 k, X
  436. .ORG PROGRAM_ADDR
    4 c* t, N& E: }$ h# \1 |0 Q: l8 k: J
  437. # i" l5 x0 v( z4 w1 N' |' S$ @
  438. ;==================================================7 _7 f5 W. B, Z' Y: H1 ~
  439. NmiProcess
    ; Y; ^6 U2 M% K8 u+ H6 q: b
  440. ( q5 a4 I4 F# H: N
  441. ;关闭屏幕控制
    ; H( I4 C( q6 q/ W. M
  442. LDA #$003 W. }, b  c4 D! t9 B
  443. STA PPU_CTRL! Y5 i; X0 s1 y" B
  444. , x5 ?! c) T& b* I4 \- S2 N
  445. ;没播放音乐就不需要触发IRQ9 F+ L5 O1 v: ?( D" L) h9 I4 z
  446. LDA <Music_Stop_State
      G# V: p% D4 {+ ]
  447. BNE NmiNormal
    : K$ m5 |: M% q
  448. . k1 x0 h- w* Y- Z* A- f8 c
  449. ;重置IRQ索引
    # Q8 m# O3 d; [, k6 `
  450. LDA #$00
    ! h" a" A! q" B6 l
  451. STA <IRQ_Process_Index2 [1 M, m+ R3 y; [* z! K5 D# Y% l

  452. 4 {8 {0 L  [2 p# J; c6 I
  453. ;时间秒数为空则跳过. c, ]& U$ I0 Y" E# y
  454. LDA <Time_H' ]1 }% V9 l# l7 X2 c9 ^$ K1 P
  455. ORA <Time_M
    3 T- b6 @! k/ c& d; \5 e0 U
  456. ORA <Time_S
    8 k- C0 Q5 u7 j! L5 y( [
  457. BEQ EnableFirstIrq$ I: ?1 r4 j" K6 T4 B) M% V
  458. # z, C& E: f1 k5 G% V, q
  459. INC <Scroll_H
    : q7 D  g: `+ c/ e- X5 g: b( q! E
  460. 9 l& A4 t; x+ W+ f5 \. f
  461. EnableFirstIrq ; d5 {: J0 T$ w3 W
  462. ;80条扫描线后触发IRQ( y5 ^3 X1 n, [+ W1 A% ]& g
  463. LDA #IRQ_SCANLINE
    2 x+ Y  Z+ @7 e* T
  464. STA MMC3_IRQ_LATCH2 w4 J: l, n6 ]: m, ^/ ?
  465. STA MMC3_IRQ_RELOAD' K5 N+ u/ r* g  e2 `8 k
  466. STA MMC3_IRQ_ENABLE
    & ?; N$ q3 E( N5 E3 o' @6 _) p
  467. CLI
    - h/ b' n, b! q* }; f

  468. " r3 b4 r& m9 h
  469. NmiNormal9 o3 ]' X4 s1 {6 x% z9 D
  470. 3 U' G5 P3 R7 [5 e, Y8 m' @+ e
  471. ;处理PPU图像/ I* D# a! j9 J6 [9 w1 N" ^1 c
  472. JSR PPU_Proc
    8 M1 i" h8 W- J* _0 f

  473. & T; s* v4 a- ]- u( w6 m6 n
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    4 X5 }$ s: j" S! L8 c1 d& U! y
  475. LDA PPU_STATUS
    6 z3 ?; K8 j0 b2 n3 |3 ~
  476. ;LDA #$00
    0 `7 I+ M1 O1 g. H, |* F
  477. ;STA PPU_OAM_ADDR
    1 V9 O$ s3 Q9 M# v' _, a
  478. LDA #OAM_TEMP_ADDR / $01000 z! q& F: _( I! T, n8 M0 x
  479. STA OAM_DMA" c( n) f- M0 M6 G, J; V& L% F0 `
  480. ; }# d) j1 Z5 G( ]
  481. ;启用NMI中断
    $ R: p6 K+ z- |3 t, r( L
  482. LDA Screen_Ctrl7 I# h  @4 T  F8 p
  483. STA PPU_CTRL
    # l% s2 u; a' m7 o
  484. ) A7 f* K+ k  V+ h1 n
  485. LDA <Text_Disable_Flag# z! q: r1 E: k) @. p
  486. AND #TEXT_DISABLE_RAM! g2 Q/ w! l$ m: ~% j/ Z2 k! n
  487. BNE Nmi_Sound_Play; ?8 _/ v! [0 P( C6 q; D0 i
  488. , K2 y, o/ _  G! k
  489. ;处理手柄输入6 b! G" h, V0 w
  490. JSR Key_Proc
    " z. O3 Q. g$ q

  491. / A4 [( A  T; H- U+ A3 o) h& `$ |
  492. ;切换音乐(手柄触发)
    + U: g" e6 \0 v$ i5 K
  493. LDA <Time_Wait_Cnt
    ' y& T0 b& H1 p; h& Z3 Z
  494. BNE Nmi_Cursor_Arrow. {8 f6 Y9 m; N7 D
  495. JSR Change_Select_Item
    3 T0 M  K- S) `$ P5 r

  496. - F* Y' F! n6 R4 s; B# q* c
  497. Nmi_Cursor_Arrow7 M6 [& P4 f  y

  498. / O5 ^* w$ l8 N' y
  499. ;处理光标箭头
    5 f) ?" X3 D" J3 n
  500. JSR Show_Arrow2 @, }0 y) Y4 r) g6 u

  501. / {& q+ [' v/ I- X' ?% p  k
  502. ;更新调色板7 t; e3 U1 n7 ^7 w8 z
  503. JSR Update_Palette_Data1 |8 t- S. A4 P6 q/ K- J3 N

  504. 9 i$ z' t  x+ l: W/ w& d
  505. ;显示时间(缓冲)
    1 ^0 g  U# K* U& R& u/ d6 k
  506. JSR Time_Show# S, Y$ x/ O( U) C4 X

  507. , q+ @! I1 A4 |) K, }$ H3 Q
  508. ;音乐显示(缓冲)
    6 w( G  m2 y% ?3 z% r
  509. .IF SOUND_BAR_SHOW_ENABLE. d  ^7 W" U6 C7 h6 F3 j1 ~
  510. JSR Music_Vision1 e6 Y% q7 K' l5 {! f2 y8 s2 a* a
  511. .ENDIF4 W0 E( Q1 {. l& A
  512. / i- ^) K! N- W5 B0 [; R
  513. Nmi_Sound_Play
    ' S5 L/ i4 u0 `& D+ I' k
  514. ;播放声音, f% i" S  [, [8 k5 W5 }$ w& s
  515. LDA <Music_Stop_State0 z. G- ]- {' R* @" u9 z
  516. BNE Nmi_Time_Wait_Set# x+ n3 Y  \0 F9 _
  517. JSR Sound_Play_Proc8 m. w$ [# D$ a

  518.   I6 @, G& D' H" u  g$ V% W
  519. ;播放计时
    $ |6 P  i0 P5 T- f! ^
  520. JSR Time_Count
    2 e- f- E* U! w; L
  521. ; u. c# r1 I8 O* d* ~& H
  522. Nmi_Time_Wait_Set, q' Q2 W2 A* P* n6 _7 h0 x
  523. LDA <Time_Wait_Cnt$ M3 {% _7 n0 F  y4 Q
  524. BEQ NmiNormalProcessEnd* O) A8 t; f8 R5 _
  525. DEC <Time_Wait_Cnt
    , Z2 _$ H! n+ W1 T
  526. NmiNormalProcessEnd
    * a! g1 k! i4 k

  527. 8 Q2 e- h+ x! E
  528. INC <Nmi_Time_Count
    % E0 x: [- A& e: \; l+ E

  529. ) b; K: W( ~: ^/ U5 W
  530. RTS- M& i! _+ [9 X2 }2 U$ H! _

  531. 7 G3 K: _4 ~2 q" o: K4 [! u# k1 [' A
  532. ;==================================================8 F% j, T. m/ k# d. U( c. o
  533. Init_MMC3. [- w/ e  \% g, E( r* I+ Q
  534. ;==============================" b, T8 p: v+ B
  535. ;禁用IRQ
    8 b( p$ I3 E1 `. B! i% u  P
  536. STA MMC3_IRQ_DISABLE( X) h( O  z8 w# d9 G! E

  537. & O$ A1 G4 i& n" X, P* i
  538. ;水平镜像
    * I, E2 P8 N: q$ m
  539. LDA #$01
    ! p' g6 H4 U: M
  540. STA MMC3_MIRRORING' U* t% a, ~2 @- ?+ R. w

  541. # v! A" y& }2 {. T  M3 P- n: D
  542. ;初始化图形bank
    " j" E" I2 Z" Z9 x8 G
  543. JSR Init_MMC3_Chr_Bank
    3 {( A1 ~3 E! t" M

  544. 1 M" [5 p7 i: s0 q  Y" |$ Z; T
  545. RTS
    $ R% M+ I8 t$ s' n) n
  546. ;==================================================( g5 d& N) g9 s! d5 y5 ~
  547. ProgramBegin;主程序  l9 [; R% X3 w3 ^4 x) y8 U" w; h/ p
  548. LDA #$00* P/ N* X5 @  F
  549. STA PPU_CTRL" Q* ]- a( K1 O
  550. LDA #$00
    , f2 ~( }  |/ G
  551. STA PPU_STATUS
    & ]5 g6 O9 f% s9 s
  552. STA PPU_MASK" ~; {$ h" b6 [% n7 Y. d: Y: k7 o
  553. STA JOY2_FRAME6 ~" Y& \: x* V# W, ^

  554. 9 f- A6 a% U* b3 a! D
  555. STA PPU_SCROLL+ q# Q% r+ A- W7 n: @" A5 X
  556. STA PPU_SCROLL
    # Z1 K' D$ U. S1 K0 \; K
  557. * w4 f- Z: o+ l$ k1 l9 \
  558. ;==================================================
    ; n. B# M1 J3 ]( Z0 n: M% M
  559. LDX #$FF/ M1 T; k5 X5 `6 f
  560. TXS: J% q" S/ k+ O6 w0 J8 J* T

  561. - {9 m. q5 C, u6 D1 r
  562. JSR Init_MMC3
    " s8 r& M7 E9 J
  563.   m# g3 _5 @: H: b/ N
  564. LDX #$02
    : r2 `4 x, U& B5 ]* j6 n9 }) o
  565. Check1
    + C) P' k5 h( J& V/ r* \
  566. BIT PPU_STATUS
    8 D0 o( b7 c- v' D6 g/ B1 e5 e( ]
  567. BPL Check1
    & Z. x+ F" E! ?) X" v7 s- I, C& b" J
  568. Check2( R: D6 Z, ?9 [3 B" N2 b
  569. BIT PPU_STATUS& \: Q8 U' u" R. ?4 Y7 I$ S
  570. BMI Check2
    $ u' g+ e- o2 \

  571. & c/ H, x( w0 F- u4 K
  572. LDA #$0F
    : l, b7 }5 B; V2 s
  573. STA APU_STATUS
    * ^% T* V" h9 m* N" Z. E
  574. LDA #$C0: Z) U" Y: _" n4 G5 I- N
  575. STA JOY2_FRAME
    9 o# z( V* I$ j( @* |
  576. 2 _, \" L# r" i( e4 h8 I% ]3 i4 I
  577. LDA PPU_STATUS, E* g+ i' O" g# H- w8 J- e
  578. LDA #$10
    . A% n& y9 E, S, u! `
  579. TAX
    - ~2 b# [1 G0 Q- s; Q# H8 m" P
  580. Check3
    1 H1 ?( b9 G# E+ y9 N7 T8 h5 L
  581. STA PPU_ADDRESS
    2 I7 _' j$ W3 L1 D7 D
  582. STA PPU_ADDRESS5 U- X* |5 M2 t: t4 w, ?
  583. EOR #$00
    * Y4 u% u) W3 A' m
  584. DEX
    6 x6 R3 X8 p4 y
  585. BNE Check3; E4 N! p( m2 E$ y2 R4 U7 G  s5 O
  586. ;==============================
    3 c; s& Y) J8 X7 X5 B$ m
  587. ;调色板清空- Q4 e, P9 n7 a# Z: X9 m: o
  588. LDA PPU_STATUS% U' Q- @: z; D" s$ [8 w
  589. LDA #$3F
    , I' p0 b" F! j$ o# A
  590. STA PPU_ADDRESS
    ; O( l$ z- k% V3 ^
  591. LDA #$00
    # U  I: p6 K% i" G4 a, I
  592. STA PPU_ADDRESS
    4 {7 m9 b$ l# B0 z. [
  593. LDA #$0F
      e. }9 U: Q. W6 Q3 v# i3 d$ V
  594. Palette_Clear
    8 l' r$ V& c* g  M2 j: `
  595. STA PPU_DATA; g. ^- j" L1 ]( S$ ]9 S3 n# w% i
  596. INX4 r7 O% ]9 B" F& K
  597. CPX #$20& }  U' w; |' U( y
  598. BCC Palette_Clear
    $ Y. D4 Y: f& ^5 M' @
  599. LDA #$00/ H  p7 y; D: q- z  M
  600. STA APU_STATUS+ ^$ h" k) W$ c% v0 ?* Q* F8 [2 |

  601. 2 r/ k. k7 x' Y. _# [
  602. ;==============================4 J) M$ Z( H& |
  603. ;RAM初始化& [9 q8 Q2 n* t. U$ F
  604. RAM_Clear_All
    7 H% E" m1 X7 ^8 c& x: ^7 ?
  605. LDY #$005 A9 V# z$ y/ Y0 W/ V8 E  h
  606. LDX #$08+ N1 A5 ~  m) s" l* p
  607. LDA #$00
    7 h: y' N: \+ o2 J, ~
  608. STA <$00: q1 t$ \+ j2 J
  609. STA <$01
    1 L- `7 y6 L% b0 {# F$ I% {
  610. RAM_Clear_All_Start
    * A1 c0 X+ Z0 P
  611. STA [$00],Y) e) T% U- Z3 m4 ^
  612. INY1 q& ~  V$ Q/ L3 k/ f. ^- ?  O
  613. BNE RAM_Clear_All_Start) l5 |$ n  l% J+ \4 ~
  614. INC <$01+ O+ a& e& ]( U  e2 M2 ^; N) ^  G
  615. DEX$ |8 y7 N" @( k7 n& X
  616. BNE RAM_Clear_All_Start( n' n1 E; j3 T! `+ i8 k% s# l
  617. ( [5 o5 Z$ c9 v: F
  618. JSR VramClear
    # {) q* p, p2 B) R( s
  619. JSR VramInit
    3 t/ [6 r4 Z5 ^' c3 Z  t
  620. JSR OAM_Ram_Init8 |$ q* j$ g" c! x5 U8 n
  621. JSR Init_Palette_Addr
    & }. U1 r& X9 d- I, M1 a- h* k

  622. / n: H2 X1 h4 p7 a8 |8 y) f# ^; ]
  623. LDA #$FF
    ) k7 e! x3 b1 X0 Z+ ^; X1 N( o
  624. STA Use_Ram_End+ p1 y" ~  O' g0 @+ a  v# \
  625. ;==============================
    / I# l, G( M: F4 H( O
  626. ;初始化背景调色板. ^7 v3 {# w5 ~' m
  627. JSR Set_Palette_Color
    . r. }! `2 L* i* j: P! K
  628. JSR Set_NameTable_Attributes
    , a  c9 Q4 o$ h; D& P

  629. / ~% {  _' |! g' t  j
  630. LDA #$00! @$ b, J6 B3 q; U
  631. STA PPU_OAM_ADDR* l8 |, f7 N- }2 `( B3 L  ~
  632. LDA #OAM_TEMP_ADDR / $01009 U: ?" z( k. q" Q
  633. STA OAM_DMA5 Q2 W, u6 ^+ X% d
  634. 5 J5 Y3 y5 A# d' J2 ~$ ?8 h
  635. JSR Sound_Reset_Proc
    1 ?) m' `- j( T) U( e4 I8 ~$ Y
  636. JSR Set_Sound_Total1 ], x( q$ L' O: |) g
  637. ' Q8 i2 x8 Q" {2 A
  638. Init_Start_Music
    & A5 P7 `- Q: d3 K
  639. LDX #$001 Z8 V& C) x& r  e! J7 |4 l: E
  640. Init_Start_Music_Write+ G) L2 g- I+ K" z$ E' D) R
  641. LDA Sound_Start_Port,X2 D* F: e  U# S4 `- E  _
  642. STA <Music_Cur,X
    9 D* g. K1 e9 p/ }
  643. INX: ]! ]' b6 P6 K7 Z7 Y6 L
  644. CPX #ITEM_MAX_SIZE
    3 [. f3 q# G7 X. j2 O+ T3 E: g
  645. BCC Init_Start_Music_Write( N6 D2 u% A) y" Z6 n9 L3 \; h4 Y4 W
  646. - h" c" b4 F. z4 Y  d
  647. JSR Show_Music_Text
      B# Q" x4 O' ^" ^, y) E
  648. - f& P" T; H( e: f
  649. .IF SOUND_BAR_SHOW_ENABLE9 w  m" G( t' R1 N) c
  650. JSR Sound_Bar_Text_Set7 D  P: X) X2 L* f& l/ b
  651. .ENDIF! y# B4 H" }' x& J5 a

  652.   }: h5 @* X8 r2 ]! i/ i2 n
  653. .IF Track_Name_Pos
    ; i- w+ M: f8 y" x7 B& c( ]0 |& J
  654. JSR Show_Track_Info
    & E8 w4 v( N: m) ?: `
  655. .ENDIF2 A. n) S( D% O$ _& |1 H

  656. + @4 `9 m0 {' t* @, f7 K) D0 W
  657. JSR PPU_Proc
    ( l* l' N; Y$ [

  658. 9 _* b! p) V' p# O# S7 E! _
  659. ;==================================================
    9 N+ g3 W' \4 J6 D0 x5 X
  660. ;音乐bank初始化
    " ]. ]8 m; @0 n7 z# A5 }# f7 F( r
  661. JSR Init_Sound_Bank
    * i$ O' G  T' z9 m7 {

  662. % `3 Q. ]& ^5 G. t( R: x
  663. JSR Music_Show0 o" y1 L3 k$ d" G* T6 @1 t
  664. JSR Time_Show
    & a& I8 d" a- n" U0 Q, Z) ]6 ?
  665. JSR Music_State_Show
    " y- t5 N/ c; _7 Z, L5 z. }8 P& u
  666. JSR Time_Delay" X4 J1 x$ K8 U/ E7 d

  667. + i! E' d' T+ q9 F
  668. LDA #$01
    : u3 C- [2 Z3 v( u3 K
  669. STA <Music_Stop_State  C: ]. |2 C8 N, ^9 h; A

  670. 3 j$ O1 G+ U7 o, ]$ D4 q- c- z
  671. LDA #$882 W2 D) y* u+ M' U
  672. STA Screen_Ctrl/ p8 {! {5 O3 S/ ]. d/ |
  673. STA PPU_CTRL
    - t% [  J& {' {1 b' Z5 A
  674. $ ^! u# P, @$ N+ b. b+ \$ [& A* T
  675. JSR Show_Page_Text) F1 u0 ~9 k' I% B" }( J6 d
  676. $ o3 t" P+ t, h1 i2 r3 S
  677. LDA #$10, {, T* v( ~7 y, ]8 \8 l5 ]/ _7 i! m! q+ a
  678. STA <Time_Wait_Cnt
    $ V- v/ \. [+ J0 E
  679. 7 a4 ^0 ?+ l2 Y; x) X0 s# e
  680. Wait_Time_Over
    . I5 Q, A7 y) T
  681. LDA <Time_Wait_Cnt6 g$ e) A1 G5 ?( y) ~. f
  682. BNE Wait_Time_Over
      j6 B8 T8 q' R$ a0 \2 ^; V
  683. ( A/ s0 |1 L* b3 w
  684. JSR Show_Arrow4 n( R  y0 D9 p( ~) l
  685. LDA #OAM_TEMP_ADDR / $0100
    ( e" r; _( \' G1 V# P* v& n5 i
  686. STA OAM_DMA
    0 D7 ?$ l; X7 ^  g. V
  687. 9 \" V+ K! u0 U0 l( ]1 \- T/ L% \
  688. LDA #$1E
    6 g( X! K% x. E2 P# r( {
  689. STA Screen_State
    , P$ c5 c  t' @. c

  690. # {  [) g6 v& R* U+ }9 ]' O
  691. LDX <Music_Item_Cur
    : V* r& L6 i. Z  j1 {
  692. LDA <Music_Cur,X
    ( V$ q8 e/ V! f) n8 F  g3 ~
  693. JSR Sound_Init_Proc0 K. L) J8 e% J" ~* _, j
  694. 3 s- t! F6 K) E  e) D$ c# L3 ?8 u0 T
  695. CLI3 d- y& F) T: {
  696. JMP MainLoop  A0 n. f/ n* M* z8 y
  697. 2 C( @9 n+ d3 O' q* d
  698. ;==============================
    0 U' F0 Y, u1 u4 s
  699. Time_Delay;延时等待5 q& i: r! Y, y  W  y8 Q; m
  700. LDA PPU_STATUS2 _$ N' u$ ~, I0 v1 H: s
  701. BPL Time_Delay
    . H2 Y- ^* s  A5 ]0 U; b
  702. RTS
    $ c% l# M5 I2 z; U3 h

  703. 3 u9 {# R: ~) O4 s0 T5 T& I
  704. ;==============================8 B# N% u. L+ G/ x: ]9 [# e
  705. OAM_Ram_Init;初始化精灵内存
    - G6 Q' ~8 T4 `  K# B
  706. LDX #$00
    1 v0 Y% r# l) |3 e. R" ]1 M7 @
  707. OAM_Ram_Init_Write4 B% v- C0 {+ y! J) L
  708. LDA #$F8  _5 \' n* q" B! M1 P
  709. STA OAM_TEMP_ADDR,X
    ; s2 g; }& ^' ?
  710. INX
    8 k8 {* a' a8 D4 O2 j
  711. LDA #$F8
    3 h0 b! L7 V" ~$ I
  712. STA OAM_TEMP_ADDR,X/ ?  j7 G2 I* p9 ?- g% |- Y
  713. INX
    4 w7 W8 v  Z2 o; R3 w9 W
  714. LDA #$00% r' K. X! R9 ~# L
  715. STA OAM_TEMP_ADDR,X
    3 E3 g$ y' r+ J$ ]3 A' O( D1 Z& J- M
  716. INX8 u6 \6 o) u. J2 }
  717. LDA #$F8
    ( W! W3 c3 q1 W$ t. M7 z
  718. STA OAM_TEMP_ADDR,X; {$ x/ P8 b" y% g
  719. INX& q3 [) X3 A; V/ |
  720. BNE OAM_Ram_Init_Write
    0 K3 Y3 x% L- g4 e8 [& _7 d
  721. RTS
    / M) d0 C4 D" [5 K- I

  722.   S4 W- T# S8 g& J. a3 H
  723. ;==============================
    $ v( d7 G' V0 ?7 O' Q
  724. VramClear;初始化图形内存
    + t0 K  a( K, ^5 @
  725. LDA #$20
    & A4 w0 H  u+ f) m/ ~
  726. STA PPU_ADDRESS
    4 @. {9 W5 d/ M/ Z5 Z' K, i
  727. LDA #$00
    # T2 X' r% c: S' C# W' W
  728. STA PPU_ADDRESS9 ~# `; R! a" k' ^* x" L: {' ~2 f
  729. LDA #$00
    0 c% r! Q. ]- O+ ~0 G
  730. LDY #$00
    / N3 i7 n8 }: u% l6 t
  731. LDX #$10; ^; i8 F) H9 n2 F2 @* y: s
  732. VramClearWrite
    + |# x" W8 A2 ~2 N! b8 M" R
  733. STA PPU_DATA5 w8 m1 T& ]4 D( x; S
  734. INY
    + {5 g+ \. Z& v- p! q
  735. BNE VramClearWrite
    & x- q' \# O6 m& k) y
  736. DEX$ N! H) n! c6 c8 }
  737. BNE VramClearWrite
    # L2 v6 V- @. m5 x, t
  738. RTS
    3 n3 l4 P0 l8 x+ R+ Q8 S' U
  739. : n( ?& P) u( k6 C. s- b: l
  740. ;==================================================; j) a9 x' z& d
  741. ;设置MMC3图像bank# U8 k- I# |! S& v
  742. Init_MMC3_Chr_Bank
    6 l9 a+ S( G7 Q7 x4 x1 v
  743. LDX #$05
      U" F. ?3 [2 z& P
  744. Init_MMC3_Chr_Bank_Write- X. h- [7 F& W7 ?
  745. STX MMC3_BANK_CTRL0 {4 T5 A2 l4 R% g- R* n5 ]( B+ I
  746. LDA MMC3_Chr_Bank_Data,X0 j7 z7 ^' J3 l+ A  C1 I4 ?& d4 h
  747. STA MMC3_BANK_DATA3 t5 w, I8 D! e* Z8 z- g% x, g
  748. DEX: |* j, ~) ~, Y* B6 Y
  749. BPL Init_MMC3_Chr_Bank_Write
    $ U. s+ S. X# L! }* G0 `7 j: w
  750. RTS
    2 n# D. v$ Q0 J$ K
  751. ;--------------------------------------------------
    1 e/ D! c* E. q
  752. MMC3_Chr_Bank_Data7 _2 h) w0 C) J$ V6 B
  753. .DB $00,$02,$04,$05,$06,$07
    ) i- V5 \* V. c. G) @( x$ l

  754. ' {9 Q- @& a, `2 R  B* y
  755. ;==============================
    9 \* M9 J' F& z
  756. VramInit;初始化图形内存
    + R# Z, v5 u" y5 M
  757. .IF CHR_RAM_ENABLE
    : d. A# W# s4 I* B! f6 q
  758. LDA #CHR_DATA_BANK
    ! _4 {4 t5 W' F( Q' X$ v& ~) c* f
  759. JSR Switch_Bank_A0003 k5 S2 {1 t9 r# _4 o% z
  760. LDA #LOW(CHR_DATA_ADDR)0 p! f: y# j1 B  k
  761. STA <Data_L
    5 u  x  B0 b, A$ `/ T, O
  762. LDA #HIGH(CHR_DATA_ADDR)( [+ |9 v3 w6 v" ?
  763. STA <Data_H
    7 w1 \# ~/ @* B, H- o; s8 t" M
  764. LDY #$003 R% @1 e/ |; X7 T7 C* [  Z
  765. LDX #$20
    7 K  o8 Y# J6 s
  766. LDA #$00
    " ]) i* Z" t% [& I' _
  767. STA PPU_ADDRESS% F* C( s# s3 C0 J/ x+ g
  768. STA PPU_ADDRESS# U: Y& Z! [. N  |' }6 W* M
  769. VramInitWrite0 \2 j6 b: q& o' p* F6 R
  770. LDA [Data_L],Y
    6 Y6 c# e0 d7 o1 ~# \9 C  y
  771. STA PPU_DATA
    2 `, W% [. X+ b4 Q; J' y
  772. INY
    7 y' {3 B, b) t8 b
  773. BNE VramInitWrite
    8 V  U8 d3 p0 Y; G4 g9 b3 K- ?  A' e( K" V
  774. INC <Data_H
    * Q/ t) `3 u0 `' ~) s' [
  775. DEX
    / H' }( S1 d+ o0 l- F& K
  776. BNE VramInitWrite2 m$ }4 x3 C' E8 M7 D7 d; \
  777. .ENDIF
    # K2 s) G  X6 ^5 H; J
  778. RTS
    : w# P+ D$ e- P: J& o
  779. & B. h. S! k% i% H/ u+ D) m# U8 H4 ^4 Z
  780. ;==============================
    % ^" E' k7 N$ C* t' E0 {
  781. ;音乐切换
    " {- x' g+ N( o$ [% M3 U* G' j1 S
  782. Music_Play_Change
    & C; B: H% e4 P
  783. LDA <Key_Once  \) R7 l6 J9 n
  784. AND #$FF
    ! T& |3 C+ j& m, l* \9 K
  785. BEQ Music_Play_Change_Check
    7 r0 Y# r% ~9 u6 _" ~9 V) v3 M' R

  786. . t% X& r/ ~0 x" Q7 I9 S* H3 n
  787. ;禁用音乐条刷新- [/ S- p% y% f) ?7 }* Q
  788. LDA <Text_Disable_Flag5 V; b/ k( c9 s7 u
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME6 J! c3 d% u  Q# Q* t9 q
  790. STA <Text_Disable_Flag% w$ ~0 ]* w) S6 _( w, [  Q
  791. 1 e% A! i! l  c4 g
  792. Music_Play_Change_Check
    1 Y8 c2 b( d$ u- R1 A
  793. Music_arrow
    . a4 ~" T1 [) w
  794. LDA <Key_Once
    ) Z- h) m" b/ W  G' z3 O
  795. AND #$0F& A% J6 D9 j- f$ @; h$ a5 D
  796. BEQ Music_Play_Change_End
    . U" N+ o/ W5 n  R' k
  797. JSR Music_Track_Change
    : k9 [1 w% p, J2 f& m% g+ ^
  798. JSR Sound_Reset_Proc
    % [* ~2 y  r. d
  799. JSR Music_Show
    " K- i' V, t) v1 ^7 v
  800. Music_Play_Change_End/ O, U5 f4 @; G% x% N
  801. RTS7 i$ }( V6 `' q- T2 ?6 T5 Z, P: f( n

  802. 8 [$ O6 h' R( H' T0 O8 F
  803. ;==============================
    " {2 ]; Z# H+ j# S$ I  T) ?
  804. ;音乐曲目切换5 ?7 H- b6 @+ J( [1 z9 d6 V  J+ T
  805. Music_Track_Change: t4 O( |4 w1 h! ^+ E1 ~) o3 Y0 F
  806. LDX <Music_Item_Cur# Z0 b9 X7 O4 x3 c& Z
  807. LDA <Music_Cur,X
    / ?6 E) k; V5 [1 J
  808. STA <Music_Last% O3 M( L7 q; H! U+ u  K. C
  809. Music_Decrease4 T( ~7 E; N2 @( q& p5 l2 x
  810. LDA <Key_Once7 M) N' M) Q* b0 a9 R7 J4 a
  811. AND #$423 [/ ^9 x, o! K6 n+ r" `# X
  812. BEQ Music_Increase
    7 N$ g: q8 d9 Q5 _7 Z/ r
  813. LDA <Music_Cur,X
    ( M0 v8 H7 l9 y5 M5 l
  814. BEQ Music_Increase7 N* ?! S% E- n( F: A0 p
  815. DEC <Music_Cur,X/ c; I( L# P3 u* b% a2 I8 X
  816. Music_Increase* e& {/ z& G0 U9 W5 t
  817. LDA <Key_Once! D' V. z' Y1 U
  818. AND #$81
    5 Z! F& j) m/ }, n/ g4 m* v7 P
  819. BEQ Music_Decrease_10
    ) }% P2 T9 b6 n: I; R% t
  820. JSR Set_Sound_Total, V$ N& _6 R6 u9 X' I( C" `- g
  821. LDA <Music_Cur,X
    - N" ?5 ]5 K: C& y
  822. CMP Music_Total
    ) `8 O/ |# N5 j$ P
  823. BCS * + 4" h; d/ ~# D8 w. {0 k: K% v# ]
  824. INC <Music_Cur,X
    % C8 a( f! P8 k" t6 s8 t
  825. Music_Decrease_101 F+ i, `8 }2 n5 F% f; p
  826. LDA <Key_Once
    8 E  z! l/ N6 o. O! a
  827. CMP #$04
    1 d# G# g7 M' s+ d. q
  828. BNE Music_Increase_10
    ) ^% z* y: v9 o% [3 |( K# D
  829. LDA <Music_Cur,X2 f& \0 v, W% y4 ^' w
  830. CMP #10
    / z+ A1 z5 C) `& A# x  C! P
  831. BCC Music_Start_Song_Min
    . R0 ~2 Z1 v! d- G: Q" @8 h( Q
  832. LDA <Music_Cur,X
    ( L4 t/ S: _" `+ P4 T; `5 d* m
  833. SEC
    5 }. g4 v6 D. `, i( V
  834. SBC #10
    6 v8 q  Q# ]) v( Y
  835. STA <Music_Cur,X
    * ?+ u' K, R3 A
  836. LDA #$00
    8 q, ]$ O' a9 o# {
  837. BEQ Music_Increase_10
    $ _8 V: x) \0 r
  838. Music_Start_Song_Min1 m3 n* M/ E- F3 w
  839. LDA #$00
    6 S2 f; N; n' @
  840. STA <Music_Cur,X3 O  N2 F* n1 Z+ j$ j
  841. Music_Increase_102 w2 C! [: l/ l
  842. LDA <Key_Once
    / A# ?8 }0 ?4 T- M
  843. CMP #$08! }8 ]1 R" C' K* L+ e) W9 N
  844. BNE Music_Track_Change_End
    3 f! q# a$ ?+ f' O0 M& a
  845. LDA <Music_Cur,X! r( y1 ?- t5 u1 R2 k7 s
  846. CLC& p' B: d7 {6 o* O
  847. ADC #109 I+ M( n9 ]6 M! z+ M. W/ Y
  848. CMP Music_Total/ O2 v0 a4 T* J5 S- S" u( Q
  849. BCS Music_Start_Song_Max
    , U8 P% h) x+ C1 ~) ]
  850. STA <Music_Cur,X6 J: z- B+ ?1 M: D  \. V: q, i7 |
  851. LDA #000 }% M2 z+ X4 T8 |+ a
  852. BEQ Music_Track_Change_End
    ) L- s/ R+ }3 m( P( Q$ o. P
  853. Music_Start_Song_Max
    6 F# o4 ]* x& x- |0 o: Q0 O. L" n
  854. LDA Music_Total$ b7 q" \$ d1 O+ q- v( ?: k
  855. STA <Music_Cur,X" `# v' }- d5 r6 i/ ^
  856. Music_Track_Change_End* A9 r5 u0 U) ]. U9 B; c
  857. RTS2 g+ w' J6 c; u  f5 o- U
  858. " g/ t: J2 ~. V
  859. ;==============================8 u3 l& @" H4 N- P4 t, C% q
  860. ;按键处理
    / s: {& C' M' H- U8 O' j* b2 M
  861. Key_Proc
    0 j6 z4 A5 @" ]7 Y& b
  862. JSR Key_Scan1 X8 I3 e0 M( h8 g* J# Y
  863. LDA <Key_Keep- [/ o6 `# O: _" p, x
  864. STA <Key_Temp9 Z& O2 j- d/ R- Y8 f" X
  865. JSR Key_Scan
    ( u5 w4 [5 T% O2 v! i- t
  866. LDA <Key_Keep: e" @) f4 ?+ [0 F
  867. CMP <Key_Temp
    / c' D3 b' E1 K/ |( @) U
  868. BEQ Key_Get_Once  W. s- Z1 A/ y" `
  869. LDA <Key_Kemp/ `. A! l9 E; k! H" O6 K  ^$ q7 ]
  870. STA <Key_Keep' L  {2 e8 ^" X$ x3 a! {! Q2 |
  871. Key_Get_Once9 C% \' b- U, X7 b: @* t: X
  872. TAY
    & `: ?: D& o. A" e6 H  D. r
  873. EOR Key_Kemp
    & E8 d) X" n; F: s" N" f% c7 {! ^7 ?# Q
  874. AND <Key_Keep
    " t" k3 {7 n/ |, @
  875. STA <Key_Once/ m7 ~' x' n' p# m. k) [% W
  876. STY <Key_Kemp
    " J& G" N9 h. L2 z8 `% [3 v  o
  877. RTS# I7 p3 w% n' t4 x# Z$ w; e
  878. ;------------------------------
    4 p  a/ v& m( g# F% ]% _9 Q: }: r# K
  879. ;按键扫描
    7 |  k. z" `; X0 T6 u& v5 P8 X
  880. Key_Scan
    & Y8 H; D8 ^5 g+ w/ u9 b1 x# l
  881. LDX #$01& ^$ s$ q$ x2 q
  882. STX JOY1_FRAME
    $ |1 q$ M4 P$ {1 k& \
  883. DEX
    ( @, u' E* Z2 `
  884. STX JOY1_FRAME/ j1 u8 }& i$ W9 e" \
  885. LDX #$08
    & A$ i. |; @1 U: a
  886. Key_Value9 W2 C  Q7 `1 _! O* h7 w
  887. LDA JOY1_FRAME
    , Z" S* U9 @% {4 g' g
  888. STA <Key_Getv8 a' _5 S' |: _  r2 b
  889. LSR A
    * [1 Q: k  Z# B/ j8 o
  890. ORA <Key_Getv0 Y1 ^( E9 u: g. p7 D$ s
  891. LSR A
    & _* r$ l  t- }7 m2 [8 b' i
  892. ROL <Key_Keep
    % p( R0 y$ a6 I' f" q4 J
  893. DEX
    0 @9 k/ v5 ?4 x1 p) v( A
  894. BNE Key_Value
    : w6 ?8 ?+ T- R0 A
  895. RTS7 p6 w/ T" t2 z' D4 ~
  896. ! M- a( W2 H8 a; j1 N
  897. ;==============================
    * D: H6 o1 C8 @9 m
  898. .IF SOUND_BAR_SHOW_ENABLE
    6 U7 G6 W  u5 _1 E
  899. ;音乐条显示
    & R3 n" F2 I. R/ K1 g: C) k) E
  900. Music_Vision
    5 `: y* ^  h" k* ^4 h2 |
  901. LDA <Text_Disable_Flag
    & _4 A+ D, d! e5 {% G0 L6 ]
  902. AND #TEXT_DISABLE_ITEM
    " L, ~% C) r6 e6 R: ?: a" N! \; B, c# ~
  903. BNE Music_Vision_End4 [; X* q: N2 {" F; v6 e) b
  904. AND #TEXT_DISABLE_BAR
    + ]1 V  _$ E! x# t
  905. BNE Music_Vision_Set( g  g% g: t* L! |$ D$ \# @
  906. LDX PPU_Cur5 o6 h1 X* X4 [8 l7 h: p5 x
  907. JSR Music_Animation2 `" k. q. k. `3 ?9 ^) U: o
  908. STX PPU_Cur
    2 H# P" F, B+ S5 z6 T
  909. Music_Vision_Set/ {# A2 ]1 v$ I8 l
  910. LDA <Text_Disable_Flag
    ; }5 S  k/ q: ?( }( J
  911. AND #TEXT_DISABLE_BAR ^ $FF
    , e0 s* G0 n" ^4 H: t& D
  912. STA <Text_Disable_Flag" t6 Q% t6 @7 j2 k
  913. Music_Vision_End( Z0 c9 J9 L. U' q6 X
  914. RTS
    ) m% I6 w$ t. [/ B( K2 N. D
  915. ;------------------------------
      ?+ X+ q9 A6 }% S: b* C( h
  916. ;音乐条显示处理
    , F& B0 g9 G: t3 x' g8 ^/ `
  917. Music_Animation
    6 w. O4 B. ^/ g2 x; T  c
  918. LDA #PPU_MODE_CNT_LINE$ E* T( E% Y: T9 U
  919. STA PPU_Addr,X* f5 c. A' T" `* g( e/ d
  920. INX' a6 c" S0 F* d  {, E$ W2 L; G
  921. LDA #HIGH(Sound_Bar_Pos)5 B9 R" i  ~2 t& b0 I) o
  922. STA PPU_Addr,X" v" Q4 T' g# i! k
  923. INX- B# e- u1 d2 i& S% m
  924. LDA #LOW(Sound_Bar_Pos)
    " ]. }3 y1 w8 E; `# n. z
  925. STA PPU_Addr,X' q; }2 \% ?. @  [9 }  w; E
  926. INX
    7 @' C( I5 O4 ^  k) u: f
  927. LDA #$08
    % `: d- u; A# X2 J2 q3 o
  928. STA PPU_Addr,X
    : c0 p+ k$ Z" R3 r
  929. INX
      z; h+ R3 Q% D3 [3 H
  930. LDA Sound_Bar+ k& h( g0 Z* l( i( c5 O7 G
  931. JSR Volume_Convert
    ( }4 r; D$ v3 W( k4 j% d- a3 R
  932. 3 u# Z' Q9 B/ D) T6 O+ U/ W7 }
  933. JSR Volume_Set_Cnt7 P8 _$ [0 e! b& {' |- {/ U
  934. LDA Sound_Bar+$41 e  H4 m" |& d* I* O3 F( j# W- {
  935. JSR Volume_Convert$ h) n, @" X' l
  936. / ~* [% r8 ?* ^4 B9 |. j0 T
  937. JSR Volume_Set_Cnt
    9 F/ M" J- Q' H8 Y6 o4 S, ^5 ~
  938. LDA Sound_Bar+$88 C5 W, A7 }+ \* ]1 Y( {. o4 t
  939. JSR Volume_Convert, Z* P0 r. P! B6 `: Y! h

  940. $ s: f& Z& X2 \1 s/ S0 \
  941. JSR Volume_Set_Cnt3 ]8 h7 K2 Y+ k$ m' E# ]
  942. LDA Sound_Bar+$C
    " T$ P" F, `3 S3 F7 \
  943. JSR Volume_Convert- y$ {, G; o2 \6 }6 E1 r
  944. ; l" u/ K7 E  b2 f
  945. JSR Volume_Set_Cnt
    & U8 k, o* J6 `6 B; `! k- v

  946. 7 ^" }2 _# r) x( w: D; @7 l
  947. LDY #$10' X# V. P: n2 x5 Y$ Z- C
  948. LDA APU_STATUS
    + n; Z7 C' E4 Z8 j
  949. AND #$10+ c) Z) ^" b, U9 d# V: N& R
  950. BNE Volume_Count6 l1 H7 i% ]- ?- \; Q9 o8 K
  951. LDY #$00$ A+ ?4 V3 ?& ]
  952. BEQ Volume_Count
    ) r0 b: `0 `5 u

  953. 5 N+ X" i4 p9 g
  954. ;------------------------------7 V% X& \& B' q) }
  955. ;音乐条处理
    - ^1 e) e/ g# `! r. K
  956. Volume_Convert- F( i0 ?. ]. F2 z. k
  957. AND #$0F
    4 _& Y. }6 ]& i6 k& U- U- d; g
  958. TAY
    1 i' s' v( {- o/ V8 [
  959. Volume_Count
    / w. W) g) z: B# P1 `" I1 y
  960. LDA #$086 ~+ }; ^7 B/ U' A& s! c
  961. STA Sound_Bar_Cnt+ @0 y7 t0 R+ s0 k# @: i* u
  962. Volume_FILL
    ! U; b! A- U' t4 d% }8 G
  963. DEY
    0 [& B( G, S2 n1 n- Y3 l2 A
  964. BEQ Volume_Half0 U/ K3 o! s( C5 T6 m8 y
  965. BMI Volume_Empty
    ) g' N0 _3 ^' f% [$ ^/ R( k' C# k
  966. DEY2 H7 o' B! f$ k* {$ b
  967. Volume_Full
    , }: E& S; p  U+ k+ i, w
  968. LDA #$16
    1 w5 }/ Y8 W- A* b$ T
  969. BNE Volume_PPU
    / f! Y0 J0 J( f" @0 w' F. {
  970. Volume_Half
    - m# T6 p- _8 S% I2 b+ u( H  _5 ]
  971. LDA #$151 x) a, e: T7 d; k
  972. BNE Volume_PPU1 s. f8 ?2 h& n7 T5 g
  973. Volume_Empty. E* x2 q8 d2 o2 X
  974. LDA #$14
    $ ~6 Z9 J! ?/ x7 j! @8 F
  975. Volume_PPU
    * U- t  M* n4 X$ y+ N  l* O( X
  976. STA PPU_Addr,X. w* m+ r$ n# @9 r% @4 E4 v
  977. INX4 m5 i) c; A9 S6 {. B+ D4 p
  978. DEC Sound_Bar_Cnt* x5 G, o% p" b1 |$ ^
  979. BNE Volume_FILL; p1 ?( y, C3 m- m% e# I
  980. RTS( G* ~# J2 V$ |$ ?' l4 C& C5 |# L
  981. ( j3 t# e9 ?! ^$ [8 g
  982. Volume_Set_Cnt+ y* }* f4 N6 R) l2 G( R
  983. LDA #PPU_MODE_CNT_LINE_NEXT( R# _5 @4 ~! u' B( n
  984. STA PPU_Addr,X, q7 L, S& H& {" X
  985. INX- E$ y3 Q  ?+ C+ A
  986. LDA #$08
    + n# ?* b: d" ?  z- L: U6 t
  987. STA PPU_Addr,X, k( G% H2 O/ s
  988. INX/ B; c3 x; r5 h
  989. RTS: p4 Q3 p, q% H4 ^

  990. & h/ Y9 l4 C, U1 f1 c4 D7 X& p
  991. .ENDIF
    " s# y' Y5 |  t+ q& L5 |; Z- I
  992. 4 V$ l2 i8 c' J# b
  993. ;==============================
    / y4 o9 a' q6 x2 r2 g
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入3 R" c, I# J6 |  `
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式- Y4 p1 W' z4 D: b
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除; F5 P2 S% @) S8 u7 C
  997. ;------------------------------* k0 l5 t' w2 o7 m5 G' H6 n
  998. ;PPU处理) c: r& _3 j# A6 _: z5 }- Y
  999. PPU_Proc, y. T! T1 {0 d! O6 J$ T; ]
  1000. LDX PPU_Cur
    2 i# b! J1 j" T8 V/ `* ~) r
  1001. LDA #$00
    ) E( y1 _0 W+ g
  1002. STA PPU_Cur
    ) X, H; q6 X) d7 L% x1 @
  1003. STA PPU_Addr,X0 j0 _3 q; r. `
  1004. LDA PPU_Addr' o/ o% P- V# m5 [% D7 E
  1005. BNE PPU_Proc_Beg
    ; {/ [1 C; _1 \3 d; \* \
  1006. PPU_Proc_Ret
    ' T7 [/ A& t' H- _" _7 n  B8 b
  1007. RTS
    , l! [! P/ S) C

  1008. % E$ U0 \$ u. y0 R& L9 O7 k
  1009. ;------------------------------( B) d& ^9 g  \1 F
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    ( G1 @" D. P! X5 j) R
  1011. INX" b' A! y7 M. u0 g
  1012. LDA PPU_Addr_L
    / v  u" w' B! h: Q  @1 x
  1013. CLC
    , Q- t9 c! k. q1 I
  1014. ADC #$20
    ! X8 s/ ^" ^" m
  1015. STA PPU_Addr_L' r7 _/ {/ a. s3 @) a+ ~9 C* ~
  1016. BCC PPU_Mode_Return_Cnt_End! A# V4 _# ]% Q1 Y$ U* b1 @
  1017. INC PPU_Addr_H
    ; R% y9 M" K" i: z" R- k9 q
  1018. PPU_Mode_Return_Cnt_End
    + q% B2 U  a) h5 R# f% N1 p& u
  1019. LDA PPU_Addr_H
    1 S( d- n" W- q+ j- O# v1 S
  1020. STA PPU_ADDRESS
    ' G( v" N" J7 S) l' Z8 w& X& u
  1021. LDA PPU_Addr_L
    3 `0 X" @! A) J: l+ N7 b0 v
  1022. STA PPU_ADDRESS5 `% J- ]5 O1 \$ V; N0 s
  1023. LDA PPU_Addr,X
    2 Y* r! O3 I4 J5 t
  1024. TAY. o) g, o/ t; Q- s6 x3 U
  1025. PPU_Mode_Return_Cnt_Write7 P) F( w& f8 w
  1026. INX; B% [5 [$ W: e6 o7 b) r, X. c: h
  1027. LDA PPU_Addr,X
    3 C" z; S2 _6 k7 a( g
  1028. STA PPU_DATA
    * @8 M3 D, w4 ]- Q8 M
  1029. DEY/ b) H4 m, g9 D7 Z" L! b
  1030. BNE PPU_Mode_Return_Cnt_Write. y" {, Q% g4 z. J3 P
  1031. JMP PPU_Proc_End
    ! w' F+ s% M. ]" O; m& ?% X

  1032. $ q- `4 T7 R, P5 @7 ]
  1033. ;------------------------------
    / r, q  `% a. ]2 S- w- W
  1034. PPU_Proc_Beg  ;处理开始
    : L3 W4 N# F7 ^- n$ ^+ X( m8 p
  1035. LDX #$00- m+ m1 W- {$ t3 N# N, Q/ A( v' ?
  1036. STX PPU_MASK
    & n/ _0 l7 L) l. o
  1037. ;------------------------------
    : x. f) x9 w: r. x6 h; z' t  p( ]
  1038. PPU_Mode_Select  ;模式选择- r6 {0 A( a% E  [$ m: }
  1039. LDA PPU_Addr,X
    . c5 U7 {, ^; `8 O- z9 s% B, Q+ d
  1040. CMP #PPU_MODE_CNT_CLEAR  w  G) D7 u8 p# K4 y7 R. R
  1041. BEQ PPU_Proc_Clear
    $ `% M4 v4 v& H7 j: ^0 e
  1042. CMP #PPU_MODE_CNT_LINE- V- m# Z+ E5 D$ _+ n
  1043. BEQ PPU_Proc_Cnt_Line6 m- w4 ^# R7 |8 J/ o5 K* B
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    + ?4 M/ K* [- d% b
  1045. BEQ PPU_Mode_Return_Cnt
    , t. ^: ?3 {5 g5 S  _
  1046. JMP PPU_Proc_End_Write& j, ^% H3 z5 G
  1047. ;------------------------------
    9 ~! h+ ~% A' Q
  1048. PPU_Proc_End  ;单行写入结束
    , \, l) s! _& [2 P4 u8 y
  1049. INX5 p' \3 l/ J! A- {
  1050. LDA PPU_Addr,X
    5 Z0 S& @; ?7 ]" \. {7 A
  1051. BNE PPU_Mode_Select: n( D+ s" e) u( {( |
  1052. STA PPU_Addr  C( p1 ]& l- ?; X+ I- S
  1053. JSR Update_Palette_Color) N" E2 Q( _1 ^: O4 V

  1054. 5 b( I2 d# ?5 I- _
  1055. PPU_Proc_End_Write5 D- N! L8 E- Q- J3 P! V' J, P1 q$ }
  1056. LDA #$00
    ) f- j& f  |. ]/ {! u1 L- c$ ]  K# J3 z
  1057. STA PPU_ADDRESS0 W7 v2 o7 p% Y+ K( w) k
  1058. STA PPU_ADDRESS
    . R7 q9 ]% {& `" ^. l9 Y+ c1 Y" l( B
  1059. LDA <Text_Disable_Flag  [# r+ B" M9 e/ J* b; s0 o) o
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF3 _) ~; }# Q9 {7 P# y4 M$ c
  1061. STA <Text_Disable_Flag
    9 e2 c3 ^+ V# i) Q5 Y6 p
  1062. LDA #Scroll_X! O$ v! r+ g# q, }: N5 F& k" S
  1063. STA PPU_SCROLL
    9 A# Y7 P$ {8 V8 O/ C6 `5 n# C3 n
  1064. LDA #Scroll_Y
    3 Z5 i- M2 u" M+ n/ X
  1065. STA PPU_SCROLL
    + B( u5 C$ }4 _; r4 ]9 O# `7 t5 ?+ X
  1066. LDA Screen_State7 e/ [; W! u# Q( }$ I* E
  1067. STA PPU_MASK
    9 o8 g) t7 O1 v# D7 ]  |7 Z* A
  1068. RTS5 B2 {, [! n: ?3 x/ s: q
  1069. ! G$ h7 C0 \: \" w+ I; p! Q, r, r2 G7 P
  1070. PPU_Proc_Clear' ]& w( s% O, b
  1071. INX% H- O2 l; Z1 n8 T. h
  1072. LDA PPU_Addr,X
    6 T7 N% s! ^* K3 H
  1073. STA PPU_ADDRESS- z8 e4 d- l* O0 I* u7 Z( Y
  1074. INX
    8 e: S7 m, I/ K9 ~/ j
  1075. LDA PPU_Addr,X
    4 }! D- g+ i: X% D  v$ r# w% m
  1076. STA PPU_ADDRESS! [# h, h6 }. x1 p/ _8 O, T
  1077. INX
    5 ~- U( ~1 W- h
  1078. LDY PPU_Addr,X' v8 e+ M1 l" l: s
  1079. LDA #$003 M; F% F) d* R7 |( D& b' z% `1 `3 y% h
  1080. PPU_Proc_Clear_Write1 Q% h# D3 K* d1 H! {2 y9 K6 k. a
  1081. STA PPU_DATA
    & Z* {3 A8 `9 D0 Q9 p* U- F
  1082. DEY% d0 U' h, v: E# l0 o+ L, O& x( v5 j
  1083. BNE PPU_Proc_Clear_Write! G& ^7 W* m9 d0 C( w
  1084. JMP PPU_Proc_End5 Q4 c, I+ i1 ], F0 h
  1085. * F3 @5 D) L! s0 u( |" @4 {
  1086. PPU_Proc_Cnt_Line
    ) s1 ]# L% t8 H* c
  1087. INX* D( m% g: D: K6 v; L
  1088. LDA PPU_Addr,X3 r: ]; R1 L4 O
  1089. STA PPU_Addr_H
    8 |+ H" v) {8 M1 f- M6 q0 C: D# g
  1090. STA PPU_ADDRESS% s$ Q! ?0 w& I) n' o6 ]: Z+ Q
  1091. INX( i& V$ T$ |. }5 D$ o6 e/ `
  1092. LDA PPU_Addr,X) s, y* o3 A  |4 _, @! u( V  M: W2 j
  1093. STA PPU_Addr_L
    4 I/ E+ s& Q3 R( i; r. l1 p/ Q+ s
  1094. STA PPU_ADDRESS
    8 ~$ E. @& x( C
  1095. INX
    # _' w1 ~7 z' a! x" _" A) h3 i0 l
  1096. LDY PPU_Addr,X7 `% I) A4 u. ?: p" v
  1097. PPU_Proc_Cnt_Line_Write
    7 B7 x# e* u  ^& Z$ U# `
  1098. INX
    . U0 ]$ U4 E7 b6 r* j# z3 k
  1099. LDA PPU_Addr,X8 \) i; S. a8 Z& G$ ~
  1100. STA PPU_DATA8 `% q4 O* a  c: D
  1101. DEY- o9 e- S* `/ v, F# v8 H% r, O, e
  1102. BNE PPU_Proc_Cnt_Line_Write
    , U; B2 q: S5 }$ r
  1103. JMP PPU_Proc_End
    * s' G: x% x* S2 M
  1104. ! C9 V5 ?, e; ]1 r: Y9 A
  1105. ;==============================) P' l  t8 i0 O: p0 p0 a
  1106. HEX_To_Dec;十六进制转十进制
    & ?* X- A( f3 x! W
  1107. STA <HEX_Data
    , u5 U( R+ q9 @" w. N
  1108. PHA
    4 P+ \& k7 c2 ^' s: [& ~2 x4 m
  1109. TXA
    , G3 J) C( E) X. \" N, X1 H
  1110. PHA
    3 ]( k0 e  x* V+ |' o7 Q
  1111. LDX #$00
    % F0 f% D6 D" \* ^; _
  1112. LDA #$00
    2 s9 |6 Z. O: o1 N4 v( w
  1113. HEX_Cln7 k2 g0 v7 j) {: ]0 K1 m( o4 A
  1114. STA <DEC_H,X; m! d9 i, @: d: v5 M1 C% F
  1115. INX9 m  y2 a* }  B. ~( O9 R5 B
  1116. CPX #$030 Q9 p8 I6 E; W5 @6 L: R9 b
  1117. BCC HEX_Cln( E$ }9 E" R7 w# F
  1118. LDA <HEX_Data, e5 |! ~, V8 J/ L
  1119. ;------------------------------. g8 ^( Z9 \7 h
  1120. HEX_100
    ' H) h& H& p0 v! `, n
  1121. CMP #100
    & O  T- W- a' |: v# N
  1122. BCC HEX_10
    5 a. X! K' z$ K4 Z( m; e' |
  1123. SEC6 {  Z# ]/ P2 j8 b% Q( q# X! G
  1124. SBC #100
    ! e4 G5 R1 a7 t% v4 n5 V! W3 q/ F
  1125. INC <DEC_H
    % q8 X# A# q( T4 }
  1126. BNE HEX_100: f/ ~$ o+ l) b/ Q# q- f) \
  1127. ;------------------------------% C: t% |4 A9 o
  1128. HEX_10
    " @7 x0 ?, {+ x. `6 D
  1129. CMP #10
    0 ?6 E, \0 A9 D- d% q
  1130. BCC HEX_1
    ! j: s0 ^# Q5 D" F) o2 _' s" Y8 P
  1131. SEC1 q6 R9 R2 T) P1 Q) G7 z
  1132. SBC #10  R  o3 B! @) `7 I* O8 [% ?( s
  1133. INC <DEC_T6 h- p8 W4 o' U  `/ w$ y
  1134. BNE HEX_106 w: n4 A) I4 W1 r# y0 P2 J
  1135. ;------------------------------% K5 A" h+ M) ?5 M% `7 Y4 v
  1136. HEX_15 L. g. X8 E) d+ f$ [
  1137. STA <DEC_L6 g; }8 N$ y' Q. C
  1138. PLA
    5 b& j( ~' |- i, ]7 D, Q8 ^
  1139. TAX
    $ ?6 p' k" S' V$ b$ I
  1140. PLA4 P8 m0 z# ]' z5 Q7 d0 U
  1141. RTS6 z8 t. ]. o4 w. p+ q1 A% `

  1142. . A/ g% _7 d2 m$ S+ V3 a1 O
  1143. ;==============================
      T0 n* V0 k- t  x1 x; c# v9 A; P
  1144. ;音乐曲目显示
    ' d+ \8 ~& C- u6 _
  1145. Music_Show! {/ r: A! T3 M1 s) c$ e6 c% A
  1146. LDX <Music_Item_Cur
    + b) e) w# p: \' p& f4 b
  1147. LDA <Music_Cur,X, L. m0 z8 _/ M" l; Z* A
  1148. CLC
    6 T1 _' i9 v' Y8 j% P3 a
  1149. ADC #$014 m# [8 \- _5 O$ g0 J4 ~: V3 \/ h1 O
  1150. JSR HEX_To_Dec: t9 Z2 V4 B1 y3 j
  1151. LDX PPU_Cur
    ( y+ N  _/ s( Q2 p1 o! I
  1152. LDA #PPU_MODE_CNT_LINE
    3 r* m+ o/ p) I; N& W; t8 l+ o
  1153. STA PPU_Addr,X
    7 S# u7 ^6 n* Y
  1154. INX0 e; N3 K; w% @% y7 W* E( X
  1155. LDA #HIGH(Play_Index_Pos)" r8 O8 Y0 H2 K
  1156. STA PPU_Addr,X
    " v8 T6 Z- q# ~$ E
  1157. INX% B( A8 i2 x! j9 }& M
  1158. LDA #LOW(Play_Index_Pos)
    ; r* g2 W' A3 M& ~' e: D
  1159. STA PPU_Addr,X
    8 b5 j3 b4 S$ }7 m9 g6 G
  1160. INX
    $ ^4 t3 E/ P% N7 J8 X7 e" t, W

  1161. , Y" \6 R! {8 y* b$ O) v
  1162. LDA #$07
    " @, K, D4 s! t1 u
  1163. BNE Music_Show_Length
    . x& \' r5 v  X2 z% j
  1164. $ v8 A9 f" E! a
  1165. Music_Show_Length: z1 M  c8 n, k- I
  1166. STA PPU_Addr,X3 t- r* h: F+ C, w$ V
  1167. INX
    ' q2 I, I, I  _6 {3 V
  1168. . r- V0 u. u+ u
  1169. LDA <DEC_H0 b! N. R5 p5 H
  1170. ORA #'0'
    ) a# d9 b: I- K$ S
  1171. STA PPU_Addr,X
    , c$ ^* J" b+ R: \3 p% G6 J2 t' W
  1172. INX
    6 y0 b/ i$ g- m2 Q( N' j

  1173. # P+ ?; C0 U, b
  1174. LDA <DEC_T
    2 E8 _8 E( i3 d
  1175. ORA #'0'
    , O6 V5 O: D* B! K9 E* F
  1176. STA PPU_Addr,X
    / y# o0 X, p! n0 G5 \- R
  1177. INX0 g6 v4 J8 t' Q% u' ^4 u/ m! K9 p
  1178. ( t$ M- S( [- \5 D5 o( ~
  1179. LDA <DEC_L
    % X' W' a: C0 j9 P1 g
  1180. ORA #'0'* e( @4 z2 U3 S' V
  1181. STA PPU_Addr,X
    ( ~& e- R9 L* H0 |: }9 r
  1182. INX
    - O- }& t9 Y5 o/ l' b9 f" I7 N
  1183. / |, R, |( N: x5 k0 s" ?
  1184. LDA #'/'0 D# w7 b0 [0 ?5 {. F
  1185. STA PPU_Addr,X7 e2 D3 n/ |6 \" k% D
  1186. INX$ z6 T+ x1 L2 N6 y
  1187. Music_Show_Total
    1 S  t1 V% G; f/ d6 P9 ]- t( i
  1188. LDA Music_Total
      k- G; w/ \. |8 J) Q
  1189. CLC
    ; v* I1 d7 l2 S: ?+ Y  b+ H$ `
  1190. ADC #$01
    9 O8 f' P: O- R- |" y) l
  1191. JSR HEX_To_Dec
    " g: Y% w' w2 c4 u/ S1 V) a1 @" K

  1192. 5 B9 t3 [4 l: y* j) j- O
  1193. LDA <DEC_H$ [' [( ?/ W1 D0 W$ k3 }
  1194. ORA #'0'+ L- y- O5 c) Y
  1195. STA PPU_Addr,X8 ]8 u* u% X- q+ p2 B
  1196. INX* h- a. A; V! }
  1197. ( ]/ |. }! i' T( S7 U9 y" B. t
  1198. LDA <DEC_T* F' b+ j1 A$ `) D. D
  1199. ORA #'0'
    4 }' s; D+ Q; E& ^9 w- s# j* Q8 T
  1200. STA PPU_Addr,X
    9 [* d' T3 I  N5 H, d' Z
  1201. INX% b4 b- x/ R% D! }5 \/ z

  1202. ! L! g# n( {, A& ?+ t& C, `+ c
  1203. LDA <DEC_L
    0 P* j3 H! M( ]9 X
  1204. ORA #'0'
    & n( }1 Z* J# D& \: L
  1205. STA PPU_Addr,X2 C( L7 k, ^7 [/ ^+ Y5 y
  1206. INX
    + V0 b4 x" T1 ]% T# ]. g
  1207. 9 r' e0 w8 {0 L0 B4 J9 p, e
  1208. STX PPU_Cur7 A4 u; Z8 O* U2 |' o" P0 y8 f
  1209. Music_Show_End
    % i* L+ d& ^- H9 `  }4 Q+ G
  1210. RTS. d2 ~( a8 u* r* @
  1211. ; b8 [6 t2 _* g' i2 b. R
  1212. ;==============================' T4 |# Z, t' n8 l& s
  1213. Time_Show;播放时间显示( v- Y% z' `5 n6 v; T( p# D: E
  1214. LDA <Text_Disable_Flag
    3 C. D2 Y6 h8 U
  1215. AND #TEXT_DISABLE_ITEM
    # F8 [5 G) D9 m2 W% s* k
  1216. BNE Time_Show_End" H" Q8 O/ {: v- Y
  1217. AND #TEXT_DISABLE_TIME) [. a: T* g7 J6 Z+ @  w
  1218. BNE Time_Show_Enable8 V7 S8 p- E& p* B9 O
  1219. 0 X% M$ C5 G; q
  1220. LDX PPU_Cur
    ' Z0 q: h8 R! q' t0 u0 b# w# [
  1221. LDA #PPU_MODE_CNT_LINE
    , }$ }9 r' B2 q3 i" V3 ~+ D
  1222. STA PPU_Addr,X) X( l/ x2 ]' |' t7 o: V
  1223. INX
    % m! Q/ q9 l/ f6 |7 x# O  e2 @
  1224. LDA #HIGH(Play_Time_Pos)- C3 ~- U; X5 X& V4 T6 c. A
  1225. STA PPU_Addr,X
    / N* m$ H# _* A" P6 Q7 T
  1226. INX, D& h2 k7 u+ L! V7 t! |" ^% n; J# X
  1227. LDA #LOW(Play_Time_Pos)4 _3 A6 i' b( P
  1228. STA PPU_Addr,X5 i% N/ S3 Q2 T- @; q& P5 T- m
  1229. INX! ~+ E& R+ e6 W+ i: ~
  1230. LDA #$087 [% y% K2 Y. p3 i
  1231. STA PPU_Addr,X% R9 [$ E$ [4 ~  O! A
  1232. INX
    ! K4 s7 p6 m1 f( x+ e
  1233. Time_Show_H
    6 k6 g$ V* F$ m6 N
  1234. LDA <Time_H4 q: e! G  v' F3 x
  1235. JSR HEX_To_Dec: P1 r4 H8 Z8 j7 f; g# l
  1236. JSR Time_Digit" a) j% o# c+ u
  1237. LDA #':'3 _+ u  t7 M9 |( M! A
  1238. STA PPU_Addr,X
    - S2 E. d6 t' q% E
  1239. INX- u; \) C  V) Y' P( d' O' h2 w
  1240. Time_Show_M
    % F3 `6 h- h5 d/ F  a6 G
  1241. LDA <Time_M
    7 e1 ]9 T9 u5 k2 x) R/ y3 u& p
  1242. JSR HEX_To_Dec
    ) J# p. _- E& A4 R" P, L
  1243. JSR Time_Digit* K3 n  k/ v. n4 _4 V
  1244. LDA #':'8 m4 C% R. s, {! `
  1245. STA PPU_Addr,X  Q, n- `7 @/ U$ M- B( y) ^1 L
  1246. INX
    - Y! L: j* ]! U9 D
  1247. Time_Show_S
    ( J! p  S# x& ~9 ^" u6 u
  1248. LDA <Time_S5 f4 T3 B; s9 K- K7 T2 }; E
  1249. JSR HEX_To_Dec
    ) l2 g  ~+ |" ^+ @+ s  J
  1250. JSR Time_Digit
    6 x0 a$ u8 I0 f% d+ Z8 \/ o
  1251. STX PPU_Cur; L2 g3 p5 R% v9 g% }& n4 K
  1252. Time_Show_Enable
    / q6 j% E- j& R
  1253. LDA <Text_Disable_Flag! T5 ?- p4 W3 h( |
  1254. AND #TEXT_DISABLE_TIME ^ $FF) R* B7 b# P1 b/ r) r) G2 a
  1255. STA <Text_Disable_Flag
    + t# E9 _. c% g: ?- Z. m( W
  1256. Time_Show_End
    7 W; p, o# r9 I) x4 f& N; D  L* t
  1257. RTS
    ( c, {6 O1 w( \4 ^4 P/ n! _

  1258. : [# ]  s' M3 j
  1259. Time_Digit
    4 ?' q0 P2 ?, d* w
  1260. LDA <DEC_T
    0 Z" ^6 S+ ]. z, z! ~  @3 x
  1261. ORA #'0'
    , R4 G+ [  M1 ^% A7 R3 F  G
  1262. STA PPU_Addr,X( ~+ V2 @2 d% b! Y1 j1 ~% U5 m  \
  1263. INX
    + s( s. _: q5 c" C* r/ g
  1264. LDA <DEC_L
    8 t' u0 N6 f% T" R" r
  1265. ORA #'0'
    , o1 ]. m- `+ z8 Z
  1266. STA PPU_Addr,X
    $ j2 m/ H/ e2 O- T; U9 d# \6 X
  1267. INX6 Z( O. n/ Q5 e+ A6 C/ M
  1268. RTS
    * }1 C3 s% ~0 I8 N9 x2 I+ c( q9 x: g7 u

  1269. 5 P# v; @" Q/ x! o& u" _
  1270. ;==============================0 n5 _6 i) N. O/ e/ H
  1271. Time_Count;计时
    3 Y8 }5 q8 b# H3 E! R1 {& N
  1272. LDA <Music_Stop_State
    & O( ]$ X: Y1 U5 U$ w& B
  1273. ORA <Time_Wait_Cnt
    ( ~/ a) i7 k0 I& ^
  1274. BNE Time_Count_End) Y2 u( k4 c) H5 e# ~: N
  1275. INC <Time_Cnt
    . K1 B( q# w7 N6 b. K
  1276. LDA <Time_Cnt
    $ c. S0 X8 L! o8 U0 t  ]
  1277. CMP #60
    4 {6 q& Q9 j" t/ i. ]# w
  1278. BCC Time_Count_End9 P7 D+ V' U2 V4 c" y3 i
  1279. LDA #00
    4 Q% B7 K* ?, p! H3 A
  1280. STA <Time_Cnt. u& H5 [# Q6 O' \3 r+ T2 A
  1281. INC <Time_S
    " |6 [' P3 L+ h4 V1 x1 k* e6 c) P

  1282. % g4 T9 Z- N0 v1 k
  1283. Time_S_Cnt
    4 Y# N  P; J& X% X
  1284. LDA <Time_S
    6 M: h) y+ q% T2 V1 I6 J* |1 v: X0 |
  1285. CMP #60
    ( x- f2 C0 W* m  h: V
  1286. BCC Time_Count_End. U1 S) m/ t) x% f7 [$ Y
  1287. LDA #00! X7 X, [# n  J+ L* S+ p
  1288. STA <Time_S
    ; L* T9 _! O. _7 W
  1289. INC <Time_M2 J4 C7 Z( W: u; U, Q2 E% D

  1290. : b# ^$ S, o; r) [& h/ l8 W
  1291. Time_M_Cnt" S3 K6 |0 q$ N& E* R
  1292. LDA <Time_M
    6 g3 l" W5 ~* _2 I  {: M2 C
  1293. CMP #60
    " P$ N, {' a! D
  1294. BCC Time_Count_End
    7 A( B  d# E6 Q3 `9 a
  1295. LDA #006 S$ X0 g! C7 o$ v3 E1 f
  1296. STA <Time_M5 }8 i; {2 v2 J9 [5 Z5 J
  1297. INC <Time_H, u+ Z; u- X, r# P' s( l6 D8 f* p

  1298. : p+ z. D* G$ u9 i2 r
  1299. Time_H_Cnt/ _  w! x- d) c
  1300. LDA <Time_H4 o+ E# p, y1 J
  1301. CMP #24+ d" `' A9 B! h7 n# w
  1302. BCC Time_Count_End
    0 @5 f: ~5 D& y+ R/ b! i2 J
  1303. LDA #00
    ! J. {" `$ x2 {- K
  1304. STA <Time_H
    9 Z2 l( q) h5 j1 l% c
  1305. 4 [! ^+ L  c4 s5 ?* O  g' i
  1306. Time_Count_End
    $ t5 W4 ^) S9 a* j1 }
  1307. RTS
    & S- V+ R+ L+ k
  1308. ; E& Z7 y5 \5 b
  1309. ;==============================' y, g6 j+ K! D0 ~. [$ r2 \
  1310. Time_ReSet;播放时间重置
    3 ]- \7 q* X4 V/ P' j6 F
  1311. LDA #$00
    " n# H; W" x* m1 d& U: l5 a
  1312. STA <Time_S
    7 k# E- P( G3 @: {+ e
  1313. STA <Time_M , w% N' P, a) H- Q5 w) Q) T
  1314. STA <Time_H. J" p4 \. ?# E8 z$ [
  1315. STA <Time_Cnt+ j; K( V6 ~2 f
  1316. RTS7 H$ }! z5 P' Z  ^) W

  1317. ! {; A7 T: N3 I' A
  1318. ;==============================
    1 f( u# w7 a, d9 S( v
  1319. Music_Bar_ReSet;音乐条重置
    $ A! o3 n3 ]7 `$ f1 J
  1320. LDA #$00
      J% F4 c* v& y# b
  1321. LDX #$00( B! b( _2 t- R3 h
  1322. Music_Bar_ReSet_Set* x4 `! m- f' g8 L
  1323. STA Sound_Bar,X# f( l- P4 _) O0 b
  1324. INX# _: [. O  z" \* a1 |4 g3 @: n
  1325. CPX #$10. }) ^$ h; n! w8 S! P& y
  1326. BCC Music_Bar_ReSet_Set; |, p$ s2 p% ~/ B# c; T7 ~+ Z, {
  1327. RTS! N+ k# m$ p3 c9 _. B

  1328. ; o3 c" m: S, w: M7 [$ g
  1329. ;==============================
    ; A1 a$ L* [' K5 j
  1330. PPU_Data;PPU数据写入
    * ^7 T+ {/ t, |. B9 U
  1331. STY <Data_L
    * I) h, ?0 ^! a. @( m
  1332. STX <Data_H1 u  {' H. e) v5 |" Z
  1333. LDY #$FF0 {0 o! l( G3 R4 d1 X" i
  1334. LDX PPU_Cur
    & e0 J0 u! W8 z0 n$ n, T
  1335. DEX
    4 H2 ?! J( ?7 a! y2 F  O4 V
  1336. PPU_Data_Beg# A0 w; r, T! z- Z
  1337. INX
    6 J4 e4 `" `+ @) F* Q& a; T
  1338. INY
      |6 X+ b0 @8 @
  1339. LDA [Data_L],Y
    " @9 u5 {. r7 O0 I1 R' w' q
  1340. STA PPU_Addr,X6 z9 K& j& e+ G" z3 M
  1341. BNE PPU_Data_Beg  X) h1 k- f# h1 P3 O( j' F
  1342. STX PPU_Cur
    % |# M8 h2 r' g) w5 h
  1343. PPU_Data_End$ F4 B6 X  M  X( l8 |5 H
  1344. RTS
    6 O4 w' w2 Z! T) t0 _
  1345. 5 a! _  D5 {* p
  1346. ;==============================2 r  K" Y, G  C# ]! N# y7 t: b
  1347. Music_State_Show;播放状态显示
    # M5 {' T0 I$ F& o
  1348. LDA <Music_Stop_State! @4 b+ W/ g+ W4 O$ |! F. r( Q
  1349. BEQ Music_State_Show_Play4 X( `% r, D6 c! s( T
  1350. Music_State_Show_Stop: w, D  w& l- ?4 j4 Z
  1351. LDY #LOW(Music_State_Stop)
    * _/ T! H" M! N: `# k: v
  1352. LDX #HIGH(Music_State_Stop)% I# d/ l. k) u5 V( w
  1353. JSR PPU_Data# q# K! {2 X) `* C' _
  1354. RTS1 [. A" m' I; K
  1355. Music_State_Show_Play$ N. |6 ~+ L3 i
  1356. LDY #LOW(Music_State_Play)
    - W3 d% L% {# v7 d7 ?: v$ d2 h
  1357. LDX #HIGH(Music_State_Play)
    ; Z0 g9 R. \* X8 P% B& x6 V
  1358. JSR PPU_Data
    ( Y2 ]# y  F5 A* |1 S" Z; N
  1359. RTS6 G$ @  o2 ]3 Q

  1360. # {# G0 h! I4 T! s" `
  1361. .IF SOUND_BAR_SHOW_ENABLE
    ; f, J, P. t1 q, i- ?& @
  1362. ;==============================
    9 ?8 N0 E2 m9 A5 u' f8 P5 Z
  1363. Sound_Bar_Text_Set;标题与音乐条初始化7 N+ z% c/ y6 F! @. W; b
  1364. LDY #LOW(Sound_Bar_Text_Data)# y  g, K! H8 S" l' [0 N
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    9 o' I/ O' r, G! J) l! ]
  1366. JSR PPU_Data; [" }# X, C# }* g. h
  1367. RTS
    3 s( N3 Z: m/ [8 c. {3 @' S5 w9 O

  1368. % d1 ]" a' |) z6 w4 W# Y
  1369. .ENDIF
    6 V) _0 d2 R0 ~6 v+ H

  1370. 9 D( A' ^/ y  y+ d4 s) T
  1371. ;==============================. T3 s4 @, [3 l& Z8 i: @# W* ?7 Y
  1372. Set_NameTable_Attributes;设置命名表属性0 i! t9 L0 q4 y8 {! B0 t) e) D
  1373. BIT PPU_STATUS
    . ?2 j8 @, E! q0 t8 [# k
  1374. LDA #$23, n) |0 j5 N* E+ A/ Z9 c6 o7 t9 ^
  1375. STA PPU_ADDRESS
    % m& J( s/ W  O6 L' V
  1376. LDA #$C08 i& h+ _( T3 I! `- a; s3 B. c7 Z
  1377. STA PPU_ADDRESS
    ( u: ~$ Y1 k( z/ @1 L9 L
  1378. LDX #$00* E9 Z& ~' ~: L% S$ v
  1379. Set_NameTable_Attributes_Write( e3 t" q( u. D# X& U( I, }: ~
  1380. LDA Palette_Attributes,X. l+ W( h: F" j4 F4 k( o5 T
  1381. STA PPU_DATA
    9 w- V. I# \# Q; ^
  1382. INX6 [  f6 M' E- I( [0 A4 Z- i6 K
  1383. CPX #$400 v$ b. ?, [0 Y4 b
  1384. BCC Set_NameTable_Attributes_Write
    # D1 J7 C$ g! {* Q" ]6 d
  1385. RTS# t" H- P5 }) x! x2 N+ \1 E. ^& [& s8 g  A
  1386. $ P9 @4 U2 H1 @9 t* i
  1387. ;==============================  J# M" n+ U, s
  1388. Set_Palette_Color;设置调色板数据; X) d3 A* o6 o; Q* ~
  1389. BIT PPU_STATUS- j1 Z& e' j( i8 Y
  1390. LDA #$3F
    . ]3 A8 O2 z5 H' y# R6 n) h
  1391. STA PPU_ADDRESS. w. f+ A: H6 d6 I
  1392. LDA #$00
    : h! |  Z* {7 R0 L
  1393. STA PPU_ADDRESS! ~! a& G1 z, S
  1394. LDX #$006 N- N4 K5 s/ q/ H. O5 I' w/ x/ W$ u* L
  1395. Set_Palette_Color_Write  W% U, \3 M1 F$ V" \
  1396. LDA Palette_Data,X
    * S, P$ }6 ?- Z! ^
  1397. STA PPU_DATA
    : S2 M4 c$ ^2 ^  X% l  \
  1398. INX
    ( L0 \. W# f5 _* z- r
  1399. CPX #$206 e5 W0 M; A* b: m9 P! r7 w
  1400. BCC Set_Palette_Color_Write; y+ K' Y8 v7 k( L5 p) J
  1401. RTS
    * I: x8 Y1 I: e+ o+ h$ }- w
  1402. ) E7 r" ~2 D5 S+ U
  1403. ;==============================
    ( }' F: O9 P; w0 w# B
  1404. Init_Palette_Addr;初始化调色板数据' V' M1 N( u; T3 n/ d+ ]: A
  1405. LDX #$000 a  a# a, o( P
  1406. Init_Palette_Addr_Write
    ' S' [8 z$ f9 G4 s5 w& z9 w
  1407. LDA Palette_Data,X
    ( v% H& u4 }' g' l% e- g
  1408. STA Palette_Addr,X9 @" n2 N9 L# Z
  1409. INX- S( j9 O% b! [  O8 a% O
  1410. CPX #$20
    ' v, ~+ V8 _. Y( y2 j8 N
  1411. BCC Init_Palette_Addr_Write
    % T1 z6 {; G( M3 P
  1412. RTS
    ! \: A1 V; O) m9 g

  1413. 9 D! n8 M$ N4 ?& i1 q& }% M- W4 n
  1414. ;==============================
    5 ^: Q- S9 z$ [
  1415. Update_Palette_Color;更新调色板颜色
    7 I8 S. d' p9 f6 y+ G1 Y
  1416. LDA <Palette_Update_Flag
    ( H8 ~* i5 g4 f$ L
  1417. BEQ Update_Palette_Color_End- D0 E8 `$ u# l
  1418. LDA #$3F+ u7 p" D  r- v2 _; \% _, J
  1419. STA PPU_ADDRESS/ q6 D3 n* i) a- [* `: D
  1420. LDA #$0C2 M7 v7 I: L3 K7 D, S
  1421. STA PPU_ADDRESS% D6 e9 q6 d+ o6 `" }# B0 E
  1422. LDX #$0C
    * G4 q0 E7 s' t
  1423. Update_Palette_Color_Write7 o4 D' [+ a' P# X0 R5 P8 X* \8 Q
  1424. LDA Palette_Addr,X
    ' T' d+ ?0 _9 y; v: n) z1 B
  1425. STA PPU_DATA0 T: n$ e% \& y$ J$ W1 r
  1426. INX+ X4 q4 C! g) x& _, G
  1427. CPX #$14
    & w" e" l: @6 M; l0 T/ D1 E
  1428. BCC Update_Palette_Color_Write
    4 M3 W5 d/ T+ A
  1429. LDA #$00
    5 `" V4 P; L# ^0 e" y3 m
  1430. STA <Palette_Update_Flag: X% J# U9 [- {/ P* F
  1431. Update_Palette_Color_End" M" ]1 ~- T+ w: o1 s, @
  1432. RTS
    ' E8 g  `& r, g/ F

  1433. ! F( l! W: m, Q: A7 ?; m* F
  1434. / O3 c- `& m7 z  g0 f9 y5 x% Y6 x
  1435. Update_Sprite_Palette_Data" l3 n( j- g8 k+ I
  1436. .DB $21) S1 v& v7 [. c2 u9 U& w. }! c
  1437. .DB $21( q; [& \- j6 {8 A! u
  1438. .DB $113 g. r! _0 Q% v9 Z
  1439. .DB $01# r* J# a- P6 t9 Q+ E6 }& P
  1440. .DB $01$ G# k; N+ {# s5 x: d  S
  1441. .DB $11
    . H5 i9 l3 N2 k, D. p
  1442. .DB $215 W7 N( e) ?/ s1 [: C
  1443. .DB $21
    . Q. u0 {; T6 C0 Y) u
  1444. .DB $11
    9 k7 o9 G+ ?0 {3 J7 _
  1445. .DB $014 R# ]7 b3 J$ @; r! r+ H" f+ B3 M) I
  1446. .DB $11
    # B, z. z6 T8 H& w& @, ?( H
  1447. .DB $21
    * H& x2 s  p1 b
  1448. .DB $21
    9 }" N3 F9 S$ j" ?7 Y1 [0 l& w
  1449. .DB $11- l- S6 v5 E" K. h* \
  1450. .DB $01
    / g" p6 n: E! ^( B
  1451. .DB $11- L2 @0 q( {# R2 t1 B
  1452. ;==============================0 u' g3 W; d+ Y# j7 P
  1453. Update_Palette_Data;更新调色板数据
    ; l6 _# b% ]2 x# \6 I4 v
  1454. LDA Nmi_Time_Count
    5 [% ~' ?* A, a" C# A; U
  1455. AND #$08
    ! s! y. H- ~8 B  f) X# p! Z
  1456. CMP #$083 |2 }# J: K6 t% \
  1457. BNE Update_Bkg_Palette_Data
    * O8 h2 g  J) k* E
  1458. % S' l8 [5 t2 O  Y, G1 {
  1459. Update_Sprite_Palette_Data_Set
    " c8 D% u( O% B
  1460. LDA Nmi_Time_Count7 H: }& G+ a0 x0 i9 P
  1461. LSR A
    4 [; u, |$ n9 ^; ^
  1462. LSR A/ d, @: ^8 F6 x+ n% g9 @1 b. A
  1463. LSR A
    - U3 \- p5 l) z
  1464. LSR A. D1 L/ ~3 a. K3 ?  P! ?
  1465. AND #$0F
    8 n  S/ w4 Y7 ~3 \
  1466. TAX
    6 |0 v  \) P7 @6 U
  1467. LDA Update_Sprite_Palette_Data,X
    8 k& [+ N% o& Q* @" Y
  1468. STA Sprite_Palette_Update_Addr/ g8 d) e" w& ?7 l5 H
  1469. LDA #$01
    4 I6 e3 [1 r: y1 F0 f5 L
  1470. STA <Palette_Update_Flag- R2 |' B& G7 @3 G. E  Z( `  T
  1471. ( U5 C: k+ g8 I- n
  1472. Update_Bkg_Palette_Data( @. B9 l) }; @* Q3 [9 j; O1 {
  1473. LDA <Text_Disable_Flag
    $ J: Z; r5 m2 A! }2 A. z
  1474. AND #TEXT_DISABLE_RAM- l0 S3 Z: B8 L
  1475. BNE Update_Palette_Data_End- }$ ]" I# Y: z5 n8 E! D
  1476. LDA <Music_Stop_State
    # e  |8 `% }1 M* ~7 P. c/ x
  1477. BNE Update_Palette_Data_End
    8 M3 \2 q8 r* h3 l' E' z
  1478. ! w0 u9 t% p& X/ k; M6 T
  1479. Update_Palette_Data_Check
    ' J) c8 ~' Z8 L
  1480. LDA Palette_Wait_Cnt+ r+ @4 M4 y) t0 {. M0 c1 a4 {+ z/ e
  1481. BPL Update_Palette_Data_Check_Over; j, i' `2 [8 Q+ F# h+ ~
  1482. LDA #PALETTE_UPDATE_INTERVAL
    * N+ I$ C8 Z. U$ N# p0 Z* _; O
  1483. STA Palette_Wait_Cnt- \3 w- L$ V) ?& W' X
  1484. Update_Palette_Data_Check_Over0 j+ o2 w. j$ E- \. i
  1485. DEC Palette_Wait_Cnt
    + s; |8 I) @, I9 l8 Z1 a4 b4 @
  1486. BNE Update_Palette_Data_End
    ' u0 Q) S/ [' I, @. O7 f

  1487. - t+ c* n+ Y  [% [$ z; K, T2 r
  1488. LDA <Text_Disable_Flag
    0 `; Z8 w' `! ]
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME5 u( m  [/ ?* ]& h8 g% K5 a
  1490. STA Text_Disable_Flag
    ' B8 u$ o9 `! N5 Y& s( B
  1491. INC Palette_Update_Flag
    % \# ^6 |7 {. r) S2 U
  1492. + L9 a- |0 r* F
  1493. LDA #PALETTE_UPDATE_INTERVAL
    & z6 G5 t- W6 w; O% G" C6 h
  1494. STA Palette_Wait_Cnt, ^* N# p4 ~8 K# L8 x* V
  1495. / o1 U6 J' v# h( J9 i5 C1 u
  1496. LDA Bkg_Palette_Update_Addr. f7 G; I% F+ ^( D+ a, j" @; {
  1497. CMP #PALETTE_UPDATE_MAX
    ) d. _' @* G1 J/ {3 \* d
  1498. BNE Update_Bkg_Palette_Data_Set
    $ t5 ?; z+ J3 |" j3 [
  1499. LDA #PALETTE_UPDATE_MIN - 1, y0 y4 Z# r% q$ L* ?6 ~- m
  1500. STA Bkg_Palette_Update_Addr
    4 G  _2 S0 U7 W# ~
  1501. Update_Bkg_Palette_Data_Set
    6 J& S! d' i4 U4 w  a
  1502. INC Bkg_Palette_Update_Addr. ]/ f2 f+ }. S1 U8 L
  1503. + o+ D5 N2 J6 m2 D" D# C
  1504. Update_Palette_Data_End9 P! q8 l; w' k9 }5 Z0 ^
  1505. RTS/ y" ~, l* a4 D& X) m$ Q
  1506. 1 R5 b- X1 k5 w
  1507. ;==============================
    3 V! ~; a: x# j
  1508. Show_Music_Text;显示静态文本
    7 [) T5 y+ K0 x# _8 Q/ u
  1509. LDX #$000 D; z% t- `/ A& Z3 |% Y% v/ I
  1510. Show_Music_Text_Set
    , ~% P3 n7 |6 B
  1511. LDA Static_Text_Data,X5 K+ W* [2 K" T* N5 y) U" z" m
  1512. STA <Data_L
    ( D# }* k8 q# U+ O2 k2 m
  1513. INX
    2 q* [1 \  x% f( z( R
  1514. LDA Static_Text_Data,X$ \% }' X5 K( D4 E0 G
  1515. STA <Data_H
    2 ], ^3 u% H; _: P- R- N+ Y
  1516. INX
    / R' a1 T; {7 E! s, i2 l3 p$ r
  1517. LDY #$00
    ) q* ]: q2 P! D
  1518. LDA [Data_L],Y0 N) t6 ~! g* e' S3 f+ |
  1519. STA <Data_Cnt
    1 C$ M$ ]5 F$ u$ n, F) V6 Q: j/ _  c
  1520. DEX
    4 X1 h, B5 g* G8 ]+ @
  1521. DEX
    % X: _" e7 o  K: z# @
  1522. LDA Static_Text_Pos,X. x) e& G! X4 }0 [2 t# ]/ c2 G
  1523. STA PPU_ADDRESS
    4 q, G  U: g. L4 F! y0 J0 {" q
  1524. INX
    4 ~' W) z$ y6 e! e+ J
  1525. LDA #$20
    % A/ u) g& b) N
  1526. SEC
    / l9 ~% e9 [  a1 [6 [
  1527. SBC <Data_Cnt
    7 @/ K  y7 R% ]3 s* p
  1528. LSR A% K0 l& q) k; E1 n- l/ \
  1529. STA <Data_Buf
      ~4 V5 }3 V: R- _/ g2 f
  1530. LDA Static_Text_Pos,X) K3 K& D  T9 ~
  1531. AND #$E07 M( `6 k3 k5 C
  1532. CLC4 I7 I0 ?- |, e0 N0 h5 ^( N
  1533. ADC <Data_Buf
    ( [1 G2 i; l, l2 m
  1534. STA PPU_ADDRESS
    0 @5 h% O6 i& P, X  t' u( q
  1535. INX
    # J- t/ G: n5 D' ?
  1536. Show_Music_Text_Set_Write! ~8 ]9 u* h& `5 g# o2 \
  1537. INY
    - R4 L6 O4 t7 Q& r! D
  1538. LDA [Data_L],Y
    ) l  \$ h; R8 s+ q! ]' _
  1539. STA PPU_DATA
    , Q) _1 U: d0 U- }+ F' M
  1540. DEC <Data_Cnt
    # e" P! l9 B5 k$ L
  1541. BNE Show_Music_Text_Set_Write% [8 i+ Z& b7 \
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos( ?7 \" }/ I3 [
  1543. BCC Show_Music_Text_Set
    ; _" C- x+ @8 O: a
  1544. RTS
    , `5 C( J) e# g

  1545. # _; [+ M3 F7 U& U! n' t- A5 Z
  1546. ;==============================
    $ {6 ?1 n6 P0 |% a/ Q2 j  N. \
  1547. .IF Track_Name_Pos;显示曲目信息
    $ G/ b1 v- L- }: b' V, h4 c8 i

  1548. . g8 z7 T- Z; g8 Q2 F
  1549. Clear_Track_Info1 \. Z9 @( t' W, B* t( l! u4 S
  1550. PHA
    ( J5 V' \' c6 s$ e7 Q+ Y' x
  1551. LDX <Music_Item_Cur9 G8 [/ w  J9 \7 J% A
  1552. LDA Track_Name_Addr_Flag,X  U+ f: a& m' y9 L- {
  1553. BEQ Clear_Track_Info_End_Ex
    3 O) x4 ]( x$ [3 p) X4 ~; O) O/ V& i
  1554. PLA
    4 u- M* s* ?$ c3 C4 Y* l- r9 ]

  1555. # i. P8 g- p' h4 v* B& x9 P
  1556. LDX PPU_Cur
    1 k& [2 n) P8 s0 \9 C# p
  1557. PHA) A1 d8 T, L# O; T* I: U' r: a3 j
  1558. LDA #PPU_MODE_CNT_CLEAR" A+ F5 {' [* q- o, [& y; l
  1559. STA PPU_Addr,X( N/ I8 c" I! u4 l! u: w1 \
  1560. INX8 |; E" r! f" ?5 Q3 @) O$ Q! \
  1561. PLA4 s- o: e% _7 b, P
  1562. JSR Show_Get_Track_Name_Center_Pos  a  K$ ^2 v" A
  1563. STX PPU_Cur
    ' K! g8 y( \; h1 ]+ v
  1564. Clear_Track_Info_End
    9 q/ N  T) l: M, U* {8 S+ {
  1565. RTS& |: r+ X3 S( C- ]# z* I
  1566. Clear_Track_Info_End_Ex
    7 {8 B) T! {) j2 ]! M! F4 Y3 M
  1567. PLA
    0 H# ^: }7 a, f3 t
  1568. RTS
    ; R; S$ u. h6 N% p, n" r5 K, A4 j4 K5 G

  1569. / S" B5 S$ X5 m  c# m" |* B
  1570. Write_Track_Info9 ]9 [, K( g8 o3 s
  1571. PHA/ \) O# c3 O+ I6 O. \" a9 s* o2 N
  1572. LDX <Music_Item_Cur
    4 W2 n: I7 J4 y4 u1 O* r
  1573. LDA Track_Name_Addr_Flag,X" E# O. c7 z" W7 C$ k# d: o
  1574. BEQ Write_Track_Info_End_Ex- h1 S. \* |; W( E7 b! x
  1575. PLA
    ) R) ]3 j7 V0 b9 I  J% W# s

  1576. 0 X  A' r$ T" x
  1577. PHA# N9 P1 f7 X# p/ y$ E
  1578. LDX PPU_Cur$ ]- m+ Q/ A& r/ C' c/ K
  1579. LDA #PPU_MODE_CNT_LINE& x4 ]& U$ N! Z  z! I% d, _
  1580. STA PPU_Addr,X3 u. F  K" Q* H
  1581. INX7 r0 B4 v/ H) J6 ]; m$ W5 ?! _  o& W. B
  1582. PLA6 T' }% q+ [0 v0 u; \8 v
  1583. JSR Show_Get_Track_Name_Center_Pos
    / U+ H! K* T. g8 Z
  1584. Write_Track_Info_Data1 s! ~$ Y: a1 ~" @( y+ ~
  1585. INY) y# w2 _- t4 m; d* {8 [0 l" e
  1586. LDA [Data_L],Y* J8 q; l: ?7 S% s% A% V/ j" H
  1587. STA PPU_Addr,X
    & H! m( M9 w0 T; ~$ h# e
  1588. INX
      J& j  F" J) j/ d; D7 d2 b# H
  1589. DEC <Data_Cnt
    $ M/ v' j# h6 S8 n1 J: ^4 X
  1590. BNE Write_Track_Info_Data
    " q: Z; R! x7 t& w4 ^
  1591. STX PPU_Cur, w2 B$ \. x0 Z, @' s
  1592. Write_Track_Info_End  s+ G$ v) ~, ^2 A" l7 b  o
  1593. RTS
    7 \: N% M# b5 v0 R
  1594. Write_Track_Info_End_Ex; }5 b- a/ m: ]9 ~# t0 X3 H. u& |
  1595. PLA+ C1 k6 L' d; m
  1596. RTS2 G/ `& ^! N0 J0 b& \+ r* X

  1597. ( v0 A; s# q2 E6 C/ r; A
  1598. Show_Track_Info
    5 U5 ~; K4 H1 H0 u+ y; S
  1599. Show_Track_Info_Clear
    , F7 I% I* ]  |9 m% q7 D8 b- A
  1600. LDA <Music_Last& j8 S, M, Y+ Z. r# z
  1601. 2 X& y$ g0 @& K2 t$ x. ]
  1602. JSR Clear_Track_Info
    , [4 m, d8 l. @$ N* Q/ e

  1603. % l- Y8 ^& J" C3 V; v
  1604. LDX <Music_Item_Cur
    8 X* k, K' Q5 R4 j! Y, _
  1605. LDA <Music_Cur,X
    2 i# }  K& [9 N* b
  1606. JSR Write_Track_Info2 O; v; }! j1 E: h5 i
  1607. RTS$ k9 ]+ S9 n# A1 `

  1608. + d* O" k1 L/ s3 p4 `# x
  1609. ;==============================
    - `" {$ {; `5 N( b
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    / \! S- K9 u; h

  1611. 5 y$ L( P) }7 N6 z% L2 M) ^
  1612. ;取出集合名索引2 V) \; S% K. [! c, w, I
  1613. PHA, E; n; E: d! h6 j% K4 p

  1614. 7 C% Q- f. {* k" e% p
  1615. LDA <Music_Item_Cur3 p' ]3 D8 q; n+ D7 p
  1616. ASL A
    8 \: L* B2 I) N) Q9 B. m' z
  1617. TAY9 J- _/ A# i# Q: @9 ^
  1618. LDA Track_Name_Addr_Port,Y
    6 ?7 \0 U, k4 u
  1619. PHA. r- M) p0 g8 l) ]1 n. O2 D5 ^
  1620. INY
    ' f4 ?" p6 A; F$ z
  1621. LDA Track_Name_Addr_Port,Y# g& B. N8 ]& i8 w2 t' |1 a. N9 l
  1622. STA <Data_H
    ( u1 l" y. M! b  u9 `# Q$ y
  1623. PLA. T& D6 K- H/ x$ `& K
  1624. STA <Data_L# V5 N0 ?, j: j2 K; D

  1625. # o  ^; b2 c: P. o+ {( F. l! l
  1626. PLA
    0 [  u7 d% k9 T$ Z( O
  1627. 8 {* S- E# z' O' ~6 C
  1628. ASL A
    6 C- P+ s' D. P8 c% t
  1629. TAY2 S( O0 K- R4 X- ]! u% L  q, y2 ]
  1630. LDA [Data_L],Y
    7 k2 h4 S5 ?9 \$ Y9 k" P  o7 m
  1631. PHA
    6 n* `! `# O2 ^! Z5 r9 I7 M
  1632. INY
    3 G! m/ D+ ^& E; k! R9 e
  1633. LDA [Data_L],Y- d1 Q: G+ B" N4 y0 q& V+ L
  1634. STA Data_H
    " k9 i. y# N6 n
  1635. PLA
    ( |- R+ h5 ^1 h4 C
  1636. STA Data_L3 `, G7 S9 z& N7 c; i

  1637. 9 s/ a3 H* k+ a8 w! F8 S" R9 n
  1638. LDY #$00
    ) S+ m+ A: q* g' p
  1639. LDA [Data_L],Y& v, V0 Q$ C4 V# ?4 W) W0 \; ]
  1640. STA <Data_Cnt  b4 q, L. W6 j9 V3 s* q" M) @
  1641. LDA #$200 Z; E. p! y+ }( K' `6 h
  1642. SEC5 G* l0 d8 e+ ]% O4 Q" e
  1643. SBC <Data_Cnt% G$ x3 `( H6 A9 M; x
  1644. LSR A( j. z! n  T2 d1 s3 v( z
  1645. STA <Data_Buf
    % Q' [& U9 z/ s  s
  1646. LDA #HIGH(Track_Name_Pos)
    ! b$ B  o0 K1 t' F( S
  1647. STA PPU_Addr,X
    $ j* w6 d! R: G4 Z2 g' N
  1648. INX
    , F5 E. T$ t: F$ y. E. {  Z6 R& G
  1649. LDA #LOW(Track_Name_Pos)
    8 D8 c0 _4 m+ j7 ?
  1650. AND #$E0
    & |1 l  z  T  O( M2 z( o
  1651. CLC
    9 F; z( l* N$ K
  1652. ADC <Data_Buf
    4 g% R2 Y8 U6 ?6 s. J) ~. A& E+ x
  1653. STA PPU_Addr,X  S' s9 P9 O. |" z- t! Z
  1654. INX
    ! D) F5 h0 b  W( H3 P, B8 H) @
  1655. LDA <Data_Cnt7 a' V9 x$ _, B1 l* B- o5 ^
  1656. STA PPU_Addr,X! V: p" k& q0 W' B
  1657. INX0 `. Y3 M0 ?' d5 j2 X
  1658. Show_Get_Pos_Center_End6 C$ ^& S- Q4 r7 S$ c) k8 P  V% r5 g
  1659. RTS
    & u, N9 f- k8 x' t  y# d+ h
  1660. .ENDIF
    $ n3 Z3 `- @% U2 N9 q4 M0 S2 w3 R. ~
  1661. ) n! s& |% p! _5 W3 S) g1 y
  1662. ;==============================
    3 i; X3 g, g. I' a" F  t# {
  1663. ;音乐端口清除# T9 F4 G  Q: c4 t/ L- G
  1664. Sound_Data_Clear  V5 L' T5 q, N5 t, g$ [  Z
  1665. JSR Sound_Port_Clear
    * U% R# T* Q3 Y9 n# M: E1 {8 h
  1666. JSR Sound_Ram_Clear( l$ M8 W5 U, J1 d. s# l9 t7 `
  1667. RTS
    / ~( _1 L/ c' R( ]" \! y+ q

  1668. 8 n* {# C8 D1 {, r; [
  1669. ;==============================; x% r* B- H3 I
  1670. ;音乐端口清除
    ! {8 e( v& k9 K8 \1 y
  1671. Sound_Port_Clear$ B' G7 c% m/ n! E' ?6 @; C
  1672. LDA #$004 g5 c& \# _8 x3 e; l1 m8 ]$ H; f
  1673. STA APU_STATUS* [; A/ }. b" t1 S
  1674. LDX #$00% \7 _! a; \9 G" N( n. @6 Q
  1675. Sound_Port_Clear_Write: C+ K% f! |" k( w7 C
  1676. STA $4000,X9 A  a+ s* i; z# f! z
  1677. INX
    9 L% Y' H3 m+ |/ t6 g# w
  1678. CPX #$14
    $ {0 {1 `1 V* J4 ^
  1679. BCC Sound_Port_Clear_Write
    2 A* W) ^+ F9 S' q% v0 ]' t4 Q
  1680. RTS# l2 x0 f% m8 B( a
  1681. ! ~- ^# N+ ~* p  c" E. c& i
  1682. ;==============================
    ; |3 W# G, N( l3 l6 c! F
  1683. Sound_Ram_Clear;RAM清除
    " B* L0 ~' f& |$ r
  1684. LDX #$00% s4 C- }$ U  N& [7 a+ p7 @5 Z( y
  1685. LDA #$00# S! \7 D$ R) ]5 \% O1 C
  1686. Sound_Ram_Clear_1: l2 f7 c* _) F  V, k  i9 w
  1687. STA Sound_Ram_Addr_1,X
    3 I( M+ M5 O# d3 @0 O4 J
  1688. INX
    : Y3 P+ `* H$ p2 E
  1689. CPX #Sound_Ram_Addr_1_Size3 |$ I' A1 V3 Q) |% L! q
  1690. BNE Sound_Ram_Clear_1
    2 |9 j0 r- M; Y% P6 X0 ~
  1691. LDX #$00
    $ {( X/ O1 k: A" V
  1692. Sound_Ram_Clear_2# K3 U9 D7 |0 `  R$ A, b$ I
  1693. STA Sound_Ram_Addr_2,X
    4 Q+ k+ B( w* e  y2 i! W, M" i& z
  1694. INX
    / a  \7 ]; c1 K) z  r) D
  1695. CPX #Sound_Ram_Addr_2_Size/ ~4 q2 C$ D0 b" z8 Y
  1696. BNE Sound_Ram_Clear_26 |& m+ B( f4 V" H' l! g) d2 l
  1697. LDX #$003 u& H0 R7 f/ O* _. g. {& O% [
  1698. Sound_Ram_Clear_34 x1 [' O  K* I" E# _
  1699. STA Sound_Ram_Addr_3,X& C  [( R- s7 r$ |9 e: X$ Q0 t9 V
  1700. INX
    & m' D  R' t2 x/ E/ I" L% M
  1701. CPX #Sound_Ram_Addr_3_Size
    : h3 ]- V- r, j* |4 d: O6 _
  1702. BNE Sound_Ram_Clear_3
    7 j9 V! j! a+ c9 w
  1703. LDX #$00
    1 |% F, \% u, ~" H
  1704. Sound_Ram_Clear_4" j* E6 Q4 Z: r* M$ T% \( z- \
  1705. STA Sound_Ram_Addr_4,X
    7 g# A1 _8 ~2 L7 R: p
  1706. INX
    ' ^# i  b4 _: i+ z" W
  1707. CPX #Sound_Ram_Addr_4_Size
    ) Y6 G3 h4 k( l
  1708. BNE Sound_Ram_Clear_4
    ) a  u' Q0 ^5 I( r7 u
  1709. Sound_Ram_Clear_5& `" P1 s" I, w/ L2 j5 \
  1710. STA Sound_Ram_Addr_5,X
    . W* B& X2 G; a8 D
  1711. INX+ Y$ {# Z6 @( ~2 M) j- P% ]2 l
  1712. CPX #Sound_Ram_Addr_5_Size
    ' v" X% q+ S5 ?  b6 ]4 i1 d7 ]
  1713. BNE Sound_Ram_Clear_59 U) z# @7 T$ ^. ^  g
  1714. RTS2 B/ C9 B" F/ s: U5 }
  1715. 0 ^! @8 I+ g/ o( _: O8 [
  1716. Get_Music_Collection_Name; G. I4 H  d+ ^2 P
  1717. PHA
    ; w/ c) X: f" p7 {4 T
  1718. LDA <Music_Item_Cur
    3 X: n# Y  r! }, s
  1719. ASL A& w6 {! M9 N- q! r
  1720. TAY- }: i2 y7 S( w: a9 t
  1721. LDA Music_Collection_Name,Y1 H. M* V' N( y+ M8 H
  1722. STA <Data_L
    ' L% z3 s' T2 d' E% a! m3 [
  1723. INY. u$ O) B6 S3 M, x" g9 I
  1724. LDA Music_Collection_Name,Y
    1 z$ G& a' w# ^) C
  1725. STA <Data_H  j# z" ?" @4 V* ]* s' E. A
  1726. PLA" ?- e6 n. ]$ g+ Z: g
  1727. RTS
    5 H: H* G, z# i9 b: i$ {

  1728. / P  o/ B+ \  c: n# U( d
  1729. Set_Sound_Total1 K7 v9 n5 b+ l" F
  1730. LDY <Music_Item_Cur! ]$ d' U* h4 u( L9 D
  1731. LDA Sound_Total_Port,Y0 A0 c0 e) H. N, v
  1732. SEC
    ! M2 J8 ^) p* n" g/ |
  1733. SBC #$01) F9 x* C7 B/ b
  1734. STA <Music_Total
      h$ q$ _' Q. w
  1735. RTS! N3 ?6 }0 `( o, X5 O1 w

  1736. ; s# W" \2 d" b7 f
  1737. Get_Sound_Start" ]: F6 z- ?" N% @( H" y( K
  1738. LDY <Music_Item_Cur
    ) F0 Q$ S2 t0 O& E! R' m
  1739. LDA Sound_Start_Port,Y
    1 A: O# d4 w( y( `* c5 k9 |
  1740. RTS- d( `) o4 d) Q/ Q
  1741. 4 z+ l4 R4 v& T" r3 k
  1742. Set_Sound_Init_Port
    1 y1 a' J7 T& v! }$ ?2 N. O
  1743. PHA
    0 C8 {3 u) t& C$ f! R
  1744. LDA #$20
    1 Z6 j& f9 \! _5 d8 N! x9 {3 F
  1745. STA <JSR_Addr_Op
    % H( k, n& X6 C- [5 g
  1746. LDA <Music_Item_Cur
    # K& B7 G3 _! O
  1747. ASL A
    1 z/ {( I+ }9 c
  1748. TAY3 O5 X4 u3 Y" T+ W1 Y3 S; A( @
  1749. LDA Sound_Init_Port,Y
    $ y  l, @$ a5 A$ u3 s! n% m
  1750. STA <JSR_Addr_L$ r3 j% H& q- K2 a9 P% m# o
  1751. INY
    4 x- \) }8 |* x0 Y4 a
  1752. LDA Sound_Init_Port,Y
    9 [+ @' _5 k9 N, R3 X  W5 l, ]$ G
  1753. STA <JSR_Addr_H1 v8 Q2 v& a8 b% T
  1754. LDA #$60
    ( p; g8 A/ n" ^7 K& X0 r
  1755. STA <JSR_Addr_Rts
    + Y3 x( h+ r3 l" K3 s
  1756. PLA$ ~% Q/ [; Y6 s4 n
  1757. RTS. d1 O& @) a8 w( Z4 [+ P

  1758. % H4 S, s3 [* Y9 M/ U3 U1 a
  1759. Set_Sound_Play_Port
      H& v- o. @& k6 }' w9 w( _6 d
  1760. PHA
    5 s. r0 M+ Q+ }  V
  1761. LDA #$20" R' t# y! O: D, }' s
  1762. STA <JSR_Addr_Op) l! H* u3 w! n' U  h" p
  1763. LDA <Music_Item_Cur
    - Q$ Y3 K2 Y  k3 g
  1764. ASL A
    " t8 n+ e" R0 O' w0 W# Y
  1765. TAY
    ) Q+ b$ @! |4 ^3 ~
  1766. LDA Sound_Play_Port,Y& g! @1 B- o! H4 g8 B2 t9 F, t4 E
  1767. STA <JSR_Addr_L
    ; S- T: W! R) u
  1768. INY
    8 T4 K$ ]. e# ]+ \: _3 l7 U& w2 j% }
  1769. LDA Sound_Play_Port,Y
    / y7 i) f: m" D" v$ W7 _- n
  1770. STA <JSR_Addr_H0 [' w' H- I+ h8 I) R
  1771. LDA #$60
    & k, t! n  ?, k2 s- F% t
  1772. STA <JSR_Addr_Rts- Y5 L3 g. j/ w5 x* |
  1773. PLA. ~, P4 `8 t9 {9 x* S, Y
  1774. RTS
    5 C2 \0 @5 f+ Z4 K1 v) C. B
  1775. : Y& R) F1 F7 `$ n3 K) C; E
  1776. Set_Sound_Reset_Port
    8 W$ K9 M' N/ H7 ]% k2 k5 ~# [
  1777. PHA& Y" x5 {/ V# x0 \
  1778. LDA #$20' e* u" n  E- s& R) u- Y
  1779. STA <JSR_Addr_Op6 @  k; A2 u" @# v0 ]' ~- d
  1780. LDA <Music_Item_Cur
    ' h7 M( t" B' _  P
  1781. ASL A# H- j0 w' B, t7 V- i- H9 Z+ A
  1782. TAY
    * Z, C  K! l  u1 m  X' O
  1783. LDA Sound_Reset_Port,Y
    9 g: i6 ^; v$ G; [: E4 C/ z
  1784. STA <JSR_Addr_L
    9 q+ u& [! v9 s" _% d$ F
  1785. INY
    0 C- f3 h' O* X+ U' I3 n+ ]& U
  1786. LDA Sound_Reset_Port,Y
    1 Z0 S+ u) Z4 @2 t5 h5 Q7 q6 h
  1787. STA <JSR_Addr_H- o0 K& F, J5 ~5 [; T
  1788. LDA #$60) V! F( g: H5 A3 G/ w' @
  1789. STA <JSR_Addr_Rts$ m: T5 A1 L; i( A+ k& j
  1790. PLA
    0 k* p6 r. m0 ^; q3 E1 q) T
  1791. RTS) h6 E0 `) Y+ {' Q

  1792. % W8 R& \0 H, m6 c: m) U
  1793. ;初始化音乐bank" N5 ^$ m+ f( }' [. y
  1794. Init_Sound_Bank! ]% j  X9 z" J/ t6 J% H
  1795. LDY <Music_Item_Cur# M- c; q  b# V+ y( X0 E- K' t
  1796. LDA Sound_Bank_8000,Y
    3 y) Q. F: ?. I3 @$ C6 `. Q! }9 E6 w
  1797. STA <Music_Bank_80008 o6 P0 W" x$ u
  1798. LDY <Music_Item_Cur1 ~, R7 S% Y- A. Y! U- L1 s
  1799. LDA Sound_Bank_A000,Y4 s8 o4 K; w2 J& c
  1800. STA <Music_Bank_A000
    0 C9 R4 Z# Y' s+ ?( N
  1801. RTS
    + m! ~1 j& t0 z/ {0 W$ A! D
  1802. 7 `; a3 v4 _7 E6 p, N+ R
  1803. ;==================================================
    7 \) n  W1 j2 Y; X% k4 `* D% f2 S  L
  1804. Sound_State_Reset;音乐状态重置2 e* G0 K6 p# n; {& P# ]- J
  1805. JSR Music_Bar_ReSet        ;重置音乐条  L/ @3 n; c+ o# v" y
  1806. JSR Time_ReSet             ;重置播放时间  k: g& I8 o( [' I9 N
  1807. ( ^/ A% {) C+ C
  1808. LDA #$00
    ( Q" a6 `. ~7 a5 e9 K
  1809. STA <Music_Stop_State8 p7 T2 i% j" \' y0 Y" U4 X
  1810. JSR Music_State_Show       ;显示播放状态
      b& b' ?( C+ b6 T8 b

  1811. / ^; x" n, _+ \+ K# @; Y
  1812. .IF Track_Name_Pos  y) \* d+ v6 Y/ N2 f
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    + ?5 n( M5 O& e) |7 j: @! t( i
  1814. .ENDIF
    % A$ ~% R' C1 y' V
  1815. ' y7 w7 M" [0 |% L+ I, o. r
  1816. RTS
    + S+ j/ f7 W. Z$ l! N. P2 ~6 t/ M
  1817. " [0 h. U& W* h! W
  1818. ;==================================================
    # ^  t6 K9 u3 m0 r" [
  1819. Sound_Init_Proc;音乐初始化处理, ?% z+ H3 V* I8 \& B' t5 Q7 \& U
  1820. PHA5 e8 u9 G/ Q: B
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    . T. P0 w5 r" f6 r
  1822. LDA #$00
    ' l) m) H4 m; Z# r' f
  1823. STA <Scroll_H               ;重设水平滚动5 u1 a1 R: E6 ?4 C6 b
  1824. LDA #$0F; O$ z( C0 C0 k) ]& g1 Z
  1825. STA APU_STATUS& A6 L: n' p" K+ J' V7 ?
  1826. PLA
    4 _& p/ \7 q3 \( O  c' U+ a. V/ r
  1827. JSR Sound_Init             ;音乐初始化8 Y2 w+ k  c1 ]0 r* m
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    2 X1 q( a  d3 A
  1829. RTS
    ( V' y+ k. V6 y* `/ L
  1830. $ w6 U) `6 j  v! u. f1 Q& e: E# z
  1831. ;==================================================- X9 s, o) g0 ~
  1832. Sound_Play_Proc;音乐播放处理
    6 S9 }" r) N$ J$ ]9 Z
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    ( i+ K$ Q! B* o, I/ k
  1834. JSR Sound_Play             ;音乐播放
    ; e) o1 t! E5 N% o* c) A/ d& L
  1835. RTS
    5 Z2 ^+ ^/ Y# A: J! J/ @8 |6 P; s. g
  1836. - c" \1 r8 ?- U2 B( G8 b
  1837. ;==================================================3 {( P9 A3 ?, p* }7 T& z
  1838. Sound_Reset_Proc;音乐重置处理
    $ h8 C! B3 B; g9 Q# M7 P5 M
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    # @* u$ i2 _1 p: j
  1840. LDA <JSR_Addr_L- J9 j% V3 R+ [
  1841. ORA <JSR_Addr_H, V& t0 n% k3 V, }& s
  1842. BEQ Sound_Reset_Proc_Default
    ( u$ F+ F4 U8 Q6 p3 N+ p
  1843. JSR Sound_Reset            ;执行音乐重置, W' f' W- |# a! [& F
  1844. JMP Sound_Reset_Proc_Init_Sound8 A1 J! W3 N, s8 ^9 ?
  1845. * I! B5 U! n# i4 O4 K. N1 i
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
      y4 _8 {; Y& X% @: K: v
  1847. / u- p* a) H$ \* K/ O7 h5 U/ g
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断8 [- Q  P" h/ T/ P- F# A- q8 f
  1849. LDA #$004 T+ o  `% f; _7 ?
  1850. STA PPU_CTRL: v/ `5 ~6 ?% U& g+ [1 h% J
  1851. * W" {- D7 t1 U! p
  1852. JSR Sound_Data_Clear! n6 F0 U, p, v! n, B  k0 r$ J' I

  1853. 7 c9 O2 r. ?* L
  1854. Sound_Reset_Proc_Default_Wait. m. z% `' K6 F( u. [) l
  1855. LDA PPU_STATUS, i! H% v% b  C% f# w. o+ f
  1856. BPL Sound_Reset_Proc_Default_Wait
    / B! Z6 _2 Z) G' g  n8 N) t( g6 k
  1857. ) {4 ^8 a) z# _2 v& C
  1858. LDA #$00# |8 ]! G- i. Z6 x) k6 G3 Q
  1859. STA PPU_ADDRESS0 Y1 G. M0 R$ m4 g$ B
  1860. STA PPU_ADDRESS
    , e% f" u: _' k7 O' H1 {' j- U
  1861. STA PPU_SCROLL
    8 j6 |. w  o) Y' v  ~: D6 j
  1862. STA PPU_SCROLL
    5 d8 W5 s& K& V) N+ T2 x

  1863. 6 f9 u  [% Y* T) J5 r! G
  1864. ;恢复PPU控制6 F4 B4 d+ o. x" D" ?
  1865. LDA Screen_Ctrl
    2 }, ^5 Q/ B, ]1 Y
  1866. STA PPU_CTRL4 ]( c! Y) E" ]" J; Z( i
  1867. * |+ y) {; j2 A7 L  J( ~
  1868. Sound_Reset_Proc_Init_Sound
    1 C9 c. c$ t. t6 T2 ^/ u( n
  1869. LDA <Music_Stop_State3 z3 _: ~* h2 B8 b7 N
  1870. BNE Sound_Reset_Proc_End" F. |/ v$ f+ \1 t* N
  1871. LDX <Music_Item_Cur
    % B& I" D/ }- n5 S& |
  1872. LDA <Music_Cur,X
    7 e. B. O6 a5 T3 F: N0 K; M, p
  1873. JSR Sound_Init_Proc! v* K3 l  v$ O2 _2 {  t
  1874. Sound_Reset_Proc_End
    & m7 _" |) c" v0 T* e1 B
  1875. RTS, f6 D' `* d% z1 E% s

  1876. & b( ~2 B2 p8 X& x& u8 P
  1877. ;==================================================, R- _: _$ n7 t- G/ E( E/ J
  1878. Clear_Item_Text;清除页项目
    - R5 P: a' i+ O/ A
  1879. LDX PPU_Cur* A% g( L" C2 N4 d4 d. g
  1880. LDA #PPU_MODE_CNT_CLEAR
    ) k3 l$ v, j/ S* q9 d/ v8 C( M
  1881. STA PPU_Addr,X' ]+ A6 o/ t0 o& e% Q9 {. `0 S1 P
  1882. INX
    8 M3 T: }( L* w3 a; n

  1883. . o1 K, y* ]4 ^! |3 P
  1884. LDA <Page_Last
    * I1 M' V. }4 K( a
  1885. SEC/ ]$ O6 t4 ~2 ]+ f3 `6 U6 {
  1886. SBC <Page_Last_Index
    7 R2 `) q( X7 i+ k: M$ S
  1887. ASL A! F; z% d5 j2 D" J! H% C' Q( Y0 M7 H
  1888. 3 q! ]- j$ l% r, [
  1889. TAY
    ( l( e* g7 ?% d. W
  1890. LDA Item_Pos_Data,Y1 U1 R, B( |' ~: U6 S3 S; x( T
  1891. PHA+ w: k) Q1 m. ]. c! `5 E
  1892. INY
    ) U" ^2 K5 E" S/ R/ z3 I2 p2 J% I, r& a1 g
  1893. LDA Item_Pos_Data,Y7 Z6 l' P( }* C) A* f0 m! G
  1894. STA PPU_Addr,X
    7 H! m! G1 o3 j* C+ S
  1895. INX: p/ ]' f0 W- v+ F0 W% v
  1896. PLA4 N6 S. L- g( \, i
  1897. STA PPU_Addr,X4 B6 f  T) z; v8 l: y/ r) a
  1898. INX
    4 `% Y) a4 U) ]( _1 E
  1899. 7 x! W+ F  {1 A9 U' R9 T9 d4 r
  1900. LDA <Page_Last
    2 u* c0 h/ q! [6 n  z8 ?9 k
  1901. ASL A
    , h. D/ ~2 _: ]  V7 [, ]
  1902. TAY+ o# Y$ y* S( q% U7 E+ i- {" e
  1903. LDA Music_Collection_Name,Y
    4 C$ C$ w* ^; B
  1904. STA <Data_L( u+ z  q" E. W6 ~5 U- j( G
  1905. INY
    5 z% Z1 ]! P. v. X- m' X6 {
  1906. LDA Music_Collection_Name,Y- z4 R% l" i3 C) e. |% ^
  1907. STA <Data_H
    7 |2 m% v. P* O2 Q9 D3 G  Z
  1908. $ N$ n- o' x0 N: m6 g
  1909. LDY #$002 [- [# e7 \4 p0 B
  1910. LDA [Data_L],Y; C$ L5 e* t/ y1 ?% f
  1911. STA PPU_Addr,X
    % O$ g/ Y  K: S+ j6 d" z
  1912. INX
    - m# E3 x/ U$ K- [0 S* [) B
  1913. Clear_Item_Text_End/ y  g7 s: i+ ]2 _3 m
  1914. STX PPU_Cur
    / K/ C  b% o$ @
  1915. RTS
    ' b4 o! l+ Z# z1 Y7 Q
  1916. / S4 p9 O. j( W- f2 U! b
  1917. ;==================================================* j; G# z3 @& o8 ~6 m% I( u+ x; ?
  1918. Show_Item_Text;显示页项目
    6 i# @+ G, M0 q5 I5 X. P* [1 s
  1919. LDX PPU_Cur0 P  m5 g6 z7 a! @( t$ U4 F
  1920. LDA #PPU_MODE_CNT_LINE
    ! V. S' G5 u2 F1 G. V- P0 l2 Z
  1921. STA PPU_Addr,X4 D" S8 {+ N: L+ Y( J
  1922. INX
    / W5 N# y& s, D2 S
  1923. LDA Page_Cur: W5 Q6 {! c% _5 A1 r$ X
  1924. SEC
    ( B! g# L2 ]" i4 T+ ?4 W6 @
  1925. SBC <Page_Cur_Index
    " u6 D& N, V0 q* t" [
  1926. ASL A
    4 k# S0 Q4 b, F% d* N5 }3 }* U
  1927. TAY  ]- G  n% [. C8 v8 ?2 ?" t4 j, t! `
  1928. LDA Item_Pos_Data,Y
    8 ?9 e: T; Z" k" d, s0 W& y' }1 f+ a
  1929. PHA* S6 J! T4 `4 p. t
  1930. INY
    - Z$ u# u1 }' x$ \6 v4 y
  1931. LDA Item_Pos_Data,Y
    * U1 b4 a( |& b
  1932. STA PPU_Addr,X
    + e) t- \7 O7 f
  1933. INX
    - C. L& }1 q8 a+ x# N
  1934. PLA
    $ R9 u' Z# I* n7 p! V, u
  1935. STA PPU_Addr,X+ G) X8 L) c9 B" P) g$ n% V
  1936. INX
    ! ^' d' b; s! D4 k
  1937. ! k8 J! ~' z/ S
  1938. LDA Page_Cur& H3 ?, k3 o) ^# b5 \/ x
  1939. ASL A: O- [& x- S4 s7 c# [* h; o
  1940. TAY1 ]4 F$ |8 l, \" O% b4 n3 U$ }7 u
  1941. LDA Music_Collection_Name,Y
    1 _  d3 E% u# H* [8 h0 t4 E
  1942. STA <Data_L3 V+ q5 x& ?5 H. G% Q& O4 n
  1943. INY
    0 c5 Q& t0 Q7 R! ~- [+ a" M. |
  1944. LDA Music_Collection_Name,Y
    ! k, \& n7 W6 V% O- I: k7 [+ l& d* I
  1945. STA <Data_H9 N* A  C; d) I/ t. Y6 h  b- @  ]

  1946. * _* D' F1 [/ n: {
  1947. LDY #$00! E. z- b" E5 c0 J$ e  B2 j
  1948. LDA [Data_L],Y8 q/ a) _" |# w9 r% Y
  1949. STA PPU_Addr,X
    7 z6 z  A4 s4 O! |
  1950. STA Data_Cnt# ^2 L/ H# h$ e, l. _/ c, u+ e! Y$ ?; K
  1951. INX8 E& k" K$ ^! X/ W5 ^/ j$ l
  1952. / P9 A- I4 e" D
  1953. INY
    % w5 H  Y4 J$ M5 L
  1954. Show_Item_Text_Write/ A7 a; o% S- _: \! ?
  1955. LDA [Data_L],Y2 j! P! l9 O  D0 P; B0 ~; z% P! Y: J
  1956. STA PPU_Addr,X
    / V8 A! |7 E6 n, W/ P
  1957. INY
    6 f5 Q) o4 D& @
  1958. INX$ s* M8 T$ t6 U- E. e
  1959. DEC Data_Cnt
    ) z3 C8 J' h0 m6 m, X
  1960. BNE Show_Item_Text_Write
    ; a4 _- F% C7 t( d! _& T, @' T+ f
  1961. * R% H7 V6 b+ m1 p: b/ ]$ ^, d: `
  1962. Show_Item_Text_End
    8 d5 }' {1 o$ S5 h
  1963. STX PPU_Cur
    . T5 e' ^8 F8 N0 t& f
  1964. RTS
    & _1 l/ m/ E2 @' L' k5 m8 n2 u5 T

  1965. , v" K" v1 ?2 D4 t9 M4 S- j8 C
  1966. ;==================================================! k; q+ }# B. a. w- n4 F7 m
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    . Q/ Z2 T8 j' B, c* g) u
  1968. STA <Data_Buf
    + x. x7 W5 A) v: H- P0 h
  1969. LDA #$005 ~" [' A: |1 L( w: g( K( h, F2 A
  1970. Get_Page_Index_Calc5 k* P9 G/ _% q
  1971. CLC# e( j7 ]+ u- L, N% Y, }* l
  1972. ADC #PAGE_SIZE
    - @+ b# |: j) j; v1 ]2 ]
  1973. CMP <Data_Buf" }3 R7 _0 j7 F) o. e5 i
  1974. BCC Get_Page_Index_Calc3 }3 {! {2 G' g' ?" N% @; e. t
  1975. BEQ Get_Page_Index_Calc_End
    5 Q. M8 F- X4 ^" j% H& U# }) w9 r
  1976. SEC) Q3 P) Y  x% X+ r7 Q
  1977. SBC #PAGE_SIZE0 p2 q" A  W7 T/ B+ I, c
  1978. Get_Page_Index_Calc_End
    7 H/ n& ~4 P) T' w1 i0 Y
  1979. STA <Data_Buf$ Y. x. p  T. _. j# E7 l  F0 R
  1980. Get_Page_Index_Cnt
    - Y: p  k* `7 ]6 [( ~" Z; q: d
  1981. LDA #PAGE_SIZE+ \. F% R, o6 n
  1982. STA Data_Cnt3 e, R( n" N9 A5 t4 g0 R. ^
  1983. 2 r9 F8 w9 T2 T9 \3 A( `
  1984. LDA <Data_Buf
    0 N- l& t, x2 S+ K) H& z" p
  1985. CLC
    ! U  X8 Q, J9 [
  1986. ADC #PAGE_SIZE
    8 f6 b: o, s% m4 D
  1987. CMP #ITEM_MAX_SIZE+ t: b( }7 I2 w+ l7 R' _7 v5 H
  1988. BCC Get_Page_Index_Cnt_End
    4 i! F! K4 h/ V: W. y% p) m
  1989. 5 h! f6 P+ G2 c  L: l/ L# H- O! X
  1990. LDA #ITEM_MAX_SIZE
    2 |0 N. p, h& e) c  z
  1991. SEC5 T1 g3 Z( I  f' Q+ i% {
  1992. SBC <Data_Buf9 E+ p2 E5 j. {& H+ _8 h; o
  1993. STA <Data_Cnt- A5 `/ b6 f7 h! K- p8 {! e3 \3 U
  1994. ) f% l2 \# `% T2 L& ^/ t" z
  1995. Get_Page_Index_Cnt_End
    - ]$ q; k& F* y
  1996. RTS, E% T) A7 H8 V

  1997. $ _+ h; y/ m9 A% z+ z8 e* p
  1998. ;==================================================
      d8 X4 g3 f6 Q3 \# o5 T# ?
  1999. Get_Last_Page_Start_Index8 [" T: ]8 u; `1 x+ Y+ w& L
  2000. LDA <Music_Item_Last
    9 C( J: y7 s: s% P4 L
  2001. JSR Get_Page_Start_Index
    $ g4 e1 c; k4 o/ e8 i
  2002. LDA Data_Buf6 i. g1 ^# d# r
  2003. STA Page_Last
    3 K# ^* o6 ?# T' N+ I" w
  2004. STA Page_Last_Index* q4 L( t2 l) j9 V9 l
  2005. LDA Data_Cnt
    & n: y3 X7 g$ E
  2006. STA Page_Last_Cnt2 n7 X0 B, h" P4 {
  2007. RTS  P1 B4 h: t  i$ e& i

  2008. ' }+ i/ E3 ^2 B4 y  a& @* q2 }: w
  2009. ;==================================================
      x* z6 t2 A# l6 ]1 I. N  ^
  2010. Get_Cur_Page_Start_Index
    1 t0 L% T1 S9 M% o" |2 h; _6 g( r
  2011. LDA <Music_Item_Cur* P$ E4 e" F  f$ `2 P- `
  2012. JSR Get_Page_Start_Index
    / D1 K$ X# {3 D; E6 t9 g3 Q/ \. S
  2013. LDA Data_Buf
    * D1 u- H& Z' d  l2 L0 @
  2014. STA Page_Cur9 {; C3 |  j0 k9 z% F: G- p
  2015. STA Page_Cur_Index+ S6 s5 A' k4 K$ l
  2016. LDA Data_Cnt
    9 P2 w2 @+ @" R) o! D8 f
  2017. STA Page_Cur_Cnt
    3 b" D0 B; D8 N1 c+ \; d
  2018. RTS
    5 z( z1 W3 L" M! T% u

  2019. + `7 t' ~5 t. F+ I0 l2 I
  2020. ;==================================================
    ) [' \% t5 i, `  Z0 ]* B3 @5 F
  2021. Show_Page_Text;显示页文本" U% J$ K' `' t( K" g6 T
  2022. LDA <Text_Disable_Flag  t3 p! z. w2 v( v" B) W
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    : }9 K4 ]! O" F( }0 x8 o' n
  2024. STA <Text_Disable_Flag# Y' `; R9 B: H2 y! x% U6 _
  2025. 8 F& w3 }3 l+ c2 l
  2026. JSR Get_Last_Page_Start_Index
    : B& S# @5 W- g4 Y7 j: d
  2027. JSR Get_Cur_Page_Start_Index. e; U* d! P4 d# s
  2028. . Y+ @# O) T( P& P8 W
  2029. Show_Page_Text_Set
    : S, R  y: A  F( o

  2030. - n, y1 a. \; p
  2031. Clear_Page_Last_Item;清理上一页' F9 J) [* p% O7 ]0 p
  2032. LDA Page_Last_Cnt$ O2 z* V$ U) C' y
  2033. BEQ Clear_Page_Last_Item_End9 f' `* g9 d+ A0 W* {
  2034. JSR Clear_Item_Text3 a& _. \. F9 h# a# `6 |
  2035. INC Page_Last! }! d$ [  `$ F& {; u+ m4 q
  2036. DEC Page_Last_Cnt- x- k4 R7 Y$ j9 j  U
  2037. Clear_Page_Last_Item_End
    / S' U" P  J; ?3 b% t! }8 S1 S5 M0 b. o
  2038. 4 h1 u; ?/ B$ B: K
  2039. Show_Page_Cur_Item;显示当前页; J  F. t, K6 s
  2040. LDA Page_Cur_Cnt
    & P# k- ?" K7 x5 K7 L& j+ c
  2041. BEQ Show_Page_Cur_Item_End( c  O# f( x: p5 t- a
  2042. JSR Show_Item_Text5 r5 r& ]4 X* \& i- E& F
  2043. INC Page_Cur* v& C$ I' O2 Q7 ^8 Q
  2044. DEC Page_Cur_Cnt
    , A; L) n! t+ M3 [/ @
  2045. Show_Page_Cur_Item_End
    % ^2 f+ D/ q/ q$ ]% J& H# x
  2046. + j- d- h$ l1 T; j
  2047. INC <Time_Wait_Cnt
    9 y4 J( i) W& h* n" G- G
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作0 R- s1 C+ Z3 o4 d3 s+ Y; U$ I0 \3 @
  2049. LDA <Time_Wait_Cnt
    ! s/ j: C1 K% |% t( W' y1 d
  2050. BNE Show_Page_Text_Set_Wait' y; W8 ?& j6 M$ n2 o2 a

  2051. 4 V' Q3 e, y1 u6 n  b" e% A% Q* o$ x
  2052. LDA Page_Last_Cnt
    2 r7 ^! ]) i, }; x
  2053. ORA Page_Cur_Cnt
    ! k1 i1 E, w; D+ q; p
  2054. BNE Show_Page_Text_Set
    - h5 O3 N/ i" a; C
  2055. LDA <Text_Disable_Flag
    4 j* z' m* }5 ?$ t2 T: J) Z; x2 i
  2056. AND #TEXT_DISABLE_ITEM ^ $FF9 q9 b" m" r! l) |# Q% k) u1 F
  2057. STA <Text_Disable_Flag
    " f/ u. h: h5 W" B8 T3 {# h
  2058. RTS* q, a# @, Q! G4 x! Q5 T

  2059. 0 Q  Z7 b+ `# W( y- j7 P4 z( Y
  2060. ;==================================================
    3 J6 C0 Q" ~, r2 x: \2 e
  2061. Last_Item;上一项: T0 V6 ]# b; _1 k! }7 Q" S
  2062. JSR Clear_Last_Track_Name3 l. q5 @5 q9 ^% C8 v0 K6 b) l
  2063. JSR Disable_Text_Draw
    " @, Z' Q% K( t8 k$ s( I

  2064. ( V) U2 i+ o+ [1 @. w6 b# e% u$ F
  2065. LDA <Music_Item_Cur' U9 T" m7 L/ S6 T' X
  2066. STA <Music_Item_Last; F) }  A0 d+ p5 T2 }8 N* z2 {/ g
  2067. 6 D0 R- R1 x4 f. J5 J
  2068. JSR Get_Last_Page_Start_Index' w0 f6 ~8 K+ Z

  2069. & E- A7 p6 r# v7 e& _: n% r
  2070. LDA #$00
    . A: `* x9 Y) N" b/ _
  2071. STA Data_Buf4 j  L3 h: V1 ~% D6 I3 N8 K

  2072. - O. d; i* X1 W) z3 v
  2073. LDA <Page_Last
    * l, Q8 r. y# e
  2074. CMP <Music_Item_Cur
    - i" E. ]3 o8 D1 C" H3 u
  2075. BNE Last_Item_Begin% |7 H1 @4 Z* Z9 p- V4 l1 g
  2076. - b7 p' R# y* I& M) v
  2077. LDA #$013 ?" C  G* e5 e7 V  S
  2078. STA Data_Buf
    . |; H2 J5 S3 k" W1 `3 ?
  2079. Last_Item_Begin2 n* B8 R8 i1 f0 x9 x
  2080. LDA <Music_Item_Cur
    - d4 C! @$ z* t
  2081. BNE Last_Item_Set
    7 F5 X$ j. G7 J: t' U
  2082. LDA #ITEM_MAX_INDEX + 12 y6 h+ ^" S5 e0 ^1 h8 W3 k  M! q
  2083. STA <Music_Item_Cur
    3 G0 A4 E+ r' D* U* M
  2084. + T; ~# N& K, ]8 F5 n/ j
  2085. Last_Item_Set
    1 d, e8 f" c% Y  V
  2086. DEC <Music_Item_Cur
    0 c7 G2 s5 ^0 ~3 P; e# d
  2087. LDA <Music_Item_Cur
    & Y( J' C, J7 i
  2088. JSR Reset_Current_Music* r0 w8 X" `3 Q. K: z6 |
  2089. 5 z0 H9 \  L  z- P' l+ x
  2090. Last_Item_Play
    1 ~- r( P) V! l8 Y
  2091. LDA Data_Buf3 Q; X: w7 ?+ [9 l/ p
  2092. BEQ Last_Item_End
    ! Q- |, ^6 Y0 j; t$ o- R
  2093. JSR Show_Page_Text; V2 g4 |, o1 {1 C  Z
  2094. Last_Item_End9 Y# @& i' X) w" M
  2095. RTS
    9 v9 L4 J, ^) y# I6 k

  2096. 2 G* n* q# r9 k
  2097. ;==================================================4 [% {% \$ U3 z" @+ v5 `
  2098. Next_Item;下一项+ P- J8 x0 E6 l6 O( S& n
  2099. JSR Clear_Last_Track_Name
    5 y, `$ ^, e4 i3 j7 G! ?
  2100. JSR Disable_Text_Draw7 r! a! H" o- L0 o5 g4 }: T2 L, N

  2101. . ?" g- C/ {: K( H: ~( ?
  2102. LDA <Music_Item_Cur: i1 v4 A, d9 z/ J6 d' H- A+ P. x
  2103. STA <Music_Item_Last0 D* _* Q& m% P8 I$ ?; E
  2104. 0 a+ C. b$ d* W( c
  2105. JSR Get_Last_Page_Start_Index
    * T, q7 W# t) |

  2106. ) q  y8 P0 r1 Z' _4 @* b
  2107. LDA #$00% r3 c' h: \, l! t! A* K! G8 d8 l
  2108. STA Data_Buf1 ], b) N  U- v/ j
  2109. % @% c  P$ X+ O0 o% B+ ?
  2110. LDA <Page_Last
    / M7 s6 h4 ~( P5 s
  2111. CLC
    # j# X% _# v' \" p( i- d- ?
  2112. ADC <Page_Last_Cnt
    ( A% O* I# U1 W
  2113. SEC
    ( D; _  n9 O/ E0 c+ J" K% y5 `
  2114. SBC #$01
    2 z) ]( D) M! ~8 r1 n/ W* A9 j
  2115. CMP <Music_Item_Cur5 {9 b2 C  s  `' `8 P
  2116. BNE Next_Item_Begin1 G7 b) o: h# E) K5 J0 I: s2 g1 |, T

  2117. 6 r5 r5 b) G" \3 F
  2118. LDA #$01
    " K* f0 m) w5 c2 @
  2119. STA Data_Buf
    4 Z( u3 A* q  v9 G" e( v1 d- }
  2120. Next_Item_Begin, _$ M1 j. l( `7 X- N
  2121. LDA <Music_Item_Cur
    : K. ^( I3 S6 V2 a4 a
  2122. CMP #ITEM_MAX_INDEX
    8 ~+ f; e8 E" D% B& l+ F
  2123. BCC Next_Item_Set% u4 E. c0 T. M, P# p
  2124. LDA #$FF
    . H( \& v4 M2 X- Y
  2125. STA <Music_Item_Cur* d7 |+ ?! F% x
  2126. Next_Item_Set
    : W% a. X( P4 G! W  \, P! Y/ I- ~
  2127. INC <Music_Item_Cur; ]3 i* ?! b) O8 V3 W/ i9 F
  2128. LDA <Music_Item_Cur* @- ]: r0 l" n" [- d  l
  2129. LDA <Music_Item_Cur1 _1 |, l. s: ^
  2130. JSR Reset_Current_Music
    9 [3 ]1 d9 w: I! a$ x! G
  2131. Next_Item_Play
    4 h0 ~- J. S* i/ e& z
  2132. LDA Data_Buf' a7 a* a' L1 x+ R; g: V
  2133. BEQ Next_Item_End
    ( |3 Q/ e# O" ~
  2134. JSR Show_Page_Text
    ' D. I6 [3 [( t; b: o8 f
  2135. Next_Item_End
    ; R' A4 |9 D; q: K: H7 p0 }
  2136. RTS( p2 u" r. ^1 x2 s3 `
  2137. - `$ C* C- h8 o& \
  2138. ;==================================================
    ! g% ~0 a& ~& k
  2139. Last_Page;上一页; ^* C! G: I# j! ~$ _
  2140. RTS
    ' E  B& W8 D" r4 `9 B

  2141. ! `  u. f1 M' ^
  2142. ;==================================================- W" _" l6 `6 j4 R) O+ V
  2143. Next_Page;下一页% |( O2 [' o# J' K  _& A" ?
  2144. LDA #PAGE_MAX_INDEX
    , _% _+ b/ E4 x1 T" h& F
  2145. CMP #$01
    0 r0 @8 A) L; G6 X; m
  2146. BEQ Next_Page_End
    + p+ L- O  }+ ~' t2 P2 r; i7 W
  2147. ; [, R- p2 X4 }6 h9 y& u+ c) L
  2148. LDA <Music_Item_Cur
    # N$ S& S. u! U/ z' f
  2149. STA <Music_Item_Last# q* k7 @6 p* m  l
  2150. ) e8 u- }3 ~5 v" E
  2151. JSR Get_Last_Page_Start_Index
    5 d9 I' Z# Y  P$ [9 ^' G1 S

  2152. $ Y" a  y; Q7 j# h( S$ e
  2153. LDA <Page_Last_Index& M: }9 j; y& [
  2154. CMP #PAGE_MAX_INDEX
    1 n5 s1 i& ^+ }6 c3 o
  2155. BCS Next_Page_In_End_Page7 U0 T+ S3 k- v( ^

  2156.   B. n6 H; l  V" L$ q6 O" b; b
  2157. Next_Page_Not_End_Page;不是在最后一页1 }' J3 L5 [0 T3 C  R
  2158. LDA <Music_Item_Cur0 L" F- D7 J3 \$ u* q  D" P& M/ r5 _- [
  2159. CLC
    , D# D* s5 f( [9 k4 |
  2160. ADC #PAGE_SIZE
    3 S! y3 M$ I$ ^; b3 g
  2161. CMP #ITEM_MAX_SIZE  ?' I  ~" ]$ ]  ^' i1 Z# Q7 Y
  2162. BCC Next_Page_Not_End_Page_Less
      ~1 A( |  p1 F- C1 j& A' M8 `
  2163. LDA <Music_Item_Cur
    ) H, w2 o9 T  V! g' l5 r
  2164. SEC, R: W4 N) H" I5 Z1 ]5 |& C
  2165. SBC <Page_Last_Index( O  d& P5 h* M7 {3 ~. [8 m: a7 j
  2166. CLC
    2 k% {- w$ _. A* d
  2167. ADC #PAGE_MAX_INDEX) K' t4 {+ t5 M  A5 a$ c; A
  2168. CMP #ITEM_MAX_SIZE
    # [+ \. ~3 m! I7 |5 i: U
  2169. BCC Next_Page_Not_End_Page_Less
    : Y; X6 g% }( f( w: @: O6 \8 S
  2170. LDA #ITEM_MAX_INDEX3 m; r& e/ b  |6 T, A( c& T
  2171. Next_Page_Not_End_Page_Less  v* `0 P  U) P' z) ?
  2172. STA <Music_Item_Cur# a0 ^0 _; s. C
  2173. JMP Next_Page_Reset5 M( k2 z+ `6 D7 P$ x" y: {9 _

  2174. $ Q; f+ E0 F/ H! p
  2175. Next_Page_In_End_Page;在最后一页8 h4 ^5 _# D& d4 s
  2176. LDA <Music_Item_Cur
    % v5 J. g- ]2 R
  2177. SEC
    0 K4 {- x$ x6 R3 H6 g' k: d$ j' P
  2178. SBC <Page_Last_Index# E6 G% l7 X+ F# ~. s2 N
  2179. STA <Music_Item_Cur
    % Q6 a+ S- m" T# Q. K* x/ h
  2180. % `; F1 Q3 t! u' {2 S4 H0 Q
  2181. Next_Page_Reset
    - Y' X) t: u0 ]) z
  2182. LDA <Music_Item_Cur
    ' N; y2 \' x1 D1 S; Y+ b! o
  2183. JSR Reset_Current_Music
    : j( y6 w$ J  R* k& r) q
  2184. JSR Show_Page_Text! q& d4 R" o+ o4 H! q7 B- I3 @, Z! v
  2185. Next_Page_End& _% W3 v2 t: v
  2186. RTS7 m$ C  r$ r1 }

  2187. , b& I/ k0 z% ^$ Y" e
  2188. ;==================================================
    , U& L4 p- Z; T6 u! Q+ o
  2189. Disable_Text_Draw;禁用音乐条刷新0 Q9 @: d# t# d3 Z8 @/ l! o6 U! O; W
  2190. LDA <Text_Disable_Flag! [& W9 S# h9 ?- ?8 P1 g- ?
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME2 a0 A. W/ {1 u) ?$ s( q) E
  2192. STA <Text_Disable_Flag5 {6 h' R, K! B$ y: ~0 u! X  R
  2193. RTS& v( t5 ]' G1 k# O( U2 d: m
  2194. 0 B1 [$ E8 |! ^0 D/ N
  2195. ;==================================================/ s6 O6 j- b+ ~
  2196. Clear_Last_Track_Name;清除上次曲目名1 U! d' ^- g6 j" `' L3 f8 f0 T( H
  2197. LDX <Music_Item_Cur- L6 g/ e% \5 ]* O3 b
  2198. LDA <Music_Cur,X
    , A8 G7 p! R; U7 ~
  2199. .IF Track_Name_Pos
    % m8 ^1 R7 f3 _
  2200. JSR Clear_Track_Info( y1 s/ q, Z- z! I
  2201. .ENDIF
    0 k( E. y: Z0 Q' D
  2202. RTS# L4 J6 c5 m2 I- T2 `! r0 x. k+ x

  2203. & A; S9 L! K/ o. S$ b; L0 c# {
  2204. ;==================================================7 I8 h! E& ], \+ O" c
  2205. Reset_Current_Music;重设当前曲目- ^3 ~3 L) F2 Y( |3 `- U7 v! v$ b. ]0 W

  2206. . p5 M! e) p5 s% W% ^. @: x! P$ }4 [
  2207. ;写入当前总曲目) f! c+ {% U  [; f
  2208. JSR Set_Sound_Total/ D' ^# f0 ?+ a: J  T& K
  2209. LDX <Music_Item_Cur
    , \3 }. s; z# e" g! Y& p' B

  2210. % Q1 v" V& M: k3 c8 x8 n* @. R
  2211. LDA #$00
    : ~# W& Z6 b9 p% \. C
  2212. STA <Music_Last, v* Y. _2 J7 z3 P$ p! C/ O3 U/ U

  2213. 9 l; ], h% `. ]3 e6 m1 l  P; E
  2214. JSR Sound_Reset_Proc; y0 H% f, z" T# y9 D" R% s- c
  2215. JSR Music_Show- m3 \, i) D+ G( T
  2216. RTS
    & Z6 H  \; F6 w3 K( O: G
  2217. . {# k+ _% L0 I# I7 b$ y
  2218. ;==================================================  s- A$ ], x  j, T& N. ]" U
  2219. Music_Song_Stop;音乐停止
    " N8 u, p$ k9 [- e
  2220. LDA #$01
    1 ^( K, N$ q3 F+ `7 a
  2221. STA <Music_Stop_State
    / w3 g: U. o# T- r; y3 \
  2222. JSR Music_Bar_ReSet9 d/ D; w" V3 h/ ?; Z; u
  2223. JSR Time_ReSet
    7 |: ~( j( ^. Q% q& r
  2224. JSR Sound_Data_Clear5 A1 X% k& |7 n" y& @
  2225. JSR Music_State_Show
    9 x3 {9 ]' A) p( L4 ]1 g/ H
  2226. RTS6 K* i  ^  M  c9 r: d. u

  2227. ' Y, O2 Z. s3 y. F
  2228. ;==================================================2 v: |0 {* }' e
  2229. Music_Song_Play;音乐播放
    9 T5 n: l1 n1 v% M
  2230. LDA #$00
    $ R4 t* t% W" ?/ |3 G" c& ?; v
  2231. STA <Music_Stop_State
    " @6 F) s, G, T* z' B
  2232. LDX <Music_Item_Cur* U: L3 H+ z& l. h
  2233. LDA <Music_Cur,X
    $ o! ?1 n$ @+ n( Z: f2 p
  2234. JSR Sound_Init_Proc
    # D# T; s3 a6 _2 P
  2235. RTS# u6 o- l4 Z- J6 A  ~" e1 w. l

  2236. % {" ?" {- X. z
  2237. ;==================================================
    % g% F: j4 E& c$ p
  2238. Music_Song_Last_10;上10曲! f9 F! G, r  M- ]4 M- y( |
  2239. JSR Clear_Last_Track_Name& M# ]1 u7 |4 M! A) Z+ v5 j
  2240. JSR Disable_Text_Draw
    ) @/ R: }/ m: f) r! u/ q
  2241. LDX <Music_Item_Cur
    : i+ A7 A( C/ O8 k5 T1 H% n
  2242. JSR Set_Sound_Total
    9 I2 h' F" ]" G% S* G( ^- K
  2243. LDA <Music_Cur,X* M( H0 X- X1 o- Y9 H
  2244. SEC+ D& N2 @) e1 Z& {1 R. [+ Y
  2245. SBC #108 h: |+ g/ u, h- y& d# R. n
  2246. BCS Music_Song_Last_10_Set7 }& k3 V+ V1 d. ]! b- C. y" q8 b8 {
  2247. LDA #$005 ]& Y; K! m! m0 w
  2248. Music_Song_Last_10_Set
    6 ]3 D- N+ r: F4 y( j6 z
  2249. STA <Music_Cur,X
    : ]: r, o1 u$ |5 v. l& b- i
  2250. JSR Sound_Reset_Proc3 r9 v3 Q2 `; x$ p$ h. V( }0 Y7 i7 D
  2251. JSR Music_Show
    # Y+ b: n( ]0 k4 i- O  V
  2252. Music_Song_Last_10_End4 ]3 i2 I4 R& K  q! \' Z
  2253. RTS8 p5 `& p$ b- c0 k! C$ o

  2254.   j. d$ K3 S. E7 G  ?
  2255. ;==================================================
      O" E4 F9 C& R$ K2 y
  2256. Music_Song_Next_10;下10曲
    % ^  e* d3 R2 h3 ^! H
  2257. JSR Clear_Last_Track_Name6 I! P5 Y- X! w5 D; E
  2258. JSR Disable_Text_Draw6 L6 _/ T# m- ~7 \
  2259. LDX <Music_Item_Cur
    1 _0 @% n$ ~- o0 z& [
  2260. JSR Set_Sound_Total
    : R& T6 E$ R' l% S2 ^
  2261. LDA <Music_Cur,X
    % ~4 x# ^4 V; N( {& r6 Y! O
  2262. CLC
    1 ?+ V1 I! |" @" a' Y
  2263. ADC #10
    : B1 r2 J, ?2 z/ W
  2264. CMP Music_Total
    # N/ B* C% M8 v( k: }+ C  {
  2265. BCC Music_Song_Next_10_Set
    % Y3 K! O- q) a# T9 z1 ^
  2266. LDA Music_Total6 V( N5 x6 o- D1 y) b( W' D
  2267. Music_Song_Next_10_Set- M6 m& L9 e& _# X7 I, j$ S
  2268. STA <Music_Cur,X- b- [4 \/ C( J* b
  2269. JSR Sound_Reset_Proc; J- z8 c& i/ b& A( f" i
  2270. JSR Music_Show
    0 ]2 L; H4 M2 q2 ~6 G! H
  2271. Music_Song_Next_10_End
    ' s3 p, N) B7 E+ g9 g2 ~1 G3 o- [
  2272. RTS
    4 S) @) P6 P4 X! T6 @; c; X, {. N
  2273. ( I2 L2 m7 d5 D' H2 f
  2274. ;==================================================
    ( ]! H# }+ g7 r
  2275. Music_Song_Last;上一曲# y( W% v3 B: H* H; N
  2276. JSR Clear_Last_Track_Name& I/ ?" v! ?7 v
  2277. JSR Disable_Text_Draw
    3 `- E% P/ w- O
  2278. LDX <Music_Item_Cur5 o; k) D6 p! @2 ^$ I
  2279. JSR Set_Sound_Total
    + L3 Z$ @4 {  w9 n; [+ z  y
  2280. LDA <Music_Cur,X7 |) k' b* G: ?4 H" t$ @
  2281. BEQ Music_Song_Last_Set0 {9 J1 a  O0 ^6 P7 c/ y
  2282. DEC <Music_Cur,X
    0 q; [2 b' E2 w0 y8 G
  2283. Music_Song_Last_Set
    / J: i+ C( J: T2 @% U- t  D1 N
  2284. JSR Sound_Reset_Proc$ r/ z9 F3 H2 M% ]/ I
  2285. JSR Music_Show
    9 H; Q8 Z  S( A  r  j
  2286. Music_Song_Last_End5 a+ u: z3 k  \7 l
  2287. RTS
    : |+ B9 u1 I: t9 [/ s2 T& V

  2288. 2 c% J( Y9 Y+ D, |- m! l9 c- U
  2289. ;==================================================
    ; {! B6 k  F+ p  `3 N5 h
  2290. Music_Song_Next;下一曲- n3 x- S1 D* G* q2 }/ i# \7 ^2 y
  2291. JSR Clear_Last_Track_Name
    5 b6 M4 `4 P; ^
  2292. JSR Disable_Text_Draw
    # o) {! Y9 |, U: Z; i6 ^
  2293. LDX <Music_Item_Cur. v% Q; K+ \) l) w
  2294. JSR Set_Sound_Total- O! S, ~. g$ L: ?3 A
  2295. LDA <Music_Cur,X
    $ D5 i6 |& y; S$ }% j5 G$ d; f* B
  2296. CMP Music_Total; c7 @- M$ B4 m
  2297. BCS Music_Song_Next_Set! g' p" l# c$ W6 G, [: B4 r  C- u
  2298. INC <Music_Cur,X- y% ^# @/ k+ q1 @" B$ o5 a
  2299. Music_Song_Next_Set& t* o$ W1 p8 {) L' {: D
  2300. JSR Sound_Reset_Proc
    7 B  l4 I5 p( }4 l# R8 O* l
  2301. JSR Music_Show
    $ i( k' C" ^# b/ z" A7 q! p) C
  2302. Music_Song_Next_End
    7 H* L) R/ H$ Q  f& S3 {( a: t. Q
  2303. RTS
    , L: J1 F* i. l  @. I" q

  2304. + J( r6 ?6 i8 Y  {3 x, o; t+ e8 u5 S- }
  2305. ;==================================================
    ' _( K' f0 J- z1 _: d5 R! P
  2306. Change_Select_Item;改变当前选择项
    ! ~& e( l) E( Y8 p: J4 v3 H
  2307. ;--------------------------------------------------4 C* G# ?" f4 q. {6 V. ]
  2308. Change_Select_Stop_Play_Item;停止/播放1 ~! ~( H1 y: g' I/ M0 \
  2309. LDA <Key_Once& C3 [8 t' R8 X/ r
  2310. CMP #$10  K& X/ P' \: b9 O
  2311. BNE Change_Select_Last_Item
    4 d+ I, y2 e  J4 l: o- h; f
  2312. LDA <Music_Stop_State
    $ G& w) W! W6 O$ @8 b
  2313. BNE Change_Select_Play
    3 x; Q4 M! D4 M) O# O' @9 M
  2314. JSR Music_Song_Stop
    ( {- Y4 L# o" X# t
  2315. LDA <Music_Stop_State
    ; F7 y+ k9 ]( F9 |$ y- c5 Z/ [4 b
  2316. RTS1 w. a- N& ~6 O: O

  2317. - V; `2 P- `4 s$ ^; d
  2318. Change_Select_Play
    8 Y/ R5 {  K" N
  2319. JSR Music_Song_Play
    , W3 A% e% C* Y6 Z1 P" W" U( J
  2320. RTS
    - }% o% X' P% E8 @7 p

  2321. 9 g% L( a, P$ R1 H/ w
  2322. ;--------------------------------------------------1 d+ p3 T) S* J$ h8 l
  2323. Change_Select_Last_Item;上一个专辑% j  g7 ^4 c7 R
  2324. LDA <Text_Disable_Flag
    : ~- W! z# L' d: R8 K% h% v$ d) B
  2325. AND #TEXT_DISABLE_ITEM3 a/ d3 t5 a' \. q8 v0 ~0 A4 [
  2326. BNE Change_Select_Item_End' L! P2 G, _, n
  2327. LDA <Key_Once
    3 e/ I! Q( w* q6 }7 o3 E. K4 P
  2328. CMP #$08+ D/ N9 C3 k1 c# w' Y( p
  2329. BNE Change_Select_Next_Item* H4 J5 T: `' Q, {
  2330. JSR Last_Item
    , [% f2 Y8 _8 m1 k; e6 z* x
  2331. ;--------------------------------------------------0 e4 B. f4 w2 n; F$ k  Q
  2332. Change_Select_Next_Item;下一个专辑8 {  W: x$ r6 [& X4 r. m# T
  2333. LDA <Key_Once
    1 `( a" d6 t# v2 ]5 ]" p* x: c
  2334. CMP #$044 u7 ~. ^* i! u7 H5 `6 }
  2335. BNE Change_Select_Last_10
    * l/ |# \, C. F8 i" O' M: {( R+ W8 Z
  2336. JSR Next_Item
    0 ]5 v" s. s- K) f% t' ]
  2337. LDA <Music_Item_Cur( `3 L# \) o8 x5 M7 J
  2338. JSR Get_Page_Start_Index& }8 n" S/ G$ O; H: t0 ^
  2339. ;--------------------------------------------------$ I7 z! i; T( R
  2340. Change_Select_Last_10;前10曲
    ' }( {; b4 t1 F1 x9 ^6 T  l
  2341. LDA <Key_Once
    * {9 ^% {1 E6 W5 [' n6 z
  2342. CMP #$40: V3 S7 J! D5 W8 M+ A: ~3 @
  2343. BNE Change_Select_Next_10
    - B2 `9 y! T  Y" o" k
  2344. JSR Music_Song_Last_10
    1 _* f% ?6 D3 Q
  2345. ;--------------------------------------------------6 R. c+ A( q0 O. n2 q7 p
  2346. Change_Select_Next_10;后10曲$ @& Y( o' n' f3 m/ @, G+ Q
  2347. LDA <Key_Once
    / G8 s1 u5 }" u% R7 r" @" v. W, ]; \9 g
  2348. CMP #$80
    ! h9 O( l# ~2 p3 N( A  |# J
  2349. BNE Change_Select_Last
    ! e; ]7 k  ^/ X
  2350. JSR Music_Song_Next_10
    . I* D' Q. c$ t6 ^4 K9 i
  2351. ;--------------------------------------------------
    9 D5 G2 X8 E! G1 i  R5 B3 ~
  2352. Change_Select_Last;上一曲
    / ?- l/ Y8 N. v8 o
  2353. LDA <Key_Once
    " O5 [8 I3 ?4 ?/ m0 ^- X% G
  2354. CMP #$026 W' u& b/ p. x* U6 v- G# x
  2355. BNE Change_Select_Next2 L8 M6 Y, L/ Q
  2356. JSR Music_Song_Last
    % F) x& M  I+ c( p( X
  2357. ;--------------------------------------------------
    $ Y4 X6 e5 w2 z+ k
  2358. Change_Select_Next;下一曲/ u  L2 [* T0 Y7 `& S: |4 y
  2359. LDA <Key_Once# |8 b. a. `9 `% ^4 I: Q
  2360. CMP #$01; x- s+ V3 \# C$ I0 h
  2361. BNE Change_Page_Next
    ( L8 i" _) d! K' @) X) v: n7 H
  2362. JSR Music_Song_Next& W5 Y. u- c/ M$ C* u) k# p/ g
  2363. ;--------------------------------------------------5 u6 w* q" r+ W- A1 ^  y# d' \
  2364. Change_Page_Next;下一页
    8 a- a8 V) y# r
  2365. LDA <Key_Once1 N# O# j7 ?7 _7 M2 D' l2 r
  2366. CMP #$20
    & a# ~/ X( K! A; Y) A% E" w
  2367. BNE Change_Select_Item_End
    , f# H- \0 Z8 F; k  Y
  2368. JSR Next_Page
    % b& _) w8 U  K; f1 l
  2369. ;--------------------------------------------------
    5 t" n5 d* q7 L: y# x
  2370. Change_Select_Item_End
    , Z, b, j3 C: Y' Z
  2371. RTS
    5 |, z6 c; n/ ?" P1 X4 J

  2372. 1 g; _4 M9 G0 I# f
  2373. ;==================================================
    & J$ ?, Y* q6 }- h
  2374. Show_Arrow;显示箭头光标' x3 V2 a8 g5 r) t6 v+ ~* v: L
  2375. LDA <Music_Item_Cur
    - t" @9 g2 c* a" m( @
  2376. JSR Get_Page_Start_Index! j2 _" x* Y4 l! p
  2377. LDA #$00: z1 J9 L3 T' J' ~
  2378. STA PPU_OAM_ADDR! c1 p  O" h! U+ P2 I
  2379. LDA <Music_Item_Cur
    ) g* X; y; J# L
  2380. SEC
    / E& O" L$ Z3 w# A
  2381. SBC <Data_Buf5 _! o4 A) k& I" x8 |
  2382. ASL A
    ' _( d+ K1 C- L/ T8 V  I. H
  2383. ASL A
    + w& s' H# I6 Q8 R8 i3 s
  2384. ASL A
    1 l6 i! t6 o( p% B
  2385. ASL A
    ' D( N! o" f! E* B6 x
  2386. CLC- n+ x8 B7 c9 ?2 N5 Q# q
  2387. ADC #ARROW_Y_OFFSET+ X  E# p8 ?9 C& d# W
  2388. STA OAM_TEMP_ADDR + $00
    % @8 X$ p& y, Y2 A1 x4 r
  2389. ;STA PPU_OAM_DATA
    1 l" Y. s9 j1 t( C+ q8 h+ H
  2390. LDA #$1F
    5 q- r. p9 z# U9 |5 H2 a
  2391. STA OAM_TEMP_ADDR + $01
    7 G0 I2 U* C/ m) I+ N6 n' }- W# D
  2392. ;STA PPU_OAM_DATA
    ( Q3 h# |  l# {+ D
  2393. LDA #$001 P  i: e/ f. _# r- I8 t4 y
  2394. STA OAM_TEMP_ADDR + $02
    # D* J) @5 f! M. Z1 B9 c4 Z( h
  2395. ;STA PPU_OAM_DATA) [! _/ M1 F- D* k& d1 E& L$ [! }
  2396. LDA #ARROW_X_OFFSET
      n! K; m! e  V4 P, b
  2397. STA OAM_TEMP_ADDR + $039 ^* e6 E0 x* n4 ]& Q6 ]/ e+ B
  2398. ;STA PPU_OAM_DATA3 ^/ p/ O$ x! D
  2399. RTS
    ) K/ B6 Y9 K" _( L$ G

  2400. / R" v. c1 F3 w8 o* y! i! m! e
  2401. ;--------------------------------------------------- Z9 b+ D. W5 p4 w. b
  2402. ;命名表数据7 b! ]9 r1 T( H( J
  2403. Palette_Attributes
    ; J8 s! _  R% i' o
  2404. .IF SOUND_BAR_SHOW_ENABLE6 I6 I7 l' d8 i$ \) t
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    ' a) @/ t) c7 U/ X% D) m. F
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ) R# Y1 w- |4 K+ z( ^
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    7 {& ?4 Q9 v) @" p! E
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA% ]* s# P3 J8 T& M: _
  2409. .ELSE! ?# K3 V3 B( \5 r
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    1 @' L) r. K( l8 x
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    5 z, }/ E) r! U  {& {
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$754 m* D: l$ m9 |1 e3 F9 e# n2 v
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    7 u3 L( y; q( C$ \# Q: ]
  2414. .ENDIF8 D  N/ J, Z1 e: f- }$ f2 c4 C0 n' i( \
  2415. & m0 @) R" @5 F, S
  2416. ;--------------------------------------------------
    & e0 [' u- |8 m9 t: ]5 ~
  2417. ;调色板数据! g: v) e. i7 x' g
  2418. Palette_Data
    ) q& a* U; c$ V& n( N) q6 n$ S
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F  ]/ G# y, V( z$ C
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    # _2 H$ p- V# Z

  2421. 8 O( D9 F: w4 F+ H; A7 q# W
  2422. ;--------------------------------------------------
    * B8 P- S1 I8 l* T
  2423. Static_Text_Data
    7 Z  D! Z3 O! `4 a3 a; n5 Q
  2424. .WORD Static_Text_Caption_Data
    " N) p; p) b2 `5 F7 L
  2425. .WORD Static_Text_Author_Data; \2 f" T9 Q) N  R
  2426. .WORD Static_Text_Date_Data
    0 E. ]6 R- g" g4 C5 ?# x3 Z: o
  2427. Static_Text_Data_End
    * u9 K  \- S+ @- G
  2428. # R1 j5 i$ W' t' A. V5 K% m4 U- Q3 V
  2429. ;--------------------------------------------------" J* j6 k$ T4 r6 j0 M
  2430. Static_Text_Pos2 W" o6 l0 c$ y$ e! Z  \  r
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)( P% M7 l4 }& v0 L
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)3 a0 N$ J- M5 F) O( \
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos); [( I: v* u" t  r* |& L/ }
  2434. Static_Text_Pos_End
    1 s: U, H- B9 g3 x; t7 O; t- S
  2435. 9 @7 l/ g0 z6 s% e& l* T
  2436. ;--------------------------------------------------# g* I2 S7 t3 [0 H+ e5 H+ @, ]
  2437. Music_State_Stop
    ; L8 k6 [1 |/ M: d8 L# ^6 K) C
  2438. .IF SOUND_BAR_SHOW_ENABLE" E) k; r9 }3 e1 m" W
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    ! _! a0 G# b/ h, c
  2440. ELSE/ p' q8 ^& [5 S* y3 ]& i
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00% m4 z& [) q8 J2 E8 J: W
  2442. .ENDIF
    1 O: k, j' Y, D9 ?. G. B; c
  2443. Music_State_Play7 |! X/ ^0 k/ Y; j; D% _$ B- s
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$000 Y9 A; v. O% s% @5 n' V

  2445. ; X  ?8 Q4 O* i8 e
  2446. ;--------------------------------------------------
    ' p: {- L# C- P! k+ P: l. l
  2447. Sound_Bar_Text_Data;声音类型文本$ J' l! b4 s! c- F; T
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    + S4 p2 [3 V5 y/ i' D3 c; @
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"! @& J! F, U$ v6 L1 x# C
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    2 |1 L$ ?! N3 Y4 {( u( F: D
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"' z2 j" D7 }5 v7 p( M9 J7 J
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    9 X) Q' Q3 v4 F- J0 ]1 `3 l' t5 ]5 r
  2453. , e2 _4 H1 j. d* a
  2454. .IF Track_Name_Pos" X: u; A- r: q% S$ ~: X
  2455. ! ]1 g: O4 E' O3 C5 {" X0 z
  2456. ;--------------------------------------------------" U2 a1 l: s/ V' y$ T; R5 x& U
  2457. Track_Name_Addr_00;曲目名地址索引
    ( @* P( C3 G+ S4 a* \/ s: h/ {
  2458. .WORD Trackr_00_01% f8 O* {9 ], C& ]+ ]6 B
  2459. . v9 a, F1 e+ V' r0 k1 Q9 s
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    4 D( h; I8 X$ X% j+ s0 F
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    9 F- P$ {3 d$ }9 j1 j: P4 r
  2462. ( U8 s! T& T; J, `4 L& c/ c: x0 S
  2463. ;--------------------------------------------------
    / V; [, B7 a/ A7 s
  2464. Track_Name_Addr_01;曲目名地址索引
    8 a% q# c( H" D6 K' F% `
  2465. .WORD Trackr_01_01
    ' i) c7 ^( Q) R8 k6 F9 u* r
  2466. ! P9 }: V4 \0 d1 L  n+ D1 t. g: Z
  2467. ;==================================================
    ; c& G7 l0 K" Y' r& W
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
      Q) @5 K# ~) D+ K3 G
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    " p# J6 R, x9 X6 H: p8 Y
  2470. 8 K; F( {8 y" ?
  2471. ;==================================================: F7 P& A' Y; v
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引, ]& y. A4 j* e
  2473. .WORD Track_Name_Addr_00! _" x$ z! K: Y5 Q) _4 o
  2474. .WORD Track_Name_Addr_01  P' i' s! W5 ~( V' S
  2475. .WORD Track_Name_Addr_01' E7 R$ i. z3 j% ?

  2476. 7 B7 j+ L5 C7 x) E0 V5 _$ u3 S
  2477. .ENDIF; X1 b/ s- r- Q

  2478. & R: P, T8 y$ D+ {/ v0 ~$ a. |
  2479. ;--------------------------------------------------
    7 ?7 L6 Y$ x% V% z
  2480. Static_Text_Caption_Data;静态文本数据
    % G/ ?& j% Z( G
  2481. .DB 16
    8 \1 f& M: l  Z$ e3 T8 v
  2482. .DB "FC MUSIC 12 IN 1"
    2 y$ x/ A1 B2 _# U( Z0 ]% f
  2483. Static_Text_Author_Data; `" O0 e7 z& h8 R, \& ~: L$ g
  2484. .DB 25
    , k) S, ~; l( E+ K! v
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    & x3 y0 A! q0 q% o
  2486. Static_Text_Date_Data& r8 d( d( i/ j6 u, `& O
  2487. .DB 10
    1 e2 n# J" n# I& R
  2488. .DB "2023.07.23"3 w4 G  Y( Q' s2 i7 U
  2489. : w7 p7 u  x1 v4 D/ y
  2490. ;==================================================; L5 M4 _8 U( _( {* E
  2491. Music_Collection_Name               ;专辑名间接索引- j1 {9 T7 L- z8 d( O
  2492. .DW Music_Collection_Name_00+ h, ?# K2 ~7 o; t$ ^
  2493. .DW Music_Collection_Name_01/ r! R4 ]' h% m
  2494. .DW Music_Collection_Name_02
    / V9 C4 Z+ c5 ]! ^3 n+ r$ ~6 U
  2495. .DW Music_Collection_Name_03
    - R& _* S2 k+ r: @3 n. e! ?
  2496. .DW Music_Collection_Name_04  d& I% i0 }1 _+ z, O; W
  2497. .DW Music_Collection_Name_05
    / a) r: U* N3 J7 y
  2498. .DW Music_Collection_Name_06
    3 I9 i- n) `4 N* u1 U4 \: P- |0 _! U2 r
  2499. .DW Music_Collection_Name_07
    , ?! f9 ^* v) q5 E1 |
  2500. .DW Music_Collection_Name_08
    9 c/ Y! E# V4 E
  2501. .DW Music_Collection_Name_09
    $ y0 d) R& j1 k5 i
  2502. .DW Music_Collection_Name_10- p: E$ d& j; T' s! X6 b. G3 P8 D
  2503. .DW Music_Collection_Name_11/ m, T2 V3 f; F# P
  2504. ! }: Q7 R  X6 R* O
  2505. ;==================================================
    ) U5 I! U( j$ ?# m$ r2 m- O
  2506. Music_Collection_Name_00            ;专辑名文本数据
    * E$ R* x4 ^" W- M5 K0 L9 J
  2507. .DB 11,"1.RAF WORLD"( Q- A5 W$ |( h" Q
  2508. Music_Collection_Name_017 U' j% s" L+ L; Y5 N# ?# d) }: V+ [
  2509. .DB 15,"2.FINAL MISSION"
    ! W" ?& j6 z  c- \1 A
  2510. Music_Collection_Name_02# Z! m& c% Y5 ^1 {
  2511. .DB 06,"3.KAGE"
    7 Y. W% o) ]  m7 |- `. ?  f& n
  2512. Music_Collection_Name_03* J$ P2 i/ R3 T: H/ t/ A4 M$ R0 @
  2513. .DB 16,"4.DOUBLE DRAGON": m8 Q4 w! `, N+ B2 _& j$ ?/ i6 M
  2514. Music_Collection_Name_04
    " [4 ^) b3 i4 h& K$ R1 _3 `
  2515. .DB 17,"5.DOUBLE DRAGON 2"2 ], K% x( j" h) k+ t
  2516. Music_Collection_Name_05
    8 d" B+ m/ f% k3 C2 b1 F/ F- i
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    8 W3 E" I! K: n
  2518. Music_Collection_Name_06
    + K! M6 X" l8 K" G# i
  2519. .DB 09,"7.ROCKMAN"
    * k7 X( E. D& v" E2 u- Y6 ]% D! p
  2520. Music_Collection_Name_07
    3 r! o3 C8 c/ t4 N3 n' O% c# I
  2521. .DB 12,"8.ROCKMAN 2"5 N6 D0 C% b4 @" g
  2522. Music_Collection_Name_08$ n( _0 m6 v) |" Y! }
  2523. .DB 12,"9.ROCKMAN 3"
    % T: N5 F+ L. _( y- F4 f8 A8 w% H
  2524. Music_Collection_Name_09: i# ~# b6 h5 h: d. `+ J0 M6 @- E
  2525. .DB 12,"10.ROCKMAN 4"
      A- {! u! ?5 Q' l& Y7 u2 d* M
  2526. Music_Collection_Name_10
    . `( L1 @( v5 j5 h" j7 v2 ^
  2527. .DB 12,"11.ROCKMAN 5"1 k7 l7 l  `+ O' y& {* `1 ^. i$ w* U
  2528. Music_Collection_Name_11
    0 \  Z9 T0 ?1 G0 L4 [7 ~7 N) t
  2529. .DB 12,"12.ROCKMAN 6"
    0 M: \8 x- E6 W, S

  2530. 0 ], f4 `& n  ]( s( k
  2531. ;==================================================" W4 P% d5 H1 Y; e' k/ \
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    9 L0 ^: Y4 O/ j1 R8 |/ S' x( {5 V
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    ( i* u. F  g& J2 c; @8 K
  2534. $ P; z4 l$ j& H! r  v
  2535. ;==================================================: {* B0 X4 [# M
  2536. Item_Pos_Data                         ;光标箭头位置
    , F( C! d$ p6 m, H, P- U0 X
  2537. .WORD ITEM_SHOW_POS3 W4 e0 i# s2 N: U
  2538. .WORD ITEM_SHOW_POS + $00402 u0 Y# w/ p" \# u3 k! W9 s
  2539. .WORD ITEM_SHOW_POS + $00803 Q6 P/ y% P2 y5 J
  2540. .WORD ITEM_SHOW_POS + $00C0
    $ C% q* W5 N. B1 K% {
  2541. .WORD ITEM_SHOW_POS + $0100
    ! E6 b3 ~7 G- |" q8 `! ?6 G
  2542. .WORD ITEM_SHOW_POS + $0140
    ! ]" E# w4 ~* J- T

  2543. " d) t. o$ ~! I- ^! \- o/ Q
  2544. ;==================================================$ O' r6 m& w. s/ Z
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    + ^1 r& h( o( W
  2546. .DW $BFC8$ @: m3 K! p) a' x
  2547. .DW $D7F0
    8 x3 R9 |' i$ j+ z) ~+ S
  2548. .DW $9FC0$ {3 M5 u+ J, X$ A( ]1 \7 t" H
  2549. .DW $BF70; I, C2 |5 ]! p
  2550. .DW $8003
    ! `- A3 P; T) @% ]4 s: F% U
  2551. .DW $BF30
    - x% U; \! N2 g6 q& I7 F1 v
  2552. .DW $90032 G6 D' G* N+ l0 K- S
  2553. .DW $8003
    ; {6 ^/ t1 O9 Z; }, ]  }  N
  2554. .DW $8003
    0 }( u5 I3 e7 o( F: ~0 G
  2555. .DW $8003
    ) H) A# E: ^( L; V1 [
  2556. .DW $80034 G# m* g0 \3 F4 X; G1 E: e1 x
  2557. .DW $8003* q3 ^, ~, c. Y- |6 h3 a1 }

  2558. * }1 z! B# p) p9 V" B
  2559. ;==================================================3 n/ X- M5 Y3 R4 z& Z
  2560. Sound_Play_Port                   ;音乐播放入口地址) U) K( i7 H2 g* _/ A7 l
  2561. .DW $80006 b) p8 C. A3 j2 j2 u
  2562. .DW $8001
    . M: ^* r5 b: V* P9 K) r- O4 x  O
  2563. .DW $A000
    . s* Z. f/ h4 w" O
  2564. .DW $80038 W6 V5 h( D4 J! M. s
  2565. .DW $8000
    3 u) m& e8 k% M$ Y8 U
  2566. .DW $8003/ ?. `5 S# `0 K
  2567. .DW $9000  b6 V1 v6 A4 L; g4 H2 N: N
  2568. .DW $8000
    " X; n9 ]* c* q( c
  2569. .DW $80004 L2 G/ o& N2 N( c
  2570. .DW $8000
    " J$ `, g  Q/ S7 ]4 |% e/ i7 M
  2571. .DW $8000/ Z* P/ r3 l8 X! j' s
  2572. .DW $8000
    $ n  L" g1 y- c6 q: u

  2573. ' t! W  y1 ?/ @" m3 \" J
  2574. ;==================================================
    3 ^  V0 c% Y5 @1 ^) V  g
  2575. Sound_Reset_Port                  ;音乐重置入口地址5 F% O/ J1 ]) `+ t( w
  2576. .DW $0000
    1 y' |, g( W+ M- G8 h7 D
  2577. .DW $0000$ F$ ~& S6 J6 Q7 U8 B
  2578. .DW $0000
    0 R8 I0 f) d/ }$ d9 D: [3 r
  2579. .DW $0000' y6 \8 p# d7 j' j1 m, K. q& S
  2580. .DW $00005 x4 z- Z& e( y9 y! P1 Y
  2581. .DW $00003 W; I6 H- v3 S9 B3 Z
  2582. .DW $0000
    4 Q$ v8 b% L1 p9 J
  2583. .DW $0000  M. {. A% x/ |. {: I
  2584. .DW $0000
    $ h0 M7 m* L2 m" D2 O1 r
  2585. .DW $0000
    ) m! w) u1 n) t# X) M: z' a- H4 |
  2586. .DW $0000
    1 E: \1 p3 {" E+ P  G; c% }
  2587. .DW $0000
    . a- L( B: `9 h0 D' ^# a
  2588. - D3 X* o, F  A  ~0 I
  2589. ;==================================================
    * B1 v# Z8 T: j2 A0 P. R7 y
  2590. Sound_Total_Port                          ;曲目总数" k1 y  ?0 H) v6 F- }& f
  2591. .DB 38
    0 t$ {1 I3 {* Q1 d# U; W
  2592. .DB 33- \! T3 w9 e  M* h* ~( A5 e
  2593. .DB 49
    ; \7 c, \9 R/ N9 Q* z( s0 b; x
  2594. .DB 41+ H3 Y# B8 l3 k" _% C* s
  2595. .DB 836 N2 p  ?$ d% Q3 g) b9 f3 R
  2596. .DB 70
      L, f! i7 ]# k6 k) V5 J  m
  2597. .DB 50; ?7 l* M  j: h" l! w6 E
  2598. .DB 674 x! M. {8 a1 e1 Y7 x
  2599. .DB 57
    8 P! B- p/ M, l2 [9 `
  2600. .DB 71
    & o- g5 V- G) v9 D2 `0 l
  2601. .DB 76
    ; @; z' S! m0 A" C- X; _7 N
  2602. .DB 102
    ' g2 `2 Z& U1 }5 W
  2603. % T9 b$ {: `8 J4 O' |
  2604. ;==================================================7 ~; l# q  I5 ~, E0 m5 j
  2605. Sound_Start_Port                      ;起始播放曲目0 Z! |) ]9 |& l0 q/ R
  2606. .DB 00% Y$ v( r9 H  E1 i1 s$ L
  2607. .DB 00
    ! F# b. g- v- K: i2 a
  2608. .DB 00, \8 p) Q! }2 g7 Y8 u9 ]. y
  2609. .DB 009 a, I" V  h; n2 Y) H7 k
  2610. .DB 00
    * d' Z% I" D+ c
  2611. .DB 00
    5 z+ z& y* U* @$ C' N
  2612. .DB 00: m# ]8 ~' ]* U  M- [
  2613. .DB 00
    2 }6 h1 X$ `, {+ p3 C7 v, H4 d
  2614. .DB 006 n7 \4 H  B2 N" o' }
  2615. .DB 003 k0 X) ^/ h2 D7 B+ I6 R
  2616. .DB 00
    8 W4 O/ ]# k# P$ B) A# T
  2617. .DB 00
    # n+ j! m2 f1 ]+ F
  2618. : s5 q9 u+ A; R4 l
  2619. ;==================================================
    ) {5 a( V+ J: M+ ~  K
  2620. Sound_Bank_8000                      ;专辑bank_80007 S6 N+ Z- f, W* C
  2621. .DB $10
    3 U9 ~+ y9 z5 ]0 U+ y
  2622. .DB $12
    3 Y2 y6 r; {7 [0 S/ @* o  \
  2623. .DB $14, D0 e9 m. o3 A1 I& R' P+ A9 i1 ^7 Q
  2624. .DB $16
    7 \$ B- i9 ?8 C+ o
  2625. .DB $18
    4 N3 x6 H% Q- f7 D% r  \
  2626. .DB $1A4 ?6 o* N4 H8 d1 \+ }7 ~
  2627. 1 h7 i* p+ e; ]* g7 S1 D& U+ Z# p, l
  2628. .DB $00
    9 Z' e- h1 i/ s, l/ v% K9 B) v% S
  2629. .DB $02
    5 J5 h# N! _4 V$ I/ K& d
  2630. .DB $0D1 {/ }# D5 i. Y3 D1 p
  2631. .DB $04* U; D/ S' ~$ }6 c1 Y( w. q
  2632. .DB $076 i6 _% E4 F6 S, A
  2633. .DB $0A2 w% w* ]3 E/ ~8 l$ m; x3 a
  2634. " Q1 u3 I' {. |( a9 U

  2635. 3 y& ~# y" y$ ~( I
  2636. ;==================================================, O3 k4 ?( n/ e& Y) }
  2637. Sound_Bank_A000                      ;专辑bank_A000# Y) d7 {4 K  E& G# J/ K" F
  2638. .DB $11- G6 O- L6 i& I. g
  2639. .DB $13
    * G8 L8 u/ V1 c
  2640. .DB $15
    % \' k3 ~- T, O
  2641. .DB $17% J& f' a% g  a4 |
  2642. .DB $19
    & V7 G$ m0 ^4 k* ^; ]" u
  2643. .DB $1B$ m4 {) \5 b; t' ?
  2644. , d; c+ Z1 f: {1 f
  2645. .DB $01) E( X6 D2 q. y3 p3 u
  2646. .DB $033 [9 i1 c. E5 i* @
  2647. .DB $0E/ {# \5 R8 N2 D) B: P" _
  2648. .DB $05
    5 R! P2 C1 W; P& W/ E+ N% L
  2649. .DB $08
    , i) l! g+ N/ Y8 \  a
  2650. .DB $0B% G8 t" E' y* e: I5 N7 o0 l

  2651. / [; ^. F5 l! I( @2 }: W

  2652. & U3 ~9 F: k7 q, K9 B% _
  2653. ;==================================================' T/ y0 F3 s5 Q% Y
  2654. .BANK RESET_BANK & BANK_DATA_MASK3 o( ]. g8 F1 n+ x8 N3 c" b% ~
  2655. .ORG RESET_ADDR
    ! J! t6 I; S" I8 Z: P, G$ H- ^

  2656. 7 k+ B+ F& D3 e* Q! `  D
  2657. ;==================================================/ m# `" W1 F1 ]3 Q: f5 ]8 |
  2658. Switch_Bank_8000;切换bank到8000-9FFF( g) ?6 a) a" k" X6 Y
  2659. PHA
    4 e  r5 G! |- Q# r* R
  2660. LDA #$06
    % F* R5 i2 W( ~2 D' x
  2661. STA MMC3_BANK_CTRL+ @9 J7 R! U2 I" w9 o5 \; {
  2662. PLA
    1 |4 ?  G' w$ t0 N# v8 k
  2663. STA MMC3_BANK_DATA+ W) G) n( H/ R2 H# V
  2664. RTS4 e% W3 A! Q1 w0 r2 w' w$ X
  2665.   N) B1 {1 y0 k9 k7 y' l
  2666. ;==================================================4 |) J& M6 U& B
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    : u# l0 Q5 R* G% h' l
  2668. PHA+ H4 y; Q/ [% J7 j1 V
  2669. LDA #$07
    5 q# J0 g) y1 v' q* K7 y# G
  2670. STA MMC3_BANK_CTRL. N9 s# G0 ~" ]- r. _
  2671. PLA9 Q# z" M1 j4 T0 V" \
  2672. STA MMC3_BANK_DATA
    - s, R4 A/ B- T9 g8 ]# A% r- J* h
  2673. RTS: K5 U7 ]! q. S
  2674. 3 f' J2 |" g$ M- \
  2675. ;==================================================
    3 \) I+ Y5 I" I6 j0 ?4 H. n, k
  2676. Switch_Main_Bank;切到主程序bank8 O. v' B4 O6 M0 j- C# g4 |7 W' D; S
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK4 a9 T; P- s* e, T& i" r8 z$ e! z
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank- i% O. J; {; ~! e  }4 y" @- |
  2679. RTS
    1 V! Z$ a: Y2 q1 r  f8 U5 R9 z
  2680. 9 a5 i! _. m) H, e3 O4 @' b% W
  2681. ;==================================================
    : U+ |! f* l' @. P) ]1 E+ O
  2682. Sound_Reset;音乐重设(如果有的话)3 ~: r% t% `3 Z% l  O
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    # o( Y; ^4 }* z7 ^/ K
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    . U. p* I- k3 e& f
  2685. JSR Switch_Main_Bank   ;切回主程序
    ( o4 ]% {+ ?7 Z6 o! r; o: F4 s# H0 q  i
  2686. RTS  i1 ]$ @5 ]% Z$ F; Y: }+ _

  2687. 5 `& E- ^% R  R: y- [
  2688. ;==================================================
    : i1 _% k. A) u8 e- B, f1 r* ?4 |' Y( e
  2689. Switch_Music_Bank;切换音乐bank9 |) u1 R, b8 C6 o
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号/ T# u0 ~3 n* C/ d
  2691. LDA <Music_Bank_8000
    " k/ q- n1 }/ ~+ Z* z* _! |
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    3 o3 f& g( {5 C! I1 i7 g6 f
  2693. LDA <Music_Bank_A000; z) j! k' M$ c" a; t2 ]( x0 G
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    4 u& e: H7 f( M( q  W5 W5 a4 w
  2695. RTS7 e8 D' W$ V( S
  2696. : E; a5 A) o, D) A
  2697. ;==================================================
    9 ^) E# B' n$ b+ Z; ]9 a$ X: \
  2698. Sound_Init;音乐初始化+ _4 n7 i4 \( D6 w1 p6 u$ c7 S
  2699. PHA, K( i. V' j/ U/ }
  2700. JSR Switch_Music_Bank  ;切换到音乐bank4 L, h% c% u" T# F! s! x
  2701. PLA0 D+ S4 W, R+ G4 z" G
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    ; A' B& J! ~5 }
  2703. JSR Switch_Main_Bank   ;切回主程序3 T, L) c% M8 R$ F, K+ S- E
  2704. RTS
    . R+ p2 B0 k0 V

  2705. 0 p$ Y. \( T  t  h  C
  2706. ;==================================================! z/ H2 ^7 V* h! [  Q' d* K; @
  2707. Sound_Play;音乐播放9 P4 A4 k& I+ p
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    0 S- ]  J& ?/ j: O5 @$ m- D' u
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    5 c2 i% J1 z5 e' B
  2710. JSR Switch_Main_Bank   ;切回主程序/ a/ B: c. s2 m" X: a$ U/ c7 w
  2711. RTS
    8 f& J2 k; l& F! b& G2 N1 X
  2712. ( D( z) p# M1 l8 A" n5 g/ V1 U
  2713. ;==================================================
    9 ^: Q3 G- V. j6 N
  2714. MainLoop;死循环
    % D3 m& V, ^; ]( F+ i: |
  2715. JMP MainLoop. q; X# U  _6 F+ j. V

  2716. % W  I  f; P' t2 f: Q( E9 n7 V4 X
  2717. IRQ_SUBPROCESS_JMP = 0
    5 C# `' I5 C, c% _" O) s9 k( E

  2718. & s8 V9 ]: n, l
  2719. .IF IRQ_SUBPROCESS_JMP9 c( @7 T5 m+ |. [2 [
  2720. ;==================================================
    / j. o  Z3 b+ Q3 M# p
  2721. IRQ_Process_0;IRQ处理过程0
    5 E) r+ r' j1 [( h4 F( P

  2722. # |5 t3 J/ l0 V" E5 O2 j8 A8 U
  2723. ;15条扫描线后触发IRQ9 w- L* ]/ x/ u# r/ l" F
  2724. LDA #15
    9 B) v0 ~' F; g! A3 x, `* H8 P+ M4 s
  2725. STA MMC3_IRQ_LATCH; j2 U0 m) H5 [5 j; B

  2726. 8 R9 }- t1 L% r4 m% E% ~0 @$ x
  2727. ;设置屏幕滚动
    % X, P& _% j$ O4 h- ~; v7 r2 o
  2728. LDA <Scroll_H! O9 }! w! {1 d3 |" _
  2729. STA PPU_SCROLL
    2 m3 Y( _! u, K3 g: U5 i) I# ~2 C
  2730. STA PPU_SCROLL# Q% d, l" ]" W
  2731. / A" [( h% s* y9 s
  2732. IRQ_Process_0_End) m& W% C6 t1 s2 r* u4 e6 _
  2733. INC <IRQ_Process_Index
    : |3 Y" H3 @0 m2 f+ [
  2734. JMP IrqProgramEnd
    6 ]& e' W9 X: ], @7 n

  2735. 8 M) O6 z6 N5 d4 x5 Q
  2736. ;==================================================6 r; k/ q/ R: u( Y8 d4 {! V9 J! P) u
  2737. IRQ_Process_1;IRQ处理过程1
    , P5 ?. j& c6 e0 N/ Z- ]9 q

  2738. # R% b/ Z7 ^9 @" @& z# D7 {) U1 F
  2739. LDA #55
    ! X& P( T* G" ^; L
  2740. STA MMC3_IRQ_LATCH8 S% q) z( n2 v# N8 h$ f

  2741. " V* f7 C- w6 C6 G
  2742. ;设置屏幕滚动6 l0 W3 h- m: ^* q/ X, k1 x
  2743. LDA #$00
    4 O' P2 F3 i4 H) F5 ^
  2744. STA PPU_SCROLL' B7 ?( I/ P) B
  2745. STA PPU_SCROLL
    - e( D- L$ x/ c, i9 J$ s

  2746. 3 M+ T) n5 _% z: i* s" G6 h
  2747. INC <IRQ_Process_Index
    8 F# X" ^5 }1 c& r6 W8 r
  2748. JMP IrqProgramEnd
    ( \& F+ C/ h, d2 ~4 z6 G

  2749. ' u' L, }& S5 y1 ?8 ?( s* U
  2750. ;==================================================
    # E9 T4 k2 D" n! J$ ^
  2751. IRQ_Process_2;IRQ处理过程2( _7 R+ N8 v  {+ a
  2752. + v+ n; J4 f( K- J3 ^
  2753. LDA #152 T' H- o, v' w( Q$ k! g, t% b
  2754. STA MMC3_IRQ_LATCH8 T  ~' i2 J7 L& p$ N7 t

  2755. * @/ Q! U6 T0 X
  2756. ;设置屏幕滚动
    * `+ d3 ?6 e- E: P. q* u
  2757. LDA #$00
    # W3 A0 s% ?! B( n. ~5 h6 P
  2758. SEC$ y& j+ n0 ?, G9 V1 m% \
  2759. SBC <Scroll_H3 E' ~  e8 D/ f4 \) y: p" _
  2760. STA PPU_SCROLL
    , |5 F! E* U- S! N1 Q/ k* ^
  2761. STA PPU_SCROLL
    8 }( [6 D7 m, K# E
  2762.   Y7 ?% n1 }9 B! _; @3 D9 e
  2763. INC <IRQ_Process_Index
    : v7 s: ]7 p- Y* _( _: C' ^
  2764. JMP IrqProgramEnd1 N  a# d" K) {. t( `
  2765. ( J  R5 m% T. I& I1 U$ D
  2766. ;==================================================% S" P+ \0 a% h/ F9 f
  2767. IRQ_Process_3;IRQ处理过程3
    ' A3 F( v, N; w3 a, T' J8 _! G
  2768. 0 k, o* Z8 s5 ]/ y
  2769. ;设置屏幕滚动
    5 f1 y: i( F5 @1 i/ P& Q; A/ v' F# I
  2770. LDA <Scroll_H
    & {' [) r/ R3 ~5 `" Z; Y# F
  2771. STA PPU_SCROLL9 l5 f+ z; J) F1 E# [
  2772. STA PPU_SCROLL+ @1 ~$ p. v" L
  2773. + q; C: f* B9 ]* `; k( h
  2774. ;禁用IRQ
    " n5 C- W- G7 {) S
  2775. STA MMC3_IRQ_DISABLE
    8 Q  }7 C8 [2 V  w. n. \. t) ^
  2776. JMP IrqProgramEnd
    ' Z4 h0 T2 U- [/ Y# Y1 L' b. ?7 \
  2777. " e. z) ]; j# D( h+ I" Q0 g( V1 A
  2778. IrqProcessAddr/ v8 z- e1 H0 M7 R( [9 j
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    7 t  E, m9 W- Y  |% g* _" W

  2780. 5 l  G6 s7 x; N5 j2 F, `
  2781. .ENDIF% R! t- a9 ?4 f% x5 c

  2782. / }( X( f9 @9 S2 l9 [% P6 G9 R
  2783. ;==================================================
    2 z7 \- k& l- v0 O
  2784. ;IRQ滚动模式常量9 N6 s, Z+ W& M' |
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动! H& l' x7 U9 M( R* X# o
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动3 C; y% Q1 |4 ?: `
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    # r* H0 E3 e; Q% H
  2788. 7 R& o. v( w$ o# q
  2789. ;IRQ扫描线数据
      y2 I; R+ s/ D, H) m; E# l/ J
  2790. IRQ_Scanline_Data' _! u8 s6 o/ D7 e# b
  2791. .DB 8% M, l( R! N3 `3 L8 t( {6 q  U
  2792. .DB 54
    : n) c3 k6 B4 u6 [4 Z' ~; _/ K0 t
  2793. .DB 8
    6 a  d0 M/ Y- w% J5 x1 H8 {
  2794. .DB 00 ;关闭IRQ
    * f5 M- e7 F; F! _

  2795. 9 H6 y; A/ O: c+ X7 S+ I2 @
  2796. ;IRQ滚动控制模式+ H1 p* D; I. v- e, q
  2797. IRQ_Scanline_Mode7 w7 Z! P/ [9 J0 ]8 R. V
  2798. .DB IRQ_SCROLL_MODE_ZERO
    8 L. L5 ]" V7 ^
  2799. .DB IRQ_SCROLL_MODE_ZERO
    3 Q4 N3 s, y% d. x: u8 m* o5 J
  2800. .DB IRQ_SCROLL_MODE_RIGHT- U$ \, V/ n* _! U7 T( }0 K
  2801. .DB IRQ_SCROLL_MODE_LEFT8 P, {, w9 P% u/ T# z

  2802. ' J7 v. |3 R! \$ f1 C
  2803. ;==================================================
    6 }* h* P) s7 F: X& T
  2804. ;IRQ处理" Z& F; A% ~, c
  2805. IRQ_Process
    # o/ V2 a: @2 J7 k/ w5 }
  2806. LDX <IRQ_Process_Index3 q! z$ P8 i! ~2 h) O  ]  R; `
  2807. LDA IRQ_Scanline_Data,X
    - n7 }' v+ X3 J" H' F" k2 M' {
  2808. BNE IRQ_Process_Latch  K9 Z" N" y. ^& E  _
  2809. IRQ_Process_Disable;禁用IRQ8 I1 o9 k, R6 \8 Z
  2810. STA MMC3_IRQ_DISABLE- |3 b* Y2 y4 Q$ a6 W
  2811. STA IRQ_Process_Index2 G, C% L' w# H/ a. }8 x
  2812. BEQ IRQ_Process_Scroll: E6 z7 ^& L7 u% [% @
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    7 v/ P2 _6 ~' O7 m" Z" i
  2814. STA MMC3_IRQ_LATCH3 Q" E; M, w+ }0 G
  2815. INC <IRQ_Process_Index9 o, u9 F- r, _+ L% a6 q
  2816. IRQ_Process_Scroll;IRQ滚动控制# B% ~( s0 y) k  T" Y
  2817. LDA IRQ_Scanline_Mode,X2 B0 h, I) i2 K
  2818. CMP #IRQ_SCROLL_MODE_LEFT
      i$ D7 F& }" }7 c/ g: g
  2819. BEQ IRQ_Process_Scroll_Left
    7 ^# ^  t% d0 R# `( o0 {, T2 N
  2820. CMP #IRQ_SCROLL_MODE_RIGHT) Q$ M5 O) p0 t, @1 H
  2821. BEQ IRQ_Process_Scroll_Right
      Y; u6 t, @; Y
  2822. IRQ_Process_Scroll_Zero;不滚动
    . F- z6 e& u& M1 v4 a3 J4 T' _4 i
  2823. LDA #$009 C( P$ ]6 v3 h0 |# W
  2824. STA PPU_SCROLL
    2 ^6 k& o! y7 }$ @# a3 z
  2825. STA PPU_SCROLL
    - ?' s( q* M( s3 \% L
  2826. RTS
    , b6 i3 c5 }+ z6 [% h3 e
  2827. IRQ_Process_Scroll_Left;向左滚动3 d3 ~6 x) l" x" c" I. k# s
  2828. LDA <Scroll_H2 }* N7 Y7 S8 `+ u
  2829. STA PPU_SCROLL
    5 z+ I% A& M: E* W3 s
  2830. STA PPU_SCROLL
    1 w! G7 _- K7 I9 c
  2831. RTS
    & }+ @; U2 _3 E, Q
  2832. IRQ_Process_Scroll_Right;向右滚动3 V. B) u: X# [! A; G6 M5 R* h8 V
  2833. LDA #$00
    ; |0 A0 A& [2 k4 t" N
  2834. SEC
    . }% T, m' @5 D) k5 U  \
  2835. SBC <Scroll_H: T( c* B+ f# J
  2836. STA PPU_SCROLL$ F% D- G# b: c% c' p) D
  2837. STA PPU_SCROLL
    5 y5 M% U" @. [1 N! P- ~/ c1 w
  2838. RTS7 P% l' Z4 _: m
  2839. : s0 I7 V5 Y  X1 ]& u1 z4 w
  2840. ;==================================================& v& a& T* r# P/ _! N  |2 @
  2841. NmiProgram;Nmi中断处理8 z5 F7 q3 \. J) a* L( g+ V
  2842. PHA- k6 T( g6 T- R  B9 |
  2843. TXA* ~5 R6 `0 }: D  i* k' {
  2844. PHA: p$ W& s* T" r9 a$ U, c) V7 ?# Y
  2845. TYA
    $ h4 @, `6 T, e$ h% F
  2846. PHA
    ) L( B" d4 B$ c* t& j+ z
  2847. : }* ]) D2 z. b) p5 I" S& B
  2848. ;读取清除Vblank标志, 防止重复进入
    2 g/ M4 A3 ~! }# Q# u8 x
  2849. BIT PPU_STATUS! U" n: J- `) ~! s; Q- b: A
  2850. 3 m+ ?9 X& N4 p: K
  2851. ;切换主程序bank
    $ n: x8 x/ y9 z' P" H
  2852. JSR Switch_Main_Bank+ X  {1 v0 `- i$ \. n2 \% a7 U5 U
  2853. + F; H5 `: e4 ^( G0 ^: {( Z: C+ P0 e
  2854. ;Nmi处理9 M- I9 _2 q$ L5 G! J$ d
  2855. JSR NmiProcess% q+ u& [+ o( U9 m
  2856. ' K! _. r% y6 w! R( x/ c* C* t& c/ {
  2857. Nmi_Proc_End, ]: x9 n+ @- u0 |% D$ J
  2858. PLA2 t* y9 X. U, B% [7 W
  2859. TAY" x) D# `2 g9 X& ]  L
  2860. PLA+ j" |  h3 H% B4 G& }0 Y* X7 K
  2861. TAX3 X! [+ u9 h1 T" ~
  2862. PLA$ s. u7 Q& w2 ]$ H8 M
  2863. RTI) E) ~/ ^5 t, d& A8 E

  2864. & Y7 P2 ~( Z- `  S# @# q3 l
  2865. ;==================================================
      W  d$ Q7 D/ C& c: Z6 a& {
  2866. ResetProgram;重置中断处理; M8 J; \6 a/ X* j" e: C
  2867. SEI
    8 d; x- S  V" _% G
  2868. CLD
    : g" P5 x5 X+ D$ _
  2869. LDA #$006 g/ X4 n" X0 S4 ~! y$ b, G
  2870. STA PPU_CTRL
    ; q5 `2 ^. {  z! u9 L2 }
  2871. STA PPU_MASK
    $ H! M; z% G$ I2 D
  2872. 2 G+ R3 N5 F: s
  2873. ;切换主程序bank
      X( H( W. d1 K
  2874. JSR Switch_Main_Bank, [3 m( Z1 `6 q8 m7 V* }
  2875. 0 P" e, I4 S3 ?" K8 @$ X
  2876. ;程序处理开始
    $ M8 t8 [6 s2 f9 u
  2877. JMP ProgramBegin: v+ R$ u% [( E8 p7 G2 K: D  I

  2878. ; L2 v: ]& |; H/ |8 m
  2879. ;==================================================8 `8 j2 r6 P" \  D6 n; P2 f
  2880. IrqProgram;Irq中断处理
    0 a! ?) v. ]3 J/ v2 o4 r
  2881. PHA2 G9 _( _( a; E2 ?0 ^  }
  2882. TXA
    + u) g) ?. ]8 B1 L3 b) e/ z
  2883. PHA
      u0 I' C' G( f. b& ~+ e
  2884. TYA
    ! O6 L$ ?% l( {8 S6 P
  2885. PHA
    . W1 w( o- x3 h0 u6 K: _
  2886. : {  N8 J  @1 B7 X/ Z+ M
  2887. ;关闭IRQ
    + `3 ]: i8 @, S+ `6 r! C6 g3 @
  2888. STA MMC3_IRQ_DISABLE
    9 A2 x% \5 M& I' I$ D
  2889. % _6 c+ U7 @1 b: j
  2890. ;允许下个IRQ触发
    4 B0 C) M! N( }) l  V1 `/ f, s
  2891. STA MMC3_IRQ_ENABLE
    # [2 [- P$ }! m4 x

  2892. 7 M+ {7 p7 e! A9 O7 Q& w4 h
  2893. .IF IRQ_SUBPROCESS_JMP- V2 ~0 q  U: Z

  2894. 2 V0 F: F- H$ i" m) D
  2895. ;执行IRQ过程- ]: I, P4 P( R5 Z* V; n$ O
  2896. LDA <Data_L
    3 z; w* N  u  p( v1 b: K
  2897. PHA+ U! z# G, N4 j' b( J5 I/ \
  2898. LDA <Data_H
    ) \; V! Y6 q0 ^5 E5 w; @: K
  2899. PHA. G$ e# Y! e) x2 h) S0 A
  2900. LDA <IRQ_Process_Index
    ( w# |# ^6 W2 ~4 g! S
  2901. ASL A
    # Z8 [+ X  f* ?# y
  2902. TAY
    - _& u. y- ?% D
  2903. LDA IrqProcessAddr,Y, I) p3 l2 O: a. c* v, x7 e
  2904. STA <Data_L+ m% ]$ H' I* H0 O  L
  2905. INY& R* a& D5 o3 V
  2906. LDA IrqProcessAddr,Y
    5 @( `3 {$ x$ i8 j& {% p7 B) b. c6 u
  2907. STA <Data_H  p4 y) w9 k6 r$ N) ^! \9 o
  2908. JMP [Data_L]
    5 i$ c6 i/ Y  S% D+ u

  2909. 0 _8 M* m- j* K7 R
  2910. .ELSE
    - e" V# I" d+ Q2 Y! {  w
  2911. % E. A5 u) Z$ t: Q
  2912. JSR IRQ_Process% g) b# H" m8 ]$ Q/ r( [) `

  2913. . P1 d5 K3 j, w
  2914. .ENDIF5 w$ W# I& D2 U. a

  2915. & h8 Y7 b& N9 z+ N2 h- C& Y/ M4 Z/ l
  2916. IrqProgramEnd; Q$ T7 V$ h  d# |9 i2 J
  2917. .IF IRQ_SUBPROCESS_JMP' I  q& L/ \2 l) L7 D) U3 O' M
  2918. PLA
    ' P& Z8 t1 ]' [& t- M
  2919. STA <Data_H
      P4 d* ^: l8 s) P
  2920. PLA
    5 `0 u4 a# ~4 `1 w0 \! _
  2921. STA <Data_L. o8 n$ D( E5 k
  2922. .ENDIF$ m6 c# R. p  J( @2 G4 [9 S# J
  2923. PLA
    5 |8 ?8 K( Z6 {1 U, F
  2924. TAY
    / ?3 Q! G1 [% n0 w0 L7 h9 q
  2925. PLA4 r' W' {: ~2 s# E9 B0 O! X
  2926. TAX- D# U. ^2 ]4 m% w8 v6 }! ~1 c
  2927. PLA; _. R- Q4 W# a' g: y1 u
  2928. RTI
    + L. j3 y2 S) C# |4 b0 a% a

  2929. # D9 y9 `5 [8 u6 b
  2930. .ORG $FFFA
    0 P. D+ r' d" r: @. M% m1 v+ D  s
  2931. .WORD NmiProgram" e0 C9 H  P1 ~% x( C
  2932. .WORD ResetProgram
    . z; ?7 a4 O/ z1 H7 o6 T
  2933. .WORD IrqProgram
    " `) y2 z5 N4 D9 q. l

  2934. . l# l2 H+ x  A* u9 p
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    7 V" w* [7 v, v/ A) [" K; |8 j
  2936. .IF SOUND_BAR_SHOW_ENABLE4 J/ b3 @$ f( \/ @
  2937. - H) `5 A9 m0 C# S+ w6 y& v6 Z
  2938. .ORG $FE00
    + Z; Q" b9 V( @
  2939. PHA
    7 }. M: Z; P' v9 V4 y  B* Q
  2940. STY $07BA8 I) j% o/ t( E* y) l; ]
  2941. LDA #$8D6 C+ z2 a; |; Q4 T5 ^8 f
  2942. STA $07BC7 ?; h4 b3 z% C& `% U* }7 c
  2943. TYA" h" }2 @% n/ N: P% C
  2944. CLC7 Z$ z0 o0 n5 c" l. q8 Y  M
  2945. ADC #LOW(Sound_Bar)
    8 y# y: \+ d( p9 E; u( Y
  2946. STA $07BD) I( o( l% n# r& y% W, j# h+ p
  2947. LDA #HIGH(Sound_Bar)
    1 \1 q: C) C2 t6 ?  q
  2948. STA $07BE/ \, E$ ^8 `+ u3 }3 }* b
  2949. LDA #$60
    3 q% i/ h4 k5 p- O
  2950. STA $07BF$ \3 g, C, U( ?& y- P! s1 z
  2951. PLA
    8 l6 _$ g. ?$ D1 ~: V" w
  2952. RTS
    ) Q; }, x% s. @* d% l! e; O; @( D0 Q

  2953. : h" u/ C3 u6 \, p) @% q6 B. n: ]/ R
  2954. .ORG $FE20
    # _2 G2 g* G4 O" R3 Z
  2955. STA $07BA
    % |, ?2 O( ~! @- f$ \  y6 p
  2956. CLC1 D3 {$ N" g3 B8 t
  2957. ADC #LOW(Sound_Bar)
      W* k* ^) h/ q% O
  2958. STA $07BD3 \- q8 i6 a- v+ H: t( T- h" N
  2959. LDA #$8D: R" I2 v6 f- r
  2960. STA $07BC
    ; X8 d* \  Q! p$ c/ h
  2961. LDA #HIGH(Sound_Bar)
    - _- O2 f- h6 H  A9 X
  2962. STA $07BE; _, v9 I) B  v- }6 ~
  2963. LDA #$604 h- z/ y- ~$ u  u: e' j* a
  2964. STA $07BF1 k. Q% K6 d3 P6 X1 |& [; s
  2965. RTS
    4 P5 ?$ C2 R% d$ `
  2966. $ s4 t& b, ~7 ]# R  w* b) t% A
  2967. .ORG $FE40
    ' F; A: h3 A7 i: H) _" M
  2968. PHA
    8 j$ j$ A. i5 b# S8 C
  2969. STY $07F1
      t! Y% v1 u" k
  2970. LDA #$8D/ h5 b' E9 e3 {- @
  2971. STA $07F3
    * L6 d1 S1 a2 W+ @
  2972. TYA
    6 r; ^9 e3 x8 ~  }' u& [2 N
  2973. CLC
    # S) y0 F9 n# P; e
  2974. ADC #LOW(Sound_Bar)7 G( H# H! ?4 ]# s4 e6 K
  2975. STA $07F4
    ; M3 j+ A5 r( M# v: p7 D* ?7 Z
  2976. LDA #HIGH(Sound_Bar)+ [2 _+ j8 X3 a" r1 L. f) S
  2977. STA $07F57 w4 D- U; j0 Z6 W9 v8 U1 u' s+ x
  2978. LDA #$605 |' F& D% C/ c* z& j: Y
  2979. STA $07F6
    & U# C, P8 P( A7 C/ m
  2980. PLA" c6 q/ f" ~3 S: p
  2981. RTS/ _( m+ K7 c( x& G* ]

  2982. 8 y4 B# |4 G: c2 L+ V, I
  2983. .ORG $FE601 a7 }- A& d3 P' F4 v# v
  2984. STA $07F1" e3 h) z- k4 F) C& l% n) F
  2985. CLC7 c% ^2 f: A. f  ~
  2986. ADC #LOW(Sound_Bar)
    3 t. e/ f# x0 \3 H  Q% e# u
  2987. STA $07F4
    # X# i: f- H  v2 l- ?
  2988. LDA #$8D
    - h# k3 n/ y  {1 i" R. G
  2989. STA $07F3% ]$ r: c' @' f. t+ y
  2990. LDA #HIGH(Sound_Bar)
    5 ~5 M% |. l# n" c* Z5 P
  2991. STA $07F5
    0 V. u( z. e1 [+ u) U7 m
  2992. LDA #$60
    + F8 x$ k' j  X3 E6 a
  2993. STA $07F6
    % J1 S! G" I5 ]+ A
  2994. RTS) r; H' v) c$ ~5 C3 f8 Q

  2995. # [& m, c  s8 a$ \4 k# b9 g% A
  2996. .ORG $FF40% r- {3 s$ Y$ Z2 P4 R
  2997. STA $4000
    3 \* d, @1 C, R1 B0 ~
  2998. STA Sound_Bar + $00
    5 q$ Z, v: d; N# j3 R
  2999. RTS
    : |5 O' d' U! D1 @( x

  3000. * ^+ E3 {, Q) b- t
  3001. .ORG $FF48
    4 n& d# v8 E: P; h' F
  3002. STA $4004
    0 N1 A& A  {( g7 Z$ e6 N" m; F7 d1 B# Y' l
  3003. STA Sound_Bar + $04
    ( Y4 |  H: @+ s* w8 X
  3004. RTS
    7 |" @6 Q2 N! p4 n' S

  3005. 7 O- d( X9 k! h9 P, Q
  3006. .ORG $FF50. @6 d( C% [* ~  @
  3007. STA $4008$ B  p- K* G/ f2 q0 u0 g- ?: J; f
  3008. STA Sound_Bar + $088 [6 d2 Z' F# F# s
  3009. RTS
    / t3 G' V' O: B; x
  3010. 3 {7 p3 w# X% u5 ~5 ]2 g) c
  3011. .ORG $FF585 w0 M1 P( _9 [! d3 {
  3012. STA $400C
    - C: l2 a, _( N! f
  3013. STA Sound_Bar + $0C! @6 ~$ k: W7 \+ A6 F( _
  3014. RTS1 e4 V; z- X8 k5 s; {7 l

  3015. 7 u8 y( ]- u1 D$ k4 z( I. I5 c
  3016. .ORG $FF60/ _! k- Q! U( ]4 H$ n* t: z$ v) {3 E- f- @
  3017. STX $40000 N. w2 V8 F/ R# M
  3018. STX Sound_Bar + $00
    8 F2 Y8 @: }: R# `' G+ C
  3019. RTS
    ; m) j+ {! }* m4 f' P
  3020. ; ?. G9 V1 `5 A1 _/ y
  3021. .ORG $FF68* Y! {" B% i$ {0 W
  3022. STX $4004
    + d0 x8 I4 ?9 F# [/ c
  3023. STX Sound_Bar + $04
    % B( d- R6 O" l' E# _6 i
  3024. RTS8 d$ C3 z) ]( Q
  3025. 0 T! W$ `8 L8 c1 ]/ }
  3026. .ORG $FF70- K* E( f& p% V
  3027. STX $4008
    3 p, L! V% H8 V; M" |6 K) t) h& m
  3028. STX Sound_Bar + $08
    % H) C; f" Y/ R1 q+ y' Y, Z
  3029. RTS
    ) x% ]2 q. \& s- ~
  3030. - \3 R) m" A8 q$ U
  3031. .ORG $FF78) R- ?+ d2 k" i! n/ R9 q
  3032. STX $400C) [6 d! h/ X' O2 ?: y/ J0 P) ]7 N
  3033. STX Sound_Bar + $0C- b+ b& {6 b" [% H8 M; U$ c, g4 x
  3034. RTS2 F! @2 @& I  c6 k" @/ R7 J) T

  3035. % e/ j# s0 ]$ a5 A+ [4 b/ G* m% B
  3036. .ORG $FF80
    ( ^, v4 q4 r9 l% O; o8 c  a
  3037. STY $4000' ]. B- v% f$ @1 ?
  3038. STY Sound_Bar + $00* v  X4 r) Z0 b: B; w! X$ E0 g
  3039. RTS% g; z  _3 L, Q8 X! z" S
  3040. 9 n' c+ K$ c0 G  x/ l* u0 R
  3041. .ORG $FF88
    # i6 ?8 L) L6 ~( o' `
  3042. STY $4004
    1 I' G* o/ ^" e, z
  3043. STY Sound_Bar + $04
    ! H3 f) F# |% K3 F
  3044. RTS
    ( v" w& M. C& n' C+ Q
  3045. , _6 p4 s+ b: e& C: C! r! ]
  3046. .ORG $FF90' F+ E( q) @$ z+ g; R4 r0 M
  3047. STY $4008
    ! u6 N+ b( s! d. J/ `
  3048. STY Sound_Bar + $08
    $ p5 d  O. ?$ ^# k# p$ g
  3049. RTS
    . N5 z3 O+ T5 M  e7 L' \

  3050. 5 S9 _" X( j, ~8 U8 ^9 @+ s
  3051. .ORG $FF98
    , A" L/ \" f& p
  3052. STY $400C( ?- V- _* Q$ }$ `
  3053. STY Sound_Bar + $0C  k: i: q. K5 P6 W( V. U4 `
  3054. RTS
    + w4 v4 T8 F% ^) U
  3055. " d0 p* z/ a& A% u/ i5 q) I6 B
  3056. .ORG $FFA0. }' K$ ]' ^* |8 T0 _  u
  3057. STA $4000,X
    # N4 ?$ c: k" k( e
  3058. STA Sound_Bar + $00,X5 P# D! t& P4 j- P4 r- f0 T
  3059. RTS
    ; R* q5 H0 U( J- `* f0 y' b3 K

  3060. & q* x% x% R4 t4 x" l5 G
  3061. .ORG $FFA8  l8 C9 o$ I) {! I
  3062. STA $4000,Y5 ?. @9 x; `" r$ K
  3063. STA Sound_Bar + $00,Y3 g+ E& _1 b' H1 B
  3064. RTS, Q, g: U' O' b! u  t
  3065. 5 J) N4 w* H' {9 ]) K, g( k+ @1 ]& ^
  3066. .ORG $FFB0( M  d6 _6 w- W9 C
  3067. STA $4004,X
    $ k3 ?8 F& |6 F" y% K% C: g  B& c
  3068. STA Sound_Bar + $04,X
    8 O6 [5 I& Z+ ]. Z! `+ p
  3069. RTS
    ; {& ^& n& i" T* p2 i

  3070. 9 @' |, M& i; \, h
  3071. .ORG $FFB8
    8 v+ Q" ?2 L0 F$ G
  3072. STA $4004,Y0 G2 M& g) k/ Y( A* ]
  3073. STA Sound_Bar + $04,Y
    ! s) X( b8 J: Q& }# o
  3074. RTS- \6 j! c/ `/ F  O! j

  3075. 8 x% p. ~+ p( h6 `. ]: N3 \
  3076. .ORG $FFC06 l4 o, Z5 ?1 J5 S
  3077. STA $4008,X
    ( S/ V7 `5 ?4 t% S
  3078. STA Sound_Bar + $08,X! ]7 S, x, t  l& N  ^* M0 d  T8 {
  3079. RTS. S1 b7 [% {9 O$ w1 ~9 t9 G
  3080. . W% s7 x- I6 w  N( m* _/ x& f
  3081. .ORG $FFC8
    + t. G0 H7 V# \
  3082. STA $4008,Y1 n3 T( q( V: t  l
  3083. STA Sound_Bar + $08,Y
    9 C# `; K  Y  O0 S7 M
  3084. RTS
    ' {4 L3 n4 ~/ f. t! l
  3085. 8 X$ |' t, U" a3 x/ r. M8 g3 Z
  3086. .ORG $FFD0
    * Y, T. J, G0 X% @; A
  3087. STA $400C,X+ b/ J$ M7 `& h& `
  3088. STA Sound_Bar + $0C,X5 G* R8 c) c& H6 s( J
  3089. RTS) q! |( r6 ]5 V2 L3 s; E: F
  3090. 1 `$ q9 }/ s: z
  3091. .ORG $FFD8
    5 H3 G3 z# r. x- {' U7 b  r
  3092. STA $400C,Y3 k- A0 B" F$ J' I/ v6 h
  3093. STA Sound_Bar + $0C,Y
    : Y! {( z7 v0 V3 s2 c) D
  3094. RTS9 j4 {" J- [3 r, D* j& X

  3095. % A2 X5 [3 r0 G1 d7 b) C% S
  3096. .ENDIF
    / t  o$ J; x! o* J0 i) O4 f
复制代码
& r- L2 R2 C* G3 J0 u& L$ N; }
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3395 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-18 03:42 , Processed in 1.121094 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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