EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
) j( Q2 t9 z% z6 h1 p- O- l- I5 t3 O' G
[FC][音乐12 IN 1]
0 ]/ Z7 q$ }  j8 B8 e, V时间: 2023.07.23. W+ R% {( }$ s2 ]: g7 P+ {( e
作者: FlameCyclone
0 i1 x  X+ d. u5 C. {7 p' A. S" B
0 Z  B2 Y7 U( t( ?& J% C2 C收录音乐内容:6 p& Y2 T6 M: R+ G
1.Raf世界/ z4 ~0 k) o  C* S8 j$ g
2.最终任务
; n9 w  p, }$ L' `  M3.赤影战士
. R4 Y9 ~8 R/ \- B0 g7 \4 O4.双截龙
* X2 G  X5 i5 D5 W$ o7 Y1 \5 n1 u5.双截龙2' L& M5 T* H. R0 w6 ^, w
6.双截龙3
7 L2 |% A" z1 r& ~3 P+ I% J% ?7.洛克人
. ^; g0 |6 E! `( C, C- f; j8.洛克人2' D, W# `8 o2 {5 s' u' z
9.洛克人3& w/ T+ y* q3 |0 e0 I; c8 c8 V
10.洛克人40 C' z$ [: k( O4 a+ j
11.洛克人5
# `" o2 H/ W4 G, M. C. F' l7 r12.洛克人6
% h! @! K* ?* V8 `) a; v) Z* H. n% s  I. {6 m
操作:
; M' P! G4 A2 I上键:         上一个专辑
% x; E! U- K! I( U下键:         下一个专辑' B  O, M& k- _
左键:         上一曲
8 f8 s4 }- a/ Z4 F( D3 n2 U右键:         下一曲, V+ Q$ c2 P) ^% m- I7 l' _4 E
B/A键:        前10曲/后10曲
5 r1 ~6 E& L& O! v0 O( w选择键:       下一页
3 ^" n" h" |" D7 D; C3 h开始键:       停止/播放2 J# G& Y% R5 g8 Y0 {; X6 R" [

8 @* {8 E6 ], Uhttp://flamecyclone.ysepan.com/
8 t' @" P, C9 I/ S, W  c" f. @! L5 F( H0 v4 C

4 |& }2 F3 `0 H& ?7 E
/ w" T) R" L( R! \# f  k
; q! d1 ], W1 [+ R# I
  1. ;[FC音乐][播放器模板]2 T) r2 B0 s& m. e& o" m2 D9 P" e1 `
  2. ;FlameCyclone 20230710: |) H$ ^. @5 M) z3 g5 e

  3. % h) p: B5 u" {4 ?
  4. ;文件头
    1 ]6 i& y$ y" f3 j/ j$ ~) g' a: L! D
  5. ;======================================================================" `5 O" t" m2 @
  6. .INESPRG 16                                             ;16KB PRG 数量
    7 a, t7 ~! j* P8 X
  7. .INESCHR 1                                               ;8KB CHR 数量- w7 c! [/ `6 u5 k+ x4 v, G; y
  8. .INESMAP 4                                                   ;mapper 4# O$ I0 y6 _$ O$ o
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    ' P; I4 k5 M# v  i

  10. # ^8 D0 U9 D; \% P! C8 S: ?
  11. ;==================================================
    : P3 ]: F# N8 u# Y+ U1 U
  12. SOUND_BAR_SHOW_ENABLE       = 1$ ~/ O) a7 F* ^3 V$ i2 u4 u
  13. ;==================================================+ [/ k) B# n9 S3 r3 H4 S! K
  14. BANK_DATA_MASK              = $1F
    , `! a1 f7 y* d$ t4 D
  15. CHR_RAM_ENABLE              = 0
    % V6 @% ]. e* g8 {, m" D2 W' r
  16. IRQ_SCANLINE                = 136% j: x4 G( S3 D% [2 c
  17. ;==================================================' V! Y* Z- q; U0 i! z7 I) S- l! T
  18. SOUND_DATA_BANK_00          = $00+ D2 s# _% p0 t6 f* \& }# y  n$ I
  19. SOUND_DATA_BANK_01          = $01
    6 c" E$ C" N3 S" Z5 Z
  20. SOUND_DATA_BANK_02          = $02# H% k, T+ g+ T
  21. SOUND_DATA_BANK_03          = $03& _" W0 H+ U0 x
  22. SOUND_DATA_BANK_04          = $04
    2 @1 e& h  X7 @6 s, {& G$ R, @
  23. SOUND_DATA_BANK_05          = $05
    $ U' C& U- }* q) v% `
  24. SOUND_DATA_BANK_06          = $06
    ' P5 D  {9 i  }6 V2 w
  25. SOUND_DATA_BANK_07          = $07) H$ I4 W, y' M
  26. SOUND_DATA_BANK_08          = $08* a$ v5 p( v, A/ h) K" u
  27. SOUND_DATA_BANK_09          = $099 g+ g$ p. c2 C4 k
  28. SOUND_DATA_BANK_0A          = $0A& u  ]; T( B8 J4 o0 \
  29. SOUND_DATA_BANK_0B          = $0B
    5 u* D5 ^* W$ S# s, u$ Y* s1 z
  30. SOUND_DATA_BANK_0C          = $0C5 c% Q! N8 v! F% s) b
  31. SOUND_DATA_BANK_0D          = $0D2 H1 w+ |& C0 K) G( l9 |
  32. SOUND_DATA_BANK_0E          = $0E# b9 W; z2 Z& A$ g6 L
  33. SOUND_DATA_BANK_0F          = $0F) u6 {7 {$ S1 P% u' E, J
  34. , f9 n+ ~% O& d7 B% R- [! B
  35. SOUND_DATA_BANK_10          = $103 z$ `2 h3 l4 X2 r
  36. SOUND_DATA_BANK_11          = $11
    5 n0 i9 B& T/ j
  37. SOUND_DATA_BANK_12          = $126 V: R' D; Y' ~! w3 Q; y4 P
  38. SOUND_DATA_BANK_13          = $13
    0 X0 G7 d, Q! B: p* e6 I
  39. SOUND_DATA_BANK_14          = $14
    / N# E" y& i2 }% N
  40. SOUND_DATA_BANK_15          = $15
    - f! W( ~! q4 @" S+ k2 h
  41. SOUND_DATA_BANK_16          = $16
    / A0 \  i4 j% E7 y, D; x
  42. SOUND_DATA_BANK_17          = $17
    " X, h" y' \3 l$ k* N5 m) W
  43. SOUND_DATA_BANK_18          = $180 P' s4 }+ ^7 K# i
  44. SOUND_DATA_BANK_19          = $19
    2 g* A, d; c: ^8 W
  45. SOUND_DATA_BANK_1A          = $1A
    . [# B: ?7 g1 ?5 W  h( a
  46. SOUND_DATA_BANK_1B          = $1B3 E& u; X1 V2 F* u9 M
  47. SOUND_DATA_BANK_1C          = $1C# S1 ~0 i1 q/ e( f; o
  48. SOUND_DATA_BANK_1D          = $1D
    5 ^3 K: g$ D" ]! u
  49. % j( h/ W1 k5 L+ r
  50. SOUND_DATA_BANK_C000        = $1E; ~: z  r* _' O9 M, r6 A
  51. SOUND_DATA_BANK_E000        = $1F
    : C" h! C, J' l6 E! K
  52. ;-------------------------------------------------
    . e/ t. v+ Y3 E5 r5 R8 I
  53. CHR_DATA_BANK               = $20
      A9 r6 X4 U) O' y1 r. |
  54. CHR_DATA_ADDR               = $A000* f+ X* u$ j8 u: k0 r7 T5 w
  55. ;-------------------------------------------------
    3 g: c3 P% v6 o- }4 Z
  56. PROGRAM_BANK                = $00
    1 x  R7 P1 U9 c7 M# Q- Y+ F
  57. PROGRAM_ADDR                = $8000
    * @2 Z. C" R) J4 p* W, N
  58. ;-------------------------------------------------
    : n# H' @  ^5 L
  59. RESET_BANK                  = $1F
    7 s2 u: o! A/ K7 f& x! ?4 }( N  Z
  60. RESET_ADDR                  = $FD00* A5 w: y0 \  M7 v5 R8 X

  61. 6 D" w* q( j/ W* }: h' M
  62. ;==================================================" Y6 w5 k4 o3 c( p
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    6 H/ ?8 V8 ^0 c; R# h2 j0 z
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引0 n; ^5 s8 \8 I  l7 G
  65. PAGE_SIZE           = 5                     ;每页节目数+ R% X( b9 b1 D  M( S) E
  66. " n: a4 R! W0 ?, T2 ^. ~1 l& F
  67. ;==================================================% M+ e5 w# {! ?3 k7 ]9 y
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除# p* I; @# g9 P$ U. a
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数* y+ g3 b) v% `& u/ D
  70. .ELSE
    7 t/ D8 V# N) ]+ e
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数+ `6 S2 m' v' t6 Z! O
  72. .ENDIF# J* ]$ |) O" ]! A

  73. + m! r9 K3 L4 Y8 A4 z3 G
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引8 }! ?) x3 a& I, P. l

  75. ! }& a3 }( ^* ~( Y
  76. ;==================================================- |' P; C: X! r6 G/ w
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    : J  O$ x0 l( c
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    5 G+ ?, B+ z1 ?) i7 T2 C" [5 |
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    % {: a' E! P# b% K! ^* q+ d1 D8 ]
  80. ;==================================================* _9 y+ \- w8 L. D
  81. Caption_Text_Pos    = $204D ;标题文本位置  A' J: x9 ^0 @# c& Z5 |
  82. Author_Text_Pos     = $2324 ;作者文本位置' g" O8 ^6 ?+ _! V, X
  83. Date_Text_Pos       = $236B ;日期文本位置
    ( ~( v4 k; o- x1 n
  84. ;------------------------------
    - K: k) _0 F# v8 l$ u( d* ^
  85. ;------------------------------
    6 s: Q1 z! c( A; F5 V, g6 V: A
  86. .IF SOUND_BAR_SHOW_ENABLE7 T$ j( w% g: X! I; C$ p& `& b

  87. 0 g) o" n2 H# K5 W8 {
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    * D5 i3 ^0 B# z9 ^. l4 g
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    6 k+ {* R7 }( V0 Z$ A' U
  90. Play_State_Pos      = $22F3 ;播放状态位置) Y# U! ?6 k# g- e
  91. " Y6 U1 s+ v& i$ {. g" B. U8 k* D  [# S
  92. .ELSE
    ; f, S( ^) C' I

  93. $ p" o# _! O4 f( j
  94. Play_Index_Pos      = $226C ;当前曲目位置, X' G3 m3 o7 Y: \5 C
  95. Play_Time_Pos       = $22AC ;播放时间位置* x( @& h: e" V5 k/ s
  96. Play_State_Pos      = $22EC ;播放状态位置" M* X4 X) \5 G1 N
  97. & C% q) m& J$ N5 u% ^' ~
  98. .ENDIF
    4 o1 Z/ _) `& z  {9 I! d
  99. ;------------------------------& [4 y5 g. s, ^5 q) f4 }' P: ~" f
  100. Track_Name_Pos      = $222B ;曲目文本位置4 j/ X* s) {: f9 I( I: ?0 u  q
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    2 G, V4 `# e9 p5 W2 Q
  102. Sound_Track_Pos     = $2265 ;声道文本位置6 O, G, E7 a5 z
  103. Sound_Bar_Pos       = $2269 ;音乐条位置# X- @7 S$ r. L1 W( P7 g
  104. ;==================================================
    2 j4 P: h5 X; F2 `: D; n* ?% A
  105. Scroll_X = $00( a! b! e+ p6 e% K8 j
  106. Scroll_Y = $00$ J- v  K- s9 B# t7 o$ H0 m, }
  107. ;==================================================/ P$ a' D# M, D& _
  108. Sound_Ram_Addr_1       = $0100  @3 e( I# o3 \8 N3 ~* U+ j
  109. Sound_Ram_Addr_1_Size  = $80* r5 o8 K5 K: [
  110. Sound_Ram_Addr_2       = $0090, b. c4 k! s3 S* K+ A2 |: l
  111. Sound_Ram_Addr_2_Size  = $70. W- q' O$ h  g# J' J- V
  112. Sound_Ram_Addr_3       = $07003 R  F# t% E+ A# w8 Y
  113. Sound_Ram_Addr_3_Size  = $00
    8 N' Y! _* W6 Y" b, j9 {3 z$ x$ P2 I
  114. Sound_Ram_Addr_4       = $0400
    % j9 w' Z3 L3 ~, ?. ?' o  l: F
  115. Sound_Ram_Addr_4_Size  = $00
    ( ~8 U3 r- k5 G* p# Z+ ~, u4 j
  116. Sound_Ram_Addr_5       = $0500; r2 }/ ~, j, [% o. H0 y
  117. Sound_Ram_Addr_5_Size  = $40
    5 A  |) z, S% n0 P' H
  118. , q, J# w5 M+ e6 X" {+ Q
  119. OAM_TEMP_ADDR   = $0300
    - a% O" ?. l; s4 e7 D
  120. # Z. I* q, Q: T5 Z9 u) f
  121. ;==================================================4 K5 r" q* ^+ P# m, o5 A" S
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器0 C: p7 c! G% M8 m" f' P, s
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器* v" @0 E/ V: A+ u3 M( m# [/ i  o/ T
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位: e/ H: y) c  y2 J- B" P
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1$ E- E+ e$ Y- Y0 I) y7 c
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    4 l- x$ w5 t+ O7 |2 k
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    ) G: e$ |* N8 q) }1 t
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加# O: m: j: e8 s: e
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 * y5 R1 x9 N  ]1 P* T
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存4 Q; b: p; ?& x0 L
  131. APU_STATUS              =   $4015   ;声音通道切换
    . o: y  u8 z9 i" }/ ]" G
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    0 I& N& i3 l7 U# u6 Z
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通3 c1 j$ A1 c( J; q& v. H2 A/ d
  134. ;==================================================
    8 P5 s3 U% c! v- ~% d' R  F8 A
  135. MMC3_BANK_CTRL          =   $8000  n8 K2 @7 V! h  {9 H$ J
  136. MMC3_BANK_DATA          =   $8001; {8 n/ ]5 @( k. [# }- w# q
  137. MMC3_MIRRORING          =   $A000: }% n! t3 X- o) d0 @8 N
  138. MMC3_PRG_RAM_PROTECT    =   $A001# k% B3 B5 w& p
  139. MMC3_IRQ_LATCH          =   $C000
    ) G3 K* v9 v" M, f8 Y
  140. MMC3_IRQ_RELOAD         =   $C0011 B! O  F$ I; ^! v9 W" U* o
  141. MMC3_IRQ_DISABLE        =   $E000
    . c. ?- X. n% a. z; B
  142. MMC3_IRQ_ENABLE         =   $E001
    : S0 u4 ?2 W% |; s0 T! i
  143. : w; [+ i' w3 j3 f
  144. ;==================================================
    / q" o  z7 E  Y: I
  145. PPU_Addr        = $0200
    : F9 F4 N7 T9 S
  146. Palette_Addr    = $02C0! q8 {; g- ^  i
  147. Sound_Bar       = PPU_Addr+$E0
    ; ^4 E, p) ^$ P
  148. ;==================================================3 G2 V1 [, f& H& v$ t: [$ Y
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D1 C1 ?4 E. t" B5 Y1 {, X: ~
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11- F, N) M# ^5 q  O3 ^+ h
  151. PALETTE_UPDATE_MAX      = $2C
    6 q, V6 _( r# S1 Y* q- u
  152. PALETTE_UPDATE_MIN      = $21
    * i6 A2 O4 C3 \( w0 V: D
  153. PALETTE_UPDATE_INTERVAL = 60
      }+ s3 ?# }6 ?' ?) ?7 {1 F4 t
  154. ;==================================================, z; l/ t; O! L+ D
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    9 r% r5 c  o. ]- W
  156. PPU_Cur             = Sound_Bar_Cnt+$027 I2 I3 z( T7 ^- _
  157. PPU_Addr_H          = PPU_Cur+$03
    + K* b- y; |6 W; [
  158. PPU_Addr_L          = PPU_Addr_H+$04
    ) N: e7 b  Y: V- R2 A
  159. Screen_Ctrl         = PPU_Addr_L+$01
    5 g  B1 u2 u" D/ x% Y% z; k3 Z
  160. Screen_State        = Screen_Ctrl+$01
      u  U) q2 \) v
  161. ;==================================================: q0 o8 \0 i  K8 V$ q3 T  \
  162. Use_Ram_Begin       = $50" _% z4 J  o3 _+ p. q0 M
  163. ;==================================================
    8 q9 o( {: T: P0 P- g  j  i
  164. JSR_Addr_Op         = Use_Ram_Begin/ \$ i9 h5 h- A( r0 ]. O6 l
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    $ @4 S& f9 _& N: C' ^: H1 u  V
  166. JSR_Addr_H          = JSR_Addr_L + $01: m. {& U& w) {( [) s. K
  167. JSR_Addr_Rts        = JSR_Addr_H + $01! d- u. j* v5 ?5 H* ?
  168. Data_L              = JSR_Addr_Rts + $01: r- F- I& F& I& A1 g5 g/ J
  169. Data_H              = Data_L + $01: l/ c; W" e) {  p1 m2 h
  170. Data_Cnt            = Data_H + $018 I: R! {- n( n6 F# r3 ]% @# f
  171. Data_Buf            = Data_Cnt + $01
    % E+ y+ H& q% y* A
  172. Nmi_Time_Count      = Data_Buf + $01
    $ d7 A7 G( H$ u; r
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01# j# O: F: y: [2 w
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $012 f; Q3 `3 J" z% @
  175. . Q8 Z) G! }6 t  V
  176. ;调色板刷新标志
    5 s! w& n- \" I( W8 N8 g& W
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    6 ~# o& s: C1 p
  178. + i8 F8 x/ y! E1 V: L
  179. ;当前帧文本写入禁用标志
    2 E- k  [" k, f" S- l/ X7 O8 J
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    8 e7 h# S$ `# E3 M( v

  181. + G9 |2 I4 G/ b$ ?; ]
  182. ;==================================================
    - u; l* j8 b: h  {& h# g/ \7 n
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动  u6 K" R1 i/ |9 Z! Q) O
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    % d5 ?9 i3 \+ ^* Y4 b
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间/ ]9 v, i2 j. a
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间: T+ _/ m& j0 R* V! |' U3 Y8 q" G
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间+ f. L, @$ x5 J- U" l% e5 n
  188. ;==================================================
    ( a/ q8 E/ X! `$ S
  189. Key_Keep            = Text_Disable_Flag + 1
    - ?8 J# [) v) `& I
  190. Key_Once            = Key_Keep + $01
    9 b( t, i5 T/ B& B, N
  191. Key_Kemp            = Key_Once + $01
    / U8 @& N9 P( ]0 C" [
  192. Key_Temp            = Key_Kemp + $01
    - R9 `5 F- O! Y) h( y
  193. Key_Getv            = Key_Temp + $01- s0 c" D! z: ?0 Q# p7 b# H' s9 X8 j
  194. ;==================================================  o# v1 X- R; l9 S8 y; J$ T; d
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    , `- ~7 o  f/ w: [( ~1 l" o
  196. Music_Item_Last     = Music_Item_Cur + $01
    3 z: M! ]: O1 k/ W1 n
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集) p6 [" ]! t8 K. g* t4 p& O
  198. Music_Cur           = Music_Total + $01  ;当前曲目( r4 D1 n8 R. V# C
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    9 A: k% y3 s. Y" B( O$ s
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态) F" a4 D( f* X6 C
  201. ;==================================================
    ) K5 {' ?2 s) O) R. g
  202. HEX_Data            = Music_Stop_State + $01
    9 R/ e( C/ D3 ~& q4 l. F% T0 U8 ]
  203. DEC_H               = HEX_Data + $01) X8 _/ s* N6 p% ~6 f" g' P& a
  204. DEC_T               = DEC_H + $013 h' a5 {4 ?& l6 @; A
  205. DEC_L               = DEC_T + $01
    / R4 y3 \4 J" [! P
  206. ;==================================================4 O' t9 o0 v& V, Z
  207. Time_S              = DEC_L + $01
    % W$ m8 X" V) t! M% |; z. @
  208. Time_M              = Time_S + $01. ]* Z* m; n& W( y% c/ `* m
  209. Time_H              = Time_M + $02
    ; e% |: j, Q6 F! D# ]$ d" o" r
  210. Time_Cnt            = Time_H + $03% l$ Q" F4 @) D7 e' u8 L

  211. $ W1 N/ ^  M3 ?
  212. ;==================================================
    3 a% h8 g2 c4 `- H5 A
  213. Music_Bank_8000     = Time_Cnt + 1& C8 n6 q5 @/ E0 j+ @4 T, d8 |9 @6 G
  214. Music_Bank_A000     = Music_Bank_8000 + 11 R+ D3 ?8 M# }6 b& n
  215. ;==================================================
    0 |5 x, P, r2 M$ t2 d2 g. v9 f
  216. Scroll_H            = Music_Bank_A000 + 1
    : N: J9 \' A5 C# z$ ]' }( X
  217. Scroll_V            = Scroll_H + 18 t4 s" ]0 ^7 d  |8 ^: r
  218. IRQ_Process_Index   = Scroll_V + 1
    / W  d4 H: g4 E* x0 h% m
  219. ;--------------------------------------------------: g- }) u3 t8 |
  220. Page_Cur            = IRQ_Process_Index + $01
    3 p. h, N3 |: ^2 V( a* Z1 f7 Z
  221. Page_Cur_Index      = Page_Cur + $01
    / `- b6 h# v3 S, L! f$ E/ X
  222. Page_Cur_Cnt        = Page_Cur_Index + $01! ]4 t+ G7 {' s$ k% Y. x5 x
  223. Page_Last           = Page_Cur_Cnt + $01! n. O7 z- l* i5 a2 ]
  224. Page_Last_Index     = Page_Last + $013 B# {3 V8 A8 M" f
  225. Page_Last_Cnt       = Page_Last_Index + $01
    4 ?8 A+ c  \( p% v  u8 h
  226. Use_Ram_End         = Page_Last_Cnt + $01* t! R; M- l. x
  227. ;======================================================================
    * i$ l, ~3 E- J+ J2 @, i& T8 o
  228. ;音乐数据块
    8 L, q( R9 k1 Y* V+ d" ^$ ]

  229. 2 n* f7 v. M  w  ~5 x; b! ?, J
  230. .IF SOUND_BAR_SHOW_ENABLE
    - V0 o" Y* O6 o8 n, m  w

  231. : H$ B0 P0 s# Y0 P" `$ C  J" t
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    # b  u# _. p# ~( ~
  233. .ORG $9000
    8 t$ ^# ^+ w, O6 N
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    & z% T$ t1 Q3 w
  235. 0 s& f( {* N8 a
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ! I9 x# C0 k1 t$ B6 b, m/ R8 h) L
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"  L0 c% {5 j0 |0 f+ c
  238. * S& o* r3 g) u& D
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK6 R' j- _( j" a4 w1 E% k
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"' P% b8 ^3 H4 r

  241. ) V4 |, t& k, y! Q5 h- p1 F  e
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK" X5 d* z, Z5 Z" k5 U, E
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"  S. u3 ^( y* f$ k! T- i

  244. 3 P! i  F2 H5 G# X4 \4 G& V
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    . p% Q, f5 F4 J# Z% {1 a4 [- g
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"+ e) U3 e6 \5 c8 [6 D

  247.   H% ]& ?. D& h$ j( @
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    * |+ i# T  F! g  F) v/ U& k( E
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"! P6 a/ ?1 X. O  _. h

  250. $ F- I' |/ i4 V+ J: _+ ?' T
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK, ?  c1 l( X1 n6 h( x3 j  L$ e
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    1 c- C+ T( P4 j$ w5 }/ `
  253. . l& u, f) w* }0 Q# C$ i* g
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK/ |) Y- ?7 Q; u" O  `% ?
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"- W3 c% y9 \8 O, L  K
  256. 6 d: I- C, P( Q4 B+ ^$ _
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK% l% e+ b4 {  o0 n$ K
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    5 W! D; d" U! r  ]

  259. & N9 h. C$ _3 f) {  f  Q- Y9 a
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    3 o8 j( c) w: P
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"# Y. u7 Y6 S/ U/ a, A
  262. ; A4 F  Q; v, r& M. o
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    * a+ Y& N  W1 `# e2 |% @
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    1 R: n, x5 W' b# b
  265. 2 |" l( p6 Q3 @
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK/ ~4 P. l0 M' l+ K, Y
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank", O8 p/ r* E' V! @$ ^% e& L; s& M

  268. ( _9 X" [. {8 S& f# j
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    8 p' J0 N5 c( _* |3 b. R; A
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"0 i% J5 l% P% {0 n% |' o

  271. - M7 u9 b9 e% o2 v* t' Z# p! I
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK) S9 w8 O# v( i& x9 F
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    0 `! j6 f# O4 E

  274. 7 u! m) m+ b5 k% U% y1 J1 f
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK2 k* m& ^5 s" X+ R9 Q( L
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    , t( s. o# z2 i6 g# ], H" _! z
  277. + e% _" J# F0 D! F" t
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK( C) O" D% g# R5 Z
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"( ~4 Z. l4 m  z# }. R/ B/ c) B
  280. ! ?+ v2 i! x$ o& P2 X  k
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK0 C& S" c: X0 @3 c8 @& `4 x* U
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    3 _% F0 g0 G& C! G- C5 u
  283. 6 Z3 l( V9 b8 p! T. {/ A6 T
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    # q+ [7 r1 S9 k! }' N2 l! [$ Y& {
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"$ \9 U, w4 w' a

  286. 5 [' W$ R% y4 Z( Y9 k+ V
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ! I, B: ]8 y- Q/ M0 c; ?
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    , i% [( G* ~, u7 m

  289. # G4 v3 j/ ^" v
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    % v3 \  H& [  b, T
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"1 [& k0 Y! z% J$ s  O% {
  292. # R( s$ P5 v! o( e4 @5 f* e, Z0 X, D# G
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    : f- T# N- U8 }5 y$ t4 I, A" J
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    $ @9 t5 V' ^/ O
  295. . P( W% y3 T2 O' ?  @9 y; Q% T
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK! n/ [; b$ |3 j- T/ P- C
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    ! n$ i. X) M+ r+ p+ J

  298. # W1 v+ E2 K/ V7 d  A4 K- h6 S
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ' t; l, X$ g( j! Q
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    - D8 ?6 i& [( v+ b/ A: V8 D

  301. 7 I6 a% ~; e  M) ]) Y/ Q2 o
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK( c2 a! w& R  o# v3 k
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    8 [8 I/ t% N1 ]' g

  304. 6 B( V3 e' @, M6 ^( G) L+ p9 x
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    & Q0 T* l5 `9 F9 ]; [1 W( ?: s$ s5 h
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    " r: d" n* d3 O& E) U. v# k& r. Q
  307. ) X; C! \) a2 s6 n  m6 O
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK& [. y  ]3 i* E; ?; q6 _: q$ O
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    2 _7 S; k  t+ L& i/ p( }  [5 G
  310.   o9 B0 M* W! {3 `2 V1 W- A5 `
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK* a7 l: R- X* u4 A/ j+ ~' `6 K) ]
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"0 P+ h& l. i$ _2 b# X! E
  313. 5 G' ^: f& N# {* N" S5 g
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK7 u  _  a0 ]7 Q) J
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    * R3 |) W. j; n# d/ Q0 T

  316. 8 u" o* Z+ H* f- I& l
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    . @& [( K6 t& {# R5 |* B
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ) t; I0 E; ?8 {/ s0 l

  319. # U4 _. u" D6 g; d! s
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK0 ~, @0 j: t# a! o
  321. .ORG $D4003 G! E2 i: e7 R; @* ?
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"' U4 }0 p. Y' B/ @0 K9 |! g
  323. * R: u9 d% O) e" Y# i$ A8 N
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    , [4 r) l0 D, G; N
  325. .ORG $D800
    + O+ |8 n: L$ I% O3 V* O4 {
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank", |2 W/ ^+ ~0 v( }

  327.   `" ?4 ]! b8 E; J
  328. 3 q4 x. `8 ]' p" z1 f/ s/ \9 X
  329. .ELSE& [* w. P- ?9 Z7 p

  330. $ U+ ]+ F6 M& j* C
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    1 p0 {9 W1 `) T$ b
  332. .ORG $90004 y/ D$ o' t* q2 g0 f
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank". i* E* {6 D3 u( ]4 q& [

  334. " M6 b! c" ?% w- ~) Y0 \
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    1 S  `: b) x# c; X; R! G' I% i( Y2 A
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"" Z+ V: d  \& L* q1 J
  337. , \3 R: Q2 u, t7 b
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK+ z/ `, t; E% j  l9 W- m3 M$ q
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"! @$ i+ u6 S8 O8 H" a& X/ D' g
  340. $ C0 o* K' S% i$ p4 q% [& m) b# p, q
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ; o& O" m2 \' V: q8 c5 \
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"" m+ S. k# k% y. q( U
  343. , N- ?0 e# r; ^/ h+ V2 [/ Q/ m/ a) {
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    / `0 \1 n# p  p. F7 e
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"7 K: f1 u! ^/ k  v* C6 |0 D% j& S
  346. + s3 Z5 `; K  T! o% |
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    % ~8 F( Q' h( B1 R6 w8 p3 J$ A
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    & c& Y/ ~8 h" |3 q5 }( n
  349. + q6 V  B) J! \
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK/ s- v! j* E6 [7 g
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"& ?& y9 L. ]% K/ l+ W$ }. D

  352. 0 f, e8 i0 o. X8 E# R
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    / f: q( B6 u2 R5 L! M* x4 H
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    8 A& K* q+ o8 F" y% i9 y; z; J. a. v
  355. 5 q# s5 ]  T( w
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    ! A1 P* g+ D8 Q2 u6 ], M) B* q
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    ) o2 |; B& a% G

  358. : V8 v7 H# T, B+ h& f# i" ], s4 j$ a, V
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    0 ^; U; _# u6 e4 n! U: W1 I
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ' o1 Q2 r; l9 M1 s! {( A. G

  361. - F! K8 c8 a- ?( i! q/ f. ?2 F
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    % i% N( Y' o! b2 q
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    2 u* K# M0 J/ [$ r5 A5 \# P

  364. / O  S" w* u& W. G
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK4 y+ @# ~- i5 U2 P' O- G, I
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    * t' g0 |% J: K$ e7 @4 ~  a  {/ L

  367. / n3 a1 j5 |6 H1 [4 s( K7 [2 R
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    + v/ h+ p5 _* t* c( H
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ' ~! j# {# q) I( S- B/ J

  370. 4 w/ ?' c: ]; f. b( x* p( b, P# q1 I
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK# ]  b' o: S. ~8 I6 N" {
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"% L+ U- E6 ?2 P
  373. : a3 @3 _5 @! V! t( D, I! S
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    " b. V$ H' T2 W9 F0 l, \2 _, W  A
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"8 {% U& M0 g1 K/ C1 {% f
  376. ) r! N3 y2 T3 v8 h. h
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK3 E. B' ^  W. a& s; S0 j
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    ; e" S+ d; z, M' ]7 o9 d" Q( R/ O

  379. ( B8 d7 ^5 {; {5 p% ]) Q  b9 ?! C
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    1 o# J2 P. _/ b8 L8 k; S- a/ {
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"& b# j- K/ ]  A% O) U: o

  382. 3 N' Q' S$ m- {! o& J1 G. {
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK* F* _* R+ |! v' v% L& {
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"0 J7 z* L" Z: {3 r

  385. ( a- R3 k: {# t0 @* }# t
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK: h7 |0 A$ X' O  ]
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"; k0 I& J4 c) F1 o# x2 \' H! ^& R
  388.   E6 d3 V* _% ~* M) _
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK% L, v7 K0 R! q4 ?% K1 l
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"& j. F2 C; x8 ?" v: T

  391.   T7 }8 ~) e$ B/ @+ `6 h* Y% B
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK% T% t; _! h% n
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"3 c9 ]# F/ R1 m4 F+ E9 e7 l

  394.   L* `4 z. r7 N: s3 I& U$ N& m
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK. C1 g5 l8 R% [3 Z! B8 D
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    : r0 V" `7 @7 v5 i

  397. ! v, ~6 G; C: o4 j
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    , r7 K( E1 ^  p# M% l
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    ! Y9 a" J' h' }

  400. " J0 D, v, ]. V$ a% J2 ~( O
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK8 O4 y6 u3 ^# K2 c+ F; M
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"  C# C5 c+ G8 j5 V: T) L
  403. 3 N- A6 L% H' }: `
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK0 N9 }% E9 l  V; H" a$ y
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    / `0 T" i" _5 t. Y2 Q- ]5 A% J% N
  406. + J8 p) b2 `8 `
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK% @2 F+ {1 ^" q9 c; q( a$ s
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    & ^' h! ?; l7 K& _3 S. n1 m* m  [$ F% ]

  409. % H5 q8 Q0 M$ {4 H, [- e# P
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    7 S, P0 \  d- t/ K' ~6 X
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"& P# P6 G4 m1 }2 U$ ?0 |! g
  412. " k/ O3 y7 ?+ S# R: T" v
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    9 L. N' j! U+ V6 b6 K1 C* B
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"9 K8 H! K8 Q8 k$ t1 h  H) U
  415. ' R. \) l3 l. x; l0 F
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ) Z' s1 C7 W4 ~4 C0 P/ p  w
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"- x' d, y; k& H1 x+ n( j5 i& A
  418. ) J4 n4 F( g6 b1 O. x4 O4 Z
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK! d7 X! m  C4 n; I
  420. .ORG $D400
    - H0 ^& r0 H' e- M
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    : {1 S. D1 M  F. b% |! \

  422. - M: Z& p' d8 b& G5 N" N* k; Q
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    1 d# ~( w4 Z- z: {
  424. .ORG $D800
    . f* D1 e$ k0 m9 Z: H. d9 O2 w
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"! g8 k' @3 Y( g% B" |2 w) k/ U# F
  426. # d: R+ f5 j, ~; e; t, E: k' W; F
  427. .ENDIF
    , e9 N/ q7 p( s" F; p' N( a

  428. ' d( G2 z) J: E+ b! M3 j3 z% N
  429. ;CHR图形数据
    & e$ d& G- z+ E9 N
  430. ;======================================================================8 h& |: i0 I4 P( ?" N8 B
  431. .BANK CHR_DATA_BANK
    - S8 F2 W" Q- y* _9 b
  432. .INCBIN "chr_bank/chr_data.chr", }0 w- J0 y0 P8 z6 ]

  433. 1 _/ I. J7 w' r2 Z# u( y+ [& J1 h' @
  434. ;======================================================================" h0 B" G4 u7 t  [" P; m
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK$ {* W, W# E" U6 z
  436. .ORG PROGRAM_ADDR* W! y+ l0 W" C$ t( |% f

  437. ! m. E) }$ c" i' z  c
  438. ;==================================================
    % v& W4 v3 X. W! h
  439. NmiProcess
    ! u" a7 ~) ~7 z
  440. ' ?7 n- _7 |8 p2 S- f
  441. ;关闭屏幕控制4 S: [, f3 X  P# c1 j! @
  442. LDA #$009 e; h8 y1 N5 p9 C. P
  443. STA PPU_CTRL
    / B  w/ A1 F! m2 M' t
  444. ) B: b/ L4 h, e5 K. ~# z  E
  445. ;没播放音乐就不需要触发IRQ8 c3 H+ [. E  |
  446. LDA <Music_Stop_State( [& M- A0 c% ~+ ]. l
  447. BNE NmiNormal& M0 r! m% S" E/ N, q. V' G  Q. L

  448. ! K, y9 f" J# s
  449. ;重置IRQ索引* {: n% S& u0 ~5 i/ E
  450. LDA #$00! v! T  R' C+ C. M/ F
  451. STA <IRQ_Process_Index
    - x; |: Y- u- ~5 P( e& a
  452. 3 ~6 M& u/ E4 A" a$ |3 O, A& I' N
  453. ;时间秒数为空则跳过. B+ W) G% N- [
  454. LDA <Time_H3 T$ K% L0 }% e6 R, ]* }4 Y& [
  455. ORA <Time_M! G5 L; T$ N9 r, Q- y8 Z
  456. ORA <Time_S' M% n) g: K, W+ Z
  457. BEQ EnableFirstIrq+ O6 X" r$ n6 [1 A) {6 G! T
  458. 7 W- y/ H  f0 d2 ?; W
  459. INC <Scroll_H
    8 j, _9 l4 ^9 Q; o
  460. : z* j, v, a2 b# `* [3 X' e
  461. EnableFirstIrq ' u3 k3 D  f" D1 c1 m
  462. ;80条扫描线后触发IRQ
    ( L' K1 n0 S5 [6 J4 i( C# w4 E! _
  463. LDA #IRQ_SCANLINE
    6 }1 k8 L( E  E% I0 O' P
  464. STA MMC3_IRQ_LATCH
    . U, ~2 y$ P# F. t
  465. STA MMC3_IRQ_RELOAD
    + ^* T/ d+ V2 I
  466. STA MMC3_IRQ_ENABLE6 `' |; j! _/ ^- I/ I3 W9 J
  467. CLI' U7 e# _. S6 g3 @5 w
  468. , X, N0 e7 i7 q) I
  469. NmiNormal
    * \2 f! d. D- V
  470. $ ?! D0 N$ D" w/ I% p
  471. ;处理PPU图像
    0 C: n' [- g1 j& r7 @* r1 A, a4 R
  472. JSR PPU_Proc7 t9 z1 ?8 G: v. z3 [& M
  473. / B/ K$ d1 H- ~* ~: b( Z6 Z6 s
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)& i2 l7 g6 k1 k: V& Q. I' c
  475. LDA PPU_STATUS, Q0 ^- u! x/ d/ c3 ^5 G8 t
  476. ;LDA #$00- C) W4 F0 o) W4 u
  477. ;STA PPU_OAM_ADDR2 B6 L4 h8 X* v5 `% @
  478. LDA #OAM_TEMP_ADDR / $0100
      D" U& F; b0 K5 o: v4 X* S
  479. STA OAM_DMA
    9 M. U+ W( i; M8 k( ?6 _( y
  480. ' W/ e- x- [# I) P4 T% {) e: ~
  481. ;启用NMI中断
    & j6 I& S/ H$ J. ^6 r. a& S) l
  482. LDA Screen_Ctrl  R. z5 c7 |) e& b3 b! n
  483. STA PPU_CTRL; q) D. ^! ]* M" f" G  H
  484. 8 D4 w# }5 P) K% y0 @# t& g
  485. LDA <Text_Disable_Flag
    " A- [' h2 j- z# r6 ?
  486. AND #TEXT_DISABLE_RAM( k, r$ _+ j& O7 e; l, W0 E- @
  487. BNE Nmi_Sound_Play5 B3 X% i! x2 K! y2 N8 Y

  488. 2 b* ~  A+ M( D
  489. ;处理手柄输入& D  _/ Z7 l7 B2 }
  490. JSR Key_Proc
    * v7 u  ~: `' b$ P/ F: x

  491. + X& `7 V9 Q/ P% C4 x/ {7 y
  492. ;切换音乐(手柄触发). x, ]7 ?0 M; A9 Z2 c
  493. LDA <Time_Wait_Cnt
    8 c4 Q# B4 d7 ?2 [* K7 Y
  494. BNE Nmi_Cursor_Arrow  Y7 H4 p0 u' }7 ]/ k  M
  495. JSR Change_Select_Item
    . J! t& Q6 i3 ?% o2 B

  496. 5 L5 Z3 Y$ j( B( v3 p
  497. Nmi_Cursor_Arrow
    6 |( b! l8 ]0 G6 j, H
  498. : \# s3 U6 Y  B. i9 U2 e- P# M4 R% E
  499. ;处理光标箭头3 f* e: d" R3 X
  500. JSR Show_Arrow
    . T# N; x6 \+ j4 U6 B, x
  501. 6 m! a; z4 v4 |
  502. ;更新调色板4 n8 W( V: p1 y( U5 z7 e
  503. JSR Update_Palette_Data! t+ v+ Z1 |. y6 G& o
  504. . A4 d7 c$ u& Y7 w) ?
  505. ;显示时间(缓冲)/ Y! a/ z" g& ?5 j/ p9 O' C
  506. JSR Time_Show
    ' R1 M) i0 L+ ]0 ~. \
  507. 6 G1 q; Y* b4 M5 w% g
  508. ;音乐显示(缓冲)8 L" [! \7 B7 s5 n6 z& `& v
  509. .IF SOUND_BAR_SHOW_ENABLE
    " {: {0 J4 y3 l9 b
  510. JSR Music_Vision
    1 i4 Q( |8 T- }$ ?% Y1 ~0 V4 Z6 C* \  N
  511. .ENDIF
    8 i! L  y7 f& ~% ]/ j$ g
  512. ! F  {& _) ~* B
  513. Nmi_Sound_Play- W0 N9 j" C* m1 F' B7 `; |
  514. ;播放声音2 {1 g( i( F( B
  515. LDA <Music_Stop_State) C, i+ X' m- z2 ?4 s
  516. BNE Nmi_Time_Wait_Set
    7 k, b7 c+ C! z' [
  517. JSR Sound_Play_Proc
    * b8 u6 E2 A0 K, Y+ i9 Y" l

  518. , B' T3 [* b/ M( i2 {& ?
  519. ;播放计时
    9 T2 l. y1 J! |  t* P) e
  520. JSR Time_Count
    1 U, r. g" V& ]/ n/ n. Z/ k
  521. 0 y  c( X) G9 R3 o! A
  522. Nmi_Time_Wait_Set
    ) \9 J* R. x' y/ W, E
  523. LDA <Time_Wait_Cnt; ^5 t  a9 t8 m& x" t( ?0 u
  524. BEQ NmiNormalProcessEnd
    $ K2 O8 Q" h/ `% J8 P5 f
  525. DEC <Time_Wait_Cnt2 n; _# [/ ?: j7 O
  526. NmiNormalProcessEnd
    : f# [& _) }; O% A" C! A/ t% M# U
  527. 8 D7 O3 v% k% e. J, |) B6 a: [8 [
  528. INC <Nmi_Time_Count0 c" v$ `7 @, J9 ^

  529. ) ^) F( Z/ }* e
  530. RTS0 _; v6 {' n7 O8 v

  531. 8 d6 R% C( W: E
  532. ;==================================================
    3 k: O9 I& }8 m) m+ y" l
  533. Init_MMC3
    + V- T0 H( @* O! D, \
  534. ;==============================5 `4 c' q% F; V3 _# Z
  535. ;禁用IRQ
    8 Z. F/ m# L3 H: h2 \, @! G7 L
  536. STA MMC3_IRQ_DISABLE4 C3 f. N2 ~% I5 z) M

  537. 0 N; b2 d/ {4 i' o5 d
  538. ;水平镜像0 g: C2 u$ e- L* N" U+ o) V
  539. LDA #$01
    / J' X$ J. ?/ I3 g, B" P8 a
  540. STA MMC3_MIRRORING# }- i. K  M' p' t
  541. & _5 [6 X( f. ^
  542. ;初始化图形bank* g( O- F( o; A1 z  ~8 ^& K  _
  543. JSR Init_MMC3_Chr_Bank
    + D2 T. G" H" _5 _% l" t& }! _* f
  544. 9 c# e5 l8 S% K' _3 [$ K# H  \
  545. RTS
    5 K1 c8 w* I3 k4 {* s
  546. ;==================================================4 d- }, n* a- Z  ?! v$ ~( _
  547. ProgramBegin;主程序
    ' g  e, W, `6 R# @2 H
  548. LDA #$005 Q3 c! s$ M- o0 d! ]2 r
  549. STA PPU_CTRL( ^; {, ~4 N& O2 b
  550. LDA #$00
    ' v  X! k' T1 W) N7 R1 }. L7 R
  551. STA PPU_STATUS
    5 n. h9 f7 z  [* M- L( [' O
  552. STA PPU_MASK
    # n/ U+ J3 \9 @6 [/ x! y" q9 O
  553. STA JOY2_FRAME& u$ T& P- k, R% A6 N5 ]- f
  554. - s( N. M1 @. w) K3 u- k/ [
  555. STA PPU_SCROLL
    5 H: l5 Q) G* {, W* {( x
  556. STA PPU_SCROLL
    ; h* G0 n9 `* M9 L( W  v2 n7 j
  557. / v% _' i' T& j
  558. ;==================================================9 i4 C; L* d/ D! Q4 i
  559. LDX #$FF
    # y8 J; h% G/ Z0 c
  560. TXS
    3 I+ B% y- k$ I- p7 ?7 u

  561. * E+ C  s& \" `: K! H: [
  562. JSR Init_MMC3+ l8 C  V% C5 U& ~7 ^( v6 B
  563. ) A& z+ ^# `8 z% o# l
  564. LDX #$02
    6 z* ^2 n7 G2 F. ]" _0 ?, r2 a
  565. Check1
    , E( t) l( C% I2 C8 ~8 Y
  566. BIT PPU_STATUS
    1 q/ n, q$ M; t) ?- G* o$ I( `, l
  567. BPL Check14 ^2 J% [2 f* d3 q
  568. Check2
    , e! u& f6 {# x. X, T
  569. BIT PPU_STATUS
    / d* u/ s1 e) V+ }' X" \
  570. BMI Check2" V) A# x  x! G; S; C
  571. . d5 f+ j, M. ]; |: o
  572. LDA #$0F
    , q$ W6 D$ W# _
  573. STA APU_STATUS6 M% k; l, U% k2 U
  574. LDA #$C01 I' S, K& m% H2 r( L8 t7 ~& G
  575. STA JOY2_FRAME
    - o% y# c* R7 Y$ ~+ w; v
  576. $ q* l; [$ X  s! \& ~/ ?6 Y
  577. LDA PPU_STATUS) a0 U+ l5 e4 m
  578. LDA #$10
    4 ^" s0 J( _* Z% w* ?; u$ p
  579. TAX
    ( F3 B( ?1 T" f7 B1 `0 l
  580. Check3
    9 b. t. g0 X- p, C+ j/ N8 c
  581. STA PPU_ADDRESS
    . {) T* u+ s: ?5 |0 Q
  582. STA PPU_ADDRESS
    ! t. N7 G. y# G* E
  583. EOR #$003 y0 @0 x) O% P3 R& R
  584. DEX
    9 J" |+ n1 A7 ^; j4 |+ W4 X
  585. BNE Check3
    # D" O1 y# y6 C$ [( T
  586. ;==============================
    ) _. m1 g- T" J' n7 ~
  587. ;调色板清空: s# W, c/ T8 g- f; B( ~
  588. LDA PPU_STATUS, g/ X5 @9 r3 G9 Z
  589. LDA #$3F
    8 R& F; E2 a! R9 p" W9 I4 N1 @( S
  590. STA PPU_ADDRESS
    . w! b7 f6 c& I
  591. LDA #$00
    : x& q5 ~4 T) h* a5 w# v
  592. STA PPU_ADDRESS
    7 @6 X& w5 p2 M, `0 k: m: a) K
  593. LDA #$0F' d% L8 ~1 _; V+ ]. a2 j+ @
  594. Palette_Clear8 K5 m8 [! ^% b+ ~" z& B
  595. STA PPU_DATA
    6 ]- a; O$ e1 ?9 h
  596. INX% r& Z0 x2 m0 N; Y7 o
  597. CPX #$20* U1 Z+ X/ e3 [7 s5 u5 b( P8 |  _# I
  598. BCC Palette_Clear+ n5 E: E, F' X' S+ H' B
  599. LDA #$00
    1 C6 U; M% W3 i: }( o1 B- \
  600. STA APU_STATUS
    2 \6 E* H  U2 N$ G# Z$ e/ Q

  601. ) s2 k5 F7 s8 }8 k4 |" A
  602. ;==============================- q: A8 o0 ~! U$ A* w0 P0 q' M
  603. ;RAM初始化6 G* U* `* {. q: C+ o- [7 G' p
  604. RAM_Clear_All0 A7 f2 p2 E' e1 n  P: R
  605. LDY #$00
    ) r+ q/ |" X4 B4 y6 Q4 ?
  606. LDX #$08
    " r# ]5 ^$ j2 X8 v) T
  607. LDA #$00- e4 U5 \3 h1 t
  608. STA <$003 c) G+ j( n5 {2 {" [: Z- g
  609. STA <$01
    ( d% T) @( c1 S, E% ^# B/ s4 N
  610. RAM_Clear_All_Start. q# j2 H* F9 U% L
  611. STA [$00],Y1 u6 Q) ~5 U5 d
  612. INY
    6 y) Q+ i$ S6 [% H
  613. BNE RAM_Clear_All_Start
    % p1 O& J/ V# ?/ s% L
  614. INC <$01
    - J3 c, R; q  q" v
  615. DEX0 n. Q0 P( G/ c4 ~5 I
  616. BNE RAM_Clear_All_Start
    , z4 w4 s# {- Y. Z
  617. & z' M. E1 u- r
  618. JSR VramClear
    0 Q8 _: ]* {% [5 x
  619. JSR VramInit
    # ?1 b1 v5 _, N) y' m$ _% Z
  620. JSR OAM_Ram_Init
    3 {5 @$ B7 h% b' B5 ?, h9 j# K
  621. JSR Init_Palette_Addr2 q# x( \9 i" p( b. t7 K5 F  |

  622. % p/ L7 f" t/ @1 _6 W4 N
  623. LDA #$FF) P- V7 l$ [4 O7 e2 T, M, ^
  624. STA Use_Ram_End
    2 z3 k/ s4 u/ u. @
  625. ;==============================
    6 d2 |/ l6 T& Q$ m' N; S4 N' \
  626. ;初始化背景调色板4 p1 C- \: Q2 |
  627. JSR Set_Palette_Color
    6 e3 F% z' |' _* `
  628. JSR Set_NameTable_Attributes* v8 q- S7 a7 Q0 h: c
  629. " y9 H5 K% r' I( g% t( E
  630. LDA #$00( G5 h. B5 u6 [$ C9 p6 d
  631. STA PPU_OAM_ADDR
    3 j6 K0 R+ E6 f
  632. LDA #OAM_TEMP_ADDR / $0100
    % P) P6 g6 \1 m) r  [5 W
  633. STA OAM_DMA
    0 M3 M5 w4 P2 H  @8 c

  634. ( W5 Q$ f3 K( ^! E5 o( B1 ^: V
  635. JSR Sound_Reset_Proc5 w1 ?7 t0 J6 R/ J5 q3 ^
  636. JSR Set_Sound_Total. x4 v, U$ ]: I9 }
  637. 0 y3 v. w! u7 ]. a9 h) {5 r& w) C
  638. Init_Start_Music& D( R) u0 K4 C9 T5 ?5 k* p! Y6 n
  639. LDX #$00
      |4 }4 [+ Y* n  V3 H& t' L
  640. Init_Start_Music_Write% }* w4 Z& a8 _) w* o1 J
  641. LDA Sound_Start_Port,X
    & I% e+ h. a2 s  l8 O) |4 m
  642. STA <Music_Cur,X
    ' X% A# p' v  n4 Z
  643. INX3 t* V- L2 W7 E7 C  q
  644. CPX #ITEM_MAX_SIZE: V. L5 f! T7 Y5 l3 A* ^' E
  645. BCC Init_Start_Music_Write" c, Y% V" D% k+ I0 j5 @. |5 l

  646. . F; i0 R6 ~7 F+ a  ]. \
  647. JSR Show_Music_Text( I5 z% R% [2 i% S* j. Q* _  H4 @

  648. . q. L5 L7 t$ J
  649. .IF SOUND_BAR_SHOW_ENABLE: U) k9 f8 u( D0 B: L
  650. JSR Sound_Bar_Text_Set
      X" ^& C, _( \# r% a$ b
  651. .ENDIF
    2 ?. L$ o. H. ^; {1 A9 x

  652. # C/ `0 g3 y7 I1 W9 g
  653. .IF Track_Name_Pos6 o9 A8 U0 L0 a$ I5 H  N8 H4 r
  654. JSR Show_Track_Info
    , n5 c- i5 G1 d, d. p
  655. .ENDIF
    9 V% @* @1 o8 H6 R5 y
  656. ; b3 D- U$ O5 H+ f
  657. JSR PPU_Proc* R( N" L0 i5 Z, t7 v% k8 M# T; H0 z' l

  658. : d9 w5 @1 ]' o, ^! O  f4 {
  659. ;==================================================- G0 D( X1 @0 X& {$ ?4 H  v
  660. ;音乐bank初始化
    6 x! @9 x& C2 x2 X3 V, g
  661. JSR Init_Sound_Bank
    5 ^" o, d3 d6 b* z( T- e0 S4 U
  662. 7 b$ {: _1 m+ x7 C8 M0 Z. C. T' c
  663. JSR Music_Show
    / B% u* E+ K/ k
  664. JSR Time_Show
    ; _/ R: V- E, `( K
  665. JSR Music_State_Show- H/ ^# u; z4 I2 K4 r; K" l5 n1 p
  666. JSR Time_Delay1 Z1 N' H1 P" L  {" u3 t

  667. 2 ?! E+ h" Y! a6 i. x) x
  668. LDA #$01; ?$ b- f" K* m6 I
  669. STA <Music_Stop_State8 Z" ~' z& s' f- t
  670. 4 P5 e  _3 R2 F6 D) [
  671. LDA #$88" Q* C" u) }# q1 v) U. A% E. V
  672. STA Screen_Ctrl$ K5 l5 ?( q2 r  b2 B+ R$ T
  673. STA PPU_CTRL2 E9 A$ I# ^+ H7 T6 G8 d) K

  674. 6 ~/ i& m- H# s3 a
  675. JSR Show_Page_Text
    & l2 {4 D: s* @: p, J$ c

  676. 7 u" r6 S4 Y" k
  677. LDA #$107 r! \) E4 _9 J$ N
  678. STA <Time_Wait_Cnt
    ! T; u9 t* I, F$ h! a9 O

  679. $ F% E3 z( s' s% V+ l# l! F* b7 t8 Y2 y
  680. Wait_Time_Over( ]9 H* a& [9 \" w* E
  681. LDA <Time_Wait_Cnt; P. v) ]' M3 h6 P( Y/ b! R7 X- S9 ~+ Y
  682. BNE Wait_Time_Over. d" U# |. v3 [, v

  683. 0 d+ o+ |* y( Q
  684. JSR Show_Arrow
      Y* y& J% p8 @2 ~" `
  685. LDA #OAM_TEMP_ADDR / $01007 O8 L  H% V# @
  686. STA OAM_DMA7 V& ]! j$ {  L( J" `9 y

  687. ) Z3 K' c) p4 ?  f- @6 F! T" k% l
  688. LDA #$1E
    % B# J- ~; K6 h/ M
  689. STA Screen_State
    : h- k6 L3 `/ r/ r
  690. 4 x2 k: i9 C" e) m: q& g, }) }3 i
  691. LDX <Music_Item_Cur
    1 ?+ f4 S  D4 }" V
  692. LDA <Music_Cur,X) [8 W" t! o0 ]  o0 |' H
  693. JSR Sound_Init_Proc% J& R) ^. q' C1 t! ?6 Y

  694. ! w* x1 s/ {" f0 |
  695. CLI/ g3 u5 h) g2 C
  696. JMP MainLoop- K% O3 r- r4 _' E
  697. 8 m' x4 i: K  n/ i
  698. ;==============================
    & Q- O% ?' Q* f0 ?
  699. Time_Delay;延时等待
    $ F! @* Q8 s: ]7 l7 B0 O% o
  700. LDA PPU_STATUS' w+ s7 T  G3 V4 b6 o! Y/ W
  701. BPL Time_Delay
    6 S8 B( b# f) \5 a2 N  I
  702. RTS" ~' b( k# i* Z  @( ~; @
  703. 8 h/ C  M/ s0 O+ b
  704. ;==============================
    " {7 C2 g0 A# z% P& I' ^( A& R
  705. OAM_Ram_Init;初始化精灵内存
    7 A4 I: ]& y0 r% @0 x5 R
  706. LDX #$00$ F# U6 s- N4 _& v# x) E
  707. OAM_Ram_Init_Write
    0 Z% Z# p9 T) Y) d  [2 k/ m$ k) }
  708. LDA #$F81 T$ B. @+ i* u* S
  709. STA OAM_TEMP_ADDR,X  D+ _, Y) z' C4 @
  710. INX
    & t! a2 l  V" g& j# I4 M" M4 F
  711. LDA #$F8
    ) \% V: t! r) o' Q0 z
  712. STA OAM_TEMP_ADDR,X
    / _& F$ H1 M' O. m, W4 m5 T! }5 X
  713. INX# ~+ p& m" V* [, C
  714. LDA #$003 `! N  U; Y+ y2 A" a; t
  715. STA OAM_TEMP_ADDR,X
    ( N7 w. d* c- C
  716. INX- }+ z% t( J8 L4 |
  717. LDA #$F8% n6 r( W/ _: P9 k# p1 I. O
  718. STA OAM_TEMP_ADDR,X
    ( x8 e7 u$ L- a" B; p1 a) q6 E9 e
  719. INX
    . w: B& X4 e: z* r# z% J! I
  720. BNE OAM_Ram_Init_Write
      W* B  f/ n! l" z/ f' ]
  721. RTS
    9 y. ~$ k3 m- a0 ]8 z8 z
  722. 3 @) p2 @+ e' {' H3 p. }5 n. i. J
  723. ;==============================9 c  N2 d* h. U) F( C
  724. VramClear;初始化图形内存
    4 l/ b! a( c* v  @; Q7 c
  725. LDA #$20; U! M" k* R9 t! x' T0 j
  726. STA PPU_ADDRESS& j: T0 q6 t9 T" X; L9 Y  }9 R
  727. LDA #$00
    ( d- |# O2 {8 ]8 z* G( R
  728. STA PPU_ADDRESS
    : u/ W( M6 W* }( P, T6 T
  729. LDA #$00* F* U+ l0 F6 d8 w2 A6 Z' p
  730. LDY #$005 Q4 @  C% e" X- I; ]
  731. LDX #$10) i1 E7 [0 _/ _3 z) Q
  732. VramClearWrite
    & E: u0 U7 f( ^" g7 w0 W, P9 c. G8 Y
  733. STA PPU_DATA
    % z1 G2 P' Q. R$ E4 `1 m3 i) Q
  734. INY
    & a7 |1 `8 B& `
  735. BNE VramClearWrite
    $ Q, T# `! u: K. `: q; q8 I
  736. DEX' F6 l& Y( v: t$ g- v$ \
  737. BNE VramClearWrite
    7 e; v1 U$ L  G. T
  738. RTS$ |: u" g! _2 u0 f' W8 I& L
  739. 3 I; Q; X4 _0 R. j: G; p
  740. ;==================================================
    ) J" x% b4 {- t" K  w3 `# S
  741. ;设置MMC3图像bank
    ) o4 n/ ~- B( z* }
  742. Init_MMC3_Chr_Bank
    2 N% D1 {/ z. L' G! N3 K* P
  743. LDX #$05
    % M' |! R# `7 o9 P8 M. Y
  744. Init_MMC3_Chr_Bank_Write+ W) a( D9 E+ c+ B7 R
  745. STX MMC3_BANK_CTRL
    $ C  w9 c. y" m9 j- s1 \  X
  746. LDA MMC3_Chr_Bank_Data,X
    ! B2 l# {; V5 ?  B4 A" h7 u2 u0 F
  747. STA MMC3_BANK_DATA
    % y0 n/ ^+ l* g2 a* g! T
  748. DEX9 D+ S( _, w4 L- C8 ]0 M
  749. BPL Init_MMC3_Chr_Bank_Write1 M9 J$ P1 t# m; D! Z
  750. RTS
    0 X9 ~/ N' b, t! D  g9 r
  751. ;--------------------------------------------------
    7 ]/ `8 G" @7 A4 q! B9 t2 \
  752. MMC3_Chr_Bank_Data
    ' Q6 p: m! V& [  K) ?! }
  753. .DB $00,$02,$04,$05,$06,$076 Z: T. g3 G6 b4 Z1 [

  754. % i3 u' g. I" Y4 t3 s5 {7 E  @9 k
  755. ;==============================* B0 o% h$ s+ P: u. y2 M
  756. VramInit;初始化图形内存
    ) n8 j' `$ n0 V9 V) _, s
  757. .IF CHR_RAM_ENABLE
    * }$ M2 v! p( e' ~, r: U5 Y3 o
  758. LDA #CHR_DATA_BANK( J2 i, [3 S4 R' a
  759. JSR Switch_Bank_A000$ r4 @/ [  ~7 ], C9 W# j
  760. LDA #LOW(CHR_DATA_ADDR)
    & l( M1 h# @4 R
  761. STA <Data_L
    6 _7 l" Y" `% g8 b
  762. LDA #HIGH(CHR_DATA_ADDR)- g- t# q6 Z3 a8 U* N" L7 A
  763. STA <Data_H4 k: h- X0 j$ O$ ]: k1 }# q
  764. LDY #$009 S* b9 U0 o9 \1 r1 a* }7 G% C
  765. LDX #$20
    * }+ [( l6 j4 q9 s# P* b& A- _
  766. LDA #$00; Y7 p3 N: J  Q( N5 M2 o& Z- O
  767. STA PPU_ADDRESS
    0 ]  L8 K3 \% ^2 j7 A' _# V
  768. STA PPU_ADDRESS3 F/ t, p* ~% s9 x) G2 s# W
  769. VramInitWrite$ c% e, K7 m7 v. s% c/ E  P
  770. LDA [Data_L],Y; E; g7 j' J/ m. \
  771. STA PPU_DATA
    0 s' r+ p) d* w
  772. INY
    ; {+ P- z0 K8 Z4 |$ ^0 f
  773. BNE VramInitWrite
    7 q. L9 W4 B. Q4 j; G0 |
  774. INC <Data_H4 K8 y0 a' G/ t% C" B  |
  775. DEX/ r( p4 w% n# w3 A
  776. BNE VramInitWrite
    4 s2 o! X3 N8 P' U+ M
  777. .ENDIF
    / u0 Q/ n" ]  c( m* I$ Z
  778. RTS
      y1 [% ?' C/ F
  779. . z  O; H; J& T8 Z0 m$ C
  780. ;==============================6 a9 V% \- C. @5 X! R4 F
  781. ;音乐切换
    2 O( Q: a& F, d' ^+ V
  782. Music_Play_Change" z9 E! n4 Y: I  V7 E, s
  783. LDA <Key_Once! d5 @* ?5 S. Y5 D2 T
  784. AND #$FF
    : K; R7 n# T" y- ^& v
  785. BEQ Music_Play_Change_Check
    1 ~; c- g7 V- P9 t
  786. , X  W9 ], c# f7 M8 t  ?5 V+ r6 g/ F
  787. ;禁用音乐条刷新
    " B$ a1 M+ r( g4 D% ^
  788. LDA <Text_Disable_Flag- [* u9 w2 W5 E: s
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    0 H/ F0 n0 {+ U0 F2 T
  790. STA <Text_Disable_Flag
    5 e2 H: g5 ]4 @% k: Z% j

  791. 8 A7 K3 `) B% D% {$ m3 ?
  792. Music_Play_Change_Check# r' v5 M, X! a1 ~+ Y" j
  793. Music_arrow; o$ i6 C4 A3 ]
  794. LDA <Key_Once
    % ?+ t* S! [& j' m. ~
  795. AND #$0F
    , `3 _" R( a. _: T( i$ w, z
  796. BEQ Music_Play_Change_End
    3 `, b! [; T" {8 A1 s4 K7 f* a
  797. JSR Music_Track_Change
    % ~# [1 u  s/ M( D* l
  798. JSR Sound_Reset_Proc+ u# j' b/ o0 v2 W  Y( A
  799. JSR Music_Show
    3 U! P, R6 [) j! g: L  z6 Y
  800. Music_Play_Change_End
      {& i7 n& a* F' Z4 R1 r
  801. RTS
    # w, i( v( y3 }) t7 b/ P

  802. ) U( {1 |. q: Z. \5 ~
  803. ;==============================5 u4 N( t% ~4 d; S3 P' Y+ G
  804. ;音乐曲目切换
    . e, e+ n% E3 L, q; U
  805. Music_Track_Change& O' w9 P, i, ~5 e- K+ J+ J' A
  806. LDX <Music_Item_Cur
    1 j" I7 N1 Z0 X* L) x# F# [
  807. LDA <Music_Cur,X7 W6 j& X! F# w% U# F- I1 j: Y
  808. STA <Music_Last
    ; L3 }  E( S+ c+ o! J
  809. Music_Decrease8 i& f8 T+ O) j5 E* ~' p+ u5 j+ ~9 u4 n
  810. LDA <Key_Once. y# D6 l% L9 [9 q% `
  811. AND #$42
    , V( _/ r2 `5 T4 k! Z: s
  812. BEQ Music_Increase: M% M+ g2 z' i& u# r# t
  813. LDA <Music_Cur,X
    2 ]; G5 m5 |$ p. v
  814. BEQ Music_Increase' _6 b/ \/ a# V' ]
  815. DEC <Music_Cur,X+ q2 s( q- X' d$ c
  816. Music_Increase
    / y* K/ f; _+ g
  817. LDA <Key_Once
    0 n( @% M; u$ A" [1 n. n* G
  818. AND #$81+ k* U9 C! q0 S) `
  819. BEQ Music_Decrease_10
    ' U# k3 |, {6 C' S
  820. JSR Set_Sound_Total
    ; F2 N: c7 r% y) v
  821. LDA <Music_Cur,X7 i1 x6 R* M3 s
  822. CMP Music_Total
    ; `+ M# h1 D- M6 u7 Q
  823. BCS * + 4- @1 n5 L4 A8 t
  824. INC <Music_Cur,X
    9 U6 I, K0 c/ X8 H2 l$ I5 ]
  825. Music_Decrease_10
    + B0 ?0 X9 u! J/ b! u* _
  826. LDA <Key_Once
    ; X2 j4 C- S: P6 u& V9 A
  827. CMP #$04
    ; T  |  o; Z" J8 D+ ]
  828. BNE Music_Increase_10
    * z$ j; X; v) U) b+ S) g7 c
  829. LDA <Music_Cur,X
    / v/ J4 C( w$ U) ~7 Y
  830. CMP #10% m" {; v( |; h2 Q
  831. BCC Music_Start_Song_Min: Q0 X8 q" f0 G, C
  832. LDA <Music_Cur,X
    / k4 Z+ H1 J" q5 ]1 s  O2 @
  833. SEC+ G( e( r' i* H; S' j, \6 c+ J
  834. SBC #10
    6 k# M9 g, s$ Q/ f0 H; |$ R
  835. STA <Music_Cur,X3 a" K$ p' H2 E9 O" \
  836. LDA #$00* i1 t  o: I! ^+ [2 ~
  837. BEQ Music_Increase_10+ e6 K( b& |+ g/ k
  838. Music_Start_Song_Min
    0 M4 y- Z4 W8 e" B
  839. LDA #$00, r# Y2 Q$ R. D  U/ u
  840. STA <Music_Cur,X" c9 E4 V( o- O3 j* d# J
  841. Music_Increase_104 C% D- W- N" g: l4 o
  842. LDA <Key_Once
      d' o1 h7 ?: i  X# @3 K! g0 T: N: g
  843. CMP #$08
    + o0 p1 f( P6 a3 H6 `3 G. Z) |
  844. BNE Music_Track_Change_End% T# r( s. D8 h
  845. LDA <Music_Cur,X
    % O& W2 v$ o8 M+ V" K' ?! T" M
  846. CLC
    " {6 [- N/ l3 w: c6 S$ s
  847. ADC #109 n) q3 V1 B0 q$ S2 m# _- ?6 j
  848. CMP Music_Total
    + E8 V" Z5 l$ E0 t! R
  849. BCS Music_Start_Song_Max
    " m4 f( u; |2 g5 }# ^* \2 I
  850. STA <Music_Cur,X9 |' M6 J$ J5 S! s8 T; P/ X3 t
  851. LDA #000 c4 e- }$ H3 H9 L& n
  852. BEQ Music_Track_Change_End2 U4 w% t6 k! m2 d- U. |! q
  853. Music_Start_Song_Max9 i3 ]7 v4 y" p+ c; O
  854. LDA Music_Total
    5 b# V$ O5 A' @4 n
  855. STA <Music_Cur,X
    1 S2 l# E# b- h4 o4 `( X3 N; E1 ^
  856. Music_Track_Change_End
    2 z0 L2 c+ E0 g
  857. RTS, e/ O5 O9 U; B0 y' ]  G+ \$ f

  858. 2 k7 ^. w6 F' D
  859. ;==============================
    % l7 b/ W# U$ D% @  r) \; L
  860. ;按键处理9 s6 Y9 H- R" X9 k3 I
  861. Key_Proc! N7 i3 w! {% o# `. t
  862. JSR Key_Scan# n  `" I3 i! N
  863. LDA <Key_Keep
    0 j3 w1 ^% V7 q- c# n& L
  864. STA <Key_Temp
    . ^/ h1 {# ?8 Y% x( T! _
  865. JSR Key_Scan1 Q6 x; Z9 k9 b
  866. LDA <Key_Keep
    / z0 H5 Q# X8 Z! D! v% U/ \
  867. CMP <Key_Temp" [# z5 F+ c4 [5 M5 y+ h) V+ l( C* @% B' ?
  868. BEQ Key_Get_Once
    7 ~+ X9 u  f, x. u7 h  @
  869. LDA <Key_Kemp
    " s2 [% Y$ G/ x- g2 h+ |* z' ~* {& R
  870. STA <Key_Keep
    * j2 F" t3 k) @. s: Y
  871. Key_Get_Once
    * |- Q5 k& K- Q" g& r7 K# d' v
  872. TAY
    7 Q4 x+ \3 g' |8 B7 a0 d8 t9 b
  873. EOR Key_Kemp0 M- h0 ~) V6 o6 ?( K
  874. AND <Key_Keep* O2 b/ N% r3 G: z. G
  875. STA <Key_Once
    , M' O& k8 k* A4 r
  876. STY <Key_Kemp, x  g& K  _% C6 ~* F
  877. RTS0 h+ j6 L4 {" X8 i' R: H
  878. ;------------------------------3 c0 A- y, I+ ~* C" Y. ]
  879. ;按键扫描
    & t8 z7 v+ {3 a4 a5 m3 a7 t/ s
  880. Key_Scan
    $ R- L( [0 u: i0 s- T
  881. LDX #$01. Y: `- F0 t% E" F% X
  882. STX JOY1_FRAME4 j2 F; n* e8 w: u
  883. DEX
    4 f# }6 S( J$ q3 |/ G, l
  884. STX JOY1_FRAME
    + ~% ~# X1 e; U& c9 P
  885. LDX #$08' s3 [, l+ e+ v/ Y7 O: r4 n) ^
  886. Key_Value$ Q5 S: I4 k! |2 I
  887. LDA JOY1_FRAME7 |) K, W2 Y) R# m, V2 R9 |" L9 c
  888. STA <Key_Getv$ d* ]2 A$ ?) q# V; N4 j* c
  889. LSR A  l8 g$ L$ ?+ H. o3 R! v( h
  890. ORA <Key_Getv
    " e4 H3 ?/ E% ]6 U& C' Y
  891. LSR A
    ) D! ~! p6 a: z8 G* E( i6 c
  892. ROL <Key_Keep: L) u3 k- I$ O, K
  893. DEX
    , E6 h1 L( b6 F' E. `& T) s
  894. BNE Key_Value
    2 Y% p+ B5 K% j  a( N
  895. RTS3 T+ [- B% d% o
  896. 1 {. l; o- I. m8 P; D1 E3 e# f* r  g& A
  897. ;==============================" W- o/ @3 D0 I, f7 Z9 J% Y
  898. .IF SOUND_BAR_SHOW_ENABLE
    ! v8 b6 v$ L' x0 w
  899. ;音乐条显示
    0 m! X  d0 a3 L; L& n
  900. Music_Vision
    ! J5 ^! Q9 b% a# L/ g
  901. LDA <Text_Disable_Flag
    9 F  \$ t5 ?4 v2 E; n  r, r
  902. AND #TEXT_DISABLE_ITEM+ g; f: i+ w, g5 ~$ Q3 K! w
  903. BNE Music_Vision_End2 q9 v: S1 b3 W- y! {
  904. AND #TEXT_DISABLE_BAR! X! B5 f" F5 }5 B$ ~# N
  905. BNE Music_Vision_Set3 R* P; Y8 d: U* D+ ?- ^
  906. LDX PPU_Cur0 l) V1 x3 o9 ]" A2 u5 U
  907. JSR Music_Animation8 B9 }. T6 V/ Z- k/ [" h
  908. STX PPU_Cur. b$ F$ B0 u9 E: B( m+ _5 ^9 ~
  909. Music_Vision_Set. r5 p& r: l: p4 F6 q' U* w
  910. LDA <Text_Disable_Flag
    , r6 v+ ~# }/ Z& F( z: ~& _
  911. AND #TEXT_DISABLE_BAR ^ $FF5 {- l1 n& B2 `/ j. _
  912. STA <Text_Disable_Flag
      k/ Z7 c" g& n( w) X6 _
  913. Music_Vision_End
    6 Y( g* C$ i3 |  x
  914. RTS7 ]0 m5 f- G4 t0 h6 [( R( t% z2 y
  915. ;------------------------------
    ( T8 F. J( F1 i2 M6 P4 V
  916. ;音乐条显示处理
    + V5 Q8 d& @. D1 N/ w$ b! {
  917. Music_Animation
    - m+ O+ H! K* W; M, r! W3 I
  918. LDA #PPU_MODE_CNT_LINE; k# e9 V$ ?* p$ }
  919. STA PPU_Addr,X3 y$ I4 z' S2 W# U+ N' a
  920. INX
    3 N1 [$ H6 a  {& L3 K* ~
  921. LDA #HIGH(Sound_Bar_Pos)' H+ b% A: D9 G! G
  922. STA PPU_Addr,X/ f' o+ M2 u/ i1 g
  923. INX
    0 Z9 u# Z+ q& M5 c
  924. LDA #LOW(Sound_Bar_Pos)
    - {) o) k5 \; _8 y
  925. STA PPU_Addr,X9 m9 M) ]% z! E) o
  926. INX
    3 i& K2 e/ Q0 K; O
  927. LDA #$08) K0 Z: p, `! g& Q
  928. STA PPU_Addr,X6 e8 W/ G* [# S' i  `6 d1 W
  929. INX
    - T, e4 b$ V6 m  W( `2 ?
  930. LDA Sound_Bar3 \) @: r: g: ?
  931. JSR Volume_Convert2 m' A2 s9 r" k6 a0 ]7 ^- a

  932. 9 g5 a1 \6 N4 {# N: p9 B) ]5 N0 }- ^# O
  933. JSR Volume_Set_Cnt3 k5 U$ |6 {! \6 N4 p
  934. LDA Sound_Bar+$48 q% S8 ]$ o4 V- s1 c* e! ^
  935. JSR Volume_Convert" _( J& w* Z, R! j# b' y4 j5 e. O- C% ]
  936. ; e( u# U* E2 k# e% a, S% s
  937. JSR Volume_Set_Cnt5 m$ I4 e4 v! l' I1 L2 x* _
  938. LDA Sound_Bar+$8) j- k8 s4 T8 s. X# p% R
  939. JSR Volume_Convert: q8 M% S3 d) d% ~  E7 z' d6 x

  940. 2 M2 M! @" E% i: R5 _  p5 M
  941. JSR Volume_Set_Cnt
    & J$ b: J* _+ t' e
  942. LDA Sound_Bar+$C  w7 ^* e1 b1 J( G
  943. JSR Volume_Convert* ~; o5 P3 g4 a/ I
  944. / F+ U9 [# I/ v
  945. JSR Volume_Set_Cnt9 `0 m& a2 T* c, |1 {9 Z
  946. 0 T5 s3 R# x( J: _, X
  947. LDY #$10
    % n) n: Q- Q$ b% b$ x. y
  948. LDA APU_STATUS( Z: ~& ~. D$ l- t1 B; b
  949. AND #$104 f/ N, G, a! \( c( w# E
  950. BNE Volume_Count
    ) q6 B: C8 J$ f7 I  k
  951. LDY #$00
    , ^/ R( l1 v+ H4 I& ?
  952. BEQ Volume_Count
    8 W0 S3 a3 O+ @& G
  953. 3 P8 k9 k- X" P# b, H- j. {
  954. ;------------------------------8 r" T5 a  f$ ]: s* ^
  955. ;音乐条处理# k3 C1 y8 A3 w9 o$ ?( L8 Z
  956. Volume_Convert
    4 e3 _8 ]: s9 ]' ]: U
  957. AND #$0F
    - \: F) M( N" u4 ~) G# d
  958. TAY2 @; c! V0 j. k7 D) h' Z6 A1 g2 Y
  959. Volume_Count. N5 y( w! c. Q
  960. LDA #$089 ^9 y6 E) t7 v
  961. STA Sound_Bar_Cnt! |4 M. _' D' ^2 a8 G% }  ~  E5 f0 T
  962. Volume_FILL
    ; S2 v/ y: X+ ^5 D8 L
  963. DEY+ Q' z1 v: Y  u- z+ T
  964. BEQ Volume_Half  ], c8 v! w& M1 ~
  965. BMI Volume_Empty
    . N6 m9 g% j) t' ^# I/ T$ I
  966. DEY0 b' o! c7 r' e. {* k7 u4 k
  967. Volume_Full
    1 z! u+ O& q  k! z$ J7 C
  968. LDA #$16! p, y3 d( X; }
  969. BNE Volume_PPU
    ( m% t( T6 l5 d% R2 U+ F: F' m
  970. Volume_Half
    ! ]" \/ o) C( _9 M
  971. LDA #$15
    ) z5 ?: g3 s# T+ q: y
  972. BNE Volume_PPU
    . O  J+ R5 U! P0 x4 n" ]
  973. Volume_Empty
    % U4 {5 \$ m! i5 h; t6 C% Z6 J" j
  974. LDA #$14
    ( |6 P8 _8 L) _. Y
  975. Volume_PPU& k" w1 K3 y6 r) r& i
  976. STA PPU_Addr,X' m' Y! x6 }4 V* U  o
  977. INX
    1 s) V) J0 C# U8 R% o% [* `( p
  978. DEC Sound_Bar_Cnt- v. q$ m. l1 y7 B3 @# n% v$ R
  979. BNE Volume_FILL8 p0 s" r0 y9 H. q, F
  980. RTS
    9 t# S2 k& `3 \7 T
  981. 2 o6 }' {+ O: {4 {/ z
  982. Volume_Set_Cnt+ ?( s' v) |2 s) _: g
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    ( `  N$ `" h6 A
  984. STA PPU_Addr,X
    7 G1 R. S! a7 z4 g; o( u5 x, w
  985. INX
    2 W/ C" R; L& H" J9 t6 ^
  986. LDA #$088 c3 |" Q' `" {# j
  987. STA PPU_Addr,X4 C# v8 G6 E0 w- ]
  988. INX' L+ A" a- N8 m% y. V0 _$ R
  989. RTS
    8 `, i# a9 [1 ]9 d  Y
  990. . t; _/ a1 P; {$ s
  991. .ENDIF
    4 K% c2 y8 @+ `" N; j- I. G, z
  992. " }- w! Z" D: A5 i: O) V# s
  993. ;==============================
    / C/ j8 G& y3 `  M3 F
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入* d+ Q' E( i: x6 c1 |- l1 P
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    4 G: V: [- a% t
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    & n  s0 w# S: @9 Q
  997. ;------------------------------
    ' M0 i3 A8 r" h% K
  998. ;PPU处理0 }' a1 c! L0 i" B: W+ W7 N! Z
  999. PPU_Proc
    % ^5 A- J4 g9 _3 a0 P
  1000. LDX PPU_Cur+ u- _" {4 w) o! p! f: M6 T
  1001. LDA #$00
    9 {  n0 l3 B6 h3 a% C
  1002. STA PPU_Cur7 y1 G) V0 I) @0 {# `
  1003. STA PPU_Addr,X/ h5 ?9 z  i6 f1 S7 ?
  1004. LDA PPU_Addr
    4 G6 H- Y+ P7 t
  1005. BNE PPU_Proc_Beg
    6 T' [" N: l" c7 D: r3 F0 l; O# k
  1006. PPU_Proc_Ret; N9 D; H1 e% z. G+ l
  1007. RTS  `  o$ d( F( {7 p  }/ `4 l8 e

  1008. 7 u8 T* b. y) Q. h/ z
  1009. ;------------------------------
    6 k% u& U4 h: o% G: e2 y  I, q
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    % U+ I' E( @& Y1 C* L$ y
  1011. INX
    6 E$ m4 s6 V: f1 ]
  1012. LDA PPU_Addr_L
    * y. g# N+ j  F) N& ^7 d9 ]) I" x
  1013. CLC2 V; [+ o6 a, ^" O/ k4 o
  1014. ADC #$20
    ; ~0 Y1 n( X. p4 e3 U9 n2 J3 R
  1015. STA PPU_Addr_L
    " ~9 ?$ g6 K8 z# _* K
  1016. BCC PPU_Mode_Return_Cnt_End
    ) q4 x, |% E2 a* J
  1017. INC PPU_Addr_H$ y; t/ N" ~& q) U1 c6 c" @7 Y6 x
  1018. PPU_Mode_Return_Cnt_End
    - Z+ R9 d/ }+ [( E+ `9 r, H
  1019. LDA PPU_Addr_H
    7 H4 t3 s1 A0 D" b* ~3 z
  1020. STA PPU_ADDRESS
    / f8 z' Z+ v# Z* [  B
  1021. LDA PPU_Addr_L
    . k; h1 @! f5 c0 M& N' ]
  1022. STA PPU_ADDRESS
    4 i8 o$ R0 |8 p  \% Q% h, V2 c. b
  1023. LDA PPU_Addr,X. J! f4 U' k! _. k0 h: K9 r
  1024. TAY  E8 l& e0 w+ G* i% ]
  1025. PPU_Mode_Return_Cnt_Write8 Y: y7 x  n% K( e# m
  1026. INX! t2 B1 z8 ~; X. G1 U
  1027. LDA PPU_Addr,X
    ! g4 M# H! ]/ B" k; ]9 |/ r
  1028. STA PPU_DATA
    ) I9 y  n+ M: C/ P- X( \
  1029. DEY; d+ n! S% a' a9 D; }0 @: c
  1030. BNE PPU_Mode_Return_Cnt_Write
    9 ]0 b8 [0 t& l; q. o$ l
  1031. JMP PPU_Proc_End! k" y  ?0 j7 m6 T( m0 v1 U  p6 V  D
  1032. / b* C. d( o3 s. g" W& G
  1033. ;------------------------------' Y3 e; @6 \/ [( s0 \% ^4 b0 k( R
  1034. PPU_Proc_Beg  ;处理开始
    ( @  m. |# {  q% O& K0 D
  1035. LDX #$00
    % B% v1 S9 ~: I8 N
  1036. STX PPU_MASK6 Y% i0 i& k4 P- K% B
  1037. ;------------------------------
    0 z% ^) Z  n9 r, ^, w- ^
  1038. PPU_Mode_Select  ;模式选择
    2 c. K3 S& j! f6 d  I0 L
  1039. LDA PPU_Addr,X8 ^/ N* p- Z: w- A( {& Z1 w8 s
  1040. CMP #PPU_MODE_CNT_CLEAR' A+ |; ]  V8 i$ u2 ~( m
  1041. BEQ PPU_Proc_Clear
    3 ?+ ], W! r4 j' K. g# G
  1042. CMP #PPU_MODE_CNT_LINE8 s" \1 w" {) |, Z3 j+ \2 z: [( q
  1043. BEQ PPU_Proc_Cnt_Line
    9 d4 b6 i: Y8 c4 Y% C
  1044. CMP #PPU_MODE_CNT_LINE_NEXT& c6 `6 o! c1 V2 t5 E
  1045. BEQ PPU_Mode_Return_Cnt
    : c" M" ^9 J# E, R' w
  1046. JMP PPU_Proc_End_Write
    9 R) U5 o7 y7 a5 e# d4 |8 ?
  1047. ;------------------------------
    , u/ a0 C) K1 g- Z, V
  1048. PPU_Proc_End  ;单行写入结束$ d! |! ~$ R5 s! A
  1049. INX8 _3 `$ l. W. i
  1050. LDA PPU_Addr,X
    1 {3 F0 D6 V% F  f
  1051. BNE PPU_Mode_Select& F) G3 Q& w: L( u: t
  1052. STA PPU_Addr
    . K) B! t; S7 W- c; E3 u
  1053. JSR Update_Palette_Color
    ; D4 s) G" P& R8 g' Y

  1054.   E9 b) F1 w" I
  1055. PPU_Proc_End_Write
    1 ]# Q6 ^- z0 X+ t7 m( k4 B
  1056. LDA #$00* o' ^  k& M6 p( d6 c2 Z6 Y
  1057. STA PPU_ADDRESS
    + @, v& y" S0 k( O
  1058. STA PPU_ADDRESS
    - l1 C- J# ^# ]! X7 Y1 N. {
  1059. LDA <Text_Disable_Flag7 j! r4 x+ [" l( Q
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF$ q5 V$ C' H6 ]" Z  l: t* v7 }* s) u
  1061. STA <Text_Disable_Flag( r0 p* t: Y8 D& B: J
  1062. LDA #Scroll_X) B/ D7 v! y3 {# x/ [
  1063. STA PPU_SCROLL
      X2 l5 B$ r" l! h
  1064. LDA #Scroll_Y
    ; ^+ U, A, O2 ~. M) I! L: @
  1065. STA PPU_SCROLL
    1 M2 Z! Z7 L0 U- M! y7 Z
  1066. LDA Screen_State
      H9 f2 T7 B! _4 N- A: R
  1067. STA PPU_MASK/ K# b. q" y2 v* P* Z/ B9 }
  1068. RTS
    : |& r$ t. J' N1 q! O
  1069. 2 J* N+ ]4 ~/ B2 F
  1070. PPU_Proc_Clear/ a5 |5 {  `) v/ C# _
  1071. INX2 p( I/ r, H, E3 j
  1072. LDA PPU_Addr,X" r. K  R$ Q5 b
  1073. STA PPU_ADDRESS6 Z0 r( ?& R: d/ B# s% B! _
  1074. INX
    $ [* ~0 [8 P8 e) q+ G' H' P' C
  1075. LDA PPU_Addr,X  h: \! [1 }% b3 u/ ^9 n1 ^
  1076. STA PPU_ADDRESS
    * G7 m4 N0 D6 Z; d
  1077. INX/ y3 J2 a: ^( X" O
  1078. LDY PPU_Addr,X- _# @- c9 Y' b: z* |! z  Q
  1079. LDA #$004 x, n" ^! D+ o% l  k1 {, ^
  1080. PPU_Proc_Clear_Write# ?) j7 B: M: d! t
  1081. STA PPU_DATA
    ) H- O4 C9 D: H  V
  1082. DEY
    $ {; @8 r' F, z1 K! N
  1083. BNE PPU_Proc_Clear_Write" v% n( P- q$ R9 h
  1084. JMP PPU_Proc_End
    6 J& C  x+ U  T/ B3 A  r7 s& A. w
  1085. 4 U* S2 h, I/ q
  1086. PPU_Proc_Cnt_Line" D( _# h6 Z* {" q) g
  1087. INX
    4 c1 T+ [5 ?# A) ~$ n, D: [
  1088. LDA PPU_Addr,X9 X2 G6 v, |+ m; `) r) H% S
  1089. STA PPU_Addr_H( u1 S! @% `% [
  1090. STA PPU_ADDRESS
    2 ^1 ?( i% x  @/ x
  1091. INX
    4 X/ C% \) J& ^, u* y9 V5 L
  1092. LDA PPU_Addr,X: j+ H$ }4 h! r( [' i
  1093. STA PPU_Addr_L
    # v& Q1 l" M4 D. b% I: f4 D$ O
  1094. STA PPU_ADDRESS
    * O8 q1 B5 U/ Y# ~; l
  1095. INX3 U- z- p; y8 N9 F9 j/ |# R8 S+ Z  u
  1096. LDY PPU_Addr,X
    6 f. ?2 B  R! X; L2 v
  1097. PPU_Proc_Cnt_Line_Write
    & z  @& m' \$ q0 ]
  1098. INX
    ) m# r' ^  r# m- G1 [
  1099. LDA PPU_Addr,X- n7 j8 i. a. w5 M6 S" W0 M
  1100. STA PPU_DATA
    7 }  i* X% W0 p6 ?9 b. m7 V
  1101. DEY
    5 s+ A$ G! D& Z
  1102. BNE PPU_Proc_Cnt_Line_Write
    , T$ f! O8 W, \9 v2 l2 N1 z
  1103. JMP PPU_Proc_End) M" R$ j! r6 i  a
  1104. # }2 ]  o2 c' z1 _) E" u( C; l
  1105. ;==============================
    . y  Z) V- c# V; z. ?3 R" g6 [6 Y
  1106. HEX_To_Dec;十六进制转十进制
    . [0 _/ N" r+ I" Y  y# O# M5 V
  1107. STA <HEX_Data
    4 j0 [2 S- g" ^' b! v
  1108. PHA# Q  J; V+ A% t& H( P' l
  1109. TXA+ _: i$ y  E: \6 v6 ~
  1110. PHA
    ) z& d. @# W0 U2 _& U
  1111. LDX #$00* Q4 P: S( D' ~5 ^
  1112. LDA #$00! k+ g! [9 u. L8 J) J* d
  1113. HEX_Cln, S! J( ]- t0 o1 l/ Z8 `
  1114. STA <DEC_H,X3 f$ s- U; }* B6 ]4 Z0 ~. |
  1115. INX
    2 w7 c7 a& o, R! U/ K4 T5 j
  1116. CPX #$03( G0 q: B& o" V8 S# G
  1117. BCC HEX_Cln  Q- w! E/ v& m; Q% A, G
  1118. LDA <HEX_Data+ z& v- o4 _+ S( h; S
  1119. ;------------------------------
    ' Y9 p6 t! [2 a$ z6 G7 V
  1120. HEX_100/ A0 {) D% l- }' [$ {+ C( [
  1121. CMP #100  \  Y4 P9 d6 z$ h
  1122. BCC HEX_10
    7 O1 P9 s4 f) w& z) @
  1123. SEC
    9 o; h; |0 g5 s# R" C
  1124. SBC #100/ Y6 t- M. u2 ~  [
  1125. INC <DEC_H
    * W( R' f: I1 V# _( m5 x
  1126. BNE HEX_100; Z& z) T/ @  ]8 `/ M
  1127. ;------------------------------
    1 a7 b- L% A" u2 }
  1128. HEX_10' ?5 ^3 B/ c6 }* {, n
  1129. CMP #10  ^) ^$ |8 }  Q( X( H
  1130. BCC HEX_1
    9 e4 F3 A4 Y" w9 L2 f( ?
  1131. SEC
    + s$ N. ^, z9 M/ O% F2 _/ w
  1132. SBC #10
    ) ~# R. Q: {  T& G
  1133. INC <DEC_T1 G2 O! F1 b9 H& V( S
  1134. BNE HEX_10$ B$ K1 D- R: a" |6 k
  1135. ;------------------------------
    , x$ N9 ]/ B$ N1 B0 P9 m( z3 _
  1136. HEX_1
    . n! @+ S' C" C% C
  1137. STA <DEC_L
    1 a, \* r& ?* T! U. u
  1138. PLA
    / R0 R; F, ^  f% q
  1139. TAX
    7 ]1 [7 h% g- x" V3 m0 _. `: G! t
  1140. PLA
    6 d6 @5 H$ O5 P& z5 J. }
  1141. RTS- F& p5 x3 Y3 t5 F% N" Q
  1142. , D% q8 J# h8 Y6 }2 x' k/ P
  1143. ;==============================
    4 s* [0 {: @5 v5 u* p; n
  1144. ;音乐曲目显示
    . @9 S9 l$ z! D" {
  1145. Music_Show
    1 X5 f9 Z7 V. m" S1 I: }
  1146. LDX <Music_Item_Cur% t# o# H5 o$ s( i- n1 r
  1147. LDA <Music_Cur,X4 W3 ?" c: f0 m% x9 {1 t
  1148. CLC" _& n3 M- ]$ U9 H8 e
  1149. ADC #$01
    ! L3 |+ A4 d) o& q
  1150. JSR HEX_To_Dec2 h/ Q2 _' D$ J6 |6 U0 r  Q' j
  1151. LDX PPU_Cur5 R" _& ~/ a( N$ K" r
  1152. LDA #PPU_MODE_CNT_LINE) A5 v/ m6 V! l2 ~+ S, m
  1153. STA PPU_Addr,X: q- [; B7 y0 [3 y
  1154. INX
    2 Z0 W. k7 X8 O: ^, H0 A
  1155. LDA #HIGH(Play_Index_Pos)
    # ^, I' x0 W6 @& K( [2 R
  1156. STA PPU_Addr,X0 r6 U! b% F- j8 c0 n+ u
  1157. INX
    " o! [6 s2 ~8 w; V* h% |$ f( A
  1158. LDA #LOW(Play_Index_Pos)
    " y7 J5 ~9 P/ G$ w9 x* L
  1159. STA PPU_Addr,X+ h( f" e' e/ `0 G
  1160. INX
    ; Y- k& L$ Y6 d! T$ r6 y# i* n. o

  1161. ; G! Z' l+ e* B+ g9 ^
  1162. LDA #$077 A# i( H, Z5 p' w! I4 X( J, U
  1163. BNE Music_Show_Length5 J: O  s% v) N1 p) y

  1164. % h3 w- [2 F( }, H6 O" P: X
  1165. Music_Show_Length
    5 B( H( w1 J0 Z3 d. T
  1166. STA PPU_Addr,X
    1 E! s7 K  d9 j- K3 t! P
  1167. INX( X# U/ p# J+ @/ ?9 _- J, b) _

  1168. 9 _( L2 r" B- A: s! C
  1169. LDA <DEC_H# n8 d# j6 z! C% D& g% X9 |2 s
  1170. ORA #'0'
    : h* Q6 b" W5 o: f7 k* t# P
  1171. STA PPU_Addr,X/ E& i' u% m+ w" K2 \7 A" z
  1172. INX% z" O" c8 Q+ |" {% C7 N
  1173.   f4 G, U9 Q+ A" P" g& \4 x5 y7 x
  1174. LDA <DEC_T
    6 V# H) w/ M; p: U3 T6 p+ I
  1175. ORA #'0'6 M+ f6 Y/ ]8 N
  1176. STA PPU_Addr,X
    7 X- ]% z/ }8 @% u5 u
  1177. INX
    ) Q* P) |9 x+ c5 `1 o0 j

  1178. ' S& w( A: O& u8 b3 i; q8 L
  1179. LDA <DEC_L
    & e* P0 m& @! l4 _. G0 _: G
  1180. ORA #'0'
    " Y- Q8 S/ p/ p, D' D) H
  1181. STA PPU_Addr,X
    * P4 L' F5 T8 M
  1182. INX4 |5 s& \7 z! V, [3 z

  1183. 9 a% Y8 a6 Z; H7 H1 ]( G' {# s
  1184. LDA #'/') B9 n7 S& c, j6 o7 r7 t; f6 D
  1185. STA PPU_Addr,X
    - C. |; I9 v: r5 Z) [8 v' S- f
  1186. INX
    . ^& U$ J- I0 L7 m1 w' E2 C/ x, m
  1187. Music_Show_Total
    ! F" E9 H5 C/ y  F  f. Z
  1188. LDA Music_Total
    ( y- O2 A4 Y2 M) }5 n
  1189. CLC& ^- D' y! j" j+ H+ p+ J
  1190. ADC #$01
    & n8 |1 t/ J- @3 f8 E% M
  1191. JSR HEX_To_Dec
    + ]3 j# n' i: c* a3 ]

  1192. ) m# o2 W+ k! k, D# Y
  1193. LDA <DEC_H. e  |9 n2 a; E7 M$ H, N
  1194. ORA #'0'# B% @8 Q8 a4 v
  1195. STA PPU_Addr,X+ C3 ~- Q  y# Z4 f
  1196. INX
    / v9 Q9 R! D! `* w2 B# e' n% _9 ~8 @2 m; X

  1197. * u* e( \5 V; B' q- z
  1198. LDA <DEC_T
    2 X/ V- D# p* r% a4 v9 n
  1199. ORA #'0'
    : z9 U+ y0 u3 A
  1200. STA PPU_Addr,X) I$ y6 b* _& o  |) @+ h
  1201. INX/ S' G1 v- @/ N' m
  1202. 0 G$ J) ?: q/ J0 N; M! O) J  y  \
  1203. LDA <DEC_L1 T! J3 [0 a' j2 Q" B+ S
  1204. ORA #'0'
    $ X- i- X( [! d. X9 W& A# U0 W' o
  1205. STA PPU_Addr,X
    7 `3 D# ^2 ~) U, {5 l
  1206. INX, p9 V' q/ X' _' |3 d$ F
  1207. ' d1 V- t4 l! ~8 P8 O. W
  1208. STX PPU_Cur
    : {3 R4 ~. l4 ^; i
  1209. Music_Show_End( P/ P' [/ s, d; K! O, e
  1210. RTS
    . O1 }3 o! L# ?! T9 ?* V- R
  1211. . r: ]+ b$ T  e1 w# ]' q6 i" b* ~. o, ~
  1212. ;==============================
    6 Y$ a: M9 x9 N9 x' a
  1213. Time_Show;播放时间显示: p$ `# f# a/ x" S6 H
  1214. LDA <Text_Disable_Flag
    & d2 }, T) g& R& p( N2 b+ i# k1 ^) e
  1215. AND #TEXT_DISABLE_ITEM8 s* f9 ]: q6 t4 P+ w
  1216. BNE Time_Show_End; g7 Z2 ^& `$ i4 u/ `* A* U' s
  1217. AND #TEXT_DISABLE_TIME0 t, ~& q  L8 b
  1218. BNE Time_Show_Enable
    8 G2 F$ v2 j9 U# ]5 i6 a

  1219. ! Z4 v# }) B% ]& c. W1 F
  1220. LDX PPU_Cur
    1 p. I' f* T& i' i) L3 ]& M
  1221. LDA #PPU_MODE_CNT_LINE
    $ s+ l9 Z5 O, S+ Z- c6 D; {
  1222. STA PPU_Addr,X
    / L6 R: Q6 ?0 p
  1223. INX
    / K  R9 t$ b- V: \$ O6 s
  1224. LDA #HIGH(Play_Time_Pos)
    3 z0 X; }3 X8 J, c# j2 ~/ [
  1225. STA PPU_Addr,X
    5 Y" u. a: p6 N% M" @, T" Z
  1226. INX
    0 n1 b7 V4 e4 t
  1227. LDA #LOW(Play_Time_Pos)
    " i( U. E- \( S
  1228. STA PPU_Addr,X
    , w3 Y; \8 d4 L: \$ t& V
  1229. INX) f3 P+ B" D, E- z& f
  1230. LDA #$08
    ' p# A9 c( V/ L3 d: f8 A
  1231. STA PPU_Addr,X
    # x2 m' c5 e7 r# f2 l! N
  1232. INX
    5 W) l- f# O, f1 C: Q. @! Y
  1233. Time_Show_H
    - P+ f. N0 l" V5 B3 \4 P" B
  1234. LDA <Time_H7 I7 R: O. q6 g0 Z# r8 B2 [/ K
  1235. JSR HEX_To_Dec
    " f0 T$ O3 ^9 K8 z" F# i
  1236. JSR Time_Digit7 j& N( K) }0 b' e: P. I: ~
  1237. LDA #':'
    0 K1 K& q; G2 E4 w
  1238. STA PPU_Addr,X
    ( d' D, w; u: U; F* F: l/ P
  1239. INX% o' U, J7 V- a, `4 g5 n
  1240. Time_Show_M
    / _% Y" i  p* [
  1241. LDA <Time_M
    ( B: [4 r: u, p+ A% p
  1242. JSR HEX_To_Dec0 y/ P/ c+ n# m% X0 X
  1243. JSR Time_Digit
    1 b* o  l! r7 c+ X' ?; h
  1244. LDA #':'
    ! x. X: h9 b. q  Q% c
  1245. STA PPU_Addr,X
    & S) k9 M) Q5 Y$ K1 T* Y+ P
  1246. INX
    3 N/ r. F% `" E
  1247. Time_Show_S
    0 s1 J3 ^0 I! ]8 w  Y9 X
  1248. LDA <Time_S
    / s; K$ }, N5 x2 M6 K$ q% h# l
  1249. JSR HEX_To_Dec
    ; G4 c5 {) ~# L3 i
  1250. JSR Time_Digit8 k& [" E$ Q: p
  1251. STX PPU_Cur8 f* n4 c: i: n% x: s9 q
  1252. Time_Show_Enable* `( _. T7 `) v6 e- J- E: o: U  T
  1253. LDA <Text_Disable_Flag
    ' u& H- K( t% \0 V
  1254. AND #TEXT_DISABLE_TIME ^ $FF4 W. ?% n4 I. Q
  1255. STA <Text_Disable_Flag
    7 L- C" B: S2 j, c! p: e+ S$ S* O. ?
  1256. Time_Show_End5 K8 @! |& e/ F) w. S
  1257. RTS& o: _$ T( K. m6 a! V

  1258. & t( h, p$ w0 a
  1259. Time_Digit
    & f# R0 X* v3 ^4 ?, a! ?
  1260. LDA <DEC_T! l$ p( h) Y8 x6 }) [
  1261. ORA #'0'9 Z7 s5 G5 ]) Z
  1262. STA PPU_Addr,X
    7 N; z# M, b; e0 N* p
  1263. INX8 E+ N. K  x# c7 H3 G
  1264. LDA <DEC_L5 ?, B/ E; E4 e" Z, [  ]3 @
  1265. ORA #'0'  T* J3 T3 m# T5 `
  1266. STA PPU_Addr,X/ y, C, D( c# y" U. A; S
  1267. INX
    % E0 F  g! v" ^* ~2 ]& L
  1268. RTS0 v$ k6 |( p8 m! c/ @( S2 g
  1269. : `" F7 _! ]. j) e
  1270. ;==============================  P8 w4 j# v2 ~4 C$ [, y' c
  1271. Time_Count;计时$ O7 p9 o- v8 m/ n
  1272. LDA <Music_Stop_State
    " q5 C0 q4 _8 x* d4 o
  1273. ORA <Time_Wait_Cnt9 b8 P# J9 X) n. J) D. I
  1274. BNE Time_Count_End: H& b+ C! G. [1 @( S
  1275. INC <Time_Cnt9 u- [+ Z2 ]4 e1 M
  1276. LDA <Time_Cnt' X7 g: g, ^. J* c
  1277. CMP #606 [' e( j! B1 |8 K6 U4 j  @1 b
  1278. BCC Time_Count_End
    # d2 ]0 M' d* ~; a5 }$ z
  1279. LDA #00
    & a3 D7 u, x+ V2 R- \, |  _
  1280. STA <Time_Cnt' `# ~! K* f- |
  1281. INC <Time_S9 x7 n8 U2 ?( f0 Z+ ~  `( J. W

  1282. ) h. N2 v: m. V8 ~3 a5 {3 ?1 l
  1283. Time_S_Cnt
    " e2 C, S9 E, I
  1284. LDA <Time_S
    + w' _! K6 d, G3 c& i% u( z2 M# {
  1285. CMP #60; n+ T0 p% U& }" G9 u2 H! A
  1286. BCC Time_Count_End; @. N' {, A1 S) \& V) j2 P
  1287. LDA #00! f3 E9 Z3 \8 V
  1288. STA <Time_S: e: U  \9 E% s; \. l% e: b
  1289. INC <Time_M* A4 @( b0 P7 U1 {9 ^

  1290. : V. Y- X& [+ X* k( u- Q
  1291. Time_M_Cnt" R/ {3 x& O) _$ x
  1292. LDA <Time_M1 y5 Y' f$ `4 X% n
  1293. CMP #606 N5 x$ B! ]# o. M9 x
  1294. BCC Time_Count_End6 o3 r9 t0 v0 [& d1 P1 O! F1 G5 e
  1295. LDA #00
    " r* q6 p; h8 S: [
  1296. STA <Time_M/ b: [# O' T  S8 r! U
  1297. INC <Time_H' f3 V. g$ J# b3 \; H# j" w4 ]

  1298. ( Q6 w( V7 r/ m! P) {$ T* C- C
  1299. Time_H_Cnt! `8 e7 B0 u/ W4 V* t7 O( j# u) m
  1300. LDA <Time_H
    - z1 W# M9 F5 U, R% U
  1301. CMP #24
    0 l9 n' G! ^0 z! `. a
  1302. BCC Time_Count_End% B( j9 H" f0 }( v) ?) I7 t+ d
  1303. LDA #006 \% Y) m4 I$ B# o  _7 d( Z" y
  1304. STA <Time_H8 ^& m  f4 U8 ~$ T' s8 ?5 e

  1305. * C8 D' }! }7 d0 t* J( j5 w; Y
  1306. Time_Count_End
    4 d. b; K) c4 }( J5 z  F
  1307. RTS
    9 i, K2 o5 c2 T  K" j

  1308. , `& R0 p8 a. k5 \# |
  1309. ;==============================
    . ]. _- Y. s( x% O  V1 \9 n
  1310. Time_ReSet;播放时间重置
    * q/ u! L7 ]2 Y% s4 M: h+ ^5 _
  1311. LDA #$00
    6 @% T1 H: {# }% @' r, F0 M
  1312. STA <Time_S5 Y1 [% b  e; H* D: n. W8 [
  1313. STA <Time_M
    * t3 [' I/ q; W2 o" w$ J) g: B
  1314. STA <Time_H
    2 b! }1 `% [+ p& U% I
  1315. STA <Time_Cnt* ^9 n' R5 l7 ^8 q8 ]2 t2 e
  1316. RTS+ M9 N* u/ D7 t7 F0 b3 g
  1317. - U& r/ f; Z" W& i2 J
  1318. ;==============================; A+ S6 Z9 O& v3 L' b
  1319. Music_Bar_ReSet;音乐条重置+ s3 R& m) b# n" l
  1320. LDA #$00
    * L) U* E) ^$ t7 r7 {3 O$ i$ s
  1321. LDX #$002 F5 G' e2 L6 P/ d
  1322. Music_Bar_ReSet_Set  |/ M' k1 |/ ]( P1 f1 `. V
  1323. STA Sound_Bar,X
    * i. U  b) U% ?) l' `+ z
  1324. INX
    0 f, l9 i; J% E* x/ r- F
  1325. CPX #$10
    ( c, U/ F& {# S5 p
  1326. BCC Music_Bar_ReSet_Set' w; `, f' @9 j
  1327. RTS
      N# `( j8 B2 ^4 K) B
  1328. $ r/ i0 |' M3 o- f% W
  1329. ;==============================* L& C9 o' k4 I9 T1 o/ y
  1330. PPU_Data;PPU数据写入
    3 z- b& p5 H) l4 y+ _7 o, ]8 ]
  1331. STY <Data_L: P' u. ^0 L9 J: T1 w" L3 r' }
  1332. STX <Data_H, |  w# E9 h8 W- m
  1333. LDY #$FF
    . b$ z9 V+ F" u9 k' u2 ^4 g" G, r
  1334. LDX PPU_Cur
    5 D. l7 y2 n" A* Q! N& _
  1335. DEX" I1 f7 M9 U) @
  1336. PPU_Data_Beg# z/ N$ u7 O# d  ^# [: l% k
  1337. INX* E9 \( b; X6 g
  1338. INY
    / I! _$ i! k+ \5 ]8 f
  1339. LDA [Data_L],Y
    2 b* H7 \9 O  b/ @& f
  1340. STA PPU_Addr,X1 E+ l3 X' y! H
  1341. BNE PPU_Data_Beg9 x8 H1 C# Y! s7 f8 _4 E4 [
  1342. STX PPU_Cur& ?' B% V$ k2 H  G0 z
  1343. PPU_Data_End
    " K9 [& n! m% N; p) X  [+ w
  1344. RTS% U  @+ x& {2 {+ I' q

  1345. ; n3 c6 B3 C% X
  1346. ;==============================9 L. A! e3 t7 ^* ~. _
  1347. Music_State_Show;播放状态显示  F6 Y8 I$ q3 {2 y- K# I3 ^
  1348. LDA <Music_Stop_State
    5 j( m" j2 y+ r
  1349. BEQ Music_State_Show_Play7 p- b, \- q4 m
  1350. Music_State_Show_Stop
    / }! _( P; k, b! |
  1351. LDY #LOW(Music_State_Stop)5 D1 J. h+ ~2 x& b$ {7 s) S+ q
  1352. LDX #HIGH(Music_State_Stop)5 T0 n; {0 L- `8 b/ `  z/ T
  1353. JSR PPU_Data( J4 x! s4 A2 b; e; {- ~' ?( o
  1354. RTS
    , ~% d9 }1 u$ R1 b1 q. t
  1355. Music_State_Show_Play
      b! t0 M) s" {* [
  1356. LDY #LOW(Music_State_Play)- ?. ]0 s. d" v- k" ~
  1357. LDX #HIGH(Music_State_Play)5 W% T9 m+ @- u3 ?
  1358. JSR PPU_Data+ O4 x+ z" K6 Y, F/ n* |& X% l9 J1 Y) h
  1359. RTS
    8 ^! @9 v; Y/ X; {2 J
  1360. 5 \7 z0 F0 n0 @, _/ l6 }) Q; b
  1361. .IF SOUND_BAR_SHOW_ENABLE6 k3 n4 C  ~3 [' R4 x( y. B4 @! l- ?
  1362. ;==============================
    1 Q' n7 G1 q4 V. U+ B! K
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    0 ^+ B$ o& @/ E
  1364. LDY #LOW(Sound_Bar_Text_Data)- u% _6 @6 Y$ z3 y* Y
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    ! s0 H& j( E( D- [. c
  1366. JSR PPU_Data% r2 ]( R) B$ q  ?  W( S; i7 `
  1367. RTS/ l) C2 ~9 S* w7 K0 s, h
  1368. ! i  P6 F7 l2 J9 x
  1369. .ENDIF) {4 c7 ]6 }. ?+ Y6 ?) l9 e3 A

  1370. + _8 U9 d4 `9 _' l; N
  1371. ;==============================  b/ U5 E" {$ u/ \8 _; F3 ?
  1372. Set_NameTable_Attributes;设置命名表属性
    & g' J3 R# p% X1 v. G
  1373. BIT PPU_STATUS$ F$ i$ r. s+ ~9 b# X) ~+ c
  1374. LDA #$23
    9 ~; L1 z9 Q$ p. S+ l9 M  T/ A
  1375. STA PPU_ADDRESS, J4 ^  X" \7 q  B6 L
  1376. LDA #$C0% d! c6 d4 i/ i
  1377. STA PPU_ADDRESS
    4 G" D0 `4 f' |% w5 \
  1378. LDX #$00. o/ u; ^! c) ?0 R! o4 b& C1 R- q
  1379. Set_NameTable_Attributes_Write! A+ c; I4 H/ J( {" }3 |" p
  1380. LDA Palette_Attributes,X$ [7 S2 s( C7 r1 O$ {8 D% H
  1381. STA PPU_DATA
    5 K1 z5 }8 E7 e
  1382. INX
    - W+ }9 y+ K4 L$ w
  1383. CPX #$40
    6 p) d# k( u4 A( N
  1384. BCC Set_NameTable_Attributes_Write
    ( H3 _* G4 N. r
  1385. RTS+ N/ i- W2 [& d. ^
  1386. $ d& |+ J3 x" W+ Q, t
  1387. ;==============================. C8 V& g! B  {: ~/ Z2 w# E
  1388. Set_Palette_Color;设置调色板数据3 m' S3 e) c8 x& f. L
  1389. BIT PPU_STATUS
    : u& O3 v/ [2 H! C7 Z0 u2 Q5 w8 f2 K
  1390. LDA #$3F6 b/ D! R- w8 u$ A
  1391. STA PPU_ADDRESS0 V  H3 w" x* K8 k) f
  1392. LDA #$00
    ; @! u$ B+ e7 z& n# L
  1393. STA PPU_ADDRESS2 F8 p2 ^  |) E
  1394. LDX #$00
    % Z3 _0 r0 ^' C: C+ R/ g
  1395. Set_Palette_Color_Write6 \3 K  |+ Y! g- k; j
  1396. LDA Palette_Data,X
    1 w, G8 G- o3 e: j  e
  1397. STA PPU_DATA1 b% Q* ]3 K+ l1 Q/ Z6 d
  1398. INX
    ( d+ [$ o/ v: i0 T9 V" j
  1399. CPX #$20$ B7 o0 b! G2 h7 q
  1400. BCC Set_Palette_Color_Write
    6 }% c% L- q6 _8 b
  1401. RTS
    7 m2 j. T: {3 ~1 n% x, t, ]

  1402. . \2 m) r/ Q) Q  x
  1403. ;==============================
    / i  G9 e8 ?3 m
  1404. Init_Palette_Addr;初始化调色板数据
    # W; _4 }0 Z5 Q, }/ S8 W& z. V
  1405. LDX #$00
    4 s/ y; A7 z1 j/ K5 O
  1406. Init_Palette_Addr_Write
    9 b8 j2 H2 b. W
  1407. LDA Palette_Data,X% a1 [/ H$ {) k( R; h1 w) v
  1408. STA Palette_Addr,X
    1 B( s3 X7 e3 q: j8 v- D
  1409. INX
    % ~" J. u( c6 K4 e2 F
  1410. CPX #$20
    % z  M3 J; @* l# t4 Y, |  c' O
  1411. BCC Init_Palette_Addr_Write
    * y7 t' }: h% g& w5 ^- a
  1412. RTS* h& p0 V# J. o1 @
  1413. 3 s2 K' g( c  E) _# ^; W$ C
  1414. ;==============================* Q6 V6 @  K! S: Q/ h
  1415. Update_Palette_Color;更新调色板颜色/ Y$ C9 ^7 F0 r& v* t/ w
  1416. LDA <Palette_Update_Flag3 L0 _0 J$ y: U- t5 _" C3 h
  1417. BEQ Update_Palette_Color_End& |! A% k+ j' z5 o
  1418. LDA #$3F
    ) W$ Y0 G. V7 k# V& z
  1419. STA PPU_ADDRESS+ c1 F( c' k2 ~: ^  j' I; K
  1420. LDA #$0C
    2 F# J2 E  c/ O$ I2 P4 ^
  1421. STA PPU_ADDRESS& T$ f5 p4 R  ?' L9 k
  1422. LDX #$0C
    6 s) J8 h. k4 ?" u( g  e
  1423. Update_Palette_Color_Write
    $ d3 b( H# r8 a, Z. @5 [/ O
  1424. LDA Palette_Addr,X
    1 v# u0 o( h' d! r8 [& W! R# b) a
  1425. STA PPU_DATA: y  U7 g! ?9 u  i' k- i. ]( g
  1426. INX3 a( W, c. H' G' A- p
  1427. CPX #$14
    0 A3 a" ]# E& J( i
  1428. BCC Update_Palette_Color_Write
    7 d3 J2 H- K2 c- l7 ~
  1429. LDA #$00
    . ^8 C" e3 p1 B# |1 L6 J5 ?  q5 a) R
  1430. STA <Palette_Update_Flag# g- N+ ]( P$ ?6 C  u' _
  1431. Update_Palette_Color_End
    . ?- @& J- E/ d& y
  1432. RTS! m6 S0 S, V3 O# J7 Z
  1433. $ t& s' R$ U  n

  1434. ' I  B8 H' X4 K1 r( n) S$ k
  1435. Update_Sprite_Palette_Data/ V* ]7 }0 t" @4 f2 C+ U
  1436. .DB $21; w, N2 b7 |! r# q/ L% f
  1437. .DB $211 S! Y+ w) j( w" s: C, Y; Z1 v
  1438. .DB $111 W) `8 ~1 K' k8 @, h. x8 b& g: A
  1439. .DB $01
    1 y9 u  S- \5 _
  1440. .DB $01* x; ~: B2 q( y+ R/ h3 U6 w& `
  1441. .DB $11
    ; F( d- \2 q% z$ H, F4 P. O
  1442. .DB $21  m2 W6 M9 s2 D5 C4 x+ ]2 G
  1443. .DB $21" y& i: }% c% |5 G* Y9 |
  1444. .DB $118 X9 p8 H7 {4 k, i
  1445. .DB $01) G8 {+ ], j5 @) H
  1446. .DB $11
    , m. {9 Y# W3 r( u; Y! z
  1447. .DB $21& ]+ S3 a, r+ r
  1448. .DB $21
    ) b  [; w5 H( A& d2 L) c
  1449. .DB $11
    % x: U& Z$ C4 ]. H& Q3 V$ J
  1450. .DB $014 L- k) f) @% j
  1451. .DB $11* d8 E2 R1 h+ i, f$ \
  1452. ;==============================& c+ H! n- h! [$ y
  1453. Update_Palette_Data;更新调色板数据
    ( R1 @: h$ y; l, g3 M6 t) E
  1454. LDA Nmi_Time_Count
    / ]: s4 n1 V: a" W/ k1 W2 h
  1455. AND #$08
    * z& N$ H3 L+ Y' y4 \' o  I
  1456. CMP #$08
    " f% w5 I7 U0 R
  1457. BNE Update_Bkg_Palette_Data
    7 Z3 B1 g4 G& ~9 S

  1458. ( w; D7 s4 s2 ^" {8 i+ B
  1459. Update_Sprite_Palette_Data_Set
    4 `" D9 _+ Q- k: Z$ l+ c' Q
  1460. LDA Nmi_Time_Count% _) j  I8 }" I. T7 M
  1461. LSR A$ j8 I7 X+ p; f; b
  1462. LSR A
    : @5 K5 Z' x% R0 H* S$ g* b7 C# n- H
  1463. LSR A
    ' f2 v. c+ i5 P
  1464. LSR A
    ' I( i+ c- q5 X
  1465. AND #$0F
    * H+ s, g2 I5 p( O
  1466. TAX
    + A2 Q  B" F; n5 ]4 Q( c
  1467. LDA Update_Sprite_Palette_Data,X
    6 n' Y* C( V3 ~9 p  C" W
  1468. STA Sprite_Palette_Update_Addr: b" H+ `' o! T9 H$ ^3 S9 q+ B
  1469. LDA #$01
    + L9 R8 U0 t, m$ l9 ^
  1470. STA <Palette_Update_Flag
    4 \5 V! q5 C! R& b: g
  1471. + g. K' v5 @* j3 i  O% D0 n% d" A
  1472. Update_Bkg_Palette_Data
    3 ?9 z# f$ \  D2 e! y$ ]! j5 Z, y
  1473. LDA <Text_Disable_Flag  O. ^4 Y, u: T# m
  1474. AND #TEXT_DISABLE_RAM
    ) s/ U, |5 {* a* L
  1475. BNE Update_Palette_Data_End
    8 ]0 t/ ~7 z2 ^( E2 k+ \3 V
  1476. LDA <Music_Stop_State- k+ k' @4 W8 A7 J) i4 X
  1477. BNE Update_Palette_Data_End$ A/ @8 e$ }; U

  1478.   \9 j5 H6 A4 m3 W5 \
  1479. Update_Palette_Data_Check
    2 N1 Y! k; h* g7 B1 b% b$ i6 }
  1480. LDA Palette_Wait_Cnt
    2 z* E: G* O( W/ f, t( m  d5 a
  1481. BPL Update_Palette_Data_Check_Over
    " s. o, G) W+ P5 [$ `: A
  1482. LDA #PALETTE_UPDATE_INTERVAL
    5 E) a$ Q9 K1 u- G( g/ V3 o
  1483. STA Palette_Wait_Cnt
    9 R. A0 [, T: e- q% Y+ H
  1484. Update_Palette_Data_Check_Over
    $ a9 \6 U: h$ y& L8 j. A* q
  1485. DEC Palette_Wait_Cnt
    . |! ^& S  r" g; Q5 _
  1486. BNE Update_Palette_Data_End( @) `' m/ R/ V9 H4 m; z! z3 o

  1487. ; W) q; q3 Z% k+ P
  1488. LDA <Text_Disable_Flag7 a3 D5 H0 t% {3 i4 k3 v
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    , ~4 b) i6 A0 S
  1490. STA Text_Disable_Flag* d* r% x$ O. q- i/ n: }/ Z/ T
  1491. INC Palette_Update_Flag
    ) K! c( \: W4 C( f( {+ S& L3 X
  1492. 7 A2 u5 P- A$ G/ s6 Y) o3 v# h: u
  1493. LDA #PALETTE_UPDATE_INTERVAL' l* b$ }: M- h
  1494. STA Palette_Wait_Cnt& c6 d  U6 G" ?0 p8 m- a
  1495. 9 e- F' w* i" j$ k  V
  1496. LDA Bkg_Palette_Update_Addr9 O  b7 N, D6 X* N2 {* F7 N
  1497. CMP #PALETTE_UPDATE_MAX
    % s$ r4 ?9 Y6 U. H5 I, V- [! s9 T
  1498. BNE Update_Bkg_Palette_Data_Set
    # X' |" `3 [3 b$ w- Z, ?
  1499. LDA #PALETTE_UPDATE_MIN - 1
    4 l) s6 t5 m5 j, e4 {4 I; x4 r# _
  1500. STA Bkg_Palette_Update_Addr
    ; d6 @' |  ?1 t2 W2 ~! G
  1501. Update_Bkg_Palette_Data_Set9 p! u8 C/ T) P
  1502. INC Bkg_Palette_Update_Addr, o0 O& e6 m- u. n2 D
  1503. ' G" l( M! }& _2 x" \' D
  1504. Update_Palette_Data_End% h$ ]; Z, w) E
  1505. RTS! ~; C+ b' L% v+ J) T' ^, Q7 {9 q

  1506. ( t6 u! g9 w* f2 g) g
  1507. ;==============================
    5 Z0 E: K7 X+ o6 f$ w
  1508. Show_Music_Text;显示静态文本+ v$ N7 H5 w1 Z1 Q( f
  1509. LDX #$00$ K0 y0 I* K& E
  1510. Show_Music_Text_Set5 n# e" C. |6 Y
  1511. LDA Static_Text_Data,X
    4 C5 y0 G' ?6 \, H1 ]# N/ a
  1512. STA <Data_L( M/ u4 a/ \" g4 O. N* R* i( @
  1513. INX
    * E- l  ~7 p( i- x: H
  1514. LDA Static_Text_Data,X' O3 ?- j1 \5 I* J& _
  1515. STA <Data_H
    0 g' B- ?6 w. ~
  1516. INX2 y! p# H1 j& d  p
  1517. LDY #$00
    7 x. r/ d( J& k& H9 X8 A
  1518. LDA [Data_L],Y5 i# z3 @7 c( F+ ]! C
  1519. STA <Data_Cnt
    . x% ~6 O* u8 C+ D) [% R
  1520. DEX
    ; ~2 C1 l; Q: j0 `) Y) b. W
  1521. DEX6 \+ M0 N+ T! E, v2 @8 B
  1522. LDA Static_Text_Pos,X
    ' m3 w% P5 J6 q! N+ ~- M9 o- ^
  1523. STA PPU_ADDRESS
    6 n5 u& {, ]4 C. H% n% E
  1524. INX0 i( Q( j& i+ n/ J9 ?6 X
  1525. LDA #$20" k; r6 t3 \& C  z5 t7 c$ f
  1526. SEC
    ; L9 d( r* ?& }, ?
  1527. SBC <Data_Cnt- [& s, C# N! k% P" P* u$ ~% q
  1528. LSR A* l3 a- c4 ^2 S6 W: g& z0 u
  1529. STA <Data_Buf# k& @! s! ?5 k4 }
  1530. LDA Static_Text_Pos,X7 n/ Z3 K/ ?2 L1 N1 w4 E- r
  1531. AND #$E0( F1 ?% l: ~9 P0 P( j: D: r
  1532. CLC  W$ w7 w: z- b$ f
  1533. ADC <Data_Buf6 }  U1 l7 |( T
  1534. STA PPU_ADDRESS
    ; r2 R- Z  S+ N# U6 T
  1535. INX  }8 o' W2 B9 I1 z4 ]- U% Z- L* s
  1536. Show_Music_Text_Set_Write% G; N' k% E( G. U! B
  1537. INY
    & {8 X4 @9 Z* E9 _
  1538. LDA [Data_L],Y* p: S* A& b' [' Y+ d/ E
  1539. STA PPU_DATA( k* e6 _5 U/ W( G
  1540. DEC <Data_Cnt3 z3 ]9 _2 k$ ?3 v& V
  1541. BNE Show_Music_Text_Set_Write
    : v* J4 X, P7 C: M5 P, `
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos+ U% L2 X' L( D
  1543. BCC Show_Music_Text_Set# w- \: k, E. c2 q! E
  1544. RTS
    ' w9 j+ b' _3 {5 i% V
  1545. * J. H* o9 F- i: _( W$ c
  1546. ;==============================
    ' `0 S8 B1 b7 ]$ w6 `  D- X2 S
  1547. .IF Track_Name_Pos;显示曲目信息
    + G& r; \/ E5 B& e" x2 W
  1548. + N- V& ~' j% ]9 f
  1549. Clear_Track_Info6 O& e. F8 }0 F# q- C0 S
  1550. PHA
    ( e4 s+ [# l  n- H: Z6 b( O
  1551. LDX <Music_Item_Cur
    $ t. t/ f$ {/ i& n" C
  1552. LDA Track_Name_Addr_Flag,X& {6 U8 W2 r' }" P) e* v( h
  1553. BEQ Clear_Track_Info_End_Ex5 L% H/ Z/ ~' E; N
  1554. PLA
    4 |3 ~; k$ [# B9 y# d4 j
  1555. ' l; S- g7 Z) Y/ p
  1556. LDX PPU_Cur
    + @& y: p7 I; n. i7 j
  1557. PHA# f; O9 e9 U5 B  _; }+ N' Y
  1558. LDA #PPU_MODE_CNT_CLEAR1 |9 S+ x" F: o$ c! [8 p: R& l: |
  1559. STA PPU_Addr,X( A9 n& F: N6 b2 L
  1560. INX
    : r# A% p1 K. U( [, w$ ?1 W' p5 @
  1561. PLA  B: f! u9 b, U7 r8 Q
  1562. JSR Show_Get_Track_Name_Center_Pos
    6 L; C1 q; Q7 _3 h7 B
  1563. STX PPU_Cur
    8 u5 f% ~. W0 F
  1564. Clear_Track_Info_End
    4 `" x  j5 {# |3 P- i+ j8 |1 z
  1565. RTS
    ( K5 u3 y% v! i7 \$ x2 H& p- r
  1566. Clear_Track_Info_End_Ex" L' B9 L+ l* Z7 B% }9 t$ \- X6 s
  1567. PLA3 h. x/ O# J4 z! J
  1568. RTS; g8 ]. I2 Z5 M; b2 b% x) G/ g2 Z

  1569. 6 l! Z" e+ H4 N/ k
  1570. Write_Track_Info
    " y, @% v7 D8 y
  1571. PHA
    . @8 S$ u* D% l/ k! n: }5 A
  1572. LDX <Music_Item_Cur0 |4 ^( U! h! e1 Z4 h
  1573. LDA Track_Name_Addr_Flag,X
    - {% B9 z2 \0 ^1 g) V
  1574. BEQ Write_Track_Info_End_Ex
    + w# s- h  {$ l- c0 A# h
  1575. PLA! V8 y2 n+ z3 C5 }4 {/ Q$ P
  1576. ' A0 G% ]! d- o! G% i5 y3 |* s
  1577. PHA- g! T$ A5 L% L; G2 A: [
  1578. LDX PPU_Cur
    ; h/ v: P( i' G
  1579. LDA #PPU_MODE_CNT_LINE- Z0 _$ I0 `. g% ]8 U
  1580. STA PPU_Addr,X
    1 O0 H3 L/ @' {) k& x' [9 _2 L
  1581. INX  z" s, |) J4 J
  1582. PLA! y7 P! ], T6 s* x# t$ H1 n
  1583. JSR Show_Get_Track_Name_Center_Pos8 {0 a" }/ P. |% \* x1 t9 g" \
  1584. Write_Track_Info_Data
    ; P: F2 K1 h5 G+ d4 q
  1585. INY% _5 }7 T8 p2 b) E" x( W$ H
  1586. LDA [Data_L],Y
    ( c6 U2 M/ g$ z
  1587. STA PPU_Addr,X
    7 Y8 k9 l& d# R+ d( \7 T: _
  1588. INX
    ; B( `1 v3 e, K5 g
  1589. DEC <Data_Cnt! r# h8 w5 m" e: V+ L7 D
  1590. BNE Write_Track_Info_Data
    4 ~- b! X0 x6 S
  1591. STX PPU_Cur- p7 F0 n# F  b0 M
  1592. Write_Track_Info_End
    4 g8 i- Z+ q/ y, p* v, K7 q
  1593. RTS4 N0 L* G5 p8 M
  1594. Write_Track_Info_End_Ex
    " _0 `: P) J' R" v: R
  1595. PLA* F7 z; S/ Y1 Q& W$ o
  1596. RTS
    0 ^  r" ^3 ?' V  {% w. k
  1597. - d" {0 R( J/ w7 F7 ^5 U  B8 s
  1598. Show_Track_Info
    5 e( D6 {$ o9 j5 C
  1599. Show_Track_Info_Clear3 n7 V1 Z, B9 p0 D/ B5 p% S
  1600. LDA <Music_Last; f- O) _% b7 a
  1601. $ E- a; S. ]( e* O7 S6 a5 |9 w
  1602. JSR Clear_Track_Info, u# O7 v4 B5 C0 t7 ~( q2 ^9 p

  1603. & G$ d$ K- k5 z4 ?
  1604. LDX <Music_Item_Cur- ^2 d0 Q5 h6 |1 {* S5 b' J
  1605. LDA <Music_Cur,X
    3 y* ?5 u4 j! ~* s
  1606. JSR Write_Track_Info
    6 D$ |; ~+ b) i! w3 B: T( A0 S
  1607. RTS
    ' t2 P# g) Y/ U: N# S) Q

  1608. 9 _& `; t$ i, I2 ~1 E! u
  1609. ;==============================
    $ x+ R3 q  q* U" Q% k
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    9 {9 S3 e( M3 c  Y) u

  1611. ; t9 u+ F$ k; H7 a" P
  1612. ;取出集合名索引) r  m7 V" G9 t1 }$ L) ~
  1613. PHA' Z# K9 C. b) ]) z. v" a

  1614. 8 W# ~8 r7 R" N" }5 s4 O' |
  1615. LDA <Music_Item_Cur( T" s7 M2 {. }8 d7 ?5 U0 `! Y
  1616. ASL A
    * ^2 [4 X$ q2 I7 G* p
  1617. TAY
    5 Y5 i, e+ A# F. a& _+ p
  1618. LDA Track_Name_Addr_Port,Y% C  t$ _' D1 g3 M) F0 K
  1619. PHA
    # e' o  u2 f1 F8 F8 i" w' B
  1620. INY7 q* w& i8 ]$ e0 q3 p, k! y
  1621. LDA Track_Name_Addr_Port,Y) c/ c7 H7 i( L( f
  1622. STA <Data_H
    - P' |5 G: i7 J1 L
  1623. PLA0 I! m' `! A* f% ?9 P( G
  1624. STA <Data_L6 y! [1 |9 l7 x0 c* \" ^( _

  1625. % A, D1 F# v8 Y/ T* c) n# A
  1626. PLA; K5 b3 r( W, F' O# P

  1627. ; `6 E4 m* Z( `. |, U; j3 C9 h$ S
  1628. ASL A, p& j7 I3 U2 P" q( v
  1629. TAY& h" J% r& [8 W4 c
  1630. LDA [Data_L],Y' k  g7 V* j6 ~8 M  {+ P
  1631. PHA5 C8 [% t5 e- C: D4 N6 p$ S
  1632. INY
    % K$ U) K$ F. Q+ `
  1633. LDA [Data_L],Y% j  o; \, s' S' v
  1634. STA Data_H
    . e7 U3 {$ K& P6 D9 U8 Y9 A
  1635. PLA
    2 r9 s) `2 \, M" w) j+ W
  1636. STA Data_L. B+ e5 \5 b1 h+ C. g& q

  1637. # v8 {7 D( Z, b; }0 a8 N, s" A/ r
  1638. LDY #$00
    ; q# ~  w4 K7 I# ]  _! R
  1639. LDA [Data_L],Y! d$ }: V, @5 J* n" C
  1640. STA <Data_Cnt
    * H6 x' ?1 v+ k) u- C7 z& E& D
  1641. LDA #$20
    3 Z, [' C  r  N5 ~8 d& I- n
  1642. SEC
    4 t% P# U8 \& Q9 W" d: q( v
  1643. SBC <Data_Cnt3 D" E7 K* ^% s  W+ I! K, \5 E0 z
  1644. LSR A
    + Y4 k* O; [$ L! L/ m( o6 o6 p- O' `
  1645. STA <Data_Buf3 D* P- k, Q  e8 C$ J8 q* R& S/ U
  1646. LDA #HIGH(Track_Name_Pos): F4 ^8 ^5 x& X
  1647. STA PPU_Addr,X+ P& R; T: `# W; V" I
  1648. INX3 \) D# T* H! Y! F. U- P
  1649. LDA #LOW(Track_Name_Pos)% d# d2 D9 E# K6 I" A3 n& G" }% z8 L
  1650. AND #$E0. P# R: ?8 ~% n' o
  1651. CLC
    1 ~+ {) J; V( T2 v2 q0 K  ]% o
  1652. ADC <Data_Buf2 J1 F+ x1 m7 ^5 W
  1653. STA PPU_Addr,X
    " }0 s" U0 P1 w* g
  1654. INX0 M# q& c6 e& Y! J
  1655. LDA <Data_Cnt
    ; j( F" \# b& D+ |& h5 K
  1656. STA PPU_Addr,X/ D- y6 W; C8 ~# t+ i
  1657. INX" s9 [$ u; C$ Y; K. K# N$ Y
  1658. Show_Get_Pos_Center_End4 R/ {" U0 V$ c' V
  1659. RTS
      I5 f' I. o1 g4 V0 i2 W6 z
  1660. .ENDIF
    . {) a/ g+ I5 d" u; ]

  1661. 4 A" j; H, O0 _  ]/ [0 c* F1 [
  1662. ;==============================
    4 v8 r, D  C; J& T9 {
  1663. ;音乐端口清除0 q  I6 ?5 w0 @8 K3 ?8 M
  1664. Sound_Data_Clear
    ) n# O4 Z6 F' ?; N8 `
  1665. JSR Sound_Port_Clear
    ( B. D( h6 [! M+ I  G/ c; j
  1666. JSR Sound_Ram_Clear
    , ^* c$ x" N# b* w9 R
  1667. RTS( m9 Q! J5 O2 M( _! T" ]

  1668. 1 K/ D9 ?1 G5 l; N# z# g- X
  1669. ;==============================, W9 N! M( a- X$ i
  1670. ;音乐端口清除
    " V6 M3 _! b( T0 @% O. P& g
  1671. Sound_Port_Clear
    : r7 \& r7 B& v+ V! K
  1672. LDA #$00+ g$ A! X) g, C; Q3 L$ o9 ]* f1 D: J
  1673. STA APU_STATUS
    ( n3 ~5 H/ v# Z5 t* V) @; X
  1674. LDX #$00* ~/ W) H2 d+ ~: J
  1675. Sound_Port_Clear_Write' @! a) s  W/ ~7 x5 w
  1676. STA $4000,X
    1 X* Q1 U1 s6 a
  1677. INX
    ! o% H: s& t  k& _
  1678. CPX #$14+ x3 q- n- x% X. p0 c% v
  1679. BCC Sound_Port_Clear_Write$ M- B! J% O; n4 `! y
  1680. RTS
    ) S) Q  N" {0 W+ b, A8 i
  1681. ( T+ c+ Y- d6 |3 T3 g2 U
  1682. ;==============================! y0 Q; x& O8 a0 `8 Z0 Q+ A( a
  1683. Sound_Ram_Clear;RAM清除5 u  v" O  {  [! F; @! `9 S
  1684. LDX #$00" A  m8 l$ v" B" K' O% t
  1685. LDA #$009 C: q3 a! v1 |" g/ S; \
  1686. Sound_Ram_Clear_1$ G( A0 W8 c# {; y. G! S
  1687. STA Sound_Ram_Addr_1,X, {+ s$ C6 G1 l- u1 K0 K/ a
  1688. INX6 P, E7 p# i( j- C7 X- E
  1689. CPX #Sound_Ram_Addr_1_Size
    & U5 p4 t  h; V, p6 X* R$ Q# `0 R
  1690. BNE Sound_Ram_Clear_13 i- ]; H; C7 ^; E; w1 S/ D
  1691. LDX #$00
    9 c3 x9 f+ C+ P0 Z/ ^. s
  1692. Sound_Ram_Clear_2
      }- U% M& N. t7 F
  1693. STA Sound_Ram_Addr_2,X
    4 W' n; }  h& \+ A
  1694. INX+ w( D$ [1 X; C$ @
  1695. CPX #Sound_Ram_Addr_2_Size
    8 M& E6 y9 |/ P1 y; |, M
  1696. BNE Sound_Ram_Clear_2
    % W# D9 D/ A0 Z: z
  1697. LDX #$00+ O& ^/ H/ X, I5 h
  1698. Sound_Ram_Clear_30 d+ c! m7 L$ h( j- [
  1699. STA Sound_Ram_Addr_3,X
    . U" l% S) _1 B% O7 X9 G/ K* i) d' e7 C4 m
  1700. INX& u6 K% ]9 k! r  \9 Z
  1701. CPX #Sound_Ram_Addr_3_Size7 q) T9 M* a' `- `& A9 d$ e
  1702. BNE Sound_Ram_Clear_3: g! c4 ~* g( @# C
  1703. LDX #$00: ~- I3 w2 f8 p( |
  1704. Sound_Ram_Clear_4% _' s! X1 e4 x- U3 f
  1705. STA Sound_Ram_Addr_4,X
    8 p3 C) u0 ^6 J8 _2 W& J
  1706. INX0 N6 j. j, l  Y' w. C6 D
  1707. CPX #Sound_Ram_Addr_4_Size
    1 w8 f: y3 x8 R7 u0 o
  1708. BNE Sound_Ram_Clear_40 L" u5 q. q1 v. O2 e/ ?5 s
  1709. Sound_Ram_Clear_5
      {) f/ q9 p9 g- P3 S3 A
  1710. STA Sound_Ram_Addr_5,X& L; X- Y$ j5 c1 b: z# B* [4 N* C
  1711. INX' o& ~# B  m% B' q% ?8 U
  1712. CPX #Sound_Ram_Addr_5_Size0 F) J+ t- F8 A% U$ p/ u3 `  J
  1713. BNE Sound_Ram_Clear_5
    5 u; E5 X& B3 n
  1714. RTS
    8 e9 B( z1 N# U

  1715. 8 H/ m; l' l+ }( Z* G( F
  1716. Get_Music_Collection_Name
      N9 x7 \5 M+ W7 V$ D8 |9 I% m
  1717. PHA
    : P. W7 }! R: R8 j% ~3 p/ r
  1718. LDA <Music_Item_Cur2 H6 F7 W- s# k
  1719. ASL A
    9 H* [9 n# f$ {, g. s
  1720. TAY
    0 x6 v+ L+ O+ L& X
  1721. LDA Music_Collection_Name,Y
    ; m/ U9 W" L9 H% M, _6 h
  1722. STA <Data_L
    % N- B1 o7 Y' V: J9 c% E- J8 }
  1723. INY
      [+ |: F- C: @0 v
  1724. LDA Music_Collection_Name,Y* N, c/ k# I7 P
  1725. STA <Data_H6 g, |# {& }$ g2 e
  1726. PLA
    * F4 p1 R! I7 ]& S7 U
  1727. RTS
    ! @9 @! `" W7 s. y

  1728. / o$ i5 L7 k  S7 P& c; M1 @
  1729. Set_Sound_Total
    6 k. a0 Q# a% c- b& P/ V
  1730. LDY <Music_Item_Cur6 `7 k/ ^6 z1 g6 q
  1731. LDA Sound_Total_Port,Y7 F/ C! `9 N# [+ ]$ A& J
  1732. SEC1 F3 X; \" X2 K4 O! s+ L! K( w0 k
  1733. SBC #$01
    & b8 Y" ^) ]) w0 E
  1734. STA <Music_Total; \, A4 z1 P, x8 g
  1735. RTS  d$ J( \" B6 u4 _
  1736.   `1 E) q$ K& l) J% k* K, K
  1737. Get_Sound_Start
    - k! ?7 F8 N' l& @8 b
  1738. LDY <Music_Item_Cur8 ?3 P. e; a. i/ ~
  1739. LDA Sound_Start_Port,Y
    ! F! F: x# J% W9 C& s; q; Z: K; K
  1740. RTS
    * ]+ n( @7 C2 |9 \

  1741. * f. @) y# W1 ^$ z) c/ F0 d, ?
  1742. Set_Sound_Init_Port
    9 f2 I/ f3 h& L& p
  1743. PHA
    # |! j( V* q  X7 [$ A; i" C
  1744. LDA #$20! ^! [( h0 {5 Y
  1745. STA <JSR_Addr_Op2 U8 l8 t. @; C% j  ]- ^1 u
  1746. LDA <Music_Item_Cur, m) E: N2 y/ b* i
  1747. ASL A
    4 F) @* ~+ ]$ M1 P8 r2 _( a
  1748. TAY
    5 @$ `7 |/ k% I( e
  1749. LDA Sound_Init_Port,Y
    : Q; s6 Y4 K6 {- l7 b* F
  1750. STA <JSR_Addr_L; _, G+ g) a; a9 C' B- \+ S
  1751. INY
    ) k9 b" B; j% E: ^
  1752. LDA Sound_Init_Port,Y# @, x  Z) D; _8 s/ H* O
  1753. STA <JSR_Addr_H* U4 k( N3 E- S$ |
  1754. LDA #$60
      Z5 p9 k0 f5 Z+ \6 k! R& v. A. R$ W
  1755. STA <JSR_Addr_Rts( Q5 b' |/ o0 k; }6 b
  1756. PLA
    & g! g& n2 m3 `+ A3 s: |
  1757. RTS
    0 o3 K" c( F5 U1 a4 D

  1758. ! k& s0 b# d/ {
  1759. Set_Sound_Play_Port
      c# B2 Q# `( t1 b5 m! a  {+ a, Z) {  X
  1760. PHA
    5 R+ s. O8 A/ E- E' v7 {/ M' J
  1761. LDA #$20( c/ H) p( g4 K; m$ n
  1762. STA <JSR_Addr_Op9 l* @# d; R/ |3 i- L" W% C
  1763. LDA <Music_Item_Cur# t' v( r7 m. K  R
  1764. ASL A
    ' J) o' i1 ~2 M/ m: x
  1765. TAY
    + o8 N& u: u6 d2 d8 I) T; \! O
  1766. LDA Sound_Play_Port,Y3 {: @2 s% P# g4 D4 u6 ?1 y
  1767. STA <JSR_Addr_L
      w( r" ]* q( I3 L4 [* @
  1768. INY
    ! C2 ?1 v* l- @; ~* e! W
  1769. LDA Sound_Play_Port,Y7 @; q. w! c) r/ C
  1770. STA <JSR_Addr_H# J" l: a* i$ i) w+ |. r4 U
  1771. LDA #$60
    + ]' t# u" c. a. g8 R
  1772. STA <JSR_Addr_Rts
    * [( A% `: m3 F+ [6 L  L
  1773. PLA
    # t7 b+ L- q4 N% ~7 b; k2 B
  1774. RTS/ k% B3 ]- a7 N; U6 e) l
  1775. ' l0 M4 |7 p. p& q, P+ `' n
  1776. Set_Sound_Reset_Port4 O& V5 M4 Q- U) h9 S
  1777. PHA
    ' N1 y/ v7 f- E1 ]) `/ o! I$ p- _
  1778. LDA #$201 \+ }' \2 _: _0 c
  1779. STA <JSR_Addr_Op$ a( k; R) s7 c2 N( s
  1780. LDA <Music_Item_Cur
      s( C5 K+ B2 r0 l" V
  1781. ASL A4 m1 \3 ^1 \3 M* @: Z
  1782. TAY6 g& d8 ]! W3 {8 j" K+ A. G
  1783. LDA Sound_Reset_Port,Y: K' M8 }" Z8 @3 d% o
  1784. STA <JSR_Addr_L
    ) v5 A. M% @( M3 U
  1785. INY
    6 d! l: K# u) d; G7 o
  1786. LDA Sound_Reset_Port,Y0 y; a3 |3 f' ?* ?% i' ?  \
  1787. STA <JSR_Addr_H
    7 |) O9 o; t* }4 ]0 {5 x' ]3 U0 ]! h
  1788. LDA #$60& R  p/ c* o6 m$ F1 B7 W  e
  1789. STA <JSR_Addr_Rts
    9 f8 P  b7 l2 Z3 B, \
  1790. PLA
    ) A$ }. S5 c& }; l8 F4 R
  1791. RTS* E8 h: ?3 I& X4 f! ~, v" f
  1792. , t: ]7 f# q+ `& `; E0 x; j, E
  1793. ;初始化音乐bank) c  V/ C( H$ ]( F5 d
  1794. Init_Sound_Bank5 y6 n% K& g# O! {+ s) r" o
  1795. LDY <Music_Item_Cur
    5 I8 @. J. B$ S1 _
  1796. LDA Sound_Bank_8000,Y
    4 f2 ^1 F# h( w/ M0 M
  1797. STA <Music_Bank_8000+ D' x1 W1 Y, ^# Q. s4 D3 N  p
  1798. LDY <Music_Item_Cur
    $ t" d1 k- g0 `* ~! V9 o& f( A
  1799. LDA Sound_Bank_A000,Y
    & x0 S5 S( b) e( F, G. p* g- O
  1800. STA <Music_Bank_A0006 O. M7 a( `4 O! W2 U
  1801. RTS
    5 g1 c! h' Q9 J* u/ Z6 D0 @1 m: B

  1802. - n; J, R6 d( g/ I/ g( @5 O" @, F
  1803. ;==================================================) p  F' C& w2 u( c9 @, f
  1804. Sound_State_Reset;音乐状态重置2 P( `+ J: B) F3 P8 @% f" w
  1805. JSR Music_Bar_ReSet        ;重置音乐条4 I8 S# Y6 D. v9 u! i7 K2 n8 M
  1806. JSR Time_ReSet             ;重置播放时间
    9 v. i8 Q$ A, L' h: Z0 M

  1807. 7 f/ E' ~/ T! j
  1808. LDA #$00. i. k+ p6 x3 b7 R; T; J' e" T
  1809. STA <Music_Stop_State- Z6 l- f5 N5 c7 }. a9 F
  1810. JSR Music_State_Show       ;显示播放状态+ w4 e+ x8 `, z% }; L) `& _
  1811. 1 I$ p/ c6 f' |  b* {
  1812. .IF Track_Name_Pos& Z- F' t, T6 K2 t/ l
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    3 L: n: f9 n- y* n* g& g
  1814. .ENDIF4 b' D' \; P/ G& d$ a7 R

  1815. $ _6 C9 s; R" C' `( I& A6 l: g, \
  1816. RTS
    5 E( |8 F& @, }; z

  1817. / [% @$ d2 C, _* c6 b
  1818. ;==================================================
    " j! D, ?/ u2 }2 Y# p( A6 C7 o
  1819. Sound_Init_Proc;音乐初始化处理) e. @# b4 x8 n7 V# p3 f
  1820. PHA+ m. _* u5 ]. @4 F! `: k0 Q/ L  D
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址% j0 B: w3 P" {9 I" U9 P
  1822. LDA #$009 b$ A$ j# H; O7 Z5 }% o$ _
  1823. STA <Scroll_H               ;重设水平滚动+ j* I. S9 Z* ~# a: O& V) R
  1824. LDA #$0F8 X! u# s6 Z' \5 E5 |/ u
  1825. STA APU_STATUS
    0 B; U+ x) N% U8 [. \
  1826. PLA
    : i6 e0 z( m+ E
  1827. JSR Sound_Init             ;音乐初始化; R6 M3 g+ x( c0 z% g; p
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    7 H  Y" _; }/ j  y8 Q1 R' m! q
  1829. RTS
    ; u0 r' B2 |( S3 G0 V$ C9 }  l

  1830. 5 `; h/ C" b: T; b& x# s
  1831. ;==================================================' O# L5 e( N$ l0 q) I. m% D
  1832. Sound_Play_Proc;音乐播放处理
    $ o. H8 a# U: [6 ?7 m0 d0 Q
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
      ^0 R8 I0 h6 Z8 P0 ]! _
  1834. JSR Sound_Play             ;音乐播放3 k2 `! X) z* r& D  G5 l6 v
  1835. RTS4 ?& g- G" _! h% h( `

  1836. ( C! @' x& C5 A8 D" ]
  1837. ;==================================================
    + q# [. s( N6 _  ~1 U
  1838. Sound_Reset_Proc;音乐重置处理
    6 z1 O0 \' w5 y; \  B# i, t- Q
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ! j7 h- [1 `  o5 t9 w; i
  1840. LDA <JSR_Addr_L
    / j, Q( |8 C8 W, T2 p+ D4 w& W
  1841. ORA <JSR_Addr_H
    ; e: d2 y; H- `& b- ]
  1842. BEQ Sound_Reset_Proc_Default3 v$ G9 b2 X: b5 `; O
  1843. JSR Sound_Reset            ;执行音乐重置  D: a* e, A8 Z0 ]" @3 X  b' v
  1844. JMP Sound_Reset_Proc_Init_Sound
    4 t6 m9 U0 }! Q2 X) t* L+ |

  1845. 8 n3 }, E. z+ V" J; Y
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    2 Q2 A9 g5 i: v3 E( o: T! P9 j1 U

  1847. 2 p# d' C8 K: K6 ~, {
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    0 ^: e# ?9 ~$ o/ `" J
  1849. LDA #$00( {9 m8 G* u/ d! Q
  1850. STA PPU_CTRL
    ! ^! t7 x9 F! X( z; Q

  1851. 5 C( p+ N, H0 b3 B& q
  1852. JSR Sound_Data_Clear
    + J* }* y* m7 z1 b* l2 z
  1853. 0 u5 y& Y5 z2 u, [# I4 I
  1854. Sound_Reset_Proc_Default_Wait5 ~9 F* B6 E6 ?% H# M  d4 J
  1855. LDA PPU_STATUS7 @8 x2 r+ U" z$ W' A6 O
  1856. BPL Sound_Reset_Proc_Default_Wait
    ! b; P0 N* U* \# M8 n+ J8 m% @

  1857. % f* Q- ?7 x- f$ G2 _
  1858. LDA #$00# v/ C5 Q* c+ D1 L( g
  1859. STA PPU_ADDRESS0 t- G1 |  f* E. u$ y+ C
  1860. STA PPU_ADDRESS
      c+ W, S! N* E
  1861. STA PPU_SCROLL1 J$ H/ g  ]" r/ n" D* Y% h( m
  1862. STA PPU_SCROLL
    ) O7 r( N, O  V0 i  b( p. K4 o( A
  1863. . j2 I  \  o7 N/ H$ S; N# f
  1864. ;恢复PPU控制) ?: a" B' I2 @) ?. f* k% L2 o
  1865. LDA Screen_Ctrl
    7 {) N# \3 r" @$ c
  1866. STA PPU_CTRL
    9 M3 Q; x" c# ]/ k! m$ b8 [$ a+ _

  1867. $ H; N' c; {) s& B3 I2 a6 V0 W; M
  1868. Sound_Reset_Proc_Init_Sound* M! J1 v# a6 M4 \* @& C) a( K# s
  1869. LDA <Music_Stop_State
    " H( T( a: [( E8 x+ M; g9 Q
  1870. BNE Sound_Reset_Proc_End+ b; d) J. K3 X4 k
  1871. LDX <Music_Item_Cur0 z7 q! ^# U( ?/ E
  1872. LDA <Music_Cur,X
    8 c' T! u4 J) f- C1 e0 R0 j
  1873. JSR Sound_Init_Proc
    - E% W% C* `- r" F* R4 ]
  1874. Sound_Reset_Proc_End
    2 Q' @. C) g0 d8 W
  1875. RTS
    , r1 z# w0 [: n; r- }. h( b

  1876. / `  c# x. j5 P& ?
  1877. ;==================================================; A1 k2 o: T1 l; j/ q
  1878. Clear_Item_Text;清除页项目6 Y. X# i1 m8 W, o+ J4 U( I  A
  1879. LDX PPU_Cur
      }) R! ~( f! p' b! z
  1880. LDA #PPU_MODE_CNT_CLEAR
    + P( j- |# V% N; n8 X
  1881. STA PPU_Addr,X
    / U  z5 ^9 w. T  ]9 O1 A9 U: \  v* L
  1882. INX3 c) M, T9 G5 Q& t7 e% F
  1883. ; w) J1 [3 _0 G9 V6 w! ?$ S9 H  `  d% B
  1884. LDA <Page_Last
    2 h  I. G, r% x6 q& }% E# ~5 r$ H
  1885. SEC* [$ H! n! c' u& k
  1886. SBC <Page_Last_Index
    * l, f& [, Y) }) \# g
  1887. ASL A
    ' G# `, j* T  m" u" a8 t

  1888. 7 t4 h$ ~3 h" `' D; l; W
  1889. TAY
    $ E) k  a5 z0 Q+ n6 H3 k
  1890. LDA Item_Pos_Data,Y
    ' b' y( [# H! n1 l# V1 g
  1891. PHA7 D$ w9 B/ {  g4 r
  1892. INY
    8 O' X3 |4 X! x/ _' H
  1893. LDA Item_Pos_Data,Y
    ! J  {5 e# Z# m" ]
  1894. STA PPU_Addr,X, n: R/ x) H. f' e2 X
  1895. INX
    % |# Z: w; f3 H) z6 v
  1896. PLA; f' e: V2 h/ n- o- b3 M
  1897. STA PPU_Addr,X1 u% l6 m5 f" Y; n
  1898. INX
    0 X, ~1 F1 [8 s* E# T9 C

  1899. 8 z( m( z0 m7 K2 Z, F. u! @
  1900. LDA <Page_Last
    $ [3 C6 R  Z( x/ l2 V; J9 ?: {
  1901. ASL A# Q" k2 T- m: Z- ?7 D4 \
  1902. TAY
    ; x7 A0 @. {# T
  1903. LDA Music_Collection_Name,Y
    1 k; X" c" k5 |; ^6 E
  1904. STA <Data_L
    / B/ p1 t. v7 P' @' Q" Y3 ]
  1905. INY
    , k3 f4 O/ H" {* w, L7 Y( f
  1906. LDA Music_Collection_Name,Y( N1 k+ M, e) T& _" [! L$ C
  1907. STA <Data_H$ n" m. L. `3 F! s1 M: N) c6 I2 S
  1908. 1 N' j2 K/ R, B. f, z
  1909. LDY #$00
    ) `9 d0 C+ V8 J2 B; I- M; i, S
  1910. LDA [Data_L],Y
    5 `/ r6 M/ b+ M5 g* N& r
  1911. STA PPU_Addr,X% M1 m2 g: ?' f7 h) M) s
  1912. INX1 U+ w0 r7 `9 Y* y
  1913. Clear_Item_Text_End
      T) U0 m! O& W2 T7 x! |: x. v
  1914. STX PPU_Cur. [2 B/ I1 r6 y5 x$ Z) V
  1915. RTS& N: q( K3 p8 W
  1916. 3 K0 K: E5 W# ?# i2 r7 _4 u5 h; b6 I
  1917. ;==================================================( y) T' L" O8 S
  1918. Show_Item_Text;显示页项目
      ^- U7 N8 R! G7 L
  1919. LDX PPU_Cur; g+ U' V3 s# ^0 N1 U
  1920. LDA #PPU_MODE_CNT_LINE0 ^0 V& i* L4 X  G5 n6 E6 W) n
  1921. STA PPU_Addr,X( j; t% w) W+ E- D% b/ t, X
  1922. INX4 W. J6 l. ?' u) ]/ f: P! N
  1923. LDA Page_Cur
    ! k$ Z9 v7 `& P: `( Z! n( k) }% d
  1924. SEC& e8 |5 b% Y$ t& A5 E
  1925. SBC <Page_Cur_Index
    * y( @1 t1 Z/ q0 a  B
  1926. ASL A
    $ T# y$ n5 s, f. g! W( N; s
  1927. TAY8 e5 p: A  k0 p/ P. X
  1928. LDA Item_Pos_Data,Y
    1 ]  M% {% t8 G$ s( {, v8 T3 S
  1929. PHA
    " l3 Y& {- t$ g2 U- e& y1 k
  1930. INY" q# W% G8 J$ @) ~0 Q8 |! p8 y' @0 R
  1931. LDA Item_Pos_Data,Y
    ) b# \# o0 ^0 `- O
  1932. STA PPU_Addr,X. |  z0 C0 i* t3 X* O( b1 ]
  1933. INX' g) G# |' f& f) k" h0 P
  1934. PLA
    8 P1 ]2 B/ r# o1 |4 }5 e0 A
  1935. STA PPU_Addr,X  @: g) w* `, V% @% N; H
  1936. INX, G+ a* _2 C) c" x/ H. v0 `

  1937. + \& R2 N: r7 a/ E1 o% v
  1938. LDA Page_Cur
    9 ~1 B, ~/ `' [8 O( l
  1939. ASL A
    8 M' ^+ t! n1 u$ H% ~7 j
  1940. TAY
      E$ m1 h9 r- f% g6 f6 a
  1941. LDA Music_Collection_Name,Y) q6 _% q- D8 h) J
  1942. STA <Data_L
    ( Q: e6 e! F7 u& j8 C. S
  1943. INY: B3 O, W- a& V" H
  1944. LDA Music_Collection_Name,Y
    + _6 C0 k- W3 |. Y' W2 v7 K
  1945. STA <Data_H3 t. [# o2 F8 O' Y1 K3 P

  1946. / c6 R3 t, R/ X5 H% E$ Z' d* ?
  1947. LDY #$00/ D  `7 v/ k+ y- R, v, U3 k
  1948. LDA [Data_L],Y
    8 c$ L4 t8 A: v2 N7 Y/ Y
  1949. STA PPU_Addr,X
    9 i! P* d, c! D+ |
  1950. STA Data_Cnt& D; l9 u0 W3 Z; B4 N
  1951. INX
    - U- M1 G6 I2 O, b  @3 U' d9 D

  1952. ( K$ t3 n% T+ Y& u# W0 u$ s: I
  1953. INY
    , {; |% n  w) f- X7 S
  1954. Show_Item_Text_Write
    * o! O' v5 O3 K" E9 F7 ^
  1955. LDA [Data_L],Y
    & N4 k# d: @9 u8 z+ J" Q1 c
  1956. STA PPU_Addr,X3 e  ]) k) @: ?+ Z4 x  E& `' X9 x. _
  1957. INY7 R0 Z$ l  O5 R0 X. [  [7 c
  1958. INX, H! s8 G8 N* B4 p; L
  1959. DEC Data_Cnt1 B& k4 n, w& L( ]' F0 Y
  1960. BNE Show_Item_Text_Write
    % K7 C; a4 P* g0 @0 S9 o& E

  1961. ) J5 [! K. Q& F( ^( ^: {
  1962. Show_Item_Text_End& O* x1 p% F; S1 }+ ~2 f# U) T. `/ _
  1963. STX PPU_Cur
    % u& E2 @+ x2 O) G
  1964. RTS
    ! J, M2 k  e( r/ _9 M8 c
  1965. 8 s3 u' W3 |+ L7 T
  1966. ;==================================================3 M+ l* p! v0 X. [0 c9 N8 t
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量0 L& g/ U4 F6 d. R) @* U, ^! P
  1968. STA <Data_Buf* k* E3 _% N% k  \5 E
  1969. LDA #$00/ ^' |: `3 K( C
  1970. Get_Page_Index_Calc
    ; f. Z4 `! y8 w
  1971. CLC0 ?, ^  E' w1 e7 L2 T4 w. k/ f' p8 p
  1972. ADC #PAGE_SIZE% r0 r8 ?# `  y+ G9 ~2 O$ v6 ?" `/ J
  1973. CMP <Data_Buf( d, i) K. B: \/ N# o. Z
  1974. BCC Get_Page_Index_Calc; k$ N9 h4 H; A4 V) o5 P1 i
  1975. BEQ Get_Page_Index_Calc_End$ c8 C# C  r# Q& C, z+ W
  1976. SEC5 I; ~% ?/ |6 I+ ^# u- Z
  1977. SBC #PAGE_SIZE0 s8 P0 |2 p/ H& O
  1978. Get_Page_Index_Calc_End
    " o6 T# c5 I$ g
  1979. STA <Data_Buf" l5 z: o1 z6 s! M
  1980. Get_Page_Index_Cnt
    4 I! m3 p' n( l# R5 \
  1981. LDA #PAGE_SIZE7 s9 g# L2 y0 E1 M; J
  1982. STA Data_Cnt; I* m; m7 ?# ]) R

  1983. ) L6 c/ q# l3 W! c; C1 q! d: A6 i
  1984. LDA <Data_Buf
    % ?+ y7 p$ ^/ ^# f+ `: D
  1985. CLC
    - a+ \* F) c( o+ r6 M
  1986. ADC #PAGE_SIZE
    : ]5 R' h1 [. i, G" M" z
  1987. CMP #ITEM_MAX_SIZE
    3 {" c0 N5 W/ F: c7 ^/ [
  1988. BCC Get_Page_Index_Cnt_End; o8 p) U5 a- P3 I" A5 V/ ~  o
  1989. 9 `! G5 [- u+ S- q
  1990. LDA #ITEM_MAX_SIZE. Q7 S% h7 I% O: `
  1991. SEC2 A  C* ]# I4 u" j) ]
  1992. SBC <Data_Buf
    2 D; l1 M5 Y; u. w7 Z! J5 t: y( m6 P: [
  1993. STA <Data_Cnt1 r  U: l3 b2 ~# O$ D
  1994. " J8 V" f8 h8 W) z1 K7 F9 H# D3 N$ _
  1995. Get_Page_Index_Cnt_End
    3 C5 v. N1 ]- f$ U. e
  1996. RTS; f( y# B. K4 [& L2 l' K/ f
  1997. ( d  n4 \7 I( M& f
  1998. ;==================================================
    - V5 ]9 n- `0 w- j4 q" W; `
  1999. Get_Last_Page_Start_Index
    8 Z8 u8 ~* \* ^. R3 H% s6 J
  2000. LDA <Music_Item_Last; g) q3 L9 m  ^" {0 Y- e
  2001. JSR Get_Page_Start_Index; q) P5 }7 o4 {3 S
  2002. LDA Data_Buf
    3 U1 {; h) W- z( R" f
  2003. STA Page_Last% N% M) ]: x$ s, d7 i- x
  2004. STA Page_Last_Index8 M8 T- B# I( o+ |" X2 j7 a
  2005. LDA Data_Cnt
    & g& k* J& d. s% j
  2006. STA Page_Last_Cnt
    , I! l/ }0 J  g) V* K
  2007. RTS# p* @  {9 ^. {( P6 [% i
  2008. # g6 S0 s5 @. K! I
  2009. ;==================================================
    / z2 ?" T5 q' f3 f( u
  2010. Get_Cur_Page_Start_Index
    4 L3 ^$ J" X" x7 l
  2011. LDA <Music_Item_Cur. n( D! Y. {9 d/ @2 E4 ?% O, a
  2012. JSR Get_Page_Start_Index' k8 {7 z/ ~, X* O* i  [
  2013. LDA Data_Buf! w; x* q1 ~4 J, a9 w- E
  2014. STA Page_Cur' ?% U- M& b5 W0 ^( H, T' ]& c! L2 X
  2015. STA Page_Cur_Index
    5 H( b: `8 }5 n" B7 ]  Q1 G
  2016. LDA Data_Cnt3 j* C4 H& t+ {& f
  2017. STA Page_Cur_Cnt. y+ l  i7 k+ i
  2018. RTS4 c; a: ?# k, ~/ I& {6 F, z
  2019. : D9 a2 D+ a7 B( Y: R
  2020. ;==================================================
    0 Y' }& i) \: Q2 U  c  V6 ?
  2021. Show_Page_Text;显示页文本
    7 C# M' O1 m, A' d- f2 F
  2022. LDA <Text_Disable_Flag& q) Y, P% V" g& V: j" z
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    ; u. Y) M3 Z7 f( R- m
  2024. STA <Text_Disable_Flag
    # ^+ [) ~: Z1 T
  2025. ! b5 v1 ?) g9 M/ ~0 e( e
  2026. JSR Get_Last_Page_Start_Index$ q8 R5 |" @  n0 c8 v: u
  2027. JSR Get_Cur_Page_Start_Index
    ( X" \2 @: V2 x1 d5 _
  2028. $ ]+ @$ x1 b' E- B
  2029. Show_Page_Text_Set
    6 ]1 I" H5 v* A# `$ L& b& N- d

  2030. $ N8 \$ F; m% s# U) M% H
  2031. Clear_Page_Last_Item;清理上一页
    ) G9 q& {* ?/ O
  2032. LDA Page_Last_Cnt9 u0 w; I  f$ e2 {
  2033. BEQ Clear_Page_Last_Item_End
    ! y: j% \5 ?2 }' o
  2034. JSR Clear_Item_Text  q: f+ W7 c2 t
  2035. INC Page_Last0 O" @# ^; _- K, U. i, e2 P7 q
  2036. DEC Page_Last_Cnt# h3 P7 I/ d2 \4 w: s/ a! i
  2037. Clear_Page_Last_Item_End
    6 r% T. R3 V8 F- U# d
  2038. ' ?1 y) n  h  R8 ?  X  V3 m5 u
  2039. Show_Page_Cur_Item;显示当前页
    ) u: U% i( D6 F, H; \6 b& ?& O
  2040. LDA Page_Cur_Cnt1 Y" j9 |! r2 V! b0 B" `
  2041. BEQ Show_Page_Cur_Item_End
    - S. t; h3 y+ ^4 K
  2042. JSR Show_Item_Text  s3 P7 }7 J, O
  2043. INC Page_Cur
    ; Q8 ~0 v+ X* d( {, n5 ^
  2044. DEC Page_Cur_Cnt/ |+ h3 M2 u+ M7 A
  2045. Show_Page_Cur_Item_End7 x  X4 r3 `/ B- R, `
  2046. 2 r. x$ X6 t: L, k% d# g
  2047. INC <Time_Wait_Cnt3 w1 S1 U4 I( o
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    3 l9 J/ k) M1 N$ z" D/ X
  2049. LDA <Time_Wait_Cnt+ R7 V2 F& d3 _7 S9 B9 f+ U: {
  2050. BNE Show_Page_Text_Set_Wait
    7 p! ~* k% m) J7 o' H5 I0 }8 L

  2051. # ], n( E' R  q9 V2 k0 \$ g( `7 K1 E
  2052. LDA Page_Last_Cnt) O, y; b& C$ z7 e, x
  2053. ORA Page_Cur_Cnt
      m. x$ v+ m# C3 i4 e3 R2 O
  2054. BNE Show_Page_Text_Set
    " Z% V2 Q1 h% J. ?: E) g1 U9 y3 f4 }
  2055. LDA <Text_Disable_Flag$ A9 n! i- o9 U3 J. \
  2056. AND #TEXT_DISABLE_ITEM ^ $FF( z' N4 A) `# e9 }! H  @
  2057. STA <Text_Disable_Flag
    1 F$ [! c+ B& K1 }; a
  2058. RTS# K. H# o2 a& F5 S  _0 d

  2059. ! U8 }1 t3 T7 Y6 B7 H! z
  2060. ;==================================================1 r: M' o) g$ X! n' N  T4 ]
  2061. Last_Item;上一项
    ' I1 Q3 G) d) Y' A* E1 z
  2062. JSR Clear_Last_Track_Name( X7 Y2 k& Z8 E- k
  2063. JSR Disable_Text_Draw
    8 Y5 G3 b+ i6 a$ _' O9 F3 j
  2064. 4 X, q0 Z% s0 A8 D
  2065. LDA <Music_Item_Cur% p. l* P: k. b3 Y
  2066. STA <Music_Item_Last- h4 M2 I: k8 `7 q

  2067. * [, {# w7 _2 l; K% f: F
  2068. JSR Get_Last_Page_Start_Index5 o) L2 \1 J# Y
  2069. ( T' \! W$ ]' z0 k! ]7 j
  2070. LDA #$00
    % d6 f6 b/ I6 v4 U8 V: m
  2071. STA Data_Buf& ?/ Y* p' S% h& A1 U
  2072. - o4 j$ x7 d5 F. Q9 a
  2073. LDA <Page_Last
    . L9 J7 k( w! r; u- t' c* o' ^
  2074. CMP <Music_Item_Cur
    + M$ E$ ]" a% Y# \8 A; ]
  2075. BNE Last_Item_Begin
    6 k4 c% [3 K' @) u% v

  2076. + A& Y; ]6 V  ], N: c
  2077. LDA #$01
    $ y/ g2 H. [: |7 c! [/ ]
  2078. STA Data_Buf  D* o2 t. v/ N3 T& e  I
  2079. Last_Item_Begin3 u. j7 u  t- W; t) [( ]. T% n
  2080. LDA <Music_Item_Cur
    3 N; Z5 G  x" p/ D/ ]+ F$ D( i
  2081. BNE Last_Item_Set
    ; s) U* \& _; b/ j1 I
  2082. LDA #ITEM_MAX_INDEX + 1) d2 V. E! V! \/ i4 o3 ~% h# E
  2083. STA <Music_Item_Cur
    ( ]! _" D0 K" v+ w# u0 v5 R. @0 o

  2084. - e, N! y% ]# J3 f6 V
  2085. Last_Item_Set
    % C4 n2 i' s' d. Q
  2086. DEC <Music_Item_Cur
    4 c8 B5 b9 n, c$ b. K' s
  2087. LDA <Music_Item_Cur1 ~# M1 F' C- m& k
  2088. JSR Reset_Current_Music
    , {9 L2 z6 S, D+ i. ?+ X

  2089. " g$ f0 j4 v5 K; R" m" z* s
  2090. Last_Item_Play8 e+ m8 x2 D# n) q+ ~0 I. |1 }
  2091. LDA Data_Buf
    3 l1 z" \$ A: a. u, F7 D" M1 z
  2092. BEQ Last_Item_End
    1 u1 `/ x  n4 `$ n7 o# Z
  2093. JSR Show_Page_Text
    ) }7 c4 @* w+ d* h- R) E
  2094. Last_Item_End* p2 s) Y$ ^( i2 q
  2095. RTS
    ; N0 D) e2 M, k5 n3 {3 [. ?

  2096. " V( \/ Y, N3 u* M: n1 t6 @
  2097. ;==================================================
    % S0 N0 o8 Z8 P6 j
  2098. Next_Item;下一项
    % |9 v- g: v+ H& i
  2099. JSR Clear_Last_Track_Name
    / Z# X" |1 X3 d& Z3 ?- r% R+ y
  2100. JSR Disable_Text_Draw" E7 P3 o1 T) `/ S; o  K
  2101. / r* m% ]! U# r: K3 r/ r1 p; {
  2102. LDA <Music_Item_Cur
    7 e, O$ v2 X4 z& E; x& x( u
  2103. STA <Music_Item_Last5 Z" A2 Q- X/ k; v1 Z: l: n
  2104. % d- k4 I/ j, c
  2105. JSR Get_Last_Page_Start_Index/ O. u% y. @9 Y  g' k. O! X  }2 k

  2106. $ ?- b1 X7 U9 P, {  R
  2107. LDA #$007 @9 t* C$ c- a. O0 s$ \1 W
  2108. STA Data_Buf
    % [7 h) ?6 L7 r+ o- m
  2109. ' q7 ~. `# l/ T
  2110. LDA <Page_Last
    0 i" x& q3 t5 Y" [
  2111. CLC
    # B3 g; X+ c8 n- b0 g' P6 N
  2112. ADC <Page_Last_Cnt) Z, G" P2 U* o+ P. w" z
  2113. SEC. e5 |; E  N" G/ O
  2114. SBC #$01
    ; [" L8 k, X3 [9 V  R9 R6 ~1 `9 U
  2115. CMP <Music_Item_Cur) s5 {- v* F; h! t( v) }2 J+ w
  2116. BNE Next_Item_Begin7 {/ a( l% e) @9 F

  2117. / x% {7 s; A+ U6 @0 a# ]+ N2 q
  2118. LDA #$01+ Z! d! B' B/ i# E
  2119. STA Data_Buf8 w: d8 X8 ^) S$ V9 }: B' r
  2120. Next_Item_Begin6 q" ]# H; L& n
  2121. LDA <Music_Item_Cur$ N: O" E8 I& d
  2122. CMP #ITEM_MAX_INDEX
    7 c" r/ P/ x; X1 V0 Q& Q
  2123. BCC Next_Item_Set
    ! ^! N0 r7 l- v9 F2 I
  2124. LDA #$FF2 J8 t) b. b3 A; o
  2125. STA <Music_Item_Cur1 N* o. j4 i- S" b' l2 z" s
  2126. Next_Item_Set
    + K& n+ \/ d: L3 P9 ?% v
  2127. INC <Music_Item_Cur  R: ~: ?8 A1 Q
  2128. LDA <Music_Item_Cur4 K2 ^. E. X" x; g, ^3 f! Z" Z6 x: e
  2129. LDA <Music_Item_Cur
    2 A# B" K' s* y( M6 ~
  2130. JSR Reset_Current_Music1 k) ^& c) r* N3 P
  2131. Next_Item_Play
    ( \8 O$ D9 r1 p6 v6 f
  2132. LDA Data_Buf
    5 ~. B) ^3 E" C! e* {" w$ t
  2133. BEQ Next_Item_End1 k1 q4 ~6 g/ D" a
  2134. JSR Show_Page_Text/ C# _8 U% N% O
  2135. Next_Item_End
    3 L5 i+ \7 ]" w5 V. A
  2136. RTS
    9 g5 m. }+ F$ i) v% c' z
  2137. 8 A( z( u$ l0 G4 s4 ~; k
  2138. ;==================================================6 x" s& `) n& n; o
  2139. Last_Page;上一页; C# W, i3 T$ V& @* X! {% C5 g
  2140. RTS7 i1 L- _: n6 }8 _- F* f% a

  2141. * @3 u5 g# h5 y& h" ~% u
  2142. ;==================================================' S4 _* _8 \) t, U" e7 i
  2143. Next_Page;下一页
    * h) z5 j0 X8 R7 q2 O# J1 r
  2144. LDA #PAGE_MAX_INDEX
    : P& {0 ?2 c- R4 D) [) r
  2145. CMP #$01- z" q" L/ ?" C) q
  2146. BEQ Next_Page_End
    ; r. c1 N0 X$ h) R. h% d
  2147. % c% F; Z6 J. _! P7 v2 r: m
  2148. LDA <Music_Item_Cur% r/ M* F# x0 A' n# t6 T
  2149. STA <Music_Item_Last
    , @+ Z. Y- x/ p$ V9 |( j

  2150. $ @  \1 u3 Q- i) }/ Z* ?$ W, E
  2151. JSR Get_Last_Page_Start_Index8 C. d, k: z7 ^/ U) R) Q

  2152. / w4 d& v4 @, L" O" y" z
  2153. LDA <Page_Last_Index
    7 e' c8 _" H) R; o2 @1 g& M
  2154. CMP #PAGE_MAX_INDEX8 m" V" c; K  H- x5 Y' f- U4 F
  2155. BCS Next_Page_In_End_Page
    0 c1 P( p3 }* v# g/ G! K* P

  2156. ! [; D0 s  e6 `# \2 [
  2157. Next_Page_Not_End_Page;不是在最后一页
    5 a6 m- U3 k! ^! b7 B5 ~
  2158. LDA <Music_Item_Cur- L3 E) g8 D+ {/ J) K
  2159. CLC
    2 x6 h9 F7 U5 V( J) U
  2160. ADC #PAGE_SIZE3 n, s( y" M4 m' A/ o
  2161. CMP #ITEM_MAX_SIZE$ Q% q5 H: `  ?, Y
  2162. BCC Next_Page_Not_End_Page_Less
    6 H9 o- p: p, v) d" D+ a
  2163. LDA <Music_Item_Cur
    , Y! s4 H! w- ^" Q  V
  2164. SEC% [7 J) E/ }2 [5 A: z" Y
  2165. SBC <Page_Last_Index% p9 G$ x/ L, L8 z  V- w) o
  2166. CLC
    ! y; A5 C- E9 g- _, p
  2167. ADC #PAGE_MAX_INDEX* U) ?+ k5 t# S& \& k$ K
  2168. CMP #ITEM_MAX_SIZE) t) ~, o) S& C8 W
  2169. BCC Next_Page_Not_End_Page_Less& M9 q6 I5 `" T
  2170. LDA #ITEM_MAX_INDEX) a- V# Q, y6 z: Y
  2171. Next_Page_Not_End_Page_Less/ q% {  J! _7 E! l4 o
  2172. STA <Music_Item_Cur
    % s* n" w* o- F. w4 H$ @! ~
  2173. JMP Next_Page_Reset0 g% v" m- K7 ?

  2174. ; P+ b1 l. R6 `* ^8 e
  2175. Next_Page_In_End_Page;在最后一页! L8 n3 Z5 X, d0 m
  2176. LDA <Music_Item_Cur
    ( m) N. B$ A( l
  2177. SEC7 O3 Z7 D9 M/ [
  2178. SBC <Page_Last_Index6 t) h8 b+ o  f/ z7 p% Q5 `
  2179. STA <Music_Item_Cur( i6 i0 y7 Y  Q( E* G

  2180. / A* I2 q1 }, m2 q6 a% J. P
  2181. Next_Page_Reset  y8 T+ k8 a& n
  2182. LDA <Music_Item_Cur0 M  Y9 _8 t1 N% Y# k+ z( p- U# C* J
  2183. JSR Reset_Current_Music' Z: z, D! J* E; k: Y
  2184. JSR Show_Page_Text- p, b( V3 K( ~1 i8 Q  O/ B$ G1 @) p
  2185. Next_Page_End, U2 X# h3 }+ u" E
  2186. RTS7 o+ g4 n9 m$ A* V( k2 W
  2187. 8 Y  _- `# C  U+ X
  2188. ;==================================================/ W7 k( {: q( J8 n' e
  2189. Disable_Text_Draw;禁用音乐条刷新
    * \" T/ s6 W# ]0 b" I
  2190. LDA <Text_Disable_Flag; {6 V3 i! m- n9 Q
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    - O9 ^& Z# v. ^5 c1 M' K
  2192. STA <Text_Disable_Flag
    , h8 l/ @% N. l
  2193. RTS9 x; e: F) H: i+ _' z
  2194. ( U8 {) L' x6 C$ u9 q
  2195. ;==================================================
    $ `8 U' W8 \9 a, D& a. f5 ?
  2196. Clear_Last_Track_Name;清除上次曲目名
    ! w- G8 \6 L' I( c
  2197. LDX <Music_Item_Cur
    ! o2 `2 ~4 C1 k- {
  2198. LDA <Music_Cur,X8 c: b" R6 A- d- e0 g6 o; ?" j6 A
  2199. .IF Track_Name_Pos
    $ `$ a0 [1 }! Y) S( N
  2200. JSR Clear_Track_Info
    & e3 r+ [3 s- O3 ^! \2 z
  2201. .ENDIF
    % w' E' Y' ~8 m1 g5 C
  2202. RTS' n* b8 @4 `" R& ~( \
  2203. 7 b8 J4 u3 P  ?0 V3 p* F
  2204. ;==================================================
    9 C* R, D0 Y2 ]4 T/ n0 M
  2205. Reset_Current_Music;重设当前曲目1 m: T4 x' Z* x, g* r0 U: h
  2206. 8 i/ l3 w) v1 i$ Q# J; y; q
  2207. ;写入当前总曲目
    ; r. s, W8 }& _  I! D) x+ m
  2208. JSR Set_Sound_Total. h& [, \: u* @  i0 O' D
  2209. LDX <Music_Item_Cur. m" A! @; N9 E1 ~9 k
  2210. 1 o. A, U5 U- e" S$ W8 G
  2211. LDA #$00
    1 L! l. f5 j) d4 S+ s8 x
  2212. STA <Music_Last+ L8 ~/ F! Q9 |3 ^% o
  2213. , ?0 b* p/ m7 o/ {+ R
  2214. JSR Sound_Reset_Proc7 F. g1 W, p& R, B4 L
  2215. JSR Music_Show
    - t# H1 N# }, S  u  R
  2216. RTS$ q2 V( S1 m. w; ~
  2217. 1 X$ f4 A. v3 ~' M+ J
  2218. ;==================================================) P7 \9 a, m7 n& g) C, L
  2219. Music_Song_Stop;音乐停止7 `3 Y" F. O4 o; P' m% h$ Q/ {
  2220. LDA #$01- H' @  |( o4 S# Q7 n) E
  2221. STA <Music_Stop_State" p7 _( Z& V' \, }
  2222. JSR Music_Bar_ReSet7 e3 j3 Y6 p1 m3 |
  2223. JSR Time_ReSet5 M3 M% X% `" t1 G, _4 r( S
  2224. JSR Sound_Data_Clear1 L3 Z9 F" o' p( R8 m
  2225. JSR Music_State_Show
    ' j  h3 D* V( Q) w) U, e
  2226. RTS( Z9 x/ y3 l/ L  v, I
  2227. 5 _& V6 P" b) _! B+ T  d; e5 @' }
  2228. ;==================================================% T" Z7 |( u( a& V
  2229. Music_Song_Play;音乐播放/ |, a% _; P! [& {7 V" j
  2230. LDA #$00% Y' S9 y  j/ g& j+ K
  2231. STA <Music_Stop_State
    + V/ o6 i* r* S6 S; S
  2232. LDX <Music_Item_Cur7 l( E/ `9 D3 O# S4 ?
  2233. LDA <Music_Cur,X9 G$ a7 }0 f5 L; w  Y6 s" E* Z
  2234. JSR Sound_Init_Proc
    7 L& I! ~( u4 @) z
  2235. RTS
    ! i" `  Y- A. i9 K" d/ K4 e

  2236. ; t( ]& V& O; w7 h3 d2 i; i( c, u6 ]
  2237. ;==================================================$ r9 J( v' c5 `$ g
  2238. Music_Song_Last_10;上10曲  G: _% p5 n* F5 L* Q
  2239. JSR Clear_Last_Track_Name5 i& l. O+ x+ i+ x
  2240. JSR Disable_Text_Draw8 Z% l, \8 [# U* G9 s" k8 @9 G
  2241. LDX <Music_Item_Cur
    0 L9 L5 Y  q+ [7 J+ a
  2242. JSR Set_Sound_Total
      A: }- h% l  Z! [
  2243. LDA <Music_Cur,X
    : Y/ F) _& l; d2 ]8 m6 B' c( N0 d
  2244. SEC
    ! m6 N; E6 K! q. C5 O: K
  2245. SBC #104 X9 g% u- I* \/ J/ R4 Q
  2246. BCS Music_Song_Last_10_Set2 P9 R* z( u/ ~+ Q2 `' X/ c
  2247. LDA #$00
      y! V( g% _) [4 u! F. N: I/ q) }' @
  2248. Music_Song_Last_10_Set
    - |2 m6 C  K3 k  Y
  2249. STA <Music_Cur,X
    " p0 G6 k( V& t2 U* U
  2250. JSR Sound_Reset_Proc
    ' D3 y: S7 o0 z& a
  2251. JSR Music_Show
    . c/ ~9 P! f4 E6 H: L; W
  2252. Music_Song_Last_10_End# a2 C* C- G( [8 q" U/ ~
  2253. RTS
    & c7 e. T$ I5 ~/ x; K% [
  2254. . ~; Q+ O3 v' B! }- S/ p: G4 r
  2255. ;==================================================
      ~0 X' l! @7 d- C  j9 a8 @! `7 |' h
  2256. Music_Song_Next_10;下10曲- M: R4 H0 x2 g
  2257. JSR Clear_Last_Track_Name
    # U" K4 @/ O% A& Q' ]) l& ]9 W
  2258. JSR Disable_Text_Draw
    ) {& i* y- P1 r. \
  2259. LDX <Music_Item_Cur
    $ o  r' V' f/ y/ h% c6 V8 O
  2260. JSR Set_Sound_Total% ~- }9 _: S) t& z& T
  2261. LDA <Music_Cur,X' F* ]: ~# Z. L6 X
  2262. CLC' _3 H+ [( y  O( Z
  2263. ADC #10) Y: g* A, p# V0 T6 b$ [
  2264. CMP Music_Total
    ( L8 o$ ~" T8 g: o
  2265. BCC Music_Song_Next_10_Set
    8 O- L( L1 z/ p8 i' s* n+ I
  2266. LDA Music_Total* }. m4 r: g( j6 A- A' |: O3 s
  2267. Music_Song_Next_10_Set( ^& ~* y6 I- G2 h* v
  2268. STA <Music_Cur,X
      E* b' M  Y! u( ^& m
  2269. JSR Sound_Reset_Proc4 P4 A  X% S8 t( e
  2270. JSR Music_Show
    % z2 `3 S/ b$ C0 {2 S! w  `5 w, O
  2271. Music_Song_Next_10_End
    & C/ p* g' B7 H$ A  L4 Q
  2272. RTS
    % Q4 q5 h9 B# x" d& o6 j0 [- A
  2273. 9 c; X: }8 G" N& w3 K* K; c2 }
  2274. ;==================================================
    , R# r7 P+ V) k
  2275. Music_Song_Last;上一曲
    7 s/ @: c8 O1 [8 k. w, J
  2276. JSR Clear_Last_Track_Name- O; p* C3 }$ N* @) R$ T9 I) u) e
  2277. JSR Disable_Text_Draw$ V$ }( }2 ]: e2 `
  2278. LDX <Music_Item_Cur
    ! e, ]3 D, j+ f0 w: e8 O
  2279. JSR Set_Sound_Total
    3 ]4 V. C* Y! q6 \8 N
  2280. LDA <Music_Cur,X
    & ?9 p2 ]2 G. K  F8 Z  `- n& _
  2281. BEQ Music_Song_Last_Set+ ~/ w- g% p' x. W7 C: x
  2282. DEC <Music_Cur,X
    ' Q* W9 d8 j- }& r6 c
  2283. Music_Song_Last_Set
    - Y+ I' ^3 N/ w8 a: E# G. X
  2284. JSR Sound_Reset_Proc
    ) g2 ^# n8 n6 c" b# J
  2285. JSR Music_Show* i$ N. V% z" s5 t9 w  ^! p
  2286. Music_Song_Last_End( P( E; q( W" q. f$ M
  2287. RTS* w9 _1 q9 W& T  e( h' o
  2288. 0 @- L; |$ A7 S3 e  c
  2289. ;==================================================# a" t. S0 R1 K
  2290. Music_Song_Next;下一曲
    5 X% L9 k& y8 W
  2291. JSR Clear_Last_Track_Name6 n* P7 l8 I0 L" v; i
  2292. JSR Disable_Text_Draw
    & L8 I: e* r: ^- R
  2293. LDX <Music_Item_Cur
    6 [$ A$ E. ^# |' m; g2 i
  2294. JSR Set_Sound_Total
    - K" k$ S" [# W7 x9 K# i
  2295. LDA <Music_Cur,X
    3 [* F( {2 o8 R0 p
  2296. CMP Music_Total
    0 }7 {# u" S- C) X5 |" B
  2297. BCS Music_Song_Next_Set% Y, M5 z2 w2 c
  2298. INC <Music_Cur,X& k; Q6 _/ F3 C, h( }
  2299. Music_Song_Next_Set# W+ @: V4 t9 X8 a& \- o0 O* {5 O) q8 M
  2300. JSR Sound_Reset_Proc1 A( M" e1 s4 B, R! ^
  2301. JSR Music_Show. `0 Y; Y, w. M- [4 u& E& e
  2302. Music_Song_Next_End0 b) }$ E0 A( T8 n+ b
  2303. RTS
    ! e- \  Q" n1 U. m9 ^
  2304. + N4 k% t: {2 P7 ^" E0 Q/ ~
  2305. ;==================================================
    ) _5 D+ i3 m4 k6 G& X
  2306. Change_Select_Item;改变当前选择项) @% d, q+ a, l0 c$ R# S8 M
  2307. ;--------------------------------------------------( Y" y1 ~) x9 y% W9 d6 h* y
  2308. Change_Select_Stop_Play_Item;停止/播放; z2 @. H+ t2 ~% f' K& L$ ?
  2309. LDA <Key_Once
    & Z; J5 w! X7 p' _& x
  2310. CMP #$10! n( c- o% u, I- A. J; G1 z
  2311. BNE Change_Select_Last_Item3 C. ]9 D1 }$ n" s" _: ]8 O1 F, x
  2312. LDA <Music_Stop_State
    : C. e, @0 V5 s  w  \- G! z
  2313. BNE Change_Select_Play
    + R/ B0 h3 F$ P  W- m/ D5 i& V
  2314. JSR Music_Song_Stop6 ^; N/ o7 K. {  \; j  Y/ c1 e
  2315. LDA <Music_Stop_State
    9 N( d+ c+ d. f1 r7 y# r$ B. G. A
  2316. RTS. j, `7 A( `' A
  2317. 3 V6 \" H8 `& Z7 _
  2318. Change_Select_Play$ O" B2 Q" T, {! m1 F2 z9 y
  2319. JSR Music_Song_Play
    & O, b, p' O8 ~7 B+ J- I0 M
  2320. RTS, [  }2 x8 A2 _5 ?3 G/ P

  2321. 7 G# X/ }2 ?* |" F
  2322. ;--------------------------------------------------
    & W$ q9 Y  p' H8 e! C9 `; T) {
  2323. Change_Select_Last_Item;上一个专辑! c% t# H) \( A
  2324. LDA <Text_Disable_Flag
    + X( E) M- K4 m% _; Y
  2325. AND #TEXT_DISABLE_ITEM
    . q2 ~7 F2 l: ]" c- Z4 H
  2326. BNE Change_Select_Item_End
    1 K' z) y% c! D" @
  2327. LDA <Key_Once
    7 F2 E6 m. F, q
  2328. CMP #$08. v" b0 a; ?- t3 ~# b0 v' o
  2329. BNE Change_Select_Next_Item
    ! L4 E* D- L8 X* n# d
  2330. JSR Last_Item3 R) `* P$ I1 S) X% {5 q  O! j/ O
  2331. ;--------------------------------------------------
    6 C/ J, w9 d  a1 K" x
  2332. Change_Select_Next_Item;下一个专辑
    3 L4 m# c5 l$ z, E0 p
  2333. LDA <Key_Once! s/ r+ v) R* t* d1 R% i$ `
  2334. CMP #$04' z: [9 T. Q' ]" @4 A7 m
  2335. BNE Change_Select_Last_10- x, k3 h2 O1 _2 k" I0 c0 L
  2336. JSR Next_Item5 ^4 @/ \/ ]! ]: w3 ?) k
  2337. LDA <Music_Item_Cur
    # p$ n8 }! w. w7 @1 a7 ]
  2338. JSR Get_Page_Start_Index9 |; c7 C: x  P+ G* [; n
  2339. ;--------------------------------------------------: b% e; C3 \" m$ L) @/ Y  Q  T
  2340. Change_Select_Last_10;前10曲$ f( z" G" u+ J, _4 ?8 P) G8 C
  2341. LDA <Key_Once4 G. q9 S3 C3 J, I1 O' W
  2342. CMP #$40
    2 M+ ^# z/ [7 ~( H# e6 @
  2343. BNE Change_Select_Next_10; w1 j, N, N  ^; F% F
  2344. JSR Music_Song_Last_108 a- Z9 Y, J% }) ~
  2345. ;--------------------------------------------------
    & S) {* E# |% S2 W3 Q
  2346. Change_Select_Next_10;后10曲
    9 A7 @( i1 v/ q7 m4 [
  2347. LDA <Key_Once
    9 @# O& v% O  J' _1 u
  2348. CMP #$805 ?* `. n; ~7 t) A3 q, g* e; U" S* f0 Y
  2349. BNE Change_Select_Last
    4 M3 h* p8 K0 G; O
  2350. JSR Music_Song_Next_10
    7 `$ I- F5 b! C6 y3 H" K7 l0 M
  2351. ;--------------------------------------------------7 R( ~  @: U6 ]7 K0 K% V
  2352. Change_Select_Last;上一曲
    2 Q6 _: z( z/ t7 C
  2353. LDA <Key_Once: o+ f1 W. D+ \2 F: H
  2354. CMP #$02+ l& ?0 T3 k: X6 a" z# w
  2355. BNE Change_Select_Next! C5 `6 J$ F4 m" s, c
  2356. JSR Music_Song_Last% X1 _* D6 s3 ]
  2357. ;--------------------------------------------------: Y5 t! E2 h% S# F( h
  2358. Change_Select_Next;下一曲
    . h2 m# m' J1 ], S  I4 I" u
  2359. LDA <Key_Once
    ' J  O0 l+ {: [
  2360. CMP #$01
    , o7 x, {/ G( {6 w- ?
  2361. BNE Change_Page_Next
    ' ?5 B* w8 W) `% W
  2362. JSR Music_Song_Next5 x, n) z  c- E! i" t
  2363. ;--------------------------------------------------
    & E: c  M) t4 g! k3 s3 j/ n
  2364. Change_Page_Next;下一页0 F; y5 S2 H. K( D- S, H  i
  2365. LDA <Key_Once9 N  [% o3 b; r' P
  2366. CMP #$20$ o* ]9 ~7 p# ]5 T
  2367. BNE Change_Select_Item_End
    6 x8 s) K) s6 F4 M
  2368. JSR Next_Page! [- _! {) d3 p9 @+ D  ?8 ]) ]% S
  2369. ;--------------------------------------------------1 t9 B2 o# c) A2 p8 c/ m2 _
  2370. Change_Select_Item_End1 P" [( D2 Y  J4 S
  2371. RTS$ P# c) o$ G/ Z- E
  2372. " Q% M) y+ p  U' U
  2373. ;==================================================2 i4 _3 o9 ]$ w& f
  2374. Show_Arrow;显示箭头光标4 L: f" v8 {) H0 j9 r/ V; p4 D
  2375. LDA <Music_Item_Cur
    " H7 u: a' @4 S- W/ f
  2376. JSR Get_Page_Start_Index
    4 u" m' s; t# K% L1 j+ J2 T
  2377. LDA #$00
    2 d* R1 [$ E' f. A$ d) `
  2378. STA PPU_OAM_ADDR
    , V( M/ V! ^* Q( c$ W
  2379. LDA <Music_Item_Cur
    - s2 K3 D, i9 F/ K+ w
  2380. SEC- M: k6 \1 @$ k% e2 f
  2381. SBC <Data_Buf- I6 i  r( [! p3 A
  2382. ASL A
    : J* o2 o9 e$ m0 U# s# ?
  2383. ASL A
    6 k) ~0 O6 W  ~3 v3 F
  2384. ASL A
    % k% B/ Y# p+ n- s. x. Q4 E
  2385. ASL A
    0 B. I) g7 i' p7 g7 _, c9 I' G
  2386. CLC9 V3 D( i' H* K3 W2 m1 [$ X
  2387. ADC #ARROW_Y_OFFSET
    & e+ t! Y- b5 W
  2388. STA OAM_TEMP_ADDR + $00  c+ O+ R- v2 P. r" |
  2389. ;STA PPU_OAM_DATA  D+ h* ?0 O2 [3 U/ @* R* t' ^% Q
  2390. LDA #$1F
    % Z; S: V  k+ Y! `7 V" C! z  Y
  2391. STA OAM_TEMP_ADDR + $01
    ! H5 w0 c7 I! U% m0 V5 L
  2392. ;STA PPU_OAM_DATA
    9 q, r0 E. C, j8 n' Q1 O
  2393. LDA #$006 l' E: ^# b8 s5 s; @' N' N7 r
  2394. STA OAM_TEMP_ADDR + $02
    ! k; y, r6 ^% X  q  S8 w: [6 g
  2395. ;STA PPU_OAM_DATA8 X5 v) D/ Z. e: N
  2396. LDA #ARROW_X_OFFSET
    . J! k/ f. ~0 Y/ P4 |
  2397. STA OAM_TEMP_ADDR + $03
    * b2 x! G- A4 [, }  o
  2398. ;STA PPU_OAM_DATA9 b% a' z6 m% _. n  D( K
  2399. RTS7 W( i/ y& T% M$ B, G9 m3 U- b

  2400. 6 R  B0 _8 k3 z7 |
  2401. ;--------------------------------------------------& z; x6 o/ o" v( _; ^0 h
  2402. ;命名表数据- l. V  D6 H' @, L5 n" E' r8 o4 M
  2403. Palette_Attributes. N- w8 K# Z4 \, A8 g( s# D/ G6 L
  2404. .IF SOUND_BAR_SHOW_ENABLE
    / c: a5 A* R0 o; ?& F+ j$ f+ |- `
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    ( _: H' x* N- y4 _# j$ \. q
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    3 m$ L! A: N- a* ?9 w5 Q, ]
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    " u# N% v8 Z8 s' a' T7 E6 A" ^
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA* E/ C8 ~6 j' D# Y
  2409. .ELSE4 p; X9 E0 a4 Q
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55* p. D$ p5 |, `9 s7 P6 M
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    # t  z  y& ~* N
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    , s' l( |4 W% N) G0 {
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA9 d# G- Z  B$ h& ~8 D8 Q
  2414. .ENDIF8 _) C" }$ C6 s% x! A% i
  2415. ) m8 g8 |( c0 c# `8 |
  2416. ;--------------------------------------------------
    ! \2 d1 t2 A5 w, U/ n, k
  2417. ;调色板数据& K& m0 [, h  a  J. C# P
  2418. Palette_Data# p1 O8 V% N+ u7 o9 P
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F4 L# P7 I2 h; z- ^
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F6 ^4 p' a$ J7 F- Z5 s

  2421. ! S- m- {1 d6 M  ~1 v
  2422. ;--------------------------------------------------6 S7 q: t1 ^+ N4 b5 y
  2423. Static_Text_Data
    % a" H6 y: o" |2 W% w
  2424. .WORD Static_Text_Caption_Data
    1 N) I/ G+ O( {7 g! }* x0 v
  2425. .WORD Static_Text_Author_Data
    ) B& C( B( W# t( J! `1 K8 l/ o* J
  2426. .WORD Static_Text_Date_Data
    ; `% [7 e6 x8 H
  2427. Static_Text_Data_End
    0 C% n* A+ j" ]5 g

  2428. - b5 m: J1 x% ^' j9 R' r: [
  2429. ;--------------------------------------------------
    " A/ Y0 H, |5 z0 ^2 n$ p6 ^2 O' b0 _: h
  2430. Static_Text_Pos  t7 j/ f2 [$ {% Z
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)5 e/ _4 l* Z8 ]: [
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    4 J# [" ^9 E' i, O; i" |+ h
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    # ?5 Y; {0 ^. O& ^( @. o0 b( x
  2434. Static_Text_Pos_End
    0 z8 o0 ]. [7 ]3 R0 ?8 k
  2435. , w3 A' X* o" t
  2436. ;--------------------------------------------------
    0 ?. \0 n/ x+ S& W
  2437. Music_State_Stop
      K1 c0 H% `- H9 u9 a* s
  2438. .IF SOUND_BAR_SHOW_ENABLE
    # N5 i; r' M# C/ s7 f$ q: l& W
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    1 ^, x( J- F6 A/ g" U, }8 f
  2440. ELSE* i9 w; h$ J, e8 r+ @
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$004 Q7 j) V+ A+ Z+ \/ g* }4 @
  2442. .ENDIF
    / [- @# p$ r% [- I
  2443. Music_State_Play* {- _9 v0 k$ L2 x# T3 Q
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
      P) U$ y. e, R5 X% R8 _
  2445. 3 K4 t& H$ E- D6 M$ j+ `
  2446. ;--------------------------------------------------
    : h: R0 ^+ a# g8 {
  2447. Sound_Bar_Text_Data;声音类型文本
    - n" R6 M4 M; J! e, F3 D" M
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    ' l  a! v( a: K3 b  A
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    5 d1 O7 V" ^" B9 Y, J. A, o# O
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    * i, l5 W6 A1 T$ e
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"+ @" w. @, a: f# ~8 B) o( i
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00, I1 T3 {+ c( v  o
  2453. ; Q) O5 u' D/ P4 O% N% M
  2454. .IF Track_Name_Pos8 V4 }  u: C' \
  2455. 6 P% N- t3 c# L$ b
  2456. ;--------------------------------------------------
    ) B6 W9 g, |' k+ h1 B# A
  2457. Track_Name_Addr_00;曲目名地址索引2 g+ I" J1 U; Q* k) x% u
  2458. .WORD Trackr_00_01: k* u, z# o3 L  d4 J! E; p% n* q
  2459.   m4 v4 S4 C1 p' ~. {
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"' ?  b$ z& ~9 W
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    6 _; w1 `8 |# {+ `

  2462. ' L6 G; d/ A, v
  2463. ;--------------------------------------------------. E/ \/ G* E( K- n
  2464. Track_Name_Addr_01;曲目名地址索引
    ' A  H$ |" K% c1 E
  2465. .WORD Trackr_01_01' w6 ]# i: C3 V

  2466. 7 Y; z5 j$ ^0 p+ B
  2467. ;==================================================6 Y8 s0 Q+ J/ g2 v. L
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    ) K: ]. x; K7 d0 b- D
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"0 R; T! b1 i7 k4 A* x
  2470. 7 h) U0 d) N  I  Q7 D+ \& l
  2471. ;==================================================
    - h4 v7 y8 H8 I+ X
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
      E) D# _* D, g- W& ^
  2473. .WORD Track_Name_Addr_00
    3 z& x  U! d0 d3 s( E
  2474. .WORD Track_Name_Addr_01
    7 D- B+ {* F1 ?8 S7 ~- A
  2475. .WORD Track_Name_Addr_01$ I% Y: c2 p1 Y* I( s
  2476. * c! T1 ~1 i$ |/ n% L  X, K
  2477. .ENDIF8 V$ N# x" R) D7 [; o  F
  2478. - `5 m7 p) u! @
  2479. ;--------------------------------------------------5 `3 n7 j. O9 _* ?( n6 R( P0 ^
  2480. Static_Text_Caption_Data;静态文本数据# N, M) L$ u# P0 S% J! C) _, A
  2481. .DB 16
      [# v$ y/ R, W! i" [% X9 W  x
  2482. .DB "FC MUSIC 12 IN 1"
      N' A, w% K# O, U8 N1 R5 y0 i/ x0 h
  2483. Static_Text_Author_Data2 Y) }2 u$ d2 n, G% u* C/ o& m  J
  2484. .DB 25
    7 q; Y: O; d4 H
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    ) f4 K5 K- z) R% _9 D5 \2 {
  2486. Static_Text_Date_Data% J5 q! u6 P' l, a( L
  2487. .DB 10, f4 K: ]2 m& V1 \/ a. |
  2488. .DB "2023.07.23"
    1 a; F) e. O3 d! s: }) Q' X7 ?- n
  2489. ; v1 `5 d* ^' {" e" K/ h1 v  j6 @+ v
  2490. ;==================================================" c9 s) {9 m0 D1 {3 C8 N
  2491. Music_Collection_Name               ;专辑名间接索引
    ' a4 ?$ h/ b* v' r" H
  2492. .DW Music_Collection_Name_00! g- T# ^2 X4 S+ a( s
  2493. .DW Music_Collection_Name_01
    / m" o' {! Q! D( u% ]- Y+ z
  2494. .DW Music_Collection_Name_02
    & w: m0 l7 j7 m' t' p  `  w
  2495. .DW Music_Collection_Name_03
      b) F6 c: t) O# s# G2 C8 \
  2496. .DW Music_Collection_Name_04
      _0 h* L- Y3 T4 }5 J/ f0 u4 y
  2497. .DW Music_Collection_Name_057 ^& G5 J) p% X
  2498. .DW Music_Collection_Name_06+ w  R( R# c! O# y2 @. N: j
  2499. .DW Music_Collection_Name_07
      m( R  l3 b$ o, S: Y. Q
  2500. .DW Music_Collection_Name_08. m: w4 `# D5 X8 l
  2501. .DW Music_Collection_Name_09! T/ ~( `, a$ x/ b4 S+ C! m
  2502. .DW Music_Collection_Name_107 T, V. }* K; q- [
  2503. .DW Music_Collection_Name_11/ L0 r6 d- i2 C- \; y9 h4 T& Y, S1 E

  2504. ! ~! w  a; \$ k4 T0 x$ F
  2505. ;==================================================
    ( g% W9 f* N/ b- q3 h8 n
  2506. Music_Collection_Name_00            ;专辑名文本数据) N6 E; `* F8 o& F; |# _% j* P" b
  2507. .DB 11,"1.RAF WORLD"
    8 n) f) F+ i# C' ~
  2508. Music_Collection_Name_016 D. {( E: i5 n0 G4 [% |+ a( z$ `
  2509. .DB 15,"2.FINAL MISSION") O; m/ k4 S  l1 y$ Z
  2510. Music_Collection_Name_02
    ; H, I. K% I+ p% t# T& g. ^# R
  2511. .DB 06,"3.KAGE", d0 j: S1 B: L2 H& }  d
  2512. Music_Collection_Name_03
    $ W+ y0 ^7 S2 D
  2513. .DB 16,"4.DOUBLE DRAGON"
    ) \$ {7 I( t: \' S& k
  2514. Music_Collection_Name_04
    8 S( G) e" U" x) u+ {
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    ; V. i+ x' ]5 V, E  J9 a; P, i
  2516. Music_Collection_Name_05
    2 r+ D$ @! X) ?6 r( Q4 G
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    8 G0 m* o' s" x5 w- b
  2518. Music_Collection_Name_06# W5 h) T* Y4 H4 d- [' K
  2519. .DB 09,"7.ROCKMAN"8 p6 B9 S( P- X/ n8 J
  2520. Music_Collection_Name_07
    5 {1 k6 V8 @6 T3 |" \. q) O8 W
  2521. .DB 12,"8.ROCKMAN 2"% ]* L8 q+ x0 I0 ?) P9 b
  2522. Music_Collection_Name_08- O) Z8 K6 D4 m9 o; d
  2523. .DB 12,"9.ROCKMAN 3"- A2 m2 w0 o- w  B& }' V# k
  2524. Music_Collection_Name_09) Q, o# N4 ]/ W' o4 \( {, u: W  H
  2525. .DB 12,"10.ROCKMAN 4"+ V6 l: f0 I( M- P: I# `
  2526. Music_Collection_Name_10; K( I& ^4 C- H' |! R# v
  2527. .DB 12,"11.ROCKMAN 5"8 K. V5 ^$ e: j3 V: `
  2528. Music_Collection_Name_11
    ) j, T$ k, E* o
  2529. .DB 12,"12.ROCKMAN 6": _" O( y# b* M9 I$ l, K- s

  2530. 8 U. U* I5 U( _* r. ^) g  e
  2531. ;==================================================0 ?1 i) K/ T7 |" O, g& C9 J6 R
  2532. Track_Name_Addr_Flag                ;显示曲目名标记2 T" l1 m1 F1 Y8 y$ t; c, S
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    / j3 u9 {+ C. d

  2534. * }) A" u" X6 L7 n2 {! W
  2535. ;==================================================* s2 ^  M) E2 ^
  2536. Item_Pos_Data                         ;光标箭头位置! y& l9 `  h) [  u- c
  2537. .WORD ITEM_SHOW_POS5 `# J9 n+ Q4 G* t7 e$ L$ E, y. [
  2538. .WORD ITEM_SHOW_POS + $0040' ~1 M5 K/ {: P, c5 ], a0 q
  2539. .WORD ITEM_SHOW_POS + $0080
    ) ]( x) Q6 D8 \( D0 @7 S
  2540. .WORD ITEM_SHOW_POS + $00C07 ^: `+ b2 C: `$ \) K  t
  2541. .WORD ITEM_SHOW_POS + $0100
    : O/ ?  w0 R5 m+ _8 O
  2542. .WORD ITEM_SHOW_POS + $0140% b5 x5 d- T% ~8 j" ~- ?
  2543. $ k8 i( V% }% u: U1 e) L3 ?+ F  u
  2544. ;==================================================! L# B: |* Z+ a. }$ @& I% V
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    8 r; r4 H, e5 ]7 s1 p% p
  2546. .DW $BFC8% t) e+ p4 A# b' _: s4 Q* r
  2547. .DW $D7F00 G: y9 q. K7 A7 i; U' _7 P
  2548. .DW $9FC0
    4 H, x* i7 @4 I+ e+ t4 Q$ N+ a4 O
  2549. .DW $BF70: H' f0 B* F  _7 Z/ p8 Z) A
  2550. .DW $8003
    6 X: V+ X' j& P+ r% o3 U
  2551. .DW $BF30; B0 u. d) U2 b0 o8 \5 n& b
  2552. .DW $9003) R9 |7 U- s$ f- {0 Z( e
  2553. .DW $8003
    3 ]. X% L0 q3 P, w9 {& i3 P/ W
  2554. .DW $80036 X- y8 p5 j1 Q
  2555. .DW $8003% `/ W: k( o; D' [
  2556. .DW $8003
    . s* @# i9 l$ n; ~, n2 S
  2557. .DW $8003
    7 ?3 j% Q: ^4 V/ L: b
  2558.   O8 U- X( V0 e# I, I7 v  C
  2559. ;==================================================$ Q. g9 p6 S5 A  U7 S0 e
  2560. Sound_Play_Port                   ;音乐播放入口地址4 j# M' x6 [7 ~
  2561. .DW $8000( }4 n6 s# f7 f7 x7 n4 U5 M7 ?; G
  2562. .DW $80010 }) J/ g; m# H/ m& T% ~  O
  2563. .DW $A0001 p8 r2 r3 K6 l  I
  2564. .DW $8003: O7 \% o' k  e3 Z
  2565. .DW $8000
    $ \" ~4 Z' A$ y: ^: Q0 T
  2566. .DW $8003
    9 u2 g8 n3 I  \7 R% s1 T: [. E
  2567. .DW $9000
    6 @" `  `* m8 G9 |/ H& b
  2568. .DW $8000
    0 l2 X& T  m# ^2 u' P  v( H
  2569. .DW $8000& u  p! Q; S+ `( f5 T6 Y
  2570. .DW $8000
    # Q& g2 i7 a4 e7 g  S. l
  2571. .DW $8000; X6 v- l9 a/ e. v( f! y3 X$ P- \
  2572. .DW $8000( _0 w# I! a) T+ u; U5 K& x% p
  2573. . m: f, T+ i+ }& X
  2574. ;==================================================
    ' t6 }5 B: Y7 ^6 U. Y" K& v# O# T
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    ) y3 J; h9 Y8 Y# s* m6 `) F
  2576. .DW $0000$ r) U$ `1 d: S  K3 V' p9 m
  2577. .DW $0000. h  h2 _9 J' i' V
  2578. .DW $0000
    # R6 e8 F  G# Q0 B4 o7 ^9 r& {0 W
  2579. .DW $00004 r5 O1 z0 g* n# u7 L8 d
  2580. .DW $0000- f, C, p' v, ]% U& b
  2581. .DW $00003 u$ e' n4 a: |0 W/ V$ ?7 ]
  2582. .DW $0000
    ) D! e+ W& h  R' h! Z4 }
  2583. .DW $0000
    : ?1 M6 S: |0 ^0 s
  2584. .DW $0000
    ( ?/ P$ K; A0 W# J$ H) r
  2585. .DW $0000
    7 u! h9 l7 p" v, P+ e& O
  2586. .DW $0000. c( j$ e4 E2 _2 J7 |  ^. |% y% E
  2587. .DW $0000
    8 s* I6 a1 t4 n+ T

  2588. % Y- x% ^3 P, G: O
  2589. ;==================================================
    8 `8 |) {1 J# j6 H' ?2 _& q9 C) c
  2590. Sound_Total_Port                          ;曲目总数7 v( A  U' r" d9 l( H8 e- k8 D- b
  2591. .DB 38
    2 l  t0 Z- d* n! Y8 X" ]
  2592. .DB 33
    . P: P* u; Y( u& V4 d
  2593. .DB 49. r7 d: ]+ S4 j1 J' q
  2594. .DB 415 c" A! ^6 c6 W; k) f
  2595. .DB 83( }- \: k2 K: ]
  2596. .DB 704 m. Y( q  p) R# R$ @0 x; L9 }
  2597. .DB 50
    ; g) q3 q# W) N9 [0 i5 A
  2598. .DB 67# O$ d3 S9 o5 j) e6 X1 r/ r- y
  2599. .DB 57- ~. H! g& L& o+ r! X
  2600. .DB 71
    : u1 a# l* z3 r$ N
  2601. .DB 769 P& L7 u' O; i* }: ~; B
  2602. .DB 102
    % X4 D' D5 M/ B" V  |

  2603. 6 j- m9 Q+ j) k# E: S1 T
  2604. ;==================================================
    3 w/ c0 _7 Q6 a; C4 h
  2605. Sound_Start_Port                      ;起始播放曲目
    + G' X. y6 k1 [% h8 c! C; O  a' J
  2606. .DB 00
    ; m% p$ o' I" [0 X7 o
  2607. .DB 00. W$ |4 P$ M1 \3 S7 l# J# d8 r
  2608. .DB 004 S7 E7 I4 r( Y7 C
  2609. .DB 005 G# f* _% H  y* t: d# A0 {0 }6 l% [- b8 x
  2610. .DB 00
    . ?  k9 Z2 Q$ e9 T0 R9 }
  2611. .DB 00
    ; t. f; Q3 ]' t+ `: z! g
  2612. .DB 00  R: j) M* p$ W: v9 x0 a6 j
  2613. .DB 003 E$ l4 e+ X: f0 X
  2614. .DB 00
    2 p' _0 B3 D. k1 r! L: S6 [$ Z) W
  2615. .DB 008 t$ w5 N! i: M/ ]2 r8 Q
  2616. .DB 00( ^5 G6 `) @" g( C3 C! u  D
  2617. .DB 00
    $ `3 q( Y4 S# R/ n
  2618. ( n$ N; n+ e6 Z+ C
  2619. ;==================================================1 E9 |' @+ n' L$ k- p1 F* p
  2620. Sound_Bank_8000                      ;专辑bank_8000% A' @* R. ^2 ]  b$ e8 i. A
  2621. .DB $10
    5 |: B7 O3 D( Q* n
  2622. .DB $12* T+ H3 t% |  w5 x" g6 F4 A
  2623. .DB $14& d/ |0 {5 G" a# v2 w7 o5 O
  2624. .DB $16# K. L) V& V" v  `3 ?
  2625. .DB $18
    ' h( A4 p, B% F$ g
  2626. .DB $1A; K, w: F0 s; p7 X

  2627. 7 L& S" m2 G/ V8 A& y; j
  2628. .DB $00
    . i6 P3 O' `/ R# R% y+ p- S, Z
  2629. .DB $02! T- G7 H/ q* }/ s' L2 V
  2630. .DB $0D/ k  l* L6 r( k
  2631. .DB $04
    / Z  |; k% T3 f/ G1 L% w' n/ Z
  2632. .DB $07
    2 P: G  c" g6 S! ^& J+ C
  2633. .DB $0A
    1 R2 H) Y, }1 G$ S( O& C) E

  2634. : u" W( W6 P9 Y& l0 B# N; V

  2635. 2 D% v/ W2 }* j; d
  2636. ;==================================================
    ; U" T( b; \( N/ o8 _8 ]: S
  2637. Sound_Bank_A000                      ;专辑bank_A000+ z3 I+ z3 v4 Z6 o# c6 h8 R6 @
  2638. .DB $112 j  K+ T+ {2 G1 U' Y) U) _9 J& f
  2639. .DB $135 y4 u5 x# G: a5 H2 z
  2640. .DB $15' X! l- |* M/ g7 g
  2641. .DB $177 S0 W% m' T: C
  2642. .DB $19# [% w6 A% [$ R6 _
  2643. .DB $1B
    3 \! Z: F2 H* e5 j1 F3 y- M

  2644. 8 l- v6 C' I( \2 k1 t1 M! R1 V! F
  2645. .DB $010 Y3 Z7 n: n' y1 {" O' o
  2646. .DB $03
    0 f/ M! Y, P9 @
  2647. .DB $0E& j3 s; O& S$ d
  2648. .DB $05
    : D9 o- ^( q- o: Z% r
  2649. .DB $08: J7 ^, e( E. t1 x( |2 e
  2650. .DB $0B
    ' H  S) H) S7 O/ s5 L% H

  2651. ) A: J! N% S$ w' m  x' R8 H
  2652. 7 `' e* O& C: o: N! v. z
  2653. ;==================================================2 g  d: N: e1 t
  2654. .BANK RESET_BANK & BANK_DATA_MASK: ]) W: G4 {# h6 q4 Z# g) x2 R% ^
  2655. .ORG RESET_ADDR
    # g/ @) `& }* J9 a

  2656. 2 B* n, W) v5 X% ~9 l
  2657. ;==================================================
    ) c9 P5 N. E. h
  2658. Switch_Bank_8000;切换bank到8000-9FFF2 ~5 Y* H$ a( H) o
  2659. PHA
    7 ?5 R- H1 @3 R8 J$ C6 L
  2660. LDA #$06: b0 _; e1 f5 ~
  2661. STA MMC3_BANK_CTRL
    % s+ Q2 ]6 r; z) r. ?; r; E
  2662. PLA
    : W5 m: u& `  u: m
  2663. STA MMC3_BANK_DATA
    : R! `6 c0 l4 J# v( J6 S" ]. y' U
  2664. RTS8 J0 y0 z! r9 h9 r* g

  2665. % N1 p1 M1 r: c
  2666. ;==================================================
    ) `+ T6 K& a" c1 F4 q: a/ `, j. Y. p
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    0 F7 b2 N9 p4 R0 X8 L  |- C$ z, |8 u8 u
  2668. PHA
    # [4 Y7 b; m. w$ v: }
  2669. LDA #$07& E' l6 {2 @* P, K- s! i- @* \
  2670. STA MMC3_BANK_CTRL
    : i3 y$ T# r! A2 `  }, x% ]( Z
  2671. PLA! g: H5 J% m. ]2 K; E% r6 I
  2672. STA MMC3_BANK_DATA/ m; y" V" `0 O1 l  h. S$ d1 C
  2673. RTS
    ; l+ K- I9 N0 F5 c
  2674. ' d2 C3 S1 `) H" x& }# p" r
  2675. ;==================================================. i8 \8 k" ?8 {: Z  \1 F+ u9 v
  2676. Switch_Main_Bank;切到主程序bank7 L$ c+ U# e" |! F0 W+ n0 K7 l% [
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    5 C% ]7 Y9 e# f( o& J
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    ' k2 V( M7 B/ M- T7 ?3 Y  ?
  2679. RTS$ b  w$ n* t4 z" j  E, T/ [
  2680. % m& Y+ O( R7 r
  2681. ;==================================================6 k+ s+ H9 k7 C6 L) X) I
  2682. Sound_Reset;音乐重设(如果有的话)4 C4 }8 W1 P2 l( n
  2683. JSR Switch_Music_Bank  ;切换到音乐bank4 c" q! |& E& Q' }
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    * z) D, Q: _2 C% K
  2685. JSR Switch_Main_Bank   ;切回主程序
    - g. f0 P7 p" K1 `
  2686. RTS9 v  C& E7 y/ w3 \$ L$ s7 P

  2687. 7 Q# q1 {( w7 C, J2 o
  2688. ;==================================================
    ) f+ L$ B5 N6 Y- G
  2689. Switch_Music_Bank;切换音乐bank
    0 R9 w( o" o/ `% P
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    ; r6 E' ]" @. J( M# [3 p) N
  2691. LDA <Music_Bank_8000* t/ T; C; Q" J9 ~* @3 B% E
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    ( o. R1 u7 y# q  b& Y% o' G
  2693. LDA <Music_Bank_A000
    ; d( f8 I, x" R, m- n( W6 {2 D
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    9 q# H4 A' h! c
  2695. RTS
    6 K  q6 Q+ x2 K6 L3 D0 ^

  2696. 1 M- }( i9 G* o2 K- V
  2697. ;==================================================
    5 d- a6 ~# c: k1 h8 D0 \4 n
  2698. Sound_Init;音乐初始化; H; l1 U4 G6 Q/ `9 e
  2699. PHA: t% t9 I- W9 B& d0 G6 _
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    ! J* B7 k" X9 C" e7 l2 j
  2701. PLA% |, `9 U+ P' |/ J6 ?3 d4 v0 i% H
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    : Y7 t* s0 K0 H5 a$ ?1 p
  2703. JSR Switch_Main_Bank   ;切回主程序
    9 x% v5 |( W$ z* g! I
  2704. RTS
    ( F( X+ l1 t% ~; q3 {! p; L0 S+ A! [
  2705. % x" ]9 p0 P! |
  2706. ;==================================================5 I* M" j; ]6 L4 Y% F
  2707. Sound_Play;音乐播放! C( ?% W  z5 o9 q! B: p( _
  2708. JSR Switch_Music_Bank  ;切换到音乐bank" ~2 t  K3 `3 f: N% ]$ R  d+ O
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    ; n# ?) C. E& Q0 l8 O1 h" G
  2710. JSR Switch_Main_Bank   ;切回主程序0 T! t/ M; }1 r! Q: G4 C  V
  2711. RTS  O9 k, W3 j  o$ F. U
  2712. & X* k4 G  Z; Z# k0 m
  2713. ;==================================================
    - {9 Z, t. @) v
  2714. MainLoop;死循环9 l/ V  [. x6 l. Y& V. D3 b
  2715. JMP MainLoop- k+ u5 ?/ n+ O4 [# {7 _0 J9 u' j

  2716. * \* O6 z" m+ v4 ~
  2717. IRQ_SUBPROCESS_JMP = 0
    . o- ]+ E6 \  B8 ?! n: n

  2718. * a2 L: p6 _. t* h
  2719. .IF IRQ_SUBPROCESS_JMP
    2 k# Q# S  r* l
  2720. ;==================================================
    1 \' V! l2 V# z% O) I' n& D0 M7 I
  2721. IRQ_Process_0;IRQ处理过程0; D; h. M! s/ r; b7 l1 t# x

  2722. - _# x9 Z* Z9 ~0 z: t% o
  2723. ;15条扫描线后触发IRQ6 B& h% p% D$ O  t
  2724. LDA #15
    , D* f$ V6 w5 a$ k/ w
  2725. STA MMC3_IRQ_LATCH, ?" x6 [% `5 l! ]

  2726. 1 N! I- r; k$ _  g# A% c
  2727. ;设置屏幕滚动
    / Q! _3 _, O" q3 s  Q; e
  2728. LDA <Scroll_H
    + s. N  z5 b' `' o3 U3 D! j
  2729. STA PPU_SCROLL
    2 I* A* G" k7 P8 s1 w- J9 C
  2730. STA PPU_SCROLL
    ; o( ?6 `9 x3 K/ s2 r
  2731. ' X) n0 ^0 J# \+ U% Y3 d
  2732. IRQ_Process_0_End2 W. V1 t) L! V# g- B. W
  2733. INC <IRQ_Process_Index
    * Q/ E) J0 B; v8 l, P; R# M, i
  2734. JMP IrqProgramEnd
    & v3 w- R9 e5 N# u
  2735. * d2 s$ \' \: ]3 a( A/ R1 S7 i
  2736. ;==================================================
    % u5 b+ C9 f( n# F
  2737. IRQ_Process_1;IRQ处理过程1
      Q8 U, Y" }4 K3 M, x
  2738. * e9 ^9 _- p' y+ s) H- R
  2739. LDA #551 B! l5 G8 W+ |+ G4 `# p
  2740. STA MMC3_IRQ_LATCH
    ( ]' I' R& B& ]- T$ L7 n- _3 G

  2741. + y) S1 S) f+ K5 [9 z
  2742. ;设置屏幕滚动) `& _7 e* G0 W- z& S6 ^
  2743. LDA #$00: S' y8 ?& V" i1 P/ W, E& L! @
  2744. STA PPU_SCROLL
    : j9 V1 h9 X9 H- S2 i1 M# W; A* n/ n
  2745. STA PPU_SCROLL) ^8 j( ^' B8 h

  2746. ( r' B# \: D) h% J  c9 N% m% \0 b: Z
  2747. INC <IRQ_Process_Index- h- G( u4 j+ d5 k' q1 W% [2 y/ c
  2748. JMP IrqProgramEnd9 m: e0 S9 D' q/ O
  2749. 1 ]6 V+ a3 `7 f- \+ i$ j' w; n
  2750. ;==================================================
    % X6 f& }, d+ {9 O$ z& J
  2751. IRQ_Process_2;IRQ处理过程2
    $ s) Q) C# m- z. [% a0 u
  2752. % V2 x! B! s7 H. g3 D1 f# D1 B
  2753. LDA #15
    8 U) ?3 U1 B3 `$ ~/ ^
  2754. STA MMC3_IRQ_LATCH- g2 l' }6 @" ^4 M1 I
  2755. $ e0 o  e: h/ Z5 q" V) S. x/ o  f
  2756. ;设置屏幕滚动
    ! z% g* \. I3 }. p- z
  2757. LDA #$001 }* l6 E3 k- G! i, |
  2758. SEC" Y0 U: B3 \4 Z- ]
  2759. SBC <Scroll_H) o6 M' f# z9 D) m! f
  2760. STA PPU_SCROLL6 {. q" Z! d4 g6 {/ ]2 v
  2761. STA PPU_SCROLL
    ' W2 N/ V1 ]0 ^
  2762. 4 w' a( Y. M! q' W5 V" [) z' F
  2763. INC <IRQ_Process_Index( [/ {+ ^; f  t# S( Z& ?2 [- \
  2764. JMP IrqProgramEnd
    7 W& }, Y- A  g) t
  2765. 1 Y6 A1 B8 ]4 h: w
  2766. ;==================================================
    2 q6 q+ j( K0 l+ K' b2 o' K: ~6 Q
  2767. IRQ_Process_3;IRQ处理过程3- ?+ o1 S  y5 P
  2768. $ i6 q# K5 h" \6 Z; o: j  t2 M6 |
  2769. ;设置屏幕滚动
    + ]+ h0 F, J3 ?) M& H
  2770. LDA <Scroll_H- B. s/ |; P% _0 t
  2771. STA PPU_SCROLL
    ' X- T  b# C6 @3 F& X
  2772. STA PPU_SCROLL3 i' `5 [9 t) b3 \8 h4 d, |* m5 u6 a" Y
  2773. 8 H! a! K' U8 O  [- a
  2774. ;禁用IRQ2 B6 d$ X# D4 Y3 @' y, ~
  2775. STA MMC3_IRQ_DISABLE
    & y* a+ w! D- \& Y8 X
  2776. JMP IrqProgramEnd% a8 J. F; Z) l( Q
  2777. 1 |5 |  z& g( f
  2778. IrqProcessAddr) M8 {3 ?- n3 Z, d7 B/ u
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    5 V3 J! t5 V! E# h$ J) e
  2780. & \1 A& K' i/ |! O
  2781. .ENDIF
    3 Y0 Q1 O6 C$ @* j4 P9 ]# L8 Z
  2782. 1 D- U; M7 |, F' _$ k( `: Z. K
  2783. ;==================================================6 ]+ T) l, S5 \, p% {* G
  2784. ;IRQ滚动模式常量
    $ @6 M2 A+ x8 L, k+ X! G1 n
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动. `" i- D7 h3 J/ x1 l
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动' B1 [" _  K) Y, e. X3 p
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动# f( Y( K" i- ]1 S( N) y
  2788. ; R4 w0 Y  s9 S5 {1 l; k  O! l
  2789. ;IRQ扫描线数据3 N; K; h! G& h9 U6 L. H8 \
  2790. IRQ_Scanline_Data5 M$ a+ w/ h7 b/ f4 n) o& p
  2791. .DB 8
    - o: S3 j+ K! o6 Q: l: H8 }
  2792. .DB 54! K9 R' {5 _- T2 [5 X# h
  2793. .DB 8. d/ u$ s. T4 X# z4 Q
  2794. .DB 00 ;关闭IRQ
    / j  k8 [# m- V! ?2 Q0 i4 T

  2795. & J7 S6 x3 M6 S4 r! v' `
  2796. ;IRQ滚动控制模式
    $ D/ s/ \  S2 n* B" }
  2797. IRQ_Scanline_Mode8 [7 r, z# W& u4 [
  2798. .DB IRQ_SCROLL_MODE_ZERO6 H* @6 c( i4 |- Z- v/ B" D
  2799. .DB IRQ_SCROLL_MODE_ZERO: g3 _. A6 v, Y. j9 e
  2800. .DB IRQ_SCROLL_MODE_RIGHT% V( r7 h- \* l6 Q  `4 z
  2801. .DB IRQ_SCROLL_MODE_LEFT7 e1 Y- {2 o2 J; b! j* D" y) P" B
  2802. 8 I5 R/ j3 [3 n: i( T0 O
  2803. ;==================================================. s5 X' H( N1 R; }1 X
  2804. ;IRQ处理) w2 X) T, A  p7 x. ^
  2805. IRQ_Process! r, |) h4 _1 O
  2806. LDX <IRQ_Process_Index5 r0 l0 q9 ]; d/ j5 q  y
  2807. LDA IRQ_Scanline_Data,X( `% J$ m* C; g) |9 Z
  2808. BNE IRQ_Process_Latch* P9 H$ D! `2 K" A7 f8 l
  2809. IRQ_Process_Disable;禁用IRQ
    7 o2 a; w9 m* ?! p* S7 n8 A
  2810. STA MMC3_IRQ_DISABLE
    ; k, u* }8 D% ^. j6 t9 ]0 E
  2811. STA IRQ_Process_Index
    4 r0 K8 Y( I4 t
  2812. BEQ IRQ_Process_Scroll
    / q1 i. _$ L& t- g
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线5 Q& f% S  I2 W7 L& X/ q
  2814. STA MMC3_IRQ_LATCH
    $ @: l$ Q, g, E. p7 k
  2815. INC <IRQ_Process_Index1 X+ W/ j6 R& Q% f, P) g; d
  2816. IRQ_Process_Scroll;IRQ滚动控制
    7 H9 ?: [- O; J) |
  2817. LDA IRQ_Scanline_Mode,X9 G7 N3 p# E, Q! a$ P
  2818. CMP #IRQ_SCROLL_MODE_LEFT: ~8 `0 g1 v6 H
  2819. BEQ IRQ_Process_Scroll_Left
    $ {8 s8 w. z( P, n! m
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    , E$ Q- k, m0 X: X0 F2 F9 g+ m
  2821. BEQ IRQ_Process_Scroll_Right+ O; s& ?6 }  x& X2 z& _
  2822. IRQ_Process_Scroll_Zero;不滚动* E: q( q8 e& J! e
  2823. LDA #$00! k6 s5 l; z! c/ k; ?9 l
  2824. STA PPU_SCROLL6 f% N) e! t2 u6 l2 q2 a; `
  2825. STA PPU_SCROLL7 V( j  E7 S! T( ]+ M- _
  2826. RTS
    & ~# i- V: |6 Y* K
  2827. IRQ_Process_Scroll_Left;向左滚动, ]# {8 L" m9 c3 q5 i0 |
  2828. LDA <Scroll_H' Q! v# n4 h+ Q1 o, c
  2829. STA PPU_SCROLL* r! k8 X( G) X7 |! D
  2830. STA PPU_SCROLL
    $ X/ W6 L: R# X
  2831. RTS5 }2 k) T- f( D
  2832. IRQ_Process_Scroll_Right;向右滚动
    * X0 F7 j- A3 p+ N) e; r0 K
  2833. LDA #$006 H4 T1 @2 ~5 W% P# S; \
  2834. SEC
    & D  v* L+ D& n8 |7 A: r' S
  2835. SBC <Scroll_H! u* `) g5 l) N6 v0 M/ m
  2836. STA PPU_SCROLL! J. c( }% g' ?0 P2 D
  2837. STA PPU_SCROLL# v1 [# Z7 s+ I$ u
  2838. RTS6 H1 J5 B# X$ U- t& a- M% v% y
  2839. + K, K% `! R" N7 o
  2840. ;==================================================  C- T. `  ~" @, u3 x* c: S
  2841. NmiProgram;Nmi中断处理. p0 B! i3 H* y+ V1 e
  2842. PHA$ }0 D8 N: N, D3 T
  2843. TXA
    4 R( U7 s+ i3 e' g  I+ L2 h
  2844. PHA' W- e! P+ [0 `+ x
  2845. TYA6 |/ Q# N* T# o. u' e( P: f5 {7 G
  2846. PHA
    + k7 w1 M: B( \& C" `, y

  2847. 6 A8 ^0 \% V% f  i. I, [
  2848. ;读取清除Vblank标志, 防止重复进入
    5 a$ V. ^5 H6 u4 r7 @/ `
  2849. BIT PPU_STATUS
    ' x7 C6 a' _1 }/ _* {
  2850. 6 O0 s3 q8 ?6 ?5 [8 a% m
  2851. ;切换主程序bank
    ( D& c, L' r6 }' z
  2852. JSR Switch_Main_Bank# T/ p  ^2 _. x. c0 r

  2853. ( {) @% `' }8 r/ N
  2854. ;Nmi处理
    . X0 Z" F/ Y$ J  M5 ]. b2 _
  2855. JSR NmiProcess& z0 ?5 S1 u8 L$ X% [  h8 W
  2856. * ~8 K" x% _, x3 q0 f# |# X/ H
  2857. Nmi_Proc_End
    : o4 o7 r' D- X# t2 e3 t
  2858. PLA: H3 j% k1 F9 m3 l
  2859. TAY
    : ]/ Y% {7 X' N- r7 J) c9 y
  2860. PLA, ]3 `! m4 ?  }7 k7 j7 ~
  2861. TAX
    - z5 x3 }8 m% k, N: a7 y" U$ y
  2862. PLA1 d; e! d, E5 w  n
  2863. RTI
    5 y7 Z' a' \- i5 I

  2864. 4 M9 p/ i' A& x# u0 |- |" N+ x
  2865. ;==================================================6 n- U  X8 I5 N3 m
  2866. ResetProgram;重置中断处理
    ' Y  l% G, g! m+ u& c4 ]0 P& G  l
  2867. SEI
    - o  S( j' X8 M5 n6 T7 f
  2868. CLD
    $ C. C) U0 P0 I7 S9 s" c
  2869. LDA #$00' f% S( s- ]# h5 z) E
  2870. STA PPU_CTRL
    ' S# p/ q/ e2 K
  2871. STA PPU_MASK; D. P) x3 U' [. p

  2872. 6 [. `& y/ v8 }0 k" w9 _
  2873. ;切换主程序bank7 d/ s& x  u) w8 h" z
  2874. JSR Switch_Main_Bank& X( z% h. O4 r( @

  2875. # }) ~5 M( n: J, j7 N) v% Y
  2876. ;程序处理开始
    ( W! S, J- O& _, r: Y
  2877. JMP ProgramBegin
    8 ^5 D+ j/ l/ z8 v

  2878. ; c$ }8 j! I6 ~3 r
  2879. ;==================================================
    & _: t. `! l* [0 ?9 N
  2880. IrqProgram;Irq中断处理
    9 B' ^, o' j1 O, X  }4 L$ H  \
  2881. PHA) I, ?, c0 ?" B4 e! K, K
  2882. TXA+ L% i' z$ [( `! X4 D
  2883. PHA* R: L" q9 r2 S
  2884. TYA0 ^/ V( u: A9 T+ O
  2885. PHA
    * s/ q$ y3 P$ B- x$ s+ }
  2886.   u$ x( K( O# _8 V
  2887. ;关闭IRQ
    & w3 V* m% a; E
  2888. STA MMC3_IRQ_DISABLE
    & @6 f0 {- R" ?. P) _
  2889. % ^" b  L& D/ H1 h8 B! [6 r
  2890. ;允许下个IRQ触发
    - w/ [. A+ o- t; _
  2891. STA MMC3_IRQ_ENABLE
    0 b/ }; L- O3 u6 V8 O, g
  2892.   M. ?& P: R) R8 @
  2893. .IF IRQ_SUBPROCESS_JMP$ [" p4 P6 ?$ c9 @9 G# @& H

  2894. - @: p9 M# `1 Q: I; R; |
  2895. ;执行IRQ过程' K  r, b+ x& d) \7 D' f
  2896. LDA <Data_L4 x2 G8 n+ `, h9 T6 C) ]
  2897. PHA+ s; K! K5 U* p; v+ v
  2898. LDA <Data_H
    " l8 c3 S/ w) d+ Q+ @$ V
  2899. PHA
    ( ?- Q# s: y. M& P) }. b/ E
  2900. LDA <IRQ_Process_Index" ]( M( U/ b  S9 A$ L# i1 Z( K& s
  2901. ASL A( P/ r, P& `, E+ h
  2902. TAY
    ! l) A  ^  x: N0 d
  2903. LDA IrqProcessAddr,Y
    ( S& B1 U% m, G
  2904. STA <Data_L
    * l6 J* @, H3 g! B& @' f9 E
  2905. INY* f+ t4 d( `2 V% _' \
  2906. LDA IrqProcessAddr,Y% ^$ \# e4 B& _
  2907. STA <Data_H
    3 ~& V/ Y7 v) w8 S& R0 U( h  t
  2908. JMP [Data_L]
    + R. F, Y! K9 R0 ^6 Q( W  V, w
  2909.   l0 @3 m1 _: w0 |8 q, q6 x
  2910. .ELSE; u8 [7 g# u4 H# h$ s; u

  2911. - O7 _8 Z- C( P( _+ ?, `
  2912. JSR IRQ_Process- z  y' X0 l( x- d! a% z

  2913. 9 h, S+ j8 T" g1 U& Y. `& ]
  2914. .ENDIF
    ( S4 i# g. A0 z7 {) D; Q' N

  2915. 8 x6 S8 x4 s( z9 y6 m
  2916. IrqProgramEnd( T5 e9 b8 c" Z6 g
  2917. .IF IRQ_SUBPROCESS_JMP1 j" P8 }( W$ B- o/ V( W
  2918. PLA- `) O1 K) c& R; S+ g
  2919. STA <Data_H
    + z* M! [6 u3 z
  2920. PLA! W4 Y" D9 F( k7 D1 i
  2921. STA <Data_L
    5 Q' ]7 C+ u7 ?: u( Y9 [- x2 d
  2922. .ENDIF6 i: f. P3 V8 u
  2923. PLA( r0 f( ~, b7 W- |6 ?) ~, g
  2924. TAY
    ! {$ E0 |" ~: z9 z1 t5 ^% {$ _
  2925. PLA; \9 Y  U; L9 O) m' s. B- d) A6 Q' Q/ ^6 y
  2926. TAX, l- I! q; ?9 Y- A) g
  2927. PLA% {/ M7 Y  r* h8 a
  2928. RTI
    7 D) o5 Y# f) q3 `& C8 Q) y1 e

  2929. # n5 u* B( I3 M" x5 J* F
  2930. .ORG $FFFA$ |) ^" ^* _9 r9 B) v3 U
  2931. .WORD NmiProgram: r. T5 E1 {1 s( W4 y
  2932. .WORD ResetProgram
    # r% c" ]) E& C0 @* ~& J: K9 {
  2933. .WORD IrqProgram- g. [! j% {' d  ~3 R( I) |

  2934. 1 `; c/ n3 O* T' M
  2935. .BANK RESET_BANK & BANK_DATA_MASK/ A; F/ o9 b; E. t! B9 z; D8 B
  2936. .IF SOUND_BAR_SHOW_ENABLE& F% G$ V; u$ u8 I. S
  2937. / z1 q, G; _' o6 u# g, ], y
  2938. .ORG $FE009 g2 C+ l( t& ^2 ]* x$ y( x9 L
  2939. PHA. l8 s# R; r+ n
  2940. STY $07BA: i$ f! x9 p9 I- n! D
  2941. LDA #$8D( p( A0 O+ n) T1 U9 f
  2942. STA $07BC+ k6 K: @2 B( U" D# N+ \
  2943. TYA/ {' P, J+ [3 u* D' Q
  2944. CLC
    7 [5 ~( p0 X3 U) |+ p9 u
  2945. ADC #LOW(Sound_Bar)
    ; P5 `4 a. O% l% w# Q! D0 \8 s$ l
  2946. STA $07BD
    4 |7 N- A: X0 P; Q* f" M9 \
  2947. LDA #HIGH(Sound_Bar)0 j3 R; a5 ]' g
  2948. STA $07BE  k7 l" C5 b- Y# U( i
  2949. LDA #$604 j! \# ]# j* U# {7 p
  2950. STA $07BF2 D  M- E% @% [3 n" ^, y, W' L
  2951. PLA
    . k4 O5 q# R9 g1 b& S
  2952. RTS
    7 D% _2 v: |" F
  2953. ; Y' G2 d+ P( H4 }7 L7 _
  2954. .ORG $FE20
    / W  g2 f3 m5 v4 e! p
  2955. STA $07BA
    & ~* r/ p' [+ {9 T6 [# F
  2956. CLC
    9 x5 W8 F. c+ ]4 w2 ?
  2957. ADC #LOW(Sound_Bar)
    ! ~9 g/ k" s* @7 x' p* e
  2958. STA $07BD
    . V% [& T+ \/ v
  2959. LDA #$8D7 r, g& t1 o3 ^4 F
  2960. STA $07BC
    ' E+ P. e: [& `% P' i! a3 \$ ]
  2961. LDA #HIGH(Sound_Bar)
    $ |6 e' ~" r% T8 T* N
  2962. STA $07BE
    7 z) G" `% Q: P' n6 `
  2963. LDA #$60
    ' j+ l/ O7 d5 t9 Z2 V. n
  2964. STA $07BF
    ) [( ?4 v( u( h& _
  2965. RTS
    # M, E( V$ q# u* {" L" B7 f

  2966. 8 {- R, X8 z9 l. k: o  ^+ G
  2967. .ORG $FE408 `- R0 a+ }4 c. e6 X* c
  2968. PHA8 Q7 @* M  G$ r' n0 H
  2969. STY $07F1
    8 o. Z5 B: ^$ F/ F# P4 Z
  2970. LDA #$8D  A' S1 ]  _) }" t: A9 p
  2971. STA $07F37 d' r( p0 O* X
  2972. TYA" I3 [. L, A, i0 b/ z  Y9 e
  2973. CLC2 F* y1 n, |+ Z% {+ H
  2974. ADC #LOW(Sound_Bar)
    / y& ~6 N3 C5 H% C
  2975. STA $07F42 A- R. s! ]3 B0 m6 ^. G
  2976. LDA #HIGH(Sound_Bar)
    % K- C* X5 u' Y9 ]3 t0 p& C
  2977. STA $07F5' f& D) D% a) C9 L+ a) r
  2978. LDA #$60
    . I3 E' _8 ]  W# E  A1 Y9 v8 {
  2979. STA $07F65 u# r' x% B* L( d
  2980. PLA
    4 s, T& R3 [: |8 m6 J  V. C5 Z
  2981. RTS
    7 j& |$ i+ B& g% e

  2982. # {$ A2 x- Y% S
  2983. .ORG $FE60
    , l5 _0 `4 {1 M/ O
  2984. STA $07F1
    # y- r9 y  I6 p) a/ p7 k
  2985. CLC
      k9 R: V, @5 d6 J7 k5 U# e
  2986. ADC #LOW(Sound_Bar)( e6 k/ D  _& \. Q6 \/ n
  2987. STA $07F4& @1 C( `$ {. j* X" }( k
  2988. LDA #$8D
    ( E+ X2 u( M' |* M! `- S
  2989. STA $07F3
    3 U+ Q* l3 O- c' `
  2990. LDA #HIGH(Sound_Bar)
    - ?0 t% f2 m2 P. D) X( G; }
  2991. STA $07F56 P! ^) e5 w- m+ A4 |
  2992. LDA #$60- d, |& z( Z9 s5 D6 h& ~
  2993. STA $07F6
    + K2 [5 s) P, j- J! c) o
  2994. RTS' Z8 z: f+ Z% H, I

  2995. ' i( e" @( V  W' A/ S
  2996. .ORG $FF40
    8 k- A8 ]9 W6 w! g& ?
  2997. STA $4000" E$ U6 @3 m) o( c$ o0 j. T
  2998. STA Sound_Bar + $00# A+ Z8 Y8 |) U# L1 t+ k5 A
  2999. RTS
    2 C& O3 r3 [. Q8 A: S9 I6 A& H
  3000. # X3 o4 W; T4 K* o+ T5 _1 y
  3001. .ORG $FF489 y' T4 |- V' H4 T' f: n. ~" c9 t
  3002. STA $40040 e7 C( M# V9 y' Z8 C0 g# U
  3003. STA Sound_Bar + $044 x2 m3 ], w* M
  3004. RTS( h: L. z& k, ?5 i+ B5 x; G4 a% T

  3005. , D  G3 g- u# l$ H$ T
  3006. .ORG $FF50
    / J- z9 f: @9 M1 a2 a& c
  3007. STA $4008+ Z7 u! h, }6 C3 W, i$ W1 m* T
  3008. STA Sound_Bar + $08
    # d7 A9 L- x+ b' V
  3009. RTS- W/ Z1 z( t; h- \1 f8 \. a  p
  3010. % t7 k) O3 P$ z/ }
  3011. .ORG $FF58
    3 Z5 ^. ], D4 ?" F+ Z5 a$ N& \. D
  3012. STA $400C# ?0 C% q1 T, B, j- D: Z
  3013. STA Sound_Bar + $0C
    ) q$ s" E! d1 I5 D. B+ C8 L
  3014. RTS8 A9 X8 p: j- w: u+ K

  3015. ; A1 K" S! j. z% @& b
  3016. .ORG $FF60
    / e4 c! o4 r7 }( f) W/ z- A
  3017. STX $40000 W& t9 B% V' }) x& w
  3018. STX Sound_Bar + $00$ t7 v3 |4 E' I, w" p: p* D" |7 N& O  d
  3019. RTS: c9 p2 K1 F" F2 ]/ Q/ S, F

  3020. ( `" P, ?% D4 s8 O# |
  3021. .ORG $FF68! O4 E2 T0 n9 H+ L
  3022. STX $4004
    - ^3 V- W; V; V4 D" F! K/ `5 j% p3 t2 ^
  3023. STX Sound_Bar + $04$ w: z4 i( }$ |! l' \! g% O  N
  3024. RTS
    8 F& k. ]1 |8 @/ p0 G
  3025. ( D9 F0 [+ N8 C7 v3 \  F* t; T  G
  3026. .ORG $FF70
    0 G$ R4 C/ N( l( c3 j! [
  3027. STX $4008
    5 S( k$ y7 N% {; X- N
  3028. STX Sound_Bar + $08/ S: Y, l/ E; W- K
  3029. RTS
    0 H2 i" }2 x* f' |
  3030. ( C/ E4 _4 {! q( J% `! u+ a' [
  3031. .ORG $FF78
    . c, {; ^: a3 @- A
  3032. STX $400C
    : p8 X1 ?; \# `3 u. G, X, C
  3033. STX Sound_Bar + $0C! g5 r6 ^: a/ L2 T) F- o6 G8 `
  3034. RTS
      ]( l* m; z! V% N  n5 s

  3035. 0 d3 w5 ]3 n% ]
  3036. .ORG $FF80) z( e1 C, W. k- N* h4 [! u+ d
  3037. STY $4000
    # d0 I; ]% N1 L0 p
  3038. STY Sound_Bar + $00, Y. S( y  u2 j1 A+ d) A6 R
  3039. RTS
    % {% I8 [/ W" `6 W; _3 z1 ^& b/ ~
  3040. : c( F+ [8 R9 M6 _& q% X  m. J
  3041. .ORG $FF88! H8 c- B) K9 X$ A1 N: @, s# T
  3042. STY $4004
    7 g, J2 t! l. D4 r
  3043. STY Sound_Bar + $04/ O6 j) Z/ S& n  a. v  W
  3044. RTS
    6 `2 s7 X  l: L9 n! o$ K$ i+ a5 [3 S
  3045. ( t) I& L5 x, W, o- g
  3046. .ORG $FF901 G* T$ N& F" r& u
  3047. STY $4008
    $ ~1 [& L8 @; f
  3048. STY Sound_Bar + $089 b6 B' b1 y3 v( u/ C: p
  3049. RTS
    5 M. |/ t( r7 w) A  {

  3050. . T- k& E1 A  d
  3051. .ORG $FF98
    / N' h; R" g3 R. V8 I
  3052. STY $400C
    8 r' h1 K1 a9 g. s
  3053. STY Sound_Bar + $0C3 I/ T5 Z0 s+ `0 U8 v# B
  3054. RTS' W8 U( q2 ?9 s, \  F& N7 E, `  v; a
  3055. , U& ~% {# g. Y8 `* i
  3056. .ORG $FFA0
    $ B& y7 U! I% V9 o
  3057. STA $4000,X* j: d& m. x3 y3 l
  3058. STA Sound_Bar + $00,X* p, T3 t2 M; m8 }0 p  F, O
  3059. RTS# C. |5 X/ w  G, `% h

  3060.   t8 E& I4 a" m; ?! b' K( g4 i2 F; u
  3061. .ORG $FFA8# L" ?9 j+ W. I# W6 o% J5 y" @
  3062. STA $4000,Y9 d0 K3 Q6 f$ r! L% ?
  3063. STA Sound_Bar + $00,Y4 E; B& z7 [+ I3 Y, H& b
  3064. RTS
    3 H9 N) t* R, ^

  3065. 0 I1 E& |, f4 g
  3066. .ORG $FFB0
    2 a" a' T. _0 N8 m3 g' z
  3067. STA $4004,X" ~0 i9 K/ e9 o/ h5 |
  3068. STA Sound_Bar + $04,X
      }% m. W4 M- d- R  Y7 B
  3069. RTS2 A0 D% l+ e, Z; e7 q
  3070. , O& s) K  g- R6 Z( E6 W
  3071. .ORG $FFB8
    0 h; m  ?3 J& c1 y, C) X$ o" ?7 r* x* N
  3072. STA $4004,Y
    5 ^% }5 q$ p4 Y. M# A
  3073. STA Sound_Bar + $04,Y) D( D+ b; C0 p& Z# l( Z
  3074. RTS' |! S  u$ d, b# t, j9 L

  3075. & s5 U' g  C5 ^# Q& y+ z% B) {9 v
  3076. .ORG $FFC0
    ! h# f3 p  `  ^2 G& a" D! a/ e6 W
  3077. STA $4008,X1 @. U+ G& ?9 U8 u
  3078. STA Sound_Bar + $08,X
    7 [/ G# ~+ P* V+ @  {
  3079. RTS, \/ Z: X0 G' x

  3080. ; w/ u& c* q- j8 ?
  3081. .ORG $FFC8" N7 ^* C, [& h
  3082. STA $4008,Y) W" z  R, D3 F3 b+ t# a
  3083. STA Sound_Bar + $08,Y7 N6 P  P$ }; u; Y6 I8 t
  3084. RTS' l" \' R% T" B3 o

  3085. / i) m  o. @7 z5 z
  3086. .ORG $FFD0
    : d& h# ^- T! [
  3087. STA $400C,X' O9 V: h8 ~0 O
  3088. STA Sound_Bar + $0C,X
    1 l( |  w# k" r) z2 ]3 H
  3089. RTS; u, G: D) e& X$ l% u/ {; r, `

  3090. * x+ M4 b# U) e
  3091. .ORG $FFD8
    . D2 ]! Q  d' R! N
  3092. STA $400C,Y
    ' T* _' P  I6 ~4 ?
  3093. STA Sound_Bar + $0C,Y0 q6 P) |8 p$ G/ F) d" c% ~& V5 X
  3094. RTS
    ( ]2 ?4 Y; [& G1 a( k

  3095. 2 j9 d  {2 k% @( Q. Q' @& j2 S
  3096. .ENDIF) t" ~* \( t* I* ?
复制代码

- K6 A3 d$ ]% [$ W
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3320 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-17 04:48 , Processed in 1.106445 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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