EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
7 }! F( a% w/ k. J  z# g& C$ F0 s" E* l- `1 p' I
[FC][音乐12 IN 1]# d& E% k& g  M/ F
时间: 2023.07.23
  k4 U) x* O9 G: K" x作者: FlameCyclone
( f4 `* c  b! X* S  a- m+ m! f# S! ?* P: g& N) D
收录音乐内容:* O3 D$ D8 k: X+ V( I! L
1.Raf世界6 z$ |+ v6 v: t# ^' g& |
2.最终任务
# ?  m+ y" u8 j- K: b3.赤影战士
2 [5 [( x( {* w) @1 ?# u" G4.双截龙1 Z8 E# l0 l, j  Z
5.双截龙2
) Q3 V9 a8 s# ]6 Y* t- `! I1 N6.双截龙3
2 a3 u6 l" e1 N& F7.洛克人
- v- D# @) m* {9 F+ R3 @8.洛克人2
3 Z3 v1 |3 Q* z0 p4 }9.洛克人3
% v  k0 C; U4 ^' Q& h# K10.洛克人4
& a# s" L- P% W- U" B; P! v11.洛克人5
6 U! b0 i+ q# l, q, e/ u1 N$ l4 X12.洛克人6" z* x: n; O1 R4 F
5 p% g7 \. j: Q' J3 G
操作:8 y5 h5 K1 U: f8 D- D
上键:         上一个专辑! f- Q: n, `& E5 M' _
下键:         下一个专辑) E4 I3 s; u0 ^9 F1 c
左键:         上一曲
& Y1 f% P- Q$ G. m: c4 p右键:         下一曲
' z8 A1 U; O) D/ X3 @, QB/A键:        前10曲/后10曲
. y: N* E7 p( \6 H& E( G# A/ ^3 [/ q选择键:       下一页2 O/ U9 b0 x1 G$ |
开始键:       停止/播放
9 q, P) C5 r5 m; D
4 L' `2 w  a, J/ p! u7 k2 `http://flamecyclone.ysepan.com/; a  v' T' \. g

1 m- ]; _3 ^9 U/ b$ V9 X" ^! Z& s$ U7 P& e3 p0 s6 N9 v
8 K. ]  K; t( O" f; {' C& z

: c* a* H, M* g4 w
  1. ;[FC音乐][播放器模板]# L* j2 q0 }% g+ x! e
  2. ;FlameCyclone 202307104 r& o1 a) m/ J
  3. 7 d' @8 c# n1 ?3 m! O0 s" Y
  4. ;文件头
    " Z: Z$ N  e8 \7 v) B5 P4 o
  5. ;======================================================================: ?% N3 {. g+ i$ p' o, s
  6. .INESPRG 16                                             ;16KB PRG 数量4 a7 G/ M+ e4 z( ~' w( [: T+ j1 ~
  7. .INESCHR 1                                               ;8KB CHR 数量
    % {. {$ M  l8 s7 s
  8. .INESMAP 4                                                   ;mapper 4, E% i  p6 `" P9 j* L8 F
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直0 E' @! Q& o  e1 b/ C0 K
  10. ( Z, \: n4 B5 b) U4 x" Y; k
  11. ;==================================================
    . c0 y6 J: ^: h0 ]
  12. SOUND_BAR_SHOW_ENABLE       = 1
    7 M! e  t3 o, e: H: J6 e
  13. ;==================================================- o( y: I! T. `; ~. M
  14. BANK_DATA_MASK              = $1F
    1 M7 M& s2 a0 w+ Q1 C* V4 L
  15. CHR_RAM_ENABLE              = 07 W# x1 z8 G, }% b7 [
  16. IRQ_SCANLINE                = 136* M2 y- q$ q- ?0 x) d6 o+ }
  17. ;==================================================
    6 S* O9 C; ^) {- h, [
  18. SOUND_DATA_BANK_00          = $00
      [; Z! O% j. L$ d1 y
  19. SOUND_DATA_BANK_01          = $01
    & g! {6 z* a6 o  v
  20. SOUND_DATA_BANK_02          = $02
      B7 N* a# S4 M8 f
  21. SOUND_DATA_BANK_03          = $03( b9 t6 [" l$ }7 ]1 ^# c0 G! u* a
  22. SOUND_DATA_BANK_04          = $04" F# C/ o, N6 a: a) y
  23. SOUND_DATA_BANK_05          = $05
    ; r3 f" b9 q+ \: @* c
  24. SOUND_DATA_BANK_06          = $06" K6 o5 k. Z- ~0 N
  25. SOUND_DATA_BANK_07          = $07
    1 _, z9 D8 G+ K2 M% P
  26. SOUND_DATA_BANK_08          = $08
    & P3 U- Q! Q2 Y5 j" q5 n9 Q2 u
  27. SOUND_DATA_BANK_09          = $09
    , g1 `5 I) c. E3 \9 \
  28. SOUND_DATA_BANK_0A          = $0A/ x" k, Z; N2 k8 ]/ T* p
  29. SOUND_DATA_BANK_0B          = $0B, A4 S( X8 F5 [, v6 n/ p% L
  30. SOUND_DATA_BANK_0C          = $0C
    - a8 ?; e* L) W' S
  31. SOUND_DATA_BANK_0D          = $0D
      ?3 f# d- p- _
  32. SOUND_DATA_BANK_0E          = $0E& {6 n1 \6 l# N' s; M8 C! B, _
  33. SOUND_DATA_BANK_0F          = $0F$ f0 d+ `4 T( q# k, t& g
  34. ) A  Z* l- }4 ]5 j
  35. SOUND_DATA_BANK_10          = $10
    ! T# X* x/ o. ^1 z! F  c9 L9 C
  36. SOUND_DATA_BANK_11          = $11
    5 T& y& @8 M' I- ^3 a1 H) c5 L1 F
  37. SOUND_DATA_BANK_12          = $12
    5 W0 ?: m" Y. X2 y* r
  38. SOUND_DATA_BANK_13          = $13  ~& _- |) N# V: R6 ]+ z9 V) f. r8 @
  39. SOUND_DATA_BANK_14          = $14
    9 q: C. C0 {+ z
  40. SOUND_DATA_BANK_15          = $15
    % j1 T3 n& I3 w: A/ i  I
  41. SOUND_DATA_BANK_16          = $16) d/ f7 u: w; E: t
  42. SOUND_DATA_BANK_17          = $17
      N1 j$ n  Y: s
  43. SOUND_DATA_BANK_18          = $18
    2 X% W/ H* ], f/ ~: J
  44. SOUND_DATA_BANK_19          = $19
    % i2 f- `# n" d
  45. SOUND_DATA_BANK_1A          = $1A' g5 X" t" E- z% _% ?
  46. SOUND_DATA_BANK_1B          = $1B
    . y. h8 q) i6 Q7 E( S7 O9 h0 L
  47. SOUND_DATA_BANK_1C          = $1C
    2 Q' `5 x" j. f& P* u: |
  48. SOUND_DATA_BANK_1D          = $1D
    9 M$ s5 T- [- @6 @9 n

  49. / f9 ^8 {  S' C5 ]+ D/ V: @
  50. SOUND_DATA_BANK_C000        = $1E2 n: U' N1 E2 f" G' w
  51. SOUND_DATA_BANK_E000        = $1F' o4 K& l% D: T, r  F  U/ h6 Z
  52. ;-------------------------------------------------
    0 g- f/ q- o+ W8 z! s
  53. CHR_DATA_BANK               = $206 w; \- O, n; K9 u2 ~, {3 c- U% W
  54. CHR_DATA_ADDR               = $A0006 @$ e& \, T0 }1 i! [, v
  55. ;-------------------------------------------------
    & m2 `4 j$ M! t# w1 f/ T+ r
  56. PROGRAM_BANK                = $00
    9 d. j: s! p) `% K$ h
  57. PROGRAM_ADDR                = $8000: S6 W2 B( `/ s( ^+ ]
  58. ;-------------------------------------------------. b) U, I* Q# l9 a
  59. RESET_BANK                  = $1F
    9 n& D* |/ v- k
  60. RESET_ADDR                  = $FD00
    / A5 J: R8 ~) T5 ]
  61. $ N, y8 w, ~+ i- f
  62. ;==================================================
    4 e5 S* b; A- I; l# ^
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数) m5 [6 Y; V" d$ o
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引( ~, p+ M& T* N; E) i5 C
  65. PAGE_SIZE           = 5                     ;每页节目数
    - |" g4 N) S3 f  ^2 `

  66. ) F; e$ e9 h4 T6 s- K" t
  67. ;==================================================
    ) O' o  B# ?- A, I1 n+ t
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    ! V2 K( @6 @2 ?; w( Y  \' @
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数' O1 i, U! D. ?# c  z9 \
  70. .ELSE# b2 i3 I$ M6 A. l1 A& G) l- l3 q" N
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    - f# E: q. t) r6 ?4 T* i+ {
  72. .ENDIF
    7 L  g9 J; w; h# F) m

  73. ) T! P. U* V0 p# m
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引' m& J7 R* H3 \+ i" f7 {
  75. & G% I% f) ~8 G2 p! [
  76. ;==================================================( Q/ G8 R+ O: h0 i5 v' m
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    # |+ r( F2 @% X3 ?$ Q& z% O
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2, Z& J, P, \8 {, \% ?( B
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    ; g, c- K5 [6 X& a0 `4 A1 G
  80. ;==================================================
    ( q8 ~9 X3 j0 ^; X* Z
  81. Caption_Text_Pos    = $204D ;标题文本位置+ f. i; N3 I+ B% \7 p
  82. Author_Text_Pos     = $2324 ;作者文本位置- I; z: J  r; p) m' V6 B7 t
  83. Date_Text_Pos       = $236B ;日期文本位置) ]! v. J6 H; L4 e- U( n" v' Q
  84. ;------------------------------
    + M8 a4 J0 F. ~
  85. ;------------------------------. w9 h$ ~$ z: o- ~  n+ V9 b
  86. .IF SOUND_BAR_SHOW_ENABLE
    $ j6 `. R* _. I5 H

  87. " F, z( c8 ~# ~! J! D
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    4 E% u$ ~, y6 C1 W
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    6 r" \( [4 ^- R* @
  90. Play_State_Pos      = $22F3 ;播放状态位置
    7 D. ~" C' ^- D+ d8 s& X
  91. 1 [  F( v1 L% W9 @3 r* H
  92. .ELSE
    3 d/ o) u, s, ^8 \

  93. 4 t$ l4 w9 U+ Q0 J  v6 a- e
  94. Play_Index_Pos      = $226C ;当前曲目位置
    1 [! B( q6 E9 f
  95. Play_Time_Pos       = $22AC ;播放时间位置5 f% S$ L0 E. l5 s
  96. Play_State_Pos      = $22EC ;播放状态位置* _# B7 ^+ i* W( E7 r; V; K& n

  97. : o" O& b. [+ E$ S
  98. .ENDIF. n1 B) u$ |/ T4 o# o
  99. ;------------------------------9 Z1 j* D- W# g; F
  100. Track_Name_Pos      = $222B ;曲目文本位置
    , z1 x3 L  n. ]0 ]! P, M" P
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    7 G! G! i" f2 o
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    4 Y- W0 r) D4 ?# w4 S/ Y
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
      n+ t" E! {# @9 Q/ R; V
  104. ;==================================================" x# V$ n( \( f5 U1 e
  105. Scroll_X = $00
      `8 G  l( U1 `. q0 @, @; }5 ~
  106. Scroll_Y = $00
    3 O4 z9 D0 m$ I4 f. d8 o
  107. ;==================================================2 Q$ y& i' O3 G# _6 S% h
  108. Sound_Ram_Addr_1       = $0100
    1 v  }  |2 e# K# Z9 t6 H+ l
  109. Sound_Ram_Addr_1_Size  = $80/ d' y" V( {/ n
  110. Sound_Ram_Addr_2       = $00909 \- X- I$ k) _  {, t( Z
  111. Sound_Ram_Addr_2_Size  = $703 O/ T+ j0 J9 Q& X- g$ _1 v  T$ W$ q
  112. Sound_Ram_Addr_3       = $0700! Y, t' U( V3 D7 g
  113. Sound_Ram_Addr_3_Size  = $00
    8 O: k% N5 g5 k6 C" |5 i9 H3 O6 R
  114. Sound_Ram_Addr_4       = $0400* x. f/ O* l/ m, D- F+ e7 k4 C% `
  115. Sound_Ram_Addr_4_Size  = $00
    % Y( n9 ~. f7 D
  116. Sound_Ram_Addr_5       = $0500
    # Y' C5 R0 \; L$ D
  117. Sound_Ram_Addr_5_Size  = $40
    2 g% S2 A3 I* A, @

  118. " i; p- M% V3 n5 U
  119. OAM_TEMP_ADDR   = $0300! E, v3 b+ n! a3 M% M) I. ?) m
  120. 2 w/ f& S+ x5 O2 p& c
  121. ;==================================================
      z( o( O" g( d& a6 _, W
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    3 f0 ~1 t( {3 S0 P
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器8 }" e# S2 c, ~" k6 B" {# X
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位3 Z* J( b6 d7 {
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1  }4 P% Q3 w) f4 l0 x+ ?8 ^+ R
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加19 J# n- r1 v4 E9 Y
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 & ?! J, u( f1 f  \) H5 N
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    $ J8 [! Y3 O, f
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    ! ~  E5 N1 w4 P
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存. g3 j6 B8 m+ l* L, I' z
  131. APU_STATUS              =   $4015   ;声音通道切换* H+ e0 j: d1 K2 G% E6 f
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通; H" L" U* r! A5 |; d0 p6 y
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    ! Q$ p# q' _% L. U5 e% s
  134. ;==================================================
    5 ?( o# O3 ~2 a' v* ^
  135. MMC3_BANK_CTRL          =   $8000' F6 ^& V0 ?. a$ K0 W6 k0 G
  136. MMC3_BANK_DATA          =   $8001
    : U+ N0 Y$ y& U! P2 ?/ J. U
  137. MMC3_MIRRORING          =   $A000
    5 |' P9 `  _& x
  138. MMC3_PRG_RAM_PROTECT    =   $A001) ~! D9 X$ r( E4 U
  139. MMC3_IRQ_LATCH          =   $C000( q; z9 r& j, P& [2 Q
  140. MMC3_IRQ_RELOAD         =   $C001
    1 [5 |+ m  E, N: Q
  141. MMC3_IRQ_DISABLE        =   $E000
    ! {' F" ~% o' c& I6 B- S) G
  142. MMC3_IRQ_ENABLE         =   $E0011 h4 d: j! b$ F7 P* C
  143. ( {2 N" ~, j! |8 g) P
  144. ;==================================================. {2 D2 l0 j* y) e
  145. PPU_Addr        = $02009 n. @; I6 ^4 s
  146. Palette_Addr    = $02C0
    $ p. V1 J6 f+ J  V; g4 ~
  147. Sound_Bar       = PPU_Addr+$E0" I$ f8 B& |$ j* T. M- g7 q6 v
  148. ;==================================================3 d- y0 N! s5 G% Z/ V' F1 n  \- z5 }/ a
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D: e8 j& l2 l* K6 I4 c5 p4 d% k  G
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    7 L2 \4 Y; Q% W% ~7 J& L2 b
  151. PALETTE_UPDATE_MAX      = $2C
    ! X' g/ h. e; {, b+ }* `- Z. x
  152. PALETTE_UPDATE_MIN      = $21: d6 a! u# R$ A& L' i5 L0 k
  153. PALETTE_UPDATE_INTERVAL = 60( l  ]" X6 w3 W* W8 A
  154. ;==================================================
    + k$ x1 u% f6 D& I0 L5 P* e/ Y+ j
  155. Sound_Bar_Cnt       = PPU_Addr+$F0- p4 k% D! u0 r) K& D% S4 H" g1 n' e# j
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    4 K2 k7 g3 ~) B6 W; `1 [
  157. PPU_Addr_H          = PPU_Cur+$03
    3 _5 C( r- q1 l, T2 ~
  158. PPU_Addr_L          = PPU_Addr_H+$04
    ( n1 O5 j8 q0 ^# P% @
  159. Screen_Ctrl         = PPU_Addr_L+$01, r1 c9 z$ W6 Z6 T. Q
  160. Screen_State        = Screen_Ctrl+$01; C1 w/ f3 P( ^1 @# x4 f
  161. ;==================================================/ f" W; M. v9 A5 @& x( U# J' L6 |
  162. Use_Ram_Begin       = $502 q$ O+ F8 s7 }
  163. ;==================================================
    : E. q6 H, ^8 |; k
  164. JSR_Addr_Op         = Use_Ram_Begin
    . `. ?# d% x+ k6 r3 |
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    6 d0 H# P% H6 Q8 w" Z
  166. JSR_Addr_H          = JSR_Addr_L + $015 }( r- Z: K7 ]* p
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    1 k: Y# r2 C$ m* h
  168. Data_L              = JSR_Addr_Rts + $01
    0 G  W0 T( Z" N
  169. Data_H              = Data_L + $01
    1 M: @- B8 l$ d" \
  170. Data_Cnt            = Data_H + $01
    2 N9 H/ [  H% Y; B. R
  171. Data_Buf            = Data_Cnt + $01
    & w# l) f. z- Y; G  w
  172. Nmi_Time_Count      = Data_Buf + $019 Z* I" ?  u/ ^8 [# P" z
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    : [" J2 a6 ^) J1 o& W: _5 ^. t
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $016 v! T5 R6 {' a+ Y, {' R, c

  175. / w; R# L, s8 P7 |' U
  176. ;调色板刷新标志
    7 v3 @- ~1 b1 R/ L1 ~; ]; V
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    & n  ?1 b' a( ^

  178. ' B8 E' y( U. ]3 c8 E6 p
  179. ;当前帧文本写入禁用标志# k8 B. J1 S1 p+ {
  180. Text_Disable_Flag   = Palette_Update_Flag + $01. _8 R6 d9 E: O( x! o. l5 A& e

  181. # C6 t  e7 C( Q; C# ~! b
  182. ;==================================================
    $ s8 c  I  B' @
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    $ |: \* w4 p$ `+ D; Z, q
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    % ^; e% p. C6 s4 E
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    - M& R: {+ ?5 o& D# |1 l' y
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    . z4 r8 A: y' G  B
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    ; `( t7 N7 B1 a# N& ~% Z
  188. ;==================================================
    : S& N( Z. d2 |  y. e
  189. Key_Keep            = Text_Disable_Flag + 16 {* Z; r; P# w* `/ H
  190. Key_Once            = Key_Keep + $01
    , S! Q  I& ], e
  191. Key_Kemp            = Key_Once + $01/ Y/ I. R2 Z" O- n
  192. Key_Temp            = Key_Kemp + $01- f0 Y" Y( s: h9 W: o( X
  193. Key_Getv            = Key_Temp + $01; C7 `7 o: v# U/ ^5 X+ m  `
  194. ;==================================================* H1 S, Z& L# V# [; e
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    1 b" Q( v, K9 U- u
  196. Music_Item_Last     = Music_Item_Cur + $01
    1 `6 o0 D" U' `, A
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    3 b+ A% w" e0 [0 x8 p, T! `
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    8 G$ O- {8 {: I; M- {  [, m
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目! u0 y% o( f! k' ?) G
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态7 M0 j9 ~: [9 R) N
  201. ;==================================================
    9 W4 ]$ x- c0 I' e4 P/ u" a( V6 J
  202. HEX_Data            = Music_Stop_State + $01
    8 G& f1 c, U1 [" @/ ~
  203. DEC_H               = HEX_Data + $01
    - |9 [! d$ @, Q; K+ V5 q, F# ?, d1 D
  204. DEC_T               = DEC_H + $01  g- {: h. q3 H' V. H5 k1 ?
  205. DEC_L               = DEC_T + $015 P; d) w5 n. N* M# b
  206. ;==================================================
      f6 \7 C. J* Q! ]3 K+ ^
  207. Time_S              = DEC_L + $01! k3 y8 U% l& E+ k0 r% ]2 n
  208. Time_M              = Time_S + $01+ Y5 i4 j* W- v
  209. Time_H              = Time_M + $02
    9 C! G7 o) c. Q; }6 `" n0 u
  210. Time_Cnt            = Time_H + $037 ~8 W) J" `" U" I( t, z

  211. : [& k$ `4 N, V* L: W2 P4 l
  212. ;==================================================
    9 y0 W+ B" h2 p" ~' }- R
  213. Music_Bank_8000     = Time_Cnt + 1
    4 @* Q2 F$ _8 k7 Y) Q
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    " b# ^$ r- m" ~! P% ~2 l
  215. ;==================================================: d6 k4 ~7 |% U1 u
  216. Scroll_H            = Music_Bank_A000 + 1* h  x) O, X4 l+ K1 P
  217. Scroll_V            = Scroll_H + 1
    3 E$ f1 q, @3 @% a. t
  218. IRQ_Process_Index   = Scroll_V + 12 d! o2 f$ v5 {/ F7 I! d# k! ^8 A
  219. ;--------------------------------------------------0 ]& i6 P3 ]( E! |( R" s3 F: Z
  220. Page_Cur            = IRQ_Process_Index + $01
    / Y% x2 R  Q# a) V+ v
  221. Page_Cur_Index      = Page_Cur + $01
    " T8 Z' y. s( D/ z  x0 E( A
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    * j$ b* y, O) L+ ~! ]2 O( {% _
  223. Page_Last           = Page_Cur_Cnt + $014 e' `; U3 j, o
  224. Page_Last_Index     = Page_Last + $015 i1 I, u7 u6 J& w. ?
  225. Page_Last_Cnt       = Page_Last_Index + $01
    / M/ f& K! B5 \
  226. Use_Ram_End         = Page_Last_Cnt + $011 O/ K9 R% [: i) q( N9 l* a
  227. ;======================================================================
    5 m6 N# h$ _) T7 |& Z# ~8 L
  228. ;音乐数据块8 |& c& L8 i* L: y
  229. ' {; A" z; c" L; D/ |* v
  230. .IF SOUND_BAR_SHOW_ENABLE) {# O1 A0 V- k# t, S6 S4 g& G
  231. # |8 z4 k6 H4 y9 ^# d
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK- S0 ^2 n2 \$ ]# ^9 l
  233. .ORG $9000) c0 J) T3 ?3 U# w
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    # ?5 p) t* {$ ~0 p
  235.   S+ q, X; F" k3 g8 n& X. L
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK; o1 r; B2 e; m* @; @, A
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"6 A( e' O5 T) a

  238. ' w, p( I0 i9 v6 B* O! K
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    3 U0 z, i# m  x
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    6 d8 i2 H2 V, N6 W% J

  241. 1 ~" f9 v2 y2 _! W, D4 x
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    4 x, u& @. R/ W
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"$ U9 C2 [2 {5 \+ @
  244. ; i5 y; a, X9 @2 O
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    ! s1 A6 m8 B  {6 A7 P
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank") @, b4 L4 a, R- d2 {0 m
  247. 8 N  \* S. x9 N* ^% w# p6 w6 |- N
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    ; C: S: S4 D, s9 i* s
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    ) ]. B6 ?  X1 L& x& S" X
  250. 4 T* g! ?0 `' @7 H
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK  p1 M2 b1 ~8 V6 Z" Z: I
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"# |( ^9 n+ `) W, \

  253. * z# u; e- r9 }
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK9 l; P$ z( W( y# Q. ?+ [
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"2 p7 k3 k: f! S1 R/ x1 G' x& Y, o
  256. ( H0 e( c/ p3 P2 X
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    & v/ r, t$ G' x1 J, v
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"4 V9 x, P# u2 t, Y( Y( v% _
  259. 6 O% u3 `: U9 N9 q  g7 v
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    5 `! V6 h" f/ @2 b
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    + n% X- ^8 ?" `8 L
  262. 9 w' y  W" m* i: N6 u
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    # A$ O$ C' w  H; [- \3 N* _2 D/ r
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    . {# w9 g- Q4 j+ X

  265. ( K- r. r+ z& ~
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK, x) H5 t: S5 n
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"' y- n, R8 |" T0 D/ m( V5 e

  268. : {9 h8 Z& e$ N5 K+ K
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK5 g) f1 H3 x6 A0 e, a* T
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"1 t) d, X& n5 {" G) v
  271. ( Z" h- E4 q' Z7 ?+ c
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    1 x7 N( k7 u( f& L  a1 `
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"4 F* X) n5 d/ Q4 E( |+ T" V
  274. : w6 Y0 h3 x! \: |; Z  m. ]# W
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    3 I' |6 v+ W8 i6 M
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"0 i( h& J# S7 _( k3 E
  277. 0 u4 o5 A5 x: g$ ]) y
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK1 F  J3 l4 g' a1 U1 q- a
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank", W, t8 S2 ^; b# h
  280. 0 F7 {  M! a9 i
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ; r' W) D8 B# M. Q6 N
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"3 D  w" [+ t, ?7 ]. k

  283. + I  P* [2 J5 _# Y, h
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK; Z) H9 J' J' r
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    8 `: c8 }4 u' d4 N

  286. ( C( v; m4 k4 s# O7 z& _: a
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK" d0 ~% W, h8 P" c
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    ) w& u) D, T/ P. r9 Z

  289. 8 Q4 o( m! C! P4 t/ \
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK8 A" x# [8 z7 Z8 D
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    5 S; k6 X. l- H5 }

  292. / F0 |0 b( y$ q$ }
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    ; \  o  B( `( Y7 Z9 y6 u; B
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"$ g3 O) d9 v* `0 a& I" W1 N

  295. 0 r- w! ?, b+ H3 K' J" ^- s
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    * y% z6 ^* {; `5 ^! f: g# {
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    ; N/ m0 e1 C" N7 D  v
  298. 6 M, N% t2 ~4 J; [% G! ?: s' t
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK7 j( C. O& {% @8 I) q
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"3 I0 K7 x% ^) s: z" g% K
  301. 1 P$ D& ~* ~) `9 m# {2 a
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK3 f8 W, B0 n1 a: ^! Q
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"( }* {# `" x8 e) B+ H4 o1 W

  304. 6 L3 {+ c/ Z( r5 A% V% D% H& E" O
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    # i: K& W& n: {7 h0 E
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    ; B" f. v- ^+ ?7 b

  307. / b. [1 H7 T) ^( P5 t( A
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK$ _* N+ ~# \# i/ [7 O
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"7 C  P! |& g$ ?5 m5 D# m% {

  310. ; n/ g' I, I/ L: \# G# y# }
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK. b2 c+ M7 h; E* w: T7 X
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    + n3 i+ w3 Z$ t* j8 H/ s( S6 D+ K9 |

  313. " P# u# l$ d  H( V
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
      Y: B; X, ^" g0 ^$ @0 o+ O  F- g% p, {
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"# i  O1 S! H( V* I1 l! ^# G

  316. $ r/ X$ J# u# g
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    . K* K$ {3 ^0 G  z2 p8 L! O8 w
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ' h" p3 D9 U7 r

  319. 9 M4 S1 m# P7 k- G2 x9 b
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    $ o1 [# m; i/ S$ C9 `; Q1 \" y
  321. .ORG $D400
    ( E" n* K  z% h
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"* h- ]" L8 H/ z' B$ Q
  323. 6 {8 ~8 e3 X2 N1 M
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK( s' K, n7 H' F; A
  325. .ORG $D800
    : m6 ~( Q! {3 G# P8 y7 a7 j
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"2 b/ ?$ d+ u; C. k$ E1 \4 u/ P

  327. 7 @% w7 X! Q0 N+ d2 Q. u
  328. / `: q2 M6 p' u# m
  329. .ELSE
    2 r. J2 k9 }3 C* O2 F

  330. 8 ^) m" ^/ m* U+ ?: d: g
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK- H1 D. e2 G" \8 y2 X' @1 b
  332. .ORG $90002 y$ B/ B1 t$ F  v) O/ s1 S
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    , g, C  k) ^: j/ a; `

  334. 4 a) @% D. W& J8 h9 ?1 y6 U
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK4 G! k: x; i2 B( i* U/ b
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"( a! L+ q( T0 c* S) h- `
  337. 9 e, r7 G6 X  }9 m- U
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    % R2 v; }5 W5 E3 c$ l
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    ' x; c. ~' B( {5 G

  340. 7 W4 }; N" F, [
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK9 O6 ~7 x7 c  l! V: a& m" b
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    , Q* M$ R/ S3 ?% A: }) \. |' r; ~

  343. 0 `' V: M: `  ?- S8 }( B
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    ) ^1 `- E. B3 v$ o2 K1 H
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"8 \! `" n0 B7 C* c" R

  346. + S5 o' @  \8 y; O% _2 z6 U" f4 R
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    ( f4 s1 w; `% d6 k
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank", v* A' v: t6 [" `- }* D

  349. - }4 R* f  u6 [3 B
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    ! h& O  x% v; ?
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    / _4 O9 D9 ~/ ]

  352. + X( V& ~9 A: b7 z" h, ?$ I' ^
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK6 b2 W! w" h' s
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    * I$ V0 d( z: U8 y2 z
  355. : b5 x) M& p  v: r1 f
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK' g! R5 |' l. q1 Q0 k
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    7 k- k  b; K# R2 Q

  358. 0 m+ [! V) T# p+ k
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK9 ?: m1 C9 c% |" j' I8 M# {. I1 Z6 C
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"  \7 P3 L; E# T$ Y' Y/ [9 R- z
  361. ' i9 U* D$ d2 M8 y5 y( p
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK/ ~+ u$ d+ g$ h* _& x7 u! ?
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    4 b; r& u& B) M( V+ z. V
  364. . N9 ]- E6 r5 S* ?
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    9 a5 }2 s% w- t* }
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    0 u' X5 B1 @( E1 o. `8 S" A4 C! U
  367. 6 _9 G7 W# v/ p+ z4 ~4 {
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    0 d  o6 ?) h8 R; |
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    1 Y3 L) j$ U* y; s8 ?/ B

  370. 2 q: _& C' ], o: d! c1 N# I
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK; A( H0 o& a( [8 _/ M; s9 d
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"! \: r  F  A  u8 `1 r1 ]! \9 ?: x* B! `

  373. 4 ?# B: Z7 x2 x  p0 N1 u8 B2 @
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    5 t4 G6 i% X' Q1 u: {
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"" F+ k8 O- v2 e7 E
  376. + Y" r# E6 D0 M6 `+ a- q
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    7 P2 z% Q* {: L$ ]& ]
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    $ C2 {: Z/ t% z7 F
  379. . H! {: u/ q9 w/ S3 t
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    2 C, n4 q2 U% B# O. i3 [
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank". h/ t! ]( u2 ^8 H
  382. # z; _+ }( P% {' L8 o. V+ N4 Y$ V: c
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    7 ^& Z0 P# T5 Z
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    % B( D% [# x5 k8 ]' J, c9 l! Y" J2 g8 t

  385. ; C; q2 |6 ~7 ?2 E9 P
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK& ^& t2 i* D, x2 s; r; n0 r
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"% G8 L, `) Y; F2 p  f2 K, z

  388. / F- _4 o) q9 z6 k) o3 ^
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    & g4 g' M! V, O
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"# S2 T3 g$ p8 T/ Q

  391. & ~  T) e! e' p5 Y, U
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    , d+ O$ }( l- c. {  L2 {
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    ; {. Z8 l( }5 ^- ^
  394. # Q8 t; n/ h0 N2 `
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK% z) B1 I8 Q* Q' g! z
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    % f+ s; U+ a7 P1 m  n5 G# U

  397. " x- E- Z0 J: N' N' u8 S, h
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK2 n" c! |% v) R5 S1 V
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"; x: _0 Z6 R4 A

  400. % j/ |* v8 G! f5 v# K9 e
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK6 l2 g/ W2 m$ @' I  N- t! q3 U
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"; O6 h$ j4 t& L8 F+ K, F3 H
  403. ! ?. h& T/ b5 A5 N) F
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    * y$ h+ v0 \  r. _) H" t. t# S1 ^
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"  T' Q- s: s) c% i
  406. $ w. b* x  D: u4 c' R! g  K+ |
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK* v5 R/ j$ J  M2 v1 c
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"( e8 ^1 n  p* M2 k1 G- y1 p( s
  409. 4 g, R( g  Z- D: m% [; I- p2 ~% ]
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    $ X6 U9 T9 l; B
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"! H. F7 u2 u) v& T9 b" U

  412.   F5 \5 \/ V! ?! I, l5 p$ @
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    ( V1 H1 ?0 t0 @0 v6 s
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    / W, A4 F: Z8 }& B. D  q: Y

  415. 1 }$ X, L9 @9 `% j. ?& _, o
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    - k( B" A9 [+ B  b
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    . K9 {! D4 }; C0 _1 r9 [

  418. 5 |3 z+ B7 G: J# l' S
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK: U: i5 j# Q9 N. c5 T# g
  420. .ORG $D400' E4 Y. U5 m4 J( K  |9 O7 x8 q% U! l4 O
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"1 i. i  \: i3 }$ E# h
  422. 0 \5 K  U( s9 n! c8 U
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    8 Z/ i, b3 K& c
  424. .ORG $D8002 Y5 c8 E" m3 B- J- Q+ e, G0 F8 }
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"  t$ s' j" v7 L/ n9 P  Y$ v

  426. 1 q" V0 }, m! ?9 A. V1 T
  427. .ENDIF
    5 ~2 R+ Z% q' e- n: R4 i

  428. # ]  Z( d* H, v2 w1 v; q
  429. ;CHR图形数据
    0 D* x, ?. N/ i- W! u
  430. ;======================================================================
    3 g6 g: j- V: b4 R* S( r8 e7 r
  431. .BANK CHR_DATA_BANK. {6 c9 O8 O7 M2 l
  432. .INCBIN "chr_bank/chr_data.chr"$ P4 N4 H; ~0 z# \1 U
  433. * C# i- F* S0 @
  434. ;======================================================================% i. d  y) w4 W% h- J, r( k
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK+ t  h9 a+ j5 @% g+ k6 G* ^% c7 l
  436. .ORG PROGRAM_ADDR
    ) k) c$ J9 u* M. o5 ]! i- _

  437. 8 K8 i9 B9 K% E# R: i% _
  438. ;==================================================* s; H: q. a! ~% T
  439. NmiProcess
    8 ]5 O+ e( W# E. z. C  F! `  ?  G
  440. 9 P) ]! O$ N' j- X
  441. ;关闭屏幕控制0 p6 L: F- I/ B$ Q0 O" w
  442. LDA #$00( m! ~4 a& |( }$ I: J6 O  ~
  443. STA PPU_CTRL
    - ^( `0 y2 x  O3 b1 g

  444. 7 r$ G7 Z8 j% V  o
  445. ;没播放音乐就不需要触发IRQ- l1 P. a4 w& H1 q+ S( y) A$ C& I! @
  446. LDA <Music_Stop_State2 N! m7 ~; P0 U3 Z
  447. BNE NmiNormal
    , K& ~% W+ F2 c

  448. ( O5 v4 a& A$ ~9 a* ?; ]& L
  449. ;重置IRQ索引
    7 a$ D$ n9 g& M: j1 w4 d( `9 z2 K
  450. LDA #$00
    4 D4 n9 c1 D0 A' T3 H
  451. STA <IRQ_Process_Index
    , u0 j( }% F9 q! w7 v
  452. $ n0 R& v: @) k9 ^! O
  453. ;时间秒数为空则跳过
    7 m! T( W8 K5 W  P1 g% K
  454. LDA <Time_H1 P* |  k  t6 u: [. D
  455. ORA <Time_M
    ) ~+ e* H- Q! }& G4 C) K+ w9 i" k
  456. ORA <Time_S& v1 J6 [! P; w  {/ ~8 m2 s% g
  457. BEQ EnableFirstIrq
    6 b; l( c- \/ c& e
  458. . l; F. B! T2 k) p3 x% p; D
  459. INC <Scroll_H0 A- r8 C$ j" P8 z1 r3 P
  460. $ z1 C6 ]8 V3 z+ @2 d# ]. h4 k
  461. EnableFirstIrq # h! Q, h$ O2 f# ]
  462. ;80条扫描线后触发IRQ
    0 m0 E0 f, z7 I
  463. LDA #IRQ_SCANLINE
    ( }& z- b' D: v* }" J4 u
  464. STA MMC3_IRQ_LATCH2 m* O+ E0 O0 ?! ~: @8 X
  465. STA MMC3_IRQ_RELOAD
    4 e" J7 v+ l6 r0 l
  466. STA MMC3_IRQ_ENABLE
    ) f" n0 |! G& M& Z4 e1 b1 f/ S
  467. CLI
    # F* a: w3 j+ x3 P4 T/ |2 c+ Y
  468. " ]! C  U. G( v- e. I
  469. NmiNormal2 a  P5 O7 k7 N
  470. 8 T; ~8 [6 `* Y+ C, u2 j
  471. ;处理PPU图像+ l: _$ T7 @: U' Q$ X
  472. JSR PPU_Proc* }$ _1 @: r) e

  473. ; n' I2 [% n2 \% H) w
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)# _# g. ?2 Q4 J5 t/ W, ~+ ~. j* l
  475. LDA PPU_STATUS# G) d  ?4 f: b6 c3 x6 Z
  476. ;LDA #$00  w# K6 x# o, f5 l! t, ?' \
  477. ;STA PPU_OAM_ADDR1 U$ Q% G2 t4 y7 k% K
  478. LDA #OAM_TEMP_ADDR / $0100
    # c' G0 w% r4 ]5 V% |  Y7 P$ l
  479. STA OAM_DMA
    - p9 N* S( q# u+ H' Y

  480. $ c. J+ K! s' n, J
  481. ;启用NMI中断
      m/ W5 j6 t! C7 Y2 S& Q
  482. LDA Screen_Ctrl
    * X9 g6 P' P* D6 `
  483. STA PPU_CTRL
    # R' y( ]+ m9 c- f
  484. 0 q7 G' B2 _- y# @+ _  \
  485. LDA <Text_Disable_Flag$ G) |1 B9 _" i; q  S  F" A
  486. AND #TEXT_DISABLE_RAM
    ) L) I3 z4 ?" m2 d+ C  c% ^
  487. BNE Nmi_Sound_Play& a4 F$ y7 J0 Q& d5 F
  488. ' {$ @- c) z0 C( P8 p5 I
  489. ;处理手柄输入
    7 J" F; ?) L! h
  490. JSR Key_Proc
    : ^: G( |4 p4 a5 x3 @

  491. + q5 c# z. d; w7 H: F4 [
  492. ;切换音乐(手柄触发)
    & |: C! Z! Y5 l" ^  {" H
  493. LDA <Time_Wait_Cnt( d' f0 r9 a0 Q/ N
  494. BNE Nmi_Cursor_Arrow5 u! I5 ^6 M& q. @) l( ^
  495. JSR Change_Select_Item
    2 f. _# g$ ^' }6 `: D9 g, ~3 P& n
  496. " {: |. V. Y* Q( z1 I
  497. Nmi_Cursor_Arrow( _0 @7 b; f6 e. f& [$ @& a8 F6 K

  498. ; o9 W$ w" Q* o8 P- s  F3 @
  499. ;处理光标箭头
    ' l/ }; _7 K. I  U4 ?# L, ~/ G
  500. JSR Show_Arrow
    * o  x- c5 A& C$ k
  501. 4 c; @' i& a0 x5 g, n0 M2 ^4 G9 x5 W
  502. ;更新调色板& u) s8 E9 L5 C$ P0 V
  503. JSR Update_Palette_Data
    & F1 ]1 K/ z4 A" s) t
  504. " }8 O1 K6 M+ z# i& U, M
  505. ;显示时间(缓冲)% k2 Y: M* V9 {) S+ Z
  506. JSR Time_Show* O# M% b6 T4 C& m' D
  507. . M" ~' S' S" i' v
  508. ;音乐显示(缓冲)% ^' k1 q1 m2 q; M. ]! l2 l
  509. .IF SOUND_BAR_SHOW_ENABLE
    2 L- c& S7 C8 N8 {
  510. JSR Music_Vision* m% O( o/ O' P" B- F5 S$ p/ S
  511. .ENDIF
    0 H4 V! i. w; W) d: Z& I, e
  512. ! c1 \9 l( g3 a- `$ k5 r* B0 L8 E
  513. Nmi_Sound_Play
    ( I: z% g! t! x. J9 @
  514. ;播放声音
    * a" z# Z0 w. E! |, N* h
  515. LDA <Music_Stop_State
    5 C  \# m3 M8 ]0 s+ Y# C7 F9 E5 ]
  516. BNE Nmi_Time_Wait_Set
    - L, X6 M9 ?# R+ n. o' P; q6 Z  N
  517. JSR Sound_Play_Proc  f$ W' O' e# ~0 `
  518. , b, i: m9 u& k, Y* K) _3 x. P
  519. ;播放计时
    ' C( z$ o- ]3 a( \
  520. JSR Time_Count
    : P! ^0 u) q" e6 b! Z6 j
  521. $ h5 o# H" m- e8 q- g* k
  522. Nmi_Time_Wait_Set; k6 z2 ~/ E4 \% `" l# c; |
  523. LDA <Time_Wait_Cnt
    ' b& k  U1 s& v+ t1 P$ `
  524. BEQ NmiNormalProcessEnd
    / |3 z& Y5 U' W: y1 E) I" H
  525. DEC <Time_Wait_Cnt$ y3 K8 n% s& Q% ]+ q5 N+ d( d
  526. NmiNormalProcessEnd. u0 [" s0 w9 Q0 o* n

  527. ! T) V" ]5 C! o1 G8 D8 b( W
  528. INC <Nmi_Time_Count
      I7 s0 U( [! Z( n8 k& I' F

  529. % r  c0 Z. k/ Z$ H
  530. RTS
    & y( `) `$ |, q- t" |& w; A

  531. : }8 L+ [; N' k' t& m  q! Z5 ?
  532. ;==================================================8 l  `3 L9 K& H6 ?1 M' q# {
  533. Init_MMC3# F$ q! u! G. M% V1 A
  534. ;==============================" h, c% a: T7 [1 D+ \
  535. ;禁用IRQ
    2 e# u3 t1 C- ?- L% |# |* G
  536. STA MMC3_IRQ_DISABLE
    " v5 q. b2 W' o+ x
  537. & B/ b' j$ v" l$ y
  538. ;水平镜像2 c& H1 E+ B$ m$ p3 G7 Q% ~" C
  539. LDA #$01
    / I% L; n1 c1 I+ C2 {9 F0 }
  540. STA MMC3_MIRRORING* G+ a% l8 O! T0 q9 i, q
  541. 0 _  R) ^2 _' {! q2 S
  542. ;初始化图形bank
      E0 |, }% M9 C0 E4 z+ O3 M: C
  543. JSR Init_MMC3_Chr_Bank
    0 b$ G5 I: j9 n" D* C3 p2 a
  544. 3 m+ N9 A5 k, o) b
  545. RTS
    / Z; G- Z- n) T: \) `
  546. ;==================================================& C0 e: s# K* F2 _. D4 i
  547. ProgramBegin;主程序
    : ^) d% L# z: P) [
  548. LDA #$00
    9 [! j+ B' `: l: m
  549. STA PPU_CTRL
    0 \6 X; I- j) w; q% X0 ~
  550. LDA #$00
    6 L( {  @0 g* }( c. R4 M1 `
  551. STA PPU_STATUS: d& O3 v7 `) H. n8 L5 e
  552. STA PPU_MASK, D% Y' E2 Q+ Y: ~! e9 Z
  553. STA JOY2_FRAME
    % m2 k. `8 ^$ g9 S. E1 s
  554. , q& I9 n, a6 U5 g8 D  r7 W
  555. STA PPU_SCROLL
    - y# }5 H  E) i( {4 c/ c& k9 _. Q
  556. STA PPU_SCROLL
    " |2 p" \. }$ _3 V- q

  557. 9 ], Q- n1 }8 ~2 \# L. O, h) U9 X# `# l
  558. ;==================================================
    ) u! m. K" B+ B
  559. LDX #$FF
    3 c3 o- f& V* n( u
  560. TXS
    3 _' c/ ~- Z/ z* N9 Q4 U1 t  H
  561. 2 W- U: {9 [+ s- g; k- \
  562. JSR Init_MMC3- j0 f" V$ X& h' Z

  563. : d' l) F- Z3 O6 V
  564. LDX #$02
    5 ?  U4 R9 J: E9 r& W
  565. Check1
    # Z' v0 o: n* d* l  @3 S1 P2 b
  566. BIT PPU_STATUS
    $ v3 v! K. X! W
  567. BPL Check1
    $ V& x- }5 j& F
  568. Check2( v/ k, I% b8 v
  569. BIT PPU_STATUS
    6 z1 c& H# ]% a" G
  570. BMI Check2
    , Q) j7 s0 D: c$ v

  571. " M, ~) R2 H0 x3 a. o! C
  572. LDA #$0F
    8 D, \( m5 e/ k5 X/ e9 d) w
  573. STA APU_STATUS
    9 p0 m1 ~1 l7 I# R% G/ S* h1 U
  574. LDA #$C0
    ' I" F: j* s  K8 F! S6 k
  575. STA JOY2_FRAME6 S/ E& O- t" d- N% |

  576. 3 y, Q3 M, w! @+ |: v; b
  577. LDA PPU_STATUS
    9 B8 k( l% x% o$ j" d# ^0 x5 e
  578. LDA #$10
    8 L' \0 o) W' U& L2 a9 j8 N$ r/ h  h
  579. TAX" t+ ]' @. S1 w
  580. Check3
    % I  u( d0 z* l' A8 f3 K
  581. STA PPU_ADDRESS' D/ L3 ~* u# w1 r
  582. STA PPU_ADDRESS
    ; w0 {' n) Y% n7 i+ f3 f; j
  583. EOR #$00- b: m: `1 \0 I( u' y3 {
  584. DEX) `9 F. u$ j' y: R: m7 f
  585. BNE Check3
    * ]" |- p4 e' ~! [+ h
  586. ;==============================8 C; t1 r2 g, |2 C' k
  587. ;调色板清空
    2 u0 v9 z+ [( h6 D  p) U( s
  588. LDA PPU_STATUS" h& @( W$ d, ~4 ?
  589. LDA #$3F
    5 Y3 x& x/ Y& b# {+ t$ D
  590. STA PPU_ADDRESS
    * Q. j/ a$ f' w8 D# G
  591. LDA #$00& ~& n6 @6 r0 j1 X) r
  592. STA PPU_ADDRESS
    & p& m2 ]+ ~% p* l9 B  v
  593. LDA #$0F
    1 s( [# Q+ a2 ]5 X  j
  594. Palette_Clear
    ' n  U" ]- F; x* C6 L* E1 l9 |
  595. STA PPU_DATA+ V) j: s) E+ P& E. a! x/ n. E. n
  596. INX  u9 g2 y5 |# ]" Y1 Q  G
  597. CPX #$20% j/ ^9 C/ Q# |
  598. BCC Palette_Clear' ^+ l& h0 Z1 B: I1 j7 _, d) T
  599. LDA #$00& }$ l) p8 h; L% }
  600. STA APU_STATUS+ O. u! m6 {6 J5 O' j

  601. $ A4 |4 _3 n" J
  602. ;==============================
    . B5 X3 P7 q" o7 A: q
  603. ;RAM初始化. m3 E% S1 ~+ r. T. [2 d
  604. RAM_Clear_All$ C3 }0 h3 |) G2 ]% ]6 t
  605. LDY #$00
    6 F+ S( G* z! @' H# _
  606. LDX #$08
    8 K$ s, E3 m1 L
  607. LDA #$002 q6 M# s6 F8 N6 \! E
  608. STA <$00
    5 L; W7 x: B' n2 _# C
  609. STA <$011 i, H; U9 l7 y3 m3 t' F
  610. RAM_Clear_All_Start
    " U9 w7 a+ V  ^/ f1 A9 C; J
  611. STA [$00],Y4 ?  @3 Z2 ~# n& b
  612. INY
    % I+ `, P  w4 \8 g. O
  613. BNE RAM_Clear_All_Start
    * e# x! W' l2 j
  614. INC <$01
    2 m4 `: ?* O9 b, k. o5 Y- `9 u" B2 G# x
  615. DEX
    % F; Q, X- n# U) C8 |) |
  616. BNE RAM_Clear_All_Start" G* v1 }* n/ n% S  b- i; K8 U
  617. 8 R, _" F" `# n- Q% X
  618. JSR VramClear
    9 Z* r* z, B, {# s0 Z- J
  619. JSR VramInit  D' t7 z$ X) f# F; u( k
  620. JSR OAM_Ram_Init% H- z& L: S( A' c
  621. JSR Init_Palette_Addr  P4 q" V9 I2 K
  622. " M. `; G% Y: g- k: c
  623. LDA #$FF. ?5 ]# d& L: \, M1 a
  624. STA Use_Ram_End+ S+ d) G# Q% J- B: @7 G
  625. ;==============================
    9 n1 C% ?& v, K. x6 G) _
  626. ;初始化背景调色板. L# r$ A& f) t
  627. JSR Set_Palette_Color
      d* ]. Y' Z, B; c4 N. l# h- a
  628. JSR Set_NameTable_Attributes# N/ D2 `# J8 [2 H' Q

  629. $ S% W$ _# p; w/ o
  630. LDA #$00
    . F* O5 t( i  t5 ?4 d1 |
  631. STA PPU_OAM_ADDR$ R% W2 n% p2 `+ h7 j6 O" {+ R
  632. LDA #OAM_TEMP_ADDR / $0100
    * w2 Q, I/ l3 I. I4 j$ D0 q4 H# B
  633. STA OAM_DMA
    0 w% X. [$ G+ J9 U: h

  634. , o' Z: A0 T: y1 Y# f3 ~
  635. JSR Sound_Reset_Proc
    # }9 l( n! Q7 A* f. G4 A8 O4 d
  636. JSR Set_Sound_Total
    - I0 i7 ]* F5 U' X, r0 C
  637.   w& E. i3 ^6 c+ b
  638. Init_Start_Music+ S! Y* M- B+ H+ |+ x* l
  639. LDX #$00# r6 a1 q+ ^/ O. M5 |
  640. Init_Start_Music_Write9 D  `/ b5 f8 H& d$ i
  641. LDA Sound_Start_Port,X
    0 D8 G& A4 N* v: c
  642. STA <Music_Cur,X! U: E/ X7 J% @; _, C9 \7 d+ g
  643. INX
    : J! {1 r& J; @( n4 I" i
  644. CPX #ITEM_MAX_SIZE4 p7 y- L, R- U$ p- F
  645. BCC Init_Start_Music_Write
      n$ p/ ~9 ~4 t& r5 ~

  646. , y0 a- E  {' R  {0 W  ^* Z3 N$ ~
  647. JSR Show_Music_Text
    $ ?+ N2 B/ k3 y  I- r5 Y
  648. * M7 [" M0 a+ i+ M# N" H4 S, V8 T1 \) y$ j
  649. .IF SOUND_BAR_SHOW_ENABLE
    $ C$ Z$ O* ~0 o- n% m
  650. JSR Sound_Bar_Text_Set  ]. k( T) ^' F2 |/ `
  651. .ENDIF
    * W! @% G: j1 [8 W+ b' L6 v

  652.   h- w+ |) G+ D- q+ `, D5 H" x) F
  653. .IF Track_Name_Pos
    * t$ F2 T# T) Z# O7 y
  654. JSR Show_Track_Info
    * ~, ?& Y* f: g$ F
  655. .ENDIF
    : S1 J: J3 Y6 M, i8 P) F

  656. ) U! P) V; @, c. C$ y" H) f5 s4 M
  657. JSR PPU_Proc$ l& D6 `: @; U; q2 [! D7 p

  658. : _3 K0 `& {  ~+ L! `2 f* I
  659. ;==================================================; ]) P5 U/ R  U* A! j
  660. ;音乐bank初始化
    / Z4 a, P( I  {7 k& q
  661. JSR Init_Sound_Bank/ a- M; d7 Y3 Y2 S3 R

  662. $ J# R1 L, p+ o% A# ]9 a0 U
  663. JSR Music_Show9 k& X8 Y; z( v; r- x) K  |
  664. JSR Time_Show
    ; b! j' ]; I7 J. ~6 b' u
  665. JSR Music_State_Show
    + R" \, Z( M; S9 A0 e; j
  666. JSR Time_Delay
    : A, R. Z/ S- W/ [4 @

  667. ; V* f. j0 h1 R: W# t
  668. LDA #$01
    ( d' g7 Y4 l3 K# E" @8 I
  669. STA <Music_Stop_State
    2 j: @2 l; d& U: s8 {+ e) ?
  670. 7 }4 J; d( d4 S3 F, ]
  671. LDA #$88$ _; r5 d- x3 y' Q9 {
  672. STA Screen_Ctrl
      D2 p& R" Z: N9 |+ n$ v( \+ ]& O/ ^
  673. STA PPU_CTRL5 [6 D  L" N8 N2 g7 i% M

  674. 9 g6 N# R: _- t0 B4 {, t+ T
  675. JSR Show_Page_Text9 W( m; f0 B+ F8 ?6 p. e
  676. 8 D# r4 s7 h& I, R
  677. LDA #$103 r% h4 Z2 }. \* w1 S! h
  678. STA <Time_Wait_Cnt
    0 K/ P; R7 U$ w9 X. d1 b1 q
  679.   K! B4 I  `' d9 j7 }
  680. Wait_Time_Over
    8 z& p. d6 m' R/ o
  681. LDA <Time_Wait_Cnt
    - P+ D5 K7 V3 _+ E
  682. BNE Wait_Time_Over
    3 d6 Z. J, v, O5 K

  683. ' h1 F9 ^2 ]6 c) W; E
  684. JSR Show_Arrow4 s* j  M% d# J
  685. LDA #OAM_TEMP_ADDR / $0100
    1 @4 B- b3 R& t5 M5 S2 Y  n
  686. STA OAM_DMA
    9 @& u+ U$ p! f- f4 X0 r
  687. 7 m4 Z2 Z  w1 t% r* [$ t2 `
  688. LDA #$1E& j- l: G" A6 B0 P( I. w' |$ b$ j
  689. STA Screen_State1 b4 L/ {! W& H$ O9 z8 C! g# v9 E
  690. 7 `8 t: G' m2 ^5 ~6 i4 I* J* i
  691. LDX <Music_Item_Cur
    + \+ A! x0 J4 b& a5 \0 |
  692. LDA <Music_Cur,X2 w. h  M5 u- h' T3 E! ?: [; I
  693. JSR Sound_Init_Proc# U0 a+ S8 F# L  y( |

  694. 9 I) V1 z$ P* w/ d7 a1 F
  695. CLI
    8 Q# Y2 {' n1 J9 x
  696. JMP MainLoop
    - ]1 Z6 {' Q9 m- Z
  697. 9 n4 v( y& G) w9 }- S) k
  698. ;==============================! ~- c9 y& `2 g( C+ l  U
  699. Time_Delay;延时等待
    8 P0 Q/ v" v. M7 Z4 k" `
  700. LDA PPU_STATUS9 b- {5 V! b7 U% R0 A1 u
  701. BPL Time_Delay
    5 _+ m! Y1 Z- s4 l
  702. RTS! D! R) s% ]1 _: y' [

  703. ' S9 d9 K/ B& D& X' r2 l# [
  704. ;==============================
    0 o- X4 c- v7 [4 `2 f# b# {, Q
  705. OAM_Ram_Init;初始化精灵内存
      F1 ?. u: ]3 K  R& l
  706. LDX #$00* P% l/ b( F* ~- x! w2 N! f
  707. OAM_Ram_Init_Write
    ) I5 j' z$ r: }/ D/ K- j
  708. LDA #$F8" Y. ]1 R1 s1 u- C
  709. STA OAM_TEMP_ADDR,X( |. b1 Y0 Y  b* Q8 y" F( r3 `( N
  710. INX  J& O, B. t2 I4 z
  711. LDA #$F8
    ) q( R) K; y. o8 k/ \) B
  712. STA OAM_TEMP_ADDR,X
    8 U2 u% j, R7 \$ h7 M" J7 |8 C
  713. INX
    1 w" F& T6 e' z
  714. LDA #$00
    8 F+ E& S) R' ?! M! {
  715. STA OAM_TEMP_ADDR,X; f6 u/ h+ I4 @7 z
  716. INX- S9 z* ~' }! g3 i: Y/ O5 w# }
  717. LDA #$F8; C# S( r& `, F* r6 u/ j/ e
  718. STA OAM_TEMP_ADDR,X
    2 D* Z2 d6 H0 v; y8 i9 o( }
  719. INX2 R9 e* e5 x0 W
  720. BNE OAM_Ram_Init_Write; i' O$ P/ ~! _1 K' d6 S
  721. RTS
    & N0 a/ H7 R% p6 J: T6 l0 }

  722. & G4 f! T* r* y1 e, d  _" F* ?
  723. ;==============================
    & R6 Y/ Z( J+ \3 D
  724. VramClear;初始化图形内存
    / e1 I6 k3 W: W5 B* S
  725. LDA #$20
    ' k+ E: Q6 d/ u" h# {& p- ]
  726. STA PPU_ADDRESS
    * N+ g) n8 B  O& c/ ?% a+ C
  727. LDA #$000 x" j8 F0 ?9 L5 L. R/ j
  728. STA PPU_ADDRESS  D' u) {4 `) S+ N7 K" V: ?4 @
  729. LDA #$00
    ; g6 q/ a7 d1 X$ {2 u% s/ H
  730. LDY #$00
      [/ D7 Y) N2 Y7 R4 \
  731. LDX #$107 y, w% u) x  P0 f$ b) z
  732. VramClearWrite
      u1 [( z2 f* z4 d1 O3 t6 @6 X% }
  733. STA PPU_DATA
    & |2 L* ~9 R2 w
  734. INY& V3 |1 e1 O. H+ y3 h
  735. BNE VramClearWrite) p( X: v: }/ u0 V3 o1 n4 c
  736. DEX
    " |- c& j* h% c
  737. BNE VramClearWrite5 g! }- ?/ v: \% X2 l
  738. RTS  ~. P3 ^2 x; M5 N- O

  739. : P' p" Z% {: p( C
  740. ;==================================================
    / |) R$ B$ f$ E1 v4 ?
  741. ;设置MMC3图像bank# @0 Q" [# f$ i. s) X6 ?
  742. Init_MMC3_Chr_Bank
    ! g0 U. y6 [$ Y- g, B6 ?! z
  743. LDX #$05
    - b+ W  J% ]6 Q4 i4 V
  744. Init_MMC3_Chr_Bank_Write* H; U( M" @' S! U
  745. STX MMC3_BANK_CTRL, o% S- o5 C, W4 g9 L8 [, X
  746. LDA MMC3_Chr_Bank_Data,X/ C( u( c) f' g7 h" n( n
  747. STA MMC3_BANK_DATA
      w. N! |* G* V1 C# a
  748. DEX) `( b' Q( f- C2 e+ a7 o9 @. B  {$ f
  749. BPL Init_MMC3_Chr_Bank_Write) T9 `5 t  ^; D# i  o% l5 p
  750. RTS
    & t9 Q8 A: E8 y' i5 d
  751. ;--------------------------------------------------) M' g& C. I+ `) c/ b$ D+ D
  752. MMC3_Chr_Bank_Data
      ^! E9 ?. L8 r$ J) r% c
  753. .DB $00,$02,$04,$05,$06,$07
    / o! [1 L" T& z9 x
  754. 2 B9 R% m0 a/ H+ a" b% E) ~/ l6 |
  755. ;==============================$ k1 c8 C5 I0 e. I
  756. VramInit;初始化图形内存
    0 f3 w/ ^4 A% K* m& v1 A# x
  757. .IF CHR_RAM_ENABLE' G3 D! ^9 P" ^; A4 L& n1 f
  758. LDA #CHR_DATA_BANK3 n6 d7 K/ X' N8 ?$ q! j2 P$ H
  759. JSR Switch_Bank_A000$ T9 I0 a) J2 |( e
  760. LDA #LOW(CHR_DATA_ADDR)
    % i+ o: e5 J  \9 ^
  761. STA <Data_L- B( `- ^/ q. ?8 U; H& k' Q7 Y
  762. LDA #HIGH(CHR_DATA_ADDR)
    " u/ W1 f, Q4 L% J9 G- Y
  763. STA <Data_H: D/ ?- o1 ~6 r: n
  764. LDY #$004 K( j, O' t1 E; l, F% c( o9 e/ ^
  765. LDX #$20
    9 {7 B; O1 G; |. m+ a
  766. LDA #$00
    6 P! g4 v5 n/ ]4 ^7 w
  767. STA PPU_ADDRESS! P$ r6 M( _2 ~8 ^
  768. STA PPU_ADDRESS8 Y8 @8 a0 F9 F  |5 {
  769. VramInitWrite% i0 U: u. ?7 g) {- v( |7 i
  770. LDA [Data_L],Y
    ( w# y, s; F3 D/ d% @$ t& \5 ^
  771. STA PPU_DATA
    ! u1 ?, u# a# D
  772. INY
    8 Z+ p2 k7 B* o. r7 f
  773. BNE VramInitWrite; K' \9 x) V, t7 G
  774. INC <Data_H
    ( w* W& ~' Y2 _/ U+ V
  775. DEX
    ) R+ \$ ^9 ]$ F
  776. BNE VramInitWrite
    4 y1 {6 Q" I* K6 C1 B3 [
  777. .ENDIF
    # y1 K8 @% {# v( D  H
  778. RTS
      m) x) o$ V& d3 x( y' |

  779. - D. @. c7 l0 M- D7 x5 c/ e
  780. ;==============================
    4 K# n+ j7 L: X0 r" r
  781. ;音乐切换3 u% ~! R" a& X( u) }' \
  782. Music_Play_Change
      L8 {; T# p' s, C8 X
  783. LDA <Key_Once
    + H! B/ U/ x4 B- l' Q/ V! ^
  784. AND #$FF# C& u' x/ j0 u: @: ]3 A# Z
  785. BEQ Music_Play_Change_Check, o2 b  U' O+ S
  786. ; K0 P  G& ~2 ?5 l6 @
  787. ;禁用音乐条刷新$ b, X' U: c8 ^8 k2 [- o3 p
  788. LDA <Text_Disable_Flag
    9 e+ ]' r2 p* t4 _6 \7 O
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME0 i' Y$ r, x0 i, u" t0 B$ y8 i4 ]
  790. STA <Text_Disable_Flag6 Y8 F% Z/ V' S7 }. D' M' `% X% D3 C, P

  791. " s" ]! x- H7 e# z( R) V/ s
  792. Music_Play_Change_Check
    9 a# q5 E2 I) R/ k
  793. Music_arrow
    ' `9 f" [; N6 k% ~  M7 X" E8 u) d" Y
  794. LDA <Key_Once
    6 ~4 }( F+ u# A8 u0 T; a
  795. AND #$0F
    0 f: F9 S- h5 c! P
  796. BEQ Music_Play_Change_End7 i# F8 Z7 x/ d, V3 y$ h: m3 @2 b- \
  797. JSR Music_Track_Change8 ?- M) _: I& m1 `6 R6 Z: c" G% r
  798. JSR Sound_Reset_Proc" J' q. d7 u2 j: i
  799. JSR Music_Show
    1 h7 d; u1 H+ `; ?
  800. Music_Play_Change_End
    ! O3 z. C7 l% L; |8 _2 B
  801. RTS
    / S' D2 U& r1 A' w" d% K
  802. ( \8 i" Q8 n5 o. S
  803. ;==============================" n5 t: x2 \. [" E4 j6 q
  804. ;音乐曲目切换8 c3 b6 V5 h5 L3 [3 d) n" Y3 R
  805. Music_Track_Change- R9 D7 J9 A" }5 Y  T% [
  806. LDX <Music_Item_Cur
    / p5 X2 O3 L  V& H' D
  807. LDA <Music_Cur,X
    1 x$ _  _2 g) l; X$ G; t  G
  808. STA <Music_Last# L$ D: s0 M+ y+ i3 m. c
  809. Music_Decrease2 T2 S2 h' u/ f% K1 z3 i
  810. LDA <Key_Once
    ( d" o* ?+ q" L: H4 U0 a( `# `
  811. AND #$42
    ' T0 S6 U' s; Z. V% Q2 i7 d4 Y
  812. BEQ Music_Increase; z( `9 D$ ^7 Y1 ?# o
  813. LDA <Music_Cur,X
    + y  N. O# u% V0 n
  814. BEQ Music_Increase4 X# A% K1 C' Z. ^, _
  815. DEC <Music_Cur,X
    6 M0 d+ h. f) G  x  q; N4 @
  816. Music_Increase' \! r/ g* [& P# @. u8 R
  817. LDA <Key_Once
    " L5 |" A" G' B9 T; `
  818. AND #$81
    : W. r8 m9 }% T1 u8 O0 d+ a/ l
  819. BEQ Music_Decrease_10
    0 N$ g2 x! o: O6 L, e! C0 E
  820. JSR Set_Sound_Total+ i/ M% K, C7 K
  821. LDA <Music_Cur,X$ M# e- v8 S5 v( T7 x
  822. CMP Music_Total- ^# r$ Z2 ?6 c& ~
  823. BCS * + 4
    ; t& T! ]4 |  |7 K1 |" Z. G' U0 S
  824. INC <Music_Cur,X2 W8 [7 E, ?% _4 q: P
  825. Music_Decrease_10$ [4 w+ S8 M& R. m' h
  826. LDA <Key_Once
    . V5 x' V9 O! u( S$ ]& h
  827. CMP #$045 H. h# f8 U3 R
  828. BNE Music_Increase_103 ]% Z7 B( k" }' c! d0 Q
  829. LDA <Music_Cur,X& x: U* x0 g6 o( n4 D' Q( P2 K
  830. CMP #10# b. F' q2 k7 Q- z) z; D$ f
  831. BCC Music_Start_Song_Min2 `" U9 S3 ]8 b- W4 I
  832. LDA <Music_Cur,X
    , N" R9 y( s$ G
  833. SEC
    ' p8 a, l$ g% `6 j
  834. SBC #10
    # n  L5 i  p$ K% ]
  835. STA <Music_Cur,X7 ~+ O8 @) {# C& j  t9 W( n5 m
  836. LDA #$00
    5 F  B, z' f" q) ~2 z
  837. BEQ Music_Increase_10' p6 c/ G4 |% ?; z  j4 l) D
  838. Music_Start_Song_Min
    ; F. d. x, r9 E; \% O
  839. LDA #$007 P8 U* y* b: l8 k% {  K
  840. STA <Music_Cur,X# j/ e4 p- B( V
  841. Music_Increase_108 J4 o) J# e% Z
  842. LDA <Key_Once
    6 i- l4 u) Z( {: Q: b* ]- ^
  843. CMP #$080 J# ^# d6 x; G$ K
  844. BNE Music_Track_Change_End, y- ]6 i; H2 @6 j" A8 w3 ?
  845. LDA <Music_Cur,X
    . ^  ?. O( v8 F' \& I
  846. CLC
    2 k5 Y3 U! G$ E2 Z4 ]
  847. ADC #108 E3 I0 I) M# x4 E
  848. CMP Music_Total
    % n3 K, w* @3 H, J( `$ C
  849. BCS Music_Start_Song_Max0 k1 ~/ B. g" S* m  X6 O7 H' r* l
  850. STA <Music_Cur,X2 U$ }. Z8 Q( H' i5 R
  851. LDA #00  D- Y( \, k9 e0 o$ M
  852. BEQ Music_Track_Change_End0 J  s7 I) ?, k' q; F& f$ G/ |
  853. Music_Start_Song_Max
    ) O$ l+ X! R$ \
  854. LDA Music_Total" t& ?, T- U. x
  855. STA <Music_Cur,X
    . H/ M( S# C$ C! y  x( C9 w6 a
  856. Music_Track_Change_End  u% V4 N$ g* A
  857. RTS
      t1 f/ q- j" t! e: u$ T
  858. 0 h+ j- B9 e0 |6 Y( o5 v! ]
  859. ;==============================
    1 W4 f# P+ b, X  N& S
  860. ;按键处理
    1 o2 R* f: O) o8 A& z
  861. Key_Proc
    . A! R( m; m  m
  862. JSR Key_Scan
    ; s5 V& L1 J6 P( |3 y8 o
  863. LDA <Key_Keep% ^+ f' C# N  X+ M
  864. STA <Key_Temp5 h; f3 e% U1 l) s1 u- d
  865. JSR Key_Scan
    5 r7 H  q; E( ^9 }
  866. LDA <Key_Keep( ?: q# {/ g% h
  867. CMP <Key_Temp; {0 ^/ O* K$ H, Z; e/ Z9 o
  868. BEQ Key_Get_Once
    % h+ `) |# P- m9 _; i3 @( f/ F8 F6 d0 L
  869. LDA <Key_Kemp3 q# K5 _4 h" n
  870. STA <Key_Keep
    " \# K. b- o6 [4 Y
  871. Key_Get_Once
      f- T0 o+ T- o. y
  872. TAY
    ) O8 d% m+ f" K7 A% Y% C/ t+ D3 T! U$ q
  873. EOR Key_Kemp7 ]+ M" k$ Y& K5 m4 M8 a3 L: e
  874. AND <Key_Keep. y6 B1 k1 e$ g' K3 S& H: p: q
  875. STA <Key_Once
    4 A# x; |% S$ e& W8 j8 T$ e9 B
  876. STY <Key_Kemp
    4 g( }: m6 a- C7 ]: P
  877. RTS
    3 c/ E, @0 N9 m
  878. ;------------------------------* {8 E0 W( C& t! }  s+ c
  879. ;按键扫描% x% e: i1 ~1 X, h
  880. Key_Scan' f6 \; n5 w- _$ ]  Z* Q$ T
  881. LDX #$01
    % B* [7 ?  v  N( u
  882. STX JOY1_FRAME7 P3 R; h: z6 L$ Q8 Z- i
  883. DEX0 b7 F  _! ~: h) S9 J0 a; k
  884. STX JOY1_FRAME. A; M  p% p8 U
  885. LDX #$08- Y. D3 S& @, y+ J/ x+ j5 M
  886. Key_Value
    ) }" p! Q2 x3 [5 k  P- x. _$ F
  887. LDA JOY1_FRAME' j0 L9 F) p( W1 H& y3 i7 w' t
  888. STA <Key_Getv1 V, j0 y2 |9 u: o7 j1 Z
  889. LSR A: Z$ c6 I$ {9 r9 W
  890. ORA <Key_Getv
    8 P: n5 U3 M* V! e0 J7 ]8 [4 c
  891. LSR A
    & o3 n% q3 Q: f8 {* Y8 ^
  892. ROL <Key_Keep
    ) R4 E1 L1 F( x( E9 a% G/ I; E. k
  893. DEX
    ' v" |6 S. p7 y4 }7 s$ s
  894. BNE Key_Value
    9 B8 I3 f& ?* G+ M% r5 r: G( J9 p
  895. RTS; u9 |, A0 }, J3 b3 C" i
  896. 8 n5 m! N* Q1 d( u
  897. ;==============================
    " s. I* j! O7 p% ~, C" B( l
  898. .IF SOUND_BAR_SHOW_ENABLE
    + Y! }0 B; G' ~
  899. ;音乐条显示* X0 s! Y! Q" \+ e2 A
  900. Music_Vision# T& P' C5 Y6 W4 M4 e9 `
  901. LDA <Text_Disable_Flag  F; P" {: `1 m& d0 R/ w# U+ U
  902. AND #TEXT_DISABLE_ITEM. x! c7 M5 R! L) _% s/ Y
  903. BNE Music_Vision_End
    " r" t1 ~+ M0 G3 g
  904. AND #TEXT_DISABLE_BAR5 }  E% [5 W, r) P
  905. BNE Music_Vision_Set1 G8 J$ V& a( F) }7 i7 f7 U6 j$ @
  906. LDX PPU_Cur3 a5 F! f  B; S5 c; u: a6 I* U0 f  y
  907. JSR Music_Animation
    $ z/ Q5 K1 V- K" I
  908. STX PPU_Cur0 B+ g2 b! |# [& N( I  v
  909. Music_Vision_Set
    + ]4 m2 o0 O$ B
  910. LDA <Text_Disable_Flag
    2 R$ q% s8 A2 L6 }0 [  k
  911. AND #TEXT_DISABLE_BAR ^ $FF1 j$ }6 g: F6 d5 V, V5 Z6 g
  912. STA <Text_Disable_Flag
    $ f: z0 ?3 ]* t
  913. Music_Vision_End
    ! h; _! B  h& b) e( a" l
  914. RTS
    # ]& |/ {3 H  n# q" }
  915. ;------------------------------9 R/ Y7 }8 o8 m9 q# ^. R' R( B# l* _
  916. ;音乐条显示处理
    ) C  V, p# a1 ]( o: r2 r6 V
  917. Music_Animation
    7 U9 H9 ~8 ?* I+ N  Q
  918. LDA #PPU_MODE_CNT_LINE8 ^! Z" V* o% b- `# k2 W
  919. STA PPU_Addr,X
    1 z9 @/ @; `* T0 w
  920. INX; H" d. Y& i5 i! \4 k1 n
  921. LDA #HIGH(Sound_Bar_Pos)
    : I3 {6 c; Y% b
  922. STA PPU_Addr,X
    2 S' W9 P4 |, V8 g4 L
  923. INX8 O3 H0 N( P; W. P8 b0 G' b
  924. LDA #LOW(Sound_Bar_Pos)
    ) v( d( q* x" R: @; V$ g# \+ y7 m
  925. STA PPU_Addr,X" X: Q9 t: L. Y2 m, Z
  926. INX6 W5 f8 _' k+ n  f4 O
  927. LDA #$08$ A, r' L: _7 a1 [! C0 T
  928. STA PPU_Addr,X. Q3 H, q* a2 ^, g% j/ ~* q
  929. INX  l( i( K& }0 @4 D% W
  930. LDA Sound_Bar
    . f' i; f5 W' }
  931. JSR Volume_Convert4 S. K8 {) |+ ?/ I) z

  932. ) M8 U, n: |/ k" t- v$ Q
  933. JSR Volume_Set_Cnt
    & d8 }# U6 E8 u5 |4 X' Z
  934. LDA Sound_Bar+$47 V# u* c2 p8 S% ^& c! {
  935. JSR Volume_Convert
    2 f0 d: k( B' {

  936. # s4 [3 n' n$ U
  937. JSR Volume_Set_Cnt
    + j1 \2 J0 J4 Z! `
  938. LDA Sound_Bar+$85 X3 T8 A2 u0 S6 _5 }
  939. JSR Volume_Convert% X- x: }2 M7 A3 P1 x4 \4 r
  940. % s. L7 k* I- n, Z) e# q! e2 Y3 j0 v0 }
  941. JSR Volume_Set_Cnt& W4 S# O) \1 r7 N6 g7 o% R
  942. LDA Sound_Bar+$C& z6 B. x4 T4 D0 [) t, [' t
  943. JSR Volume_Convert5 o3 w4 i8 R# k2 |4 v: i
  944. 1 |" I# F/ `1 u+ p
  945. JSR Volume_Set_Cnt
    , e9 K, I" Q' @6 {' R* F) t
  946. ) R3 I" f+ y3 Y; {, e0 J& ?
  947. LDY #$10
    ! G: p3 Y9 T; j3 i7 ?
  948. LDA APU_STATUS
    0 R5 b" I8 x  ?: Z0 Y9 p
  949. AND #$106 Y' u! V7 k( c4 t4 \6 ~) b
  950. BNE Volume_Count
    , r+ p6 g/ F1 x+ y% s3 L8 Q( E
  951. LDY #$00
    4 B. G% a; h; R0 a! ^
  952. BEQ Volume_Count
    6 r$ {( K3 @/ ?; }( l" D/ \

  953. + ^9 X2 _5 `, b* w
  954. ;------------------------------
    & S. Z5 k( b$ G
  955. ;音乐条处理
    4 M7 h% B1 X2 y& W* |5 k3 j, a* F
  956. Volume_Convert4 R7 n; t6 a, V8 i  }% q
  957. AND #$0F
    & M9 F) Z8 Y0 I) H) v  z- ]
  958. TAY4 N* d9 B- X/ S9 W1 K
  959. Volume_Count& s/ J4 I6 u' X+ l6 T% I& ]* C4 W7 p
  960. LDA #$08
      i! }/ E3 h3 s* @( Q+ z! e8 v
  961. STA Sound_Bar_Cnt
    ! |1 e0 C# F: D' e. t  _0 t
  962. Volume_FILL
    + r  X" g  R4 }
  963. DEY" R  P) Q. U$ M% H1 {# w) V
  964. BEQ Volume_Half7 N9 J4 h# X. U
  965. BMI Volume_Empty
    9 x: O! O% T+ w; W8 k# S6 I0 s8 r/ K
  966. DEY4 W. X% h& P4 y/ X! `, @! I" R8 w
  967. Volume_Full
    / A- L( \7 O5 S5 ?- {7 m( s
  968. LDA #$168 q. F1 m* P9 N9 O: g6 m
  969. BNE Volume_PPU
    7 W( c, e! M) W0 N" ^, k$ s
  970. Volume_Half- S4 Y$ Z& \0 z7 |9 c9 R( A
  971. LDA #$158 {0 T5 i: R  j4 p
  972. BNE Volume_PPU
    4 Q# C: @* Y! t; Q3 `
  973. Volume_Empty( C1 D+ ]3 X5 D% {
  974. LDA #$14  d) E0 K. D2 b+ k) `
  975. Volume_PPU7 l" S( A$ ^5 @+ h" c6 O( |
  976. STA PPU_Addr,X
    ; r& T3 V( j; @* Z7 P
  977. INX" u# C% T8 A  _; e" t( U1 F- ?, u
  978. DEC Sound_Bar_Cnt
      B. }: H0 V& G) m" e; \4 n0 T
  979. BNE Volume_FILL4 C9 H* d& O. n# s
  980. RTS1 h# ~. Z% h9 S" u6 e
  981. ( M1 b. c* l$ D. _! \+ {$ t
  982. Volume_Set_Cnt
    7 r$ Q6 s4 |  b0 B( v8 r+ P2 ]# l
  983. LDA #PPU_MODE_CNT_LINE_NEXT2 e1 h9 x, w: j( R3 H$ l' D
  984. STA PPU_Addr,X- p3 ^2 E& u: I( N$ T0 P. k
  985. INX
    1 Z/ h3 M* M. \8 {8 s
  986. LDA #$086 W0 g5 h2 |& w+ P
  987. STA PPU_Addr,X$ q# r/ U- l4 a
  988. INX0 P, h7 u9 m" e8 E) J6 H
  989. RTS+ \3 f1 s  a/ J* {  \# n+ G

  990. , a. `# n1 P8 l3 G0 z
  991. .ENDIF1 G3 s7 ^! V: V/ a3 P
  992. 5 l8 R/ z# s3 K0 e2 I! H: e
  993. ;==============================
    ) \5 P  @7 e7 I8 ]- N3 H9 B
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入4 Y8 x4 M4 s" @1 `# J# r' z  X
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    9 h$ \* [1 G+ R( L* Z- v
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    2 M4 i# z! b. h6 y
  997. ;------------------------------
      w& A) n4 K4 h  u5 w
  998. ;PPU处理5 }0 J4 Z% \3 a6 q: Q0 v5 S/ P: n2 K
  999. PPU_Proc
    0 J2 d' `% H2 I8 ?4 q, k  ^
  1000. LDX PPU_Cur. C. N0 e+ q: z2 I. e
  1001. LDA #$00
    ; |4 |/ |& x2 p
  1002. STA PPU_Cur
    0 N4 ^; Q# ^- w6 D2 N5 o' n' m; ~$ @
  1003. STA PPU_Addr,X
    * R# T) s3 y  R' T
  1004. LDA PPU_Addr- Z( B3 r8 \8 U8 C% ?
  1005. BNE PPU_Proc_Beg3 G* W! [  D" ?- t% @
  1006. PPU_Proc_Ret; S% t! V. ]) P9 B, w6 l; E
  1007. RTS/ X6 W" Y- a/ y# ~+ g) `$ C9 ?

  1008. + Q% W7 R8 A" }& Y( j
  1009. ;------------------------------3 D9 S$ ~- ~  T' x* ]3 L
  1010. PPU_Mode_Return_Cnt  ;转下行模式/ u1 L8 v- b! t5 A4 O5 y
  1011. INX
    0 Z# N  N& i6 b* e$ ^0 L
  1012. LDA PPU_Addr_L4 G2 r+ \8 b" H
  1013. CLC
    ! B# p$ b# S  y9 V  b2 Y
  1014. ADC #$20
    5 h' ~: L) ~: s8 j! @3 w/ I
  1015. STA PPU_Addr_L
    : [+ I9 N" M5 q: y
  1016. BCC PPU_Mode_Return_Cnt_End+ k2 R0 Z0 Q3 e( n0 x7 c4 u# T
  1017. INC PPU_Addr_H0 S$ Q8 H" R& L& [7 n$ @5 G8 v
  1018. PPU_Mode_Return_Cnt_End
    ! k4 w: h: s% }$ j
  1019. LDA PPU_Addr_H
    # O9 g9 b: c9 Z% i7 W  `+ v  J. l/ I
  1020. STA PPU_ADDRESS
    6 `# G# ~* o8 g3 G
  1021. LDA PPU_Addr_L- Z( G4 X) |  z1 j
  1022. STA PPU_ADDRESS
    & |) k& d5 T) D# z: T& w$ j
  1023. LDA PPU_Addr,X
    $ g8 ?6 ?9 h  J
  1024. TAY) m) t4 w2 V, G! R6 V8 u5 d! F
  1025. PPU_Mode_Return_Cnt_Write  V( t4 |6 {6 q
  1026. INX
    % X4 b" x3 o( m1 b
  1027. LDA PPU_Addr,X
    6 B  \; c  p6 H. ]
  1028. STA PPU_DATA# [; F/ [! G7 D3 n+ P' I
  1029. DEY! ^) s; Z& `, R# Z* o& [; b% H0 Y# `
  1030. BNE PPU_Mode_Return_Cnt_Write
    # N4 l0 Z) e2 u3 Q
  1031. JMP PPU_Proc_End9 W: ]3 j, n. l  ?2 m7 n# i

  1032. 7 m" T* v$ g& q+ d
  1033. ;------------------------------
    ) ]8 [0 I) K1 h5 l8 ?
  1034. PPU_Proc_Beg  ;处理开始
    ' r- T$ Y9 G: U8 R# s% s- M" Y8 x
  1035. LDX #$00
    0 H/ S' _7 W2 I$ J9 J
  1036. STX PPU_MASK
    , Q- U: c8 ^7 q* z; i+ X, A3 t2 A* ]
  1037. ;------------------------------+ |; Z0 Q) u& @# v) o
  1038. PPU_Mode_Select  ;模式选择
      S1 H* a& e4 ?# Y
  1039. LDA PPU_Addr,X3 }/ v. Z) [2 ?2 H( Q3 L# z
  1040. CMP #PPU_MODE_CNT_CLEAR' M4 }' C+ ~$ f. C$ i
  1041. BEQ PPU_Proc_Clear. d. U% ^" Z  W" y; X8 g: e
  1042. CMP #PPU_MODE_CNT_LINE6 f. b- [5 k+ U" a2 I6 _" M
  1043. BEQ PPU_Proc_Cnt_Line
    3 h% _9 K2 o3 C! }* i" t2 a
  1044. CMP #PPU_MODE_CNT_LINE_NEXT, U5 |! n: I2 h
  1045. BEQ PPU_Mode_Return_Cnt
    ( e* k7 O7 Z) o
  1046. JMP PPU_Proc_End_Write
    ' E% \8 c3 L( H9 j; k
  1047. ;------------------------------
      N0 m  H6 i: c" y# e% \3 d
  1048. PPU_Proc_End  ;单行写入结束
    * e8 K- z  M% u! W. W9 g
  1049. INX7 j; `( }# @+ s( w' L8 m/ }
  1050. LDA PPU_Addr,X; ~  A. X1 Y, ?
  1051. BNE PPU_Mode_Select
      }# |9 ?4 O. r6 K' @
  1052. STA PPU_Addr# q( U. w' o4 w# [5 W7 H
  1053. JSR Update_Palette_Color& V2 P( f  H& a3 d. l  c: ~% M( k

  1054. ; c- n& R2 b% Y0 u& N7 g* L
  1055. PPU_Proc_End_Write' j; V1 P& a( [! D# j+ N, S8 F' G
  1056. LDA #$00
    4 t4 j% V# U% n
  1057. STA PPU_ADDRESS" ^- {4 y- @% Y3 s( t6 N. S
  1058. STA PPU_ADDRESS
    7 e6 \) i# ]; A% _
  1059. LDA <Text_Disable_Flag
    5 b9 b5 Z, b" W9 m) r# F1 N
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF1 L4 ]0 w9 A. v
  1061. STA <Text_Disable_Flag) R1 k6 X) O1 O8 u$ x
  1062. LDA #Scroll_X9 u5 b8 ]# ?1 o  T. e
  1063. STA PPU_SCROLL
    & Z" {# Z/ X3 @7 J$ t
  1064. LDA #Scroll_Y3 A# c* f- p1 J. k% J
  1065. STA PPU_SCROLL( {* D/ v2 G7 ?6 t, O% h0 G$ U
  1066. LDA Screen_State
    , ^& A- @6 ?% C& C
  1067. STA PPU_MASK
    ) l+ F& ]/ e+ B
  1068. RTS
    & e: r% I! q* C. k$ u0 B+ W
  1069. $ E% _6 Y8 `; N  r
  1070. PPU_Proc_Clear
    ; k. h3 E; z) M+ Y; L
  1071. INX
    / j5 [  P6 W: u. q% o, R2 E9 ?
  1072. LDA PPU_Addr,X8 s: A$ m# ?; l' }/ b( \
  1073. STA PPU_ADDRESS
    " u5 J: H" g9 t7 I
  1074. INX' r! W8 M& B6 Z1 I1 \; G& K
  1075. LDA PPU_Addr,X0 E2 P9 S' a( [* ^- d+ }# Q- o
  1076. STA PPU_ADDRESS
    5 j  }& R+ V. \: V, p6 g5 U
  1077. INX! d5 `8 M0 F  d8 Q! ~$ k( B/ M
  1078. LDY PPU_Addr,X4 r& f& n% ]# d7 D
  1079. LDA #$005 ?! I5 C5 F9 X! X. y* x
  1080. PPU_Proc_Clear_Write7 r, G7 }/ [, |/ o( |# r* {
  1081. STA PPU_DATA
    " }7 G; j; G' S- ]# L) d/ N
  1082. DEY
    8 u! i" ?! h. J3 r: N/ N7 M- D
  1083. BNE PPU_Proc_Clear_Write: ?$ K2 o* M, r- u( |* r
  1084. JMP PPU_Proc_End
    : u9 z/ k% V' h  N* @. `
  1085. 2 ?' y* b( d+ O( ]# ?/ t
  1086. PPU_Proc_Cnt_Line6 m/ }+ w6 S  |- @! X$ F: Y, w
  1087. INX
    - }0 p1 Z. N& s. U' ?" O$ w8 _
  1088. LDA PPU_Addr,X
      F: o- V5 E( Z/ ]: q7 s
  1089. STA PPU_Addr_H
    7 c! u# d* G2 t. L: Q% m2 U
  1090. STA PPU_ADDRESS  V! x3 Y* e. y: f/ P+ v
  1091. INX
    1 i3 ?0 g% o! g$ k% A" K; X' ^" R
  1092. LDA PPU_Addr,X% Q6 o. i* D" u
  1093. STA PPU_Addr_L
    ! b/ F' E6 f; ?
  1094. STA PPU_ADDRESS
    ( R. \1 n1 \6 X' {4 I
  1095. INX7 h5 u% j* E3 m2 g
  1096. LDY PPU_Addr,X% m2 |6 W9 f7 k$ Y
  1097. PPU_Proc_Cnt_Line_Write7 R! m. J" n' J* s& [
  1098. INX& d. g/ r6 l/ l* c9 v
  1099. LDA PPU_Addr,X7 |" `* G" f4 d0 p
  1100. STA PPU_DATA
    & ^. G* X4 f8 r2 r
  1101. DEY; O3 h$ l8 H$ R
  1102. BNE PPU_Proc_Cnt_Line_Write
    7 @) O5 c+ d3 t7 P/ b
  1103. JMP PPU_Proc_End4 q/ M/ P  z; E" ?, W, o# O
  1104. ; M8 e6 m- m+ U2 ~! S0 O; I
  1105. ;==============================
    ! _% H0 [6 ?6 N, C" m1 n8 B
  1106. HEX_To_Dec;十六进制转十进制
    : o+ ?) D2 U3 y+ Z& l' ^' e! Y
  1107. STA <HEX_Data& B- ^0 Z5 O8 U: F  \
  1108. PHA
    2 Y: N" N/ w; G4 ^# |/ M: q) e! H; [
  1109. TXA
    9 f; K* i) T- w4 H! t1 x. Q% d( _
  1110. PHA
    5 U4 ~" t1 z  m) a" t
  1111. LDX #$00
    + W+ m3 `  `8 e% Z
  1112. LDA #$00! ]- ~0 ~2 f3 H6 V* N# b4 |
  1113. HEX_Cln
    , w' R. ^: `- ?: T  b
  1114. STA <DEC_H,X
    * `3 _+ @4 @/ L2 s5 b$ W2 R
  1115. INX) b+ ^* b. d3 \& q
  1116. CPX #$03
    3 {  R0 P# B' h8 {0 W+ H
  1117. BCC HEX_Cln
    & c! a1 R6 I" [  ?. n2 W" c- H) T
  1118. LDA <HEX_Data
    6 i, u' v! c5 n3 m; \; m4 R
  1119. ;------------------------------
    / V! y# A' C* j* i
  1120. HEX_100* d+ H% v% x- t4 |' c; Z9 n% m
  1121. CMP #100: q' D& W7 Z8 {8 d0 e4 K
  1122. BCC HEX_10
    $ U) @( K; s- ?5 A% R& y9 ^
  1123. SEC
    - v0 `4 D; u7 z( B( y
  1124. SBC #100
    4 u% @* U1 Z' L4 t
  1125. INC <DEC_H
    ! \5 X: I2 _$ ?1 _6 l1 M' o0 s' V) W
  1126. BNE HEX_100
    $ n2 R2 E) ^- [+ d
  1127. ;------------------------------
      B" X& ^- g2 Y* j  [9 o- I3 a
  1128. HEX_10% ~5 u! K) d! v4 A& a8 n
  1129. CMP #10  e& P7 }0 e3 |  p" D5 R3 ~
  1130. BCC HEX_10 _% n) w4 j/ S+ x9 b# ]8 J
  1131. SEC
    9 @6 S0 _9 _+ E' q) x: `
  1132. SBC #10
    & ]" B) k( I" A4 ~. m/ Z6 A$ O7 V
  1133. INC <DEC_T" S- ]; p) G. C( F$ F5 I
  1134. BNE HEX_10
    $ _& H" X7 U  u, }8 Y
  1135. ;------------------------------0 {5 M( H6 V# ]2 d9 F4 i$ n+ C
  1136. HEX_1
    * N2 y& A  G5 O. Z
  1137. STA <DEC_L6 M: y# w8 u) U8 g, ~2 m2 R
  1138. PLA8 t3 w3 n8 e9 l" D( `2 f
  1139. TAX8 @3 p* B8 W: H! h* s% t( P4 `
  1140. PLA2 `5 t& X+ N" i7 x% t/ y
  1141. RTS5 b; f+ k9 H6 q& O/ j6 N: A/ T, T

  1142. + y# W6 @  ~2 R4 n6 P
  1143. ;==============================
    " K9 i* E% ]# ~0 M- b
  1144. ;音乐曲目显示  ?- O  L" M% {+ ^% j
  1145. Music_Show$ U7 {& _. H4 @3 ~
  1146. LDX <Music_Item_Cur: O; b* d% x$ h. U, }' b
  1147. LDA <Music_Cur,X, p) S6 V- @! G1 b5 `! z% R" m5 Z# |
  1148. CLC
    4 m* M3 v: i. O0 v
  1149. ADC #$01, Z- \; l" R& c/ x4 C9 J& T: Y
  1150. JSR HEX_To_Dec& e* u+ P0 n, S; J8 H
  1151. LDX PPU_Cur0 e" ?, J; P  I( E
  1152. LDA #PPU_MODE_CNT_LINE
    6 E" v( Y" O- i- B; {! d
  1153. STA PPU_Addr,X7 c/ _- L% A/ h) a
  1154. INX
    5 k8 F# J1 m+ A1 U
  1155. LDA #HIGH(Play_Index_Pos)
    # l' f- f% Q# z& K! P0 x
  1156. STA PPU_Addr,X; U( o- v* C' B5 ^0 D3 Y
  1157. INX8 i6 n% X, o4 T1 L) Z$ S8 @3 h5 m
  1158. LDA #LOW(Play_Index_Pos)/ n/ b& _- c% H8 C; K
  1159. STA PPU_Addr,X! e9 T% y, W6 r6 j: [
  1160. INX2 H% B2 r  K  }4 a) h" k
  1161. % @0 ~8 a% d! X7 c6 t
  1162. LDA #$07
      }$ ]  B6 T' N# a! y3 S. `
  1163. BNE Music_Show_Length: r6 ?# A5 G0 V/ H4 T6 R

  1164. # d3 @( d) ^5 |- {6 A
  1165. Music_Show_Length& u. q" m+ C" Q+ ?& F2 e
  1166. STA PPU_Addr,X- V+ o1 f8 j9 l4 @! t# [, ]& }
  1167. INX
    ; T# k" }; u: _. Y9 D

  1168. 9 o8 |$ ]& p* J6 T. y. P
  1169. LDA <DEC_H
      {0 X" Z6 m2 H" n; `4 D
  1170. ORA #'0') W1 F  e( N# N: @* j$ Z/ W6 P
  1171. STA PPU_Addr,X& r  q% @" R, k, l9 L) Z5 i
  1172. INX9 H  N- H3 `' G7 m4 c
  1173. ' B1 M' c4 N7 f- `/ e: z3 c
  1174. LDA <DEC_T/ n: }" ?$ X' }4 ]( h1 i
  1175. ORA #'0'/ x" S, J8 T# c  q) @
  1176. STA PPU_Addr,X. O# M/ g0 f( x; s5 h
  1177. INX8 u! B6 p6 W' H( J+ X9 ~5 X( M, I/ @, n
  1178. , V. P/ b- c. n; d7 B
  1179. LDA <DEC_L( P* t8 X% r7 P
  1180. ORA #'0'
    6 ?  W/ T, z2 R9 ^% E( a7 |
  1181. STA PPU_Addr,X
    5 O( q6 P' U# A% K# z
  1182. INX
    ( D9 F, ~, m2 V8 V4 |5 o

  1183. - {9 s, h: i/ C, A4 R# M
  1184. LDA #'/'* G. v2 {: f6 b7 y( p; }0 W
  1185. STA PPU_Addr,X
    , o' u4 [! I5 k8 j) n- g- T2 ^
  1186. INX
    4 Q3 `2 x1 j6 ^0 {+ d& z
  1187. Music_Show_Total- t- h' Y! l* U! V8 L$ e2 @7 Z
  1188. LDA Music_Total
    / s! }$ i5 l! V$ h! s5 M( A+ d
  1189. CLC' R- z) ?9 s) I8 o. O
  1190. ADC #$01, n2 K4 P5 w, j; G% v1 Y- j
  1191. JSR HEX_To_Dec
    1 Z, G( p4 ], d
  1192. " k/ k8 y- P! o7 j# P
  1193. LDA <DEC_H+ _6 z$ V# W/ b% T2 d
  1194. ORA #'0'
    4 X8 G: E  S2 N/ w, c0 |3 A
  1195. STA PPU_Addr,X8 z+ J: w. Y$ a7 k! O; _0 H
  1196. INX
    : D; O+ N+ w. C7 r

  1197. , ]" x! a+ `( ^
  1198. LDA <DEC_T
    8 M" a2 s; ]/ b# }
  1199. ORA #'0'+ t7 U6 e6 r/ I  q  Z  d# P
  1200. STA PPU_Addr,X
    5 R1 F. R% a  |* c) h7 z3 E
  1201. INX  `% _: Z5 s; F5 K! A9 c

  1202. , Z( r, D; P3 v( W! |4 Z3 D" G
  1203. LDA <DEC_L# F; y8 k' P4 [; U/ K
  1204. ORA #'0'* u' a; Q% V4 d9 q' i3 J$ G
  1205. STA PPU_Addr,X
    ( V; f& q8 p* X0 u
  1206. INX. s4 Q9 k; A# j! j

  1207. 6 O( z0 j4 u3 }, d8 Q2 z
  1208. STX PPU_Cur. ?" q, W" y2 f+ X: e0 C
  1209. Music_Show_End1 ?6 B4 P# |, n
  1210. RTS1 L, s0 d6 V: e& \% u1 d" l1 n
  1211. # j- Q* d$ t! V* t
  1212. ;==============================  d% c3 X4 B' h: F  d2 h2 A
  1213. Time_Show;播放时间显示
    5 s) e1 g4 F: r2 m' w
  1214. LDA <Text_Disable_Flag
    3 n. f7 r) u% h" t. t4 C1 R' w5 S# c' Y
  1215. AND #TEXT_DISABLE_ITEM7 I2 Q; Y- v1 U6 B' H# t
  1216. BNE Time_Show_End/ i6 k' Z* }8 X: `# M- Q7 _- N) `/ g
  1217. AND #TEXT_DISABLE_TIME
    6 x1 `3 Y, O1 K. V4 o6 p3 ]
  1218. BNE Time_Show_Enable
    # R! Q: H, J8 o5 h& u* j: j- A# Z
  1219. 9 o% p( y% \1 J2 K3 M
  1220. LDX PPU_Cur
    4 L8 p& Y: n% h- Z1 F
  1221. LDA #PPU_MODE_CNT_LINE* g( F" {8 \% d; ~: v" _
  1222. STA PPU_Addr,X, w) c$ L3 h) p' V1 u" ?
  1223. INX  E. w* @2 p! f4 J( {
  1224. LDA #HIGH(Play_Time_Pos), G# P- M6 T$ p
  1225. STA PPU_Addr,X
      B: `& f) w8 n4 G
  1226. INX
    . g" O' z2 z$ g: k* u( G5 ~: r  c
  1227. LDA #LOW(Play_Time_Pos)
    ; _# o. o) H4 A; N
  1228. STA PPU_Addr,X
    " v" L& x' L. A' ]
  1229. INX% J/ U" Z$ A" s' O* w1 e$ U8 }& q9 p
  1230. LDA #$08( V( z5 m4 g7 K8 z
  1231. STA PPU_Addr,X
    / x+ v; T5 N2 [$ m+ }1 ^- d
  1232. INX
    ! J$ |: \4 }& Y- \* @7 E2 C
  1233. Time_Show_H
    ( {! A; v% N+ ^
  1234. LDA <Time_H
    ! `) z( F: N* }" ?% ^+ D7 e+ K
  1235. JSR HEX_To_Dec
    $ {4 Y2 h3 ^0 a2 j1 I
  1236. JSR Time_Digit+ m9 _- G0 e  S# t% q+ t
  1237. LDA #':'1 h( r: b* ^& B/ i  M$ n
  1238. STA PPU_Addr,X
    / M5 x& V! c! }9 u
  1239. INX, q+ l# i: {/ O" s: g
  1240. Time_Show_M9 P% d% ?* Q6 G2 r0 K& h& ]. x
  1241. LDA <Time_M
    % _! a5 q, n8 T) J% O6 p
  1242. JSR HEX_To_Dec
    5 c# @( n+ f: K
  1243. JSR Time_Digit& |: C2 i. o1 I- N
  1244. LDA #':'% P9 U* m. Y! y( Q* w9 ?7 \
  1245. STA PPU_Addr,X
    0 u6 @0 B+ ?1 ~
  1246. INX, m5 k$ J5 u* c7 y" N5 p6 l! }
  1247. Time_Show_S
    $ }7 E1 g) g0 s) V
  1248. LDA <Time_S
    * b; R: n" M4 k; l0 w- M
  1249. JSR HEX_To_Dec
    " x) a5 ^2 k9 _  Q' M) v* ]
  1250. JSR Time_Digit
    ! p$ L5 @. e* C# u8 ^. D& ^
  1251. STX PPU_Cur
    0 \( Y3 ^6 k8 r  W% m
  1252. Time_Show_Enable/ _0 R, P- K- D4 Q. [
  1253. LDA <Text_Disable_Flag
    . E& k: i4 H/ @2 \- p* D
  1254. AND #TEXT_DISABLE_TIME ^ $FF/ O+ a, V1 x" q2 w' v
  1255. STA <Text_Disable_Flag
    - O* K) G7 S; v: V7 E1 f( p
  1256. Time_Show_End( p4 e9 C( N. j4 |4 w7 x  \
  1257. RTS
    - K/ D$ y- J# ~) T6 y9 {3 }, Q1 z
  1258. : `+ l# B" k: A. y
  1259. Time_Digit& Q, K$ z% e5 \1 @4 O$ s
  1260. LDA <DEC_T8 N* |/ n4 k0 X4 f5 d/ m
  1261. ORA #'0'
    ; h% x$ t) b& P, L
  1262. STA PPU_Addr,X
    1 Z7 G" @+ b6 U; E; d
  1263. INX! J0 J, {: o, R# |6 ?5 y: |4 A
  1264. LDA <DEC_L2 o5 i( e5 z1 r6 p8 r1 e
  1265. ORA #'0'  c. j* f9 ?& m6 `" H
  1266. STA PPU_Addr,X/ j2 R! F! Z8 ?* M; n; n
  1267. INX
    & Y% c9 q3 a; _8 B. ^
  1268. RTS
    7 u1 B8 |# ]1 E0 `: \+ b* z- O

  1269. ; d; ~+ Q( _5 K/ f
  1270. ;==============================8 t8 a  J5 m4 m; e! _7 Y- X
  1271. Time_Count;计时9 o/ R+ v. H0 x8 d- c* b
  1272. LDA <Music_Stop_State" L3 t! t$ U2 B) I. Y# U1 T! o- M
  1273. ORA <Time_Wait_Cnt
    5 R9 f, t0 J; q' J' `4 o. H$ x
  1274. BNE Time_Count_End9 w5 ]/ _4 J) G% R! X
  1275. INC <Time_Cnt, N4 \7 W! W9 g- p+ K# c
  1276. LDA <Time_Cnt
      }" t" D4 r) q
  1277. CMP #60
    6 D7 k' ]3 r( j* Q
  1278. BCC Time_Count_End
    2 X4 {: W, |! e: [6 k# L* X  s# \
  1279. LDA #00
    - e8 p! g  J& s' a
  1280. STA <Time_Cnt, ~4 f. }2 L4 G& Y  O' b% Y
  1281. INC <Time_S
    # F1 N( x/ Z; m) j

  1282. # I9 T) N$ y* S: L! A  o
  1283. Time_S_Cnt
    8 q8 R% r8 g7 X2 t" K
  1284. LDA <Time_S
    5 Q5 {( c; F& k- i, p
  1285. CMP #60
    9 _  w% K) n$ G- j) o+ [: e6 R
  1286. BCC Time_Count_End
    " S$ Q/ t7 R8 W- @/ n2 Y
  1287. LDA #00
    6 ^+ }) e6 X: x; ^
  1288. STA <Time_S
    ( |5 U1 s  [: Y. b) C; @
  1289. INC <Time_M6 i; o6 Y1 U6 H
  1290. 3 q! M5 ~$ M( S5 u: H% I
  1291. Time_M_Cnt" {& r  T7 X# d
  1292. LDA <Time_M7 n; W; B7 N  Y
  1293. CMP #60  J0 q% a# U+ [& U+ v  m0 K
  1294. BCC Time_Count_End5 F0 a. o$ R" I; ^
  1295. LDA #001 t# W8 Q4 n* Y( B- r
  1296. STA <Time_M
    ) Z; t' W) U7 z- E( V' p
  1297. INC <Time_H  J5 e' K+ H2 m4 ]1 G) U+ M

  1298. " Q* O  Y+ _' K3 G  l
  1299. Time_H_Cnt- r9 p, \4 ?9 J
  1300. LDA <Time_H
    # L! }+ _6 K; U( z& y4 t5 E
  1301. CMP #24- V- H; `5 u" `
  1302. BCC Time_Count_End
    ( s) j% T2 E7 L4 t4 m) ?
  1303. LDA #00
    % ~+ p6 I: h/ ~! ^. l
  1304. STA <Time_H
    ' m0 j' ^# j7 b
  1305. " B8 l' E+ s2 `& v# J3 F/ ~
  1306. Time_Count_End
    , S/ J$ Z9 v1 s8 H# \
  1307. RTS9 c+ U) ?) ~) e  J; y
  1308. * f$ b4 v1 ]9 ?2 q3 Z4 T$ e
  1309. ;==============================
    ! ?4 V) @  H3 H
  1310. Time_ReSet;播放时间重置
    , X( s! O0 Y/ O7 Y* I" M7 F8 m
  1311. LDA #$00
    5 `. O0 U; _) Q* ~* N7 g# b$ ?
  1312. STA <Time_S# d2 @2 h' |: d0 {( i
  1313. STA <Time_M
    7 F3 L1 M, j) j' _4 R& r; J
  1314. STA <Time_H
    % \  r3 e" d/ \$ m  T
  1315. STA <Time_Cnt
    # |9 m+ G' V6 a: n1 J; H$ s+ F
  1316. RTS' T! w# G, r9 w
  1317. 9 _7 J# N. \6 C3 u, s8 H! Z3 I' u
  1318. ;==============================: a/ c; T6 j( l5 d, F
  1319. Music_Bar_ReSet;音乐条重置
    3 ?1 X& p, c6 O2 _8 H3 @  G( G: d
  1320. LDA #$00( J0 s4 s" T) K0 c4 q1 ^
  1321. LDX #$00, I* |; c  ]! T% c/ h$ A! U* ]
  1322. Music_Bar_ReSet_Set
    7 k. c: g# N" l6 ?5 q" \7 l! i
  1323. STA Sound_Bar,X
    ( ]2 A' v0 G' f. G6 z3 r: S
  1324. INX
    1 Q! f, ~+ E4 E& Z4 t: f
  1325. CPX #$10
    9 Y- Q. @7 w5 p5 ^6 H
  1326. BCC Music_Bar_ReSet_Set
    $ c5 g8 T; e/ C* O9 e/ ~
  1327. RTS
    : I" h2 K" v' m7 V4 M

  1328. ' A' K/ l2 P+ V1 c! D" B
  1329. ;==============================
    9 e: L' n4 R2 l( E6 k# G
  1330. PPU_Data;PPU数据写入/ k( d) r! T. V  Z/ j
  1331. STY <Data_L
    + q. _, H  P0 {
  1332. STX <Data_H! d! b+ z% M1 e& N0 f$ m+ ]
  1333. LDY #$FF
    " X# B1 k; x% ~0 q
  1334. LDX PPU_Cur
    1 n( \. Y# L* E* @& ^0 V7 X) F
  1335. DEX
    * r: J$ r$ ~, R
  1336. PPU_Data_Beg) \: r/ |7 X$ N+ z
  1337. INX
      U9 L# f+ v. k/ O! {
  1338. INY
    + z- b7 T6 M0 T! U# s  `+ _# A+ L
  1339. LDA [Data_L],Y
    + \  C, o; ]- u# {
  1340. STA PPU_Addr,X
    9 v6 A" U. W0 Y1 s
  1341. BNE PPU_Data_Beg! B/ q  u" ~* \$ r( Z- r" U) h1 L; }
  1342. STX PPU_Cur) ^* n# W# A0 B* e9 I# S
  1343. PPU_Data_End% d9 P9 a! q% \- j) b' `
  1344. RTS0 ]! G( i$ P7 J/ i2 N  E& L1 o' S
  1345. + J/ l( L0 k& a
  1346. ;==============================
    , Q- K# ~: h' T+ k
  1347. Music_State_Show;播放状态显示
    5 L! Z9 v- p" x) l$ M$ j& g8 l
  1348. LDA <Music_Stop_State
    2 Z6 ?* {! J- y
  1349. BEQ Music_State_Show_Play
    / k9 B- `5 n) m7 t& x2 d- a
  1350. Music_State_Show_Stop
    7 w& i; C. P/ E* X6 p3 x
  1351. LDY #LOW(Music_State_Stop)
    - E; m  K5 y4 k" v
  1352. LDX #HIGH(Music_State_Stop)6 X$ z/ J, E$ Q! r8 \) `, R
  1353. JSR PPU_Data
    ; E# j7 c3 o9 W7 V6 A  D. R1 S5 {
  1354. RTS
    % i3 {1 N- Y) w
  1355. Music_State_Show_Play
    8 U4 f% y; s* z2 |  y7 v$ i
  1356. LDY #LOW(Music_State_Play)
    * U( g- N6 g( o; N+ |' W% A0 Z
  1357. LDX #HIGH(Music_State_Play)/ [2 M2 u/ c& T" D. b  ?3 e" \
  1358. JSR PPU_Data+ Z1 v9 Q- Q& V4 O# G+ _. `
  1359. RTS
    8 ?3 z' d" M, [+ @. _+ u" h1 K: F
  1360. 0 B) f" _/ n- V" U
  1361. .IF SOUND_BAR_SHOW_ENABLE4 d. Z1 a6 e3 |) Z( d7 k4 v, P$ c
  1362. ;==============================" l  a$ Z/ H4 t
  1363. Sound_Bar_Text_Set;标题与音乐条初始化$ [1 J! s  P' A% u) A* x
  1364. LDY #LOW(Sound_Bar_Text_Data)) a: C! z- F. |' U! P% O6 }
  1365. LDX #HIGH(Sound_Bar_Text_Data)& j1 `8 Q$ l, t. V- F9 d. B
  1366. JSR PPU_Data0 h& ^* w& w: B% p+ I
  1367. RTS
    : P9 |  U/ _! x) i5 p" i2 N0 l

  1368. ' J( `2 O, h# {, R% x2 V. I
  1369. .ENDIF
    % `- b1 T  q* r% q0 j

  1370. 0 N; y+ d5 z9 W: L0 F
  1371. ;==============================, C; Y# [: o7 Q. X+ o0 f
  1372. Set_NameTable_Attributes;设置命名表属性
    ( v# p- ^/ \$ t8 C; f
  1373. BIT PPU_STATUS5 Z$ b8 T: M0 j, r# p
  1374. LDA #$23
    % J3 J' P0 k( l( l8 p7 ]$ a3 X
  1375. STA PPU_ADDRESS) V0 D4 J6 C2 w0 Z+ o6 H
  1376. LDA #$C0
    . y/ Z# h) v( y- b
  1377. STA PPU_ADDRESS
    8 W' T* X5 E8 ^% V) @2 T
  1378. LDX #$00
    4 j0 Z1 M" f6 l3 \6 Q
  1379. Set_NameTable_Attributes_Write. E+ V# W% ]5 g# e( @0 U
  1380. LDA Palette_Attributes,X
    6 K2 {6 Y; |" d' _3 g% p) S
  1381. STA PPU_DATA
    1 r3 z+ H/ Z6 ]" ^
  1382. INX
    $ @3 q% E+ E8 U
  1383. CPX #$40
    . ~' v! c  `! c4 I, b
  1384. BCC Set_NameTable_Attributes_Write6 {" e/ A% b. Y1 |' e" w
  1385. RTS/ |: i. G5 I  e. S( K+ W

  1386. ( u; C" R* H- O, |- R2 p
  1387. ;==============================
    " z# f* G! D7 T8 C6 k' o
  1388. Set_Palette_Color;设置调色板数据+ ]& W7 O) t: W5 I- Q
  1389. BIT PPU_STATUS
    4 _$ \( P: ?: \- T+ e2 D1 e
  1390. LDA #$3F/ q/ c# M, u1 @, ]8 A% h
  1391. STA PPU_ADDRESS
    - ~3 O. t+ t6 H4 z5 O
  1392. LDA #$005 n  Z7 b" @" ~& @
  1393. STA PPU_ADDRESS
    8 N) E1 h5 y! f: d
  1394. LDX #$00
    8 h2 N2 q! @7 v8 c8 g! E  a9 X+ b5 b
  1395. Set_Palette_Color_Write
    * L% w1 B" q! k* [; z* v
  1396. LDA Palette_Data,X
    * _7 u  f7 t, R: e: R  X# J( X7 L
  1397. STA PPU_DATA
    3 L7 h/ ^  B9 e; e& F# N/ A
  1398. INX3 D- n1 a7 w8 _) X2 L1 N/ s/ Z4 Y
  1399. CPX #$20/ f7 x- ]+ i( t
  1400. BCC Set_Palette_Color_Write$ u9 {$ _2 ]7 _5 @' K
  1401. RTS
    6 [; _. t# t) U5 \+ \( v  Z, g

  1402. / L/ H1 b- p# ?* d# ]
  1403. ;==============================+ @3 F, e& a. A# \7 p# ^4 ~
  1404. Init_Palette_Addr;初始化调色板数据* m. q! s9 K& R- q. f
  1405. LDX #$006 N: x; |  @3 u6 I; y1 r
  1406. Init_Palette_Addr_Write7 Z# S5 b, z8 |% I5 o! ?
  1407. LDA Palette_Data,X" K& {6 u; q; Q' C: X; t
  1408. STA Palette_Addr,X
    " x7 k! G" L; K7 _, p8 X# V
  1409. INX
      P' [. O0 g4 A7 T4 o7 s1 ]$ g
  1410. CPX #$20$ \; t; \" ^& b) I0 T, v
  1411. BCC Init_Palette_Addr_Write
    ' |1 l3 u: \% g, E2 R/ a* A6 j0 D5 }
  1412. RTS8 E, M" N1 p) ?0 \0 V
  1413. , s, Q5 J: W1 |0 ~' u
  1414. ;==============================
    " R/ }( I# ?, f/ v
  1415. Update_Palette_Color;更新调色板颜色9 q# B" c0 s9 }0 k- ~! n
  1416. LDA <Palette_Update_Flag
    + H& s0 o4 P- b* B4 F
  1417. BEQ Update_Palette_Color_End) q4 w# i8 v' ]1 D7 F0 h
  1418. LDA #$3F* [5 b7 Y+ b) s5 d+ r8 H" ?
  1419. STA PPU_ADDRESS
    1 o; W7 n8 Z5 A' v2 K
  1420. LDA #$0C
    5 o* M/ F& \$ a8 g# i! H3 a9 M' O
  1421. STA PPU_ADDRESS% X6 O# w* N# ~2 ]1 c, V
  1422. LDX #$0C* m5 j, G$ w5 i. c' ^+ h" ^$ k8 E# R
  1423. Update_Palette_Color_Write
    0 P4 C( g7 `9 g2 f2 X0 f' |
  1424. LDA Palette_Addr,X: Y" E1 k" f8 J  M0 ^" Q5 o+ Y* K) R
  1425. STA PPU_DATA9 X" ^+ ]& ?% N8 m
  1426. INX
    . f* m7 l4 v0 i$ s. ^
  1427. CPX #$14
    + K! x4 t1 ?3 e- [) _* S; J; E0 n
  1428. BCC Update_Palette_Color_Write
    5 z8 {$ ^+ k: M- n" _# s& w7 Z- d
  1429. LDA #$003 ]% d: c7 h; R: B4 I# N! F
  1430. STA <Palette_Update_Flag8 a/ X' _  r5 j! q. m1 X: \/ V* ~
  1431. Update_Palette_Color_End
    : G, Z" G" @* B2 |( z
  1432. RTS+ f1 O2 H+ K; G2 W1 W, [& x! _

  1433. # \& ]; h5 _7 n. u6 X% g

  1434. 6 r8 ?) e1 {/ ]8 N
  1435. Update_Sprite_Palette_Data
    ; S- @* ~- K+ ~' I" ?3 T# Y0 Q0 P- n5 N1 |6 u
  1436. .DB $21, @! W  V$ \" r3 T
  1437. .DB $21
    5 `& [& \" b7 `0 G) `6 t
  1438. .DB $113 M* a9 a; P3 U4 m" I# Q4 g$ S
  1439. .DB $01
    3 \+ u5 o' |. R4 g2 s" H  j+ h
  1440. .DB $01
    ) w1 e0 C# p; i( h7 L3 t9 H
  1441. .DB $11
    ( b5 Z7 K- N" t9 O
  1442. .DB $21
    # c  ~+ ?2 j4 K
  1443. .DB $218 w1 H+ r2 _' U8 S0 s% `, J
  1444. .DB $11
    + D: M0 x+ |2 q1 r$ N
  1445. .DB $01
    . f9 i9 r2 Z4 e! w
  1446. .DB $11# w! b; r: R- W7 f* R' ~4 w+ S
  1447. .DB $21
    & ^$ h: |7 m: V" n9 x0 |
  1448. .DB $21
    ) R4 w5 a' G# z
  1449. .DB $11
    7 T+ t6 d1 l* ~* k7 y( B& F8 P
  1450. .DB $017 w6 }2 j1 D6 ]( ]. h/ @1 e
  1451. .DB $11
    % G0 r8 U5 e4 ]/ ~1 P2 q" p' ]2 T8 S
  1452. ;==============================4 R; O) ?$ t1 @3 [+ v
  1453. Update_Palette_Data;更新调色板数据4 L0 z" k2 ?' C9 Z; b
  1454. LDA Nmi_Time_Count
    - ^, v& j2 \1 ?7 ~% r. Y
  1455. AND #$08" @) G% n6 z; y7 }0 B5 |
  1456. CMP #$08
    - y( K5 R5 O6 d8 V
  1457. BNE Update_Bkg_Palette_Data: w4 D$ V# x6 g8 A
  1458. * y$ c- ~0 h) y4 ]4 F
  1459. Update_Sprite_Palette_Data_Set+ k' s) C8 s$ p5 }: I
  1460. LDA Nmi_Time_Count9 M$ @5 U1 v7 Q$ \3 b0 \1 ^
  1461. LSR A7 h( S3 |6 l0 q. ~
  1462. LSR A5 F, a6 n8 q( @  V
  1463. LSR A
    ' a5 ]# d, j/ e0 L; Q
  1464. LSR A0 O0 Q' g- j' q3 B/ {/ @, H
  1465. AND #$0F
      z0 W3 Z4 N  _/ m  `$ Y7 B
  1466. TAX9 J: v$ S( G) x! U
  1467. LDA Update_Sprite_Palette_Data,X
    ' \0 r# K. ], \
  1468. STA Sprite_Palette_Update_Addr+ K# n. o/ d4 C7 C0 ^- K
  1469. LDA #$01! U' A' r4 P" ^1 \0 \8 j. A
  1470. STA <Palette_Update_Flag2 ~' V( W0 f7 H9 p3 i

  1471. 5 L" c; i9 K. `/ U; O8 \" v' S' |
  1472. Update_Bkg_Palette_Data( f) X, k' n5 \, }% O( ]
  1473. LDA <Text_Disable_Flag1 Z, W/ E: v% o" t% G2 u
  1474. AND #TEXT_DISABLE_RAM
    $ [0 V5 S+ C8 {+ M1 p; q; D- z. V3 G
  1475. BNE Update_Palette_Data_End
    4 O( j; A. S$ O& D. C
  1476. LDA <Music_Stop_State
    8 i) A5 K7 a6 n+ u7 e% E; V" I
  1477. BNE Update_Palette_Data_End7 Z. n  Y% m/ F7 `
  1478. 3 F$ m( |4 a8 a
  1479. Update_Palette_Data_Check
    6 q) v0 p: T- q! `# F
  1480. LDA Palette_Wait_Cnt6 C0 N, k3 I5 j0 H+ s. i
  1481. BPL Update_Palette_Data_Check_Over) S: {  X9 L: v7 ], r# n
  1482. LDA #PALETTE_UPDATE_INTERVAL
    ; B5 [  X; }% _8 d8 n
  1483. STA Palette_Wait_Cnt
    0 |5 i# }9 i3 u- U$ o, \
  1484. Update_Palette_Data_Check_Over
    3 l0 M) f6 Z1 U( J3 G  W& ^
  1485. DEC Palette_Wait_Cnt
    . J! M. B) T& K9 z' p( q5 m
  1486. BNE Update_Palette_Data_End
    ; }6 z& Y; L. ?) d) w) m" Y/ ]# G" V
  1487. 9 J, ^& w3 P- K# N4 _6 ?9 y
  1488. LDA <Text_Disable_Flag% D5 k3 b7 ?7 A
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    2 D$ U) a) N: }
  1490. STA Text_Disable_Flag/ Y* C! j( x) K* J
  1491. INC Palette_Update_Flag
    + R$ S" F; {/ r  N" s/ ]) W% G

  1492. / L4 Y, Y5 M, N4 O- F
  1493. LDA #PALETTE_UPDATE_INTERVAL
    / s6 Z$ {. }6 O- v8 g9 H4 O0 x. b
  1494. STA Palette_Wait_Cnt
    ! d9 J* r! I9 j2 ^! X: R
  1495. % ^, ^2 ?: e+ _6 f; M
  1496. LDA Bkg_Palette_Update_Addr
    4 u  o/ G8 i8 L# U0 o/ e
  1497. CMP #PALETTE_UPDATE_MAX
    " M0 j- S6 D9 i. V  E
  1498. BNE Update_Bkg_Palette_Data_Set
    6 O6 Z; d. Z6 A
  1499. LDA #PALETTE_UPDATE_MIN - 1
    7 O2 u* {8 H4 h4 c1 a2 h' x( D
  1500. STA Bkg_Palette_Update_Addr. q$ D. p* Z' Y. ~4 H' K6 A! H
  1501. Update_Bkg_Palette_Data_Set1 h7 J) c) j4 J/ H" m
  1502. INC Bkg_Palette_Update_Addr
    0 P7 M! b6 H/ g! ~

  1503. 7 D* ]$ J) J& g! A
  1504. Update_Palette_Data_End
    ( S$ d& G, X# P+ w+ E( P8 G
  1505. RTS$ z/ [0 x4 A; X# V6 B6 b# m
  1506. # b2 ?0 S6 S) t8 O9 j5 V
  1507. ;==============================3 j: R) V4 a& M: M( A
  1508. Show_Music_Text;显示静态文本
      d& q+ W! M/ @$ a( x, F. {, ~
  1509. LDX #$002 T  ^( m9 k: k6 Q
  1510. Show_Music_Text_Set
    ( s( ~" d: v  W7 V% T
  1511. LDA Static_Text_Data,X7 z1 a/ q$ R+ h8 I
  1512. STA <Data_L
    ' s# n" ?' ~4 x" w% _. @; c9 j
  1513. INX
    & K; I7 H2 w+ _! {* n
  1514. LDA Static_Text_Data,X
    1 h; P5 y6 x+ v( S+ P8 e. G# \1 l
  1515. STA <Data_H
    % M, a3 D+ I$ _4 C& G0 }
  1516. INX% \. O; ^+ R, S  U( ?: o2 s
  1517. LDY #$00- A& l, j: l2 s, c  z
  1518. LDA [Data_L],Y
    6 O6 \, A# y8 y& y, p/ b
  1519. STA <Data_Cnt
    ! n/ s" n/ e4 a) I
  1520. DEX
    % h; u4 C9 ~; x2 D' u
  1521. DEX9 q; n: {. c! _' \9 H: j6 a( |0 r
  1522. LDA Static_Text_Pos,X
    - H% }8 N1 p2 j9 R+ W
  1523. STA PPU_ADDRESS
    $ D% J4 W5 D0 w- }% B2 z" ?
  1524. INX: {2 {7 y+ m( e5 i
  1525. LDA #$20
    * `* _. S  Z" F4 Q
  1526. SEC; ^# y. @2 Q) U3 |0 J  x
  1527. SBC <Data_Cnt
    : N$ E6 G% L  s/ L' K# l4 C. j
  1528. LSR A! K0 k+ g% h# D3 c6 J
  1529. STA <Data_Buf" ]8 a4 }3 F! t# o% p. a
  1530. LDA Static_Text_Pos,X, G  M. U5 l9 @
  1531. AND #$E0
    - C5 Y( w, l6 B& A0 R
  1532. CLC
    " c5 K9 w2 K. W4 g
  1533. ADC <Data_Buf
    ' X2 g8 R0 m0 H0 H5 h& E, U9 Z- k+ D% |
  1534. STA PPU_ADDRESS
      _: v% L$ S. |# L
  1535. INX) D5 ]* U$ y8 t' E$ T; o
  1536. Show_Music_Text_Set_Write
    3 r2 s& {# f. ?! E) A
  1537. INY
    " H7 f. h' p, O
  1538. LDA [Data_L],Y
      \( p' I) x2 g; [" X
  1539. STA PPU_DATA
    & B2 R' Y/ N: v$ c; q6 a
  1540. DEC <Data_Cnt/ X7 F% T" L1 h0 |
  1541. BNE Show_Music_Text_Set_Write$ j0 J% l: O3 X" v
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos. z( |$ G6 R# H9 D1 q* Z% e$ M% [
  1543. BCC Show_Music_Text_Set. Y/ A& S* I$ Z+ Y; F$ y
  1544. RTS% s  t2 h: j5 k6 c
  1545. 0 d" b/ m* G* R4 Z
  1546. ;==============================' E! q! o4 z- k" J
  1547. .IF Track_Name_Pos;显示曲目信息. [' }/ e% n/ B  V  X8 m& f- I

  1548. # f, \0 N- _1 D  P' Q, J" ~
  1549. Clear_Track_Info$ ~+ [  R1 m8 {4 h' }0 b
  1550. PHA, @3 ?# I2 f" M* x- x
  1551. LDX <Music_Item_Cur' P: ^: n' w& K  ^) o1 j7 m
  1552. LDA Track_Name_Addr_Flag,X) M; c- M. e. N1 a
  1553. BEQ Clear_Track_Info_End_Ex
    % Y  q! z8 n. R! h" z
  1554. PLA1 Q! ~* o$ m" k& u( Y- I- F

  1555. 9 Q( D4 G0 x& f$ J
  1556. LDX PPU_Cur
    ) J9 f# ?& L! _
  1557. PHA
    ( y( H  B6 _; u
  1558. LDA #PPU_MODE_CNT_CLEAR+ M- ?1 ]/ a5 z6 _8 j4 d
  1559. STA PPU_Addr,X% [7 ]- Z, a* v
  1560. INX1 b9 M3 n+ |: x( n" {/ P' m: n* l
  1561. PLA
    % h  y3 h. M; [# R; ?, m2 ^$ F( ?
  1562. JSR Show_Get_Track_Name_Center_Pos
    ! Y& m# t6 w4 M, |$ ]. e0 i$ \7 k
  1563. STX PPU_Cur
      M* U2 w3 d: P$ S
  1564. Clear_Track_Info_End
      q6 g$ |- I9 E% w' m
  1565. RTS
    & @4 b7 }3 H9 m, `- B6 t1 O
  1566. Clear_Track_Info_End_Ex
    , [. w0 h9 S0 h8 `: L: d" o
  1567. PLA5 ?' O( `+ A, V
  1568. RTS& Y0 D( P. \5 D$ w; }5 H' m

  1569. ( J2 i' n0 _3 s* Y# y! o
  1570. Write_Track_Info( t8 t  R0 T  C0 t/ e
  1571. PHA
    8 g) w* x, h/ A6 C* z
  1572. LDX <Music_Item_Cur
    ! h9 |' }! v* @  Z# e; P
  1573. LDA Track_Name_Addr_Flag,X
    : j/ a- N6 I( f% r! w! u7 ~
  1574. BEQ Write_Track_Info_End_Ex7 W' N5 E* \- d( z
  1575. PLA
    2 t0 |5 C8 \5 k& Z( U( Z3 L

  1576. ; E% @2 _1 p+ J, F+ O. L# D# W
  1577. PHA
    8 V. b+ b5 A1 {$ j% p3 l6 D
  1578. LDX PPU_Cur
    : I! ]8 V, k& r$ J
  1579. LDA #PPU_MODE_CNT_LINE8 ^* L3 \& V) D4 E& ~; Z: `0 |) A
  1580. STA PPU_Addr,X
    " f6 s# C' U& ?( }- p" L
  1581. INX
    * Y0 }2 t% E6 U+ g( ~
  1582. PLA6 G) W+ c+ ]& A7 Z/ X
  1583. JSR Show_Get_Track_Name_Center_Pos
    * m( @0 L( ?: ?  L  Q/ P
  1584. Write_Track_Info_Data* h0 V4 }2 C7 k3 z" A
  1585. INY3 \8 w: R1 ^. I: v- j+ O
  1586. LDA [Data_L],Y/ V; d; L+ C" Y4 V* B
  1587. STA PPU_Addr,X( ?$ u$ L) V* l5 p  K$ e
  1588. INX* z2 `, S; T; n/ b
  1589. DEC <Data_Cnt
    ( f) ~, }$ [. [: H9 e' z7 u; Z8 o
  1590. BNE Write_Track_Info_Data
    4 d6 Y& A- n* ^+ p
  1591. STX PPU_Cur  j, I% H; p6 I0 s% ^/ p8 [
  1592. Write_Track_Info_End" _5 v3 H8 A$ y# |. u
  1593. RTS
    8 @' `( W: r4 G+ A
  1594. Write_Track_Info_End_Ex# H! K4 u" S2 E% N: Y4 J
  1595. PLA
    : y8 _* R3 v$ F: ?; W/ s2 D, ~
  1596. RTS
    & p; z8 Y/ p4 X
  1597. $ w# V" k- H0 k
  1598. Show_Track_Info1 C1 h; W1 i2 w9 t/ g& S
  1599. Show_Track_Info_Clear6 a) S. Y) U  W: d+ E. C8 b
  1600. LDA <Music_Last9 r7 \$ r; A5 G
  1601. 8 _6 F! I7 g3 ~& B/ r' D; s3 O9 v  Q! v
  1602. JSR Clear_Track_Info! h) f7 A, Q. v8 |) O
  1603. - g; M, I0 e6 N9 X4 o- |
  1604. LDX <Music_Item_Cur
    $ [3 U7 U) A, l6 ]" h7 d4 |
  1605. LDA <Music_Cur,X
    9 e# y, V; [# V* o
  1606. JSR Write_Track_Info/ s% n2 v( y+ U
  1607. RTS
    ; A" I8 U7 n8 ^
  1608. & n# E$ F. l+ _5 H2 S
  1609. ;==============================
    1 [8 Q: s- H$ k) T( p
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置* }- \; w7 s; T$ N* J

  1611. ' |2 Y3 c8 C9 }( Q- |4 U5 X$ Q7 t3 ~
  1612. ;取出集合名索引
    0 u1 a* m1 x; _. K/ Z
  1613. PHA% O+ [0 }: x8 ^

  1614. # t; ~. g4 u* l: ?5 g  `
  1615. LDA <Music_Item_Cur
    ; |  ~" Q# n+ }1 W! X7 J: N2 [
  1616. ASL A) U( K; S0 I6 t  `7 ?2 u. `
  1617. TAY
    ; q& |8 V) y, H. N" r3 G
  1618. LDA Track_Name_Addr_Port,Y5 t# G* Z* j% I! c* ?7 ~
  1619. PHA/ q6 s: z" B3 }: n/ F) v* o8 G
  1620. INY
    , H8 ?$ O8 }$ c' l8 r% Q
  1621. LDA Track_Name_Addr_Port,Y
    + H5 {6 F3 {1 `
  1622. STA <Data_H4 n, x  A) r+ L( u; D( v5 {0 b
  1623. PLA
    - `0 W' F, P  q3 `# E; {8 j
  1624. STA <Data_L: p& B' ~, Z; k

  1625. - ~$ k! J& k1 q: h
  1626. PLA
    4 D! V& ]3 o9 [! F: i
  1627. ; F2 M9 I" N1 J5 E5 a
  1628. ASL A. [; Y; T$ p: e
  1629. TAY& O6 G4 [. D0 }! z* Z1 ?
  1630. LDA [Data_L],Y
    3 R( X# \, \+ m0 n" a1 {
  1631. PHA
      ]& ^+ `% @7 `9 w5 D+ Y2 U
  1632. INY4 W  T+ h7 u* J8 s. O, K5 u3 x
  1633. LDA [Data_L],Y
    # j9 J% e; a3 T% |
  1634. STA Data_H
    $ _5 S3 O- F4 N: G+ O+ }3 a
  1635. PLA
    . G1 p' R$ @5 c3 h* [; A0 D  k
  1636. STA Data_L9 ?3 K" }2 M' ]$ h/ x! L5 e- M) V
  1637. + O! J; _8 u1 L
  1638. LDY #$00, B2 _1 V) ?- l
  1639. LDA [Data_L],Y" o/ O9 c# L2 d" P5 H) E' [
  1640. STA <Data_Cnt7 h6 h8 g+ k" e# ^
  1641. LDA #$206 M1 V& x3 X. @& y" o+ @: |
  1642. SEC
      ^; S  }3 e/ X2 C. K1 q$ P
  1643. SBC <Data_Cnt
      t2 M. o" i2 U: H
  1644. LSR A
    2 q9 f( ?  y: N* \7 N. l- q
  1645. STA <Data_Buf3 F& x, h- L3 i( ?
  1646. LDA #HIGH(Track_Name_Pos)
    0 D; T- k" `2 k# ~. C2 y3 {
  1647. STA PPU_Addr,X6 |% _! d" T! y: i: d$ N+ _
  1648. INX; a+ M8 q/ }% n
  1649. LDA #LOW(Track_Name_Pos): @0 H9 z6 c7 h- y, ?
  1650. AND #$E0# \3 A( l* J0 p
  1651. CLC
    5 @9 y4 Y7 z9 h# h
  1652. ADC <Data_Buf/ `! G" H  b- K/ z: q9 [* S
  1653. STA PPU_Addr,X
      Y+ |. o2 ]0 Q+ d- R) p0 B
  1654. INX
    7 U8 |( O3 [2 X9 _  h9 c& v& @, V
  1655. LDA <Data_Cnt
    * t- c: z  c/ d# G$ T$ G
  1656. STA PPU_Addr,X
    % G+ J% H4 H4 P# Z% m/ S
  1657. INX
    * [7 P8 U) l' `5 ^1 A3 ~2 M* n+ u% N
  1658. Show_Get_Pos_Center_End
    7 W4 }& A' d& `
  1659. RTS8 w8 Z" ?9 M; o! M3 X& ^
  1660. .ENDIF
    ; A  m& t* t& q: I

  1661. * p3 Q# o3 q# D  j- q# k6 C
  1662. ;==============================7 r- p7 e9 g$ f! c, X7 i% [
  1663. ;音乐端口清除
    ' \; d6 I8 X6 b9 w9 \
  1664. Sound_Data_Clear! C7 E) H! C& D2 l+ r0 s8 ]
  1665. JSR Sound_Port_Clear" V; Y( P8 ]9 W# d  ?
  1666. JSR Sound_Ram_Clear% k; H+ B, P  @+ O$ A/ N
  1667. RTS3 ^- I+ G! M" d; ]/ b! |( z1 r3 u

  1668. 7 U* D4 v) e& U  M
  1669. ;==============================
    5 c4 E, E: F: \0 M8 ]5 @) K
  1670. ;音乐端口清除
    . f1 V- U* ^/ h) G. V& e2 @
  1671. Sound_Port_Clear+ E% i$ J% |5 d
  1672. LDA #$00
      H5 |! S% ?! b  b" {; ^
  1673. STA APU_STATUS7 u0 p8 K/ K1 z
  1674. LDX #$004 b7 _, o; |) R8 i
  1675. Sound_Port_Clear_Write3 c) F" ^7 [6 a$ c
  1676. STA $4000,X6 Q& p- f+ A" Y! k0 n5 l, Z& D* N
  1677. INX
    / [9 {8 v# A" b5 M# c/ x5 x
  1678. CPX #$14
    % x8 ^, D$ B0 p6 K
  1679. BCC Sound_Port_Clear_Write
    4 T! v( R+ f* V6 `) N" _  B
  1680. RTS
    ) Q( R. G1 k- ?& R  B% }% R
  1681. - I% ]: ^& t" Z
  1682. ;==============================
    $ n0 j) [  Q$ e" B
  1683. Sound_Ram_Clear;RAM清除
    ( z' r- H7 O0 d8 Q
  1684. LDX #$00
    5 S8 |9 a6 f3 _7 J2 R4 T
  1685. LDA #$00
    ' j! W: N" n" \% D1 a
  1686. Sound_Ram_Clear_1
    - L, U7 |: S+ w1 ^$ m9 z5 I
  1687. STA Sound_Ram_Addr_1,X
    + v4 P' y+ u2 V& D  M3 ~
  1688. INX5 h  s; D0 D. [; J/ R- g
  1689. CPX #Sound_Ram_Addr_1_Size
    & V& G9 Q' n/ J: d
  1690. BNE Sound_Ram_Clear_1
    5 \0 I, E4 [8 V* ~$ a
  1691. LDX #$00* R! L' A* P6 X  d1 n9 K/ v
  1692. Sound_Ram_Clear_2
    % }- w) f" ~/ c- k& h8 F
  1693. STA Sound_Ram_Addr_2,X
    ' K9 K3 x: a& Y" |/ `1 h
  1694. INX
    6 t- R% {. X, Y- f, ^7 b$ q% ^
  1695. CPX #Sound_Ram_Addr_2_Size
    ! L) L! E; o# _( N1 ?# C+ \; n- E
  1696. BNE Sound_Ram_Clear_2
    4 Y2 b9 |* u& t# R
  1697. LDX #$00
    9 b& \- }# Y& u! r
  1698. Sound_Ram_Clear_3
    . n, ~3 I, p1 @/ N! O; ?
  1699. STA Sound_Ram_Addr_3,X
    5 F0 `; Q6 `( l% w0 f$ a& f) F
  1700. INX
    9 A/ j7 k$ q* C' K3 L
  1701. CPX #Sound_Ram_Addr_3_Size. R4 }5 ^9 \+ g0 R( z8 g
  1702. BNE Sound_Ram_Clear_3' A- @# n! Y) p. a  @) @, K
  1703. LDX #$00) c2 |$ [: H, D
  1704. Sound_Ram_Clear_4
    ' Z' \; F; o5 E" V$ W
  1705. STA Sound_Ram_Addr_4,X* c& ]  p% e# J
  1706. INX
    2 \& Q+ {, k0 n2 }2 R8 B& v
  1707. CPX #Sound_Ram_Addr_4_Size
    : a- ?! R' N9 n# t  X# ]' l6 V- i7 `
  1708. BNE Sound_Ram_Clear_4
    & h4 D, [' }7 b9 h% x
  1709. Sound_Ram_Clear_51 N" g+ P$ t- S9 T: Q
  1710. STA Sound_Ram_Addr_5,X
    # Z8 R  X9 q1 f
  1711. INX
    ; O' h/ W8 i# j" b) f" X
  1712. CPX #Sound_Ram_Addr_5_Size& e4 O4 ~. E. o; P2 D6 U
  1713. BNE Sound_Ram_Clear_5" `- V  J2 z) J
  1714. RTS
    7 {, K( d7 u  i' H9 A' Z6 T. I0 q- N
  1715. 1 k! ], v8 P0 D4 Y9 [
  1716. Get_Music_Collection_Name% k) a' n1 i* D+ |1 h( a
  1717. PHA
    ; Y* r0 X& Q- l4 D7 [
  1718. LDA <Music_Item_Cur
    % g  k$ E; b9 [0 F5 n7 I$ p" @
  1719. ASL A$ E- G1 I! w: P. W7 U( V2 Q, d) s
  1720. TAY! }# k& {0 P! {' b, G# w
  1721. LDA Music_Collection_Name,Y2 W; Q0 G) [# [5 i7 f
  1722. STA <Data_L
    4 c$ a: w3 U( r! j! a- K# F
  1723. INY( x& N% ~* U8 g$ A
  1724. LDA Music_Collection_Name,Y' ~" z- W9 [& X2 J  e
  1725. STA <Data_H
    % C% S" M$ r! `5 S" \. |7 {
  1726. PLA1 e- W8 x$ T3 S4 }- L, a  ^
  1727. RTS
    ! J$ \3 @4 P* R: Q9 `6 V4 R+ ^
  1728. 4 N5 c/ ~$ B! P; s: z
  1729. Set_Sound_Total! H% Q# `1 j: y1 Q% l: q( g
  1730. LDY <Music_Item_Cur
    * ?8 @3 j1 D7 g/ P9 J2 C; e
  1731. LDA Sound_Total_Port,Y
    6 m+ z3 G/ M. D2 q& h3 ~
  1732. SEC0 V1 n1 z& y; O# O; F% ]9 A0 I
  1733. SBC #$012 {2 D9 R6 u& Z3 G/ Q, N
  1734. STA <Music_Total8 n! ^) P8 B# F4 \3 V% r) @8 ]
  1735. RTS+ C' j: Q- |& m

  1736. # o; r$ z8 y- ~* O5 d
  1737. Get_Sound_Start0 ^- F2 @9 R: y+ C
  1738. LDY <Music_Item_Cur
    / T+ o' M& n* S$ L" _  i
  1739. LDA Sound_Start_Port,Y
    : \) a6 W$ T: ~3 U1 X
  1740. RTS2 f: D8 }2 K# Q1 q$ p9 l
  1741. & D: K7 c6 |4 k  U
  1742. Set_Sound_Init_Port3 `* K$ G: M9 p7 o. k
  1743. PHA
      G; C; \; W) O/ q2 Z3 K% \) P! o: [, c
  1744. LDA #$20/ t) B! g1 \/ @* Q4 P# |
  1745. STA <JSR_Addr_Op, H2 Q9 I: j, T6 x. @, q
  1746. LDA <Music_Item_Cur
    ; I# Z/ C$ A# \7 N0 g) L
  1747. ASL A, S. B4 X7 _+ T, t8 v3 A8 @- q
  1748. TAY
    6 Z2 a( s5 s, E
  1749. LDA Sound_Init_Port,Y! b. v" K4 F" _6 O2 w/ _- B
  1750. STA <JSR_Addr_L. ~7 r+ F8 E$ F& b! U1 l! ^& y
  1751. INY( A, `" L+ R* o' x8 k: n# J. W
  1752. LDA Sound_Init_Port,Y4 l1 ]" J9 y  Q! y! w' `
  1753. STA <JSR_Addr_H6 e- R$ Q; j+ p% p* s' `! ^1 @  `
  1754. LDA #$608 d) v/ s( s! F
  1755. STA <JSR_Addr_Rts/ ?8 u( ]0 K6 U( Y: ~
  1756. PLA
    7 }# \! ^/ L0 @7 D5 s# J" E
  1757. RTS* k0 w. s- H, A. Z/ r+ n, T

  1758. ) ]( _( Y/ l: d6 ~) q, k4 h
  1759. Set_Sound_Play_Port* r$ p+ j. [1 R. f7 @3 v
  1760. PHA$ a, K/ j1 D. I3 h* G
  1761. LDA #$20, c- s% s$ K+ b$ q( B
  1762. STA <JSR_Addr_Op; U8 @" Y' m3 @+ }- M1 d
  1763. LDA <Music_Item_Cur( o+ C  W4 h* {; }0 Q) q8 o1 T
  1764. ASL A( q7 M- Y1 Z' f1 E, H5 t) z
  1765. TAY* o5 o- \/ ?  J$ D, i+ @* o
  1766. LDA Sound_Play_Port,Y
    8 h1 i# m& O9 s6 i) ~2 A8 C* x, z- q: R
  1767. STA <JSR_Addr_L( e( V9 q% }2 M0 f+ f
  1768. INY
    & z- p5 F+ @& m6 i: W: }
  1769. LDA Sound_Play_Port,Y2 z5 F* v+ t: T7 Q# q
  1770. STA <JSR_Addr_H
    ; p. U  m, t1 p3 Q9 f% J% B6 [
  1771. LDA #$60
    7 h- }2 S9 p; Y6 I6 ^
  1772. STA <JSR_Addr_Rts
    . _- k1 N% S' q3 a
  1773. PLA
    - @; J! d- w# L2 X5 p$ r$ R
  1774. RTS
    ( x* ]! G8 _) {. T# U( i

  1775. - {% {6 L9 f9 b6 v' y- R) u
  1776. Set_Sound_Reset_Port; B8 D- e! m3 p2 a
  1777. PHA6 T& P- Q: ~  z7 n0 g: s; o% q1 K! c
  1778. LDA #$204 [* \9 ^: ^0 v; M$ A$ p# J  x
  1779. STA <JSR_Addr_Op* {. X/ r7 ]# o) ], l& E
  1780. LDA <Music_Item_Cur
    2 t5 l  H% ]( q" q* a
  1781. ASL A
    - U' D2 e1 S$ T  o9 I3 G
  1782. TAY
    % e6 C4 p6 `8 n) p  W/ O5 Y; }
  1783. LDA Sound_Reset_Port,Y
    ( a. x8 _4 }$ n/ J
  1784. STA <JSR_Addr_L3 W$ a" H' c0 J
  1785. INY: Q/ ]. a; X9 j  J0 t
  1786. LDA Sound_Reset_Port,Y4 q' Q( P1 D1 b
  1787. STA <JSR_Addr_H+ O  c2 D' ^( u2 z: g
  1788. LDA #$60
      |. q3 `: T1 ^% b& \6 Z( U- u
  1789. STA <JSR_Addr_Rts" G' b4 a( ]! n8 c+ t8 m/ x
  1790. PLA
    % Z1 ]* N2 d6 Y! j
  1791. RTS0 ?% s) |; w5 {" |, s
  1792. : V7 \) m' q: U- p8 B% F
  1793. ;初始化音乐bank
      |# q0 }2 m- q* V
  1794. Init_Sound_Bank
    . e. w% x0 a; p' z( `: ~) K
  1795. LDY <Music_Item_Cur5 {  i# q) |' K
  1796. LDA Sound_Bank_8000,Y
    2 D) j/ V: d0 [& o
  1797. STA <Music_Bank_8000, B( N) x2 W# y2 X! d5 @
  1798. LDY <Music_Item_Cur8 ^8 u: }8 B1 g  T) V
  1799. LDA Sound_Bank_A000,Y* B; U' e9 B% I6 [
  1800. STA <Music_Bank_A0009 u% v- ^5 c+ Q$ f: Y( m
  1801. RTS; ]9 b& V% {" D( b' T$ R

  1802. 8 I9 l7 t$ G( b1 o0 h
  1803. ;==================================================. \0 J* b: ?  }8 j9 H
  1804. Sound_State_Reset;音乐状态重置
    ' c+ j$ F4 F+ ?; b7 y: x
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    ' _# v$ o4 V4 ~, ^5 d4 E) ]
  1806. JSR Time_ReSet             ;重置播放时间
    : ?# a% R+ i5 [1 H0 Y
  1807. # v9 A- a* ~( R0 @, c
  1808. LDA #$00
    6 k3 n  j/ d8 E; d# _* ^
  1809. STA <Music_Stop_State
    & I, |4 \- W, J
  1810. JSR Music_State_Show       ;显示播放状态$ B# ?' ~3 I. V; F& x  V
  1811. , e( j; @! I) R/ A6 ?' Z; x, o6 ?
  1812. .IF Track_Name_Pos# ^3 N% a6 x+ ?5 L  p
  1813. JSR Show_Track_Info        ;音乐曲目名显示! s# g: ]# X* ~4 O- B: ?9 @
  1814. .ENDIF% k' P. N; G8 p& l: U. e

  1815. & a/ C) O+ v0 e9 a! @
  1816. RTS
    ; K: D6 s5 ^3 P/ w7 Y# J
  1817. ) C8 d# X0 n/ E+ R4 O6 e3 i! q
  1818. ;==================================================
    6 L  P- i; ^0 _' ~
  1819. Sound_Init_Proc;音乐初始化处理
    # S* d/ J8 K/ q7 e8 [
  1820. PHA
    1 _; b/ S1 {! x' Z, h, S
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址- p. X0 B! b" O4 A
  1822. LDA #$00
    8 J+ \) O# l9 O( H0 p
  1823. STA <Scroll_H               ;重设水平滚动
    8 a0 B7 r5 N# P8 I" J- S7 V4 W1 |& P
  1824. LDA #$0F5 L+ \8 v3 j+ [( j! u9 P$ Y
  1825. STA APU_STATUS. q9 Z% a! m7 m: Z" I& m
  1826. PLA7 f: e+ n- ~8 W- r7 _' E% f. r
  1827. JSR Sound_Init             ;音乐初始化
    % s, j* `$ {! q7 w* R: l
  1828. JSR Sound_State_Reset      ;重置音乐播放状态, @$ }; L9 h- d
  1829. RTS
    4 \( h- ~0 `' s2 A3 s2 O
  1830. ( n. C% d9 h3 t, t1 F  ]
  1831. ;==================================================+ j4 Z: [0 _: r
  1832. Sound_Play_Proc;音乐播放处理
    ) [9 q/ S2 L: X) ?/ J
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    ) z) |8 P$ b2 P7 ^, a$ Y' `/ u+ U
  1834. JSR Sound_Play             ;音乐播放8 G5 u* h; c* r" `# V& T: I5 D
  1835. RTS& Y8 x* V2 x* w7 [6 d

  1836. 0 u$ v! \, C3 j! b& l
  1837. ;==================================================* L* R3 x, ]3 H2 \: |
  1838. Sound_Reset_Proc;音乐重置处理8 `4 A* ^% W+ d5 O7 o8 z
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    6 `. }0 L2 s: h) z7 m4 a
  1840. LDA <JSR_Addr_L
    ( o) N0 u) E" H# X8 g4 q6 c
  1841. ORA <JSR_Addr_H
    & i; K% }- G- h2 ~
  1842. BEQ Sound_Reset_Proc_Default$ r: c& t  q, f; O
  1843. JSR Sound_Reset            ;执行音乐重置7 w! K9 B' N3 F: V5 r
  1844. JMP Sound_Reset_Proc_Init_Sound' e4 O0 V  h/ }* |/ Y7 X+ x8 n  Y

  1845. * ^& a1 {9 B$ B* H8 V
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理2 S( S6 r" t' f) e4 M! `# i$ Z

  1847.   P) _- d! f, U. h- h
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    8 l- y% e# C# K3 y; }4 k3 v
  1849. LDA #$00  W$ G3 A+ }* |' A/ Z5 X1 J' y1 h, z
  1850. STA PPU_CTRL
    & }. P( ^. x. l" v0 \7 k

  1851. 1 O, Q% x2 B$ j% \3 a. ^
  1852. JSR Sound_Data_Clear1 ?& B& W% H$ u- L" R! z; M

  1853. 1 E* z7 L/ V7 h! U
  1854. Sound_Reset_Proc_Default_Wait
    1 y1 r  ]* |, J
  1855. LDA PPU_STATUS' ?  n2 P4 E8 |! C$ U
  1856. BPL Sound_Reset_Proc_Default_Wait
      f0 _. q9 s. F0 \/ S& {9 G( N
  1857. ( c9 G0 @4 [1 Q0 N5 ]
  1858. LDA #$00% A9 h' Y' V, r8 _7 V9 a  A; {9 \7 s
  1859. STA PPU_ADDRESS
    # g2 `/ J- q8 s1 l9 I) L) K' ^2 N- }
  1860. STA PPU_ADDRESS- S1 E7 [& ^! |8 n
  1861. STA PPU_SCROLL5 @0 Z1 j' C" S# Q
  1862. STA PPU_SCROLL& [. E! M& p6 O, ]6 U* k

  1863. ! w4 t& m/ j! {$ U* j0 t
  1864. ;恢复PPU控制7 B, P  E/ m/ l# `/ s2 A" z, w. ?
  1865. LDA Screen_Ctrl% j7 y; f( X) D
  1866. STA PPU_CTRL
    ' y; e2 z& k; y! t4 p8 m% i

  1867. ( ~3 G4 x- L' [$ ]* I3 B
  1868. Sound_Reset_Proc_Init_Sound9 E$ o  {$ x  H
  1869. LDA <Music_Stop_State" n: h% ]/ _0 `1 Q, @" h  b+ j
  1870. BNE Sound_Reset_Proc_End+ y& z0 S# h+ y$ t
  1871. LDX <Music_Item_Cur
    # ?$ v/ f, o0 K3 q4 B- Y) H: H( D
  1872. LDA <Music_Cur,X
    0 v* j3 s: A1 K  V2 b# A7 z
  1873. JSR Sound_Init_Proc
    8 W% M- ]3 \' J3 a5 p1 |( J, C2 o" ^7 M
  1874. Sound_Reset_Proc_End+ u6 t: y( R4 L! F1 ^# `
  1875. RTS
    ( ^, n1 B% x  [- d/ |3 U
  1876. " Y1 P: R. J/ t1 b4 |. p/ p
  1877. ;==================================================
    ( H8 K& o3 Q, g/ Q( b* l
  1878. Clear_Item_Text;清除页项目
    % L( @. v: a4 x( U
  1879. LDX PPU_Cur; f/ b8 O, W" m' m8 C: F- v( u# |
  1880. LDA #PPU_MODE_CNT_CLEAR4 j3 [' J; g8 }$ i5 s
  1881. STA PPU_Addr,X+ z" m2 Z" P2 r  d
  1882. INX
    * w2 F) f+ {- B
  1883. ( ~$ E0 T& g( W* w% X2 t
  1884. LDA <Page_Last8 p. k: Q# v3 H& N
  1885. SEC
    & `( O0 A( h% ~! q  p
  1886. SBC <Page_Last_Index
    / }! H0 K+ P. A+ w+ A% i3 G& \
  1887. ASL A
    4 a/ R# F9 m3 b; s) M' ]1 o: P" d
  1888. ' \6 O) Q3 T0 w* x4 ?. y4 @
  1889. TAY
    * ^- x. @8 }: `. ^! G% ?0 m
  1890. LDA Item_Pos_Data,Y$ p, @5 Q/ l$ {8 }
  1891. PHA
    # ^- r7 X! i0 \0 f- K- a# \
  1892. INY
    & q* y- X! P% `& _. [" c( p2 @. r
  1893. LDA Item_Pos_Data,Y
    ( r& l: L) E& f3 a
  1894. STA PPU_Addr,X
    : D; s. q+ p( |4 s
  1895. INX8 l% o- n4 i+ R6 A" s% B
  1896. PLA) F1 D( `  L7 a! r7 J* N1 x2 ]
  1897. STA PPU_Addr,X% n- x& I2 G3 x* N: o
  1898. INX
    ; y/ r5 [3 S& G2 F
  1899. + g  _- h% w$ r1 Q; H; @
  1900. LDA <Page_Last
    % w$ ~. c; u, L$ f
  1901. ASL A
    0 k5 N% Z3 A( |# t+ \- Q( e, h' n
  1902. TAY
    3 Z# g# z! W$ c
  1903. LDA Music_Collection_Name,Y
    8 n( Z- V0 N* x2 }
  1904. STA <Data_L
    6 e8 z! u: r8 Z9 l
  1905. INY, K( b9 k8 u3 b- q
  1906. LDA Music_Collection_Name,Y( [) ]" U! k4 S5 Z. a# Z
  1907. STA <Data_H) ~3 D3 g  l% U+ m% r

  1908. 6 ]2 [$ z- ^6 ^- F, P9 @! z
  1909. LDY #$00# `$ v* Q1 N! z# _7 Y5 O/ F
  1910. LDA [Data_L],Y
    8 ]- V# V' J" y9 v2 S! @* b7 ~
  1911. STA PPU_Addr,X
    8 D7 g. U. U4 v0 |1 z
  1912. INX- W3 d) r' \( p" B' P
  1913. Clear_Item_Text_End5 ]; k! W. b/ H+ {3 ?
  1914. STX PPU_Cur1 J: O. Y9 T. E1 r% }3 ]
  1915. RTS2 c4 c, a% Q; |* |% w/ p  W, G# t% d
  1916. $ @4 H$ ]* j. G; \: M4 ^- l: Q
  1917. ;==================================================! R6 k4 _0 I, H0 T
  1918. Show_Item_Text;显示页项目: I0 v' A( I- o
  1919. LDX PPU_Cur; c2 c" X+ c) M6 R- Q2 m4 g
  1920. LDA #PPU_MODE_CNT_LINE
    ! o  S% y& c' A5 |( J3 s
  1921. STA PPU_Addr,X: o+ H( [' E+ y: b
  1922. INX8 _; |% u0 \9 `5 C% C2 [2 n
  1923. LDA Page_Cur
    $ x0 n) n" ?7 n$ v# c" _
  1924. SEC
    ) x5 i. C. D7 q4 ?
  1925. SBC <Page_Cur_Index$ O9 W: D2 C: f
  1926. ASL A
    / m& P# M# z  X3 m" N- _' `; F8 B
  1927. TAY4 }8 `6 X& s7 q1 ]2 ^7 U$ s
  1928. LDA Item_Pos_Data,Y
    : U& u8 p& |9 R- L4 ^& V
  1929. PHA
    * u8 t* W- J" ?6 s
  1930. INY
    : j- V* N/ J. m: w0 {  r. Z
  1931. LDA Item_Pos_Data,Y; z0 G% ]2 s) F1 T  y0 w8 C8 {6 P$ v, u
  1932. STA PPU_Addr,X
    9 d4 |, C; |- U
  1933. INX+ Q2 e" }) ~1 x  u, j# E0 T, Q
  1934. PLA
    ' r$ C+ M3 N) O; M! e. W
  1935. STA PPU_Addr,X
    , |0 J5 I% S* j0 V
  1936. INX
    5 U( z. o4 V& K* D% g: c

  1937. $ L* R7 M  G0 f7 `. @
  1938. LDA Page_Cur
    ! e( x3 y( H1 l) R7 G
  1939. ASL A3 d- T# h1 o8 Y% n/ Y0 ?
  1940. TAY* u, g- H* K5 V$ l8 G2 o
  1941. LDA Music_Collection_Name,Y% L& `! {' S+ e# k+ ]
  1942. STA <Data_L5 Y8 ^/ L7 c) y4 _' X' `
  1943. INY1 m/ \$ [. k$ N9 \$ Q+ X
  1944. LDA Music_Collection_Name,Y9 I* {7 K( y& x- @- B6 e
  1945. STA <Data_H
    2 F0 B- _+ `* t5 R7 p  l1 H8 O

  1946. ) n! T$ e+ o5 R4 v- V1 N
  1947. LDY #$00
    ) J5 C/ [% F7 O: t
  1948. LDA [Data_L],Y
    6 Z6 Q/ E) i. T$ {# s9 S
  1949. STA PPU_Addr,X: Y: a5 z/ z2 C2 f! k
  1950. STA Data_Cnt# q! p: M/ L6 P' @; E! t
  1951. INX
    1 a' L: r# f6 u" @* h5 d
  1952. & Q6 w5 X- X6 I+ R6 I6 L
  1953. INY
    5 i/ }0 E& g% Y: n4 a
  1954. Show_Item_Text_Write6 g: O+ r' Z, c7 Z' z5 F
  1955. LDA [Data_L],Y8 d' d( v  B* d, p- ^0 Z0 v
  1956. STA PPU_Addr,X
    5 X& S3 h+ R1 o5 Z7 B' e
  1957. INY0 k* i3 V# m0 S3 _6 P( f: [
  1958. INX* z5 S/ Y. H5 I9 S1 x3 h
  1959. DEC Data_Cnt! t; P8 w6 [; e. v
  1960. BNE Show_Item_Text_Write
    . ?5 v4 }2 W3 u& z

  1961. 8 Q  T8 m, r3 d8 I0 t( }2 n
  1962. Show_Item_Text_End. P% [, X. m" c8 z
  1963. STX PPU_Cur/ q( S+ {2 \2 D. g
  1964. RTS/ c( y2 s5 y' k" p
  1965. 0 C# [9 V1 }% D3 m
  1966. ;==================================================
    " ?4 ?2 F4 x, |) _" T
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量$ J% D5 f% _" w: G8 n, z4 C- ]0 |
  1968. STA <Data_Buf
    7 H9 L9 J6 d4 U- V, D
  1969. LDA #$007 a5 G1 g' r8 a5 S  t! k
  1970. Get_Page_Index_Calc! B0 D! P4 D' M) Y" H& F
  1971. CLC/ T$ U- X) z5 a( u1 P
  1972. ADC #PAGE_SIZE( n/ M' L3 L3 j6 N! n
  1973. CMP <Data_Buf
    2 R5 w1 k$ T8 U' B
  1974. BCC Get_Page_Index_Calc3 i" n% A6 u/ \$ |
  1975. BEQ Get_Page_Index_Calc_End
      Z7 ?. m0 E. \. L
  1976. SEC% k( \5 ~9 a; [7 }4 z- D
  1977. SBC #PAGE_SIZE
    3 H+ _  N6 I8 a2 M1 T
  1978. Get_Page_Index_Calc_End
    - s# V/ t: _7 `& Q- @" o, J. t
  1979. STA <Data_Buf
    4 ?& W, P7 T+ ]4 J, s$ B4 C
  1980. Get_Page_Index_Cnt
    " l% k. y" O" c. j: G6 D: U0 N
  1981. LDA #PAGE_SIZE
    ' h* Q( i; d- o8 M% U
  1982. STA Data_Cnt8 {! i7 o: n8 s& W+ j, }
  1983. 6 [) G! K; {' f2 O  g, _! K. [
  1984. LDA <Data_Buf- l% ~0 I1 S7 A7 t$ M$ t* u! q
  1985. CLC
    & `$ A4 R& \" k  g. E2 ~7 B
  1986. ADC #PAGE_SIZE: j6 O. a1 U. e
  1987. CMP #ITEM_MAX_SIZE
    + W9 X9 x0 q3 ^
  1988. BCC Get_Page_Index_Cnt_End
    1 v1 @* q  u$ E
  1989. ; h1 X+ `7 S4 O3 i
  1990. LDA #ITEM_MAX_SIZE
    : i$ {/ }4 {8 q- r+ {
  1991. SEC2 k2 u- Z6 n4 H# p1 w
  1992. SBC <Data_Buf) l7 {# l8 m6 _% X, Y
  1993. STA <Data_Cnt$ `9 K7 x, U$ A( D; c
  1994. ) ^0 q- |0 U8 L* D2 V! [
  1995. Get_Page_Index_Cnt_End
    . g2 I4 u4 [' z& M
  1996. RTS. k; P9 g/ u& P3 i

  1997. 7 c+ F* G# l  m
  1998. ;==================================================
    7 S, M/ j& A! a0 n/ \
  1999. Get_Last_Page_Start_Index
    , }: d2 d4 K& K' n. t2 I) b
  2000. LDA <Music_Item_Last
    3 q+ _6 |, v+ f# Z# m- M
  2001. JSR Get_Page_Start_Index
    / U" V3 \& s4 y" u
  2002. LDA Data_Buf% `) l/ G8 \, A' b
  2003. STA Page_Last$ t& ?2 l3 q% Q6 P
  2004. STA Page_Last_Index3 l/ k# P) [# T
  2005. LDA Data_Cnt& w4 C" w% V4 o& G( h. \# m
  2006. STA Page_Last_Cnt# n8 k* ]/ H- O7 ~
  2007. RTS
    7 r% {/ f( ~1 D" |; a

  2008. # w+ w2 C9 E3 n, h# C, i, d3 ?) b
  2009. ;==================================================
    7 Q6 @  N, y& V+ h
  2010. Get_Cur_Page_Start_Index( N: S+ E5 H( b6 i
  2011. LDA <Music_Item_Cur
    ; g: d2 B5 D- E' A3 Y8 ?0 v6 y" R8 j
  2012. JSR Get_Page_Start_Index4 a( |4 ^2 x+ F( s; y+ J
  2013. LDA Data_Buf4 k- g& ~0 K  }+ S
  2014. STA Page_Cur
    ( I# k  R" {6 d9 P' g" u0 |) ~( A
  2015. STA Page_Cur_Index+ Y$ w! k9 @6 b+ A0 T8 V
  2016. LDA Data_Cnt8 G! J8 B9 D* {1 r
  2017. STA Page_Cur_Cnt$ D: q9 N. V" K$ x/ j- j( P0 B* ~
  2018. RTS
    1 g4 T4 \+ g. {' e2 ~8 {1 g

  2019. 3 }7 l2 }8 z0 }# Q& [
  2020. ;==================================================3 T0 ~" x: ~, S3 B, e
  2021. Show_Page_Text;显示页文本- V# J, N, E& K& c
  2022. LDA <Text_Disable_Flag
    . z) ]) G& ~% @( ]6 [! k& [6 Z6 a5 e
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM7 ]. E" \' P# j% K
  2024. STA <Text_Disable_Flag
    2 `1 a, m% k3 h4 Q( i
  2025. 5 T" l5 N+ [# B: O2 n
  2026. JSR Get_Last_Page_Start_Index# B6 K) k+ i8 |. e
  2027. JSR Get_Cur_Page_Start_Index
    / J- G. a& p& ~; V( {

  2028.   Z* L0 F. S- q  X( x
  2029. Show_Page_Text_Set
    - }7 a+ @* ]( Q* j! Z9 S' y
  2030. ! v- N; U- a; ]8 O; a& t
  2031. Clear_Page_Last_Item;清理上一页& l: s2 c# |* w' i) C# N
  2032. LDA Page_Last_Cnt
    8 p; N/ W6 D9 u3 E# l3 L
  2033. BEQ Clear_Page_Last_Item_End. @! Q% N- y2 ~$ Z& F1 K
  2034. JSR Clear_Item_Text
    % k5 a9 N" g9 d* T( W# S# ~
  2035. INC Page_Last
    ) E( d  ?1 ^% f
  2036. DEC Page_Last_Cnt0 A( u. z6 g0 {7 \9 h, X  ^2 F1 N
  2037. Clear_Page_Last_Item_End
    % d# J. p5 v  D4 K
  2038. ; F9 W2 d: m3 Z6 h2 v
  2039. Show_Page_Cur_Item;显示当前页
    ( C+ e" [8 J- x* [- N  Y
  2040. LDA Page_Cur_Cnt" F9 P$ Y7 J8 _+ @7 f. ]0 P- N( d
  2041. BEQ Show_Page_Cur_Item_End: `" {! B/ }3 o5 E4 ]9 L7 g
  2042. JSR Show_Item_Text
    $ W2 L1 G; k' m- D) O* s6 S
  2043. INC Page_Cur
    9 B6 p8 [  `: P# c
  2044. DEC Page_Cur_Cnt7 M) v/ ?7 l6 ?# w: b& X( q7 w! V
  2045. Show_Page_Cur_Item_End% S' ~# J- X2 r7 K. N  G
  2046. 9 v' B4 j4 c" I6 E
  2047. INC <Time_Wait_Cnt8 ?- {1 K+ E8 N) o: W) r( Z
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    ) Y( q& H. O; D; B/ E
  2049. LDA <Time_Wait_Cnt4 e' A1 R  w  P0 W. |& M( L0 g
  2050. BNE Show_Page_Text_Set_Wait2 n, q* n# H" u5 k* K
  2051. 6 a! Q: E8 S+ W9 H  _% Z
  2052. LDA Page_Last_Cnt' n2 B& L2 m' f+ A
  2053. ORA Page_Cur_Cnt
    & h2 [9 _+ g0 X& ~% M9 [9 X  |
  2054. BNE Show_Page_Text_Set- q- R8 u9 @1 P3 G) f; B7 d
  2055. LDA <Text_Disable_Flag
    . P2 _/ b$ v8 V- X
  2056. AND #TEXT_DISABLE_ITEM ^ $FF: x7 F, `  }- J  \1 p
  2057. STA <Text_Disable_Flag0 g: V0 V+ ]* e3 R6 a
  2058. RTS
    : N6 a- h5 A1 H% O& i0 f
  2059. 3 K/ Z* E. Q1 @, V1 U7 T# ^/ d
  2060. ;==================================================4 [4 j2 d5 X' P3 P# _4 {8 d
  2061. Last_Item;上一项% k& f& R7 v9 ]8 A2 a
  2062. JSR Clear_Last_Track_Name- [* R3 n4 `0 l: _& B7 @
  2063. JSR Disable_Text_Draw
    : I+ V& X- `2 e9 ?% c
  2064.   F) r8 ]1 A* M2 I7 i# H+ v
  2065. LDA <Music_Item_Cur
    / Z' M8 Y6 |5 v& I: X
  2066. STA <Music_Item_Last: r& {" `0 R4 c! r# [
  2067. 5 L6 Z) y8 ?  M) r4 B$ r2 `4 d/ S
  2068. JSR Get_Last_Page_Start_Index
    ! f5 g8 G4 ]$ D

  2069. - S% o& ^5 r# S3 s, Z' u
  2070. LDA #$00: C8 c6 l) e7 c7 X$ s
  2071. STA Data_Buf0 I  b: P! I; b7 A7 H6 f& O

  2072. 6 O: d5 Y9 ]% {7 ]
  2073. LDA <Page_Last
    6 L) \1 p5 p8 ~# J' m8 J- d( M) a
  2074. CMP <Music_Item_Cur
    4 G- j; O5 I5 l4 g: f( p
  2075. BNE Last_Item_Begin' X6 H4 z, a. G6 a4 y4 I8 T
  2076. 6 ]; D5 E0 z2 [! u3 M  t3 j- C
  2077. LDA #$01: J# G1 H5 Z+ t7 \
  2078. STA Data_Buf' ?2 {0 d" G1 r/ S
  2079. Last_Item_Begin
    . X5 D9 h" g4 a
  2080. LDA <Music_Item_Cur
    8 Y! g8 N, o, O
  2081. BNE Last_Item_Set
    ! |; U- Q7 U2 b: _! j
  2082. LDA #ITEM_MAX_INDEX + 1$ {0 C% @/ b9 }8 Z- m
  2083. STA <Music_Item_Cur- s# i4 w) l" j8 [3 h" Y
  2084. ; H: t& I& b  \2 i
  2085. Last_Item_Set3 C6 w% l. X. a# O  w' `
  2086. DEC <Music_Item_Cur, Q/ D& b6 u0 {! X9 g+ m! N3 C% t( [
  2087. LDA <Music_Item_Cur
    3 X, `2 a/ V2 k8 |$ B% T( M' C5 u# I
  2088. JSR Reset_Current_Music( b" @0 o  g' _8 w

  2089.   u2 N5 }) `+ r
  2090. Last_Item_Play
    : z" K* I1 H9 f- ?% N
  2091. LDA Data_Buf
    6 ?6 W/ L/ M, y/ s
  2092. BEQ Last_Item_End: A# v+ q3 [1 e& S! V% _
  2093. JSR Show_Page_Text
    * v) n4 e8 {- ~6 n/ p- G
  2094. Last_Item_End
      c7 ]$ L! J* A8 s' R  x- k, {. h1 ^; ~
  2095. RTS9 ?5 g3 c; p4 Q6 T2 L0 V* K4 p
  2096. ) ~  d+ \* U+ K
  2097. ;==================================================
    " s% S8 ^: G, q& M
  2098. Next_Item;下一项9 s( T! G8 q2 o, }- K3 X! P
  2099. JSR Clear_Last_Track_Name8 {/ s# w+ L: M4 `7 l
  2100. JSR Disable_Text_Draw9 A& B! Q, {4 i& E: x
  2101. 3 n  y+ U5 y8 R) _& N) N& F& B
  2102. LDA <Music_Item_Cur1 X. W$ ^# N( w: H
  2103. STA <Music_Item_Last$ |# u, G8 g2 d0 h& ]2 x
  2104. 6 l4 o( o  s5 Y3 g
  2105. JSR Get_Last_Page_Start_Index0 K7 b1 A3 ^: U! h

  2106.   D2 r/ U4 h* b) Y0 I
  2107. LDA #$00$ f7 d& `7 n, q: s# ^; D+ p) Y5 H
  2108. STA Data_Buf; p- f& U: V2 Y+ b. M7 N! f5 X
  2109.   G6 G% l' D$ ?9 Z7 c; N
  2110. LDA <Page_Last3 U4 K9 \: c  k
  2111. CLC
    5 p1 @$ K0 a4 r) E
  2112. ADC <Page_Last_Cnt
    2 D# z! |0 h" i4 w4 i
  2113. SEC$ u/ ]0 Y8 H9 ~2 G- B  d
  2114. SBC #$01* m, w5 g. j7 y% g
  2115. CMP <Music_Item_Cur
    $ {: n+ L6 v$ a+ r& g8 R+ D
  2116. BNE Next_Item_Begin
    9 ?3 G( A% C; ?; N* {$ Z. ?

  2117. - _& U" p; n3 q2 s! u
  2118. LDA #$01
    + S6 L# }  U- x" L3 w  m4 ~, ]
  2119. STA Data_Buf, ~- R8 }$ t3 P9 Z, u7 P
  2120. Next_Item_Begin5 N% e" G& D6 R% ^$ W
  2121. LDA <Music_Item_Cur
    9 g5 Y; L; C- w% c: B' o, r
  2122. CMP #ITEM_MAX_INDEX
    ' W. P2 a1 Y) w1 X% k; I
  2123. BCC Next_Item_Set) Q. G  A4 c" ^) z
  2124. LDA #$FF
    % V0 I2 ]' m$ E
  2125. STA <Music_Item_Cur
    ) r0 x+ s* I6 w
  2126. Next_Item_Set7 X6 n; l* \0 U7 ?( a
  2127. INC <Music_Item_Cur
    * c! K+ g: U+ [
  2128. LDA <Music_Item_Cur' b% J! g$ b4 [+ s( D' h( ~
  2129. LDA <Music_Item_Cur
    " T* [% W: j, _) G( U, H
  2130. JSR Reset_Current_Music
    * F8 p% y0 S+ x: z& B
  2131. Next_Item_Play% a& }! A& ~/ c- r0 t' J
  2132. LDA Data_Buf8 _" v# X6 n- I/ r6 ^5 ^1 F1 N" J0 \
  2133. BEQ Next_Item_End  B  E2 Z. b+ c! g
  2134. JSR Show_Page_Text$ h+ @( J  ?# o' q( ^2 [% L+ h0 z( O
  2135. Next_Item_End
    ! ]& X5 N" e* m
  2136. RTS/ j, N4 Y+ i9 k' |, N2 L1 w6 T

  2137. + M& J- _$ ?6 o" k3 F4 P
  2138. ;==================================================
    ) ^9 i  D+ l8 R$ ]. p0 x2 n% @' n
  2139. Last_Page;上一页
      V$ P( {( A6 D) v, g8 S. c3 L& U
  2140. RTS! t( d7 u+ r! E
  2141. 1 h& K' E0 W1 q( N' p
  2142. ;==================================================; ~! `+ O7 d* `9 h; w$ A3 S
  2143. Next_Page;下一页1 P  }1 Z5 j/ r# x2 S$ G2 b
  2144. LDA #PAGE_MAX_INDEX3 S5 u$ I4 p" W1 }
  2145. CMP #$01
    8 M/ s1 d% g6 v
  2146. BEQ Next_Page_End
    : d, R/ Y; }+ S0 _4 y1 o/ [1 Z0 Z
  2147. ( F0 ]5 l* U$ c6 M2 \9 ?
  2148. LDA <Music_Item_Cur
    2 p+ y* A& w, k" @
  2149. STA <Music_Item_Last
    / V- W' a* P$ o. a; y
  2150. # _$ J  T! a1 u
  2151. JSR Get_Last_Page_Start_Index
    + y$ z4 N4 ?1 G2 B/ c3 D
  2152. 0 }8 i4 c5 u4 b3 c2 F
  2153. LDA <Page_Last_Index7 S- h5 z3 y, ?, j6 Y' Z0 U
  2154. CMP #PAGE_MAX_INDEX6 {1 s9 q* K8 a' X2 Z% p. c
  2155. BCS Next_Page_In_End_Page# B7 U6 s; a' @6 \9 c* T- A
  2156. " I* \3 n) K9 f1 A0 t
  2157. Next_Page_Not_End_Page;不是在最后一页8 t. l# d) J  V( c
  2158. LDA <Music_Item_Cur
    ) h7 ^- x, I/ g& I  r
  2159. CLC
    ; V6 |8 a, g; Q
  2160. ADC #PAGE_SIZE
    2 e. x. y2 L5 t
  2161. CMP #ITEM_MAX_SIZE
    / z# O5 R5 L# |# F5 V; ]4 |" N8 Q/ D$ K
  2162. BCC Next_Page_Not_End_Page_Less# a5 w9 D1 {7 U/ v3 t/ o
  2163. LDA <Music_Item_Cur: ^  }: j# H& F1 E7 s  J
  2164. SEC
    & ^3 q3 f# p1 c' P: s! t0 l( O; h
  2165. SBC <Page_Last_Index
    8 M4 o, V; G& b; X! X7 o
  2166. CLC0 w7 j2 N3 U9 b7 E* a' N
  2167. ADC #PAGE_MAX_INDEX! a9 h) H3 l4 q
  2168. CMP #ITEM_MAX_SIZE* [& b; i; z. l6 {, X+ z
  2169. BCC Next_Page_Not_End_Page_Less
    3 }8 t- B0 ^& P
  2170. LDA #ITEM_MAX_INDEX  [0 v' r( f  T) T
  2171. Next_Page_Not_End_Page_Less
    8 D' L) R/ y9 [* e6 l
  2172. STA <Music_Item_Cur
    9 ]4 c& _1 B  M1 y
  2173. JMP Next_Page_Reset
    6 C3 @$ N& o  k! u1 }

  2174. ) g1 h3 v# t' N8 e) h2 D4 @
  2175. Next_Page_In_End_Page;在最后一页
    0 G9 l- }5 f: ]% g8 D
  2176. LDA <Music_Item_Cur
    ( Y# K% g% d  W' O% g! \1 `1 C
  2177. SEC2 _/ h8 V% \2 i$ _8 ?
  2178. SBC <Page_Last_Index5 W0 I* g" c6 x' J3 d: U2 g( W( B3 M
  2179. STA <Music_Item_Cur
    ! t: l2 D) u, B+ x' f6 _/ C* }$ u

  2180. 5 G4 G; J) [7 R" ?4 X6 w3 K% q, ]1 I
  2181. Next_Page_Reset+ g! _! e! ^" O; d# c- N
  2182. LDA <Music_Item_Cur
    5 J  n+ c" ~1 j  F( j1 l
  2183. JSR Reset_Current_Music4 \6 j* d. O4 g! S+ a
  2184. JSR Show_Page_Text: s% {% [0 O1 r* @' m
  2185. Next_Page_End7 }; B6 z1 e  v3 i( m  V* Y' P! u2 K4 Z& r
  2186. RTS- y6 H. y  z' \

  2187. 9 o5 D8 D" ?! j5 D  J$ n: _# m
  2188. ;==================================================, c9 r9 b" `% I6 `6 k  |8 I( N
  2189. Disable_Text_Draw;禁用音乐条刷新
    ) X% n4 B/ B: i
  2190. LDA <Text_Disable_Flag
    " O. p8 s! L. V+ e) t0 ?
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME$ F* Q5 D6 z% q# h1 u% K
  2192. STA <Text_Disable_Flag
    # X; \! z9 r& O$ P9 I' V5 {# R
  2193. RTS8 j1 z( g2 F8 A5 T( r+ h* k

  2194. " ^. t4 o7 h. x7 V
  2195. ;==================================================
    3 ~: T5 l0 U: d0 ~
  2196. Clear_Last_Track_Name;清除上次曲目名
    , w# }0 T6 q+ {6 R
  2197. LDX <Music_Item_Cur2 Q+ ^/ c) u8 F) z9 O
  2198. LDA <Music_Cur,X) e) B) s9 l$ G- @
  2199. .IF Track_Name_Pos
    ! f# |" o, x  e4 \$ {, [/ i
  2200. JSR Clear_Track_Info9 ]/ K1 n7 @" v% }7 ?7 z/ U
  2201. .ENDIF9 H' U7 a8 B- g7 b# @$ N, l
  2202. RTS7 q" E' W" C* \* J
  2203. ; l, |* @: x, |* Z+ E" R3 Y
  2204. ;==================================================
    ' Z8 P8 [7 g5 q2 w& I' X
  2205. Reset_Current_Music;重设当前曲目
    * K. o" a2 X/ r! s- H

  2206. . x7 D+ x7 }! {9 V: M: y
  2207. ;写入当前总曲目
      b7 J: w9 I3 n
  2208. JSR Set_Sound_Total5 f2 A) a0 A& F+ C! x
  2209. LDX <Music_Item_Cur  Q+ C& `1 T7 _# l$ H
  2210. 0 F- w* ^/ R$ h* M. L/ \
  2211. LDA #$00
    : v' D* c. ]# @% k! O
  2212. STA <Music_Last8 ^9 Q( R8 Q+ o4 E
  2213. 2 [5 z& _/ i/ v
  2214. JSR Sound_Reset_Proc, q3 L4 L' o" I5 f( a
  2215. JSR Music_Show
    8 }' y( E. e/ g
  2216. RTS! |1 q) i0 `1 i' B( i

  2217. . J" y2 i) V( @( U& r, s
  2218. ;==================================================
    6 D  n6 p$ ]: @" x$ l/ ~" r6 N
  2219. Music_Song_Stop;音乐停止) g, Q( p) ?. e% e) r
  2220. LDA #$01
      @- i& A9 X( Y
  2221. STA <Music_Stop_State
    8 V" K# I8 k9 G' X
  2222. JSR Music_Bar_ReSet' S2 Q% C7 Z9 Z+ b
  2223. JSR Time_ReSet
    % g2 ]+ s* Q& ?3 ~
  2224. JSR Sound_Data_Clear& K2 _6 E' \8 k; }0 b# {5 @' o+ R
  2225. JSR Music_State_Show
    $ \( G5 k0 l6 P6 O) s
  2226. RTS
    - i+ `1 F2 a2 o8 \( n2 r( H* g

  2227.   R' i* X; ]2 I, e! [- R- |2 p
  2228. ;==================================================
    ( ^' M( B( I8 c! n# t5 ~
  2229. Music_Song_Play;音乐播放/ a& \9 R3 U% h; V% ?  ^. t
  2230. LDA #$00' }0 D6 J3 t; s/ j8 t/ n; ?
  2231. STA <Music_Stop_State' [/ d  \# X+ L* n$ N
  2232. LDX <Music_Item_Cur
    - U$ y2 t0 j( B" o( T9 z6 n
  2233. LDA <Music_Cur,X
    & ]; G* |* E0 `
  2234. JSR Sound_Init_Proc0 L8 ~6 a! I& R2 S$ _  V
  2235. RTS7 D8 P% U- o5 w' A
  2236. * u/ P. V  h4 C% N& G
  2237. ;==================================================. ?' s7 h, a6 o/ n# |
  2238. Music_Song_Last_10;上10曲8 _1 O/ A, e* q
  2239. JSR Clear_Last_Track_Name4 G9 Y* o6 N& L+ d7 s& b
  2240. JSR Disable_Text_Draw8 o; g( j% i& y, d# |* V- O
  2241. LDX <Music_Item_Cur3 s4 C2 _2 e5 r" W; L8 N
  2242. JSR Set_Sound_Total
    1 h9 ~: [" \+ c% G0 ~
  2243. LDA <Music_Cur,X
    ! Z5 E; O% H( |  c0 Y6 C
  2244. SEC# ]9 r2 P4 D4 J
  2245. SBC #10. Y# q. K1 D9 @* O
  2246. BCS Music_Song_Last_10_Set" J( ^; S4 c! [. m
  2247. LDA #$00
    * g. W8 t! \. V* B& F, K
  2248. Music_Song_Last_10_Set& c! y3 X! H. D$ ]2 N. q! T1 {
  2249. STA <Music_Cur,X
    ) b6 ?! \$ y/ A' b" m# h+ @
  2250. JSR Sound_Reset_Proc
    ! A: X4 m9 r' Z$ J' ]/ V4 S, W
  2251. JSR Music_Show
    8 z, A4 m/ f% f/ I3 Q
  2252. Music_Song_Last_10_End9 D: `& F8 b* g- |5 T6 z. x$ W( o
  2253. RTS- w. a5 y( v9 J: e+ _
  2254. 5 H/ b* ^) O$ j
  2255. ;==================================================
    & p# z# }& T6 U2 q& v8 d* X
  2256. Music_Song_Next_10;下10曲- J1 |  R1 v, E! U! m. [$ i
  2257. JSR Clear_Last_Track_Name  ], j# Q8 P6 K" q
  2258. JSR Disable_Text_Draw3 g4 s8 l( @% i6 }5 B* \& P5 X
  2259. LDX <Music_Item_Cur
    # q+ w4 e" I1 z) y, `
  2260. JSR Set_Sound_Total
    ) G$ r/ Y& y5 m! p1 p- Z) L
  2261. LDA <Music_Cur,X
    ) X) w" u7 t1 O2 ?( J: V, e( T
  2262. CLC
      Z) t7 ~' T) p* J: @
  2263. ADC #10. n* X7 M' e* |; n+ H2 f9 u
  2264. CMP Music_Total7 F  A7 A. E( T5 N
  2265. BCC Music_Song_Next_10_Set  P6 ~2 h8 |! I7 e; }. w1 K
  2266. LDA Music_Total6 @! K9 _2 T2 a
  2267. Music_Song_Next_10_Set
    % b( y/ d$ d, A: }% e3 g
  2268. STA <Music_Cur,X! ?4 ]1 V( i7 H$ Q5 h
  2269. JSR Sound_Reset_Proc
    + z& P  f4 @/ o, \, \" s
  2270. JSR Music_Show
    $ K- d6 p1 n* `3 _5 b; u0 _
  2271. Music_Song_Next_10_End, e6 W6 `% _# g0 i
  2272. RTS4 S+ ^, Y% U# u+ o" `1 d

  2273. ) g5 [& @2 _- l' M3 K
  2274. ;==================================================- t+ t+ Q! v( I6 M( h8 `4 b5 U
  2275. Music_Song_Last;上一曲
    $ U0 \5 E4 }1 e5 d% V" R
  2276. JSR Clear_Last_Track_Name
    8 W2 _9 {$ }4 l
  2277. JSR Disable_Text_Draw' w) i% V+ s9 H% d9 h
  2278. LDX <Music_Item_Cur' c# ^/ U3 }8 q5 C9 l) B
  2279. JSR Set_Sound_Total
    5 t# T0 _: t1 b) d& W: D
  2280. LDA <Music_Cur,X
    % A  H, ?8 ]* m8 `& @* z8 J
  2281. BEQ Music_Song_Last_Set
    0 D2 o) J/ c8 s$ [4 g
  2282. DEC <Music_Cur,X
    4 F" C" @/ ?/ ~/ _
  2283. Music_Song_Last_Set/ L$ J5 ~5 ?; \
  2284. JSR Sound_Reset_Proc
    : h# f" ^7 U% V: b9 C
  2285. JSR Music_Show. ]2 J" |4 ~; d6 z+ f
  2286. Music_Song_Last_End
    ' J$ E! I5 ?! J; q8 [: z4 I  g
  2287. RTS1 n) f; C  o9 k% Q1 n7 V$ l! f

  2288. ( v# C  _* g1 R9 s0 |+ B
  2289. ;==================================================
    ; X& y( M! W) x# N* D! h$ h2 f- J: z
  2290. Music_Song_Next;下一曲
    % S; |" ^5 y$ O
  2291. JSR Clear_Last_Track_Name  l+ m1 v' g; u4 j% i
  2292. JSR Disable_Text_Draw3 D: S' K: k- K5 a, z
  2293. LDX <Music_Item_Cur
    / j8 X% d9 b6 s( V! f' c8 Y% R
  2294. JSR Set_Sound_Total
    - Z5 V3 M* S& b# y
  2295. LDA <Music_Cur,X+ n3 J% y: v* j$ {- o. r
  2296. CMP Music_Total
    * J( X* o& H: ~" I1 @. e2 e7 E
  2297. BCS Music_Song_Next_Set
    + `, v# |8 T, L6 q  c
  2298. INC <Music_Cur,X
    ' _; c8 {; C* k2 p$ g' ^; q
  2299. Music_Song_Next_Set
    # _+ e9 e" C" r: y) e- b1 z; w
  2300. JSR Sound_Reset_Proc
    ' W# D1 v8 U: N: g9 m  z
  2301. JSR Music_Show
    3 A" d- d" t+ W' v/ Z- ]1 v2 w
  2302. Music_Song_Next_End; W) `8 \. n7 v4 V& b$ L
  2303. RTS
    ( ~& S+ E8 h6 I/ @9 k, [
  2304. % K' |; V+ O- j& }) g
  2305. ;==================================================7 |6 ?8 |. z9 I% d( J+ s0 K
  2306. Change_Select_Item;改变当前选择项9 z  G$ H3 K9 v' S
  2307. ;--------------------------------------------------) r3 k$ ^( }2 k, a! ?! Q, _
  2308. Change_Select_Stop_Play_Item;停止/播放: k0 f5 C- R# k1 _) [# }
  2309. LDA <Key_Once
    4 d. j0 c4 n! ?) |
  2310. CMP #$10
    $ m/ v& u0 c' i. Z( P& F8 P" m
  2311. BNE Change_Select_Last_Item1 h0 B- X) }+ p; m
  2312. LDA <Music_Stop_State8 B4 L. s! `7 B3 E" I
  2313. BNE Change_Select_Play8 `, L8 Z5 a( A3 F! s
  2314. JSR Music_Song_Stop
    & X& _! u, f5 _2 V+ Y
  2315. LDA <Music_Stop_State7 |) j# q4 k- s; v! h
  2316. RTS. m2 F* q/ V3 A" y1 E- |

  2317. " M: y" y  w! U1 Y8 R
  2318. Change_Select_Play$ u' X4 v2 B( Q. B
  2319. JSR Music_Song_Play
    6 {, N( m. s4 Y! A
  2320. RTS
    * ~( A; _; U5 b

  2321. 7 E+ k( q6 k' h3 |) g8 O- @8 ?
  2322. ;--------------------------------------------------' n' ?( n6 }; _, ]( K5 c
  2323. Change_Select_Last_Item;上一个专辑
    3 n# J* V$ e2 V8 F! @; q
  2324. LDA <Text_Disable_Flag& h& g1 h6 ^+ ^
  2325. AND #TEXT_DISABLE_ITEM7 `! E0 P' C# c0 F1 c  m, [8 `
  2326. BNE Change_Select_Item_End
    $ d' e1 U  _5 N3 c% h% q; x
  2327. LDA <Key_Once$ l& G" F+ z! y4 f% `  g. Z
  2328. CMP #$08
    4 c5 G. N/ J. y/ g, a% {. |
  2329. BNE Change_Select_Next_Item
    3 V& l* E  y8 p/ ]% D5 \
  2330. JSR Last_Item" S0 n5 F0 x9 a& W" g+ ?
  2331. ;--------------------------------------------------$ M5 c/ j9 m( z
  2332. Change_Select_Next_Item;下一个专辑
    9 y/ _* I* F. q/ `
  2333. LDA <Key_Once
    % ?2 ]7 L! m7 S  k( k
  2334. CMP #$04
    : s: D8 C0 I8 _9 x; V. |, P" c2 f
  2335. BNE Change_Select_Last_10
    + z0 P' [4 @3 r6 w5 t
  2336. JSR Next_Item
    - [+ Z1 @/ N7 R, \- G+ r+ x4 N, Q
  2337. LDA <Music_Item_Cur. O$ l( b; }0 }  f+ Z; o. n
  2338. JSR Get_Page_Start_Index
    : v  @2 L; f) n. A" g4 B% A
  2339. ;--------------------------------------------------5 E2 L" O' R# {9 Z& h% e: R
  2340. Change_Select_Last_10;前10曲/ G1 M4 C% \2 x/ h3 f6 d6 \- }% L
  2341. LDA <Key_Once; l. t) v% {6 Q
  2342. CMP #$402 F4 s/ b: }+ e6 z- y) h8 ^9 p! k8 ]9 z
  2343. BNE Change_Select_Next_10
    : x, B* P/ _0 m- p3 \3 A- g; K7 }
  2344. JSR Music_Song_Last_10
    # \+ O- _, L6 E3 {; @* P
  2345. ;--------------------------------------------------
    / e$ Y; k0 w2 f; i
  2346. Change_Select_Next_10;后10曲/ i  B  X/ h* `( I( s1 t: Y# L
  2347. LDA <Key_Once
    , y8 ~9 c4 r$ e7 O* t! O
  2348. CMP #$804 X3 o# C9 m3 s& z5 d1 h
  2349. BNE Change_Select_Last2 h: {% `- ^3 i$ k1 p  E8 ?
  2350. JSR Music_Song_Next_10
    " K# |4 _( T, B+ u% E
  2351. ;--------------------------------------------------
    ' J" G( C% b! {+ k7 c% N
  2352. Change_Select_Last;上一曲
    : g3 p7 q) k+ z% Y
  2353. LDA <Key_Once; J2 V& m  ^! ^" A3 U2 \* F) q
  2354. CMP #$025 _# K) |% [  B$ w
  2355. BNE Change_Select_Next3 N& h; X3 K% {2 |
  2356. JSR Music_Song_Last  z6 f; W# N, Y, X' y0 k
  2357. ;--------------------------------------------------
    ; i& ]7 w1 K5 u' ~1 W: B3 T
  2358. Change_Select_Next;下一曲4 z  A" q6 P8 u0 C+ i$ Q9 B
  2359. LDA <Key_Once
    0 j; s' q4 [8 s9 }" t
  2360. CMP #$012 V+ _% b! x6 G
  2361. BNE Change_Page_Next
    5 X9 a4 H0 J& z/ S
  2362. JSR Music_Song_Next
    ! ]' B3 r" b7 u3 x! h
  2363. ;--------------------------------------------------
    ' T5 q' e" u- ]# A7 X
  2364. Change_Page_Next;下一页% R! }% y2 K2 n* F. }
  2365. LDA <Key_Once
    + X$ f8 o# L& a) m: |$ ?3 F
  2366. CMP #$20/ r" r' P2 n8 I! H
  2367. BNE Change_Select_Item_End; @2 p1 E2 S: N8 E
  2368. JSR Next_Page
    3 ^* _/ f/ v4 L7 L0 p# f
  2369. ;--------------------------------------------------
    ! l% j6 {8 ~1 s7 T1 K! Z+ j# K
  2370. Change_Select_Item_End$ h3 c3 \3 s5 _7 d( }
  2371. RTS, T+ j# ^8 S2 n  S
  2372. 5 J6 c9 c2 Z6 }5 Q" I$ ^
  2373. ;==================================================5 e8 I! A0 |6 ]/ L1 y
  2374. Show_Arrow;显示箭头光标* y$ L! S4 `" W& y
  2375. LDA <Music_Item_Cur- @; G' G$ [/ E) W/ K
  2376. JSR Get_Page_Start_Index
    & F8 Q1 \+ r% A. D' d- K! X) [
  2377. LDA #$00
    : u" E$ i2 \- p' B- i; s
  2378. STA PPU_OAM_ADDR: k. c1 m9 N& X8 p6 ]; D
  2379. LDA <Music_Item_Cur( s- B: b9 Z" x6 `7 r5 x' Y, X
  2380. SEC8 o6 ^! S. R. P
  2381. SBC <Data_Buf) ^; Z# O5 F* ]! D; s5 s% J0 G
  2382. ASL A
    ' _' z0 L' }5 E
  2383. ASL A
    , }+ |) l" O8 Z- k( D. D' o
  2384. ASL A3 f/ `* o$ C- {. r- a0 Z0 L
  2385. ASL A  B; J- t5 e! G9 k1 y8 j
  2386. CLC
    8 P- |& e+ L0 h8 p5 q5 y6 n7 v
  2387. ADC #ARROW_Y_OFFSET8 m; V6 s5 I6 e3 S
  2388. STA OAM_TEMP_ADDR + $00. a3 J$ n! g# `* T/ r. |1 j5 C
  2389. ;STA PPU_OAM_DATA! {1 A% Q! H2 w* R
  2390. LDA #$1F6 e. f/ A3 x7 S
  2391. STA OAM_TEMP_ADDR + $01
    . U2 v, N$ r5 }$ p4 R
  2392. ;STA PPU_OAM_DATA/ H& j! ?8 L0 x$ F( s6 {
  2393. LDA #$006 o9 x3 `" M+ v) V; e3 X
  2394. STA OAM_TEMP_ADDR + $02' d! M# ~, q* ?: l! f  h# c
  2395. ;STA PPU_OAM_DATA. S5 i' O( p, a
  2396. LDA #ARROW_X_OFFSET1 {* H2 ]5 W% s: g- ~) Z
  2397. STA OAM_TEMP_ADDR + $03
    . R* j$ e. A: k, s/ X
  2398. ;STA PPU_OAM_DATA
    . ~: l5 u# l! l) O  z9 T1 L5 d
  2399. RTS
    * V8 q* ^* L& c) J9 F" }( T, _
  2400. 6 R# y# m1 J' g6 t, K- H0 P
  2401. ;--------------------------------------------------
    % A3 X4 o; v& x; C/ d8 z5 [
  2402. ;命名表数据  x2 Q2 U+ \' F9 r
  2403. Palette_Attributes
    1 x4 `; _  y( p& L
  2404. .IF SOUND_BAR_SHOW_ENABLE
    ! u) z, s. p! W% ]: K
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55/ v0 m' w5 @2 a( Q& A& B
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    4 B4 g. j- r+ J- y( U
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75+ f% ?$ D. ?0 ~7 `
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    ' G2 p6 q, Q7 z8 M  [- O, K
  2409. .ELSE
    ( j- i, t% u8 E6 v. y
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    ( d7 L# l5 J/ [5 ^
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55. r. y; r; U* F( t# Y1 v
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75& k. D# D" S/ R
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    / y' q( |6 l8 s/ D/ l- t! h) @* L; ]- k
  2414. .ENDIF
    , U6 q- f& b# u/ {

  2415. + H& e, {( `3 u
  2416. ;--------------------------------------------------
    ! k% q! c4 G' d+ Y7 R
  2417. ;调色板数据
    # i1 q: y8 I" ?* J
  2418. Palette_Data6 ~3 x4 W! k8 l; d# m1 q7 w
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    " a# {' e! E3 E) I+ y
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F) C$ u7 M% V/ {! C9 R( @

  2421. $ D: N5 Y. H5 c- r# R9 t/ j; L
  2422. ;--------------------------------------------------' v" o9 s. p7 ?$ a; M
  2423. Static_Text_Data
    0 M) U2 t2 Z  c3 Z" w- j
  2424. .WORD Static_Text_Caption_Data. f" n' ^' H8 ]; e3 ~# V
  2425. .WORD Static_Text_Author_Data
    ! r* k6 k' i6 H
  2426. .WORD Static_Text_Date_Data' x; Y# S/ _2 n, M/ t" o( m% N
  2427. Static_Text_Data_End, _9 o4 C- g& ]
  2428. 0 y# q0 l$ i& _
  2429. ;--------------------------------------------------3 B: A2 e. z$ L0 F' P5 ]
  2430. Static_Text_Pos
    7 T* U( [  u8 d6 o( @
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos), w) Y8 P/ U/ O
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    7 o8 x: \6 f! x4 ]- j% ~8 a, A
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)8 m" P4 i- N* `( T: H. T5 x" h" c
  2434. Static_Text_Pos_End3 b! f$ M) i- l' O

  2435. 8 }& N( M+ c$ I, h
  2436. ;--------------------------------------------------
    # X* ~, U3 o& S: z! X+ J
  2437. Music_State_Stop
    % _9 v7 h, v# \/ J! ]2 \6 [
  2438. .IF SOUND_BAR_SHOW_ENABLE; n# B6 F/ k' Y
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    # ?  v1 x0 q7 P+ b3 l
  2440. ELSE
    9 V' M; b- U( u( z( s, }
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00- j- R/ q( [8 @$ r6 J8 `4 ]
  2442. .ENDIF/ C* w2 {1 j* ^8 Y
  2443. Music_State_Play
    0 ~. {+ n9 Z3 |
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    ! Y# l# f5 p% I. Y
  2445. ) i# a& v6 D% R2 p' d- L  u4 S
  2446. ;--------------------------------------------------
    0 H# T, ?+ R* |/ b
  2447. Sound_Bar_Text_Data;声音类型文本
    - f6 k3 T; S: {5 U+ H( I" D
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"9 L+ @9 O$ k/ d- |7 {
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    - _0 u* [. k# H. Z& \& N. Y! u
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    " i  M* Y1 O* f
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    * A3 R* I8 v- G
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    ; q5 Q& a$ r$ y/ M

  2453. 8 u4 F& A3 F0 u' c
  2454. .IF Track_Name_Pos7 z4 z8 {& L: M& |

  2455. ( }( p% ^8 z' v5 C- x
  2456. ;--------------------------------------------------
    : N% q( c; q0 H  P. [
  2457. Track_Name_Addr_00;曲目名地址索引; |8 q( A0 W/ }" R5 l
  2458. .WORD Trackr_00_01
    * L9 D6 M/ c! n. o

  2459. 7 q9 S7 e2 l0 ]
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    ( U. W% a8 F" q; V* s
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"9 ~/ ]( C2 `; w
  2462.   Z- s% n. T. k; w* y
  2463. ;--------------------------------------------------
    9 B0 O& o6 Y/ T( l; X# }6 ^9 i- M
  2464. Track_Name_Addr_01;曲目名地址索引
    8 E/ y* U, P5 L' s$ ^4 u
  2465. .WORD Trackr_01_011 V* s( K# {- [
  2466.   \: G' A, S- c% b' k: N6 k# l
  2467. ;==================================================, z6 q$ y) z, x8 g
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    + r* r, F- S; a* @4 q
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"- {& C/ }0 X& V9 X
  2470. 6 a' }; b( `  A2 x3 B4 \; Z
  2471. ;==================================================2 E; u2 t. C( P: ?
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引* P* y: G/ G) ~+ x" E4 X' M
  2473. .WORD Track_Name_Addr_004 H0 Q; |2 ?8 i0 l& ?2 n0 c$ s( i$ f
  2474. .WORD Track_Name_Addr_01: n& M# D" Y1 Q# I2 ?* K
  2475. .WORD Track_Name_Addr_01& k8 P1 I3 a' `# q, |; ?

  2476. * u! k- t( o/ C" i# o
  2477. .ENDIF
      c- s( }) o. T
  2478. $ ?- h, Y9 e4 N: U( K  o9 C! X
  2479. ;--------------------------------------------------' F- f# z0 L- S' `8 O: E
  2480. Static_Text_Caption_Data;静态文本数据
    / }& S* F1 S7 L7 X( ~  A1 w( k& ?
  2481. .DB 16
    ) f- \5 ~  j- V9 L4 u: d
  2482. .DB "FC MUSIC 12 IN 1"
    ! ~& d; h, ^5 T" V5 W- _+ N' D: A
  2483. Static_Text_Author_Data
    0 P# [# c( O% L) q
  2484. .DB 25
    ; Z, X% A$ Q; x& i$ h
  2485. .DB "EXTRACTED BY FLAMECYCLONE"! {( B; u  K3 t" t/ o' f! q8 F- m4 v
  2486. Static_Text_Date_Data7 r6 \, W. b5 c% ?( s# h  O3 o' v
  2487. .DB 10
    " Z7 Q7 t1 N& Y& Q  ^% \
  2488. .DB "2023.07.23"/ e' o+ f  S- ]2 c8 V5 a" ^

  2489. + t$ ?; q% q7 B" d) }! J
  2490. ;==================================================/ i; N5 g; w) B) |, P3 N# Q
  2491. Music_Collection_Name               ;专辑名间接索引1 p# I2 F0 {4 `% Y# ?; {# a
  2492. .DW Music_Collection_Name_00: [+ H" y/ r% m
  2493. .DW Music_Collection_Name_017 U+ J, u  K; b1 a0 M- e
  2494. .DW Music_Collection_Name_02) G; E- D. ^0 F# n
  2495. .DW Music_Collection_Name_037 G$ u/ G; \$ t. m7 O1 j( f
  2496. .DW Music_Collection_Name_04
    7 k) I' s, `; k( A. W, C) J
  2497. .DW Music_Collection_Name_05
    ) c5 O! `5 g3 X! w0 C$ g' Z
  2498. .DW Music_Collection_Name_06
    # E' N2 [  v# d1 [& \) D
  2499. .DW Music_Collection_Name_07) s8 K( y) K" C# R: x
  2500. .DW Music_Collection_Name_083 S& J: x$ A3 _: p3 q( c, ^
  2501. .DW Music_Collection_Name_09- N9 u8 T& M9 t  t$ r% W
  2502. .DW Music_Collection_Name_10" H: j: S) L# O( J7 i
  2503. .DW Music_Collection_Name_11
    + D  F. k+ D; w. s# B

  2504. % K+ B, H. {$ W  x1 @& e1 N
  2505. ;==================================================" j2 j9 s3 n3 {  n# e
  2506. Music_Collection_Name_00            ;专辑名文本数据
    1 I* k# l  X# f) K/ |4 u
  2507. .DB 11,"1.RAF WORLD"
    ! h. c( K/ T/ t4 B( t6 [8 u0 k$ [' y
  2508. Music_Collection_Name_01/ ^8 Q3 f" X% |5 A+ l6 ?9 g) C" m
  2509. .DB 15,"2.FINAL MISSION"
    7 p) Q; F8 l# y& [3 b1 z+ G
  2510. Music_Collection_Name_02
    * V  U1 n! O" U$ A1 m! C, q5 _
  2511. .DB 06,"3.KAGE"9 r5 G0 f7 |; G" o4 }" |$ P, ~
  2512. Music_Collection_Name_03
    9 q! V+ X7 w1 u$ i
  2513. .DB 16,"4.DOUBLE DRAGON"$ m+ p# @$ [1 X- b5 X' f
  2514. Music_Collection_Name_04
      }& Y0 M* u' d1 m* A# y
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    . B' T- K8 C0 c# p8 D% K4 @
  2516. Music_Collection_Name_05
    $ G$ T1 ^' ^* a0 N( {9 Y3 S* m1 t
  2517. .DB 17,"6.DOUBLE DRAGON 3"7 N8 q- r+ }8 |" Z( ^
  2518. Music_Collection_Name_06! t# k2 \( K) j+ n( l: o6 x
  2519. .DB 09,"7.ROCKMAN"+ `; c! P; g$ T! ], I5 d
  2520. Music_Collection_Name_07
    2 N, E1 i% F0 ]* s/ W# `$ F' i
  2521. .DB 12,"8.ROCKMAN 2"! ~' ~& J4 O0 q! r$ _) t! o
  2522. Music_Collection_Name_08' Q, g' V- l  F/ K% h2 R1 f
  2523. .DB 12,"9.ROCKMAN 3"0 _& o* F3 I- d) s% ^4 R/ n3 j
  2524. Music_Collection_Name_09' G1 X3 `: _# Y8 l; B7 j# k
  2525. .DB 12,"10.ROCKMAN 4"
    / g  w; X$ H1 w
  2526. Music_Collection_Name_10
    0 P- e/ i! E" W) O( t/ U, C
  2527. .DB 12,"11.ROCKMAN 5"! i7 }6 W0 P# K# Z. L
  2528. Music_Collection_Name_11, Y/ [, f( k' L3 l
  2529. .DB 12,"12.ROCKMAN 6"7 l/ w0 {9 q5 o8 N: @

  2530. $ H; Y8 \- K( Z- ]8 n
  2531. ;==================================================
    3 `( p1 J! y. @, _8 k. L+ a
  2532. Track_Name_Addr_Flag                ;显示曲目名标记% T; i* ~/ M* K* G
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    4 j* O% r3 V! b9 ^$ N  J5 o8 M

  2534. 8 [( A# }7 j# X& `  C5 Y( M' x$ h
  2535. ;==================================================! r5 P* v/ \6 h+ p. T/ _
  2536. Item_Pos_Data                         ;光标箭头位置# t7 V) \- \5 H, P0 m# u4 J
  2537. .WORD ITEM_SHOW_POS3 x" ?+ n* D+ Q8 m8 h) z
  2538. .WORD ITEM_SHOW_POS + $0040
    % S( L1 R& F* n) e3 W; H
  2539. .WORD ITEM_SHOW_POS + $0080
    7 Y% m! L! C  }) `
  2540. .WORD ITEM_SHOW_POS + $00C07 V" H: o) O; x' D
  2541. .WORD ITEM_SHOW_POS + $0100* \  C* D' B5 ~( u5 K
  2542. .WORD ITEM_SHOW_POS + $0140; m, u3 |8 R2 v* x' G& p- e% h4 B
  2543. $ l& W: x5 q& K6 S% P2 m
  2544. ;==================================================
    8 Q2 P+ i3 B" Y, G5 J  I% P( s
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    ; X! m/ r+ p; |) W
  2546. .DW $BFC8
    8 K/ l& A( S; j0 M5 K, q( }: I
  2547. .DW $D7F0# d! ~5 K/ ?. B' T/ t
  2548. .DW $9FC0
    # n! F4 P; |7 v7 i
  2549. .DW $BF70" N) e; Q- F# {3 \& [8 ^8 U; y
  2550. .DW $8003; b; `& s* w# I* G
  2551. .DW $BF30
    * \) F& f5 x; Y# _- [; v* J+ Y
  2552. .DW $90032 ^+ \+ T, s5 Q: N0 Q# c0 R
  2553. .DW $8003' ]# e& T- h% }6 z! r  F* |
  2554. .DW $8003
    . }; i3 R' f% t3 W! y, y; n1 y
  2555. .DW $80030 X3 ~* d/ K  g
  2556. .DW $8003
    4 x& l( I/ s$ |! k# W& f; ?* ]2 O
  2557. .DW $8003/ j- ^. ?! G/ l2 ~5 O3 m+ ^1 u5 M* F+ B

  2558. 9 h9 L) b3 y" o* Z. [* |
  2559. ;==================================================% A2 O1 v$ m% M7 d! g/ I6 _
  2560. Sound_Play_Port                   ;音乐播放入口地址
    1 B% s/ `- p( `! X* B
  2561. .DW $8000$ o% s7 {4 C% Z* H0 t
  2562. .DW $8001- s( E4 `/ U$ y  B
  2563. .DW $A000
    7 B. p+ ~5 S( N! p
  2564. .DW $8003
    " ^/ H# l9 x2 R$ J* d7 E
  2565. .DW $8000
    : O% U7 m2 X9 I- s6 h2 h
  2566. .DW $80031 Z& Q6 t7 B' q! w: d7 C' C0 w
  2567. .DW $9000
    - N. Q/ R0 p! W" e  L+ L& W5 ?
  2568. .DW $8000
    7 r, w* g1 p3 Q$ o1 G: J" S
  2569. .DW $8000
    " g0 w/ l0 n& P( r
  2570. .DW $8000
    + R+ H5 M$ Q0 L4 Q
  2571. .DW $8000
    & n* K5 |3 [. b9 v7 w7 k9 \
  2572. .DW $8000
    4 T" E9 [3 x5 j$ j+ k$ W

  2573. 8 K& z9 M4 u9 w/ [$ s7 H
  2574. ;==================================================9 [, x6 G- l; f8 O* h
  2575. Sound_Reset_Port                  ;音乐重置入口地址5 u6 c' o# h# w
  2576. .DW $0000
    ! z3 u6 |7 y' w6 V3 {
  2577. .DW $0000! B& p3 S/ o+ f
  2578. .DW $0000/ `" b$ e) v. x, {. b
  2579. .DW $0000
    2 T4 s( v9 r: U
  2580. .DW $0000/ j+ m9 N* f3 u0 k
  2581. .DW $0000
    & S  J- h, X$ `  `1 B
  2582. .DW $00003 L( {1 C8 D6 I7 d- L6 S9 I# y
  2583. .DW $0000  ?8 [7 w: B' |- }6 z
  2584. .DW $0000
    : O0 R8 b: h8 {
  2585. .DW $0000% g2 V5 H: ?/ i& e' P
  2586. .DW $0000
    & [4 f0 `" ]3 b2 o
  2587. .DW $0000
    + i4 p$ `/ d  o2 ^
  2588. 8 F* ?7 n- k  N) d# U7 _5 r- {
  2589. ;==================================================1 p0 y! S( Z8 H! Z/ u3 {
  2590. Sound_Total_Port                          ;曲目总数6 p0 M0 H/ V$ G( F
  2591. .DB 38# q  V% N  @$ D; B/ r
  2592. .DB 33
    3 Y* u( c( l2 b. P" O8 S
  2593. .DB 49
    ( j4 i- |: G: h& M% [- v
  2594. .DB 419 x. P$ w7 Z" Y/ c: ^2 q* @) S
  2595. .DB 830 H; [9 B; D9 Y" A) Y
  2596. .DB 706 f9 D' P: Z3 V$ k- Q' ]
  2597. .DB 50
    - B; h6 ]$ I/ @2 N. ~* O2 a
  2598. .DB 67
    5 H* k% V% u0 K& x* U
  2599. .DB 578 B' a# e6 I/ Z* U/ Q
  2600. .DB 711 o+ U& E, j; ?$ f8 V( d
  2601. .DB 76$ H8 n) v8 \7 a5 Q: Z$ V
  2602. .DB 102
    $ b8 e) B7 v' e

  2603. ! W9 W" g2 K0 q& F- F7 e
  2604. ;==================================================9 F7 [, }6 v1 C# k# j
  2605. Sound_Start_Port                      ;起始播放曲目' F* v' R, u0 p; H
  2606. .DB 008 _) m  t& D2 }7 \$ m
  2607. .DB 00
    2 t3 p# i- F& f- _- I% \
  2608. .DB 00# D! K' V  _5 N$ L! d; J, a
  2609. .DB 009 Y- z4 B, y. A5 W
  2610. .DB 00! a  t* A4 i+ W" h* @1 j$ h4 N
  2611. .DB 00
    2 f% g. h5 |" V7 l) J' b* u$ D3 @; g
  2612. .DB 00+ L) ]4 g& z7 D8 o1 J
  2613. .DB 00
    ! k5 R  I! ^; S6 ?" j
  2614. .DB 00
    % k. ]/ P0 z4 O
  2615. .DB 00' ?$ u- z& C4 E9 M
  2616. .DB 000 u$ c+ p* Y4 K
  2617. .DB 00
      Q- s9 R4 b0 {$ T+ o4 i
  2618. ' A1 T5 l) a! ]/ |
  2619. ;==================================================, ]/ o- ]# N* K+ A( y) m  {( p6 c6 e
  2620. Sound_Bank_8000                      ;专辑bank_8000
    3 x& F. b* j* n+ b6 V
  2621. .DB $10
    1 S' d' ]: ?. R" Y- j& W: l) Z
  2622. .DB $12" u+ W9 [& N9 F/ {  X
  2623. .DB $140 M* V; L/ b) h
  2624. .DB $16
    & W8 V0 u- v+ B/ U! D
  2625. .DB $18
    5 e: a) C) p- C7 f1 e
  2626. .DB $1A/ D3 v4 o+ Q* B% a
  2627. ' h  R0 y: p% B. a" P9 \
  2628. .DB $00
    ; x; c& L4 S5 R% T* j
  2629. .DB $02# n0 _; A+ t$ J: z; m
  2630. .DB $0D
    1 k4 l  u3 D' R/ c+ b3 S- F" L
  2631. .DB $04
    4 b2 `' A+ V& H! w
  2632. .DB $074 f: t% z, D1 W
  2633. .DB $0A
    * _# p; w0 B! E% \; v* P

  2634. 7 ?7 S9 {6 T4 r+ l2 L

  2635. 2 q+ M% s) E3 D0 f& N1 P* _
  2636. ;==================================================
    0 r) r+ f) p7 f( n2 t0 V
  2637. Sound_Bank_A000                      ;专辑bank_A000
    + d0 R: W; {# R# P
  2638. .DB $112 ?4 y9 D' {9 v5 S& D
  2639. .DB $135 I" M' u- y! \) n* ^8 e: P, h2 v
  2640. .DB $15% c% Z6 d+ F4 d! g- h
  2641. .DB $17" ?% u+ b( E7 Y5 B4 m" U- s
  2642. .DB $192 e" k3 B! G/ b$ m" x
  2643. .DB $1B
    2 u: F2 {8 y+ F& D

  2644. 7 G7 h/ ^8 v9 r; s2 L
  2645. .DB $01+ c. b( g& @( j7 q
  2646. .DB $03
    * M/ e2 ^0 M  R
  2647. .DB $0E
    4 {: w5 ], V( [* X: Z) B4 ]
  2648. .DB $050 v- f3 ^) |* K
  2649. .DB $08
    1 ]# H. `  w2 \  r, w
  2650. .DB $0B
    " ~* x, K/ ?* q8 M3 K: `* S$ i% a
  2651. # A/ i4 m" Z7 \3 x

  2652. / @9 y( p, k5 S9 c/ O0 q
  2653. ;==================================================8 C) V' k) e  {5 O  J. f" e  |6 [
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    , f3 G& u1 ]/ x, ]3 H8 d
  2655. .ORG RESET_ADDR3 O: ~) V. X( s+ w' d

  2656. 7 P, o- g, O2 @' |! n; d
  2657. ;==================================================  h% k4 G8 z* q
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    / Z3 m6 F$ ^  n6 }# s8 J
  2659. PHA
    * L& E& F, ^  Y% @
  2660. LDA #$06
    5 d. F+ D$ t; D6 i; H' w0 {
  2661. STA MMC3_BANK_CTRL
    9 E2 r8 ^1 L0 ]/ z9 M5 F4 @( M/ \
  2662. PLA7 T: k' H' u4 q+ D* Q* G
  2663. STA MMC3_BANK_DATA
    , R7 ]  ^1 T- s
  2664. RTS
    9 v' G8 I- L+ J- r( `

  2665. * A; U8 c# [* l0 ^- K5 D6 n" d0 P
  2666. ;==================================================
    2 L# W# `4 ~: J9 c8 G& Q
  2667. Switch_Bank_A000;切换bank到A000-BFFF0 y* e0 }  c% y, ~2 \/ T
  2668. PHA+ p7 w3 R* L5 T9 e$ J
  2669. LDA #$07
      u0 e$ j7 j6 L4 Y1 U' j0 p8 {
  2670. STA MMC3_BANK_CTRL
    1 K7 \8 B- ]3 [7 b& d0 P6 M
  2671. PLA/ P5 r( M' B- m- v8 B, J0 e/ D
  2672. STA MMC3_BANK_DATA
    1 L7 G0 N1 l' U  E+ u8 O: h
  2673. RTS
    0 T8 ?. N- I4 i( h* L

  2674. ! h( x6 a3 o  I
  2675. ;==================================================
    5 B2 Z/ D5 h" [& L( J$ \( q1 r
  2676. Switch_Main_Bank;切到主程序bank
    4 p( }, L" [! c. y$ ~
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK7 x1 A4 D9 z! Z4 |! I' z6 Q
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank; G3 e% b/ R) p3 V; A! Y/ Q
  2679. RTS
    2 G3 t. Z: b4 G2 A& _+ h

  2680. . o& b, j( l2 D# L4 f% `0 L$ e
  2681. ;==================================================
    8 T+ p2 @# w) _
  2682. Sound_Reset;音乐重设(如果有的话)
    * D; {, [7 A# q
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    6 Q" e1 d+ }4 ]1 q# T
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    4 E: K2 t- b( k* a. d
  2685. JSR Switch_Main_Bank   ;切回主程序
    $ [5 o* U& Q5 g) ^: U
  2686. RTS5 y+ V4 h' p3 N8 w

  2687. + S- R1 u1 N7 s' y" K
  2688. ;==================================================
    ; E. G/ d' t0 W2 D2 @
  2689. Switch_Music_Bank;切换音乐bank6 `# |/ [* D9 j; K, o( g
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    . N; v' [3 e5 I/ r/ ~7 v
  2691. LDA <Music_Bank_80008 h' J! Y) M5 y4 d8 A, a. Y1 h5 A
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank( |6 M8 Q5 G# O3 S
  2693. LDA <Music_Bank_A000( @& U0 x5 [* U! [6 M
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    ; ?! |; l; Q4 @  e. P9 \( J
  2695. RTS" _* O9 _" U4 U. \* P% M
  2696.   E: z% v% T. r/ x
  2697. ;==================================================3 X$ b& |# i8 _5 V0 |9 t! g
  2698. Sound_Init;音乐初始化. W( C8 P, F$ k2 m2 ?. K9 U/ U
  2699. PHA
    + U$ W9 L3 p  h4 E( h% n
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    ; B% ?! p+ c3 k. G; k/ o
  2701. PLA
    , ^; c" Y' {  w. I8 g
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    " A, p( C  }3 K+ C: R3 i1 i3 C
  2703. JSR Switch_Main_Bank   ;切回主程序( C. J7 C: X5 Q; u
  2704. RTS9 Z" P8 H% s  ^. q  d. g) u- u/ B

  2705. ( I8 j- u* y( v0 f
  2706. ;==================================================4 {* L3 q* v* u) l3 m' K% r! Z
  2707. Sound_Play;音乐播放
    / X4 c8 Q0 d9 d% `1 F. X
  2708. JSR Switch_Music_Bank  ;切换到音乐bank2 v0 r5 V" C; @0 ?5 a  O
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    + U- ^' s5 t4 i4 G+ p, d
  2710. JSR Switch_Main_Bank   ;切回主程序
    . k$ H- N. b* }& _! J
  2711. RTS
    " o% i4 _- B: d& N- X
  2712. / v2 }2 z# A! h# `+ P# K- O6 }
  2713. ;==================================================
    * r) @3 k& ~# b1 V
  2714. MainLoop;死循环
    $ s( f# X4 A( a0 V3 X9 A
  2715. JMP MainLoop2 S; U0 O; e- j

  2716.   L. U# C) W+ u" w6 N9 f1 {
  2717. IRQ_SUBPROCESS_JMP = 01 S$ b# [) p2 d# U% f
  2718. 8 x# {' h' x# S" Q( I; e
  2719. .IF IRQ_SUBPROCESS_JMP4 v  i+ h$ l+ g1 g+ y0 |4 H( G; b
  2720. ;==================================================
    ! U# e( b& c1 K8 u  w
  2721. IRQ_Process_0;IRQ处理过程0) Y7 C) z9 p3 ^& U, X, ]

  2722. ' Y! L6 b7 e, q5 d8 s" w0 N" @
  2723. ;15条扫描线后触发IRQ
    6 v% ~3 b- ~' v9 I5 `
  2724. LDA #15
    5 F; g  _* W. A( t( x, J# p6 _/ b  [" o
  2725. STA MMC3_IRQ_LATCH1 z5 g7 ^0 n% m8 h  C
  2726. + O) k) u5 v" D8 x( }$ r+ N* K# ?/ J
  2727. ;设置屏幕滚动" V7 r% c6 \/ @2 h: l0 e8 L
  2728. LDA <Scroll_H" O- _2 D; C2 F3 c1 }8 X
  2729. STA PPU_SCROLL
    - o0 n4 T' Z' \) ]/ H3 n0 ]5 u( W$ Z
  2730. STA PPU_SCROLL
    $ ~# s+ R& D3 }- x$ |) J, d. l
  2731. , p* b, u* l% E- V0 U  e0 i: G
  2732. IRQ_Process_0_End/ j. E( L: M" h, T
  2733. INC <IRQ_Process_Index0 H6 V* b2 `: w# N& W+ a- t- @
  2734. JMP IrqProgramEnd
    # Q$ H' v6 q) U$ d  K0 {. s% S
  2735. - `; D* L0 V/ K3 G1 m8 V4 _
  2736. ;==================================================5 W; S; R5 o% q5 H" [
  2737. IRQ_Process_1;IRQ处理过程1) z4 ]  i9 U, ~& a, J( _
  2738. 9 [" R+ g/ G- U# H; I8 q
  2739. LDA #557 }$ R+ ~* H1 z) X8 w( W8 D! t
  2740. STA MMC3_IRQ_LATCH
    6 N  m4 z" `" y6 m! b4 N
  2741. 8 ~. n$ W8 G# d! ~, O, p1 C4 J7 \
  2742. ;设置屏幕滚动
    & `; V: V# s% W! T0 b' e, v
  2743. LDA #$00
    8 B( d) g$ b3 C0 Y6 n" s; z: L
  2744. STA PPU_SCROLL1 `3 h+ G! E8 }- ]' p0 L4 B1 C
  2745. STA PPU_SCROLL: ?4 z+ |5 A6 V  A  {& k
  2746. / q4 N' i) a3 V1 W0 n. \
  2747. INC <IRQ_Process_Index
    " P2 K* ~: i& P( Q7 C$ }4 s+ N8 h
  2748. JMP IrqProgramEnd
    1 ^- M" h% y% q! L" ?) w* g0 u2 F  I5 c/ G5 L
  2749. : \9 s+ B( R& V# \( i$ Y, k( V' N
  2750. ;==================================================
    : v* B: e" O2 F0 R) T5 q5 ~
  2751. IRQ_Process_2;IRQ处理过程28 \" r& D( c( H: W" A: S
  2752. 9 e& P: {( h! T3 O. T
  2753. LDA #15
    ) a! K/ \- e1 [" }
  2754. STA MMC3_IRQ_LATCH
    / L1 J/ ]. d% z4 @: M
  2755. ' T: [; y! M- G! n& }
  2756. ;设置屏幕滚动1 J9 W/ ~6 A- I% o
  2757. LDA #$00
    4 T, L5 L& w: B' D& L$ i& _: ?
  2758. SEC
    , O" N9 ?  Z7 t" [
  2759. SBC <Scroll_H
    & Q+ Y5 c4 W4 J- B5 P- R8 T$ F
  2760. STA PPU_SCROLL* n" A8 T% S1 R0 v
  2761. STA PPU_SCROLL& ]; d- s1 K% l/ }: m1 M# l3 B, @
  2762. . p; G4 N! D3 B0 J" g, Y
  2763. INC <IRQ_Process_Index) o* \( J6 ^  r2 r: K; j
  2764. JMP IrqProgramEnd
    5 t5 h  k/ W3 T' t1 n
  2765. ; u, g3 H, v; C$ b5 @
  2766. ;==================================================
    & ~! e. G% Y) L; F! \6 {3 v
  2767. IRQ_Process_3;IRQ处理过程39 N4 q( T4 S5 O2 K* g- J
  2768. 6 M% ^! j6 J+ j" B; t  J
  2769. ;设置屏幕滚动
    * e  a: v/ f' j" g$ b( W! \
  2770. LDA <Scroll_H! G# P+ C2 f& ~
  2771. STA PPU_SCROLL
    , \& c# ]3 ~% ?8 s) L
  2772. STA PPU_SCROLL
    ( C% F1 s$ @: k: A
  2773. + j) Y0 G& x3 _8 K
  2774. ;禁用IRQ
    2 X  v1 x- ~* ^- N
  2775. STA MMC3_IRQ_DISABLE
    / s% d/ I8 D$ m. F
  2776. JMP IrqProgramEnd
    + j- k' e4 B" s* A0 c( G. e6 j

  2777. 5 T- T* H$ W  i9 |. r1 Z+ X
  2778. IrqProcessAddr
    6 }# R. {  [4 T' m. F* I9 O) _. F5 z( M
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    ! ^2 V- u$ e" V

  2780. 4 W. L% M$ Y/ U) o; V8 i1 D+ h; ^
  2781. .ENDIF
    ' c+ q- g+ }7 o! G% k! D

  2782. ; @( L: X, e* k/ L
  2783. ;==================================================
    6 i& y" X5 b! q/ e8 |' X: f
  2784. ;IRQ滚动模式常量
    / h; s% c3 b9 u4 H0 O, H6 }
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    5 s( I& Z6 H1 H: r( L" ?
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动& |; {0 u; P. M  ]% w
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    : H+ P( M5 r7 M' }

  2788. ( o) y1 J9 K7 Q3 q
  2789. ;IRQ扫描线数据5 ^0 c! S5 p% p& m3 i
  2790. IRQ_Scanline_Data
    4 j5 ]: P" g# w+ N( T8 H2 `( D
  2791. .DB 8; Z* }) D  U$ @" j
  2792. .DB 546 k# J# I* ^$ Z# C* W( R. [
  2793. .DB 8
    ( g: }5 q  o+ S$ H/ I2 _
  2794. .DB 00 ;关闭IRQ
    ( M* x  {9 [6 C8 Z4 P
  2795. ; o' @/ c& t( Y& L
  2796. ;IRQ滚动控制模式" U/ G9 ^* o8 S
  2797. IRQ_Scanline_Mode( u3 i8 |+ o" ~2 n4 V
  2798. .DB IRQ_SCROLL_MODE_ZERO8 W+ P' {2 k4 {& X
  2799. .DB IRQ_SCROLL_MODE_ZERO$ Z5 Y/ \! `8 E' _0 O
  2800. .DB IRQ_SCROLL_MODE_RIGHT, Y/ a; M2 j: B, n
  2801. .DB IRQ_SCROLL_MODE_LEFT. o3 E5 h* R' @
  2802. 9 F0 ^3 \0 V& T( c, N+ s1 k. `
  2803. ;==================================================2 q. c3 K3 _7 e. k
  2804. ;IRQ处理
    1 A+ N" C$ G: r" h* [
  2805. IRQ_Process
    - d' @7 |! M& d$ l: P/ B3 E
  2806. LDX <IRQ_Process_Index
    1 y: V  e/ K  g
  2807. LDA IRQ_Scanline_Data,X+ {% I9 O  R$ ~8 b# Q2 l# n
  2808. BNE IRQ_Process_Latch
    , B$ i  W+ G! I" ^
  2809. IRQ_Process_Disable;禁用IRQ
    ' p1 _& i& G8 p( x
  2810. STA MMC3_IRQ_DISABLE
    * j3 s$ [/ L( |+ W( {
  2811. STA IRQ_Process_Index
    ! W9 `% `- ~; c) h: u: n
  2812. BEQ IRQ_Process_Scroll- j# v/ y# ?# _' D
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    ' B4 |3 m- A7 {* ~/ W; s* a9 R% T
  2814. STA MMC3_IRQ_LATCH
    . Y% i  t) Z8 Q: p! G/ E8 D
  2815. INC <IRQ_Process_Index
    2 G. ~  U' g- x8 a1 m4 m( f* l
  2816. IRQ_Process_Scroll;IRQ滚动控制3 ?- s' ~* j1 Y. g
  2817. LDA IRQ_Scanline_Mode,X8 _8 L8 ?, S/ e% [# \9 i! }) u/ Y
  2818. CMP #IRQ_SCROLL_MODE_LEFT2 s2 f; Q( x4 m: W* i7 N0 q2 d
  2819. BEQ IRQ_Process_Scroll_Left+ h8 p, F3 |1 j5 @" M0 P
  2820. CMP #IRQ_SCROLL_MODE_RIGHT" T2 b% |) R: G. M+ e& L$ h
  2821. BEQ IRQ_Process_Scroll_Right
    - ]' y0 R, e8 m7 V" `
  2822. IRQ_Process_Scroll_Zero;不滚动4 }" E5 m% F& i
  2823. LDA #$00/ H9 \# J0 j% m
  2824. STA PPU_SCROLL
    7 \1 A( D6 o8 U/ v4 w
  2825. STA PPU_SCROLL% J0 X- g( T8 I# E6 @: z
  2826. RTS
    - t$ f+ l( |4 P1 E3 E) F
  2827. IRQ_Process_Scroll_Left;向左滚动
    2 m( L3 q$ f1 {) J* D" H& Z
  2828. LDA <Scroll_H
    : i5 s5 |7 Q9 d. [# N9 B4 s2 Z
  2829. STA PPU_SCROLL: K7 b! p$ }& O+ {) U1 u- y- N
  2830. STA PPU_SCROLL8 M7 X9 M, d3 [
  2831. RTS
    4 i$ ]2 g% r5 L% }/ p* T( k; p
  2832. IRQ_Process_Scroll_Right;向右滚动$ P) s% D' E, m1 x2 Q2 _7 K
  2833. LDA #$00' a# |. v- f; T
  2834. SEC
    " C. L* I; q5 F% A- q) `
  2835. SBC <Scroll_H
    7 n( l* z+ T  C9 U1 E0 z
  2836. STA PPU_SCROLL' f7 g+ s* F" g0 t$ z
  2837. STA PPU_SCROLL3 s# q, `, r# `7 l( ^& n
  2838. RTS2 m! q6 K- f1 m- G# A
  2839. 7 P1 Z9 n8 [" g3 D, W( S& |, G
  2840. ;==================================================2 ?  O8 f/ v! m9 W9 R7 c! Y0 l
  2841. NmiProgram;Nmi中断处理
    . g( y; `1 C" V3 G' K& |
  2842. PHA: o: u& W2 y, u  M
  2843. TXA
    ' F) `" N: v7 x! i6 g
  2844. PHA
    * t* ~3 l2 c) H5 T- c, z
  2845. TYA$ n5 [4 a$ F9 e0 P1 D
  2846. PHA5 W$ K3 T% n- M+ f8 j) h

  2847. " q/ @$ d- r0 _2 P. [) `6 S/ B
  2848. ;读取清除Vblank标志, 防止重复进入3 c2 C+ ]" _; L5 F3 N& k4 e
  2849. BIT PPU_STATUS, J  y- _" g( `
  2850. 6 M3 x' }. N' n% g& Z+ A3 d' ~
  2851. ;切换主程序bank
    0 [5 o4 Y2 C- o; Q; R. M$ P, T- y* p
  2852. JSR Switch_Main_Bank# V1 i/ h- y  N. r; d
  2853. : T+ Y/ N: S9 a& ~1 H# n
  2854. ;Nmi处理8 |2 J7 @" w' ^/ b
  2855. JSR NmiProcess7 ^+ k5 \) i/ b1 _% I

  2856. 2 n6 a! _# d6 j& M
  2857. Nmi_Proc_End
    " N$ l/ a* ~9 ^8 u! P% d* g! R
  2858. PLA
    8 l+ Q, i  b+ F) D# X# G# ?& G
  2859. TAY
    3 A+ m" \( [& _' C; H
  2860. PLA
    " m1 i8 f) M3 y& K
  2861. TAX
    4 o4 [* J$ d' L: {, m
  2862. PLA; ^1 R# K: [; f! }# B. U, B+ Y
  2863. RTI
    , X) _+ H- T( |5 G# x

  2864. " D. {# U, L. f9 ~1 D& K7 s
  2865. ;==================================================$ P# Z# v5 s5 _7 G' V
  2866. ResetProgram;重置中断处理
    ' d4 I; v& I. a% d3 ]4 }) b
  2867. SEI$ ~) H6 K/ B  y1 u9 H  x5 a1 g
  2868. CLD
    % |# t3 ^! F  S% X. r4 h( t
  2869. LDA #$00
    ; P" `) I. f& \. y9 v
  2870. STA PPU_CTRL! @# c. y- U, n9 t, r3 o1 C5 r
  2871. STA PPU_MASK
    % s) [: F+ N6 ]; Y4 |/ D

  2872. : o3 w1 i# p) D! Z/ b0 ^3 @
  2873. ;切换主程序bank
    ' K8 {# p- w. v' x% K  H; }
  2874. JSR Switch_Main_Bank* m' a( Q3 e5 \4 Q! u; w( B+ ~. {) L5 C5 K
  2875. ) V( S$ A3 x, J
  2876. ;程序处理开始
    ) }% f. ^9 H( S% r( D" g; K
  2877. JMP ProgramBegin2 Z) S4 i8 m+ l- R
  2878. ( U5 l4 j# v. y; s! v# @
  2879. ;==================================================. P0 {  O, p% t0 @4 ~5 e6 q! h
  2880. IrqProgram;Irq中断处理
    " {9 f9 q9 ^8 u9 ~
  2881. PHA
    % l7 z6 E. C0 f7 |
  2882. TXA3 G9 L( d( n9 k
  2883. PHA2 [1 C- f: O0 `4 i* _
  2884. TYA; a7 z( I3 A3 y+ Z
  2885. PHA
    6 j' n- b( Q5 ^9 `3 A4 {0 I" T

  2886. 7 S9 s4 _/ ], N% l3 L4 y
  2887. ;关闭IRQ- F% c& z: L) P8 R4 q& q
  2888. STA MMC3_IRQ_DISABLE# O  P# Y' c8 j* d& C
  2889. ' W2 a' z% a8 J6 l
  2890. ;允许下个IRQ触发, o8 F: B3 N3 ~! i# g+ G
  2891. STA MMC3_IRQ_ENABLE9 s8 h- E1 `) v. w1 w+ H; D7 |+ H
  2892. ! N2 Y6 B+ X& V  @3 v( r$ o
  2893. .IF IRQ_SUBPROCESS_JMP/ D+ Y# Z. N- u( A: N8 r! b

  2894. + u) C+ O. L: e4 N& P' n: t
  2895. ;执行IRQ过程
    ' \  _6 X; [2 I  g* w3 W6 q" i  A
  2896. LDA <Data_L1 W8 g; ]6 {5 p" m& F6 c. |
  2897. PHA: T. _/ R- l+ K0 R6 R0 T$ P
  2898. LDA <Data_H
    , n4 Q/ T7 C: X5 Q- e
  2899. PHA, `, N. S6 e& r* Q+ _
  2900. LDA <IRQ_Process_Index
    # o% G% P) I; n( ?" q7 y0 q
  2901. ASL A6 ?* I7 h7 H: P( j: k) [( o
  2902. TAY
    4 I; C% A& w& f' I
  2903. LDA IrqProcessAddr,Y8 N  y* P% [8 f! }6 ?$ u+ e
  2904. STA <Data_L
    ) w- E* l2 q* @) v
  2905. INY
    5 c8 m+ g4 [& G3 X
  2906. LDA IrqProcessAddr,Y
    1 O, a: k7 e9 [/ N
  2907. STA <Data_H# U6 p- i% @- v6 }/ M* ^7 {  V" Z
  2908. JMP [Data_L]
    1 i2 E7 e0 o9 B

  2909. # `! \6 Z4 p  z* t' \
  2910. .ELSE# S( H+ j- m7 H  I! e

  2911. 9 x3 C! g3 a' Y
  2912. JSR IRQ_Process
    8 i9 t, g4 D# \! Y  J, q

  2913. 1 Q0 \7 @* C/ n
  2914. .ENDIF
    9 \! S+ M2 H5 I' e; I

  2915. * }8 v, k& u9 ?* g
  2916. IrqProgramEnd
    7 l# Z6 g+ V0 q1 i! D7 G
  2917. .IF IRQ_SUBPROCESS_JMP, s( l7 T1 j2 c+ t/ r2 A
  2918. PLA2 V. o" }% ]& Z: l5 v/ _5 M4 J5 z
  2919. STA <Data_H; ^5 S6 y! m1 m4 T* e/ Q; ]) t1 s+ e
  2920. PLA3 f) J: y& S+ [3 @
  2921. STA <Data_L5 @' r# ?/ `. n1 C9 K3 r; o& z
  2922. .ENDIF
    0 I5 b" |" U8 i8 q- M
  2923. PLA) m* h$ Z, e3 N' @& ~  b
  2924. TAY
    " u. m' ]- R' g3 |4 p: h5 Z3 A9 u
  2925. PLA$ G. F8 o2 y2 P1 {* [, J# I' W
  2926. TAX3 ?% k/ i6 ]9 I
  2927. PLA
    9 B3 }3 [' u; w9 i: E7 i6 W
  2928. RTI" f+ v1 O0 G# `# @
  2929. - B% Y0 g9 y6 X/ w
  2930. .ORG $FFFA: i1 j$ r: R+ S
  2931. .WORD NmiProgram/ }* L0 k4 I  Y: m$ S# o
  2932. .WORD ResetProgram
    * B5 E/ A1 H+ G4 E
  2933. .WORD IrqProgram
    0 n+ U9 Y# M, V4 V$ Q- N
  2934. % ^7 f* D. x0 L9 Z
  2935. .BANK RESET_BANK & BANK_DATA_MASK+ i! [8 L9 s! m+ S
  2936. .IF SOUND_BAR_SHOW_ENABLE9 t, R% ?  d  ]+ e' w( r
  2937. 6 D1 E7 I5 v( a! Y3 }
  2938. .ORG $FE00, f0 Z4 I# }% {( N. b
  2939. PHA
    % m4 w  _% ]5 U
  2940. STY $07BA) \- D: B- H4 k1 B* V
  2941. LDA #$8D( w  T& r5 P/ J. k$ c
  2942. STA $07BC
    7 y" C6 i8 W: h2 }
  2943. TYA5 @6 ]) L0 Z% b. g" z8 T9 p) f
  2944. CLC/ U6 X# ?8 W* Y
  2945. ADC #LOW(Sound_Bar)! B8 s6 ]2 _' K  y
  2946. STA $07BD, O( E8 `: F6 m& ?5 q8 }
  2947. LDA #HIGH(Sound_Bar)
    8 f  g' w* w& n
  2948. STA $07BE4 f! e1 M7 [2 Z/ U
  2949. LDA #$60
    - @& ]- v: i$ W
  2950. STA $07BF" f  M/ W, F/ n+ X
  2951. PLA0 K* j0 K  o7 j- t, T
  2952. RTS0 P- e0 [3 T) v3 k  f

  2953. 6 l, g. C0 L9 g) B* h+ u
  2954. .ORG $FE20
    4 T2 d4 G. F, j' l1 a& T- [
  2955. STA $07BA
    . g& a8 O  ^: N* {. G4 k4 R: X: Q
  2956. CLC
      t0 j7 Y- |  W2 q7 H9 s
  2957. ADC #LOW(Sound_Bar), |1 n3 U# k7 D! o) k$ F
  2958. STA $07BD
    . l2 G8 e' `8 ~* K9 ^
  2959. LDA #$8D
    6 ]" S3 C; I$ B9 _# j
  2960. STA $07BC$ m( `6 A) o0 r5 P( x3 {
  2961. LDA #HIGH(Sound_Bar)9 t+ Q& _% G) L" a# O
  2962. STA $07BE
    . C4 O" Z, v* l  I$ @; N% I
  2963. LDA #$60
    * Z! j+ u: G- U+ R
  2964. STA $07BF. F; w8 a- V6 [8 k
  2965. RTS
    ! \2 r$ y: n2 m8 |  @
  2966. , O  D" i0 ]% l4 O
  2967. .ORG $FE40- l  d. [' A: F7 C9 x* j; Q5 F* y. Y
  2968. PHA  [7 I: g) A/ U# u% b
  2969. STY $07F11 ~7 T0 t$ I1 _% x% g+ q, S
  2970. LDA #$8D
    ; S; Q# x4 z7 v+ D
  2971. STA $07F3! f# _5 F1 D2 Y. l
  2972. TYA
    ) W, _7 x, B+ ?' o7 Q, z
  2973. CLC* q$ M  y  s4 g7 K6 M
  2974. ADC #LOW(Sound_Bar)& d2 i. F0 p$ J& }4 G# Q2 E  u
  2975. STA $07F4
    $ `6 P' a( m/ \0 |6 V/ E3 }: s
  2976. LDA #HIGH(Sound_Bar)
    & u1 S# ^7 @" i2 T. U  f. h, C5 u( K8 n
  2977. STA $07F5. a* W1 S" b7 _9 [$ x$ U
  2978. LDA #$60
    ( R4 M8 `- R# V6 {! u7 E
  2979. STA $07F6! h- S8 i8 y4 k+ b0 h& c7 X
  2980. PLA
    + |8 i- C: t0 S% K( x$ V# e) p
  2981. RTS7 n0 ~$ t2 w& u% o! b! T
  2982. ( t% |6 Y! X4 d
  2983. .ORG $FE608 s' E0 p% s+ Q/ y& ]# I9 v
  2984. STA $07F1' M9 _2 w8 n$ p+ a% V
  2985. CLC
    1 g) ^  x% ~8 ~1 [5 X  B2 g2 @
  2986. ADC #LOW(Sound_Bar)* Z% P# j9 A4 O' ?  s3 J
  2987. STA $07F47 E) l+ [, c5 ?. B% x# n
  2988. LDA #$8D$ m+ M' j2 x7 [" k% W. g9 r: V  t
  2989. STA $07F3( K& j  C9 @. Q. b- r* c  f  H! B$ ?
  2990. LDA #HIGH(Sound_Bar)  Y1 l5 F/ s+ b+ U; G+ Y  h
  2991. STA $07F5
    7 v( S5 H% C$ y" @! E" J2 i
  2992. LDA #$60! H' G. n" M! m8 `3 s9 w
  2993. STA $07F6
    : ^, D1 B+ g, J1 l& @- o* t' L
  2994. RTS9 R; ?0 e/ ^( H* H7 p0 h
  2995. 3 i* Q1 m# O6 s. U  N
  2996. .ORG $FF409 X+ c+ ^& _+ B2 R6 N
  2997. STA $4000% t8 q3 N( b3 F: b
  2998. STA Sound_Bar + $00
    2 h% m1 F$ ~) j, S- O4 F( Z0 T2 }6 K
  2999. RTS
    ! M8 u' o5 F, x

  3000. ( H- P" O7 W* ~9 j9 U
  3001. .ORG $FF48
    8 j' c! @: ^& _# s
  3002. STA $40042 C# N- Q2 |! \: A$ t
  3003. STA Sound_Bar + $04
    * G8 i+ O- s/ {9 |' h8 x! N8 G5 E6 y& M
  3004. RTS4 s' W+ v/ L/ a
  3005. 1 q3 ~0 E, y. B. k& N; @5 A
  3006. .ORG $FF50
    ! @" i+ k5 v, v5 }+ A2 [5 x
  3007. STA $40086 C) X' F& q1 B% ^9 u+ Y
  3008. STA Sound_Bar + $08
    ; o% _& i$ V2 V2 \* z
  3009. RTS
    7 y3 X, W4 ^, q/ l: M  ^4 b
  3010. 9 J6 P* l7 [& g3 V: f: G
  3011. .ORG $FF58
    ( N' x- D3 Y1 Y) b
  3012. STA $400C0 O2 s( L* A  g. \
  3013. STA Sound_Bar + $0C
    9 B- P/ ~2 z& n7 G2 W3 c' M% Q
  3014. RTS. ~. v6 I  R0 A7 Q. ?5 \% v2 U8 F
  3015. # ]+ o$ l/ `6 K) y
  3016. .ORG $FF60
    ! m# ?4 y# Z0 u. N
  3017. STX $40005 q5 p, |( ]. Z9 x; Z" S: U1 a
  3018. STX Sound_Bar + $006 w, c* }( d& b& q# _
  3019. RTS
    5 Q5 \( I0 Z0 _9 v- l
  3020. - T( p5 g0 [, m
  3021. .ORG $FF68; k/ Z4 _! Q  [8 }( n+ @
  3022. STX $4004
    ) [) A2 O8 d4 c% v% @
  3023. STX Sound_Bar + $04; M3 s$ _. I! K% y2 G
  3024. RTS
    6 [4 |- {" m" ], U, a/ ]( @# O

  3025. 6 v& H! a3 P7 v4 P
  3026. .ORG $FF70
    % t& w/ R8 i* w
  3027. STX $4008
    " o$ c5 M; O& Y& B
  3028. STX Sound_Bar + $08
    # [! t$ I' N" O: c( e# E
  3029. RTS
    0 O' C$ l/ v7 H$ J' P# h& |) K" g

  3030. & O* }7 v3 ~& _
  3031. .ORG $FF782 h7 E# R* L" u6 f& t% K
  3032. STX $400C
    1 H  v+ V$ `4 @0 u$ U
  3033. STX Sound_Bar + $0C
    & h+ ~7 u+ c# A% J( v  _0 a) f
  3034. RTS
    ; |3 A2 S  l5 X% K$ S: W
  3035. 2 U  u9 `& ?; v" p! z
  3036. .ORG $FF80! Z, F+ G) q2 p
  3037. STY $40005 t! ?* ]" G# A6 w& X8 Y; M2 d
  3038. STY Sound_Bar + $00
    & n4 B, ?. e+ K3 Z  r8 }9 y
  3039. RTS
    8 {4 X: u% J  C) @* Z
  3040. ( O( _/ e# [# R& O
  3041. .ORG $FF88
    * N8 o- o$ N; u
  3042. STY $40043 b- J! ]6 e. E
  3043. STY Sound_Bar + $04
    3 d0 m6 V5 ]/ N( q5 w3 D3 m
  3044. RTS/ S% c' E5 o1 e9 }) ^5 P: k! w
  3045. 7 t) |: N) U5 ~- L" Z5 p% y
  3046. .ORG $FF90$ y8 u* ~8 f$ {; ~' p5 h
  3047. STY $4008
    : h9 E6 g5 r4 Q7 |* W7 p
  3048. STY Sound_Bar + $08
    & B0 N$ [3 x1 X& J7 V- p; M
  3049. RTS
    ! M7 t( O7 Z/ M$ x) ?; V7 B
  3050. + N7 h  t# d: Z/ v3 ?
  3051. .ORG $FF98+ ?: ^0 T' }6 v+ ^
  3052. STY $400C4 {8 a' ^$ I1 X$ t, b, f- X  N! y
  3053. STY Sound_Bar + $0C
    ( {" n  J- a/ g( l. ^, I
  3054. RTS7 b- v5 G. b8 z% _; q
  3055. 8 _5 O- X# n) |
  3056. .ORG $FFA0
    8 L4 w, d* I5 [8 `
  3057. STA $4000,X! M, X+ @2 X7 X* \4 d; N
  3058. STA Sound_Bar + $00,X7 `- W1 x' j  x% V7 _
  3059. RTS
    2 S* @' R3 u+ k

  3060. & [+ Z, d5 J  R' f% _1 J
  3061. .ORG $FFA8
    ; j) K4 k, s& a$ T) r% _5 O
  3062. STA $4000,Y( U6 G" X" {; E; u; V9 c1 F# b
  3063. STA Sound_Bar + $00,Y4 q" b" N6 y8 D/ Z4 `
  3064. RTS% o/ m( n8 M1 m7 _' U" t, I4 [: l

  3065. 5 K- p: `" h9 `' j7 a; X) n/ x/ ~
  3066. .ORG $FFB0
    ; g7 V% q' u1 D1 J
  3067. STA $4004,X
      J7 b6 D* x  t, Q2 X' p4 I
  3068. STA Sound_Bar + $04,X
    : o' s+ F8 n6 L
  3069. RTS0 t% h2 _9 C) F, ^+ T9 |/ x6 D
  3070. / E) ^4 J* S0 B9 o9 D- W% {
  3071. .ORG $FFB88 E( d. o+ M6 s9 G2 J/ `' K
  3072. STA $4004,Y! K/ @- o1 p$ ?3 m
  3073. STA Sound_Bar + $04,Y) f2 ?7 l7 D3 H8 E' _
  3074. RTS
    2 b7 e; T+ }  y% z
  3075. 4 W2 C, x$ b9 d; p$ D8 y8 u& k
  3076. .ORG $FFC0
    3 b( C, H& r* h, |+ S3 H& @/ c
  3077. STA $4008,X% ]6 M1 t8 j( L9 ^$ C
  3078. STA Sound_Bar + $08,X
    " x; l: {( z+ H3 y4 j& o
  3079. RTS, C4 j& L" m9 t
  3080. 4 p6 Z  D& f5 z" L0 `: g
  3081. .ORG $FFC8: a& K. o% j7 G' I! P8 V! p. l
  3082. STA $4008,Y
    # g5 r5 `/ u8 B( F5 z7 ~/ W
  3083. STA Sound_Bar + $08,Y
    - D( B, \' {7 Y+ G) w! O
  3084. RTS" Y$ Y; I' Q1 ?- S2 Q# q, |

  3085. 4 p) Y9 [* j- Z: `9 C; Z. k9 O2 V
  3086. .ORG $FFD08 s1 v' C' V- S$ l1 j7 f( p
  3087. STA $400C,X
    / b- d$ Y; f: K) D) v& ]7 i0 |
  3088. STA Sound_Bar + $0C,X
    8 E8 f% V& r7 K# `1 M
  3089. RTS  n" u! L( l5 F5 C5 V* o, ]

  3090. . Q2 I' s8 v$ C  T
  3091. .ORG $FFD8: }8 I6 S$ g- C% x$ ?
  3092. STA $400C,Y
    ( g& J+ Q8 l0 Y* p+ m/ x. h
  3093. STA Sound_Bar + $0C,Y
    - g- n* z- }; h/ d
  3094. RTS; t- O6 g3 z) N4 C+ K$ v' J1 x

  3095. - y8 \9 j& b3 D- p
  3096. .ENDIF
    4 K0 p4 B$ v- [( B% q
复制代码
- G; @  r& ?, i8 x# L6 E+ \
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3230 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-15 04:27 , Processed in 1.122070 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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