EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 6 H: E/ L5 l6 |, j9 Y

( u, y+ i0 l/ M7 d5 i[FC][音乐12 IN 1]
0 u0 y& m) [8 {! W% I# z时间: 2023.07.23' Q! M: R2 X6 V" g) V) K4 _
作者: FlameCyclone; s3 h+ F+ l) Q7 a

9 m, R( b4 [( X/ r) @8 S收录音乐内容:
3 O; h8 }) x) Q1.Raf世界
' W" i/ A- W! e# }5 T& y  V2.最终任务
  x8 [$ b# R5 V3 t$ @7 y+ p" I3.赤影战士
% f. F) @) k2 y  w+ q$ Y4.双截龙
) ?  r, ?( |3 }) A9 b5.双截龙2
8 Y* N; u0 ], t1 g/ C5 |4 }& U6.双截龙3
* d. i4 }. w1 `" g" Q" S0 X7.洛克人7 k. O) k5 @0 y
8.洛克人2
- E. R; t# f9 u8 O5 a# q% C* U# \9.洛克人3
8 f: g3 y- q( @7 p10.洛克人4: O& s$ V4 u( [; d' }7 F: H
11.洛克人5% o3 \4 c7 k- s" Q( j
12.洛克人6
( C7 o* m! l- `' V( L# }% s0 }2 `8 T* ^7 d1 H* C
操作:
* M0 z1 r5 F: k0 x上键:         上一个专辑+ U: j. _5 U, \: r- ^
下键:         下一个专辑8 J2 e: J, w& R# y; z. |
左键:         上一曲" ~5 L9 b. r  R
右键:         下一曲3 F% |( w) b) u& f- g1 e5 U! D
B/A键:        前10曲/后10曲3 X9 Z8 _) @+ A6 V' R3 t
选择键:       下一页
6 y# \9 x6 {; y开始键:       停止/播放- _9 j1 ]% v) d( g

& l( J9 [! r' V8 vhttp://flamecyclone.ysepan.com/: o9 m& i$ u& K( x5 d7 z' U

6 k" K6 h; q/ o) m7 S
! `: N0 N1 ~/ i( f: N4 p
. N) |( l7 x' u8 P
* A5 V6 t; J9 _& E8 F2 c
  1. ;[FC音乐][播放器模板]5 n- z% ~2 @# P
  2. ;FlameCyclone 202307107 _1 s& A$ T/ F& H. S

  3. 9 I$ Q- A3 ]* g. J2 Y
  4. ;文件头
    * M. U( h, N) x2 F8 e* \* ?) w) T
  5. ;======================================================================
    8 Z1 @% P7 @6 \0 R
  6. .INESPRG 16                                             ;16KB PRG 数量
    5 ^- C9 [6 ~9 S- `8 x: a- ]
  7. .INESCHR 1                                               ;8KB CHR 数量  L! ~/ _6 X8 }* z
  8. .INESMAP 4                                                   ;mapper 4
    & c; Q% z3 q1 R5 C3 @
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    % ]9 y, B9 Q! N  B9 z, F' ?  _  S

  10. $ z, j. v; ?, b/ c7 S$ n! t! B
  11. ;==================================================& \+ M! W  f! o
  12. SOUND_BAR_SHOW_ENABLE       = 1: b! N$ G  S2 M# B; N
  13. ;==================================================
    / K( c. k1 y7 t' h* G
  14. BANK_DATA_MASK              = $1F
    ) P+ \* h3 c& A& O8 n
  15. CHR_RAM_ENABLE              = 0
    & s. v- G8 k% M) r1 Y7 E" ]
  16. IRQ_SCANLINE                = 1364 B( }+ ^, Z* n7 ]+ S0 E* o
  17. ;==================================================. T; t  w8 N- t# ~& P! h1 e
  18. SOUND_DATA_BANK_00          = $00
    5 F6 W: K3 N9 @0 R+ R1 L
  19. SOUND_DATA_BANK_01          = $01/ \5 a9 r  c/ h0 Y
  20. SOUND_DATA_BANK_02          = $02
    / m9 X0 i" N/ P( G' A" V$ l
  21. SOUND_DATA_BANK_03          = $03
    & d% f' Z4 u, x) V8 l
  22. SOUND_DATA_BANK_04          = $04
    ( b3 j% q: _+ |! n0 t, w. ?
  23. SOUND_DATA_BANK_05          = $05& P& S  [, K& x# ?2 P( n$ q
  24. SOUND_DATA_BANK_06          = $06) N1 C  Q5 m# _- V; W3 `  S
  25. SOUND_DATA_BANK_07          = $07
    7 @: f/ Y# V* W9 s8 L
  26. SOUND_DATA_BANK_08          = $08
    6 [- w8 d; e( ?+ C7 d" K7 G
  27. SOUND_DATA_BANK_09          = $09
    ! x* ^8 O" T% g+ X  ~3 J
  28. SOUND_DATA_BANK_0A          = $0A3 |$ i* w1 z- X. w+ N
  29. SOUND_DATA_BANK_0B          = $0B
    5 H/ k# q( i) U
  30. SOUND_DATA_BANK_0C          = $0C: ~2 w/ E( m* Y8 ~; q  u0 I  _
  31. SOUND_DATA_BANK_0D          = $0D7 v  Q3 r3 C) ?# A9 ]9 r6 G
  32. SOUND_DATA_BANK_0E          = $0E
    ) x, P1 Q8 \# M  C
  33. SOUND_DATA_BANK_0F          = $0F2 v. F7 q9 |) [' A( M/ K
  34. 4 @2 U  h5 ?7 j, s, O" Z! L+ g$ i
  35. SOUND_DATA_BANK_10          = $10  Q% ?2 u1 h$ t! g' m/ n
  36. SOUND_DATA_BANK_11          = $11* c6 t/ D( o7 [, v* x
  37. SOUND_DATA_BANK_12          = $12
    8 V( X% ^$ M5 ]" C1 H
  38. SOUND_DATA_BANK_13          = $13
    ( \( R5 \7 K- x7 \0 y$ E9 z
  39. SOUND_DATA_BANK_14          = $14: f& u8 g9 {4 t! @6 _/ `6 P& Z2 x
  40. SOUND_DATA_BANK_15          = $15: K8 b# l4 o9 R: p8 X- a
  41. SOUND_DATA_BANK_16          = $16( H, \1 Y1 D5 Z# k4 w: |+ K+ I
  42. SOUND_DATA_BANK_17          = $17
    ) _) U7 ]' f, Z2 ]2 A4 D2 q
  43. SOUND_DATA_BANK_18          = $18
    , b, q& y& o7 R# G4 w" ?
  44. SOUND_DATA_BANK_19          = $192 Y& A. }$ H, r
  45. SOUND_DATA_BANK_1A          = $1A
    " `+ R; X, M2 D1 `0 @
  46. SOUND_DATA_BANK_1B          = $1B5 a3 L0 o4 F, Q& Y; N
  47. SOUND_DATA_BANK_1C          = $1C( Q; z: F9 \3 ~' ~5 J+ K3 k$ p* d
  48. SOUND_DATA_BANK_1D          = $1D% j7 K! t/ V3 d( O3 `  ~% |
  49. % U6 V% b3 \' n; |9 k( L" l
  50. SOUND_DATA_BANK_C000        = $1E
    5 D- M  Z" j% D$ U
  51. SOUND_DATA_BANK_E000        = $1F
    3 q( L6 ]* |0 d
  52. ;-------------------------------------------------: X) P" U2 |* f4 ~. Z1 W
  53. CHR_DATA_BANK               = $20
    , I; p2 Y1 e9 \0 y
  54. CHR_DATA_ADDR               = $A000/ A- i; Z8 O. O/ ^: g* r$ [* ]& \
  55. ;-------------------------------------------------
    4 b, _1 N6 E* m
  56. PROGRAM_BANK                = $00
    # v3 ^0 T& t( `; _4 O6 }3 Y# W
  57. PROGRAM_ADDR                = $8000# {) s* J5 V& y6 V% O6 _2 J$ G
  58. ;-------------------------------------------------
    # N; X1 o7 l: M8 M
  59. RESET_BANK                  = $1F
    " R( e3 ~: X1 ^  i
  60. RESET_ADDR                  = $FD001 {8 Y: B* q' D* a& F6 P

  61. 4 M% B0 v' h. _5 S( r) _; ]
  62. ;==================================================! P$ R! u: ^2 n( J5 ~8 L3 R7 Q
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数0 i+ m4 {2 O" J6 o1 _7 G( P
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    2 f" g2 o4 ]3 k" s$ u
  65. PAGE_SIZE           = 5                     ;每页节目数6 w7 t! s) ?3 q- C% e

  66. 6 L& R' t" C, h' D2 X
  67. ;==================================================
    , G5 W: D) \( h8 F7 o
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    ; `5 h2 s$ N2 s7 N; Z, u3 a
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数7 p9 p3 H! ]! v6 t7 Q6 m
  70. .ELSE
    7 E* ^' s# F6 ?. v5 c: y; y
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数) R$ v! C% B: l" m& f
  72. .ENDIF6 j3 ?! p/ D* W+ F) J- w/ j8 J, Y

  73. 3 m+ J; T3 M# e" o) r! Z' l
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    , q" m/ s8 X, P" {$ ]

  75. 1 \$ I3 l! D- O* v4 e5 y
  76. ;==================================================
    ( |/ `7 U, y2 ?4 R! E# O: p5 }
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置! p& K9 F% S, C
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 29 @3 z- R5 d2 `! b
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    9 B6 e' }# O+ o& y# q
  80. ;==================================================
    8 t; w. }, }% I, y
  81. Caption_Text_Pos    = $204D ;标题文本位置& ^1 @! C! M9 V
  82. Author_Text_Pos     = $2324 ;作者文本位置
    ! J; b% z* x) W2 l' G; c: [' z. V+ x
  83. Date_Text_Pos       = $236B ;日期文本位置" y' F5 Q+ w( h' k  T
  84. ;------------------------------
    ) ?) G" ^( Q9 O) P' u5 R5 w
  85. ;------------------------------
    3 b/ c% c" Y, G+ z" n5 g
  86. .IF SOUND_BAR_SHOW_ENABLE
    ( D9 y( }, _0 X

  87. ) }4 g4 T) E( _1 ?; h: W/ v
  88. Play_Index_Pos      = $2273 ;当前曲目位置) y1 v6 \2 S& t
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    5 F% e; o+ c2 y" A5 `1 j/ }
  90. Play_State_Pos      = $22F3 ;播放状态位置$ E3 I* S3 J( e7 \- p0 ~9 v

  91. 9 w7 d! O+ S$ a
  92. .ELSE9 v: O. i' P5 A/ \( g
  93. ( v8 q/ k7 R8 W0 q
  94. Play_Index_Pos      = $226C ;当前曲目位置6 V' b; N& O- T/ }# g
  95. Play_Time_Pos       = $22AC ;播放时间位置* D, n9 p5 Y9 Y" B
  96. Play_State_Pos      = $22EC ;播放状态位置
    + e8 O: R) J5 A# V* d! V3 T
  97. % Y8 e* w9 ?$ b# ?0 ]1 O; H
  98. .ENDIF
    % v! Q7 o2 S2 [' ]
  99. ;------------------------------
    7 b- [$ [2 Q7 v3 N3 |
  100. Track_Name_Pos      = $222B ;曲目文本位置: l6 X+ f* o% \5 y
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    4 h( Y, i# |/ b4 P9 W# T3 A
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    . D* B1 v0 T$ @- u- _% C, K* W7 B3 L
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    7 ~# f$ u1 Z: q
  104. ;==================================================
      {7 w# t" q2 l/ O7 s0 x, G
  105. Scroll_X = $001 M4 ~. u9 u8 H+ I' v6 L
  106. Scroll_Y = $00
    $ Z! Y1 W1 Z. G1 @( r  e
  107. ;==================================================7 V, J5 W' o$ f% C
  108. Sound_Ram_Addr_1       = $0100& ?* h0 n  Z" ]% R
  109. Sound_Ram_Addr_1_Size  = $80* i$ s) K: s/ |. e
  110. Sound_Ram_Addr_2       = $0090+ u* O+ \; i. g& j
  111. Sound_Ram_Addr_2_Size  = $708 q: J" c. ^" b* m, y1 y3 J8 n/ g
  112. Sound_Ram_Addr_3       = $0700
    , o8 `8 B5 [+ P2 B5 H
  113. Sound_Ram_Addr_3_Size  = $00% S* W+ V1 D6 H
  114. Sound_Ram_Addr_4       = $04005 F. M2 z& X( A
  115. Sound_Ram_Addr_4_Size  = $00
    4 G# T; }+ ]( d& h
  116. Sound_Ram_Addr_5       = $0500) l9 }" C# v2 F5 M) {5 F7 H! A
  117. Sound_Ram_Addr_5_Size  = $40' F5 D0 u# D1 W
  118. 1 J' H1 e% a: R" N2 T8 V7 {
  119. OAM_TEMP_ADDR   = $03002 C% z  ]8 Z8 ]6 `& N- q

  120. : z! [8 C9 U! [% v% I7 ?
  121. ;==================================================
    , H% }1 `4 w  D3 t  W- B; q/ M' l1 K
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器2 ]! O3 K5 |9 e4 K* i& Z! o
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器5 e& X$ E/ _, T6 A! f! `" c+ n
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位. D3 W* F+ M  X( V; a& y3 K/ J
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    - Z, u" v9 ]- ]3 Y/ X' E: c
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1& y( h7 a# ]# K
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 8 g) y/ V. V8 v
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    1 `1 p7 i" b0 f# d8 S2 `
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    9 V! v' A: M6 K: ]
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存5 I/ S! g! N: v$ k: `) X/ b" U
  131. APU_STATUS              =   $4015   ;声音通道切换$ {# z8 m. v0 d$ h
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通: z1 M7 P1 d! E1 `% @5 ?
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
      F+ ]6 \# H/ s* N+ G! r0 ~
  134. ;==================================================
    + K- G1 n. L) t( t. N
  135. MMC3_BANK_CTRL          =   $8000
    9 y9 @0 ~. w3 g' e& Q
  136. MMC3_BANK_DATA          =   $8001, H7 C9 n5 b/ i
  137. MMC3_MIRRORING          =   $A000
    - e: y: B" c  f. Y5 N8 e2 Q
  138. MMC3_PRG_RAM_PROTECT    =   $A001& S3 Y! E# C, j6 j# g
  139. MMC3_IRQ_LATCH          =   $C000
    4 M* Z0 g! K0 d6 X( j
  140. MMC3_IRQ_RELOAD         =   $C001
    ! I  j' o& z# c! c) s6 Z
  141. MMC3_IRQ_DISABLE        =   $E0009 W* |$ z, z; i* K. |- ^2 B) F
  142. MMC3_IRQ_ENABLE         =   $E001
    + b: w4 B9 }5 o! y1 p/ A- i
  143. ; d3 @" ]$ d2 @6 ?1 l* g
  144. ;==================================================1 V+ t; h/ X& [/ r
  145. PPU_Addr        = $0200; I) [2 O7 I0 v% `: y' j
  146. Palette_Addr    = $02C0
    ; S8 ?3 }# \% s# {0 Q) N9 F9 q
  147. Sound_Bar       = PPU_Addr+$E0
    ) h/ c3 a7 Q# B. B$ u' h0 f$ y7 R
  148. ;==================================================  C3 c$ k. V7 L# A. b  p& _
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D. A* p9 J. p/ @
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    ) D2 F" z/ V4 b/ r
  151. PALETTE_UPDATE_MAX      = $2C
    * }' k# ]8 M; ~6 q7 d
  152. PALETTE_UPDATE_MIN      = $21
    : A  B8 D$ Z9 j+ W- F- z, z2 n
  153. PALETTE_UPDATE_INTERVAL = 60
    $ m/ h% g, U) Y( g) u; |2 j, U
  154. ;==================================================
    2 _8 l( A4 o' f+ C5 v# L
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    3 N1 c1 e3 ?* v- G- Q" D
  156. PPU_Cur             = Sound_Bar_Cnt+$02
      w  k- E5 h4 E" `" D( S( `
  157. PPU_Addr_H          = PPU_Cur+$03& B' t( X' t! G" K9 x* [0 i
  158. PPU_Addr_L          = PPU_Addr_H+$04
    ; K1 I9 `/ d' K4 S$ G
  159. Screen_Ctrl         = PPU_Addr_L+$01# T  e0 O5 |9 f1 A8 _
  160. Screen_State        = Screen_Ctrl+$01
    + U6 `1 j  b2 w$ }1 Z3 S7 i  }9 O
  161. ;==================================================3 t2 t! C; [  x$ m% s6 N+ G
  162. Use_Ram_Begin       = $505 d, z* l0 `* o( W- f* j5 K* M& j
  163. ;==================================================
    0 t1 o( _% E! G- R9 g
  164. JSR_Addr_Op         = Use_Ram_Begin
    ) R  p2 f) ]6 z* {3 E
  165. JSR_Addr_L          = JSR_Addr_Op + $010 N/ I* Y( b, y/ ~3 V6 g
  166. JSR_Addr_H          = JSR_Addr_L + $017 N' ]2 c- |* G% D5 n) ~9 X7 @
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    , n% }: b7 j. P8 y4 }- C
  168. Data_L              = JSR_Addr_Rts + $01
    2 t$ A7 q/ U, @0 C+ J( k
  169. Data_H              = Data_L + $011 o* D/ \+ z* w" X
  170. Data_Cnt            = Data_H + $011 k6 g4 H" Z0 u  G6 {& V4 C
  171. Data_Buf            = Data_Cnt + $01
    6 b! ~4 h8 f" o6 r* W4 y
  172. Nmi_Time_Count      = Data_Buf + $019 d' \; v+ U% |/ j6 s$ Z3 w/ U
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    & O1 p9 W( o3 Y. V4 T" \. O! h
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    1 b9 W) S0 N. W" d% s

  175. & q0 A; }& [4 o  q* K
  176. ;调色板刷新标志8 z! b5 `5 z' C+ \" w
  177. Palette_Update_Flag = Palette_Wait_Cnt + $016 \0 [' O# W- X% |% m/ _3 \

  178. 4 E: z, z  L* t
  179. ;当前帧文本写入禁用标志
    2 @2 A- S* X' d6 J0 T
  180. Text_Disable_Flag   = Palette_Update_Flag + $01/ P+ G7 u9 }( i& t" |: K; Y# d/ Z

  181. + O7 ~5 E8 E, n1 d7 L
  182. ;==================================================4 Q3 |4 x; `5 B. g4 S
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动# b. d' T$ C1 v
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    1 ~7 H* e" C7 C7 d) }
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    ! e3 m% p9 ]& [, F8 N, ^
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    : l2 M5 J' w6 V- k- W( Y, A' J2 f
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间$ [* G7 y# N/ N9 Q
  188. ;==================================================4 Y# W1 Q' g' j# Q. x, P
  189. Key_Keep            = Text_Disable_Flag + 1
    + {" S' Y, u3 |8 v- Y  p. u8 ]- |
  190. Key_Once            = Key_Keep + $01
    . |8 v" a/ z; ^9 u
  191. Key_Kemp            = Key_Once + $01! q6 T$ z4 Z! S* m. w3 G
  192. Key_Temp            = Key_Kemp + $01, w* S$ \0 f4 o% m* s: n
  193. Key_Getv            = Key_Temp + $01
    ; T! ~" p- H  S+ y* P9 V5 ?9 u
  194. ;==================================================( O9 J! P3 o' H
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    - w  k9 g# \  f! e% ~/ F
  196. Music_Item_Last     = Music_Item_Cur + $01
    8 N% z; ~8 D9 q/ Q' \
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集  d* \. G: D3 M: s. `  G7 \
  198. Music_Cur           = Music_Total + $01  ;当前曲目, ^4 z" h* ^9 v" C4 s- Y* W
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目9 _6 D0 e# H3 A# v
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态8 N  M3 L( y0 e4 H  ^, r- W: Z
  201. ;==================================================
    * T7 W" v1 v4 H0 Q8 v  ~. @, O
  202. HEX_Data            = Music_Stop_State + $01$ x8 r- J8 \& V, M5 Y
  203. DEC_H               = HEX_Data + $01
    1 A4 M  C$ M: {) [0 o. J8 [4 P* O5 p
  204. DEC_T               = DEC_H + $018 Y3 R$ ?8 D; }
  205. DEC_L               = DEC_T + $01
    # P' c7 I6 k; C0 R0 ^9 n+ o
  206. ;==================================================" _5 {9 F2 i; U- V5 q; g% N
  207. Time_S              = DEC_L + $01
    - J& Y" Z$ y2 V9 Y; R2 p
  208. Time_M              = Time_S + $01
    / r  \5 y5 V1 C: e# ?
  209. Time_H              = Time_M + $026 ?* d2 {! W( a! ^( D- [
  210. Time_Cnt            = Time_H + $03+ X) l# J- P" A0 k: \: J* s7 N$ t

  211. 2 Q* {" r) x9 y4 I' G
  212. ;==================================================
    ) b+ T# T: u9 A6 r7 x5 G) E
  213. Music_Bank_8000     = Time_Cnt + 1
    7 J% D  m5 U. O/ ?# @" ?# e
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    ; @. q# g+ n3 Y( [
  215. ;==================================================
    8 q* ?+ ^' r; o  _: {1 J2 m( j6 b
  216. Scroll_H            = Music_Bank_A000 + 1$ l/ Z) s$ Y$ a- u% ^1 R, a
  217. Scroll_V            = Scroll_H + 1; @1 L% Y$ }3 G# t5 h: }9 v$ t; v
  218. IRQ_Process_Index   = Scroll_V + 1
    / Z* E0 t* A& ], P
  219. ;--------------------------------------------------0 n' ]0 ~& O: E) ~7 I) B- B- T
  220. Page_Cur            = IRQ_Process_Index + $01# j. R4 E/ O+ D' z9 S) o
  221. Page_Cur_Index      = Page_Cur + $01
    3 q/ U+ Q5 Q# E
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    ( }2 D6 u, R' }" m' b, ~
  223. Page_Last           = Page_Cur_Cnt + $015 p5 X: N- ?# `. ]& T9 s$ p& V6 Y
  224. Page_Last_Index     = Page_Last + $01
    1 v- c: L* C" H: ]! R+ ~# y
  225. Page_Last_Cnt       = Page_Last_Index + $01
    8 j; u7 l4 x* d7 v' m: S- ^8 H
  226. Use_Ram_End         = Page_Last_Cnt + $013 g8 Q  F% L4 Z% [! z, Y0 J3 f& Z
  227. ;======================================================================/ h2 W  V1 g+ V
  228. ;音乐数据块* g+ n/ C9 G" w% T% g4 M0 S# a

  229. : b! P4 y2 H& k
  230. .IF SOUND_BAR_SHOW_ENABLE! Z9 Q" o- k% K  I- C* o. }5 `
  231. + G6 J  R3 |7 y9 k% P! z
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    , w# S& K5 k& _1 ~8 }3 `5 t8 g
  233. .ORG $9000$ R% ~' U% n# f, l+ I1 V! F0 r  e. Y: E
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    + `9 L- G  \6 m9 q: L4 I9 t

  235. * K/ W0 x8 u, i  R8 F! J6 U
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK2 U) @0 y) f9 o
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"5 g; d9 `, p( O& k, U6 T
  238. & A0 z: L+ i$ Z( a1 I
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK$ S, z! n" h) ?0 v# U
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"% S: Z& G) p" @8 B4 b* R0 b$ ?

  241. # d" E. G8 `" t3 k
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK2 A9 D/ b7 }+ q" C" k
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"- |/ R& \0 T+ V$ A' [- F
  244. ; m, f& k/ w  g+ b5 t+ c: k
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    7 V/ t. b. @4 c  e5 z
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    " Q* t; i- h6 q  {2 H
  247. ( c6 q' M7 V9 B2 _, g
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK' b0 Y+ I/ ?9 m1 d! c4 K
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"5 d# P7 W4 q- G' F( L- w

  250. : e- }' r$ |$ h) |
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    , B/ r9 @8 f3 t- ?7 |! a
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    5 d8 V+ D, G7 B( ?, W' p

  253. + L# N  b0 f" _; b0 D8 d- |5 x9 H; ?
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    % n4 R/ R5 T* K. m+ e
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    2 i5 @9 _; ~6 U3 k
  256. # R7 n2 I5 b+ M/ J6 D2 `* Y1 p
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    ( P: b( O' \1 h$ ]6 q/ y
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"& c0 a& ^3 U  s3 S7 A

  259. 2 y' b! K7 T" b9 F! l: h3 s: |. n
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK1 j9 r- ]6 _4 V  c( _$ k
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
      U5 {4 O9 G4 r

  262. ( `& H9 Q# I0 u" Q( }; @5 ^4 T) x
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    % z4 ^) a5 U7 z0 {
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"9 q) Y8 z. F: O3 w6 U# @

  265. & V5 W) {5 u  m" ], H' J6 C
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK  Z) ~$ u7 \2 A$ g* [$ Z8 h
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"' w' x+ w* r8 O$ K% q

  268. , }4 \6 d# X. u1 r1 s
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK2 @. F" i0 X% Y: L$ l( f. T: H' I; c
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ' c& {/ e' k" e+ N6 `

  271. 7 i: V& R: q; g6 J0 P' t6 W) `
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    . x/ p* e4 L/ c% N) N! M8 ~
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    4 h% w9 S& v2 W. x/ |0 \) t

  274. 0 y& f1 p2 `( ^9 d3 j0 h- {. o( v
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK$ k$ C! Z0 ~) F' w9 w& ?4 q# c
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    ' G0 V+ e' q! ^( w

  277. 9 |0 p- H, k) C  K+ d
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    ; d6 L' d% t+ ], ^8 Z$ r
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"" e2 j1 T0 S5 c0 ^

  280. # g$ B, A+ s; M4 y- O6 m
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    / o; E- p9 |. A. C8 e
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"5 y& h8 ?8 w9 ]: t* s' @" e

  283. 0 c$ k/ h  H% Y* Z; d
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK3 o% ~$ z5 w" L9 G; q9 H, l5 N5 S; z
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    0 W, ^+ ^$ X  i$ R
  286. ' R2 F, a! D4 w7 {* \) b% N: m
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK& \9 d+ U. m; Z4 v6 s1 ?6 }! n
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"' |( x+ g, `* ?& u* r
  289. $ y0 q: ]/ o# e
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK- w0 H# t* v, ^/ I- |4 j, k
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    " f2 Z- m3 B4 f3 p" u1 o# }

  292. , L+ `( u5 P6 X) F
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    ! z; s5 r4 }& l4 E, y" Z
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"$ r' t1 t4 H& l0 }
  295. * b% a' I4 [/ n, m
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK) }; ^$ O0 y6 e% G
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    2 ^9 H: C; d) i8 H

  298. 8 l$ n: z( v5 W, I, y. X
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK! f2 H9 d- F) ~2 P1 F
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"4 e3 l7 ^% l* ~% G! ?- Y5 x
  301. + g) O! T* e5 d- X
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    , O' G$ G+ y' r7 O
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"( _  O) D, \% ]2 R7 l5 {1 A. q% U) H
  304. 4 Y( c* E. o  x. J# b1 B; o: c
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    & c/ X% ^4 B( f% a: j8 c/ b% I" p5 r- s3 v
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"' b/ _0 p( z6 K

  307. ( J' T3 ^4 ?) f* V& s
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    ) o  v! B, [' g2 a8 \
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    8 v6 y3 s' n  I8 U

  310. 7 g) N* p9 X' s! [
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    9 ~" j: k/ T+ X$ s3 g
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    * v3 h, J: B9 A

  313. & x) {- X5 k: h% y( O7 |
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK4 g9 {6 z, \' T& R3 W' ]2 i
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"1 T8 E2 a1 V8 ]8 f. a0 I9 m. ^
  316. - I; h* x' r7 x7 C" O
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK* {* M# c/ T/ q. U/ d" G. L
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    5 Y8 T: F8 `$ |

  319. ) t' D4 q, I- I  q; [  S- U
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK& D, m) ^2 `" `; t
  321. .ORG $D400
    / F4 t! G/ u1 V  E3 Z) {2 n, e
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    ' i$ J3 ~4 y- u6 C) I2 E

  323. & h& e5 y" i) q0 @0 `
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK! o$ `+ j. e$ I7 K! b/ W
  325. .ORG $D800+ s1 P5 z) ~; _
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"( P2 [7 c" U2 ]
  327. # ~4 A7 U7 |  x6 P/ G1 Y2 Q7 n

  328. 9 T9 @" l8 ]0 U, i
  329. .ELSE' R, ~1 |: I3 ~2 G
  330. : W: A3 T; D$ T: v& U* S0 Y
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK( v- n% o2 C! v7 u+ ]2 T
  332. .ORG $9000
    ) H2 a8 D1 N: M6 k7 b8 g
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    6 L) l  u  H" }6 J5 q8 `
  334. * [3 q/ Q: I5 `
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ( l3 y1 |1 k4 a5 t% j# M
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"3 b& [  a% W/ O$ k4 W" T6 Q' q
  337. 1 m/ [& S- F3 v$ J
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    0 x  V" ~1 ]! y  E  Q& u- t$ ]2 D
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"3 l1 h2 j# w& S" j0 v3 M- Y3 Y- ~8 D9 H

  340. ! F3 S* S+ V$ T7 V' x
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK6 b3 [. J* l! U. E5 K- [
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank". y$ ?9 A) O2 O' D6 a4 w/ `
  343. # O/ x2 y' {5 @8 G
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK+ x9 [! Y  x) ?4 u$ e
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"' `0 ^" a4 h$ T; ]* }

  346. * o- o1 m) C" ^; j
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK5 W2 w0 Y, {& R* v
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    ' [" ?# z6 A# F/ o5 X  G' p+ c
  349. , C5 F1 N: E9 g& ~
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK; |0 U0 Y! Z' }! Z
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    $ [, ?7 Z( ]" O2 T4 d
  352. 6 e1 U7 N; n. O2 D  ~6 h
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    + c  B/ y; E. X- @: k: u
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    ; P' w7 H; J! o0 S( Q+ ^6 \. X

  355. 1 q0 ]7 F4 q; C% W* i
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK: V0 W3 w% P# U- y" V
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    " M5 H0 N' b4 B8 R
  358. $ h, u' o/ D6 d  [4 U
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    / D& X1 T) L- l8 ~' Q) {$ d
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    6 e2 P1 V0 d  w1 n! i, O* T

  361.   n; q  `5 C) c; Z; v
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    - Y) i; p6 B/ F  [7 l( v- d
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"' K. s" C: r# p2 \. ^0 N
  364. . E9 q' x! w! p" s
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK2 M; m7 v6 a& M7 J
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"# J9 l0 L3 `* l' f9 ^6 _

  367. . h. x6 H) H' [$ I
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK& J: p6 |6 j; `  }9 _6 f
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ) n9 Y& v& w$ b
  370. 2 s; V) D, p2 b7 T2 H
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK6 U3 K% e; y0 n$ x
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    6 Y1 j- N$ P/ F' _( h4 a
  373. 9 i" }; P, T" o" }& \. G
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK- ]$ A( h9 H8 w& U- l3 b# d
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank". u/ Y" z4 i7 J% y3 y# h

  376. : f) K$ O# B0 G+ d! s
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK/ I0 M$ i0 z7 Y5 S5 h5 W& L
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"8 v* B; {9 @0 ]( s) E

  379. / e& z# ~. h# `
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    9 n6 |# C  m% s. G3 F
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"; i# D! \) K( a9 m! X+ z2 [3 t3 p" J

  382. " y/ O* \! q8 Q' W+ u
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ' U( a, o. n( h3 O( S
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"0 k# i7 [  {7 Z: P6 h8 ?" k

  385. ! p' H( _  N+ U9 |. D7 `
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK# ?% H  Y5 X9 B
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    0 g/ S! L' x% ?
  388. & I+ B* z! \- y$ I& m
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    6 Q( z- m# O" j) I
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ) d6 z+ m" v5 G* S* y0 l( S! i, Z

  391. ' X; ~' A* `0 R8 H$ \; z
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    0 i; k4 n# A) W1 j4 h( ~0 C
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    * E) k: |; ]; T

  394. 0 U3 d+ C( Q0 q  }& q8 b" Q
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    & [5 ]0 W3 e- n: b4 y7 k  \
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"5 G/ e* \% p# @$ q9 c1 O

  397. 7 s' I- f$ o9 i: b; T
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    2 h8 }7 E/ o" f/ i' w: A
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank") [- W6 B' a- N( J8 m
  400. : s3 t$ ]. k4 o" n
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK6 Z' E) ^/ n8 p2 T1 c1 \
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    8 K, E) b- U8 u! i: J
  403. $ z; t; Q: z" d4 H" j& Q5 h
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK, ]7 z2 r4 T) [  X6 s# k; j
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"7 x3 K' n& S. q! {% C; p2 E$ }  K0 I
  406. 8 p6 i, u* N2 f% u: `' Z
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    / G: r. Y; x5 q
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    2 v* w$ F/ H3 h2 N5 J# E
  409. # L: ]" C% D* |5 w# N& s
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    # f0 `$ N- F/ r- R6 `
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    / S6 Q; n& I2 j# p5 m5 K; i

  412. ( X: z- U8 B' S/ M4 D# B! P" t
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK/ V; z# Z% O8 |7 @7 a# S
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    6 g7 E6 [: f* Q' ~+ A: {4 Q+ b0 U

  415. & `! \$ e7 Y) Y  R( K. z. J
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK0 T( O% m5 m- I  G! H. K
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"# u1 k7 v, j0 I4 I, `2 q3 B0 y* d

  418. 0 f( @. n. y: V0 O
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ) z' N8 G: W* V* u  n
  420. .ORG $D400) m7 F* n; {1 P' [
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"! A$ S/ g+ w) w7 ^. o$ d

  422. $ }" i( u. Z2 ?7 R5 M5 }
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK) Y0 Z% w( d* b* n/ N. P6 ]
  424. .ORG $D800
    2 C* B% M' l* v+ Q. d
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"" u: [2 q% f* [' r+ O
  426. 1 _& R, b! ]/ R/ C- m6 v) d& i8 |
  427. .ENDIF% o& r- i8 L5 x
  428. % l4 c9 d# p& e% R8 t' Y$ v
  429. ;CHR图形数据1 v# X! i; b% R0 `2 H9 b0 b( a
  430. ;======================================================================. M- G. G4 F0 `
  431. .BANK CHR_DATA_BANK
      V- Y& o4 Y0 c+ k& f& e
  432. .INCBIN "chr_bank/chr_data.chr"
    # W, g* l, ?( \
  433. 2 A! V, L' M/ p0 ]& T" Y: Q7 I/ I0 U
  434. ;======================================================================
    6 _& s' V: T( o
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK& l4 X% q- D$ ?% w
  436. .ORG PROGRAM_ADDR
    6 r6 u# B5 `6 N8 I8 C% W1 }

  437. ! Q' M6 i# F: K/ S/ j  r
  438. ;==================================================
    ' V5 l9 V, f/ o% }
  439. NmiProcess! @7 r+ H; s3 g' {
  440.   u. d9 n  D8 r/ Q" K) R5 S
  441. ;关闭屏幕控制6 b7 g9 Z1 q; s+ `
  442. LDA #$00
    4 w0 I. ^: @' d, c  m6 Y
  443. STA PPU_CTRL2 P6 e) }* u# D! ?1 f" `

  444. & r0 v" y& S% e
  445. ;没播放音乐就不需要触发IRQ, M, ^' h- v% ~/ ~. L
  446. LDA <Music_Stop_State
    $ @& z3 Y6 j3 C
  447. BNE NmiNormal, {1 ^. d+ d2 ^: z  ^2 |% ^/ A0 B

  448. 9 j( e0 D6 W& A% z7 e% F3 M5 z, m
  449. ;重置IRQ索引
    6 H7 _/ f; C& ^% o" D8 L! N- i
  450. LDA #$00# N# o" i# e7 Q% t( G+ G
  451. STA <IRQ_Process_Index
    % f  G; W0 ~5 M

  452. ; n2 X% L+ y8 H  J9 c  ?
  453. ;时间秒数为空则跳过
    3 q6 F1 {( ~/ F8 ?
  454. LDA <Time_H
      N. d" V; N& _8 g2 e* k' ~( l4 z" M( A
  455. ORA <Time_M. {$ d' f5 g+ q" H7 n; S  ^& v
  456. ORA <Time_S
    8 U& l0 C0 r( ^! R6 [* J9 ]
  457. BEQ EnableFirstIrq- \4 l: K# t. z9 e9 G

  458. : u& ]+ c2 u! b' e
  459. INC <Scroll_H
    $ l. K' E5 C" G3 F! H
  460. & j1 ~5 m( i" n( i5 N9 ]
  461. EnableFirstIrq 7 a* W6 V* _" t) I5 B' f( \
  462. ;80条扫描线后触发IRQ
    ; k' e0 Z" [9 ?2 a) ~" E
  463. LDA #IRQ_SCANLINE
    # q' U4 i6 }1 y& g1 o
  464. STA MMC3_IRQ_LATCH; k( u; v3 u% ~/ v+ Q& M
  465. STA MMC3_IRQ_RELOAD
    , f  V) D1 T, Z/ h5 O2 D; Z
  466. STA MMC3_IRQ_ENABLE
    - s: U8 E. p1 U" a% N5 }1 g' L
  467. CLI
    ! p5 r. v5 W( F  ~$ ]

  468. ( a: e$ y# v  [1 T4 V8 n
  469. NmiNormal; i+ W* a2 {' C- K$ b, D  t
  470. 4 A: T6 {, O( u5 @7 V5 v) E
  471. ;处理PPU图像! Q: V/ e( C8 [4 o. e+ U
  472. JSR PPU_Proc4 {* I) P' Q' `0 V0 i+ ]
  473. ! V( C, B) \, S( X4 u" K
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)6 X. p' j0 ]' p7 Y1 X
  475. LDA PPU_STATUS/ v1 F$ Y# s: G' w
  476. ;LDA #$00
    ) c; V7 _. a# m, s1 W
  477. ;STA PPU_OAM_ADDR
    1 w- {* @& i- c2 \
  478. LDA #OAM_TEMP_ADDR / $0100
    7 H5 ^3 V7 m5 r5 G
  479. STA OAM_DMA6 ~5 ?: U$ n5 P" m: `
  480. ! G$ Q3 n  o! P  K/ E. b* v
  481. ;启用NMI中断
    " U' `' S; ^+ Y, j- x, l
  482. LDA Screen_Ctrl
    - g* Z1 v( F  }( e7 U) B
  483. STA PPU_CTRL' @  E5 {9 z0 T/ R; B" d8 q

  484. % A0 Q0 n  G+ @! {* L
  485. LDA <Text_Disable_Flag
    $ m' Z: V# R" a6 e) K
  486. AND #TEXT_DISABLE_RAM. v2 c# g- [7 }+ V" ?* D- V
  487. BNE Nmi_Sound_Play
    ) [: t' c2 w3 |0 s

  488. & g, Q2 Y+ n6 w, [( {/ n  j4 q# _
  489. ;处理手柄输入' c1 B. F9 a" o/ c# a( k
  490. JSR Key_Proc; U& H( @7 X8 K
  491. + G/ `* |+ [$ p
  492. ;切换音乐(手柄触发)4 h6 D; T! H2 g
  493. LDA <Time_Wait_Cnt- H7 q/ |/ V. p1 M) C& [
  494. BNE Nmi_Cursor_Arrow) w" |2 F+ u5 v2 M
  495. JSR Change_Select_Item
    0 o9 I" l- w$ p" M# s, d
  496. $ K9 h- A6 m4 Y: c* X
  497. Nmi_Cursor_Arrow3 H$ C  H" _) M( i; L# c

  498. * f4 A7 l! _- m$ b3 \! x6 Q
  499. ;处理光标箭头
    # m, u( c: J# O2 _2 o6 b
  500. JSR Show_Arrow1 [# m" Y7 V, ^' d
  501. : S0 J% I, W% H4 Z) A3 N3 J; e: d
  502. ;更新调色板6 n+ T, G# W/ x7 q3 x% g
  503. JSR Update_Palette_Data0 t0 F8 \' \- X# T+ ^; E0 M
  504. / o+ G' n1 X7 H2 u; T# b
  505. ;显示时间(缓冲)( d+ e# X: A) p
  506. JSR Time_Show
    0 m* }4 {: B0 y

  507. . a/ }) P2 a# T" f+ Q. d
  508. ;音乐显示(缓冲)! i' m6 q( n: R3 y6 u; M
  509. .IF SOUND_BAR_SHOW_ENABLE
    # l) k! ]" ~/ x) u, M' E1 v( Y. h7 @
  510. JSR Music_Vision
    2 `( Q# L/ k2 K7 s3 E8 e' P" c5 Z
  511. .ENDIF- ^! z- W/ g+ p. ~" y7 z
  512. & |1 X3 ?% f/ X" w% R5 Q9 Y. R
  513. Nmi_Sound_Play
    8 t$ P9 M% d7 s' }1 j9 x8 b; v4 o2 ~
  514. ;播放声音
    " n+ r, \- l2 B% @, |7 F' w
  515. LDA <Music_Stop_State
    + c3 B' ?. f0 V( m1 Z7 i. L
  516. BNE Nmi_Time_Wait_Set0 c8 z  M/ R( }' W. |
  517. JSR Sound_Play_Proc( |. p0 W& ~" H% L( x5 ]$ j6 [$ i

  518. 3 s7 Z( _& X$ `9 b6 i* j) C
  519. ;播放计时
    & @3 t3 b. X* \' b, c- m
  520. JSR Time_Count
    . p$ A, X9 d) o8 j9 r3 P8 }

  521. ) t/ V' ]( k( S+ _3 D% x
  522. Nmi_Time_Wait_Set
    # B7 W( p! M9 i7 |4 Y
  523. LDA <Time_Wait_Cnt! x; f4 @+ ^- r% u' c, S
  524. BEQ NmiNormalProcessEnd
    ' h. T5 D# ~. W4 H. _6 c7 v% |- u
  525. DEC <Time_Wait_Cnt
      h4 @: o3 v5 x2 I* S5 T: b
  526. NmiNormalProcessEnd2 |$ s4 K' I$ _- ?! A: _* v

  527. 7 }7 B1 e' d" t( E) V# F
  528. INC <Nmi_Time_Count5 Z9 Y, I* m) S7 Y, G! \2 D) ]3 i

  529. ; Q& J8 n* b' K% {: g
  530. RTS& g3 X% g. k) S4 [4 @2 `
  531. ' y8 n( p$ j, ^) `1 r4 g: F, Z. y% h
  532. ;==================================================  H: Q8 o  l7 b5 \% @6 X- Y
  533. Init_MMC3- D# g+ U9 B$ c
  534. ;==============================
    ! ~$ s, R3 x0 n# X
  535. ;禁用IRQ" _2 W' {6 E+ ~5 H8 o2 N4 K" D* E
  536. STA MMC3_IRQ_DISABLE1 H6 u; I& b4 C* Z7 z8 J+ y
  537. * b9 Z& m8 ~& a. H  Y
  538. ;水平镜像
    ( c, W) T& h- S1 p2 |% N
  539. LDA #$018 F$ e( ?& [- L2 P& K/ b9 [0 E. u1 P7 N
  540. STA MMC3_MIRRORING+ f- W' h% i5 f& ]+ D) |  D
  541. 0 H0 m3 }* u) @# l' t: O- K
  542. ;初始化图形bank
    5 e) O+ H& _: P  W
  543. JSR Init_MMC3_Chr_Bank5 c1 i3 a% J8 Z$ l. G9 a

  544. 1 B; I+ y) n2 z& S2 L- M5 E  z7 _
  545. RTS
    4 z$ `  T9 x/ Y, h/ H- r2 }% j8 c* d
  546. ;==================================================! w& q3 X0 J* ~* i7 s2 F8 ]6 a
  547. ProgramBegin;主程序6 x& ?$ f5 K  H% C; P
  548. LDA #$00& Z7 p8 D$ [  ~
  549. STA PPU_CTRL
    % v6 r6 {6 H- f$ |
  550. LDA #$008 K* ^) C) H3 r. p  G5 @/ \
  551. STA PPU_STATUS2 Q1 W0 U# _2 B- V# _
  552. STA PPU_MASK) U3 V! K* D( m8 l
  553. STA JOY2_FRAME
    5 y- i: t' A' t: }/ e

  554. ' K$ V: C' U1 R+ i
  555. STA PPU_SCROLL+ R+ d: n: F- m( H2 a
  556. STA PPU_SCROLL0 h* |! |) V* R: g7 b1 ]) g
  557. $ q6 z0 `, L. Q# T% K! L: |0 ^
  558. ;==================================================
    ( i5 B" l. A" O, n6 U! M) E
  559. LDX #$FF7 u& y4 D9 V- Y0 h
  560. TXS; J5 d# M& ~2 a  L
  561. ! B, O' t* U  K$ V
  562. JSR Init_MMC3
    1 A0 W5 b; A0 V- ~5 _

  563. - L. b. Y; `4 }# z& [4 z5 H
  564. LDX #$02! B8 q) ~  }: J! ]8 }  X/ K
  565. Check14 g( H, W2 D5 _4 J- _* s7 }
  566. BIT PPU_STATUS
    . Z7 k, _( B6 W1 t
  567. BPL Check1
    : `. w/ r6 q4 C5 {3 }) U* @) F/ G
  568. Check2
    % S# Z0 P7 Z7 r0 W
  569. BIT PPU_STATUS
    ) h- G6 m/ b! O0 p
  570. BMI Check2) x$ i9 l, @$ i4 p1 y8 W; X
  571. : }9 ?( a7 l8 r8 ?$ T, E
  572. LDA #$0F
    9 }+ T3 c% ~# J' F3 |
  573. STA APU_STATUS" a- j7 h8 g) e: I# [) O3 o" [( o
  574. LDA #$C0: l1 ]- s! g* \
  575. STA JOY2_FRAME
    ! L$ [& f) I* l  t4 ?$ J$ I% a

  576. , b+ a8 e1 Q2 E& Q
  577. LDA PPU_STATUS
    - O( V! H4 E, w
  578. LDA #$10
    " h8 {' L4 n6 V9 b! L
  579. TAX
    2 W6 y$ m/ U& ]0 W6 l
  580. Check3
    " a3 a3 ?6 r, a& N& Q
  581. STA PPU_ADDRESS
    ; U1 B/ A& x' o
  582. STA PPU_ADDRESS
    1 q! T$ `2 O5 G/ W( o  }" S: U) ?' b( F
  583. EOR #$002 }0 F3 C$ P% \
  584. DEX9 B6 R% u3 s* M: E+ T- [
  585. BNE Check3* z, X# [" j) M! b1 d% d
  586. ;==============================
    8 M; \4 M: @1 q
  587. ;调色板清空
    * M9 Q4 S: g  I! x" C% x
  588. LDA PPU_STATUS
    ( k" v+ ^1 b/ K9 h
  589. LDA #$3F6 x! c) _! b  P) t: k, \6 Z. j  \
  590. STA PPU_ADDRESS, d, e' W- n* |) ?
  591. LDA #$00
    7 |/ s0 c+ ^; `# J
  592. STA PPU_ADDRESS$ l7 K5 ~2 z3 L/ y2 K
  593. LDA #$0F5 |& U! I) n" ?& c* ^, N/ q1 w6 j' d8 i
  594. Palette_Clear, B: t. p8 [& p5 H
  595. STA PPU_DATA
    % A2 w0 H, \9 l4 H* e% l1 U
  596. INX
    ' P3 E0 N* l* x* J7 X
  597. CPX #$207 E; d& N5 `0 d; }6 D9 C. ^: h
  598. BCC Palette_Clear
    + q8 R  j) k5 o
  599. LDA #$00) W" m$ ?- \+ u& V: h/ ?1 i3 t, d
  600. STA APU_STATUS) d' Q; r( w! s2 w4 x3 [

  601. 6 w' t+ K! l4 `5 e8 N$ t
  602. ;==============================8 n( n+ m* U7 {4 ^
  603. ;RAM初始化
    / U  ?, ^8 o2 t* p9 e9 q( P; p
  604. RAM_Clear_All
    / ?: O' c  v6 M. @) Z6 u6 j( m
  605. LDY #$00
    7 V. i5 |: c! @% E! e9 Y
  606. LDX #$08, ?" ]& W3 m: ~; L' X# `
  607. LDA #$00
    . n+ q' V4 b, j: d
  608. STA <$00
    , S  s) g. S% W) K$ W; a
  609. STA <$01
    , r2 K( I  Y: d  }1 B; J) t3 E; @
  610. RAM_Clear_All_Start. m" H0 T! @6 ~7 Y* O
  611. STA [$00],Y
    . M( S- z6 d1 C, }
  612. INY
    7 Y  q+ I% O0 n" ?) }0 L
  613. BNE RAM_Clear_All_Start
    $ ]: ^+ b) v# d
  614. INC <$01. p2 c* H! M# V1 U: C. j9 ]
  615. DEX/ {# B' o6 V* J6 r# }
  616. BNE RAM_Clear_All_Start
    % U7 {# K. H& f4 ~

  617. % p$ B2 R8 b$ O* ^: M& R
  618. JSR VramClear' i% M5 X3 ^0 n) b
  619. JSR VramInit3 y) x( j! d+ P6 _3 u/ W
  620. JSR OAM_Ram_Init8 L+ w+ Y/ T- Y# ]1 Z! Q
  621. JSR Init_Palette_Addr. s0 X. {7 j# V# r& j3 {! b
  622. $ c4 g8 ^6 }4 c
  623. LDA #$FF
    - [( G/ Z' \0 B
  624. STA Use_Ram_End
    0 {- D3 o2 m+ i; N. C$ z0 X
  625. ;==============================
    ( A: p0 r3 y$ x# t
  626. ;初始化背景调色板
    ' d5 O; z2 G" `1 y% W# |: \
  627. JSR Set_Palette_Color' T$ c$ {! p7 I% ]" {/ C
  628. JSR Set_NameTable_Attributes: ?4 I7 v; p% F

  629. ( V$ C( \7 a* ^: E. f+ j  u0 v2 P
  630. LDA #$00* s( }& i' _( s- W4 P4 l. k
  631. STA PPU_OAM_ADDR
    ) C( ~, _2 L2 u* W2 n* G% m
  632. LDA #OAM_TEMP_ADDR / $0100
    # Q# M8 g1 m* ?+ l( R
  633. STA OAM_DMA* X1 m8 l' N2 D5 M; t; l7 n1 ~
  634. : R, ]& s  ~8 I+ u
  635. JSR Sound_Reset_Proc7 l3 F+ z5 w! B3 Y$ {. `. x
  636. JSR Set_Sound_Total, A* J' E$ p; j2 h1 x3 X
  637. ) y5 i; ]9 B" I$ B% t: T- v! P
  638. Init_Start_Music7 B' C) H( X2 J( t
  639. LDX #$00
    # L: ?# U6 J3 {0 Q7 |
  640. Init_Start_Music_Write: T3 O, y, }& A0 t- L0 M& R2 \; v
  641. LDA Sound_Start_Port,X+ @" {. `1 G8 g: q- n2 o
  642. STA <Music_Cur,X
    ; m* @' x, e  |: V  U- e* s
  643. INX
    ( n2 I/ J- O# ~, f, A& y( K
  644. CPX #ITEM_MAX_SIZE
    ' v# [4 b7 o9 W
  645. BCC Init_Start_Music_Write
    6 Y7 t/ ]0 S( Y: H/ E

  646. 6 c% v, ^( j  C
  647. JSR Show_Music_Text  l7 b- K4 @6 H8 [! ~

  648. & C9 z; m. k2 J( Y& Q" E$ ^
  649. .IF SOUND_BAR_SHOW_ENABLE) c2 h5 w7 [' N; N# i' P. {) A3 |
  650. JSR Sound_Bar_Text_Set+ S0 v2 C9 \: B; ^' @& b
  651. .ENDIF% {  q5 G; U+ W+ l2 [4 O4 Z
  652. $ e$ L7 ~9 u+ X$ f% i
  653. .IF Track_Name_Pos
    6 }( ]  a9 l! z* H
  654. JSR Show_Track_Info
    + G" \$ {7 L4 E% c8 E
  655. .ENDIF6 }$ w% ]* ~% ?& ~4 Y3 V- v

  656. 7 U, z; F8 b( o" ]4 w
  657. JSR PPU_Proc! {- l6 t( N+ Q* u2 Q( y
  658. 0 I. ]1 e6 F; t$ C
  659. ;==================================================
      X+ Y" A$ O2 c& [. k' M1 B3 E
  660. ;音乐bank初始化 , q2 D) m, m! R' V4 i
  661. JSR Init_Sound_Bank
    0 C; ?! {  k- _3 ]

  662. 0 Q: x, a. s1 q" ^) ~4 h
  663. JSR Music_Show$ |, j  [0 W2 ~4 S8 Z# r  ]; Y. t' b
  664. JSR Time_Show
    # ^% U2 ?4 _, n2 t
  665. JSR Music_State_Show
    0 P# S# N; _, @% t# P; ]
  666. JSR Time_Delay
    , \# h9 B! K* N* |4 Q- w
  667. - d; @- r7 b1 s; w) C. Q
  668. LDA #$01
    . v3 V' m7 y& L; `% O' y; c
  669. STA <Music_Stop_State5 X" d8 w# m3 d) J9 K# u9 g9 M4 x
  670. 6 e; }  ?. X. R. l
  671. LDA #$880 Z- u5 V% |1 c0 a* ~! \
  672. STA Screen_Ctrl5 |  v+ D! A) ^3 ^! }; H5 ^" y
  673. STA PPU_CTRL
    % z' Y! W/ g+ F
  674. # r/ b) X0 x2 {$ O+ U8 T( R) r
  675. JSR Show_Page_Text% K8 g, T$ t/ n; L

  676. ' e: E0 p, \2 B; I; M4 R9 Y  r# @
  677. LDA #$10$ D5 t+ n( }. {) s2 u
  678. STA <Time_Wait_Cnt
    ' J" I4 R- }: ?# t& B: |! F7 W

  679. 5 ~8 @/ ]; O/ @9 R: u
  680. Wait_Time_Over9 S# k; m- c9 N- T8 `
  681. LDA <Time_Wait_Cnt% C; D0 B) H7 [; q
  682. BNE Wait_Time_Over3 i4 r) I" I! d" _1 O' P" ~. p

  683. 8 Z6 M1 f) B- M# A5 @/ n+ V" s
  684. JSR Show_Arrow3 d* j6 R$ m8 E
  685. LDA #OAM_TEMP_ADDR / $0100
    7 h* [; T7 w9 ], T0 c7 p3 t
  686. STA OAM_DMA9 j- c& o* F/ D8 y, Z
  687. 8 ^! ~. D6 Z6 Y3 n
  688. LDA #$1E. C( p6 @( n* K7 o, w
  689. STA Screen_State* ?2 S7 I" ], z0 z4 {
  690. 2 J7 I' B7 {( h7 v& f) G
  691. LDX <Music_Item_Cur8 Q0 ]# w3 F, C* A; h# i
  692. LDA <Music_Cur,X5 K7 O  V; K( L' l3 k& \
  693. JSR Sound_Init_Proc
    : H! v2 ^$ l1 P2 r/ F/ V

  694. 1 a2 F; l5 I( S5 X2 d- k9 Q
  695. CLI
    8 e" J1 s0 m0 f5 O5 O4 P1 G
  696. JMP MainLoop
    . m7 k! r4 C) r) X: f

  697. ( f! l- I6 @6 t4 Z. A* \% D- |
  698. ;==============================( i/ C9 s9 O) ^4 K- Z$ {
  699. Time_Delay;延时等待% z3 d9 F5 J: W5 E
  700. LDA PPU_STATUS
    3 M; S2 b  e% g# S. n" R
  701. BPL Time_Delay
    . `( L- I8 a( w. _4 y4 n
  702. RTS! l. r3 w; ^2 H; Y# j
  703. 5 w7 d1 a9 w' v# X, P
  704. ;==============================) y, ]7 i$ ]/ W0 m( x
  705. OAM_Ram_Init;初始化精灵内存& m) S1 K6 ?& Y9 `9 k( ]/ [/ @# m
  706. LDX #$00. ]- J5 U' |- O. C& h0 u+ x
  707. OAM_Ram_Init_Write
    & G4 n. C  c4 m8 d& j1 @7 w$ [+ b
  708. LDA #$F84 g* Z3 ]) u4 c2 S- |6 O' Q; f5 k
  709. STA OAM_TEMP_ADDR,X- h; @& b6 j% ?; X$ j
  710. INX
    : K' k) W) r- E- m* k9 O
  711. LDA #$F8
    ' D3 t* z4 h3 t: Y3 s
  712. STA OAM_TEMP_ADDR,X
    7 U+ ]( \& R1 C% ~% z* F, J
  713. INX
    ! c% T7 I3 Z* y& d
  714. LDA #$00) T! ?; u2 N8 ]) C% w; R  D5 `
  715. STA OAM_TEMP_ADDR,X
    % H3 K' k- @+ O  v/ o% S0 I" p) l
  716. INX6 }" n! Q/ G# [- B$ `& G
  717. LDA #$F8
    + N3 G+ e, k, P7 g
  718. STA OAM_TEMP_ADDR,X5 t- E6 N* o% g/ R9 d5 N
  719. INX9 |* O0 v" p) u  _; ?" o
  720. BNE OAM_Ram_Init_Write
      g4 w$ m8 V1 n' K# m
  721. RTS& F1 C+ W# {$ ^: }
  722. % a5 y3 a  H% Q$ y9 H: k3 E
  723. ;==============================. W( O9 R& ?+ Y9 c2 h. S
  724. VramClear;初始化图形内存! ]0 J1 J  @  \, q4 p# k
  725. LDA #$20
    7 f5 e# N# x) c4 ^! T, }- H3 D
  726. STA PPU_ADDRESS( r$ \9 F* y8 y# X& \
  727. LDA #$000 M! O7 _& h! z- ~, J( _
  728. STA PPU_ADDRESS0 a+ o4 [, Q# p& g% \, k
  729. LDA #$00/ K# u5 I. b6 |3 s7 s
  730. LDY #$00
    " y( S2 k7 v1 E/ i& M$ Z3 \' U
  731. LDX #$10% m5 i, \: Y  C$ X0 n$ l- z
  732. VramClearWrite* N* \6 Q8 i9 L. U/ Q# D3 l3 f7 N" R
  733. STA PPU_DATA
    1 H3 B" t# y$ V- W; T( P4 j$ j+ J5 c
  734. INY
    * ]5 h5 X1 c, j( y1 m
  735. BNE VramClearWrite8 X. U- u, T2 d% e) I6 [5 R; S; D) U
  736. DEX
    3 B1 b* [3 ~* ]2 F
  737. BNE VramClearWrite/ N+ h: g% d1 l5 Q5 j- S& Y
  738. RTS6 m) n2 B( s0 _8 }% X

  739. " O/ @5 O& ?( m/ E) d
  740. ;==================================================( F8 i: q9 V1 |- x8 A' O8 A+ O  z
  741. ;设置MMC3图像bank
      m. J1 F+ J: j* H" ?9 H9 U4 ]  E1 V
  742. Init_MMC3_Chr_Bank
    . q! b' f/ {! e4 r( C" J8 h
  743. LDX #$05
    & S: ~; T/ M4 _5 Y
  744. Init_MMC3_Chr_Bank_Write
    + E4 G  S; }2 [4 U
  745. STX MMC3_BANK_CTRL/ \( C" a- ~0 T% h2 N' q' |
  746. LDA MMC3_Chr_Bank_Data,X& P% P; M2 x' F2 O2 F
  747. STA MMC3_BANK_DATA, ]; r+ y6 T9 g8 ?
  748. DEX
    , u6 C, W% |  v: |! |1 J
  749. BPL Init_MMC3_Chr_Bank_Write
    - q. _8 c! ?8 ]& T6 u9 W8 |
  750. RTS; p1 J3 G5 f1 x5 X
  751. ;--------------------------------------------------
    & H; ?1 u* f( }: V- j4 n
  752. MMC3_Chr_Bank_Data
    3 L- }( U" n# w3 f, c
  753. .DB $00,$02,$04,$05,$06,$07
    6 \/ R7 u- j. X; |5 \
  754. 6 e, a# Y; q! W. ~) r- o
  755. ;==============================
    ' r/ z" c/ s& z! g3 M3 I
  756. VramInit;初始化图形内存, L4 K0 A( f9 B4 i; Q; w; {
  757. .IF CHR_RAM_ENABLE
    8 t$ K' ~; t4 H) I# A
  758. LDA #CHR_DATA_BANK5 a: E5 ]8 {! }$ f
  759. JSR Switch_Bank_A000
    - T# |8 c% x# D, f- ]% j
  760. LDA #LOW(CHR_DATA_ADDR)
    - i1 \9 H2 k$ X; t. z$ i1 `
  761. STA <Data_L
    2 t7 W/ j( A! y# x+ e0 V+ o
  762. LDA #HIGH(CHR_DATA_ADDR), s) g1 h. B6 @2 O0 g
  763. STA <Data_H8 V) I- w# p' q( T
  764. LDY #$00
      T9 C' e& X, Y
  765. LDX #$20' w! U1 g/ B3 T
  766. LDA #$00( i% S+ E7 z! N
  767. STA PPU_ADDRESS
    # U+ P. x  W+ Z- O! C8 S$ J
  768. STA PPU_ADDRESS# k" l, N, \' u* y0 @+ j
  769. VramInitWrite
    . D: W0 H! U; g& b) E) Z
  770. LDA [Data_L],Y! Q2 z1 I+ }0 h  W% K
  771. STA PPU_DATA, `. V, f% k2 y, w1 @1 _
  772. INY- P$ z5 b1 e4 I- X. h8 v
  773. BNE VramInitWrite1 f; m/ b% \7 K/ M# p$ t: f! X% _
  774. INC <Data_H
    ' v2 \9 C1 ?6 _7 @" n- i
  775. DEX$ J' g3 C* p8 c& X& [: g
  776. BNE VramInitWrite1 j. ?. _4 k$ Q8 X. K' a4 [
  777. .ENDIF
    : C: I8 ?; ~  r; \# ?5 X) R
  778. RTS
    8 l# M8 Y+ H* F3 |, c
  779. * N& v2 I: O+ v6 R2 L
  780. ;==============================
      b* E2 J2 {* V+ b, v' S: N. t! a
  781. ;音乐切换. P, W, E  r* J: u) i
  782. Music_Play_Change- Q# @: k6 w0 ?
  783. LDA <Key_Once
    # A6 j- S- @9 E
  784. AND #$FF
    / ^# k" ~% r' A$ t$ B
  785. BEQ Music_Play_Change_Check
      [/ Z1 K# p' A+ f  g' c+ Z

  786. 4 L& y% d- l( H" h4 D3 H
  787. ;禁用音乐条刷新
    2 a, Q& l& G# C7 Q, B4 G
  788. LDA <Text_Disable_Flag
      ^9 f* r% E3 c* k9 U
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
      l) g' U# L7 `: v4 c3 U
  790. STA <Text_Disable_Flag' V' T! _' S+ [  ]6 @/ Y1 `* o
  791. 3 g  ~) v: @! K' w
  792. Music_Play_Change_Check4 x6 r- i. t5 u8 i4 s
  793. Music_arrow/ A  Y: |( F2 F1 ]- P
  794. LDA <Key_Once
    / _6 {5 p5 I/ x1 u
  795. AND #$0F1 h8 N3 X8 G9 y
  796. BEQ Music_Play_Change_End  y3 e5 T2 _9 x1 t
  797. JSR Music_Track_Change
    & W7 M4 w$ R! Q) f/ g
  798. JSR Sound_Reset_Proc
    - I# y1 Z- s1 Q' T5 l+ B- m/ U
  799. JSR Music_Show
    9 d! y4 J9 s8 p, v3 c
  800. Music_Play_Change_End& l. o0 C3 q5 L0 }) g6 E( A# j+ W* o
  801. RTS3 K' {( v  Q' P# U

  802. & Y9 t5 [% F8 w# c5 J2 I( W4 A2 \
  803. ;==============================% q& t# \) g0 T
  804. ;音乐曲目切换* \% ^' C8 {8 x1 q1 c" L+ _
  805. Music_Track_Change
    6 C  Y: Y( o( y  k8 X' J
  806. LDX <Music_Item_Cur
    & s, l% ?: O2 Z0 z) P3 G- u9 J' g
  807. LDA <Music_Cur,X
    : Y9 U: {1 s- q* r
  808. STA <Music_Last5 ?( ^- J/ X+ [- o- R: s& {) ~# r
  809. Music_Decrease1 X9 u* `. i) P, S) F- ?# N
  810. LDA <Key_Once
    + r/ v& B# Y( |% ?) ]) c- h
  811. AND #$42# T4 N% T9 I; x0 t  x% B' M
  812. BEQ Music_Increase9 ^% L1 E: M) L' D5 L9 A9 e
  813. LDA <Music_Cur,X
    3 ~, C+ {8 J* }/ J
  814. BEQ Music_Increase
    ; ~3 s4 \; a" g
  815. DEC <Music_Cur,X
    " s& Y/ d: r8 ]% _8 W
  816. Music_Increase
    ( h; M. h% N/ m- d
  817. LDA <Key_Once
    / r4 \0 t, q! ^: R' d
  818. AND #$81
    2 i2 q0 t7 G& k2 Q% N5 _1 i& e
  819. BEQ Music_Decrease_101 Y  a8 Z- j: d! n. D
  820. JSR Set_Sound_Total' Q" [3 z- p  v2 k, x8 n7 [2 R
  821. LDA <Music_Cur,X
    % q: p9 {' |( h- t0 _# G4 n( Y
  822. CMP Music_Total
    $ j/ u1 |! w5 }0 f
  823. BCS * + 4! ^+ ?, l/ `2 K& T) h, p3 c$ q" `4 W' b
  824. INC <Music_Cur,X
    / {- m$ e2 z3 Z
  825. Music_Decrease_10) W) f3 s( }5 d9 `9 x$ g# o
  826. LDA <Key_Once; b7 _  h8 N8 [; D7 L, A
  827. CMP #$04- d( B5 r2 a" l6 T* H) h6 T
  828. BNE Music_Increase_10; i" O) b3 U6 M+ U* ?0 s
  829. LDA <Music_Cur,X
    / ~# X' E2 n4 k6 ~8 r% h
  830. CMP #10
    + Q/ x+ R5 _3 o6 Q
  831. BCC Music_Start_Song_Min! r" J- G; x* L8 D6 ?
  832. LDA <Music_Cur,X5 u' M" _& m) E6 u
  833. SEC
    + E# J0 ~& j; q0 W- t
  834. SBC #10
    4 ~- f" T5 W9 o+ A6 R, }/ G& e& H
  835. STA <Music_Cur,X
    # k; D8 a$ }! R& \& H, v% [
  836. LDA #$00
    + U9 T3 ^( n3 Q; |
  837. BEQ Music_Increase_109 t7 x' Y) B! e* S" L
  838. Music_Start_Song_Min
    ) {" N- p, C' Q, X9 Q
  839. LDA #$00
    & t/ F+ y3 n$ }, S6 _
  840. STA <Music_Cur,X. F% f( q) g, @+ X0 y9 N2 I
  841. Music_Increase_10
    & R0 Z% D7 Y+ C. V: r
  842. LDA <Key_Once
    " ]+ l+ s2 n# H+ d3 B" x" O
  843. CMP #$08
    2 C/ a" ^/ c: m& ^
  844. BNE Music_Track_Change_End9 @! N: p) {; \5 l* c
  845. LDA <Music_Cur,X4 \* B/ M. t$ g5 ~
  846. CLC
    . V' x% t/ e7 P2 I; [2 W
  847. ADC #10
    & l3 ^) }+ C5 [6 w  Z7 n
  848. CMP Music_Total' Y4 z6 Z2 y% u, Q; ~9 P5 j
  849. BCS Music_Start_Song_Max
    / j  Y  N; F! q6 q. {
  850. STA <Music_Cur,X* M! c8 [. |+ Z6 f3 X+ D
  851. LDA #00
    / Y( B9 S; t; l" |5 s2 S) N
  852. BEQ Music_Track_Change_End! o& H8 n% W! l, ]! ~& \. ?; l* `
  853. Music_Start_Song_Max
    $ m6 x8 N, B: l2 P% i
  854. LDA Music_Total
    6 e( O1 B$ _: z
  855. STA <Music_Cur,X
    * Y- b" L# U# m5 t8 I
  856. Music_Track_Change_End& |% m1 @5 @* c; n( L
  857. RTS
    0 _" ^" O* S6 W( L) I

  858. # d, X  R! X4 l5 i; W$ a0 [
  859. ;==============================
    & \+ g4 {9 o2 p" i! Q
  860. ;按键处理
    2 O' p4 F1 B3 t1 G5 l% d4 b
  861. Key_Proc; z( r3 S3 T: Q& r% ~; t) n
  862. JSR Key_Scan
    : [+ @5 B) U3 ?+ \) z3 x* S
  863. LDA <Key_Keep
    % _7 O8 l  P' D4 s: ^( U. E
  864. STA <Key_Temp
    ( ?2 j  o* z) B# e
  865. JSR Key_Scan/ Q# c+ N$ ?3 ^
  866. LDA <Key_Keep% g! D1 C3 Q# d$ t, G
  867. CMP <Key_Temp
    & ^% z$ m+ Y1 A( J
  868. BEQ Key_Get_Once* L: I  O9 V, O% i5 R
  869. LDA <Key_Kemp8 k: x' J" o# m2 ^. c9 z. z
  870. STA <Key_Keep: h9 [# ~8 X. v7 }
  871. Key_Get_Once. X3 o+ @5 q. h& F6 f+ D. e
  872. TAY
    6 e$ m9 H0 u5 v6 L& x9 }
  873. EOR Key_Kemp6 @+ o7 _9 o3 v; _6 ~
  874. AND <Key_Keep+ N1 i" F; c& I) K
  875. STA <Key_Once& j1 }: R8 |) X9 v2 f0 T1 X
  876. STY <Key_Kemp
    8 z6 p! M! S1 U& Q
  877. RTS) b. \8 k( D' D5 B7 u7 w
  878. ;------------------------------
    4 F# R/ V  }5 f1 x
  879. ;按键扫描1 Q4 `6 ?: Y+ f& y- o0 `
  880. Key_Scan
      P9 n) L7 u% m6 U) r( P9 @' [
  881. LDX #$01
    8 s- N7 @) t7 ~0 W1 m! Z
  882. STX JOY1_FRAME7 P" \/ [/ O+ t8 V3 T
  883. DEX! _& ~; \: j% ]* |
  884. STX JOY1_FRAME$ T0 a! E0 I9 p2 f4 ]- c' b0 ~
  885. LDX #$089 S7 R+ n' e9 R
  886. Key_Value4 E' `9 Q6 _: A) b
  887. LDA JOY1_FRAME" K- E' L' J8 g! D
  888. STA <Key_Getv
    / g$ d; Z! ]" y7 G: X0 h
  889. LSR A8 s% t% q- i5 _& \) Y
  890. ORA <Key_Getv
    3 {) T% L4 D# j% P4 b6 l
  891. LSR A
    % W: \1 |) W" U* i
  892. ROL <Key_Keep
    ' T' l( X) z( Z( t/ i, ^( O. ^, s
  893. DEX) h3 @! u; c3 p; ?5 X/ P5 z  L6 W
  894. BNE Key_Value
    ; {! q7 V! `  K( m0 N) S& W) ]' |. E$ ?
  895. RTS
    " K/ d1 Z/ z$ X* j" _1 @
  896. ) G% V8 p# V% L; Y* A
  897. ;==============================" c* Z6 ~' t0 N" w2 n/ L5 Q& k
  898. .IF SOUND_BAR_SHOW_ENABLE
    + K1 y1 c( J7 B$ Q5 F
  899. ;音乐条显示0 E, [2 X0 `) v( N
  900. Music_Vision3 h% p3 e; |* w6 k8 I# H
  901. LDA <Text_Disable_Flag. K6 b: P# y0 m% f3 Z3 `
  902. AND #TEXT_DISABLE_ITEM
    0 G. i) R0 i6 j& ^1 j8 q0 u
  903. BNE Music_Vision_End
    0 _4 {/ D& Q1 N9 t
  904. AND #TEXT_DISABLE_BAR+ @' @6 q; q! L' G3 Y( p
  905. BNE Music_Vision_Set
    - Z4 {; @6 d8 ^3 L* L4 O: v
  906. LDX PPU_Cur
    # i/ K0 T3 G. D" I# O
  907. JSR Music_Animation( {: r/ }$ W/ A0 }0 r- y
  908. STX PPU_Cur
    $ A9 a. a% P  n. B! V% D
  909. Music_Vision_Set
    ( b) P5 m8 j% t+ u9 S; q' u$ S6 V
  910. LDA <Text_Disable_Flag
    , ^1 z8 q6 k* p6 F0 g! p. E5 P% k
  911. AND #TEXT_DISABLE_BAR ^ $FF
    # `- W0 `" A) G2 |, X( a
  912. STA <Text_Disable_Flag" f3 O; e6 L+ I% X
  913. Music_Vision_End# t2 D) T, r, Q+ U3 M
  914. RTS5 ?9 U1 |' N" V! }1 l5 Y' }, M$ e
  915. ;------------------------------- r" ?! v5 ^& [; J; _
  916. ;音乐条显示处理
    1 y' U3 z3 Q6 ^% ~; T
  917. Music_Animation
    ! n6 n2 l, ?, Q0 L
  918. LDA #PPU_MODE_CNT_LINE
    $ N9 o$ b  m, i6 h
  919. STA PPU_Addr,X
    : z  t' N' U  u( j. B3 C$ d
  920. INX
    2 h1 s( _& m" S! f, G3 v  `, U
  921. LDA #HIGH(Sound_Bar_Pos)+ _) M) z: L% y) \* j6 H
  922. STA PPU_Addr,X
    ' Q% C/ ~) f( b5 d: r
  923. INX
    ! ]8 y: k" s  U2 B6 K2 m
  924. LDA #LOW(Sound_Bar_Pos)
    0 D& \7 U9 W  ~/ g8 e
  925. STA PPU_Addr,X% M7 {' J9 S. e) h1 R$ k6 e
  926. INX
    8 u3 S# L' v' F6 g( |
  927. LDA #$089 F3 X- ^9 ]6 D% H, D
  928. STA PPU_Addr,X
    : Z1 w" c: A4 ]& ]1 O* R9 |
  929. INX% P7 }! j( @" S/ s/ R- a& O
  930. LDA Sound_Bar6 c6 @; k& `+ x! u5 X2 J% w
  931. JSR Volume_Convert: l5 U' p2 B, P

  932. $ l' }; a" ]1 q# l- |/ \
  933. JSR Volume_Set_Cnt& {) W0 r3 [9 c+ Z" Q7 l
  934. LDA Sound_Bar+$4. G: W' M+ B, d! p: C* b
  935. JSR Volume_Convert
    ) R* [" M/ U) o  o8 _
  936. & i8 R, K2 r3 o2 U9 @, g. O  w$ F+ e
  937. JSR Volume_Set_Cnt& ]" L: j9 H3 j4 S0 z9 D
  938. LDA Sound_Bar+$8
    - [5 R3 m+ j" D
  939. JSR Volume_Convert; i5 a' d$ p% Y+ R

  940. ) i4 K6 g; ^3 E2 f% J. Q- E/ ~4 H
  941. JSR Volume_Set_Cnt; h" l1 |# ?2 `6 l6 m
  942. LDA Sound_Bar+$C! W9 T4 F9 L' O
  943. JSR Volume_Convert
    5 f% y( M  h; \( c

  944. * M- L/ a8 m* E9 b
  945. JSR Volume_Set_Cnt% l% v' x) K/ j* I) u1 }
  946. 1 ?7 M, Y" C6 K) l
  947. LDY #$10
    ; ~: X% k' j. e* ~2 L
  948. LDA APU_STATUS' q7 a7 V1 A. \4 P
  949. AND #$10* [2 E0 {* }0 z, V
  950. BNE Volume_Count4 L7 ]5 U! v. S) ?6 }
  951. LDY #$00
    ' A- r# [  G0 Y  }+ q
  952. BEQ Volume_Count' `4 W: s# e* I: r: {

  953. 7 i9 Z9 T: y3 B- I
  954. ;------------------------------9 Y! U6 B, ^3 R! f" F( {7 M5 z
  955. ;音乐条处理! a3 i/ c# H! @' z- C. _0 J
  956. Volume_Convert* I- _) ~1 }& `! @9 \  y' g
  957. AND #$0F: b  l* C  b4 d! ?, F
  958. TAY6 a9 q$ G1 b+ ]9 N3 N# z
  959. Volume_Count
    + j+ q& m: L  x  Y1 P& P! |: e
  960. LDA #$080 ^7 c3 t) Z, U+ E
  961. STA Sound_Bar_Cnt. \! B& m5 Y( q3 G) o6 q
  962. Volume_FILL
    ! z8 o, M. [( `; D0 z: ?: t9 V  k, b
  963. DEY: i& g* Y$ S. ?6 q: u
  964. BEQ Volume_Half) L7 R* W- [8 u' W* ^
  965. BMI Volume_Empty
    ( w- x. B$ z; P  U' w5 I* q
  966. DEY
    6 k9 a  w" Q0 H8 i
  967. Volume_Full
    * s* b4 d& d, c7 M$ Z$ D  Y$ ^
  968. LDA #$16- c1 T  E/ w: U/ {
  969. BNE Volume_PPU8 K9 p8 G8 w( l
  970. Volume_Half  ]: _3 V3 z! [& f7 K# Z
  971. LDA #$15
    ) |& s3 M8 {7 G; A* q
  972. BNE Volume_PPU
    ) {0 f( t) Q( e- |' f% e* F
  973. Volume_Empty
    ; q, l0 C4 C: t0 S  a+ n/ [
  974. LDA #$14. @5 x' F- B* G5 v
  975. Volume_PPU# `& a( U; G, ?( `' o
  976. STA PPU_Addr,X& B. w' h+ j5 T  n% I
  977. INX6 o/ z9 V' ^1 A( `+ E: Q* V" T
  978. DEC Sound_Bar_Cnt
    & v' Q2 b' Z3 n. [% r
  979. BNE Volume_FILL
    1 J* s9 q" v$ z1 i4 p
  980. RTS$ l# E  \4 r9 e' u
  981. 7 a& R# u8 z; ?
  982. Volume_Set_Cnt1 L6 ]$ h, q8 S: h# ?
  983. LDA #PPU_MODE_CNT_LINE_NEXT
      j2 V/ |. o5 E; X/ V+ x' c- o
  984. STA PPU_Addr,X
    7 t; P% k& x# Z2 ~+ d
  985. INX
    & H* w4 ?1 f6 M( |" ~7 A
  986. LDA #$081 j8 x& u0 A3 I
  987. STA PPU_Addr,X2 s# |! Q! }) O. ?: H: x6 _; F
  988. INX
    # d7 K* l; f8 Z. S
  989. RTS/ d1 d1 J4 T$ f- T, a3 p+ C
  990. & ^3 @# G; v1 h6 y5 y
  991. .ENDIF4 G& g# J- J' H) U0 V# ?

  992. 2 V5 m9 x& n% f% {) y
  993. ;==============================
    0 e9 Y- E, P0 ]+ x5 [! \1 V: X
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    ; [0 c4 O8 r; {4 B2 e4 b
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    # B- [: `1 K+ s  c5 `
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除+ T7 h! ?5 _* C8 e# q
  997. ;------------------------------
    / l& |- o& e: L- T( u
  998. ;PPU处理
    $ U/ v2 A1 O2 o& S
  999. PPU_Proc6 n# u) m3 P! `
  1000. LDX PPU_Cur
    & D) n* k7 r: u. h7 @9 ]7 {& v
  1001. LDA #$00
    - S1 o5 W% x' ~- H
  1002. STA PPU_Cur8 s$ J. @5 z# O9 ~8 N0 y
  1003. STA PPU_Addr,X
      }) ^% h1 z6 u' T
  1004. LDA PPU_Addr- ~6 l  j& ^9 `+ w$ }( W  o- d4 H
  1005. BNE PPU_Proc_Beg
    1 C. V' f& ~& u0 K3 J* Z5 D
  1006. PPU_Proc_Ret$ a  h* m  ^3 \6 g8 [+ ?% g* j5 p
  1007. RTS  R2 s& D7 C, r- m, ]
  1008. 6 M2 m' ?/ |7 u3 Y& M
  1009. ;------------------------------
    7 h. A: G, n8 G0 t& y6 i: Q
  1010. PPU_Mode_Return_Cnt  ;转下行模式  P: H6 G$ c5 e; E  y6 }
  1011. INX
    ! x4 O" G) e+ V. q
  1012. LDA PPU_Addr_L
    ; |# y0 b) Q3 n1 h0 F
  1013. CLC0 T' Y/ j+ z& t: @" @5 p' T
  1014. ADC #$20) u! d' r) n( U' F
  1015. STA PPU_Addr_L
    - [; l5 s# l; g8 Y
  1016. BCC PPU_Mode_Return_Cnt_End
    - n* g+ y1 y! @- B# A3 S1 H! q
  1017. INC PPU_Addr_H8 l' N1 b/ M" F) D, ~# k# C' D
  1018. PPU_Mode_Return_Cnt_End4 m3 ^  `  @( z. O
  1019. LDA PPU_Addr_H: d; N2 @) k6 [3 A$ a- T" f0 F! w$ ?
  1020. STA PPU_ADDRESS
    / h/ f# v' b3 U
  1021. LDA PPU_Addr_L
    + _" x# p( s. R+ b2 G
  1022. STA PPU_ADDRESS
    0 [9 k# U' W$ Y% M. S  L, R/ v' n
  1023. LDA PPU_Addr,X
    $ I8 m, s1 N+ P) W: X3 A# t
  1024. TAY
    , ~; X% n/ @; |; J  q% l1 A; k
  1025. PPU_Mode_Return_Cnt_Write
    + H7 J5 E* H' {  M  [
  1026. INX
    6 i# W- t: }7 x, u+ j
  1027. LDA PPU_Addr,X
    0 e2 W1 i! ^* E2 x3 |; g- y& y
  1028. STA PPU_DATA' K- q8 r/ Q- l
  1029. DEY+ P8 C% _% g" R
  1030. BNE PPU_Mode_Return_Cnt_Write
    4 g7 l" l+ j* c
  1031. JMP PPU_Proc_End' ]/ I  y# v* @. V
  1032. + c- {" l4 t$ h2 s) O& ?& p! U
  1033. ;------------------------------; G0 Z) D5 V# f1 Q$ j% o
  1034. PPU_Proc_Beg  ;处理开始
      b! h' y% [: ?
  1035. LDX #$00
    - P7 I* ~! M9 @7 D2 A$ P
  1036. STX PPU_MASK
    9 b' B4 P: ?: j% W0 D' |3 f8 w
  1037. ;------------------------------
    5 _) `  _) Y* x) s) C% i
  1038. PPU_Mode_Select  ;模式选择
    ! b8 ~/ ]8 j' N2 v5 p1 k0 H
  1039. LDA PPU_Addr,X$ e7 h  y2 ~* N/ G/ v3 B! S
  1040. CMP #PPU_MODE_CNT_CLEAR
    5 q$ t' P( y$ A/ v/ L( {
  1041. BEQ PPU_Proc_Clear, D" n" x/ i2 r/ F. t- E$ l
  1042. CMP #PPU_MODE_CNT_LINE
    : X' [$ a6 M" x; `, k4 Z
  1043. BEQ PPU_Proc_Cnt_Line% V  E7 K, _- p  e2 E
  1044. CMP #PPU_MODE_CNT_LINE_NEXT0 }0 {6 l( [) E3 k1 p, x6 x
  1045. BEQ PPU_Mode_Return_Cnt7 Q2 W! ]# I" f2 c1 C  q$ Q4 H
  1046. JMP PPU_Proc_End_Write+ p7 f: M" D, u  k
  1047. ;------------------------------
    : D4 [# t- p7 q$ ?
  1048. PPU_Proc_End  ;单行写入结束; G- r( f4 A# r9 I  m. m; a
  1049. INX
    # i4 J& o# L; Y& j* R. n. q
  1050. LDA PPU_Addr,X
    2 N4 H+ `9 v" g, @& z
  1051. BNE PPU_Mode_Select5 U0 ?1 D; a7 z
  1052. STA PPU_Addr
    / Q; g9 O9 Z8 k$ m2 X, u
  1053. JSR Update_Palette_Color
    # K3 |1 z! D0 @) e* o, \4 ?

  1054. ! K( o# D$ H3 f& ?3 b6 }( n% @9 |; f
  1055. PPU_Proc_End_Write4 O# t) U2 ]/ Z* W0 W
  1056. LDA #$00
    $ ^! n1 z, g4 ~1 x9 D* B2 j0 v
  1057. STA PPU_ADDRESS
    : H3 j  t4 ^5 k; d7 \# W
  1058. STA PPU_ADDRESS8 O+ `) I7 w0 |6 ]- Q9 e4 p
  1059. LDA <Text_Disable_Flag
    6 v: ]; K7 e4 U* K, p" T- u
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF! ~& j9 D, u- ^- A0 ~' }
  1061. STA <Text_Disable_Flag
    % ^# L0 D0 ]9 O$ K" t( @& @3 u0 k
  1062. LDA #Scroll_X
    5 }: a6 E8 p% e
  1063. STA PPU_SCROLL! {% V" X  j2 w. k$ k
  1064. LDA #Scroll_Y
    ' U% r  J: h/ X; [' e
  1065. STA PPU_SCROLL1 @% K9 U$ [) Y) H$ H# E
  1066. LDA Screen_State
    ( t: ^% N2 w/ I
  1067. STA PPU_MASK; x& Y, R- ?$ ^7 G: x3 z
  1068. RTS. S6 c) Q0 S6 q( j& r) d9 B+ ~9 Z
  1069. ( z% T* O% P, g4 A8 I1 Q6 ]
  1070. PPU_Proc_Clear' D& M9 @4 f+ e! D+ y- {; v
  1071. INX
    1 X* W6 D. _5 l2 ^* a4 |2 r5 V! z7 P
  1072. LDA PPU_Addr,X
    9 X6 g# d& P: m) P( `' J
  1073. STA PPU_ADDRESS
    7 l2 S, R0 p, R- A3 ^9 ~
  1074. INX
    * m' z3 f; n& q
  1075. LDA PPU_Addr,X
    + w  B( {; I7 x) A
  1076. STA PPU_ADDRESS
    ( @; x1 i9 k. x6 T0 e( E) i+ o
  1077. INX; |% d& l) `& E, N) L4 _% q
  1078. LDY PPU_Addr,X& I9 O& K0 P1 ?1 |
  1079. LDA #$002 b. F# b6 q+ Q$ E; N' G
  1080. PPU_Proc_Clear_Write) v/ q0 M* T* V5 X- d+ a
  1081. STA PPU_DATA
    3 m4 E( q4 A- {. N5 @! w( F
  1082. DEY+ k5 u  d6 M) V0 h
  1083. BNE PPU_Proc_Clear_Write
    % X2 e0 v5 z  A( _% Y
  1084. JMP PPU_Proc_End
    8 R& L8 P% E  ?2 F8 ]) V5 ^
  1085. : x1 ~; U& Z. q7 I" d
  1086. PPU_Proc_Cnt_Line
    / x' D- |6 `6 }
  1087. INX3 b6 k- O) H9 d7 ?- @8 S
  1088. LDA PPU_Addr,X
    ( u% @3 E$ D0 Z; _2 t1 U3 i  {0 d
  1089. STA PPU_Addr_H" [& x( p* W- ]4 i; o
  1090. STA PPU_ADDRESS
    $ I% p0 }( H. N* ^, S7 _2 K4 l4 w
  1091. INX$ Y5 V* ]2 i; J0 J8 \- q" D: f& |
  1092. LDA PPU_Addr,X, r7 Y6 Q2 Q) H5 `- c" i
  1093. STA PPU_Addr_L9 R+ f, j1 r7 q2 D
  1094. STA PPU_ADDRESS
    4 L' t! f5 b6 N
  1095. INX; ?& K' U  h8 `' B2 @
  1096. LDY PPU_Addr,X8 Z: j' N, m9 q$ m. A( p
  1097. PPU_Proc_Cnt_Line_Write& ]6 t0 r7 G8 U$ Q
  1098. INX5 j) I4 T, x+ n2 L
  1099. LDA PPU_Addr,X
      p$ e8 [6 e  e8 _3 t
  1100. STA PPU_DATA& e/ z- ?) t# `3 t3 c* V3 F' v8 M( v
  1101. DEY/ \8 d- r1 K, A: m( p/ V
  1102. BNE PPU_Proc_Cnt_Line_Write4 o; o% s  c1 i; o0 c# R
  1103. JMP PPU_Proc_End0 j+ C1 U4 ^; U* w+ Q4 R( f7 G
  1104. . T* R8 @& [) ~4 ]
  1105. ;==============================
    ) N9 E4 k6 n0 H* s9 \3 O
  1106. HEX_To_Dec;十六进制转十进制
    : o8 X8 x, [5 K* v; O  D
  1107. STA <HEX_Data
    % ^8 o" x1 v# I4 U. _, t0 ]: {% V9 d
  1108. PHA
    . @3 Y& T, @) X' @: m' e' P
  1109. TXA# o: R; t4 R6 b1 N7 ^
  1110. PHA* N5 y- a' S) ^; X5 x" V3 f; d1 J
  1111. LDX #$00
      Y) ]5 P- u/ o" b# u1 G( I" g+ I
  1112. LDA #$00
    & P9 [' w; c0 y! f& ^: N
  1113. HEX_Cln
    4 N$ X4 q2 E& y3 @( I7 Q, [/ L
  1114. STA <DEC_H,X
    8 M. v, O+ H' F4 _
  1115. INX% g* I& ]& D% J
  1116. CPX #$03# {7 E6 m8 A. E+ |- Q; N; g
  1117. BCC HEX_Cln
    : F: _; [, A8 B& u0 c; z' u
  1118. LDA <HEX_Data' ]7 V: t3 r& a4 ~
  1119. ;------------------------------
    . Q  `# b5 `% T" y1 v- U, I& w
  1120. HEX_100
    9 P& |4 {, F! o4 R; l4 T" ?
  1121. CMP #100
    5 s* u- y' k0 V9 L
  1122. BCC HEX_10
    ( _- @! e. p+ j& s3 _
  1123. SEC
    " a7 H& ]1 g' s6 x' {% l& w1 @
  1124. SBC #100
    - d  e% v2 N& a; Z
  1125. INC <DEC_H
    ' t, r" ?6 t' O8 V& K
  1126. BNE HEX_100/ E4 o! h' \2 [
  1127. ;------------------------------
    ' ^" G% A7 e( f! M$ a0 |% n
  1128. HEX_10
    / J+ B. \: s6 ^' f+ d: P
  1129. CMP #10
    - Q- J5 L/ f6 E; R* F2 |  {
  1130. BCC HEX_1% u* t3 B7 m1 T" r, A8 v/ J* w
  1131. SEC
    9 i$ P" \/ `( A7 J  M( C8 @
  1132. SBC #10
    - M/ y1 t7 a" a8 X) |6 V+ B* p
  1133. INC <DEC_T- h# D% M7 u+ h2 _# `
  1134. BNE HEX_10+ N! f/ ]+ \( q1 A( c
  1135. ;------------------------------$ p, g! P7 O# G' |) U* S
  1136. HEX_1
    5 k3 l+ k; M  D* x( ^
  1137. STA <DEC_L
    ; s4 {/ H: e5 _0 x8 Y+ j
  1138. PLA
      C# v, \; l% _4 {5 o9 A: F: j4 {
  1139. TAX+ ?- S  p7 ]% l: ^) ^, q6 c3 \
  1140. PLA. R. E8 F- y5 {, b. y9 @5 Q& ?
  1141. RTS
    $ n) U5 M: m: F4 x$ [( m) H

  1142. + v' D  q9 b" w
  1143. ;==============================
    * {6 W) U  h; l% n  M; s: L; J( F
  1144. ;音乐曲目显示1 J1 s! d( ~/ t/ m0 S9 N& e: P) z
  1145. Music_Show
    $ f0 X8 S. ?) J: d) f
  1146. LDX <Music_Item_Cur
    : X# ?0 T$ C+ j2 m7 d0 D
  1147. LDA <Music_Cur,X" J, K# N( |4 m4 T7 d& O
  1148. CLC& U: J( n6 Y. m' N, H  t9 Y
  1149. ADC #$01
    - f, {2 F+ R. V% P$ `, M
  1150. JSR HEX_To_Dec3 u+ R$ C/ P5 g' Z  P& T2 F+ C
  1151. LDX PPU_Cur
    , R4 M2 D( P# N( ?3 y% u
  1152. LDA #PPU_MODE_CNT_LINE2 O' E  i$ |1 M
  1153. STA PPU_Addr,X
    ( t0 p' Z4 O! g' C: x4 Y
  1154. INX
    3 J' L& m/ ^  z5 E
  1155. LDA #HIGH(Play_Index_Pos)( }+ Y+ ]" O0 k4 c
  1156. STA PPU_Addr,X& S- A+ d* E- \1 c: Z  d- _
  1157. INX
    0 t; z0 P* ^3 t+ N* C) E% r
  1158. LDA #LOW(Play_Index_Pos)9 y  k. V4 _& {$ V( w( \! r  k
  1159. STA PPU_Addr,X: e$ B9 ^) M7 u9 b9 I' C( t
  1160. INX6 V* r8 `; v) P9 N

  1161. * A, {2 v5 h: x$ h- y5 H" Z  a
  1162. LDA #$07% t; }5 ]- F: E7 C
  1163. BNE Music_Show_Length
    : [& P2 V0 d/ f9 U
  1164. / \7 T% x2 ~9 V( `* q
  1165. Music_Show_Length8 S! g* T  L1 M! o: s: U
  1166. STA PPU_Addr,X$ n& n6 v# I# P3 h+ X
  1167. INX
    0 ?3 N0 ~4 |8 ?

  1168. $ ]6 v: a7 ?3 b) M8 e
  1169. LDA <DEC_H
    $ }% y0 g* m1 Q4 n$ O+ P2 \
  1170. ORA #'0'7 l2 X1 W" @' H5 ]
  1171. STA PPU_Addr,X
    $ P6 N2 B6 B' u* h
  1172. INX8 x2 t. X0 L4 Y/ t3 n; z! f
  1173. 8 b* z& v4 g( r0 f& R
  1174. LDA <DEC_T
    5 {, a3 K4 d& q5 c  Y
  1175. ORA #'0'* l" {! G; v* C( \% b" s% e# W8 `
  1176. STA PPU_Addr,X
    6 v* a  @; }& }
  1177. INX
    ) D5 }5 r" [# Q6 o2 }) W$ z! Z

  1178. ! I, p" r1 y  q; U) _6 Q9 z
  1179. LDA <DEC_L
    ! f7 P8 y- J; K9 o9 N% x$ g
  1180. ORA #'0'
    9 T, _; J, K8 L
  1181. STA PPU_Addr,X
    ; C( j; ?& k4 t# F$ Y2 ]' {8 A( r
  1182. INX% S6 w) e7 A0 \9 b

  1183. : F2 h6 s$ Q; |: X' X- [3 E
  1184. LDA #'/'
      K; ~! ~# z* |0 M
  1185. STA PPU_Addr,X
    # E% U( Y  [8 s
  1186. INX
    / M  V3 N- _$ J
  1187. Music_Show_Total
    ; d. p+ O( L! a  q, [$ P
  1188. LDA Music_Total. \6 q) Q) i8 H
  1189. CLC4 Z) y7 P/ E- h' x
  1190. ADC #$01
    2 h4 \/ F8 k. {+ S* j8 Q) {$ t. r
  1191. JSR HEX_To_Dec
    ) D8 k& n) i# k5 u$ s
  1192. 5 j& w: q/ r2 _9 T% D+ P% y
  1193. LDA <DEC_H4 e3 U7 A8 M  z% Q  V3 h7 x
  1194. ORA #'0'
    1 A* B7 H, ?# f
  1195. STA PPU_Addr,X
    ) u: L% u- |, p/ V/ F9 c% E  i
  1196. INX
    " f. v) m3 |9 Q- x

  1197. : U; B) T$ ?& O4 h. C% l
  1198. LDA <DEC_T& j# m& H% A  [0 ?
  1199. ORA #'0'9 }6 s& V( ], V
  1200. STA PPU_Addr,X
      z: j9 q  y- a8 f5 L5 a- }) W
  1201. INX
    ' u5 x- i' Q& a' Z5 X1 K) J

  1202. * O/ S: [3 [; C. {$ ~5 j
  1203. LDA <DEC_L! w+ y3 d- V/ T3 X) n4 R& Z
  1204. ORA #'0'
    : x# G, Q$ S. \  V4 }3 T7 R1 T& y
  1205. STA PPU_Addr,X+ \, u$ d+ X7 B; d7 J, I4 {
  1206. INX' J& d! X# _$ r/ O- J5 Q+ x) e- T* |) H

  1207. + ?! |. U7 k  m( i1 \
  1208. STX PPU_Cur; _, j( `( c/ m8 d: f. G! B
  1209. Music_Show_End
    # r2 X% {8 _9 o, m9 V, T5 t
  1210. RTS
    1 `% k& {1 R) [) _( i+ A

  1211. # L6 j6 P) t; K  g
  1212. ;==============================
    ( p' t5 V) Q. w. n& r
  1213. Time_Show;播放时间显示
    ( t- D( Q+ h% \5 I
  1214. LDA <Text_Disable_Flag. e& F: p- c3 c% U! d
  1215. AND #TEXT_DISABLE_ITEM
    , {' V# s8 e1 o& ?0 U
  1216. BNE Time_Show_End
    1 i5 c/ K) y" h5 {; O- u) H
  1217. AND #TEXT_DISABLE_TIME
    ; J1 {; }0 @) H  h2 S
  1218. BNE Time_Show_Enable& H- M" L: j8 w' Q: ]/ X
  1219. 5 Z: v5 w/ b3 ]9 V
  1220. LDX PPU_Cur
    % r- V& L, g* j& C, u
  1221. LDA #PPU_MODE_CNT_LINE
    8 e: m8 B) Z) M& F7 K
  1222. STA PPU_Addr,X
      A4 b- n; `; [
  1223. INX
    5 Q& i- V8 t) R- Y" i( E4 `
  1224. LDA #HIGH(Play_Time_Pos)! R- W8 r' w; k
  1225. STA PPU_Addr,X4 p4 D* {+ j! n# C+ F: s
  1226. INX& Y  L2 R9 ~; ^% x" q7 k
  1227. LDA #LOW(Play_Time_Pos)  t1 u9 i. E: a* V$ c) I# C
  1228. STA PPU_Addr,X% |) E- w# h0 G7 F- l
  1229. INX
    $ b& q8 d& t' @" n3 p7 ?% R; z
  1230. LDA #$08! W( ]6 T# q$ c% D# I
  1231. STA PPU_Addr,X, P2 X5 F* a; x2 H
  1232. INX6 P, E6 H4 P# x2 |
  1233. Time_Show_H
    2 X2 @3 G2 r! X6 f' V4 j' i$ a
  1234. LDA <Time_H
    ; H. x* y9 e# H8 Q# }
  1235. JSR HEX_To_Dec
    $ x! ~7 m* ~4 C' `: ?
  1236. JSR Time_Digit! K$ V, u: X8 S  G8 d% @, T" ^3 L& T
  1237. LDA #':'
    / R+ T4 _- \( Q1 a: j
  1238. STA PPU_Addr,X
    ) n4 z9 |' G6 E2 S1 ^" Y
  1239. INX6 _1 U8 Q5 a9 @) ?( I
  1240. Time_Show_M3 k- v( g$ u3 {- w% B8 q! Y
  1241. LDA <Time_M
      z9 J) ~- M1 j! N/ L* [
  1242. JSR HEX_To_Dec
    7 g- z% |& {1 i0 Y
  1243. JSR Time_Digit
    5 D: B) Q# a! \& `% @
  1244. LDA #':'1 [  z/ z7 v6 n5 K. y% F6 v% i
  1245. STA PPU_Addr,X
    5 r( ]7 u7 Y$ f' u; E
  1246. INX
    . e3 k- ]1 @' ]4 b; @8 N0 w+ i
  1247. Time_Show_S* q; ?' I/ Z# b, f# H6 w
  1248. LDA <Time_S: Z7 m$ C: Y& n  d
  1249. JSR HEX_To_Dec6 S% G4 w& c# j* J) e
  1250. JSR Time_Digit6 u2 T& }3 N9 L. P" w
  1251. STX PPU_Cur
      s3 `! Q% p# _) d: {, x: R5 p
  1252. Time_Show_Enable
    ) g2 X4 I1 @" W0 T' D
  1253. LDA <Text_Disable_Flag
    6 H' @. n1 b' y+ m
  1254. AND #TEXT_DISABLE_TIME ^ $FF+ f( u4 y1 r# b: o+ U& P2 [
  1255. STA <Text_Disable_Flag
    ; Q) h8 b$ }- F) `
  1256. Time_Show_End1 b5 [, T* X, k" F6 }
  1257. RTS7 }6 K, ?  h1 J8 T
  1258. 8 V" @- h" b# C: g+ f
  1259. Time_Digit/ A* p" g/ n, X( ^: g' i; {: B4 {, g+ t* ?
  1260. LDA <DEC_T9 Y0 n- [: A) v* {) b% E8 @
  1261. ORA #'0'8 E0 @0 a% J$ Z0 ]5 y
  1262. STA PPU_Addr,X7 Y6 N: ?/ ?2 @- q' N! M
  1263. INX
    3 [% g( z4 [% i* W: O) M( N5 W
  1264. LDA <DEC_L
      S* Z( C( p9 Q  u
  1265. ORA #'0'
    & ?4 C9 C4 j% u" s" w* t5 V
  1266. STA PPU_Addr,X
    6 A  c% D+ {7 T; Z1 E) H1 F
  1267. INX  I2 C. p+ D. b& F) T) y. D* Y/ P
  1268. RTS4 E* ~- j9 ?' a/ Z  U. S7 y: W  o5 p! Q

  1269. 4 C" W8 H2 s: }' J0 f
  1270. ;==============================' x  m5 C/ |& I  ~
  1271. Time_Count;计时, {% I2 G8 K/ Q9 R0 F
  1272. LDA <Music_Stop_State
    9 s% G( p$ }  u$ e3 @. w& T
  1273. ORA <Time_Wait_Cnt9 y* ]- R2 a2 T8 u4 K! i
  1274. BNE Time_Count_End8 D  }9 J! x# ?
  1275. INC <Time_Cnt
    ( D3 u3 O. a* K; G
  1276. LDA <Time_Cnt
    - @- q, n; [: k8 [
  1277. CMP #60
    ( A' \/ I+ Z% B; E: I
  1278. BCC Time_Count_End
    : ?9 i( Z3 E) L- a% r8 I
  1279. LDA #00* ?7 e/ M6 Y5 x, ?, ]# A2 j( ^
  1280. STA <Time_Cnt
    , f: j) t/ R! U6 w7 B2 g, X
  1281. INC <Time_S
    7 ?. U, N7 w* V8 G9 t- ~6 W& ^, d" w
  1282. 6 l3 g+ o+ _3 N! A
  1283. Time_S_Cnt
    & y0 |# M* h7 K: g2 p- R
  1284. LDA <Time_S
    3 P, F' F4 S; r! t$ \
  1285. CMP #60
    4 n1 W5 U: R1 M$ W. m
  1286. BCC Time_Count_End! e7 t7 o2 K1 |$ ^
  1287. LDA #00
    4 x, Z! b( M" c: p/ [: m
  1288. STA <Time_S  Q% @% Y8 y5 F, ?
  1289. INC <Time_M( L+ P/ j0 [8 `9 w5 H" h4 |* g! C. e

  1290. ! B. K# ^7 @0 A# y$ s& W& I
  1291. Time_M_Cnt
    . F. A) d8 J4 j
  1292. LDA <Time_M  M# I' \6 F4 H, G& @3 F
  1293. CMP #60* \3 f+ j: v- j8 h  [1 q+ R  F
  1294. BCC Time_Count_End' R, S# S, q8 @5 Q- n- @
  1295. LDA #00
    ' Y& d) o+ O" E! c9 D
  1296. STA <Time_M
    0 Q, ?3 S/ i5 D% s5 Y9 K
  1297. INC <Time_H9 @' ]+ v: X6 e) K# H
  1298. 8 D$ N2 w9 v: C$ f3 n8 K% r
  1299. Time_H_Cnt8 f0 p" M7 U& z( v8 t3 f! R% a
  1300. LDA <Time_H/ H" r3 h5 {0 U, J- F1 U4 y. l
  1301. CMP #24
    % N, T& y1 Y  I* X
  1302. BCC Time_Count_End
    ; [' ]9 y% ?% }: w. p
  1303. LDA #00; R6 m4 S" q0 r( D
  1304. STA <Time_H
    5 W3 `9 z( K" V, I7 z8 k8 d" A
  1305. 5 r! F& L6 P( f  M7 J* t
  1306. Time_Count_End
    $ f* a0 h# L3 ^
  1307. RTS+ a- g) W, p: E+ T# S
  1308. 0 |4 t+ c4 g+ e
  1309. ;==============================
    / l% o) L6 p6 I+ E4 v
  1310. Time_ReSet;播放时间重置. x$ E1 b6 Z* Y0 `" P( s
  1311. LDA #$00
    4 R8 ]1 P' i& c3 b! f
  1312. STA <Time_S
    " S& m, F; h9 b8 y7 L
  1313. STA <Time_M 6 E7 I# C3 }3 u# E$ V
  1314. STA <Time_H9 V) a  y/ n/ a, y' r
  1315. STA <Time_Cnt1 k3 {3 w7 ?* y# n
  1316. RTS, _8 E( a4 G  j8 X

  1317. + C5 r8 ?$ A" E2 G  h
  1318. ;==============================1 S9 `, h9 N- u, J6 n$ H6 Y1 @
  1319. Music_Bar_ReSet;音乐条重置9 s5 m- ^+ p/ K) E: n
  1320. LDA #$00# v9 s& k. W0 k( r* s
  1321. LDX #$00" s/ k; Z' ], x7 N% Y+ T+ f
  1322. Music_Bar_ReSet_Set+ M: p. \+ m6 Q% f- i/ I
  1323. STA Sound_Bar,X
    ; n. ]/ a" Y6 O+ K& B' M
  1324. INX
    $ J* ?; Z3 J- D$ e+ @) e, M
  1325. CPX #$10
    : r- H6 v  @7 e' a) Z
  1326. BCC Music_Bar_ReSet_Set" I/ j  h, Y& w6 V2 L, F
  1327. RTS
    ) E* E5 f& }. q% {# D+ P# `

  1328. # Q. Y9 g( i$ y; i
  1329. ;==============================
    / C7 Q6 j! Y- V
  1330. PPU_Data;PPU数据写入/ r' H6 A8 m& a7 ]/ p, X' M& g4 Y
  1331. STY <Data_L! u4 N* i8 ~, z; p* U$ p3 ^6 D- ^
  1332. STX <Data_H+ t$ v) m6 k, E3 `+ a: G2 H- ]
  1333. LDY #$FF8 D9 N: C$ Y$ i6 W/ Z* B
  1334. LDX PPU_Cur
    $ M( o, O6 g# T4 ^
  1335. DEX; Q9 l: `( Y1 `/ \) L  [( N: ?6 b
  1336. PPU_Data_Beg% z" i4 u# V5 c6 R  y3 T0 R
  1337. INX; F1 Q2 V1 h# k# n) D2 g% p) S: r3 S; Y
  1338. INY
    * J. q* k$ p! D% v
  1339. LDA [Data_L],Y1 E, u9 i3 m- F6 c7 D4 a
  1340. STA PPU_Addr,X
    # n+ ~4 b1 y) c' L- Q! W) s' E5 L
  1341. BNE PPU_Data_Beg
    # l/ H" H4 P, t" u' J
  1342. STX PPU_Cur) Q8 p9 A2 l( C# U; k
  1343. PPU_Data_End
    2 r0 L8 p. s4 X8 `8 r: `' T) G
  1344. RTS/ K9 ]2 `: Z8 v. p  W' G6 ?2 G

  1345. 8 j# o( M$ y# F' k
  1346. ;==============================
    4 x3 m6 J# J1 _& `6 j5 A9 y5 r
  1347. Music_State_Show;播放状态显示
    % A7 g3 N* O' G; H9 U
  1348. LDA <Music_Stop_State
    ' ?9 ~' J/ ^! |6 @
  1349. BEQ Music_State_Show_Play" ?& D, G9 x( w& d2 ^4 ?
  1350. Music_State_Show_Stop5 g5 u8 g: s- O8 N
  1351. LDY #LOW(Music_State_Stop)
    9 |0 b- t8 V* U- L( ?- u
  1352. LDX #HIGH(Music_State_Stop)6 c3 q- e( s" v9 q  R
  1353. JSR PPU_Data; o/ d; t' ?+ m$ I( t
  1354. RTS4 m9 d' C# D+ s' t
  1355. Music_State_Show_Play
    ! w* ~6 V' D' F; \
  1356. LDY #LOW(Music_State_Play)- o5 h6 H: L. u5 W# a5 g/ h
  1357. LDX #HIGH(Music_State_Play)! t4 B/ V( C, w" ~
  1358. JSR PPU_Data6 w3 Z5 |+ n* z/ G
  1359. RTS( b5 B3 W6 Q+ w2 m! E* {

  1360. " q% z. ~/ x1 u5 u& a
  1361. .IF SOUND_BAR_SHOW_ENABLE
    ! o: @: M  K/ v9 U
  1362. ;==============================0 `% a9 b; q2 |! h7 o3 M7 K# i. f
  1363. Sound_Bar_Text_Set;标题与音乐条初始化' E0 u3 L! r* u' ]* H  S
  1364. LDY #LOW(Sound_Bar_Text_Data)
    4 }+ A$ U: v  t& J' ]
  1365. LDX #HIGH(Sound_Bar_Text_Data)  N2 W  M% J2 p" A7 Y
  1366. JSR PPU_Data
    + i' t" a+ e) `; q3 Y% @
  1367. RTS" K$ G6 J" C, M0 }8 C* w

  1368. , B9 I8 f! M! }4 `2 W. U2 u9 b
  1369. .ENDIF& y7 B0 _& V1 T  y4 J

  1370. 1 c0 [7 U; j7 B
  1371. ;==============================
    ! I6 j& Q4 c! Y) \& P# @6 ~) U
  1372. Set_NameTable_Attributes;设置命名表属性6 K0 h: j% B- ^; y/ ]7 W
  1373. BIT PPU_STATUS3 O' P# s& j' K2 V. x7 e' k
  1374. LDA #$23
    1 a! Q2 C6 R; q$ Y" n
  1375. STA PPU_ADDRESS
    . `: J6 a8 ?( ^( S/ b
  1376. LDA #$C07 W. `' ]# Q" l' L9 w! S0 T9 G9 [
  1377. STA PPU_ADDRESS
    - ?- w8 O( u! u' R
  1378. LDX #$00
    ! E1 P! ?- S" N
  1379. Set_NameTable_Attributes_Write9 S. D, `1 }7 D  |" F3 y9 r2 V
  1380. LDA Palette_Attributes,X
    6 d" ]& k8 ]0 ?5 p  a/ z6 `( X1 ?
  1381. STA PPU_DATA- I( g6 F: K3 B" B
  1382. INX- o* G* w4 h- Q2 I) T( N
  1383. CPX #$400 F8 k. P* _6 d
  1384. BCC Set_NameTable_Attributes_Write
    * K( U. l8 `. |) B; b
  1385. RTS$ |* C# x1 S" v0 r
  1386. 8 c  S- W5 Z2 K% C1 j) V/ s# ^
  1387. ;==============================/ [2 T) j2 Y+ h/ J$ A- z* Y
  1388. Set_Palette_Color;设置调色板数据
    , G4 h: B8 x( I1 C( f# x, ]
  1389. BIT PPU_STATUS
    $ [( u' z0 h( y: M) K
  1390. LDA #$3F
    / t; W$ a3 J+ R) Z& L2 w- s
  1391. STA PPU_ADDRESS9 ?5 E3 a6 N' A+ V0 u2 \7 i
  1392. LDA #$007 }% _4 |* o% i: [3 c0 c
  1393. STA PPU_ADDRESS
    % D' s- j; I) r5 ^1 r& B0 l- P
  1394. LDX #$00/ }) q/ V+ y' r+ T* ]3 N; e8 ^& O* `: n
  1395. Set_Palette_Color_Write" @0 L- N) k4 v. s, ]
  1396. LDA Palette_Data,X% c: W; U& b0 q  a! W0 K
  1397. STA PPU_DATA
    + L: n! b, g: t0 t* f
  1398. INX( ^* a4 R) w2 \9 `( @6 E
  1399. CPX #$20% m0 C; W) D0 B4 ?( U' l/ C
  1400. BCC Set_Palette_Color_Write8 \3 Z7 _# J! k4 `) @8 `3 P
  1401. RTS/ o; P1 u$ N- T" o# r) q

  1402. ' x, [6 n# E1 m
  1403. ;==============================) u1 X' d' F+ Z- t! Y
  1404. Init_Palette_Addr;初始化调色板数据
    & b2 W1 {! A7 e4 K
  1405. LDX #$00
    8 R7 e  I1 k: e) k
  1406. Init_Palette_Addr_Write/ n  K- p  q" U9 U* z
  1407. LDA Palette_Data,X
    0 T! _& U# P8 c9 L) b8 F0 s8 Y
  1408. STA Palette_Addr,X4 y4 Q: o$ A. k( n
  1409. INX# D% j" m' O4 P( s7 A0 Z
  1410. CPX #$20) p* T" Y+ g8 r- @: V8 Z
  1411. BCC Init_Palette_Addr_Write
    , F$ R4 Y' K) F: d$ f3 }7 t# h
  1412. RTS( V0 A6 {0 E. I) L
  1413. ! h4 K3 t0 V6 d2 J/ J
  1414. ;==============================2 @! r+ i- @5 V) r' U$ I" _
  1415. Update_Palette_Color;更新调色板颜色
    * [& G: ~9 ^5 o0 |2 _; ^6 O' q) |
  1416. LDA <Palette_Update_Flag2 X% w+ S) u8 b6 T
  1417. BEQ Update_Palette_Color_End9 H; R2 Q7 D/ b; e2 F/ ~; g( h2 c
  1418. LDA #$3F1 {  u9 @+ C6 s' ]* }2 U
  1419. STA PPU_ADDRESS! v1 }7 N1 Q3 Z3 E
  1420. LDA #$0C
    8 X$ @! G4 q# K5 C
  1421. STA PPU_ADDRESS
    - B$ p0 z8 |2 P+ \* X7 h
  1422. LDX #$0C( ?/ m$ w0 G2 s' K6 l$ f4 p
  1423. Update_Palette_Color_Write
    2 l) x7 B- {' Q8 l! H
  1424. LDA Palette_Addr,X
    , m7 O9 X/ q( U6 o* {
  1425. STA PPU_DATA6 P3 \' t, I& M7 [/ `7 |
  1426. INX, A2 N' f  z: ~' d4 y: \
  1427. CPX #$14
    # U. a) M' q2 _, a
  1428. BCC Update_Palette_Color_Write  L5 E" ]. z& V8 g- i% u7 n5 A
  1429. LDA #$00
    7 s) S( @" u1 y6 z  W  m) v
  1430. STA <Palette_Update_Flag
    4 y7 c( C- P) j; M/ {0 u
  1431. Update_Palette_Color_End! `9 I' y7 j6 j9 @6 q& E
  1432. RTS
    7 d9 {  |2 G- y: F+ _

  1433. 7 K' w8 V" _* K+ u. G& p

  1434. ; Q5 [: O% z  L+ Z8 D
  1435. Update_Sprite_Palette_Data
    : N( p8 c; A; |  u# X8 O  v4 w) Y
  1436. .DB $21
    % ?( |7 C! ^/ r
  1437. .DB $21/ x) R$ s% k9 |4 l+ w0 h3 N- o. _
  1438. .DB $112 H0 m% e! R9 l5 G  A0 {
  1439. .DB $01
    * K& g$ s' w  s; J2 [* ]
  1440. .DB $012 V! A( p; K# V$ F( Y. {
  1441. .DB $11: l& g; C; V* q- Y7 e
  1442. .DB $21: `. @: W. p1 {7 b0 j2 |, n% B
  1443. .DB $211 n" d+ Z# ]! h6 d' r) Y% R
  1444. .DB $11% R0 {- x: \1 Z/ q) p
  1445. .DB $01
    6 D1 g. r8 O( b/ ^& N
  1446. .DB $11
    $ R; P( L$ Y3 e4 N, P+ s2 Y- @
  1447. .DB $21) }: v6 o& e9 x
  1448. .DB $21: g& M1 H- U3 M" T9 d0 F) ^
  1449. .DB $11
    : d' a% a9 G& ]2 e0 ?" I  a
  1450. .DB $01% n& f7 d+ D+ k" W; o5 r3 ]* v
  1451. .DB $11
    + O1 l7 V3 h% N
  1452. ;==============================
    ! l- S- a* g8 x" Y, ?7 X5 ]
  1453. Update_Palette_Data;更新调色板数据
    * {4 u/ [7 q. a7 [. F. C) B
  1454. LDA Nmi_Time_Count3 }, b( U5 ?  s* X5 c( f8 A
  1455. AND #$08& E7 `( O8 J! S: U( g* g, b
  1456. CMP #$08& G' }* H  t1 j( k
  1457. BNE Update_Bkg_Palette_Data
      F- x! ~  o  Z" j

  1458. ! e! x# `4 x2 |- `
  1459. Update_Sprite_Palette_Data_Set. K. ~* S5 z* m& I' q5 d/ {1 h
  1460. LDA Nmi_Time_Count: Z8 A- R- z0 t5 t
  1461. LSR A
    $ ^2 |8 a$ {8 z4 f
  1462. LSR A, L3 e- K. T5 N7 x
  1463. LSR A* L6 R) N$ j; C+ n8 y! d
  1464. LSR A
    0 s$ ~& W: K" ^: p
  1465. AND #$0F
    , E$ @* u0 U9 k+ ], p  j, u
  1466. TAX. F0 |% \- n% V+ B9 L/ A# K# M
  1467. LDA Update_Sprite_Palette_Data,X: p# v+ Q+ L9 x) S! S, L
  1468. STA Sprite_Palette_Update_Addr" S6 c7 |! s0 M  r. u% P4 ^( s9 O
  1469. LDA #$01
      n& n9 G: D2 E2 k8 n8 w% r
  1470. STA <Palette_Update_Flag0 ?+ X6 P  z4 I
  1471. 4 m. q" ~+ B' j. @+ e: v
  1472. Update_Bkg_Palette_Data9 U: F! u) a6 q. A; }6 z* @9 c
  1473. LDA <Text_Disable_Flag
    # G0 C) Q1 L4 G- D3 z2 X9 q) p5 u
  1474. AND #TEXT_DISABLE_RAM
    6 c& V' `4 A/ C7 F* G% `
  1475. BNE Update_Palette_Data_End
    0 L3 W! _' s* C( O' B
  1476. LDA <Music_Stop_State
    $ s7 w) h& _2 ~3 r
  1477. BNE Update_Palette_Data_End  K; K+ n6 n/ [1 s' }# {( E* Y2 b
  1478. 9 l3 R# U; U* h$ G* \, }0 g
  1479. Update_Palette_Data_Check
    8 v) j; c& s) m& R' j
  1480. LDA Palette_Wait_Cnt; M1 t# u; U' f) q1 S# x
  1481. BPL Update_Palette_Data_Check_Over* C: P) X# {5 Q& d0 D& ~
  1482. LDA #PALETTE_UPDATE_INTERVAL! ~0 y6 B' q& \
  1483. STA Palette_Wait_Cnt
    ; I8 j& b! K5 ~' x! b
  1484. Update_Palette_Data_Check_Over5 r$ ~$ }! O6 m! @; s
  1485. DEC Palette_Wait_Cnt' ~* W1 ~* \5 i" ~& ^
  1486. BNE Update_Palette_Data_End" T& ~4 Q# A- }0 s5 |8 a
  1487. 0 q. K% h& j' Z7 n
  1488. LDA <Text_Disable_Flag
    & q0 i8 a) e# {5 b' y5 y; A9 S$ `6 x
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME1 ?" F7 X- D7 V; h% n) h5 v
  1490. STA Text_Disable_Flag- a& ?7 {7 k" I& C: x$ _$ F
  1491. INC Palette_Update_Flag
    , M) n% A3 `2 j
  1492. 7 v: u+ }% {( z& O, C5 y% d
  1493. LDA #PALETTE_UPDATE_INTERVAL
    1 V3 Y4 k8 n; T8 W5 k
  1494. STA Palette_Wait_Cnt- f: T# V/ M! B) z# J- s/ R
  1495. + x* V& z8 E7 w; i. ]  T
  1496. LDA Bkg_Palette_Update_Addr
    $ N. f/ j2 w5 C! [, H9 l6 H
  1497. CMP #PALETTE_UPDATE_MAX
    ' X4 g9 F5 |( C" Y
  1498. BNE Update_Bkg_Palette_Data_Set
    : D9 `% H3 {( r
  1499. LDA #PALETTE_UPDATE_MIN - 1
    , D$ ^$ t3 e& d" R2 j. K2 V# G' c
  1500. STA Bkg_Palette_Update_Addr7 X% x' U. ^' u0 _& k
  1501. Update_Bkg_Palette_Data_Set
    1 Q; ?" s3 y& m9 T- N
  1502. INC Bkg_Palette_Update_Addr
    ! H! n4 v- }3 ~2 u2 ^3 C* x  Z& R
  1503. / Y+ m, u+ B9 q
  1504. Update_Palette_Data_End
    % _$ J  g( E1 O& d3 A
  1505. RTS; O7 a1 G* z6 S3 o+ A
  1506. . U  ^; ?' S6 W  ]( r2 g% ~
  1507. ;==============================' i% Y9 o8 v1 O& ?
  1508. Show_Music_Text;显示静态文本6 a1 q( ^: N; b2 B' d
  1509. LDX #$00$ S& f/ k" a! {
  1510. Show_Music_Text_Set
    % X  T- ]$ w9 \+ b* G- u& L; K: U
  1511. LDA Static_Text_Data,X
    % Y$ t4 g( _5 ~  c$ j+ z; r
  1512. STA <Data_L# R' f1 k# k- E' O3 D
  1513. INX4 k& D5 h2 F  J" f
  1514. LDA Static_Text_Data,X+ }/ r/ X: N( k& Y% A
  1515. STA <Data_H
    8 H) E% m, Z9 q; \; F8 ~
  1516. INX
    * b1 t5 m: H: V: B. X. P
  1517. LDY #$00
    ; o7 h4 f1 M1 Y
  1518. LDA [Data_L],Y" X6 W9 K& L0 {
  1519. STA <Data_Cnt5 z) G6 u' C- {6 Y. W. `
  1520. DEX- S% G7 P3 c3 ]& N- H
  1521. DEX% w: }6 m8 }7 D* l) ~8 ]9 F
  1522. LDA Static_Text_Pos,X
    : P% n( ^0 ^3 u# [+ e' G
  1523. STA PPU_ADDRESS
    * x/ q1 ?; s: s* p+ C: k
  1524. INX& @/ E) m+ ~! Y! M" k2 u8 T
  1525. LDA #$20
    ' l7 H& \8 F5 d0 m/ F' N. A
  1526. SEC
    9 v4 t( A! ^# c3 f  J; @8 y
  1527. SBC <Data_Cnt
    ) e& n+ g2 b0 w: B
  1528. LSR A
    6 Z- `4 H2 ^: ^6 T2 @
  1529. STA <Data_Buf
      v% H5 D8 I/ Z  q0 ?/ J( P
  1530. LDA Static_Text_Pos,X
    * m' X! q5 k/ B1 ?: T( q
  1531. AND #$E0$ p; Y4 R1 e  D8 C4 T2 y7 J, Y% [
  1532. CLC+ F: t$ A! w7 R4 E$ A
  1533. ADC <Data_Buf
    8 W' }; _8 L7 R* d5 _* r
  1534. STA PPU_ADDRESS( J0 B" w6 e+ B  `  `
  1535. INX
    - o5 {9 S. ]1 c1 i0 k8 ^
  1536. Show_Music_Text_Set_Write
    , @% C) m: f$ C* e
  1537. INY$ h' l" f& a  @) C1 O& S  ?
  1538. LDA [Data_L],Y
    7 g) s$ `0 D4 b
  1539. STA PPU_DATA
    " t# Q3 f, ]8 v8 f: x
  1540. DEC <Data_Cnt
    2 W/ m: @7 I4 n, i+ g' K8 P- K
  1541. BNE Show_Music_Text_Set_Write; ^( [: j8 ]9 `" u4 f7 n
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos' e, A& v, M' J9 E
  1543. BCC Show_Music_Text_Set1 H7 D: u$ L' p3 w3 ?; W5 T
  1544. RTS2 l) y! i  ]" K! K
  1545. / C: H- h* _& U
  1546. ;==============================
    2 j7 b- I( Q8 L' G% R2 _+ M/ q2 o
  1547. .IF Track_Name_Pos;显示曲目信息2 R. l6 D3 r8 K1 O4 ]9 M
  1548. ' C) ^8 P% e5 x3 @" T# E* h. r
  1549. Clear_Track_Info
    , H$ R( W: ?5 W6 Y2 L+ ~
  1550. PHA
    " T# f* Y) Y2 N0 |; ]2 H
  1551. LDX <Music_Item_Cur
    ; @4 Y1 {% L& B  Q/ q  x( s( s9 |2 f
  1552. LDA Track_Name_Addr_Flag,X; p# U7 ?/ V4 V/ J
  1553. BEQ Clear_Track_Info_End_Ex' t1 ^; Y6 z0 ^7 g( `6 X5 [$ ?
  1554. PLA
    8 f) _/ s  w" C  P3 G5 L

  1555. ( q" `+ ]* `0 ~) d! m
  1556. LDX PPU_Cur
    - h9 X: I; Q0 J4 l- Z) r$ c
  1557. PHA
    - x: \3 s# }( n7 j4 h
  1558. LDA #PPU_MODE_CNT_CLEAR! f& W+ i: K) l& N
  1559. STA PPU_Addr,X
    $ S4 h7 X" U% r0 t3 p1 K, ?# S. N
  1560. INX
    ' c5 S6 p) B" a- q' o" j/ e
  1561. PLA& f) d# o# F! B
  1562. JSR Show_Get_Track_Name_Center_Pos- z" a# U7 o( z3 w! }  j" O: G8 Q
  1563. STX PPU_Cur7 E/ A! e; b$ I8 K7 A8 h: {
  1564. Clear_Track_Info_End
    ( G, Y* H, B1 g9 a- `# R' v1 r
  1565. RTS$ j0 V# o6 ]! G7 G
  1566. Clear_Track_Info_End_Ex
    5 _% _) t; w8 h5 \4 ^) z
  1567. PLA; H; o8 D1 G( R: j7 P$ F
  1568. RTS
    ; \1 c2 _& Q: O! J$ P! ]

  1569. 3 R" q6 F* W3 c
  1570. Write_Track_Info
    5 k! S2 P) c+ P
  1571. PHA
    ; L& q$ r3 ^# h3 {% t  A
  1572. LDX <Music_Item_Cur
    6 Q6 z/ e* y5 k) Y4 ]
  1573. LDA Track_Name_Addr_Flag,X- N: e9 X5 f! D
  1574. BEQ Write_Track_Info_End_Ex
    8 ?" y$ H- o3 N% ~$ ^
  1575. PLA9 i- q+ O7 {- @- ]* A2 ^
  1576. ' d: U4 Y* a0 i% A! k
  1577. PHA
    ( R  ^6 w" A  z' }% J
  1578. LDX PPU_Cur
    / B4 ~* R$ k8 `# e" S4 W
  1579. LDA #PPU_MODE_CNT_LINE
    . g3 ]6 p. y0 k9 t$ _& j1 M
  1580. STA PPU_Addr,X
    & \# U; @/ u( r0 ?! @! F* r  z" X
  1581. INX
    * y! Y7 z) A0 [
  1582. PLA
    ( c# ?2 ?7 B& X/ Y" q8 u
  1583. JSR Show_Get_Track_Name_Center_Pos
    / E0 @# d1 }& E% k6 _
  1584. Write_Track_Info_Data: O! @8 W7 i. d  N# s, v0 A5 O4 h
  1585. INY
    6 S$ ~% M  d3 \7 d, ]1 g
  1586. LDA [Data_L],Y( L. r* p. f0 D5 u% F+ f; \; c
  1587. STA PPU_Addr,X/ X; ~  B. H) S% j1 s- z
  1588. INX
    , g. U9 q2 K5 L$ H1 f
  1589. DEC <Data_Cnt
    5 X. ^) n' C/ I5 G& O* U
  1590. BNE Write_Track_Info_Data
    + K0 X2 m7 ]9 T$ h- B
  1591. STX PPU_Cur7 d% X! [- X7 u) C0 Z6 S
  1592. Write_Track_Info_End  w2 H5 A7 c; ^3 j2 K
  1593. RTS. n0 [9 x: ?0 \
  1594. Write_Track_Info_End_Ex, y) `* \& A, R1 |* c( ^/ b  \
  1595. PLA2 Q2 U) M; w, ^. [4 f& I
  1596. RTS
    ; P/ l& _0 j  X
  1597. 5 T% @" b8 Y* k6 [- x% z2 V, ?
  1598. Show_Track_Info: u1 I' E8 g+ S
  1599. Show_Track_Info_Clear
    0 v% v( |- H# u% x
  1600. LDA <Music_Last% R9 C% E# B$ _. |/ y

  1601. + K# V$ a$ v. n$ E% w, u9 C' Q
  1602. JSR Clear_Track_Info, G# O3 K3 \+ |* }$ g
  1603. : R/ S; @& p: k. s4 S  O
  1604. LDX <Music_Item_Cur
    ' T0 X  z! z% D( X( `
  1605. LDA <Music_Cur,X: Z8 c) s8 i1 o( x) y% ^! o
  1606. JSR Write_Track_Info
    4 F- L4 g( t1 Q, |
  1607. RTS, J! p& d- s2 q% {. {

  1608. 2 }6 M# c5 W2 v
  1609. ;==============================
    ' y2 h. E7 L& O5 b7 c2 _; ?
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    $ T! Z. M4 w' ^( B2 E4 D1 r. n+ ]* ^

  1611. 5 I0 C! S7 Z. I' n
  1612. ;取出集合名索引
    ! m9 R! I& D3 [
  1613. PHA2 x/ Q/ ?* x7 U( [

  1614. 3 V) f3 }# B8 S. r
  1615. LDA <Music_Item_Cur0 h8 Q2 V+ X7 J- b3 z* u
  1616. ASL A
    ( |; `7 {! L$ g8 o- A0 ~5 D
  1617. TAY9 `- M4 F& g% w9 A$ _7 W6 J1 x2 i
  1618. LDA Track_Name_Addr_Port,Y  _2 G9 Y( N- x! s2 U
  1619. PHA, D% j3 k, f$ S7 |
  1620. INY( a$ H7 B% I& M
  1621. LDA Track_Name_Addr_Port,Y
    7 K5 [8 |5 g  j* M9 {. W* a) ?1 A
  1622. STA <Data_H  p" a9 @, T, A+ i. |
  1623. PLA% y; k6 k! Z/ z% E+ d8 r
  1624. STA <Data_L
    - B. q/ s. J: e8 x" c5 r- ?4 ^

  1625. + F0 h* S0 j- Y
  1626. PLA
    $ c3 ?0 M2 J" Z: Q. x

  1627. ! O0 f( [2 w  D# M! H2 Q
  1628. ASL A: X/ x! P- p. C& U9 s7 j
  1629. TAY* u, M: ~7 H- k' c4 m- k; F" K
  1630. LDA [Data_L],Y
    ' a! I  V4 K8 z6 D" M; N3 c; g; x
  1631. PHA
    # A5 N& z  B& C" W
  1632. INY5 Y) p& L  N0 n
  1633. LDA [Data_L],Y
    : Y0 G$ b& S; D& U  n& V, ^
  1634. STA Data_H
    6 T4 n' e6 ~- j% y8 R% o
  1635. PLA0 ?/ K$ n9 W, z, U/ I" }! a( _
  1636. STA Data_L
    2 J! }: g; M. ~4 J, H2 }

  1637. 7 [$ C7 n( [) q/ J& H; E
  1638. LDY #$00
    . s$ n7 \6 n& f/ H! a% d
  1639. LDA [Data_L],Y! {3 F3 J6 _& ~$ {( K
  1640. STA <Data_Cnt
    , L% c/ J- t; X" p; {9 K4 m
  1641. LDA #$208 l' L- J! ]* p, @8 J
  1642. SEC# ]; ?' |5 U- B; L9 U
  1643. SBC <Data_Cnt
    , p4 Y7 a' V, a1 ~8 c$ \
  1644. LSR A
    2 E- U7 r+ f1 t% Z) t
  1645. STA <Data_Buf( a5 h- x  X$ d+ `+ h
  1646. LDA #HIGH(Track_Name_Pos)
    2 z6 z9 |4 X6 }/ S
  1647. STA PPU_Addr,X
    4 ^) a/ U2 u! H/ B3 H1 @' V
  1648. INX! j; c7 [9 I  N1 n$ F4 k+ Y
  1649. LDA #LOW(Track_Name_Pos)3 v! i; Q9 Y7 h  v  S
  1650. AND #$E09 p2 I+ s0 T' G( u
  1651. CLC
    4 H6 Q6 d7 O+ ?3 x. N
  1652. ADC <Data_Buf
    & d+ G( l6 a: a5 D" o/ @) K
  1653. STA PPU_Addr,X9 {( P( P( \' E+ r$ d* {. f+ D
  1654. INX
    3 O9 K! c  A6 x* m6 q
  1655. LDA <Data_Cnt
    0 N0 b  {. I0 E
  1656. STA PPU_Addr,X  R! z4 f( ~( V* b0 E& y
  1657. INX
    , X' m( E' t8 {
  1658. Show_Get_Pos_Center_End( E9 K* y' M" F0 L
  1659. RTS, x; D! D! {7 }* A( Z) H' N/ N% h
  1660. .ENDIF- c3 ~% a0 E* k1 g0 t2 M
  1661. 2 p2 c8 x: ^: Y4 ^! P
  1662. ;==============================
    2 x# y  \0 ?! y& [
  1663. ;音乐端口清除
    $ L9 S1 c0 h+ O+ y
  1664. Sound_Data_Clear
    ) N/ ^7 D! K: |7 h. M$ l1 y
  1665. JSR Sound_Port_Clear
    " I5 I( _1 [. H+ e
  1666. JSR Sound_Ram_Clear
    # s* P% {' R) J  s6 i3 l; {5 M0 e
  1667. RTS
    / B$ L3 c' c3 o5 L

  1668. * w* @3 R, Q- t- L
  1669. ;==============================  L! D7 t9 g( V1 V$ h) h4 o
  1670. ;音乐端口清除
    $ {  V6 Z% U9 V; b) Q' ?5 Q
  1671. Sound_Port_Clear
    5 |: P3 k8 N1 B+ P: T6 O: m; q
  1672. LDA #$00
    9 l% d6 @- m# ~4 _% R7 r. z
  1673. STA APU_STATUS
    6 V, ~1 \: ~, V3 C- E
  1674. LDX #$00& u# _4 s% r, X( t; a
  1675. Sound_Port_Clear_Write
    4 X2 Y3 ^4 D# u& e8 q+ C4 W& ?
  1676. STA $4000,X1 `2 W( R) G, q4 w: `# G# [
  1677. INX
    2 ?9 u  b" \" y" a
  1678. CPX #$14
    ' f" S( e' p; \. p6 z
  1679. BCC Sound_Port_Clear_Write6 }& g1 R  W/ C3 a3 b' i% o* d/ r9 ~
  1680. RTS
    . O+ K0 s" x8 _; p9 p2 O+ g8 y. |

  1681. 0 w- S7 N8 h2 H# Q6 Y4 {0 G9 P
  1682. ;==============================, d$ Q( G) m8 N2 a* `) {: M
  1683. Sound_Ram_Clear;RAM清除* ?8 X3 a+ o' Q; Q8 ~
  1684. LDX #$00
    % q- \/ m8 m& V8 t6 B' t
  1685. LDA #$00
    4 ~& g8 Y1 s8 e0 f( F* L3 y0 L3 F
  1686. Sound_Ram_Clear_1
    ! l, [8 z- H- x0 B' \
  1687. STA Sound_Ram_Addr_1,X
    " f/ u( b. W& ^6 k! }/ S
  1688. INX! A; j1 P8 X# w/ F% s: h: R! M+ K
  1689. CPX #Sound_Ram_Addr_1_Size
    2 x5 C3 k2 q2 q/ H" K* d
  1690. BNE Sound_Ram_Clear_16 r* g  ^1 n3 N: C$ |5 X% Z
  1691. LDX #$00
    0 |, w8 o7 C; k1 l
  1692. Sound_Ram_Clear_2* V9 d' n6 P6 N, a
  1693. STA Sound_Ram_Addr_2,X
    3 y  I) f# _- X" T& h- l
  1694. INX" x5 y4 S% E* {9 a; g$ M
  1695. CPX #Sound_Ram_Addr_2_Size
    ' h) ?5 X/ Z; c& V5 X/ B$ f% m' O& ^9 s
  1696. BNE Sound_Ram_Clear_26 }1 o$ a& R6 m8 b
  1697. LDX #$00/ V8 A) E5 s: x  x/ P; J
  1698. Sound_Ram_Clear_3
    ( W" q' e; ?) A0 E1 K
  1699. STA Sound_Ram_Addr_3,X
    , W/ l! j; }' V3 j) A6 P
  1700. INX5 h& T! g* G& {! {, ^7 H
  1701. CPX #Sound_Ram_Addr_3_Size
    8 ]8 q- \' f, \3 a4 g+ j
  1702. BNE Sound_Ram_Clear_3. f+ G! y. P" i6 P8 E. h: F5 n
  1703. LDX #$00- Z! |$ _7 S+ q( T
  1704. Sound_Ram_Clear_4
    ) s0 `% p' y9 X  t8 q  ]
  1705. STA Sound_Ram_Addr_4,X
      k, ?2 @1 g# j# k. U  i0 Q
  1706. INX
    6 e0 g/ F6 g( N# e% Y) ]
  1707. CPX #Sound_Ram_Addr_4_Size: f$ @$ o+ K- ]5 o. \/ ^" w
  1708. BNE Sound_Ram_Clear_4
    & Q* {( [0 F7 o& Y% b% H
  1709. Sound_Ram_Clear_5: x0 W1 O6 A6 ~7 Q  Z( `
  1710. STA Sound_Ram_Addr_5,X
    # O1 h! K) H2 i  O; F3 j" J% z1 E# l  G
  1711. INX
    ; I& W' A# K& Y( M; S
  1712. CPX #Sound_Ram_Addr_5_Size  P/ S' c: E' q1 s# O+ F0 [
  1713. BNE Sound_Ram_Clear_5$ I  P2 i; D+ K/ {+ ~6 M
  1714. RTS% m" z) C7 J; x# I

  1715. - V( k7 |6 |& k+ ?+ I
  1716. Get_Music_Collection_Name
    9 @; ?/ [. O' O8 P: J! z' C
  1717. PHA+ V" F# ^; b+ w. z5 i7 Z! l/ b
  1718. LDA <Music_Item_Cur- U+ F. u2 D& L0 f1 }, R& c% d
  1719. ASL A, K; w: H4 p% k% n2 H* \0 K; H7 G
  1720. TAY
    7 m7 G( b0 g- R3 c. C( }' ?
  1721. LDA Music_Collection_Name,Y
    ; Q& [+ N* t$ g( h0 A4 j$ e: ]) O
  1722. STA <Data_L- X6 e$ n5 Y1 N. [9 p7 ^9 g7 D. Q7 T
  1723. INY1 [# F! U! G) Y7 A- h
  1724. LDA Music_Collection_Name,Y
    ! z  c. E& Y9 |! a$ ^
  1725. STA <Data_H& C* R5 v! v- j: ?6 L
  1726. PLA7 t* \' S% h  v, a2 G0 C
  1727. RTS
    6 @( s9 g: S3 F5 ~; q+ h! N$ T
  1728. 5 _" j. o5 k( x* X% O( F& J; H
  1729. Set_Sound_Total
    5 ?& ~+ P0 g$ z, g/ ?7 n
  1730. LDY <Music_Item_Cur% V" n9 [0 v- |
  1731. LDA Sound_Total_Port,Y, i5 ]) s* g7 q- L' F* y4 Q
  1732. SEC
    . Y- ]& B1 L6 ?" c
  1733. SBC #$01
    - o6 Z5 P9 w- u6 {$ u
  1734. STA <Music_Total
    4 n6 b1 x/ v) Q
  1735. RTS
    # R- P8 c9 h# ~
  1736. / \% V& Z2 w2 [: o# `. q
  1737. Get_Sound_Start8 B3 v; {/ c) s* ^/ f
  1738. LDY <Music_Item_Cur9 z: y7 [6 F! u" z1 f" E4 B. w+ j
  1739. LDA Sound_Start_Port,Y
    ( [9 Z1 X: a  I9 r- [5 E8 w" D
  1740. RTS+ [- I9 K5 W+ Z4 _" p
  1741. 7 x. m* G3 r: k6 s: {/ `
  1742. Set_Sound_Init_Port# X( Z/ L# J1 [7 N9 F  n
  1743. PHA
      w: T5 Z( G. m. S  D4 E: z
  1744. LDA #$20
    , E' q, Z& g* z0 W. @
  1745. STA <JSR_Addr_Op
    5 z' P! r/ i, p% u+ ^
  1746. LDA <Music_Item_Cur
    ! M9 c/ |7 t+ t9 ^5 z8 c* A
  1747. ASL A
    3 B: B2 @& ^2 ?/ U! Z/ _" n1 `
  1748. TAY1 h) V; p7 B% g
  1749. LDA Sound_Init_Port,Y2 ]* G, [6 Q/ y# d
  1750. STA <JSR_Addr_L
    8 a$ J6 j, R; {( a
  1751. INY3 s9 W& E$ \7 W0 v) f. o, i' ?0 r
  1752. LDA Sound_Init_Port,Y. I/ a* j+ u& x5 T+ @
  1753. STA <JSR_Addr_H
      h9 U4 \& X4 b- h( V; c
  1754. LDA #$60
    # s9 j' V, O. ^/ P4 I2 v$ P2 s& @! J
  1755. STA <JSR_Addr_Rts1 x0 f) D, h8 D4 n
  1756. PLA
    ( z- P" j% m# T$ a8 _
  1757. RTS
    1 g( t7 F( d/ l& S3 T. F! B
  1758. - y% ^* F. |. |+ N" X* Z
  1759. Set_Sound_Play_Port
    / _) N8 G/ N4 F
  1760. PHA
    - k0 _/ M, C+ F! R
  1761. LDA #$20
    7 ~( i+ g' B( ]1 P( l; z
  1762. STA <JSR_Addr_Op
    4 _% o7 H7 t/ o0 d) @
  1763. LDA <Music_Item_Cur
    * C% P' h! u. r- g
  1764. ASL A
    2 g: l& J+ v2 Y+ E1 R4 j- `. h2 r# F
  1765. TAY
    6 Y* M6 Q7 @! B
  1766. LDA Sound_Play_Port,Y' B! [) \; t; `+ K& s" j
  1767. STA <JSR_Addr_L0 O% N- ?. y9 I. d% |
  1768. INY
    . b# }- s. }( W
  1769. LDA Sound_Play_Port,Y
    4 T! z3 l9 |0 v6 {% |$ W, s
  1770. STA <JSR_Addr_H6 P. c' p6 d# O! m9 @5 E5 q7 ]
  1771. LDA #$605 w: p8 Z, V) R) D
  1772. STA <JSR_Addr_Rts" ^: Y2 v# o5 U- I5 j- Q" u/ r
  1773. PLA0 N$ Z0 V" U/ r% f0 j7 x1 G
  1774. RTS
    : o7 u, v9 i# T. X5 e
  1775. $ N5 _% C- {' g) A% {
  1776. Set_Sound_Reset_Port
      Y2 p' k# ?9 P1 O# _; P! r
  1777. PHA
    1 d2 W$ n, C3 m/ ]3 p9 E- m
  1778. LDA #$20$ o: [2 p( @9 T* V  I
  1779. STA <JSR_Addr_Op0 ?+ p$ ^) p) g9 U' g/ c
  1780. LDA <Music_Item_Cur
    $ j! J6 O8 J, {, d  d
  1781. ASL A$ z# B2 a7 I" Y. L, ~( ?$ E
  1782. TAY
    ! h% f/ N5 K& e7 B( v  d
  1783. LDA Sound_Reset_Port,Y
    " T0 ]+ f6 v5 }; s0 }5 A. C
  1784. STA <JSR_Addr_L
    % N8 R; D# S* f$ N
  1785. INY
    & t# W1 _* p+ d  G; y' J& S6 S
  1786. LDA Sound_Reset_Port,Y  ?8 x. n* U: h) t  x$ G7 q8 O; U. K
  1787. STA <JSR_Addr_H% t+ \; Q- g( R3 V2 s6 G; x, S
  1788. LDA #$600 i9 B. {7 Y$ B
  1789. STA <JSR_Addr_Rts
    2 @9 ?4 K* N& o
  1790. PLA
    ) L' _( v7 [' q3 E; W5 i
  1791. RTS
    ! B. h2 r6 {& [  R

  1792. 2 b6 U; d5 p# y9 J; P! f# x& f7 c
  1793. ;初始化音乐bank8 r0 [6 v: \3 N3 V! H6 b6 z
  1794. Init_Sound_Bank3 B7 f0 V( ]1 ]/ |7 Z+ _6 Y
  1795. LDY <Music_Item_Cur
    3 S! T; W/ a# h) Z2 V0 V0 @8 C
  1796. LDA Sound_Bank_8000,Y, e. H+ f3 y  V
  1797. STA <Music_Bank_8000
    1 L8 W; T' t! a6 P, a% h
  1798. LDY <Music_Item_Cur& O# m) L/ \0 ?+ w
  1799. LDA Sound_Bank_A000,Y2 w5 D5 [- U' L3 a' ]* B0 C
  1800. STA <Music_Bank_A000/ [" _' d3 K3 _  p" z
  1801. RTS1 {4 Z0 G! ]( S0 q8 r

  1802. - I- |8 r( E: d
  1803. ;==================================================: c) |& N6 Z( J1 U! s0 i* g- H/ ~/ [! Y
  1804. Sound_State_Reset;音乐状态重置
    ' e/ G. \* K' w/ f3 O0 q
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    " b7 W( u# [* i$ S; h4 s7 ^2 L
  1806. JSR Time_ReSet             ;重置播放时间
    1 K( G8 D# \) f

  1807. 4 b3 Q% Q0 J  U& S* _, e
  1808. LDA #$00, t2 h% J7 C3 t1 |
  1809. STA <Music_Stop_State
    - Y& u' j5 W# j6 x
  1810. JSR Music_State_Show       ;显示播放状态0 X$ X( ]: n  V1 Z' Q# U/ r# X
  1811. 2 h3 B: m2 c! y/ i5 u
  1812. .IF Track_Name_Pos
    " Y$ Y5 q. a/ u2 U; l5 E" ]7 l
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    # G* s+ Q8 \; x+ F
  1814. .ENDIF
    6 y2 K6 k' k2 x( Y$ j$ N  i- v

  1815. 1 V7 B6 x1 \# q; r. T  `# R8 w
  1816. RTS
    % C- j. m4 ^( y  Q! a2 n  K2 X
  1817. 2 N" N9 B  R8 B& r$ K
  1818. ;==================================================
    * j/ X) M! n  V- e# }+ C( X: ~7 o1 x
  1819. Sound_Init_Proc;音乐初始化处理& K5 O+ Z; R! p
  1820. PHA
    & X' d) V- ^+ o  S& p
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    $ U! X! z% B7 a5 h0 _  \  h
  1822. LDA #$00
    . f7 K7 {, ~& I3 S
  1823. STA <Scroll_H               ;重设水平滚动
    , f+ \9 s2 W2 \# f* X
  1824. LDA #$0F
    1 `8 h9 j: i# D
  1825. STA APU_STATUS$ G: X7 g8 h0 J) J8 j0 w( ^9 Z% e
  1826. PLA
    ; L6 }- g& `% U9 J- F
  1827. JSR Sound_Init             ;音乐初始化
    7 [( A. n" r* C3 |* r- B/ {3 U
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    # D: b# A/ b4 K, }1 R7 x
  1829. RTS
    9 W* f! x7 R1 Y2 G2 |

  1830. 5 h8 s9 t* e% D/ U# Q9 n
  1831. ;==================================================
    & T# l2 X" c1 W
  1832. Sound_Play_Proc;音乐播放处理5 z0 R2 ]; Q* C& Q: c+ j
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址, O, D$ h8 a' u8 A- ~, Y( C0 C8 T% Z
  1834. JSR Sound_Play             ;音乐播放6 Y2 y: B  ]: U( L* W! f! z9 x& \
  1835. RTS
    " B& L" r+ W" A3 b3 }( N
  1836. 5 s, ^* V: W4 Q% L
  1837. ;==================================================) |$ e8 I5 V( k6 o
  1838. Sound_Reset_Proc;音乐重置处理
    : }. z# J; {" }6 e( ~. L
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址! G- s7 g$ ~4 T5 {6 i
  1840. LDA <JSR_Addr_L
    . T7 y! }! D" b3 M/ `- s. w
  1841. ORA <JSR_Addr_H- \) U( f  I1 |0 s; E1 G
  1842. BEQ Sound_Reset_Proc_Default5 d8 Q) M- A; r
  1843. JSR Sound_Reset            ;执行音乐重置
    3 f: j  P, K- {+ g
  1844. JMP Sound_Reset_Proc_Init_Sound# ^  _8 E9 }1 q9 H* k3 T  i8 Y

  1845. " V5 E* m3 z. e- d9 n6 O
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    ! f3 u7 r# Q, O; v9 l1 D% T3 ^
  1847. ( ?1 G( J, ]' M& Q
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    - H" m0 [1 K3 r+ U. k6 x. a
  1849. LDA #$004 q+ T' E4 [: d/ R: s5 s) }6 S* w- h# W
  1850. STA PPU_CTRL; P, U  N% A3 l: P% E9 {
  1851. ' A  X; |# |  f
  1852. JSR Sound_Data_Clear
    # Y5 v+ ~" f! v+ u; B2 f, G! V  `

  1853. 5 z, G% |+ z% h) _
  1854. Sound_Reset_Proc_Default_Wait! L1 H: R1 D9 q. V/ ?( b( ?
  1855. LDA PPU_STATUS
    7 x# o1 Q2 e$ i* M
  1856. BPL Sound_Reset_Proc_Default_Wait9 K  e7 c) v% h, p3 h" S1 f$ V$ z& t
  1857. 6 ~1 K* H$ b: D3 D8 `5 P6 B
  1858. LDA #$00
    ( A$ D- y, M0 ?+ n# A
  1859. STA PPU_ADDRESS4 {2 z3 s0 ^7 L2 G2 ]
  1860. STA PPU_ADDRESS2 V% A$ O" B; A; H, I
  1861. STA PPU_SCROLL3 L1 X- N0 Q- M6 K/ Y
  1862. STA PPU_SCROLL
    8 k. ?. z& |" Y

  1863. 6 S( q/ i! s+ D) Y& m, o% P+ |
  1864. ;恢复PPU控制
    ! v( {( {2 N0 w& d- q  N5 t. c
  1865. LDA Screen_Ctrl
    4 p9 |4 O3 }; \+ ^- d1 [
  1866. STA PPU_CTRL
    - L" }, j( e+ @/ e8 a
  1867. - A5 C+ B5 S# \6 I6 V
  1868. Sound_Reset_Proc_Init_Sound
    , b" }) q6 o' m3 w7 t
  1869. LDA <Music_Stop_State- |: R" E' T/ M4 [
  1870. BNE Sound_Reset_Proc_End2 y4 l. G, A0 |' ]% q7 K
  1871. LDX <Music_Item_Cur
    ! T+ f. O0 Y9 }
  1872. LDA <Music_Cur,X! X( ?5 Z" @8 u9 y' Q' [  k; {5 A4 o
  1873. JSR Sound_Init_Proc
    2 i" @' Y- k! i- k8 x
  1874. Sound_Reset_Proc_End) z1 k, v3 b$ C% v; P
  1875. RTS5 ]- P* D5 c6 D9 c7 v

  1876. # }- U  ~4 {  A0 Q% v
  1877. ;==================================================/ Y) b* b6 u, `' d2 E' u; [
  1878. Clear_Item_Text;清除页项目
    & c8 Y9 U- c' E- v  ~
  1879. LDX PPU_Cur- r* V' K- v( ^) n5 Y' b
  1880. LDA #PPU_MODE_CNT_CLEAR$ A7 C9 Q7 C3 Y; d
  1881. STA PPU_Addr,X
    0 w2 X. S. E! }1 G% t6 t
  1882. INX( Q4 Y! Q% O0 Y6 L

  1883. 2 M: z1 \! Q7 `1 K8 p. O* t5 S9 W0 l' P
  1884. LDA <Page_Last  u8 p5 {6 G  b+ ~5 Q
  1885. SEC( [, u0 U) f8 j7 b3 n' j
  1886. SBC <Page_Last_Index# G- g) z' w" f+ j6 j3 \
  1887. ASL A
    # m" ]0 z  F0 ~! a) J

  1888. 1 ~4 H8 f& O2 ?6 w) w% f8 ?
  1889. TAY( J5 B6 z& s$ m" K( N- Z( s' N( x
  1890. LDA Item_Pos_Data,Y
    1 w+ d4 P) @8 ?  p
  1891. PHA+ m7 K& K5 A/ u2 |! y. w
  1892. INY
    % U5 y9 x' [6 L& M4 s% B7 m" e( T
  1893. LDA Item_Pos_Data,Y( P& Q% r, u. ]0 J# p
  1894. STA PPU_Addr,X/ a, j( `9 p) ?) X2 t* ~+ r/ r( m
  1895. INX
    - \# g. `4 t% p( S, e
  1896. PLA0 q2 W* W. S; p9 G; ~. s( f1 _8 n$ Z
  1897. STA PPU_Addr,X7 }+ x; F; Y6 o/ A& p
  1898. INX% |' t" J- t6 J2 h( w' m/ n

  1899. % d; @) ]7 }$ r
  1900. LDA <Page_Last3 E' h8 V) b7 l$ I8 q
  1901. ASL A
    ; s1 h8 D' d& ^- Z2 B0 o. p
  1902. TAY
    2 d- p- H" u& _7 M
  1903. LDA Music_Collection_Name,Y; `0 i# W0 X0 a
  1904. STA <Data_L) _; D+ T; r$ p, c. r, k2 u/ T
  1905. INY
    " `, m; O4 P* O* Q% Y
  1906. LDA Music_Collection_Name,Y' G% a/ G/ s# f$ H$ y& e% @
  1907. STA <Data_H' W( t) k0 s8 ]; }% e

  1908. 7 \. w: S- Q6 i
  1909. LDY #$00+ Z, l( e' ]; S5 R, H; M! V' V( X( A
  1910. LDA [Data_L],Y; c# J8 Y5 A# L& j
  1911. STA PPU_Addr,X
    ! R+ N$ W1 n* D
  1912. INX* F# n! N& [6 y1 c- `
  1913. Clear_Item_Text_End; \/ q: p- E" h
  1914. STX PPU_Cur! X8 z' O* c& B. a. [  z' \, y
  1915. RTS
    - ]- b0 P) A2 s$ I  |
  1916. , X3 I% [7 X( A( g+ a  r; c
  1917. ;==================================================
    1 p; Y* d) O$ N+ W
  1918. Show_Item_Text;显示页项目
    ; }* T( ?& V0 o( J( l3 h, J& @
  1919. LDX PPU_Cur. c" L0 U9 r9 y) V) O% p  ^0 B
  1920. LDA #PPU_MODE_CNT_LINE' n7 @+ ^; b5 e1 W
  1921. STA PPU_Addr,X
    ' ?' q# G7 V, _$ r
  1922. INX5 I0 s' z7 R4 w# {- A2 H4 b
  1923. LDA Page_Cur
    2 U/ A" g& [. Z
  1924. SEC: F! o5 w; L; r2 l, Z+ G) b+ h  T
  1925. SBC <Page_Cur_Index
    # m' a6 I& J7 T2 y( i( O  `1 I
  1926. ASL A
    * M* i- {5 z6 |" H! s
  1927. TAY0 T% s6 H! Y2 E/ F
  1928. LDA Item_Pos_Data,Y  T& C7 z5 P$ t* \2 |7 `
  1929. PHA
    : n* k/ _" D' X' t( @
  1930. INY* @1 j3 ~& P6 i4 W
  1931. LDA Item_Pos_Data,Y* v2 T% Z, l! K$ X9 V" i
  1932. STA PPU_Addr,X$ ]; \1 @/ T9 }7 b3 a1 o7 Y$ |0 o7 c
  1933. INX
    0 [3 R+ g+ v9 z9 a/ I1 o% l4 C
  1934. PLA
    2 x4 r3 T1 O/ q; j$ N7 X
  1935. STA PPU_Addr,X
    9 s0 z2 c) {% D. c" _4 v  F$ n
  1936. INX
    % J: v5 I4 S; z! O6 g5 o5 z

  1937. ( M# Z; ]/ D" Z' u; ?, }$ q. R4 M
  1938. LDA Page_Cur
    : y2 z" |. S' j. f0 J
  1939. ASL A
    2 F( A7 U4 C, h% k
  1940. TAY% n9 V) ]5 D" O. F
  1941. LDA Music_Collection_Name,Y
    3 Z' v/ ?9 E  z1 j
  1942. STA <Data_L
    1 A. ?0 \* u3 O: K* D+ O
  1943. INY
    + J( w: s3 C3 P& |& Y7 R
  1944. LDA Music_Collection_Name,Y
    ; o' o. q0 o7 s, C& B$ f, a
  1945. STA <Data_H
    2 q, v  P, E, j- }2 R

  1946. ) E; u4 }' [0 U5 [% g% f8 {1 u4 @
  1947. LDY #$00
    . k% F3 _  _2 A0 R3 T3 r8 y# y
  1948. LDA [Data_L],Y
    1 g/ n7 i& F0 F1 V1 |1 K* C
  1949. STA PPU_Addr,X! @/ d, k& b" W/ m3 {3 g
  1950. STA Data_Cnt9 |6 s! Y! Z  M
  1951. INX
    2 s9 G! G& H- Y0 R' \. ]
  1952. ; }! z8 k5 ]* X% f* _
  1953. INY
    7 ]: k% |+ |( }0 B$ d
  1954. Show_Item_Text_Write
    . [" Q% d2 y: R/ @! |  A: F
  1955. LDA [Data_L],Y
    3 G& |( Z6 M% }; }+ x
  1956. STA PPU_Addr,X' R& j" F. h0 d  ^# ]8 d
  1957. INY' Y5 Y$ q* |9 J0 `8 L$ Z. f
  1958. INX
    & G) ?& U/ }3 r7 J3 s) ]& O9 ?* A
  1959. DEC Data_Cnt2 }& z& g7 n9 I
  1960. BNE Show_Item_Text_Write
    ; r* W6 N8 n6 b/ c
  1961. . O9 B/ h* u0 i& T8 s
  1962. Show_Item_Text_End; a0 U0 a) Z; n/ g- H3 u
  1963. STX PPU_Cur
    * ]/ H' }4 q* J- R( c
  1964. RTS" ?0 z, G; F* `

  1965. ) B5 V9 s/ e( p& H
  1966. ;==================================================0 [5 w, B4 w$ Z; k
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量- s" w6 L' {' s: O
  1968. STA <Data_Buf* q" y4 g: D' A- }
  1969. LDA #$003 G! k4 E" ^+ `
  1970. Get_Page_Index_Calc
    & P; F( b& n( \9 j. G4 Z
  1971. CLC& f; L. B" t! A# N. w
  1972. ADC #PAGE_SIZE* ^+ \& h2 h- F1 d- ~
  1973. CMP <Data_Buf: E- ?" |- {  G4 W5 N' B) Q
  1974. BCC Get_Page_Index_Calc
    ; |3 p4 ~$ ]. U# @0 M
  1975. BEQ Get_Page_Index_Calc_End
    . J: n$ x9 t# u' b; W
  1976. SEC" P( x( q8 l$ ~, w
  1977. SBC #PAGE_SIZE9 p% ]( z& V3 i
  1978. Get_Page_Index_Calc_End: J3 @  T/ N* ~* W
  1979. STA <Data_Buf  ^( V$ {- t2 \( ?
  1980. Get_Page_Index_Cnt
    0 n2 H# t$ ?- e8 {4 e! o0 V4 k
  1981. LDA #PAGE_SIZE
    3 Z8 N! ^9 U7 E( u. n5 Y
  1982. STA Data_Cnt
    # `# Q& A4 C. S5 U8 O& I4 H

  1983. $ j' I3 S" I! o4 `
  1984. LDA <Data_Buf
    0 _. m3 a+ @0 y8 ]3 l
  1985. CLC
    & s" N1 C) K$ K' d" b
  1986. ADC #PAGE_SIZE+ S5 V0 {' S: r
  1987. CMP #ITEM_MAX_SIZE
    7 \' T  r1 K1 Y/ o6 ]
  1988. BCC Get_Page_Index_Cnt_End
    ' _5 H  W- h/ v2 a1 P3 c! n

  1989. - H  {5 U" C# t# z* k8 ]
  1990. LDA #ITEM_MAX_SIZE
    2 P- {6 Y4 p/ Q4 u. q
  1991. SEC7 S, t1 F" [* Z  f
  1992. SBC <Data_Buf
    0 s3 r: p7 u8 }6 ?6 U
  1993. STA <Data_Cnt
    / h. B) X, b/ O0 f% X0 L  _6 U% v7 G
  1994. ( ]9 |6 [7 ?8 l
  1995. Get_Page_Index_Cnt_End
    ! o6 k+ A' M0 q! ]( b# [. @* y' U
  1996. RTS
    % }! g  c9 y( I( L; d

  1997. + K$ l4 r6 Y4 N. b9 Y
  1998. ;==================================================
    5 n1 F" G' C- ^
  1999. Get_Last_Page_Start_Index
    + E/ [! [+ t7 m- T  F9 W' c' h
  2000. LDA <Music_Item_Last3 g# X( x1 Y7 x/ d% U- p( {8 k
  2001. JSR Get_Page_Start_Index
    ; D& W0 H7 l" N
  2002. LDA Data_Buf8 J3 S/ ], Q. V* h/ V9 L
  2003. STA Page_Last
    * N1 t, e  b/ l% d4 A
  2004. STA Page_Last_Index( Z+ L. o; ~  z1 T# \2 L
  2005. LDA Data_Cnt& K- c! R# P2 R- j5 N" f, B3 b
  2006. STA Page_Last_Cnt5 V! Y* `0 z" a  [- \
  2007. RTS
    ! z# d+ a. E, j5 l* {* }, N+ a
  2008. - U+ g# B  N  a
  2009. ;==================================================
    . {& [  J* G1 J7 F) O7 A3 w
  2010. Get_Cur_Page_Start_Index) Y; s' ?, g  K" V& @
  2011. LDA <Music_Item_Cur5 r2 b% |: M( O! }8 X$ Q
  2012. JSR Get_Page_Start_Index
    8 \7 B$ M9 Y  L- G4 W8 C0 g0 e
  2013. LDA Data_Buf3 y8 [9 L, r. K
  2014. STA Page_Cur
    ) v+ V: c5 X% x, M: M: u
  2015. STA Page_Cur_Index
    , j- D4 A. `, t' A
  2016. LDA Data_Cnt
    3 q$ i  y' Y# E/ b2 n4 p, h* y& _
  2017. STA Page_Cur_Cnt
    ) [+ B  A! b) u
  2018. RTS
    + ?0 V2 u# W4 E$ t0 S

  2019. - K" [! v& Z( E+ u+ X
  2020. ;==================================================+ ^: _' V4 }7 a5 m  I% Q/ v9 o
  2021. Show_Page_Text;显示页文本6 R, I$ A, @& [- p+ D3 ~
  2022. LDA <Text_Disable_Flag
    9 F: x# X$ f" i6 v* R
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM) j/ N+ D6 S! E9 h! w8 v
  2024. STA <Text_Disable_Flag& [* _: K. L9 G- j( c+ w. ]
  2025. " `! `$ P! j; _$ \
  2026. JSR Get_Last_Page_Start_Index/ i( w- o: Q6 \4 V; N
  2027. JSR Get_Cur_Page_Start_Index
    - i$ C* k( {7 @) c* X

  2028. & [  S- h) q7 _/ [1 \
  2029. Show_Page_Text_Set
    & {; [& H' I! ]( r. d( @' E) j

  2030. ' A2 `4 o( t. ~0 T" Y
  2031. Clear_Page_Last_Item;清理上一页  s: j8 a9 c3 K2 C
  2032. LDA Page_Last_Cnt
    & E, I. S* c. H. P# a( L; Q$ w
  2033. BEQ Clear_Page_Last_Item_End
    ! G" D) E6 W+ L
  2034. JSR Clear_Item_Text$ h* c, a6 _0 Z
  2035. INC Page_Last
    / q0 r, x/ E9 }% `& G. J7 ?
  2036. DEC Page_Last_Cnt, B7 C3 L3 W6 x% h/ L
  2037. Clear_Page_Last_Item_End
    - |/ k& D; h) V
  2038. ( r7 p( n1 c1 T2 U6 \2 R9 V
  2039. Show_Page_Cur_Item;显示当前页
    ' \8 ~% `+ s0 w( {' F- v0 f- A
  2040. LDA Page_Cur_Cnt' G3 V* I$ D# i/ R  W3 d  l, C
  2041. BEQ Show_Page_Cur_Item_End
    ' Y7 f+ Z* \5 j0 ?! \- P
  2042. JSR Show_Item_Text
    + m, {6 ^8 p: K7 j! B
  2043. INC Page_Cur/ u9 w1 U5 Q- N( n, \+ ?
  2044. DEC Page_Cur_Cnt3 `3 B" I* A# W9 ^3 f
  2045. Show_Page_Cur_Item_End
    : Z4 s. [3 d+ k' Z& W" f" c
  2046. ! M/ \5 M3 ?1 E" k% J
  2047. INC <Time_Wait_Cnt
    6 N% n8 W" A6 w1 J+ W: G/ o& J
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作. D3 r5 a# R8 W/ a
  2049. LDA <Time_Wait_Cnt
    , f; E3 @& w" B1 u4 l& p0 ^
  2050. BNE Show_Page_Text_Set_Wait
    0 [0 l1 @* d% _  T9 x6 y

  2051. ; E! m, L4 D0 T5 }9 _
  2052. LDA Page_Last_Cnt: Y" O, q. r4 v5 V* k! Z" p- Q) p
  2053. ORA Page_Cur_Cnt
    ) d$ V6 o; L6 n' o/ d, f6 W
  2054. BNE Show_Page_Text_Set
    5 Y4 {7 o  E! A! P" \3 `
  2055. LDA <Text_Disable_Flag4 e) P- i) r9 y7 U7 A
  2056. AND #TEXT_DISABLE_ITEM ^ $FF  {1 r3 j7 {$ M
  2057. STA <Text_Disable_Flag( w5 E1 J) K9 e  }. r
  2058. RTS
    4 l- l9 u* Q3 n  y' L5 T4 y
  2059. ! F4 _$ V5 K3 ]/ h- c
  2060. ;==================================================( G6 Y; s8 H! c- Y; D, D
  2061. Last_Item;上一项
    7 X$ Q6 P1 x4 c) ~
  2062. JSR Clear_Last_Track_Name
    ' d4 w: J# K+ Z+ |( P
  2063. JSR Disable_Text_Draw
    6 B3 V# f% ~0 t1 b0 E

  2064. # S7 H  V0 u# y/ D, N
  2065. LDA <Music_Item_Cur+ n. K! K( r0 P7 }
  2066. STA <Music_Item_Last
    ; n( ^2 m) O" j+ [3 v0 O5 E
  2067. $ ]4 {  Z  x. B/ d
  2068. JSR Get_Last_Page_Start_Index' F" _" w/ m. K

  2069. 3 O1 @# e* Y, B1 N
  2070. LDA #$009 Y: q" }3 i5 r
  2071. STA Data_Buf/ [8 W* P5 g) i& r1 O& r; V3 s
  2072. 9 F1 ], K* h9 q; u
  2073. LDA <Page_Last& l7 x6 [  x  S# U
  2074. CMP <Music_Item_Cur8 H$ R% U; v9 H
  2075. BNE Last_Item_Begin
    - @; }' F4 g! j

  2076. ' z0 H' R8 H1 ^1 O
  2077. LDA #$015 m0 ]4 y" Z2 r. z! r
  2078. STA Data_Buf
    8 T1 |; E% s# z' Y* y' h
  2079. Last_Item_Begin/ L+ x" f$ N3 _. Y! G" @% R
  2080. LDA <Music_Item_Cur3 a3 k8 f# \; }6 b3 s# R: Q
  2081. BNE Last_Item_Set, w( ]6 q9 ?. |: r! O
  2082. LDA #ITEM_MAX_INDEX + 18 D4 S) U7 r3 z9 ^, L& |
  2083. STA <Music_Item_Cur
    ) I6 X9 O, `: B2 D% t8 H

  2084. 1 i# w1 C% I' [  E$ B% a
  2085. Last_Item_Set8 f. C: k: ^3 I) l+ ~2 V+ d
  2086. DEC <Music_Item_Cur% `( x+ U1 W, k. w3 S, ~
  2087. LDA <Music_Item_Cur9 g  q  i' e! K. Q# a
  2088. JSR Reset_Current_Music
    8 G3 ?! u/ F! T: R6 [' ~

  2089. 3 N) W2 @4 u; u, j- c1 H0 P4 F$ F
  2090. Last_Item_Play
    8 d' N7 ~! e# D5 V% Z; z5 U: u
  2091. LDA Data_Buf
    / j3 E. r; V- x8 y
  2092. BEQ Last_Item_End
    7 }. n( Z# X+ ?! x7 ~) V7 V* r
  2093. JSR Show_Page_Text
    ) A  w( D8 \: n  I7 U; T: U
  2094. Last_Item_End( e$ f9 b5 Q* v) }. H+ D
  2095. RTS1 ^1 H  m, Q3 X2 D9 m: _
  2096. ; P3 W+ M# A6 N) E$ J
  2097. ;==================================================
    7 \6 C' R; V" l9 K7 w/ y9 ^
  2098. Next_Item;下一项' l/ s2 s% C/ v8 B1 T2 j" u
  2099. JSR Clear_Last_Track_Name
    ) `) i% L+ @; t9 h# W
  2100. JSR Disable_Text_Draw. ~" U. T* O6 _! R9 u& U2 ?+ E9 p, w
  2101.   b* Z5 {8 a( e4 F* K- Z
  2102. LDA <Music_Item_Cur; `  H9 ]$ O, B* W9 A/ I# d
  2103. STA <Music_Item_Last7 `6 D5 W  e- [' B- P9 Z

  2104. / |; i2 P* b4 t) |* f2 u
  2105. JSR Get_Last_Page_Start_Index1 w% N- H+ Z" H0 c, M1 ?0 o
  2106. : [! I% q* L8 b+ ~: ^( l
  2107. LDA #$00$ e  A) E$ p. h1 G! f6 o( ^+ W
  2108. STA Data_Buf7 j/ E( h' a/ `( m1 V; ]

  2109.   X, x- a' y4 F( }, D" a8 t% b
  2110. LDA <Page_Last0 I; t3 \- T% h& D0 [3 X1 e
  2111. CLC' Z& ^5 M$ v1 l& M# v) }$ g5 g, o7 \
  2112. ADC <Page_Last_Cnt
    : A% y* Z1 f2 d5 J, C# R
  2113. SEC: F3 }. t) Z$ U
  2114. SBC #$01
    + m5 O$ v7 S+ t  s  t( V9 r
  2115. CMP <Music_Item_Cur
      o/ d. w' k, U; E  Y% g: m
  2116. BNE Next_Item_Begin/ @: d1 x7 I2 n9 H, e, Q0 i

  2117. 0 O( o! q( R* g4 g2 s* T. \: n
  2118. LDA #$01
    9 J/ C' k* r$ H$ _5 g
  2119. STA Data_Buf1 q1 y& _/ q0 I: s" G
  2120. Next_Item_Begin- G- l  w+ d: D5 F$ W
  2121. LDA <Music_Item_Cur
    # l& n0 u$ D# x. r! H! A4 f
  2122. CMP #ITEM_MAX_INDEX
    3 ~, M: c( }1 z  E0 d9 j
  2123. BCC Next_Item_Set4 K% P+ P4 @1 X/ C8 W" K1 H
  2124. LDA #$FF
    4 A; g& @' c6 k
  2125. STA <Music_Item_Cur8 G. ^6 h5 H6 q) A  ~6 Q8 m
  2126. Next_Item_Set
    / m1 p$ v! j( U! ~- i. q4 Y
  2127. INC <Music_Item_Cur
    % _# D$ E) Y- b  x- ]( t/ }- K4 B1 ?
  2128. LDA <Music_Item_Cur
    # q( U+ y' Z. \7 G/ D
  2129. LDA <Music_Item_Cur
    : ]/ v, u; M0 c5 j# J" S
  2130. JSR Reset_Current_Music
    0 C6 ?& X+ I) r1 P
  2131. Next_Item_Play: [. X. a  `# \/ z- j+ c
  2132. LDA Data_Buf
    + q3 h1 A0 e( Q
  2133. BEQ Next_Item_End
    0 q, X9 V' d6 @/ C4 B$ M; C  Q
  2134. JSR Show_Page_Text
    7 d7 o% T! C+ z) t9 y& u
  2135. Next_Item_End
    6 ^9 _6 L9 z9 L" q, f
  2136. RTS
    0 |9 z: Y8 x: v' I* ?+ e3 m6 c

  2137. 2 h( l) R# Y9 D0 ]
  2138. ;==================================================" z6 q  |# B1 h+ |7 ^# ^* O
  2139. Last_Page;上一页
    ' |' J6 F# {: i# `+ [3 B
  2140. RTS
    ( N. }! ?+ I9 {8 h
  2141. , L! c. n( ]3 ~; ^, R- `
  2142. ;==================================================: [2 g, }8 c% H; a# a: }) E6 D  z
  2143. Next_Page;下一页2 i. e, e8 I7 n. }: g' y  `  ?  F6 j4 @
  2144. LDA #PAGE_MAX_INDEX' q8 n. M. n+ b. n
  2145. CMP #$01
    & E% }/ ~& N5 s- |6 e9 s
  2146. BEQ Next_Page_End
    8 B$ D1 }7 Y. x+ P
  2147. 5 _6 b4 R8 K( O+ @
  2148. LDA <Music_Item_Cur9 y) E4 }2 s& m+ n+ A
  2149. STA <Music_Item_Last
    % `7 S. p; U4 ^# B3 W% d
  2150. * [, s7 @* R% X9 E
  2151. JSR Get_Last_Page_Start_Index
    % ^; I* q( `9 Y+ Q! w- X* u

  2152.   I, [& w1 t0 [* f; A/ b
  2153. LDA <Page_Last_Index" v! e5 ?. b# u0 f
  2154. CMP #PAGE_MAX_INDEX# v7 }( \3 a$ t$ {: D
  2155. BCS Next_Page_In_End_Page
    ' T5 o1 k6 h( M) W' n: R6 g
  2156. . z; v. R  Q2 K- W( z
  2157. Next_Page_Not_End_Page;不是在最后一页
    * N6 g; _2 o) }8 V. N
  2158. LDA <Music_Item_Cur
    : E7 c+ f1 Q0 I
  2159. CLC# e+ S# w4 G9 u( \6 C, P
  2160. ADC #PAGE_SIZE9 t7 o9 W* d- u% D, N
  2161. CMP #ITEM_MAX_SIZE
    , ]% D* F+ I2 L1 _
  2162. BCC Next_Page_Not_End_Page_Less# V, G# r; B/ T+ U5 J
  2163. LDA <Music_Item_Cur
    4 r; [! _; f& b/ S% o& t
  2164. SEC3 H9 D  H5 W( ^1 M. R2 n- t' X' h
  2165. SBC <Page_Last_Index
    " c  c* x0 |5 j% Y$ P4 x7 y
  2166. CLC& F1 N9 o9 }2 P  d( a0 W9 {9 f
  2167. ADC #PAGE_MAX_INDEX* M0 v- U- l) ~% u# A
  2168. CMP #ITEM_MAX_SIZE) H6 y) L8 ?# g8 S, d- T' `
  2169. BCC Next_Page_Not_End_Page_Less
    ! `( B9 y+ r- ^
  2170. LDA #ITEM_MAX_INDEX5 \; u' H1 U( j6 F. R7 `- F2 F
  2171. Next_Page_Not_End_Page_Less9 i1 z- t8 _0 y: G& f
  2172. STA <Music_Item_Cur7 c% j" k0 i. B# A5 j
  2173. JMP Next_Page_Reset
    * G" U. c$ ]' ^  R! H# Z# w' _

  2174. - w) s. Z3 R  h( H
  2175. Next_Page_In_End_Page;在最后一页7 ~, ?, i8 K/ m, u( s& p! y
  2176. LDA <Music_Item_Cur6 X; d4 a3 E9 l. |8 O; s# m+ j4 O
  2177. SEC! I  m1 T9 ]$ D3 V. K
  2178. SBC <Page_Last_Index) ?0 N: l$ n1 J) P( Q
  2179. STA <Music_Item_Cur
    - @5 x9 ^2 o- h" G1 |" K) ?
  2180. 3 U5 K! ~' _: N: ]0 G  M+ P. s
  2181. Next_Page_Reset4 L! j; t! F$ ^0 \+ T8 T; k, |; x
  2182. LDA <Music_Item_Cur
    2 {& o. D6 W, h' G+ Y/ y
  2183. JSR Reset_Current_Music# Z8 s; U; m! K% Y3 r. z
  2184. JSR Show_Page_Text
    ! k0 T% C6 s3 s8 r, f
  2185. Next_Page_End) m" F+ }* `9 {1 Z
  2186. RTS& Q  U! o! b, u7 x, y2 ^
  2187. 9 H3 e4 j& `, J0 k( r
  2188. ;==================================================
    $ j2 W) e* H2 B' V! c  O
  2189. Disable_Text_Draw;禁用音乐条刷新7 M2 h' L5 R: e( H  e/ |
  2190. LDA <Text_Disable_Flag! J7 x* X+ z0 }7 z# a2 ]8 q3 N$ [
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    " D. M1 {2 Z/ o. p8 o, w4 m
  2192. STA <Text_Disable_Flag
    ) [8 x3 q$ T6 p8 {
  2193. RTS
    3 s) |# ~( w: I7 D+ X
  2194. 7 }4 u8 c/ W! E, G
  2195. ;==================================================. \, \+ H, b2 V
  2196. Clear_Last_Track_Name;清除上次曲目名
    + m- X) P0 R# n% {" `  x
  2197. LDX <Music_Item_Cur
      W8 K+ O4 P" N4 m
  2198. LDA <Music_Cur,X- a" P2 R3 g9 {4 H7 U
  2199. .IF Track_Name_Pos
    7 g. c( a  t9 }  J9 {; M
  2200. JSR Clear_Track_Info+ D% z5 `: r, {7 n4 m+ ~1 c
  2201. .ENDIF
    , {: \3 v5 o, A  y) W6 V4 u
  2202. RTS
    ! H( z+ o8 D/ y$ b

  2203. - ]' v1 L1 {( L! M) o
  2204. ;==================================================
    4 L1 }7 n/ M  y, l+ d
  2205. Reset_Current_Music;重设当前曲目% n7 x( W: u7 k& \$ A, j* o$ O

  2206. * x' M! |5 r; I9 w  x
  2207. ;写入当前总曲目) w! o4 a( Z$ }, w* m8 k
  2208. JSR Set_Sound_Total
    # S, w& [6 ~# b2 [: z4 @9 _
  2209. LDX <Music_Item_Cur
    ( K% g" i- S- ]# S0 h- K6 ?
  2210. " \( d' U4 U3 I. N" B
  2211. LDA #$00
    6 V/ d/ q# B( T
  2212. STA <Music_Last
    5 O7 q6 i3 j* e3 ^) e

  2213. 4 M& Y, m$ i' B
  2214. JSR Sound_Reset_Proc5 d5 o) b. w& T6 t# ^  ~. `
  2215. JSR Music_Show: o( p3 l$ H& D7 M6 M/ ^$ ?
  2216. RTS
    ) P. y; O7 y, x

  2217. + q# R% d- V5 [
  2218. ;==================================================! N0 T/ D& m3 D1 c; I
  2219. Music_Song_Stop;音乐停止6 {* f+ C- G0 `' S$ V
  2220. LDA #$01* x) c' f' }2 r9 \& h6 G" i
  2221. STA <Music_Stop_State
    : s4 {6 T7 K1 ^, g# N: k# J
  2222. JSR Music_Bar_ReSet7 ~: |! b0 l; j  \
  2223. JSR Time_ReSet& ?; G' K% R  u) q7 d/ o$ g
  2224. JSR Sound_Data_Clear
    : c. A+ V9 p6 g; V; ^6 x1 O& X) A
  2225. JSR Music_State_Show$ R- T9 k# M3 L, e- ?
  2226. RTS
    : k# B" H- _! ], o: `9 J
  2227. + n7 ^% Y- i3 C+ ]
  2228. ;==================================================0 K9 a& E9 g* ]8 i
  2229. Music_Song_Play;音乐播放
    , Y0 L+ i/ N6 q( b: e. X- K
  2230. LDA #$006 i8 M8 n0 L# W) d
  2231. STA <Music_Stop_State
    " k# k3 M* x, K' r% U% F
  2232. LDX <Music_Item_Cur
    0 H) `. g/ I) @1 w% Y$ _: u/ j* N5 G/ M
  2233. LDA <Music_Cur,X
    1 P9 A/ i5 b: w' {) t
  2234. JSR Sound_Init_Proc
    " E: T% V$ K& H& N5 w
  2235. RTS: W3 M( l- p' K
  2236. 8 O) |' s* _. Y; r
  2237. ;==================================================
    " E' ^' n/ i! O# g8 y6 `
  2238. Music_Song_Last_10;上10曲. j! Y1 E" `+ u% W# X) A
  2239. JSR Clear_Last_Track_Name
    ) B; \& s( W1 N6 }, S4 m, p/ I% \
  2240. JSR Disable_Text_Draw
    6 ~; a8 C8 u5 @) |; w9 O; \
  2241. LDX <Music_Item_Cur9 q: e( T! b" ^; J
  2242. JSR Set_Sound_Total- |0 f8 A( W+ i+ n
  2243. LDA <Music_Cur,X
    ; n+ z6 E7 A$ C8 s
  2244. SEC
    ! X8 ~: g0 a3 s
  2245. SBC #101 N( M" E1 N/ J# {% e
  2246. BCS Music_Song_Last_10_Set
    ) \( J$ w' p3 B" V7 a* J
  2247. LDA #$00/ N" \, v9 S6 W) p) y. _* {
  2248. Music_Song_Last_10_Set9 s  n/ c& h6 n4 _
  2249. STA <Music_Cur,X6 p& j7 M. o2 v) J
  2250. JSR Sound_Reset_Proc
    " Q8 X( Y* Z0 ?
  2251. JSR Music_Show
    # ^; g7 P  E) V( e8 ?+ [1 S
  2252. Music_Song_Last_10_End2 _* D' \3 M' P/ _6 Y: X2 O
  2253. RTS
      o# V4 N, X. N9 ]# R) U( t2 t

  2254. 1 J3 f6 z' C5 N4 J5 _
  2255. ;==================================================+ z7 r" R# }% ]  m& |2 Q
  2256. Music_Song_Next_10;下10曲
    5 Q4 Y6 u5 }' H8 F8 q
  2257. JSR Clear_Last_Track_Name
    5 W' `  z  s( g0 z0 H" B+ k. ^
  2258. JSR Disable_Text_Draw
    7 \" X% d. L) w* E6 k; @
  2259. LDX <Music_Item_Cur
    3 S" P5 w$ _; Y! M( E
  2260. JSR Set_Sound_Total3 u5 p' o2 O" q
  2261. LDA <Music_Cur,X
    2 M: x0 r' g. w5 J  [2 O' G
  2262. CLC4 C( _! X+ i1 i1 x1 O& B
  2263. ADC #108 L$ I# V8 k8 o8 K6 F. a9 }
  2264. CMP Music_Total
    ' M0 n  S# j) @( {# G2 g# L
  2265. BCC Music_Song_Next_10_Set3 ]$ d, ~( M( B* c& H
  2266. LDA Music_Total8 P$ R4 @) h, F, I% b
  2267. Music_Song_Next_10_Set
    & l4 ?$ E" R: L! @/ |' m# G
  2268. STA <Music_Cur,X( N7 \* ?' v# t8 t/ p
  2269. JSR Sound_Reset_Proc
    4 v& b4 ]9 J; x/ w$ z2 V
  2270. JSR Music_Show
    ; p. M2 X) U* ]% x  P/ X! |( v
  2271. Music_Song_Next_10_End
    # N; @0 `. _& k$ Z
  2272. RTS% D9 b8 j" R; Y# _8 F. F1 a
  2273. ! l6 {, G% H) X  O4 A; H/ Z
  2274. ;==================================================2 F% D  h* P2 s) G! \
  2275. Music_Song_Last;上一曲
    6 v! ?  D4 o! J# [2 B+ W
  2276. JSR Clear_Last_Track_Name/ a. r' y* G# o; j2 @2 M% w9 o# E, O
  2277. JSR Disable_Text_Draw
      E: z0 c! \3 X* I  @* f
  2278. LDX <Music_Item_Cur! `; B- e' G- C' ^7 d
  2279. JSR Set_Sound_Total
    2 _: \8 v" J( }6 Z
  2280. LDA <Music_Cur,X" ^3 y# E. [& z9 v! ]( @( C& Z( j! G
  2281. BEQ Music_Song_Last_Set
    3 F' T. ~" R& V9 ^
  2282. DEC <Music_Cur,X, w3 y; x7 x2 ^2 m- H! J) @1 c3 E
  2283. Music_Song_Last_Set
    - Z/ M3 B2 G) P% h2 ~+ F
  2284. JSR Sound_Reset_Proc
    1 p9 i( n. O, }6 w1 d
  2285. JSR Music_Show
    , \5 B7 V. q* ]
  2286. Music_Song_Last_End
    : B- t- k% k+ h, U3 P- Q
  2287. RTS5 o( s2 ?3 V( p9 V3 Y. A
  2288.   d' v! c  p+ q* {
  2289. ;==================================================
    3 M7 H+ G0 P% E1 i
  2290. Music_Song_Next;下一曲
      S- ?/ d( `2 U- }1 ?# f
  2291. JSR Clear_Last_Track_Name; q4 s2 L- D; W+ S2 w5 C
  2292. JSR Disable_Text_Draw) x7 j: p- ]: V, k- r# X
  2293. LDX <Music_Item_Cur
    1 b9 J: Z# h% h3 i
  2294. JSR Set_Sound_Total7 }& k9 |, Q$ u4 F# p1 l
  2295. LDA <Music_Cur,X
    4 N% W- q; o1 c5 c9 \) B
  2296. CMP Music_Total2 |& C9 ^" z& n# O" b" `
  2297. BCS Music_Song_Next_Set
    ( Q, B1 r& E" a5 L8 I; c: Q6 a5 q  \
  2298. INC <Music_Cur,X/ S- J& E# N1 ~3 [5 ^# \7 ?
  2299. Music_Song_Next_Set
    , X% G" u3 F) ?" J
  2300. JSR Sound_Reset_Proc
    3 ~5 r# ]' l" D% J+ x% L1 K
  2301. JSR Music_Show0 }4 m/ i* B: [) D8 |
  2302. Music_Song_Next_End4 D+ \2 S5 C: P  S
  2303. RTS" {3 k- \" m+ f" L

  2304. 8 z; m: U' Y! C0 v7 l# |
  2305. ;==================================================; l0 X1 @+ V# E! W" i* h1 M
  2306. Change_Select_Item;改变当前选择项3 Q3 z! d# |" ?4 G
  2307. ;--------------------------------------------------% y3 o* b1 L* ~
  2308. Change_Select_Stop_Play_Item;停止/播放' e- s2 q. c. S* y3 e( X
  2309. LDA <Key_Once
    & j. f$ i  W8 _0 B
  2310. CMP #$10* d; f& C: O5 \1 E! X
  2311. BNE Change_Select_Last_Item
    7 P5 r4 I7 q9 {( _) {# g. p. [1 n" I
  2312. LDA <Music_Stop_State1 ]. I3 p( D3 p9 t* O
  2313. BNE Change_Select_Play
    ; r" T  C/ p& p4 G- H
  2314. JSR Music_Song_Stop9 C3 ?+ l7 L8 x& b; i
  2315. LDA <Music_Stop_State' u6 s" N4 Y  {* g( g0 c- ^; H
  2316. RTS  O1 d& g, N5 k% f( P6 l
  2317. % M8 s9 K: ^+ ^* U: F9 K' B
  2318. Change_Select_Play4 Y! p1 [0 }5 i  ^) A
  2319. JSR Music_Song_Play
    % }; Z( E- g- ~" {% k
  2320. RTS4 R, u3 o/ p& Z. V' x
  2321. , u8 G' x( X5 u
  2322. ;--------------------------------------------------6 _. e; B/ C6 E- Q2 v
  2323. Change_Select_Last_Item;上一个专辑9 k# U6 B" J" s
  2324. LDA <Text_Disable_Flag
    ) e: j6 `4 r. G2 E
  2325. AND #TEXT_DISABLE_ITEM
    , f' n0 z% O5 f" u) V0 k, f
  2326. BNE Change_Select_Item_End0 Y' ?& Y1 \9 A; L( t' J. ~) b& e
  2327. LDA <Key_Once2 t6 g" s0 E$ q7 b0 i
  2328. CMP #$08
    $ ]6 m, L/ {8 V( L9 h
  2329. BNE Change_Select_Next_Item( A  p, y) Y: S- O
  2330. JSR Last_Item% j/ @  t- N- I; t) \3 h
  2331. ;--------------------------------------------------4 {6 S" Y5 [6 @6 e# y6 P
  2332. Change_Select_Next_Item;下一个专辑' w1 [3 c) h* @/ z$ l: k
  2333. LDA <Key_Once' R- j5 A$ U0 Y. G; U
  2334. CMP #$04
    8 m: }) b% C6 F
  2335. BNE Change_Select_Last_10
    2 {6 L! |8 U1 o$ t
  2336. JSR Next_Item; _. \  C+ Y3 f0 N  t+ {
  2337. LDA <Music_Item_Cur) y  R9 J3 ^1 U2 h9 {2 }1 |$ a' G
  2338. JSR Get_Page_Start_Index
    7 j7 [) E3 ?2 ?5 v5 @# F" k3 k# \# L0 L
  2339. ;--------------------------------------------------7 D! Y% B0 h' N+ g9 c- }" l% ]% F
  2340. Change_Select_Last_10;前10曲
    4 T7 G7 d8 z9 B4 L
  2341. LDA <Key_Once
    3 F. m( c3 V4 l" k( s3 E0 u
  2342. CMP #$40  L7 A) A, s; U1 a! p( |
  2343. BNE Change_Select_Next_10# }+ c6 B1 }. f3 U
  2344. JSR Music_Song_Last_10# y. z3 ^! q4 g- v7 P. |
  2345. ;--------------------------------------------------' I& ^* H6 b8 G  d& }
  2346. Change_Select_Next_10;后10曲
    3 N% Q# G( i& J$ o9 N, w% e
  2347. LDA <Key_Once
    & O+ j7 ~. i8 y& _; m6 ]* y
  2348. CMP #$80
    / {  G. X& ~/ C, u; h0 \
  2349. BNE Change_Select_Last3 \# w6 h( H) s. F
  2350. JSR Music_Song_Next_10
    8 P. Q. e4 w9 o" C4 Q
  2351. ;--------------------------------------------------  @  d8 J" ~$ ?& d' s3 a! p. J/ U
  2352. Change_Select_Last;上一曲
    % \$ S1 P/ b: o6 u' P
  2353. LDA <Key_Once
    9 M' c' z4 e' n3 d6 Z
  2354. CMP #$02" b4 S" Z2 P9 ~/ a7 U3 {
  2355. BNE Change_Select_Next1 Q! ~) j8 {1 g/ k
  2356. JSR Music_Song_Last
    1 }3 i- O! J9 N4 R6 c+ f: F( |
  2357. ;--------------------------------------------------
    # M" A1 F# O0 Y/ D
  2358. Change_Select_Next;下一曲
    0 M' G5 y# m3 N4 ]9 D
  2359. LDA <Key_Once
    & {- F6 m( L6 a1 C
  2360. CMP #$01
    % ?0 G) C% J, l: s/ G  Z9 B+ Z
  2361. BNE Change_Page_Next
    ' z/ [% R! L* Q
  2362. JSR Music_Song_Next" M0 M' q. [- [/ m
  2363. ;--------------------------------------------------8 S( d" u2 T% E# F' _3 [
  2364. Change_Page_Next;下一页' Q# ^  A4 c% R$ t- I$ x! D
  2365. LDA <Key_Once
    2 w  p/ b8 P/ N/ j) ?5 K$ C
  2366. CMP #$206 r  @; `6 _: E- ]" G
  2367. BNE Change_Select_Item_End
    - f+ D' |! N5 K# h
  2368. JSR Next_Page
    5 H! g( t7 f2 w* g' B: L- `6 Q# @/ Q
  2369. ;--------------------------------------------------" L$ s1 z9 e- A8 n& A7 e  q+ `
  2370. Change_Select_Item_End
    0 B. _) T0 i( d
  2371. RTS' U+ }" V0 }& a4 o2 D! C

  2372. 1 X/ `+ Z9 z, U8 P  ?
  2373. ;==================================================
    * W5 b7 \6 M( ~) b7 L" @, }
  2374. Show_Arrow;显示箭头光标
    : y. Y( g! q: G! ]8 {8 |2 e
  2375. LDA <Music_Item_Cur: B8 a( [1 Y6 W0 D$ Z' q
  2376. JSR Get_Page_Start_Index: s5 h# a, d6 `2 v$ K0 B
  2377. LDA #$00
    ' d4 `- e( o, r& c
  2378. STA PPU_OAM_ADDR
    - }) y* @2 y+ |; ?8 e& k
  2379. LDA <Music_Item_Cur+ v$ a% ], X) R. Q
  2380. SEC
    ! l' S; P+ C( |$ e) R& ^3 u% l
  2381. SBC <Data_Buf9 s" j9 E( Y6 J6 b- ]- m
  2382. ASL A
    ( _; [5 X5 s6 q9 ^' f2 `$ l7 H
  2383. ASL A
    & v0 O) G0 k( |: r! N
  2384. ASL A
    $ e7 x8 v! n3 l( j$ u; y
  2385. ASL A7 K  M( [# m2 Z& |& K, t  J
  2386. CLC
    0 ]6 @! G) g! }2 E+ k# I
  2387. ADC #ARROW_Y_OFFSET
    3 O, p4 G) t0 y) s
  2388. STA OAM_TEMP_ADDR + $00' h! q- @$ ]' Q
  2389. ;STA PPU_OAM_DATA- C$ O  A0 l; U, F
  2390. LDA #$1F! d; o7 e5 W) }# \( N! [' L, `1 w
  2391. STA OAM_TEMP_ADDR + $01/ m. E+ \4 U' f7 P* N
  2392. ;STA PPU_OAM_DATA
    0 N5 r0 z& n$ S9 |
  2393. LDA #$00
    6 j5 r" a( P# c' [
  2394. STA OAM_TEMP_ADDR + $02% \* B3 J. F9 G6 b, C
  2395. ;STA PPU_OAM_DATA
    * ^% {; s; K# D' _8 G
  2396. LDA #ARROW_X_OFFSET! h; `5 x* C7 y; `
  2397. STA OAM_TEMP_ADDR + $03) {6 M' Z0 n6 {1 }6 [
  2398. ;STA PPU_OAM_DATA
    4 g8 }- z: \7 a' V4 A$ f+ v
  2399. RTS* ~$ N' m5 Y1 Q7 G+ ^# `9 F% y

  2400. $ @, |1 u9 d+ F) U* {& E
  2401. ;--------------------------------------------------
    ! F9 W, U* S$ D% Y
  2402. ;命名表数据0 Z' R* e' ~/ Z. r% b1 W* h
  2403. Palette_Attributes
    % C( L+ [1 g! m; O# Z
  2404. .IF SOUND_BAR_SHOW_ENABLE, Q* [6 ^1 L, z- F6 J
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55: E" e& L9 ^6 X' d9 u' f' U
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ! s: g- R% M. L! k  Q
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    % C" y6 j, j1 _/ U* M' G* a) @3 R9 p
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
      m0 [$ \0 R( e) E: f7 ]
  2409. .ELSE1 ^- e$ j! v3 Q# l3 p( c: D
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55* O$ p  e$ Q' U1 r2 P
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55- I0 x0 C2 h* G. Z
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$759 n+ U9 n* W1 |. H1 Z5 z
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    8 O5 ~2 n0 q$ G$ C% O5 f1 C
  2414. .ENDIF; X  V  A4 @- C1 ^* P& h

  2415. 6 o$ T5 ]! a: e6 K1 H6 n
  2416. ;--------------------------------------------------# L0 E' \; l# m
  2417. ;调色板数据# C- j2 f4 u: {% a
  2418. Palette_Data
      R* }( O, e: [! {8 w( }+ I, c
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F7 Q$ Q5 r( d( ?
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F' l* F" u2 ]! U

  2421. - N" p. j$ X: [
  2422. ;--------------------------------------------------4 r) H9 a4 r7 `9 p
  2423. Static_Text_Data6 P2 c9 D: p9 E
  2424. .WORD Static_Text_Caption_Data9 U0 j1 O& u, ^
  2425. .WORD Static_Text_Author_Data1 q* l3 l" h3 s& |
  2426. .WORD Static_Text_Date_Data1 e* [" b; ^5 `# K: @% P7 A
  2427. Static_Text_Data_End- d+ A3 W& Y3 e2 r
  2428. 5 C  M' O, \, R1 z. b) b! P
  2429. ;--------------------------------------------------$ L7 y. L8 ^) P% j4 Y
  2430. Static_Text_Pos
    - Z+ R' ?! v0 n* M5 T+ _- O( y3 `
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    6 P" F. \: i3 E9 C9 y! H/ N
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)! ]& h5 r# z4 t/ T( Z9 P" o) w
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)" [: v2 O' h- u, i. _! G
  2434. Static_Text_Pos_End
    ; E/ p1 u5 B; O+ a4 I' i% Y' m( u

  2435. * v, [9 B5 P. e( R; Q# H1 ?/ l
  2436. ;--------------------------------------------------. G: B. H3 A9 _; ?
  2437. Music_State_Stop
    . }2 ~% Z' S% ~% F1 t: _1 e
  2438. .IF SOUND_BAR_SHOW_ENABLE9 W7 r  c* [( H, }6 @
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00+ F$ o4 g" p% X2 o0 a$ z3 q
  2440. ELSE
    ( i6 P: ]) }- H5 u" O- W1 e: b3 J
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00% G, K0 d/ P. g! ]: I" K3 k# C/ |4 h; [
  2442. .ENDIF
    - R1 n0 z9 A. F& e( Q8 X
  2443. Music_State_Play
    6 F, D7 O! |+ ]
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00+ x9 _/ H9 ]0 ?
  2445. ) s( L1 X# p+ S, E+ Y$ J4 r! f5 f- q
  2446. ;--------------------------------------------------
    6 ?0 t0 r5 [% w3 y
  2447. Sound_Bar_Text_Data;声音类型文本( I# e# h* ]/ N8 l' u
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    " |+ A: _% I( H0 f
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"! \* y8 ^( @9 V# d5 }& n. S
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"/ Z- E) `5 n/ ?& x" ]4 f
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    / g) Z9 [6 X& K' r' C, R' v
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    / t# q- u9 \3 ^3 v8 y1 q0 r7 U# `. I5 r

  2453.   `! z+ f1 D4 F* v3 e% V
  2454. .IF Track_Name_Pos
    & [% M& h0 p% C$ i) P& D

  2455. # Q1 f% @$ U. X: H' [, s
  2456. ;--------------------------------------------------9 A' L. }6 g7 {; ]
  2457. Track_Name_Addr_00;曲目名地址索引! M0 n: l" C1 K- c9 g6 U* O: U" F  \
  2458. .WORD Trackr_00_01
    0 F# G* @* B0 ~3 ~1 H9 U! \5 ]

  2459. ( i, J$ o- ~2 D, u, Q
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    ' c7 U% g0 H; n$ c: @
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"5 V7 M0 ]) [) i8 G! u: ^
  2462. # r# a$ v- R! p6 p( @
  2463. ;--------------------------------------------------' S; r6 f3 p; L, ~# L1 r0 J
  2464. Track_Name_Addr_01;曲目名地址索引
    3 i; ^; W/ u3 \' _4 H# r0 B1 G
  2465. .WORD Trackr_01_014 S$ [5 ]$ U: i2 [

  2466. 3 B6 g) ~& p3 w+ v
  2467. ;==================================================+ Z1 G8 T1 M$ L# r
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    9 u" N' n- d! B- ^9 s) p+ w
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"& y% R7 ~9 W) t9 O- T

  2470. ) f2 _+ Z# q* l6 z2 X7 M% `
  2471. ;==================================================- h3 f5 Y+ ]& ^
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    : a6 ]: ^% s# v5 [) Z
  2473. .WORD Track_Name_Addr_00  e  W& t; o' Z# k2 \: ]% x
  2474. .WORD Track_Name_Addr_01) q- T5 I# E1 ~6 M" u. |
  2475. .WORD Track_Name_Addr_018 C7 ^' t5 `3 J3 G2 h+ A+ O

  2476. ; P: h  r* }. R+ r1 A
  2477. .ENDIF
    7 l* H) A# u) X( X( v- [

  2478. 9 L" A# ~4 z+ `
  2479. ;--------------------------------------------------4 U, p/ _2 e" r9 i
  2480. Static_Text_Caption_Data;静态文本数据
    % K' p) W% d  ~6 [3 H; q
  2481. .DB 16$ E: H6 s! @# z, Y  H$ u
  2482. .DB "FC MUSIC 12 IN 1"
    9 _, y0 F* V0 m$ k
  2483. Static_Text_Author_Data
    9 S5 {+ g* E- F: h, i' x+ |! \
  2484. .DB 257 ^9 ~8 \6 i/ [7 m
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    4 H3 f2 ?6 J$ Y; f
  2486. Static_Text_Date_Data
    * `6 [$ Z; L7 Y' e
  2487. .DB 10" J3 ?# n8 n% E+ ~
  2488. .DB "2023.07.23"
    & ~* c* ]/ w: v# C4 x  d

  2489. 3 g  `# O$ o4 d. H
  2490. ;==================================================' q  C+ s8 M, X0 ^: N* h$ M
  2491. Music_Collection_Name               ;专辑名间接索引, V6 o% [" M. k
  2492. .DW Music_Collection_Name_00! ?& C4 t9 {& D+ }) l0 h
  2493. .DW Music_Collection_Name_011 s  T. J1 e6 ?* J
  2494. .DW Music_Collection_Name_02
    6 O+ w6 [3 r6 R& c
  2495. .DW Music_Collection_Name_03
    0 @% {' C4 M& c, D  ?. K- r
  2496. .DW Music_Collection_Name_04
      _' f  t- n/ w
  2497. .DW Music_Collection_Name_05# W6 e: H; v/ P) Y
  2498. .DW Music_Collection_Name_06
    ; q. @9 u+ {' S/ W3 L
  2499. .DW Music_Collection_Name_070 H) W" W. V1 N/ _1 B9 ^* I1 g
  2500. .DW Music_Collection_Name_08+ q( t' n5 N& V
  2501. .DW Music_Collection_Name_09
    3 M6 a2 T! [/ L& `+ c0 y2 b
  2502. .DW Music_Collection_Name_10
    ' |( m4 g% ^: Y3 D0 K
  2503. .DW Music_Collection_Name_11
    " ^2 z; D  E- |7 T. o0 a0 r
  2504. 9 |0 f8 X0 G$ H6 ~, Y
  2505. ;==================================================  M4 X  _- ^5 T
  2506. Music_Collection_Name_00            ;专辑名文本数据9 F( y% G7 }2 B- m' g' u
  2507. .DB 11,"1.RAF WORLD"
    , h& O/ R# ?9 [3 F7 e
  2508. Music_Collection_Name_018 n* I9 p. R6 V' v
  2509. .DB 15,"2.FINAL MISSION"# K0 M; r2 @6 S3 n: u7 t* j
  2510. Music_Collection_Name_02
    % s. S& G7 q8 m2 L
  2511. .DB 06,"3.KAGE"/ U# E- I3 Q. S" i5 G7 Z
  2512. Music_Collection_Name_03
    ' R0 K$ Q0 I& _9 N  C7 _
  2513. .DB 16,"4.DOUBLE DRAGON"
    4 f$ u1 c. k) M
  2514. Music_Collection_Name_04+ O" R0 p  ~! {9 L2 T# i
  2515. .DB 17,"5.DOUBLE DRAGON 2"7 U" Z: s2 G; T! ]/ P, K
  2516. Music_Collection_Name_05
    8 u* |$ ]  c: X
  2517. .DB 17,"6.DOUBLE DRAGON 3". B: J; r- g) F2 M% ^* Y2 X3 [
  2518. Music_Collection_Name_06
    ( I3 T# z0 ?- e3 ^! Z7 g
  2519. .DB 09,"7.ROCKMAN"
      J5 Z, o# j5 h, C+ r2 C
  2520. Music_Collection_Name_07+ O( e7 l; f/ B0 J* q
  2521. .DB 12,"8.ROCKMAN 2"
    , v! l% c( [- w4 S0 o: z8 }
  2522. Music_Collection_Name_08
    4 A3 a4 J% p, F& p: O( K
  2523. .DB 12,"9.ROCKMAN 3"
    8 N0 j4 ?: a* W1 v& j
  2524. Music_Collection_Name_09
    7 ]7 \6 r( p( m! y. M+ D; R
  2525. .DB 12,"10.ROCKMAN 4"" n2 ]+ `& S$ c8 I% _! r% h* a: S
  2526. Music_Collection_Name_10* B8 [/ Y7 W$ E3 N
  2527. .DB 12,"11.ROCKMAN 5"" Z6 x- E2 g# U$ u5 r( T) _
  2528. Music_Collection_Name_11
    9 I0 u$ H) }" z) t9 ]" A! S* I
  2529. .DB 12,"12.ROCKMAN 6"
    8 Q1 {% q2 }' d

  2530. ( l7 ~5 Q$ w( t) N+ t0 U- v
  2531. ;==================================================3 A3 n; w8 b- u6 E8 Y' \8 x
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    1 F$ o" H3 L2 w
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    ( ^* k9 {" c4 A# l, k8 p$ z" }; N; q

  2534. , m- L1 A8 t1 ~$ s  K  x
  2535. ;==================================================
    7 p# O! G' Q- p$ F0 y' G
  2536. Item_Pos_Data                         ;光标箭头位置! v" ]2 x3 R  |
  2537. .WORD ITEM_SHOW_POS
    & Y$ |& z2 w* j4 F2 @# f7 V8 l
  2538. .WORD ITEM_SHOW_POS + $0040
    : \) d& P. S; ^& c
  2539. .WORD ITEM_SHOW_POS + $00807 y, m# O$ x+ _0 O1 C9 F- f' S1 t
  2540. .WORD ITEM_SHOW_POS + $00C0- l6 J2 n7 _9 X" g- C8 K6 K7 k: C6 j
  2541. .WORD ITEM_SHOW_POS + $01007 |4 f2 d8 P# Y+ r  u: Z
  2542. .WORD ITEM_SHOW_POS + $0140
    + B- a8 ]" t/ d( D% v( \# K
  2543. + S5 x/ ~3 n" C# Q
  2544. ;==================================================  w+ @9 c3 c7 K+ v: L
  2545. Sound_Init_Port                 ;音乐初始化入口地址& M$ |2 p/ A% @) }. A% B
  2546. .DW $BFC8
      @) u1 J( X+ f( }
  2547. .DW $D7F0
    6 L1 h& L" m4 q
  2548. .DW $9FC09 G* A+ R# f3 ~, G8 E4 g, A
  2549. .DW $BF70
    7 |3 ?0 Z- W) \
  2550. .DW $8003
    3 U0 ^4 x% i8 x9 K( J; {
  2551. .DW $BF30
    , u$ t% r( d# Z9 A2 |/ O6 L7 u1 {
  2552. .DW $9003" F6 Z, O  M; L0 A: A! k4 D" h
  2553. .DW $80039 D5 h5 d- |% x6 H0 D, h
  2554. .DW $8003
    0 X! c$ H! V; e+ D
  2555. .DW $8003
    * l4 Z( C, }! f9 C- V# s8 ~* b; f
  2556. .DW $8003: \% V6 {$ n% q+ }
  2557. .DW $8003, c5 ?+ ?/ V+ l, {# v$ t& p$ t$ I

  2558. ' W) Q% ?3 _. k. h# y) }
  2559. ;==================================================2 u$ t6 W) v: R2 `# j9 O
  2560. Sound_Play_Port                   ;音乐播放入口地址
    ) ?, L! A. M2 x4 X0 S5 ~7 k
  2561. .DW $8000
    - x% i& O7 v# D$ t3 L% _  e: Y; x
  2562. .DW $80018 a* @1 X* P0 a0 d7 n/ F( I
  2563. .DW $A000
    # X6 X6 F  i( m
  2564. .DW $8003
    . b: E( O5 f8 Y
  2565. .DW $8000
    7 L% r# b) N: L4 K) x  b
  2566. .DW $8003+ [, C0 `3 e8 w9 Y/ ?
  2567. .DW $90002 e: o8 g: a. c2 p
  2568. .DW $8000
    3 h% y6 Z, z% O+ z: Z% k, ~
  2569. .DW $8000
    8 V3 J4 b" w8 N- L& C
  2570. .DW $8000
    4 U( Y; M7 n- E: n
  2571. .DW $8000
    ' u7 m' \# I! U/ G! l- V% X* f
  2572. .DW $80000 ]# g, G: p* r% R1 o9 q

  2573. * B# w  m3 v# H( v
  2574. ;==================================================
    % i: X3 m' |* }! Y' Q' j+ `
  2575. Sound_Reset_Port                  ;音乐重置入口地址2 j! A9 Y- e& N- ^  H
  2576. .DW $0000* }$ [/ b7 D  g+ Z, U2 d
  2577. .DW $0000
    . E( d- h8 f) B: [# q( m
  2578. .DW $0000
    : v9 }, }" F# @. g( C
  2579. .DW $0000
    4 B3 d0 A) A, Y. \
  2580. .DW $0000/ W- T1 L) ^! h" q$ i  e5 o9 y- b
  2581. .DW $0000
    0 F/ J$ R  u6 g: U% L
  2582. .DW $0000  A) s8 ^9 ?6 K& f8 D
  2583. .DW $0000
    6 l2 e  S3 C( t7 a5 @9 O% w
  2584. .DW $0000
    6 _8 W& c2 h( `: L- {! |
  2585. .DW $00002 i- J9 ?. V# y5 J, q
  2586. .DW $0000
    6 f& ?# ^2 C3 k
  2587. .DW $0000
    ! K7 X6 k6 `3 z

  2588. # D7 [0 |, g0 r, a! C+ j& G+ [
  2589. ;==================================================
    2 O  R, ^- p" g% t( E# N+ Y) d
  2590. Sound_Total_Port                          ;曲目总数
    6 P1 [( D( q- }9 i. I9 u! U# e' j9 H
  2591. .DB 38
    ; v+ {1 z" l1 L8 Q2 _) ~" G" H
  2592. .DB 33
    $ b, _; F1 `; X. q( {% s% @
  2593. .DB 49! h! Q- n7 j/ Q, b' P( ^' o
  2594. .DB 41* v0 V0 g: n: b# w
  2595. .DB 83
      r+ ?  X% ~7 b9 S
  2596. .DB 70
    ; P! o2 ?8 }& m; [1 E+ e
  2597. .DB 50" H7 q% T6 c$ D( d3 q3 K6 u
  2598. .DB 67$ v' k) D5 S* j; x- ~+ I7 L. h
  2599. .DB 570 R# u0 Z" c# b4 F6 C, _# J
  2600. .DB 71
    % p2 \( K* D% E( F& Q# v  m
  2601. .DB 768 |: }% I  _# a: v
  2602. .DB 102/ K+ y5 ^+ h# K4 z1 y8 j

  2603. # e8 L3 q$ L4 L- l
  2604. ;==================================================
    ' ?: p% W$ i9 D; ], y8 a
  2605. Sound_Start_Port                      ;起始播放曲目0 D/ M, T: `. [4 H2 A, Q5 T) V; B
  2606. .DB 005 G( ~! F- D1 |5 e6 d2 h! [! \2 }
  2607. .DB 00
    % \9 n$ f* k7 Z# y! I) R) p. z
  2608. .DB 00
    : K9 }; o$ x! g' h
  2609. .DB 00
    . z& `# K+ V! V+ K0 W& i
  2610. .DB 00
    ' r" w- ~3 D/ I
  2611. .DB 008 [# c- ?1 [  ], C
  2612. .DB 00
    2 X; r' M' |% g% X
  2613. .DB 001 w. j, |  S& `- t$ f
  2614. .DB 00
    5 n2 A: i$ `# q; d1 R( d
  2615. .DB 00
    / ~! n, @/ }8 f
  2616. .DB 00
    . l) \7 Z7 c( p/ p% H. C5 q- I
  2617. .DB 00
    5 t; I. \+ c' W; h  ^4 w

  2618. . H5 @- [6 y. A: M1 S" Y
  2619. ;==================================================
    $ x+ d- E4 d- w3 o0 B, C
  2620. Sound_Bank_8000                      ;专辑bank_8000
    % U8 i( M( V! b
  2621. .DB $10  g1 S0 C3 d3 P
  2622. .DB $12
    8 T7 i: ]8 u. y  f0 p
  2623. .DB $14/ V: E: F/ O( {- }6 R: L: t3 U+ c
  2624. .DB $16
    0 ^; o& z6 N: t7 _, ?
  2625. .DB $18( v4 `2 a! c. j) c
  2626. .DB $1A  W; e, H1 g9 [, G
  2627. ) q) f. n  I" Z/ Y( @
  2628. .DB $00
    5 `' ?3 R6 v6 W; M' k4 N; c
  2629. .DB $02  s; U. i5 z/ j$ \5 L/ n- o
  2630. .DB $0D' F0 h% |4 J; i' a+ T" G' L" z
  2631. .DB $04
    & @2 d8 [- n' h! w3 c
  2632. .DB $07! y- d1 K. b6 X3 N; i2 L' j8 L
  2633. .DB $0A  ?, d/ D3 v( m
  2634. 1 Q7 N* F6 {& ^6 Z2 O) r! k3 X

  2635. 2 k* {- Q3 r; W8 O$ }1 p, `& ]
  2636. ;==================================================
    5 s3 k3 q( g9 Y7 a4 M6 ~5 m
  2637. Sound_Bank_A000                      ;专辑bank_A000
    ! B+ M) G( o7 l* w6 @' A$ d
  2638. .DB $11
    . e2 O; j5 P- _$ [; [
  2639. .DB $13
      R3 J- U" N' I0 ~. L
  2640. .DB $15
      n% O$ `% l. L# Z! [5 X
  2641. .DB $17
    5 W9 t: X( n0 g' z5 b6 o1 _7 @
  2642. .DB $19; \% C0 ]% P5 A3 z6 d- p! _, x
  2643. .DB $1B& Z" \3 z7 r6 I

  2644. 2 T! J6 X. I* m  _% r
  2645. .DB $013 f0 r5 w6 N; t0 |( K( ~7 D/ Z
  2646. .DB $03$ n) G2 K1 ~: {4 c/ \; Y7 n
  2647. .DB $0E9 Z$ G/ i9 Q" G3 p2 n4 A4 X4 e1 H
  2648. .DB $05
    + l! c7 a* I2 }
  2649. .DB $08
    , F9 W" C% J# ^* h- {% m0 R
  2650. .DB $0B
    # K9 N  S' U2 U

  2651. * {* I3 c, K) B7 {9 a5 x* }- t
  2652. + e& j. T& l/ ?& b
  2653. ;==================================================7 r, [5 @' i; [+ ^
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    , a9 z" H' K1 j# C
  2655. .ORG RESET_ADDR' r! L9 h" O+ G. V

  2656. # Z7 w9 m  a! ?6 S3 Q( N, z
  2657. ;==================================================
      a6 F6 l! k9 W1 @
  2658. Switch_Bank_8000;切换bank到8000-9FFF: ?# x; ^! R; @; L7 v
  2659. PHA
    , R9 q: x6 g3 `% W- X
  2660. LDA #$06! y; R" o3 q+ i
  2661. STA MMC3_BANK_CTRL
    4 Y* y% L$ f" z8 g3 ?. v
  2662. PLA
    8 [  B3 Q& _. c! o' B
  2663. STA MMC3_BANK_DATA
    . H5 b- I' S7 T' G& }/ D
  2664. RTS& C" n* Z( ~" D! p) Y+ ^1 z

  2665. 9 _5 d9 k8 i, P. D
  2666. ;==================================================
    7 a4 j0 A* l" o* _
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    + ^. R0 \/ \& Z  {5 ^. d
  2668. PHA
    ! j) k) R4 h; b3 F
  2669. LDA #$07
    5 p, w, ^$ ?0 Z: v' B; e9 L4 W' L: Q
  2670. STA MMC3_BANK_CTRL& j3 l4 h1 v( w* v. L5 y  H% P
  2671. PLA4 }; u5 J3 {$ ?9 g/ }) {
  2672. STA MMC3_BANK_DATA
    - t% _, \% y& h0 j* P
  2673. RTS
    . z3 d1 p" L! e/ h

  2674. 8 }! m5 T( Y: s2 s" n; q$ M
  2675. ;==================================================- U9 C; l! j7 s! U. X/ e! Q
  2676. Switch_Main_Bank;切到主程序bank
    * k' r9 t& @. m# Y: U) n8 h/ I) b: W
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    7 q; T- x2 g% K( v
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank8 l. I4 t: b) t5 o6 I* k
  2679. RTS6 @) R* ]" ]- g( W' h2 z; p
  2680. " v+ J# Y9 b( ~# E
  2681. ;==================================================
    7 U6 R" |, l4 \3 j  T- J/ C
  2682. Sound_Reset;音乐重设(如果有的话)
    ( w9 m  m; B6 ?" \. q% e
  2683. JSR Switch_Music_Bank  ;切换到音乐bank3 ]- g; |5 ]) N+ H1 }
  2684. JSR JSR_Addr_Op        ;执行音乐重置+ g' V! W4 e& W7 ~- v; E9 `/ u
  2685. JSR Switch_Main_Bank   ;切回主程序
    - Q# |/ c7 e+ m
  2686. RTS8 o/ U* @& A5 g3 ]+ H

  2687. ) [$ i  N: S: g5 o7 ~
  2688. ;==================================================
    , X! m0 @, r# b" u
  2689. Switch_Music_Bank;切换音乐bank: W1 D; r* y, t, P7 b
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号- U3 E: j- F/ l: r8 R
  2691. LDA <Music_Bank_80001 J, c. v% k' F1 M/ m/ e- b
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    4 K8 e' e2 o6 i, {' t8 |. ^
  2693. LDA <Music_Bank_A000% |. k- Z' q+ C7 R) B7 u. W  Z
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank6 G" K; |% G$ s# b
  2695. RTS
    9 U) l, @, I: ?7 {: \

  2696. 8 y1 A% H! C( R
  2697. ;==================================================2 H% V0 m$ V. G* T- S
  2698. Sound_Init;音乐初始化
    0 ?: k8 k4 g" S4 P7 B( O
  2699. PHA; a$ R$ ~3 ^# U
  2700. JSR Switch_Music_Bank  ;切换到音乐bank+ p# K9 m, a5 e# E8 ?
  2701. PLA4 T. `; M7 A! M/ k) E
  2702. JSR JSR_Addr_Op        ;执行音乐初始化& w( |/ [1 B4 B+ U9 B0 O
  2703. JSR Switch_Main_Bank   ;切回主程序
    9 o. f. }& f! a7 d# y8 L$ I
  2704. RTS
    . n6 R; o; Y, R4 M$ B- e) _

  2705. ' p+ `: T1 _( O2 x% m
  2706. ;==================================================9 [0 i6 t* x0 J' V/ d1 |$ x
  2707. Sound_Play;音乐播放, f) I, H! L, O- s& ]. r: W/ C
  2708. JSR Switch_Music_Bank  ;切换到音乐bank1 p  x, X7 d9 o& Y4 R' k
  2709. JSR JSR_Addr_Op        ;执行音乐播放/ a/ @/ H3 \+ C" X) j$ |3 f
  2710. JSR Switch_Main_Bank   ;切回主程序% J+ G4 t6 e. m+ h8 B3 C9 m  X
  2711. RTS
    1 c/ x- \. g# ^
  2712. ) T  N- f3 T$ k6 i5 K
  2713. ;==================================================$ a% m5 @/ y0 G; t: L* O* M. z) f
  2714. MainLoop;死循环
    7 O! }! v- p8 I3 J. R
  2715. JMP MainLoop5 h& _0 }# A+ {% f
  2716. 6 O# b: }! M9 h4 z
  2717. IRQ_SUBPROCESS_JMP = 0, ?  z1 s2 ]0 B% |

  2718.   g* r/ H( H0 `6 G$ a
  2719. .IF IRQ_SUBPROCESS_JMP
    ; h; t; ?+ w( }% ]8 J/ f
  2720. ;==================================================" K* O4 M* M+ o) d+ e
  2721. IRQ_Process_0;IRQ处理过程0
    $ C1 |9 T/ a4 [7 O: o3 u5 F" c

  2722. , v1 I; H# T$ i$ ?4 D
  2723. ;15条扫描线后触发IRQ
      F0 P1 q% x9 R. Q
  2724. LDA #15
    ; a5 I: ~& k; S1 p
  2725. STA MMC3_IRQ_LATCH
    5 n' }5 }% }) {: F

  2726. 5 L, g: R9 a8 n0 d6 G1 a+ T! w
  2727. ;设置屏幕滚动/ n4 \& Z" Y$ X# `7 W
  2728. LDA <Scroll_H
    7 d+ k1 e1 o/ l4 a! r0 p
  2729. STA PPU_SCROLL
    0 K# ?. `$ [, y0 T' ~, a4 ~
  2730. STA PPU_SCROLL
    / X; W& c& D3 r. Q6 N4 N- v
  2731. ; N3 k) w- ^  |7 J
  2732. IRQ_Process_0_End. z5 M: D- `1 e! H& y3 n; @4 Y
  2733. INC <IRQ_Process_Index
    ; n3 c' H* U% ?* e" T9 w  k
  2734. JMP IrqProgramEnd/ f% M7 o0 i, a, ~

  2735. 8 C9 u2 F* q- }" h, A7 ^/ C+ W
  2736. ;==================================================
    , ~% }  w8 I, \( d( n5 c# ~
  2737. IRQ_Process_1;IRQ处理过程10 N. D: e  {2 {4 d: W; X" R

  2738. 7 w3 E) j2 Y7 K) h3 v
  2739. LDA #55- f9 f2 ~0 j/ M4 L& T5 h; `0 y
  2740. STA MMC3_IRQ_LATCH( \' v% \# E5 @, B. T1 Q
  2741. / S& s, o) {' D: R+ f
  2742. ;设置屏幕滚动
    ! R2 H2 X$ Z* [  [3 u2 z
  2743. LDA #$00
    4 v, H' ]. N9 i
  2744. STA PPU_SCROLL; Y1 p0 W! K' S
  2745. STA PPU_SCROLL
    3 {$ Y: F$ Y* A0 i' y
  2746. ; c' Y$ ], o' T0 ]
  2747. INC <IRQ_Process_Index
    / `8 o8 ~  {' B5 P" [; R: ?
  2748. JMP IrqProgramEnd
    " s4 I4 q. {6 n. }, C  t
  2749. ' C5 G; Q" v1 G" Y) [
  2750. ;==================================================8 c: B; J4 B' W0 d
  2751. IRQ_Process_2;IRQ处理过程2
    $ Z$ t+ S( a% U% ~/ D6 [# L8 U

  2752. $ J0 z8 o# V9 A" B" P1 O/ k7 r
  2753. LDA #15
    + ^. p3 S5 D5 L. V
  2754. STA MMC3_IRQ_LATCH
    : k" D3 e( N' d  ?- |3 C- B

  2755. 9 Z% F0 [% B: C1 V% [7 C
  2756. ;设置屏幕滚动
    % N( H: i" |0 q
  2757. LDA #$00
    " G. i0 w" `6 S: Y
  2758. SEC
    ) x: g1 {8 P  P0 `, G
  2759. SBC <Scroll_H% b0 `( m2 e1 g
  2760. STA PPU_SCROLL
    ) `% t0 z) w( c4 j; O" g# K
  2761. STA PPU_SCROLL; [+ F. y' A: u
  2762. 2 A8 ?7 u2 J5 W/ K
  2763. INC <IRQ_Process_Index
    7 j  d4 A  G, K, x2 w6 `3 Q. o6 [/ _
  2764. JMP IrqProgramEnd
    3 L2 E4 ^- G+ S( k- s
  2765. / P0 s! q5 ~8 z
  2766. ;==================================================
    4 x/ x/ T+ X+ V  `% X1 {) Z
  2767. IRQ_Process_3;IRQ处理过程32 h0 l5 h. m- E7 K% q
  2768. 4 w' h4 g+ y) I% G
  2769. ;设置屏幕滚动
    ; ]- k# Y- b$ s5 G8 o+ g& T+ y
  2770. LDA <Scroll_H
    3 B$ h7 [" v0 D1 x
  2771. STA PPU_SCROLL* p/ X5 |6 f9 I  d1 Z
  2772. STA PPU_SCROLL5 p8 S6 B. a7 Z3 o4 z. d

  2773. 0 h. R. ?+ t6 T0 k
  2774. ;禁用IRQ
    ; o) ^6 s$ s9 n( i' l/ D" w
  2775. STA MMC3_IRQ_DISABLE$ l$ h0 T: _' E% d' d( J
  2776. JMP IrqProgramEnd$ C& G  I$ v. F! y6 ~0 [
  2777. 8 A! Y9 y+ g0 p  v+ j
  2778. IrqProcessAddr
    ; e4 \, G; v2 i  B& k& @
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    ' ~" o# S& ?  U6 Q$ Y1 W
  2780. 6 s) Q0 _& ~  o/ d* W1 N
  2781. .ENDIF7 |, X7 q8 v. R4 F* t0 h
  2782. * j2 y2 G' {1 ^
  2783. ;==================================================
    / B6 F  R  j5 d  m/ Q/ _4 K; C
  2784. ;IRQ滚动模式常量8 u% Z+ \+ Y) F9 l9 i! {6 A; f
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    ; W6 q9 b8 E2 q7 f
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    1 m/ z" [) f' _0 C. w: x( X  x
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动) y0 f- u; I  [* O8 j

  2788. 1 K% I8 b8 g1 a7 V! S
  2789. ;IRQ扫描线数据
    9 P8 Q! k7 p3 ~0 ^, z5 w
  2790. IRQ_Scanline_Data
    % l+ {# M. F3 p7 q) [( I. Q' c; j' `
  2791. .DB 8
    - ~4 K% j1 G7 h/ Z4 X
  2792. .DB 54
      u8 V/ Q7 G* }5 U3 n
  2793. .DB 82 U$ }' H, f7 M) x7 ~
  2794. .DB 00 ;关闭IRQ, O, o3 B: V7 R' g/ @

  2795. 8 b: |4 E0 s$ F9 B! ^6 Q
  2796. ;IRQ滚动控制模式
    % c% O+ c' U& R# `
  2797. IRQ_Scanline_Mode
    9 T. K) l" z; }8 i* F: S# O$ n
  2798. .DB IRQ_SCROLL_MODE_ZERO
    3 o- U& l# m( v% S  p4 s
  2799. .DB IRQ_SCROLL_MODE_ZERO! K4 @* G! W" W, i
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    , a% ~5 z7 a# s
  2801. .DB IRQ_SCROLL_MODE_LEFT
    ! E7 \4 o, L7 F! u5 E$ \/ J
  2802. , l8 ~% R$ f4 M/ b
  2803. ;==================================================
    5 i0 ?) C. ^" B/ V  `0 {& I
  2804. ;IRQ处理& U: \" a4 ~( |5 k, d8 w
  2805. IRQ_Process
    1 o% d  S- c' z
  2806. LDX <IRQ_Process_Index
    + H9 D( w& B3 q' J; H% k6 o2 T2 L
  2807. LDA IRQ_Scanline_Data,X7 N! C! ]4 D! A" N% W' u. ?6 L( E
  2808. BNE IRQ_Process_Latch; B& Q3 t6 n% h2 h$ T  v& {
  2809. IRQ_Process_Disable;禁用IRQ+ r/ D4 N$ w/ M5 p
  2810. STA MMC3_IRQ_DISABLE
    3 H. l' p6 {! g# |) v  h0 K
  2811. STA IRQ_Process_Index- o. O& I2 S" T' H: U. `
  2812. BEQ IRQ_Process_Scroll: [+ C/ M& Y. j- E& C: D$ N/ ~
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线6 u1 ]1 S& i) ?& r
  2814. STA MMC3_IRQ_LATCH6 X) j; D1 Q0 }" [( Y
  2815. INC <IRQ_Process_Index
    9 W' P! ]( r* z( g4 Y1 `
  2816. IRQ_Process_Scroll;IRQ滚动控制0 E( m2 F" X% F  r8 U  S; L9 g
  2817. LDA IRQ_Scanline_Mode,X
    - v: h& E2 u# l3 |  g
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    2 u! z: Q4 D5 w; i+ z. [
  2819. BEQ IRQ_Process_Scroll_Left. J: x$ u- Y; J7 n' h
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    ' p' U; x& F0 }9 v  b
  2821. BEQ IRQ_Process_Scroll_Right1 e! |* ?5 c4 }% e
  2822. IRQ_Process_Scroll_Zero;不滚动
    5 ~. i& [# K2 m8 u* P, Q* @
  2823. LDA #$00
    ' ]7 L4 v6 C. `6 o0 o' f( C
  2824. STA PPU_SCROLL4 M/ q; n2 ~3 ~# `' o0 D
  2825. STA PPU_SCROLL" n* b$ @( e+ S6 y' K* ~) ^9 A; _
  2826. RTS
    0 t7 {4 j2 w1 a# ~. c
  2827. IRQ_Process_Scroll_Left;向左滚动
    + `9 C: t4 \( a" Z. t
  2828. LDA <Scroll_H# n. b2 Z- e& v+ N& C3 P
  2829. STA PPU_SCROLL# Y7 [+ |# b( C" c
  2830. STA PPU_SCROLL0 Z6 |( X) y5 V; t  I; ~2 s
  2831. RTS8 S# H5 U: z& W( l+ I) d8 r
  2832. IRQ_Process_Scroll_Right;向右滚动
    7 H8 F" i, x! S
  2833. LDA #$008 W$ P; f* a% |9 L4 Z
  2834. SEC
    6 M+ ~; d$ Q6 x  l& {! b6 v2 P
  2835. SBC <Scroll_H7 s& R& [  p8 m+ _" G/ L0 E6 Z
  2836. STA PPU_SCROLL
    - t! q' y: }& W4 A0 {7 l* f
  2837. STA PPU_SCROLL; C; t  _+ t, R8 w/ C. e" V
  2838. RTS
    2 l* E: H( [- x& q( C( t7 f
  2839. & m8 f( t& L' c
  2840. ;==================================================
    ) ?$ Z; j2 ]) U1 {- L
  2841. NmiProgram;Nmi中断处理7 ~0 p8 F- C2 |) U8 c+ t1 `
  2842. PHA
    & w1 X4 l$ r) h( @" q
  2843. TXA* ^6 r3 \# e# x2 b+ N
  2844. PHA$ B9 N' n% @1 _  N; ]4 y
  2845. TYA& M" E. {+ C' A, L2 ^( b
  2846. PHA2 O  x8 a7 Y4 |# s" S5 G0 a. `

  2847. " Q& z8 Y( u& L6 O" o
  2848. ;读取清除Vblank标志, 防止重复进入
    * q% y! w$ n* w: G
  2849. BIT PPU_STATUS& }! W# Z6 m  ]% f5 Y, U
  2850. ; N; g5 D# @8 X
  2851. ;切换主程序bank2 Q3 F  R) @: C5 i0 ]
  2852. JSR Switch_Main_Bank
    - B3 m7 h$ B, {% o

  2853. & M3 r6 Y! Y( ^: G
  2854. ;Nmi处理
      O" w, e. V! U# Z9 x9 x
  2855. JSR NmiProcess( n& O# C; B9 x  C, L$ b

  2856. 1 t+ ^8 C8 B4 C7 O6 m# n9 ?2 p
  2857. Nmi_Proc_End1 A+ i- |$ _7 [
  2858. PLA
    " g+ u* n& W3 u, b7 E2 Q/ N. u5 q
  2859. TAY
    5 M4 Q& \; K6 Z) z
  2860. PLA7 I, `2 R: I; @* }& i4 w
  2861. TAX* \) u4 w0 `+ Z( o, y& M; B5 i
  2862. PLA
    7 \- o. `  z! c( C! Z
  2863. RTI
    ( K3 G: \6 {# g+ L5 ~

  2864. & @* @3 ~( z0 f$ A5 f
  2865. ;==================================================
    : c. K5 K5 V, c4 G
  2866. ResetProgram;重置中断处理
    - I. Q% I0 i6 s' F& o9 Z# O0 y% o4 o
  2867. SEI" W4 W+ V2 c( A+ L5 T9 @: b% F; h/ e
  2868. CLD/ G+ @; F4 c0 C7 G; Z+ t
  2869. LDA #$00" R; O! v& I7 j7 j) B" a
  2870. STA PPU_CTRL- I" i' {/ U3 S/ z; {. o" e
  2871. STA PPU_MASK1 y, h4 V& j( g. U6 M

  2872. 5 U' B! D; U5 ^( T3 e% n& j
  2873. ;切换主程序bank
    ; B; @, t* H' T: s
  2874. JSR Switch_Main_Bank" S: V3 d# Y/ n
  2875. 0 h" Q/ p& s3 ?# x
  2876. ;程序处理开始
    + I+ r8 R0 i! A% E, ~$ ^
  2877. JMP ProgramBegin5 |$ t0 d& K6 N: g  b5 P- g- m* \

  2878. ! r  S1 F5 l* N8 Z; r
  2879. ;==================================================. t0 {) o6 R' M5 [, I
  2880. IrqProgram;Irq中断处理
    7 u# V1 j7 N7 C. q% b
  2881. PHA: `4 z" V. Z! l5 Z5 M) t0 B  @
  2882. TXA
    ( Z1 b( `+ e" g& Z9 p
  2883. PHA
    ' q5 P  H1 u" ^7 q, x  X  c& G
  2884. TYA
    2 M1 H# z4 d% k6 _, y
  2885. PHA. @% ]4 @. t7 C9 a
  2886. ' G6 D/ ^" _* K/ m4 a8 {. @. b
  2887. ;关闭IRQ- p1 J' e+ a* N% K* r8 }% J
  2888. STA MMC3_IRQ_DISABLE
    4 P' E, |1 w- C$ T+ {
  2889. ; {; b7 O9 C4 I. k
  2890. ;允许下个IRQ触发
    5 S$ ?  l: c/ N) v
  2891. STA MMC3_IRQ_ENABLE: v+ M# t# ?" j, T1 o- v6 ]
  2892. ! `  ?: }2 E/ ?+ z3 b9 l
  2893. .IF IRQ_SUBPROCESS_JMP6 x3 b3 \9 w7 S- `2 ?
  2894. * j/ w0 c1 P. r. U$ `% ?2 w
  2895. ;执行IRQ过程# Y9 c6 d5 ^9 o  j( `
  2896. LDA <Data_L
    + D- ?! t6 k: k% |
  2897. PHA
    7 f" o4 R$ h7 E- i
  2898. LDA <Data_H* ]; @8 U/ i" {
  2899. PHA  ]3 I# w4 p2 p$ o( v2 V! V' A1 H
  2900. LDA <IRQ_Process_Index, d0 J( N; B5 x9 h
  2901. ASL A+ v' O' K0 U5 q7 x% T" y- B
  2902. TAY3 a6 L4 Z' @; x) p# n
  2903. LDA IrqProcessAddr,Y: u$ i' F. r& |0 y
  2904. STA <Data_L
    ) K1 y' F; e1 t+ A+ Q
  2905. INY- R3 K9 Y+ O8 t' f
  2906. LDA IrqProcessAddr,Y/ Z0 w, F, p: _9 l% v% k' M" d- R. \
  2907. STA <Data_H
    ; I9 S. f$ n! c) T  y( h9 }
  2908. JMP [Data_L]
    5 F- L' s5 H3 M: y5 v

  2909. : H: j% }4 n; H1 W1 Q* c6 ~$ N* e
  2910. .ELSE- ?+ d$ s/ h5 q  F0 [

  2911. $ l4 ~! G& I% ]: I% W* u
  2912. JSR IRQ_Process( g; r3 ^7 f2 N+ j- z8 E, H

  2913. & D* e: F+ G1 ]3 @- ^3 a3 L( Z
  2914. .ENDIF
    5 k& S, \" _, y( A4 A
  2915. / U6 b; [- D& Q
  2916. IrqProgramEnd% d5 z( k) `9 v$ c* S
  2917. .IF IRQ_SUBPROCESS_JMP) D" _) a- P# \+ V/ B
  2918. PLA5 L' V: W# g1 H+ I% ]* H* [$ d
  2919. STA <Data_H9 F* {: J4 C, W' I) U! J
  2920. PLA
    9 C; J$ I$ S- q) Z# B/ @& |
  2921. STA <Data_L7 I$ X, L) D, O" z3 z+ Y4 E8 [
  2922. .ENDIF- k6 }: S3 h8 g! ~
  2923. PLA% N; F6 i' w5 X4 i; b. I* Z1 d1 A' N
  2924. TAY- O9 l' |& x0 J
  2925. PLA6 J0 n) z* @8 W7 s( O7 k8 A  Z2 T
  2926. TAX
    ' N- H/ R4 ^6 X  T+ I
  2927. PLA3 s. D- K% U* B
  2928. RTI8 w. O0 ?9 D: r0 {

  2929. % Y+ R- d# c% p- p+ W
  2930. .ORG $FFFA' n8 ?5 z( o5 @$ E* @
  2931. .WORD NmiProgram
    , L/ B6 q( j  ^% Z
  2932. .WORD ResetProgram
    ! G4 Y! q$ U3 H& c- U
  2933. .WORD IrqProgram7 P% A! o7 n0 B0 Y* }+ e

  2934. ) ]- I% a, x, u9 X5 U0 m- o
  2935. .BANK RESET_BANK & BANK_DATA_MASK5 ]- |) D3 B  k2 ]9 P2 K
  2936. .IF SOUND_BAR_SHOW_ENABLE
    5 j6 M3 v4 x- V1 a  N
  2937. % w9 T- g) Q, U( h7 o& \& e* G
  2938. .ORG $FE00& W3 O7 g+ D' n9 j9 o7 {& p) E
  2939. PHA( D8 q6 R0 x' P- \  k: @6 H% ~
  2940. STY $07BA
    3 E, d0 X1 d' @$ p. Y4 X
  2941. LDA #$8D# o* Q) m- m* A5 \- t
  2942. STA $07BC
    & |+ v* R7 B* S" B) z) }5 Q! B$ p$ E
  2943. TYA
    / T, C$ c4 _0 E0 K7 x: @
  2944. CLC+ G' @7 }5 W' i& e
  2945. ADC #LOW(Sound_Bar)# n/ n2 s8 G, K# d2 G& w( p& q9 s
  2946. STA $07BD
    / n8 W  l9 j& U8 _/ F2 Y6 b- E" c
  2947. LDA #HIGH(Sound_Bar)
    2 @7 Z" B( S0 g' R% s
  2948. STA $07BE$ L% U. f- \2 [
  2949. LDA #$60
    7 _  V- w9 v' ?) ]8 q
  2950. STA $07BF
    # `9 b/ q5 G. z) u' b
  2951. PLA/ L( A" [3 Z/ s% Z+ G0 q+ r
  2952. RTS5 h/ @7 k% D7 G' m2 ^+ \! ^

  2953. 1 \" `5 r% G: _
  2954. .ORG $FE206 z3 E9 t- C5 g4 M
  2955. STA $07BA
    8 p5 I* w3 T! W4 x% F: W
  2956. CLC: U. P, K% l0 O; `0 B
  2957. ADC #LOW(Sound_Bar)8 J: d; ]; h6 {
  2958. STA $07BD
    . T6 _0 i! }) P/ w# N
  2959. LDA #$8D
    ) ^" X) @- m; L% K
  2960. STA $07BC- @8 d) @- r) F2 |
  2961. LDA #HIGH(Sound_Bar)
    2 G9 k- D6 n; J
  2962. STA $07BE: |4 m# g' j) D: F1 \* t
  2963. LDA #$60# j3 X, _8 d/ _) J% r; y$ o8 l
  2964. STA $07BF/ y; q" G- @' y; Q( k6 V' j
  2965. RTS! u6 C) ^$ S9 k$ }: e; o7 Z; F& }
  2966.   F: u7 z4 k; [; C. K+ L: C  e* a
  2967. .ORG $FE40: e/ U3 i/ y7 I0 B
  2968. PHA. ]9 V) u9 x" {
  2969. STY $07F1
    1 @% Z7 U* Q4 ~/ Z1 V- w6 H
  2970. LDA #$8D, h4 {6 I/ s) W* d# A7 H) v3 D
  2971. STA $07F33 g2 x# @1 z' z6 g; ^
  2972. TYA; h0 V7 S. D2 S: I
  2973. CLC
    - t6 u/ q& t8 F% W0 S0 b; j
  2974. ADC #LOW(Sound_Bar)3 s, M7 e% }- I/ r
  2975. STA $07F4; e% ~5 [2 T% o1 {3 X! O
  2976. LDA #HIGH(Sound_Bar)
    * f" y; A* C9 _7 G; s/ C0 u
  2977. STA $07F5
    ' w& S1 }( L; ]* ]4 B
  2978. LDA #$60+ K8 @, q8 q" [0 y4 U
  2979. STA $07F6/ w" D1 S3 m* A8 e
  2980. PLA
    ( O* Z9 u) D7 S
  2981. RTS& v8 P9 @4 {+ m( F
  2982. & ]! T& H0 |" y+ E" K. X
  2983. .ORG $FE60
    4 [6 O: @$ E; A) p8 o# I8 ^% W
  2984. STA $07F1# D8 R7 y: k" q
  2985. CLC
    ' L( A( ], o; V2 f) n, o
  2986. ADC #LOW(Sound_Bar); S& T7 K$ F! @! S
  2987. STA $07F43 ]5 H' F. L( S: i# T
  2988. LDA #$8D
    ; J8 S) ?, p" b
  2989. STA $07F37 n  Y: P' G1 p/ m5 p
  2990. LDA #HIGH(Sound_Bar)8 F0 ^6 z) L$ C1 b2 {
  2991. STA $07F5
      I0 n6 w9 v3 V& X: y
  2992. LDA #$60
    ) I$ @/ P) s; d! e" p- ~
  2993. STA $07F6% ]6 _6 ^/ X& t5 q
  2994. RTS
    $ W6 `- P/ r" u& r, m( s: a

  2995. 4 `2 F! L9 Y5 q
  2996. .ORG $FF40: i3 Y1 O! P3 Q0 w! ?
  2997. STA $4000
    & ?& M! e& a! N- M
  2998. STA Sound_Bar + $00
    ' C7 ~7 w1 z% W1 T6 R7 H, X6 d
  2999. RTS9 e6 K+ d8 E$ d( c# X* ^
  3000. - `- e& a8 n4 l$ _
  3001. .ORG $FF48
    8 c% Z6 p; A: ~1 }' ]
  3002. STA $4004
    # I( u1 E3 W% P/ v2 a
  3003. STA Sound_Bar + $04% ^2 |4 W. C5 ^1 i( U$ G# |4 F
  3004. RTS# @$ H3 e. U/ l$ K& N# |, |
  3005. + G) Z; e# p, m" `1 _
  3006. .ORG $FF50- ~/ V2 U( q7 {% d
  3007. STA $4008- a) D1 a* q3 S$ a
  3008. STA Sound_Bar + $08
    " N9 J; K/ F- t# a" d6 J- x
  3009. RTS" B* M: P2 ?* ]+ l# S# _

  3010. 9 E/ n0 F9 N5 v8 L8 [
  3011. .ORG $FF58+ D6 f, I8 h! h  c4 |' Z: p
  3012. STA $400C- A- g. k5 f) f+ u- a$ u1 g
  3013. STA Sound_Bar + $0C
    / W" q9 I: ?9 Q) ]% o
  3014. RTS
    . V) c+ t4 ]* m- i9 k

  3015. % ], y* y/ L* b2 ?4 ]; w) s
  3016. .ORG $FF60
    1 z. p' S8 }: S0 [  F
  3017. STX $40003 g. E, a9 ?. d- u0 Y- e5 Y/ B
  3018. STX Sound_Bar + $00
    + S$ V! c2 i/ E4 w% E  E' ?* Q7 a
  3019. RTS6 n% R8 B  D$ m
  3020. 4 V8 n* y" v  T
  3021. .ORG $FF68
    ! Z6 B% F8 M9 x% A7 \
  3022. STX $4004
    " o9 E; Q4 m" z5 _% H9 C' p. m
  3023. STX Sound_Bar + $04
    ) q5 n/ v' l  P$ I" t8 b
  3024. RTS
    ' D( u2 c% e6 \9 a% d9 d

  3025. - {& C) i. L5 X: ~  d
  3026. .ORG $FF70
    : ]! y+ ?1 H) h. r3 ?
  3027. STX $4008
    # V6 c5 r# i# M8 O+ j4 R: n2 g6 [3 E
  3028. STX Sound_Bar + $088 O! o% t! `' ^+ ^: {
  3029. RTS
    # T  H0 Y0 o% T1 t2 Q
  3030. ) i: F+ g" e* W. P" r5 u
  3031. .ORG $FF78
    + ^" }' c7 V. {. r: v0 p# M
  3032. STX $400C
    ! z  d+ m+ }2 Q9 R
  3033. STX Sound_Bar + $0C% j) Y( G. K' _7 S8 O% a! z5 E( H: [
  3034. RTS- Z/ R; I# u* W3 E+ M6 l2 x

  3035. # b- ]( U  T1 m1 D& q. H
  3036. .ORG $FF80
    8 ^- T" R* ]5 }0 P
  3037. STY $40001 l7 i( U6 y: H! ~1 R
  3038. STY Sound_Bar + $00* a/ K, E- N# \/ K0 n$ n. B8 N
  3039. RTS
    3 H+ M9 z5 B. C
  3040. # E' f7 n. j- j% v8 j9 g; m1 \, S
  3041. .ORG $FF88
    0 J. H5 t6 m8 N, ~
  3042. STY $4004
    8 f; F. J4 w9 H
  3043. STY Sound_Bar + $04
    ( Q8 X8 R) }. j- A3 H: \1 u: v' B
  3044. RTS) k# A/ ]; }' N& D9 s- g
  3045. 7 Y6 o- o2 M  z* G
  3046. .ORG $FF90: s  n: w: [" f. e
  3047. STY $4008
    % O  M$ x$ a& E+ n$ X4 C# B
  3048. STY Sound_Bar + $08) [) T5 X# w( A- {* W
  3049. RTS
    * w% s8 x- J2 g8 m; l) a' E
  3050. 7 b2 X, W# c2 n, u. a
  3051. .ORG $FF983 c: j( M1 b0 O" s! v* Z
  3052. STY $400C
    3 S% I+ o: G( O$ x
  3053. STY Sound_Bar + $0C" I2 p7 U! @  b# {3 X
  3054. RTS
    / _- Q( c) C; g# W* _0 Y9 V2 w4 o! W
  3055. 8 T1 s3 P6 m' D; I6 P; x' Z9 l) N
  3056. .ORG $FFA0* n* J& D  z9 E6 F; }# I
  3057. STA $4000,X
    ' M2 ^, P) P0 `$ F
  3058. STA Sound_Bar + $00,X
    3 b8 n# Y: K) _
  3059. RTS
    * @% \- J5 s6 a9 w# l  _% A" b3 Q

  3060. : v% Z. T& G7 x4 i; w& O
  3061. .ORG $FFA8) P9 ]3 ^1 _: I: |
  3062. STA $4000,Y
    ( x6 Q3 X9 ^' A/ s$ d
  3063. STA Sound_Bar + $00,Y
    ) g, B( C( j3 X9 ]. S4 |
  3064. RTS
    3 p% B3 C6 ]+ d- S/ U& s

  3065. 5 B) T& x; ~5 n3 ~) m+ X  d
  3066. .ORG $FFB0  s' c1 ?: \, f, C2 K4 H
  3067. STA $4004,X
    : d$ r; r; h# x# {8 x- d) [
  3068. STA Sound_Bar + $04,X
    6 T% A$ D/ T8 X& O. _
  3069. RTS
    $ k! k0 A) Q6 u9 q( p1 e/ y2 @

  3070. 8 N0 S4 ^/ W9 r* h3 [2 H5 L
  3071. .ORG $FFB8# k1 K; J7 y. w3 p4 H5 j& w
  3072. STA $4004,Y
    1 {& g+ ?% Y/ v% t9 \
  3073. STA Sound_Bar + $04,Y! u" t7 D; t: \- ?
  3074. RTS
    % \6 x2 c$ e, C0 ?( c0 s

  3075. # t) _- y) E% S( o1 }8 L# @5 o
  3076. .ORG $FFC0% ^- T; H, i' f1 w$ z. k
  3077. STA $4008,X
    ( Y/ \* o5 x; ~! `; b
  3078. STA Sound_Bar + $08,X
    5 j/ r0 F: W4 b5 B* d  j
  3079. RTS
    6 |  r5 U& r4 Y

  3080. 4 `5 s. t! M: o4 `5 Z
  3081. .ORG $FFC8
    ( E. w. n% a! {9 j/ k# ], u/ Z
  3082. STA $4008,Y
    & _) A' b  g# T, p) h5 @8 `
  3083. STA Sound_Bar + $08,Y5 k( \% x( `  s6 R4 E# ?
  3084. RTS/ ~% M  m' ~4 Q0 P
  3085. - E6 f6 i$ l; k4 H% M# g
  3086. .ORG $FFD0
    5 T9 n1 d: i' o5 V3 D8 G% {
  3087. STA $400C,X6 H. v2 k, S+ x
  3088. STA Sound_Bar + $0C,X% ?  z3 v3 L1 p$ d! Q
  3089. RTS
    % G5 {  d7 b+ o5 h& R% T3 Z% Y
  3090. - t  ]+ h% E& {
  3091. .ORG $FFD8$ R' P6 t/ u# b
  3092. STA $400C,Y
    3 Y- S1 R8 X1 t: X7 v1 s
  3093. STA Sound_Bar + $0C,Y
    9 I1 K7 B& L7 T9 M; L- R7 |
  3094. RTS8 N+ b8 e+ U( ?% o! G) y" y

  3095. # C2 q) `0 ?+ f7 K7 o% ^
  3096. .ENDIF
    9 K' b# G& F* V
复制代码

7 @' w' z+ x+ O* p' m/ I
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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 12:14 , Processed in 1.100586 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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