EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 * A' ~4 c+ b+ Z8 S" M) r
. ?# |! s* G' l
[FC][音乐12 IN 1]
! U% Y& V. m/ ?5 q时间: 2023.07.23
$ x/ K% A5 P; H+ N作者: FlameCyclone5 v; c; Y+ d" K% m3 G
1 p) W; z. `! i# r& U
收录音乐内容:4 I& \& d) ?' U& w9 {) H
1.Raf世界/ P: r( I! {+ [9 N+ r7 d
2.最终任务
6 V7 ]8 Y( X$ \  B0 r# ~3 i/ n, X3.赤影战士
+ t9 ~5 {: R* }; e6 X4 e% l4.双截龙
' }. V. P' c  S5.双截龙2; ?2 B1 I% _4 Z: ?2 K/ |
6.双截龙3
  u1 a2 C, w5 U* R% T' Y* c7.洛克人
9 r% N' [3 L( Q9 f& R/ R8.洛克人20 E; |0 e+ e- @, ], _8 R- L5 Y
9.洛克人3+ I4 m* Q6 Z) z
10.洛克人4
' E  `9 [; q5 N5 Y& O11.洛克人5
9 P% y4 a% ~* v) y8 `! R* R12.洛克人6
3 t: _- A. v$ d9 k- _
4 H" I9 w( m/ A操作:% P' i9 t; Y: U
上键:         上一个专辑
* `6 ^! k3 M8 r0 e+ ~# |* r下键:         下一个专辑3 S: \9 j# k9 @% ~. Y( S
左键:         上一曲
( P" U, u6 F9 _& l6 ~, _右键:         下一曲
/ e  I9 J0 C$ e: j/ cB/A键:        前10曲/后10曲5 y' u1 y6 ]* a2 x
选择键:       下一页
1 p: O4 y$ P( v% p5 I, z* B2 K" P& k开始键:       停止/播放% w# e( M5 u# R  @" T

: J& M5 s  k- u) u$ Xhttp://flamecyclone.ysepan.com/
+ G% J7 _: \- ?' _. v& [+ F# C: L2 a2 \, F

( n, |- ]- c+ U
0 V. Q. Q  Z: H
/ b9 c/ v4 }6 J" D' [" |: d
  1. ;[FC音乐][播放器模板]
    4 G. }9 M" B* E( s2 F* x# y3 g
  2. ;FlameCyclone 202307107 w% H7 K7 o8 \9 b( o

  3. 2 ~! J1 a. s3 M! q- ?- E3 C- a1 T7 D
  4. ;文件头
    1 ], K. ~6 s3 W1 O0 B
  5. ;======================================================================
    6 u9 Q7 R/ ~' l, o: U% U3 }1 ~
  6. .INESPRG 16                                             ;16KB PRG 数量/ k3 `' d/ J9 t% F/ a2 W! ^
  7. .INESCHR 1                                               ;8KB CHR 数量5 l* G! L3 P2 Z- P9 p
  8. .INESMAP 4                                                   ;mapper 4
    ) h2 @0 P8 m- Q0 G; e6 V+ \
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    # K! k' y* x' T% ?* N! E( I
  10. ! B+ V$ [) F$ D: p3 e1 A+ w
  11. ;==================================================0 V1 `. }3 j" q: O1 W
  12. SOUND_BAR_SHOW_ENABLE       = 1/ I, Q- A2 n5 h: b
  13. ;==================================================: |/ r  e/ y( z  R$ c5 b7 Y
  14. BANK_DATA_MASK              = $1F) U! Y* U7 N+ {0 b8 \! T: W0 V
  15. CHR_RAM_ENABLE              = 0
    1 D) \* k/ [/ b4 A0 [) H2 x/ E
  16. IRQ_SCANLINE                = 1365 V( e4 @1 I2 t0 }0 v/ A
  17. ;==================================================
    0 g8 T- W' C. y. Q4 Q
  18. SOUND_DATA_BANK_00          = $00
    ) c7 t# A- X2 i( T' a
  19. SOUND_DATA_BANK_01          = $01
    $ c. S! F6 p, A9 K# q
  20. SOUND_DATA_BANK_02          = $02. z0 _1 s" n) U. x7 o
  21. SOUND_DATA_BANK_03          = $03
    * M5 I* v7 c* V: X/ B
  22. SOUND_DATA_BANK_04          = $04- e, t4 l1 W. `- P; c& V
  23. SOUND_DATA_BANK_05          = $05$ D' U+ r$ e5 Q: Z( J9 w# v2 E
  24. SOUND_DATA_BANK_06          = $06
    ! b; O. D$ x& _+ v$ Q3 |' |, R
  25. SOUND_DATA_BANK_07          = $07
    # c4 Y4 X8 @8 W. L/ u2 E
  26. SOUND_DATA_BANK_08          = $08
    ! d0 m( X% O$ i1 L, O% Y1 x
  27. SOUND_DATA_BANK_09          = $09
    7 g* J6 s# p8 i/ n* p! b8 N+ A0 E+ K
  28. SOUND_DATA_BANK_0A          = $0A" y* v$ U: m' I- Z  Z' T, l/ E
  29. SOUND_DATA_BANK_0B          = $0B
    ! W( g6 I7 Q4 S. f
  30. SOUND_DATA_BANK_0C          = $0C8 e: u! M' x! T4 T& c6 S7 {# A% G* k
  31. SOUND_DATA_BANK_0D          = $0D, x/ [. _1 H& H( g8 t! m+ x& Q1 a7 A
  32. SOUND_DATA_BANK_0E          = $0E
    $ G7 w4 S( q1 @+ g7 F
  33. SOUND_DATA_BANK_0F          = $0F4 p: l' B/ l+ C/ G# v* E

  34. 3 L# j. P* c# C! U% |" d# M6 r' G
  35. SOUND_DATA_BANK_10          = $10! q3 A+ w& P/ R, k6 B) t% N
  36. SOUND_DATA_BANK_11          = $119 Q3 v; f- @; _/ f' V$ E
  37. SOUND_DATA_BANK_12          = $12
    , J6 X$ d; k4 |- p' Y$ e
  38. SOUND_DATA_BANK_13          = $13
    * Y5 Q, A( ~" ^: U/ `# T; Z9 v6 R, S: g
  39. SOUND_DATA_BANK_14          = $14
    " h7 l6 j' l$ H4 X% T" r; x
  40. SOUND_DATA_BANK_15          = $155 o, I1 i6 T# c3 R
  41. SOUND_DATA_BANK_16          = $16
    % ?! k6 G! H5 U6 }! `: B5 g* _
  42. SOUND_DATA_BANK_17          = $17
    ; B3 m$ }" r& Z+ c6 _/ z
  43. SOUND_DATA_BANK_18          = $184 _: u, y6 S% @; o' \* f
  44. SOUND_DATA_BANK_19          = $19# G! h  j; L( n
  45. SOUND_DATA_BANK_1A          = $1A# b# }: U0 a/ M; s; b
  46. SOUND_DATA_BANK_1B          = $1B
    4 @8 a4 k3 a/ [2 X5 R% v
  47. SOUND_DATA_BANK_1C          = $1C
    4 h, O2 S( D8 R
  48. SOUND_DATA_BANK_1D          = $1D
    ) V! g* L3 e+ ~4 {

  49. ! M  g. o: W) T; O4 @) G9 r( Q
  50. SOUND_DATA_BANK_C000        = $1E( U* h2 R  O' O9 _; l, \
  51. SOUND_DATA_BANK_E000        = $1F" D2 e( Z1 k; D$ e5 ^1 @
  52. ;-------------------------------------------------, w4 o' G0 w4 y4 X. Z, i2 _* V
  53. CHR_DATA_BANK               = $20
    % @% O3 @" n1 Y: j/ v
  54. CHR_DATA_ADDR               = $A000& P8 V4 i9 q, x7 U* Y% ^( K
  55. ;-------------------------------------------------3 M1 ~% y5 r& Q1 `7 ?( G( w
  56. PROGRAM_BANK                = $00, X4 _+ t( v9 n- s; p( {1 Y
  57. PROGRAM_ADDR                = $8000
    # Q; S& b+ Z, D. h
  58. ;-------------------------------------------------. _. C5 e+ V% J/ E' e3 O7 V; v/ V6 p
  59. RESET_BANK                  = $1F" E$ Q! k2 i9 D: Q. G
  60. RESET_ADDR                  = $FD00
    & C! N9 O: q# _: a; H2 [4 a/ l

  61. * U8 f; I! F2 m* }
  62. ;==================================================
      `; p' k% H9 s3 x, V: y" O) p
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数# N: u1 l' K* V$ O5 `" t2 K
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引9 v9 B, B9 W3 e
  65. PAGE_SIZE           = 5                     ;每页节目数" p/ y5 n2 \9 W4 s7 u
  66. 7 B. _3 L5 f! M: [5 B8 l* P! i
  67. ;==================================================+ r  @4 k  B" X0 D; x, E/ B
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    ( L) m' P+ n* D% R+ |+ t& Y8 ?# P& q
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数) ?. t0 y' H/ T; ^
  70. .ELSE+ B8 g- k2 O2 q
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    / e1 U' L9 T6 v. j2 Y# E0 L# r
  72. .ENDIF
    1 c3 \* ?) ~1 Z) G& X# l# w( c& `4 v

  73. ! l0 i4 C: S3 Y- G# S. l0 H- S
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引6 W0 j* X) O9 d; v% E

  75. * ~0 i; n5 F0 [5 T
  76. ;==================================================) c! M2 S1 F& F# A* {1 G
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    7 s% {4 U0 O& V; W& P
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    ) P$ v  o! f8 }! u& [. E$ @
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    ' o/ c' P' }% P" N
  80. ;==================================================# H2 S+ n1 x0 [
  81. Caption_Text_Pos    = $204D ;标题文本位置3 G% M: t) L) h2 a" w, D- ]& A
  82. Author_Text_Pos     = $2324 ;作者文本位置
    ! A# B" Z" O& p: d( |/ @. ]; k6 n) b
  83. Date_Text_Pos       = $236B ;日期文本位置2 n7 {9 _& B- S8 I
  84. ;------------------------------
    : G9 g- n* Q$ `( J" C7 A
  85. ;------------------------------) L7 z' k9 G$ S; X( Y+ c
  86. .IF SOUND_BAR_SHOW_ENABLE
    & @: _  ~& H% p' |- `5 A. Q5 C

  87. , v! u' n. _  m9 q+ W1 k
  88. Play_Index_Pos      = $2273 ;当前曲目位置8 U' E  V. Q, j6 O% n0 ?: B8 L
  89. Play_Time_Pos       = $22B3 ;播放时间位置; j$ W& L% U1 X. m0 c
  90. Play_State_Pos      = $22F3 ;播放状态位置
    9 W* E; J5 s) b" |
  91. & p1 u* T6 a. ^; E0 R4 _
  92. .ELSE
    8 ^, c8 u1 q/ [$ F% {

  93. ) _6 v" Z  H/ \9 Y, R" s
  94. Play_Index_Pos      = $226C ;当前曲目位置
    6 R9 z% G$ l, h9 @% A
  95. Play_Time_Pos       = $22AC ;播放时间位置
    2 |! v: U7 c3 v( J8 E: R
  96. Play_State_Pos      = $22EC ;播放状态位置7 r% o' b: a4 T4 A& T4 c

  97. , r" O. K, x+ t; o. a5 f
  98. .ENDIF
    ; Y. Z) F- p$ W0 y, ]) E$ u
  99. ;------------------------------7 |0 x8 T  C) c) j  O, W9 v
  100. Track_Name_Pos      = $222B ;曲目文本位置* p* `- m" o8 _
  101. ;Track_Name_Pos      = $00 ;曲目文本位置) E' k: `6 s$ G+ j
  102. Sound_Track_Pos     = $2265 ;声道文本位置/ l# R# M) I; Z& Y6 p
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    $ h& H! `7 _$ R$ J* D1 \# l; [
  104. ;==================================================& P" J% E) K( ^3 n" W$ `' U$ p
  105. Scroll_X = $008 `+ l5 {4 N. X' H
  106. Scroll_Y = $00+ A7 C& t+ W3 k: Z: [
  107. ;==================================================
    - ], a: P; F6 r- a
  108. Sound_Ram_Addr_1       = $0100- d1 M* w0 T1 I; j0 k1 _+ ~! ^' ^
  109. Sound_Ram_Addr_1_Size  = $80
    - \4 V! m5 x- A! s' j* a" \
  110. Sound_Ram_Addr_2       = $0090
    7 J: _8 k( c- a0 u, v
  111. Sound_Ram_Addr_2_Size  = $70
    2 t( q6 W! P* C
  112. Sound_Ram_Addr_3       = $0700! {/ L  F! E4 U" l6 Y
  113. Sound_Ram_Addr_3_Size  = $00! f& n+ [* a( y  G
  114. Sound_Ram_Addr_4       = $04002 b/ P6 O& w3 [8 O& ]
  115. Sound_Ram_Addr_4_Size  = $00
    ) F. ^0 M' Z  h/ i2 X
  116. Sound_Ram_Addr_5       = $0500/ I% k$ \  u7 x) Q2 s. ], D
  117. Sound_Ram_Addr_5_Size  = $400 Z, |) b" G; ]% {" u% u6 {" }

  118. ; j2 K5 D1 n$ Y7 p; d2 M! k! D
  119. OAM_TEMP_ADDR   = $0300
    7 S! ~4 D+ g; |* D

  120. + z3 R, [+ ~* t! @# g
  121. ;==================================================  E, V! E( H9 r+ `4 _+ g
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器7 _6 ?- V2 X6 c* b
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    , V2 m1 v; S4 ^4 Q
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位* m9 m/ m, }2 X, T
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1* y2 \) P$ f% D) d5 L# B( R
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加17 n0 p7 a% U: W: }9 s3 G  R
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    ' A$ ]1 z$ Q! |" M: r% B2 l* ?' M2 |
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加% o/ k. d; W9 B4 Q
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
      I: m6 b. i+ d; A
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存0 t% }$ l( D; r& g- H' Y& ~' x
  131. APU_STATUS              =   $4015   ;声音通道切换
    + s1 }5 V/ r+ d5 T4 f0 Z9 k  |
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    4 [8 f" ]' v' J2 o) ^0 I: l; p8 x
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通8 L& O; ~# P# s
  134. ;==================================================
    1 v0 F" n$ K. L; d
  135. MMC3_BANK_CTRL          =   $8000
    ) p* r* y, V1 W2 z  e% }9 v
  136. MMC3_BANK_DATA          =   $8001
    4 x5 \/ J# N/ v
  137. MMC3_MIRRORING          =   $A0000 \+ U; V! P$ g4 |: ]& P
  138. MMC3_PRG_RAM_PROTECT    =   $A0013 B8 a* ~3 O: M
  139. MMC3_IRQ_LATCH          =   $C000  U) q) i! C1 A# i; d, D) w: R
  140. MMC3_IRQ_RELOAD         =   $C001
    8 O6 l: y% L5 m; \* ?/ O
  141. MMC3_IRQ_DISABLE        =   $E000
    * j2 L9 S1 w0 P5 b0 m# k  g
  142. MMC3_IRQ_ENABLE         =   $E0013 M. t: I2 ?/ Z  I( D* @
  143. 3 A) d- N6 D) b! ^( I7 z2 q
  144. ;==================================================
    2 \; R4 H/ B1 Y1 G! y" T
  145. PPU_Addr        = $0200: A4 s# b9 N( S) b, o
  146. Palette_Addr    = $02C0
    " U3 @/ w2 B- q' X
  147. Sound_Bar       = PPU_Addr+$E0
    % s( K/ `+ I. P' w$ t& S2 E5 }" y
  148. ;==================================================
    # d  _: z9 Q7 K
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    1 W9 j7 z! |* v$ Y$ y9 U- l
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11% x3 M$ f3 S* ?( x' ~
  151. PALETTE_UPDATE_MAX      = $2C
    # H! d" u9 X8 K2 V3 R7 B7 ?& H
  152. PALETTE_UPDATE_MIN      = $21
    3 H/ ^5 k" e  c1 N9 @% U0 z' B
  153. PALETTE_UPDATE_INTERVAL = 60
    6 ~! |; D1 k+ i+ n$ B3 f% Z
  154. ;==================================================
    ( w3 P; y5 A# a4 d6 J+ G* T  B6 z
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    / L8 @8 o" Y8 `0 z) c. M
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    9 D& A7 I" A1 U( D+ a' r$ M
  157. PPU_Addr_H          = PPU_Cur+$034 K2 N6 A! t& I  h. ^3 [
  158. PPU_Addr_L          = PPU_Addr_H+$04! s- d* z0 u- F4 ?5 V
  159. Screen_Ctrl         = PPU_Addr_L+$01
    7 f# \9 Y/ X+ y* e2 N7 k4 C
  160. Screen_State        = Screen_Ctrl+$01
    7 {7 l6 t$ `1 l# r1 a5 Y- Y# z
  161. ;==================================================
    . C5 a# U0 ~/ K# K# Q
  162. Use_Ram_Begin       = $501 B( \0 _$ ]7 z. w
  163. ;==================================================
    % _* F; b; S4 }
  164. JSR_Addr_Op         = Use_Ram_Begin
    2 r4 N1 B4 _/ ~
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    * s1 j0 L7 m" S/ K4 n) Z% X
  166. JSR_Addr_H          = JSR_Addr_L + $01
    4 x7 a( ?6 s' N- h5 Q0 m. ]
  167. JSR_Addr_Rts        = JSR_Addr_H + $01. y3 g3 l2 M- ~4 H+ W" T
  168. Data_L              = JSR_Addr_Rts + $01
      f) p- ~; `* G5 a  H: E
  169. Data_H              = Data_L + $01: g+ r+ d8 O, I6 C% O0 P% x
  170. Data_Cnt            = Data_H + $01& S- j2 M/ Y3 B+ a8 T" _; O; h8 C( n
  171. Data_Buf            = Data_Cnt + $01
    . F/ }5 b" n, C" B) ?
  172. Nmi_Time_Count      = Data_Buf + $01
    4 ]# H2 F2 V7 Z0 r+ `- e
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01: m9 q$ |5 v; H" Z6 {) x
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    ' S& \, ^; ^% ~' q  h) I, T* B. F

  175. 1 O2 z6 Q. p+ @
  176. ;调色板刷新标志
    3 Y0 E  k8 o0 N( O5 p" `, i: b
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01% v8 u' D! ~$ s$ L3 O# F2 H

  178. 7 S0 l$ X: o- @5 C% H8 L# n
  179. ;当前帧文本写入禁用标志
    4 _# h0 r/ E$ P/ K
  180. Text_Disable_Flag   = Palette_Update_Flag + $019 U$ W5 z/ E5 h/ a6 i2 V6 V& i
  181. % S, z# s+ {, I
  182. ;==================================================4 H" s2 s6 x: i: }
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动) C5 T+ A- o: q* W
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    + W4 X* \+ u# ?8 U! x
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    ; B3 A$ M. V2 R, M
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间( {+ G6 K+ {* V( |
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间4 V2 [& `2 [; L1 U
  188. ;==================================================, p$ g$ Y' Y3 H
  189. Key_Keep            = Text_Disable_Flag + 1
    6 g7 ~$ w9 z- }
  190. Key_Once            = Key_Keep + $01' I& S8 j/ y8 f& Z' S& A
  191. Key_Kemp            = Key_Once + $01
    ' h; w7 W. ?/ X1 i9 g
  192. Key_Temp            = Key_Kemp + $01. f4 V0 h" S; _
  193. Key_Getv            = Key_Temp + $01
    # r+ Z5 q7 c. I6 b1 d5 ~, Y
  194. ;==================================================1 M  i/ F/ f( r! Z2 n5 F
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集1 H$ J; g1 f- r8 n
  196. Music_Item_Last     = Music_Item_Cur + $01
    $ B% ]9 c" y, P, k. W: ]; Q$ y
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集6 j3 Z$ z+ |, z* f9 O
  198. Music_Cur           = Music_Total + $01  ;当前曲目7 J& {% `$ f7 s7 @$ ~. s9 _
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目6 r! P; g4 ?$ K# N' f
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    $ n& j5 M( _6 u! Z
  201. ;==================================================
    ( L7 m$ T# I) s/ J2 M
  202. HEX_Data            = Music_Stop_State + $01# A9 ?: u7 g/ ]! r0 x( I
  203. DEC_H               = HEX_Data + $01" T& j" C1 [2 B, A" i9 R0 ~
  204. DEC_T               = DEC_H + $01
    - {) J: L, d' U& @3 P5 E
  205. DEC_L               = DEC_T + $01
    4 B+ q( S* I# T! T9 z+ A
  206. ;==================================================$ z2 ^% [+ w, O# r& a2 D
  207. Time_S              = DEC_L + $01; K8 ^4 A: M* n3 |) F
  208. Time_M              = Time_S + $01
    0 T8 G8 |9 U( p$ D! t
  209. Time_H              = Time_M + $02
    ; q: N+ U0 }4 @% i( ~3 O, Q* l
  210. Time_Cnt            = Time_H + $03
    7 c/ j! m. {) s3 H% q% j" \

  211. 8 J  L. @9 S+ r' `) _9 f
  212. ;==================================================
    ; f# |5 k% C0 Q, @
  213. Music_Bank_8000     = Time_Cnt + 1
    - f5 [. ?( g$ W* P7 h% h
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    ) l( I6 E  H2 I. j- Q
  215. ;==================================================
    4 W: Z! Z/ ]# [: e' r$ P
  216. Scroll_H            = Music_Bank_A000 + 1
    . r$ E  j4 M" u& ]1 z7 m
  217. Scroll_V            = Scroll_H + 1: d& W) k& E! ?7 P" {- ^: A2 F
  218. IRQ_Process_Index   = Scroll_V + 1
    4 \; D! m" a; M; n
  219. ;--------------------------------------------------
    . ?/ ?2 \, C, O7 {  H& X
  220. Page_Cur            = IRQ_Process_Index + $015 o# Y. v0 K( v& ^
  221. Page_Cur_Index      = Page_Cur + $017 c0 v, Z" ?* Y  H5 R" [
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    . H6 i* P# V$ D3 T3 z
  223. Page_Last           = Page_Cur_Cnt + $01
    ! P1 T; ?; w' w9 r4 ]3 C" _# V3 \0 I$ b5 ?
  224. Page_Last_Index     = Page_Last + $01
    / E1 G: C# g( Z" D- K
  225. Page_Last_Cnt       = Page_Last_Index + $01
    - Y+ [( i! r+ i8 Q6 e5 m
  226. Use_Ram_End         = Page_Last_Cnt + $01; ~5 h8 x& z( y* o
  227. ;======================================================================1 N/ `7 g- R5 H7 q) w
  228. ;音乐数据块6 I" P) \( ?1 j
  229. * N' l+ t* Q. O0 e: ~
  230. .IF SOUND_BAR_SHOW_ENABLE' j( Q' q6 ]$ D
  231. + E6 s0 Y/ a/ B# z1 V& s
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
      a" u$ J+ w7 P
  233. .ORG $9000
    % ~1 e1 `6 `. S; U: h4 R+ \
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"! i3 b* }! ]5 f6 p0 W! I- P0 B9 {

  235. - |, ^' _7 k' i7 x- a. y* N
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    4 j9 d  o8 m% I6 D1 y
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ( Z4 p# W$ ~- X/ s
  238. , r' F& F: m. d; T. ^
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK- x  o, S9 a2 ^  V! s! b
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    ; l+ o5 T% ^8 _1 B# ]3 o6 [

  241. 9 B4 z4 Z2 i( r' @2 U! L
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK4 A, \" ~" t! q' S
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"! O5 K0 N3 q9 `0 o5 O

  244. 9 H6 z( ^! j1 Y% j5 t" b0 B
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    9 i- }) \5 |. b% R
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"5 ]9 }4 |: B6 Y5 J0 J2 C/ @
  247. : p2 K3 j2 r# Q  a! t  V9 f
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK7 i4 n  Q$ f1 d  U9 E# K
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    2 G+ l6 D7 V+ k' i! U

  250. 9 n# z/ o/ v3 L  O
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK7 D. X) b, }# P9 x2 {  H6 ~
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"9 n6 n, F* s; }& Z$ }

  253. 1 N5 z7 l) A% b7 K8 A9 E8 ?9 T& l, A
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    7 f  f8 A! n' {6 l$ f
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank". h7 e7 K+ ^% Z7 n( x- z

  256. % U& h% h3 T" v# |/ ]% s; B
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    5 m) @$ q. m) C/ G0 ^
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    6 B- n5 x% l0 @" `# t

  259. . v1 W: y' o: e" D9 p# g+ F
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    , k0 \9 ^$ o$ o
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"4 F; V5 u' m! K/ U& F
  262. * a7 ?4 D( {8 c+ P) t
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK9 f8 d+ X1 y& g* M" n# |! p
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"" t) R9 o1 _4 l/ n; L: j
  265. $ d5 j+ y1 M0 W2 F5 w
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
      v/ \' t$ Y' K7 b. b! J( m
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank") V1 L3 j# e$ n! V+ r- T/ y: j
  268.   e( b5 V5 o# [$ b# [& p
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    " x1 Z6 a9 J8 q0 n
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
      |! K' t% N# e' k$ q: P  j

  271. . I6 M' {; S, ?3 O& n
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    " p! ?: u$ E, ~, R/ b; \4 m, t
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"! G( Q. k9 j+ K) M$ s) ]

  274. 5 ~$ J# M9 C, g1 H$ n9 b
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    % |3 n* c; X! c; g
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    . ^9 q- T( B, }. L

  277. $ p2 `# m+ U/ V! G' v  Z( _
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK. _# n# @  @7 a5 i4 \( I8 H3 {
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    1 J) V. F' a1 o8 ]4 f

  280. " Y; I0 Y, L! a, Q$ C: L5 W9 |
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ' T" w" b: {) H" |! z
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"" }& a; K7 \9 q* }2 k4 j

  283. ' \' e4 x" ], R6 v1 ~. U/ U
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK/ W. `( T. b+ O1 a
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"- J; @4 C( N' P1 h7 w

  286. 4 V) X/ V6 \4 |2 w7 U/ Q
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
      ^9 k2 l% W$ g  ^1 |
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    2 {! B% T: a9 V* T4 m

  289. , V: Z: {- f; M7 Z  ]+ [
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    ' P. O, X! ]+ A6 |- O8 u2 L
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"* z/ t. y# O+ C2 J+ ^' f2 V
  292. 5 o  \1 _9 P% ^- u( O8 p
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
      \0 }; f$ F! d
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"' H, `4 w: `( f1 P0 E, a
  295. , `' |3 Q% _4 j0 o/ H! K' c3 y+ p
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    % x& @: g" e& W& p# C; o
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"( t! ~2 f1 ~$ V+ l3 I# M

  298. : c" z. |/ w3 |5 E& \4 T* F9 \
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK9 a4 G$ f, [0 Z+ M- W' B4 T
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    3 {$ C' n* m4 \+ o' \; `1 L
  301. ) T0 p7 j1 `9 b/ ~
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK9 u; i* H! \' m0 v
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank") t. p4 J) T& z, M7 ^& w

  304. 3 F  H' a: T7 g7 s7 R% G7 n7 ]
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    6 a+ l8 b6 o6 e$ [
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"1 q8 P; M0 R) L) u

  307. + m& I' P) _# N9 a2 O
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK5 {9 Q7 P0 F2 F* t7 L
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"  G: R; W) y3 j8 \' v
  310. $ q& `# e- F& l( _8 ]9 f( ?
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    - A; b1 x- P/ c4 y- y+ \" d
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
      Q  c8 r/ z! z& m9 ]
  313. & k3 D0 ^0 ^/ f+ W
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    " ]6 M% X$ J( K( l
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"  J5 k( n" v; w- L
  316. % E8 I$ r- G( e- Y
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    % h, T$ l' F5 u; j; N6 w+ n% _
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    & }$ P9 X; m  `! k$ d" A% l: u
  319. " t, d5 c2 f5 C) ~+ s4 S) Q
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ) a6 A5 m9 V: b& L# `  S5 ~
  321. .ORG $D400& T. }: ^* r5 t0 F2 G
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"! h6 z' W/ i# T

  323. ( f& j3 v% c4 U6 x3 J
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK) O! w* i( q/ t. _# D% i- |
  325. .ORG $D800/ C# c, L8 a: R, e) `( R/ ]
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    5 X6 A* V! @8 ?. b

  327. 9 z5 S- p+ N! M7 ?: H( B$ E

  328. 0 [; z( n; x; i9 C0 ?
  329. .ELSE- r+ H7 V  j& y

  330. ' B# t, \8 c! L( s* R  u6 d
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK' G: l- q. q  y7 x% ~8 N% T7 t
  332. .ORG $9000. }1 B& r/ h. S' Z
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"" j" X' U3 d" z$ T' e5 p; B& X

  334. 7 O: Q( T+ p& s, p; t  V
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    : i% \* y+ h# l6 A+ E
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ( w/ k/ J# v; M; n4 D
  337. 9 T1 w' A* S; M' g
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    " [) J* L5 ^! a
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"; I2 G& }' q! R8 B9 K

  340. & d! c& z" k( ]6 O1 h2 C- |
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    / T  Z; }6 L( b9 n! X$ Y
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    $ D$ f! n; g: Q3 i% @3 }( y

  343. . r5 k( A! x- @+ @0 ~% ^
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK3 E. W7 Q3 r5 U+ r: |  I
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    . D1 w  V2 n/ Q4 P
  346. , S# t6 p# a: m
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK  W; r) b3 U# e- U
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    + j! l' Q: s# E  A- Z- I
  349. + @, U' K5 ]9 c6 r5 P4 B2 h3 h
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    7 q) s/ c) C# l! H  P5 p
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"$ f# d3 E, \" j) p- E

  352. 8 j7 ^& F1 V! V; r9 J0 Q
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK& N/ l! y9 r: z& A7 b
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    " l: q; O* T  G) n/ I+ Q3 B8 o5 a

  355. + a7 n! d3 V1 ^, b% J; m
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    ; L' p* \1 b4 D$ {" q* ~0 ]
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"# }, b+ i7 D4 Z  e7 y& ?
  358. ( X( B$ ?* G5 M5 X5 `
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    0 J( e- P$ u5 ~; k5 t- ~& t+ F
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"5 M3 O: v* a0 \8 K+ q+ c2 s
  361. " O) }2 t, W6 F9 r7 c. j# e. u% Z: ~
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK# E* w3 v0 m5 I: X' _& [  ~$ z
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    9 B) t& p3 |0 ^  a6 Q9 w/ V) `
  364. # R& e" H2 U( m! b3 G; b# k+ }
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK3 n4 Z- S* e$ ^, D: c
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    2 A. I$ i7 I& R+ }! g0 B& n

  367. * i; V; o0 h- K- ~
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK" h& \: [0 m/ E5 N* ~  \( y
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    / V  ]' Z" Z# h* l* o$ f
  370. ! `0 @: l1 A$ `4 b
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    # L! d" F. D: u' v0 `" f( m
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    ) U# B& S2 W, o

  373. 3 }/ G+ |9 L. T+ d% h
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    7 J# _4 N& F9 D" |  P
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    4 b0 N% J3 H$ V

  376. 2 |0 g! l2 i' v& K9 a
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    " k: o7 s' V" Y* ]* N
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    / e7 D: a  m" S* C2 r
  379. / w8 M/ A+ U5 ?/ f$ A
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK0 B& x! ?0 }& w9 L, v4 {: S+ d0 {
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"/ G, x" U4 d8 h  A9 d. p5 ~

  382. . j0 @( g+ w* O
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK! |4 l5 X1 J! z) [7 J7 O
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"- _- W& n3 _: h
  385. * |! c9 U: N2 N8 _" I6 P/ F
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    & I! x0 x9 M& L9 \
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"# G+ q. z' S/ j" \$ H$ @( b

  388. 6 a7 E! p5 h3 h3 A/ n% P) |: z0 M8 S
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    4 s1 r( {  B; H
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    + l: Z5 w' I' ]' ?$ Y" e
  391. - r& h8 y5 g1 O/ c3 J
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK& m* H  W# P) Q! {9 K( c. ?4 r
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    * S5 v  ?6 R! A8 a  |6 M
  394. 8 G; k4 J0 m2 B; H/ {8 Z
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    ' [/ O2 P8 ]& ~5 r
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    1 |6 C& b: M. F& m
  397. " N7 Z' _) C9 F
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    - w  g4 L! D1 I! E7 h
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank": L& L% A5 V  f' A; s& C

  400. ' G! n4 y$ l. r' q4 y" ?) _
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    ( i" N1 j8 C  J- F4 H5 |2 f
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"( M4 d6 K% N" e2 [! N: B

  403. 2 A& b- S, e# x/ D6 v! R
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK8 `8 ^& }- K3 t- V6 _, `8 _. I8 [
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"8 V! R7 o. ?8 n

  406. " f! N0 L/ Y+ V8 M+ O0 b5 a
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK+ s! U+ G( W- t3 Z+ B3 U7 p
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"; @# H" i3 m$ F; R3 a  d

  409.   c  N0 X# }  L( G" g4 M& S( K
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    5 K! e1 R& C5 J. Y0 y  r; w1 j
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"" m) W: }! l; {7 `2 q2 n

  412. 3 c/ Q* c8 Q, E5 F& Q0 ^" ~
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    + z/ |; T5 c) S* P: e9 |4 v
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    1 i' Q  G+ \, P( c3 R7 E2 a6 O
  415. , \0 p1 `6 y1 U( t
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK* T' _0 l! e# ~
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"+ R8 W0 r; M# A7 b/ o* H0 B0 l

  418. 1 O% e& |) n; Z; J
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK9 A, x& z, s7 D. I: e. N9 d& h
  420. .ORG $D400! F6 K' v1 x* R7 D0 L
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    5 j, c! ~) x7 Q+ _- i" D
  422. : `  M' f. r* H- h. q0 F) ~# f
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK, S; e+ L# l! L8 v$ K6 t
  424. .ORG $D800
    3 ]$ z; I9 `- P$ R# A) ^4 z
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"" a$ o7 m7 E/ l# ]% \4 z
  426. ( `; `; C/ ?: U4 h
  427. .ENDIF
    * P9 g* P( W* H3 y4 C# ^
  428. : V1 E5 D  K# n; u6 l& |7 e
  429. ;CHR图形数据
    * @& I# I( z- a6 [
  430. ;======================================================================
    - p+ I6 Z( L& q# K- S
  431. .BANK CHR_DATA_BANK
    7 y; V: d9 S# c: k* g  H
  432. .INCBIN "chr_bank/chr_data.chr"
    % N7 G) D5 H6 R" j$ p# G- X

  433. . U0 p3 n9 ?, Z+ q; A8 a) w. R: u6 f
  434. ;======================================================================& g2 l1 y6 x" W# b# c! r$ R+ B
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    2 u3 l/ t" f* O0 s% R6 u+ d2 T
  436. .ORG PROGRAM_ADDR9 J1 \, X. S( O6 U$ \& U
  437. ( J  i% x' j( C4 F3 z/ }6 G
  438. ;==================================================9 a. s+ ^6 I- o
  439. NmiProcess' [. b+ U. ^- j# |. t3 a! A

  440. ( t. m" Q  A3 l$ N1 H9 i0 D" w; u
  441. ;关闭屏幕控制
    7 A6 q2 V# w! n1 D$ G/ m
  442. LDA #$00
    , R8 z* W. V+ f% k
  443. STA PPU_CTRL
    5 q# j* r7 g' |: l! w
  444. % G; d8 I+ I6 _+ }5 T
  445. ;没播放音乐就不需要触发IRQ: `. u; b9 G0 e! m, A
  446. LDA <Music_Stop_State3 m% N  R4 P8 u6 u
  447. BNE NmiNormal
    9 z7 F* W5 f9 X8 v0 d( o% Z' k  ?
  448. $ y1 l7 L+ d, V  a* a, c
  449. ;重置IRQ索引
    & K, r5 R( s. p$ r4 b
  450. LDA #$00
    / s3 C0 Q+ O; s! ]1 s# l' l3 W
  451. STA <IRQ_Process_Index
    ) A4 H$ b2 x# {' x$ a4 P
  452.   t' r" K5 c$ Q* J
  453. ;时间秒数为空则跳过" e  |) c, q, J6 X' G
  454. LDA <Time_H
    : G  ?2 I  q: e% i1 Q6 W
  455. ORA <Time_M
    9 J; A! t! `7 I8 ^$ i# n. F6 z" z4 b5 I
  456. ORA <Time_S  R2 h# V& t) r% h: o. ^- d$ [+ ~
  457. BEQ EnableFirstIrq
    5 `; x/ z. o+ |# t. I7 B

  458. . w: Y9 ~( K9 T0 p
  459. INC <Scroll_H
      A* q1 C# |8 @" G

  460. % f1 i3 h8 J+ z/ \2 x( Z3 o0 H
  461. EnableFirstIrq
    ' t  q( D, j* z3 _# R7 y
  462. ;80条扫描线后触发IRQ; R; B2 {5 j6 L8 V( [& g3 P
  463. LDA #IRQ_SCANLINE) w. P0 G: n3 V  x: _- o8 t
  464. STA MMC3_IRQ_LATCH
    . c" Q, G' u4 o- k1 w& k
  465. STA MMC3_IRQ_RELOAD+ Q4 ]( i% S' f3 _" z8 P
  466. STA MMC3_IRQ_ENABLE) Z1 a9 U! m' f$ C3 A/ E
  467. CLI
    - n- `  c% B+ L% T2 e; Y
  468. ) `' E' u1 K1 g1 S/ Z
  469. NmiNormal3 n- Y) c0 T% C' E' t9 B" O

  470. ( r2 k! w& ^6 J8 L
  471. ;处理PPU图像( x: X# d& _( v% l/ R  S! q$ K
  472. JSR PPU_Proc2 v: _" g. l8 p! {1 B6 |" j
  473. - d- U5 J; M8 ~5 w( c& Y' D
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化), P8 W0 J& q/ \$ [, D6 n( V/ z
  475. LDA PPU_STATUS7 y  y+ F: v/ Q3 v! _; J( m. s
  476. ;LDA #$00
      i9 z. P- s) [
  477. ;STA PPU_OAM_ADDR5 L! |) E+ e1 [) q/ b; B- e
  478. LDA #OAM_TEMP_ADDR / $0100
    / C* Z: a: P  H3 z' B
  479. STA OAM_DMA$ Q3 a1 z3 n- W* S
  480. 1 U1 r+ x6 L. @5 x+ K! [
  481. ;启用NMI中断
    - r% _$ I. r0 v/ g+ N0 E( y
  482. LDA Screen_Ctrl
    # u% E4 G/ G7 @) z  g  E+ R
  483. STA PPU_CTRL3 i; r/ A! Q' l) H3 Z8 j5 z

  484. 1 g: f5 i: e+ P* L/ R4 }7 e6 R% M
  485. LDA <Text_Disable_Flag+ U$ }# k7 y2 z! G; w
  486. AND #TEXT_DISABLE_RAM
    9 N- K! z% N9 X
  487. BNE Nmi_Sound_Play
    * w1 U0 _+ D' P8 }
  488. . ^# `* I7 k; O% N/ F
  489. ;处理手柄输入. O& |9 P" ?* }. p2 T! j
  490. JSR Key_Proc
    9 g/ {! j4 ]) S8 Y& f6 W4 T6 U4 h" t
  491. # i9 n9 y. ^4 J2 w) B; t
  492. ;切换音乐(手柄触发)5 y* P7 a$ |6 j) g2 `
  493. LDA <Time_Wait_Cnt
    * ?% T# _4 L- S
  494. BNE Nmi_Cursor_Arrow% ]1 _4 }. T( i5 f" [$ W& x2 E) `
  495. JSR Change_Select_Item5 f* B  `: B/ Z8 L+ S" X5 n

  496. 5 N4 H# N( i& }$ g+ E2 e4 l
  497. Nmi_Cursor_Arrow
    6 g8 p; s) F5 v. D  L* g: O/ j+ [
  498. $ t, y) \8 g: z6 [4 }
  499. ;处理光标箭头6 E+ L- |* U: K/ S4 U  G' s; F
  500. JSR Show_Arrow+ P! P) j, N9 h* |/ N  c* a" j& v: q2 o

  501. 9 w. K' n9 C: f5 Z" I5 C. X
  502. ;更新调色板2 r# j( K6 f: X: x$ ?7 n% t6 D3 k
  503. JSR Update_Palette_Data) q& i' q$ l! k0 X% l) p
  504. 8 t  ]9 V! W# j+ c( G) f
  505. ;显示时间(缓冲)& x0 g2 v" t/ s" z
  506. JSR Time_Show3 O$ r' }2 `* M
  507. ' Q# E# ~0 k# `  M+ i; o* P
  508. ;音乐显示(缓冲)4 P  F# o" x) z+ ~
  509. .IF SOUND_BAR_SHOW_ENABLE0 q# ^$ j' q6 N. i# x
  510. JSR Music_Vision6 O3 {) q) }2 }5 b6 B( [
  511. .ENDIF
    1 i( e5 F0 Y# B( d" f) P8 Z  B

  512. ! a, k1 |0 k1 Z+ L2 z7 {* t
  513. Nmi_Sound_Play
    ! G! I$ j: Y- z) D' i
  514. ;播放声音
    , z0 Q; Q+ W9 O, n$ \: `9 c
  515. LDA <Music_Stop_State
    ! L' w! t6 d: {. M, J0 u# p; R
  516. BNE Nmi_Time_Wait_Set( Q2 \& A% u9 J( h8 a9 T5 p$ I
  517. JSR Sound_Play_Proc
    ! E& \5 Z# L/ O3 J2 u) z

  518.   D& r8 o9 r) w, W* Y4 i2 R! ^
  519. ;播放计时
    7 O7 k, ?' _+ I$ Z5 ?$ D. L
  520. JSR Time_Count
    % y/ R6 ]* b+ Q) v
  521. 7 r1 K) `- u( ^8 T+ K
  522. Nmi_Time_Wait_Set; G, x1 ^) \$ C6 l
  523. LDA <Time_Wait_Cnt4 d5 @% y) u/ N$ c
  524. BEQ NmiNormalProcessEnd
    : h5 v/ m. f' v3 N* Z! R+ y% X
  525. DEC <Time_Wait_Cnt
    # y* ^  x& s* {& @0 i+ f1 |' s( G/ k
  526. NmiNormalProcessEnd
    : h+ C7 R* ?# f" I5 E1 b4 S9 i: ^* _

  527. ( j! i, q5 L# {* G& i; |
  528. INC <Nmi_Time_Count$ @8 ~5 R8 K: q2 |1 P/ a

  529. 2 s) w4 Y5 w3 ^/ ~" O
  530. RTS
    ; L! R3 O. |& R: S

  531. ( U& N# \; P' x: v7 `& _6 b
  532. ;==================================================  l& x2 {; s6 Y5 A
  533. Init_MMC36 a5 l9 b% t5 x3 s6 W" `
  534. ;==============================
    ' k6 Z  Q7 E2 s
  535. ;禁用IRQ) _! ~& W. k) `# K' t
  536. STA MMC3_IRQ_DISABLE
    1 D, ~$ U8 h; Z
  537. ; H0 {  _! l5 f% a! t9 }: Q
  538. ;水平镜像8 J" K) x9 c0 q. G9 f, \$ n& O
  539. LDA #$01
    6 }' a$ l5 ~& a
  540. STA MMC3_MIRRORING: G& ~% [& S: m/ G" g

  541. , y4 q0 Q. |7 \9 {/ b7 ?
  542. ;初始化图形bank1 P9 c' E/ u9 e$ z8 x
  543. JSR Init_MMC3_Chr_Bank' b7 x( C- k2 `' [) v2 Z
  544. 3 K1 A+ T3 W) h- u: i) E
  545. RTS$ ?- P: S' M, h0 V
  546. ;==================================================
    ! D' p. ^" {, z# \
  547. ProgramBegin;主程序$ ~# |1 O/ i0 c
  548. LDA #$00
      d9 f6 P; `7 r7 g( r' v
  549. STA PPU_CTRL
    . D' m. L' O0 t4 j, _* i
  550. LDA #$00; g3 \* z2 c  ]! ?3 [
  551. STA PPU_STATUS
    : s/ w8 {! Q3 @1 c; P2 y7 G7 O) V
  552. STA PPU_MASK
    : S& k6 G1 n" r
  553. STA JOY2_FRAME7 u9 h/ o. E: Z+ N; ~4 B) f2 B, N
  554. 4 D  U( q: y5 i2 R- @
  555. STA PPU_SCROLL3 }9 C8 n, |" J8 c
  556. STA PPU_SCROLL, Q8 T: T, c3 n4 f

  557. 7 g7 C* _$ D* F) F+ E
  558. ;==================================================
    1 j+ ~) x7 _( T3 j9 u; E+ ?% k
  559. LDX #$FF( ]- x! x2 @1 P
  560. TXS) Z3 I( e6 T6 N+ y2 l$ \# h

  561. * l. d  ^+ `/ a
  562. JSR Init_MMC3
    5 {6 u5 i2 U" Q

  563. 3 A% }4 D+ B# A/ Y# \' Q
  564. LDX #$02
    & d1 H, j: `& J! n
  565. Check1' i4 D3 x* z% J& C
  566. BIT PPU_STATUS: W- [7 V  J$ }1 Z/ `$ o3 N
  567. BPL Check1
    - ~0 T& [7 f7 {0 v" z. _# R; i
  568. Check2- s6 f7 S  N0 x7 _
  569. BIT PPU_STATUS
    % E* ?: H  O+ v
  570. BMI Check2
    ! ]5 r" c+ H, h! ]
  571. + @" f3 `4 d3 [0 U  K% s
  572. LDA #$0F6 f4 x) S% w) e: ~% S; }
  573. STA APU_STATUS
    7 N! i! G  O0 q6 t
  574. LDA #$C0, D( a; T( y4 w& G! X" C/ n7 e  c' l
  575. STA JOY2_FRAME: q6 Z" h& H( _! y

  576. ; L2 ~2 Z5 A; {
  577. LDA PPU_STATUS4 Q# J8 I9 q: O" ?$ K  b
  578. LDA #$10
    , J( x) r; P8 k' R/ L2 d( K% h
  579. TAX
    1 ^! o* H+ W0 U) e
  580. Check30 q1 W' }: s5 V+ c8 f, F# }1 H
  581. STA PPU_ADDRESS3 A1 F( B! w4 E, @1 G# s8 w
  582. STA PPU_ADDRESS; X. U- T2 d4 o2 i
  583. EOR #$00! a1 v7 v9 S2 |, \
  584. DEX
    2 Q: f6 Y7 H$ H. }+ d; f* N: Z
  585. BNE Check3
    8 n) k9 j4 O+ v$ V6 U. y
  586. ;==============================
    * e0 O& {$ W6 A5 G  Q& Q  c8 E) S
  587. ;调色板清空) e0 {% d" @* v& B: R4 Z& ?
  588. LDA PPU_STATUS
    6 E1 k, H6 e+ m- i) K% G. S
  589. LDA #$3F
    / R. w6 ?; B. f/ O
  590. STA PPU_ADDRESS
    7 k2 v3 v- `% O% A8 Z+ j
  591. LDA #$00
    5 e+ ~8 q5 A/ T4 s) {, N. k( g
  592. STA PPU_ADDRESS: }) y8 n. A, @3 T! g$ [' b
  593. LDA #$0F$ N- `3 ?6 O$ ^  ~3 ?/ L, Q/ ?
  594. Palette_Clear) N) N/ k1 ~8 f- \, G  S) q3 R, s
  595. STA PPU_DATA
    6 U3 E7 Y9 s/ |
  596. INX
    6 x% K$ h) H. @2 g- {
  597. CPX #$20- u+ W8 }# O8 R- q: g4 }$ X& U: u
  598. BCC Palette_Clear
    4 v" [1 O: p! M
  599. LDA #$00
    ; R% k% A' d) {+ N
  600. STA APU_STATUS
    + J0 ]/ U+ W7 L, D
  601. 9 W& w) R: T; s: G6 W0 x
  602. ;==============================( ]) H  T* e) p/ M/ K# @
  603. ;RAM初始化7 f6 {$ \2 P4 W6 r
  604. RAM_Clear_All9 f: k% i; R; ?; Y$ t
  605. LDY #$00
    " c/ A" ^& Z3 f1 a* _
  606. LDX #$08
    : |, ?% W6 |& G' Z# }7 B6 W9 c
  607. LDA #$00
    3 Z6 F3 M6 I9 \7 K7 K1 F1 B
  608. STA <$00, O0 h* |4 k: o) i0 Y- c
  609. STA <$01
    ' v8 K& L& h. X) D( U- @% M+ l! }
  610. RAM_Clear_All_Start
    / C0 u+ E) _. {# ~6 W  X- |$ k6 C1 b
  611. STA [$00],Y+ `# V0 J2 `9 X3 v4 w8 B) Y) Y3 E
  612. INY
    ; e/ s+ @% y$ n4 y
  613. BNE RAM_Clear_All_Start
    : r3 s1 i0 w" h  z
  614. INC <$01
    . O/ j2 X+ B: d5 e
  615. DEX
    $ m# p+ [. X( ?/ [+ e( n' h/ \# ~0 \
  616. BNE RAM_Clear_All_Start. I4 l( M' q+ @6 F4 t: W$ a; W' D2 X7 P
  617. ) c& ]$ y' Q0 c
  618. JSR VramClear
      v6 k( B1 [, z# E' w4 A: k
  619. JSR VramInit# Y' f. o5 z/ B9 |
  620. JSR OAM_Ram_Init
    : W" ~3 ^0 o- s3 [, r1 t
  621. JSR Init_Palette_Addr
    - d( p) h# m: Q" L. R

  622. / |0 [0 r& G6 I: E0 [5 z  G3 E- l
  623. LDA #$FF2 q. ]% E. R5 z. Y. K
  624. STA Use_Ram_End! s; a  C) ?+ |, j& m) J
  625. ;==============================7 Z; g+ _: ]: ~
  626. ;初始化背景调色板
    ; W1 O/ |% r7 U3 x0 H! {  w
  627. JSR Set_Palette_Color$ W2 Y3 G( i0 s3 N( v0 P+ i- ]9 a, N
  628. JSR Set_NameTable_Attributes
      x- \; S3 Y% q* z' x7 o  `; X7 a
  629. ) p4 X+ k1 U/ p7 W2 A0 K
  630. LDA #$00- y) a  J- p7 H" x
  631. STA PPU_OAM_ADDR
    + O6 c' F2 m5 _& T% s4 x% l
  632. LDA #OAM_TEMP_ADDR / $0100
    . E3 F! \$ L& T) l0 _6 t
  633. STA OAM_DMA
    3 U! |- a0 ?' P! w0 O% k
  634. ; E. u$ L7 g0 f- L2 O
  635. JSR Sound_Reset_Proc0 H6 k. v; K. A4 O7 n
  636. JSR Set_Sound_Total# A6 `2 A# |$ s% F

  637. / p& v- l; \6 z3 i5 ]% J9 b
  638. Init_Start_Music8 y2 O- v; L0 g9 t
  639. LDX #$00# E( x* B5 c' u# w4 O( u3 P
  640. Init_Start_Music_Write0 g3 |  ?6 y# Z
  641. LDA Sound_Start_Port,X
    ! q5 J% @. K/ t7 b& r
  642. STA <Music_Cur,X& B+ F7 x  u% U* U% y
  643. INX
    # m/ u" T" v7 S8 P
  644. CPX #ITEM_MAX_SIZE9 ]8 H' ^0 Z0 X5 T& |3 O
  645. BCC Init_Start_Music_Write- p- t5 n+ `. s: c( r" S1 c

  646. 1 p8 e/ u% @7 k3 u1 T, f: f
  647. JSR Show_Music_Text
    - D3 n$ Q2 ?% d8 e/ A( S- W  l& ^
  648. " e$ ~! X1 h- p  }) W! b- Z$ T. t' o
  649. .IF SOUND_BAR_SHOW_ENABLE
    ) \- V: p7 A1 y6 q  U4 y1 m/ a
  650. JSR Sound_Bar_Text_Set
    & {! z+ n, m$ x2 Z6 E9 |1 m7 y$ p
  651. .ENDIF
    : p( }6 _( Q6 H; n
  652. 9 R$ u5 D6 l- V. }  Z2 v1 E
  653. .IF Track_Name_Pos
    9 Q" Q9 n5 ^- `( B
  654. JSR Show_Track_Info2 w2 R+ ^+ ^/ P5 X' v) N4 W) V1 x9 B+ w
  655. .ENDIF. a5 e' M  k* h+ ?- s

  656. ; X2 O& m! B: A: O
  657. JSR PPU_Proc
    ) L1 H" k; B" j  b( m5 L  X

  658. 1 u5 @* K2 Y1 \& X
  659. ;==================================================
    $ L9 L, {# O/ O" W0 C6 F
  660. ;音乐bank初始化
    , d- r: R  J, a+ b: U
  661. JSR Init_Sound_Bank% K! h9 L. V& P$ H4 W" z
  662. 2 G$ ^4 b5 T" |4 ]+ l9 ?& {
  663. JSR Music_Show. o; |9 Y7 I, A/ Z) n
  664. JSR Time_Show5 [% r6 S# x6 s. k, j
  665. JSR Music_State_Show
    7 n  e3 a- z9 t: b
  666. JSR Time_Delay
    ! C& B' `6 ^: [2 k2 I1 @3 N7 U5 l

  667. # i# B5 H) B( i1 W$ [
  668. LDA #$01
    # u4 W% R$ O; h0 m* s
  669. STA <Music_Stop_State% R8 A3 B- F7 Z' A

  670. 6 f: F: ^. @7 f/ E" `* V6 u0 d# G
  671. LDA #$886 x6 w6 i0 L( r$ M
  672. STA Screen_Ctrl
    4 c2 f% D5 o8 n( |
  673. STA PPU_CTRL
    4 U- @" O0 T1 a. W

  674. + Z" v  F4 e+ d4 b* X
  675. JSR Show_Page_Text4 M2 r* D1 [% j+ z' w& u

  676. 7 P" y+ L& n# B7 j: O) V/ t" y
  677. LDA #$10
    ( C. z* `* L+ [; T5 u) a
  678. STA <Time_Wait_Cnt# L5 _. o, X) z, \

  679. % L( w5 `! y' J. j9 M7 s5 H
  680. Wait_Time_Over
    ' U+ P4 q$ M. h& _* t8 u
  681. LDA <Time_Wait_Cnt8 V9 L. r" X9 O, E/ s& K; O* U1 G* H, O1 U
  682. BNE Wait_Time_Over
    , Z. k: o& ?9 Q/ {
  683. " @7 Z: i7 t' G7 J
  684. JSR Show_Arrow
    . Q  j) v; T) B: m( k1 k6 z
  685. LDA #OAM_TEMP_ADDR / $0100
    ' F8 z$ e& n2 l& k  t9 Y
  686. STA OAM_DMA( Y, z0 s% |& P& g! B. K

  687. ( c4 I7 h( D! E4 f8 W$ W4 v
  688. LDA #$1E" I& B. m! N& u& C/ f9 d! f/ i7 ]
  689. STA Screen_State6 C* u6 v+ l* }$ R
  690. . x# W- R& X) K2 F" s/ ]- G
  691. LDX <Music_Item_Cur
    6 }0 G$ \4 B7 B% x! X' w
  692. LDA <Music_Cur,X) v$ k9 k4 r: D, E1 b, n0 ^
  693. JSR Sound_Init_Proc
    5 b+ z4 |5 f9 W: p9 ?" ^/ \5 _

  694. $ F+ ?3 k* H! P& X% E
  695. CLI
    * y, J2 ?0 D5 E& P8 t
  696. JMP MainLoop
    6 S& v9 P  O$ s  m2 I. m, [
  697. . F, N6 W% w: _- @
  698. ;==============================
    + a, f, ]! O# g& {
  699. Time_Delay;延时等待5 p* l! M0 f& J. N3 ^
  700. LDA PPU_STATUS. h: T2 W- U/ F" `1 I2 N: q
  701. BPL Time_Delay
    # F+ m6 P: P: k" D, a$ q- ]/ l
  702. RTS  p' R8 I; ~4 k; g1 a# d$ B

  703. % S$ G6 E* Y* s: T- y
  704. ;==============================! B! }& o2 t* Z. G
  705. OAM_Ram_Init;初始化精灵内存5 l/ X* t- r4 Q% R0 u
  706. LDX #$00$ A; ^0 m6 P. u, s. J$ H0 O3 w+ R
  707. OAM_Ram_Init_Write
    2 n# E2 ~: [. D! D
  708. LDA #$F8- s8 i4 i+ u4 [4 l& H( h" B0 x- h) j
  709. STA OAM_TEMP_ADDR,X8 @8 z1 I) g3 H+ z. h1 i3 }: b
  710. INX) {  J+ F$ J6 f: V( W
  711. LDA #$F8) z) O. n+ |3 u: E6 m1 y% P
  712. STA OAM_TEMP_ADDR,X
    3 @) z) x% y  \/ s6 l3 Z: y
  713. INX
    1 c4 Q. M* {* ~3 ^4 x
  714. LDA #$00+ l  z% e2 ^5 J. I8 d( p9 d5 E
  715. STA OAM_TEMP_ADDR,X
    3 h" l1 v1 F4 U( t5 V0 }" R
  716. INX+ a; l+ i6 r" O( l, f, C
  717. LDA #$F85 b; O$ L- M6 F# S+ S6 X7 q3 g
  718. STA OAM_TEMP_ADDR,X
    * \& E. E5 L+ x/ \1 r# P
  719. INX% E5 @+ T2 t2 i: G3 {4 L* n; v6 }  O
  720. BNE OAM_Ram_Init_Write
    0 K; c5 \' i' R6 S
  721. RTS
    : b) {4 R% X# E/ L
  722. : F  i: q$ X) ]& c6 {0 E- p
  723. ;==============================
    " @" r6 B  w- B/ R2 @! G6 G+ W" `
  724. VramClear;初始化图形内存$ p$ ^! D$ ~  q  U  {
  725. LDA #$20# ^  E' {+ q$ P9 |7 H
  726. STA PPU_ADDRESS
    # {  C+ \& R6 J9 _7 v- I5 C
  727. LDA #$004 S) V3 C3 m, G4 Q: E) Z& q
  728. STA PPU_ADDRESS
    7 }9 J9 }) D# v8 x' D3 S+ w
  729. LDA #$00( O& ^5 N1 p7 K+ O
  730. LDY #$007 A; p5 ?3 R6 U
  731. LDX #$103 Y5 @/ f# o: g
  732. VramClearWrite1 }0 R% X. p- [* B8 ^' x" E2 {
  733. STA PPU_DATA
    6 T4 Y; Q1 L4 |3 V6 R" b* v. K* f' n
  734. INY
    7 ?' E+ j  F, I4 x
  735. BNE VramClearWrite
    ! @" l0 w  m8 @' X) b+ K+ |. x
  736. DEX
    $ o1 e# u2 [. E2 p
  737. BNE VramClearWrite
    : n& G1 C3 \; ^6 `: `
  738. RTS' T* m: K5 V. z. |3 Z5 G2 f
  739. " }8 T' ?: n# i
  740. ;==================================================& O( [8 |' L( L3 c. ~
  741. ;设置MMC3图像bank
    , y8 L/ h% c! [% x
  742. Init_MMC3_Chr_Bank3 |/ k% i+ ^8 z8 Z
  743. LDX #$05* I- g: N4 [4 w
  744. Init_MMC3_Chr_Bank_Write3 x: E# g3 r2 p. O) w
  745. STX MMC3_BANK_CTRL! @* `+ A9 Z( r0 w( E+ P1 r! ~
  746. LDA MMC3_Chr_Bank_Data,X
    8 m. j/ N# r" h6 h$ r
  747. STA MMC3_BANK_DATA* l* n# H* [! q# |% [  v
  748. DEX
    9 k% i4 ~7 {4 j& o( w0 i
  749. BPL Init_MMC3_Chr_Bank_Write
    ! f0 l% d4 }1 U2 V/ O" _
  750. RTS( m; v  j$ M4 |& R+ c; ]& f
  751. ;--------------------------------------------------
    ; V' g8 H8 ^" T( g* b
  752. MMC3_Chr_Bank_Data
    & W8 J, ^: y& x9 b" a: F
  753. .DB $00,$02,$04,$05,$06,$07: q4 T/ O$ e6 U/ R2 o  a: q1 f7 w

  754. , T6 `$ ]& ?/ G2 s3 j" M% S
  755. ;==============================
    1 m4 k0 j* j# |$ q* p! `
  756. VramInit;初始化图形内存/ W+ f* s- p  f: k
  757. .IF CHR_RAM_ENABLE
    " n& e" r- v: T- v: \8 J
  758. LDA #CHR_DATA_BANK2 [, c. x% [: I' K) @5 P0 w
  759. JSR Switch_Bank_A000" A% `8 a! R; d9 p
  760. LDA #LOW(CHR_DATA_ADDR)
    " D) `; N, a' W  M+ D; {/ j7 J5 w
  761. STA <Data_L
    / f4 x7 }# i! z4 o8 z+ G3 p) W' s- C
  762. LDA #HIGH(CHR_DATA_ADDR)
      p( _$ l$ Z) ^% Y, Y
  763. STA <Data_H
    : S# Q1 F8 d5 m  m, T
  764. LDY #$00
    0 A/ n3 K; I; e. ?
  765. LDX #$20
    5 x: @7 H) R* M: ~# p' j/ k
  766. LDA #$00
      M2 t) @9 T; T0 O
  767. STA PPU_ADDRESS! j/ x; j( f) P+ Y6 ]1 M6 O
  768. STA PPU_ADDRESS
    ; \$ D/ G6 v- L$ q* @
  769. VramInitWrite8 p8 Z6 ]4 }- E/ j5 r
  770. LDA [Data_L],Y) e" ^7 O1 B# g& X  W8 B
  771. STA PPU_DATA+ k3 b) S" `) e. O
  772. INY
    - z, H7 X3 p  t) A
  773. BNE VramInitWrite7 Z: N+ a- C! X
  774. INC <Data_H. v  k% m) D7 f% O9 N% K) v8 F3 V
  775. DEX
    % t# e- g" r0 k6 r" g* L4 j8 N
  776. BNE VramInitWrite1 F; u: E, ?/ a+ Y
  777. .ENDIF
    ' u+ X# j7 \, M# F! _" ]" z* D
  778. RTS2 p7 Y7 C8 c5 {/ S! Q- |1 V0 K

  779. 2 E. Y! I  D8 @
  780. ;==============================
    9 D7 g' k) [6 k5 v" e! E9 p/ {
  781. ;音乐切换
    2 W5 Z0 K2 c$ q! {
  782. Music_Play_Change# t; f* G  I" [% I
  783. LDA <Key_Once
    & F9 n1 r- e# D. Z( ~7 Z" K
  784. AND #$FF
    % [* u9 m& O' l$ x1 C7 g" R' e
  785. BEQ Music_Play_Change_Check
    6 p2 S/ u: w9 K

  786. 6 s: }% t. H, @( V  e/ X" f
  787. ;禁用音乐条刷新
    # l- p7 h9 e# ~) ?" S4 @7 I9 l) l1 S) O
  788. LDA <Text_Disable_Flag' N1 `  x5 S; U; ~( N3 i
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME4 A/ h1 x' U' U) ^5 ~0 h4 I
  790. STA <Text_Disable_Flag
    8 y+ f* {8 t& B( \

  791. & ^4 }( J9 f  [* M
  792. Music_Play_Change_Check
    # A: C+ g0 ]. Q+ F- D) ^' k2 Q5 _
  793. Music_arrow( _7 G7 z1 f1 `3 Q
  794. LDA <Key_Once5 l; _4 n2 c$ o% H) \. x
  795. AND #$0F' k; z2 `4 p4 n: k7 W& A5 j
  796. BEQ Music_Play_Change_End
    9 a1 B6 h1 ^% Z" C8 Y: d
  797. JSR Music_Track_Change7 z7 ~3 a/ \7 h" I# J
  798. JSR Sound_Reset_Proc% I/ ~/ _, V% F2 [% r
  799. JSR Music_Show
    & A4 p; \4 t6 z- j7 N
  800. Music_Play_Change_End
    ! k1 v; @2 [5 H7 D$ ~
  801. RTS
    + h( }" r/ E8 G: I- x7 r; ^

  802. % t2 C9 H0 ^7 C/ r" u7 }
  803. ;==============================
    ' f4 n2 s6 L$ J0 R7 I: g; q( J
  804. ;音乐曲目切换" f2 L" p+ f3 M' s1 ]0 p
  805. Music_Track_Change
    9 g. }) [' v' ?& E& n# s
  806. LDX <Music_Item_Cur7 V3 |: S: Z) s3 v
  807. LDA <Music_Cur,X
    $ s# c: M! B3 F# W  |
  808. STA <Music_Last2 w( T8 F7 ^4 [" {  `: k1 g
  809. Music_Decrease
    - ?  g3 ?, i9 J
  810. LDA <Key_Once
      t. ^+ O4 d/ @- O9 h- G
  811. AND #$42
    ; Q0 a6 W4 H) M" F
  812. BEQ Music_Increase
    ; W- h1 F6 u; J: Q( b3 F: Q) j. |8 H
  813. LDA <Music_Cur,X
    3 W, f8 t  T# V9 J0 `4 w3 G  T& F
  814. BEQ Music_Increase
    ) t* D# G6 d) I0 k- Q3 [( [
  815. DEC <Music_Cur,X
    - V. L5 R1 j8 x) L8 N/ C' L
  816. Music_Increase
    " _1 _6 ?2 ~0 A# l& h+ Z3 I! D
  817. LDA <Key_Once
    " t# {( L$ F; t' M5 ]. u4 D4 b
  818. AND #$81
    3 _" d3 U, o  ?4 L
  819. BEQ Music_Decrease_10
    . V$ P' L& A. b% ~, M4 \% O
  820. JSR Set_Sound_Total' B& C3 w! v6 ]5 N5 h8 E$ f/ ~
  821. LDA <Music_Cur,X0 y' d! ~. b: j; t" e9 e. B( C
  822. CMP Music_Total
    0 A2 s" d( u5 J, k
  823. BCS * + 4+ Y) r- B$ G( o+ B
  824. INC <Music_Cur,X1 l( O7 I$ ~/ m% ]- y1 A0 m+ D
  825. Music_Decrease_104 N, b" S- n3 K: E% Q
  826. LDA <Key_Once/ G7 ?% P+ k* @0 W0 r
  827. CMP #$045 t/ m" |0 `7 k
  828. BNE Music_Increase_103 n! U6 }3 R# w( J9 i4 ^
  829. LDA <Music_Cur,X
    2 l% p, `/ ^7 C( x" Q3 p
  830. CMP #10% [7 z' ?" c/ @
  831. BCC Music_Start_Song_Min4 K; j- F* x% v# t7 c7 i$ d! ]
  832. LDA <Music_Cur,X
    ' M- I0 J5 Q$ ?( f0 T  Q( O
  833. SEC+ y- l0 n2 x4 ^7 ?/ Y
  834. SBC #10
    , `4 s' H3 I) o  Z& N
  835. STA <Music_Cur,X
    # A6 u/ K  j# w7 ^
  836. LDA #$00/ N4 Y/ i0 D1 \% w: b& W8 g! r
  837. BEQ Music_Increase_10
      ?4 Y/ l4 t5 X
  838. Music_Start_Song_Min# |6 m: m! C+ P( O( b
  839. LDA #$00
    6 s( C* H8 q7 A1 N
  840. STA <Music_Cur,X2 W6 _. ~, J4 a1 R0 j6 A
  841. Music_Increase_10
    ( W8 |7 p; v' K' ~2 d3 K
  842. LDA <Key_Once
    & X, a( O+ v6 V. h
  843. CMP #$08
    2 B" W- O$ C0 M  {, b- E6 f1 k2 }! h
  844. BNE Music_Track_Change_End
    + P0 t  ]5 {& [" O- W: r2 j
  845. LDA <Music_Cur,X# f/ G% z$ F, E
  846. CLC
      f$ ~& \# N3 O1 l
  847. ADC #10
    # S- A) ~8 q( \* M3 ^1 N3 i. b
  848. CMP Music_Total
    ' T- ~) ~0 o. W+ e4 }2 ?, d
  849. BCS Music_Start_Song_Max% U# X- r1 O, @' m1 _, o2 b3 k
  850. STA <Music_Cur,X
    ) A1 P  o/ L. D9 z3 a2 D9 b
  851. LDA #00/ d! E* \4 V( c6 v
  852. BEQ Music_Track_Change_End2 J, F. `% j- S7 M! K
  853. Music_Start_Song_Max; P& b) Q" n1 W1 p; P  v
  854. LDA Music_Total
    4 }  U( v/ W5 r4 v* e9 X
  855. STA <Music_Cur,X
    6 q9 V2 ~0 {* v+ \
  856. Music_Track_Change_End
    # u, o: k/ b, o. X0 a. W
  857. RTS0 h7 V7 [- j# u, k( M: z# E
  858. & ?8 M* |0 c% U: A
  859. ;==============================
    ! Y; V: M5 n6 N( M
  860. ;按键处理
    3 V, y$ `( U# P, q! c3 c" u
  861. Key_Proc  s  ~2 p6 l7 O, j' V6 K
  862. JSR Key_Scan
    % X: h( Y5 ^7 \& C1 A5 H1 y
  863. LDA <Key_Keep
    , K" [$ g: m! r; p4 F  C7 B
  864. STA <Key_Temp
    9 G% x4 o% U) \" e8 [
  865. JSR Key_Scan
    9 {3 u7 K! Z! D$ x
  866. LDA <Key_Keep
    7 A" q9 D3 R4 R2 }% G" s5 Y
  867. CMP <Key_Temp2 Y8 {3 D* S) A; h/ s. U, A
  868. BEQ Key_Get_Once6 _  N0 f' n- m9 f# z9 W# V9 e9 @
  869. LDA <Key_Kemp
    ! _3 R  I# g0 B9 o$ z
  870. STA <Key_Keep
    $ g) A/ {% I! I% ^. f
  871. Key_Get_Once
    6 t) K2 D2 X, d2 r0 M
  872. TAY
    # S) t7 t2 V% @$ M' v6 i
  873. EOR Key_Kemp
    5 O3 E  H: Q2 P- S( y$ L: V9 F
  874. AND <Key_Keep
    5 J4 J; m) y& {% Q3 v6 [7 l! H0 \3 U
  875. STA <Key_Once2 p7 K6 E* @4 e/ L/ J' H
  876. STY <Key_Kemp
    7 n, g1 `' {/ @& v0 q+ Z, K
  877. RTS
    " {0 {0 K. U1 b" V$ k
  878. ;------------------------------) u( ?( y. e! W
  879. ;按键扫描2 g9 t* u6 R1 l, Q
  880. Key_Scan
    # v- U- a& ^3 z# a: u$ O
  881. LDX #$01+ U, Z. O# {4 n
  882. STX JOY1_FRAME
    6 V7 k! h6 |# }# j- X" o9 x$ }
  883. DEX  q  V* Z. n" k& H8 w
  884. STX JOY1_FRAME4 ]. R6 P4 e! ?( t+ g
  885. LDX #$08
    # N! m: I5 i( F4 M3 z& ?* Q
  886. Key_Value) N+ J# N. z: |0 z- e8 B+ q1 m
  887. LDA JOY1_FRAME
    8 ?; ~  U) M2 R. Z5 [
  888. STA <Key_Getv% o4 |9 ~, m- P/ w- I
  889. LSR A$ f8 t' s' F# \# c/ s
  890. ORA <Key_Getv0 f+ x  k/ L( H
  891. LSR A
    3 i; E* U$ [0 L7 R
  892. ROL <Key_Keep5 X3 N; _1 Q( \8 U" u: W
  893. DEX
    6 c" ~* Y1 Z" l2 m* b$ s; r; }
  894. BNE Key_Value$ L, X( y- @8 z" f5 |1 g! F
  895. RTS9 e5 y( Z9 G! b

  896. 5 a* B- P5 v6 L: {4 X# c3 L" g- t
  897. ;==============================: I+ S6 {3 A2 l
  898. .IF SOUND_BAR_SHOW_ENABLE' F3 @! R( A7 e  H* ?1 s2 {  ^
  899. ;音乐条显示
      ~' i; S- H! i6 c
  900. Music_Vision
    , |" c4 _# ?4 P9 V+ Y- q
  901. LDA <Text_Disable_Flag
    7 N, i6 ]$ {; Q1 r# \
  902. AND #TEXT_DISABLE_ITEM
    7 \# \: t9 j. ]' N
  903. BNE Music_Vision_End: b( l5 U, I2 n' q( n8 p: x9 r8 C
  904. AND #TEXT_DISABLE_BAR% \) e8 C# n- i4 L& A# z
  905. BNE Music_Vision_Set
    & R% E; S0 e* {% I
  906. LDX PPU_Cur
    # \& z/ A% B( Y! g& A* j
  907. JSR Music_Animation
    - k3 n" y" I9 E, J  P, @
  908. STX PPU_Cur
    7 `2 I) v  C$ I4 K+ [
  909. Music_Vision_Set
    ; w: @5 O. f, |
  910. LDA <Text_Disable_Flag* J# p* T9 A6 n, G7 f$ r& U2 _
  911. AND #TEXT_DISABLE_BAR ^ $FF5 O3 b0 F. l2 e, E3 b; F
  912. STA <Text_Disable_Flag0 U: B8 g8 [3 p9 U9 W6 ]5 }# L  v
  913. Music_Vision_End
    : \, k2 [6 Q/ \; N6 m
  914. RTS4 N' n. D6 M7 o
  915. ;------------------------------& Q& B' p( C  R7 c, }( i7 i8 h
  916. ;音乐条显示处理% e9 ~5 r2 A5 _5 _: f8 R% H2 h: n
  917. Music_Animation
    & |6 w, o6 c2 B& Q' \3 e
  918. LDA #PPU_MODE_CNT_LINE# F0 n/ U  v/ V4 o# ~
  919. STA PPU_Addr,X* e6 z2 q3 k4 I+ e
  920. INX
    * k4 k' S# n% E* ^% v) t+ _' F
  921. LDA #HIGH(Sound_Bar_Pos)0 W; J. ~7 X, N: u4 d
  922. STA PPU_Addr,X
    3 n) x6 t3 }# D# ]
  923. INX; Q$ H5 R9 c2 G9 d  T% |
  924. LDA #LOW(Sound_Bar_Pos)1 V* w& _7 a3 Z" D+ ~$ _# E
  925. STA PPU_Addr,X5 P# a4 ?2 @% z6 [. o
  926. INX4 G  |% o0 x% M! ]8 t& n; s: C4 P
  927. LDA #$08# [) U; f" `) x$ T
  928. STA PPU_Addr,X" J3 e; W7 R6 j" D5 o* y- N  H; z+ f
  929. INX; O1 X. e- M3 v" K( C& ^
  930. LDA Sound_Bar- _- c! |" Q7 R- A. f% H% e9 b; c
  931. JSR Volume_Convert) U; k& E1 _4 c* K& N: A% p9 Q' D0 M! O

  932. " B2 B0 n" ?$ ~2 [' T2 h
  933. JSR Volume_Set_Cnt
    6 o/ K# a2 w9 k( z( `1 a2 F) O
  934. LDA Sound_Bar+$4
    ! c# E) U# V7 K9 k& Y
  935. JSR Volume_Convert8 n: Z6 b5 g$ J+ I
  936. ! Q8 f6 i( l$ C* `8 o. E  m8 v
  937. JSR Volume_Set_Cnt, J. g! x) p5 A: }: R: I& X( x9 J* G
  938. LDA Sound_Bar+$8
    ( V3 v3 E1 n2 W7 t/ [
  939. JSR Volume_Convert
    3 B8 h) U( D6 j! ]

  940. ! J; L# r0 Y/ C0 ^
  941. JSR Volume_Set_Cnt& n: G- c, T& r' G
  942. LDA Sound_Bar+$C
    . H( }; M6 J9 ]7 Z% ^! Y
  943. JSR Volume_Convert4 [9 t. C. E3 n# T- ?

  944. ; `, b! |% `) K  d4 v) r3 h* D; \
  945. JSR Volume_Set_Cnt. j# z( O. u1 K( L; l

  946. % Q& O. u  S* B+ m0 q6 H8 P
  947. LDY #$106 Q/ t2 r( h) g7 z4 H* _( k
  948. LDA APU_STATUS  x. ]% R7 a0 @3 f) x
  949. AND #$105 h$ v' r. j! M/ F5 ~) L
  950. BNE Volume_Count; F: G* `# ?) E1 G
  951. LDY #$00: z$ `% {( m/ W: j/ C1 L
  952. BEQ Volume_Count
    1 h( h; {, V$ J; Q; k/ u4 K

  953. 4 |( Q1 W; W: t5 d( V5 ~
  954. ;------------------------------
    : J% l& K. J! T1 n9 M1 @
  955. ;音乐条处理
    6 \* P* S% h- s, x
  956. Volume_Convert
    7 o8 P* N1 U4 W; P2 Z
  957. AND #$0F% S; o6 t. y9 _. _( A
  958. TAY  p0 ^7 m* d! ~
  959. Volume_Count
    1 L) a2 w# c9 W" j% i
  960. LDA #$08
    - r: D, B: E& e0 y" K6 r
  961. STA Sound_Bar_Cnt
    ! l+ k! A& _, h* w5 K2 F
  962. Volume_FILL
    - U( b/ D; h4 k) H& i
  963. DEY9 r+ V( J% }: `# `+ h; B) ?9 X
  964. BEQ Volume_Half0 l" H3 M5 L9 t% u5 f3 Z& h* J
  965. BMI Volume_Empty' ^! \+ J( x: X2 [0 ?$ I
  966. DEY
    5 W  f, O7 y6 B
  967. Volume_Full* j" [3 m) ^0 Q5 Q! s8 l% B
  968. LDA #$16. B$ K" v2 R7 \
  969. BNE Volume_PPU
    , ~# T+ V# ]9 A- u; |' v+ [2 @
  970. Volume_Half1 @! z, }; j+ v/ n1 ?$ |
  971. LDA #$15
      @5 g% U0 f9 U' }/ A
  972. BNE Volume_PPU
    : d3 T+ M( U7 p3 ]* I! W. T
  973. Volume_Empty
    . v3 x0 d& v- s# h& L
  974. LDA #$14
    9 d! o0 @& ?* D( g/ F7 C
  975. Volume_PPU
    5 F, D- d$ [% r& u  K
  976. STA PPU_Addr,X
    & r' \* P3 z: l3 r5 V
  977. INX
    # [% n! ?$ b  u2 A7 |6 h9 ~
  978. DEC Sound_Bar_Cnt
    3 t5 P$ a8 }2 X  G. F1 Q
  979. BNE Volume_FILL+ d- c9 L( p8 d2 t5 b2 {3 ^4 m- b
  980. RTS
    $ k( ?8 @6 F. j$ Q4 g2 Q8 [/ P/ t
  981. / u- V" a4 y- F+ [/ X# Y6 b
  982. Volume_Set_Cnt
      ^5 \, j1 H" k+ G( T
  983. LDA #PPU_MODE_CNT_LINE_NEXT( Y6 x8 y& s2 M  G
  984. STA PPU_Addr,X
    0 M. s3 q+ |. x/ K" y+ S$ ], g
  985. INX
    ( Q2 e3 g5 ?1 E: u7 ^/ `
  986. LDA #$08  y7 F! F  P1 a6 r8 O& f8 z
  987. STA PPU_Addr,X
    . l3 y# ?1 Y1 p& ]5 ?
  988. INX
    # s; m+ }9 }3 x5 N1 _
  989. RTS
    7 s$ z  H; U4 f- S  h

  990. ; z/ t8 C7 \. I: W. b9 D
  991. .ENDIF
    3 p% d7 r  l9 y2 |( _. D

  992. / {1 Z: G* p! `9 I
  993. ;==============================
    ' H/ [3 D* {* b8 S6 ?2 v+ K
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入6 P% d" b8 k+ R1 f! ^/ F
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    ( L" t6 f: L# |; Y# i
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除& Z9 j5 O6 k8 V9 Q  G. g
  997. ;------------------------------
    " q9 d1 b0 T' J/ p/ e9 P
  998. ;PPU处理# t- ], Q3 d' R7 Z8 ~
  999. PPU_Proc2 S0 |0 E/ i4 S. j, W' l" ]# Z" O
  1000. LDX PPU_Cur. p5 ]: ~5 M$ B' {1 A  P
  1001. LDA #$00& o4 f$ P, m4 a  U& ?
  1002. STA PPU_Cur( K3 A' o6 H* o9 t8 J, H# l
  1003. STA PPU_Addr,X
    ; W- Q' \. `( W3 N
  1004. LDA PPU_Addr
    & y2 X' [  d! R7 C- y0 a7 I% u1 }
  1005. BNE PPU_Proc_Beg
    : d% z% ~9 k* m
  1006. PPU_Proc_Ret. n) i& y" o& h8 j* B
  1007. RTS. n! }+ w- O( y7 J+ b
  1008. * E0 J, @8 N' ~* t
  1009. ;------------------------------* b' J8 Y3 E4 b# r
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    ( q3 W- K0 ^9 F5 u% \
  1011. INX
    , k! s; n3 G1 U4 A9 t. F
  1012. LDA PPU_Addr_L4 ?9 b! v% t; W4 \
  1013. CLC0 u' I8 s  C- E+ y3 X; x
  1014. ADC #$20
      E( Z9 M' C1 d- t$ I$ [% F, ?1 e
  1015. STA PPU_Addr_L
    + i6 x) k! X( Y' ?6 D% ^
  1016. BCC PPU_Mode_Return_Cnt_End3 J7 L+ u1 A) ^5 K# Y% b
  1017. INC PPU_Addr_H
    4 c* S1 c0 V' _  i! U
  1018. PPU_Mode_Return_Cnt_End
    ! X- a) b% p1 U8 @
  1019. LDA PPU_Addr_H
    5 H4 |6 k# H3 M
  1020. STA PPU_ADDRESS# [4 ]  I, V/ E! O" }$ C
  1021. LDA PPU_Addr_L) i' c7 h2 Z" P) {
  1022. STA PPU_ADDRESS% F$ n: r6 _+ A/ k0 g
  1023. LDA PPU_Addr,X
    $ r+ B" u2 s5 @: r4 i# N
  1024. TAY  M$ A5 s& W$ k0 N, d+ X
  1025. PPU_Mode_Return_Cnt_Write  F- [" v5 u* i) I1 Z) K
  1026. INX- w8 r) |+ o+ G+ Z9 D
  1027. LDA PPU_Addr,X
    6 n  A$ L# i8 \" V8 ^
  1028. STA PPU_DATA  S8 W" x" V; X" M3 `8 J
  1029. DEY
    % G8 i, w' _% |9 q0 R4 P
  1030. BNE PPU_Mode_Return_Cnt_Write
    9 F  g/ ~7 O7 }7 U9 b' O
  1031. JMP PPU_Proc_End, U- }. a7 F3 m! I6 I
  1032. % i) P( I5 C1 p; f9 m6 r
  1033. ;------------------------------( F2 Z, d2 U" S8 v! y7 C  ]
  1034. PPU_Proc_Beg  ;处理开始
    8 f5 T( k! h9 n3 H
  1035. LDX #$00
    ) ?! A. D, m" q6 ], C& X7 F: T4 p' \
  1036. STX PPU_MASK: d3 E# h" u, `" U& i
  1037. ;------------------------------% f9 A' g& j: ~0 [
  1038. PPU_Mode_Select  ;模式选择
    + z/ h% `& ^9 M5 J# x9 \! H$ v
  1039. LDA PPU_Addr,X+ B( k/ d, }5 @$ q& D- r6 o* {
  1040. CMP #PPU_MODE_CNT_CLEAR, E) p" C% a' F" t9 U8 n- q( Z
  1041. BEQ PPU_Proc_Clear
    3 H! W, S9 v  t# v% A% O
  1042. CMP #PPU_MODE_CNT_LINE
    : r: z8 s# Y' j( V
  1043. BEQ PPU_Proc_Cnt_Line4 L7 |8 o6 @$ }6 I/ G% F
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    , z& _. s+ \& |7 M- \
  1045. BEQ PPU_Mode_Return_Cnt
    ( C; O) o% f1 Y4 X& P) z$ A
  1046. JMP PPU_Proc_End_Write6 }' a+ Q3 Y$ D, g
  1047. ;------------------------------% [& T* ~1 p3 j. @
  1048. PPU_Proc_End  ;单行写入结束
    # l. p$ z& _3 y. w3 d
  1049. INX  K2 g# n! L' o8 {, |
  1050. LDA PPU_Addr,X
    . Q0 H+ r1 b2 J
  1051. BNE PPU_Mode_Select& j, @! D0 _* s* i1 a/ }9 U+ _
  1052. STA PPU_Addr/ H! W# R! Z: V" T! o
  1053. JSR Update_Palette_Color& X8 e) g" B) u: y, m5 q$ H" j

  1054. . A9 M  q4 T) {6 Q! j
  1055. PPU_Proc_End_Write
    # C7 o' q  }6 F, q
  1056. LDA #$00# v5 P$ c6 k5 {, g7 q# `
  1057. STA PPU_ADDRESS
    & A0 E* j7 \) ?' y
  1058. STA PPU_ADDRESS
    6 L5 P/ J8 y) v$ v: d' ~' |' r: c" W2 S
  1059. LDA <Text_Disable_Flag; y' j3 m# o4 f: p( ?2 b
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF; ~! g) Z1 `8 f$ W
  1061. STA <Text_Disable_Flag
    7 v$ R! J8 N& f7 |. N9 y! d+ f
  1062. LDA #Scroll_X- y) c# o+ I9 L4 o; }
  1063. STA PPU_SCROLL7 P4 f4 _3 v  u& i! b0 |2 z0 ^
  1064. LDA #Scroll_Y
      q& \( ^* Z7 x3 v% A
  1065. STA PPU_SCROLL; t8 J, U. G0 g4 w( O2 F$ _
  1066. LDA Screen_State4 W* z% o, Z6 X, m; Y! H$ G! x
  1067. STA PPU_MASK# |7 B% N0 w/ X; d8 \0 q) s" C
  1068. RTS
    + S" r8 [$ u9 [+ _7 ^  {( C$ A

  1069. - Q& b' W! R" h$ v
  1070. PPU_Proc_Clear
    5 w, S7 [# m! p% K
  1071. INX5 f; j# l9 S! k5 i) s
  1072. LDA PPU_Addr,X: D" H7 T8 j+ P
  1073. STA PPU_ADDRESS
    " [9 I/ F( |! r: W9 Z- R. ^
  1074. INX
    ) a, x- V* [7 D! z* K; L
  1075. LDA PPU_Addr,X
    - M7 M7 }% K8 {: a. m
  1076. STA PPU_ADDRESS
    % Z7 l1 Z, W  q) f% C  k, }
  1077. INX
    9 T$ L$ l) \0 @$ ]0 d
  1078. LDY PPU_Addr,X
    9 h& m9 H1 ~* b& O
  1079. LDA #$00' a4 r, d, B  [/ a
  1080. PPU_Proc_Clear_Write
    9 V/ v0 F  Y, x9 h8 Z8 ^
  1081. STA PPU_DATA
    # Z) W! G8 w+ z" s% P
  1082. DEY; y. U0 ?# U" ~0 h* G
  1083. BNE PPU_Proc_Clear_Write
    7 |# J4 m0 R  j% G
  1084. JMP PPU_Proc_End
    7 V, |; w. v6 D. J$ Z& ~  U
  1085. + Q% W$ K2 c6 e4 x  G; D' J
  1086. PPU_Proc_Cnt_Line( m' e5 A' n7 b5 y
  1087. INX
    & a1 u3 B0 r/ x2 o6 n$ {
  1088. LDA PPU_Addr,X
    - ^" |. F9 K( X- U# A1 b# I
  1089. STA PPU_Addr_H8 a! W6 E3 M/ r6 ?5 ]6 A8 Y" z
  1090. STA PPU_ADDRESS; _& q; c+ N1 y% r  I) ~9 N/ D
  1091. INX$ [% U# u; u) s, _! o* b+ A& F
  1092. LDA PPU_Addr,X
    8 m' C* k% [) S* A3 G
  1093. STA PPU_Addr_L
    ' }# Y" g# I: P$ }" c% C5 I
  1094. STA PPU_ADDRESS& d) {. k# L  e% H
  1095. INX
    ' Y$ P) I# u$ P0 n* y) Z& k0 y- Y
  1096. LDY PPU_Addr,X
    , u( [+ m) b% J. ?) A
  1097. PPU_Proc_Cnt_Line_Write
    / q( ~; @4 k: u2 {, N
  1098. INX9 z6 o8 P1 z" o2 M$ G8 n% D0 ?3 X. t
  1099. LDA PPU_Addr,X8 g3 }+ O  V! y6 o8 v
  1100. STA PPU_DATA
    * z& P1 G* t6 R; Y$ s3 H1 `% m3 w- j
  1101. DEY' K! y* o6 K/ I" @1 ]0 D# b
  1102. BNE PPU_Proc_Cnt_Line_Write0 I; M' S8 r5 V* Q+ B- A
  1103. JMP PPU_Proc_End
    4 ^+ q. ]. s4 z8 @

  1104. ! G/ r8 W* ^* f; O- ?% }
  1105. ;==============================
    5 X+ \& D7 ]5 t
  1106. HEX_To_Dec;十六进制转十进制, Y0 P( {1 h" u! P+ Y
  1107. STA <HEX_Data
      V: |& m0 I9 Z3 }$ o0 Q
  1108. PHA
    : L/ w* E# V. N5 R# `
  1109. TXA
    ) ~6 e% _( w, T: b
  1110. PHA8 ~3 N8 r2 q2 |! j3 ]
  1111. LDX #$00) _6 E9 }: g, p3 t( H) D
  1112. LDA #$00
    2 `7 m5 d% ^  y
  1113. HEX_Cln9 |, c6 Z& Z. j, l5 P
  1114. STA <DEC_H,X/ R: ?9 C, G8 Y. T: s. p: Z
  1115. INX% i. D, H5 H* u1 N! ?! [7 Y
  1116. CPX #$03
    8 h8 b+ p. C6 A
  1117. BCC HEX_Cln
    . M+ X, Q( D" y, W5 g
  1118. LDA <HEX_Data/ r& P. d7 \0 x1 m: a" V
  1119. ;------------------------------
    ' s7 q0 ?. l$ I, }- m$ R' r. l
  1120. HEX_100
    ) W. u: O- B# ^. m
  1121. CMP #100+ o% \, B* C0 [
  1122. BCC HEX_10% M, k6 d% Q3 z) N, m' x
  1123. SEC
    / H  @% I- j( J. ?4 ]0 i8 l- m
  1124. SBC #100) E9 Y! p0 V; K& S/ L5 ]* N* ]
  1125. INC <DEC_H$ T8 I! s/ p5 t# u5 A- d0 O% D
  1126. BNE HEX_1009 C* U$ L6 r' u  e* ~$ t( I
  1127. ;------------------------------
    2 c4 H; l+ e: v: N0 u
  1128. HEX_101 h3 C3 c+ |9 o; o, S
  1129. CMP #10
    $ M* B6 i% U! t, V
  1130. BCC HEX_18 w2 ]3 z' U6 z
  1131. SEC7 y1 K+ [  F3 }3 [+ M- v5 w0 w& {
  1132. SBC #10, m$ n5 g! g7 ^0 u! D$ ^1 B
  1133. INC <DEC_T
      X4 t& s, Y+ B. d
  1134. BNE HEX_106 _5 P5 o- [( u+ d9 [  m( N
  1135. ;------------------------------+ \+ T$ Y8 c3 x0 y# i6 X" ~. [* P0 S
  1136. HEX_1
    + O3 k8 M& m$ |
  1137. STA <DEC_L& R% k& o! _5 @1 b5 T
  1138. PLA7 O* N; j; Z1 u  [& s; L& E1 m" E9 u
  1139. TAX. s: G1 R4 m) ~4 n4 a7 N4 ~
  1140. PLA
    7 K" {" g+ w. n
  1141. RTS
    ) u# x" i& H* @; R' x
  1142. * u+ T) |& X. j% ^" [, U
  1143. ;==============================
    . A4 J2 I5 b5 P7 Y2 N
  1144. ;音乐曲目显示
      U3 e& K% T, ~% m& X
  1145. Music_Show7 ?+ B( @' M& G# s# C) z
  1146. LDX <Music_Item_Cur
    9 U5 W1 A5 L% H% r
  1147. LDA <Music_Cur,X
    ( L+ e) }. M1 T$ Q
  1148. CLC
    ) A/ W) v. ]" z$ `! S
  1149. ADC #$01
    7 [# E$ m2 c- S
  1150. JSR HEX_To_Dec
    1 ]; K- [0 ~/ n. V2 P2 `0 F
  1151. LDX PPU_Cur
    ! K4 K2 @# A% n# u+ w9 ^
  1152. LDA #PPU_MODE_CNT_LINE
    , a+ `0 z' y. W' n( {
  1153. STA PPU_Addr,X
    . c+ ?+ m. t5 s2 Q9 `
  1154. INX
    6 ~# N( C. s! {7 {8 T' b
  1155. LDA #HIGH(Play_Index_Pos)
    5 z0 a% v9 g" x. ^+ M0 q9 l$ \& Y7 R
  1156. STA PPU_Addr,X
    5 T5 x$ _& \2 v! G- j
  1157. INX' v- g( |' q. C9 x) G
  1158. LDA #LOW(Play_Index_Pos)- ]$ e- v; z% J, o
  1159. STA PPU_Addr,X
    $ O: [2 X6 t; B! I- O) H
  1160. INX
    4 i7 q& h  i0 N5 \. R
  1161.   ^; T& `9 Q+ F9 E3 b: H
  1162. LDA #$07
    / Y3 ]. {- s6 l# c' x
  1163. BNE Music_Show_Length
    $ e$ v" r. F3 ]; U& T7 ~

  1164. ' H* }9 J: L$ S! X$ {& J( M
  1165. Music_Show_Length
    % c2 l: D' U6 L
  1166. STA PPU_Addr,X
      m, b! K. R7 s7 [
  1167. INX
    ; z, x6 ^% d, ^/ N4 ~6 ~
  1168. 6 W' |2 ]# ]8 m0 \
  1169. LDA <DEC_H. C8 }# ?" K0 p0 ]6 x5 ?( s
  1170. ORA #'0'
    ! A1 p% Y0 x+ J  Z3 g6 `8 ^1 S6 z; T
  1171. STA PPU_Addr,X
    ( r3 T' R% M- P9 g4 d+ r* W4 N0 @+ i
  1172. INX- X3 Z! {0 U9 ?
  1173. ( r; a. ], a0 q3 y' m+ Z- V
  1174. LDA <DEC_T
    : b: M# S! D+ ^% P- e) A
  1175. ORA #'0'. o9 }' z# l) u! F+ u, K% P' M
  1176. STA PPU_Addr,X
    ' `! t; P3 u4 c0 J$ _
  1177. INX1 }3 J! g- D. O
  1178. ' \0 S- {7 f+ f9 f" n
  1179. LDA <DEC_L
    / ^5 U6 r& l+ k
  1180. ORA #'0'/ |* y$ n% V; [' {/ u" O
  1181. STA PPU_Addr,X! B; C+ v) s- I' z1 ^
  1182. INX
    ' `6 w- M! _1 P, |+ x1 G
  1183. 9 B5 f% ?( k: r3 L
  1184. LDA #'/'
    , B1 O" o' S- _5 W- {
  1185. STA PPU_Addr,X
    3 Y' h% c& ^) F1 P
  1186. INX
    * G$ [0 V5 v6 x
  1187. Music_Show_Total5 r, T, E! X5 A1 X- l
  1188. LDA Music_Total
    9 F  |% W5 T% N* H9 |) ^1 f/ T' y7 I
  1189. CLC
    3 r6 [& e3 K5 {1 S! [+ v) L
  1190. ADC #$01
    $ t4 F+ V' N* K0 p9 M
  1191. JSR HEX_To_Dec
    6 W2 o( v; k% `( Y4 i3 R+ p1 Z
  1192. + H, _1 V6 c  t' T$ s
  1193. LDA <DEC_H
    6 N( H# C& N9 X8 Q/ W
  1194. ORA #'0'1 N  C+ u! E. U6 y
  1195. STA PPU_Addr,X
      m# q- R' {9 P7 V
  1196. INX
    * R* z/ p' @4 F0 M$ ^
  1197. ' K0 t/ m- T& L
  1198. LDA <DEC_T
    * D; z% M* B: L8 b1 O; R6 D% k
  1199. ORA #'0'8 g5 g# Y0 i8 W$ }& d- g
  1200. STA PPU_Addr,X
    " s7 i' X9 `8 [' e, u3 k
  1201. INX
    , E1 m2 c0 n& G  D: F. y

  1202. ; H9 c: L, v  S5 W" @/ {
  1203. LDA <DEC_L" D; l7 |1 V2 K- P
  1204. ORA #'0'
    4 i, D! ]% ~9 L1 H8 ~1 a0 m) j) b4 r
  1205. STA PPU_Addr,X1 d5 A9 H. i& z/ I4 O9 n6 M
  1206. INX
    ! v" H% _8 t( n7 }

  1207. . {' i. m  o4 C  {
  1208. STX PPU_Cur, R( [* s2 F) A/ A- k7 m
  1209. Music_Show_End
    7 P5 N+ I3 s7 t. @
  1210. RTS
    : N0 b7 ?' T; Z& u; F" |
  1211. + ~) O, M; b1 T- p
  1212. ;==============================: y! o4 P& F0 W
  1213. Time_Show;播放时间显示
    ) K9 d/ Q( K$ \) f# }' S9 T
  1214. LDA <Text_Disable_Flag
    9 X" O/ V0 h7 X& G- ]: W; m1 n
  1215. AND #TEXT_DISABLE_ITEM
    2 h" S3 ]2 {0 v' y0 ~9 L! z
  1216. BNE Time_Show_End
    . m& L: {* |9 l
  1217. AND #TEXT_DISABLE_TIME
    $ s$ y4 o8 i% n4 ~
  1218. BNE Time_Show_Enable
    4 A8 y2 u1 y7 S3 T/ \. P
  1219. ) I" u! a' x! i9 z
  1220. LDX PPU_Cur
    , W. e! e/ |* d. T3 @3 L6 P* K# X& N% e
  1221. LDA #PPU_MODE_CNT_LINE
    ( O" I! L& v, t$ O  S; T; H& I
  1222. STA PPU_Addr,X
    , f5 x' a" P! i$ x
  1223. INX
    7 f/ x1 w3 J1 U; J1 o. I
  1224. LDA #HIGH(Play_Time_Pos), P: g& k. v4 u% \. h$ @# K
  1225. STA PPU_Addr,X! _: v" [0 u, z4 O7 V
  1226. INX, z  f; O. _. {* U& y8 a
  1227. LDA #LOW(Play_Time_Pos)$ t4 X5 n2 ?8 |
  1228. STA PPU_Addr,X9 R$ f& N, L: U' j3 R0 y" u3 e2 l; P
  1229. INX) Q: a. N5 {" J" s( a) X) P7 Z5 }
  1230. LDA #$08
    3 I4 s4 u8 m0 R* J: o4 [8 R
  1231. STA PPU_Addr,X* y9 F# I( ?$ R" {/ Y5 {
  1232. INX
    . `. e) a# F) ^; A( o' A4 A
  1233. Time_Show_H
    % o0 p; E2 E6 b9 N
  1234. LDA <Time_H
    6 M" ]7 z6 o% w4 F
  1235. JSR HEX_To_Dec" G1 D" X0 e2 c# @4 |
  1236. JSR Time_Digit& o1 j; P' m. E/ ?
  1237. LDA #':'
    4 r+ P& e. V# M; m7 L' {
  1238. STA PPU_Addr,X* ?# z- ~7 f1 e  N. j0 _2 @
  1239. INX
    ) Q. [- F2 B$ q
  1240. Time_Show_M
    / S, s. H/ Z4 h+ q0 |8 w
  1241. LDA <Time_M
    2 V; n* R' i# r+ s$ G8 C
  1242. JSR HEX_To_Dec
    2 [+ }, ]# ^5 z
  1243. JSR Time_Digit
    : w* ^" J6 X& ^2 u9 }
  1244. LDA #':', e9 X8 m* X- n" C
  1245. STA PPU_Addr,X# f+ m3 \: r( f# _8 L- m
  1246. INX
    $ r/ c4 y8 c+ `7 Q) w+ J0 R3 ]
  1247. Time_Show_S! d  C  n" a/ L" G. g
  1248. LDA <Time_S
    " R& }* |2 l3 X" ~4 S) e* ]
  1249. JSR HEX_To_Dec8 r) ^! Q! N- `" ~, S
  1250. JSR Time_Digit
    % k  {( O4 C) A' x
  1251. STX PPU_Cur) g; z0 s: F- _9 n5 {5 e5 M
  1252. Time_Show_Enable+ y7 ^" h! o4 i
  1253. LDA <Text_Disable_Flag
    4 T& q" H- k" j6 q7 n% R
  1254. AND #TEXT_DISABLE_TIME ^ $FF2 E( h, x4 [5 b' g1 X
  1255. STA <Text_Disable_Flag4 O, Q7 {7 f! Z0 I8 q& [  n8 I
  1256. Time_Show_End
    ' t* v! x; y" T0 o; i* F1 m$ L# A
  1257. RTS
      \* z1 c6 V' L

  1258. - ?* l% S  F$ w
  1259. Time_Digit
    8 l/ P0 B  X: A% w4 b" p& V3 J  j& D
  1260. LDA <DEC_T
    , L& Z% G3 t" P. _
  1261. ORA #'0'0 [  c3 n" [; M. B
  1262. STA PPU_Addr,X
    8 Q( g. j. N" A  D4 h; c. t( n
  1263. INX; ?6 _4 }6 h  A# q
  1264. LDA <DEC_L, G0 W2 T: c& J9 P  q; X
  1265. ORA #'0'
    8 z- f. l. n: o& ~
  1266. STA PPU_Addr,X
    6 S/ [+ P4 g/ r8 H( i$ }
  1267. INX
    / o$ e7 `+ B* y& a' ?0 C
  1268. RTS
    4 @- A  z: X7 Z! W7 \6 C! W

  1269. 5 X) h! V/ M9 P- p' H! m/ _4 ^" t% ~, n
  1270. ;==============================1 W! n: \9 s: |7 x- ]! u, V1 i& R
  1271. Time_Count;计时
    " l! s7 _( x. ^5 v/ @; s% q
  1272. LDA <Music_Stop_State! L( j8 s' W, g9 i( J5 T
  1273. ORA <Time_Wait_Cnt- X* U- s+ O6 j" {/ k# G
  1274. BNE Time_Count_End
    % }2 Q& d5 h% \, e$ p. h/ f
  1275. INC <Time_Cnt
    ' n( c3 K$ S& D! S
  1276. LDA <Time_Cnt
    + Y" j9 D' E6 k/ v5 O6 q. Q: O
  1277. CMP #60( i. |% T$ u$ K8 A
  1278. BCC Time_Count_End
    ) O$ ?0 G1 ?7 h% M4 `/ I
  1279. LDA #00. L( \; p/ d; J1 \  Q7 `
  1280. STA <Time_Cnt# n2 e; T2 J7 M* S- t
  1281. INC <Time_S
    - g8 h- S. ]* e6 k( H5 d& n

  1282. * i/ x0 C! @, M! h5 i- \
  1283. Time_S_Cnt
    9 w; Q) _5 p; k! A1 x  [. j' a
  1284. LDA <Time_S. ^, y( b. x% Q0 s5 y+ g
  1285. CMP #601 o4 ^, [% ?0 K) a) I3 E+ c
  1286. BCC Time_Count_End! ^; w: @% e% @) N2 w( `& I
  1287. LDA #00+ {4 s6 S) e8 n+ u7 A4 Z& @
  1288. STA <Time_S
    # q! b3 a* {- g. Y+ G1 n
  1289. INC <Time_M8 r# l) f1 ^9 E+ p/ ?2 x

  1290. . B* ]$ Q% I. m8 m
  1291. Time_M_Cnt
    & N9 K/ Y  S7 K1 Z5 x
  1292. LDA <Time_M# }! ~1 j8 D; C( e
  1293. CMP #60
    . e& l8 B7 W: e0 j8 y. n6 N
  1294. BCC Time_Count_End
    " z  y* \6 x1 v4 m
  1295. LDA #00
    7 \3 e, c! Q) i
  1296. STA <Time_M
    5 Y* S4 r' Q& h: B" K4 @7 a
  1297. INC <Time_H
    $ a0 u+ h9 g0 @1 l+ a( ]9 I
  1298. : c" o$ S2 z7 G/ q  l4 E
  1299. Time_H_Cnt" A4 h9 E5 K! _- p7 n( i
  1300. LDA <Time_H9 y" g  ^+ j' |+ w0 K$ F, n+ Q
  1301. CMP #247 }- B6 `* g6 E/ E: X) s
  1302. BCC Time_Count_End4 c3 h+ Q5 l; ]$ N( p1 }
  1303. LDA #00! G. x( p& P* l* P. c
  1304. STA <Time_H
    / q7 s" k2 a# x5 n2 L: D
  1305. : @. P- j( E8 x% t- j
  1306. Time_Count_End4 n0 A  q) k: _" w, M+ h
  1307. RTS
      U5 Q4 b7 e/ i1 @) O
  1308. ; |3 ?( M- C; F- m  r$ q$ n; e# o
  1309. ;==============================
    0 Q' S8 N2 s. q
  1310. Time_ReSet;播放时间重置
    6 O) z5 W/ q: }" j4 @$ P
  1311. LDA #$003 P6 m+ p. z; T1 R; t6 q
  1312. STA <Time_S* x& [# N- M! P8 n
  1313. STA <Time_M
    1 N+ s. @$ k6 Y, }. J
  1314. STA <Time_H
    * b3 g& X- d3 B2 m
  1315. STA <Time_Cnt/ [: W' o0 f8 @3 G& F1 t
  1316. RTS2 ?. ^% e/ F, G- L( m' [
  1317. 3 J; [: D3 o& N2 S
  1318. ;==============================
    7 Q8 S2 _. R& I
  1319. Music_Bar_ReSet;音乐条重置
    # Q' T4 V; p: \/ ~+ Q# \0 C. H; b+ R
  1320. LDA #$00
    : v' j5 b2 c$ U$ h  a
  1321. LDX #$006 A# j. r+ Y' V$ n; F3 U) S
  1322. Music_Bar_ReSet_Set2 G2 ]/ `, _* }. z4 a# [
  1323. STA Sound_Bar,X
    : k0 O& z+ H3 w. ~
  1324. INX
    $ n/ v4 a- G. E  N  w
  1325. CPX #$10
    / ]$ H' W: ?2 y; [: X, I9 ~
  1326. BCC Music_Bar_ReSet_Set8 n) _8 Q3 ^/ G6 @2 d2 Y
  1327. RTS; n' i( Y/ a* d: |. z
  1328. + Q, v4 o6 M0 b& y6 M
  1329. ;==============================) q2 |4 b/ V( h7 M, k4 O6 E% T1 g
  1330. PPU_Data;PPU数据写入& k) t2 A  L! X: u9 S5 D' D# ]
  1331. STY <Data_L, X/ B0 ~' H( j% T
  1332. STX <Data_H
    4 n( ^) f% m$ V1 I  B" i& U# [; F
  1333. LDY #$FF
    ; D: s# x' t' P- E" v
  1334. LDX PPU_Cur
    . d" Q- R+ n! h; s8 t( _3 j" J
  1335. DEX+ E' L! a( T  X, D9 j! c9 g
  1336. PPU_Data_Beg
    % c; P! S# q( {% T
  1337. INX
    % A& w+ Y9 q8 D; q" u% \
  1338. INY
    6 m, B4 G7 ^" y$ C
  1339. LDA [Data_L],Y" R% B+ W0 ]0 d# `) ~! Z
  1340. STA PPU_Addr,X, c0 D0 ?: i$ r
  1341. BNE PPU_Data_Beg
    ) `) u1 @0 g# E/ Z3 g. U
  1342. STX PPU_Cur8 V3 [2 j7 z# ^7 k. U
  1343. PPU_Data_End9 S6 A% ~" C0 V
  1344. RTS
    0 W! e7 J; e# I
  1345. 4 v/ y; J% ^1 o  Y: y0 W5 Q
  1346. ;==============================
    & h5 g+ ]# C7 g- \) }6 {7 I/ v
  1347. Music_State_Show;播放状态显示& ~0 c1 r1 z9 ]; k4 q9 v
  1348. LDA <Music_Stop_State
    & J3 a& y" t9 v/ H
  1349. BEQ Music_State_Show_Play
    0 |) I' K! |* ^4 g+ z2 p. b2 n5 u- X' F( E
  1350. Music_State_Show_Stop: z3 |4 [7 s! L# S
  1351. LDY #LOW(Music_State_Stop)' s* f* ]; i- g$ n7 D' t
  1352. LDX #HIGH(Music_State_Stop)1 `; H2 t/ q' f4 ~1 Z
  1353. JSR PPU_Data+ S2 n, C' z6 ?+ ]& @) A
  1354. RTS$ t+ U/ o% `! y0 o  g
  1355. Music_State_Show_Play
    # K& f5 X$ f5 c5 O& Q4 a0 ~" V
  1356. LDY #LOW(Music_State_Play). H+ r3 C* o) }9 Q4 {+ G
  1357. LDX #HIGH(Music_State_Play)
    , G& r( Z% L" R/ m
  1358. JSR PPU_Data- _" f8 G' T6 h+ @( y% }" V
  1359. RTS
    $ c* s+ j1 H8 i6 \9 j" H2 Y
  1360. ( k4 o6 a7 G2 R2 T. {* n
  1361. .IF SOUND_BAR_SHOW_ENABLE
    % }( p) ^6 h# K& r' t/ _
  1362. ;==============================7 j9 E2 ]7 p! ~. _, {
  1363. Sound_Bar_Text_Set;标题与音乐条初始化3 }  _) Y# s% O3 q' D* d; D$ B
  1364. LDY #LOW(Sound_Bar_Text_Data)
    ' ^7 N0 k4 p0 g
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    , e# S. w2 K9 v! h  V+ [
  1366. JSR PPU_Data, Z# `$ p+ Z0 P- Q& C
  1367. RTS( ~) v) J% z& O) ]9 c5 D" w

  1368. % X  k/ d& \1 b4 K: [
  1369. .ENDIF% k3 r( t1 ]" B/ u2 f3 F
  1370. 4 N8 M; ^4 _" x7 d& v+ O
  1371. ;==============================
    $ C* L- S3 ]/ W# |# I" i
  1372. Set_NameTable_Attributes;设置命名表属性& y# e6 w0 Q% L; C8 s1 k
  1373. BIT PPU_STATUS9 T2 _* E7 I3 `' b  }
  1374. LDA #$23' }# m0 E. [/ F! S0 ^# G
  1375. STA PPU_ADDRESS
    ' l5 U/ [  }8 h; r! i+ W
  1376. LDA #$C0
    % s5 o; f' _7 Y& N: z
  1377. STA PPU_ADDRESS
    . d% `0 |4 }) K
  1378. LDX #$00, [  O9 D4 U/ n4 O7 k3 c8 a+ U
  1379. Set_NameTable_Attributes_Write0 |  p# u6 [% b
  1380. LDA Palette_Attributes,X; u9 e$ g* |: z4 Y
  1381. STA PPU_DATA/ O% r- {  X# V9 A7 V! P: M  }
  1382. INX& x/ _6 v8 r% y, o
  1383. CPX #$40
    ' {; W) x$ q1 a: M9 s/ W
  1384. BCC Set_NameTable_Attributes_Write& m! R: h  j% g  y9 X% D
  1385. RTS7 Q& {8 ?1 Q- Z2 H/ d4 k0 g  [

  1386. 9 F2 n. Q. s4 x
  1387. ;==============================- r( d  z% U: r3 k
  1388. Set_Palette_Color;设置调色板数据
    $ Y0 Q3 O: U+ U3 L
  1389. BIT PPU_STATUS9 X% s8 J0 M' Y- \1 Y! I& Q
  1390. LDA #$3F
    * P$ x, G. E, K
  1391. STA PPU_ADDRESS
    ( Q# o( ]5 d; j, l' o
  1392. LDA #$006 L$ X: f+ V. V+ A" P
  1393. STA PPU_ADDRESS- c- h) u8 @9 q' [. _# i; P
  1394. LDX #$00
    % N. B8 d- x2 o- G8 ?
  1395. Set_Palette_Color_Write7 n5 s- e) Z! I/ ?9 G: R
  1396. LDA Palette_Data,X
    7 r5 t  t% w( {. k
  1397. STA PPU_DATA
    8 r4 r. {* V" d
  1398. INX2 g% c4 I$ H3 A# I* n- }. _4 a
  1399. CPX #$209 T# B6 W( B0 M! D6 `
  1400. BCC Set_Palette_Color_Write+ S( @/ _$ G! ]! }& A) X5 b- d/ @* k; \
  1401. RTS
    4 n7 r% `$ z  V/ I
  1402. 9 Y( m# ?' B5 j: a6 q
  1403. ;==============================0 a+ R7 z5 R, |" H
  1404. Init_Palette_Addr;初始化调色板数据* l/ P/ U2 T. B# Y0 x) l. D
  1405. LDX #$00
    6 v  z, `" I/ \: o1 r: n$ y
  1406. Init_Palette_Addr_Write$ z8 d9 `9 [5 R" K* u( i' @  @
  1407. LDA Palette_Data,X
    & P, ?$ G' X2 X% H' B# J
  1408. STA Palette_Addr,X
    9 ?6 p! S3 {/ W
  1409. INX( B, D3 L; s3 P7 |% a8 N, O
  1410. CPX #$20+ |! o! k. W/ t! |" z
  1411. BCC Init_Palette_Addr_Write
    ' _$ L* Y! P1 M8 U
  1412. RTS
    ( W# T1 g1 O7 S! D+ f7 _  n3 m  J+ @
  1413. 9 M; p% I! Y- F7 R
  1414. ;==============================4 h+ X& N# H3 ^
  1415. Update_Palette_Color;更新调色板颜色
    : \* ]3 X; T) ?0 p. q% K' \
  1416. LDA <Palette_Update_Flag
    ! q+ R, P3 B& Y9 _' U8 A
  1417. BEQ Update_Palette_Color_End
    & i  {0 h( }. l2 ~. v! H) {" J3 {4 M) ?
  1418. LDA #$3F
    7 x0 E' K( Y* [5 {. q  Z) l
  1419. STA PPU_ADDRESS
    7 k- ~# ]  G; m
  1420. LDA #$0C" ?# {0 W, u4 ]0 C# M# w1 R7 {- a
  1421. STA PPU_ADDRESS0 Y' R, P0 J4 e* O" }. M
  1422. LDX #$0C
    ; ~6 }: \! z; j
  1423. Update_Palette_Color_Write& }$ w( h2 h! q& I) b& x, c7 ^
  1424. LDA Palette_Addr,X. \7 C% s3 a( R. ~7 d
  1425. STA PPU_DATA
    7 V5 r, A1 c# ^) K8 z1 [6 O- h* U
  1426. INX
    1 P6 k# Z! M; T7 @# @2 ^3 s
  1427. CPX #$14
    ! j2 x% K' I! O$ R
  1428. BCC Update_Palette_Color_Write
    4 Z& m4 ]: _: \" x+ m4 F
  1429. LDA #$00
    " N" G! I! e9 D2 }# S. H' t
  1430. STA <Palette_Update_Flag
    ; [9 Y! L8 r0 }, Y; r
  1431. Update_Palette_Color_End
    9 q/ g0 d7 W/ O8 {: i
  1432. RTS! \5 o0 [$ P6 f2 L- _% h# @

  1433. ( Y" @1 Y. d+ z: _

  1434. ! g( V: _" x( ?
  1435. Update_Sprite_Palette_Data9 C0 G* |6 S! ?: s, h! w
  1436. .DB $21) s, [' _: M. I/ h
  1437. .DB $21( x# C6 F* o" T& g$ T( |
  1438. .DB $11
    # u* ^0 `2 `; z6 r
  1439. .DB $01
    9 n  C/ N8 B) o2 t# ^* l0 w" d0 E/ c
  1440. .DB $016 L! ~$ \7 q' k: [  ~
  1441. .DB $11
    + }) ]1 R, g4 X
  1442. .DB $21
    5 K( O2 A8 G" x  D& h& ?& s
  1443. .DB $21! a, V- u: D' s- G$ @
  1444. .DB $116 C2 W! p( k$ b
  1445. .DB $018 k; p! Z; g& r1 _" \( Q
  1446. .DB $11
    8 B; ~  G7 [# r. w$ Z( ^
  1447. .DB $214 @8 v$ _/ f9 k+ u7 a
  1448. .DB $21
    , F$ Z% o! H' X1 ^3 Q+ a
  1449. .DB $11& P" N) P! m, n
  1450. .DB $01
    7 Z& h- B  q! A( c
  1451. .DB $11
    9 d) L7 {/ e$ e5 A2 x- _' u* e9 e
  1452. ;==============================
    ( Y2 k- p! Z  A
  1453. Update_Palette_Data;更新调色板数据+ v! l7 F9 C- s2 k2 Q* Q  m
  1454. LDA Nmi_Time_Count% a! b- t  w: c1 l. z9 @, S) @
  1455. AND #$086 a, @. z% O, h! r/ V3 d
  1456. CMP #$08
    2 O+ K& T( r) B0 X  L
  1457. BNE Update_Bkg_Palette_Data# m8 y3 L9 }3 S4 l0 A2 f& P: g' l

  1458. 2 w4 I% ]* U1 K1 k; x6 t3 z
  1459. Update_Sprite_Palette_Data_Set5 ^' y* X* T! m  o1 \0 i
  1460. LDA Nmi_Time_Count* m9 p* k7 K3 X) H' [$ h
  1461. LSR A! Z+ V: n( {: ]% Y5 u5 C( I
  1462. LSR A
    2 `+ V( e: L+ p% s, b9 G+ f2 r
  1463. LSR A
    # p/ [: I+ N  b1 T- v, }3 [
  1464. LSR A
    & ~; A6 X3 J  p- G
  1465. AND #$0F
    1 Y2 E+ x0 o3 F' ^
  1466. TAX# K6 O' n) V  K
  1467. LDA Update_Sprite_Palette_Data,X2 ^, b4 ~6 K$ x' x  ], R
  1468. STA Sprite_Palette_Update_Addr/ M& O5 w8 V! ~9 f8 q  f( E: L) m
  1469. LDA #$01
    4 q5 v. m( j1 o
  1470. STA <Palette_Update_Flag$ i- d% I) o- @3 r6 M8 U9 }& y
  1471. 6 V7 O' r: V/ H3 c
  1472. Update_Bkg_Palette_Data
    1 \1 T  D# e6 ~0 @/ J! ~5 O
  1473. LDA <Text_Disable_Flag3 w- t0 \/ z# }! Q7 h- [
  1474. AND #TEXT_DISABLE_RAM
    $ G4 s/ R' F4 {! Y' |0 C' r
  1475. BNE Update_Palette_Data_End
    8 Q) s2 m0 k% B3 k( X
  1476. LDA <Music_Stop_State
    ) S* D' q/ h% e: |7 t
  1477. BNE Update_Palette_Data_End+ [! _1 A6 F2 c7 A5 k
  1478. 0 h$ a0 J. f# N. ^. \; h: @  \4 ]$ h9 m6 A
  1479. Update_Palette_Data_Check
    ! c+ q7 O  [/ e* b! }+ T4 [0 L
  1480. LDA Palette_Wait_Cnt& I$ E! @& n0 ^* s2 ^
  1481. BPL Update_Palette_Data_Check_Over7 o6 N7 Z! t  Y% p" e: U
  1482. LDA #PALETTE_UPDATE_INTERVAL
    0 E2 b3 M" ?' R& o8 T3 P
  1483. STA Palette_Wait_Cnt' T- z+ p0 }/ s& D+ \$ m3 u
  1484. Update_Palette_Data_Check_Over
    4 V8 G1 d: D! k  U2 l2 Z  H; e. f
  1485. DEC Palette_Wait_Cnt+ \# A# `" S) e2 R
  1486. BNE Update_Palette_Data_End) [0 E& @9 H2 T  ^' ^% }2 A, R1 z
  1487. * I6 Z6 N* b0 _# o* I9 c
  1488. LDA <Text_Disable_Flag
    3 {1 C& z  g' A
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME$ u0 k! O1 O5 @5 k8 O/ a& Z
  1490. STA Text_Disable_Flag4 q! b) Q! P  p3 `6 ]
  1491. INC Palette_Update_Flag
    ( i" \  i. S% w" U1 l; K
  1492. 5 i2 r4 p9 r1 f$ w9 G+ g- [5 I
  1493. LDA #PALETTE_UPDATE_INTERVAL1 @: s4 \: d# x/ G' B8 v
  1494. STA Palette_Wait_Cnt
    - u' N! q- ?' e+ N, J) ~4 q* P3 `
  1495. 9 X$ |3 O) V5 e; P! ~) `
  1496. LDA Bkg_Palette_Update_Addr9 c+ j* A: n3 L! V# }
  1497. CMP #PALETTE_UPDATE_MAX
    ' a  \, d* i& C( u/ C$ L
  1498. BNE Update_Bkg_Palette_Data_Set
    ; D  ^/ w7 ~( Q+ A5 |. l% y
  1499. LDA #PALETTE_UPDATE_MIN - 17 ]9 O- m" ?1 w0 ~: ?. R8 s9 O) t
  1500. STA Bkg_Palette_Update_Addr7 n5 ?; H' j( j
  1501. Update_Bkg_Palette_Data_Set
    # x1 M4 v. K- ]* m, p& o. L: U4 i
  1502. INC Bkg_Palette_Update_Addr7 O/ K9 a' c+ s6 z# Y' e
  1503.   m3 K. `" [" A
  1504. Update_Palette_Data_End
    ' m. p* c# Z/ F
  1505. RTS
    1 i5 |8 c) L  m

  1506. 5 O5 Z  _! T7 n/ r  k' d9 n2 n
  1507. ;==============================$ |% l6 J- O' H9 l) b
  1508. Show_Music_Text;显示静态文本
    9 e$ u' U' u: z# M
  1509. LDX #$00
    7 @" p: r) |/ ]$ ]
  1510. Show_Music_Text_Set; ]1 R) R8 C( ]' O/ W3 B' X9 j
  1511. LDA Static_Text_Data,X
    . R1 m5 p, z6 |+ j5 }
  1512. STA <Data_L8 [" ~- D. ]2 m9 J  l% A4 M% B
  1513. INX
    - g  N) m% ]1 m% f1 Q- ]+ J
  1514. LDA Static_Text_Data,X3 q- X4 b  f( J1 t5 f4 C/ k5 i
  1515. STA <Data_H
    6 {2 H! N/ w8 m9 l/ |
  1516. INX; @8 E% A, [6 L! ~" y
  1517. LDY #$00
    . p! A! F6 U6 x/ H$ D, J
  1518. LDA [Data_L],Y1 f3 q) A9 G( o* F0 S% k. P2 X
  1519. STA <Data_Cnt
    8 @. Q& j! a0 ^; y3 w6 @
  1520. DEX
    $ g' V) x) G# d4 h
  1521. DEX
    ! _& {! |3 g( q
  1522. LDA Static_Text_Pos,X8 ]" ^+ |) d+ M4 r, R8 K! ^6 j
  1523. STA PPU_ADDRESS
    5 T# o- x! c7 a1 F. l; F# T
  1524. INX
    , n# a0 c( K/ e" t$ _" L% P
  1525. LDA #$20, n5 l' J5 b( `% E& R/ ^) T
  1526. SEC. n. l3 \' b$ M/ N* Y# x
  1527. SBC <Data_Cnt
    6 o3 d8 m  ]: A* R- M' I" i
  1528. LSR A6 N  {5 I# r6 @" @9 A
  1529. STA <Data_Buf
    0 c9 q; ^9 q7 B4 s- \9 d3 J
  1530. LDA Static_Text_Pos,X2 U- Y; j+ l; ?5 |. X" Z
  1531. AND #$E0
    & Z8 ^! u# P# J* Z: B
  1532. CLC
    0 p: _1 j4 {$ h/ `6 s' d, E6 }
  1533. ADC <Data_Buf; A& }4 J5 U+ R# z, Q& X
  1534. STA PPU_ADDRESS
    & Z, I. ]4 L% \, U3 [& F
  1535. INX
    9 v! |! F* O. S
  1536. Show_Music_Text_Set_Write# `* Z3 f( @9 }! I$ W
  1537. INY3 K3 c5 n! ~: S! Q1 @8 r6 n. Y, h. c
  1538. LDA [Data_L],Y
    % \0 m1 ^  Y( Y! Y& v$ W* j
  1539. STA PPU_DATA9 e4 d, i, K) C: k" h
  1540. DEC <Data_Cnt: q$ s9 H& y7 |$ f/ c9 {+ X( F
  1541. BNE Show_Music_Text_Set_Write
    : s5 o: M3 s$ D* t6 N
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    " b. @( \) q5 r/ A2 \% P+ }+ Z7 S
  1543. BCC Show_Music_Text_Set
    7 B2 Q. W8 q2 F# h4 g4 Q* C
  1544. RTS
    & N- a/ R' X' K8 X
  1545. + D( H( R# y, _
  1546. ;==============================
    % y" D3 H9 ]# ^- A# f
  1547. .IF Track_Name_Pos;显示曲目信息
    5 h$ D. e- [8 _8 {7 |+ m3 }5 ~

  1548. + Z0 z9 m# s$ v+ {5 {0 L
  1549. Clear_Track_Info
    % s) v$ A9 v+ h) o! R( g( U
  1550. PHA/ A  |1 l4 \- @  [- w" E2 i$ C( T; l
  1551. LDX <Music_Item_Cur
    $ J+ y3 U" p8 ~; W8 E6 F4 a% p1 G
  1552. LDA Track_Name_Addr_Flag,X# M# O. ?: I) F+ ~$ y8 d
  1553. BEQ Clear_Track_Info_End_Ex9 J9 k6 m) `2 G$ K8 l  {
  1554. PLA" x  S* H# q+ c! {$ \

  1555. ; ?+ K/ [1 L, ]
  1556. LDX PPU_Cur
    $ k) q; l, O, v" x9 q: q3 B
  1557. PHA! P: S& U3 q1 O3 \" x
  1558. LDA #PPU_MODE_CNT_CLEAR0 l3 {: t5 I+ m0 K
  1559. STA PPU_Addr,X
    / O" j/ X. x# }5 S: q- b4 E0 F
  1560. INX3 y/ @. t0 c/ G1 A; j7 A
  1561. PLA
    1 d+ u0 E1 ~- }* z  i5 i4 R- [
  1562. JSR Show_Get_Track_Name_Center_Pos
    9 L* D' y7 ]( _% B
  1563. STX PPU_Cur
    1 |0 U% {; n# w
  1564. Clear_Track_Info_End3 ?- k% D" T/ w4 J' d5 ?, R" E  Z
  1565. RTS* v8 n5 C: ?$ b" ], D. s5 A
  1566. Clear_Track_Info_End_Ex" ~* J* h3 Q( Z4 L( Z0 Y: ]7 m+ P) D9 B
  1567. PLA
    / T! Y) M+ Q. T" p
  1568. RTS
    / i0 T" A& ?1 a& p. Y8 C
  1569. ; g4 q7 C+ u* E
  1570. Write_Track_Info, `5 X, k' A! D# p5 l6 J+ `
  1571. PHA
    ! t* S, W( h6 c5 ]; d
  1572. LDX <Music_Item_Cur, u8 |- v* e  A6 S3 X
  1573. LDA Track_Name_Addr_Flag,X: Z/ r$ U1 Y! d( |
  1574. BEQ Write_Track_Info_End_Ex' m; Z0 s6 q1 ]) V8 [
  1575. PLA+ ^6 ]# Z  c- H/ m& t
  1576. . X* L0 |5 {0 u6 R3 S
  1577. PHA
    , f( k1 M4 M0 q# y( C- x
  1578. LDX PPU_Cur1 S' ^1 @3 I. C0 o1 Z* R
  1579. LDA #PPU_MODE_CNT_LINE
    2 B- D3 v) i9 K' U2 {3 k
  1580. STA PPU_Addr,X
    ( ~) q3 O% ^' c
  1581. INX, H7 R  ?# ]$ B4 V$ V2 \
  1582. PLA1 Q- v: i- f4 Q8 D  ^, p
  1583. JSR Show_Get_Track_Name_Center_Pos
    / T0 M8 k& v) c$ v( {7 R& b" \) W: W. @
  1584. Write_Track_Info_Data
    2 n4 u. t0 o  l& M  v. F1 U4 p/ ~
  1585. INY/ M6 @. ?* F  y5 y4 N, U3 a
  1586. LDA [Data_L],Y
    - R1 w. [% v; }  g. u1 O* t
  1587. STA PPU_Addr,X
    ! |1 y( y; R8 c6 a: _6 ?
  1588. INX
    5 _0 U/ F# c) m% a# j
  1589. DEC <Data_Cnt5 f; Q3 |$ I; N+ u: W* Q
  1590. BNE Write_Track_Info_Data
    . }, i! |/ @$ C% w
  1591. STX PPU_Cur1 J$ x6 o3 H, }" j
  1592. Write_Track_Info_End
    ; M6 M! A% L5 g- A5 T4 j% Q4 [
  1593. RTS8 y- t' C: C1 p7 g$ w; K5 {
  1594. Write_Track_Info_End_Ex9 p  E3 s4 J) x1 d. U) m7 @% H. ~( [
  1595. PLA
    8 j* a& r0 R" W
  1596. RTS3 n3 h- F! N( z5 V% n
  1597. + R& @4 U* Q7 u
  1598. Show_Track_Info+ k8 |. E0 P# v
  1599. Show_Track_Info_Clear
    7 C; q3 w; Y" h% o. N; d$ {2 E
  1600. LDA <Music_Last
    5 W5 j' u5 u- f9 p) C# X6 l

  1601. 6 L- f% G  A& M
  1602. JSR Clear_Track_Info; y( `# S$ |/ C1 Q6 O7 w* B

  1603. / H8 i/ |3 b7 {& g7 K
  1604. LDX <Music_Item_Cur
    : a9 e( j* p( ]+ l
  1605. LDA <Music_Cur,X
    7 b" U, ]' Y4 e& L
  1606. JSR Write_Track_Info
    9 b! W, L$ P4 m, W
  1607. RTS
    7 h: N5 n; M3 |* b

  1608. 2 r/ Z+ A3 Q/ x  f- S
  1609. ;==============================& @7 [% V4 T! \, f
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    ; \' N" Q( Z$ P. f
  1611.   o8 ~' Q$ g" Z( v( C. ?# @; E
  1612. ;取出集合名索引
    0 i* C. Z- _& p# e1 |( t4 @
  1613. PHA  W0 ?7 o* a) s. N1 {1 J) _
  1614. & l. r2 D! R) u/ ]
  1615. LDA <Music_Item_Cur
    # H/ y; c- m& r2 G
  1616. ASL A5 X& Z1 C% I1 B$ W
  1617. TAY0 d0 k8 G; u% C3 j% t6 e2 J
  1618. LDA Track_Name_Addr_Port,Y: w0 n, T( C; D+ m: N& [
  1619. PHA/ J. ]- X; p% a
  1620. INY
    4 z1 F- j  Z7 w6 W5 @8 [5 t
  1621. LDA Track_Name_Addr_Port,Y
    $ [7 ~3 P3 p) P2 O
  1622. STA <Data_H; F- h: D5 _4 w. M
  1623. PLA
    * q& `# ]4 @) W( m4 T" R# W/ ~3 n6 T
  1624. STA <Data_L
    ( J. a: M4 l2 g

  1625. ( B+ c9 u8 P7 f; t$ d
  1626. PLA
    # a6 c; c8 E. _4 h1 c
  1627. . g: {# L" d- P" F4 o' [1 t
  1628. ASL A! a. l9 O! q/ R# M  {
  1629. TAY
      k& d+ r7 m* N( U6 r2 U) w
  1630. LDA [Data_L],Y" N. P1 Q6 U' L# [, j0 v0 e! ?
  1631. PHA1 j! @' E# ~% q; _* H
  1632. INY, }$ T" W& x9 L4 y* B5 c5 ^
  1633. LDA [Data_L],Y, v% h; b$ _/ o% \+ E
  1634. STA Data_H' C8 M2 J7 v1 _2 e
  1635. PLA
    1 ~4 f* Q! ^9 b6 c$ a
  1636. STA Data_L
    + s- P4 u: ~8 u% }

  1637. / a8 X4 L0 a! T7 r& M
  1638. LDY #$00
    ! D  J, b5 H" `( [9 L
  1639. LDA [Data_L],Y
    , w# v& Y3 |- O. A+ x- t. ^
  1640. STA <Data_Cnt
    3 W$ h! k2 i* v" C1 T" U
  1641. LDA #$200 ], t$ M  ?1 y
  1642. SEC: k  z( ^8 w6 Y" S2 ?9 S" i
  1643. SBC <Data_Cnt
    0 j7 ]* r0 a6 M8 u/ v0 ^
  1644. LSR A
    7 u2 M/ Z' D1 ]
  1645. STA <Data_Buf8 u; ^. A0 m8 L% o& P/ y
  1646. LDA #HIGH(Track_Name_Pos)
    7 @/ F0 h0 s6 a, M& J
  1647. STA PPU_Addr,X
    0 s' n8 z: A& Y* [
  1648. INX/ b" j% k# b4 V: h+ c3 A
  1649. LDA #LOW(Track_Name_Pos)
    , m) n: G" p# u" e
  1650. AND #$E0- f/ L3 ?! G& v$ s6 q
  1651. CLC2 V3 N8 ~  V2 a% c
  1652. ADC <Data_Buf# c2 s$ d) {3 G/ y; l# G. l
  1653. STA PPU_Addr,X
    , a. ?0 G  ?5 `) e% K
  1654. INX
    0 ?6 X# L7 q# g- P
  1655. LDA <Data_Cnt
    ) v: z, f- i$ J; O  \9 ~
  1656. STA PPU_Addr,X
    ; L; L) G+ M2 L$ D
  1657. INX
    & [2 G" r% f7 N/ E, P
  1658. Show_Get_Pos_Center_End# I. d) b- q+ Y$ f- {+ M
  1659. RTS
    9 Y1 d# ]- _; ^; N3 o% z4 R; S5 x
  1660. .ENDIF7 H$ H" T1 I* |2 I' t6 f1 p
  1661. 4 t- _+ h% u, e4 e' n$ m) ^# t9 B
  1662. ;==============================
    8 p) O8 p! n" F, V/ d1 `6 r9 Y, J
  1663. ;音乐端口清除
    6 r7 E- ~- Q( A
  1664. Sound_Data_Clear7 D5 ?: ^: r# z4 W1 z4 M
  1665. JSR Sound_Port_Clear
    , `( K2 }% S0 Y6 I
  1666. JSR Sound_Ram_Clear
    : L0 R4 T: ]; v' H0 U8 l  U$ H' h
  1667. RTS, P* t% ]0 J" j- D. H* Q
  1668. ( e  [5 \. A: U+ ~
  1669. ;==============================% `. L0 h: h* a9 ^" o
  1670. ;音乐端口清除
    ' ]6 M/ J: f& [+ s4 C. @5 Y
  1671. Sound_Port_Clear
    $ E+ j% J9 G1 X1 D: v
  1672. LDA #$00  n' }; n0 U3 K8 X4 D* i4 p: ^, ^
  1673. STA APU_STATUS
    9 Z. B, k$ C% l  T" V
  1674. LDX #$00
    & U: C( {$ @9 X- p
  1675. Sound_Port_Clear_Write
    2 p5 E/ s: F% V( y
  1676. STA $4000,X
    % P" _$ f3 `# I0 L7 F
  1677. INX
    : p5 p- W8 b; P8 ^! B
  1678. CPX #$14! H1 ]/ N7 ?# X' R, H- |
  1679. BCC Sound_Port_Clear_Write
    ( [# V0 r8 o$ `* W0 h1 G
  1680. RTS
    # `/ c7 |- u/ \# y" r0 v- k* _

  1681.   h1 n( L& s9 E$ u5 |- `
  1682. ;==============================  u; t1 I" v$ E0 U. d6 X, A
  1683. Sound_Ram_Clear;RAM清除
    * p6 v! i& X; q; U: q9 J
  1684. LDX #$00
    " M4 g% v* _% h6 ~
  1685. LDA #$00
    9 P# B" W. w4 q
  1686. Sound_Ram_Clear_1
    / p0 g4 \1 \, o% @/ ?, z- P- |& e
  1687. STA Sound_Ram_Addr_1,X* r/ A& _) f9 U6 C. c
  1688. INX
    : g+ h) m$ A5 A) p" G$ g% C
  1689. CPX #Sound_Ram_Addr_1_Size
    ' \/ v' M8 h# Z: [; O- W
  1690. BNE Sound_Ram_Clear_1
    . K; F9 r' x$ |+ w
  1691. LDX #$00
    5 _% I/ X! B3 X  K* Q
  1692. Sound_Ram_Clear_2' W) K- X& J) p7 G, f5 d+ k
  1693. STA Sound_Ram_Addr_2,X
    1 P7 ~6 c+ N2 M0 Y9 I0 g& H, U
  1694. INX
    ; W- T' B- d% t; i9 n2 \
  1695. CPX #Sound_Ram_Addr_2_Size
    3 n' _$ v4 E! E" K: \: Z6 l1 q# O3 |
  1696. BNE Sound_Ram_Clear_2
    7 u" X8 w* ^9 r% u2 X
  1697. LDX #$00
    5 L% ]- N0 z1 J& J8 v
  1698. Sound_Ram_Clear_3
    2 \) A6 J; D# f* P" n
  1699. STA Sound_Ram_Addr_3,X
    " x6 ~9 X% r: y) K+ M! @
  1700. INX
    + x# P2 C, d, s# S# l3 Z/ \
  1701. CPX #Sound_Ram_Addr_3_Size
    & t0 n" C' V2 H2 k9 O( D' y
  1702. BNE Sound_Ram_Clear_3& ~, w1 l) ]; C# s5 d* Z
  1703. LDX #$001 }3 U, [- D% D( W! ^7 Y, `. G
  1704. Sound_Ram_Clear_44 D& O* H: q5 \1 d4 ~6 q
  1705. STA Sound_Ram_Addr_4,X
      X1 M. P7 k$ {, M% x. Z% {7 I
  1706. INX
    1 s; a0 W9 T8 ?8 y/ @- P, t( L
  1707. CPX #Sound_Ram_Addr_4_Size
    ; H2 ~4 ~6 s( [
  1708. BNE Sound_Ram_Clear_4) Y) S; ^+ e, Z6 w4 R
  1709. Sound_Ram_Clear_5, Y! B! ?& s* D# p
  1710. STA Sound_Ram_Addr_5,X) H* w( o; J4 B( z4 n0 |
  1711. INX
    & h* v. c1 e, \: J- u- a
  1712. CPX #Sound_Ram_Addr_5_Size
    " z6 n; i3 C, l! u' E% w! ?0 _
  1713. BNE Sound_Ram_Clear_5$ S( s+ s; r, ^8 @
  1714. RTS
    & s; }- i7 L7 W) v
  1715.   c5 _% K0 r0 R4 {& L& Q. n6 T
  1716. Get_Music_Collection_Name
    * Z) a& t" ]4 x9 N- q8 q
  1717. PHA2 W4 d. j! J# d9 B
  1718. LDA <Music_Item_Cur' S6 c4 ^1 w+ G) N0 R/ _  G
  1719. ASL A
    8 o) `' Z2 a- V. s4 X7 o
  1720. TAY' r/ z- ]% }! [4 W( w6 a! B
  1721. LDA Music_Collection_Name,Y% O* G/ y5 D: S; w
  1722. STA <Data_L5 d1 Q2 q( J- y! v
  1723. INY
    + y, Z, y! X4 _2 R+ I% P6 z' ?
  1724. LDA Music_Collection_Name,Y
    - J- _) [) d$ v& s- G
  1725. STA <Data_H# G4 b" q, ?' F0 a. E
  1726. PLA# V/ w: A4 E( m
  1727. RTS
    4 K) p$ b% f; P* {; j4 @
  1728. ; E3 F- E8 p: M9 v9 A; E
  1729. Set_Sound_Total
      y8 }/ C0 I/ x( V1 `
  1730. LDY <Music_Item_Cur
    " e4 U0 c, O9 [
  1731. LDA Sound_Total_Port,Y
    % s: t; w* r, a- S
  1732. SEC- \% q! s) {- x: I  p! F* }  d% z
  1733. SBC #$01  R2 P8 N/ x7 i- A  ^2 n- _
  1734. STA <Music_Total
    ) i, ~" f  B6 h& P3 n2 s' g* v4 P7 {/ Z
  1735. RTS4 l+ x; ~0 _+ ~& w

  1736. 7 _$ |  v# p7 E9 A
  1737. Get_Sound_Start
    4 W. ~! {- N) D- g2 \
  1738. LDY <Music_Item_Cur  q9 P$ g6 l% c  f9 J
  1739. LDA Sound_Start_Port,Y5 b$ E, J5 W0 Z1 U
  1740. RTS
    5 }0 {$ o/ f+ b
  1741. - ?( o1 o9 V( d* J
  1742. Set_Sound_Init_Port
    0 M6 S5 [8 S4 H/ G5 V1 S3 p
  1743. PHA7 h2 r5 N/ M) c. H2 }, R
  1744. LDA #$20; C; X. l6 Z- z5 J$ S- T
  1745. STA <JSR_Addr_Op+ X/ m8 X" @1 g& N) Q6 c6 F0 f$ u
  1746. LDA <Music_Item_Cur' `% C' o2 y: b& z- L
  1747. ASL A, m7 ^4 a: b3 w2 J% N% L8 b
  1748. TAY0 o1 I; n7 o/ u9 r3 n2 o% v
  1749. LDA Sound_Init_Port,Y
    / U; z$ {+ s1 `) \9 E6 {
  1750. STA <JSR_Addr_L
    $ f, u  Z7 l7 I4 a% e4 |. O
  1751. INY8 F% m: V6 p* x
  1752. LDA Sound_Init_Port,Y  O# V, f9 ?1 T2 `; N) F5 r  q" E
  1753. STA <JSR_Addr_H
    5 ~. N) q7 _* ]3 _# F  E2 h
  1754. LDA #$60
    / |% Z  ~. }/ I" K
  1755. STA <JSR_Addr_Rts$ e; U2 Y% X' f. H4 `
  1756. PLA
    % z, d& w$ h6 G) {$ w( o
  1757. RTS
    8 b! t5 @/ C, h% R
  1758. : P3 [8 n- s0 Q0 ~$ J& h
  1759. Set_Sound_Play_Port
    - L& e% Z3 S$ s  S) x4 S* E7 T
  1760. PHA+ v( A1 c( p( H' Y8 X* B
  1761. LDA #$20
    % m. O( r) @% N/ X2 t
  1762. STA <JSR_Addr_Op5 |3 I" n  Y) m5 x! M/ H& q4 l" p
  1763. LDA <Music_Item_Cur' \0 y0 Y% x7 a
  1764. ASL A' D$ c' ^0 U0 q$ H" I
  1765. TAY
    * U2 I+ V! f! A9 T/ a' K
  1766. LDA Sound_Play_Port,Y
    + z) u" c5 B0 v# x
  1767. STA <JSR_Addr_L
    ' i, Y4 L0 S% p9 b' s- I/ n
  1768. INY$ E$ K: r- l& ^! b+ q
  1769. LDA Sound_Play_Port,Y
    $ X' c3 Y- T7 n7 j- y
  1770. STA <JSR_Addr_H$ H1 S! K9 V0 p2 p0 ~. w" {
  1771. LDA #$60
    0 z: @& O- b2 h3 [0 J- f
  1772. STA <JSR_Addr_Rts3 M' X% ^8 R4 z) r- q( l4 u/ ^& ^
  1773. PLA: m4 S% C8 Y9 F$ L0 y
  1774. RTS
    : y# j, g. l- A- N" \
  1775. ) [- G/ H! j$ a& y. z
  1776. Set_Sound_Reset_Port
    8 _& z/ l3 Q# u0 C) w1 `& g) u9 E7 h, Q
  1777. PHA
    - k  s1 q1 `/ d% R
  1778. LDA #$20
    9 C7 ?8 f$ a% _: x0 n
  1779. STA <JSR_Addr_Op
    5 S& b* ?1 u* g& \- P4 w5 h  T7 x
  1780. LDA <Music_Item_Cur0 k3 F4 L' `0 R( p1 [, N
  1781. ASL A
      j& a% K& }; u* R
  1782. TAY
    " x1 s- k5 `& h8 g5 Z, E
  1783. LDA Sound_Reset_Port,Y+ Z- q* D& V  ~0 {
  1784. STA <JSR_Addr_L
    ! L3 b; _( b4 h0 X0 [/ |8 I
  1785. INY$ f  f3 x+ ]; c, |
  1786. LDA Sound_Reset_Port,Y9 E% J; b2 m- j( O2 k
  1787. STA <JSR_Addr_H
    + V  f# @3 E% g, D
  1788. LDA #$60/ i& C! h* x7 j& N# Y
  1789. STA <JSR_Addr_Rts* z$ r( T" l; ^* Q, u* i
  1790. PLA
    6 T/ u- e, _/ B( ?/ V& _, i
  1791. RTS  \/ u# a$ m" _0 \4 D

  1792. 9 G9 t# d. A' z; h3 d8 ^
  1793. ;初始化音乐bank
    # t9 p! |! k( U. X
  1794. Init_Sound_Bank
    7 V- j6 a( e6 D! z+ q6 d9 b. ?
  1795. LDY <Music_Item_Cur7 x2 V0 G2 q9 y& j% L
  1796. LDA Sound_Bank_8000,Y
    & S" P: R" ?2 L+ a
  1797. STA <Music_Bank_8000
    - Z$ {; E( R( b( H! N! ~$ V# j
  1798. LDY <Music_Item_Cur' z9 L! M5 Y0 W7 @' P: o' X3 n
  1799. LDA Sound_Bank_A000,Y# S2 z/ E8 B0 ~1 k8 f. J4 C' R6 v
  1800. STA <Music_Bank_A000$ G2 o! s7 A1 ]! e4 }: J) D; x
  1801. RTS
    2 P1 r5 F  m8 K  r8 I3 Y
  1802. 0 u  B( _; q+ u5 A; |
  1803. ;==================================================
    % c+ [. w1 B! _9 a4 A5 m) V
  1804. Sound_State_Reset;音乐状态重置  l% n0 {# i% h! x3 _! d
  1805. JSR Music_Bar_ReSet        ;重置音乐条) @3 H( x. Z6 t2 T! B  H
  1806. JSR Time_ReSet             ;重置播放时间
    , f$ B( D  F4 I5 [  K+ A' V# A

  1807. . s. b) R" U* M' D2 g0 p
  1808. LDA #$002 W6 v/ h( x1 K* x
  1809. STA <Music_Stop_State
    4 z: K- e) L. r0 J
  1810. JSR Music_State_Show       ;显示播放状态: n+ }+ c8 |# i9 }

  1811. 1 F* }, V8 e# b6 d9 N, u3 \7 [
  1812. .IF Track_Name_Pos# n( |" |! d6 i( t: ^
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    ' @! \, T* z( q" [$ C7 x: J
  1814. .ENDIF
    " @5 M9 G. ]7 K5 e8 {' U9 k2 K" ^

  1815. / v8 r  f8 A% Z0 T) K4 E
  1816. RTS
    . H% k5 O+ I8 P' [. f
  1817. , a; Z# e# M9 H4 M4 t
  1818. ;==================================================
    9 o* a# T: ]3 p. O* s  w
  1819. Sound_Init_Proc;音乐初始化处理
      |9 |  O. R! \) k3 F
  1820. PHA2 z8 ~2 h3 a' L) D
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址! p6 r6 i; `3 n" G
  1822. LDA #$00
    4 E# G$ J3 w, \$ A- ]3 I3 M9 a# T
  1823. STA <Scroll_H               ;重设水平滚动
    , ~+ Z2 N. ]3 ~+ }: t
  1824. LDA #$0F1 w8 h4 t3 `* `: _8 q
  1825. STA APU_STATUS
    " [* x  d* ~& a! W. l
  1826. PLA
    * ]1 y" t6 m& U1 R" h# v
  1827. JSR Sound_Init             ;音乐初始化' ^4 `  b0 c+ c
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    4 L5 m3 i2 U+ ?8 l7 f% u' u& F' C
  1829. RTS
    " y( w3 t. v( b9 @0 u5 ]! N: x! W! I- u) o
  1830. + R8 {+ i! @# n" W; j# [, K
  1831. ;==================================================
    & p$ r# F$ L3 a- b
  1832. Sound_Play_Proc;音乐播放处理
    ' c+ k; k& t- u+ K
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    % C+ p7 I3 j) d5 m: e
  1834. JSR Sound_Play             ;音乐播放
    1 Y# O* A6 O+ F, I5 L1 c  `
  1835. RTS& ^+ K- R4 m1 c* D

  1836. 1 j* N3 R# |  [* _5 @7 r
  1837. ;==================================================( t8 V0 e. G. l0 C5 R
  1838. Sound_Reset_Proc;音乐重置处理+ R' _1 q1 v1 p" t0 }+ i. H
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    % r; Q& z) A& D  N* _* a+ c
  1840. LDA <JSR_Addr_L
    / d# q  H  f1 `- Y, l1 K* g
  1841. ORA <JSR_Addr_H( H# `5 s7 V3 e* Q1 S" ~) @
  1842. BEQ Sound_Reset_Proc_Default" t5 Q, t" f% Q9 r
  1843. JSR Sound_Reset            ;执行音乐重置
    - Z, u- C! j1 w; {4 h4 c6 [
  1844. JMP Sound_Reset_Proc_Init_Sound
    ! [/ C3 `; I6 S# w$ q' g$ j0 T0 F; w

  1845. 0 M3 P/ N; Z; H+ U! r
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    5 P' y6 ^5 f$ z8 f. x2 Q5 J4 H
  1847. ) \" q7 u  y8 a8 U. o2 H
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断9 \+ f& s/ g* X' R: l7 O
  1849. LDA #$00
    % \/ N7 ?( U* Z. L' F
  1850. STA PPU_CTRL
    % E* h  X. q! \0 Y0 Z, c/ m3 s

  1851. 7 p: a. l" N* H( U$ L6 u
  1852. JSR Sound_Data_Clear
    3 y/ g6 v3 c! ]; y

  1853. % m- `7 o+ H" f
  1854. Sound_Reset_Proc_Default_Wait" P' X3 y" i  m3 z
  1855. LDA PPU_STATUS+ o( M, m6 x7 E) w. X
  1856. BPL Sound_Reset_Proc_Default_Wait
    ' d8 S- u. ~" x- m, _

  1857. 8 g! U: i& Q! f
  1858. LDA #$006 g" p) Y. D! b$ C! w$ R+ @! M
  1859. STA PPU_ADDRESS
    1 e0 e9 e. ~: A4 ?3 `
  1860. STA PPU_ADDRESS
    & _6 S1 l7 ^, |2 W: U
  1861. STA PPU_SCROLL
    0 G. N# m( H; N4 ~1 ~
  1862. STA PPU_SCROLL
    3 F9 e6 v5 k$ U9 u# `

  1863. $ m; v: I9 H, |; ]: L* N
  1864. ;恢复PPU控制7 |# f1 S+ j2 }
  1865. LDA Screen_Ctrl
    * d8 {  L8 H0 y
  1866. STA PPU_CTRL% M. `$ r0 ^5 g$ E3 H
  1867. 4 c! X/ Z" d3 F, l, T# l$ F$ z
  1868. Sound_Reset_Proc_Init_Sound8 i$ A1 y8 W. k( H
  1869. LDA <Music_Stop_State
    ; m6 h5 c' M5 J% A, r. F8 A
  1870. BNE Sound_Reset_Proc_End! \9 K0 \- i2 j
  1871. LDX <Music_Item_Cur
    * k- u! R6 x3 ~& Q3 k: B* r
  1872. LDA <Music_Cur,X& R( l+ E* E( t2 ]6 H4 `7 a; m
  1873. JSR Sound_Init_Proc9 S" p2 z8 E7 A2 z
  1874. Sound_Reset_Proc_End
    4 C: {" w# q! X0 Q5 e; f2 v4 ?
  1875. RTS0 ?/ J7 f% U$ g$ z7 o6 Q, L) }
  1876. ) f% {0 j% Z: `; T  t- e" \+ T
  1877. ;==================================================/ o' N4 e& M7 f4 O7 K4 V* q7 V, w! O
  1878. Clear_Item_Text;清除页项目
    5 _1 c8 e$ i9 T) n: ^
  1879. LDX PPU_Cur
    ! c/ B3 q6 J6 J* J2 G9 c# ]
  1880. LDA #PPU_MODE_CNT_CLEAR
    / U/ x. \. G1 y; l
  1881. STA PPU_Addr,X, w+ T1 J8 X: }% C% x+ d. n; U+ A
  1882. INX+ X. L6 z1 [; K! X3 L9 |0 w/ V
  1883. / _* ]- j; i& f
  1884. LDA <Page_Last
    6 y0 m3 d6 f! U5 f
  1885. SEC6 l) U8 Q, t4 R! |) H$ ~! Y& A
  1886. SBC <Page_Last_Index
    , q1 O/ |, l, y* w
  1887. ASL A
    # b3 G/ J; L- @- i1 o

  1888. . l/ m7 E# E  d' U
  1889. TAY
    & N$ H1 Y9 t2 S8 B* z
  1890. LDA Item_Pos_Data,Y) e' M  R" l5 a1 s8 W: _9 l( E6 @
  1891. PHA1 m! H: {% Q) ^' g, l9 o" O- [1 z
  1892. INY
    ' F! J; J, N3 [  J
  1893. LDA Item_Pos_Data,Y
    6 ~3 q! Z5 r( c6 N+ t4 H/ e3 z
  1894. STA PPU_Addr,X
    - ]( T; z, ^$ @' q# k% y( U2 i( T
  1895. INX/ ~: |9 R4 t2 d$ N
  1896. PLA; {$ x. c' O1 |
  1897. STA PPU_Addr,X2 q# `( w( e+ ?' F/ F* Z* Y
  1898. INX( _" ?6 J9 R  J% I* t7 X7 b

  1899. . s! L; }: G/ w9 U8 b! ~
  1900. LDA <Page_Last7 F: I( M$ D3 Y; Q5 v9 _
  1901. ASL A) ?! ^( w4 M" e; C
  1902. TAY
    8 Q, P2 M* b" W& P
  1903. LDA Music_Collection_Name,Y
    2 I! M6 S# }8 Y, B' o
  1904. STA <Data_L& t6 l  p2 T3 W) L9 h5 g2 J
  1905. INY" [7 l- J% |7 j- h
  1906. LDA Music_Collection_Name,Y
    * S* o+ o( }4 J& A- P' V+ B
  1907. STA <Data_H
    & \- E5 h0 ^  l( e7 v
  1908. - K3 ~, L. `0 }  x* Z3 F
  1909. LDY #$00
    6 z: Y" {& f8 c, c8 e; X# D/ H" T
  1910. LDA [Data_L],Y
    ; o+ \- b4 Q4 \- e. \4 N
  1911. STA PPU_Addr,X
    : J. [1 X7 `2 M, g! E3 Z* c
  1912. INX
    + i6 V$ C) \) y
  1913. Clear_Item_Text_End
    * q, P5 d9 Q* ^7 C
  1914. STX PPU_Cur" L: H( z$ i  Z! C# l# v# e4 r
  1915. RTS
    2 S! Y* R# Z- I/ i- K) _2 r5 @

  1916. $ w$ d( `6 F2 B
  1917. ;==================================================
    + O6 S7 `" U: j' ~7 ~& k1 u" T# R
  1918. Show_Item_Text;显示页项目: C& K: ^# F) U! H
  1919. LDX PPU_Cur, e: `4 M/ x, }5 g
  1920. LDA #PPU_MODE_CNT_LINE
    1 n& e. z* ]( X$ Q/ v
  1921. STA PPU_Addr,X$ z9 i* g+ e  p* [) w/ k. o
  1922. INX, b+ B7 w! |% B. d& ?0 i' x& y9 V( S: {
  1923. LDA Page_Cur
    ! v$ h5 X0 \/ d# u- D0 m% Z1 X$ z
  1924. SEC, @- b! n% @5 X" B# S
  1925. SBC <Page_Cur_Index
    + r" o- k; k1 t' p" G' h8 _
  1926. ASL A
    ) L: _$ z! G4 a7 B5 f
  1927. TAY  S) K" I4 [6 B0 n
  1928. LDA Item_Pos_Data,Y+ \4 C# p; u3 f9 V6 q
  1929. PHA3 T( P& k, d8 {  q7 V9 Z0 q
  1930. INY9 u$ G7 B, t" s& N: o
  1931. LDA Item_Pos_Data,Y/ \0 J2 q9 i& I* ?
  1932. STA PPU_Addr,X
    ; U, s$ b+ s% ]! z" |9 ~" O* g
  1933. INX
    3 I+ |6 `! w# T4 q% s
  1934. PLA
    5 X. v! y* Y  O7 M& t+ E
  1935. STA PPU_Addr,X
    # C# ^) {; w: D6 f: q" ~- {
  1936. INX" Y0 ]# H. n& i6 I( u- N

  1937. 7 z2 E- H/ z* v" R8 H! Q
  1938. LDA Page_Cur
    0 [" S% j$ c. L* c" \( O; F7 I
  1939. ASL A  y( E6 f1 q8 d$ _2 o: b
  1940. TAY
    9 U! l5 W9 j# J8 C' v4 ?9 ~
  1941. LDA Music_Collection_Name,Y$ l$ G: x8 r. A# V6 i$ m4 T
  1942. STA <Data_L$ b- V6 f: K& y1 u; r
  1943. INY+ R$ j1 m( n" a! z: J/ W9 b
  1944. LDA Music_Collection_Name,Y7 x) O  c: p% b6 M# Z) K
  1945. STA <Data_H
    9 H6 C( f/ Y& i' j# V
  1946. 6 m7 V7 e: Y7 e6 h& S7 }
  1947. LDY #$00
    ' m5 \8 A3 o9 U7 N, k
  1948. LDA [Data_L],Y- x4 `9 `$ d% C  a( R1 ]/ [
  1949. STA PPU_Addr,X
    . i: g. j' g2 |) W1 r+ d
  1950. STA Data_Cnt% z! u' I2 i% ^% x- x5 m
  1951. INX! V4 D, ~- K2 a7 W0 L  r0 x$ t+ V
  1952. 4 Y) Z3 ^) Z2 r0 w1 s+ N
  1953. INY
    ! }. x: w' T2 P- x
  1954. Show_Item_Text_Write
    1 q( F5 i0 q: E2 H6 ?7 n
  1955. LDA [Data_L],Y
    $ ?$ k) `9 p( z# F+ ^7 D
  1956. STA PPU_Addr,X
    - d, h5 c* }' `" R3 s# T: W8 ?, F
  1957. INY
      S9 M% R" h9 S: i5 X; I
  1958. INX+ p* \" V6 [, m1 i) l4 V
  1959. DEC Data_Cnt
    . f! N) N  F! N3 ^5 C% ?4 j
  1960. BNE Show_Item_Text_Write
    - H" \) D1 r& U5 p

  1961. 7 c% h9 ?3 d6 n$ g# a
  1962. Show_Item_Text_End! u5 u* d& t  `1 [( T
  1963. STX PPU_Cur
    5 L6 E; `1 _1 n% `
  1964. RTS
    : i) B2 g* \& ~2 I! a
  1965. & t' |! ~8 E. h2 P3 v9 @( \4 C- J
  1966. ;==================================================
    " c# D6 H& ?* L, ^
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    8 o$ A5 O6 ?1 |4 E
  1968. STA <Data_Buf
    - e) k! h' u4 ]" g( U7 b  F
  1969. LDA #$00, [# B6 \4 z( q7 F
  1970. Get_Page_Index_Calc4 V: z  s  I& ^" I6 x; D0 I
  1971. CLC" z7 ?' C# {; q7 z
  1972. ADC #PAGE_SIZE# x" L  y% j7 _- J/ O* ]9 f( A9 O, Q0 F
  1973. CMP <Data_Buf$ Z5 G' p, e" W1 i
  1974. BCC Get_Page_Index_Calc$ [6 J4 w& F" T
  1975. BEQ Get_Page_Index_Calc_End
    - R8 w* {3 |1 {) |
  1976. SEC
    6 X& V2 R: r4 R% T
  1977. SBC #PAGE_SIZE
    & U- v+ D8 n9 ?) N
  1978. Get_Page_Index_Calc_End
    * v" _+ l1 a* D- O
  1979. STA <Data_Buf' t- r0 n9 `  F
  1980. Get_Page_Index_Cnt9 H. X4 y2 o: j6 V/ w
  1981. LDA #PAGE_SIZE
    / D& `/ i; C* U! V& [9 e
  1982. STA Data_Cnt
    + [' p$ r* X2 a. ?8 x9 Z0 l$ d

  1983. 1 v- C* r/ x0 G2 `. f# S# r
  1984. LDA <Data_Buf
    " d- z6 w0 s- ]
  1985. CLC
    4 @& ]$ d/ h. o" {+ u
  1986. ADC #PAGE_SIZE. j3 i* r1 o, q) e; B1 R$ |$ l
  1987. CMP #ITEM_MAX_SIZE- V) [& \# o6 U! l. {. ?6 ^
  1988. BCC Get_Page_Index_Cnt_End
    " a% g% `( ^: h

  1989. 0 e, \/ P& p, P! ]
  1990. LDA #ITEM_MAX_SIZE
    2 \; e: ~; L" {% d' H3 ]7 m
  1991. SEC! W, ?1 ~" m& V8 C* G% B
  1992. SBC <Data_Buf
    4 j) ~! K) @' b
  1993. STA <Data_Cnt
    : l+ R3 ^: e' ]

  1994. ) o7 @1 M; ~; g4 l, i
  1995. Get_Page_Index_Cnt_End( W( S4 g" y# m) u! j0 ^% m
  1996. RTS
    4 ]$ J! u* w; b9 a+ U3 e
  1997. ! v8 G2 c, m4 e! E: z" t
  1998. ;==================================================
    , @0 p( X) w; R( @2 P( m" {
  1999. Get_Last_Page_Start_Index. e1 K! p0 W( C. F, ]
  2000. LDA <Music_Item_Last
    2 s6 p4 N* A6 X- R$ K& C
  2001. JSR Get_Page_Start_Index
    & \3 u; M% z4 ~8 h9 V# b. |
  2002. LDA Data_Buf
    ( b# n, Q. k3 P
  2003. STA Page_Last
    7 Z# r" @4 _* P4 H' N
  2004. STA Page_Last_Index
    & w8 @0 o, r& U; p
  2005. LDA Data_Cnt
    8 P: F) D+ S# ]
  2006. STA Page_Last_Cnt% l" w3 c) Q0 i4 |  q
  2007. RTS1 \4 n- S8 ~7 K3 Y0 P/ R- Q0 `' r0 A
  2008.   ~! K' j0 L4 V( B9 l. I0 [0 u# q9 f% v4 w, r
  2009. ;==================================================: O2 _" J6 k1 M7 Q. F
  2010. Get_Cur_Page_Start_Index
    : g; \. B7 C- H, }
  2011. LDA <Music_Item_Cur' _- n) P0 g5 @3 X$ h
  2012. JSR Get_Page_Start_Index$ G- m( S  ~. Y; B
  2013. LDA Data_Buf+ {- M+ T( i" x" k5 Z4 F# o
  2014. STA Page_Cur7 t3 S3 X8 B* T# j6 D1 c: q+ U
  2015. STA Page_Cur_Index
    6 R+ J" l* `4 P6 p% y% n, p" t* i! i
  2016. LDA Data_Cnt
    " ^% ~: x9 U# ^& a+ J/ R5 i
  2017. STA Page_Cur_Cnt/ t" t# i! J! l% T: m9 B
  2018. RTS( G- Z4 u9 ]9 {; F+ i

  2019. 1 {% K' c1 p* i% \9 Q1 i
  2020. ;==================================================
    & D% P* l- O1 \1 a
  2021. Show_Page_Text;显示页文本- n  R: I+ O1 Q, E: p
  2022. LDA <Text_Disable_Flag
    0 M% M0 [) V1 R# [3 Q9 B, ^
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    % x& E1 f. n% u; B
  2024. STA <Text_Disable_Flag0 c  u% I9 Z2 N) z# ]# Y

  2025. ' H; @+ z1 }$ \
  2026. JSR Get_Last_Page_Start_Index( k) P% d  x; C  M
  2027. JSR Get_Cur_Page_Start_Index
    ( I' R" _$ ^! u

  2028. . {! i# i" b5 d% ^
  2029. Show_Page_Text_Set
    ! r# K6 ]: k: p' W' y- [( k
  2030. ; E. ?9 f9 j* v+ M* x) S0 p2 K( M
  2031. Clear_Page_Last_Item;清理上一页2 }7 O0 ~. x1 Z( Q# e6 \
  2032. LDA Page_Last_Cnt
    / K4 |( t' D, E& ^7 k/ r0 M6 U
  2033. BEQ Clear_Page_Last_Item_End
    - J7 ~8 M: T; o5 N1 x0 k/ Y2 X  y
  2034. JSR Clear_Item_Text
      ]; W: a9 {/ Z0 w
  2035. INC Page_Last2 N# k) D4 F  ?" P8 ~
  2036. DEC Page_Last_Cnt! G! b% X$ \' f! h8 ~
  2037. Clear_Page_Last_Item_End
    2 a6 W/ c3 R9 j% `
  2038.   m  D4 [- j: ?! Q
  2039. Show_Page_Cur_Item;显示当前页, Y9 P/ k  |7 T* X. B2 h6 k
  2040. LDA Page_Cur_Cnt
    . l6 i! E* r: {$ _; c# ~% R
  2041. BEQ Show_Page_Cur_Item_End) N- P& ~8 i4 Z( F0 W/ ?9 C
  2042. JSR Show_Item_Text8 |$ v0 ^7 M$ g: _% Z: q( `
  2043. INC Page_Cur
      @8 {2 b7 v# b5 }3 I* B
  2044. DEC Page_Cur_Cnt5 U9 ?1 X7 `, L
  2045. Show_Page_Cur_Item_End  q, D0 l) Y: z# X  I" K
  2046. . T4 t) A* }* C
  2047. INC <Time_Wait_Cnt/ j0 F4 B, R! o- X4 T3 A
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    4 h- R9 X, }0 I: A/ [# O0 F
  2049. LDA <Time_Wait_Cnt- w* M* ~8 o" }. c
  2050. BNE Show_Page_Text_Set_Wait
    2 H( I- g5 Q7 W( U' T$ i) f- w

  2051. 6 L7 g! z7 S- W/ g: q9 R: B7 ?5 [
  2052. LDA Page_Last_Cnt; U( k, B/ |$ a
  2053. ORA Page_Cur_Cnt# V! @' z# ?. X% ]) U) M) x
  2054. BNE Show_Page_Text_Set7 I, N9 K# R: W/ A# H$ ]: O
  2055. LDA <Text_Disable_Flag
    ' ?% l( V. y: k7 t+ X$ i6 w( d+ S
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    8 v  `$ ^  U7 E1 w2 [, z# _
  2057. STA <Text_Disable_Flag
    0 o& }" h: O* S* I( V
  2058. RTS
    * u, O8 r0 C) e8 k- E
  2059. 3 g" ?" K+ n2 F
  2060. ;==================================================
    . z& Y# V7 r- e1 [
  2061. Last_Item;上一项
    8 c9 y5 ]; c0 N$ g  y9 q
  2062. JSR Clear_Last_Track_Name
    0 b" ?6 j0 ]. D/ N7 }* V
  2063. JSR Disable_Text_Draw5 c2 W$ C) U& t4 B6 m, D
  2064. 9 K2 o5 s4 _8 R: J! c* _
  2065. LDA <Music_Item_Cur; n9 T3 @4 `, f3 E- v" y
  2066. STA <Music_Item_Last
    1 e- j7 S. u5 \8 O, P# D
  2067. 3 n/ d% U5 p! e$ A& f
  2068. JSR Get_Last_Page_Start_Index
    " u7 D/ K7 B$ z: _  B+ n  @8 H! E

  2069. : O2 ~8 i  j+ Z) j) w) P* i2 f
  2070. LDA #$00
    1 Z3 O2 G0 ~4 q" X
  2071. STA Data_Buf
    1 Y! G% z  n# _- m$ j  ~
  2072.   J9 X6 d9 [2 l
  2073. LDA <Page_Last) t9 i# s" S3 x) ^
  2074. CMP <Music_Item_Cur8 Z' `, g3 ~( z" d1 D2 q
  2075. BNE Last_Item_Begin8 G8 f' v( _7 ?3 k$ T

  2076. / R; ]8 {2 l' M$ v. h& u; @
  2077. LDA #$011 s8 M& Q6 h# L
  2078. STA Data_Buf
    + }3 i: V2 ?/ V; o& W% U- z* X
  2079. Last_Item_Begin
    & y% X6 V- P" G7 `" f# |+ G7 i5 ]' c
  2080. LDA <Music_Item_Cur. r$ F) J% {  H7 P8 d
  2081. BNE Last_Item_Set
    1 L# x: @6 v- E! }. U
  2082. LDA #ITEM_MAX_INDEX + 15 f- A$ e; |5 b: v
  2083. STA <Music_Item_Cur  p4 u, [: l! f( }+ L" d8 F+ T" c5 v
  2084. 4 D6 ?. d# Y' g2 w
  2085. Last_Item_Set7 S1 G' P' E% J8 G5 C9 U7 y
  2086. DEC <Music_Item_Cur/ U% z! z, u6 A
  2087. LDA <Music_Item_Cur" g) B1 |1 q) I/ T$ [: ^4 `
  2088. JSR Reset_Current_Music1 p2 z5 R8 n! d* x9 J9 f- p* g
  2089. % c* C4 k1 O9 ]$ w3 a# |7 m- Y
  2090. Last_Item_Play1 l3 E2 p+ _- R, l0 W& D% D
  2091. LDA Data_Buf9 e6 B# {* n2 G0 l- h
  2092. BEQ Last_Item_End
    * L0 I. l5 c0 o' Y( L
  2093. JSR Show_Page_Text& \2 w5 D6 w! u3 r; {- B
  2094. Last_Item_End& h5 P9 S/ L. X# v* t- T/ g
  2095. RTS% M2 J. d0 Q; y3 ?
  2096. - h& y5 m( y9 g6 w! H& z$ A2 U
  2097. ;==================================================2 y9 o/ `) w. z1 _: ?# F0 X; e# J  ^
  2098. Next_Item;下一项
    ' L& {/ ~* `2 c7 z
  2099. JSR Clear_Last_Track_Name7 A$ |( K' S6 I
  2100. JSR Disable_Text_Draw
    5 J  C5 F& |3 y4 k! O
  2101. 6 k# W. z4 P* P2 w8 D
  2102. LDA <Music_Item_Cur
    . k5 ^/ ]3 o( k% k' E2 E0 |
  2103. STA <Music_Item_Last/ \2 `+ Q$ L, S( _- s$ K% p0 S

  2104. , Z7 M9 ?& e- g5 d) }1 O1 ?
  2105. JSR Get_Last_Page_Start_Index
    $ p+ k# ?6 {+ G) w" d7 R
  2106. 6 _+ `1 G9 j7 j  v
  2107. LDA #$00, }" ]: y9 \4 ?. L' b6 B
  2108. STA Data_Buf
    6 F  _) X* w9 g4 z  [
  2109. 4 y; p. `* O: ^; x+ y+ y. }, T9 L
  2110. LDA <Page_Last+ |( s+ k8 u( m! D# }  c
  2111. CLC
    " h# O+ A8 S8 |5 C4 T0 F5 z
  2112. ADC <Page_Last_Cnt: A4 G6 f+ L0 S3 Z$ ?
  2113. SEC
    ; A$ q; J6 v0 _! {0 P
  2114. SBC #$01% h" Y# f; a' U; n& x
  2115. CMP <Music_Item_Cur
      E, B$ G& x  v5 c
  2116. BNE Next_Item_Begin. H% M% i) Y: I4 ]% @( Z
  2117. ( ~% ~; \: H: H2 h4 O" {$ z
  2118. LDA #$01! w) a* ]! c5 o7 b4 O+ _
  2119. STA Data_Buf. m& J* y+ \  [: d% `
  2120. Next_Item_Begin! R; W9 K- B( h3 k
  2121. LDA <Music_Item_Cur6 G3 X* j$ z6 f! e
  2122. CMP #ITEM_MAX_INDEX0 l# k" K% Y8 n; z
  2123. BCC Next_Item_Set3 U; Q  i. a, l4 o
  2124. LDA #$FF
    3 w; d6 i- p8 ]" H/ t/ E
  2125. STA <Music_Item_Cur
    + ~8 W8 z6 [7 L9 G8 A, }
  2126. Next_Item_Set6 z% ]5 F% N! c$ _- o0 J
  2127. INC <Music_Item_Cur/ Z  @( Q: [2 \* m# O8 ~
  2128. LDA <Music_Item_Cur, P- H9 V$ h$ l
  2129. LDA <Music_Item_Cur
    & a% Y5 p* a8 y. a1 @
  2130. JSR Reset_Current_Music
    7 Q& u/ T) E5 s; P6 m
  2131. Next_Item_Play0 z- U2 W6 G0 p  K  {% M% Z% Z
  2132. LDA Data_Buf0 d) o2 K6 N) ~7 E# g
  2133. BEQ Next_Item_End+ g9 ^+ w/ r# s) x' t; P
  2134. JSR Show_Page_Text& h6 V. T* U6 O: a; E8 N8 Q0 V
  2135. Next_Item_End
    . ^% @* `, x/ m! i! |9 D* e
  2136. RTS
    , \  {6 v% G( l; i% t2 w: ~9 {
  2137. / {4 [# M/ ?7 D/ C" n1 K' Y
  2138. ;==================================================5 S- Q) q1 {+ \9 i
  2139. Last_Page;上一页
    - j/ {3 a6 O* K  Q6 T" U# }
  2140. RTS6 y/ R7 i& @% m) y& A

  2141. + Y' h$ e% y# D/ S
  2142. ;==================================================% E7 f+ C2 Q. j; b; X" {3 J% ~0 {
  2143. Next_Page;下一页& x" `2 f0 w3 R$ p% q
  2144. LDA #PAGE_MAX_INDEX. r5 h8 m% n. X: G) ^+ g
  2145. CMP #$01
    $ L- O/ j, d3 b# K: f3 f
  2146. BEQ Next_Page_End5 j! n3 h. o8 q3 s  J) X' Y

  2147. 9 P9 Y7 Z6 p( q, [" U- n
  2148. LDA <Music_Item_Cur
    # L1 k' o2 J& B+ C
  2149. STA <Music_Item_Last7 N! ~  q) H0 M3 H1 L6 f$ Z
  2150. * |3 C/ y# G) D# F/ J% s
  2151. JSR Get_Last_Page_Start_Index$ L6 P9 }) M) d% ?

  2152. : d  I/ i1 R  o2 R
  2153. LDA <Page_Last_Index0 O2 t+ R  y5 v5 T% H, B! Z+ J
  2154. CMP #PAGE_MAX_INDEX
    8 ]* q% ?6 j/ r  \/ C# P% |
  2155. BCS Next_Page_In_End_Page6 ^7 X  T, B; N" Q: k
  2156. : B3 W! B$ I  \! T! P# c
  2157. Next_Page_Not_End_Page;不是在最后一页  g' G. \0 E" I: \" {1 a2 K6 y$ x# v1 y, d
  2158. LDA <Music_Item_Cur# i* b0 w/ e' }5 O: N! A
  2159. CLC
    , F8 C  [. z- F( n' l
  2160. ADC #PAGE_SIZE
    5 e7 B1 z8 P6 q0 i- J+ k# J+ |
  2161. CMP #ITEM_MAX_SIZE$ Z7 H2 w  C6 b) J
  2162. BCC Next_Page_Not_End_Page_Less: d) r# u! O+ d. N  ~
  2163. LDA <Music_Item_Cur
    + P( p# [1 |# }( U8 t
  2164. SEC
    + }8 Q& q# E0 n
  2165. SBC <Page_Last_Index) _) O2 Q) }+ S1 J/ I
  2166. CLC
    $ f  h' U& r/ W: h
  2167. ADC #PAGE_MAX_INDEX# r% w( N9 |  M( E, m
  2168. CMP #ITEM_MAX_SIZE
    . v3 p: y. t+ _
  2169. BCC Next_Page_Not_End_Page_Less
    & N+ k$ H/ H, W( t; F
  2170. LDA #ITEM_MAX_INDEX
    ( J$ v4 a7 x; b
  2171. Next_Page_Not_End_Page_Less+ ]; m( g2 G" F- \6 u  K( J
  2172. STA <Music_Item_Cur  G7 Y! m  ~$ e7 w4 }" ~
  2173. JMP Next_Page_Reset4 J$ C) R) L$ V- N

  2174. / J* Z2 w- l6 [
  2175. Next_Page_In_End_Page;在最后一页/ ]# R% w. J! o3 ~
  2176. LDA <Music_Item_Cur
    8 l# u+ O4 R+ e) ~
  2177. SEC
    - U  g4 m8 Q4 d; h8 ?
  2178. SBC <Page_Last_Index9 a, z& I2 t' j9 _5 i. m9 a
  2179. STA <Music_Item_Cur; E6 e/ M/ H3 e( [/ J
  2180. 8 f+ W5 Z  J% C
  2181. Next_Page_Reset
    6 w1 X+ [$ Z# K3 B' w
  2182. LDA <Music_Item_Cur( m! b4 A7 {: T& F4 ~
  2183. JSR Reset_Current_Music0 [) P' L& ]7 P" D
  2184. JSR Show_Page_Text
    + v7 M8 C, g* d6 J: {
  2185. Next_Page_End1 Y9 ?% ~- c* t4 _
  2186. RTS3 R; C# ]+ }: g$ z- n6 p, A
  2187. 7 k* j( R% F; H# t
  2188. ;==================================================9 ~0 h) ^/ x" ~( Y- o/ c; C1 W
  2189. Disable_Text_Draw;禁用音乐条刷新
    ) p; ]+ ^9 g( |2 S) M
  2190. LDA <Text_Disable_Flag
    . L! Y5 m* ^& o5 e6 r7 b( D- S5 n( `
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    6 x( ]6 F7 l& D  |" s, p$ j
  2192. STA <Text_Disable_Flag
      d& f) w3 c+ k
  2193. RTS
    : U( [0 {" h$ J6 A! r0 o- g! l) J
  2194. ; Q9 y0 z1 p( B4 B/ s2 e7 A. g
  2195. ;==================================================
    5 _. p5 W- k5 V. I
  2196. Clear_Last_Track_Name;清除上次曲目名
    ! f' E+ F% X6 ]4 ]
  2197. LDX <Music_Item_Cur; H: l& Q: X2 ?# ^
  2198. LDA <Music_Cur,X# K& A/ e6 e, V! s
  2199. .IF Track_Name_Pos$ \( X1 m8 P& T% H; o- W8 [& G
  2200. JSR Clear_Track_Info
    6 Q% m- ]* x# P+ V+ j$ d
  2201. .ENDIF0 W% Q5 U1 U' _3 ~- \
  2202. RTS
    0 Z' J9 [. M5 c

  2203. ) {; e6 J& V/ A- a- a2 s2 |) I
  2204. ;==================================================$ ^4 X( q6 X6 l4 O, C
  2205. Reset_Current_Music;重设当前曲目( Y& w" F# E% n* X6 `5 C6 b( s

  2206. 2 P0 D8 H: m8 f/ ?7 d
  2207. ;写入当前总曲目* B$ ^& H+ f# u) F
  2208. JSR Set_Sound_Total1 V! @( l" Q$ w7 ]1 V& \+ u# ^) F5 H
  2209. LDX <Music_Item_Cur
    + L( A' n% _/ ^5 ?1 `# T6 D
  2210. / P% \" C" L& O, j% V
  2211. LDA #$00
    ' ?" m% U3 \0 J3 [! t6 e
  2212. STA <Music_Last
    ! ?% M6 k( D+ n

  2213. ) d9 v3 F2 M# `( ]
  2214. JSR Sound_Reset_Proc
    # q2 S( D+ q. w$ d
  2215. JSR Music_Show4 C* @, O7 @8 _" P4 l
  2216. RTS
    / ]5 ?( C( D% M5 k. i7 }: J

  2217. : d9 [: E- `* }& T  w: i
  2218. ;==================================================/ T1 C2 W' @7 F! B, ]$ y
  2219. Music_Song_Stop;音乐停止
    ! S+ O. f, ~: Y6 L6 e$ ]! M
  2220. LDA #$01
    . V, Y* |" K- G
  2221. STA <Music_Stop_State/ G) s( m& j8 g" x& x. {1 t5 N, c
  2222. JSR Music_Bar_ReSet
    ) z9 Z4 ]; D- H7 Q7 O- a6 O
  2223. JSR Time_ReSet3 [8 f6 j2 E7 S+ Q" S
  2224. JSR Sound_Data_Clear/ Z3 n' c5 X, l& `
  2225. JSR Music_State_Show3 V! x& J/ L# v: v8 I# q; u% N
  2226. RTS
      Q3 L4 F# H' b
  2227. 4 a1 B4 i# N8 B: g6 M
  2228. ;==================================================
    3 k* Y4 ~7 ~2 `- X/ z  a
  2229. Music_Song_Play;音乐播放, @$ J& u& P8 V3 K
  2230. LDA #$00' o7 {+ L$ ~7 v- H5 Q. A, ]- d
  2231. STA <Music_Stop_State- e1 u3 U1 X- u
  2232. LDX <Music_Item_Cur7 [/ y( ], _- ^9 Q; K1 d2 }
  2233. LDA <Music_Cur,X
    2 q9 a$ ]8 \6 J2 W
  2234. JSR Sound_Init_Proc0 h7 J; `; j1 M/ q0 L) j, x' H" a
  2235. RTS
    : i. U( }; P) c% b- U) m/ U" J

  2236. 1 K( `$ ?, g; C% _' _
  2237. ;==================================================
    & [1 i; H7 z7 A3 j
  2238. Music_Song_Last_10;上10曲
    $ J& a/ V0 d/ ]7 T! U+ I  v& U
  2239. JSR Clear_Last_Track_Name8 d. C. V$ X' ?8 g
  2240. JSR Disable_Text_Draw: n8 ]+ @! ?& C  x5 |8 j% F* }
  2241. LDX <Music_Item_Cur
    5 b  Z1 ^- O4 Q  {; h! Q0 e
  2242. JSR Set_Sound_Total
      O( ]2 |9 u( B/ u5 l3 a
  2243. LDA <Music_Cur,X
    6 p0 V& n' h. x: x/ Z: I, [' X
  2244. SEC
    5 L  u5 o$ U" t. A' F9 _8 M
  2245. SBC #10
    2 i, z+ Y1 _$ U2 W# o' M7 [1 @% q
  2246. BCS Music_Song_Last_10_Set- C) i& z0 ^+ i
  2247. LDA #$009 I; ?0 y6 c2 I8 U2 g
  2248. Music_Song_Last_10_Set* ~: r  L* e+ B* J) I3 f  r
  2249. STA <Music_Cur,X
    ' A$ y0 f- y& H6 y, M( Z. X+ T% V1 a
  2250. JSR Sound_Reset_Proc
    4 P- R6 s- m/ I0 l- Q" A. \
  2251. JSR Music_Show
    $ v9 T: D! P& E7 l- h$ D% h2 S- R
  2252. Music_Song_Last_10_End
    9 J. k7 y' Z6 n% |$ y6 ^& v
  2253. RTS
    % N/ x2 j; w8 G- _2 |& T+ V# ?. W8 d
  2254. 5 L. ~8 x2 u1 T/ e
  2255. ;==================================================% U5 A# h# ~& I* Z' [9 f3 n. e, K
  2256. Music_Song_Next_10;下10曲2 C7 B5 E* I* G/ b1 z# Q1 M3 z" F
  2257. JSR Clear_Last_Track_Name
    ; p2 c# h" K1 M9 E6 T$ a
  2258. JSR Disable_Text_Draw% H6 d! f9 v! J- D+ q
  2259. LDX <Music_Item_Cur
    4 O, f& A& X6 `3 R; s
  2260. JSR Set_Sound_Total
    / y, }# d8 L% p/ }+ R
  2261. LDA <Music_Cur,X& Z+ s7 F; X8 h  B* ^% X# R4 ]9 z" p
  2262. CLC& y3 `# F0 N, ?7 D
  2263. ADC #10
    ' }/ q# c+ }. W! u
  2264. CMP Music_Total
    2 I) K( L3 M  \, b" q
  2265. BCC Music_Song_Next_10_Set
    8 S$ f7 j7 U: N0 a: d
  2266. LDA Music_Total
    0 I7 z& P( _# E, ]
  2267. Music_Song_Next_10_Set
    1 B3 f- _0 i9 E% O
  2268. STA <Music_Cur,X
    5 o+ O9 T; i) K  X( i4 L8 V. j- C0 D
  2269. JSR Sound_Reset_Proc
    5 f) X+ S) n; A, `1 ?' K  C
  2270. JSR Music_Show$ q. Y4 Y# s3 B2 K
  2271. Music_Song_Next_10_End* k' D. M4 _3 `& _* Y( E; O+ m! s
  2272. RTS; I% V* W7 C" \) o
  2273. # F& m3 S. ^! c- s' @  T9 p
  2274. ;==================================================
    ( R' a: q/ r2 G( j
  2275. Music_Song_Last;上一曲! Y+ @7 M2 `9 ^4 r
  2276. JSR Clear_Last_Track_Name7 O- ?, t- x" Q# Y; t
  2277. JSR Disable_Text_Draw' ]1 t! S! W5 s: ^- Y- W( Z
  2278. LDX <Music_Item_Cur' g+ M$ k) Q/ J9 ?, C& L7 s
  2279. JSR Set_Sound_Total
    # h: H& g  p7 \9 j
  2280. LDA <Music_Cur,X1 f2 A/ ~5 D$ ~9 f) f- A* m3 G
  2281. BEQ Music_Song_Last_Set4 V) B3 S$ I3 ^; ~
  2282. DEC <Music_Cur,X8 ^5 V7 G3 d1 T% C: ^8 G# L
  2283. Music_Song_Last_Set; ^. ~  m/ o, T: ]6 Q
  2284. JSR Sound_Reset_Proc" g! B$ r; u' H) ]0 j* Q5 s! [
  2285. JSR Music_Show! \8 ]7 c8 U) O
  2286. Music_Song_Last_End
    4 A# z; I: b3 b/ S6 v' O: r& e$ D' x9 n
  2287. RTS* S# L0 J' a' l, u

  2288. $ h; e9 Y/ v$ A$ X- r4 A  b/ D' ~
  2289. ;==================================================" {3 y) {# ^' L$ |, Q; T& R
  2290. Music_Song_Next;下一曲
    7 _! K6 L9 _3 E# T& m2 K2 }
  2291. JSR Clear_Last_Track_Name/ f: g6 ^1 U# J1 [, j- y# b
  2292. JSR Disable_Text_Draw" N5 H0 a5 E3 H( E" {
  2293. LDX <Music_Item_Cur# N! O+ r: a* g1 ~$ R
  2294. JSR Set_Sound_Total
    ( S  ^5 c6 L/ g* u2 F7 G0 y
  2295. LDA <Music_Cur,X5 X/ b0 t, B0 c" [' _" q
  2296. CMP Music_Total
    8 O# w- v8 J2 o! j% P$ Y
  2297. BCS Music_Song_Next_Set2 }9 W& U  R' m4 X( h7 t
  2298. INC <Music_Cur,X
    4 E. N5 N* l9 O2 t- y3 G8 Q
  2299. Music_Song_Next_Set/ U. g. w/ L& t" [6 A9 j, F
  2300. JSR Sound_Reset_Proc
    * Y" t& o. B2 ]8 R, `
  2301. JSR Music_Show
      F9 q$ y; O' T: H3 O, t3 Q
  2302. Music_Song_Next_End; k* ]$ W/ N" ~
  2303. RTS: Q. E5 K. A6 w' ]9 \' F7 b
  2304. " g  Z1 r# W$ k! X: c8 R% L3 u
  2305. ;==================================================; k* _4 a( ?2 R  C
  2306. Change_Select_Item;改变当前选择项
    ! y' b3 h* ?% m. ]# o, z
  2307. ;--------------------------------------------------7 M4 G1 [. }/ s* c, E: w" M, t
  2308. Change_Select_Stop_Play_Item;停止/播放; V* Z& r/ h. p. N8 t. j
  2309. LDA <Key_Once
    , C4 Y" D2 _6 R. s8 j: l0 E7 r
  2310. CMP #$10  `" F. c( T  H; I8 _! d5 T
  2311. BNE Change_Select_Last_Item
    ! w8 ^: X7 n# |& C3 u: O8 G/ L4 C
  2312. LDA <Music_Stop_State
    ! R. Q3 p! _9 i4 \7 Y4 V( [1 V
  2313. BNE Change_Select_Play6 z/ y6 n# U& y4 P
  2314. JSR Music_Song_Stop# ^( j, I, O+ x  D6 w: w
  2315. LDA <Music_Stop_State
    , M0 ^8 \5 q; C2 S& _7 B
  2316. RTS
    / w: v( l6 U6 P) U
  2317. ) }: i+ K+ W3 B
  2318. Change_Select_Play  K4 |9 ^' p3 K5 b* w
  2319. JSR Music_Song_Play
    1 A8 y5 G! x% l5 C) x
  2320. RTS
    " O/ r4 U- t- ]& ]
  2321. - I* @8 G9 D' ~, W
  2322. ;--------------------------------------------------+ Q" [& [2 x9 M; u( X3 z  [
  2323. Change_Select_Last_Item;上一个专辑
    2 E! `# h  Z# h! D; C
  2324. LDA <Text_Disable_Flag
    1 o7 W3 D! c8 {, y* Z; x
  2325. AND #TEXT_DISABLE_ITEM
    6 u# T; I$ P2 d- D% o
  2326. BNE Change_Select_Item_End6 z. B( J  f6 G4 @2 K
  2327. LDA <Key_Once
    ' [: y* F! r% r' O% Z
  2328. CMP #$08. y: M/ j- n* b2 m1 k' S5 w
  2329. BNE Change_Select_Next_Item
    & D% H  `: y( X2 m
  2330. JSR Last_Item- M2 j, x/ e, d$ d1 `' a
  2331. ;--------------------------------------------------- ~( s' j( q' y7 b- z! z; }& i& I
  2332. Change_Select_Next_Item;下一个专辑
      f+ \6 F. U. @, m! I1 D
  2333. LDA <Key_Once
    0 b6 V5 S  T# @. [. {" F- E
  2334. CMP #$04! O% j" Y, T7 h6 s& z
  2335. BNE Change_Select_Last_10! \& [% e7 P% c6 A- [
  2336. JSR Next_Item- ~& \2 m3 a8 M! c- x
  2337. LDA <Music_Item_Cur
    9 [9 g- ~6 ^. o( G
  2338. JSR Get_Page_Start_Index
    . E& I/ k) g! q  Z- i
  2339. ;--------------------------------------------------
    ! \* s, D  [* x" A" h
  2340. Change_Select_Last_10;前10曲
    4 \6 [" I4 h, L# M7 V
  2341. LDA <Key_Once
    % u4 S2 U( |/ _
  2342. CMP #$402 t  i/ S/ R7 G+ r. B
  2343. BNE Change_Select_Next_105 y- F4 |+ M+ a) e9 m2 e! A$ `
  2344. JSR Music_Song_Last_10
    + B7 X* ]+ ]: }8 \
  2345. ;--------------------------------------------------) k" e; j5 `& X
  2346. Change_Select_Next_10;后10曲
    & p8 }0 H( {% {; O& v8 d
  2347. LDA <Key_Once
    : H  L; J0 R1 A# M  a( \
  2348. CMP #$80
      c( H/ {* J5 o7 v) R
  2349. BNE Change_Select_Last
    - Q) t8 v3 _7 B
  2350. JSR Music_Song_Next_10: Y% G7 g5 i- O0 V
  2351. ;--------------------------------------------------
    ) s6 O) Q- C, }2 T3 Y
  2352. Change_Select_Last;上一曲+ \7 _. Y  \) e6 J$ d' M4 T7 L
  2353. LDA <Key_Once
      X% S3 o. |. L3 U7 ~# R5 J
  2354. CMP #$02
    2 `+ R. ^5 W# w* ]. x5 r+ g
  2355. BNE Change_Select_Next9 s8 p3 |9 V6 W" l, x  _
  2356. JSR Music_Song_Last  }4 s/ i) s" }& h8 E# B! c& ^
  2357. ;--------------------------------------------------4 s# z. \' M7 m2 a+ i+ b0 ~
  2358. Change_Select_Next;下一曲
    4 u5 G- z' x( L. F! J- w
  2359. LDA <Key_Once
    ! c( W" b2 M! e5 j7 `4 e, O: S4 B
  2360. CMP #$01
    9 ^/ O. O. @  L5 o
  2361. BNE Change_Page_Next3 b6 N) J$ D2 d7 U9 N
  2362. JSR Music_Song_Next" Q; V6 f6 Z0 r  \7 a7 @
  2363. ;--------------------------------------------------
    6 E# `$ v' z. X5 y7 `8 p1 y
  2364. Change_Page_Next;下一页  r! ?. g( i/ B; ^5 _. S
  2365. LDA <Key_Once
    7 z! l, h! g/ c* ~0 x9 W& J
  2366. CMP #$20
      o/ r2 y' m, D8 i, p
  2367. BNE Change_Select_Item_End! f( z8 L, S5 P' B2 l1 O1 z/ y
  2368. JSR Next_Page# X1 z* `* Q) [9 `
  2369. ;--------------------------------------------------7 m, q# ~3 ]4 ]
  2370. Change_Select_Item_End
    ; x* m, M( |! z, n* [, y1 K
  2371. RTS6 {# h. b: g+ m5 c3 q- i

  2372. # F6 d/ c3 M2 r- [$ M1 Y
  2373. ;==================================================6 n: u9 C. i  O/ Q
  2374. Show_Arrow;显示箭头光标
    , Z4 q0 A: Q: r2 X
  2375. LDA <Music_Item_Cur! G# g  C, _; y+ p2 \
  2376. JSR Get_Page_Start_Index7 l, b+ V/ ~% t+ F
  2377. LDA #$00/ s) W1 s! ?0 v" ?! \' y
  2378. STA PPU_OAM_ADDR
    ! `$ r; s7 l, V
  2379. LDA <Music_Item_Cur
    4 b, I; [! C) @( k4 c
  2380. SEC$ L- l+ V/ G* R# K
  2381. SBC <Data_Buf
    3 f% V. P6 N3 i* V- M8 s4 k4 \. F
  2382. ASL A, h; T; Q/ I1 e1 o2 G4 y
  2383. ASL A
    7 J9 _% j; Q3 f' W' A
  2384. ASL A
    * B+ ^, O  D& h% J
  2385. ASL A  A' ?) s1 m$ [* y
  2386. CLC/ T& R5 b) W/ z3 M' d2 o$ m/ E
  2387. ADC #ARROW_Y_OFFSET+ ~' Q. X9 B1 g( V& K, g* g
  2388. STA OAM_TEMP_ADDR + $002 {8 b' d4 s% k& R  g# N& `
  2389. ;STA PPU_OAM_DATA
    $ @$ h. k% L  I. ]9 ~" c
  2390. LDA #$1F/ y& `, r4 s$ d
  2391. STA OAM_TEMP_ADDR + $01$ N% h. R+ t& F  F
  2392. ;STA PPU_OAM_DATA
    # s: X3 F  d- v. \8 o
  2393. LDA #$00
    - C' M) X! U  d, F* k7 ?8 |
  2394. STA OAM_TEMP_ADDR + $029 q; G% I# [' v2 x6 a$ j" u
  2395. ;STA PPU_OAM_DATA" Z5 P" T+ |5 y8 j# S
  2396. LDA #ARROW_X_OFFSET7 }# ?, ^1 D& h& M3 j
  2397. STA OAM_TEMP_ADDR + $03, Y: ^( }& d$ ^0 _; Y% z/ \4 E( ~
  2398. ;STA PPU_OAM_DATA
    , E+ H$ m( w) y7 [+ v% |
  2399. RTS1 w7 {8 E% A$ y. Q: }: @- m

  2400. & |6 Q- s( Q& @" R3 B) c  e# z/ I: a
  2401. ;--------------------------------------------------
    3 ]5 \" y- P/ f! J+ C, z3 W: S
  2402. ;命名表数据  ]: Z+ o% h6 r6 y% r5 P
  2403. Palette_Attributes
    0 n9 K# x6 V6 f# V+ e( U. J
  2404. .IF SOUND_BAR_SHOW_ENABLE$ K: w) s1 ?. ?
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    : I* a5 [2 _7 ^1 \" @- s; U- F" D
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$557 u$ e! J9 v" f5 s6 H$ |" p  B
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75, \) l- ]+ Z/ t8 d: s3 ?9 r
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    , w" w! a; d7 I* L+ a; r" j
  2409. .ELSE
      F, a8 s; c( l$ b/ k, S
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$552 y9 x( a7 f& z5 h
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
      o3 ^" q  K, s. V% l+ \5 o
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    - ~; a' |% |/ ]& N% q
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    ! Y/ v; l8 B9 Z$ g. J1 Q2 Y
  2414. .ENDIF/ C. V5 f% Y: l( w8 F: F7 z
  2415. - ?9 J( M9 l$ x, ~7 D1 n) ~
  2416. ;--------------------------------------------------
    , t7 C* \+ v/ g3 a# Q" r$ @
  2417. ;调色板数据
      C% q3 A2 h; c6 L# ?7 K
  2418. Palette_Data
    + T2 \* U7 u! m# \; Y
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    # ?% X* t; \" t
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    ! `9 n# ~! V( \# f8 D
  2421. ) a/ c* K% P, D9 C
  2422. ;--------------------------------------------------
    9 F. v9 t- Y! l6 ~" m) n8 b+ r) @  N
  2423. Static_Text_Data
    ( r0 w  s  |! u7 c
  2424. .WORD Static_Text_Caption_Data! H% w/ k9 b& X; C* l* r9 S0 c: p
  2425. .WORD Static_Text_Author_Data" j# [* x" C9 G( }6 ?, C
  2426. .WORD Static_Text_Date_Data
    ( D8 j9 c7 W( p# C7 _* F6 ]: a: T
  2427. Static_Text_Data_End" i" e' Y4 U4 k/ W

  2428. ( ^7 p( ]- J) d! O4 w
  2429. ;--------------------------------------------------
    ) d' v* t5 a* ?$ M( K* l/ C
  2430. Static_Text_Pos
    0 o% n# n1 x  w- M/ L( X" |
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)5 j& ]! g; N: l& ]/ ~
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)5 W2 _, j: c6 s( v
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)9 `% ~% m: \# ]7 K2 o1 L- m
  2434. Static_Text_Pos_End5 b" u+ J' p) z: Y2 A# M. D0 i  b

  2435. . c' |6 B: _' ?! f; H6 i; k" ]
  2436. ;--------------------------------------------------
    3 U5 O) i; I+ a1 c8 Y7 c5 t
  2437. Music_State_Stop
    ( F' H1 [/ p6 H/ E8 `
  2438. .IF SOUND_BAR_SHOW_ENABLE! l9 z8 T7 p/ F' S
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$000 ]1 w$ X! W, y. o/ d; y/ R' [
  2440. ELSE
    . c3 ]. S/ Q! D
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    - u, x0 P& {  y) l" j$ ?
  2442. .ENDIF+ ]; ]+ ~3 R& c
  2443. Music_State_Play
    5 G, w5 h* x. K# A  Z/ L8 M& ]5 ~3 A
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00# w/ ]( T5 n; h9 W" Y
  2445.   Q0 M6 v+ D! Q, I
  2446. ;--------------------------------------------------  C' K% H  {- w  s  x; i
  2447. Sound_Bar_Text_Data;声音类型文本
    , ~& m6 F7 ~- ?' U1 O
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    5 H+ c  r1 C* \% A
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    2 i! r" ^8 U/ {3 U
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    % j% ]+ A: G: ^- ?& s3 S5 [8 l
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    3 l8 o7 \6 Y' z4 _
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    % ~8 ?3 S( C# Q1 P; W9 K- h  P

  2453. . u+ i& O1 {5 k6 t" ?+ T
  2454. .IF Track_Name_Pos
    ! J% E+ a- ?7 r- E' Y% W2 K* C

  2455. 2 G! b, p: d- U) _5 a  |. o) e# v, E
  2456. ;--------------------------------------------------* y3 C0 `. w9 W' {  k" h
  2457. Track_Name_Addr_00;曲目名地址索引
    " h" S$ K0 R$ ^$ B6 U2 p
  2458. .WORD Trackr_00_01, O, Z9 y# g" r) d" K4 g2 t7 |

  2459. " i  V$ G" K  f, a! ?
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    / _- z" h# |8 \8 K, J4 W$ a
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    + i  C% v# |/ }& u& Q! n6 Y
  2462. 8 R0 i9 x# f6 p
  2463. ;--------------------------------------------------
    % j: N; o+ G: k1 x
  2464. Track_Name_Addr_01;曲目名地址索引
    $ S) I# R  ~8 B
  2465. .WORD Trackr_01_018 @/ k9 X; @' s! U
  2466. % o, @- f# F: k0 d7 u
  2467. ;==================================================
    ! T* ^. D9 a" i  B. f
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1". A+ n( F9 z7 L! {
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2". E5 O, o0 d, B- {# ?" _3 [8 d$ \
  2470. 3 g+ _! ~& h1 o4 O4 h1 H1 `
  2471. ;==================================================
    # t7 s. t: E& E3 O" x. y' o+ ^
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引7 }  j( l7 C5 Q6 }9 s
  2473. .WORD Track_Name_Addr_00
    & n3 d: S6 r7 p# E. c4 E5 `& F3 s
  2474. .WORD Track_Name_Addr_01
    % I! a. k" Q; d: L( d# i! T- u5 R
  2475. .WORD Track_Name_Addr_018 i7 m' f+ J, H9 V: Z8 N/ L: a

  2476. ( t! `- A4 L! Q
  2477. .ENDIF! L5 N! T- h$ W% c

  2478. " H& ~3 p7 I1 {0 M
  2479. ;--------------------------------------------------
    1 f& Z4 |# a! X
  2480. Static_Text_Caption_Data;静态文本数据
    ( _; U4 ~4 P% {9 J
  2481. .DB 16
    ' r" a9 [' j3 A7 O! ~6 K
  2482. .DB "FC MUSIC 12 IN 1"
    - ^2 b1 H; Q; C& R" P- d
  2483. Static_Text_Author_Data
    2 M2 S7 S3 `  P, _. H9 G7 z
  2484. .DB 25
    ) c9 N( U, w/ D) D( L7 L7 H
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    3 ]: U* X. j; \7 A, K6 E# Q/ @/ d! P
  2486. Static_Text_Date_Data! y1 A3 W" `$ K# I' u) \- m
  2487. .DB 109 x1 @/ n: ^3 ~; L; |2 O: G
  2488. .DB "2023.07.23"# {* p! ?8 E. q# i

  2489. " J- U9 }6 D; L2 r
  2490. ;==================================================* b  f5 J" A; b
  2491. Music_Collection_Name               ;专辑名间接索引
    " O! `: Q: v5 P8 V, G6 h5 U9 D
  2492. .DW Music_Collection_Name_006 m+ n& i5 a+ @: j4 [
  2493. .DW Music_Collection_Name_01
    ! j* D* ^$ b  [6 q8 G
  2494. .DW Music_Collection_Name_02
    8 ~+ R2 l2 k) ?! D# L
  2495. .DW Music_Collection_Name_03
    * O  e# F# w8 F7 D4 b$ n% z
  2496. .DW Music_Collection_Name_04! V! k. S3 u& b; ]% S! O& O
  2497. .DW Music_Collection_Name_05
    0 o- F# u* [6 [, q: \, i
  2498. .DW Music_Collection_Name_06" l, ?: d6 i! S7 d# b) B
  2499. .DW Music_Collection_Name_07
    7 r* O2 N3 `4 d  }% M# U1 B- p
  2500. .DW Music_Collection_Name_08( g* S4 Y/ Y  w: `7 C
  2501. .DW Music_Collection_Name_09
    ; [/ @: _, {# v1 _% w
  2502. .DW Music_Collection_Name_10: a' U4 U) v; d+ C: V
  2503. .DW Music_Collection_Name_119 C- ^" P$ g8 z8 U5 b/ t
  2504. 7 j/ l& |7 M' G( W) E, ~9 y" X; v
  2505. ;==================================================
    - Z. e% R( s% O7 m* N2 [/ Z
  2506. Music_Collection_Name_00            ;专辑名文本数据/ q- R0 D; O# J# @) v$ T
  2507. .DB 11,"1.RAF WORLD"+ B- H: }& S* u: ^' C/ n; @) ^
  2508. Music_Collection_Name_015 K2 b% s$ `' l, Q/ B, R" u% I
  2509. .DB 15,"2.FINAL MISSION"9 O3 r! s8 v) P; C' b# k2 a
  2510. Music_Collection_Name_02
    8 D) i+ [& f% S6 q: @: S& H
  2511. .DB 06,"3.KAGE", [$ F- m& h0 s
  2512. Music_Collection_Name_03& h6 Y" b1 t7 W1 n& e
  2513. .DB 16,"4.DOUBLE DRAGON"/ b: A: B, e4 V& z
  2514. Music_Collection_Name_04* `' F/ u5 p! {% g0 k
  2515. .DB 17,"5.DOUBLE DRAGON 2". f8 o% D* w! _# c; S) b
  2516. Music_Collection_Name_051 M+ O/ |% g  ]! F
  2517. .DB 17,"6.DOUBLE DRAGON 3"8 _8 o- H: f# r% r/ G/ o5 N( M
  2518. Music_Collection_Name_06
    ) A4 Y. F# O' T6 V) Y" j4 m% G
  2519. .DB 09,"7.ROCKMAN"
    - l* `  o: a- b( c0 V4 \3 C3 P+ h6 N
  2520. Music_Collection_Name_07
    ) Q4 O- T  W$ H7 c9 P8 _
  2521. .DB 12,"8.ROCKMAN 2"
    : D+ P9 ~& {+ F( h5 g; A7 Y
  2522. Music_Collection_Name_08
    8 z5 Y, I$ Q3 ]
  2523. .DB 12,"9.ROCKMAN 3"+ {' B4 `9 C/ r9 E9 @  J: G( @
  2524. Music_Collection_Name_09
    % A3 ~: z" e$ \7 l
  2525. .DB 12,"10.ROCKMAN 4"
    $ h# {7 z% g1 L7 S' n! p6 M/ y
  2526. Music_Collection_Name_100 v$ g- Z! ]# a& G) ^- Q7 ?
  2527. .DB 12,"11.ROCKMAN 5"
    . p9 W4 _% a7 y2 u# h$ U' Z( [; G' z, J
  2528. Music_Collection_Name_112 |8 F0 p. ^1 A6 L' B
  2529. .DB 12,"12.ROCKMAN 6"' T2 i3 R- I$ y6 H  s" W0 L
  2530. , d" M/ B2 B  D+ Y
  2531. ;==================================================
    8 I2 W2 k+ F4 D! u( u2 Q+ T$ p
  2532. Track_Name_Addr_Flag                ;显示曲目名标记& L* C( C2 J$ k. w  k/ O
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0# K: ^" Z$ T' N. a, L7 Y9 e

  2534. ! Y$ A7 G/ Z5 N" Y; j
  2535. ;==================================================- G2 x+ v) @  ~4 N2 J
  2536. Item_Pos_Data                         ;光标箭头位置8 K# i5 X5 v* n: V0 V3 f8 c# w3 ^
  2537. .WORD ITEM_SHOW_POS% [. e7 k. I! G  J1 y* b) o5 f: i
  2538. .WORD ITEM_SHOW_POS + $00405 e  t* K. x; I  m0 e- S
  2539. .WORD ITEM_SHOW_POS + $0080
    ! x3 b- l7 c9 @1 B' P( }6 M
  2540. .WORD ITEM_SHOW_POS + $00C0: `; @! `" w% t$ l' l$ Z  L
  2541. .WORD ITEM_SHOW_POS + $0100
    / s) O2 F6 E0 j# C) b' t5 l9 t. E
  2542. .WORD ITEM_SHOW_POS + $0140
    2 F" j- e( j$ G6 Q  y( C) Z9 P
  2543. / X' i1 V9 X9 c; j
  2544. ;==================================================
    ) I' C7 c. D2 z. R6 L
  2545. Sound_Init_Port                 ;音乐初始化入口地址, u+ R7 N4 {. w0 j
  2546. .DW $BFC81 t" V  Y: i7 z/ t* [5 c
  2547. .DW $D7F04 a" B, t/ ]/ }
  2548. .DW $9FC0
    " `5 E. V! s6 C; Q: h
  2549. .DW $BF70/ r1 n5 H7 g" B% O' L% O! X
  2550. .DW $80037 i4 [4 S. X0 ?
  2551. .DW $BF30
    ' s3 W) ^& N2 s
  2552. .DW $9003) k2 p6 t5 a1 N- n3 l, ]7 d0 o
  2553. .DW $8003# p" ]2 {# M, T2 {+ B
  2554. .DW $8003
    0 Y+ _, W  V  T0 f/ j* O8 l
  2555. .DW $8003& [: n% J* B/ \* v# Y1 c; N5 v8 D
  2556. .DW $80030 N" U- v2 A; p8 t1 J# v, A2 f6 d
  2557. .DW $8003' B, |9 B8 T7 @  k' y

  2558. 0 I# I+ B! }9 e& O* w" D- L5 \& ]
  2559. ;==================================================
    2 w4 D/ \# g& U7 X3 C2 e  l9 p% l
  2560. Sound_Play_Port                   ;音乐播放入口地址
    7 @' c( e" x* f/ M
  2561. .DW $80002 I. `2 M+ Q) ]% @6 J$ L8 ]0 x
  2562. .DW $8001
    9 y7 ?/ R% ~. q7 |" O' G/ L: z
  2563. .DW $A000
    0 }" N( M9 }, q0 o5 W7 U# O. }5 q
  2564. .DW $8003
    7 F" f; |$ ], \3 ]
  2565. .DW $80002 c) ?2 L4 q. q0 K
  2566. .DW $8003
    7 ~. U7 s( f; w8 Z& @5 X: A
  2567. .DW $9000
    " U1 m0 r6 e. R& d5 ]* y* K" ^9 ?
  2568. .DW $8000
    3 P" u9 j) i' ^. q
  2569. .DW $80008 d6 z4 T  r+ k
  2570. .DW $8000, \' T; K7 Q4 ~7 D
  2571. .DW $8000; v5 u4 X# _! t9 n! O* T
  2572. .DW $80006 R" }9 V6 `4 g0 d& u

  2573. 9 [% x. Z$ p/ f* b8 I. P
  2574. ;==================================================
    " w  f' V$ p- [1 I7 y3 z
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    ' {4 C, J) f: d, d$ }9 ?
  2576. .DW $0000  K/ n& b. o3 w3 A
  2577. .DW $0000
    . ^* s/ g  t. i/ @
  2578. .DW $0000
    , s1 n/ n/ {# ?, W. S( T4 I9 R" P
  2579. .DW $00003 f1 M$ K  M6 D$ l
  2580. .DW $0000* s. }) w# Q  d+ s" b9 m
  2581. .DW $0000' V: A: b& }( b/ G2 J' q7 u
  2582. .DW $0000, _% O" v  T7 a% M! c! q. R
  2583. .DW $0000
    4 x3 e' x: x  j4 T# c; m/ T5 W" A6 ^
  2584. .DW $0000
    ' m! ]4 Q8 |1 ?* g: `0 ?
  2585. .DW $00009 n$ ]7 p6 \- P5 ^
  2586. .DW $00007 r2 @+ {" i$ q) k* _/ q  @% g% a9 k
  2587. .DW $0000
    : h# F( Z. V( U( Q" \* J

  2588. ) L" e# ^- U: d" w% U
  2589. ;==================================================
    . ~. Y, M5 [+ y3 l1 k1 g) @  n; e. z  k
  2590. Sound_Total_Port                          ;曲目总数5 H2 y; f) J: }' k/ R
  2591. .DB 38
    - A  i+ a% V, [- F5 T- F
  2592. .DB 33
    $ C( @+ o0 b. s' E+ P
  2593. .DB 49
    9 y& r  B4 |3 T+ ^% v0 O/ e# C
  2594. .DB 41! Z3 ?" [7 Y, {. D" o* |
  2595. .DB 839 A- _$ x" o( Y3 F0 `. f6 a
  2596. .DB 70
    : Y- Q+ x1 w! U! z5 _/ }; r5 G' a
  2597. .DB 501 W5 k' C. i, y
  2598. .DB 674 C# D! `6 B* P4 _) k
  2599. .DB 57; V1 \/ i% X9 @) z6 D6 \( M
  2600. .DB 715 B7 N2 o# y$ ^& W5 F' p# o9 e
  2601. .DB 766 p: I. X6 z+ `; u/ A
  2602. .DB 102- R4 E8 ~3 r4 W1 y5 Y9 f

  2603. , I0 c5 R% w6 i& g
  2604. ;==================================================1 K5 n1 ~! X5 ^2 F
  2605. Sound_Start_Port                      ;起始播放曲目2 L- {3 A  U+ n7 S3 s
  2606. .DB 00
    % X1 L0 |' E; ~% r' M9 u
  2607. .DB 00
      A8 n; a" |% M2 v9 r9 j" `! Q
  2608. .DB 00
    ; B9 E. T3 o* N3 ]- ?
  2609. .DB 002 z8 p& d5 l: t
  2610. .DB 00
    # {. y; ]  u6 Q1 c1 M" f1 Q$ w# m
  2611. .DB 00( I" g$ }! q; T* ?0 b+ \0 n
  2612. .DB 008 V) ]& r  a8 }
  2613. .DB 00
    & T$ t# s# L8 L6 e0 {
  2614. .DB 00
    : q7 P% m( }( i9 P+ H- M/ B5 D
  2615. .DB 005 Z/ e9 K5 r7 t! C% z  I3 b9 Z
  2616. .DB 00
    9 z9 S8 h  R$ Q) V  O8 ?# o
  2617. .DB 00' t/ R4 {( ^; |/ R

  2618. * e+ y: W. u  i; J2 }9 W& R
  2619. ;==================================================
    / Y2 _$ q, h5 t
  2620. Sound_Bank_8000                      ;专辑bank_8000
    " m0 P2 ?( [* V) J  }1 J0 |
  2621. .DB $10
    ( t# R$ d7 b5 n1 b! s% L
  2622. .DB $12
    - R8 ^( T/ X4 v: c* ?! |6 F! J
  2623. .DB $14
    + M; f' b0 @1 Q* Z( W8 [" g
  2624. .DB $16
    3 g, W# N- l- Y6 t1 a7 C( k
  2625. .DB $18: o" c2 L' j: d7 {
  2626. .DB $1A
    % s+ K! Y: [/ Y$ S
  2627. + D5 a" ]% Q: f) B, W: P
  2628. .DB $00
    " s: b9 L' x) C7 S
  2629. .DB $02& Q/ e; Z) }* a
  2630. .DB $0D' O4 G( F# \9 ]: b' X9 b. K  ]& N
  2631. .DB $04( A" ~2 f( d7 B& n: D# a
  2632. .DB $07
    8 Q; N+ w6 U! K2 E8 w
  2633. .DB $0A( `8 T8 G2 f% |+ A
  2634. ) \8 O+ B+ x4 {
  2635. ; v" C& u/ X& Q& Y$ q0 I8 S
  2636. ;==================================================6 }7 C) M1 l9 v$ W' P$ O4 b
  2637. Sound_Bank_A000                      ;专辑bank_A000
    0 f) m  s& u5 \( _
  2638. .DB $11/ B/ f% ~' p! H! v9 w
  2639. .DB $13
    % F0 [$ v/ U/ F  ~0 |
  2640. .DB $15
    . |% c* d5 ~/ ^- Z5 e
  2641. .DB $177 G( v' r7 x/ ]7 Y2 N
  2642. .DB $195 w7 S" C; I: o8 k, o. w6 r9 ~
  2643. .DB $1B/ k/ H' d; F6 ]8 S4 t: `
  2644. ( u2 h4 f, H* O& w9 R
  2645. .DB $01
    0 w% ]4 d: c! j5 j- o, c/ d8 f& ^5 [
  2646. .DB $03
    6 U7 V. y4 g4 H- Z
  2647. .DB $0E
    ' v! V2 Z3 ^6 r% x3 w* e
  2648. .DB $05
    ! ~  g8 \/ X! k4 R5 B0 e, `' s
  2649. .DB $08
    * H9 E7 f- y" e$ b7 K1 b# y
  2650. .DB $0B6 S" _% A& v- l. L$ K" H
  2651. ) A# E: f1 O& G1 Z, R

  2652. ; ?- M9 a6 B1 I8 R1 I
  2653. ;==================================================! _3 F9 }5 R+ v7 C; e
  2654. .BANK RESET_BANK & BANK_DATA_MASK5 [9 Z' }6 [/ H5 t+ F0 q
  2655. .ORG RESET_ADDR3 Q8 f# D' j. I6 e

  2656. / C8 N3 Y. Y. v+ ~- R
  2657. ;==================================================: c9 I$ a+ D+ r2 a& _) x
  2658. Switch_Bank_8000;切换bank到8000-9FFF$ {5 t- ?1 Z: M$ c; ~0 a. ?
  2659. PHA
    $ A6 V! a# f( q" K3 X' B% ?
  2660. LDA #$06. E! e0 z3 o( l5 T- p
  2661. STA MMC3_BANK_CTRL6 |" q; C/ ?; E! F* H! @
  2662. PLA
    4 B( L" }6 n! s8 ]
  2663. STA MMC3_BANK_DATA/ L4 d( m  U  W! P6 v+ T
  2664. RTS
    ' |& L1 b4 T0 a% Q" i

  2665. ) {( k' N& ~& N. w& `8 E
  2666. ;==================================================
    - W! i" }6 r: b/ O2 o  v
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    , v' _4 Q% F1 I
  2668. PHA3 M& n  ?# ?! _5 `- a6 [/ @, q+ D
  2669. LDA #$07
    7 E6 \0 g+ m0 |. w$ }( P) Q
  2670. STA MMC3_BANK_CTRL5 m$ i6 I. \9 _$ g1 `! z. Q, H) {6 l
  2671. PLA  c8 W' u( h7 H3 n% O
  2672. STA MMC3_BANK_DATA/ r7 a: ^$ ?+ R; i# L; `
  2673. RTS1 d' }" w0 ]( Q, P6 w; ^5 O. S
  2674. $ ?( H2 x8 D1 ^" j. W! I
  2675. ;==================================================4 c0 K1 a) x! R' z) Q* T8 ?( d
  2676. Switch_Main_Bank;切到主程序bank* v, V- [& R: ^' i0 G; X4 s
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    0 @6 f% W  u$ M6 q* y" G: b# t5 ?
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank) Z& a" Q5 O5 r8 R5 h, o
  2679. RTS+ S2 f) y8 ~( Z4 _. e

  2680. + F2 C' t" p; Y( Q8 Y
  2681. ;==================================================4 l3 z6 c4 f9 g3 @
  2682. Sound_Reset;音乐重设(如果有的话)) F7 {9 n! \' n' L6 k3 _2 H9 ~
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
      F) ~, ]7 S& i8 i
  2684. JSR JSR_Addr_Op        ;执行音乐重置* M) y3 Y& O/ d
  2685. JSR Switch_Main_Bank   ;切回主程序3 m: C" K8 a# J0 z/ y
  2686. RTS* }/ P# U' L1 i, C9 o  }

  2687. 0 ^: j3 E0 f3 r# Z( X; _& j
  2688. ;==================================================; c' M) d) w* r' _: c) s, a
  2689. Switch_Music_Bank;切换音乐bank
    + \5 f# t1 m/ ~2 \/ K
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号8 [4 M- @9 ], c' \  ^4 N) v4 B. I8 L
  2691. LDA <Music_Bank_8000
    . W# {& i$ X: j
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank0 Y+ j% n7 M  t, |( _. e1 c" f( z
  2693. LDA <Music_Bank_A000
      h; T6 C7 C# h. ?  y- i
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    : k+ C: f9 X" F* G
  2695. RTS
    4 d$ D- ], C) ~6 x: `3 x8 ~
  2696. # i4 ?, R3 ?1 v/ E" g3 ?4 B9 s
  2697. ;==================================================
    ! E) F7 u9 r9 o# p
  2698. Sound_Init;音乐初始化
    $ d5 w) J0 _, Z4 J' c7 _- d
  2699. PHA" w. {; i: A: o- x, k( }0 }
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    8 a; ]  ^& ~+ Y9 {. |+ H
  2701. PLA
    2 i, B- p6 Z! k2 u
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    2 R) C0 ~6 }0 h# P9 R! P
  2703. JSR Switch_Main_Bank   ;切回主程序
    6 m7 U/ q6 {% ]: d8 q" F! _, Y, t. M
  2704. RTS
    / S6 t" P% D2 U) N
  2705. . p& [' a5 [4 X
  2706. ;==================================================
    * J3 B9 t' p, J/ x8 |3 d5 Q6 C% S
  2707. Sound_Play;音乐播放
    0 v# n9 D4 ?8 H, W1 G- P
  2708. JSR Switch_Music_Bank  ;切换到音乐bank, n( d* N2 \# _  j- x+ Y+ q
  2709. JSR JSR_Addr_Op        ;执行音乐播放! l. C9 @/ L5 A: V3 v, {: o/ {
  2710. JSR Switch_Main_Bank   ;切回主程序% Q5 J# d4 z2 R* l
  2711. RTS% ?; s$ B$ h& B% v) N& ^  ^1 ?1 B- ^

  2712. 3 l5 d0 `/ ?7 r$ P9 R
  2713. ;==================================================
    2 C) c3 @3 _: M! }: m% x
  2714. MainLoop;死循环
    $ U2 G4 t, |; o
  2715. JMP MainLoop
    3 [% |$ R6 D9 j  L* c: t- K

  2716. / s5 q3 d# B/ v& V7 }! K9 y/ Y  U
  2717. IRQ_SUBPROCESS_JMP = 06 ~3 o$ R( _7 \1 Z% f) _& R' X( q- q

  2718. & T6 t  |' M* Q  P4 v! P
  2719. .IF IRQ_SUBPROCESS_JMP( H- a) o' F' e
  2720. ;==================================================, v( d7 p9 }* l( P4 w
  2721. IRQ_Process_0;IRQ处理过程0* p: G6 B! _5 s1 N. O( y% f* v6 A% C

  2722. " {4 v$ Q& u- k& l, U
  2723. ;15条扫描线后触发IRQ
    + A3 L9 |! }( q  s1 R2 d6 X
  2724. LDA #15, t; A8 j9 O5 [0 K8 \4 U
  2725. STA MMC3_IRQ_LATCH
    2 I# F3 S$ t: Y$ Z& E

  2726. 9 m+ ^8 U" ~9 w: X* a$ K4 o
  2727. ;设置屏幕滚动
    : h% F+ U" A* ~
  2728. LDA <Scroll_H
    # j5 g3 m8 d$ u- X1 ~
  2729. STA PPU_SCROLL
    $ m6 G4 g4 o3 R) B  e$ G2 p* B
  2730. STA PPU_SCROLL6 {$ K7 ^& g4 R+ q0 ^& d9 P

  2731. + j) u  Z' D9 A6 u: i$ h9 G
  2732. IRQ_Process_0_End) \) y& F  t/ R: U0 }
  2733. INC <IRQ_Process_Index
    , H9 m2 O8 b" z& ?
  2734. JMP IrqProgramEnd
    4 \8 }9 z- k, O( I: @3 @
  2735. * [  v' U$ d7 z( D
  2736. ;==================================================0 l" U6 Y. _; d" Y; S* D8 H
  2737. IRQ_Process_1;IRQ处理过程1. @. ^& h7 W% @, U* I0 `4 H1 ]

  2738. 9 ?( F# z) v5 t
  2739. LDA #55
    - `3 S& ^" A7 v$ O8 b
  2740. STA MMC3_IRQ_LATCH( y9 |& m, i7 O7 s2 r  m% }

  2741. ; t4 Q  X4 P% S/ v% ~+ B' Z# q
  2742. ;设置屏幕滚动8 K7 M+ }, _  r1 e! E) u
  2743. LDA #$00
    3 |1 y5 `$ k# \5 t5 _
  2744. STA PPU_SCROLL, K0 e. p# @/ d
  2745. STA PPU_SCROLL
    7 [! Z$ p0 H8 `
  2746. / o) ^5 o" O: T9 O  M& }: `7 M
  2747. INC <IRQ_Process_Index
    ! u) q. M/ Z( {) {" J
  2748. JMP IrqProgramEnd4 s! y4 x7 r) R! Y3 x; |" O# ^* e# d
  2749. $ J7 H# Z* x- i
  2750. ;==================================================
    % S8 A% U3 ^5 d& x: [  f' F
  2751. IRQ_Process_2;IRQ处理过程22 t! y6 }/ a! G: E& `8 A4 s. t

  2752. ( t$ f3 C3 ^. }, @" C' U2 n
  2753. LDA #151 N8 F9 Z7 Y6 @. H8 B7 f  i) |
  2754. STA MMC3_IRQ_LATCH* o& v# H* x2 t
  2755. 2 x3 Q  P! Z1 y. k" h
  2756. ;设置屏幕滚动5 f" f  b% v8 C* y
  2757. LDA #$00
    ( W+ o5 ~( p# K  e' t3 J: F
  2758. SEC' Z+ J  [* k& M) ^; @; g: I5 R' U
  2759. SBC <Scroll_H( [8 [* ~. j0 N# X
  2760. STA PPU_SCROLL. K: J9 D5 Z8 S, a& A( j
  2761. STA PPU_SCROLL
    3 b7 {1 ~9 B+ c, {% V4 x4 X

  2762. 2 m' q# |( k' t  @; d0 E, F
  2763. INC <IRQ_Process_Index! |6 |% Y- F5 `) y+ I6 |6 [
  2764. JMP IrqProgramEnd
    7 X) J% l' G0 X( v

  2765. % I, m& \; S* r2 O# k) K: I
  2766. ;==================================================: _5 ]4 P" g4 u8 R' T0 m
  2767. IRQ_Process_3;IRQ处理过程3- P- N8 x. U# s" g) h
  2768. 1 M+ Y0 H4 W; E- t/ w  X
  2769. ;设置屏幕滚动; U5 `" p; ^4 o, j0 o
  2770. LDA <Scroll_H( s8 C7 v9 n6 r9 H7 }; R8 @
  2771. STA PPU_SCROLL
    1 z' a' h3 ^4 i' _& C- m
  2772. STA PPU_SCROLL
    : p: v- t* u3 n/ s% J2 P
  2773. & u0 j2 t% U% h, C! c, b0 Q
  2774. ;禁用IRQ
    " j- }- V8 R; |0 L- p! |
  2775. STA MMC3_IRQ_DISABLE
    8 ^1 R$ V5 M3 ?9 _  l
  2776. JMP IrqProgramEnd
    + c( O) v' ^* S
  2777. ' r# U: g+ ~* {+ j  N, o3 k
  2778. IrqProcessAddr# D% C  h& I# u
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    4 W' r; F& @* w0 l& j. C- F4 |& G

  2780. " C" e; m9 \% Y: R" F. x' L* d
  2781. .ENDIF2 A& j% j* |0 `' Y+ m/ I; h/ w
  2782. $ [; r' T: p1 T8 `
  2783. ;==================================================' J2 j. B- q+ e$ a
  2784. ;IRQ滚动模式常量
    4 F" C; |- }( F+ w
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动8 C. p0 ~6 i( F# o! A9 J% F
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    ) d& D2 u3 _+ p8 ?3 ^
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    : }% J1 O8 }6 `& k# t2 V7 P; I0 \

  2788. 7 C6 @/ a" k# P, ?0 c6 J" F; T& h
  2789. ;IRQ扫描线数据
    6 X) ?& |' ^& F5 J- w& d
  2790. IRQ_Scanline_Data
    8 h8 U- C/ V4 `5 B0 v" \
  2791. .DB 8
    - i" }9 h" c1 |* d& W
  2792. .DB 541 y% ~8 j- k7 J4 a8 v
  2793. .DB 8( n& P/ `$ E) |* S
  2794. .DB 00 ;关闭IRQ2 \6 @$ F4 Y1 P+ a
  2795. 0 W* W: Y% d' Y3 ?3 x
  2796. ;IRQ滚动控制模式( }0 J2 ]" C, l7 u' a) I
  2797. IRQ_Scanline_Mode/ b! M% O, |' k# N& S: L
  2798. .DB IRQ_SCROLL_MODE_ZERO3 |, e' [2 b/ p1 T$ c; k* D
  2799. .DB IRQ_SCROLL_MODE_ZERO% t+ r+ }1 k) I, W, }
  2800. .DB IRQ_SCROLL_MODE_RIGHT& S2 b: U+ S  K0 {4 g
  2801. .DB IRQ_SCROLL_MODE_LEFT6 t4 B7 g. G# {
  2802. / l+ p7 y! R# N8 q8 X7 R6 g, M' r
  2803. ;==================================================
    1 a% A, Z! I2 P
  2804. ;IRQ处理- ^* H/ k, ~! K  r* F, |
  2805. IRQ_Process3 J* K# e: }  P' U- L" w" ^
  2806. LDX <IRQ_Process_Index
    ! ?8 m/ N" S' a" |6 Z
  2807. LDA IRQ_Scanline_Data,X8 {$ T) @) B0 W8 `5 x3 g. m* v$ Y
  2808. BNE IRQ_Process_Latch8 K" h# j$ h# x3 G$ [3 d
  2809. IRQ_Process_Disable;禁用IRQ
    3 M! T$ }" Z0 F$ i( S' M$ t0 H
  2810. STA MMC3_IRQ_DISABLE
    2 T7 [5 n. |/ |0 x% D$ y/ V; j
  2811. STA IRQ_Process_Index
    # y! q) t/ ^1 S8 h+ b1 q
  2812. BEQ IRQ_Process_Scroll, u  G5 A5 w9 C/ x1 q. p- B
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线! S. J+ l2 j5 z8 {
  2814. STA MMC3_IRQ_LATCH% k5 v4 F+ {9 j2 T, N
  2815. INC <IRQ_Process_Index
    9 E) ~7 G7 d' V# r" |! w
  2816. IRQ_Process_Scroll;IRQ滚动控制; Z* {; o' ^+ G1 g" J# R
  2817. LDA IRQ_Scanline_Mode,X
    / {3 q8 X$ X9 }, [9 \+ m- H
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    ( E* `3 G9 k9 W( q! T1 `  p
  2819. BEQ IRQ_Process_Scroll_Left
    ! c, n. l5 C; Q- M
  2820. CMP #IRQ_SCROLL_MODE_RIGHT! p7 N$ Z( C, L5 r2 S: Q6 x
  2821. BEQ IRQ_Process_Scroll_Right4 t6 _' [5 E- B- K  Q2 M/ Z; m
  2822. IRQ_Process_Scroll_Zero;不滚动" O7 U/ t5 M  e& ]! A
  2823. LDA #$00* b, ^: j) q0 O: y  ?* N7 n
  2824. STA PPU_SCROLL: s1 u0 v: J0 N7 |! T
  2825. STA PPU_SCROLL
    , s4 L, r9 u  B  c
  2826. RTS) M1 u, L! R* M: c3 x! [( \
  2827. IRQ_Process_Scroll_Left;向左滚动
    ( y5 i. t- t1 W
  2828. LDA <Scroll_H; T+ a7 q  Q. R
  2829. STA PPU_SCROLL' h2 h6 X# T  b5 @& H
  2830. STA PPU_SCROLL9 ^/ ~1 z4 l! @3 A0 C# F* Y
  2831. RTS) Z3 @% Z; s& Y2 C" U" y
  2832. IRQ_Process_Scroll_Right;向右滚动
    ) l' U2 \- z: F& y, o5 R
  2833. LDA #$00) ]$ e  e4 f; y( o" t; F5 J
  2834. SEC' k' |0 I8 ^- n6 v4 b
  2835. SBC <Scroll_H
    + ?2 l) z7 }1 e2 M. B
  2836. STA PPU_SCROLL
    : G* @  u7 ^0 U; f; U
  2837. STA PPU_SCROLL
      a- q+ d# ]0 x) @. N# C3 S9 p
  2838. RTS
    3 @/ n* U* ?' k4 e' _

  2839. 5 W$ w5 Z7 N$ K& t, `+ Y' N
  2840. ;==================================================4 G. t3 ~) A2 }' `6 k7 c2 B$ |" L
  2841. NmiProgram;Nmi中断处理
    ( x- A5 H' [/ ~
  2842. PHA
    5 I2 v9 ^( T% O2 \
  2843. TXA( P# z! C( Q) n5 ]# H
  2844. PHA
    7 L3 O) z& g  R- j
  2845. TYA: l( V6 R* r2 h+ t$ H
  2846. PHA) B. _* E( T, c! e3 V% i
  2847. , a8 L9 s) S) L
  2848. ;读取清除Vblank标志, 防止重复进入( _/ O% \# |3 t7 b# `* R
  2849. BIT PPU_STATUS
    0 d) J! c0 E7 X
  2850. $ f* c: R$ p3 W( p
  2851. ;切换主程序bank
    5 L4 E9 j9 c: \6 s( I
  2852. JSR Switch_Main_Bank, Y# S- o1 R- ?5 `

  2853. * ]; @& a, t3 ~0 S! J1 R: i: W. j
  2854. ;Nmi处理
    $ U4 Y# J8 g/ V' V2 B
  2855. JSR NmiProcess. x1 L4 P7 I8 F3 }2 u& l

  2856. $ _0 A1 u1 k* x
  2857. Nmi_Proc_End
    , g8 F' d1 k2 Z9 D' V  a' Q
  2858. PLA
    3 }. Q6 d" o+ W: t0 v" m
  2859. TAY
    # |. `  E/ d, q/ S1 m! ?" [0 i
  2860. PLA& k5 q) B) t% Y+ `' W( c
  2861. TAX) t' D& l! G' b0 x- g
  2862. PLA" B! Q5 [, |/ o) c8 u) u. s+ C' H
  2863. RTI
    ! w2 a1 f1 P, s
  2864. , j- c8 t3 d' x( B5 O
  2865. ;==================================================
    6 j1 l& y7 ?, r% F: I: R7 v- F
  2866. ResetProgram;重置中断处理( t- {* ?, a" L0 U0 c
  2867. SEI
    2 `: ^! G+ |; x3 S
  2868. CLD( S0 Q2 T; {$ }9 c
  2869. LDA #$007 q! R0 d( }/ ^9 p
  2870. STA PPU_CTRL' j% |! W3 Y5 r0 F" g& z1 \
  2871. STA PPU_MASK4 j6 _7 Z+ i9 @' N# e

  2872. 9 R) F$ F1 }9 M
  2873. ;切换主程序bank
    8 [8 k; a2 k3 t% R/ _, x# B: g
  2874. JSR Switch_Main_Bank
    ) |/ B6 O5 Q5 X9 l" G6 _) A

  2875. 0 Q% w  v2 q: U; W8 e) l0 W
  2876. ;程序处理开始
    ' R3 y' b8 X, p" `5 o7 Y1 x; i# J
  2877. JMP ProgramBegin
    ! I3 R6 e3 B/ W, j8 T7 s, D

  2878. - V, H$ r# d  j  z, Q
  2879. ;==================================================
    ! V% @9 w% y+ k* Z* Y5 o( x
  2880. IrqProgram;Irq中断处理/ q3 q6 P0 `) s# a: |$ _: h
  2881. PHA$ h$ O+ [. ]; {% K
  2882. TXA
    ( G+ L  p5 _* ?8 @
  2883. PHA
    / c6 a8 a  \: v5 U% F
  2884. TYA% u! H( {8 [" h' [/ r6 u( U
  2885. PHA
    + u3 l! ?  x0 w/ t4 @

  2886. # x. O3 W4 e9 H9 @
  2887. ;关闭IRQ+ m) Y$ |! A6 h# P# T8 R, ^
  2888. STA MMC3_IRQ_DISABLE! O5 I8 o( q  S1 ?6 c
  2889. 8 m9 ]: r. V3 k' J/ o" z) t$ k
  2890. ;允许下个IRQ触发& R3 ~; P) J9 u. a, }, o- r, K$ M6 H6 z
  2891. STA MMC3_IRQ_ENABLE% W9 C% T2 g. o# V& g, g
  2892. : Z. j. g1 G8 X) A0 w
  2893. .IF IRQ_SUBPROCESS_JMP: X9 r/ [6 u9 ?) S! T) |; [+ o

  2894. 0 J" _( S8 {2 c7 d
  2895. ;执行IRQ过程+ G. i4 x1 C3 t  f/ j2 u
  2896. LDA <Data_L
    * ~% o- ?! U( i
  2897. PHA- o, F- f' U( T) C
  2898. LDA <Data_H' `8 l  |( i8 Y5 \7 h; ~& h0 Y3 }
  2899. PHA$ m/ U. B; _- }2 D7 d6 b  n' ~7 o
  2900. LDA <IRQ_Process_Index. r6 \! R9 c. N, |$ i
  2901. ASL A7 U$ s. g' W9 c7 l" D0 B& }3 f6 e. ~" r
  2902. TAY" M! |; X" A! Q9 H3 P4 x
  2903. LDA IrqProcessAddr,Y5 f: Q$ f! w( L  S0 ?5 K
  2904. STA <Data_L
    7 P. A; @6 D& r3 b
  2905. INY
    % \# t0 ]6 H* F& u# Y8 J) o
  2906. LDA IrqProcessAddr,Y7 n3 z% J1 J+ ~& [, q8 p% m- D2 S
  2907. STA <Data_H& {4 n6 n( q5 r* ^0 p" j9 {+ ?" h
  2908. JMP [Data_L]$ _. ]9 h' P! M

  2909. ! J. q5 }) F. Q$ W
  2910. .ELSE
    ; p0 Y) |/ Y; X  o$ _
  2911. 7 E# i! c$ c3 W7 G8 J
  2912. JSR IRQ_Process
    ( G5 [* b0 n% D7 d0 _. R3 q! x0 p
  2913. ) _. U' F! ^1 v; E! ?
  2914. .ENDIF
    $ k4 k5 v7 {5 e

  2915. . z! E2 f9 M( {
  2916. IrqProgramEnd
    % M$ L! v- |" u! _; @, _
  2917. .IF IRQ_SUBPROCESS_JMP
    6 I7 d2 C9 _# Q4 m
  2918. PLA
    ) n9 h& u9 e& ^2 O- Z) i
  2919. STA <Data_H
    2 F4 d% [- E6 h  T
  2920. PLA
    " C* I; R4 |$ M6 T
  2921. STA <Data_L
    8 B4 p' D5 m& u# i- f
  2922. .ENDIF6 z7 ]. r5 \6 ?$ E- f% i& j
  2923. PLA$ _: {( `9 U" E) L
  2924. TAY+ O( }, u' n; q( m% g3 O/ ~
  2925. PLA6 e6 d% g2 }$ F7 \) \
  2926. TAX
    ! o: M9 [3 `6 Q" Z, F2 _. s/ @
  2927. PLA& W7 v/ v+ R7 B
  2928. RTI
    " n/ [! H) T/ x: b4 x& ^+ }! V5 e( f

  2929. # \& a; B- I4 Q+ m* D% @
  2930. .ORG $FFFA
    & {* O+ q3 R; s- @' M- l5 P
  2931. .WORD NmiProgram
    # W0 Z  j' A3 w% R$ }  J
  2932. .WORD ResetProgram% N" u( L* f# S5 p6 X
  2933. .WORD IrqProgram: Y9 `0 |: t5 A/ }' I" @4 o# J

  2934. * A& L& |; I' Z9 q* H5 f4 e
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    - @8 C4 t6 s% K% k# m
  2936. .IF SOUND_BAR_SHOW_ENABLE
    6 b/ P% k" O* i! E
  2937. & r, H1 y: n; {2 h+ Y
  2938. .ORG $FE00# K! c) H/ \" F( U
  2939. PHA& G5 k9 _% \- {
  2940. STY $07BA: z" e0 v3 v- Q, @. Y/ m
  2941. LDA #$8D- N0 E& e5 ?* ?  B8 D
  2942. STA $07BC3 T4 i( a' }  I/ F) U. r
  2943. TYA1 x' x% b' ^) Y! N* t
  2944. CLC
    + Y" D( [9 E4 t. [  F$ u
  2945. ADC #LOW(Sound_Bar); ~  B. i! g+ [" L$ \( ?
  2946. STA $07BD
    - Y) c& x* L& l1 L# M
  2947. LDA #HIGH(Sound_Bar): O. Q  \  Q5 a& `. ~3 j0 r0 |# f
  2948. STA $07BE! R: z2 Z6 l7 X7 x
  2949. LDA #$60
    + B* [6 ?+ }, R% T4 b- k
  2950. STA $07BF
    0 C& a1 O- S0 B" }  o4 i& n0 w
  2951. PLA2 u2 k3 R; Z0 H  e; q
  2952. RTS
    ! t$ P1 W+ ?7 b# B

  2953. / M$ Z& G) a+ Q: N7 ~
  2954. .ORG $FE20
    * k) N: y% a. @  v4 ^
  2955. STA $07BA
    , ]* T, L4 b/ T, t- r
  2956. CLC
    1 l. `$ V+ R; Y( G! k/ l) _* O0 x+ h
  2957. ADC #LOW(Sound_Bar)
    # L' G6 |  }2 t5 R3 G( K" d0 e
  2958. STA $07BD
    4 A* A: m/ C& W  Q. f
  2959. LDA #$8D, J- B* ^# e8 L; y! e
  2960. STA $07BC
    / d7 @+ r9 t* o. s8 D
  2961. LDA #HIGH(Sound_Bar)
    / }) @: e2 |1 N' p2 D* A3 W
  2962. STA $07BE
    / z0 B0 O$ t7 K; F
  2963. LDA #$60. e; m4 o4 H0 y3 h) _0 y6 `4 G1 X
  2964. STA $07BF
    & Y9 X" I* n- c4 l$ @2 x+ K
  2965. RTS
    ' U- `# P9 t9 x# l$ i

  2966. ' k! T# U; o7 f  k
  2967. .ORG $FE40
    # m  e) t" C$ `  y+ b$ z, M" B" G5 ]
  2968. PHA
    ( L* P' H1 P# S  b; S1 F
  2969. STY $07F1
    & E. L) U2 |2 n% U6 u( Y% U& ^% W
  2970. LDA #$8D
    7 o- H$ h9 i+ V& ^( k
  2971. STA $07F3* o" O' S& L) P1 g
  2972. TYA8 [. j. H3 D8 s
  2973. CLC6 L6 h7 Y$ l8 l- ?: A
  2974. ADC #LOW(Sound_Bar)
    0 F- q7 `# Z! |& ^) R) d7 M
  2975. STA $07F4
    & R" k* }3 D  Q) H8 S& ^; x
  2976. LDA #HIGH(Sound_Bar)
    2 E: J; e- U. s2 l' Y
  2977. STA $07F51 C3 H4 r6 u& _' b" b9 f8 p" j; H$ K
  2978. LDA #$60
    ( Q- q/ c, f: z5 S9 o0 B" f2 c8 y
  2979. STA $07F6: ~) M2 i/ C0 c: Y' M3 V+ {
  2980. PLA, @1 ~& `; \. _2 V$ E; E9 l0 {, l/ J
  2981. RTS
    - E! |8 ^' i- D5 b* {% p; i
  2982. 6 ]+ K. }2 \! k+ i( k
  2983. .ORG $FE60& @6 B0 J/ p, A( L
  2984. STA $07F1+ o% C" I# L" S% [7 m. W# `
  2985. CLC
    % n. p  a% Z1 A5 `" y
  2986. ADC #LOW(Sound_Bar)( F2 z, ]9 ^8 \" z1 E& `8 _2 c3 [
  2987. STA $07F4
    & G/ T; P) l+ l3 H2 Z7 g: y5 p# r
  2988. LDA #$8D
    ; v$ v, x( E& L* [* V
  2989. STA $07F3- X4 s8 t. u# I" t( y
  2990. LDA #HIGH(Sound_Bar)
    # l- w5 t6 a) L
  2991. STA $07F5
    ; u" w2 S: v8 R6 s9 z
  2992. LDA #$60
    % j$ R) s! s) X( N+ I& s
  2993. STA $07F6
    0 b' f( ]+ T8 U8 F9 p
  2994. RTS
    . L8 F5 U8 l9 c) l: _
  2995. 9 T6 S2 r9 E$ L  L/ A0 j4 t
  2996. .ORG $FF40
      w& T- e: Q5 a" I6 U0 J& T- q
  2997. STA $4000. Z8 E9 U- X2 Z& O  k+ `
  2998. STA Sound_Bar + $00: s/ s! a+ \3 I, N2 r( f" W. G0 C5 ?% g! ?
  2999. RTS
    - m1 L! f: s3 I5 P$ {8 h1 K$ r

  3000. & z6 m" ]3 P1 @1 B! f3 w
  3001. .ORG $FF48
      ^3 H5 I0 y6 Z9 s- s0 Z
  3002. STA $4004
    2 `+ r1 [* P; n. n0 F4 g, E: [
  3003. STA Sound_Bar + $043 U" L5 L' V% @& ~
  3004. RTS
    ( B7 F6 b3 v5 ~
  3005. 4 S2 `0 ^1 @7 N: E9 Q& m
  3006. .ORG $FF50
    5 u6 e* h& Q; a4 Z: j
  3007. STA $40080 x  T6 n6 B  F! `/ T0 F
  3008. STA Sound_Bar + $083 {6 f" F: s% P- q8 R
  3009. RTS3 P! j; g4 ?' t% n

  3010. . x) j1 E5 e1 L* k  {+ @
  3011. .ORG $FF58
    1 y5 m- ^3 O# O* z/ \* m5 l& Z
  3012. STA $400C: O/ R8 g. W5 e& F9 o  _  p3 ~4 e
  3013. STA Sound_Bar + $0C" ]! R& M9 F1 ^: x
  3014. RTS! i# n9 k* a9 E9 ^
  3015. 8 R, \8 P0 E5 w: F
  3016. .ORG $FF60
    9 C" ~. _! [- c3 n: Y2 y
  3017. STX $4000/ r/ V  c( v( [4 ]1 |6 `
  3018. STX Sound_Bar + $00
      P7 t8 O& a' {8 Q
  3019. RTS
    4 X- l# ?8 n2 |" X
  3020. ; C) \( w3 \4 ?( ?4 N  \: t
  3021. .ORG $FF68) m, ?# r# u% N- l( \
  3022. STX $40045 z8 @1 i$ C" @
  3023. STX Sound_Bar + $04/ ~' M; C- z0 K4 \; ^6 p. q
  3024. RTS
    6 G8 y) r' E. g( \3 O6 h0 [9 ~
  3025. $ {& S7 g3 e5 B0 R! y$ D  ?
  3026. .ORG $FF70
      S/ l6 F1 P0 I* K# U( M
  3027. STX $4008
    6 W8 ?9 {6 |  Y4 a1 [
  3028. STX Sound_Bar + $088 [8 G# _' b1 l4 M0 |) A
  3029. RTS
    ' h4 T8 @/ `* m+ Y& y, ?

  3030. , ~5 Z- B" f* ]4 e+ e7 K
  3031. .ORG $FF78
    - X  r1 r6 l# U2 I
  3032. STX $400C0 p' c* |0 g! ]& A5 l
  3033. STX Sound_Bar + $0C
    # v/ w* @, T* k' l2 u6 ^
  3034. RTS
    - F4 q: S- n" k: N- t* C5 }# t
  3035. 0 L2 p% d/ o$ A( t) x$ p# @
  3036. .ORG $FF80
    ( t0 m/ l8 h1 |, ?- c7 _5 X
  3037. STY $4000
    2 G/ ^" V3 H5 x
  3038. STY Sound_Bar + $00
    % K- P, j9 v% v# a9 u- ~; @
  3039. RTS
    7 b  Z" L/ p4 N2 k

  3040. 4 U+ d  R) X5 n, K( e4 d
  3041. .ORG $FF88
    9 `4 ]$ o; O4 }+ b  S
  3042. STY $4004
    7 y' @- ?, |! ~6 g9 }, B9 M7 C
  3043. STY Sound_Bar + $049 I. r+ a& b- {) K) J/ I
  3044. RTS4 @5 O: _" I4 B+ H! ?" X
  3045. / M6 ]4 z% A! }3 S& b! z" A$ J! l0 J
  3046. .ORG $FF90
    * }! C( |9 b  A$ w9 U, f
  3047. STY $4008' y, G( B$ D* m; Q9 n2 D9 n
  3048. STY Sound_Bar + $08
    ; ?5 _: H! Y: ^+ @6 H' N
  3049. RTS2 r  F6 ?# n, d' x

  3050. # H* \  V: Y( l0 a$ |
  3051. .ORG $FF98' }- n% |4 k9 s1 J$ D# z2 \
  3052. STY $400C
    7 Q9 |3 [* c  F& Q
  3053. STY Sound_Bar + $0C
    / @& c+ `2 w9 k7 R  {
  3054. RTS
    ( A. M. L; \0 ~+ [' `2 ?
  3055. & O/ a5 y, A* |8 F1 s$ A
  3056. .ORG $FFA0
    % S4 `# f( n7 ^1 n- t
  3057. STA $4000,X
    ; |; Z) U. h  u. J
  3058. STA Sound_Bar + $00,X: w* c* O/ Z0 Q' R7 B' _2 k
  3059. RTS
    * W+ d( W$ ]6 J. t
  3060. ! c% T' _1 C, v, r2 u
  3061. .ORG $FFA8" ]3 c/ j' u4 W. V  Q6 G$ ]
  3062. STA $4000,Y4 |; V' t+ C2 V* q
  3063. STA Sound_Bar + $00,Y  m8 Q. a9 z9 q+ s; x) v/ i8 m
  3064. RTS
    * z: h4 {+ ^# s  @3 c

  3065. 3 ?+ L+ l& v5 ]0 p- O
  3066. .ORG $FFB03 m, S. r7 [2 Y" c- U( P% N# x- s4 q4 k
  3067. STA $4004,X
    & a" `! [( m- E0 F, e3 d
  3068. STA Sound_Bar + $04,X
    # f; d! J& R# z* Z
  3069. RTS% f) t4 F1 J) ~
  3070. ( w' W  o: N/ l8 @/ u+ e2 i  @. y3 w
  3071. .ORG $FFB8) [* D# H0 K! s: f. A
  3072. STA $4004,Y
    % p! K3 J1 [- p2 B' o
  3073. STA Sound_Bar + $04,Y9 a6 ~( a& K9 G; E
  3074. RTS3 o( U: t% j! ^! u; H

  3075.   ~+ C7 U8 M' a2 [" V0 B
  3076. .ORG $FFC0' Q7 h. D" r- p( h( x7 C4 H
  3077. STA $4008,X
    1 {* L% R* R" X/ I; o; O
  3078. STA Sound_Bar + $08,X
    ) \( P7 {) l! S% Z
  3079. RTS3 z; N) d+ |4 O3 X5 U6 V

  3080. * l: v, `5 q5 E. V+ v3 F
  3081. .ORG $FFC8+ e7 _0 x: f" {. f
  3082. STA $4008,Y
    ) O5 r/ F/ k5 f% u
  3083. STA Sound_Bar + $08,Y
    - C7 _) v/ ?/ r8 |. k  {
  3084. RTS7 P( ~  ]9 j+ x1 Z

  3085. ! V7 Y" `" v0 v, z& |" M+ E
  3086. .ORG $FFD04 m, v! {- u3 J$ C% m' x: ^
  3087. STA $400C,X
      |* L! B9 h+ D4 L
  3088. STA Sound_Bar + $0C,X
    7 Q7 ]  Z4 r8 `5 t! J+ g
  3089. RTS- R  g% Y0 B+ W, W2 N$ Z

  3090. % F! \+ ?, L6 R! S
  3091. .ORG $FFD88 _! i0 ]! b6 s9 [- a6 V
  3092. STA $400C,Y/ h' b. u1 \9 e6 [- r. E: V+ T
  3093. STA Sound_Bar + $0C,Y
    ' P8 p: {+ p6 `9 G( ^' y- A
  3094. RTS8 f( O4 |. h  Y3 h$ D+ o

  3095. ( X& m- _/ J. i
  3096. .ENDIF- w+ g% H4 S  S' |% |* x
复制代码
& B) L2 `) ]: x
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3145 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-24 16:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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