EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
& |* m' Q3 y# x( [8 U+ h0 q( W! m- N; e
[FC][音乐12 IN 1]7 T; l" R1 V7 u# x) Q
时间: 2023.07.23
- S7 |, p& R- X/ m2 F作者: FlameCyclone
  L9 W: [6 g9 L) H! b
! E% Z2 {4 m7 W. d  z收录音乐内容:
1 B3 `4 f3 F0 p1.Raf世界9 J5 g, G8 E$ ]9 P
2.最终任务
' V  X, M& }. m* Y& L3.赤影战士; f: z& t" O& ?7 G- f
4.双截龙
3 ]! p2 ~6 U6 t9 F4 V/ ~5.双截龙2
% F8 \. L' i. A/ H6.双截龙35 ^# D4 j) T2 B5 U) g9 ~) _( H
7.洛克人0 A/ ^- B6 L8 v. _0 I( l
8.洛克人22 u8 ?/ i2 f- f% V# r5 j
9.洛克人3
, W( i' T  L/ v; c. D0 R; c$ j# l10.洛克人4
& h: X, I" C/ d6 ~11.洛克人5/ p5 k+ w$ l# D/ x& u5 `( y% p
12.洛克人6/ g7 {- D6 j6 Q3 q
% {5 \3 t! p  E1 d
操作:) F7 U6 M" g' `1 T
上键:         上一个专辑
( N8 |6 M4 k" {  i下键:         下一个专辑
; I: N9 ~  n- r0 c% h/ M3 d* S左键:         上一曲) d7 C2 l9 E! K) @  `# Y7 A" A
右键:         下一曲
- X& t7 b3 l; p+ ]8 j- B& K% U; hB/A键:        前10曲/后10曲, \1 B1 P  L( ?" K: c
选择键:       下一页
, e4 D: m2 J5 J  @* ]开始键:       停止/播放
/ D) O/ m: J- |; Y, E
/ m# Q8 A9 a" c4 A$ B, Chttp://flamecyclone.ysepan.com/7 n3 `* P  D" V2 O, |& K0 `

; Z; I. `3 Q6 m- C( A7 W" t& @/ t) ]8 q- ?
( p) I% _0 I9 O4 J
1 \" M' D- Y" S+ f2 `1 F- V
  1. ;[FC音乐][播放器模板]
    9 t: b1 S4 q! _' E) n8 F
  2. ;FlameCyclone 202307102 U8 x+ t/ [7 h! f( j1 V

  3. 2 k4 y' w  j, f$ i* e! \
  4. ;文件头
    ' \6 T- x# M1 B" |
  5. ;======================================================================$ L. f$ N! l) F& B" y
  6. .INESPRG 16                                             ;16KB PRG 数量
    1 z! \  V  T9 x# J/ f2 [
  7. .INESCHR 1                                               ;8KB CHR 数量
    ' N, ~8 ?: u0 Y. Y) J8 X9 S8 l
  8. .INESMAP 4                                                   ;mapper 4
    8 H* D8 d" s2 b7 t4 y0 T6 |" f
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    # y. |& c! R0 p0 Z% n# p
  10. : b9 {* B3 @# [
  11. ;==================================================" u3 ]0 s5 Z4 |, }! ^: X
  12. SOUND_BAR_SHOW_ENABLE       = 1
    ! k) v" ~$ K+ m/ u: O5 N9 p
  13. ;==================================================
    ' f) W+ B; @' l' E2 N" |4 P3 m
  14. BANK_DATA_MASK              = $1F; n! j0 t% g% c( Q: n
  15. CHR_RAM_ENABLE              = 0, }2 [7 H$ I: V; W6 f
  16. IRQ_SCANLINE                = 1367 ?$ Z9 N. W6 j( ?
  17. ;==================================================
    - M9 r5 u$ |5 o4 d
  18. SOUND_DATA_BANK_00          = $00
    0 k1 h0 i2 w7 f
  19. SOUND_DATA_BANK_01          = $015 l0 p5 {1 @6 W, X* K# b
  20. SOUND_DATA_BANK_02          = $02
    $ p9 ]% ^7 ^; X+ T% R
  21. SOUND_DATA_BANK_03          = $03/ @# g9 ?/ o- Q$ l: [
  22. SOUND_DATA_BANK_04          = $04, c% S! R: L! d/ V& B/ @5 T" ?  N8 y' P
  23. SOUND_DATA_BANK_05          = $05. |7 G# Y. v% s8 v- s+ @3 u
  24. SOUND_DATA_BANK_06          = $06
    5 d+ l& H  [# y) W; e& V8 z- k0 u4 {$ a
  25. SOUND_DATA_BANK_07          = $07
    3 O# e& x% G- ~, \' w0 |
  26. SOUND_DATA_BANK_08          = $08
    ( s. G9 t4 e  f# T) _5 R
  27. SOUND_DATA_BANK_09          = $092 i% e7 P5 z' n' F/ O: K2 y$ R
  28. SOUND_DATA_BANK_0A          = $0A# p' U5 X! K% h2 b$ u0 `
  29. SOUND_DATA_BANK_0B          = $0B- R; y9 F8 j7 b1 j$ V
  30. SOUND_DATA_BANK_0C          = $0C% U1 G# x+ M" B: c/ ]; S
  31. SOUND_DATA_BANK_0D          = $0D. T' t4 c! g7 O0 U7 R/ I
  32. SOUND_DATA_BANK_0E          = $0E  ^! s+ ^: Q7 _/ t. j- u3 l' e7 k% p
  33. SOUND_DATA_BANK_0F          = $0F
    & H& Q$ i/ e- [4 d
  34. 6 ^3 ?4 Q6 ?, n" s
  35. SOUND_DATA_BANK_10          = $10
    ! O. ^# j$ Y- e
  36. SOUND_DATA_BANK_11          = $11, K/ J2 _$ U! L* c/ m6 ~8 r
  37. SOUND_DATA_BANK_12          = $12
    8 \0 L9 @4 ?! r$ d) q
  38. SOUND_DATA_BANK_13          = $13
    ( J6 ~  G( C- ~/ x' a! z
  39. SOUND_DATA_BANK_14          = $14( r- z7 ^9 \0 d8 `% o' `
  40. SOUND_DATA_BANK_15          = $15' b/ b+ J* ]8 J
  41. SOUND_DATA_BANK_16          = $16
    $ t: {2 \( u: A' ]; T8 X
  42. SOUND_DATA_BANK_17          = $17; V) z% A3 K3 Z
  43. SOUND_DATA_BANK_18          = $180 [" ?8 @0 C+ b! z  @8 X
  44. SOUND_DATA_BANK_19          = $19$ G7 R( y% R( x6 i& j& u/ v% p
  45. SOUND_DATA_BANK_1A          = $1A- P% A: a% d0 W) N# ?/ @
  46. SOUND_DATA_BANK_1B          = $1B- e' `+ U4 P2 Y; g7 B  f3 }+ j0 \' q0 |
  47. SOUND_DATA_BANK_1C          = $1C
    7 q/ d3 k' x$ u( v- Q
  48. SOUND_DATA_BANK_1D          = $1D2 z' ]6 z6 J  Z/ g' \# u- g
  49. 4 P/ A: w0 L) ^( p. O# H4 B
  50. SOUND_DATA_BANK_C000        = $1E
    ' ^: ?% M" U4 V% |5 ]2 I0 N0 Z
  51. SOUND_DATA_BANK_E000        = $1F- u4 y- C, K8 ?/ ?2 c
  52. ;-------------------------------------------------2 j+ k3 X6 I; I5 @+ _+ q0 ?$ j
  53. CHR_DATA_BANK               = $20
    " M8 i0 v7 U# E2 |4 u: y4 L" U
  54. CHR_DATA_ADDR               = $A000
    ; S6 a  ?9 ]$ z; V$ s' f
  55. ;-------------------------------------------------# b* G# k( e: y. ~- R+ L- i! U/ b# M
  56. PROGRAM_BANK                = $00
    4 D! O" U3 T2 v! @8 ], o1 D& T
  57. PROGRAM_ADDR                = $8000, C- h' g8 f) h6 C' @  C
  58. ;-------------------------------------------------# ^" v2 U0 l3 W& Q6 R5 ~7 @- e
  59. RESET_BANK                  = $1F: T" w* t0 n1 @! c
  60. RESET_ADDR                  = $FD00
    + F) H$ D2 X1 Q* H; v8 ?

  61. ; x7 ?% Z8 U. ~) `& L3 W# J
  62. ;==================================================' O" B7 T: f; e7 P
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    6 w4 S0 L  l+ I% l
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    & L! w2 x! S# a" B! [  f1 \
  65. PAGE_SIZE           = 5                     ;每页节目数
    8 p. s! q$ n0 Y1 Q) p3 \8 x8 N- _
  66. + M; f1 r- w) M
  67. ;==================================================
    ) X2 H  S& B5 T( K+ }
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除# ]& X: H& H. W2 z$ P7 d  E. H: |
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数+ p/ y) ^+ R" L, c( a, Z* X
  70. .ELSE% Q8 U7 z' c" H  j( O. @
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数$ M3 P7 @4 J, L9 w
  72. .ENDIF4 w! \. Q  r' j2 {, M% c% v  p
  73. / S1 s. Y# z- o; J
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引+ ?- o% k& o2 k! ?) ?

  75. 2 w$ ~& e( ^) C
  76. ;==================================================7 J2 s1 d$ d2 V
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    7 L) G, H' J% F! E, J2 i
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 25 y3 `) a. i1 t. t
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;4 B. {  I0 f; b  a
  80. ;==================================================8 N3 e7 ?" m6 @: @0 H) O2 ]
  81. Caption_Text_Pos    = $204D ;标题文本位置& l& v8 C3 Z- l1 E6 X( k2 N
  82. Author_Text_Pos     = $2324 ;作者文本位置* w, X1 X7 C/ u
  83. Date_Text_Pos       = $236B ;日期文本位置
    ' M5 a4 W. u- s% n) m3 L7 U
  84. ;------------------------------1 ?; c( P0 q( h& n- G" @
  85. ;------------------------------
      @. w7 z; c6 Y) o- C) x5 a5 m+ J
  86. .IF SOUND_BAR_SHOW_ENABLE. m$ V1 b' |3 b" y
  87. ! p8 B" t% {3 C* Y% d+ P
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    6 c8 V; G9 @4 G7 b
  89. Play_Time_Pos       = $22B3 ;播放时间位置6 }8 M1 p0 D1 N3 u( q6 Z% `
  90. Play_State_Pos      = $22F3 ;播放状态位置
    ! j- x0 @0 A: h( E- R7 p+ U
  91. 3 a4 R9 u* l) C  L
  92. .ELSE, k$ t, j5 ^& `, R; d

  93. ; X6 e! F( L" B7 A; Y; P
  94. Play_Index_Pos      = $226C ;当前曲目位置
    7 F" V8 u0 _6 q' t
  95. Play_Time_Pos       = $22AC ;播放时间位置
    / m& A+ W" y; X7 k$ ^. @% I% [
  96. Play_State_Pos      = $22EC ;播放状态位置
    4 Y. F+ q( J! G( a6 s
  97.   G& T  C8 ?9 S+ J( P7 e% ]
  98. .ENDIF
    # y+ }: }) Q1 O9 p6 ]" v! U: u2 \
  99. ;------------------------------+ U- z0 ~. }' D2 R$ W8 B
  100. Track_Name_Pos      = $222B ;曲目文本位置8 H! j2 Y. |6 f* }' u5 D6 W2 ^
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    2 K; T1 q4 M5 d: ~. q6 G
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    , F: D: w6 S% T' G, T
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    $ j/ l5 Y* L( w% `, Q0 W5 D
  104. ;==================================================$ I& n0 `& [9 T, p$ K# V. t& ~
  105. Scroll_X = $00
    - |% x8 Z! M8 g+ `
  106. Scroll_Y = $00' f( b; l- ]3 Y9 {) D
  107. ;==================================================! G# c+ _, ^# D+ D3 b8 [
  108. Sound_Ram_Addr_1       = $0100
    - b5 ?5 n$ J1 T0 X$ n# R$ d1 M8 C
  109. Sound_Ram_Addr_1_Size  = $80
    ' Y, m: m( n" Y
  110. Sound_Ram_Addr_2       = $0090
    ( |# L( j- n4 A( A2 ^8 Z, y
  111. Sound_Ram_Addr_2_Size  = $703 j0 G( C( `: O# {. m3 w6 Z: D; a
  112. Sound_Ram_Addr_3       = $0700
    ) A$ y' d+ Q& q0 y, w& A+ S$ j' |  W
  113. Sound_Ram_Addr_3_Size  = $00
    . p! N' {5 _) s1 t
  114. Sound_Ram_Addr_4       = $0400
    ) ~3 @, k' R7 }" D, K& C) k
  115. Sound_Ram_Addr_4_Size  = $003 ?% A1 f. @1 {( C$ U' i# w1 {
  116. Sound_Ram_Addr_5       = $0500+ M" R) L1 G" H* N3 b
  117. Sound_Ram_Addr_5_Size  = $40. \  h# [6 W8 r' M* i

  118. . U: P; H8 T5 X+ Z/ R
  119. OAM_TEMP_ADDR   = $0300
    & p3 Y1 |$ c9 O, {) D* y3 e4 V
  120. + o& n6 V! N3 G5 i) ?% f9 ^
  121. ;==================================================
    ; Z; z) g0 v" L- ~* B$ a$ N
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器& b0 {* K! j8 Y4 m0 P' Q$ H
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    9 ]* l" f% k9 J( x! N
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位2 |2 K4 ]8 Y: ]: a1 [: ?
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1+ N% n, k3 {4 {: o7 d! G. A
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1/ _2 {5 [& l9 Y% g
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    % P, z4 f" b! p) ^/ m, Y
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加0 y( z, k9 n6 R1 k
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    # j2 S/ W  |) e  i- b) I+ E
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存. i/ C4 @$ D2 v+ o; p1 x
  131. APU_STATUS              =   $4015   ;声音通道切换+ a6 e/ K' z6 h$ H* x+ l
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通8 s: x% m9 h) o/ @2 q! H& I" E
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通1 S& m. k+ p  ^7 E4 J
  134. ;==================================================0 x$ m0 H; n/ Y! x  Y
  135. MMC3_BANK_CTRL          =   $8000
    - V! L' c  a; Z5 I' V- g2 M& o
  136. MMC3_BANK_DATA          =   $8001
    ' D* W7 V* M  Y' v  j! J* y
  137. MMC3_MIRRORING          =   $A000
    1 R; s! Y! ]9 A, i" u
  138. MMC3_PRG_RAM_PROTECT    =   $A001+ D, f0 D! M% y& O
  139. MMC3_IRQ_LATCH          =   $C000
    " x; b' R3 F  L5 ]) p6 U' N  d
  140. MMC3_IRQ_RELOAD         =   $C001" }$ m" v, s2 \/ K/ C
  141. MMC3_IRQ_DISABLE        =   $E0005 O9 L* n" K( p* @
  142. MMC3_IRQ_ENABLE         =   $E001
    - B, Z/ v, C- ?& [5 W% q) T5 Z3 D

  143. / e' q- b& d& M3 r  }
  144. ;==================================================% ]3 d  Z* q2 u  K2 m+ ~: K! Y
  145. PPU_Addr        = $0200
    # t0 s  y% z1 G  b8 b5 Z. x
  146. Palette_Addr    = $02C0
    7 g9 K) S) k* j. u) h5 i! e4 @  @2 O
  147. Sound_Bar       = PPU_Addr+$E0
    ( n+ H, Z( `0 V
  148. ;==================================================0 K# c5 T* A4 x, O
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    - J# U* O2 p$ Y' w# F( o5 q4 _
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11! b; v; k  h  P& _- m
  151. PALETTE_UPDATE_MAX      = $2C
    7 H. [9 h8 L% Y: h' ~+ y+ U
  152. PALETTE_UPDATE_MIN      = $21
    ! y. k1 ^+ L* o, w0 z
  153. PALETTE_UPDATE_INTERVAL = 602 G! Q3 G$ E5 k) |! I( z
  154. ;==================================================1 G! O+ m! b# K$ t; h
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    & a' i2 m2 \( d7 b
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    % H7 K- a0 e7 r7 ]+ M/ f+ `8 V
  157. PPU_Addr_H          = PPU_Cur+$03' {. C: O( N8 C$ Z
  158. PPU_Addr_L          = PPU_Addr_H+$04) a& F5 @% j/ U; }# m
  159. Screen_Ctrl         = PPU_Addr_L+$01% I; U. S1 ~* l9 `* u
  160. Screen_State        = Screen_Ctrl+$01* k- P; f8 V/ i6 [! c( \* j8 {! j
  161. ;==================================================5 l9 U* a* ~6 e4 t: ~9 b5 `" S
  162. Use_Ram_Begin       = $50& V$ Q) g% j, f
  163. ;==================================================$ n; E6 z! r  |4 k
  164. JSR_Addr_Op         = Use_Ram_Begin! o3 j# G1 F- m- [6 C* A2 p
  165. JSR_Addr_L          = JSR_Addr_Op + $01, G3 v  J; i  g  t
  166. JSR_Addr_H          = JSR_Addr_L + $01, ?. D0 O. K( T- _# l" M% a, n8 [
  167. JSR_Addr_Rts        = JSR_Addr_H + $01- z1 S% d0 A* O6 a' w/ f/ D& e3 e
  168. Data_L              = JSR_Addr_Rts + $01' z: x$ c( Q% n2 M5 p: J7 p
  169. Data_H              = Data_L + $01# n' ^" B- H2 n' T+ y" V
  170. Data_Cnt            = Data_H + $01
    ! x+ I0 z& w7 J7 V7 x
  171. Data_Buf            = Data_Cnt + $01% o' D3 H5 F; b/ D0 S6 v
  172. Nmi_Time_Count      = Data_Buf + $01) K0 S; }" R5 J: [
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    / C% X" D8 \- n4 ?9 D; }2 F3 X. b& [
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    0 Q* Z' l0 Q, e

  175. & M( C/ @8 K( V$ y, d
  176. ;调色板刷新标志3 m6 ?  B* m- a1 h( ~9 c
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    5 N4 }4 \+ D6 z4 l: D
  178. + v* E6 f' M* |/ m
  179. ;当前帧文本写入禁用标志. f  ^, _+ i: ^. q6 {
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    0 b$ R$ z' n4 v5 V) f. K
  181. 0 Y; \( A) G; H+ ]2 z' A
  182. ;==================================================7 G8 x8 C5 K* I4 m; w0 t
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    ' a% a8 C. k$ F  A
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条) b3 n7 ~/ H! u3 R
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    . S% v0 x  x" x  j, N4 s0 Z" c( r# D
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    * j; k$ t4 r* `9 h
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间+ A/ G6 i& Q; h. g4 V. ]
  188. ;==================================================. Y7 R1 V% t2 j) W# C; d/ h+ R
  189. Key_Keep            = Text_Disable_Flag + 1
    5 l8 ?1 U# K6 X' F- h: A
  190. Key_Once            = Key_Keep + $01
    7 Z9 D3 c; x" G9 t( _& C5 Q# X
  191. Key_Kemp            = Key_Once + $01
    0 ^1 @8 l3 {  \  i
  192. Key_Temp            = Key_Kemp + $01' Y  b" ^, U# T/ a% m" W; ^# u
  193. Key_Getv            = Key_Temp + $016 @  R: b" f% L  F  O: m
  194. ;==================================================8 R! d/ U1 \+ w" e. z* C
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集# Y- j0 a' p. Z/ I* S+ y
  196. Music_Item_Last     = Music_Item_Cur + $01# X" T1 z, Z! ?) v  u2 i7 ?
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    4 y/ {; h7 h+ p
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    ; N3 z& S7 ?0 i; _
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目  L1 A: H% ^' ]- |% C& J& _, j2 j6 i
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    8 F* M( `3 h, B9 b
  201. ;==================================================
    3 B/ e4 w; N+ b; f4 L* U3 |$ d
  202. HEX_Data            = Music_Stop_State + $01
    1 E. c: O; R. j1 _% K
  203. DEC_H               = HEX_Data + $01# u! D2 [0 d- K/ t: T2 R
  204. DEC_T               = DEC_H + $015 B) x+ q+ @5 E9 J" M
  205. DEC_L               = DEC_T + $01( O% @. v- N2 \0 \1 ^
  206. ;==================================================
    2 S4 L; c' K1 Z3 Q
  207. Time_S              = DEC_L + $011 {$ j' c( V* D. @; _! ]
  208. Time_M              = Time_S + $01
    . d+ R1 \8 a9 h5 _% ^0 j" q
  209. Time_H              = Time_M + $02
    1 L! X0 H9 y3 K6 g
  210. Time_Cnt            = Time_H + $03
    $ G) h" H7 E0 L

  211. - r* s, p% r) a9 X
  212. ;==================================================; v: n. ]) m) G
  213. Music_Bank_8000     = Time_Cnt + 18 d0 [; w6 T! M, y0 B- j* z/ A* y- }
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    % Q6 T3 ^! [5 K/ s1 o' S
  215. ;==================================================
    - I+ U8 _7 q+ m8 D: b3 ~
  216. Scroll_H            = Music_Bank_A000 + 1
    / U6 Y8 @% ]7 i2 h6 d2 Y1 m
  217. Scroll_V            = Scroll_H + 19 X3 q, n; t! r4 T9 {$ I7 p
  218. IRQ_Process_Index   = Scroll_V + 1
    / P* w0 o5 ^8 o: a9 a3 O1 U
  219. ;--------------------------------------------------
    0 O% |- R8 w3 {2 U7 D5 P( D
  220. Page_Cur            = IRQ_Process_Index + $01  A8 Z$ z5 R, H1 c
  221. Page_Cur_Index      = Page_Cur + $01
    : Q0 r1 X7 ~8 S0 t% j  }
  222. Page_Cur_Cnt        = Page_Cur_Index + $01; Y: H5 B! F# [3 ?
  223. Page_Last           = Page_Cur_Cnt + $017 Z; \/ Z( i  F
  224. Page_Last_Index     = Page_Last + $011 v- v& y$ ]0 `! w; v- _
  225. Page_Last_Cnt       = Page_Last_Index + $015 ?; G, @7 u! d, E; p
  226. Use_Ram_End         = Page_Last_Cnt + $01% w# V+ l7 }6 M- E
  227. ;======================================================================( x9 w6 O2 X) A4 T  ]" u
  228. ;音乐数据块
    " {, E9 k8 k' h5 H9 Z! r3 k
  229.   |, ^# Z: I+ A( \6 r# {9 w
  230. .IF SOUND_BAR_SHOW_ENABLE6 G. e  E( a0 ]$ l5 u* v: ~
  231. / x3 l" R( K/ ~* C0 w# U0 Q
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK" J, z8 W- D2 P- g+ w
  233. .ORG $9000
    $ T# m& v6 @, ~# ]
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"3 \0 J8 c( V* u! t
  235. . E1 u8 s! h% u6 Z
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK/ S$ A% g9 O9 M4 Y6 {3 S$ `% B
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    " E* q' s( e5 M6 o7 p% x2 V1 G
  238. ! s  K: a5 f- J
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK" l/ B5 Q% z4 y, r* p) M
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    + ~0 r" [2 u8 ]1 z* J% ~1 z; F

  241. + l  y: H4 [2 b, c) B# b
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK4 l# }. v' }7 R2 N: n1 m5 }
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    $ Z. o  r5 T% p2 z

  244. , F, {, b. j5 a  ^& S& w; ^  d
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    , T0 Y# n- [5 _0 F0 V
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"2 J- u& S! Z: M/ D: A6 d* {
  247. ! R; M0 J& x4 W) s
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    ) m8 [+ Y- r% w
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    ( O! J  J# Z" s/ M7 J. e
  250. ) W+ q  R- N$ Y/ B0 u+ W! t
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    & ]% Z( R. I2 q" W1 ?
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    6 l; |: T' `) g, W, o
  253. & Y! Q2 C, T, T1 ]3 z
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    / j8 g' D1 H! v+ ?
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"* V9 ?& o. q8 w

  256. 4 X! a8 a4 b' K  E. ]9 k
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    0 l1 Y; L7 t9 e7 a) a: T2 \6 r
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    " B6 B0 D3 r3 w

  259. 1 n% f: |/ H( R% f3 ?
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    7 W1 X- ~$ W7 C: K- |5 d# K
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"* U* G' G( d4 d2 g2 Z5 J

  262.   |' f( |5 l( c) c7 _0 e
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    5 [1 t6 ?, k. ^+ K4 a( i3 \
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"2 v1 z& ^2 }% r- S! T! l0 S
  265. " l% u: b9 m$ g+ ]
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK( K" a" O# ^% A( _
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    2 j: R- q3 Y* W0 F0 e

  268. " ?# X) q3 M  V9 Y
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    ( U+ l* l, r; h
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    $ B( h7 Q# t% O% A8 i, P
  271. 0 J- H4 H- s! m7 i
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    , b6 ^! F% V2 t  Y. k5 W! [
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"* Y( i5 W2 k1 [
  274. 4 e; J& @% C$ {- T" ^: T8 m
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK4 U. a+ s  B4 |# F9 }9 G$ C! _
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"6 _6 z  a7 t9 E" G3 Q2 k% U: N
  277. 1 i6 x. d" }: N- w
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK0 c+ P8 g0 ^, l7 W) c
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    ; F4 d9 M0 E. _9 Z
  280. 0 G8 s- n0 _; [
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    & \9 z; }  W) N2 g8 ~0 l; T
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    9 S5 [% J( `$ k, k( o) l' ~0 S

  283.   l6 w; o1 u+ A! F: {
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ) a9 H$ ?9 y! \' ^1 h$ S
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    0 U7 Y  R+ d  p% n3 n5 P! O" h& C
  286. 7 I6 [8 A" R) Y
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    6 \% C) J% B' Y, ^
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    2 o* [0 S" n* A' z! U/ h# a* c2 K

  289. ) n( u- H6 d7 R* B$ H$ C2 D4 x
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK/ Y9 \+ p% A  J: ]' s
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    , X9 p6 _6 ?: b4 B7 T

  292. ; p& L  P$ _; T; P" N( t
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK- v" O6 z6 j' z# p% W' U0 ]$ _7 g) w
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    & a3 [/ v' b! [* y

  295. - R/ u4 \. u0 K0 H: _6 z  f6 }
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    % V! F# C3 `4 e% s
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    : L0 v- g" y) |2 k

  298. % B* R8 ~2 C4 D' _
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK! U+ @) a) V! k! i% d
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    1 O5 `* |- x9 ?- w( Z6 z9 @5 B9 j" ^
  301. 6 d3 `  \5 L" T+ k. b. E+ F4 ^6 d
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    , C" z. a9 }0 {! B" Z% \7 E, m
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"( |: h# `1 s1 B; `
  304. $ c7 Y! K$ s: w
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK6 L3 r* S0 v7 V" Q* m3 o4 q" t. E( R
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"+ F$ Z; s+ c! l: Q' Q! l

  307.   }4 N' K% l8 ?' V0 `
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    % C: G$ W1 _( E% S: A
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank", ]/ y$ Z8 t$ }
  310. 7 U5 {3 D, S9 J2 u9 C
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK2 B$ r% f& T' M9 r; o3 O! C: S3 _2 h
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"+ K6 j  Y  \( Z/ d$ _) t
  313. , ]* m0 h% W5 R+ T0 }1 F, ?, `
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    9 }, V( x6 \2 N( {: N6 H) G
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"2 j- \3 g, B' ^5 [* s
  316. " u: [0 v( I! P; N3 G' }
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK4 p- W( ~! N* j, s* n3 a
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    1 X3 d' @2 M9 f- w2 F( S
  319. " X0 E- q: x! q; N5 ~4 k1 i
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ( m3 e& t" z/ }. }! q0 K
  321. .ORG $D400# E( l3 @5 T- \  `4 X* W! o1 D
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    + Y1 y4 _: l: O* z
  323. 1 k9 N' F3 B5 ^& E' n1 V4 L9 h
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 g" u% F% C7 ^8 {
  325. .ORG $D800
    9 o5 ]2 q$ N3 A* h' \
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"; V2 O" [0 [, S1 k( N$ [

  327. # P; j3 g4 p7 F# L0 U  k

  328. 3 @. B9 Z3 J1 ^8 v1 U$ K
  329. .ELSE
    * ~5 A6 ?, f# [" N

  330. 2 P9 D0 u8 A8 j! d
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    9 \3 g' G% f$ n2 s9 T
  332. .ORG $9000
    / c0 ]( ~6 d$ ]/ E
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    $ L/ E/ O: b* k

  334. 4 \4 [% i4 g% g% a) k. g
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK' W" m$ d  p' w) g) ^$ i
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    $ B) W, I1 G  q7 n

  337. & h- z) h' [% S$ a. v% Y: C/ F
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK8 E* q/ P: p, Q! z! C1 N3 W2 E
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"9 q& w6 B) p2 `5 \$ D
  340. : t  v7 d0 c/ \9 a9 `; A6 C
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    + c3 I! k0 t6 R& B: ~" C3 C
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    , T& E5 p+ ^7 h, ?% ?! A$ b

  343. # U  @2 y/ i3 t1 C' @! a
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    5 A( H5 ]# h, \% T! y, z8 {
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"1 `* U& y# H+ G8 c' L

  346. 6 `  S, x6 B2 s6 C5 O  z/ X1 u
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK7 s9 }- C/ \" R6 O0 h
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"7 o, e$ `. H1 H- ^

  349. 9 ]2 q8 c! z) ]9 E& K
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK( u9 v5 D# D+ R# d( Q3 n6 X) Z
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank": C6 H9 B/ d7 e: B6 \! m) g* v3 O
  352. $ |: e" c& }! e/ t% Z0 T/ ~5 \/ Y
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK3 v- P9 [# n( W, c
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank": p8 p; m3 Z, h
  355. 7 i! L: b5 d) I0 Y, c0 K% J5 w$ R
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    . ]3 ^5 q5 E' N& o/ |6 f8 n1 s# z
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"! \4 C( K1 t$ Q9 Q; L/ g1 p+ s

  358. ' A) c6 a  I- m5 E5 s0 A' {
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    9 D- [% |- D8 ~, L+ e
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ( x& }! O/ k% U8 n. v% Y. G0 Y, x  C; b

  361. 6 X% ?; V# J3 v' [6 _, G5 t
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    ( h/ z1 Q! w/ f9 |# A+ J& p
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    " h, ?' n. w$ Z% K6 y3 s
  364. 6 O1 U! Y2 t' {
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    : W# X; Y" l% o
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"% z0 u0 {9 {8 V0 v9 d6 z# Q

  367. 2 G% u; B7 O4 u. A5 @$ Y
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    3 u3 Q3 W: n! `* p9 w5 r1 \& Y9 J
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"& N# `7 D" L. ^8 v
  370. 5 V) m2 |3 L( j, _4 v* Y9 G
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    4 ~! T8 ~( M6 R
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank". l, a+ Z3 U5 ~8 Z
  373. - i0 P6 g1 m% K* G/ n' R
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    , T. \6 }% ]8 ?! Y9 Y/ G
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    ! `1 x4 l0 H7 B4 L* @

  376. " t; A1 X$ {; ?5 L
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    ( u" t/ n7 M0 q
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    & f  z2 m- L4 }+ f  v2 i

  379. * h* P8 _# S; b+ L( M& E
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ) Y) x2 c- q+ o, k
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    3 Q7 {& Y4 H" A
  382. 1 r7 r% u5 S4 Y$ I, n/ G
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    4 V+ {! ?5 P, T8 f: g6 C9 O
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"5 W% C$ D  A, p$ T! q6 b! O7 a7 f

  385. 9 i, j) m4 s4 V% q3 _) w
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK$ I2 P& p( q) H3 j9 f* g) F: C- z
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    1 T+ P3 D4 t$ r& D7 F- g6 ]

  388. 5 s8 o8 }; l+ m  R
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK0 X$ I8 f# \- u4 N. I
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ; O# D9 \$ z* [6 |1 x; N
  391. 0 C, Y, C- _0 V. x3 c
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    9 w( U0 d- x/ w
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    ' t2 l1 W: {1 X3 n, a- t$ ~& I
  394. : `/ X2 O* ]* z: C) A8 i- Y
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK- W; m3 y: D0 X9 N2 p" F4 {
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"9 N* O& k8 {' d/ A% v( B

  397. 4 G& d/ S* @+ u
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK- t- m& ~/ p6 r5 i. \# Z
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    1 p# l0 E2 Q& U* C: I; R
  400. 6 e6 i" Y: s" j* m
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    0 [- G. Q- A- a6 D; N
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"8 Q8 J# p( F+ c, \1 p+ q3 ]) o# p

  403. , F9 b! c" ?" d2 w6 S4 [
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK' b* O: E# T  X/ g0 h5 f
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"; G  s5 q& ~* T0 O' j
  406. 7 Y, u& m+ Q4 b1 C' N6 ?1 M
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK# s: `9 }. L7 U; \( r0 u
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    7 S: d" }' T0 X/ n& n; l1 @

  409. ! G4 _) _$ F' _5 A& U4 I) u. v
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ) ^. C! [: r4 x& k# V% G
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"9 }# d+ `% U. U) T2 ^& Y* {5 a
  412. 9 y) H, I6 H2 B
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    : g6 r. u3 Q9 a" l2 M
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    $ |9 g5 a5 v: E7 t

  415. 4 G4 w" `  ]  U: u) P
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    / G  @9 @- y7 C  R$ S" M
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"% |9 ]8 T; r+ k5 N% ?

  418. 6 B3 U3 O$ |* r" B
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    . q9 V1 y) G' S0 O1 y  w. U
  420. .ORG $D400
    " q2 A2 x+ G4 ~  m/ j7 r- Y2 I9 j
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    " Z! e) S- ?  R

  422. ; {6 C- Y0 |9 `8 K4 [+ \/ ~
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    " j( d3 ^# q: ^+ N2 j4 h! h
  424. .ORG $D800
      [4 n# G! i0 R& @
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    / V! o) C7 q2 m# j1 O; V+ B! K

  426. ( E& W8 l+ J! V1 v
  427. .ENDIF
    8 q) V7 \  s0 C  S  l4 y: Z7 S3 X
  428. ! ~, s2 R  y7 d3 ^
  429. ;CHR图形数据) k9 R6 P, R8 C$ U2 }# ~9 i- M
  430. ;======================================================================
    # [0 C& o! H/ B' u
  431. .BANK CHR_DATA_BANK0 U: h8 b8 ^& V8 p4 g) b! t9 p' S
  432. .INCBIN "chr_bank/chr_data.chr"- Y9 M: d" s. |8 A
  433.   q7 }: G) I/ {- {) o
  434. ;======================================================================7 p' E7 }6 _1 G; j! F+ a
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK$ O) \! _4 R1 M1 r. H1 Y) \; i- ?
  436. .ORG PROGRAM_ADDR
    ! x3 ~6 a3 }  r8 e: Y
  437. 8 Q8 _; V) D; j4 r5 y# R2 ^! B, w
  438. ;==================================================. _3 K: f/ A% ~, x9 [
  439. NmiProcess
    ( n5 q; _0 Y2 P/ @% v: k
  440. / j# X: t! r1 D1 \+ A* u# J6 s
  441. ;关闭屏幕控制
    " m' P: i8 a  M/ ?4 O. \% Q7 o
  442. LDA #$00
    ) Z. H8 _" ~( |4 j
  443. STA PPU_CTRL3 K+ w: _/ n# Y+ ]0 w  ^

  444. . x1 Y! w  q& G4 @0 j5 r
  445. ;没播放音乐就不需要触发IRQ
    * A2 B% J+ D1 p+ @2 S7 ?$ ]
  446. LDA <Music_Stop_State
    / [# x3 @, {& h# \
  447. BNE NmiNormal& \0 d* b2 C, \+ R
  448. 0 D0 X2 Q7 f& g# R. {' f3 Q
  449. ;重置IRQ索引+ M: m& x3 L  {& I4 t! l
  450. LDA #$00
    , F, T0 [0 @) u0 u1 ?6 y
  451. STA <IRQ_Process_Index
    6 P& M. w' O/ x' Q# F7 Y3 a& c
  452. + D3 J$ ?9 D: L% R" \' ]" ~
  453. ;时间秒数为空则跳过
    5 a! ~# X- u- W  n
  454. LDA <Time_H
    ( _( I5 t: h/ l: i5 \+ l
  455. ORA <Time_M' M1 [* O. b3 z$ m
  456. ORA <Time_S
    . k  `# |9 E* U5 C* F0 o. Z$ i- V
  457. BEQ EnableFirstIrq: p+ g5 f3 C4 z* W% T7 {
  458. 7 d; |; D! V+ f2 a1 R
  459. INC <Scroll_H
    . w; c' ^  F& m2 N

  460. & n' j3 a3 D1 E( t/ ]; H
  461. EnableFirstIrq
    & c4 V; u7 J0 X+ ?
  462. ;80条扫描线后触发IRQ
    8 Y, H3 H8 ?9 T3 |" _; t, @) f
  463. LDA #IRQ_SCANLINE# i% g/ ^9 C1 f: S7 `
  464. STA MMC3_IRQ_LATCH$ a; y7 [6 G6 q1 H; J; S
  465. STA MMC3_IRQ_RELOAD5 Q: s& T  _6 L9 ]) X' E! ~& O
  466. STA MMC3_IRQ_ENABLE
    ; z& S& `& c& l; V  e: B
  467. CLI
    ; S8 @) g. j/ A' H! y

  468. & G9 p% y3 V" r: {' c
  469. NmiNormal
      `  K/ o5 }& `

  470. : o: q  X* `0 p7 Q6 a
  471. ;处理PPU图像. T+ w8 B( _7 P$ |
  472. JSR PPU_Proc
    & N1 P6 P9 [, ]0 r, l
  473. 5 Q& X6 c$ f' a) q+ V
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)- D# T3 t0 z8 L$ s0 B
  475. LDA PPU_STATUS
    0 o, Q  N$ I# A. q' \* S3 u0 K- F
  476. ;LDA #$00
    ; P% G( B0 s2 x
  477. ;STA PPU_OAM_ADDR$ ?8 a, n5 h; B" g1 Z
  478. LDA #OAM_TEMP_ADDR / $0100
    # Z) T. ~1 ]3 l- U" i0 p
  479. STA OAM_DMA0 o  N! |. r, H4 m  T: X

  480. . ]2 R1 g6 n. q
  481. ;启用NMI中断
    + `% y. u6 A% C' v0 e4 ?
  482. LDA Screen_Ctrl
    ! d+ s4 M2 s- O- A
  483. STA PPU_CTRL, S5 x5 u4 n: _4 Z+ j; q+ U0 j6 t

  484. / x. \- M4 V& I, c
  485. LDA <Text_Disable_Flag
    / Y3 m- e" T9 _$ M" }
  486. AND #TEXT_DISABLE_RAM
    & Q2 N" B$ \: @' ~( \; S3 y
  487. BNE Nmi_Sound_Play  a0 J1 @8 o8 e& L# d7 D7 K9 f; }

  488. ! c# P5 _( o4 N( l: G8 e: K0 k
  489. ;处理手柄输入
    ; D' ?8 \$ r$ g7 X# d
  490. JSR Key_Proc/ V7 Q6 b: ^* F

  491. 5 W% a& }6 D/ m' j! x% j
  492. ;切换音乐(手柄触发)1 J1 a/ e- {$ ?' R7 _  f
  493. LDA <Time_Wait_Cnt3 ^' G" {" i6 S9 c6 v
  494. BNE Nmi_Cursor_Arrow
    1 n$ Q1 _3 `0 s( R6 e; Z
  495. JSR Change_Select_Item
    # C8 t$ Q  n, p5 M2 }) d& b. M

  496. # |; i( q2 |0 S8 `6 i
  497. Nmi_Cursor_Arrow7 X* [8 P; E+ n" V7 S5 k1 `! \' M
  498. ! T# e, n6 a- J
  499. ;处理光标箭头9 G" h/ P! _! S$ I: u+ o
  500. JSR Show_Arrow
    ; H" C: _+ O4 m* V+ x
  501. ! s3 ^8 z* B! h$ B/ b, T( u
  502. ;更新调色板
    ( F2 k* c( n9 d' E! {# L
  503. JSR Update_Palette_Data
    5 @5 j2 m! f* q7 A% C2 ?

  504. % e6 E; e1 Z- \, R# J
  505. ;显示时间(缓冲)
    - Z6 C& a: ?# O' `
  506. JSR Time_Show* G- G1 M) E5 R/ ~3 `/ E; `$ ^3 C9 _
  507. # d# F: {7 E6 \' t8 }) K: m
  508. ;音乐显示(缓冲)
    - G' t9 y4 d: x; b* j4 @- L: Z
  509. .IF SOUND_BAR_SHOW_ENABLE
    1 v5 I) N0 h) [" p" [. K7 N
  510. JSR Music_Vision* T# T' w* n/ d# L/ a# [" o! B
  511. .ENDIF" I: a6 @5 I6 t. A4 M
  512. $ x8 e. K# B3 X: o# ^
  513. Nmi_Sound_Play' t) N2 z6 N4 R6 {1 j
  514. ;播放声音
    + ]( Z. @+ ^5 |9 S& s
  515. LDA <Music_Stop_State
    8 N# H2 G3 h8 S) O4 H+ l
  516. BNE Nmi_Time_Wait_Set* V( R- T/ l( w5 \
  517. JSR Sound_Play_Proc5 Y- y3 _: M. l7 d* z3 I

  518. * e+ U: s* h) k4 a6 h( b
  519. ;播放计时9 X% h6 B% K& y6 [/ T2 _+ ]
  520. JSR Time_Count+ _) t# S7 h- E

  521. + R6 k5 n( O2 x* d4 h
  522. Nmi_Time_Wait_Set
    , f2 P7 l* @0 q7 y+ m, Z
  523. LDA <Time_Wait_Cnt: q' u# L/ K' k0 c* @
  524. BEQ NmiNormalProcessEnd
    % K$ s$ \5 B! O8 X4 A: m
  525. DEC <Time_Wait_Cnt
    ! a8 \# s6 X0 ~6 o/ y0 E
  526. NmiNormalProcessEnd
    " y1 F* Z# g8 P

  527.   U( e0 w5 d3 b
  528. INC <Nmi_Time_Count
    . G6 l% m# ?* k: Z
  529. - \2 a4 V* m# e9 w( k( F
  530. RTS  R- x' b+ ]7 b  h

  531. 0 ]0 a4 j! ~6 u! _4 E2 o
  532. ;==================================================6 A: U. S% z, q
  533. Init_MMC3
    : _" {  L$ C  w7 q) ]% Z
  534. ;==============================& t( g! \1 H! ?# f% R" B
  535. ;禁用IRQ
    " r9 t) e9 ?; }9 f/ r
  536. STA MMC3_IRQ_DISABLE
    # @9 F( E$ K6 U
  537. % l! x$ M7 c( e
  538. ;水平镜像  M$ a' S: y6 g4 M" m# Z
  539. LDA #$01
    3 I. M; [: j) M1 O
  540. STA MMC3_MIRRORING
    ! l& N3 V  S$ @8 r
  541. ) C: W6 a) k8 N4 \, G5 b
  542. ;初始化图形bank) h$ N( Z8 H: K" o
  543. JSR Init_MMC3_Chr_Bank
    : \% Q, T. w6 q, d" e

  544. - s% V0 Q, I$ a. @
  545. RTS
    % {8 ]6 c# ?( x2 x  s% n7 n  ?
  546. ;==================================================; v& A) H, r1 w( H3 E( l9 w# t% [
  547. ProgramBegin;主程序# b  D' X0 A9 V" y
  548. LDA #$00
    3 ^, t0 u" I" i8 p6 D
  549. STA PPU_CTRL
    - H/ P$ W  y: [$ v
  550. LDA #$00
    8 r: ^5 h/ [9 f3 }! ^
  551. STA PPU_STATUS
    5 _2 f. ?& e0 ?1 z/ l# M
  552. STA PPU_MASK- P2 @" A3 X0 ?( {. u
  553. STA JOY2_FRAME
    6 d; O3 \0 U7 p9 F

  554. ' O$ F% k" e1 u; E$ j
  555. STA PPU_SCROLL
    1 f$ M9 }; O6 W! O* u
  556. STA PPU_SCROLL
    0 ^) y* z; n  Z6 j% y: ?* e

  557. , P" Z! @- `: I/ J
  558. ;==================================================  O: n4 R- f3 E; o3 |
  559. LDX #$FF
    4 r3 B/ _+ M; ?/ g/ E3 W
  560. TXS
    % x" J. |4 d9 P* V) U

  561. 7 A8 C$ b3 m% A8 i
  562. JSR Init_MMC3
    ; l7 f/ N2 [/ ~6 I6 `. e6 P
  563. 2 L, `  O% n$ k
  564. LDX #$02
    . r6 Y% Z1 U+ w! ]
  565. Check1
    9 j( d) t+ P: z! K, }9 b# N
  566. BIT PPU_STATUS. Q! q0 f2 C* T4 R6 ?  I: c% f
  567. BPL Check1: L/ `8 Z( x; m+ }5 |7 t1 \% _
  568. Check2
    1 I0 t6 u; C# a# y' R
  569. BIT PPU_STATUS  T5 H* |! Z$ r, `. D
  570. BMI Check2# F: G& t$ K$ S3 ~6 ^5 H$ _3 P) k; l; @* P
  571. ) P8 |2 n8 c0 V& ~" y' O2 N1 s- n. F* ~2 t
  572. LDA #$0F
    2 E# {  j4 ^3 O& m
  573. STA APU_STATUS9 ]5 [1 \; t% t0 o
  574. LDA #$C0
    - h6 p, z' `$ u% n6 ?( {
  575. STA JOY2_FRAME9 g& E) u, D6 m' A3 ~; W3 ]3 l

  576. % p) i' O8 B: G- `% N$ Q
  577. LDA PPU_STATUS2 V: ^2 V2 h5 i7 {  ]
  578. LDA #$10
    ! x7 c7 s. p0 ]- ?) q& w
  579. TAX  q# h9 i8 R2 \/ ^4 D+ Y
  580. Check3
    , v$ h  e% O  k- A$ E8 [
  581. STA PPU_ADDRESS
    # g8 _4 C) H4 Y
  582. STA PPU_ADDRESS) h. Y  _; C/ c
  583. EOR #$004 Q8 K/ r5 z, X4 C5 s/ ]' a
  584. DEX/ b- b6 }% k1 W# R- c. E5 ~
  585. BNE Check3
    ( K3 O2 h' |: |) v
  586. ;==============================
    8 E9 e: e) E# E) W: Y6 j
  587. ;调色板清空. G' A5 o; }! K+ G3 c) H5 z( d
  588. LDA PPU_STATUS
    0 R9 J4 B1 x& ~5 L) r) g. |
  589. LDA #$3F, }( A: K# B) c) p4 Q5 \3 Q4 P
  590. STA PPU_ADDRESS9 I3 B/ ~$ s" c+ }
  591. LDA #$00" x  N1 Z  z# O/ q
  592. STA PPU_ADDRESS& G# T% b8 ~/ u
  593. LDA #$0F
    & F7 e$ k* J5 m% s1 u$ e( Q& a
  594. Palette_Clear3 K+ c5 O1 l5 n/ l5 ^1 {
  595. STA PPU_DATA% n( n3 V/ Z- b2 Q7 Y
  596. INX
    2 s- k0 m* P8 E3 o1 [2 F+ h
  597. CPX #$20
    8 _% E' [4 w7 i% w/ Q; k
  598. BCC Palette_Clear7 {% \/ W& o2 _% N5 u# E: m
  599. LDA #$00* i% F8 \6 P. g: M% w
  600. STA APU_STATUS- r1 K' }$ J, [3 m

  601. ; f$ g. @) i0 U- e2 ?$ W
  602. ;==============================
    / {4 I/ e  A; L: l/ r' U  H
  603. ;RAM初始化
    ; [/ r: X( B. A/ ?
  604. RAM_Clear_All
    , k' t1 \1 f( o. r2 d
  605. LDY #$00
    $ V% D% C7 }5 K) ]! O  P
  606. LDX #$08" j- |' X  i* c2 j4 V  D$ M( |, H, ~1 T" w
  607. LDA #$005 c% C" a' z0 G& m9 }3 |! d
  608. STA <$00
    ' i) ?( ?7 p5 Y- R/ z
  609. STA <$01
    1 P6 d. _% p/ |3 u+ w7 H( c6 }/ ?
  610. RAM_Clear_All_Start+ g% E7 S9 f  @7 m" _* C0 L
  611. STA [$00],Y) o' n  z* B2 c6 u$ Y$ R
  612. INY
    , r9 C4 ]7 w% D6 m; W) n! |
  613. BNE RAM_Clear_All_Start) F  d7 S) D) z& f( b4 }
  614. INC <$014 S' d  k$ y" L" e' R$ ]
  615. DEX9 k. H  P1 X+ v. e
  616. BNE RAM_Clear_All_Start
    0 ~  f+ r: C: K( y
  617. 1 {" s  u9 O' q: w" @5 Z! \4 n
  618. JSR VramClear! X) N3 z4 C4 O1 y8 J8 ^5 E
  619. JSR VramInit& n9 d7 G3 |$ K
  620. JSR OAM_Ram_Init* {8 }; p# S, g% G5 E4 @9 s5 @
  621. JSR Init_Palette_Addr
    9 L4 Q1 E5 K1 @- O3 E" x

  622. 5 E' n" V1 ^8 g9 z& r
  623. LDA #$FF
    " v9 G: z" r- r& N) v7 ?! O
  624. STA Use_Ram_End% ]8 f/ E* p& i. k; B6 l# h
  625. ;==============================
    . h0 p* f5 A1 L3 |1 `
  626. ;初始化背景调色板
    3 Z3 z8 m) _. Z' q7 O! J7 L4 q
  627. JSR Set_Palette_Color
    / A# G* |& B/ n; D
  628. JSR Set_NameTable_Attributes
    - E- u1 m, }; ?' a

  629. 4 B, w% M- L8 {  ]6 W
  630. LDA #$00
    * z% U; t' @: J9 _8 h, b% E; m
  631. STA PPU_OAM_ADDR
    . l" B0 t  T: u7 d0 ~5 ~
  632. LDA #OAM_TEMP_ADDR / $0100/ |$ u9 h5 {( Q* t1 t
  633. STA OAM_DMA' O$ j% S" y3 a2 Y* \* H+ K, n3 |

  634. * ]$ \' _' J* n0 G1 H
  635. JSR Sound_Reset_Proc
    & ]) `2 s, j! n2 I! M- u2 U
  636. JSR Set_Sound_Total$ Y2 ^) R; X# H  l: `
  637. & P7 V5 b& Q4 K5 C
  638. Init_Start_Music
    ' _( l0 C* c  Z' h' l. f1 q
  639. LDX #$00% s+ h8 W( g* w6 B( v
  640. Init_Start_Music_Write
    " w7 c; Z/ A9 f& `: @* i
  641. LDA Sound_Start_Port,X7 }; y& u5 L9 z4 N, C! l
  642. STA <Music_Cur,X9 {1 ]3 I4 f( g. S+ Z* Y
  643. INX
    $ X' [% @# J6 F- U' S6 c* x
  644. CPX #ITEM_MAX_SIZE/ ~6 R7 g' L6 d8 h, F3 h% @, H
  645. BCC Init_Start_Music_Write
    * ?) h( t* v. c5 a4 }  d
  646. 3 T1 V  y0 Q) y  u# l0 U
  647. JSR Show_Music_Text
    $ \6 m0 r5 W8 R" p2 J0 f7 T6 G

  648. 7 i* ]6 \0 a6 i5 p5 X, ?$ Z* y4 }
  649. .IF SOUND_BAR_SHOW_ENABLE7 y# X1 w" w/ E. @4 Z" _  _0 h
  650. JSR Sound_Bar_Text_Set
    & N( M9 }+ v$ ]$ E& g. y
  651. .ENDIF
    , r) Y2 J% N1 _/ }/ g

  652. . ~2 x: O1 }  H# U! R- c! O
  653. .IF Track_Name_Pos! `6 n  k2 K4 K% {' A; q3 f& Z
  654. JSR Show_Track_Info
    $ H3 G% T% C- e" w2 ]
  655. .ENDIF
    * i, N% t# i0 v' d6 R% L
  656. * T6 _8 D% g7 ^3 _8 K  l
  657. JSR PPU_Proc
    6 M0 N. B5 x! A6 Y2 }
  658. / Z! i& M6 g8 j: N# `2 P8 k3 r) X( b
  659. ;==================================================
    # I: m+ }  |3 C* w: w# r$ j) a
  660. ;音乐bank初始化 ( X, m/ T' M/ ?" [7 C$ I( ^* \1 S4 f
  661. JSR Init_Sound_Bank+ R- D, ]% R# c5 p) J6 i

  662. - U2 c7 z* Y" k4 l  s* w$ k, f# V
  663. JSR Music_Show
    , _- n, G$ I, J# a, B( g
  664. JSR Time_Show% _% v+ \0 Z1 ]
  665. JSR Music_State_Show
    8 v6 `6 ^8 i) S' v; B5 u
  666. JSR Time_Delay/ F! l* a; X& B$ P$ R
  667. 7 a' a* I: }* q* V: [
  668. LDA #$01
    9 Z4 C6 n9 R6 i. w
  669. STA <Music_Stop_State! a' ]- R. P  `& A" Z# l$ C  x
  670.   V& w& G% L( O( ?' I) H( f
  671. LDA #$88
    + h" r4 I; [* [4 \
  672. STA Screen_Ctrl1 B9 `" s4 C. B- R5 D& w
  673. STA PPU_CTRL( f3 V( j) U: E/ I' _1 t5 `0 X

  674. % {, [1 n+ F/ A6 j" X
  675. JSR Show_Page_Text
    5 V$ c+ ~! b& `# x
  676. " Q* Y- p. }. |1 ?/ K
  677. LDA #$10
    ' h2 d! `: m* q/ q/ p% y
  678. STA <Time_Wait_Cnt8 s, n0 U! S9 m  ]+ M

  679. , O: P, W( V$ |0 z( L; e- o! Y( ]
  680. Wait_Time_Over4 b! i7 M3 O4 x/ Q  V* C
  681. LDA <Time_Wait_Cnt
    - b8 y+ H6 s4 h; x0 s' r" e* u
  682. BNE Wait_Time_Over
    9 ]1 \% ]& ]- l+ T
  683. 5 h2 S0 w# H9 ~3 g$ Q- `
  684. JSR Show_Arrow
    5 S3 r0 E9 x4 i' Z& c6 A3 z2 f
  685. LDA #OAM_TEMP_ADDR / $01004 Y; _# h6 x- m
  686. STA OAM_DMA  H, n/ V6 t) `6 e8 k+ ^5 g
  687. + p7 o1 X7 G; x; h
  688. LDA #$1E$ i8 B. l3 [- @5 k* u4 [8 ^% k0 L
  689. STA Screen_State
    4 x2 P; l3 K* S; ^2 Y  ]  n
  690. 1 o9 g3 Y2 f' Z/ ?( a9 V- U
  691. LDX <Music_Item_Cur- _( d7 T9 r" e1 D
  692. LDA <Music_Cur,X
    % x% \' Z: E( Y% N* E! U. d
  693. JSR Sound_Init_Proc
    1 l& |2 c$ G) ^2 Q. F
  694. * _3 z: S+ W* z" [+ y+ Z
  695. CLI
    / g- V  P& D9 w/ a
  696. JMP MainLoop* G9 L4 o# G! C+ l9 Y0 S
  697. 5 r4 w; G; l# m8 [2 Q' l
  698. ;==============================* W) g4 Z4 g' k1 b$ _0 C7 c
  699. Time_Delay;延时等待$ J" t0 N1 H; A% F, \: {
  700. LDA PPU_STATUS
    3 v" f0 O- O1 c- o& U
  701. BPL Time_Delay( \/ L% P4 R6 D+ U$ x2 O
  702. RTS1 m4 X8 t$ V" b0 e' V! h

  703. ; m9 C% b' C# H( Z$ Y* F7 Z% x
  704. ;==============================
    : h% W" k1 I5 h7 g" Z% o
  705. OAM_Ram_Init;初始化精灵内存
    * o6 ^+ S/ d* R$ K3 @7 e; I6 [
  706. LDX #$00
    ) ^' ]7 o; z# G% d$ n
  707. OAM_Ram_Init_Write
    . z( d9 y, N; s  f8 D2 L1 F
  708. LDA #$F8
    $ i" G$ V/ v1 c/ ~
  709. STA OAM_TEMP_ADDR,X
    ( B8 Z3 v2 _( O8 c
  710. INX2 [2 T; e% i' k) M: C3 K$ }( \
  711. LDA #$F8+ H. |2 C: q: }
  712. STA OAM_TEMP_ADDR,X9 v( Z3 }1 N2 U. A7 Z5 l
  713. INX
    3 B5 M, _7 q6 H; }7 D
  714. LDA #$00; e7 s! F4 m. N& K  x
  715. STA OAM_TEMP_ADDR,X3 O6 u# p" Y3 g% ~
  716. INX, Z: u6 `. T$ d/ U
  717. LDA #$F86 e6 Y! k" _: w. H4 _
  718. STA OAM_TEMP_ADDR,X
    , k0 V8 Z* `" Z5 ~9 O+ V
  719. INX4 ~. r# x' E! O2 Q* h% q" E
  720. BNE OAM_Ram_Init_Write4 @8 O5 i3 x! _- u( D( X4 w
  721. RTS: a: f; F2 e) R7 n/ V4 B

  722. 2 ]/ i: p2 Q( Z
  723. ;==============================% F% |3 Y* p7 m
  724. VramClear;初始化图形内存0 c8 V! X& [5 l
  725. LDA #$20, L2 D9 k3 N( S6 G+ B1 {
  726. STA PPU_ADDRESS9 \1 U) X  c* y5 W' i" H& u1 Z# N) t
  727. LDA #$00
    8 D( D- z$ G: Q9 g/ s2 G2 R, Q
  728. STA PPU_ADDRESS0 W7 ]! R* ]& k
  729. LDA #$00
    3 ^; j, e$ y" F; V
  730. LDY #$00& {; c& l* v, k1 a
  731. LDX #$10
    ( d9 i4 I! Y+ B! M" o
  732. VramClearWrite% _: `& v0 t* ]+ u# Q2 I: K
  733. STA PPU_DATA9 E8 u1 H: @8 V0 J. G: ^
  734. INY
      ?8 \) X* n- B3 O: W& w4 x: Q+ _
  735. BNE VramClearWrite
    1 c6 m% n: M6 _: I" j6 V
  736. DEX3 t: W0 N9 ~2 a: b/ P
  737. BNE VramClearWrite
    0 F2 ~& z4 I/ T: v
  738. RTS" v$ `" Z! s3 Z! C% M
  739. 6 }# I' ?8 K4 @$ c4 }7 {
  740. ;==================================================' D! q4 e- @7 ^8 S& E2 c8 H
  741. ;设置MMC3图像bank9 ~# B2 @* p+ _3 S, c4 l
  742. Init_MMC3_Chr_Bank& P, P; g% v: @6 S$ [5 A
  743. LDX #$055 G& C- p( B5 C4 G+ x
  744. Init_MMC3_Chr_Bank_Write" i& T+ T2 \, H4 E+ D
  745. STX MMC3_BANK_CTRL- L; X/ M/ Y! C' X* k4 I
  746. LDA MMC3_Chr_Bank_Data,X% u4 ]- h$ i; P8 Q2 \1 ]
  747. STA MMC3_BANK_DATA' h; {( }  R/ B3 |
  748. DEX
    ; v) m/ _' z* g! S0 \
  749. BPL Init_MMC3_Chr_Bank_Write- v, H* \& H5 ^* L
  750. RTS
    0 j8 e5 z# \+ V5 g" P
  751. ;--------------------------------------------------
    , z. Q4 t0 i# q* C3 q
  752. MMC3_Chr_Bank_Data
    5 Y- X7 c& s) M3 k( P7 T/ y
  753. .DB $00,$02,$04,$05,$06,$07. y$ a! O9 X! G
  754. ; G" w; Y: p; }0 [7 a5 [# D
  755. ;==============================
    , z# I6 X5 U- E
  756. VramInit;初始化图形内存
    4 `; j  T6 G: L$ G3 B
  757. .IF CHR_RAM_ENABLE: X, ?+ G# c- {% k  X3 }; c: {
  758. LDA #CHR_DATA_BANK0 s4 T$ a) O1 z: o6 c' W
  759. JSR Switch_Bank_A000
    7 P, c$ G, [; V% a6 R
  760. LDA #LOW(CHR_DATA_ADDR)& a& b* q5 t: }) f4 g: q2 m
  761. STA <Data_L+ ^1 f+ J& }* }- W8 m4 V& q4 h# O- L
  762. LDA #HIGH(CHR_DATA_ADDR)
    % w& Z/ L! ?6 i8 z/ Q
  763. STA <Data_H) H% S6 _: C! A
  764. LDY #$00, V+ a' D# q  O( K, V
  765. LDX #$20
    $ @7 P% Z/ P5 W4 c
  766. LDA #$00% G; H" [3 ]# U6 o/ w
  767. STA PPU_ADDRESS
    ' d( B3 Z- |8 N+ N+ z& p
  768. STA PPU_ADDRESS
    # J8 b2 N  g: q# D2 W. k3 z
  769. VramInitWrite4 Y" R3 Q6 j; C+ l- ~% D' ]
  770. LDA [Data_L],Y
    ) E1 C- _# i+ g& P8 H& v; R& g! U
  771. STA PPU_DATA
    & @# \  |& T% q4 G# ]% x2 E
  772. INY
    : R8 A; q- ~% S/ U2 e
  773. BNE VramInitWrite
    " u, D' q. j$ _
  774. INC <Data_H) b$ m( h2 v" _$ q5 ?' U. u
  775. DEX
    2 h  |' H+ z5 @( }
  776. BNE VramInitWrite
    5 H1 G9 _, i3 j8 o
  777. .ENDIF. b: A$ s+ l$ ^6 D8 L
  778. RTS
    0 J% z9 f1 \$ P: b1 ]/ ^

  779. / ]: |/ F; E+ J: Z2 d. R6 _
  780. ;==============================
    / \* b8 ^, c3 h. v  y4 L
  781. ;音乐切换
    ) p5 Z& p. [3 c
  782. Music_Play_Change% B3 z1 T2 S' ^* g( s9 O5 N' u9 U
  783. LDA <Key_Once
    " i! b4 A# r- Z( ~
  784. AND #$FF
      }* F9 l( u: _3 C* ?  A/ t# h
  785. BEQ Music_Play_Change_Check  t! a& N2 Z1 y. D/ g

  786. 7 N. e7 ]# l5 X: q
  787. ;禁用音乐条刷新
    + z8 _2 ]' O! L( w* t) ?) H6 ]
  788. LDA <Text_Disable_Flag
    2 P/ Y1 V; \5 \! W( c4 P% H# C2 \
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME( ~5 q8 t' n$ R7 G+ h# `# y
  790. STA <Text_Disable_Flag, ?6 B, w5 ~; k" V. X5 T& Y  v
  791. 2 W* J, y; k- R, ?3 x& E- X
  792. Music_Play_Change_Check: N/ Z6 r: c; C+ J$ v
  793. Music_arrow9 m, z- T& I2 Y3 @/ Z2 m3 y& J
  794. LDA <Key_Once. T& i! b# p" T$ g) C
  795. AND #$0F
    $ Y) I8 e  x  @
  796. BEQ Music_Play_Change_End' t+ E  p7 j# \) Y  l. ^  y: Q! j
  797. JSR Music_Track_Change$ W" A' T9 Q$ Z1 v) G, r
  798. JSR Sound_Reset_Proc1 F* c, l2 Z$ p" Z
  799. JSR Music_Show
    % J2 m* g( N( P$ [
  800. Music_Play_Change_End
    1 R: S6 i, F* X/ e" t- r
  801. RTS6 N. h% X  E- J! n7 V

  802. ( V# v. t0 M3 c' v* g- \. `
  803. ;==============================& x/ L' c' H' M' H$ w) t
  804. ;音乐曲目切换' A/ b( @: E# S/ U5 {+ i
  805. Music_Track_Change0 ^, S: C9 ^: B2 u5 L1 k2 s
  806. LDX <Music_Item_Cur3 R4 }" V% _) b3 A" S  Q' e- [
  807. LDA <Music_Cur,X# g: i/ Y, W; U3 j
  808. STA <Music_Last
    , h  S% B& N- x, b- Y+ l5 o3 Z
  809. Music_Decrease
    . s, Y- e' P  h) K5 J
  810. LDA <Key_Once6 c( |8 u4 G, m
  811. AND #$42
    1 t: a6 C3 c/ y" A2 E6 a8 }6 A
  812. BEQ Music_Increase0 H  X9 B1 T5 B+ L6 U5 x
  813. LDA <Music_Cur,X
    ! |* D- ]2 i& {! s: O9 }# q& j
  814. BEQ Music_Increase  l$ [+ o3 Q; E' b, `: a- r
  815. DEC <Music_Cur,X
    7 z. U1 V) H; X3 {. c* |5 T
  816. Music_Increase0 x1 s0 K, H, N8 p
  817. LDA <Key_Once
    , ]4 ~( w# v' u
  818. AND #$81
    9 e: f8 J. ~2 n/ S: Z
  819. BEQ Music_Decrease_10
    ) ^5 y' \) ^9 z9 N8 ?4 \' y
  820. JSR Set_Sound_Total$ D- \! @9 R  V+ ^
  821. LDA <Music_Cur,X
    $ M0 y9 R: S2 R; R% |! P% _. j, K( I
  822. CMP Music_Total7 E5 @9 ~/ h% }" e
  823. BCS * + 4( e6 [  b; n! P, J. f7 `
  824. INC <Music_Cur,X
    0 I* D5 u* y' i7 h" I
  825. Music_Decrease_104 m" N# D' ~: @6 @" p+ U6 r; N
  826. LDA <Key_Once
    + H9 ?. }6 X# q
  827. CMP #$04+ `9 Y) v: a& ]* I% S
  828. BNE Music_Increase_106 |2 x. m2 O. j$ F
  829. LDA <Music_Cur,X
    6 o* ?& n7 y( b" M3 P) s
  830. CMP #10
    8 u! I+ H" w7 n" u( Q- K
  831. BCC Music_Start_Song_Min
    4 X" v0 ~0 x# \( W5 H9 |/ N+ S- |
  832. LDA <Music_Cur,X
    0 V) V/ n% G- x- d% _. e
  833. SEC5 ]9 h+ R3 l4 c1 g0 o& b. Z, Y
  834. SBC #10' J8 f) x* o* m. F7 N9 B
  835. STA <Music_Cur,X
    0 t3 A. q. b' b3 P
  836. LDA #$00
    8 P( [: |0 Y6 t% s7 `* x4 p
  837. BEQ Music_Increase_10( A, I; M- N8 m* p/ z, _
  838. Music_Start_Song_Min
    " [- a# l/ T) ]# u* Q
  839. LDA #$00! t& @, }! R5 R2 s$ N* G/ O% A
  840. STA <Music_Cur,X
    ! x  R1 L/ E5 s. b: f
  841. Music_Increase_10, C) K; y  ^6 P# k
  842. LDA <Key_Once) z" L$ j2 ?' p# ^5 O- a
  843. CMP #$08" Q/ q* I7 [: c1 D' h
  844. BNE Music_Track_Change_End+ |$ ~& B- R& m2 i6 U; f
  845. LDA <Music_Cur,X
    - u' P1 o$ v$ A' a5 x
  846. CLC
    ; P' E0 o3 a0 E6 O/ {( N
  847. ADC #10+ f# B3 Q0 [8 q& H
  848. CMP Music_Total2 D, P$ y! Z! ]# P- M
  849. BCS Music_Start_Song_Max6 M. K- D: e! c6 _/ B2 h/ j
  850. STA <Music_Cur,X
    . s, w& u& n/ r, ?4 p
  851. LDA #00. [# F$ c! A8 I4 ^2 y: ]; L( h6 _
  852. BEQ Music_Track_Change_End. X+ J, I) l. d
  853. Music_Start_Song_Max4 c: k8 Y/ F" U3 q
  854. LDA Music_Total$ _+ s; G* U7 V" @& j
  855. STA <Music_Cur,X
    $ B6 l) x  @3 f
  856. Music_Track_Change_End
    . [. {! u2 ~  O8 Z
  857. RTS4 E  P+ v1 }4 P" ^3 M; c

  858. $ J5 {0 O# i- O1 }1 y
  859. ;==============================
    ) o" [( i( ^& t7 d2 i
  860. ;按键处理; \- G: Z- v- w' k7 E' l
  861. Key_Proc
    5 u8 ~# I( V, {* }) U7 L" a  E
  862. JSR Key_Scan6 o0 a1 W2 h" H$ n5 W
  863. LDA <Key_Keep; n5 L( v2 n; V# M7 X! d
  864. STA <Key_Temp& I% |( H7 i; X& X. g
  865. JSR Key_Scan2 l$ W1 R- k( H& X! e
  866. LDA <Key_Keep) ?( v# m1 a3 x1 N" R
  867. CMP <Key_Temp
    - Y9 {$ k( y/ u9 l5 u: z0 Y3 h. f
  868. BEQ Key_Get_Once
    3 G4 x4 p( {! ~3 L
  869. LDA <Key_Kemp
    & H' e5 W7 Q; _& S
  870. STA <Key_Keep
    / w3 z) y& m" x' i. r! M" I) {3 d
  871. Key_Get_Once
    2 \% K5 `* g% G' Q6 c) m. f
  872. TAY3 R3 {( S/ H. P3 Y4 p
  873. EOR Key_Kemp
    / N: d* U& ^4 n1 Z3 v
  874. AND <Key_Keep8 W; q+ X0 j) `  o$ E" O
  875. STA <Key_Once- X2 x/ b+ |- p  k" t8 }4 y
  876. STY <Key_Kemp( i$ P- ~" ~2 }
  877. RTS! }2 z' |- u0 \" c- A6 ?# a
  878. ;------------------------------9 @9 W7 ~( Q$ j. t
  879. ;按键扫描1 U4 z. ]; k1 I$ e8 ?: ]
  880. Key_Scan
    + F# n" S/ P8 `# m9 h
  881. LDX #$01
    8 T% b6 W8 t: L4 U" N
  882. STX JOY1_FRAME
    * x! A* W& A5 e
  883. DEX
    # M: M6 A, K1 ~: C# ?# p
  884. STX JOY1_FRAME' ?' u0 L; ]% z+ p4 m2 f
  885. LDX #$08! c! S" y% \! a# d/ P$ h$ k
  886. Key_Value
    * x! _3 b3 J/ Z5 w* ~1 Z3 S
  887. LDA JOY1_FRAME+ R7 w6 N' s4 p. \& m) |; ]
  888. STA <Key_Getv" ~0 t# s  Q! T" }" n
  889. LSR A
    2 A4 }3 c4 ^1 V9 Q$ s! J
  890. ORA <Key_Getv# J2 {6 B: v, p% V( j  m
  891. LSR A
    % u- u# O3 [* h: R# a
  892. ROL <Key_Keep
    ; I7 T0 E) Q9 @9 t' g
  893. DEX& @9 Y% Y& i  h' q; f
  894. BNE Key_Value
    $ A0 J1 U4 R& f# n3 v/ B3 R7 S' j
  895. RTS
    , H0 M8 i: ?' l& Q

  896. % O# N9 y) B% G" ?3 _  G1 d
  897. ;==============================, b. ?6 y9 G9 s& G! F
  898. .IF SOUND_BAR_SHOW_ENABLE
    3 d0 {# d. j* v7 `. I, c
  899. ;音乐条显示
    * X  `4 [2 q5 P' C* Z$ X! B
  900. Music_Vision
    3 o( i- T$ n5 a- }9 G, y" ]
  901. LDA <Text_Disable_Flag
    , B2 n* P( F9 ~+ h' R" e8 O6 z
  902. AND #TEXT_DISABLE_ITEM
    5 t- b1 k" v; G) c) \& d9 C" F/ w
  903. BNE Music_Vision_End! n% z7 h/ l. b: ]( @7 b" [
  904. AND #TEXT_DISABLE_BAR
    7 z6 b2 ^! u  h+ Y( y
  905. BNE Music_Vision_Set  Q# `* D) ^4 D
  906. LDX PPU_Cur  ]% a2 w1 \( h9 @! i
  907. JSR Music_Animation
    ( g- f: h+ ]) M. G+ ~: ]9 ^
  908. STX PPU_Cur( |# |) C: ]8 A% t
  909. Music_Vision_Set7 i5 i- D# F" [9 e9 k
  910. LDA <Text_Disable_Flag" m* B. m: R/ p! B, o
  911. AND #TEXT_DISABLE_BAR ^ $FF
    - `: s9 q" k2 z: d) e2 h* E. x9 z
  912. STA <Text_Disable_Flag
    1 S" v, D. }$ a0 F- v
  913. Music_Vision_End, k4 V; b2 \$ ?
  914. RTS) o; ]# ^5 U- ?  W* k: B
  915. ;------------------------------
    7 `$ t1 G; R9 }9 G# V- w- L2 o
  916. ;音乐条显示处理
    - B4 X2 i) `# Q7 ?1 ?% ^9 g
  917. Music_Animation: l& \, Z0 X' P& d3 t7 X% M1 s
  918. LDA #PPU_MODE_CNT_LINE  I  y5 t$ o3 Z
  919. STA PPU_Addr,X* f, @6 @4 n; ?" o' x  `
  920. INX
    " }  i- C7 A  X7 T; P
  921. LDA #HIGH(Sound_Bar_Pos)
    6 C) }" G+ |  v6 [! \' I- a4 K; `8 p
  922. STA PPU_Addr,X
    ( M0 A: P8 D1 [+ L6 s
  923. INX
    9 \: h7 i: |4 w- \3 V: [( D* i3 x
  924. LDA #LOW(Sound_Bar_Pos)! `0 \" ?# a) L* @5 S+ {( d. M( o
  925. STA PPU_Addr,X, F8 \' v0 N! `; x$ D8 Y/ U# N( _
  926. INX4 ]4 B, z- U1 W0 s
  927. LDA #$08
    & I, \* p$ P) C2 h% \5 H" C
  928. STA PPU_Addr,X4 x4 ^6 Y. j$ _: a% k' e
  929. INX! B) ?  B: T6 W7 B' Z, j
  930. LDA Sound_Bar# s; ]! T' v& X+ H* P6 @& c
  931. JSR Volume_Convert
    6 f# r# D- \8 @6 `0 b

  932. # `2 q, n# q: q! }) B
  933. JSR Volume_Set_Cnt
    + W4 j+ v8 _0 ~! s
  934. LDA Sound_Bar+$4
    ( D1 p* {+ t1 ^. F
  935. JSR Volume_Convert+ ~# E6 h3 A  F2 z* z+ B
  936. ( [0 d5 U, ?" B- u8 F
  937. JSR Volume_Set_Cnt
    % y2 J/ L( q, r3 Y% S
  938. LDA Sound_Bar+$8
    # D3 P( B2 g  @: {
  939. JSR Volume_Convert
    $ d7 E/ J: r0 G6 X; U* h% F

  940. 7 P& D7 Y" P) \9 [4 m$ P" f
  941. JSR Volume_Set_Cnt
    , {! G1 ~, |2 t; }3 F
  942. LDA Sound_Bar+$C, _) T% n6 r: {4 s8 u
  943. JSR Volume_Convert6 G4 E7 s! V: `2 Z+ O& E
  944. - s( ~$ B. i7 }+ ~" W& C) [8 Q
  945. JSR Volume_Set_Cnt& I5 x% a, N; y7 I

  946. 1 L% p4 X% ~( K, ]
  947. LDY #$10
    . ?" V5 O0 @8 ?# R$ g' w9 J" |
  948. LDA APU_STATUS( D5 D3 S6 N0 U7 z& W
  949. AND #$10
    ! ]0 f: L& o( F6 G" c  y9 H
  950. BNE Volume_Count
    6 \$ L- }" V: F  r
  951. LDY #$00& o" d( }) z/ e* r. q$ e, ]
  952. BEQ Volume_Count
    : C) p1 t% |0 G( Q2 l6 z' Y/ M5 H. _

  953. - W0 |' p" x! M& n/ O: R) f
  954. ;------------------------------- W! v6 W. r% c( e* ^" E4 [
  955. ;音乐条处理6 C' ~  R1 T: E6 g
  956. Volume_Convert! o* r4 d/ z( U8 E/ I. l% K4 q# Q. i
  957. AND #$0F$ E, X  l1 T# g+ ?
  958. TAY
    ' d& b6 G0 m. q, ?! V2 e  e
  959. Volume_Count
    7 C! u, q( k5 m" J9 W9 F' ~/ s; z
  960. LDA #$08, d$ Q# y5 K7 B7 Y+ a% N8 G
  961. STA Sound_Bar_Cnt
    ( n2 C8 X" S+ X
  962. Volume_FILL/ x, [, @" d0 T' C& a/ Z; L5 v
  963. DEY% g" w4 D0 O0 [& U- j8 j
  964. BEQ Volume_Half2 {6 D. N% U; O$ g4 m
  965. BMI Volume_Empty
    0 ^( I) I, }' j! a: n, [
  966. DEY9 L) b# j" B" `% Q) b7 ]8 \  L3 {
  967. Volume_Full5 f; O. g/ K* O% U$ Z
  968. LDA #$16
    8 |; a6 L* r7 E# E2 i6 [
  969. BNE Volume_PPU3 X! @6 O, S! X+ {- Y2 O0 m
  970. Volume_Half5 |" U' L. y8 U# [! ~- M, g, T% k
  971. LDA #$15
    ' G1 Q. K2 l7 {/ W2 l- _0 ~
  972. BNE Volume_PPU
    - H: b9 D. ~! v# J
  973. Volume_Empty
    9 B- f. a8 A! q
  974. LDA #$14$ h9 H. }+ J& q  E3 j: z
  975. Volume_PPU
    6 |% F" S+ C5 F2 t" p
  976. STA PPU_Addr,X7 K* t. t5 P( u$ n6 I
  977. INX' L( {% q3 Q; m, g
  978. DEC Sound_Bar_Cnt
    + d$ F$ d* s0 h; G
  979. BNE Volume_FILL
    * B/ p( `6 d  k8 I8 v4 j& c1 {+ \. ?
  980. RTS
    : ?! V3 Q! Z6 Y- u( L" n

  981. ; ^4 N( i; x9 {/ m, A
  982. Volume_Set_Cnt
    & E4 p! j- A( p, J- C6 }4 ?! Y
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    & q, W' N( }/ C. a/ b
  984. STA PPU_Addr,X8 r% C- b2 O* |/ b. ^& e) F. j) [3 \
  985. INX
    ! m, P  X& d! Q1 G! Y
  986. LDA #$08
    . r/ U* A3 r. o7 B! x0 W' v- }
  987. STA PPU_Addr,X2 q8 s8 U& Y0 r% g
  988. INX3 U* `3 e4 c4 E" k; C5 p2 d& A
  989. RTS! }' J9 Z/ A( v& j8 W" y. I
  990. ; _+ T+ a. |- [- ~% Y
  991. .ENDIF* o6 R1 Z% _! b
  992. 3 M' I& q0 p6 k" D" f
  993. ;==============================; K$ q6 x% ~& f8 n1 t& F5 p: H" T& E
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    $ R* r9 j7 g" Y3 ^
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式9 U5 L+ W1 v  \; D) p% G9 V5 n
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除; @; D2 |& H: T! w& n6 s* L
  997. ;------------------------------8 s' e1 o! Q, v* H5 Y: G
  998. ;PPU处理
    " L* J3 O* |# X, g; g, u
  999. PPU_Proc3 C& l. R( w' h% t' c
  1000. LDX PPU_Cur
    3 O( h% s+ p) c' l6 p6 w7 d+ O- Q1 a
  1001. LDA #$00
    - Q1 [5 D! H: Y* ?8 Y7 S
  1002. STA PPU_Cur' m6 G& @0 m) J; A8 o3 v, i
  1003. STA PPU_Addr,X
    ) D" q1 P. I0 P
  1004. LDA PPU_Addr) J- X4 v& o# B; z; Q( E
  1005. BNE PPU_Proc_Beg
    7 V; \) J9 @+ k- U
  1006. PPU_Proc_Ret
    ' }8 J0 J3 {$ o* L( w+ G
  1007. RTS
    0 x, Q$ {5 A- K

  1008. 3 O% D/ F) A8 u* s
  1009. ;------------------------------
    ' z! P& A2 l0 p& n. k1 M
  1010. PPU_Mode_Return_Cnt  ;转下行模式, ]2 y/ ^4 v/ ?/ M! b& K% ?
  1011. INX
    7 C7 ~8 f% W; G" e5 p
  1012. LDA PPU_Addr_L- Z3 E; R+ d- y+ K* p
  1013. CLC1 M. o' c, [! o$ j
  1014. ADC #$208 I0 w6 o, M4 ^2 L2 V
  1015. STA PPU_Addr_L4 B: C7 `1 V) O- X$ _& f
  1016. BCC PPU_Mode_Return_Cnt_End7 `4 d2 p( f  h6 Q
  1017. INC PPU_Addr_H
    9 H, F+ [! u5 Y* U$ \6 k. E5 z+ V
  1018. PPU_Mode_Return_Cnt_End
    1 ]+ `) K( s, v
  1019. LDA PPU_Addr_H7 e! V& W+ U) c& n' s& E
  1020. STA PPU_ADDRESS
    ! k1 o2 t2 w  C/ {3 n0 v& A
  1021. LDA PPU_Addr_L
    0 o4 J/ ^6 O8 i0 |, ?, z
  1022. STA PPU_ADDRESS
    / q3 N( C; N5 _  Y
  1023. LDA PPU_Addr,X8 {8 P& `4 |1 l" p2 E
  1024. TAY4 q5 D5 G) g, ^2 G2 d* W: @
  1025. PPU_Mode_Return_Cnt_Write, }+ C4 E' |  Z& s
  1026. INX
    5 _* S7 S2 R9 |8 {$ o0 U
  1027. LDA PPU_Addr,X: x  r( h3 @& e+ {8 j( c4 l" W
  1028. STA PPU_DATA
    9 E) u  S1 ~' S- {
  1029. DEY$ ], W" G& ]. t$ E
  1030. BNE PPU_Mode_Return_Cnt_Write
    ; {/ r; j( C1 S: x% D6 a
  1031. JMP PPU_Proc_End
    ! ?: e" _. j: F7 n2 k9 K$ R

  1032. ; ^4 S: [  n: ^' W; x+ S
  1033. ;------------------------------0 k# b( f/ L$ C
  1034. PPU_Proc_Beg  ;处理开始
    , e5 S% A! q/ ^8 B& }: ]% n8 h
  1035. LDX #$00( n+ Q6 r$ W4 z4 a: K
  1036. STX PPU_MASK
    : F" `, ~- m4 V, y% l% Z, s
  1037. ;------------------------------: V' w6 T! Q1 L% X! E
  1038. PPU_Mode_Select  ;模式选择  V+ `9 P& J- ]# t5 D, y
  1039. LDA PPU_Addr,X
    5 b+ V% l1 f5 o4 L3 ^& D
  1040. CMP #PPU_MODE_CNT_CLEAR* X% N$ O& F+ ^# p* n
  1041. BEQ PPU_Proc_Clear
    % p% e$ W, i( e' x- I1 R4 j
  1042. CMP #PPU_MODE_CNT_LINE
    - |, k( n" S+ |9 j1 d
  1043. BEQ PPU_Proc_Cnt_Line9 U8 u# C1 U9 F- m" \- M" n
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    $ Y8 ^% r; t: x  M* y/ H
  1045. BEQ PPU_Mode_Return_Cnt
    + x6 x- l! x* D% K4 x! R
  1046. JMP PPU_Proc_End_Write8 N. T; r1 s  X- c
  1047. ;------------------------------
    4 h; K: e: c, i9 F& _
  1048. PPU_Proc_End  ;单行写入结束1 X6 H5 d" E! E8 ^; G' e
  1049. INX4 U8 V8 n' I/ i9 c  @
  1050. LDA PPU_Addr,X
    / l( l4 W, ^0 `& ^7 ~! H2 {, `
  1051. BNE PPU_Mode_Select8 Q2 B, G( |7 g* r8 t/ t
  1052. STA PPU_Addr7 B& W! E' v) z1 H6 i( {5 \, o6 b
  1053. JSR Update_Palette_Color
    # v; k2 V5 a/ D& E0 A& {

  1054. $ J' |& _, b+ u- `% Z
  1055. PPU_Proc_End_Write: d' w$ N$ F* p. h: I
  1056. LDA #$00! h2 p( K* U* Q# d4 N: l/ w
  1057. STA PPU_ADDRESS
    - Y; X3 O6 C; ?: u1 A1 ^9 {
  1058. STA PPU_ADDRESS
    + I8 I* F1 E; n& `  m
  1059. LDA <Text_Disable_Flag, i' j: f' A( z6 C9 Q: L8 [4 L
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF  @# d9 e6 l" i: B
  1061. STA <Text_Disable_Flag
    / K2 ^5 z; V; O& U1 _
  1062. LDA #Scroll_X4 u3 i4 N' p3 W4 M. m. e/ I
  1063. STA PPU_SCROLL- ^3 U. @' ~0 K6 R' Y' b- v. M7 k
  1064. LDA #Scroll_Y
    9 P7 x7 G5 Z0 J. U7 r% B9 N6 m. X0 q
  1065. STA PPU_SCROLL, h- n9 P( z7 }7 w2 y
  1066. LDA Screen_State
    ( z  @( M  H1 \* k7 U+ U
  1067. STA PPU_MASK
    9 B# u( }6 O. z( d' |! Y
  1068. RTS
    / U0 }. H+ z' j! M! b- b* @: f

  1069. % W6 t* a& w9 q# x. L
  1070. PPU_Proc_Clear
    7 [0 [& F4 n; Y5 h: v( m' W
  1071. INX
    * C8 R3 o, |" d# e( b
  1072. LDA PPU_Addr,X1 i$ {% U( K, ?7 X& K
  1073. STA PPU_ADDRESS/ {5 C4 k1 X, ?! a/ j7 A) {# q
  1074. INX
    4 g9 n8 E; g. r% I: ]! \
  1075. LDA PPU_Addr,X
    # S  T5 Y8 s( ?% M+ P
  1076. STA PPU_ADDRESS( {. Y) u( V0 z$ x
  1077. INX
    0 C9 `" W2 b( c1 j( E
  1078. LDY PPU_Addr,X
    & Z5 k" R3 E1 H/ }- ?- V$ h
  1079. LDA #$00& i' M. U3 W; Y1 m7 V  }
  1080. PPU_Proc_Clear_Write6 |% q. v, f9 E: f
  1081. STA PPU_DATA
    $ L- V( ~& K7 a2 i$ p( O7 S
  1082. DEY' U* Z. C8 a7 k" P% D! {" t" R$ W
  1083. BNE PPU_Proc_Clear_Write. R0 y8 u, x- ?) C5 \9 v
  1084. JMP PPU_Proc_End. v+ M3 Y5 W6 r% L2 z) {
  1085. . W: k9 Y4 K5 m. P0 X: ?
  1086. PPU_Proc_Cnt_Line
    1 H7 n* G" d1 K+ k
  1087. INX& t6 o# I3 u/ i7 G7 B8 d# U+ Q: C
  1088. LDA PPU_Addr,X3 Q  T: ?2 ~) B  ?8 G
  1089. STA PPU_Addr_H
    # B6 `1 ?0 E4 W
  1090. STA PPU_ADDRESS/ H  ^0 `. p. Z0 c7 O1 q
  1091. INX
    8 D. z/ ^' D6 d" l
  1092. LDA PPU_Addr,X
    9 V1 I* A8 Y7 W7 z- L
  1093. STA PPU_Addr_L
    # Y, M2 ~9 M( y( a9 X7 \/ Y
  1094. STA PPU_ADDRESS& ?4 |, O: j6 C  n) q2 f0 m. h
  1095. INX
    : F1 y0 I2 Y# d2 k2 X& V
  1096. LDY PPU_Addr,X
    2 l1 s: G, K+ v
  1097. PPU_Proc_Cnt_Line_Write  K% Z4 [. P' j
  1098. INX
    ! R: T1 N- m( w9 O+ h& f
  1099. LDA PPU_Addr,X* Y- \& s% L% f3 S% e5 y1 R
  1100. STA PPU_DATA# _) O* G  u9 D3 K% }, u" H
  1101. DEY
      G$ O: p6 ^  s
  1102. BNE PPU_Proc_Cnt_Line_Write
    2 C3 H4 _" {5 u# W6 Y
  1103. JMP PPU_Proc_End$ J- N) a# O  _8 l' ~9 l

  1104. " r" h, l- ~8 Z
  1105. ;==============================2 a. G) m& P  C
  1106. HEX_To_Dec;十六进制转十进制
    / ]! I( n+ _' o# F
  1107. STA <HEX_Data, M8 e3 r& o7 D! D1 S, ]$ ~
  1108. PHA2 l) k: s( }, n! `5 H( A$ {
  1109. TXA, ]1 v' [- L5 u* i3 ^
  1110. PHA4 M. {3 x8 B6 ]8 K
  1111. LDX #$001 }8 Z$ Q! q3 G" t' c0 [
  1112. LDA #$00$ w  _5 {% j$ ?0 }% R
  1113. HEX_Cln
    : j+ ^, d  z5 }
  1114. STA <DEC_H,X8 q; O3 N4 {: B3 I) j, a
  1115. INX. l  ]/ T& P% x& q5 R
  1116. CPX #$03& T  e" f( x4 s/ v8 `
  1117. BCC HEX_Cln
    5 G$ c2 m8 \) j
  1118. LDA <HEX_Data
    . X( f8 I. ^) ]9 P& b8 Y/ a2 O
  1119. ;------------------------------
    ) G6 {0 I0 \& T4 k! m8 I; y
  1120. HEX_100
    - f8 d+ J2 b5 U' D$ x9 R) p
  1121. CMP #1002 J& k  K' {9 C# f# g+ N. [
  1122. BCC HEX_10' B7 B( s5 G3 m7 I
  1123. SEC0 i0 h6 O1 q6 W" U
  1124. SBC #1000 `# n# B+ h: e# _5 @
  1125. INC <DEC_H) `$ i5 ~2 Q3 _+ m
  1126. BNE HEX_1005 x# `- @  t& h5 q% b0 b; t2 ^
  1127. ;------------------------------
    / R  d# E, U8 u/ x! r; a0 S
  1128. HEX_10+ k1 T9 ^5 F+ T5 c7 e
  1129. CMP #102 q; Q7 _* T7 Z; ~9 ^
  1130. BCC HEX_12 u% ~: v( N3 Y' c2 |
  1131. SEC
    ! F! X: h1 o. ?4 n6 b, H, l
  1132. SBC #106 ^5 Y' y9 x9 ~7 u) D
  1133. INC <DEC_T. O$ E. H9 d6 _: s9 n* a
  1134. BNE HEX_10
    / M! k* M$ C0 u: c- Y
  1135. ;------------------------------
    % t! b% d' T4 Y0 {* Y1 l4 R' ]
  1136. HEX_1  U2 g* n) f& R4 D& {' ~
  1137. STA <DEC_L3 I* |+ a" U8 [1 y* R
  1138. PLA  g0 _! p. G' }, J: G: f9 @
  1139. TAX8 N1 v- @# i2 _! A# }' V6 ?$ f/ y
  1140. PLA
    & H- U- {" P6 M' p) c4 \4 E
  1141. RTS
    " W0 z! ^1 l% N, f7 ^
  1142. 1 q' i1 i( b; \8 }+ G0 w! c( X
  1143. ;==============================1 O3 p" O4 p8 G) C! o
  1144. ;音乐曲目显示
    : L# q  s2 Z6 s/ g
  1145. Music_Show
    # ~( B/ z, j6 b' o6 j3 ^
  1146. LDX <Music_Item_Cur" U  D/ s- T1 X  {
  1147. LDA <Music_Cur,X3 q3 x. e  l$ X9 v5 h" V( k
  1148. CLC* J8 P* B/ }- x  B
  1149. ADC #$01, M6 M6 h; k3 y7 [: S0 K, V& U2 {' K
  1150. JSR HEX_To_Dec9 R, ?( q4 @: @! ?' x; E
  1151. LDX PPU_Cur
    1 q+ h& ^; n  i( _7 g; W% |
  1152. LDA #PPU_MODE_CNT_LINE
    9 {& K* A" J2 |, E: J# h5 |4 G
  1153. STA PPU_Addr,X' }9 O2 A- ~* t3 {7 N1 H
  1154. INX
    $ i1 R2 |: {; l, C% J, D  Y
  1155. LDA #HIGH(Play_Index_Pos)
      |; J$ w2 V/ z4 W
  1156. STA PPU_Addr,X: ^5 d# D: ?' S: {9 m+ u8 b
  1157. INX
    0 w% U, _& W1 u( `, N( \8 _
  1158. LDA #LOW(Play_Index_Pos)4 G! I' U% v/ z3 _1 d! E& p/ c. ?! w; y
  1159. STA PPU_Addr,X
    3 S+ w$ O. d) z8 B4 y
  1160. INX% b3 f0 _9 o3 f* N) i9 \: T( U

  1161. & t3 S/ J9 B3 u4 J, a* x+ f  |! Q
  1162. LDA #$07
    6 m) J- g( I" h6 R, v) G' `
  1163. BNE Music_Show_Length
    ; C# K8 a9 {( c) [' ^

  1164. + R5 A2 F- J$ k: h) b
  1165. Music_Show_Length0 V( c. Y5 e+ Q7 R5 j' C$ _
  1166. STA PPU_Addr,X+ c# R& ?2 Y& X/ @: f) x6 B! U
  1167. INX: W8 M% q, y5 @. c* Q

  1168. 6 g* U  d. \* F0 S8 X+ Q
  1169. LDA <DEC_H
    / \8 D" L2 [$ S* Z
  1170. ORA #'0'
    $ Q" O  N8 c3 W* u  x  b
  1171. STA PPU_Addr,X
    5 T& i# F: B& u! X( m
  1172. INX
    7 ?8 O+ P9 Q# p" a& F" \

  1173. - U  x$ a* F& K& }. R* W
  1174. LDA <DEC_T9 q' j0 U$ \/ K* [
  1175. ORA #'0'
    3 F# q( H$ F3 k4 k! ^; e0 r  I
  1176. STA PPU_Addr,X* Y  g2 j( |  X0 \3 w. B7 x
  1177. INX
    & l+ M1 ?( R' T9 U1 c9 [

  1178. 8 _% d5 F9 y, n5 X
  1179. LDA <DEC_L
    3 h7 r! F- v' B' o6 `2 _5 R
  1180. ORA #'0'
    1 X, j8 Y. t9 D. Q5 |+ a
  1181. STA PPU_Addr,X, v3 [# B  m& d5 E- M
  1182. INX
    ; A. O, U! k& l. b! \4 w, w
  1183. ) N" Y: i' a1 F, v( c
  1184. LDA #'/'  W- {. M& J- y* q
  1185. STA PPU_Addr,X8 O" t* }& w# m- e0 [- ~- p
  1186. INX
    5 I4 L( ]7 v3 ^4 Q" `: V3 g
  1187. Music_Show_Total' M0 x1 q* |/ J2 b1 H9 {' W
  1188. LDA Music_Total
    ( t1 ]. F$ {9 a. l8 @3 {
  1189. CLC# G1 _4 b& ?$ T' k" P4 p0 p# l
  1190. ADC #$01: h) Q! W: R$ k# V7 b
  1191. JSR HEX_To_Dec$ X# J( ^! R/ ^3 |' d( Z

  1192. 1 U( ^9 _/ k/ l2 W1 p/ @  R
  1193. LDA <DEC_H$ \) l, u: d8 |# |
  1194. ORA #'0'
    / G/ F& m: [$ z# f
  1195. STA PPU_Addr,X
    ; v# b5 H( v- E
  1196. INX
    8 i: ?6 j  f* t( k

  1197. ) B) G% C9 ?3 t5 `$ K
  1198. LDA <DEC_T4 Z$ j' m* n2 M; ~7 P, s
  1199. ORA #'0'% A% x2 }4 }  ?% c, A
  1200. STA PPU_Addr,X) Q( T* l5 m$ G0 n9 t
  1201. INX
    2 b3 \  Q! c* b% f4 e
  1202. 8 Y: T9 q' f; P, P! o& b
  1203. LDA <DEC_L! t: v  \" w+ L5 ^
  1204. ORA #'0'
    # K4 a, [( }, S# d% j) M
  1205. STA PPU_Addr,X
    . M& ]/ J) [- M1 W4 V8 c1 y9 ^
  1206. INX
    4 m, p" S1 f/ k. Y$ O2 V

  1207. / }, J) \+ `+ ?4 A2 G
  1208. STX PPU_Cur
    ) t( g* N* c9 G4 F0 b
  1209. Music_Show_End
    0 P  U) ], c( J0 E& t+ {, X
  1210. RTS" H7 r) Y. g! R! C
  1211. + o7 O! T9 t% D# z! Y; u6 F
  1212. ;==============================
    8 x7 w# F2 i5 e' ?& C, j; d" h* H
  1213. Time_Show;播放时间显示
      m7 o' h) a! R. Y; Y, t  w' _
  1214. LDA <Text_Disable_Flag
    3 \8 D. [, P. {+ N  S/ A7 l' t2 K4 N
  1215. AND #TEXT_DISABLE_ITEM8 F& }" J, @" H5 L( b
  1216. BNE Time_Show_End
    0 c# ]1 s1 _- A) R
  1217. AND #TEXT_DISABLE_TIME' m3 U6 E  L# Y; I$ P. X
  1218. BNE Time_Show_Enable  J: b+ g9 w9 Y& N6 Z

  1219. ) E: q0 H- _4 U! E
  1220. LDX PPU_Cur
    " w. |2 m% D9 `& H+ N; J! W5 @$ A
  1221. LDA #PPU_MODE_CNT_LINE7 C+ [2 L8 U! Y) E8 j3 K; C5 [
  1222. STA PPU_Addr,X
    ! x2 x# K7 s7 L
  1223. INX/ e' V: P) e" [+ {7 L
  1224. LDA #HIGH(Play_Time_Pos); R0 c0 H4 P( u8 a* N+ N
  1225. STA PPU_Addr,X7 ]5 g6 o0 t# @  ?& u9 }
  1226. INX
    / H( k1 d! |8 @& R6 R" x
  1227. LDA #LOW(Play_Time_Pos)
    , N& j4 ~! S& e
  1228. STA PPU_Addr,X
    9 e( o+ p; Q5 v/ d; @
  1229. INX
    . @9 A& z8 ~4 r- m& _& l+ Y
  1230. LDA #$08
    ; L6 p  ^" G# z& J+ O- }
  1231. STA PPU_Addr,X2 C/ b  W  [. N3 l5 Q$ s: Y% M. C) q
  1232. INX3 w) d# g; j, p/ r9 n
  1233. Time_Show_H
    ' c' L2 a7 D" j: _9 }
  1234. LDA <Time_H) o4 Z7 j# Y6 m& R# u
  1235. JSR HEX_To_Dec
    9 b; Z; x) X4 O  M" e  N
  1236. JSR Time_Digit9 Q" j- C) H. T
  1237. LDA #':'
    " z! \2 v: j  x, P
  1238. STA PPU_Addr,X# b1 v: `# w; A1 V6 p
  1239. INX3 c: s6 ^+ E4 h* p* m
  1240. Time_Show_M% v0 s6 k( e7 J# o
  1241. LDA <Time_M4 B; s- j. z; ?; a, k0 g
  1242. JSR HEX_To_Dec
    " i) s* z& m, \* l+ b
  1243. JSR Time_Digit5 O( \8 Y3 X! O4 q' E
  1244. LDA #':'* B) c( ]5 K4 Y
  1245. STA PPU_Addr,X# ~7 O: l, \5 N& @) a; _8 f% h
  1246. INX
    + f' ~+ a7 a, t/ M( C# o1 y. {" `
  1247. Time_Show_S5 d, d+ o% s: d4 r$ W
  1248. LDA <Time_S! T8 I: n( I/ n" v: d. p( [& \5 O
  1249. JSR HEX_To_Dec7 `* P" @9 _2 P! L  l8 b5 w
  1250. JSR Time_Digit  S' O/ A% F7 I" G) J% o$ D2 N$ O
  1251. STX PPU_Cur
      p% O+ G& Z% g+ [$ q% }& h: a1 S
  1252. Time_Show_Enable
    # j9 {& K) ~6 D( C& F
  1253. LDA <Text_Disable_Flag
    6 {- ^, N0 b0 c
  1254. AND #TEXT_DISABLE_TIME ^ $FF, u* I% {- \7 M3 n' ?+ X
  1255. STA <Text_Disable_Flag
    " d* D& x" d) f1 _( C' \
  1256. Time_Show_End
    5 g3 P/ E% E4 w# ^! v/ P- J
  1257. RTS
    3 m' a( x- \9 E) s3 c5 V! W; v

  1258. # r& K' r& e% U
  1259. Time_Digit
    . u  c4 n/ o& l; T* Z) |( s
  1260. LDA <DEC_T
    7 w. \7 W# M& {) [
  1261. ORA #'0'/ w: G2 A- c' r% q# s9 Q
  1262. STA PPU_Addr,X
    ( E+ y& ?  T$ B! b0 I) }; `! |; @, Z+ ~
  1263. INX
    ; z0 b2 B0 p% f  g( I7 \
  1264. LDA <DEC_L3 G1 [2 Q1 w# G3 |' Z! }
  1265. ORA #'0'
    1 K( u$ d6 ^6 w" _& d7 W* Q+ ?% `
  1266. STA PPU_Addr,X, `; f# M9 c% u. f0 {/ i  R
  1267. INX
    9 S5 O: r! u, }1 g# d
  1268. RTS
    & A# Q- Y+ v% y- i2 ]- T3 s2 P
  1269. ) g  V3 V6 C+ H2 |5 B( W$ @0 ?3 @
  1270. ;==============================2 j& O) ^, ]/ {0 o" H$ A
  1271. Time_Count;计时! V( y! r! `/ M" z/ g* W4 y. x1 b1 Z
  1272. LDA <Music_Stop_State
    7 c+ F( f* _7 V  T, J' ?# p  I
  1273. ORA <Time_Wait_Cnt' ^- f" Z3 ?2 f8 F
  1274. BNE Time_Count_End
    + O' }% V' O7 l3 C* p" g
  1275. INC <Time_Cnt
    , d7 z* \* R" I5 m. G
  1276. LDA <Time_Cnt0 h% K3 y: A& b  J6 i
  1277. CMP #60: t. `6 U1 f3 |
  1278. BCC Time_Count_End
    ! y2 v) s( E/ q8 f. R; v
  1279. LDA #00
    ) a/ F/ J4 a9 y: U8 \- G3 l( J6 z
  1280. STA <Time_Cnt
    0 Z* ]4 o; V3 q* Y7 m, j
  1281. INC <Time_S
    ; c+ Y" p0 |+ P8 l- W$ x

  1282. , `5 H8 x( `% E) }6 m
  1283. Time_S_Cnt/ [. U3 n# ~7 L7 n
  1284. LDA <Time_S- w- Y+ e7 S; ^' C( v
  1285. CMP #600 N0 P: }1 O3 @6 y) I  T
  1286. BCC Time_Count_End
    : [) |8 E' E9 O" t$ V
  1287. LDA #005 @* F% Q1 n" {' n: D. m4 e
  1288. STA <Time_S9 b. S% O$ b; W( ]! w8 x; S! a8 U
  1289. INC <Time_M
    9 m* ?0 Y5 E% F) W; [# K" T/ K& R3 k

  1290. - H$ |" V& W- @( K2 h
  1291. Time_M_Cnt
    9 S5 f: H- j, W/ M% A
  1292. LDA <Time_M
    # W( n# A+ _! R( w" T$ Q! d
  1293. CMP #60
    + W  K9 U4 o7 {$ t! r1 |- x$ b
  1294. BCC Time_Count_End
    $ F  {8 F* C1 ~% K1 R9 J; r( s: y1 p
  1295. LDA #00
    " W  z- U6 c+ f7 o4 Q/ d
  1296. STA <Time_M: Y0 o' I% ^0 @4 V
  1297. INC <Time_H, K, z* H! w5 e
  1298. 7 G' k. x; q0 B( I0 u
  1299. Time_H_Cnt
    8 h8 n* H0 ]% m' k
  1300. LDA <Time_H
    6 q+ E) e' |. w5 t
  1301. CMP #24' h6 C' e" J" {3 l
  1302. BCC Time_Count_End
    5 _: |/ ^" I1 c2 m
  1303. LDA #00
    " O" }& y) V' b6 [4 W* I7 v
  1304. STA <Time_H
    ) [3 K- C4 q$ J8 l% k: h; _

  1305. ! l& R, l6 y# X, a2 K' ?
  1306. Time_Count_End: m! q- o5 v  g2 i6 z4 p
  1307. RTS
    9 N$ [7 B  ]8 f) x2 ~

  1308. 5 `$ D3 e! v8 }: E
  1309. ;==============================2 w* d5 H# f& k, J5 [
  1310. Time_ReSet;播放时间重置0 X  d9 \( m( }$ }5 u
  1311. LDA #$00+ P7 i. Q+ E3 d5 H+ r2 Z( a
  1312. STA <Time_S
    $ S  S) q& R7 w& R5 G- t
  1313. STA <Time_M * f, v5 W, z4 T2 m, J% ?1 H* B: I+ ]
  1314. STA <Time_H
    ; B5 H" U& L: k2 g# A6 G7 a! }
  1315. STA <Time_Cnt
    2 O: g3 k% g! C' C1 D$ u" }- G
  1316. RTS9 M- W6 X3 _3 V' G) g# F" Y0 U

  1317. 3 t7 M$ P5 L6 r6 i' A
  1318. ;==============================/ ?+ {* e  t# ~7 Q+ ?- y
  1319. Music_Bar_ReSet;音乐条重置0 x& V3 K. [# W+ }6 _
  1320. LDA #$00! k/ i# S! T( N& `
  1321. LDX #$00
    3 ~3 _! p( q4 c% g8 j
  1322. Music_Bar_ReSet_Set  ]/ L& i1 d1 s4 V$ Z9 ~( J
  1323. STA Sound_Bar,X& L5 ~" u  X! L
  1324. INX7 n9 z0 P( t. t) }8 w& }9 Q% m8 E
  1325. CPX #$10
    * S8 t% v5 H6 ^% {  m9 Y/ ?
  1326. BCC Music_Bar_ReSet_Set
    * T# h6 t, @9 G: ]1 u4 t. F
  1327. RTS
    . I) N8 M, s- r6 p

  1328. - B: ^3 u. A$ m( p6 l" X3 R# Q
  1329. ;==============================. ^1 X9 u: x! I. q: r: R
  1330. PPU_Data;PPU数据写入! @. O0 v+ \5 C7 V& t$ p" j
  1331. STY <Data_L$ Q  W# p3 g, n: F4 ]: f- g3 G
  1332. STX <Data_H3 Z1 ]- {. B( d, f" m
  1333. LDY #$FF& ^# V0 w6 E/ G' f6 ~" M" M0 L
  1334. LDX PPU_Cur
    % k8 W4 l5 n! ?1 ~6 s& S$ B6 `
  1335. DEX% M/ {# W% I( s5 ~2 f
  1336. PPU_Data_Beg& |9 ?. c2 h4 `+ ?
  1337. INX
    ( x3 T0 k* g, _! C/ g' ~3 l
  1338. INY# m5 Q  m7 e+ E( o% [
  1339. LDA [Data_L],Y) B7 s) f# j, E- {) H: T$ j
  1340. STA PPU_Addr,X
    1 C" B) o7 d, S- J% D5 u8 P
  1341. BNE PPU_Data_Beg' ~0 R; \) o- w& s, J! ^) ^
  1342. STX PPU_Cur
    % E) L! E# I9 W& T; Q
  1343. PPU_Data_End
    - ]; J' g5 V7 \8 ?
  1344. RTS
    ( G+ ?* T" U. Q6 C

  1345. + ]3 d) H2 ~( @/ K+ Y/ @/ o/ N
  1346. ;==============================
    8 ~. Q* P& q7 o0 r7 `0 Y. T9 K
  1347. Music_State_Show;播放状态显示
    6 b' }! w# ^' ?: o3 g$ l
  1348. LDA <Music_Stop_State
    / p3 [" O  s$ N5 _" ]# d* [
  1349. BEQ Music_State_Show_Play7 S2 y: X' m0 q) [6 N
  1350. Music_State_Show_Stop4 O- E) h- j8 j$ @, S  q
  1351. LDY #LOW(Music_State_Stop)
    + d8 `! v+ @4 y' t, F
  1352. LDX #HIGH(Music_State_Stop)" ]" ]5 ]- b, G) h; d7 ^' I  i0 z
  1353. JSR PPU_Data
    8 A- W% Z$ W) N) L0 K3 o  q0 @
  1354. RTS
    " c% \# W* k* D
  1355. Music_State_Show_Play/ X0 S: D+ A8 i& r# j; f9 Y
  1356. LDY #LOW(Music_State_Play)* x9 s1 C9 N3 r3 G! J. @% B8 j
  1357. LDX #HIGH(Music_State_Play)
    3 ^+ s/ N$ p5 Y( |$ I
  1358. JSR PPU_Data! {8 l# L, |4 A* [& O" M
  1359. RTS
    " D  n7 J5 M/ ]" s8 o4 K

  1360. 9 l  X: e3 u4 T& l
  1361. .IF SOUND_BAR_SHOW_ENABLE
    * y1 E5 A$ \* E; N) G3 d8 H9 |' U
  1362. ;==============================
    ; L8 @* n3 {; R
  1363. Sound_Bar_Text_Set;标题与音乐条初始化" z" @7 p7 u9 P" C
  1364. LDY #LOW(Sound_Bar_Text_Data)
      r/ b5 @7 ?* ^
  1365. LDX #HIGH(Sound_Bar_Text_Data)6 Q) X" M; j$ q; s
  1366. JSR PPU_Data0 w" Q3 V7 i" S7 J
  1367. RTS
    ) f8 O8 ?3 j7 p+ ^
  1368. " d. a& Y4 |# |7 W5 p- P. i/ x. K
  1369. .ENDIF
    ; \% e9 `3 j; U9 P& q
  1370. ( i/ q  i: [  _& p5 s8 g# X
  1371. ;==============================! m% p4 u% }6 C5 q, G4 ^
  1372. Set_NameTable_Attributes;设置命名表属性$ ?* D* @8 }* Z6 i! z% A4 Q
  1373. BIT PPU_STATUS0 E4 R) j6 k- V2 E
  1374. LDA #$238 E1 U2 {  D4 T! ^) c- a
  1375. STA PPU_ADDRESS' M# h% A# [7 O- I7 A
  1376. LDA #$C0. y* D/ R+ _* j; E1 ^- B/ k
  1377. STA PPU_ADDRESS4 Z. @+ S5 B1 X$ o
  1378. LDX #$000 ^, }+ o% x! d! f# Z
  1379. Set_NameTable_Attributes_Write8 Y* ?: w9 E( g: p
  1380. LDA Palette_Attributes,X; F) T. G8 Q) f9 P
  1381. STA PPU_DATA
    5 B) N$ N! g. J' W! ~! [6 [
  1382. INX1 r$ t0 r! \) ~5 t
  1383. CPX #$40
    8 B$ `2 w7 A$ ?3 S" ~" Y
  1384. BCC Set_NameTable_Attributes_Write( ~0 J$ x: \: G  v( r* |5 G
  1385. RTS$ E/ ?* r2 c5 l2 t; W4 I2 f" t$ O

  1386. ; S9 C) J" r( C6 F0 E# h  S
  1387. ;==============================
    / b( e) b6 e) L/ b/ ^
  1388. Set_Palette_Color;设置调色板数据! @" X, {* c2 u- j
  1389. BIT PPU_STATUS3 ?# i; E  T4 n' p8 p9 b. G
  1390. LDA #$3F* l/ U/ K/ D8 {' W1 R+ L7 K& }
  1391. STA PPU_ADDRESS
    8 o. O6 {+ O9 C' {) w0 z* m
  1392. LDA #$00+ d" C) f/ r; R; K' |: F7 U
  1393. STA PPU_ADDRESS% J% N# L6 R8 T6 n8 `
  1394. LDX #$00
    1 O& y) ]1 \& @2 I$ c8 R% i5 W0 Q
  1395. Set_Palette_Color_Write
    ( \2 [. g+ A: f* \% R1 O
  1396. LDA Palette_Data,X
      H9 Y) b! d- R! Y( q
  1397. STA PPU_DATA
    * d0 e* i, J5 S) s
  1398. INX
    ' H# {4 J% N6 n: W6 T9 w
  1399. CPX #$20
    3 X( g$ w/ ?5 r6 r, k. U5 J
  1400. BCC Set_Palette_Color_Write
    " g3 F' K1 G0 P5 D
  1401. RTS) g6 k# T+ b2 o

  1402. ! K  N9 A8 [4 X$ @  ~
  1403. ;==============================
    # N$ W" V; c$ t
  1404. Init_Palette_Addr;初始化调色板数据
    3 P8 I8 z( ]) L: M9 o' p! J
  1405. LDX #$00& e8 q9 z* p* c
  1406. Init_Palette_Addr_Write
    5 T% A5 \% F/ N+ P
  1407. LDA Palette_Data,X
    : t# K2 }: s; q0 {5 g9 c# n4 `
  1408. STA Palette_Addr,X+ m% d/ n$ l' X  s0 F! N
  1409. INX* _  i5 j& |% r3 x
  1410. CPX #$206 y2 q: v; G: N( E% L& a: u
  1411. BCC Init_Palette_Addr_Write
    . G3 L( m- C, n7 o9 v
  1412. RTS+ Z. I( K! u( x9 c7 d3 `7 O

  1413. 2 m! ~: @2 M" u# i3 M+ C
  1414. ;==============================) j# k: t$ G$ X& H7 H
  1415. Update_Palette_Color;更新调色板颜色7 ]6 k2 X- l# r
  1416. LDA <Palette_Update_Flag9 C; V$ m" }0 G! [! A( M
  1417. BEQ Update_Palette_Color_End
    0 A* c9 S. t! D$ A+ w. y9 x( e
  1418. LDA #$3F
    * H" H1 f" y  c' O  z7 u
  1419. STA PPU_ADDRESS
    9 ^0 y$ F" P- S; i* l8 Y. f
  1420. LDA #$0C
    $ K. P1 e2 Q$ r* e2 j5 [
  1421. STA PPU_ADDRESS- I  Q& `6 v- s3 I+ I- ]: m! U
  1422. LDX #$0C5 I3 \  t# f# A* ^; c0 h0 a
  1423. Update_Palette_Color_Write
    + D& _" e0 ~. i7 U
  1424. LDA Palette_Addr,X
    $ ]5 U" g8 K) i6 k, E% b
  1425. STA PPU_DATA- {2 ]/ Q& @1 Z
  1426. INX
    ( `5 P2 e1 `* k
  1427. CPX #$14# n2 H# z- X9 Q. [& p2 c
  1428. BCC Update_Palette_Color_Write
    2 s( w/ D% V- q4 Z) \
  1429. LDA #$00* v1 _8 @3 u9 N7 p  r$ y+ T5 P9 m
  1430. STA <Palette_Update_Flag
    3 b% p8 f7 y+ o7 L" t- q3 p
  1431. Update_Palette_Color_End
    / C# b9 V( ^4 q0 J8 |* t' t/ J3 J; l
  1432. RTS7 }# X* Y; y2 [4 b. f

  1433. # s! }0 Z2 U& n8 x) Y. Y
  1434. 3 a$ `' y" _. a. v4 k9 z8 r
  1435. Update_Sprite_Palette_Data: \+ J0 `4 l/ L0 O
  1436. .DB $21
    # ~" B8 |. E; _0 {, k/ ]  g5 s9 Z' s
  1437. .DB $21
    2 I( h0 ^7 w  K0 S# t( r
  1438. .DB $117 V0 b5 F# l( E* L8 E0 F
  1439. .DB $019 I( w1 Y9 j9 }" e# {
  1440. .DB $01
    2 B6 Y4 I) x$ v& g- Q" L* V
  1441. .DB $11
    4 F% _9 S$ [, [, j
  1442. .DB $214 }, A( D0 T' Q: I* b/ l
  1443. .DB $21
    " @$ W' E+ {; T$ A7 I3 I' V
  1444. .DB $11
    ( |7 a% M! n- F1 z. h0 X# R% {8 p
  1445. .DB $01
    & p6 w3 ]) L6 ]0 C
  1446. .DB $11  h9 |+ o( l* |8 D/ X/ o- P
  1447. .DB $21
    8 h/ B( _  z0 Q
  1448. .DB $21. X0 c! Q0 B+ c) c- c( h1 _
  1449. .DB $11
    $ b; |7 [+ Q; j6 L( x4 z
  1450. .DB $018 @$ ^* U. J+ H, f5 x) n
  1451. .DB $11
    5 I1 d$ X, G& N3 u: e7 T* `
  1452. ;==============================( |- G5 J/ s' I3 m" g# Y: @
  1453. Update_Palette_Data;更新调色板数据( ~$ i* ^. ?  H0 R* F( Y: f' R/ l
  1454. LDA Nmi_Time_Count' N) a8 |, ?$ J- e) D
  1455. AND #$08! y2 m4 Y1 m( m9 C
  1456. CMP #$08
    : ~# k" l1 C4 q: Z- Q% F
  1457. BNE Update_Bkg_Palette_Data& B2 \3 S1 B; s& M

  1458. 1 o* Q0 Y; ?0 D. l7 p7 I" d7 X
  1459. Update_Sprite_Palette_Data_Set# ?" ]; @/ i1 k0 h% C
  1460. LDA Nmi_Time_Count( p9 X, M6 m; X! o# G7 K
  1461. LSR A
    8 B8 V' m% w: v+ H! E6 s7 T
  1462. LSR A( n+ g  ^  U, ?. ^# J, b
  1463. LSR A( {1 J, B4 l3 E: Y( q% x/ h! n
  1464. LSR A! p1 I3 u( m- q$ B7 e# z. X
  1465. AND #$0F
    9 x1 `7 C2 }0 f9 W
  1466. TAX
    2 L0 p8 u: f8 \8 [8 Q8 k% D- N7 A+ T
  1467. LDA Update_Sprite_Palette_Data,X& w/ |7 a6 O" M# n: w" B
  1468. STA Sprite_Palette_Update_Addr
    ! m# I; @: L6 r8 U0 @- y
  1469. LDA #$01  N! |0 X! K0 [
  1470. STA <Palette_Update_Flag: }: J/ K8 Q1 d, }
  1471. 8 c6 J  _: Y' @. q6 B3 l. K9 A; U, x
  1472. Update_Bkg_Palette_Data
    . Q# i$ b! [! G9 Q9 V( F
  1473. LDA <Text_Disable_Flag
    4 k& W! Z' r4 b+ f
  1474. AND #TEXT_DISABLE_RAM
    9 M! G! q7 B0 n
  1475. BNE Update_Palette_Data_End# H9 t3 D) ]( O+ b7 @' ?
  1476. LDA <Music_Stop_State! d) d% u9 b8 C# ?% G, Y
  1477. BNE Update_Palette_Data_End
    # M# i/ G) B+ G2 d1 N
  1478. + O6 S$ Y- l) T  S
  1479. Update_Palette_Data_Check6 @: g* a2 U5 ]8 n. E; R9 z- h
  1480. LDA Palette_Wait_Cnt5 Y/ G" i( _. o3 f& A
  1481. BPL Update_Palette_Data_Check_Over6 ~' v) e0 S2 r/ n& i$ g9 X' C6 Q1 b; g# a
  1482. LDA #PALETTE_UPDATE_INTERVAL
      u# m+ }* x0 _) Z. k2 J$ c
  1483. STA Palette_Wait_Cnt- U; L5 A' Z; x6 k: v
  1484. Update_Palette_Data_Check_Over8 c! e7 [5 k+ B4 U& Q& i/ m
  1485. DEC Palette_Wait_Cnt
      O9 T0 X$ `. t- n* }) W( h# K
  1486. BNE Update_Palette_Data_End" M' _! K# m0 x1 h( _8 t2 Q8 Y
  1487. - O+ U- {' J) N: t7 S
  1488. LDA <Text_Disable_Flag
    3 L9 o/ U8 N( N  t& p
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ( i2 x5 k. M* F0 s9 c4 v
  1490. STA Text_Disable_Flag
    4 T- e* h# i; e& Z
  1491. INC Palette_Update_Flag
    : d- X# Y% q9 v; a6 H
  1492. : e" ]7 G3 B$ U* w1 }% c& F
  1493. LDA #PALETTE_UPDATE_INTERVAL
    ( \4 h3 Q. J. J6 K8 {( O# }  t
  1494. STA Palette_Wait_Cnt) f( m( o% r' |, }

  1495. * W) s5 ~7 X* E" w
  1496. LDA Bkg_Palette_Update_Addr' d" v  }) C8 X" l% }9 ~. q9 L
  1497. CMP #PALETTE_UPDATE_MAX0 \% R) R" b8 @' P9 V
  1498. BNE Update_Bkg_Palette_Data_Set
    0 W3 S$ g" W1 r. s5 @7 M& E
  1499. LDA #PALETTE_UPDATE_MIN - 1$ \1 n# e9 A4 w2 F
  1500. STA Bkg_Palette_Update_Addr
    3 Z4 R5 ?5 }/ x5 a: L
  1501. Update_Bkg_Palette_Data_Set, `& P7 ?2 t3 j" @
  1502. INC Bkg_Palette_Update_Addr+ i) E- Q( H4 u) D( P$ c0 o8 x# R/ i

  1503. $ ^3 f% U5 W; c1 G, W3 o- s
  1504. Update_Palette_Data_End
    ' n& t9 l1 n! V0 M& V; h$ C4 k$ _- @6 Q
  1505. RTS0 @' g% b8 ?# v2 M
  1506. " o+ D1 _5 z5 e" K. X) M
  1507. ;==============================& n- h0 R$ P0 [/ |
  1508. Show_Music_Text;显示静态文本9 _( M0 H7 Y; b4 m5 J0 ~6 I9 P: s
  1509. LDX #$00
    # H" \* s" e2 X0 v! i& x1 G0 f: `
  1510. Show_Music_Text_Set
    6 k0 i6 C- P* r( C" h, E
  1511. LDA Static_Text_Data,X% V; R; O3 l5 Z+ v# K, V3 T
  1512. STA <Data_L
    6 Z4 x! Q" g' m  I  ]' c" }
  1513. INX
    1 S& h3 A3 x9 E2 o: m
  1514. LDA Static_Text_Data,X( J6 J) ?# y/ `  N/ ~
  1515. STA <Data_H( N1 {" Y6 }( i
  1516. INX
    % t  I/ @( J0 E- s. I8 \: ^+ F
  1517. LDY #$00
    " T8 O& P( W1 w2 A9 I
  1518. LDA [Data_L],Y4 m/ y  v# s, Y% L0 R( n
  1519. STA <Data_Cnt
      y& {8 u$ e6 W9 _7 t* ^
  1520. DEX
    ) x: C9 q: _' A: A, m# l
  1521. DEX$ R9 X( g4 P  \5 Z" d3 v
  1522. LDA Static_Text_Pos,X
    . h1 ?) g6 X2 Y* x# s% R+ U
  1523. STA PPU_ADDRESS
    & E* {1 X8 K4 H% a
  1524. INX: L$ @+ r+ J* V8 _
  1525. LDA #$20, H2 r8 |; W8 g1 v4 K5 [0 w5 q8 f# U  x
  1526. SEC
    ! {& D7 |" ^  [$ w3 K/ k- L
  1527. SBC <Data_Cnt
    + {" D% H  ]) R) S
  1528. LSR A4 a- o8 S/ n& |7 s- }; U
  1529. STA <Data_Buf
    # w2 O" P5 s, h! ^
  1530. LDA Static_Text_Pos,X
    ' a% n0 Z/ y# z) t8 e2 K* @! ?
  1531. AND #$E0- n4 N- @( j9 x% e& P
  1532. CLC
    1 _  z* F$ v" i7 G; d& R& K
  1533. ADC <Data_Buf
    5 _& ?1 L- y7 L" t
  1534. STA PPU_ADDRESS
    4 C  z1 U+ ?6 O+ j
  1535. INX6 X: F$ C" F# L
  1536. Show_Music_Text_Set_Write+ Z) X+ @' N; h! c% f! ]
  1537. INY2 K( }! D9 ]- C8 a
  1538. LDA [Data_L],Y
    2 Q2 x' o6 o# t! p3 U! ^& m
  1539. STA PPU_DATA6 p4 l$ d- p' I8 c# X4 }
  1540. DEC <Data_Cnt* @( Y* `. a' z" v0 y3 Y
  1541. BNE Show_Music_Text_Set_Write
    & z9 J) j. |5 |% a
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    ( T( ~6 n- e6 u  X2 O9 u8 i  X
  1543. BCC Show_Music_Text_Set
    + u( J5 Y  x' Y7 y
  1544. RTS% L  ^4 z/ _9 T2 k; X# u  Y+ c
  1545. 9 j* V, g% g* x$ t6 i  ~
  1546. ;==============================. @* T3 u/ ]* M: Y
  1547. .IF Track_Name_Pos;显示曲目信息
    % v! K0 S. D7 D3 E
  1548. / \$ G5 ^" f5 x. w: T
  1549. Clear_Track_Info' {' q. E4 c6 @4 ?; `" n. g- C8 U
  1550. PHA
    + h- q& q& n( A! ^
  1551. LDX <Music_Item_Cur
    & {8 n$ J( {0 _. K; T
  1552. LDA Track_Name_Addr_Flag,X
    ! _( Y9 N$ p6 S* T5 J7 G% z. W! k2 B8 a
  1553. BEQ Clear_Track_Info_End_Ex
    ( j) E! z, H. r& F0 _; F! N
  1554. PLA
    / D) W* w* O! C( e2 {' S$ d$ x* ]

  1555. 0 ]3 z1 ]. ]9 o4 d: p* B
  1556. LDX PPU_Cur
    - I: p2 N  L1 ]# m6 T  c
  1557. PHA
    . k3 P$ {& r1 S% L$ v: h, D
  1558. LDA #PPU_MODE_CNT_CLEAR
    ' K5 A8 b( B3 {4 A0 {
  1559. STA PPU_Addr,X
    2 f' r) o; Z5 u1 @+ N/ G5 u
  1560. INX* b; Z: w- q  Y4 s: n9 ]
  1561. PLA3 q& ]1 X7 s: b0 n2 {; o
  1562. JSR Show_Get_Track_Name_Center_Pos. @$ d9 o5 U$ q3 F+ N
  1563. STX PPU_Cur
    ' c0 B3 J, P: p% o1 U( ~* b
  1564. Clear_Track_Info_End
    ' T! b+ I# f& B* l, V
  1565. RTS
    , Y& ]" o  X2 h. `# [
  1566. Clear_Track_Info_End_Ex5 v& V7 C4 W( d6 i0 m9 }% w
  1567. PLA) ?4 e! r; \, y4 j2 p) {% G
  1568. RTS. c3 M7 z6 [: K6 y9 x6 L8 c0 l

  1569. ( a& J* r9 m3 g7 |
  1570. Write_Track_Info
    $ G. X3 x7 L: C5 x
  1571. PHA
    % h# ~2 ~7 _1 ]
  1572. LDX <Music_Item_Cur
    & a+ R" p7 w* D7 Q2 o1 n( t$ s% L" P
  1573. LDA Track_Name_Addr_Flag,X
    % y+ ]+ y" v( t+ W9 S+ {" w$ G7 @+ o3 j
  1574. BEQ Write_Track_Info_End_Ex2 {) v9 ^! i2 Q+ d. M# K4 s( C
  1575. PLA$ A) A. P5 c: r2 d; R  T- H/ U

  1576. - K% B* m6 a2 @% v: j
  1577. PHA0 Z/ O  R" k, v9 R& s
  1578. LDX PPU_Cur
    . T3 c: W  F% S5 B7 o( b5 ~
  1579. LDA #PPU_MODE_CNT_LINE
    ' K; z0 R. d) S/ [
  1580. STA PPU_Addr,X) |. o6 {0 Y* F8 g" C5 p. r8 D
  1581. INX- I* f; P) E  F' _: A
  1582. PLA
    ( S' B' [+ b# @) ?+ _
  1583. JSR Show_Get_Track_Name_Center_Pos
    9 ^3 n6 O. B' @6 D
  1584. Write_Track_Info_Data. `% T$ n4 B: _" [
  1585. INY
    & w5 J( h" P) ~% K4 Q# M
  1586. LDA [Data_L],Y* ]1 Z. A9 j) D* z& x
  1587. STA PPU_Addr,X" @8 L2 X# m" P" B& I
  1588. INX9 j: ^  E6 G, n; B  z. q4 P& h/ [
  1589. DEC <Data_Cnt4 t8 S: @; Y9 R: c5 ]: [
  1590. BNE Write_Track_Info_Data
    : e8 I/ S6 ]4 Y! L8 Q
  1591. STX PPU_Cur$ I. I* m' c6 U9 U+ }3 s! ~4 S! p
  1592. Write_Track_Info_End8 b' \4 s" c" w" r; z$ K4 K3 Z! l
  1593. RTS
    6 X' g# W# c- W. m
  1594. Write_Track_Info_End_Ex
    ! p9 |/ P% @3 }5 r
  1595. PLA
    & L! {( ~8 M6 v$ c" ]* _) E1 o; K
  1596. RTS) e# ~, r1 j' Y& ?
  1597. 9 w% e7 X- R' T* V% b* @
  1598. Show_Track_Info! w/ O: h" W. t8 y
  1599. Show_Track_Info_Clear
      `$ B$ D% `& B/ Z
  1600. LDA <Music_Last5 \1 z  B* w: }4 r' G
  1601. ' N" g3 S% l: E3 `! X
  1602. JSR Clear_Track_Info: K* H6 X  |7 D, G- J( E- H
  1603. 8 O4 L  z8 d* a- }3 V2 C
  1604. LDX <Music_Item_Cur
    6 Z) o* b( G7 N% m" S4 g
  1605. LDA <Music_Cur,X) x9 ?1 J/ c: m5 L- |
  1606. JSR Write_Track_Info7 u, v  N2 h/ m2 k- w2 m+ {# g2 o2 G" o
  1607. RTS
    / n3 t$ M# i+ q7 B4 \2 e* |

  1608. 2 N8 {& ?" R; s# [7 H7 A/ d
  1609. ;==============================0 H" f) h' T9 P' Z4 K+ B# Y5 J
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置# ~" Z( D% N: o/ ~: d6 @- l) Y; e
  1611. 0 p2 j# n5 x' t; M. J5 V
  1612. ;取出集合名索引
    9 M5 q- o3 t* I" ~. T
  1613. PHA9 j( O* N; D  |
  1614. 9 ^3 W! w2 R* m# u( T- e- [) q
  1615. LDA <Music_Item_Cur8 b, M, t8 G, L. G( u0 h
  1616. ASL A# T. u: w9 [4 s
  1617. TAY. y$ g/ ?% l6 |' C- S
  1618. LDA Track_Name_Addr_Port,Y
    ; i6 t6 C# S6 ?5 D
  1619. PHA
    9 b# ^. p: H- g! d0 f/ x# k2 G
  1620. INY* y9 z, O6 x/ \! N% j5 k
  1621. LDA Track_Name_Addr_Port,Y
    1 I4 `: x- q! W9 m% Y$ W; M6 a- K# g
  1622. STA <Data_H
    0 F5 o) C- [) i* Q4 Z" Q% O7 [- x* u
  1623. PLA
    ' r: L# g# F9 M/ U4 v- S, a, r, p
  1624. STA <Data_L
    8 j5 E# g6 U- x6 v* a( `# R

  1625. 0 [8 _9 s; u9 i8 h7 Y" h
  1626. PLA
    ' }3 h1 [! H, `" i$ ?" Z

  1627. 0 ^9 P, d+ w7 t5 f
  1628. ASL A2 _/ a+ L  G9 m3 E" I6 f
  1629. TAY
    ! T7 P. o+ C2 v. {5 k6 K5 c/ y
  1630. LDA [Data_L],Y
    * l. b! {5 r% {
  1631. PHA
    - p, _/ {6 E* d) t% x" H& D
  1632. INY$ Q! o5 O% ?; z" `9 B; s
  1633. LDA [Data_L],Y, t  ^/ u& z5 c$ d" t6 l
  1634. STA Data_H
    : j/ i5 Y1 T( K  M3 y
  1635. PLA; S. Q2 k- n, h" m3 f$ y
  1636. STA Data_L: P- Q0 Y. c9 c4 Z
  1637. ; c$ q4 G7 A, g! N, A* @
  1638. LDY #$00
    5 o. o: }3 k5 r2 G1 h! {
  1639. LDA [Data_L],Y" D$ ^+ u/ @: Z" i8 L/ ]
  1640. STA <Data_Cnt9 O/ |% k: w: M: u
  1641. LDA #$203 k- R1 J1 N  O3 O+ l. u
  1642. SEC/ h$ J& w1 q$ ^( Q; ?6 P1 }
  1643. SBC <Data_Cnt$ [. G6 G4 O7 D% E
  1644. LSR A
    : V( `/ y% j5 U1 k" n0 a
  1645. STA <Data_Buf
    % X# M0 T% G' y+ S% {6 O) P7 t8 g
  1646. LDA #HIGH(Track_Name_Pos)0 G4 R3 G- j6 U% x6 i  I$ M8 `  @& H
  1647. STA PPU_Addr,X
    + @3 A9 C  e3 |) f2 w- x
  1648. INX
    0 P8 Q0 q) p* ^# j6 `0 ^
  1649. LDA #LOW(Track_Name_Pos)
    3 n0 x* u, S7 O8 r3 i  \
  1650. AND #$E0
    / h6 Z: V" c8 V
  1651. CLC* |& b. M+ Y! g( `3 K6 x5 a
  1652. ADC <Data_Buf( }+ N# h1 E; q
  1653. STA PPU_Addr,X0 |) \: t0 X5 c
  1654. INX
    : D7 ^/ O) n9 c* O
  1655. LDA <Data_Cnt
    2 c- E# f+ M( w  g& j
  1656. STA PPU_Addr,X% F  D7 n; l8 B- n! G
  1657. INX, }5 A5 n* u/ s3 a$ o
  1658. Show_Get_Pos_Center_End4 k% |2 P7 d1 h3 s3 e+ l  S# u+ u
  1659. RTS
    7 h$ X/ a' `6 w( R' c
  1660. .ENDIF
    3 v; F" B6 f$ h; {

  1661. 1 `7 }0 A7 A3 u, C1 H
  1662. ;==============================" J+ Y8 g8 K: {: r6 ?: ?1 x( }
  1663. ;音乐端口清除
    7 A% p$ h$ w  B4 N3 u
  1664. Sound_Data_Clear
    + d8 l) O0 k! L, O9 v. {/ ]
  1665. JSR Sound_Port_Clear
    , I% o4 \4 b8 C, `; L6 D) {+ ?8 f
  1666. JSR Sound_Ram_Clear
    + d( n' w+ s, N( N4 }' {
  1667. RTS
    5 n$ B9 i! a% E
  1668. % }2 G6 Q1 A4 K% J7 b; E: L2 Q
  1669. ;==============================
    1 h1 D9 H  {( c4 c2 P: Q$ R) z. L9 ], z
  1670. ;音乐端口清除
    ( e# l/ [5 J! k( }( s( H( j7 G
  1671. Sound_Port_Clear7 N, g$ I. v8 n5 d) b6 J3 B
  1672. LDA #$00# `6 Z, v5 F% q0 {
  1673. STA APU_STATUS. `) r! a  ?3 e: L+ ?
  1674. LDX #$00
    / X- n7 ]+ l6 a2 Z; V9 s* A
  1675. Sound_Port_Clear_Write, m  j2 ^7 y( f
  1676. STA $4000,X; x7 c3 d- G" Z$ }! f
  1677. INX
    7 s. l$ B, S' k7 e
  1678. CPX #$149 q. J% I# P6 y3 o6 K$ i
  1679. BCC Sound_Port_Clear_Write
    " L5 `' |+ H5 o9 p
  1680. RTS% G$ ^8 [: w7 `; d1 t
  1681. 8 D6 X1 u( ^# @7 q: g1 Y
  1682. ;==============================
    ) u) V5 [2 D! T" g9 V
  1683. Sound_Ram_Clear;RAM清除1 M' Q6 F& u7 P6 @: @
  1684. LDX #$00
    $ P" ^$ B6 [) F# J6 s5 g8 f$ r
  1685. LDA #$001 }0 }8 v. @! S9 Q5 C0 s* r/ i
  1686. Sound_Ram_Clear_1& ~7 ?. q" @& K! v: {3 y& m" b
  1687. STA Sound_Ram_Addr_1,X6 i1 K, F; ]; M+ U3 `2 s4 L1 R
  1688. INX
    # u6 v1 x: P7 F8 z! n* i
  1689. CPX #Sound_Ram_Addr_1_Size
    % W3 R) ]8 a0 m+ b7 u
  1690. BNE Sound_Ram_Clear_1
    0 M  N3 k, |$ d; v" Q* `* m  \" Z( _
  1691. LDX #$009 J! n2 V( b) B& q
  1692. Sound_Ram_Clear_2
    $ E# k! x! v8 l  \( [
  1693. STA Sound_Ram_Addr_2,X) F% z/ w9 Y, q/ y! ~6 l
  1694. INX! ]( Q) K; }: m( k( p3 j+ P
  1695. CPX #Sound_Ram_Addr_2_Size  Y3 W, `* S' ]2 \9 R7 h! l% e1 q
  1696. BNE Sound_Ram_Clear_2
    2 z8 A) T, O& B, T
  1697. LDX #$00) p* _+ l8 C1 k5 X0 ]
  1698. Sound_Ram_Clear_3# r! a5 Q9 l. }$ X& t: T
  1699. STA Sound_Ram_Addr_3,X  Q# d; ^9 \- i5 d& t
  1700. INX9 u  I$ L; X# j
  1701. CPX #Sound_Ram_Addr_3_Size
    # G. F; O$ Z/ {  g- l. F/ c
  1702. BNE Sound_Ram_Clear_3+ U' T- O5 f9 _) ^% g
  1703. LDX #$00
    ! Y' p1 _& u& ^
  1704. Sound_Ram_Clear_40 N$ S9 m' M. }+ d- p% N
  1705. STA Sound_Ram_Addr_4,X
    # v8 [* X+ P7 F& i
  1706. INX6 b8 ]5 S7 k+ {2 f0 X- O1 L3 [9 ~
  1707. CPX #Sound_Ram_Addr_4_Size
    ( e# k% b0 F! z6 ?$ [
  1708. BNE Sound_Ram_Clear_4
    $ {" H% u- @) ]& ^; h, i
  1709. Sound_Ram_Clear_5% s! G4 [& C7 {5 i8 M- W( v, ~* E& T2 w
  1710. STA Sound_Ram_Addr_5,X' t, A3 n5 P$ `+ r6 Q* r# g, X3 |) r
  1711. INX  `% }, s/ o+ a* ?  z$ F
  1712. CPX #Sound_Ram_Addr_5_Size
    2 Q! c# U# b, B. C. f$ ]! d) y6 P
  1713. BNE Sound_Ram_Clear_5) q" I* k$ l# R1 Z: V2 y- ?, w$ L
  1714. RTS3 V" x+ H, C. J+ t* g  ~. D  s
  1715. " E' D% \: I& k& g& A, k' Y0 z
  1716. Get_Music_Collection_Name
    / N7 H; I: y7 S; |4 \& n* d
  1717. PHA8 |$ w" c! V+ u8 C1 ?7 g7 Y7 |- N
  1718. LDA <Music_Item_Cur1 R7 V- c. O. |" A% D
  1719. ASL A4 v0 p# J4 z: t# V) a* r
  1720. TAY
    6 f4 Z7 d9 S: \9 [% J% ?' ~1 H
  1721. LDA Music_Collection_Name,Y7 E! |& w: V: d" B5 u- A3 D3 @, o- R
  1722. STA <Data_L
    5 h& a! U  M0 J- L9 c
  1723. INY
    $ _1 r1 @6 T6 @* M" E. y
  1724. LDA Music_Collection_Name,Y" |  ]1 e; @7 t
  1725. STA <Data_H' ^" i# o* k, ^) U
  1726. PLA. Z% w8 M' N; N1 z/ u6 T
  1727. RTS$ F" x  t  i% x) _' W8 _
  1728. 6 G6 ]9 R( l7 x  z1 d! X
  1729. Set_Sound_Total
    $ b3 y9 W. s- d9 T; I) [3 S
  1730. LDY <Music_Item_Cur
    $ X0 }2 ]+ v* c2 _. O
  1731. LDA Sound_Total_Port,Y
    6 U; s$ F4 K, n+ F. H
  1732. SEC
    6 y, v9 E4 Y8 I5 j* e: w+ S5 o
  1733. SBC #$01
    - K6 S2 w5 m' W/ `1 F! w& `5 w7 a
  1734. STA <Music_Total3 u. p4 d1 l, ?
  1735. RTS" ]0 F# }: L: W- f: V
  1736. 5 q6 f0 ]3 P( G3 _- r
  1737. Get_Sound_Start2 b, U" B% B  {# r3 S; Y
  1738. LDY <Music_Item_Cur
    * N! f7 k1 o8 w- m
  1739. LDA Sound_Start_Port,Y+ m! F8 ?0 z# N2 L3 `
  1740. RTS
    ' @3 f, I. T) r

  1741. 0 N$ y0 S2 s5 J* I2 [: {5 r7 W& p7 @
  1742. Set_Sound_Init_Port
      O9 P! R( R. T  ~4 F/ a1 g
  1743. PHA
    / e5 _* y4 e* s( m
  1744. LDA #$20
    ; Z7 J( C5 h8 |
  1745. STA <JSR_Addr_Op' K8 ?3 P/ k9 I5 y: M5 A
  1746. LDA <Music_Item_Cur
    2 c8 ^$ O$ w+ D
  1747. ASL A
    4 o  k+ {( |* b. ]7 C$ ~: n
  1748. TAY
    & M7 E" q/ v% S% e4 ]* z! G2 G4 C# _
  1749. LDA Sound_Init_Port,Y
    % i# [: Y! S4 j  L; e( \/ e$ H
  1750. STA <JSR_Addr_L( ]5 \7 k& ]% p' I
  1751. INY4 s" V7 Z  x5 q2 t* b2 k) L  S
  1752. LDA Sound_Init_Port,Y
    3 m: R2 Y, n# a& d
  1753. STA <JSR_Addr_H  w# R+ T) f. g* H; y0 a4 \
  1754. LDA #$608 q3 |  [- M. \) W- e& u- f  c2 @
  1755. STA <JSR_Addr_Rts7 B3 z4 t" z& l7 B% \
  1756. PLA
    % G' ]6 e7 L6 a6 X
  1757. RTS/ {2 T" g& b+ a% {2 k) m% ?

  1758. + e, @5 I! Y  G! G/ ~0 Q
  1759. Set_Sound_Play_Port
      ?/ c" A, H9 _$ q/ s7 U
  1760. PHA
    4 O- ?3 X* T- l. D( g3 F% f0 {$ |
  1761. LDA #$20
    ) c/ D6 G5 C, `
  1762. STA <JSR_Addr_Op1 j" N2 ]2 O2 k" D* O( }) |, Q
  1763. LDA <Music_Item_Cur
    & b9 U$ o) ], t; `  n
  1764. ASL A
    " |% R7 S8 G, M! Y5 r+ p
  1765. TAY! s6 Y, ~  x8 g' e
  1766. LDA Sound_Play_Port,Y
    3 B" ?6 o( L  M4 i/ V1 l+ A1 t
  1767. STA <JSR_Addr_L
    5 b" J2 y- ?- {; t8 \7 g# i# k0 Y
  1768. INY3 N4 ]4 b3 H+ @) l
  1769. LDA Sound_Play_Port,Y& r& z4 @( I8 u$ r
  1770. STA <JSR_Addr_H
    , r, c. f4 c$ L/ a, ?
  1771. LDA #$60$ }: _( c1 H' c1 j
  1772. STA <JSR_Addr_Rts
    " E9 `# [6 M* w; a3 ]! b
  1773. PLA
      S# E+ a0 t3 W
  1774. RTS
    1 p) t  P' k* a/ a9 R4 k" ]
  1775. 5 L+ P# b! k$ x5 h3 n# Q: x- c
  1776. Set_Sound_Reset_Port
    & D8 Z' q5 E& u, Y
  1777. PHA$ t7 p- G7 @1 p: r
  1778. LDA #$205 l! e0 d. Y! f# R' p8 |% X6 z5 [
  1779. STA <JSR_Addr_Op" {8 `: e& l) h; I; O; X$ E
  1780. LDA <Music_Item_Cur
    7 K- a. A* a, c; S7 y5 E/ k5 W
  1781. ASL A0 z; b8 T6 ~' F4 X6 b3 k
  1782. TAY
    9 T+ Y7 u0 J" o$ |- S
  1783. LDA Sound_Reset_Port,Y
    / \/ u' h% T2 z
  1784. STA <JSR_Addr_L
    , x; ?7 e3 a# D2 J* i
  1785. INY; y) v! }4 D' w  a
  1786. LDA Sound_Reset_Port,Y8 p. x( e, u0 \1 N- }
  1787. STA <JSR_Addr_H, B9 Y: P  C5 R& @6 J+ B& \
  1788. LDA #$60
    ; M9 \+ Z: P8 ?5 e
  1789. STA <JSR_Addr_Rts
    4 h' u8 |; y) ?& ?% {1 H6 r* _
  1790. PLA
    % j: p& h! V1 u: D( t8 Y" f
  1791. RTS/ F) @) [/ i6 G

  1792. ; o5 K( w3 f* n6 A5 y: D. i7 h
  1793. ;初始化音乐bank
    ( X$ V. P4 q, J* c7 c
  1794. Init_Sound_Bank
    - m- M" S- a# W# ~* _
  1795. LDY <Music_Item_Cur& T/ u1 U" k4 w: U6 ~/ r$ e
  1796. LDA Sound_Bank_8000,Y
    - J0 m' c7 ?) i
  1797. STA <Music_Bank_8000
    0 C+ B' V' I; z+ o
  1798. LDY <Music_Item_Cur/ Y1 A- V& G  w# A* [' ^# d
  1799. LDA Sound_Bank_A000,Y
    # t$ t2 M& e; x' s; q- j* X" U
  1800. STA <Music_Bank_A000
    % E; M3 V6 C7 W9 P
  1801. RTS
    . M( `& I, s2 I  Q1 w2 j* ~' j
  1802. : U4 l3 f) f& _& D% X
  1803. ;==================================================7 k/ {# q7 M/ V0 U& Y2 n! @
  1804. Sound_State_Reset;音乐状态重置- |" J7 ?9 X8 i# z8 |& p- W
  1805. JSR Music_Bar_ReSet        ;重置音乐条) C+ u' Z# |$ ?4 R# Y" B) h' A# j
  1806. JSR Time_ReSet             ;重置播放时间8 a( @* i; H# ~) ^" S$ K3 s8 c
  1807. 7 [- L" z7 M+ T) L# F4 E8 W" ]" h
  1808. LDA #$00
    " d  d1 ?0 j) w( ?+ |. f! K5 `
  1809. STA <Music_Stop_State$ W9 B# C- G2 `0 }6 g' {
  1810. JSR Music_State_Show       ;显示播放状态* T5 Q8 o2 m5 n% ]. C% o, }0 q

  1811. 2 s! T1 n& }. ]! ], g6 S
  1812. .IF Track_Name_Pos5 A( W0 s( V; `2 t4 B
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    % I, b% g$ {6 M. R- C( q
  1814. .ENDIF
    8 T* o) @2 k' R2 X5 ^# t

  1815. ) ^- ~/ }" J: Y% @$ ^
  1816. RTS6 |9 Y: h: f2 Y5 v) x- X- s8 ^
  1817. 2 F$ ~* v) v0 z' A4 N. s
  1818. ;==================================================, \' @; U2 C  ~1 M$ q
  1819. Sound_Init_Proc;音乐初始化处理! u- h! W" t9 t: h+ E0 R
  1820. PHA
    ' n' H8 o* C* t% E5 n7 e0 G+ y; y
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    7 _+ p( b/ b" v# k4 M
  1822. LDA #$00
    7 b9 S' @% @. V
  1823. STA <Scroll_H               ;重设水平滚动
    , j8 E; \; U# [7 _0 H6 ~
  1824. LDA #$0F  k1 _, C1 A: c
  1825. STA APU_STATUS: z0 O% E" f) v- B5 U: X% c9 s0 q
  1826. PLA
    7 P/ B% w3 \  M. ^
  1827. JSR Sound_Init             ;音乐初始化
    4 w9 g: A6 [- y9 |: T+ f) Z: _
  1828. JSR Sound_State_Reset      ;重置音乐播放状态& j: z! O; l# ]$ {* x9 v
  1829. RTS
    7 n; a- j9 F7 j3 ~% K3 V) |
  1830. " S+ g; d$ V! a1 d" P
  1831. ;==================================================/ Q4 v! o6 p& |9 c2 f
  1832. Sound_Play_Proc;音乐播放处理% x/ d' O+ y- s! X5 {6 i  w8 U0 H
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    8 l. Z" a% W- @: x: Z4 F% {
  1834. JSR Sound_Play             ;音乐播放
    7 `% S' |+ S; A. Z" w9 Q
  1835. RTS
    ' `0 _3 P& r6 ?3 {5 o) b

  1836. / _# {  q7 O* r3 e) q  B
  1837. ;==================================================
    0 s6 f: @9 @9 B- w
  1838. Sound_Reset_Proc;音乐重置处理
    1 W2 W% _. i% o% J* O+ f0 h1 i
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    # E' {' D7 M, F' J( `5 C
  1840. LDA <JSR_Addr_L
    * V2 e  ^" {2 y; y# }- ?
  1841. ORA <JSR_Addr_H
    1 b; N9 V, }' H
  1842. BEQ Sound_Reset_Proc_Default+ D/ y9 s  m: s6 u: z4 J1 @% F" V
  1843. JSR Sound_Reset            ;执行音乐重置
    5 H6 `3 e2 @. D6 ^+ p6 W
  1844. JMP Sound_Reset_Proc_Init_Sound( `' p+ I) j4 y  z0 [- A+ M9 ]

  1845. + k8 f, A! b- `0 K: p* x
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理. W' ^, v5 J4 V; V/ |9 ~& g+ N! D
  1847. * }5 Q- O" y8 ^9 I2 q1 |
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断# C- f8 P7 f  W: B( `$ ]6 J* E
  1849. LDA #$009 F6 \" H0 v5 n  d
  1850. STA PPU_CTRL1 b  G/ v2 b/ M- p/ O8 ]; x" P' z( H
  1851. 7 x8 b' }$ U! u0 G: b
  1852. JSR Sound_Data_Clear
    / D0 v7 G; Q. a- I

  1853. - m, b" @0 ]& H) D! O5 Y
  1854. Sound_Reset_Proc_Default_Wait  U# c& x/ a! W
  1855. LDA PPU_STATUS
    3 N( ^/ E0 q' `
  1856. BPL Sound_Reset_Proc_Default_Wait
    4 \! s, E% x3 c" ?* M5 y: O% X* `9 Y

  1857. # B6 k( F" w6 Z5 J/ j  b1 M4 F
  1858. LDA #$00
    4 e& O! c6 O( q
  1859. STA PPU_ADDRESS
    : l+ Q' C' O# {6 e5 a7 _) v$ n9 e$ W
  1860. STA PPU_ADDRESS. P5 i7 s* V3 Z6 P- x2 d7 G# L6 o
  1861. STA PPU_SCROLL
    ( Y/ \/ ^- V, U9 p( z* H9 _' ?2 t. z
  1862. STA PPU_SCROLL1 f1 S& m  `% H4 `! g; r

  1863. 9 j  I$ B5 ?5 @+ Z
  1864. ;恢复PPU控制% ?) f" B4 _3 \% S( M4 {
  1865. LDA Screen_Ctrl3 ^, d; y- `1 K2 l9 N+ }9 K) J
  1866. STA PPU_CTRL
    + L' [+ S, S" [& ?/ s4 [

  1867. / z. k0 @  f' u" L! s7 n4 I
  1868. Sound_Reset_Proc_Init_Sound
    ' _& c1 W) `( z* [
  1869. LDA <Music_Stop_State5 C# z9 G( M: F! m
  1870. BNE Sound_Reset_Proc_End
    : i/ z! K; [  o$ e' y) l$ h
  1871. LDX <Music_Item_Cur
    . W+ X# Z2 u  _- U; @
  1872. LDA <Music_Cur,X. g! _/ y: C4 S/ z- ?( J
  1873. JSR Sound_Init_Proc
    + v' r7 I5 n$ a6 G! ~7 ?) U
  1874. Sound_Reset_Proc_End' s2 G( d0 ^% y) j6 U, H$ f- l
  1875. RTS
    # k) Z# \* v3 l0 B
  1876. 5 \( c8 h- k( S+ ]/ J
  1877. ;==================================================1 T1 W3 P, P8 B8 R5 q9 p
  1878. Clear_Item_Text;清除页项目) i% t4 e% k! t8 l1 N
  1879. LDX PPU_Cur
    8 R1 o4 Y2 E' K$ u- }, l: D- d
  1880. LDA #PPU_MODE_CNT_CLEAR! C% S3 c7 m- |3 [" o
  1881. STA PPU_Addr,X$ |* {, b: ?* g) ?
  1882. INX
    4 a/ r3 h4 Y# y( b1 ?- q! L

  1883. 9 P  k7 l( e. p) Y2 V1 a8 [1 O( D
  1884. LDA <Page_Last
    ' |. o, {# U& D1 t- i1 E. B5 B9 u
  1885. SEC) e" y) }, L" G" h
  1886. SBC <Page_Last_Index- [9 y! ]1 A0 Y9 X
  1887. ASL A
    . Z+ y' V& j9 b  ^0 U; ?
  1888. $ j$ q. b- N- Y) U1 j0 ^8 O+ u- d
  1889. TAY
    0 w! r5 N/ A# b% b$ c9 b
  1890. LDA Item_Pos_Data,Y9 @$ G/ V# G$ u
  1891. PHA
    ! P+ q, N1 v0 {" R
  1892. INY
    2 h4 \7 Q+ S3 N
  1893. LDA Item_Pos_Data,Y1 W/ P5 N- s$ G; B* }
  1894. STA PPU_Addr,X0 c. f* D; s. g: z$ j6 c& `
  1895. INX0 N' x% ?9 w% P7 ~+ }( V$ ?1 ^6 e# z
  1896. PLA
    " U, g0 V9 w2 |- G! }: l- {
  1897. STA PPU_Addr,X) G0 q+ f3 O: q  J9 Z; O
  1898. INX
    1 l! Y6 J/ _% \/ X; ?# {

  1899. * o+ V9 e# R4 B% a$ V" R' f
  1900. LDA <Page_Last
    ' g+ x, X1 W/ g" o
  1901. ASL A% Z& k' e: k4 o  r5 F- X
  1902. TAY
    * f, k  y0 J: Q4 q
  1903. LDA Music_Collection_Name,Y
    ; m+ Z1 w( d$ T5 h  F# H
  1904. STA <Data_L  q: f6 N- s! R( w
  1905. INY" x* x( b* A0 q2 I
  1906. LDA Music_Collection_Name,Y
    ; d' U. [; Z. _8 `: ^
  1907. STA <Data_H) o, U! m4 |4 h4 t; ~2 \
  1908. : M7 q, K# r% d; N2 L; b. y$ s1 u
  1909. LDY #$00
    3 f0 M" Q1 G- ]: d
  1910. LDA [Data_L],Y5 B' y- k9 `% d
  1911. STA PPU_Addr,X
    # k/ L( N% m9 [0 t! U( q0 ?
  1912. INX
    * |& S6 J: k4 B& M% l, R! J  I$ v
  1913. Clear_Item_Text_End
    7 g7 P. e: G& T
  1914. STX PPU_Cur
    ' G8 w$ ]" [3 J5 j- A- S
  1915. RTS
    6 A: E) |- ]5 d' k: e& I% J$ j
  1916. 6 O8 D7 D  D! f$ D* e- x
  1917. ;==================================================8 T1 W7 ?6 V6 C
  1918. Show_Item_Text;显示页项目' V1 b2 d. i3 ?& p
  1919. LDX PPU_Cur
    ) v' _( A/ }$ o
  1920. LDA #PPU_MODE_CNT_LINE' \- A: N6 i9 I8 s) [
  1921. STA PPU_Addr,X4 ]+ f* M8 b5 J) h; M4 j$ s
  1922. INX: k1 A- |# a" V  F' @
  1923. LDA Page_Cur
    , Q1 D. G- E5 K9 t  c2 {, r
  1924. SEC3 E$ J5 h* F$ W0 A: p  T5 J
  1925. SBC <Page_Cur_Index% g* _5 T9 a5 X: z" ]- z1 X
  1926. ASL A& I% }# q3 v4 w
  1927. TAY/ z  ^! C7 e" J# p4 [8 S
  1928. LDA Item_Pos_Data,Y
    1 ?0 |. N, M8 P, |6 N; y1 Q* U0 J
  1929. PHA) c7 L: M: r5 _9 T
  1930. INY
    $ _3 K$ X. h, S  @
  1931. LDA Item_Pos_Data,Y
    3 u" g+ W. N  |& y  W
  1932. STA PPU_Addr,X
    9 z# |9 M: M) @9 }+ t' ^" m4 Z
  1933. INX
    % x' i" ~- g" p/ D2 T# B, h
  1934. PLA
    + R) u6 Z6 D, |4 u) W" y
  1935. STA PPU_Addr,X' R" E  c3 f0 ~( C/ ?
  1936. INX
    ! p) Q( ^9 u" g# j
  1937. 0 u, A- G( I/ z1 C, P
  1938. LDA Page_Cur
    ) `( Y- w1 [1 W6 h5 e: z
  1939. ASL A
    ) _9 {5 O  w1 Z0 ]# m
  1940. TAY
    9 W% ^( X: g/ Z; P- K! T
  1941. LDA Music_Collection_Name,Y2 ^4 D; k, A; l5 G1 t$ y
  1942. STA <Data_L9 P( c5 y5 G0 W2 N
  1943. INY0 z! `' X! r/ Q
  1944. LDA Music_Collection_Name,Y
    , l) ~# n* V' J$ H* E
  1945. STA <Data_H
    7 W2 E% \* z% e8 H- Z+ w: M+ L+ o( @
  1946. 9 C( m: ?% C. G# J& m! k5 ?
  1947. LDY #$00
    4 n3 A. x) T) w9 S" z* ^6 k
  1948. LDA [Data_L],Y4 j" }, w: P% ^
  1949. STA PPU_Addr,X, g8 [) R% r* v0 `+ ?" {& ~
  1950. STA Data_Cnt
    , X5 {+ N6 j5 v, @, H; f. [
  1951. INX/ W# l0 T" c+ m3 W/ v1 f

  1952. 6 Q0 o+ }% K" o
  1953. INY
    8 P/ u, a/ C2 U1 [# c- a) A
  1954. Show_Item_Text_Write1 E# I. U0 g! N7 p
  1955. LDA [Data_L],Y
    2 ~& i  V4 _( u: D( Z# ?2 u
  1956. STA PPU_Addr,X
    5 x( y9 _. {- ]3 u$ V  A
  1957. INY
    2 I+ X$ Q4 c' r. C
  1958. INX0 R/ I" z+ h* m1 ]& H
  1959. DEC Data_Cnt
    ) u8 q8 z- B# a7 W- L! Q
  1960. BNE Show_Item_Text_Write
    5 ]- P) L9 ^, b* r& |

  1961. 3 W, r+ x3 G- R0 {8 e; |# h
  1962. Show_Item_Text_End( h6 D0 H' {5 A8 ]4 X4 N) F3 g
  1963. STX PPU_Cur$ |$ E) o: y9 O& j# G5 ^
  1964. RTS7 V2 P* g" {3 a

  1965. 6 C- K6 C8 N/ p, C! u, @% N
  1966. ;==================================================
    9 ^1 e- j3 Y* N# c& }# B
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    ' ]  B& X5 L$ K% f/ R6 P6 ^
  1968. STA <Data_Buf
    4 X7 e! `9 r- v7 ~& j
  1969. LDA #$003 u7 e. H3 W9 p, x
  1970. Get_Page_Index_Calc
    0 Y& X) I3 c$ w/ _% ^
  1971. CLC4 Y1 b) n0 S- [
  1972. ADC #PAGE_SIZE
    7 ~) b; I6 S9 v; x- b8 Z
  1973. CMP <Data_Buf) J# t. h6 q5 j; H  B3 j6 |0 G& t5 h
  1974. BCC Get_Page_Index_Calc& e8 ^; j, |7 `
  1975. BEQ Get_Page_Index_Calc_End- Y# B0 g, G8 Y8 K1 [2 m- a
  1976. SEC
    % E7 v' _( U: J, y( g
  1977. SBC #PAGE_SIZE
    ! N- E8 P& H/ d7 P. U. y3 s
  1978. Get_Page_Index_Calc_End
    ; U2 E3 P) L3 n# o0 j8 O
  1979. STA <Data_Buf
    ' I* g6 d. \0 n4 k, V3 _
  1980. Get_Page_Index_Cnt
    2 m# V7 A8 ?/ i5 w  V/ L1 v0 _
  1981. LDA #PAGE_SIZE
      w1 E; t. @- r% e$ Z" p2 F. [2 y
  1982. STA Data_Cnt
    2 m) q; \7 J1 s  U$ Z! ~2 z

  1983. 0 h" N* n/ n% z
  1984. LDA <Data_Buf1 r2 B5 f4 \& W% G, A, Q+ C
  1985. CLC
    * Z+ V5 g6 W/ W5 X$ F- B$ C3 R* D
  1986. ADC #PAGE_SIZE/ u: s3 [$ v, C/ M4 ]  l
  1987. CMP #ITEM_MAX_SIZE
    ; l4 I2 @; W; E3 H6 j# d* c7 F' e
  1988. BCC Get_Page_Index_Cnt_End
    * a6 @0 J8 R0 g- C3 d* Q* q+ J

  1989. . J" z( S  f+ c9 Z3 @( e- J: l
  1990. LDA #ITEM_MAX_SIZE# n* J7 i; G9 ]9 k8 M+ b0 y* _6 y
  1991. SEC7 w* C7 p2 x& T. D3 ~
  1992. SBC <Data_Buf5 K! T6 l1 C/ o5 U; t1 @
  1993. STA <Data_Cnt
    7 n. Q, V9 Z3 P, K

  1994. 4 o* b$ A% T, h2 s0 A
  1995. Get_Page_Index_Cnt_End2 h% R! j5 _# f2 C6 C2 ?2 }/ @0 w- l
  1996. RTS
    5 Y2 k: w) a4 Q7 u. {! _7 E$ b
  1997. 0 q. c& V! z( k4 |2 W& A' W
  1998. ;==================================================9 D" J* r8 I1 O" j  N: N) d
  1999. Get_Last_Page_Start_Index$ Y: m7 u& D# D7 X" d1 \
  2000. LDA <Music_Item_Last
      J+ e; r  d6 A/ I( j$ Y
  2001. JSR Get_Page_Start_Index
    ) m7 t% {8 h. X& {/ v
  2002. LDA Data_Buf% U+ V. l: Z- T! F
  2003. STA Page_Last+ _0 R( y- n: G+ N) D0 d
  2004. STA Page_Last_Index
    9 }8 [! O% \1 _! ]4 V
  2005. LDA Data_Cnt
    + S% ^4 Z6 m, a  {9 F
  2006. STA Page_Last_Cnt
    : u0 k2 Z" O7 ^& }# P. B
  2007. RTS6 R$ l. Z; ^6 Z8 |* A: ~4 {; e2 t

  2008. / `! `. B9 F% ]4 q' t& Q
  2009. ;==================================================: b: [" v- d0 T- M  B7 g6 b2 k" t% r
  2010. Get_Cur_Page_Start_Index! `0 u" ?% x1 V+ R9 @; v& [, l- x
  2011. LDA <Music_Item_Cur+ k3 ^. m, G+ E) M5 v0 R
  2012. JSR Get_Page_Start_Index/ L4 J4 U/ n1 \  |7 s5 j
  2013. LDA Data_Buf
    4 M; h5 f( d/ }. c$ }! X
  2014. STA Page_Cur! j% L  q# C" p8 f# T' c
  2015. STA Page_Cur_Index2 m8 G0 g" ]" _9 q  C3 O  i
  2016. LDA Data_Cnt
    ' e5 u8 t7 m" e
  2017. STA Page_Cur_Cnt9 |, G: i' k" c( ^- b! e! O' |& v
  2018. RTS
    2 V' I+ Q2 b/ A5 @; Y# w
  2019. 2 t+ M5 o9 i$ u0 A# V) M6 o- ^; ]
  2020. ;==================================================. P4 e( R" g, S; w
  2021. Show_Page_Text;显示页文本
      \4 a1 p2 G3 s& H- C
  2022. LDA <Text_Disable_Flag
    2 I) k/ D; p. P, ~9 Y& I9 F1 H6 y
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    " L2 \1 W  x. Z& C2 @; B
  2024. STA <Text_Disable_Flag# Z3 b5 O( o  F" y/ |" K8 G7 \
  2025. $ s1 K8 e% {; {' ^! @3 `  x
  2026. JSR Get_Last_Page_Start_Index
    7 |% B  A, P. _7 n7 z
  2027. JSR Get_Cur_Page_Start_Index! ~6 B  }4 L8 h5 e8 I6 _8 S0 u

  2028. 2 @2 Y. }( u! \0 d
  2029. Show_Page_Text_Set) m) g2 x. h2 `/ ~# l
  2030. ) y3 G$ n( u: o
  2031. Clear_Page_Last_Item;清理上一页3 F$ g4 `" y6 i9 u$ z
  2032. LDA Page_Last_Cnt
    ' s2 x& Z% k" A9 H4 T' e
  2033. BEQ Clear_Page_Last_Item_End
    # k0 u" b/ u. F, P+ ~3 _
  2034. JSR Clear_Item_Text% K/ a( w0 r- z5 u
  2035. INC Page_Last
    ) f: o. P8 H% a! k' r) c& s
  2036. DEC Page_Last_Cnt
    " N- n& i- |$ m( [1 h* N5 z
  2037. Clear_Page_Last_Item_End
    % z. Y2 J+ ~+ _3 F3 j7 }
  2038. ( x4 h1 F1 q! L% m: M
  2039. Show_Page_Cur_Item;显示当前页
    / f% N' h" Q2 ?7 p
  2040. LDA Page_Cur_Cnt
    ; c2 X. B) ?9 R) w; X
  2041. BEQ Show_Page_Cur_Item_End7 O- I; {2 Z2 @. C
  2042. JSR Show_Item_Text
    1 i, ^/ v( x. |/ ^6 X. Y% E0 ~2 b
  2043. INC Page_Cur
    / q" I- S3 G0 b/ k
  2044. DEC Page_Cur_Cnt
    : g% L0 w) C4 r# e, e$ h/ q
  2045. Show_Page_Cur_Item_End( f/ D: p$ \% n  z
  2046. 6 z  G; W" d. ^2 ]7 B4 T
  2047. INC <Time_Wait_Cnt/ U/ z) ~- P" ~
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    " ~) g) T2 z: k3 _
  2049. LDA <Time_Wait_Cnt
    5 W$ r+ @+ [+ x- S: p
  2050. BNE Show_Page_Text_Set_Wait1 A5 q- z2 h, g( v
  2051. , P8 K) F8 `4 q) X; k9 B* b3 l
  2052. LDA Page_Last_Cnt
    ) v; u! W; U9 y) Y' i- _5 d8 X. P
  2053. ORA Page_Cur_Cnt
    9 F' ]  q9 ?2 H- o: o9 n* d6 F
  2054. BNE Show_Page_Text_Set  V; G, i- H: [5 G% ]
  2055. LDA <Text_Disable_Flag
    7 U% \  Q* [5 G0 s9 p+ g: E
  2056. AND #TEXT_DISABLE_ITEM ^ $FF. _* _2 q! }; ]+ ^
  2057. STA <Text_Disable_Flag
    " n* }0 K8 ?/ V" A
  2058. RTS
    + ^' `0 Y# b% \

  2059. 5 ?# D- B# t; Q3 _9 Q% K
  2060. ;==================================================
    & \  s2 O1 H% {6 K" y
  2061. Last_Item;上一项! e# \! a& j! j
  2062. JSR Clear_Last_Track_Name  @4 Y( c& M- `6 o. v
  2063. JSR Disable_Text_Draw8 v: T8 ?5 l: z  i; b( W. w
  2064. / s% b5 Z& a% {$ y  f8 A1 x) B. p
  2065. LDA <Music_Item_Cur
    - X) c/ q, R! b6 a; i) Z
  2066. STA <Music_Item_Last
    9 y0 D7 u" R5 A* l9 n  v

  2067. ) v4 a$ `, D. t  E% p: Z; G
  2068. JSR Get_Last_Page_Start_Index6 {) h3 V9 j) ?2 H

  2069. 3 q5 N3 _7 y) |; s6 c0 f! G
  2070. LDA #$00% v0 R7 B. F! Z, P
  2071. STA Data_Buf
    ; ]$ p6 y& X% Y, m6 ]
  2072. ; w; T4 K, J' l  v" w- z" Y+ d5 E
  2073. LDA <Page_Last
      g3 M4 X, \% k' A" f% j/ B
  2074. CMP <Music_Item_Cur# R; \+ R+ h) F0 d
  2075. BNE Last_Item_Begin
    ( o4 C1 V' \+ _1 C; V

  2076. ( _! j; L7 M) }% F7 l
  2077. LDA #$01
    4 W/ d' ~$ i# T) R1 s( U
  2078. STA Data_Buf6 @. r# W! H: F2 }% T0 Y: k) G: Z
  2079. Last_Item_Begin
    $ {; S: f( G# |6 j. g( @* ?  q/ D
  2080. LDA <Music_Item_Cur- D# y$ l2 ]  z1 V' _- B) b
  2081. BNE Last_Item_Set+ {' s5 o  u3 E  U* U  N
  2082. LDA #ITEM_MAX_INDEX + 19 M, a5 m1 `2 [  x9 f
  2083. STA <Music_Item_Cur2 U- @$ L4 u5 P. z& W8 u
  2084. 9 h$ X' X  ^7 I5 v/ |) I4 s
  2085. Last_Item_Set
    ( k& R6 Q) K, d/ Z% }
  2086. DEC <Music_Item_Cur$ e! V- @% O: ]) p% |: r- q9 ]
  2087. LDA <Music_Item_Cur
    8 n! |: R6 d9 a
  2088. JSR Reset_Current_Music
    # o9 I# X1 F! o: ~
  2089. " t. B5 K" ?! Y6 T* Z
  2090. Last_Item_Play
      |. T- |% j3 A) n2 L7 T
  2091. LDA Data_Buf
    . _* L- f$ {4 U. M
  2092. BEQ Last_Item_End
    . ]' X( b& x$ b( q; x0 S6 I
  2093. JSR Show_Page_Text! h% W, D5 t/ }. H6 q1 K+ ]
  2094. Last_Item_End
    $ r( Y3 A7 b7 a: J
  2095. RTS3 y8 x6 L0 Q! V( k
  2096. % o. S$ U9 V2 z  H$ q4 q
  2097. ;==================================================
      r2 |& i2 S. G- B/ t5 T) \; i
  2098. Next_Item;下一项
    - B( U2 L/ `( Y4 S+ Z7 k
  2099. JSR Clear_Last_Track_Name
    & c: U5 y, ]4 ^/ ~
  2100. JSR Disable_Text_Draw
    ; y/ k& Y; L+ y+ N5 a3 W7 s- p4 l
  2101. 1 }  B/ A. d! U& s' \) A( \7 P
  2102. LDA <Music_Item_Cur- }- B* z* w: @5 v8 b3 }
  2103. STA <Music_Item_Last
    ) p1 N# n/ N1 {
  2104. # M% W4 C9 u( ^6 t6 j
  2105. JSR Get_Last_Page_Start_Index
    ; W5 j4 u5 j& S

  2106. " D$ Y4 q( ~, G) C' m7 G- A
  2107. LDA #$00  M) B- x. q: c, [+ T  `1 X1 l/ ]0 b
  2108. STA Data_Buf
    ! ^, Q9 N1 v* J6 U4 z  }) r

  2109. 0 e0 Y( v: @5 \- G7 p, [
  2110. LDA <Page_Last
    / h2 w, l* `; |6 x8 c2 d
  2111. CLC0 I" Q" i7 d& O. ^" O6 a
  2112. ADC <Page_Last_Cnt0 e% G, c) w  ^6 M
  2113. SEC6 @8 c# E3 b4 m
  2114. SBC #$010 K/ G" }+ C* v( K0 ]
  2115. CMP <Music_Item_Cur
    / v4 H- U) u" b6 j: G$ f1 R! A
  2116. BNE Next_Item_Begin
    & C& O! @: |' h. Z1 I  j

  2117. 3 G# Q5 j  S7 D% `
  2118. LDA #$01
    + j* _6 v. o( p% D7 e0 z
  2119. STA Data_Buf
    , j1 e+ Z; m4 M
  2120. Next_Item_Begin
    - h/ k2 _! F/ H* h, s0 T
  2121. LDA <Music_Item_Cur
    . r. Z; o9 H* D0 i  k
  2122. CMP #ITEM_MAX_INDEX
    . \$ {* S7 E4 d8 l, v* Y' F2 K
  2123. BCC Next_Item_Set: |3 t4 X. T+ ?: D3 r( A( O
  2124. LDA #$FF
    ! U0 K1 }" P9 I* X' K! V
  2125. STA <Music_Item_Cur
    8 U- }% n% O9 ?. H$ z
  2126. Next_Item_Set
    5 ]  w/ Q) R1 A5 [
  2127. INC <Music_Item_Cur1 b+ m" x  O, G
  2128. LDA <Music_Item_Cur
    $ h/ r) a) Z% X' k
  2129. LDA <Music_Item_Cur
    $ e" v- s) [/ j( c6 T
  2130. JSR Reset_Current_Music  P5 N9 [, y1 m5 V( T9 j9 c
  2131. Next_Item_Play
    & u! F* U  @! H$ o  q
  2132. LDA Data_Buf% A5 Q+ w7 n& K% @% J
  2133. BEQ Next_Item_End
    ( Z" N' g. \6 G9 S9 \% }0 R. j
  2134. JSR Show_Page_Text# ?; [" N! l2 D/ O! O6 k0 q
  2135. Next_Item_End1 ]2 K5 |: N1 e# C& R: P
  2136. RTS
    1 k* O* H$ Q) y) P/ w3 e: C

  2137. 3 N! T% W) V5 D4 h
  2138. ;==================================================; f+ ~+ H1 \& N* P
  2139. Last_Page;上一页1 C9 W0 I. E% ~
  2140. RTS
    - I) C% f. ^" Z- D+ z2 @
  2141. # _% V, W8 o, J  \: r) |8 X7 r0 X; l
  2142. ;==================================================# I, c3 q! s3 C, u
  2143. Next_Page;下一页7 ]( P/ J# o) C, F4 r
  2144. LDA #PAGE_MAX_INDEX
    & C3 S* Y) d% ~& v
  2145. CMP #$012 |% A) ~! v# t) B. W
  2146. BEQ Next_Page_End
    8 P# m2 Y$ `+ e( ]
  2147. - f3 G: C- L+ V8 |  d) K/ r
  2148. LDA <Music_Item_Cur
    3 ]2 c3 }# k. S$ N! G/ _) T" Y
  2149. STA <Music_Item_Last
    9 D0 N$ Z/ K4 h5 `7 |$ |

  2150. & p4 Y8 g6 g5 b% a+ C: x1 t2 R( c1 I
  2151. JSR Get_Last_Page_Start_Index  p& Z% r8 r/ ^- p; A6 `

  2152. ) W; O% k' w1 a/ S
  2153. LDA <Page_Last_Index- K( Q  s7 _0 q0 q% N, E
  2154. CMP #PAGE_MAX_INDEX4 r! H# S; u3 n+ S( K. P
  2155. BCS Next_Page_In_End_Page$ p  ]. K6 l1 A& m- M2 u

  2156. + C" j7 M8 ]+ P* z/ r: K
  2157. Next_Page_Not_End_Page;不是在最后一页' `# \* [* ^6 d% ]' Z, K
  2158. LDA <Music_Item_Cur) y$ e1 b8 y6 K. W3 s9 f$ j
  2159. CLC
    , ?2 h7 ?3 A% O7 W1 p8 @% @
  2160. ADC #PAGE_SIZE
    9 R+ u5 G& p' ?* _( `1 m
  2161. CMP #ITEM_MAX_SIZE5 ^! n$ C; a' Q
  2162. BCC Next_Page_Not_End_Page_Less2 N% I" \1 u1 G  D# u' \( t8 O
  2163. LDA <Music_Item_Cur5 M; D) @, K5 C5 P2 `# e
  2164. SEC! T- h: r2 Z9 p5 s7 S
  2165. SBC <Page_Last_Index+ G( t# F6 p' _5 d: ]. \1 z# E2 h/ y
  2166. CLC
    $ c6 P7 D# c3 n* d  f0 M
  2167. ADC #PAGE_MAX_INDEX# I' i& w. [$ E' B$ A
  2168. CMP #ITEM_MAX_SIZE
    7 [9 H3 P& }# Z$ d" y3 T
  2169. BCC Next_Page_Not_End_Page_Less
    1 |% y3 M, y  D7 V+ \) Q" ~
  2170. LDA #ITEM_MAX_INDEX* U" ?6 m4 _. z
  2171. Next_Page_Not_End_Page_Less
    4 K* f& {! i4 F- t3 U" p! S3 _
  2172. STA <Music_Item_Cur
    $ i% j# X. v- b' e5 z
  2173. JMP Next_Page_Reset
    ; M+ P: o, {. E, q- W' R: d
  2174. / {. U: i( O. q  n
  2175. Next_Page_In_End_Page;在最后一页
    , l4 ~+ a$ C6 w+ s6 D0 c( ~4 N8 M
  2176. LDA <Music_Item_Cur1 B7 J$ F! k) V; B
  2177. SEC
    $ I; {+ u/ D* r3 q" e0 y6 c5 m5 ]
  2178. SBC <Page_Last_Index: H7 @3 ], T& k1 ~) m! J# B+ `% O
  2179. STA <Music_Item_Cur
    % z) t/ G, l" v8 [
  2180. 6 y" U3 B) j1 ]
  2181. Next_Page_Reset. b, j: E% R% O' R0 j/ [
  2182. LDA <Music_Item_Cur  n7 d6 h4 l; y( e& H+ G7 Z
  2183. JSR Reset_Current_Music
    2 M, w. K+ E0 ?2 l, n) z+ r
  2184. JSR Show_Page_Text8 i7 S! R4 A9 [# T
  2185. Next_Page_End
    + e. V" b9 ^0 s6 k
  2186. RTS
    , c' b$ `' F, m1 T4 q; L9 z- \
  2187. . L' f' T/ m2 t
  2188. ;==================================================
    7 S% x; J) n) t
  2189. Disable_Text_Draw;禁用音乐条刷新" l6 |' o8 g! H- T: R5 X( V' u" `+ t9 [
  2190. LDA <Text_Disable_Flag9 \( z7 g4 w# s: t' a1 B( q
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME- x/ T$ x/ X/ H: x! |! b
  2192. STA <Text_Disable_Flag0 K( o6 n& ]4 K6 \  {
  2193. RTS
    * @+ m! ]3 r5 }0 v8 o9 D# n* B. R
  2194. 3 R$ E) h) w7 \0 S  i  T9 }
  2195. ;==================================================; ^" F3 S+ p; z, d' w1 K
  2196. Clear_Last_Track_Name;清除上次曲目名
    2 ]) w& u( I! ^* g0 x9 Z1 ]
  2197. LDX <Music_Item_Cur& w3 f$ q8 ~0 M
  2198. LDA <Music_Cur,X
    7 J( x! m7 K2 B" O. W- Z
  2199. .IF Track_Name_Pos, E1 U9 d- N  }3 t  F8 B: Q
  2200. JSR Clear_Track_Info5 h% G# P% S% [/ i
  2201. .ENDIF& ]7 f+ |- T: h" f& o
  2202. RTS8 J, v+ c* _- Z

  2203. , a7 L0 g7 U0 @/ i
  2204. ;==================================================
    & @" d1 p3 N& J. i# |0 f  z
  2205. Reset_Current_Music;重设当前曲目$ s1 ?/ |* F9 H4 d

  2206. ' `" S5 y' c$ f+ I" S
  2207. ;写入当前总曲目. y3 l! C6 Y- B; y0 e5 R
  2208. JSR Set_Sound_Total: w; y& ]. a0 C) b6 D6 y
  2209. LDX <Music_Item_Cur
    . C6 W: @3 R$ m
  2210. ! o! ?( t- F1 d! _8 ^3 }/ L
  2211. LDA #$00% ^2 e5 N9 l" H9 \# [' W
  2212. STA <Music_Last
    4 ?; E! a. R/ B% q1 y. R

  2213. " T% H9 E, D# }# ~8 H5 l+ q" a  P
  2214. JSR Sound_Reset_Proc
    9 |. ?: l" @2 K; F9 c
  2215. JSR Music_Show+ T% c; p* L" C; P7 ?4 i" q
  2216. RTS
    ( o0 f/ F! D1 q3 S
  2217. 4 p% R% ^: `0 u' W) q/ l# ~; ^
  2218. ;==================================================) j& `( K1 Y# ^9 j2 }5 c3 ]
  2219. Music_Song_Stop;音乐停止
    - ~* j/ S3 {0 [4 t
  2220. LDA #$01
    / S, P( h7 z8 q2 s. m6 y
  2221. STA <Music_Stop_State/ o* d4 \% c5 l  Z6 }$ `
  2222. JSR Music_Bar_ReSet
    - x& t2 X: E) p. w* v
  2223. JSR Time_ReSet; _% Y& U0 D3 q
  2224. JSR Sound_Data_Clear
    6 y2 l( i% M  b% S" b% v9 S9 _
  2225. JSR Music_State_Show
      h8 f: G. U0 \5 J% a
  2226. RTS
    . Q  f5 F& [0 `! a
  2227. % U' u  D6 G2 \3 h1 _; K+ Q- |9 m
  2228. ;==================================================8 ?, e6 c8 W- b4 v) B5 v) b
  2229. Music_Song_Play;音乐播放
    ; }% o$ {1 b4 S. P( t& x
  2230. LDA #$00' o5 o4 B" e4 @- Z0 e, x
  2231. STA <Music_Stop_State$ k- C; B, Z  W# W
  2232. LDX <Music_Item_Cur$ x$ J  ^0 ~% O+ d/ y2 s
  2233. LDA <Music_Cur,X, P1 r4 O1 J$ u$ R/ W  L
  2234. JSR Sound_Init_Proc
    / q. b- b0 a2 c  `- o
  2235. RTS
    : K* m4 r& T) e' k
  2236. / x' G0 v' {$ D
  2237. ;==================================================0 f* |4 |( J- R/ Q  v+ o, y
  2238. Music_Song_Last_10;上10曲  f/ Y; Z9 ]+ {- Y$ k8 _
  2239. JSR Clear_Last_Track_Name
    - ~( ]. _3 _% L) P
  2240. JSR Disable_Text_Draw! k- c9 _# l5 k& S: i  o/ Z; E& E
  2241. LDX <Music_Item_Cur
    0 {, s) l) z/ j' u
  2242. JSR Set_Sound_Total
    % r7 j2 T+ D3 t- q6 m& k
  2243. LDA <Music_Cur,X7 M4 Q6 R# e3 T- i4 Y
  2244. SEC4 s7 d; y5 J4 o, s
  2245. SBC #10% Q4 J" y' m. B0 W! M) m
  2246. BCS Music_Song_Last_10_Set
    ( S- e* r# F" p! y; N
  2247. LDA #$00: s* D0 }5 Z, \  _* N2 j
  2248. Music_Song_Last_10_Set
    & o( w4 f( P" |6 |2 f, @) Z* P
  2249. STA <Music_Cur,X* C6 ?& n/ d8 X) ?( `  Z( q
  2250. JSR Sound_Reset_Proc
    0 F7 E% r  Z$ _* o! G5 |/ _
  2251. JSR Music_Show
    * G7 P9 ?0 L3 U0 y! E
  2252. Music_Song_Last_10_End- F+ o: p& a* l/ O
  2253. RTS
      W, W/ F; u0 B2 d
  2254. 0 U! r5 x& x- E" c' z
  2255. ;==================================================4 Z4 X8 D# n. Y: I" g
  2256. Music_Song_Next_10;下10曲
    ! Q% B! d' W1 e  v$ {% Z! a7 G+ P7 G+ g6 }
  2257. JSR Clear_Last_Track_Name
    ) o8 b$ r5 k& ]! q# z- D7 i
  2258. JSR Disable_Text_Draw
    ' Q$ E8 z7 z) F2 j
  2259. LDX <Music_Item_Cur
    : L) j9 T$ `; l! S
  2260. JSR Set_Sound_Total
    ' G; `6 a( O; p9 ?0 _8 w( u
  2261. LDA <Music_Cur,X) O9 x, T: l/ i  X2 T5 t# Z
  2262. CLC
    9 k. x3 T& c1 s+ V+ [' V, {
  2263. ADC #10
    9 }. X- Z* b1 A$ o! f
  2264. CMP Music_Total
    + |6 `- @7 N9 R0 S
  2265. BCC Music_Song_Next_10_Set
    3 `! M4 Z) z8 ?6 F
  2266. LDA Music_Total& V) p* ?8 z8 v) Y
  2267. Music_Song_Next_10_Set  _* c- V0 m% R7 y4 s
  2268. STA <Music_Cur,X* H3 Z. {# z9 C7 w3 p! M
  2269. JSR Sound_Reset_Proc
    * W! I, j. y! o( m6 C( D: P
  2270. JSR Music_Show
    1 L; t  `1 Y5 {/ T
  2271. Music_Song_Next_10_End
    5 x0 W: q& R  I" b! v7 L
  2272. RTS  g( @/ g5 g) P2 i: z/ t7 m

  2273. " W. ]! X' |# [4 y4 q1 W1 B/ i( {
  2274. ;==================================================$ w3 C" U1 F; |3 S
  2275. Music_Song_Last;上一曲
    ; J# j2 N+ k9 o( r* `
  2276. JSR Clear_Last_Track_Name
    " \2 Q1 o) G! q. O4 A
  2277. JSR Disable_Text_Draw0 O8 H" i1 r- A9 [8 Y/ m" }
  2278. LDX <Music_Item_Cur% ?1 j2 V9 [- H# O2 B! S5 @5 |
  2279. JSR Set_Sound_Total) M, o6 N5 W) S2 ?; g3 Y7 w
  2280. LDA <Music_Cur,X
    % w1 D) M; K: W+ T# D3 e! }5 V- X
  2281. BEQ Music_Song_Last_Set
    - T6 u6 I9 Q& R& \! v
  2282. DEC <Music_Cur,X8 W$ G+ r* r3 B8 l
  2283. Music_Song_Last_Set) @/ [5 P/ [; f3 B" A* E: v2 C
  2284. JSR Sound_Reset_Proc  E0 n. `3 G% J- g6 O1 t- x: `; w
  2285. JSR Music_Show' L2 J6 q6 ?- V5 Y9 j# }) Z5 l" y
  2286. Music_Song_Last_End; k+ C' }& E/ j9 o2 ^
  2287. RTS
    , n2 L# d9 f6 G9 |4 U

  2288. ' O8 f7 k! p3 O6 [
  2289. ;==================================================
    . o2 D4 b; S9 ?, g" _0 o7 Z1 N. X
  2290. Music_Song_Next;下一曲
    9 j" \# C2 `. n! D
  2291. JSR Clear_Last_Track_Name8 L( T$ b. J0 {* G1 p. k
  2292. JSR Disable_Text_Draw; u: J7 c( E0 h  ]5 }" P
  2293. LDX <Music_Item_Cur8 p- k$ j$ e  y6 L: d  W
  2294. JSR Set_Sound_Total% q  k- K' A, p0 i- _$ P0 k0 i7 Y
  2295. LDA <Music_Cur,X
    3 K! g* A' G$ _( f: v7 d6 R
  2296. CMP Music_Total
    8 `% }( X2 d: W" T% X% k1 Z: v6 E
  2297. BCS Music_Song_Next_Set5 c- M; V, I+ `7 v
  2298. INC <Music_Cur,X/ x6 b5 g* K# T
  2299. Music_Song_Next_Set
    ) v; ]! E$ l: V# q+ T% c
  2300. JSR Sound_Reset_Proc
    # K5 t0 _# {/ L' Y; \
  2301. JSR Music_Show
    ( E* A3 V3 D7 x
  2302. Music_Song_Next_End' r6 z+ i& v- L
  2303. RTS
      T( {+ D. N9 a. B# X& }
  2304. 4 {% Z: @+ e2 d! p+ N" a! @
  2305. ;==================================================+ u; U1 E. ]; L+ |: r" o
  2306. Change_Select_Item;改变当前选择项, Q: O9 w% ?4 B
  2307. ;--------------------------------------------------
    6 D+ f4 _! N& Q9 Q1 o7 J
  2308. Change_Select_Stop_Play_Item;停止/播放0 Y% W3 p! n! P: x+ W
  2309. LDA <Key_Once
    1 F" o' v! S, E
  2310. CMP #$10. d  r- x' K6 ^+ ^
  2311. BNE Change_Select_Last_Item' h7 C% }6 v$ B7 [$ f
  2312. LDA <Music_Stop_State5 @( Z  m$ T* F1 {- g- l
  2313. BNE Change_Select_Play
    , H+ T( J$ Q6 g) Z* |9 q
  2314. JSR Music_Song_Stop
    3 A) ^. H0 w) |# p, t* |
  2315. LDA <Music_Stop_State" N7 @5 Y! y0 K5 P
  2316. RTS- X3 T5 O- p4 y' I6 R* p6 B

  2317. 4 U0 k9 e, y8 G8 b+ |5 L# _% o
  2318. Change_Select_Play' F8 C8 `1 ^' g" h0 d/ e
  2319. JSR Music_Song_Play
    * b3 R! x5 W1 ?9 I  n
  2320. RTS
    ; B0 g" Y; A* ?: p3 Z; E

  2321. $ x: i, F# _  Z1 W# O4 c
  2322. ;--------------------------------------------------
      P+ v) i9 j2 I% I
  2323. Change_Select_Last_Item;上一个专辑
    4 v, m9 m( F, X: ~
  2324. LDA <Text_Disable_Flag
      j" N- W4 d' n* U9 D
  2325. AND #TEXT_DISABLE_ITEM
    * C# j6 K+ s! h
  2326. BNE Change_Select_Item_End- J* Y: s1 a0 }4 m% x
  2327. LDA <Key_Once  j! J, W/ w3 n& M2 [$ n8 P& g( C
  2328. CMP #$08
    3 Q* y0 ^2 k! `* M# ~& g: J" a
  2329. BNE Change_Select_Next_Item" ?+ M2 t8 X7 r! l
  2330. JSR Last_Item
    7 r4 G( D4 e3 k% d! Q* x
  2331. ;--------------------------------------------------
      O* w9 _0 D/ w
  2332. Change_Select_Next_Item;下一个专辑$ ?6 N. }7 x6 H& G- t
  2333. LDA <Key_Once
    5 q& L) e. g2 y3 K4 S' Q
  2334. CMP #$04, R4 s6 l1 R- A/ h
  2335. BNE Change_Select_Last_10( A4 R! }* Y' j: [2 o) S( V
  2336. JSR Next_Item
    % ?5 k8 L+ M8 i- Y" f3 L4 u
  2337. LDA <Music_Item_Cur
    * f7 e- T4 ?  G# b1 y4 N; B
  2338. JSR Get_Page_Start_Index
    1 X9 E$ ?8 v6 _: d9 k7 N
  2339. ;--------------------------------------------------
    0 x- s' }# E: j4 v* F" G$ x$ g* R
  2340. Change_Select_Last_10;前10曲, x1 ^  P2 I$ \  m2 j) l: H
  2341. LDA <Key_Once, H7 g( w( i7 h. k1 ~
  2342. CMP #$40
    $ Q# `+ I$ V1 P' }6 b# f3 J) S2 D' Z8 l: Z
  2343. BNE Change_Select_Next_10
    ( ~3 f7 K; v1 f
  2344. JSR Music_Song_Last_103 {& J. j( g, @- J# x9 {& p$ e
  2345. ;--------------------------------------------------# N1 D; }- |) S: m  J
  2346. Change_Select_Next_10;后10曲
    ) z- x  u8 H* Q8 ]. c
  2347. LDA <Key_Once
    ( u4 j$ j' R5 G( Z& A: e
  2348. CMP #$80
    8 k# J1 b2 S$ f- T! y; y2 y
  2349. BNE Change_Select_Last1 i' Q2 t% R; K. v/ w0 s8 w
  2350. JSR Music_Song_Next_10
    % Z* h- d) o7 y
  2351. ;--------------------------------------------------$ ^- l# g- Z2 t6 E) V2 i& C( b
  2352. Change_Select_Last;上一曲
    3 F( \! _7 A$ N, i
  2353. LDA <Key_Once1 v0 ?+ }; ]4 \5 Q( i
  2354. CMP #$02
    4 U# G$ Z# t+ F" ^& W
  2355. BNE Change_Select_Next
    0 M" i6 F% [6 Q. {+ [, ]% p
  2356. JSR Music_Song_Last: B% l. U5 l% A( [
  2357. ;--------------------------------------------------$ z$ b- _! L! h6 g0 N7 y7 L  O1 m
  2358. Change_Select_Next;下一曲
    1 j+ u# r) T1 m. H+ w: Q
  2359. LDA <Key_Once- }! L0 L5 T( _' A! Q; j
  2360. CMP #$01
    5 ?4 x: t  ~# h* Q4 B) {) O
  2361. BNE Change_Page_Next- s7 E6 @' D. G6 U7 P) S
  2362. JSR Music_Song_Next7 g; K% F( K% D, c: e, x% X  ]
  2363. ;--------------------------------------------------
    $ Y$ D9 l2 M8 Z: K! }
  2364. Change_Page_Next;下一页
    / Z/ }. ], m7 W" Y! }6 Y5 u
  2365. LDA <Key_Once
    4 h$ o/ {' c2 F. T- \
  2366. CMP #$20
    ; I/ M) K, s; L2 s4 B- V% _- Y
  2367. BNE Change_Select_Item_End
    $ m# ]) z4 a7 D6 g
  2368. JSR Next_Page
    & y4 i* u- E/ ?" D8 H2 i
  2369. ;--------------------------------------------------, Z! O$ L8 a1 f, C, {+ c
  2370. Change_Select_Item_End
    ; y% F5 d: ]' Z& H6 _9 M/ z. C: B
  2371. RTS. u% E; Y& B$ x0 m% r5 r

  2372. # j; l8 `& \) g8 [3 s
  2373. ;==================================================
    , m. [3 ]8 t8 m% i9 j/ _  i( Y
  2374. Show_Arrow;显示箭头光标
    # K9 a+ `; {; o
  2375. LDA <Music_Item_Cur
    3 Y) t+ z# u5 m1 |5 e  h* @
  2376. JSR Get_Page_Start_Index" o/ k! H0 x2 Z$ K: _
  2377. LDA #$00
    - b: y* Q* f5 u. \
  2378. STA PPU_OAM_ADDR
    ! v  t8 B% _0 d4 e7 }! W6 i8 f
  2379. LDA <Music_Item_Cur  g. t2 `& l2 ]% g3 p
  2380. SEC
    - m0 B7 Q. A$ X$ j/ F. w
  2381. SBC <Data_Buf( P! m" x7 }' O/ g0 u
  2382. ASL A
    $ [2 N+ k9 [" ~9 d- n* @
  2383. ASL A% [5 W: ~% c7 \: t
  2384. ASL A+ }" x* N: P1 }* G/ y% t
  2385. ASL A! {6 ~, S# g6 H
  2386. CLC/ A4 U6 Q8 u2 f" }/ E2 P. o8 d
  2387. ADC #ARROW_Y_OFFSET" ^3 X* x. R/ J/ P
  2388. STA OAM_TEMP_ADDR + $004 ^( H  D2 O( u
  2389. ;STA PPU_OAM_DATA- e! P* f! [+ W2 C
  2390. LDA #$1F6 ]( o# k* c5 \# |
  2391. STA OAM_TEMP_ADDR + $01
    . {$ _0 i0 T' k
  2392. ;STA PPU_OAM_DATA( X  ^0 q6 f0 \; L) i" ^9 Q! Z
  2393. LDA #$00% Q% r# }8 O  s
  2394. STA OAM_TEMP_ADDR + $02
    " @, Y" ]! X2 L& o; @
  2395. ;STA PPU_OAM_DATA
    , f4 e( @% ?  r9 f6 E1 ~
  2396. LDA #ARROW_X_OFFSET
    2 F+ z- p4 n+ ~- a/ W7 R
  2397. STA OAM_TEMP_ADDR + $03- u* ^/ H' k3 N$ h* ]. {
  2398. ;STA PPU_OAM_DATA6 p5 ^8 e0 H3 ^; I( ]9 U( O
  2399. RTS7 u, b* r3 g* \. E: T

  2400. 6 T- @. B4 R; ?
  2401. ;--------------------------------------------------) c+ n0 {. e6 w/ C2 Z. ^* N
  2402. ;命名表数据
    ) k2 y( C- g6 b# O
  2403. Palette_Attributes2 S" @1 f4 E2 V5 K% T; d
  2404. .IF SOUND_BAR_SHOW_ENABLE' `5 C2 y$ j9 a# J" |1 B- z
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    # V8 o" P9 V2 Y4 I1 o0 c+ Q
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55* V% l0 A5 |" r6 Q' _
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75* i8 g( d0 F; ]& T% T
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA& p8 [# x2 Q5 l- s
  2409. .ELSE
    - v, n3 c6 H. ]: A8 C
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$557 p- }+ l" o( Q8 y) `+ ~) z. o
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    2 n3 b! ?+ ^- u4 X" R% d" q
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    7 B1 `6 [3 n9 k2 M# u' F% z) Q
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    ' u8 U; i- X2 F
  2414. .ENDIF
    / E' V3 K4 p; A
  2415. . G! x% |4 ~. v$ k
  2416. ;--------------------------------------------------: d% T; Z) F" a" A, t
  2417. ;调色板数据
    + w9 {3 K) E& C: v
  2418. Palette_Data
    " V! ?5 W' `  Z( C1 Q3 d$ k6 h4 S
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F, \6 d8 _# S; D! B
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    8 W% B/ ~+ T/ M  t9 Y

  2421. 4 @: _; @% l  W* x3 o0 \5 y+ ?' r
  2422. ;--------------------------------------------------
    ! d! ?/ k2 w$ R8 Q! K; X
  2423. Static_Text_Data3 R. N- T2 H3 Q4 f' ?
  2424. .WORD Static_Text_Caption_Data
    / e9 T; u& d- a3 I9 z1 @
  2425. .WORD Static_Text_Author_Data6 u! u3 j! Y9 ~
  2426. .WORD Static_Text_Date_Data
    3 Y: t. Y6 I  C7 a& i( W0 q# g5 C2 m
  2427. Static_Text_Data_End2 @( H7 \- G; l" U1 R# \) ^& c" V

  2428. 3 r4 K9 p3 s* d1 u1 {" q" a) T
  2429. ;--------------------------------------------------6 h- n+ O# k$ K4 M, T& n9 B
  2430. Static_Text_Pos
    0 C6 ~5 c2 m2 b& V
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)- A9 i7 |5 @) P! b4 |0 p
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos), L' l0 q8 W9 Y% j0 _' U
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    8 \+ f( F  M$ x  z1 Q5 j& |0 H1 U: }
  2434. Static_Text_Pos_End
    1 R. [. n: e0 W$ C
  2435. 9 @! u4 [: Q: o, r( O
  2436. ;--------------------------------------------------
    9 T2 D. ^2 j  s0 |* _' Z/ N
  2437. Music_State_Stop
    + V. n& c2 Z6 Z; w7 v( J9 J
  2438. .IF SOUND_BAR_SHOW_ENABLE) H/ I+ P0 O0 q+ O' f' X# o
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    8 D0 e4 b1 C' [$ Y- W; t3 k8 p* c
  2440. ELSE
    ! ~5 a  L1 ?! h; O
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00* E# M' O. J8 [7 y/ R! u# I) ?
  2442. .ENDIF' K% R/ O* s$ r6 V) n
  2443. Music_State_Play
    / R6 {1 P# N4 l( Q
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    . `5 S' y0 U" V; w$ X
  2445.   x$ ~3 x! [% o5 P5 X; l2 L5 U
  2446. ;--------------------------------------------------, g! L5 p$ @; D  B. A: O
  2447. Sound_Bar_Text_Data;声音类型文本% C. ^; y# v! l) k* p: z0 t
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    ( b8 r9 P3 _# E, W6 f+ ~' P' N
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    4 ?6 f# \6 a7 {( Z4 S# Z# |: P
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    - r, F! Y1 X+ _; i7 a. _
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    0 v% g$ S# A% u! P
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00  J, r* C+ v: g

  2453. $ ?/ n8 e: T. O( ~7 ~; U
  2454. .IF Track_Name_Pos( G+ X7 b. c- v+ |0 ^
  2455. , c# O8 Q2 F/ S4 {
  2456. ;--------------------------------------------------
    8 F' x& y9 R; n5 h( B0 x
  2457. Track_Name_Addr_00;曲目名地址索引
    . P1 P2 S6 Q/ ?/ y4 s6 L& C
  2458. .WORD Trackr_00_010 O& v/ U0 V6 r/ Z; n- w8 r: l9 A

  2459. 1 e0 A: ?3 b1 {4 u" ?9 }7 u
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    ( k) X1 {0 X. `9 I$ P
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    ( y9 P. v) z9 m3 \' P1 M! Y$ @
  2462. + \$ O# e8 h9 i0 j$ T' i
  2463. ;--------------------------------------------------
    / O7 a  O, a& T9 ~. H
  2464. Track_Name_Addr_01;曲目名地址索引
    , ?$ G$ [4 o8 z. o+ y
  2465. .WORD Trackr_01_01
    9 C( d$ E0 l9 x- C

  2466. ( a" T0 b! C( ~  f4 \
  2467. ;==================================================& l2 ~  \' S3 R
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    1 Q9 w) h: I6 f! Q" t" O
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"0 `; T% X2 W3 K- j
  2470. 5 U! d- Y  [  ]6 |7 u( `
  2471. ;==================================================" K8 ], k$ K% K" _& A
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    . J9 U  r8 R) @' {! T7 z% P. g; V
  2473. .WORD Track_Name_Addr_00/ h5 a, s! X9 z' \  O5 `
  2474. .WORD Track_Name_Addr_01' A, j3 L  {6 `6 q
  2475. .WORD Track_Name_Addr_01
    9 L* ~; Y' h3 w$ v& p
  2476. 3 ?$ V2 Q# u; S* `# \
  2477. .ENDIF% p3 P' T1 ^2 s- i/ P: ?7 u

  2478. 1 r! D+ ^- x- A2 v0 ?/ ]
  2479. ;--------------------------------------------------
    1 M0 z$ a5 f+ _: h" B+ v7 Y
  2480. Static_Text_Caption_Data;静态文本数据
    * ^- X3 L. P6 F. y
  2481. .DB 164 p2 \- D: _. V+ ]
  2482. .DB "FC MUSIC 12 IN 1") s# ]- G, Q% I" U8 u' t
  2483. Static_Text_Author_Data
    9 C9 R/ o! X- z" a! a
  2484. .DB 25, }+ ?; N1 s) m4 {5 A
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    9 a! x: l5 L8 J7 @" s+ x
  2486. Static_Text_Date_Data% _; V# I1 O( z; l: I4 C
  2487. .DB 10
    ' C" t6 ]/ B: [) h" C  v4 y
  2488. .DB "2023.07.23") T2 k7 ^8 f+ P$ S. }

  2489. / e# z( W! x% ]7 ]6 M7 A$ ~; |. }
  2490. ;==================================================
    ' w" a( c9 {+ s5 I& q% ~
  2491. Music_Collection_Name               ;专辑名间接索引
    5 X2 z4 F9 @3 a2 T4 s. [! N
  2492. .DW Music_Collection_Name_00
    4 F, Y: ~6 F4 s- ~
  2493. .DW Music_Collection_Name_01# o$ f7 J  m8 H( o
  2494. .DW Music_Collection_Name_02
    ' P) r5 u" b& Z, X5 q1 X8 ?) i) [8 z9 w
  2495. .DW Music_Collection_Name_03! ]* J$ Z! r- \/ ?2 I7 a
  2496. .DW Music_Collection_Name_04) w5 f2 F1 @1 F4 d# \- L
  2497. .DW Music_Collection_Name_05
    - B8 a! @& J; o/ o; `: P$ P, D
  2498. .DW Music_Collection_Name_06
    $ I$ I& d- B; p8 }/ T
  2499. .DW Music_Collection_Name_07
    $ V! V( s6 t: v$ J' O3 p! M
  2500. .DW Music_Collection_Name_08
    : H/ M) o% _, K! L- S
  2501. .DW Music_Collection_Name_09: b+ }' i; F7 l- G/ E6 p
  2502. .DW Music_Collection_Name_109 t2 B" J* Q+ H2 N2 o! X6 Q
  2503. .DW Music_Collection_Name_11
    ) @9 Z" ?% }/ z! |9 n9 w

  2504. " W$ i9 s* v7 v
  2505. ;==================================================4 ~6 V4 o' }7 R8 j! K/ X  |) \
  2506. Music_Collection_Name_00            ;专辑名文本数据
      \2 R" {3 K9 \% [, @
  2507. .DB 11,"1.RAF WORLD") H$ h7 [/ U; m* C- B
  2508. Music_Collection_Name_01. l; g& t2 ~6 w+ q
  2509. .DB 15,"2.FINAL MISSION"% c( _8 k, o; _% n: l
  2510. Music_Collection_Name_02
    . z6 R+ F! }0 v' U" y3 p/ [0 L) a0 Q
  2511. .DB 06,"3.KAGE"; W" l' K! ~! n2 f
  2512. Music_Collection_Name_03) {# m- Y3 X( O0 h7 h6 l* U
  2513. .DB 16,"4.DOUBLE DRAGON"
    $ D1 N$ Z0 i4 v' m
  2514. Music_Collection_Name_04" v% Z6 b4 [- W% F
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    / F/ P- D4 \6 p5 D/ W. i
  2516. Music_Collection_Name_05
    9 w1 k* T: |! {8 L% q9 M
  2517. .DB 17,"6.DOUBLE DRAGON 3"; ]8 P5 J9 e# ?! O" Q3 Z. R
  2518. Music_Collection_Name_06
    % x0 N" a+ `5 X3 O5 Q: x& u
  2519. .DB 09,"7.ROCKMAN"
    3 m: A' o5 P8 u( r1 i1 ^; k
  2520. Music_Collection_Name_07
    % L/ p+ Q3 e$ s& R
  2521. .DB 12,"8.ROCKMAN 2": Y1 }# P6 }: ]7 Q9 M8 a
  2522. Music_Collection_Name_08( m. X# C5 ]& r3 N0 A# a
  2523. .DB 12,"9.ROCKMAN 3"
    ! c7 H9 f- ~  E: n: P
  2524. Music_Collection_Name_09
    ' [8 X8 ~: ^8 `4 A
  2525. .DB 12,"10.ROCKMAN 4") }1 L7 |& y3 E7 r) x
  2526. Music_Collection_Name_10
    + V5 q2 n0 z& v% V8 o1 o2 x
  2527. .DB 12,"11.ROCKMAN 5"
    4 X2 Z- @# i% p4 Z- Q4 w
  2528. Music_Collection_Name_11
    ' a7 W5 J3 B8 ^# t' W% O- Y: \# q3 ?, q
  2529. .DB 12,"12.ROCKMAN 6"
    4 }0 D( L; C- L/ U! E

  2530. * h9 a7 h' ?5 m: U
  2531. ;==================================================3 p4 p& R1 }1 V* z
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    ( g; @  \+ A) i1 c9 _" Z, ?
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0$ R8 j0 |. W0 t7 t9 u) M0 t
  2534. 2 q9 t2 H  B1 w' |6 N4 M
  2535. ;==================================================5 |, }0 V0 ~3 R
  2536. Item_Pos_Data                         ;光标箭头位置
    3 ]3 h# p* i& @; d, ~5 f6 p, n
  2537. .WORD ITEM_SHOW_POS
    9 F- ?& u8 G: ^$ N+ K
  2538. .WORD ITEM_SHOW_POS + $0040, k; W0 H6 u' Q# [) o8 p% x
  2539. .WORD ITEM_SHOW_POS + $0080
    1 t- e+ s0 N: V3 e
  2540. .WORD ITEM_SHOW_POS + $00C0
    - I! ?6 m+ C6 u- A
  2541. .WORD ITEM_SHOW_POS + $0100* \  ?: o% z0 P( b
  2542. .WORD ITEM_SHOW_POS + $0140& x; ^& G. T* m. A: w

  2543.   _( C; j0 F8 R* g, x
  2544. ;==================================================3 D5 f7 u/ r+ s8 |
  2545. Sound_Init_Port                 ;音乐初始化入口地址; \: L9 I7 |9 q8 f
  2546. .DW $BFC8
    % T: X( F) d( J5 i) f
  2547. .DW $D7F0
    ; H& g+ ^! I, t! _, W
  2548. .DW $9FC0
    ! i- {3 T# R- {; K7 R, a/ I9 U
  2549. .DW $BF708 l0 ]; x& N4 p& r2 U
  2550. .DW $8003
    ' M; i! \8 n) k+ l  e: U; x
  2551. .DW $BF30
    9 [! a' A6 s2 m2 Y' N' b+ T" O8 L1 e1 ~
  2552. .DW $9003: Y4 B6 c, R# I
  2553. .DW $8003
    5 x" l, I9 Z3 w5 d2 p
  2554. .DW $8003' q; K4 _. @3 e- k1 ^# s! Y
  2555. .DW $8003
    1 W" N2 y' j+ r+ v7 ?& E9 X, `, B5 c
  2556. .DW $80037 {  R7 G3 k9 N, m( g
  2557. .DW $8003$ a7 A! j0 `% K* y( e8 X# U
  2558. ; B# e2 f" Y5 _' Y
  2559. ;==================================================
    : J( M5 n+ t3 |, ]( k6 D
  2560. Sound_Play_Port                   ;音乐播放入口地址
    6 Y, O7 V3 U1 k; o- f( y; q) u- j! D
  2561. .DW $80008 w( O8 ?( i) c$ O5 _
  2562. .DW $8001+ @. }) Q' L. e3 q3 o1 d
  2563. .DW $A000/ q+ ]4 x+ [0 d
  2564. .DW $8003
    6 l( G# W# e! s- K% q
  2565. .DW $8000
    " b" {  {0 l8 t6 z/ u+ w
  2566. .DW $8003
    4 j, i9 q( C. c& t
  2567. .DW $90000 s4 E3 q' D1 c" M. _# X  \
  2568. .DW $8000* p& t; {$ _/ ~" G5 A9 q
  2569. .DW $8000
    & m' n! d  Y8 I$ \- E
  2570. .DW $80000 u9 @' Z- I9 A  Q6 i, `$ l
  2571. .DW $8000
    & `7 E8 h# A: ~
  2572. .DW $8000
    7 l5 g9 B# s2 ^4 F

  2573. 2 f4 T. F1 f/ {+ R* q$ @$ C0 O- T
  2574. ;==================================================5 g( G5 }& a6 g$ y
  2575. Sound_Reset_Port                  ;音乐重置入口地址8 w2 @' R7 e( n: R
  2576. .DW $0000
    , g$ |0 f7 q* Q7 n. [' L
  2577. .DW $0000
    * K& B/ X# y; _* @5 W& U& T0 S
  2578. .DW $0000
    6 t, y& \: j3 v; r7 u6 C  b: Y
  2579. .DW $0000
    0 T" I# P- J5 k* v4 [; z! g
  2580. .DW $0000% z4 A" u* W! K8 b3 Z* j
  2581. .DW $00009 g% Z2 I- n' Z  f# i
  2582. .DW $00003 `+ n- K9 y" ^5 C
  2583. .DW $0000
    4 p9 j( o: ]# d' `/ P
  2584. .DW $0000/ s4 X/ N! {; r
  2585. .DW $00002 S! u  |5 |* m3 c2 M
  2586. .DW $00001 G: x+ n! V8 Y) n+ P- {/ g6 u
  2587. .DW $0000
    ! |" D4 d  p9 f8 r& Y- g( a; O
  2588. * ^* F7 Y% e! ]& a
  2589. ;==================================================# p7 P# E9 f, P# Q
  2590. Sound_Total_Port                          ;曲目总数; f1 h6 U+ f4 B) J" C
  2591. .DB 38/ {4 P0 Z3 m- C& s7 \/ W, h9 j
  2592. .DB 33
    8 Z4 \5 ]" h* [/ S
  2593. .DB 49
    3 U3 `  t7 p8 Z8 w. Z
  2594. .DB 410 q4 K' V+ f8 l  v3 G; d7 X
  2595. .DB 83# e: D9 y2 h8 Q
  2596. .DB 70) L- t" g& G4 I- L. n  R; B
  2597. .DB 50+ n5 w) o& E+ O  y, ~' x
  2598. .DB 67. ~2 L2 b' Y* Q2 L/ i0 [! @1 o
  2599. .DB 57
      a  q1 t2 W4 a, m/ N
  2600. .DB 71* [2 k* r$ B; r
  2601. .DB 767 ]9 ]' Q7 b- t* D! F# Y
  2602. .DB 102
    # T, H! J4 q3 D3 }% u% z4 E" m, k

  2603. + j* _; l' a7 ^3 ^3 y
  2604. ;==================================================
    5 K/ l+ @; [; Y* h
  2605. Sound_Start_Port                      ;起始播放曲目
      {) i  a/ d% b9 M( `3 G3 Y
  2606. .DB 00
    3 w$ a3 Q7 Y8 A; c4 U0 v$ w
  2607. .DB 00% J& y: y: }5 w3 y
  2608. .DB 00& O- P( J  _: `+ Q* ]3 K% ]. L- ?
  2609. .DB 00
    8 `4 z" Q; v+ f8 z* x' ~( ~
  2610. .DB 00
    ' ~+ d( Q% \/ M; o
  2611. .DB 00+ a5 s7 ]' r1 q* ^0 ~* @
  2612. .DB 00$ L, F$ Z" Z& Z. K* D4 j2 y4 ^( l
  2613. .DB 00
    ; ?! h1 F1 ?3 J! M1 \, K' D; n
  2614. .DB 00
    ) Z4 K$ l/ Q: F: Q' ^- L; |/ ?
  2615. .DB 007 [4 n8 x0 `! S* g2 W
  2616. .DB 00
    $ \+ W2 w" Z3 l; D; t
  2617. .DB 00  A, {% T) b! J5 d4 T! O( m

  2618. - n( l" X9 M% x: s( U" _) u
  2619. ;==================================================2 D0 T# K/ K% d9 |
  2620. Sound_Bank_8000                      ;专辑bank_8000
    2 S) [! q5 `/ i7 q
  2621. .DB $10
    ; E- P" R5 t2 e, L! b! [8 R0 ^$ e
  2622. .DB $124 T' e1 r- o% [# k
  2623. .DB $14
    5 f  C4 Z" j2 M1 ^8 F& R
  2624. .DB $16
    7 W! w5 h% J; _' X! I$ D
  2625. .DB $18
    & ]# X1 Y; b1 ?& o
  2626. .DB $1A
    - X4 E* S% K+ P) c% [" \
  2627. 8 x/ R. ?/ n1 H1 N2 Y" G9 z2 O
  2628. .DB $002 F& [& W" T! `+ M$ I
  2629. .DB $02
    7 F- Y9 _1 y/ [6 k+ ?( F
  2630. .DB $0D
    2 C- h3 k. d6 F( F5 a3 _9 `
  2631. .DB $048 K& N* S, y" B9 V0 J
  2632. .DB $07* N' {- `, S+ B# D! r. q: N
  2633. .DB $0A% G' T5 T% ~. U' g

  2634. 2 t4 h0 W9 @9 L* A% }. D

  2635. 3 x. C) o3 u% ]) B
  2636. ;==================================================+ E. W- {( T, B
  2637. Sound_Bank_A000                      ;专辑bank_A000
    ! Z. P( D: X$ C7 \, m  M
  2638. .DB $11) V3 t4 U/ L% B* L# ?; U3 N
  2639. .DB $13
    ' q& K5 ?0 S1 K7 o8 P
  2640. .DB $15' v1 P+ R6 Z2 I1 v6 O' V: w+ Y
  2641. .DB $17$ s2 J& i5 v: L0 [$ R* ~0 p+ |
  2642. .DB $19+ {( w. k8 B% B4 R8 U' A4 i
  2643. .DB $1B
    7 B, p  s0 ]# X) u
  2644.   }/ }2 w7 I( n  U( b
  2645. .DB $017 Z" G/ V  y: F4 f& Y
  2646. .DB $03
    & M& f. |# U( X" E4 S9 i/ F8 x
  2647. .DB $0E
      h- y& c  y* r! s" i- Y
  2648. .DB $05/ e$ w( ~+ B" l5 a. ]8 [$ N' w' @
  2649. .DB $08
    ; {# a; ^# i- t" ~2 z, r9 \
  2650. .DB $0B
    5 w" s6 I: g+ v" y4 b4 h
  2651. , E7 R1 ~0 x9 M9 P8 }: g
  2652. / ~, h' h, ]7 \' A( T: [
  2653. ;==================================================
    0 U% o, u2 ^$ ~" D) i. G
  2654. .BANK RESET_BANK & BANK_DATA_MASK" v2 B0 N# e* \& E& d
  2655. .ORG RESET_ADDR
    + i* L) l, j+ q! K/ a4 m. ^. j7 v
  2656. $ y& P" w; b) g; `) I+ H! U
  2657. ;==================================================8 x, s, n1 p0 D! O5 @0 H
  2658. Switch_Bank_8000;切换bank到8000-9FFF# K2 z  |. k% j, ]) P3 b. z4 x
  2659. PHA9 S1 z3 U6 u6 D" N
  2660. LDA #$06
    / V4 I& N0 m9 g1 O
  2661. STA MMC3_BANK_CTRL
    ) B3 @, u4 g+ z9 m# G6 G3 ^
  2662. PLA- K8 L4 W, B- d+ Y
  2663. STA MMC3_BANK_DATA
    - g- c3 X; ~8 T& _
  2664. RTS) v2 q; G8 L& I  X, h
  2665. 7 l# a5 s: l8 [& j
  2666. ;==================================================
    * `7 U; A# L" ^2 q' b4 p
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    0 Z1 G6 L0 l8 G& X  H! d
  2668. PHA; ~, H' a* ]# V- A4 b
  2669. LDA #$07
    0 O" |. n7 {; P* y
  2670. STA MMC3_BANK_CTRL
    4 N, j" M; ~  p- |: `! a7 u
  2671. PLA: E' |3 I. L$ [% _2 u
  2672. STA MMC3_BANK_DATA
      v" i7 l& ~+ ~
  2673. RTS
    : ]8 I( D7 z/ t" u5 t: y, q
  2674. % p7 _& e1 ]& O; O8 y: r
  2675. ;==================================================
    % i  ~( C8 b, g! l/ i
  2676. Switch_Main_Bank;切到主程序bank
    ! D! I; ]' j: @1 P6 h2 N% ~
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
      I7 M/ [9 a3 q* p
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank- \" }* V4 h2 T9 x& O5 ]
  2679. RTS
    3 Z# ?3 G7 a# p6 a

  2680. 0 |+ ?, l9 x8 a0 x4 v
  2681. ;==================================================
    ( D. s6 V. z1 L2 ?' O- K7 }5 Q
  2682. Sound_Reset;音乐重设(如果有的话)
    5 O0 c6 \/ L/ F# Z: Y
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    ( w/ i0 n+ z5 _7 C' a5 X( |
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    1 O/ x% k  i1 I) G0 ~# I
  2685. JSR Switch_Main_Bank   ;切回主程序
    3 S9 \  c/ @( f2 F' |7 ]) N( Z, m( H
  2686. RTS' ~9 I9 H) `3 ^$ _

  2687.   V. r; s0 V$ t5 s+ q% o
  2688. ;==================================================# O4 a* e( h2 m
  2689. Switch_Music_Bank;切换音乐bank
    + ~& K. F, e+ }+ [# z4 V
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    4 ^  Z. g; V# y3 Q
  2691. LDA <Music_Bank_8000
    % D/ k  i/ |* O8 C
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    0 |: K" G7 g$ ^0 i+ Z2 n$ P
  2693. LDA <Music_Bank_A000
    + T7 m0 g* A% e; q! J7 x2 s/ u+ w
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank; L# b2 @! k4 E, C; i# y
  2695. RTS
    $ |; F- j& u: b

  2696. % s- G7 c% M$ {  P! Y# X
  2697. ;==================================================
    1 r2 y# A+ b$ K. T) `
  2698. Sound_Init;音乐初始化8 B5 B9 |* h1 e  q
  2699. PHA" ^1 j% n+ z# p
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    1 g+ ^( B  Y! |+ s4 s& y5 _" A
  2701. PLA
    " h6 O! v2 y3 i
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    7 c. v) B# g) l! j: F! E
  2703. JSR Switch_Main_Bank   ;切回主程序
    7 P# \' N( ?. I
  2704. RTS  K# {& E3 }% X- {! g6 ~+ b* y# w5 e

  2705. 0 c, p+ A' ^0 i- X
  2706. ;==================================================
    ! A( n5 |# a  u3 A/ b* M
  2707. Sound_Play;音乐播放
    & _  t/ h0 `9 l4 s
  2708. JSR Switch_Music_Bank  ;切换到音乐bank9 R4 U- O- R8 e0 q  J- w" Y
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    $ A- b& I5 o+ P3 E
  2710. JSR Switch_Main_Bank   ;切回主程序
    8 \& ^8 e( h* E) t: h1 x$ e7 W# w) a
  2711. RTS" b  r  z; S, Z0 y! @
  2712. 5 \7 H3 q- p, r! X8 o
  2713. ;==================================================
    # j; }4 u- Y! L  U2 {6 q0 u( ^
  2714. MainLoop;死循环
    ; z& m. J7 [; N
  2715. JMP MainLoop
    . X$ }- N/ v# ~  d0 u$ q
  2716. / s  a0 b& A  M' o, m" e3 Z- K& S
  2717. IRQ_SUBPROCESS_JMP = 0: Q. @9 n3 J  n5 k' a& v. ~, W7 N
  2718. 8 g7 ]' N6 T3 B$ |' _
  2719. .IF IRQ_SUBPROCESS_JMP; W3 G' J1 Q, E) C( x/ L5 w
  2720. ;==================================================
    ! ~( c( w/ Z$ S- L$ N
  2721. IRQ_Process_0;IRQ处理过程0: d' V/ G: d8 r- Y2 _+ |* A
  2722. ! \" {# f; x) a* Q0 ~
  2723. ;15条扫描线后触发IRQ
    4 x' n+ H0 Y/ s& Y3 G. A
  2724. LDA #151 Y  c; v, }& M9 o
  2725. STA MMC3_IRQ_LATCH- q! c, K4 B! c1 ?0 R( l5 a

  2726. & R+ n: c) C8 y
  2727. ;设置屏幕滚动' l- }. A5 T" U! r
  2728. LDA <Scroll_H
    3 k' M: i6 H8 t+ c: \  J
  2729. STA PPU_SCROLL' C) v+ S4 \1 Q  D9 s$ ?/ c
  2730. STA PPU_SCROLL
    * @# v% Y1 R: y2 T  P5 ~

  2731. . Z9 ?9 v0 }& s3 y: g. h7 W
  2732. IRQ_Process_0_End! Z0 U' Y, Y3 ]+ l6 e
  2733. INC <IRQ_Process_Index1 F3 l, v' \5 r4 ], L1 R. k
  2734. JMP IrqProgramEnd) f7 R& S  b4 H! g  r6 e4 h8 ^

  2735. 1 N- L& Y1 Y) w7 m* ~
  2736. ;==================================================
    , J4 s! B$ q+ n' b# d  y; O
  2737. IRQ_Process_1;IRQ处理过程1
    ' }# k+ n0 y# Z% o6 g0 H: Z
  2738. : i; ~& f' j; L7 M" D7 g6 T" P
  2739. LDA #55
    + }, U0 B+ |# G+ R3 o3 ~9 i
  2740. STA MMC3_IRQ_LATCH5 a$ Y* Z  |1 ]3 t
  2741.   }8 |  ]0 W, s; F) g$ T
  2742. ;设置屏幕滚动
    ! u6 d1 Y7 ?7 @
  2743. LDA #$00( b3 F* A( c' q6 B" D
  2744. STA PPU_SCROLL
    . M- i- N0 p/ u* Z" l. w3 D
  2745. STA PPU_SCROLL
    1 R) x0 u# z  E+ A1 D9 V

  2746. , q# Y0 N2 y3 B4 M. Y+ P
  2747. INC <IRQ_Process_Index; s2 z4 Y# N9 J2 O5 L
  2748. JMP IrqProgramEnd
    8 @7 @2 A7 \' a- R
  2749. ' L8 a  J3 X: ^# z* W* T
  2750. ;==================================================! \. c- l$ z( {0 [* D) o
  2751. IRQ_Process_2;IRQ处理过程2
    9 [/ h( J8 `$ `4 H3 J- Q6 g

  2752. - L( B; F5 a8 i
  2753. LDA #151 M2 }* u, V+ P; O
  2754. STA MMC3_IRQ_LATCH
    , F% }# T: z4 o' ]* c
  2755. 4 c+ f' w9 \) r" z5 B
  2756. ;设置屏幕滚动
    , u  O/ O7 ~: l3 |1 x9 I8 w+ ]4 b
  2757. LDA #$00
    0 H2 b1 ]7 ^6 C2 @2 q. t6 z& q
  2758. SEC
    * d7 u/ Z& T& V7 r0 r
  2759. SBC <Scroll_H
    6 E: \8 j9 Q& K1 A: ]
  2760. STA PPU_SCROLL
    0 L' ?/ \& d* U
  2761. STA PPU_SCROLL
    . x% C' \& Y4 s1 Z4 [
  2762. ! G) }4 M% }) L  ^1 Z/ S" B. s
  2763. INC <IRQ_Process_Index
    $ ~& F8 z- c" {! h1 `0 @6 Y- @; S) r
  2764. JMP IrqProgramEnd
    ) U: f3 l8 A- Q& H: I6 J
  2765. ) C9 B4 P9 E/ e! b& \8 {
  2766. ;==================================================
    4 }4 i' g. i5 w- B4 I( G5 X4 U
  2767. IRQ_Process_3;IRQ处理过程38 P7 ^$ l- s7 q

  2768. 8 E8 H3 X9 F3 D" J. H' _- Z
  2769. ;设置屏幕滚动
    9 T9 U, P  ?/ }4 {* ?/ ]
  2770. LDA <Scroll_H, K- k: Z$ z- [" {& [" G1 n& f
  2771. STA PPU_SCROLL
    0 U' ]$ ~9 p( `# S& }
  2772. STA PPU_SCROLL
    3 U# F9 O, D5 x  ~6 m
  2773.   y% p# f- N. |4 K2 s- B/ r
  2774. ;禁用IRQ
    " b7 J* S- d' q
  2775. STA MMC3_IRQ_DISABLE! Z7 L: I# J8 l( k: v3 I
  2776. JMP IrqProgramEnd: M) B  s& i# W. [

  2777. 2 }$ w$ u" J7 \8 W
  2778. IrqProcessAddr+ D1 Q( C. i: O6 N% Q
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3! \& j/ c! U( r9 m5 L- C0 P
  2780. ( O: f2 l5 R- ~/ L$ V" m" R* a
  2781. .ENDIF* b7 `& ~. @0 q. D5 Q& k

  2782. " n/ s4 I4 A+ U# `" c; W7 R
  2783. ;==================================================; j! J4 @1 \6 E9 `* ^5 y
  2784. ;IRQ滚动模式常量
    & X% o" W; F4 h
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    - F) R# m5 |/ n! Z0 [3 }$ Q- V
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动* `6 g( N. P3 o& d( ]6 f6 d7 b8 d: V
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动  S: @" [0 |; Y6 R
  2788. 4 r2 P5 y, T+ J6 ~
  2789. ;IRQ扫描线数据
    1 s5 x6 T' w: E) j1 D# h, E: Q+ z
  2790. IRQ_Scanline_Data$ K9 k. N# ?2 R
  2791. .DB 89 I4 M1 ]& Y) i
  2792. .DB 54  v! R) u% E- f/ V
  2793. .DB 8
    " G; a1 E# R2 f" w$ `1 D& w
  2794. .DB 00 ;关闭IRQ/ Q4 E9 a$ f* n2 ]/ G8 k

  2795. : ?8 L3 h+ r+ C. V- R
  2796. ;IRQ滚动控制模式
    % m3 k: z. f6 L
  2797. IRQ_Scanline_Mode; L# H) C* g7 K' r$ b
  2798. .DB IRQ_SCROLL_MODE_ZERO7 ^. t1 G, d- l5 y
  2799. .DB IRQ_SCROLL_MODE_ZERO
    + C' ~0 b! f( i' c
  2800. .DB IRQ_SCROLL_MODE_RIGHT4 U6 K8 I' l$ ~/ d: Y
  2801. .DB IRQ_SCROLL_MODE_LEFT. ?" c# [% I$ w& ]
  2802. ; z$ w$ e# P) g# [! a& F! J# Q
  2803. ;==================================================
    & |; Z! X0 Q5 M6 _4 W" e& S& ?' J
  2804. ;IRQ处理
    * {, T, V% \$ H, a% e+ q
  2805. IRQ_Process
    " u# R+ H9 f. G6 w) s" w
  2806. LDX <IRQ_Process_Index
    + W+ _8 _; u' r+ S
  2807. LDA IRQ_Scanline_Data,X
    9 c! t0 T/ P* z1 x2 m: B8 ~
  2808. BNE IRQ_Process_Latch
    9 ^2 g2 Q. _3 V2 K! I
  2809. IRQ_Process_Disable;禁用IRQ
    " E. i/ p: B) `8 b5 ^% m- z$ Y- Z! z
  2810. STA MMC3_IRQ_DISABLE
    ' A  c- a/ E- @7 p5 ]5 ?9 }6 G$ k
  2811. STA IRQ_Process_Index
    $ Y. p  O7 H# M
  2812. BEQ IRQ_Process_Scroll  q/ f1 s( x" [: K) y
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线5 \8 M3 j' G6 c, i
  2814. STA MMC3_IRQ_LATCH
    7 J: H; |9 \# _% I
  2815. INC <IRQ_Process_Index
    ! F( J" n3 k+ _6 k
  2816. IRQ_Process_Scroll;IRQ滚动控制
    - b% P' V9 z/ z: j) P7 H9 _- V5 K$ p
  2817. LDA IRQ_Scanline_Mode,X
      s1 h( H/ Q* }, I. c( p! D! E3 N
  2818. CMP #IRQ_SCROLL_MODE_LEFT9 {/ {9 h3 Z' r
  2819. BEQ IRQ_Process_Scroll_Left' R1 ?* A: t9 A3 n
  2820. CMP #IRQ_SCROLL_MODE_RIGHT8 B# |, ?/ v! l7 f4 w9 }
  2821. BEQ IRQ_Process_Scroll_Right. ^* ~0 `/ z/ a. }  t8 R" j
  2822. IRQ_Process_Scroll_Zero;不滚动6 g) G+ m, s1 w% V; E" x9 V
  2823. LDA #$008 R$ V& J$ c( H1 n3 T+ ^& H
  2824. STA PPU_SCROLL! l! d0 S  G* q% ]
  2825. STA PPU_SCROLL
    ' m( L) ]) M+ K% |& v" _; [  C" t
  2826. RTS4 r6 ^) s! d7 U. _& x+ f$ x
  2827. IRQ_Process_Scroll_Left;向左滚动4 w! H, L& v9 a& T% i9 M. J
  2828. LDA <Scroll_H* J: E( [8 Q9 e9 A; u$ Q- ?8 F4 Q+ Y
  2829. STA PPU_SCROLL
    - C# y# G- L$ U
  2830. STA PPU_SCROLL0 d- W9 H! U1 c! }* v, u
  2831. RTS( R# n' B; D1 @" r
  2832. IRQ_Process_Scroll_Right;向右滚动
    5 ^! E, [0 O1 g/ w4 M( s
  2833. LDA #$00" n: J9 j# P' x' L3 O7 s$ p
  2834. SEC
    ! o3 q8 y% O& y6 I) a  y
  2835. SBC <Scroll_H
    ; s" {: o/ B% H. `3 `; M
  2836. STA PPU_SCROLL
    ) T' W7 p; i% J2 H. X$ j' W
  2837. STA PPU_SCROLL# K! o. j3 ]1 O- I3 L
  2838. RTS) m& q! ~, T# U% b' X) i% Z6 S
  2839. . K( [8 g- C0 J+ r0 V3 p5 v+ s2 z' ^; T
  2840. ;==================================================. B: C; o, j( k" K/ X( ?4 s
  2841. NmiProgram;Nmi中断处理
    ) i% o; n$ H+ o; w, M9 ^
  2842. PHA
    * c" j2 r4 X# P" Q5 D3 ^
  2843. TXA" x+ O# Y* P2 |/ M* A( w8 ?
  2844. PHA
    0 A2 ]" V2 G# n
  2845. TYA$ d9 A& L7 p2 O: [/ H) q3 {
  2846. PHA
    $ m  r3 O3 e. {/ y# n

  2847. - d1 f( o7 P  [0 ~
  2848. ;读取清除Vblank标志, 防止重复进入
    * k" z# `' \  ?! x; u. h* B/ j
  2849. BIT PPU_STATUS
    5 e5 \) y& d) k4 s  `" }8 B

  2850. # r; A8 `7 g9 m& g
  2851. ;切换主程序bank/ E, G1 Y. p# S5 s) Y# L
  2852. JSR Switch_Main_Bank
    , p$ u5 U  x0 A. n

  2853. 0 U" L( m) [4 U$ o' R
  2854. ;Nmi处理
    $ [% B9 A) ~* R4 |. k/ [
  2855. JSR NmiProcess
    ) A; l5 `9 V7 T+ Z- Z- @# r( Z, W
  2856. 1 Y0 R3 N* K/ h2 ?0 u9 ]4 _
  2857. Nmi_Proc_End
    6 r( f2 t) G! `' H
  2858. PLA5 v) k; z0 c( |; _9 j" a9 B
  2859. TAY
    ! C! j8 D  }  m# l- T6 h
  2860. PLA  }) P2 s* b% K1 r, V- N) r! J- M
  2861. TAX
    : W8 L/ h9 D4 e; \% l, Z- h' W! {2 I( f
  2862. PLA
    # l, n6 {: `1 d) J+ A  Z- `) k
  2863. RTI
    9 P  G' S5 I) K- W5 i2 \2 I& ?
  2864. - v8 Q2 F$ i1 O! P. U
  2865. ;==================================================" [$ g2 m" k( Q  @# M
  2866. ResetProgram;重置中断处理* d, o. W7 E, b( _/ X- H
  2867. SEI- R, a$ a2 x2 k1 J, v" Y& h
  2868. CLD% D5 [) ^( c( ~4 D! y/ @( i0 V# L
  2869. LDA #$00
    1 i/ V" x9 |% I' g* M3 M
  2870. STA PPU_CTRL( ^  f+ k; V" i% P+ Z& |, \
  2871. STA PPU_MASK
    4 d- q+ R5 q/ d  a" E

  2872. ! L' z+ l6 @/ a% \3 U- D9 R( h" V
  2873. ;切换主程序bank& ~# ~; \; Q* x
  2874. JSR Switch_Main_Bank
    2 i' d& Z8 `& ^1 u$ c
  2875. 8 `: g( R7 L1 X- T
  2876. ;程序处理开始
    ' f3 E, C: O  ^% [( i% |& c" Z
  2877. JMP ProgramBegin
    % O$ L. z: K+ e, ~$ S$ _
  2878. # f4 a8 M8 Y, B$ S& |  r( d5 }$ U" q4 G
  2879. ;==================================================+ N+ M4 q4 j* n* l$ C
  2880. IrqProgram;Irq中断处理
    ! {% |2 I( I& u+ B, i: v
  2881. PHA6 B7 x2 a% B: V* E- \, @. Z9 f
  2882. TXA
    - r  v2 b( l7 n0 B& N2 d
  2883. PHA$ c6 o9 R% d0 F& N
  2884. TYA2 U" M* t- O3 }9 x6 p. Z
  2885. PHA) Z6 h0 L5 `3 r7 [9 A- Y$ V

  2886. : }8 O+ p. V# x
  2887. ;关闭IRQ- M5 c6 B' X& e+ ^! \5 W: O
  2888. STA MMC3_IRQ_DISABLE! A8 @) F: e4 N6 p# B+ s0 J; |  e

  2889. + @2 x1 T0 M7 z8 ]1 Q
  2890. ;允许下个IRQ触发* O# |' L/ r6 E% z1 O2 G( E
  2891. STA MMC3_IRQ_ENABLE
    8 v+ W, n1 W+ T
  2892. : W* b  g, l4 }' h* N/ E5 d% t
  2893. .IF IRQ_SUBPROCESS_JMP: I" s! {% E& c0 J  R

  2894. 6 S! x& S: t. Q( s" g
  2895. ;执行IRQ过程% @/ |  s8 X0 q6 o1 n& h3 X' ?
  2896. LDA <Data_L- n: t' ]/ j; c" G. V5 A
  2897. PHA& S7 f/ a% ~- {! G. \
  2898. LDA <Data_H
    " p, S- T# ^+ }% l) ]
  2899. PHA
    - v  {4 L5 l- c( i# w. l9 o8 q% E
  2900. LDA <IRQ_Process_Index
    % H0 A4 z7 R+ Z" V; \  c
  2901. ASL A
    , `; s  J8 W' l  m
  2902. TAY. P* T3 |% f# f; n
  2903. LDA IrqProcessAddr,Y
    7 e5 V/ l6 x# D( }( [
  2904. STA <Data_L2 U4 f+ ~; y% F
  2905. INY
    $ t& R8 o* o0 x" f4 b3 B  l
  2906. LDA IrqProcessAddr,Y
    0 E* X1 ^/ s1 M
  2907. STA <Data_H
    0 u9 h, _, X5 p6 ]( }+ _$ }
  2908. JMP [Data_L]
    . a! t1 d* V1 ?

  2909. $ T* K! i3 M8 m3 c$ F  q
  2910. .ELSE
    : ~2 T, j- @- e8 t5 v- q

  2911. 8 q: m- W  Y1 e5 S
  2912. JSR IRQ_Process; r7 r/ o1 L; y; z0 [0 O( Y4 s
  2913. , i- X$ z1 Z" V/ D$ J
  2914. .ENDIF
    ! M" w1 X2 B3 l
  2915. * Q5 A; Q) g, E) p5 I  }
  2916. IrqProgramEnd
    ; a; u! G# I- o9 O4 H- f' t; a
  2917. .IF IRQ_SUBPROCESS_JMP
    , T4 w9 w9 c6 ?$ X3 C1 _* @
  2918. PLA! ]4 U# G* M2 m$ M  I  g/ U" m
  2919. STA <Data_H
    , M( F) P- q) J  B  \# o/ \0 t* r
  2920. PLA
    ! @4 o! d3 T6 N" [7 `) o7 I( n
  2921. STA <Data_L
    2 |" t6 Z4 z* c7 {
  2922. .ENDIF  P3 C! [* ~2 d2 l
  2923. PLA# Q. _+ Z; X5 r3 G9 J! Z6 C
  2924. TAY
    ! q% j) z2 F& F- m  e
  2925. PLA
    0 }4 g+ O, l  ~" l, P3 }' A. ?5 U
  2926. TAX
    & w1 A6 D, S6 y
  2927. PLA
    8 }& o  J; `0 k# Q% P
  2928. RTI- ^* F/ N- [1 R8 j. j$ J

  2929. ' \) R6 p# ~* J* M3 o% t
  2930. .ORG $FFFA/ u- C8 C" g" w  R: Q9 k/ o3 A
  2931. .WORD NmiProgram& r) \% [. i6 x7 l- h! @
  2932. .WORD ResetProgram
    3 m" F' y& B! ?
  2933. .WORD IrqProgram
    " M2 Q$ K' h3 z$ B1 b6 a3 Y% O

  2934. ( a' e+ |7 s% A' d% n/ s; V
  2935. .BANK RESET_BANK & BANK_DATA_MASK# M0 f2 T$ I4 |
  2936. .IF SOUND_BAR_SHOW_ENABLE$ o" l' G1 y; C$ f' Z. S; j
  2937. 1 R; h2 n0 @2 ^
  2938. .ORG $FE00/ `$ |& U# P1 A/ o+ m
  2939. PHA$ Q0 ^$ N8 H+ g7 ]8 G/ l! Z( D
  2940. STY $07BA
    # H2 R' P% h5 b7 d) W
  2941. LDA #$8D$ M) o, w& o1 `# O$ w( X
  2942. STA $07BC
    3 T6 q: A, \  g% D" L
  2943. TYA
    1 |6 i8 Q( o( _
  2944. CLC; J. Q5 ~- n0 b6 G' w: w6 g3 r. ]
  2945. ADC #LOW(Sound_Bar)$ C4 w" i  P& Q5 j7 E/ N8 y
  2946. STA $07BD
    / U, Q, P6 ^4 V! }& @
  2947. LDA #HIGH(Sound_Bar)
    * J' z* X; @! }( z! u1 U7 R
  2948. STA $07BE
    & u3 D1 F5 c3 L# l0 G4 F
  2949. LDA #$60
    9 W& Q, \7 Q: D. g) e  S8 ?9 p
  2950. STA $07BF
    & n5 o& j& }1 h+ ~" F* \/ c) |1 R
  2951. PLA
    3 Z: b5 q4 I, z  Y& @, C8 h  R
  2952. RTS: ]; [2 ?9 T. n6 C' R) z; V

  2953. . \4 _& u4 U& D' m" j! W: p+ `
  2954. .ORG $FE20
    . N( V  R$ O9 h. G; |: n6 I$ ]
  2955. STA $07BA: V) a6 b# U9 L* ~' z/ m( R
  2956. CLC3 G' D4 T+ b) Y1 R1 g
  2957. ADC #LOW(Sound_Bar)" [( D; Y% s4 M- K
  2958. STA $07BD
    , t& g; T# _$ w, ?" t* H( C5 [
  2959. LDA #$8D
    " B0 v* O: ~' K; f* o
  2960. STA $07BC
    6 Q1 U$ P1 R% W$ A, m
  2961. LDA #HIGH(Sound_Bar)
    9 Y; c- l. t; O) M
  2962. STA $07BE
    ! s- o$ V6 G' ?" M6 n
  2963. LDA #$604 P+ `. ]' T9 H# e' x9 i3 p6 [
  2964. STA $07BF
    0 {8 S2 X; v2 |4 Y/ }5 d/ w
  2965. RTS  L8 q: b% T- Q# e: U
  2966. ' h' h& U: X# i! ?+ R. l0 E
  2967. .ORG $FE40
    6 t: f) j$ i  o' [/ p
  2968. PHA! K3 c9 M! \( N
  2969. STY $07F1
    , A5 n1 X) ?) V# d0 d
  2970. LDA #$8D
    7 Z. N5 Z! I$ ]+ I
  2971. STA $07F3
    . p8 D) \9 A& ~5 b4 x0 @
  2972. TYA% `/ J! h! P$ j& ?
  2973. CLC
    + E+ {+ {5 G( L2 t( E
  2974. ADC #LOW(Sound_Bar)! ^' m# g/ X5 ^" M( |# s  R9 r8 I
  2975. STA $07F4
    5 z+ x0 l! t/ {3 z* w; `
  2976. LDA #HIGH(Sound_Bar)
    ; P# c/ \# f" u7 ~& v
  2977. STA $07F5
    8 O( `6 r7 _. f6 J6 S
  2978. LDA #$60
    / V8 f* t8 \# G
  2979. STA $07F6
      P8 `% P' k. M9 o
  2980. PLA: b* Y- e& v" U/ m/ t
  2981. RTS
    ; |& C7 i* H$ D! T/ V# A; \# l
  2982. 9 C% v' d. V7 }+ h) d# c! T
  2983. .ORG $FE60. _: ^2 g0 o" [4 s8 T, `. V
  2984. STA $07F1
    - y2 `& y0 I& t: }' M
  2985. CLC' G5 V9 `8 O) q  P
  2986. ADC #LOW(Sound_Bar)
    & b3 @8 L% {+ U
  2987. STA $07F4
    5 Y' a, P+ J2 S
  2988. LDA #$8D- I- d1 g9 t3 K" u
  2989. STA $07F3" B8 l' Z/ ]/ d& G' X, U
  2990. LDA #HIGH(Sound_Bar)
    & o' H5 p. e/ [$ ?) H$ _% c
  2991. STA $07F5
    5 k. M3 W# U0 x$ N( C  }0 E3 `; ^: T3 `
  2992. LDA #$60
    ( @. X+ q( Y0 Z# G" Y9 Y
  2993. STA $07F61 x. `& @6 [+ x
  2994. RTS* n5 |' C/ K. J3 ?+ }0 B

  2995. ! b( Q; H8 J7 h: k3 T
  2996. .ORG $FF40
    * R3 l; o2 q" S: d3 L; ?3 K
  2997. STA $4000/ M. E# d8 i. [; d, f
  2998. STA Sound_Bar + $00
    . U% h' c& f; N' x6 b' ?" _/ e2 \7 {; L
  2999. RTS9 K3 a8 U3 W+ ~! `; P

  3000. " R2 J2 I" U) }
  3001. .ORG $FF48( m, t8 A; f+ I" w( `
  3002. STA $4004
    ! m; J" s/ d  O! C* M( U9 S
  3003. STA Sound_Bar + $04* l9 k+ k( S, y: l
  3004. RTS$ Z2 ?3 z4 r6 x7 n3 ?$ y
  3005. + Z( i; v: g: |$ @7 m/ t
  3006. .ORG $FF50
      b' f2 O0 H7 h+ Q4 H& k
  3007. STA $4008
    ! ^. D' S% b8 ?, P( J: e$ J
  3008. STA Sound_Bar + $08" I9 e/ D# i: A, D
  3009. RTS# q& ~* u( P8 G+ }% p. u. t# M

  3010. ! r( m) o+ ^0 f+ p+ M9 w
  3011. .ORG $FF58
    # l( c5 p: P( I* T3 [1 O
  3012. STA $400C
    3 j1 [0 e* B. N, `8 r$ ?
  3013. STA Sound_Bar + $0C7 J5 A- v* l6 S; U
  3014. RTS4 U* w/ D# k; ], L

  3015. ) Y" k; w0 P* A6 l8 B. G' `+ v7 v, @
  3016. .ORG $FF60
    " f7 z: [8 Z" w4 c9 C
  3017. STX $40005 ]+ }) m7 u3 B. r
  3018. STX Sound_Bar + $00
    - \& ]5 u/ k" M! `
  3019. RTS* t9 s' L/ n9 P" Q' ]. _1 d# d

  3020. * r2 p) y. ^/ Z
  3021. .ORG $FF68' |0 s; K- @2 _& S6 |+ w4 p# h/ ]
  3022. STX $40044 _! j' {6 V; ?8 r" Y2 g4 B
  3023. STX Sound_Bar + $040 @2 X5 P! {) E+ {+ {
  3024. RTS
    ( ?" x( l% s3 d2 N8 {: |' y/ J
  3025. . l( R; g0 ~% r9 m3 T% N. c2 h6 ^
  3026. .ORG $FF701 {6 d) Z! W' ~" }
  3027. STX $4008
    . {/ S$ T) c. b$ f0 U
  3028. STX Sound_Bar + $08
    ! T9 D! n5 X, z$ b
  3029. RTS' B2 }2 u% ?0 p  `' z2 ]
  3030. " N! ~/ X5 N( Z6 s/ r# E* n
  3031. .ORG $FF78
    " ~+ Y6 k4 n" E- `  Q+ Y- {$ p
  3032. STX $400C: }$ H9 Z' s& M  x4 H  l
  3033. STX Sound_Bar + $0C" ~- J' ~: x& ]4 j
  3034. RTS  s- h4 t! ^2 o+ F" x1 I; ^, k5 M

  3035. ( t- r; W' v; h4 _3 ?+ l7 k; Z
  3036. .ORG $FF806 q' z$ a' t4 a+ H9 K+ k: H
  3037. STY $4000# `0 w& B' u0 ^+ L4 Q+ D
  3038. STY Sound_Bar + $003 g; h! |. a1 g0 P
  3039. RTS
    . r& R$ v& J0 o. N. E

  3040. & H- y" f2 l4 y# F  f
  3041. .ORG $FF88. P% T  p8 ~0 C1 e1 X* t" |/ `
  3042. STY $4004
    ) V" q3 X& M; w5 c) c
  3043. STY Sound_Bar + $04; v) X9 u; |2 A. z* F: n4 T5 J5 Z9 i
  3044. RTS
    1 V: }' w& i3 ^, w3 D. @$ d% |
  3045.   d5 y6 C6 B5 d* Z
  3046. .ORG $FF90
    " b' v$ d/ K* k" l
  3047. STY $4008
    # k; |9 T# m; ?; g  V
  3048. STY Sound_Bar + $08
    6 |* J8 Q# R, N/ {- T* c2 ^+ A8 n
  3049. RTS
    * n4 E! E5 R% p' N: {9 H1 x

  3050. 8 ]/ h( B4 Y1 W: c( w+ e9 h2 |
  3051. .ORG $FF98" r3 `. l* s: W: }( Z: W$ ]
  3052. STY $400C/ N! k  F* D8 A1 x& r
  3053. STY Sound_Bar + $0C
    $ W7 `+ X" W9 z% w5 _
  3054. RTS
    ; ]4 |+ A6 {; e
  3055. % q4 C$ k2 T$ x6 o* r+ _
  3056. .ORG $FFA0  g% N9 l4 `  H0 R0 C. T
  3057. STA $4000,X- ?* O( x- `- O( c2 P) t( n" L
  3058. STA Sound_Bar + $00,X
    " T2 D4 t2 I9 n0 l8 V* F
  3059. RTS; C" |' v' T! D/ ?* X  D2 O" n
  3060. 7 g5 s; C2 |& Z/ ^
  3061. .ORG $FFA8
    3 T' I. r2 H+ T+ u# F+ M
  3062. STA $4000,Y/ a/ m5 o- b# f$ A& |  V# R
  3063. STA Sound_Bar + $00,Y& J5 H2 H2 \! T: e' Q4 m
  3064. RTS7 e" u6 v: J" n/ g, y4 |) p6 \

  3065. $ U. V& T% P) n, G: T& z! s! H  w
  3066. .ORG $FFB0) A9 E7 ?+ v! L0 A% S
  3067. STA $4004,X, @% V) C2 I7 X, y8 g, z+ \
  3068. STA Sound_Bar + $04,X* `! r; R2 y' n  H
  3069. RTS
    & j* Q% I* X: k% u
  3070. 1 z$ O9 E2 Z5 B
  3071. .ORG $FFB8
    % G) h2 J/ v6 f3 d) L
  3072. STA $4004,Y
    6 Z* m+ F5 c. g0 V) g' M5 v
  3073. STA Sound_Bar + $04,Y
    ) g" @6 }: }8 V. \. @; Y
  3074. RTS. ?+ k* f: q0 l* Y! @  b8 b, j& [: K( d
  3075. . P7 a: B0 h* \
  3076. .ORG $FFC09 m0 x8 ~: @) e/ L: H4 s
  3077. STA $4008,X6 D+ p! ?, u' b  U' p
  3078. STA Sound_Bar + $08,X
    7 y; \) T& O; Y3 m+ ?! P3 D
  3079. RTS
    * a. }+ q  L1 ]

  3080. * @& G1 y9 Q5 i  p- a' j
  3081. .ORG $FFC88 D/ O+ E: P) @' V
  3082. STA $4008,Y3 G( V7 `) Y7 e
  3083. STA Sound_Bar + $08,Y
    & o8 z3 C; {- L! i* v
  3084. RTS& t+ U& Z$ F' [  }- Y3 e0 N

  3085. 8 ]2 v: W7 W5 F$ B2 \9 i) }
  3086. .ORG $FFD04 |5 h5 s4 j& ?* R. f8 L4 g0 J7 N, N; k
  3087. STA $400C,X
    ! T+ e; Q) W; T- k
  3088. STA Sound_Bar + $0C,X
    3 j. ]8 ]# A% z+ k& u
  3089. RTS) W; K2 r6 @# G; c: W* q% B4 W
  3090. 7 f% V) E1 E& c, L
  3091. .ORG $FFD8/ _: o9 F  f/ m5 o- Q" R  F
  3092. STA $400C,Y
    % i7 T, t9 n' k( n
  3093. STA Sound_Bar + $0C,Y
    * k1 K1 M. n+ ^+ e$ N
  3094. RTS
    + @7 _$ W; ?, j: e
  3095. 5 a# h# y0 k5 Z0 S% a4 d/ K9 R
  3096. .ENDIF
    6 }! g7 g. C0 i3 J: X
复制代码
% a+ j+ X; b" e
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3228 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-13 00:22 , Processed in 1.117187 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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