EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
7 p) U3 H. _8 ?1 F' b3 H) w5 f6 G# @
[FC][音乐12 IN 1]) W7 |. F/ @' G  M6 i/ R8 X0 o
时间: 2023.07.23
. D% S4 T3 b) `8 A3 `( a1 u/ F作者: FlameCyclone
  b( _9 V6 z2 B6 j) G# V8 X/ }9 t! A* @, v& ?+ W! q, c- j* l
收录音乐内容:
  [/ K# Y; B' x9 Q# `1.Raf世界
' k& ]: [* h6 s$ S' k) o2.最终任务3 S" Q1 `8 `, f: {) S* D% @
3.赤影战士
+ p: q" C6 X3 T$ V) a4.双截龙
: U$ x  e3 O- L% Q. H+ m5.双截龙2# C! B  F4 ?: {5 l, J* U
6.双截龙35 `  @. ^6 v/ m# x0 P4 i
7.洛克人
* ~/ O, I- C  F, c! U# k8 i( h5 l8.洛克人2
: e( s3 }; ?6 W9.洛克人34 D2 K# F, X/ o- d
10.洛克人4- Q! ^  [; y8 e, g$ Z. d2 G
11.洛克人5
( B4 `, p' |8 `6 }12.洛克人65 V& Y+ A& W8 j8 }4 E

, m0 @( A) `. ~4 x# {/ v# {0 d5 y操作:
" I9 S* X6 \) P6 s2 c上键:         上一个专辑6 j* X  p# T' m, w9 m/ R: q8 }
下键:         下一个专辑' g( ^8 B! C2 S* D0 h
左键:         上一曲. a* Q' F! A6 Y6 J9 O
右键:         下一曲
+ F" O2 E% h4 ~! ^7 ]+ cB/A键:        前10曲/后10曲) S& b& I0 f# q
选择键:       下一页
# T2 b$ S6 N6 r2 D- p2 t开始键:       停止/播放
5 \. c) h" [- z2 w
/ z+ h6 P- ]. u' G3 Lhttp://flamecyclone.ysepan.com/
9 \/ U$ [  K$ f( i3 |
' h: {, S5 R. p8 e& ?- F- i. {- E+ B: A

- l! [* X7 K: S4 `( V: O9 Q, Y! w% ~* N% K5 I% f. @
  1. ;[FC音乐][播放器模板]5 {1 Q+ I1 A( e* _) @7 J
  2. ;FlameCyclone 20230710
    + K4 L0 d. e5 R1 z. A1 J

  3. 7 ^0 n$ I" m( v! U7 _3 |, w! P
  4. ;文件头
    6 E. u; Z7 [& _. N: \+ x
  5. ;======================================================================4 E; l& t- _5 m0 J; w* S
  6. .INESPRG 16                                             ;16KB PRG 数量
    # s- g$ `! p1 g- F; ~; M
  7. .INESCHR 1                                               ;8KB CHR 数量! l* l, ^$ C9 |; j: _1 O7 s6 d
  8. .INESMAP 4                                                   ;mapper 4
    . {" H- X$ f4 ^; u8 c
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    9 d$ t+ S& u; B4 U, d6 M

  10. - v$ S* E$ h& E- O4 T
  11. ;==================================================
    # v" U- S8 e) |0 `8 w4 r; \3 F6 h
  12. SOUND_BAR_SHOW_ENABLE       = 17 q& H/ e; E" N0 c
  13. ;==================================================
      I5 b& c! m0 s7 c, d$ r# w4 Q( j! W
  14. BANK_DATA_MASK              = $1F
    " {. I% c9 _' L. ?
  15. CHR_RAM_ENABLE              = 0! k( \9 s% ~9 D$ g6 e$ V+ A
  16. IRQ_SCANLINE                = 136; R1 l" S/ A9 f# n) s: ]
  17. ;==================================================
    9 B; B% b. b8 ]( C" j- `( R$ v
  18. SOUND_DATA_BANK_00          = $000 [3 R; b: K7 @
  19. SOUND_DATA_BANK_01          = $01% S7 d2 \' b* j2 b& u
  20. SOUND_DATA_BANK_02          = $02
    9 L$ I, b. t% E' b
  21. SOUND_DATA_BANK_03          = $03
    * l& L" X$ I3 V- V2 ?- F* d
  22. SOUND_DATA_BANK_04          = $04
    ; M' R' n$ }6 ~) o/ N: d, b( m" p
  23. SOUND_DATA_BANK_05          = $05/ j' o3 n% _! ^  }" @& W! X4 v
  24. SOUND_DATA_BANK_06          = $060 b7 V* A# x! u" U! J. X7 ]
  25. SOUND_DATA_BANK_07          = $073 b6 b! [1 b; G% C1 `
  26. SOUND_DATA_BANK_08          = $08
    $ I( m3 Y: Q7 \! g: o
  27. SOUND_DATA_BANK_09          = $09
    . L# @- P8 |7 G9 c" f
  28. SOUND_DATA_BANK_0A          = $0A
    : ~# h! s# F" `8 B4 K/ F
  29. SOUND_DATA_BANK_0B          = $0B
    ( _* L- I! u4 d: H: M' p
  30. SOUND_DATA_BANK_0C          = $0C
    ; b* ~+ q, m* X9 y9 m
  31. SOUND_DATA_BANK_0D          = $0D
    7 k' w0 t5 f  c8 W
  32. SOUND_DATA_BANK_0E          = $0E
    . U/ N2 _  A! s9 }: N
  33. SOUND_DATA_BANK_0F          = $0F4 K: b! u3 C9 m% A

  34. 2 `& _+ ?/ O4 d# I5 g+ d
  35. SOUND_DATA_BANK_10          = $107 D1 r* ?& W& v9 S/ Q( L
  36. SOUND_DATA_BANK_11          = $11/ K$ ~1 @) _/ Z5 a1 `( O5 [
  37. SOUND_DATA_BANK_12          = $12
    5 _. G1 o4 N% {2 }( s7 z+ G
  38. SOUND_DATA_BANK_13          = $13
    9 q) b# L& M' P/ x- ^) u# [( }: J
  39. SOUND_DATA_BANK_14          = $14
    ! z# I/ H+ Z& f
  40. SOUND_DATA_BANK_15          = $15
    : |5 e$ K# i) o2 h4 r/ Y* g
  41. SOUND_DATA_BANK_16          = $16! s+ k; h+ a$ T
  42. SOUND_DATA_BANK_17          = $17: m+ b2 S/ }! ?1 z2 f5 |
  43. SOUND_DATA_BANK_18          = $18
      K, x/ B8 ^* O# v2 X- v0 I
  44. SOUND_DATA_BANK_19          = $19+ q- x0 V. k# h
  45. SOUND_DATA_BANK_1A          = $1A
    : S( r6 ^+ n7 L* n
  46. SOUND_DATA_BANK_1B          = $1B6 Z! P/ `$ Q' l9 E
  47. SOUND_DATA_BANK_1C          = $1C
    ; q* q' S4 t: e" L0 O  z
  48. SOUND_DATA_BANK_1D          = $1D3 `  D. m1 @' \6 n

  49. 6 w$ I- T* ?+ u* V# W
  50. SOUND_DATA_BANK_C000        = $1E) {* W" H: ~. w) F" L8 h7 ^
  51. SOUND_DATA_BANK_E000        = $1F$ \0 W& D% f( u. E$ s
  52. ;-------------------------------------------------# L  o  X  h/ N( I' V
  53. CHR_DATA_BANK               = $201 Y9 r9 |) M9 M9 L
  54. CHR_DATA_ADDR               = $A000
    / y% X1 W- J6 _5 `0 z+ s5 m
  55. ;-------------------------------------------------- y' o/ L4 E6 U( }2 g' r
  56. PROGRAM_BANK                = $00
    " B6 R) O2 A- t3 m& ~0 T" Q
  57. PROGRAM_ADDR                = $8000
    , L1 ?, W3 v! h6 F) T2 T; h, K2 W
  58. ;-------------------------------------------------
    / I( `! [- J2 A7 ]: J2 \& o: G& z
  59. RESET_BANK                  = $1F
    4 m( k& Q1 Q- c7 |( Y5 i8 @
  60. RESET_ADDR                  = $FD00
    ' M; m  q0 j6 ]
  61. + x7 l, j9 @0 o+ Q/ k
  62. ;==================================================
    ' k+ j0 @, m, I( B, r# k* G$ @0 _; C
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    # I% u7 s/ b; b3 `" @8 w
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    ( t8 \' D5 q( h/ C! w8 ?% {/ t
  65. PAGE_SIZE           = 5                     ;每页节目数6 K' h: \6 b$ Q

  66. , a1 C3 U, s+ @5 b" a! v: N; D* Z
  67. ;==================================================
    + U) E; z- s! b+ ]% N% A
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    2 ~+ f5 T$ ]- E9 E
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    * U7 M, O+ t- i
  70. .ELSE' Q" v. l$ s2 C8 w& r  Z0 Q8 f
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    : I& p" [$ F- {% C  I$ n, a
  72. .ENDIF
    5 t/ p9 N9 S3 l& a* q1 b* C% r

  73. : j  p* O. F3 k# M$ f
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引4 @1 Q0 ^% `' |  J* Q6 k

  75. 6 W5 y* Z5 d* ^) z9 P, R
  76. ;==================================================- i" o: T9 ^/ V& u# {5 X/ P. C$ P
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    * x7 ]# v3 a% y& i
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 22 E: y! W7 t2 q/ e
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    + s$ Q* H1 a# N% T1 o) N1 B: H& n
  80. ;==================================================. t# |; t% e5 _% j6 T* V# I: X1 F% C
  81. Caption_Text_Pos    = $204D ;标题文本位置0 p9 S/ V( ]- ^+ j$ ?, w9 k* u) D% U
  82. Author_Text_Pos     = $2324 ;作者文本位置& X: A$ [2 d+ ~, \: A" q! B# {
  83. Date_Text_Pos       = $236B ;日期文本位置! `7 U( K& E2 L- I; [1 J5 P
  84. ;------------------------------+ ]) N# o/ h$ p" T
  85. ;------------------------------" J0 V) v% J. P0 e# L
  86. .IF SOUND_BAR_SHOW_ENABLE
    + L. ^+ e/ S6 i2 W# }9 L2 Q8 d+ Z
  87. " ^2 T& |4 c  N( X- r1 a8 G
  88. Play_Index_Pos      = $2273 ;当前曲目位置2 ^6 l# a2 y! s. ~% n
  89. Play_Time_Pos       = $22B3 ;播放时间位置. t/ u3 _  S. v8 |( _
  90. Play_State_Pos      = $22F3 ;播放状态位置4 R0 L. L. I" m* a9 j- A
  91. 8 o4 g; ]0 d2 \8 y: G: \% g
  92. .ELSE
    $ U- a, ~! O; C! f! r
  93. $ [+ v3 v4 C! K! h
  94. Play_Index_Pos      = $226C ;当前曲目位置
    : D5 l+ x9 w9 i2 I5 {# U
  95. Play_Time_Pos       = $22AC ;播放时间位置
    & A( z  _7 j# Z* V
  96. Play_State_Pos      = $22EC ;播放状态位置
    5 F7 S6 K' q$ \. S7 H8 \; T

  97. 5 x2 a1 h( D( k3 y( |
  98. .ENDIF; o# q4 U+ C- `  t4 O! L; ~
  99. ;------------------------------( j8 P+ Q! t& S
  100. Track_Name_Pos      = $222B ;曲目文本位置) ?1 E8 K5 |6 C+ l/ [3 a+ _2 E7 J
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    , \1 |9 g4 y" n9 Z( Z- p4 _
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    ! q6 L% x- Q7 x, n" S% W& J  I
  103. Sound_Bar_Pos       = $2269 ;音乐条位置4 d, q0 b) J$ X
  104. ;==================================================5 R3 V3 v  l  i. V  l$ Y* v
  105. Scroll_X = $00
    + W( y/ k0 L: H! S
  106. Scroll_Y = $00/ M, q6 P6 p' }2 t! `4 }7 j9 \
  107. ;==================================================
    ) `8 k- \1 Z7 G' e1 n
  108. Sound_Ram_Addr_1       = $0100
    + Q" K$ Q% M: D6 }# a5 p" ^7 n
  109. Sound_Ram_Addr_1_Size  = $80
    4 i4 B( l* }* Z$ X6 d! P
  110. Sound_Ram_Addr_2       = $0090+ R+ ]+ n3 O4 C& ]4 B  r8 U& `3 S
  111. Sound_Ram_Addr_2_Size  = $70
    * q# E0 k% m: D
  112. Sound_Ram_Addr_3       = $07006 B' s1 [3 g1 s9 P# \
  113. Sound_Ram_Addr_3_Size  = $00
    " d  @' `; E) S6 m6 ^
  114. Sound_Ram_Addr_4       = $04000 I4 s8 h2 c: W! y
  115. Sound_Ram_Addr_4_Size  = $00/ M  I; i0 S3 z
  116. Sound_Ram_Addr_5       = $05006 r' q+ m- W" c- i( B9 M2 Z. u
  117. Sound_Ram_Addr_5_Size  = $401 p0 Q  n8 o- `* A9 \. {
  118.   M$ \2 Q# {9 ^
  119. OAM_TEMP_ADDR   = $0300: S$ l/ i5 x- \  ]7 R8 O+ r

  120. + U" V$ }# Z$ t* ]; K8 o* S: E
  121. ;==================================================
    6 A2 C4 k. G) I7 K. [6 |) {
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    ' ]* ~! F5 H% K' d( s
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器9 ?9 Z% Y$ X- d; v: F+ w0 F- m, a& F. {+ c
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位# V! ^& F0 |. v5 `
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
      Y% p% d3 ^& w2 u4 Z
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1$ A& \" v: w( q3 W
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 ( v/ D! {- b  q6 G
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加5 y* s, [! W1 f/ j3 \$ K6 C
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    0 S6 \+ n7 b8 ]
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存( s' S2 T: I& K# `* X7 a4 S
  131. APU_STATUS              =   $4015   ;声音通道切换
    " C0 A/ T1 c" T* W
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    5 t; W* j: B: m; E
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通' z# H( i6 r* f/ N/ b& z
  134. ;==================================================1 K5 |9 m5 X6 z& Z2 i
  135. MMC3_BANK_CTRL          =   $8000( `5 e7 {4 L5 p/ L/ a" H
  136. MMC3_BANK_DATA          =   $8001
    / H& ]* h& S( F7 m
  137. MMC3_MIRRORING          =   $A000
    % z2 N( o& ^9 E) f4 R
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    0 w$ R; s$ r% v$ u
  139. MMC3_IRQ_LATCH          =   $C000
    1 n1 s4 a1 b6 ^/ I6 R; K2 `
  140. MMC3_IRQ_RELOAD         =   $C001
    : H+ Y8 I3 S1 T' h3 C
  141. MMC3_IRQ_DISABLE        =   $E000/ u" h. S" N: `. g
  142. MMC3_IRQ_ENABLE         =   $E001/ p9 w+ ^* A; C! E+ V  }' v
  143. $ i' |7 E, ^6 W% ~/ |" j
  144. ;==================================================; g' w+ {% z& j) r, d+ x2 O
  145. PPU_Addr        = $02004 Q1 n1 W. M$ `
  146. Palette_Addr    = $02C0/ P# V" a- e" b6 u/ W$ O
  147. Sound_Bar       = PPU_Addr+$E0
    ' n& U5 T# e" P, x
  148. ;==================================================4 Y, O) q9 F* {; C0 p, k
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D5 R  l2 g& A, O; @/ o* D" e* |
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    % @* k+ W8 V; t  ~! d3 o7 f. Y* g
  151. PALETTE_UPDATE_MAX      = $2C) U/ [* `0 k/ Q$ k! J7 t6 S
  152. PALETTE_UPDATE_MIN      = $21
    0 W7 R1 d: c4 C/ }
  153. PALETTE_UPDATE_INTERVAL = 60
    + \$ N+ G" m- A9 g$ U
  154. ;==================================================
    ! J8 ]. x% }! \7 w
  155. Sound_Bar_Cnt       = PPU_Addr+$F0) _- A% F3 X5 g: S
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    7 t3 @! m( g0 J1 K+ X
  157. PPU_Addr_H          = PPU_Cur+$03
    0 R% P' p+ p! j. W9 G
  158. PPU_Addr_L          = PPU_Addr_H+$04) G6 E1 c8 F) Q+ W; Q, r
  159. Screen_Ctrl         = PPU_Addr_L+$01
    + n& I  ^9 O4 Z% }- v
  160. Screen_State        = Screen_Ctrl+$01
    ) y$ w" _2 b. h% H( v4 n3 d
  161. ;==================================================
    2 H* Z+ t0 F/ z7 J+ n! }
  162. Use_Ram_Begin       = $50
    ! n* n: m9 y+ [# D
  163. ;==================================================
    , W$ O' t3 w, t: |
  164. JSR_Addr_Op         = Use_Ram_Begin
    - T! n; \, i  c: H
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    . e- @! g1 I+ e. G  a+ M2 ]& A
  166. JSR_Addr_H          = JSR_Addr_L + $01! y2 x- g! }: f1 O
  167. JSR_Addr_Rts        = JSR_Addr_H + $01/ d: s% D4 u- `/ u' H- \- Q. H
  168. Data_L              = JSR_Addr_Rts + $01
    $ N$ A) a5 T; u1 D, L; N- a
  169. Data_H              = Data_L + $01' O( f# n( I7 \6 g# a5 C" z
  170. Data_Cnt            = Data_H + $015 Z* x% ]0 \+ d; n8 N7 I0 n
  171. Data_Buf            = Data_Cnt + $011 \" }$ N0 y+ [0 S; Y6 `! [
  172. Nmi_Time_Count      = Data_Buf + $01
    $ G+ A, {) O6 y! E% A* j' }. ~, G
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    3 @' S7 D, Y" C$ p3 D( d
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    ; M0 J, H3 l+ S

  175. 4 N- |' @) K# f7 T: S( B5 D2 ]
  176. ;调色板刷新标志
    / S- ~) n5 {: V+ ^5 K8 ~  A5 P
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    / k$ d+ @/ i/ `

  178. 9 S/ Z) r. l& f+ t& L
  179. ;当前帧文本写入禁用标志
    ( @9 k( z, H# d1 A1 e) _
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    3 o' @: G' C$ z0 T

  181. : J" E  I* ~% h# a
  182. ;==================================================  Q8 Q' N5 ^- w* k1 u8 S6 c" k
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    6 \8 h# v/ Y# R8 P3 _( i
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    4 ?; o2 g. f( @3 m1 L
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    4 H& u3 v7 r: m/ `& ?. E1 l. v
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间) _# A: O9 s+ F5 r  x3 {9 H* I
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    ) F% C. z! E& I" A3 g, j, I  S
  188. ;==================================================
    0 ^1 {& Q3 N, P6 o" ?1 N( W( X8 {. G
  189. Key_Keep            = Text_Disable_Flag + 1
    ' s8 X' u" W! f. ]
  190. Key_Once            = Key_Keep + $017 q/ O* I- {2 S7 }; W) n9 t3 f: G/ ]
  191. Key_Kemp            = Key_Once + $01
    0 Z: Z. r7 A- ~5 m6 X  ?$ D$ Y! |4 w3 B# N
  192. Key_Temp            = Key_Kemp + $01
    2 c) V$ L, j/ E2 K, k; |
  193. Key_Getv            = Key_Temp + $01
    & s% J) v; S% N& Y$ }
  194. ;==================================================0 s5 A. o+ ]+ i* s$ W' k3 i4 A3 c
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集, \2 V$ {/ K+ a% E1 B
  196. Music_Item_Last     = Music_Item_Cur + $014 Y0 ^0 h# V- H6 x- {7 y( ^
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集7 T2 z5 C- h) I2 _& h8 O( t
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    8 g. S$ V! \5 p
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    . M) a/ O. \* ?, s
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    / g0 G( |- Y- N- @( Y6 U
  201. ;==================================================, R( n- x% z$ w' a9 y2 V
  202. HEX_Data            = Music_Stop_State + $012 D- |6 s1 u2 B0 J, ^$ B
  203. DEC_H               = HEX_Data + $01
    / z! y0 f9 d. F' i
  204. DEC_T               = DEC_H + $01
    6 p' V- |7 `3 F- T
  205. DEC_L               = DEC_T + $01
    . i; F( F; L" q& ~
  206. ;==================================================
    2 {- \; I4 _% d4 q7 ^$ Q2 a- G
  207. Time_S              = DEC_L + $01
    : E# ^- f' L1 w* [, H) z- j! Z8 S4 y& \
  208. Time_M              = Time_S + $01
    % M$ A7 P  `* [6 o% Q
  209. Time_H              = Time_M + $02# ~/ O. G" x- k3 W2 j5 I
  210. Time_Cnt            = Time_H + $03
    5 `: F6 n, G+ k& M
  211. + W2 H2 l* S( D, k7 f3 z
  212. ;==================================================/ N/ N9 d' D' [: t6 j% ^
  213. Music_Bank_8000     = Time_Cnt + 13 E1 P2 A' z* i0 [7 N/ e. _
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    $ d4 v* a" [0 }/ U
  215. ;==================================================6 ?: v, D3 ^5 W+ {1 {
  216. Scroll_H            = Music_Bank_A000 + 1( A9 y( N- O; g: B4 n. e
  217. Scroll_V            = Scroll_H + 1% o6 n) l) H! f$ n  y3 v6 v, Y7 |
  218. IRQ_Process_Index   = Scroll_V + 1
    $ Y- U  S' J- ?; C
  219. ;--------------------------------------------------; p1 k' c( s( @2 G/ _8 I1 M7 b
  220. Page_Cur            = IRQ_Process_Index + $01
    ' m  }- M6 z2 ?. A
  221. Page_Cur_Index      = Page_Cur + $011 J: d$ @7 Y: A: v5 E
  222. Page_Cur_Cnt        = Page_Cur_Index + $01$ Z6 ~1 x" y6 i+ o" m# v! W6 h
  223. Page_Last           = Page_Cur_Cnt + $01( \8 C  f2 h/ ^* p& I
  224. Page_Last_Index     = Page_Last + $01
    3 X* N& P5 E9 _7 X7 ^# {- {
  225. Page_Last_Cnt       = Page_Last_Index + $01
    / A3 x" V% s: k& u8 j* v
  226. Use_Ram_End         = Page_Last_Cnt + $01
    . n) ?7 v8 X, A* d) O8 ^2 |% X0 R
  227. ;======================================================================; ^  {0 A* e0 X0 r9 O$ h" G
  228. ;音乐数据块
    $ x) E" I; {3 O- @2 R

  229. ' ~3 p2 v9 X1 r% S
  230. .IF SOUND_BAR_SHOW_ENABLE5 h) j! l6 z( {2 B$ \, c

  231. $ G8 l% c8 x- _* n' i1 l. [
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    + D7 N1 l: H4 t1 P! s% H" r$ A; }
  233. .ORG $90002 |# }+ B) [/ |4 ?
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"  q3 c& W+ [2 u0 ~  K/ g4 o

  235. ' Z7 u% o  k7 S) m% ]
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK2 P9 c! F; a% S
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"' \$ r. P7 j, Q( Q- d: n8 Y

  238. 1 b4 _7 n; F2 Y; w# h' u6 G" v
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK  G& h. X, `+ G6 Q1 u4 }( X5 u
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"/ S" ^6 z$ {0 I+ b2 D6 ?0 k

  241. 6 M* M) t/ d0 W, ~6 Y) J
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK' y# ]) f6 H" ^* S
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    ! B% ^: U2 U2 y% Y

  244. 4 y/ J: c* K3 j( X: l4 b* L4 F
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    9 M6 Z$ d  A1 z7 k# w) a. f6 g3 v5 |
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"# U; ^3 ^4 v1 T

  247. $ I6 \% {3 |; ?4 w
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK6 p% d; ~4 O" l$ g+ N! K" g
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    1 f; r3 ?7 h( Q- m2 @9 q& S4 x
  250. 4 f7 d6 f! o0 Y, y+ T! b+ T
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    7 j* t8 ?8 J3 @) i% y
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"0 ?" C3 ~( N' R! K5 }
  253. 1 t1 p+ Z( W( |4 E
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK+ K5 I9 i, X6 e! e0 o" q
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"+ w7 V' R, P" X

  256. ' A6 B0 L- M% Y; r& ~
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    / S, ~0 T5 S; c+ z
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"( n7 ?0 L# [& ~. e( q* R! H" M
  259. 3 T! K: m7 b3 g+ M6 H. Q5 C; ?
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ) }3 v- R( t' F3 [, e/ Y7 ]' f$ p
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ( s! a4 E1 b- w+ B2 Q0 N4 ~. F
  262. : m" _. F9 M( r4 r0 J2 J
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK! r. f5 ?( d7 V4 {" m
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"- g7 I4 G6 T* K# B% ], s9 D# y

  265. ' I% \2 y, u0 e! T  x1 |$ V
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    8 f7 K5 {. L0 j
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"% k8 ?2 q$ _  q! |: r
  268. , ^# Q) P: G! N* ]& b
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    ; D9 i+ f) @& @2 ]( H6 k
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"- [& |" a5 m+ e* ]! u

  271. 4 T3 d! {) z& J: k
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    1 v/ |% V+ E9 `# g+ F; L
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    " Z+ v; B1 C: b  B/ ~! ?

  274. ) b2 Z" y# T% g
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK( z: _7 j! E3 P$ ]( G8 ~1 }
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    7 j" C' N1 g. A. ]' g- x
  277. ) H/ ^. ^' K- f- M  t/ L
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    ' U, z+ i; k' R9 s3 O0 Y) Y/ Z
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    & E& Y# \; j/ W6 s  r
  280. / A/ h0 \# u3 Q3 a( p: O
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ( o% [+ N7 m/ g1 U; h- I
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    ; Q1 V( _9 S/ u( D" g  d
  283. 2 e6 [# D9 C3 m: e( Z( b' |: Q
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK) Q* h( \, `" ]* @
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    2 I+ s1 R1 E$ w; m

  286. , @) }: C8 n' i) z# B# U, p
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK& G) O& c) i: j: n3 @0 ~8 v. [
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"/ u' p' c7 }+ b) d) X
  289. ! {2 F% Z, p; W* T
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    1 d* s, S+ Y/ x  M4 }, U' m. N
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
      v4 K, Z1 r6 B' R7 @  O  m

  292. ) k' u$ I3 E# y/ O6 n; f% R
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    # s" w. B$ U- N
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    " I4 A7 c& t$ I6 n2 Z
  295. 5 P$ t. s  t$ w4 c4 I8 e$ G* `
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    $ @& @! _8 A" Q$ A; n' e, x( T8 y
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    9 ?% S/ Y# v' u8 x) y

  298. ; W" h8 m9 a3 z
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK+ n6 M, I" ?6 u0 P+ a7 P
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"0 j/ y" S; O: S/ x' F* h
  301. 7 x0 I) T- V; u1 q5 }* }8 n
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK4 X" n& v) U; D" J! p
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    * p( \3 c4 V# B0 S0 C5 h0 {
  304. ) O, V3 |" h; R) G  I7 N/ H: ]
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK: L$ K% A5 s  O9 D
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"& t( U0 n+ ~% Q9 ]" @
  307. 7 T  h1 t* s" w+ |' r" X' q9 ^
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK0 S0 q  |+ \/ ~4 I* _( |
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ; N! @5 Q4 y& n, l6 R5 r4 \; ^. s

  310. 7 S1 t4 L* i7 d) P. a" p
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK2 y) h% {; Q- @+ {2 l; t+ u' G) f
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"+ y. y* R; G" }4 o$ w: f8 n, m3 t8 ?
  313. * l0 j3 j0 T& S3 s/ X# i# v
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    0 M) D! {. d3 v# X
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank", o' p; q, z* m6 D- Z

  316. 3 \) s0 G" C0 s; ~, N; {/ R' X
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK" F+ c) _+ R, O' L4 f! l- j2 Z
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ; ]3 |& L3 y9 {# ?" p6 [4 ^2 u
  319. 8 }: \: j  R3 A5 y" ~; y+ G
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    : W0 X  b5 D) l, T
  321. .ORG $D400
    + n! ~( D% I) o
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"* a, O/ a! L# N; j* Z
  323. , g+ K3 M( p! d1 ^( C6 m# ]
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 u  P( U  U1 N7 A9 K1 R% c
  325. .ORG $D800
    / d* e7 n6 x( N- m9 q
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"% ^$ u, v! A; v5 Z, k* T/ C
  327. - b0 ~  r, H, M/ }2 p9 g3 }( ?
  328. # P: _% A& J0 J4 d/ I
  329. .ELSE
    . b& q/ s0 u$ Y" L+ R, |% G
  330. / V1 r$ s% g4 R0 ~" M
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK1 b+ K; n. [  r! d- R/ {
  332. .ORG $9000' I( j+ `. A8 S/ k) d8 s9 r1 ?* j. v
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"; J6 a2 [- v, i  {" C: `
  334. 8 G  y% h7 J- _& `1 d
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    " D; f3 I$ U2 g7 V
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"2 y6 ^/ ]( A( r* O
  337. $ z. L) H3 x% W0 [- f8 J+ a
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK) [! ^8 L, A2 j( i* _; V+ c
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    : s, L' \, ]+ k

  340. ' o& P/ i7 i9 U" S9 U
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ! Z" L) A1 r2 U
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"; `. _( R# S5 W/ H0 G

  343. / P0 B3 A' q4 g
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    : e$ j6 w3 t- o" J6 r1 P8 F
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"( ]; o! G3 T! G+ V/ M& l! v
  346. 1 r- y0 [  P6 |
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    - c9 M4 |$ S: J0 S3 M% t3 i+ H) |
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    * `. d7 ^: @( P% @" V

  349.   z" y6 q- Y7 F1 r! _5 `" z
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK# \1 x! d6 t7 q
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"5 q. \$ c/ Y0 o
  352. 0 |7 }* u* e% `5 J( o
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK& K, a4 K6 _. G* Y+ a' k3 A; [
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    0 ]3 b0 w9 [! P2 W0 K3 h- a% F0 F
  355. % ]( g+ Y, R* p" d
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK6 T* p* b# K5 ~
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    8 \- }1 }) Z) G1 h
  358. : y1 e2 W$ e1 E; g
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK. ^5 L2 y1 n- l* a4 H
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    - m6 a* Y( R1 C: ^7 j  v% a$ d

  361. ( l3 ~/ @# k) z: L* T0 g6 t# q! e
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK& W6 ]( R, S0 B: V' c* I+ c
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"# D: F0 }: A, [$ s
  364. - q. C$ E4 x. n0 S7 N  M, N8 M
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK1 E$ b' G( h( F3 r  j1 d, q
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    & ]( k) S8 d8 x- B
  367. ; y9 \% G# c/ l* g/ _8 U% N
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    4 y: S2 k# ]+ l3 f$ `
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"" T; ?1 H" {( C
  370. 6 H, J" v# X6 M' [  @
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    ( z9 R6 \- c7 ?( u
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    - N& K2 w2 c5 L) K* f

  373. ) O7 {7 j2 L6 y& Y: h1 O
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK$ C6 o+ I6 H: z, T3 t2 y2 J% Y( l
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    2 W5 H% T: `$ C1 l, p
  376. 3 A; m/ d# M; s; M2 j1 r0 v% e) E+ }
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK; d/ x3 I# F" j( f- C) a& |7 i7 o
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    0 m' T! M/ k9 ^6 z) P1 y. q
  379. . g6 o: @; i* ?- j  W
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    2 l- s) O7 m1 K3 X1 {; u5 Y3 H
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    6 L( _$ ~+ Q# r# F3 n* W0 C: ~, h

  382. 9 {" |5 L' P* ?4 ~. ~2 K  J5 D% U
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK# s& Z- t8 B6 P+ y# S4 s6 N
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"" f% b3 x% y' W' X7 _( _

  385. # _$ p  G, k6 P/ c1 W
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    7 {4 j' g3 l. S2 q5 Z4 u  ~
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"; ~9 ^5 B# z5 Y: k, L$ J$ p$ _, o

  388. ! r/ x; S" E+ h- ~
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK9 b4 |5 }# h0 d; j- T+ f2 }) l
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ; A6 U; c& P2 C2 |8 w- l

  391. 1 C& a5 `/ z- u4 X8 ^* V* O
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK; K! a! I5 A, n. z6 X9 Z& g
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"& t0 T2 b2 q* ?  Y, }

  394. * U) v$ ?8 ~2 L4 }/ f- r. X
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK9 h" V+ o; J; G' L  [$ r0 S& N( M
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    # f. c- ]! B- V$ f+ Q! f: [
  397. 8 h0 A+ T3 Z$ q8 ~; B! S: B
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK8 q8 }; P0 P4 `* j% Q
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank". I. Y3 |4 H# {  b9 P
  400. 4 `$ c' P( M8 R+ v. o' {( `: R
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    9 t0 ^5 @/ E; r1 _/ R
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"& {2 R! l; z9 d5 v$ i

  403.   Q% p- z! X3 x2 R* K4 I
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK3 G* H+ w6 _. `7 [* h- f9 w
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"- s% t' Z  ~! g% V6 ~
  406. 0 j- J" n* W% H+ k; t" z/ M: {& T
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    2 l8 J* ]3 [* Y
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    2 z0 E& d1 j: K. W; `

  409. ) t; d9 L- q# M; J1 x! B4 R9 ^
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK) h5 c( r, H) A  ?
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    % s5 W* i( @! N
  412. 8 I- u/ `- Z. B1 U- K+ v# E
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK! h; I/ f" |( B4 p4 J9 K% G% |/ F
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"" y2 C& b6 f( `+ ?2 L
  415. 4 W9 b9 \$ v0 {$ z) _
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    " Y) U, _/ `/ n' L, O7 g
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank": N0 K/ L& S' B$ [

  418. 0 s) m1 s! c. E3 }
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    " r5 q  {; W9 {1 r- W
  420. .ORG $D400
    # X0 Q$ _7 R/ F+ ]) Q, n
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    % j& L7 y, m* _( _$ @1 @  ]( I9 o
  422. 4 e, c# x% O- {$ d! V/ W, m. O9 |0 W
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    . T9 K9 f* ~4 ^  \
  424. .ORG $D800; S8 X* ^8 ]) }& D* Y9 s7 S* A
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank") Z+ w8 [/ D: i

  426. 4 a5 A4 z. {, [, L9 W2 n8 M: t. R3 K
  427. .ENDIF6 n+ l& a/ U4 s, w7 I
  428.   N; |2 H9 F5 s8 d
  429. ;CHR图形数据
    & O: C# [) d1 N
  430. ;======================================================================: x7 d8 p' r( @; w
  431. .BANK CHR_DATA_BANK
    " W+ U% W, V2 c7 f! L
  432. .INCBIN "chr_bank/chr_data.chr"% i3 P, l- u% B" W" x

  433. 9 r' Z, W# J8 D5 E
  434. ;======================================================================
    9 P! a1 B1 i2 ~9 W' i* i
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK1 c3 q( p& i5 s  {3 n$ W
  436. .ORG PROGRAM_ADDR
    7 b- k# p, u! X& |  d

  437. ! d& ^8 _. ^- d% O
  438. ;==================================================6 h7 d, m5 ~$ z9 v1 h  q
  439. NmiProcess: R" ~/ k- b/ x
  440. . V4 O3 q: m+ P% R
  441. ;关闭屏幕控制
    * {: C) X1 K7 F) T
  442. LDA #$00
    $ ]4 _" @  S7 `6 ]- @$ P9 U7 t
  443. STA PPU_CTRL5 d9 l7 |; U% d* }# h8 P9 ?
  444. ; g& W2 w- L5 F$ Z7 ~* q& b& r! W& r
  445. ;没播放音乐就不需要触发IRQ
    ' ~; C/ ^/ Q3 O; m
  446. LDA <Music_Stop_State
    % r' ?' f( x* I
  447. BNE NmiNormal
    . p" H5 t, g8 T7 T+ E6 Z

  448. + h* J+ N  [7 h1 m6 D) e, ]
  449. ;重置IRQ索引
    / Z% A8 ~( e3 O3 P$ k6 W
  450. LDA #$00  H  N+ I% H! N  U
  451. STA <IRQ_Process_Index
    / R2 N( R& ~! }; {: w2 c3 T' R

  452. / w, k' ^8 h' G% A3 B
  453. ;时间秒数为空则跳过, B( Q6 @; `6 |7 I; W, L
  454. LDA <Time_H6 e6 ]9 K8 B( p; @) O; T  i  C
  455. ORA <Time_M# d$ D0 y0 s. g' D! W& E
  456. ORA <Time_S1 K/ |& P5 c0 N3 K( U
  457. BEQ EnableFirstIrq
    8 T) W0 D6 v# e' U) Z: E

  458. - w+ g% _4 H' [; j( d! O
  459. INC <Scroll_H" R+ z% b4 H: j  K1 \8 s* R3 o) X

  460. 2 K5 A0 p( f" G  h0 b
  461. EnableFirstIrq
    ; Z# ]- h- e$ P
  462. ;80条扫描线后触发IRQ
    ' |3 ^4 H7 ^* ^/ [4 _: S
  463. LDA #IRQ_SCANLINE
    & e6 s( b. a% G$ I% I" X
  464. STA MMC3_IRQ_LATCH
    1 W2 ?1 H2 o, s; G8 l
  465. STA MMC3_IRQ_RELOAD- i  P8 m0 W7 i2 n
  466. STA MMC3_IRQ_ENABLE8 ?" J/ M! S  }1 U1 T
  467. CLI1 N; X, C/ R  S" T3 w$ r. n; I
  468. 2 @5 U' |9 u! C- E4 w, U- H
  469. NmiNormal* {9 Z* t# v) Y* ?

  470. $ K# y5 z4 b0 G
  471. ;处理PPU图像
    ' O# U" M: ~: D+ _
  472. JSR PPU_Proc
    / x  q' s9 @$ j

  473. 1 J. a+ j+ a% ?4 Q9 g
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)# x  r7 W& i% L7 S, z
  475. LDA PPU_STATUS
    ; n/ q! p- I5 y$ T( v4 L% b6 h
  476. ;LDA #$00, H$ z0 A' r' C+ `$ ]1 x" x
  477. ;STA PPU_OAM_ADDR" Z/ t0 ~2 ^6 X
  478. LDA #OAM_TEMP_ADDR / $0100
    $ y% ~  }- `0 X+ q5 W! m) W' h1 y
  479. STA OAM_DMA
    7 t+ Z) V' c) R4 A2 S( F
  480. . s, y$ h' B6 h3 r- @: Y0 E
  481. ;启用NMI中断
    6 O3 m  {0 Z4 n' [* ^( [
  482. LDA Screen_Ctrl  ?# ]6 U" E9 ^! t* r% I
  483. STA PPU_CTRL
    . C& j. B3 p1 d$ k

  484. 3 F7 m# a0 P. H( n
  485. LDA <Text_Disable_Flag
    5 b2 a, t& G; z; m( Z* P
  486. AND #TEXT_DISABLE_RAM  p7 I: l  H$ j4 b
  487. BNE Nmi_Sound_Play
    # z- E. V+ m7 m( n5 }4 c- \
  488. ' l* K# E. {# t
  489. ;处理手柄输入5 x" p' V- b7 R8 V% O0 K
  490. JSR Key_Proc
    2 [  d3 N, C" h/ a4 w5 q
  491. ( Q! m7 H; ~# F! N
  492. ;切换音乐(手柄触发)
    - W% [# e4 m4 q! }
  493. LDA <Time_Wait_Cnt
    / q2 `, Z* w# r* Z, N4 b4 p, ~" {
  494. BNE Nmi_Cursor_Arrow
    / {4 x/ ]' |4 q, N% C# m$ a6 ?, }
  495. JSR Change_Select_Item
    2 `/ `% K& o0 [  t' g( O, w9 G

  496. 3 h9 |7 J- w/ e, j  j9 h! D
  497. Nmi_Cursor_Arrow- E9 {5 g& |9 h
  498. : H$ }: Y' G* \' [, P& t5 p$ @
  499. ;处理光标箭头
    1 A! ~) d, v) O3 g* ]: l& u
  500. JSR Show_Arrow
    5 c* O# l: G4 r$ y' E1 U. G
  501. : I/ h/ R/ w5 O: ]# {
  502. ;更新调色板7 Z* |4 n" x& q0 g+ W: O( b
  503. JSR Update_Palette_Data
    1 M* o1 y' U0 A
  504. 6 }) C! W7 L8 N: Z
  505. ;显示时间(缓冲)& N  F$ c  j, X/ H# f: _* K
  506. JSR Time_Show
    $ N' |7 b4 k" ]$ S3 N0 ]; U% g2 L

  507. : p" c' K2 s$ U4 D4 b7 R
  508. ;音乐显示(缓冲)
    0 p8 ?, Q# s  b9 q* i0 O5 h6 _! |
  509. .IF SOUND_BAR_SHOW_ENABLE
    " z1 |* ^& s" c) E0 N; v/ [( D! k( a
  510. JSR Music_Vision
      Z' N% L3 H" ?* f( l
  511. .ENDIF
    8 ]$ E, W( ]4 E  ~) @6 X
  512. : V& O8 ~; e3 N
  513. Nmi_Sound_Play# u/ T6 p0 X* B8 s1 @
  514. ;播放声音+ D+ A2 C4 W  j
  515. LDA <Music_Stop_State; {, n* M" q# _; N9 A# G! n: z, j
  516. BNE Nmi_Time_Wait_Set9 }  B+ u" z7 c! k3 p
  517. JSR Sound_Play_Proc3 a2 _2 p  p# ~( |! f
  518. ( f  _/ C! M1 n( w" ^
  519. ;播放计时
    0 K( q2 j8 m) l$ T5 `, E
  520. JSR Time_Count
    2 g% {* q/ W' b6 I9 V! i% c
  521. " k5 Z# C0 i* S- B. Z6 m
  522. Nmi_Time_Wait_Set
    ( P8 C3 M8 c( {" w4 H; t0 D
  523. LDA <Time_Wait_Cnt
    9 M' }. X! ^7 u( g
  524. BEQ NmiNormalProcessEnd
    - c5 n% A# l8 f3 C
  525. DEC <Time_Wait_Cnt. ]7 S( @' X5 Y1 k9 [
  526. NmiNormalProcessEnd" I9 m" |4 N9 H5 b9 H
  527. 0 x6 a9 q$ b* V& N* R, Y
  528. INC <Nmi_Time_Count9 a/ w/ Q, m4 u- g. r0 q8 w1 ]

  529. 7 l& l# T' S3 H/ [* ]9 s! `3 K
  530. RTS. |2 f0 Y- {2 P% E* O
  531.   E9 i9 @7 j" w, _. g3 P6 K! [" W
  532. ;==================================================$ f- |' R+ Y& ]& _  c8 Z
  533. Init_MMC3& ^" T+ d+ i0 `- \( J. _
  534. ;==============================& L: p/ }$ w5 G7 t( t0 F, T, \
  535. ;禁用IRQ
    9 G5 j! o: [; m
  536. STA MMC3_IRQ_DISABLE
    " _8 \8 k9 K- y9 ~
  537. 3 x  O0 k- C. o2 O$ q$ s
  538. ;水平镜像7 s! J# c; @7 E2 G' P6 B" q
  539. LDA #$01
    - K5 H- U8 b: a
  540. STA MMC3_MIRRORING) Q: ?/ H4 B" `7 y& S) q
  541. ! j# I& A* h( V& i
  542. ;初始化图形bank
    6 {) z$ Y! f3 U0 b( m
  543. JSR Init_MMC3_Chr_Bank
    6 o7 E& ~. L: c9 F( i9 |

  544. 0 H- C5 G2 o+ d: F
  545. RTS
      y. F8 z2 s- Z8 }) b0 C  N
  546. ;==================================================0 I2 U: j8 Y, d" a3 P
  547. ProgramBegin;主程序
    ( c: q8 e* V9 h( G6 s
  548. LDA #$00
    4 C: F$ J% f, b+ w" r
  549. STA PPU_CTRL( K# H: L* a0 |
  550. LDA #$00+ M+ G7 k5 v, M" h" \
  551. STA PPU_STATUS
    . z5 i4 D; x. o) o; H8 q
  552. STA PPU_MASK
    ! g6 z0 x1 Z* L, Y
  553. STA JOY2_FRAME
    % R: l' Q$ m* N: G2 [

  554. + u( c0 h. t( A
  555. STA PPU_SCROLL, B0 h8 z. i0 M6 O8 l2 N* L
  556. STA PPU_SCROLL! n1 E0 s2 F& X( G& O+ u. A
  557. & V9 x5 J# `% A$ y$ D2 p& M0 m% f# t
  558. ;==================================================  F; N" R0 I: r9 D
  559. LDX #$FF
    * b, S# l8 u$ ]" Q
  560. TXS
    * l: X6 W5 i. `. |% \
  561. ) b5 q' R, e. `  b& E$ l' Y. T! I
  562. JSR Init_MMC36 K0 V; k/ u4 G6 a; z, b3 Z, a

  563. # z9 B2 x; _' u# Z
  564. LDX #$02
    + J( Q. r" C. X- d( j
  565. Check16 r$ K: C! X) c! B2 u. {& X
  566. BIT PPU_STATUS
    ' J* N& j6 J4 U8 r. }
  567. BPL Check1
    ) U/ e% H! _- J/ ^
  568. Check21 m5 J$ q- i& n* o% E
  569. BIT PPU_STATUS
    ! L; j0 m$ V, f& u9 A0 o
  570. BMI Check2
    3 H# F; H; i3 x+ L1 x; g

  571. " t+ G4 e7 i( |. j7 @2 b' a# ^
  572. LDA #$0F
    & l4 e' V$ Y! b) d. y8 R7 T
  573. STA APU_STATUS! K* c9 o, n1 Y; y4 |1 O; P' o
  574. LDA #$C07 s0 s& I: ~6 L% @3 Y
  575. STA JOY2_FRAME- g' [' H7 V; w8 \+ B0 w

  576. - O# i5 c7 x8 e' w' r, `
  577. LDA PPU_STATUS) `8 c5 Z5 X, n' h1 D$ \
  578. LDA #$10
    0 T2 T2 [7 i/ ]& h
  579. TAX% t) d% P3 h4 u( X5 x# f2 P
  580. Check3
    " C) s8 I& |( M: `" F" |
  581. STA PPU_ADDRESS
    & f! ^7 k4 x3 V0 D2 y" w! k$ ~
  582. STA PPU_ADDRESS2 H- R) p% {: D  ~. y
  583. EOR #$007 b* Z* |% v/ [& y0 w
  584. DEX
    5 ^& a. v) }( P
  585. BNE Check3
    . N* z% `0 v0 q, k
  586. ;==============================
      ^" u* E# ~8 [5 B
  587. ;调色板清空
    ' g, W4 j: O+ ^) [$ J
  588. LDA PPU_STATUS7 R3 \2 N. u( e# V: T0 F2 c: @8 y
  589. LDA #$3F2 V, p# h$ m# S' S
  590. STA PPU_ADDRESS& H0 m8 I( i4 [) y$ G+ x
  591. LDA #$00, R' X0 c+ L$ _" L5 |( V8 t
  592. STA PPU_ADDRESS! E9 w+ k3 }" {8 P
  593. LDA #$0F5 R/ I+ v, ?/ o9 w" x( f! _
  594. Palette_Clear
    : q, T) R1 U+ f' V& L
  595. STA PPU_DATA
    : x7 f0 R0 B; j6 A' |9 o4 g
  596. INX
    7 e/ C& J( D5 n& L, S
  597. CPX #$20
    2 ]9 N* M) w' }7 S! x* ?7 d6 v$ f
  598. BCC Palette_Clear# N9 G/ g8 n) I+ E
  599. LDA #$00) W; q4 V3 e6 D8 T1 w$ }3 E" e$ R. u
  600. STA APU_STATUS
    " e: b4 ^8 g1 \( j9 M

  601. ( A8 a7 z- E- U0 D
  602. ;==============================
    & W- d# C/ B, K; K
  603. ;RAM初始化
    & R7 s/ m' y2 I% O. J
  604. RAM_Clear_All6 K! D, M# `  d. G
  605. LDY #$001 [$ z& n8 a' ~, K8 K7 P$ o
  606. LDX #$087 E' I, |  P# m/ q8 r$ O. J
  607. LDA #$001 m. L& Z$ D/ _0 x
  608. STA <$00. U5 N9 I( {- u: G* U# ]/ e
  609. STA <$01+ o2 s" G  }4 o: b# ?/ V5 h- F8 G
  610. RAM_Clear_All_Start
    & j" f3 @% l1 C( z
  611. STA [$00],Y: e3 N. ~5 |7 w" B: t5 L* l
  612. INY2 [, K$ c% E! A) a( O& o+ B/ d
  613. BNE RAM_Clear_All_Start
    + X4 K2 P9 R0 h6 P; g0 B
  614. INC <$01. i! \# x. q0 m3 `$ b
  615. DEX; U. G; S; |# D9 {5 X- P
  616. BNE RAM_Clear_All_Start$ E. ^3 W$ B, m' j- C

  617. + l. L7 \2 b! X. q" P$ ~! M
  618. JSR VramClear
    4 r2 w4 S( M" S' C, @0 i* F5 F! k9 J* x
  619. JSR VramInit' r9 |6 e0 ~4 ]* B* n$ |
  620. JSR OAM_Ram_Init
    # N) Z  {* F/ x0 u$ }: U
  621. JSR Init_Palette_Addr: d, {5 \" k3 O( t( p6 ?# H
  622. 6 ~- o: ^0 y' ?/ p$ k
  623. LDA #$FF
    + Q; b0 }& \( T8 q
  624. STA Use_Ram_End
    5 d6 ^7 y8 s% E, G4 k
  625. ;==============================& s- b- K( f# k, T! N# F: W: i4 c
  626. ;初始化背景调色板
    . s6 f$ L' k) Q; t, M- l4 d
  627. JSR Set_Palette_Color
    8 X( Z2 {0 d1 @* C; q  \& H8 g8 V+ w
  628. JSR Set_NameTable_Attributes
    7 Z6 `$ H+ \" `! r7 j4 s) s; H- X

  629.   p5 D* x5 |4 X" X
  630. LDA #$00
    - `3 g; y; T, i0 ~9 [  p2 z
  631. STA PPU_OAM_ADDR
    " }0 |* F# H" F- U) a2 z
  632. LDA #OAM_TEMP_ADDR / $0100
    . E% ]3 L; g5 Z* q2 ~
  633. STA OAM_DMA4 i1 n( d( f0 g# @# ^7 w

  634. ( @! m4 R% n( e* u- l
  635. JSR Sound_Reset_Proc
    / @5 S! Z# d# N% N  q
  636. JSR Set_Sound_Total
    - S! J9 ]2 `) O) F8 T' B$ y
  637. . {- ?2 X, b6 a! T* R6 h/ a# {
  638. Init_Start_Music' ?: f/ w7 c/ P, |
  639. LDX #$00
    3 i% A3 f( F* e
  640. Init_Start_Music_Write
    6 G0 x& K5 L$ Y$ P5 P; |
  641. LDA Sound_Start_Port,X
    ( p" L/ p' V) H. C  O
  642. STA <Music_Cur,X7 ?* R# Z- C' h" B& a
  643. INX
    ) @+ D" ?+ X$ c( H
  644. CPX #ITEM_MAX_SIZE4 e, p: P* A1 V0 P+ x! R- p( _
  645. BCC Init_Start_Music_Write
    " X- [: @1 R" j  S, O& w& |7 |* \
  646. ! \$ c) r; E6 h1 [1 _
  647. JSR Show_Music_Text
    ; f" d$ z: T6 o* Y) E
  648. 5 b, h7 L+ J; _# d0 p( q/ j' U
  649. .IF SOUND_BAR_SHOW_ENABLE
    7 n0 V' F( o  B6 x$ u' {# n6 ?/ ]
  650. JSR Sound_Bar_Text_Set
    ; G; y% p1 j- u; h9 K
  651. .ENDIF% c; P, k. _0 J) W* o9 _+ A
  652. 7 B. [2 U- y0 @$ u- p* P, C! X
  653. .IF Track_Name_Pos& X9 U; B: X7 |! K& [3 a. b
  654. JSR Show_Track_Info: w* h0 F% e" G, F9 T
  655. .ENDIF6 w/ e* ]+ A- ?( Q+ X* s( `% m

  656. ) X' z( T; g9 |& M9 B6 x6 F# B
  657. JSR PPU_Proc: C) E* y% K- P  A* x& n

  658. # H2 N* l6 h  @. f
  659. ;==================================================
    8 }% N- M5 z+ n+ Q& D2 g* W( q) d
  660. ;音乐bank初始化
    3 w( M: y0 A% ?$ z0 [+ z9 J, Z% `  z
  661. JSR Init_Sound_Bank
    6 D) j" J  p$ L

  662.   U: P, W% c- V8 z
  663. JSR Music_Show" ]7 d+ D0 _. a( E1 G0 |6 k  d
  664. JSR Time_Show
    ; c6 G: M/ B; l
  665. JSR Music_State_Show% q) r; d, E; G! V
  666. JSR Time_Delay/ x# d) \9 N3 j  x4 H1 K. x; G5 C
  667. 0 p7 t3 a; n6 o& n1 @1 O
  668. LDA #$01
    + S0 z( D+ f: S
  669. STA <Music_Stop_State
    & m6 e! Z, D1 x9 G7 i) ^

  670. 0 _1 o0 J. Q+ t* u$ S
  671. LDA #$88
    1 s+ Y4 a+ q( J/ n5 n7 r6 T3 M
  672. STA Screen_Ctrl; @2 S+ g# X* q. Q: C2 E6 H* a
  673. STA PPU_CTRL1 U( M, ~+ p) w. ]: H: i

  674. . Y% c! z$ [; s: O
  675. JSR Show_Page_Text
    ) c# |7 E, i2 F, d2 |5 [

  676. # r3 O5 @& J6 i3 A( D; P
  677. LDA #$10" F9 u* J0 B2 _$ `! _
  678. STA <Time_Wait_Cnt1 ]( `( B8 R# _2 S  _2 s/ D
  679. 4 G5 y* F! f9 Q/ `. D8 e, y
  680. Wait_Time_Over
    + {( h6 p+ z/ t% M1 d
  681. LDA <Time_Wait_Cnt
    3 B: u$ O3 c7 ]+ \& D' U7 @
  682. BNE Wait_Time_Over) P, u. t6 x9 X( j1 A8 P6 k
  683. 9 H2 h% t4 w' q( M
  684. JSR Show_Arrow
    / a3 P! f& F0 b) f+ q( M
  685. LDA #OAM_TEMP_ADDR / $0100
    % D8 C4 l! V* q# I; q# x& g, a3 X4 E/ W. L
  686. STA OAM_DMA
    3 R& z% ^/ K: O* @$ o5 b% z( U+ @

  687.   G: L- r/ I9 o5 ~
  688. LDA #$1E/ @8 C* H' P# p: `
  689. STA Screen_State. f4 B. U+ [. U9 |. x
  690. 1 T* N" k7 x; j  @: H1 c
  691. LDX <Music_Item_Cur1 _) k* N6 R0 Q1 p% s8 K1 L$ e- L1 a  v
  692. LDA <Music_Cur,X$ ]" T  O  f4 i- [7 J6 f
  693. JSR Sound_Init_Proc& Q/ g5 {% ^/ `3 \8 b
  694. , B/ K. B8 K2 h# b
  695. CLI
    1 v) N5 d/ u9 k# F9 L8 B( G- G
  696. JMP MainLoop
    ! ^% B3 W3 H. B' p

  697. & @* u  `! }' U8 S3 l0 e
  698. ;==============================. x2 b5 n9 ~: l( h$ o' Q; j7 \
  699. Time_Delay;延时等待
    . m6 }0 K/ ]" \  Z/ `
  700. LDA PPU_STATUS: O/ ~7 N. p& ~- X/ _( @- X
  701. BPL Time_Delay
    - i/ M' ^/ E9 p! N/ J$ F) ^# n
  702. RTS6 l; o# Z& R6 E+ W
  703. : X( F+ l. T3 X2 U! j  M. l9 J
  704. ;==============================
    ) D* i' i, p# O0 e
  705. OAM_Ram_Init;初始化精灵内存, A% |2 a$ ?. \
  706. LDX #$00
    , v4 J8 |" f$ w2 ?" u# C# x$ E3 i
  707. OAM_Ram_Init_Write
    ) [# S8 ~- @  j; i' C& Q) Q" V
  708. LDA #$F8: T$ k% J! w# N8 N' J& X: T
  709. STA OAM_TEMP_ADDR,X9 p) W! v* ]0 r" F) Q5 c6 s
  710. INX
    2 U4 \: ]. x6 U8 Z( t
  711. LDA #$F88 e. o4 L: ]! \: U$ a
  712. STA OAM_TEMP_ADDR,X# g0 V& G( s! @' I1 C; C) ]
  713. INX
    ; }/ t* R8 ^, Z7 n' H) L
  714. LDA #$00* j+ V/ h4 N$ \7 t
  715. STA OAM_TEMP_ADDR,X
    - W1 m* l. a# u6 g: S
  716. INX
      a6 h: X4 s- G  |! C. C- A! M  r: \
  717. LDA #$F8
    / D; [1 D  I# ^
  718. STA OAM_TEMP_ADDR,X$ \- V- ?( g# a9 c: o1 V2 H! a
  719. INX
    ; ]/ ~# L0 x1 K( d5 H
  720. BNE OAM_Ram_Init_Write
    5 F: {! l. u$ ^" ~9 a0 {
  721. RTS
    $ V! f  R9 d1 V! ~1 B. r4 D
  722. 4 ]; I" v* i$ n% f* N
  723. ;==============================
    & p" l$ t3 }7 g* G* p
  724. VramClear;初始化图形内存8 D* m( Y% L2 p+ [4 o) ^; W
  725. LDA #$20
    : \' @6 j" w. R1 E
  726. STA PPU_ADDRESS. k- C$ d7 s/ q0 K1 x9 Q. o! N
  727. LDA #$007 T- R7 b2 G3 S" T
  728. STA PPU_ADDRESS
    - [- p6 q3 R& X) d4 a* M
  729. LDA #$00
    # S2 w6 R- X1 ?) @1 M6 H2 f5 e
  730. LDY #$007 D; f9 H9 c2 Y4 t; b8 u+ v& b' \
  731. LDX #$10
    ( B) d* [. o& G4 ?2 f% S) X
  732. VramClearWrite
    " V1 S; d& M  }
  733. STA PPU_DATA" n& \1 g& t9 _2 h' z& r8 ^  t
  734. INY- z* d/ P% u1 u0 I
  735. BNE VramClearWrite% |( S7 M" n  Q( |! g* i% t0 ]$ s
  736. DEX6 X" t: H" Q3 d: L; Y
  737. BNE VramClearWrite  M/ I) g8 j8 \- B  q  B2 }. ~
  738. RTS5 x8 F) }9 R, u4 ?
  739. 4 H+ T! t" R# [0 X& n1 f2 o) _
  740. ;==================================================+ ~& q' ^1 t+ Z( Z% m6 A
  741. ;设置MMC3图像bank. j$ {  i: b0 T
  742. Init_MMC3_Chr_Bank
    9 ~* I/ y) l' ~6 x9 k$ a8 ~
  743. LDX #$05
    ) U+ r3 s( J/ g, a: z9 J! F
  744. Init_MMC3_Chr_Bank_Write% }6 E& L  W- A% D5 Q
  745. STX MMC3_BANK_CTRL2 \7 W* g( {% ?# Z- c
  746. LDA MMC3_Chr_Bank_Data,X
    / `0 h3 j5 ?$ w- `# w: m, \
  747. STA MMC3_BANK_DATA* L* {8 a: J5 Q( [; ?2 x' U$ Y# r
  748. DEX
    " L7 _0 `- J: j- C( f& Z) U) Q
  749. BPL Init_MMC3_Chr_Bank_Write
    : I9 o9 f6 o- ~% t5 ?1 B- o# q$ ~
  750. RTS' u7 _' Z" ?$ P
  751. ;--------------------------------------------------( y) ~( l4 p, J4 s+ e! K: [4 Q
  752. MMC3_Chr_Bank_Data
    ; I. o" I1 w3 ?0 R
  753. .DB $00,$02,$04,$05,$06,$07$ P: |) N1 ?/ f# E0 u4 m. F  B0 C
  754. 5 l: [* g) ~2 w+ Q$ Q+ u
  755. ;==============================2 w8 f9 Z; [# j( j, c) j9 c
  756. VramInit;初始化图形内存
    - ~; ]9 [% a+ }- m
  757. .IF CHR_RAM_ENABLE' y2 M  l6 [& h+ r7 P
  758. LDA #CHR_DATA_BANK
    + u  U; x1 Y( F3 t; x
  759. JSR Switch_Bank_A000
    ! R0 B5 d; r1 I  P$ `+ l1 @! m
  760. LDA #LOW(CHR_DATA_ADDR)4 @% ?: P- E) g8 B) z
  761. STA <Data_L
    0 K2 B" ^' R; U! l9 T
  762. LDA #HIGH(CHR_DATA_ADDR)
    ' _+ E* H) |  y  l- t9 k2 ]; c% p
  763. STA <Data_H
    # b. a3 O3 h7 R4 f9 v3 t
  764. LDY #$00' N& Q. |& Z$ z# l4 e1 f6 J
  765. LDX #$20* z& v/ h: Q( h# F+ a7 C
  766. LDA #$00
    7 @3 G, w: X1 O1 K$ a
  767. STA PPU_ADDRESS
    1 ]" ?! g! c. b
  768. STA PPU_ADDRESS
    # [7 w6 z% Q% P$ ?, w# t9 M% r
  769. VramInitWrite5 _9 S# w2 m- A% i, \# C# Z2 T9 ?7 L6 h
  770. LDA [Data_L],Y
    $ x3 u! n# L, u: m8 m
  771. STA PPU_DATA" T( s8 U7 s/ Y; S# S8 [
  772. INY/ l8 W8 @2 |1 F# t. c
  773. BNE VramInitWrite  L! {8 r1 F+ I4 s
  774. INC <Data_H
    & \+ e  q3 V- f- T* S
  775. DEX
    - A5 ]9 Q! K% S& N! y
  776. BNE VramInitWrite7 N0 J/ m) ?5 v" w0 r
  777. .ENDIF" k& u: V6 d: I; x7 x
  778. RTS
    ; N- a/ T5 F1 X* P5 O% Y# p3 G
  779. 4 u* L; v5 m; c7 J2 X, y) a
  780. ;==============================
    7 Z# i  M9 k: J0 J# K8 x. O& g
  781. ;音乐切换( N8 U$ R, X" ~! W5 p
  782. Music_Play_Change; C$ S! f1 ^, _/ e! X8 }0 }
  783. LDA <Key_Once2 h6 e/ i: i! ], Y% N* B+ E) w* ?
  784. AND #$FF
    ( T, k. Q. d2 G6 m# |" ?
  785. BEQ Music_Play_Change_Check
    1 C6 ~$ t8 z, P) b! ^# G

  786. 9 D  U: b5 C2 ^' [+ c' f1 F+ O
  787. ;禁用音乐条刷新
    6 V. d2 x. p$ K0 q4 d9 m$ z
  788. LDA <Text_Disable_Flag5 ^' O4 ~9 G9 z# n& L0 m" g
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME3 R3 j& f! l; q; b  N
  790. STA <Text_Disable_Flag/ y, N0 y8 |' E  y

  791. / Q& v+ I' w$ w) `1 h) Y0 C5 A
  792. Music_Play_Change_Check/ R3 ^* Z( ?$ x$ U
  793. Music_arrow
    " O" R8 z, M5 ^" i$ l* T
  794. LDA <Key_Once
    9 c& V/ i  i6 x. F$ c5 e5 i3 O' A
  795. AND #$0F& x: T, Z" p1 [3 E0 j4 ^% ]5 M% M! l7 D
  796. BEQ Music_Play_Change_End
    - p& a, I( \! K5 W2 K. ], V' ~
  797. JSR Music_Track_Change: ]  t! z+ ^& ~" r' @
  798. JSR Sound_Reset_Proc6 w+ f* p, C& x  w. g, e
  799. JSR Music_Show7 }6 ^% L# {( j; |7 @% ]8 A* i- y% _
  800. Music_Play_Change_End3 J8 g3 o- }$ s+ Z. W$ B
  801. RTS
    9 E4 h3 h0 H  p4 w1 P5 G2 h& Y

  802. 0 I4 E" Z1 J$ X1 t) J3 ^$ W
  803. ;==============================
    1 \$ O( }" i2 P3 Q$ B1 ~
  804. ;音乐曲目切换
    1 q' `. D+ T! g
  805. Music_Track_Change" ^$ U0 Z8 e9 c9 J
  806. LDX <Music_Item_Cur
    ; g! D8 Y6 O8 p: q. }2 b! Y
  807. LDA <Music_Cur,X
    9 M! \6 j; u9 i
  808. STA <Music_Last
    1 l  A4 X5 Z& v0 ^! V, x
  809. Music_Decrease
    , V" m# b* e- R1 \9 o( n3 I
  810. LDA <Key_Once' D* Y, i7 h" G: C1 ]7 _2 l4 y8 V
  811. AND #$42
    0 g$ w# ~8 U9 s& A3 l  s; c+ B2 v
  812. BEQ Music_Increase5 Q6 ]0 w$ V9 C+ \; P4 P# ~" V
  813. LDA <Music_Cur,X
      a5 @" B5 u' H2 O4 d
  814. BEQ Music_Increase
    4 O' C/ Z0 C, k) F8 |2 h1 L
  815. DEC <Music_Cur,X- S) l+ ?; ?- S% H% U5 W1 {
  816. Music_Increase
    5 ^4 m4 p3 W& Q( j: D5 F
  817. LDA <Key_Once
    & H( f1 Y/ E/ K: \! L
  818. AND #$81
    7 J- b' B- C6 n5 g4 D, }. @
  819. BEQ Music_Decrease_10
    - [* ~3 @3 P- T" |  V* n4 h
  820. JSR Set_Sound_Total
    ! W  O4 ^! q( A$ m: X, a" E
  821. LDA <Music_Cur,X
    " M% J! C  t  S
  822. CMP Music_Total% Q6 f' x! u6 p6 f& t) d
  823. BCS * + 4' _1 ]+ [+ L( m' g  \* p: W. I2 o" J
  824. INC <Music_Cur,X: M7 D# B4 ]/ Y* U* F
  825. Music_Decrease_10/ O+ z. c8 ?3 ~7 R- q- Q$ [
  826. LDA <Key_Once  N* q/ O6 W8 s' k# C
  827. CMP #$04
    & a1 C& B  c3 \" y% \
  828. BNE Music_Increase_10
    7 p* Y/ o9 j/ J: m, v4 ?! E
  829. LDA <Music_Cur,X: B7 A! y# L5 c, {- I
  830. CMP #104 f% G' ~' Q5 N) |0 T& S1 d% `
  831. BCC Music_Start_Song_Min
    2 X. P+ k& X* j% k$ g
  832. LDA <Music_Cur,X% o* J6 d* ?  a) K* d! F
  833. SEC+ C) F4 f. Z2 Y; a. |$ I9 `/ \2 d' b
  834. SBC #10
    1 @  i/ l/ w- Q9 Y
  835. STA <Music_Cur,X
    3 _7 y6 o' w3 a! d. i1 W
  836. LDA #$001 e- X6 N7 D" T/ ?" M6 A+ z* @
  837. BEQ Music_Increase_10, x* G( [* g/ ]4 |
  838. Music_Start_Song_Min
    ' [  y3 r4 j0 f. t
  839. LDA #$000 `) B/ g: e- k& \) N3 Y
  840. STA <Music_Cur,X
    * ~/ R3 K  R8 k; c6 c% u0 R: K6 {
  841. Music_Increase_10
    + M5 e. w* Q% ?  i% W$ V
  842. LDA <Key_Once
    , {: C! v! O0 K# y  }% E
  843. CMP #$080 `" ^. u* ?$ @: Z
  844. BNE Music_Track_Change_End
    " b( I7 `- Y2 s6 c$ v
  845. LDA <Music_Cur,X
    3 T. x/ O9 ~9 i' I! P! B# S4 L
  846. CLC" v9 R  f3 X' Y- ^! G
  847. ADC #10. _1 P( P1 L+ [; @# `6 Z
  848. CMP Music_Total
    ' A/ K# P5 B2 v5 E
  849. BCS Music_Start_Song_Max
    0 B! u2 B. d3 @; p& _
  850. STA <Music_Cur,X- I& z  m7 u7 o0 L2 ^& D
  851. LDA #00
    3 [. I6 ]+ h3 f/ C! a5 Q& o1 w
  852. BEQ Music_Track_Change_End
    $ S6 Z% r, \: n
  853. Music_Start_Song_Max, H- l1 O2 J- A$ s. f0 A( u6 B
  854. LDA Music_Total5 \; U, U! K& e- O8 c
  855. STA <Music_Cur,X5 U0 ?9 ]: {# q6 @  B0 X& E
  856. Music_Track_Change_End
    2 s# C8 J- Y9 B( A
  857. RTS5 z1 m$ K3 I0 ^+ f$ }

  858. 8 m% {0 H( R, ?( H7 I4 @4 k
  859. ;==============================
    " _$ s8 w0 ~+ n# U& _1 A, J
  860. ;按键处理' g! Q% U1 t, G# q7 x( u
  861. Key_Proc/ F. E4 D0 E, O/ B" ~* |
  862. JSR Key_Scan3 z: z0 o- o5 c* K! q7 N1 _
  863. LDA <Key_Keep* C' ~% r. [' Y3 H# E
  864. STA <Key_Temp
    , M0 m. }/ X7 u' J# {
  865. JSR Key_Scan
    : ]: A- W; l+ ?( u# ?& i
  866. LDA <Key_Keep
    , ?& h/ M& |; i7 R; i$ F
  867. CMP <Key_Temp0 `$ {! ]. A" o* L7 b: N0 V3 F
  868. BEQ Key_Get_Once
    2 I) l2 i5 S7 V# |9 \+ d( G! s3 I% t
  869. LDA <Key_Kemp
    9 q' m! g' X9 r
  870. STA <Key_Keep8 p' z& J* I9 I' Y5 h
  871. Key_Get_Once: [. L/ C3 m% t0 A6 n+ [/ [# m4 [$ S
  872. TAY
    4 D4 Q5 S: C8 _2 {
  873. EOR Key_Kemp5 G6 a8 }4 s% F( @3 @2 V% G
  874. AND <Key_Keep
    . A& N3 ^. g, `- A: R6 T
  875. STA <Key_Once
    5 ^: A2 b5 A6 N2 r2 V
  876. STY <Key_Kemp* @, v& ]; m1 c: L
  877. RTS2 ]* V9 ?- r  D4 x9 U; ]
  878. ;------------------------------
    : D0 F" a+ N- ]& b! N( _4 W! m
  879. ;按键扫描; A$ G$ W8 @" x
  880. Key_Scan
    * Y7 d) h0 N# a+ I1 p4 z3 v
  881. LDX #$01" F9 `: V5 D  r
  882. STX JOY1_FRAME; N+ i; }# ~! D- _  F1 t0 j
  883. DEX
    : ?1 w3 g; r; j4 ^5 V' D
  884. STX JOY1_FRAME
      I( T5 d1 n( j+ {0 r
  885. LDX #$08& E+ t+ u7 s5 K, K5 \# a
  886. Key_Value
    8 J# W6 v) @+ P( Z) t! a% r3 O/ }
  887. LDA JOY1_FRAME7 J$ V/ N6 y, i
  888. STA <Key_Getv) u1 f7 k- [. }. l
  889. LSR A
    % P7 f7 B% H; D. D6 {
  890. ORA <Key_Getv
    9 X- h- b7 {- v& z8 Y
  891. LSR A( X" b! m! {9 W8 ]0 V( \! K0 a2 u
  892. ROL <Key_Keep
    7 [4 m' n, a) y
  893. DEX
    / Z! B- T- D& A/ E/ V& T
  894. BNE Key_Value  S; ~- A  M2 [7 t$ I8 x
  895. RTS
    + f2 x' H' u* H

  896. * N; c  \% P" y+ X" N* V0 x$ P( J
  897. ;==============================0 @) H. i1 H6 d; q6 D6 _
  898. .IF SOUND_BAR_SHOW_ENABLE+ L! g. j0 ^: P0 y, F0 F4 N; |
  899. ;音乐条显示; M9 r/ H5 J% z1 X
  900. Music_Vision
    & r2 j* G" r2 o) o
  901. LDA <Text_Disable_Flag5 h; Q0 x9 m' Z2 D
  902. AND #TEXT_DISABLE_ITEM
    , E6 p9 Y9 a. u) C) q
  903. BNE Music_Vision_End, G% M) a% K' |
  904. AND #TEXT_DISABLE_BAR
    ' T( E% b' k/ d' T& A; p: q0 O) K
  905. BNE Music_Vision_Set
    7 i9 ~4 L% T" e8 C
  906. LDX PPU_Cur
    , p* O4 J, @, d7 q( A9 @( O
  907. JSR Music_Animation
    ; ?% E4 A$ P* y0 E: f- ~/ H$ H
  908. STX PPU_Cur
    1 M( ]* K6 l* E- L1 t
  909. Music_Vision_Set
    ; ^% a5 n/ ?5 @/ f
  910. LDA <Text_Disable_Flag
    1 Z( {- {  J& g5 Y$ R7 Y( c
  911. AND #TEXT_DISABLE_BAR ^ $FF
    9 k, [% X1 |1 M5 b
  912. STA <Text_Disable_Flag
    ( K+ M% K2 E2 K
  913. Music_Vision_End5 Y, L" M& ^7 X" j( W- \. Q
  914. RTS' p: P7 p$ T: v, ]& O
  915. ;------------------------------5 V' `" f- H1 ^! j4 y
  916. ;音乐条显示处理
    4 t1 t0 ^  m6 p2 ^' v
  917. Music_Animation* K0 U  H5 F: `' x" |
  918. LDA #PPU_MODE_CNT_LINE) B3 s- w& K5 W6 L) U
  919. STA PPU_Addr,X$ }- _9 S! H/ s7 Z8 r
  920. INX3 D& `5 E8 G  W$ R8 f! T
  921. LDA #HIGH(Sound_Bar_Pos)+ {+ V& F6 t1 i+ p  X  M' m
  922. STA PPU_Addr,X: U; D6 I( ?; E3 w( n6 s  t. F6 P
  923. INX: [0 z- {; J( ]" j! D1 z! k0 j+ Q8 o
  924. LDA #LOW(Sound_Bar_Pos)$ v  [: f5 p- @
  925. STA PPU_Addr,X* f. I+ M0 b9 o9 U
  926. INX- M$ x# e2 {7 \0 v$ {
  927. LDA #$08$ h3 ~1 j1 s. T' D" k4 L
  928. STA PPU_Addr,X/ a9 l! \) g. E; v' c( U
  929. INX& X0 ~/ V: x5 D: R  w/ E) w! A$ Z
  930. LDA Sound_Bar
    ) @. J! x2 Z; \; Q# Y7 D2 u5 z
  931. JSR Volume_Convert5 `0 ]+ N# B4 w
  932. # r* Z+ s( A# B2 g: _
  933. JSR Volume_Set_Cnt6 f: B2 J! E" o8 |
  934. LDA Sound_Bar+$4
    $ ]& a% T( C. A6 h7 S
  935. JSR Volume_Convert, s0 z* `, N* \/ }
  936. 4 M3 U3 C" B: d
  937. JSR Volume_Set_Cnt
    / c% d. }) Q2 Q" y, w7 Q# ^2 {
  938. LDA Sound_Bar+$8( Q+ {# ^) l- \4 B, ?: H+ z! j
  939. JSR Volume_Convert0 w4 C8 ~# J3 U: W$ }1 {9 N; ?0 c
  940. : L( ?# T1 R7 `7 D3 b* I8 o/ l% X
  941. JSR Volume_Set_Cnt
    7 t3 r3 y- _# u7 ~3 @2 M
  942. LDA Sound_Bar+$C" r% \8 v. V8 s; f, s" s
  943. JSR Volume_Convert
    , ~9 c  Q* k/ f* n  N$ P
  944. - u. Z$ w% B1 f# }7 P# e6 x0 B
  945. JSR Volume_Set_Cnt0 h% K7 D, D' G8 ^3 Y

  946. 2 A* n0 c9 d+ Z! g2 Z# ?7 r, f
  947. LDY #$10
    * z" P' d( F; L% U+ l
  948. LDA APU_STATUS! c, Y7 l3 o; h0 N0 Z
  949. AND #$107 d( ^% Z+ @- U, Z/ U; \
  950. BNE Volume_Count* ]1 Q, B8 {; Q  y% `9 a* h& A( n$ h
  951. LDY #$00+ I5 Q) n. B9 i; y8 e$ ^. k, v6 h
  952. BEQ Volume_Count0 B/ ~- B, i& t1 [
  953. ' P' C! }% M4 P( A6 j- s/ p: g
  954. ;------------------------------3 n" O4 c9 @, a) C
  955. ;音乐条处理
    * E, ~" H% K$ Q( q
  956. Volume_Convert
    % C( n6 z' W3 s
  957. AND #$0F3 s1 Z+ l! L0 n" v
  958. TAY6 r! w& w2 I; E1 D/ f% d
  959. Volume_Count
    4 p* B% A/ q% j
  960. LDA #$08
    9 D% c2 U4 W# K- F+ U3 W3 s
  961. STA Sound_Bar_Cnt
    ; ?: S, W% V* C4 p) o
  962. Volume_FILL
    2 o5 K4 g- L9 {) j: m  M# n, W: q5 y
  963. DEY
    & ]& X( W# A0 G% N9 j" Q) l  v
  964. BEQ Volume_Half7 Y% @7 N$ \$ t2 n
  965. BMI Volume_Empty! t. ?' j0 J" Y4 N" q
  966. DEY
    ( h& G- ?+ C6 s) ]* O! I
  967. Volume_Full8 c2 h1 T; w* E! V5 K
  968. LDA #$16
    ; Z9 l& k% l0 o9 L
  969. BNE Volume_PPU' e( K: w9 p! V6 z4 Y* J  p+ i  U
  970. Volume_Half
    3 i4 H1 }$ X7 w
  971. LDA #$15, K0 H3 [7 o7 P1 A3 s6 V& q) T
  972. BNE Volume_PPU
    & O2 `- l& x4 l* w
  973. Volume_Empty
    2 f* X# C% l. I  z
  974. LDA #$14+ r. _) G8 \7 F  M; s  M- V, Y
  975. Volume_PPU
    ' ^1 _' I: C1 p! ?) K' Y
  976. STA PPU_Addr,X
    7 S" O% s0 z/ x$ d: K% [. c
  977. INX% j: ?9 z6 j; x" {: l  g( \4 B; U
  978. DEC Sound_Bar_Cnt
      I2 |3 Q/ s# [( l# d
  979. BNE Volume_FILL4 w5 R9 N8 _: n- U/ I
  980. RTS
    , t% V3 x% C! B+ `
  981. ; f/ f6 @2 j8 M7 k( J% e. f: K
  982. Volume_Set_Cnt
    ; P8 |; z  S4 g% P" U" M# J6 q
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    " Z3 M2 K! M: G/ y, h# W
  984. STA PPU_Addr,X
    - M: h& |; e  F
  985. INX  N7 N8 `' d9 X6 V* U& E
  986. LDA #$085 _; w" w) v+ I0 B, G/ e+ J
  987. STA PPU_Addr,X
    4 f$ f3 K, O+ j7 P3 R& ?
  988. INX4 L/ e9 e+ M* ~
  989. RTS% F+ I" f# e$ y9 u

  990. 4 M+ L% V& P& ?2 c
  991. .ENDIF
    + E1 i2 \: V# Q% E3 {( s4 u/ U6 j
  992. 9 e' O7 W; A+ V' {1 J/ P
  993. ;==============================/ H+ \& n  G3 L. o
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入0 h1 P% e- R) w
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    - C  S9 w  F0 F' K
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除# G) K; G6 I8 Q3 L
  997. ;------------------------------
    - K  H7 ^5 g2 }; t- p6 g6 f4 D
  998. ;PPU处理( ^! U) g) r0 Y; y
  999. PPU_Proc
    $ I5 F9 B; I" g& d) N/ W/ @- o) u; J
  1000. LDX PPU_Cur
    % N' Z! v2 K0 k+ [* F9 W
  1001. LDA #$00( c: k) k  a( [0 |+ N: w
  1002. STA PPU_Cur# r* m( m/ |4 i& b. a
  1003. STA PPU_Addr,X# j, A$ A$ g* Y
  1004. LDA PPU_Addr
    - A7 M& p( ~4 x' K
  1005. BNE PPU_Proc_Beg
    1 h; n; j! I) W1 R# K8 {
  1006. PPU_Proc_Ret
    8 D" n5 C3 O) V: G7 T
  1007. RTS
    ; P: i6 ]! L6 G0 G6 `4 |' q% O
  1008. - {  s9 n- j+ R4 k0 _7 z" L0 Q4 d
  1009. ;------------------------------
    4 k+ q  y1 m: P' U! |
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    & w0 l- d& }( n$ p  w: [
  1011. INX
    $ q8 ]5 @& V' N: c& k0 I- b
  1012. LDA PPU_Addr_L
    . x1 K& a# o7 W1 _4 f
  1013. CLC3 C* }* L) m* a6 \" Y. J
  1014. ADC #$20
    8 u1 V: E; c# w9 u: N$ Q
  1015. STA PPU_Addr_L8 \  L$ ]% a# `+ A2 |
  1016. BCC PPU_Mode_Return_Cnt_End1 K- ?" ^  I( m
  1017. INC PPU_Addr_H
    8 s) @8 t- A" h5 S# b! F! O6 z4 @
  1018. PPU_Mode_Return_Cnt_End
    2 F9 [4 d4 I3 U5 K
  1019. LDA PPU_Addr_H9 v3 k0 Z# E! ]  i9 ^9 C
  1020. STA PPU_ADDRESS
    + C2 r+ Z7 s/ {3 @/ o5 W
  1021. LDA PPU_Addr_L
      q" @, |# a! |1 ?& k5 Y& Y9 Q
  1022. STA PPU_ADDRESS0 D! K( }8 s4 ~9 B4 g/ \+ p
  1023. LDA PPU_Addr,X9 S+ M% y* a4 Y5 h) s' A1 L
  1024. TAY9 v( T. z  T9 E" f7 L/ F; r
  1025. PPU_Mode_Return_Cnt_Write
    , l: t) A. R) Z4 G* o5 N; O
  1026. INX. A! C$ v5 b  T+ @+ J8 N
  1027. LDA PPU_Addr,X$ w% q6 |" G8 H  H! v8 M
  1028. STA PPU_DATA. c/ J2 K2 }/ U! R' T% k* d- Z
  1029. DEY
    ! P  f5 k. {; |+ r& P7 Q
  1030. BNE PPU_Mode_Return_Cnt_Write8 i6 s" D; w, e) |0 x, f  q6 }4 z
  1031. JMP PPU_Proc_End$ i4 ]$ P; e3 b4 m+ T. K. j( |4 P
  1032. 9 s# E0 C# q8 x( j% o6 J! ^; u2 n
  1033. ;------------------------------
    9 [6 K( M" R$ ?5 V
  1034. PPU_Proc_Beg  ;处理开始
    7 J  I0 U# ]& W& f$ s* }
  1035. LDX #$00
    4 ~$ N: ^& j, P! u
  1036. STX PPU_MASK; P' W! d/ w" r9 y! g' \7 x" t9 z8 p
  1037. ;------------------------------
    * G, z, Z6 X% y' u3 B, F: n& P
  1038. PPU_Mode_Select  ;模式选择1 _. w! S& h$ [! V' _+ S% G2 D
  1039. LDA PPU_Addr,X# p/ z% D3 t: @. \
  1040. CMP #PPU_MODE_CNT_CLEAR; N+ M1 b  t. F! j
  1041. BEQ PPU_Proc_Clear
    - ?: U" @. y. L# }1 e
  1042. CMP #PPU_MODE_CNT_LINE2 @; A6 G* L! B& v6 _
  1043. BEQ PPU_Proc_Cnt_Line
    / D- ^2 ]# K/ I' a' K% K- v
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    2 W7 e' Y. r* R% m1 t- Q
  1045. BEQ PPU_Mode_Return_Cnt' q6 S$ {, j# W. g; `
  1046. JMP PPU_Proc_End_Write
      C1 |2 q. ?, {3 o, j3 g' a& E
  1047. ;------------------------------
    # x! G3 Q9 b  [8 {
  1048. PPU_Proc_End  ;单行写入结束! {; l  O9 B. P; h% o& o' B6 @
  1049. INX
    9 o; X2 A- f% k  h0 U' [& {
  1050. LDA PPU_Addr,X
    , \4 A) Z4 p3 c8 M3 h) i
  1051. BNE PPU_Mode_Select
    + ?8 R+ y3 H1 P+ f1 d3 p
  1052. STA PPU_Addr$ n& z$ h) a, L
  1053. JSR Update_Palette_Color- p6 ~8 k2 Z2 [. W) u8 R

  1054. 3 G5 n1 t% ^  Z$ A( B
  1055. PPU_Proc_End_Write$ N  h& v, B3 a7 ?" X% ]) \, L
  1056. LDA #$00: A; P% x! p/ |3 D" s# ?/ s
  1057. STA PPU_ADDRESS
    - p! o5 o# J7 B
  1058. STA PPU_ADDRESS. h5 O' m6 h' m8 d0 B0 f. ?/ P* {
  1059. LDA <Text_Disable_Flag
    % c1 X" \8 T% i, T; w
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    " k& ]8 r" \" N/ y) S5 l: G
  1061. STA <Text_Disable_Flag  M; U( Q, G) q" t. X
  1062. LDA #Scroll_X
    $ R4 @7 b% [) g& a; @
  1063. STA PPU_SCROLL1 |8 D  C, h0 b
  1064. LDA #Scroll_Y
    ' u, l4 C0 K( ]) t. H
  1065. STA PPU_SCROLL+ h* U7 V/ J& M) S
  1066. LDA Screen_State4 q" ^% i1 w% Y* n4 j& j* ?9 D+ z
  1067. STA PPU_MASK4 x5 x( _. u2 z) h1 ~
  1068. RTS# j' w% U9 y$ e1 |5 n6 p

  1069. / B0 \* Q1 e( N2 r9 j: Z/ m% H
  1070. PPU_Proc_Clear
    / _- }, W  a  E3 I/ @0 r) i
  1071. INX0 j- [1 G& }4 I& P, Y% Z
  1072. LDA PPU_Addr,X
    ' N" u& _) D- N9 ?1 A$ i
  1073. STA PPU_ADDRESS* Y! X4 m8 U4 g" L2 w; M8 F, ~
  1074. INX
    ( n& r  q7 ]# l0 x$ w: G1 }9 u
  1075. LDA PPU_Addr,X# S+ _9 E) X) M# K0 ~# W: B
  1076. STA PPU_ADDRESS
    * F/ ^# |, f8 A/ T4 t
  1077. INX
      K1 k# Y( v# x& q1 u
  1078. LDY PPU_Addr,X
    3 }6 D- x$ Q7 @3 p* O' Q9 l
  1079. LDA #$002 z+ ~& \" G. P% X
  1080. PPU_Proc_Clear_Write$ f9 x. v% S" X# n4 u+ }; D0 ~* {
  1081. STA PPU_DATA
    # }5 f9 j" N, H% d+ ]) a, S
  1082. DEY# w( u3 v+ e% a6 r
  1083. BNE PPU_Proc_Clear_Write
    . n* f$ p4 C7 O! {; N
  1084. JMP PPU_Proc_End
    ( s+ @6 x' ^& M0 B$ O, v
  1085. 8 D+ H9 H/ e) W& f, U
  1086. PPU_Proc_Cnt_Line8 f9 E7 C% U. ?+ O3 r
  1087. INX
    5 [# b; M4 l3 C
  1088. LDA PPU_Addr,X
    - g# Y3 A1 ?0 L4 ?' {2 f
  1089. STA PPU_Addr_H+ K' {0 y1 t* L! |
  1090. STA PPU_ADDRESS
    ! y/ _' U+ Z/ H+ B  _; W# t
  1091. INX. \+ z1 D7 F- W% ?
  1092. LDA PPU_Addr,X0 X  @' O, G) s7 i6 Z; G( d/ k
  1093. STA PPU_Addr_L8 r- s( P( h- i: B  j
  1094. STA PPU_ADDRESS
    & \4 h' m4 ~8 {6 f6 r  n
  1095. INX
    1 Z. u. o% X& N: G7 [
  1096. LDY PPU_Addr,X
    2 R' r' Q  T" g
  1097. PPU_Proc_Cnt_Line_Write: m! y# H% w+ N7 D$ _5 X
  1098. INX( `; U7 y9 w/ F7 a
  1099. LDA PPU_Addr,X. e$ l) Q! N8 O/ e4 D0 K
  1100. STA PPU_DATA& ?6 `( i/ }. G
  1101. DEY
    & D" F  S6 R$ J6 o
  1102. BNE PPU_Proc_Cnt_Line_Write4 \/ i! `- Y1 F. f; o0 r
  1103. JMP PPU_Proc_End
    7 u" R0 F; R6 I3 j! q  B) i

  1104. % v$ _+ S6 u, T5 o# z
  1105. ;==============================2 X' ?% P5 ?; O% n9 x. P0 K% H3 y
  1106. HEX_To_Dec;十六进制转十进制% ?+ K" t0 Y7 r' u
  1107. STA <HEX_Data
    4 Z+ C" \( e8 H2 f
  1108. PHA
    . [8 J: J: P7 m9 d- {5 D" P
  1109. TXA
    % Q, o0 e) m3 }% O, ?
  1110. PHA
    - I/ n" H, m7 A9 r4 `8 Z
  1111. LDX #$00. a) F. _( L1 o
  1112. LDA #$00
    5 X6 h+ m: s8 O8 r1 l
  1113. HEX_Cln3 T+ ?8 K: y* i6 A  R
  1114. STA <DEC_H,X
    4 B8 z3 n; h/ `" F
  1115. INX2 ~0 m/ V' E. }, f# `: R% i
  1116. CPX #$03: `1 S" n1 I1 N/ p. [- O8 M5 s
  1117. BCC HEX_Cln
    % Q4 p2 r( k2 X7 S: K$ p, A
  1118. LDA <HEX_Data
    8 @8 z. N5 N* s# O5 x
  1119. ;------------------------------" f9 h. m- d6 |3 s
  1120. HEX_100
    & G& u! S/ P4 z* z# C1 l+ i, d. y
  1121. CMP #100
    " P) d+ q( s! Z6 `
  1122. BCC HEX_10
    9 Y6 e" V4 M9 X- y1 l5 a, s- u
  1123. SEC( W# I$ W6 F7 [
  1124. SBC #100( \) ~0 J( o- D2 c# Z4 `- C
  1125. INC <DEC_H
    0 J1 E/ w# f. J, n' ?' U
  1126. BNE HEX_100+ Z/ S) h8 |9 c  m
  1127. ;------------------------------
    3 u5 X; [% J; O; d2 N
  1128. HEX_10
    ! r" |8 c9 K1 }" V# Q4 q
  1129. CMP #10
    * S! ]  b  Z2 j6 `9 t9 k% L
  1130. BCC HEX_1
    8 _/ V! O/ T5 R3 _6 S  _; |
  1131. SEC" [, l$ L3 i, H4 r/ Y7 W# N
  1132. SBC #10, j+ B" n( x" i) b' z
  1133. INC <DEC_T
    1 W$ t7 k% Z5 R! {0 v
  1134. BNE HEX_106 O- V+ j; o1 g+ c; c3 V, p
  1135. ;------------------------------
    9 R" A7 }7 g! i  ~7 Y9 x5 c
  1136. HEX_14 K; |8 v  Z$ p( A/ t- A
  1137. STA <DEC_L
    2 e8 g% O* [& G; B. S
  1138. PLA" A5 j) I7 c1 {! l% o* G  f( f
  1139. TAX0 F2 `" Y$ w# K" I/ Q
  1140. PLA& U* [. m/ u, r9 u8 U
  1141. RTS- O: ^1 h9 _# O. ~

  1142. ' C( b8 y+ S# _  E- D. _& v
  1143. ;==============================# [& L1 Z& R3 n& S
  1144. ;音乐曲目显示0 @- M, R8 d# q2 d  Z
  1145. Music_Show
    % P; e& u- {  t/ ?
  1146. LDX <Music_Item_Cur8 |2 g) {- ~& E1 `/ l
  1147. LDA <Music_Cur,X3 J; \( L! W& o
  1148. CLC
    # X6 Y0 G: e4 b
  1149. ADC #$01
    , L$ z) D5 m9 d, a$ P
  1150. JSR HEX_To_Dec
    ( p: g/ T/ _: `5 ~% h) r' n2 a' m
  1151. LDX PPU_Cur
    ( E& |/ Y  u9 m5 S  y. D& c; O
  1152. LDA #PPU_MODE_CNT_LINE
    . T" O; d" p- G$ c7 C
  1153. STA PPU_Addr,X
    ( G4 K: S7 h0 _9 H9 w  u) p
  1154. INX. h* w+ q. I+ U4 W1 k- h) A) [% z
  1155. LDA #HIGH(Play_Index_Pos)
    - V8 k+ K+ M4 A: t
  1156. STA PPU_Addr,X
    5 Z+ U2 Q' m$ j% D% `' F
  1157. INX; ^6 n9 ~! L7 ^) K
  1158. LDA #LOW(Play_Index_Pos)
    : U& H2 H- V9 i" R" G/ a
  1159. STA PPU_Addr,X# N, ?, A% _% @6 i# N% T
  1160. INX+ y; o5 K( O6 H" u& F! m% h
  1161. 5 j. Y1 @& R+ k! K0 a9 p" ]
  1162. LDA #$07
    5 m2 [  X. R0 o% Z9 b9 b0 w
  1163. BNE Music_Show_Length
    " z. @/ t# I: D; }) X) ]

  1164. & r: N. G% u% H- V, o9 a+ v6 e4 _
  1165. Music_Show_Length- K* f$ }0 u8 t# m
  1166. STA PPU_Addr,X
    0 [; h+ M9 }6 E9 J
  1167. INX7 U7 s$ z1 @* L* P2 ~

  1168. * O6 e; w4 {' C! ?- j0 p, d+ S3 x
  1169. LDA <DEC_H
    - e) u. y4 E7 e3 _* T4 N
  1170. ORA #'0'
    ! ^0 c' i( s" N! f5 o' v
  1171. STA PPU_Addr,X
    1 D% N% x* y: M$ a2 t
  1172. INX
    % a" {4 `) B9 ]) W5 R8 Q0 G
  1173. " H4 a5 j7 B, g( T: k
  1174. LDA <DEC_T9 |" g; P- l1 }7 d9 T
  1175. ORA #'0'( A! Z: Q! C0 t, t6 L: ~- R. _
  1176. STA PPU_Addr,X7 V4 _3 d& d4 r* p( v7 v  k0 [2 Y
  1177. INX
      S5 S5 x5 E8 h9 ?0 ^: h3 u

  1178. ) Y6 A. C, V2 i: |  k
  1179. LDA <DEC_L; H% h/ f. S5 H# K1 f0 L# |
  1180. ORA #'0'
    * _8 |' P$ g0 R( E4 v- T. P
  1181. STA PPU_Addr,X) I+ \4 H3 Y, y! A- P2 R# n
  1182. INX% F. i+ ^/ Z0 j2 C/ `; P
  1183. % `9 K# P; v# r7 U7 U
  1184. LDA #'/'* J% k. }) z+ I
  1185. STA PPU_Addr,X' K" S" U5 k- }! ?" V
  1186. INX
    + G8 R( i$ d. C( \& [7 f
  1187. Music_Show_Total
    2 K* P0 k1 x6 ~: Y
  1188. LDA Music_Total; t7 ]8 X8 g% ?' T; O
  1189. CLC7 u6 I* I4 }: X) k( R3 i0 O$ ]
  1190. ADC #$011 G' N9 X% z/ H. h+ Z& r
  1191. JSR HEX_To_Dec$ d# u4 x- T. P" B, I8 [

  1192. ) P: Y+ W  u6 j' x1 N4 D
  1193. LDA <DEC_H$ j" ?; `* L- o7 q
  1194. ORA #'0'5 O0 R1 u- {9 g; I
  1195. STA PPU_Addr,X
    5 T/ c7 K7 o0 K! r7 Q, B3 h
  1196. INX
    . Y9 g; }$ I) _( \. [
  1197. : Z0 b. [2 Y- W! y; v
  1198. LDA <DEC_T9 r' X2 L1 m2 k3 t3 K$ [
  1199. ORA #'0'
    ' N- L; s6 L0 a8 N
  1200. STA PPU_Addr,X
    2 x  d" Z5 D0 m
  1201. INX9 O# R7 E. \& Q' f4 I

  1202. 6 m( N' h0 \9 x: L
  1203. LDA <DEC_L
    3 j, i* g# e7 O5 c: c. f+ j
  1204. ORA #'0'+ T) V( P. u0 R& q7 e
  1205. STA PPU_Addr,X+ c$ H( @" u" l# |- w
  1206. INX
    3 h, m5 ]  J) @5 W
  1207. 6 l5 U; J% |2 S- Q  e
  1208. STX PPU_Cur8 a8 }- e% i' B0 T& }
  1209. Music_Show_End4 f2 V; j4 a& T- d3 ~; j+ v8 W' G2 {
  1210. RTS8 M# ~2 q* H( G

  1211. 0 c9 `1 D# E! z  ^8 @1 d
  1212. ;==============================% J/ m8 ]& l  ^5 W4 j5 j! T1 q
  1213. Time_Show;播放时间显示
    : t5 K8 o5 Y  r' y- l  _
  1214. LDA <Text_Disable_Flag0 [. |8 l& m1 x# x/ @/ U/ x
  1215. AND #TEXT_DISABLE_ITEM  H7 I' O  l* z; o8 ?# G
  1216. BNE Time_Show_End+ J, n$ }* G6 X
  1217. AND #TEXT_DISABLE_TIME( E. m, W  ?, n2 ?* r5 L
  1218. BNE Time_Show_Enable$ S9 }  k: F5 J. ]. L4 Q- ^

  1219. ) a& U" i5 b' H& A8 b5 B/ x
  1220. LDX PPU_Cur) ]6 B/ y0 m, F2 ~, `! w
  1221. LDA #PPU_MODE_CNT_LINE
    + _* f" Z, a& O; @0 U
  1222. STA PPU_Addr,X$ c/ `: Z: b4 ]+ U
  1223. INX
    & M' v. @; W" y* f5 s
  1224. LDA #HIGH(Play_Time_Pos)
    7 C7 W* N( g0 z6 b  q
  1225. STA PPU_Addr,X
    , Z/ H1 Z+ n; A# c: c/ s# P
  1226. INX) O; L; d9 s7 p9 S3 ~
  1227. LDA #LOW(Play_Time_Pos)
    * B6 U4 ?$ N/ v) ^9 O$ e
  1228. STA PPU_Addr,X
    ) x8 [2 V- D" n8 x; `
  1229. INX0 O* K5 V% G7 s% p/ B( E
  1230. LDA #$08
    + F! P3 g3 r( i
  1231. STA PPU_Addr,X7 e8 b3 P7 K( Z; i1 w& }7 {( j
  1232. INX5 H! g- q2 Z, _: R% b5 W
  1233. Time_Show_H
    : L% Y( Q: _- w; b6 @2 \
  1234. LDA <Time_H  R) |4 F; e% ?/ e' J. h, j
  1235. JSR HEX_To_Dec
    # j# P2 \1 h$ u9 k, J
  1236. JSR Time_Digit1 a9 r  ^! e% [3 e( |
  1237. LDA #':'
    $ b2 [# {" [  x
  1238. STA PPU_Addr,X
    0 T& j: j& u% i
  1239. INX6 ?4 J: ^5 k( n5 `
  1240. Time_Show_M1 U, ~- x7 C8 a; A' l- i
  1241. LDA <Time_M- I" ?0 y1 `. _5 k8 I
  1242. JSR HEX_To_Dec
    / m% O* B, q7 h0 P" q' C
  1243. JSR Time_Digit
    % T  z$ ?; ]' b
  1244. LDA #':'
    7 k4 D% q+ G" z2 U( G; A" |
  1245. STA PPU_Addr,X$ L6 p! w+ M- @" q/ J. l% ^" B, B7 T
  1246. INX
    8 d: d  W6 [# ~" x5 w
  1247. Time_Show_S  L. E0 ]/ q+ L$ C( ~
  1248. LDA <Time_S
    1 I/ n( ]# R6 i; D0 l. r
  1249. JSR HEX_To_Dec6 j3 J9 b+ z  |. H6 O3 V1 S
  1250. JSR Time_Digit( o/ U' X! b: T+ i4 G
  1251. STX PPU_Cur
      E4 D3 S: H; ?
  1252. Time_Show_Enable$ {: f- \1 R# {2 R
  1253. LDA <Text_Disable_Flag8 Q1 n/ d8 m* l+ E: Q; B7 T7 T
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    9 h: n. t( _' Y& b
  1255. STA <Text_Disable_Flag' T. K* [4 z3 h, I! [0 D! ^
  1256. Time_Show_End+ O0 J1 ^# p2 U9 m" i0 P
  1257. RTS
    . b2 \! X4 B" j) D7 _0 P  l! V

  1258. . x) [# D; r& R% ~0 S% Q
  1259. Time_Digit# T9 }6 ~0 w2 w9 G" f# n
  1260. LDA <DEC_T
    . a; t& d& d/ }, l# J7 I
  1261. ORA #'0'  @4 A) J! ^5 k9 ~0 j% i) \2 }9 h
  1262. STA PPU_Addr,X4 N6 z! W( B6 q
  1263. INX
    + K; M. F) H1 l& `6 {. R- B# x3 a
  1264. LDA <DEC_L
    % \( a1 ]& \4 p# L  {
  1265. ORA #'0'
    2 h3 C+ @$ g( i3 i$ ^; c# K: l
  1266. STA PPU_Addr,X3 [9 D/ {% S: |* M
  1267. INX
    $ L8 m7 M# f% Q$ d+ A
  1268. RTS! c- V( D$ x$ G, o
  1269. 5 j: e7 R. L* G4 c/ z' M  l! n! ?
  1270. ;==============================
    # }0 I% P/ W4 q4 x5 h
  1271. Time_Count;计时
    , u0 M8 q. u' B( h
  1272. LDA <Music_Stop_State
    1 A( @3 k5 K0 N2 R6 F! b
  1273. ORA <Time_Wait_Cnt9 G$ c0 }- R/ N5 u' G8 v, I- ?
  1274. BNE Time_Count_End
    7 `" F8 s8 b$ R" H+ ]
  1275. INC <Time_Cnt
    8 x( Y  t! _% v9 n% j
  1276. LDA <Time_Cnt
    + O* A  w+ R, k7 c: H
  1277. CMP #60
    $ ^8 `8 h  F. g) S
  1278. BCC Time_Count_End
    : W: ~/ S4 T6 }! s/ k
  1279. LDA #00
    ) m6 V  D( ~" H! l$ G, h5 I1 t
  1280. STA <Time_Cnt
    ! L8 s- b# K( ^- D& P
  1281. INC <Time_S. i% C! h  O2 [. H. W( M

  1282. 3 j7 u1 N; h7 O8 ~* s
  1283. Time_S_Cnt8 p# u) E& ?7 s: j5 X) s) r6 g  x
  1284. LDA <Time_S6 c! e7 }! U8 u/ z, w
  1285. CMP #60; ?/ Y6 b& M, Z# e0 E3 f0 _
  1286. BCC Time_Count_End. F- G" F3 L; u& I4 i
  1287. LDA #00% m  ?8 D2 x7 s
  1288. STA <Time_S3 Y/ G* A: ^1 B+ D5 b
  1289. INC <Time_M5 p) {- u1 x9 i) t; A+ K2 [

  1290. ; h# G8 a' B5 A7 l/ f
  1291. Time_M_Cnt
    * {/ \+ q3 f: D2 s) }
  1292. LDA <Time_M
    ' [% p/ ?( K. L: i: ~- d
  1293. CMP #60
    3 k0 x  _! \* X' m
  1294. BCC Time_Count_End
    * X2 ^9 ?0 I) L% |
  1295. LDA #00
    ) }, ]% ?" ~- O0 ?& y% D
  1296. STA <Time_M# A' `# @4 u/ L" {" n, K, d
  1297. INC <Time_H/ o( z7 i1 o9 C1 q* G$ {) a* I$ P

  1298. / |9 o. q9 F$ ^; H+ [- Q
  1299. Time_H_Cnt: ?1 M1 F3 A$ w/ Z8 G1 q
  1300. LDA <Time_H+ y) e; Y4 B) i
  1301. CMP #24
    * S. \3 S9 i# N
  1302. BCC Time_Count_End, X+ H6 g8 @# a8 B+ @
  1303. LDA #006 J. y' ~; B0 W
  1304. STA <Time_H- \3 I" g% Z# h6 M! o/ u& q

  1305. 5 j/ F' q0 o2 @$ A& D, x
  1306. Time_Count_End
    # L. _$ d, s, k* A6 u; o$ p
  1307. RTS
    . N9 D9 _2 W2 `$ O. O% G5 p3 F; p

  1308. , z$ ?8 ]" Y0 @" f; f5 |1 _9 o1 I9 e
  1309. ;==============================4 S' C  b$ U' J- w6 q: H1 D" \
  1310. Time_ReSet;播放时间重置
    - h3 ^- N: W0 l9 j) l
  1311. LDA #$006 X7 ]) N" v6 K5 s: h
  1312. STA <Time_S
    , F' ~6 a: y' n8 [8 P; H
  1313. STA <Time_M 9 Q/ ]* p0 X+ _3 l
  1314. STA <Time_H
    ( ]# B% g3 e$ X2 {% v$ {- L' j
  1315. STA <Time_Cnt
    9 |1 N6 l$ D+ N: t9 T% Q
  1316. RTS8 f8 g4 y5 `  S( a

  1317. ! [! O' B" K: t
  1318. ;==============================, N; q" e& w5 l/ b, @6 t+ H
  1319. Music_Bar_ReSet;音乐条重置! j3 D, w5 M+ ~+ z. v
  1320. LDA #$00
    & ~8 _; k6 T) b* s, j8 @, E& y8 Z3 H& s
  1321. LDX #$00( V: U* V2 [$ g1 e6 p
  1322. Music_Bar_ReSet_Set" h' j! O$ l7 s) ~3 I
  1323. STA Sound_Bar,X
    ; b1 G: B3 d! S% ~" o
  1324. INX
      B* s6 x' g" O) v
  1325. CPX #$10- P4 v8 b. h; R/ `5 \8 P/ J
  1326. BCC Music_Bar_ReSet_Set5 A0 Z% O5 M* U7 S' |: U
  1327. RTS* m3 U) w4 h" V4 ]' m  @% D
  1328. / |/ H# x* L1 I5 f7 Q
  1329. ;==============================) V2 |+ J) [+ z0 B
  1330. PPU_Data;PPU数据写入0 r' S  b' \( r5 b  b1 [/ J
  1331. STY <Data_L6 U+ x8 X( m$ f" R8 I
  1332. STX <Data_H/ X+ a- F5 G5 l1 T7 T
  1333. LDY #$FF2 H( L7 R* q  S9 W, _, J
  1334. LDX PPU_Cur
    3 L/ E( O7 j7 K; \3 N1 B
  1335. DEX
    , ]  m( }& t9 T* B
  1336. PPU_Data_Beg2 U6 {: S( B4 m
  1337. INX
    0 f7 M9 d  _6 |, Q( L" w' A
  1338. INY, ~  j* `. v9 }% [
  1339. LDA [Data_L],Y
    . d8 ~1 ^# F4 g
  1340. STA PPU_Addr,X
    % i+ j8 m) i/ b! r8 I5 `6 F! _
  1341. BNE PPU_Data_Beg! @+ l% p/ c" f
  1342. STX PPU_Cur9 a" h& X; |. v
  1343. PPU_Data_End
    , [- s9 d) o) F6 s# ^6 H2 Z1 t
  1344. RTS8 ?/ E6 N/ `3 a- R( i/ z! R
  1345. # G9 x# E% j8 J( v
  1346. ;==============================
    % {1 c3 A1 D" t  m4 P$ Y6 L
  1347. Music_State_Show;播放状态显示
    2 J+ U8 {+ [( F4 {! i/ ]
  1348. LDA <Music_Stop_State
    # R) A$ z5 z$ @
  1349. BEQ Music_State_Show_Play0 ^, R$ V9 K, c3 Y0 I" K  e+ E
  1350. Music_State_Show_Stop  B- P2 D( B" p
  1351. LDY #LOW(Music_State_Stop)
    & w* ]. @: I! S8 c9 H  [+ |- m
  1352. LDX #HIGH(Music_State_Stop)" Z. V, Y  S( f/ c; ^6 m
  1353. JSR PPU_Data9 r/ j/ e" P5 D: O
  1354. RTS
    3 \6 }1 ^, Z$ Q5 _0 C' E
  1355. Music_State_Show_Play& x9 h  S' z; E$ D1 T
  1356. LDY #LOW(Music_State_Play)/ f9 L! c, G+ S) y1 g& l
  1357. LDX #HIGH(Music_State_Play)
    ! K( O" u' Y9 S  t/ {% ?
  1358. JSR PPU_Data
    + d9 o6 a2 }* h2 d' @
  1359. RTS
    , p+ C& _6 y) j

  1360. & \0 I+ s1 |' N6 u2 W% P7 D
  1361. .IF SOUND_BAR_SHOW_ENABLE
      U4 e+ v3 {! a; f$ U
  1362. ;==============================
    $ Y6 z% S0 q$ p6 z1 q; y& m
  1363. Sound_Bar_Text_Set;标题与音乐条初始化- n; x  ?9 c! v4 K3 n' V2 w& e" q! \# G
  1364. LDY #LOW(Sound_Bar_Text_Data)' u& E$ i; o% c! j. H: I* k
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    5 g1 P9 G0 ^* X
  1366. JSR PPU_Data9 ], X+ P: p- p
  1367. RTS
    5 `0 ]9 Y! c. J; ~( L+ Z

  1368. 9 E7 ?) I$ }7 J/ [
  1369. .ENDIF
    : b  {# c5 w/ y) C9 R2 }! }* ^

  1370. 9 R: d+ a3 p& \' M% j5 B0 I8 ?
  1371. ;==============================
    ( j1 ?$ e1 r# [1 `, y; \  J
  1372. Set_NameTable_Attributes;设置命名表属性
    # i* W" B' D# u: A
  1373. BIT PPU_STATUS8 \! h5 j0 a7 C* ?& |: o  D
  1374. LDA #$23! A+ A/ [  B% R
  1375. STA PPU_ADDRESS
    8 E2 R) z8 p) u* b" H& Z
  1376. LDA #$C01 E$ ^# n2 @$ n2 E' r$ L
  1377. STA PPU_ADDRESS
    $ R8 x) a6 `2 o5 y& U$ G
  1378. LDX #$004 q  d! D/ Z0 j. P# G& c
  1379. Set_NameTable_Attributes_Write7 a! Y9 e' n' o$ b0 Z. n
  1380. LDA Palette_Attributes,X
    , {5 D( Q9 Y  N% L, L
  1381. STA PPU_DATA
    / T# `. }( Y% u  M
  1382. INX
    6 N# q1 I* U5 ?. w. q) {, Q
  1383. CPX #$40
    $ B3 n* m3 n( k: {4 @# G% f% m
  1384. BCC Set_NameTable_Attributes_Write; e$ s, i  O8 N+ m9 P7 _; i
  1385. RTS
    & M$ R8 S" F& z$ D
  1386. - v* v; |& u( y$ A1 |
  1387. ;==============================
    ; h4 X/ |$ T9 {* x# ~, M6 N5 i6 v- A
  1388. Set_Palette_Color;设置调色板数据
    7 ^# q7 O$ `1 v5 c8 W
  1389. BIT PPU_STATUS
    5 C0 K2 Q: `, j0 p; ?8 ?6 k2 i1 G
  1390. LDA #$3F
    5 F8 {/ v0 N& d, D! j
  1391. STA PPU_ADDRESS
    1 @: _: j" o* }3 l- D1 U& {
  1392. LDA #$00& c: C1 ?  y* B- x( e' w$ r
  1393. STA PPU_ADDRESS
      n8 A& `" x4 p$ |' q
  1394. LDX #$00
    ( ~  `0 p4 m6 F: o
  1395. Set_Palette_Color_Write
    + s, M7 _) o- |! i8 f- I0 _9 Q
  1396. LDA Palette_Data,X
    5 d# L5 G" K) M  j3 e/ B
  1397. STA PPU_DATA
    % I5 G$ J) r* {: X* Q3 }  p2 b% I
  1398. INX
    2 \  y2 y; |; j- {
  1399. CPX #$20
    0 {0 b* u( M# r- s- X% A3 z
  1400. BCC Set_Palette_Color_Write
    ; q1 _0 F9 I, e  A) G4 z+ D! Y
  1401. RTS
    2 j2 G6 F5 v( g4 ?+ q1 p6 \
  1402. 9 T8 U% n- F$ ~  q5 e+ ^6 g
  1403. ;==============================( u0 |& l1 U1 I. w/ e! ?
  1404. Init_Palette_Addr;初始化调色板数据
    5 R* Z1 m% t  I/ B
  1405. LDX #$00: K$ E6 b% r5 b
  1406. Init_Palette_Addr_Write
    / Z1 O0 c7 s. g
  1407. LDA Palette_Data,X
    / A5 S: ]& m8 q% d0 m
  1408. STA Palette_Addr,X" V3 L( z9 i" D
  1409. INX
    - ^* x/ z' M9 X; V! D2 V
  1410. CPX #$20! S; R& b& f6 |1 K
  1411. BCC Init_Palette_Addr_Write4 b2 E* g9 H9 J, j5 h9 \
  1412. RTS0 v& \; `: f/ N
  1413. ( v; Y3 Q1 I' L& \  _2 B3 J
  1414. ;==============================* ~) I7 M+ D! {+ {% N& e1 ~: d; `
  1415. Update_Palette_Color;更新调色板颜色
    2 j! Q  k' r2 ~! z- `) j
  1416. LDA <Palette_Update_Flag; K8 u( g5 _2 Q
  1417. BEQ Update_Palette_Color_End
    1 _6 d& A0 g: Z
  1418. LDA #$3F
    $ I" Z% U; L* F, [. Q$ m
  1419. STA PPU_ADDRESS
    / b3 W, r* K& F$ N, }+ `
  1420. LDA #$0C$ b, B1 U1 u" {! R. r6 x1 u5 i
  1421. STA PPU_ADDRESS5 S" z3 d: _% W3 I% F1 T3 R
  1422. LDX #$0C! A' I: @5 O, H. k7 t: |
  1423. Update_Palette_Color_Write
    " {. t4 {7 y6 I1 G, @& s
  1424. LDA Palette_Addr,X
    7 H# K$ z) m9 X$ X. Z/ ]
  1425. STA PPU_DATA
    / z' Z1 d+ U2 `& j; j# q
  1426. INX
    / w* Z2 Y& S: O+ c: ?5 _
  1427. CPX #$14
    : }# s% z9 Q' ]" x( _% @8 B; a  D
  1428. BCC Update_Palette_Color_Write
    9 w4 m6 P; r5 [! f* k1 O
  1429. LDA #$00
    0 m6 H: w/ o- \- x) s! R
  1430. STA <Palette_Update_Flag/ r$ l2 s' R! L5 J
  1431. Update_Palette_Color_End
    3 \# l/ O2 J" F& n% C) w! h; r0 J
  1432. RTS. m6 p! I; ~. A$ N

  1433. + |9 l- L. n% _0 b4 t) o9 o! |

  1434. & r8 j  s* M5 I
  1435. Update_Sprite_Palette_Data
    , }3 m% y4 r- t' L$ H% v7 _: F
  1436. .DB $21$ I5 k+ r( v) x, X* {2 {5 n# b
  1437. .DB $21
    % H) l5 j" L  b" M4 j
  1438. .DB $11
    1 [! k. D: O5 \+ L) I. o1 o
  1439. .DB $01. [& h4 v0 Y1 n9 q4 H, i
  1440. .DB $01, Q/ P3 l* x: l8 S, M2 ^; b
  1441. .DB $11! B, ^' }" C$ }
  1442. .DB $21$ Y8 H+ i5 d! K6 [2 E2 Q5 R8 p
  1443. .DB $21& w. ?" v6 a+ |
  1444. .DB $115 D$ o# K8 C  O$ U& p9 h' |" \# z
  1445. .DB $01
    3 I4 Z9 l! P3 {1 p1 a
  1446. .DB $11* H) G' x) D3 h, M# E% e
  1447. .DB $21
    / c! |) w1 e$ r) w, ^
  1448. .DB $21
    : F- E/ j4 H: w& `2 [5 F
  1449. .DB $114 V: U7 ?$ `) D  v! l) i* `
  1450. .DB $019 c9 p  h% K! x7 {7 e
  1451. .DB $11
    ! {. O- E& J8 n( `, s; \
  1452. ;==============================% I$ a" M$ {8 P) n5 M
  1453. Update_Palette_Data;更新调色板数据
    " G" m: J. K4 x+ Y& X: u) F
  1454. LDA Nmi_Time_Count! f* b7 U3 y) G+ p/ n
  1455. AND #$08
    * \8 W! `. z% H$ X3 E& X
  1456. CMP #$086 A% ]* y8 S$ z- n: {
  1457. BNE Update_Bkg_Palette_Data0 R! ?# v, h) v% c
  1458. * g  d0 q4 T( o% Y
  1459. Update_Sprite_Palette_Data_Set
    / e6 k* y, Z7 l8 z  {: E
  1460. LDA Nmi_Time_Count
    . B( T- d9 C4 i0 E+ V" y/ u+ L2 _  g
  1461. LSR A
    1 o+ D! R2 v' B
  1462. LSR A/ V/ t& J( G$ H5 |
  1463. LSR A
    3 m1 L1 q  t9 I1 C7 |- y( _
  1464. LSR A
    # R$ _- L% w$ D- L
  1465. AND #$0F
    7 o( v$ {6 \, s/ `" q; d
  1466. TAX
    9 @$ j$ z8 ^/ R- U+ z: q' i& D
  1467. LDA Update_Sprite_Palette_Data,X
      ]3 i' f/ f% U2 O: a
  1468. STA Sprite_Palette_Update_Addr1 J! Y3 @( F0 l
  1469. LDA #$01, \! O  b/ X" O* F. H) M3 s
  1470. STA <Palette_Update_Flag
    % D; z4 M8 x6 b/ `6 U) z
  1471. ; L, _, ]7 F1 E$ W6 `; {
  1472. Update_Bkg_Palette_Data
    8 |% a9 d" I6 P  C+ Y, t8 m
  1473. LDA <Text_Disable_Flag
    + S9 R' J; j2 l3 B
  1474. AND #TEXT_DISABLE_RAM5 _# J# ~$ m$ i2 ?8 a9 E
  1475. BNE Update_Palette_Data_End" U- P; e% e4 T7 x) p1 [! M
  1476. LDA <Music_Stop_State
    7 x  K* r3 i9 `. Y) J3 G6 Y% r
  1477. BNE Update_Palette_Data_End
    7 g* n- G1 K, V6 O+ u' ]
  1478. 6 W; N6 q$ R% y1 ]# ?2 @
  1479. Update_Palette_Data_Check) y  U' W& N/ a; X6 z: {5 @& @: L
  1480. LDA Palette_Wait_Cnt
    % E* T# i6 `4 j* p! C+ z0 i
  1481. BPL Update_Palette_Data_Check_Over
    & T4 C4 g& u  _" y
  1482. LDA #PALETTE_UPDATE_INTERVAL
      o# g( g* l$ g& b6 M" G" X) J/ F
  1483. STA Palette_Wait_Cnt7 K$ G* \- h' |: I
  1484. Update_Palette_Data_Check_Over# m. }- b: w' r. c
  1485. DEC Palette_Wait_Cnt
    9 Z. F0 C- E5 j2 ?
  1486. BNE Update_Palette_Data_End
    ( T7 V7 F$ j! Q5 y) Y) e( K0 X
  1487. / a3 J3 H& T; u: x
  1488. LDA <Text_Disable_Flag
    6 Y+ E" ^$ B! b3 l- I4 M
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    + j# l2 J' E9 W, R8 _" ?* N
  1490. STA Text_Disable_Flag
    7 H& a9 c& ^" {! {& r
  1491. INC Palette_Update_Flag! M$ S- L8 T2 g: v2 i- |8 ^

  1492. ; L1 i8 C3 L  y. A0 o7 |
  1493. LDA #PALETTE_UPDATE_INTERVAL' e- @+ R( j4 r3 S
  1494. STA Palette_Wait_Cnt  {2 V4 x1 F: r0 \

  1495. 7 r* Z. {5 v- N
  1496. LDA Bkg_Palette_Update_Addr
    7 `2 T) @. R; w9 ?) u
  1497. CMP #PALETTE_UPDATE_MAX! Z% U/ v7 M7 T, X
  1498. BNE Update_Bkg_Palette_Data_Set
    # _$ C! ]2 ?1 {1 Q6 p
  1499. LDA #PALETTE_UPDATE_MIN - 12 u% L5 J' v' B3 b; _8 o
  1500. STA Bkg_Palette_Update_Addr2 g- ]1 L' O9 y, g
  1501. Update_Bkg_Palette_Data_Set
    . [$ T! P  F. A  x: d( `- \
  1502. INC Bkg_Palette_Update_Addr
    + R6 E4 \8 v6 h% ?+ B# }$ Y! E
  1503. % {; c2 x3 U8 `3 T
  1504. Update_Palette_Data_End/ l; ]/ l% u9 k; ?; L" M5 P4 Y) h! N
  1505. RTS% X& ^# j$ w4 A& v
  1506. * N% u( g7 \' {- }2 @
  1507. ;==============================
    ' R, N7 ?( C2 B6 d) r
  1508. Show_Music_Text;显示静态文本
    $ q3 j6 r3 j, B# |( o
  1509. LDX #$00
    ' e9 l5 @' _7 g6 Y9 X8 p) h
  1510. Show_Music_Text_Set
    2 d3 b3 [* [) j# W+ C5 z
  1511. LDA Static_Text_Data,X
      B% I$ ^$ @: u2 j
  1512. STA <Data_L
    ; ^( B# |3 c$ G$ C
  1513. INX6 m5 y, H- D3 U5 m! R1 v
  1514. LDA Static_Text_Data,X
    / s3 i; Q+ @% K/ y2 b" a
  1515. STA <Data_H1 U, }/ ?; ~; D9 {( {( h! ]: ?
  1516. INX
    ' h) U- a: I# d8 p: k: N' J% F% u+ Z
  1517. LDY #$008 X1 K! Z2 J$ i' k
  1518. LDA [Data_L],Y! M& T) o, k' e2 Q
  1519. STA <Data_Cnt
    2 J" _, f5 y3 O% s0 A/ F" j4 h7 L2 @4 C
  1520. DEX( x1 J& C$ |/ H# G* ^
  1521. DEX6 H$ z3 e% h# x! j! t- N; Y( q
  1522. LDA Static_Text_Pos,X
    ! u. [' E1 i7 t' B
  1523. STA PPU_ADDRESS/ t8 W- l8 Q% [0 \' U& O0 \$ K
  1524. INX" j& R% x! @8 ^! G5 ]8 }  |! @# N
  1525. LDA #$20
    / k# l% `3 G0 I
  1526. SEC
    : H3 t8 ~8 A; M5 j  q
  1527. SBC <Data_Cnt8 c- `* s) @9 l+ [
  1528. LSR A
    8 _+ K4 b0 G+ Q# G" b1 `- c* N
  1529. STA <Data_Buf
    ) o' J; E9 G# U% L+ }
  1530. LDA Static_Text_Pos,X  t; ^2 `* T/ K6 B" r2 g. t! d; \; d
  1531. AND #$E0: ]+ B% |3 H$ Z# C+ B- b, T0 E! Q* H
  1532. CLC
    : s" B( }7 ]9 _1 p$ I" z1 t
  1533. ADC <Data_Buf
    6 C1 Y. J4 L& }4 W2 G
  1534. STA PPU_ADDRESS: @  n1 `; O6 k! c) D
  1535. INX
    . k+ O( ?: b# T! {
  1536. Show_Music_Text_Set_Write& s0 S0 ^1 `$ Z! i8 }5 B
  1537. INY* h7 o3 A0 P& F  ]2 [
  1538. LDA [Data_L],Y
    3 i5 L, O2 J9 C6 @
  1539. STA PPU_DATA4 t7 k! g" X1 s  I: Z
  1540. DEC <Data_Cnt
    ) J* t. M( h, z2 Y5 {
  1541. BNE Show_Music_Text_Set_Write  x1 x2 s5 v. A
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos+ e4 r  D* ]$ N& x0 [
  1543. BCC Show_Music_Text_Set4 R& L5 p) e5 w) s% e
  1544. RTS! Q: O4 ?2 I+ T3 q4 Y
  1545. * X2 }, y0 l! ]7 d1 j
  1546. ;==============================
    ) I+ ~" T( t  R
  1547. .IF Track_Name_Pos;显示曲目信息# f5 Q( {$ J9 `- D& Y5 h
  1548. " N8 ]" y4 @1 c" Z
  1549. Clear_Track_Info0 g. A% _9 z4 m7 J7 v$ @, [9 G% N
  1550. PHA+ J. x; g( E7 ?' C" d0 {
  1551. LDX <Music_Item_Cur
    ( v! X, H# C+ X+ h: {7 t6 t5 O5 J7 r7 x
  1552. LDA Track_Name_Addr_Flag,X) t9 g; W! g4 M% k6 x+ f
  1553. BEQ Clear_Track_Info_End_Ex
    - G# e& z# c3 ~3 X3 N, [
  1554. PLA+ ?, x0 K+ D  j, v3 b5 k( p8 \! u
  1555. 1 Y" f0 g# ?, |! Y5 _: U; l* x
  1556. LDX PPU_Cur1 X" k* Y  ~+ F0 a0 u7 x
  1557. PHA
    4 r# p/ u  m7 d0 H0 X# x% D7 [2 j
  1558. LDA #PPU_MODE_CNT_CLEAR
    0 N( O) X4 n6 a, K
  1559. STA PPU_Addr,X  @; o6 B6 [9 o  H  ?! x6 Y: B
  1560. INX0 B/ Q* ~! E- s3 Q1 S
  1561. PLA
    ! G+ l% r7 y1 q' O! w" Q3 w8 c6 A6 U
  1562. JSR Show_Get_Track_Name_Center_Pos/ |0 @# H! x& Q0 l0 u0 N- t
  1563. STX PPU_Cur1 p& u) Z3 G" I4 B! X! P3 _# B
  1564. Clear_Track_Info_End- b& o0 a2 ~9 Y* Z" A+ e1 e
  1565. RTS
    # i3 z7 Q- w0 p, s% E3 M3 X
  1566. Clear_Track_Info_End_Ex8 G" t* h2 {: S+ M
  1567. PLA
    # n; z: g& f$ `. t4 H5 e# S
  1568. RTS, O. P% U/ J" _+ r' S# c: D
  1569. 1 I: M6 Y: L$ `% B
  1570. Write_Track_Info5 }0 ]& s6 I  Y. c6 j+ C0 J
  1571. PHA1 R  Q$ K' E, a9 [# _
  1572. LDX <Music_Item_Cur3 C5 O$ x9 w$ B3 r9 D
  1573. LDA Track_Name_Addr_Flag,X
    4 x1 m, ^, d5 B! Q4 |( }8 e! R" Y
  1574. BEQ Write_Track_Info_End_Ex
    - K" U8 Z$ n# ~3 j" o
  1575. PLA9 d* J9 i/ T4 U: d; r' F' ~$ h5 Q/ q

  1576. ; G6 Z: ?5 q, g: o0 [
  1577. PHA3 ?" i& v, ~, x8 E6 ^0 B6 B
  1578. LDX PPU_Cur! ?; I0 a. ?' C) _6 y# R
  1579. LDA #PPU_MODE_CNT_LINE/ `  |; a5 ]+ x- X( r* l& W+ \
  1580. STA PPU_Addr,X2 E4 J, d' D1 l* J  f
  1581. INX  [* p2 w* \! N
  1582. PLA& y' \- j) p4 r$ ^/ C9 w& d6 B$ i. b
  1583. JSR Show_Get_Track_Name_Center_Pos; B) @% T+ H& l' [( q; K6 Q; c
  1584. Write_Track_Info_Data/ Q% d( j0 [  a  v3 ~" Y
  1585. INY' Z0 C8 O4 E) s2 c
  1586. LDA [Data_L],Y
    * e$ m8 c# L  G6 O* L
  1587. STA PPU_Addr,X
    ( [6 {% {4 Q) g! A) b
  1588. INX
    , j. y. g5 O% `: M
  1589. DEC <Data_Cnt: g8 Y* ~2 W3 I
  1590. BNE Write_Track_Info_Data$ d  b0 i: y% _8 ?( L8 v. l
  1591. STX PPU_Cur
    ; J& }& Q3 G! g1 |
  1592. Write_Track_Info_End
    # q! f+ j# ~/ R/ b' u- Y2 r2 Q: E8 C# a
  1593. RTS
    9 M; m, [1 X$ s' V- J3 S* H
  1594. Write_Track_Info_End_Ex6 D% V+ g! K/ n' l1 M8 h, Z, j
  1595. PLA  @( z3 Q" ^! J2 T9 A" S/ L  }
  1596. RTS! U$ _0 K$ c4 b& R! W3 ^
  1597. 6 x+ s; n% U2 ~) [$ H( r' h
  1598. Show_Track_Info
    9 K* F/ n! j2 S- H
  1599. Show_Track_Info_Clear( r( C$ `! a' K3 V- B
  1600. LDA <Music_Last
    / _- h5 \8 w5 g$ ?

  1601. 1 P# U7 Q# P, [7 e7 w' `
  1602. JSR Clear_Track_Info: ]4 A% y$ F1 R. K6 M0 Q, \

  1603. " A' o' W1 d9 ?% Y4 c$ g/ l2 \6 ~
  1604. LDX <Music_Item_Cur  I: `' z* L6 e6 E0 k& g/ \$ b
  1605. LDA <Music_Cur,X
    & O9 b" o* N8 v& B
  1606. JSR Write_Track_Info
    * V2 x' ?7 r7 |9 C* `! ?5 u
  1607. RTS
    : L" n5 z% K" @7 _; G4 n7 c8 j. q
  1608. 0 A6 X5 I" V6 J( c0 I# d
  1609. ;==============================- m' _7 ]' ]1 O* c) m; J" W
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    " Z$ `. ^% i  |- w: b- [3 E

  1611. 8 y7 _( O. C! G7 B' _
  1612. ;取出集合名索引
    3 e- M4 a" \* K' s% I" f& h
  1613. PHA
    , {; ?7 r1 y& d! x8 o1 d1 B" U

  1614. # f6 S8 s5 f! v! X) C2 U  B
  1615. LDA <Music_Item_Cur
    & r2 [7 D) [, e# |# V
  1616. ASL A% c4 k# Q1 G- {3 w/ J0 \) C5 j
  1617. TAY
    ! g; i9 W6 k4 P) S0 f6 X% ]; a( t( t
  1618. LDA Track_Name_Addr_Port,Y5 A6 G# d3 h# O- O. u9 H" e
  1619. PHA  E- Y5 ?; x4 t" m; {4 W. S* l7 R* [
  1620. INY
    : L9 v8 H1 H" O
  1621. LDA Track_Name_Addr_Port,Y
    % H; u5 {5 i1 V7 A
  1622. STA <Data_H3 X  F: h; R: c* t/ A
  1623. PLA# o2 T( P2 n' [, M" I4 s& V
  1624. STA <Data_L
    * \" ?/ T3 r: v! _7 f" B
  1625.   v$ J1 m# N8 z2 F. T  W
  1626. PLA
    / q& @0 N# V0 F

  1627. 1 K- [1 r# g2 c/ _/ K3 s
  1628. ASL A
    9 Y% z' t% [( I# h6 E
  1629. TAY
    6 ~6 w" x; R3 t, ^- e) o5 o
  1630. LDA [Data_L],Y# r4 U# O% [' B& C. ]  }( m
  1631. PHA
    $ s: w+ ~/ w2 m+ P
  1632. INY4 B2 \" x7 }1 s: y3 {1 C
  1633. LDA [Data_L],Y
    4 L- H' }6 D/ m1 Q! G; |2 ?
  1634. STA Data_H3 T) L. {% N- \6 P- K, b4 I
  1635. PLA
    3 A% e6 G2 j) k4 t; o7 s
  1636. STA Data_L8 J& q$ p9 `0 s& E- ?& h$ f/ ]5 B# G

  1637. - t, X: }3 C; a: \0 @
  1638. LDY #$006 O. M  |9 x# |+ J7 D( {  `  ^
  1639. LDA [Data_L],Y
    5 r9 j; X" c* Z% P! Z, k' \( l6 Z
  1640. STA <Data_Cnt! F$ \  B( Y/ C
  1641. LDA #$20! P: ]/ y. }5 U6 e% c
  1642. SEC5 o8 M- w/ d5 u: Y! ]: H5 v
  1643. SBC <Data_Cnt
    $ F% P, B7 [7 P1 L% r7 w
  1644. LSR A
    1 g; w! j  r  h" q& J% R) i
  1645. STA <Data_Buf
    1 Z6 c+ T# f7 I7 |4 Q* I% C- g
  1646. LDA #HIGH(Track_Name_Pos)
    " H5 T2 y9 |+ C' E/ R/ H# B* y8 w: O
  1647. STA PPU_Addr,X. O3 J& h! U5 P, ~' V: {$ E
  1648. INX
    3 @1 x' ]6 a( t+ o4 ^9 N. W" G* u
  1649. LDA #LOW(Track_Name_Pos)
    1 u2 D. [6 s- Q5 r7 ^
  1650. AND #$E0& H6 {. T6 _, v1 b6 ~& D; ^
  1651. CLC
    + O( q1 V7 I9 U+ b8 m6 c% P/ n! x
  1652. ADC <Data_Buf) s! }- ~4 {/ n+ j" |: w7 d# S
  1653. STA PPU_Addr,X
    3 w9 A, k( M( W
  1654. INX& b: X8 L$ ^* n" I7 a4 [4 o, k/ U6 w; m
  1655. LDA <Data_Cnt
    4 Y: @0 x9 ?0 j! r) O: {+ H% u2 A
  1656. STA PPU_Addr,X4 E& k5 |/ `, J: a8 u& t
  1657. INX
    % B1 E% w- U  |$ R+ v# N: x
  1658. Show_Get_Pos_Center_End
    1 A& D- d5 X4 B: [8 H! e4 Z
  1659. RTS
    4 Z" Q! s! a* B' N6 f- _
  1660. .ENDIF
    & z# m" ]" q8 |

  1661. ) n, a+ ~4 V  v+ x+ s, _
  1662. ;==============================6 O- @: w" L& N* G, \1 s
  1663. ;音乐端口清除
    . U. ~7 z6 s" Y! V( j
  1664. Sound_Data_Clear3 Z5 N  Q8 H+ r! j6 n8 x* m
  1665. JSR Sound_Port_Clear
      |0 p' e$ z9 M: `* k" [# e
  1666. JSR Sound_Ram_Clear
    ( m1 \( F3 o2 j) X  F3 {) L! ]  d
  1667. RTS+ j/ k3 `) c$ w% u

  1668. - y& h5 |. F* l
  1669. ;==============================# s& z/ m3 f6 Q6 O0 Q4 i. A
  1670. ;音乐端口清除
    5 a  j% _" f) E, x# c1 @, s
  1671. Sound_Port_Clear
    , p. N3 A" l' z4 u
  1672. LDA #$002 w0 G( h# m7 G9 ~" I' z8 [
  1673. STA APU_STATUS/ a# D$ t! l- H. ~, \- p9 p/ D
  1674. LDX #$00" G! [! s: ^4 F. H+ d$ \& _1 B
  1675. Sound_Port_Clear_Write4 U: c* m* E: k! ]7 I
  1676. STA $4000,X
    + B) ?4 L" P' k. W
  1677. INX4 r0 q( M3 D$ m$ v2 t4 _' u. Y1 W
  1678. CPX #$14, U# z5 @% n6 v: ~9 T! b
  1679. BCC Sound_Port_Clear_Write$ ]- b5 P, {" t! m5 `
  1680. RTS
    5 u  X- k0 S' {9 g

  1681. ) P; q5 _4 `+ K' |
  1682. ;==============================
    ) N. P) T; v* C
  1683. Sound_Ram_Clear;RAM清除+ h( w9 y( `+ l- B! `: P2 A5 w
  1684. LDX #$00
    + S, T6 V. x% ^, b8 P( R8 r" K- Y
  1685. LDA #$009 }6 L. m6 I) N! r
  1686. Sound_Ram_Clear_1( R  r% n1 G/ v& T
  1687. STA Sound_Ram_Addr_1,X/ I" _, p1 R$ W; ~) d& `
  1688. INX4 `& c( X$ x# s# A, R" M5 @, m! Y
  1689. CPX #Sound_Ram_Addr_1_Size9 ^" V3 \) J2 _% x* y6 G5 \
  1690. BNE Sound_Ram_Clear_1( ~- p. q# l/ }6 I+ X' G) r- F6 E
  1691. LDX #$003 h* G' h% t! b" U$ ~  k  S
  1692. Sound_Ram_Clear_2
    6 O( m$ \/ h  Q% M3 W. Z' ^8 B; Z
  1693. STA Sound_Ram_Addr_2,X2 ]: k3 S& d* o. G; V
  1694. INX
    0 ]: |1 {* f' X3 g" [
  1695. CPX #Sound_Ram_Addr_2_Size
    & g; t; s& F$ H7 \* J5 w4 Z
  1696. BNE Sound_Ram_Clear_26 J$ q  S# ?4 L- M2 Q! f+ ^
  1697. LDX #$00
    4 v, h, f+ m8 h6 E! s9 x
  1698. Sound_Ram_Clear_3
    ) Z# M$ _3 k: c7 e/ O
  1699. STA Sound_Ram_Addr_3,X# z6 @; e* \9 {. H$ v0 [
  1700. INX2 \& @* q" C7 u$ \6 G
  1701. CPX #Sound_Ram_Addr_3_Size5 I% E5 g9 I' Y. i: `
  1702. BNE Sound_Ram_Clear_3! Y6 Q4 T2 m6 B- z! y
  1703. LDX #$00
    1 W: p1 \- }3 k( j' e
  1704. Sound_Ram_Clear_4% |# V- f* B! L! X: m" s+ r
  1705. STA Sound_Ram_Addr_4,X
    4 A, `' T8 Q, r! {0 \2 {2 c- b% I
  1706. INX
    5 I# _7 y) f- K8 M- P. P
  1707. CPX #Sound_Ram_Addr_4_Size
    0 h5 a* T1 K% |/ Y
  1708. BNE Sound_Ram_Clear_44 l- t+ R) w: h& I& i6 ?
  1709. Sound_Ram_Clear_5
    ( j2 X, j0 y: Z" g  u: b
  1710. STA Sound_Ram_Addr_5,X
    4 e& W  r0 V, W  m6 F, x$ C" i
  1711. INX
    ! [3 g* _- U& |# b9 A
  1712. CPX #Sound_Ram_Addr_5_Size
    ' `1 G7 p5 }, z4 I; x1 C" U
  1713. BNE Sound_Ram_Clear_5+ y/ J) {% ?$ T6 f" W3 p) o
  1714. RTS* F" p) p" l7 y8 p; {$ Y
  1715. 4 u- E2 ^! c! w7 \6 c# j
  1716. Get_Music_Collection_Name
    6 J! I. o6 F0 ~& ?' q4 K9 I
  1717. PHA3 ^  ~2 k8 Z+ h; V
  1718. LDA <Music_Item_Cur
    5 W* W9 v9 X" _% y4 j
  1719. ASL A
    , e9 B* P8 i3 B6 i3 _* N: Y9 B3 K5 Z
  1720. TAY. a4 T8 n1 t- H7 z: U/ {1 ?
  1721. LDA Music_Collection_Name,Y  Z3 K8 J' a0 N  `5 K2 C2 e, D( U
  1722. STA <Data_L
    0 p2 q) u% P5 j
  1723. INY
    ' e* @  h- x' E
  1724. LDA Music_Collection_Name,Y8 y) q( \4 B9 m0 ~/ L* M
  1725. STA <Data_H
    ) r) v( A$ r+ V2 \" H2 D
  1726. PLA% c5 i$ L2 \1 _' f) I% p+ w# `6 ~
  1727. RTS
    ' T- N' O$ q5 v3 T' J
  1728. 9 s, \! c- A4 O7 r' s
  1729. Set_Sound_Total
    ; y4 G" K  Y( k% X; d: P1 N
  1730. LDY <Music_Item_Cur' f! T' _3 ^4 h) J2 U* j# |" b
  1731. LDA Sound_Total_Port,Y& M# i: N8 H8 |: X$ p: l6 ~
  1732. SEC. p* |( Q6 ], v3 ]/ M) X9 `
  1733. SBC #$016 h0 r- x% J/ J
  1734. STA <Music_Total7 P. w: g9 K" T
  1735. RTS
    * C  c* a+ g0 o7 S/ `$ O

  1736. 6 t* W$ k0 O1 h: W
  1737. Get_Sound_Start
    8 D" y5 {) Z7 u2 z
  1738. LDY <Music_Item_Cur
    + Z3 h/ ]! N' h! @
  1739. LDA Sound_Start_Port,Y
    * w2 G# m1 P1 q( C+ p+ p% K
  1740. RTS4 S0 t1 X- u. _9 ^" J" s
  1741. 5 m) _6 \  @" C8 o+ m6 i
  1742. Set_Sound_Init_Port$ W  d8 S3 Y$ ~7 z3 s
  1743. PHA, i8 d# K1 m" Z% d( B8 Z! Q
  1744. LDA #$20/ Q" C( O2 l% N: }7 J  f; [
  1745. STA <JSR_Addr_Op
    , @# ~5 T* A) N# c3 A
  1746. LDA <Music_Item_Cur
    5 @  B0 b2 `- t; Y
  1747. ASL A, D( [* C$ p& R0 l( X; Q
  1748. TAY
    6 v, T- H$ r9 w2 V
  1749. LDA Sound_Init_Port,Y* F- `% I8 ^$ S9 ^/ E$ K- z
  1750. STA <JSR_Addr_L
    " m5 c1 B+ |6 b3 ]" u
  1751. INY. A7 h0 i; c# v4 A2 A. S* i# l/ J
  1752. LDA Sound_Init_Port,Y1 j: W0 j/ `, `3 w( e
  1753. STA <JSR_Addr_H8 d, p9 _- g; ^( Z, A* ^
  1754. LDA #$603 S" v+ i6 G9 `! W: r3 ?" o0 T
  1755. STA <JSR_Addr_Rts1 i: r4 ]7 h. B7 b1 K$ C
  1756. PLA
    & }" [' ?, c0 m! Y& j9 v6 B
  1757. RTS
    3 Q3 u* o# }2 g$ X

  1758. 3 r5 Q4 T" e* a& ], d
  1759. Set_Sound_Play_Port: X3 F7 \9 w! R- Y4 j
  1760. PHA6 v/ |2 F& S+ _$ g, t! x3 l% ~
  1761. LDA #$20
    4 L0 u8 }. E& t5 P) `
  1762. STA <JSR_Addr_Op
    8 k8 @& {1 C0 ^4 ]2 C- w  ?
  1763. LDA <Music_Item_Cur; ~: A8 Y. k; |- {# P# a
  1764. ASL A
    , b7 I8 L+ A' {; l- N3 }
  1765. TAY# _5 s( R+ B' E$ U& R7 S, p
  1766. LDA Sound_Play_Port,Y% `  Y) A: F6 f0 O
  1767. STA <JSR_Addr_L
    % h; D8 ^; G3 W( j; b( P
  1768. INY
    & C- z' O5 e. `7 |
  1769. LDA Sound_Play_Port,Y
    6 S9 w3 X, {0 j/ y  }0 e
  1770. STA <JSR_Addr_H3 d  z5 l, W  H
  1771. LDA #$602 s3 k# C4 A6 _# r9 W
  1772. STA <JSR_Addr_Rts% s! p6 @0 D, P5 S9 ]5 l. r$ M
  1773. PLA
    " U* N8 _7 y0 q, S/ E$ m
  1774. RTS
    ' ?! n+ g# m3 w2 V; ~  s! r# n9 x2 t1 o2 F
  1775. 0 j( ?" u. f1 n" G% v9 M, M  z
  1776. Set_Sound_Reset_Port$ D) |/ A, v( ~# Z% E) U
  1777. PHA
    % r8 a- _6 Q7 }. h8 k3 a; ^
  1778. LDA #$20
    ! U3 b( D) O- \9 |7 D2 D
  1779. STA <JSR_Addr_Op
    * N& V- f; U: L& i# S
  1780. LDA <Music_Item_Cur
    $ x/ Q# h5 y: ~
  1781. ASL A5 E) J1 Z% S. h  p" p
  1782. TAY
    7 B9 D' B+ V' ?" L; c- E
  1783. LDA Sound_Reset_Port,Y0 |+ m. M) N. f3 z0 _+ w3 k1 L
  1784. STA <JSR_Addr_L& z# y- ?: O' D1 i& }
  1785. INY& }. u2 {, D: A- D
  1786. LDA Sound_Reset_Port,Y
    ( a- g* g# `1 C
  1787. STA <JSR_Addr_H8 ^8 h7 _4 b* S0 A, {; @* O3 v
  1788. LDA #$60
    & M" T# V! K  I# b
  1789. STA <JSR_Addr_Rts* B; z. N1 O: C; M2 ]7 ~- m- _
  1790. PLA) e! z% {+ i4 D/ {8 ^1 t/ [% d
  1791. RTS
    0 f0 U/ }# q& o' f
  1792. 1 w. E+ o( G3 }# ~$ z6 }# Q) j
  1793. ;初始化音乐bank0 J( M& O- ^! H9 c$ r  D$ b
  1794. Init_Sound_Bank
    ( _7 B4 l! G4 l+ H  N% T' |# Q. `
  1795. LDY <Music_Item_Cur" ]3 o. Z- d3 |
  1796. LDA Sound_Bank_8000,Y6 Z" K; S0 b0 ~+ t: J, V
  1797. STA <Music_Bank_8000& {7 p- U$ P% R8 R7 L; e
  1798. LDY <Music_Item_Cur
    9 p$ W! c. i. R* i6 _! W
  1799. LDA Sound_Bank_A000,Y
    4 R5 b. _  c! D8 f# B7 ?! j
  1800. STA <Music_Bank_A000
    8 S& o) x  G* h1 e) X
  1801. RTS0 W1 f  l5 |, M/ f0 @5 \8 R

  1802. 6 v3 w9 T' P+ O* Y2 @/ d; u) U
  1803. ;==================================================- ?1 X# d  @1 q. l. u% P
  1804. Sound_State_Reset;音乐状态重置8 @5 H2 O% G9 j- g0 h" T( p
  1805. JSR Music_Bar_ReSet        ;重置音乐条* Y; R6 e7 g. c: B* c' F
  1806. JSR Time_ReSet             ;重置播放时间
    , o* k1 n  W# J% K$ a
  1807. ; P5 G8 g) U2 x& w% T6 y' x% E! `. z
  1808. LDA #$00
    2 q3 N# K  P" k. s6 l
  1809. STA <Music_Stop_State
    2 d, s& p  w/ T( {4 C# ]4 v
  1810. JSR Music_State_Show       ;显示播放状态3 Z0 ~) [* i+ r8 o* m( P0 W& K8 F

  1811. ' \; F$ u3 q1 h3 f
  1812. .IF Track_Name_Pos  r2 V6 \8 t( S# B
  1813. JSR Show_Track_Info        ;音乐曲目名显示& A8 y/ ]+ [9 v3 ]  I5 ?
  1814. .ENDIF
    ' F# V+ B4 n& j. Y
  1815. 7 `( [1 C2 ~3 m! n: d
  1816. RTS5 ~9 T' q3 ?9 I& n

  1817. . M4 D4 `. C; ^0 h
  1818. ;==================================================& }  c/ [) M- s1 O6 [9 f
  1819. Sound_Init_Proc;音乐初始化处理
    3 Q6 `' ^- b- n4 c. J3 a6 K; K& U
  1820. PHA
    0 ~+ ~, o5 E. e' O
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    - u) S) ~( a) Q1 j2 v
  1822. LDA #$00* h0 I( y5 J6 _! M0 X
  1823. STA <Scroll_H               ;重设水平滚动! P: c0 S7 Q$ c% Y7 Q9 N9 X' D' p
  1824. LDA #$0F
    9 h3 v+ ?# l) C3 J0 Y0 e, n; m9 G, t
  1825. STA APU_STATUS9 W* _/ ?+ T6 M+ O* W: S! B$ l
  1826. PLA
    - f; l. y' j  ^4 ^- |7 r
  1827. JSR Sound_Init             ;音乐初始化
    1 |: Y6 {+ C5 R' z# k7 n+ R7 n6 {0 A
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    * a1 P& p; u; V6 ]2 t
  1829. RTS
    0 _0 b! p9 Z0 z$ @, [# [- n" B* ~+ J
  1830.   `3 n) ~4 @3 x) y1 f) a
  1831. ;==================================================: q; D5 T* |9 ~* C6 @7 M
  1832. Sound_Play_Proc;音乐播放处理0 o" B; @# ~; I' @: N5 f* j
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址( u( L/ `9 ?$ R! Q7 q  }3 B/ {
  1834. JSR Sound_Play             ;音乐播放
    % H' Q. A6 S0 a! ?
  1835. RTS
    : u. N! j% f7 I7 F
  1836.   C# Y  I/ ?& {( ^
  1837. ;==================================================
    / V" C  I/ E) S' S* d/ @
  1838. Sound_Reset_Proc;音乐重置处理
    ( U! w3 R4 s- c! U9 T% ?# v1 c  D
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ' s) A2 U. ~: S+ b- y8 A* [! g
  1840. LDA <JSR_Addr_L
    1 r2 H, R. _$ r. C8 d, s5 g
  1841. ORA <JSR_Addr_H8 f5 v& \; K2 [9 o5 |2 W5 J
  1842. BEQ Sound_Reset_Proc_Default% c. b  G7 c; _
  1843. JSR Sound_Reset            ;执行音乐重置- z) F0 h$ Y5 V2 e* M3 \
  1844. JMP Sound_Reset_Proc_Init_Sound
    0 z: J% ^9 z7 U  H
  1845. 0 ~2 r+ [0 v+ }
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理: H8 o$ a0 @/ `+ }3 }

  1847. 9 g" q0 A. {, x1 J4 p
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    1 R1 U8 j2 z' b" v/ y
  1849. LDA #$00# F1 ?1 D+ D3 G9 O2 z" f  @
  1850. STA PPU_CTRL
    % T) m3 U6 v! E3 H% P
  1851. # Z- m9 x. V9 k! C( w" @8 @
  1852. JSR Sound_Data_Clear
    , u$ F: u9 n2 C
  1853. & J6 ^/ @6 z6 B1 F  w! \
  1854. Sound_Reset_Proc_Default_Wait
    3 y+ |" M( H" w6 X4 E# e* ^6 h3 Z- s) r
  1855. LDA PPU_STATUS+ a3 u/ ~: {8 I1 _: Q0 ?
  1856. BPL Sound_Reset_Proc_Default_Wait0 y6 A+ |$ n4 V# }

  1857. + W2 o+ d$ \  Y* ?$ B# A. M4 s+ `
  1858. LDA #$00/ S2 f& U& G2 C7 w5 X% w8 J- F: V) Q
  1859. STA PPU_ADDRESS1 p5 S( B% I0 ]6 ^+ J. E
  1860. STA PPU_ADDRESS8 N2 W6 e1 O  m6 I
  1861. STA PPU_SCROLL
    5 w; u: b0 y: y# [; B! K
  1862. STA PPU_SCROLL
    7 q7 ~) I+ Q8 x" m

  1863.   H4 @$ h0 X) w( a8 r1 P  w  q
  1864. ;恢复PPU控制
    : ?9 @( X4 }; g9 D; q3 i+ B
  1865. LDA Screen_Ctrl
    * J( W) J4 s2 e! X* @
  1866. STA PPU_CTRL
    2 r0 }! t+ Y5 ?, I! J

  1867. 2 u9 g' P) p' C$ \
  1868. Sound_Reset_Proc_Init_Sound
    4 m! m# Y8 Z/ q, N* y: P1 ~
  1869. LDA <Music_Stop_State
    , ?# U2 n: A2 Q& s
  1870. BNE Sound_Reset_Proc_End, z" r9 {3 m+ p6 v: I$ ^! K" L
  1871. LDX <Music_Item_Cur! b/ D- K' U$ o+ R3 a5 ?7 }
  1872. LDA <Music_Cur,X
    6 `0 \$ T8 H- i* c: ~
  1873. JSR Sound_Init_Proc
    # X3 p  F7 m& k
  1874. Sound_Reset_Proc_End4 {" V; ]9 r! E
  1875. RTS
    4 E7 j, s+ a: S  O; u% C
  1876. - w' O& ]+ e& q6 e# E+ i5 z
  1877. ;==================================================, J5 ?# F7 ]% W; I% k1 r9 [
  1878. Clear_Item_Text;清除页项目" p8 s( n- s( c9 \
  1879. LDX PPU_Cur) R% _; [7 t& w5 h7 v: q
  1880. LDA #PPU_MODE_CNT_CLEAR' S! @  a- {* ~) z3 T& X) [. ]
  1881. STA PPU_Addr,X3 t+ B+ K4 y  E# _- F$ R
  1882. INX
      v. Z) O7 G+ a! Y8 p
  1883. ( q$ a0 y3 T$ h1 b7 K
  1884. LDA <Page_Last
    6 [4 A# l- O: T% [. j3 J8 r* C* B
  1885. SEC' t$ t; J1 R: m3 g& T% x5 g
  1886. SBC <Page_Last_Index6 c( m& \- v9 E, S6 p* y
  1887. ASL A9 @: }, K3 {  ^, M0 e! d# K0 X7 [+ e

  1888. ! o- b' Z- z5 F+ ]0 a9 n: c
  1889. TAY
    6 X7 x# o) ?" s3 C# I! f0 n! r
  1890. LDA Item_Pos_Data,Y
    1 e" c2 Z6 F8 ^0 r. j
  1891. PHA
    5 y  H! p. i: g" f, N
  1892. INY
    3 g( t6 V6 A0 ?6 m4 o, S. G
  1893. LDA Item_Pos_Data,Y
    & g$ s. a; I  Z& ~( |
  1894. STA PPU_Addr,X, y2 D2 r5 ]( q  J! {8 B
  1895. INX+ w" {6 @. T. }* h+ T
  1896. PLA
    1 X. V$ c; |. z7 K, t/ P
  1897. STA PPU_Addr,X! L, X0 s+ A" V, I! v3 @
  1898. INX' ?: I0 r/ |) W$ [0 U- E  S

  1899. 7 Y/ Z  k. Z4 M2 i$ N
  1900. LDA <Page_Last
    % r  s1 Q& t" c& @, ~3 ]- w/ v  A
  1901. ASL A6 `4 U, e4 f, R0 }# N8 U! h
  1902. TAY
    " s' N$ Y" C8 ?$ \/ Q* T9 q6 t
  1903. LDA Music_Collection_Name,Y* U8 m2 T/ f" p, p- n1 [
  1904. STA <Data_L7 {. l# m/ J, p7 j$ H8 c) g
  1905. INY
    / h" O( c! @: X5 c1 y
  1906. LDA Music_Collection_Name,Y
    ( q! X9 W9 X/ R- N. Y& L9 a. h
  1907. STA <Data_H
    4 J. r  \* h/ v4 [8 s
  1908. # N, Z# k" ^$ ^  m9 K1 T  N
  1909. LDY #$00
    + h' ^5 ?% `4 l6 c+ `4 B- b& Q# o
  1910. LDA [Data_L],Y- o$ E) f8 l; l* E& Y
  1911. STA PPU_Addr,X5 e8 @$ h) t% r6 T/ P
  1912. INX
    & K1 `# |5 I3 M: ~( b
  1913. Clear_Item_Text_End) i& [$ n7 x3 ]$ I$ n0 ^
  1914. STX PPU_Cur
    : H. r2 [3 K1 x6 v- ]
  1915. RTS
    / J& A% m: {! P- Z9 z; g

  1916. 7 B- H/ u% M8 {5 c
  1917. ;==================================================
    * i$ l, N( S6 s; |; U
  1918. Show_Item_Text;显示页项目
    % F1 ^  D5 A- n1 {5 D" x3 [% O
  1919. LDX PPU_Cur, Q: `2 D$ U( A, ~" |& n) j( k" z/ i
  1920. LDA #PPU_MODE_CNT_LINE) G- s8 z. F; N7 Z
  1921. STA PPU_Addr,X
    4 r% m& K6 I( i2 |% Q' D* g# k% l/ v
  1922. INX
    7 ?9 W6 B$ ^  J* ]
  1923. LDA Page_Cur
    . q* H2 }$ q( L+ y- a9 a  K: O/ j
  1924. SEC2 w" J" s- s! z6 A  G3 F
  1925. SBC <Page_Cur_Index7 r9 d) W' T2 S) m3 N; G9 c5 P
  1926. ASL A
    ( \1 l. I) P" [$ T, g" b6 H+ R5 j0 `
  1927. TAY5 G9 k: Q1 E9 E. ~
  1928. LDA Item_Pos_Data,Y: Q& N5 w. G- Z) e5 K/ }+ [9 F
  1929. PHA
    ; m1 k1 `& a6 t; {6 `/ p1 Y4 `
  1930. INY
    , ]8 s  j  T$ _* U3 U
  1931. LDA Item_Pos_Data,Y' q; M# o+ p6 [5 ]$ L+ f; E
  1932. STA PPU_Addr,X
    $ r2 l2 `  l3 g: s! H4 P) L$ E
  1933. INX
    0 E# p0 t8 o) Z5 P. \3 _
  1934. PLA
    ' ^2 C) T+ M1 t
  1935. STA PPU_Addr,X
    1 B" L" h$ z. D7 A4 a; Z- V
  1936. INX4 e+ L$ L+ K% Z" |* Q9 \
  1937. % }7 p5 ]3 A: f& e4 m. Y
  1938. LDA Page_Cur
    $ E, m6 _/ j* o& L9 A. y  B0 v
  1939. ASL A
    - k  B: B+ q# b$ B& C/ g
  1940. TAY
    5 A, L& r- Y0 e! X" m1 ]/ ^3 u1 m
  1941. LDA Music_Collection_Name,Y
    9 V1 O) }6 O1 P- m
  1942. STA <Data_L. I3 t3 @) ^, W& ~8 J( Q' I1 _$ V
  1943. INY
    " f, S' `. g- a% E# q
  1944. LDA Music_Collection_Name,Y
    * s8 O4 y3 Q) _2 R
  1945. STA <Data_H
    . E3 p9 a: z) N7 \3 w

  1946.   i$ w6 y; q3 c
  1947. LDY #$004 _$ v! J; U& l/ F6 v" e
  1948. LDA [Data_L],Y  E% X6 C& k) Q8 q* i; W
  1949. STA PPU_Addr,X0 v0 o( _4 }, F2 x% {, X
  1950. STA Data_Cnt
    3 X9 [5 C) I4 \
  1951. INX
      M' v' O/ n; j3 V- Z

  1952. ) G: x# c, W8 }3 h- p! [
  1953. INY% Q, T) f7 l+ e  h& A# {; S1 H
  1954. Show_Item_Text_Write0 L  b( y' l; z$ V$ K
  1955. LDA [Data_L],Y, x7 ^, W% q1 K0 @* ?
  1956. STA PPU_Addr,X" a1 Y- F* t% T5 ~/ ?/ ^. C
  1957. INY, C7 b9 [$ l0 i- l9 F
  1958. INX
    ( S1 R# F5 O) D4 K& g& @: r
  1959. DEC Data_Cnt% W# P. P% S% D) f8 w, h, s: O) S
  1960. BNE Show_Item_Text_Write
    + V$ B; C; z4 Y& {- l7 p
  1961. " q) S6 x; |3 V( |- \' M8 Q; u
  1962. Show_Item_Text_End
    9 R, L* v6 a5 w  r1 `
  1963. STX PPU_Cur
    $ @" y/ F6 u2 z- b" [6 `! o; {
  1964. RTS
    5 G; z: r# c& x& Z' ?! g$ S; i
  1965. & Z' s1 y" E. M/ q7 n  t6 C. L
  1966. ;==================================================) p: ?& |$ P0 a: P1 u6 ^
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    7 \( g( d2 A. ?6 I/ e% ^  B) ?( {
  1968. STA <Data_Buf
    ; [* i6 D; Q% o) H# J& P
  1969. LDA #$00( a+ [" y  g' K5 A
  1970. Get_Page_Index_Calc
    4 i6 C3 S0 m- r$ V9 ~. Z$ k
  1971. CLC) R& b5 {$ B4 q, P- R& W. {/ v
  1972. ADC #PAGE_SIZE# u8 u/ s. @& C- u4 |
  1973. CMP <Data_Buf
    9 j# Z+ u( N. a% |% {! F) C+ P
  1974. BCC Get_Page_Index_Calc
    $ t0 S, `! o" {. C7 {' R
  1975. BEQ Get_Page_Index_Calc_End
    2 b+ `0 `* s- U: T1 [
  1976. SEC" {. a8 r3 {' K% y
  1977. SBC #PAGE_SIZE5 I; J+ @2 ~& H3 p' U2 D
  1978. Get_Page_Index_Calc_End# K$ D4 \( t# b9 x1 s8 B
  1979. STA <Data_Buf
    4 C( O& R# y- }% Z1 v/ K' H
  1980. Get_Page_Index_Cnt5 Z" @* G; G7 s1 |: b' ]- d
  1981. LDA #PAGE_SIZE
    ! u* A4 [( G& l" g$ \4 @7 W
  1982. STA Data_Cnt& r* T& \2 ?2 K; ?
  1983.   P% H3 {: b- t: M  V+ n+ w
  1984. LDA <Data_Buf3 k- P& n$ g3 Z% ~6 C' e1 e: `
  1985. CLC
    : U* z% _8 C' \( a: |% W1 a* a
  1986. ADC #PAGE_SIZE% I3 ]8 a9 @; P. x! K- |
  1987. CMP #ITEM_MAX_SIZE' x6 X3 A0 A# ~1 g+ W: x* q7 Z9 V
  1988. BCC Get_Page_Index_Cnt_End, q0 P) L' s7 q5 k+ x
  1989. & k2 X% k' ~! r5 h5 {5 y
  1990. LDA #ITEM_MAX_SIZE
    / F8 r$ w3 e1 }, M
  1991. SEC% J8 K( ~4 a. K5 m! _
  1992. SBC <Data_Buf
    , s7 s4 Z% J$ g' L0 q! q
  1993. STA <Data_Cnt' f. U* l# U$ p0 d* Q

  1994. / m5 c4 B5 j) Y
  1995. Get_Page_Index_Cnt_End
    + a, x8 P& l+ K- A/ f4 L. V
  1996. RTS
    - W, J6 Z" W( I% }+ ^: O

  1997. 4 Y3 Q$ j% m$ d& {1 @! k/ v
  1998. ;==================================================
    2 A$ I" o- c( p) R' `: W9 O$ g' z
  1999. Get_Last_Page_Start_Index5 T/ Q. E4 ?& ?/ w2 F! }
  2000. LDA <Music_Item_Last
    5 G* w$ O, |9 ~3 w1 T# v
  2001. JSR Get_Page_Start_Index
    - e3 j6 O- Y1 M8 ?2 l3 G8 F( b
  2002. LDA Data_Buf: u! g8 @' ?9 C$ F+ c2 L) A/ h
  2003. STA Page_Last
    4 c7 a. `6 t7 P7 ]
  2004. STA Page_Last_Index
    & J1 }( N8 w& M* W
  2005. LDA Data_Cnt
    1 x" Q; v$ V9 m; D3 C- o
  2006. STA Page_Last_Cnt3 P( Q& X- ?1 B2 v& i. r1 F- }! I
  2007. RTS
    2 \, k: \2 ^) w: h( Z* l

  2008.   w7 p% a2 l; X/ f
  2009. ;==================================================
    - P0 Y/ X: W8 n
  2010. Get_Cur_Page_Start_Index
    / d' O. _7 D' q, ]& _
  2011. LDA <Music_Item_Cur
      w( t" H6 ^8 P+ o
  2012. JSR Get_Page_Start_Index
    2 Y: c! R' K$ U7 B/ t6 u1 `
  2013. LDA Data_Buf
    ' d7 A9 r' t5 x1 n- d! p% W6 \
  2014. STA Page_Cur9 f/ q. i& P  H* q9 @: ^2 I$ T7 B. p
  2015. STA Page_Cur_Index
    # U& B* j% O0 f
  2016. LDA Data_Cnt- S6 M5 G3 T$ E: f3 j) a: g; F
  2017. STA Page_Cur_Cnt
    2 N. h" N/ t! x6 e4 [% ]1 A
  2018. RTS3 H& ]2 j% e# {, }
  2019. $ A! R, _" v" }, M. q% }2 @9 H7 }7 G5 \
  2020. ;==================================================4 [4 p  O* L4 S- q
  2021. Show_Page_Text;显示页文本
    ! u  t5 o3 ]; H% b1 J0 a- z  D& q
  2022. LDA <Text_Disable_Flag
    1 x4 f3 E7 B% L
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM- O; Y( d, y; M9 U8 T
  2024. STA <Text_Disable_Flag  G7 Q$ |9 E. v, v) `* f" F
  2025. & H0 T# W8 e7 W$ E3 _9 I3 ]# v
  2026. JSR Get_Last_Page_Start_Index
    % R2 V4 _; c1 l/ U7 @9 u- j7 I$ C) ]
  2027. JSR Get_Cur_Page_Start_Index
    & e/ }4 c) A1 h9 T  ]
  2028. & D. V. f- u( N) y+ p: e3 z
  2029. Show_Page_Text_Set/ X* F' U  K) U8 h" K
  2030. 6 y! y" g2 q% N4 M6 w& H4 ~& W
  2031. Clear_Page_Last_Item;清理上一页
    2 h2 \0 @8 X5 j
  2032. LDA Page_Last_Cnt) Y; p2 v  B$ Y* K* S# w4 F
  2033. BEQ Clear_Page_Last_Item_End3 j( y- i4 l8 m
  2034. JSR Clear_Item_Text
    ( L. g) p& e" k5 i
  2035. INC Page_Last
    1 b& h0 f7 `' ~& a( r) b
  2036. DEC Page_Last_Cnt4 P" a; R1 s0 e: l
  2037. Clear_Page_Last_Item_End6 J0 a: \  f5 _) ^

  2038. 9 ?0 |; ?0 \  [
  2039. Show_Page_Cur_Item;显示当前页. F0 Z0 w; W* S! D
  2040. LDA Page_Cur_Cnt
    1 P- Z9 I6 z! ]- U( G* h+ v
  2041. BEQ Show_Page_Cur_Item_End
    / t. _3 V' w& ~& X  A. J
  2042. JSR Show_Item_Text
    : s' O7 M" ?6 S% z. ?) l2 m
  2043. INC Page_Cur
    9 ?) F! A; D( ?) U- P
  2044. DEC Page_Cur_Cnt9 G( F: f( a7 b* a. V
  2045. Show_Page_Cur_Item_End
    2 q7 A) c9 V0 l1 p, p! c- x
  2046. ( _2 {0 @$ O+ F. F& X2 c8 a
  2047. INC <Time_Wait_Cnt( ?% Y/ N; |, v% a
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    ) l' E6 q$ ]9 ^$ ^% D5 w8 Z
  2049. LDA <Time_Wait_Cnt
    ; N8 \9 ?: F8 U1 d
  2050. BNE Show_Page_Text_Set_Wait
    ' s0 K8 z, d! N3 R  d

  2051. 8 Z) j3 A( D! j4 \
  2052. LDA Page_Last_Cnt; L1 t! f% C9 y! u1 A; @
  2053. ORA Page_Cur_Cnt
    2 B) A" {: Y% G" C
  2054. BNE Show_Page_Text_Set
    0 \9 |7 W9 R# ^- a/ }) _" i( X) l
  2055. LDA <Text_Disable_Flag
    5 R3 R% `& k- i6 }, r; Y8 D2 G  F
  2056. AND #TEXT_DISABLE_ITEM ^ $FF. z9 ~3 n4 ?9 l  X- |
  2057. STA <Text_Disable_Flag
    ( G9 r: T2 T, ?. z1 v3 R: Z
  2058. RTS
    " w0 K8 z* H) c$ W9 ]% C  q
  2059. - Z& t8 E4 J/ Z" y% G5 ?5 M
  2060. ;==================================================
    5 P3 ]" m# @9 k, ~9 r, k$ y# S2 n
  2061. Last_Item;上一项% i& z0 L9 m9 a& Z; E7 H8 f
  2062. JSR Clear_Last_Track_Name
      F' I  M: Z5 b* Z$ F& j: E
  2063. JSR Disable_Text_Draw
    , u& R3 ?7 G  e8 G5 O

  2064. 4 i. T$ T1 s8 W5 K: T$ Y, X0 r
  2065. LDA <Music_Item_Cur
    : T) T( ]  t5 y
  2066. STA <Music_Item_Last# |; w  i: K9 L# E. Q

  2067. 6 |4 `- n2 d5 C2 A0 J1 Q
  2068. JSR Get_Last_Page_Start_Index" C# o) ]* A1 W( v

  2069. 6 }3 X1 `+ {( X" D, r
  2070. LDA #$006 g0 Z( R9 a/ w- p/ x( D
  2071. STA Data_Buf
    / l" [6 a+ n; g4 i+ M
  2072. 6 O6 H; W9 R: X) R* n
  2073. LDA <Page_Last  O9 d( o- l( T9 V9 A. G% D7 y6 L6 r: p
  2074. CMP <Music_Item_Cur4 |3 O+ m8 h5 K; i
  2075. BNE Last_Item_Begin
      ]$ R; Y# P. l( o# o5 O
  2076. ' p% C/ ?- G1 W! p' @$ P
  2077. LDA #$01
    * {( _: `3 ?: S% X1 Q( P+ L
  2078. STA Data_Buf
    2 X4 Y0 O' ]! c. E+ m6 g+ H
  2079. Last_Item_Begin
    ( R3 {: q7 a7 N  u
  2080. LDA <Music_Item_Cur& Z9 M+ A! Z  W  k% O  U# z" [+ \1 F
  2081. BNE Last_Item_Set
    0 e2 U! X/ m0 [# _1 h
  2082. LDA #ITEM_MAX_INDEX + 1
    6 C8 k) J3 w: l$ U" P  y2 Q( }+ |) s; u
  2083. STA <Music_Item_Cur
    - K2 ?* h) x, c: O6 E8 L5 c
  2084. 7 n" ~( L* R* \, {3 K; B
  2085. Last_Item_Set. A# w* y( A9 X4 D7 i7 v
  2086. DEC <Music_Item_Cur
    , d4 j& S9 @2 ]9 r& P
  2087. LDA <Music_Item_Cur3 U7 @8 |- N# J- x) c) c0 X
  2088. JSR Reset_Current_Music
    7 o) S3 d+ D5 C$ J( l

  2089. 6 p- m2 a' A( W' [$ w
  2090. Last_Item_Play0 @) L6 x2 j) r0 W; Z
  2091. LDA Data_Buf1 g+ `& e% u( |/ \) R6 R9 [5 E, c
  2092. BEQ Last_Item_End" ?4 i$ n. z, g! @7 Q# ~7 z- T6 c& \
  2093. JSR Show_Page_Text
    $ j: K, }7 i! \3 L& g6 T
  2094. Last_Item_End
    ! y0 E7 }6 w- I; K
  2095. RTS
      }3 X7 ~; o% f/ `5 d
  2096. $ G. _$ f! f( M* A; C
  2097. ;==================================================; ^/ B; A! G# L
  2098. Next_Item;下一项
    % h. t! e9 g+ o5 q2 ?! S! m
  2099. JSR Clear_Last_Track_Name1 Y0 ?9 L  g# b; |: h
  2100. JSR Disable_Text_Draw
    & D1 E1 o# w& s* [0 |
  2101. ' x3 i$ J" T# d
  2102. LDA <Music_Item_Cur
    , U" [% w& \# L8 P6 E& G" V: i% ~; {
  2103. STA <Music_Item_Last" m  q/ I4 n! `0 O1 Q& H6 d1 f

  2104. * V! _5 b4 T* u4 G8 o. L
  2105. JSR Get_Last_Page_Start_Index
    $ T. J' D0 l7 r# S& A

  2106. + i5 O' |& W0 M3 u
  2107. LDA #$00
    8 D' t( _8 l$ ~* [2 }  M4 T
  2108. STA Data_Buf
    4 V  ]* V0 q( j0 x

  2109. 2 i) G- s6 X1 W' Q, c5 C- I
  2110. LDA <Page_Last+ q* e  T( y- ^2 K3 j! t
  2111. CLC
    3 @# X9 H' f# j5 W( j# Y' X* Z4 w
  2112. ADC <Page_Last_Cnt( C+ M6 g; {, }! h7 A1 I+ O; v6 u5 A  R
  2113. SEC
    1 [1 q4 i" r, D! B$ k; }
  2114. SBC #$01
    ) G) `+ B" z% B+ f1 S
  2115. CMP <Music_Item_Cur" d6 P1 i& s- Y8 x% k% M& W
  2116. BNE Next_Item_Begin+ f( q9 \  B+ s. v

  2117. ( M+ M' c: g- t. ~- i' n
  2118. LDA #$01" D0 J% r' d$ K5 V+ v0 T2 O2 [! N' I
  2119. STA Data_Buf+ }# R5 M9 U8 U
  2120. Next_Item_Begin- F4 [7 _/ g' v0 `/ b0 l+ V+ N7 j/ ^
  2121. LDA <Music_Item_Cur) O9 W9 t* F6 c, r
  2122. CMP #ITEM_MAX_INDEX' r% F: l: O4 z: X4 g7 v& K  u
  2123. BCC Next_Item_Set
    ; G! ^5 r" j+ Q* W  G5 y
  2124. LDA #$FF
    6 I7 b  B4 c1 A$ \8 M% A9 x8 x$ {
  2125. STA <Music_Item_Cur, U" C/ Q" {1 r( [9 Y# g; g* `
  2126. Next_Item_Set
    6 \, a8 X! d' {: C" I9 b; q1 _
  2127. INC <Music_Item_Cur
      `/ n$ d1 h8 y
  2128. LDA <Music_Item_Cur5 C3 c8 S. g9 K' ~4 V
  2129. LDA <Music_Item_Cur. Y  L0 Y9 B: t# ~. l  B0 O0 U
  2130. JSR Reset_Current_Music
      \! G% [+ f4 o& j% w/ l
  2131. Next_Item_Play
    6 B) M; y$ i4 [% Y' V( y
  2132. LDA Data_Buf
      B$ I* a# K: y" h4 m
  2133. BEQ Next_Item_End
    $ H. P+ i* E/ r% i. v
  2134. JSR Show_Page_Text
    ; t1 c8 b1 [# w% _( J6 M* ^/ I% \
  2135. Next_Item_End
    6 \2 Z, N4 e! ]* m0 T" f
  2136. RTS- U6 N* x3 A- h3 ~1 w# r

  2137. 6 c5 b/ ]: x6 L0 v+ J
  2138. ;==================================================* g$ V' _* e3 f# a$ e( A
  2139. Last_Page;上一页
    9 P9 l/ T3 ?. {7 G4 I* t
  2140. RTS* t2 y2 Q1 m3 Z/ [$ v7 E

  2141. - K6 s* C# G1 G- {( C
  2142. ;==================================================* Q% A1 z& v$ O6 g" ]1 @$ \- U6 n1 _
  2143. Next_Page;下一页
    4 G' r9 D: B3 G' K4 U4 k- i
  2144. LDA #PAGE_MAX_INDEX6 @: k3 i' F$ d  w) P" m
  2145. CMP #$019 D8 f+ {" Q' R1 N
  2146. BEQ Next_Page_End
    # \7 _" a, a! c: ^7 x  b7 V
  2147. / i# d' |; N5 Z* z8 c7 b
  2148. LDA <Music_Item_Cur3 L9 o% H- ?% g+ L' O
  2149. STA <Music_Item_Last
    , D2 l; k1 @, X/ |

  2150. 1 y" C7 O3 g6 i
  2151. JSR Get_Last_Page_Start_Index# H& g% c; }/ D# L

  2152. # r( l$ R5 ]# G3 [5 }$ a3 M
  2153. LDA <Page_Last_Index
    0 k/ d3 f, E0 B  C( [+ n
  2154. CMP #PAGE_MAX_INDEX% _. w  D; e0 M5 W) D' ]4 }
  2155. BCS Next_Page_In_End_Page$ U, }: v6 a1 o  g' X7 j0 n

  2156. , C' z3 I! Q: ?
  2157. Next_Page_Not_End_Page;不是在最后一页$ N3 J1 y3 _4 |: g
  2158. LDA <Music_Item_Cur2 q- K. W& [" Q( M7 G  k
  2159. CLC2 @, E5 y1 o) m8 N  e4 B, g7 j
  2160. ADC #PAGE_SIZE) p* I! v5 a; K, y9 P
  2161. CMP #ITEM_MAX_SIZE
    ! G  Y1 z( N9 T" F: W2 Q
  2162. BCC Next_Page_Not_End_Page_Less
    7 Q( g) ]& b4 k# ^& _
  2163. LDA <Music_Item_Cur
    ' m* D( Q+ K9 A. W1 X) `) Z% q/ M
  2164. SEC: s/ ^) ~) i! f0 X% P5 [8 i" l
  2165. SBC <Page_Last_Index
    2 ]; _0 O( m+ i- [3 |- K/ C7 C' k
  2166. CLC2 F. h$ b+ N( ^! z3 W5 l
  2167. ADC #PAGE_MAX_INDEX2 B7 r$ |3 D# [, E: E; _
  2168. CMP #ITEM_MAX_SIZE
    # {  U$ H: E* o8 ]
  2169. BCC Next_Page_Not_End_Page_Less
    . h* y2 B2 q9 c/ g% j% c
  2170. LDA #ITEM_MAX_INDEX$ C8 A  `, T6 h2 _& L
  2171. Next_Page_Not_End_Page_Less
    3 s( v* X) O% l- a
  2172. STA <Music_Item_Cur3 j; @3 d; d, `; v0 v
  2173. JMP Next_Page_Reset
    $ X  @  d; Y) E* @& e% G0 {/ V$ N

  2174. ( P8 Z9 k  O7 s! o6 z7 I
  2175. Next_Page_In_End_Page;在最后一页* k4 {0 C' k/ X% N: Q
  2176. LDA <Music_Item_Cur2 p. L$ O- R& j: q1 M
  2177. SEC+ {( e5 T/ B. R. D' \% W5 h
  2178. SBC <Page_Last_Index7 ^5 ~" P% {: N5 r& I3 P
  2179. STA <Music_Item_Cur$ g/ i4 |# i- d. E& T
  2180. % B# J+ M. W9 T2 e
  2181. Next_Page_Reset
    7 f2 P2 q9 z. g9 ^$ Y' g
  2182. LDA <Music_Item_Cur
    * d$ M( u5 O9 `( B: R
  2183. JSR Reset_Current_Music
    : q0 D; o% |1 x. _
  2184. JSR Show_Page_Text$ A& ~, g) Y$ t5 y/ t; B( {
  2185. Next_Page_End
    $ \) z- g- N' l5 ]( F3 n: D" \, P
  2186. RTS: R1 b8 V4 S; r: S' _
  2187. - b( h/ F# K: d3 g* ]
  2188. ;==================================================
    . Y' u2 l) ~5 Z
  2189. Disable_Text_Draw;禁用音乐条刷新
    ) i- Z1 k5 c4 j$ l1 L" u6 ~
  2190. LDA <Text_Disable_Flag
    1 a2 u5 D9 r) ~# A; t2 q
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME1 u* R1 Y' [% P  o
  2192. STA <Text_Disable_Flag& D6 h% ?% x9 ?8 f$ M$ H
  2193. RTS7 ]$ P- g5 g+ a
  2194. ! i8 s, q* F; U# }) G: K
  2195. ;==================================================- Q6 m4 j& V' R0 g  K3 X' M
  2196. Clear_Last_Track_Name;清除上次曲目名4 B0 n# }- {+ y; r! O
  2197. LDX <Music_Item_Cur
    ) y* B, G4 D  l, v
  2198. LDA <Music_Cur,X
    % i* S* Z7 |+ {2 L9 ?
  2199. .IF Track_Name_Pos
    - r& `2 C; }$ H6 g' L
  2200. JSR Clear_Track_Info
    : ^2 t8 q& r! A# H  H8 i
  2201. .ENDIF
    . g# C4 k5 z  m1 U1 `6 t6 S
  2202. RTS! A/ m8 C3 N0 E3 s/ [$ y

  2203. + o! Y/ X$ K  k& g. y
  2204. ;==================================================
    * O; l. l  S& P" P6 r0 f9 [
  2205. Reset_Current_Music;重设当前曲目. H7 P+ p- S8 U3 ^; ^" O
  2206. " ?: H) P! [9 n. h# [
  2207. ;写入当前总曲目" u9 Y7 f* C9 w
  2208. JSR Set_Sound_Total0 s# Z" I2 }1 z. K3 J! C
  2209. LDX <Music_Item_Cur! V* V+ E1 D$ P" l8 d; N6 b
  2210. " s3 [2 B% n( K, ^; m; k+ s
  2211. LDA #$00
    , L& W1 J. o0 t4 k
  2212. STA <Music_Last& _/ ?  r% |/ Z- D/ v: O: w
  2213. / {3 x6 e8 }0 z' n1 K
  2214. JSR Sound_Reset_Proc: A9 x5 y  |# s! W' E4 R
  2215. JSR Music_Show
    4 i6 d  c/ @# w9 @! k
  2216. RTS
    - P6 L' D+ V0 `$ y' i$ @$ q
  2217. ) O1 G" J- T: R( @
  2218. ;==================================================
    4 J) n+ I0 s3 C2 H& d
  2219. Music_Song_Stop;音乐停止
    0 ^" I1 R+ E1 x1 S1 i* f
  2220. LDA #$01
    " P+ s! ]( j, T
  2221. STA <Music_Stop_State
    ! H. m4 u/ d0 ]# E1 \7 A* R: }2 V
  2222. JSR Music_Bar_ReSet" t" P! `, x% |& `4 Q
  2223. JSR Time_ReSet4 Y$ g3 H9 p5 ^  h
  2224. JSR Sound_Data_Clear
    , g: y+ k9 e  X5 R
  2225. JSR Music_State_Show4 y) o* _9 g% a4 m( t) p
  2226. RTS1 F% ]# d0 ^+ W: s: P9 S

  2227. ! z6 e5 O9 o/ T/ D7 e' e
  2228. ;==================================================
    / R4 }& z' I' ?8 Y* v2 \) E6 o$ |
  2229. Music_Song_Play;音乐播放" D6 Q' V) q# O4 M4 N1 C6 ]! v
  2230. LDA #$00
    9 q3 p, I5 ?: i# B
  2231. STA <Music_Stop_State
    $ s  I/ n; B& g1 ]- W
  2232. LDX <Music_Item_Cur
    * W$ ?# K7 y  c& E1 ?
  2233. LDA <Music_Cur,X  z8 a# K. Z& h5 x. t; P
  2234. JSR Sound_Init_Proc  V" x4 }6 V2 E3 C
  2235. RTS, C# c) Q) `; s$ g
  2236. + F% M9 C& R4 [0 M' L4 J
  2237. ;==================================================
    " |( C5 i: P$ c8 e
  2238. Music_Song_Last_10;上10曲
    0 q1 i( g7 l/ c% R
  2239. JSR Clear_Last_Track_Name8 @1 l) M$ v5 _. V6 l# S) Z# a
  2240. JSR Disable_Text_Draw
    6 t3 x, v! F; O& t
  2241. LDX <Music_Item_Cur5 s7 w. H  ~1 R! C' n; B
  2242. JSR Set_Sound_Total
    , |7 Z7 \( e5 I/ |( }' P4 Q
  2243. LDA <Music_Cur,X+ T0 p/ ?7 E: O" e3 O
  2244. SEC
    8 U0 O# U  d6 f1 S
  2245. SBC #10& y- P( E7 m& K9 {
  2246. BCS Music_Song_Last_10_Set9 @/ f1 h2 a8 q8 c
  2247. LDA #$00. b: I) q# T5 x6 o, I) Q
  2248. Music_Song_Last_10_Set1 x3 @4 D. U$ ^% J
  2249. STA <Music_Cur,X8 t' E4 N( }, ]  G# `0 g9 `
  2250. JSR Sound_Reset_Proc
    7 r' U# C4 l) a! d
  2251. JSR Music_Show
    7 ^) K6 W/ f2 a7 S8 d
  2252. Music_Song_Last_10_End" h0 e9 I7 N, i7 M5 u
  2253. RTS
    6 V9 b! l% f. a- X

  2254. - I4 V9 [) U7 e9 ?3 _
  2255. ;==================================================' ?' d1 u1 T# ?0 t* X; C, S, D# b( S
  2256. Music_Song_Next_10;下10曲7 [  Y: |4 H4 Y' \. r: Z3 T
  2257. JSR Clear_Last_Track_Name
    # e3 D) b2 A9 \# a
  2258. JSR Disable_Text_Draw3 N# z0 p! ^7 E# Y3 b7 t( ^( y
  2259. LDX <Music_Item_Cur. u0 j, U, l. W# U  f
  2260. JSR Set_Sound_Total) J3 c1 l; w+ v+ X) d. i! W
  2261. LDA <Music_Cur,X# h: O  @# f# l
  2262. CLC
    4 _, M' ]  ]3 ~  h1 \
  2263. ADC #109 ?% w3 `2 {6 _$ `7 H
  2264. CMP Music_Total
    ' B4 T1 ]7 f2 r- W2 q0 N7 b$ t
  2265. BCC Music_Song_Next_10_Set
    * g# |. _* `8 R, K# I
  2266. LDA Music_Total
    7 {% x( I& j( x; T
  2267. Music_Song_Next_10_Set2 ^  m5 q2 a8 @" h: p8 j3 S
  2268. STA <Music_Cur,X
    & n: W3 A% o$ z2 w, I( W- P( v
  2269. JSR Sound_Reset_Proc
    " g+ G0 O6 T* f& b8 |: g# c
  2270. JSR Music_Show
    , v5 D1 G+ w+ v/ o$ ^
  2271. Music_Song_Next_10_End
    9 W. h. K+ g- J+ W: @* j- w
  2272. RTS
    ; x2 E# q, ?" A/ X  N
  2273. . G$ s1 Z( ?$ n
  2274. ;==================================================
    0 c4 L- ?% }; \5 i# i( ?7 h& q
  2275. Music_Song_Last;上一曲8 K! s/ R6 ~9 m7 L
  2276. JSR Clear_Last_Track_Name
    # r, R3 |. R/ A4 i- C0 m
  2277. JSR Disable_Text_Draw
    2 h& a- F1 D3 s; ^* V8 s
  2278. LDX <Music_Item_Cur
    0 k  b+ M! |3 B% L, A1 |4 d
  2279. JSR Set_Sound_Total
    8 @$ H  z. _3 J$ y! r
  2280. LDA <Music_Cur,X6 i3 S; C- C& r, [
  2281. BEQ Music_Song_Last_Set# |( c! k5 w1 j. d% S+ s3 \
  2282. DEC <Music_Cur,X
    8 _0 k9 A) q  V5 E& i
  2283. Music_Song_Last_Set2 X4 k* ^$ F8 @5 `
  2284. JSR Sound_Reset_Proc+ s$ S: a: c/ v! P  p+ O# z
  2285. JSR Music_Show' H4 }, C7 V# v7 I1 l; T
  2286. Music_Song_Last_End- X2 q! x* i9 a; h$ H* U
  2287. RTS
    ; z0 Q( @* b3 n+ k5 A2 o# T+ w
  2288. & L7 M) h! v8 Z1 z3 C
  2289. ;==================================================% B$ n5 Y  s3 g
  2290. Music_Song_Next;下一曲: o, Q* F5 m# o% i
  2291. JSR Clear_Last_Track_Name
    ( b* o% k2 F  w3 D
  2292. JSR Disable_Text_Draw
    - a: o0 ~% T0 M, A! Q* p" ]; [
  2293. LDX <Music_Item_Cur0 w8 k6 |2 k$ T9 t: V; c! b8 g
  2294. JSR Set_Sound_Total
    ( A* W1 |) ]( v6 i( X! m
  2295. LDA <Music_Cur,X
    5 u) [. _4 m) \7 H+ ~+ h7 y% h
  2296. CMP Music_Total
    - u+ J! g: T* S% ~) z' b
  2297. BCS Music_Song_Next_Set
    # a4 F! p! A+ p9 r6 y6 M' P
  2298. INC <Music_Cur,X  W( L: U% ^( S9 W
  2299. Music_Song_Next_Set
    % F3 e5 r, d9 y( R) N
  2300. JSR Sound_Reset_Proc
    ; @) \9 W- I. Q' r: K0 `* n
  2301. JSR Music_Show
    # u6 W  c$ P2 I2 ]- W3 X' y- O2 j
  2302. Music_Song_Next_End
    : d# D2 y; v5 K* S
  2303. RTS
    2 S. M* {0 @- g8 c

  2304. ; D+ a( @1 h+ }+ Q# A. X: c
  2305. ;==================================================7 B5 t: {: P5 l) a* E: a' c' g: ?* o
  2306. Change_Select_Item;改变当前选择项) d; S. k- t7 P- e7 Z" W8 B8 A4 s
  2307. ;--------------------------------------------------
    7 I' }0 F- w3 B- ?! d
  2308. Change_Select_Stop_Play_Item;停止/播放
    : `# T1 g6 x& `) n1 z8 ?
  2309. LDA <Key_Once
    4 O4 P. k  m9 z$ D6 I/ f; [
  2310. CMP #$10
    ; K$ v% y& H( x. A
  2311. BNE Change_Select_Last_Item
    + I' m. u( B1 n9 t8 M) o: V
  2312. LDA <Music_Stop_State+ w- C# H( A% v/ d5 H+ P
  2313. BNE Change_Select_Play" j: d$ @* J% m' j% @, I5 t
  2314. JSR Music_Song_Stop5 W& K' E/ U9 \" `. T
  2315. LDA <Music_Stop_State
    ; ]" N8 L! _! c9 n  u0 @9 v
  2316. RTS1 [! ^! `+ _/ p$ z+ l
  2317. , j; E9 J1 x0 f3 w# r  c& g
  2318. Change_Select_Play
    3 y- _7 C2 `( B! U2 E1 O
  2319. JSR Music_Song_Play
    % @9 H/ a. t1 ]& {7 Z$ |4 g
  2320. RTS3 K, @, H3 ^( j% h9 {

  2321. , C6 [0 U, u( \4 J3 x1 t# ?4 n( _( B
  2322. ;--------------------------------------------------
    / b+ w( g; T7 @
  2323. Change_Select_Last_Item;上一个专辑
    4 r; Y+ b( @3 O5 {
  2324. LDA <Text_Disable_Flag! N$ E) |. [- }" g; o/ G  Y
  2325. AND #TEXT_DISABLE_ITEM$ q& [# e7 ], g, }
  2326. BNE Change_Select_Item_End9 g6 b" U/ R/ f$ f6 {3 \0 ]
  2327. LDA <Key_Once
    9 p0 j) v2 {' l9 J- q
  2328. CMP #$08  |0 A5 |) x- V5 s8 o( {
  2329. BNE Change_Select_Next_Item0 Z5 C) e- S& s4 @* b- f
  2330. JSR Last_Item+ I' e4 ~# O1 c% f1 m. q
  2331. ;--------------------------------------------------
    + D; H' h6 N3 A, B, A' }2 F) N
  2332. Change_Select_Next_Item;下一个专辑
    3 @7 o3 L, T$ c6 H0 v
  2333. LDA <Key_Once2 R$ ?. C1 E. E6 l% q
  2334. CMP #$04
    " p2 o/ a. w; P% n5 J7 \
  2335. BNE Change_Select_Last_101 }7 {0 S% h! ^# L/ a( V8 c, h
  2336. JSR Next_Item' ?& X0 U- z' J% ~" _
  2337. LDA <Music_Item_Cur( |; c7 x3 A! \
  2338. JSR Get_Page_Start_Index
    # ~1 ^7 L8 @/ a) _
  2339. ;--------------------------------------------------  B; R5 H1 ^% O( ?
  2340. Change_Select_Last_10;前10曲
    ( V3 A* P: s7 p) W$ q  j
  2341. LDA <Key_Once
    3 Z3 f# b. j3 l+ p
  2342. CMP #$40
    2 \# B  Y! w2 @# L/ v% j/ \
  2343. BNE Change_Select_Next_10) h* D9 c  X# @1 w+ g
  2344. JSR Music_Song_Last_107 c  V8 x$ s7 z1 J/ W' X; |
  2345. ;--------------------------------------------------, D, s  a' K) w5 ^/ R9 m
  2346. Change_Select_Next_10;后10曲
    + L2 Z- V' v- g- a$ A# I0 n
  2347. LDA <Key_Once4 H) X: t# {2 P2 @! M' [
  2348. CMP #$80
    5 T+ ?- [+ G& v$ J1 {4 t! m- K$ a
  2349. BNE Change_Select_Last
    $ K. A& U7 Q: H) S9 }/ Y! R, h" E# \
  2350. JSR Music_Song_Next_10" U4 x6 W4 r5 v( |, d; N
  2351. ;--------------------------------------------------( Y7 i' Y8 E+ F2 }* \8 W
  2352. Change_Select_Last;上一曲, r0 g( ^2 l; j% r8 m& v
  2353. LDA <Key_Once
    9 Y2 @. Z& y! B2 V. i! B
  2354. CMP #$02
    0 e  s. ]9 O8 `4 X+ U3 d
  2355. BNE Change_Select_Next
    % n8 ]% \5 j! |9 r
  2356. JSR Music_Song_Last
    & Q0 b& }% z( j* e( W
  2357. ;--------------------------------------------------
    " Q5 h3 v" W: l$ |6 F* a" J
  2358. Change_Select_Next;下一曲, c8 q/ V6 G$ S; |
  2359. LDA <Key_Once
    9 {& _$ h1 T$ A/ ]8 }! S5 g* Y
  2360. CMP #$01% m) U1 k8 v% S! Q
  2361. BNE Change_Page_Next
    . S+ N6 A- ?% b0 y
  2362. JSR Music_Song_Next& e% n' |! c5 G
  2363. ;--------------------------------------------------
    6 @' {! {7 h0 z& }9 n1 o
  2364. Change_Page_Next;下一页7 H- i  p. z* ^- }2 v/ W/ [
  2365. LDA <Key_Once" w3 y) n% p0 @5 q, Z7 G8 u: p9 ]5 b5 t
  2366. CMP #$20* s* c& r5 M* j
  2367. BNE Change_Select_Item_End
    4 E5 N, M/ P2 k, h
  2368. JSR Next_Page
    ; [' m: l( H$ Y* g. G2 t
  2369. ;--------------------------------------------------
    ' G- ~( M$ Z1 B$ x) l
  2370. Change_Select_Item_End- O% f; U0 S0 C1 a! k; j% o
  2371. RTS0 Y3 I* y7 }' i) _

  2372. % j8 G  A3 l3 v* l
  2373. ;==================================================; A4 p# X  Z0 ]  |5 q) b+ @8 u' |6 Q
  2374. Show_Arrow;显示箭头光标; S6 n6 P  f. \1 I
  2375. LDA <Music_Item_Cur1 E) C+ O% h4 t/ [: i0 B( O
  2376. JSR Get_Page_Start_Index
    5 M6 q! s9 [) X1 a) x
  2377. LDA #$00
    7 P. }3 [, C5 Y- H7 s
  2378. STA PPU_OAM_ADDR: n" D7 ?) C- N. w% Z8 b/ d
  2379. LDA <Music_Item_Cur1 B, i0 G1 o4 M6 w3 c* s( ^/ k3 ^
  2380. SEC
    4 G" O: Q- @' ^* D
  2381. SBC <Data_Buf4 q8 H' \7 o7 o- {8 Z
  2382. ASL A
    9 d- c. [2 l8 {& e6 i
  2383. ASL A
    " B6 z$ ]8 I3 W+ J
  2384. ASL A
    : G4 P% m& n  i: b. {6 ]. R+ v! \6 Y
  2385. ASL A
    8 O0 x6 b2 Q: N, a
  2386. CLC
    6 i- m* v/ y% h
  2387. ADC #ARROW_Y_OFFSET# ]9 ~' X* W+ s9 L2 ]' B. A7 W
  2388. STA OAM_TEMP_ADDR + $007 `$ {+ A4 }) q
  2389. ;STA PPU_OAM_DATA
    2 }; s; g/ M1 E0 h) D) J! H1 \5 u
  2390. LDA #$1F8 T4 w6 |! K/ J. t! S/ W4 V
  2391. STA OAM_TEMP_ADDR + $01. z, v7 C5 O  U, E* v
  2392. ;STA PPU_OAM_DATA
    0 U- e: I9 M/ Q  U5 U) L' {: F
  2393. LDA #$00" }7 Q3 d/ M. f6 j& N) p
  2394. STA OAM_TEMP_ADDR + $02
      J) ~5 I+ Y. o3 R: Z( p) [
  2395. ;STA PPU_OAM_DATA9 n. W: [4 {* b
  2396. LDA #ARROW_X_OFFSET
    6 H9 _. x: E& X) h
  2397. STA OAM_TEMP_ADDR + $03! [. c; }2 [5 l4 J3 ~
  2398. ;STA PPU_OAM_DATA
    " E% T6 ?" a; o, F/ ?
  2399. RTS
      X; p, D$ ~/ y. u

  2400. % {+ z8 {; J) h! U& b- Y# A  |) j
  2401. ;--------------------------------------------------
    & |1 E" |/ ]$ H
  2402. ;命名表数据
    0 s6 K9 j1 [: d, o+ d
  2403. Palette_Attributes
    ) T* }5 u$ e+ o# `6 H- K$ B  e
  2404. .IF SOUND_BAR_SHOW_ENABLE
    ! M0 ~  E. t. R# e
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    ! g3 W$ u# P2 d4 K( u
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    8 Z6 {3 D. z5 N! Q
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75% W; y8 y! D1 \
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    ( g: B8 }' T" E
  2409. .ELSE
    1 Q6 R3 g; {5 m! f9 a% K, ]' h
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55, G" |4 T  s' Y; f& w, e
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55: K3 h4 M0 c# d! P3 C) ~! @% W
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$753 u6 W2 `$ G& a0 y0 [  z& F
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    0 }% ~9 K2 \" U0 S- R# O
  2414. .ENDIF$ G& F0 m( R5 z$ V0 D: G- W- v3 P$ {

  2415. ! E' T1 M6 T. s" Z4 x
  2416. ;--------------------------------------------------
    # D4 k1 L/ l3 }" e. }
  2417. ;调色板数据; B& L/ Y3 [3 w7 t- Y( j& U
  2418. Palette_Data
    ! \( [2 c( ?- m- K5 U' u/ d  W
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    / p2 ^/ P+ O- o# n/ d
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    % R. K, K  k* X. B$ @6 u2 K) X& ^

  2421. , K) G& f$ t7 J* @4 m  v. |
  2422. ;--------------------------------------------------
    ) p( ?- W" H: e
  2423. Static_Text_Data
    + {& l0 I# W( ?1 P; \
  2424. .WORD Static_Text_Caption_Data
    / e+ n6 T) N2 p1 f- }* u. Z
  2425. .WORD Static_Text_Author_Data4 Z: _( b, }) V# w& a; ]5 z* r5 u& j
  2426. .WORD Static_Text_Date_Data
    9 p; B# ^9 D* ?
  2427. Static_Text_Data_End1 ?2 _/ S" [4 G* q

  2428. 8 ~& @9 F% |# r( U" [
  2429. ;--------------------------------------------------
    + W! y8 W0 f/ F. o+ R2 a7 ?7 m
  2430. Static_Text_Pos. k/ j, G4 e1 c# c8 h1 K
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)  Z2 Q# H' o3 ~. X% i. N
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    " T; H0 _! O* N' r& X
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)! J' b: c/ x- `: x" Y/ E
  2434. Static_Text_Pos_End
    + t0 w! B# V0 F" d6 M4 `
  2435. - ^/ H* A+ G* E- N% A% ]4 m
  2436. ;--------------------------------------------------
    " T/ B! Q  Y% c# K$ ?
  2437. Music_State_Stop
    5 y7 p- L* \& w0 j
  2438. .IF SOUND_BAR_SHOW_ENABLE
    ' c+ N3 Y, b- k" `7 q0 B2 z' C
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00! K  c9 ?+ y' g+ c3 I
  2440. ELSE: y# \4 a% ^/ E8 G
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$002 V# R% [, {8 H) E% ~- q7 O
  2442. .ENDIF4 Z% ?; v# K- T! Z0 [
  2443. Music_State_Play
    / B- v1 h6 J2 @1 q, Y4 ]* {( K5 j
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$000 O& Q$ K0 q1 \6 g: M
  2445. - t" x  `8 U) M; i: I# c
  2446. ;--------------------------------------------------
    8 ^6 |2 K. \" D, T7 h
  2447. Sound_Bar_Text_Data;声音类型文本
    1 X; O0 D( q$ f) ]
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"5 K1 J9 D4 ]/ k4 ]* x+ R0 l
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"4 h; j4 s  L3 M
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    4 q0 i4 [4 p2 ?. R. G: \& }
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    8 y3 o/ ^% Q' v* v
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    ' [4 `/ w7 S+ q* J

  2453. 0 w6 P/ N$ b. e* d
  2454. .IF Track_Name_Pos
    ! z1 W1 ?: R/ {3 U) p: c1 l( p
  2455. ) C& e5 n) Q2 _+ ~" ^4 G* Y
  2456. ;--------------------------------------------------* R8 J" H9 \, B8 ^' Y( N
  2457. Track_Name_Addr_00;曲目名地址索引
      p5 c+ E/ z9 a/ a5 G: @) w4 Z. Q
  2458. .WORD Trackr_00_010 B4 @6 i' P0 \$ C
  2459. ! Z  S( D/ b/ l& k0 e! o) R' R
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    ; E8 b. V' B' y* R% [( r0 t  y
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    8 ]+ U( C. M7 C# }# C
  2462. / o( w& ^% U) T' M$ Y
  2463. ;--------------------------------------------------
    ; e& p: w9 _; o
  2464. Track_Name_Addr_01;曲目名地址索引# y( \0 H: Z% f( I
  2465. .WORD Trackr_01_01
    1 k5 j8 A/ T) l4 C

  2466. / z* _1 |4 h3 z& r/ u
  2467. ;==================================================. u' S$ m& K: a9 x8 L
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    / j, m# J9 e! {/ y- t5 J
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"- ^8 ^) a, [0 E$ I! k1 y
  2470. 4 M1 G8 [2 E  r
  2471. ;==================================================
    # T* |! Z, c5 C& L9 D, q7 j
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    ' I! Z6 V& J( Z
  2473. .WORD Track_Name_Addr_00
    & |  l8 J) G+ \
  2474. .WORD Track_Name_Addr_01
    / C$ v  B# Y. V! @
  2475. .WORD Track_Name_Addr_011 X: q+ Y8 t; c4 X( k( R; ?8 o
  2476. ( r! K  C4 }1 \& U6 \5 @
  2477. .ENDIF
    * y5 x* p- {. w$ h5 L) i7 ]
  2478. - M: t. l, Y& j8 _6 n
  2479. ;--------------------------------------------------
      |& d& N3 {1 {* a- l
  2480. Static_Text_Caption_Data;静态文本数据# p) A6 U* m/ O
  2481. .DB 16
    + @7 U5 m5 _; P. E
  2482. .DB "FC MUSIC 12 IN 1"
    2 k6 b2 M; r6 V4 K
  2483. Static_Text_Author_Data/ S1 G* X! I/ g
  2484. .DB 25+ B( K) W( o. I" j6 }3 j7 E
  2485. .DB "EXTRACTED BY FLAMECYCLONE": B8 s" S3 z5 Q9 b# T( P
  2486. Static_Text_Date_Data5 H) @* F: s, z1 J8 i% s
  2487. .DB 10, Q' A  V. f3 M# q
  2488. .DB "2023.07.23"
    ; x3 I" i2 j: }3 Y& Y$ ?) |

  2489. " l& a1 n; u* }! Q. C8 F: {4 d
  2490. ;==================================================
    9 H( T4 T2 d" v2 W4 L: o! P: }
  2491. Music_Collection_Name               ;专辑名间接索引- n. M5 q- ~1 T4 |8 D: s
  2492. .DW Music_Collection_Name_00% j) d/ ]7 M$ Q; @. ]
  2493. .DW Music_Collection_Name_01
    3 H; y9 M5 S- H  K2 b; P& A2 z
  2494. .DW Music_Collection_Name_02
    7 ]: h( p( j# }( N& q. a+ x9 o
  2495. .DW Music_Collection_Name_03
    8 u" t, j0 W# @, k" g5 E7 a
  2496. .DW Music_Collection_Name_04
    4 A  X: k7 P* q7 I
  2497. .DW Music_Collection_Name_05. r4 l/ D% K) C+ \2 j
  2498. .DW Music_Collection_Name_06
    : I( k  J' y. m
  2499. .DW Music_Collection_Name_07- T7 [6 D* ]: j8 ~: ?/ X: }
  2500. .DW Music_Collection_Name_088 P+ @( P; F/ h1 y9 i
  2501. .DW Music_Collection_Name_094 g( S( _2 L) Z6 V6 l' s( x" j
  2502. .DW Music_Collection_Name_10
    ' b1 H2 ]( i1 X% p" r* `
  2503. .DW Music_Collection_Name_11
    # t* H& g* h; l4 L4 A

  2504. - l! V/ _! v) w7 K
  2505. ;==================================================) J& i& r' |2 X" U, l2 _1 m
  2506. Music_Collection_Name_00            ;专辑名文本数据/ ]# E, G( j) O" Z& x, O# |
  2507. .DB 11,"1.RAF WORLD"
      R% {6 T6 U+ t1 w
  2508. Music_Collection_Name_01
    ( a* I$ f+ o/ N% x6 Z9 Y2 @
  2509. .DB 15,"2.FINAL MISSION"9 h4 I5 U. l4 Q5 G! T! Y4 }
  2510. Music_Collection_Name_02
    9 e& t! h% C- ?6 E/ T9 T6 @
  2511. .DB 06,"3.KAGE"
    ) X9 \2 h# }5 r
  2512. Music_Collection_Name_03
    $ @7 ~1 V6 N' o' {$ i
  2513. .DB 16,"4.DOUBLE DRAGON"
    . z1 l5 Q7 ^( J$ y
  2514. Music_Collection_Name_04
    , [- d+ [4 R& q- N2 C$ t" O
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    / N1 ]9 V/ S/ j' K( [  W, P$ R$ {
  2516. Music_Collection_Name_050 b& {5 {; S) |# @  U
  2517. .DB 17,"6.DOUBLE DRAGON 3"7 |5 C5 l* A( X" D& g: v3 q
  2518. Music_Collection_Name_060 I* i9 r, S# m# t; \4 r0 X
  2519. .DB 09,"7.ROCKMAN"9 M! x4 s5 C& j5 x& [. v0 R
  2520. Music_Collection_Name_076 f' X& g1 `. B9 L% J& p$ w3 W( B
  2521. .DB 12,"8.ROCKMAN 2"2 B& g- D% t, g$ ?1 r7 f5 _
  2522. Music_Collection_Name_08, x1 [8 N4 p( v4 T& ~; T- }
  2523. .DB 12,"9.ROCKMAN 3"
    1 h7 S; k5 q# U  T8 d. Y% x  {
  2524. Music_Collection_Name_09
    8 R5 _9 n2 m0 |. ~, G
  2525. .DB 12,"10.ROCKMAN 4"1 l# c+ W/ D# p: _6 Z
  2526. Music_Collection_Name_105 S1 K& H' I) P  t4 ^% I, n  g
  2527. .DB 12,"11.ROCKMAN 5") q' |1 v! R6 Y) x/ n+ |  W7 E
  2528. Music_Collection_Name_11# f: W5 m$ i  ~7 ]! ?1 F) J" ]
  2529. .DB 12,"12.ROCKMAN 6"
    & ?" e. a- u+ M4 I
  2530.   g0 d, G; \! x
  2531. ;==================================================1 v) w. v) ?- x. _( q1 M: l# f
  2532. Track_Name_Addr_Flag                ;显示曲目名标记, z4 i7 n2 l) e8 ?
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0; Y2 n% M& s% C2 B" }- x' J( U

  2534. 6 T" r& u" h3 O: m9 z
  2535. ;==================================================
    8 q5 k+ D, T8 g9 l" o( }2 @
  2536. Item_Pos_Data                         ;光标箭头位置
    7 {7 `$ g% v% H3 t9 ~0 s
  2537. .WORD ITEM_SHOW_POS
    7 v8 T0 o  W- [
  2538. .WORD ITEM_SHOW_POS + $00404 l! P3 B$ N8 M5 L7 m, F+ Q9 n
  2539. .WORD ITEM_SHOW_POS + $0080
    7 k1 o/ |9 v% f9 n$ [3 ~
  2540. .WORD ITEM_SHOW_POS + $00C0
    ; e& r% i" b3 u) j
  2541. .WORD ITEM_SHOW_POS + $0100+ ~, E# i  y  }5 m* ]3 E
  2542. .WORD ITEM_SHOW_POS + $0140
    5 X( {) P( J9 r" I# `/ u

  2543. $ l6 E8 o- d% V9 S6 m8 b. n5 k
  2544. ;==================================================
    ' P8 \, M3 v& Z1 O
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    0 w7 N$ S$ S. s+ R% h( U' C% ]
  2546. .DW $BFC8
    : I, q' w1 f3 Q' X
  2547. .DW $D7F0
    + o% ~3 w/ G5 t% z
  2548. .DW $9FC0
    4 p* T$ [" L- u& r7 T
  2549. .DW $BF70
    $ V0 A5 H8 v3 B, e- `
  2550. .DW $8003
    : }: I) q7 V4 n2 @
  2551. .DW $BF30  w' h- y8 r( \
  2552. .DW $9003
    8 ]) T( z& w- P$ b  {$ a
  2553. .DW $8003" w4 b: v7 e  g8 s2 Q, j' X: H
  2554. .DW $8003' S6 G0 e$ n4 J- I( G- i
  2555. .DW $8003
    ) r4 Q! D9 X$ [# r* S& q. _. M2 V/ D
  2556. .DW $8003
    8 t* C' M5 r2 v3 b4 a
  2557. .DW $8003
    , x" l9 ^+ T4 X
  2558. : P+ G1 I; i. m2 s7 |) ^; l
  2559. ;==================================================
    9 Z8 C/ t: ]7 c8 m3 D7 {- f
  2560. Sound_Play_Port                   ;音乐播放入口地址
    ) v: `1 l  c, }
  2561. .DW $8000  o6 ^7 m' |4 e8 d7 J. D* A
  2562. .DW $8001
    . ]: v8 ~  W7 U# s+ _: N: [0 N4 U  u
  2563. .DW $A000
    ; Y  ~: z3 U& u% j% b9 k9 t* A& ?
  2564. .DW $8003
    6 Q, Z! Z3 G" I* |! |4 b
  2565. .DW $8000
      K5 X6 r/ ^) N2 [
  2566. .DW $8003
    # y# Z$ d: P/ M  C$ I$ a$ `; P
  2567. .DW $9000
    3 A$ l# p; Z' Z. n6 z; x4 [: Z5 u
  2568. .DW $8000
    # t' N& V' k; r" a2 \$ T9 `8 D
  2569. .DW $80007 E; }7 f2 [% Y8 ?4 s6 }; W# ?
  2570. .DW $8000$ `5 }$ K; ]' x. d% K
  2571. .DW $8000
    1 h. T- m& v0 p( X7 v9 J
  2572. .DW $8000% i& s. M7 @' n$ B

  2573. : q9 e* k  @$ M' C/ R9 O  l
  2574. ;==================================================4 S, Y9 |( T5 q3 Y, B  P& }
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    " b# x& u8 M2 P) v  C5 j
  2576. .DW $0000
    4 J  R+ r* Y; O5 q" S( L
  2577. .DW $0000$ y+ @5 ^) h) P4 q3 @. D% o( R
  2578. .DW $0000) K; j6 h+ y- G8 D9 W
  2579. .DW $0000. m. F& B  H8 y# Q/ ]" H: w$ \
  2580. .DW $0000/ \& i( M6 h( h9 ]& R; j
  2581. .DW $0000
    ) a/ ]& C" A' V: k5 s
  2582. .DW $0000& W6 z5 Y: Z2 `8 w# e
  2583. .DW $0000/ A: y7 a& V/ t  W; {' I" N/ u3 O
  2584. .DW $00000 ?' V  L, T' N$ m2 v
  2585. .DW $0000
    ! |7 f2 h  p: h
  2586. .DW $00007 e  J) _7 i" k( q8 g
  2587. .DW $0000% a2 c0 I; B& I% S; l
  2588. , s: F+ M, P, c/ N" X" m8 E3 V7 C, x1 V
  2589. ;==================================================1 q4 O* [  \! S9 S9 t6 h
  2590. Sound_Total_Port                          ;曲目总数2 {* b% y2 @. u% \" X
  2591. .DB 38
    : |6 e, [0 ~# p; q
  2592. .DB 33
    + L) v2 B: T: S% e8 G4 B
  2593. .DB 49, \! k3 z; y  [! M. Y
  2594. .DB 41
    + \5 |, E: s9 n) r% m7 m
  2595. .DB 83% m' u4 \6 C. K+ e' s
  2596. .DB 70
    7 c- a- }$ O6 k) S# c' o& o
  2597. .DB 50
    7 D# @0 ^) s& v" F8 X
  2598. .DB 674 F0 T8 z5 V0 m. u9 n" R
  2599. .DB 57
    ( G  ^: Z' n/ `5 H# w
  2600. .DB 71  r5 @1 ~0 B# Q* U) n( H7 y) E6 e
  2601. .DB 767 _) ?' y% V4 h. z; j
  2602. .DB 1024 h  P- ^  O5 ]
  2603. 8 L0 ?- c& f6 L1 N  }. ^
  2604. ;==================================================
    7 r6 H8 f4 T7 R" G  [& p
  2605. Sound_Start_Port                      ;起始播放曲目
    3 B+ S' I5 a5 ~2 y
  2606. .DB 00- r, Y& B& a2 S! {! @# o6 y4 }9 v# l
  2607. .DB 00% i8 k" m# `+ ?
  2608. .DB 00
    5 s9 T6 X, N: c
  2609. .DB 008 M8 m* ^' G+ M9 n1 m) o: X
  2610. .DB 003 L7 \. g+ F/ X8 w( K( J' S( P
  2611. .DB 00
    9 k0 ?- J! ]# k
  2612. .DB 00
    6 g7 S( B6 d: N. F" o
  2613. .DB 00( ~8 ~4 d+ W9 _
  2614. .DB 002 c! P  y$ a: C/ U9 W
  2615. .DB 00  N* P0 k8 L* x6 ?- g( C
  2616. .DB 00
    0 E( |, _3 C) A9 N6 B, Z
  2617. .DB 00
    * y( i, F  r4 K9 ?
  2618. ( I: @/ ?6 V3 F5 R2 C
  2619. ;==================================================
    0 `  i. b' C$ j5 c; \0 U/ w
  2620. Sound_Bank_8000                      ;专辑bank_8000* e1 b7 F; }/ V3 G( b: B9 r
  2621. .DB $10' N- ^& [# L; i! u
  2622. .DB $12. [2 }5 H( j& V$ g% q1 V- T
  2623. .DB $14
    ' T% g: _7 Z* r0 b3 N+ _0 g
  2624. .DB $16% G$ ~0 \$ p& o' a! I
  2625. .DB $185 @* k0 A0 [. g1 n
  2626. .DB $1A& P: `0 [) G0 ~7 R. Y

  2627. , e' N% H; ?1 B. d* H# z0 P
  2628. .DB $00' W( ?% n! d# l5 l3 u
  2629. .DB $02
    ; _' g7 b2 s; c7 b9 Q, ^- r& K0 t
  2630. .DB $0D
    : l" |3 t2 ]9 [- x3 ]5 M
  2631. .DB $04# ~0 K, b1 g9 v- [5 s% L
  2632. .DB $07
    - O: q, p9 {; k' w' ~. G9 n
  2633. .DB $0A; C, h. |6 {4 _7 h) _8 t
  2634. 0 z* Y5 v6 M( c: [6 H. l

  2635. ) i, t$ e$ o2 t
  2636. ;==================================================
    6 O0 r% a* a7 m; Z  q  B
  2637. Sound_Bank_A000                      ;专辑bank_A000- z3 e+ G4 [0 p% W- X! Z/ Y+ g
  2638. .DB $11: E# W$ y4 X7 d+ ?) a2 p4 a
  2639. .DB $13
    8 W' `( O( T# F- [
  2640. .DB $151 ]) ^2 T$ l0 L  E/ R3 {% y
  2641. .DB $17
    - r" N! d, z* ^% z
  2642. .DB $19) a$ [. f7 C! B: ?
  2643. .DB $1B* x9 ?" H# R% w1 A5 i
  2644. + e; g$ }8 j# s( w6 Z+ K8 l
  2645. .DB $014 h, w8 b# E" a
  2646. .DB $03& l, N, y& B' D, ]! l" a
  2647. .DB $0E" ~0 L, H( S+ i: M, W. T7 t( d
  2648. .DB $05
    & l8 x. U: ~1 y' M+ h
  2649. .DB $08
    - W/ E7 |8 L0 m5 v3 U2 V) Q7 }
  2650. .DB $0B
    6 p6 ~5 n( _  C; o9 B+ q
  2651. % L1 P7 A0 X( r* V
  2652. $ R, k$ k6 X. E5 T
  2653. ;==================================================! |9 g2 g8 V4 ~5 s  Y
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    ' b. t- Q9 d, C
  2655. .ORG RESET_ADDR
    ' ?; ~% m- N  o6 k! V: \
  2656. 0 r! G2 i* {% M( [2 |' h- F
  2657. ;==================================================: N+ X/ g3 [7 H0 t6 M
  2658. Switch_Bank_8000;切换bank到8000-9FFF1 B7 u* e, |: J% v7 j5 J( [
  2659. PHA$ `5 x4 [: B" i
  2660. LDA #$06$ j# \. h' l8 s* A& G/ I7 ]. A1 M# ?
  2661. STA MMC3_BANK_CTRL
      r- m' k2 n: z0 W# E) W9 [
  2662. PLA$ S7 M, W* v. ~8 {
  2663. STA MMC3_BANK_DATA( `3 H/ Y/ R( {# s
  2664. RTS2 k' w2 }: D, T: k$ G+ Z
  2665. 9 V( M$ K* D' t
  2666. ;==================================================6 N3 A8 I" k" x6 S) V  Q
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    9 `' a1 s& S. R$ a3 U- n+ x
  2668. PHA
    5 J0 f7 m4 e6 }3 q8 ]
  2669. LDA #$076 E8 W6 m: V* f/ H( Y" l) w
  2670. STA MMC3_BANK_CTRL
    & `; S& E1 M0 I8 [/ F  B* G
  2671. PLA4 m( d" T, h' `4 A3 Q( F
  2672. STA MMC3_BANK_DATA
    " m5 F; q' u1 W4 K4 b, K; u& p
  2673. RTS+ @# ]: e! ~& \( N$ M
  2674. 5 j% ?% p- Q" q4 D2 m. Q! ^
  2675. ;==================================================, ]2 z1 a- f! U+ g- z
  2676. Switch_Main_Bank;切到主程序bank
    3 q7 P; C% M+ p+ n  [7 z) V
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK1 f& n. Z. D1 Z1 X
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank# M2 q. d2 n! b4 t$ T" T
  2679. RTS
    - F* X' c) O: d- o' k& p3 w

  2680. & j) l# X: N0 f; O9 h/ {! ]
  2681. ;==================================================0 B, l+ c8 s3 p! S
  2682. Sound_Reset;音乐重设(如果有的话): u( k: |1 q% f7 P; _0 ~* K* d
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    * a7 Z! V) e( n/ d
  2684. JSR JSR_Addr_Op        ;执行音乐重置, }8 l- |& f2 ~
  2685. JSR Switch_Main_Bank   ;切回主程序
    ' ?4 `" v# U8 A+ w
  2686. RTS
    ; o8 A; Y: `. `! r3 n& Z
  2687. ' o  x6 V0 `/ c/ m% {" b- \& N* Y, m
  2688. ;==================================================
    , j$ j& L' ?# a/ R3 Y; p# e
  2689. Switch_Music_Bank;切换音乐bank$ F& q* G3 x. E" K6 Q2 _
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号) f7 F) Q! B7 ^) k$ t9 H+ C+ x, T
  2691. LDA <Music_Bank_8000
    # l: _6 D# [( I2 L* w
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank) P+ A* Z7 @3 H: a& [- K
  2693. LDA <Music_Bank_A000
    9 i& n  k! x2 q
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank# B4 ?5 I% x1 G" ?  Z
  2695. RTS
    * n0 ?. e- R# |. U, ^2 P
  2696. . @) u1 N1 o( b' @9 E$ x
  2697. ;==================================================8 B  Y* N! Y! Y& z* {" b% t
  2698. Sound_Init;音乐初始化
      g7 s1 M- G) V( Z* z/ g
  2699. PHA
    5 N0 m( h2 d5 g) t
  2700. JSR Switch_Music_Bank  ;切换到音乐bank. H, R6 I# }  v* ]* e* {8 \
  2701. PLA
    ' _2 R- Z4 r; b+ W2 d
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    . U, q8 y2 D  O, S
  2703. JSR Switch_Main_Bank   ;切回主程序
    ! q. B' B7 J8 }4 ~' v8 D  z# D3 n- Y
  2704. RTS
    9 U1 l1 h( U! r: ]( ^8 k. p
  2705. ) _* G# S- Q& I+ a* r, H! D
  2706. ;==================================================
    ! G- e1 l1 z9 d9 h+ y/ L: \
  2707. Sound_Play;音乐播放
    , P2 B8 m' _& [+ G4 ]6 n
  2708. JSR Switch_Music_Bank  ;切换到音乐bank) l. u+ ^& I: U* d) R& n4 [
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    / L# G/ r- ?7 J$ N  b
  2710. JSR Switch_Main_Bank   ;切回主程序
    ! G) G1 _% s; B. [% t
  2711. RTS
    / k; M7 O; b* u+ F. T6 _
  2712. 9 C9 t: T# m; _! F- I. V0 {3 ]
  2713. ;==================================================
    + l& A3 [! |- s/ A/ i; E2 f
  2714. MainLoop;死循环! v( i6 i0 J8 W6 F# X
  2715. JMP MainLoop
    3 q3 c( r* i# f- q2 L6 c3 k

  2716. . c; l7 u2 l( I  ?9 @! N
  2717. IRQ_SUBPROCESS_JMP = 0& A) v; B$ P" z1 P4 C: u
  2718. 5 F% ~- u' _' V  V5 ~& \4 z) W
  2719. .IF IRQ_SUBPROCESS_JMP" y4 Y2 ~* q3 z- |4 ?4 [# `* k
  2720. ;==================================================& w; c+ S- K, u1 @& X( R
  2721. IRQ_Process_0;IRQ处理过程0& K. x0 ]+ |8 e6 F+ u" D) j8 s
  2722. + p) u8 B% [3 a7 k  x8 _# X
  2723. ;15条扫描线后触发IRQ3 Q+ g5 D$ d% v3 a8 Z8 E
  2724. LDA #15& H3 b# N# P* N! k! S, a
  2725. STA MMC3_IRQ_LATCH& n0 D  q( s7 O# y
  2726. , K$ q. C* r4 |" e+ S/ U4 s5 g
  2727. ;设置屏幕滚动
    $ k) t( e8 Q% c/ H9 Y3 Q
  2728. LDA <Scroll_H
    1 p" C3 b  g- x
  2729. STA PPU_SCROLL3 O% _! ]8 k  B& S3 z) R* {
  2730. STA PPU_SCROLL) d9 x* F& @  l, b0 z# A

  2731. , K  e8 e5 F% O
  2732. IRQ_Process_0_End/ G" m3 Y! [( E  ^$ ?
  2733. INC <IRQ_Process_Index3 _2 b# D3 a# J+ p) m" S3 _1 c
  2734. JMP IrqProgramEnd6 K1 R6 u) t7 J/ V7 u( Y9 p
  2735. ! @+ [9 |" p# D. _: F4 B: d
  2736. ;==================================================6 O7 U; v- V+ T
  2737. IRQ_Process_1;IRQ处理过程1
    3 [4 E1 j+ X: h9 y* K3 D7 @
  2738. ) `4 b' D& ?+ `. E; g  T
  2739. LDA #550 }( d; M4 ]1 J4 b! ]7 P1 R4 \; r6 q
  2740. STA MMC3_IRQ_LATCH& D4 j( u: S1 s3 U2 q/ j: L
  2741. # J5 Y' V5 y6 Q! E- N& Q+ P
  2742. ;设置屏幕滚动1 K( ]" k* E9 q* f% `* x. ^/ ?
  2743. LDA #$00
    / e0 _7 a% X0 @- ]: A: F. ?( V
  2744. STA PPU_SCROLL& @5 a/ J1 ]! ?! f& ]0 \* r8 N
  2745. STA PPU_SCROLL
    & }7 A6 Q4 K6 K2 k9 Y( }. Z* H- \

  2746. 8 H' s" w( [- U* j- R; p
  2747. INC <IRQ_Process_Index
    - a/ W: E* B) O
  2748. JMP IrqProgramEnd8 g, n0 G2 M5 ^" z( @( g$ m7 ?
  2749. 9 k0 R- z1 e$ _/ v6 e/ F
  2750. ;==================================================
    ' E2 k) ~2 h  N: f! v) A/ ?% E
  2751. IRQ_Process_2;IRQ处理过程2
    9 R! e7 j+ @" [* y+ d( |) q
  2752. / J( T2 l& T9 g* A' A* Z1 r
  2753. LDA #15
    8 z6 k) n6 F% @
  2754. STA MMC3_IRQ_LATCH
    5 j% y3 W4 A8 v2 }! n. T
  2755. 2 g" m9 t2 F2 r7 x* S0 t) l
  2756. ;设置屏幕滚动8 I8 A  Z+ @0 @' R$ \
  2757. LDA #$00
    ; i: F3 B& q# L7 V5 w, u. P+ J7 C& i5 s
  2758. SEC. Z6 p. l# ~+ ~' I$ c  i7 ~  `
  2759. SBC <Scroll_H$ Q  c: ?2 [9 @" b4 A/ P
  2760. STA PPU_SCROLL
    9 C2 d. C* @7 @" j# d
  2761. STA PPU_SCROLL
    + X% e2 b) s; K  O. G

  2762. 5 R' Z9 q& M# B( b7 D* _6 ]) \0 d
  2763. INC <IRQ_Process_Index: z0 `& p" R; ?8 b. ^
  2764. JMP IrqProgramEnd
    ) B9 X9 c( |& w: O- e- d: S8 q' m, W  E

  2765. % g+ k; x) y" V0 B
  2766. ;==================================================
    : H$ [4 q2 r  h$ F+ z
  2767. IRQ_Process_3;IRQ处理过程3. Z6 Q3 k  {4 s! k/ z1 `

  2768. % W0 l7 K5 H* e2 {) ^$ h
  2769. ;设置屏幕滚动
    2 X5 @# Q4 N% d/ g
  2770. LDA <Scroll_H3 M- q! f, u7 t. r1 f
  2771. STA PPU_SCROLL, l) E& C# I+ b3 z" S) g' A
  2772. STA PPU_SCROLL$ R- k1 d( a( q. z8 j8 W0 i. _

  2773. - f& C! f0 g. h; H/ g. U1 O' J
  2774. ;禁用IRQ4 s# R5 q) ?. x: @' U
  2775. STA MMC3_IRQ_DISABLE7 j# n/ X7 g! r" e! o
  2776. JMP IrqProgramEnd% X5 _+ }3 ~: j6 n
  2777. 9 i% j+ h' A' {9 [( A8 o
  2778. IrqProcessAddr+ r# q5 u+ v# X; w
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_35 Z1 `9 `1 S9 g3 h+ g
  2780. " H$ O+ D# G+ U+ g3 f% z
  2781. .ENDIF/ [7 d) C) B. e4 o2 t0 ?
  2782. 2 P* ~6 C  x$ g- _- D/ u; I
  2783. ;==================================================
    / `  U* h9 e$ h/ L' t! i
  2784. ;IRQ滚动模式常量% V* y$ a( _" u# @% e$ O
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动  i( B* g- d6 F' o  ^
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    - n# h( n* K. \9 G; I5 ~/ d7 f
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动4 Q- z! R3 {$ B+ M9 h2 U

  2788. & m: @" x3 y3 C; m  w
  2789. ;IRQ扫描线数据
    9 q8 W+ Z/ m+ y, }4 j9 `  @) T
  2790. IRQ_Scanline_Data9 b) B# [- D4 ?# F% w+ D  @6 h
  2791. .DB 8) P7 a& o: r. I! h
  2792. .DB 54$ P& o1 L8 P$ o0 a3 b" k9 `
  2793. .DB 8
    7 n' L4 W$ I9 Z$ Y' I) B
  2794. .DB 00 ;关闭IRQ" B  O  N/ t( ^$ K! h/ L

  2795. 5 k+ C3 C0 J# K* {3 N7 X
  2796. ;IRQ滚动控制模式
    8 n3 m0 x# G4 e& k9 o5 V
  2797. IRQ_Scanline_Mode8 ^" B8 u0 l5 z) F6 }/ i
  2798. .DB IRQ_SCROLL_MODE_ZERO
      x6 n" i2 ?" X" A# v7 d/ Z
  2799. .DB IRQ_SCROLL_MODE_ZERO
    ! q. n- {& m- ]
  2800. .DB IRQ_SCROLL_MODE_RIGHT  U4 D& c! j% s; U$ y
  2801. .DB IRQ_SCROLL_MODE_LEFT
    ( ?2 p9 O  S2 ?. C9 `. y- v
  2802. / z3 j! }4 o8 u
  2803. ;==================================================- V. s4 Z. O6 W) P
  2804. ;IRQ处理* Z4 S- J0 h/ W; G; ]
  2805. IRQ_Process
    . Q; T, z, T5 r# O% J
  2806. LDX <IRQ_Process_Index
    ; d# {  x+ L8 P% h1 g
  2807. LDA IRQ_Scanline_Data,X* e9 A: |/ V" @2 A2 l; z
  2808. BNE IRQ_Process_Latch
    & v0 z4 z3 P/ f0 y1 N
  2809. IRQ_Process_Disable;禁用IRQ
    : R8 e' {( E1 F* G; h' f2 H+ K2 R* G' s
  2810. STA MMC3_IRQ_DISABLE
    * Z# M' m+ U- x( S( r$ S- @! N) N
  2811. STA IRQ_Process_Index
    ) v# n% {8 V! \7 q' d2 K
  2812. BEQ IRQ_Process_Scroll/ W% b0 u( Q0 k, N/ B1 {1 B
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    2 V7 I% l2 Y( Z# P
  2814. STA MMC3_IRQ_LATCH
    + @2 H! e! e* Z9 C: H8 {, {
  2815. INC <IRQ_Process_Index; C- Z$ F1 T' y
  2816. IRQ_Process_Scroll;IRQ滚动控制  S$ ]! \4 ~. L# z6 B+ N8 I
  2817. LDA IRQ_Scanline_Mode,X) Z8 r1 ~/ y; X" Z% l/ H3 v" V
  2818. CMP #IRQ_SCROLL_MODE_LEFT' m, X  R) ~/ X* g2 {8 W
  2819. BEQ IRQ_Process_Scroll_Left  A* i. b6 Q' Z
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    3 Y) j% M  B; W: g$ Y0 n
  2821. BEQ IRQ_Process_Scroll_Right1 `) t6 f: J8 m; y& [3 Q$ G
  2822. IRQ_Process_Scroll_Zero;不滚动
    8 {/ W; A7 i9 S
  2823. LDA #$00
    ; G; M$ n: Z  E$ ?, {% f( P
  2824. STA PPU_SCROLL
    ! a1 m+ W1 H+ H: ^' X# D
  2825. STA PPU_SCROLL
    2 t& k; Q  t1 N/ M; |1 p
  2826. RTS% A5 F2 N& F1 R
  2827. IRQ_Process_Scroll_Left;向左滚动) D; S6 _4 p) p1 T: U! t
  2828. LDA <Scroll_H
    4 v! T4 t+ j3 v1 @5 G
  2829. STA PPU_SCROLL) F* w3 _6 Q! j% _
  2830. STA PPU_SCROLL' x1 c9 s% m+ z/ O+ J" i
  2831. RTS1 Q0 g$ \$ q: g  f6 O  W
  2832. IRQ_Process_Scroll_Right;向右滚动/ G1 {; j7 Z& E" D
  2833. LDA #$007 w+ j+ M- k8 E: a# `* D
  2834. SEC
    , }! u2 Z3 I$ ^! l8 f$ K
  2835. SBC <Scroll_H' ?7 P* K- J, U
  2836. STA PPU_SCROLL, I& ~. z$ n7 }# _& H
  2837. STA PPU_SCROLL, C7 g! M: v$ ?6 M% ], U& e" `
  2838. RTS4 J& m: i1 z$ |3 l: x& |; W

  2839. / X" z5 r6 c0 m& i/ d4 g% I% Z! ^
  2840. ;==================================================5 a" T* E% W: f# [" O
  2841. NmiProgram;Nmi中断处理
    ' P% |8 r1 F0 v& S
  2842. PHA# \& Z8 |9 o, s5 w3 \
  2843. TXA  p' G4 }6 j  i5 H
  2844. PHA7 m4 b. e: f) O+ X# {: L# C
  2845. TYA
    / ]. t' v! m7 \& B+ G- i& C
  2846. PHA
    9 Z: c) a* w5 i) C% D' c# i6 w

  2847. 4 ]7 Z& |. o; q0 @4 T& ~! C/ O
  2848. ;读取清除Vblank标志, 防止重复进入: z3 V2 a) D+ J
  2849. BIT PPU_STATUS5 b$ I; x' [& h* l6 B1 i+ w; L- y

  2850. ; d2 Y! |3 E5 S! w  h$ u0 [+ g! }1 P
  2851. ;切换主程序bank9 o4 M; ]/ Z( o4 Y9 d1 o) s
  2852. JSR Switch_Main_Bank
    " {! ~( X5 B$ `, ^8 r; Y7 V
  2853. 4 X' |7 l! m; M' y
  2854. ;Nmi处理2 ]. B6 v8 D% e+ z. Q2 M
  2855. JSR NmiProcess6 J" R) V- A" ~8 n

  2856. ' S5 i% a* B" W$ _0 R! m. t! w# k( a  T
  2857. Nmi_Proc_End
    - }1 x' t2 N$ [# H9 z" _
  2858. PLA7 A* l: a6 C, Q' L" q6 X0 k
  2859. TAY. W" T# X: e9 [- u3 n. q
  2860. PLA
    & l7 j4 _: N8 T9 K' j
  2861. TAX
    - I2 H1 I' u  Y7 f% X8 z
  2862. PLA! H- F$ \' Z( E# `( ]
  2863. RTI
    3 x: D9 i* _  A8 p
  2864. / y& }" r) t& ]# E! u
  2865. ;==================================================, l! Z1 \% K% q
  2866. ResetProgram;重置中断处理7 U0 k0 r) @- j$ f
  2867. SEI0 [2 n9 _8 d1 e3 x% |+ e  I# P/ G( t
  2868. CLD
    " J: q4 x; @$ U4 V4 @8 s2 I
  2869. LDA #$00$ N# j, q+ H6 S1 J7 E. h
  2870. STA PPU_CTRL9 F) o& w: D$ U4 M+ R
  2871. STA PPU_MASK
    + u( }; Q1 V5 X2 d4 x$ j

  2872. : v6 y; l) S8 c# ]9 N6 ?
  2873. ;切换主程序bank
    ! n/ b; x8 u2 _# `
  2874. JSR Switch_Main_Bank; Q0 C& q, i9 m7 c. v

  2875. 5 E; O( L# z4 }( V; x
  2876. ;程序处理开始
    / V2 {3 K% ~/ D
  2877. JMP ProgramBegin0 A5 b$ s/ |$ W3 T4 {. m0 d

  2878. . L- p7 Y: ]/ Q1 i2 t% K
  2879. ;==================================================2 Q8 G- ^9 W) v" v' H: x
  2880. IrqProgram;Irq中断处理* n5 l- s% y' F/ \) O9 E; x, o
  2881. PHA; ^( [) ^5 g, S. h) N/ h
  2882. TXA, X! m! W0 G5 r" N8 w
  2883. PHA% V$ V8 ~5 z# P" d- C9 h- A" |
  2884. TYA- s4 J* Q2 s' Q0 u. g! W& k! ~5 N: i
  2885. PHA
    # {: _( |4 ], x' q; U! m+ U
  2886. * M9 z$ U7 L9 X6 }+ c
  2887. ;关闭IRQ
    # C; ^) B9 u" f
  2888. STA MMC3_IRQ_DISABLE
    6 M$ X" r: Y. ?

  2889. 4 w! |% m1 m4 }5 L6 x
  2890. ;允许下个IRQ触发! k9 g5 v/ P! h5 U
  2891. STA MMC3_IRQ_ENABLE
    " p5 Y$ l1 N# }3 m. {* V* g  A
  2892. / l$ [$ K* Z; C5 S" C  J6 i! d
  2893. .IF IRQ_SUBPROCESS_JMP
    8 l" G1 ]7 Q* b3 `( P

  2894. 2 ]0 n1 ?- {3 x- ~! a1 j
  2895. ;执行IRQ过程; ]$ h; r0 b% F9 R" V% e
  2896. LDA <Data_L2 o9 }" Q, I/ V
  2897. PHA
    6 _# [# I/ R  a1 f. l& g
  2898. LDA <Data_H
    $ B4 k# f5 _( F5 t7 N# E2 m. S, L
  2899. PHA
    / F- V* g0 u" l' V  i8 z+ ?
  2900. LDA <IRQ_Process_Index
    - j/ p8 F( C0 {, w
  2901. ASL A
    3 Y/ J3 X% `4 [" D6 C
  2902. TAY
    6 W1 v: ^& f3 A; s0 X" s+ x/ p( m3 W
  2903. LDA IrqProcessAddr,Y
    , [* V& ]; ~9 j! k5 g
  2904. STA <Data_L8 \( E* h" Y, y9 T- V8 `7 ?
  2905. INY
    ; K( t! C. Z1 g5 ~) n$ ~
  2906. LDA IrqProcessAddr,Y! K* Q- g& u0 }: K3 N5 P
  2907. STA <Data_H
    5 ]5 \4 q( n2 y% q* j  G
  2908. JMP [Data_L]0 S' O# e9 j; ]7 A2 {

  2909. " c3 ^2 W' _5 S& Q
  2910. .ELSE
    . \7 M. T1 G" o  [$ V" M
  2911. 9 L2 O! Z3 _" g# z+ x. n! p
  2912. JSR IRQ_Process
    ) m: k4 l$ l1 h) H* Z8 ]- Q

  2913. 4 h- r7 _2 ?; M9 x* i% R7 g2 `9 u* i
  2914. .ENDIF7 a  t+ Q6 x; p/ v  e' ~9 j

  2915. 5 W# J$ h$ {( j* E. U0 w
  2916. IrqProgramEnd5 s7 F$ M6 j9 b  f# i! J0 t# w
  2917. .IF IRQ_SUBPROCESS_JMP
    ) u, k6 H  k. ^- ~/ g
  2918. PLA9 ]" t2 ?& X8 \, {) v
  2919. STA <Data_H: q( l3 T" R+ P
  2920. PLA
    & X. @% z  P1 U8 V* _
  2921. STA <Data_L
    $ y; Y6 W. y, l1 Y6 B9 w
  2922. .ENDIF8 ^6 G/ H( s+ `
  2923. PLA
    ! u; `- E# f' |/ s+ a) v* ?; U( k
  2924. TAY$ c% w' ~7 `6 H+ T8 J( ]+ D+ r
  2925. PLA6 M: p1 ~" q2 l& {) ^' G
  2926. TAX
    8 p" n$ E) U. S& f8 u1 P' ]  Q3 o
  2927. PLA# l& I% t2 l8 Y7 V% e$ J: l8 G  [" F
  2928. RTI
    % s& U/ {/ D0 L' x

  2929. & Q) x4 P  b( v& `
  2930. .ORG $FFFA7 z8 }( m, M3 o  s3 f: v1 ~+ e
  2931. .WORD NmiProgram! L0 C7 N5 W1 O- Q
  2932. .WORD ResetProgram
    / r% a4 P: s4 }  u5 u: x
  2933. .WORD IrqProgram
    ; W8 S5 ?7 H2 h: ~) _. R
  2934. * Z0 ]! }5 S) _8 o1 A& n/ S; K
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    ' n( b% d+ d' g( v; c1 A6 {
  2936. .IF SOUND_BAR_SHOW_ENABLE
    + }, i; V! L3 [& \9 O. ?
  2937. 3 N4 [* w+ v* n, f1 T+ i- C' ^( A
  2938. .ORG $FE001 H1 Q, L6 M& Z$ |9 S
  2939. PHA; Q, J, z2 q0 O% B" N: y$ z
  2940. STY $07BA+ d4 F& p& X5 Y& ^8 D
  2941. LDA #$8D
    . f" W4 H0 B, F2 w
  2942. STA $07BC
    0 ^: i% V& R. m9 q
  2943. TYA8 f8 z) n# e+ F% T8 X2 k0 b# _) R" \. c
  2944. CLC
    # K! b5 ]' z3 U7 B$ \8 A. ^+ W: Y
  2945. ADC #LOW(Sound_Bar)6 y6 Z0 f% R1 J3 P& `6 r
  2946. STA $07BD# Z" v" y8 }- W% X: a
  2947. LDA #HIGH(Sound_Bar)
    3 g3 x2 n4 T& _* H0 J
  2948. STA $07BE
    + }  W% L' p6 ?5 V. y( w/ W
  2949. LDA #$60
    $ e6 g% Z# O. Y
  2950. STA $07BF8 M' U7 h3 N/ ^9 K& S7 N5 ^2 r/ l
  2951. PLA; h  d: d& {0 z  x% m, i  x" Z
  2952. RTS9 S$ ]: N7 }+ s7 k7 M$ u# L$ d

  2953. - T- |) ?2 t6 G9 r' l8 M
  2954. .ORG $FE20! `) s# n6 j$ H0 }7 y9 v$ O
  2955. STA $07BA
    ( t* S: I- I" f( S& H& J
  2956. CLC; Q( W+ v2 G# M# R6 _. P
  2957. ADC #LOW(Sound_Bar)7 J* @, ^1 Y' |" c+ x  F
  2958. STA $07BD
    $ ?- D1 `! d( }, _5 R2 a! U+ [2 f& k
  2959. LDA #$8D
    0 h" \% Y: l$ ~8 b3 P! [( m' }" R
  2960. STA $07BC
    ' b8 L; W& P8 j$ R9 _
  2961. LDA #HIGH(Sound_Bar)( [# e3 {9 b' X$ T& W: T' P+ k$ x
  2962. STA $07BE
    * F1 E2 d) Z: ^- l
  2963. LDA #$60
    9 @4 M7 O2 d  t( B
  2964. STA $07BF
    5 F0 c6 C" |+ R( G
  2965. RTS1 ]! K+ F& W) D2 z7 n$ x& M" x7 V

  2966. ( j8 @1 \5 f  Y9 ^! V+ o4 d5 z
  2967. .ORG $FE40
    + N- p: I# }. H- A
  2968. PHA  a1 L% i6 t- i3 l! B
  2969. STY $07F1) R0 |" {+ N+ `* [" S
  2970. LDA #$8D+ T3 y+ r' d3 j
  2971. STA $07F3& {/ z! ?; p# n  U9 r/ u3 y* t
  2972. TYA
    / ?( }  y  x# L8 T
  2973. CLC) H" f2 M6 B3 g* x
  2974. ADC #LOW(Sound_Bar)
    7 R; E( w0 O) {  n
  2975. STA $07F4
    , o, N# d/ v% [9 d% I
  2976. LDA #HIGH(Sound_Bar)+ S3 l' o3 \- Y
  2977. STA $07F5
    6 E/ E  @% w/ J, s7 F" V3 M+ j7 z
  2978. LDA #$60
    0 R2 o# D+ B- r2 \
  2979. STA $07F6' L2 X- |% W/ L
  2980. PLA
    . `  [: k' S% e& y/ ^& N
  2981. RTS
    6 k. `1 W/ H, O# W% U0 W! q) R

  2982. 7 S5 f1 W- J! m7 X6 c# P( s
  2983. .ORG $FE60
    2 i! w1 g3 |5 M; r4 u
  2984. STA $07F1. {$ J$ k" c9 \
  2985. CLC$ T6 l) \- X2 e. `( o
  2986. ADC #LOW(Sound_Bar)- p  q2 o, }( c/ t8 a/ v; P$ |
  2987. STA $07F4$ o6 ~% L& S2 z8 r' K
  2988. LDA #$8D
    : ]% X. p# ?/ m
  2989. STA $07F3
    * E* g2 Q. z6 J4 K
  2990. LDA #HIGH(Sound_Bar). Q) F$ _& z# W5 q
  2991. STA $07F5
    / A/ F$ [: C. z; E  G' C
  2992. LDA #$60- R# R8 |; u" |) x6 z1 G& _# a
  2993. STA $07F64 Q2 ?6 [' a# ~; ]1 p' e. W
  2994. RTS
    $ F. F9 e" B1 L( D; O# L' Z( i
  2995. : Q/ @. d* x6 @. i+ w( I, R
  2996. .ORG $FF40
    3 \: C- }) e0 E! g; i
  2997. STA $4000; ]9 |& J. V% {$ t5 N( `7 j# H
  2998. STA Sound_Bar + $00
    # b5 v$ N  B- g) o4 m
  2999. RTS! r) t$ E  E8 }: L6 L

  3000. ) S$ L& c# ?/ Q' G9 ]# m0 ~
  3001. .ORG $FF48! t" a: i& f: @- o; H/ G  y
  3002. STA $4004
    ) H. c/ V( Q- Q0 a" z
  3003. STA Sound_Bar + $04- f! {4 U7 R5 Q! ?0 v* P
  3004. RTS0 N0 n; R, U9 M9 m8 B: I

  3005. ! `$ S( G- ~& o) }3 L
  3006. .ORG $FF507 j; P3 Z6 c* D* D. D7 P3 t% t
  3007. STA $4008( I( l# v: K* ^; O# j
  3008. STA Sound_Bar + $086 j6 A1 k& ]( k, l) V) Y
  3009. RTS
    8 c  r' Q- t) b' ~. T) l5 P' C

  3010. : c) m0 ~$ R5 S% Y9 ~( E) q  z
  3011. .ORG $FF58
    , W: n- E% x, I* @$ T% g5 w* i
  3012. STA $400C
    . @: `4 F3 s7 Q4 `: Z' s5 a
  3013. STA Sound_Bar + $0C: j5 i# R- D$ T* W3 ^& ~( Q5 @
  3014. RTS
    2 U3 f2 V, d1 {& q7 x: _  E

  3015. 0 x; n; v- ~+ I/ ~8 j) }9 ]2 |
  3016. .ORG $FF60
    ! X+ q  B7 c. H: ?! Z* q+ M
  3017. STX $4000
    8 B% O  ?  T1 o6 \3 F: t
  3018. STX Sound_Bar + $002 r; g3 ?! }) I- `: G
  3019. RTS
    ! N2 H8 ~# Y  i" l% _3 d

  3020. . @5 c$ @5 b, `: O
  3021. .ORG $FF68
    . n1 X: ^7 ~5 G- N4 B
  3022. STX $40042 R7 d4 c2 [5 m3 g7 D
  3023. STX Sound_Bar + $048 G. `; R) J- t& X: i' A& K% S) I
  3024. RTS+ f& J: `+ x( c: v% Z  r1 I

  3025. # q4 ^) P4 s- `+ X9 S; C
  3026. .ORG $FF70
    & v; m% ^6 S2 B/ v. ^/ c* ^
  3027. STX $4008
    2 K  E) s) S; v
  3028. STX Sound_Bar + $08
    ) r! g4 S  L: N8 s! z7 c. E) T# A
  3029. RTS8 Z; U. o& v7 b, M, V' O% Q6 H% N2 H
  3030. + ]+ a  ]! h; O
  3031. .ORG $FF78
    1 F8 I3 f4 v0 V2 l+ w
  3032. STX $400C
    * e- |7 f2 G6 z- i5 |5 r
  3033. STX Sound_Bar + $0C
    3 A0 L5 t5 U3 i% z! s9 A
  3034. RTS6 m' U2 h, ^* \/ q9 @  f
  3035. - n4 m9 ^, ^# m$ p
  3036. .ORG $FF80
    4 {+ N: f6 P2 f2 p/ n
  3037. STY $40008 U$ _/ N1 i& R7 _( u
  3038. STY Sound_Bar + $00- }6 N6 ]& Y. o* Y
  3039. RTS/ E/ j, w; C1 i$ B( Z. J, U; H

  3040. - |4 G( _1 a' n
  3041. .ORG $FF884 X- V5 Q7 v: Y) W! |2 {/ P
  3042. STY $4004
    ) m. R( p. q" Z6 |0 [
  3043. STY Sound_Bar + $04! n- p' O8 A% `  q8 L
  3044. RTS
    : `. u" _% ~$ ]! \
  3045. 6 b1 o' ]! g2 D. _
  3046. .ORG $FF90
    & j. s1 w) i9 [
  3047. STY $4008
    $ D' Y  @: o4 @, Z, \% D! q
  3048. STY Sound_Bar + $08
    " A/ g( x2 B# F! e0 c3 Y" ?( i8 c# |
  3049. RTS
    9 ?, \1 H8 o4 r
  3050. 4 |& A0 x$ ^% r. t; q
  3051. .ORG $FF98; w$ M8 j, h$ D2 w% }
  3052. STY $400C( q+ M# C$ u9 t2 e. j9 A5 @
  3053. STY Sound_Bar + $0C
    : f3 I9 E: G; ?# A
  3054. RTS
    6 @9 @; L4 U4 k# d% o4 o
  3055. - ?( _! y: _0 B& S
  3056. .ORG $FFA0
    6 T. D% s( _$ P9 q2 b8 l
  3057. STA $4000,X
    " F2 l' ]) W5 F8 L
  3058. STA Sound_Bar + $00,X! \% K) C; Y! j8 X. T# m
  3059. RTS
      i% ]: f8 c- D! J7 r5 s: L& O

  3060. 2 o* ^5 G9 F" q* d
  3061. .ORG $FFA8
    " T: f' [" h( D4 Q
  3062. STA $4000,Y
    , q: F, J4 ]+ L9 m6 u
  3063. STA Sound_Bar + $00,Y
    1 f1 j. j# D- c& h% x9 f, F' T
  3064. RTS5 W# B5 T2 C9 \0 t. q

  3065. . N6 s# F4 V6 v
  3066. .ORG $FFB0
    $ @8 E6 k1 @! B- X: z# e
  3067. STA $4004,X& E  `7 H; x; J+ {4 k3 b0 V
  3068. STA Sound_Bar + $04,X. _) Q, `" s! a( I
  3069. RTS! L  G% w8 f5 Z8 A" k
  3070. ( T9 R& o% r" O6 m6 ~, W
  3071. .ORG $FFB8& e/ P2 |. u: u. m% d& W. L
  3072. STA $4004,Y
    ) y) G; V' R7 t8 q  t! U
  3073. STA Sound_Bar + $04,Y: Q, I/ Z8 H" v* F. ]
  3074. RTS6 M0 K5 R4 _5 _5 z7 n' D
  3075. : X9 h0 ?7 o4 A
  3076. .ORG $FFC0
    1 Q1 `$ J+ P  W0 t
  3077. STA $4008,X
    + e7 O) M& q9 y  H# D
  3078. STA Sound_Bar + $08,X
    2 |* L2 w8 D, z* q* X/ _2 z! V7 K
  3079. RTS* X6 g5 H% N- M  |
  3080. - j8 U; c; {: ~1 a0 |
  3081. .ORG $FFC84 S8 I* e# ]5 K. P
  3082. STA $4008,Y4 x) j' n6 J9 K9 @
  3083. STA Sound_Bar + $08,Y, K; c7 g+ ~' I# v) b& X9 R. b
  3084. RTS8 T0 d, d. S; z# w9 l! `/ b
  3085. / K6 V- w4 O+ c  C* A
  3086. .ORG $FFD0* u, r7 a! |! B8 \' H: E
  3087. STA $400C,X6 J- x) B' _, c+ c1 B2 u8 Y
  3088. STA Sound_Bar + $0C,X
    , P8 Q3 \: H7 b! @# R
  3089. RTS
    # ]1 W2 j! \6 N
  3090.   U# u/ m4 ^1 ?$ t# z& c
  3091. .ORG $FFD8
    * h0 p1 m) s$ h) `& U& J- [$ A
  3092. STA $400C,Y
    ( J: {8 C, Y6 a% x% d7 _$ c
  3093. STA Sound_Bar + $0C,Y! F5 N; i9 }1 i3 T$ |1 Q
  3094. RTS, X6 O2 a8 x; Y& |! i* M: o
  3095. & [! z: G  R+ [  V- d1 q
  3096. .ENDIF8 S, w3 s# X3 C8 t' v
复制代码

- b& i9 D8 i+ t4 C
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3356 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 03:25 , Processed in 1.081054 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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