设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 " Q* k8 j5 Y7 f# l
4 W! Y( \5 \, O' O9 |( v
[FC][音乐12 IN 1]/ {8 g( y5 L- D7 h8 z
时间: 2023.07.23/ R+ O$ n% l3 _
作者: FlameCyclone( Z# q8 r2 U* R5 |+ Q( Y

7 Y; _7 r4 S' u/ z收录音乐内容:
9 i% ^  o5 t; `4 d7 G  Y" @1.Raf世界! g- Q) z2 ~2 s0 I% v/ V
2.最终任务6 X) e5 q" q! ?
3.赤影战士
" T# R' t8 t( U( a# i: G1 V, r8 b4.双截龙
# J% A1 b9 t$ i# F5 V" W5.双截龙27 y3 @2 F+ p( R' L, Q# n, C8 f
6.双截龙3
  b! z: h5 p) N. ^; G. Z7.洛克人- I& I; m/ {. H. y2 V
8.洛克人2
4 V! f4 U9 ~- R9.洛克人31 ~6 Y( q9 f' D: ?; C9 R
10.洛克人47 [' K0 d3 l7 y: r0 m1 `& q2 M: v
11.洛克人5- q3 `! t2 M. L2 X' P5 J& l7 B
12.洛克人6
: E* O4 T4 c& P! h, \' f% H- G5 J, K+ e% j- o6 W, F- D3 U
操作:
' W, E% t. M% M. k; l$ u/ D) ?7 `( R上键:         上一个专辑2 B9 ~9 V$ K/ E
下键:         下一个专辑. W# ]2 z% s$ W, N1 |' g
左键:         上一曲
( w3 @; S1 u) i( z, B. c右键:         下一曲
1 y  ~) x2 d7 H& p7 {- L5 }B/A键:        前10曲/后10曲
. D; F- X0 x* ~2 `选择键:       下一页) e  |/ l! Z4 N' `9 m- N0 v
开始键:       停止/播放
$ B; \2 H# g/ p4 m: b% b
) d/ a/ w1 S3 m: a% Q+ s' bhttp://flamecyclone.ysepan.com/
) W. w; B2 m3 Y6 B; B/ m
( V' k2 O% ~" x0 ~! F1 \" e0 N) G( N$ d+ p% f0 f. p

0 v7 g$ v; {8 m) X/ q; z! }
' o, P1 N! X/ M" D* r
  1. ;[FC音乐][播放器模板]: ~) a" e7 w4 e2 Z) {
  2. ;FlameCyclone 202307105 m5 z( X4 @8 [! E$ g

  3. ' X* a5 C. s  p% I5 Y
  4. ;文件头
    + Q+ z+ A6 H3 S, z) a
  5. ;======================================================================+ G2 C. E/ e. R: s8 _
  6. .INESPRG 16                                             ;16KB PRG 数量
    ; P+ q! o& v! a9 p! [! Y- t
  7. .INESCHR 1                                               ;8KB CHR 数量
    9 V( w# c# i8 K& Q: c1 s; s3 E( n
  8. .INESMAP 4                                                   ;mapper 4* l5 u0 A" N& D$ S6 G& C4 h# K& f( i
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    4 X; t/ I$ `7 w" }
  10. 5 o6 d) x% j0 R& V3 M
  11. ;==================================================
    8 o7 t* A9 F) @  U/ M
  12. SOUND_BAR_SHOW_ENABLE       = 10 J. p! |+ q- K
  13. ;==================================================
    + h2 e. J2 h$ d4 g! i3 T2 p* P
  14. BANK_DATA_MASK              = $1F8 N  c( W; B: H+ F# `4 n
  15. CHR_RAM_ENABLE              = 05 s% c1 ^& O0 r
  16. IRQ_SCANLINE                = 136
    + x, U& G- h; d  x
  17. ;==================================================
    & D  g* G5 Y! x# W- M3 ?
  18. SOUND_DATA_BANK_00          = $00
    9 l8 P/ F' `7 N4 {+ c$ O
  19. SOUND_DATA_BANK_01          = $01
    / E% [3 O% ^" H' J, U5 m
  20. SOUND_DATA_BANK_02          = $02/ W" U# f; S1 k6 ?0 y
  21. SOUND_DATA_BANK_03          = $03
    + Y& t: b. R/ a5 b% j3 X
  22. SOUND_DATA_BANK_04          = $04
    ' k; l# q3 _7 C: K- [- k$ z, M
  23. SOUND_DATA_BANK_05          = $05
    # d1 a* R0 t4 N: j
  24. SOUND_DATA_BANK_06          = $06! |. f& `+ ~7 B
  25. SOUND_DATA_BANK_07          = $07
    ( n' C( `! V  p* X: s8 _  d
  26. SOUND_DATA_BANK_08          = $08& r5 a9 Z, A0 {. u  M# Y
  27. SOUND_DATA_BANK_09          = $09! ?+ \) Q( G) W' T
  28. SOUND_DATA_BANK_0A          = $0A
    6 }3 _$ P4 e% `9 }7 ]8 g( M" t
  29. SOUND_DATA_BANK_0B          = $0B, F+ P) E4 B: v) B8 Q, ~
  30. SOUND_DATA_BANK_0C          = $0C' w1 C# `1 [) d" `8 r
  31. SOUND_DATA_BANK_0D          = $0D
    ) S( C4 X( G2 a9 r  x
  32. SOUND_DATA_BANK_0E          = $0E
    " r* h# T. \) B' K0 @
  33. SOUND_DATA_BANK_0F          = $0F
    6 R. k; e2 {# U- Y  E

  34. 5 M' l) @) e2 e! o
  35. SOUND_DATA_BANK_10          = $10
    1 \. `, L5 u+ Q; ^2 U2 j
  36. SOUND_DATA_BANK_11          = $11; ~2 V# I% L2 v* K
  37. SOUND_DATA_BANK_12          = $12( M' ?* b: ?% t) j
  38. SOUND_DATA_BANK_13          = $13. a+ L9 N: b( r# b: `  K
  39. SOUND_DATA_BANK_14          = $14. K7 v8 t7 B3 s! x& l. ~
  40. SOUND_DATA_BANK_15          = $15
    2 O4 a( P. ~- A4 i& }5 M5 u! Q
  41. SOUND_DATA_BANK_16          = $16$ p; x8 c' P3 ^* S. E
  42. SOUND_DATA_BANK_17          = $17
    9 Q" b# p% T3 q5 {/ B( A  ]
  43. SOUND_DATA_BANK_18          = $187 y: I+ k3 r# T! T8 U
  44. SOUND_DATA_BANK_19          = $19
    8 [0 w1 g6 t9 K* n' L' ?
  45. SOUND_DATA_BANK_1A          = $1A
    : \4 l" ~7 @; W$ s. K# A
  46. SOUND_DATA_BANK_1B          = $1B2 Y4 v3 o  Q3 ~# ?8 {! `2 h. U- D
  47. SOUND_DATA_BANK_1C          = $1C
    5 l- p7 h4 j' P! Y5 V# N# w8 g
  48. SOUND_DATA_BANK_1D          = $1D% m: f- p2 j! ]1 J8 D4 v
  49. % E8 ^7 a1 D: m+ b' E# k9 K/ r
  50. SOUND_DATA_BANK_C000        = $1E9 u9 Q+ w  n) M$ t4 k: e' o/ z
  51. SOUND_DATA_BANK_E000        = $1F1 x6 U  ]4 s* G, I' A
  52. ;-------------------------------------------------& A8 v" L; Y5 S8 b% F' x% ]& v$ K
  53. CHR_DATA_BANK               = $20% L! L/ m* u8 P: n' G; O9 i) N) ]
  54. CHR_DATA_ADDR               = $A000( w7 [" G' a. X0 X  q3 @8 u
  55. ;-------------------------------------------------, g& }" s7 W8 G$ q, I. X% c
  56. PROGRAM_BANK                = $00
    1 G7 \! g/ ~' `2 q
  57. PROGRAM_ADDR                = $8000
    3 Y* t# J% [+ o; r6 M/ y, ]8 |
  58. ;-------------------------------------------------: \, i$ {! g& x% |
  59. RESET_BANK                  = $1F) t( k$ n3 ~# A9 C: i
  60. RESET_ADDR                  = $FD00' s) [9 S2 v% k& h9 m4 f

  61. 4 Y- I) k# N' m
  62. ;==================================================! ?4 V! A3 M  n3 s8 F- a4 U2 ~4 `
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    ! A' a  G5 D3 [, S! J
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    3 H8 ?/ q# u- \5 Y# ]7 y+ R# e. \
  65. PAGE_SIZE           = 5                     ;每页节目数0 ]/ m3 Z& S( R" R3 f1 S

  66. 3 W  L* e  Z, D5 y% j; c2 ~
  67. ;==================================================0 ]( Z: z9 V  \# T
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    ( O2 X% u2 q9 y* v9 m
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    ' k- \; z8 K6 f7 k% Q0 U' N/ ~5 v
  70. .ELSE
    . O6 Q8 e4 E, z& O* j) S
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    ! F/ z* m5 u0 L+ T0 J
  72. .ENDIF
      F' z- p' h# E1 G2 h' b. j
  73. 0 V1 c) m7 U; G& _* w4 L
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    6 M3 d: ]+ @9 ~& l' d3 I& t5 N
  75. 9 c: x- `& n3 ]+ E7 g( B
  76. ;==================================================+ k& {( v* t' J7 t* C; p. ~
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    7 h! `8 r. d; P
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    1 H- ^  Z& u! f& `& H( _
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    8 w2 m  H$ N- I  Q* J0 f
  80. ;==================================================  l. x* d& t1 e& u
  81. Caption_Text_Pos    = $204D ;标题文本位置; m- T6 S7 ^4 p/ `2 f2 u
  82. Author_Text_Pos     = $2324 ;作者文本位置3 R, p& P( ~) C* p/ I) ^5 S1 e% B
  83. Date_Text_Pos       = $236B ;日期文本位置5 ~9 p' @7 m$ e( I4 [8 D
  84. ;------------------------------) b4 j8 h$ ~, p1 {
  85. ;------------------------------
    $ i9 l) Q* |; k( `( H" T: M
  86. .IF SOUND_BAR_SHOW_ENABLE
    1 t! y! O% r' W" q- V

  87. ( e6 k: R5 ]! U/ f/ M+ B
  88. Play_Index_Pos      = $2273 ;当前曲目位置0 \9 H0 p+ n7 u/ @' E1 V
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    0 K+ r# C5 `- N  U' g5 i
  90. Play_State_Pos      = $22F3 ;播放状态位置" Q* P9 o2 r* _' H! _2 c6 Q! W
  91. : U( ^9 W$ h2 \) U- D0 `8 I
  92. .ELSE
    $ Q9 j6 t* f2 O2 n) I6 z2 F3 P

  93. ; h' X" `5 `; ]3 p4 m' m2 w/ p
  94. Play_Index_Pos      = $226C ;当前曲目位置( h+ A9 _7 h; w. h3 C! Y$ B: x
  95. Play_Time_Pos       = $22AC ;播放时间位置
    ; ?  O1 p" [' X7 _# H; V) S
  96. Play_State_Pos      = $22EC ;播放状态位置
      j1 P0 U5 Z) b! j* O

  97. ; b+ l, V7 W2 S6 X4 |3 Q. B
  98. .ENDIF+ L, P2 _3 |1 C) R6 g- F6 z9 f
  99. ;------------------------------
      X9 l; |" T' @+ n
  100. Track_Name_Pos      = $222B ;曲目文本位置$ Q1 f( Z# }* R4 p  n; Q2 ^2 i# d
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    6 o& P3 }3 j7 U0 W3 `# @& h* @
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    # Y" f  X) R  p0 }: l
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    2 h: _0 I* k( j9 t
  104. ;==================================================
    3 l  y0 x7 E% C0 V1 S. D$ t" S' E
  105. Scroll_X = $00
    # v5 c8 G0 V' g* W
  106. Scroll_Y = $00$ v# G3 C0 _' M5 {9 N$ P
  107. ;==================================================
    7 C5 m1 \4 f7 l# r& p
  108. Sound_Ram_Addr_1       = $0100' j, d  e: ?# L" v  W2 ^
  109. Sound_Ram_Addr_1_Size  = $80: ]  V9 {% B4 @5 }
  110. Sound_Ram_Addr_2       = $00906 I3 y, P4 }3 M
  111. Sound_Ram_Addr_2_Size  = $70
    9 M0 y; h7 T% `% ]
  112. Sound_Ram_Addr_3       = $07005 M. j# t& Z- W1 N' F: M
  113. Sound_Ram_Addr_3_Size  = $00
    + l3 y5 ?3 z4 m' m; V
  114. Sound_Ram_Addr_4       = $0400
    / R. }8 X; p. U0 i5 z" B
  115. Sound_Ram_Addr_4_Size  = $00
    2 W' o3 j3 F2 v3 ~; L5 x
  116. Sound_Ram_Addr_5       = $0500& z& X6 l- P6 [0 l; H- g  e
  117. Sound_Ram_Addr_5_Size  = $404 s- ^5 g; A! z! Y+ Q* m

  118. 1 G) t. h! M. X
  119. OAM_TEMP_ADDR   = $0300  [$ y7 o" t$ P7 _6 @. [1 y, k5 [, I
  120. 3 r. q0 U5 X9 T" X2 C6 \% Q& I
  121. ;==================================================! I" w! H$ c5 `. l
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    2 r: A/ P$ x, g: l" X8 b
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器" |7 i0 C' ^1 _' |2 p
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
      f3 b3 u$ Z. [. K6 Z
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1) K0 Q" v1 d+ Q! U/ k
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加19 V; t) {* w& c; j; V
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 $ }: L- {1 q8 n/ V3 ]7 M
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加) J" z  j7 l! x: J" k1 i+ @: l4 Q4 ~
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 $ G8 ~' \. A2 v) V, [- z) n  b
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    , `; n' T. h8 ~
  131. APU_STATUS              =   $4015   ;声音通道切换8 S9 N) ?. Y$ r
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通7 b. t; o" O8 o0 d# K3 R, H3 e
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通2 \0 u+ P+ \, f7 y
  134. ;==================================================3 a6 U& Z( E4 o/ K- O2 C
  135. MMC3_BANK_CTRL          =   $8000
      T$ S0 ]( C, r) K9 o7 P
  136. MMC3_BANK_DATA          =   $8001! s3 P6 P9 j( l5 I2 D
  137. MMC3_MIRRORING          =   $A0003 r& U. V) i0 J9 k
  138. MMC3_PRG_RAM_PROTECT    =   $A001, h& `  s4 h% w* H0 L0 f/ l
  139. MMC3_IRQ_LATCH          =   $C000
    . Y) ~, t7 v" l, f. e5 Y
  140. MMC3_IRQ_RELOAD         =   $C001
    , A' `$ _) [: X9 m& \5 r
  141. MMC3_IRQ_DISABLE        =   $E000* p* D/ W# m( c, [5 g+ K5 ~
  142. MMC3_IRQ_ENABLE         =   $E001
    5 a! l# ^' O' ~; T* D* Q

  143. # h4 n7 u  @8 m% Y) r7 r# Y6 r1 x
  144. ;==================================================+ f9 |/ G7 m/ n- R8 t4 D
  145. PPU_Addr        = $0200
    7 D8 W% ]: }& R  r9 x  Z
  146. Palette_Addr    = $02C0) ~! V# |) {. H+ i9 u5 q0 m" e
  147. Sound_Bar       = PPU_Addr+$E07 E$ y& B) O& ?9 X" ~0 w
  148. ;==================================================. K2 I7 e9 T4 ~
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    6 M1 N: G& J! |9 C1 a( `7 B$ f" L
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    - g# F7 ]! `$ b: K) n2 Z+ U7 E
  151. PALETTE_UPDATE_MAX      = $2C
    1 ?% T2 F* R! r$ D! ^
  152. PALETTE_UPDATE_MIN      = $21
    ) a+ p7 M- G. [- t
  153. PALETTE_UPDATE_INTERVAL = 60
    9 r4 o/ j* e; R" W
  154. ;==================================================$ C) w& b5 O/ b* d9 q( |
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    7 h% ?* E/ e3 H2 |: ?; H6 b) A4 ^
  156. PPU_Cur             = Sound_Bar_Cnt+$020 H; Q6 D! M, Z! g% f) \
  157. PPU_Addr_H          = PPU_Cur+$03' e9 J" i' V; M4 f3 s) a1 x
  158. PPU_Addr_L          = PPU_Addr_H+$04
    8 I1 c5 N# T4 c- n
  159. Screen_Ctrl         = PPU_Addr_L+$013 L5 U. `& G+ i
  160. Screen_State        = Screen_Ctrl+$01
    ; y. j. d4 d4 @0 ]
  161. ;==================================================
    $ I9 L/ X7 h) W3 u6 m
  162. Use_Ram_Begin       = $50/ U8 J7 l$ I! @' ~. s% @6 {! D5 R' m
  163. ;==================================================
    " f- J  I( s, q/ M: l
  164. JSR_Addr_Op         = Use_Ram_Begin1 h2 [$ H' p+ n9 k2 m6 K8 ^2 U) }( q4 O
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    % j$ E; X. h/ G) }- o
  166. JSR_Addr_H          = JSR_Addr_L + $01
    4 i& O5 f& B* M2 ~6 [
  167. JSR_Addr_Rts        = JSR_Addr_H + $012 A7 D# J! b7 G& ^7 `5 }. {
  168. Data_L              = JSR_Addr_Rts + $01
    1 c5 C2 f0 }+ ]$ T* C' o9 ?
  169. Data_H              = Data_L + $01" p2 S0 D! m9 C8 l6 X0 J
  170. Data_Cnt            = Data_H + $014 O& C" q1 L% s
  171. Data_Buf            = Data_Cnt + $01
    ' I$ G; P$ _, V- n+ a6 E) P
  172. Nmi_Time_Count      = Data_Buf + $01
    ( e3 c9 D+ b+ M, n& m  X
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01* _$ W% v+ \* c+ A, G
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    4 |* r1 V$ y0 p" Q, x' C$ O. }" H, ~* V

  175. ) C' ?' b( P4 F2 y
  176. ;调色板刷新标志
    2 d, R# o( Q3 M8 h
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    3 b2 g! J! y' y: z0 n) B1 M/ l. a
  178. . I: X" p) l, u; U! u: g, S
  179. ;当前帧文本写入禁用标志8 M* Q/ \  c9 C' s7 C) W
  180. Text_Disable_Flag   = Palette_Update_Flag + $01( D  i: `$ H' p, [) C3 I# p- o( g. J

  181. 3 [& X+ G# g, O3 R+ i
  182. ;==================================================
    , K1 {) C7 k  K& u9 I
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    & f. S9 W$ `4 J5 u# }
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    - L- r' \# b/ E9 I
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间9 L0 M( [8 x1 z) ?+ W0 O
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间" W, N1 d& ^1 q/ T5 o
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    . x/ ]0 |7 u% r1 Z
  188. ;==================================================
    9 m3 I% s) `) z  X# r
  189. Key_Keep            = Text_Disable_Flag + 10 _% S' \8 t( C+ T+ p7 S
  190. Key_Once            = Key_Keep + $019 |" @# x" x* F: B: r
  191. Key_Kemp            = Key_Once + $016 M; P; q% j) \  y# F" B
  192. Key_Temp            = Key_Kemp + $01
    # t3 _; a  k/ e
  193. Key_Getv            = Key_Temp + $01& d% b; D6 @3 J% n8 m1 j" x9 d9 o# m
  194. ;==================================================8 g  k8 h, d; _
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    7 f+ D$ g# c& M5 x) @
  196. Music_Item_Last     = Music_Item_Cur + $01
    : ~- r; r* h; x% L$ d. s3 s
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集1 c5 [* w9 t7 T  t
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    2 P7 p% u4 E( [! M: N
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    " p, A* d5 ^5 q" D' ^" m
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态) s& b' V, h- r& j5 V- N; {5 ~
  201. ;==================================================- G* d1 d) Y1 b7 G* n
  202. HEX_Data            = Music_Stop_State + $01
    : I* M; X, C( q9 M' f9 Z! N
  203. DEC_H               = HEX_Data + $01
      _% `5 Z& o$ z' E6 P/ O
  204. DEC_T               = DEC_H + $01
    + O0 P& `! e) T4 X4 T8 R# |6 r5 N
  205. DEC_L               = DEC_T + $01
    $ X( Z  O# J2 @$ }8 V1 P! ^$ X; l
  206. ;==================================================  v7 \, p) }) s& E* h
  207. Time_S              = DEC_L + $01& L, n+ W0 T4 J7 X5 S% n
  208. Time_M              = Time_S + $014 ]# D' L% X5 a+ O( r1 m$ N
  209. Time_H              = Time_M + $02
    ) K! I9 `8 T6 F) P1 [/ Z! R1 O  C& [1 x
  210. Time_Cnt            = Time_H + $03, @! g% P5 V' D8 j6 \- V

  211. ' O5 j& ?% [' {; f0 E- _
  212. ;==================================================  \" U! e) X! d$ W0 q
  213. Music_Bank_8000     = Time_Cnt + 1
    . C# V8 o$ T* `% W1 |+ o
  214. Music_Bank_A000     = Music_Bank_8000 + 1$ w! H9 c; ~4 r% ^
  215. ;==================================================: m2 l3 j, }( ]6 ^4 e2 _' G
  216. Scroll_H            = Music_Bank_A000 + 1
    1 R; {0 L% \5 O# d) m  E
  217. Scroll_V            = Scroll_H + 1
    3 O- U, T* N; F
  218. IRQ_Process_Index   = Scroll_V + 1, T8 I& d9 Y. z- S7 A+ S! h
  219. ;--------------------------------------------------
    " u+ I3 {, `, |7 ]. Z# P  h
  220. Page_Cur            = IRQ_Process_Index + $01  k7 b7 O/ ^2 C" i
  221. Page_Cur_Index      = Page_Cur + $01  S1 }- ~; v7 p1 m! u1 X
  222. Page_Cur_Cnt        = Page_Cur_Index + $01, M) ^. L3 g4 `
  223. Page_Last           = Page_Cur_Cnt + $01
    8 Y& z  g' @( P6 a5 [8 a
  224. Page_Last_Index     = Page_Last + $01
    " Q5 }, x% N! E& j) j4 _* y9 J# m; \
  225. Page_Last_Cnt       = Page_Last_Index + $01
    & |; i8 ?1 Q4 u' N1 q4 B6 k- b6 F
  226. Use_Ram_End         = Page_Last_Cnt + $01( W7 G$ y- x8 Q* n. F" ~
  227. ;======================================================================6 ?, ?8 W! u9 F4 Y( [6 u
  228. ;音乐数据块1 @' X4 l9 J6 u8 K+ I1 d( M

  229. ! t/ M6 ~% j1 g0 ]& K
  230. .IF SOUND_BAR_SHOW_ENABLE- E8 k7 F% f4 X9 s" T$ f
  231. % z# h6 v. L& p8 T3 D6 s' D' Q
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    , J. h. T( j: J- g5 D
  233. .ORG $9000
    ) a. ?8 Y& c& `" u" @; A
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"; r9 Z; Q' k. s# y
  235. 0 a( j+ `* J) V6 d
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK9 e6 C. R6 Y2 }: \- E9 P( ?
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"$ a& x) P& A+ n; b5 d5 O. o; S- o7 S+ F

  238. ) l0 E. [0 \2 C6 q+ e0 U5 u9 M
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    & c# N$ f& j' e( P; i; |- A, y; n
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"+ j* P3 I, G. L2 w( j+ K$ O( E

  241. 5 O" w) X3 n3 H" E
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK# n- n% c: [5 G8 k0 Y3 r
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    ( a+ p( M. T5 e: g

  244. 3 R- I7 f& d9 w: Q. h) K$ G* f
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    , c! k% d$ V# P  j: t, ~
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"4 e$ D' |! {- p' N9 a! \4 i
  247. + t1 L3 ]: ^  U, |: |( H
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    0 E1 f# N: T/ n  _. B
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    7 p) w+ _* q  X" N

  250. * S4 U& `- s$ S. B# q% r( \
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    6 p! x6 X* G6 m; d5 L" H9 C) M
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"$ n! A6 G* T  g' M. z

  253. : p# Y" G) z7 o6 n' W. d
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK3 u& B; I' h# t9 v1 D9 N& i. E% D
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"5 j3 a! }" [2 }! J

  256. 7 X- K. h5 e' C# L, M) R) d! x
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK" Z4 C; T  p, i
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"& Y: c- d8 g$ y$ H
  259. % w& i. X: _4 |/ H, {9 e, D
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK$ o3 j, N  ]( j- B. x1 J' @/ N
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"9 `/ z* F, ]! c6 N$ H

  262. % n8 V0 @- j8 u; c6 g* H& @+ ~
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    ! S: B2 s- ^; q; p( y% w' x
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    8 G2 b0 w, s7 E2 b! E

  265. # Q6 }8 @" b1 _6 K* }' k
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK' J9 @" S5 c2 X2 D! ?2 a: L1 P
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    & z* g. c. c+ m' @1 f9 h7 L
  268. 7 _+ O& ^1 J' R+ p
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK; p  `5 E4 ~$ F5 @! f9 @& D
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"  S+ y$ r. d3 e

  271. 5 S% @, a% E1 {6 v3 d8 t
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    9 x" C. \8 L/ v
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"0 P; w; r; k& p2 t9 m+ l
  274. ! ]4 b6 w' W3 [% z$ e- c) j
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK- b. K1 ?* Q4 {. A% c* u
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank") R8 c, y( y( @* s7 ?& \( t) r

  277. # d; M# x% `" l# G; L- b% ^
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    5 e0 `* n. o, y
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    % w1 m1 [; R) O. z+ M2 _1 v

  280. 0 D& ?$ a/ E6 x8 K$ a# g* w) t5 K
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    " U5 T3 o6 ?6 T0 m& ?
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    4 A8 y. Q7 A  u3 u5 U
  283.   P* ], f$ Z/ Z( R# k/ r2 B0 f
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK$ p, y8 \  Y; g6 F/ b% X
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    2 _5 c- D+ b, o# T( {
  286. # O: c4 m* V5 S0 \7 k
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    9 V$ }6 s5 j( S9 V1 @" F/ g) f
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    & r* F* J6 I0 b+ |; u+ I) U

  289. # i9 y% Q' |% D( A, m) ~7 x
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    3 k4 P, J% ]9 a$ H
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    7 J4 A" D6 T+ g6 M5 i' h6 v9 m- p
  292. & q6 H* _5 {1 o, V" ~; A
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    , g% O1 W5 G: `) [- a9 U& t
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"8 q* {+ ], j* R0 p1 k: i1 R
  295. 2 w" U8 s5 C. l7 o7 \' o
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    & Y" R8 N# k+ M5 c1 H% T
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    ) U% i& r$ ~' T9 l( ~( y0 t1 {

  298. 9 v0 U  `) Y" {" L) h# N8 ?2 m
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK- y, o7 p- W3 h7 \
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    ; }) ~+ s6 j& x  C' |7 a8 H" T( ^
  301. 9 I( y8 x% a9 H) F" O; m. t0 \
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    4 \' u/ x+ c6 B  ?
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    $ t& s/ u% w8 Y, I0 Z
  304. 2 o, @, T4 A0 T0 {
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    . M8 N9 Z( Y4 [+ F0 e
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"* c9 v9 n+ c- |

  307. # L0 r) G& }$ K6 F# n
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK3 ?& V% q& _# g. c
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    2 A; P, G- X" o# `: {0 r$ o) ~

  310. 1 o' n* r. z' t
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK+ Q) ^" _) y* b, {9 s" O) p
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"6 d3 @: Z3 ~$ `/ ~

  313. # d% b5 ~, k2 A/ h
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
      }  z8 T* t8 F$ y
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"8 n- z9 @- {. [; k4 Z4 Y
  316. . D; ~2 Y. `  c) A1 S6 X- m1 `6 L
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    . S/ X6 p1 |6 L- e# o/ j
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"+ p  T4 M/ L' `5 C4 z

  319. . q2 K5 N5 A( x$ B! a* M* q
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK& L4 [9 t. I* I- U) K$ k+ H
  321. .ORG $D400
    0 A, `$ }1 V" a
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"( ~. I- i5 o& `" g. q: j8 B/ G

  323. ; \0 W7 u0 O1 @( D# L
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK  T0 W' Q- |# u. K: R
  325. .ORG $D800
    - Q2 U# Y0 d. g& C  J$ c3 j" H
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    $ x# l# ?, k3 T7 i) b9 A( F

  327. : i0 l! P" N, |: A3 A; k
  328. 4 D8 r( H7 V) A
  329. .ELSE1 F: c' B! z/ m
  330. 4 |; _+ O4 B; l+ x) a, g6 u7 [
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    0 W0 K  d2 a; T  S
  332. .ORG $9000" v6 T& a" i* F4 Q$ I- h' h( E
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    3 t% X. f; q/ l, S! f8 J. J
  334. 7 o. A$ A5 \) G8 F% X4 ^$ [
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    $ z' j8 U4 [4 y2 P
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"" \! X' d2 }4 Q7 C

  337. 4 v6 ~. R3 X7 a2 D$ y& `8 }' u  U
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK) B+ B) T: d, u5 }6 ^4 X
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"" P* |, _+ S; w) q

  340. 7 ?7 h1 K: n( r) ^/ Q. X/ a
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK) Z% k, e/ p4 S) H. L
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank", Z# x4 p( C+ C6 E# Y

  343. / }: @  L, ~  E; g2 h
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK* Y8 u1 U; R5 t
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"! I7 |) k, F: b

  346. / }5 B! G* r" Z# ~6 }
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK+ k5 L, F2 D, x7 }; ]
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    4 r7 N5 z: t+ c& Z
  349. . w8 x8 K; s* H
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    8 P1 Q* i; {( z: Q- D. {
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"  [' r2 x# y% I( a/ r) I

  352. . |) d# ^: ?! [" v
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK9 C! r3 T0 H& D
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"  V" w; w5 T- ?* ^

  355. 8 K. z9 t- E2 j+ R4 H: A% N2 Q
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK. B, F: o. j! |; ?+ B
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    # U2 @; L- p& q& i6 b

  358. 5 r6 v( g5 m9 R4 x: q8 p2 Y
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK, b3 J: M) b8 U0 F' j1 E+ |! F
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    - A5 s' v5 C. ?1 F# ?, L; |

  361. % U( F6 h: {# f
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK, V' {# u8 T4 T# ~0 P
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"$ I+ D, p# ]& ~! C
  364. ! ]6 d7 i4 B: V: l1 W; X& R, L
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK' m* {/ Q% ]! R/ i% u% i! l
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"# }, o) ]$ `6 t7 x4 Z7 D
  367. : L) d# e4 z" t5 B$ f
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK5 I! x$ ]+ M8 Q: e+ @
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    / u# g" \, V" K. X

  370. 5 g0 A+ s$ E1 m* A
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    ( ]8 M. E' |" L6 c( i- l' `$ q
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"4 D7 k+ H  p9 W1 t
  373. 5 g. e8 G; D9 u/ }
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    % @& l* A$ r, a+ Q$ Q/ d
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"# d8 k1 ]. i: a. F$ v  a+ H

  376. 9 p/ h- n) R# `7 `
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK2 ~0 B- e/ y8 ~1 a$ Q6 [
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    * W+ ?: k' B$ m# G. D- t. H) v
  379. ; t8 [! u; v0 k: |* t% }
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK7 C. {% z& p+ j4 O
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
      s0 \# _: @& |) b. Y
  382. - [7 A# p4 Y7 e+ B1 G" R0 t
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ; z+ ~8 {& X; Y) [+ r! J6 P6 O
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    . |2 w1 L/ g8 v! A

  385. 1 I4 j) R  n8 _0 d4 h. n+ r. W! L
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    . Y; f% q5 P+ A. m+ ?( i
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"2 q4 C% d, Y) j( U3 r5 D. {5 i) Q

  388. % a$ F% ~: }; g: y: J8 n/ N, N* h
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK* _" G5 u6 v. L; {
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    4 `7 I/ S2 Q, T7 b+ d
  391. ! w, D; {' e- S* T6 x3 Z# a4 S3 m: w
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK4 ~! l6 o4 C# f( W
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"7 e( l- X; h% |5 D
  394. # S8 x3 `  e1 a/ ?, L
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK1 K5 W. ^3 M4 C$ e* a1 _: s
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
      o+ G( z" j- y) s

  397.   ^" ?- W9 q0 m) U9 [9 l2 K
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ) y- I. F) U3 K) `7 w: L& G
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank", ^1 U& \6 f5 W: e9 G7 t

  400. + s# D7 `$ ^* Z8 R0 y+ P, U/ ]
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK+ V/ X& H/ U7 n9 ~  k
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    + ]- p# j4 v7 B0 B8 ^; c

  403. . J* q0 L8 e/ k' \0 W4 {6 f
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    0 t, l5 F  |5 c  D: O$ b
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"$ b) {/ T1 Q6 V; y6 e' x7 _
  406. : P; z% R2 ~% `, g6 U; [2 c+ E
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    $ }& P. F( j/ w) Q
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    7 V+ }* r5 \; }7 C2 p' g& j

  409.   I: Z3 u. [% a# e9 D, k
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK5 w$ }* ~, {) ^/ T, g1 }' k
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    , L6 v! C4 [8 d* [9 T! f: g, f
  412. + @- p( s4 T% O3 y
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    1 ]2 W+ N0 m4 f& @; ^6 t
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"  ]6 s6 n" W3 j9 L6 @6 i7 }1 p

  415. # L; z, [- Q+ [+ K% h4 t2 W1 v
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK0 \% e/ X% f8 d3 [; o
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"& ]; _8 V7 I* D* _4 M! Y

  418. & G1 q- k% `# v
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    * m0 H# Y/ Q) H1 ?7 \# L
  420. .ORG $D4002 C5 [+ L- w% Z$ M! J0 L
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    5 y0 }( O7 [, i5 L6 I, G

  422. 1 _9 E2 X* V" {' j( w5 \
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK- R7 G, g% ]3 i$ p" W
  424. .ORG $D800
    + i- Y, M9 s& L
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    7 W$ |! J4 u# \$ h

  426. ' s7 C/ g0 o- j, r# |; c
  427. .ENDIF1 [1 D- V% N, c" z4 j
  428. 5 n$ r8 |' G( e/ ]8 C0 `) M# T
  429. ;CHR图形数据& v7 U$ g! }: U. |8 K4 T
  430. ;======================================================================+ E! a2 A' f1 |
  431. .BANK CHR_DATA_BANK- H+ `+ R6 c% J: J# X0 k
  432. .INCBIN "chr_bank/chr_data.chr"
    ! |( q; Y! p3 J% |
  433. : [4 [" z7 L+ B* G9 I3 [* A
  434. ;======================================================================
    1 [$ ~, {5 \# {
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK' i9 i9 n4 K" L) f) g) _0 A
  436. .ORG PROGRAM_ADDR! J. R: j2 F/ x* S

  437. 2 Q+ F% k/ ^" A* X
  438. ;==================================================
    ! e# @/ n0 P$ @0 T$ s' j
  439. NmiProcess0 f: Q; C+ `6 C. Q( J! M7 p5 v
  440. 1 _' E- P! T+ @. j
  441. ;关闭屏幕控制
    ( R  y1 }6 S" l9 R
  442. LDA #$00
    ( T$ \3 Y0 }& P4 J% x
  443. STA PPU_CTRL8 T+ N. O) `2 ]9 k, R
  444. 8 m" T  F2 Y! x! y  l: {: l
  445. ;没播放音乐就不需要触发IRQ# \- I( `' o6 ~  Z: H/ B+ y
  446. LDA <Music_Stop_State+ j1 r- ?" `- b7 h
  447. BNE NmiNormal. V+ X% f4 G/ Z1 |
  448. ( }6 Y$ f" c) P, r) i9 z; k
  449. ;重置IRQ索引; t5 e* @/ X; D2 I
  450. LDA #$00
    + I8 H  i( g* E6 f. k
  451. STA <IRQ_Process_Index; G  {. H: c' _' ?" T) f
  452. ; L  K  p) [) o! G. h
  453. ;时间秒数为空则跳过4 U  |. o8 n% k  i7 O; }6 @8 z: ?- n
  454. LDA <Time_H
    / s1 ?& s3 u! ?' e; H
  455. ORA <Time_M' }$ a: ?% H- H1 G- w' L
  456. ORA <Time_S
    % c1 W# [4 g& a$ F8 X# U7 N
  457. BEQ EnableFirstIrq9 G8 w5 e: ?( u1 L% i1 B, G! V
  458. * ?' b. l) `+ P% v. D& O
  459. INC <Scroll_H
    ( D- W3 S8 Z5 E# n' b% ?7 ~/ z2 S
  460. ! }+ g' A" G2 ~/ w
  461. EnableFirstIrq ) c9 I$ U2 k* b
  462. ;80条扫描线后触发IRQ+ B; b( v* N9 T9 ], d
  463. LDA #IRQ_SCANLINE
    * K0 X2 n, J5 ]- O% n; o+ B& k, g8 |
  464. STA MMC3_IRQ_LATCH
    6 y1 K) [: j7 l; k" w2 }
  465. STA MMC3_IRQ_RELOAD- g0 ?0 _' t, V7 F9 b
  466. STA MMC3_IRQ_ENABLE
    + D, w3 n. U5 K0 B
  467. CLI
    6 n( W' Y8 d" D# a  Y5 z& |
  468. / L% D2 n& N; ^0 l
  469. NmiNormal
    ' n& c4 E" c) }( {$ e6 w  Z- I& o

  470. 5 p" W, ]8 O/ W" s
  471. ;处理PPU图像
    % _/ n4 `7 E. R6 \' p# }6 h
  472. JSR PPU_Proc
    ; Z: ~! V* X) k- u+ ~
  473. - k! \9 y# l" H6 q( y, c
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)1 w" c: `4 x. T* v. E, J, f) B8 @1 @
  475. LDA PPU_STATUS
      e: ~! R) D* ?$ j1 u
  476. ;LDA #$009 Z) n; r, O( }  F
  477. ;STA PPU_OAM_ADDR
      p$ h7 z1 D) G+ w6 T$ |1 Q$ @: a
  478. LDA #OAM_TEMP_ADDR / $0100
    6 R4 ^3 g$ B5 i3 V5 S" G! B) f5 z
  479. STA OAM_DMA
    . C1 Y4 Q" S/ O
  480. ' q# ^' h6 ]$ J8 {# O. H# O5 ~
  481. ;启用NMI中断
    + m" b7 m! `" Y* K  t% h, A, G
  482. LDA Screen_Ctrl1 H, V) A4 Q" {$ ~  q
  483. STA PPU_CTRL8 L7 }! b3 [6 l" _8 O
  484. 4 g+ }7 N( {3 `0 V7 l4 V
  485. LDA <Text_Disable_Flag
      G; x* P7 u+ ?; R+ `
  486. AND #TEXT_DISABLE_RAM. E8 M9 f3 ~9 ?- n/ _8 p& t; X  K
  487. BNE Nmi_Sound_Play% ?1 [5 p( p3 t1 i* p

  488. - \; v% x# _) K
  489. ;处理手柄输入$ b1 E6 m* z, ^8 k% E
  490. JSR Key_Proc5 `6 E. f( K# M. P! \- y# @

  491. 0 O7 }" Z5 O2 e# F6 G
  492. ;切换音乐(手柄触发)
    + R: a! d+ q: K8 @: _
  493. LDA <Time_Wait_Cnt  X2 P3 ~$ P. Y/ o5 f
  494. BNE Nmi_Cursor_Arrow. G% e- R: e9 `+ s- k# h- S
  495. JSR Change_Select_Item' o  N8 Z% t  K8 R
  496. $ E8 h9 b- B  A4 r+ L
  497. Nmi_Cursor_Arrow/ k. ?. x9 ]1 l/ Z6 j$ t

  498. 8 b- H& j# X4 h( X) D% ^& v
  499. ;处理光标箭头
    ' t' W+ B. i2 x- A4 i
  500. JSR Show_Arrow$ f. m9 \0 z& f4 P1 X$ P) A* o; j+ G
  501. " q' T( X5 p8 K8 h9 q+ C, V' F
  502. ;更新调色板
    # g# B4 v- ?: H# b( j2 N
  503. JSR Update_Palette_Data# D' O* Z* Z/ `& \1 F6 Q
  504. 0 G6 t' V6 p; t0 ~) h9 i* R
  505. ;显示时间(缓冲): y- g2 [9 C+ c* F4 f& S! y
  506. JSR Time_Show
    # s+ ~$ @1 `# J6 C. O
  507. " j9 Y1 ~3 t2 ~
  508. ;音乐显示(缓冲)
    $ D$ O4 o7 u# W% p& f8 F: _
  509. .IF SOUND_BAR_SHOW_ENABLE/ O3 L" f  \' M1 [. q0 q
  510. JSR Music_Vision
    ! [' Q2 a6 Q; w" m# ~2 _
  511. .ENDIF
    8 N. X( S. W. C& X7 z
  512. 6 \  i" w3 g/ k4 v+ Z
  513. Nmi_Sound_Play
    ! H# A" s6 Z( }7 e- ]
  514. ;播放声音4 u; ]6 o! v: m" ^  k" L  f
  515. LDA <Music_Stop_State
    . J9 ?8 m5 O5 M5 {, z
  516. BNE Nmi_Time_Wait_Set5 o& X! W& \8 E( D' ?
  517. JSR Sound_Play_Proc7 e( t; K% ]4 Z3 [, I8 I3 v

  518. # C6 ]2 c0 E; l7 T! \
  519. ;播放计时
    9 r# d# ]7 f" y) [" Q- Z, X$ I
  520. JSR Time_Count1 O/ ~: \8 w+ l) C! P
  521. ! _; Z! |8 R+ W& m6 [
  522. Nmi_Time_Wait_Set
    * J+ B! L5 C/ M' U* N7 ^) B
  523. LDA <Time_Wait_Cnt
    + H: d6 Y% K2 _! V
  524. BEQ NmiNormalProcessEnd
    / @, |& ?. d7 k3 h, T" U
  525. DEC <Time_Wait_Cnt
    4 I3 p/ N; ?5 q  z$ _
  526. NmiNormalProcessEnd" h4 U) M. J5 z8 q5 P, u

  527. 9 }  T, T/ f* L' \2 u
  528. INC <Nmi_Time_Count
    ( H1 b5 k3 K: f+ X( y- D% E) |

  529. 0 w( u/ S4 A3 J1 E% q
  530. RTS8 |6 z0 H" l9 c2 v( Z0 K% d

  531. 2 n4 ?. L) V6 A. K& Q
  532. ;==================================================$ g$ [# b& c" K+ P% {& E
  533. Init_MMC3
      n; Y3 X, _! u7 U
  534. ;==============================
    8 Z9 D* z4 P9 A" x" g0 b6 H( X
  535. ;禁用IRQ
    / i+ J( a$ ?; b" g  l% F% _; }4 x
  536. STA MMC3_IRQ_DISABLE
    7 A" j! k5 A9 e

  537. 2 q1 J, c; C: g6 G6 w' }
  538. ;水平镜像
    0 F4 }. J5 Y" s1 F# b
  539. LDA #$01
    8 _0 j: J8 c$ X; f
  540. STA MMC3_MIRRORING
    7 u) _) w' `5 X* P. s
  541. 5 u/ ^  V; N. Z: t) R3 T/ V' |* V
  542. ;初始化图形bank& C$ @5 I/ H1 A2 A- g; j
  543. JSR Init_MMC3_Chr_Bank
    & ]  J) I9 Q0 }7 X) |) f6 D4 m1 m

  544. , S; |7 D5 A* l
  545. RTS3 J& G: J8 F$ E
  546. ;==================================================
    2 q- B. {4 c% f# Y* Z* w
  547. ProgramBegin;主程序
    2 F+ s8 K6 f) l5 t' [  {0 l
  548. LDA #$00( z8 j5 u  M, O  `" }& ?; e, Y
  549. STA PPU_CTRL5 _# J# w- n( o0 K
  550. LDA #$007 B1 h% e3 h1 {8 i$ l3 C
  551. STA PPU_STATUS9 a2 \+ v9 T# H5 q6 |7 r7 U
  552. STA PPU_MASK7 R$ l! e- `8 M5 R  J  j4 ~8 }
  553. STA JOY2_FRAME$ A' y- ?) o6 t
  554. - R5 U3 \8 N& s
  555. STA PPU_SCROLL
    3 }" t5 M7 |6 g$ S( c8 [' E+ I0 V
  556. STA PPU_SCROLL8 T# c$ s0 H$ I( U/ Y& G
  557. 0 q* [! L/ N4 L; }
  558. ;==================================================: ~5 y8 \9 R2 |  O
  559. LDX #$FF
    4 c  ?3 M, r  Q% T) Y
  560. TXS
    ) T/ y9 n' u$ Y
  561. % U; L1 I. h. [7 [: h: l  y, @
  562. JSR Init_MMC30 G# U3 E3 u- m8 j

  563. ' c7 k* p* K0 J; {
  564. LDX #$02
    ; f5 b8 d6 b2 y9 S
  565. Check1
    5 Y0 E1 a& p0 D
  566. BIT PPU_STATUS( |! R1 }0 }3 [3 ]
  567. BPL Check19 _9 y9 Y; H9 @# k1 b; o/ a' L1 H/ [
  568. Check2. i3 d( X3 \" Y/ Q' x# n2 I7 y$ \
  569. BIT PPU_STATUS; q% g7 D8 o5 x5 _
  570. BMI Check23 F1 G' x' o/ H; B
  571. . i% Y8 x5 ^7 i8 y
  572. LDA #$0F
    / n. m/ ^( N8 I) V" \2 L
  573. STA APU_STATUS
    6 Y" U! L, j, L8 G' n. o
  574. LDA #$C0
      r: x3 J3 x' T
  575. STA JOY2_FRAME
    4 ~1 q7 @) [& F/ h' ^4 s) ^6 U8 E7 N
  576. ; k9 E9 w4 [+ w( d, K- v
  577. LDA PPU_STATUS
    : C/ N- z1 z4 ]8 ]' m9 d5 `
  578. LDA #$10
    1 T# d) f: N( d8 j& y/ K2 N
  579. TAX* D. i& m2 Q* @6 w
  580. Check3
    ( B% ?, D5 x5 Q( J2 P
  581. STA PPU_ADDRESS
    8 I- s/ V7 Y3 K( ^, I
  582. STA PPU_ADDRESS9 M- B( g4 Y% }) O8 |
  583. EOR #$00
    4 t5 {* P: J; l7 n$ r. X" Y
  584. DEX% o0 N* ^2 h* D3 K, r- I5 `" I* t( A
  585. BNE Check3
    ! c1 X5 W% h" M, s8 D; k7 _. B
  586. ;==============================
    ( ~, n6 C  o, P7 d' Q0 [9 v, T3 i
  587. ;调色板清空
    $ G: n1 M5 r+ M! a! h
  588. LDA PPU_STATUS
    ! ]4 s0 r- c0 d0 H
  589. LDA #$3F! }, c2 t1 g5 u8 ?5 n8 N. I4 E
  590. STA PPU_ADDRESS
    7 A( H% P' c& F5 m, m' \
  591. LDA #$00
    2 h* W& x! f2 o7 Q" ?9 @
  592. STA PPU_ADDRESS
    9 R) U, \  @* N6 G! ~
  593. LDA #$0F- [5 o) n$ K/ `' D: t  [
  594. Palette_Clear
    ! t; o9 o: [9 ^' x4 \8 |
  595. STA PPU_DATA! z! K4 [5 j( k! x# R
  596. INX
    2 K8 U' n/ C* y+ c6 @- s
  597. CPX #$20$ R; l# _3 a6 {( _% S8 E) ^
  598. BCC Palette_Clear/ l; C7 |) g5 j# @: @4 m
  599. LDA #$00
    7 C. J  `$ A& G, G+ y; d
  600. STA APU_STATUS
    % h1 ], }; Y. ~- S# u( f

  601. $ y/ G5 i9 w# t; @5 p6 _# s
  602. ;==============================% [/ o6 p: Y! j& @; X$ h+ j+ _
  603. ;RAM初始化
    + G1 {. [0 A( I, L
  604. RAM_Clear_All
    & L. ]8 f, O2 K4 |
  605. LDY #$00
    9 a) F: `# a6 d, A2 j# Q# [) N
  606. LDX #$089 G4 U' n6 A- w# |: Z
  607. LDA #$00; D" P: I" }7 M
  608. STA <$00
    ( T8 ^8 Y* _9 e. W6 }4 w( O
  609. STA <$01
    : v/ I& o: F" u! J- C: Q
  610. RAM_Clear_All_Start) _' Q3 I8 V- g) w3 A
  611. STA [$00],Y
    4 R/ ?' ?/ d  S: i
  612. INY
    7 g* v$ H/ E3 ~# u
  613. BNE RAM_Clear_All_Start
    ) _" V% T8 z0 Z+ }$ k# B
  614. INC <$01
    $ j8 q- @# q& J9 w# z6 g
  615. DEX) y- w/ z/ d6 Y% p  N7 n6 i
  616. BNE RAM_Clear_All_Start
    & B; W% U2 N. i
  617. 4 b4 {3 Y$ s- {7 u* F
  618. JSR VramClear
    - N! Y9 d) ]) w. h
  619. JSR VramInit
    . U; L9 |1 r' T, l0 `) ?! _7 W
  620. JSR OAM_Ram_Init, t( V0 I$ A# V3 [, h
  621. JSR Init_Palette_Addr- {- H: w. `. d; L: U" O
  622. 8 {5 J; \! S2 m5 g/ `7 ^! K
  623. LDA #$FF2 H! z+ h8 }; w
  624. STA Use_Ram_End7 d' e) i0 Y+ N# r
  625. ;==============================
    ; i% n1 L0 r9 Q- N6 G" A7 c) {: `
  626. ;初始化背景调色板
    ; n1 p$ T' [0 T" n' o* P
  627. JSR Set_Palette_Color
    2 S0 X* X7 g# J/ Y6 \$ {) q
  628. JSR Set_NameTable_Attributes- f; s! ]# m: ]" [

  629. ; H  h: l% @  C* V5 @
  630. LDA #$00
    1 d& v1 `- ]0 [  ~+ X
  631. STA PPU_OAM_ADDR
    ) W- d0 |' v+ [% g( a! s
  632. LDA #OAM_TEMP_ADDR / $0100% P0 L- g2 k- f8 T" L
  633. STA OAM_DMA  A$ r- O0 A: c0 p
  634. ) w$ j' q/ q0 |# Y9 ?
  635. JSR Sound_Reset_Proc
    & T/ i5 i) H& ?; x6 E% V
  636. JSR Set_Sound_Total
    : F' h8 w: T! o: y) X

  637. 3 S" m, `( d  w4 t! K
  638. Init_Start_Music
    3 p7 F+ U/ L: {6 q" ]  [
  639. LDX #$00
      E: h1 F  B6 M! F( h
  640. Init_Start_Music_Write
    6 D5 V6 e4 Q" }" K
  641. LDA Sound_Start_Port,X
    * A5 x: p& ]0 z2 N5 w7 k* s! n: |
  642. STA <Music_Cur,X- _9 }/ `! g! T; b" i. _
  643. INX* b7 i- C. J$ H2 ~
  644. CPX #ITEM_MAX_SIZE
    9 p! {$ M  `+ A7 }1 |  Z
  645. BCC Init_Start_Music_Write' R: ^9 W3 ?; T( C( P2 A. T% {

  646. % _/ o! F% F5 U, R) @2 Z- J
  647. JSR Show_Music_Text1 u) ^6 d6 R& s' ~: ^

  648. 2 m& g" z: R$ [! }4 v% f; D) H7 B
  649. .IF SOUND_BAR_SHOW_ENABLE
    ! g4 m" y' A) C  k- q
  650. JSR Sound_Bar_Text_Set! E7 O+ `4 e3 V( y( h
  651. .ENDIF
    $ _+ ^7 r4 }* L- y! e6 P  V: q

  652. 0 m  b# M! J% _2 L7 N0 r0 f2 |: L6 B
  653. .IF Track_Name_Pos$ K; y9 X+ S( L
  654. JSR Show_Track_Info
    ' q! D* u7 o1 {: q, B6 v% w# Y
  655. .ENDIF
    ' j7 O7 q, I1 c
  656. 4 u$ r7 a( o% Q& L# d1 w4 o; {( s
  657. JSR PPU_Proc
    7 ^9 m+ G8 v/ Q/ r2 G* W0 m

  658.   @9 M! x  ?- _' A. |: R0 Y
  659. ;==================================================
    + F- Y- `8 j8 E. Q) r
  660. ;音乐bank初始化
    0 [: x  I4 w8 C# z9 v% s+ ~
  661. JSR Init_Sound_Bank
    ) W+ s/ I" \  e$ g# U; N
  662. + y/ Z$ o4 X8 ~  O
  663. JSR Music_Show
    0 c; n& `! s4 [( I4 ^# X
  664. JSR Time_Show
    $ L; h1 g. E5 I1 N' J' X( ?( ?0 X2 L
  665. JSR Music_State_Show3 a) Q8 z, s# ~* r! B
  666. JSR Time_Delay7 P8 ^  V- `# k) i% r

  667. # T  R* ~* r- g: }( @: M5 i7 g
  668. LDA #$014 O2 ~5 n9 Q0 {7 D
  669. STA <Music_Stop_State
    5 p4 q: H( a% R2 ]

  670. 2 h/ a- F* Y: W
  671. LDA #$88$ c7 ?" U' m) R9 Z) h. b
  672. STA Screen_Ctrl
    1 z: Z3 F4 h' u
  673. STA PPU_CTRL6 k5 N: o  X) M" S( t8 Q+ u5 N
  674. # G/ g3 b; D& t/ V6 P* Y4 G
  675. JSR Show_Page_Text
    , z. k4 @7 h6 ]3 h0 v  P; N
  676. " M; K* g5 s3 K
  677. LDA #$102 `* j# m) k7 ~( q
  678. STA <Time_Wait_Cnt
    ! r! K9 H5 u8 j( ^/ M! B* C

  679. $ {1 z$ m8 U% J: K
  680. Wait_Time_Over# d6 u9 w3 M0 S
  681. LDA <Time_Wait_Cnt: B' z8 J2 n- T3 {2 R- p4 J
  682. BNE Wait_Time_Over
    . M* P0 g6 v1 \2 n
  683. ' v3 o$ R  Z8 V$ b0 q3 `; y; g
  684. JSR Show_Arrow
    " k0 S$ M. O; b9 _* H5 X
  685. LDA #OAM_TEMP_ADDR / $0100, H! S& E0 V  g
  686. STA OAM_DMA
      h5 w7 c. d" z+ ^6 R/ v, j3 V/ |  U
  687. 4 [1 m; }3 e2 I6 d5 R) T* F
  688. LDA #$1E3 T! @$ Z. S& \. y2 L( Q  i
  689. STA Screen_State
      l" Q  j; N) j3 V- v2 V
  690. 4 k1 b8 a+ A, }+ `5 \: F+ l
  691. LDX <Music_Item_Cur
    + b4 ]  p/ p4 t8 d
  692. LDA <Music_Cur,X% w9 h0 P) J9 U. u9 T* i0 }2 b
  693. JSR Sound_Init_Proc
    7 n7 g) z; t: B* c
  694. ) t; N( n. k) O' F: G: ?0 n
  695. CLI
    5 `3 \: p3 _0 m6 o6 @- V0 f
  696. JMP MainLoop6 Z$ ], ]8 _' C+ A; j) m
  697. 5 N3 N- a  h" x; b" `
  698. ;==============================% }: L5 {( J3 j9 S; x  x6 a
  699. Time_Delay;延时等待
    ! ^1 t0 V- U" ^" Z
  700. LDA PPU_STATUS2 X0 f' p4 N( W
  701. BPL Time_Delay: \+ U; x2 T  A0 b
  702. RTS
    0 q4 P( J- C  @/ L$ Y4 n
  703. 7 s+ A4 {( x% S) U1 _. \. B6 W
  704. ;==============================) U! e3 I, U( K. v7 U: @, r- i+ D
  705. OAM_Ram_Init;初始化精灵内存- C6 U! }, M* L" f5 u& h# W5 I" H
  706. LDX #$00% q* B' K: j% a6 K: F. k
  707. OAM_Ram_Init_Write, l! d( w( f; M& c5 ]: o! M. ^
  708. LDA #$F8* P' M/ o% Y$ c" P0 o1 D
  709. STA OAM_TEMP_ADDR,X- E5 D% \. `% b5 \3 j& F/ ~# `
  710. INX0 b/ ~1 J2 A3 r4 M
  711. LDA #$F8
    4 @' X" x4 \; e* `. Y% \
  712. STA OAM_TEMP_ADDR,X) V' I( b" {0 x8 b; K
  713. INX
    $ N6 v3 ~, ?6 V( ~8 e- R- ^1 Q
  714. LDA #$00
    3 `4 G% ]" @. g  {$ [
  715. STA OAM_TEMP_ADDR,X" Z- H; Q4 k1 u  \
  716. INX
    2 A. M; h) o( |$ h* x
  717. LDA #$F8
    0 y; W/ c' g) p9 Z: R6 b* j
  718. STA OAM_TEMP_ADDR,X. [0 Z/ u5 a  L  U; f
  719. INX) J6 P; m0 T# u
  720. BNE OAM_Ram_Init_Write7 {& @4 l+ z: \' V% s
  721. RTS
    . Z7 h3 d* A' L+ M: K5 ~6 ]
  722. * v! n6 y" z/ C/ q0 o
  723. ;==============================. T7 X) w' D, N" e/ [
  724. VramClear;初始化图形内存8 F- [. f9 V( I  B7 O
  725. LDA #$20
    2 ?- `' N4 x1 K* D" |
  726. STA PPU_ADDRESS0 r* I1 t6 g; l2 C( N
  727. LDA #$00
    # H/ C' i: S5 M; I& w" k
  728. STA PPU_ADDRESS
    ; ^1 j9 Q( b8 E# v' `* V; `
  729. LDA #$004 c) \1 B/ N  `* y; O+ l* @
  730. LDY #$00
    / l, S9 [- n+ K6 M
  731. LDX #$101 e' Y6 h4 {, I8 L
  732. VramClearWrite+ d5 b  x3 K) ^1 m; f
  733. STA PPU_DATA  X9 R7 M8 u; Z& O) V. C+ x( @
  734. INY
    / E, I' X# c2 Y" @$ F% j* g
  735. BNE VramClearWrite
    8 ^( P: i: C' e- K2 E. g
  736. DEX7 o+ i; n' V$ E9 @
  737. BNE VramClearWrite# U7 L  b% T$ V* M
  738. RTS! H" h2 T9 E, W. E0 q+ {* u  F$ l
  739. % \; U. r7 w6 M' Q4 G' V: P
  740. ;==================================================- s& _1 F( l8 v& C1 L
  741. ;设置MMC3图像bank5 k1 g) z7 {) K8 t1 b
  742. Init_MMC3_Chr_Bank+ ^' ?  O2 V9 v3 }, f& G$ _; ~2 [2 Z. p
  743. LDX #$05
    / M8 q8 ?" @* {4 k5 U3 ?
  744. Init_MMC3_Chr_Bank_Write, Z$ N6 L" s7 p0 O) M
  745. STX MMC3_BANK_CTRL
    + p2 A6 T( a# E" V! z3 x/ R5 L+ Z
  746. LDA MMC3_Chr_Bank_Data,X0 L* z* p% f! x% c2 G- R! l
  747. STA MMC3_BANK_DATA; ^; ^) l4 g$ X/ u- ~. M6 M
  748. DEX
    9 T9 a7 _+ H: M( z
  749. BPL Init_MMC3_Chr_Bank_Write; N; m% }  x* v/ \' K# w% B8 J9 N
  750. RTS
    , A7 @2 g; q( I/ r5 [% {
  751. ;--------------------------------------------------
    . u. ?2 C/ B7 K/ e
  752. MMC3_Chr_Bank_Data2 v1 H/ i9 Z1 @# l6 @
  753. .DB $00,$02,$04,$05,$06,$07
    5 [3 z& F4 c2 K  c3 j" k1 D3 K

  754. 0 }/ ?# B3 }# F, T4 F
  755. ;==============================! w% K& b/ Y5 a/ Z  v
  756. VramInit;初始化图形内存
    ) M* C% I0 r1 x7 D6 X9 l* D
  757. .IF CHR_RAM_ENABLE
    3 I7 V. [) {6 Z0 K1 r7 z: Q
  758. LDA #CHR_DATA_BANK( l) ^) S, p5 Q" c
  759. JSR Switch_Bank_A000
    5 L3 q4 I* b$ u' x
  760. LDA #LOW(CHR_DATA_ADDR), a0 [2 t6 H' @4 ?7 ^1 J
  761. STA <Data_L2 e- S/ t1 _& `9 D
  762. LDA #HIGH(CHR_DATA_ADDR)( O; |# K1 i, N
  763. STA <Data_H8 M1 W# C& D9 ]) J9 J9 D
  764. LDY #$00# d$ S( ]8 K* O4 f* _( {' p# @3 g
  765. LDX #$206 x( f; V: ~5 R6 I2 p& ]/ ?7 x( T* m2 b
  766. LDA #$00
    + I4 q  e- t4 [- u  h+ l
  767. STA PPU_ADDRESS2 o# E$ Z  w4 @" ~
  768. STA PPU_ADDRESS3 g8 t4 F# E4 V7 N% l% r, e
  769. VramInitWrite
    2 `- b( l% `9 o- x" L; |
  770. LDA [Data_L],Y
    ' {# q9 k0 C8 [% F8 h
  771. STA PPU_DATA/ j; g6 v! l/ U% A
  772. INY
    0 x9 r7 Y: ?& k4 C6 A+ b  h, I' U
  773. BNE VramInitWrite
    & }) R/ J# G* R8 N
  774. INC <Data_H9 @2 U! ^; F' D+ t
  775. DEX- v, q. B3 [$ y; l
  776. BNE VramInitWrite
    & L; {& S: h7 Q2 K* f
  777. .ENDIF
    2 Y# ?6 {' f4 w2 D9 g' Z; O' Y; `
  778. RTS, f1 j: y0 o5 f4 V7 |/ o% K

  779. # S2 ~- p) P; O( k6 L
  780. ;==============================7 e4 S2 R8 P5 A- t, Q. v
  781. ;音乐切换
    ; r4 M! O  i1 ~% {( j& X
  782. Music_Play_Change
    * P! d% u8 _: g' V; L% m1 B. D
  783. LDA <Key_Once0 `+ J5 i* m9 [" M: ], h! C% o
  784. AND #$FF
      X/ P0 U! f- v2 R' t$ X
  785. BEQ Music_Play_Change_Check* m+ O; v5 _" N2 B

  786. + G- ?: {  w  Y! H  _
  787. ;禁用音乐条刷新$ Q1 \! g  |% T9 n
  788. LDA <Text_Disable_Flag; G: {0 R$ `: T, ?5 Y  F
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME) p! R7 |$ i( Z' [1 }
  790. STA <Text_Disable_Flag
    5 c* @" k7 d- j' n! P
  791. : Q3 K% [& G( w
  792. Music_Play_Change_Check
    & j' }  i. }8 d3 U# }0 f; A
  793. Music_arrow
    ; C3 P& u& g' [8 {) A6 d: k* E# ~
  794. LDA <Key_Once
    3 m9 y2 D1 i0 l* ]) a+ a# N
  795. AND #$0F" l& b( o  O& o% Z; ]  }2 w" l, R
  796. BEQ Music_Play_Change_End4 }! M* M. H( K' V
  797. JSR Music_Track_Change3 V8 K1 Y( M7 P/ U8 C
  798. JSR Sound_Reset_Proc
    ; o9 |- C; B0 u. @) n
  799. JSR Music_Show
    9 s5 M: |( ?- ?; I6 j+ E3 `$ Q
  800. Music_Play_Change_End+ }9 W& a% @0 m( c: g! m! d
  801. RTS0 n( G; J7 O8 E9 A% }0 ]( R
  802. * y- E( m, y6 _- h6 ^+ u) o* ?3 Q. L
  803. ;==============================  p, ?5 r- w+ D! B
  804. ;音乐曲目切换
    2 C1 O" x/ J$ N+ e+ c! @
  805. Music_Track_Change3 l# X5 {8 g) X, v( H. N& U
  806. LDX <Music_Item_Cur
    & Z8 g" ]: }% D, U# w
  807. LDA <Music_Cur,X
    & o+ C* X& z* `# I5 v# m1 t1 O
  808. STA <Music_Last
    % U5 C* W& ^9 _! [
  809. Music_Decrease2 P, M7 L% e# n7 b; t; W- ~
  810. LDA <Key_Once) \4 ~4 j  B3 c+ r2 ~: P
  811. AND #$429 {* h' {/ I9 x5 @! R+ c" d- }4 Q
  812. BEQ Music_Increase
    ; }8 M$ s# \& L2 c
  813. LDA <Music_Cur,X% i. V. R, Z# _! Y; ]* k. `; v
  814. BEQ Music_Increase/ R2 E3 ~; f# e# O
  815. DEC <Music_Cur,X/ t% F3 Y7 ~5 B$ j
  816. Music_Increase
    2 W% y3 I* z7 o' O0 j5 V+ u
  817. LDA <Key_Once
    # b! n6 Y1 R4 q/ u
  818. AND #$81
    ' b" K& Z. A/ v4 l
  819. BEQ Music_Decrease_10# ]. @/ ]( p/ s6 b# U( r
  820. JSR Set_Sound_Total; m( O/ t  l8 A0 q
  821. LDA <Music_Cur,X; h* R# T. f4 |! W6 c6 C
  822. CMP Music_Total% Y: X- |' u, ?1 X$ N+ C
  823. BCS * + 4
    $ h0 O8 O! O  @: ]& D% j( M0 a/ @
  824. INC <Music_Cur,X
    - p% d( ~1 [( N" u3 F/ i2 v
  825. Music_Decrease_100 [- D% m6 S1 S8 V7 I' \" z: A7 T
  826. LDA <Key_Once4 o8 N9 T$ X+ z! y2 `
  827. CMP #$04
    " b8 U, K" H- W. i- Q8 h0 x' \
  828. BNE Music_Increase_10
    8 n7 I- r5 t/ G
  829. LDA <Music_Cur,X( l, n9 }/ h  X. A4 B
  830. CMP #10
    9 H+ T. N8 S, ^7 z/ ?
  831. BCC Music_Start_Song_Min
    - h7 H' O  A! C( K
  832. LDA <Music_Cur,X
    # B. j+ ^. T& A, s2 }/ G
  833. SEC6 b4 \+ w7 H+ P/ ]6 A
  834. SBC #10
    7 A9 r* [1 T9 f+ l, c% A
  835. STA <Music_Cur,X& X* m7 S% N# y
  836. LDA #$00
    + s2 |* y4 P* [+ C0 M& x: b
  837. BEQ Music_Increase_106 F, f: p" m9 \
  838. Music_Start_Song_Min
    , M& G7 _; z/ H* b* f2 F7 Q
  839. LDA #$00- @# F8 v" U5 d
  840. STA <Music_Cur,X
    ! v( B2 B5 c9 `$ @
  841. Music_Increase_10- g  C; G6 }( l& y+ L! J" L) }
  842. LDA <Key_Once  D' [' T) x9 C  p) \
  843. CMP #$087 y! i. S, i' s* ~" v2 W
  844. BNE Music_Track_Change_End
    4 d* ^$ h5 e9 u* \- v0 b% q
  845. LDA <Music_Cur,X
    * ^  R0 v+ U/ T# l% o! n
  846. CLC, z' e$ m% }  q/ S8 C3 u
  847. ADC #10
    ; I  q4 b, N" i2 l: s
  848. CMP Music_Total; ]% Q0 v* w. w0 E9 {  G! M
  849. BCS Music_Start_Song_Max" y' {0 Q2 O4 l9 l
  850. STA <Music_Cur,X
    0 N5 |1 x: F! V/ q: ^5 `% [
  851. LDA #00: z! B' W; z, t( T* u
  852. BEQ Music_Track_Change_End! c6 J! q  q, t1 ]' v4 M
  853. Music_Start_Song_Max: z  }3 Y  p& e) E! }3 v7 t# r' O
  854. LDA Music_Total5 o0 @3 i0 H! Y" V( b% a0 O
  855. STA <Music_Cur,X1 [# D; w# t3 b4 Q" U8 h
  856. Music_Track_Change_End
    ' T& R; U* N4 Y
  857. RTS
    3 P# ?, V3 o5 v

  858. 9 ]3 g1 y: x: u  E
  859. ;==============================9 Q/ f5 _- |" N0 _% U7 R3 N# W# L
  860. ;按键处理; ^8 T$ s$ l' V2 k: a7 X0 J
  861. Key_Proc: J/ d& x9 o0 e$ d
  862. JSR Key_Scan
    : v/ I! `( ~3 z, e
  863. LDA <Key_Keep
    ' F4 a( P4 j; N& s1 o' p
  864. STA <Key_Temp  a; G+ c/ s. b9 ~  \; T, ^' K* o
  865. JSR Key_Scan
    7 _% O0 i% j2 o
  866. LDA <Key_Keep
    ' P! k0 D: P+ x7 k3 z  R& a% `
  867. CMP <Key_Temp* {7 }& M0 m5 ^5 V" ]
  868. BEQ Key_Get_Once: ^; k# L" X4 s+ \
  869. LDA <Key_Kemp
    / h$ t) S) C, p& r/ b
  870. STA <Key_Keep
    2 T5 ]: q* I& h2 s8 R
  871. Key_Get_Once
    ) Z" g' J+ I& g2 s# ?! K, q7 B1 u
  872. TAY
    1 u0 n6 ?. r! _$ d+ q0 ?
  873. EOR Key_Kemp
    ; g, I/ x, c: E: Z9 e
  874. AND <Key_Keep' X& ^/ b8 \$ z& ?2 W- F' S
  875. STA <Key_Once8 T: x0 Y  b% |
  876. STY <Key_Kemp
    5 U! c, i+ H* w% i2 o
  877. RTS
    9 V7 e/ m  V) }# T# x' A
  878. ;------------------------------! V9 ~9 k# ~, x8 s+ ~0 v0 t$ b' A
  879. ;按键扫描
    8 p# E1 D/ H7 Z* P3 S6 Z
  880. Key_Scan1 T" V$ A0 e" Y( P0 o- D
  881. LDX #$01
    ' H( @5 o! p+ I: `. }" i/ O
  882. STX JOY1_FRAME
    6 z% B9 b. |3 s( X- {
  883. DEX4 m0 ]+ x9 s* h; D0 k" c" B
  884. STX JOY1_FRAME  _" q: x! |4 ?. q# U
  885. LDX #$08+ U- N+ _0 K9 U; `' V* k
  886. Key_Value
    5 T# m0 m- T- z. W) p$ |
  887. LDA JOY1_FRAME
    7 c7 h* m; D2 r7 A' R  }
  888. STA <Key_Getv- J; u& t1 [  ^: g0 H8 s4 j
  889. LSR A
    : J8 M6 G4 @1 ^8 ~2 j( ~
  890. ORA <Key_Getv
    : Y+ x9 d7 k9 R: u& b
  891. LSR A  z5 w  X! d1 `6 E# h& a8 |
  892. ROL <Key_Keep" M* U4 E# Z# c  y& Z! U9 n5 Q
  893. DEX
    8 M. |2 _; _9 T$ U
  894. BNE Key_Value
    5 O, @+ n" u' A2 h; r
  895. RTS
    % f9 h$ h  S$ c3 s+ R+ E  a
  896. - I/ S1 a# n5 i4 j8 [* H8 R- v, U9 M6 u
  897. ;==============================
    # f* D: p' F: M8 @2 @! w8 G) n- r
  898. .IF SOUND_BAR_SHOW_ENABLE
    7 h5 U  n& Q" l- Z
  899. ;音乐条显示
    % R' Z( ?1 l  r6 I8 K
  900. Music_Vision
    0 d  |* ]! p2 A# Z, t* {
  901. LDA <Text_Disable_Flag
    6 D3 {: }, Z& ^; t5 T" X/ S
  902. AND #TEXT_DISABLE_ITEM
    9 I( }3 }. t1 \4 ?# l4 W
  903. BNE Music_Vision_End8 H. r4 u+ u; q3 z6 s5 V
  904. AND #TEXT_DISABLE_BAR3 S0 G1 \# K9 w: R
  905. BNE Music_Vision_Set
    & i! X( e$ ~; m9 |
  906. LDX PPU_Cur
    / O5 A- p3 b/ }
  907. JSR Music_Animation
    * S1 |/ y$ }. ^# D; C1 [0 U
  908. STX PPU_Cur
    ! p+ ?0 _) d* @5 b2 j7 [
  909. Music_Vision_Set
    ' W; |, f7 E4 x( L# X* b# `' T
  910. LDA <Text_Disable_Flag; ?" M" F, P* V0 A1 i- {
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ' z+ S6 a) J! G+ s) z! V
  912. STA <Text_Disable_Flag
    $ P! D" d+ a' R$ k+ B  H
  913. Music_Vision_End
    ! S0 T& |+ @# h1 `  _$ e( X
  914. RTS
    ! m! D7 G4 |; x: n) N+ _, ]: d& B
  915. ;------------------------------8 r* T4 P! X7 i, D! x- a
  916. ;音乐条显示处理
    8 {. ?: Y. A: c4 u1 K2 ?
  917. Music_Animation
    2 `2 {- O! L0 k- U" n- i1 I. [/ G! z/ G
  918. LDA #PPU_MODE_CNT_LINE1 X+ M% {" k: p
  919. STA PPU_Addr,X
    2 F4 h; x# t- X3 z' j% O& q& v
  920. INX
    ! c  W4 B0 u: i" c4 q, [
  921. LDA #HIGH(Sound_Bar_Pos)( @7 i1 p0 h! A0 ~# M/ h0 m) p% {1 K! t
  922. STA PPU_Addr,X
    0 p0 X5 V) m% g5 y$ z: G
  923. INX
    7 P1 A8 H7 ^, b
  924. LDA #LOW(Sound_Bar_Pos): D; C0 b/ q4 h+ k+ o
  925. STA PPU_Addr,X
    % c5 R9 A8 z  k$ @! Y1 H* M
  926. INX) {+ ~9 X2 ~) R+ ]  G
  927. LDA #$08
    9 A; j/ a6 Q6 f/ u- z
  928. STA PPU_Addr,X' ^/ [% ~  q, n1 ?; L% _/ s: f" a6 Q
  929. INX+ V6 V. h7 Y- Z; N/ m
  930. LDA Sound_Bar+ a9 H+ e, F  _8 V9 w4 m8 Q
  931. JSR Volume_Convert
      N; v5 M$ E- \8 i4 b

  932. , f. Q* ~+ C7 {) {2 P1 O3 h5 D& O
  933. JSR Volume_Set_Cnt
    + |& k; n7 s1 f
  934. LDA Sound_Bar+$4' R3 Z0 C" n2 P  [0 F) @
  935. JSR Volume_Convert1 P/ e+ ^* O( K, d) m
  936. " V$ W$ E6 w: ~4 B1 t( V6 N+ z
  937. JSR Volume_Set_Cnt
    ! w; f1 S# K7 Q7 p9 O6 H
  938. LDA Sound_Bar+$8
    # Z5 {9 y0 J  l- B8 a8 |. o( z9 t
  939. JSR Volume_Convert
    % J; I4 v- [) k5 t& M$ n
  940. , p. ]9 ]& l2 R# c$ T
  941. JSR Volume_Set_Cnt
    3 z, w3 X, P& s& b) c
  942. LDA Sound_Bar+$C( W9 e# W- _, B3 \9 J8 W* ?6 k( j
  943. JSR Volume_Convert1 }$ u  |8 P, f) g5 @* w
  944. 9 J1 O# {/ `/ a. y) J7 F  N
  945. JSR Volume_Set_Cnt
    7 j3 H# s' H% P. q0 C) o# A' {

  946. 6 s7 u. \" a' t- f& J) h6 g
  947. LDY #$10) ]8 X% m. E6 k' h) g* H, x
  948. LDA APU_STATUS& Q. D) I2 X8 ]% @. p
  949. AND #$10& I6 x2 f' |/ N2 j+ K
  950. BNE Volume_Count9 W% T& r6 v/ l/ |/ A4 E
  951. LDY #$00# c( [2 @6 ]$ E: ^# e* Z
  952. BEQ Volume_Count
    8 @+ S1 V, o9 j0 Y6 M+ u' ]( v) F" q

  953. , ]& Q2 b. x( M; M9 Y
  954. ;------------------------------
    + F$ A+ f* r( s( Z# i# @
  955. ;音乐条处理0 `7 A8 Z# b/ v/ i% `4 q  u; x2 J
  956. Volume_Convert
    ) m/ \: M9 _9 T' R1 s
  957. AND #$0F6 c. Y# r1 N8 z
  958. TAY; Z& |" W( N8 p9 b, h4 D+ P
  959. Volume_Count% p* v  \( Q0 n6 `2 d% K
  960. LDA #$08
    . O1 L# n0 {8 G: N) s- o
  961. STA Sound_Bar_Cnt. m% N5 s) b# z" C) I2 b0 N% }+ T. G
  962. Volume_FILL; a4 C9 \3 f# h3 A  [2 s( `- S
  963. DEY- f; c8 A2 h( s' X; F7 T- C* u
  964. BEQ Volume_Half
    9 ~+ K1 v9 V8 v# |7 H
  965. BMI Volume_Empty
    4 E' P: T3 x* n* s2 Y9 A6 X
  966. DEY
    4 O+ t$ I/ ^7 E- v
  967. Volume_Full
    1 M5 e+ e6 f9 }/ I' A: ~  U
  968. LDA #$16
    . c0 J! x( J9 U: P7 g  v; z) h* c
  969. BNE Volume_PPU* M0 Q# c' i& @' u
  970. Volume_Half
    4 K( T5 a" ~. t  U
  971. LDA #$15( z0 o8 M6 G! g) P( N  t: j
  972. BNE Volume_PPU- x# S7 o. X4 Y3 r4 x& A- S
  973. Volume_Empty/ `* h& v& L3 b. R! Z0 T
  974. LDA #$142 ?# c. H$ K) V) Q6 o& A" g; N; x
  975. Volume_PPU! ]9 T* C8 x; W0 D0 ]
  976. STA PPU_Addr,X% Z* ^; ^5 Y3 \' y
  977. INX
    3 }7 H5 \$ S4 g3 B( o: k5 ~) |
  978. DEC Sound_Bar_Cnt: l1 f. X" @2 c9 }: F/ X: P% w
  979. BNE Volume_FILL* G; ^% l+ e9 S6 U0 A" {% h
  980. RTS& i' }6 G- }4 Z0 c8 R
  981. . A5 h$ k% C' |: M1 h% h& V) L
  982. Volume_Set_Cnt
    5 v8 N9 q& Q* y4 t+ c% n7 R
  983. LDA #PPU_MODE_CNT_LINE_NEXT$ n& O) G2 D5 \9 P/ X2 i6 G
  984. STA PPU_Addr,X6 o$ s7 t4 t$ z0 @& p) z
  985. INX
    ) `) h  c0 p0 l
  986. LDA #$081 Y& Z+ h* T) F* y4 |
  987. STA PPU_Addr,X. P# P5 H  a6 K+ k1 ~! F: i
  988. INX
    ! {9 o3 C$ ?7 I! r4 D/ [: {# K$ P% @
  989. RTS* C3 e9 C- }' [3 G

  990. * A5 p: R# v: _, O/ E- T, T, ^0 v
  991. .ENDIF6 b( S7 n" |$ ?8 T' w& o

  992. 7 k# `( a1 }" ?8 u9 e7 A
  993. ;==============================7 F- U0 Q# z3 t" |8 n9 r
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    4 X2 ]' n' Y6 U
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式" z: p# d6 z+ ]1 V) L
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除9 V2 W0 _" v: n3 V
  997. ;------------------------------
    ! I" |& S, M0 t: C, |
  998. ;PPU处理
    # N: m- v$ |, I. J
  999. PPU_Proc6 P& F, S: ~; a. }* M/ m7 M- `
  1000. LDX PPU_Cur$ d  m: g* J3 G+ T
  1001. LDA #$00
    / ]  n% K5 q7 `6 W: I
  1002. STA PPU_Cur; q8 l" m2 k) z0 ~) o. _
  1003. STA PPU_Addr,X9 \6 N# T( n/ }" c) h
  1004. LDA PPU_Addr( J( h  F8 H. m$ T" }4 r
  1005. BNE PPU_Proc_Beg" B9 u4 O0 C0 ?& J7 Y, W
  1006. PPU_Proc_Ret
    $ H, o0 x( t0 P1 k
  1007. RTS
    ; H$ T3 C/ W( e

  1008. + Z# S% \2 X0 v! ^
  1009. ;------------------------------; {4 Z& {3 i7 N# K  A( ]
  1010. PPU_Mode_Return_Cnt  ;转下行模式8 w% m8 p1 e; v; t9 F
  1011. INX
    ; I9 E, g/ q  a3 }5 \" k% T
  1012. LDA PPU_Addr_L
    : F" ^) ]+ s& s' L( K+ b2 X5 @: Q. x
  1013. CLC% [9 g$ c% ^. u4 P. ?
  1014. ADC #$20
    5 M4 H. m9 o/ A: `
  1015. STA PPU_Addr_L
    2 N+ I0 n6 w& t
  1016. BCC PPU_Mode_Return_Cnt_End
    * @( H( p- u! I; k- B% _2 L! `  ~
  1017. INC PPU_Addr_H, ^' P) S! b( T6 q& m( F- l* v& k
  1018. PPU_Mode_Return_Cnt_End/ M+ r0 U7 |  T8 j5 d& p& {/ }
  1019. LDA PPU_Addr_H
    + d" f$ M; ?0 O/ D, H# E
  1020. STA PPU_ADDRESS' O% K% P. C4 k8 c
  1021. LDA PPU_Addr_L5 k( R7 U" |. X4 i7 A
  1022. STA PPU_ADDRESS; ~/ k1 y9 o: P" d. N
  1023. LDA PPU_Addr,X( _  W9 a" C' q# ]+ ]5 w1 e2 C' b$ @
  1024. TAY
    2 w7 X: v- r5 J  k
  1025. PPU_Mode_Return_Cnt_Write- V- X& j8 W  L% M8 @
  1026. INX
    * R. h( x: l& b5 M% L1 s
  1027. LDA PPU_Addr,X/ ]3 h6 e+ J: s5 U) A8 V1 ]9 l+ [
  1028. STA PPU_DATA
    9 S& ^0 l+ o/ s& E- C/ |- x
  1029. DEY
    % P, @- J- I& k) a4 m
  1030. BNE PPU_Mode_Return_Cnt_Write
    7 S/ l/ h" e  O/ L  |1 L! S$ _! b
  1031. JMP PPU_Proc_End" B; F9 ~, T9 u9 G1 P

  1032. 6 z- q& _7 }: K6 A8 Y% v
  1033. ;------------------------------
      p/ }9 @6 u) P8 a1 u7 h
  1034. PPU_Proc_Beg  ;处理开始
    . g( |# c$ E: i+ h5 [1 U
  1035. LDX #$00+ G: `# `9 U& z4 x
  1036. STX PPU_MASK' D; W# D. `" M# [' c" c; X
  1037. ;------------------------------$ v9 d, n2 J$ _
  1038. PPU_Mode_Select  ;模式选择
    3 t4 b8 {8 I3 h: A/ w
  1039. LDA PPU_Addr,X' [! _! P# |. m
  1040. CMP #PPU_MODE_CNT_CLEAR! Q! @) h( w/ ~, o" V3 A' _# ~
  1041. BEQ PPU_Proc_Clear5 j) |) _% d& U" W9 D( {0 p
  1042. CMP #PPU_MODE_CNT_LINE
    5 [9 j; @: {$ M+ {3 _+ D
  1043. BEQ PPU_Proc_Cnt_Line8 J# q! i% a! r) _" {/ F' D3 \
  1044. CMP #PPU_MODE_CNT_LINE_NEXT  u" s. v% b- |9 ?# d3 ~$ G' A
  1045. BEQ PPU_Mode_Return_Cnt
    / U4 @6 E5 E; x" X6 s/ g
  1046. JMP PPU_Proc_End_Write
    - |4 W( ?4 y1 P* j" s3 ^( b
  1047. ;------------------------------
    " V8 b: ]7 |0 l0 e8 D4 ~
  1048. PPU_Proc_End  ;单行写入结束
    5 _/ s4 f& x% R) W. I
  1049. INX
    ( M- w( U0 s+ u* @$ e, Y4 R
  1050. LDA PPU_Addr,X! Z* d9 X1 d9 T4 ~! S
  1051. BNE PPU_Mode_Select$ L7 j- ~* H6 t5 c5 `0 T
  1052. STA PPU_Addr
    & z, d9 ~6 j$ R! }8 N" U
  1053. JSR Update_Palette_Color
    & p- G' d* b$ o$ g8 B
  1054. , g# V7 G8 s  p% R& z0 @
  1055. PPU_Proc_End_Write
    $ Y/ J$ M3 {7 h% ^( x3 z$ G
  1056. LDA #$00
    $ y4 u( s4 |1 @/ i5 A7 H% N
  1057. STA PPU_ADDRESS
    4 J% q% c# z0 Y+ w
  1058. STA PPU_ADDRESS
    % F1 T" R/ G6 g7 u
  1059. LDA <Text_Disable_Flag7 u; h" x" u* x: {" x
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF# X9 w1 |% ~$ F
  1061. STA <Text_Disable_Flag" g) F' x$ N8 N1 T8 Q$ `5 t
  1062. LDA #Scroll_X
    " y* @. H9 b0 l. v4 w: U8 L1 p
  1063. STA PPU_SCROLL. I1 s' i8 j' s5 b
  1064. LDA #Scroll_Y
    & j/ L0 H  P( ~" K
  1065. STA PPU_SCROLL
    % }. E, n0 K/ m3 d
  1066. LDA Screen_State0 e& G- ^, U& U" J. W- [
  1067. STA PPU_MASK6 C' x1 x+ e1 }# ~) t
  1068. RTS& N0 p" P* V. ?, ~9 F) D# L

  1069. 0 o% J" x3 ~0 u: Z; n2 p
  1070. PPU_Proc_Clear1 F' Q8 P0 M+ Q1 k# C8 a6 c
  1071. INX
    . K3 p1 Z; e4 @! S! T( K! P/ M
  1072. LDA PPU_Addr,X* b! R1 I- d' k
  1073. STA PPU_ADDRESS
    & }* \! \1 L: _3 Y3 Z% |+ H+ P* o, o
  1074. INX& N7 R$ e& G* ^. L! \
  1075. LDA PPU_Addr,X
    - t. J3 O# e0 i2 `+ I7 O" e1 z. u8 n
  1076. STA PPU_ADDRESS- U+ v5 X+ s  T
  1077. INX
    " T3 q" ^7 p+ B! K( ]7 I
  1078. LDY PPU_Addr,X
    8 }* Z0 R7 }& N, I+ Q. T
  1079. LDA #$00
    ' B5 l) e5 Z- Y* G0 f9 @
  1080. PPU_Proc_Clear_Write
    ( x& |0 J7 a; H( [7 Z
  1081. STA PPU_DATA
    9 O; n0 h! A4 o3 n, O, R7 ]
  1082. DEY& Z; x: G. |4 _
  1083. BNE PPU_Proc_Clear_Write
    , ]( L3 L1 Q, N$ \. j4 j) G
  1084. JMP PPU_Proc_End
    & D& h% D% }' Q9 [5 j. w3 c2 d

  1085. 3 Q& {0 B% P" n* W- ?4 ?. i9 i
  1086. PPU_Proc_Cnt_Line
    " h, i9 u$ J8 ^$ u8 ]
  1087. INX
    6 @# V  }  d5 p$ T- D3 q. U
  1088. LDA PPU_Addr,X" K. A9 O$ I  W- x6 `
  1089. STA PPU_Addr_H0 p3 E7 `2 F1 @/ ^% [+ V3 e" P
  1090. STA PPU_ADDRESS( l( w& u# V! x2 k9 z) Y
  1091. INX* @: W# w+ t9 }# ]8 M# k# u$ o- ]! D
  1092. LDA PPU_Addr,X" P$ @  o) X+ t# [
  1093. STA PPU_Addr_L: M' ]5 J& l" [5 Z) p2 v
  1094. STA PPU_ADDRESS
    ) F9 f9 Q' r; S) ^7 w# U' H
  1095. INX
    % F7 t; c0 `4 c. q# y* q4 U9 n2 F
  1096. LDY PPU_Addr,X3 d' u. q0 l+ j+ v7 N: [" \" G) R  M
  1097. PPU_Proc_Cnt_Line_Write
    - R  J& t. T% D2 n9 n0 u: i
  1098. INX
    6 Z2 E, r2 Z- A# v1 O) v
  1099. LDA PPU_Addr,X
      G. Y1 _. g' m. `6 s
  1100. STA PPU_DATA) [8 |& s# G% C% M  o5 A- v
  1101. DEY
    ' X% g( K* T$ T" F
  1102. BNE PPU_Proc_Cnt_Line_Write$ U" o& |5 m5 k
  1103. JMP PPU_Proc_End
    : I# d8 U5 ~7 z; c8 Z
  1104. - P4 S, p4 ~' x
  1105. ;==============================6 `* W' |/ J0 w& }& Z9 r3 Z: W
  1106. HEX_To_Dec;十六进制转十进制/ Z3 V0 J/ \& F) K- B% y
  1107. STA <HEX_Data
    9 L7 D* }& M' I9 N2 e% B
  1108. PHA1 N9 q$ N  G6 Z) M# g2 _3 V# \
  1109. TXA
    # R* g' w# L! R, S: H
  1110. PHA3 t$ i) }' {! \# d8 }: U
  1111. LDX #$00  c- B+ N8 \; U& p6 u  G
  1112. LDA #$00
    + {1 h& \! M, {1 e, G% A! A
  1113. HEX_Cln2 Q" K8 _. C2 {3 t* G3 z! L
  1114. STA <DEC_H,X
    " R7 `5 m: v9 D! h! v4 v0 e0 ]
  1115. INX
    & l. A3 k( W& Z: i
  1116. CPX #$03( q& d% [4 r" x
  1117. BCC HEX_Cln
    7 r! H) h: j) s% u7 `
  1118. LDA <HEX_Data6 n5 o* y& Q6 U1 Y5 N
  1119. ;------------------------------  ]2 b& ^1 H# L- c! p4 E: }
  1120. HEX_1006 u" W& B6 @! A" [. G
  1121. CMP #100
    4 O# X! |6 P6 n. t2 e, A4 H- a- s; V
  1122. BCC HEX_10
    2 g2 K" G1 x- W; g2 v
  1123. SEC
    ( t6 m# \# m4 s! I# p, w
  1124. SBC #100
    2 F: G! C" U: G, G
  1125. INC <DEC_H
    1 ]  W* x+ K6 b5 a
  1126. BNE HEX_100
    5 E9 X& |* ~5 K% z4 Y; Y
  1127. ;------------------------------/ }  S2 q" p3 R/ I9 v1 @
  1128. HEX_104 f7 w. d0 W" N1 @; ?; r1 [
  1129. CMP #10
    * u( [& T7 Z1 Y" C
  1130. BCC HEX_1, |3 a# X+ Q8 q7 I! \7 `
  1131. SEC( h) a/ Q0 c4 R5 d
  1132. SBC #10, ]- e. v9 o2 B: o0 A& R
  1133. INC <DEC_T6 p6 X# ~& O$ ]% w' B, G
  1134. BNE HEX_102 p# I# |# S) T: I; D$ }
  1135. ;------------------------------# }/ |. l8 W: u8 m3 u
  1136. HEX_17 V9 D+ H7 z" q5 N4 t! _
  1137. STA <DEC_L7 ]* R4 S3 G- K# L
  1138. PLA/ {9 R  E; h9 U. h& V4 r1 n3 r' ?" T% v
  1139. TAX* N' M0 U  w3 c5 S
  1140. PLA
    ; ^! n$ l' G8 e2 M9 Q
  1141. RTS
    % n2 i- J+ _8 Z

  1142. . t: d3 M6 n6 Z' h
  1143. ;==============================
    2 Y  K2 O3 R  {- d$ p1 [8 X6 p
  1144. ;音乐曲目显示8 l! V7 B, T. F1 G8 T8 n* r
  1145. Music_Show
    , p/ Y: \& f) C; {) N# g
  1146. LDX <Music_Item_Cur
    2 W. r; f' k- q
  1147. LDA <Music_Cur,X
      d( Y4 ]2 k! ?! J# b
  1148. CLC
    : E* k1 h# d( u& z) P
  1149. ADC #$01$ }  k) ~& e$ Z1 G
  1150. JSR HEX_To_Dec! Q( }* j3 T- [
  1151. LDX PPU_Cur
    , G, Z4 k. H- r* G& B
  1152. LDA #PPU_MODE_CNT_LINE
    2 n- ^# W' u+ Y! {. H" m( k
  1153. STA PPU_Addr,X
      F! i& U$ X6 D: b  q/ A
  1154. INX
    ) L0 f. d  T' H0 j' Q5 r
  1155. LDA #HIGH(Play_Index_Pos): p  S  i$ o& h9 Q& O2 e
  1156. STA PPU_Addr,X
    0 Q6 B& K6 z  R7 l# q; F( \/ }
  1157. INX
    ! E# P7 |$ e5 R% x
  1158. LDA #LOW(Play_Index_Pos)% C  d# x4 P& n- X2 @: |/ G7 X
  1159. STA PPU_Addr,X" {& w: V8 ]1 D
  1160. INX
    - n% |  f3 W, W% `

  1161. ( M! T8 Y2 z8 A- n
  1162. LDA #$076 s8 x9 I# i# ]. H) L  m) r
  1163. BNE Music_Show_Length- f7 T2 P0 z: g2 k& t5 t" ^
  1164. 2 N' x. q1 Q! p) m2 N) C- N
  1165. Music_Show_Length
    + X2 l( H# @/ s# `( _  S$ T7 V
  1166. STA PPU_Addr,X
    * ]' |# n# y5 _; m
  1167. INX; O! H, ^$ |$ O3 c- _0 Y! ~
  1168. ( X' o! D  t# @# x! `& E+ A
  1169. LDA <DEC_H
    3 ?# l1 o1 Q; O( d+ \, n4 L
  1170. ORA #'0'
    # @( w* x* k+ U: k
  1171. STA PPU_Addr,X0 U; @$ |) p: N8 y- n. \
  1172. INX
    ; M, b& g# b6 F1 \$ H7 K

  1173. ' J7 [, Q, A( W8 U8 e
  1174. LDA <DEC_T
    9 u- C/ [0 R) j. E
  1175. ORA #'0'5 B6 ?4 A8 O1 C- |, F6 Z
  1176. STA PPU_Addr,X. d  ]' x' i) @- |- h% s3 B
  1177. INX: j" S' t* D1 ~
  1178. ( @% @9 I- W6 R' j2 C
  1179. LDA <DEC_L
    7 G6 \  H/ s# N  q
  1180. ORA #'0'+ o- d1 J& ?+ w7 W
  1181. STA PPU_Addr,X5 q: m& o1 Q6 C0 l  a. A% r1 u
  1182. INX
    - m% H7 C: C0 z$ _
  1183. * P/ `, n' W1 I; x, M" M5 y
  1184. LDA #'/'
    ' ?& M/ R7 C4 H6 a. m0 Z0 ^
  1185. STA PPU_Addr,X" H8 C' q3 M9 g
  1186. INX2 W9 ~& {) v4 A; a
  1187. Music_Show_Total( g+ l, b/ r& P' {( b
  1188. LDA Music_Total  j" ?3 }6 ]+ {+ w) a
  1189. CLC2 ~0 X" Y! O) o5 M
  1190. ADC #$01$ a* V. i7 \4 Y# O3 Z( f
  1191. JSR HEX_To_Dec
    - Q" [9 M- `' u+ O* _

  1192. $ C4 t7 e* ^. |6 R' N
  1193. LDA <DEC_H' S) Y% I5 B/ R% |2 Z$ o0 v
  1194. ORA #'0'
    % D7 ^0 ?6 A) a: I4 A
  1195. STA PPU_Addr,X- {. G$ N4 n1 c
  1196. INX
    2 d" H6 R; Q# r, W* ~3 s

  1197. , Y: `8 ~8 s: g4 m
  1198. LDA <DEC_T3 p5 u% g. k5 S, f- t: n
  1199. ORA #'0'1 ]+ p2 Q& H' \7 V) d8 F: g
  1200. STA PPU_Addr,X
    2 \* X5 F* n" G" S
  1201. INX0 y% Y8 C' m0 A" O

  1202. , }# l2 A' y: x2 ]% O- }, R
  1203. LDA <DEC_L
    1 I& Y3 L) Q/ @, G' l
  1204. ORA #'0'1 a! d' f5 C% a1 P
  1205. STA PPU_Addr,X6 Y1 N, _* j4 ^1 O: {
  1206. INX
    # E$ d5 [* P+ M; f. o; T
  1207. 9 M* G  q0 z! H& s; I, b7 _
  1208. STX PPU_Cur# w: E* X2 F) o+ q3 Q) {/ m
  1209. Music_Show_End
    ! M. c& n+ _5 w4 }6 M4 m
  1210. RTS! \4 @* e( K& e: q

  1211. * N  s2 q! V9 q  \$ ?  ]/ e
  1212. ;==============================9 o5 V; ^1 O' u' A  r# K
  1213. Time_Show;播放时间显示4 J! d4 Q9 F5 A$ ^7 m
  1214. LDA <Text_Disable_Flag
    9 y# t% j. `$ N' o4 T0 w$ @' L
  1215. AND #TEXT_DISABLE_ITEM8 w. y- H* F5 b* o# p
  1216. BNE Time_Show_End7 t- e+ q/ P( `5 W+ W" K) e: u2 k
  1217. AND #TEXT_DISABLE_TIME
    1 _8 y% T! J) m- N: j
  1218. BNE Time_Show_Enable* n* N6 o' d. G+ R  q2 Q
  1219. ! W' m' O& B$ j4 H, Z5 K0 d
  1220. LDX PPU_Cur) A0 W# |, k9 e6 N& {5 m, g
  1221. LDA #PPU_MODE_CNT_LINE
    " ~/ z! s' |  M/ n
  1222. STA PPU_Addr,X8 w  e7 W- f) }$ I9 L" [
  1223. INX
    3 W$ h- R* E. e0 `# B
  1224. LDA #HIGH(Play_Time_Pos)
    ( z" ?! d4 l% y3 f
  1225. STA PPU_Addr,X
    0 G) Q' Q5 V( \" q- f4 J; A
  1226. INX
    $ S3 j% z+ E$ G- I
  1227. LDA #LOW(Play_Time_Pos)
    ; U3 H0 Q' _; ^' P  V3 R
  1228. STA PPU_Addr,X. T+ e; P1 s; Q6 r4 C4 z& e
  1229. INX
    % f  ~# T6 }5 [. ~5 t1 H
  1230. LDA #$08
    2 |( n; G3 W, T, ?3 a7 m( ~
  1231. STA PPU_Addr,X  Y5 J* j# D, G  a" r- G: `
  1232. INX
    ; x9 o3 ~' M$ Q0 g. z# K
  1233. Time_Show_H
    3 g4 `- N0 o" |! o! j
  1234. LDA <Time_H
    $ N1 I0 f' \, E: n+ c
  1235. JSR HEX_To_Dec2 S* g! H- G" h6 @
  1236. JSR Time_Digit; n  A( s8 S, d- A7 ]9 N( p
  1237. LDA #':', P4 ^6 r( r! w
  1238. STA PPU_Addr,X
    + B$ h1 z& K2 R: [0 y. p9 C) R
  1239. INX
    ! v8 K1 P: z( k! p" |' I: j
  1240. Time_Show_M2 G+ k; J- u4 f1 Y( {  a
  1241. LDA <Time_M
    + c9 N  b2 o+ b# k; T
  1242. JSR HEX_To_Dec. C* x0 r) l  x1 E% @- B' I8 Y
  1243. JSR Time_Digit
    4 s6 D7 |' g  X  Q1 `& z+ t
  1244. LDA #':'
    8 b' |0 C1 ^& X
  1245. STA PPU_Addr,X
    ) I* f; H$ I1 H3 {+ a
  1246. INX
    3 j  k  o, i# U0 ]% m. o
  1247. Time_Show_S
    + P7 J8 i0 [1 g$ Z) Q9 \3 w
  1248. LDA <Time_S* ]3 h: `  E. \9 k7 m
  1249. JSR HEX_To_Dec
    4 C9 F% h# \. [/ v  s& a9 e8 m
  1250. JSR Time_Digit2 s, i$ _( ^* Y/ n1 b+ m
  1251. STX PPU_Cur2 }5 C! j% N7 a1 L7 I9 E
  1252. Time_Show_Enable+ J, [" c( M/ Y3 Z! T- S+ O
  1253. LDA <Text_Disable_Flag
    , L3 \, Z, ^% y. b1 q5 @& h
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    : I0 R: U) ?. U5 Q! t0 t; S
  1255. STA <Text_Disable_Flag2 |2 `% K5 W: _4 C* k4 S
  1256. Time_Show_End
    6 ~- |8 }: e4 F# R
  1257. RTS
    + c* R! A+ d6 O( U" m8 G3 Q$ j

  1258. ! b! S' F7 T7 D$ \, Q; L
  1259. Time_Digit! b: H8 ?2 `9 S0 k# N
  1260. LDA <DEC_T
    ' B# @* U6 u3 C
  1261. ORA #'0'
    / m0 Q, c) @1 ]
  1262. STA PPU_Addr,X, {: |) n9 D- h3 f
  1263. INX
    6 ?/ B- k- A8 b6 N
  1264. LDA <DEC_L
    ' u( C' e$ y# C/ V3 V0 a
  1265. ORA #'0'3 n& q7 N! H' |' Z
  1266. STA PPU_Addr,X
    ( d8 I! O. Z# y1 K
  1267. INX
    # M3 b. r# s5 s. Y. d+ {
  1268. RTS
    - D6 Q/ V2 q: \. l. s' n5 C

  1269. " a" _  C9 X8 t4 d5 ^& u  i
  1270. ;==============================/ u) a/ ?" D" t5 G2 b
  1271. Time_Count;计时4 \1 M( `! W7 p3 U6 X8 [. ]
  1272. LDA <Music_Stop_State$ }+ I# {- ^/ N. q2 |: u* ], X
  1273. ORA <Time_Wait_Cnt
    . ], s0 `4 v9 a- g
  1274. BNE Time_Count_End( K1 ^1 x1 I( Z+ I; C5 C4 z
  1275. INC <Time_Cnt
    5 u6 q& T( o. D( L, v" J6 B* [9 v, a- M
  1276. LDA <Time_Cnt4 |- B& d9 ]) w5 H8 X2 S
  1277. CMP #60" r7 X( q8 P" {; O5 F2 W
  1278. BCC Time_Count_End- ~$ K( l# {: z* V% P1 N
  1279. LDA #00
    8 O. ~' X1 I/ F* C1 _5 A
  1280. STA <Time_Cnt
    / s1 k/ ]/ r7 X! @
  1281. INC <Time_S; J3 C9 K6 ~3 t$ m4 I+ Z1 x
  1282. ' I8 [' K7 m8 H* Q
  1283. Time_S_Cnt# L9 ]7 m" I' e- H/ U; ~1 P" M
  1284. LDA <Time_S
    7 a3 n( [9 A0 M7 L' Z& g
  1285. CMP #608 F& f7 K$ J4 y) w' @4 _& T
  1286. BCC Time_Count_End
    1 G6 l+ }; U" {( D
  1287. LDA #00
    & R2 w+ c+ f8 _+ X
  1288. STA <Time_S
    % B( t' v1 `; n  @$ k0 b2 \- H
  1289. INC <Time_M
    . ]) F5 b+ d3 {1 e0 ~

  1290. 8 ~- |8 w( ]2 [8 t  }  w. t7 B9 O$ A
  1291. Time_M_Cnt
    : B  o! S9 `2 k  W1 G
  1292. LDA <Time_M* |9 f+ C! a& D! V7 t( T
  1293. CMP #60
    9 b  T7 Y3 s  u( J/ o
  1294. BCC Time_Count_End" f$ |9 F8 z) ^0 J. a+ _
  1295. LDA #00
    : @% f0 u  e8 Q. _/ X
  1296. STA <Time_M
    ' O3 _: r( J0 A8 l$ @; t
  1297. INC <Time_H
    : \) F+ k& O( J# g! s5 w

  1298. 8 r: U  L  ]$ m/ T9 }) S
  1299. Time_H_Cnt
    - g. {9 j0 r' [, Z
  1300. LDA <Time_H
    ' Q# l( |6 @3 w% f4 Y3 c. Z' T- N
  1301. CMP #24
    . d, H+ k; d; J4 @
  1302. BCC Time_Count_End
    / x% P- M7 h6 \
  1303. LDA #00
    6 v6 }8 V* a5 E+ i
  1304. STA <Time_H' o0 M1 e: X- e0 t

  1305. " j* X5 Z# ~7 _  `! U! S# t1 T5 K
  1306. Time_Count_End6 L3 O6 M% p- n8 Z; \- P* q1 s; d# g4 _
  1307. RTS
    , q3 q( c# Y8 z. Q% [
  1308. ; r) a; d+ q6 n4 @9 {& K
  1309. ;==============================7 i7 |. F. l  A! r% N7 T; t5 ?
  1310. Time_ReSet;播放时间重置
    & V) k# F/ Q  Z5 x7 ^
  1311. LDA #$00
    ' ~; I" [8 Z  ]3 c
  1312. STA <Time_S
    0 w' K0 C) A8 j6 J  n
  1313. STA <Time_M
    2 {1 x2 T& e5 ^1 T  w3 q8 y
  1314. STA <Time_H
    / I3 p+ Y/ u2 y" R
  1315. STA <Time_Cnt% ?/ ~7 d1 D/ n1 ^
  1316. RTS& u9 R+ o8 I6 V, |8 b/ x( S% F1 J
  1317. 8 U+ i, L" L/ p- `0 Z3 u* X: f
  1318. ;==============================: z( @8 Q0 b5 c- C, L! D' o
  1319. Music_Bar_ReSet;音乐条重置6 y6 u0 U' C& S% x
  1320. LDA #$00
    ) H, g5 b( _6 |, \" b5 [
  1321. LDX #$007 U3 r6 L  F) H! x$ [
  1322. Music_Bar_ReSet_Set
    % j; Y6 y/ V0 R% f. z4 l+ K( |
  1323. STA Sound_Bar,X
    . a8 U3 E1 f6 \
  1324. INX
    8 Y+ E4 j: [) ~" L
  1325. CPX #$10  o1 y( Z  ?' }
  1326. BCC Music_Bar_ReSet_Set+ X0 J/ H; `# e* Y
  1327. RTS8 _8 A" c( C' ?) G8 M9 E

  1328. " O( S' A' R: e* P1 z6 R! `# l  m
  1329. ;==============================
    ! o, a% D1 G! @# ]7 |
  1330. PPU_Data;PPU数据写入
    - Y7 q( V" q) V5 I( N$ ?; @
  1331. STY <Data_L0 X1 ]6 P' Y* j
  1332. STX <Data_H$ E( M# O& A8 S. f! z
  1333. LDY #$FF  S1 j- v( v: t8 |# y
  1334. LDX PPU_Cur
    % Z5 f9 ~1 \  E/ [
  1335. DEX4 g8 O# S3 q" ?+ M8 `
  1336. PPU_Data_Beg5 N  e# D, u" @5 A7 s
  1337. INX
    8 E/ {( K: l- V7 W
  1338. INY- U, t+ y  ?: e
  1339. LDA [Data_L],Y5 p8 a4 C& T* ?; X9 Q
  1340. STA PPU_Addr,X5 Z6 ^3 [- }. B- M- n* ~- u
  1341. BNE PPU_Data_Beg% p- I# t) V- R) w% z' F3 @
  1342. STX PPU_Cur
    + g. G; U+ V) o" h* s
  1343. PPU_Data_End, i/ U( o6 l2 c
  1344. RTS5 h: ]3 v: M! w  Q( X; P

  1345. - |& H$ W( }6 H  \
  1346. ;==============================2 d0 ~" B" ~. O3 z) o2 e
  1347. Music_State_Show;播放状态显示. m! ]5 @' l# J' n
  1348. LDA <Music_Stop_State$ s( G- ~; P9 l
  1349. BEQ Music_State_Show_Play
    6 o5 p6 D  T) H9 D
  1350. Music_State_Show_Stop7 D9 g6 c3 v* U% Z
  1351. LDY #LOW(Music_State_Stop)) n: z# f" T* o4 X: s! B( B# T
  1352. LDX #HIGH(Music_State_Stop)7 B* ^, a$ P; n1 w5 B
  1353. JSR PPU_Data
    1 N* i# E3 o% i% @7 ^* J- Z0 p
  1354. RTS
    + N* D( r0 u) n$ m, A
  1355. Music_State_Show_Play2 Y1 t2 J. s4 I+ m, o8 H
  1356. LDY #LOW(Music_State_Play)  F& A; _0 e3 w- }
  1357. LDX #HIGH(Music_State_Play)7 D! c8 H5 d" Z) \  {
  1358. JSR PPU_Data/ Z8 B. v: i" r. e+ o# z
  1359. RTS
    7 z1 Q2 X) {8 i- K+ Z9 T* Q
  1360. 2 H0 `  l& t2 z5 [* e* K
  1361. .IF SOUND_BAR_SHOW_ENABLE
      R$ U( t9 Z9 D( d! u3 C/ l
  1362. ;==============================
    6 v+ m4 m9 _! p# B. |
  1363. Sound_Bar_Text_Set;标题与音乐条初始化6 h6 J6 K3 H2 z* v" M/ ^% B8 `1 p
  1364. LDY #LOW(Sound_Bar_Text_Data)
    8 q6 [1 b- z6 y5 }
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    ! e* i3 U! g, C" x, _
  1366. JSR PPU_Data
    5 ?$ u* r3 O4 _% ~- n! i
  1367. RTS& h: b+ u7 g/ R0 u; H
  1368. $ ?" m! z& w' ?: D; F! }# w% m6 I
  1369. .ENDIF
    ( E1 A; P. m3 u: a- j0 E
  1370. $ O: C# H1 t! }/ {  t
  1371. ;==============================
    " ^: h6 h* a& B# B, l+ W+ t
  1372. Set_NameTable_Attributes;设置命名表属性
    4 [6 U8 S( J/ ^0 k
  1373. BIT PPU_STATUS
    $ x) {/ @$ U1 T9 e' G. S  l% T  D
  1374. LDA #$23, e$ t1 K: a9 Q6 F% `( r
  1375. STA PPU_ADDRESS
    8 M6 I! x0 l( s
  1376. LDA #$C0
    ' x; n) D# P' h. N3 {  }2 ], M
  1377. STA PPU_ADDRESS9 }9 x1 @' i  D* G
  1378. LDX #$001 f1 ]$ g$ ~2 _* l* a
  1379. Set_NameTable_Attributes_Write
    % l3 A  @) G' J) K; @
  1380. LDA Palette_Attributes,X
    7 E8 @6 {; ^7 u
  1381. STA PPU_DATA0 i# ~6 t; x4 N' O
  1382. INX! o' }8 C% v% R
  1383. CPX #$40
    & k6 W# t) p2 {9 \
  1384. BCC Set_NameTable_Attributes_Write0 W, C! F1 ], v- n' f( I
  1385. RTS' ^' P5 L, [  _0 E% f2 G. n
  1386. : \$ l5 k  j* }" x  ?3 w6 s: r
  1387. ;==============================
    & U0 |( |1 N7 R  O/ V( ^- u
  1388. Set_Palette_Color;设置调色板数据
    0 U) R, s- Z1 p/ T* x3 U! [
  1389. BIT PPU_STATUS  e/ o8 a* T3 U# P
  1390. LDA #$3F
    * ?! x4 `5 \$ T! \& {
  1391. STA PPU_ADDRESS
    # S# D; ~: Z0 \) M$ O
  1392. LDA #$00$ D! i$ C# U! k7 T1 L, @; w) F0 d
  1393. STA PPU_ADDRESS
    & |' v) D* l5 ^' j% _! n; W
  1394. LDX #$00
    ( y, \: ^; |; K1 A: [
  1395. Set_Palette_Color_Write
    5 N) G! o0 f* v6 b6 s! V+ P) T, R8 G
  1396. LDA Palette_Data,X: c8 O) x, [1 u
  1397. STA PPU_DATA
    1 S& ^* u; b& U9 Z
  1398. INX
    & e" s+ @% H& ]1 p5 _
  1399. CPX #$20( U7 ~7 M2 m2 t1 m1 t
  1400. BCC Set_Palette_Color_Write
    & c5 ?3 B$ I1 `9 B, f
  1401. RTS7 B$ s# x& c) `! Q. z) L
  1402. " Q' w& R6 k, K6 |* _% d2 L
  1403. ;==============================9 H, F+ W+ B* l( T6 t
  1404. Init_Palette_Addr;初始化调色板数据
      O8 f9 V( c' a1 J1 f# O
  1405. LDX #$00" O/ A9 c; J9 z3 U
  1406. Init_Palette_Addr_Write/ K$ S; R# P$ C, L
  1407. LDA Palette_Data,X
    # P- i- J& z9 E
  1408. STA Palette_Addr,X
    ' J6 p- O9 v, u
  1409. INX
    $ y! z1 U+ z/ u& J4 ~/ X
  1410. CPX #$20& d8 R/ w. T' E7 t0 p1 @
  1411. BCC Init_Palette_Addr_Write/ c2 ^- f  k! |: ]+ t
  1412. RTS* z# E/ G! O! e/ q/ s0 f

  1413. 2 l$ l/ [" g% ?0 g: F/ z
  1414. ;==============================; h$ h6 E2 F8 t3 }& ]+ D
  1415. Update_Palette_Color;更新调色板颜色
    3 x; U* e5 J/ b4 L' s2 c4 K- U
  1416. LDA <Palette_Update_Flag7 z% p* R. l3 [6 D5 N
  1417. BEQ Update_Palette_Color_End
    . `, ^+ |. @! Z  s) q: v  h
  1418. LDA #$3F" ~5 H& a2 ]! H- o# d4 W7 w
  1419. STA PPU_ADDRESS% F8 q" l2 T- _9 _  z& U5 h2 Z
  1420. LDA #$0C8 ]! G# K7 X3 J( G0 |  x  `
  1421. STA PPU_ADDRESS3 O& R0 l- H8 W
  1422. LDX #$0C* ~6 H9 L% ?* P  h4 f
  1423. Update_Palette_Color_Write
    & G6 _) o; }# ~/ s7 G
  1424. LDA Palette_Addr,X' I+ x, [: F7 [- ~* ?2 C
  1425. STA PPU_DATA
    / _4 C* D% b, G* C3 F
  1426. INX) S! |' @7 E- ?
  1427. CPX #$14
    & F# B3 f3 G9 G( s3 N6 `$ _* j
  1428. BCC Update_Palette_Color_Write4 i2 W  r& m# I- h
  1429. LDA #$00* Z  ?& q. @  [8 t! ^
  1430. STA <Palette_Update_Flag
    1 h& |* v" n% J3 x0 @
  1431. Update_Palette_Color_End
    4 J  `; \2 V( J8 O+ [. S) Y
  1432. RTS/ T: H' ]1 O$ [  ]4 T

  1433. : v2 J3 H& _1 l  A1 v  x6 m  @$ x

  1434. , X+ k4 E, l; A9 G3 ~- I& u# N: }
  1435. Update_Sprite_Palette_Data* G# [, g$ j8 O8 F6 Q( t4 f$ ^- f. s
  1436. .DB $21! x( P, E: L0 j2 R0 `1 J. o% d
  1437. .DB $21
    3 o- T! V" Y- N0 S8 u( z
  1438. .DB $11+ g8 T( `, h: [- @9 M/ P: S! h. P
  1439. .DB $01: y( J. _3 T2 J% G* Z9 W
  1440. .DB $01* M5 Q! d: ^" v' X5 q) _' A
  1441. .DB $11$ }2 l" d) i$ z% i- [/ a
  1442. .DB $21# [5 R% S5 e+ u- k6 i1 P. U; E
  1443. .DB $21
    ( x2 ~& M( c4 v- x
  1444. .DB $11! j* P" R9 x( F( V# q
  1445. .DB $01+ X7 c0 F. J# S0 k
  1446. .DB $113 o5 \$ S# M$ W' y3 A+ q
  1447. .DB $21% C8 }& O  I: ^1 j1 B" ~. \+ @
  1448. .DB $21
    5 X: t3 C. ?0 V3 v. u4 `5 ?+ u- [  X
  1449. .DB $111 T" q' ]% @: g4 T" X
  1450. .DB $012 D* }3 I. p3 m) z' b
  1451. .DB $11
    5 m) T" Y+ U4 h! _* L
  1452. ;==============================/ ]% t: r5 z) C% B5 s6 T! J+ k* }
  1453. Update_Palette_Data;更新调色板数据
    / ?" G. v2 t% K, n  P7 z* R
  1454. LDA Nmi_Time_Count9 s8 W" G" L! R) n7 \! \
  1455. AND #$08
    ! O% q0 P# v9 v) H
  1456. CMP #$08
    / b( E8 B. X: I* V" S
  1457. BNE Update_Bkg_Palette_Data
    6 |) U6 v( l1 G# \/ t

  1458. . A* j- n; ?" k+ R1 H) k2 ]4 \
  1459. Update_Sprite_Palette_Data_Set
    ( n  P/ S1 K) w8 L
  1460. LDA Nmi_Time_Count- S6 `; C, y1 [4 @. \8 C8 y+ c. ?- J4 T
  1461. LSR A' J) Y1 W6 Z4 ~
  1462. LSR A
    " ?0 m) H$ U  y! v# K3 W5 v) v2 ~
  1463. LSR A
    " F$ m% p* W& O8 D4 G
  1464. LSR A
    5 u9 `$ O; B& u: o$ L
  1465. AND #$0F1 S. R- I/ q; T8 B% M
  1466. TAX
    6 n% h1 W( f$ f  l! j5 y  f
  1467. LDA Update_Sprite_Palette_Data,X
    7 C" X) U' v& Q4 i7 W
  1468. STA Sprite_Palette_Update_Addr, X' `3 |9 ]1 \: @9 j
  1469. LDA #$01
    % v6 ^6 H% o+ q4 P
  1470. STA <Palette_Update_Flag4 I3 m, H" U* k6 q; K% H' I
  1471. 1 S2 G3 X( j8 m" x1 {: Y- U, C8 j
  1472. Update_Bkg_Palette_Data
    ! W! l* H9 t; ?6 ^8 U
  1473. LDA <Text_Disable_Flag
    / n/ s9 F7 t) A/ A
  1474. AND #TEXT_DISABLE_RAM( X; G5 T% ~- l/ Z- b; q
  1475. BNE Update_Palette_Data_End
    + W0 {2 F  ]' m. ~, f+ p
  1476. LDA <Music_Stop_State, [- n. D/ B! t2 X7 Q3 h$ {
  1477. BNE Update_Palette_Data_End
    ) m3 [& p; C. G4 T6 r! L: |& y9 u) B
  1478. & h  w. T9 a2 {( q( z$ G& V
  1479. Update_Palette_Data_Check
    1 W# Z9 q/ @4 b- w
  1480. LDA Palette_Wait_Cnt
      s5 V1 H* }; L8 f" z
  1481. BPL Update_Palette_Data_Check_Over
    . F6 R1 i$ E: ~3 K7 g8 u
  1482. LDA #PALETTE_UPDATE_INTERVAL
    ; `1 x: c! `0 ^" u) ]2 F
  1483. STA Palette_Wait_Cnt! n( k$ C% T- s3 _$ H7 e
  1484. Update_Palette_Data_Check_Over
    2 Q% ?" h8 a  T  p/ c& i
  1485. DEC Palette_Wait_Cnt! i5 ]# b7 f( d$ J* ?: C
  1486. BNE Update_Palette_Data_End  W$ T% n* H  ~
  1487. ! E' ?  E, g) ]& r. }4 }+ C
  1488. LDA <Text_Disable_Flag, D) H0 @* M! H4 ~. @  L7 _
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME4 m' r2 D- M: k1 ^9 n
  1490. STA Text_Disable_Flag
    0 }& R: q4 ?% \& A
  1491. INC Palette_Update_Flag+ v5 G6 o6 O: S  B! G

  1492. " e% ]$ J% f) g0 t4 [
  1493. LDA #PALETTE_UPDATE_INTERVAL
    , Z6 Y: F9 c1 |6 ~
  1494. STA Palette_Wait_Cnt
    1 `+ p7 S# o/ U; e! e- ~. h- B0 R

  1495. 3 z9 u5 B; ]" D" @* ]9 V
  1496. LDA Bkg_Palette_Update_Addr3 r  z- S$ x2 K) |
  1497. CMP #PALETTE_UPDATE_MAX+ H7 C/ p# X+ [
  1498. BNE Update_Bkg_Palette_Data_Set2 O5 r! X5 q9 A
  1499. LDA #PALETTE_UPDATE_MIN - 1) B! c, F' }; t8 q
  1500. STA Bkg_Palette_Update_Addr
    7 d0 z# e8 I* T% t9 u! @$ S  ?
  1501. Update_Bkg_Palette_Data_Set3 B6 G6 u- {# z' l
  1502. INC Bkg_Palette_Update_Addr( w' A0 i+ v8 f% R+ q
  1503. 1 H4 {+ i! J  g/ |+ \
  1504. Update_Palette_Data_End! Y. F7 D7 P, I/ A9 y, X6 _
  1505. RTS2 k4 b$ N7 B& F' G

  1506. # C  w5 L9 G% {+ G  \% @
  1507. ;==============================2 u( q2 K2 K. r! N# h9 G& r( W
  1508. Show_Music_Text;显示静态文本
    * i3 b6 O# b  |
  1509. LDX #$00
    2 @% g: t! r% |9 D" l5 v
  1510. Show_Music_Text_Set$ N; W8 U3 z5 W9 `/ z8 ?
  1511. LDA Static_Text_Data,X! L2 L% ~5 j' I. i) \# Q
  1512. STA <Data_L
    # i. J) f/ r# n  Q% M9 ]  v
  1513. INX! ^- m- r8 d! K2 R) c
  1514. LDA Static_Text_Data,X
    7 o, _' w; M& L3 @* H6 R( }
  1515. STA <Data_H4 m% \9 y2 d. L5 H+ a
  1516. INX3 Z- A2 G: `( m
  1517. LDY #$00! X/ a$ B  X! C/ I# W! v; d
  1518. LDA [Data_L],Y
    / [7 Q6 O/ I4 I  [; ~4 b
  1519. STA <Data_Cnt
    $ H, O9 A$ k- O2 \5 o, ]
  1520. DEX
    4 O- h9 G, o- p8 ~& F5 r% p9 [
  1521. DEX6 L) L% T1 {$ M) d8 J. z6 a! b  N* ]
  1522. LDA Static_Text_Pos,X
    ( Z4 s' m5 s% ]7 y  x
  1523. STA PPU_ADDRESS5 V/ s% Z" \& Q+ b' z
  1524. INX& g, t3 L7 E7 I4 F% M
  1525. LDA #$20
    ( ]5 n* H) d. J& T2 R$ U2 W. G: R. H* P7 A
  1526. SEC% m3 e0 q9 n6 a6 B. d: M" v
  1527. SBC <Data_Cnt
    , {& ?6 N4 I& h$ a/ o
  1528. LSR A
    0 B: I& c0 Z7 j/ }. P
  1529. STA <Data_Buf
    % m8 M- I. S" C& y4 o' z3 `
  1530. LDA Static_Text_Pos,X
    7 @, l  V- P3 U
  1531. AND #$E0
    : k% G* H& M$ D' i
  1532. CLC
    5 h5 h, \2 k+ F+ T0 h8 K
  1533. ADC <Data_Buf2 j+ w8 d7 B: W0 O! W" T  s5 E
  1534. STA PPU_ADDRESS
    ; z8 s. [, s8 i. _# Z+ F
  1535. INX
    # Z; b- _. U% r1 y+ Y
  1536. Show_Music_Text_Set_Write
    9 v) H) p7 s% E% O2 i
  1537. INY
    , O+ }5 o; a) k* L
  1538. LDA [Data_L],Y: g0 O* ^7 I9 [: h& h) x; t1 `& G
  1539. STA PPU_DATA) M- I" V0 O% }1 @  G9 u+ K
  1540. DEC <Data_Cnt
    4 {5 A3 P( H& @, [4 o% c% L
  1541. BNE Show_Music_Text_Set_Write4 A7 N% |! q0 ~
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    / m9 r+ W: _- o; m, t2 R1 o  |
  1543. BCC Show_Music_Text_Set& {# C4 L# A5 I! {8 R& p
  1544. RTS
    ! n7 _! Y  S; s  c+ j& \
  1545. ) e) U! z. R# B* c4 U1 q: _* X! T
  1546. ;==============================
    4 ^7 G  Z7 `2 z# ], |
  1547. .IF Track_Name_Pos;显示曲目信息3 K( D' W  k4 ^. z; Y$ \& |

  1548. * z* `# _; ~( V% C9 U9 v6 B& ?. j
  1549. Clear_Track_Info- _. Z. |& ~5 Z4 b1 y- V( U
  1550. PHA
    : Q2 u; A# X2 \  I$ }
  1551. LDX <Music_Item_Cur' T4 g1 n( X2 ?1 x
  1552. LDA Track_Name_Addr_Flag,X6 F5 @# @: g8 m  @
  1553. BEQ Clear_Track_Info_End_Ex
    4 B4 K/ A  W( W% [( B; P
  1554. PLA9 ~) U/ S8 U8 m, }' ]8 @0 D
  1555. 2 @" W( q* E: v  e
  1556. LDX PPU_Cur
    % q' l/ D+ k. I+ N
  1557. PHA) p6 N% t' g, c
  1558. LDA #PPU_MODE_CNT_CLEAR
    / B! ^9 H/ f* `/ B  a! J2 J) ~- }
  1559. STA PPU_Addr,X% w2 s( Y2 ^% f3 U
  1560. INX* C2 Z, A; \' E0 w( }2 q
  1561. PLA6 ]4 u; p& O) H- V
  1562. JSR Show_Get_Track_Name_Center_Pos8 E3 }1 D. F0 R, H+ e% T3 I
  1563. STX PPU_Cur6 E( a4 r# @: y6 {/ {3 F
  1564. Clear_Track_Info_End6 o* e' Q/ s  R% ^1 M
  1565. RTS* `3 S. r' m3 X- F- y" o
  1566. Clear_Track_Info_End_Ex
      j- Z- U/ C* h7 o4 `7 ]
  1567. PLA
    6 X7 p, T/ y- p- j. g8 c
  1568. RTS8 k5 t) \) A. v5 f& N* `7 H

  1569. % B$ W7 [% Q& }0 D; r( }% ?$ {
  1570. Write_Track_Info. q; e3 q5 N" H5 j. Z
  1571. PHA
    " H! \( v; Q5 f. o) P, r: W0 G" \
  1572. LDX <Music_Item_Cur
    4 w* g' {/ F0 s: a! j2 w0 @! `' ?4 v
  1573. LDA Track_Name_Addr_Flag,X
    3 j" ^* e, J- e' M( X: B
  1574. BEQ Write_Track_Info_End_Ex
    - R2 h/ ?+ G; k5 S5 j! ^# a
  1575. PLA; ~+ H: l: x$ r9 Q- s: |9 u! ~  P8 a

  1576. 8 F- b2 m; t2 k3 K. C# z! E1 X
  1577. PHA
    9 ]8 n+ |# f& f0 w* x6 j7 T5 @6 x
  1578. LDX PPU_Cur! {' ?* F" U7 N
  1579. LDA #PPU_MODE_CNT_LINE9 A! |/ \* }, Q9 V/ x* }# p
  1580. STA PPU_Addr,X
    ' y" S3 \6 y, d& e6 X
  1581. INX' \9 @4 }4 @( q0 c1 D
  1582. PLA/ G* E$ g8 ?( _( h8 s
  1583. JSR Show_Get_Track_Name_Center_Pos; t- H1 R+ a+ E1 I1 K" j+ S
  1584. Write_Track_Info_Data: ^1 V  V$ b1 X& Z4 _
  1585. INY
    . ^+ G+ [& j3 I9 b6 w# Z
  1586. LDA [Data_L],Y
    $ T, g; H% Z0 Z) R# S
  1587. STA PPU_Addr,X
    : C' R0 y, n) X/ A% h: h! ]
  1588. INX
    8 l; \/ T5 S  p# E
  1589. DEC <Data_Cnt: _8 S& t' b+ T' [2 V( M
  1590. BNE Write_Track_Info_Data
    8 E, t# ~. N0 a* Q  k
  1591. STX PPU_Cur6 M4 T1 A1 |$ A
  1592. Write_Track_Info_End
    - R, y* A8 b5 Y. E+ ^  j
  1593. RTS2 s2 A, D. b; j/ w( J8 m8 y7 {( m! i
  1594. Write_Track_Info_End_Ex
    0 u( E# P! v9 s( }' q8 t+ }
  1595. PLA, f+ k  F1 F( B4 Y2 |
  1596. RTS
    " S8 q  E% y7 K: z, u# t

  1597. % n( Z. P, c( t5 u) |# l
  1598. Show_Track_Info$ L( ]) {: R( S7 x1 K
  1599. Show_Track_Info_Clear0 T8 J8 }; d( }1 K0 }
  1600. LDA <Music_Last
    % {# d9 ?. G; @: g9 p

  1601. 2 G9 C% V0 W0 X9 x% O/ \, m
  1602. JSR Clear_Track_Info
    / W8 Q' G$ G6 O+ q

  1603. % x: m  m3 v9 K0 b2 V" a
  1604. LDX <Music_Item_Cur; m' [, V8 [& f
  1605. LDA <Music_Cur,X  _" q) ~7 W& \* d) M$ m, ~6 A, \% K: @
  1606. JSR Write_Track_Info
    6 [, m, g( _" V" C! @: @
  1607. RTS+ B+ g. }' k! p! `* X9 u

  1608. 2 M; k8 e; m0 C
  1609. ;==============================
    7 R4 k# g& l; _/ Q# t1 k
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置+ t; j4 t0 i/ r7 i$ p2 D3 N

  1611. 2 F. y" ?7 Z3 Q  j3 D7 W& o
  1612. ;取出集合名索引! l( Z* D) v, k
  1613. PHA2 r" {1 m% E5 m
  1614. 8 U9 w% n1 n7 W0 ~' G
  1615. LDA <Music_Item_Cur4 o, l6 h) A5 ]
  1616. ASL A! H1 z& G+ R  r9 C0 X& v
  1617. TAY1 k' [# W% M% e/ v
  1618. LDA Track_Name_Addr_Port,Y
    ' l6 o( F, [8 g& f9 L; Z
  1619. PHA
    / ~# x% I0 \5 c
  1620. INY5 ^8 h, e9 e+ V. }% `
  1621. LDA Track_Name_Addr_Port,Y
    1 y% b( R) s2 J$ l) E, S
  1622. STA <Data_H
    , @5 L0 j7 y+ l$ ^
  1623. PLA
    4 [+ `2 L# v& E' X  T% o& S
  1624. STA <Data_L/ [. r. Q6 Q8 g

  1625. 9 C9 P% Y) {% Y8 Y, c3 f* ^- @
  1626. PLA
    & V# ~% S: M- {( l2 h( ^! e" @+ w
  1627. % R6 |) Y: j- x" R$ G: U
  1628. ASL A
    # Z. e* [; |" ?7 v
  1629. TAY
    4 J5 Y1 y0 V7 b# J
  1630. LDA [Data_L],Y/ ^1 L; T0 n0 r( Z: n# D
  1631. PHA3 C* B: F; o) _' x) W
  1632. INY
    5 L/ ~: L% `: }. J8 G' J
  1633. LDA [Data_L],Y
    % i% `$ Q5 V# K; V; Y& W; v% H
  1634. STA Data_H9 ^3 y5 o- }+ }( d* ?) V/ s
  1635. PLA
      ?# K' J% c$ V8 `# N# V
  1636. STA Data_L, M* d& i; q- u7 |) C
  1637. / w& ?' t1 P; E: L0 \% n' H  G- m
  1638. LDY #$00
    ! [- p( `4 Y$ c$ u9 g
  1639. LDA [Data_L],Y' K1 V  w- a5 o: `$ [/ @
  1640. STA <Data_Cnt
    8 d$ J  I8 v: m) r
  1641. LDA #$20
    , A7 `+ A6 R, v: T9 i- T
  1642. SEC% U1 d4 p2 H% j8 l; f
  1643. SBC <Data_Cnt6 i- @# O* c* l2 Q: h
  1644. LSR A
    , |7 E% C4 O; X; J% t. q1 E
  1645. STA <Data_Buf9 u6 [0 e  k( D! g( o
  1646. LDA #HIGH(Track_Name_Pos)2 _% m% Z9 d4 Y( q, p0 `& o
  1647. STA PPU_Addr,X; G! J* `5 T3 e7 k5 h, R
  1648. INX$ l5 K9 t* e1 x7 x; t+ h
  1649. LDA #LOW(Track_Name_Pos)
    0 p  |8 q( w7 s$ i" ^3 l9 U4 T/ }
  1650. AND #$E0
    . ?! n8 F( E& f- K1 @& S
  1651. CLC
    % ]7 W; V0 P" x$ F& T
  1652. ADC <Data_Buf
    - S! l! N0 t( k, ~* K; O
  1653. STA PPU_Addr,X1 }: L! v: L) {+ @0 ^7 G
  1654. INX
    ( U! Y" [, {* ~0 l# [* m
  1655. LDA <Data_Cnt/ l% h+ m8 s3 k+ j7 \0 r
  1656. STA PPU_Addr,X) s0 k) s0 e9 f1 y3 f9 Y8 a$ ^
  1657. INX3 V# _5 K; t1 r' F& j0 p
  1658. Show_Get_Pos_Center_End9 X; H; Q; T) d3 e/ F3 w7 E
  1659. RTS
    & w+ O  n# q1 X3 a* `7 m: U# m  D# |
  1660. .ENDIF
    . y5 L& Z- N+ m+ W( K0 c6 d" g. ~
  1661.   Z5 }! ?3 n7 a
  1662. ;==============================
    " C2 y/ q8 R5 j" Q* O
  1663. ;音乐端口清除
    * q2 g! x1 E5 _- \/ x; Q2 o5 q
  1664. Sound_Data_Clear/ S# J. K4 ^5 J7 N" d
  1665. JSR Sound_Port_Clear
    0 z$ g$ V/ k. s# y( p" i; n* ~
  1666. JSR Sound_Ram_Clear
    ; A: J5 L* w6 X2 X* @/ l1 Q  s
  1667. RTS
    * h" E: p4 r8 J1 ?2 u$ Z
  1668. 6 b" i, c- T' B- s5 a! u
  1669. ;==============================! O% n, h5 u- H3 D/ @2 J
  1670. ;音乐端口清除
    8 n8 Z0 V$ {6 O2 R, x, g4 @
  1671. Sound_Port_Clear. q, g$ n) H' r/ v
  1672. LDA #$009 ^  _7 a$ Z5 N; c4 @+ T9 H
  1673. STA APU_STATUS
    " h8 G7 m9 |) _% I
  1674. LDX #$00
    $ ^) C( M1 g1 A6 S- J
  1675. Sound_Port_Clear_Write! P2 E" [$ [# o( P
  1676. STA $4000,X5 X! O6 J# Z* O% Y1 @4 e4 @- R
  1677. INX& N. g6 L1 p, \) d$ v1 ^
  1678. CPX #$14" g- N* }/ B( L5 d$ r  R
  1679. BCC Sound_Port_Clear_Write0 V; P. I! v# D
  1680. RTS- T9 q7 P) ~0 l  u6 ~

  1681. 5 ~( L: f* i7 O+ W6 S) `% U% c
  1682. ;==============================
    # y4 k/ U2 @2 G5 D% i+ m7 h
  1683. Sound_Ram_Clear;RAM清除, b5 d, N4 ?0 V( N7 Y$ r
  1684. LDX #$00
    " s. X7 t9 J. i. Y
  1685. LDA #$00) B3 C+ f1 s1 l* f; N
  1686. Sound_Ram_Clear_1- P/ d* K$ \0 s, i( J
  1687. STA Sound_Ram_Addr_1,X
    7 j. n" d3 o# I  ~- W. I# K7 K* |: c
  1688. INX) y, U7 a# U$ X
  1689. CPX #Sound_Ram_Addr_1_Size
    $ w0 D) T8 d; P8 z  f/ W
  1690. BNE Sound_Ram_Clear_1. Q7 j9 x/ W# o( P! }0 ^+ W' q
  1691. LDX #$00
    / Y" ~3 n. ]0 ]  `3 T+ Z
  1692. Sound_Ram_Clear_2
    ; d: v( k7 G7 X4 M' n
  1693. STA Sound_Ram_Addr_2,X
    9 G) U; S- t4 P1 Y5 r* ]
  1694. INX
    % Z/ _' b& v/ U! M+ y2 D
  1695. CPX #Sound_Ram_Addr_2_Size- z2 R3 r4 N0 P. ?1 ]
  1696. BNE Sound_Ram_Clear_2
    ; o- F: {3 Q* h5 B+ [& w! p  _
  1697. LDX #$00" \; y+ Q; O, A8 i0 a) {
  1698. Sound_Ram_Clear_3
    5 T/ E3 C$ A) U- A. x
  1699. STA Sound_Ram_Addr_3,X
    3 e: m8 Q: e/ W, B2 Q
  1700. INX
    - E/ U# ?, ~: l5 ~
  1701. CPX #Sound_Ram_Addr_3_Size# r# E# u' W  i" A. C
  1702. BNE Sound_Ram_Clear_3
    2 k& x' W  x# W# p  u  y5 c
  1703. LDX #$00' ]# m% t% U9 W" F# q- B% J
  1704. Sound_Ram_Clear_4* z' D; O" ~: m' B# n$ V/ l
  1705. STA Sound_Ram_Addr_4,X1 W8 V: w& E, s. i! Z' @& Q/ X
  1706. INX
    4 @- Z- x* m/ a# p! v
  1707. CPX #Sound_Ram_Addr_4_Size; G# K0 X8 s* X/ ^
  1708. BNE Sound_Ram_Clear_46 G- I& s; Q; R: G1 t0 E1 O1 d
  1709. Sound_Ram_Clear_5; S: a( j! Y4 U
  1710. STA Sound_Ram_Addr_5,X0 J0 M0 u0 J2 ^- N, s
  1711. INX. U; n8 M0 p3 L7 H) O$ ~
  1712. CPX #Sound_Ram_Addr_5_Size1 t9 g4 W9 i' F' N! W' x- T! w
  1713. BNE Sound_Ram_Clear_5
      Z3 B1 x& k" A$ W+ [$ c, X; f
  1714. RTS5 [$ t& B6 p1 o) N' c
  1715. 2 \4 L$ l7 Q8 F5 g3 r3 E, H; e. ^
  1716. Get_Music_Collection_Name
    7 u9 `8 o- z9 y/ C# V
  1717. PHA
    " z: n, o+ _# d1 k. N6 i1 C
  1718. LDA <Music_Item_Cur
    8 w3 D( `# ?6 U3 x0 z3 \+ y
  1719. ASL A. D: b% f' M+ i" ^0 f
  1720. TAY
    . T! m' l& x1 w( e& k1 n
  1721. LDA Music_Collection_Name,Y
    ' p; }  A8 B/ J1 Z
  1722. STA <Data_L
      `7 s. w2 M3 Z, Q! K
  1723. INY
    # x# I, D$ t4 Q9 {: }7 _$ ^7 T
  1724. LDA Music_Collection_Name,Y* f0 t' S' |4 e- Q. s+ s
  1725. STA <Data_H
    6 {7 G- P8 s" T& H) c' F6 a, E
  1726. PLA
    1 D, _0 g: K4 d/ U) P' F( c* [
  1727. RTS6 N. h: h# Y- g5 I- q# g

  1728. 2 t+ v4 G1 A* n1 }- R
  1729. Set_Sound_Total
    ' L5 j" h& X' B6 Z
  1730. LDY <Music_Item_Cur
    , u. p$ b9 o6 }; [& n
  1731. LDA Sound_Total_Port,Y
    * U2 v# V; z" w+ ^. Y
  1732. SEC' K+ K6 A1 `: O  K5 ^: K1 v: H
  1733. SBC #$014 x8 y) h& w) S. _* i1 j
  1734. STA <Music_Total: _$ v1 c- I/ R- d
  1735. RTS
    4 w+ d4 i0 J. `) ~* u% h

  1736. $ O4 P1 h& N* X' A
  1737. Get_Sound_Start
    1 y! {! P! I; ~0 D5 n: @
  1738. LDY <Music_Item_Cur
    , g/ k  ^3 O) W2 k3 {* b
  1739. LDA Sound_Start_Port,Y" P! B7 A; @* o) S# J* E2 H
  1740. RTS
    9 [/ v% W; [# n
  1741. 0 _5 ?+ h) h4 k* U5 J
  1742. Set_Sound_Init_Port5 \( u. G0 n, @6 N
  1743. PHA
    " Y  y  u+ G1 E; x$ }
  1744. LDA #$20
    - j& k* c0 e" \' _! {* i8 O. B
  1745. STA <JSR_Addr_Op5 X" {* f" F: {
  1746. LDA <Music_Item_Cur. A1 O- Y' l2 j2 [( n7 x
  1747. ASL A
    & f( _! k7 j& Z& c7 a+ t/ a3 q
  1748. TAY
    3 W0 x8 G* p( B  j
  1749. LDA Sound_Init_Port,Y
    ; A- W6 n* `4 R& J% l) s
  1750. STA <JSR_Addr_L
    & D+ s2 C# j# `+ t1 \. i& u: \: E# S
  1751. INY
    2 T0 P; M: ?; S- |3 y
  1752. LDA Sound_Init_Port,Y
    2 P2 v5 d- Y8 Z0 O  ]; w
  1753. STA <JSR_Addr_H
    % @$ V, f! G% u4 P2 o
  1754. LDA #$60% T6 G; L- ^0 J# t  z
  1755. STA <JSR_Addr_Rts
    0 G: b) Q& _) c) g; l2 }, `* y
  1756. PLA
    % E$ B8 C/ E  b1 h3 D; n
  1757. RTS( [' i! Y' W" ]" D# I! h" j
  1758. * b7 o- k7 g' w$ {$ z2 z
  1759. Set_Sound_Play_Port
      F3 R* t, {& A( U7 v% J  B
  1760. PHA
    $ [% Q+ O; f  J3 R6 b. l& W
  1761. LDA #$204 G( p! R" x& A9 ]! r& d4 A
  1762. STA <JSR_Addr_Op* Y" d% k$ o0 i* N, S6 s
  1763. LDA <Music_Item_Cur0 W4 t1 y+ l5 `: W& Q
  1764. ASL A8 F; w, e$ F- X# U# K
  1765. TAY
    , R% ^! P+ K: ]1 ~  f. G, f
  1766. LDA Sound_Play_Port,Y
    ) {& o( @6 [+ ^+ j0 {
  1767. STA <JSR_Addr_L
    # ]) A/ B2 u, ~: W$ l% t% I
  1768. INY
      Z% C; L# H* k4 O
  1769. LDA Sound_Play_Port,Y
    ( ?0 x! ]# T, Z- M* I) ~! b8 A
  1770. STA <JSR_Addr_H
    ' h5 T6 z  ]7 T! a  O
  1771. LDA #$60
    & J1 O, q1 c# P/ n2 r6 I! t
  1772. STA <JSR_Addr_Rts) s2 H$ [+ G* Q3 U9 N; G. T1 @
  1773. PLA5 j8 D2 h  \( M( K# W- F
  1774. RTS
    ; Z( T8 R) d! k0 K  A
  1775. & N$ K  N  O; r" [1 U
  1776. Set_Sound_Reset_Port
      u2 r) |0 Q1 f& B! ?( W' S, R( c) y
  1777. PHA  a' g1 ]. y. a$ r$ R5 J7 h# B
  1778. LDA #$20- @) b( M) q6 y. I0 D) h
  1779. STA <JSR_Addr_Op0 g7 x+ X1 m1 E5 j
  1780. LDA <Music_Item_Cur
    ; G! J7 F9 ?; c7 C6 a( R: p
  1781. ASL A+ f$ W! a* [/ A4 g$ v) g
  1782. TAY8 w, A$ k) L7 T/ L1 Q- p& h
  1783. LDA Sound_Reset_Port,Y* p2 L. ^% H9 H7 v6 z* Z( E$ f$ L
  1784. STA <JSR_Addr_L
    - f% D, S+ a. u8 ?
  1785. INY! M) O+ {7 Q0 `( ?* V( q5 l
  1786. LDA Sound_Reset_Port,Y% x9 ]- U( [3 P7 A; \$ l* [
  1787. STA <JSR_Addr_H
    5 o: ~5 ?7 F0 X9 L/ |
  1788. LDA #$60
    * S2 d! S& ^* O; V! y' o
  1789. STA <JSR_Addr_Rts
    # s0 g$ v- o8 w2 M3 n9 J
  1790. PLA
    $ q$ x3 x% E1 C9 Q/ m
  1791. RTS: q  \5 w' f$ K
  1792. , `/ ?* g; ]7 G5 v
  1793. ;初始化音乐bank
    " D7 `% D) f) z. Q
  1794. Init_Sound_Bank
    2 W8 ^0 X  _; @9 e5 M
  1795. LDY <Music_Item_Cur
    . e$ _+ O* k. Q0 Q+ w$ t
  1796. LDA Sound_Bank_8000,Y
    0 o$ J2 u. z5 I9 {! Q- x
  1797. STA <Music_Bank_8000
    * M4 ~1 d& B  o
  1798. LDY <Music_Item_Cur4 {' E: S7 y' Z8 d8 g9 L5 Z: m
  1799. LDA Sound_Bank_A000,Y: i! J2 v+ g) r8 Z2 e: L
  1800. STA <Music_Bank_A000$ j; I8 `3 s% R$ l! h) H! v7 u
  1801. RTS2 v# }) r& D( z7 g

  1802. % ]- B% n8 g* I% j  R* \
  1803. ;==================================================3 x- M8 W2 U! s+ z$ O$ a, D6 }
  1804. Sound_State_Reset;音乐状态重置- J: W! e) w/ P4 ?) ^. x
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    / t' k3 u0 C. G5 [5 {) b' K
  1806. JSR Time_ReSet             ;重置播放时间
    * w8 L" y1 n: I. G' u8 K3 X

  1807. : z; I: M" y9 J2 b1 R  g/ E
  1808. LDA #$00
    3 [0 P: K8 V6 g6 V# g& s
  1809. STA <Music_Stop_State
    ; r' F, S5 u) z( |! D0 ]
  1810. JSR Music_State_Show       ;显示播放状态
    ( O! \0 I5 h: F8 K5 ~

  1811. $ S/ A" ]* q* a3 O
  1812. .IF Track_Name_Pos
    # Q  [8 h4 E1 Q8 O. r7 H
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    5 b8 n' c4 M- H
  1814. .ENDIF9 Q0 P0 }0 a0 {; e: Q
  1815. / q2 E: F: n. {3 t% L9 c
  1816. RTS
    : v/ y8 N; u! z, ]" a. X7 r
  1817. 5 n6 Z* k) E+ j7 e
  1818. ;==================================================
    9 j! W# Q0 }0 |9 r
  1819. Sound_Init_Proc;音乐初始化处理" l9 B; Q; m) z4 X
  1820. PHA
    9 D5 K: }6 K% k  F  {2 p+ z  V# I
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址$ N/ M4 E' y* l% x% f- A
  1822. LDA #$00
    $ b4 H$ d. M- u4 ^. M1 J; `6 R6 r0 d; G
  1823. STA <Scroll_H               ;重设水平滚动! x% g7 d+ a& Z0 ?* v
  1824. LDA #$0F; f/ B! Q/ x/ Y/ z) M
  1825. STA APU_STATUS
    / B8 j; a8 T) T" D% T5 g$ B
  1826. PLA
    / p% q/ G" k" W
  1827. JSR Sound_Init             ;音乐初始化6 m* P; O8 n3 P8 U2 Y7 a7 F
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    5 Q9 d+ `) P$ u# @
  1829. RTS
    5 D  M) d# j3 w, W! Y' Z
  1830. 3 r7 S- B+ P! W' V4 b) T
  1831. ;==================================================
    2 A# E- Z9 v. V& W+ B
  1832. Sound_Play_Proc;音乐播放处理
    2 {/ ^' h% h7 ?+ P
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址0 o& Y6 u2 X. _& l
  1834. JSR Sound_Play             ;音乐播放
    1 ]& ?8 D, a! y: \
  1835. RTS
    2 ]1 s# A- q* ~2 u. b% h

  1836. 8 c+ i  V( b$ @6 G8 G
  1837. ;==================================================
    1 ]1 q* y8 K$ P& Y5 @1 W: _
  1838. Sound_Reset_Proc;音乐重置处理! a+ \# j7 d% l) `
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址5 A6 x) x  }; [
  1840. LDA <JSR_Addr_L
    1 _/ h7 u8 i; d9 L  z, L
  1841. ORA <JSR_Addr_H
    6 m# a% F2 d  n3 c+ ~7 z* t0 y
  1842. BEQ Sound_Reset_Proc_Default' G+ m: B: z5 C' ?  ]
  1843. JSR Sound_Reset            ;执行音乐重置
    4 @8 Q+ B9 }! A
  1844. JMP Sound_Reset_Proc_Init_Sound! z) A. E, x; B: r7 q6 ?
  1845. 2 a/ O" P; r0 a/ b
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理) r1 a0 p, T' @3 f; V& T

  1847. 2 u$ z) z% A( F, }- i: |1 C5 G2 j
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    4 I7 ^/ V! T: w2 y$ w6 ~7 j
  1849. LDA #$00
    0 Q/ I3 r" q# m* ]/ S
  1850. STA PPU_CTRL* z5 F$ E$ a. y" q! @7 C# S

  1851. ; C3 |8 E8 I% `$ m3 i( X( [! @  H
  1852. JSR Sound_Data_Clear
      s9 D, c, H5 L6 |* S+ i

  1853. 2 b$ c; O) E( ^
  1854. Sound_Reset_Proc_Default_Wait% T* e, J8 T, R
  1855. LDA PPU_STATUS  N' _- ~5 D9 z  M6 H/ M
  1856. BPL Sound_Reset_Proc_Default_Wait
      h6 n9 ?/ C8 E: T  z+ j

  1857. 6 y1 T( V! _- K" g0 c4 ^5 g0 z
  1858. LDA #$00
    4 M7 I- e- e3 u/ a
  1859. STA PPU_ADDRESS/ X" B* G" }3 n% R, e* j  \
  1860. STA PPU_ADDRESS
    + h  m1 n  U/ w9 _
  1861. STA PPU_SCROLL7 D3 h4 ~9 j' t3 {
  1862. STA PPU_SCROLL
    ) h4 t9 D0 O8 b( `

  1863. ; q3 h5 N( f+ ^* ?( b- |5 S) |
  1864. ;恢复PPU控制5 }. R0 l' [& L) I+ i
  1865. LDA Screen_Ctrl7 i7 z) o' b4 c7 [0 [: ?. b$ i
  1866. STA PPU_CTRL
    9 k' q% H5 ^  x5 `6 o
  1867. 9 {$ Y& r! z" r2 L1 \: P7 }1 Y
  1868. Sound_Reset_Proc_Init_Sound
    3 \6 z- h" S0 C" c* T
  1869. LDA <Music_Stop_State& o, Y5 W4 [- j& l+ a& b7 R
  1870. BNE Sound_Reset_Proc_End/ [; D' Y. }( p  V# C7 ]& ~3 L, s9 L
  1871. LDX <Music_Item_Cur4 O2 {0 Z9 k. H8 T
  1872. LDA <Music_Cur,X
    , o% @/ i( y* y) T( }4 r9 [* Q
  1873. JSR Sound_Init_Proc
    ' n# w+ \" ~. s1 @
  1874. Sound_Reset_Proc_End
    + B3 d$ B! ~/ J0 R5 S7 G
  1875. RTS
    ! M. T7 K0 H" I* D! ]5 S: e
  1876. % I# V. o) \3 q+ q4 L
  1877. ;==================================================5 F, {+ W* }6 ?2 F" u+ b
  1878. Clear_Item_Text;清除页项目) \& G" m: q+ |% q0 Q7 L9 B0 w0 L+ S
  1879. LDX PPU_Cur. d2 a$ ]: K4 J, [! ?- G
  1880. LDA #PPU_MODE_CNT_CLEAR
    ( z! ?9 J) M6 ?) T2 Y$ |
  1881. STA PPU_Addr,X9 J, m' x1 W' Y, V& I; x' L- w/ v1 C
  1882. INX' s/ y* k, F  y8 {( Y
  1883. - k" ^6 O9 `% a6 X6 w
  1884. LDA <Page_Last
    - S4 f# w  X  \
  1885. SEC
    % L/ x. e7 f$ r( ^! _9 V- j/ A$ \
  1886. SBC <Page_Last_Index/ ~6 R/ y# t5 b' v! X
  1887. ASL A
    . c6 y) N4 O' `# b

  1888. 9 e* X3 {/ Y* I, v. }
  1889. TAY
    * ?" T; N8 B7 ~/ n
  1890. LDA Item_Pos_Data,Y
    ; Q$ b3 Y0 P5 y: F8 D* D
  1891. PHA
    9 V+ y4 x( f* F2 l$ z2 V
  1892. INY! x: y' H# Z, i" v/ g6 V- n+ L
  1893. LDA Item_Pos_Data,Y
    8 R. w4 \, B, F
  1894. STA PPU_Addr,X
    . b, m# u- g4 Y2 }
  1895. INX
    ! x7 F( K- ]# j# o# t  V
  1896. PLA) [' w. U& L9 J6 C9 ^3 M5 {  U
  1897. STA PPU_Addr,X
    2 e/ z- r4 P: c' d
  1898. INX6 V. g" A$ X( O

  1899. 2 D1 }, v4 [0 }: E; Q/ c
  1900. LDA <Page_Last
    2 C6 I3 r3 K9 V) @: O6 i) s0 d
  1901. ASL A2 T6 t8 B0 M* y5 R& D+ w
  1902. TAY
    / ^+ F1 [2 K8 j8 z5 k
  1903. LDA Music_Collection_Name,Y
    , M: a& @, k4 x- ^4 }
  1904. STA <Data_L
    . V# U$ L; C, P$ |9 R
  1905. INY
    5 [  G7 a* P/ `; ^
  1906. LDA Music_Collection_Name,Y
    6 z7 e2 i. z* @0 v6 t* L; B
  1907. STA <Data_H7 Q" A4 t& U+ l7 f. g' H  f: D% m

  1908. ! }$ u' p/ e" j& J
  1909. LDY #$00, U* Y" f" {0 D# m4 n, d5 X
  1910. LDA [Data_L],Y
      v: V& e# X. `" D
  1911. STA PPU_Addr,X, r# a4 @$ _* e
  1912. INX2 r! t5 r0 w/ c5 K+ i2 V* n! H, m2 z6 ^
  1913. Clear_Item_Text_End
    0 [$ w/ q% o+ n3 N
  1914. STX PPU_Cur; v% E  Q2 l. D7 y) G9 V8 ]
  1915. RTS) T: u7 c  Y. Z0 L! B

  1916. * p3 r! B' m! L+ [5 h2 P# K; C
  1917. ;==================================================0 Y: q( v/ [$ U& ~4 R% `
  1918. Show_Item_Text;显示页项目
    1 i4 |  P! m. q* `
  1919. LDX PPU_Cur5 Z' i2 H) Q+ k3 T7 l/ r
  1920. LDA #PPU_MODE_CNT_LINE  V" D9 F4 D2 n! D' E7 I9 D
  1921. STA PPU_Addr,X
    ; \5 M; j) M. m4 Z. H
  1922. INX7 i/ e7 L' }7 j
  1923. LDA Page_Cur3 Z4 s3 W, o$ X
  1924. SEC2 c! D' Z, M* `, x
  1925. SBC <Page_Cur_Index: U5 s8 D0 L) v& j# ]; P" H
  1926. ASL A
    / u+ l& t0 v- H/ c# Y5 j7 y1 a0 U
  1927. TAY
    8 c5 g+ m2 i0 o7 i6 H
  1928. LDA Item_Pos_Data,Y
    , ]" w  f: ^2 P8 w
  1929. PHA9 i$ }8 N1 w/ ?
  1930. INY
    1 C2 d* p4 C& y5 C+ n  k
  1931. LDA Item_Pos_Data,Y: ~2 y  P  t& s3 m7 H8 R1 [
  1932. STA PPU_Addr,X
    1 O% [$ B5 u4 E7 H
  1933. INX
    3 J6 p* {3 b" f9 H
  1934. PLA
    9 R0 Y) o7 ]  o: i
  1935. STA PPU_Addr,X
    0 @6 q9 d5 j: s
  1936. INX
    # V7 F! I$ g2 m: }: V
  1937. - `, n. ]: P0 ]+ p
  1938. LDA Page_Cur
    . K' W  B$ q" Y) o7 K
  1939. ASL A3 _: e- i4 G9 a9 ~7 ~
  1940. TAY
    % e$ D0 i9 u& u3 j
  1941. LDA Music_Collection_Name,Y1 ?: s9 C# @9 O/ e7 n# y! i
  1942. STA <Data_L
    ) x9 d, x" w% O2 w3 v4 M; Y
  1943. INY7 J/ J4 G, J- a. G9 J# o
  1944. LDA Music_Collection_Name,Y! ]6 z" [0 @' b  j& Q' d
  1945. STA <Data_H7 c6 m) _/ M. ?5 v- Z* U+ A

  1946. - j: u9 R" q: E0 b7 m1 T
  1947. LDY #$00; q- @4 d9 V0 `. s- E6 k3 G
  1948. LDA [Data_L],Y
    ; D( j! r, R- l& E$ r$ G
  1949. STA PPU_Addr,X1 X2 w7 F( ]( q5 D5 q. f1 D$ m4 B
  1950. STA Data_Cnt" A! i. y% m% `. O4 y. r" @' V
  1951. INX
    4 u0 _1 @2 l' m) p" b6 N7 ^7 W

  1952. & ^3 [8 \# u4 s2 i6 x: ]8 `4 s, I3 U
  1953. INY7 d. g8 Z/ u0 u) ^1 n( C
  1954. Show_Item_Text_Write
    * J: P& ?* y$ e) E$ y' U
  1955. LDA [Data_L],Y  R; b: B! j0 o$ I- s) d7 b) Y$ u
  1956. STA PPU_Addr,X. G( {8 X6 J& Y4 d
  1957. INY
    $ y, T5 F1 _+ K2 F
  1958. INX
    " P0 x, t3 A( ~' t: S0 q
  1959. DEC Data_Cnt
    ' M) |1 D% w2 Z# t, \
  1960. BNE Show_Item_Text_Write
    ' i4 |0 }! j  o' `+ [  y/ W
  1961. 9 e8 A, K( ]: F4 O) y( Z& _
  1962. Show_Item_Text_End
    : Q. F" ^* J( T  _4 T; y
  1963. STX PPU_Cur, {7 t# V+ L5 O! l* B/ K9 o- A# I
  1964. RTS
    4 p# z7 _- V) {2 w. E* ~4 R  F
  1965. 0 m; {* O3 ^: K* H
  1966. ;==================================================7 _1 V8 i# Y5 m) `% h/ i3 x% T1 Z
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    + N) r; ^7 B! D" s" S4 |) u
  1968. STA <Data_Buf
    1 F: R! K- C$ m/ |/ r1 m/ n% z
  1969. LDA #$00
    * r1 W8 x; S3 j
  1970. Get_Page_Index_Calc. n5 K2 Z$ V) X& ~$ F/ d7 F  M. n
  1971. CLC+ A: m" n# }# f. L  \, v4 ^
  1972. ADC #PAGE_SIZE' w) R. C4 M- f/ j) U
  1973. CMP <Data_Buf
    / V! }6 p' R  z( N, ^6 v
  1974. BCC Get_Page_Index_Calc. K# E2 C9 h' ?
  1975. BEQ Get_Page_Index_Calc_End8 K8 L8 d" @  X" ]
  1976. SEC
    0 x/ }0 V7 o0 E: b: w
  1977. SBC #PAGE_SIZE
    ; Y4 @8 _5 r, I
  1978. Get_Page_Index_Calc_End
    7 @% ]! j. q, y1 }9 z; G8 z
  1979. STA <Data_Buf$ u+ ^+ o( o6 R9 y- ~3 ~$ C& H6 \
  1980. Get_Page_Index_Cnt
    % v4 {) x2 ~6 {
  1981. LDA #PAGE_SIZE! E$ E4 t! j$ H! ?6 ]8 T6 [
  1982. STA Data_Cnt# y; r! L( j0 l; ]5 H

  1983. 4 F& |0 R; J% S3 G
  1984. LDA <Data_Buf
    ( y: `8 C0 i/ |+ P1 H
  1985. CLC0 j! `, w/ v$ [
  1986. ADC #PAGE_SIZE
    . n( m$ U. A3 n( t/ _9 z3 x9 b
  1987. CMP #ITEM_MAX_SIZE7 `4 u7 h' _7 M$ [3 o
  1988. BCC Get_Page_Index_Cnt_End* R% U! P+ C% v9 P2 m, X7 `
  1989. ( \; X' T2 b2 Q6 X  `5 ?
  1990. LDA #ITEM_MAX_SIZE
    9 X. j- `+ t4 _2 @' X: H
  1991. SEC9 y: ~; ^5 K% a  \- q3 k& h) f* v
  1992. SBC <Data_Buf9 e! C2 y  l& {& j" W7 W  C% g
  1993. STA <Data_Cnt* u, J" Y( l' A- f- j* i

  1994. ( b" \" o  Q% S
  1995. Get_Page_Index_Cnt_End
    6 M( Y$ T3 w6 m! m$ j( T6 m
  1996. RTS9 n4 c2 U- E6 C. L
  1997. 2 n# j4 T% P+ P$ ~' z' b
  1998. ;==================================================9 O' \) ?( j* \0 d) [* K
  1999. Get_Last_Page_Start_Index
    & V8 k; H3 Z, P; c/ g1 _- U+ n) v
  2000. LDA <Music_Item_Last1 V8 C' u; z+ B' B
  2001. JSR Get_Page_Start_Index
    * H4 ]# |2 Y% ?6 n4 o( _" X
  2002. LDA Data_Buf
    7 @: v6 v0 x8 r
  2003. STA Page_Last* j9 w, }8 x% l. F; I
  2004. STA Page_Last_Index
    / |/ R7 y2 d, P9 y& Y3 j/ N. q
  2005. LDA Data_Cnt0 X* _# J- p; f% p( u; a* ?
  2006. STA Page_Last_Cnt
    & p' t) Y0 F+ ^  g4 }, W6 r
  2007. RTS
    + [6 f4 E: J  E
  2008. - T& I( v7 O' r& a/ I. G
  2009. ;==================================================' Q  I, q" p9 L/ f5 b0 A
  2010. Get_Cur_Page_Start_Index
    + e3 `5 i2 H, S% V3 H/ V! C. V/ ?
  2011. LDA <Music_Item_Cur
    8 k, }! @4 W$ R, V
  2012. JSR Get_Page_Start_Index
    7 b' ~! v) k; S* y+ _
  2013. LDA Data_Buf
    , e" M  S1 _; f9 L
  2014. STA Page_Cur' c2 X# }9 N6 q4 o/ u/ T+ z
  2015. STA Page_Cur_Index
    8 v, d& e9 W- G/ x
  2016. LDA Data_Cnt6 D0 L) z. u' U9 K8 K6 \
  2017. STA Page_Cur_Cnt# J3 p5 u* w6 M9 c! Z# @1 {
  2018. RTS
    : c+ P2 T2 n2 s# N+ G' T
  2019. 5 _3 T1 l: J3 e
  2020. ;==================================================1 I' i* F* B. f7 p- P+ Y
  2021. Show_Page_Text;显示页文本7 Q2 x0 |6 U, Q0 i" x1 Q  Y" w
  2022. LDA <Text_Disable_Flag
      p" n$ K. b3 j; j8 v
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    ( V7 V0 e4 h4 b8 H3 E- j& V! w  l
  2024. STA <Text_Disable_Flag1 c' `  Q) I# K* f( q' y* J

  2025. - J4 {) j; {$ H
  2026. JSR Get_Last_Page_Start_Index
      s8 N' _" u+ E  o
  2027. JSR Get_Cur_Page_Start_Index
    6 }- o9 r9 H# O0 {8 I, r
  2028. 2 v9 V+ S0 j9 W
  2029. Show_Page_Text_Set
    3 U1 N/ V& Z4 H5 `9 ]! ^/ Y
  2030. ; \, g. X: g' Q
  2031. Clear_Page_Last_Item;清理上一页# b* G. s" m6 ~9 ~7 c3 I
  2032. LDA Page_Last_Cnt7 r  W% r/ R2 T1 O) C
  2033. BEQ Clear_Page_Last_Item_End
    0 H$ w" X& M+ h7 O0 ?' M) T$ U
  2034. JSR Clear_Item_Text5 q; |1 e. w! d' ^: q- N
  2035. INC Page_Last& v$ d9 W( n! E) y0 o4 y/ o/ {% \
  2036. DEC Page_Last_Cnt, K( b% a% k& F1 H. h6 [
  2037. Clear_Page_Last_Item_End
    + I0 P8 y' k: I0 \# {
  2038. 4 o  m% V: r* w' o6 i
  2039. Show_Page_Cur_Item;显示当前页' X8 C4 H. u  c0 _" g6 U1 X5 ~4 B+ ^
  2040. LDA Page_Cur_Cnt
    ; g% f; ^1 M  m0 T# ?; ^
  2041. BEQ Show_Page_Cur_Item_End
    ; V8 t% a' x8 W
  2042. JSR Show_Item_Text
    , k3 h$ O- v0 f7 B% y
  2043. INC Page_Cur
    ; E8 ?; E2 n- M  X
  2044. DEC Page_Cur_Cnt8 T9 ?/ \5 H/ I
  2045. Show_Page_Cur_Item_End
    4 T9 d% {! Z. G; a5 l; J* T% i

  2046. # m4 h6 X) m8 p4 p
  2047. INC <Time_Wait_Cnt
    # D  {- v. P# `* G
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作- T, Z' G6 {; w' C2 f) K, e1 \  O
  2049. LDA <Time_Wait_Cnt
    + c+ A% M0 i, S/ P
  2050. BNE Show_Page_Text_Set_Wait% R# J. s) i0 a! U+ g: G8 C7 V

  2051. 8 \- F2 [* `& K
  2052. LDA Page_Last_Cnt' z% [7 L) c8 z
  2053. ORA Page_Cur_Cnt
    ( _1 J& A& g* _$ B" I+ u
  2054. BNE Show_Page_Text_Set
    ' G0 r" t, ^5 G7 d
  2055. LDA <Text_Disable_Flag8 K' \1 f9 P5 M
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
      J% ]1 J6 L& {% u
  2057. STA <Text_Disable_Flag  @* c: F' t& G6 L7 w/ z: k" ^
  2058. RTS( I7 K! f1 }! f' ^# U6 t  G
  2059. 3 f: W6 m$ u; c4 B4 U: z
  2060. ;==================================================" _+ _8 c9 D  X6 A, }7 {7 m
  2061. Last_Item;上一项
    + `* M" \: p! U& p( g) o
  2062. JSR Clear_Last_Track_Name
    % _- I  A# y5 e7 v" d
  2063. JSR Disable_Text_Draw5 N  H2 Y5 m4 W% X0 G
  2064. 3 c" x& o% _6 I1 v$ g( w
  2065. LDA <Music_Item_Cur
    # P# z$ N6 z0 y8 R% d- b
  2066. STA <Music_Item_Last
    " @5 ]# u% [9 Q: z3 f% w

  2067. 2 D1 j) S( n$ @2 B, I' a5 X4 T* x! h
  2068. JSR Get_Last_Page_Start_Index3 n+ x& W! Q, ^9 d! X* p4 ?0 S
  2069. - L* |/ ^; g/ L" O6 R+ J/ q& N
  2070. LDA #$00
    6 x" @* s# P4 ]) e9 E
  2071. STA Data_Buf; k& g1 X5 {4 E
  2072.   I% S0 K8 E! V, r& W+ L' _
  2073. LDA <Page_Last
      @1 {: R1 R; q' I$ J, ]* s. ?
  2074. CMP <Music_Item_Cur/ L3 l$ {& n) N; R* R1 @: u3 [
  2075. BNE Last_Item_Begin
    6 P) E  A+ s! E& c2 ^

  2076. * p9 ^& `8 _( C. s! p; m
  2077. LDA #$01
    8 E  l" R4 X; }) K9 Q3 E, R
  2078. STA Data_Buf6 H$ u2 r' c' q" @' g: R+ w6 O
  2079. Last_Item_Begin
    . a: u1 h8 o: g$ @3 g6 W7 [
  2080. LDA <Music_Item_Cur8 T+ n& M3 j: f. y* c
  2081. BNE Last_Item_Set
    & k+ ^; b4 K- p4 v0 A! P- D
  2082. LDA #ITEM_MAX_INDEX + 1' i0 e+ m# E6 {" E
  2083. STA <Music_Item_Cur5 n  V  h% ^& Y- Z+ o$ [
  2084. 0 J! {5 E! U( z" w- K, ?+ q: B
  2085. Last_Item_Set8 y4 w8 A* c; V" ]1 @6 a9 {
  2086. DEC <Music_Item_Cur
    % C/ V2 j1 @$ w/ U) T+ B
  2087. LDA <Music_Item_Cur
    : ?: u6 `4 E/ y7 d# z9 l' e0 r( O
  2088. JSR Reset_Current_Music
    0 n- W* M; M9 C, f' k3 O5 v$ j* Q* V  z
  2089. ; t  _# r4 U6 B; [
  2090. Last_Item_Play
    + C) `, ?; ~2 e* o, Z" u
  2091. LDA Data_Buf
    - c9 k; y. }( D5 V0 m1 g
  2092. BEQ Last_Item_End
    ( d) B0 P0 `5 B. a1 E" t/ H3 j
  2093. JSR Show_Page_Text
    . G" c3 O- V  e/ c; w
  2094. Last_Item_End2 E( f# c/ v2 }& m% x9 j, K
  2095. RTS; ]. J, w& m: T( C

  2096. 2 L- j( H1 v# j7 M* b; ]' O
  2097. ;==================================================' C* D9 L3 d) ]# J
  2098. Next_Item;下一项1 |0 l2 G% `! I$ u, D. A* w
  2099. JSR Clear_Last_Track_Name
    . L8 X$ z7 p" D$ V4 I2 ]9 f2 b  d
  2100. JSR Disable_Text_Draw
    # Z, h) a5 x' J

  2101. ' E) ]" g3 N0 O. h! _, R
  2102. LDA <Music_Item_Cur. g' I* a. [2 U! W
  2103. STA <Music_Item_Last% p9 w) I. Q) w4 ?
  2104. 8 r/ q) |8 r+ Z: I4 p
  2105. JSR Get_Last_Page_Start_Index
    9 N0 ?; R* ?- V
  2106. 9 N& c+ b) J4 l; W: U7 e
  2107. LDA #$00
    : @8 u9 S& I8 G8 N0 m! M
  2108. STA Data_Buf6 h- M& s- b# C( S2 E' }/ u/ P

  2109. / |: ^! L. R/ s) Z+ F
  2110. LDA <Page_Last4 b- K) y) R' a7 J
  2111. CLC
    0 T9 ^* P1 n. P
  2112. ADC <Page_Last_Cnt
    & O9 E( p7 |' y( S. g) b, q9 ~
  2113. SEC
    ) a: l( T0 s) n  I, e+ {" r( z
  2114. SBC #$01
    . G4 O( ~# Q# _9 N6 }9 t. G% f
  2115. CMP <Music_Item_Cur1 j* i6 h9 w$ v% I
  2116. BNE Next_Item_Begin4 l# e1 K" I9 ?# O

  2117. $ Z& q0 h" n; P2 a. u" V5 S
  2118. LDA #$01" h* D) p4 ]4 V5 k) K
  2119. STA Data_Buf8 Y' z9 y: \. A% v% V" s
  2120. Next_Item_Begin- ~  u0 M# @2 c
  2121. LDA <Music_Item_Cur
    7 m7 p# |" A+ E' I# U
  2122. CMP #ITEM_MAX_INDEX
    2 ?% B) |' h$ z- j
  2123. BCC Next_Item_Set/ a. m* ]/ x* ^& g  U8 _$ G
  2124. LDA #$FF
    & _- F- V/ F9 Y! a/ u: V
  2125. STA <Music_Item_Cur6 ^  y* r5 v+ ~% h! f. @
  2126. Next_Item_Set5 I$ H( T/ I8 C  [# I- j* w, c
  2127. INC <Music_Item_Cur
    5 {/ @! L$ g( F; I  M% j" \
  2128. LDA <Music_Item_Cur' L. f, k* A/ y. k
  2129. LDA <Music_Item_Cur
    ! G5 `) a8 {% K. w( E" ~
  2130. JSR Reset_Current_Music
    # F+ A( u6 l& z7 i! `# [
  2131. Next_Item_Play
    ! V( }% a) x( Q& N
  2132. LDA Data_Buf
    . _4 k% O* y$ E) H; s; ^% U( O
  2133. BEQ Next_Item_End
    4 _& c  i# R4 E& S% n2 o8 o
  2134. JSR Show_Page_Text0 [: u2 R1 m4 G" |% k9 `' g
  2135. Next_Item_End8 z% N7 X; t. ~% N+ `& t
  2136. RTS; B# [) \/ i- k2 {  `
  2137. 6 D  Q& o* A. ]! g9 w' }
  2138. ;==================================================
    ; g+ g+ b: `! `0 G2 D
  2139. Last_Page;上一页8 W# K7 y  J7 M% E5 U) Y: e
  2140. RTS
    & E$ T! l' M7 l8 u

  2141. / J% }4 o: ~# x. D. w
  2142. ;==================================================
    ) ^0 [: N) B% U, q* u' K
  2143. Next_Page;下一页/ L6 r' ]9 c  v. T& x& a5 W9 \* q
  2144. LDA #PAGE_MAX_INDEX1 ]( v7 o5 X8 i0 ^
  2145. CMP #$01
    1 x: ]% r, X% f; @" @9 G
  2146. BEQ Next_Page_End
      @) L: j' l: d9 A" z$ Q  `
  2147. : ^, S, v+ R& `
  2148. LDA <Music_Item_Cur7 ]# G7 ~9 C2 r! |. I- ^
  2149. STA <Music_Item_Last
    % H; o$ l: A0 t! L; [6 K0 K, C
  2150. % `! [; ?- a8 r) ?0 N, B
  2151. JSR Get_Last_Page_Start_Index
    6 ^% d$ X3 p8 x& Q; f

  2152. ( _; }, [! {' T% ?
  2153. LDA <Page_Last_Index6 u! _# x1 a6 K$ n/ @
  2154. CMP #PAGE_MAX_INDEX3 p3 ]7 _6 u: I8 @
  2155. BCS Next_Page_In_End_Page
    4 y5 h; C: k0 N. U
  2156. . ?% h  @# [5 `3 C6 X' {
  2157. Next_Page_Not_End_Page;不是在最后一页
    ( ]' c- W7 z' f- P& |% ]
  2158. LDA <Music_Item_Cur
    5 S, O- D, u$ e$ H$ a8 i
  2159. CLC
    . o2 ]1 N% q8 Z9 L
  2160. ADC #PAGE_SIZE7 r+ {- R' q: O0 H5 N6 f/ v, W
  2161. CMP #ITEM_MAX_SIZE
      Y; W, I" b9 e
  2162. BCC Next_Page_Not_End_Page_Less$ Y5 _: g) W% l, e3 Q% ?# B
  2163. LDA <Music_Item_Cur
    : t. X  Y4 i' ~
  2164. SEC
    3 ]* N8 A4 H% B: ^9 E  C
  2165. SBC <Page_Last_Index3 x. z* w6 v% `7 f
  2166. CLC- Z8 R1 h$ F4 n. d* ?; ?  p0 _
  2167. ADC #PAGE_MAX_INDEX
    . H1 g6 ]. K& T
  2168. CMP #ITEM_MAX_SIZE
    8 |2 ], Z; d3 m4 U
  2169. BCC Next_Page_Not_End_Page_Less; X8 t. U: _6 D% M: B/ h
  2170. LDA #ITEM_MAX_INDEX
    2 c+ f, t, U6 b6 d4 u9 K
  2171. Next_Page_Not_End_Page_Less% q# s! G% R7 L' W1 r' E' p" J; S
  2172. STA <Music_Item_Cur
    8 S- n5 H4 C' o% P$ m0 j
  2173. JMP Next_Page_Reset
    6 P+ @' k+ L6 [3 P1 @5 g4 I( q
  2174. . w$ y0 O! Q$ L5 c
  2175. Next_Page_In_End_Page;在最后一页4 e3 q8 g3 `5 o$ e% t) R* O
  2176. LDA <Music_Item_Cur
    ) E7 ~1 c+ Z1 {
  2177. SEC& {) k- b3 `& {( f
  2178. SBC <Page_Last_Index
    2 e- i! L5 j! j" n8 }, T! P) q3 L
  2179. STA <Music_Item_Cur
    & Y8 L0 R! m+ O$ v

  2180. * J4 R! h# S" G- ]8 w
  2181. Next_Page_Reset
    ( \& P$ m& k9 v. u4 g0 X
  2182. LDA <Music_Item_Cur+ z* ^- h, J+ r2 ~* {
  2183. JSR Reset_Current_Music: q7 \( i( G0 q/ c
  2184. JSR Show_Page_Text$ d' i# {) _" z4 D& a
  2185. Next_Page_End
    ( J$ _1 u4 y+ m* s- T" R
  2186. RTS
    ) s  j& b, Y( W8 _- r% @% r! X
  2187. ) y; U+ y( X% A" c5 {( \
  2188. ;==================================================) N, Y1 t$ w" i2 @, L' }% M
  2189. Disable_Text_Draw;禁用音乐条刷新
    ! i) m; V- x7 Q+ b! J
  2190. LDA <Text_Disable_Flag
    ( m& w# ~4 }  M& N
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME, z6 }( Z9 G* Y2 D
  2192. STA <Text_Disable_Flag
    $ E+ \. n$ }+ B- _
  2193. RTS* w& U& B3 s6 c& C  O
  2194. 4 z2 K0 d2 x1 X- f7 W( D
  2195. ;==================================================/ B# w3 k0 R& J  `8 S9 Y) h
  2196. Clear_Last_Track_Name;清除上次曲目名! b2 O% c( o  l$ d* J
  2197. LDX <Music_Item_Cur
    ' D. A1 Z0 C) x
  2198. LDA <Music_Cur,X8 U* a& f+ V! O, k4 ]
  2199. .IF Track_Name_Pos
    + w/ N- J1 d& }. l
  2200. JSR Clear_Track_Info: @1 x+ f. G! o- C% [) s6 J
  2201. .ENDIF
    ( Z& L1 s& R3 a4 B. |3 P
  2202. RTS
    & p6 H. M  q* }8 S9 }/ v, ?' c# C) R

  2203. : u5 u, k# @$ m% J3 m' {$ Q% T
  2204. ;==================================================) l. n8 e0 i3 o0 V7 f! o
  2205. Reset_Current_Music;重设当前曲目
    / _6 a& {8 Q3 n  S: y
  2206. & G# ~! |: V) C1 K
  2207. ;写入当前总曲目  s6 _( v! F8 b4 U- ^2 c! {: P: [
  2208. JSR Set_Sound_Total7 |& p" Z+ M. d7 K$ |  \
  2209. LDX <Music_Item_Cur: ]' c8 z; v4 g6 _0 `& e

  2210. % G2 J( X. n" m; l
  2211. LDA #$00
    ! r* s$ H, b3 ?% G
  2212. STA <Music_Last6 e  B2 F' N8 D; I% w

  2213. 4 T, R2 v. M( {& h, \! P
  2214. JSR Sound_Reset_Proc( X9 f6 w; D: r7 N
  2215. JSR Music_Show
    & I$ R: Y' f- q2 N! h$ P
  2216. RTS
    ' t1 U% Q7 G+ h9 e

  2217. : l! b: B  B2 P& ]# |, ^
  2218. ;==================================================
    $ I) K1 {: E+ |# D
  2219. Music_Song_Stop;音乐停止- J/ V, @) m0 X4 d  ^
  2220. LDA #$01
    4 d* o( A( C6 T% z) D2 `" J8 e# d
  2221. STA <Music_Stop_State5 n* T' q: o8 Q" |, k+ L8 J( q
  2222. JSR Music_Bar_ReSet
    $ |4 R$ F& p, h
  2223. JSR Time_ReSet* C; k; F" R& c# `8 k
  2224. JSR Sound_Data_Clear$ L0 r9 Q, o5 a1 {2 ?
  2225. JSR Music_State_Show& F6 |- B0 Z+ K4 J6 |$ d
  2226. RTS9 M6 O6 m' c( `3 I- E

  2227. - k' q/ v6 m1 \: j
  2228. ;==================================================$ M, Z4 q$ @4 S( n/ N
  2229. Music_Song_Play;音乐播放
    7 R. z) f, a9 e& J: I( Q
  2230. LDA #$00
    - S% G% q4 `) r; d# `- B7 ^. K4 {' ?8 B
  2231. STA <Music_Stop_State$ q" d3 o: Y6 q- g. L8 p/ Q
  2232. LDX <Music_Item_Cur
    ) N) n6 t0 B' l5 e+ [
  2233. LDA <Music_Cur,X7 |- ^  Q& \, i1 a
  2234. JSR Sound_Init_Proc
    % S# w, j% {  ~* r3 H
  2235. RTS
    ) h7 \2 ?* g) x
  2236. & Q; n6 B6 X0 d! E2 p: W
  2237. ;==================================================
    $ n( o& {0 R! K, I
  2238. Music_Song_Last_10;上10曲) s; R) s1 X  d, h4 ?& z: Y* o
  2239. JSR Clear_Last_Track_Name
    6 q3 q( C# _9 g! T9 i+ q0 z
  2240. JSR Disable_Text_Draw) g& s) O% `) O. n% D4 ^4 F' r+ w5 K
  2241. LDX <Music_Item_Cur, B) x% p- A4 g3 [+ t
  2242. JSR Set_Sound_Total% ?5 X2 G1 P+ O* O' g
  2243. LDA <Music_Cur,X5 K# g' Z4 t% k7 j
  2244. SEC% @- R! {( O) V! Y
  2245. SBC #10
    . _& n' K2 W6 D" T. z4 @3 y
  2246. BCS Music_Song_Last_10_Set2 g, a9 C* n$ K. D
  2247. LDA #$00
    / G5 x. |1 f4 w5 B
  2248. Music_Song_Last_10_Set1 F  N$ K4 w" e; R0 r7 C2 ?/ w
  2249. STA <Music_Cur,X' Z8 m3 e0 Z3 v, R; }" t; T
  2250. JSR Sound_Reset_Proc% U! ?1 t6 [5 W/ P; X1 h. f
  2251. JSR Music_Show  }! W0 i1 W+ ^& n9 G
  2252. Music_Song_Last_10_End
    / m* j% r7 |5 }& \0 G! N0 k4 j5 |: ~
  2253. RTS& e# n7 s% `: _( L0 `
  2254. 1 E7 n! T% r, i6 W3 V' U) |
  2255. ;==================================================
    - P, \  f. R0 g5 `' ^3 H. O& q8 i
  2256. Music_Song_Next_10;下10曲
    % O2 I& }! R, f- J
  2257. JSR Clear_Last_Track_Name
    ' G7 s& A0 t9 H2 D
  2258. JSR Disable_Text_Draw. q: b! r7 {, O$ i$ o& b( e
  2259. LDX <Music_Item_Cur
    3 u1 B- ~* k8 H) ?4 J- Q
  2260. JSR Set_Sound_Total
    & Q! b1 P% p) X# ]) m
  2261. LDA <Music_Cur,X" N' u+ F4 `! h/ m. B) l8 i
  2262. CLC- l: J1 x* T4 P) s
  2263. ADC #10) {! B( i9 H# h. B3 j, }. c$ a
  2264. CMP Music_Total
    * @; P, t- ?  y0 n  J
  2265. BCC Music_Song_Next_10_Set3 X/ Q5 ~! N0 t% @: t6 C. w6 R
  2266. LDA Music_Total
    6 v7 v9 `; ]5 I& T1 L* R0 ~: C
  2267. Music_Song_Next_10_Set9 L. Y8 R1 b4 d/ f* p. v1 f2 s
  2268. STA <Music_Cur,X
    * U2 {. V" g; t2 T% w
  2269. JSR Sound_Reset_Proc
    & u' @* n  k6 t% X- z  \
  2270. JSR Music_Show# C  k0 z% S) l$ s9 P1 J$ O( I% }
  2271. Music_Song_Next_10_End* W" |" W, Y- D2 g# f* x8 R
  2272. RTS" G( D- _+ [8 G% O

  2273. ' d$ d; c2 [( ^9 S  z/ B
  2274. ;==================================================8 _. l7 F6 B. k# o
  2275. Music_Song_Last;上一曲
    3 n5 m* F' w  j2 x
  2276. JSR Clear_Last_Track_Name
    8 i7 N2 `& ^- L
  2277. JSR Disable_Text_Draw
    ' I: w. D0 M; F8 y8 s# ^
  2278. LDX <Music_Item_Cur+ ~/ [, h: {& }/ R1 R
  2279. JSR Set_Sound_Total
    9 v- `4 m% D9 q1 B9 o
  2280. LDA <Music_Cur,X
    2 R7 x; h. t3 X) a
  2281. BEQ Music_Song_Last_Set6 w* V  Y9 m- l
  2282. DEC <Music_Cur,X  \+ K1 m( |0 N
  2283. Music_Song_Last_Set
      l7 V  i3 \; S2 u# ]6 J
  2284. JSR Sound_Reset_Proc4 i! D3 Z6 D- j
  2285. JSR Music_Show5 e' f& p; ~& W" Q  f
  2286. Music_Song_Last_End) H8 }" t& g* [: X: n8 z5 K
  2287. RTS3 `. C0 [0 y& G7 v% @5 @

  2288. + C7 {9 D0 g' m6 ^- U* ^! J% c( E  w
  2289. ;==================================================
    7 e# w+ u4 L' J# R, S4 V4 D
  2290. Music_Song_Next;下一曲
    ( K9 _/ m% P* z' K/ @) N  }
  2291. JSR Clear_Last_Track_Name1 c, x" w" z, n' Z2 K
  2292. JSR Disable_Text_Draw
    * D4 J* h! m8 r( b8 V7 k. j$ h
  2293. LDX <Music_Item_Cur
    2 }" \  G. O& ~$ K
  2294. JSR Set_Sound_Total9 b6 _" T. F( t6 m+ n
  2295. LDA <Music_Cur,X* s4 X5 T/ f" e# d- o" F
  2296. CMP Music_Total1 ]- L" y+ l$ a+ c5 y  o6 n% t, v0 v
  2297. BCS Music_Song_Next_Set8 U: D# u+ }# f$ \2 ?2 Y
  2298. INC <Music_Cur,X$ f2 N. |9 H" C; W* y, i* o
  2299. Music_Song_Next_Set' o$ F4 c2 \  d$ G# l# u
  2300. JSR Sound_Reset_Proc
    $ _5 p2 |, t7 P4 o2 A4 s5 L# q! q
  2301. JSR Music_Show
    " j5 R7 L$ I! I, N6 o
  2302. Music_Song_Next_End
    , X# N; d  k4 T
  2303. RTS2 k- M" A8 \  y+ K: s

  2304.   z2 n( h9 W7 N* z3 s
  2305. ;==================================================. x  E: A/ A( X3 D; ?9 u1 v
  2306. Change_Select_Item;改变当前选择项
    " E! v8 l. N" n6 ?% z
  2307. ;--------------------------------------------------
    * C7 _2 m  n9 ?2 ?, s* v' z  c) d
  2308. Change_Select_Stop_Play_Item;停止/播放8 i" B* e% m% \0 E# V0 c
  2309. LDA <Key_Once
    8 y' |% E/ t# ]: M1 l. _$ b4 T2 m& [) n
  2310. CMP #$10$ z4 M: M' j0 R% i6 l* V( u. d& F
  2311. BNE Change_Select_Last_Item4 h4 F& {/ t. _* N0 M
  2312. LDA <Music_Stop_State! ~/ ?+ ?3 V; b0 a4 U% F
  2313. BNE Change_Select_Play
    7 ~  z2 `. S! o# L4 d" b/ M& w& M
  2314. JSR Music_Song_Stop
    ) h( Q* V( P' |8 B- B
  2315. LDA <Music_Stop_State
    + Q8 L8 @# E7 {9 }6 b" Z) s
  2316. RTS* d8 m3 g/ n6 g1 ~9 n! j! \% x7 b

  2317. " D( J% ~* W0 m3 `; {0 _. D$ f
  2318. Change_Select_Play
    $ K+ F/ ]" f. [- @0 i) v6 E1 S% U
  2319. JSR Music_Song_Play2 G+ l  ~# y# T% U
  2320. RTS" L' x- c4 u0 s* w0 H" H  x4 t

  2321. / d9 y) Y( c6 b- P4 }. o
  2322. ;--------------------------------------------------- T$ t  {8 @) a  S2 p0 q
  2323. Change_Select_Last_Item;上一个专辑
    + z5 m5 x3 H7 B
  2324. LDA <Text_Disable_Flag' n9 z/ Z$ O9 H' s& h) u+ G( k6 p
  2325. AND #TEXT_DISABLE_ITEM; L# N1 j4 ?8 Y. l% j" F
  2326. BNE Change_Select_Item_End$ h# w! p/ g% z$ ^8 W; I$ C
  2327. LDA <Key_Once
    + w5 m3 O  U) {. }
  2328. CMP #$087 z/ L6 V6 @( h6 }7 ]% J( }
  2329. BNE Change_Select_Next_Item% \: s5 A( v7 x. Y: i
  2330. JSR Last_Item3 W; J; ^  B* Z, P0 s
  2331. ;--------------------------------------------------( Q$ X; w# h* Z7 p7 f9 _% V
  2332. Change_Select_Next_Item;下一个专辑
    , z) X) B/ W! F3 L' I2 u
  2333. LDA <Key_Once
    9 [/ f5 G+ r9 p, ?; p
  2334. CMP #$04$ }4 i' n; e  {( Z) {- X+ Q
  2335. BNE Change_Select_Last_10! \" B6 e2 Q6 S! H5 L' Y. I
  2336. JSR Next_Item
    ( U: o/ R' f9 S6 }+ q5 C
  2337. LDA <Music_Item_Cur8 u  _6 q$ w+ {9 g7 U8 G: |
  2338. JSR Get_Page_Start_Index% b* n; R* y8 R% X( m
  2339. ;--------------------------------------------------
    2 u) x* f* Q; p  G" l. Z5 Q
  2340. Change_Select_Last_10;前10曲
    6 ]( a% o$ u# G: e
  2341. LDA <Key_Once, z. h( T7 R0 I/ c
  2342. CMP #$40
    4 ~) ^  p# @1 H* i  M8 \5 l
  2343. BNE Change_Select_Next_10
    # o. `! K( ~7 i  t% U+ w, j+ r! e/ @
  2344. JSR Music_Song_Last_10
    " ~4 U7 R1 f  _; f
  2345. ;--------------------------------------------------) Y+ b2 z. }* P3 |$ ^  k( h
  2346. Change_Select_Next_10;后10曲: s  P6 ], H& |# w
  2347. LDA <Key_Once
    4 R$ y: V+ i8 U% A
  2348. CMP #$809 o3 K3 E3 A3 N" N6 {$ E' C. ?# a0 c
  2349. BNE Change_Select_Last
    ! _9 t3 X/ G; G( O% L/ ~4 L
  2350. JSR Music_Song_Next_10
    , [+ b/ x6 y2 z1 |" @' d
  2351. ;--------------------------------------------------
    7 ]: O/ e, F) _3 A2 Y
  2352. Change_Select_Last;上一曲( T, T% m7 v  [6 c8 A+ H) I0 p
  2353. LDA <Key_Once/ z: U( _) e/ u: _; G7 a+ z
  2354. CMP #$02
    8 u  }4 C( I0 p! A1 j0 Q" \- R" k1 @4 F
  2355. BNE Change_Select_Next, s7 \0 Q$ O, \- l! v5 o% J
  2356. JSR Music_Song_Last
    , S+ T3 ?9 l- s; m
  2357. ;--------------------------------------------------
    ! g$ e6 \4 d* E* P8 o  J
  2358. Change_Select_Next;下一曲: T, I" f4 h- g# G
  2359. LDA <Key_Once# W. S) g. {. l0 R+ P) V
  2360. CMP #$017 o8 V" m$ b4 Y, o# f
  2361. BNE Change_Page_Next
    9 y, s: ]% h+ ~' N: z
  2362. JSR Music_Song_Next
    ! s5 h+ i8 \  U
  2363. ;--------------------------------------------------
    ( o! R$ s8 K! I  k0 E7 w
  2364. Change_Page_Next;下一页
    . [: y$ q6 G) x" I: Y: Y7 d
  2365. LDA <Key_Once. C1 o* p* S  I$ o( k+ H3 D9 c
  2366. CMP #$20  S0 M7 v) m* l8 h
  2367. BNE Change_Select_Item_End( `3 H6 }' H& f' h% i  }2 a8 v
  2368. JSR Next_Page: C6 a( b- Z/ Y5 e% u
  2369. ;--------------------------------------------------: O! V6 a6 L# a  `
  2370. Change_Select_Item_End( p6 A2 x6 g7 W: L2 l. O
  2371. RTS
    3 O+ C% |" p3 T3 l
  2372. 3 f/ f% x; z, ~% ^/ H3 w  c1 b4 f
  2373. ;==================================================
    1 v! U- R* ^! F
  2374. Show_Arrow;显示箭头光标
    1 U0 I! Y- q. y" O9 Y* o# y) T
  2375. LDA <Music_Item_Cur
    3 f# g( I$ v/ `* A% [3 t3 @( \
  2376. JSR Get_Page_Start_Index+ j/ Z5 L: Y& x; N5 B, T
  2377. LDA #$00
    6 ?& q  W1 I! o: d/ D- q. d
  2378. STA PPU_OAM_ADDR
    0 ^& I& L. b/ a& `  B- I" x
  2379. LDA <Music_Item_Cur
    # {+ w' `( V1 T  D. z
  2380. SEC; u! F2 {7 I" `) `( ]
  2381. SBC <Data_Buf1 d) H2 P  z# w/ F% j, }! |* S
  2382. ASL A( [6 g& E- t8 ~4 _; R# i) I
  2383. ASL A
    & |6 `5 ~& W& N" X
  2384. ASL A
    0 y- m) S5 H/ c% T6 g3 m: j0 @
  2385. ASL A
    7 x/ s5 {! r7 m
  2386. CLC0 W/ A" r- e: P- G9 g
  2387. ADC #ARROW_Y_OFFSET' a% x* J1 ?0 S2 ~; ?. T8 S
  2388. STA OAM_TEMP_ADDR + $00
    1 M# q# c; y8 H: k" h1 L1 `6 h
  2389. ;STA PPU_OAM_DATA
    5 j6 Z1 Z( G) a. e
  2390. LDA #$1F
    ' K! c. S7 l+ Y5 f# l
  2391. STA OAM_TEMP_ADDR + $01
    7 h6 r/ _7 h, _! [3 D
  2392. ;STA PPU_OAM_DATA8 ]* H  \+ k) [, z, s
  2393. LDA #$003 M5 L  r0 f& |5 x/ v
  2394. STA OAM_TEMP_ADDR + $02! k- E" z# |  d8 R6 Z+ W- _
  2395. ;STA PPU_OAM_DATA
    / @* c2 D) ]2 h4 y1 W
  2396. LDA #ARROW_X_OFFSET. ?! k* M* E6 e. q. Z+ Z# G
  2397. STA OAM_TEMP_ADDR + $03# E4 k' g6 E3 _0 O9 H9 }; b# F  q. t
  2398. ;STA PPU_OAM_DATA+ F) u4 [% z+ q- I
  2399. RTS) A- n- z3 ]/ u# D2 }9 }! ~0 K' X- y
  2400. 8 j3 ^. }& }/ K1 A: t
  2401. ;--------------------------------------------------
    0 [( r8 e/ `  D, @
  2402. ;命名表数据
    $ ^# x% l' s' O( t( E  ~4 }; t7 \
  2403. Palette_Attributes: _1 Z  A& l. m- P4 L
  2404. .IF SOUND_BAR_SHOW_ENABLE
    - ?9 Z7 {" M4 [( X% ~1 ]
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
      r3 R2 ^+ L4 U4 r7 Q& g; ?
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55& B2 l, U# h1 k2 H/ d- G
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    : p, p# ?, I* i0 P
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA. D& f: a  s% [' W9 Q! @9 f. C
  2409. .ELSE5 X$ D1 {; m3 d+ G, j, Q' j& u
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$555 r! \* D' L8 u! p  y# e/ b
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$559 {& m: G9 H) \) t6 ~1 ?
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    ( l) G# @" }, z3 V5 H0 {
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA3 J! e  r* G$ L0 u' t6 ]1 O
  2414. .ENDIF
    ) O" ?# E8 b6 a# Y+ r+ k
  2415. 5 s& i7 m0 H# K" R! _4 E+ z+ ^
  2416. ;--------------------------------------------------
    " E. O- W1 @& `0 Y
  2417. ;调色板数据
    & g/ k5 x0 k6 C4 K: Z
  2418. Palette_Data4 K6 {* K, ?9 s5 B" D1 I+ z0 {
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F- g, T1 E9 N. m$ {8 @  L
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    / V2 }/ A# z' ~  C/ o$ D

  2421. ! @1 f2 C7 D* `* \2 a" S
  2422. ;--------------------------------------------------
    ) C. M8 T5 D6 |: {- i0 \9 _1 u2 P
  2423. Static_Text_Data
    3 O4 C3 @0 x/ K  y* G4 ^
  2424. .WORD Static_Text_Caption_Data' E7 ?$ [3 ~. d2 L, q
  2425. .WORD Static_Text_Author_Data/ q1 e" X  i2 B! G2 P
  2426. .WORD Static_Text_Date_Data
    + M  ]& y1 S: H+ y7 _8 x# q
  2427. Static_Text_Data_End
    6 X; O, M" r0 D4 \" p" e
  2428. - Y2 ^2 r& Z' B  B. ]+ K+ x
  2429. ;--------------------------------------------------' V- O% C* [" \
  2430. Static_Text_Pos
    $ h  @8 _- S/ u( ]: l
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    7 v( p0 ]; V, m5 |2 d! L$ }+ |
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    ! Y: u" l+ C  `. X- t7 Q5 W) j2 t3 ~
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)8 H0 ?5 K7 b$ x+ t, P
  2434. Static_Text_Pos_End
    6 J' f3 J% C7 Z5 M
  2435. 1 i5 _6 r) j/ d6 X
  2436. ;--------------------------------------------------
    7 d( E& u: u' L9 o& g# o$ ?
  2437. Music_State_Stop) [6 N+ a  ^! g* O0 y
  2438. .IF SOUND_BAR_SHOW_ENABLE
    ' ]+ ?0 O: G! Q$ z, U; L
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00, h+ c) _) v( \
  2440. ELSE7 _: A; O# v$ [% T3 p7 }
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    + [5 v! T. }. Q6 V- u8 C! j
  2442. .ENDIF
    0 b$ r3 N7 t, x0 ~. x5 j# s
  2443. Music_State_Play
    9 E# H: i4 o# J9 H2 w
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    9 K, V, k& e  B; c# J: d7 k+ K% u
  2445. 1 T4 I, W/ l( z! g/ K
  2446. ;--------------------------------------------------" O* n5 a. e  @0 t9 \
  2447. Sound_Bar_Text_Data;声音类型文本9 t+ L3 R5 s, [
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"# v4 s* l: P8 N, B/ ?& C
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    7 {" q8 M% X0 F
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"- [5 I' l$ ^, C+ P
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    + d0 @, l6 ^. ?. ?- D. q7 z+ z
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00; \8 y3 [+ d! S

  2453. 6 ~* H5 a2 u/ r! U# Q
  2454. .IF Track_Name_Pos
    0 M" Z& U* p6 M  M

  2455. % q+ b: A7 n: n1 Y0 i: J
  2456. ;--------------------------------------------------
    + {0 B' O* L' U; N. u' o
  2457. Track_Name_Addr_00;曲目名地址索引$ N, ^2 T, z" k3 r. x5 w
  2458. .WORD Trackr_00_01
    / I5 T3 `* G/ M& M! l( M

  2459. 6 e( r5 K% D, o2 o
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"2 m- K5 G" S& D, r" S
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"5 {) c- D0 R3 k( l) H
  2462. : ?9 l% Q$ u- J, A5 F! ^4 n; x
  2463. ;--------------------------------------------------
    4 Q4 I( K( h6 D. Z3 Q5 t, R$ j9 z
  2464. Track_Name_Addr_01;曲目名地址索引) ^$ b9 q+ b: N- X3 Z
  2465. .WORD Trackr_01_01! p; m) C$ r7 P& h. e
  2466. ; A9 z2 `' s5 y/ I
  2467. ;==================================================
    1 M3 t, }  U! J/ h
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    4 {3 x+ g4 G6 _4 u: ], ^
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    % @9 f% u6 i( v! p

  2470. 1 `; [' A& T/ v: n. U
  2471. ;==================================================9 a- {  Z* E# @( n$ b, J" H- _
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引0 G0 B4 E: c$ ?" i3 X5 |6 c: L
  2473. .WORD Track_Name_Addr_00
    3 ~7 b' D9 M. E9 t6 y# W9 b
  2474. .WORD Track_Name_Addr_01
    ) y% h0 }, E. M8 j
  2475. .WORD Track_Name_Addr_018 C. k& w( K1 ^2 p3 e) X# M- B* u7 A

  2476. ( n' P* C7 \" U0 h
  2477. .ENDIF
    % w. s( B/ l! E5 A6 K, P3 B+ L: z

  2478. 4 F1 E# a- s5 v! S. `' m1 [
  2479. ;--------------------------------------------------
    & s$ H, X! r" g+ Y; g: j) N; n
  2480. Static_Text_Caption_Data;静态文本数据
    ; [9 l- C7 A- n4 s9 N( Q* |
  2481. .DB 16" g; Q  H2 n0 W- \4 b" q8 n
  2482. .DB "FC MUSIC 12 IN 1"+ b, [' F' ~, K6 f3 I8 D8 C
  2483. Static_Text_Author_Data
    9 E: B% S+ D2 T5 K3 b5 ?$ [
  2484. .DB 25: {9 H( `, s$ y, q+ P
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    % b. G# t( n7 ^5 q2 A  S# I/ h
  2486. Static_Text_Date_Data2 A4 n& P7 X0 U" K# G
  2487. .DB 10: v0 d, U) a- j; r% j' L
  2488. .DB "2023.07.23"
    $ W7 M  h# b8 {7 p$ j6 P
  2489. # k- E/ Y  h( r! ?# U; u
  2490. ;==================================================; g# R& Z, C/ T3 m  L
  2491. Music_Collection_Name               ;专辑名间接索引
    ; a8 n0 g; ~+ b2 x8 Q
  2492. .DW Music_Collection_Name_00# l1 C/ U3 o" [2 Z) L
  2493. .DW Music_Collection_Name_01
    ' ~2 V- C2 c  q
  2494. .DW Music_Collection_Name_02
    - @8 E; G6 X* U# Y& T+ e% |
  2495. .DW Music_Collection_Name_03
    ' l+ }$ x9 ?  E7 o; P5 h; P; j2 O
  2496. .DW Music_Collection_Name_04  p& C, z- H+ A/ {
  2497. .DW Music_Collection_Name_05! Y- z; q; W* g) `, C" k4 D
  2498. .DW Music_Collection_Name_061 U' G2 @+ L7 j' M, F
  2499. .DW Music_Collection_Name_074 ?- S' S) ~8 j) E. o( e
  2500. .DW Music_Collection_Name_08
    3 s9 }  T7 @8 b. k$ }+ v& {
  2501. .DW Music_Collection_Name_09
    1 P7 o& r, p0 T3 t
  2502. .DW Music_Collection_Name_10
    & u0 x* a' R6 U6 O* m
  2503. .DW Music_Collection_Name_116 |% v7 h5 _. }4 D% Q  N* Z* g0 |

  2504. ( t4 s. u& o; t% D" a# t% B4 e5 a
  2505. ;==================================================3 a: \9 y. _5 Q3 ^
  2506. Music_Collection_Name_00            ;专辑名文本数据$ @5 s  C+ u) c" N% r+ V% ^, _& N
  2507. .DB 11,"1.RAF WORLD"" X& w" _  w. x8 N
  2508. Music_Collection_Name_01
    $ y! ^# j; `' d3 K6 T
  2509. .DB 15,"2.FINAL MISSION"1 ?9 H. n; Y% |
  2510. Music_Collection_Name_02! u+ W9 o; ~& k
  2511. .DB 06,"3.KAGE"
    2 M; W0 ~; @9 b7 ]: w
  2512. Music_Collection_Name_03( b  k% K$ I) ]0 A
  2513. .DB 16,"4.DOUBLE DRAGON"1 @) p$ e; N6 Y4 V
  2514. Music_Collection_Name_048 f( @& m$ k3 Y* [% a  H
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    + r8 y$ M8 s7 A4 l" y
  2516. Music_Collection_Name_05' C1 C1 J( y3 s( R: F
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    % \5 {# C- x% R% |$ Z: {% c
  2518. Music_Collection_Name_06
    5 V9 v7 C5 R; a) k
  2519. .DB 09,"7.ROCKMAN") `! f: r  n- v; ~9 c; r/ D
  2520. Music_Collection_Name_07
    3 J. m3 U/ r6 C2 A6 p+ o# v
  2521. .DB 12,"8.ROCKMAN 2"7 |7 R$ r+ R/ A1 {1 Q' M3 _& l" U
  2522. Music_Collection_Name_08
    7 Y" x: s0 q. y! t( ~( ?1 F' U
  2523. .DB 12,"9.ROCKMAN 3"8 G* T& n* @) ^+ G% t
  2524. Music_Collection_Name_09
    ' I$ m" J& _' y9 r# L! ~/ {# [
  2525. .DB 12,"10.ROCKMAN 4": N, v. N# Y. E7 B
  2526. Music_Collection_Name_10( d8 n5 e" B- }; A& o9 W( d, ^( \
  2527. .DB 12,"11.ROCKMAN 5"' A# U! Z' M' Z
  2528. Music_Collection_Name_11  x' _( X9 |( {- u# A$ Q3 _" `
  2529. .DB 12,"12.ROCKMAN 6"
    % D/ j. i! n, c4 e1 ]: K& {7 N

  2530. - N2 c% \3 ]5 s# K; m5 k
  2531. ;==================================================
    * U1 R- C0 f) S; H. g6 d
  2532. Track_Name_Addr_Flag                ;显示曲目名标记) U8 N+ _. f* ~4 k& [
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0! i2 B' T  Y/ f) R. h3 @
  2534. * p1 l: R5 s& T; S, U( \
  2535. ;==================================================5 W% M2 N& d0 v* |, h
  2536. Item_Pos_Data                         ;光标箭头位置
    3 L6 J( M# T: z* G* j0 @
  2537. .WORD ITEM_SHOW_POS  B% V  R' G- d* B; e" Z1 v& L: u) ~' Y
  2538. .WORD ITEM_SHOW_POS + $0040
    + [4 ^0 T: g1 l0 [
  2539. .WORD ITEM_SHOW_POS + $0080
    " d& |- v! D3 J2 P
  2540. .WORD ITEM_SHOW_POS + $00C0% m0 ^% h3 z0 h9 W3 M+ _
  2541. .WORD ITEM_SHOW_POS + $0100/ k9 d9 a3 q, U
  2542. .WORD ITEM_SHOW_POS + $0140) N0 o; S; j, y
  2543. . h8 O* }- [: N
  2544. ;==================================================. H/ u% A! d! V$ l
  2545. Sound_Init_Port                 ;音乐初始化入口地址; `/ s9 c' \9 H2 Z6 k! s
  2546. .DW $BFC8
    : r* Y$ X+ J" g  a
  2547. .DW $D7F01 P8 _6 q" O7 x" n0 @1 K
  2548. .DW $9FC0/ A2 h. M$ J$ J) ?3 h. T( _+ k% t
  2549. .DW $BF70
    : \2 [+ X! m. N. V; h9 R5 S5 `% y
  2550. .DW $8003
    / C. R3 q% |! |+ O
  2551. .DW $BF30
    9 @# t, C( M5 G5 s
  2552. .DW $9003( i8 F* B; x. r) E1 k" B* n) Q
  2553. .DW $8003; U. R: q* }# R: a
  2554. .DW $8003
    % U- W* j  L0 U5 u2 @0 Q1 E3 V
  2555. .DW $8003
      G+ n; c, q* o0 y% Z3 s
  2556. .DW $8003& O; \) H+ A1 C8 ?% r4 N# q
  2557. .DW $8003
    3 P6 _5 f  }, M0 s5 m
  2558. # M" y  @  _! ?' a! s8 k8 y% G
  2559. ;==================================================
      y: A7 D4 X& X" h1 u
  2560. Sound_Play_Port                   ;音乐播放入口地址
      R' c# R0 S' i$ A9 z8 @& ?
  2561. .DW $8000
    6 n1 p% {. z8 r
  2562. .DW $8001
    * [7 _; L* j# N
  2563. .DW $A000
    ! w3 a' ~! A$ R: n1 [; D' B' c) v
  2564. .DW $8003
    / T8 g( w- n" ?5 p
  2565. .DW $8000
    5 U+ M5 U: C: i% e8 W
  2566. .DW $8003
    ! P- f8 b2 n' n5 V( j5 |2 _9 [
  2567. .DW $9000
    0 j& E2 E/ R+ K# A  B
  2568. .DW $80006 h+ f7 x9 j9 s& S" G* Q
  2569. .DW $80003 y" K: f; D5 l/ u6 r
  2570. .DW $8000) A. E7 ~" u7 B" s& U
  2571. .DW $8000
    9 e5 v' W# ~. s0 R8 ?
  2572. .DW $8000
      l7 Q- a7 o2 [/ x* p! [: ^
  2573. / [( d/ X! y/ e8 y, E) L
  2574. ;==================================================
    ; O8 n, H( p3 c0 t
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    & u9 y- s+ J' p7 Y
  2576. .DW $0000
    $ G2 O" x- Q9 M# D! ^
  2577. .DW $0000" T4 A" ^. U7 N( S) _* m0 {
  2578. .DW $00005 ]# \( j+ m" t4 |
  2579. .DW $00005 e6 w# G+ [' \6 |) I: ^" k
  2580. .DW $0000
    ; I# N' n1 t, k& F5 M" a; E; m
  2581. .DW $0000$ }' A  O( B! g( R& v
  2582. .DW $0000
    - d  F+ i( l! |
  2583. .DW $0000; a6 j: ?8 t4 U1 X
  2584. .DW $0000
    9 s( W7 ?, h' H
  2585. .DW $0000* Q5 u: z! L) s9 z* ^1 A: U
  2586. .DW $0000- ]& b0 f: C& R8 m5 t! t
  2587. .DW $00006 N: ~$ _; ?1 D0 c& u  I9 t& x: _
  2588. 6 _5 |/ k1 o# i& {% L
  2589. ;==================================================
    # X; a# a$ ]% Y2 Q7 S
  2590. Sound_Total_Port                          ;曲目总数; l! y2 p* W" ^9 I6 e  @: e7 |
  2591. .DB 38
    3 S' k( x- `% J9 L0 W% }
  2592. .DB 338 y! @8 ^" f) n4 z  \. @  P
  2593. .DB 497 ^2 Y; |% K5 K
  2594. .DB 41
    7 g" P: M5 r8 K9 X% z' B2 {
  2595. .DB 83
    3 g4 X$ ~4 I1 D" x" Y$ m
  2596. .DB 70& v% c  ~5 x4 ?( h
  2597. .DB 50/ \$ d# g% r% T/ T9 N' b4 v6 Y
  2598. .DB 67
    & V% L$ x! ?% f
  2599. .DB 571 V7 D8 f8 Z9 O+ w
  2600. .DB 711 \9 G- M9 y& W2 e6 v& \. ^
  2601. .DB 76
    $ F( a% A0 {1 a4 I' N) _+ h
  2602. .DB 102
    / q' q! |* Y1 e- w: f7 O

  2603. 5 v4 h+ d' m. X% h' C& y
  2604. ;==================================================( u3 @: Q* X. A- O6 K2 L
  2605. Sound_Start_Port                      ;起始播放曲目
    * r  R0 a) {* j: X5 ^/ @: ?
  2606. .DB 00
    1 C$ S7 @9 W4 G0 W$ K3 {
  2607. .DB 001 E! U& E: P) C$ z, X8 p: d: ^
  2608. .DB 00, t; K; P2 @# S% b
  2609. .DB 00# @: s+ ]. T0 E. M, c4 Y; g
  2610. .DB 00- Z8 r% I3 c5 i$ O8 V% t$ N& b( h3 O2 z6 x
  2611. .DB 00; ]: Y# M1 a$ n- P
  2612. .DB 00
    8 q  E6 T/ G6 w4 S5 [1 a, q) T
  2613. .DB 00
    * V7 x* X% K9 D9 l7 S) V
  2614. .DB 00
    ( f' e9 U: v1 ^) H# F0 Q* u; z
  2615. .DB 00$ ^$ T6 O$ o) [8 [
  2616. .DB 003 H4 v  D0 O/ [1 b4 C" U
  2617. .DB 00
    ; J! [* W+ E4 E' _; @+ c

  2618. ( b+ F2 X" g& z
  2619. ;==================================================
    , o$ ]- ^9 T* Z& L) q
  2620. Sound_Bank_8000                      ;专辑bank_80008 k2 m: w2 ?; q4 y" _( D8 }
  2621. .DB $10# u. h; Q6 V- p( s6 T
  2622. .DB $12* I( X5 k6 S+ U! J+ v2 [6 K4 D
  2623. .DB $14
    ( T" `. p- H6 x
  2624. .DB $162 c, h: `) `- v( M. O" K- y
  2625. .DB $18
    % @. b. C5 V) Y' N
  2626. .DB $1A0 g1 r6 q7 X; l6 \0 g

  2627. % {' ]: H! i- E) o- h
  2628. .DB $00
    , d/ b; `/ o8 U. {% {! y% i
  2629. .DB $02$ j9 E6 Q. s) j! Y7 o7 E# v* ^+ d  u
  2630. .DB $0D/ ?, V' `: E! `8 y
  2631. .DB $04
    $ W% H7 f. Q2 S$ {) v
  2632. .DB $07
      s( Q: X2 q8 D
  2633. .DB $0A- m& C$ u% p4 o. E% k' U

  2634. % B: x' P& d. @6 Z" n: c' f
  2635. ( j7 I( G% g* D! o
  2636. ;==================================================/ Q8 ]! D( x5 c9 H) J* O5 M
  2637. Sound_Bank_A000                      ;专辑bank_A000' }$ g% z9 W& n* U4 p
  2638. .DB $113 w: p! w8 U  q7 \6 P
  2639. .DB $13
    - q) R* [, ]2 w! y# E
  2640. .DB $15/ ^/ U0 l1 G9 l7 U
  2641. .DB $17
    + o* l& u7 e$ f+ W0 n! M  E0 E2 W& F
  2642. .DB $19
    / P. U# W# D3 t
  2643. .DB $1B: K/ S4 \  C8 W
  2644. . G6 N$ q7 ]5 r2 i
  2645. .DB $01
    9 T( o4 d# f; j- S3 s* l
  2646. .DB $03( @, b- G5 g  r6 l4 S
  2647. .DB $0E$ M! r3 v! X0 j% ^( `$ \; \
  2648. .DB $054 b/ J3 D2 e  L  L- M- _( w
  2649. .DB $08) }( u( H" t( v/ m# T7 X
  2650. .DB $0B
    9 T; w+ M1 K5 S8 k
  2651. ' R. W: g: {+ p! w  M( Q' D+ A

  2652. 3 ^% P- G& {' a  i+ z7 v) x
  2653. ;==================================================0 ~6 m( W0 }( h" }/ h6 B
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    ! {6 s& W' a: V3 R$ L- b: k2 p
  2655. .ORG RESET_ADDR, ~5 S* D& X* V) z
  2656. ' [) {* M* ]9 z
  2657. ;==================================================
    3 s* A: v4 ^: T
  2658. Switch_Bank_8000;切换bank到8000-9FFF0 l$ I4 |- g6 }4 W/ ]
  2659. PHA
    $ Q! _5 ~: r+ R
  2660. LDA #$06
    6 e1 {% N2 N% g9 K
  2661. STA MMC3_BANK_CTRL
    ! C- f8 e0 r3 C; o0 g: A
  2662. PLA
    3 l- V0 L- w! _5 D8 O) Y/ l; |
  2663. STA MMC3_BANK_DATA4 K, r+ v  |" m8 @
  2664. RTS, M4 x  J& J1 ]6 m

  2665. " _* Y5 n% F/ p3 W4 [' g/ l, e9 r
  2666. ;==================================================
    " W1 k5 G1 a7 C! N! b, C' U4 x
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    ( c6 q8 g3 n7 i
  2668. PHA
    ; l2 k8 J4 \! D! k5 m4 K' u5 m: W. q
  2669. LDA #$071 T7 `5 i% Q2 p% w
  2670. STA MMC3_BANK_CTRL
    , t2 p$ l0 [$ e2 m: ~) |
  2671. PLA
    " B8 W5 J( f, b) O  y' u
  2672. STA MMC3_BANK_DATA' k% r! m( T, O7 O
  2673. RTS% y4 i3 l8 p5 z3 D
  2674. 3 H1 r9 A, v4 b9 g) o
  2675. ;==================================================. _5 ]7 N5 K: V  a& }: K
  2676. Switch_Main_Bank;切到主程序bank2 P0 k& _2 E: v' q) M: u" @6 u, K4 @
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    $ w, v* f/ _0 |& S9 U
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank2 `& W. s* ^, N
  2679. RTS( Z/ u- x( O! n# [* P7 F5 N

  2680. / t4 u! `4 O: e5 |8 r) K
  2681. ;==================================================
    4 e9 \  C" j$ I& F
  2682. Sound_Reset;音乐重设(如果有的话)5 J! x& b. W3 Y- }
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    9 y# E$ u! O" D* F+ |7 z0 D+ ]
  2684. JSR JSR_Addr_Op        ;执行音乐重置! Z: b, {; \" n6 `, L1 f9 _
  2685. JSR Switch_Main_Bank   ;切回主程序
      J1 _0 D, D/ N( _6 [% G3 k, q( l% z
  2686. RTS
    5 ]' }: x/ T, X! o9 e' B( l

  2687. ( I3 Z8 ~1 X5 d  V
  2688. ;==================================================  V; ?8 r# Z& @+ T
  2689. Switch_Music_Bank;切换音乐bank
    , Q% C  u2 s8 f& A1 @( n
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号: k7 {4 Q0 X4 k" C
  2691. LDA <Music_Bank_8000+ k1 L4 t: c: v( n
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank0 Z2 [5 @7 ?3 N! B# r0 G' k7 J
  2693. LDA <Music_Bank_A000
    $ m4 p) g! V2 ^$ \7 C6 ]3 S( Q
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    % i( B0 h& X" y- B7 p) q- l
  2695. RTS7 S/ |% j) z+ o- \
  2696. 5 I$ O. D; r& ]5 @* h) _3 y
  2697. ;==================================================
    * W3 p$ N0 P) D& \
  2698. Sound_Init;音乐初始化
    : p. ~  P  B0 G8 K6 `; V
  2699. PHA3 U3 J! {$ Z8 E: F
  2700. JSR Switch_Music_Bank  ;切换到音乐bank) x0 M. J( `  n, B3 V( Q3 n
  2701. PLA. T+ A+ ?* y' |
  2702. JSR JSR_Addr_Op        ;执行音乐初始化! a7 P! E) j8 [8 M: S- _( z* ?
  2703. JSR Switch_Main_Bank   ;切回主程序5 G& {" P+ |) x% |& o3 l& g
  2704. RTS* q( R* C9 w; G, v  g# U
  2705. + c: E( o8 }/ o$ }3 L' W) ~8 Z
  2706. ;==================================================* ~% E; Y! m1 V% ~
  2707. Sound_Play;音乐播放6 w# p6 I$ P$ ]- s
  2708. JSR Switch_Music_Bank  ;切换到音乐bank+ B' }2 w6 E  K
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    % S& Q* _1 m$ t% A* i% m
  2710. JSR Switch_Main_Bank   ;切回主程序, H4 a* C: B4 _
  2711. RTS+ }' r8 \6 w; B! r' Q( L$ V& F

  2712. - `8 r) `3 ~) j' w9 m  K$ P9 f
  2713. ;==================================================
    / V: h% f) z, X9 W, ]) ^
  2714. MainLoop;死循环
    0 a# e5 D6 i/ T8 k. O! v. o
  2715. JMP MainLoop3 i, O; V4 i9 Q7 p  m0 t! ~

  2716. / ~$ ]+ F: s3 C& G3 X7 l& `
  2717. IRQ_SUBPROCESS_JMP = 0
    $ _: u2 C6 _& E# J2 }
  2718. / _% W; w$ G/ o" {$ g
  2719. .IF IRQ_SUBPROCESS_JMP
    ! n) o! R/ U! T' c
  2720. ;==================================================
    & q+ ]# u4 ~5 J4 M# [9 }. u
  2721. IRQ_Process_0;IRQ处理过程0
    . B3 w+ k1 {( L% _
  2722.   J5 f4 ~2 a' T  I
  2723. ;15条扫描线后触发IRQ2 v7 {: B' x1 ?- X/ B$ u) b: o  [+ D5 x
  2724. LDA #15" }6 {( u, B2 W7 l; W5 V2 \9 J/ j
  2725. STA MMC3_IRQ_LATCH" {% _; L4 z: W; D

  2726. ) k3 t" d  V3 h* @
  2727. ;设置屏幕滚动! V! K: K! G7 [( P, p
  2728. LDA <Scroll_H
    ; `/ m7 S5 B4 t
  2729. STA PPU_SCROLL2 o: Y, E: @( @3 `' |
  2730. STA PPU_SCROLL
    $ K6 k+ B9 i& }

  2731. 7 j2 c" q3 h# C% ^) c
  2732. IRQ_Process_0_End1 S6 b3 Y( u# }  q( y5 G
  2733. INC <IRQ_Process_Index
    ' Y" H6 k  N) c
  2734. JMP IrqProgramEnd5 e# H( y* X( h$ m

  2735. : i+ Q: ~% l& t2 M0 ^. f+ l
  2736. ;==================================================
    ( L; U- P! i5 e2 w% n
  2737. IRQ_Process_1;IRQ处理过程1
    % L. o6 k$ N2 h
  2738. ) }* S( r9 T6 ?* y" P
  2739. LDA #55
    / P* [5 ~. Q/ u* E
  2740. STA MMC3_IRQ_LATCH
    , |' ?8 k3 i! N$ j& g) g3 s
  2741. & p- S1 Z3 P6 p3 C' v2 y
  2742. ;设置屏幕滚动# s% L1 N' M) h6 s6 N
  2743. LDA #$00
    7 H* N  C2 ~$ ~- ~/ M6 I1 n. k
  2744. STA PPU_SCROLL+ c! E! [' F  i9 Z
  2745. STA PPU_SCROLL  ?$ N  k. ^5 @3 ~; H9 u
  2746. 6 `7 ]" `' M9 }. @, @1 }
  2747. INC <IRQ_Process_Index
    5 }$ Q% l, n0 j; F4 M
  2748. JMP IrqProgramEnd9 W) P  K2 m& E0 z

  2749. - V7 E/ ~( K; x( ?/ B. }
  2750. ;==================================================
    * o3 S7 k+ q1 c: V9 q9 r8 R7 v: y
  2751. IRQ_Process_2;IRQ处理过程2
      J/ q6 L) A6 [! W
  2752. . R! F( j! t+ r
  2753. LDA #15
    0 b! t* a- p" N  F& x, h
  2754. STA MMC3_IRQ_LATCH. k* I" D' W) m8 d. r7 s' i8 R

  2755. $ ]. y8 a9 k6 C4 `
  2756. ;设置屏幕滚动  R1 P7 C2 X& ~9 r
  2757. LDA #$00
    * W% c+ X& I$ o
  2758. SEC) Q) j9 d* F+ y4 L5 p
  2759. SBC <Scroll_H
    1 _& q0 h' m& L
  2760. STA PPU_SCROLL1 [2 m/ E! u0 _9 M# {( H% P
  2761. STA PPU_SCROLL
    2 \6 y! r& u+ D
  2762. 2 {6 b' _! B5 r8 N$ ^$ u8 \& \' S
  2763. INC <IRQ_Process_Index, @% K# O0 X! D6 N) b1 g6 `9 t. x9 ]
  2764. JMP IrqProgramEnd6 ?. d  u* {2 @, s
  2765.   L0 Y2 `0 Z5 F, W2 J0 z
  2766. ;==================================================
    ( [2 a: K2 |3 x9 ]& N3 y7 q6 h" i
  2767. IRQ_Process_3;IRQ处理过程33 l. A6 }3 L. C; D* d

  2768. / w* g: M; G) j/ h3 @
  2769. ;设置屏幕滚动9 Y$ X0 G9 @. l: I
  2770. LDA <Scroll_H
    ) {- X- K/ ]& `( P8 D3 n1 S
  2771. STA PPU_SCROLL. z( f! J$ L4 s9 R
  2772. STA PPU_SCROLL. k* s* m( n# j5 g" \
  2773. 8 v% E9 P) b6 M% @4 w* c- u/ H
  2774. ;禁用IRQ! `" y) T, h- i7 }" G$ {" V/ g
  2775. STA MMC3_IRQ_DISABLE- P$ w+ E! t% e, T: o- z' w
  2776. JMP IrqProgramEnd
    8 C  @* ?9 i9 C3 J& `9 I: s

  2777. 0 W6 {- v* H4 L$ X& ^. C
  2778. IrqProcessAddr
    + z2 w2 a' L: |1 R- o2 `
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3# t0 T% b* m. O, V6 v
  2780. ; W' y6 h! m! d, q* n
  2781. .ENDIF
    ( C0 `- d' y4 v8 ?. B# [; N

  2782. ' F7 e- C5 ~& m: [! ]
  2783. ;==================================================
    6 {9 r, `. j# O
  2784. ;IRQ滚动模式常量
    5 Q2 j8 D: @; S0 R8 w
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动% ^0 G3 l  Q8 t( D% \
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    8 X5 W8 W5 `/ {% Z& p! |
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动, O" E! k! H6 D. E8 m8 u" {

  2788. 6 A0 `' c$ M' ?2 @4 N
  2789. ;IRQ扫描线数据
    7 T: C0 w: T3 s! T& Z
  2790. IRQ_Scanline_Data
    $ t% Y( U4 ~' L: l' O8 Q  G
  2791. .DB 8/ S' i8 Q( f' l
  2792. .DB 548 r2 p' @+ }& l, ]) \
  2793. .DB 8! [- C- W0 t/ l
  2794. .DB 00 ;关闭IRQ) M/ w( x( p/ G' [# C7 Q

  2795. 9 O8 Z- U6 e; e1 h7 x
  2796. ;IRQ滚动控制模式
    : s+ W1 ?: ]+ l3 O2 [
  2797. IRQ_Scanline_Mode2 c9 n3 E3 l& v
  2798. .DB IRQ_SCROLL_MODE_ZERO
    9 z1 _- }+ n, b8 i, a
  2799. .DB IRQ_SCROLL_MODE_ZERO) ]6 W& A7 f$ c; m3 |6 }" h( Y# _# P
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    % O9 I" n% ~, k1 j
  2801. .DB IRQ_SCROLL_MODE_LEFT4 q% p" h1 D* z" b  f
  2802. % _0 Y. A! y8 b; ^6 y& y& u- y5 k
  2803. ;==================================================
    + u! W" g4 z' N# B
  2804. ;IRQ处理
    . i% x* ?! ^3 _  U
  2805. IRQ_Process% u& j  C6 R& R/ E
  2806. LDX <IRQ_Process_Index; m0 b" w! m: H% b4 M( m3 E
  2807. LDA IRQ_Scanline_Data,X, E* V7 [( r9 m& `
  2808. BNE IRQ_Process_Latch
    : h0 @4 z* e2 u9 B8 p8 @7 e8 {1 i  b: A
  2809. IRQ_Process_Disable;禁用IRQ
    ( p" o; k" B# Z. D3 J
  2810. STA MMC3_IRQ_DISABLE( ?0 h- p! e0 G" `0 R3 E
  2811. STA IRQ_Process_Index
    ; J* f# h9 N6 |  N! k3 a6 @/ L( X
  2812. BEQ IRQ_Process_Scroll/ }5 }9 J% ~1 y  Q; i' C
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线" {: t# G- O  [: k) y/ P
  2814. STA MMC3_IRQ_LATCH+ `9 k5 ?) H9 v! C; C
  2815. INC <IRQ_Process_Index  _7 X5 X/ X  _8 j' e9 k3 _
  2816. IRQ_Process_Scroll;IRQ滚动控制' G* {4 ]1 @; j  F8 I4 E# ^
  2817. LDA IRQ_Scanline_Mode,X
    - j' U* X& _) N" y( I. z3 f
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    & s; [0 o; P5 d9 S% i
  2819. BEQ IRQ_Process_Scroll_Left9 j! T& b( }& T4 p0 z: p/ M
  2820. CMP #IRQ_SCROLL_MODE_RIGHT! I$ N9 _) v6 G5 d
  2821. BEQ IRQ_Process_Scroll_Right* n! N. b9 i  G3 T
  2822. IRQ_Process_Scroll_Zero;不滚动/ H, e! [' Y, }
  2823. LDA #$00
    2 t5 b, v5 I. k: h( y" l2 a, J
  2824. STA PPU_SCROLL& b0 Z* l: @+ r$ u9 M5 A5 A0 X
  2825. STA PPU_SCROLL7 Z% X- k$ R" O% T0 x. r+ O4 _
  2826. RTS9 Z$ ^" z& V2 ?# f5 k
  2827. IRQ_Process_Scroll_Left;向左滚动
    + v2 N( _  h/ k4 ~  z# f
  2828. LDA <Scroll_H/ S6 t2 q' b/ |6 e3 i; V1 o
  2829. STA PPU_SCROLL( z9 p/ u0 O/ w& r5 q
  2830. STA PPU_SCROLL
    9 g# i5 P) t' u
  2831. RTS
    9 s' E4 o! t$ O0 j. s7 j
  2832. IRQ_Process_Scroll_Right;向右滚动
    , M6 e  f! E5 B- O; |. {
  2833. LDA #$00
    4 u" r& \8 c" k- [5 Z
  2834. SEC
    0 R2 T7 o  u. c
  2835. SBC <Scroll_H
    0 w- _5 v' N7 |0 g+ g% O
  2836. STA PPU_SCROLL4 T5 R3 @" R( d* B  a% R/ U
  2837. STA PPU_SCROLL1 S% i1 t7 Y' ]4 D' h
  2838. RTS' s3 M) f3 y0 V! w/ c
  2839. 1 O) e- L/ ~3 k0 V, Y; P7 u
  2840. ;==================================================
    3 U! R, x4 W% C1 N
  2841. NmiProgram;Nmi中断处理4 @3 y, h$ K  x5 s" ^
  2842. PHA1 W0 b+ I6 ?9 [( ~3 O  Z
  2843. TXA
    0 o+ R' F6 J# |" K3 m
  2844. PHA
    * v+ S  H* V- v3 i! z; W2 {' W/ O
  2845. TYA1 ^5 s) q: t  ^
  2846. PHA
    6 n; o# h- J7 z) r, Q2 }
  2847. 8 q+ v9 _' B( D  n
  2848. ;读取清除Vblank标志, 防止重复进入1 ?# T: B2 e) }$ w
  2849. BIT PPU_STATUS7 \) e' d* d& H, D0 K/ ?
  2850. & J& L: l7 x1 k7 V
  2851. ;切换主程序bank
    6 n1 D  e$ {0 u) l
  2852. JSR Switch_Main_Bank& n- I/ \4 Y$ Y
  2853. 3 f: Z3 L! O9 T9 j! A
  2854. ;Nmi处理: e8 o- k* u* \, D$ H2 E
  2855. JSR NmiProcess
    2 s7 h: o5 m3 a0 ^7 h! D2 c, ]8 N
  2856. 6 K  @1 y# K+ Y! l
  2857. Nmi_Proc_End
      N- |5 w& ~$ }+ S* f
  2858. PLA
    , f3 o1 ?; I: O0 n3 q
  2859. TAY& b. m3 ^& g. D: S
  2860. PLA' I& |+ g) G) U: |, Y8 n
  2861. TAX
      X2 L& t. w7 n2 z5 C0 ~) z% M! x
  2862. PLA
    - ~% Z: k- X& l
  2863. RTI
    $ B: S4 a- D. R& n" a* |

  2864. " L0 a) h6 W- n* Z  B4 G
  2865. ;==================================================% w' Q' A/ v- o/ V, ?
  2866. ResetProgram;重置中断处理* q, Y- l6 u+ Z7 r7 d- S/ [% Y* d
  2867. SEI
      Z' |/ u9 |; A* `
  2868. CLD* D- s6 |/ x9 b( M
  2869. LDA #$00
    6 z. ~( Q1 q4 K: V$ ?
  2870. STA PPU_CTRL
    ! h) C; }4 d2 e6 ^# Y6 c
  2871. STA PPU_MASK) M* F" K$ I, r" I2 e9 y

  2872. 7 `7 T* |/ B6 I! d. C* c' `0 ]* v% m
  2873. ;切换主程序bank9 p" u, I# w  p! S0 _( Q% @* f- Z
  2874. JSR Switch_Main_Bank3 O% U2 f- H2 C% \& I

  2875. 4 D" u( o$ q- J9 Q2 Y
  2876. ;程序处理开始# |% N  v- l4 B7 h8 }3 R
  2877. JMP ProgramBegin* [" G$ k) X' x5 O. X' I
  2878. 2 m/ N6 k" ]& Y
  2879. ;==================================================: a/ S" J  h" }* }
  2880. IrqProgram;Irq中断处理
    $ O# [: l5 L* z' T5 Z, {  u
  2881. PHA9 _* S( m' N- v0 ~, ^
  2882. TXA
    8 S9 }3 G& o# l3 i; x- v9 r" }
  2883. PHA
    3 L4 }9 C% w) ~- o, f! p9 O
  2884. TYA5 }+ ^4 f; |# J) `: t3 d. o/ s
  2885. PHA2 N$ Q( W" d# d8 M

  2886. - J5 C- T* s: n% q/ I$ d' J
  2887. ;关闭IRQ! [0 _6 d/ `1 V
  2888. STA MMC3_IRQ_DISABLE
    0 N3 h/ A' w$ M* N6 o3 t
  2889. + [& J# g  a) k9 C  C
  2890. ;允许下个IRQ触发
    % w% \! _6 c0 a
  2891. STA MMC3_IRQ_ENABLE% I3 ?* o( f  ^. l% A+ z2 ~

  2892. 0 p; k4 b7 _  T" d* G
  2893. .IF IRQ_SUBPROCESS_JMP. S8 N6 T% e) e! F7 U

  2894. 7 p/ c  g/ F, U" V+ G
  2895. ;执行IRQ过程4 x7 c6 I8 S* Y- Z' O' _
  2896. LDA <Data_L
    + D1 `% ~! K6 ^. a6 e0 c
  2897. PHA
    : V+ J1 t: U5 @2 A, Z- L8 {
  2898. LDA <Data_H3 w! Y7 z/ `: v- A+ y! ]8 }
  2899. PHA: T; R# P7 q/ F6 K  D9 K0 `
  2900. LDA <IRQ_Process_Index
      p) R, A7 X. B
  2901. ASL A
    5 Y* E* y  q" k" S" z
  2902. TAY2 O" J8 S; E# e- Q
  2903. LDA IrqProcessAddr,Y
    - }, s1 T4 O! O
  2904. STA <Data_L/ s7 j6 {) r7 W% M& j; b
  2905. INY& ?& U5 O) ^/ b8 R
  2906. LDA IrqProcessAddr,Y
    % c' l7 h7 \# k+ E
  2907. STA <Data_H/ `( H, n& l" Q; C# X- S! R
  2908. JMP [Data_L]$ |2 [) N* F3 T" M0 m6 s& t
  2909. * F; D4 C+ L% y
  2910. .ELSE
    / l! V4 `" z" o
  2911. 5 q/ k/ Z( C) c& m: v: _, E9 S
  2912. JSR IRQ_Process) Y- L3 Z4 q' w  B4 c  y1 v2 F' j
  2913. - [) L' f2 W/ F! z+ w2 D. N  I
  2914. .ENDIF
    ( d/ C  @+ b9 ]. ]

  2915. + P. G7 L/ G' p$ R
  2916. IrqProgramEnd2 ^3 M/ a1 A# i
  2917. .IF IRQ_SUBPROCESS_JMP
    * T( K6 s5 a4 D9 |* T
  2918. PLA
    / b5 F( j' L) Q; }/ Z* \! X. f
  2919. STA <Data_H# N1 Y+ [5 m( X# C3 Y# q- u
  2920. PLA
    8 `7 H5 p' ?5 Q
  2921. STA <Data_L- `/ u; r, k) ~
  2922. .ENDIF
    $ `+ G1 V# }8 J
  2923. PLA$ G$ p" Y1 T8 z& ~
  2924. TAY
    : d( C# f, K0 \7 y5 N
  2925. PLA
    / J* S4 S/ w% T9 ^  Z6 q
  2926. TAX
    4 h$ S% \0 R; d0 W  G, U5 C
  2927. PLA
    2 z' `' d: Z6 k; ^9 T6 f
  2928. RTI2 }9 Y% `% E9 Y# b
  2929. : u3 {! a) ~  }, c# W; i; S  O1 R
  2930. .ORG $FFFA
      \8 F  w, h% |
  2931. .WORD NmiProgram
    0 @" _- r' f1 [. R
  2932. .WORD ResetProgram
    2 Y, U( ~8 C( C9 j2 c
  2933. .WORD IrqProgram
    ' A5 a9 q0 ]: z" t* K( F
  2934. 8 P8 s: l1 n) p7 A  F
  2935. .BANK RESET_BANK & BANK_DATA_MASK5 j: R4 i$ D6 D( w* r( v8 D
  2936. .IF SOUND_BAR_SHOW_ENABLE
    ! y  n0 Z9 n# f
  2937. 3 t% b0 _) i+ s" K: G
  2938. .ORG $FE00
    * I% h- N: T0 T5 Z1 c1 r' p
  2939. PHA
    1 W! ^' x+ k& P/ C3 P3 j! Z
  2940. STY $07BA% }; l1 A: Y. f4 S
  2941. LDA #$8D1 j# ^( w5 b$ n# t9 X4 B6 f0 N6 j
  2942. STA $07BC
    , @: Q; F( v5 j# p0 C  A4 h
  2943. TYA
    + {. [2 t- m8 [
  2944. CLC7 X: {0 X7 K! Y
  2945. ADC #LOW(Sound_Bar)
      O% W1 `! P" C
  2946. STA $07BD7 i, V- j# f' g* n# L% C5 T
  2947. LDA #HIGH(Sound_Bar)3 i9 t( }, u- D' w* X9 \, g
  2948. STA $07BE4 z- n4 D" Z5 U5 {6 ]6 x0 w
  2949. LDA #$60
    + u- [. q/ @( V/ ]1 Y" B
  2950. STA $07BF: U# _. X% B) q5 u' }, n
  2951. PLA
    ! f6 R% x: }" T; Q
  2952. RTS7 `1 v. n/ J5 N9 z0 x+ i" X7 _

  2953. : g9 ?: K- v$ [& u" ]
  2954. .ORG $FE20. V# N7 B, ~) v9 J) k: p# U9 ~- T  S0 z
  2955. STA $07BA( z3 q# O. L$ n0 S+ A% x
  2956. CLC
    9 I+ Q" E6 H* G! E* D: r
  2957. ADC #LOW(Sound_Bar)
    ' b6 k2 N7 O8 i
  2958. STA $07BD: A8 A9 l: G$ S( z# `; ^% m; \
  2959. LDA #$8D. Z0 o3 P- Y5 I2 C& w
  2960. STA $07BC; a! F' E6 s- g* E& I" Y! X  r% O
  2961. LDA #HIGH(Sound_Bar)
    , N$ z4 W4 Y; _
  2962. STA $07BE& ^: i$ ]( q$ R' V0 H9 j
  2963. LDA #$60% H. ?# Z) n/ d* ?, [
  2964. STA $07BF9 d& ~: X3 d5 S5 o( G$ v3 }
  2965. RTS" V2 x# W- w0 X( k9 F
  2966. . q9 x/ G$ I# \1 y6 w- g
  2967. .ORG $FE40
    - C- m' G8 Y1 I1 C: |( i1 v
  2968. PHA7 Q2 M, p7 K4 _( k
  2969. STY $07F1
    $ e! N1 [! F9 m# H: w. t( z3 J
  2970. LDA #$8D
    - c/ ^* B1 ~# b1 Q4 b' |
  2971. STA $07F3
    $ |5 j: E/ L5 @# f. k) _
  2972. TYA6 m0 B) c2 L+ A: _
  2973. CLC# @- |) ]! w: O6 l# X5 Y
  2974. ADC #LOW(Sound_Bar)# h$ x, A. E$ S! F6 k- u# H0 W
  2975. STA $07F4
    $ G) j% P$ t. F! g
  2976. LDA #HIGH(Sound_Bar)2 a  }4 H; u' ~* w' o$ z
  2977. STA $07F5( |" b+ C6 l  f
  2978. LDA #$60; w, C3 z( n; p: S. z9 b
  2979. STA $07F6; k' |( b* E  l& ^9 x  f+ w7 `
  2980. PLA0 P6 n2 D6 S- r9 h* O/ L0 h6 k2 h
  2981. RTS
    1 [% I5 D) C  v" ]4 S5 V0 H

  2982. # e2 D$ Z6 z/ d& g* v' g- w
  2983. .ORG $FE60
    # J8 U, Q" f0 z1 q
  2984. STA $07F1' k+ }. [  F) ?% {
  2985. CLC. W- K7 \" Z! y" p' v9 x* H
  2986. ADC #LOW(Sound_Bar)
    5 X2 l- M4 ?' U) J
  2987. STA $07F4
      Y3 m" g3 {. }/ J8 R0 O  f
  2988. LDA #$8D- J( b+ R, F( E! @8 v! S3 c: i! B
  2989. STA $07F36 K; R4 o# A3 D& g! g+ R
  2990. LDA #HIGH(Sound_Bar)
    3 ?  @; }) h- V$ ~
  2991. STA $07F5# W* r4 H9 y3 O) u; `
  2992. LDA #$60
    & E3 ]# m% V2 n
  2993. STA $07F6: i: @' e7 g0 m, w( u, J
  2994. RTS
    5 C9 Z1 y: G) f7 W

  2995. " Q# J) Z- C7 J1 x3 \
  2996. .ORG $FF40
    0 D5 B' o7 F) v: v5 D  x
  2997. STA $40006 k/ N, z6 e6 o
  2998. STA Sound_Bar + $002 j7 s4 v! o6 i9 q3 M
  2999. RTS8 p/ y; ^, w) S, a3 p
  3000. 0 D( U$ I* q: s1 s
  3001. .ORG $FF48' o4 J1 C, ]' M( N
  3002. STA $4004  Q6 F+ k* ~, ]( _9 _4 k: _& u) `5 p
  3003. STA Sound_Bar + $04: m+ o" Y9 Q/ N* G2 i5 u; a
  3004. RTS$ s6 b5 x$ _% o
  3005. ( F6 A! g& N1 C$ j* Z! V
  3006. .ORG $FF505 i; z9 q" o; f
  3007. STA $4008
    ; }2 f: D# s( I5 s" J& ]& i' y1 d( s
  3008. STA Sound_Bar + $08
    # q4 G3 m* i& m3 `* C5 ]8 r9 T
  3009. RTS
    2 Z" t  m# P& T
  3010. ; Q, X% h- i- E
  3011. .ORG $FF58
    3 d0 F8 j: g, Q% y, K" n
  3012. STA $400C" e7 g# M1 m0 K# _
  3013. STA Sound_Bar + $0C
    3 j  e3 r  p2 K0 Z! {
  3014. RTS
    % X) e3 }5 F0 C) h
  3015. ) q8 t9 [- u* m* [4 r, f
  3016. .ORG $FF60; d2 U  r) _( f( G# @( b- q7 a
  3017. STX $40000 ~/ p4 I0 X4 z- x& ]3 A
  3018. STX Sound_Bar + $00
    # S* R3 B* r$ [4 s  Z1 }- k0 h% V
  3019. RTS
    , \( q6 Y: k: r' v
  3020. 6 e& w+ x: R1 J1 I
  3021. .ORG $FF68/ x! m/ c* j" ]# j( i% _# n
  3022. STX $4004
    * t2 S) e7 i5 c1 U- I( E' m0 d
  3023. STX Sound_Bar + $04$ N: H, V% D3 t6 @; K
  3024. RTS
    $ ^3 V7 h4 }& E  F' M# }& A. [6 w
  3025. - B$ W7 J( h1 I1 i! w
  3026. .ORG $FF70
    # L6 H  _" ~4 C/ @
  3027. STX $4008
    ' ~1 i, k& t$ }; y
  3028. STX Sound_Bar + $088 e% J' _( @+ S; X
  3029. RTS
      L' q" E/ Y: s2 o

  3030. 9 F5 m- q0 k) R* u8 Q+ ~& I
  3031. .ORG $FF78
    # x- N# _; v  A2 ]+ O2 k& a
  3032. STX $400C: W, y; K9 Z5 ?
  3033. STX Sound_Bar + $0C
    2 `( W7 D1 a6 @  ?/ r1 |5 }7 l; U5 B
  3034. RTS7 p0 j2 f7 r( c% p
  3035. 9 E" d( E- b6 W5 w' s! W) _
  3036. .ORG $FF80
    8 X, n- h: o$ _2 x- W" X  F4 J/ v% M
  3037. STY $40005 S4 I; K' O4 E/ K( C8 w! a
  3038. STY Sound_Bar + $00
    7 a8 g7 p# n: t4 V# j( \- M" o
  3039. RTS" Y% a2 T6 t3 y1 }
  3040. 8 _' K8 Z# R+ h" t
  3041. .ORG $FF88. ~5 \# z; r% v
  3042. STY $4004
    4 c; r0 p7 C" Q9 O
  3043. STY Sound_Bar + $04. o  a. f2 T1 Q& Z
  3044. RTS$ r7 |3 K! v5 j
  3045. 0 ]$ x% a/ r5 K5 `) a; X
  3046. .ORG $FF90! H3 _4 e% K. k1 q4 P5 M6 O- l
  3047. STY $40080 p" u* S! ?  _1 N, F' w3 w
  3048. STY Sound_Bar + $089 E3 a4 i( h1 |( o- V
  3049. RTS
    # G; u9 i: {4 A

  3050. ; G' k: b# [' b1 _8 F
  3051. .ORG $FF98
    % @+ C+ `) J7 A0 k+ v' M$ f
  3052. STY $400C
    $ X' N) h& y+ P4 D. P8 e0 t9 [
  3053. STY Sound_Bar + $0C
    8 ~& K. `3 C( _% r) q
  3054. RTS6 w( H& k) H0 J) Q$ N
  3055. # v. ^$ {8 v" G6 d! \0 @  U$ J
  3056. .ORG $FFA0
    5 ~: `# F8 K/ G# [( e
  3057. STA $4000,X
    0 P2 k0 ?: r1 o+ h$ v! U! p
  3058. STA Sound_Bar + $00,X/ q& l# i7 F( i, u8 x
  3059. RTS; D4 B, }1 Y( z, U" U& D

  3060.   K& J. _3 J8 w6 X3 _
  3061. .ORG $FFA8
    , j5 B; O, p0 g- p
  3062. STA $4000,Y% o. Z# M5 ?. O3 K
  3063. STA Sound_Bar + $00,Y5 Y' x! K1 d# @- @  r9 k
  3064. RTS
    + D& J% U: [& a* o, }, V+ L; l
  3065. ) ^9 m! c$ B+ z8 v/ A+ n% f; {
  3066. .ORG $FFB0+ J+ X. h+ w3 d
  3067. STA $4004,X
    ! g5 }. y6 Y% O* h( j: g
  3068. STA Sound_Bar + $04,X& p$ R9 [3 `2 t/ j" x  f
  3069. RTS
    3 }3 D3 @" b# A/ l0 g+ ?$ F* Y
  3070. + X' ?8 I/ T. K9 ]) y$ N$ I* K
  3071. .ORG $FFB8$ L7 \' w# ^0 W) s- b2 E3 E  B! I
  3072. STA $4004,Y
    ! b7 _9 L  c% E
  3073. STA Sound_Bar + $04,Y
    ; X, x' P0 O8 ]& C9 q
  3074. RTS
    ( E( _4 z" l9 L/ V( k, t
  3075. / X# A8 y: y9 a
  3076. .ORG $FFC0
    ; C% w6 j: q. W: v. r& b6 E
  3077. STA $4008,X
    4 K& M6 B- U, t% M
  3078. STA Sound_Bar + $08,X
    # K0 |0 q5 f; [& A& N
  3079. RTS
    $ G4 a! z; l. ~

  3080. : y- S( p9 d- v/ {% {4 C. G
  3081. .ORG $FFC8  {' I5 b* Y* B" D1 v
  3082. STA $4008,Y
    " r8 {1 P" K: y" b% B
  3083. STA Sound_Bar + $08,Y- u1 ?4 e4 ~, s, g# K
  3084. RTS; B1 e* o+ v8 d6 H7 j4 C$ J
  3085. ! I2 m" c* U. I9 J* y* e2 ~
  3086. .ORG $FFD0/ B! o: i% @' y+ P9 ?
  3087. STA $400C,X! {# M9 g; H' y# u- D5 C6 c' Y( w- s
  3088. STA Sound_Bar + $0C,X
    + ^2 |/ i2 b* A" G( r  V
  3089. RTS! s+ Y. h1 `6 ?% A" D8 Z

  3090. % E) ?4 M. Q) m! b) \
  3091. .ORG $FFD8; H0 T0 T: }0 z* B$ F  ?( Z7 i8 J
  3092. STA $400C,Y- Z2 M# L+ r# T. `3 f. w
  3093. STA Sound_Bar + $0C,Y! |. s5 S; f' E/ o
  3094. RTS0 {! O+ I: v: U- b0 y
  3095. 1 |5 B* \. D  O2 L: {
  3096. .ENDIF
    # n2 B$ ?. y+ ~, _# U
复制代码

% J5 Z) A: A" ^- }+ o8 b
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3243 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-26 02:31

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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