设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 6 d6 I. q3 c- c' t. X( m

; E- x, @9 f5 l[FC][音乐12 IN 1]* h4 t* W4 n  N1 m7 s' H" b" _
时间: 2023.07.232 l! l3 ^. ^. T% e. k
作者: FlameCyclone
/ u! M- q! I: @7 `; A; n+ G. n) I+ f! E% t
收录音乐内容:5 p+ t6 w; Y4 T5 Z, i* O
1.Raf世界
& N3 g  t$ Z  C+ d9 \/ W2.最终任务
0 A; ]: U; m7 M# k. @3.赤影战士
2 ^& Q* z$ @8 Y9 p( C7 D0 Y4.双截龙9 x8 y1 l+ v/ w: T
5.双截龙2
5 m5 T/ e* j4 q0 S( x6.双截龙3' Y+ {3 W& s* X- Y! G
7.洛克人
& B: y; @0 o+ a$ e8.洛克人2
  M0 a/ x1 y0 Y6 C& m9.洛克人3
2 F* I( [* m/ `+ L/ z' D1 u10.洛克人40 E+ n5 i, b0 E5 A  A
11.洛克人5' ~2 J) _1 d; M6 D* R0 H
12.洛克人68 s6 |% k$ `; f9 H0 q% \$ i8 \4 O+ `
% l' B( O* p- L/ S) ^
操作:; N* O4 o- l) z9 L9 H
上键:         上一个专辑
% _, M+ E$ S2 b  J) [* t% {下键:         下一个专辑- r/ r( C5 o4 i; v& d9 _7 A
左键:         上一曲
9 ]# F0 @, J4 [; ?右键:         下一曲
( a6 I( S( ~- dB/A键:        前10曲/后10曲+ s, d( r0 a1 F$ J( e
选择键:       下一页8 `2 T( }. {' i! J1 ?! v) v
开始键:       停止/播放/ x/ a" _+ p/ p: }

& J% P1 M; D+ g& E$ c/ ohttp://flamecyclone.ysepan.com// x$ p6 G( G7 [

/ ?! _* M# d) x; M$ A
* ?0 W1 b8 l3 L6 j  j: p
, g. z( I; h$ A" P/ U5 i7 K. c5 b" Q+ z, N$ c& Z
  1. ;[FC音乐][播放器模板]' ~. {5 H' V* K4 x% }& M$ ?. ]
  2. ;FlameCyclone 20230710
      N& c/ S0 K' T; ]

  3. ' I+ h+ ]0 H/ d; h2 p
  4. ;文件头9 _" A% _$ w4 I- e! {7 T1 y
  5. ;======================================================================' n, a: c% D1 U+ R, }! R9 e* {- W2 O
  6. .INESPRG 16                                             ;16KB PRG 数量
    5 B/ K" @; P, V/ ^  ?
  7. .INESCHR 1                                               ;8KB CHR 数量
    ( S- [, P1 \' J$ f2 A. u
  8. .INESMAP 4                                                   ;mapper 43 c3 U( r6 j( X" x  o2 h% c6 v
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    ( k' p1 h( y; T& H. ^1 m

  10. / ^! m/ Q, l$ u2 w1 M4 V
  11. ;==================================================
    3 }/ u, ~& ~2 R$ _
  12. SOUND_BAR_SHOW_ENABLE       = 1
    * F/ |0 O# D5 e# Z( e4 o
  13. ;==================================================# p( R# V. m+ }$ D7 N
  14. BANK_DATA_MASK              = $1F
    ' D2 D* x3 c9 @1 a! O
  15. CHR_RAM_ENABLE              = 07 {: {' H0 H0 F9 j0 _. x
  16. IRQ_SCANLINE                = 136
    , M* C. e  V. k! `1 Y4 j
  17. ;==================================================
    0 S8 S+ d) V) {  f& Z0 }& i& ~# Z3 N
  18. SOUND_DATA_BANK_00          = $00
    3 x: B- v* t3 J6 \
  19. SOUND_DATA_BANK_01          = $012 d# x& Z" y$ c# H" o
  20. SOUND_DATA_BANK_02          = $02
    & G# J  `) w4 }- c. C( [% ]# U, O
  21. SOUND_DATA_BANK_03          = $034 D0 b4 S5 c2 p  Q( v+ f
  22. SOUND_DATA_BANK_04          = $04
    * ?2 x2 f$ D! u
  23. SOUND_DATA_BANK_05          = $05
    $ k; a5 {! G; b- y2 B: B
  24. SOUND_DATA_BANK_06          = $06) f) {' L, s& ~( [6 J9 t  D1 y, }
  25. SOUND_DATA_BANK_07          = $07( [4 L* T! {7 {2 z  n0 _
  26. SOUND_DATA_BANK_08          = $08, q, k2 {4 O1 u+ I
  27. SOUND_DATA_BANK_09          = $09
    ; m  ?7 l5 k) x) r; B
  28. SOUND_DATA_BANK_0A          = $0A
    ! }3 Y  v/ w" j/ ]# u
  29. SOUND_DATA_BANK_0B          = $0B
    ( C  p7 K# {/ \  p- G6 t3 l- d
  30. SOUND_DATA_BANK_0C          = $0C1 ?: c' |1 ?" a# z* J) a+ h/ z
  31. SOUND_DATA_BANK_0D          = $0D
    : N+ d/ T  Z& R$ G" [
  32. SOUND_DATA_BANK_0E          = $0E
    # J' P5 F5 d# T- m
  33. SOUND_DATA_BANK_0F          = $0F
    & H+ P2 D% _9 I/ ]  \

  34. ; t  K1 Z! k5 h8 e3 H
  35. SOUND_DATA_BANK_10          = $10
    7 {! H9 ^. |# [% w, ]0 f
  36. SOUND_DATA_BANK_11          = $112 u. U: u8 h$ k8 Z
  37. SOUND_DATA_BANK_12          = $12
    3 K6 f  O: K1 |& h% R; I2 `
  38. SOUND_DATA_BANK_13          = $13
    + Y$ B' p' u3 S+ E. w) @. B
  39. SOUND_DATA_BANK_14          = $14
    , v$ G- b4 T+ }  P7 I( }2 d. Y
  40. SOUND_DATA_BANK_15          = $150 Z& W5 I- o# M6 E) m
  41. SOUND_DATA_BANK_16          = $16
    7 D0 Q& ]% H; `* {; s; S- k) d
  42. SOUND_DATA_BANK_17          = $17, B, ?" g) G& d6 ]+ C; {0 V. R
  43. SOUND_DATA_BANK_18          = $18
    2 h2 I0 K( e5 ]3 l1 _
  44. SOUND_DATA_BANK_19          = $19
    ! z3 h# p/ W6 {: ?0 J
  45. SOUND_DATA_BANK_1A          = $1A! l3 J: L+ f3 e; }* k. Z, n; ^
  46. SOUND_DATA_BANK_1B          = $1B
    3 W; o' P  I' W& ?: F: P% m
  47. SOUND_DATA_BANK_1C          = $1C
    $ P7 w9 Z5 k1 J
  48. SOUND_DATA_BANK_1D          = $1D! I* Z. l) L+ N0 ?" t
  49. " i3 C1 @1 O$ o* H$ Z9 c) r. B% `
  50. SOUND_DATA_BANK_C000        = $1E
    4 I6 \1 ]5 T" f/ K7 b4 a
  51. SOUND_DATA_BANK_E000        = $1F
    8 a$ e% F  B' D3 I. r! P/ q0 O7 R
  52. ;-------------------------------------------------
    1 H+ j6 b( A( v- S1 g8 f" T+ O  z
  53. CHR_DATA_BANK               = $20# Q, s" j5 H) h2 G
  54. CHR_DATA_ADDR               = $A0003 f$ Z, M% N8 O+ U/ `% v
  55. ;-------------------------------------------------
    1 t8 P# S; C7 Z8 G, h
  56. PROGRAM_BANK                = $006 S. j; z0 @5 ?! A; k. i
  57. PROGRAM_ADDR                = $8000, v6 J: B/ i# N( I% B+ g# J
  58. ;-------------------------------------------------9 {6 C, ~% a: Q* f' @8 w1 I
  59. RESET_BANK                  = $1F
    + P$ V7 U+ `6 }
  60. RESET_ADDR                  = $FD00
    0 G9 R) H& u% W# t. s6 T
  61. $ _3 N+ Q+ j* y; }& c1 Y
  62. ;==================================================& G4 V" X3 Y) V  I
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数4 ?, e: b) B3 i: _( e0 S3 f
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    / C. I; @1 M7 C8 {+ F! g, j; X, S* t
  65. PAGE_SIZE           = 5                     ;每页节目数; V2 z' j& s+ R" [- r. p7 f
  66. ; E( T, O5 ]7 G6 |; x
  67. ;==================================================1 A5 O: \+ n8 x8 l2 T& s  ^
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    $ }' p% B  |" ]" B8 E: c
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    0 Z* O5 `% f" Y) d: T) ^9 V, `
  70. .ELSE
    0 i  j7 z# s4 n. D
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    ) @, G5 h  |1 l7 _* t
  72. .ENDIF
    $ N( }* X! R4 A9 D* C
  73. 9 B, m0 R. Y- k7 ^5 p
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引8 f0 H: q$ X: L

  75. " }0 E. v2 Q$ o4 {7 n/ Q
  76. ;==================================================* `0 |& C- i& v4 l) b6 ?; J: J
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    & w- A: ?1 Y( z& U
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2# o$ p3 _8 C7 s& t# {
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;/ X+ @+ v) F; T8 L2 e, c- x0 H
  80. ;==================================================: X7 l/ Y" A: H# h
  81. Caption_Text_Pos    = $204D ;标题文本位置! T# F- \& j8 {! t" o5 R
  82. Author_Text_Pos     = $2324 ;作者文本位置
    - c  I7 n) i; T
  83. Date_Text_Pos       = $236B ;日期文本位置/ W, ?- ?; T& D  ^# \7 e3 t6 T
  84. ;------------------------------' ?! T) Z1 i: X; c9 e) s) y" A
  85. ;------------------------------3 h0 [$ @7 o0 p5 x; [8 [+ a
  86. .IF SOUND_BAR_SHOW_ENABLE
    * r9 }. p1 p2 [) \9 i$ d4 f+ [
  87. ; q% r  P8 b1 W+ ~. R
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    # i( G9 s  v. B9 u8 K* w+ w1 \
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    # a8 n4 x6 t6 s% M. D8 w
  90. Play_State_Pos      = $22F3 ;播放状态位置( J: ~* U* o5 n4 z  Z

  91. ( s3 @- Q( s$ R1 z0 U% H5 H
  92. .ELSE- [' O$ Q% r! h. o4 b* k( W; R

  93. / c3 z% Q% O7 k2 z1 c* n9 ^6 V
  94. Play_Index_Pos      = $226C ;当前曲目位置# [" d+ w! Z. P1 j
  95. Play_Time_Pos       = $22AC ;播放时间位置$ d! K( s2 X+ @0 N
  96. Play_State_Pos      = $22EC ;播放状态位置
    3 x2 m2 P) |& @; B' d' V) C

  97. 0 f- t* A* Y6 S: ~2 A. g
  98. .ENDIF3 K/ Q) n, {' K: ?# v8 V
  99. ;------------------------------
    7 ^! d8 [; s( o4 S; e
  100. Track_Name_Pos      = $222B ;曲目文本位置
    ( K3 E: \5 I6 f
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    - ~/ P% _0 p. f) j4 h
  102. Sound_Track_Pos     = $2265 ;声道文本位置' r* Q: O5 G5 Y6 E8 y% G2 |# L' Z
  103. Sound_Bar_Pos       = $2269 ;音乐条位置, F3 @/ k* I4 Q4 g/ a6 G4 ^8 a
  104. ;==================================================
    : v/ o, N9 M' S9 S
  105. Scroll_X = $000 A  X, o1 f7 F( f
  106. Scroll_Y = $006 i( r: V# S" k0 e5 m8 D# Y1 u
  107. ;==================================================& D: V# A, M5 n0 c  W2 F+ w
  108. Sound_Ram_Addr_1       = $0100) ?1 U% n, ~5 Q. ~- l0 t' G! C' A$ k
  109. Sound_Ram_Addr_1_Size  = $80; i& h$ L9 b) y4 A
  110. Sound_Ram_Addr_2       = $0090) l4 F9 ]8 y* B
  111. Sound_Ram_Addr_2_Size  = $700 r. l' z, _+ _
  112. Sound_Ram_Addr_3       = $0700
    ; D3 M- G4 @& s
  113. Sound_Ram_Addr_3_Size  = $00: E( I8 q3 J& O
  114. Sound_Ram_Addr_4       = $0400) ]# k' p! M. K$ @, v, Q
  115. Sound_Ram_Addr_4_Size  = $00
    . r2 M0 \6 n' |8 N
  116. Sound_Ram_Addr_5       = $0500) b' c6 y8 s. ]$ T1 }
  117. Sound_Ram_Addr_5_Size  = $40& I- j5 C3 f0 R9 O/ X# g
  118. ) u9 d: S9 g: |# m; i. O+ G$ z
  119. OAM_TEMP_ADDR   = $0300
    * O+ ]+ G6 {7 G2 Y5 T
  120. & E$ k2 G: N/ p' W& Q& D
  121. ;==================================================2 K# Y+ K7 n( C( L' v
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器$ @( v' P+ O; d- O+ C
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    $ c. s: D8 ^, p
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位' z+ E, ~( g0 E
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加13 r( N4 x8 j) T" Q& k2 q# O
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1! U( \: q! R: L. \
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 % a& n/ Y* c6 ]+ S9 T9 J- s! `8 p
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    / |6 }1 Q/ r9 n- O: B' O
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    % i$ T! P# c6 k3 {8 U
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存- ]4 [; W6 Y# q! d5 V
  131. APU_STATUS              =   $4015   ;声音通道切换8 `5 ?6 z' w, ~2 C6 V
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通8 o+ |& U+ Q7 d  v* \1 A! N
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    1 H/ A1 K, V+ {
  134. ;==================================================
    3 f1 U* J! Y0 V! K. i# [2 D6 U
  135. MMC3_BANK_CTRL          =   $8000
    ; `+ C# s7 B7 g( P/ i: m
  136. MMC3_BANK_DATA          =   $8001/ O' B) n$ B# |7 {6 Z. n- g- p
  137. MMC3_MIRRORING          =   $A000
    4 u* }0 H- c* a* ^0 ]
  138. MMC3_PRG_RAM_PROTECT    =   $A001/ H  q% \( A8 p3 U( a2 F* \
  139. MMC3_IRQ_LATCH          =   $C000- ]( ~0 D6 r: n% _) E( |# {% u+ Z6 ?
  140. MMC3_IRQ_RELOAD         =   $C001
    9 U6 t7 ]& W( Q8 F' H4 I
  141. MMC3_IRQ_DISABLE        =   $E000" e# ^0 _0 h; e
  142. MMC3_IRQ_ENABLE         =   $E001) |2 l3 S7 E& N: B% m% t' ^

  143. 1 {3 [; r# s+ j
  144. ;==================================================7 ^! [! k9 L( @2 p! M
  145. PPU_Addr        = $0200
    + [  s' `* R2 @6 Y. k; H
  146. Palette_Addr    = $02C0; z$ m) M0 L6 t' v- b# k7 _
  147. Sound_Bar       = PPU_Addr+$E0
    3 i$ W; W5 T$ u$ x$ p$ d
  148. ;==================================================
    & \& x' [8 n, |- y7 W# B9 M7 F  c  j
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    2 G# Q: G( ^3 U
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    8 |' c$ M# x; t: t5 s2 m8 L
  151. PALETTE_UPDATE_MAX      = $2C7 k. ]. A6 L% S3 i
  152. PALETTE_UPDATE_MIN      = $21$ o1 D7 r1 `5 I
  153. PALETTE_UPDATE_INTERVAL = 60) O3 c0 p' L* ?& O
  154. ;==================================================
    ) t, q0 s6 v2 I* y( x
  155. Sound_Bar_Cnt       = PPU_Addr+$F0: L0 D: L# Q) q$ H
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    5 \& x% X% O! Z! A7 Y% U1 r  ]9 e0 N
  157. PPU_Addr_H          = PPU_Cur+$03
    ; ^( v& f$ N' d4 \# i
  158. PPU_Addr_L          = PPU_Addr_H+$04: e( l2 P9 a9 O8 f" }
  159. Screen_Ctrl         = PPU_Addr_L+$01/ g8 Y) f1 T( P2 Y! c8 I
  160. Screen_State        = Screen_Ctrl+$01, q+ K) ?* b' @9 k' P/ V- g/ v
  161. ;==================================================6 L6 M! e3 z: @, \
  162. Use_Ram_Begin       = $50
    ( J( }' ?, A1 m; A& t5 r
  163. ;==================================================
    - N1 }% p: W! O( v6 V; t" l
  164. JSR_Addr_Op         = Use_Ram_Begin
    1 c  ]' F1 V; U. O" w6 A$ e
  165. JSR_Addr_L          = JSR_Addr_Op + $01( X9 v5 c- U+ W+ n
  166. JSR_Addr_H          = JSR_Addr_L + $018 q' D2 U8 N0 s. G0 U. v* g5 g5 o
  167. JSR_Addr_Rts        = JSR_Addr_H + $01, N& q3 ~3 @- Q& @& U' x4 q
  168. Data_L              = JSR_Addr_Rts + $01" g8 h; {& r' M% X$ Z% P5 C
  169. Data_H              = Data_L + $01- f' W( {5 t3 P4 R
  170. Data_Cnt            = Data_H + $01
    ) g( G" ?1 Y# V
  171. Data_Buf            = Data_Cnt + $01
    " x- x4 P/ \; i* ~9 L1 [
  172. Nmi_Time_Count      = Data_Buf + $01* r( v, q# w" O) I
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    ! B! S% l# p& a7 U6 a
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    5 A/ |! n( g% G7 R8 L: P
  175. 4 \) d/ A7 G! U  ]/ o& a3 r- |) ~: h. y: {1 J
  176. ;调色板刷新标志3 N3 X; ~# B9 V. S/ }4 Q3 B8 ~8 c
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    % C5 Z6 J% k) n/ i/ h" k. `

  178. ' w8 i' k, F8 o9 d- p6 ~* k
  179. ;当前帧文本写入禁用标志
    5 z3 Z. S+ y% U1 U  Q/ q
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    4 y, U& f2 G1 }  Q7 M4 A7 \& `

  181. / ]2 o$ M% C2 U. p( Q6 l, ^
  182. ;==================================================
    2 l4 H* S% k% ]- A  }' x! U) ^
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动2 g* a4 r3 h1 x' {1 w6 B8 W
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条7 a, ]( F0 ]/ J. H$ y
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    6 Z. m+ `3 f$ T* U3 M  {6 |+ V* }
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间/ }" ?# B# {  {0 Q  X( \
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    0 M  V% O$ a% v& s, E: v
  188. ;==================================================
    $ [1 U& b' [6 _# D$ `! d
  189. Key_Keep            = Text_Disable_Flag + 1
    , _( y2 V) {/ @+ a; X9 b5 H2 P' N; q
  190. Key_Once            = Key_Keep + $01
    3 j: y1 o4 M9 J, s" A6 |/ x7 ]
  191. Key_Kemp            = Key_Once + $01
    * {1 v$ f$ z/ L- ^6 s7 D) V
  192. Key_Temp            = Key_Kemp + $01/ R- G) W/ I7 @
  193. Key_Getv            = Key_Temp + $01
    + L% c- C+ G) e8 t% o& K+ ^; N0 i8 b
  194. ;==================================================
    7 @5 e: U7 t- z: k4 [
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    & q7 M& Q$ g  f: \. ?: \: s
  196. Music_Item_Last     = Music_Item_Cur + $01
    1 q+ y! |% ^/ u" r4 ~
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    3 d" e5 {0 `0 K+ m6 Q
  198. Music_Cur           = Music_Total + $01  ;当前曲目& R$ k( y* b1 E6 i) C
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目8 Z" |# W- ~4 m6 ?6 c. V7 n
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态; B( P1 e$ N9 ]
  201. ;==================================================! N( C+ Z% B/ C) t
  202. HEX_Data            = Music_Stop_State + $01
    1 w/ v5 Q1 T0 K4 J6 f
  203. DEC_H               = HEX_Data + $01
    ( }. V2 V; H; E- [, Y
  204. DEC_T               = DEC_H + $015 ~8 N5 \/ \5 C& _" [; D9 j
  205. DEC_L               = DEC_T + $01
    ' H5 ?% J6 d6 \' T
  206. ;==================================================
    # J; }. ~! K+ L  m# X- L6 |8 w
  207. Time_S              = DEC_L + $01
    + e. @% r: D% e) ?" a! i
  208. Time_M              = Time_S + $01
    . n' I4 Z( i& u2 B5 ?/ I; H: V
  209. Time_H              = Time_M + $024 s2 m- i# F! U! E
  210. Time_Cnt            = Time_H + $03" {5 N! F( `( a2 v+ ^- |$ x

  211. 1 j+ L$ U  b$ J
  212. ;==================================================. \0 G3 o: e) J2 ]3 V$ Q
  213. Music_Bank_8000     = Time_Cnt + 1
    + o! `! t* j2 W
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    ) ]( Y" A, g# g! m( w) D+ f
  215. ;==================================================9 J& ]# L+ _  M1 `- e; a" \% @9 k6 j+ M
  216. Scroll_H            = Music_Bank_A000 + 1
    5 M9 F9 r% }' M7 \% ~. ]' U
  217. Scroll_V            = Scroll_H + 1
    / N; I) g7 |* @* n& B0 {8 i0 p- i
  218. IRQ_Process_Index   = Scroll_V + 1
    * t  R6 ~; z0 @# X, p
  219. ;--------------------------------------------------+ V0 Y4 ^7 E' X5 v/ T* z& u8 \
  220. Page_Cur            = IRQ_Process_Index + $014 u& Y% p( j; {* n2 x
  221. Page_Cur_Index      = Page_Cur + $01
    " X' a. Y. q5 n: }' C4 u2 Y
  222. Page_Cur_Cnt        = Page_Cur_Index + $01' q5 Z8 ^+ M& M- ]
  223. Page_Last           = Page_Cur_Cnt + $016 v/ i2 h$ b$ t/ R
  224. Page_Last_Index     = Page_Last + $01
    . B% t, s0 q* l5 E
  225. Page_Last_Cnt       = Page_Last_Index + $01
    2 v1 n$ n) {$ C. V/ D& U
  226. Use_Ram_End         = Page_Last_Cnt + $01
    $ R7 Y$ g) |! z4 \  e- I
  227. ;======================================================================1 N  v6 x8 m0 Z# r7 Z) R6 |
  228. ;音乐数据块( l) I! ^/ u7 R7 F' b+ s# z$ Y. Q

  229. 4 E8 `6 P1 R9 q' i" n
  230. .IF SOUND_BAR_SHOW_ENABLE
    . C! s9 R- ]- `/ R
  231. + [5 u( c" Q! O' |+ i
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK8 f  P8 v0 Y0 `
  233. .ORG $9000  x$ i* ?, y* N
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
      d9 n2 s8 R+ Z" g4 v- [0 I. X
  235. ) w; ~  J0 l4 p: z3 V$ A
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK+ l( c) K- D. Y% p+ [8 g" W: k) T
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"* n3 Q: G( W+ o& T3 f! j+ `. O

  238. 4 i* F% C' |& }% G: n+ @
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    : i1 r; e4 g  a* ^1 \& y5 h( f
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"$ S  N7 r/ p# t3 c2 d: G% E: t

  241. 2 G: s3 M7 r# Q2 Z) Q; D3 Y
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK& V4 J7 v  i3 E8 P# T
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
      c& L0 ~1 Y# b: a' L
  244. 8 d. b( s4 j, T3 v1 t
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    $ w; C+ z" o- `- M* i' Z9 ?
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"( B6 D2 E, s1 f  M
  247. 6 ]9 I' U! c: o7 O: M( ]/ B
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK1 \% d( ]3 I0 `! D
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank": ], n. Z/ z! o
  250. $ D( i8 G/ m% f% G  X4 u
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    9 P. p7 p0 @. E  w
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    4 G, Q* ]" d) q) Y& q" g: h
  253. * K+ @& A$ u/ j0 }  P5 d2 M
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK3 E6 k) ^# @; R5 y5 ?6 e. E
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"/ L; N9 P: e2 r# X) M3 ]) m

  256. $ i) \- e  l5 G& U! K1 ?( `. c
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    0 x1 e7 r3 @0 r) C0 D& J4 ^
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"+ N) R. m5 i7 J

  259. ) b* ^- B5 Q( H" q, C
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    8 q! L5 N* e% H4 q  l- b5 `
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ( D  e: S  ?# l- ^5 Z5 A' i! S
  262. 1 R( j- z! l) h0 D/ o
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK3 u: r- \! L6 @4 ]
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    " U3 W& h! u  P% e1 H

  265. / Q# K0 v5 F1 n# S6 G  h& z7 G% e
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK" @' O1 ~1 {; ~+ Z6 Y
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    * S' K" i( r+ Q9 {

  268. * k9 W7 x* a1 x  h
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK+ F* F2 N6 a  V! D1 n' e
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ( {. w* s1 A, j  ^3 r0 ~. m
  271. ( {. `0 \' h+ ~. _3 |$ Q  C8 j
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK9 @1 i3 T- w7 T" n" c
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"8 H. @1 P" t, I9 K

  274. , M" F; B$ E6 u3 ?( X" e4 y+ ?7 Y
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK) ~3 L' U1 s$ q* p' q9 Y
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank". r! M; h9 n+ A  ~, ~( V9 I0 s
  277. 5 j; {5 r! ?. ?
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK# @& g6 z6 F, X, H! x" E
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"& V0 a' @$ X% f7 f
  280. & @  l# d/ C$ _) T
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    $ ^# ^9 Z5 Y9 n5 o
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    8 X& G$ r; s7 x
  283. , c& L" w- A3 t" J/ }
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    + m' d" g3 H7 M% w; |, s
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    $ U/ e& r3 F! P* o2 e- V) V
  286. 3 s. D# Z' B0 g0 d7 ^
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    5 Q7 ?- }0 p# |, w
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    5 q$ T6 T8 o# }8 R; w8 V

  289. 3 f9 T' C8 Q! @/ ^; A: x3 G
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK' X7 O3 L" d' A
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank", K# j$ a1 M2 b$ [2 m
  292. 8 m8 U* `4 G8 e2 P* J  }
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    5 Q# |3 x. O% z: k1 @- W- H
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"' n) n: ]" X( O% s7 F7 a

  295. ) B  J: Y7 s" q$ I3 i
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK; O' g: Y; B/ J9 D; b$ n
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    , d) ]& I8 A  _, e3 I% x

  298. , c$ G" G2 W: P; l, k. Y
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    % a- E* ~1 D1 z( g% I
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"% C+ D& @/ k1 R2 N

  301. # \2 f& Z/ a0 Q& G9 A( y: |. X
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    - c+ j! g# j1 n- ~, @) |
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    5 a4 O/ p) J" H. j5 }+ i+ h
  304. + o9 ?2 e/ H' {! ^$ ?
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK  L; q7 B- b5 F- E$ z% e6 {
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank") i$ g* A2 R) O" a8 f/ D. l+ b

  307. 8 z% L% `: k) w3 E) O' n
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK4 O: n$ c2 Y: h# F7 S
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"" g5 T, B+ M& Z& `1 C

  310. : N5 U) \3 G+ c0 O( q2 y$ o5 x  [
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK, _8 D3 |! u3 Y& T
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
      ?  K5 E2 |. {% C! I. `
  313. . o4 U3 F/ s8 d3 ]8 ]
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK7 N) }1 }5 R4 Q" |) H1 ^% f6 V1 |
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    7 }- H+ y/ W& B1 Z: t

  316. ' [/ ^' f0 F& b' _
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    & C0 T. b  k! q+ a( q& L+ J: F
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"* Z+ _" {& b3 w! n6 w9 I8 A
  319. ' a7 `2 M% m5 W) s
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK; n, j; A& a( s) i2 c: ^2 g2 G
  321. .ORG $D400
      |' ~$ w+ H, r; r& h9 [
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"0 Y( u1 R& m9 w/ k( r. k- @
  323. " k5 d- H  \8 {
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK' i) x8 ?. ]) |$ F
  325. .ORG $D800& M/ }6 ]8 f+ m; h4 G
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    $ H+ \  ]4 x2 V$ u* R' ~9 H- C
  327. # J; X3 N9 t7 O: J/ u* f
  328. 5 }7 F( K  K$ Z
  329. .ELSE
    / I: @, r! G/ X0 d# c# D2 L
  330. ; p* ~8 [, e5 h4 Z8 f. H7 s
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    + d, ?7 W5 ?* i1 V" }3 z
  332. .ORG $9000
    4 I% O4 i( z" b# ^9 z
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"# X9 t( a( a7 Q4 m4 A) g8 h' \

  334. 3 B( n, z" @7 _4 u6 @' @* V+ t
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK6 I# U2 q9 E9 s' f* M3 u
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    , y" _5 J  F% ^7 P+ g
  337. 6 B) P! O3 A* _( t& y+ x
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK1 w+ z! ?( d# P8 p( D# h
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"& R1 J3 j6 U0 r, @: M! T

  340. / U; s+ g* u2 D, T8 P& i
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK6 T8 J8 u8 _" e, {) E- H( C
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"& [5 M/ M6 c! b& x3 R  U

  343. 9 `) e) _3 v- t  ~8 U, G
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK- M0 M! t: J- f2 r! V
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    ( U. {7 E$ V$ X# F4 t2 C4 l

  346. # e5 s8 Z4 C. E& }
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    % m- U0 [$ F7 A9 a. i' V4 ^
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"8 n" B. Y9 N' I& W7 n1 n
  349. $ h7 g4 g! K: O3 J0 \' R5 V5 G. Z
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
      b2 U- u# a- L9 R9 R0 f$ R- u
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank") y% F/ s+ e  }
  352. ; I; d) X' }5 d* \  S
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    9 o2 c$ @" E4 i1 C
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"# t$ E8 G, c8 ]8 ?

  355. & M/ y/ D4 ?& X' ^  F/ C- S# [
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
      P( T  p5 v: u0 j' V
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    1 H( F0 s: o$ ^$ P

  358. ! m/ B$ O/ Z( V2 Y# S9 `7 H( J# M
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK* q# m" g; h0 W$ m) @0 G
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    5 d& p9 {: e/ p" H; e0 O' b

  361. - P* |8 H* L& g# Y' h# w* y
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK( s2 w  b$ v4 ~9 _
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"" X: e' |: M" o# H
  364. * y. m- H) ~/ R' c( X8 T0 X
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK8 E# S, S- Z( o
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    7 E8 t# Z# M3 Y1 \/ p. _/ q8 ]

  367. / t$ e" ^9 V3 j; Q
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    / D2 c  N0 D: J+ b
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    6 j# C9 q1 H# b8 t0 s

  370. ) j- g7 I% m9 `7 a( m( F8 ^
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK% D; g  F5 Q. h* D0 l$ Y8 F1 D
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"& A/ x- k) ~9 m/ l! t4 _% Q. E

  373. 3 I/ D7 T9 z/ z5 [* j& H( D; w
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    0 ?4 z0 P  v$ c4 b, F  _% p7 f+ g: n# L
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    & I  B- e- z/ s" H- e6 i- n4 P

  376. ( ^. c. ?4 t- \1 c* P
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    8 i, L  L) o, ^% C0 }$ O0 p1 L$ M6 J
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    - e0 A  M5 }1 V4 O/ ~& A

  379.   q$ q) ?! P9 R9 }. l8 ?
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ( D) k, P( B% S4 d0 N$ g% p+ M' ^
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank") J# X- Y- w/ R0 L! u

  382. 5 i- r. D$ R/ v- C! z6 }( O" c
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    $ h4 h  Z- Z' I5 P
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    * ?, k5 Q" F4 h8 I9 s
  385. * u2 F! d& b) ]  n
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    $ G; I, T" X6 X  a& H' d5 u
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    - S# J6 X* v, N; ?

  388. 5 d7 o4 E6 A; K9 Y( A" ?
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK  a0 T) i! [4 Y6 ]1 \
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"* r  T' e$ c. s' r

  391. * B+ @% j  r, T$ a* v% ~; i' k0 c
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK' ^# b, @4 R9 s0 n; c+ [# @9 J
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"5 _5 V5 u, |$ V  S8 l$ ^1 g  g/ |! C

  394. & K  h4 ]/ D* m1 I0 @* n+ P
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK, h! Q+ Y3 T  M- e* u3 o
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"  f/ N0 `% e: B0 [4 U: l

  397. , S  A1 |7 ~! I! w7 q$ r
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ) I% q9 k- W6 P4 Y2 |' q
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    3 x" S; [, k9 }& V; a2 a
  400. , |$ [( @" ], t1 E
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    ; d: ^" n8 g5 j! \2 D" h7 j9 \
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    ( E7 s! D/ o5 }
  403. % }7 i7 m7 P- c8 v! x6 ~
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    6 n$ ]; Y- t" o) k
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"9 D- u0 }; J% h0 S  K9 G
  406. + \) |9 ?+ \( v! D; m
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    " l2 }% K+ U7 K# N1 S/ e
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    5 A8 }% \3 h; n& t/ _9 d, R0 K# [

  409. 3 m* O; Z. e, h9 ?
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK( j% x( ]6 |% P7 g  G
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"4 `5 T: J) {4 J: Q: B
  412. 1 `( h. U* K. ?9 V  o* E4 p
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    $ m4 m) M, A; U
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    - R6 f- g( V3 B6 x6 x; D
  415. / T4 c% y7 h/ G( X
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK/ b& [* S$ F& T8 R+ i: H8 k
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"" t, b: N$ D8 i/ @

  418. ) i. r# d% @3 u; N8 P0 g
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 F# o% h2 Z, M) B9 U. ^7 X+ W
  420. .ORG $D400( t& Q* t- l: j; K1 L
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    ) {! l6 h2 h1 r4 D4 S
  422. / y( {* T+ K, ^1 h
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK. E; m* \# s' f. ~$ V. h9 ^
  424. .ORG $D800# f9 e& i- O0 S# S; N0 R
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"9 L$ A- c* D. w) y
  426. 3 ]7 h4 B  }1 v% l
  427. .ENDIF! ~9 g+ w$ p, x- d" _

  428. / L# w( I  k/ F. ^1 v) u
  429. ;CHR图形数据0 ?, P! d/ M# w# \6 \8 ?
  430. ;======================================================================' v  h% n1 `7 O0 e" C. ]6 e
  431. .BANK CHR_DATA_BANK. G) \) `3 g* W6 Z
  432. .INCBIN "chr_bank/chr_data.chr"1 k; \2 K3 u+ h- ?+ f8 \+ p* I
  433. : _; w# n2 L1 i9 h  f9 F2 j: t
  434. ;======================================================================) _7 K/ b: s8 x( T! w" }
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK, l* }. y& K: C+ r( q  h
  436. .ORG PROGRAM_ADDR) h! a$ F" v6 V( W( m* l
  437. / ?- G" g* M( _4 R( p% K3 Y
  438. ;==================================================( x% \* a7 f$ s( |% w
  439. NmiProcess
    # M' e4 p( d6 N: x1 ~, K8 H* o
  440. # R; X6 I9 d: E( K
  441. ;关闭屏幕控制7 K5 m7 [; c% e9 ^  P( a7 H2 r
  442. LDA #$00( V- {) Y$ v: v# C; W0 c* s
  443. STA PPU_CTRL
    ) B  y  w5 m9 N5 ^- {
  444. + a" I$ r  e2 e  |& E
  445. ;没播放音乐就不需要触发IRQ
    / p, O7 B* k7 V! d
  446. LDA <Music_Stop_State
    6 l1 @9 i8 y! v& h6 R
  447. BNE NmiNormal
    * N8 Q* t/ @7 |' p8 X% ]5 U$ f

  448. 4 x5 M4 R4 E- m* s( B& f' m" P# B+ X
  449. ;重置IRQ索引
    + G& a4 C( |! {" b
  450. LDA #$00! Y! \& x: E( R, \" ]# k
  451. STA <IRQ_Process_Index/ C6 R' q, o7 v. F/ C8 E, Y7 X0 L

  452. 6 s& s- a- F+ ~2 ]
  453. ;时间秒数为空则跳过
    ) s& l0 x5 j% K1 ]  I9 n: N6 v
  454. LDA <Time_H# u6 w% l" M, K4 M# B
  455. ORA <Time_M7 Z& \  c0 v. D  Y. \0 ]
  456. ORA <Time_S9 ^9 [! ~" n6 }( m2 o
  457. BEQ EnableFirstIrq/ @9 f6 b) c- t1 F; ^1 E

  458. & M# h, D3 k, T5 y# W1 _) T& Z0 z
  459. INC <Scroll_H( V) l" i' W* ~/ j
  460. ' T& @) q9 F7 t
  461. EnableFirstIrq
    9 \: ~$ c1 R/ H
  462. ;80条扫描线后触发IRQ! V/ u, B1 N) J9 w( o# v
  463. LDA #IRQ_SCANLINE* g6 C6 u* V; U' P9 Q' {- K
  464. STA MMC3_IRQ_LATCH
    5 }0 ?( w# K6 g' X
  465. STA MMC3_IRQ_RELOAD
    . R* j9 h+ ?  }3 F7 k5 a
  466. STA MMC3_IRQ_ENABLE
    ! R) w* G/ t: d' l( }; ^: w# H
  467. CLI
    ( c( s; q9 A, e* T# C

  468. # W$ i; l  d" n6 i! F; R, h: L( l
  469. NmiNormal
    3 @" l2 x. R6 ]  F9 D$ L* c& u0 y
  470. ( I$ f) M3 l4 \$ |* v5 k3 b  y
  471. ;处理PPU图像2 z" ~" h. A  W! ~  k* ~3 P
  472. JSR PPU_Proc
    7 K6 s. U7 t" L" e. S9 E

  473. & ~1 r" X# L% W  {+ E' d
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化), H7 X: p$ t) W* c8 ~
  475. LDA PPU_STATUS. N1 V: M  D4 h: Y" y
  476. ;LDA #$00
    / J: N* f& j( `
  477. ;STA PPU_OAM_ADDR
    4 G! `3 P. G$ p; P
  478. LDA #OAM_TEMP_ADDR / $0100- z& W6 K, ^8 g# E7 @5 B
  479. STA OAM_DMA
    2 U. J- {& Z; z0 t
  480. - }/ \, a5 y, t& G/ L
  481. ;启用NMI中断0 W6 f/ L" ]: M  Q: R6 ]: K
  482. LDA Screen_Ctrl
    ( o" W% t! `+ n$ {7 V
  483. STA PPU_CTRL6 s9 X0 t$ ?* _2 H/ Y9 J- {- I8 F

  484. - n7 W" y3 R. Q8 C0 G
  485. LDA <Text_Disable_Flag
    9 {: ~% K7 E! L, l/ z1 t7 p# I8 A
  486. AND #TEXT_DISABLE_RAM
    $ l- L; ~  B# R  _; ?7 c
  487. BNE Nmi_Sound_Play
    $ \! _: U$ c) Y5 s* s3 I" y
  488. 8 g3 m& v) O5 r! P% B; r5 F5 f
  489. ;处理手柄输入
    3 @9 `3 f, P. f: `' `+ M% t& m
  490. JSR Key_Proc4 e! {$ t9 f. e4 P. i; J

  491. 8 r2 h7 o  Y6 T* x: Y1 n4 q
  492. ;切换音乐(手柄触发)4 \: h' ]3 {( i, v0 C% a
  493. LDA <Time_Wait_Cnt. `9 f' d. _& e: v1 a+ v" P
  494. BNE Nmi_Cursor_Arrow
    9 Q/ T# a, P& k: w5 i
  495. JSR Change_Select_Item$ V; t8 v- E0 r, L% `
  496. ; C5 b1 g% P; W. O2 W% A0 A0 t
  497. Nmi_Cursor_Arrow
    5 f( g8 q* i! z/ P
  498. 1 s3 _$ y# X6 z3 d' t
  499. ;处理光标箭头
    2 h1 |( e# u, w& e, m
  500. JSR Show_Arrow
    & Q+ q' _( ]) u8 t% z$ p, y
  501. 0 u6 E5 G# `" b7 S
  502. ;更新调色板
    6 P) R# O3 P% S. B$ i- k
  503. JSR Update_Palette_Data
    " P& Q1 b: O! ?3 `0 Z: z
  504. 4 F1 j: K1 a7 I% O! S5 Z; T
  505. ;显示时间(缓冲)6 e  h7 ~/ h) P% w& t2 A% ~
  506. JSR Time_Show
    5 z, y/ a5 T5 H# S, }; h9 {$ v$ T& S

  507. $ g6 z$ L* T; q9 ^  ?1 H+ d
  508. ;音乐显示(缓冲)
    $ q4 k5 ], h3 K! V% n% r
  509. .IF SOUND_BAR_SHOW_ENABLE
    & B$ [# Q$ U. m+ @* m' p
  510. JSR Music_Vision
    2 k  r3 n! j$ V+ s$ N/ ?+ W
  511. .ENDIF5 n. e- M: l; E6 a2 U+ f
  512. 9 j  l2 \& [. ~$ ~' R2 d8 q
  513. Nmi_Sound_Play
    ) Y, `! }* L  L' Z: r1 |1 Q
  514. ;播放声音
    5 e# c  A* @  B' z
  515. LDA <Music_Stop_State
    7 \( }# P! e8 `4 p" d& f( [$ f. c
  516. BNE Nmi_Time_Wait_Set  C) u) ]) p9 b* t. A& U3 g" h1 I
  517. JSR Sound_Play_Proc
    # k7 I6 r3 {8 w( ?

  518. ' s% N* }' U6 P/ u1 i
  519. ;播放计时7 a9 Q& D2 G- s' m! s6 e" i. W  V
  520. JSR Time_Count
    + n( _" i; u& p6 {, L$ j

  521. 6 j( o8 O' s+ `6 M9 [
  522. Nmi_Time_Wait_Set1 j3 d& ?: u# K- y9 j! Y: k
  523. LDA <Time_Wait_Cnt( p: z0 G: @( J8 F) l% B4 w
  524. BEQ NmiNormalProcessEnd+ V+ r0 o7 ?( a
  525. DEC <Time_Wait_Cnt  V- |, W' s" _1 `+ L" J
  526. NmiNormalProcessEnd7 a# |# q4 U4 G" y

  527. : p% a1 f$ Y6 d" ~/ U4 S
  528. INC <Nmi_Time_Count
      }3 j# ^! C3 G. v7 s& x1 ?
  529. : j. |8 |' i. O4 ~" Q7 q* n, V  t) H
  530. RTS5 x2 P- ~+ {! e* k& j

  531. 2 z9 F; X' T" v7 q
  532. ;==================================================& e  J5 G  n  T+ q  _
  533. Init_MMC3
    : V& N$ D0 |  n, Z2 W% k& `
  534. ;==============================* W5 {2 \$ H3 X* ]
  535. ;禁用IRQ
    - P5 z' Y+ d% z/ y
  536. STA MMC3_IRQ_DISABLE
    6 t9 E( I, x7 s& O
  537. # m1 g  l3 g3 S1 w9 d  k* r
  538. ;水平镜像
    $ l% e' {" s  q7 Z5 ]3 u3 @
  539. LDA #$01" D4 ?! I, t3 ?! L3 U+ ]5 V
  540. STA MMC3_MIRRORING) S7 N& L5 d/ J) `
  541. 0 C7 u& w. ?% x+ d6 q( p8 J
  542. ;初始化图形bank
    ; L5 D- L: F, u6 n. v
  543. JSR Init_MMC3_Chr_Bank8 l' x+ N! l1 ^+ j# R5 `: w

  544. . r) C' Q1 G) W. D( _" D
  545. RTS
    * S  T4 p' G- K1 ^2 A$ t
  546. ;==================================================
    8 @" T8 v! Z% _* G. M' W
  547. ProgramBegin;主程序
    2 T3 D, A. a. {* k2 {( h4 w
  548. LDA #$00
    ' E( {) f; Z/ [
  549. STA PPU_CTRL, R' z4 u+ i& O- I$ f1 O+ x; |
  550. LDA #$00& k, w9 u5 H/ I: R, n
  551. STA PPU_STATUS
    1 ^( k6 ]/ x: s8 \
  552. STA PPU_MASK
    ( b8 }5 ^, ?/ P1 _7 U$ D5 J
  553. STA JOY2_FRAME- y& Y$ z/ V, V/ d+ q1 c: N

  554. ( x7 p* R( p: `$ G" ~  B) v/ r
  555. STA PPU_SCROLL: n7 g& p. S$ N
  556. STA PPU_SCROLL
    : S1 g' b" d! O+ L
  557. ! J7 n7 D- x( y9 [7 [2 _, {( ^
  558. ;==================================================
    0 l- B6 R  O8 W2 M' l0 x
  559. LDX #$FF
    / S* Y5 H2 Z0 o
  560. TXS
    6 \! w9 w$ f; M

  561. . _2 v/ s' K1 }
  562. JSR Init_MMC32 l% A) u; _7 I7 }. K
  563. " t! v& Q! s/ I, q; _
  564. LDX #$02
    ! h( E  |8 R. y; d
  565. Check1
    ' D! i$ C' o$ |3 m
  566. BIT PPU_STATUS' B2 O! L8 Q, \8 Q; z6 x& b' o
  567. BPL Check1" f4 \% J9 T. _, ?- k: N7 r
  568. Check2
    * C; v9 A8 B  {
  569. BIT PPU_STATUS
    , d* N1 ~, e  `5 y" u
  570. BMI Check2! y6 z  I! u, G7 v3 e1 n; F
  571. , Y; \) |6 T- u0 @
  572. LDA #$0F
    % d2 ~4 K: ]9 T6 @  L
  573. STA APU_STATUS" p% O: s5 m) l' ?
  574. LDA #$C0
    / `1 x- }8 P8 H- Q
  575. STA JOY2_FRAME
    4 M( Y( D+ L) F6 i1 P4 ~6 G6 M& R

  576. 0 g3 a; y2 q; M
  577. LDA PPU_STATUS
    " a: D+ i8 P5 R/ H
  578. LDA #$109 B+ v) i& `- {( \5 Q' G
  579. TAX* \! ~" W" R, O. w! ?8 k5 T+ h
  580. Check30 s1 t% a( v/ o6 m! s( k  z9 W
  581. STA PPU_ADDRESS
    * `6 ?6 ~( f* l0 x/ b3 ~
  582. STA PPU_ADDRESS" ?- N' U9 H; q9 J$ b: D& a
  583. EOR #$00
    ! e/ @+ h, A3 i. x7 g
  584. DEX
    / K) j+ j7 y* _1 b$ O- I+ O$ o
  585. BNE Check34 a- O" J, g+ I, s# m+ ^0 g
  586. ;==============================' p" n( d3 e1 C( K) J8 L, F9 D
  587. ;调色板清空
    $ V& j/ }, J  s2 _4 f. T: M( q+ }
  588. LDA PPU_STATUS, C* w9 z$ q% ?/ f! ^
  589. LDA #$3F
    , H: I( s( L* v
  590. STA PPU_ADDRESS7 b3 u3 L+ t& ?5 N% K
  591. LDA #$00* g! x. k. k  q4 x" i4 K
  592. STA PPU_ADDRESS% ?% }& i) x3 c( b+ O
  593. LDA #$0F
    9 }/ P% u* E% r2 u
  594. Palette_Clear
    ) [- R, {3 L. |8 [, e3 T
  595. STA PPU_DATA, p: R# f, Y  Q' k
  596. INX2 Z- g% O) ]3 C; S
  597. CPX #$20
    # b5 B3 y  B5 {% L* ?  A& w
  598. BCC Palette_Clear3 K3 r* i) R. ^
  599. LDA #$00
    $ u3 _+ q) l5 R" K
  600. STA APU_STATUS. g5 }5 b: F) }! V, C

  601. 8 x5 k, i2 l) F  h4 C+ N# R+ a4 T
  602. ;==============================
    ( J- f: [& o' C- S
  603. ;RAM初始化' q# c. n( I; E& F/ u4 F4 {' E% o
  604. RAM_Clear_All; `3 v# D0 A0 w' v' T' ^5 M
  605. LDY #$005 Z$ J4 z+ s- p. {6 W7 t! T
  606. LDX #$08/ b6 [: Y+ V1 G* L! ?* d4 m+ @* s& v, {
  607. LDA #$00+ c- E8 Z* [' p: I6 t, o! Q  o. g
  608. STA <$00( c  d9 |( P9 F- |6 l* j, T3 k9 c
  609. STA <$01
    & W1 c( H, ?5 T) a0 `% q* q4 H3 f
  610. RAM_Clear_All_Start/ ~1 O- ]* d4 a7 K/ a5 q. s2 G
  611. STA [$00],Y
    " s. `% ?! K# U" M
  612. INY# r+ [) M" G/ a  k" F
  613. BNE RAM_Clear_All_Start
    ( v! V9 t; j" `8 Z2 z6 q
  614. INC <$01
    + Q1 c! A/ Q: n0 R1 b' d
  615. DEX
    ) z/ _2 u( `# L( @0 Z
  616. BNE RAM_Clear_All_Start+ B- B  i" O0 S+ _& E/ _- B% x, i

  617. 4 M4 I$ S9 a# x4 w  u+ V
  618. JSR VramClear3 h" [) e5 x2 j5 l4 {
  619. JSR VramInit4 y: u( N4 c& ^" ~# }, c9 Y
  620. JSR OAM_Ram_Init7 ]6 |+ r; D# F' n
  621. JSR Init_Palette_Addr
    8 C! e! y8 i* S+ o! D

  622. - a, t( @: h' k- Z& j
  623. LDA #$FF$ L; _7 n; y' e
  624. STA Use_Ram_End
    ' J! h; V% m3 b2 I
  625. ;==============================
    - l. D0 h. U6 T% v* h9 e' l1 D  F
  626. ;初始化背景调色板
    ) o) e' E. c5 c& {6 v
  627. JSR Set_Palette_Color+ p# Z  n6 Z( X  ]8 f" k5 u7 b# n
  628. JSR Set_NameTable_Attributes
    ; p( N/ i; n$ e
  629. & B- u, Q3 `. A, J6 V; Z) H
  630. LDA #$007 ]9 T) @) F3 N- L7 s2 A0 o2 b/ ~& H
  631. STA PPU_OAM_ADDR
    6 u0 y) r. v. Q+ R
  632. LDA #OAM_TEMP_ADDR / $0100
    # i( {. i. U2 H5 p) t
  633. STA OAM_DMA. @3 t; z( H8 l, e3 C# A1 V* X! n

  634. ) T. \4 {# o1 I# _# o
  635. JSR Sound_Reset_Proc3 t) a8 M' [/ L- |6 H7 u
  636. JSR Set_Sound_Total
    - w$ q0 C  J/ Z* O

  637. 5 Y9 c; u  e  e
  638. Init_Start_Music% |* j) w& L/ M! N
  639. LDX #$00* ^5 S" O4 v& t% G& U5 {
  640. Init_Start_Music_Write
    & w' {; M* ?; R7 Z# s2 {2 T
  641. LDA Sound_Start_Port,X
    . Q$ z' f8 P4 F
  642. STA <Music_Cur,X3 p) D' N$ {& X
  643. INX( s- _/ G  K4 j; W1 f7 R
  644. CPX #ITEM_MAX_SIZE
    $ d, z, c" l7 N) i+ e, @, Q& s5 {
  645. BCC Init_Start_Music_Write
    % a4 D7 ^6 q( E; O4 K
  646. $ v# {$ M4 W8 L8 F) k
  647. JSR Show_Music_Text
    ; N2 J% W: {4 R/ s
  648. 3 R" \1 R% {9 ~  ]# j+ C" w: z& J. i: ?
  649. .IF SOUND_BAR_SHOW_ENABLE2 }: M1 F4 q2 L# Z/ I9 C+ `
  650. JSR Sound_Bar_Text_Set
      @6 }7 e$ u" i
  651. .ENDIF0 r. ^* W* r. i
  652. 9 T1 k: ]8 ?! o1 l9 c, X2 U
  653. .IF Track_Name_Pos
    8 H, L! F" G' a7 M- E/ X2 _; K
  654. JSR Show_Track_Info
    ) }8 s4 A) b/ [* r- n" Z# A* k' T
  655. .ENDIF( m4 x4 [( Y: R& ?0 h4 H; o. `
  656. ! q4 B! O, H  ^! o4 }
  657. JSR PPU_Proc
    / l5 \$ l# F  r1 a# o- l
  658. " j. e* |! o& W! g( r
  659. ;==================================================
    . ?. w: b8 Q+ s% s! s
  660. ;音乐bank初始化
    8 F! t; F# B5 Q: K2 X# ?  c4 [/ ^8 [
  661. JSR Init_Sound_Bank+ R/ I- O6 l" l; ]2 z

  662. 7 P: ]$ A+ q' X; q! n
  663. JSR Music_Show, d% ^- w$ R- `9 s% U* K( v* j
  664. JSR Time_Show# T4 Y" \: s; r4 e8 I
  665. JSR Music_State_Show3 F) H. ^1 O: Y) P4 [
  666. JSR Time_Delay
    3 \4 i1 g: G! t$ P) B/ \" u. n3 L

  667. ( G* K; p( b  j/ w3 Y9 b
  668. LDA #$01
    9 ]. t; m) O% |* N' k  I! n' r! R
  669. STA <Music_Stop_State1 R& r2 [9 V3 Y

  670. 0 S3 e- [; S5 M( t6 |( o1 C
  671. LDA #$88
    3 A# }  d% P7 v7 v2 R6 Q
  672. STA Screen_Ctrl2 ~6 g2 a9 m# B  K
  673. STA PPU_CTRL, u4 v3 C. d; S% [2 v
  674. + {# P* |4 `. i( L
  675. JSR Show_Page_Text  `6 A% x- N/ S; q& L# p
  676. % z' D/ L, U4 |9 `6 n  U
  677. LDA #$10
    * ]* Y& f, S" ~# c% l7 b2 _
  678. STA <Time_Wait_Cnt
    & P/ y1 s4 f, Z5 K- u% X' K

  679. ; G( q  d4 ?& y* g9 a9 Z8 E
  680. Wait_Time_Over
    ' V/ A. t0 Y& v. ]# c7 j" n! s
  681. LDA <Time_Wait_Cnt; G. }" f9 V4 _4 G
  682. BNE Wait_Time_Over6 P( p5 F- K( ?& m" S

  683. / _# p8 q! I0 P6 C4 o$ p
  684. JSR Show_Arrow. |3 Z" r: G7 c8 ?
  685. LDA #OAM_TEMP_ADDR / $0100- J0 z* G1 H7 T& O. q
  686. STA OAM_DMA  C- o# T  u% b" N

  687. ; M* }- I  A: }0 Q; M! V
  688. LDA #$1E
    ; y0 g' e/ `" A0 g
  689. STA Screen_State$ v8 ]5 o$ e' c& X% j

  690. 8 W3 ^8 s; Y+ c' M5 e$ ?
  691. LDX <Music_Item_Cur, k" T! I' b' _/ Y( _" O
  692. LDA <Music_Cur,X
    8 S6 _) r8 {2 o' u9 ^
  693. JSR Sound_Init_Proc4 [" L! X, H; u% h( D
  694. ' a2 p. a2 f* |: y5 X3 H& t
  695. CLI6 @' U1 s$ b$ |
  696. JMP MainLoop) u4 K* m0 G2 h+ ^
  697. , _& d9 s) A- p) m1 L
  698. ;==============================" F, M0 C# K+ r
  699. Time_Delay;延时等待
    ) C8 g7 k  R, A; T" c9 A( z
  700. LDA PPU_STATUS
    ; q# P- d! m! d' N
  701. BPL Time_Delay2 f8 I; Q7 h* I0 K/ ]: O0 r
  702. RTS
    & E) e* W! t" U' g) s% U* b$ j5 n

  703. 1 t$ P6 g% d1 l9 n; c
  704. ;==============================
    & v; G4 Y) [( s* \" R& A# ^
  705. OAM_Ram_Init;初始化精灵内存% s6 t- h+ G5 j$ I. x( R
  706. LDX #$00
    ; `: J: V: l% {2 [: k; k: T$ P! G. g
  707. OAM_Ram_Init_Write
    5 A; `' i8 b; q& ?" `
  708. LDA #$F82 E% V. J) O# g8 j' Z' q5 c
  709. STA OAM_TEMP_ADDR,X
    + E" c9 B7 w6 j. O. ^
  710. INX/ a- z. q& K5 r' L2 u
  711. LDA #$F83 ]& j! a. V9 [) K; d2 H" X( Z& J
  712. STA OAM_TEMP_ADDR,X
    ( J) s6 ?) H$ V2 M4 Q
  713. INX
    - E% @7 ?) C$ G9 A# f' {: z
  714. LDA #$00" W0 E& b' N; g, n$ _8 _8 O
  715. STA OAM_TEMP_ADDR,X
    % I* C) g; a4 n0 W- y+ t0 {
  716. INX
    % |' J2 g  S# i, T/ n+ i# X$ X
  717. LDA #$F84 |6 O0 |5 L0 r8 a7 X. Y2 ?! G
  718. STA OAM_TEMP_ADDR,X
    4 _$ i/ ^' v$ b+ B9 \3 K
  719. INX( m$ n/ \- r& C! i' T
  720. BNE OAM_Ram_Init_Write! v+ N% u( o( ^* j
  721. RTS
    & w! Y/ V- U. ^0 ]; c" y8 s
  722. ' J+ t2 v% x' }- [0 D/ \7 r
  723. ;==============================
    6 V3 g4 ?( d  L/ a; @9 F% A
  724. VramClear;初始化图形内存
    6 @4 c( P# v) m5 v5 z' V
  725. LDA #$20
    6 Q$ X* @6 i6 V. p, Z5 Q
  726. STA PPU_ADDRESS+ Z$ K6 k4 {- ~/ C. K0 [8 X# @
  727. LDA #$00
    5 N7 G; t9 w: @+ n% ?
  728. STA PPU_ADDRESS
    0 W3 s2 F8 j6 p" ?
  729. LDA #$00( d% v6 F2 N3 r+ \+ x
  730. LDY #$00
    % y3 v) C$ U, A/ d/ ^9 o
  731. LDX #$10# S) C. n$ A" O8 j0 J5 E0 ^
  732. VramClearWrite8 v7 I3 ?9 ^5 s/ b7 s* N
  733. STA PPU_DATA1 l0 b# [: ^$ i" m
  734. INY
    + D- D5 r$ ]; D5 V8 n$ N
  735. BNE VramClearWrite
    & `4 o! \7 s1 E/ p
  736. DEX
    7 }% K/ T0 S# ?  H
  737. BNE VramClearWrite! f8 z: ^. L: @& t" m
  738. RTS
    0 `5 u2 l* e! r; ]6 r% ]' K: `0 z
  739. . ]7 O' B# w$ G' X; P
  740. ;==================================================) ~0 |! u- i7 `: I
  741. ;设置MMC3图像bank$ T: J7 f: \; p- H& m: W) q5 N
  742. Init_MMC3_Chr_Bank7 S( E8 }! x' R
  743. LDX #$05' o7 H/ F, ^6 ]7 J% E. K7 t
  744. Init_MMC3_Chr_Bank_Write( x; ?8 ?7 v- f! h7 g
  745. STX MMC3_BANK_CTRL
    ' t% V) ^6 f$ I; ?
  746. LDA MMC3_Chr_Bank_Data,X
    , e6 T/ @7 O9 e- @; E
  747. STA MMC3_BANK_DATA
    & y$ G$ Q: X. k8 c9 I" I
  748. DEX
    * V( o) S5 z$ s3 k7 M  W
  749. BPL Init_MMC3_Chr_Bank_Write$ Q1 Y4 G6 d0 G
  750. RTS! g- }/ Y) ?/ y) q# p+ v8 g+ Z
  751. ;--------------------------------------------------
    0 q) d1 j: G' L7 J: s) X+ S
  752. MMC3_Chr_Bank_Data
    * L9 h  @& j- w  o1 d& s
  753. .DB $00,$02,$04,$05,$06,$07; j) V3 ^7 r0 Q
  754. + y6 `8 o$ d& v1 e5 h5 ]! s' K: v# {
  755. ;==============================
    ! @1 a( O, j9 L/ E7 T
  756. VramInit;初始化图形内存$ c8 ?2 ?( l  x& m0 K* h! C* ?
  757. .IF CHR_RAM_ENABLE. K& N# @* C# y. R- k
  758. LDA #CHR_DATA_BANK9 ~& P- }5 m( h2 d' C" N
  759. JSR Switch_Bank_A000% N1 g3 B" N' E  l4 A1 T6 _) M9 g: X
  760. LDA #LOW(CHR_DATA_ADDR)
    $ S6 m/ {" V7 f) m* O; h
  761. STA <Data_L3 C' L  U& x+ A
  762. LDA #HIGH(CHR_DATA_ADDR)
    7 a9 W% }) K, N( X. ?+ O
  763. STA <Data_H7 i7 o/ z6 G; u: Y! y$ U) k
  764. LDY #$00
    % |# Z' s' {/ z6 H
  765. LDX #$20* @2 a' j7 |  g7 v& ]6 q' f
  766. LDA #$00' a- A/ u$ M! K2 A! f" A
  767. STA PPU_ADDRESS5 {: g+ @) A5 w, f. Q8 w/ l
  768. STA PPU_ADDRESS
    5 R, m% B! I  Y6 W
  769. VramInitWrite+ K! y( C) f- L: T$ k5 K5 z4 D( m* y
  770. LDA [Data_L],Y& c' g* S  ?: K4 }- h& _, e% J
  771. STA PPU_DATA/ f: X8 |3 b3 q" M2 D! }# N
  772. INY
    , b$ [2 x" s+ {& l
  773. BNE VramInitWrite0 ^. G9 s9 G3 V  Y
  774. INC <Data_H
    8 B* m" X$ \# j/ D
  775. DEX! c- M' ~$ Y/ g0 V) G) z+ G; e/ E6 j
  776. BNE VramInitWrite  w8 A3 T' D: P6 J
  777. .ENDIF
    ( {" T& o3 q- V" m6 F* s/ b0 i
  778. RTS
    8 x9 F+ w- q8 K% l

  779. 8 S9 G9 [% Q& ^7 N$ Y
  780. ;==============================
    " q2 U! h. i0 v9 o( i8 o
  781. ;音乐切换
    * Q) N- {3 Z" G
  782. Music_Play_Change: @' \: P, J% M' c. K8 S
  783. LDA <Key_Once
    0 r" A5 w; u1 V* C* i# Q
  784. AND #$FF2 y( _. G0 @0 F( C6 g' J% `7 `
  785. BEQ Music_Play_Change_Check+ Q) g# Y6 s8 I
  786. 6 n3 f$ [6 A- a, {  B. n' B
  787. ;禁用音乐条刷新  v4 D' w/ K1 I; w$ a7 Y
  788. LDA <Text_Disable_Flag8 ]! j9 Z2 z) X# t
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ; ?& A1 u5 n; R
  790. STA <Text_Disable_Flag
    % d1 y% N6 ?0 U) X6 h

  791. $ D/ j4 f6 \8 C: a: o
  792. Music_Play_Change_Check
    0 W1 E( l% Q% ~
  793. Music_arrow
    : I# i6 J7 m+ M8 b) V) J* i/ a
  794. LDA <Key_Once
    ( p! M. O1 h/ l4 U
  795. AND #$0F  Q$ I+ n9 t4 y( {' s0 v* c  c
  796. BEQ Music_Play_Change_End
    . y# _' Q$ X, J) x+ T, c
  797. JSR Music_Track_Change
    8 ]( O* Q9 a! d8 Y. X* R3 J0 A8 o
  798. JSR Sound_Reset_Proc: c. a7 k- A+ F4 h
  799. JSR Music_Show
    . Q) n$ R. C9 \2 `* p6 s7 F! L, c( s
  800. Music_Play_Change_End5 @- ?5 c4 H" l* N5 b, M
  801. RTS* s/ o) B+ e) S) T. z
  802. # |  v$ x, P4 q# B  X
  803. ;==============================& P0 Q+ s6 v( e2 a
  804. ;音乐曲目切换
    7 H& R! a+ ~9 U  `
  805. Music_Track_Change
      Q3 q& f& F3 P2 E
  806. LDX <Music_Item_Cur6 [+ s# l8 K3 E0 N6 j
  807. LDA <Music_Cur,X
    . H6 i" v8 ]$ ?- {" i; P
  808. STA <Music_Last. g7 R4 R3 X( _( I' c
  809. Music_Decrease8 G" P& b5 R) a; d' l7 z6 W6 M% `0 q
  810. LDA <Key_Once
    ! O4 E/ h' r/ |' p8 I
  811. AND #$428 t* B9 I8 A& f, ], A* z0 Z! G. P
  812. BEQ Music_Increase
    , Q- [$ D* {+ h+ h$ v% V4 E7 c1 E
  813. LDA <Music_Cur,X
    , V5 w- U- Z: L) z9 F) ?4 m" t
  814. BEQ Music_Increase
    ; g" ]# C4 F/ @1 n/ d1 Y; [
  815. DEC <Music_Cur,X; O0 _$ D# i5 n' m
  816. Music_Increase1 T- ~3 K  G9 P$ G
  817. LDA <Key_Once7 {  o' S' z+ v* S# w: K4 G+ p
  818. AND #$81" F6 x8 p8 {) E8 j
  819. BEQ Music_Decrease_10/ j- z2 K- D' I6 v  C
  820. JSR Set_Sound_Total  u* H! Z, D2 |
  821. LDA <Music_Cur,X' `( W& Y! B" z, o" l/ ], Q0 W& Z
  822. CMP Music_Total
    8 Q- m" o. A6 E$ o
  823. BCS * + 4# o' ^' e/ [( h2 m1 x  t
  824. INC <Music_Cur,X
    7 X! b/ M1 F$ \
  825. Music_Decrease_100 m( `" ]( r( O8 p' q+ \' r
  826. LDA <Key_Once
    7 \5 K  u3 l! g% ]1 F
  827. CMP #$040 S$ R% K6 @! ]) z6 f7 z* E4 f7 U0 M. @
  828. BNE Music_Increase_10& c. ?) Q( H3 F% B! u) ^) q
  829. LDA <Music_Cur,X# g' b; ~! T1 b
  830. CMP #10
    $ o- ^  r0 X1 c1 \) V% k2 c; T
  831. BCC Music_Start_Song_Min7 y3 f4 }; T( P8 m- Z
  832. LDA <Music_Cur,X
    & ~; B# \$ O6 Q  n: h* P* _% R) f! U
  833. SEC
    / K2 Z+ n- N) o
  834. SBC #10
    1 X+ u% y) m. v; n. T8 H1 S
  835. STA <Music_Cur,X3 t" W5 \3 o. G  v8 \& b) [
  836. LDA #$003 q2 I7 {7 L! j/ ?# L& \4 T' O
  837. BEQ Music_Increase_10
    6 D6 M2 {4 B0 E$ q! X
  838. Music_Start_Song_Min, e8 X7 g! I  v  ~
  839. LDA #$00
    & p; A& a# e  u& h
  840. STA <Music_Cur,X" y0 A: m9 P4 d% O0 o
  841. Music_Increase_10
    8 F# J, @& Z8 |# G7 B
  842. LDA <Key_Once
    ' \/ S/ M, p  Y% ~8 u8 F
  843. CMP #$08
    / P) k6 J) A7 o; }* \3 D
  844. BNE Music_Track_Change_End
      g& J. _% d  ~) U. U
  845. LDA <Music_Cur,X, j: H! {  B: M" t- M. x) z
  846. CLC
    5 t% P% [1 ]/ S2 u2 }7 h/ [' }0 @
  847. ADC #10
    ( F- J! M5 s1 u" ?+ f; c
  848. CMP Music_Total
    * P% N. T4 W! U+ |, W
  849. BCS Music_Start_Song_Max% O! V) Q- `. C1 [' {0 \- V
  850. STA <Music_Cur,X; r5 R/ t: P. `- \: b; n; l% L
  851. LDA #004 J2 h/ Z  C: h: @& ^" r: I0 n
  852. BEQ Music_Track_Change_End
    ( d7 H8 N. [3 h0 K
  853. Music_Start_Song_Max
    1 u. ~" b, _$ D. G; _9 l/ x
  854. LDA Music_Total
    : r  C* s% }7 e  O$ m
  855. STA <Music_Cur,X: r+ h! n. y' k+ S% {# k
  856. Music_Track_Change_End, C0 F, w1 n, D# n) N" {
  857. RTS" K% M8 e0 y7 K0 f3 s$ r( s

  858. : \: k# ^0 H. l/ h; ?
  859. ;==============================
    8 h9 o4 w2 S! x6 F( O5 r
  860. ;按键处理4 w3 @% X7 a& @# ]$ H8 U8 r$ X) G
  861. Key_Proc) M- e% s& i3 _. ~) J2 B
  862. JSR Key_Scan
    , V# X6 |, \: E3 d/ v% W  J: Y
  863. LDA <Key_Keep9 K: Z4 T' s: C) b
  864. STA <Key_Temp
    ' d: M" ]+ V( {' d& i
  865. JSR Key_Scan3 j+ Y; |% y% E
  866. LDA <Key_Keep
    + s& W/ X5 B0 a  J. r. [: n
  867. CMP <Key_Temp
    . @2 ~$ q; ?' I- u) m/ j
  868. BEQ Key_Get_Once
    5 u" x* j/ o  U# Y
  869. LDA <Key_Kemp
    # c: p2 L% x3 H8 }- x8 n
  870. STA <Key_Keep
    8 w5 c0 j, Y: }# \0 d! O9 d
  871. Key_Get_Once
    9 V) B) W6 ~7 g3 x5 R
  872. TAY
    6 @5 {# v  z$ D1 T6 D! J
  873. EOR Key_Kemp: _* i& L; g' ^2 A
  874. AND <Key_Keep- ], }5 f3 h7 ~" `
  875. STA <Key_Once
    0 X/ u7 K( o* n; r' ~
  876. STY <Key_Kemp
    ! n+ a$ U3 x' X/ |
  877. RTS
    $ c7 i* s1 K( O* g6 R  F/ F
  878. ;------------------------------+ A% y1 l. c* ~; c( ~( B0 T8 }
  879. ;按键扫描
    9 v8 _, k1 D* s* j- y
  880. Key_Scan3 D( [6 s$ |4 U& Y
  881. LDX #$01" t' I+ S4 j5 \5 H. ~. q
  882. STX JOY1_FRAME
    , t8 d8 _2 i* Q3 }
  883. DEX3 D9 T. W4 I$ ^: D+ I+ p; h# K
  884. STX JOY1_FRAME
    ; K  p# b/ J# v4 ]
  885. LDX #$08
    4 z+ y* X' |' b+ G
  886. Key_Value: j" f) |1 ^# P0 H7 [
  887. LDA JOY1_FRAME- ^2 S/ _/ H' j& b. c6 |/ ^
  888. STA <Key_Getv
    . m% z- W& }; r7 T$ H
  889. LSR A
    ! I) E. e* G2 V' q7 G. m( y" E4 `
  890. ORA <Key_Getv* E6 X8 P+ S- r$ L0 C1 O
  891. LSR A/ X1 ^) [9 N# R
  892. ROL <Key_Keep) C. x$ d2 n2 `" m
  893. DEX! l' W/ H4 R2 v2 Q  Y( g! y$ [
  894. BNE Key_Value  Q; K( Q( G$ n" |5 i
  895. RTS  D2 U0 Q: w# _) U
  896. * C, h9 p* M% b
  897. ;==============================
    9 q# w% s+ p9 I  J; D, {
  898. .IF SOUND_BAR_SHOW_ENABLE
    & e$ t- |+ E  [0 j( h2 k
  899. ;音乐条显示
    9 C8 H$ z: b4 o' e1 I" a
  900. Music_Vision
    . I, L+ I: {+ q' B4 T2 R
  901. LDA <Text_Disable_Flag. l  `+ E( C5 m1 ^( a
  902. AND #TEXT_DISABLE_ITEM* t4 Y2 t- p0 m3 ~
  903. BNE Music_Vision_End
    ( S4 h0 M+ P" k  h
  904. AND #TEXT_DISABLE_BAR
    1 U7 }' g, |, V: b
  905. BNE Music_Vision_Set8 v+ t' ^5 }- B" [6 `
  906. LDX PPU_Cur: Z. n2 U4 a/ W* t7 g, E+ n
  907. JSR Music_Animation, B& i* |0 V, N6 b+ d) H, J8 C9 A( y
  908. STX PPU_Cur
    ! G& M; s2 T! t* ]
  909. Music_Vision_Set
    ( P, `6 ?* I! o  J: I, H
  910. LDA <Text_Disable_Flag6 A/ A3 Q+ H% G1 m) G
  911. AND #TEXT_DISABLE_BAR ^ $FF
    . e+ b( ~# F, o4 Q2 |
  912. STA <Text_Disable_Flag/ S/ w" p" t3 F1 Z) m7 z( i
  913. Music_Vision_End
    . i+ ]) ]3 _! \9 H& h
  914. RTS
    4 ]& P& T% u4 X) L
  915. ;------------------------------
    5 T: [6 V( m) A4 _4 R8 [
  916. ;音乐条显示处理
    2 r# a" L- |- y; ~8 o. H8 E+ m
  917. Music_Animation, c+ c2 V0 \* ~# D  I+ K: G
  918. LDA #PPU_MODE_CNT_LINE6 [) U  s0 f1 P! U" {3 ~
  919. STA PPU_Addr,X, z; s% ^# m2 m+ t0 j4 y
  920. INX4 [* q) n! i$ u! D
  921. LDA #HIGH(Sound_Bar_Pos)
      f% q" ^0 w2 v: n4 g! }4 G5 S
  922. STA PPU_Addr,X
    % z, G0 U9 A' c# }& R% W" u9 V
  923. INX5 S1 U$ A- }' d; Y
  924. LDA #LOW(Sound_Bar_Pos)4 l% A8 |) u% d& Q! O3 a, F8 Q  [
  925. STA PPU_Addr,X
    * O0 J3 a! D5 \+ T" ]
  926. INX6 G% _  ?, Q' C( z
  927. LDA #$08
    . M/ K( R  F9 p! s9 O4 r
  928. STA PPU_Addr,X" K0 D5 F' f( {% w/ I
  929. INX
    8 h0 _# g  K0 Y. D3 m2 ^# \) ~
  930. LDA Sound_Bar
    6 R- m) l9 D+ O% b9 C# e+ C" U
  931. JSR Volume_Convert
    ! R2 p; d0 F! P( h. T7 L

  932. + l# I4 p4 W) N3 o; c; E
  933. JSR Volume_Set_Cnt, O6 B$ o! D. {8 r8 K4 J9 |
  934. LDA Sound_Bar+$4
    2 [6 c. H# O$ {. @
  935. JSR Volume_Convert6 `( v' D+ b: b1 d( a5 d4 B

  936. 7 ^, m3 M/ r9 n! x8 H  d
  937. JSR Volume_Set_Cnt; U: w# O1 b1 B. e3 M
  938. LDA Sound_Bar+$8
    4 `$ K6 F) l3 l4 F( a* s
  939. JSR Volume_Convert  p8 n) P, m# \

  940. ( C1 r# [; y. |4 t
  941. JSR Volume_Set_Cnt0 ?+ X# H1 h/ h- ^. C
  942. LDA Sound_Bar+$C7 F1 H7 V/ k8 n+ [
  943. JSR Volume_Convert
    + ~( Z: O9 [* Z
  944. " b' g! n2 W. ?' \/ N' o3 V. m
  945. JSR Volume_Set_Cnt' z7 ^/ w, j* u  T
  946. 5 e# z( n& L( q+ Y
  947. LDY #$106 l+ O2 F9 u3 P3 P( R
  948. LDA APU_STATUS7 K5 d! G; m! d! s5 ~
  949. AND #$10
    * G4 n: b) I: [& w1 m: ~
  950. BNE Volume_Count- y% Y/ C( @! A: [* M, ]
  951. LDY #$00) s2 Q/ d4 q! D8 ?5 Z) T
  952. BEQ Volume_Count/ {1 D+ M6 }# h0 U- V' n- l7 \* `

  953. ! ]  @1 V! j# Q
  954. ;------------------------------  Q( Q) F$ t$ Y; e& `+ j
  955. ;音乐条处理
    6 L7 z+ w% p" Y1 b8 H# J' ^6 P
  956. Volume_Convert
    5 X! L$ o' I3 R' m' _) p  {+ ?. f
  957. AND #$0F$ Q* ?2 ]9 V1 Z" ?6 G
  958. TAY2 C/ U: ~2 ^4 o$ m# e
  959. Volume_Count/ `8 P) S' @2 Q7 H1 q" [9 z# @- X2 o
  960. LDA #$08
    2 D3 A! B9 t1 [) O! f, _. e
  961. STA Sound_Bar_Cnt3 b: l# Z  T$ l, p: O
  962. Volume_FILL% l  n9 g4 O' W7 p7 i
  963. DEY
    * f* F: f( M! d( E* x/ S
  964. BEQ Volume_Half* n0 N8 v, y) g, h+ K4 _
  965. BMI Volume_Empty! D0 ]: O* W0 F
  966. DEY9 h: G) P! q4 K
  967. Volume_Full$ X" y2 G# i& K5 g7 y7 T; b; K
  968. LDA #$16% e6 O0 N; P5 _4 P! D. {
  969. BNE Volume_PPU
    4 i4 _7 S5 I. [  b" I2 Y, Z
  970. Volume_Half
    % p  x: e; q3 W! ~3 P, f7 H
  971. LDA #$15
    9 u, |+ d0 M( u: _7 H4 i
  972. BNE Volume_PPU$ V% f! h  D! `
  973. Volume_Empty
    $ i8 V1 w& U: [0 Y! t
  974. LDA #$14. o4 J) a. n# f8 W! E" b4 X
  975. Volume_PPU) ]# E  n* g$ V; {
  976. STA PPU_Addr,X
    & H, R2 `7 j3 S9 z5 ?& I; G; s, c
  977. INX
    - D3 q# }' r! W6 l3 w- t8 x
  978. DEC Sound_Bar_Cnt
    : F/ L$ T; o& H; a
  979. BNE Volume_FILL9 v& ?6 s/ q6 r. e* r4 ]2 v: ?
  980. RTS
    : w5 A% M- {; L  N( Z6 j

  981. 8 {0 [8 @6 e: s! M* K
  982. Volume_Set_Cnt& c4 u7 H/ @' `& ]( @" A% ^
  983. LDA #PPU_MODE_CNT_LINE_NEXT' Z7 p2 D8 a3 Q0 D4 L
  984. STA PPU_Addr,X
    9 s& R& N- ^& Y2 K3 o- ^  V
  985. INX/ T- j% m% D7 }, v& x* o
  986. LDA #$08# A5 @6 ^9 i! I' P8 H
  987. STA PPU_Addr,X- Z, B- ?6 |7 ^; W; S
  988. INX
    , D& w1 ^. N5 ]1 Q: C% W
  989. RTS. G; L4 K! F! @8 x* i6 I7 s/ |' h
  990. ' D: U0 Y$ {, K" ]( {' _, [5 x6 u& [
  991. .ENDIF5 d, `0 P" L! Q3 O+ ^) V

  992. / j/ W' T7 N2 J
  993. ;==============================' b6 c3 l. b' i
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    + c1 m: J, ?& _
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    2 ?& F! C, q3 {& G
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除7 O5 g9 r" m% ~3 o
  997. ;------------------------------
    ' v4 w9 t  t$ g% P1 Y! V' d
  998. ;PPU处理
    ' U5 ]% G# S! x4 L
  999. PPU_Proc
    ! o+ t$ p4 u" f/ F1 D# [* W
  1000. LDX PPU_Cur: g& K( m1 b# G' r# R9 i2 k
  1001. LDA #$00* z, e  k7 R! \) U5 u" t3 g
  1002. STA PPU_Cur
    / l7 H8 h8 P/ I0 u  [6 n
  1003. STA PPU_Addr,X+ V6 k7 o6 b. u2 s6 P# n
  1004. LDA PPU_Addr4 E/ D9 r( `( N  T% g% e" v
  1005. BNE PPU_Proc_Beg
    5 |4 F$ [% I: `$ a- `& D  v
  1006. PPU_Proc_Ret; \9 H" t* F+ J6 U
  1007. RTS3 d8 s9 y5 N3 @( D5 _1 B

  1008. * z8 I1 g0 D& F( E$ N4 B
  1009. ;------------------------------
    ! k) l9 O- }0 E; v
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    3 Z( z  [' A8 L% i3 N# t, ?( G# L
  1011. INX
    ) H/ |7 j+ l% {5 C+ ?  {- U8 A% ^
  1012. LDA PPU_Addr_L
    % a% v1 s8 S, \: L; d
  1013. CLC; {6 v7 M0 T; o2 t; F( x2 P
  1014. ADC #$20
    " N- k. M. `3 ?9 G# U5 t  h& ^
  1015. STA PPU_Addr_L
    ' L9 P3 r5 [: W; Q
  1016. BCC PPU_Mode_Return_Cnt_End3 G8 V- K- X7 S% k- w1 L
  1017. INC PPU_Addr_H
    5 t5 f4 S, V5 c) Q- ]
  1018. PPU_Mode_Return_Cnt_End
    ( J( C7 V; {1 P( M# Y( f. |7 K
  1019. LDA PPU_Addr_H6 d9 C$ @4 g) r$ i! r8 ^
  1020. STA PPU_ADDRESS$ Q# M! `4 }+ b! o
  1021. LDA PPU_Addr_L3 L; P/ A' v( _/ M8 q
  1022. STA PPU_ADDRESS
      p  Z; B( v) U! X% l: J. k
  1023. LDA PPU_Addr,X
    # e9 G. S$ E" d. I7 K
  1024. TAY# C' p  e1 y9 W  S3 C2 e; m4 _' K; J& p3 O
  1025. PPU_Mode_Return_Cnt_Write
    $ I' X7 d7 q- i' ~
  1026. INX* m2 v; g- r/ j3 D' R4 L% b4 W
  1027. LDA PPU_Addr,X
    % [2 F% h5 d% l
  1028. STA PPU_DATA
    " H# J) e4 g! \9 L
  1029. DEY5 j  e5 H  r5 E: D
  1030. BNE PPU_Mode_Return_Cnt_Write
    ' }# [6 Z$ W+ X% D) _- V
  1031. JMP PPU_Proc_End
    9 \# R' k5 [( j( C
  1032. 0 m7 O) h- [% t2 M3 N
  1033. ;------------------------------
    9 P6 v6 u- b3 @7 o
  1034. PPU_Proc_Beg  ;处理开始$ i8 ^, a- z* B$ Y2 r& d! s
  1035. LDX #$001 q  X/ h: h" @% n  M2 v
  1036. STX PPU_MASK+ u+ |) I2 N. S1 h3 _$ M2 |; }. d" p
  1037. ;------------------------------2 e0 I. C0 R+ x' D0 D
  1038. PPU_Mode_Select  ;模式选择
    1 L  Z& C6 c% N7 H: d" P5 v$ O
  1039. LDA PPU_Addr,X
    2 g- `5 C& o" ^- I$ I8 ]
  1040. CMP #PPU_MODE_CNT_CLEAR4 L! ~' Z+ |8 ^, O( N$ z
  1041. BEQ PPU_Proc_Clear
    * s8 h' q. N+ F+ a4 l  V) M4 K
  1042. CMP #PPU_MODE_CNT_LINE
    : b' `6 Z; q: Y& \) u
  1043. BEQ PPU_Proc_Cnt_Line
    1 Q0 Q7 @, W) {6 [  R0 r/ P
  1044. CMP #PPU_MODE_CNT_LINE_NEXT" }  m# j8 R* |' \; i
  1045. BEQ PPU_Mode_Return_Cnt
    ( K9 N" J* ~$ F  y. K
  1046. JMP PPU_Proc_End_Write/ I- t2 ]4 l/ z4 h
  1047. ;------------------------------
    ( N. D4 [  x% ?3 x- x
  1048. PPU_Proc_End  ;单行写入结束
    - }4 H0 v; J( D" ~
  1049. INX. _' b/ g0 @; V9 {( ?
  1050. LDA PPU_Addr,X) z7 D1 a( d: Z$ t5 Q
  1051. BNE PPU_Mode_Select
    1 B0 r" ^# m# q
  1052. STA PPU_Addr1 }) ]7 R0 T4 y; p/ A; b
  1053. JSR Update_Palette_Color
    5 g! w) D5 M6 D( f5 v$ g0 ^
  1054. + r! m$ ]2 f. d8 v, y* l
  1055. PPU_Proc_End_Write
    3 J+ q0 D  V) o& Q$ @: h
  1056. LDA #$00
    3 O' A) J5 J- Z  L4 S
  1057. STA PPU_ADDRESS$ j+ g8 q8 W3 X' I
  1058. STA PPU_ADDRESS- M( n/ a/ M! S1 @4 d3 A
  1059. LDA <Text_Disable_Flag# A8 y. s: j/ e# L
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF5 S) ~' s. `3 `: x, g
  1061. STA <Text_Disable_Flag
      \2 e+ P" b( g2 l: ]8 j
  1062. LDA #Scroll_X
    / f* g1 J* k6 f) S0 S1 H- g
  1063. STA PPU_SCROLL
    % w* Z9 m( x/ c+ {
  1064. LDA #Scroll_Y
    / w( R7 \9 P- {/ o# x, t
  1065. STA PPU_SCROLL! i3 J! K7 F# A4 {
  1066. LDA Screen_State* g" H" T5 b4 Q" c7 z/ \4 t& T
  1067. STA PPU_MASK& i  \" ]* B. [7 v: l" n$ O# p
  1068. RTS/ i. i) Y8 m, T; s0 H# Q

  1069. 3 ?, A$ c- L3 e4 B: S" h0 j
  1070. PPU_Proc_Clear
    ! G( {8 y5 @4 \5 N
  1071. INX
    & W* t# m1 `" ?
  1072. LDA PPU_Addr,X4 l7 o* ~& M6 Q/ z( e* N
  1073. STA PPU_ADDRESS, y& F  I! F* n$ I5 D) t4 Z7 I  b
  1074. INX: v% v9 D$ I, Q; J& u0 A% |; I# O
  1075. LDA PPU_Addr,X
    , I/ {% A: X9 L$ |
  1076. STA PPU_ADDRESS) l3 Z# L  J0 g& j& E/ ?# Y
  1077. INX
    ( ?5 n  {1 ]  O" I
  1078. LDY PPU_Addr,X% F6 z6 l4 s5 S0 A$ X6 m5 V! x
  1079. LDA #$00
    5 c+ ~3 H7 K+ T5 `$ M
  1080. PPU_Proc_Clear_Write1 E5 J/ s. [2 I6 k1 q" T% v
  1081. STA PPU_DATA
    & n; ?3 r$ M. q4 V
  1082. DEY/ n6 M( ]! _% F5 ]) G8 q
  1083. BNE PPU_Proc_Clear_Write
    * n7 m, O/ F6 E  k2 n' G+ ^$ d- L
  1084. JMP PPU_Proc_End- L! U2 X5 u: e

  1085. $ a( S" r: ^3 G0 R8 G( G0 V+ a
  1086. PPU_Proc_Cnt_Line
    9 r0 j2 b3 R$ F' _# }8 ~9 z
  1087. INX7 e: f4 e" A2 K; j
  1088. LDA PPU_Addr,X
    0 s8 ?& @8 _( ?- r/ @9 T9 j
  1089. STA PPU_Addr_H
    ! H$ f- `! \& v" c
  1090. STA PPU_ADDRESS" Y  b5 U! Y, r8 Q, B
  1091. INX+ p5 s2 c/ T1 A: u; L
  1092. LDA PPU_Addr,X
    1 o  E( t. r4 B) W6 e) H9 E- u
  1093. STA PPU_Addr_L8 _5 h* v6 i! ~6 e$ }
  1094. STA PPU_ADDRESS1 A2 m% R$ R# k( f( C0 q3 e
  1095. INX; e$ g4 b, l* h* U/ s& m  @) u# Z
  1096. LDY PPU_Addr,X  N* n6 i) w6 o: ~! h4 G: U! T
  1097. PPU_Proc_Cnt_Line_Write
    ) B2 ]) A$ w. d$ r5 Z
  1098. INX5 y; W% h- j' ^8 e% W$ V
  1099. LDA PPU_Addr,X
    * k2 C0 N& R, P) m
  1100. STA PPU_DATA
    9 z) K5 c# ~3 Z/ d3 B
  1101. DEY
    / O8 t3 V7 z% v* @  A* {+ M9 M
  1102. BNE PPU_Proc_Cnt_Line_Write
    7 R: R' O, F& i$ [
  1103. JMP PPU_Proc_End3 X9 x3 P0 J9 p
  1104. 8 o; X4 ~1 i+ S# y$ q
  1105. ;==============================: Q9 J% ?! }! V7 F2 P3 R# z
  1106. HEX_To_Dec;十六进制转十进制
    * a4 L  |5 @8 _& u$ @) N& q2 ]
  1107. STA <HEX_Data
    4 R+ d4 i5 X0 @6 j
  1108. PHA
    6 r; M/ n; \0 C4 [
  1109. TXA' i; ]% `7 i, J' }
  1110. PHA
    2 F3 z" N2 m. I
  1111. LDX #$00$ k1 s% p$ D9 j( y6 c3 B& K
  1112. LDA #$009 i7 k9 ^; g; B& ?$ L
  1113. HEX_Cln
    : V/ r5 C1 X8 o( ?) p+ Y
  1114. STA <DEC_H,X8 I/ r; M% ~# z: Q2 L
  1115. INX
    0 q, i' j* u: f0 W" }
  1116. CPX #$03% t& t5 _* E/ h- S3 A, ^
  1117. BCC HEX_Cln
    # l5 `0 f& [9 V$ Q6 L( p4 y
  1118. LDA <HEX_Data0 m% m! I0 {7 J8 ?
  1119. ;------------------------------& H! n2 _, f" w
  1120. HEX_100
    % L, X0 K% Q, [" p( Q" b/ G& w0 i" |% _
  1121. CMP #1002 M4 C4 R( ~4 f! E6 y) e- R
  1122. BCC HEX_102 e5 w8 C9 k& ~+ M& k
  1123. SEC: k3 q. H3 [' b- W' O% O
  1124. SBC #100
    ; G! o- M9 L- L8 R& J' z/ s
  1125. INC <DEC_H/ X9 ^& S# r1 l
  1126. BNE HEX_100
    . ?% {: k$ d" p1 @' e
  1127. ;------------------------------
    ( [0 ]' a2 W% I' U& r
  1128. HEX_10' g! Z8 z# ?7 Q
  1129. CMP #10
    - p3 m. f+ f- Z6 w8 \
  1130. BCC HEX_1( r, q$ `5 Z- o5 j" r
  1131. SEC
    % W3 r8 ^7 _3 i
  1132. SBC #100 _+ J! ]+ d5 H  b+ b& }+ l
  1133. INC <DEC_T
    $ K0 p5 v  B" D1 W
  1134. BNE HEX_10( Q+ M+ i! E* d* f2 I
  1135. ;------------------------------
    $ ?! [$ B/ J" @: [9 W1 v
  1136. HEX_1
    6 b; X, O' i/ q
  1137. STA <DEC_L
    " P6 y' Q4 _  o, h( ?* m9 i) J
  1138. PLA
    9 A/ |( i% Z. b6 d
  1139. TAX6 C( i- S* b: O* [9 S/ I7 Q
  1140. PLA
    $ S4 K- J. v  F7 g) h4 w2 L& |
  1141. RTS% f5 K4 _8 J: }1 _3 e/ r
  1142. + S* b( D6 d  B0 C) A0 M" \( f
  1143. ;==============================: @3 e8 W& J7 b; i) v* [# J  {3 u/ y
  1144. ;音乐曲目显示4 S) ?6 f* A7 |. d  G: N
  1145. Music_Show; p6 o) _' M$ ~7 K/ [# i
  1146. LDX <Music_Item_Cur
    * o( i6 }" U" i5 r- A4 @0 Q! A9 h, j
  1147. LDA <Music_Cur,X  C  B- `; w: n
  1148. CLC6 A- Z6 @; k, L+ h! U% f
  1149. ADC #$015 j4 S7 R  h) B1 |9 r- b! D
  1150. JSR HEX_To_Dec
    6 H* x# D. m) d2 C+ W1 |
  1151. LDX PPU_Cur
    0 h( G1 t3 y) F6 i2 J+ G% l
  1152. LDA #PPU_MODE_CNT_LINE/ q6 ^$ t  d+ }% k0 O$ D/ w
  1153. STA PPU_Addr,X& r( T6 ~8 x( p  h1 C( Q
  1154. INX6 A6 R6 P- R9 A  x# u" R0 K
  1155. LDA #HIGH(Play_Index_Pos)
    5 a2 \$ n" k8 _/ f. X& c
  1156. STA PPU_Addr,X- t5 u& @; x/ x
  1157. INX
    ( d* ]' T% W8 S4 @, i/ u
  1158. LDA #LOW(Play_Index_Pos)
    $ ^( Z! g7 d8 c; G- v; ~
  1159. STA PPU_Addr,X  N0 |3 l; T" r/ \
  1160. INX
    $ {2 }$ J6 f: f: `$ f$ x" _& {3 P
  1161. " [& c$ m8 J- V( Y% T
  1162. LDA #$07; l- c9 |. R* O4 x
  1163. BNE Music_Show_Length
    8 d9 W7 v2 k/ F/ d3 |* @
  1164. / o) ?8 _2 c, v8 o2 q* K
  1165. Music_Show_Length9 t  L, ~6 E: S5 n6 r
  1166. STA PPU_Addr,X
    + E* [' R: {: l0 {
  1167. INX, _# `' J! [3 G& M+ b3 }7 g3 [, s

  1168. 1 T; Z" ]! G8 G. D- R; z1 ^& ]9 A
  1169. LDA <DEC_H; S. \- \% |9 U2 p
  1170. ORA #'0'
    : q  P( Q) p7 b3 }; O7 ]
  1171. STA PPU_Addr,X
    + m" z* B# c- _$ H0 r/ N* z
  1172. INX% A. k: l8 y- D, O

  1173. + U; Q$ _" r, _- v( K
  1174. LDA <DEC_T' k) w/ V% `+ p' e. u
  1175. ORA #'0'
      U4 H) G' {/ Q1 b# t$ ]3 n2 m
  1176. STA PPU_Addr,X" s3 B. G* f3 ^7 C1 n; K: G+ }( `3 N
  1177. INX: q5 g% \% T1 l& T& V- u
  1178. 7 }3 b; Y# Z7 e4 Y
  1179. LDA <DEC_L8 b9 I8 Q" M5 n( E+ v
  1180. ORA #'0') _' \$ K6 p2 X! P) {+ U
  1181. STA PPU_Addr,X" @. v$ a  h9 S, @0 m/ r
  1182. INX, @0 X5 e' W% K, r
  1183. ; C: U- b8 y* E/ @3 s3 v
  1184. LDA #'/'# w7 x' `7 H& K& K* A
  1185. STA PPU_Addr,X6 ^4 N" {  A0 }3 W* c: W
  1186. INX8 i* |' _( q5 I* ?9 d7 P  X( X
  1187. Music_Show_Total6 {- D, g9 r  b0 R: u- H
  1188. LDA Music_Total
    ; p- n& b* G7 S/ T
  1189. CLC
    2 Y0 d) ?; o) s% D- E
  1190. ADC #$01
    * W! f$ `/ g9 N! r- C  v
  1191. JSR HEX_To_Dec
    0 b8 s& y, }. O+ B

  1192. 1 k' U; L* T# y/ W
  1193. LDA <DEC_H/ N/ k2 Q! v8 N9 q8 g8 d8 P6 C7 m
  1194. ORA #'0'
    * a3 z- q" k/ o9 n) ~: i
  1195. STA PPU_Addr,X6 |7 K5 ~7 \6 N- O
  1196. INX
    3 _, a% D) H# x' C8 E3 y

  1197. ) f6 w7 R' R; m, |5 B/ H0 q
  1198. LDA <DEC_T
    ! i3 z' P0 ^4 r7 |, p
  1199. ORA #'0'7 x1 U5 x; O  S7 p3 P( w
  1200. STA PPU_Addr,X
    1 @6 O, U; m7 d: y) I& i
  1201. INX, x4 e8 M8 \" e1 O" J
  1202. ; r. p! q5 t/ L0 Y: [1 k1 B, L
  1203. LDA <DEC_L
    7 ^. _+ s6 ^( D2 w
  1204. ORA #'0'. H" H. U1 |0 }. C
  1205. STA PPU_Addr,X  d$ [8 f: V* W( o5 S
  1206. INX
    # |( X* {( L' W4 L5 b- i

  1207.   b2 {5 I: W) |% c2 i0 W
  1208. STX PPU_Cur# `* P) P7 M* \+ z& W
  1209. Music_Show_End5 w$ A1 [0 s! r9 u* r- I" F. D# u# b- Y
  1210. RTS
    2 G% ]7 K* F5 F6 b4 k5 _. a
  1211. . ^. g: _- i, J6 D/ O4 Y3 A
  1212. ;==============================  e6 Y6 j. E( e0 m, H1 Q
  1213. Time_Show;播放时间显示
    9 A- x7 [1 b* l+ Z1 G
  1214. LDA <Text_Disable_Flag) X, A" _0 c' V3 Y9 h0 F
  1215. AND #TEXT_DISABLE_ITEM7 R, t6 Z5 g% f% H
  1216. BNE Time_Show_End+ j* y2 F6 B* ^+ ~0 r9 F
  1217. AND #TEXT_DISABLE_TIME  f3 `$ t2 u/ A8 Y' c4 [  p/ I
  1218. BNE Time_Show_Enable4 ~7 }) v. J* v) p/ o7 i

  1219. - v' v2 }! Q& ?$ Y# E8 h$ {. K
  1220. LDX PPU_Cur
    1 B6 b2 J  {' x3 K
  1221. LDA #PPU_MODE_CNT_LINE& s" E" U. ~" d$ X
  1222. STA PPU_Addr,X
    " a- ~9 J8 |- J" N. R
  1223. INX6 c0 _9 b0 }5 R4 j: \# S& k7 k
  1224. LDA #HIGH(Play_Time_Pos)  R2 B' ~; s2 `% I/ F& k6 _! Z& l
  1225. STA PPU_Addr,X1 s9 u4 d# d' U5 x
  1226. INX& c! a0 J* `4 N  O1 u
  1227. LDA #LOW(Play_Time_Pos)- V& N  E6 u9 W' Y  q6 [6 K
  1228. STA PPU_Addr,X
    , k' X: F$ A, ^1 C/ D5 l* g1 ?
  1229. INX% x1 y4 e3 J+ R9 a# G. B+ W4 L
  1230. LDA #$088 y* v5 a) J. w/ k, Q' q3 }
  1231. STA PPU_Addr,X/ P2 I" z# d) K
  1232. INX
    7 [' C3 Y1 i) i. W
  1233. Time_Show_H" U! v7 t0 E9 R9 d% b8 |1 h
  1234. LDA <Time_H
    ' V* ~- w3 A  F6 n$ J( {
  1235. JSR HEX_To_Dec
    ) a! `; y- i+ d! Z
  1236. JSR Time_Digit0 z9 J3 h" S% {
  1237. LDA #':'
    % b4 J4 w2 r; B
  1238. STA PPU_Addr,X& [0 g: f$ K! E% q' \3 R
  1239. INX+ _# R' j' _( c% C& ]( U2 d
  1240. Time_Show_M
    ' T% |. L4 K! D
  1241. LDA <Time_M
    2 o3 Z! M( p5 G, a2 d5 p
  1242. JSR HEX_To_Dec0 h1 }- O! I& ?0 q
  1243. JSR Time_Digit5 I+ k5 a/ o; |' Y' @1 ~" U
  1244. LDA #':'
    $ |. V6 w# U3 s7 [( I
  1245. STA PPU_Addr,X' {  S8 i% u0 R! [/ ~$ ?
  1246. INX; h8 Z$ v/ {7 m
  1247. Time_Show_S. [( a' Y, ^/ ]
  1248. LDA <Time_S6 x! Q( a; i8 @0 R$ B
  1249. JSR HEX_To_Dec
    ' F: W' M5 P; n4 ~6 w0 Q
  1250. JSR Time_Digit: q- L4 T9 B" ~
  1251. STX PPU_Cur7 ^( u* m$ A; J; F
  1252. Time_Show_Enable
    # Y5 H1 i$ @. R; y- C" U6 C! s
  1253. LDA <Text_Disable_Flag
    / d8 D9 n/ ]% |3 o, Z, [
  1254. AND #TEXT_DISABLE_TIME ^ $FF/ P+ T% O% p( V9 G- b4 K
  1255. STA <Text_Disable_Flag! V& ?- X4 l* |3 i
  1256. Time_Show_End2 I3 b! v5 ?# f" S* Z& e0 c0 v9 H% ~! K
  1257. RTS# y* \8 Z5 y* b; r5 g0 b& v; y2 P

  1258. % s+ y: ~: n+ N+ E4 N
  1259. Time_Digit  v! V0 `9 N/ Z9 O3 T
  1260. LDA <DEC_T
    ) C2 r1 N. B7 A; {
  1261. ORA #'0'
    - Z: l& X9 z7 `6 T  Z
  1262. STA PPU_Addr,X
    8 U& Y+ }8 r9 \( k. A
  1263. INX* {$ r( _. M( L$ `$ M
  1264. LDA <DEC_L5 P/ Z8 L8 G$ j% F1 `% @% W5 O
  1265. ORA #'0'5 m) N: _; h8 N$ N
  1266. STA PPU_Addr,X
      J! b, L3 ?: ]$ k: O+ T
  1267. INX1 V- r9 @% C& W& T' x
  1268. RTS7 B* j6 W. Q$ {/ u# T( Y9 N9 }# N
  1269. 6 K" ]% @5 k. ]4 V* L$ F
  1270. ;==============================
    , L) D7 Y1 j0 @0 Z. c% ?0 b
  1271. Time_Count;计时  Q2 c% B0 J+ d% E  {1 U. b
  1272. LDA <Music_Stop_State
      ?" s$ K8 l9 q8 z$ y7 H+ F1 S
  1273. ORA <Time_Wait_Cnt
    ; @9 z# t0 a8 Q6 {% H
  1274. BNE Time_Count_End4 ]9 m/ g( v  ?9 E/ u! c% {
  1275. INC <Time_Cnt
    / Q9 `/ p3 |; i, u+ S
  1276. LDA <Time_Cnt; D. o3 ^' W  r& E; u1 c& R
  1277. CMP #60
    ! K9 k/ @4 j6 B, _; i( [5 o8 Y% W) ?
  1278. BCC Time_Count_End: D/ s! u8 P& @5 z. Z
  1279. LDA #00
    ) _1 W9 T3 ^# r2 p7 A7 S. F
  1280. STA <Time_Cnt
    8 L5 a$ S4 t3 O' @) T% ~
  1281. INC <Time_S
    / d; z% J# D+ F! W

  1282. $ ^1 A# M4 H4 A% v
  1283. Time_S_Cnt0 u' _- I; h0 F
  1284. LDA <Time_S4 {" x) L; }  r# v6 l
  1285. CMP #60
    ) P& r: y; F% s! a1 F
  1286. BCC Time_Count_End
    8 R1 X8 M$ M8 F: N. P
  1287. LDA #00
    3 @. ]# G* I0 P; n7 D; B- O3 d7 c
  1288. STA <Time_S
    % K/ }8 y! G' n2 A* d
  1289. INC <Time_M0 t3 [2 H! a7 C; {, y- X9 N7 v/ G

  1290. . P, u# D$ ?8 E' `  M
  1291. Time_M_Cnt
    8 H. M" R( N2 _0 m  ?+ f
  1292. LDA <Time_M
    . [4 F% x% ^" S! B# P  _
  1293. CMP #60, l3 w2 B8 {1 @! x% [2 v& n
  1294. BCC Time_Count_End
    & Z: t! ^, l/ l2 Y
  1295. LDA #00
    - U: |& j  K7 v3 t
  1296. STA <Time_M) M& L# `% f% T9 o& r+ H9 g+ d
  1297. INC <Time_H
    0 o& k+ M4 v8 C. @
  1298. * o8 o4 ?4 Z7 t, n# s5 A
  1299. Time_H_Cnt" o1 v, T1 ?( d' m7 X. ^+ q* Y
  1300. LDA <Time_H
    , V; j  y  J+ q6 X
  1301. CMP #24
    $ T0 K1 E' ]1 i( U
  1302. BCC Time_Count_End
    # E5 j& {7 P, a" u7 e
  1303. LDA #00
    ' U0 _2 ?- Q- h& `
  1304. STA <Time_H
    ' ?0 v& A  e  o/ v$ @- A* J
  1305. 7 u% Y2 f7 F/ x2 O2 ^
  1306. Time_Count_End
    . B+ J1 E( W3 j4 Z: o. V
  1307. RTS
    $ m6 Q: q5 r. x2 M* h2 ~

  1308. 6 r2 u# p# D9 A: B
  1309. ;==============================
    9 S' P( A' g) A! S& x  e
  1310. Time_ReSet;播放时间重置- ^" o6 I# n* T2 p& s
  1311. LDA #$00
    2 D& b7 N7 g* I" }, }
  1312. STA <Time_S
    4 Y' [) E; i; ^+ |/ x' X
  1313. STA <Time_M - y7 b* q5 J* j7 v  ^& h8 [+ C- D
  1314. STA <Time_H! v7 B4 x) p( [- G) c- V) S# Y
  1315. STA <Time_Cnt
    4 q/ V7 L; y2 u1 L) Q8 D# T
  1316. RTS% A% m0 |* H5 W1 M2 H$ B& q; x: ?

  1317. 5 o+ w3 u$ {2 J" Y( n) |- j
  1318. ;==============================
    ) T, `4 S0 C+ R" u: k; E6 m
  1319. Music_Bar_ReSet;音乐条重置
    " ?% N8 d- u7 U
  1320. LDA #$00
    . H3 E, Y( N  r1 w$ R0 }
  1321. LDX #$00" A' I8 @6 r' K& }, O
  1322. Music_Bar_ReSet_Set
    9 J* i! x( U$ b) i/ X8 Q3 u
  1323. STA Sound_Bar,X' {8 L( _* b" w
  1324. INX
    ) K/ q2 ]2 n9 t
  1325. CPX #$10
    $ _1 F+ J7 B3 M: Z. z# \6 c5 F
  1326. BCC Music_Bar_ReSet_Set  _& P' p( M* L2 Q: b" E
  1327. RTS# T7 p+ [% u& Y. H* F6 N+ o
  1328. 8 K; R8 ?5 x: i8 L
  1329. ;==============================
    % G' O9 O; \* z( }, G
  1330. PPU_Data;PPU数据写入
    6 K) H( ]" s9 t9 ~8 A
  1331. STY <Data_L
    # r) [5 u( G. H2 ~3 v6 j
  1332. STX <Data_H
    7 `0 M' i2 s- u; p1 i
  1333. LDY #$FF) }1 Y) K) q. `' g( s
  1334. LDX PPU_Cur3 R9 j0 w+ P5 c* I* K6 x
  1335. DEX
    - B5 m4 Y0 |+ A8 Z& u2 H( Y5 O1 q4 ^
  1336. PPU_Data_Beg
    0 O& e& l% f  y5 g$ T  l; |
  1337. INX- Y3 y, u! n8 X) j+ b* {0 ^
  1338. INY
    % z8 z9 c: {5 x/ A: q1 c
  1339. LDA [Data_L],Y
    5 u* p% B/ o. d' Y4 B8 ^1 Z- B
  1340. STA PPU_Addr,X
    $ f: U8 i' C4 p5 u: v- F- @
  1341. BNE PPU_Data_Beg
      X2 N+ h( s6 c1 M2 B
  1342. STX PPU_Cur
    ) D3 M  ^2 N% d% j. |5 t
  1343. PPU_Data_End# @$ o9 E3 W8 f& r" D5 S
  1344. RTS
    " ^1 M" b- C0 c$ c

  1345. 4 e4 Z" }- V0 d+ F3 h
  1346. ;==============================
    7 }0 _3 S1 R" f2 g& h
  1347. Music_State_Show;播放状态显示# G" [# v4 n. W- F3 E
  1348. LDA <Music_Stop_State/ R! O& ]+ D/ c% O8 |  K3 ~0 U
  1349. BEQ Music_State_Show_Play) O" G1 v& m) {
  1350. Music_State_Show_Stop3 W5 @  X2 d8 Z# a% d  t
  1351. LDY #LOW(Music_State_Stop)8 e9 j* n7 u" O" @2 w2 t! q
  1352. LDX #HIGH(Music_State_Stop)$ X, v6 `. I2 R4 o
  1353. JSR PPU_Data! V) ^+ }( H' Z& {* j8 n
  1354. RTS8 n' c/ X% S0 D4 I3 H0 V
  1355. Music_State_Show_Play
    ; z! X( M7 E! I! ~
  1356. LDY #LOW(Music_State_Play)$ z, G* g4 s( W3 p' h+ j( ]" r
  1357. LDX #HIGH(Music_State_Play)- H7 U3 b" O# p3 A' r
  1358. JSR PPU_Data
    3 }3 ]$ j4 C# G, ^# i$ ^0 W
  1359. RTS
    : b1 ]/ t) g0 k: [8 I

  1360.   J; |% L* i, v  [# W
  1361. .IF SOUND_BAR_SHOW_ENABLE
    1 N" X0 p% {1 Z/ F& k! X: }& M0 v& z4 n
  1362. ;==============================* k6 q! O' m7 ]7 g
  1363. Sound_Bar_Text_Set;标题与音乐条初始化1 t1 _1 O" ^6 z; Y: q( \8 `
  1364. LDY #LOW(Sound_Bar_Text_Data)
    2 w- @& A7 {4 u: n: o* P
  1365. LDX #HIGH(Sound_Bar_Text_Data)5 z3 f+ J0 b4 d/ I" ^2 z. \- o
  1366. JSR PPU_Data
    ; f( x" R+ @' q2 R3 P) E
  1367. RTS8 p  e/ B. k8 Y$ K. e  S

  1368. 0 J( ~* a+ a, @
  1369. .ENDIF5 I* D2 I1 v# _, J
  1370. ! l- t* t! i: [/ @
  1371. ;==============================
    3 P, n5 T  o% |, E- H
  1372. Set_NameTable_Attributes;设置命名表属性
    - H  E* S/ I! u; p4 l, p
  1373. BIT PPU_STATUS  H. `- A* B9 ^2 K5 |
  1374. LDA #$23
    % {. w1 N; h/ I# o; V1 E: o& `& s
  1375. STA PPU_ADDRESS
    ( h- Z5 f3 c8 T: f6 P
  1376. LDA #$C0) i1 V- V6 X: O3 X" Q% M, E
  1377. STA PPU_ADDRESS
    . r) l# ]$ f- w
  1378. LDX #$00
    # c/ ]& _2 _5 y' S
  1379. Set_NameTable_Attributes_Write
    , X+ q* ~% b$ w) u8 a$ K% `
  1380. LDA Palette_Attributes,X
    0 c9 t* j; d( P6 M4 K# y7 F: L
  1381. STA PPU_DATA* A' \9 d2 S# b2 m2 U, C
  1382. INX% R9 E. I  y: m
  1383. CPX #$409 p5 f, L9 E9 I  g/ l
  1384. BCC Set_NameTable_Attributes_Write7 X2 D3 n5 q  W# V) o
  1385. RTS- l( p$ n( p3 U- t$ ]2 A8 I6 F

  1386. % L; s3 O7 }- }9 |) [; v; k
  1387. ;==============================
    3 r, n# c8 v( \$ T
  1388. Set_Palette_Color;设置调色板数据
    : u1 u) n  P) O
  1389. BIT PPU_STATUS9 ~! L; d: |, C9 n! e) V) q: [
  1390. LDA #$3F
    ) f- }% x; u/ _, s
  1391. STA PPU_ADDRESS, C/ l6 K0 ]4 g
  1392. LDA #$00
      W" P, v) m  K6 E$ ~. m# n
  1393. STA PPU_ADDRESS) Q8 a% x! K  L: X
  1394. LDX #$00
    # Q1 v, T% U6 B5 E9 G
  1395. Set_Palette_Color_Write0 _  l- N6 [5 s1 ~' C0 \* I9 U9 L
  1396. LDA Palette_Data,X; u$ @% Z6 g- C& X. ~$ F
  1397. STA PPU_DATA: Y+ A/ S  j1 d" d
  1398. INX
    ) D, k' C! @8 {
  1399. CPX #$20, T! L1 B1 c  R  r/ d
  1400. BCC Set_Palette_Color_Write% j1 P% Y: @: J5 k* j- }
  1401. RTS+ t! v4 |. Q7 V3 p: g* C2 q2 A3 M

  1402. 9 h& H" }# i, z6 ^; M) c
  1403. ;==============================2 _9 c( Y: d! K( h: s
  1404. Init_Palette_Addr;初始化调色板数据: v% y7 @" r( B# w! |! A
  1405. LDX #$00! \' o( y; \. s, r) I# R
  1406. Init_Palette_Addr_Write& j4 t9 N" u4 X) q" p
  1407. LDA Palette_Data,X
    # x/ h2 O, |3 U3 o# E) S
  1408. STA Palette_Addr,X
    - J4 {7 h, L9 ?' @% q4 X
  1409. INX+ O* l' [) {7 W6 u: `: f! \- K
  1410. CPX #$20% i5 S4 r. y; J7 P  O7 I
  1411. BCC Init_Palette_Addr_Write$ p) e3 Q- y/ i5 P
  1412. RTS- e3 B/ D$ v% p/ _, c* {

  1413. 7 r9 r* T! @& `* \+ y  X/ X' |
  1414. ;==============================/ [/ I6 I5 d* ?- ^
  1415. Update_Palette_Color;更新调色板颜色
    7 M+ N6 J$ d, b4 [( q9 i' E
  1416. LDA <Palette_Update_Flag8 S6 x+ g- ^7 `( E/ r
  1417. BEQ Update_Palette_Color_End
    $ l5 }) s5 M% c% _" r+ ^
  1418. LDA #$3F
    : |' R8 |# I' r0 I5 k2 t4 G
  1419. STA PPU_ADDRESS
    4 v& p" N+ \+ y: d2 c* m+ U0 S
  1420. LDA #$0C
    0 v: b0 G+ p/ m% a1 `: ?
  1421. STA PPU_ADDRESS9 X: L0 e% k+ F
  1422. LDX #$0C
    ! ~) M  @0 p6 x" X0 J) I: C
  1423. Update_Palette_Color_Write
    + F2 {7 {* m9 ^' C/ Y
  1424. LDA Palette_Addr,X
    . \' O4 Y( V* \6 h; s  Y
  1425. STA PPU_DATA
    . b% v0 r, V% u7 B8 R8 l4 p- p
  1426. INX
    + f( u7 S7 K3 D# L6 i5 a1 ~; J
  1427. CPX #$14
    ! _" q1 x  I/ {* J$ N
  1428. BCC Update_Palette_Color_Write+ R; J) h5 T& [; c4 t* C
  1429. LDA #$00
    ; ~0 S' u- ]1 R: J" s! W
  1430. STA <Palette_Update_Flag3 c; }7 _" F. b' }5 b8 q
  1431. Update_Palette_Color_End& h0 K0 }3 Y" \1 [+ P
  1432. RTS- I+ U. s6 y- \- P- q5 s' K$ z

  1433. . G- j$ G+ j2 ~2 L
  1434. - Q+ P; U# l: Z6 L% F
  1435. Update_Sprite_Palette_Data- m1 N4 B% v. {1 y. S
  1436. .DB $21. c, d+ x8 l9 Q: E) Y! f/ b) O9 C9 x/ g* h
  1437. .DB $21
    % @6 _" W4 ]# ]' _. c  c
  1438. .DB $11
    % V3 ?. K6 Z4 {" x, S( l% [
  1439. .DB $01
    + I1 n0 z0 u" Z" p+ u) o7 O; w+ [9 |
  1440. .DB $01
    * {6 B4 J9 t4 P' a
  1441. .DB $11
    7 ^$ I% \7 X7 k9 U3 _/ r5 ~) K) p, W
  1442. .DB $21
    ) A4 H% o  ]" U& ~2 V7 H' y
  1443. .DB $21
    # }* g" q1 [# i* }. @  _
  1444. .DB $11
    ) v/ s7 C0 |/ i" l# Z& ?7 K0 L* R
  1445. .DB $01% r% ]( @3 a# k' j
  1446. .DB $11
    5 ]0 a/ N( z! y* z
  1447. .DB $21
    5 {8 a/ l  Z" ^" [4 K
  1448. .DB $21
    # ]) w( E2 t3 H* a8 Y: f$ r* l* x
  1449. .DB $11! P. S8 Q+ h% [1 z, C3 \) S/ [5 V
  1450. .DB $016 a* s, `1 b, R' W; T$ c; h2 Y' Z
  1451. .DB $112 O+ Y* ~7 _, L  c3 z
  1452. ;==============================
    1 f! V+ W8 v; H5 }
  1453. Update_Palette_Data;更新调色板数据: A" X: W7 J* d# L  ?6 }) T
  1454. LDA Nmi_Time_Count
    * D& k; h( o6 t! [" Y+ _* Q
  1455. AND #$08
    - }  Z0 R4 J  {% J* T2 W& o
  1456. CMP #$084 I% R; T5 k) p4 Q8 I- o1 m8 L
  1457. BNE Update_Bkg_Palette_Data
    7 Y2 w, K/ T9 b# n7 D
  1458. ( q8 b- ^2 a4 H% i" Z
  1459. Update_Sprite_Palette_Data_Set" e1 D+ z) B# q
  1460. LDA Nmi_Time_Count% M& }( i) N* ]$ V2 L5 \
  1461. LSR A
    0 ~" G- N! {0 v4 ^' o+ x# s: U* U
  1462. LSR A
      ~1 a& _& n% }- S
  1463. LSR A1 O$ b2 @5 r( I  C
  1464. LSR A( n: `: l; ]7 c2 T, Z$ Y; u$ X' B- F
  1465. AND #$0F
    2 f/ l1 f" z6 [
  1466. TAX( ^: ?0 F1 g5 b& I0 ?3 q
  1467. LDA Update_Sprite_Palette_Data,X- k% s$ f; X0 P3 |1 g
  1468. STA Sprite_Palette_Update_Addr: `- T6 y% ?# ?
  1469. LDA #$01
    : w' @3 I$ f. g6 K
  1470. STA <Palette_Update_Flag3 V* ?2 y6 |7 u/ @$ L. g* X
  1471. / s. U* Z3 s/ Z0 ]* ^2 q
  1472. Update_Bkg_Palette_Data
    " |) O, i* m1 _
  1473. LDA <Text_Disable_Flag: O6 m9 ^/ n9 X
  1474. AND #TEXT_DISABLE_RAM; l, k( [4 X! t9 ?
  1475. BNE Update_Palette_Data_End7 ]$ R( o7 D2 ~% L4 }: v9 w# D
  1476. LDA <Music_Stop_State
    - n, Z5 e) x+ T) ]5 Z
  1477. BNE Update_Palette_Data_End
    3 K2 f, o3 l6 _( g

  1478. 3 @  ]- F+ y1 \1 ^$ v
  1479. Update_Palette_Data_Check( I# m! j5 ?7 f$ |/ _
  1480. LDA Palette_Wait_Cnt4 @/ k( @! y0 j2 E$ Y. ~- S. t
  1481. BPL Update_Palette_Data_Check_Over
    6 g! [9 b/ D  y6 c/ C% J
  1482. LDA #PALETTE_UPDATE_INTERVAL+ d8 W: |) @2 ~( v
  1483. STA Palette_Wait_Cnt
    2 e( m$ y6 a1 ~: F& p
  1484. Update_Palette_Data_Check_Over& }' p% _- D1 r3 P+ B! V
  1485. DEC Palette_Wait_Cnt: \; H/ y* }9 w; E, b* O
  1486. BNE Update_Palette_Data_End
    0 A- n+ f& M9 o( h5 S3 I

  1487. 8 b6 i. \( _3 V9 s9 A1 |7 `! Y
  1488. LDA <Text_Disable_Flag
    1 R3 K# j( f2 x7 R
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME8 f5 j; N# p: I/ z. h+ i" _7 C
  1490. STA Text_Disable_Flag
    0 g' \7 v" Y5 m; n- w
  1491. INC Palette_Update_Flag0 j& q3 E+ U* K/ {1 `& K

  1492. - u" w) Q! g! k- s6 e9 @. H
  1493. LDA #PALETTE_UPDATE_INTERVAL" [5 K) Z, m, J0 S( m0 z8 Y  G
  1494. STA Palette_Wait_Cnt
    . U4 `* r% b7 R: C8 h2 ]

  1495. # o& L1 f* ]2 @$ z; C8 r& x, k
  1496. LDA Bkg_Palette_Update_Addr" [; n  Y9 q' E
  1497. CMP #PALETTE_UPDATE_MAX4 j' X& Z/ |. ~# k7 \3 N
  1498. BNE Update_Bkg_Palette_Data_Set% \" @5 c' }9 j2 y
  1499. LDA #PALETTE_UPDATE_MIN - 1
    ' V/ y- w( ~) a' |6 h- w; w
  1500. STA Bkg_Palette_Update_Addr
    $ A! F4 {9 n4 ^1 ?
  1501. Update_Bkg_Palette_Data_Set
    & V8 B- q" L, [6 F% s$ Y# J0 |
  1502. INC Bkg_Palette_Update_Addr9 S  S# I. a1 G! e
  1503. 7 J. @8 P& ~8 ^3 m6 k+ O
  1504. Update_Palette_Data_End
    ( X/ j* ^, I% c0 a: Y2 U; {8 C
  1505. RTS$ G& ~, ?+ V* \  s& x4 g+ E
  1506. 9 r% {6 T1 L2 E' {  r# b3 A
  1507. ;==============================
    / ]: s% A1 s" z
  1508. Show_Music_Text;显示静态文本
    ; t+ K1 g1 \4 }9 X0 v* ]# ^
  1509. LDX #$00
    # X, q; i( `! U) n
  1510. Show_Music_Text_Set
    , c# X" D1 J+ }" x- R
  1511. LDA Static_Text_Data,X) z4 A+ c, F4 D" {
  1512. STA <Data_L
    % d- }4 i6 ]# h% p8 j5 r
  1513. INX/ v5 u) \& O1 s0 s# p5 N
  1514. LDA Static_Text_Data,X
    0 `. i7 j! b5 r$ m7 H) I
  1515. STA <Data_H& X6 a0 D" t& i; ?9 j/ E
  1516. INX
    6 k3 M8 v& f8 j2 o% W
  1517. LDY #$00
    - h* w; G6 W$ z# ~
  1518. LDA [Data_L],Y
    5 f; f- d$ Z* @; a, W" x. l
  1519. STA <Data_Cnt4 W3 M" }* |) x* ~+ w2 u1 ~
  1520. DEX
    ; @# k6 {/ \+ n9 j. r7 l& w" j- _
  1521. DEX
    8 W5 `2 N( \; s/ f0 s
  1522. LDA Static_Text_Pos,X
    $ ^) w- [' V- c( x- S. i
  1523. STA PPU_ADDRESS0 i6 l* a' S4 U; A: x. _
  1524. INX5 J9 a4 }+ i8 N% q; l+ a# |
  1525. LDA #$20
    % a& z/ O$ d6 Z
  1526. SEC
    ; `4 S8 R5 }4 Y3 }
  1527. SBC <Data_Cnt
    . F4 e" M* S! _* c
  1528. LSR A; Q# ]' f: g# S9 `( m# }, r& X# n
  1529. STA <Data_Buf
    0 h% b) s7 A1 i. T+ ^# g: m& k
  1530. LDA Static_Text_Pos,X/ S" k* h8 O! ?% k
  1531. AND #$E0& I0 U5 N7 p; W: J+ ^
  1532. CLC( @( c6 j7 W& X7 P8 h
  1533. ADC <Data_Buf0 ?, P  f# U' @8 g6 R! C8 ?
  1534. STA PPU_ADDRESS
    ) D: A/ i7 t; Z" c  n
  1535. INX7 K% a  K/ A1 @+ R" M- O
  1536. Show_Music_Text_Set_Write0 V2 k* C  B: g5 g! [9 i: J5 j
  1537. INY
    9 c' z6 F. F$ w- g5 w2 G
  1538. LDA [Data_L],Y/ Z! r( {% o1 `- Y
  1539. STA PPU_DATA) n3 g! ]* p3 B" l8 q, x
  1540. DEC <Data_Cnt
    1 u3 Q  ^: f8 h$ }; Z# |! Y7 j# B
  1541. BNE Show_Music_Text_Set_Write, o9 M3 v9 X) K1 @1 c2 J
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos+ z+ e1 q9 x' A5 S3 p5 k
  1543. BCC Show_Music_Text_Set/ R3 f  ]) k$ s; d! _0 o6 ]
  1544. RTS
    # I  D: g" L$ N: e$ D6 p6 y4 A4 [
  1545. 6 Z5 V, c* {2 H1 U% B
  1546. ;==============================6 e( ~! x2 [  m0 t" C+ _7 x
  1547. .IF Track_Name_Pos;显示曲目信息
    & {" O1 P/ i: x% N1 J
  1548. . u4 w1 [* o) H: C
  1549. Clear_Track_Info
    # n7 L' Q" n4 Z5 {+ M% |
  1550. PHA* u8 r* l: r+ B6 |/ t
  1551. LDX <Music_Item_Cur
    7 K1 ~4 v+ I3 ~2 S9 v( ]2 u) K) D
  1552. LDA Track_Name_Addr_Flag,X. S9 h' O  S+ s* X7 t) o$ D6 U
  1553. BEQ Clear_Track_Info_End_Ex
    * r7 a3 k- i% {6 F/ ?5 i4 {
  1554. PLA
    ' E2 n! c0 l% W3 I  Z) I
  1555. 3 O0 k% j8 g7 l- {+ k  N$ V
  1556. LDX PPU_Cur
    + s& {3 C# A' T, @; x
  1557. PHA
    % W- a) G/ o6 Q% E6 `$ j% S9 ^
  1558. LDA #PPU_MODE_CNT_CLEAR
    . c; N1 D+ L  A- N; y# m
  1559. STA PPU_Addr,X# _% e  u9 l  R& l) k: x, z
  1560. INX' S6 x) I6 A0 f8 f- y  o; m6 L
  1561. PLA
    0 p" F" g2 P! i
  1562. JSR Show_Get_Track_Name_Center_Pos, `! C; T4 x5 |: ^  d$ j; h
  1563. STX PPU_Cur' k! I+ w0 l  t7 S. U3 M: K
  1564. Clear_Track_Info_End
    ) h# p+ W# f4 `8 P0 E
  1565. RTS
    2 L; G* G3 ]- d- S( ?' x% D6 w
  1566. Clear_Track_Info_End_Ex
    ; n' Q2 `7 Q  K4 Y. `8 A
  1567. PLA" i" x  `6 w5 d6 i4 F# F
  1568. RTS: v. J: j0 [. V% Z8 a7 c" N
  1569. : p: N! F  i" c# _% _# y# X7 \
  1570. Write_Track_Info
    , X: B. ~' S, ?, T( S: m0 n' r
  1571. PHA* ]! l  G" J. K' T
  1572. LDX <Music_Item_Cur* z$ \! t8 P" ~- d( b4 Z
  1573. LDA Track_Name_Addr_Flag,X
    % P  G) F  X+ n% E, B# `
  1574. BEQ Write_Track_Info_End_Ex6 G* X$ h5 i. ^( E$ O
  1575. PLA
    - [9 x# T  q' m

  1576. 1 y- g4 b. |! `& {
  1577. PHA! [- U8 R! k7 N7 E; E' D
  1578. LDX PPU_Cur
    , k9 X+ \+ W; B/ j6 d: y
  1579. LDA #PPU_MODE_CNT_LINE
    + o! G2 D& [- `( X# M
  1580. STA PPU_Addr,X) M* m2 |0 w$ V1 p2 u* [
  1581. INX$ ~+ y- k; [4 j
  1582. PLA
    8 r/ l0 ?5 C6 }& H' y' W& \
  1583. JSR Show_Get_Track_Name_Center_Pos
    : O& n8 c; q0 Y1 g# B" @0 j+ ]
  1584. Write_Track_Info_Data# u1 l  `4 n: F1 _
  1585. INY: X( }& |3 `7 L+ P& l+ d) D( U+ z# r: |
  1586. LDA [Data_L],Y* w$ y+ T' a, m0 \# V! z
  1587. STA PPU_Addr,X
    1 V/ r+ d$ f7 J8 |8 h( v* K* p% b
  1588. INX
    4 R0 m: _* A! _4 G/ u/ F( C- s! G
  1589. DEC <Data_Cnt6 n, Z) u9 ]& j) x2 @, h/ d
  1590. BNE Write_Track_Info_Data
    5 g" i6 r& `! p2 @& B& a* `
  1591. STX PPU_Cur, H; R$ h* X- @/ g4 I0 i/ e! ^
  1592. Write_Track_Info_End6 n4 e, l! l: T; T$ w
  1593. RTS7 ~0 n# f+ }$ x. s* q0 \
  1594. Write_Track_Info_End_Ex8 W' o& t6 @. ?% N) o% ^/ L9 s2 w2 {
  1595. PLA2 M' p" ^- Y+ s$ N
  1596. RTS
    6 x; u+ ~. e. ?9 o

  1597. ( L3 X% C2 f5 n. m
  1598. Show_Track_Info
    ' V# W! M4 u' E7 E/ i
  1599. Show_Track_Info_Clear
    2 ]! F$ G5 ~6 ^' @% G
  1600. LDA <Music_Last
    * f6 D- v3 }7 j# ?% p

  1601. ; i2 R* o3 O, {( x
  1602. JSR Clear_Track_Info  @; H8 X# o+ K; y
  1603. 9 a  f1 `3 \5 {9 ~8 \# V
  1604. LDX <Music_Item_Cur! E3 q( Q& P6 \. i7 W, x
  1605. LDA <Music_Cur,X
    / a! S. H8 ]; U
  1606. JSR Write_Track_Info1 P" i, S9 g) g4 J
  1607. RTS
    / S5 H$ V5 O# d. Z
  1608. * q, Q( S& l+ j7 _( \# |! h
  1609. ;==============================/ ^" x4 W: T" B7 h
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置  P. U2 _+ z5 ~! B8 a" o/ e
  1611. * [! t5 z- d* q* Z6 |* D  H
  1612. ;取出集合名索引
    ; w( I% r" q$ B1 e( Z$ @' y- j
  1613. PHA0 I- x2 n" c- r

  1614. . W  n, S+ j2 |5 {$ x& F+ F7 |
  1615. LDA <Music_Item_Cur2 Z, i; C- k0 m) k* q
  1616. ASL A: {% s+ B) I8 w# M
  1617. TAY, O% a0 c! K0 W+ t& e
  1618. LDA Track_Name_Addr_Port,Y8 I$ m" C) E7 T8 \
  1619. PHA8 }3 [; s1 L8 t& w! [! v* x# o
  1620. INY
    % D/ H! D2 B! ~+ J
  1621. LDA Track_Name_Addr_Port,Y7 z3 c9 t6 g5 T5 I
  1622. STA <Data_H
    6 `: u0 `4 _8 S
  1623. PLA' V  A) }1 O- c4 C4 t1 ?  {
  1624. STA <Data_L
    * j2 D7 J1 Y- \( c& h; l: _; c( I! x; q

  1625. ) R/ [  O2 P& B1 \, k6 U( v" M
  1626. PLA% r8 ]3 G) V; E* L& ]* G
  1627. 3 T% [$ ^6 L: W% @- `* f
  1628. ASL A
    % |+ }' v; a7 F* R4 ]0 ?$ C
  1629. TAY, I6 a& b* ?. ^5 ^4 Y$ \1 }2 U; q# ~
  1630. LDA [Data_L],Y
    . b- _6 d$ a& y" S3 `) P! m
  1631. PHA' W2 Z- I9 _! G+ Q! u; N3 ^
  1632. INY
    7 i9 z7 V2 l9 f) K1 r; u$ \
  1633. LDA [Data_L],Y
    2 b0 P* A: J7 v  @5 }
  1634. STA Data_H6 Q: o! z" {6 N: C* I0 O8 c! F
  1635. PLA' |9 q9 D$ W5 g; W
  1636. STA Data_L
    ) R5 q: O  G9 ^: O8 A

  1637. , H; O- \! g7 R' w
  1638. LDY #$00# T& [$ A% C6 O% x! e2 i
  1639. LDA [Data_L],Y
    8 o2 \3 e" l: P2 i
  1640. STA <Data_Cnt
    $ g3 J2 p# N+ E4 g
  1641. LDA #$20$ }0 n7 p( b: W
  1642. SEC
    ) V% p6 j0 V$ N; S, M
  1643. SBC <Data_Cnt
    6 ~: ?+ J% R( m7 S0 A; \
  1644. LSR A. K" O5 J& H, I4 y9 r% `" E; F
  1645. STA <Data_Buf& n9 i* E" z3 F% E
  1646. LDA #HIGH(Track_Name_Pos)' p( v, X  B: f2 Y) f
  1647. STA PPU_Addr,X2 }0 y- G) K+ d/ i  V2 p2 o0 I: v
  1648. INX" z' I0 Q4 `1 d8 {; @) T
  1649. LDA #LOW(Track_Name_Pos)
    / T( x4 k( M0 W& ~
  1650. AND #$E0; K1 o1 t0 Q: g6 [
  1651. CLC
    # v: y5 l, T* i8 p$ m" G* I5 K0 |( _8 u1 h
  1652. ADC <Data_Buf2 Z& Z- z$ q+ a% y' j
  1653. STA PPU_Addr,X# `1 z  v+ Z8 p1 V! d8 O# W8 s; V6 x
  1654. INX
    ) a# o$ m. r( v% `7 G: K
  1655. LDA <Data_Cnt
    . M& d# l+ v0 q* B# ]& X4 q
  1656. STA PPU_Addr,X: ?' Z* S4 ^" V( N" x$ `
  1657. INX, Y4 _  r, P/ B& a& {6 @
  1658. Show_Get_Pos_Center_End
    - U+ S$ i6 Q. a* B; M
  1659. RTS! g* V" K7 W0 p! v  s  A. u
  1660. .ENDIF
    / I9 z& l# b7 q' a
  1661. 4 ?) J, N: O& f' S
  1662. ;==============================8 J1 H. P( F4 G) {& U- Q
  1663. ;音乐端口清除
      j' }7 C: K+ f7 h
  1664. Sound_Data_Clear3 |" U+ l/ w2 Z5 b1 w
  1665. JSR Sound_Port_Clear- @4 _% i4 G8 q& q) Y
  1666. JSR Sound_Ram_Clear
    6 P0 v% p! E9 ~) o/ h
  1667. RTS$ D6 K. B+ \3 k+ ]( k4 ~9 m: I
  1668. ; ~2 E  T0 u9 k; M
  1669. ;==============================
    : L" N) U; c% h2 T
  1670. ;音乐端口清除
    6 u0 v" t0 E0 j# V7 z, ^; n
  1671. Sound_Port_Clear
    ! \- ]  h( l/ W' ?% g" ^. J2 N
  1672. LDA #$00
    2 V. L5 U8 e% j2 z
  1673. STA APU_STATUS2 a" v+ t% Y$ y- t
  1674. LDX #$00+ ?* I$ J6 f3 y) ~
  1675. Sound_Port_Clear_Write1 D/ S# F( j9 |
  1676. STA $4000,X
    , W9 W( n0 B, f$ [3 \% |
  1677. INX
    1 Y1 C$ z6 f' j! T' [" b5 U
  1678. CPX #$14
    0 W3 w% R. o& e5 O( |0 Q6 t
  1679. BCC Sound_Port_Clear_Write. [% i+ A4 y0 ^, ~! w+ |
  1680. RTS
    * I. k# l( r5 N
  1681. ' U: S5 F& p  J# N" T$ W  g1 j
  1682. ;==============================
    # P0 d7 ?' {7 M
  1683. Sound_Ram_Clear;RAM清除1 R/ }5 B3 z' Z6 Q
  1684. LDX #$00
    * L8 h- j6 [- Q% G$ q$ j& E4 b
  1685. LDA #$00" Q% ~: i- ~: s1 Q! q
  1686. Sound_Ram_Clear_1
    - u! y+ e/ v6 s1 V+ ~
  1687. STA Sound_Ram_Addr_1,X
      b* J; l. @- e
  1688. INX
    8 }5 x3 F) W) u% q& e4 R* G
  1689. CPX #Sound_Ram_Addr_1_Size
    . p, N$ [9 S: @0 c1 j$ i: L% `
  1690. BNE Sound_Ram_Clear_1
    / m5 E, h' R- p' q2 h2 f/ |* ^7 e
  1691. LDX #$00
    3 V% p: \' G4 ^# {% I
  1692. Sound_Ram_Clear_2
    : u3 S- h0 P; j7 ~' }2 e4 {+ o
  1693. STA Sound_Ram_Addr_2,X
    ) J9 {: c: D0 d+ }; K* v! S; U
  1694. INX" {) Z2 _$ w; W
  1695. CPX #Sound_Ram_Addr_2_Size3 H! n+ A, [+ x: u0 Z
  1696. BNE Sound_Ram_Clear_2
    " T. w$ I! {8 I' L
  1697. LDX #$006 n. X' G+ O! n, z( l& I
  1698. Sound_Ram_Clear_37 e( s! ]: m/ L5 x; ~5 R# Q+ l
  1699. STA Sound_Ram_Addr_3,X/ B9 w9 n  v0 |( A  s2 Z
  1700. INX
    * U. ?8 e  U, i% R
  1701. CPX #Sound_Ram_Addr_3_Size7 T3 v6 L0 \+ N7 b
  1702. BNE Sound_Ram_Clear_35 o; R& z' ?1 B# T& }% b3 A0 m! c1 V
  1703. LDX #$00
    % b; I; Y- F" ]7 `
  1704. Sound_Ram_Clear_4% O/ E) ^% \: r6 N  c0 {
  1705. STA Sound_Ram_Addr_4,X% b7 C, }! ?0 N) m2 r4 C$ ~
  1706. INX
    4 D$ J' k- ?" y* o
  1707. CPX #Sound_Ram_Addr_4_Size
      g2 c0 N1 u! b
  1708. BNE Sound_Ram_Clear_42 Z+ c5 g* Z' i, \$ T5 y
  1709. Sound_Ram_Clear_5
    3 r9 }; u/ W: s
  1710. STA Sound_Ram_Addr_5,X) x' m, h& Q  t; E. W" V( Z
  1711. INX
    & M" L4 ^5 _1 a( e. Z5 e' D# g9 l
  1712. CPX #Sound_Ram_Addr_5_Size, ^3 |% z. T3 {" r5 u! K; u! W4 b
  1713. BNE Sound_Ram_Clear_50 v6 o5 \2 J+ u, s/ J0 _
  1714. RTS
    4 y: S3 {: N( Y8 z( N7 B6 S0 C9 o
  1715. # h' u5 F8 B% A5 F/ R
  1716. Get_Music_Collection_Name8 q: W5 d  t4 `2 S8 h
  1717. PHA
    . I7 i$ s+ O! H
  1718. LDA <Music_Item_Cur4 e0 U! S7 K) n: }$ k4 J6 J* Q& j
  1719. ASL A
    # N" F1 f7 G, Q9 {4 I, s
  1720. TAY
    9 j7 A% r% A, k9 n2 f& R
  1721. LDA Music_Collection_Name,Y0 y! t7 Z1 ~) J; e/ x% Y5 ?
  1722. STA <Data_L+ Q7 a. c/ D+ d$ P) \# @% e% W  H2 T2 q
  1723. INY& _" T( s1 q" \3 v8 i- z
  1724. LDA Music_Collection_Name,Y- N8 O* u3 d. s
  1725. STA <Data_H! L/ U8 E1 x6 T$ _7 G3 \4 L8 ^
  1726. PLA
    # h& w3 S3 P$ b$ x
  1727. RTS
    ) h: D+ {# C8 e8 l/ |& n9 X- s  k

  1728. ; `' }, Y# ?9 N! U% j8 u
  1729. Set_Sound_Total1 ]( h  G: \+ }! }. r# F8 W
  1730. LDY <Music_Item_Cur; E; M" @1 d: l, a, [7 U
  1731. LDA Sound_Total_Port,Y
    & X; n  e6 P0 f. w. c. \; v
  1732. SEC
    1 M4 m' s+ O4 O* e$ B8 o# @
  1733. SBC #$01" p  `2 e2 e5 o- O1 J, x1 C
  1734. STA <Music_Total/ _! T2 G$ u! ?
  1735. RTS
    ! O" [6 }* I+ E9 W1 F

  1736. . e+ X1 L8 g+ ]0 h- x
  1737. Get_Sound_Start, S  O7 }& B& K2 M8 }
  1738. LDY <Music_Item_Cur( e( m* z# F: g" G$ p3 C6 V/ u2 E1 y
  1739. LDA Sound_Start_Port,Y
    $ d0 m; A2 N6 j& e) ~8 x# t
  1740. RTS4 x7 Z/ |( p& [$ T- [9 b
  1741. " ^. N  G, e& ~4 z
  1742. Set_Sound_Init_Port+ E" N5 F, I; Z9 f  o
  1743. PHA
    " }" ?# H2 P6 y+ c$ P) q
  1744. LDA #$20- P% R# i$ @' |1 |: V! S
  1745. STA <JSR_Addr_Op7 R& X8 H( c8 u8 r6 g
  1746. LDA <Music_Item_Cur, ?8 M. V) `6 ?1 [& ]; f
  1747. ASL A
    * B4 F0 r' v- y9 r
  1748. TAY
    3 `; F4 R7 o+ a6 Q1 v! g6 x4 C4 c
  1749. LDA Sound_Init_Port,Y
    ! O! v- k- |6 O) M" c* l: _
  1750. STA <JSR_Addr_L. D3 o2 ^7 P8 K: {1 L; b
  1751. INY& B4 [8 O1 W0 t& ^/ k- u4 c
  1752. LDA Sound_Init_Port,Y9 m2 U: y9 ?6 B( ^' p
  1753. STA <JSR_Addr_H
    . o& J( ^; }: k
  1754. LDA #$60
    . U8 p" b, I1 [; R  k
  1755. STA <JSR_Addr_Rts' V& i1 z  g$ b; ^' `5 I& `* }' Y
  1756. PLA" }. q9 T" Q2 N+ ^8 @
  1757. RTS
    0 K+ E4 j" j+ ]: I

  1758. 2 n( @% Q' V1 G0 Y3 w& V( s/ W2 |; ]
  1759. Set_Sound_Play_Port
    + r9 c- ]' D+ U7 m% w, \
  1760. PHA
    ' f/ Z1 v( d' ]3 Z
  1761. LDA #$20
    ( y* I! [4 }1 P4 g0 z/ l$ z/ M
  1762. STA <JSR_Addr_Op, h. x7 @. y3 I1 h4 w" k
  1763. LDA <Music_Item_Cur/ C5 E( |# h1 c5 s. o$ k. d( W" S
  1764. ASL A
    9 n. v& B4 x) t) A. ~
  1765. TAY' Z/ C: u* k7 @9 j: J
  1766. LDA Sound_Play_Port,Y2 F. w% z8 @0 v6 i1 ^
  1767. STA <JSR_Addr_L8 O. N! W1 V8 I" O
  1768. INY' ], T- H! u4 t& W' Z3 \- Q
  1769. LDA Sound_Play_Port,Y
    ' u. X0 U4 ~/ {' f  V' ~
  1770. STA <JSR_Addr_H! B- t  S9 q, Q, U) l1 A. c
  1771. LDA #$60
    8 H/ ?" z. j# `! q# h$ r5 y# K
  1772. STA <JSR_Addr_Rts5 b& J  q/ {# o
  1773. PLA1 u4 [! S3 Z* L0 L9 [; f) n
  1774. RTS
    5 F% {8 ~4 J7 O8 a" K

  1775. 6 ^- l% u5 v: T$ L6 \7 W
  1776. Set_Sound_Reset_Port
    # u! S& R  \# w4 U% k1 J
  1777. PHA
    3 A( B  Z% \; w' W7 \/ N8 `4 D6 H
  1778. LDA #$20' q; l4 V$ i8 O
  1779. STA <JSR_Addr_Op
    ! f% N( T7 g! i: X: [0 ~9 Y
  1780. LDA <Music_Item_Cur
    ( e, ~! C' n0 h; G$ m, M2 d
  1781. ASL A
    0 j8 c% b4 l& `* h( G
  1782. TAY
    9 Y* ^/ \! k) D* @; I8 ]0 i
  1783. LDA Sound_Reset_Port,Y
    7 k( V; |, Q# @& C1 U% L
  1784. STA <JSR_Addr_L6 m' O6 @: F. p
  1785. INY
    ' ?# d9 d6 p6 }2 u
  1786. LDA Sound_Reset_Port,Y
    1 a1 y/ L+ q+ g2 E6 P" Y- L
  1787. STA <JSR_Addr_H' X) p0 s7 U5 c+ ]( X' a
  1788. LDA #$60
    : Q9 @9 n" m' n! z: B+ A; g
  1789. STA <JSR_Addr_Rts. `. E" y" q* ?
  1790. PLA- R4 r. n4 s1 i/ n) c0 Q
  1791. RTS
    / ^) X, e7 r3 _6 T+ A" `
  1792. ' W3 o3 m6 O6 _; H
  1793. ;初始化音乐bank
    # o% d$ A2 y( K4 u
  1794. Init_Sound_Bank
    + d9 V; h, D/ L2 d5 x& I
  1795. LDY <Music_Item_Cur
    & P+ h4 M5 n; u
  1796. LDA Sound_Bank_8000,Y
    , e! b5 M# I( m
  1797. STA <Music_Bank_8000: @3 R6 `+ _& X4 X0 h5 T1 M
  1798. LDY <Music_Item_Cur
    # g/ M. H1 Q& m/ G
  1799. LDA Sound_Bank_A000,Y+ l- V( o8 L6 L$ B4 X  I
  1800. STA <Music_Bank_A000% R) o* v6 K% o2 I/ p; \+ w- J' @
  1801. RTS
    2 x8 g/ S" j& K) o% l& V

  1802. $ X% |9 J/ D; y# a
  1803. ;==================================================
    4 w8 r! {! N& X# t$ E, v0 O
  1804. Sound_State_Reset;音乐状态重置9 T, O, K7 [! G5 o- Q9 u# |# n
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    2 {4 h# _6 A* ]! C( j
  1806. JSR Time_ReSet             ;重置播放时间
    " B& B" X4 r4 }# n# Y) D5 i; U. u
  1807. 7 D! m8 ?/ H% u5 c# z
  1808. LDA #$00/ V% E! V/ y% [1 ^( d9 d, j
  1809. STA <Music_Stop_State
    ' h8 C9 f6 S# ^5 e
  1810. JSR Music_State_Show       ;显示播放状态
    # }" k  ]: ]* z/ z
  1811. : v/ W$ C% ^0 W2 m8 W* a
  1812. .IF Track_Name_Pos
    7 I! ?3 W3 C; P4 A
  1813. JSR Show_Track_Info        ;音乐曲目名显示- i7 i1 b5 Y) c
  1814. .ENDIF7 _0 c6 ^5 _8 ^0 g9 J- z. f  R
  1815. . u3 x' d( {: r$ O/ L' r- ~
  1816. RTS! r* N/ V2 a7 A" q) r3 y7 _

  1817. $ `5 z1 H0 D  B2 f
  1818. ;==================================================) ?5 m4 ]9 S* w# F
  1819. Sound_Init_Proc;音乐初始化处理
    % M: ~1 |% L6 l/ t
  1820. PHA
    " m! p% Q( D! I) F7 I0 p
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址7 _5 H7 p- `+ P- I7 V0 S
  1822. LDA #$00
    + k8 j; ]7 r" `# j" v1 k
  1823. STA <Scroll_H               ;重设水平滚动  r- [; j% K6 I+ U8 z. Q+ J2 n* G
  1824. LDA #$0F
    4 _! c& U# O( b
  1825. STA APU_STATUS
    $ F1 w9 a0 f- S8 r, ~6 E
  1826. PLA9 @  p' `3 B# P9 L
  1827. JSR Sound_Init             ;音乐初始化! j2 O: E4 P! z! _
  1828. JSR Sound_State_Reset      ;重置音乐播放状态6 X: H8 L  z' v/ u# a3 n
  1829. RTS
    - I; O: w* Z5 |, H

  1830. 2 g) N" Y3 v7 w7 \
  1831. ;==================================================3 P3 g1 R- V/ g
  1832. Sound_Play_Proc;音乐播放处理
    . l2 S0 Q  J" ^4 k
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    : x! j) }9 o2 e1 m1 s. w( i
  1834. JSR Sound_Play             ;音乐播放. z$ s. d5 p. W. X) V
  1835. RTS8 I+ c$ l, y: r! D$ m) J
  1836. 7 k- T4 I( q$ C
  1837. ;==================================================
    2 b. N3 h8 \4 J9 |
  1838. Sound_Reset_Proc;音乐重置处理2 A0 L& V) L  J1 I& ]1 N& W
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    7 u# j. M; J. R, I( @
  1840. LDA <JSR_Addr_L
    : O8 I' n0 G. @" v& c
  1841. ORA <JSR_Addr_H
    & `, |& [; D0 ?: y
  1842. BEQ Sound_Reset_Proc_Default
    8 G8 K  n, e/ q  x2 q: L
  1843. JSR Sound_Reset            ;执行音乐重置  B2 A6 H2 [' ~  j
  1844. JMP Sound_Reset_Proc_Init_Sound$ K% I2 T4 e  o2 A

  1845. . M; O( W/ P2 l( a+ V
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    2 h3 q" {: l! z* T% A# W

  1847. 2 w! l) S8 ?4 N8 J
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断6 B) R3 l4 z+ B0 T5 j& `: i( v
  1849. LDA #$00) O5 e% k/ r6 }# m% L8 W
  1850. STA PPU_CTRL- ^1 c0 g) V. P2 R; a8 X

  1851. $ X* q$ I- k2 J4 t' \
  1852. JSR Sound_Data_Clear7 e" [: L9 x8 M% d) }5 L7 d+ Y0 M4 u
  1853. 4 ^) Y7 w; q% F% q
  1854. Sound_Reset_Proc_Default_Wait' y4 @% T! x( k0 l
  1855. LDA PPU_STATUS
    3 U. _! H* A3 |9 L
  1856. BPL Sound_Reset_Proc_Default_Wait
    4 x. g5 W  }* n5 k# g, f

  1857. ; A- m+ W; W9 ~( g; R
  1858. LDA #$00
    3 ?4 x1 k  e0 s8 O. a; o$ M! B
  1859. STA PPU_ADDRESS
    9 h$ N: w( Z2 p% ^4 q* i  R7 V( J# a
  1860. STA PPU_ADDRESS; F/ T: r  k. ~1 V* h4 r& O' a
  1861. STA PPU_SCROLL4 Y6 R1 i" V$ K! G/ y0 j+ K
  1862. STA PPU_SCROLL5 L8 K, R* N4 }, M' h8 }
  1863. % w8 V+ q" B$ g; N  m
  1864. ;恢复PPU控制% e2 N) m- ~) i9 Z4 H6 u( v
  1865. LDA Screen_Ctrl# y- a7 u& _7 _+ E5 i
  1866. STA PPU_CTRL
    ' V* K0 ~, A- K. t3 z
  1867. % h! B8 K9 c; ~/ n$ o) d
  1868. Sound_Reset_Proc_Init_Sound
    / e9 Q" P1 a& w
  1869. LDA <Music_Stop_State
    $ h- o' g" w. U0 `
  1870. BNE Sound_Reset_Proc_End% R$ r0 l. P- U. X7 g3 |3 Q
  1871. LDX <Music_Item_Cur
    9 s' W4 N, D+ h0 ]# F
  1872. LDA <Music_Cur,X
    & I6 [6 i- E  V% S# R- s
  1873. JSR Sound_Init_Proc
    ( Q% {3 g- r2 M2 L6 @4 J" x* i
  1874. Sound_Reset_Proc_End1 @/ _* f, t% R6 J! k
  1875. RTS8 v4 ~$ t' P. y0 F8 k

  1876. . b8 C6 S+ y! a7 `7 x
  1877. ;==================================================
    ) o* K' w1 a4 Z% T0 u  {9 u* x
  1878. Clear_Item_Text;清除页项目
    , e1 O* w' _( |1 O0 L" T0 M; Z
  1879. LDX PPU_Cur: T+ T% A# m$ _1 t6 B& m* `
  1880. LDA #PPU_MODE_CNT_CLEAR
    * \4 ~% ^( z4 y
  1881. STA PPU_Addr,X: U1 C( u8 x* u2 a* R! b. B
  1882. INX
      t6 b; z0 g& y

  1883. " ^4 n8 Q$ F+ I8 s
  1884. LDA <Page_Last
    & B; L+ w9 e5 o" Z; \
  1885. SEC
    * Z* T0 ~# Z- c3 v; d
  1886. SBC <Page_Last_Index+ D# G3 p& H$ o
  1887. ASL A- H  \  ?: p2 k/ o9 g
  1888. 4 o* T6 K! ^+ T, i
  1889. TAY
    5 S/ c  }! D9 a& l9 d
  1890. LDA Item_Pos_Data,Y/ h  ?. P! ^0 T$ |
  1891. PHA3 [9 @/ E2 R& d& w
  1892. INY
      R4 O  Q6 r6 o' D
  1893. LDA Item_Pos_Data,Y
    * C1 |" a" Q* R: s' O( {+ q- O6 X
  1894. STA PPU_Addr,X
    * S. E+ n" N; I* p
  1895. INX% l$ H( ?& s& o) ^+ _
  1896. PLA
    5 y9 O5 J" M& m: T2 I# z2 X8 V
  1897. STA PPU_Addr,X2 a6 D1 z% s, x" A, e% |- ^9 w4 J
  1898. INX  f6 n" E0 a: |, G+ p1 D  N
  1899. 1 G1 \5 V5 m" @- m
  1900. LDA <Page_Last
    * u- s; Z& k$ v7 ^; L
  1901. ASL A9 M7 {  O" t& @9 ~4 D' @
  1902. TAY7 p$ s# E) n& G: q- J
  1903. LDA Music_Collection_Name,Y0 v8 o1 C) R7 I3 ?
  1904. STA <Data_L
    * k2 m7 r6 t2 m1 P9 W& b
  1905. INY
    6 g* Z- ]" K+ X! \  s: X% x9 y
  1906. LDA Music_Collection_Name,Y: l9 L9 W3 x7 f  I8 s
  1907. STA <Data_H
    8 X; \2 S8 R: ~+ ~# u) t

  1908. $ ^0 s" k/ [# l2 x! E# l$ u( r
  1909. LDY #$00
    ) d. H2 r' M5 r0 o. |8 e
  1910. LDA [Data_L],Y) h* y1 u% {; X/ {7 Z
  1911. STA PPU_Addr,X5 t# _  t5 e8 x6 k* U
  1912. INX% q, e9 K& P" @* D$ n, i" r) t
  1913. Clear_Item_Text_End8 [9 q% A! ]5 d) b1 X6 i" @
  1914. STX PPU_Cur1 O' H+ D2 r  }% m) l
  1915. RTS1 n) _5 X9 N0 @1 h. P
  1916. . ?9 E8 d, Y4 [  u8 z
  1917. ;==================================================0 p/ g' Q2 S% `+ K0 [$ {
  1918. Show_Item_Text;显示页项目$ k; b6 k4 Y) i2 ^& G
  1919. LDX PPU_Cur  q) N, G) t0 ]  f/ Z6 v' Y3 g
  1920. LDA #PPU_MODE_CNT_LINE( q& r1 i0 I# V3 ~0 F
  1921. STA PPU_Addr,X3 S. |9 q! E7 T# M
  1922. INX
    * j/ U7 q" g" f4 n
  1923. LDA Page_Cur
    2 b9 Z1 k- X) @* E$ F
  1924. SEC! r4 I  J! [4 F, Z5 W; |$ c
  1925. SBC <Page_Cur_Index
    , _0 N, ?& g' ^
  1926. ASL A
    3 A5 u  _, [/ Y3 u% l
  1927. TAY# z8 W: \! ~# Y" c6 L  H
  1928. LDA Item_Pos_Data,Y* x+ X( l6 x8 o: C) i
  1929. PHA, Y1 ?! i6 V0 A8 I
  1930. INY
    9 ]  u/ D3 j+ `6 Z) n6 u" N; D
  1931. LDA Item_Pos_Data,Y
    # r& X$ E" i' a% o6 c! Q# O
  1932. STA PPU_Addr,X
    3 t1 x' t; D8 _9 j- s% Z
  1933. INX7 ]6 y; Z8 W2 t5 ^% S5 Q" ^7 z
  1934. PLA8 _2 e1 U  F9 B$ _- Y
  1935. STA PPU_Addr,X
    # E* W# j& H, B* x3 U' \- P; `  _; b
  1936. INX
    . O8 k2 H8 D$ N( E

  1937. ! a8 r" U( b4 u" v2 `
  1938. LDA Page_Cur
    1 [2 [+ T: Y9 n6 F
  1939. ASL A: i, \1 D6 }0 l6 F
  1940. TAY1 b; z$ o( h1 M. }# t
  1941. LDA Music_Collection_Name,Y
    - D+ z6 D) l7 K$ U8 a* T1 ~
  1942. STA <Data_L
    - C- o5 q* `0 L! r7 `
  1943. INY
    / b5 ?- ]* ^( ~+ T4 T1 y
  1944. LDA Music_Collection_Name,Y9 J# W6 v4 k& M6 g/ M+ V( ]
  1945. STA <Data_H
    " Y5 O5 h% S# e; z8 c( Z
  1946. 3 z- ]7 t" l# X/ T+ G1 Q
  1947. LDY #$00
    7 W" m+ O% X. r
  1948. LDA [Data_L],Y1 V( Q* {5 H# K9 k% v
  1949. STA PPU_Addr,X
    9 x- K7 n* m3 c
  1950. STA Data_Cnt( p1 b5 c) N. O. a3 @
  1951. INX7 K' ^0 M% E) f5 ^; Z, H5 |
  1952. * O, L6 ~0 G9 j& w9 a
  1953. INY4 Y# p3 t! P' Q- M" W9 P6 a1 r" `
  1954. Show_Item_Text_Write
    - V& P8 t- @& W& u9 D
  1955. LDA [Data_L],Y
    : \/ f0 H6 M2 `3 B* e4 O  G
  1956. STA PPU_Addr,X8 l# \$ `! u1 s+ K
  1957. INY
    ) N" P8 H. I7 Z
  1958. INX6 v( [$ k  H2 U+ j4 K* [2 U1 O& j
  1959. DEC Data_Cnt" I% l( ?, U" V
  1960. BNE Show_Item_Text_Write: @: L- L) k0 U( O$ {+ c& \, j
  1961. " S4 C0 c( o4 U; X1 D7 n- e5 |
  1962. Show_Item_Text_End
    % K& T5 N1 E3 n- G% Q* W
  1963. STX PPU_Cur
    9 U& d$ a2 J1 G) Q  a2 Q- }- o
  1964. RTS
    % U. x$ p# `1 M& K: C1 w- d

  1965. 4 c2 V: U4 ^( G1 z2 C$ Q
  1966. ;==================================================5 E2 M0 t+ u7 }1 [) B
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量4 P$ R' {; ]9 Y' F. k
  1968. STA <Data_Buf4 `2 \' ]  a6 r) z( `6 \% @. I
  1969. LDA #$00* S# H7 t) t' F; d) D
  1970. Get_Page_Index_Calc
      |. p! }; \# V0 A7 ^8 q
  1971. CLC
    8 Z0 h* P" w5 ^  n
  1972. ADC #PAGE_SIZE
    # T- x/ Q3 z4 C! ]1 x3 b
  1973. CMP <Data_Buf6 Q- B$ \0 a$ l% x% [! I  k
  1974. BCC Get_Page_Index_Calc
    % ]4 P+ K1 Y3 A' {4 S5 p$ l
  1975. BEQ Get_Page_Index_Calc_End; ]% @" y; \7 {* Q* \, V
  1976. SEC1 w% T4 }7 @( m/ q3 G/ q2 T! Z
  1977. SBC #PAGE_SIZE- |1 J" t6 l' ^9 ?6 o
  1978. Get_Page_Index_Calc_End- V7 L/ ?9 i6 ], s( ^) k; y& Z
  1979. STA <Data_Buf
    / ]5 c5 V% I( e* e: h( ^7 m
  1980. Get_Page_Index_Cnt
    - a8 Q% M, a. @! T
  1981. LDA #PAGE_SIZE
    " v& c$ i- s. A' ?: C8 D
  1982. STA Data_Cnt
    . R1 ]* Y8 Z: I# p4 u2 |& `4 G

  1983. 7 T; V2 f# p) C0 P! m( B8 L  G6 h& L
  1984. LDA <Data_Buf2 s8 Z  {  Q9 W" h1 C& k% o
  1985. CLC
    3 K2 q$ t! Z1 o$ \" j7 \+ B
  1986. ADC #PAGE_SIZE! {4 _" U7 N# f8 `5 k' s9 m( B
  1987. CMP #ITEM_MAX_SIZE
    " M# p* x/ l) m9 J, p- h' K1 O$ e1 q& {
  1988. BCC Get_Page_Index_Cnt_End
    ; M& j7 [( N% n) i4 `, f+ H; p4 c
  1989. ; L" N* T6 }8 r  u2 i( V3 n
  1990. LDA #ITEM_MAX_SIZE7 @" S; r+ l( `0 {
  1991. SEC
    ) y2 F0 ^2 Q! T" D/ g$ \
  1992. SBC <Data_Buf7 M: p3 ]2 s# n2 F( N- f
  1993. STA <Data_Cnt
    % V3 v/ p9 @# O0 `
  1994. 2 t  e) B$ Q( e8 P
  1995. Get_Page_Index_Cnt_End
    % d' U% G. n3 l7 x
  1996. RTS
    " \0 J! `, D; F& A/ u2 g( |

  1997. & x  l; h( [4 P$ |" V* n0 A
  1998. ;==================================================9 X* m" M$ j& s  V7 O: u1 e; U
  1999. Get_Last_Page_Start_Index
    7 M6 d* \6 ?* @' H
  2000. LDA <Music_Item_Last
    / C6 I# h+ w& w" u' Y
  2001. JSR Get_Page_Start_Index4 g5 r  `* M2 V- f* C9 y
  2002. LDA Data_Buf
    , c0 @! w9 ]! z: R; K6 s
  2003. STA Page_Last  r3 q7 T4 N% d+ q8 t0 Q! h
  2004. STA Page_Last_Index
    + J7 i1 M4 s/ t# ~! X' W9 X) z
  2005. LDA Data_Cnt9 g% E/ w0 R2 \
  2006. STA Page_Last_Cnt& y7 D* E- X9 q8 f- g. W& ]" J. L* I- Y
  2007. RTS
    4 a2 ^* `) z3 ^5 ]% m+ T, ?; x. F

  2008. 4 V( p& K2 b9 z# A* }4 |
  2009. ;==================================================! |% Z+ ^, C2 {5 J
  2010. Get_Cur_Page_Start_Index
    9 ]& G0 y; x7 @) `1 d) u
  2011. LDA <Music_Item_Cur! o2 _3 s* c6 Z" P
  2012. JSR Get_Page_Start_Index
    $ {* m* F, s, {& d
  2013. LDA Data_Buf
    ' m6 e9 T. }$ H
  2014. STA Page_Cur
    & I4 Y" o* A+ s" l. t- i& Z
  2015. STA Page_Cur_Index9 |1 p2 ?" e9 L7 X) o
  2016. LDA Data_Cnt( h( g; p' d* f- m7 `6 l- x4 O7 B
  2017. STA Page_Cur_Cnt
    " e4 \% H5 z/ ~
  2018. RTS
    ' [  I$ r; ?$ }$ Z. L
  2019. 0 h6 F/ A0 N5 r; q  o, `, a
  2020. ;==================================================
    ( W( |( c7 j- @' X' B2 o
  2021. Show_Page_Text;显示页文本
    $ p( ^& k4 E/ H' P2 i
  2022. LDA <Text_Disable_Flag# M8 _2 p) U6 T: i( a- [$ a
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    $ Z( o) [  V$ G9 J3 g
  2024. STA <Text_Disable_Flag& j5 l7 i7 ~4 C# M
  2025. " [: S- k* G; }* `+ M
  2026. JSR Get_Last_Page_Start_Index
    6 q9 j  F$ W4 K' s9 {6 }) ^2 q" \- Q# W
  2027. JSR Get_Cur_Page_Start_Index
    " k: A* d+ A# A4 v& X; |& H8 l

  2028. 4 E$ {8 ~' Z6 {
  2029. Show_Page_Text_Set
    0 `# k8 B2 l  ^

  2030. $ O4 q7 H4 a( d+ r
  2031. Clear_Page_Last_Item;清理上一页
    + ?# ]% s% m) f( G5 U6 G  Z
  2032. LDA Page_Last_Cnt4 X& L1 Z) f3 F( L
  2033. BEQ Clear_Page_Last_Item_End2 `  _& v& L6 ^8 D( K
  2034. JSR Clear_Item_Text3 F0 F: \: \! ?' H! E# P% `5 ^2 T) E
  2035. INC Page_Last, p& k7 ^: M5 }1 q7 [3 C2 q% g
  2036. DEC Page_Last_Cnt* O& n& V( D* Q, o% ]  @3 B* O4 P  L
  2037. Clear_Page_Last_Item_End
    3 ~: K" B) \3 d$ F

  2038.   `  S8 I7 _) U5 G- k
  2039. Show_Page_Cur_Item;显示当前页. ]3 h' M/ ^0 c+ ^( r8 x/ U
  2040. LDA Page_Cur_Cnt: X" o& U1 R7 \: W/ C
  2041. BEQ Show_Page_Cur_Item_End; \& `& L- ~% |: \) @, l4 A
  2042. JSR Show_Item_Text1 r& n' z* g8 I7 _
  2043. INC Page_Cur
    4 `% ]1 ?7 M! [8 `2 C* s( E. }
  2044. DEC Page_Cur_Cnt
    2 u1 ]$ H" g' p
  2045. Show_Page_Cur_Item_End
    " y% s, s6 N4 y$ H- y9 L% T0 C

  2046. ) y% p0 _5 x  z$ F0 w* g
  2047. INC <Time_Wait_Cnt
    2 Q2 |) x# f8 i/ u# u' F
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    # |+ ?" T7 S+ Z- `. u
  2049. LDA <Time_Wait_Cnt
    ( P& u6 \0 d7 i% m7 o3 r8 d
  2050. BNE Show_Page_Text_Set_Wait
    , B2 m" V) X& H7 |# A7 J

  2051. ( U4 l" K. c* I/ @
  2052. LDA Page_Last_Cnt( |0 Z3 K/ e9 A5 m/ l- Y& [. ?/ x: X% A" K
  2053. ORA Page_Cur_Cnt
    ' o9 Y5 a: g" E$ r  _
  2054. BNE Show_Page_Text_Set
    / G0 P8 a( L+ B6 T! L) n
  2055. LDA <Text_Disable_Flag
    1 R2 T, U& w9 L& ?& c; B
  2056. AND #TEXT_DISABLE_ITEM ^ $FF2 I& {4 R7 Z) a
  2057. STA <Text_Disable_Flag8 g$ c& p  m; f; J$ f: x
  2058. RTS& ]( s6 q8 k5 R* N
  2059. / Z4 V! P+ I& I0 i$ i
  2060. ;==================================================. Z- w5 K# R: C0 A: c  w, g# k
  2061. Last_Item;上一项+ x2 {, h" k0 |/ x3 k6 Y, ]
  2062. JSR Clear_Last_Track_Name
    / D, J( `3 k4 n, \. Y& x) F0 j, T
  2063. JSR Disable_Text_Draw- |, S( F# U/ C4 j: U6 o
  2064. " E& K4 {0 x# e( h  Y- M( Y1 d& s
  2065. LDA <Music_Item_Cur
    / ?. B$ P3 o+ T1 s! T
  2066. STA <Music_Item_Last
    " W. M4 r' u0 v! _/ T

  2067. " C- m/ F6 Z+ p' V$ l
  2068. JSR Get_Last_Page_Start_Index
    : u/ [: I. R) p" y

  2069. 0 {& y( p0 b" m2 v9 V/ F, w$ O7 K; p
  2070. LDA #$004 Y, \# i/ t. @0 b/ ^+ t! L) s2 q
  2071. STA Data_Buf
    & B. c$ z; @1 I9 H
  2072. 5 v( l; U( D% K5 i1 |3 I
  2073. LDA <Page_Last
    5 C) K6 T" X3 }' G+ `- J" Q
  2074. CMP <Music_Item_Cur4 E- m9 }* |' v: X0 L5 Y% a- ^5 p
  2075. BNE Last_Item_Begin
    $ R* }0 Q) O9 I# k4 v. ?) m3 e
  2076. ; T1 r) ]% F2 ~; V* D5 }
  2077. LDA #$012 L, z7 m- A. s/ B# i
  2078. STA Data_Buf/ g) Y) y5 N+ F/ M! K
  2079. Last_Item_Begin
    ' ]7 y0 @+ H" I
  2080. LDA <Music_Item_Cur- N% }4 N* H. @
  2081. BNE Last_Item_Set+ A* c( Z$ s* \
  2082. LDA #ITEM_MAX_INDEX + 1. q& \5 ?0 ]. o: p
  2083. STA <Music_Item_Cur* |6 d0 l/ U( i+ L3 T

  2084. 3 b, }# J9 g# X1 y
  2085. Last_Item_Set
    8 z9 ~( \$ A+ l
  2086. DEC <Music_Item_Cur- l& h& g1 U& \7 E
  2087. LDA <Music_Item_Cur  |% G. |* ?/ y
  2088. JSR Reset_Current_Music) N. m5 V" w: p% X7 l/ ]

  2089. : ]* s9 |( J; u8 |' X* `
  2090. Last_Item_Play
      e; v/ [( t9 J
  2091. LDA Data_Buf
    . D1 j; H. o3 O6 s
  2092. BEQ Last_Item_End
    4 ]: Y1 V1 j2 [2 ]( s0 S+ B* e
  2093. JSR Show_Page_Text- P0 e/ ^; J( l7 v- i; p- a1 s
  2094. Last_Item_End- D$ [2 g+ S0 \" p
  2095. RTS
    0 }  \  l" I! u! B/ T! y) F5 ?
  2096. 3 b+ b  }: I" q
  2097. ;==================================================
    - q( o8 [9 _) n
  2098. Next_Item;下一项( J8 t7 o1 R% R0 C4 h$ U
  2099. JSR Clear_Last_Track_Name" M7 N. ~; U' H: ^2 K
  2100. JSR Disable_Text_Draw
    # t0 q7 W" q2 C0 T
  2101. 6 q0 j8 I9 o1 @# |! t$ s! ~( \
  2102. LDA <Music_Item_Cur8 f. X3 J' \! s5 Z) ^
  2103. STA <Music_Item_Last) [* Z3 v6 ?% \8 }; t; ^5 P0 g  C

  2104. ; |6 V6 F: ], Q; H$ J0 O4 s1 z
  2105. JSR Get_Last_Page_Start_Index
    # w5 ^) E+ b  C; Y0 p

  2106. 3 |4 d, d7 O0 f
  2107. LDA #$00
    ' D/ y/ G9 _6 G& r4 y+ c1 l
  2108. STA Data_Buf0 x# w* h% e: F# D! L
  2109. ! N5 ~5 K" v  D7 n4 V" X1 u
  2110. LDA <Page_Last
    * H4 c8 _1 j, c- k/ I0 p
  2111. CLC$ @% E1 b  V1 s2 f. ?8 E2 l
  2112. ADC <Page_Last_Cnt
    7 s, I) l# p  f9 u) g
  2113. SEC
    % J. y! v' C0 W! f" A
  2114. SBC #$01
    + Q5 ~" i! O% c7 \* |( t
  2115. CMP <Music_Item_Cur
    ! h6 x2 T) e! `" K9 _, _
  2116. BNE Next_Item_Begin; m# Z. k- l6 Z# g$ }
  2117. 0 g1 O% l& L! r; r
  2118. LDA #$01
    . M/ a/ m5 n+ K& J' \; I
  2119. STA Data_Buf- a  x" Y8 \% O8 |' C  N  i) e2 I
  2120. Next_Item_Begin
    . i& Z5 y* p0 h4 U
  2121. LDA <Music_Item_Cur
    . q+ M( m$ E! a" }( X# J
  2122. CMP #ITEM_MAX_INDEX
    % ~7 L( [9 V4 s7 U9 M$ h! v1 Z5 p
  2123. BCC Next_Item_Set
    + _# B% _* [9 _4 m; A/ ~8 M0 |
  2124. LDA #$FF
    % P7 e% l6 J, O" P5 f. `( h. K" N
  2125. STA <Music_Item_Cur
    ( u& T2 }7 i2 I6 `" t
  2126. Next_Item_Set
    0 g' T+ S/ x7 A: x9 [* R0 W4 x
  2127. INC <Music_Item_Cur
    : v. }0 d% A8 c. u1 ^
  2128. LDA <Music_Item_Cur
    ! l$ l0 W, ]4 ~0 u# p4 @- W: f( C+ E
  2129. LDA <Music_Item_Cur
    0 t( S: m1 v, U* w5 a
  2130. JSR Reset_Current_Music
      j! \8 N% |" c* r: @
  2131. Next_Item_Play* x; V  Y1 i/ c; v
  2132. LDA Data_Buf0 V8 H, a1 Z1 f  ]: H- d
  2133. BEQ Next_Item_End% e& d- ?& a+ ?5 G" x! V: F* z3 M+ M
  2134. JSR Show_Page_Text9 O0 c" U. \4 {$ U! l- |
  2135. Next_Item_End1 @5 o0 \7 P6 `; m! q# P
  2136. RTS$ b- D$ }( w% k; G8 ^
  2137. 0 U7 |4 P! i/ f% ^
  2138. ;==================================================) a  r; B( }9 s+ C7 B. ]3 S
  2139. Last_Page;上一页
    * b  p% t6 c( W" D5 h& H" F
  2140. RTS
    ) Z2 \4 P+ j6 ?9 a6 P

  2141. : E2 ?# j+ o: b. Q- o
  2142. ;==================================================& w$ S( k: e- x9 M
  2143. Next_Page;下一页
    " M: J  T) {8 q8 a( P
  2144. LDA #PAGE_MAX_INDEX
    4 s' `4 l4 \8 h5 U7 d: f; L" |
  2145. CMP #$01
    0 q( m$ @& J# [3 O7 Q! M4 H
  2146. BEQ Next_Page_End
    0 [: {% n* R4 j. Z- d
  2147. - o$ y, O* M/ t
  2148. LDA <Music_Item_Cur
    * ~; I! J+ F* V3 x
  2149. STA <Music_Item_Last
    9 d: F4 k' N$ m- ~3 T9 {1 b
  2150. % K( v/ Y: ?% K- w* @2 T) C, z  u7 g
  2151. JSR Get_Last_Page_Start_Index, r! T* {/ \  j( q) ?* h6 ~3 _" l

  2152. 7 |, _) m/ y6 }' X0 Z8 k  ~
  2153. LDA <Page_Last_Index5 J! v  c& N6 Q1 D. G# |
  2154. CMP #PAGE_MAX_INDEX# v2 f9 t6 [3 E  C6 ?  f* G& |
  2155. BCS Next_Page_In_End_Page) y) u6 ^6 I! s1 a+ G' C" T

  2156. # q& E1 f! c1 R7 R9 H) t' I
  2157. Next_Page_Not_End_Page;不是在最后一页
    0 J6 Y( a/ M, k" V' c! x* ?
  2158. LDA <Music_Item_Cur! [% {8 v& H& i9 D/ p% O
  2159. CLC7 _" z2 M$ }6 D. Y$ l. O6 c: ^  C
  2160. ADC #PAGE_SIZE
    5 S+ q7 [  r6 |+ R. |3 p) P' a* P
  2161. CMP #ITEM_MAX_SIZE+ G) N' K/ E  s  Y: M8 X2 S
  2162. BCC Next_Page_Not_End_Page_Less2 X! X* |; G3 V/ G
  2163. LDA <Music_Item_Cur
    + J0 W4 P$ j7 L- w- n1 W! h
  2164. SEC. c7 L& V, n. k9 U; Q
  2165. SBC <Page_Last_Index
    5 _: V: |: o! v9 g
  2166. CLC3 B; L1 a# B/ A  n7 d; S& x
  2167. ADC #PAGE_MAX_INDEX
    0 ~0 I4 K9 G0 q1 C0 a
  2168. CMP #ITEM_MAX_SIZE5 y  p1 m4 U' p* G; Y1 \
  2169. BCC Next_Page_Not_End_Page_Less1 \+ ]$ F3 g& z1 j' M. f: j; ]
  2170. LDA #ITEM_MAX_INDEX
    & \1 [) M& K/ k  n& A
  2171. Next_Page_Not_End_Page_Less, l" y7 E7 h1 x( o9 A
  2172. STA <Music_Item_Cur
    . @; x5 t7 c# t: _" y' l" ?
  2173. JMP Next_Page_Reset
    + m: T. ~( @3 f+ `: l& X
  2174. 7 ?. k* z  A( Z7 d
  2175. Next_Page_In_End_Page;在最后一页
    % x! y1 |0 D0 C; w! `: W0 z
  2176. LDA <Music_Item_Cur  N( Y. }, y, ^6 m+ _0 a
  2177. SEC* m- c/ q8 Z9 X0 ^
  2178. SBC <Page_Last_Index8 B! \! N5 L- e
  2179. STA <Music_Item_Cur
    & J) w% q* ~, T5 y

  2180. # K5 W3 r& j3 O* k( T
  2181. Next_Page_Reset
    % [6 z4 c( K# j" v
  2182. LDA <Music_Item_Cur7 m+ O, p" P  ]2 D
  2183. JSR Reset_Current_Music  d& J* _' k8 Q+ `
  2184. JSR Show_Page_Text
    9 q2 Q+ Q2 U+ Y& G* H
  2185. Next_Page_End# ?6 Y0 o1 J0 _8 h1 |9 S  `$ y
  2186. RTS  N. T; I5 X7 Z# j( O% ~5 p. X

  2187. ; u8 t/ D2 |- ?' V9 i
  2188. ;==================================================* `' }  w; d- [) @5 c& i
  2189. Disable_Text_Draw;禁用音乐条刷新
    $ z6 h; v: \+ y
  2190. LDA <Text_Disable_Flag8 P) `1 @$ ~8 C1 h
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    " ^9 L9 u) ~& m; @' {
  2192. STA <Text_Disable_Flag3 {8 v# S! l& W! @) ^! ~9 A, l# a
  2193. RTS. B  M4 Z# w8 t! g1 j, @5 z4 x

  2194. 7 B9 I( n" c; `! h, {0 L
  2195. ;==================================================6 D" r/ P, f' H1 c- F; L
  2196. Clear_Last_Track_Name;清除上次曲目名3 \5 x5 A5 N8 B$ U* ^, l2 i
  2197. LDX <Music_Item_Cur9 F/ M9 r# \! Q! z* D8 d+ o1 Z3 }) K) K
  2198. LDA <Music_Cur,X
    " c; p; B0 y7 q: R; A8 r* \
  2199. .IF Track_Name_Pos4 S5 l" u8 i8 `8 u) r0 z+ p
  2200. JSR Clear_Track_Info; C5 D% I/ ~/ e9 Y/ x, }; u
  2201. .ENDIF
    ! P1 Z6 ~( x+ W+ ~( P7 k  A! X
  2202. RTS
    # O5 U1 z; k# d2 y- s9 I
  2203. 7 ^  P# W2 R5 X6 w2 Y! M+ R
  2204. ;==================================================
    4 H# ?0 d$ E$ L. d
  2205. Reset_Current_Music;重设当前曲目
    + g6 {2 v7 o3 u

  2206. 2 D4 x9 D1 p7 e+ u" I' B
  2207. ;写入当前总曲目  r% K/ C; ^( x2 M( s9 L
  2208. JSR Set_Sound_Total
    " {. O2 M+ c+ d$ ^6 V# K
  2209. LDX <Music_Item_Cur7 p( t! a/ h0 D  e' r  v9 Z' _

  2210. 1 e& D! D, R9 b4 ]. x
  2211. LDA #$00
    - {, d. U: d1 O" k
  2212. STA <Music_Last. X+ J" W  S9 D! f% r9 b

  2213. $ {4 v* H) V+ a6 G& f3 N
  2214. JSR Sound_Reset_Proc
    4 Q, k& }7 D: \3 t# I
  2215. JSR Music_Show7 f$ s# K- c8 O0 m) D
  2216. RTS
    " a- w7 M; ^6 P1 k

  2217. ' \; e' |' [1 L: @6 d# z
  2218. ;==================================================5 z1 Z1 `  q; p0 f4 G# l" |
  2219. Music_Song_Stop;音乐停止
    ( D# Q. C. N2 _9 l( d( S# D% \
  2220. LDA #$017 C0 A( h4 u9 O5 z4 m" F
  2221. STA <Music_Stop_State
    # ?" K1 ~& `, Q* u
  2222. JSR Music_Bar_ReSet* A! ^% v& X  Q' p, G
  2223. JSR Time_ReSet
    . }* t9 `# q8 }& J& Q& v5 Z% U
  2224. JSR Sound_Data_Clear1 u+ N& p2 q" `0 `2 |% D1 m
  2225. JSR Music_State_Show
    - ]6 R5 |. Q- W2 W3 ~4 }
  2226. RTS
    9 U7 H; f  u; ]' [
  2227. , m6 c  n( n: f" z2 o" M" e
  2228. ;==================================================! M; Z# X( m% B
  2229. Music_Song_Play;音乐播放
    ! C/ V) Y* ?1 [+ v$ d
  2230. LDA #$00
    4 i  v7 Q9 \# K/ Y
  2231. STA <Music_Stop_State
    ) s$ r' a; Y, ]% Q  B
  2232. LDX <Music_Item_Cur
    " C1 G9 e" ]* |) f% a
  2233. LDA <Music_Cur,X
    0 R1 m" b4 G  _( j# f2 A( k1 \! M
  2234. JSR Sound_Init_Proc
    ( w: j3 P, Z3 [# g
  2235. RTS
    7 q+ m4 U2 t  m6 k' Q' C
  2236. ( X: X( f- Q  t& J
  2237. ;==================================================9 p# u' q3 _5 W
  2238. Music_Song_Last_10;上10曲
    5 T8 r3 k7 Y! f& k# W3 _  j
  2239. JSR Clear_Last_Track_Name
    + i/ a( |5 w2 |( {1 z
  2240. JSR Disable_Text_Draw
    + W  v2 T8 S1 g1 [
  2241. LDX <Music_Item_Cur/ `0 I& M6 l9 m/ b( G& C
  2242. JSR Set_Sound_Total
      D, ]  z4 g( ]
  2243. LDA <Music_Cur,X
    ) O& M; q9 f# ~1 {2 M! d
  2244. SEC
    ) _; a0 ]$ n) b6 W+ C4 w$ \
  2245. SBC #10
      I' |5 T6 i! ]0 @
  2246. BCS Music_Song_Last_10_Set
    6 x" p! d4 Q$ K$ _
  2247. LDA #$00
    : b  g9 Q, }+ T! L
  2248. Music_Song_Last_10_Set
    2 v' @+ Q" G  m
  2249. STA <Music_Cur,X
    ( _, b; v; {/ Q" \5 F
  2250. JSR Sound_Reset_Proc+ |, ^7 R& S1 u( D0 b
  2251. JSR Music_Show. e+ V6 K5 d3 T9 g# g
  2252. Music_Song_Last_10_End
    , S4 Y0 j7 P' u
  2253. RTS- M) O0 `( Y7 R2 G
  2254. # m: @* J' T# C- S
  2255. ;==================================================! x3 l/ v% f' [2 R9 [- |
  2256. Music_Song_Next_10;下10曲: \! ]) u! n* k
  2257. JSR Clear_Last_Track_Name
    , s3 j5 M- D% a" [. }
  2258. JSR Disable_Text_Draw
    " u+ S2 A8 ]9 s. ]9 x! d
  2259. LDX <Music_Item_Cur
    9 `1 s  U. Q% I9 [1 K
  2260. JSR Set_Sound_Total
    & U, R3 a) l1 ^: y
  2261. LDA <Music_Cur,X" O$ ^. _. G" x! ~* m; O
  2262. CLC
    $ {$ C' h8 u0 p9 C4 u
  2263. ADC #10# |. b  ^- {  o) m4 b
  2264. CMP Music_Total8 `8 ~4 Z6 {4 [4 r* ?
  2265. BCC Music_Song_Next_10_Set
    . c$ z9 ^* a( l3 k% c% i; u3 O
  2266. LDA Music_Total
    7 \- L1 e7 b9 z4 h; C. a
  2267. Music_Song_Next_10_Set  u1 S" w' X$ w5 d( {' n2 ~
  2268. STA <Music_Cur,X+ Q# E7 G2 g* Z6 h
  2269. JSR Sound_Reset_Proc$ }  C, K: S5 ^" g9 P( J
  2270. JSR Music_Show4 g: y% j( w1 S9 w$ P
  2271. Music_Song_Next_10_End
    3 G) Z1 _1 d( r0 |4 u
  2272. RTS
    $ [: Q% F7 O8 l8 T; U

  2273. 9 e* `% j, `+ `$ L& k
  2274. ;==================================================; f' j' e* V$ O+ P
  2275. Music_Song_Last;上一曲7 v6 [  B2 a4 u
  2276. JSR Clear_Last_Track_Name
    4 B7 G) j3 n! {  X2 _
  2277. JSR Disable_Text_Draw
    # G  a7 I! b1 ~
  2278. LDX <Music_Item_Cur
    6 y! ]' O) R) H+ R- L: |
  2279. JSR Set_Sound_Total
    1 ?; q: x( d1 B& R3 Z9 k
  2280. LDA <Music_Cur,X1 R2 d0 Y3 H# k- a2 Q0 d+ B/ l
  2281. BEQ Music_Song_Last_Set
    / j# U5 q! P) O; c' z; q3 C! w
  2282. DEC <Music_Cur,X4 Z, B/ w9 P" o7 V
  2283. Music_Song_Last_Set( L, e, M3 J) K; j+ a$ m$ V$ l
  2284. JSR Sound_Reset_Proc
    5 U, r$ c3 r: s3 O8 p
  2285. JSR Music_Show7 B$ y- U) c0 X. z# k9 s
  2286. Music_Song_Last_End: a2 Q+ F. i( P1 \5 e
  2287. RTS
    1 V8 F/ L) i+ t* g# u7 K, @

  2288. ' E# W; e' V0 C) d1 Y6 ~! y
  2289. ;==================================================+ d9 u7 o' v& g; v- |$ A" Y' @
  2290. Music_Song_Next;下一曲
    / k7 Y" O/ w" L! u
  2291. JSR Clear_Last_Track_Name
    2 u# d$ N+ q( }2 G% H. p7 k) H1 N6 z
  2292. JSR Disable_Text_Draw) d, S, }6 X3 u& F( L
  2293. LDX <Music_Item_Cur# p: C1 E2 \5 D5 Z- z
  2294. JSR Set_Sound_Total( k& g' \% s6 `4 ^. V# R
  2295. LDA <Music_Cur,X# @0 k6 y9 t# `+ H
  2296. CMP Music_Total# E9 g# n1 o! u! i3 h  z; @( T  Y8 r
  2297. BCS Music_Song_Next_Set  H$ _8 D1 V' Z( ^6 p
  2298. INC <Music_Cur,X9 _! [3 a8 y0 e5 l
  2299. Music_Song_Next_Set
    ) v0 X# j: [. m$ Y
  2300. JSR Sound_Reset_Proc! S' v, A# T7 K6 \* ?: f3 {- F- L8 A
  2301. JSR Music_Show9 R' \0 p/ K" `; }
  2302. Music_Song_Next_End
    6 F, C# L' z% N$ F' Y) b
  2303. RTS
    " `$ h; T5 m. _7 L
  2304. 5 f2 W+ Y* l- V; A
  2305. ;==================================================8 k/ f5 ^" R4 r$ l
  2306. Change_Select_Item;改变当前选择项; a" f5 E0 z+ w
  2307. ;--------------------------------------------------: m' [# E& W: l$ |6 ~6 x/ B
  2308. Change_Select_Stop_Play_Item;停止/播放
    + X4 s4 s- z0 e: ?8 d. O
  2309. LDA <Key_Once( }% u4 ^5 S% \
  2310. CMP #$10
    : }2 ~/ k7 ]( E: p
  2311. BNE Change_Select_Last_Item
    ) E6 F) z9 L# W. L+ f
  2312. LDA <Music_Stop_State# S$ a/ [$ s$ v" D/ Q4 q
  2313. BNE Change_Select_Play
    + M1 G: G2 R; V( d& s. n
  2314. JSR Music_Song_Stop) n* [4 B: ^  M) h
  2315. LDA <Music_Stop_State& ?' k$ y% t/ w" @& R6 y
  2316. RTS
    5 f3 e8 [1 r; N/ v, @
  2317. 4 e  g7 D( E; ~1 L1 i
  2318. Change_Select_Play
      \5 f) L$ ?8 L9 E
  2319. JSR Music_Song_Play
    % M( A# h; H% c/ d+ G: `, l- \
  2320. RTS
    & n; H4 M0 t0 }6 m
  2321. - }. [2 U2 E# L) A/ ~
  2322. ;--------------------------------------------------! d# O' Z0 h0 B  M6 O1 p
  2323. Change_Select_Last_Item;上一个专辑
    # f- Y7 l0 D9 J% E" J* E1 C
  2324. LDA <Text_Disable_Flag3 j1 x" K* x& B- A: O5 h
  2325. AND #TEXT_DISABLE_ITEM8 e3 f" z2 S* m8 @
  2326. BNE Change_Select_Item_End# x, V% K: v+ V- d6 A& H
  2327. LDA <Key_Once0 h- e# g7 U  d+ l* m& R' |
  2328. CMP #$08% z# w; E6 m, W2 l
  2329. BNE Change_Select_Next_Item6 m  O' B, e/ E9 J8 j) B
  2330. JSR Last_Item) M# ^2 z# y4 |, I: F0 L
  2331. ;--------------------------------------------------
    ! K; b  @$ G5 I: [2 T' E" D
  2332. Change_Select_Next_Item;下一个专辑/ y$ K6 g2 r- F7 m2 n  n; D
  2333. LDA <Key_Once' ^2 p( p9 C& q8 g" G
  2334. CMP #$04
      N/ }# S; b- o7 G5 B" N
  2335. BNE Change_Select_Last_10$ _; S1 j1 a* D& T
  2336. JSR Next_Item$ y$ ^, k; y+ d4 f0 \7 z+ e
  2337. LDA <Music_Item_Cur- \6 _  T6 n( f" r; h
  2338. JSR Get_Page_Start_Index, h; I% @& @6 \
  2339. ;--------------------------------------------------. }" @8 z% C( }; P& r
  2340. Change_Select_Last_10;前10曲
    : b( |8 L+ b4 w1 i4 X+ L2 E( C
  2341. LDA <Key_Once  z; `5 }" r1 @3 _3 ^$ p
  2342. CMP #$402 k8 v1 `: Q8 Y2 ~/ l2 R
  2343. BNE Change_Select_Next_10
    . z$ b" |+ R! A
  2344. JSR Music_Song_Last_10
    2 f- c& A, @8 _
  2345. ;--------------------------------------------------' p! y+ i' R+ _7 D' v7 X
  2346. Change_Select_Next_10;后10曲. A) w& U) E7 d& ^) V9 X0 G5 g& F
  2347. LDA <Key_Once
    + y) d% n, N1 x7 \
  2348. CMP #$800 ?2 I: R' R2 X9 _' N% L' }- J
  2349. BNE Change_Select_Last
    * m3 F" s  x- G
  2350. JSR Music_Song_Next_10! ?7 O8 ^. b) j  }2 D1 {, Q
  2351. ;--------------------------------------------------. z+ Q! I  L% w2 l: e
  2352. Change_Select_Last;上一曲1 ?0 I" V' }1 L7 W( d/ T; z
  2353. LDA <Key_Once
    4 w' L+ D+ a1 c" v& ]# Z
  2354. CMP #$024 m8 y# ^- c4 u- N
  2355. BNE Change_Select_Next
    ( h: \6 k+ x& y, M) ^
  2356. JSR Music_Song_Last; N1 X2 E( T; W6 f5 u9 {
  2357. ;--------------------------------------------------
    7 X, e0 R: y( D! Y4 k
  2358. Change_Select_Next;下一曲
    % F8 Y4 x% d$ g2 \$ @8 l
  2359. LDA <Key_Once
    5 I8 y% I% \& F5 Y- [
  2360. CMP #$01
    5 G7 v. T3 H  W" S" x
  2361. BNE Change_Page_Next( w+ O. [* t# o0 J6 U
  2362. JSR Music_Song_Next
    , z9 v& Y! \2 o9 k; {
  2363. ;--------------------------------------------------# |" H3 r5 B9 T! @; l5 {0 w2 l
  2364. Change_Page_Next;下一页
    % y+ x5 r5 N& ?: g4 e6 ?) s2 ?0 K
  2365. LDA <Key_Once
    ; M: \" o: K! X$ |3 K4 M5 M
  2366. CMP #$20
    , i9 m* L$ M9 C4 {* |# ?
  2367. BNE Change_Select_Item_End
    ) s  \. {; }) W
  2368. JSR Next_Page
    * Q& _' ]( X5 m9 J6 I/ D/ v+ X0 b
  2369. ;--------------------------------------------------
    + L! H, F* Q; S2 m9 E
  2370. Change_Select_Item_End" N9 Z& R1 z( x
  2371. RTS
    ) l5 ^/ F: \& B8 E8 ?' ~& ?) s

  2372. 5 O6 N9 c) e9 _" ?
  2373. ;==================================================
    & e! L5 e! s# Q9 G3 C
  2374. Show_Arrow;显示箭头光标; U- x0 S; q9 G; Y! R
  2375. LDA <Music_Item_Cur5 u+ w) N- r/ u) L
  2376. JSR Get_Page_Start_Index& J  a! `2 K6 b6 l5 L
  2377. LDA #$00
    0 s5 `/ a( |- B' I% z
  2378. STA PPU_OAM_ADDR4 V2 F8 N+ P+ x
  2379. LDA <Music_Item_Cur( u) P2 ^" H( N
  2380. SEC+ x. x# j; p2 i$ s1 I6 I& W
  2381. SBC <Data_Buf
    ' x+ p5 P8 T* |' a% ~5 Z
  2382. ASL A
    7 z" y/ {2 d+ C7 o
  2383. ASL A9 x* ?5 }! K+ n4 v  C5 H5 Y
  2384. ASL A
    : I7 P4 T! y9 ?1 a/ Y5 N3 }
  2385. ASL A
    3 l$ q) O0 m& X$ j
  2386. CLC; ~1 p; y2 c" e, p  G
  2387. ADC #ARROW_Y_OFFSET
    - l4 L. W7 v: J& t( h; J( [0 r
  2388. STA OAM_TEMP_ADDR + $00) c* _5 z4 R# M
  2389. ;STA PPU_OAM_DATA6 w+ D4 y! |. t% o
  2390. LDA #$1F  y* S- d; m$ _& ?+ P& g7 r' G
  2391. STA OAM_TEMP_ADDR + $01
    ) w" r0 I3 Q4 p/ ~4 Z! b( w
  2392. ;STA PPU_OAM_DATA- c+ e0 H% U: _8 Z
  2393. LDA #$00
    ; f: X/ X* g+ V9 \* Q9 J' G
  2394. STA OAM_TEMP_ADDR + $02, d( E3 X" {- c- A+ O
  2395. ;STA PPU_OAM_DATA+ R) r2 F0 s) a# m" v5 a
  2396. LDA #ARROW_X_OFFSET- B8 U% @6 m" f6 M+ H- A, ?
  2397. STA OAM_TEMP_ADDR + $03
    8 N3 I5 _. P/ ?/ ~. Z. E
  2398. ;STA PPU_OAM_DATA2 T3 b2 J2 N& |0 U$ D/ Z9 X
  2399. RTS5 R  V  h' i$ _7 r; B# l

  2400. - [0 A: M# y% [6 y
  2401. ;--------------------------------------------------
    ! O7 ~0 E# p1 C6 D
  2402. ;命名表数据; U* O% L; j7 C' }& b
  2403. Palette_Attributes8 b% A: r0 ^+ H  R; ~
  2404. .IF SOUND_BAR_SHOW_ENABLE! B# L1 ?: F- o& V( p% A# \
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    ' @! j( K- n3 J) W5 L* m2 W
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    % D/ P0 |* q( P; N
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75- L+ }' c$ [2 C1 [
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    " E5 \6 t, g: ~- H& d1 \5 K
  2409. .ELSE2 L7 P6 G% c" |
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    / _0 ]4 H0 \4 [( W" m- c
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$555 _) V* `, f% a2 C
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$758 D/ P3 a+ d( t; S: C
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    & K' z, C+ n9 e
  2414. .ENDIF
    7 W, M1 S3 v" {0 k# Q& v) ?
  2415. 5 z+ S5 P" y( i: b
  2416. ;--------------------------------------------------
    9 G* t3 A/ {& S/ n! G
  2417. ;调色板数据
    4 j9 |+ p- H( J9 M; E5 R
  2418. Palette_Data
    ) ]( A7 H  m$ |% z; |' O* j
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    1 B1 o# B! _% J
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F' s3 B/ J% `; n2 h- w

  2421. . J* @& f8 ?, i3 ]7 r0 \  t, S
  2422. ;--------------------------------------------------1 W, r9 x1 ^" Y0 R0 u- a
  2423. Static_Text_Data$ R; j+ O8 y; Y. [4 X7 v
  2424. .WORD Static_Text_Caption_Data2 z8 [. O" o( U6 P6 W
  2425. .WORD Static_Text_Author_Data+ Y: t8 X0 Z4 C. x8 M
  2426. .WORD Static_Text_Date_Data; O7 t) f: H4 ~$ B4 N
  2427. Static_Text_Data_End1 W. B+ Y1 I' ~  N9 m) b* E) u

  2428. ( b) ^; I1 m% a  Q; B/ N3 X- [
  2429. ;--------------------------------------------------
    # k+ X; }$ v5 N/ ]$ [
  2430. Static_Text_Pos  t. N. O# L0 Y, a
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)$ c! _5 Y2 c- J1 u
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    4 `6 u& A/ c/ @& L' U4 v3 y' J
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    * j; t! ]! ?$ n  C/ c9 v4 h/ a
  2434. Static_Text_Pos_End1 ?$ f) c0 l. {& {" t0 Q- v% A5 K
  2435. 0 h! q6 q2 ^! L1 n8 @* I
  2436. ;--------------------------------------------------! Y( f. I! {4 f1 y3 e
  2437. Music_State_Stop
    % D! ~" I' k5 {; ?4 S" v
  2438. .IF SOUND_BAR_SHOW_ENABLE
    ' s: J& e7 M' G# |( |% f
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    & L. `% D% g& J# c3 {5 u* z
  2440. ELSE
    5 [* L; G' \' ?6 I" B- ~* X
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$000 O0 G- W: C) _' c. e" K
  2442. .ENDIF
    2 ]2 Y6 c* E8 J$ |  M3 B
  2443. Music_State_Play- h9 V' }0 @/ b# G! J! r% w* R
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00+ b- W# `! N3 D+ J  M2 N* H# h

  2445. 7 p! P! u8 [' H2 q
  2446. ;--------------------------------------------------3 b# v2 l# B6 l1 h, ]
  2447. Sound_Bar_Text_Data;声音类型文本
    0 u  b( }2 {" @5 T- s, h  N* E! O
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    ( C$ C' M, Y; g: w
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    & S9 L0 s4 a& `) x# q. Y8 ]
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    . {3 g+ m$ W8 o" ?# j# M
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-", B/ I3 m/ q, o
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00% X* Z6 V! t$ \0 r6 f2 a9 m
  2453. + F& b/ C7 c  t8 ^6 D5 L
  2454. .IF Track_Name_Pos3 p# _! E. m0 b* p0 f

  2455. ( a, \6 W. L+ r. ]0 l
  2456. ;--------------------------------------------------
    ( e2 ~  t: \& V4 ?
  2457. Track_Name_Addr_00;曲目名地址索引
    * L; G- F1 P/ t3 G7 _8 J0 V
  2458. .WORD Trackr_00_01
    ; u( j6 H( `7 g6 j/ q& F

  2459. ! y7 K& L! R! L
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    8 f' l# s5 p6 m3 M1 Z, B% ?
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"1 Q" _* a4 B9 t2 ~
  2462. ' v8 i" m0 g" P+ u. B
  2463. ;--------------------------------------------------
    # ~0 U  j2 P& B9 a9 H0 q
  2464. Track_Name_Addr_01;曲目名地址索引* @" w6 S! O: B6 z; [' u
  2465. .WORD Trackr_01_013 P0 O6 p9 f+ u7 v1 J1 ^  ?
  2466. ! J  J" B3 w$ j. V. C/ ?
  2467. ;==================================================
    & E; O6 o# J2 o9 t4 A8 \) f
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"$ x4 }5 e- N# p, _1 K
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"& N# l1 h- ~3 s5 i

  2470. 4 c' e9 F- N; S
  2471. ;==================================================* u4 Q3 R' R: M0 h* N9 {+ v
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引* N8 S: i" P; Q0 Y  X' d2 L
  2473. .WORD Track_Name_Addr_00
    ; m- y1 H6 R4 B: v5 l
  2474. .WORD Track_Name_Addr_01' y3 Y; x% G6 F7 U# h! G. e
  2475. .WORD Track_Name_Addr_011 Q+ X* c) k4 i" L) q
  2476. ) u$ K" @3 c2 ]8 b
  2477. .ENDIF
    * c9 T2 f* d& z- |5 n! X! ^5 F

  2478. * M. g( i2 k) f. \: A
  2479. ;--------------------------------------------------
    9 s5 S; d( w. T0 Q
  2480. Static_Text_Caption_Data;静态文本数据( Q6 E" d6 m! R
  2481. .DB 16( E7 j0 [+ y& a" Y6 w+ C. z+ Q
  2482. .DB "FC MUSIC 12 IN 1"
    + ?/ k7 U8 t1 D0 @! a" l. a
  2483. Static_Text_Author_Data3 X2 |1 ]8 {" }# k
  2484. .DB 253 d+ o9 R/ g* m  K9 ~; e$ Y1 e: t! b% G
  2485. .DB "EXTRACTED BY FLAMECYCLONE"1 V/ X0 G) v  z: f  H3 T
  2486. Static_Text_Date_Data
      T8 \+ ^% w" Y- l7 i( X) ~
  2487. .DB 108 P4 N" b  j9 _+ ^, m6 ^6 t
  2488. .DB "2023.07.23"& O( @8 f6 {& S8 c3 X" R8 b
  2489. , f. w' h0 b" n7 K
  2490. ;==================================================
    ! C$ g1 ^! w; k$ v" p0 V
  2491. Music_Collection_Name               ;专辑名间接索引1 l; s* W: |; r9 D$ B
  2492. .DW Music_Collection_Name_00
    ) D. p) J) W; `* `- Q- l
  2493. .DW Music_Collection_Name_01- x0 i6 c  T: N
  2494. .DW Music_Collection_Name_02% f; V% x2 }# a* w. i+ ~& A
  2495. .DW Music_Collection_Name_03
    ' S6 N$ T. c3 o  c) Q. X7 [( q7 @  D
  2496. .DW Music_Collection_Name_04$ M2 P6 s% n# d8 W3 M
  2497. .DW Music_Collection_Name_05! C- e6 w) \) L; O, _( v+ q
  2498. .DW Music_Collection_Name_06# r; ]) t$ e/ Q8 U+ \
  2499. .DW Music_Collection_Name_07* h, Z1 a: d5 A: Y# ~
  2500. .DW Music_Collection_Name_081 Y8 L1 I6 g5 E% {  y* w0 `
  2501. .DW Music_Collection_Name_09( }/ Q2 p6 W5 v
  2502. .DW Music_Collection_Name_106 q( _" [- V5 c( |) c1 ~
  2503. .DW Music_Collection_Name_11
    5 h- V$ |* ?. O0 L) a3 K

  2504. * \( I: Q2 s/ M
  2505. ;==================================================
    1 Q1 q  L. V' _$ t5 f$ h- g
  2506. Music_Collection_Name_00            ;专辑名文本数据
    ; ~" f* @$ X( w: t$ r4 K
  2507. .DB 11,"1.RAF WORLD"
    " _: I$ l$ N8 n1 _2 _( R
  2508. Music_Collection_Name_013 {2 U0 z0 a" w
  2509. .DB 15,"2.FINAL MISSION"
    , ~- O+ M) M1 L& c. \' _! u
  2510. Music_Collection_Name_02
    9 H' \9 L# e; ^) N0 j$ |/ k8 n/ R
  2511. .DB 06,"3.KAGE"2 p7 i# v, q" \- ], t
  2512. Music_Collection_Name_03* h! S8 `) r1 g
  2513. .DB 16,"4.DOUBLE DRAGON"
    0 h. t- R# f1 _7 n/ ]2 M
  2514. Music_Collection_Name_04& B1 }7 {$ y1 w
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    + I% C9 I& I) B1 D
  2516. Music_Collection_Name_05
    4 [& b8 [& I( `1 _
  2517. .DB 17,"6.DOUBLE DRAGON 3"1 T; |. h# d9 x9 x
  2518. Music_Collection_Name_06
    " _7 c/ L# P6 ]+ [
  2519. .DB 09,"7.ROCKMAN"( R& s, _# r4 K+ H. k- I9 U8 x
  2520. Music_Collection_Name_07
    7 q: V) J- _# R+ b& K- B  h
  2521. .DB 12,"8.ROCKMAN 2"% U9 G5 Q7 f# q1 i4 F, S0 Y, D
  2522. Music_Collection_Name_08
    ; A  q! ~% R9 j2 r; B! \0 ]7 m
  2523. .DB 12,"9.ROCKMAN 3"# c( ]7 N8 Q7 k- W0 n+ j8 v
  2524. Music_Collection_Name_098 L! Q" Z" [9 n3 V+ T- @
  2525. .DB 12,"10.ROCKMAN 4"
    * V2 c8 s' x# P: N# j# {
  2526. Music_Collection_Name_10
    2 w& D) |- O3 C4 s# g
  2527. .DB 12,"11.ROCKMAN 5". `. U$ l, H& @# U0 z4 R
  2528. Music_Collection_Name_11
    ! o# w5 Y: b, Y% X5 \
  2529. .DB 12,"12.ROCKMAN 6"3 V5 J  p6 s) }0 {  u

  2530. , E8 Y$ X' w0 a$ O! T! X/ V
  2531. ;==================================================( k4 b/ r7 n  S
  2532. Track_Name_Addr_Flag                ;显示曲目名标记7 A/ t6 C2 _6 {
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,08 m% E/ G0 m3 l3 y3 b- r- k+ A1 w' @' @

  2534. ! `% k/ S8 E4 l
  2535. ;==================================================
    2 U5 E" B+ L) X" ?
  2536. Item_Pos_Data                         ;光标箭头位置
    ' J- \; n2 x5 a
  2537. .WORD ITEM_SHOW_POS
    # K1 u* ?$ H4 o7 [5 H) v
  2538. .WORD ITEM_SHOW_POS + $0040
    & c8 B; `$ h$ ~5 I
  2539. .WORD ITEM_SHOW_POS + $0080: @( F4 I( A+ ~2 \
  2540. .WORD ITEM_SHOW_POS + $00C0% w" i* Z! k! R
  2541. .WORD ITEM_SHOW_POS + $01005 t3 `' D) y( I4 p$ x
  2542. .WORD ITEM_SHOW_POS + $01403 v; Q% s# b& P8 \
  2543. 9 b5 u- M( R/ p. c
  2544. ;==================================================
    , Q/ L' d! Q8 y) s7 Y2 L* l
  2545. Sound_Init_Port                 ;音乐初始化入口地址, S7 {2 q$ f; f
  2546. .DW $BFC8
    0 q8 ^7 Y- \, ]: ~" d4 e0 H
  2547. .DW $D7F0
    % t3 v$ e. c* w  U  K! R& `2 Z1 Q
  2548. .DW $9FC0
    : b. }# u$ I. v
  2549. .DW $BF70
    - ?- n' }) j. T* x; ]9 `' \# A( g+ u
  2550. .DW $80032 m% x  d* q, K8 U# F7 K4 ~: z# K
  2551. .DW $BF30
    4 O! ^) u) q$ u* i; H& S
  2552. .DW $9003  B& r6 W( |/ ~0 \  [5 `- h
  2553. .DW $8003
    + E6 Q$ f7 ^% G- [
  2554. .DW $8003+ A0 f9 o6 N$ G# H
  2555. .DW $8003( M( I) v$ X. l/ `  E( m; r- t; m
  2556. .DW $8003
    : P' g* g4 x$ C5 L
  2557. .DW $80032 [* o. W- O3 K7 Y$ u

  2558. " a# \9 e; r/ ?1 Y  _
  2559. ;==================================================
    - H2 L# H5 D3 x' f% L" Y4 n+ R
  2560. Sound_Play_Port                   ;音乐播放入口地址
    : e4 I" i; P/ N3 C
  2561. .DW $8000
    3 [" d+ p: J! q8 {
  2562. .DW $80015 D6 l$ J/ I, v4 X% ]7 b7 ?
  2563. .DW $A000
    . d' V$ r3 m. {& r- ^" |( m* C
  2564. .DW $8003
    8 D' p: w9 ]* I0 G: v4 z2 |
  2565. .DW $8000
    9 z4 r1 x  p  n' L
  2566. .DW $8003
    1 H% m4 R+ d& z: |9 {
  2567. .DW $9000
    3 C& x; N% X5 ~* J! E' v
  2568. .DW $80009 x1 x; O( W3 b$ B  O( ~9 s" ]/ s
  2569. .DW $8000" l* V6 x" V, d, Y
  2570. .DW $80002 e& ?% ]7 Z5 w* N: g# J4 K
  2571. .DW $8000  C6 o% v3 q8 ?; S8 w4 ~( a7 C
  2572. .DW $8000
    ' D% }* v* R! i; ^1 r& I1 z3 ?* T

  2573. 5 P- R4 t' |4 Y4 _7 O/ b1 A
  2574. ;==================================================7 S9 A! C2 H/ J) X( X' b5 j
  2575. Sound_Reset_Port                  ;音乐重置入口地址" E5 M: B5 o& P
  2576. .DW $0000
    & w  d' D0 f/ d! L
  2577. .DW $00009 H& `/ K( h% k
  2578. .DW $0000
    & m) y& m2 f0 y' T6 G' u
  2579. .DW $0000
    4 b  ]% a6 r6 e  E
  2580. .DW $0000
    # l2 I7 L, a! W6 q' r# C, |1 x
  2581. .DW $0000
    & @$ U  |3 P' b& O9 Q( j6 X
  2582. .DW $0000
    9 A+ v. F7 v& Y) q, e4 ~
  2583. .DW $0000/ ]( \# N6 u+ ^
  2584. .DW $0000
    % |% C4 m! N9 S6 Q# F* Q
  2585. .DW $0000
    , A* A4 f+ X2 B! x/ b5 _
  2586. .DW $0000, h' e0 F1 C1 ?
  2587. .DW $00009 |: d% l* G7 R
  2588. 9 x2 C# n% B8 L6 B. s" ]3 z2 O' R$ B
  2589. ;==================================================3 O/ q* e  |) S
  2590. Sound_Total_Port                          ;曲目总数0 s9 [7 U( `% O0 O7 B
  2591. .DB 38
    ! i- ]& z: u4 ?( E: W0 H
  2592. .DB 33
    % G9 n2 F0 l$ W# N1 j% k8 q7 L
  2593. .DB 493 V6 ^; _7 r7 U5 c% L% N
  2594. .DB 41$ Q4 y& c3 F3 Y: u5 S2 c
  2595. .DB 83
    & W- L: F6 X! V6 P; x
  2596. .DB 70. S+ a- P. ?# V0 A
  2597. .DB 50
    ! ~+ D4 \! F. N* @
  2598. .DB 67
    0 x5 }5 \  U8 V' F% O- x
  2599. .DB 57
    7 l+ w' w. z9 P& m4 y" O* M; n- H5 |
  2600. .DB 71
    6 M; l1 g( [& w2 P- E
  2601. .DB 76
    / z0 ^0 |, B0 y, W
  2602. .DB 102( y( N  F9 k% M
  2603. 4 E3 L: \2 C# I, a7 H
  2604. ;==================================================
    ; V4 g& d  A3 e: L3 ?
  2605. Sound_Start_Port                      ;起始播放曲目
    0 a7 B- ]$ C' o7 T& i3 u# K
  2606. .DB 00
    : r. q6 }: T! D
  2607. .DB 00
    9 Q* \: v' E8 Q9 C6 K1 n
  2608. .DB 00+ U3 l  g9 f: @+ V
  2609. .DB 00: _  r$ K8 h1 m3 v
  2610. .DB 00' r; d' R1 x7 f; m( Z7 Y
  2611. .DB 00
    - t2 |; n5 \/ e" j
  2612. .DB 00
    , H9 L- n3 T7 U
  2613. .DB 00. n" U9 C) \3 G' u: K
  2614. .DB 00. m* Q! s9 ?& b1 P, p& Y# D1 f
  2615. .DB 00
    8 C9 M' M- K. L* |& h8 h$ a& I
  2616. .DB 00- r+ I9 R5 M7 z9 i: C! P
  2617. .DB 00' X8 ?( [1 F9 I" D; {
  2618. 8 E, z' ~. o: q2 W, T. H% k
  2619. ;==================================================
    5 x( [. m' }9 g+ `0 v3 W/ |- ^9 S
  2620. Sound_Bank_8000                      ;专辑bank_8000; d+ ^: h8 n% G$ J
  2621. .DB $10& y) x" r$ D+ z! h
  2622. .DB $12% G# |; K! X& b5 f
  2623. .DB $14
    4 G0 s2 H: o* I3 Y7 n( D
  2624. .DB $16# m" U( u8 z% x- P8 f. [% n
  2625. .DB $18) [7 G; J" b2 \1 i& @8 f6 @- ]
  2626. .DB $1A" W/ g4 Z2 ?0 m2 j. E. ]: O
  2627. ' u( r' O; R6 k) f8 A
  2628. .DB $00' z; w4 k# D* o, S
  2629. .DB $02
    3 Q9 @8 j) F! |& ]0 v8 B
  2630. .DB $0D
    6 i2 E9 i3 |" G. A0 V6 t$ K0 b
  2631. .DB $04  w2 t  b8 }( ^$ z2 F
  2632. .DB $07; g7 Y8 g2 J0 o9 U
  2633. .DB $0A! A* V  J6 d! f, T& f

  2634. ' Y) l1 S: X- i- C3 X8 e- N  M% C
  2635. ! A  o" k4 r% b' V1 Y
  2636. ;==================================================- L: v& m" x8 A/ n* `& P
  2637. Sound_Bank_A000                      ;专辑bank_A000
    ( N0 Z' l$ R9 S; t
  2638. .DB $116 d: B/ A0 o) P7 p- J+ P2 a
  2639. .DB $130 m: p4 f- T3 v, @
  2640. .DB $15
      j! g5 I3 N1 p% f& s
  2641. .DB $17
    4 y! Q, L9 }9 q! Q
  2642. .DB $19
    5 G6 u% A3 G  D4 ?8 w7 Q
  2643. .DB $1B  i! P7 }6 h) r! x" v

  2644. - @. g# B( L$ H# S9 t0 u; L2 L  y
  2645. .DB $01: p' ?# X: x7 d0 T( d
  2646. .DB $03
    : e. d) B/ R9 J3 |; D# k  |
  2647. .DB $0E6 H3 i5 H' D5 U
  2648. .DB $055 f, x- c8 F; f# p2 {3 j- x' Q7 I
  2649. .DB $08
    # h5 o+ b8 D4 [" t5 p6 d5 v
  2650. .DB $0B
    : O) n8 l  s" \# n9 F5 f  @5 @

  2651. * e; z* p( _$ {9 p+ |
  2652. ) v' r) A# t* H7 S3 c, V& F
  2653. ;==================================================8 @* X9 ^5 @1 w8 I; m* K$ @
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    7 F8 l- k7 z6 d! ?0 X
  2655. .ORG RESET_ADDR
    5 S+ d3 m: j  T( j. A" ]# U* a
  2656. % l0 P# |# {% w5 j3 k2 Q# {# ?
  2657. ;==================================================
    ; v) p0 h* L  R+ k) i
  2658. Switch_Bank_8000;切换bank到8000-9FFF4 I! ~! U1 }8 t% U' x
  2659. PHA
    5 V2 \, _: r4 f
  2660. LDA #$06$ \& k5 j& t! J+ r' z% m
  2661. STA MMC3_BANK_CTRL
    9 n+ Z' y8 c' f/ X% @
  2662. PLA
    8 J& J5 D" z  [( A( t8 R
  2663. STA MMC3_BANK_DATA- a8 x# `' m6 T- U
  2664. RTS* e) y% G& b. Z8 }7 I. x* E

  2665. ( q+ ^4 j' J" @
  2666. ;==================================================$ M6 Y5 W$ _  v/ j/ q
  2667. Switch_Bank_A000;切换bank到A000-BFFF5 o2 _& t4 {1 Z: t1 c3 [
  2668. PHA. ^6 X+ B6 S" R7 E6 s; {
  2669. LDA #$07
    : t$ s! k* R( q) I/ D* x
  2670. STA MMC3_BANK_CTRL
    $ N; J# W% A- N9 h
  2671. PLA% Y/ G0 S$ [0 S$ d( C: m* q
  2672. STA MMC3_BANK_DATA
    : T$ L( i5 O, R* g1 P' Q
  2673. RTS
    * P, O' u- i. e. s# Q0 A( F

  2674. 2 u- f: ]) l& }8 `$ \
  2675. ;==================================================3 {$ ^, V; Z1 ~
  2676. Switch_Main_Bank;切到主程序bank  \9 a* \- P% O% U: O
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK6 n+ C. Y- F6 `( w6 a5 A8 D/ g$ A
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    4 X1 p5 @) k# u: j$ @0 \
  2679. RTS
    $ U3 V; _' ?6 p0 D

  2680. ) f# d8 f6 S* t( k
  2681. ;==================================================9 @! J' D- O! Y
  2682. Sound_Reset;音乐重设(如果有的话)
    " [. `7 [) p( A- r( Z- B  d% R$ [
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    & W( o1 }. h$ U# y4 H8 N. d
  2684. JSR JSR_Addr_Op        ;执行音乐重置: `( O0 A) ^  x6 o7 T
  2685. JSR Switch_Main_Bank   ;切回主程序
    ! u, Y4 S3 c* `
  2686. RTS! r2 p" g( m3 }. I- F2 D9 L- _# S
  2687. ! `2 u: t( x/ w6 E& z6 m- c' v. o
  2688. ;==================================================" @8 [" J9 ?) v. L& F8 `; O
  2689. Switch_Music_Bank;切换音乐bank
    0 M* D9 U7 j3 q! c
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    + P! m. ]% ?/ @  n
  2691. LDA <Music_Bank_8000
    2 D, f0 |- ]/ Y3 r& V# c4 [4 E
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    ( U7 Q, a0 D, J1 h* z
  2693. LDA <Music_Bank_A000- `7 Q8 J* D( K) `( s) h! G, ~
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    7 ?* n, B9 R" ~  k1 U5 v
  2695. RTS
    1 V* h$ K$ V' k  r
  2696. ' _' A7 a0 M. i& L& _4 U0 I+ E
  2697. ;==================================================, j- N# ^% p2 V% q: x4 V: h9 S! X0 p
  2698. Sound_Init;音乐初始化- G4 F# n5 |/ w) l3 C
  2699. PHA$ M6 N' z5 O3 I  Q4 m
  2700. JSR Switch_Music_Bank  ;切换到音乐bank4 ^! ?, n5 p8 O: ~0 \/ ?5 g) R5 c
  2701. PLA+ y" W5 `; r5 c3 U' e! f. T
  2702. JSR JSR_Addr_Op        ;执行音乐初始化8 s  {7 ~+ l4 @* ]) C
  2703. JSR Switch_Main_Bank   ;切回主程序
    ; T$ K' V% Z- ~( V5 ?
  2704. RTS7 z4 I, v8 r. v, p1 F3 ]

  2705. 5 s: ^3 j3 ]# C( e- L1 h$ J' m1 ]
  2706. ;==================================================8 t" @/ s; ?1 l6 U8 h
  2707. Sound_Play;音乐播放
    + e# h" E- |- t
  2708. JSR Switch_Music_Bank  ;切换到音乐bank2 E# a8 X& J3 @4 w! m, a  P/ Y. l
  2709. JSR JSR_Addr_Op        ;执行音乐播放& X8 V% g! p$ s" A, S
  2710. JSR Switch_Main_Bank   ;切回主程序
    ) O+ B5 g+ }$ Z6 P
  2711. RTS# r- N/ N4 U7 s) e! z* V7 M5 e

  2712. ' H' N" A+ E+ o
  2713. ;==================================================
    # O+ c+ D( n$ ?4 H/ M& i
  2714. MainLoop;死循环
    2 R/ m! w: _4 x9 \/ w& \' {
  2715. JMP MainLoop
    4 ~$ v# j' `! j7 O- v
  2716. ; g) n: ~8 s4 d" O8 }' V" X$ Q# X6 D
  2717. IRQ_SUBPROCESS_JMP = 0; t# m3 j! N2 `7 I/ R7 y# T

  2718. ' q+ J0 e. A$ e# u
  2719. .IF IRQ_SUBPROCESS_JMP. P% D+ `; g" n7 C8 G  f
  2720. ;==================================================
    ! C/ D4 G3 }) O1 Y1 e& e. X
  2721. IRQ_Process_0;IRQ处理过程08 s, \! s! F0 r* c3 c& a$ s
  2722. 3 i+ V4 T5 c9 \
  2723. ;15条扫描线后触发IRQ: \8 ]. E  z& a7 R% C
  2724. LDA #15% T2 h8 c+ o2 J  t7 w% w
  2725. STA MMC3_IRQ_LATCH
    ; y* B" D7 \$ A- t9 y6 X" H6 p1 N

  2726. 6 l% M# K/ z; ?  @$ W& O; h
  2727. ;设置屏幕滚动
    ; c5 R- M3 N' ^) G0 Q- D% _5 y
  2728. LDA <Scroll_H3 G7 T* T$ W$ _( w9 c% P
  2729. STA PPU_SCROLL  |( R: a; t8 e+ v9 T1 w$ v/ P/ Z
  2730. STA PPU_SCROLL
    - U# `5 z0 N' w( z1 H6 \% F- O
  2731. . T& s" T) K$ [+ L; r* d7 y
  2732. IRQ_Process_0_End! f9 W& f7 H  m: @: M0 J2 [
  2733. INC <IRQ_Process_Index
    : O5 C6 e: ^( c  Z! V$ @9 v
  2734. JMP IrqProgramEnd: N  x8 i5 n% J3 o  t2 F! Q
  2735. + d/ h( y: {( _# I
  2736. ;==================================================
    , S8 h* g3 M" e; D4 b; p
  2737. IRQ_Process_1;IRQ处理过程1
    ( d/ b5 `' X1 w% p3 P/ y

  2738.   P4 {! Z1 ]& H( l9 W9 p' O
  2739. LDA #55+ N, L; V7 {* ^& r* d
  2740. STA MMC3_IRQ_LATCH7 F4 ~5 Z& i2 E) U: m: y; N0 _5 I, H
  2741. % b/ @1 R' |5 i5 F9 D( r- W
  2742. ;设置屏幕滚动$ T$ `3 s& g3 g$ y& ^& [. G. H6 i. g
  2743. LDA #$00! c3 r0 H& m, l& U5 T
  2744. STA PPU_SCROLL
    9 X( Q6 ~' b3 D& }# H
  2745. STA PPU_SCROLL
    6 Q8 A/ Q, ?; e
  2746. 7 c) q' H$ N3 H6 a0 ]: s: A. K* ]5 s
  2747. INC <IRQ_Process_Index4 z$ B2 e; C1 n
  2748. JMP IrqProgramEnd, Q) ~  ^9 I% H( V: _+ u2 ^
  2749. 3 c( M$ [1 y% K1 n0 M
  2750. ;==================================================$ Y, J! }: h8 `$ }
  2751. IRQ_Process_2;IRQ处理过程2
    8 R# k3 f& ?2 K3 w3 I. K2 L

  2752. # G3 ?. Z2 v3 f
  2753. LDA #154 _" K+ F8 {/ @8 t1 P- C5 l# X& d, |
  2754. STA MMC3_IRQ_LATCH& z. \/ c/ I, F- C* U7 ?2 ]

  2755. 9 T7 @  l% e6 S
  2756. ;设置屏幕滚动
    9 @0 }9 d! }; d, `
  2757. LDA #$00
    4 y5 E8 E3 z/ T: O
  2758. SEC
    & [5 x* x- x& j/ q, l
  2759. SBC <Scroll_H. x# r. X% ^* ?& Z+ S3 j
  2760. STA PPU_SCROLL8 n3 e4 J2 B2 d! ?) e
  2761. STA PPU_SCROLL7 s/ q/ ^. f2 V" F2 [
  2762. 9 n+ P" I) y: h8 A( S: e6 O+ s* E0 ~
  2763. INC <IRQ_Process_Index  R' J3 U% Z  S! ?' _% i- a( Z3 G) q
  2764. JMP IrqProgramEnd2 ]. v+ `6 P" w
  2765. & F+ n: U, T& l1 x
  2766. ;==================================================, o; ?- @0 L, z# O2 G" r* M
  2767. IRQ_Process_3;IRQ处理过程3% s7 @6 Q! K" n5 j" _1 I0 c

  2768. % I* [5 _# R% b" F( z2 Z9 ]; j# o
  2769. ;设置屏幕滚动9 u: a  i. a" n5 y1 K6 \
  2770. LDA <Scroll_H
    / p" y, |" _, ]" a4 V" c- w
  2771. STA PPU_SCROLL: d- N( b( M) I7 S4 k4 F8 m* L
  2772. STA PPU_SCROLL  |4 C- \7 X: G! Q& c, W
  2773. ( V  l1 x6 A8 h. d8 ~: [! c
  2774. ;禁用IRQ
    ( U/ M$ X1 {- ]( A, l0 s) Z  H" m
  2775. STA MMC3_IRQ_DISABLE
    3 ^- I& a) g! j! w
  2776. JMP IrqProgramEnd
    ) k7 ]# w# D2 T  d, ~
  2777. + U# J3 @- x- i8 u
  2778. IrqProcessAddr$ _% d  u+ H. ?! ^0 o& i
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    9 R* {2 c' G3 `' e: }
  2780. * q; I8 u0 J6 O- `2 x/ y
  2781. .ENDIF+ P/ Z* c4 M( S* \( H
  2782. ( o: J) c3 N! |6 S
  2783. ;==================================================  [, p2 j& l8 ^" ]+ t/ ^
  2784. ;IRQ滚动模式常量
    4 X5 U' n2 H2 |* `- D7 h
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
      ^' `- a* C  X. J0 e
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动( \+ j" z% H" T
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动8 Y5 C& f% L5 L
  2788. : O2 t1 L' R! \0 C4 U* h9 C& `) B
  2789. ;IRQ扫描线数据
    . G( n5 C/ @7 s9 E* }0 a0 h9 d7 {
  2790. IRQ_Scanline_Data
    * x3 B/ t; w3 M( _" C! F
  2791. .DB 83 r+ V' `  e0 r$ d& F' V6 @' f2 w/ H
  2792. .DB 54( c2 z+ _) F6 i, y9 N
  2793. .DB 8
    / Z# V% C, F% z8 E3 @- S1 _. N: L1 w
  2794. .DB 00 ;关闭IRQ! g5 ?3 ~+ v4 Z% J* B
  2795.   k0 [( m: X0 N
  2796. ;IRQ滚动控制模式2 P1 {5 t; G0 H% g
  2797. IRQ_Scanline_Mode+ G, ]! g& w: s0 S
  2798. .DB IRQ_SCROLL_MODE_ZERO
    ' [( D' Z7 h$ c+ U) O
  2799. .DB IRQ_SCROLL_MODE_ZERO- {7 S7 ?. h  d- {  e, i
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    2 Y1 n* Z' d! ?5 B8 G/ V( f
  2801. .DB IRQ_SCROLL_MODE_LEFT3 d. W8 h3 \" D- d+ a4 T  O. L
  2802. ; s, F: T- e4 S' [& w
  2803. ;==================================================
    $ z4 d2 O7 n8 }: a0 |( F
  2804. ;IRQ处理
    / o. f4 I% _7 ~
  2805. IRQ_Process
    / u1 l$ C1 W* k6 C& H9 S3 s
  2806. LDX <IRQ_Process_Index# \' ^! O$ r' t
  2807. LDA IRQ_Scanline_Data,X" o# J. q$ n" |. C! W8 X, e
  2808. BNE IRQ_Process_Latch2 V4 V8 n7 m6 i3 d
  2809. IRQ_Process_Disable;禁用IRQ( v1 Y! j% H5 p& n4 W- Z4 P0 U+ V
  2810. STA MMC3_IRQ_DISABLE
    4 C" A4 `; r- e& }
  2811. STA IRQ_Process_Index; s0 x1 Z! \4 G5 L9 @4 Y* `
  2812. BEQ IRQ_Process_Scroll
    - p8 G1 F9 ]7 o( r- ?: l
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
      T8 ^6 j& H* ~2 g! S4 L
  2814. STA MMC3_IRQ_LATCH, i7 e! M% H8 f3 C
  2815. INC <IRQ_Process_Index
    : r0 a' F" E. e% o4 n6 M5 I6 R
  2816. IRQ_Process_Scroll;IRQ滚动控制  M4 G; x% S7 x8 C2 n
  2817. LDA IRQ_Scanline_Mode,X2 n+ L, [6 m% ^% z1 [
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    / G+ o' b: d, t
  2819. BEQ IRQ_Process_Scroll_Left, A+ w) t& c; ]+ d3 N
  2820. CMP #IRQ_SCROLL_MODE_RIGHT3 F& W) ]' u+ w3 G* y
  2821. BEQ IRQ_Process_Scroll_Right( ^0 U! ~" B& n& e0 v3 {
  2822. IRQ_Process_Scroll_Zero;不滚动
    / g- v# p3 A0 ^8 @4 @) _
  2823. LDA #$00
    ) c& R" h- _( F/ e. r; y
  2824. STA PPU_SCROLL% l% n2 S9 q  h8 N2 b$ i( `
  2825. STA PPU_SCROLL; n; X. W& G- s4 c& l
  2826. RTS0 ?/ q/ U+ U# O" h* a" |4 l
  2827. IRQ_Process_Scroll_Left;向左滚动8 I/ z. ?) i8 E6 F; U' [7 g
  2828. LDA <Scroll_H- z; g" l2 {1 `% |: g  t/ G6 f: h
  2829. STA PPU_SCROLL# A9 J6 H( U4 X4 ?" u  N
  2830. STA PPU_SCROLL
    4 B* p9 M. m! C$ g) \. ?
  2831. RTS) w5 M1 [" E3 ]" M
  2832. IRQ_Process_Scroll_Right;向右滚动8 L& f% @- M) a. e  Y/ Y9 r( E( g
  2833. LDA #$00; f' G- ~# `% K
  2834. SEC( y% C( i: o4 h
  2835. SBC <Scroll_H- r1 x5 ]1 |: q9 E) l- ]0 ]7 w( }
  2836. STA PPU_SCROLL
    0 c; }' Z* h7 f* \; m& u. R% J- g
  2837. STA PPU_SCROLL6 c- R. `7 A+ h5 c$ p$ ]' i5 R0 s
  2838. RTS
      d# h0 L# T& {5 _. n2 _& I
  2839. $ w( H8 x: [& y" _; {6 ]0 x
  2840. ;==================================================
    , N; L! O' E$ O+ T! N9 V
  2841. NmiProgram;Nmi中断处理
    4 M1 E& ~% @$ O# O
  2842. PHA
    9 {% o! u( \2 o0 i8 e
  2843. TXA  D! A5 r7 U, z4 n' O8 w! w
  2844. PHA
    " Y% ^! g$ ]- j1 D
  2845. TYA4 b' b; `. G1 ~
  2846. PHA
    6 w  R1 P3 F3 |6 d+ X

  2847. 5 o3 ~9 H3 [1 k  `) y/ {
  2848. ;读取清除Vblank标志, 防止重复进入$ c' X, ~9 g9 w5 D  a, j
  2849. BIT PPU_STATUS
    / ]! `$ _$ }. o* _8 d4 u+ x

  2850. 6 t' @, N% f4 ?' b& c
  2851. ;切换主程序bank
    ! r$ o1 X# y" M6 a; y( z
  2852. JSR Switch_Main_Bank
    . t" N5 n3 I1 B
  2853. * {$ ~( x4 y* W$ p8 ^
  2854. ;Nmi处理
    8 d0 `0 h/ D1 a9 l
  2855. JSR NmiProcess3 g* q, {+ u$ i- o# c$ `; ]  S

  2856. ( f, E8 U1 U/ w. w) r' Z
  2857. Nmi_Proc_End
    0 r. [4 W* ?3 @3 {# T! e
  2858. PLA
    8 z7 @; |" i, b: T% w
  2859. TAY
    . D) @, l' x9 K0 b) _6 P  G
  2860. PLA
    8 S( b/ a; F, k- L
  2861. TAX
    % Z. r1 D: @# u$ H' ~$ G  F
  2862. PLA' N  a1 i6 l- ?2 M8 o, |" F2 i
  2863. RTI% M8 P* G' G2 _$ R
  2864. / |4 Y; _4 ~* _: a9 w) ]+ W+ M  M
  2865. ;==================================================% K5 Z& T! h; W0 p
  2866. ResetProgram;重置中断处理/ I2 W7 \9 _# t9 l4 s- T8 B7 i
  2867. SEI
    6 N4 A. I3 `% h+ e+ N* \
  2868. CLD' n1 e% M' n+ ^3 W3 S0 }/ J
  2869. LDA #$00/ U! V, \) `6 P  l6 u
  2870. STA PPU_CTRL% j1 R. ?. O1 ]( g$ a  K
  2871. STA PPU_MASK
    9 R  N! g1 S  D& }4 v3 H/ P0 y7 }
  2872. ) P7 w( H0 v( y  k9 A
  2873. ;切换主程序bank5 o9 m; @- A7 ~5 k
  2874. JSR Switch_Main_Bank" }- i1 y. v" Y* o0 w( g- ]

  2875. 5 J- f* B" [9 U) t: }, u
  2876. ;程序处理开始, [2 [. t; Q# y
  2877. JMP ProgramBegin1 G; G$ H. M# G! j
  2878. ; r8 B7 @: T  [; ?0 d( U7 k" r
  2879. ;==================================================
    * I5 S$ g) x6 j. I, c
  2880. IrqProgram;Irq中断处理  R$ b! X0 E: _/ a
  2881. PHA
    ( W% E+ r! l# }: l' P7 W
  2882. TXA
    : a4 |8 Q6 C/ S+ r5 R- {8 k
  2883. PHA0 Y7 D$ p/ l1 \; ~8 h$ h6 p
  2884. TYA
    " w+ L% B/ h: r+ @, A
  2885. PHA
    ! l  I& `/ \4 @( P
  2886. - K9 b/ I( O' S! `! @) K
  2887. ;关闭IRQ* e, j( u# u+ j) L( o
  2888. STA MMC3_IRQ_DISABLE3 c1 Z" p' v. P

  2889. 5 x1 d& |1 l7 p; _
  2890. ;允许下个IRQ触发" D4 H8 T; K: n
  2891. STA MMC3_IRQ_ENABLE
    1 Z5 ^/ R: @% C/ H

  2892. ) v; E3 D0 \: Q* y1 n
  2893. .IF IRQ_SUBPROCESS_JMP
    $ t2 l3 [0 ?# R

  2894. ; J& ~. J+ e6 Q3 g/ `7 x+ H
  2895. ;执行IRQ过程: b) R: X! x; D/ I/ d) \
  2896. LDA <Data_L
    1 p$ {, A. U6 A
  2897. PHA2 n& I4 z% Y0 U8 s- j; Y) b& z
  2898. LDA <Data_H+ W' J" v0 a9 M9 F4 L
  2899. PHA
    ; s8 \; g( b4 c7 k$ M. E3 t
  2900. LDA <IRQ_Process_Index
    * N( C8 ~' K" k6 t. ~) H; I
  2901. ASL A
    3 H7 i. r' k. i% g6 H- e& E. e
  2902. TAY1 ]/ W+ |3 [2 p) b
  2903. LDA IrqProcessAddr,Y
    0 n1 N+ K. e  X* R* q# T/ y
  2904. STA <Data_L
    + A( q5 s) _. ^0 ]& T: B
  2905. INY2 r( P( ]7 R/ f8 T
  2906. LDA IrqProcessAddr,Y
    & t* h! `: x1 t1 N) w1 D
  2907. STA <Data_H
    4 a" l; @; l7 X9 C; ~4 u) Z; X" t0 ]  e
  2908. JMP [Data_L]
    . j9 o/ D- r1 H5 w" D

  2909. - p% S/ O5 `% a2 Z/ j* Q
  2910. .ELSE: u1 u" v4 R# X! D) L- n

  2911. ; x1 i" X: A2 j! b$ B
  2912. JSR IRQ_Process
    9 [" ?  z5 e% q  C/ D* j% m  k

  2913. ' K2 }. B  d8 F" Q0 e3 Z. V" n/ a
  2914. .ENDIF' k! t; x& J9 w, g$ e6 m
  2915. % Z3 F+ W7 z) b, g# M' E, o
  2916. IrqProgramEnd  N( B8 I6 H4 Y5 B  k* O
  2917. .IF IRQ_SUBPROCESS_JMP* s; m; [# X6 d2 y/ E5 t9 ^
  2918. PLA
    / X+ m% [$ ~6 L) y
  2919. STA <Data_H( M' W. i1 H4 }
  2920. PLA
    6 E- h2 \% \7 r0 J, v) F, u3 d1 b
  2921. STA <Data_L# U6 E# ~) |' g# [! F
  2922. .ENDIF2 Q# C3 U/ x( y0 t
  2923. PLA: M) l* N' Z9 [7 w
  2924. TAY
    1 l; n- n4 }3 O0 K; T: ]5 J
  2925. PLA9 \7 y" k5 G3 z: r5 n7 o2 W
  2926. TAX6 \, a+ `8 s6 U
  2927. PLA
    $ U7 `6 s; n5 s  r6 V6 K
  2928. RTI
    - {8 [9 P& u$ n' ~) k0 R/ F) A

  2929. + \5 s) Q$ K. a5 t5 A
  2930. .ORG $FFFA4 p* q' I4 Q2 D/ \! a
  2931. .WORD NmiProgram
    # ]+ o9 n* s# m) v' Z" ^- b3 V
  2932. .WORD ResetProgram' `1 @- C: W0 D& ]% o/ E8 o2 U: [9 @
  2933. .WORD IrqProgram
    + [: o5 R- _$ I# S' U
  2934. " j4 t1 n) k0 v( [
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    ' e& f" e/ Z# }+ E8 `) ]# U0 ?
  2936. .IF SOUND_BAR_SHOW_ENABLE8 E- t2 w" j- k( G  |3 z

  2937. : \! {2 H. `: ^" Y3 G3 s
  2938. .ORG $FE00
    9 e6 o5 Y4 P) l5 w, o6 K
  2939. PHA
    2 K% p/ a0 \. K( _* ?
  2940. STY $07BA& r. W2 w- r" l
  2941. LDA #$8D5 o& f6 n* j8 A) X
  2942. STA $07BC& a& w6 |2 b) J: A) K8 W4 J
  2943. TYA
    0 h: E$ J, K3 I1 s
  2944. CLC3 N8 {& d: J  f& |9 v& ^
  2945. ADC #LOW(Sound_Bar)
    / b: O7 b2 u5 M6 D
  2946. STA $07BD
      f" k: c: a* c2 W$ }4 D: W
  2947. LDA #HIGH(Sound_Bar)
    ( o  `1 X# o# p  c3 G1 p! @
  2948. STA $07BE
    / X. K& T* J$ D1 q; ?$ C1 I
  2949. LDA #$609 H( L5 O9 f5 t; h8 X5 o
  2950. STA $07BF
    7 |: l% B$ \1 [8 ?2 v
  2951. PLA
    ) L- N- E- p+ v1 b; o
  2952. RTS
    8 D' B2 R7 C/ r  n0 b7 `, v7 U
  2953. 7 [  a/ K+ _: ]4 ]2 F( x
  2954. .ORG $FE20
    / B) m3 y8 H! V4 Y$ r3 T
  2955. STA $07BA( Q! m3 X' \& C. D
  2956. CLC
    $ K- _4 T  r' A" e
  2957. ADC #LOW(Sound_Bar)
      ]9 p8 w- Z9 i/ s7 C
  2958. STA $07BD+ f5 {( f+ h; y, G
  2959. LDA #$8D0 {7 a- s! n9 b9 F4 x0 F
  2960. STA $07BC& N. Z- J, n9 Z; a
  2961. LDA #HIGH(Sound_Bar)
    # j" w6 v2 s: ?0 c1 z: v0 K
  2962. STA $07BE
    / K' o! j9 S; {% m# K
  2963. LDA #$60
    + a( T7 S3 K  `6 m; v( H- m: @
  2964. STA $07BF
    # L9 ?/ r5 e8 t5 ~/ r6 q( `
  2965. RTS
    / v! Z5 C3 t2 K3 A7 P4 y

  2966. , p( ~, ^8 @; V+ P$ s
  2967. .ORG $FE40
    . F  h' b  O' Z4 F2 q4 L9 Z7 d
  2968. PHA+ o7 S; v5 ^; u) Q! T* _, F3 Q2 g( n
  2969. STY $07F19 Y  A: @' n  V8 J6 k0 B
  2970. LDA #$8D% X. \5 ]& t7 g) U' ?: }
  2971. STA $07F3: R# s3 d4 j3 M* M" y  G8 a
  2972. TYA% U2 C9 ~: G5 h, \( `
  2973. CLC- }4 Q: \2 W1 w0 K
  2974. ADC #LOW(Sound_Bar)) e8 e7 y! Q  _' C
  2975. STA $07F4; x, a# C* L$ T* h
  2976. LDA #HIGH(Sound_Bar)! p1 [% Z  W: z# h
  2977. STA $07F5
    % K4 F0 ?7 m$ g
  2978. LDA #$60
    / w- p! r1 T0 g6 g- }- w1 |
  2979. STA $07F6
    : k+ M. d: r6 k( p& @( g! ^7 ~) N( C
  2980. PLA* W" y- _# Y6 e+ c
  2981. RTS
    - \8 W9 @8 g, ~; D  ^, |; p9 b

  2982. ) u: X, ~+ n- L% ~( ?# J
  2983. .ORG $FE60! A8 K! q/ p+ u! r6 {
  2984. STA $07F11 R6 U4 u( M. Z* c- P) B% e9 R
  2985. CLC1 W+ d' @1 I8 m) u) z  K* o
  2986. ADC #LOW(Sound_Bar)5 E6 V" ^  O; Y4 B! Q
  2987. STA $07F4
    ) t0 D, |* K# {
  2988. LDA #$8D
    3 i0 C7 M( I8 X) }
  2989. STA $07F3
    . `9 ^4 I  F. {$ H3 O
  2990. LDA #HIGH(Sound_Bar)
    ) x% M( a0 p6 {
  2991. STA $07F5, M! w6 |" e4 ~, A
  2992. LDA #$60; [3 y' E" R! k) _# R7 a2 z
  2993. STA $07F63 U: R7 q% C7 d8 l% }" b4 p
  2994. RTS& O0 Z) t* R: {

  2995. ( e  w4 d& d3 P/ s% T: Q
  2996. .ORG $FF40
    8 P& ^' T, T  R  U
  2997. STA $4000
      B4 o2 G" {, h0 b
  2998. STA Sound_Bar + $002 Y2 D4 ^/ q8 @8 _4 d
  2999. RTS
    / c- w* x8 @+ u( V/ @% P& l) d+ T  x
  3000. * L+ m8 S* i5 ?9 H+ E% S
  3001. .ORG $FF48
    + S  W/ s7 g  n5 [% g
  3002. STA $40046 t! P$ A9 t4 J0 t
  3003. STA Sound_Bar + $04
    * s/ S) b% U( V$ @. c. h  M
  3004. RTS1 J2 u0 U. i  V; r) v/ A& M) C
  3005. 2 L. m( V! J, g+ N
  3006. .ORG $FF50( t- ^" O: k! i; L. a. ]
  3007. STA $4008# Y' G0 H9 B0 B" Z, ~! P
  3008. STA Sound_Bar + $085 y2 J8 k7 B2 F2 V" L# D
  3009. RTS
    - l, e& j% Q' n

  3010. 6 L; B. W* a% c- B3 K
  3011. .ORG $FF58
    # V% [' Q% g% f- t
  3012. STA $400C
    " T0 l. r8 @! M  I
  3013. STA Sound_Bar + $0C- N. C. x7 ]" X/ R5 ^7 l! ]
  3014. RTS
    9 p0 _" I+ n# X* e# l+ a
  3015. & z9 V: M2 v" a* |# L9 Z
  3016. .ORG $FF608 F5 R. Z% H/ G* `
  3017. STX $4000- {- E2 Z" u, O2 i* t3 _1 j
  3018. STX Sound_Bar + $00
    # Z/ t) J0 U. O# C" Y& m
  3019. RTS8 l$ f8 x5 W5 u% w( ?# k8 X

  3020. # T6 X/ J: \+ E& }5 A* I
  3021. .ORG $FF682 r: d+ i' {# ^$ p
  3022. STX $4004) P3 \  n: c  G& X4 Y5 r0 ?
  3023. STX Sound_Bar + $04; d, q- ]7 q% c+ ]% P, D
  3024. RTS# U2 i" @/ r& M6 [
  3025. 2 R5 I5 v! G+ [) {9 f
  3026. .ORG $FF70
    8 ~. Y7 y7 R1 Y, ~
  3027. STX $4008
    ( n# }7 Z; L3 {3 ]2 b/ q  C
  3028. STX Sound_Bar + $08
    % W0 i4 P. k2 W6 U# `3 B
  3029. RTS
    6 d% E0 f: m& s! d
  3030. 0 B. R0 W  H4 n7 V. q5 x4 M$ E2 K6 Z
  3031. .ORG $FF788 B+ u3 u( a, p
  3032. STX $400C9 \1 v7 O. U& `% {
  3033. STX Sound_Bar + $0C
    & Z5 V. E' {4 ^8 J6 h
  3034. RTS
    4 L- U4 i! g$ y( }) K& ~

  3035. ' H' G: r  ^2 h' I
  3036. .ORG $FF805 I" |3 G& g' X
  3037. STY $4000( R1 A  r5 J* _/ t2 R7 b1 S) {$ o: V* B
  3038. STY Sound_Bar + $003 ?3 e0 ]5 b+ E. D  E' D+ @
  3039. RTS
    5 D/ N) o4 \3 X0 |  o

  3040. . b3 Z! Z' w8 P, f
  3041. .ORG $FF88
    6 P5 h* c! P$ R1 @! G
  3042. STY $40042 V$ W1 B  n9 _  b+ M( x7 ^" K% W$ d
  3043. STY Sound_Bar + $04
      u' m- n& v/ B& M# e/ ]; n8 ^
  3044. RTS
    8 u% W5 B! |, s9 e' K; s  m
  3045. $ S0 F7 j$ G8 P  x( n  B
  3046. .ORG $FF90# S! E9 y  [; ?9 t4 ~7 l
  3047. STY $4008
    ) ~6 x- R0 ?: Z6 ^) D
  3048. STY Sound_Bar + $081 ~6 L/ E! k, `9 R3 C1 _
  3049. RTS0 B: o. n  S. }( }$ |
  3050. # k( v/ K% P" u9 _1 d/ D( y
  3051. .ORG $FF98, U9 F* q- P5 B% k7 R0 E3 D
  3052. STY $400C- `: G6 G& c9 Q( P
  3053. STY Sound_Bar + $0C
    . M: x. V+ O4 ^5 E% V
  3054. RTS
    2 \% h3 s: P. P) N8 u1 f! F

  3055. / k: b# K$ [, U+ D( j
  3056. .ORG $FFA0
    8 F6 w; t" Q' B' X$ U
  3057. STA $4000,X3 f5 y! b( O! e" r% O2 Y
  3058. STA Sound_Bar + $00,X
    % |. N5 z( W7 p
  3059. RTS
    & d( N6 c3 u; s2 V: L

  3060. 6 `& _( g; @. z' L0 @% Q
  3061. .ORG $FFA8
    - P5 f: Z3 b- r" b" p& u
  3062. STA $4000,Y
    / s" ?9 g5 J, ~: X
  3063. STA Sound_Bar + $00,Y
    % f! I* l; z# A7 |- m% |" B
  3064. RTS
    8 r8 f2 P- Y$ y/ {5 S" I5 L
  3065. 2 }) G: M. D  k7 h
  3066. .ORG $FFB0
    4 J: b( I3 F5 h7 Y
  3067. STA $4004,X* M" W" A$ B3 n9 C: y
  3068. STA Sound_Bar + $04,X
    1 D) l  ?3 v$ k
  3069. RTS
    ' T3 H; e& I; {) n2 q" I2 j

  3070. ; e$ O7 W: A; G  k& w$ h: f1 d
  3071. .ORG $FFB8
    5 U, x+ ~5 C7 H% a, h, A) ^9 N
  3072. STA $4004,Y
    3 j  i% x& G  s
  3073. STA Sound_Bar + $04,Y) X1 Q3 C. L9 ]7 P- j6 j
  3074. RTS$ ?/ ^8 s0 r7 P) Q: y/ I

  3075. ( ~: c! q& m8 V/ Q/ n5 s; {5 I
  3076. .ORG $FFC0' B8 \9 f2 j$ |- f+ |3 N4 H7 G
  3077. STA $4008,X
    & a( H  l2 B  j& u* J7 i8 D9 Y
  3078. STA Sound_Bar + $08,X% U' R8 V" \7 F0 B( t
  3079. RTS
    " ^3 G+ W( I7 ^  H( j' \0 }

  3080. 3 j. z" ?- N) r! V1 I. _
  3081. .ORG $FFC8
    / w) g2 f' O0 `' E7 I2 w, ~/ u
  3082. STA $4008,Y3 k4 B; Z- P$ x
  3083. STA Sound_Bar + $08,Y
    9 u4 }: ~; b+ u8 O/ P
  3084. RTS* I6 _! Y7 p# F: e) M

  3085. ( n3 l% I0 f3 @! [' r* {% ^+ ]
  3086. .ORG $FFD0
    4 L- x* F/ X# I  o0 P) k
  3087. STA $400C,X4 h, E" v: n) k6 L, _7 }
  3088. STA Sound_Bar + $0C,X& `& T& _3 T& h/ x9 J
  3089. RTS
    9 F; A$ \) u: E) b& r( k
  3090. " d2 m1 m/ D- C* m; @
  3091. .ORG $FFD83 A/ i) ~' h; v/ \: K; A* v. e# k  J
  3092. STA $400C,Y9 R* F. _2 E8 \$ f5 D
  3093. STA Sound_Bar + $0C,Y
    2 @. L! ]' L: p3 a6 J
  3094. RTS4 _% k8 s9 {, }1 d" m# @: J. [
  3095. 8 h0 C& j1 z9 L6 l& c# m
  3096. .ENDIF
    & p+ d+ h. S( `5 E* d4 @7 Y& K
复制代码
* p0 }1 F! J0 u0 @
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3163 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-6 08:26

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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