EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 0 d1 Q7 k+ T# f

6 L% `+ t6 H" X& s. x! ]6 d2 O6 L[FC][音乐12 IN 1]
) y" R  I7 p6 J" v时间: 2023.07.23  Q) s: l' D! N, o  y- k7 y. ^
作者: FlameCyclone
+ m! _8 J9 s# ^1 k  i4 k9 j
9 p, C' F# [, p* `收录音乐内容:" o& {$ d# B) m. q6 S$ O4 Q* I, z
1.Raf世界
7 h- Q2 b3 x0 J' z7 G& r: a2 d9 }2.最终任务
6 n  G: S2 i+ a+ ~7 X, q9 q  {4 z2 \3.赤影战士& u% `8 ]# i* p" Z6 O/ P; g5 D
4.双截龙
5 Z* C) R1 t. l; Q% G! K5.双截龙26 N/ Q2 b/ \+ _0 }0 H, `* N; T! B
6.双截龙32 ^4 H; z' p7 }% M, b& U5 N
7.洛克人- H! x9 B9 n7 ^: A& d
8.洛克人2
! ?. @! t! d2 W! W: b9.洛克人3
5 Y9 N4 i; s7 Q0 V' b- w" U) L$ `10.洛克人46 }. }& t8 X" ~6 [) A1 c9 T2 ?2 H
11.洛克人5
, R1 x% \# Q/ I# O12.洛克人6
4 S6 Q5 M& q; t
" a! O( I  P' i' f& u4 a. ?! u操作:
$ T9 E2 \7 R( W: i8 m上键:         上一个专辑
1 n0 ?' ?  }2 p0 h9 U- G) V下键:         下一个专辑
$ A' G: Y/ B3 J; q% \, Z左键:         上一曲; ]1 Q, H0 N) D- u* P
右键:         下一曲
/ [) e: w. t+ F& [1 Z7 N: BB/A键:        前10曲/后10曲* S2 I- t' J( l1 I
选择键:       下一页+ T4 s! |3 P) b* G0 @! S) p
开始键:       停止/播放
, q5 c" [" k" M5 O
( ^) b2 D5 k/ W, H% M' g# Dhttp://flamecyclone.ysepan.com/
# r0 ~3 J2 e5 p
& b2 \) p; [4 M( B% N. N, J  |
/ Z3 y/ X! x6 F9 i% F0 s& q9 m3 E8 [+ {# f4 x1 k& g+ w) F6 r
; M8 O7 k9 [5 \8 b( g* |) g& k
  1. ;[FC音乐][播放器模板]) h$ i; v: J+ g1 A& Q
  2. ;FlameCyclone 20230710# K. w* T: J5 h5 Z9 D5 B

  3. 0 e4 G" ?6 o& a8 V$ |
  4. ;文件头  {% d1 S! ]% A/ O
  5. ;======================================================================7 F2 u9 Z  ?" l' X; M
  6. .INESPRG 16                                             ;16KB PRG 数量
    , C: x) r$ v! g7 X% J% ^3 m
  7. .INESCHR 1                                               ;8KB CHR 数量: T: f+ E3 s* b: J; c5 n
  8. .INESMAP 4                                                   ;mapper 4/ l) G, H; {) Q* f6 K2 G" b1 n
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    2 ]6 t# G/ Q$ K! q0 `+ n- N  s

  10. ' {! w  i1 `+ z+ L( j
  11. ;==================================================
    * g8 I6 B) d& T9 o% I
  12. SOUND_BAR_SHOW_ENABLE       = 14 ^$ z9 T' m2 T1 c5 h# G
  13. ;==================================================
    # t; b, i  f0 N" I2 f
  14. BANK_DATA_MASK              = $1F% x2 P) I  c& z6 l: `
  15. CHR_RAM_ENABLE              = 0
    & v! J( x. G2 C9 s* J
  16. IRQ_SCANLINE                = 136
    2 k5 @; S7 k+ {) H
  17. ;==================================================
    ( S* V0 t1 A7 t0 K- p  n
  18. SOUND_DATA_BANK_00          = $00/ ]3 v) ^2 f. t0 ^3 J
  19. SOUND_DATA_BANK_01          = $01. s) H* {5 j' n1 l6 m
  20. SOUND_DATA_BANK_02          = $02* M* M3 B  O0 K# Y: `4 N* `& Z
  21. SOUND_DATA_BANK_03          = $03
    6 ~9 [2 P& ]9 |" A) R2 e, F+ Q
  22. SOUND_DATA_BANK_04          = $04
    6 J) x- _. }# O* X9 b
  23. SOUND_DATA_BANK_05          = $055 M' h* }" x! f( z2 k2 f4 L. G$ x
  24. SOUND_DATA_BANK_06          = $06
      f6 L7 P% q9 x, ^
  25. SOUND_DATA_BANK_07          = $07* O1 t- ?1 y8 ?, j9 k3 g- l
  26. SOUND_DATA_BANK_08          = $08, m+ C' f3 O' t  Z( [7 v4 m: K
  27. SOUND_DATA_BANK_09          = $091 e. R& e% G, a& w% J& u# q
  28. SOUND_DATA_BANK_0A          = $0A
    3 k4 {* Z3 o$ [4 S  I
  29. SOUND_DATA_BANK_0B          = $0B0 U1 x# h4 a3 x/ e
  30. SOUND_DATA_BANK_0C          = $0C
    $ _$ }# @. D1 c" r( V% `
  31. SOUND_DATA_BANK_0D          = $0D
      F$ b. ~" ?" q& t! O
  32. SOUND_DATA_BANK_0E          = $0E
    5 l# N- L% l" N7 F+ R
  33. SOUND_DATA_BANK_0F          = $0F) f( d2 y  I7 c* G3 ^

  34. ) t* \- t9 O9 O
  35. SOUND_DATA_BANK_10          = $10$ w7 ]( y# p* Y) v( s4 ~
  36. SOUND_DATA_BANK_11          = $11
      R; \0 K! s3 X2 Y4 ~) C9 y
  37. SOUND_DATA_BANK_12          = $127 s3 x0 S% Y' G
  38. SOUND_DATA_BANK_13          = $13
    7 G* i2 k9 G4 {3 J: W/ C3 M- R  s
  39. SOUND_DATA_BANK_14          = $14
    ; n" D9 T2 z) q5 F) y- m9 v  Q
  40. SOUND_DATA_BANK_15          = $152 N1 ^1 [0 x8 o' b
  41. SOUND_DATA_BANK_16          = $16
    9 ~% w* t$ k! w5 ]6 C, A
  42. SOUND_DATA_BANK_17          = $17: M9 m! u9 E$ j1 j
  43. SOUND_DATA_BANK_18          = $18- [% |, E! R0 M. B: `- z# J
  44. SOUND_DATA_BANK_19          = $19) k: t3 e0 a, j$ _2 `; R$ Q
  45. SOUND_DATA_BANK_1A          = $1A0 c. D6 |5 N1 E. L- d
  46. SOUND_DATA_BANK_1B          = $1B  f) S5 s' z- {- f
  47. SOUND_DATA_BANK_1C          = $1C
    0 ^- Q, ^( V, h
  48. SOUND_DATA_BANK_1D          = $1D
    : v) T0 T1 J+ P  I

  49. # G; q& _2 E7 e. F- m+ ]" Y- w
  50. SOUND_DATA_BANK_C000        = $1E
    ( @! F: ?) G$ w4 [
  51. SOUND_DATA_BANK_E000        = $1F
    3 F8 N+ e! Q/ W& ^
  52. ;-------------------------------------------------
    : _7 x4 ~# Q5 o/ C- ~! B! F" X
  53. CHR_DATA_BANK               = $20
    : y. L' c& B# ~# c. c: L
  54. CHR_DATA_ADDR               = $A000* W/ I  P3 P, h' L% \
  55. ;-------------------------------------------------
    0 [$ h+ i' g0 K0 A' |
  56. PROGRAM_BANK                = $002 m9 C5 M- e# b( t, i5 u9 |6 Q
  57. PROGRAM_ADDR                = $8000$ v  {3 r7 s0 A2 Q: N6 H
  58. ;-------------------------------------------------
    / l8 b' Z. V$ I! X1 V
  59. RESET_BANK                  = $1F  C4 S5 f2 V3 t; Z& m4 f; P
  60. RESET_ADDR                  = $FD00
    # X/ S2 C) p* S( E7 _

  61. , H1 p7 ~8 f, @6 i/ v+ k
  62. ;==================================================
    & Y# q! r5 [+ Y/ B+ K
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    ) K8 x0 S5 j# F2 C/ H
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引  h6 o0 c1 t, D4 j# {3 P
  65. PAGE_SIZE           = 5                     ;每页节目数
    6 r" }! n, \0 C* a6 J# u% J
  66. # |, X0 r' j/ o3 f! A' q4 Y
  67. ;==================================================
    0 T3 w3 ?; e  @/ \" v8 }
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    6 G! |+ [1 F; Z3 C
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
      K9 m5 [* s. N/ W
  70. .ELSE
    , R" Z7 T0 [/ U! X
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数5 n! H& `. \9 a5 S/ p0 p
  72. .ENDIF1 k0 [: K  V2 ?, H' r
  73. ; i; d5 |5 b! |
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    $ N# y. G# C4 l9 j% T* j9 C) @; o
  75. 3 ^$ G& P- J& h; h( B
  76. ;==================================================8 i6 h2 [3 f# ^- F6 ~
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    4 `/ D8 \, v; e
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    / d: E6 X( f- T8 Z: |7 a( ]% ?
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    , q+ [3 m8 Z& f* p. f
  80. ;==================================================
    5 z, F9 |7 `0 @" I4 S. Z. q- f
  81. Caption_Text_Pos    = $204D ;标题文本位置
    : k* ~+ S- u$ j& s
  82. Author_Text_Pos     = $2324 ;作者文本位置1 J* V$ c+ u) K5 t
  83. Date_Text_Pos       = $236B ;日期文本位置
    & e6 B) E, ~* `' a! L& p+ \
  84. ;------------------------------
    * j& E. o0 K5 L" n* F' @0 ?
  85. ;------------------------------/ B. B! N( Y3 R( M
  86. .IF SOUND_BAR_SHOW_ENABLE9 F* M+ O5 s# A2 k4 t
  87. 0 w8 c4 }7 N' J3 f4 k: s
  88. Play_Index_Pos      = $2273 ;当前曲目位置/ y( l% h& F0 x5 A
  89. Play_Time_Pos       = $22B3 ;播放时间位置9 T$ M% P5 @5 q  o' e
  90. Play_State_Pos      = $22F3 ;播放状态位置+ b8 @. d2 o6 ]' l$ w! Y
  91. & V6 M2 V5 A" L: }) t# u! H
  92. .ELSE
    : n) F% W- A* ^* C" D' L7 l

  93. . s( T  L  K2 B+ @
  94. Play_Index_Pos      = $226C ;当前曲目位置) \! O% @  n9 j$ c& L
  95. Play_Time_Pos       = $22AC ;播放时间位置
    , {# P3 }9 ^/ x* J# S
  96. Play_State_Pos      = $22EC ;播放状态位置9 M( G) ]* D+ n6 @' K) {
  97. ( d0 J6 f6 i: F
  98. .ENDIF
    & b# A0 V8 b# |; Y+ c9 y, O
  99. ;------------------------------
    / V( ?$ _) M2 B! T( g1 ?6 O
  100. Track_Name_Pos      = $222B ;曲目文本位置
    7 x0 b3 s7 L  s9 L# @& x
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    5 L  E1 u$ [( H6 `! x. {3 N: c/ N6 Y
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    * z7 M, H/ f8 v) H" M, Y$ \2 ]5 C
  103. Sound_Bar_Pos       = $2269 ;音乐条位置5 ^0 F" ]$ D, i: C+ R- n/ Q
  104. ;==================================================! V6 f: d, V8 Y+ w
  105. Scroll_X = $00
    5 i2 n% \3 \% a7 @% P* K. D3 i* H: H
  106. Scroll_Y = $00
    5 _$ }4 R8 a) I6 s2 c2 F& H0 E
  107. ;==================================================% a7 V5 F$ E- v( X
  108. Sound_Ram_Addr_1       = $0100* d$ o2 b( I; j/ ?, }
  109. Sound_Ram_Addr_1_Size  = $80
    5 v4 _3 X, F. b  M9 @
  110. Sound_Ram_Addr_2       = $0090" ]+ t& k, C9 o  r" ]8 R, X* p
  111. Sound_Ram_Addr_2_Size  = $70
    - |: @' w6 E3 x$ Q% n+ \( X+ ~
  112. Sound_Ram_Addr_3       = $0700
    : b2 e9 x# y. _8 a
  113. Sound_Ram_Addr_3_Size  = $00
    . w* t; [+ y) @; |$ f
  114. Sound_Ram_Addr_4       = $04004 E4 H3 ~" h9 `* m2 h( {! C
  115. Sound_Ram_Addr_4_Size  = $00: l! c9 p2 s$ Z/ h
  116. Sound_Ram_Addr_5       = $0500( K8 W# Z" \0 r, i$ q* O! ]
  117. Sound_Ram_Addr_5_Size  = $40
    " T' D4 z, d+ e1 x% z& e

  118. 4 Q2 n% ]! Z. g: c( Y0 |9 l8 J
  119. OAM_TEMP_ADDR   = $0300
    ' A1 [! N+ _& ^
  120. : |- Y3 U- d# x& W* v
  121. ;==================================================; Y. g9 Y, N6 M
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器4 u4 j& i5 b4 v! v6 j3 m
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器. G) \7 H7 t5 ?0 y7 z+ l9 s8 |
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位0 ^# G) u8 b, K) ?2 i
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    3 m" M9 ^( y" z: N
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1( p& m3 p/ I7 h+ y: [
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    $ r  F4 u6 W1 |# _* p8 E3 |6 l
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加1 ^2 B) @- @  d5 H, p' `( G
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 9 U' R: f9 \$ g8 b& T! s9 ?
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存$ P) F9 B; |, W, W  m$ w
  131. APU_STATUS              =   $4015   ;声音通道切换
    ( l0 W7 e0 W; V; w6 Z
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    " W4 [0 p( p$ [9 n. G2 g3 |
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通1 i& T* U# Q: \5 {! ?7 L! |5 X/ ~% O
  134. ;==================================================
    * \, C# k0 d* I% J
  135. MMC3_BANK_CTRL          =   $8000
    * K' A8 E8 r( @* Y9 v% `: _1 g8 q
  136. MMC3_BANK_DATA          =   $8001* d3 L, R& G4 i& R) x( l
  137. MMC3_MIRRORING          =   $A000
    4 P* y2 v( F4 {5 X( a
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    4 y) q" P; k4 d% Y
  139. MMC3_IRQ_LATCH          =   $C000, }! o7 A% T" f, M
  140. MMC3_IRQ_RELOAD         =   $C001
    $ g9 k  }1 q+ P. v# P! J6 z2 w2 ^9 S
  141. MMC3_IRQ_DISABLE        =   $E000! f, f1 d6 N' }/ o% V3 b; J
  142. MMC3_IRQ_ENABLE         =   $E001
    5 }) T$ ^# G2 E$ _, Y
  143. $ O8 C5 Q5 k7 @, w6 a7 u! B- o
  144. ;==================================================
    / d# @/ c* A; K
  145. PPU_Addr        = $0200
    . {4 l/ l9 K* u6 G2 m
  146. Palette_Addr    = $02C0
    7 T4 c- m% ?, h/ P% o( T# }: ?9 n
  147. Sound_Bar       = PPU_Addr+$E0
    1 i( z) V7 L+ o% ?4 f$ S: T7 {
  148. ;==================================================% x7 T0 k% X, X
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D, A/ T# W5 d# c
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    ( f* b: m" @) V4 S; R0 I5 C
  151. PALETTE_UPDATE_MAX      = $2C
    6 ^, N/ Y& e+ z& g& p0 i1 z* M
  152. PALETTE_UPDATE_MIN      = $21; v: R" @% O# w; ^  [. S# {
  153. PALETTE_UPDATE_INTERVAL = 60
    " J0 k: e7 e4 A3 d3 L0 p
  154. ;==================================================
    # ~% w7 o; g, k* Y4 h. ]
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    4 }* ?, |  ^" P" C9 f
  156. PPU_Cur             = Sound_Bar_Cnt+$02$ @" A" V7 W' b7 o1 o& z
  157. PPU_Addr_H          = PPU_Cur+$03
    8 s+ a  h5 Q, G7 F5 ^2 d
  158. PPU_Addr_L          = PPU_Addr_H+$048 |; m4 ]2 t7 K: B! Q9 F3 @
  159. Screen_Ctrl         = PPU_Addr_L+$01/ r5 n8 F& F: P# t4 h
  160. Screen_State        = Screen_Ctrl+$011 S2 M! T6 s; }( b8 y# q6 |3 I
  161. ;==================================================
    + [  W* Q1 A! e8 w
  162. Use_Ram_Begin       = $50
    . k# I) x* t0 z! S. {
  163. ;==================================================
    $ d. C5 T5 @8 u8 D0 U# p9 Z
  164. JSR_Addr_Op         = Use_Ram_Begin# k- r1 \7 w6 p) s4 m6 N1 ]
  165. JSR_Addr_L          = JSR_Addr_Op + $01( ]) V2 {; R8 ]/ t3 _2 J+ R- h$ d
  166. JSR_Addr_H          = JSR_Addr_L + $01
    7 y1 v; M4 N: E0 O. N
  167. JSR_Addr_Rts        = JSR_Addr_H + $01; N. B5 O4 w* k' q4 s! j
  168. Data_L              = JSR_Addr_Rts + $01
    " O  O; N! {- g6 g0 @+ B1 V) o* I1 T
  169. Data_H              = Data_L + $015 l1 U+ z4 }5 r6 [# g
  170. Data_Cnt            = Data_H + $01  s, t( {( O" U2 \5 P5 U" m
  171. Data_Buf            = Data_Cnt + $01& z! b) \7 K0 T, M/ v
  172. Nmi_Time_Count      = Data_Buf + $011 Q* m* x4 |; S8 i7 G4 n3 e
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    + m% i! B, C( P- K' E9 O1 U0 m
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $015 W* A8 A7 {, a, s1 N' {

  175. $ |% k, n0 @- [0 G
  176. ;调色板刷新标志5 o% F2 m4 K% U# g- D# g3 [6 E
  177. Palette_Update_Flag = Palette_Wait_Cnt + $016 ^' x2 u9 ~3 F# p) x! g' D, T

  178. / K5 I( ^9 ]- l" _' ^/ t
  179. ;当前帧文本写入禁用标志
    " \. T: X, }$ j
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    # l( p7 I/ x- f: G$ j* W

  181. ! q  w% ?2 P- Q/ ~* t
  182. ;==================================================
    8 m+ g. [' z: k
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动# E0 T* O7 U3 S2 ^9 m) M/ j4 z
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    3 H/ t1 [" O+ q
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间+ u+ ^' [' f& O4 L
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间7 o* }) n1 B( `. z2 K3 |* x
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间& ?; F- H  ~0 |3 F( \1 F; W+ g$ @  B
  188. ;==================================================6 r, {) A0 ~/ p2 P
  189. Key_Keep            = Text_Disable_Flag + 1/ \  I3 C6 k$ G
  190. Key_Once            = Key_Keep + $01* v1 o! V% t& j- [* e
  191. Key_Kemp            = Key_Once + $01( F2 M2 q9 u  K: [& y4 S+ c2 J
  192. Key_Temp            = Key_Kemp + $01
    3 D2 l$ u4 B. N, x  k
  193. Key_Getv            = Key_Temp + $01
      M( Z& b: ~0 e) g5 W2 ~3 r
  194. ;==================================================! h+ d2 y0 D. G4 T5 I
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集5 {, a6 E9 d* D- o, p9 S% D
  196. Music_Item_Last     = Music_Item_Cur + $01
    ! S5 {) h$ n. }  I% y7 J
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集% L/ @7 t7 x3 n1 e+ H9 q+ b
  198. Music_Cur           = Music_Total + $01  ;当前曲目
      z% D- ~# m; {
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    0 {7 w5 [7 N) E5 c
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    . S6 P% d. p$ e  Q6 C& Q7 G
  201. ;==================================================! r* Q7 \4 Q! d
  202. HEX_Data            = Music_Stop_State + $01
    " H6 Y  @& b$ o+ Y- \1 n/ [
  203. DEC_H               = HEX_Data + $01' n1 o1 V) M+ O% ^( j# X) W
  204. DEC_T               = DEC_H + $01
    ! C) B6 [  v2 @1 ^, v; ?" t) b
  205. DEC_L               = DEC_T + $01
    $ `, p( N; ]$ {9 g# ^3 S
  206. ;==================================================) V9 @) d6 e! M) Q7 i
  207. Time_S              = DEC_L + $01
    * r( y$ X+ H1 P7 s" Z
  208. Time_M              = Time_S + $01
    " h& ~! p( I4 s( n  B/ o
  209. Time_H              = Time_M + $022 n9 E2 n* [0 q6 D! u
  210. Time_Cnt            = Time_H + $039 A1 m9 Q. p) q7 I/ I
  211. # [. v7 }9 A( U  G
  212. ;==================================================' z5 ^, h- T2 m# ]* L5 n
  213. Music_Bank_8000     = Time_Cnt + 1
    5 }8 S" R6 Q% Z$ W# G* _" V
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    ! E$ J' ?0 Z1 |+ S# a9 \0 g
  215. ;==================================================6 n  u2 k& O. G+ M
  216. Scroll_H            = Music_Bank_A000 + 1
    : a, P! p. [) Y2 S8 r1 y
  217. Scroll_V            = Scroll_H + 1
    + i! ~$ a+ \+ n
  218. IRQ_Process_Index   = Scroll_V + 1$ P" E9 M+ B7 ]; C
  219. ;--------------------------------------------------' Z- w: H* r5 M% t: u  j
  220. Page_Cur            = IRQ_Process_Index + $01( Z3 b! s* b7 E7 A* u
  221. Page_Cur_Index      = Page_Cur + $015 l$ ]: p* f) c1 O
  222. Page_Cur_Cnt        = Page_Cur_Index + $011 k# S# K! u! `& n1 w- G6 z5 k
  223. Page_Last           = Page_Cur_Cnt + $01
    $ k/ B& ?/ H( `* X4 R" m  ?/ T
  224. Page_Last_Index     = Page_Last + $01
    + G5 o- e& a6 E/ H; a
  225. Page_Last_Cnt       = Page_Last_Index + $016 _) x. G3 }. \
  226. Use_Ram_End         = Page_Last_Cnt + $01
    / r6 g4 a% U) M2 S( s" @
  227. ;======================================================================
    1 W" b% h' z' ]8 G1 ~
  228. ;音乐数据块; B# p0 X" m2 n+ @+ }
  229. 4 K. [+ ]4 M- k. }
  230. .IF SOUND_BAR_SHOW_ENABLE- H7 L3 a) {0 i0 |& Y; j% N9 z

  231. ! \+ t8 {( z( u0 E" ^' ^* Z
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    . q- q7 i$ O  W2 U6 f
  233. .ORG $9000
    3 V% p) y* T. l$ V- J) y0 T/ H
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    0 d$ [0 h: H( O% W

  235. 1 c8 s# `$ T+ U% I7 J' f* H- c
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK2 g' Y+ A0 g: j& d7 Z- e* e  L" n
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"7 e* L2 ?3 x2 \' H" J

  238. # D5 A6 p5 x6 [
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK  S7 g0 p( K+ p  `' @
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    ! g- m- Z& A  _9 m# O3 \
  241. 6 \& z+ i1 J8 h: S- e& Y
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    5 S2 E& }  }8 v' k: S6 Q) v, C
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    & E7 c4 I7 ]6 i7 ]# O

  244. 6 `" R, H; o3 q+ e7 f
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK: \$ ?1 S1 P- O
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"" q9 R# z4 ~) ?0 c' }; C3 s

  247. 6 g9 e! V& X- ^! K& W/ u
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    0 }: o5 t/ w5 \8 `% f
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    4 }5 S+ _1 {1 |2 J

  250. + n4 Z$ m2 G  n9 |  S
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK1 k8 I! j0 [) e& U' [& Z
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"6 F+ U( L1 b! K' I$ J3 b* c
  253. ; z6 F/ ?5 \/ S$ ]
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK$ @7 i/ C; u) b" U
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"  U4 s  i0 V/ e" j

  256. ( r' I" a1 Y2 S" x
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK$ _+ t' ^0 j; F3 S  J6 [6 B
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    % N) `. V/ s" }

  259. 1 F" z2 P) n* T) b5 ]% ^
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK$ J" c6 L+ ]6 ?4 e/ P" \
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ) q" B- Q/ ^2 ^: i1 a! ]
  262. * N! [3 ~/ L- O6 ?( O2 A
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK* i4 }) H7 V* _+ s/ q
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
      O6 E7 n: ]5 M6 _9 Z, w2 A0 u  R
  265. 5 ?. A" r9 ~/ p( Q! S
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    9 d* ]% q; @- ^1 w: O3 i# s
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    7 ^' W6 V4 L3 \( R$ c9 h2 W

  268. , f4 ^9 `! J7 W" m+ P; p) z! E: K
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    ) r' D& O* z$ S. H  o
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    6 I- h/ S4 O9 L/ w
  271. ! V8 O0 G. H# n" H9 k/ k" I1 l
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK  s. Y* n5 b$ B9 F6 x
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    4 G  f6 z% b& j$ i! G' |! ?4 q

  274. 5 T, ?$ o( x, E' J
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    1 L& a8 `4 i4 q$ n
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    & T' p  w1 I2 _$ s$ `! }
  277. - ~1 `) L, _; \" H+ y
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    4 c+ X; a6 B' P: }) M* `- Q$ k4 p
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"# |! P! Y5 B2 F  N; E& Z2 G) x0 G
  280. 3 ^/ X3 W$ P/ f, M
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ( ]$ K; z& n! ~( n# V
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank", I& i, L, o+ V9 b; p+ E% }

  283. # U8 M# r- N) H' d+ @$ E' P0 _) ^
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    # n0 c2 t! O( p' p( M8 c! h
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    + K6 }! H6 D( J3 H/ m
  286. 3 ~, B  Z. m  I( f! L3 H0 k- T
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ; g7 F. x' g2 U9 e3 s3 i' r  d
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    . R  h2 s/ A: ^$ t7 b: d

  289. $ y1 ~' N; Z3 w& r0 e; }
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK  A9 J/ A1 ?; z2 B& b7 i( O3 ?
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank": Z% E( @, P$ w* y1 L  j

  292. : U4 I( ^- w2 G4 W9 n$ ]4 N
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK  `: l3 G5 L3 z3 o3 w; l+ A
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    3 T- ^) g/ J9 s! f. `; r) J  s( W
  295.   d) ^- }. K8 X# {* a( `5 k; V! t/ N
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK4 |+ D3 Z- t% r* I" t& ~3 u1 M
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"4 T4 i1 W* ?" F- D& q- F
  298. 5 m6 Q9 I4 {: Q3 s
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    $ e9 Y# F$ j2 |8 X% w& W
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    : t( _" E5 `% ?. r. o' l) |# p
  301. 2 Y: P' C6 n1 s8 Y- k
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK* ]* k9 R& j8 f2 Q' l
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"6 p3 L& v7 ]' u* ?* s
  304. 7 f/ S1 C* M+ ^* b" i) a$ {* F
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK' T! a8 M: Q& v4 Z
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"' K$ u7 C! q3 h' F
  307. 2 x7 }2 O, A0 r. |" N
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    5 m6 c! G+ n7 f# S  @% b& {7 V
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    - s8 e; M6 z7 j& v  A" T: m

  310. " o/ j$ I5 X' |, T  X9 c8 p1 u
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ( R( n$ w+ d' U! H7 I
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"2 B+ W& H. n5 L. T! q, C
  313. " H9 x! J2 d2 s
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    * H4 {3 f3 ~" {' u* t$ s
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    8 L5 l7 _. `: ^, o

  316. , o5 f, }- O3 y% z
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    , H0 Q/ ~- E7 a1 y+ y% l
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"  b& ^; ?( H( F0 M
  319. " [$ n/ c5 _2 E5 x
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    : E1 Y- b3 O; w9 A% h8 w# ?
  321. .ORG $D400
    ' }1 Q* e0 G' J( @; K
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    $ p$ D' s" K' h
  323. $ Q: Q* I/ l  m/ r2 u
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    4 i2 y2 ~/ \8 _2 I0 s( ?6 z/ Z* I
  325. .ORG $D800
    7 a3 a4 Y& P) h) e
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"" J$ j& o/ `3 H% T& E

  327. - l0 G# b$ D2 q: w" P( H, X* \3 [& h, n
  328. 7 N% i; y+ p" b7 G% `; ^
  329. .ELSE/ K9 R1 d6 u8 P

  330. $ X, S! u2 y5 U: M6 R
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK! r7 b6 J6 r( T
  332. .ORG $90004 S7 s7 P3 K% ]$ X* x& _
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    , @; V0 X9 J+ _$ U# G8 \
  334. / ^5 C4 _8 L. u9 b0 B" m9 D
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK- d' a1 f  R$ U& l+ O$ g1 e
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    2 L. ^* `# w4 P5 H7 Y2 U2 r+ Y
  337. / p/ f9 [/ J, d( v& G$ {6 f
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK! W- y3 J, c8 Z- A' M- d2 T
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    ' v# F, B" R. @
  340. & O  [! p- B: }
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    + x# K8 _6 h7 R
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank", f, t# b9 [7 T9 Z7 l0 Q6 q8 h3 s
  343. 2 }: l7 ^1 X# S. U
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK* [  \/ v* {8 V
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    % |& T7 {5 Q# H- z4 n
  346. $ V' i! A8 X3 a1 m
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    9 R$ f: U0 H0 i4 R
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    * m/ y3 B5 \% k7 I9 V+ c  U% e

  349. , h. x7 M4 ?  u1 b3 l
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
      ]& o9 x5 C( w; x
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"+ M4 a) ]! M7 B. h/ W
  352. 6 [; q3 D( I, |1 O) d! I7 I6 D
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    % E7 z" A0 l8 H" x1 X
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    4 J& f4 g+ \, B! ]

  355. 8 t+ h5 s4 ~+ H% _5 B% d
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    * S2 P: G1 I7 l7 g+ w) G& g8 D- d. q
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"3 g0 l3 J; y9 w/ x% K0 y) l$ _
  358. ; V* o: q' W! t
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK2 u  @. H5 w6 I% y! O7 F
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    % j" I& t6 P% z& z9 Q
  361. ( \+ y" c9 a1 \6 u8 A! t
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    8 ]' {' W& o; \$ j9 Y
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    + a7 z8 ]3 m% W- }; Z

  364. ' T2 l7 W" N  U# b
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK6 J) ?9 H8 J: D8 h( n3 z
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    ; A* V9 @5 N" p

  367. 2 y. v% P: F5 W" T- Y: x
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK# r  _9 `3 n$ J& }6 n# _' v
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ( U+ A  ?# {7 {: D/ r' x. m

  370. / K7 [6 b+ Y7 h2 u" G
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    ( T6 l  K6 h1 F- ?" q
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    " q3 a# w1 I7 I. |2 Y
  373. ; I/ g/ }3 V8 C2 v( O( H
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK* _4 ^! f& Z. L, ^5 {4 L9 e
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    * ]6 w( \  n7 p1 j8 z. e, h7 Y

  376. 8 s( q, e* @) Q
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK  b0 O. T1 A' y" p8 o
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    / ^& d% `. F% b

  379. & t3 g+ s4 g) y% `+ a' V( b5 W
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK7 R2 x# N4 z, [" e- y- o
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    5 X. ]) K* O; |4 M" B. a

  382. & t( [  |4 K2 `0 k9 c
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    # J! v" y& _+ q' j
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    ! Q% a$ n/ s2 |4 V5 r

  385. ( [& M6 [# D6 R* r
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    # @0 F" b) Y" K8 {
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    5 R5 c: x+ S2 g& z

  388. " v( ^8 G  y2 n# S: c  ?7 d1 x
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    # Z, W( I' \- M
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"3 k8 N0 h" m9 H8 |- E; @7 `8 ~
  391. 1 z5 c- M* Z: Z* R/ I- k' P  o
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    / R! O8 K& w3 d' L3 H
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    8 l: O( t* O8 D  a, Z+ e

  394. * y& M% y+ D; M$ X
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    , p, X* Z8 t1 Q5 n0 X
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    . S# G0 w/ ^3 [6 p* ]7 Y

  397. : X( R( H9 `) R& h: E
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    - j+ w4 z6 |# s% i3 J; i, W6 S, J
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank". a# V. _2 ~# Y& ~4 O( `; O
  400. ' r( z6 Y" B. D0 P
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK+ s3 v/ G. R9 A0 x8 w
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"8 M7 H/ i, Y- ~3 _: {
  403. % g% j) g  K+ T/ D' }/ Z. ?3 e0 E
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    * M& Q7 n/ l8 `2 M
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    2 O: N9 q3 q3 A( r: P  E6 T* _+ y

  406. * o- J5 _3 V: e4 {0 ~$ U/ W% @! |  g! _
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK4 B' e* }. ~+ O4 R+ Z8 Q2 z
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"' B% p- z. T0 Y4 [/ E* e
  409. - I* K1 S5 n/ L, u
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK# a2 C. |/ U& }" G
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"* @1 d( s. v" u4 ~+ _
  412. 7 S: `5 D( a( W' T" Q
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK; V* F7 ]/ K0 L3 H. @  g
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"3 a, c# \9 c* G; J0 ^/ L
  415. . ?( l7 \, v% I+ p1 z
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ) x8 V, D# f: G# F
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"; }2 h9 C0 A" W% u7 l: e

  418. 4 Q3 g6 o$ W9 M+ `* W
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK# ~6 o# f5 e4 b. j# [! s  T
  420. .ORG $D400: J. P; G- F: A- D$ e* J& o
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    . e& W6 B# n9 ?" Z; o
  422. + y! [4 M" }8 L) u# Q+ l
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK6 t3 T/ S/ F; ?" `4 c" ]3 Z% e" Z
  424. .ORG $D800
    2 f/ X. I$ R3 l, R5 I! }' Y
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"3 Z- K& v0 C2 }: D
  426. ; E7 n9 C: ?: x3 x: q
  427. .ENDIF
    / b7 A1 m7 M/ ]. ~4 _
  428. ) H' d- W# d( X: \" _
  429. ;CHR图形数据' \7 r6 m% z+ {& M4 X) x
  430. ;======================================================================* G3 O( Z1 {5 u" K1 o7 L# g+ Q" I
  431. .BANK CHR_DATA_BANK% x) T- k" q5 v7 i( a' u
  432. .INCBIN "chr_bank/chr_data.chr". O; N) k1 f* {% z+ h
  433. & x, H4 y# L" t2 l
  434. ;======================================================================* k+ s! x  \5 j: b0 I; C+ q) p9 i
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK7 r4 r  [  d. F
  436. .ORG PROGRAM_ADDR
    " q$ c% w  ?0 f# a: n' N  i
  437. * K- i% d) J' [8 Y0 n
  438. ;==================================================
    * |2 a% x1 {" f4 m( Z: f
  439. NmiProcess' X* j/ h) e: X8 P) t. P
  440. 9 V+ B. K$ _5 [7 p
  441. ;关闭屏幕控制. w) ?6 C/ N, J- y
  442. LDA #$00: H5 `6 Q: T# x! Q, g( V; l! _
  443. STA PPU_CTRL
    : J2 R0 G# @8 J8 t3 j$ Y5 U/ j; `
  444. , A  N' Z# b* ]6 K4 u3 o7 U
  445. ;没播放音乐就不需要触发IRQ+ K( {7 Y' R) r# d: J3 ]" i) ?
  446. LDA <Music_Stop_State( Z  Y# z; r. o; b  h' g, _  S9 w
  447. BNE NmiNormal- |- N+ c5 l! J  W1 S1 Y, y7 m" ?
  448. # G0 P/ Y2 l- ]! M4 x- n9 q
  449. ;重置IRQ索引
    : F! _. u9 O( X( G* F6 p! B6 \
  450. LDA #$006 ~7 e& \  J: R1 g- T0 L
  451. STA <IRQ_Process_Index
    / E' E/ @+ n0 q7 T

  452. # u; |+ y. D" N) V0 s
  453. ;时间秒数为空则跳过
    + ~3 `! A. t: g: l, S6 X) C
  454. LDA <Time_H
    + x4 B1 h( a' }6 H; c  Y' E! ~
  455. ORA <Time_M
    ' L! a' m( D( G
  456. ORA <Time_S7 P- v' i7 A8 _  T5 G' |/ I7 W
  457. BEQ EnableFirstIrq
    6 A2 e. _5 `4 O3 A0 p0 a
  458. 4 j. p1 K5 V5 a7 u5 B3 v+ X
  459. INC <Scroll_H
    + u5 @6 c1 U: R: U; C+ K

  460. 0 K* }- r  ~+ h; R3 C8 ?$ `" e6 H
  461. EnableFirstIrq
    ! m+ h4 R, F4 B/ V8 i) q
  462. ;80条扫描线后触发IRQ9 ^+ r  |- r  A4 t1 n- Q6 x
  463. LDA #IRQ_SCANLINE
    4 F" o+ I3 \( Z6 z! i0 x
  464. STA MMC3_IRQ_LATCH
    6 A. |3 Y' u% ?! q; X
  465. STA MMC3_IRQ_RELOAD
      z) Y( E" R4 H, a$ z& `+ I2 [! k
  466. STA MMC3_IRQ_ENABLE+ W+ C7 L$ m1 D6 p+ P4 v2 i
  467. CLI
    ; u; R, H% Q% a0 l4 I' Z
  468. ! f( Y0 n* X3 c. C8 F' E
  469. NmiNormal
    ( d; J. g  ~& U; T. @

  470. 3 @  K+ {1 R7 \0 ^
  471. ;处理PPU图像
    ' ^* Y# p  a. K* c
  472. JSR PPU_Proc
    ' x; Y' J; M* ]# Q
  473. ' b3 e. b, J9 C0 h- |+ L, D1 \3 \# [
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)7 n" b  K. U+ S# f5 F9 Y
  475. LDA PPU_STATUS
    1 X5 N" A: D# u4 p9 R# E3 F& J
  476. ;LDA #$00
      B; v2 o8 K8 ^  [" b% J) A5 T# T
  477. ;STA PPU_OAM_ADDR
    1 l9 P$ G! R# C# C7 e0 W: u
  478. LDA #OAM_TEMP_ADDR / $0100; y0 B# Q* f7 W; g% @. N
  479. STA OAM_DMA
    9 x" O' m( N6 H: f
  480. 4 }: H. v5 }( F2 M, m
  481. ;启用NMI中断
    * F) a- T8 f/ S/ c
  482. LDA Screen_Ctrl1 \  q& r$ J, y- A2 l( x8 M
  483. STA PPU_CTRL
    ( n- P8 s3 k* T# j5 \) V
  484.   F2 E5 V5 t: u8 q' Z
  485. LDA <Text_Disable_Flag
    * n. m9 I# ]1 m( n7 T" R. X0 d
  486. AND #TEXT_DISABLE_RAM
    7 x) ]2 ^- a& Y( I8 d: u3 S4 k8 J
  487. BNE Nmi_Sound_Play
    ' \0 m2 j( n& b! E: \

  488. : L6 E& f% w; E" A  K
  489. ;处理手柄输入) ?. l" _# d" x& ^
  490. JSR Key_Proc
    $ `7 q+ \/ F$ R5 ~4 p+ f! r! g
  491. , s8 a4 D5 D, Q8 t$ u; V
  492. ;切换音乐(手柄触发)/ H( @. H* M- B5 h# y/ \
  493. LDA <Time_Wait_Cnt( ^: G: _: |5 c$ q  \; J
  494. BNE Nmi_Cursor_Arrow
    # h6 C! B4 C2 M" m9 j* U. n
  495. JSR Change_Select_Item/ Z, D$ x- Q- c1 f
  496. 3 w2 o8 M$ K( Q6 H- g4 Q
  497. Nmi_Cursor_Arrow
    % [( A. Q7 N  m0 x' H3 I3 w
  498. 9 u& E/ d# q4 Z; Y5 h# T4 }; s
  499. ;处理光标箭头2 d7 O, C4 [0 s1 v" f
  500. JSR Show_Arrow- D+ x& A* y- p

  501.   V, R, ^( c6 p+ p5 V9 ~! W
  502. ;更新调色板
    / A  {3 ?% D0 B6 D  m
  503. JSR Update_Palette_Data
    # F' b) ?9 S. }; L; K

  504. - v. a5 j* n0 ?* e, v
  505. ;显示时间(缓冲)
    - t5 l) J/ ~+ A- q* t1 ~
  506. JSR Time_Show
    7 U6 K% c' [6 F9 P

  507. ; P/ u: n8 y9 T8 e, g
  508. ;音乐显示(缓冲)
      T. _' I" S: X9 T
  509. .IF SOUND_BAR_SHOW_ENABLE1 j) |& n1 t6 R. @, L) t/ W5 x3 I% t
  510. JSR Music_Vision% Z" H4 }  X0 l0 ^0 U
  511. .ENDIF1 N# C% i5 M: k4 s$ i

  512. 0 j- I; s* R" N2 P1 F5 Z
  513. Nmi_Sound_Play
    0 |8 M  r/ a5 m" w; K
  514. ;播放声音: C. E7 S1 v  U8 `! H/ J! j0 B3 r
  515. LDA <Music_Stop_State
    $ j! H! y" i$ H, ~* Z
  516. BNE Nmi_Time_Wait_Set
    # T/ d$ g/ {8 s9 `( m* L3 |
  517. JSR Sound_Play_Proc, ]9 h- X/ B; R4 [2 d; a
  518. ) z8 e; C3 @5 J- o
  519. ;播放计时2 Y( @5 ?( b5 O8 }* n; q, y2 A
  520. JSR Time_Count" O1 y( R+ E, ]% y

  521. & N- K4 j5 Q0 v! ~* M  U
  522. Nmi_Time_Wait_Set; ]7 _( C7 Z* j* a; N
  523. LDA <Time_Wait_Cnt( ?, }% Y8 J! a, `1 ?
  524. BEQ NmiNormalProcessEnd
    ) d/ E" H/ H8 S/ d& K! z( R
  525. DEC <Time_Wait_Cnt8 K+ }2 t- h* A  O- y* ]8 p8 g
  526. NmiNormalProcessEnd' h2 u/ G! U9 U8 m; i$ l

  527. , F7 a, @3 L, d( J! y2 c
  528. INC <Nmi_Time_Count
    / o6 F% H' E( h/ i/ _* U, a8 h

  529. & p( ~" l1 i( w6 ^8 Z( b7 p9 x# a
  530. RTS8 H8 X1 Q. P9 g: N
  531. / z7 C( g( B+ Y% o; s$ I
  532. ;==================================================
    ' I5 T( a, H7 f8 s
  533. Init_MMC34 N' O3 ]; Q6 S/ h) i
  534. ;==============================7 M$ O4 x% W/ U7 F7 F6 j5 I
  535. ;禁用IRQ. X: z) R% \, k% K
  536. STA MMC3_IRQ_DISABLE
    2 r6 _( N- u4 e& i/ _

  537. 4 ]* `/ u: Z  C4 P7 f
  538. ;水平镜像$ B$ A  d8 U: D" n  u8 \3 {1 u" G
  539. LDA #$011 i+ ]4 J/ \/ v9 i' x. ^0 d
  540. STA MMC3_MIRRORING
    $ ~. P2 I" C( s+ O( j  p
  541. 6 ^9 A, p* x$ v8 b( z* a, s5 o; Z4 ^: K
  542. ;初始化图形bank# T$ {. u- f0 v' H% G+ o
  543. JSR Init_MMC3_Chr_Bank
    3 Q) X1 u$ L% E" C9 f) B. M4 R

  544. 2 A3 Q, Z5 C, @4 c6 ~) p2 g+ C* e- v
  545. RTS+ U9 r) ^' s+ c7 C5 u7 m  M) _( u
  546. ;==================================================
    . i) r3 `0 _" [3 p/ I5 x
  547. ProgramBegin;主程序
    6 a  O# g: D8 A: Z
  548. LDA #$00& S9 K, B. c  ?
  549. STA PPU_CTRL3 ?4 t+ ~( ~0 D+ z: l
  550. LDA #$00
    / P4 r3 T3 W( W5 n+ `
  551. STA PPU_STATUS
    8 l. L6 E8 w: m: ^
  552. STA PPU_MASK
    5 ^- l* M* G' E0 H2 b0 W5 n
  553. STA JOY2_FRAME
    ) V1 l7 A8 v* w

  554. : `5 M1 f9 P2 R3 c; O
  555. STA PPU_SCROLL9 l# D' S* h& o( X& r: a9 D$ w
  556. STA PPU_SCROLL) ?* i0 a3 ~$ M! q4 h( ^
  557. % G+ H) e, Z, z+ F
  558. ;==================================================6 S4 w( X2 q. Q% E) J+ R4 B
  559. LDX #$FF& Y% U) W0 d, z' K: {
  560. TXS
      ~, C0 M" _  E' U% ?& n

  561.   x2 A- M+ d, L8 y5 w4 ^3 F" D+ o
  562. JSR Init_MMC3
    9 O3 @! A! l4 T( X( ^
  563. + ^0 l$ z# C; J1 F: r3 h2 F: ~
  564. LDX #$02
    & p8 u8 F1 V7 ~  w
  565. Check1: D5 v9 g* L5 Q9 X3 t( {# |1 u
  566. BIT PPU_STATUS- T& @# g: k) t' S) X
  567. BPL Check1
    % }6 N8 L' Y! f' g
  568. Check2( _9 I! ?: v5 c1 ^& [+ C0 t
  569. BIT PPU_STATUS
    , {" {$ ?  R- l1 ]& K
  570. BMI Check2
    % i; c  G8 u5 {9 P5 s

  571. ' u7 V; X+ J; h0 F2 a
  572. LDA #$0F: G- g0 S( k+ o; S8 v0 L8 r; A
  573. STA APU_STATUS7 D$ D" I/ X) d
  574. LDA #$C0" |$ Y7 I9 X6 v3 f; {
  575. STA JOY2_FRAME. T' a0 G+ |3 V+ M; v) ?, Y
  576. - v; w) m2 _3 f1 d; J. E
  577. LDA PPU_STATUS# P0 c+ G- \4 r( i' X0 \
  578. LDA #$10
    6 N: I% F% z4 ~3 g' ~% k4 F6 }/ I
  579. TAX" Y7 w% b7 E6 W3 h( {. V
  580. Check3
      B: b# v' [7 e# D5 o1 ]+ E7 E
  581. STA PPU_ADDRESS
      H/ b: b- H8 M
  582. STA PPU_ADDRESS
    7 T2 f# n% l: J
  583. EOR #$00
    % x2 I" L- m3 k6 W' u+ y/ v% J
  584. DEX7 @- X/ F! w" x4 L+ i
  585. BNE Check3
    / Z. E/ `' x5 [' C/ L; K
  586. ;==============================
    / ?' R- N5 \* u
  587. ;调色板清空
      r3 H; ~+ c2 L  A2 f
  588. LDA PPU_STATUS
    9 g0 m5 O4 d+ U
  589. LDA #$3F
    / G3 \' M4 {  o0 l3 }6 q" H( @1 i
  590. STA PPU_ADDRESS5 c7 h% T! S% v/ t5 b
  591. LDA #$007 Q( k+ u# P% {
  592. STA PPU_ADDRESS
    1 P3 i4 Y2 m0 ^5 @$ N& l7 J
  593. LDA #$0F
    $ y1 q, p" b/ p; }3 J! w/ O
  594. Palette_Clear
    ' w% }/ v( K/ i: v0 P
  595. STA PPU_DATA
    ) `" r( p  b. b/ ]
  596. INX
    ! w1 a, u* M6 q
  597. CPX #$20) W3 `3 K/ }9 A% k0 y" e
  598. BCC Palette_Clear
    % k4 n" z( S) U! b  B
  599. LDA #$00! @4 }! O6 E9 C9 q9 ~
  600. STA APU_STATUS
    $ k8 G9 l% ]: F

  601. : v: C/ U9 N& u; H
  602. ;==============================5 b+ w2 L$ h; f, }
  603. ;RAM初始化/ F2 o0 l  w2 K. b
  604. RAM_Clear_All( Z! L' |7 k# _$ J. ^; a* m
  605. LDY #$00% G- v/ l5 X$ G% f% f% W* H
  606. LDX #$08
      W4 m7 \1 _& R/ l% y  U; \
  607. LDA #$00
    5 `. E" T! t, K. I: h( U5 c
  608. STA <$00
    ; }) L* {6 x" ?( E9 \
  609. STA <$01% B  M: ~. |1 @1 o) Z8 O/ e
  610. RAM_Clear_All_Start, J+ U; A; C7 G2 J
  611. STA [$00],Y3 T' t, I' n7 `3 C( Q
  612. INY7 m* ]  @8 n0 L5 B, K
  613. BNE RAM_Clear_All_Start. S* [- p) x0 W+ X  u, Y7 f
  614. INC <$01) Y, W9 R. v  c2 l  n# u
  615. DEX
    : d' _# W$ D) S' K- v
  616. BNE RAM_Clear_All_Start( p- M% z: h  V- j& o
  617.   i6 B. m! H: ]# j7 r
  618. JSR VramClear" s% p* B$ m" V: X5 `  `* T
  619. JSR VramInit- J/ {# d9 F% ?. T
  620. JSR OAM_Ram_Init
      R$ F4 V$ E  Y3 J
  621. JSR Init_Palette_Addr
    2 Q8 `+ }: X# t. t! d/ r

  622. , h% j$ n9 q: ~7 k( r
  623. LDA #$FF4 h9 @# H7 G  y2 N" u
  624. STA Use_Ram_End" R8 F/ I( ~+ U
  625. ;==============================
    , H3 n, `- Z5 R* J: c
  626. ;初始化背景调色板
    + I% D5 S! r1 S* g0 v" d4 t
  627. JSR Set_Palette_Color
    " S; C) f4 p6 T+ _' F
  628. JSR Set_NameTable_Attributes
    . m( ?( t  `* n0 j

  629. & f7 `- P$ t. a7 t. X
  630. LDA #$00
    6 Z% b8 N/ b$ ], S2 G3 _+ J) P/ P6 f
  631. STA PPU_OAM_ADDR
    ; g' d# H6 A5 E2 E. B1 N) \
  632. LDA #OAM_TEMP_ADDR / $01002 @2 Y8 o! N+ G, f
  633. STA OAM_DMA
    5 n! t8 j/ @4 y0 N8 I, P
  634. ' E7 ?3 u0 g  d; _
  635. JSR Sound_Reset_Proc
    7 @! |" i' e/ h9 r- p' h) p/ w1 J! l
  636. JSR Set_Sound_Total
    # |. g: k( P8 n$ |
  637. ; J7 T" S4 _& w2 P$ T5 B+ A
  638. Init_Start_Music
    9 d# ?- A) `* u
  639. LDX #$00
    4 Z8 r/ K6 D6 W* W
  640. Init_Start_Music_Write
    7 Y, q' K6 I& b( F1 c
  641. LDA Sound_Start_Port,X
    - _( v1 R- S% Y) G' v
  642. STA <Music_Cur,X
    9 g7 n7 R9 U$ l1 i1 p6 R( T$ q
  643. INX
    5 }9 v% [0 n4 \% `
  644. CPX #ITEM_MAX_SIZE
    ' p$ L" p7 a4 [( }& K, ^
  645. BCC Init_Start_Music_Write7 ]% T& a) Z: {/ t' o6 z) y

  646. + I& y$ t6 F, [9 h8 M3 e
  647. JSR Show_Music_Text
    4 I4 L( M$ b2 A' C/ ], w7 U( L

  648. . g& n! v9 y& u. W4 m7 [
  649. .IF SOUND_BAR_SHOW_ENABLE
    ; ]6 m! H2 I3 M! s3 S2 Q- b: c
  650. JSR Sound_Bar_Text_Set
    0 f0 G! |8 i8 I4 a$ z
  651. .ENDIF
    ! p( U+ y/ S8 s7 s- y0 E- G: {7 v
  652. 2 p2 G: W7 ^, S
  653. .IF Track_Name_Pos
    4 a& v) l; k9 I) {: W" `+ b5 ^5 u
  654. JSR Show_Track_Info
    - B: y, {2 c# {; p
  655. .ENDIF0 ~* b, I& d4 G& v* r( q
  656. 5 Z" |1 `8 f3 S# f/ T
  657. JSR PPU_Proc0 y) X5 e: r+ A5 Z

  658. 4 ]9 r% t" A5 C
  659. ;==================================================5 E1 M! u# H3 T$ r4 F
  660. ;音乐bank初始化
    # O* p" Y. ~( F8 F- H
  661. JSR Init_Sound_Bank/ g1 t6 V) b) `, |% t  i
  662.   }7 @' X. B% a% Z+ ^
  663. JSR Music_Show# K# W/ o( S. U& }% D" t
  664. JSR Time_Show
    ; b/ |3 U0 u% ^3 L
  665. JSR Music_State_Show
    3 z1 ?% a0 b8 j2 Z; l0 p: y
  666. JSR Time_Delay
    ) U4 f; R- O2 F
  667. , F! K) n8 K8 b% c& U
  668. LDA #$01
    ) R; m, {/ K% ^
  669. STA <Music_Stop_State0 H  P7 b9 D+ \/ y3 R

  670.   _0 i7 ]) F% x
  671. LDA #$88
    # K! h- z9 @+ h/ z" r, ~' H: @/ Q
  672. STA Screen_Ctrl* b" Z9 E$ Z9 h: U0 c+ m
  673. STA PPU_CTRL
    $ L- U; {4 v( \0 x2 h/ r
  674. , Q+ N: g( O( r: {$ y
  675. JSR Show_Page_Text
    $ p9 n' f: I3 R5 p+ t
  676. 8 Q2 T+ M' Q# l* b1 s
  677. LDA #$105 W, d! f% h* B+ c
  678. STA <Time_Wait_Cnt- X6 P9 t$ I% n: U
  679. ) u" g) z4 e* i2 S6 m! ^+ ~' _0 q
  680. Wait_Time_Over1 r. d8 d1 [5 |+ }' M$ _
  681. LDA <Time_Wait_Cnt
    # u8 G/ X; ~/ h
  682. BNE Wait_Time_Over9 H- f5 d+ _4 [4 w! e$ {7 E
  683. " c5 C. x$ c% h& B$ [
  684. JSR Show_Arrow& c! j6 ^8 o) X' O. ]9 Q% C8 b
  685. LDA #OAM_TEMP_ADDR / $01003 N& A8 O. t! i0 l: \" }
  686. STA OAM_DMA
    # B3 m! I5 L* _, ?2 s) P! w% A
  687. . m: R& w/ C+ x, B
  688. LDA #$1E
    . x. I+ j" v; @+ g9 _/ G
  689. STA Screen_State
    / a5 G1 T& D2 @/ e' v$ v* p
  690. 1 z  l  o# U' p: T
  691. LDX <Music_Item_Cur  U8 `4 ^- ]; t2 U+ |3 k5 V8 @
  692. LDA <Music_Cur,X
    ! Z; l) d9 |0 J% X8 s1 c/ _( V
  693. JSR Sound_Init_Proc
    8 d1 V! C1 T3 J6 i7 k" k

  694. + O- Y" ^6 a+ E& F+ c; ?! P
  695. CLI5 v- z8 I& [3 m6 p
  696. JMP MainLoop" T) v: k2 X3 q

  697. . R& s* ?! _, H7 m% v
  698. ;==============================  t: Y  `# g' p& K# p
  699. Time_Delay;延时等待: Z' E* ~4 S, y4 s2 w! }
  700. LDA PPU_STATUS
    % Z8 G3 m1 X2 e( ]
  701. BPL Time_Delay
    % n$ _, d$ t+ e# c1 D/ z6 Z* X
  702. RTS
    5 J' c/ p: j4 X6 m0 Z/ t+ i

  703. 5 v3 Z1 ^$ K" t+ A( m, ?% A
  704. ;==============================  W* G: q. t2 p) \9 Y* `
  705. OAM_Ram_Init;初始化精灵内存0 ?( y% s4 `& j) Y
  706. LDX #$00
    # N: }0 }6 h  ~& I5 l2 U0 O2 o$ Y
  707. OAM_Ram_Init_Write
    1 H4 _+ m) f5 }0 W3 n
  708. LDA #$F8. I  o5 R, t! k+ g4 |
  709. STA OAM_TEMP_ADDR,X
    ' _8 ?) S. ]& O" m0 v9 x! K+ T4 j! z
  710. INX& L% a1 g6 a9 R
  711. LDA #$F81 n: |/ v1 v0 }4 l* c8 _
  712. STA OAM_TEMP_ADDR,X
    3 ~; `% N- ^- K
  713. INX4 s* z; @( o9 H- a9 {8 s% W
  714. LDA #$00
    2 M+ z+ h# [% I5 ^% q
  715. STA OAM_TEMP_ADDR,X
    # P9 L9 L( \- V8 u0 t" l/ ^" W
  716. INX: L4 ^3 v) B. O
  717. LDA #$F8
    * \5 x9 C9 p5 P; k# k
  718. STA OAM_TEMP_ADDR,X& V, N4 `7 _: E3 V
  719. INX. b$ L' P% I. h: s
  720. BNE OAM_Ram_Init_Write
    3 c. Z. Y4 N. Q5 r# L$ f8 b/ {* n
  721. RTS9 ^4 u( t/ E7 r# i* F: X
  722. ! I$ ^$ `/ {0 q! |6 I5 e: J
  723. ;==============================
    / N/ i8 h5 m  `0 w6 }1 a
  724. VramClear;初始化图形内存8 e# }6 f) q9 D
  725. LDA #$20
    + m4 O2 h2 t8 A; H; }" f/ M
  726. STA PPU_ADDRESS
    * T, ]$ Q0 L: \# p' y
  727. LDA #$002 b% r2 }" @$ V0 T) }' e
  728. STA PPU_ADDRESS! V$ p6 o* R& i  I. U
  729. LDA #$000 Y; H% }; Y$ O# u$ P
  730. LDY #$00' E/ f' T5 w# K, Y. W6 Q8 h% `
  731. LDX #$10
    1 H2 M! m+ N% V" H# u
  732. VramClearWrite+ e5 \5 I; U4 ?) _( j
  733. STA PPU_DATA
    3 c  v( W0 U* J  V3 ]' ]
  734. INY4 K" h0 C/ f$ \4 e5 ]  Y
  735. BNE VramClearWrite, f9 R- s4 _# P5 K
  736. DEX
    * m" f8 o  x, W- R
  737. BNE VramClearWrite
    6 z6 P5 N; }3 T8 O/ U
  738. RTS
    . V2 f- h: u2 i

  739. , L* L' B- O' X1 y( }
  740. ;==================================================, [) a3 ^' K& ?7 M( ~* a: W
  741. ;设置MMC3图像bank& |1 b3 J9 w& X$ E  b
  742. Init_MMC3_Chr_Bank, J6 d% _. h  g, L; c2 K( B9 p
  743. LDX #$05& _7 g! C' J$ u9 X
  744. Init_MMC3_Chr_Bank_Write% [$ i: k! \5 ^. m7 U+ L
  745. STX MMC3_BANK_CTRL  m, b! Y8 ]: X. c* C
  746. LDA MMC3_Chr_Bank_Data,X; X1 P. m) |$ q( _; f* x* J7 n
  747. STA MMC3_BANK_DATA. Z( ]" ]7 M, W) I
  748. DEX
    1 |# c2 B7 n0 j
  749. BPL Init_MMC3_Chr_Bank_Write3 n& c* }6 i" e% w& M0 @. z
  750. RTS: {* q9 u# T5 k6 f% {( N
  751. ;--------------------------------------------------. {' O' r! Z) l
  752. MMC3_Chr_Bank_Data
    6 F# {5 u+ _) r) w8 @
  753. .DB $00,$02,$04,$05,$06,$07
    / ]9 t3 V  ~) J' z% U6 S6 j4 l

  754. ; l+ K9 ^, b5 {  L: f* Q5 c
  755. ;==============================
    3 T# b2 `4 F0 q
  756. VramInit;初始化图形内存
    , w- ~* w% F% f. ?; L' Y
  757. .IF CHR_RAM_ENABLE
    4 K2 }$ G! T9 G% p5 y9 a  z" v
  758. LDA #CHR_DATA_BANK
    3 d& u/ I# q4 ~  H
  759. JSR Switch_Bank_A000  z4 _8 V0 [6 `& q
  760. LDA #LOW(CHR_DATA_ADDR)+ D9 E( U1 I! v" I
  761. STA <Data_L
    & S4 _0 Q# w8 x* T8 ]6 y7 c
  762. LDA #HIGH(CHR_DATA_ADDR)
    / {) t6 A% S3 a6 |  U' e
  763. STA <Data_H# p; k( q' F* U# W
  764. LDY #$00" k2 v+ `9 U* `8 d. [: C9 C8 ]' m+ w
  765. LDX #$20
    0 F6 s- q: G5 ~+ [1 e- I
  766. LDA #$00
    5 n7 K. X, m  ~7 ^: u2 A; @( A6 M2 U
  767. STA PPU_ADDRESS
    . ~0 u/ [& Y0 p+ N+ {0 q! Y
  768. STA PPU_ADDRESS6 y" Z) M& Z/ H9 ], w) r7 z5 t
  769. VramInitWrite/ U$ l- }! X, n7 Z: |* `& X! \
  770. LDA [Data_L],Y$ k/ A$ W8 l- ]  @6 |# W2 k
  771. STA PPU_DATA
    / s( F  B9 l/ D; q; ~
  772. INY6 G0 R: f8 ?9 u  X! Y8 f* o% r: r
  773. BNE VramInitWrite
    ' R6 v" h4 |9 r1 ^8 i& I
  774. INC <Data_H6 S1 P& e8 d0 l
  775. DEX
    1 e- _4 C5 f) j7 z
  776. BNE VramInitWrite( J( f# h3 x" h; I- ~1 F
  777. .ENDIF
    , E% U' s. m* D) d9 ?8 {  S" Y& |$ s
  778. RTS
    ' b* T- U9 f8 m* D1 }( Y! R5 y

  779. 0 M8 f4 _0 R9 A# ?( ]1 r- m8 f
  780. ;==============================
    6 O& v) O. I( ~' |1 u* Z
  781. ;音乐切换
    ! h8 K6 t2 E- u; d
  782. Music_Play_Change4 x+ {2 _0 U) P) c& E
  783. LDA <Key_Once
    " X$ ?7 L8 u; `# U
  784. AND #$FF
    9 L2 p8 T( o* G4 k% b
  785. BEQ Music_Play_Change_Check% D& e7 l2 Y7 g
  786. * P5 U# M* G8 j! d
  787. ;禁用音乐条刷新/ }0 x% W6 [2 R8 Z2 c$ S
  788. LDA <Text_Disable_Flag- f$ _: _: w) x5 |
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    " Y# V0 C: q' c5 x2 x( z
  790. STA <Text_Disable_Flag( K5 P$ P  f! d( d* m* U0 M; s
  791. " w% ]" e  w0 v6 x( ^. p
  792. Music_Play_Change_Check
    ' p0 w( p. }6 h, x0 G$ z; a* m
  793. Music_arrow9 k4 ?1 M0 D3 F. H! [5 G5 f& `
  794. LDA <Key_Once+ ?5 L! C( w/ n
  795. AND #$0F) l" F2 p0 |5 V. W. S/ `
  796. BEQ Music_Play_Change_End
    % \3 O! x  }1 c  d, P9 K6 f1 E
  797. JSR Music_Track_Change. B4 c' A( U. h2 k% U0 S8 s8 R
  798. JSR Sound_Reset_Proc! G1 d/ Z4 o( H+ h/ D0 u9 k
  799. JSR Music_Show
    ( S7 W4 \) G0 r2 W% H$ q. Y
  800. Music_Play_Change_End
    / E9 u' S1 P5 h5 n. S1 A) p
  801. RTS
    / A' r1 h/ B# o5 i" Q; s4 H
  802. " K7 X$ R0 I0 x/ o
  803. ;==============================% J: j. ]. n( ]! g
  804. ;音乐曲目切换+ d: V( Y1 g% S' Q8 \8 {8 W
  805. Music_Track_Change: A/ S2 ]8 d2 o# C4 G# Z+ t
  806. LDX <Music_Item_Cur
    ' i0 {; S) n0 r+ M5 M% d3 t
  807. LDA <Music_Cur,X
    : }; d8 ~7 J5 x# {9 P# y& O9 z
  808. STA <Music_Last: B5 R* P# w- F9 ^$ z, V
  809. Music_Decrease- T" G$ C7 b% W: g! W8 a, }
  810. LDA <Key_Once
      Y1 l' |" j' j
  811. AND #$42. Z- a6 d# Y. V+ ~; m, X5 t
  812. BEQ Music_Increase8 \1 R! G7 c* H# ?1 w
  813. LDA <Music_Cur,X+ g( g% z8 G4 p6 A. C% g9 w
  814. BEQ Music_Increase
    : h8 L1 J& p) `, N  h
  815. DEC <Music_Cur,X% K; a$ g7 ^3 H( k
  816. Music_Increase
    / [- F4 e& j  m* G+ Q3 D& k$ J  G
  817. LDA <Key_Once
    4 y6 a; x& ~  n+ |% Z. x6 l
  818. AND #$81" v, T# F. D5 C2 j. H0 G
  819. BEQ Music_Decrease_100 E/ _* {0 y& r
  820. JSR Set_Sound_Total3 o8 B) z  l( g: ]
  821. LDA <Music_Cur,X
    5 E& U: A6 Q, j" d
  822. CMP Music_Total
    9 ^1 f. `% S9 m4 s- t5 e  t
  823. BCS * + 4% G. \1 t8 S  j$ X
  824. INC <Music_Cur,X5 l& l, z& C6 P: U7 u1 |+ G: e
  825. Music_Decrease_103 `  m9 x( a/ [5 \  K2 X, s
  826. LDA <Key_Once) e* [7 j) v+ n+ e6 ]  c; n3 d: F
  827. CMP #$049 T% e: P5 ^2 \7 Z) g+ ~* _
  828. BNE Music_Increase_10, \1 o# O" j- s9 A0 R+ e9 W8 m( L
  829. LDA <Music_Cur,X
    / R( w" c# ?9 I$ q4 j
  830. CMP #107 |! `! W; P2 F# d: X0 j% C
  831. BCC Music_Start_Song_Min$ v; H' U" ]& ^1 j' V* D
  832. LDA <Music_Cur,X% q$ E2 c, U8 @9 X, w
  833. SEC
    1 k3 z/ [% W4 h/ m
  834. SBC #10
    & V/ m, G/ x7 ?. x, D' i4 Z
  835. STA <Music_Cur,X% k9 A) y2 P! p  r  P5 D% L
  836. LDA #$00
    " ?+ m. h$ I/ p6 Z1 H
  837. BEQ Music_Increase_10
    7 p/ ~8 r6 D2 n& t2 z( m& T
  838. Music_Start_Song_Min) e* C; i; B! _! m
  839. LDA #$00# t' j/ }3 c4 L- ?7 n
  840. STA <Music_Cur,X$ t0 o$ ~) A3 q1 F6 |( E5 h
  841. Music_Increase_10
    . W! k! k8 a% `/ z$ B8 G
  842. LDA <Key_Once
    & ^2 Y( c3 K1 e
  843. CMP #$08
    * b; f( o/ w1 L4 I( w
  844. BNE Music_Track_Change_End
    , C+ O1 e# T. Z" `+ k
  845. LDA <Music_Cur,X
    ' q4 {% v8 Q2 T; H' z" i
  846. CLC/ ?; s( k- V- U' l& T" L
  847. ADC #10
    # h2 Z& t, W5 H& G
  848. CMP Music_Total0 V# Y+ P/ f  S# g9 v! X1 f
  849. BCS Music_Start_Song_Max/ o% K5 V9 G8 [+ _9 |: D9 \) @
  850. STA <Music_Cur,X- S$ K" ^  j8 T& Q/ z3 |% C
  851. LDA #00
    : U; V1 H& T& J  A9 X
  852. BEQ Music_Track_Change_End0 c' O0 Q; u3 _
  853. Music_Start_Song_Max
    6 v! y% l0 m8 j% F! A# C1 A8 Z
  854. LDA Music_Total
    ; c" U' M5 \) F8 M5 O4 A
  855. STA <Music_Cur,X( V5 X. s0 ?: D& c1 P
  856. Music_Track_Change_End
    1 q" i+ p- b# m
  857. RTS& D; _$ `" V- l0 V- P3 D

  858. - D; B) _! v/ J
  859. ;==============================; ^& |+ E' }7 X7 `& ]. i2 i
  860. ;按键处理
    / K# f/ }3 ~* R7 g
  861. Key_Proc& {( y2 {, X- O3 X1 z
  862. JSR Key_Scan
    " d0 }9 E' S4 n8 P/ F- E
  863. LDA <Key_Keep9 t1 a+ O8 b" n% g$ ^
  864. STA <Key_Temp
    - F) }; p& F9 u: n! V& b1 R0 P+ ?
  865. JSR Key_Scan. r6 T9 d! V8 [# U
  866. LDA <Key_Keep
    2 E) }9 ~- F& `8 X: N
  867. CMP <Key_Temp/ N( c5 p6 z; O; |. c3 ?2 G
  868. BEQ Key_Get_Once
    3 u5 \! K$ W3 ^6 V% ?0 p- O8 D
  869. LDA <Key_Kemp+ X% Z' m- y. S* F0 L& b/ V6 x
  870. STA <Key_Keep# x9 d+ T3 {7 N# d( t4 l
  871. Key_Get_Once
    ' ?9 l! T1 y. p, O6 D
  872. TAY
    2 c+ \. C6 I! [) T( f- N
  873. EOR Key_Kemp4 L* d# d% V5 K( A% Q4 F
  874. AND <Key_Keep. L* Q- P' b: L  V8 K
  875. STA <Key_Once& G" \. s( `& f# f
  876. STY <Key_Kemp  d- H0 ?6 b; x- g
  877. RTS
    . o; R( g9 N* W3 M6 S9 \9 M
  878. ;------------------------------5 y# M8 t4 u7 S6 ^) C9 b
  879. ;按键扫描2 S: h- ]7 ]1 K, S
  880. Key_Scan$ I0 ^: m, G' L1 s- {0 b
  881. LDX #$015 I! k1 H( o4 ^7 l2 t/ Z+ n: Z
  882. STX JOY1_FRAME
    3 p: y4 l( v$ d8 ]# i" }  T7 _2 x! F
  883. DEX
      J/ }' [3 ^" z& k
  884. STX JOY1_FRAME' n$ Q; v7 c/ J9 R
  885. LDX #$08
    6 |# m7 y! b, {# \2 F+ @% w
  886. Key_Value9 K# L; N: D% q6 g8 K$ @2 D6 V! \
  887. LDA JOY1_FRAME
    6 ]8 d" o9 H" s* Q( }$ |; J/ o  F
  888. STA <Key_Getv8 a" ?0 G; n  O( p
  889. LSR A4 E0 i4 _% Z. T/ J- Z% p
  890. ORA <Key_Getv
    # K4 h) o3 i. b7 Z1 j0 J
  891. LSR A
    1 j3 J% K# X* Z3 o% O' h3 f3 T+ F& x
  892. ROL <Key_Keep
    % |% `2 d; A' J
  893. DEX
    + @& B; ]9 P/ u+ B  u
  894. BNE Key_Value
    1 W- @' M7 [) v/ h
  895. RTS
    % U0 p5 ~8 }2 M" i+ P2 ^% M3 F! M

  896. , O1 q& x. A3 ]1 r
  897. ;==============================( z5 W8 [, I# k9 g0 B3 m
  898. .IF SOUND_BAR_SHOW_ENABLE
    : y9 e0 A! k1 t" }
  899. ;音乐条显示: F- k( O( \, H0 L0 Q4 q
  900. Music_Vision- H0 @# s% x- @' u: H: {- E% c5 ~
  901. LDA <Text_Disable_Flag; ]& M6 K3 u, [' ~
  902. AND #TEXT_DISABLE_ITEM/ J' l* y; ~$ h. V; H4 l
  903. BNE Music_Vision_End  k$ ~+ a$ J+ c
  904. AND #TEXT_DISABLE_BAR, B- r. w# X) w7 k
  905. BNE Music_Vision_Set
    $ Z$ S) E$ L2 y7 p: S8 S
  906. LDX PPU_Cur: f  [, k2 P+ p" a9 f; S
  907. JSR Music_Animation
    : u2 n# N1 |- v; [3 R; Q  f: }
  908. STX PPU_Cur
    , b  T6 f  W+ l$ z, w# b# a
  909. Music_Vision_Set. W5 F! k9 ?2 |/ j+ i7 m
  910. LDA <Text_Disable_Flag$ m+ o, K+ W# G8 W
  911. AND #TEXT_DISABLE_BAR ^ $FF
    $ Z' Y+ f, A1 ~: ^
  912. STA <Text_Disable_Flag1 s: ]& x$ e" T
  913. Music_Vision_End! n. p6 }0 J' Z" f4 m( T8 ?  o
  914. RTS
    " Q9 r) q# B& n; ~6 k
  915. ;------------------------------
    6 \( @2 \" M, c& f  U/ }% r6 A0 X$ F
  916. ;音乐条显示处理
    % Q% u/ }! \7 O: [. Z
  917. Music_Animation- U- o1 F) f$ _7 a9 f( g1 I. U
  918. LDA #PPU_MODE_CNT_LINE
    1 G3 g4 t% N1 m$ a8 ?
  919. STA PPU_Addr,X% [: s% e. w3 ^  u' \
  920. INX1 z$ j+ n4 g5 @( j& u' |* V  {% c1 V
  921. LDA #HIGH(Sound_Bar_Pos)
    . o/ G2 S( ]9 G; z* {% c
  922. STA PPU_Addr,X
    & q1 T: b; I* u8 j/ A+ C9 R! d! c
  923. INX
    6 D. V. |# K5 R
  924. LDA #LOW(Sound_Bar_Pos)8 o% N9 [5 u" s3 u( ~
  925. STA PPU_Addr,X
    4 g, R7 }% n4 H! u
  926. INX( g  W, `; ?, m; T+ D' B
  927. LDA #$08
    4 I) s/ C% x; [( b3 n4 A
  928. STA PPU_Addr,X
    ( q1 r8 o6 v1 L( g
  929. INX
    & o3 K0 I+ A1 v" m
  930. LDA Sound_Bar
    ) q: |! L7 N" R+ P7 W3 [0 |
  931. JSR Volume_Convert' A& Q) K) h$ o1 e" P* q& [7 S

  932. ) Z6 [3 T% K1 ]
  933. JSR Volume_Set_Cnt7 _# w3 ^* Q" f/ @2 K8 o: L
  934. LDA Sound_Bar+$4" X: f+ s1 ~" p0 M
  935. JSR Volume_Convert
    3 w8 v: X* ?; _7 n2 A, o7 T

  936. $ X+ t! y3 C; S! P
  937. JSR Volume_Set_Cnt6 W  z0 I6 K. N' F: m: {
  938. LDA Sound_Bar+$8( s5 u+ `% a) S! U% r2 t( j! P
  939. JSR Volume_Convert8 R2 ~3 V9 L) d- B/ i
  940. 7 s* l. P. q( w. q+ |; Q
  941. JSR Volume_Set_Cnt
    ; h5 w' ~$ g& `
  942. LDA Sound_Bar+$C
    . N7 P% g, N  z3 F
  943. JSR Volume_Convert
    ; e! R! x7 a' e5 {1 ]

  944. 8 J; s+ Q- [) \" q0 R9 t5 j1 S
  945. JSR Volume_Set_Cnt
    2 F& ^$ e# f# f6 T

  946. 0 G) P( q) G$ e: P1 z) O6 [- d( M% `
  947. LDY #$10
    ) n! f( x5 |$ ]! P# y+ _% x
  948. LDA APU_STATUS
    * |6 V7 M7 N; y- V( T- u/ R; p
  949. AND #$10( m/ _4 P' I% ?2 F$ q3 P
  950. BNE Volume_Count
    ' a& i/ D5 {' w" z; x" O; a
  951. LDY #$00
    ) I  W7 U- K, d6 T: T
  952. BEQ Volume_Count
    & s! N. r/ \: v! T
  953. 2 u3 }9 m3 Y% s, |9 H# v9 I
  954. ;------------------------------
    / q! J0 ^$ G, z  F3 K' I9 g: P5 h
  955. ;音乐条处理
    $ ~7 s: S6 p; E, x% a6 H$ B" j% C
  956. Volume_Convert
    1 f& I2 a9 d. `' V" O; s
  957. AND #$0F
    . @! E' ?$ B% u5 c2 N" b
  958. TAY7 Q5 r2 D; `) x2 M; W. E
  959. Volume_Count" O  ~0 T7 m: m
  960. LDA #$08
    . C& J) z2 Z/ L/ k% k4 d7 [
  961. STA Sound_Bar_Cnt
    . ~# \- z: t, s" r% ?
  962. Volume_FILL
    ! l& Y: P& l/ f9 \" T
  963. DEY
    " u& p* X4 k" f* q* J' E* @
  964. BEQ Volume_Half
    4 I7 I5 A! @; b( }
  965. BMI Volume_Empty% X, m1 N! y) d9 f5 v' }" x
  966. DEY
    . L  E/ V, o' j/ }! K% R
  967. Volume_Full
    % L' t: U' ^1 ?/ H% I! F. [
  968. LDA #$16* U/ r2 \! ?. N) |
  969. BNE Volume_PPU
    3 q! m% L; q$ P' t+ Y! x" D
  970. Volume_Half, ]; w/ j7 |: ]% P* A
  971. LDA #$151 `9 z! K& c; c3 t0 `
  972. BNE Volume_PPU
    , e% `* `% Z" b" r* x+ S; r
  973. Volume_Empty
    7 O' U# n3 k2 S& ]) f+ m$ A: @
  974. LDA #$142 ~0 A8 T% L: ^& L3 E
  975. Volume_PPU
    # t- U* L5 P# S1 M
  976. STA PPU_Addr,X
    ! s, @+ p  p/ n6 `
  977. INX
    & P1 Z* T- r8 Z
  978. DEC Sound_Bar_Cnt
    0 A: n$ @: w0 ]  m" h  V" y- A  W
  979. BNE Volume_FILL2 u: v' w3 k8 e. S2 [3 b- K7 v
  980. RTS
    0 r4 h$ N  Z' r3 b: y3 G% {4 n* k2 V
  981. : {' }: D6 L- c5 F) {; x& j
  982. Volume_Set_Cnt; }  a4 q8 v9 e& N
  983. LDA #PPU_MODE_CNT_LINE_NEXT4 H9 {  G( N3 v/ b4 ?' w) b
  984. STA PPU_Addr,X. h; @' G1 R- l
  985. INX
    ! Q0 s! `; D; l- m! a) K
  986. LDA #$084 Q5 n! S0 B  H; h0 G
  987. STA PPU_Addr,X8 q2 s( l2 d1 }( H3 q4 w& s0 f
  988. INX9 {* H( k' ^1 P( q4 p: B1 f
  989. RTS
    1 g6 \7 S2 r# j8 L: p& t
  990. % l* Z) N) {; k
  991. .ENDIF
    / {% D; F* U0 O9 d! P8 E% [
  992. 9 V- U0 a. [: }, i- j$ S
  993. ;==============================/ ]7 e5 V, {1 W* R# k
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入" K; T% \; \; u4 z
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    + Z: e* q& s( A6 L5 r5 h* }
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除, O) Q( {, k# W! i# j- b
  997. ;------------------------------. y2 {7 j. j/ p5 U+ S1 L
  998. ;PPU处理
    6 k& z% h; N% f( Q8 ^5 ]& Q
  999. PPU_Proc* v7 k; [1 K" z: j5 d. P/ x
  1000. LDX PPU_Cur
    6 F% d5 P: }% Y4 L" u
  1001. LDA #$00( P  v' j0 f  m" N
  1002. STA PPU_Cur
    1 i" D, X4 g+ {4 @) }
  1003. STA PPU_Addr,X, X; t  q- p7 \" W
  1004. LDA PPU_Addr2 |: l. W  K3 f5 W; E
  1005. BNE PPU_Proc_Beg: }/ a3 y5 M4 }6 v0 r: p
  1006. PPU_Proc_Ret
    # O7 p8 Z# l6 K2 l) t* p  b0 C8 {, i
  1007. RTS; O& p5 m5 ~* ^  \( J

  1008. " _+ u- ]) l6 T# }+ l7 O8 l
  1009. ;------------------------------- S! l- R+ D( p/ i; \
  1010. PPU_Mode_Return_Cnt  ;转下行模式. T2 D8 O) G$ O& G; j8 |
  1011. INX
    " `6 v" g+ j  h& m5 t+ v* b
  1012. LDA PPU_Addr_L
    : x7 W6 o1 Z; w3 E
  1013. CLC
    $ w  k7 y% G8 U  \2 j
  1014. ADC #$20) F% Y$ b/ Z) p* W  w3 N
  1015. STA PPU_Addr_L
    4 o3 f# @- X' `: a; H
  1016. BCC PPU_Mode_Return_Cnt_End/ _+ z9 \& }1 V6 N
  1017. INC PPU_Addr_H
    - t0 S5 G3 H2 s  Y5 y
  1018. PPU_Mode_Return_Cnt_End) i2 F* n/ A- u, A( \6 h9 H6 d
  1019. LDA PPU_Addr_H6 v! F4 z  s1 ]# l
  1020. STA PPU_ADDRESS
    4 \! d) ^: i1 Q
  1021. LDA PPU_Addr_L- K0 t) P5 e7 j) N/ h3 d* A; e* ]  Y
  1022. STA PPU_ADDRESS8 v: x- d8 T  A+ _; V: j7 `
  1023. LDA PPU_Addr,X
    % G6 I. O- @& b+ h8 e
  1024. TAY# V1 R2 m7 G  J1 d, _
  1025. PPU_Mode_Return_Cnt_Write
    4 y0 U/ f5 g! U$ l* i1 L
  1026. INX' \5 s# I$ a1 l$ Y$ G! [& W
  1027. LDA PPU_Addr,X7 K- o# b& Y5 ]3 A& [
  1028. STA PPU_DATA! [' J# m  @  a7 z, t! Z
  1029. DEY
    8 e) A( ?3 ]& H5 T! }+ K
  1030. BNE PPU_Mode_Return_Cnt_Write
    " {' Y9 a8 e2 j$ ^
  1031. JMP PPU_Proc_End
    * f- `- N  w& {% r2 P( P: W: Q8 G

  1032. $ T) \, F/ A) E
  1033. ;------------------------------
    3 c: a: e: O; g0 e/ V% m
  1034. PPU_Proc_Beg  ;处理开始- \3 p5 x" |7 t
  1035. LDX #$00- b0 d8 g# B% l2 Y5 T9 w
  1036. STX PPU_MASK; j9 v: g+ g1 i7 z
  1037. ;------------------------------# `: p. u' F8 z
  1038. PPU_Mode_Select  ;模式选择
    / O: ]0 H& n  X. g! o; m0 x
  1039. LDA PPU_Addr,X
    , M$ ^) o. b/ L0 ?+ s
  1040. CMP #PPU_MODE_CNT_CLEAR. \& s' T% a: P4 }
  1041. BEQ PPU_Proc_Clear) N9 T' x* `5 c- r. m; C1 Z8 Q! b
  1042. CMP #PPU_MODE_CNT_LINE) Q1 S! x* M8 B7 W' B2 f
  1043. BEQ PPU_Proc_Cnt_Line$ q* P( G9 w) f* c
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    2 [! Y" n1 n8 }9 W& u6 ~* b0 G
  1045. BEQ PPU_Mode_Return_Cnt1 a: @. u# A- X0 p
  1046. JMP PPU_Proc_End_Write
    ' @; @9 l6 n1 R0 i3 O! e
  1047. ;------------------------------
    8 \7 v& h9 J3 U# C2 C% u: l
  1048. PPU_Proc_End  ;单行写入结束- R4 f! G  M$ s. i+ f
  1049. INX
    & J7 _( b3 G: B5 c. ^, ^
  1050. LDA PPU_Addr,X
      ]* ~* P# r6 |. f0 r
  1051. BNE PPU_Mode_Select
    $ m+ L! G  r# Y! d0 u0 ^9 y
  1052. STA PPU_Addr
    % n+ M6 r  a: C) e( L, F, b7 w8 d
  1053. JSR Update_Palette_Color
    ' `2 l" q; y6 B# c5 }% v
  1054. 4 D+ T% Q' T9 Q
  1055. PPU_Proc_End_Write
    2 p. d, h9 k+ p) \! p" J$ u
  1056. LDA #$004 X; W3 O) }; l6 a  L( b3 n. r
  1057. STA PPU_ADDRESS; ]# @- i4 G" C& i7 ]$ l# C
  1058. STA PPU_ADDRESS
    0 Y4 X' a" D- b$ Q$ E1 P
  1059. LDA <Text_Disable_Flag! Y7 b& ?6 u, {8 t. ?5 U) R( T6 \
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    5 V8 z- ^, [( F1 N
  1061. STA <Text_Disable_Flag
    + {9 W1 R, U5 x7 n' {/ Y) U
  1062. LDA #Scroll_X" L+ t9 f" m3 b1 }3 H
  1063. STA PPU_SCROLL
    # ^% `8 \  z; o" K2 J+ s
  1064. LDA #Scroll_Y9 ?2 t" F& r$ O
  1065. STA PPU_SCROLL- r+ q" ^9 Y2 }% K5 S
  1066. LDA Screen_State; M, ~5 a* @# t% L
  1067. STA PPU_MASK8 y) C( H5 E9 n/ y4 l  @6 m- ?
  1068. RTS
    ! f" q" U, _7 P' `% x5 H' F7 F
  1069. ) l# `! `5 x! H
  1070. PPU_Proc_Clear1 B; Z1 R" A: U9 m/ k
  1071. INX9 _  E% i7 R% {- P
  1072. LDA PPU_Addr,X
    1 o7 Z" ]% w0 _+ ~3 v- s
  1073. STA PPU_ADDRESS
    % u) V9 R5 \+ j+ o2 V& B
  1074. INX
    + A; X2 F% K7 M1 V, E
  1075. LDA PPU_Addr,X/ y! D3 ^1 [8 x3 @
  1076. STA PPU_ADDRESS% Q! o' |# {7 @6 p
  1077. INX
    7 R4 B7 D2 Z/ k( D; o
  1078. LDY PPU_Addr,X, \) A  Z& l( n2 }# T
  1079. LDA #$00. H* H" T  [5 l1 `
  1080. PPU_Proc_Clear_Write
    ) O! U$ z" r  P1 f
  1081. STA PPU_DATA; |- ]* ^- @6 L- P" C7 \9 S2 G
  1082. DEY
    8 L# [; N" P1 H
  1083. BNE PPU_Proc_Clear_Write# c% W/ V$ A6 i) r+ X2 O7 X
  1084. JMP PPU_Proc_End) V6 q5 D, I; C
  1085. 8 C# {3 A8 o6 W5 j9 _8 T8 K- |
  1086. PPU_Proc_Cnt_Line) e  W4 w# x# |& e( H1 {8 s
  1087. INX8 h8 D$ i2 \9 R1 \3 U
  1088. LDA PPU_Addr,X
    ( T7 O7 s3 R, l7 e7 n3 K
  1089. STA PPU_Addr_H9 ^% q3 X. }5 U, B! @% r
  1090. STA PPU_ADDRESS
    9 E- A9 ~& [* X3 }
  1091. INX9 |5 f0 k- j' o
  1092. LDA PPU_Addr,X, q5 P7 c# n& j- w7 D% h. h- a- D
  1093. STA PPU_Addr_L7 A+ U2 O  p1 }6 P. M. G+ H5 s
  1094. STA PPU_ADDRESS
    ) ?5 @' l5 u, F1 |, q5 u
  1095. INX9 @0 B9 f$ T3 T6 q( {- p
  1096. LDY PPU_Addr,X
    " x! v+ A% J6 v  F2 Z" H0 R
  1097. PPU_Proc_Cnt_Line_Write
    % b" M' j8 e) z4 O7 J  i' r
  1098. INX. w' c: s$ L* H9 F# Q: C
  1099. LDA PPU_Addr,X, n& x- r9 M. L& G* a
  1100. STA PPU_DATA
    6 M9 E9 r5 Y' _0 _
  1101. DEY
    , [+ _8 `' _2 _: i( n) y/ F, G1 J
  1102. BNE PPU_Proc_Cnt_Line_Write
    $ d  j- F- P2 _  e, Q/ T3 T  A) |" ~" s
  1103. JMP PPU_Proc_End
    ! K# e# o3 ^! \+ T2 H$ ?, I( [# d
  1104. # U4 D, Z+ I% A4 u" O7 V" x1 M# }
  1105. ;==============================& Q& Q- b$ j* \  y& I& o3 K
  1106. HEX_To_Dec;十六进制转十进制  o' D( F6 y5 z; p, q* u
  1107. STA <HEX_Data
    2 N: U$ j1 C; ?7 S6 A- O0 ~- H8 r/ ]
  1108. PHA! v  u% o# u- O+ R- B- A. F6 G
  1109. TXA3 W' P0 ~& p( B" [
  1110. PHA
    ; C& ]- v, z3 _0 k% D' ?
  1111. LDX #$00
    & J& G3 v+ @$ v* G. K" L
  1112. LDA #$00
    ! d. f) t# ^+ {, o# |  Q0 d
  1113. HEX_Cln, s  u3 X# |5 X0 `! K
  1114. STA <DEC_H,X
    8 Q% v: y5 g5 |% k
  1115. INX
      {2 ]# k) g4 z
  1116. CPX #$030 h$ p) j- p$ V4 H$ u1 u% _
  1117. BCC HEX_Cln3 j- P& `% i$ {; u/ f, Y* M% L
  1118. LDA <HEX_Data, C: z; v' q3 k9 {# [
  1119. ;------------------------------
    5 q1 T# ]0 ]( K4 U* j0 U- i
  1120. HEX_100: O+ t; W. @6 n; ~- k+ B
  1121. CMP #100
    0 t+ q% [* F1 w. {+ s
  1122. BCC HEX_10
    & k+ _6 Z7 t3 b6 P
  1123. SEC: D* ^0 J$ G8 X  B
  1124. SBC #100* O8 C5 V8 H. _! Q( b
  1125. INC <DEC_H
    8 r6 ~8 b4 O! N0 o; M
  1126. BNE HEX_1001 e, _  G% C7 \/ C4 F
  1127. ;------------------------------* m  M" H" f; U
  1128. HEX_10
    ; ^2 b0 K' {: u: o: V- A
  1129. CMP #10
    7 n" S; y! e9 i7 v+ H& V* I
  1130. BCC HEX_1
    & R6 H0 [/ B/ f' l5 N
  1131. SEC
    ) M9 R" j) Y% p3 Q
  1132. SBC #10
    8 X; h* p0 n0 I" Z4 |) L2 B
  1133. INC <DEC_T. q  ~0 z7 x1 l) I$ T+ U( H
  1134. BNE HEX_10( A: W% f5 f; i' M: P
  1135. ;------------------------------! p0 f. t4 n2 S1 x
  1136. HEX_1
    * Z' j( d) K  r# {6 |! K
  1137. STA <DEC_L& R5 O4 u* v& d2 x" F" F
  1138. PLA
    8 L; K% i2 Z0 n" _# V! ~/ v
  1139. TAX$ ^3 b2 H: z* u" r$ }  Q3 @  z
  1140. PLA
    7 X+ H$ q1 ?, M: q- i
  1141. RTS
      s* u7 c2 ~2 F. F9 S$ d6 X
  1142. , P% B) `3 j) T- p! z' ^. r
  1143. ;==============================. h8 D/ T* _; f3 D) @
  1144. ;音乐曲目显示
      D& K3 q; D. d- c
  1145. Music_Show! S7 a8 p; l: M$ `' [8 H8 N) `
  1146. LDX <Music_Item_Cur
    - l* r; [& H7 _  {6 P- b
  1147. LDA <Music_Cur,X& H9 g% i. n" Y8 N; w! q
  1148. CLC$ X; b& j# q9 g. u' s
  1149. ADC #$011 {- H7 O* o7 v: T* z* Q. j
  1150. JSR HEX_To_Dec
    " h6 e) k8 J+ c# ^- x+ H* _, x# v
  1151. LDX PPU_Cur
    # E, v7 L: |, @* x, L( s
  1152. LDA #PPU_MODE_CNT_LINE. u% @9 _$ Q) ~
  1153. STA PPU_Addr,X) X( R6 A2 s( Y, S8 Z: o: p
  1154. INX
    ' E& e; c6 o6 l+ u1 n6 C2 d( V: U% c
  1155. LDA #HIGH(Play_Index_Pos)4 F( n8 ~) |' Q9 g' X# n
  1156. STA PPU_Addr,X3 O1 H/ [% V) l3 C$ O
  1157. INX
    & D) q) m: A6 g- h
  1158. LDA #LOW(Play_Index_Pos)3 F+ G, D6 \0 N( C! d9 a( S
  1159. STA PPU_Addr,X8 Y' k, y8 F1 w6 J2 ?( e. _# Q7 o! i
  1160. INX  N8 w  {( L8 t3 x* `. O

  1161. . I9 y, @1 P: T; J; ~  J+ s
  1162. LDA #$073 h  v  V, G: G1 w" \
  1163. BNE Music_Show_Length# n0 i: W1 U) y- w3 @  O/ G# z0 Q
  1164. 8 s! J  |; j; k' {" s
  1165. Music_Show_Length+ S# f0 V  ~/ f7 M! j; [9 D
  1166. STA PPU_Addr,X9 N$ R8 p/ N. Q% v1 w. B; g  c# M+ Z0 Q
  1167. INX
    6 x+ g5 |  r0 B
  1168. 5 V% ~# j" L' d/ y4 J2 W/ y
  1169. LDA <DEC_H
    $ [+ u+ _3 D% o$ A% P
  1170. ORA #'0'" R3 b5 j. x/ |# O4 o1 A9 a
  1171. STA PPU_Addr,X. Z+ |$ Z  v8 G7 E) S
  1172. INX4 r. U( V( ~& W& b7 a. Q
  1173. # {( A! S% S  d  T6 F
  1174. LDA <DEC_T
    6 c) P* z& B! O) {' V5 u
  1175. ORA #'0'" b8 W: {1 {5 P
  1176. STA PPU_Addr,X
    + f7 V1 l0 e$ ~) U; `* ~3 |
  1177. INX2 H0 f& e: H( g: y5 c7 P
  1178. * e/ N- \. W. `9 s& g* d# ^, F
  1179. LDA <DEC_L& u$ ^1 Q& l8 }& J8 O9 G
  1180. ORA #'0'/ [; g, N& ^/ Z) y
  1181. STA PPU_Addr,X
    . r' J+ Y& \8 i! p7 G# G
  1182. INX
    - n- `/ f: o' J
  1183. 7 ]4 q8 v' B/ D: ~2 e  O
  1184. LDA #'/'
    ! F' P: e/ V5 E: n
  1185. STA PPU_Addr,X
    : e2 e% R8 Z: f' I$ c2 o
  1186. INX
    9 b( X1 ]4 i& y' g* Y+ {
  1187. Music_Show_Total8 P8 V! Y, @7 S' `9 I
  1188. LDA Music_Total6 q9 m# H/ C; @$ o
  1189. CLC+ ?7 y" V  i( N5 Y
  1190. ADC #$01
    3 {2 l% n* ?: ?- Q) c
  1191. JSR HEX_To_Dec
    $ r  e2 M0 ?" j; A

  1192. 7 C# c3 U8 J& A  ?- N- n( C
  1193. LDA <DEC_H( o" y9 ^6 o" G; q  `# Y: t/ I
  1194. ORA #'0'' G& H, s/ [, Z$ J; g
  1195. STA PPU_Addr,X
    ! u; f5 u' v8 w* b2 X0 z
  1196. INX
    ' B+ b& }$ C+ p7 u% {8 y

  1197. + E3 [4 B& L: v$ `- i
  1198. LDA <DEC_T
    $ h! B5 H2 z+ [8 n! v( _
  1199. ORA #'0'
    ( Q2 B; X' C! s8 W
  1200. STA PPU_Addr,X
    0 i& ~' I, c# a4 U+ D- x
  1201. INX- a' n8 Q! i2 B! X5 K
  1202. , X7 d# W! z+ k* f5 O' J/ W
  1203. LDA <DEC_L
    ' O' `& j7 S* |  J
  1204. ORA #'0'
    ) g2 H9 N( Y" }% ~5 W: x
  1205. STA PPU_Addr,X
    6 O  [, y( w: @( k% ~9 P
  1206. INX! K. ^+ {7 q: U4 h

  1207. 6 j2 `4 ^9 R" F- @9 k4 K! L" l2 v* e
  1208. STX PPU_Cur
    3 x# ?- m% I, K- P9 z/ Y
  1209. Music_Show_End2 R1 L3 G0 J' {
  1210. RTS7 p4 u) p6 a& p4 R1 [% U

  1211. ! q  ^* f' G' n, O; G5 H
  1212. ;==============================( R; ^" I" K$ r
  1213. Time_Show;播放时间显示1 X2 b% O& ^( d8 @
  1214. LDA <Text_Disable_Flag. v; \/ o% {9 l0 r3 _
  1215. AND #TEXT_DISABLE_ITEM% ?* U9 N; T) T6 X0 Z  O9 b) }
  1216. BNE Time_Show_End
    8 s2 i1 L6 K9 B% Q" ~1 S( U" f& E
  1217. AND #TEXT_DISABLE_TIME
    6 ?9 s1 \, ~+ T- |
  1218. BNE Time_Show_Enable
      G, j  j0 C3 @
  1219. ; [: [" J/ R- G# b% @- `
  1220. LDX PPU_Cur
    # h. O- J+ Q& H% n4 e: _  ~$ \
  1221. LDA #PPU_MODE_CNT_LINE6 V  |2 Q8 O" C3 c
  1222. STA PPU_Addr,X
    # f( q) G8 J' R1 }9 Z
  1223. INX
    2 h4 c- Y: u3 s/ ~; B* S
  1224. LDA #HIGH(Play_Time_Pos)
    4 `' d! {: Y' H7 o9 |
  1225. STA PPU_Addr,X
    $ p- O3 v6 J3 ~$ v* ~  c9 [+ ?5 i
  1226. INX6 D' D. c5 y& Y1 W6 c1 z! r% n. `
  1227. LDA #LOW(Play_Time_Pos)
    ; U! |1 s9 M$ d3 L& j9 L
  1228. STA PPU_Addr,X
    ( D- h, J( @' Z- ?7 A, u7 q- P
  1229. INX
    0 n) t. _# J$ A& e* c3 E
  1230. LDA #$084 s+ ?) o% d: k# _; o+ r- Q' A1 R- s
  1231. STA PPU_Addr,X6 E: b7 P- Y" T$ r' \% M
  1232. INX0 u* y, s. P: Q! I: x: J
  1233. Time_Show_H
    1 p% }* ^" t' P# c4 u: ^. z( d
  1234. LDA <Time_H
    ; A1 c4 W/ A% n$ @$ i
  1235. JSR HEX_To_Dec9 `4 b1 w6 k; U6 Y
  1236. JSR Time_Digit
    2 \* |. a2 f, N
  1237. LDA #':'( C/ `  Y- @# d& [" g" H1 g1 I, P  X- n
  1238. STA PPU_Addr,X" z; X5 F: X; P$ m
  1239. INX) u+ P8 ?; R5 V2 f7 I, N. R. T
  1240. Time_Show_M0 {  f) Y7 B8 y/ P$ c% |: O4 f
  1241. LDA <Time_M
    % T+ G) ]7 s  P
  1242. JSR HEX_To_Dec- o6 i! t4 `: J! Q7 M. a' v: y5 b
  1243. JSR Time_Digit
    % J8 k; ^1 q& a' C
  1244. LDA #':'
    6 w1 J0 u* y3 k# n  q
  1245. STA PPU_Addr,X" d& |" `7 H$ ^* ~. e3 y, _
  1246. INX
    ' y* q7 H; ?. r5 o& d
  1247. Time_Show_S* ]. J5 S8 e; K/ ^3 U
  1248. LDA <Time_S7 {* B% L0 G( q
  1249. JSR HEX_To_Dec
    8 x+ C! f5 `1 H8 A) ~; \
  1250. JSR Time_Digit7 P6 g! I5 @: ~, N1 o
  1251. STX PPU_Cur. O" A0 e6 S: b0 N
  1252. Time_Show_Enable0 D  u; c& {* e! R& W
  1253. LDA <Text_Disable_Flag
    4 b" ^0 E' ]; ]6 o
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    5 o: C2 L) ?) Y7 p6 `5 c+ o
  1255. STA <Text_Disable_Flag
    / R/ P* v" }2 c7 t  v
  1256. Time_Show_End
    " ~! C9 B, m+ F0 ~
  1257. RTS
    2 N) D, I9 G: ]/ b+ S$ }( Q

  1258. 6 I+ s) H( m2 L, D- i% S' r
  1259. Time_Digit
    ; V8 {. E9 S  `
  1260. LDA <DEC_T
    - l- G  q! a2 Q9 B6 [! b
  1261. ORA #'0'5 M+ y+ [7 O; P8 ?! R, o
  1262. STA PPU_Addr,X% K  h; A1 R6 Q6 D
  1263. INX
    . M$ C+ ^* R5 d0 K0 P! c
  1264. LDA <DEC_L
    / y3 A. T0 j% E" _: \( I3 l
  1265. ORA #'0'
    4 H0 q9 Q9 ~, S) I" \
  1266. STA PPU_Addr,X' |  ?9 M( O' x5 |3 |
  1267. INX
    / n% k4 y# ^0 n: @
  1268. RTS2 ?! ]+ ?9 h# C& ~6 `: K) R# v
  1269. 6 @/ t: u- F$ ]3 x+ D
  1270. ;==============================
    . x- u" H/ j8 H
  1271. Time_Count;计时& a5 T" z2 f  {4 K( f" K
  1272. LDA <Music_Stop_State
    7 x+ `$ N# V# v1 l4 [2 T
  1273. ORA <Time_Wait_Cnt
    1 {( J' z9 ]4 D5 P
  1274. BNE Time_Count_End$ R8 G  ^- z$ C7 o3 o% L6 Y
  1275. INC <Time_Cnt
    , M: |: Z  T; {* K9 P  u
  1276. LDA <Time_Cnt
    . }7 X9 \: ~6 i
  1277. CMP #604 ^! M4 L( f. ?+ `& G
  1278. BCC Time_Count_End4 L1 C; Z9 }) Q7 G( P) l
  1279. LDA #001 r& a% J7 v$ |: b9 b$ \
  1280. STA <Time_Cnt
    9 Z% p) B  C* k
  1281. INC <Time_S' y% P4 W5 \; Q% h
  1282. 5 c: z' n% X+ L- u- l  ~: x
  1283. Time_S_Cnt
      }/ L- V" k1 L: z& n+ j( T0 t* p
  1284. LDA <Time_S
    + ?& T1 H  a8 R( z9 ]1 B% I5 U# u! C; j
  1285. CMP #60
    , z; v; y/ c$ c& j( g) I
  1286. BCC Time_Count_End
    & Z* N* Q" t+ P% ^3 H( J" Q( C7 ?
  1287. LDA #00
    6 N. F2 d; u5 f' P( E" O3 Q/ A. b
  1288. STA <Time_S
    2 o9 E; C1 O, r3 X
  1289. INC <Time_M# }3 [) x$ y. l5 Q( W( m% o! B/ R

  1290. ' _3 b% |9 z2 `, R# L
  1291. Time_M_Cnt2 p, V* ~6 v# @% ]+ }6 E' z9 D( Z
  1292. LDA <Time_M
    1 l7 \: W% M7 F' ~
  1293. CMP #60
      W( r" N7 K4 `  {
  1294. BCC Time_Count_End3 _5 g9 h. I1 _0 [- c; X% x, p4 v
  1295. LDA #00" b( w# r% C/ b2 K4 G
  1296. STA <Time_M
    - r8 e# @3 G' l1 b
  1297. INC <Time_H
      x# m6 F: q* h3 x4 i  W
  1298. 7 H& I' d  }# }* @* b# X
  1299. Time_H_Cnt
    : k9 G6 {: N; ]$ G
  1300. LDA <Time_H
    2 o& H' T% _# m6 O/ b" h- f4 n- }
  1301. CMP #24
    6 g1 ]( C1 s4 \* Y- N9 {+ H$ J
  1302. BCC Time_Count_End
    9 b8 g* D* T1 n9 m) i# u) z
  1303. LDA #00
    ; A2 T& n8 v- |5 ~) u9 t/ ^
  1304. STA <Time_H5 n1 R! t* v+ k6 c* B4 K5 k' `
  1305. ( w/ E. v+ T3 Q4 |  b5 r( {
  1306. Time_Count_End0 O. y+ S1 h+ K3 [
  1307. RTS. F8 o: |" r/ p! @" S; B

  1308. 9 i5 D$ N6 G  ~6 v  u% o# Q
  1309. ;==============================+ w" `/ a/ t4 d% Z3 D2 ], q
  1310. Time_ReSet;播放时间重置$ \0 W1 R1 _1 ]# t; s
  1311. LDA #$00
    0 ^( N% X  N. Q9 ~
  1312. STA <Time_S8 |8 p2 z4 r  s" {5 [0 Z; q
  1313. STA <Time_M 5 \1 L& X4 Z) Q( N/ v
  1314. STA <Time_H  J& |0 J- [2 X, h% y: l' n
  1315. STA <Time_Cnt0 i1 Q/ P/ |* Z/ t
  1316. RTS. J& _) R6 z8 J9 j- W
  1317. " F0 ?! a+ C: h+ a4 |7 g- z
  1318. ;==============================
    4 R. X' K, e+ Y+ h6 j9 |
  1319. Music_Bar_ReSet;音乐条重置& A) x. l1 ?1 l& [* e7 J$ Z
  1320. LDA #$00+ @5 k7 p8 G! ~! g& \
  1321. LDX #$00& T7 z, y& @, Y2 B
  1322. Music_Bar_ReSet_Set' ?8 \4 W; D; D  K
  1323. STA Sound_Bar,X# y3 w+ F3 |/ K- R! @) R# j
  1324. INX0 O# R+ V& T, y8 p9 f' |- u- K
  1325. CPX #$10, M* b0 B+ G3 O1 h: ]
  1326. BCC Music_Bar_ReSet_Set9 N0 K+ t, k1 ]3 I: Z
  1327. RTS
    5 W6 {9 e, b5 o: I+ X3 N
  1328. : {) H4 p+ s+ H7 b2 o$ h4 x
  1329. ;==============================3 o+ r( q- Y# s+ t2 t5 o4 h
  1330. PPU_Data;PPU数据写入
    # m: y0 E3 V3 r# N
  1331. STY <Data_L
    ! g+ ?" F6 Q  z2 \/ O
  1332. STX <Data_H  x' L* C/ j6 C" ~9 a2 w5 ~' u
  1333. LDY #$FF; j- ~4 ~: I& n7 i4 b0 j
  1334. LDX PPU_Cur2 d& G# [% x7 I5 r
  1335. DEX, P& p9 k; T& M  A7 F1 `
  1336. PPU_Data_Beg2 j1 K( i5 y6 q+ g: B2 R2 V/ @
  1337. INX# s- N$ F3 c) L
  1338. INY& o6 ]+ B! O* M* F( g
  1339. LDA [Data_L],Y
    & G5 Q  x  a  @) R" q
  1340. STA PPU_Addr,X
    + r* O0 G- w+ ?. u; i$ T7 g
  1341. BNE PPU_Data_Beg5 \7 v% [% ]9 U4 X! c9 B
  1342. STX PPU_Cur3 Y7 z8 U  G. l
  1343. PPU_Data_End1 G6 r+ P  f0 Z+ O# E1 ~
  1344. RTS$ [, X2 D: m+ V/ }2 A1 l

  1345. 5 `! d; H5 ~+ N; j* P, [
  1346. ;==============================
    * X' ~0 `, j1 |# ~* u
  1347. Music_State_Show;播放状态显示
    " {4 [; t6 H; u  d
  1348. LDA <Music_Stop_State2 {" N# n) C1 P" }+ z
  1349. BEQ Music_State_Show_Play
    # `& W5 R7 J# ~
  1350. Music_State_Show_Stop
    ; w" @, V# P4 I3 N- k, [/ t
  1351. LDY #LOW(Music_State_Stop)% o; m# J) i& |$ ?  @
  1352. LDX #HIGH(Music_State_Stop)0 X1 @1 [( g; W; K* r2 X
  1353. JSR PPU_Data. |1 c* {6 e! }5 p$ v: G7 W
  1354. RTS* H, u6 \2 _4 G) l2 _
  1355. Music_State_Show_Play
    8 I& E$ O! ^( c' L6 [
  1356. LDY #LOW(Music_State_Play)
    " i; u# w* x9 @; v
  1357. LDX #HIGH(Music_State_Play)
    4 l7 s3 x+ M0 Y& n% ~( x( p
  1358. JSR PPU_Data
    % R# T+ J7 _/ q! u3 Z4 T1 T
  1359. RTS( A8 |( m3 p4 \, W; o& M

  1360. 4 D" F. w( _& w% T1 p& ~* |4 M& e2 v
  1361. .IF SOUND_BAR_SHOW_ENABLE& Q, K' i5 l$ M8 c. o
  1362. ;==============================' D! a9 d# o6 i1 K. U
  1363. Sound_Bar_Text_Set;标题与音乐条初始化& d7 r+ e7 v5 j0 T  R/ ]$ Z9 v
  1364. LDY #LOW(Sound_Bar_Text_Data)
    / r8 t' h  J: @; F- ~5 {# P
  1365. LDX #HIGH(Sound_Bar_Text_Data); Q6 _4 p+ {; o4 K% H  x8 M+ g
  1366. JSR PPU_Data
    . k# ~# F, P$ W; ]+ M1 I, A4 z7 E
  1367. RTS: v3 d3 E# V# w  K

  1368. - A, r1 O8 H0 T
  1369. .ENDIF' x# J: c' v1 J% K9 ^8 C
  1370. " |7 g. P' q4 s3 a" {  P& i
  1371. ;==============================6 T4 Q1 V; h+ I. r& v5 n; r7 l
  1372. Set_NameTable_Attributes;设置命名表属性3 W9 Z6 A- }# {
  1373. BIT PPU_STATUS3 I. N2 E' I' {8 l* g$ r, j
  1374. LDA #$23' E  d2 s# @' F# F3 a5 B/ H
  1375. STA PPU_ADDRESS+ A, T# e- {% Z% a* s  l
  1376. LDA #$C0
    : ]9 n  t# r) o! h
  1377. STA PPU_ADDRESS- ]( N- \; j( r
  1378. LDX #$00. Q1 M+ s9 O2 F' F5 q' W% D
  1379. Set_NameTable_Attributes_Write
    3 h+ \/ s9 A7 j( I4 O! B
  1380. LDA Palette_Attributes,X' N5 r" B6 d, U
  1381. STA PPU_DATA2 @* C! V) l' W' e& ~* d: n
  1382. INX/ J4 c0 Z+ p1 ?+ J% |5 ^$ H8 E
  1383. CPX #$40& F8 ^; K% k0 x4 B
  1384. BCC Set_NameTable_Attributes_Write
    # C+ ~7 y+ D6 g6 s
  1385. RTS
    4 `% ]7 d" j5 ?9 E! }
  1386. 8 a0 z0 S! F! E( Z8 p
  1387. ;==============================+ h2 K5 s8 z  u# g: w( b  Q
  1388. Set_Palette_Color;设置调色板数据
    " z4 C' B; \! z  e$ s, q+ y" n- ?+ ]
  1389. BIT PPU_STATUS
    1 }, ]5 n* h3 O- e# j
  1390. LDA #$3F  b, Z. }9 |- }1 g/ q7 b3 @
  1391. STA PPU_ADDRESS$ q) y. b& |  w. p0 x! H$ f
  1392. LDA #$00# Y( X# o) z* C  \- q/ D- C
  1393. STA PPU_ADDRESS
    & m/ V) n: y1 J; x( ]$ a" B" ?
  1394. LDX #$00+ ?" j/ f& h4 O* L. J
  1395. Set_Palette_Color_Write4 J2 K- v5 J7 C' }7 J
  1396. LDA Palette_Data,X8 E/ k4 y' X' }& v
  1397. STA PPU_DATA5 ~  p: u- c$ o) j4 \
  1398. INX' o& y3 c( O& f% e
  1399. CPX #$20
    4 g4 o7 B. m6 U9 V3 s
  1400. BCC Set_Palette_Color_Write& Y1 r3 m6 @/ T5 E
  1401. RTS
    ( ]0 L2 ~8 l% l, T

  1402. % ^% q0 e1 x; d% s3 }
  1403. ;==============================$ y1 Z- A' E  p; Y3 ]
  1404. Init_Palette_Addr;初始化调色板数据) O( Y1 ?6 X4 |8 Z* V% r" \
  1405. LDX #$00- @+ C: @. X- Q% S! N
  1406. Init_Palette_Addr_Write) H4 t+ l$ m# R) Z% M+ h1 c
  1407. LDA Palette_Data,X4 J  m- V0 V+ X" c) a
  1408. STA Palette_Addr,X6 }1 q: A; @" I% I: z
  1409. INX
    5 ]+ V- q0 @* A5 U3 ^1 \
  1410. CPX #$20
    % ~4 u' [' w* x" c$ y
  1411. BCC Init_Palette_Addr_Write
    ) ~9 p/ T. n( R
  1412. RTS
      `1 e) L6 E! r( h7 n6 `
  1413. 8 E7 z- i9 @5 `, f3 _
  1414. ;==============================
    + `% g7 S' `) [0 t' f
  1415. Update_Palette_Color;更新调色板颜色; h" o% }$ {" M
  1416. LDA <Palette_Update_Flag0 [* a0 a7 P) m% _4 z( J: C
  1417. BEQ Update_Palette_Color_End
    / `. A; W9 G# K6 x/ z
  1418. LDA #$3F
    ! `- `7 _! b7 }$ S' k5 ~
  1419. STA PPU_ADDRESS
    7 N8 T% u; Z3 w7 w! [' k5 k
  1420. LDA #$0C- v  ]+ f  X1 R3 G
  1421. STA PPU_ADDRESS
    " w5 R1 s/ K/ C
  1422. LDX #$0C
    1 J5 I' c- w6 G: M- I
  1423. Update_Palette_Color_Write! J- p7 |7 N) U
  1424. LDA Palette_Addr,X! x8 `9 @$ C! d, ?$ e6 n' z- v$ H
  1425. STA PPU_DATA
    / ~( `. T. C8 }. r1 @
  1426. INX
    ! C% T0 H" l$ v
  1427. CPX #$14
    9 j; Z2 D; _4 K) L1 \* b  ]1 r
  1428. BCC Update_Palette_Color_Write
    3 g2 t% |! ~! Q- r# h& S
  1429. LDA #$00: ?! B) _) p9 `: X
  1430. STA <Palette_Update_Flag+ b* D) `& S" _/ `/ A2 C3 \
  1431. Update_Palette_Color_End
    4 w: V$ q& N7 i4 l$ I
  1432. RTS+ [' F0 n. T0 }" h/ v

  1433. 6 M" H- Q( R( ?

  1434. $ h' I! M  s' N& x' \5 O8 i# ^
  1435. Update_Sprite_Palette_Data
    - G$ t) _; o% {
  1436. .DB $219 T& c3 l4 y# q' R! y
  1437. .DB $21
    ! f9 B  U  X) {: x- }
  1438. .DB $11, J1 ]8 F/ N% w- I  k4 }6 p8 Q. l2 C
  1439. .DB $019 K* D' ]# v+ L
  1440. .DB $01
    " r6 R3 W+ H+ F! H( |# `4 k0 O9 [
  1441. .DB $11% m5 K$ U: i  e) V$ @' j
  1442. .DB $218 @+ G6 P) J  C. N7 Y/ G( D: d- x
  1443. .DB $21
    $ X& m3 [3 q1 W7 [% `+ I
  1444. .DB $11# h# D7 H# ?' m& i) h
  1445. .DB $018 F7 S) ~- R. W# a1 v2 F2 T: N
  1446. .DB $11) q' o4 ?( x5 W
  1447. .DB $213 e4 M8 f2 T$ i. {* `
  1448. .DB $21
    , z: C9 b; }$ D9 v3 S
  1449. .DB $11) ]( m# u$ S0 P* C/ q6 g! K: K" y3 u, O
  1450. .DB $016 n) l# b: L7 n
  1451. .DB $11- ?# ]9 D6 _* M7 j, t
  1452. ;==============================8 e3 G! j# N) G9 r) w) S$ `
  1453. Update_Palette_Data;更新调色板数据
    & O& t3 R+ S) j/ r; l
  1454. LDA Nmi_Time_Count
    : {6 s6 W+ `5 T8 k% Y" l
  1455. AND #$08( r, \2 a8 [# j/ \$ L
  1456. CMP #$08
    4 |, ?# B; k* {% _/ E9 S% h
  1457. BNE Update_Bkg_Palette_Data/ x" `  ?/ N* v  z; L
  1458. 6 e# R  ^( z* t- I& y3 S% g' R. i
  1459. Update_Sprite_Palette_Data_Set
    5 J: o3 n- w$ `( o  l$ ]# v8 p
  1460. LDA Nmi_Time_Count
    5 ~0 B* M# b7 R+ F0 }* M; V
  1461. LSR A7 _% M: X; b5 k' ~
  1462. LSR A
      B- p; x% \- f# x' O
  1463. LSR A+ ^& i+ M6 L. x# A2 s* R
  1464. LSR A
    . ]/ I, F8 w& J& b
  1465. AND #$0F6 E, ^& F0 y$ b6 r
  1466. TAX5 E+ r5 {  j% z4 R+ M1 O8 L" k! g
  1467. LDA Update_Sprite_Palette_Data,X
    $ ~( }7 U3 f5 ?( Q! f2 k! i
  1468. STA Sprite_Palette_Update_Addr
    5 E) Z) O$ k" M2 |2 A- ?. F
  1469. LDA #$01+ @$ M# h: a0 m; @5 s' b
  1470. STA <Palette_Update_Flag0 F: n* @7 g7 O
  1471. / Y1 g5 T( a$ C; Y* i2 J
  1472. Update_Bkg_Palette_Data
    ( I+ w2 X9 }8 [% e* I. S
  1473. LDA <Text_Disable_Flag2 v+ J3 Y8 K5 \- b5 b' X$ B! ]
  1474. AND #TEXT_DISABLE_RAM0 |/ r: W+ W# N" Z
  1475. BNE Update_Palette_Data_End. i% T5 X+ E4 [' u
  1476. LDA <Music_Stop_State0 J) u; o8 H) W' M! a; O5 W4 k
  1477. BNE Update_Palette_Data_End
    ; @- A5 a& s4 D" h9 F. F
  1478. " z0 U9 n& i9 `& L4 K. l% r3 x
  1479. Update_Palette_Data_Check. U5 l) r7 B6 X9 ~0 b; s2 ?8 A% m
  1480. LDA Palette_Wait_Cnt7 a5 C- ]  g% N6 X0 N" K
  1481. BPL Update_Palette_Data_Check_Over& Z( R) ~& |/ O& n. I1 H0 o1 g
  1482. LDA #PALETTE_UPDATE_INTERVAL
    ( S* q8 l7 h- Y+ [# V
  1483. STA Palette_Wait_Cnt: Y* ?3 U( y; m: E$ @$ |) s+ t
  1484. Update_Palette_Data_Check_Over
    2 q& Q4 a' a7 G2 E; C; m
  1485. DEC Palette_Wait_Cnt1 E4 G$ Z2 I% |9 l  L# I& r4 W
  1486. BNE Update_Palette_Data_End2 l& v7 i6 l$ Q1 c2 _

  1487. % k: P: V5 ]6 D, l3 v
  1488. LDA <Text_Disable_Flag
    8 C( R+ K- M* w9 V6 W8 \
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ! N0 T# r5 o! \
  1490. STA Text_Disable_Flag& [9 b) L/ q, v0 I2 a: c
  1491. INC Palette_Update_Flag
    9 \- u  t* D. h( J* h
  1492. . o: @6 u+ T: o7 K4 b
  1493. LDA #PALETTE_UPDATE_INTERVAL( S7 T7 j$ P" r' j
  1494. STA Palette_Wait_Cnt
    1 r- F) \. u5 x( C

  1495. / F) K0 K1 I. B% ^' Y3 R/ ^
  1496. LDA Bkg_Palette_Update_Addr
      j6 i  z# A) N) w7 Z3 N* T
  1497. CMP #PALETTE_UPDATE_MAX' v! W2 u8 T+ b
  1498. BNE Update_Bkg_Palette_Data_Set1 B' @2 c/ q4 \) K, C
  1499. LDA #PALETTE_UPDATE_MIN - 1
    & v' s3 ?; m. H
  1500. STA Bkg_Palette_Update_Addr) @$ c7 U: H# i. D5 {0 B, D6 f. ~' W
  1501. Update_Bkg_Palette_Data_Set
    7 r3 B7 c. X) O+ e# r2 x& p
  1502. INC Bkg_Palette_Update_Addr5 o/ R; I3 o! ^% S% t% U4 m
  1503. / v; }% u4 I, j& i2 q% c' O4 I/ X
  1504. Update_Palette_Data_End1 S. k" M: N2 X) T2 Z- M3 r
  1505. RTS, g! i. e/ k8 Q% c

  1506. 9 ^; Y1 \5 {( C/ P7 G% C" B, p0 w
  1507. ;==============================
    - P& P6 v6 j3 h8 e/ Z
  1508. Show_Music_Text;显示静态文本" Q7 S; j5 g1 }9 J
  1509. LDX #$00
    # Z% X7 C  Q- t2 X& O
  1510. Show_Music_Text_Set: [# U$ ~4 D' i
  1511. LDA Static_Text_Data,X6 x* X  Z2 d) @7 N8 `; P1 y
  1512. STA <Data_L
    8 S$ a2 @$ y% I* N) a- H+ M+ F
  1513. INX
    3 V- ~' c) {3 f
  1514. LDA Static_Text_Data,X
    8 Q! \6 V7 E  b8 u+ o, c8 y6 ^# G
  1515. STA <Data_H
    8 b$ M, H  c  \1 c
  1516. INX+ f# \& r6 H+ r  n6 V( `/ ?0 b
  1517. LDY #$008 N8 d) S1 `% ]4 i! R: Y, U
  1518. LDA [Data_L],Y
    $ {1 y" ^6 X5 o) }( R) R% G
  1519. STA <Data_Cnt( M. U  ~8 `. e1 D8 Q# x8 N
  1520. DEX
    & H% W1 d. n3 t; H: u$ q
  1521. DEX  ^& ]* X( f9 J
  1522. LDA Static_Text_Pos,X
    9 j4 F) c% U/ w: G6 y( R" ?
  1523. STA PPU_ADDRESS5 |, y3 G- K# L6 f* I! m
  1524. INX( {% ^7 W7 p# k2 M" I3 o
  1525. LDA #$20, g3 v4 \8 {  h+ [' o
  1526. SEC
    8 D* Y9 M# O/ A, }% m, S
  1527. SBC <Data_Cnt% f4 z3 ]+ d  o0 r3 C: W
  1528. LSR A
    4 f7 g) H$ L6 B8 Y! s5 R
  1529. STA <Data_Buf
    8 i! L8 A/ u- k# u8 e
  1530. LDA Static_Text_Pos,X+ m  X" V9 m0 t: W0 w
  1531. AND #$E0& ]6 @* X& u1 \( [$ s+ [! [
  1532. CLC
    4 b' a, E, M( k
  1533. ADC <Data_Buf7 N/ b0 O! M8 B
  1534. STA PPU_ADDRESS) P# K% R( t" s1 N# S
  1535. INX
    7 U/ n! x3 y& U7 F* T
  1536. Show_Music_Text_Set_Write( O+ I$ W- B5 Q8 R* ]! C2 N- G
  1537. INY- ?# g9 h7 b0 U* z# l* h
  1538. LDA [Data_L],Y0 y& }/ M" D: S! l7 f
  1539. STA PPU_DATA0 j% _; P( ~. {; t% k
  1540. DEC <Data_Cnt
    . _  t' c! e. @% w( b
  1541. BNE Show_Music_Text_Set_Write
    " _1 ?2 b7 {/ Z3 ]
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos( _. x/ U# t- D0 G2 C
  1543. BCC Show_Music_Text_Set+ L$ Y. a% J* l1 L. V; U; Y
  1544. RTS# K* S9 B( E% s) Q4 ^# P

  1545. % `# w# v' o( M; C# p) B0 Y
  1546. ;==============================
    ) E; Y2 N' D! o) a+ }
  1547. .IF Track_Name_Pos;显示曲目信息1 Y' D7 D0 o( j7 ?! e& R- q# K
  1548. ; x! A' P. `  a
  1549. Clear_Track_Info4 @5 q5 B! r9 J0 Y  K2 i
  1550. PHA
    : h0 z, Y8 M. I1 a, B, }! a! G5 Z* k
  1551. LDX <Music_Item_Cur
    6 o" u5 e6 |0 Q
  1552. LDA Track_Name_Addr_Flag,X
    + e1 M0 q( ~/ o# {/ h4 ~
  1553. BEQ Clear_Track_Info_End_Ex4 r5 u& O9 |  n
  1554. PLA
    4 i3 o5 k0 [2 s; o% `8 s
  1555.   m: T* ~( ]; S" a: P
  1556. LDX PPU_Cur
    - G& `3 b% [  T# W3 C& r
  1557. PHA, d; l9 }& `; _. c& L
  1558. LDA #PPU_MODE_CNT_CLEAR
      K- I6 P6 {6 h; K9 J
  1559. STA PPU_Addr,X0 e# [5 a2 v0 Z  V8 T: ?, |
  1560. INX, b5 H, N6 J; T9 W2 D
  1561. PLA
    - R: z' e" U" ^4 b
  1562. JSR Show_Get_Track_Name_Center_Pos
    : x$ _, V1 B. J% ]* T9 ?/ x1 k
  1563. STX PPU_Cur
    1 Y. l1 f9 c: C9 g
  1564. Clear_Track_Info_End
    . f, k" d  \: _4 C, N' j
  1565. RTS
    ! F! u1 `5 _! {& t1 M
  1566. Clear_Track_Info_End_Ex1 |0 O2 B/ c1 }9 a, K9 E
  1567. PLA
    0 a. v" n; _5 X5 m8 Z1 w
  1568. RTS
    3 n$ h5 j, b$ {; D3 B) }, t' S

  1569. 6 g! b* j1 G+ Y+ x% N) c- A; f: ~
  1570. Write_Track_Info
    ! z7 a- [# _. I& R3 T
  1571. PHA
    ( h' R, p8 F9 |5 r2 B
  1572. LDX <Music_Item_Cur
    % E5 x8 ]1 U8 f5 U% ]& z
  1573. LDA Track_Name_Addr_Flag,X
      P/ o- c8 Y7 |4 Y
  1574. BEQ Write_Track_Info_End_Ex3 w+ J* V/ |: Q. Y
  1575. PLA
      O. m' n* a. |% c

  1576. # ]7 \* a5 Z; j
  1577. PHA
    : F5 {  S0 J: [: m5 \: P
  1578. LDX PPU_Cur
    / E- d# Z; H) @% ~6 q2 W
  1579. LDA #PPU_MODE_CNT_LINE5 J& S$ s6 v4 m$ ]5 q( M! |# Z
  1580. STA PPU_Addr,X
    1 N5 s6 S/ G3 _1 |+ `
  1581. INX! @5 _6 Y  ^. o) V: M, x3 m9 G
  1582. PLA: x- v! N' W  G( z
  1583. JSR Show_Get_Track_Name_Center_Pos
    : @6 x8 q% b$ w; R. A, a
  1584. Write_Track_Info_Data
      A: n0 [2 A) h5 f. e
  1585. INY+ v2 \& w" l: |- b1 B
  1586. LDA [Data_L],Y+ |6 f8 a& ?& S' {. z8 L0 W: x
  1587. STA PPU_Addr,X& e- V8 `7 o) V* M. y" J) M5 V
  1588. INX! D/ V# _) l3 e  l4 ^4 W
  1589. DEC <Data_Cnt' s3 K( @! I  V' }
  1590. BNE Write_Track_Info_Data* H9 d$ h2 b+ z) I4 A% x7 y8 h
  1591. STX PPU_Cur
    - L; C& ]- U* W3 R* g2 I5 v* J
  1592. Write_Track_Info_End
    + Q/ n+ f8 N2 Q' @% c2 {: y) c' H6 S, Z
  1593. RTS
    ' a( B- X4 q* H  @8 h: ~: T  N
  1594. Write_Track_Info_End_Ex
    ) N7 U- P( ?! Z) P' G) E/ s* K, }
  1595. PLA0 P0 k1 a$ m; z$ T5 p# i. o
  1596. RTS
    $ }$ k5 q/ s4 z6 B

  1597. - J' E/ `5 I, Q# R9 M
  1598. Show_Track_Info
    ' Q7 M, |6 m3 p5 @8 ]( n- v
  1599. Show_Track_Info_Clear
    " U- T: ~. o4 |' m! O
  1600. LDA <Music_Last
    2 B4 d2 H( L8 p1 i  N; w1 |: K1 a; a

  1601. 7 q8 ~% S2 Y- @+ `
  1602. JSR Clear_Track_Info1 L0 s) G; Y6 o# U( g" d
  1603. ) R7 Q) L8 ^' Z1 c  V( l* L; F
  1604. LDX <Music_Item_Cur
    ' E8 B/ ^2 N+ R# s
  1605. LDA <Music_Cur,X6 w( E. o* ?( q. X# d1 {4 y: G1 y
  1606. JSR Write_Track_Info
    0 G+ l& h. _0 L$ h* l
  1607. RTS2 `/ {+ J7 _8 l' c# e

  1608.   [" b; ]$ V0 A. o, A- |: d
  1609. ;==============================
    " z/ M2 {8 m+ U/ o; m$ T4 h# f
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    % g, Z, ]9 H5 ^4 x3 \$ N

  1611. % o4 g0 U" ]  X
  1612. ;取出集合名索引  i" t3 w; b7 \2 J2 ]" I
  1613. PHA
    4 }: E% N" y0 W$ H5 `1 c) f
  1614. ! u) F& X2 c) _
  1615. LDA <Music_Item_Cur! w& B4 }3 W# v, |" ?
  1616. ASL A) R  o0 h& W2 M# v$ k
  1617. TAY
    / n0 [" o, i8 W1 z
  1618. LDA Track_Name_Addr_Port,Y5 h' T) }: z: n* u( @" Z% M9 ?; e1 u
  1619. PHA! s4 }* k' j# j% C7 H1 ]
  1620. INY
    5 C3 T- T8 U$ `$ O. i: V" c
  1621. LDA Track_Name_Addr_Port,Y0 ?* \- Z0 d# I1 O- W0 ]- [7 q
  1622. STA <Data_H
    ( o9 g5 Q$ j, m- v
  1623. PLA  S. ?! X2 I; g2 t- K  D
  1624. STA <Data_L
    5 J* V' y# B8 C0 {

  1625. / l# a2 Z. Q) D" s
  1626. PLA
    ; n1 O9 u8 C& u; ~
  1627. ) ^" I. O/ b5 T
  1628. ASL A3 T, a6 a6 n3 d% L/ @* z
  1629. TAY7 N. J3 R+ u. ?7 W
  1630. LDA [Data_L],Y9 R8 O0 l" A0 O' X
  1631. PHA
    ' D+ s5 _- U2 M# y$ Y# q: p- N$ S7 S
  1632. INY
    ' i  J) ^  g* W3 ~# N! d* G
  1633. LDA [Data_L],Y* s2 r+ C4 s) \/ g" O
  1634. STA Data_H
      P  P4 W% k" ]& A! p3 L! \
  1635. PLA
    % S6 U  |6 U; D# n2 l( D( m
  1636. STA Data_L
    : j- X6 V. D9 S
  1637. 9 r- o  o' C' w( i: j3 k" ?
  1638. LDY #$00
    , v& Y2 x3 ~6 i9 X( c: L- E
  1639. LDA [Data_L],Y! y. J; |( I! b4 }+ k
  1640. STA <Data_Cnt* K2 |5 Q, R) ]- j! v4 j
  1641. LDA #$20! I) J7 h9 Y6 K7 x1 t
  1642. SEC
    ) G3 ?( M4 B9 M4 Z" l' s" q
  1643. SBC <Data_Cnt
    , w7 z! }$ q  V2 n5 Y
  1644. LSR A) ?4 K* o$ f+ }. f( s+ x: Z
  1645. STA <Data_Buf
    4 Q1 {5 ?- N- a9 [/ A0 V
  1646. LDA #HIGH(Track_Name_Pos)# I) h5 T. e: _& B2 @+ s  p
  1647. STA PPU_Addr,X
    - k* R) X$ f, L
  1648. INX
    8 b4 m; |9 |9 e" m0 f- F: q) ~% e
  1649. LDA #LOW(Track_Name_Pos)
    8 D! B* c, J# f; w# w! ?2 j
  1650. AND #$E0
    / P2 f' Z- C+ N8 ~6 K1 i. P
  1651. CLC. s9 ]0 z# F. S: k  y
  1652. ADC <Data_Buf0 i1 d+ W" p- X: u
  1653. STA PPU_Addr,X( [4 e1 u8 v- E8 J7 X
  1654. INX; ^, {. L/ q1 H' h
  1655. LDA <Data_Cnt
    6 x+ h, @5 N9 ?9 L! m
  1656. STA PPU_Addr,X0 k, [6 o  ?% Y# \) X/ V
  1657. INX
    8 F+ N9 R! w6 }: ~) x* ~% F$ Z% ?
  1658. Show_Get_Pos_Center_End4 S  L' R4 s  t4 w6 ]# y! m: ]
  1659. RTS- c& [. ~) g* P; f; f9 F7 P+ R
  1660. .ENDIF+ }* P9 N* R* R

  1661. " |7 A& g; F* j
  1662. ;==============================1 S0 {' y6 @" J* g% U3 m+ v
  1663. ;音乐端口清除
    & W7 ?# f0 f8 }; L- a# J1 A) w
  1664. Sound_Data_Clear0 e3 d( ~; c, O" o0 A7 r. H
  1665. JSR Sound_Port_Clear4 F0 g" p: ?) c- u8 P* r
  1666. JSR Sound_Ram_Clear
    , ^" K- d( w+ K% T4 \+ w
  1667. RTS
    5 h8 z( B3 W5 r$ L

  1668. # R- d2 ^  @, p( g9 C
  1669. ;==============================& F8 c* _; P  m
  1670. ;音乐端口清除+ ~1 Q' s1 n# o2 W  E# o
  1671. Sound_Port_Clear
    & _; l( o- X$ p( F5 X4 w
  1672. LDA #$00
    + u8 r+ T, J2 o, k; m7 f# d' B
  1673. STA APU_STATUS2 o+ p. X0 z5 z* S
  1674. LDX #$00. \7 B# j% k, m/ [. t7 ^+ l- P2 i
  1675. Sound_Port_Clear_Write
    ' ?2 h4 R1 e# h# B0 X5 p" ]
  1676. STA $4000,X
    ; t3 I. }, r7 M# p
  1677. INX7 P# I+ M% ^; a# K' Z( X3 f
  1678. CPX #$14
    7 n" i/ e' z3 _1 u6 i0 p' B
  1679. BCC Sound_Port_Clear_Write8 s) u& ?& Q& E; F# }
  1680. RTS% e- \1 J8 W3 o7 {+ r6 s2 n

  1681. ! b( m0 }" i* r! o; f: `. t, {+ t
  1682. ;==============================8 ~( e5 F/ P& \) x
  1683. Sound_Ram_Clear;RAM清除
    & i1 k% O+ G  G0 |. f* o) f' `
  1684. LDX #$00* Q. v, q- v& l- V  b
  1685. LDA #$009 O" d( s% m& z  a# e
  1686. Sound_Ram_Clear_1
    # `7 Q  y2 v% V! B) D, n" {4 t
  1687. STA Sound_Ram_Addr_1,X* r; s- y5 v$ i9 p
  1688. INX
    ) o" n7 ~6 v& _! W
  1689. CPX #Sound_Ram_Addr_1_Size
    ; |/ ^% `3 N; q  l1 _
  1690. BNE Sound_Ram_Clear_1( R3 u1 C8 V- k% s' ?. d
  1691. LDX #$003 k2 g# B7 p; N- S6 y
  1692. Sound_Ram_Clear_2
    $ \: b. k3 e% A
  1693. STA Sound_Ram_Addr_2,X9 S+ d; F' `% \8 z: e
  1694. INX
    5 \9 |" r" v7 e  [
  1695. CPX #Sound_Ram_Addr_2_Size
    * k& |0 L+ ^. t2 B4 ?
  1696. BNE Sound_Ram_Clear_2
    * n: {' s+ `9 i; c: Q
  1697. LDX #$00$ ]9 ?2 p4 E/ I9 z1 d5 J- b
  1698. Sound_Ram_Clear_3
    6 U" x6 |- H* F* I0 L" l
  1699. STA Sound_Ram_Addr_3,X3 p* j% Z$ ~5 W4 @' d9 `  V
  1700. INX
    ) K  o9 n( `* \3 @
  1701. CPX #Sound_Ram_Addr_3_Size
    5 n; d& y5 c0 E* e+ V4 x" \* W
  1702. BNE Sound_Ram_Clear_36 o1 C2 G6 ]$ R- o# _
  1703. LDX #$00
    7 D% b! k$ `9 C' F; [
  1704. Sound_Ram_Clear_4# U9 ^: d; R2 l' \. @
  1705. STA Sound_Ram_Addr_4,X
    5 h/ X+ k+ n6 z0 i! C
  1706. INX! A% Z, x* p' N0 Z, P
  1707. CPX #Sound_Ram_Addr_4_Size
    ' R; u4 E' o, ^3 b& ?7 M
  1708. BNE Sound_Ram_Clear_4
    ; {! n: P/ Q; g: k6 M" e
  1709. Sound_Ram_Clear_5
    ! Y- v) g& |1 Q9 q4 D9 [" {3 b& z
  1710. STA Sound_Ram_Addr_5,X) Z8 }9 V4 [! @' g
  1711. INX
    & [; g" d4 P9 b3 Q; a" x9 D5 z
  1712. CPX #Sound_Ram_Addr_5_Size
    2 y4 }( b; d" W/ x1 U2 n/ \
  1713. BNE Sound_Ram_Clear_51 M- j! w& g6 [$ l9 w& V% Z5 Z& Q
  1714. RTS( e! B3 A- r# }8 d/ a' W- H
  1715. 4 h3 C; h" d* x( y6 ^% u, t5 ]
  1716. Get_Music_Collection_Name4 R" E# M# X+ K7 _! [  e) c
  1717. PHA
    4 Q4 L+ I) Q3 e4 g; h' V' E1 A. p
  1718. LDA <Music_Item_Cur9 i2 E6 O  Q/ }0 l
  1719. ASL A
    3 @4 a$ d0 W# U9 d, a/ P
  1720. TAY* u/ f4 J( g1 h, b- V: A
  1721. LDA Music_Collection_Name,Y& b+ W1 r  l. V9 B5 S9 P$ G2 m
  1722. STA <Data_L1 E$ O: G1 q, o9 s  j( D: U! O( e! @
  1723. INY' c0 f2 W2 v' j' t1 h
  1724. LDA Music_Collection_Name,Y8 b" a9 W! }: _* I8 S: K
  1725. STA <Data_H
    . d; O* V! E" q" e
  1726. PLA
    9 B8 R$ _1 w7 }8 J
  1727. RTS- o5 x0 i! [( g7 @# A7 r$ M0 E
  1728. $ Q" _' J( G: ~" [
  1729. Set_Sound_Total
    ; e8 {4 I- T8 V$ z6 h4 i
  1730. LDY <Music_Item_Cur; k: ^  u1 D6 P9 t( F; j9 N  d
  1731. LDA Sound_Total_Port,Y' z: u) S! M2 M+ i. M: I9 c
  1732. SEC) _& h+ D& n. R3 z
  1733. SBC #$01( P! U. o- O! H7 y! ^5 q/ Z( @6 H
  1734. STA <Music_Total( P( v* p8 L4 D3 B& v) w$ ^
  1735. RTS
    ) E- e6 G) Z( M8 d

  1736. ; c& t! w/ a: |, C5 m- j1 f
  1737. Get_Sound_Start
    - ]. e/ i* D6 e' _& k
  1738. LDY <Music_Item_Cur) w* Y1 P. {# P' c/ L0 @
  1739. LDA Sound_Start_Port,Y' ~8 I4 E2 s) b' u
  1740. RTS* u: T6 F7 H5 l6 F6 z; m2 C. m; V  _

  1741. % E( V! Q% ]  }# I/ l, V( `
  1742. Set_Sound_Init_Port
    - s, l  c" X% i/ |
  1743. PHA! }4 L& S* q5 ]( d
  1744. LDA #$201 M; |0 |% \; R0 G$ W# y
  1745. STA <JSR_Addr_Op0 N/ r. k" b3 t) S
  1746. LDA <Music_Item_Cur6 z+ B$ a4 n3 ]
  1747. ASL A' Y/ h  @# C& L9 w6 l7 _5 j
  1748. TAY- |8 `. n  @- z5 h+ E
  1749. LDA Sound_Init_Port,Y
    ) W6 y, G0 c6 q* S' B8 f
  1750. STA <JSR_Addr_L
    * I# z: b& {+ J1 }, w
  1751. INY7 S, x  A  ^6 X3 i" j8 B
  1752. LDA Sound_Init_Port,Y
    0 p* R# @& w! ?0 X. \
  1753. STA <JSR_Addr_H+ h- Z6 R. F" L( |5 g. I
  1754. LDA #$60
    9 c( a( E5 d$ P# B' G- k. b" F7 b
  1755. STA <JSR_Addr_Rts+ ~' Q, A3 l7 U1 ?4 D
  1756. PLA
    ( D" ]( F5 F$ `; q
  1757. RTS
    % d: R( _1 t1 g% G; z
  1758. 3 _: q- ?1 _7 c+ z
  1759. Set_Sound_Play_Port) t  w5 H, v) I- T
  1760. PHA
    . A# F  A6 D6 W" n. [" E
  1761. LDA #$20
    3 B  h5 q+ A4 Z  O, a
  1762. STA <JSR_Addr_Op# E: [8 m2 y* [# b" I
  1763. LDA <Music_Item_Cur
    % Y( U' @6 G4 c* ]
  1764. ASL A4 ?2 f: T2 c( [4 A
  1765. TAY
    ; W/ U, r/ G! n9 r  f
  1766. LDA Sound_Play_Port,Y
    ; B- i( o0 s+ U9 q0 {, V
  1767. STA <JSR_Addr_L
    8 e5 m0 K1 _8 n% T' @2 Y
  1768. INY
    . J, k9 A) v) _2 M7 E1 `6 N: @
  1769. LDA Sound_Play_Port,Y: Q1 E* r8 Q) d$ o/ Z7 ^- J) Z
  1770. STA <JSR_Addr_H
    0 f! r( O* V, j7 F$ l
  1771. LDA #$60
    ' p. d2 x; \! w2 E
  1772. STA <JSR_Addr_Rts5 W  K: }- @# u
  1773. PLA
    : x& b0 u. R& |/ z9 C7 I1 y# [
  1774. RTS1 k! {) G: g5 t* P* k  S0 ~

  1775. 4 t. I- ?/ Q+ H9 w* s% {( G/ V
  1776. Set_Sound_Reset_Port
      S9 ~- c7 `' K' N: Z
  1777. PHA
      ~4 a3 d0 I! c  E* H! f# C
  1778. LDA #$209 ]5 f1 }" K4 a- N! W" g3 U
  1779. STA <JSR_Addr_Op) o" e0 d# p& _) U6 A: Z
  1780. LDA <Music_Item_Cur1 ~/ M0 W9 p$ K1 x
  1781. ASL A& h$ |; B& A& s& P4 ^7 h" t0 D9 Q
  1782. TAY
    ) L' [9 ^" B) i
  1783. LDA Sound_Reset_Port,Y! a- y+ c, N0 X: ?* T
  1784. STA <JSR_Addr_L
    4 b: e) T- Y  c  i& {
  1785. INY5 Z% S6 a! Y0 n; S$ x$ h0 o0 I
  1786. LDA Sound_Reset_Port,Y
    ; L/ h  B' c; u7 K- r
  1787. STA <JSR_Addr_H
    " e; l# ?4 q/ L3 g( d4 p
  1788. LDA #$60
    ( I, s; n0 j1 |$ X! N# o  E* l6 o" d
  1789. STA <JSR_Addr_Rts% _5 P& P; v+ ?. c7 I* g7 F
  1790. PLA( {/ m. L" {9 v
  1791. RTS
    - V! g/ P# M, F; I$ _6 x0 x: \' T
  1792. 2 O' H3 N$ w. Z
  1793. ;初始化音乐bank6 `% J) H3 W2 u
  1794. Init_Sound_Bank
    : q9 D4 i/ g( E# d6 L: d3 S
  1795. LDY <Music_Item_Cur+ L9 R. H/ n/ h
  1796. LDA Sound_Bank_8000,Y, j- u8 F% {, R& Z) s/ r
  1797. STA <Music_Bank_8000
    ( I* p8 ~" p1 Y2 X% L; L. n, H  K
  1798. LDY <Music_Item_Cur
    $ ?. f! l- O+ T& j2 I- R
  1799. LDA Sound_Bank_A000,Y
    $ }4 g! X  E6 r5 D* [, j( X
  1800. STA <Music_Bank_A000
    ! y" e" i2 S* M& ]
  1801. RTS' D- w: T( u2 G9 k' T* X

  1802. 3 s& E" l% k9 w
  1803. ;==================================================
    # V2 q( U1 A- M
  1804. Sound_State_Reset;音乐状态重置
    , x( `5 G* V; x& b& n
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    - W( Q- i; p1 _8 z- q6 s' U
  1806. JSR Time_ReSet             ;重置播放时间$ i/ o/ J* {/ s8 A
  1807. * u; k  U  y9 e3 l0 S& V
  1808. LDA #$00$ J$ h& k& [0 ]
  1809. STA <Music_Stop_State
    ( g. j5 Y' G6 I0 X; Z* g
  1810. JSR Music_State_Show       ;显示播放状态( @; a$ q) u/ b8 F- B. H" Y& [' i

  1811. 1 U0 B* v, k) G% c! Y+ C* H
  1812. .IF Track_Name_Pos) C. ~* W( u& m* M. u* t8 Q; U
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    , J3 q# m  o: V
  1814. .ENDIF" t3 A2 o5 P8 a& E6 t$ n
  1815. ' j/ p: g, ^3 b9 _( \6 Q& A
  1816. RTS* e! D5 R6 a- G4 [

  1817. 1 n( w5 n; l* i0 u0 }1 F
  1818. ;==================================================7 Z5 {7 B! k. |) z
  1819. Sound_Init_Proc;音乐初始化处理
    2 v( ]* U; L( A" i
  1820. PHA
    , n. P# J: M" @
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址& M( q! {/ t0 k8 F0 c! R5 }8 j
  1822. LDA #$00# ^( X' ~  {5 {" |
  1823. STA <Scroll_H               ;重设水平滚动' W' o0 R6 d; h4 f8 v& z* i
  1824. LDA #$0F
    - @' @/ U6 A8 c2 c9 f' G* Q3 C
  1825. STA APU_STATUS7 c% b. I3 [5 L9 \6 d
  1826. PLA: w  X: J3 u. D$ L0 q+ l$ D: a1 X& Y
  1827. JSR Sound_Init             ;音乐初始化
    * f: k; a$ W# V; L* b
  1828. JSR Sound_State_Reset      ;重置音乐播放状态9 S8 ~3 m# \2 n3 P  R) h+ S6 r
  1829. RTS/ e) n8 l4 b+ w! C! w! r5 t& U1 P
  1830. . B& l  G* v2 {8 h+ s2 @4 M2 H! \
  1831. ;==================================================  K6 V, w  d' B
  1832. Sound_Play_Proc;音乐播放处理
    ; p* q( X2 D2 Z  l5 N* I2 S. ?/ S
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    $ K7 y7 O2 I8 s" M* K7 L1 m
  1834. JSR Sound_Play             ;音乐播放# O; X( D5 q. \; T3 ]1 Q, z/ P
  1835. RTS
    . Y5 l- C: t! J$ n- y" r3 ?2 o

  1836. , i8 m. q/ \+ r  @
  1837. ;==================================================
    3 s. B& r  f, z) u5 N, Q
  1838. Sound_Reset_Proc;音乐重置处理$ p/ g* `& r& X" t1 L5 S& X5 U) U
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    2 r: {3 l# {  `' Z  A% w0 j2 z
  1840. LDA <JSR_Addr_L6 u0 S6 o5 `* f+ Q& Z7 I$ i
  1841. ORA <JSR_Addr_H
    : [( H* q/ }. J. @# Z+ n8 C5 K
  1842. BEQ Sound_Reset_Proc_Default) X$ `, Q; E( z$ V
  1843. JSR Sound_Reset            ;执行音乐重置# f8 f% {, Y! E$ E" P
  1844. JMP Sound_Reset_Proc_Init_Sound
    1 ~/ i$ H  N& B  L9 W' U- r  \8 a

  1845. 5 f$ B( K6 Q* Q3 e- O2 S; Z( p
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理+ b  {$ K8 s: i7 K5 a) d

  1847. ' b. F8 {2 `1 p
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断$ g8 ^6 C$ I0 s6 M+ `0 y) }
  1849. LDA #$00/ @! B3 c9 k; C
  1850. STA PPU_CTRL
    8 ~! p( [. _2 B- V

  1851. 5 t  c$ B3 ^8 U' t7 S! G9 J
  1852. JSR Sound_Data_Clear4 Z# ?% r0 [- ^9 R: o- R2 C: k

  1853. 8 H5 P* F5 K8 T% [
  1854. Sound_Reset_Proc_Default_Wait1 q6 h3 }4 Q5 N& H/ ]% z7 ~3 {
  1855. LDA PPU_STATUS
    & Q. t" X; u' Y5 Y8 R$ u7 V
  1856. BPL Sound_Reset_Proc_Default_Wait/ d+ o) G9 e$ t

  1857. 4 L  B) s4 H. \9 Q
  1858. LDA #$00; y- s4 g( M, e( B% i  U- H
  1859. STA PPU_ADDRESS
    , \3 X; b1 r3 C5 ^2 }& d% Q4 c
  1860. STA PPU_ADDRESS
    ; U' F# F$ m/ v, Y
  1861. STA PPU_SCROLL- ~% \0 b0 T/ b, s7 W' X6 r
  1862. STA PPU_SCROLL0 a5 j4 J5 B2 H- v6 D% A, j

  1863. , \& ~2 G% r) H  n" G
  1864. ;恢复PPU控制
    2 y  E; D2 D6 J1 \: B
  1865. LDA Screen_Ctrl
    5 l8 i( L( D) N; h# v0 O8 s+ o. [
  1866. STA PPU_CTRL
    $ U1 i1 Q1 K! O, m$ }
  1867. 1 X) \7 ^, T2 R: C
  1868. Sound_Reset_Proc_Init_Sound
    " ?' z; _, L. _& X1 s! O
  1869. LDA <Music_Stop_State  ?# ?( N+ ~+ F, |. o$ k. G7 g
  1870. BNE Sound_Reset_Proc_End" k7 i; N# Y5 z: n/ t  N
  1871. LDX <Music_Item_Cur
    # c2 l' w$ e% U5 |6 g
  1872. LDA <Music_Cur,X
    $ J6 x8 @& S- P" g) B- t# n  j9 w
  1873. JSR Sound_Init_Proc5 }  k3 y0 K9 ?  L) ~
  1874. Sound_Reset_Proc_End
    6 I, y3 h( c( U
  1875. RTS  ?! o( g5 S) ^$ f
  1876. ' R9 H/ l; h. l' J9 m
  1877. ;==================================================. I1 p+ I" T+ e) \0 G/ t3 J
  1878. Clear_Item_Text;清除页项目
    ! R  Q* R1 \2 ^
  1879. LDX PPU_Cur) Q5 _, ?' W  y" G8 c
  1880. LDA #PPU_MODE_CNT_CLEAR1 s+ |. x2 F1 |9 ?" c% G& C3 z$ j
  1881. STA PPU_Addr,X
    - V( t! j$ b6 B1 Z
  1882. INX
    % p" ]: v" Z* k3 K3 G

  1883. 5 F$ a, y- ~* R1 `7 L! K* B
  1884. LDA <Page_Last+ i/ g! k6 o. }9 Z6 {" X
  1885. SEC
    1 w( H+ ^! X4 \, G( T2 D
  1886. SBC <Page_Last_Index
    ' N1 m, f& c. _( O; l/ i
  1887. ASL A* `6 K. V# @  x" V$ U

  1888. ; U  y9 }1 y4 i
  1889. TAY
    2 b% q# ^& P( E2 A
  1890. LDA Item_Pos_Data,Y
    ( o& e" I( d% D6 b# B! w8 f) m) t  F
  1891. PHA+ y  r- q/ x& G4 |' g  @
  1892. INY3 ^% L) e" w# }
  1893. LDA Item_Pos_Data,Y) \! X6 m0 w. v) u+ P
  1894. STA PPU_Addr,X+ b) X9 Y% {% K+ D* \' w2 _
  1895. INX0 K. y: B0 ]( [! H  S+ y
  1896. PLA: e+ C2 C7 k) P( e: x
  1897. STA PPU_Addr,X. ]: _. \7 b( ]
  1898. INX" y' A. S' u/ B$ f0 Y8 N
  1899. / r. a! n  F3 a# b! j- S& A
  1900. LDA <Page_Last! `; d- O9 M) E. X0 g2 s7 n+ c; f
  1901. ASL A
    " @+ y  x: S% ?# T" m
  1902. TAY! c9 Z7 f' k& o+ n( Y: n
  1903. LDA Music_Collection_Name,Y0 x- D2 n3 J( O& b  D1 L! j2 i
  1904. STA <Data_L0 U" R" K4 Z2 Q/ L
  1905. INY
    ( K2 j( o4 @: U% |/ X1 N
  1906. LDA Music_Collection_Name,Y4 r7 c4 ^2 q2 R8 C0 \
  1907. STA <Data_H- a0 q( l8 M* w. l2 @/ j

  1908. 0 F4 K4 L; c, B! d* m5 W) ]
  1909. LDY #$002 a7 j0 N9 f3 F) x; b1 B+ j
  1910. LDA [Data_L],Y
    ) u) V6 u. V* k: I" h
  1911. STA PPU_Addr,X
    0 m2 S' B, H- [0 b
  1912. INX+ f. u6 f, k  v( K5 t: i
  1913. Clear_Item_Text_End  Q  i( @' z& G9 K: s5 Y
  1914. STX PPU_Cur; ~$ [7 o% w; d$ v% X5 |% ]7 A
  1915. RTS
    * X6 p/ S/ q/ T1 h

  1916. ' D' C% P$ }) Q: v
  1917. ;==================================================
    - W* l% M8 x! C* y6 h6 _% a
  1918. Show_Item_Text;显示页项目
    # h3 Y3 z1 N$ i5 e1 j% w6 q0 T
  1919. LDX PPU_Cur
    2 {9 |) I, v0 ?$ x- v" W+ I/ `
  1920. LDA #PPU_MODE_CNT_LINE
    5 X5 s" ^: r9 k" Q' z4 o* A
  1921. STA PPU_Addr,X( h: _" |& a" H& C
  1922. INX
    & n7 n0 |4 i5 {: u8 D, G9 W
  1923. LDA Page_Cur
      u. ^9 W" w8 Q5 ]- }, L0 S
  1924. SEC% K& m: P7 M  ?( X, A
  1925. SBC <Page_Cur_Index7 p$ L! A- K" ?4 |
  1926. ASL A
    / N) j$ H0 T9 s6 {
  1927. TAY' a% _! r2 l) ^
  1928. LDA Item_Pos_Data,Y
    & N/ U% h5 c5 u
  1929. PHA
    * e. J. T+ {+ I7 z
  1930. INY
    ( P6 g' z6 z$ I( i) x" B
  1931. LDA Item_Pos_Data,Y
    1 M. b) m0 I. f- v
  1932. STA PPU_Addr,X
    ) q4 [7 o/ M: I' y3 w" z7 [9 r2 G
  1933. INX
    5 s0 Y3 d+ T" h! ]
  1934. PLA
    . _7 L. O2 K- m
  1935. STA PPU_Addr,X8 L; F% I6 i' K) `" x, b
  1936. INX9 o. g0 ?# o  s* K/ |, T
  1937. " ]+ Q, z! ~& T$ c1 j$ k
  1938. LDA Page_Cur
      u- }" H/ s! I  W& L& w+ U( z
  1939. ASL A
    ! V9 ^+ z" z! l4 R8 l8 E" m$ ?
  1940. TAY( m/ @! g& t% T/ i: H9 q' x; Z  K6 J
  1941. LDA Music_Collection_Name,Y% s: C2 t$ B/ g2 i
  1942. STA <Data_L, W" b+ p5 I( E3 z
  1943. INY
    0 S. M+ r( P+ R
  1944. LDA Music_Collection_Name,Y! |0 y& v9 S1 e+ L0 a! d! {
  1945. STA <Data_H
    . q# t  s, |! W4 y% P
  1946. - |; {6 Z! i6 U5 ?
  1947. LDY #$00: v! ]3 ]2 f7 _
  1948. LDA [Data_L],Y
    + ]: K4 t$ F1 `: [
  1949. STA PPU_Addr,X$ X* q! z* k: G% B2 M  ?1 [$ ]! f
  1950. STA Data_Cnt
    ) v  ~% I* b$ g1 c0 `7 K
  1951. INX
    2 o9 e$ M8 K5 o. e3 d% ]3 ]$ p# F5 w5 Z
  1952. % T3 r, ^$ y. a( f2 A1 E! D, ~9 [
  1953. INY; w/ h+ a; Y; w+ [" {4 s0 `
  1954. Show_Item_Text_Write
    7 ]2 _, M5 Q, c( O
  1955. LDA [Data_L],Y
    & S) B, h- Y9 R5 q2 F" G* y
  1956. STA PPU_Addr,X
    9 Y" `  B6 h4 ~+ Z
  1957. INY
    7 Q, k" V' m( |' ]: w5 p& n
  1958. INX( @% ]$ p: Q) @6 t# k# g( X
  1959. DEC Data_Cnt+ Y* O( Q, g! b  T
  1960. BNE Show_Item_Text_Write
    2 B* V; a9 G/ ]' Z' x4 |
  1961. 4 ]; _+ C8 `8 Y  V+ L- H% z" L4 W! D
  1962. Show_Item_Text_End
    - Z$ N0 A; _  I$ h
  1963. STX PPU_Cur5 E% G( [# T8 A9 w
  1964. RTS
    6 ^2 S+ D$ A7 z. A7 N+ P, ~: }

  1965. $ r# J: e; e+ g2 u6 T
  1966. ;==================================================
    5 [. l) l! T& f+ c7 F
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量0 S# K1 _' J0 f" P2 ~
  1968. STA <Data_Buf/ @' O) ?) w4 g# [5 B( o
  1969. LDA #$00
    " n1 ~/ G/ M' l! P) d- @
  1970. Get_Page_Index_Calc
    * ~0 l' J  O( I5 K- J2 b7 m
  1971. CLC
    - ?( g* q) C/ n+ U( s& A, i
  1972. ADC #PAGE_SIZE' e$ C/ o4 Y- Y. r0 ]3 E8 g* k9 q
  1973. CMP <Data_Buf' Y/ D) }$ f/ k- B+ u9 T- ?# z
  1974. BCC Get_Page_Index_Calc
    " B  O" Z1 M% ^5 Y0 o# c/ E- [
  1975. BEQ Get_Page_Index_Calc_End
    / R+ g& s$ R" a) P: [  J
  1976. SEC* B4 f" a9 ^$ a3 H
  1977. SBC #PAGE_SIZE" w4 K1 \1 V( N0 }5 u# S- ]& E0 P2 N4 [
  1978. Get_Page_Index_Calc_End4 K2 B4 ]! K8 f2 p  L
  1979. STA <Data_Buf
    9 z5 G% o6 X* n: v0 d
  1980. Get_Page_Index_Cnt( ^! P, c0 P) z
  1981. LDA #PAGE_SIZE! N' d8 o8 Z" I3 f4 _( l
  1982. STA Data_Cnt
    ' x$ g" q: |$ }# Q8 s; R

  1983. & ?1 M: j4 s+ Y+ A  Y: s
  1984. LDA <Data_Buf+ B& x% z5 R( e' Y0 Z) M
  1985. CLC
    * m+ b- A; d$ J
  1986. ADC #PAGE_SIZE4 x' }8 w& u) B7 p
  1987. CMP #ITEM_MAX_SIZE
    ; s& U( x7 \1 U7 f
  1988. BCC Get_Page_Index_Cnt_End5 d8 [- B( z( X$ _

  1989. # h: w3 f' k6 J
  1990. LDA #ITEM_MAX_SIZE% B  G) i5 B0 T+ P4 k# v
  1991. SEC
    ( u$ I8 h5 j( ?
  1992. SBC <Data_Buf9 M1 b6 S5 n( B# Z" {9 g  t9 K+ @# N$ P
  1993. STA <Data_Cnt
    " o& d/ Y/ z* Z* ?5 ]

  1994. / E$ {& [2 H' F8 ^; g7 T" R
  1995. Get_Page_Index_Cnt_End
    % a" o; S( N! K. z! I* K, R" |( C
  1996. RTS8 @2 Q  z$ P+ k4 y) F, [

  1997. ; `8 |: k. L1 {: {- H
  1998. ;==================================================
      ~. T7 C0 h  n$ i
  1999. Get_Last_Page_Start_Index
    , P+ P/ \: o. W7 m' P1 a
  2000. LDA <Music_Item_Last
    ) \- m7 q; R. k4 a5 t$ y
  2001. JSR Get_Page_Start_Index( l- F9 W  L# N+ G6 O0 k/ z
  2002. LDA Data_Buf
    ' g4 \+ U+ O3 c2 p" j, C
  2003. STA Page_Last4 l% M9 g4 p9 M% o  R, h
  2004. STA Page_Last_Index  N/ L4 s2 p3 l$ ~8 v
  2005. LDA Data_Cnt0 u0 ?% ?/ ?5 S  b
  2006. STA Page_Last_Cnt1 T3 q' K, _) b8 D
  2007. RTS2 N9 F. ?% u3 u  S
  2008. # a5 |/ `: t1 ?
  2009. ;==================================================
    * Z4 o1 P+ ]) n$ G" s
  2010. Get_Cur_Page_Start_Index
    ( r9 L3 W5 u& j0 ], s
  2011. LDA <Music_Item_Cur( [, K( I7 j/ `6 [' K3 y
  2012. JSR Get_Page_Start_Index/ c5 N$ g: r% S# }. K( L" ~
  2013. LDA Data_Buf# S2 N/ B/ B5 j" i7 Z! R4 N8 f' N
  2014. STA Page_Cur8 w" d% j* c/ v1 M; V- S9 F
  2015. STA Page_Cur_Index) p4 s4 ]5 A6 V, z! ~
  2016. LDA Data_Cnt
    ( {5 R# U3 C! Q4 S
  2017. STA Page_Cur_Cnt
    6 ^4 S! N$ X$ [7 x2 Q3 ?
  2018. RTS  `: b* B* ^7 _5 r* q/ P
  2019. ; t0 p+ y; e$ E
  2020. ;==================================================
    : C/ \  |, q  {
  2021. Show_Page_Text;显示页文本0 U, k% Y5 t* ?7 G- ?3 S' N
  2022. LDA <Text_Disable_Flag+ o6 R( E( d, b8 F6 c; j$ @& F
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    & m3 g7 R" |, ]
  2024. STA <Text_Disable_Flag
    ) q+ a2 M$ G- t0 `: s
  2025.   H% d  s6 c2 `
  2026. JSR Get_Last_Page_Start_Index
    5 }5 Y/ Z' w# N/ k. H' n
  2027. JSR Get_Cur_Page_Start_Index. W# j2 H% i; M( q: B4 a
  2028. 6 F- J+ n  k6 p7 z" c& p
  2029. Show_Page_Text_Set/ J4 q& U$ }. i- C

  2030. 1 y+ D! ~) c* k3 w+ C
  2031. Clear_Page_Last_Item;清理上一页
    ( u- A) H  I3 i# E/ B9 G( G% e& C
  2032. LDA Page_Last_Cnt
    / \8 j# |. p1 j8 U- f
  2033. BEQ Clear_Page_Last_Item_End
    ' ]5 y; E& I5 b/ d
  2034. JSR Clear_Item_Text6 g8 F" d0 o% q# j1 [; v
  2035. INC Page_Last
    & z. b# R0 u+ ?$ K" p$ U# l
  2036. DEC Page_Last_Cnt+ \7 b* w5 q/ W7 D
  2037. Clear_Page_Last_Item_End# s: }' `+ {* @5 E( U2 _) B

  2038. , I* ~% P( C- v
  2039. Show_Page_Cur_Item;显示当前页
    $ O$ p8 c" U: o1 U% L( l' O
  2040. LDA Page_Cur_Cnt
    . H: B2 C8 ?/ W4 \5 t) z9 y) G
  2041. BEQ Show_Page_Cur_Item_End! a' w( }  v& y6 L+ @
  2042. JSR Show_Item_Text
    / O, C5 M" L& M2 U
  2043. INC Page_Cur
    ! w6 e' N1 ?" U( r' @, y4 R+ E" i
  2044. DEC Page_Cur_Cnt% K/ e4 K- X' p/ ^" f
  2045. Show_Page_Cur_Item_End
    8 e5 b* u# @( |7 }

  2046. 7 {0 o4 G* F  ?; T0 f6 v
  2047. INC <Time_Wait_Cnt
    3 D' E* c. V9 O0 ^9 v. i
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作; b4 S! l/ ^7 a0 X  e
  2049. LDA <Time_Wait_Cnt
    4 v6 i- U4 s# b7 ^
  2050. BNE Show_Page_Text_Set_Wait& m2 T5 A! ]3 o8 N

  2051. 8 a" @7 g) b- S- K6 f: j; x
  2052. LDA Page_Last_Cnt& r5 b0 U  y$ l, Y' B8 J
  2053. ORA Page_Cur_Cnt
    ( ?0 [! m% f# W: i
  2054. BNE Show_Page_Text_Set1 g. K% J, d$ [/ o" p, a( y3 `7 R. I
  2055. LDA <Text_Disable_Flag
    - m; R" d# V: R: N, A
  2056. AND #TEXT_DISABLE_ITEM ^ $FF5 A6 ^# M! h& K0 v' D! e6 ?
  2057. STA <Text_Disable_Flag
    ( Q6 h$ @/ Y+ D; ]
  2058. RTS4 z& I4 E& y& g9 u

  2059. 2 F& `5 k+ e3 _1 F) |- D# v
  2060. ;==================================================; c9 G  A1 s! W0 R& w6 a) t  A
  2061. Last_Item;上一项
    8 K' x9 `# {1 J8 ^
  2062. JSR Clear_Last_Track_Name
    ( U; R6 B+ V6 y. y/ J( W2 c2 c
  2063. JSR Disable_Text_Draw
    & p# V  _! H* B  z) G7 l/ ^

  2064. 0 q4 A' `* s8 U6 B
  2065. LDA <Music_Item_Cur
    7 V. K$ e+ ?& X; V# U
  2066. STA <Music_Item_Last
    - u/ G  y+ F, ~. X( X7 q

  2067. & f- e! i; a; }5 Q; x' I0 X" ^
  2068. JSR Get_Last_Page_Start_Index
    4 {2 W) D3 e: y. x+ W1 ^

  2069. 1 g/ [. f/ s% [2 W* T) h
  2070. LDA #$00
    ' S7 d# T5 }+ u2 ~
  2071. STA Data_Buf
    8 T. F+ y2 L$ r4 S* d$ A* s* Z9 P) N' d

  2072. + W2 a: l" \( D! B7 y8 R% G
  2073. LDA <Page_Last0 ]8 E9 R6 N7 ]/ h$ q8 U
  2074. CMP <Music_Item_Cur
    ) ~) \, }+ }3 |/ s: I! U1 G3 D7 U
  2075. BNE Last_Item_Begin  G. h$ |6 Z" w8 b/ v! M
  2076. 4 ^% R+ w/ t8 d5 T/ ^
  2077. LDA #$01) l- S8 F/ G) e0 T1 |) i4 _+ `3 R
  2078. STA Data_Buf7 @4 ]/ w5 v) \: d0 N8 O3 U
  2079. Last_Item_Begin4 F& [2 l/ e  h* ?# Q7 j
  2080. LDA <Music_Item_Cur9 ?" S  E1 r# f) n' a# L5 R
  2081. BNE Last_Item_Set, ~" B% h* J: W/ p) n$ W- Y
  2082. LDA #ITEM_MAX_INDEX + 1* a) D( \# _. ?! c, m- o) E3 O7 i
  2083. STA <Music_Item_Cur
    ! k& i5 j3 ?' Q( A  o& h  p0 L: K& l$ F

  2084. - x2 ]; A$ q. ]* F% I7 O0 }
  2085. Last_Item_Set, Q  u! m  C3 `* _# i6 F
  2086. DEC <Music_Item_Cur
    5 @' s' r* T$ _2 |3 G3 z$ Z3 i" f
  2087. LDA <Music_Item_Cur- f3 K7 \. w2 B" f
  2088. JSR Reset_Current_Music
    3 m. e% f7 V& ^  G2 _
  2089. 3 i/ B; @( C7 Q/ ^, u
  2090. Last_Item_Play" y2 k4 Y9 @+ W
  2091. LDA Data_Buf  }& _: G( v# O0 q" ~
  2092. BEQ Last_Item_End
    - h) s9 h% ?6 |; z$ I$ o
  2093. JSR Show_Page_Text1 v" X+ d- c/ F( {
  2094. Last_Item_End/ d0 Z3 U& `" T2 F% r+ b8 R, P
  2095. RTS
    * u/ E3 L) N1 X, s

  2096. 4 G0 \* E  d  V& r& J/ @
  2097. ;==================================================
    " q( ]  T' H  x0 d, n" r
  2098. Next_Item;下一项
    7 p, ~2 q$ i0 G# W
  2099. JSR Clear_Last_Track_Name
    3 X9 w8 W: `. V
  2100. JSR Disable_Text_Draw
    % \2 X4 D9 _1 K/ g: ^/ m9 t

  2101. ! p$ S; ~9 Y. F3 u! o, y; o$ h
  2102. LDA <Music_Item_Cur0 Q+ c: b+ P* N
  2103. STA <Music_Item_Last
    - b' `. R, g1 P+ s3 ], Z
  2104. 4 F, m  A4 o1 q4 J2 |- W4 ?
  2105. JSR Get_Last_Page_Start_Index/ }8 q" `2 Z  _0 c& @9 _4 g3 X3 j

  2106. " |' K$ U1 b: H3 C  Y
  2107. LDA #$00( }7 J0 \4 H% j1 n$ |0 {
  2108. STA Data_Buf6 j6 A* i- A" C
  2109. 3 p" T9 g; J" \2 u3 S$ O* r
  2110. LDA <Page_Last- K/ y1 s" E5 G4 J5 F
  2111. CLC
    4 ]; P$ u" F! D  F' j& G
  2112. ADC <Page_Last_Cnt7 q# i5 E4 t4 T$ p
  2113. SEC) P# Y! p; f5 [
  2114. SBC #$01" q1 h9 Y1 I3 ~
  2115. CMP <Music_Item_Cur. M) U, C- h2 O- y& F
  2116. BNE Next_Item_Begin  U/ m. o- z6 D6 O8 C! k. c
  2117. 8 E( k5 h6 X8 l9 D0 r; _3 a
  2118. LDA #$017 [/ [  g+ |' ]3 L2 `7 W
  2119. STA Data_Buf
    , E2 X3 d1 ^( c9 t) w, f
  2120. Next_Item_Begin7 G! o# c$ _/ l3 P, |1 e
  2121. LDA <Music_Item_Cur
    8 j8 S; |# w/ t4 d) [1 ?8 c
  2122. CMP #ITEM_MAX_INDEX
    $ L3 P/ V1 j6 X' s
  2123. BCC Next_Item_Set
    8 z; v3 g6 v  c( x" b3 J
  2124. LDA #$FF7 Y4 R6 r" B& t5 @
  2125. STA <Music_Item_Cur. h6 p& P/ U( K. W2 s, P* H4 j# M
  2126. Next_Item_Set
    1 I7 C, C* ^% ]. ], f" ~% l' j7 `
  2127. INC <Music_Item_Cur  [" w0 K) Q, V1 H
  2128. LDA <Music_Item_Cur
    4 K# x4 `% P9 ~5 m/ B: }
  2129. LDA <Music_Item_Cur; }' Y+ x) d$ l/ Z
  2130. JSR Reset_Current_Music7 A1 [/ U. X6 F+ e. A% X+ B
  2131. Next_Item_Play
    4 f0 w# Y' _, z) z, M, [+ H  d2 Y
  2132. LDA Data_Buf
    * V5 B" i% ?8 J0 X0 s
  2133. BEQ Next_Item_End! V0 _2 f- @2 c% S* ?
  2134. JSR Show_Page_Text
    ( n; A* m1 s' v
  2135. Next_Item_End
    ; y: [% k% S' Z
  2136. RTS
    . Q8 e, l# W3 n2 i) K+ p

  2137. 5 D4 c0 p; I2 v& F
  2138. ;==================================================
    6 c) H/ n9 ?3 s" G4 W& @
  2139. Last_Page;上一页# b" P% U/ `! w1 W0 K
  2140. RTS* u2 T: L7 q  _7 N, N+ s# p8 d( o
  2141. * g# f* @$ t& O) D' F; N
  2142. ;==================================================7 ^2 R# n! b3 Y3 ]: Y
  2143. Next_Page;下一页
    . Z( K3 |- u/ {& L2 o
  2144. LDA #PAGE_MAX_INDEX( G" c. \& [* [& |# C
  2145. CMP #$01
    2 g" d+ @* i; h9 P6 l! ~9 D+ E
  2146. BEQ Next_Page_End
    4 `: J0 i, q  E' y5 D4 n5 B

  2147. : h2 C# s- c8 t+ N) D+ I7 s
  2148. LDA <Music_Item_Cur
    3 `- ?& [) \- A; U7 h7 |4 g
  2149. STA <Music_Item_Last
    ( n+ b+ D  Q* y$ T! J% _: [0 H
  2150. , ~% V, ]. T, |! d# w# T
  2151. JSR Get_Last_Page_Start_Index
    1 m! Z6 U6 Q- x' B9 U
  2152. . m( ]- i* z* n
  2153. LDA <Page_Last_Index( N& u, j1 N) L1 n
  2154. CMP #PAGE_MAX_INDEX
    0 |, ~, L: U+ y
  2155. BCS Next_Page_In_End_Page
    ; z1 j6 l4 Y# m1 a3 t/ K

  2156. 5 w( l+ B2 w* o0 \- M
  2157. Next_Page_Not_End_Page;不是在最后一页
    $ h, b1 j# C6 y* l/ L
  2158. LDA <Music_Item_Cur
    3 [- C$ @( T4 l% f$ V; m& B
  2159. CLC
    ( g4 p& p0 b3 O$ z
  2160. ADC #PAGE_SIZE- F- @, R' U! H. |/ `
  2161. CMP #ITEM_MAX_SIZE
    4 y+ v( I+ |3 w; w. V
  2162. BCC Next_Page_Not_End_Page_Less4 r  ~1 q4 {2 s0 C4 W
  2163. LDA <Music_Item_Cur" v! f3 ]/ @4 U  }7 Q! w6 m( ?
  2164. SEC7 o+ m9 r( z) l4 v* u) M4 J/ t
  2165. SBC <Page_Last_Index  B5 ~  C2 d& f' O
  2166. CLC
    ; W' ]) x, O2 ]; T
  2167. ADC #PAGE_MAX_INDEX, l- ~( Q8 I$ @4 d5 |3 f. V
  2168. CMP #ITEM_MAX_SIZE
    + B$ o9 h2 f: N* e
  2169. BCC Next_Page_Not_End_Page_Less' p1 S, H2 q4 b4 N8 Q' M$ C
  2170. LDA #ITEM_MAX_INDEX) v) L9 E) Z# }$ P0 T3 O) m
  2171. Next_Page_Not_End_Page_Less. H) K" g' K4 M2 m7 w& S. x
  2172. STA <Music_Item_Cur
    - u+ q& K" J; w3 ]- D9 D
  2173. JMP Next_Page_Reset8 P2 z( @% X! I8 v6 [2 W( O% C3 p& K

  2174. . t1 a/ [6 g$ D: H
  2175. Next_Page_In_End_Page;在最后一页
    - w; P* {6 {# c% r
  2176. LDA <Music_Item_Cur4 p$ @3 y/ l4 ]" l
  2177. SEC
    6 w; T- C) O1 d, G
  2178. SBC <Page_Last_Index
    + Z/ U5 A+ J7 B
  2179. STA <Music_Item_Cur" S# d* |$ R, t8 c8 t
  2180. , ]; Z" r; A' ]4 _6 N
  2181. Next_Page_Reset
    1 l0 o3 ]: N/ }2 `7 b
  2182. LDA <Music_Item_Cur
    7 L6 }' f, p" t& D1 k8 z
  2183. JSR Reset_Current_Music
    ' z: e2 b8 F# C0 ~
  2184. JSR Show_Page_Text+ ^* U3 }1 w& u$ @+ ?
  2185. Next_Page_End
    . e+ g  m( A/ I
  2186. RTS
    9 w% e8 I3 q$ c# `
  2187. 5 b0 V  q3 }; F# X9 C! f0 q5 E
  2188. ;==================================================
    , e# H& V* D6 H2 }
  2189. Disable_Text_Draw;禁用音乐条刷新( Y) U0 M- i- d/ P6 Y
  2190. LDA <Text_Disable_Flag9 z4 n9 C( q% s$ z; c' I7 r
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME& U  J, V5 x" }5 X
  2192. STA <Text_Disable_Flag& q, n/ M$ W1 n6 K  A. B
  2193. RTS) b0 Z' j, E: P+ k

  2194. 2 x/ W' x7 k. k* n- d0 D
  2195. ;==================================================5 e  v1 p% F8 K
  2196. Clear_Last_Track_Name;清除上次曲目名! l# x  _* E5 ^7 v# m
  2197. LDX <Music_Item_Cur4 J1 X1 w' X' t: u. K# ?; t( s
  2198. LDA <Music_Cur,X
    # W" i, q9 h. o' C( C
  2199. .IF Track_Name_Pos
    ' f9 q" f- `5 H0 r
  2200. JSR Clear_Track_Info
    & y/ C/ \0 E. |- \4 k7 x4 j
  2201. .ENDIF
    ' C7 N+ a; r- Y* l- ^' R0 A4 k/ \
  2202. RTS: k8 @9 `; t5 f' S1 U5 R

  2203. 3 B! R, V8 J; D7 B& T
  2204. ;==================================================
    5 ?+ @, L" b3 w& q2 A+ _6 c( H
  2205. Reset_Current_Music;重设当前曲目3 P" l% T! s. @

  2206. 3 L+ [. }$ c3 W* j2 w7 E0 G0 a  [
  2207. ;写入当前总曲目
    " b/ X% W1 z, }; Y0 C7 p! Y& P3 V
  2208. JSR Set_Sound_Total) Y% f$ v7 H& k( }/ z" D( S
  2209. LDX <Music_Item_Cur* ~* L, h' i( q( z& ~+ o

  2210. 1 u$ A" m& I( B; a3 {
  2211. LDA #$00) b+ L9 c3 }5 s  m0 {* B
  2212. STA <Music_Last
    8 S4 u% d+ y$ u( w5 q7 b+ E

  2213. # y. F& m. ]  |7 f
  2214. JSR Sound_Reset_Proc
    9 j! r6 }8 h$ t/ ]2 V4 ?1 z  d* T
  2215. JSR Music_Show2 p8 t) O/ A4 p/ V4 {+ y1 z9 O
  2216. RTS$ X% l8 }7 A+ {8 j- I
  2217. / k1 I" z9 M- w  `' A% E
  2218. ;==================================================
    1 E1 a+ l: s2 I2 ^" z* r: h2 {- Z
  2219. Music_Song_Stop;音乐停止
    : S& R/ u! A; F$ T8 g
  2220. LDA #$01
    3 e1 O+ C: u" o- q$ t  O
  2221. STA <Music_Stop_State
    ! j4 C5 a4 A% f+ t3 c
  2222. JSR Music_Bar_ReSet. R' J& Z0 |5 i2 V- t
  2223. JSR Time_ReSet
    ; K. t- q" Y2 G; f+ J
  2224. JSR Sound_Data_Clear
    ! l: [7 k7 G( R2 g$ Y" e( M0 U# B
  2225. JSR Music_State_Show
    ! o# B* J! W% K8 P
  2226. RTS
    " [7 ]0 x" ?& E: A
  2227. & f1 L" Y+ W6 G+ \) m) ]2 a
  2228. ;==================================================
    # Y1 s# o/ R/ W- o, Z' i) }
  2229. Music_Song_Play;音乐播放% x* S- N! x' j1 W( O8 |+ V8 F/ v
  2230. LDA #$00( i! I  K% R8 @6 d2 k6 e
  2231. STA <Music_Stop_State( K, j- [4 y$ t' @
  2232. LDX <Music_Item_Cur
    : C  s/ ]" I# b
  2233. LDA <Music_Cur,X
    8 t4 T2 e* w( y& n, ^% x
  2234. JSR Sound_Init_Proc' b, }- h" p6 I
  2235. RTS) V7 t4 O# _2 r4 z1 f

  2236. 7 Y$ z6 q4 F/ |) ~4 @
  2237. ;==================================================
    : s: c6 Y- Q1 O* [, ?/ I+ g$ R' ^$ L
  2238. Music_Song_Last_10;上10曲; p' V6 R1 Q8 `* J
  2239. JSR Clear_Last_Track_Name6 K' T1 c2 O( q  U8 Y
  2240. JSR Disable_Text_Draw4 Z$ l) H* Y1 w$ a: a3 I
  2241. LDX <Music_Item_Cur+ G8 X9 f( c+ |& ^% D" I8 s
  2242. JSR Set_Sound_Total
    / ]1 t2 B4 e4 k
  2243. LDA <Music_Cur,X  Y5 f1 g) Z6 l/ V: i
  2244. SEC
    1 a/ ~! m. z# H8 W
  2245. SBC #109 [$ J8 O3 t1 W+ O/ B- }* D8 ]
  2246. BCS Music_Song_Last_10_Set5 r; {: K* [8 z7 a
  2247. LDA #$00
    4 g! d5 k% u3 ~2 R$ V* M
  2248. Music_Song_Last_10_Set
    8 ^( p- q9 z1 u1 @' K. J4 }9 ^
  2249. STA <Music_Cur,X* X( p& A+ U& b0 G: g  ?1 t
  2250. JSR Sound_Reset_Proc
    5 x! o0 r4 ^, W5 c" e" {. e
  2251. JSR Music_Show: u) v3 h' d: U- ^3 E
  2252. Music_Song_Last_10_End9 q/ w' H8 k$ p. B$ v+ s' H
  2253. RTS
    " ?3 g. k; w7 F0 D
  2254. ! w, A4 C$ n8 j! v7 v' s: U
  2255. ;==================================================7 [# [1 E2 o6 i) b+ M/ g
  2256. Music_Song_Next_10;下10曲, g* }% ~2 o# K
  2257. JSR Clear_Last_Track_Name
    & {# a1 i  Z5 l- Q& H
  2258. JSR Disable_Text_Draw" h; A" q6 `9 Y, O3 z
  2259. LDX <Music_Item_Cur
    : o( W' A3 f  q0 g  R
  2260. JSR Set_Sound_Total+ s4 q& l  P" l* ^" `  ?2 S
  2261. LDA <Music_Cur,X8 e5 _* g" H" {3 A1 l
  2262. CLC
    : S8 r' K8 ]4 H" Z' Y2 x: O
  2263. ADC #10
    8 m6 \6 ~  a5 {, m+ x
  2264. CMP Music_Total. ?& H' L( y! N4 ?
  2265. BCC Music_Song_Next_10_Set3 u8 p7 ~8 \$ o5 j4 z
  2266. LDA Music_Total
    " i0 `; z* Z7 Y( z. n; C0 y
  2267. Music_Song_Next_10_Set1 G5 Q  O& K; C  i+ v
  2268. STA <Music_Cur,X0 C% f* _, o3 c0 g/ B0 X
  2269. JSR Sound_Reset_Proc2 ]- {2 B$ \9 Y8 ~. G
  2270. JSR Music_Show
      E7 ]) f8 S; E1 j$ u* i
  2271. Music_Song_Next_10_End
    - F0 }; A: ]5 H6 Z  `5 l6 g7 ?& L
  2272. RTS3 I: r/ O' D0 z: I4 |& @3 x' s5 M
  2273. ; l! |/ T: s* C3 }% f( D
  2274. ;==================================================" W4 V1 x7 ]% I5 _, b: b
  2275. Music_Song_Last;上一曲; c3 L9 d% v$ ]/ \4 n( j: t
  2276. JSR Clear_Last_Track_Name! u. m: O) Y9 S  D
  2277. JSR Disable_Text_Draw
    ( T; r- z" ]$ Y1 R$ K. L/ A
  2278. LDX <Music_Item_Cur/ q, D; Z+ S2 G% U8 X) l; H
  2279. JSR Set_Sound_Total$ a5 b5 c* \- P6 t/ y
  2280. LDA <Music_Cur,X3 z) x% [- {# Q4 N- Z) y) }7 _" ]' g
  2281. BEQ Music_Song_Last_Set8 Q9 c% q! m' o. O
  2282. DEC <Music_Cur,X; g& x2 i; ]  h/ W
  2283. Music_Song_Last_Set; ]' \$ }2 D# n1 ^( ^9 F
  2284. JSR Sound_Reset_Proc2 F/ e2 z! z& ]3 T( u, D3 s
  2285. JSR Music_Show# X+ h4 T6 y& \9 m
  2286. Music_Song_Last_End
    , I2 ]. Z# b! A% Y& E$ [# T
  2287. RTS
    ( X3 N1 f# L, V1 Y, E. E
  2288. 2 G1 Y4 v: D" c2 V
  2289. ;==================================================
    . @$ v  J6 s; w- k
  2290. Music_Song_Next;下一曲
    ! d: b* {# m  r* M
  2291. JSR Clear_Last_Track_Name5 h6 \- u1 X! p1 d: N9 P9 M
  2292. JSR Disable_Text_Draw
    & j% T( q8 A% ?( t  a
  2293. LDX <Music_Item_Cur( V1 S' k5 w2 l" z/ z6 i* z# ?' D0 p
  2294. JSR Set_Sound_Total5 ^; N% b& ~0 n  Y1 R2 p% m7 `
  2295. LDA <Music_Cur,X+ m$ Y" v" `% p) z8 C: ~) ^
  2296. CMP Music_Total
    / p9 J1 O- A, W/ k+ @- a' G
  2297. BCS Music_Song_Next_Set2 @6 i, u- {# C" D3 ~
  2298. INC <Music_Cur,X5 P, q4 S' A$ B4 ^+ x1 H- M
  2299. Music_Song_Next_Set1 }( E1 ]2 L) `$ v
  2300. JSR Sound_Reset_Proc; |3 Y/ s+ F+ V, j7 A
  2301. JSR Music_Show
    2 K$ t! A* {/ U
  2302. Music_Song_Next_End( `: {$ }% d- f0 K" y# K& X  n+ z
  2303. RTS
    % @/ Q6 |4 c# s6 W2 t
  2304. $ p' H& y2 A; Y" r
  2305. ;==================================================$ L$ }# s0 j5 b7 N
  2306. Change_Select_Item;改变当前选择项8 O! I2 K, g9 f- |* [
  2307. ;--------------------------------------------------
    - l5 X3 F* x4 F  M- Q4 @; G
  2308. Change_Select_Stop_Play_Item;停止/播放" h2 b+ I% x2 o& ~' w6 W
  2309. LDA <Key_Once
    * Z) L% r1 g8 _$ i3 h
  2310. CMP #$102 Z6 ]5 g) V0 y5 [
  2311. BNE Change_Select_Last_Item
    ! k! u2 |- U. k; f0 R( S
  2312. LDA <Music_Stop_State
    8 k$ O' e& U- ~4 y) X0 ^, K
  2313. BNE Change_Select_Play% U3 @% F5 _7 O/ b
  2314. JSR Music_Song_Stop
    8 l9 G6 [8 V. W+ c0 M, v" u
  2315. LDA <Music_Stop_State
    ; {8 j% j* ]2 l$ h! D/ O! V
  2316. RTS
    1 L7 _% p' q0 N8 ~# }) S

  2317. ( F: u5 ]* y4 q2 n# s
  2318. Change_Select_Play
    4 {/ ~) ?( v+ ~4 G2 o. O- V
  2319. JSR Music_Song_Play
    ; V3 i6 b% B: W3 r5 Z
  2320. RTS7 h. Q8 ~& |; {
  2321. - M% Q; {9 m+ R" R& ~. I
  2322. ;--------------------------------------------------
    % n/ N0 y1 B( h6 D3 h
  2323. Change_Select_Last_Item;上一个专辑' a4 z3 {1 F" }) S
  2324. LDA <Text_Disable_Flag; b6 G7 o: l/ B0 _5 |
  2325. AND #TEXT_DISABLE_ITEM! o) x& q6 N3 t$ c
  2326. BNE Change_Select_Item_End
    9 \+ D& ^7 Q$ l; d
  2327. LDA <Key_Once
    : ]' R1 c* q; c; ~3 L# `+ d5 ~
  2328. CMP #$080 z: L& N& M6 I
  2329. BNE Change_Select_Next_Item
    ; ~4 {( i. N3 I# N" S$ a
  2330. JSR Last_Item" |  n! k" N( c( u( G1 l4 v
  2331. ;--------------------------------------------------6 f4 P1 H3 m5 r* j* W/ R  {
  2332. Change_Select_Next_Item;下一个专辑: u2 [+ U0 E6 c- ~+ w2 k
  2333. LDA <Key_Once
    5 q  l5 w/ X( y
  2334. CMP #$04/ }9 z8 T- }* e% z4 z* e8 w' F- {% g
  2335. BNE Change_Select_Last_10
    / |: `. e2 L8 [2 Z7 V5 m" R$ x5 \- B
  2336. JSR Next_Item7 R3 m0 `% W5 C5 g6 n
  2337. LDA <Music_Item_Cur/ @. Q3 S9 ^0 i9 E
  2338. JSR Get_Page_Start_Index
    8 g+ N$ _; _: Y" z4 l
  2339. ;--------------------------------------------------3 ]$ _# N$ I& _# b6 E
  2340. Change_Select_Last_10;前10曲
    . q7 ?' e3 {! _4 t5 y
  2341. LDA <Key_Once! A2 e  I/ a/ t; C
  2342. CMP #$40
      R" ?9 l4 y' E" ~. B, ~
  2343. BNE Change_Select_Next_10
    . ~7 ?. \+ |! M) Q; s6 R$ D: s" Y
  2344. JSR Music_Song_Last_10
    & A8 N7 p" c; T0 G
  2345. ;--------------------------------------------------* R8 R& b: o  v; F. b
  2346. Change_Select_Next_10;后10曲
    ( |5 u8 Q( l; w. ~
  2347. LDA <Key_Once
    6 T2 @8 |) Z6 c9 k
  2348. CMP #$80
    + @! k# g' C6 z& b; Z5 _
  2349. BNE Change_Select_Last. p2 s1 s9 X- H8 G8 F* i
  2350. JSR Music_Song_Next_10
    + B. I% C  O  V+ J( ~
  2351. ;--------------------------------------------------
    / L1 ^2 h0 x) @
  2352. Change_Select_Last;上一曲
    $ A/ A4 ?' q$ F
  2353. LDA <Key_Once
    9 ^6 z" p( |4 I8 G, _
  2354. CMP #$02. Q* |8 D  f4 m7 N, Z2 O9 k8 s
  2355. BNE Change_Select_Next
    * E8 w/ D5 g3 _/ G8 Y
  2356. JSR Music_Song_Last7 e" v4 L' c8 D, i
  2357. ;--------------------------------------------------! r6 v! D  M! h2 Z; g
  2358. Change_Select_Next;下一曲
    , l% [1 s  t7 r8 n
  2359. LDA <Key_Once
    3 ~% t; c# A8 T. J3 }7 W/ I
  2360. CMP #$01& K) H, l4 s3 m
  2361. BNE Change_Page_Next
    4 J# x0 m: U( N. r. q
  2362. JSR Music_Song_Next
    " m. x. D% b. ~) h+ a+ }
  2363. ;--------------------------------------------------
    # s$ z! b2 ~3 n% \  N% o2 V+ P) f
  2364. Change_Page_Next;下一页
    8 r' ]1 b3 \$ a  q2 @; @+ Y, Z/ ]
  2365. LDA <Key_Once5 `0 U( f9 g# r' \  G! h/ H  C
  2366. CMP #$20! y7 c; v0 y/ E
  2367. BNE Change_Select_Item_End7 L& Q1 D$ u" _) y; C" }4 n! y2 ~
  2368. JSR Next_Page# H9 Y- \( Z9 Z9 @
  2369. ;--------------------------------------------------
    / r' ]  u# u! [& B5 y$ _
  2370. Change_Select_Item_End+ p" @3 J9 }1 Y
  2371. RTS
    1 a( I# z" \$ f; m  N+ M) i
  2372. $ K# H4 p) C% }- f
  2373. ;==================================================0 a7 R' K6 E: t/ A7 d/ k7 r
  2374. Show_Arrow;显示箭头光标
    2 `8 @8 {. H! u6 F' R) K* w; `
  2375. LDA <Music_Item_Cur
    3 E* a% K  G" W6 V
  2376. JSR Get_Page_Start_Index  K$ u- w7 P5 U4 [, [
  2377. LDA #$00& ?4 ]9 M6 N) {; I$ S2 e
  2378. STA PPU_OAM_ADDR" a* c: W4 T  O, Z$ t% o
  2379. LDA <Music_Item_Cur
    $ s) F) x; i5 a& e. m. v& f! @
  2380. SEC
    ( s- T: c2 O+ A  _  T
  2381. SBC <Data_Buf
    8 G" L8 I) n- T) C: ^. m
  2382. ASL A& l' t; H  W6 P: g3 ~8 w: m: k/ g$ b
  2383. ASL A
    ) w/ \+ f$ }9 k6 W* \; j5 ]* _
  2384. ASL A3 |7 ~, t4 [+ L
  2385. ASL A
    * [. I6 S) z: A% W1 \
  2386. CLC- t0 E8 h1 u( ]. B5 ~2 M; U
  2387. ADC #ARROW_Y_OFFSET
    : o6 `+ `0 k8 a( c5 b
  2388. STA OAM_TEMP_ADDR + $00
    " g) R6 h" R! V! l) l$ Q$ L( c
  2389. ;STA PPU_OAM_DATA0 e9 k2 C3 ?* x( y3 O7 T5 K. S
  2390. LDA #$1F
    + l: d+ G' A0 f& N
  2391. STA OAM_TEMP_ADDR + $01: M* l6 P* x2 [5 p9 Y. d4 C
  2392. ;STA PPU_OAM_DATA1 Z1 O. C0 f0 r% y3 {: p% W
  2393. LDA #$00
    # R' C9 Z, D/ O7 X* j
  2394. STA OAM_TEMP_ADDR + $02
    ( e1 V1 D4 S) I. }. C: y% [
  2395. ;STA PPU_OAM_DATA
    7 q4 s. p. R$ @6 V9 x& d6 b9 U$ b, [
  2396. LDA #ARROW_X_OFFSET% a$ L$ R" p! @% _" L$ n* R
  2397. STA OAM_TEMP_ADDR + $03
    1 b  F# T. ^' J1 _& E
  2398. ;STA PPU_OAM_DATA3 }  J/ ?8 O, ^7 \; @
  2399. RTS! p1 J& m( W& B3 Z

  2400. ) ~9 h" O' c/ r+ i0 |, X" @
  2401. ;--------------------------------------------------
    - _5 K' w+ n0 V3 S! ?  p) r
  2402. ;命名表数据
    " A6 f2 A/ [. u' E3 a0 P7 b1 W
  2403. Palette_Attributes; O  Z6 d  J& h9 p/ M& U
  2404. .IF SOUND_BAR_SHOW_ENABLE* _0 B5 B& a) {: m; k% I
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55, s0 W2 d$ z2 X2 y0 D; [6 N
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    + t& Y1 ]& z& v
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    4 {6 x+ h& p4 M' E2 z
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    ; }' Z6 l, v8 u8 x" c
  2409. .ELSE/ U7 ]9 C7 H9 G8 c. D" I4 k1 A) ^
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55  D" U1 m0 _6 J: h
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$557 Z. D; p; |* Z0 @3 S
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    ! k# ]" f* F: V# r$ C% n" C
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    5 J* [4 E8 H2 o! k! l. x7 N. D. D
  2414. .ENDIF2 ?0 v$ [7 s/ F- {% ?8 E
  2415. 3 l* Q9 q( l/ k4 p; F9 a% {
  2416. ;--------------------------------------------------% p7 Q2 R$ N! X6 r+ _/ c7 Q0 @; e: \
  2417. ;调色板数据) q! Y6 x$ p6 d5 P3 {+ u( C
  2418. Palette_Data
    % Z0 V8 B" @* x; H7 f
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    . |* J; \  f- D/ h$ n& T" E
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F/ Y. Q0 S$ _+ m4 r2 U1 D
  2421. ) R# a+ Z- O4 S! U# b
  2422. ;--------------------------------------------------+ U, H+ B+ ~4 f, V+ T- [8 Q
  2423. Static_Text_Data0 C( _" A! n) G3 L3 b
  2424. .WORD Static_Text_Caption_Data6 Y6 r) G9 P- i* c
  2425. .WORD Static_Text_Author_Data5 v, |% d2 i  f( P2 _+ s
  2426. .WORD Static_Text_Date_Data4 ?4 m4 [& \6 c* H
  2427. Static_Text_Data_End
    7 v/ s% e8 \! d7 s0 V! N

  2428. " c+ b! S6 S1 a8 d' i- `
  2429. ;--------------------------------------------------1 R* P$ s# ?* I. h( o. h6 ^2 w* Z. b
  2430. Static_Text_Pos( b2 `, L( Z4 e7 d3 L4 d
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    8 O/ ~8 m; ]7 U
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)6 J& k! U4 |# X
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)# G# R& n4 m! C4 d
  2434. Static_Text_Pos_End2 n9 r" \/ V6 w5 I/ M
  2435. ! f' {( l! H% M: y3 ~6 G" m
  2436. ;--------------------------------------------------
    2 u6 D- c- N/ b9 `" d
  2437. Music_State_Stop4 B, V$ s0 ?: z/ x0 I$ d- X
  2438. .IF SOUND_BAR_SHOW_ENABLE
    , N3 ^0 Q8 |& B9 n  E; c4 B
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    : \8 {6 D+ D: M9 F9 B; b# h3 R
  2440. ELSE
    & Q4 [9 W; s$ a7 i2 U0 C3 M
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$008 @" I" w. T7 J7 O9 \
  2442. .ENDIF
    ; Z* z. ^4 V' b6 \8 E1 I+ _3 G
  2443. Music_State_Play, m8 y9 c- }8 ]/ V, z# i# c
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    . W7 h$ b  W+ W3 S  T  l! v+ @
  2445. + u0 x1 O; g& s9 s* k2 N7 W
  2446. ;--------------------------------------------------: ?# o( |! Z8 X) F
  2447. Sound_Bar_Text_Data;声音类型文本8 ~2 s! [( c1 ?/ [
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-") n6 `  D+ y/ D" s: q6 i
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    ) |% ^# t# F0 R
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"5 W* ]" w8 S% O6 M8 t* k6 t5 U
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    6 C& @: g8 S+ A7 ]' U# G, K
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    : `2 \) {( `* ?
  2453. - a* f( r1 X' l) _( I
  2454. .IF Track_Name_Pos; N: y1 m5 L! d( r
  2455. ; H+ I, h* f. G- o
  2456. ;--------------------------------------------------
    5 |$ \# E& A; k
  2457. Track_Name_Addr_00;曲目名地址索引
    $ `7 T1 T6 K( T7 Z7 c, b
  2458. .WORD Trackr_00_019 m2 s1 o( f3 B

  2459. : y% L9 B* A2 `% R8 \; ]3 v0 Q7 G* l
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"( V/ M) Y  W1 q- H
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    ; U; F$ H- h% x. B/ [  q. Y

  2462. / ]' W- l3 e; k. a
  2463. ;--------------------------------------------------) U5 {* J0 q! m
  2464. Track_Name_Addr_01;曲目名地址索引' @0 E% u/ t9 j0 X8 H9 m8 I' R( r, R
  2465. .WORD Trackr_01_01
    $ @1 s- v! D* K& |/ J
  2466. 3 @$ _0 p( u" a5 Q% `) [2 z, V( ~
  2467. ;==================================================7 A- E) e& X1 v- M2 u# ~
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    ' i- k$ v; r; a  A; X+ i3 z# N( x- t
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    2 g( S. b2 m: h/ N" W1 ?" Z

  2470. 8 }7 I' G8 W% \7 F: A
  2471. ;==================================================1 q. J. p/ k% ^% G2 Y% a
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引7 [5 t  F# Z' ?( @% ?
  2473. .WORD Track_Name_Addr_004 M4 {' T" ?+ Z+ E9 c; w
  2474. .WORD Track_Name_Addr_01
    5 r# T: P  U' a
  2475. .WORD Track_Name_Addr_01$ |7 a$ V1 r8 Z. S* P1 U

  2476. 0 k0 D4 Z; C  b7 k) C! |
  2477. .ENDIF0 Q: s! ^" v. z  }/ `8 I
  2478. 6 V( v# Q8 V4 h6 h. z5 u3 ?  o
  2479. ;--------------------------------------------------
    - \& @# E; k. O* D3 Q
  2480. Static_Text_Caption_Data;静态文本数据
    6 ]9 r( ?! l, v% }; o/ D  R# D
  2481. .DB 16# d6 e, Y, M2 T1 n# R
  2482. .DB "FC MUSIC 12 IN 1"
    : |8 [- w% K$ [' a! r% [
  2483. Static_Text_Author_Data. ~, ~# y, o1 {- o" x
  2484. .DB 25
    5 f* Q8 h' D8 x% `$ U$ E7 Z
  2485. .DB "EXTRACTED BY FLAMECYCLONE"6 n/ @4 s5 `# U# N
  2486. Static_Text_Date_Data
    ; Y+ W6 D& m2 Q4 [& O
  2487. .DB 10% y2 y* V1 B/ V) r
  2488. .DB "2023.07.23"! j  q  U$ c; q3 B
  2489. & A8 `1 o" [& y' S, f
  2490. ;==================================================/ m+ ^+ O( G9 @
  2491. Music_Collection_Name               ;专辑名间接索引
    8 M) G9 s0 h5 `' u( G6 A/ e+ ^
  2492. .DW Music_Collection_Name_00* g1 X: u6 C# n3 q9 P5 P
  2493. .DW Music_Collection_Name_01
    * E# j: q" D( |
  2494. .DW Music_Collection_Name_02
    3 \. I3 w+ u: n2 L' B& h3 {; E5 B
  2495. .DW Music_Collection_Name_03
    8 d+ @0 A  m$ s$ Z2 x" m. |
  2496. .DW Music_Collection_Name_04- e$ d" T' @8 e& X- T' t
  2497. .DW Music_Collection_Name_05
    + N) P' h1 p0 Q' T: i, b' s
  2498. .DW Music_Collection_Name_06
      d. a9 H% G. _& [
  2499. .DW Music_Collection_Name_076 v, g9 K9 C, S$ _( {
  2500. .DW Music_Collection_Name_08' A" i7 x7 v0 \* a+ Z
  2501. .DW Music_Collection_Name_09
    5 U5 x# A( v) d: U) j
  2502. .DW Music_Collection_Name_10; M# A' E# n& x! _6 Z. p
  2503. .DW Music_Collection_Name_11
    ' N3 s: o( `- B

  2504. 2 `8 `+ I5 _5 X4 b! l
  2505. ;==================================================# F, l" b& F! T* o" X9 y
  2506. Music_Collection_Name_00            ;专辑名文本数据  R# ]; u4 D7 ]  n, q
  2507. .DB 11,"1.RAF WORLD"
    % ?9 w! b9 g7 H; u0 z9 q
  2508. Music_Collection_Name_01* S* h4 x" V6 P1 ^: z
  2509. .DB 15,"2.FINAL MISSION"
    + N9 A: [1 G: F9 ?% l
  2510. Music_Collection_Name_02
    ; V7 Y  a, g: w7 g
  2511. .DB 06,"3.KAGE"
    " G1 D+ u: R! l4 J, k8 ]
  2512. Music_Collection_Name_03
    + O% J+ n* R8 C2 M
  2513. .DB 16,"4.DOUBLE DRAGON"
    " F4 D: \1 J8 R
  2514. Music_Collection_Name_04  U) z7 X& v# J5 g
  2515. .DB 17,"5.DOUBLE DRAGON 2"9 b/ p7 r% b8 O. h1 W5 {( \
  2516. Music_Collection_Name_05' Q6 u) w' d9 k; @* O7 A
  2517. .DB 17,"6.DOUBLE DRAGON 3"* k# f& n6 U) x8 W! U
  2518. Music_Collection_Name_06' Y$ z; d3 Y4 I
  2519. .DB 09,"7.ROCKMAN"/ p0 M2 ]8 W: D' [  {
  2520. Music_Collection_Name_07
    & w! L( Y2 e3 E- Y# j' E3 W
  2521. .DB 12,"8.ROCKMAN 2"8 B1 m: T# X; P3 c
  2522. Music_Collection_Name_08: e2 @. }6 h5 z/ R) x! u& D3 e
  2523. .DB 12,"9.ROCKMAN 3"
    4 |* d# Y% ~/ K
  2524. Music_Collection_Name_09
    % F# @( ?- {+ i' N' U/ m' Q
  2525. .DB 12,"10.ROCKMAN 4"
    8 P( j! C& e6 y( e
  2526. Music_Collection_Name_10+ o8 \0 {% M6 A+ Q/ E3 ~! V$ A
  2527. .DB 12,"11.ROCKMAN 5"9 r0 D/ W4 G4 c2 N$ @( u
  2528. Music_Collection_Name_113 a% o/ v% ?( n3 l7 n
  2529. .DB 12,"12.ROCKMAN 6"7 m( V# ~$ A/ O' f* t9 }2 S

  2530. : n5 B0 X7 F8 N6 D
  2531. ;==================================================6 m- l' ?' j( m+ o
  2532. Track_Name_Addr_Flag                ;显示曲目名标记- P4 g3 `5 X; d) I/ b) Z
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    # x7 C+ k0 u- I9 u% j: g

  2534. + x- E' @* D7 G
  2535. ;==================================================, e# Q+ J/ a# z. k
  2536. Item_Pos_Data                         ;光标箭头位置, c4 d- B' z" I
  2537. .WORD ITEM_SHOW_POS
    $ g; m! H. q1 _- L# |" G
  2538. .WORD ITEM_SHOW_POS + $0040
    ' P* e4 E/ q9 \) G& o5 r5 c9 F# r
  2539. .WORD ITEM_SHOW_POS + $0080
    - t* I( O3 L4 \6 p
  2540. .WORD ITEM_SHOW_POS + $00C0
    ( C* C1 }' G% _4 V5 w
  2541. .WORD ITEM_SHOW_POS + $0100
    5 w9 g5 _- M8 M1 H
  2542. .WORD ITEM_SHOW_POS + $0140
    0 W6 {, b* X6 h- j8 l, V* X
  2543. " D+ z  M; e1 y2 c& ]% f+ I/ S
  2544. ;==================================================  O: I7 H$ M6 A0 O0 u% u
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    7 D) G, S8 Z6 Y3 x1 G7 O* |3 e# t
  2546. .DW $BFC8
      N' f" G$ q. p2 ?. W
  2547. .DW $D7F0! W3 O' V1 M7 L. k- J
  2548. .DW $9FC0) O; n0 {; @; W' d4 @
  2549. .DW $BF702 g% h* y4 w! I# `8 a6 a
  2550. .DW $80032 M. L# u* {; R8 X% ~0 P/ h, g
  2551. .DW $BF30
    ' f! A  |3 p7 `
  2552. .DW $9003: {# X4 r7 ~: t' e! v) p
  2553. .DW $8003
    8 F4 }( h8 Y6 t) o
  2554. .DW $8003
    % `: u8 _( x, M
  2555. .DW $8003
    , s! x6 _# @, }4 g+ P
  2556. .DW $8003
    5 }; e2 f. w, K4 k
  2557. .DW $8003
    ) z8 {' B) w# ^) y1 p
  2558. 4 g& D- }5 E0 d1 T
  2559. ;==================================================7 @  f) T$ `# Z! _
  2560. Sound_Play_Port                   ;音乐播放入口地址
    . h( B3 T( Z/ I
  2561. .DW $8000
    ) B! m$ \! S- O- ?) C$ ^0 X
  2562. .DW $8001. [, j5 v  v* c3 j; I  q
  2563. .DW $A000
    " ~0 M* p/ f% N
  2564. .DW $80031 t3 b, I& k5 I: l  o' w5 T) b
  2565. .DW $8000& ~! H# `) \0 e# o
  2566. .DW $8003
    % \% n  I+ \1 v( S& B
  2567. .DW $9000
    & v1 Y8 p" s; N' k& i& {9 C
  2568. .DW $80009 x* r  e$ U+ r* i
  2569. .DW $80008 T. T4 W0 ?; d
  2570. .DW $8000
    $ y+ m0 e! `+ |/ u; x
  2571. .DW $8000( i/ y/ F+ M# e7 ^5 R4 \; |
  2572. .DW $8000
    1 X9 T1 S, _- p0 G! Y* X" Y
  2573. - K! l3 n1 R; J+ x0 c9 E
  2574. ;==================================================8 M( n) C3 V! `& U! _8 i+ A3 }
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    ' _9 J9 c; S( i4 m- F- o/ {, V
  2576. .DW $0000/ A" U  J1 A8 u
  2577. .DW $0000
    4 k/ G' ?+ a" k) _! w
  2578. .DW $0000, l1 Z- Z7 _! k! Y; v
  2579. .DW $0000
    / `  O6 t" E- K
  2580. .DW $0000
      s: @2 k& ?8 I/ V, Q
  2581. .DW $0000
    9 R5 t) d. \5 r/ x. I% _. j; C! D* r
  2582. .DW $0000
      [: Z- K- e/ ]4 \& v
  2583. .DW $0000
    ' s: A9 w& ]  k- K; f
  2584. .DW $00003 \7 `) ^1 v9 D; h
  2585. .DW $0000
    3 M% }4 O# ~4 ?* \
  2586. .DW $0000
    1 o( y; B7 }! s! U
  2587. .DW $00001 C/ {# Z! V; }7 b' a6 A

  2588. 6 o: ~9 U) F) t0 m: a
  2589. ;==================================================* S4 q9 ^) D7 s- F
  2590. Sound_Total_Port                          ;曲目总数
    6 `/ \0 D7 Q/ r: O
  2591. .DB 38" `, {- R' C  M
  2592. .DB 33
    , w- S. ]. S2 \
  2593. .DB 49
    6 T, h1 ?2 q4 P6 P! s8 Z+ t
  2594. .DB 41
    3 w1 o) s: n( j! L4 Z" [
  2595. .DB 838 }9 v0 j. ]! c6 a2 x" Y
  2596. .DB 709 A9 s2 e. m5 E# h2 I3 b! V- |
  2597. .DB 504 [8 k( X5 {, l; V9 P/ [; ]
  2598. .DB 67
    ! D% w( X: c  n2 ~/ j/ I
  2599. .DB 57  C# W0 O6 J9 }2 a& u
  2600. .DB 71
    9 b: z: \* R" d6 d# d
  2601. .DB 76
    & m8 ^( p: }" L2 W
  2602. .DB 102
    1 H; ]. Y; g8 \3 E; a  B- R# ?
  2603. - k( O! m$ @: u5 M
  2604. ;==================================================9 T) d7 }( Y* e$ ?/ R7 A3 t
  2605. Sound_Start_Port                      ;起始播放曲目
    3 m- N. x- J, S* ~" J. K3 i( h  S
  2606. .DB 00
    $ v- W1 T/ l; C+ S$ l% Z
  2607. .DB 00
    0 O$ ~# g( ~2 I* o. R
  2608. .DB 00+ `7 p% A& M4 G7 J) _* c( T
  2609. .DB 00+ t. a* P$ i9 _5 k" W7 ~
  2610. .DB 00
    1 B- ]+ N8 g7 t* U6 Q
  2611. .DB 00: [* z! t- F  X7 Z- l$ _2 g
  2612. .DB 00
    9 o0 t9 m, c1 Y
  2613. .DB 00$ [0 R; z1 d) Y. X% u% F
  2614. .DB 00; n3 i" f9 k, v3 q
  2615. .DB 00
    ( n, a  K! ]6 I/ d% _) _* ]9 r# u
  2616. .DB 00
    ' @/ D8 S. Q; k" P/ d1 K2 A, t( I
  2617. .DB 00
    + g6 h4 s( {" ]
  2618. % J$ I! {2 e4 ]. Z
  2619. ;==================================================
    1 U( g  n/ F3 }) v; _
  2620. Sound_Bank_8000                      ;专辑bank_8000: |. a; S9 _$ b+ I4 n
  2621. .DB $10
    # ^% ~% l9 r% N8 y! H' j
  2622. .DB $126 J8 u% [- W5 ]
  2623. .DB $142 J6 }+ d. R" l1 R5 E3 v
  2624. .DB $16
    5 D5 {. L. F# Z+ v
  2625. .DB $18
    & @% C$ {7 d! p8 b, ^+ h5 [
  2626. .DB $1A1 y0 G4 d0 K6 S0 j  ]- b

  2627. ( `, b! W! F; D5 x
  2628. .DB $00
    " Z1 F& q% l, v7 ^2 E
  2629. .DB $02
    " y' M7 ~6 N" Y' N( E/ X
  2630. .DB $0D9 v0 ?9 ?& ~5 x- |
  2631. .DB $04% a8 ?/ w: E8 U1 Z6 t
  2632. .DB $07
    ! t" c9 V* ~, o( q! H
  2633. .DB $0A
    ' n2 Y+ k( u; }% O- d; {

  2634. ; {+ k$ G, d4 @" C3 j3 P

  2635. - f9 s0 z9 j, q) J
  2636. ;==================================================
    6 n0 P& v3 j! z7 k7 }8 Z2 ]0 s
  2637. Sound_Bank_A000                      ;专辑bank_A000- i( o/ j% |1 Y( t* f$ |
  2638. .DB $11, O6 f! j  U- u# `* }
  2639. .DB $13. ^8 G" C3 X2 W$ G! H
  2640. .DB $159 y. X6 D9 P* z; V' a0 n7 ]
  2641. .DB $17
    ' n- M' o) m+ }
  2642. .DB $19
    2 C) h4 o; `6 j5 g& C* K) M  z
  2643. .DB $1B1 Z) ~4 C* i# H' U/ o

  2644. 9 X2 r% B# Z5 I, q: e
  2645. .DB $01
    3 x" s" d) g% J
  2646. .DB $03
    ) h' W9 E0 r- O, F3 J+ p
  2647. .DB $0E
    " \  [# o) o; S  T9 D/ B
  2648. .DB $05
    : N+ o# S7 O7 u3 r/ w+ j) s
  2649. .DB $08
    & y- E: V' H# G* v9 v* p: x
  2650. .DB $0B
    $ v/ a% G( e+ I$ O: K- y. Z$ k
  2651. 2 }% J$ h- L) Q% k

  2652. 2 b' _* ~. {- r  N$ v
  2653. ;==================================================
    ! Y4 Q! y+ {4 N
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    ) E; e- k( q. T5 A. C
  2655. .ORG RESET_ADDR3 P7 B5 ]) }6 ]; y6 B3 L% G
  2656. . S1 D; C8 R/ r! L- T9 |! ^! a
  2657. ;==================================================/ v/ S, I' g6 F9 W) n! i9 i& P
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    ( f/ U% m5 a  X) p) M- ^
  2659. PHA
    ) j, M% o- B7 e. d
  2660. LDA #$06
    + ^& G- H4 R. ?8 G/ [7 O2 O
  2661. STA MMC3_BANK_CTRL
    " l, o) y; Q8 J9 K2 g9 c0 ^) D3 a
  2662. PLA
    * y; n6 h+ l# I! r: z% w1 g
  2663. STA MMC3_BANK_DATA
    6 s7 z2 E  O6 H; u; B
  2664. RTS
    6 n8 `+ S" O; {& {9 ^4 s3 q( B
  2665. ' R1 ^( l( T9 b
  2666. ;==================================================+ u8 `; F1 \( p- ^2 I( [
  2667. Switch_Bank_A000;切换bank到A000-BFFF% U! N8 f3 E, l7 w, L1 q+ K, t1 m
  2668. PHA& [5 B4 E, p  E7 A/ W% [
  2669. LDA #$07/ `- n# k, a: h, i. L3 D' d
  2670. STA MMC3_BANK_CTRL+ U: S) o& b8 j0 U1 k
  2671. PLA. H! D+ W2 M8 g8 K' U5 o
  2672. STA MMC3_BANK_DATA
    $ i8 i4 ?8 S8 B* [, ?8 d2 l
  2673. RTS  X7 L( I4 o5 T( k6 k) F

  2674. , i2 ?5 j( s2 d- J$ [
  2675. ;==================================================5 l/ z; v. d& U+ w& t8 O1 Q& M
  2676. Switch_Main_Bank;切到主程序bank7 k% W& t8 Z1 n" F$ t4 {
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK( ~6 x  Y, D2 j$ u% c  c! R
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    $ ]0 x( g4 I+ ]+ Q: t7 B* V
  2679. RTS
    9 @1 }' q, {0 u6 v6 ?

  2680. : @9 x1 Z& ?) c1 i
  2681. ;==================================================  W  j3 q" g- b& e' g
  2682. Sound_Reset;音乐重设(如果有的话)! e8 U' K+ V- Q" u; k
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    " X1 ~- O, t+ R9 ^% H; f* q5 I
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    * p: K' e2 o& ^
  2685. JSR Switch_Main_Bank   ;切回主程序
    ( r( g9 J. L! e8 b+ V% n7 O
  2686. RTS
    5 Y& m0 d; N% z3 d7 Y9 w( E
  2687. 3 {0 T$ S- I  a! ^& E. @
  2688. ;==================================================
    - I' W, D; P+ I1 w' C! Z
  2689. Switch_Music_Bank;切换音乐bank( L$ [' ~* h1 I% C/ Q& [
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    , ]& F) u  x1 h4 G) E
  2691. LDA <Music_Bank_8000' ~" G. D8 c% ]/ u
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank) K+ W9 Q4 M+ X9 v0 H
  2693. LDA <Music_Bank_A000
    % \$ ^% }$ V# l8 h0 s
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank7 j4 x/ l; ?/ o' C0 O
  2695. RTS
    0 s2 P2 \; z; k# k9 y0 C1 }! t
  2696. # d, ^; E* @& o) _8 O
  2697. ;==================================================
    : z# V6 G; B1 @0 J5 F6 e* p
  2698. Sound_Init;音乐初始化
    ( l( C" I7 J* x. x  C
  2699. PHA
    / D) u3 n1 S# k
  2700. JSR Switch_Music_Bank  ;切换到音乐bank4 E' v& U" `6 \
  2701. PLA
    % `6 v  k2 C8 v' M3 D$ ~" y
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    7 Q8 |" N1 X- ~0 p
  2703. JSR Switch_Main_Bank   ;切回主程序
    ( X- p/ ?' L9 p. Z: H) |) q
  2704. RTS
    * j7 B2 ?9 `; V- a+ l7 w: x

  2705. / D+ y5 a. v  {, [
  2706. ;==================================================4 @  y! k, T( @/ I9 Z+ T
  2707. Sound_Play;音乐播放( c% z& y8 ~6 {
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    # _8 \/ ~6 G3 L4 K' }$ c' I4 g6 W
  2709. JSR JSR_Addr_Op        ;执行音乐播放/ Z0 h% v, p* Q. i
  2710. JSR Switch_Main_Bank   ;切回主程序
    " K4 u* j9 x3 x- _3 |6 {5 x- Y
  2711. RTS5 W/ K% O3 y) c, ^* a& |, P! T2 ~2 e
  2712. . H/ M, A- {+ U
  2713. ;==================================================; l, y; v( t, r8 m0 d
  2714. MainLoop;死循环$ Z: T: \% I; `# r
  2715. JMP MainLoop& Q  T) I0 i& x9 J# y

  2716. % g' Y7 L2 C* A; d& W/ V
  2717. IRQ_SUBPROCESS_JMP = 09 ^" f% c- k. \( f3 h5 t! `6 O

  2718. 1 u. x6 c4 s8 e, k4 m* V7 m
  2719. .IF IRQ_SUBPROCESS_JMP
    % U& d& {0 F! }' S( x/ R# O+ s
  2720. ;==================================================0 T1 C. J0 Z% F2 y) Z
  2721. IRQ_Process_0;IRQ处理过程0
    $ j: r3 _% H0 |* I1 ~- M

  2722. ' p" J0 Q7 z1 D4 G; M. R: V9 J
  2723. ;15条扫描线后触发IRQ
    ( {" f/ X/ |+ Z
  2724. LDA #15
    4 n, f1 a: J2 {" n; v
  2725. STA MMC3_IRQ_LATCH
    # c! f' J3 J$ m& Q# N+ m7 m

  2726. 4 q$ w- |" D4 i
  2727. ;设置屏幕滚动
    " }* E8 C$ g$ t% j9 {
  2728. LDA <Scroll_H# n  _) V6 S5 B/ q. m! x5 N& r
  2729. STA PPU_SCROLL0 J. O+ D5 D4 S, \
  2730. STA PPU_SCROLL
    % d: D0 P: D/ B. k; H5 j! l4 w" H
  2731. # G( @" {  o- q* Y& |# x$ [2 u
  2732. IRQ_Process_0_End( s0 b2 w+ Y! `. Y6 O& O
  2733. INC <IRQ_Process_Index
    " [. l: ~3 ~# ~2 H
  2734. JMP IrqProgramEnd0 [/ O( O9 l8 D
  2735. / V) ]5 z* b" E- K0 k
  2736. ;==================================================
    $ v' S$ J0 u$ B- N
  2737. IRQ_Process_1;IRQ处理过程1) l8 e$ k; C' K9 _- K" c. X

  2738. 7 A4 _0 W7 g' @' c" f! Z. A" S
  2739. LDA #55
    7 m" {4 ]9 n3 q
  2740. STA MMC3_IRQ_LATCH: ]2 ~: g' {& z& B
  2741. - g  F" D1 u9 U) V5 R7 X: L9 e
  2742. ;设置屏幕滚动
    ' [9 p/ Q! [+ ]- B& T5 R: e9 ?3 `
  2743. LDA #$00
    + W* Q5 X- B1 K
  2744. STA PPU_SCROLL; U: t- g3 c6 j: h0 t
  2745. STA PPU_SCROLL* X7 s9 C5 ?4 o/ a
  2746. / b% }  }  F! ?' t) n
  2747. INC <IRQ_Process_Index
    * B* {+ }! C  E4 S& v5 v
  2748. JMP IrqProgramEnd
    : v8 |+ }6 G# X8 J5 z* f

  2749. ( e" C; [2 Q2 J4 {/ V* K$ F" S. m
  2750. ;==================================================! D. c* ^  h% _
  2751. IRQ_Process_2;IRQ处理过程2
    + s, s; ?6 S( T& O% x2 x# S
  2752. $ x& @5 f; C! L2 X% \/ i
  2753. LDA #15+ L! m& D4 L6 }: z
  2754. STA MMC3_IRQ_LATCH( f/ u% u9 _5 {2 P; X

  2755. * M% H2 W1 S3 M' I
  2756. ;设置屏幕滚动
    + M7 }" B% P! ]7 ^2 P  k
  2757. LDA #$00* T: v/ r* m% O( \$ ?6 g
  2758. SEC
    ! l0 X4 i6 W! y( R0 \8 W
  2759. SBC <Scroll_H% D% R$ i# d2 n( L- a+ E
  2760. STA PPU_SCROLL
      ^; Y, T! c) y9 J+ k+ w
  2761. STA PPU_SCROLL
    " ^& o, t6 `8 U- {- V

  2762. 7 p7 h+ E) C  Q( R0 p" e0 s+ z
  2763. INC <IRQ_Process_Index
    * j- G( s7 s- j8 W2 @' F
  2764. JMP IrqProgramEnd
    ( n0 R& R5 y7 U. V, k

  2765.   p* p4 ^7 K9 {% s
  2766. ;==================================================# k! y6 H6 o& O6 _# ]
  2767. IRQ_Process_3;IRQ处理过程3
    % X1 G: a) x2 K8 C4 r  f5 l& _
  2768. , @0 j. n6 S0 B4 v
  2769. ;设置屏幕滚动5 B/ R" e( h2 X* Z' f  t1 v' C
  2770. LDA <Scroll_H, s7 L! B1 |- T& H6 u/ o, o( ]
  2771. STA PPU_SCROLL
    3 e( T3 @; I6 R% h# a
  2772. STA PPU_SCROLL5 R/ M6 t- E) B, u' h1 Q8 U! }) G! u
  2773. - v( b1 z+ T+ n; W3 a+ C; Y# H
  2774. ;禁用IRQ
    $ j1 a' o9 D3 s# M, V
  2775. STA MMC3_IRQ_DISABLE
      \7 y4 n) ~7 x' I. j- c: s  B& z2 R5 X
  2776. JMP IrqProgramEnd# x- Q3 r+ D; q8 M6 G+ _

  2777. 4 D! {3 [  p6 s- P$ s' R
  2778. IrqProcessAddr* b" u( [8 H, p% B" R- g% A# O) Q3 \
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    4 ]/ w. H0 Z2 ~9 n! D
  2780. 9 y4 W5 E& R; W- \1 D
  2781. .ENDIF
    * B( G3 X+ a1 f5 S$ z

  2782. ( c' z& ^  j( [2 _
  2783. ;==================================================# \& `2 l1 I; f% Z% o; N) p
  2784. ;IRQ滚动模式常量
    6 v6 ]: U; j- B/ _* `, ^, t' t4 j3 J
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动& l0 R3 _  a" E! n7 l
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    2 A( B/ w5 {  n# x& a9 R" n: M. X
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动0 x) w8 Q; [, m* k
  2788. # ]: f4 }# P* K8 \! B7 y
  2789. ;IRQ扫描线数据
    - D2 o. \9 }5 X& X9 h+ q" D, d
  2790. IRQ_Scanline_Data
    $ X9 u; |) }. W: ]# R
  2791. .DB 86 C+ ~3 M4 Y' i9 [1 U
  2792. .DB 54
    ! D2 Y) y) D+ [4 O  @
  2793. .DB 8
    % _) U; d  H& }* x2 T" |, A4 s, Y" T
  2794. .DB 00 ;关闭IRQ
      ~3 h6 i+ M+ c# X$ \2 B  T& N

  2795. 9 P/ ~0 {6 e; N
  2796. ;IRQ滚动控制模式
    & U7 |' m+ r2 n; L3 |$ H; T
  2797. IRQ_Scanline_Mode( D( f6 l1 }9 M# {* G" \
  2798. .DB IRQ_SCROLL_MODE_ZERO
    5 h: @/ k+ j: Z9 {* g- d
  2799. .DB IRQ_SCROLL_MODE_ZERO
    ( g9 H* h+ F8 ]: e
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    6 I$ K0 ?3 x! I# S
  2801. .DB IRQ_SCROLL_MODE_LEFT
    ; Z, n; }) A& K

  2802. # e# d# P7 j" ~. W' {7 X0 P4 D9 o
  2803. ;==================================================/ i: k+ \" k7 I. z" S% u( g+ n3 I
  2804. ;IRQ处理; c0 ]7 [6 ^: E( D' [, g, c# R
  2805. IRQ_Process
    ; {- e. W1 r; L$ @  j  s
  2806. LDX <IRQ_Process_Index. m2 d* w" o* z, O" L
  2807. LDA IRQ_Scanline_Data,X6 y( k7 V7 E$ T- G$ ]* }7 {( R
  2808. BNE IRQ_Process_Latch; Z2 x; K# C# T; W- e! V) [
  2809. IRQ_Process_Disable;禁用IRQ& m  W: E3 k/ F* y" Z
  2810. STA MMC3_IRQ_DISABLE7 j4 i: g/ \1 ^: Q6 q) \. @9 v- r
  2811. STA IRQ_Process_Index
    0 w4 G6 Z' Z8 Z# L5 r: R( l
  2812. BEQ IRQ_Process_Scroll
    ! J; w. ~2 u+ [: R% u4 Y' J
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线% _( _) W$ T( I0 y
  2814. STA MMC3_IRQ_LATCH7 i1 y3 p% `  u: M$ e4 I3 x
  2815. INC <IRQ_Process_Index: _5 `: p- A6 n8 ]. o( L! C
  2816. IRQ_Process_Scroll;IRQ滚动控制: y  d6 b7 a: Y9 g# A; |$ `3 X" g, F1 f
  2817. LDA IRQ_Scanline_Mode,X
    % \* V. W# ^( U1 r% ^# G
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    0 W! z& _5 \2 W4 ?4 b
  2819. BEQ IRQ_Process_Scroll_Left" y% _+ W( E$ m$ o! I2 |
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    ) c0 V! U3 g9 _7 V" k
  2821. BEQ IRQ_Process_Scroll_Right& h* C: M2 k3 @4 c9 h+ z
  2822. IRQ_Process_Scroll_Zero;不滚动
    5 {8 E0 R" Y# c" G# o
  2823. LDA #$00
    ; X1 u; }0 `# f2 C7 q: ^* v( r9 }  D/ K
  2824. STA PPU_SCROLL
    * G0 o" B2 ?+ e  F& T
  2825. STA PPU_SCROLL
    ( |( `+ m# G- Z: R
  2826. RTS
    : e2 `0 R& B! Z' ]% G0 I' {
  2827. IRQ_Process_Scroll_Left;向左滚动
    3 f$ ~9 m6 B& t& D
  2828. LDA <Scroll_H- Z0 r6 }* F: a% J- u, R
  2829. STA PPU_SCROLL. k1 W/ R7 R4 `# R: V
  2830. STA PPU_SCROLL
    & R9 y) A* H  I8 i+ g8 l2 q
  2831. RTS
    3 V* ?4 Y& @2 U; e& v
  2832. IRQ_Process_Scroll_Right;向右滚动! N' R4 T  K. z, X. J0 x
  2833. LDA #$00
    . ~+ F; d8 M3 g& R2 N
  2834. SEC
    + I" e! E2 X. i
  2835. SBC <Scroll_H7 Y1 i6 m6 @; j0 K: c4 A
  2836. STA PPU_SCROLL, w7 q* W0 `7 q8 ?! a
  2837. STA PPU_SCROLL4 b0 I; b* o' w$ j
  2838. RTS
    ) ^! }! I8 L) ?2 r( ?# E

  2839. 6 y8 \, w5 K! Z' x/ L
  2840. ;==================================================
    ( r4 P# l' N8 H: f8 i6 e
  2841. NmiProgram;Nmi中断处理& o5 s" O' Q4 k% o3 V4 W
  2842. PHA
    " ?& C6 u" c; ]$ p! M$ X
  2843. TXA' ]0 u$ Z1 c% B4 R) ~5 e7 O
  2844. PHA; D) d0 N8 }8 \
  2845. TYA" O# U# r$ P# w/ y, F* y
  2846. PHA
    0 d' p  k) ?5 d- g9 e

  2847. 6 }2 K3 ^; w* n, |5 G) F* M* `- \
  2848. ;读取清除Vblank标志, 防止重复进入8 @- C: x4 e) J  ]
  2849. BIT PPU_STATUS. t7 ]% d" q# n! Q
  2850. ( A. I* @1 {% E" g- i: @9 a5 o0 T
  2851. ;切换主程序bank# e5 ?, W" n$ {2 d# x0 `. n3 x
  2852. JSR Switch_Main_Bank
    7 j  h3 ]( F7 U
  2853. ) k0 v) [" i3 ^% t* X3 v+ f+ E' F
  2854. ;Nmi处理
    0 ~; p( T! q9 ^# e( R
  2855. JSR NmiProcess7 {9 Q+ H6 e7 q( T8 M

  2856. ( h6 H( z' O, n/ p
  2857. Nmi_Proc_End
    / I. y! v9 w2 l1 V% `9 S6 E+ J
  2858. PLA  `6 s  |& G3 B: c7 f$ [, o1 ?
  2859. TAY6 u% H- e' ?% W" B
  2860. PLA5 A% K4 x+ |- V* R' d) \
  2861. TAX
    ; X5 r- @' r  E
  2862. PLA/ ?) x( s& j2 Q( p3 _
  2863. RTI
    4 g% @7 o: O# c, V+ q# E  K

  2864. & {6 v) @3 f+ m, o, T; }
  2865. ;==================================================* Y# B' j/ _" m: n" g) ]
  2866. ResetProgram;重置中断处理
    % l9 O9 W1 l6 w+ a
  2867. SEI
    ( I) ~* t* e0 V, }# j2 a/ U# K
  2868. CLD" \$ z: T" X0 ]* Q1 n0 f+ l* w2 z
  2869. LDA #$009 X+ d5 x. L' U  p" @% D; |
  2870. STA PPU_CTRL
    ' ]; {+ L" C1 i) O# t9 C/ \/ N3 u4 C
  2871. STA PPU_MASK
    " P5 V1 ?- }9 [
  2872. 9 q! k: ?3 M/ Y  [3 R. b3 P
  2873. ;切换主程序bank
    3 {7 D. k- p* u# ^; ]
  2874. JSR Switch_Main_Bank
    ) s* p/ L8 {, b* n  P

  2875. ' h8 [6 a4 X0 V% m2 _# M$ Q4 G% O
  2876. ;程序处理开始$ q$ D& b. q) G+ L: U6 Z6 i
  2877. JMP ProgramBegin
    , Z5 ~1 D& Y) h

  2878. 0 s7 O$ \6 V1 B* ^  v, i
  2879. ;==================================================. T, T9 `4 F7 r$ w# Y: M0 h) W
  2880. IrqProgram;Irq中断处理
    2 a, u: F8 g6 P& ~$ S/ c- f
  2881. PHA
    # E7 ?' j- `% X& w8 d
  2882. TXA
    ( j; ]0 Q+ H/ a# ~
  2883. PHA7 \' X6 I& \! Y: {& ~+ S8 i
  2884. TYA
    + p  [" v6 D4 j% L+ E# }1 ?
  2885. PHA
    5 f2 ^* \  l+ K; P. |2 f9 G
  2886. * u5 [; O$ o, ?- Z* E2 g
  2887. ;关闭IRQ3 ]! f- z% ?/ J, c5 l# k
  2888. STA MMC3_IRQ_DISABLE
    ' }" r. G( v$ N  Z/ M

  2889. ( H: r" x. E  @& c8 b) r) j
  2890. ;允许下个IRQ触发8 b# [" J' I6 `6 W8 m4 T; f. N
  2891. STA MMC3_IRQ_ENABLE
    # `. o+ J/ l4 ]! X. |
  2892. $ g) J  ^/ T$ G) P% ?
  2893. .IF IRQ_SUBPROCESS_JMP$ G! l* L3 ?* ]

  2894. ( I2 I! q; ^5 N8 ^) ^
  2895. ;执行IRQ过程
    : O0 S6 }" U. A# Z. Z4 b; P4 ^
  2896. LDA <Data_L
    . o- E! x1 H4 I  v" l
  2897. PHA
    6 v+ U0 v, H( E+ j" e4 X
  2898. LDA <Data_H
    % B! L* x/ L: S) ~: J7 e
  2899. PHA
    5 J; r' Y6 o5 B' i5 k# v7 ?; N
  2900. LDA <IRQ_Process_Index# }" I; f( V$ x* A  I/ a
  2901. ASL A4 y- t. u4 e, G' X- q
  2902. TAY. D: y, W; ^/ B
  2903. LDA IrqProcessAddr,Y
    3 @0 Z& \7 I/ n: \2 V/ W# c. k& V
  2904. STA <Data_L
    & Q+ {6 b. j* V$ T: G4 ]7 e
  2905. INY, G; x- X7 X! f; }! X3 Z
  2906. LDA IrqProcessAddr,Y
      G9 e2 R( E2 T7 i
  2907. STA <Data_H
    2 L" J5 n$ A& m, s
  2908. JMP [Data_L]$ N9 m3 c( z$ o% m4 |3 }  s; q9 i1 r

  2909. 1 L- J8 J& Z- S8 n" R, R
  2910. .ELSE
      _( L  J7 D3 `, R

  2911. % {; f+ }6 v/ S0 C- \3 d
  2912. JSR IRQ_Process
    + p3 W' N, n6 c, J
  2913. 4 h5 e8 h5 M2 w( S
  2914. .ENDIF
    3 i% U" A# t4 u6 y9 X" `! c
  2915. , g$ {% O1 Z/ |
  2916. IrqProgramEnd
    ! A( j2 s" w+ R' p: w. a2 j8 m
  2917. .IF IRQ_SUBPROCESS_JMP
    6 w' q% `/ \( P& D3 N# s3 y
  2918. PLA
    ' l/ \0 n# r0 S1 P% y8 g
  2919. STA <Data_H3 Y: |% a) o3 ?$ `! o) d
  2920. PLA
    : X1 d' z9 j9 R) X# I% \9 ]6 n  H
  2921. STA <Data_L+ l. x+ j3 h" h3 f% M
  2922. .ENDIF
    3 V- p9 W( c- q" W2 V! u
  2923. PLA  F) E0 b8 @# E% ]6 i
  2924. TAY0 l5 r: v2 E, Z: S8 w; m  [7 F
  2925. PLA1 T$ L7 Q# f- }& r
  2926. TAX2 |0 K; g( Z0 u) U& h
  2927. PLA
    : m' V, g- `; |3 A  N5 Q  M
  2928. RTI
    8 v8 D) z2 ]5 L' a. W
  2929. - a0 ?% p) E2 l' p
  2930. .ORG $FFFA
    ) X; T3 W& A1 e+ |' V% a
  2931. .WORD NmiProgram
    & g: ~2 y3 j5 @
  2932. .WORD ResetProgram* \" q1 O+ L% {1 X# C0 g
  2933. .WORD IrqProgram5 H2 b+ o* y7 s$ r5 z$ X
  2934. / u& L- x8 G7 J) r0 _
  2935. .BANK RESET_BANK & BANK_DATA_MASK" V) Q; V6 R( m0 ^8 b: N4 _) C
  2936. .IF SOUND_BAR_SHOW_ENABLE
    . b! m# A+ A& F
  2937. . Z& A# _. F% d1 O3 I
  2938. .ORG $FE00
    - e& E0 l3 c# y" a' b* n
  2939. PHA
    % y6 X+ j6 V5 W6 L& a/ M
  2940. STY $07BA8 n# _' j# E) P6 O5 p. o2 [
  2941. LDA #$8D
    9 a5 t, d9 o* d3 g$ [3 M9 V6 e
  2942. STA $07BC
    0 P3 M$ Z+ a$ F- S
  2943. TYA
      @# ?# h' |0 F
  2944. CLC
    ( h* o0 z& ~/ ?& F
  2945. ADC #LOW(Sound_Bar)
    $ u) \& E4 z0 N- @* z$ d
  2946. STA $07BD9 w: U" t) {. g& r; J7 M1 q5 ]" }3 u
  2947. LDA #HIGH(Sound_Bar)* p' F0 d- [" w
  2948. STA $07BE2 Z1 ]6 m$ j" s! M5 n
  2949. LDA #$60
    0 o+ j  X; N0 {0 r# v. g$ Q, g. Q
  2950. STA $07BF
    % I; E; I8 E& |+ x+ s
  2951. PLA
    9 F  }: T, M$ ~8 f5 F) `
  2952. RTS% C$ V# i/ X! E/ R. x

  2953. % h0 i' B& r9 f
  2954. .ORG $FE20
    ) ~* x% t% {$ K4 q
  2955. STA $07BA. M- `4 M4 S% G$ S
  2956. CLC% i$ m; T5 |5 a# r
  2957. ADC #LOW(Sound_Bar)
    6 D: g! K' j/ R, g9 D4 E) y
  2958. STA $07BD
    5 r! ?! r- `1 K6 L* U& H8 N
  2959. LDA #$8D
      \( a. s% ~9 j: s5 @
  2960. STA $07BC
    . K$ h' S# P" N# ?+ A; |" s
  2961. LDA #HIGH(Sound_Bar)' c8 D6 q+ s0 p/ c4 Q8 |! \
  2962. STA $07BE3 B5 s. j3 ^" i6 R  o, Y
  2963. LDA #$60
    + u9 x5 Z$ E5 t- d+ z" }
  2964. STA $07BF
    9 M2 L# Q8 W" p
  2965. RTS6 ]  M& e8 z) `* c2 D; ]  W
  2966. ( e/ j! G  {5 i; F9 k
  2967. .ORG $FE40
    " b6 n7 i. }/ y; t* Z1 l: h
  2968. PHA" i" v! S  w4 H7 s
  2969. STY $07F1) e8 p- o$ w9 R/ [$ C6 _& ?1 e
  2970. LDA #$8D
    ( p) g; u) i5 y2 @* V4 G
  2971. STA $07F3( k  I/ r+ @1 d: n
  2972. TYA
    8 s, ?+ m1 T5 d' l0 p+ G' |
  2973. CLC
    , ^" [. @- K+ m
  2974. ADC #LOW(Sound_Bar)
    ' Z7 {& |8 q# w$ P, Y! p
  2975. STA $07F4) ~' Y# @0 J3 P: `  I
  2976. LDA #HIGH(Sound_Bar)
    : }+ c7 ~, Z& r4 o% u
  2977. STA $07F5+ o5 D( S0 x) T, f$ _" w+ b
  2978. LDA #$60
    + F8 w; [8 c) r' k; N% N+ T3 l' `9 F+ L
  2979. STA $07F6+ i( ], C$ r: i: L
  2980. PLA
    " W" N5 O7 Q9 @, d) P) y0 U
  2981. RTS/ B( Q) Y+ |/ D% a/ c. F; R
  2982. 4 {2 z, ~4 g' s6 e, p! b) z
  2983. .ORG $FE60; o3 g: l  E! v: W% C
  2984. STA $07F1( u! z3 T( J! u- w, A' F
  2985. CLC
    3 @  e0 C! Q( X% [
  2986. ADC #LOW(Sound_Bar)
    / e& Y2 d) |. \& H  F% j
  2987. STA $07F4
    & M3 b4 C9 Q5 `: u9 A0 a( T9 m
  2988. LDA #$8D
    ' t9 f- i5 U7 a& M
  2989. STA $07F3
      a* O$ c% e5 `* Y6 I2 C
  2990. LDA #HIGH(Sound_Bar)
    7 F- _; i' B9 h8 V  D) c
  2991. STA $07F5
    2 }2 F4 j" h, }8 M- y
  2992. LDA #$60( y: P$ C* \! k" a; j& s
  2993. STA $07F6, ^7 [9 H8 H7 i
  2994. RTS
    9 x8 D& g0 C9 ]9 K* }
  2995. 8 l2 }) z, L7 |2 y6 l- c2 {$ Z
  2996. .ORG $FF40
    - V8 w% r( n- M! {1 Q
  2997. STA $40004 l/ `2 ]# L( G4 B4 c
  2998. STA Sound_Bar + $00: B7 Z4 Z- U8 @4 M$ u* Z; P0 F; f
  2999. RTS
    $ \2 h, _! k8 ~
  3000. 5 T) W5 Y0 W1 k7 U* j
  3001. .ORG $FF48  J6 O. x1 D+ k4 ~6 n% D
  3002. STA $40047 |9 ]) H4 m  T/ {' N
  3003. STA Sound_Bar + $04$ o& B- s7 o" T- L( F3 j; l0 e8 w! F
  3004. RTS
    $ b1 t% s+ S% P6 L* ^9 `  u
  3005. 6 m# m0 ~- a- p8 x
  3006. .ORG $FF50! ?/ c- e  z  u; J; X' z
  3007. STA $40081 B+ x3 j% F1 z5 z6 Q$ q) i/ E
  3008. STA Sound_Bar + $08
    4 W3 \+ ^( W6 w$ n
  3009. RTS
    % ?, E6 ~* y; ~3 E5 |% F/ P

  3010. $ h4 e; [* j5 W' j6 ~. ?) a
  3011. .ORG $FF58
    8 E" N7 k  I/ R# b! p* j3 F
  3012. STA $400C
    5 I2 m3 _3 ?5 `! x4 Z7 a
  3013. STA Sound_Bar + $0C& o) }0 Z: c9 ]1 ~" g+ w- T7 _% K; |
  3014. RTS
    ( U: o+ ^# v. `* E

  3015. 6 O* r0 Y/ W# f4 |
  3016. .ORG $FF603 R; p( N6 ]; |
  3017. STX $40001 E# U4 p$ R  i  l
  3018. STX Sound_Bar + $00
    1 Y3 Q: X1 r3 a. Q/ U( D
  3019. RTS
    7 e' m* h1 W; ^( b$ w7 g

  3020. / ^: S4 s; \5 d
  3021. .ORG $FF68$ z/ O2 X+ O& E4 I- b
  3022. STX $4004# `4 Z; S( ^# ~1 B& R
  3023. STX Sound_Bar + $04
    + z: ?$ t. v1 ~) U
  3024. RTS  l2 T. Q0 E; g" `
  3025. 5 m/ J/ _2 I% L; A
  3026. .ORG $FF70
    + N+ @- f. Y, @8 h! g, U# z
  3027. STX $40082 y8 T- P* U; a  p# l
  3028. STX Sound_Bar + $08# q( O- x: I' L, T+ ?0 r1 Z9 L: F
  3029. RTS3 m) p7 X& f# j( r: o

  3030. & b( [0 D/ F4 e% Y8 P; |8 P
  3031. .ORG $FF78) _( U* `. C: u: c0 j: Y
  3032. STX $400C
    * Q$ H) m% o& ]0 }7 M
  3033. STX Sound_Bar + $0C6 n. \/ D9 e1 v: B5 J
  3034. RTS% S- X6 T9 n& G; F7 M7 ~/ K# s/ q
  3035. * @+ ?8 V3 N( K7 c6 @
  3036. .ORG $FF80+ H& k9 j  n9 j. |9 E5 H" E: D7 v
  3037. STY $4000
    & g( e# ]0 x8 p8 D  b. t! c1 e
  3038. STY Sound_Bar + $00+ D4 t) c% w7 i& i6 ~3 \
  3039. RTS* D2 A$ c& _5 ~

  3040. 6 X, g, g1 G: |! _4 n" |
  3041. .ORG $FF88. Z1 e8 B$ v* Z1 n% ?, `
  3042. STY $4004
    9 M* j! l3 d+ Y: W5 ]3 E& E$ K
  3043. STY Sound_Bar + $04( z0 z; }# I3 F, S& x- r3 A- j
  3044. RTS" S; w" H$ T# U) C2 k3 {2 K

  3045. $ E* X6 K/ s9 e
  3046. .ORG $FF90
    4 u7 K: X4 c  F& C2 z4 `
  3047. STY $4008% ?1 |$ A/ O" T* J
  3048. STY Sound_Bar + $08: E+ ^0 m+ U8 T4 O4 b1 d: K$ {6 ^: L' f
  3049. RTS) H" ?; F" |/ a( T& \+ a
  3050. ' C. H& Q+ A2 h6 ^* L7 j4 b9 r' L! {
  3051. .ORG $FF98
    0 o8 r" e) a/ \& W
  3052. STY $400C% W& d: ~, M% @* l8 D" s
  3053. STY Sound_Bar + $0C
    , \- G% t6 V8 o, W% f) y$ g: _
  3054. RTS
    9 W1 o0 [5 M3 g" e' e' ~9 L# m

  3055. ( V4 i3 v2 J7 D
  3056. .ORG $FFA0
    3 c* d( \  N) G: z$ w( ]1 j; J  ?% i
  3057. STA $4000,X
    & L1 L4 v" o" t& U0 r; S
  3058. STA Sound_Bar + $00,X
    / d0 _/ T! N$ ?. i7 \* E
  3059. RTS
    3 x" d9 D, N* |! s! U( W# e3 k

  3060. ; s# J/ Y9 t0 ]3 M
  3061. .ORG $FFA8' A3 f' L% b( t% v4 Z$ m. `! u
  3062. STA $4000,Y* v- @4 P7 ^" m, L2 X( k
  3063. STA Sound_Bar + $00,Y
    $ a8 i; C- f  d* t+ F( u
  3064. RTS
    , ~+ u1 x5 n. I1 y9 y. x

  3065. 7 d4 ^' q6 Y- Y( h2 _# o& @" O
  3066. .ORG $FFB03 H3 ~3 Y( X7 S& G! d+ q" i, |
  3067. STA $4004,X7 x7 L7 I, g# g' o3 v' P( |8 t
  3068. STA Sound_Bar + $04,X% `$ m$ a( I; O% N4 y7 N# T
  3069. RTS
    3 `4 |; k0 {- m1 g9 ]% d
  3070. $ D* L7 O% M( R; Z: E" \
  3071. .ORG $FFB87 \' h& B% ~- s, x  c
  3072. STA $4004,Y& q# L( Y9 _! Z% @3 N' w
  3073. STA Sound_Bar + $04,Y
    9 s! f( T/ g! e7 F
  3074. RTS
    . ]# V4 I# e+ p: A  r

  3075. # V6 f9 P  v: Q: j
  3076. .ORG $FFC03 s& d* u! c/ L  R
  3077. STA $4008,X
    7 Q! L& ]& c1 C8 H) o4 e3 H
  3078. STA Sound_Bar + $08,X2 e- ^7 q, ^+ z7 x% O3 E( v4 U
  3079. RTS1 P- v( l$ N8 D0 T3 X/ e: \' e
  3080. ( k! R. m- d& b! E& L( o1 e8 I+ }; M
  3081. .ORG $FFC8
    , U3 r5 q$ v3 r
  3082. STA $4008,Y
    & ?( G# @- b7 V, s2 a
  3083. STA Sound_Bar + $08,Y
    8 a" ^: |2 {3 E
  3084. RTS
    ' M. _0 i. k+ U' p

  3085. 1 b( J& u6 p1 |% M
  3086. .ORG $FFD0/ E$ w$ s7 k  C! B
  3087. STA $400C,X
    ) y; }" B. r" [( y
  3088. STA Sound_Bar + $0C,X# ?6 U7 M+ ^* m* M# |% @- M
  3089. RTS
    ( C4 b2 K) t& _! z1 ?3 ^

  3090. & f' L# j( ?$ k& \. H- v5 R
  3091. .ORG $FFD8* C' i: x  I' z: Q8 Y3 w# Q; u6 |
  3092. STA $400C,Y
    7 W( Z+ H) y' `6 [
  3093. STA Sound_Bar + $0C,Y0 I% L8 [& O1 Z0 T: N
  3094. RTS3 T; n% t8 T; T" b+ W

  3095. . E7 l: ?& R5 o
  3096. .ENDIF1 `& N, B$ c( u& I: j1 U0 h
复制代码
& X1 I2 ]! i% x3 i. o0 X
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3115 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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