EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 5 a$ z" T. f2 H+ Q) N5 l$ U
) \) I* ]' C; I5 t8 ~
[FC][音乐12 IN 1]' Q/ }# h- k0 a
时间: 2023.07.23+ d; J2 h# }. L" w/ Q, i+ q# S
作者: FlameCyclone
# W2 [: K( }0 t; \) u$ D/ [
7 {; [6 v/ q6 Z收录音乐内容:6 q7 C1 P$ p( k- m
1.Raf世界( e' ~. A/ B# |. [
2.最终任务5 O' O1 R# n8 v" D7 f: Y
3.赤影战士
' y) G0 t0 l9 i+ f8 K4.双截龙
2 s/ Q" y# p, ~, _# i, b5.双截龙22 L3 \# R* e; ~" _) T
6.双截龙3
/ m! j* ?8 t) \& M/ Q6 h/ M7.洛克人
9 r1 p: r' q* D) K6 w8.洛克人2
) K% y' i& o. U( _9.洛克人3, Z! v2 S! u  u' U7 W' Z
10.洛克人4
2 X  _9 ]9 }- b9 ]' v8 j11.洛克人5
3 `& J. ], Z9 |4 f6 q) m# z12.洛克人61 x; _/ }+ y' ?8 o
( y) X8 _  {9 f4 y2 \+ l
操作:
3 X" I& u1 ~! C% t8 B上键:         上一个专辑# S$ j" K- |, v8 G$ N2 C
下键:         下一个专辑
8 B1 _. _; F$ p左键:         上一曲$ K5 U: [3 O" S1 Q* ^/ p
右键:         下一曲
, Z6 ~" ]+ ^5 S1 r! P. o% d+ GB/A键:        前10曲/后10曲  ~3 F; `4 j& g+ w
选择键:       下一页
  O+ g/ W+ [8 o2 \  K开始键:       停止/播放
" v& [$ U, b3 ]% L) v' ^' q" ~' K1 u6 r7 a* I0 `8 u8 q
http://flamecyclone.ysepan.com/, V/ e1 q" t. H: ^
5 _& ?. L* f% q' ^
! A+ C2 A( A1 ^: M# X

  W6 c" U! G9 p! }, D7 r& r6 S* ]; T) f$ N' H% t8 Z. G) f
  1. ;[FC音乐][播放器模板]) }1 p' x! S8 }/ ^7 |8 Z( ]
  2. ;FlameCyclone 20230710
    / V! L# A2 Y& l
  3. $ I+ t) s: G! j1 s! Y
  4. ;文件头1 [' |0 c9 f- O8 l6 ~- e
  5. ;======================================================================
    ; \( h# z+ s( N6 g) H6 z, k3 l) _
  6. .INESPRG 16                                             ;16KB PRG 数量& k* S8 @; [5 f* k5 m" f: n# u
  7. .INESCHR 1                                               ;8KB CHR 数量. E' C' I. ?7 ^5 g& n# o
  8. .INESMAP 4                                                   ;mapper 4" W) p( J, n+ P: A5 D$ U* l3 j
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    5 c: n, h/ W# M& _1 T( m
  10. 8 {! g. W% ]3 a: m
  11. ;==================================================1 G5 ^. t8 B4 e) A* }; ~
  12. SOUND_BAR_SHOW_ENABLE       = 1
    ) m- Y, f# k6 ]" G% ]8 |
  13. ;==================================================: u9 l: M& Q* \1 N! s! d% Z
  14. BANK_DATA_MASK              = $1F
    # X  e2 y( [8 m2 }
  15. CHR_RAM_ENABLE              = 0/ x2 [4 v  x: v2 U! |& ]
  16. IRQ_SCANLINE                = 136
    6 ]" D: m& _" K3 h3 g2 W
  17. ;==================================================' L: Z4 X+ L5 O4 J; U# d
  18. SOUND_DATA_BANK_00          = $00
    ( o, V4 i7 W7 U: g8 ]
  19. SOUND_DATA_BANK_01          = $011 l2 t) b* j( r: o0 h. Q! ^5 m
  20. SOUND_DATA_BANK_02          = $029 I! M+ \! U. G/ V1 x( j# F) |+ i$ t# q
  21. SOUND_DATA_BANK_03          = $039 i. j7 _4 c- N, G% a. s
  22. SOUND_DATA_BANK_04          = $042 P$ Z4 F. t/ R4 D. U; L
  23. SOUND_DATA_BANK_05          = $05
    9 e( z0 I& k" y' C3 K& A- ?% t
  24. SOUND_DATA_BANK_06          = $06( X+ G. n6 |- u# `3 H  z% B
  25. SOUND_DATA_BANK_07          = $07
    ! n5 _, P2 w  a$ ]3 r
  26. SOUND_DATA_BANK_08          = $08
    4 p" X4 L& N% X2 }" C3 c! ^
  27. SOUND_DATA_BANK_09          = $09# |) t! y  I4 d) n+ J
  28. SOUND_DATA_BANK_0A          = $0A# u$ ~: c/ r% K, f0 K( Z+ X7 k
  29. SOUND_DATA_BANK_0B          = $0B/ v% p9 S7 u) j$ {
  30. SOUND_DATA_BANK_0C          = $0C
    2 u+ i" j/ A9 O# J8 R
  31. SOUND_DATA_BANK_0D          = $0D- L' X: E) G( q% j7 Q! P$ }
  32. SOUND_DATA_BANK_0E          = $0E
    3 s4 }" {3 Z6 b. _3 Y
  33. SOUND_DATA_BANK_0F          = $0F1 m. J  I  f; S! |# t- g

  34. ! @' q) t; \: t9 a1 n4 z
  35. SOUND_DATA_BANK_10          = $10: R) A2 Y& x- q3 L9 ~3 H' l
  36. SOUND_DATA_BANK_11          = $11
      N2 L8 _/ @; ]6 o. S& C
  37. SOUND_DATA_BANK_12          = $12
    . C. E! p6 J! _, @, F& u* X
  38. SOUND_DATA_BANK_13          = $13/ G+ g( C& D% v& G
  39. SOUND_DATA_BANK_14          = $14
    1 X& _1 K' j# {) V
  40. SOUND_DATA_BANK_15          = $15' @; i- t0 _. a3 M- e: M
  41. SOUND_DATA_BANK_16          = $16
    ) \2 \* j6 z0 Y& \/ T$ _, N  o
  42. SOUND_DATA_BANK_17          = $17
    ; a, o9 n! I. M6 p. u% E
  43. SOUND_DATA_BANK_18          = $18. p% a0 @' X5 m7 W& g
  44. SOUND_DATA_BANK_19          = $19. L7 a% `$ M5 X0 N
  45. SOUND_DATA_BANK_1A          = $1A/ G' ?3 i0 P$ z" W
  46. SOUND_DATA_BANK_1B          = $1B
    4 O; d2 w" J/ l/ h2 i" H* i
  47. SOUND_DATA_BANK_1C          = $1C/ V# P7 ^/ C/ Y# Y& `1 L
  48. SOUND_DATA_BANK_1D          = $1D
    - J$ v) K( F, d

  49. * x; w& L$ ?" P+ U
  50. SOUND_DATA_BANK_C000        = $1E, x/ m3 ^0 H. I* f2 k; I
  51. SOUND_DATA_BANK_E000        = $1F+ Z# H2 O% I: Y8 K' d" v
  52. ;-------------------------------------------------
    9 M" _/ o" k$ ?7 p. [' P8 o# g. M9 ]0 S
  53. CHR_DATA_BANK               = $20
    . V& t) a$ b2 A
  54. CHR_DATA_ADDR               = $A000. J7 U, e/ b, s' h; T
  55. ;-------------------------------------------------" t8 o* b) E" |9 n- D5 a
  56. PROGRAM_BANK                = $00
    4 {  v* z% A% V2 H/ g( ?
  57. PROGRAM_ADDR                = $80005 ^& @$ M; S) K$ u7 H, S
  58. ;-------------------------------------------------
    ; L; q2 F4 X0 S* q7 h' r. j( }
  59. RESET_BANK                  = $1F
    $ K0 }% E8 E0 f1 J& A, J2 ]
  60. RESET_ADDR                  = $FD00
    & G1 n6 \. [* N- [9 ~' {

  61. $ S2 U! x9 u* B+ b8 h- R
  62. ;==================================================
    # ]7 W# q. k! G( W: E
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    & I2 I8 G( I8 z& |
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    2 K; N2 `6 U- f# a9 Y$ T+ [
  65. PAGE_SIZE           = 5                     ;每页节目数
    # D% [2 E+ o: _# y, Z( k  o% \

  66. 8 v& T. ^4 g! L! P/ ]  T0 N
  67. ;==================================================, M  ]/ B/ H( @3 T% `: G) O2 z9 M" p
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除9 ^- o6 H$ _+ w& ?3 P$ }' ]
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数) t4 g/ H/ h" f* d, |+ y% [
  70. .ELSE
    3 |3 T/ x4 m* L4 G: a! `
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    # k! J. v+ J5 Z5 [% F
  72. .ENDIF3 M+ s; u/ w: Z0 n) ?
  73. 0 C! x- Q7 ]/ V% ~1 J- v7 J7 f
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    . ^3 E' ^8 D9 Q  N

  75. + p7 B1 V' O0 O" m9 b  P+ C
  76. ;==================================================" V  ?5 M8 ]; m+ @% u7 S
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置0 p6 l, \; A: p) e
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2' Z& w# |! }) `6 G
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    ( N/ E* ^2 g' N6 \( D7 I
  80. ;==================================================
    4 k2 p" h) j. k8 }$ Y0 T
  81. Caption_Text_Pos    = $204D ;标题文本位置
    6 P/ H9 ^' G/ K
  82. Author_Text_Pos     = $2324 ;作者文本位置
    / E6 h1 S- P$ j7 L  f! {  H9 |
  83. Date_Text_Pos       = $236B ;日期文本位置
    % _. r" X1 X4 Z2 }1 Z
  84. ;------------------------------
    - A; Z. Z' y2 k9 F" N# l, G
  85. ;------------------------------
    ' J0 v7 B3 [3 [, c3 c: q$ Q, f
  86. .IF SOUND_BAR_SHOW_ENABLE
    " v3 Z! b- q6 {
  87. 8 j0 L5 t9 N5 U* i
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    ) z1 T6 l0 t" a7 K
  89. Play_Time_Pos       = $22B3 ;播放时间位置. ^: z0 o/ L1 M
  90. Play_State_Pos      = $22F3 ;播放状态位置0 m' l9 e1 \/ l* b

  91. " Y# [  z7 y4 m! }3 w- R9 X: P
  92. .ELSE( R+ ?: y3 A9 q/ k2 O8 Q) l4 G; j0 j

  93. . B, V' c, ~3 v4 D0 c
  94. Play_Index_Pos      = $226C ;当前曲目位置
    0 ]& m" A3 U" k5 C# U
  95. Play_Time_Pos       = $22AC ;播放时间位置4 X, }" P1 ~; ?$ v2 v  T; t( p  ?
  96. Play_State_Pos      = $22EC ;播放状态位置
    # F8 p. H9 x: m

  97. : w/ e  `6 z: |# F% o1 N
  98. .ENDIF" _# l& f  f6 p% Z' {
  99. ;------------------------------
    7 p+ K- X. Y$ L% Q
  100. Track_Name_Pos      = $222B ;曲目文本位置
    $ H5 y  \9 r8 t3 f$ M# X
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    * O) v# }# T6 _9 S
  102. Sound_Track_Pos     = $2265 ;声道文本位置: c3 P! g; F6 u/ p! w( E& z
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    . k! c6 {5 E) y# `! h6 I
  104. ;==================================================4 p3 k' c: _# ]; t3 M' M
  105. Scroll_X = $00) C0 ^9 G7 B4 a' }% E
  106. Scroll_Y = $00
    * x7 X3 B9 t+ \5 n. z1 G
  107. ;==================================================; T; Q: i* e2 D1 L
  108. Sound_Ram_Addr_1       = $0100! F& `/ E, v1 H- F8 o/ t
  109. Sound_Ram_Addr_1_Size  = $80
    . ~/ g9 o+ T5 o. r0 Q
  110. Sound_Ram_Addr_2       = $0090
    * U8 j7 {) b+ |7 H( {" B- L9 m9 J
  111. Sound_Ram_Addr_2_Size  = $700 s2 I9 ^% Y/ p5 n5 V% k
  112. Sound_Ram_Addr_3       = $0700
      M$ J+ f3 z6 Q0 s2 M( i
  113. Sound_Ram_Addr_3_Size  = $00# O5 K/ Z8 T( A
  114. Sound_Ram_Addr_4       = $0400# S: b% O1 v/ g
  115. Sound_Ram_Addr_4_Size  = $003 p+ \( H- p4 Y
  116. Sound_Ram_Addr_5       = $05004 L9 z6 Y8 T7 m4 X$ k
  117. Sound_Ram_Addr_5_Size  = $408 i! W' D+ W& Q% S0 t8 i: w4 R
  118. 7 u/ U2 A& P: A  `; n
  119. OAM_TEMP_ADDR   = $0300
    8 w* ]0 m) p* D5 H7 U% y8 x' ^5 N9 Y

  120. - X# l- Z  I5 A6 |
  121. ;==================================================+ c6 r$ u) Q$ ?; {6 o6 g
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    * o7 G1 u! P+ P* [
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器4 S8 \8 Y) q6 r1 d" g
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    8 }. Y' A& N8 Z, x* S7 W5 e: `$ b
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
      d# Z8 T/ t# Q; h
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    ( r' v3 A7 m" J' {2 ?% q
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 ; V6 n% ?( M$ X6 M' a7 f
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加# e5 ?; ?7 M+ }9 D2 i# [
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    0 W* g2 w7 u( \8 @5 c
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存+ Z& O  G7 V1 ~! U  l
  131. APU_STATUS              =   $4015   ;声音通道切换
    : M  ^, K! w+ @! r+ S+ _$ L
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    4 G- W" g+ I/ t4 H% ~0 d7 [- i
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    + t8 G/ u) c3 y" r( g6 \
  134. ;==================================================2 P' K) X) d# q& X" ~- a" K- B
  135. MMC3_BANK_CTRL          =   $8000
    6 N: \' B3 \/ L$ L- j
  136. MMC3_BANK_DATA          =   $80010 z' c  u0 F0 T0 R7 z; Y
  137. MMC3_MIRRORING          =   $A000, O  k! m2 e) s% G5 `; ]& R
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    4 X" Q( G+ B- b) z( W$ q
  139. MMC3_IRQ_LATCH          =   $C0000 |* k! z% [% E+ e% G7 O5 J' ^
  140. MMC3_IRQ_RELOAD         =   $C001
    ) @0 S* b8 P2 j" r: E1 _( `& i9 h
  141. MMC3_IRQ_DISABLE        =   $E0004 j0 S$ h  S& E. r" r
  142. MMC3_IRQ_ENABLE         =   $E001
    & X9 m, ?6 l8 _2 ^
  143. 8 b' w! e% O' V
  144. ;==================================================
    + A9 Q# Z2 `& p  F: @! K& g3 n
  145. PPU_Addr        = $0200
    ' x' C6 B9 H  W* V5 P/ y
  146. Palette_Addr    = $02C0! q" J6 x, m+ d; M; o; U
  147. Sound_Bar       = PPU_Addr+$E0
    ! ]) u) s+ f& O/ }! c* t
  148. ;==================================================( V1 t8 N! ]# M' d* B
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    6 o3 B( @, s% a6 h* R
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
      Q2 o! W# R# v) V; Q8 I
  151. PALETTE_UPDATE_MAX      = $2C
    9 g7 A. |5 G9 h9 m5 q
  152. PALETTE_UPDATE_MIN      = $21
    * [. @0 q6 u4 A" j- `: ?
  153. PALETTE_UPDATE_INTERVAL = 60
    6 K2 \5 E# Z  \8 \7 s( a3 V$ ~& w
  154. ;==================================================
    - u7 l, x3 I" ^+ [
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    0 p+ j1 a7 A) R* T1 p
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    ! N: c4 U7 M6 K  h9 Y
  157. PPU_Addr_H          = PPU_Cur+$03
    % Q% D* o* {% r# e7 {
  158. PPU_Addr_L          = PPU_Addr_H+$048 A9 ~8 S9 K5 E! b2 c. p: g
  159. Screen_Ctrl         = PPU_Addr_L+$012 ^  l6 e) [' O  p+ W! b; N# s
  160. Screen_State        = Screen_Ctrl+$01
    ; |) m7 Y, X6 H
  161. ;==================================================
    9 V  E# k) Q6 i8 k! H, k
  162. Use_Ram_Begin       = $50) M7 M! Y( x. o. [! N1 R
  163. ;==================================================& g; K9 V: {) Y' h& B! H. V
  164. JSR_Addr_Op         = Use_Ram_Begin
    . Q6 u- f7 W  Y5 F! s6 A; ?
  165. JSR_Addr_L          = JSR_Addr_Op + $01/ `1 j; q0 ^6 f# z
  166. JSR_Addr_H          = JSR_Addr_L + $01
    , C0 G3 N0 a- ~# f3 |) S7 i
  167. JSR_Addr_Rts        = JSR_Addr_H + $01) b, f( Y9 o2 n" E7 u$ U
  168. Data_L              = JSR_Addr_Rts + $013 p+ Y' v% y' h( [4 ]' B# {
  169. Data_H              = Data_L + $01
    ' P, x. G  {8 Y
  170. Data_Cnt            = Data_H + $01* W; |0 I4 ?  h8 B2 i. n
  171. Data_Buf            = Data_Cnt + $01
    2 v. l( a) l) q; x; h8 t0 o
  172. Nmi_Time_Count      = Data_Buf + $01
    " O6 b) H- d3 z0 m- V3 H* z$ L" n
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    4 E3 d/ k8 b2 g/ g1 K
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $019 u3 F# r3 V- H( w3 F9 E

  175. 4 k/ ?3 d' ^; G. c8 r! T7 r
  176. ;调色板刷新标志" w7 e& _5 ]% a
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    % ^1 u9 g; n1 [( ~

  178. ; [5 B) r& T0 N0 D
  179. ;当前帧文本写入禁用标志
    ! H$ f) |, M  H) p  S$ U( F$ R9 ^
  180. Text_Disable_Flag   = Palette_Update_Flag + $016 {2 t. Q+ ?  L' u& M. o

  181. / }/ g4 u, Y/ E$ ]
  182. ;==================================================
    / V  Z' x+ }7 q: J) D
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    2 _1 B' |+ k6 Z( q3 P% X9 E
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    ! A" O$ x) M0 Z% W) ~# {
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间( F  ~: u" Y3 j2 s4 X; u4 g* `
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    4 r( j; ]* P" O! T; ^: _
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    4 E. a2 w3 p+ n. N1 l. o
  188. ;==================================================/ v& Y& g. j, q: S  z4 J5 z
  189. Key_Keep            = Text_Disable_Flag + 1
    3 v6 ~( r6 \% ^! c
  190. Key_Once            = Key_Keep + $014 E, y' J! E; E8 |
  191. Key_Kemp            = Key_Once + $01
    6 }" z- A! O0 J: @
  192. Key_Temp            = Key_Kemp + $01
      k/ Y4 E# I7 Z' k$ u( l1 y$ Z
  193. Key_Getv            = Key_Temp + $01
    $ R4 ]% m; Q, n: m3 A+ s
  194. ;==================================================
    7 k9 a( j/ Y( ]0 B3 @& l% o
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集, ?) r2 y7 G9 ?' o, O
  196. Music_Item_Last     = Music_Item_Cur + $01
    $ j' @( h/ n% W) e9 i
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    : L- v- R, U# ^- u' j8 f
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    4 g6 d& ^8 [6 s" i9 N# Q- Z
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目: W3 d7 s; S% `3 m! e- d7 L
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    & E- K! [2 V6 }. o# t
  201. ;==================================================: Z6 o( U2 L' z* u9 v& |) ~
  202. HEX_Data            = Music_Stop_State + $01* J, R9 O% N+ N( C' T8 ]
  203. DEC_H               = HEX_Data + $01
    0 p, b  Z" U7 J* Y4 t% W
  204. DEC_T               = DEC_H + $013 b3 T2 i* f; N2 e# J8 `9 ^! U
  205. DEC_L               = DEC_T + $01
    ! C  N7 V! _& v4 T8 ?
  206. ;==================================================
    - O& ~4 [: C5 H3 e2 y
  207. Time_S              = DEC_L + $01% Y4 r/ V( N5 i0 m. |/ p. F
  208. Time_M              = Time_S + $01
    1 W. n; F3 h6 }8 a8 B
  209. Time_H              = Time_M + $02/ e; V* j& X$ _! o
  210. Time_Cnt            = Time_H + $03- e" X! x5 k" ~% P+ O
  211. + \7 E+ t3 l4 n; M* h
  212. ;==================================================
    6 v, {  [2 k/ O) o/ Q5 r
  213. Music_Bank_8000     = Time_Cnt + 1
    3 }2 _# d3 S' o: h8 z# v$ R9 X
  214. Music_Bank_A000     = Music_Bank_8000 + 1. k7 ~: W; n! h' A
  215. ;==================================================
    : W( ?( P4 ^% Z" E+ l5 [) z
  216. Scroll_H            = Music_Bank_A000 + 1
    " n& d; S) a( `* ^) Q
  217. Scroll_V            = Scroll_H + 11 }. U, n  G% `" \2 U
  218. IRQ_Process_Index   = Scroll_V + 13 a) R1 W7 c# i5 b9 _. }& T
  219. ;--------------------------------------------------/ l, V0 D& p7 X( P
  220. Page_Cur            = IRQ_Process_Index + $01, J, O7 i2 B# ^* d+ l  ^
  221. Page_Cur_Index      = Page_Cur + $01
    " K& h, h" Z; T! d3 C: k1 [5 \' r
  222. Page_Cur_Cnt        = Page_Cur_Index + $013 r& f" o2 L; C+ k
  223. Page_Last           = Page_Cur_Cnt + $01
    2 s! b$ }$ [$ I* G" Y
  224. Page_Last_Index     = Page_Last + $019 A9 {1 ]3 y7 i3 P
  225. Page_Last_Cnt       = Page_Last_Index + $01! D+ u" ^9 s0 e  D2 E
  226. Use_Ram_End         = Page_Last_Cnt + $01) l4 O; t! Q6 J9 R
  227. ;======================================================================* o; p. X5 s( S3 g- z" z4 x* l
  228. ;音乐数据块
    ! R, e9 h; C3 N, {) ?$ ?- v6 ]

  229. 9 ]9 Q# {! k9 \( h
  230. .IF SOUND_BAR_SHOW_ENABLE
    + H* J' a9 x1 n& ~6 A$ X7 y
  231. ( S' d7 u# |) ^2 _: L8 t8 o- P4 N" m
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK+ S: _4 \; P+ f
  233. .ORG $9000
    ! z+ _, h6 @' E9 M" W; q, q
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"0 i, H( M$ Q; b6 N5 M

  235. / K+ F+ `' ^* E. _( u
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    & o& {3 N. }9 A  F9 O+ C: |8 {
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ( E7 G1 M2 L5 s! {
  238. + s4 ]* c& {1 s0 Z2 w6 s
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK! F/ P; \& R9 V3 m, ^
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    5 S4 f0 B8 _/ w3 o$ z
  241. 5 L, f2 q$ E- `# s. c! p
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ( W. f- z; k* d* n- H
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"" f+ n2 X+ Y4 q3 ^" l
  244. / O8 b8 y* h. n" S; W
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK0 m; p; k! h: s$ A+ v% N( G
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"3 X8 t" ]9 U+ E; Z

  247. & ?3 k; X2 \) c
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK& r4 E, H2 s3 g
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    1 Q; W. G% }2 L, \* z" @1 z  R9 Z* z

  250. * }5 C* h) j6 V- ]
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    " d: k1 `: U& l5 U' x& t5 S6 g8 A" U2 j
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    ( m/ v& I5 M; o' R0 R2 u; {. ^
  253. 8 k5 Z; U2 A$ [7 R& ~$ f
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    8 n' k6 G5 w6 V' @! d' L5 ]3 ?
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"7 O+ G0 g" H$ p& X
  256.   T! [+ a( g, o. X
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    : O+ [8 A( j/ _1 o
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    5 j* ]$ @1 E; ?+ _% n( f
  259. 1 }9 [; x% J  P+ p8 c- j" W
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK8 n  Y4 l: J4 p) a3 K
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    $ w3 O/ ]) W" ]5 k
  262. - D# @4 _, ?. Q) I
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK& o7 ?: y! [: x6 g
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    / |/ D6 k$ a& A4 ]$ `' U
  265. 3 o7 s  K) v+ ~/ F* |5 T
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    ' |0 X; L; t" T
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    . i5 O4 d- L0 G
  268. ' A6 i& h9 z! T; H
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK" }! ~& W5 l! A% Q( Q  {
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"- r) f9 S  E) R

  271. % }) ]! y5 ]( m1 {4 @5 G9 F3 ]
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    : p* d# Y7 u* C* v
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank") ~" W. A  V6 }5 ]) W5 J" z
  274. - P8 \, C. ]3 r* U+ w: i! e9 b; ^
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    & N, ?- m: D- X0 U
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    ) a1 n# A2 f2 |4 y
  277. 8 n7 k- P; H9 S
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK) `0 o) ~* L0 H9 \% {. j3 J) K
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    7 P- n5 E* C  H: V9 o: i: p
  280. ' z3 t6 ~: o7 R; C7 c* \! J
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK$ M, y" j' N, ^
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    ' r# \( e& w1 f4 F' u3 _2 Q- Y5 D

  283. * O' [. Y9 H* _4 H7 K6 K) r
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK, E, T9 i; ^4 b, l
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    2 R2 Q+ N0 D! y( ?, J2 h. M3 o# w
  286. + [/ V; }6 q/ t8 [. b
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK3 ~8 p8 x2 L5 M# o0 ?# I0 u& U+ g
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    * x; ^2 U3 U5 M9 z. X

  289. ) [, U' b: C1 s% ^7 R
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    . O. X1 K3 }- ?5 B+ N
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank": q! P! R  u* Z* F) g

  292. 9 t/ D, H9 M2 [. w' S( q
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    - n* J9 H% n8 U0 c% ~) u& \
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    ( V; b/ B0 D( v  v% y

  295. + T3 b9 ?, Y! k/ h6 d$ z
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK% _, p# [5 q1 b( M2 b/ i, t
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    $ ?* f7 P. q2 S1 T. P+ F/ `, S; I  z: r2 q

  298. 7 p  o1 k- Z1 _  g: g$ |% d
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK/ ^1 U& b! M  }  C$ U! X" T
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    1 W  j. Z( t& M8 r

  301. $ o3 u! A4 c; S# F
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    3 ^3 N/ m2 h2 W* _: V9 H
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    - L) f. f8 v$ g4 D* c0 h
  304. 5 R. U5 D( s1 A. A- f! a: u% \
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK( A( E4 |4 h8 N' }
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"4 X- l0 @% j' I) j. ^! m& E
  307. / ?# N  l; w5 o# Z% |7 @
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK* F) D7 v6 x, J
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank", \, _1 I# R, [3 G2 U
  310. " o& R1 K- Y7 S  k# K
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK" R1 ^# {! R4 M7 ~$ E$ U4 E$ R
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    7 K6 H4 S% ^6 k" i& e2 }

  313.   @; }- q5 K# J
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK3 q$ ]+ L9 u" O8 \5 t
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
      R4 x* o# }. K$ _# D
  316. 0 |2 y+ V4 z9 C. m8 e
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK. _* q- S% h7 }
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"+ k, s/ z% A; ^2 k( D& s

  319. # O3 }9 a, x) c: k4 j
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK. R5 V8 A, I5 T# X) L* `
  321. .ORG $D400
    ; i  `$ M& J& @  Z
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"+ q  G+ k$ v1 a7 k! O& Y# s* j
  323. 4 e" o& E- ~- I/ X
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK: y, J* a( ]  q5 F. y
  325. .ORG $D800
    ) w0 e8 n/ `0 C+ w
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"$ ]0 b9 L$ T7 [, I, Q* Q

  327. # p/ L0 E0 Y7 }& @2 R
  328. : b0 \8 A0 _; G8 ^. _, V
  329. .ELSE
    ! _2 L$ b. Y7 }+ f

  330. ) x: f0 i# j$ H" q+ B! G, y
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK: O* J1 k9 X7 G
  332. .ORG $9000/ B& t; v9 s! W' a( J! A
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"5 V  p/ o9 T0 t& q/ ^! A, b
  334. 8 R& x( O+ B' a* X
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    & c+ W' p$ h8 ?% L
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"# x" @, f1 v' e- I5 u. j

  337. & h* Y6 o8 T6 D& Y' T1 K6 g
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    - W- U2 i0 e3 [
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    0 Q, p- e% o+ Y8 x. p, g9 J
  340. # O( x6 M% K" y9 K- T& d7 o9 S
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK9 n; m* L- Y# c1 ?! L& d" W
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    - T8 G" V: t& k$ U/ \& a$ y
  343. + b5 a& M# {6 k* S  |2 r
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    : R8 k1 z) f5 x; D# K
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"0 L' o) [" b  P2 k& o( p. {
  346. ) O, g1 \: o: l- t0 z0 ]
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK3 m6 R, ]% J) h4 n$ x. K  m8 z
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    ! I; N% v& b% ~

  349. : L- A, J2 C2 j! c8 O# e
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK) o" D2 e5 N) n$ b+ L
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"6 \' z# |1 J3 [

  352. ; i& B- T8 O1 M: j7 F* O
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK9 d7 ]% O' w3 a
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank". D. t8 p8 A8 {0 k/ i* q

  355. % H3 W1 C  t) o. A/ j' t
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    6 {8 S+ F$ T, e0 [& @
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"$ f8 \3 {0 J* Z! @  W, R

  358. + N6 y+ i- M% }1 q5 N. Q0 A
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ; M% f" i0 f0 Q
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"; v+ U- T# l# e7 _% {! S

  361. * ^( v  a9 k! e, Y  `" {; B
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    ' Y7 V7 V" }. k7 y1 Q" H
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    3 k6 F" m; b: H0 E: s7 F

  364. . |2 _" u4 f0 L- _$ c* u
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    . p# u8 f" \7 H* G) h5 D7 s5 l! B
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    - |1 f- q" I  c
  367. / N, i. V& r% K( `& k; y/ D
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    ' O/ @8 @1 U4 }3 n
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    , [; U* I/ y% K8 @- e: H7 ~+ w

  370. . w1 ^5 s- C2 x* o* S0 d7 D
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK# D8 ^3 U2 T" i! `4 u9 j  P5 C
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"- |1 @  }, Y+ l* S1 p

  373. - M9 W5 Q) Q7 J- ]+ \0 ]# v' M
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK) d$ z2 ^- y* `3 a; X0 p$ {
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    , O& d8 U  Q; T8 B7 `3 _

  376. $ J5 A# t" c- {" g& o# `
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    : i' \. |" X" m- Z# O
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
      l+ W4 ?& {" G3 Z. Y: ~4 W
  379. ' F! r1 u9 F' s) b2 l( o/ B4 h
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    0 m  D- P+ `2 k( {
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    , U, _5 a& n, t3 z2 q; d/ L

  382. 7 Q. B0 t! o2 J5 t4 U+ J3 Z1 o9 U
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK  L. i+ K/ U; w5 B
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"/ {+ A" |- R1 V: u! i
  385. : U( e, z6 O. G$ K
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK- k& Y  Y9 `  R# G( }
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    2 m2 I2 w" A5 f# C- z

  388. : w! }# E% x7 }# @
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    % i1 \  r; r4 L9 D; S' t
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"2 _* z( d$ @$ P/ \8 V9 w) v) a
  391. " H& `7 _6 X1 W9 M8 b( L2 W
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK% v/ W4 [+ e4 I9 `
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"2 E/ W) E9 j2 a' D7 r
  394. & u- |1 E7 N) R! X! y
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK0 w  Q" r& P; l7 j6 x* {) q
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"4 \& Y2 O3 `! f- d( }

  397. & J% _5 w0 _3 H* O1 |
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ! G% T! Y8 d& s, Q2 N
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    5 c) c" h$ N8 T7 V$ e1 ~
  400. 5 Y4 z9 z* f- g/ Z9 P
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK. h/ w* r  s" Z+ F" |1 ]: Y
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"% d0 w$ I) ]7 r4 n
  403. : {: }' W" `9 C
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK3 p* X& J! A# @  ~
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    # R. g8 t. U$ Y6 |7 ^
  406. * Z% h1 f9 {  }( s* {) V
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK7 W# E/ `' p: j9 ?
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank", S' D% l) D4 d7 W- s  v; U

  409. 2 Y9 ?8 Q$ Z0 g6 R0 a8 x
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ; p# q' [$ C4 q- V6 i
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"! a& S9 R6 l8 Z1 H4 B) [
  412. 8 M. I$ ?( g) ~* _* R/ D2 x* Z
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    0 T9 f5 w. k  k+ i( t
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
      m$ M3 b1 Y% x  r
  415. 7 Q4 z" C2 M, x( }- g
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    1 P/ p: R: Z/ x. ^6 l
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    0 ^' W$ w4 Q  X

  418. & X& ]. U5 g) r5 C
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    , h' A% f, }9 M! U! `; Z6 Q, i
  420. .ORG $D400
    * Q1 E+ [0 ~& I$ x. E( p) ^
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
      ?9 o$ ^& r3 D# O

  422. 0 m4 j8 Z" F  H- v( C" s0 \2 _
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    % y5 P" t/ z) B' q* k# b/ q' [
  424. .ORG $D800
    ' d4 o0 p$ \' I( B* z9 O; x( z- `
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    ! _+ n* a% T" k/ g$ s

  426. ) _# @; N: `- S7 ~8 |; c1 E
  427. .ENDIF* R" w- t5 b, q  i5 x8 x
  428. 5 K0 ]  Q$ y1 ]$ s6 n7 @4 o
  429. ;CHR图形数据8 C2 Z" I% b3 s5 f, @! B/ b( p$ C
  430. ;======================================================================! h; W; {) ]# t: \3 n7 B
  431. .BANK CHR_DATA_BANK
    - O! |3 W( l6 P' q( G
  432. .INCBIN "chr_bank/chr_data.chr"
    3 F9 m% a# `- q' l
  433. 2 o4 o# t1 O5 T8 Y% d
  434. ;======================================================================+ ]3 T6 ]& }9 ?. \4 M* z% |
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    " @5 z3 B* n2 O9 M. G  |: R/ ^
  436. .ORG PROGRAM_ADDR
    : E8 |3 Q( V: L) ~( T" [, m* }
  437. % F6 C/ V) m% f
  438. ;==================================================* ]! p/ {' [+ b/ `1 G0 S! c6 p% I
  439. NmiProcess+ W' D, k( K3 N; D

  440. ; W" v" l, B% P" t. p6 k
  441. ;关闭屏幕控制$ u6 |  N9 s! I8 Q8 D
  442. LDA #$00
    2 a  d* \9 h) R7 [* d9 E
  443. STA PPU_CTRL5 D8 J! C1 ?  A; i

  444. # r. H$ d, h$ v. b# C: p& ^
  445. ;没播放音乐就不需要触发IRQ
    : g; E( l, h+ L' G* M/ ]" |
  446. LDA <Music_Stop_State8 Y# M" s) M' b9 F  O/ K( C
  447. BNE NmiNormal
    6 X0 j+ f* M( g: n+ ]$ X
  448. , C: L9 n8 }( E0 h% X
  449. ;重置IRQ索引
    + Z* ^5 [2 j/ @  t6 u! Q6 o  j
  450. LDA #$001 x+ b- h' z8 V1 B$ U; g9 f
  451. STA <IRQ_Process_Index
    $ H8 o3 T) w2 J( x& _0 b4 q

  452. 1 Q4 M3 o8 K+ d: D6 h, {. ~1 g
  453. ;时间秒数为空则跳过
    : [! y- ]" m, R% {
  454. LDA <Time_H1 {& U8 h# I% v) u2 ]
  455. ORA <Time_M
    ' X5 _* Y! O& \% p
  456. ORA <Time_S
    . W! i9 T- @' |/ c+ F
  457. BEQ EnableFirstIrq4 r2 r% J3 u5 M8 V  g: s3 \

  458. ) z2 p; Q$ N* h* h2 Y/ o7 u2 A- ?* S0 t5 D
  459. INC <Scroll_H
    6 |1 Z5 G+ b9 F4 [

  460. 9 u! ^8 `' ^" l  P6 r7 W; S
  461. EnableFirstIrq 8 q# I( m3 \3 f0 H  g
  462. ;80条扫描线后触发IRQ
    3 T# h) i4 ^; x( P! m
  463. LDA #IRQ_SCANLINE
    9 J7 |% d/ D) O5 G1 Y
  464. STA MMC3_IRQ_LATCH/ ?, P& Z! Z  u( m* S  {
  465. STA MMC3_IRQ_RELOAD& A6 y9 r; r3 k4 O- W* i
  466. STA MMC3_IRQ_ENABLE
    6 Y6 V( Q' I2 k" x5 B" h* j, Z
  467. CLI
    " h" o/ g( c" z
  468. 4 s7 E' ~1 A1 f9 Z% d
  469. NmiNormal% E" ^" P8 H2 W
  470. ) M$ b4 c. |5 Y1 R8 d' e9 S
  471. ;处理PPU图像5 }5 ]" h3 [4 R, G# b2 \* e
  472. JSR PPU_Proc
    , e3 `5 C1 q1 ~% g. S

  473. % [1 N  @/ ~2 o: N+ E: `/ {# m  x+ r
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)7 E8 S+ ?4 H, L) o4 C* y
  475. LDA PPU_STATUS
    $ M+ G0 S4 o  h
  476. ;LDA #$00
    4 C0 V5 Q* u1 X4 @; X- Q* ~- ]
  477. ;STA PPU_OAM_ADDR* X8 N5 C% U4 u! H5 c# `
  478. LDA #OAM_TEMP_ADDR / $01009 ]$ S" C" T) |1 Q2 G6 G7 x" I& @: w
  479. STA OAM_DMA4 b& i; P% |) L% }1 Y% v

  480. 1 g3 L8 Z* Q: b
  481. ;启用NMI中断4 c# I% A3 Y8 Z6 V( n4 _
  482. LDA Screen_Ctrl! {) n! q. E" ]" S' c$ C
  483. STA PPU_CTRL
    , O) {# M9 H8 m2 h1 V1 D

  484. : E( v& ?  N% ]( c
  485. LDA <Text_Disable_Flag) f  C# e- j1 V* f) t. h
  486. AND #TEXT_DISABLE_RAM9 V7 `* O  J- {  U2 n& ~
  487. BNE Nmi_Sound_Play
    $ b$ |& B; [$ w7 S" v8 `9 N2 C0 J
  488. % k( t6 Z+ ?6 u* c, u9 v) d
  489. ;处理手柄输入! h7 k1 L) Z2 h
  490. JSR Key_Proc# S) ^% @' w$ F$ E- S, Q8 ?
  491. % Q4 z! r: T1 U! h
  492. ;切换音乐(手柄触发)
    ; K+ C: o5 a- w( r# e. G, l
  493. LDA <Time_Wait_Cnt
    % B/ N' ?' x4 J6 l
  494. BNE Nmi_Cursor_Arrow4 R! d. _/ `! M% G7 u% w) }2 B
  495. JSR Change_Select_Item
    ( c# X. n8 m5 E7 E9 K/ |  u
  496. 2 ~" t( w9 W, z0 E+ Z/ R. N
  497. Nmi_Cursor_Arrow6 V. F7 A5 E, {% B, d8 s
  498. 6 F% R( d: z, ^' {( _
  499. ;处理光标箭头0 f2 M8 |# R* r  A+ W! t; V
  500. JSR Show_Arrow- C, ]( C  i) l% E& ~

  501. 8 R  w0 p* l: u( A: [
  502. ;更新调色板2 W- F6 ?) h  O) ~1 |$ M
  503. JSR Update_Palette_Data0 r, E8 G9 i* s  w

  504. 8 N2 R- i! \8 v$ q
  505. ;显示时间(缓冲)
    & D6 x' Z0 M6 V; ~, w
  506. JSR Time_Show
    : _( G8 B) T5 R0 f5 ]2 v0 k

  507. ( c/ n7 \% h' m7 ^/ K
  508. ;音乐显示(缓冲)
      b4 J. U5 X8 s6 Z5 M( s
  509. .IF SOUND_BAR_SHOW_ENABLE. v0 _" ~3 L# B" v; d
  510. JSR Music_Vision
    0 Q4 w% k5 z1 D* f& l& X
  511. .ENDIF4 ?# H) U1 V! ~
  512. 4 n( q3 r; ?7 l5 B3 g
  513. Nmi_Sound_Play$ d! N4 c1 a% U( t" D' E6 a
  514. ;播放声音
    / ]+ k. b) {: ^0 y/ @4 [
  515. LDA <Music_Stop_State4 m; ^: M' u1 J) z/ s; a, I
  516. BNE Nmi_Time_Wait_Set6 x2 U# ]+ q: }5 k- V  d- h* }: U
  517. JSR Sound_Play_Proc
    $ h& W2 A* j5 R' A4 k; M

  518. 9 V& _& ?% P4 Q) W- ~
  519. ;播放计时2 W$ s/ ?" Q: p  T8 I; i- \9 g
  520. JSR Time_Count2 L: c. K$ v2 x( \
  521. * d2 g, ]' e: O$ ~
  522. Nmi_Time_Wait_Set) T. q" w: S6 P4 s5 B
  523. LDA <Time_Wait_Cnt/ W7 r. ^" x6 X% @
  524. BEQ NmiNormalProcessEnd% f0 D2 h8 d, w4 ^
  525. DEC <Time_Wait_Cnt
    ; T2 V( E: q5 d
  526. NmiNormalProcessEnd
    4 D& @% O2 W9 U
  527. : l/ l% m* Q3 l" Z
  528. INC <Nmi_Time_Count
    ( ]/ Q/ ?1 h& b! U& E0 x
  529. 3 d5 e" B. O+ S7 l5 d
  530. RTS: _( q+ ]+ T. p# I: j1 K3 c. A; E+ `

  531. : u8 m# x. @5 @+ {  q
  532. ;==================================================) v% J9 ?+ m6 ]' l& I7 ^9 ?
  533. Init_MMC3
    1 A( e0 q/ K- f! }
  534. ;==============================, Y4 i" f( t; H* W( O' ~6 E; u
  535. ;禁用IRQ/ l6 F) r/ T  ]6 ~
  536. STA MMC3_IRQ_DISABLE
    $ `. O3 J+ X) L6 H! M

  537. 4 [5 w! ^) E+ I& |9 g5 I, W
  538. ;水平镜像7 ^/ A4 O+ Q  J/ O  |! d% x
  539. LDA #$01
    5 [1 E5 x8 D  C& L; ^
  540. STA MMC3_MIRRORING
    9 j% D0 Q1 \$ c' E, M- _

  541. % i3 K7 [/ V& p' g: ?/ m
  542. ;初始化图形bank) B2 v+ F$ Z3 j. J5 s3 L4 V6 f% a( d
  543. JSR Init_MMC3_Chr_Bank+ l4 p$ |. _5 X; H; D4 `

  544. ' M( X( E; l" @4 k) Q4 Z" [
  545. RTS
    : P' R2 E1 @: V8 T; `  Z4 ]
  546. ;==================================================& ?3 h& y; [; Q
  547. ProgramBegin;主程序
    3 w- f/ a; d0 }5 n. o! u+ y8 f
  548. LDA #$002 r8 ^% ?! u; k, l8 H+ Z: H
  549. STA PPU_CTRL9 L: z) |, ~9 b9 Z0 T- g1 b8 ]
  550. LDA #$00
    " }2 G. R' p! Z* C! @5 o
  551. STA PPU_STATUS7 c* }+ P4 A, i4 F* K1 Q
  552. STA PPU_MASK
    ; C5 W( ^/ I3 Z( a0 W( r  Y
  553. STA JOY2_FRAME1 U/ P$ U7 E$ B7 N9 _- n

  554. 2 Q4 M6 I# ]- i* u2 y3 H. z! Z7 c3 j
  555. STA PPU_SCROLL7 I0 v, ]9 {4 `! j+ _& R9 X7 O
  556. STA PPU_SCROLL
    . w. w) p& J; k1 b( D/ y

  557. ) U7 f) q0 _- F  q
  558. ;==================================================' u4 `% }8 [; Z: s  r, ^
  559. LDX #$FF
    9 K2 z, N0 S1 n5 D2 ^! l) B- S
  560. TXS7 x9 V5 W7 i8 C" j

  561. ' P! d4 \% B3 b6 i
  562. JSR Init_MMC3
    1 s5 q/ u. w% X& `5 V; z
  563. - M3 e6 g* h: Y9 O5 j: B
  564. LDX #$02
    $ m; W% ?( h. |8 F
  565. Check1
    8 V5 p4 ^: S) `
  566. BIT PPU_STATUS
    # f* R. \( P* R2 N. [; e
  567. BPL Check1/ e+ D7 D) b' G0 @
  568. Check2. q8 W; l# n* S3 h0 L/ v
  569. BIT PPU_STATUS% H2 Y1 s- N8 s/ j, v5 S
  570. BMI Check2
    4 I5 P' F; x4 P
  571. 7 C; G% q3 x5 {3 W* K0 R' f5 j
  572. LDA #$0F
    9 Y) Q- _# f: \: q: `9 H$ _- z
  573. STA APU_STATUS& Y1 B4 a3 \, y0 y% O
  574. LDA #$C08 r  Z* p6 g4 J0 u$ c) `. h" W
  575. STA JOY2_FRAME
    ( L+ E$ I! R; Z2 y3 ?; R
  576. ' A5 B! G" p# k6 |) j
  577. LDA PPU_STATUS  `/ w5 Q4 K% |* u6 u9 _8 Q
  578. LDA #$10
    / H- F& t% I+ q" k+ n
  579. TAX. `5 Z2 j' f7 K& B+ y
  580. Check3
    ( m7 |: ?& x2 u& ?5 R: K8 m5 r* N. G
  581. STA PPU_ADDRESS
    7 q5 }: ?% Y6 j2 N! Q
  582. STA PPU_ADDRESS! v* S" O. ?! ^
  583. EOR #$00- _2 A- O$ S. j7 I" c! e
  584. DEX
    * r, M6 t# |3 o9 j/ d. Z# K
  585. BNE Check3. B8 r; t$ g6 }" Q  K
  586. ;==============================) n3 P( H8 N3 S- `% p- |7 [2 p
  587. ;调色板清空
    0 v& t, X' f5 ^0 ^. l
  588. LDA PPU_STATUS2 n* o, y- v% Z& o
  589. LDA #$3F% U, `. a4 K  a8 P# m
  590. STA PPU_ADDRESS. T- A1 s6 N3 w* X) V% t' w
  591. LDA #$00: `3 p$ c& }: C& _# c7 e  O+ O
  592. STA PPU_ADDRESS$ I( ?% M2 o# O: X4 e' B
  593. LDA #$0F
    4 l2 L* U( a" c" Q$ p
  594. Palette_Clear
    1 j4 l1 E" H$ i8 u) I. j+ h- N
  595. STA PPU_DATA( F8 v8 y- Q  Y/ `8 p
  596. INX
    : s" `% c  ]; w' q5 `
  597. CPX #$20
    ) A4 V, i9 |. V: N
  598. BCC Palette_Clear
    & Q( n1 x3 g4 a% R! _2 a, B' w5 a
  599. LDA #$00; z5 s0 U. T4 W
  600. STA APU_STATUS
    % A& ~3 x& C6 M& n

  601. 9 l9 T% c. N( @. f) F2 ]7 E
  602. ;==============================
    9 R  ^, g% C) q3 m* z2 t
  603. ;RAM初始化4 \' r* ]0 [: p5 Z1 b% r+ a$ L
  604. RAM_Clear_All) v3 p+ V4 q. n
  605. LDY #$00
    * I# X) Q2 P0 I& E' }7 Z
  606. LDX #$08
    + a9 y2 d2 O( ^+ D" \; i! {
  607. LDA #$005 `2 g& f! `* ~' o
  608. STA <$00& \7 N: ~; {% z7 {
  609. STA <$01
    4 T+ X5 _8 k' n0 r6 U+ b
  610. RAM_Clear_All_Start
    , i4 ^% w- w$ B4 P2 _  L
  611. STA [$00],Y" z, x- T2 M9 O5 [7 D  b: I( V
  612. INY0 ^9 p/ p" M1 a# I4 N- h
  613. BNE RAM_Clear_All_Start/ t6 G7 N# a  ]- L9 a, T
  614. INC <$01
    5 a: S+ a8 C7 N  Z5 C+ a
  615. DEX
    0 V) I# A! T' F( m
  616. BNE RAM_Clear_All_Start
    & U6 X5 @) F" O, P/ Q

  617. 9 c/ i% c8 R+ v9 @0 e" f6 A: J- {) P
  618. JSR VramClear
    & {8 ^9 Z# Q+ G* `' b
  619. JSR VramInit) `8 B' P" q4 s6 q  q' L& [
  620. JSR OAM_Ram_Init9 c8 e0 K' k/ t( m! ?- _: ~/ K
  621. JSR Init_Palette_Addr9 n# Q) l% b$ h4 [, _7 s* {
  622. 8 \2 A  Q' m) ?2 `3 y
  623. LDA #$FF% ~9 N7 H" T: E8 N% a) u
  624. STA Use_Ram_End/ Q8 n& I6 p% l. Y
  625. ;==============================
    1 F9 C8 w, W0 G
  626. ;初始化背景调色板9 D5 v0 {: ~; r1 t  M0 I
  627. JSR Set_Palette_Color
    9 |/ s2 b8 I0 j  g1 i, x7 z
  628. JSR Set_NameTable_Attributes: E, G) _: y. B# U

  629. ; L% j- p! i/ S
  630. LDA #$007 T5 R, c, |* b/ a' p& n/ T8 m' d# l
  631. STA PPU_OAM_ADDR
    " i# s  L& S+ h: Q2 @
  632. LDA #OAM_TEMP_ADDR / $0100
    - C2 `0 D5 f& ~
  633. STA OAM_DMA# z; K6 k9 R6 {. m. x
  634. 9 v' a3 E& U9 R6 M; F& u
  635. JSR Sound_Reset_Proc
    0 c* i9 S9 {' B4 ~- V4 F
  636. JSR Set_Sound_Total  y6 t! K0 Z$ t) v! ^6 j/ u
  637. 1 V, J+ O, |, k$ ?: F9 u
  638. Init_Start_Music
    4 ~+ f9 W, C; G& c! x/ b
  639. LDX #$00+ v7 N3 ~- ~/ E4 L2 s' U, E
  640. Init_Start_Music_Write
    8 o( ^' P; }8 A( d( T
  641. LDA Sound_Start_Port,X
    " J/ r) c' P# i3 Z/ h& m
  642. STA <Music_Cur,X
    1 P3 V& m( D+ i) S
  643. INX7 Z' E1 [6 ?7 L) C
  644. CPX #ITEM_MAX_SIZE
    : b$ Y1 v, j  q. ]2 P, o% P
  645. BCC Init_Start_Music_Write
    # @5 J4 N$ W2 E8 D6 u# y- b6 ]

  646. : B. V" y3 A& m- o: U
  647. JSR Show_Music_Text
    4 E5 v. L) B9 F! \

  648. , a4 P: }6 o8 ~8 p3 |
  649. .IF SOUND_BAR_SHOW_ENABLE% h. L0 i% M$ o5 g& |, J
  650. JSR Sound_Bar_Text_Set
    ) U. M( l7 B; p5 z, v+ ]
  651. .ENDIF
    - o  L9 {, r% ~0 C4 g1 C8 F4 F

  652. 5 C& r( `4 N; [& r7 {) s/ ]+ Z
  653. .IF Track_Name_Pos8 A1 p( z3 q; D3 Q+ T4 j
  654. JSR Show_Track_Info
    + `* t2 e% R! ?; R% Q# y
  655. .ENDIF
    4 `& h+ Y) N+ [8 _; s4 a
  656. $ t7 p6 o% n$ |, N
  657. JSR PPU_Proc
    ( B  n7 U5 x2 y+ @# k3 T2 N; J9 Y
  658. ) k- w5 @/ o* f2 Q9 O1 g
  659. ;==================================================. b4 _" V; _& L0 q$ Y( M
  660. ;音乐bank初始化
    ( H# E. M9 @$ c2 c, }+ X3 c& e; H7 D3 X
  661. JSR Init_Sound_Bank- l! r' y2 X+ X4 ]
  662. ! @; C6 ]% ~* G+ a1 X: X1 A9 d
  663. JSR Music_Show
    2 N. Q6 c; w3 N3 Z# w) B  K, l! Y
  664. JSR Time_Show  n' V) C3 U: D% P( v$ K
  665. JSR Music_State_Show6 v: p; d, M+ k1 ^
  666. JSR Time_Delay
    ' y  \9 U; ]* i2 H9 w

  667. , M; W! t6 F9 |* L
  668. LDA #$01. B0 z; S$ X) b/ z& j
  669. STA <Music_Stop_State% j; ~2 m9 \( K) w0 k

  670. - U& A7 l& H# q3 J* ^( L
  671. LDA #$885 ?, G5 v! y* ^) L' [6 o4 E; V# ]
  672. STA Screen_Ctrl
    ) X; r1 G7 j) X( x8 B6 s/ A
  673. STA PPU_CTRL% B1 Z9 N$ g: a: W1 V8 @' Y# V
  674. / B7 e/ w; g6 I5 a
  675. JSR Show_Page_Text, C6 M( ~- f' @( ~
  676. ) @2 Y) v: O" W! \
  677. LDA #$10
      M7 `' u- b8 ?/ m4 O
  678. STA <Time_Wait_Cnt$ B; v9 ]0 a& ~5 I) f5 x( n
  679. / r2 J5 Z% m0 I  q8 Q
  680. Wait_Time_Over
    * X$ O3 k/ z: ^& O
  681. LDA <Time_Wait_Cnt% U5 D$ w5 i+ B! t7 r! Z
  682. BNE Wait_Time_Over
    # h2 N& F7 i" X& }* K; Z3 B5 ^

  683. 6 z  P5 S8 j8 h1 }! v
  684. JSR Show_Arrow
    & X( K$ U7 H6 j/ l7 W2 A$ Y) d$ x
  685. LDA #OAM_TEMP_ADDR / $0100
    . H) W5 Y( ~& m) G: ^8 n
  686. STA OAM_DMA+ h8 S2 S9 k" L6 ^% \4 D

  687. : R( }  D' k' c8 D# z# c
  688. LDA #$1E
    , N: t% p- {' v
  689. STA Screen_State3 _* ]1 i- L( c  S+ z& b
  690. 5 v: W2 s- f4 f
  691. LDX <Music_Item_Cur
    ( ?# |7 d( a0 k) D' R( ^  K, \
  692. LDA <Music_Cur,X
    ( q1 s; y  `; I4 S2 L# k
  693. JSR Sound_Init_Proc. ?) f7 ^. Z6 X+ u" `. ?: M
  694. 6 h; X) j2 ]) I0 Z# }) w- B
  695. CLI
    / |) p. p9 R: \( m- Q0 ?
  696. JMP MainLoop. K! N( L' ?0 N$ Y. p/ F. r- }
  697. 3 U) C6 V3 I, B- J9 {
  698. ;==============================, n: j" _9 m! v: ?& X
  699. Time_Delay;延时等待: m# b& b* M. s3 q! W! B& {; ~/ W
  700. LDA PPU_STATUS
    . f" _( y; v+ x) \6 M
  701. BPL Time_Delay
    % k7 f$ n1 j% S4 q6 {; S
  702. RTS  Y# D7 q: ~+ B' d

  703. 2 p- n( e& }/ O+ s' w- d4 C/ D# N
  704. ;==============================$ j3 c$ ]3 i% X
  705. OAM_Ram_Init;初始化精灵内存6 V0 q. g0 P6 P2 j: f) l' O, d6 F% T
  706. LDX #$00+ w1 i% w" I. w+ s
  707. OAM_Ram_Init_Write
      Z- [$ l/ e0 O1 n  _/ d1 @1 n2 y
  708. LDA #$F8! K9 o* n& V8 c+ D, F
  709. STA OAM_TEMP_ADDR,X
    ' ^$ R2 x9 e* {+ H7 ]6 B5 x
  710. INX" e9 b! Z$ [) L' V+ Q
  711. LDA #$F82 g; i; ]& P+ L5 Q
  712. STA OAM_TEMP_ADDR,X
    1 V) ~; p, E9 h7 d: O+ j. a
  713. INX
    5 X" Q; `/ \# V' |) k& F
  714. LDA #$00
    . T5 Q  d2 u$ D5 ?9 V
  715. STA OAM_TEMP_ADDR,X
    # W6 y. l8 v' a+ l% c
  716. INX
    1 s* ^3 R5 _: L3 \9 L- m& E3 ~- C
  717. LDA #$F8
    : F+ u7 |. |2 E. ^: U2 c
  718. STA OAM_TEMP_ADDR,X7 j( S, Q9 v% ^3 N, e, I4 z
  719. INX
    2 m8 w) `* O( R7 d" x3 y
  720. BNE OAM_Ram_Init_Write
    6 G+ s2 p; g' n, Y/ R
  721. RTS$ t- `; i. z3 B" I/ g
  722. ; e' K/ f7 X% O1 Q0 i2 E
  723. ;==============================! @/ C5 X; c8 l6 R& z: \
  724. VramClear;初始化图形内存( @! |: N# Y1 F* D
  725. LDA #$20. E. h2 j: u3 u% v- M& }
  726. STA PPU_ADDRESS
    2 g# i% ~: y; }
  727. LDA #$00
    6 A5 y- i9 o; Z
  728. STA PPU_ADDRESS
    ) b: j) k0 C  y# E, h
  729. LDA #$00
    , H2 S' J* H0 Q8 ?1 n  v
  730. LDY #$00
    9 }* @$ ]/ s/ C' D% x) J
  731. LDX #$102 {% q" p, a' z7 S! u
  732. VramClearWrite  v2 w1 ]/ s: e0 E3 g
  733. STA PPU_DATA2 S- C, P% v0 z7 \! j+ a
  734. INY
    8 e4 y. @- l) E9 D, P
  735. BNE VramClearWrite. \9 Z: k5 R9 r8 o
  736. DEX9 `* G" ~/ ]* _9 w# F6 z" N
  737. BNE VramClearWrite. `0 D( Y4 [/ {
  738. RTS; C" ~% C+ P( {4 K7 r. v

  739. ! I1 N& o: h4 O* f+ j  n7 {
  740. ;==================================================
    - w/ j1 w0 N/ U7 _
  741. ;设置MMC3图像bank
    7 W& q1 X1 Q; u* F
  742. Init_MMC3_Chr_Bank# l8 F: w4 R) Z3 A
  743. LDX #$05
    ' j) P/ f5 n6 H) f' l
  744. Init_MMC3_Chr_Bank_Write) L! k+ C# M8 H7 j5 x
  745. STX MMC3_BANK_CTRL+ Y+ z$ S/ w0 Q/ S# h( |% W
  746. LDA MMC3_Chr_Bank_Data,X! K# a9 t; M. B/ ^
  747. STA MMC3_BANK_DATA/ ~  x7 M) ?% d) i3 l
  748. DEX
    / r4 r/ r; @6 p) u' W- v! ]" e
  749. BPL Init_MMC3_Chr_Bank_Write
    + b- L3 ~7 m/ X! L0 j
  750. RTS
    ; q" ?. Q+ L% T  Q0 S
  751. ;--------------------------------------------------
    & e! f& r6 D0 t# g/ H+ ~) F1 m
  752. MMC3_Chr_Bank_Data
    & f" X3 g: @0 o+ F
  753. .DB $00,$02,$04,$05,$06,$07+ B) s3 R! z  Y* ~$ T: r
  754. " `- h4 y$ i4 N* }
  755. ;==============================
    6 _1 i1 B( P0 b  E; f9 o
  756. VramInit;初始化图形内存
    # A: X9 B4 n2 y0 _( `6 {+ _* K* d0 c
  757. .IF CHR_RAM_ENABLE
    % {1 d4 g" g) @% ?; b& }& |2 T
  758. LDA #CHR_DATA_BANK
    & P# J  h4 H7 O+ S3 T3 u. ]. I
  759. JSR Switch_Bank_A0000 r9 W# J  q+ J+ @2 ^
  760. LDA #LOW(CHR_DATA_ADDR)
    ' l+ x  ^: T! m5 x" V
  761. STA <Data_L* d9 j9 l3 Z2 f' ?+ ]6 R
  762. LDA #HIGH(CHR_DATA_ADDR)
    8 q" ?/ C- t. A+ ^  a' p( ^8 C4 u& p$ @6 ?
  763. STA <Data_H0 d. c0 Y% R$ w/ |; G
  764. LDY #$00- A$ F5 J: W7 x$ B6 d' J
  765. LDX #$20' a/ W% E- o/ N5 I0 C
  766. LDA #$00
    , i! G0 Z! F2 _0 R+ f" k8 r
  767. STA PPU_ADDRESS8 {4 Q6 v; j$ c+ o( k! G
  768. STA PPU_ADDRESS
    9 D& T3 j/ E5 @$ c4 U
  769. VramInitWrite
    7 C9 a# g" k! k% O3 k- x0 Z$ u
  770. LDA [Data_L],Y
    0 x8 k- r& i/ l+ R$ R- i9 b
  771. STA PPU_DATA! f1 u, T# k& l: n
  772. INY
    ) K' r" K2 M1 \( `  Z
  773. BNE VramInitWrite
    7 y9 U' K% N2 z9 P9 j
  774. INC <Data_H
    ( u( k# g7 P6 z2 C+ V
  775. DEX
    - y9 e! C: ]6 r: D2 u( h
  776. BNE VramInitWrite% Q7 c9 z. V6 V! |& d
  777. .ENDIF, _$ H' c% \9 s# n$ @
  778. RTS8 q8 A/ r9 p4 X3 l

  779. * N& L: \: K6 Z: f7 x1 L
  780. ;==============================
    ; Q8 V: v9 J5 u
  781. ;音乐切换9 w: h% F3 S! l$ y" u# o% o1 c
  782. Music_Play_Change5 m- |4 R  s1 x& \
  783. LDA <Key_Once: X) N5 p& L; B
  784. AND #$FF5 q  g0 Z- J4 d- l* o. g5 _( @  l& i
  785. BEQ Music_Play_Change_Check& _& A; J" m0 m  Y0 J
  786. . ?" L/ g5 n: F% [0 X1 P
  787. ;禁用音乐条刷新
    # C% E5 B/ _6 `3 y: O
  788. LDA <Text_Disable_Flag' U' C1 q( W0 r+ T  W" Q& s
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    * ^# E2 Y( I0 {+ s7 r
  790. STA <Text_Disable_Flag) _! v& z' j  S+ h. o

  791. " d& v5 i# {% q) {2 k9 p
  792. Music_Play_Change_Check
    3 H' z3 C3 J+ S# z* N1 s
  793. Music_arrow3 n! n, r) h, W7 _
  794. LDA <Key_Once+ b) l) ]/ ]+ {; a% o4 {
  795. AND #$0F
    2 u: R+ J6 z! T- }" _& q5 e" j
  796. BEQ Music_Play_Change_End
    7 ~& s+ ]0 ~0 i5 L' h% }" P
  797. JSR Music_Track_Change! N. d- @9 D) s& N" Q( V& A/ Y
  798. JSR Sound_Reset_Proc
    ' d  g0 R) ^( e/ b* ^
  799. JSR Music_Show2 C# N* W# ^5 G9 [& F
  800. Music_Play_Change_End
    ; s. }. j0 w" D% @
  801. RTS4 U. J  k$ J# n& O

  802. : X2 e8 E( d# O/ F6 ]5 E% ~' D
  803. ;==============================, X$ j4 \% S  v/ ]4 ]" N6 X8 \7 W+ E
  804. ;音乐曲目切换
    ! I# C. ?# N* b- n$ g4 d) [
  805. Music_Track_Change
    5 X" {1 K, s4 Q$ A: J
  806. LDX <Music_Item_Cur
    : p$ _0 P3 }# N
  807. LDA <Music_Cur,X! }8 ~: Y0 u3 J
  808. STA <Music_Last
    2 ^7 y3 x2 n' ]4 s: }& A
  809. Music_Decrease
    ' o( d( t& u# f! j' x' _$ Z! D5 s
  810. LDA <Key_Once
    # Q" ?" w0 `! v
  811. AND #$428 K: V4 w2 v' E; m% A1 x6 s
  812. BEQ Music_Increase
    ' p" c* L6 j; R* ]1 q" h
  813. LDA <Music_Cur,X
    6 D! _) x7 @$ {# c9 E; T7 @7 c
  814. BEQ Music_Increase8 F4 }7 T8 |6 `( m
  815. DEC <Music_Cur,X7 i  r0 N( H4 ^: l, F$ ?
  816. Music_Increase: y8 d+ w  W2 E8 A
  817. LDA <Key_Once
    3 p, a- n$ V& z
  818. AND #$81. J4 d. v0 b$ g+ V' t: _) {- s: a
  819. BEQ Music_Decrease_10
    ( u) ^* i8 g' p$ z4 o0 R
  820. JSR Set_Sound_Total
    ! f# c, y: v$ j6 u7 u, k9 e2 C5 V! f
  821. LDA <Music_Cur,X
    4 \% I2 j% v3 }* J* Z3 \
  822. CMP Music_Total/ m# E3 @9 E$ W# }2 E% c
  823. BCS * + 4
    / h' o0 |) _  v# Q# v
  824. INC <Music_Cur,X
    3 t6 [2 H+ B0 o: z5 |
  825. Music_Decrease_10
    # B1 ^8 k/ Z+ l9 N) {; ~# M
  826. LDA <Key_Once
    - c- n) {) `4 {" s- ]. {; e
  827. CMP #$04
      i: O! g0 Q7 _
  828. BNE Music_Increase_106 ^$ y7 z8 n$ C$ x
  829. LDA <Music_Cur,X
    1 V$ D; h) \( B3 s$ i
  830. CMP #10
    , a/ C4 ^+ i# `8 Q* O
  831. BCC Music_Start_Song_Min. y' t8 w: r6 @) v) h5 \1 z& m: u9 M! _
  832. LDA <Music_Cur,X
    , x6 W# D0 C( r
  833. SEC+ T! B0 g( ?3 }" n! L
  834. SBC #10' o1 m/ ^7 Y' _8 j: r
  835. STA <Music_Cur,X) k% j; w9 A# t. e, K4 Y1 {6 [8 X
  836. LDA #$00
    : ]+ u% O5 n3 J, r& V( @. d" s" s$ e
  837. BEQ Music_Increase_10; s* v/ F0 b( D" i$ D3 T
  838. Music_Start_Song_Min
    : C# W4 Q' k% T0 }) ^0 J- M/ H
  839. LDA #$00
    ) J. f; i8 I+ v4 O5 L# ?4 Q
  840. STA <Music_Cur,X
    4 e5 X; k$ x+ R$ v; w
  841. Music_Increase_10
    6 H7 Q; G( Q: }1 b8 a' B
  842. LDA <Key_Once
    0 U% d  j/ o' z# g- o$ C
  843. CMP #$081 D; C, y5 e6 [8 i
  844. BNE Music_Track_Change_End
    * k. }- L" l: K- i2 L& r0 j; c
  845. LDA <Music_Cur,X
    : h" Q* ~8 r! j2 F1 ]& Z: H  }
  846. CLC
    " j/ ~, ?# I1 C. J$ ^) O
  847. ADC #103 X% B. ~3 }6 v+ l- T
  848. CMP Music_Total
    ! p* f) R( |' S) s
  849. BCS Music_Start_Song_Max
    : e+ \+ R3 O1 B3 o* r
  850. STA <Music_Cur,X$ }) r& T& p8 ]8 A! q8 Y  h! V
  851. LDA #00! K  C3 \$ D) Z' b
  852. BEQ Music_Track_Change_End
    ) U- h5 m3 _( n8 |# U6 S
  853. Music_Start_Song_Max
    4 i2 s6 ]# p' x, H. U
  854. LDA Music_Total
    ) v$ F/ F# ]2 u7 m
  855. STA <Music_Cur,X2 Y. t/ K, ]2 J! Q% b
  856. Music_Track_Change_End
    $ V3 Q( ?5 H* |! _1 k
  857. RTS
    4 @! Z# X# c1 ]6 m; ?- i/ e
  858. # N+ E3 |0 z- l6 ^5 q$ |4 ]; B
  859. ;==============================
    * b# j8 M5 A2 Y3 V. z
  860. ;按键处理: w8 F% M3 o, s; ?. ?5 y
  861. Key_Proc
    % a5 g' F0 N. H
  862. JSR Key_Scan! `- K% b; m0 [7 v3 k
  863. LDA <Key_Keep
    ) Q( d1 P$ Y/ e
  864. STA <Key_Temp/ J. E  j( M0 q$ ]; C
  865. JSR Key_Scan, K8 K9 S. B8 \$ |8 H+ \' X4 U
  866. LDA <Key_Keep
    7 }1 j& P. Z5 j
  867. CMP <Key_Temp. m' q& O+ [- q5 ]$ v8 R" `
  868. BEQ Key_Get_Once
    . a! `# Q; q' {# P4 [7 J% ~' b
  869. LDA <Key_Kemp' F, R6 C& ]+ E! p5 q  M
  870. STA <Key_Keep
    4 K$ C5 E' w, D! Q
  871. Key_Get_Once* W. {. e3 I# }2 }  O* V
  872. TAY' L5 x8 r  E# M
  873. EOR Key_Kemp
      G* V% ~, C8 R. H: t
  874. AND <Key_Keep, y4 w+ I+ w! T  {4 m
  875. STA <Key_Once7 L% n! p4 H9 F; i  f3 }
  876. STY <Key_Kemp& _1 t& ?" K" \
  877. RTS
    + j0 E( c* z- y$ T! h
  878. ;------------------------------' b! G! j3 T# m
  879. ;按键扫描. r( s" W4 D7 t+ {6 ?0 f: n
  880. Key_Scan
    ( D, a+ G# q/ N; l$ C% ?# q
  881. LDX #$017 w6 [0 K, Y/ |( ]) b0 P7 Y
  882. STX JOY1_FRAME
    " b. H/ R, w9 p" I2 l1 x
  883. DEX# P6 B/ H0 Y1 v- m4 }+ q0 _
  884. STX JOY1_FRAME
    ! i  p7 ]! \! o4 p* w# B7 `
  885. LDX #$08
    " N( C9 T  R* P) i2 N/ ]- k
  886. Key_Value
    ' G4 f6 ~& a5 w1 ]) G/ @/ ~/ o
  887. LDA JOY1_FRAME9 s" c  H. s  b' g; R; L6 _- {
  888. STA <Key_Getv
    & u! E, d. e* H8 z, f7 r7 @0 o( z& m
  889. LSR A1 C; b/ d( F+ F& O6 V
  890. ORA <Key_Getv
    ) f6 H- N0 ]9 g! C3 \
  891. LSR A
    ' u. h! M) b* r8 J; {
  892. ROL <Key_Keep' r+ b" y2 b, p5 A% v
  893. DEX
    8 _3 x$ n" }6 P) Y3 R
  894. BNE Key_Value
    " v2 T' {0 `1 ?; i
  895. RTS
    1 n: q5 r* F  m

  896. + ?% p# G1 g0 N" G: n8 i
  897. ;==============================$ k, J0 b2 Q! X1 ~1 u& v
  898. .IF SOUND_BAR_SHOW_ENABLE
    ! A2 G5 w2 D8 Y/ j& k2 w" l
  899. ;音乐条显示& [  A6 e. q6 N& S8 W
  900. Music_Vision
    5 F6 u7 K. Y3 j) ]# ]
  901. LDA <Text_Disable_Flag
    " S4 B/ N' j. _8 r, o, a6 a7 F
  902. AND #TEXT_DISABLE_ITEM
    & a) R0 U# T" e  ^- {9 N. g1 A
  903. BNE Music_Vision_End4 A; @1 f$ K3 S1 @# d$ Y
  904. AND #TEXT_DISABLE_BAR
    9 ~& W$ I) Q" R
  905. BNE Music_Vision_Set1 s7 {+ U0 F" m- p% o% X, e
  906. LDX PPU_Cur
    9 S  |; ]$ ?: @; M+ k
  907. JSR Music_Animation
    5 s0 [3 o2 T0 o; m6 \" f
  908. STX PPU_Cur, c6 O, R  z' k
  909. Music_Vision_Set
    5 p% E$ N1 W! {$ {9 s2 c. e: \
  910. LDA <Text_Disable_Flag
    ' g2 \) T8 P  b* ]  ?) C
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ! l1 Y4 a2 j; o$ b- j
  912. STA <Text_Disable_Flag* E# r3 D" B+ }. K1 k+ t% _
  913. Music_Vision_End
    0 ~, _1 m( r7 c- u! H; F9 o
  914. RTS* ]6 Z( A; ~+ c6 T) Y2 b
  915. ;------------------------------& u- E5 z5 ^4 `# l# y% Z5 v$ |
  916. ;音乐条显示处理
    ; y- ^* q$ \6 ~, o
  917. Music_Animation) _; F( k4 ~, A6 F, i
  918. LDA #PPU_MODE_CNT_LINE
    1 {1 T9 \& ~( b  c( D% M
  919. STA PPU_Addr,X: i! [) j# O$ P1 v3 {: {- _3 i
  920. INX
    ( d, o! r% {% J2 L
  921. LDA #HIGH(Sound_Bar_Pos)
    2 D7 j/ O; I) U3 a
  922. STA PPU_Addr,X
    # I- @: W. m. j8 t, U2 t  B( R
  923. INX' R. ?) E7 x) g: Y
  924. LDA #LOW(Sound_Bar_Pos)
    5 {4 Z' [2 a6 G/ O
  925. STA PPU_Addr,X
    * |. v6 u9 V( N/ G
  926. INX
      i  Z9 Z4 C/ y) Z: R# L
  927. LDA #$089 k( @$ A' Z. i7 x& w' J
  928. STA PPU_Addr,X
    * k* K3 ]' |" B# Z$ {; p: l" \
  929. INX# H: u+ S1 G7 |: ~, v
  930. LDA Sound_Bar9 [- ?) c  g8 D3 l9 r
  931. JSR Volume_Convert
    8 Y& _, ~0 T8 F3 ]) {& y
  932. % _3 |6 x& X) Q" d3 ~7 M
  933. JSR Volume_Set_Cnt
    , R/ X( m0 `2 m# M1 C
  934. LDA Sound_Bar+$4
    7 e7 R; i2 e) }+ O2 B
  935. JSR Volume_Convert
    & l4 ?1 ?2 X# w; J% ~2 A2 \

  936. - E, X+ g2 y6 n5 t
  937. JSR Volume_Set_Cnt
    ' j  ]& C2 q9 B  q/ p' c
  938. LDA Sound_Bar+$8
    , b+ ]/ D( B' n" e
  939. JSR Volume_Convert
    $ u$ D! A6 p$ U' D3 Y; S* M
  940. 3 ]9 n0 C1 g% p5 b( ~
  941. JSR Volume_Set_Cnt
    & H' k' V/ A2 U& U. r1 l* Q3 c; f
  942. LDA Sound_Bar+$C
    6 q( z$ c" D0 C( G
  943. JSR Volume_Convert+ s, r# f9 I( y. O- {' v9 K
  944. & L) y7 \0 F2 @9 b. w- S
  945. JSR Volume_Set_Cnt
    8 ]1 ?' C" H; R  P$ u) `/ b
  946. , A4 P  X( B: X2 \9 {. p
  947. LDY #$10. ]" S  U8 x. L0 c% i6 x
  948. LDA APU_STATUS
    9 O0 P+ l2 _3 A8 S
  949. AND #$10
    . A- A8 h: h" C' F3 G( C+ K1 K
  950. BNE Volume_Count# ~; M, P, r* N, D& }
  951. LDY #$00
    % j( d. {" w2 |9 x  @) ^
  952. BEQ Volume_Count- R3 \, i' a. k, F3 @

  953. : j/ x& r9 X, ~; f6 d* [0 q
  954. ;------------------------------8 ]" K) h2 g/ O+ O8 G$ t
  955. ;音乐条处理
    5 I' C, E( [" g8 ~" }
  956. Volume_Convert& Q4 K1 o1 F) V! Q% A' Z6 ?
  957. AND #$0F- o! @4 t4 ?, |* u3 c/ {
  958. TAY
    ! |4 _/ n( e+ N# X5 l
  959. Volume_Count
    * }: @/ m- Z7 r% N, |) z4 V# D* o
  960. LDA #$08
    * v$ b9 F- }0 O6 R3 m  k$ Y
  961. STA Sound_Bar_Cnt4 A: Z; C! F5 [$ Q
  962. Volume_FILL
    * }8 s8 u4 H3 g* O1 X: q& I5 j
  963. DEY
    ; w$ p2 O2 w* C1 X- g2 q: P
  964. BEQ Volume_Half* b/ s* d* `5 f- S% |" y8 f
  965. BMI Volume_Empty/ k& [" h! Q& Z* [! x# g6 V
  966. DEY& T: O% Y  X% n
  967. Volume_Full- c4 {# H: B4 X% }
  968. LDA #$16# y: ?8 ]+ [6 [% P, ~- E
  969. BNE Volume_PPU- b) {9 J9 E- A  L" F
  970. Volume_Half
    , e" G# B8 G  `6 o8 S3 A
  971. LDA #$15
    # M2 `6 s9 m+ y. V! M1 _
  972. BNE Volume_PPU9 z# j; P# l4 Q. r+ v
  973. Volume_Empty
    - p! S9 N# N# Y
  974. LDA #$14  b  ~; {( I; ~$ I& m
  975. Volume_PPU
    1 S, N7 X8 @- v% I9 X
  976. STA PPU_Addr,X
    & b% _: ^' I8 g/ W% V5 ~
  977. INX& t9 E+ W3 i2 N
  978. DEC Sound_Bar_Cnt5 j- @* K& o# Z* m% v/ a
  979. BNE Volume_FILL) W7 v# B9 [& C: |9 h$ @
  980. RTS
    4 Y" I& F/ T+ i4 g$ x1 n
  981. 5 o7 t* ?3 ^& j3 R
  982. Volume_Set_Cnt5 o3 c' m, A' ], {9 m6 T: G
  983. LDA #PPU_MODE_CNT_LINE_NEXT# ]+ L+ K1 }4 E& x! w1 ?
  984. STA PPU_Addr,X* r' v4 r' H/ \: \, M1 T4 \
  985. INX& \. z  j9 m+ `* j6 R* P
  986. LDA #$08
    * {0 \& K3 \) @# I+ [0 {; Q8 t
  987. STA PPU_Addr,X6 @  u- b/ }- C: n1 s
  988. INX
    " n* L  n3 _9 t3 f. \: `, P. t. i
  989. RTS
    8 z" E2 U# t# I
  990. 6 t4 Y' t5 P; Z( e+ i
  991. .ENDIF
    ) m7 p' T/ X3 }7 G+ a" N$ A
  992. ! y9 A% h; q  {3 g4 L) {1 `6 F: v
  993. ;==============================
    # O  F$ f, U4 R& x7 D
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    ( V' ]0 ]( k' b& v8 U
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    & P( l6 A- J3 d2 P% u$ p" J1 p
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除1 k2 v# ~' c8 l* @' i! h! ]& j
  997. ;------------------------------
    ! E2 p3 X+ @5 e* \5 E
  998. ;PPU处理3 {- f: ]; S- U9 P/ `
  999. PPU_Proc
    + ?4 _% }% [+ u
  1000. LDX PPU_Cur; s7 Z- b: D6 ]1 ~$ T& v- t3 O
  1001. LDA #$00( R0 |- U/ z  e, I* z
  1002. STA PPU_Cur
    1 |! B2 H5 y" S# ?% H+ {
  1003. STA PPU_Addr,X, C: H1 a1 C( X) _  ~$ F2 w
  1004. LDA PPU_Addr1 N  Q1 C3 ~9 }
  1005. BNE PPU_Proc_Beg
    8 k! D& Z* ^) V4 V3 F
  1006. PPU_Proc_Ret
    * K6 u! k4 F/ [
  1007. RTS$ X0 G2 U; {5 `; s

  1008. / v3 t) l1 z: N) h
  1009. ;------------------------------
    ) a. H. }/ o# x/ v/ g' e. g5 n
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    3 W0 W! j7 V8 ~& O) t
  1011. INX
    9 O& i3 l* H2 \9 Z
  1012. LDA PPU_Addr_L0 M6 P8 W5 O0 C# @  L& p* I
  1013. CLC
    9 G. M! y4 R+ z# N3 L
  1014. ADC #$20, i$ o( X* N' ?* T  C  {
  1015. STA PPU_Addr_L
    0 G$ a% r) E1 M8 `3 z
  1016. BCC PPU_Mode_Return_Cnt_End
    * F* L% m/ |* A8 f/ F
  1017. INC PPU_Addr_H
    ; |0 m$ h! i  M
  1018. PPU_Mode_Return_Cnt_End# G: L# V/ P$ B" z2 P) B
  1019. LDA PPU_Addr_H
    8 ^# d3 w% G( @3 b
  1020. STA PPU_ADDRESS
    5 q* y: Z. A: F# J  G. n
  1021. LDA PPU_Addr_L
    3 B+ Q. E1 ]. j9 A1 A: |! s9 {
  1022. STA PPU_ADDRESS8 ~8 w8 y7 l4 V! l  r
  1023. LDA PPU_Addr,X
    6 J: n7 h$ ]3 s: @# U
  1024. TAY
    9 h% d8 V7 m: s: b3 s/ e
  1025. PPU_Mode_Return_Cnt_Write
    ) B7 X5 G' g% U6 x; ~
  1026. INX
    ( a& V2 `1 g0 Z) `' T" m) m9 i1 Q$ n
  1027. LDA PPU_Addr,X
    , F& A$ N5 u$ @$ j
  1028. STA PPU_DATA  d( ?' h$ u/ D5 d+ _5 z
  1029. DEY
    + r4 j) j: `3 G- L" ~0 c9 g
  1030. BNE PPU_Mode_Return_Cnt_Write  N1 o, x9 a  w2 Z* h6 s  {5 M
  1031. JMP PPU_Proc_End6 o: l, {" K( x! V( O; Q

  1032. % B0 Y/ ?" T! a+ N/ i# U3 c
  1033. ;------------------------------! U9 G: ?- [# K5 ?% Y9 U
  1034. PPU_Proc_Beg  ;处理开始
    ! R* W, T6 F. |6 H* B
  1035. LDX #$00
    % v8 Y# ]0 v; o% _% s; X
  1036. STX PPU_MASK
    1 w  \' ~  f5 X% ]; i2 ]! M# Z
  1037. ;------------------------------
    # z5 P1 j% E$ M( c4 G. X
  1038. PPU_Mode_Select  ;模式选择+ X, P$ D% ^( I8 J1 I
  1039. LDA PPU_Addr,X: ^9 C. v, ]1 a/ D* t' f% J
  1040. CMP #PPU_MODE_CNT_CLEAR
    7 R- |0 K; V, j
  1041. BEQ PPU_Proc_Clear
    " x& h. ]8 |/ U  z, D
  1042. CMP #PPU_MODE_CNT_LINE
    9 O* y4 j: U) w
  1043. BEQ PPU_Proc_Cnt_Line7 M& z# L  H  G9 ~; W1 r. U2 g
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    . L' ?, x. @9 n4 \/ K* l
  1045. BEQ PPU_Mode_Return_Cnt& P4 H! N6 m$ v
  1046. JMP PPU_Proc_End_Write
    ! l& B8 e& D) ?& R. O4 Z2 t
  1047. ;------------------------------
    ! s/ @/ z$ x2 K* P! d
  1048. PPU_Proc_End  ;单行写入结束
    / k% a, J1 a7 n* W' c- e" m
  1049. INX
    0 q1 d3 ~2 W4 ?. ^  P
  1050. LDA PPU_Addr,X
    , Z; J) d9 ~: H0 M9 M
  1051. BNE PPU_Mode_Select
    / C4 R1 ^. q, v, b! k* p9 R; i
  1052. STA PPU_Addr
    : E4 ^( r3 u3 z  ]) h
  1053. JSR Update_Palette_Color
    6 G# J+ _. u" R7 H  `5 s

  1054. ( J4 i0 W- X7 h
  1055. PPU_Proc_End_Write% A, B% x' Y" u
  1056. LDA #$00
    5 N7 e; n9 e. m4 O1 ~
  1057. STA PPU_ADDRESS
    ( U* k; d/ p/ K5 r
  1058. STA PPU_ADDRESS
    ; @3 r8 a6 J* e3 r
  1059. LDA <Text_Disable_Flag
    6 x& ~* |! @: Y$ ]' z3 S5 f
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF% z* n. N2 @/ G7 L5 J9 x/ K
  1061. STA <Text_Disable_Flag
    7 ^; z& K* J9 _. m/ m$ F1 B- D
  1062. LDA #Scroll_X
    7 y! b9 W$ U3 Y/ u1 Y* e
  1063. STA PPU_SCROLL( i$ I* g) T2 l: ]
  1064. LDA #Scroll_Y
    $ T# w: I2 g4 f  D% s
  1065. STA PPU_SCROLL
    7 r6 v3 d7 |8 \4 j! i
  1066. LDA Screen_State
    & y/ E6 O& Q* O( |
  1067. STA PPU_MASK7 O  ~' Z0 d6 R% C+ d+ z8 Z" \
  1068. RTS3 l7 S( r" h9 x' U* U6 P

  1069. 8 n" r+ a, I5 G. I& \7 o6 p
  1070. PPU_Proc_Clear6 j4 T+ s7 c9 Z7 E* i0 o' \
  1071. INX( i/ W* i  p- r' [5 F
  1072. LDA PPU_Addr,X
    9 t0 w" T7 y1 N, Q$ w
  1073. STA PPU_ADDRESS
    0 v( _: m4 ~' G& ?
  1074. INX
    , U7 L. k( m+ j4 A* T
  1075. LDA PPU_Addr,X
    & L0 z, J* F) R
  1076. STA PPU_ADDRESS1 m. ~- y1 k+ Q
  1077. INX* e+ p2 f. E6 R! w8 W
  1078. LDY PPU_Addr,X
    ( x* R6 R5 R3 d4 z, @
  1079. LDA #$009 Q; s) `* b- y: G( p% Y  u6 C5 c. Y
  1080. PPU_Proc_Clear_Write
    4 M5 A, T+ f' L5 L% ~" ^
  1081. STA PPU_DATA
    ; U0 F. T8 s' @/ b0 |! R: s! x; J: {
  1082. DEY
    2 S9 s: p) P8 y5 S
  1083. BNE PPU_Proc_Clear_Write% s* R" c! @& G" @, e3 k& {' B- n" J
  1084. JMP PPU_Proc_End" ?, V; g* m8 |8 v8 r$ w- x( M

  1085. - g1 k( {3 r0 }1 @( T* K! t7 [7 X& {
  1086. PPU_Proc_Cnt_Line4 B; r. ~2 w4 z: @3 ~( Z$ @( ?  J
  1087. INX
    5 f% L3 V5 E. W0 I' K
  1088. LDA PPU_Addr,X
    6 N; y# K2 e0 @, q. K
  1089. STA PPU_Addr_H8 H& H& B* v; {% Y' i
  1090. STA PPU_ADDRESS
    . Y! b+ y9 _2 i; `) H1 {
  1091. INX/ k5 e) a7 }1 l6 u/ j) q8 P
  1092. LDA PPU_Addr,X. \9 ]" B: N, L
  1093. STA PPU_Addr_L
    / ^5 N0 m& C; k, N
  1094. STA PPU_ADDRESS. k/ M& U" s' ^& @5 j' _: U' F/ b
  1095. INX% g7 S0 B& j; z: l% h2 h
  1096. LDY PPU_Addr,X
    + y0 x5 c5 L) }) h# `
  1097. PPU_Proc_Cnt_Line_Write9 l9 P0 K- v4 z% y$ U$ N
  1098. INX  e) K3 ^! l% d" C7 x7 i
  1099. LDA PPU_Addr,X
    0 |: s# f! {. \! z9 l
  1100. STA PPU_DATA
    % U, V9 f$ w+ C9 }
  1101. DEY9 [* T8 ?! G6 ], M
  1102. BNE PPU_Proc_Cnt_Line_Write- {# z0 L+ T; R- C
  1103. JMP PPU_Proc_End
    0 [; Y- {1 A  f, y7 P

  1104. 0 H+ p4 S2 f6 t; `, \" K
  1105. ;==============================# a$ w1 e; Z6 z+ S( x
  1106. HEX_To_Dec;十六进制转十进制
    3 F5 D2 |: u2 L+ D; ?+ `* w
  1107. STA <HEX_Data7 b& z0 S6 a$ J* F% W# c
  1108. PHA
    7 c0 B8 p# J4 I4 H. D# Y, K) }& B5 O
  1109. TXA( K. P- K# e" Y# V) T5 s
  1110. PHA
    3 E% P1 O9 M+ y  T3 m7 u* j
  1111. LDX #$00
    - d3 b. n2 s; `+ w$ F: Q
  1112. LDA #$00" v4 g# }6 F- Y/ k% Z
  1113. HEX_Cln+ F4 |6 D8 P; n/ R& v' [5 P
  1114. STA <DEC_H,X
    - J2 w6 N) U. `  k" T9 E
  1115. INX
    ( f; t& X% a. o: P7 G  M
  1116. CPX #$03
    : H0 O: P8 `& j# K& V7 N+ S, Z$ z( L
  1117. BCC HEX_Cln5 o# h* t# o" x" t1 L2 ~& s; {
  1118. LDA <HEX_Data: G+ y# V1 l0 g* }  Y) H# y. z
  1119. ;------------------------------
    4 ~7 Z* d* f4 L$ w
  1120. HEX_100
    ( P8 o; N& X  o- Q0 F% U
  1121. CMP #100
    + h9 T0 _4 V* f/ _1 R5 _# S
  1122. BCC HEX_10& H$ ^+ N: \2 P8 U* O" H# j
  1123. SEC
    ! |" e$ j0 I6 }& m
  1124. SBC #100
    + H5 G, M* d3 A) b2 o- a
  1125. INC <DEC_H9 `1 x7 I3 U& B7 s5 ]9 v4 q
  1126. BNE HEX_1009 a/ J7 H8 U+ s6 v
  1127. ;------------------------------8 P+ v! c  U/ H7 H4 F
  1128. HEX_10- ?/ w% |, [, {/ V- k/ }
  1129. CMP #10
    9 m6 s- T# U, [; B8 j. V
  1130. BCC HEX_1
    5 C5 z1 h7 H3 D+ ?# H* F
  1131. SEC. ~% `; r' }% P1 R4 r7 _
  1132. SBC #10
    3 O2 n8 P  j: j1 p, i+ `) |
  1133. INC <DEC_T
    6 u; k% A# ]# _" L, x
  1134. BNE HEX_10
    / u' o. ~5 H$ K  P$ k  Z% P9 l
  1135. ;------------------------------  n/ I  @! @) H
  1136. HEX_1
    $ w$ c3 c  S6 J, N# Y
  1137. STA <DEC_L' ?( a; o# n8 h2 Z
  1138. PLA
    6 X, R2 n- i$ E3 a4 x* L
  1139. TAX6 z, r1 T6 H" ]! A' X0 x4 i9 i3 ~3 k
  1140. PLA4 \" h, h1 ~( u1 I
  1141. RTS
    7 y5 P0 M6 X9 i; s& B" d$ d% j& U: Q
  1142. ; Q* ^% ^* ^  ?( N
  1143. ;==============================
    " F, q- Y  U2 m2 a0 C% x
  1144. ;音乐曲目显示
    5 ^: F* u1 C3 Y
  1145. Music_Show
    7 o+ _1 J- A( ^9 v7 i
  1146. LDX <Music_Item_Cur
    ' [  j# ?/ e+ t9 V; j8 q5 c
  1147. LDA <Music_Cur,X
    & w2 i/ h& y6 Y0 P, O2 z! H
  1148. CLC  H! z1 f9 Z# g/ B0 z4 z) T1 Z
  1149. ADC #$013 B. j0 L- a) b* Q: i
  1150. JSR HEX_To_Dec
    ) z; Z, c5 Q7 `9 E
  1151. LDX PPU_Cur
    & i( H2 K! j- w( N2 L5 \+ D( S, f
  1152. LDA #PPU_MODE_CNT_LINE
    " G! Z$ d2 i' i5 V  g! x
  1153. STA PPU_Addr,X
    8 X# K/ F, [5 d: p2 U- b4 y7 i
  1154. INX, C2 T' d" b3 H1 B
  1155. LDA #HIGH(Play_Index_Pos)
    4 T$ c# e  f$ K6 P- g
  1156. STA PPU_Addr,X. |: R3 T9 {  @' L2 l
  1157. INX$ O* p$ }; y+ c
  1158. LDA #LOW(Play_Index_Pos)
    9 x* u8 d3 ^2 h
  1159. STA PPU_Addr,X
    4 w9 A) m+ t. Y3 a* D- k; {. \" w
  1160. INX# v9 `5 A+ ~) q( ^1 S0 r, Y0 i9 i
  1161. ! s; A! D/ [) [: S0 d
  1162. LDA #$071 s& Z7 `9 I: \- x$ J( S
  1163. BNE Music_Show_Length
    6 N5 u) o3 U6 j5 \; R2 p

  1164. # E" l$ c) J$ j8 c; f0 Z1 y
  1165. Music_Show_Length
    * S1 ^9 H6 I: V. F/ y8 o4 p' r2 f) N
  1166. STA PPU_Addr,X
    & S# b2 U3 c9 h" ^! C: r1 G' c
  1167. INX9 Y& ]$ ]3 z$ n3 {0 T

  1168. 5 x( Y4 l& x8 M$ m2 q) j8 T
  1169. LDA <DEC_H
    5 _2 b' v5 T5 S3 w* M
  1170. ORA #'0': H/ |& C. w) G: V& r1 J
  1171. STA PPU_Addr,X* i7 {& K- J: S$ D6 V5 `0 J6 `
  1172. INX
    ! K; \- _# e% b4 ?. {8 _
  1173. * E' z& c$ {3 u% F# o1 U" S: U
  1174. LDA <DEC_T3 S7 Y$ K4 y# G& `
  1175. ORA #'0'
    / ]7 R: x" ^  E/ q- {9 Q7 |5 }6 [
  1176. STA PPU_Addr,X
    ; p0 h- P, k& `5 O
  1177. INX# l. f! F8 Y- O: o

  1178. ( y6 C) Q% G; o* E1 E( H9 U0 o
  1179. LDA <DEC_L! x, @# I1 ?9 e. \. o& n- R$ u
  1180. ORA #'0'
    ( i7 o$ j) I9 o) R5 v2 z6 D# [
  1181. STA PPU_Addr,X' u$ T) x- C* Y+ d
  1182. INX
    8 f/ J8 B; K' [$ C7 _8 M

  1183. $ E9 M1 _; u! k' E" v1 W6 R
  1184. LDA #'/'
    / z; \* c: M0 `8 f. H. J
  1185. STA PPU_Addr,X& k. R2 F* T" i; Z6 k( ]5 A6 M4 p
  1186. INX
    8 c$ N) k$ {0 b9 S( _' `
  1187. Music_Show_Total
    * q4 y  x1 v6 A
  1188. LDA Music_Total
    5 x& \( Q4 b; h5 ]# M
  1189. CLC
    1 R+ }* o( o# t7 U( ]& T$ `  q
  1190. ADC #$01
    9 j3 r. l& U& d" I* E; C# ?6 O
  1191. JSR HEX_To_Dec) s: K; \8 N1 Q. r8 I
  1192. 5 `  m, v& ]/ i2 T, n/ K  y
  1193. LDA <DEC_H: E+ S' `' S+ ^" I9 V1 Z' k6 O4 J. J
  1194. ORA #'0'
    ' i1 j7 S( \6 F
  1195. STA PPU_Addr,X
    " p0 W7 ]7 j4 c5 I
  1196. INX
    . [1 ^" z0 R  o, Q

  1197. * ~9 J, G( i! ]
  1198. LDA <DEC_T$ ]& I; Z6 p/ A; e
  1199. ORA #'0'
    2 m- j4 A; W  o/ B( ?
  1200. STA PPU_Addr,X. k0 V5 o" Q) {& q. k
  1201. INX
    2 M/ `0 p; a+ l( I, V0 o

  1202. " t4 F$ I: x& S# q" }" N
  1203. LDA <DEC_L2 i+ s0 O- ~2 s
  1204. ORA #'0'
    4 c, x/ w* h7 y! |2 h
  1205. STA PPU_Addr,X
    ) P8 o: {: L; e8 w4 l: f
  1206. INX7 {; Q) s  l2 O: q- p
  1207. 7 U4 _- e) U, t) L9 z
  1208. STX PPU_Cur
    ! w9 W, L* U& n& c9 N) U
  1209. Music_Show_End
    6 {2 I# ~. t" q2 ]7 s6 ^0 L
  1210. RTS
    1 u, y) E, x( C. j. [
  1211. : i! l+ b; r: [( l
  1212. ;==============================) Q2 g6 R* E1 Y. A, _6 v
  1213. Time_Show;播放时间显示0 j/ v& R  T9 p) M- o
  1214. LDA <Text_Disable_Flag9 c# s7 Q; `, u- {3 a5 U# h1 B
  1215. AND #TEXT_DISABLE_ITEM- B- t, I1 b2 D; v
  1216. BNE Time_Show_End
    ( C6 Q: B9 }& ]! y6 ?# T
  1217. AND #TEXT_DISABLE_TIME" V4 C( F9 ~' @2 D: ^
  1218. BNE Time_Show_Enable
    - d' ]% J) w  H

  1219. ( v* K7 q! Z* W- v
  1220. LDX PPU_Cur
    % ]3 D( P' D( [( z# M/ @6 z( `& X
  1221. LDA #PPU_MODE_CNT_LINE( M6 u# D; p- l  d! A: \0 ^! Z
  1222. STA PPU_Addr,X/ g; N% w3 x) x. k( j
  1223. INX% O2 B) ~1 ?  L# ~& l
  1224. LDA #HIGH(Play_Time_Pos)
    8 m8 p2 O/ K: ~% n9 |% {
  1225. STA PPU_Addr,X1 A0 d/ A% P( _8 o
  1226. INX; |1 J* L! p4 }5 l+ i6 C
  1227. LDA #LOW(Play_Time_Pos)9 _9 R& k& J' G' y, p9 |1 A
  1228. STA PPU_Addr,X
    1 v3 N( ?( i: b& H3 G; ]
  1229. INX
      R- r5 O, e7 c( ~
  1230. LDA #$08
    ( V( l: J6 T6 q! i% B  b
  1231. STA PPU_Addr,X8 o: f: ?( q% m( q. W
  1232. INX0 J/ G( `1 L1 `/ A( N: I  C
  1233. Time_Show_H
    4 y9 B0 L* ~  O/ K
  1234. LDA <Time_H$ }9 N6 ^+ q0 A/ x) n$ W; G5 o
  1235. JSR HEX_To_Dec, R! h% I1 T4 w
  1236. JSR Time_Digit
    2 \4 V7 P+ W  ?+ H) |
  1237. LDA #':'% z( W# x, n2 ]% T* E
  1238. STA PPU_Addr,X
    $ z5 t: f" ^' {
  1239. INX
    - j- S0 s/ X, D
  1240. Time_Show_M5 X0 r( F  X8 {& {3 F: S
  1241. LDA <Time_M
      N, `( o# G9 W# r0 z$ w9 V( w1 ^
  1242. JSR HEX_To_Dec
    4 l+ R; t  f* d0 ]8 L
  1243. JSR Time_Digit) o! W7 ~: g4 P5 i% r  z  q# }
  1244. LDA #':'
    8 ^5 H6 Y0 b* j
  1245. STA PPU_Addr,X
    9 P; v3 X7 W9 v* d% e" C1 h6 @) @
  1246. INX7 P; `: d0 t7 j/ w, s; p
  1247. Time_Show_S0 y; b- F5 W- s& @, c1 w
  1248. LDA <Time_S
    / j1 ]7 ^6 g, U0 `# h
  1249. JSR HEX_To_Dec, C9 _* G3 Z7 N( h" n6 B' \
  1250. JSR Time_Digit
      t, O3 A6 W- `; Q) v! s
  1251. STX PPU_Cur3 c8 R- Q! d& ]/ t; C0 b" K  O  p
  1252. Time_Show_Enable
    * D0 t4 X+ [# {( q
  1253. LDA <Text_Disable_Flag
    ; [0 h  y( N0 m* v$ \* x
  1254. AND #TEXT_DISABLE_TIME ^ $FF0 b, P  c" h& W+ K
  1255. STA <Text_Disable_Flag
    4 x: s4 y; C5 j# W! ^2 h
  1256. Time_Show_End7 t! J; [! I1 W$ I8 O: ^( q
  1257. RTS( }3 S- R2 Z4 r, F# _2 ~: @
  1258. & l( G: D5 A6 \% I2 p2 d
  1259. Time_Digit) [9 O6 f  [+ N4 g& Z
  1260. LDA <DEC_T" `) u. k5 j: }/ e! d6 t
  1261. ORA #'0'6 q+ Y5 g4 }, N" ?5 R" J4 F2 p
  1262. STA PPU_Addr,X+ L$ y5 |: F- [; h3 t
  1263. INX" B4 r) y) M, V' @: Z# j& E
  1264. LDA <DEC_L
    ; B9 a( x" g/ b
  1265. ORA #'0'
    6 n4 V8 N7 @/ ]: l# H3 W* \8 [
  1266. STA PPU_Addr,X7 N, F: a; ]2 Y' i2 U9 h
  1267. INX% A5 F) E+ B) Y8 C1 e
  1268. RTS2 b: f) o9 C. P+ J& X
  1269. " g2 V( k& T0 R
  1270. ;==============================
    9 b/ H7 s7 D! i" {+ I
  1271. Time_Count;计时
    * x$ U3 T* G4 [7 @  r  V
  1272. LDA <Music_Stop_State5 x. s; |6 Z# x* p7 k$ R  Q( W/ z
  1273. ORA <Time_Wait_Cnt/ q! B0 S8 `5 B+ V
  1274. BNE Time_Count_End# i4 X6 ~+ t1 s" _( l
  1275. INC <Time_Cnt
    2 F$ A- n; f! H/ v& `. e$ H/ {4 F1 L
  1276. LDA <Time_Cnt
    4 V) l4 e: Y9 v. i
  1277. CMP #60
    + Z2 f8 K! [' M) F+ x0 F' s; t
  1278. BCC Time_Count_End9 T6 ^2 T8 T; ~
  1279. LDA #006 Q3 Q6 K8 v. ^
  1280. STA <Time_Cnt
    7 F5 `* R5 B" X+ A5 P
  1281. INC <Time_S6 v5 a3 n9 w8 L7 y9 a) `
  1282. . U+ @6 ]) V: q+ j3 [$ L
  1283. Time_S_Cnt
    ( d9 Q) O0 n0 Q: F. N  S
  1284. LDA <Time_S
    $ z1 @( |7 g7 V0 R, o
  1285. CMP #60  s# Y' y+ G  Y# S2 @3 U
  1286. BCC Time_Count_End
    * D8 k+ p$ [6 c8 a7 }& m3 J4 W& q
  1287. LDA #008 e# t5 o) x- m% G8 [8 J9 Y- f
  1288. STA <Time_S
    ; M: n3 k- {) \5 a) A  o9 P
  1289. INC <Time_M  E0 S" u- J) m) V; J8 E: P
  1290. 0 }- X9 `! _6 n
  1291. Time_M_Cnt: I; x) @$ e. I) a; a% C- i
  1292. LDA <Time_M
    ) z$ u% W1 Q& F% l
  1293. CMP #60
    9 B/ E0 V3 L# o& X
  1294. BCC Time_Count_End; {5 b0 u4 A- d6 k* @6 u
  1295. LDA #000 O2 k+ R8 E- Y9 r, \5 R
  1296. STA <Time_M$ _$ j1 b! u$ a0 }% h- M4 N
  1297. INC <Time_H% a, x( f# i: q- u' j, S

  1298. ; K1 v. a- D  D
  1299. Time_H_Cnt
    : Y$ s) V. K: c
  1300. LDA <Time_H3 C5 N+ q5 |+ J
  1301. CMP #243 E# K1 [) f" T) [+ K
  1302. BCC Time_Count_End' |# [3 i  |3 C. G# M
  1303. LDA #00
    4 K5 t# e- t% Y
  1304. STA <Time_H7 L) d" K, P6 ~

  1305. . p5 d2 L/ q+ g0 @" s0 j
  1306. Time_Count_End
    + g! c4 \% c; T8 t+ q
  1307. RTS8 V! ]2 q$ `! H4 E

  1308. 3 G0 k+ \% W3 u8 I
  1309. ;==============================
    - z+ T, [) d0 {5 b0 G& g& j" l
  1310. Time_ReSet;播放时间重置
    + o- u5 m8 v# J7 y$ [
  1311. LDA #$00/ h0 B* a- r8 X
  1312. STA <Time_S. I# t; w! \. v; U5 f4 g
  1313. STA <Time_M 1 B6 M  s" r; w" p* \
  1314. STA <Time_H
    ! F5 c: a7 l8 R/ Z# c& K7 \" c  j
  1315. STA <Time_Cnt
    ( _+ M# W4 h1 `  r4 y/ b
  1316. RTS
    / Z9 t& f/ H8 n0 p% P0 s* }

  1317. 2 a' b3 U; ]+ e, f
  1318. ;==============================2 ^" Z6 e2 p- i7 {& t/ a
  1319. Music_Bar_ReSet;音乐条重置% [5 W/ q2 f9 l( D4 p
  1320. LDA #$006 g6 V. G, W  P4 B5 V5 u2 Y5 w
  1321. LDX #$00
    / j! F2 t! S& p# z/ y- p. F' A
  1322. Music_Bar_ReSet_Set
    $ y  a, z# X. q# H. f4 P0 c7 h
  1323. STA Sound_Bar,X5 E; y. G$ @  a& S% \
  1324. INX
    # r8 z, u& _1 ?" E
  1325. CPX #$101 w+ M7 F5 m$ Q
  1326. BCC Music_Bar_ReSet_Set
    " F. r" n9 T' ~2 }5 L4 V) @& R
  1327. RTS3 h1 Q+ m. l7 A! |6 s' W/ S" h/ u

  1328. 1 @  `. B1 m) f* F
  1329. ;==============================
    & d) u" c$ {- }; w, Z9 o) Z
  1330. PPU_Data;PPU数据写入  u, o$ j* H4 k
  1331. STY <Data_L
    $ t/ L. I. e5 z7 R$ m* G* b; c& H
  1332. STX <Data_H
    ! g) g  e6 E$ q% a. C/ b* j
  1333. LDY #$FF8 h) L) d$ M! I
  1334. LDX PPU_Cur1 E* E1 ^5 I8 i+ o) g3 }  w
  1335. DEX
    0 h/ D/ D3 B3 n: W
  1336. PPU_Data_Beg
    9 L& g2 W9 ]% X2 R- m! ~
  1337. INX, i' C" G  ]( W- r5 ~( M5 f7 N
  1338. INY- S7 D/ s) M7 v( i1 H
  1339. LDA [Data_L],Y- c0 h- P: u/ e+ e: J
  1340. STA PPU_Addr,X6 D; g/ `5 X# N- F5 V# |
  1341. BNE PPU_Data_Beg
    - K. U4 t! M" }: o# Q+ g
  1342. STX PPU_Cur
    & j( G2 x2 [2 N6 e9 C& P
  1343. PPU_Data_End
    + y0 P: q- R+ o$ S1 m% L2 S7 m* W
  1344. RTS' r4 P  |4 S5 d
  1345. ; |: f! ^; q* ^# a# `6 D: w
  1346. ;==============================5 w5 }8 c/ K; g$ ~& Y
  1347. Music_State_Show;播放状态显示2 v  {  U' \: o3 p& {" {' V
  1348. LDA <Music_Stop_State4 c; B7 @$ C6 m  L9 }
  1349. BEQ Music_State_Show_Play
    * q( t% v5 r, q. G% C; G# A
  1350. Music_State_Show_Stop, g: h$ c1 T& `; V; L
  1351. LDY #LOW(Music_State_Stop)
    % [* {+ Y  a/ J: X; @3 z
  1352. LDX #HIGH(Music_State_Stop)
    8 b+ a( M. `8 M! P* p8 B- C( t" V
  1353. JSR PPU_Data: M, T. f3 t+ D$ ]7 F
  1354. RTS. \; O; H+ \# n6 F4 T) f
  1355. Music_State_Show_Play
    5 _" r5 u% R; D! c0 }
  1356. LDY #LOW(Music_State_Play)
    ' ?8 {' A, E8 T. P+ c! I
  1357. LDX #HIGH(Music_State_Play)9 H; W$ C# p1 r% m% B
  1358. JSR PPU_Data
    / n, M7 M+ I, L
  1359. RTS
    ' w' X$ B+ F& c$ T. {! x, Y

  1360. 0 K3 n5 B) W( U4 X4 y
  1361. .IF SOUND_BAR_SHOW_ENABLE& g- Z3 U; q5 d! C4 o
  1362. ;==============================
      }+ I2 f) P* X8 e5 e
  1363. Sound_Bar_Text_Set;标题与音乐条初始化& k) M6 E* D7 f; i8 I, U
  1364. LDY #LOW(Sound_Bar_Text_Data)! b* n4 w: Z6 `  e2 u9 e' I, C
  1365. LDX #HIGH(Sound_Bar_Text_Data)( ~9 T7 z3 v7 F9 F* x+ X3 j$ L
  1366. JSR PPU_Data
    & l. p8 u; A* H. y
  1367. RTS2 E3 I: Q5 h8 [, j' A8 F
  1368. + K' `6 p  N# i) H+ k. }) B+ L5 b
  1369. .ENDIF, A% J) g; ?4 N+ M
  1370. ' f2 `0 @+ G, V1 t4 b7 B" w
  1371. ;==============================% ^/ A$ W% g' _7 S  A& Y
  1372. Set_NameTable_Attributes;设置命名表属性
      }: S8 S0 q- E+ N
  1373. BIT PPU_STATUS% v+ n7 F5 }, S: P; g) I& I
  1374. LDA #$233 F( K( k% ^! b1 e
  1375. STA PPU_ADDRESS
    - n/ t" ^! N# v: z9 e  {
  1376. LDA #$C0
    . A/ m/ n( E# [3 D/ Q. L& ^
  1377. STA PPU_ADDRESS+ m/ U; L' A6 E+ f
  1378. LDX #$00
    1 c3 l8 y$ b" k4 w& i3 M
  1379. Set_NameTable_Attributes_Write
    " s0 @9 t; L6 w3 [) p% R6 _' C; F
  1380. LDA Palette_Attributes,X
    ) n( E1 m: ]! y$ K, Y& n& h' _
  1381. STA PPU_DATA8 N- A% j! y% Z" ?: y2 t
  1382. INX
      ~9 ^* u3 w3 {; G& q  |7 f
  1383. CPX #$40
      d- I5 L2 A6 r
  1384. BCC Set_NameTable_Attributes_Write
    4 V" _, a* _" x/ g- C( k+ b
  1385. RTS/ Y; u; {3 |* b3 k2 A$ N1 t
  1386. - I" E; \7 b& a
  1387. ;==============================
    4 Y; B, n- c7 V/ x% t2 x+ Z
  1388. Set_Palette_Color;设置调色板数据0 T/ j& Q& D/ F7 U( F
  1389. BIT PPU_STATUS$ m# D  K  w0 B; S
  1390. LDA #$3F! p; |9 d  T, n
  1391. STA PPU_ADDRESS
    6 K+ f4 I4 y1 N9 j, h
  1392. LDA #$00
    ) F( }9 A" i1 ~: v- \4 s
  1393. STA PPU_ADDRESS
    ) J$ m6 R' V0 S
  1394. LDX #$00( N+ T" E; C6 J( r
  1395. Set_Palette_Color_Write
    6 {# }  Z' s; F9 o7 ~) n
  1396. LDA Palette_Data,X
    - k* z1 {, L. H
  1397. STA PPU_DATA+ i+ u( P$ A) Y$ r& b% Y2 A' y7 `
  1398. INX& m" B, H( B2 i1 Y
  1399. CPX #$20
    + j) D: @3 N/ b2 E& n$ T
  1400. BCC Set_Palette_Color_Write/ u; a4 B! a1 z( Y& y$ K) G
  1401. RTS
    6 U# v- V% G9 @3 V2 G1 ^  {
  1402. % W8 v/ |. n& C: o: r3 @" u
  1403. ;==============================
    % y) C) l2 D6 i8 L- q( V0 _
  1404. Init_Palette_Addr;初始化调色板数据. ~4 F$ Y4 V& e
  1405. LDX #$00" b" H& r: S5 H+ ^
  1406. Init_Palette_Addr_Write, g/ e+ |7 V8 T" ]3 p
  1407. LDA Palette_Data,X
    9 I/ s0 b% c: h* B, g' `6 p% h0 W6 i
  1408. STA Palette_Addr,X
    7 q- B# H9 ]% L# z: D# j3 \" ^
  1409. INX5 N& r' m( ]! a- ]' z) m; ]
  1410. CPX #$20
    & d2 k% e- Z( v* f
  1411. BCC Init_Palette_Addr_Write
    5 e6 V" \$ |% u' N  D
  1412. RTS
    ' q! q7 n2 M8 n, P  b  w$ m/ v2 O( y

  1413. 6 @4 a. }) B* t/ O
  1414. ;==============================
    ( \' ?! B! w# [' m7 j6 \
  1415. Update_Palette_Color;更新调色板颜色: C5 f5 r9 A. P4 ^+ A  g& L
  1416. LDA <Palette_Update_Flag5 z) k8 D: c  ^& G* c
  1417. BEQ Update_Palette_Color_End$ N5 D) Q$ S9 m2 d$ A- P4 a& D
  1418. LDA #$3F. ^4 ?! D, z0 Q3 H
  1419. STA PPU_ADDRESS
    0 i: g; I: v6 h
  1420. LDA #$0C6 U: i- y. @1 `  V% L, q6 i
  1421. STA PPU_ADDRESS  |2 t# n5 n* |+ B! W
  1422. LDX #$0C
    & L. Q; M1 z2 v, U4 Y
  1423. Update_Palette_Color_Write
    - o" R+ {" b7 c8 f- x; Z1 W4 x- J
  1424. LDA Palette_Addr,X
    - y: C- o( U3 c7 N" s# V+ `9 z# o
  1425. STA PPU_DATA
    7 w+ q/ R# x: L9 b; W
  1426. INX
    3 Z' w) y% q% T0 b4 L
  1427. CPX #$14, B1 X2 o# ]8 ^- S6 A, l3 F! \
  1428. BCC Update_Palette_Color_Write
    & Y; R) t) j4 l
  1429. LDA #$00- @. Z- ]; M0 o; G8 {. [
  1430. STA <Palette_Update_Flag
    0 Z' X+ M2 a! n- R) R
  1431. Update_Palette_Color_End
    # K1 }1 [7 O. u6 I1 l
  1432. RTS
    $ |. L6 J/ X/ A
  1433.   a/ O; q& K! @0 |4 c7 g  v
  1434. + m* g0 c& S9 D1 o0 |9 L0 A
  1435. Update_Sprite_Palette_Data
    - I% W! d  g& K0 F/ |) U; m
  1436. .DB $21
    ; [: X5 O2 t6 h  A' V
  1437. .DB $218 p7 ]% ~2 E, G/ C) w3 R
  1438. .DB $114 Y& M; H4 e0 k5 ], \3 k. C
  1439. .DB $015 W6 g0 i8 N  u/ d# `& w
  1440. .DB $01
    " {# _# \$ O( b6 ^
  1441. .DB $11$ e# c" {4 C- ?9 N
  1442. .DB $210 K$ ^2 J6 ~9 S0 U- G4 T
  1443. .DB $21
    ; E) @$ T% c' _! `6 [6 x
  1444. .DB $11
    ! |; o0 e6 ?7 k3 x! e  j9 r
  1445. .DB $01
      f( T" s# O. m2 Y, V
  1446. .DB $11" G& W3 m  v# R. |2 `+ m
  1447. .DB $21: }( t$ B# N9 }: f& e  c& }0 r
  1448. .DB $21- X* D( W" n; o8 F; ?7 r
  1449. .DB $11; K5 k1 a& V! f4 I# y. h; X
  1450. .DB $01# b, ], G  W$ o: l1 u1 x! P' L
  1451. .DB $11
    , @! }/ j$ _8 U2 K
  1452. ;==============================' Q6 c  T* @. y- |
  1453. Update_Palette_Data;更新调色板数据
    * p  e6 j0 G* Z+ i$ s3 G- y
  1454. LDA Nmi_Time_Count* v, L7 S4 w4 A) B" U0 M
  1455. AND #$081 x2 m. {3 b6 t" u" x. t+ N" \7 {7 m
  1456. CMP #$082 n! [  A# ?9 `; `
  1457. BNE Update_Bkg_Palette_Data
    " H( n2 x/ R# q* @7 m

  1458. ' b$ ^3 p8 d- L6 o; A
  1459. Update_Sprite_Palette_Data_Set
    ! C8 o4 k. G# R9 v
  1460. LDA Nmi_Time_Count
    & p( ~( C# ~7 @8 e! |7 ?4 F
  1461. LSR A
    ; ~: O# f7 b# D! ?1 j( {5 R0 \
  1462. LSR A
    6 l: N  D) C2 h' i/ X2 M
  1463. LSR A
    2 V. {4 Z. H% ^  }- l
  1464. LSR A
    & S8 i0 M0 q: ]3 A
  1465. AND #$0F
    5 T+ r' X" s1 ]1 ], S  \1 z0 [
  1466. TAX& i, @! Y, Q; E. p% i
  1467. LDA Update_Sprite_Palette_Data,X- ~# y: Q% @5 P' U6 k
  1468. STA Sprite_Palette_Update_Addr
    8 _2 ^" }$ P: ^  [( c; U3 z
  1469. LDA #$01
    / q/ d) z! m8 @3 ^. Q
  1470. STA <Palette_Update_Flag* H5 n; f" n* n  T! V5 v

  1471. : A) g  s: ~( h( T' ~% K6 q% C
  1472. Update_Bkg_Palette_Data
    5 A! l/ q& O" ~  J
  1473. LDA <Text_Disable_Flag1 W) y# b* b) ~4 ~2 L
  1474. AND #TEXT_DISABLE_RAM
    ! T8 V5 p7 l" p0 X' C
  1475. BNE Update_Palette_Data_End& H  t! @  y4 ?9 l" @& s+ e% x* s
  1476. LDA <Music_Stop_State
    ) ^5 O' p3 `- k3 H. z" V+ h6 `
  1477. BNE Update_Palette_Data_End
    ( O: X- _  L! |# j

  1478. 3 [, `) `% z5 T7 o. ?9 M
  1479. Update_Palette_Data_Check
    ( U6 N( |2 n3 g, J: L
  1480. LDA Palette_Wait_Cnt+ M' Y, ~$ n# O
  1481. BPL Update_Palette_Data_Check_Over
    ; i( \( g* i* x& l7 c4 M( y) h
  1482. LDA #PALETTE_UPDATE_INTERVAL
    ( X% ^& v* l. X6 O7 A. r# X0 Q$ d
  1483. STA Palette_Wait_Cnt
    ! A+ g! v" I1 f& I1 P0 R
  1484. Update_Palette_Data_Check_Over
    . T6 ]" r% Z. J4 o/ E& h  L8 n$ o0 C
  1485. DEC Palette_Wait_Cnt3 B& x3 Z" ]- O, e% U  G' L& K; A
  1486. BNE Update_Palette_Data_End
    ! e' m, C: e( ^2 c+ f9 f
  1487. , @$ y* Z: W' A  i7 C- y
  1488. LDA <Text_Disable_Flag
      q" g4 A, ~8 m
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME  A) ~9 ]! ^/ }  ~; H( A$ [
  1490. STA Text_Disable_Flag
    / [$ N3 W! p; i" U# {' l
  1491. INC Palette_Update_Flag
    9 ~+ Z2 I- n$ c4 b3 s

  1492. * _3 h! ^+ ?6 I. E- b7 @
  1493. LDA #PALETTE_UPDATE_INTERVAL
    4 F; \( y! {9 z5 Z
  1494. STA Palette_Wait_Cnt: N- c9 U0 W- D: F* J

  1495. 2 n* ^+ I0 N8 @9 ?1 Y& J
  1496. LDA Bkg_Palette_Update_Addr
    / q, y- Z- H# K, x. n+ A
  1497. CMP #PALETTE_UPDATE_MAX
    7 \5 h& @  v7 a; }
  1498. BNE Update_Bkg_Palette_Data_Set8 P7 [0 B9 j9 k8 B5 `
  1499. LDA #PALETTE_UPDATE_MIN - 1
    0 [9 v; e% t; {! X5 Y5 o6 M
  1500. STA Bkg_Palette_Update_Addr
    % t5 z$ r# ?* a; d. Z$ ^' _& _9 L
  1501. Update_Bkg_Palette_Data_Set% e) _& }: R6 n/ }, a. a
  1502. INC Bkg_Palette_Update_Addr
    9 z" _0 b$ b* ~5 Z
  1503. * e$ A( L& y5 `  d  e
  1504. Update_Palette_Data_End" ~" v9 y6 H" L6 f6 |6 b4 [
  1505. RTS. N" F1 y% H) A7 V. i' B
  1506. " {- c7 E$ V& j) Y( F
  1507. ;==============================+ _* j0 F1 v: C) Z4 k- I
  1508. Show_Music_Text;显示静态文本6 R8 @0 p7 S7 Q8 G$ `
  1509. LDX #$00
    4 j! \( F; |/ L' u
  1510. Show_Music_Text_Set/ O: _6 d3 k5 D
  1511. LDA Static_Text_Data,X
    7 _- E/ a' p, T  a' F1 L. p
  1512. STA <Data_L7 n& X3 y0 f' j& `  k- r6 v( g
  1513. INX
    3 B: f6 H$ s- v6 u6 A+ J- j
  1514. LDA Static_Text_Data,X
    ; \  s" ^: y1 @$ k' |1 i
  1515. STA <Data_H
    : y+ P9 [- Z2 J- @& e2 J: v3 s: z
  1516. INX3 ]1 |% n- ?  U' p0 U  I
  1517. LDY #$00, ~' C0 P! ]$ g0 t  h1 i5 B# f; i( o) }
  1518. LDA [Data_L],Y
    0 w! |' _3 U# d! U# b
  1519. STA <Data_Cnt
    & v% l, e6 c  S9 ^2 C
  1520. DEX1 m& t: x$ B$ r" \) z
  1521. DEX
    " c% j6 c1 d- H+ v$ P; k
  1522. LDA Static_Text_Pos,X
    # G) |6 W# c; I. d
  1523. STA PPU_ADDRESS
    / w$ f) A/ I3 h9 m4 m) l
  1524. INX
    * w4 d2 I2 g6 T# w
  1525. LDA #$20
    ; }4 @& U9 @1 M6 k' T
  1526. SEC
    9 Y1 Y7 z- Y" J+ U2 W" w
  1527. SBC <Data_Cnt
    " y; F5 k8 y" Q" z8 {% h& t) N
  1528. LSR A6 ~. n$ L6 A( p" P- E, t' ?2 t
  1529. STA <Data_Buf% N$ x+ |( ]1 `* V. \- |: Q( b
  1530. LDA Static_Text_Pos,X
    ; U% _; x+ \: w4 R
  1531. AND #$E0+ j: f# e" f7 n2 O0 [7 J
  1532. CLC# i2 g0 G5 A8 g/ u0 ?4 z5 A. N
  1533. ADC <Data_Buf
    7 J0 P7 P5 L2 R' ]2 P
  1534. STA PPU_ADDRESS& D' X& ]' E' ~7 k5 l
  1535. INX$ f# N+ Q9 }) n0 j1 L0 d
  1536. Show_Music_Text_Set_Write7 v) h, Y( O" a" H6 d+ R- k: Z* B. S  |
  1537. INY" s: c: G) s& T4 h# F
  1538. LDA [Data_L],Y2 z* c' l* Q5 J# u
  1539. STA PPU_DATA- S- s: a; e8 ]0 ?; T& M* r
  1540. DEC <Data_Cnt
    ' g- ?1 g7 D; Z$ b+ f
  1541. BNE Show_Music_Text_Set_Write8 I6 x2 B9 n& J
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos. `3 T+ X% V, g; ]
  1543. BCC Show_Music_Text_Set- C. l4 o7 F, U- x& g/ l$ L
  1544. RTS
    , t/ b7 s8 w3 ?; k1 w6 z7 m

  1545. $ E$ w: S3 g2 p/ S% t1 u
  1546. ;==============================) b) j, r- J6 H1 B- R/ N& t4 z) r. Z
  1547. .IF Track_Name_Pos;显示曲目信息7 H2 Z  A6 ~; k+ G. F" W* H
  1548. , M& ~& p# \* Y
  1549. Clear_Track_Info
    6 f# p+ j. w  T: L
  1550. PHA* ^2 @& ~# h+ i7 }9 M
  1551. LDX <Music_Item_Cur' d* o, t2 \2 Y& w5 ]- I
  1552. LDA Track_Name_Addr_Flag,X2 M' \/ A! Y# |) ]  V4 U9 N
  1553. BEQ Clear_Track_Info_End_Ex
    * @' _- P* u/ r2 R7 R& ^
  1554. PLA+ f& M5 s+ j/ `! O! }

  1555. ; @& T9 Q' ^  N& F
  1556. LDX PPU_Cur# k2 N' [) x* L3 J7 G: N
  1557. PHA5 O" ]# I) }/ R2 o' B- r- D$ [
  1558. LDA #PPU_MODE_CNT_CLEAR) p' _  J/ H# b! [) p" z# d
  1559. STA PPU_Addr,X) N+ r6 C7 x" R& i. a' I
  1560. INX6 T' l* u; m2 _7 S/ p- a
  1561. PLA
    9 C, J' z' j1 h; P: y
  1562. JSR Show_Get_Track_Name_Center_Pos
    0 g/ W- ^0 x+ Y6 x1 k
  1563. STX PPU_Cur4 N3 q+ r; w1 @5 u' }) ]6 ]0 Z
  1564. Clear_Track_Info_End
    ; ]5 n- z+ L. }7 `+ x
  1565. RTS% ]9 o5 L1 V- }9 f
  1566. Clear_Track_Info_End_Ex
    + R* j8 |5 ^: k+ \& Y
  1567. PLA: _4 K; S. D( }
  1568. RTS' g0 _2 X; A$ A# _4 K+ x
  1569. , E) ~9 J" i7 Y: A
  1570. Write_Track_Info; `$ M% F6 A# b: e
  1571. PHA' K  h& w; o" J! J# f7 g
  1572. LDX <Music_Item_Cur+ `/ w/ D# d  J
  1573. LDA Track_Name_Addr_Flag,X( [& W& y* F% T8 C5 M
  1574. BEQ Write_Track_Info_End_Ex, M9 v( X4 }$ F: C3 E
  1575. PLA8 D, U2 l+ R  ?- K9 S8 @

  1576. & n9 p8 ^4 Y2 B& O. a9 p
  1577. PHA
    , K3 T& X+ s8 ?) I6 V1 _
  1578. LDX PPU_Cur( N7 b9 X4 ?5 W- u* m
  1579. LDA #PPU_MODE_CNT_LINE
    / w4 d( l4 m, a( `2 q5 L
  1580. STA PPU_Addr,X
    % c; \% @  q4 l+ V7 X0 p
  1581. INX# e' L' p+ B0 Z, n8 a0 E5 O$ {* n
  1582. PLA* x, W3 s: A3 L: \! A& e( [
  1583. JSR Show_Get_Track_Name_Center_Pos
    1 e  h( E, Q3 i3 v' P# C" d
  1584. Write_Track_Info_Data
    6 j! ^) Y6 v( Z5 `
  1585. INY
    ) m2 L6 }$ E% K  G$ p
  1586. LDA [Data_L],Y3 _! \  B4 o: {1 F
  1587. STA PPU_Addr,X
    . j& V$ j6 F: L+ g# [7 G: N
  1588. INX" G3 m% D& r+ c' _" i; K' g- }
  1589. DEC <Data_Cnt% f. j' G1 V& _& B* ~$ d) c
  1590. BNE Write_Track_Info_Data5 U& |* Z! q% p( s  E8 j1 q
  1591. STX PPU_Cur9 U/ b; e  a2 L
  1592. Write_Track_Info_End
    0 B' {' `$ r, L
  1593. RTS
    $ L  z: M, q5 @
  1594. Write_Track_Info_End_Ex* P; _* f: I5 }1 D, f
  1595. PLA# j/ I; k' A- h0 E7 L/ ~
  1596. RTS5 O. c! u0 l. A$ |& ]3 C( e
  1597. 0 x( N5 K4 s+ I
  1598. Show_Track_Info1 C- J! [! {3 T- u# k! A* E9 O
  1599. Show_Track_Info_Clear
    " p( i3 d% e) o; z: M# @, e& V" e
  1600. LDA <Music_Last
    , ^1 k( ?' r( H# E( x" G3 t

  1601. - `! H+ w# P' X
  1602. JSR Clear_Track_Info, V9 V2 O6 J1 V4 {4 T7 t/ @1 T

  1603. 1 `, ]" M0 B! L/ d7 r9 _
  1604. LDX <Music_Item_Cur- p9 Y6 J6 G; P1 B7 V' k8 F
  1605. LDA <Music_Cur,X4 e, R6 m  Y* ^+ N7 A8 w$ b
  1606. JSR Write_Track_Info
    5 }" d- J7 B/ L5 R. O
  1607. RTS: D. T. |5 N7 E5 H) W# T& r0 o$ S

  1608. $ a/ D6 q* h4 ^
  1609. ;==============================
    : F- b$ P; J0 y8 X: ], s
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置0 u/ b( F8 Y& z1 H* _. r" H" J
  1611. % O, u! B# i6 [+ T4 P
  1612. ;取出集合名索引
    - ?4 u; x" i; ^! `5 G4 L2 z4 P: \
  1613. PHA
    / |+ r4 i+ b1 G( K
  1614. 7 Q9 ?6 z2 O. q, q1 x1 C/ @
  1615. LDA <Music_Item_Cur
    4 C+ i  H  O% m- T7 r
  1616. ASL A
    6 @3 Q- f- x) }9 S) p+ }$ d
  1617. TAY
    2 n2 z0 o$ |0 }* V' a8 B
  1618. LDA Track_Name_Addr_Port,Y
    ) C' `4 X% C6 M7 F& u
  1619. PHA1 O( H! v$ m* i
  1620. INY
    . c3 _5 `0 t8 k
  1621. LDA Track_Name_Addr_Port,Y
    2 F$ t8 U$ [$ F7 T: f
  1622. STA <Data_H: f$ T, R# E* u0 r# H! j7 k
  1623. PLA+ A9 Q1 P7 @2 T! q% X
  1624. STA <Data_L
    # x4 H- M! {% f: B4 \$ c' X4 i
  1625. 7 k3 q% L4 U7 j8 A) k
  1626. PLA
    # \' @( J' c* q8 \" h' [& ~

  1627. : C2 T+ p4 Q% @! H' m$ {0 b
  1628. ASL A: R4 F) M* ^( x  ~
  1629. TAY
    7 K# u; I1 P  T9 H  s* |4 \! N, j& P4 a
  1630. LDA [Data_L],Y
    " Q/ t" _% D- P) H. E
  1631. PHA
    9 w6 X5 k7 ?3 n8 ?
  1632. INY- t2 U# p7 R' @5 ?
  1633. LDA [Data_L],Y
    + I( z4 V! Q0 E2 |# v3 y: P
  1634. STA Data_H
    $ |( R2 L4 D0 M. x9 ?* \1 a( V
  1635. PLA. ?0 B- w7 e4 f. t8 F7 N0 q
  1636. STA Data_L. P8 X$ H# x9 t. v0 b7 r
  1637. 1 S) Z3 b2 y, a6 W6 I3 ~
  1638. LDY #$00
    7 C, F9 R- y+ @5 r6 G; L, \
  1639. LDA [Data_L],Y
    ' Z* q. c7 p$ `+ {* {& q! a1 F0 E$ G
  1640. STA <Data_Cnt
    6 r" H* }% R: Z& @& f
  1641. LDA #$20
    , @3 D4 R7 E/ `) P; h% p
  1642. SEC
    $ }0 U; V4 v0 l; S4 \, Z
  1643. SBC <Data_Cnt
    , P/ Z% t- ^, K4 `
  1644. LSR A8 r2 f' n  G6 w( i
  1645. STA <Data_Buf
    ( Y# G# L7 A/ W2 U7 X( o; H" z: @
  1646. LDA #HIGH(Track_Name_Pos)
    7 T; H$ ~- ?( Q
  1647. STA PPU_Addr,X+ P, D6 ?/ U/ O3 U) S  }3 k/ c/ F
  1648. INX7 c/ ~, E8 n8 ^( E# i
  1649. LDA #LOW(Track_Name_Pos)) D3 z+ F: V/ X) ^/ k, ]
  1650. AND #$E0/ P% W+ q) h+ K7 |9 l2 v
  1651. CLC( N. g/ c* n  l: s7 f+ k' Y
  1652. ADC <Data_Buf
    $ I- s. H) O2 ^" e: v
  1653. STA PPU_Addr,X- m2 ?9 a1 p0 s1 d8 q
  1654. INX( I$ V! Q/ M; J8 o" |" Q
  1655. LDA <Data_Cnt
    " Z# y  B: m# [: C* j& @- L" [! x; n
  1656. STA PPU_Addr,X4 s$ w5 U' Y9 i
  1657. INX3 K+ F# e0 t. `5 g3 @
  1658. Show_Get_Pos_Center_End  c+ r4 k: q, p
  1659. RTS3 T; S7 Z5 f, _8 N& t, s5 m' h2 V
  1660. .ENDIF$ [" R! v0 X- E6 D+ \& U

  1661. ' A9 B' {. m  |% R" V' _
  1662. ;==============================
    . i  s$ v! y! J, i* Y  {. s( ?' R
  1663. ;音乐端口清除2 _. m+ h$ x; p! @4 e6 X
  1664. Sound_Data_Clear$ ^4 V4 q2 q# ]
  1665. JSR Sound_Port_Clear0 ?" p- [' A& B6 d& V5 f( x  P* l
  1666. JSR Sound_Ram_Clear
    ) R+ Z/ u# \  @" R9 g
  1667. RTS. a% k& f8 a$ P$ K/ u5 J) H
  1668. . b3 U& h5 F5 U( t. O
  1669. ;==============================
    ; L# a0 J/ v$ u$ Z( y3 P9 l
  1670. ;音乐端口清除
    + U3 M3 @! C$ F6 D
  1671. Sound_Port_Clear6 `( ?  I' t* Q+ T' W3 P& c
  1672. LDA #$00. f: j8 A  Y( g7 ^
  1673. STA APU_STATUS
      Z3 a! H4 F0 K6 W8 n
  1674. LDX #$00
    # y; W/ o$ f4 e
  1675. Sound_Port_Clear_Write
    4 P) @9 u1 u3 z( o
  1676. STA $4000,X
    . j  N1 d0 {$ R" ^& P" L  v
  1677. INX
      G! }2 U! {! z* i: U
  1678. CPX #$14
    , p7 T3 g1 I, r
  1679. BCC Sound_Port_Clear_Write/ p5 y8 t2 z2 j  Y6 a7 w( {
  1680. RTS
    : C* B! X0 Y! _& X, W9 P
  1681. $ j  x& ^+ [) I* ]- E
  1682. ;==============================( }" s$ x7 k0 d! [- p8 d1 h7 k% ]2 L
  1683. Sound_Ram_Clear;RAM清除2 [7 y0 H. e* i# e
  1684. LDX #$00$ @( D* d" f+ ~2 j6 r1 a; g
  1685. LDA #$00
    : `* K* ^, F$ V6 }, E( h' y
  1686. Sound_Ram_Clear_1- p. r6 }# H; ?, m
  1687. STA Sound_Ram_Addr_1,X
    1 e! a+ M/ v- d% \
  1688. INX
    + F! z- B: z& |# A1 N# w
  1689. CPX #Sound_Ram_Addr_1_Size
    1 J- {+ Z2 \+ s  C/ k
  1690. BNE Sound_Ram_Clear_1! V& w% o% F( @! B
  1691. LDX #$00
    * D% h0 `% f: t# F# b! o
  1692. Sound_Ram_Clear_2
    ) H  J( m4 \( h/ U5 r+ ?0 q! ?- y
  1693. STA Sound_Ram_Addr_2,X
    , p5 |. g& p, D$ o0 d7 H) a4 F
  1694. INX
    " |, Z: h; g% ]( N& c  e
  1695. CPX #Sound_Ram_Addr_2_Size. ~9 [4 B, r) }
  1696. BNE Sound_Ram_Clear_2
    8 R; j0 m. V) E) \- B2 A" F6 j
  1697. LDX #$00
    ; w6 D! B7 X. Y4 H: a
  1698. Sound_Ram_Clear_3: O7 S" E7 ^- |6 J4 K2 v( S  x) z* j2 ^# y
  1699. STA Sound_Ram_Addr_3,X
    / a# \8 `. g( `; {
  1700. INX
    , S' B$ \0 J( \- V
  1701. CPX #Sound_Ram_Addr_3_Size
    ) n5 ~( m, c3 a" w. y* h
  1702. BNE Sound_Ram_Clear_33 I2 g5 s% @8 J: f8 M
  1703. LDX #$00
    & G1 H5 e; T5 q: W
  1704. Sound_Ram_Clear_4
    4 O& V) B# \0 W9 t1 R: I1 v5 D
  1705. STA Sound_Ram_Addr_4,X( N+ B1 }3 S1 b3 Y* h8 V  a
  1706. INX6 l" ]0 m. `. q
  1707. CPX #Sound_Ram_Addr_4_Size0 _5 s, C! l+ j: Y' ?
  1708. BNE Sound_Ram_Clear_4+ Q6 Q& t0 r( Q2 J: A
  1709. Sound_Ram_Clear_55 L9 T4 ^( }& A8 m1 Y8 i0 F) Z1 h
  1710. STA Sound_Ram_Addr_5,X8 d7 L# ~8 C/ {2 P# C1 V4 h0 c
  1711. INX
    5 l. ?1 w# {* g4 l4 `
  1712. CPX #Sound_Ram_Addr_5_Size
    ' J& u3 ^( U+ k! s
  1713. BNE Sound_Ram_Clear_5- M. i0 u" e4 p9 m/ b
  1714. RTS
    2 w2 U6 j  r" ~9 K% {
  1715. 5 m0 `" Z$ V& v0 P0 |; \
  1716. Get_Music_Collection_Name- t, Z! r  @& [% N& Q8 c+ h
  1717. PHA# L. h9 E/ ?" u* Z  F
  1718. LDA <Music_Item_Cur
      c" ?" _2 n$ n1 T# s
  1719. ASL A+ b  ^2 z/ k7 M; Y' Q
  1720. TAY
    : y% E. B& x4 C4 E; _4 x
  1721. LDA Music_Collection_Name,Y( ]+ H$ x' A$ [5 D$ ]
  1722. STA <Data_L& P% d. E# {, j: m2 }* Z4 ^+ r
  1723. INY' n+ H6 j! G! n
  1724. LDA Music_Collection_Name,Y1 ^3 _/ J$ ]0 {" j: U
  1725. STA <Data_H
    " K& U. N8 W+ d: Y8 ]" L$ r
  1726. PLA
    ! h+ J- j% V- u1 @6 s
  1727. RTS
    5 N' A/ D8 w6 A( Q1 ^
  1728. 8 R& ]3 b5 x' \; N+ A4 o
  1729. Set_Sound_Total! S0 W4 w/ D* f6 [) o
  1730. LDY <Music_Item_Cur
    5 m, p0 |5 E; m
  1731. LDA Sound_Total_Port,Y
    ; M; f  P/ v  K8 {, g
  1732. SEC) X% l) ~$ _8 N6 Y* S( P% S
  1733. SBC #$01! s3 d% @$ w, l/ w: \% t% l1 `( g
  1734. STA <Music_Total
    5 u% @% A/ |; N! _4 e: X
  1735. RTS& ]. U1 J% ]7 f* W- B+ o
  1736. ! \3 b0 Y0 g9 S3 V/ i; H/ g9 }
  1737. Get_Sound_Start
    9 p9 y$ [) f4 ~4 e2 H7 F( S
  1738. LDY <Music_Item_Cur
    ; C5 p6 r& s2 f/ M. H, K' P2 ]# }0 l
  1739. LDA Sound_Start_Port,Y
    , R" h4 t6 A) J. J6 h
  1740. RTS
    9 y- Y' F: M- l- h- y

  1741. . |, v% c' y) D, ~
  1742. Set_Sound_Init_Port3 s: B7 c+ A2 L7 p
  1743. PHA
    9 Q7 {/ z) M5 c9 o6 H
  1744. LDA #$20: o) I2 ~7 i& m: v7 j2 ~
  1745. STA <JSR_Addr_Op6 g2 F! [  l: X8 b
  1746. LDA <Music_Item_Cur& v& o' {  n2 [  i6 C! ~, M
  1747. ASL A
    % j. S. z+ I" ?4 K; u* O9 U
  1748. TAY
    1 e2 q( Y* ]  }
  1749. LDA Sound_Init_Port,Y" P: m7 }' S% U  B! p& _
  1750. STA <JSR_Addr_L& t" l/ Z/ E3 }- |) H- t
  1751. INY: J) n; H2 p# _* n! _& N
  1752. LDA Sound_Init_Port,Y% J( |! e4 Y0 K# }. T. L1 y
  1753. STA <JSR_Addr_H
    $ `" Q/ `9 [. E
  1754. LDA #$60& r. j9 B2 L; V
  1755. STA <JSR_Addr_Rts
    5 l: P; s) V% |1 f* o/ n8 s
  1756. PLA( J8 v) q" z- _$ L$ T' F
  1757. RTS: a3 K$ o1 E$ U  f: E* s4 t1 W

  1758. 3 W: p) J, ^1 S8 C
  1759. Set_Sound_Play_Port
    / l! p( w/ _/ B* O' J3 F
  1760. PHA# |5 L: |$ v; l& a6 R5 J9 A. u
  1761. LDA #$20
      N: L( `, D: n# h
  1762. STA <JSR_Addr_Op. m( J3 N$ A, x) H+ t
  1763. LDA <Music_Item_Cur
    ( e; p0 D$ s; N6 J& J8 ~  c3 Z
  1764. ASL A& C9 ?$ g& Q7 j3 {
  1765. TAY
      R- n5 e; O4 q" X! H
  1766. LDA Sound_Play_Port,Y+ {0 \0 a& V  U3 B
  1767. STA <JSR_Addr_L* D& m) u5 ]% u. z+ V; P! e# d
  1768. INY9 S7 r3 g+ _- t- p
  1769. LDA Sound_Play_Port,Y
    , ~' M- Q- S, O/ [# U, A1 t+ B
  1770. STA <JSR_Addr_H
    5 k& J: [" l% a
  1771. LDA #$60
    / q  b4 \0 H1 ^% B
  1772. STA <JSR_Addr_Rts0 R, [- D$ H0 N; O+ V4 h# h
  1773. PLA% i2 j9 g4 O( D! u! s/ k9 m2 k! ~
  1774. RTS
    ! ^9 F6 e1 j6 u. _" V' h6 L
  1775. 2 X3 w4 i3 g& k5 d
  1776. Set_Sound_Reset_Port
    * j4 I- `; \% L3 J7 D9 t' h
  1777. PHA
      N1 r, o, I5 C0 B. Q: m
  1778. LDA #$20& @) O7 r$ m2 M# C; c) F
  1779. STA <JSR_Addr_Op5 Z9 o& q+ Z9 n5 C* s9 D
  1780. LDA <Music_Item_Cur
    , ^7 J' a/ Q% v0 V& ?
  1781. ASL A' e& q1 C  z% ?
  1782. TAY6 \6 l0 O4 f7 A, E5 `" f4 _+ T
  1783. LDA Sound_Reset_Port,Y, z& _- I. R! w9 t5 ^; G
  1784. STA <JSR_Addr_L/ J$ A6 F  _+ ^0 Z& n" q9 K
  1785. INY2 m* B: U- r# S8 K# I: O
  1786. LDA Sound_Reset_Port,Y7 J! N  j6 c$ z: M9 b  z
  1787. STA <JSR_Addr_H
    7 H+ X2 e. Q: `9 x+ Q
  1788. LDA #$60" P1 f9 Z! W4 z" V6 h
  1789. STA <JSR_Addr_Rts# E- b, E" a& b. j) T8 b* Z
  1790. PLA
    3 x. o; t$ {. z9 h' h
  1791. RTS
    $ I3 g. f! f$ A' h5 o
  1792. + \( X+ @, A& R% D+ T1 B
  1793. ;初始化音乐bank: c7 o$ S; h* X/ h) `
  1794. Init_Sound_Bank3 C- D! M/ A$ Z) o# h
  1795. LDY <Music_Item_Cur
    1 i% l( f6 a0 c. i$ Y) X
  1796. LDA Sound_Bank_8000,Y. }9 E) u4 m  N
  1797. STA <Music_Bank_8000- ~( \+ \, Q3 r
  1798. LDY <Music_Item_Cur
    6 {- @) g3 P* d, i
  1799. LDA Sound_Bank_A000,Y- D# o7 ~: F/ ?" a$ s+ H) \% S/ S
  1800. STA <Music_Bank_A0008 h- k% m! g' k: ~9 @
  1801. RTS
    ) |* r7 d- q' f# l5 m
  1802. ' i/ x$ l$ h! U- w( \# N2 w
  1803. ;==================================================* z8 M/ _: N1 `, F
  1804. Sound_State_Reset;音乐状态重置, o( d, a# T: {
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    / O( z6 x2 p/ E7 ^8 }6 P
  1806. JSR Time_ReSet             ;重置播放时间, t6 b. }+ U- I4 H9 _% C2 C! ?& r

  1807. 9 C9 o8 i9 j1 K) X
  1808. LDA #$00
    5 u6 d) A5 E$ \% F
  1809. STA <Music_Stop_State
    9 T  {& @$ b8 @/ c0 T
  1810. JSR Music_State_Show       ;显示播放状态
    - _! {3 {( r7 v* ~  m4 |9 k

  1811. * ?/ D. b5 h- Y; J7 P
  1812. .IF Track_Name_Pos
    1 \0 _- v  g: d2 l  i/ R
  1813. JSR Show_Track_Info        ;音乐曲目名显示7 G# u7 L5 p& G8 l3 `, i- D3 A
  1814. .ENDIF+ w& h) J) O; M% `' p
  1815. * t/ @5 b2 X7 [: d; c1 m
  1816. RTS9 z( N$ j% o: Z; u* k; j/ t, D

  1817. * S0 j# m% M! p& V
  1818. ;==================================================
    + v8 R: l- d0 J8 Y& R
  1819. Sound_Init_Proc;音乐初始化处理
    - ~5 v  I  r* t  \  p
  1820. PHA
      K* r+ [% [2 d4 `% V
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址- F0 p- k# ]" Z4 A
  1822. LDA #$009 p0 O1 Y9 O1 S( _# q
  1823. STA <Scroll_H               ;重设水平滚动- g* H3 |" L" c
  1824. LDA #$0F) j5 C# q$ F* k8 G
  1825. STA APU_STATUS" {4 Q7 Q. Y$ S  F- C
  1826. PLA
    2 i2 z* F9 j( r3 m4 f
  1827. JSR Sound_Init             ;音乐初始化
      a7 t* u( I+ p  a
  1828. JSR Sound_State_Reset      ;重置音乐播放状态/ d" V" ~5 g8 Z; o! |8 O# G5 ~* r
  1829. RTS  C+ ~6 y) N0 j/ N
  1830. 8 d$ b  M9 u# o
  1831. ;==================================================6 m7 _# r5 n. w# j
  1832. Sound_Play_Proc;音乐播放处理
    ; d% Z. ]- Z# ~9 _  X% c9 r. M
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址- O: A3 {" N* B- ~) o
  1834. JSR Sound_Play             ;音乐播放3 Q% n5 A2 X% j' t
  1835. RTS
    # i% z% U! ~9 t+ f& `2 [
  1836. ( Q0 N: |2 ^3 C/ U) H) d
  1837. ;==================================================
      U+ v$ `/ T+ }$ r. o- Y* q- V* [
  1838. Sound_Reset_Proc;音乐重置处理* _7 P+ l# ?1 x9 S. N
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址5 ?3 A# J! |1 \5 @3 J
  1840. LDA <JSR_Addr_L+ s( N7 j' S# I" p# T7 w# o
  1841. ORA <JSR_Addr_H
    : e( S1 Q. d: ~: I5 B7 H- D5 x
  1842. BEQ Sound_Reset_Proc_Default. X% i  F* ?* I! U
  1843. JSR Sound_Reset            ;执行音乐重置
    5 `- J( t" B0 q& `7 M- Z5 x2 E
  1844. JMP Sound_Reset_Proc_Init_Sound
    ( y; \' C) Q- W2 Q* k/ O
  1845. & F9 J, p; D( K
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    / a' Q+ i0 _, \) h6 l: v& J
  1847. / S* ]' [# Q5 T+ S4 r4 V
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    3 f; a% e3 `  p0 f5 ^
  1849. LDA #$00( L1 N4 L. F8 t" B0 X3 o! p' P
  1850. STA PPU_CTRL
    3 X7 p$ P- V& L6 @
  1851. 0 Q$ Y( ]0 M+ Q& R5 w, U7 z
  1852. JSR Sound_Data_Clear4 B- K7 ~( \, }" {# o. X8 K4 S# g
  1853. # n" s8 @8 n2 _7 y! K% E: W2 G
  1854. Sound_Reset_Proc_Default_Wait5 W* c5 b* b" Q2 I: ]1 X3 i
  1855. LDA PPU_STATUS
    0 ?- H$ @" K, h& T5 m# M
  1856. BPL Sound_Reset_Proc_Default_Wait/ u2 ^. M" a- u! H+ W2 p
  1857. 6 K! }* E, |+ L  _8 b$ [, ^
  1858. LDA #$00: R7 u2 y& `7 C+ F
  1859. STA PPU_ADDRESS
    * l# l& T1 g" z( Q) ]
  1860. STA PPU_ADDRESS
    ' x7 k5 S. p1 k0 W  }9 N8 M( G2 F
  1861. STA PPU_SCROLL: M- n$ e! ~0 v! |: t. }. s. Z
  1862. STA PPU_SCROLL0 L' C& l) x3 h' O% @$ \1 @

  1863. 3 t/ p8 H3 \# |+ w2 |4 @
  1864. ;恢复PPU控制+ z5 h9 Q& G0 w5 G+ \
  1865. LDA Screen_Ctrl
    ) {6 ?+ B) }; r2 ^( C/ [, k
  1866. STA PPU_CTRL2 ]0 h+ \0 X9 |1 t! `/ q
  1867. 0 W9 r) s& H; S# j3 D
  1868. Sound_Reset_Proc_Init_Sound
    4 a! T( A) |0 ~9 a: u
  1869. LDA <Music_Stop_State
    ; ^5 J0 z" d/ [0 ?2 A3 S
  1870. BNE Sound_Reset_Proc_End/ c# f1 }$ h1 q& v' E  e
  1871. LDX <Music_Item_Cur" Q, s1 f  F3 I4 U' P
  1872. LDA <Music_Cur,X. K1 R  C$ \* K$ L5 s
  1873. JSR Sound_Init_Proc
    ' K: L3 r$ a: R) U2 m
  1874. Sound_Reset_Proc_End# W5 \/ S& t7 a! h
  1875. RTS
    ) f' ^, l7 d3 Y, G0 [+ G
  1876. + R2 {0 J9 B/ K2 R
  1877. ;==================================================
    % l- J2 [  L! \, n5 }0 N( E" P
  1878. Clear_Item_Text;清除页项目
    3 t* ?7 ]( _% H9 V3 w7 ~) g
  1879. LDX PPU_Cur
    & b; T  k: Z" R- _! h( [. f
  1880. LDA #PPU_MODE_CNT_CLEAR1 D) p. T4 `: [1 g' P4 y
  1881. STA PPU_Addr,X
    6 E: R$ w* S0 l& }5 c
  1882. INX% B( O' ], z; U5 k( ~
  1883. ; ^1 p& W+ e; M
  1884. LDA <Page_Last
    1 L. L# Z3 y, B5 W1 [( t
  1885. SEC
    * n: a* L  G  U& i- n3 ]7 F2 \7 h
  1886. SBC <Page_Last_Index
    0 x% L# i+ y9 R! K
  1887. ASL A
    $ y1 o/ ]  C2 R# U3 F7 V6 ^/ G
  1888. / t6 Q& _8 a/ o; U. E
  1889. TAY
    6 ~' y" H! y+ t6 Z3 u; c
  1890. LDA Item_Pos_Data,Y
    1 ?8 u2 E. L8 e7 X$ b
  1891. PHA
    4 b$ B9 g/ d8 z8 j* m1 \+ O
  1892. INY
    - J0 X$ m+ h9 ?1 y+ d
  1893. LDA Item_Pos_Data,Y7 q7 O" B0 y9 U, S) p; s0 ^
  1894. STA PPU_Addr,X
    3 ?" }  s; _+ O2 B1 ?
  1895. INX' {7 a, Q6 v+ I4 ?4 m+ w
  1896. PLA6 P1 [; ?- h5 v
  1897. STA PPU_Addr,X. ~3 Q/ ?: a1 D/ \4 `% v* N
  1898. INX. n1 h3 [* O" q7 F) w: I- e

  1899. ! l6 [. B- [& P
  1900. LDA <Page_Last* d  D( O0 ]% [9 d# t5 B
  1901. ASL A: u! L( o* Q( c* \% l9 |1 F: Z
  1902. TAY
    . T( S0 F, o6 R* p: f# f( H
  1903. LDA Music_Collection_Name,Y
    5 J' K) F$ h7 k$ s) y; t0 l3 ]  ]# P$ d
  1904. STA <Data_L5 {# I- t$ a1 U5 e& K4 F4 E
  1905. INY9 @+ K. j  d9 H$ ?4 b1 H, L
  1906. LDA Music_Collection_Name,Y& p& z$ F- o" i; ?; q
  1907. STA <Data_H
    + u% j0 g1 u# w# i' v2 V1 `
  1908. * X9 u) b  ]* j$ I' i$ f/ L. h8 p
  1909. LDY #$00/ g( Y' ?- I2 L+ A; L! t
  1910. LDA [Data_L],Y
    % d  \2 F. j+ S! ]! r2 |
  1911. STA PPU_Addr,X. f6 `) r, w* Y% h3 z1 h8 \
  1912. INX
    * S  C% c7 A+ ~) {' E/ O
  1913. Clear_Item_Text_End  k/ \# o3 R3 z' w* ~! v7 E
  1914. STX PPU_Cur
    + j/ z4 O8 O- r- E4 z- u0 o
  1915. RTS
    2 d! j4 |3 @- _
  1916. - ]$ }- o- A9 G. h+ \
  1917. ;==================================================3 O8 [' ]* G7 k* @* R7 o, Q, M
  1918. Show_Item_Text;显示页项目
    7 `  W6 e% I* G9 o
  1919. LDX PPU_Cur
    5 ]) U2 H) ]  h. y! y
  1920. LDA #PPU_MODE_CNT_LINE
    9 k3 \' H2 Y3 m3 d) Y( L3 r1 B/ u: M, b
  1921. STA PPU_Addr,X" l4 ~$ _# T- [; a5 ]
  1922. INX
    8 Y" [0 R7 y% {6 c, O5 B' X* w7 k
  1923. LDA Page_Cur( ~  i- ~+ [, z9 L$ N/ d
  1924. SEC; \, M# P# I5 K+ f- r% K
  1925. SBC <Page_Cur_Index5 }  r5 X" Q+ F  j
  1926. ASL A
    ! S. R! V2 ?; D8 F! h
  1927. TAY3 A7 f' R7 x; H/ ]$ H+ t
  1928. LDA Item_Pos_Data,Y" Y/ F1 @) e* K& {! {4 A. b
  1929. PHA0 z+ |/ k+ p' p% f
  1930. INY
    1 L0 x1 J. |" o6 D8 Z" w' p; H9 H
  1931. LDA Item_Pos_Data,Y8 |3 g4 {$ g) z
  1932. STA PPU_Addr,X+ e4 d6 e+ b' k1 o8 B6 T) W
  1933. INX
    ) Y/ }: _9 a6 }
  1934. PLA
    ( U5 ~" h$ ^' u6 b- z2 i2 `+ }
  1935. STA PPU_Addr,X: E: T6 d4 t9 T0 Z
  1936. INX
    ' q+ X6 J2 i3 f6 J' V
  1937. / o+ p* R0 g  [1 @
  1938. LDA Page_Cur
    : C- K7 G# C6 p( D& @
  1939. ASL A
    ; R7 c! J2 S  \. [0 v$ r
  1940. TAY, _. ]# Q" D, D5 d) f2 d
  1941. LDA Music_Collection_Name,Y: b7 B# M: \- k2 n5 C* d
  1942. STA <Data_L" i0 V6 y% X6 F$ u, y6 E8 r& o
  1943. INY
    5 A# t1 |; M0 q- r# S
  1944. LDA Music_Collection_Name,Y
    : v; Q: E! [; x* s) }2 {  d
  1945. STA <Data_H; f" ]5 D7 K9 x/ L: C% ]! |
  1946. 0 D* c2 _4 R- l* I
  1947. LDY #$008 X, \2 a; J1 P  p) c7 j2 y
  1948. LDA [Data_L],Y, s8 _$ E+ y. D; a
  1949. STA PPU_Addr,X+ J$ W" j5 o- f) v
  1950. STA Data_Cnt% j$ ^( f/ d- v5 Z
  1951. INX
    1 ]1 i. G: W3 I. t% z! R

  1952. ' d0 U6 L* U* H- K2 F
  1953. INY
    ) P9 q5 A4 E: }4 s6 t
  1954. Show_Item_Text_Write6 I  _( `/ }& T  ^: a/ s; P
  1955. LDA [Data_L],Y
    $ p( j; v% L- F' W$ A* `& }& L+ }
  1956. STA PPU_Addr,X4 f. v. Y' @" r' r+ D- P
  1957. INY
    2 p' y: Y. B1 Q4 ~2 A6 M
  1958. INX$ ^. C( m. e$ t3 v
  1959. DEC Data_Cnt
    9 E% V! M- x8 n7 ^  }
  1960. BNE Show_Item_Text_Write
    8 E& _3 Z, R, S% |; x
  1961. % D7 K9 r* }2 I
  1962. Show_Item_Text_End
    " K2 K2 P3 i  X  G6 D, D
  1963. STX PPU_Cur3 a' |8 b% l/ _# I9 a$ |
  1964. RTS: b' B& w5 I2 ]1 T. l8 _3 T  J' M
  1965. 4 ?$ o* E8 H3 |! V0 R
  1966. ;==================================================
    6 ~+ \9 D* G% V5 r. J/ S4 z+ U
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    0 `; r, p4 {4 r9 l1 Q
  1968. STA <Data_Buf
    3 i, M- [$ M  y7 S2 Y  N
  1969. LDA #$00/ h9 Z4 `+ B+ i3 L% j# ^' I
  1970. Get_Page_Index_Calc
    # C; f( Z8 Y' F* x. v
  1971. CLC
    % J/ I' b1 Y8 s2 h0 u
  1972. ADC #PAGE_SIZE
    . B# R( O6 @% t& m, J
  1973. CMP <Data_Buf
    * V$ s2 e+ j! r' l4 {) j  x5 F) j
  1974. BCC Get_Page_Index_Calc: O/ z7 ^* j4 F6 X5 i6 Q
  1975. BEQ Get_Page_Index_Calc_End
    ; W  Z; r6 b+ G: O( f0 L  h
  1976. SEC
    9 \& Q6 p& Y7 u4 S% Q" O7 Z
  1977. SBC #PAGE_SIZE4 j) `5 ~) ~! h
  1978. Get_Page_Index_Calc_End3 r0 z+ T$ @% F0 x5 @$ N
  1979. STA <Data_Buf& T( X' x- z) \8 T5 H
  1980. Get_Page_Index_Cnt
    2 B0 e4 b( L% Y9 N8 v  [
  1981. LDA #PAGE_SIZE7 T( T* R/ h& a" F( U0 m3 }
  1982. STA Data_Cnt
    ; f2 a3 g9 v3 S

  1983. ' \" B. z7 Y' }8 u, w- F
  1984. LDA <Data_Buf
    8 u% P; X" [7 }3 c! _6 ^
  1985. CLC
    9 T0 M: z+ `5 S- A5 B
  1986. ADC #PAGE_SIZE' l. D+ Q5 F! ^8 ~2 t
  1987. CMP #ITEM_MAX_SIZE4 P/ P# P" ]% O' R$ b9 l
  1988. BCC Get_Page_Index_Cnt_End4 W" `9 J% Z- G  G
  1989. # b2 v0 G6 b4 z; H
  1990. LDA #ITEM_MAX_SIZE
    4 \1 Y) R% _9 S* L% p
  1991. SEC) E; q2 q- d. e6 v4 B: Q
  1992. SBC <Data_Buf3 H7 Y+ F# t2 F) n$ B
  1993. STA <Data_Cnt$ }1 @5 k6 Q+ a+ c- M) ~

  1994. $ V" @# L* n: I7 \' b$ f  Q
  1995. Get_Page_Index_Cnt_End
    ( J$ S2 M3 \9 b
  1996. RTS0 H  N* G$ y- a& j

  1997. & H& b7 L0 n  K5 j( Z* w& @
  1998. ;==================================================
    * H. y- C: c* H3 h+ K, n
  1999. Get_Last_Page_Start_Index* f0 A# N1 k& J; N3 p! _
  2000. LDA <Music_Item_Last% h3 p) m' _% i# M
  2001. JSR Get_Page_Start_Index* ^5 O" l) u, G' q, x
  2002. LDA Data_Buf
    7 u1 w# x' u8 u
  2003. STA Page_Last
    ( T0 k8 `* v1 `
  2004. STA Page_Last_Index
    , H1 Z4 O3 o% i  I
  2005. LDA Data_Cnt' f+ ~; o4 n- U* ?% \3 ~7 q! R
  2006. STA Page_Last_Cnt
    ) a$ B7 j+ V% s/ w! K6 Y: X& T
  2007. RTS( l9 ?8 e: x. A/ A

  2008. + g" |3 l  ^; W5 h
  2009. ;==================================================( n; P3 U* O8 L4 H% \3 L+ n  `6 }
  2010. Get_Cur_Page_Start_Index
    3 r/ J2 @/ n+ ~$ S
  2011. LDA <Music_Item_Cur+ L" b8 z8 D9 @5 Q7 _
  2012. JSR Get_Page_Start_Index0 m. c0 Q& r& ?# r5 l. K# B
  2013. LDA Data_Buf
    " a; t! @6 {- @3 n# f5 z  A
  2014. STA Page_Cur5 ]& o# |+ O* m/ F, l
  2015. STA Page_Cur_Index
    ; w' C. [4 {# |% B. y
  2016. LDA Data_Cnt9 H8 Z' Y4 Y7 _" ]9 \
  2017. STA Page_Cur_Cnt* o: i# t' X+ f" ]
  2018. RTS
    $ {3 {- y3 l" [0 \
  2019. . c' @; \0 s8 J/ ?' Z
  2020. ;==================================================3 P  L# O) S4 k) g* B: l
  2021. Show_Page_Text;显示页文本
    - t% h& V9 G$ [, B* ?: h. B# a
  2022. LDA <Text_Disable_Flag% Z7 _, s0 {7 C) g+ u. Q: F
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM% H' I9 m+ }5 e$ r
  2024. STA <Text_Disable_Flag
    1 |: o+ N+ G2 k2 t
  2025. ; }* C+ v, }, m/ u7 R! O
  2026. JSR Get_Last_Page_Start_Index
    : W! [' S" J& E( Q
  2027. JSR Get_Cur_Page_Start_Index
      y1 a: u2 q) F  G( m

  2028. $ z5 x1 p* ~8 a( a7 Q, u
  2029. Show_Page_Text_Set* S( V. d! a$ _: \! p- j

  2030. & y8 J: n/ S  T3 U
  2031. Clear_Page_Last_Item;清理上一页4 I( {0 v& T9 S0 t/ v$ M9 ^8 i, Y
  2032. LDA Page_Last_Cnt2 H* P2 ]+ d3 D8 A* I
  2033. BEQ Clear_Page_Last_Item_End
    5 n. B; V' K2 b9 i3 _+ j
  2034. JSR Clear_Item_Text. l/ k& z: o! X' B0 B5 T
  2035. INC Page_Last/ m$ z% W5 i5 V
  2036. DEC Page_Last_Cnt
    ; T+ V6 {9 p( l5 S) h
  2037. Clear_Page_Last_Item_End
    ( H3 k7 \1 O$ f5 }

  2038. ' m1 k) z$ Y& z& b! X9 Z" c8 L
  2039. Show_Page_Cur_Item;显示当前页
    ' f" m9 ?% ]4 D3 m
  2040. LDA Page_Cur_Cnt0 r! f" A0 _6 s$ U8 X2 A
  2041. BEQ Show_Page_Cur_Item_End
    ' u( s& j# s- ], q" X0 l; E
  2042. JSR Show_Item_Text
    6 l1 E, k0 V& g, w3 ?
  2043. INC Page_Cur4 a  g/ Q  H+ h# E0 z" P
  2044. DEC Page_Cur_Cnt
    6 w3 Q- |4 p- F- ^: I9 A+ L
  2045. Show_Page_Cur_Item_End0 O$ Q  O5 T: g0 ?" k) k# U

  2046. 4 g" J8 O# H+ ^
  2047. INC <Time_Wait_Cnt7 r  \1 X* i' O% o' D& m% Q
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    * Z# O6 D1 H6 r" k
  2049. LDA <Time_Wait_Cnt
    ) \2 T3 H# L! L2 A. r! o  z1 m
  2050. BNE Show_Page_Text_Set_Wait
    ) ^0 B6 u$ j3 D4 y1 [' z$ y# ^, W0 `
  2051. 8 u. }1 u* }1 G, K
  2052. LDA Page_Last_Cnt3 F, H5 c7 F9 t0 r/ l& U
  2053. ORA Page_Cur_Cnt
    - J. X+ t4 U# ^3 `
  2054. BNE Show_Page_Text_Set& L+ n  J! v) w! Q( |
  2055. LDA <Text_Disable_Flag
    / S2 g# a$ T" d& G8 E
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
      ]- E6 y5 q3 d+ K/ R2 q* D* ~
  2057. STA <Text_Disable_Flag9 l, X/ g8 R2 k, @4 H3 I* t; Q& R
  2058. RTS2 q+ h5 m$ @- x2 s" v) E6 r* W2 J  U

  2059. " j. d; @+ R. Z. m  W
  2060. ;==================================================
    % m; ~- s1 j8 ~2 N' t1 y6 n6 Q# {
  2061. Last_Item;上一项: U3 ?; }" ?" g5 T& o4 d
  2062. JSR Clear_Last_Track_Name
    ) t" @7 p* ~% G# |- i& j
  2063. JSR Disable_Text_Draw
    3 M0 Y, q# O5 O2 P% E

  2064. ) B  m8 g& v  Q! e9 x1 e  ^
  2065. LDA <Music_Item_Cur
    ) x- e6 l0 a3 q. @+ Y
  2066. STA <Music_Item_Last
    6 n+ b. F5 y% \) j* Q

  2067.   W% f- F* q6 g4 D
  2068. JSR Get_Last_Page_Start_Index$ j0 s# B2 |4 M
  2069. * Q5 s( C$ _  s$ X9 I2 s- F8 t3 M
  2070. LDA #$00
    + J& m& U, E8 ~4 P- q1 M
  2071. STA Data_Buf
    ( K7 `" w. l: l: t- b! ^, ~

  2072.   Z8 u; U) f/ O( R* ~
  2073. LDA <Page_Last) M! o  L: h# ^
  2074. CMP <Music_Item_Cur
    / E' o7 Z; L" I
  2075. BNE Last_Item_Begin
    * K0 z! J! i) I) G
  2076. % O) d% g( W4 P4 _% Z
  2077. LDA #$01
      s. ~; P% _1 j* _  p* _! c& y# `  a
  2078. STA Data_Buf
    ! C/ Q, P) ]! ]+ G; r4 C" K
  2079. Last_Item_Begin1 ]8 w! h  H3 ~) |: t$ ^7 p( d
  2080. LDA <Music_Item_Cur' c: K- R! x0 }4 M2 w
  2081. BNE Last_Item_Set0 ]" D# m3 i. S  Q3 L. [3 I1 `, \: w
  2082. LDA #ITEM_MAX_INDEX + 1
      D8 A9 p  J! c8 e3 |: Y% a
  2083. STA <Music_Item_Cur3 V2 y) ?: x6 u; z5 x  M- H

  2084. ! t4 D- x$ f  E5 N
  2085. Last_Item_Set7 F- a8 _( _; T1 R
  2086. DEC <Music_Item_Cur0 C1 y0 M5 h0 A  X
  2087. LDA <Music_Item_Cur. Q$ W+ s) g6 C7 _7 |  ~
  2088. JSR Reset_Current_Music& i' l$ z5 m' N" L5 o  k

  2089. 3 T% ]) y6 z- ]$ j
  2090. Last_Item_Play
    ( U0 j7 E3 D5 R) x5 n
  2091. LDA Data_Buf
    9 |* E% L6 s' k1 A9 k1 m
  2092. BEQ Last_Item_End
    " Z+ K0 R0 [2 W+ g
  2093. JSR Show_Page_Text1 ~9 @  S' Z  ~3 ]. u2 z
  2094. Last_Item_End7 P) o" K+ b! s# u+ c# E9 t9 I5 i7 ^
  2095. RTS5 B8 a: A, |+ t  s5 j* v

  2096. 5 s! x/ z. y- }# ]* F. x
  2097. ;==================================================
    0 F8 A0 a1 ]% y/ J' U
  2098. Next_Item;下一项
    " a& p+ e4 ^3 a3 d9 |4 c
  2099. JSR Clear_Last_Track_Name
    3 [0 _4 |3 q6 f2 p! U
  2100. JSR Disable_Text_Draw
    9 O( ~4 x8 ^: L5 q
  2101. # _$ Y( m3 R( I( |7 |9 F
  2102. LDA <Music_Item_Cur
      [2 j! m% e  j, c( V3 O
  2103. STA <Music_Item_Last. I) p4 ?; _9 P$ R# y
  2104. $ [  e$ D3 F: @4 X
  2105. JSR Get_Last_Page_Start_Index
    - X, h2 T) l) i. l8 o# h! }
  2106. 0 `6 f( ]4 X- p! h
  2107. LDA #$00& F# u$ z4 j1 O- X
  2108. STA Data_Buf
    & {3 Q% J. @# g9 A$ z4 [8 p( ~
  2109. 6 w* Q) a: B5 M4 J6 D+ Q) b4 x
  2110. LDA <Page_Last
    ; f3 D' y! X" {7 p. r" e
  2111. CLC# d; V$ z# Q  z, s7 r5 Q
  2112. ADC <Page_Last_Cnt
    ' K9 k; ]$ v1 f& l& q# {1 M
  2113. SEC7 I; e7 K) k$ m, \6 I0 F5 v
  2114. SBC #$015 d6 |0 _- S( L1 t8 _
  2115. CMP <Music_Item_Cur
    " Z9 L1 D2 [/ m
  2116. BNE Next_Item_Begin
    7 B/ _' e8 \* m$ B0 A* `7 b; {) L( F. Q

  2117. 3 F/ S: ]! Z" }3 [  i
  2118. LDA #$01# h! K1 W' K8 d+ p
  2119. STA Data_Buf& M) l' q. A4 F8 n3 v
  2120. Next_Item_Begin
    ; x1 K. x7 i4 t6 x3 Z
  2121. LDA <Music_Item_Cur
    ; m1 n; B1 z$ `' L- j; h' d. i  H
  2122. CMP #ITEM_MAX_INDEX& \0 \! X# M( k; x: o7 e2 C
  2123. BCC Next_Item_Set5 ^0 ~" D; y1 D: e7 g/ p
  2124. LDA #$FF" l9 a7 [2 e( i1 N% x
  2125. STA <Music_Item_Cur) n: f; ~+ E. z; C+ P# ^
  2126. Next_Item_Set
    4 f% w# s6 Q; u& Z/ J/ p1 G
  2127. INC <Music_Item_Cur& y: U9 ]. E. T# q; s# K
  2128. LDA <Music_Item_Cur
    , Q. w  V( u) I6 M# w/ E
  2129. LDA <Music_Item_Cur
    6 @) a' l5 @  r! r+ l$ E
  2130. JSR Reset_Current_Music# P3 z+ S4 k( ^: [
  2131. Next_Item_Play
    9 C6 {* r/ n7 t& Z  ?- `: d( K
  2132. LDA Data_Buf
    ; H1 z8 t) x$ E& s
  2133. BEQ Next_Item_End
    ( j" Q3 k+ R* u& p
  2134. JSR Show_Page_Text" Y0 n7 E$ a7 M- |
  2135. Next_Item_End
    6 f( m4 n- K& s% y* \1 `$ z
  2136. RTS8 |7 f' Y: u# A$ U" C. j

  2137. 4 E3 _+ X7 A/ X  |0 s. Y
  2138. ;==================================================, a% B$ k1 t% g! ?; I5 z. A' p
  2139. Last_Page;上一页( I9 B, ?" D7 K% L2 P, _# M! Y
  2140. RTS1 d% X& \: T' U
  2141. 6 i9 h% y9 T' u
  2142. ;==================================================
      y- z9 X- K* t+ B
  2143. Next_Page;下一页
    : Y) e8 s/ O: D  r' w1 r
  2144. LDA #PAGE_MAX_INDEX
    2 ~2 N% B6 Y5 M$ A  l" r- O. p
  2145. CMP #$01
    ' U% k8 o8 m+ O3 Z, M
  2146. BEQ Next_Page_End  P2 w8 l6 w7 [* g& v

  2147. 5 C% b3 M, [: J2 C5 g3 z3 s
  2148. LDA <Music_Item_Cur
    9 w3 J5 z# p7 X" t$ e/ z# I
  2149. STA <Music_Item_Last! u  ~- _6 C9 h1 `1 l9 C3 y3 v
  2150. ) f4 x1 \6 ]; C2 T9 A7 z
  2151. JSR Get_Last_Page_Start_Index6 s1 f% w( i  O

  2152. 0 A) B% L. y5 j! a$ S8 a
  2153. LDA <Page_Last_Index- l: y7 `8 ]+ B& z1 W0 y
  2154. CMP #PAGE_MAX_INDEX
    1 S$ j# c  C: H5 n) r
  2155. BCS Next_Page_In_End_Page
    4 Q) M" f* b& A$ m! H* L
  2156. 9 d9 Z0 p* t" I9 \; A( [
  2157. Next_Page_Not_End_Page;不是在最后一页+ }% |+ `$ T, i8 I8 H/ ~7 w* F
  2158. LDA <Music_Item_Cur3 Y3 V: Q1 h9 g! X: n/ S
  2159. CLC
    : `6 a% Q/ s5 l2 I
  2160. ADC #PAGE_SIZE
    ' Q1 B. ?" l+ a5 A
  2161. CMP #ITEM_MAX_SIZE
      ~4 p* f  W' t: |
  2162. BCC Next_Page_Not_End_Page_Less& _* j2 b, j; P8 E# ?# u# e
  2163. LDA <Music_Item_Cur, N% s. f6 u8 k5 d7 o
  2164. SEC* h! Q) S7 r, k3 P% `, D) d
  2165. SBC <Page_Last_Index/ j7 r+ ?& q5 J+ \* l: Z
  2166. CLC
    $ b( D3 U6 l( K/ y
  2167. ADC #PAGE_MAX_INDEX3 J" N" K' J' Z* w9 ?. d" M
  2168. CMP #ITEM_MAX_SIZE
    & i* H9 U, V7 r0 H% Z/ g
  2169. BCC Next_Page_Not_End_Page_Less
    + R. ~9 Q# _# Y* {! X1 m  D
  2170. LDA #ITEM_MAX_INDEX8 w7 z- S& v$ \! O- X- I, U
  2171. Next_Page_Not_End_Page_Less4 n: j3 O9 J& O
  2172. STA <Music_Item_Cur
    6 G5 |- |/ m3 O
  2173. JMP Next_Page_Reset
    * z8 \, e9 t4 N, A: e% q, q; K& T- H
  2174. ; }- v" E+ c* J3 b" a* W8 {
  2175. Next_Page_In_End_Page;在最后一页
    - v( {0 J" L$ @* J% t
  2176. LDA <Music_Item_Cur
    6 e, Y, B0 k2 S) C( q4 d
  2177. SEC
      l. e' F! C8 f( u4 y$ i$ U# X
  2178. SBC <Page_Last_Index
    3 A' C+ r: L  e1 Z
  2179. STA <Music_Item_Cur% q5 k/ \9 F6 E4 `& U9 l6 U

  2180. 7 m6 y: ?# D- U9 D# D
  2181. Next_Page_Reset2 s5 [, O: y8 I- O$ q
  2182. LDA <Music_Item_Cur
    3 }4 u6 s( G. n
  2183. JSR Reset_Current_Music
    9 n% N8 u8 ~) V  O5 |1 P& N8 j( f
  2184. JSR Show_Page_Text
    - T4 W, K( R+ T0 S9 L, Z/ ]
  2185. Next_Page_End
    0 a( T3 K2 _* {; H9 j
  2186. RTS
    3 E! |! ^/ N4 U. t% z# N

  2187. 0 L0 F4 B0 a. `: o. X! h
  2188. ;==================================================* {- p* J, z- @, {0 @
  2189. Disable_Text_Draw;禁用音乐条刷新
    7 I# _- H6 {' u  f5 s& r
  2190. LDA <Text_Disable_Flag
    $ p% H2 `& g2 D7 l
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ; u: [% {/ g9 Z" d; \. @, O
  2192. STA <Text_Disable_Flag
    ) ]7 Z, _- g9 i
  2193. RTS' h9 z; y& y: k9 E- [' K/ L: X
  2194. ' z3 d4 U$ E6 }, y+ R% k
  2195. ;==================================================0 U% L, ]! V; l8 O
  2196. Clear_Last_Track_Name;清除上次曲目名
    * @2 I0 A6 F4 ]' k% n: C
  2197. LDX <Music_Item_Cur" z6 y9 w/ c: t8 {% p1 _8 ^6 \
  2198. LDA <Music_Cur,X( y9 \7 l. N/ y% c. O
  2199. .IF Track_Name_Pos: e0 Z" q2 i6 T# |5 Q' l
  2200. JSR Clear_Track_Info6 l' ~: h7 U( ]6 Y
  2201. .ENDIF
    ( ]/ B; l3 o& O* J" |* @& M
  2202. RTS  \; g2 [$ N  A- m+ O9 X

  2203. # i: T- D  N& Q* ^" H
  2204. ;==================================================
    9 q6 s# Z' ?/ o) g
  2205. Reset_Current_Music;重设当前曲目! J. c2 W* D/ H7 q3 j' ^6 \
  2206. % W1 ~' Q, R5 u
  2207. ;写入当前总曲目; [0 l- t: R  c4 g* z
  2208. JSR Set_Sound_Total* x2 a5 d; N; T1 O1 p4 w' g
  2209. LDX <Music_Item_Cur2 f6 X: r3 a' W. o* }
  2210. 0 A( I: e5 f5 t9 g9 z
  2211. LDA #$00
    8 R6 Y9 i) u; w
  2212. STA <Music_Last
    ; @4 K2 l( g) Y7 N' c3 k

  2213. - P& \: n! |# [. X( s& b3 g
  2214. JSR Sound_Reset_Proc
    0 U' {3 ^( c/ y. }. N0 K
  2215. JSR Music_Show6 b- c, o7 r8 K- K- A' L9 U2 N
  2216. RTS0 a  x. }8 b% r' ]8 F4 L4 \; j9 j
  2217. - C; {3 r9 n9 ^8 z- @
  2218. ;==================================================% |, K: D5 t! B4 E1 c2 k
  2219. Music_Song_Stop;音乐停止
    / P' L& w' h$ ^
  2220. LDA #$01+ ]1 }4 q. P- q# K
  2221. STA <Music_Stop_State" T/ ^; y3 W* d* l4 r5 S
  2222. JSR Music_Bar_ReSet
    . o3 T/ Q) _# L
  2223. JSR Time_ReSet, |- [2 B7 r! d; g0 V% W( k$ P
  2224. JSR Sound_Data_Clear3 N9 [4 h! I" I1 \  A' W0 X
  2225. JSR Music_State_Show
    " U- y& |5 e+ q4 f4 {6 Q
  2226. RTS2 |' `) V5 k2 B; g! m7 \. g" M

  2227. ( d7 ~- O: ~7 ^0 `- C8 s
  2228. ;==================================================
    5 B) y( k  B8 @+ _9 H( L" I8 I
  2229. Music_Song_Play;音乐播放
    * z8 \* c4 N5 B& m
  2230. LDA #$00
    $ V, l. M: W: G, s' }
  2231. STA <Music_Stop_State* V0 m8 g1 I, C; `, S: b
  2232. LDX <Music_Item_Cur
    # n) [. N5 x7 K: q6 y' T
  2233. LDA <Music_Cur,X- v: n& q% d, d
  2234. JSR Sound_Init_Proc1 Y8 g0 [8 @$ l. A* n0 l
  2235. RTS' b: F: }% h7 H$ u3 l: V1 |: d" N: U
  2236. ; E& @& g* C) G7 R9 b
  2237. ;==================================================
    3 r( w1 H* G- |2 F0 z$ u: U0 H
  2238. Music_Song_Last_10;上10曲/ g. ~! J# M: {1 Q* [- L
  2239. JSR Clear_Last_Track_Name
    " A! }1 [  \$ o' O: }
  2240. JSR Disable_Text_Draw
    * `. \) y" C  c# O- `' R& A5 v. R
  2241. LDX <Music_Item_Cur* D% `+ L/ m+ n2 C6 E( U
  2242. JSR Set_Sound_Total4 w8 `9 B! p3 g, v( d4 R
  2243. LDA <Music_Cur,X
    % J$ |4 ], d7 O/ |6 j: c
  2244. SEC
    ' M, n6 @& i- i6 F6 ~3 ?0 ~! I) J
  2245. SBC #10
    # V' ?  e$ Z' X) I
  2246. BCS Music_Song_Last_10_Set
    1 D$ Z. M1 `) b
  2247. LDA #$00
    7 n* A) a; |) T# l) L
  2248. Music_Song_Last_10_Set, h& H6 }5 }( B4 n4 @) \' o
  2249. STA <Music_Cur,X& R- I. H- u: S* D3 R
  2250. JSR Sound_Reset_Proc
    : V: m: l8 Y2 G
  2251. JSR Music_Show$ p8 [+ t3 f5 ~% G( @( m
  2252. Music_Song_Last_10_End
    & V* n0 f) S- d/ ^+ W4 t# |, m
  2253. RTS# @4 [8 [/ a6 q: f
  2254. % ]+ e2 Z: a2 U' `+ T: s( K
  2255. ;==================================================
    0 Y' t5 y% l5 g1 Q
  2256. Music_Song_Next_10;下10曲
    # r, ]" _$ D( x9 c5 C! @
  2257. JSR Clear_Last_Track_Name! T' h( Z8 ^" w+ e  j0 Z. v4 e
  2258. JSR Disable_Text_Draw
    & ~/ D' y; H# I! g7 j6 ]
  2259. LDX <Music_Item_Cur/ ^! l2 b3 d: o( e0 F
  2260. JSR Set_Sound_Total6 B& R2 M0 Z4 j0 N1 d" W& ~
  2261. LDA <Music_Cur,X" F6 s6 R5 L/ @5 @: C0 r
  2262. CLC9 {2 Y* w9 g5 B% Z
  2263. ADC #10- ?) ^9 {; m. x
  2264. CMP Music_Total
      w7 {* Y# O3 |
  2265. BCC Music_Song_Next_10_Set
      o+ L; p9 _1 o+ A8 N! B
  2266. LDA Music_Total
    ( s9 C. D$ p9 L  q0 A
  2267. Music_Song_Next_10_Set/ |0 r1 M; r: I: p
  2268. STA <Music_Cur,X6 k* n2 y5 T. ?  I) w
  2269. JSR Sound_Reset_Proc0 P2 S4 I4 Q2 h  e
  2270. JSR Music_Show1 |% o! {9 q0 B
  2271. Music_Song_Next_10_End
    ! {# s+ S: }9 x5 u
  2272. RTS
    5 _8 n; W* o! ^

  2273. + n3 ~! w1 \/ ^& {3 y
  2274. ;==================================================0 V6 p9 M( S$ a4 |/ T0 N
  2275. Music_Song_Last;上一曲& D+ ?( {$ h% F" \
  2276. JSR Clear_Last_Track_Name  ^! R" t5 }/ p, J
  2277. JSR Disable_Text_Draw/ g8 N( c5 v: ^
  2278. LDX <Music_Item_Cur
      p  F. L4 a1 N; U: f
  2279. JSR Set_Sound_Total# O" N, I' }$ Z+ L" D
  2280. LDA <Music_Cur,X
    1 [5 E: \! @9 J# B; v( G; D  Z
  2281. BEQ Music_Song_Last_Set- I% T6 o+ s: R" Y. G% D
  2282. DEC <Music_Cur,X
    " Z6 V8 W# c8 b0 C( @5 @+ D+ F
  2283. Music_Song_Last_Set
    8 V6 m; x8 n, w* l! l
  2284. JSR Sound_Reset_Proc
    7 N) ^  B8 y+ B8 r  e6 ]7 n; x
  2285. JSR Music_Show7 {7 `& t7 G' T; f5 Y
  2286. Music_Song_Last_End
    % `+ P/ p' o1 a4 a5 p9 L4 q4 k
  2287. RTS
    ( Z1 P* E' `( {' n+ Q. e

  2288. 5 X! M  L3 h3 T/ N5 E1 @
  2289. ;==================================================' K) X, Y3 c6 y) R9 n- u& `
  2290. Music_Song_Next;下一曲9 e- ~+ A; ^6 m
  2291. JSR Clear_Last_Track_Name
    ! T8 D( J: N; d; J) s
  2292. JSR Disable_Text_Draw7 p$ s* s4 J& L% |6 t3 ]& p4 |
  2293. LDX <Music_Item_Cur
    7 C( q6 \- E* F! f5 V" A9 Q- y7 Z' c" |' }
  2294. JSR Set_Sound_Total# |2 n' h, {! z0 t6 x- ^
  2295. LDA <Music_Cur,X# x: Q# `. ^# v7 Q+ @- x, @
  2296. CMP Music_Total
    + w. H$ x! y' `, H+ Z
  2297. BCS Music_Song_Next_Set- ?* ~- `: D9 ?( B  |
  2298. INC <Music_Cur,X$ l; K: s/ t; {0 R0 [
  2299. Music_Song_Next_Set
    ! C/ A* q4 _, }# G  G5 b
  2300. JSR Sound_Reset_Proc% k/ C8 K7 c! c6 j( D$ p2 z
  2301. JSR Music_Show
    2 _% s0 h& F+ t3 D, w0 b1 H. i7 p. Q7 n
  2302. Music_Song_Next_End
    ; _4 ]1 g( j6 Z5 n) m# u% s
  2303. RTS0 s5 D$ `! t( y8 O# ~* R

  2304. * H4 O8 [0 m: m7 ^. g& r( c( x
  2305. ;==================================================
    8 N9 Q- F. v, @
  2306. Change_Select_Item;改变当前选择项
    1 L2 X& Q8 ]: o3 f* e
  2307. ;--------------------------------------------------% S* d" X  v1 F9 M* P
  2308. Change_Select_Stop_Play_Item;停止/播放& P( @& g' v7 h  Q6 ]
  2309. LDA <Key_Once
    ) C4 V) O- E& {% c, f
  2310. CMP #$10
    ( t2 T  ~+ p" K7 c
  2311. BNE Change_Select_Last_Item# |* p/ E7 d. \% K/ Z0 p" f
  2312. LDA <Music_Stop_State% m8 Q! x9 X% Y# z4 u& s# n. K
  2313. BNE Change_Select_Play9 E# ?3 T. A- C, a- P# L: E; c
  2314. JSR Music_Song_Stop% n! P0 c" ~) E9 e, Y
  2315. LDA <Music_Stop_State
    ' y: h+ Y: q9 z9 h7 d
  2316. RTS
    2 |- ~. P# ^. c% [
  2317. 9 s* C, F: y6 l5 v
  2318. Change_Select_Play  }% j. F* @" J7 J+ H+ v
  2319. JSR Music_Song_Play
    + v" J2 T* L" N" B+ G- l
  2320. RTS
    $ s% @; T% _% g6 l" U0 P3 a' G' `" K: O

  2321. ) L* Z  `5 Y6 W; N: h: |
  2322. ;--------------------------------------------------2 _' _: I' j) V
  2323. Change_Select_Last_Item;上一个专辑
    ) ?! G% }  _1 h
  2324. LDA <Text_Disable_Flag# j9 Q7 y/ u+ L/ G# q2 l6 M5 m
  2325. AND #TEXT_DISABLE_ITEM& D. e, P+ M6 Z+ F; b
  2326. BNE Change_Select_Item_End
    ( P( C1 ?" N6 ]" {
  2327. LDA <Key_Once
    + O: R$ \3 h! T. X2 q2 Y+ R3 p
  2328. CMP #$08/ T% y& _5 c' Q/ b* \2 s/ ?- P
  2329. BNE Change_Select_Next_Item
    8 I, M  D: J+ E& {
  2330. JSR Last_Item% j; K( N. {' _1 [3 L. ~! `
  2331. ;--------------------------------------------------
    : _5 r# b- x; U7 Q# p6 z1 y
  2332. Change_Select_Next_Item;下一个专辑( q( r  }) t1 M) n& A6 j) h
  2333. LDA <Key_Once/ K6 k1 U' Y# I3 ~" r/ U* Z
  2334. CMP #$04; u5 G# X- G$ `# g, f
  2335. BNE Change_Select_Last_10/ D# D7 i5 _( D+ V% [! T
  2336. JSR Next_Item
    % S* |, l0 D% M! i
  2337. LDA <Music_Item_Cur; T  T6 Y  c: Z* n+ k- E0 f
  2338. JSR Get_Page_Start_Index
    , C8 ]/ g! ?; ^, G0 @. N6 e
  2339. ;--------------------------------------------------8 L4 S& H  c8 _6 p% Q) y
  2340. Change_Select_Last_10;前10曲2 }9 K; j  A' S# F
  2341. LDA <Key_Once
    9 D6 D# k  n+ f0 f9 N' Z( L
  2342. CMP #$408 J2 }. z' Z7 I
  2343. BNE Change_Select_Next_101 S  P# q3 o' p( x+ T
  2344. JSR Music_Song_Last_10
    ( i6 m! j& H' O; l$ F5 T
  2345. ;--------------------------------------------------
    " r/ Z& Y6 |' ^' P; J; b6 S
  2346. Change_Select_Next_10;后10曲
    - l% Q3 z/ i" c4 C
  2347. LDA <Key_Once
    6 r8 O) I& ~- H0 ]7 p
  2348. CMP #$80
    ! z3 B+ R9 k( r4 T0 x1 X. a& M
  2349. BNE Change_Select_Last6 D4 I! n8 `, W+ `
  2350. JSR Music_Song_Next_102 n2 i, g" `# w& N' R! t
  2351. ;--------------------------------------------------) b. Y5 D- \, _2 X# i
  2352. Change_Select_Last;上一曲
    9 H+ w" G4 ^$ l
  2353. LDA <Key_Once
    6 B2 _6 G' @( G1 V; C% j
  2354. CMP #$02
    4 D% V1 ^) ^9 O: W5 L, ?* Z
  2355. BNE Change_Select_Next+ t% @: j+ L% H. O8 @; |
  2356. JSR Music_Song_Last
    + [# f0 {+ C8 P5 Q" u& M$ I5 K
  2357. ;--------------------------------------------------
    - ], M' X7 Z: G% e" d5 g+ Y. Q9 Z9 I0 i
  2358. Change_Select_Next;下一曲
    5 b$ a- p: V) N- [, `/ h
  2359. LDA <Key_Once# F& R* ?1 f( ^9 s9 p
  2360. CMP #$01
    / {* j) x4 j7 m3 B/ ^9 n8 ^
  2361. BNE Change_Page_Next
    6 R4 h4 m# G( f/ C: p" Z; o0 F2 T
  2362. JSR Music_Song_Next' ^# u& P* N4 `% i+ m$ f
  2363. ;--------------------------------------------------9 x" Z, W# ?" M  F
  2364. Change_Page_Next;下一页
    ) D( d4 m. j5 W2 ^( _) b6 O- K
  2365. LDA <Key_Once, p! M  N) v5 u% I+ g. V
  2366. CMP #$20
    ) W- Z* \) s6 g5 [0 n1 I
  2367. BNE Change_Select_Item_End
    5 d- \5 c# T7 Z0 m
  2368. JSR Next_Page+ V" ^  q$ [  S8 O7 K: D1 p! k" w
  2369. ;--------------------------------------------------. g8 U% D0 p$ Q5 S
  2370. Change_Select_Item_End
    . Y6 z/ O' D# D& i
  2371. RTS
    8 ~* g% C- @5 N- D+ [, g
  2372. 9 N" X4 w' e9 p9 Q2 V
  2373. ;==================================================
    9 s' P# j7 ~5 N; b, }
  2374. Show_Arrow;显示箭头光标$ C! z$ A! w# a: l" q
  2375. LDA <Music_Item_Cur# Z( N4 L( {0 u0 u1 M/ H/ B
  2376. JSR Get_Page_Start_Index
    ! F# [0 M* a: ?) R$ k8 Z
  2377. LDA #$00. k$ P! T0 p9 W9 g9 b
  2378. STA PPU_OAM_ADDR
    ( Q  b5 p! m3 [
  2379. LDA <Music_Item_Cur0 S% X8 Q, s, u6 m6 {
  2380. SEC; d- D6 v! n2 W8 W
  2381. SBC <Data_Buf
    ! M. f& F" B9 r9 R. l5 o. h& G
  2382. ASL A: c% ^+ v7 x% {; l% E" w+ T. S/ D1 q5 v
  2383. ASL A
      y. C5 a' O* p. q& K
  2384. ASL A
    6 s) x- H! ]6 [2 b+ J! s' y6 D
  2385. ASL A
    ; M& y& U, e& z
  2386. CLC& a- g3 ~3 j2 {, D) Q
  2387. ADC #ARROW_Y_OFFSET
    # v: R1 p$ b' n" G) ?2 Q( f4 n6 k
  2388. STA OAM_TEMP_ADDR + $00/ I/ J# ]) [6 _9 O* w2 p6 t
  2389. ;STA PPU_OAM_DATA
    1 Q0 E' e3 W0 g" ~* f9 s4 |
  2390. LDA #$1F
    ( C- t, W) x- U; B( D' J$ F4 R- ^
  2391. STA OAM_TEMP_ADDR + $01
    2 {& h2 E. g" H0 B9 W5 V7 o- s
  2392. ;STA PPU_OAM_DATA- a% j0 T8 z1 Z7 q, N" K
  2393. LDA #$00% i; X9 E6 {. R3 g' m; [9 S! L! M
  2394. STA OAM_TEMP_ADDR + $02
    * h8 U0 X% D$ W7 `: y) g
  2395. ;STA PPU_OAM_DATA! C4 ~' L, r4 y! ?9 C
  2396. LDA #ARROW_X_OFFSET! }& x% p% D1 E5 _) M
  2397. STA OAM_TEMP_ADDR + $03
    / {- E4 F/ o% D# G$ i
  2398. ;STA PPU_OAM_DATA
    : ]7 ]! b0 V3 x( {" c1 b; C
  2399. RTS
    6 B% L2 O5 m% Z/ s7 t7 z6 v! p
  2400. 9 Y5 Q- _0 B" ^3 j: O; I, o
  2401. ;--------------------------------------------------
    . s% t. j0 P" b8 N( ]. j8 W, D$ K
  2402. ;命名表数据$ @- S, G6 X- i- P* B. l  A
  2403. Palette_Attributes
    % j9 z$ g5 Y0 D) V) T' A
  2404. .IF SOUND_BAR_SHOW_ENABLE+ W1 y: g% ]+ r6 H7 P
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55& b$ ^( f6 M) Z( @" F; _' x. j
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    5 F2 j4 r4 l9 x* X9 r% x
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75) y  M6 y2 {$ C% \' `/ u# S1 s4 w9 s
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA7 z$ H* J* C+ p1 r3 V* K% j8 C5 F7 h
  2409. .ELSE! F# r# A' G( {& o1 f
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    # S1 g. o* V: s
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$559 G/ K5 Z2 _+ H' Z$ l
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75- @# N/ M" a7 Z% g
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA$ R6 Q4 ?: D2 m- p$ F
  2414. .ENDIF
    * [0 y2 @$ c) F8 w
  2415. : c! `  G# e! Z4 k5 g
  2416. ;--------------------------------------------------' v. {1 W" P0 i8 T
  2417. ;调色板数据
    * ~. D0 p  d% O  S4 I: @/ J1 U* n6 V
  2418. Palette_Data
    + g5 b7 K* @: ]2 S. N7 ^
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F) o8 ?' e' q2 F' k/ x
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    2 f& j/ E! u% i3 A

  2421. 6 Z6 B4 q# j( l9 d0 t
  2422. ;--------------------------------------------------' ^+ T; A1 R: k) Z. i9 l4 L* {
  2423. Static_Text_Data) I$ Z, N7 X+ `! e- ?- U6 E1 B
  2424. .WORD Static_Text_Caption_Data' M4 l' }( f, ^: `. `4 E+ T0 t
  2425. .WORD Static_Text_Author_Data. r6 k3 S2 H2 `9 K! w: A7 M
  2426. .WORD Static_Text_Date_Data
    ( z* n1 `% P, O) z8 I
  2427. Static_Text_Data_End
    / L# ^  d) y- X5 U

  2428. + [0 m) I+ h4 E; n' U
  2429. ;--------------------------------------------------
    / B8 ~) Y+ I; U
  2430. Static_Text_Pos" ^0 \7 a- m6 K& _0 K
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    . O$ U& ]' ~5 ^! M/ ]5 X
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    - b; g; m; [( S) i. S" i6 X
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)6 S6 f/ y! D- W
  2434. Static_Text_Pos_End; V* Q" g' E6 Z" z+ E6 K3 n

  2435. 2 x  I4 t8 v* Y
  2436. ;--------------------------------------------------' ?3 _+ ^' Q% y
  2437. Music_State_Stop
    2 f* \! t7 G7 ]
  2438. .IF SOUND_BAR_SHOW_ENABLE( }4 l3 Z' K8 b5 d
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    + H) N. p) ~6 f
  2440. ELSE
    : l! u3 E6 O$ B, f! E3 e$ w
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    4 ~' i' p7 B9 r- X! q4 O$ a
  2442. .ENDIF
      O" {6 g7 x  s6 f6 p6 [3 c
  2443. Music_State_Play
    8 G& e* v; z- Y: q: A
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00$ k$ F) _" L8 T3 u3 ~

  2445.   j9 M- K/ n  g+ o
  2446. ;--------------------------------------------------: A: i2 z7 [' u3 d
  2447. Sound_Bar_Text_Data;声音类型文本" O, N- H- l) f  K
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    3 \6 R- ?; V" k  `& E* t# F5 l
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"+ k: L+ u0 x" p0 K
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"# J9 g- t) I9 b/ @
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"  G+ ~; E: T. R  Q; J, P& v
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    0 z6 f4 Q  ~" E# |' h

  2453. " {: ]! Z5 K; B* U- z
  2454. .IF Track_Name_Pos: O- B  a$ [0 t. A- q! M; V
  2455. * m* q, ~. J5 e& @0 r! V( [
  2456. ;--------------------------------------------------
    ( `( u( f3 h* W1 V- v
  2457. Track_Name_Addr_00;曲目名地址索引3 M' e7 G: O3 [0 p
  2458. .WORD Trackr_00_01
    % x* {( q  H1 C! P

  2459. & U: G+ k9 T4 U9 C6 m! _4 n7 z4 S
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"5 N; p1 K8 S4 u. {6 V
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    ( t3 w% ?% N+ g7 W1 f

  2462. # Q8 s0 T8 T8 r% T  i: H, p7 |
  2463. ;--------------------------------------------------
    $ F. L' L6 J: z) O
  2464. Track_Name_Addr_01;曲目名地址索引' j. y6 g+ f3 u  p! H
  2465. .WORD Trackr_01_010 ^1 D9 a# O* }; c% F4 m; A

  2466. . J% S2 E; h6 t, [
  2467. ;==================================================: P' s4 T" F. l2 N7 ?, M
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"3 Z1 Y1 U4 _* U$ ^$ U+ Z
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"; n2 v1 ]$ }' K0 i" M! _/ d6 D

  2470. ! r) Q7 Y8 h1 X& Z8 M
  2471. ;==================================================. {: R. L- K  G1 w+ X
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引# ~9 i( d7 v0 ?- V6 }
  2473. .WORD Track_Name_Addr_00
    $ C- j8 \. q+ P. Y
  2474. .WORD Track_Name_Addr_011 ]" @( ]8 ~3 L" p3 c+ Y5 N
  2475. .WORD Track_Name_Addr_018 D9 g! C0 s1 D  T. Q1 q

  2476. 2 u' n7 z9 K' `/ ?
  2477. .ENDIF
    0 m6 N1 B( P  l
  2478. ' l$ S# h4 R0 c7 v
  2479. ;--------------------------------------------------
    : A' y  P. k; F$ i
  2480. Static_Text_Caption_Data;静态文本数据2 G) t/ ?- [7 h% n) h6 e3 Y/ Z* ]3 Q
  2481. .DB 16( r# `: Q9 B2 I& w7 N
  2482. .DB "FC MUSIC 12 IN 1"/ u& |' B; n) k+ Z+ L$ Z7 s
  2483. Static_Text_Author_Data
    " t) Q/ c* ^4 G
  2484. .DB 256 `$ S+ E$ g) F  K  e: i; K
  2485. .DB "EXTRACTED BY FLAMECYCLONE": R% z- R9 ~8 d0 n
  2486. Static_Text_Date_Data2 ?) q: ]; P  m1 x2 r* U
  2487. .DB 10) L9 K0 |+ _$ {* V- T# ~8 ^
  2488. .DB "2023.07.23"
      G1 G- U1 `$ w
  2489. ' H7 p5 F/ K: @# D
  2490. ;==================================================) U6 a/ N; C1 d7 G- z3 N
  2491. Music_Collection_Name               ;专辑名间接索引
    , C3 g2 D2 \" d3 `& J
  2492. .DW Music_Collection_Name_000 |5 N3 O9 \- m$ `- C0 o6 f
  2493. .DW Music_Collection_Name_01
    0 @( `$ w& m+ w
  2494. .DW Music_Collection_Name_026 `; P( o- R3 `. P, V; d
  2495. .DW Music_Collection_Name_034 H0 a: j2 k0 S' b
  2496. .DW Music_Collection_Name_04& A% T( [9 d- ?9 M
  2497. .DW Music_Collection_Name_053 R) P9 f$ F5 s7 ?$ e
  2498. .DW Music_Collection_Name_066 Q* A$ R" z% z
  2499. .DW Music_Collection_Name_073 o7 }4 K. v* P9 b; g. l
  2500. .DW Music_Collection_Name_08
    % T9 }7 R" O' S: [* ?/ ^
  2501. .DW Music_Collection_Name_09
    ; G) H1 H9 z: ~' a- r" T
  2502. .DW Music_Collection_Name_10. U' o. X! c0 @9 ?
  2503. .DW Music_Collection_Name_11( H5 w, g1 K& E8 G2 ]7 s9 Y& z; |

  2504. 0 C* ^- S# ?  O
  2505. ;==================================================! G- m2 D( T& |. m
  2506. Music_Collection_Name_00            ;专辑名文本数据
    4 y4 m7 P. }- e/ H
  2507. .DB 11,"1.RAF WORLD"8 i' R0 N% B, x4 P" J
  2508. Music_Collection_Name_01! |8 r: k" C) X1 ?
  2509. .DB 15,"2.FINAL MISSION"  @- y7 e% X/ z- D, C' [
  2510. Music_Collection_Name_02  K. }, M) s: Z" g
  2511. .DB 06,"3.KAGE"+ @2 K  ]5 B) H* y
  2512. Music_Collection_Name_03
    2 N9 H0 u# n( f' i9 b7 x! }" z
  2513. .DB 16,"4.DOUBLE DRAGON"
    # }9 v2 C: G0 O) h/ `; k: \% }# r
  2514. Music_Collection_Name_041 F6 e$ {/ w" Z$ Y0 N# Y
  2515. .DB 17,"5.DOUBLE DRAGON 2"' b' x) ~5 `5 I" k0 b5 A
  2516. Music_Collection_Name_05) t7 u0 o4 P- k' X
  2517. .DB 17,"6.DOUBLE DRAGON 3"3 J% m/ L$ j% X
  2518. Music_Collection_Name_069 P3 z* O1 t3 r( z# H1 f" W; C
  2519. .DB 09,"7.ROCKMAN"
    ; S4 i( m; N  I
  2520. Music_Collection_Name_07
    2 R8 M+ M0 i* y$ [8 v0 D
  2521. .DB 12,"8.ROCKMAN 2"1 b7 ~: ^, ]( c3 N
  2522. Music_Collection_Name_08
    3 ^/ f+ l. c3 H8 ^( Q
  2523. .DB 12,"9.ROCKMAN 3"+ H/ N5 a" p2 ?" r% N' C" D
  2524. Music_Collection_Name_09
    3 h! W3 w! A$ ~& D- z' N$ \8 V
  2525. .DB 12,"10.ROCKMAN 4"% b0 F; D- V. P8 }- h1 _
  2526. Music_Collection_Name_106 p% t( W+ M$ y9 Y
  2527. .DB 12,"11.ROCKMAN 5"
    & c1 t" \. i0 n  p9 X
  2528. Music_Collection_Name_11, O9 e# Q5 _9 U" L. ?) J/ _( X! Q
  2529. .DB 12,"12.ROCKMAN 6"
    - h1 V' Y( B" M+ K% W, ^

  2530. * D' W( F) ^6 r$ P
  2531. ;==================================================
    ; ?4 H5 A7 l1 d7 F- L7 V/ f
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    / m) ?' n9 l, L+ y+ \
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,06 W5 r: c( K9 u. Z# @
  2534. 2 s: r; t+ O. f! V5 b! A- ?
  2535. ;==================================================
    , P: i# R6 O$ E% R9 ~' j5 @: ?
  2536. Item_Pos_Data                         ;光标箭头位置
    * [9 D5 e$ C% v8 M
  2537. .WORD ITEM_SHOW_POS
    1 S, h5 Z1 B" k7 T, i
  2538. .WORD ITEM_SHOW_POS + $0040
    3 }8 x+ [- O* `/ i
  2539. .WORD ITEM_SHOW_POS + $0080+ f, @( j) a  l! ^
  2540. .WORD ITEM_SHOW_POS + $00C0
    9 C4 y1 c0 W# w1 K. l3 @4 O3 F
  2541. .WORD ITEM_SHOW_POS + $0100
    % s7 A6 U. K8 K+ U
  2542. .WORD ITEM_SHOW_POS + $01403 @8 j7 o4 p4 L+ m  M; m) o3 w
  2543. * K" A/ N6 X  M" o: c$ K
  2544. ;==================================================: Z: e5 o! U& n( b6 H" P& e
  2545. Sound_Init_Port                 ;音乐初始化入口地址- J! E$ g  A, A
  2546. .DW $BFC8; {! f. k- [) s& m  e
  2547. .DW $D7F00 G1 F$ F* ?9 r4 r: ^# }
  2548. .DW $9FC0
    ! ]1 K- M! a/ v7 a9 i& h/ m
  2549. .DW $BF70
    ; U3 ~; _( h+ R# S$ @
  2550. .DW $8003. o# p% T4 F5 V
  2551. .DW $BF30  m. P) Q  I' x0 {6 k0 W) R
  2552. .DW $9003! C2 H2 f8 M, o& W$ i
  2553. .DW $80031 a8 `% _4 ~# K: w% |
  2554. .DW $8003
    : ^, y; T1 a' I* W; ]1 V
  2555. .DW $8003
    + V4 A' ^8 b) S" r
  2556. .DW $8003
    ! I* D3 J" w. b8 ]' U3 _# S
  2557. .DW $8003& y$ H1 M: v+ Z) k

  2558. + l3 t2 D! T2 p+ @$ o
  2559. ;==================================================
    ( [( Q2 o9 c% F' O1 Z$ K
  2560. Sound_Play_Port                   ;音乐播放入口地址' J, f: W- V+ s/ T/ C- h$ m) h/ n
  2561. .DW $80008 K! V5 q; O- F6 {
  2562. .DW $8001% z/ W$ H8 G8 T
  2563. .DW $A000! U5 v- }$ a6 k
  2564. .DW $8003; Z7 t6 |2 d) v1 D+ q3 v
  2565. .DW $8000+ `' g8 E: o8 l  x# y& ~
  2566. .DW $8003
    2 d- G3 Z9 m' k, C5 |. Z
  2567. .DW $9000
    4 ?, S% _- g! A4 N
  2568. .DW $80007 K% k5 |7 g" o: H7 v1 \2 P
  2569. .DW $8000
    7 y) W; U* }9 Z/ H2 X" P2 O0 U5 M7 f
  2570. .DW $8000
    / h) ^" }. `) h) ~
  2571. .DW $8000
    & A' q6 B' ~) t- G% ^! d( F
  2572. .DW $8000' \$ C$ U& j) z( Y0 R
  2573. 1 L/ Q" e4 f- C
  2574. ;==================================================! N& V2 r2 e- O5 L! H# `/ z) a
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    ( c% ^6 L& `8 p: k0 @8 j, a" b( v
  2576. .DW $00001 ^* Y: i# ~$ H7 f8 f  ]% X
  2577. .DW $0000
    # p* Z: P/ X8 ]# u
  2578. .DW $0000' U5 Q/ e0 s: v# S7 f" T
  2579. .DW $0000
    " X8 B5 D0 T" U/ s0 e" t
  2580. .DW $00001 \' L0 r( c+ P  |
  2581. .DW $0000' s# B" J' {& v! g
  2582. .DW $0000& p3 C7 d2 {7 O: _  q  X" ^7 ]* i
  2583. .DW $0000
    3 s0 ]. S) i, `) Q$ ?  S3 Q; b. U
  2584. .DW $0000* t* c7 E* I  U5 c7 x: K# V. Z
  2585. .DW $00007 m6 V, C& n/ A: _+ x3 B$ z! ~
  2586. .DW $0000
    1 r2 A9 ~5 i! u3 M6 m
  2587. .DW $00004 m; U( |6 v/ _6 u9 l

  2588. & w. A6 B* V7 ^- R5 u0 m
  2589. ;==================================================
    - _( J+ y5 g7 E( Q  L( _) M; G
  2590. Sound_Total_Port                          ;曲目总数$ p7 T/ m* D' b. l% p" h& ~9 [7 q
  2591. .DB 38
    . U9 y* _8 [4 j$ L' A: \9 t
  2592. .DB 33
    - S( G2 }# R1 C+ E% }# \, G3 N
  2593. .DB 49  Y& `; R3 d' G, N3 v
  2594. .DB 41
      t! n6 D$ R) T7 T
  2595. .DB 83& l3 Y/ h% w, `  _& o
  2596. .DB 70* B0 I1 X. j; c! D4 c
  2597. .DB 50: V- R, x( D' O5 @% ^
  2598. .DB 67
    6 p9 g$ B" G) ?9 N* L
  2599. .DB 57
    ' f3 |+ ]0 g- f: g
  2600. .DB 711 l0 R: V' p0 m8 w* l0 y% C
  2601. .DB 76
    ! y. J  s; B2 |" J3 D
  2602. .DB 102- n$ j/ g0 K' _6 s& y

  2603. , z- M* T; q+ ?# G. V
  2604. ;==================================================
    9 S! i9 D' P+ Z# W* H  w6 E
  2605. Sound_Start_Port                      ;起始播放曲目5 v2 z: z4 X9 E( M- O
  2606. .DB 00
    8 A: J  F; U! N2 F, Z. ]
  2607. .DB 002 J3 z8 [/ u  j1 Z5 K5 E; i* w
  2608. .DB 00
    $ ~; u' ?" e2 T! ?9 I5 x: h
  2609. .DB 00
    7 J5 F! z# M- W/ T! B" r# ^
  2610. .DB 00
    / o$ @) [* ^: F- }% K. L* w
  2611. .DB 005 n% d7 i. n: d4 ~3 N
  2612. .DB 00
    ) J, t1 D! P' S+ k& j& O
  2613. .DB 00
    ) Z* G7 B3 Y: n% p& `( y' g5 ]' J$ S$ d  n
  2614. .DB 005 w1 l& \  }4 q
  2615. .DB 006 c+ T9 V; x2 G. V: G
  2616. .DB 00% J$ K# N4 q3 h! J. v9 ~
  2617. .DB 00
      y+ \* Y) W/ J, B( T0 C5 T* s4 a
  2618. 7 i3 O0 \7 w5 c' F. _; X% N
  2619. ;==================================================
    1 ^; L8 G  d% e( }
  2620. Sound_Bank_8000                      ;专辑bank_8000
    : Q3 o& a6 p$ h0 I. L
  2621. .DB $109 \! p7 T0 K9 R* A7 }; N) q
  2622. .DB $12
    , p8 y$ B0 h; _& V+ j
  2623. .DB $14# {" x4 m9 u5 {' r
  2624. .DB $16
    $ r2 h2 {2 x$ T& [  |5 a& k
  2625. .DB $18
    - J' v8 D" x$ E+ ?. h9 c
  2626. .DB $1A
      l! B. B! I* u

  2627. , S- Y2 @; s. b4 ^
  2628. .DB $00, h$ T- ]' N+ r2 F9 v9 L
  2629. .DB $02
    8 Y: u: v& D/ g- x0 c* ?1 y/ t
  2630. .DB $0D7 Y- P$ p% c% v3 S
  2631. .DB $04$ D- b0 `$ i; [! v4 @7 f" d# m  G
  2632. .DB $073 `, |, H0 `. y
  2633. .DB $0A3 ]/ _$ U9 B, T# W0 T2 j6 K& F0 ]
  2634. ' u7 r1 [& d/ h- z$ S1 E

  2635. ! f) j1 T* t! F/ C4 v7 \
  2636. ;==================================================2 X+ Q: n4 `0 k1 q3 j1 Q8 y
  2637. Sound_Bank_A000                      ;专辑bank_A000
    . x( N- t' _4 d! e% a  }8 r' N
  2638. .DB $11
    ' {2 R" K4 u% W: i# B
  2639. .DB $134 a& R+ b7 A9 h: D
  2640. .DB $15
    8 S- d' Z9 n( v$ a. F% l
  2641. .DB $17% v, P% ?4 h  a# M1 e
  2642. .DB $19: |6 x% k1 x; g4 G
  2643. .DB $1B
    & Y! j. o1 {. c8 Q/ n% X5 k9 e

  2644. # D0 e0 U$ w8 j
  2645. .DB $01( T/ \( D8 p& L5 N0 L  d  Y
  2646. .DB $039 \& l9 w7 r  j6 B1 s" ?9 S1 A3 y
  2647. .DB $0E: c9 v+ D: g9 _) E7 O" R' r
  2648. .DB $05# r( B$ E$ ^6 }! L
  2649. .DB $08
    * w* h+ w7 G9 c  B0 z6 `
  2650. .DB $0B. }8 L% ?; D3 T% U/ B7 M% D

  2651. . K7 h" e) e  k+ D
  2652. + M3 V( @% i' b: O, ^7 ^  D5 o
  2653. ;==================================================7 E  L- T+ U$ P  [0 r  ?3 ?, ^) u4 H
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    ' P/ C- _* x; T$ T3 s
  2655. .ORG RESET_ADDR1 {7 S! B+ o% M
  2656. . e8 f% F7 N4 M
  2657. ;==================================================
    0 m  m( t. l' ]/ c1 a/ _
  2658. Switch_Bank_8000;切换bank到8000-9FFF3 q7 |( i7 H5 g. S2 k" r' f- r
  2659. PHA! v' C( j3 f: d  v% B
  2660. LDA #$06
    3 t2 b* G5 e( g( c& X5 v
  2661. STA MMC3_BANK_CTRL8 O* Y6 O9 r* S7 X/ z1 f' R; A
  2662. PLA
    , B9 i. k$ q* _: H* L+ Y, Q
  2663. STA MMC3_BANK_DATA
    0 j! m0 Y4 C- [  w) X) [) r
  2664. RTS- w: O) y, Q& u5 D' c

  2665. 5 \2 A3 i5 d+ G% _
  2666. ;==================================================
    ) O/ f4 X! h* d- F" T
  2667. Switch_Bank_A000;切换bank到A000-BFFF/ z- a0 x, e( X7 X1 M
  2668. PHA9 ]6 ^7 H6 s7 ^: G  O+ V4 y
  2669. LDA #$07$ b  G% N. G* p. u. @0 y
  2670. STA MMC3_BANK_CTRL
    & z3 b1 l- u. a4 X) S$ N; [) x
  2671. PLA
    - f- K  s% z0 r* c
  2672. STA MMC3_BANK_DATA, W. ~) X/ u  X% q7 _' s
  2673. RTS  [! g+ l& i$ p, u* F2 ]* y
  2674. ; ^* E2 P4 K4 @* G' I
  2675. ;==================================================* I- k' a( ?" Q* f2 C
  2676. Switch_Main_Bank;切到主程序bank
    - n7 D# Z) b9 f4 U6 ]
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    ! K; f3 m* ^; p( ]
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank8 G. L/ \2 R) s- V" G) ^9 Q" K
  2679. RTS% _9 y6 ~7 D( E  I: z# k- S( T/ {1 P% t5 _

  2680. ! ^7 v8 }' T2 n4 r0 D
  2681. ;==================================================* Q7 y- t4 ~5 T: p' {1 O2 F$ X
  2682. Sound_Reset;音乐重设(如果有的话)
    + p% T8 J) N* ]6 _5 r3 S, L% Y
  2683. JSR Switch_Music_Bank  ;切换到音乐bank6 u! f; n, i6 `4 O  j
  2684. JSR JSR_Addr_Op        ;执行音乐重置% a% y4 O* x5 X1 ?& \
  2685. JSR Switch_Main_Bank   ;切回主程序; r" _/ d$ U' a
  2686. RTS" T5 e" K7 H+ q9 _

  2687. / y/ `- {" ?1 K1 _/ l4 o
  2688. ;==================================================1 I2 O7 q- C* I
  2689. Switch_Music_Bank;切换音乐bank
    * }& l+ P1 M3 H; a$ f# M% J
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
      x# g, V8 q/ Z
  2691. LDA <Music_Bank_8000
    , d  g4 t) u$ k
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank) G4 o* A3 x9 `$ V
  2693. LDA <Music_Bank_A000" i# d; v3 A) ?* |$ w
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    ; G# k/ Q) \# ^% B/ u
  2695. RTS4 M- m5 i" W, f( q
  2696. . _* m- ~+ S# R) m7 S5 q, K% w
  2697. ;==================================================" j  h* ]  X+ t+ x9 R
  2698. Sound_Init;音乐初始化/ L# X- w7 o) Y
  2699. PHA+ n' a5 s( y# i
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    7 m7 S( @& x" t" k' t5 J! _0 k% \
  2701. PLA
    1 w. X2 S. v) r) t: D  }4 \+ X
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    7 L4 t9 ]7 G7 z& R+ {0 V4 ^: D
  2703. JSR Switch_Main_Bank   ;切回主程序
    2 e  e. d0 y8 v! l0 A7 }& A. d6 c
  2704. RTS* d. b5 N; F  g6 `' ~

  2705. 7 n- l& ~( A0 S( D( U' p
  2706. ;==================================================- ^" O+ R- n9 N6 }/ [2 y
  2707. Sound_Play;音乐播放! ~; R5 V' n6 _) l: z
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    8 g+ X" O+ Z% @% f+ K% n
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    + u8 b: V. w! ^
  2710. JSR Switch_Main_Bank   ;切回主程序: m  K0 q$ p- M2 G  S# m  n2 T0 L
  2711. RTS1 R& z! m  D8 T
  2712. $ T4 g$ s9 I& H0 P# [" a
  2713. ;==================================================# S" Z( }( v! d' `7 |" P, M
  2714. MainLoop;死循环
    3 c+ T9 X# N  b% M: L6 e2 t
  2715. JMP MainLoop
    * U3 [% a4 l% Q# K/ j

  2716. $ E! M# T9 d% w8 B9 h
  2717. IRQ_SUBPROCESS_JMP = 00 y: W. r% M$ o6 }( L% v# G
  2718. / K, r0 L2 O+ u1 r, a3 s) P3 I" O
  2719. .IF IRQ_SUBPROCESS_JMP0 M# O9 [* w+ h9 h# p! [  z
  2720. ;==================================================+ \$ w) i5 Y1 u! ~' c9 }0 n
  2721. IRQ_Process_0;IRQ处理过程0
    - K4 ~' K' g# t& i$ n& P0 J

  2722. / H! B( h+ Q% Q7 Z5 [
  2723. ;15条扫描线后触发IRQ
    3 F, j  u1 h9 w& }2 e1 I
  2724. LDA #15
    3 t; P6 C. C1 n) G
  2725. STA MMC3_IRQ_LATCH
    ; r1 q0 e: b9 h! r2 F) O
  2726. ( A+ r+ ^4 w# f& T( N3 {
  2727. ;设置屏幕滚动1 ?, X2 C  W% ~# G
  2728. LDA <Scroll_H
    - S/ |+ ~9 O8 `
  2729. STA PPU_SCROLL
    5 y5 s1 M6 ^  f* U  k6 n- q' n
  2730. STA PPU_SCROLL
    3 w( ~0 b6 o& a& w. p

  2731. 2 A' \# B0 _& c" [/ H8 o
  2732. IRQ_Process_0_End
    " n- n$ M# n5 e1 H; F& c% |
  2733. INC <IRQ_Process_Index4 Z+ G; E, W2 `0 _) \" c- Z6 u) ]
  2734. JMP IrqProgramEnd
    # r8 U% Y/ \1 T* {
  2735. - o" d4 O% Q; T) w9 b( k) P. V3 z
  2736. ;==================================================* ?3 e# S  z4 i  L" o' {
  2737. IRQ_Process_1;IRQ处理过程1
    6 U2 n/ @( `8 q# U
  2738. $ n7 |$ @* `" S2 l
  2739. LDA #550 {. R0 N) v- _( Y3 E
  2740. STA MMC3_IRQ_LATCH) c6 \- I% O$ S
  2741. * q+ r+ O, Q& V- q% ^2 o' h
  2742. ;设置屏幕滚动
    ( O( d& q$ h' @% Y
  2743. LDA #$00
    5 B. A: m1 H. M4 e! |
  2744. STA PPU_SCROLL. N. C: ~2 p! z( m! d
  2745. STA PPU_SCROLL
    & V  H' ~2 u- O; v  o

  2746. # C- v9 m& {4 G7 C# r  @1 T
  2747. INC <IRQ_Process_Index- a( a: j& g; W) s! p
  2748. JMP IrqProgramEnd( w* ?/ b2 e( E& l  F& E
  2749. % f2 o' ~( i7 I) j  v
  2750. ;==================================================
    0 U0 Q# {5 x7 G' m6 N! e
  2751. IRQ_Process_2;IRQ处理过程2
    + o/ z" }. t/ ]2 G2 A, N3 C& C
  2752. - b7 U6 T* ^8 l0 Q: i% H. Q
  2753. LDA #15
    " F3 r3 |0 H* \7 k9 B' b
  2754. STA MMC3_IRQ_LATCH
    ; \. j( Q, h1 l1 B" u& g8 Y3 K

  2755. 3 P2 J/ n- w6 o% q0 B& \. x
  2756. ;设置屏幕滚动
    ' D( B9 Y: X$ l% @0 Q
  2757. LDA #$00, U. N8 S' Q; f  O
  2758. SEC
    1 y% r0 J4 O* v' d+ K7 Y! O! J
  2759. SBC <Scroll_H
    7 z& J0 n+ W/ X5 b: S
  2760. STA PPU_SCROLL
    , t* V: i3 t4 J0 v
  2761. STA PPU_SCROLL
    " y2 }; |7 e! j' ^+ ]
  2762. & |: E& C; {: b/ g
  2763. INC <IRQ_Process_Index
    " N' H$ q  y" b$ u, j0 v
  2764. JMP IrqProgramEnd
    ) M# W' }/ Q2 x! {4 ]

  2765. / s% }1 n6 A. L2 O/ u" v* c
  2766. ;==================================================
      L% a2 g. J: t" g
  2767. IRQ_Process_3;IRQ处理过程3
    $ J. z: u3 ^  T2 Z

  2768. 0 s' f: y! Q8 H
  2769. ;设置屏幕滚动) ^# p3 z$ t0 Y- h  P2 j
  2770. LDA <Scroll_H
    ( o- f- K. v  o
  2771. STA PPU_SCROLL
    8 M" e4 n+ O8 [2 ~$ r
  2772. STA PPU_SCROLL: o; q# w& X0 e( j# \! u
  2773. 0 N  p3 l  U( M6 j) K, x
  2774. ;禁用IRQ0 k( p3 o+ }0 s0 T
  2775. STA MMC3_IRQ_DISABLE
    - k! m; G- P8 @8 U) r" h- n7 Z$ }
  2776. JMP IrqProgramEnd* b) V" Y& m$ [# M& l( X
  2777. 5 o+ t& D6 s3 i# w! {4 Z
  2778. IrqProcessAddr
    % A0 X5 A. J1 V0 a
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    ! Z4 q6 O# _' O; R4 U
  2780. / e4 c0 T. g4 i# }2 \; g4 K2 |
  2781. .ENDIF
    # Y; l" J4 o6 y- r% q2 r$ Z& U
  2782. 5 e6 l4 A$ |1 B
  2783. ;==================================================
    0 D  I' v/ S; h6 P7 r5 q
  2784. ;IRQ滚动模式常量6 T4 o- r1 U" X5 |) Z
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    , s$ k7 ~& O6 y- W: i2 W
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动4 e7 |% ~# t4 N8 @7 W
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动, d! @' z. s9 d9 f# y
  2788. * Q/ q3 k. n+ @8 W- o/ Z( @  E' v: _
  2789. ;IRQ扫描线数据, o% i6 G+ C6 o9 S1 x9 i" ^- I
  2790. IRQ_Scanline_Data
    ! |+ X7 ]7 C" D  ^+ t4 L# j3 L. g
  2791. .DB 8- k$ m5 L+ Z1 ]  t, b6 k5 i
  2792. .DB 54
    ) n) x: |7 N3 l' [3 h" n
  2793. .DB 8
    4 r; {) \  G7 `: {. q
  2794. .DB 00 ;关闭IRQ9 e/ U% Y# X8 v* C9 Y

  2795. ' a% Z% t- J6 p! D. O5 j4 k
  2796. ;IRQ滚动控制模式
    6 t6 L- X+ Z  i5 O, K
  2797. IRQ_Scanline_Mode: m6 Z/ i2 I4 J* W
  2798. .DB IRQ_SCROLL_MODE_ZERO
    * J; a  S' J$ W, a% s" t
  2799. .DB IRQ_SCROLL_MODE_ZERO/ `. G, R4 Z$ d8 b
  2800. .DB IRQ_SCROLL_MODE_RIGHT1 ?1 l5 H: \0 i( M) n8 v
  2801. .DB IRQ_SCROLL_MODE_LEFT
    2 e0 D0 A2 S! b/ R+ k* q9 E

  2802. $ l) C* I2 ~& a5 ]
  2803. ;==================================================
    5 g, s0 E! g* B3 g
  2804. ;IRQ处理# H! r& m) j2 V6 u+ P/ u
  2805. IRQ_Process
    ) ^3 ]" Y6 y, s3 i
  2806. LDX <IRQ_Process_Index5 m! t& L. V# L3 b; J
  2807. LDA IRQ_Scanline_Data,X- C* }- X. J, i4 N- w' A" B" V% D
  2808. BNE IRQ_Process_Latch
    / A) b3 @8 |- i. P$ T
  2809. IRQ_Process_Disable;禁用IRQ
    9 M* U& }% i1 J* N
  2810. STA MMC3_IRQ_DISABLE
    - X% b  O5 ?1 F& v
  2811. STA IRQ_Process_Index
    7 L7 l6 e% ^- U
  2812. BEQ IRQ_Process_Scroll  ^; {, |) T" q( c8 o+ ]
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线% e8 v* Z' y+ p' Q& W
  2814. STA MMC3_IRQ_LATCH( {% }4 ]+ \* H+ f& |7 c9 N
  2815. INC <IRQ_Process_Index
    & x5 Y& z* O6 W3 v3 N5 R
  2816. IRQ_Process_Scroll;IRQ滚动控制" h, h% G1 P+ g3 `+ L7 Q, l0 Y* m7 u
  2817. LDA IRQ_Scanline_Mode,X/ Q! m! x3 J$ J3 g! |
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    6 p2 _: H% J1 h- G/ h9 ]
  2819. BEQ IRQ_Process_Scroll_Left
    3 k9 r' J5 U# A/ b
  2820. CMP #IRQ_SCROLL_MODE_RIGHT( s3 b2 @" Z8 z- q" O0 ?, `
  2821. BEQ IRQ_Process_Scroll_Right
    . }' u% b4 n1 ?; T9 K3 N: v
  2822. IRQ_Process_Scroll_Zero;不滚动4 Q( C2 k. s5 ]
  2823. LDA #$00
      v1 F' @4 G6 O! N
  2824. STA PPU_SCROLL  [; u7 g0 M* Z' C% a" J1 @
  2825. STA PPU_SCROLL4 P$ T" Y  E# F& V+ W/ R8 V( f2 f
  2826. RTS5 Q* q2 X2 I0 \" V; `
  2827. IRQ_Process_Scroll_Left;向左滚动4 b. q' w  O9 W+ i2 T9 u
  2828. LDA <Scroll_H2 B/ u; {# b; k8 N+ J* d
  2829. STA PPU_SCROLL; m1 \6 z: J! s- L; L) s% S3 m5 ^
  2830. STA PPU_SCROLL9 N+ A/ f( ?0 c9 Z7 b8 e$ X5 l
  2831. RTS# \/ {8 M7 Z8 Q9 Z/ k' I* c
  2832. IRQ_Process_Scroll_Right;向右滚动: N5 i$ y* C5 |% ~! Z8 y+ Y
  2833. LDA #$00: P/ f, D8 c- R  z0 f1 q' ?: H! t
  2834. SEC& ^, _: ~& R7 m/ A
  2835. SBC <Scroll_H! ]) u: T7 E2 Y( T5 k- r% j+ a, @
  2836. STA PPU_SCROLL/ r" x1 W3 T2 r" @  G+ T2 c
  2837. STA PPU_SCROLL7 S6 d1 |# \- D3 }/ Z9 v4 j5 t
  2838. RTS4 u; f! c$ p+ [' N% E* P- z. L

  2839. 8 j+ R8 `4 v6 }/ d3 k
  2840. ;==================================================
    9 i, H' j3 `& \+ j& {* L
  2841. NmiProgram;Nmi中断处理
    8 M( K9 T# `! {$ |5 [3 z% h
  2842. PHA$ M3 V9 N) y4 J7 Q# l* G: o+ g, k
  2843. TXA+ v. c' }$ W- }! B& Q0 x" @
  2844. PHA
    ) _1 Z; H" l8 G& a2 Z) |
  2845. TYA
    , u$ z( T4 L+ h" z% K3 R" x
  2846. PHA% ]0 E1 K0 J* [- M! h4 Q7 P

  2847. , M' W7 E9 o4 s: @9 T
  2848. ;读取清除Vblank标志, 防止重复进入
    ! }3 z9 B0 I& l
  2849. BIT PPU_STATUS; i* j) m( m4 k. ^1 v8 B

  2850. # E& ]: q/ Q% _" q8 p# U7 k
  2851. ;切换主程序bank: M. }% l$ o& L
  2852. JSR Switch_Main_Bank
    . _3 d1 ]9 w0 Y4 v- k

  2853. + h4 O' G7 C' h7 d* y; I
  2854. ;Nmi处理
    6 S/ [+ w* m; ~2 K" K7 N( c
  2855. JSR NmiProcess3 u6 B+ ~: O5 B

  2856. 4 J( T9 u* b; P' k0 E4 v
  2857. Nmi_Proc_End8 g  _+ D( m  E. i( |7 w
  2858. PLA
    ! @# v8 W/ I4 E4 x
  2859. TAY0 y  ~% S" ]7 N
  2860. PLA
    5 C- K( i0 M! p# I* Z& Y8 B
  2861. TAX
    , n. E: N8 d3 _
  2862. PLA
    ' h$ {( C& g( O% U% @0 U1 d# l
  2863. RTI
    : x# P! R: O# P/ A4 w. ~! n% n$ H
  2864. 0 |; y( `: z1 H3 C! z
  2865. ;==================================================
    ( N: _( t( x* J
  2866. ResetProgram;重置中断处理
    0 b+ K: V+ ~; E/ n# C6 {
  2867. SEI$ [- F) \; L" l+ `# f3 g
  2868. CLD' E) ]) i/ ?+ |" C% b3 O) U" I
  2869. LDA #$005 B3 O: e* G$ C, X, [" C
  2870. STA PPU_CTRL& F* |3 V! w& ^( x8 l
  2871. STA PPU_MASK9 v4 U9 h0 i2 u' I7 Y) Z% ^  w

  2872. * d- O/ X7 d5 F( A5 b
  2873. ;切换主程序bank- k8 Q' j# V9 g0 V  z7 Q
  2874. JSR Switch_Main_Bank
      q6 ^$ ]7 E6 @: S7 E2 ^, ^
  2875. ' P2 B! O  l' {7 [
  2876. ;程序处理开始: t( p) {" s2 L* O
  2877. JMP ProgramBegin4 M! e% p1 N$ r
  2878. : ^; @- F; b- S7 z, a
  2879. ;==================================================( M1 z$ R' q- O# t* T
  2880. IrqProgram;Irq中断处理
    1 L: m' I/ ~$ X/ R
  2881. PHA6 w, k) K* a0 z' A" B% [8 e
  2882. TXA
    ) ~" I& M, J; M. |8 R6 n4 Z5 L
  2883. PHA
    / `# t: e  G( h) k/ z
  2884. TYA
    0 C# c0 c1 v2 D# ]5 R* w8 _
  2885. PHA# v, X4 u2 k$ S/ e. S8 {( d2 B
  2886. * ]! M& k2 R; s) g0 j8 ]
  2887. ;关闭IRQ
    0 J) C7 x9 c% ?2 H
  2888. STA MMC3_IRQ_DISABLE) b$ O: n- |6 Z0 h2 Z* J

  2889.   M6 S; N: K& ?6 S1 q
  2890. ;允许下个IRQ触发7 f3 X; F/ g, |
  2891. STA MMC3_IRQ_ENABLE
    * a0 p$ ]( c* M/ K" _( S9 {
  2892. 2 k" _0 d' ?  E5 _  P3 L) t' a
  2893. .IF IRQ_SUBPROCESS_JMP" i3 F* Q; z7 X2 [9 e- m" H: J

  2894. 8 F- R2 s* x; z3 L, B8 ?
  2895. ;执行IRQ过程# L7 u- K: |5 E& x- u* N* k" [
  2896. LDA <Data_L% j+ d- ^: F* M: C' {: j1 ?
  2897. PHA# M9 z" }+ {, c+ k0 }- @
  2898. LDA <Data_H
    ' Z0 T  ]! k' Y# c
  2899. PHA
    + R, p7 A% L$ }
  2900. LDA <IRQ_Process_Index
    . n1 O' V7 d6 h' w+ D
  2901. ASL A7 t# N; x" Y' E5 L3 j! J3 `4 ]
  2902. TAY2 C5 M" @& c% ^" n0 J
  2903. LDA IrqProcessAddr,Y
    2 }+ K6 m+ U& V! C3 S/ v; W6 e
  2904. STA <Data_L
    , K8 s, E4 N# ]4 D
  2905. INY/ G2 Q. N% f0 D/ ~! T/ c
  2906. LDA IrqProcessAddr,Y* g8 J% [$ }0 G2 V1 }
  2907. STA <Data_H4 c# t+ P3 b" n# B6 d: S6 u1 F" G1 k
  2908. JMP [Data_L]
    % t. m( ]# C) X' V% w* S
  2909. * F. q$ }" ]# W6 Y3 e
  2910. .ELSE
    # X" N6 ~8 E" a: u1 w* q9 v

  2911. / _8 m/ v- W0 k+ u# ?
  2912. JSR IRQ_Process
    8 X) `& D! }6 E! Z

  2913. ' ^  d  V1 \9 q' {" `
  2914. .ENDIF. ]2 M6 O# w  C* A
  2915. # \2 g7 \  `2 [) U' ]6 X
  2916. IrqProgramEnd
    , [# E7 \! P% C1 w5 B
  2917. .IF IRQ_SUBPROCESS_JMP
    3 _' U1 D: R7 X# F) o
  2918. PLA
    ; r9 T0 T* G0 R' Q, U9 Z
  2919. STA <Data_H2 ~$ B% d6 q& }/ }! _
  2920. PLA
    9 j# v$ ?$ O: l: |# @# m
  2921. STA <Data_L
    ! H" D1 q3 d0 n) ^  J
  2922. .ENDIF
    ) q9 w: F& O( M+ ~( N" g
  2923. PLA5 ]+ y- b8 |6 C$ Y9 B' _
  2924. TAY
    ) g9 [% @, C' a' f6 G
  2925. PLA" _7 Q! K, d5 o  o! N
  2926. TAX' g) E8 L3 j9 ^  ^4 K$ p2 G4 ?
  2927. PLA. Y  H3 f- o  }, ^. c% D
  2928. RTI
    % L) t# O6 g1 U+ T  L  I, _

  2929. - o$ s/ J/ ?5 d- g, a
  2930. .ORG $FFFA4 j2 `8 ~4 l' b4 x
  2931. .WORD NmiProgram: U6 q/ T9 i% m. F9 P' z7 y5 F
  2932. .WORD ResetProgram6 Y* e4 X4 F3 n) m
  2933. .WORD IrqProgram: S$ A% a. q* E- _

  2934. - I- a' a2 J1 O4 h7 q) v
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    5 \: t3 A+ U; e! Q4 s, ?( ?- J4 j
  2936. .IF SOUND_BAR_SHOW_ENABLE
    ( Y) l; \6 t4 ?6 X; ^5 i3 q( _

  2937. : ~! ~% _! Z4 U; D/ z5 ]
  2938. .ORG $FE00# s0 S& U9 @2 e$ ~5 q
  2939. PHA6 n6 W! @* W, U; |
  2940. STY $07BA: K: o% [8 {1 t3 j1 }
  2941. LDA #$8D
    7 L4 G, k/ D+ m7 F- N# o' x' v+ s
  2942. STA $07BC
    * s8 M* \& ]8 w* Q" U! Y
  2943. TYA
    + b8 e% D& {3 n1 `+ z/ c
  2944. CLC6 d# W- B; v8 L- l
  2945. ADC #LOW(Sound_Bar)5 ~7 I+ P6 A3 V; R" o: S
  2946. STA $07BD6 Y  y* x; Y  O2 g+ [) f. d# x2 X" T- U
  2947. LDA #HIGH(Sound_Bar)
    # l/ m6 ?* U* h
  2948. STA $07BE  `+ X, e( @5 U
  2949. LDA #$60
    + _0 X. d4 h) i9 A
  2950. STA $07BF
    , x2 ^8 O/ n* r' u+ S- S
  2951. PLA
    ; z. Q# u) F/ P2 o
  2952. RTS
    ! x( p) e! A& @8 Z
  2953. ! g  M5 `, ^& o  j, @0 {
  2954. .ORG $FE20
    ; H9 ]$ |6 t/ R( y, V
  2955. STA $07BA! H2 W3 N* F. d+ L. k- y
  2956. CLC) ~3 D; D2 ]% F+ n/ \- d
  2957. ADC #LOW(Sound_Bar)5 Q/ |1 }& w. `. V( j
  2958. STA $07BD" l  x7 a% d8 k( f( s- x
  2959. LDA #$8D
    , m% U6 w7 H" |& E
  2960. STA $07BC
    : ^" g1 ]  r7 {6 E% |
  2961. LDA #HIGH(Sound_Bar)
    # a* j5 m1 D3 \" _
  2962. STA $07BE; k, k& }0 e, g) k; Z
  2963. LDA #$60
    + P3 v3 _- C  L6 }% S, g. m
  2964. STA $07BF
    3 S( W0 n9 V8 I, w7 N* x
  2965. RTS
    3 i  a* a  l) G

  2966. : j1 Z$ A+ p7 W# m
  2967. .ORG $FE40
    ( M: N: C. e1 G3 o2 P4 X3 a. Y/ ]
  2968. PHA
    + ?/ i2 Q9 i% b+ |
  2969. STY $07F1
    / E9 {; t& r* p6 R* K
  2970. LDA #$8D
    7 j- a. t* p; k8 O: ~1 Q5 L+ a% _
  2971. STA $07F3
    9 b) y6 [6 P$ L1 x7 G/ e7 P
  2972. TYA
    ! o; \7 w1 h% T* t
  2973. CLC( q( g# }& s. G2 |/ o# E4 P
  2974. ADC #LOW(Sound_Bar)
    1 A; d5 k$ r/ \3 e; g, s8 h) [$ `
  2975. STA $07F4, k. R: l5 ^' n' p! j- v
  2976. LDA #HIGH(Sound_Bar), f) _& m" w" a( c+ L
  2977. STA $07F5
    % U; I. p) r* e* S4 ], m* I$ ~
  2978. LDA #$608 g  e" v  x3 i' r0 y9 @5 z
  2979. STA $07F6
    6 W  t5 i# c7 `9 m* |2 h+ c, u9 C4 k
  2980. PLA% E, u9 a3 Q' U. t
  2981. RTS& o0 k' W' N- m9 A# E+ u8 u' H. [

  2982. 3 d4 ?+ k2 [! d
  2983. .ORG $FE60- H# [+ x6 ], ~: m! w: a. g* F, R
  2984. STA $07F15 B, u5 ?' W5 k6 a" n* u
  2985. CLC  P+ e; f$ H. O6 n
  2986. ADC #LOW(Sound_Bar)
    - r& R3 t8 u& \
  2987. STA $07F4
      D9 k. v! ?& r# k" m) n
  2988. LDA #$8D
    ' x( O+ Z8 p. L0 M1 E: B" n, n# E  R
  2989. STA $07F3
    8 L8 r% {0 T. a3 L8 W8 K
  2990. LDA #HIGH(Sound_Bar)
    9 ?! ]% |7 u* n( Z" z( e
  2991. STA $07F5
    ( b" s5 y+ b4 B. V  @. C
  2992. LDA #$60
    ) h, N8 t! P6 z/ [. w2 P
  2993. STA $07F63 m& t$ {0 x2 @1 o; W" d: O2 M
  2994. RTS
    2 [2 K  ^6 v& `5 ^! C- K% p$ o% `
  2995. % x4 n) B+ Y! h$ [8 {5 |
  2996. .ORG $FF40( n4 K) L+ m8 P$ J& W8 }# u" y
  2997. STA $40009 M) O& C( W* V; T9 x# Q0 k: S
  2998. STA Sound_Bar + $000 ?3 N0 c# }2 s5 X; m  {3 s9 }
  2999. RTS
    & ~. Z( q) {) f1 ~( ~9 E
  3000. 2 N) W% D/ y) Q& z2 D- J! L6 A9 Y9 |, O
  3001. .ORG $FF482 o6 N1 L, ^! O. u) g5 y  k9 X' v
  3002. STA $4004
    " Y( Q$ r+ H2 c$ E$ C/ U
  3003. STA Sound_Bar + $04
    ; h/ w$ w) @& l3 M
  3004. RTS4 @. v3 d$ K& w; m$ O  [
  3005. 1 c- Q; M) q9 ?2 y4 L7 E2 O( T
  3006. .ORG $FF50  N" F8 ~3 N3 R9 Z5 `9 L
  3007. STA $4008
    0 H- T3 b3 m8 t
  3008. STA Sound_Bar + $08" j- ^2 j/ c# a3 f
  3009. RTS0 S- i/ o7 I6 Z4 n+ r# @3 o3 n; K4 _

  3010. ( E# h9 l" q* s. Q+ B$ m+ n
  3011. .ORG $FF58
    % n5 q3 t: }) @9 s5 ~$ N  F
  3012. STA $400C0 l4 x5 v. c( B; \6 O
  3013. STA Sound_Bar + $0C
    6 E; e. g* x- E& F8 a" l
  3014. RTS9 r8 ?* D. f& ^$ n& j! r
  3015. # m, e, C# T) S, }! Y) p) q/ R
  3016. .ORG $FF60) @5 I  r6 h" e/ q) F0 I; ]/ u2 X
  3017. STX $4000
    5 M' ^: a6 z; G6 B/ Z
  3018. STX Sound_Bar + $007 P2 N7 U. P! _& a3 C8 j
  3019. RTS
    7 W" t" P" f6 y" M

  3020. * Q1 f% E; o( g" J# l+ G. ^8 e( o
  3021. .ORG $FF68) z' ^, f5 G+ X$ `0 o2 d
  3022. STX $4004
    ; j6 |2 X9 F% w/ r
  3023. STX Sound_Bar + $04& k* a# _! i8 q3 ~8 d1 {# Y
  3024. RTS
    $ d2 V( v& K: A$ }% X1 H

  3025. % H# j6 R1 ]$ p, C) V
  3026. .ORG $FF70
    8 ?0 A" c2 d% u' @2 e* _; h
  3027. STX $40086 i6 ?6 C3 h9 r: @: M2 f
  3028. STX Sound_Bar + $081 p5 D4 r" o+ B0 E* b( S$ n
  3029. RTS' c+ J  Y: z1 f' F* t+ y
  3030. 2 j/ @, ?3 s! C
  3031. .ORG $FF78
    , r4 v6 p$ X* a1 w& d. j. A
  3032. STX $400C
    # c* g: {* s1 z% }& O3 ^
  3033. STX Sound_Bar + $0C& s4 ^9 p* Y& L; I4 o
  3034. RTS  K6 h+ W9 F8 A1 a) f1 Q
  3035. " U' k4 n( u6 b* R' c
  3036. .ORG $FF80; s2 l8 n1 C0 v7 w/ G1 B: \- V: s! ^
  3037. STY $4000
    7 }- H) E' ]4 A7 y; I
  3038. STY Sound_Bar + $00$ B' a% w/ ?8 @- e# e/ T3 F6 b% _
  3039. RTS/ V: }1 K" r7 y) b
  3040. 4 _% h6 s! r$ Q5 T# ?
  3041. .ORG $FF88
    ) }- V% T. b* V7 ]- F% v  `
  3042. STY $4004
    2 p; |) Y4 i! v: t
  3043. STY Sound_Bar + $04- J! Z0 \1 f; ~4 p
  3044. RTS
    0 `" l! T- F6 y$ d; H

  3045. , q, R8 r3 x0 X! i: j
  3046. .ORG $FF90' t; s: m# @% _
  3047. STY $40085 U% ?7 o& \$ J7 v; i) }& w" {' [
  3048. STY Sound_Bar + $085 z+ ]7 o- N" K
  3049. RTS3 X, i! D% n0 ]9 X2 n
  3050. 2 ~  T+ Z( l" E7 y8 J7 a( x# q
  3051. .ORG $FF98
    & W. r# b3 s% J/ B, Q
  3052. STY $400C8 n3 g- p" o' i6 v7 s" C
  3053. STY Sound_Bar + $0C3 C6 J9 `& P0 }" g; A" ~
  3054. RTS
    2 N* N1 C" s6 B
  3055. 9 }0 p5 P& ^3 U8 F" T- W
  3056. .ORG $FFA0- ^* Q% E4 V0 h4 b
  3057. STA $4000,X
    6 u- m4 ?# S1 l5 F- N0 E
  3058. STA Sound_Bar + $00,X4 K$ p6 `9 z5 Q9 E* z
  3059. RTS6 g7 Y: ~: J2 {8 O' h* G  S

  3060. / q* M# o2 }7 }( L9 K8 k6 y
  3061. .ORG $FFA8
    1 t" ?. ?- W  Z, \* ?; Z
  3062. STA $4000,Y: C  J6 f8 V* _/ ]& a
  3063. STA Sound_Bar + $00,Y
      Y1 u( q' J2 i( ~' Q# O* w
  3064. RTS  T; b- g2 k' T3 `5 c  V' H4 J& d
  3065. 0 `( M9 M1 S& M* o
  3066. .ORG $FFB0% M: c' U$ d# e) A% U
  3067. STA $4004,X8 j$ z3 _5 r% q/ J
  3068. STA Sound_Bar + $04,X" f7 K, p* k1 j4 V( F5 j1 l
  3069. RTS5 n3 p% ^+ w& a" @
  3070. ) t+ _. {! E7 T! q
  3071. .ORG $FFB8
    1 }* F& L0 m* s+ R  x
  3072. STA $4004,Y
      }, r3 H- O* t( a' A5 b0 p8 [' a2 |" t
  3073. STA Sound_Bar + $04,Y
    1 x  z- D' l! B
  3074. RTS2 e0 \) @" p' {6 p' d) @+ ~& f

  3075. 5 b0 z: @& e  Z9 }
  3076. .ORG $FFC0
    # n1 ]( r9 R# q0 }/ \9 c0 m1 x
  3077. STA $4008,X9 U" {; |8 C% h: D( {% k5 g' Q
  3078. STA Sound_Bar + $08,X
    # r' ?7 l* h* m# [: ~$ p3 N. S
  3079. RTS
    8 f; l  s2 [9 N" a* }4 g
  3080. 4 X; t/ |) e0 h* s. G3 f
  3081. .ORG $FFC8( v; N! a8 `0 h1 z" T! K
  3082. STA $4008,Y
    ' }; V' o' A5 m+ D5 e) ?0 X
  3083. STA Sound_Bar + $08,Y
    # R/ |5 ^( a5 p# J( g
  3084. RTS9 `  K% r& W! E& l7 O& X/ m
  3085. 3 R2 ]8 c' i; h
  3086. .ORG $FFD0: G0 n3 A6 a, t8 e6 u8 F
  3087. STA $400C,X, Z( s# j- N6 h6 y* C' M7 E1 T5 ?3 w
  3088. STA Sound_Bar + $0C,X0 p" ]: D" M+ M
  3089. RTS8 P$ ~# O3 W( @7 g; o

  3090. " I: G7 V; n6 u: u
  3091. .ORG $FFD8
    * r- }7 W; _$ P& P1 `$ D
  3092. STA $400C,Y
    8 O/ e9 G  \, F# Z8 G
  3093. STA Sound_Bar + $0C,Y
    7 T7 c/ M. u2 Z& \7 A3 N
  3094. RTS
    # {# R' D/ j& p5 T: ?( x
  3095. . b9 u; ?7 q- D7 w3 u
  3096. .ENDIF4 P, P( @, T( ]# u. B9 i# {; _7 N
复制代码

' j+ l) t2 s+ e" |  }( P2 j
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3230 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-14 20:38 , Processed in 1.112305 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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