EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 + ^: z. g: a5 W6 c! f) S
! B( W: e! S) l' Z" X1 E
[FC][音乐12 IN 1]
2 K( K: E+ S) p. ]! H时间: 2023.07.232 l8 p+ w1 I$ j( L8 ~
作者: FlameCyclone$ g! D/ `$ a( V% L

& K7 H" e4 Y) x& d4 r! c, G收录音乐内容:
" }! f$ V9 O, W$ N" C1.Raf世界6 X. o7 }, W3 [' c
2.最终任务
9 p% x6 j3 O7 g+ W- _& _3.赤影战士
" `( V" z' V: a( L" p4.双截龙
3 h7 G' H; H/ g6 R  v, [5.双截龙2! c( K* g/ P' E" R/ z
6.双截龙3
. k4 m+ Q* Y4 V" }' M' C  K. X7 X7.洛克人
3 H* }# \8 ^3 r8 G* `8.洛克人2
4 u( f& P! e) t# I9.洛克人3; c+ }1 i5 y  X" x  O, M- B1 J1 {
10.洛克人4
* z8 u- T( q4 W7 {$ _+ X* N* C11.洛克人58 t# O7 y/ ?8 p( n: s
12.洛克人6( }( m5 q& t) K, p$ a( O& c
* u3 R4 u% \7 ^9 a
操作:* x7 M) Z; L) N3 d
上键:         上一个专辑
9 {/ H$ Q- J1 C* o下键:         下一个专辑5 p3 O. k; Z5 H, I
左键:         上一曲- Q- {7 c/ M; ?( I! `0 r
右键:         下一曲
& a" W2 \9 M9 _! d* {B/A键:        前10曲/后10曲
6 t) O7 x5 ~5 H3 q选择键:       下一页( j! ]9 a, O1 n3 j& D
开始键:       停止/播放1 e; a% _! l" `' \6 M8 J! J' `
& r3 }0 j  @1 ]3 T
http://flamecyclone.ysepan.com/9 e4 q, f. u$ T5 H1 k

3 V5 b! s, Y0 I+ i; ^( ~
, e( x/ s8 S  m6 k( W
. I$ P, t7 u3 N1 ?5 J1 c5 @. D1 d4 j- W. y3 T0 ~
  1. ;[FC音乐][播放器模板]" w, A2 N1 R; b8 M
  2. ;FlameCyclone 20230710; W1 Y& X. O- g" i% C) @
  3. % _7 _9 U8 \/ u5 s! y4 x! F# k
  4. ;文件头
    ! r; p5 B/ O6 f& Z- x
  5. ;======================================================================: w6 M/ ?- ]& @  {
  6. .INESPRG 16                                             ;16KB PRG 数量
    # e: S, u$ e" m+ H
  7. .INESCHR 1                                               ;8KB CHR 数量/ B0 H4 ^) U& s
  8. .INESMAP 4                                                   ;mapper 4/ a) I8 J5 e) Q: Q
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    ; r! s6 F2 s* @2 b9 n1 u+ c5 ^" Z

  10. 5 H) y9 t: `. d3 c7 X
  11. ;==================================================
    . a7 c1 T9 N: Y8 n; c- n
  12. SOUND_BAR_SHOW_ENABLE       = 1
    1 H2 ^: n' r# U$ O8 M, |" k
  13. ;==================================================. M3 H4 a; \" K6 E
  14. BANK_DATA_MASK              = $1F
    + C: T5 j+ l6 k0 ^# l0 D; u
  15. CHR_RAM_ENABLE              = 0, ?/ W' _( Y7 ?+ H
  16. IRQ_SCANLINE                = 136! o1 }1 o1 `' L7 W" z) k$ D
  17. ;==================================================
    . Z. S% V- C( I0 t
  18. SOUND_DATA_BANK_00          = $008 W: N& `% L" @) |8 ~2 y& W7 Y
  19. SOUND_DATA_BANK_01          = $01
    % C5 Q8 |$ d9 B1 h. J5 I
  20. SOUND_DATA_BANK_02          = $02
    ) g& h  U6 b- c1 U2 w
  21. SOUND_DATA_BANK_03          = $03; I4 ~0 X7 o7 A6 z
  22. SOUND_DATA_BANK_04          = $04" G0 s) c/ j0 Y0 b$ m* A
  23. SOUND_DATA_BANK_05          = $05
    , V2 Q) w- C. g1 D6 F! Q
  24. SOUND_DATA_BANK_06          = $069 G7 k* w- T3 G, x2 @. n6 x$ [
  25. SOUND_DATA_BANK_07          = $07
    8 C" j2 B1 O) H7 r8 Y! o; F9 F
  26. SOUND_DATA_BANK_08          = $08
    " g( F0 |2 |5 z! t; F, X+ D) a
  27. SOUND_DATA_BANK_09          = $09
    : g6 {3 O1 p" w
  28. SOUND_DATA_BANK_0A          = $0A7 M9 ~+ o7 J0 U( E5 m; B
  29. SOUND_DATA_BANK_0B          = $0B
    , p9 m% t9 `' _: y' I" [
  30. SOUND_DATA_BANK_0C          = $0C; m- Z# V3 h/ o% ]! C; L
  31. SOUND_DATA_BANK_0D          = $0D
    # L9 \6 q' t5 f( A
  32. SOUND_DATA_BANK_0E          = $0E# f4 |) q# w7 {$ R! W
  33. SOUND_DATA_BANK_0F          = $0F
    ( e, p2 r, L7 b' f2 e' M

  34. 2 t/ k. O4 E9 O4 _4 U! U
  35. SOUND_DATA_BANK_10          = $10
    3 @; w. c1 M* n6 p
  36. SOUND_DATA_BANK_11          = $11
    % `1 D9 y" P0 h7 E* A
  37. SOUND_DATA_BANK_12          = $12% p  G+ j7 P) j7 g
  38. SOUND_DATA_BANK_13          = $13. u! q. F9 o2 U* o& n7 e& e' h
  39. SOUND_DATA_BANK_14          = $14$ w) H, G* V. E) Y+ U7 i
  40. SOUND_DATA_BANK_15          = $158 Z1 m9 u7 L% v! g6 P( h" C
  41. SOUND_DATA_BANK_16          = $166 X/ J" C) l  J5 G  g9 t9 x
  42. SOUND_DATA_BANK_17          = $17
    - m& _$ Z1 K1 J
  43. SOUND_DATA_BANK_18          = $18
    ) u0 x4 b, ?* q3 w6 r
  44. SOUND_DATA_BANK_19          = $19- h5 J+ r  q' i/ n2 A
  45. SOUND_DATA_BANK_1A          = $1A
    9 Q. W3 ]) C2 M. d9 T
  46. SOUND_DATA_BANK_1B          = $1B# k) ]0 w: j2 ]$ j, F+ ~! ]% O
  47. SOUND_DATA_BANK_1C          = $1C. @4 C; L; Z  U/ T; `
  48. SOUND_DATA_BANK_1D          = $1D# H, |5 U4 P8 b4 J' x' h% ^2 b
  49. ( l6 ?: u1 N# C7 t: P3 k
  50. SOUND_DATA_BANK_C000        = $1E$ J& H$ o1 S, }* w; R/ l. Q1 [
  51. SOUND_DATA_BANK_E000        = $1F
    ; m9 Y2 o4 u) \- |5 j4 q
  52. ;-------------------------------------------------
    " W/ K! ~  m* N; |& R
  53. CHR_DATA_BANK               = $20
      X% f0 J4 B. b7 w
  54. CHR_DATA_ADDR               = $A0008 g* D0 o: c; w& Q6 r
  55. ;-------------------------------------------------, H- Y9 X0 i1 I3 f. p
  56. PROGRAM_BANK                = $00
    # h9 f3 I7 Y. O) [
  57. PROGRAM_ADDR                = $8000
    ; w9 w- d/ Q  |- z
  58. ;-------------------------------------------------
    $ c2 M8 w5 ]) |8 B
  59. RESET_BANK                  = $1F
    8 }3 q8 [* e8 }. g3 x: `. V
  60. RESET_ADDR                  = $FD007 c  E) O& `2 Z8 X

  61. & r' }1 g3 Q3 Y: Z* ?; i% {
  62. ;==================================================6 c3 S/ p; f" X' a% G
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数7 u8 a' n* \7 ^. ^; h0 w4 u
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引& W  e3 {% M6 I) [$ u- q
  65. PAGE_SIZE           = 5                     ;每页节目数3 w0 ~" ~% u6 t! l6 ^
  66. ! h* H) `1 K3 l* c9 b' J
  67. ;==================================================
    3 d! x- \  o+ e+ p7 W
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除. a( z) j) B- r4 X0 o
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数! K! P2 x- I* ^# ?9 z: M
  70. .ELSE
    7 q9 Z& d3 s) i3 r$ K/ ^% q
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    : ?) ^6 |" P, L
  72. .ENDIF
    $ G3 R1 g0 g* m$ @
  73. 1 F+ Q# ]: F, x! q$ y& r* K
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引5 W( D' D! \/ K5 H. d( H6 f& K+ h

  75. 5 @+ W5 u5 Q. O
  76. ;==================================================% U2 X2 C/ O+ \; W3 r& Q8 z
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置0 g8 ~0 G; r( U; p$ U" W
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    2 p/ o$ _" v* Z7 ~% G2 O# ~' a
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    % K6 f, }* o( A. `" n
  80. ;==================================================% o" [* }$ j: b& x
  81. Caption_Text_Pos    = $204D ;标题文本位置
    ) w! e! S$ o: g, o- F
  82. Author_Text_Pos     = $2324 ;作者文本位置& K( t, }. d6 Z, |9 `
  83. Date_Text_Pos       = $236B ;日期文本位置2 u6 Q0 O/ M. c3 i! R% }9 p& \+ o
  84. ;------------------------------
    + X# A3 S) j3 x2 R) e7 C$ |% n
  85. ;------------------------------
    " C: S9 o  t7 [! ^
  86. .IF SOUND_BAR_SHOW_ENABLE
    . F/ \! N4 H# k2 \$ W4 z

  87. ; S9 p0 ?3 u5 }# }* @9 f. S' e
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    + j  t+ s8 E( T' ~. _2 p
  89. Play_Time_Pos       = $22B3 ;播放时间位置' v( A" E. M. ?* ^" I: A$ @
  90. Play_State_Pos      = $22F3 ;播放状态位置! _7 X& x' Z, J) R. r9 Z5 ]1 S- L
  91. * D" a; B, z. {0 q8 b
  92. .ELSE
    9 L% E* G/ ^) y) |8 e$ X' q

  93. ! B% Q. W: s1 ?$ u5 P2 Z
  94. Play_Index_Pos      = $226C ;当前曲目位置
    7 ~8 l2 Y/ M& P7 B+ W/ K! I
  95. Play_Time_Pos       = $22AC ;播放时间位置2 A0 N. F9 J+ y* t  ~1 q
  96. Play_State_Pos      = $22EC ;播放状态位置
    8 J, i( y3 k! J

  97. 7 P  i4 ]" {  B  J' w
  98. .ENDIF; ~& e( f- R# [9 }9 r5 P: R
  99. ;------------------------------0 ~7 C1 ~! [% V' @
  100. Track_Name_Pos      = $222B ;曲目文本位置% Z, l$ Q! z2 G/ @1 g+ R
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    % v1 B3 r( W1 i, Y
  102. Sound_Track_Pos     = $2265 ;声道文本位置. G1 S# G8 L+ M1 c* y7 |7 W
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    % H- X( d6 S5 k+ s! o/ n: @: z
  104. ;==================================================
    ! x, R9 M4 U8 D* m3 o( O
  105. Scroll_X = $00
    ( m' ~' \8 m) f) s/ z
  106. Scroll_Y = $00. R+ \& O. e  \& \/ c0 ?
  107. ;==================================================
    ; X$ A1 R4 D4 W+ r+ S
  108. Sound_Ram_Addr_1       = $0100
    / u0 c) t$ d+ h2 d4 k" ?
  109. Sound_Ram_Addr_1_Size  = $80' c7 s/ t7 E: |0 K" o* w/ m9 M, _
  110. Sound_Ram_Addr_2       = $0090
    $ q" ?5 q- `. v- o
  111. Sound_Ram_Addr_2_Size  = $705 z1 A4 E/ I4 s" c! ~
  112. Sound_Ram_Addr_3       = $0700
    ! ?, \' H7 H7 h. `
  113. Sound_Ram_Addr_3_Size  = $00
      g* C, Q0 F2 \# v% I
  114. Sound_Ram_Addr_4       = $04005 x! w( d7 \% p) W& k
  115. Sound_Ram_Addr_4_Size  = $004 O8 e' c& d7 k1 G, @( N
  116. Sound_Ram_Addr_5       = $0500( N7 u- d) z% b7 F
  117. Sound_Ram_Addr_5_Size  = $40
    ) V# {: ?$ t, y. _' _
  118. ( B  Z* I9 x5 m
  119. OAM_TEMP_ADDR   = $0300
    / c9 ]) }: P) U7 l% a* K' Q2 v, @) R3 y
  120. 9 R( S& z1 W. |# s1 S
  121. ;==================================================
    5 |9 W' N4 t& q+ \* t
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    9 m* {3 r4 ^, E: k: m; K. X
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器( n: `2 u7 w: A, k' ?$ i; R) q6 c
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    4 }  R' |% B/ O
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1* O% z: P& o" L) o6 |
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1( z$ G/ [7 c6 r7 d3 @
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    ; |! _7 m. ]% Z( T1 v# y7 X1 l
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加! a4 Q. R# G( r: ^' O
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    + ]$ L6 Y: a0 Q! h/ E7 r0 y
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存1 C1 R. r1 J* L9 b4 n6 k
  131. APU_STATUS              =   $4015   ;声音通道切换
    * y# L! ^# E, p. j  |
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    # p2 z% Y/ ?3 n# r6 n
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通# S3 ?9 ?) `3 U
  134. ;==================================================# n3 p/ G2 O7 |1 W
  135. MMC3_BANK_CTRL          =   $80006 i9 u" c* w/ a: M- j
  136. MMC3_BANK_DATA          =   $8001
    2 C6 P: P! _7 M2 z
  137. MMC3_MIRRORING          =   $A000* o+ i) M; R& `
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    + y! i. r) F6 l% l5 H- C
  139. MMC3_IRQ_LATCH          =   $C000
    3 g; {$ o1 {& L6 m& {* {1 F
  140. MMC3_IRQ_RELOAD         =   $C001
    $ y3 v" ?; n5 k9 \3 M" j' f' E8 f
  141. MMC3_IRQ_DISABLE        =   $E000
    $ X. I  [2 M& P; g9 c+ {: ]1 v( ?6 p
  142. MMC3_IRQ_ENABLE         =   $E0012 a: ]0 d( |4 n, ?6 F
  143. , ]7 C) q) s8 ^6 `/ C
  144. ;==================================================, ^" Q: V) d) p/ e+ C3 h; _/ |
  145. PPU_Addr        = $0200& v5 R4 h  @! {  H
  146. Palette_Addr    = $02C0
    ! a; Y% n6 v" z9 o
  147. Sound_Bar       = PPU_Addr+$E0, B, m  P2 k# I, I  W( h: N, i
  148. ;==================================================
    ) I% @3 W/ Y, U! P
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D2 s: h. @1 i3 }) l
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11' k0 e2 V( D& L0 n# W
  151. PALETTE_UPDATE_MAX      = $2C. X8 P! C$ k3 x+ L3 |# E: I
  152. PALETTE_UPDATE_MIN      = $213 o& t/ T4 j, Z# D) B9 Y5 F( G8 Q( h
  153. PALETTE_UPDATE_INTERVAL = 60
    , E' P8 l7 e5 b! x6 [9 _
  154. ;==================================================9 ~! b- f) B  n! h: ^
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    $ N1 d; u4 I5 k4 K7 A
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    ( M5 ]9 D$ b& M" f/ `
  157. PPU_Addr_H          = PPU_Cur+$03
    & n( e  ]8 ?+ M# P- ?" g, u  g+ E9 w5 z
  158. PPU_Addr_L          = PPU_Addr_H+$04
    ! i: }! c# q( n7 l7 U# _
  159. Screen_Ctrl         = PPU_Addr_L+$01- h2 c5 Y" B+ D  U
  160. Screen_State        = Screen_Ctrl+$01% m; B/ o2 W* M" ]4 y- Y  i
  161. ;==================================================+ p$ B8 g9 s+ E5 @
  162. Use_Ram_Begin       = $50
    " Q  L1 f5 d  s7 M8 P' T
  163. ;==================================================5 _/ ~1 i$ Z( M) D  Z
  164. JSR_Addr_Op         = Use_Ram_Begin
    0 P0 p; s8 G: a
  165. JSR_Addr_L          = JSR_Addr_Op + $019 E" T( m4 f0 e* ~6 L6 ?* E
  166. JSR_Addr_H          = JSR_Addr_L + $01
    " m5 u- H& `% N, e; e( V! X
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    3 t5 {" K( b( a; E- Q' U8 k1 c
  168. Data_L              = JSR_Addr_Rts + $01
    5 j; i- @0 A9 K5 u
  169. Data_H              = Data_L + $01* J, k" e8 a9 l  Z& M& [+ J; P
  170. Data_Cnt            = Data_H + $016 i) q- ^7 U" T2 Q7 k
  171. Data_Buf            = Data_Cnt + $01- k2 V, v, c/ L7 s
  172. Nmi_Time_Count      = Data_Buf + $01
    / v2 w3 [7 }' s7 w) K7 x! W
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    # G8 m% o  K. s. \
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    0 [0 z& D% ]/ Y

  175. 7 l* D9 I% u8 g
  176. ;调色板刷新标志
    % f* t' S! r& S
  177. Palette_Update_Flag = Palette_Wait_Cnt + $011 N9 Z& g1 V9 D/ B1 j: X
  178. % L) Y4 u# \9 N0 l
  179. ;当前帧文本写入禁用标志5 g1 P) ?/ X/ C& b
  180. Text_Disable_Flag   = Palette_Update_Flag + $01# {- x7 V. h6 L# r& m* ~( }* r

  181. + Y" A% J* V; p
  182. ;==================================================/ _+ e2 g! N$ _  F1 T4 W  e. p9 k' W
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    6 ?1 \+ C6 J$ z8 a7 K, Z8 B
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    ! a0 b) K) O$ Z) g
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    5 |' j$ I3 l- v& Z; Y. O+ a
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    " F3 o! |/ a) L3 B" |
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    6 f, `3 k5 l, C- a6 M* K* \
  188. ;==================================================! ]4 V0 b- a* D4 o/ |
  189. Key_Keep            = Text_Disable_Flag + 1
    ! f) S" t# ~2 G+ k# z/ l
  190. Key_Once            = Key_Keep + $01
    ) \! ]2 t! S% Z
  191. Key_Kemp            = Key_Once + $01
    ) J% x$ v. v6 E1 `6 W% B
  192. Key_Temp            = Key_Kemp + $018 }' s& a+ H0 ]/ ~: Q3 W# p
  193. Key_Getv            = Key_Temp + $01% {9 C3 S+ @  I* i( d$ _
  194. ;==================================================
    - f, @6 L: u8 G6 J+ d8 G2 z: ]
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    / w2 K3 k" M1 E2 k, K' |
  196. Music_Item_Last     = Music_Item_Cur + $010 B/ f) V: {& d
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    : h4 q2 p1 M3 N
  198. Music_Cur           = Music_Total + $01  ;当前曲目3 L. v( ?9 V, T/ Z
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    & L7 E% K8 ~* }! S: ?' b
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态& b! S8 v3 N; O$ K
  201. ;==================================================) _' P. _: n, l& t# }' g: I
  202. HEX_Data            = Music_Stop_State + $01& r+ R0 S" U+ ^6 k
  203. DEC_H               = HEX_Data + $01
    7 ?6 r$ F) z- s2 |% D) Z
  204. DEC_T               = DEC_H + $01
    + {3 B9 J' w# B* n5 W
  205. DEC_L               = DEC_T + $01
      q; |/ z' B0 s4 [6 V6 D" z
  206. ;==================================================
    ; q# M# ^; ]8 Q; k* w& s; m
  207. Time_S              = DEC_L + $01/ X& V* m; E0 [& }4 l
  208. Time_M              = Time_S + $01
    8 m0 n0 z! k5 b/ r4 ]7 M5 w9 R
  209. Time_H              = Time_M + $021 ~# X8 [% B4 O. T
  210. Time_Cnt            = Time_H + $03
    5 C; n& B/ d9 n6 i

  211. - }7 }% _& N' ?2 l. f$ t1 n
  212. ;==================================================2 K3 u# I( I& G) M/ v# Z0 |7 b
  213. Music_Bank_8000     = Time_Cnt + 12 g& r0 [% \3 _' t
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    . T) v" e; _2 Y
  215. ;==================================================; ?0 m5 d, n* M
  216. Scroll_H            = Music_Bank_A000 + 1
    8 |8 B! o, z3 ^. {: j9 z3 Q2 W7 J
  217. Scroll_V            = Scroll_H + 1
    " x9 g  R  Z; c/ G) b; h% r, ]* b4 J
  218. IRQ_Process_Index   = Scroll_V + 1+ g5 {. t6 T- f9 G( z) R
  219. ;--------------------------------------------------" s" e( C4 M( y: R# Z3 \
  220. Page_Cur            = IRQ_Process_Index + $01
    7 G& A1 P: s# O2 C8 W! D1 X8 O! H
  221. Page_Cur_Index      = Page_Cur + $01
    4 K' ~7 `2 C, R" k) T  ^
  222. Page_Cur_Cnt        = Page_Cur_Index + $01# J* g4 g2 E. k- @5 V+ i3 [
  223. Page_Last           = Page_Cur_Cnt + $01" f, Q$ X' D" v% x( v
  224. Page_Last_Index     = Page_Last + $01
    , B' Y" V3 i# `- [" u
  225. Page_Last_Cnt       = Page_Last_Index + $01
    + ^6 Z1 }. M. {% G
  226. Use_Ram_End         = Page_Last_Cnt + $01
    + w. H: o. o, R3 ?" j
  227. ;======================================================================6 o3 I+ Z$ }. M9 D
  228. ;音乐数据块
    $ w. Y- R9 k+ K% d5 {; L/ G4 \) G

  229. ; F( {1 {& g! @
  230. .IF SOUND_BAR_SHOW_ENABLE
    , [$ s' K+ w3 r) R! V4 o
  231. ! D& C- [0 o( {6 R% F2 T
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK# F/ x" \2 I; s, B* L# W
  233. .ORG $9000
    ; r2 V/ @3 p0 V4 w
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    1 X0 g0 k+ C% a0 ^* _+ W% @( q0 Z
  235. 0 @0 x  G5 [. |& R' ]
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK# p) U" j, y8 Q% L
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    / t9 |/ o, J  J% T1 M8 q: x2 ]

  238. 9 @# e! ]. p+ \4 V
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    1 w4 @' d3 O; y- I
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    1 U/ `- C4 d' t$ k  L) }5 x" I+ r

  241. ( d2 o1 k) ?) {( U" N! `+ t
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK8 o6 n5 m1 d4 G/ w& k
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"4 v. F+ U3 b' A6 R4 \. ?
  244. ) t" y( @/ A) L
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    3 t# h( Y4 u, {' ^; ]3 f
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"% _7 M: X9 T2 l1 W1 e( s
  247. . A* s/ Q; I- r/ i: T2 t
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK) q+ B  d0 k2 N. H& w
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    4 |5 L8 M* j: ]8 ]; N# i8 ?
  250. 9 q( }8 N9 M: s/ j6 ~! n& D
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    ! f3 ?6 \" }7 ~$ w- L
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    9 y" R* L! A" ~6 ~4 k8 R! \
  253. ! G2 `. n! [6 p" h& f  h
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK& S' o' l  w* g( W6 h- \
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank", Q; H6 Q% o: H+ e9 ^' v# b

  256. + \, e8 v* {4 H! P* j+ ]. G, [' A% Y
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    5 {3 r* T+ ~* j* h2 j
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"6 q1 w+ [, Q" |$ S' Z$ C' L! C

  259. 3 A9 S9 ?5 j0 y
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK* K2 o% u" t5 t& f9 r
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"' [4 ^4 {2 G4 l& Y+ v
  262. 7 }( [  f- M! c, p- U
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK$ R! E$ }* ]2 S" {3 b5 @0 V
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    5 q! O" A- N* Q1 X

  265. 6 l6 ^9 b. n" R' `2 N' y. K
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    0 P  R0 Z- s/ Z  r9 R- c+ {
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"$ P+ U8 e; \* \1 O& j

  268. # U  p; u' ~9 D+ X2 `
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    3 o1 J" D5 z7 B; V  }
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    . e+ ?7 j7 l" _' A- n5 e  l6 K0 h
  271. - K$ X9 s7 p4 s% I: S1 T
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    5 A: F7 I- r+ w+ Q: i; i
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    / T4 @' x7 j5 ?7 r* p

  274. ' a' |+ ^& F$ P
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    # P& H3 B3 ]' {( g" R
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    7 Q  F: _. O( O% N; L- R/ t

  277.   j6 R9 Y* p6 ~' j" ^0 H' `( h
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    / {# P" k$ G4 W* k, C
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"! _" K$ b3 S* N% ?4 A% H6 a
  280.   }2 |& I6 k3 q9 ^% ?7 s! n1 J
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK; o* B) |, E$ A
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"* s! n0 L/ _/ G0 V- l6 r# Y

  283. 8 ?; _3 \, ^7 A
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK7 `" l; t9 p6 a2 G: P" q! M" ~
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank": ^4 |% }/ }, H4 l

  286. ! \  h3 c" A+ G1 Z4 e" U  c
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK: L' E4 i$ n, y/ o; c# t! v6 B1 N
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"7 T) Z7 G8 `* K2 _

  289. 2 `- `6 S, H; z) g- I3 P
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK4 Q) @8 Y% H2 S# t
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"8 @5 v! A0 ]% W- @2 @. A1 H1 H6 q

  292. 7 x/ H" x% s; _0 }1 X9 y# Y
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    9 o* C$ S" M/ C: Y: u8 g8 a
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"; ]/ g+ B3 _' U( w$ b( g) i# D

  295. , Q0 P+ u- }# z; b; b
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
      V! q2 M! X7 ~  y1 q7 [/ u# n
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank". v) r% @' J  j

  298. 7 u; o: B( s; _' _
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ( A' R% Y! Z) O3 B! A2 V
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"5 J( P3 u4 g& D  R
  301. & D: x% W8 O2 z- |
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK  f1 T$ x3 s; |
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    $ D2 Q4 G  L" _9 f
  304. # O' A$ f) B1 x1 o) w
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK+ v7 m4 c7 W& [
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"$ L0 \( U3 Y$ }: G9 N
  307. : m9 w% a/ Y* e6 y" Q3 G$ h9 ^
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    7 S* z/ Y( I6 p% C( I! n5 t, g
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ) Z2 D9 W( x, ^7 d9 ^, d9 g. o, N

  310. 6 H, v" u6 |# C" ~3 d4 m8 K& @
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    & R' r/ F. M# S/ [+ J
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    - k3 _6 X' c# G$ j# x

  313. 6 ?( e# W0 _6 ^. W
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    & P# Y& R6 j* z. Y" B: U
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank") Y7 \  o/ n8 z& o2 q

  316. ' p4 {3 u3 b0 D3 D, u
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK8 N1 C  c* N% R% C  O! o
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    9 _0 {6 B) E) r
  319. * f* J/ U! `' E, u9 X9 a
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 j) ]9 ]8 R/ L
  321. .ORG $D400: J1 o7 P, V, G  Z3 j) A- O+ }
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    % c) E) n( N0 c/ H) y& A
  323. + y; U5 [9 m. F% o9 `
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    6 g: r! [& J( `2 \
  325. .ORG $D800. x4 w- R+ f5 T: s' t
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"2 a/ B1 D5 ?: n% @% c; u9 |# q0 k
  327. * {" |- A0 a' l+ `- S

  328. 0 g0 K0 s7 J. s8 e4 f9 K3 E  z3 f
  329. .ELSE
    + R. ~! z- J' O) \5 s$ l- M4 M

  330. ' T* H' n% ?. |! s
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    " p) k8 ?0 f8 K: s
  332. .ORG $9000
    $ A9 t3 p. j8 A6 _6 D. ?: X
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank". T! j, C3 p; F: O  Z
  334. 6 b. L6 L7 Q. g* ]
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ) ]% a& {- n& d
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"4 _4 G: S% s+ b4 r: Q

  337. . \, ~& H$ N# F& m% }
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    1 q" d4 R& S) D% Q$ K  A0 b2 W
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"; t, j! y+ F# D6 D: D* W

  340. 9 Z2 t, c; ?6 p4 r6 I9 m9 z
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    8 ?' b. X$ x, U/ x: N' F; G
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    6 ?8 Q, G$ H3 |# v

  343.   H4 z/ G* ~2 j3 n. L
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    % Q0 z# Q7 V) q; b; K
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    7 c% M$ h1 B3 r% `: M. A1 p
  346. % q, |8 ?, l, W& A9 _  O; e
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    * ~; T1 U9 O2 V
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    1 _9 V* L3 S7 Z% n; L4 ?
  349. 5 [! q! O9 r2 E0 X
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    . `( k- `% P: n
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    / `; \+ Q5 t* Z5 k6 S0 i
  352. $ n6 O0 Q. c. u9 h0 s* m1 V2 d
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK0 f* {3 r% F" x" _1 B0 q
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"7 k* h& E; I0 s8 L) a

  355. : f, e9 v7 B; t
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    5 j9 |" h2 _% F7 W1 n. [
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"0 R  ^# d2 w2 K, `6 R7 |

  358. " Y& f! l+ d: e( p
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    1 q) D: Z  v0 Q+ Y: a. ]3 K, E% B
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"2 F$ M+ b: j6 e# q

  361. . {) e' m5 |) C3 q: q
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    " j/ D9 n9 P/ q; v; A
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"9 C1 e  J$ X7 _% g0 c
  364. 3 S: i) N$ ]6 T' R6 S
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK. K3 u. T4 X5 o3 ?# F; {
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank": P  E) w2 H. U9 E% |! p  `2 n9 I9 Y
  367. 4 q: ]  `8 F7 h( H
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK% A1 |5 Q. F  J* v
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"* |, U+ _7 D% p! ?, r" F

  370. - s& G% F1 l! s9 i2 I
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    7 z. O2 ^7 J  E' H
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"! c7 u' }% d" z0 D! e
  373. & |& R/ u9 T# d/ i1 N2 W
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    8 v( O& S: Z( ~2 i
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"# d  \! h- @5 {) A, {
  376. ' I8 u  e+ R: q7 t; R
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    2 I+ t( R- ^# I  h1 x
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    8 @5 z3 Z5 t+ t3 h$ w! s

  379. , m/ s9 D: @+ n8 M
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK; s; n: T  g/ e; C
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"  o7 m8 D- k; ?# Q' R' V
  382. 2 ?$ X4 ]6 I. r/ S7 l5 H# B2 T; N3 `
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    7 S* r' _, ?( g
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    4 e0 w  p1 X3 C& P+ Q5 _" M
  385. / l2 J( M: e3 p$ u. y/ U: I
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK7 @( T& ?' a* \4 t/ ?5 z5 [+ e
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"( |2 Y, q/ e5 Q8 G
  388. : \9 h1 [* K* ^  m( p/ h4 k
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    ( e2 G, I4 ^6 O. n
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    3 L. i2 E2 Y  `- _
  391. " p- \: g5 r: h; L" b
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    5 [$ F& L# o0 ]
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    7 t1 U/ u1 W9 X: m0 T

  394. / A5 n6 J1 J& ]' I, a/ [- Z
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    4 T+ v3 b* r( M5 D6 R' q
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"7 o+ F! h+ w4 N$ F4 M. F

  397. $ H. p' o& ~- c# u
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK* m1 K/ ]5 `0 i: r7 |1 S
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    . f9 N2 C: \' N* Q
  400. & E- |' e4 V0 I4 f, O! P6 ]$ I
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    : t* G7 D7 _& m! \! g& V* ]
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    * Z4 |* b" y" a( Y) ?
  403. 7 B0 K( w9 Y5 h6 N% ?
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK+ c- f+ v( M1 L" `
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    ! g' f  l+ w9 ~4 N* C+ j7 O0 O; q' K

  406. + z( _0 c6 e# K2 O
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    ; [) J# h1 O0 f  a
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"! l3 a# ~8 s' o9 m- w$ X

  409. ; L8 n4 z; _5 ~- p* P! J! V, Q
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK: l' e& E3 z& h4 T8 H3 ]
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
      w# X6 f- Z3 k* o  R
  412. 9 C% I9 L  m% D; f$ K5 ]+ `
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    $ E( K. L1 z; D3 M: b
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    / g3 w5 R, K# k! a7 [; g/ ~8 _, E

  415. 3 p0 q0 X8 G" o% Q
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ! G/ X7 P( k' t2 s
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"1 A- E1 O9 h, D( D

  418. 6 W# s/ f" r; o/ K) p/ r
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK6 v' d/ @) z0 x1 u( e$ p5 B, j
  420. .ORG $D400
    : B1 ]  e8 I3 j
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"* k) d, ~1 P2 N. u
  422. 9 O  T6 z6 B& j0 {
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK* b+ G1 b$ n) p# `2 e' a9 W
  424. .ORG $D800& g/ v' s! \. z. X1 c" P, Z
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"4 M+ c) ?! k; g
  426. & N+ B8 @: B+ v
  427. .ENDIF
    - N9 R/ `- w# Y% I& }
  428. 5 Z' I$ ~5 r; l
  429. ;CHR图形数据1 t: m% Q2 Q+ @8 k$ L
  430. ;======================================================================
    * ]: W) I. z6 w3 U& g/ P
  431. .BANK CHR_DATA_BANK
    ' B1 D3 @' `; `5 U& k0 m* A
  432. .INCBIN "chr_bank/chr_data.chr", k6 H1 p. p) E6 b8 ~

  433.   r( L) C+ P5 n
  434. ;======================================================================- V' D: v- ?2 b: ^7 M
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    * \4 R! m0 v+ h( `$ V! ?. h& P
  436. .ORG PROGRAM_ADDR; n9 L/ a' o+ f8 k6 L4 z

  437. ) \/ |. G1 C; j5 |/ T, v) k
  438. ;==================================================
    . a' }- z, y8 _/ G( H# D+ }9 P
  439. NmiProcess
    6 s( X: G4 u* d* X% Y4 X+ x
  440. 4 W; Y2 O! j: \% x
  441. ;关闭屏幕控制; \% \' f& y2 g0 \2 d6 L
  442. LDA #$00+ z6 I$ d4 p6 R: N4 `/ |
  443. STA PPU_CTRL
    + E1 F7 e' l' O
  444. / I0 {$ J) B4 j! Y
  445. ;没播放音乐就不需要触发IRQ1 P5 ^/ U) S6 z; Z+ A
  446. LDA <Music_Stop_State
    ) C6 a* F3 P6 [) P7 t+ g  S
  447. BNE NmiNormal5 L5 D- N& \2 t: A4 n4 j( g

  448. ! W5 S3 n2 d8 q% s
  449. ;重置IRQ索引
    6 t4 T  Q' Z' h2 Z- |' |
  450. LDA #$00
    ; j- {7 `% c: h/ b1 i( Q
  451. STA <IRQ_Process_Index
    ! x& M% ], L" a  ^
  452. 8 B% X9 Z( a5 k8 ]
  453. ;时间秒数为空则跳过1 J: l- c/ J& l
  454. LDA <Time_H
    / x* B1 x! b7 F- k$ m1 x9 ]
  455. ORA <Time_M
    ' z1 m9 D+ `6 y  q. a2 M* C. @) ~
  456. ORA <Time_S
    3 n1 [& m$ v; a0 N( J
  457. BEQ EnableFirstIrq
    ' J2 \7 _9 _2 D3 S  A% Q

  458. ( ]* `: r7 U3 l: v' b7 x  J( w0 b9 y
  459. INC <Scroll_H- [# n. k/ _8 k! b' F2 W" I0 r3 w9 n

  460. $ E1 K9 }" ]4 `0 M' D7 V) A
  461. EnableFirstIrq
    ) q* M! y# y- F8 O1 V0 O
  462. ;80条扫描线后触发IRQ. n: ]( Y  a% k$ A& L+ A
  463. LDA #IRQ_SCANLINE9 X" t+ _6 ?5 A
  464. STA MMC3_IRQ_LATCH
    ( C5 [/ V- @  S7 d" n& L
  465. STA MMC3_IRQ_RELOAD
    # x3 l& L/ ]5 C& b" C) ?. ?
  466. STA MMC3_IRQ_ENABLE* l2 l  v* J% _, I# b2 g% `
  467. CLI: I6 y* f3 h, d" Z4 P. g$ I- q+ K9 O! Y

  468. 2 l; t* @4 y/ {" [8 ?
  469. NmiNormal5 I$ @5 h2 e1 m! C3 i# o! k
  470. 1 E* j1 @& t5 r1 j, B8 i6 o
  471. ;处理PPU图像
    4 B6 g. `0 ]$ J- w
  472. JSR PPU_Proc, q$ Z. m# b. a4 X& f0 g

  473. & e! x0 g9 c% F0 |
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)3 t9 q# \( C5 n
  475. LDA PPU_STATUS. C0 s% i3 R- V! @
  476. ;LDA #$00
    % b4 t3 Y* g8 D& Q
  477. ;STA PPU_OAM_ADDR
    . s7 ?  k! B4 Q! {& S0 T
  478. LDA #OAM_TEMP_ADDR / $0100
    ; x8 W) L& k: a$ v6 q) }8 e4 _
  479. STA OAM_DMA
    ( N( E- Z. q! N& G; n
  480. # W9 D4 q* i. I: l5 k& ]* o' Y) C
  481. ;启用NMI中断2 x1 O; S1 a9 k8 v. Q& c
  482. LDA Screen_Ctrl$ w2 c  f% @1 o5 @) B: x
  483. STA PPU_CTRL
    + K1 x9 K+ R% J

  484. 5 i; h& b! s6 i: L% u+ w
  485. LDA <Text_Disable_Flag
    : y: J# M. {: p
  486. AND #TEXT_DISABLE_RAM
    $ M6 s: k) J. Z9 Z
  487. BNE Nmi_Sound_Play- @% J% Y( s7 d7 v8 K" ?9 u& x

  488. ! G) a, |1 v6 Y2 \* `4 U  e
  489. ;处理手柄输入/ b1 k- n1 b1 [1 [9 f% ]
  490. JSR Key_Proc
    + @$ ~4 l' \, i3 Q  _0 _
  491. . B5 {8 L! b9 b3 w2 J! x
  492. ;切换音乐(手柄触发)
    # V. i3 E* H0 v, o
  493. LDA <Time_Wait_Cnt& i( ?' r# Q3 R' v$ D, h! U0 C
  494. BNE Nmi_Cursor_Arrow% \3 p' v; |5 F7 R) `. Y$ C3 n
  495. JSR Change_Select_Item& v# W( j; V& X! d
  496. ! r6 W" D3 y2 J% i# }" V: K+ e& B8 x
  497. Nmi_Cursor_Arrow* P+ _( u0 l1 g3 b8 f' E$ J' H

  498. ; G7 M  [8 T  C3 W( h8 j
  499. ;处理光标箭头4 a( ?: E$ [$ y1 O0 a9 }6 U
  500. JSR Show_Arrow& d6 @* F2 y5 \8 C& f6 i

  501. ( ]7 Z* g0 Y9 h' t* s# V
  502. ;更新调色板; b$ |5 O' R  T" c
  503. JSR Update_Palette_Data
    $ I# |& p7 \% \6 w' }
  504. 1 p# ^8 J7 @1 b& \
  505. ;显示时间(缓冲)
    7 K8 k: L" H/ ?& q% J' E
  506. JSR Time_Show9 `( D9 @% g3 D

  507. 7 D4 k, h* g* V6 r* m; c+ [
  508. ;音乐显示(缓冲). p) ?7 d$ n% E; X0 s- \
  509. .IF SOUND_BAR_SHOW_ENABLE: a- C, d, G$ e' O; ~; Z9 C
  510. JSR Music_Vision& ?5 c9 f$ H  Q! Y/ l, L& E
  511. .ENDIF
    . F& k* f% H% Z. M9 _2 U

  512. / T& }: g1 M! v, |9 A
  513. Nmi_Sound_Play. i6 v4 u8 B  ^0 V  S/ C
  514. ;播放声音9 {* a6 h0 d. J, q
  515. LDA <Music_Stop_State5 H+ K/ O% ~! V( v* O# P8 |9 T
  516. BNE Nmi_Time_Wait_Set- G- U& A8 z7 I, o- W9 [3 l
  517. JSR Sound_Play_Proc, ~+ Y* g( p2 o& [$ h8 I* K

  518. # y3 N' s- I/ G- V# b
  519. ;播放计时
    ; t2 F! E+ T. @) a$ T
  520. JSR Time_Count
    5 n: N% i+ k0 h/ V/ `# L
  521. 0 y0 H. ~0 q- \* C" s: e4 X$ s
  522. Nmi_Time_Wait_Set/ \1 K; {( U, O( D% `! K4 r
  523. LDA <Time_Wait_Cnt
    0 i. b1 f" Q: C8 N
  524. BEQ NmiNormalProcessEnd
    % Q( z- v. i, u8 n- a
  525. DEC <Time_Wait_Cnt
    % O0 \: c; w3 @. k1 x- H) @0 S
  526. NmiNormalProcessEnd
    ' W2 h. M; W6 F2 J$ f( [
  527. & {5 I8 w" k$ F! R
  528. INC <Nmi_Time_Count
    ) _* Z2 u) `8 i2 y7 c

  529.   k# J- \9 t2 L
  530. RTS. [! F; M% Z/ v5 b; u

  531. ; e2 e/ v+ v% m$ b- L1 S$ J
  532. ;==================================================
    2 ^: E+ W. q/ x$ _& {6 B
  533. Init_MMC3
    9 D2 T% J  V$ V9 f1 U# D
  534. ;==============================
      L4 U$ `" M  n2 e
  535. ;禁用IRQ
    * Z# C; ~. V* V6 d1 p
  536. STA MMC3_IRQ_DISABLE
    $ N- Y0 n3 }4 J9 Q1 X. `

  537. : l. N& M8 g/ {8 L. Q6 }- ~% m
  538. ;水平镜像- T2 u3 g  a9 g8 L" Y
  539. LDA #$01
    5 z/ d8 N! b0 \' @  L6 o4 D
  540. STA MMC3_MIRRORING2 h$ d$ h* m0 F( i7 K2 I( ]

  541. # V" E2 F. S3 H6 h0 k: J
  542. ;初始化图形bank
    6 ~4 r# H+ l9 p. r8 c
  543. JSR Init_MMC3_Chr_Bank
    - f8 f) d, X& K$ w: R% U9 T
  544. & ^9 N( e3 d/ w7 p! [, i
  545. RTS
    % B; W+ N5 Y' I0 |6 K
  546. ;==================================================( H* a' l4 L* F- l, f1 Z) T( C
  547. ProgramBegin;主程序
    $ q, }& N9 H+ T, z, o
  548. LDA #$00
      H: q) j+ e5 @' @2 \" K
  549. STA PPU_CTRL
    * c* ~( x7 g9 T3 A! g
  550. LDA #$005 D% D: p8 [; Q- X
  551. STA PPU_STATUS1 [4 l; u8 l2 n  C) j. d- |4 b* Y2 S
  552. STA PPU_MASK+ y5 L7 Z  `0 I: |* ^
  553. STA JOY2_FRAME
    1 u! B% d' i/ V3 d
  554. $ p7 m. v4 y+ o& Y7 `
  555. STA PPU_SCROLL
    / ?( ]1 a+ @" C
  556. STA PPU_SCROLL
    4 n9 d  k+ ~) c6 G- F) m2 j% t8 X
  557. 5 Z0 H. y# T  v  l
  558. ;==================================================- V3 g% p2 h+ W$ K9 [
  559. LDX #$FF7 e1 @3 j$ A0 k
  560. TXS. [: @9 |2 n8 T. K$ [8 H0 g
  561. ' |( a' Q- i* w
  562. JSR Init_MMC32 X& h) C2 O4 j5 _8 p6 |4 `

  563.   X# G7 n. O! @3 |
  564. LDX #$02, e; n$ @+ }8 ~$ i6 J; q- w
  565. Check18 w8 V( ~& l9 i7 h% H
  566. BIT PPU_STATUS
      g& t7 ^% Y; [/ I/ k0 l
  567. BPL Check1
    5 r0 s0 T0 _; r
  568. Check2) H9 m, {$ s, d# T- m6 d9 X
  569. BIT PPU_STATUS: e. h/ \2 V! t' G
  570. BMI Check23 T0 h/ X/ e  e: Z1 `
  571. " P8 d, E8 ]& T5 p
  572. LDA #$0F4 o8 y  ~, a: F* M- E$ g: c
  573. STA APU_STATUS
    : b) r/ _! K) s( T
  574. LDA #$C0
    5 C; b1 L9 H- V8 L
  575. STA JOY2_FRAME
    ; b5 ?% Q3 @/ Z' _* _
  576. % w2 T# \2 b* b
  577. LDA PPU_STATUS0 J# q3 z* y4 h  w& S* c3 A
  578. LDA #$10
    / ]; f4 t# Q/ @
  579. TAX7 r: V( z/ X" b$ B8 p
  580. Check3
    , G3 s0 p3 \" a
  581. STA PPU_ADDRESS6 W) q" X# M4 h
  582. STA PPU_ADDRESS! o  O. o0 |- A0 h5 [
  583. EOR #$00
    ' [) q, x5 I9 ]: v
  584. DEX
    : Q( D  ^: j. W3 z0 z
  585. BNE Check33 R0 x7 P/ B" `. X  g3 k7 w4 z
  586. ;==============================$ d6 @+ v5 }/ l4 B
  587. ;调色板清空1 {. ^. x' y: I1 K7 j8 H/ n7 @
  588. LDA PPU_STATUS% A& R% V9 }" Z/ z+ K
  589. LDA #$3F
    ' P' A- ]. S6 e7 L3 _1 q
  590. STA PPU_ADDRESS
    5 s- u2 Z1 T0 d$ T2 F+ N* D/ ]
  591. LDA #$00  K( Q  ^, u/ v
  592. STA PPU_ADDRESS0 N5 }! @9 V1 x% N% v
  593. LDA #$0F
    6 S; E6 _$ W3 x! b# u' a. F: F
  594. Palette_Clear& v! ^- A6 L0 U3 Y0 \) Q; x
  595. STA PPU_DATA9 v* _; g+ d3 w3 a# s7 y4 ?  ?; v0 [
  596. INX
    2 j4 ~4 J/ ^: x; b; U
  597. CPX #$20( l7 g+ y) }" l- b8 y) H. N
  598. BCC Palette_Clear
    ' Z3 X. ~* `; n' O7 c: u
  599. LDA #$00! i0 J1 \4 k1 Y; p8 F7 P$ O2 r
  600. STA APU_STATUS
    % ~* Q/ O# }1 x: ]+ C8 `
  601. # d0 Z* n# F- t; t5 K* @( x  w
  602. ;==============================
    4 U6 Q# K9 l! U( m
  603. ;RAM初始化
    0 J/ W1 n2 Q" C9 X2 V, ?
  604. RAM_Clear_All
    ( Q! ~3 \+ V+ T4 R5 O: L2 g3 r
  605. LDY #$00) w7 u+ p1 {& M! Y, A/ L
  606. LDX #$08
    7 B; |% r1 v* y/ m) Z
  607. LDA #$006 d4 `  }" U. {! j/ P) B
  608. STA <$009 w% L7 o. @! |* I3 ^- v0 c
  609. STA <$01) b  B* F  j  y9 s. S8 I
  610. RAM_Clear_All_Start
    ( B0 F) g. Q3 [, U4 o+ C
  611. STA [$00],Y
    ) ?4 _& Y+ @9 j
  612. INY4 f& X& N/ m9 V: T/ `1 g
  613. BNE RAM_Clear_All_Start
    . {8 s9 j( ^  U( R' j- d
  614. INC <$01( t, w" N- P% J5 _" O. a5 v
  615. DEX
    $ w7 J5 o% o  Q* O' I% k
  616. BNE RAM_Clear_All_Start' N' h: L7 Q1 T

  617. 8 b# Q8 C  R" b, x
  618. JSR VramClear
    ! ]3 M* l2 D( D3 b5 |
  619. JSR VramInit, M  b/ W1 Z1 V* ^- Y
  620. JSR OAM_Ram_Init; e; f2 R$ x( N0 Q$ r) h* u, @
  621. JSR Init_Palette_Addr
    3 e/ X& T/ v- b. F2 b/ B

  622. , f1 h: @0 D. P5 j6 w) \! ~
  623. LDA #$FF
    4 e% t( {  I* ~0 z
  624. STA Use_Ram_End8 o3 W) s- n3 J: X2 u8 s5 M
  625. ;==============================: F8 U! G3 X; _) S* Z' r. t* [9 p
  626. ;初始化背景调色板1 @0 Q$ o% }; b+ @( I) r" [$ V
  627. JSR Set_Palette_Color- v2 ?) o8 `  Y- a- }' v
  628. JSR Set_NameTable_Attributes
    9 {6 k6 K: _1 Z. C* U1 q
  629. + i* ~4 p3 Y/ g4 S  A5 M
  630. LDA #$00
    2 B5 t% `7 L- \! Y
  631. STA PPU_OAM_ADDR
    6 f$ A$ h0 X- ^6 q' i: [
  632. LDA #OAM_TEMP_ADDR / $0100
    5 p! z- M+ P8 {& N2 S9 T4 V' g
  633. STA OAM_DMA4 H) [/ O% p! t2 b$ g. F8 b

  634. $ R) O8 A9 z6 d7 B! v1 m) A
  635. JSR Sound_Reset_Proc
    + @0 r0 ^/ [' ~6 K3 v/ s
  636. JSR Set_Sound_Total
    $ _0 J  C9 {, R# e# D- ?

  637. - F, X; q' g3 ^4 `
  638. Init_Start_Music3 U/ A' _6 Y7 I1 _8 I
  639. LDX #$00$ E  E& v+ E8 @$ Y/ n/ i) n
  640. Init_Start_Music_Write
    3 G) c" g5 q( Y& I. C
  641. LDA Sound_Start_Port,X9 y+ d! s* y! R7 l( T/ X. w
  642. STA <Music_Cur,X' M+ }& |# j; S( ?" h
  643. INX* U' i7 p* {! v8 M+ H
  644. CPX #ITEM_MAX_SIZE; T1 g; K. j  I- a0 [) {
  645. BCC Init_Start_Music_Write4 I9 ~9 Y$ t- C  D* V! Z
  646. 6 _% ~' |% e: c4 E
  647. JSR Show_Music_Text7 z% y5 G( w$ H% A: M9 f' e3 O/ `
  648. ) O" T* Q9 {* n1 J
  649. .IF SOUND_BAR_SHOW_ENABLE
    * J- E1 \! p' R  _+ P2 R8 L, l
  650. JSR Sound_Bar_Text_Set7 Y' n' l) c6 G' |2 w- z8 n
  651. .ENDIF
    3 U: r, I7 y' t6 j# J# x6 S

  652. % i; p$ n0 b0 I3 G4 o
  653. .IF Track_Name_Pos( ]  p" ]- a& A5 j
  654. JSR Show_Track_Info- j! l6 c& e% k/ |( _
  655. .ENDIF/ h1 V4 z6 t) _  d' [

  656. 3 k0 X! [9 H+ x% }9 q
  657. JSR PPU_Proc
      d8 L0 i9 R& ^2 l9 Y( E+ g& P$ T

  658. ) V6 r! ^( v7 y$ e  z8 j
  659. ;==================================================
    9 K* g  a+ U3 S$ I7 t! F# q
  660. ;音乐bank初始化
    * e/ X! o! l1 ^, r2 g
  661. JSR Init_Sound_Bank* Z' D' x6 H/ d8 {
  662. - _8 z* c  D4 r+ H: W2 W& S- l1 `
  663. JSR Music_Show
    : g0 C. o0 H0 t8 o5 i
  664. JSR Time_Show
    ! K0 \4 F3 ?$ v; v
  665. JSR Music_State_Show
    # M. \$ k& W4 r
  666. JSR Time_Delay/ x  p0 p) W) M" x/ h3 l
  667. 0 v* {& Y- c7 O
  668. LDA #$01
    1 c! ?+ G8 t! Y4 \) J6 @
  669. STA <Music_Stop_State7 \2 O! }+ l5 n* P( V+ e# l
  670. $ c9 Y5 y% s) ?% \
  671. LDA #$880 R9 v5 I2 e5 o* g/ z% p
  672. STA Screen_Ctrl
    ) P% I3 m. a2 p( ?) C
  673. STA PPU_CTRL
      _# o+ v, y) O$ ]: u

  674. ( ]1 F: B9 b  Z" C
  675. JSR Show_Page_Text9 _5 H: m/ s: t. T( c( n8 m4 O
  676. ( Q% d  d! q1 }, b7 q% Y
  677. LDA #$10# `" M$ I- L0 U- s- W! y& f$ `# J
  678. STA <Time_Wait_Cnt, e) l4 |0 q; ^5 V7 H! @
  679. 0 E9 k* C/ W, B3 n
  680. Wait_Time_Over7 j5 u" L7 D2 o% Q1 J4 U( F3 _; `$ V
  681. LDA <Time_Wait_Cnt
    7 o' x- D% c" A& o7 g; B& E5 S* B, w
  682. BNE Wait_Time_Over
    9 F8 M! b% e8 W7 ^

  683. / I' _2 C* o7 H5 p. o
  684. JSR Show_Arrow
    ( L( `6 j  Z/ y$ e) M- x& J
  685. LDA #OAM_TEMP_ADDR / $0100
    " x+ h3 y  ^8 j( t% [
  686. STA OAM_DMA
    , d0 A3 M$ E1 c* N1 i
  687. # {7 g' q9 v/ S3 T7 U& ]
  688. LDA #$1E
    . T9 E6 U0 X: B
  689. STA Screen_State, C! L' F) O* b; J
  690. $ u! o& _$ g  g5 S2 P& J! q$ y
  691. LDX <Music_Item_Cur
    6 x& G1 m/ I' |& t' ]/ J
  692. LDA <Music_Cur,X
    . l4 i7 t" {6 i, R* t9 D4 X
  693. JSR Sound_Init_Proc" w' w  Z5 W; j% x/ |4 S& m
  694. 7 A& ^  P7 r: Q) r& `
  695. CLI
    0 c: M5 V: l4 [0 x
  696. JMP MainLoop
    ) G! S8 |% c  L* m; W

  697.   ]0 C5 V6 s* y8 {- ~  ]$ n
  698. ;==============================: Z/ N" }: |9 X
  699. Time_Delay;延时等待/ i5 r6 Z. X, @7 W* U
  700. LDA PPU_STATUS$ b  N% D& o" U! `- D
  701. BPL Time_Delay9 M! y- c6 z& J: n, s; g2 T
  702. RTS
    . N# r# s, B  B/ |
  703. 9 ?# i( A/ f! S; r8 P% k3 o; F
  704. ;==============================+ s. ~# D3 W: r4 k
  705. OAM_Ram_Init;初始化精灵内存
    # L9 c/ a. _& X  M
  706. LDX #$00
    5 t3 Y- ?, V* @( p  I' m" j
  707. OAM_Ram_Init_Write
    ; f, g( L. {6 P
  708. LDA #$F8+ C* E1 m" Y) M( E
  709. STA OAM_TEMP_ADDR,X
    5 ?+ o+ H8 x$ R: ]! n
  710. INX7 x7 E4 o! K8 Q$ n
  711. LDA #$F8
    ! @  G5 l9 {+ B1 E# n5 @, p& p- d0 b
  712. STA OAM_TEMP_ADDR,X
    . X! g- p1 Z3 J$ D
  713. INX' n+ v2 `: `1 i. M0 N
  714. LDA #$00( c* c- ^7 X1 R7 m' \+ {. C
  715. STA OAM_TEMP_ADDR,X
    # ^# \  U' f# P/ E
  716. INX" b& [8 }1 Z# u6 J- z' J
  717. LDA #$F8
    9 |- r9 n: E# F9 b3 d
  718. STA OAM_TEMP_ADDR,X# Y% w; f4 l4 ]  K% _! q
  719. INX
    , F, g4 z" l1 {' N( M
  720. BNE OAM_Ram_Init_Write: }; @8 D; @. ?8 ^: Z. W) M$ p
  721. RTS% j" r2 C5 s+ V, w9 F4 {
  722. 9 W: L; B7 p- E- r" j- B
  723. ;==============================
    ! u. ]  R3 H. ~0 p; ~2 T
  724. VramClear;初始化图形内存1 H3 O0 n$ q) T, S6 ~# Z5 Y
  725. LDA #$20+ B; m! m7 g2 u
  726. STA PPU_ADDRESS
    / z3 M, [5 o9 k6 y" g
  727. LDA #$00" q8 i" d) k) q9 Q: S* {
  728. STA PPU_ADDRESS; Z0 e8 v" U: z! r
  729. LDA #$00- B0 ?! J0 _4 q, J9 {
  730. LDY #$00
    - S# i0 X6 a7 ?% E+ U. X
  731. LDX #$10
    " I) \+ k" b# F
  732. VramClearWrite5 M/ R6 o# v1 ^: d
  733. STA PPU_DATA
    6 A# u; j5 j" H. Y7 T
  734. INY  ^& {* v7 j! }  g, D$ K. k! g
  735. BNE VramClearWrite# c: Z" c' q2 V$ _6 D" {: e
  736. DEX
      F6 l$ N8 b# w$ ~; \* G
  737. BNE VramClearWrite
    & x& w- K$ D. ?. W
  738. RTS
    ' i5 C% k) ?4 o: p( l

  739. ' X) g4 M4 L" }% \
  740. ;==================================================5 s: A7 j! G6 }4 A, b* X
  741. ;设置MMC3图像bank
    . O: P8 \' M+ _
  742. Init_MMC3_Chr_Bank7 F6 G# o3 F+ S" e+ m+ T
  743. LDX #$053 H! }* ]: g) D
  744. Init_MMC3_Chr_Bank_Write
    . p8 s6 t# J! @, F- E0 s# k* d
  745. STX MMC3_BANK_CTRL
    ; t' L3 c: V: J9 S
  746. LDA MMC3_Chr_Bank_Data,X) O1 w% c# d3 T6 Z/ e  a: A
  747. STA MMC3_BANK_DATA; X; H# x' Q- R8 w; z0 d
  748. DEX
      P9 t: n3 X/ l
  749. BPL Init_MMC3_Chr_Bank_Write& J0 V) x9 J  p. Z$ T; k* O: S4 V
  750. RTS: L' ]7 N& w4 Y8 |- h
  751. ;--------------------------------------------------) \3 Z' [/ `5 P7 f2 a# K6 m  ^* t
  752. MMC3_Chr_Bank_Data
    9 e( G6 r: n4 g# V% W- Q3 u8 c0 g) c
  753. .DB $00,$02,$04,$05,$06,$07
    5 p& E2 t5 Z( J, ]

  754. $ ?% t, U, K- p" `; a  B2 ~, e
  755. ;==============================
    5 F8 [" G9 D. o  ~' J8 v9 A
  756. VramInit;初始化图形内存( A9 N5 Q5 m7 L. I0 L( N! }
  757. .IF CHR_RAM_ENABLE
    ( B% v( J3 `4 c1 |1 y8 l+ ^
  758. LDA #CHR_DATA_BANK7 m) w( C6 d# I3 X' c; l
  759. JSR Switch_Bank_A000$ v4 O( F3 X4 r6 y. `) p
  760. LDA #LOW(CHR_DATA_ADDR)
    / Y& J3 ]- i4 ]
  761. STA <Data_L
    7 P. m/ j' R4 P3 G3 t
  762. LDA #HIGH(CHR_DATA_ADDR)- v) r; N6 i- k; b- S. Q
  763. STA <Data_H
    ! B. |7 F" ]" N: ]; i
  764. LDY #$00, N/ E/ E9 I  d
  765. LDX #$20
    / L5 V" f8 g! g: C' |- |
  766. LDA #$00( d0 a# c3 q6 {4 [; Y% H3 x/ O& [
  767. STA PPU_ADDRESS
    % e( e: `8 `/ ~
  768. STA PPU_ADDRESS
    . A; p3 Q4 `# @& B8 w, y
  769. VramInitWrite
    + w* `1 h0 D, ?; c! C  E5 H( g
  770. LDA [Data_L],Y
      N8 Y, O9 @. @0 r& \! @. i% N
  771. STA PPU_DATA
    % ^! x5 w$ j$ [* b2 ]
  772. INY' a' u; k6 Q; d; c7 X
  773. BNE VramInitWrite
    5 v8 b2 h, @: m: E1 i/ O
  774. INC <Data_H
    5 M3 U7 o$ h  u$ P
  775. DEX1 e9 I" A- [& m* V! N+ U7 f+ b
  776. BNE VramInitWrite
    - r8 f* w$ G: n' z/ P9 J2 w! Y4 _
  777. .ENDIF
    % O/ U- ]5 x9 @
  778. RTS( U8 l6 W. b( v# L# O% f* S- O

  779. % u- n% |" V7 d' R' g& Q6 h, z, D
  780. ;==============================
    2 Y& w* W. ~, E
  781. ;音乐切换+ s3 E8 v6 G" I0 Q0 c
  782. Music_Play_Change4 ~' X# h  G' f' o; d, U- J
  783. LDA <Key_Once
    $ Z2 L. \* X& M8 |4 x3 R
  784. AND #$FF9 |3 \% J4 ^" L; n
  785. BEQ Music_Play_Change_Check: L* b$ e$ r) Y# P( ^- Q# H

  786. + C( x9 ^0 u( j1 k" L
  787. ;禁用音乐条刷新+ U: a) z1 k, n1 G
  788. LDA <Text_Disable_Flag
    1 @3 a8 ]' ]5 G  P9 G0 w* t6 d$ `
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    2 i$ X7 {" s+ F/ u" w
  790. STA <Text_Disable_Flag
    3 B1 q* X4 ^. B4 `

  791. 2 R' f% U( ?  Z* e; r) E4 `
  792. Music_Play_Change_Check/ ^- Q0 H7 J. u9 m9 a5 f8 g) M
  793. Music_arrow5 m+ O) E2 b0 H
  794. LDA <Key_Once
    5 w  W  u: P$ n/ R. t9 V2 j
  795. AND #$0F
    - |8 t# A6 y3 p: C3 r& B0 d; D6 V
  796. BEQ Music_Play_Change_End- x, j' \! V9 X9 B- g' e
  797. JSR Music_Track_Change
    - @/ Z; Z- w$ K8 q& {2 h# A
  798. JSR Sound_Reset_Proc. P$ s# `4 y, q
  799. JSR Music_Show# J8 K9 O& f. y2 }
  800. Music_Play_Change_End+ `" c/ ]2 R1 Z. R+ r# Q
  801. RTS) r. w# H. n9 H$ J
  802. 1 q5 i; M0 M- f9 L# `% P, F
  803. ;==============================
    9 \% Z+ \* R9 y  i! F: u1 |
  804. ;音乐曲目切换
    4 `/ W& Z+ w2 [$ C4 ?' X- ?2 c; T3 V
  805. Music_Track_Change
    - h9 `; x: F* k0 W' o! K* R# w
  806. LDX <Music_Item_Cur
    ) z2 Q8 I6 J* n; p  G( m
  807. LDA <Music_Cur,X
    5 _& `7 P6 B/ b
  808. STA <Music_Last
    / C1 }; a2 \; F, p" I- J, S
  809. Music_Decrease
    & G% H" z5 ^1 ^/ p7 Z& g% G3 B5 ]
  810. LDA <Key_Once
    & m6 r  X( o0 I8 E9 u& `- T' u
  811. AND #$42
    " H% |! D+ v" l! i' j' N' K
  812. BEQ Music_Increase
    5 B% X/ T4 Y  E
  813. LDA <Music_Cur,X( O: i; Y$ d3 f. l  Z7 v
  814. BEQ Music_Increase
    / F4 C' l0 s* P
  815. DEC <Music_Cur,X
    0 H) b9 Q4 P& z  A
  816. Music_Increase
    8 z' A& r3 U/ i3 V$ C2 X
  817. LDA <Key_Once
    2 ]5 D4 q" S" ~4 Y: f5 G" H
  818. AND #$81
    ! D/ u7 g+ j: ^" w* z- G/ e4 E" J* u$ _
  819. BEQ Music_Decrease_10
    * Y' e; s: T5 N2 l
  820. JSR Set_Sound_Total
    . B2 p2 |5 K3 o
  821. LDA <Music_Cur,X
    4 j" v. r/ P5 }6 {( g+ W
  822. CMP Music_Total- I. v' V( p8 u' f& }; S6 |* r: m
  823. BCS * + 4) d0 Z& k7 {$ a- D, n
  824. INC <Music_Cur,X
    ! o. D, t+ i# E6 ^, q
  825. Music_Decrease_10
    # I) z, {& M; x0 R( x% h
  826. LDA <Key_Once6 I/ ?% n8 a# L1 w7 X
  827. CMP #$04% x: i" p' P3 c1 e+ [, M6 g2 S
  828. BNE Music_Increase_10/ Y+ t8 l* A9 `* ~
  829. LDA <Music_Cur,X) i; z3 e# A) E% @8 W2 F9 A
  830. CMP #10- L7 T$ S  Z( R  R2 l
  831. BCC Music_Start_Song_Min$ B' x5 z: N$ f9 H+ ^* L
  832. LDA <Music_Cur,X
    % r# A$ U. I! y! f; {
  833. SEC' g! [3 t: h8 e& L- P  d& C
  834. SBC #10& M  V5 n8 g6 a; v
  835. STA <Music_Cur,X
    " D; a0 U  C; }. i
  836. LDA #$00
    6 v5 o. o, G7 h, {: d# H1 V
  837. BEQ Music_Increase_10
    - \; _: A& X+ Q7 z! j0 w7 Y- @8 j8 W8 Q
  838. Music_Start_Song_Min" ^, @% s5 C$ N
  839. LDA #$00: k2 m/ [( T/ g+ V3 w" V: Y* {
  840. STA <Music_Cur,X
    3 {7 v5 ]6 Y; l% v9 a- Q: l5 T
  841. Music_Increase_10  `; H' m$ p1 V% [1 a' Q' t6 h
  842. LDA <Key_Once
    : f; G5 n* e; D' P
  843. CMP #$089 k* ]8 G) S& v, T' j" o+ r
  844. BNE Music_Track_Change_End
    ! h6 B! n" c7 K- O
  845. LDA <Music_Cur,X% N: [* b. T3 i/ Y$ y4 g
  846. CLC
    " I8 H2 \' e4 t4 c: j+ w1 s: Q
  847. ADC #10
    3 e/ y" ~( d$ S) S
  848. CMP Music_Total
    $ o+ [9 S% c9 ]6 l2 d& t* H6 I# \
  849. BCS Music_Start_Song_Max0 `- G+ g( y# k) r6 d/ l  W
  850. STA <Music_Cur,X
    + T+ [0 r/ m0 Z
  851. LDA #00/ ?. r! W: ?+ H, N8 c
  852. BEQ Music_Track_Change_End) H* q3 x) v/ A: a1 Q
  853. Music_Start_Song_Max
    : i$ c9 S" h3 Q* Q6 B, B1 w
  854. LDA Music_Total
    / O6 m" S. ?7 Z5 a4 o6 Z5 S, J
  855. STA <Music_Cur,X
    $ d9 `6 }  m* p6 _8 o, I: ?) |
  856. Music_Track_Change_End% ?5 s. x+ j) w8 q( ~* w
  857. RTS
    : S6 o' ~6 H3 @$ Q$ z
  858. 4 z' ]* i& @. t7 X
  859. ;==============================+ X5 q' \; q1 D2 t$ e4 F
  860. ;按键处理* {' B6 a4 M5 G# u; {. V' u8 I: I
  861. Key_Proc
    & S- a6 Q9 I/ i5 a% m8 s
  862. JSR Key_Scan
    . t7 w1 W+ a# O' ^2 P1 A& P8 Y
  863. LDA <Key_Keep
    , n! M5 X; e9 _) m$ J* W
  864. STA <Key_Temp6 G$ A- r5 {( X
  865. JSR Key_Scan
    / Z9 n/ @4 t' {3 x! C
  866. LDA <Key_Keep
    " A2 C( w! x7 f: Y$ Z9 w  Q
  867. CMP <Key_Temp
    4 A" q# u- _1 m* t  n' k
  868. BEQ Key_Get_Once5 A. `% h2 ~4 m2 o8 P. z
  869. LDA <Key_Kemp
    ) X1 r7 J, v; {& Z- ^, B
  870. STA <Key_Keep
    & t) ^* |* U6 A. N9 r
  871. Key_Get_Once
    9 x6 o4 k$ F, p6 B0 g
  872. TAY! _. v; Y; H, W6 }3 g
  873. EOR Key_Kemp
    2 M- N4 N9 S/ N( ^* @
  874. AND <Key_Keep9 \( v' q3 _8 N" L* L" a8 h8 E% K5 S
  875. STA <Key_Once9 H; N$ Q6 S( {) h
  876. STY <Key_Kemp1 {& \' O2 V9 a) A& w" W/ [
  877. RTS
    ( y* {0 Q* J$ j/ L# @$ A7 e
  878. ;------------------------------, C- s& I) A' ^% |  z. m5 O6 ~
  879. ;按键扫描
    ! @0 T7 Z% I4 V
  880. Key_Scan0 f9 j# g5 ?7 ^5 A/ R; a! @0 B
  881. LDX #$010 q/ w8 j2 g8 }! L* q9 d2 _9 M
  882. STX JOY1_FRAME
    ( C) o3 y  X0 p
  883. DEX/ B* M- G. J, v  B
  884. STX JOY1_FRAME  u% R6 ]  _$ q9 |# I: v( \
  885. LDX #$08
    % }1 ^. K# J' p6 B8 e& l# H
  886. Key_Value
    8 a& E9 d& J, t
  887. LDA JOY1_FRAME
    , v0 y" g) _% s
  888. STA <Key_Getv
    + k6 p2 K- L6 B8 O9 H
  889. LSR A
    - C# Z2 y. e; T% l7 `
  890. ORA <Key_Getv" ~6 l! R: V% \7 n: \% D' C
  891. LSR A9 P, q7 {- N9 k: \# v7 `
  892. ROL <Key_Keep2 N" a1 b% N& `, I
  893. DEX, l1 m) q7 V& \! o
  894. BNE Key_Value5 h' C4 J1 [6 R7 u9 \. e
  895. RTS
    7 Y5 v9 I. `1 a; [

  896. ) x9 k8 Q& _! d& r, Z$ s' u
  897. ;==============================
    9 P7 E+ c, I8 A) S
  898. .IF SOUND_BAR_SHOW_ENABLE! a) n1 M5 W0 k) }
  899. ;音乐条显示
    4 D1 L% x/ {- L3 T' ]" q) p
  900. Music_Vision" ?0 M5 R# L7 j. {2 u0 K* v3 H
  901. LDA <Text_Disable_Flag/ {+ S. ]! ?/ c
  902. AND #TEXT_DISABLE_ITEM$ a- \! R6 v0 N1 l) m& _" L
  903. BNE Music_Vision_End
    " i3 ~( }$ i0 v" M6 }5 S
  904. AND #TEXT_DISABLE_BAR% U( e. B; s1 ^" g. W8 A8 J
  905. BNE Music_Vision_Set+ L: ]- p% s3 l# P- G
  906. LDX PPU_Cur& x: z) d( h9 E
  907. JSR Music_Animation
    : B, d$ v: ^. c* n
  908. STX PPU_Cur
    9 Q3 c0 m  l. p$ h# o  K# o! b
  909. Music_Vision_Set
    0 X* G- s" [; L7 _7 ?( A
  910. LDA <Text_Disable_Flag
    ) O3 L; b* F( @! r% m$ a5 t
  911. AND #TEXT_DISABLE_BAR ^ $FF
    $ I# G$ ?+ z& H7 v
  912. STA <Text_Disable_Flag
    $ a, O: [$ ]1 \
  913. Music_Vision_End
    * g/ ]1 e- S- w2 [
  914. RTS2 o( ~; ~# e- [! h5 G
  915. ;------------------------------
    0 v7 v- P3 q% ?3 d, H
  916. ;音乐条显示处理
    5 [1 X% ]- w2 R, m
  917. Music_Animation3 v& `) |9 `7 P" v2 _7 y9 x
  918. LDA #PPU_MODE_CNT_LINE- s- [! f5 H. r! |
  919. STA PPU_Addr,X6 H3 y8 _! x$ j* _" w" V
  920. INX" i: ^8 }- O& I- V' a: E
  921. LDA #HIGH(Sound_Bar_Pos)& \$ s! u3 @) x7 @
  922. STA PPU_Addr,X
    6 q7 X3 ^0 X8 r( x0 n* ?
  923. INX
    4 W$ y9 Y% ]+ G& P1 K0 s
  924. LDA #LOW(Sound_Bar_Pos)# [2 ]! ^  l5 B" E2 ]' p
  925. STA PPU_Addr,X
    4 b& L6 Y9 K; t& v$ W
  926. INX
    + Y) a' X9 x! w! q$ s9 F! l6 s. n
  927. LDA #$08# ^3 b& p6 ]  m
  928. STA PPU_Addr,X
    0 Z) p0 M1 D3 U0 D
  929. INX- u" }3 q" q) x- M/ F% \8 V
  930. LDA Sound_Bar. ]; I( p+ _# f) f% l/ R% Z
  931. JSR Volume_Convert# y7 Q; }. V# x. Y: L% h, Z: }$ m
  932. ) z8 j8 L: {2 y- A( U
  933. JSR Volume_Set_Cnt* ]0 _2 {5 O* R
  934. LDA Sound_Bar+$4+ e4 ^8 D5 f5 U* X+ d4 U4 I' c
  935. JSR Volume_Convert
    ' o: c& }" L" @1 b
  936. 0 h% K. D3 C9 _5 x- n0 R2 y* Y; d3 a7 S
  937. JSR Volume_Set_Cnt$ e9 a- }% u; X0 e; d3 @/ b8 e
  938. LDA Sound_Bar+$8
    ) F# ]( S7 k9 @) F6 h! P$ o! {% [
  939. JSR Volume_Convert! l+ p& p; R4 i2 w  |8 R" X

  940. + a$ K% i% ?9 @- E- v
  941. JSR Volume_Set_Cnt
    & l& e+ y2 u1 \% u( e
  942. LDA Sound_Bar+$C4 D' D( G" H- D" i7 ]8 Q7 [) Y
  943. JSR Volume_Convert
    ! v/ W( C( T3 [

  944. " o4 R* J+ z* q- X) h% ]
  945. JSR Volume_Set_Cnt0 O+ q" L9 x: L8 v, M/ R, b3 j. o
  946. & o7 J' n, Q2 S7 ^$ p7 J
  947. LDY #$10
    ( G5 ?4 f! x. v3 N6 _4 j/ H
  948. LDA APU_STATUS7 G7 }- L4 [: O/ K5 ]. u
  949. AND #$10; H1 l  c$ M( J8 n
  950. BNE Volume_Count1 N% N% v; H& x' ]5 `$ q5 L
  951. LDY #$00
    ; V9 U: q, a3 [- o2 z$ y
  952. BEQ Volume_Count
    ) I  d) g# [8 P* B5 n: }, B& ]" y

  953. 0 K+ F! ]! g2 X4 E% e6 g
  954. ;------------------------------5 n% ]- i" L/ M
  955. ;音乐条处理3 k1 Z' }  b/ E$ d
  956. Volume_Convert1 }1 V* J% j2 ?/ Q/ Y8 y
  957. AND #$0F* Y, i/ J$ t% v4 X0 U5 J% n4 k9 F
  958. TAY3 i+ t7 \0 {# e% e, }* h# o
  959. Volume_Count
    0 ^6 ?# Y3 D# ~
  960. LDA #$08
    ' R3 G( ~- b. b3 t& ]! k2 y9 A
  961. STA Sound_Bar_Cnt- a& ~- p/ N7 Q; H/ @4 Y. o# E' D
  962. Volume_FILL
    7 N5 K; y( u, ~; C
  963. DEY
    , C/ A* a+ s# U: ?
  964. BEQ Volume_Half
    & i) q! {5 S4 k8 c1 t5 P; q
  965. BMI Volume_Empty/ f4 p, {) Z# v4 i! K. R0 k
  966. DEY2 _0 ]# `& L0 x9 w; k
  967. Volume_Full% ?# r7 A3 i. X2 F& \8 K5 W4 Q
  968. LDA #$16
    , T/ q% o9 v) I3 r5 \3 h/ S/ e
  969. BNE Volume_PPU
    5 V% w( [0 D5 k8 s* c4 }7 s
  970. Volume_Half
    , M& |7 b5 y5 j/ T* s/ @2 f0 E
  971. LDA #$15% w* I5 H& u  ~. G+ q0 E) F
  972. BNE Volume_PPU1 y: n% a, l6 K$ h; @+ r" ^
  973. Volume_Empty
    ; \0 h# z& \4 S) {9 Q( B0 r
  974. LDA #$14
    - g/ }: h6 [- Q# J$ M' U$ |
  975. Volume_PPU
    % v2 m: }- O' R$ Q1 S  o
  976. STA PPU_Addr,X
    4 U' Z% i4 i" q3 w  B
  977. INX7 C( A3 i  A/ m* ]5 C, j
  978. DEC Sound_Bar_Cnt
    ( N# g( q8 S3 I! x; ?
  979. BNE Volume_FILL3 B& @, y: g. }' N2 U1 X5 w
  980. RTS0 h2 F$ p1 s, ~$ u

  981. & t' j$ ]7 l' ?: A  _" o( _$ Z$ f
  982. Volume_Set_Cnt. e: a! G7 X2 q, L5 m, P% h, {
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    ( B7 p0 G0 w5 U2 s
  984. STA PPU_Addr,X
    , V5 T' A* |7 k3 L1 S8 [* w+ g
  985. INX0 \% H* Q8 X. u. n* X
  986. LDA #$08+ F) Y& o* y9 J2 a% m
  987. STA PPU_Addr,X* v$ Z3 H3 u! t+ j
  988. INX8 ^, [8 W4 q* y" \6 m
  989. RTS$ o! i% [8 D3 \# ]" W$ p- @

  990. ( T0 K  L  @) A+ l* B
  991. .ENDIF* T9 N5 ~; m* {% Y+ P+ o( l2 {4 K3 K

  992. 7 B, X& i/ z9 e' E* n  i' d
  993. ;==============================7 W$ u  h- i2 g; g6 ?) d
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入; F" Q- B5 b' g& Z
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式: K5 k+ v* U8 w- }6 {
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    " }& P8 z9 q6 a. C7 ~
  997. ;------------------------------' U: s5 `" c- _- A
  998. ;PPU处理/ [  N) N! I/ h2 H
  999. PPU_Proc
    0 y7 j. L' x' O
  1000. LDX PPU_Cur
    ) g# d8 {3 x- x+ }* J" X5 n
  1001. LDA #$00, g; q1 y+ a9 W- b( [, Q7 P$ i4 P
  1002. STA PPU_Cur/ Q- [: c! X& |9 S% x  U  j
  1003. STA PPU_Addr,X6 r& \) O* |2 a( K
  1004. LDA PPU_Addr
    8 |+ {' w9 t, `# T% ^
  1005. BNE PPU_Proc_Beg  J2 C! h* H" Y2 E9 p
  1006. PPU_Proc_Ret
    % \- ]  W2 K& D3 ~. g( \
  1007. RTS/ R/ D! y4 M/ d" ~3 i  @1 X+ c
  1008. + l" W5 n/ }0 x
  1009. ;------------------------------
    & O, ^# [: }9 F! ]" d. V* B0 n
  1010. PPU_Mode_Return_Cnt  ;转下行模式, @4 `9 R, I3 b: t; M
  1011. INX
    3 x6 j9 R9 R# r/ u" t' O, U! b
  1012. LDA PPU_Addr_L
    % |  j* f9 d0 r) x% s  M( U
  1013. CLC! g0 q" Y# ^. M
  1014. ADC #$20
    ) z( g; l- i2 i4 ]6 _' i
  1015. STA PPU_Addr_L# K- r$ y( D% u; |; A( G/ g
  1016. BCC PPU_Mode_Return_Cnt_End" B( _1 f1 k4 Z5 [1 b
  1017. INC PPU_Addr_H
    & L3 D( w9 j6 c
  1018. PPU_Mode_Return_Cnt_End" t% J: T; h! h7 g5 s3 S
  1019. LDA PPU_Addr_H& {6 ^, s" Q" X! E
  1020. STA PPU_ADDRESS
    2 Y7 q* Z6 C/ f# j) P  `
  1021. LDA PPU_Addr_L/ ?7 H) n* Q5 m9 d: E
  1022. STA PPU_ADDRESS$ u3 X& b# W. U6 x: r( M0 M5 n; b
  1023. LDA PPU_Addr,X2 P# k* G; ?8 N$ q. e6 y
  1024. TAY! s- u# n) R6 Q" s/ M+ L9 A& v; d
  1025. PPU_Mode_Return_Cnt_Write
    ) {; Z; A$ r2 e; N' v' o
  1026. INX5 g" Z5 {, p$ x+ t
  1027. LDA PPU_Addr,X
    * c9 }, [9 g1 b( ?3 Z: R8 ]
  1028. STA PPU_DATA2 A. p2 O2 {, ]7 C
  1029. DEY
    . |& B5 J4 H8 t. X. [& Q  t
  1030. BNE PPU_Mode_Return_Cnt_Write
    1 u( T# q7 U+ e8 c. g6 \' V6 r$ j
  1031. JMP PPU_Proc_End
    " y& l: \/ o, Y: c& r2 a
  1032. + y1 w( q# S# ]9 u2 Q5 U
  1033. ;------------------------------1 N" j* I& R* |% V, I
  1034. PPU_Proc_Beg  ;处理开始
    ' P: q0 x6 u9 C; X! K* Y
  1035. LDX #$00
    3 Z/ `5 M$ }( [$ X% A7 N2 u: s5 h
  1036. STX PPU_MASK
    / E7 E0 U6 n7 b& K
  1037. ;------------------------------
    ' n* k: o5 T8 Q" N, K% U/ i' ^7 n
  1038. PPU_Mode_Select  ;模式选择0 q  U) u$ Z# X, M
  1039. LDA PPU_Addr,X
    . R+ e* }1 x' _; C/ [7 e
  1040. CMP #PPU_MODE_CNT_CLEAR  l4 b8 V4 d; A
  1041. BEQ PPU_Proc_Clear
    6 N& |2 x5 ]& \1 o: x
  1042. CMP #PPU_MODE_CNT_LINE
    * i4 D# k, ^1 T4 \
  1043. BEQ PPU_Proc_Cnt_Line3 V$ ^( c0 {# M
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    , f; ~$ V3 f( ]# x( M! \# H& `/ A
  1045. BEQ PPU_Mode_Return_Cnt
    ) q3 }; B0 B( h* t7 I
  1046. JMP PPU_Proc_End_Write0 ~$ j' [+ I: Z3 Q0 G
  1047. ;------------------------------
    5 |( E& q# X3 s7 k& q- _: L
  1048. PPU_Proc_End  ;单行写入结束+ l6 C: \( W- o7 |
  1049. INX
    2 h% K. P4 i/ ]8 D7 `/ m
  1050. LDA PPU_Addr,X
    $ e( u+ k. U3 z, D
  1051. BNE PPU_Mode_Select
    % S( }. D' d8 @2 {5 P6 ~
  1052. STA PPU_Addr
    9 p' T0 y2 \9 a1 k8 C
  1053. JSR Update_Palette_Color6 n/ o2 O) n4 |; R: t
  1054. . R" g% s7 p- O: g: T" \. e
  1055. PPU_Proc_End_Write
    # ~2 S( L/ z) D5 O$ E9 Q
  1056. LDA #$00- h: S4 K: y! e4 Y& m
  1057. STA PPU_ADDRESS: @/ g  n; s& J' x5 A! ~
  1058. STA PPU_ADDRESS# ?# z; v9 |6 C9 V  h
  1059. LDA <Text_Disable_Flag% ~& C( I  _; v' }
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    + x" n  z% K0 S( }+ k8 H
  1061. STA <Text_Disable_Flag
    1 W* P3 A3 K' \& z$ F6 ^8 G8 D
  1062. LDA #Scroll_X  N( d9 @: `* T& u. `% O
  1063. STA PPU_SCROLL" f  h% Q" Z* g, R% ^' a7 k
  1064. LDA #Scroll_Y, q: `! W6 W4 T) ]- Z
  1065. STA PPU_SCROLL
    # X7 D3 K/ Z# y$ N4 n
  1066. LDA Screen_State3 y/ N8 ~. K8 a/ W/ S' W  D
  1067. STA PPU_MASK  M  }3 m1 |' v. A
  1068. RTS
    + F1 b% ^: O1 m, V- _' |- S

  1069. 0 t( s- ^3 _/ b2 j' g
  1070. PPU_Proc_Clear
    7 H' B: _0 T5 H) [0 o& D# q7 V
  1071. INX2 g  O2 u+ ^/ b
  1072. LDA PPU_Addr,X! x% x/ D  Q  q6 z  n2 _% ~
  1073. STA PPU_ADDRESS
    / B$ f6 q8 M* O" x5 R1 U! L
  1074. INX
    2 a' ]8 @: N  Q: f
  1075. LDA PPU_Addr,X
    / d! H% n' |% i9 s6 y0 A4 M
  1076. STA PPU_ADDRESS: r$ A. }) p% f# C
  1077. INX2 |" W( u* R5 I5 [
  1078. LDY PPU_Addr,X6 m& ^* H& j% z6 H+ f* M4 u: U
  1079. LDA #$005 J, a) Q4 B  M( [
  1080. PPU_Proc_Clear_Write
    6 [: C4 |! o) Q+ ]% {4 r- }
  1081. STA PPU_DATA+ K1 @+ {" L9 L) ^& o  ^. a; W; p# ?
  1082. DEY
    ; M1 ]' y+ a, u) ^9 U% `' z
  1083. BNE PPU_Proc_Clear_Write% {! p7 a+ r) m  c4 p
  1084. JMP PPU_Proc_End- q/ _% z. ?: e: q0 C" a
  1085. ' d$ ^8 D( t  R, A* d4 q
  1086. PPU_Proc_Cnt_Line
    9 O4 M# g% _+ I/ N$ j
  1087. INX
    3 ^8 Z6 Y# j: F. [2 H" C5 |" I2 S
  1088. LDA PPU_Addr,X" b' K. n; |3 l
  1089. STA PPU_Addr_H
    7 h1 [: ~9 L! e. t3 E2 h% h
  1090. STA PPU_ADDRESS& V9 n& E. W2 s; {2 e: _) P% X+ _% z
  1091. INX9 w6 l& A+ `+ w/ ~* A6 m3 K, m7 r
  1092. LDA PPU_Addr,X" w! S) m  B- u
  1093. STA PPU_Addr_L4 i1 D8 R) T) e
  1094. STA PPU_ADDRESS
    ; U, H2 k/ \  ?1 |
  1095. INX
    : O! r' V+ ^, O# c
  1096. LDY PPU_Addr,X* N- A' e8 d* v
  1097. PPU_Proc_Cnt_Line_Write
    2 p& f& e0 Z$ h9 I; I
  1098. INX
    - E3 h" Y4 D0 C6 z) X& p+ l8 S
  1099. LDA PPU_Addr,X
    8 Z6 o3 _# {- Y$ C2 V
  1100. STA PPU_DATA% ]& L0 w+ t( s
  1101. DEY
    ; T( `+ `2 A, s! `; w8 \1 }
  1102. BNE PPU_Proc_Cnt_Line_Write
    3 w1 D( `. a+ }7 K0 m
  1103. JMP PPU_Proc_End, v0 M* ?- f4 l! B) t3 U- l

  1104. ) R: p$ c, T' _" f3 y7 F
  1105. ;==============================; q) b( B9 r+ W3 O! l
  1106. HEX_To_Dec;十六进制转十进制
    + C7 E/ v: ?+ o/ y$ X: H
  1107. STA <HEX_Data
    - A2 R( i0 P" Z$ i
  1108. PHA
    ) n; F* j' s' C! M5 I1 I
  1109. TXA2 D+ I- n; l1 k9 E' x
  1110. PHA* k7 x- g3 g, {) n4 y% p
  1111. LDX #$00
    ! P" Z# F, d2 S7 Q6 o
  1112. LDA #$00' U/ Y  k* r3 \+ X
  1113. HEX_Cln* s1 b0 p0 T6 I' Z" s& E1 k
  1114. STA <DEC_H,X5 G2 y! B7 c% z) e! d8 T1 s0 E
  1115. INX
    ! K7 o) ~0 o; ]* f9 b' j* g: S
  1116. CPX #$03
    ) `2 }& W6 q1 e! l: ^% D
  1117. BCC HEX_Cln
    $ T0 h4 |: x2 ^, ?
  1118. LDA <HEX_Data
    ( ^4 B" l# Y  w3 h8 w, C6 f; W
  1119. ;------------------------------  l& ], O9 c+ j& O
  1120. HEX_100; V/ c( e4 I. P0 w- E$ J
  1121. CMP #100( B$ C  R. l( z- U# Z& T
  1122. BCC HEX_10
    8 U1 J0 b1 B" H8 B
  1123. SEC; A: D7 P" R' f9 B4 Z- x
  1124. SBC #100
    6 f/ F/ e8 [% _5 E: D
  1125. INC <DEC_H
    % y- k) c0 H( X( M8 P7 Z
  1126. BNE HEX_100( V* D, G0 S) V
  1127. ;------------------------------: K, b. M7 n! {6 B( e
  1128. HEX_10
    8 d% T( U8 x( S% x* G/ w& }0 q1 V1 X9 [1 f
  1129. CMP #10
    4 w& e7 X: U, d$ l0 G+ H! a- K# f
  1130. BCC HEX_19 P  k" h2 x; P) j/ [; U
  1131. SEC/ c, d# C" U& T, s( R2 ]1 W
  1132. SBC #10
    ; Q9 I1 Z; P3 b1 D) L
  1133. INC <DEC_T
    : u0 I8 \" L8 ?/ K3 z1 `( B" |
  1134. BNE HEX_10* r* Y- @; g6 }3 W. f
  1135. ;------------------------------
    : @& J! ~* k4 v6 g: G, F( J
  1136. HEX_1
    5 D. [) B9 E: A7 M8 ]
  1137. STA <DEC_L
    3 h5 p$ N- H3 D
  1138. PLA% c# C3 i# o2 d
  1139. TAX; U  f. ~* p  J4 U
  1140. PLA
    - D# w& w5 {0 a3 v0 P& ?6 `
  1141. RTS
    & u+ p  p7 F6 s. [  |6 I; |& ~
  1142. " f4 i: B( S  p2 E4 A
  1143. ;==============================6 _8 t( {. E* F1 M
  1144. ;音乐曲目显示
    5 D) o4 p4 D% t: ]1 G
  1145. Music_Show
    5 x! C( V8 Z- J2 n/ B' `
  1146. LDX <Music_Item_Cur4 k1 W9 t# i/ d0 P) n& _
  1147. LDA <Music_Cur,X8 r, p: I8 F+ \4 o
  1148. CLC5 i' J% o+ |! U: Y
  1149. ADC #$01$ b; [" `# |3 w8 c/ @7 [5 |
  1150. JSR HEX_To_Dec
    3 S; T6 w6 x- K- o
  1151. LDX PPU_Cur& w# `* u  p. ]
  1152. LDA #PPU_MODE_CNT_LINE% B6 I+ f# _) n( K* ?) W
  1153. STA PPU_Addr,X4 G5 |, d4 `- z$ |2 D/ z2 l
  1154. INX7 m+ R( A7 t1 s
  1155. LDA #HIGH(Play_Index_Pos)
    ; h' R2 l5 ?& A5 _3 h$ H
  1156. STA PPU_Addr,X% m  h' u; N" l2 w6 s% X
  1157. INX
    ' Q% j3 F; L, a8 o) }  r: d
  1158. LDA #LOW(Play_Index_Pos)% d, z; n+ |* A$ J+ h' k' I) ?
  1159. STA PPU_Addr,X, q$ L9 P  `$ n3 {
  1160. INX
    & d$ t" Y  P4 j( R

  1161. : l/ X; V$ z1 W1 _8 M( o
  1162. LDA #$07
    0 n6 D2 e( S. P
  1163. BNE Music_Show_Length9 A8 W1 A4 I. m, w, `1 Q1 N) Q
  1164. . C! P/ t" k* P6 p9 F: C! O
  1165. Music_Show_Length4 O5 n# G5 v. X/ Z$ ~
  1166. STA PPU_Addr,X& B7 P3 ~6 N# z& m( n
  1167. INX
    8 S- F6 X9 i# k, O0 u, K2 S
  1168. 0 @* G8 V! U; B3 w4 d
  1169. LDA <DEC_H
    , q  T% _! v7 i  `- E! C
  1170. ORA #'0'* q0 X/ e! Q7 n
  1171. STA PPU_Addr,X/ H+ q7 J. X* a( i5 R  \9 e" ]
  1172. INX
      w; d! S& Y  [

  1173. 6 b% i2 _! @  m8 n% G) X
  1174. LDA <DEC_T
    " }( U. d4 f( D" f2 z7 h( }3 c
  1175. ORA #'0'
    4 h/ Y# M% Z  ^: g. k$ S
  1176. STA PPU_Addr,X
    4 w# m  m+ [/ l( g
  1177. INX& F0 L" W3 B3 F% p' o8 X
  1178.   n5 D' m4 u3 w- K6 M+ D+ `) i
  1179. LDA <DEC_L6 A; a7 M9 h0 O" P
  1180. ORA #'0'
    $ T+ h0 }1 G# d. ]* B3 w" V1 w
  1181. STA PPU_Addr,X
    $ c5 F) ?0 E1 K! s, D
  1182. INX
    ) E3 U8 m0 D3 N% U! Y
  1183. $ C7 O- K' v# t4 `7 C
  1184. LDA #'/'- n, j0 _# I, m
  1185. STA PPU_Addr,X  H5 {9 ?1 h# X( z
  1186. INX
    2 Z* t/ ^7 }# _( ^  M- E
  1187. Music_Show_Total( Q6 C4 c: R. W3 S& ]2 o( L9 x
  1188. LDA Music_Total
    2 o+ p/ V" ?7 I2 S
  1189. CLC' U, F. G- }. B( n5 y/ ?$ _
  1190. ADC #$015 w! c6 G4 W! t; n7 L: n
  1191. JSR HEX_To_Dec
    , w( {# D* ^: w8 Q( j, U" J+ `+ @- ?
  1192. " Y. n0 ?0 [) _$ h
  1193. LDA <DEC_H" p, N" K: Y* b3 o
  1194. ORA #'0'" L6 O* _) F0 x7 N" [
  1195. STA PPU_Addr,X  T- K- ]9 ]" R3 x3 u" i# ?* w. G
  1196. INX/ m$ z5 q4 t& Q* e; ~- p7 @

  1197. 0 Z+ `- L, T" D# @# J( E2 u
  1198. LDA <DEC_T% J5 H  h3 O  ?6 K, w" B- t
  1199. ORA #'0'
    0 @# J% H; u3 O( c
  1200. STA PPU_Addr,X8 M; K9 [7 z  O9 k; B. C
  1201. INX
      X5 d* F- w2 K4 g  t* k

  1202. ) R6 n$ f. E% S  M+ A4 [
  1203. LDA <DEC_L
    1 s+ b% r/ s/ q8 E# r- P: m
  1204. ORA #'0'! h$ W# X9 X2 N4 R
  1205. STA PPU_Addr,X& @$ _) G) ^  ?
  1206. INX
    + O* Q# Z( n' H4 x5 _  v

  1207. . z2 u  n2 N3 L3 D
  1208. STX PPU_Cur6 F3 m8 W# ~$ i+ b$ o
  1209. Music_Show_End
    ! H2 _6 a. |- Y- ~  J  w/ R% Y
  1210. RTS2 D  G# j- ]8 {) R& Y, t, a. W

  1211. 1 T% t' b0 q7 F8 K( j0 A3 U4 ~
  1212. ;==============================8 d$ T) i% }) I% C5 Z- F
  1213. Time_Show;播放时间显示+ }4 u% F- j. w# `! Z" A1 J& J
  1214. LDA <Text_Disable_Flag& h+ u! U" F$ r  H' `
  1215. AND #TEXT_DISABLE_ITEM5 n/ K& y6 E! F5 [  Y
  1216. BNE Time_Show_End
    3 }6 j$ f# F2 N
  1217. AND #TEXT_DISABLE_TIME
    0 ]4 [# |, j. ^9 ~4 g7 g/ S2 a
  1218. BNE Time_Show_Enable* n7 `) D! |( M/ n4 p) [
  1219. 3 t; R5 S# U3 v7 H: P* q
  1220. LDX PPU_Cur
    6 D" o+ }4 A' P
  1221. LDA #PPU_MODE_CNT_LINE& e5 K/ a$ }" l+ C8 {
  1222. STA PPU_Addr,X
    1 N+ o  D$ @. e/ a* v6 Y) V
  1223. INX
    . w! Q( `4 z0 d* i
  1224. LDA #HIGH(Play_Time_Pos)
    7 R0 ^) g2 \9 m8 E4 ?+ x
  1225. STA PPU_Addr,X
    $ q' E. w% J( J
  1226. INX! `& Z9 C9 ]; d  c
  1227. LDA #LOW(Play_Time_Pos)% Q  M7 Z$ @4 N' m$ X! v0 {
  1228. STA PPU_Addr,X
    - t. m* _* f* e0 L/ @8 A
  1229. INX8 U& ]0 g. h' O
  1230. LDA #$08
    2 m6 y6 g. n, x  |( M1 O
  1231. STA PPU_Addr,X
    1 w$ I$ _. W2 S
  1232. INX. c" J# S) ]" O
  1233. Time_Show_H
    ; \; z% q- R( L$ y9 P
  1234. LDA <Time_H2 `! E0 B% a2 R4 ^6 w
  1235. JSR HEX_To_Dec
    4 A; e5 s- S' ^$ T) K* \
  1236. JSR Time_Digit% O: T7 R- w; J: B+ U
  1237. LDA #':'- v9 j1 P2 d8 L/ H1 n3 M9 _2 B
  1238. STA PPU_Addr,X
    5 i; }  `1 E3 w# E
  1239. INX
    ) B' {: I9 I8 i8 f) [- l
  1240. Time_Show_M5 h& {, W% D! T% v1 C6 B: d7 d( n
  1241. LDA <Time_M
    / A0 \! ?0 }, Z7 j' u" ]' W
  1242. JSR HEX_To_Dec
    . q3 @- o3 x' [! o
  1243. JSR Time_Digit
    * ]+ b9 x# {4 s& C
  1244. LDA #':'( S* F6 X% Y4 T  [/ U* S
  1245. STA PPU_Addr,X
    / P- y) G/ h$ r$ D  J3 Y
  1246. INX
    5 e7 x) b6 l5 t( w. X
  1247. Time_Show_S7 L% ~5 L( c/ B# Y" _7 X6 e
  1248. LDA <Time_S
    % B7 u  w( d6 x6 k1 [& o  h/ c
  1249. JSR HEX_To_Dec
    ! r6 g, G+ _# B4 z9 q
  1250. JSR Time_Digit1 U/ g! P& Y7 D1 j1 }/ H& j- d: }. m
  1251. STX PPU_Cur
    6 F5 ~8 A8 f% ?7 m% D& [% j
  1252. Time_Show_Enable! a4 {. A& Q) o8 B% X  L4 Q
  1253. LDA <Text_Disable_Flag
    ' Q8 X- M4 N6 y- ~2 `: G8 O3 f
  1254. AND #TEXT_DISABLE_TIME ^ $FF1 n$ P$ A. Y' o% M# h: E0 ~! j
  1255. STA <Text_Disable_Flag4 u! \! C3 e& X- @0 ^
  1256. Time_Show_End  z# |4 ~0 p1 G& P
  1257. RTS; T- V2 N) G) F& J, `% a- t
  1258. ( H+ @0 j! I5 h- b5 e1 ]
  1259. Time_Digit2 g! Z2 i7 S. E2 g4 Q' v6 O
  1260. LDA <DEC_T; C  b# T, Z3 K+ G
  1261. ORA #'0'; R; O0 \7 M' G1 F% u
  1262. STA PPU_Addr,X9 Q! ^. _% a5 I3 C5 v, T9 V* x
  1263. INX+ g" T, y0 l9 G0 ]; _- x2 h8 Z
  1264. LDA <DEC_L
    * v9 O8 q9 @' d* p4 w6 a
  1265. ORA #'0': r: o, N; g" `8 K5 C; ^/ X# U
  1266. STA PPU_Addr,X
    3 `9 v' c% M/ H; D* @
  1267. INX& |4 O0 {, m. v, R& X' B
  1268. RTS
    ; U' y3 C0 P- Q  I: F$ f

  1269. & l, v4 k1 O, B  S% |9 e
  1270. ;==============================
    ) q& l3 ^$ Q, v& |. D8 [+ Q
  1271. Time_Count;计时1 @4 u3 f" z- Y4 I" z. `2 h
  1272. LDA <Music_Stop_State
    0 n* ^1 O8 F3 W  m. e  {
  1273. ORA <Time_Wait_Cnt  c) h$ o/ ~5 }
  1274. BNE Time_Count_End, }7 {9 C& x2 S+ j6 s
  1275. INC <Time_Cnt
    + \& S: L+ Q, d+ v1 @. A/ C
  1276. LDA <Time_Cnt
    - i$ ~) D  v; B4 S" k' s% ^
  1277. CMP #60
    2 r2 ?7 \2 s- g5 a4 \" @* t
  1278. BCC Time_Count_End
    - P0 j5 |  F/ \: q
  1279. LDA #005 ~% V8 K1 A" R! a, ~
  1280. STA <Time_Cnt, k' e2 Z0 i+ g7 z; `
  1281. INC <Time_S- N2 |/ V7 l2 L6 l
  1282. ; O% B: e* H' w: ]) S
  1283. Time_S_Cnt; D, _, K2 J9 G( U3 t; P/ }8 m' V
  1284. LDA <Time_S
    3 F+ r' U1 Y$ j
  1285. CMP #607 Y: S& i% s- ?$ p
  1286. BCC Time_Count_End
    8 F1 z# F  R- ]% c8 M1 F: ~0 \
  1287. LDA #00( K4 \. M, _' T& d/ q& I9 r- U" R6 o
  1288. STA <Time_S6 B! Y9 ]- w; C
  1289. INC <Time_M2 z9 ]) m6 q4 @. \7 X) Y  `- B
  1290. 7 z' g8 j8 u8 M
  1291. Time_M_Cnt/ Q- ]" |3 e& v" D
  1292. LDA <Time_M) z, o7 O" Q6 |5 Q- {7 T' E
  1293. CMP #60& N* S6 V( o* T9 K8 D9 Q
  1294. BCC Time_Count_End) Y4 ^, Z) x1 A1 u) v
  1295. LDA #007 ?' w; I" Z% r# X9 m% R7 l
  1296. STA <Time_M
    " G+ Z8 N1 {+ K. t9 b4 G) f
  1297. INC <Time_H  D2 P7 f6 \. n/ u) ~# p
  1298. * @5 ~1 O3 ?5 s1 r4 Y5 p
  1299. Time_H_Cnt. W4 l! r. D1 o5 b& G2 X* M
  1300. LDA <Time_H
    , Q3 a" Z7 {5 L# Y
  1301. CMP #24( F! a# Z. ]8 a* X1 {
  1302. BCC Time_Count_End
    0 V9 Y4 A7 A1 Z+ |5 R4 }1 I5 ?" b
  1303. LDA #00
    - r$ g' n& I9 D
  1304. STA <Time_H6 e( _; n8 @# Z" e

  1305. & E  a) K7 v& U
  1306. Time_Count_End4 |# {5 j0 s8 G' t
  1307. RTS
    ; N" U, ~' r5 a0 r) a- q$ a
  1308. * }+ s  u* @+ P4 g
  1309. ;==============================5 P. G' r$ o3 v4 S7 H. \
  1310. Time_ReSet;播放时间重置) A# t7 w* m; X; V: L1 M3 V" Y
  1311. LDA #$00. g: p7 l9 b2 R" ], D
  1312. STA <Time_S1 d. W" [# |9 o# X
  1313. STA <Time_M
    0 O1 p- M. r) s' d# t8 z- l3 X
  1314. STA <Time_H8 r$ J  f1 c/ a1 q! I
  1315. STA <Time_Cnt6 @6 e% i5 ^& M3 ]5 y$ x
  1316. RTS9 |' r6 o$ `/ B' g- j+ Y

  1317. " n7 U5 f# r' N. i1 _/ ]. {# s+ Y
  1318. ;==============================
    6 {2 f0 h4 }/ `% l) {
  1319. Music_Bar_ReSet;音乐条重置* c! m& Q1 ~$ @% m& g
  1320. LDA #$00
    & r+ o0 Z1 T+ x" u! C: p7 q
  1321. LDX #$00
    3 m! {6 w& u1 w$ q" z$ F$ T
  1322. Music_Bar_ReSet_Set& ^% g3 t+ U3 w' m$ T
  1323. STA Sound_Bar,X2 b3 v  l& }4 G( L
  1324. INX' c" ]4 \) _0 }9 m: n* [0 M$ y
  1325. CPX #$106 w' G$ J/ t9 m% P# {8 v. a
  1326. BCC Music_Bar_ReSet_Set! `' N; w8 h1 B
  1327. RTS! m# w0 h% L/ P
  1328. # F* Z0 C4 N+ k3 o! t5 D, k2 U
  1329. ;==============================) Y( o! I9 z/ t! |
  1330. PPU_Data;PPU数据写入
    / z) t; p- \3 @7 X& J
  1331. STY <Data_L
    0 @% ?* N4 E# p
  1332. STX <Data_H
    $ y: B% W1 X& k* `! W; c# u
  1333. LDY #$FF
    1 u* h3 u) D6 K
  1334. LDX PPU_Cur
    7 c( o0 e% D% o$ d) F; D
  1335. DEX
    7 B7 T0 v: B' C' s, Z
  1336. PPU_Data_Beg1 R  g' Z: r+ O+ l9 [( G2 A$ O3 Q
  1337. INX5 ?$ T. x8 A" i* P) @
  1338. INY
    / Z1 B0 `! _% \9 p) Q3 d: o) j8 Y
  1339. LDA [Data_L],Y
    6 Y6 d; n' d4 V. l
  1340. STA PPU_Addr,X" z' u0 r/ b# g" P, F
  1341. BNE PPU_Data_Beg/ S8 ~2 E9 j( n; y* ]
  1342. STX PPU_Cur
    . q, F$ K% K4 d# E; |
  1343. PPU_Data_End
    8 m( n. h; V5 ]; R* g
  1344. RTS! b3 J! C2 J# f( z. Y
  1345. 2 D9 K/ C3 Z( c4 g7 i" U- D& G
  1346. ;==============================
    3 y' P7 V. F+ [, j. n/ O$ o9 b: {
  1347. Music_State_Show;播放状态显示
    # |$ c. T  C" B* z& G2 `% Y
  1348. LDA <Music_Stop_State
    ; F: f+ O" q9 b+ i2 x+ {: r6 f/ R
  1349. BEQ Music_State_Show_Play. R6 Y) e0 U3 _" a4 a
  1350. Music_State_Show_Stop
    * t! F  M; @% Y
  1351. LDY #LOW(Music_State_Stop)
    ) R3 A+ g8 I9 _, Y+ O/ w" M
  1352. LDX #HIGH(Music_State_Stop)
    9 X5 n' r" f) p0 r; x
  1353. JSR PPU_Data; D. q/ K7 w" a6 ]+ m. j7 F
  1354. RTS
    ! }$ i7 P* f4 [+ H6 b3 Z& R
  1355. Music_State_Show_Play6 B6 H. Y$ B9 Y; F5 {6 o  u4 B5 k
  1356. LDY #LOW(Music_State_Play)8 [' O1 k' G5 i! [& d& \* P
  1357. LDX #HIGH(Music_State_Play)# I! s7 |1 ~* a$ [
  1358. JSR PPU_Data$ F+ p* z5 c6 \
  1359. RTS
    * q3 V( d8 o6 @7 b0 F

  1360. & c% a1 ?8 B: O; I# I7 a5 o. [4 H
  1361. .IF SOUND_BAR_SHOW_ENABLE
    4 c$ _# m% T# D. T. D* x
  1362. ;==============================
    . \, ~) ~* C" c  i. X  u8 T  k! D' D
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    7 N3 Y( `4 T* S8 W6 l2 F
  1364. LDY #LOW(Sound_Bar_Text_Data)
    2 [4 z. @, @; l  @9 h' P% p
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    ( E) Y2 u* B  g; `. t0 B: A% o$ s
  1366. JSR PPU_Data& x. O9 R/ i4 L0 s+ {
  1367. RTS" ]* n' X( b" ], n; N# B* [
  1368. % N1 A- r9 F; x0 G; E! e
  1369. .ENDIF( y. r4 z9 p1 }( l
  1370. $ R3 D; T6 V6 @) S
  1371. ;==============================( S, g6 S( w5 x+ ~
  1372. Set_NameTable_Attributes;设置命名表属性
    5 x7 d8 z5 F9 f# }3 t7 p; j
  1373. BIT PPU_STATUS* X  T0 F/ z& j! s
  1374. LDA #$23
    * ~2 Q1 I' L+ O' |( @7 ^; O
  1375. STA PPU_ADDRESS& A5 ]( i' |) R& R3 ?: t4 g( G- w4 N
  1376. LDA #$C0
    0 i- v8 V/ m+ b
  1377. STA PPU_ADDRESS
    9 _% \/ q# z4 A* @
  1378. LDX #$00
    + s5 c$ f" d" ]4 l/ z! ^
  1379. Set_NameTable_Attributes_Write
    3 b* @6 G; h& P7 n7 C. ~" r/ _+ S
  1380. LDA Palette_Attributes,X
    5 a$ H! {% B& p/ F
  1381. STA PPU_DATA' V. q$ }, Z- j6 N
  1382. INX" `7 P/ _: M8 i% \
  1383. CPX #$40$ f6 C2 R9 Y* S4 s. ~' x
  1384. BCC Set_NameTable_Attributes_Write
    ; ~- P! U/ j, H7 t
  1385. RTS
    3 j' ?2 p7 I2 s. `4 u  r

  1386. $ Z) S- Z& D2 n' F
  1387. ;==============================
    & S- C4 l3 \# R( r
  1388. Set_Palette_Color;设置调色板数据+ p- E4 e8 T. k& e1 ^
  1389. BIT PPU_STATUS
    % v) @7 S7 O* T9 c
  1390. LDA #$3F
    2 l7 Z1 c9 t" O8 |; `. T
  1391. STA PPU_ADDRESS
    " L* u# R' Z, ?  ^/ {: d! Z
  1392. LDA #$00
    5 q: m9 k9 ]8 a, N6 ?" l: I& X& P
  1393. STA PPU_ADDRESS
    ( m, _! A  Q2 [' K% R* _# I5 o
  1394. LDX #$001 ?' v, i/ J% _. W
  1395. Set_Palette_Color_Write5 f0 S! R0 m7 [$ z
  1396. LDA Palette_Data,X
    ) \7 x& H; U8 z! u: C. B
  1397. STA PPU_DATA
    ) ^7 ~# T+ r2 s& W9 e6 ]# ?, S
  1398. INX
    . q5 V: ?0 ?, z6 r6 p! D7 y
  1399. CPX #$201 w2 Y6 N  l5 H9 d
  1400. BCC Set_Palette_Color_Write
    / u* @& _; ]$ ?7 N+ r
  1401. RTS& m* O' T9 b. e9 s0 A3 z# X
  1402. 0 h+ T. N2 \% W" p  a6 }
  1403. ;==============================
    ; E& C& a- w( U. W% h/ ~
  1404. Init_Palette_Addr;初始化调色板数据
    . _3 R4 F, W6 n6 ]  J
  1405. LDX #$00
    3 h, `# {* H  R3 y2 q( X* y
  1406. Init_Palette_Addr_Write
    $ w% l- y/ t1 e( T0 r) o
  1407. LDA Palette_Data,X8 `8 {! u0 ~, A# b' Z" o4 @
  1408. STA Palette_Addr,X
    / \; z6 w" E- Z- v& J9 s5 N3 V
  1409. INX
    ( d# @' L9 l" ]% z! H' c
  1410. CPX #$20
    , N% s0 ~# x- k* s/ M! Q2 n
  1411. BCC Init_Palette_Addr_Write6 {5 E# s* x7 a
  1412. RTS
    / O0 e9 s% [$ c+ l5 {( E  E

  1413. ' _: z) J- w) A' b* p) W' M0 t
  1414. ;==============================: q  V/ s0 k$ x" `
  1415. Update_Palette_Color;更新调色板颜色
    / ^; U5 Q; |3 I3 X5 @
  1416. LDA <Palette_Update_Flag
    # w$ C% v6 \# ?( k
  1417. BEQ Update_Palette_Color_End$ B1 l) `" g4 r+ w
  1418. LDA #$3F
    & J% g. a1 |/ l, b1 G7 L7 }, q
  1419. STA PPU_ADDRESS4 p. I: z8 W" T3 u, h$ p. V
  1420. LDA #$0C% X+ Q. p9 U+ i5 _: b8 K
  1421. STA PPU_ADDRESS2 {6 K8 }; Y1 a) U& O, z0 v
  1422. LDX #$0C! T- F- |+ b; t( G  H0 z9 ?7 ]
  1423. Update_Palette_Color_Write9 E- A3 _4 A$ b, `
  1424. LDA Palette_Addr,X
    # s: v% C- z. ?$ q" T# u! [! p& X
  1425. STA PPU_DATA
    $ m7 U4 i7 V5 L" H$ E. D# F! E; o2 r8 z
  1426. INX( N3 v, {$ U* `5 O1 Y" n
  1427. CPX #$147 D8 \% J3 f1 P6 r
  1428. BCC Update_Palette_Color_Write
    4 ?" P6 O# ^. v
  1429. LDA #$004 J- e7 U8 ]3 C5 g% }
  1430. STA <Palette_Update_Flag
    7 P3 e7 `5 F4 |$ Q' H. @
  1431. Update_Palette_Color_End
    " r$ E+ `& E& W5 u& ^
  1432. RTS, P3 y( V! C3 {) [$ P3 s
  1433. + p+ i5 @( ^. [/ e# k! ?- m

  1434. : {" M# c# |1 q* Y; f, e' p1 U
  1435. Update_Sprite_Palette_Data5 m: H: y9 S- p. k, S+ q
  1436. .DB $21
    6 w' g0 I3 P9 ?3 A3 N/ E8 C1 d5 b
  1437. .DB $21
      B& _9 n. ^  j+ v9 T. G
  1438. .DB $11
    5 ^: k7 t& |" V: Q
  1439. .DB $011 `' B( j5 ~  ]) O- F
  1440. .DB $01
    + [1 s" B( w  S" W1 V( ~$ u
  1441. .DB $11
    " z, }: C" }) L/ `4 I, X
  1442. .DB $21
    & x! @1 q4 \5 J! U, e
  1443. .DB $213 d0 N8 t; a3 K  S
  1444. .DB $11  v8 ~# [: y& j3 \9 t5 x* N8 ^
  1445. .DB $01& X8 _; ?% I' g6 c* a% |4 v
  1446. .DB $11
    8 y: n, ~: y0 G! x
  1447. .DB $21- |4 z, _3 d# c& j
  1448. .DB $211 p4 B; v& j1 o$ ^# X8 ~
  1449. .DB $11
    6 h6 t* s" g6 R3 G6 [: }$ L
  1450. .DB $017 Z+ N- z" s' _8 D
  1451. .DB $112 M# W. A+ e: O) x  @  y
  1452. ;==============================' m1 d1 C3 ^: x2 z" ?5 R7 q
  1453. Update_Palette_Data;更新调色板数据( ?3 d2 U/ T: t# z2 G' T8 Y
  1454. LDA Nmi_Time_Count
    " O- S& h) `1 `: G
  1455. AND #$08
    % k! Q5 D: s- o6 j" I! R% ?2 L
  1456. CMP #$08
    $ K* B7 N5 U- u8 n/ \
  1457. BNE Update_Bkg_Palette_Data
    3 @& \: j7 j) e& r8 G& ^

  1458. 2 x5 d5 u9 l: j$ C6 T5 k* b5 F; Z
  1459. Update_Sprite_Palette_Data_Set7 m2 u! H9 P& K2 ?: H$ K! s, a0 k4 I5 @
  1460. LDA Nmi_Time_Count# P: Q% }- i. ^
  1461. LSR A8 V8 A3 H- g: D, C- J" d* x
  1462. LSR A
    . p, E' S/ V) n) S8 Y3 [
  1463. LSR A
    $ e! }7 ~3 r6 ?. V- C
  1464. LSR A
    0 e/ a& o, p1 A! \1 S% \; V/ Z
  1465. AND #$0F
    ) m# Q' l! x, L& N0 k0 a, V
  1466. TAX; Q5 B, S! n( `7 m: O/ F7 B+ R
  1467. LDA Update_Sprite_Palette_Data,X! y: g7 |7 z8 c5 t
  1468. STA Sprite_Palette_Update_Addr& z0 Q( S8 i1 p2 L
  1469. LDA #$01% [3 g1 b4 K/ G: c- X1 C
  1470. STA <Palette_Update_Flag
    % O/ A* w2 A7 t, X- T0 s9 T

  1471. $ z6 m7 I$ [9 |% c1 M. r# `" Y5 A
  1472. Update_Bkg_Palette_Data* K3 j9 t" ?4 [4 j1 s* b" A9 ]# J# U
  1473. LDA <Text_Disable_Flag/ k: M. ^5 v1 U  n2 x
  1474. AND #TEXT_DISABLE_RAM( m( @' D8 L& _/ h6 c/ {8 X
  1475. BNE Update_Palette_Data_End/ k% p4 i6 T; J  [/ i
  1476. LDA <Music_Stop_State# _/ [9 x2 f9 i+ m- D5 X/ m
  1477. BNE Update_Palette_Data_End
    # o% J, T: a* f: T. i

  1478. $ }  V+ z8 @" m1 K) B6 E+ K1 c
  1479. Update_Palette_Data_Check
    0 p1 o/ L. H9 `# }, a) q* c" p
  1480. LDA Palette_Wait_Cnt
    - S  d. P$ d+ ]1 _' K
  1481. BPL Update_Palette_Data_Check_Over1 O. n- C* X5 k4 @  y$ m* @% k
  1482. LDA #PALETTE_UPDATE_INTERVAL2 S. n1 q( {$ ~" w2 V
  1483. STA Palette_Wait_Cnt! ?# t' r8 s7 j/ R1 G; L
  1484. Update_Palette_Data_Check_Over
    5 x$ L" v  N, ?2 |0 s
  1485. DEC Palette_Wait_Cnt
    * _$ F: }; q& j+ U0 J: m, X+ b1 w
  1486. BNE Update_Palette_Data_End7 i5 s' Z  R7 U0 l/ g
  1487. . ~! k- [$ u; J
  1488. LDA <Text_Disable_Flag$ C. U) O+ K4 \- {
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME; F9 d, g. H7 a9 z
  1490. STA Text_Disable_Flag. L$ A& X7 |5 H$ j/ F$ U4 i1 ^! d) a
  1491. INC Palette_Update_Flag0 _: h9 T4 g% H( h  n! w
  1492. , t% d8 l8 ^, g9 t( B) W9 f
  1493. LDA #PALETTE_UPDATE_INTERVAL1 l6 A- a, K  Z
  1494. STA Palette_Wait_Cnt
    7 K; \& Y3 m% C/ z7 u" W6 P
  1495. - O7 v. Q- a$ J
  1496. LDA Bkg_Palette_Update_Addr6 D8 P2 I6 |/ `5 L! m2 o4 E1 D
  1497. CMP #PALETTE_UPDATE_MAX2 I! h6 E, A/ e8 I: d
  1498. BNE Update_Bkg_Palette_Data_Set
    , c3 `  i+ C" k  r" ?+ `
  1499. LDA #PALETTE_UPDATE_MIN - 1
    8 A5 ?. [; W+ G: P* q
  1500. STA Bkg_Palette_Update_Addr
    3 R/ |, C8 J! K, \! f) c! x) U8 Y
  1501. Update_Bkg_Palette_Data_Set: B$ J) ^8 E, O
  1502. INC Bkg_Palette_Update_Addr
    $ C" G: X: k. r+ X- a& f9 [) T- [

  1503. / ?2 m' n2 \' B& Y0 s! ]# O5 @! s
  1504. Update_Palette_Data_End
    8 L$ U, V) s( l' U, O! R) ?
  1505. RTS. `" g0 }+ W' ~; l2 e* i9 C
  1506. : j. W1 J7 a+ M
  1507. ;==============================
    $ {9 Q, O& N5 I1 ^: x
  1508. Show_Music_Text;显示静态文本: ]7 X3 D0 _4 w6 I5 b
  1509. LDX #$00
    * W0 ^' n5 F- ?4 N. |
  1510. Show_Music_Text_Set) o4 k2 e" t9 J% {+ u; k9 k
  1511. LDA Static_Text_Data,X
    8 d- T0 o% a* O9 w
  1512. STA <Data_L
    ! |8 \% @- q+ c. r2 ]& t( u
  1513. INX) n$ ]7 x  D9 Q" r* W
  1514. LDA Static_Text_Data,X8 `+ @; s( \" @  T( A. l
  1515. STA <Data_H( d( M( l; o# X. y; _5 ?
  1516. INX' Y/ {4 z: Y: }' I
  1517. LDY #$00. b# b# m2 Z5 w6 K. Q& r. Q
  1518. LDA [Data_L],Y( A. z  `" k/ `: m: \' M: O7 ^/ o
  1519. STA <Data_Cnt5 A  {* k% m+ ^  s+ t
  1520. DEX
    ( N4 p( F* _( [  g, Y3 Y% I* E
  1521. DEX
    7 x0 U- [: V4 ]( Y7 {; ^4 W
  1522. LDA Static_Text_Pos,X
    6 v/ g8 s8 v$ b" o6 ]6 ?3 d
  1523. STA PPU_ADDRESS1 Q1 x, f, I( m* ?1 D. S. R- R
  1524. INX) [$ s2 P; b- U8 z4 d7 R  b2 O
  1525. LDA #$204 Z' U8 \+ T- u
  1526. SEC2 G( ^. ?7 E  Q8 r' c7 ^  e
  1527. SBC <Data_Cnt
    - Q( B# Z0 V4 I8 N5 Q8 u
  1528. LSR A
    & Z/ V) f; x  S& _3 Q7 l. f3 [1 [( Q
  1529. STA <Data_Buf
    1 r3 S3 V3 H, k+ @/ J; L
  1530. LDA Static_Text_Pos,X# g- |  V! ^2 ]5 V4 O6 L! [: @, Z, b# v& j
  1531. AND #$E0
    9 ~- L; D9 S- z3 C/ f* J
  1532. CLC
    ( Y& w$ i& s+ d5 I0 |
  1533. ADC <Data_Buf$ ]$ ~3 D+ K( L8 }  X1 c
  1534. STA PPU_ADDRESS
    " R/ z( J4 R- R: s
  1535. INX% R/ U( k5 C) d* ~
  1536. Show_Music_Text_Set_Write
    & R$ {1 a1 i9 _
  1537. INY. l& g+ h  k5 R1 w
  1538. LDA [Data_L],Y
    ! f0 d! l) y5 v! e; F, W  P8 E
  1539. STA PPU_DATA
    ! ~1 I9 m! L& t7 \
  1540. DEC <Data_Cnt* B* `0 \  }3 _3 P7 R& u* o* ~9 y+ G7 F
  1541. BNE Show_Music_Text_Set_Write; w$ x# M) k( Q' `: d& c
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos5 m# I8 ~* U/ n% c
  1543. BCC Show_Music_Text_Set
    0 }6 I) H2 `" [3 b. f. n
  1544. RTS
    & Q" o+ e+ Q; `5 t0 D$ }; f( C

  1545. % U4 H" ]% ?; |' p8 T# P. Z7 ^
  1546. ;==============================
    + ]9 L: y9 K# b8 p8 l
  1547. .IF Track_Name_Pos;显示曲目信息
    : {7 S, b1 v: E- C

  1548. $ P2 C& e, ^$ j1 a( m! z( U* r
  1549. Clear_Track_Info
    : Q4 G& q& ~  {/ u7 K" a
  1550. PHA
    8 l5 G/ g! U6 q1 e2 u2 e& U3 e- G
  1551. LDX <Music_Item_Cur
    % P% b$ s; r5 b( }
  1552. LDA Track_Name_Addr_Flag,X6 C& Q. n1 `6 t: ]
  1553. BEQ Clear_Track_Info_End_Ex- O# V9 b2 O: X! M
  1554. PLA
    ( u! t: V! r* g2 M) n- v+ J
  1555.   v' N# m% q; D+ P8 f" J. |
  1556. LDX PPU_Cur
    ) l( b) n0 D) }
  1557. PHA
      X1 j) S! j8 I
  1558. LDA #PPU_MODE_CNT_CLEAR: J0 C+ f3 w7 D4 ]2 B
  1559. STA PPU_Addr,X
    ) S: S1 w, ?3 }; T. H& q
  1560. INX+ Z' s/ J  k' J/ m. l  m/ ~5 U
  1561. PLA
    6 n" Z# f% h1 V7 Y* h
  1562. JSR Show_Get_Track_Name_Center_Pos. ^* X; t9 X7 y) K3 `4 {3 b( H! ~
  1563. STX PPU_Cur
    7 }" x6 k( Q/ t9 D3 i7 r
  1564. Clear_Track_Info_End& u8 N* ?3 `9 m% Z  s  n0 R
  1565. RTS
    , g' O9 @! D5 t6 [) c' u* {
  1566. Clear_Track_Info_End_Ex9 G+ q  X. n! W9 q! q' V7 L* m% |$ I
  1567. PLA
    + Y# n; M/ n0 d
  1568. RTS
    , R: z6 y, i1 `( y5 E6 V# [
  1569. 6 h+ l; d1 P$ o
  1570. Write_Track_Info7 Z8 t; u) M: p% N3 Z' Q
  1571. PHA
    , s  |6 ~; j& Y' n, p# F
  1572. LDX <Music_Item_Cur
    ' r$ G9 S2 m$ N1 u( R0 L4 y0 ]
  1573. LDA Track_Name_Addr_Flag,X
    " B6 A" F% K/ U& D+ D3 A0 e
  1574. BEQ Write_Track_Info_End_Ex5 R7 |0 v) ?; C% Y9 F, {5 u$ V
  1575. PLA
    ) M- I: C1 x9 p+ ]) ?9 s

  1576. , \2 M( K$ a' U: a- O/ Y
  1577. PHA5 A  ?& _. B8 [; [8 D* _' j
  1578. LDX PPU_Cur3 ~' H: H9 O3 R
  1579. LDA #PPU_MODE_CNT_LINE: @7 m& D& D& D# B1 |" @( c" ~+ P
  1580. STA PPU_Addr,X: {! H( y" T" ~. ~( R( M, V8 x
  1581. INX0 l( F0 n/ l/ N
  1582. PLA
    . F# P% k; ~5 u. `! R
  1583. JSR Show_Get_Track_Name_Center_Pos
    ) ~9 n) z$ b  Q! ?/ S
  1584. Write_Track_Info_Data2 x9 n9 y0 k" ~- d; ]- K
  1585. INY
    ) @* m, x' O9 o* P  I" `2 j7 D
  1586. LDA [Data_L],Y, V$ ~6 j- b: w, q! j
  1587. STA PPU_Addr,X
    5 K* t* F: g1 R, J8 F; i% A
  1588. INX
    ; a5 a3 V2 K7 ~* ?; P% U
  1589. DEC <Data_Cnt
    , I6 p- x1 j8 f
  1590. BNE Write_Track_Info_Data( B  p# V  R. \0 t2 X& V
  1591. STX PPU_Cur) J) x7 _, q+ ]) T& y+ ^) p5 G: i5 C
  1592. Write_Track_Info_End4 v& {+ x1 {. R
  1593. RTS1 k" o( U7 J0 L# d! y5 ~% T6 s
  1594. Write_Track_Info_End_Ex
    5 k: W" u- u* Q0 _
  1595. PLA
    ) Q, _: N8 j, x" J, c' q, m1 H
  1596. RTS' s2 v! E* n: R- F: X, m# o
  1597. 1 y8 w6 A( S+ i; L4 p& H
  1598. Show_Track_Info
    6 v( B% \& z. q# Q, F' b
  1599. Show_Track_Info_Clear9 U! t. b' N0 ~5 G$ Z
  1600. LDA <Music_Last
    ) a/ f6 K, Z# e2 p/ I7 u$ p

  1601. # f8 \* H- @8 M$ P! ~# p
  1602. JSR Clear_Track_Info. f9 c' @6 y" C" }# H

  1603. 8 \# D0 D$ `5 k% H
  1604. LDX <Music_Item_Cur
    8 G( r5 F  N  q+ c3 |/ S
  1605. LDA <Music_Cur,X
    9 C8 _# {7 ~( e4 {6 e
  1606. JSR Write_Track_Info# l& {( q, V+ e. v( `4 ]& r
  1607. RTS7 G5 S, N( j/ |$ h$ e
  1608. ! V9 G  t  o/ P3 `# z, j
  1609. ;==============================8 x! ?4 f& v+ c% J
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置, H" \1 u/ X4 _" s$ Q- Y1 S
  1611.   I9 r# Q% h9 L7 Y
  1612. ;取出集合名索引
    4 D9 @6 q: i& q
  1613. PHA+ n' _& L' {# P
  1614. & ~: N) ^- }, k3 `
  1615. LDA <Music_Item_Cur
    & u! Y, P. l! Q3 i/ b! ^- v: \. j
  1616. ASL A; R+ |! Z& z0 Z0 U% d, K+ `, y
  1617. TAY% Z9 t+ \$ O' d) r+ O' m9 P7 X0 {( y
  1618. LDA Track_Name_Addr_Port,Y
    * u' i* S( N. A  W2 n
  1619. PHA
    - L) i! _* \: I5 j1 }
  1620. INY
    8 e: W( k- i* B) j/ `% u8 c
  1621. LDA Track_Name_Addr_Port,Y' K% k$ H* j# w1 f* @* ], Q% r
  1622. STA <Data_H7 o8 f) d4 R% [3 G6 G
  1623. PLA
    ' X& C! u' ~, D" i3 r
  1624. STA <Data_L
    ; A# H! q5 V) Q: M

  1625. 8 z; f6 V2 L( d4 k8 I
  1626. PLA5 c3 p5 {* ]7 o/ t) B& g

  1627.   H. b3 x. P* y# Q. L9 P4 W, I
  1628. ASL A
    , T1 v' N' b( ^  x! O3 l
  1629. TAY8 @3 u: g1 s! M
  1630. LDA [Data_L],Y. D: e- r/ V, u; ^6 ?- f2 d
  1631. PHA
    ) s- F9 m1 Z" k9 A4 a5 k7 _7 h
  1632. INY: i/ }8 b6 I: J4 X1 c( Z+ B
  1633. LDA [Data_L],Y
    . N7 l3 a2 F1 k2 C
  1634. STA Data_H
    8 ]% v. a% J4 s! ~* K, \5 y
  1635. PLA- V  J6 S* c# U$ m' J
  1636. STA Data_L7 q" Y* Z9 Z0 B9 F% @
  1637. 9 s( Z7 ~9 M% B3 L6 |* {
  1638. LDY #$001 }! C+ t& Y. J7 ^. C) y6 m
  1639. LDA [Data_L],Y6 ]) Q2 b; y/ B
  1640. STA <Data_Cnt4 H" H, ~/ v6 _. v% p, N* L
  1641. LDA #$208 H, D- H' k2 z7 W
  1642. SEC
    / C# j& ?6 T' B
  1643. SBC <Data_Cnt
    / }* [  ]/ h8 M
  1644. LSR A, o6 R3 X# |: `$ q' T
  1645. STA <Data_Buf
      s8 @# t1 ]; V6 o! F
  1646. LDA #HIGH(Track_Name_Pos)' y; y0 t/ _: L& a) F  i
  1647. STA PPU_Addr,X. Y( [: v# b- \$ z- d
  1648. INX+ [* l9 T4 M, Q& F1 z& q  B% F. t
  1649. LDA #LOW(Track_Name_Pos)$ R; ?- s5 H2 @" p
  1650. AND #$E0# T  d0 j0 ~7 s3 x# W/ n  @/ B
  1651. CLC
    8 L- b  M1 e$ I  \! t8 W
  1652. ADC <Data_Buf
      ^5 M+ H5 b5 C7 v* S0 Z- b7 G2 P' K
  1653. STA PPU_Addr,X! B$ d5 ?# w, q
  1654. INX
    0 @4 p  c# u% z2 ~. `, \
  1655. LDA <Data_Cnt
    0 i; j0 r6 ~4 H( O9 \
  1656. STA PPU_Addr,X
    0 E  q1 l. o+ k5 K  E6 k0 H( z
  1657. INX2 Q' l; S" U# M4 e2 r+ ?4 _
  1658. Show_Get_Pos_Center_End7 R, `3 y% ]: |! J
  1659. RTS
    4 K  N5 f+ w: L# b
  1660. .ENDIF
    5 Z  G- e! f0 C2 z

  1661. - _' Z2 d% ?3 B  A4 d! v+ p
  1662. ;==============================
    * }4 X5 m8 Y1 Y( |
  1663. ;音乐端口清除
    . f4 V, g3 x9 c/ \
  1664. Sound_Data_Clear2 u0 f" i) \0 a6 x1 M% }
  1665. JSR Sound_Port_Clear) X' J+ c1 e: C# C7 j, s
  1666. JSR Sound_Ram_Clear
    4 \! D) Z6 ]( M9 d  f5 c- U
  1667. RTS' m4 A$ r+ J$ Z$ m
  1668. + w) B  m' j: K4 A$ w% v
  1669. ;==============================5 H, m% V, A: s8 b
  1670. ;音乐端口清除
    8 z! O  \3 @: W1 X! C
  1671. Sound_Port_Clear. b( {6 G9 g. x4 U* c) @( v
  1672. LDA #$00
    : A! h! p% ?1 Y; L  w, T
  1673. STA APU_STATUS
    1 [# o+ z6 K, `2 Q5 l
  1674. LDX #$00
    5 P; P5 O+ d( Z' M4 F
  1675. Sound_Port_Clear_Write
    ( U: G2 N2 o/ |  A
  1676. STA $4000,X+ Y, V1 c+ x, @8 T# T  }7 x( T) P  x
  1677. INX( `* G1 s5 i0 t- W6 V; v9 b' q: p
  1678. CPX #$14
    5 }3 Z3 }2 c, A1 j$ L3 i
  1679. BCC Sound_Port_Clear_Write, V1 v( I, E8 |7 o: M# }$ L
  1680. RTS6 i8 {  O, ~- Q7 Y: }, p4 f
  1681. . k" x+ \" K. E5 e  [
  1682. ;==============================
    : Z" }5 b) f. v  X. b5 }
  1683. Sound_Ram_Clear;RAM清除
    1 @. U( G% t1 Y7 n* |$ D  N
  1684. LDX #$00
    # C8 B9 ^' ^3 k$ x
  1685. LDA #$00" I/ H% @" ^+ G+ L! u5 J' V
  1686. Sound_Ram_Clear_1
    5 n# |2 u6 E. a; L6 w) k+ r
  1687. STA Sound_Ram_Addr_1,X
    & Z* a5 r+ y6 ^- M# [% {% l
  1688. INX9 P2 a/ j' c. `/ k; h$ r" J
  1689. CPX #Sound_Ram_Addr_1_Size
      r5 R& }- r( a/ M
  1690. BNE Sound_Ram_Clear_1$ _" o3 b4 ^) H: I/ m: A% ?
  1691. LDX #$004 r* a/ a) R- U" d/ _
  1692. Sound_Ram_Clear_2
    2 `4 u9 K  l8 X. W& \
  1693. STA Sound_Ram_Addr_2,X
    2 j4 i5 \( J" J( c" P/ z
  1694. INX
    ( f2 c: m; q" k# k) l9 h8 K' D, h
  1695. CPX #Sound_Ram_Addr_2_Size+ Z# s* Z+ P" T
  1696. BNE Sound_Ram_Clear_2& r. d! }0 }  Z8 B- B' U3 v2 ^0 a
  1697. LDX #$00
    : D$ Q4 m  ^. D7 b6 F( V6 P
  1698. Sound_Ram_Clear_3( F$ E+ W" D: S
  1699. STA Sound_Ram_Addr_3,X
    6 C) t7 T" X. Q& Z) d9 [
  1700. INX
    6 b  D8 j% g  X! X
  1701. CPX #Sound_Ram_Addr_3_Size! Y5 ~' s9 E( g
  1702. BNE Sound_Ram_Clear_3
    $ ?* D4 j; |3 K% @( M
  1703. LDX #$007 X/ Z8 H9 @% E6 r
  1704. Sound_Ram_Clear_40 N" G1 }4 r5 a
  1705. STA Sound_Ram_Addr_4,X; G8 y8 O6 y8 k, y' T1 a3 y$ A4 T
  1706. INX
    8 a# o  \+ ~3 U7 d, A# z
  1707. CPX #Sound_Ram_Addr_4_Size
    $ B! I3 b4 r2 g8 U1 ~
  1708. BNE Sound_Ram_Clear_4) K4 m9 A! Y- N1 u& I
  1709. Sound_Ram_Clear_5: _7 [2 u$ f' p
  1710. STA Sound_Ram_Addr_5,X
    5 H! N$ ^) H( F1 u! C
  1711. INX) I2 h! g0 o% L" p) J9 O; x8 P
  1712. CPX #Sound_Ram_Addr_5_Size3 C% {- t9 R$ Q6 r, f  i# u# c! d5 }
  1713. BNE Sound_Ram_Clear_5
    # l( n) a; u, d8 ?
  1714. RTS
    * t% l* `; x" ^# i9 `
  1715. # X6 L% y) L  }* D6 t2 z7 u
  1716. Get_Music_Collection_Name5 _' Z& I% w. N  p, v+ F8 l8 r
  1717. PHA
    6 N% q% R1 m$ t0 G4 z' l
  1718. LDA <Music_Item_Cur
    + l8 n0 |0 d3 E; e9 n, {
  1719. ASL A
    9 f4 s1 _9 G3 t9 j4 }) w1 k+ E' `+ g
  1720. TAY4 Q% s5 n; J) u! n  j) B# Q
  1721. LDA Music_Collection_Name,Y
    4 P9 R2 x4 I0 u; X6 m# f9 R
  1722. STA <Data_L+ x8 l6 F( D4 T+ J8 }8 |
  1723. INY
    ( H! T3 W, \6 Q: ~& _3 m! Q
  1724. LDA Music_Collection_Name,Y
    & }. V3 {2 H. X
  1725. STA <Data_H- r/ ^: U, l" A/ ]! f8 C
  1726. PLA1 }% e. L4 J8 e, N. B/ n0 i
  1727. RTS
    8 Z5 U, W9 M- C: J( T
  1728. . {8 J6 R5 F6 h: U
  1729. Set_Sound_Total! r( F2 H! ~9 F4 Q7 `1 t
  1730. LDY <Music_Item_Cur
    0 }& J. ?, r3 ~; P
  1731. LDA Sound_Total_Port,Y1 |6 I' a2 s5 M" ?
  1732. SEC6 [/ c, C' ~" C) [2 Q$ z7 u
  1733. SBC #$01  D: I  k; o  ^0 x  ]* \
  1734. STA <Music_Total
    + v( a# V5 e1 I$ L/ u" o. e
  1735. RTS
    3 A$ d1 ^+ B* d' z. I$ @. d6 T
  1736. 1 B& n% w& p8 U. U
  1737. Get_Sound_Start& v7 T# K. Y' S! I- R
  1738. LDY <Music_Item_Cur
    0 R& r% G/ C7 \* o
  1739. LDA Sound_Start_Port,Y
    0 X8 R9 {8 k' T$ M) c
  1740. RTS
    4 h. U8 v1 U' K

  1741. # w! b& W1 H2 Y; S. v6 g
  1742. Set_Sound_Init_Port
    8 j% a& w1 ]% ]& }5 d) s
  1743. PHA
    ; E8 N8 h- _. t- d2 L9 _/ D  V3 {
  1744. LDA #$20
    " D5 P% A& Z. I& T; H. D7 L6 D0 S
  1745. STA <JSR_Addr_Op" I, x6 [1 a# l) J9 `
  1746. LDA <Music_Item_Cur& D$ `2 ?( E! G
  1747. ASL A0 H* j! W6 q4 J6 {$ m
  1748. TAY
    + m4 ~; r: N6 \& \& Q
  1749. LDA Sound_Init_Port,Y
    " V: b8 x+ c( ]
  1750. STA <JSR_Addr_L* y" v! z0 ?  N3 X' `" R2 L. O
  1751. INY% _9 j' r8 G! p0 ]8 {
  1752. LDA Sound_Init_Port,Y
    - t0 [3 F- S9 i# @+ y/ P
  1753. STA <JSR_Addr_H) {7 L# g0 z; O7 ]. N# t
  1754. LDA #$60
    # z( |+ W& _/ I$ d
  1755. STA <JSR_Addr_Rts- q/ l; z; Z+ ]! r
  1756. PLA
    5 _9 x* T- H5 U
  1757. RTS$ f0 K; @1 \0 }2 M6 }' H+ L1 Q
  1758.   q( U/ k/ P+ l
  1759. Set_Sound_Play_Port' `- c* z% A% o
  1760. PHA3 y) }/ ^/ Z  j7 u( u
  1761. LDA #$20' x+ R6 I: w2 V
  1762. STA <JSR_Addr_Op# B% b. ~/ Y$ D- o/ \2 c7 I6 k: T
  1763. LDA <Music_Item_Cur; K6 I; h6 F3 ~" D9 Y
  1764. ASL A/ h2 d5 b# i7 j/ ]# I& c
  1765. TAY
    # X  M  X3 X5 @  E
  1766. LDA Sound_Play_Port,Y& q# X0 `8 S+ P; K, i
  1767. STA <JSR_Addr_L0 P4 }' p- V; ^* R
  1768. INY
    7 i8 J, ]# l! Y" v0 t2 J$ S
  1769. LDA Sound_Play_Port,Y# z6 O& n8 I* `+ T( U( J8 F3 X
  1770. STA <JSR_Addr_H2 r, y* Y/ }4 r; m0 J) g1 q
  1771. LDA #$60$ ^2 N" F. x6 q% @7 ?! S  Q, |8 k
  1772. STA <JSR_Addr_Rts
    2 Z3 V# F  N* }
  1773. PLA+ C, R; c% N" ~) v2 o2 R: N
  1774. RTS9 e! C! i* j  f- c% w  a

  1775. : B% p, S. F* W* l8 T3 w
  1776. Set_Sound_Reset_Port) O  x# V2 U2 @
  1777. PHA3 J) M! T% K! D% a0 F3 r- E
  1778. LDA #$20
    : W; A9 ]) g4 @( a" ~" }1 Z
  1779. STA <JSR_Addr_Op6 \5 c1 f+ l( L" \$ w" _* V
  1780. LDA <Music_Item_Cur7 e  [% c2 E; c1 ~. s
  1781. ASL A
    * U+ r# X" x) S- B7 d2 |' j+ K
  1782. TAY) ~! p: j* c' F. g( t) C
  1783. LDA Sound_Reset_Port,Y
    ; k* d' F7 c# Y( k/ P$ q- r0 A; H$ G
  1784. STA <JSR_Addr_L
    0 a+ [* L6 {) T
  1785. INY
    - ~* A( E, c  T8 I4 B
  1786. LDA Sound_Reset_Port,Y8 f; k; L- I( z: v9 t8 ?$ L  g
  1787. STA <JSR_Addr_H+ [, Y- u' E- ]! Y& z* E# H" G+ }
  1788. LDA #$60
    0 g+ m6 a( z/ W) ?9 e
  1789. STA <JSR_Addr_Rts- G" q% Y% r$ ~9 J* W
  1790. PLA
    0 }' Q: h3 d% g
  1791. RTS
    ; s1 O; Z0 b$ C4 f- ~% O

  1792. 9 T4 i* T6 A3 B  j: e' d1 u$ f
  1793. ;初始化音乐bank
      E$ K0 o6 {: k7 B4 ?9 j
  1794. Init_Sound_Bank$ q8 w& r0 X- z/ F
  1795. LDY <Music_Item_Cur8 Q) a- {/ X- h. }4 A
  1796. LDA Sound_Bank_8000,Y
    7 g, z; T' V0 h- ~) t! ~$ W
  1797. STA <Music_Bank_8000  q: f7 }" A/ H& O
  1798. LDY <Music_Item_Cur* p3 {, [6 v$ V# N8 o, V' l
  1799. LDA Sound_Bank_A000,Y) ~. q% V" X  R" g8 b6 ?3 s: `7 B
  1800. STA <Music_Bank_A0008 B" B& x7 Q' U2 ]
  1801. RTS
    ' D  W- T) t/ M4 G8 f2 q

  1802. 1 j' Z+ ]! V, ]0 f* f
  1803. ;==================================================
    6 \) n- R- f+ ~( G
  1804. Sound_State_Reset;音乐状态重置
    6 x2 g/ s$ h/ M6 n
  1805. JSR Music_Bar_ReSet        ;重置音乐条3 }& r- K. `$ P. X$ I( j
  1806. JSR Time_ReSet             ;重置播放时间
    & S$ a. z: B# B
  1807. 1 Y, `$ `! X; Z$ w
  1808. LDA #$008 s: H, [/ P& U( P! @  h
  1809. STA <Music_Stop_State
    $ Z7 `; F/ t# q2 C
  1810. JSR Music_State_Show       ;显示播放状态
    / k9 F1 g7 Q0 E; h: _! T

  1811. 3 T' l4 d" i3 S( u; B
  1812. .IF Track_Name_Pos
    " M( G5 K& z, Q5 R2 G
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    5 d. G0 W% h7 e5 V) @
  1814. .ENDIF' O9 |& t& G0 G: I) m: Q

  1815. 0 s% L" n; R: d
  1816. RTS) z1 O4 Z$ b" ?2 [( _

  1817. " i# s9 x3 K0 ?1 {# o4 ]" c
  1818. ;==================================================
    6 _) v: \9 o0 G
  1819. Sound_Init_Proc;音乐初始化处理: R/ Q) Q0 ?/ E6 |* I, P  m
  1820. PHA
    . q/ F, A" Z% O4 a& w' r! ~1 b
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    $ V* F- q) w  ?/ g3 v
  1822. LDA #$00) Z6 ]2 X3 y' W3 ^  u
  1823. STA <Scroll_H               ;重设水平滚动
    ) n8 Y9 V% s+ Q6 z& B0 c" i7 N
  1824. LDA #$0F( j# L4 A' Z- ]# K! j1 @
  1825. STA APU_STATUS5 y0 H" `: ?/ B- N9 e( D
  1826. PLA) Y3 a4 H/ r. d9 N3 @
  1827. JSR Sound_Init             ;音乐初始化. @; F" A6 K& p  t3 J
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    5 {3 w6 j  Q# M& n  A& ]* L! ^$ H1 U
  1829. RTS
    ) b1 M2 [& k! l2 a

  1830. 5 L& [- L. d8 T* I' N4 E4 y
  1831. ;==================================================1 u' R3 i& M* ^
  1832. Sound_Play_Proc;音乐播放处理
    - ?4 O' R9 k" s4 n
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址# b5 z1 R- _. O, H# y# H) h6 N
  1834. JSR Sound_Play             ;音乐播放
    9 M2 Z! c9 y5 }
  1835. RTS
    6 ^" h' e3 ?; W

  1836. - Q! m4 e1 b, p+ I0 S8 n
  1837. ;==================================================+ @8 C# ]! J$ o' n
  1838. Sound_Reset_Proc;音乐重置处理
    5 C2 p; L/ b+ W: Z5 s& O
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ! H3 z- `2 \4 H; ~
  1840. LDA <JSR_Addr_L. V- M4 }. {8 b( M$ ^: U
  1841. ORA <JSR_Addr_H
    ; ?8 j' ^2 F- h1 }9 D2 r
  1842. BEQ Sound_Reset_Proc_Default; H( o; `0 Y! P- x: h( S
  1843. JSR Sound_Reset            ;执行音乐重置4 t7 W$ X0 B+ T- o+ W
  1844. JMP Sound_Reset_Proc_Init_Sound
    6 W8 K. w- x. l2 g) ?7 [5 V( Z

  1845. ! t' R8 b# P3 j6 _2 ~- A! w7 B! b
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理9 R5 D. X1 K8 z, a' D

  1847. 3 S2 }$ J; }$ C; ^- r
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    ! }! j& W# _" O7 Q. ]
  1849. LDA #$00( Q3 f$ S2 d4 ?; a3 i
  1850. STA PPU_CTRL# j( T' W! ~% P, u8 l: M

  1851. $ e* w  _, \& ~) e- j+ q4 u% O
  1852. JSR Sound_Data_Clear9 o, z" K$ V6 x

  1853. . R6 [7 H$ O' }& m# p( z
  1854. Sound_Reset_Proc_Default_Wait
    8 D; _, K' Z! a. X( h# ?
  1855. LDA PPU_STATUS# U! k( [4 B" A0 z6 y
  1856. BPL Sound_Reset_Proc_Default_Wait
      ^  v, u' [! \. ?9 a

  1857. ; \, S# G5 C- [
  1858. LDA #$00
    6 W* j+ X2 l0 H
  1859. STA PPU_ADDRESS
    & u$ x) U( ~3 j* ^/ u
  1860. STA PPU_ADDRESS4 V" @* z, G* f- j6 B
  1861. STA PPU_SCROLL
    / ]# q- C5 D1 N0 J7 {6 B' Y. P# p
  1862. STA PPU_SCROLL
    5 u! r% T. B: e8 U8 K4 L8 ]- v

  1863. / c3 L7 w  _3 Z9 x
  1864. ;恢复PPU控制
    / m6 A4 r+ W3 e$ M7 M: w6 t
  1865. LDA Screen_Ctrl& g0 O% z4 z9 T# `5 k
  1866. STA PPU_CTRL
    0 r4 e# b6 n7 ~0 ^- {* ]

  1867. # x% z6 [; K) w! S8 _" q
  1868. Sound_Reset_Proc_Init_Sound* V+ ^, t; Z  ~9 U
  1869. LDA <Music_Stop_State: f& J# @* V2 g# `
  1870. BNE Sound_Reset_Proc_End
    5 X7 J* g' p$ ]% \! y
  1871. LDX <Music_Item_Cur
    . h5 [: Y; e; ^3 `& `/ B
  1872. LDA <Music_Cur,X0 Z, H! x" |# q* j
  1873. JSR Sound_Init_Proc
    2 w8 i. I3 p0 U+ S  n) u) N) @- C
  1874. Sound_Reset_Proc_End
    % [/ _; y( T: O. C# T- g: j/ h* N; R# x
  1875. RTS
    * g3 F8 D: U( [3 @* e4 T

  1876. ; b# [2 V3 M, k6 Q4 f( B2 X7 [  h
  1877. ;==================================================6 _1 i( ]  K* X# t+ w9 i2 f
  1878. Clear_Item_Text;清除页项目
    / j& N: O5 @7 K3 h$ K: {
  1879. LDX PPU_Cur% u  u: ^/ ~) h: {
  1880. LDA #PPU_MODE_CNT_CLEAR
    + d2 J$ x  s$ n
  1881. STA PPU_Addr,X
    + f5 Q7 J+ j3 Z4 O% K% G$ g
  1882. INX' x1 @8 R/ [" v0 z
  1883.   x1 \+ X& v; s
  1884. LDA <Page_Last/ D) C0 A5 R5 |: M& H
  1885. SEC* q' }+ {5 c/ j$ f; y5 o
  1886. SBC <Page_Last_Index
    3 o+ c0 H* h& H9 i$ r
  1887. ASL A# p# C8 K' u1 N0 e- U
  1888. * A/ m+ V1 j( V; n- F4 Y2 c
  1889. TAY! v* T2 Z7 A0 j5 N6 D1 K2 X% @
  1890. LDA Item_Pos_Data,Y1 C+ y% T6 w$ j3 ]
  1891. PHA7 m: Y9 m% R' P
  1892. INY0 h: \# d" _7 Q1 M7 K* i
  1893. LDA Item_Pos_Data,Y
    - w% [* A$ J! G% }; ^0 X. F
  1894. STA PPU_Addr,X
    4 d) n& B, }) N% t
  1895. INX
    4 C9 F# t0 Z! z$ I% _
  1896. PLA
    ) j, Y; R8 g! v8 H
  1897. STA PPU_Addr,X
    . h$ y$ S8 }2 Y' P! X$ c# K9 T
  1898. INX
    6 \' u0 ?1 x: x
  1899. 4 {; M2 A, w+ N1 x8 L8 ?! W# l
  1900. LDA <Page_Last
    * s4 a! s6 q2 j- l) Y1 n
  1901. ASL A
    ! q4 N/ v9 }8 v
  1902. TAY8 l9 I; x7 y9 A
  1903. LDA Music_Collection_Name,Y
    9 O3 Q" E( l( z1 P
  1904. STA <Data_L
    " `, C; d6 H- l# C
  1905. INY! ?8 V& N$ E. p0 ^( A% \' u
  1906. LDA Music_Collection_Name,Y1 ^! A" g2 {& N; X4 D* B, V' D
  1907. STA <Data_H2 r- w: Z) G6 `9 Z: J4 e" ?
  1908. 6 G6 _; P* W1 S9 W; o+ L: C, u
  1909. LDY #$00
    ( q8 f7 a2 Y& {6 G/ j, n& i, O
  1910. LDA [Data_L],Y! M* a1 L# Z! k
  1911. STA PPU_Addr,X* N7 W9 a+ e8 D
  1912. INX# ~; N9 x' @5 Z8 ^& {2 C( Y2 m
  1913. Clear_Item_Text_End
    5 T, H% h0 f9 ?/ u: v3 _2 y8 b
  1914. STX PPU_Cur9 y8 x; d& \5 ]
  1915. RTS0 @$ H; ]" t0 _' y, q- F. n

  1916.   ]* b& r6 f  O) E4 v4 p
  1917. ;==================================================
    & i; B* s5 x3 d) }8 M
  1918. Show_Item_Text;显示页项目
    3 z* R* d; ~  e5 k4 V
  1919. LDX PPU_Cur9 ^0 a4 F! }1 X! [" u
  1920. LDA #PPU_MODE_CNT_LINE
    - ~. R6 o; h9 ?: f" W1 m/ F1 Z7 n
  1921. STA PPU_Addr,X
    8 S+ W. j, I  |, H! B
  1922. INX, K& d; c( U1 {5 O3 @6 ^) H8 Q' y
  1923. LDA Page_Cur
    4 |& m: j6 ?& [
  1924. SEC
    * c; r9 o/ y5 h/ V2 z2 i
  1925. SBC <Page_Cur_Index
    ' O1 J3 ^' i0 ]
  1926. ASL A; x* h" Y6 l6 G- o: b. H7 M0 `5 M, g
  1927. TAY
    , J, s' o6 J) I# T% h* `+ S( V# `
  1928. LDA Item_Pos_Data,Y4 ^4 D' u" x7 _3 a, _. f& y
  1929. PHA
    : n$ ^3 G% B4 i, M& v4 p* l4 ^
  1930. INY
    : {( D/ N, H# M  m2 d1 x  k' S
  1931. LDA Item_Pos_Data,Y- c7 l4 Y) M0 |$ \+ ?& u
  1932. STA PPU_Addr,X8 \2 b) R7 z' W* k4 M* r% d: l9 C
  1933. INX
    # M# }+ {( u  g; R1 Z0 s1 `
  1934. PLA
    8 D! h: ?$ h  f1 F( I  g3 i
  1935. STA PPU_Addr,X0 P. {. U  b( H
  1936. INX" B! W! }' F* e: {- ^' z2 e
  1937. 0 L8 D) S: K: F2 r
  1938. LDA Page_Cur5 s! F: i, v7 r: d0 I  M* n& S
  1939. ASL A
    ! z5 k. q/ S3 `+ v4 L/ i  d* V
  1940. TAY
    ! ^$ \3 Z/ _* y% Q, [# g$ X( m
  1941. LDA Music_Collection_Name,Y  G$ p+ U; i. w& I/ I4 h
  1942. STA <Data_L, X* _" X4 z2 C5 U) i
  1943. INY
    3 x. g4 y3 `& w/ N5 w  u& S( r7 f
  1944. LDA Music_Collection_Name,Y& B2 q, q5 m0 n0 u) \
  1945. STA <Data_H
    3 ~! w8 x1 x7 L* Z! U) |3 ~! O$ |
  1946. ! M$ u, x3 h6 d$ W* ~3 n: m2 X8 _
  1947. LDY #$00
    6 O  M' u: }/ t9 @! G$ ]  i$ T
  1948. LDA [Data_L],Y1 @) G: z. p- n# y$ {( k# p
  1949. STA PPU_Addr,X4 K  T+ z6 e* m( d% Q' I7 G8 J) z
  1950. STA Data_Cnt+ a. a) k( b) g; n( c4 c8 `
  1951. INX
    ' Z* z' K3 }9 O' x9 n
  1952. " W* }; B3 q2 o3 \
  1953. INY
    3 x/ q3 U5 v2 j' j$ P: h" i
  1954. Show_Item_Text_Write# y  Y9 e5 K. Q, ?5 H- D; R1 M- E
  1955. LDA [Data_L],Y
      b0 T+ p* C, J! ]! i; }( i- f
  1956. STA PPU_Addr,X
    7 }! L" b) B1 h  Q' H
  1957. INY
    / O4 \  I) x* P! w$ [
  1958. INX* G8 u) b6 _# A+ G) h* C
  1959. DEC Data_Cnt2 ]# @8 O- u& I
  1960. BNE Show_Item_Text_Write
    9 a9 T. c% C% `2 G1 J  P! ?* |

  1961. - @, f; t0 F7 b/ r5 Q
  1962. Show_Item_Text_End
    ' A! w: [: H/ o
  1963. STX PPU_Cur8 `* ^6 Z- c6 v0 C. J: D
  1964. RTS' P4 O8 E: R. Y( l
  1965. 6 w1 g8 ~) F6 L" b/ ~0 z
  1966. ;==================================================
    8 Q  e8 s9 o  x6 h! g# {
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量' v; }1 l6 g0 h0 [% ^% h! ^
  1968. STA <Data_Buf
    3 M( y# T  O$ r: ^. |: Z
  1969. LDA #$00
    & T/ y. X% ~9 s8 `# D
  1970. Get_Page_Index_Calc" O) g1 H0 T( F! y4 u- N  h$ N: M& z
  1971. CLC: P+ i6 ~3 N* Y
  1972. ADC #PAGE_SIZE( ^$ A- {$ v; e+ p8 Q9 ]
  1973. CMP <Data_Buf
    7 r* K: ~: \2 i. ]  p7 k4 q
  1974. BCC Get_Page_Index_Calc
    1 |" ]. J; d* W5 r1 E/ o
  1975. BEQ Get_Page_Index_Calc_End
    4 }# l! }0 W7 P/ E) Z2 |6 ?
  1976. SEC
    # |  X. s2 j9 w" k
  1977. SBC #PAGE_SIZE% H4 \" Y$ L. l( C: z. m, t3 S7 C
  1978. Get_Page_Index_Calc_End! a& o3 m1 F  {+ Q0 M8 O0 x- X
  1979. STA <Data_Buf
    7 A# B" H" {- Q) w& _3 {7 s
  1980. Get_Page_Index_Cnt/ E" m$ R0 v" {9 q# z/ O
  1981. LDA #PAGE_SIZE
    6 ~: v  j  Y( r' b
  1982. STA Data_Cnt
    , I+ e0 W, \9 p/ W: j4 e
  1983. # m! X' K. [6 r1 l. D
  1984. LDA <Data_Buf
    & d8 O5 i: A- T' d* o. `2 D7 t
  1985. CLC
    ' A; @% e/ i9 U. q& y4 ~
  1986. ADC #PAGE_SIZE
    1 }& y+ o0 e% L) }4 O( `& V
  1987. CMP #ITEM_MAX_SIZE( t" S2 b, Y; j$ J8 l) q  t
  1988. BCC Get_Page_Index_Cnt_End* u* |, T+ A- S* z& j, V1 c
  1989. 9 p1 z9 U; q! w1 B
  1990. LDA #ITEM_MAX_SIZE
    & @9 A, i' w3 B! _4 p( \
  1991. SEC, \7 a1 |: u6 \/ t$ Z" Z/ O; p* O
  1992. SBC <Data_Buf, z$ t# S* ~% u. c* D
  1993. STA <Data_Cnt
    0 e" Y9 U/ e' ~: O. H+ \

  1994. 0 J- S+ H3 x" E5 I; S
  1995. Get_Page_Index_Cnt_End  {, _! j1 I4 C1 f: E- L' w
  1996. RTS5 h# G  \' J; K3 X. S. S- N9 C
  1997. 4 r( J# D- g4 E6 I7 [
  1998. ;==================================================/ X1 e* }* ^& H) L# d
  1999. Get_Last_Page_Start_Index. d8 W9 a2 I3 `% s8 ^# O
  2000. LDA <Music_Item_Last
    % c4 l% K( Q5 r8 G0 M3 A* ~, K/ X
  2001. JSR Get_Page_Start_Index
    ) _; s4 C% s8 G
  2002. LDA Data_Buf, C0 W& d6 w: [  i+ S. y" V% u
  2003. STA Page_Last
    ) E( V3 s5 t( H% h: R, F! }1 d
  2004. STA Page_Last_Index0 l! \; u# h+ Q- M8 Y8 [7 [( u7 P1 `
  2005. LDA Data_Cnt, u) c7 O, F0 U, t$ N2 }$ S2 E
  2006. STA Page_Last_Cnt
    9 w. L0 Y0 ^6 J2 b6 S) g& |4 Z
  2007. RTS
    ( J# o: {2 d' l( [4 ~' U' c

  2008. # L2 _* B' T+ b7 r$ m( x
  2009. ;==================================================" J$ N4 L9 W% b1 p: y
  2010. Get_Cur_Page_Start_Index& d& ]- Z% s2 H5 x
  2011. LDA <Music_Item_Cur
      r9 |. @$ N  N* ^4 r+ S
  2012. JSR Get_Page_Start_Index
    ; o! ~: M; R# i; {
  2013. LDA Data_Buf3 j5 Q4 R4 D# q6 \! T
  2014. STA Page_Cur) O  S$ L4 A( q6 X2 M! M
  2015. STA Page_Cur_Index5 p) x. u8 o1 J# _
  2016. LDA Data_Cnt
    + r( M- m8 l4 @# v+ m' C, w
  2017. STA Page_Cur_Cnt
    2 J" p, h# \: m' o
  2018. RTS& t/ B" w5 R/ j- P. T

  2019. 4 p) ]# {/ v/ t+ S  _' d
  2020. ;==================================================& i5 k- V+ c* ~% ]3 J) ?
  2021. Show_Page_Text;显示页文本  j# i2 @, l/ [
  2022. LDA <Text_Disable_Flag
      `; l7 [/ |% i8 W9 j; {( ?6 K
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM$ w% F. Y3 T: _# J/ [' Z/ G9 {# Y
  2024. STA <Text_Disable_Flag- J! T/ G8 n3 z" e4 x
  2025. ; A! r) m6 ^# t/ ~
  2026. JSR Get_Last_Page_Start_Index
    / d/ K; b1 s( v" I+ c
  2027. JSR Get_Cur_Page_Start_Index# G! ^) p3 r! v0 f: [" a4 ~
  2028. 2 z7 y1 |) a4 A7 d! Q
  2029. Show_Page_Text_Set
    3 f% N, J7 Q" ]7 [6 }, A5 A

  2030. / K5 l& e; O( G
  2031. Clear_Page_Last_Item;清理上一页; I- S! \" |- Y3 V' h2 X1 s
  2032. LDA Page_Last_Cnt
    2 G0 d' p- c5 E; G
  2033. BEQ Clear_Page_Last_Item_End
    5 o7 G; @% J6 }3 F5 S1 w9 L5 w( I
  2034. JSR Clear_Item_Text
    ) e* _6 K, |) R( A2 B
  2035. INC Page_Last
    0 _+ i0 C1 J1 m$ L2 b( i
  2036. DEC Page_Last_Cnt' d& }, m- |2 j  l; _6 k! E' V- T
  2037. Clear_Page_Last_Item_End
      d3 C' M+ J: h; ~6 q$ ^

  2038. ' f" k' L- f& n7 e, c% b% f# Z
  2039. Show_Page_Cur_Item;显示当前页
    * n0 W% }: ]! Y
  2040. LDA Page_Cur_Cnt
    # M; {! F7 [- H! ^
  2041. BEQ Show_Page_Cur_Item_End
    6 s1 h: \5 [* ?- H+ A  r! d  L! I! Y
  2042. JSR Show_Item_Text8 _! D- [7 b5 n$ }3 t
  2043. INC Page_Cur, r' H/ m3 ~+ K; D* X
  2044. DEC Page_Cur_Cnt2 a( p" |2 Q# o+ k& F+ {- s' F2 b, ]
  2045. Show_Page_Cur_Item_End
    6 m$ w9 r8 B' W# F
  2046. / s# x5 x# V5 M- u0 q
  2047. INC <Time_Wait_Cnt
    5 T0 v1 c: v! g# C6 m) c' a
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作8 A8 \4 x9 T7 a" M
  2049. LDA <Time_Wait_Cnt
      k/ l" C* f& q' o% [# u
  2050. BNE Show_Page_Text_Set_Wait9 x0 t1 s! B+ X" T( `
  2051. 6 u) I1 X# O+ |
  2052. LDA Page_Last_Cnt0 z! U3 H" h$ M  y) S& g$ |3 {$ L, O
  2053. ORA Page_Cur_Cnt
      O" D8 x+ P" B. i* D$ h7 j8 H
  2054. BNE Show_Page_Text_Set
    / b8 a- s4 U2 _' q
  2055. LDA <Text_Disable_Flag
    3 p8 a  N" C( }  Q' f/ _) Y
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    , S# l$ Y) [# ?  j* d2 _# V$ ^
  2057. STA <Text_Disable_Flag$ g9 ?- e- b; @. q
  2058. RTS9 D) M5 E, ?! S
  2059. . Z, O( u' O  n2 B4 b8 @( B
  2060. ;==================================================2 _6 H: t: }, {$ q
  2061. Last_Item;上一项0 k% }! T, r. {  W/ _8 ~4 \8 ?
  2062. JSR Clear_Last_Track_Name
    3 t- d3 z% Y+ L* u
  2063. JSR Disable_Text_Draw
    5 G  ~. ^9 z1 b) d) r

  2064. - F+ s  H) n' n+ E$ g  j3 Q9 G
  2065. LDA <Music_Item_Cur! l) ^* u- N' {, P* b4 |3 g
  2066. STA <Music_Item_Last
    . m+ G7 \7 y: C3 L( |0 S/ X( P8 W

  2067. $ w+ R' [. h: I# z% Z9 y
  2068. JSR Get_Last_Page_Start_Index
    / H- K  M" `4 t# V4 [6 {
  2069. ( @3 \# X  n  B( t# e5 ^5 W& F
  2070. LDA #$00. I2 O7 t! s/ E- v6 r: q
  2071. STA Data_Buf
    ) `0 ?1 W7 O3 m' S
  2072. / P# I4 w  L$ W! R3 Z
  2073. LDA <Page_Last  H$ ]5 l; I! g7 M: F+ c' g1 @
  2074. CMP <Music_Item_Cur
    + m& ?$ w) z& ^
  2075. BNE Last_Item_Begin
      X/ h  O  U& d/ o+ g+ E
  2076. - \0 s2 ]; ^* P. k  o7 _
  2077. LDA #$011 z/ Z% H, r1 r1 Q
  2078. STA Data_Buf
    * `7 E* K9 ^- D" s; \( v3 h
  2079. Last_Item_Begin9 |/ c4 P. e; O7 a& D
  2080. LDA <Music_Item_Cur
      R+ u$ f/ k% w2 m7 {4 e, z5 d0 o
  2081. BNE Last_Item_Set
      y3 e. Y3 d- ]; y4 ?
  2082. LDA #ITEM_MAX_INDEX + 1
    5 u: t  w& g0 V6 j# m$ h0 K$ w9 S# b
  2083. STA <Music_Item_Cur* y( r& z, [1 U- ~: J6 Q/ s; w8 Z
  2084. . \$ O& j, `0 ]0 d6 b, q4 n7 D5 e* E
  2085. Last_Item_Set
    ! F9 `; \8 ]; h# s+ I: z1 [
  2086. DEC <Music_Item_Cur4 A/ ]& A) x6 D! J' @: S  V
  2087. LDA <Music_Item_Cur
    9 W# C- n# e& j9 E) d% d6 k
  2088. JSR Reset_Current_Music
    0 V8 ?1 |9 {7 ]$ Z0 J
  2089. $ S" W1 T: D6 L" U% m: I
  2090. Last_Item_Play/ L) k. A  O9 ]2 G
  2091. LDA Data_Buf2 F$ E- [& a% q1 D8 @; B5 l
  2092. BEQ Last_Item_End+ y8 f5 ]! B# ~, g9 P
  2093. JSR Show_Page_Text" ^- i8 N2 `8 x$ Z4 @0 {
  2094. Last_Item_End
    , Y5 E8 [' P1 B& V/ e
  2095. RTS" w6 E+ I, I. s3 K+ m( K

  2096. / K/ S( t: V+ a! C: c
  2097. ;==================================================
    2 v  v! X/ C9 q/ c  ^
  2098. Next_Item;下一项" Y% B0 |; X7 @6 `0 _: H  {
  2099. JSR Clear_Last_Track_Name
    7 e0 h4 s; s) A( U
  2100. JSR Disable_Text_Draw/ x! }& n9 f$ W( O$ ^

  2101. ! G; W( O# r: @+ o2 V+ P
  2102. LDA <Music_Item_Cur
    ; h; F) W6 b+ j( p% f! E+ I% X
  2103. STA <Music_Item_Last4 h1 A& v( R+ v' f3 {. H4 [9 G9 u
  2104. , U/ r5 O( Q; ]
  2105. JSR Get_Last_Page_Start_Index+ w6 J9 r: S/ m3 }+ x. K# z

  2106. 3 r5 d" R! K/ J. s( N+ w
  2107. LDA #$00
    7 z: k9 L# Z+ J$ R) F7 \
  2108. STA Data_Buf
    " Y- Q5 P/ Z: r2 |/ T* f' i

  2109. 7 ~1 M8 Y2 {9 u6 O/ T9 |" H5 F
  2110. LDA <Page_Last3 S; r2 t8 @; u# l3 @- D% z
  2111. CLC
    ) }0 S/ U& S( ~3 ?/ t6 p# }
  2112. ADC <Page_Last_Cnt2 L( M- ^, w7 v/ M* f8 s& p5 u
  2113. SEC* Q( q4 ^9 M3 U1 I' Q
  2114. SBC #$01
    ! Q4 I- T, b) u8 A4 s! x# @
  2115. CMP <Music_Item_Cur
    5 o( V4 @3 W2 y
  2116. BNE Next_Item_Begin- d: f0 _% N2 |/ Z8 Z' ^" k* S
  2117. . F2 q5 V8 O# w( U
  2118. LDA #$01
    ( H2 F7 W3 |4 V! L# \# E3 ^; m/ K
  2119. STA Data_Buf; A9 A8 m  R' L" ?% S: t% {5 l
  2120. Next_Item_Begin
    2 M# N) [1 d6 G$ b
  2121. LDA <Music_Item_Cur
    ) \3 i0 O9 I- _" o
  2122. CMP #ITEM_MAX_INDEX
    $ `# R' {. z6 _' x. p, H- G
  2123. BCC Next_Item_Set! s* t, y) Y3 T' a7 k# ~3 |
  2124. LDA #$FF3 [: d, \  m4 W' C9 o- Y$ s5 C
  2125. STA <Music_Item_Cur1 Y4 w$ m1 G8 L; P- C
  2126. Next_Item_Set
    2 x7 T! [) U  p+ w. u3 |% Q
  2127. INC <Music_Item_Cur% I2 ^& L3 S* w
  2128. LDA <Music_Item_Cur
    ; m* Q& e3 R4 j; X3 l6 r
  2129. LDA <Music_Item_Cur6 |# D' u9 G# C$ e3 p" K) a
  2130. JSR Reset_Current_Music  a) W2 H) ~! n% o5 Y
  2131. Next_Item_Play/ J& x! u$ `5 z- n- e) }" Z
  2132. LDA Data_Buf1 S- ]+ [% k7 z8 W% T
  2133. BEQ Next_Item_End
    - {0 |! f9 R" ?' v$ t4 D& s* r
  2134. JSR Show_Page_Text7 s8 C; }3 z' H. w
  2135. Next_Item_End! y8 ?5 P4 J# t: \
  2136. RTS/ H6 {* i6 o: P

  2137. . p7 U) `) b0 H5 G, N0 D
  2138. ;==================================================
      t1 K# Y, }$ A! q
  2139. Last_Page;上一页1 Q+ E8 s7 l8 F( f- T) r* l
  2140. RTS
    $ Y* x! Y7 z& K( l

  2141. , v2 c5 X! Y7 P0 S! P% t) R
  2142. ;==================================================: S$ x( ]) c) A6 M
  2143. Next_Page;下一页7 ?$ C# v$ i- B1 I( k/ g8 H
  2144. LDA #PAGE_MAX_INDEX
    : m0 ?; m! K/ c/ P3 b( E7 o+ x
  2145. CMP #$01: p* a4 \( z5 d& I/ n4 K( J
  2146. BEQ Next_Page_End
    4 z3 j7 a/ B9 k6 m, ~% O! x/ Q0 ~" \

  2147. 2 g7 ~$ B' I  e2 R) O2 ], |
  2148. LDA <Music_Item_Cur
    7 b# |4 I# Y6 F/ F: _0 ~5 M. D* L
  2149. STA <Music_Item_Last9 U" ~! q& R' K6 ?+ i+ N4 S$ h
  2150. 7 @; i4 m8 ?! E0 F4 O
  2151. JSR Get_Last_Page_Start_Index
    & }. F2 d- p8 N# x

  2152. 4 I6 e8 u# A0 ?* G2 j0 V, L4 ~
  2153. LDA <Page_Last_Index9 [) C  I6 ~7 S# J8 r
  2154. CMP #PAGE_MAX_INDEX- y* P  ?0 n2 b! [% K
  2155. BCS Next_Page_In_End_Page
    ; {0 n+ l; F# D) S0 {

  2156. 9 c3 @- P" c- g3 s/ {8 r
  2157. Next_Page_Not_End_Page;不是在最后一页
    ! p  }& B( G+ ~# P/ u
  2158. LDA <Music_Item_Cur# `" R7 w, B1 ~" |/ C0 w
  2159. CLC, `0 _! h9 o3 w/ p
  2160. ADC #PAGE_SIZE! ~2 N" z0 ?  L; K
  2161. CMP #ITEM_MAX_SIZE
    $ o+ _# s5 t, A0 q, q! u& @
  2162. BCC Next_Page_Not_End_Page_Less
    # h: s5 U9 R9 t  b
  2163. LDA <Music_Item_Cur+ s1 d/ J  b' `: B  a; c' }
  2164. SEC4 |* }  p' n( i( {5 Y
  2165. SBC <Page_Last_Index
    , u, ~% M1 g, L- g6 }. }
  2166. CLC$ D" v5 A4 [( R9 t  T
  2167. ADC #PAGE_MAX_INDEX, d" T% q$ t  A: C* S. O2 d
  2168. CMP #ITEM_MAX_SIZE2 F' K( `$ U! a' ?) `0 w, @: `
  2169. BCC Next_Page_Not_End_Page_Less
    8 A& ?" b1 O. F
  2170. LDA #ITEM_MAX_INDEX
    , z2 T9 m5 {. X: x6 c8 w, z
  2171. Next_Page_Not_End_Page_Less0 W1 l' L+ D, |6 H" t
  2172. STA <Music_Item_Cur# p9 A: U: c, q  J1 J
  2173. JMP Next_Page_Reset
    1 ]( E6 B$ q1 J) y7 s' n: P
  2174. $ k! s7 O" W# g! h* l% D. H: u
  2175. Next_Page_In_End_Page;在最后一页
    8 o8 C+ p2 j, k) f% V0 f! F! ]
  2176. LDA <Music_Item_Cur  `4 a5 O5 |9 I$ H# f& P0 i
  2177. SEC  \; Y- c, O! c6 ~- X  P+ e
  2178. SBC <Page_Last_Index
    - l6 z! r5 Q" j& _5 o
  2179. STA <Music_Item_Cur
    - e3 J2 A5 i: n# J" g

  2180. , H: e$ _) `4 K
  2181. Next_Page_Reset
    6 Z0 t, w5 _8 l/ b  B- p
  2182. LDA <Music_Item_Cur
    . j$ O2 E) R* Q" Y+ t+ c
  2183. JSR Reset_Current_Music
    2 D) m" K, }" ^5 r8 ?
  2184. JSR Show_Page_Text( K9 Z% Z& J8 q, ^( R
  2185. Next_Page_End9 ?) ?9 b& b# ^, u/ v& T1 h
  2186. RTS  l4 Y( u; M2 ~; r$ \& @& C$ c# |

  2187. & h3 L; u, e% w4 m3 M
  2188. ;==================================================/ }2 e: U. g% L: x, w0 }- Q: a
  2189. Disable_Text_Draw;禁用音乐条刷新
    6 ^# V; N" @! R/ \
  2190. LDA <Text_Disable_Flag: a2 V1 G8 l0 G% }0 q+ H
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME5 t! T& `! }' A! K4 ~
  2192. STA <Text_Disable_Flag
    # N- z5 l* |) \1 a
  2193. RTS! l4 G! [) i9 }5 I# w& L

  2194. # L; _4 t$ o$ y0 l
  2195. ;==================================================
    / R' l& e+ J$ B( |6 a
  2196. Clear_Last_Track_Name;清除上次曲目名- K, b! l  a7 i. Q/ U' V
  2197. LDX <Music_Item_Cur
    ! P8 e* z% E- g% ?
  2198. LDA <Music_Cur,X  Y  F, M- r% s
  2199. .IF Track_Name_Pos1 R5 e! @( E& d# F
  2200. JSR Clear_Track_Info
    & M6 W( O9 l& U8 X
  2201. .ENDIF
    6 c; M4 C$ o# E' [
  2202. RTS
    3 Y2 q, m) @  |6 w! j
  2203. * k+ H+ ]+ R5 I9 z2 {
  2204. ;==================================================
    ' v9 ?6 ?( `, c4 z
  2205. Reset_Current_Music;重设当前曲目0 q& C+ t1 i6 O3 T2 _* S1 ]

  2206. 2 y# X7 [! y9 S+ p! d* |- g
  2207. ;写入当前总曲目/ _0 I) N! C" z1 N5 J  p, O
  2208. JSR Set_Sound_Total) o5 a( w; U5 ~4 C4 U9 @
  2209. LDX <Music_Item_Cur; c) c7 u- Z. q0 u
  2210. 7 @! Z8 i* ], x& D/ A& V
  2211. LDA #$00& _! @' M% ]- E) K
  2212. STA <Music_Last
    ( }. t  ^7 d) a
  2213. 7 F! r8 z6 i' _4 Z% \9 K6 ~
  2214. JSR Sound_Reset_Proc  _" h' Z  H2 ^; Z
  2215. JSR Music_Show
    / A# j( s3 I2 k4 C& G/ {/ u
  2216. RTS
    ; P% h# ?+ ?0 Y, `0 X

  2217. 9 e' Z5 j- Y. m# n+ j
  2218. ;==================================================
    # Q$ u# y$ j6 t1 A  e
  2219. Music_Song_Stop;音乐停止; `# y7 ]: u& H' ^
  2220. LDA #$01
    ' j& n% O& l; n
  2221. STA <Music_Stop_State' f4 j7 q0 d. }; z
  2222. JSR Music_Bar_ReSet
    : S: f+ V* W( m! }
  2223. JSR Time_ReSet5 W" D3 {! p' O. W
  2224. JSR Sound_Data_Clear
    . @; i" B9 E. A7 |
  2225. JSR Music_State_Show, r' H( Y* x8 t9 M7 a0 B
  2226. RTS
    % Y, j0 R- z& c) |
  2227. / }* V7 e' w: {1 V4 o
  2228. ;==================================================
    & I1 ]  A7 u# j- B  F/ u
  2229. Music_Song_Play;音乐播放% D8 Y% C  M4 @8 r2 `( p
  2230. LDA #$00" v" Z8 W5 H; M
  2231. STA <Music_Stop_State
    8 i  G. @) s, E" d# r
  2232. LDX <Music_Item_Cur
    2 u1 P( k1 t0 S' g9 L
  2233. LDA <Music_Cur,X7 u7 d* }3 i7 P! o3 c* c& H
  2234. JSR Sound_Init_Proc
    : j' T/ F7 ~5 H: x( K5 i2 x
  2235. RTS
    ! }, |1 Y# m& J

  2236. 1 D0 s# U1 ]0 w
  2237. ;==================================================
    ; X% R3 R. h" P" |+ O. M9 X; I
  2238. Music_Song_Last_10;上10曲
    ' A" g* u1 s, _% a4 f
  2239. JSR Clear_Last_Track_Name
    5 c7 v, J0 l6 u9 P. P: `( F) C/ S
  2240. JSR Disable_Text_Draw- C" s( U. L& T! l1 v7 i; S" j& O: d
  2241. LDX <Music_Item_Cur
    - E% W$ f- z$ Y2 x/ Y% h
  2242. JSR Set_Sound_Total1 P- P6 @* t; N( V
  2243. LDA <Music_Cur,X2 R1 E1 _& Y; S! j- C
  2244. SEC
    , Q6 ]0 G& Q' Y: w9 r9 a) L7 Q; o+ C
  2245. SBC #10. z8 f, O3 R$ H: e$ P4 t
  2246. BCS Music_Song_Last_10_Set% q5 E+ V# x% q9 Q
  2247. LDA #$00# m/ J0 D2 J, I0 z: S) `, E
  2248. Music_Song_Last_10_Set) {' l/ m. Q: e- T
  2249. STA <Music_Cur,X
    2 ^8 o8 L' f' S% E- O
  2250. JSR Sound_Reset_Proc: V2 H+ z. q/ ^
  2251. JSR Music_Show% z* H1 L. P' B+ p2 Z
  2252. Music_Song_Last_10_End
    , Z4 W# ]6 n5 @4 Q0 p: t2 M
  2253. RTS2 R$ p6 c; D* p+ S7 z3 p

  2254.   e4 r9 R* m8 X3 K+ b( R6 u
  2255. ;==================================================
    " n% B' W3 a5 v3 j4 G
  2256. Music_Song_Next_10;下10曲
    7 D  r5 N2 S3 z* t) E: k4 e
  2257. JSR Clear_Last_Track_Name( V0 s. e2 u+ u2 B
  2258. JSR Disable_Text_Draw
    5 |8 Y" ^# F: s, o! j
  2259. LDX <Music_Item_Cur
    + Z, J8 K+ c( h: s( V$ G
  2260. JSR Set_Sound_Total* u2 N; a( j' M& w$ K, v
  2261. LDA <Music_Cur,X% b' B# N! g0 N% A9 m% e  R
  2262. CLC7 m# U, p7 _# U, L
  2263. ADC #10) o: T* E8 P: d
  2264. CMP Music_Total6 k! M6 W* W3 F# |
  2265. BCC Music_Song_Next_10_Set
    : m7 {0 p3 P$ P, g" a
  2266. LDA Music_Total
    : D. Y' n1 b7 y
  2267. Music_Song_Next_10_Set% K) h8 S) G% Q, n% V6 M) I
  2268. STA <Music_Cur,X% W% G+ D0 _. E8 p' b) V
  2269. JSR Sound_Reset_Proc) D* @& {  q( m( R" Q
  2270. JSR Music_Show
    - h3 j6 r+ w6 P+ P  s0 w6 I
  2271. Music_Song_Next_10_End
    $ k$ I0 m9 j* W" o# g: }+ c: G
  2272. RTS& _2 i4 ]; K' V9 V6 w% d6 M

  2273. : G7 p. P" y" _" L- b% K4 g$ M1 w7 S
  2274. ;==================================================0 l/ \6 o( N  ^% @
  2275. Music_Song_Last;上一曲) R- p5 {4 P1 ~. Y. a+ F! V
  2276. JSR Clear_Last_Track_Name
    $ l; O/ q0 x, p& b  D
  2277. JSR Disable_Text_Draw
      H1 {% X! w8 C: O3 A1 P) T
  2278. LDX <Music_Item_Cur# i  H( d+ L% \$ P5 |+ b
  2279. JSR Set_Sound_Total4 i* J1 C; r0 g* w
  2280. LDA <Music_Cur,X7 o7 F  ~4 V1 j; ]; K
  2281. BEQ Music_Song_Last_Set8 R, }- r) C# T% G3 |
  2282. DEC <Music_Cur,X
    ' s/ A6 X! z! O" x9 ~
  2283. Music_Song_Last_Set$ |: W- x& R  x
  2284. JSR Sound_Reset_Proc' B3 h# n& Q; V- _# K
  2285. JSR Music_Show: m- E+ p" L. B2 T
  2286. Music_Song_Last_End# K7 D( b2 I, o8 @( Z2 K( c
  2287. RTS
    $ W# \4 n  D9 r' `0 q" b* h) X* s# U8 x) V
  2288. ( d( Q. q; n. ?( F6 C# @; w  b1 K! q
  2289. ;==================================================
    + |: T; H; Z! n, A% m. s
  2290. Music_Song_Next;下一曲& ~3 V5 `# r" [: k, i- _( ^' C
  2291. JSR Clear_Last_Track_Name
    % d- F; b6 S8 I* [
  2292. JSR Disable_Text_Draw% [( h* V% _3 U4 L8 F
  2293. LDX <Music_Item_Cur
    6 n& H. O8 J, L% o, l' t
  2294. JSR Set_Sound_Total
    , G. n' G; c& ]& N. S
  2295. LDA <Music_Cur,X
    ' R9 E+ X! h' u
  2296. CMP Music_Total
    & M/ C# i, {$ }& t1 O$ `
  2297. BCS Music_Song_Next_Set/ Y% J; @, j* u. ~3 I
  2298. INC <Music_Cur,X
    4 M$ P7 S+ v2 i: r
  2299. Music_Song_Next_Set
    % h; ~. K; z- O6 e
  2300. JSR Sound_Reset_Proc
    % r4 _. B$ q' t* ]3 o
  2301. JSR Music_Show
    % K% }4 Z, l# T1 i
  2302. Music_Song_Next_End
    : x! T& Q. R2 o+ Q
  2303. RTS1 R5 E; B9 u8 ]: t2 u
  2304. ( p' ^: T: L8 Z7 K
  2305. ;==================================================' w) S! ?, n8 h2 a( j3 y# _. k3 m: z
  2306. Change_Select_Item;改变当前选择项
    ; h& N, u! g% T% s
  2307. ;--------------------------------------------------8 b4 K. x4 L3 W; V' V0 [  d3 }
  2308. Change_Select_Stop_Play_Item;停止/播放% {: m+ x. }2 d( C
  2309. LDA <Key_Once
    5 B  ]. _- L" w0 }! {* v
  2310. CMP #$10% ^  E: W" B9 W6 a% u* |
  2311. BNE Change_Select_Last_Item
    . Q" U. x9 L. u8 r  B
  2312. LDA <Music_Stop_State( x6 }. _5 S: o  b$ f
  2313. BNE Change_Select_Play
    ! z2 h2 E$ O; j
  2314. JSR Music_Song_Stop
    6 P0 L9 O8 T# Z# e6 A. |, \, {! ]
  2315. LDA <Music_Stop_State
    7 P. Z0 b3 X8 J# }' G
  2316. RTS
    & _" y- t/ ]! ^4 o# _7 H

  2317. ! y6 m. P  y! ^( r5 d, ?& C. T
  2318. Change_Select_Play
    $ |, D9 i6 K! t, _' H, e9 S0 x
  2319. JSR Music_Song_Play+ M% D) S( t6 w: e, k
  2320. RTS
    ' d# ~9 O5 L- X4 D8 p. C
  2321. / B. u9 W2 G+ z3 B7 V  v/ p7 ]3 r
  2322. ;--------------------------------------------------
    4 z- c& F( a/ e. H$ |* i
  2323. Change_Select_Last_Item;上一个专辑/ R( z6 u) j0 d9 w$ C
  2324. LDA <Text_Disable_Flag3 h. s' s- y3 o3 v8 l; C  C- e
  2325. AND #TEXT_DISABLE_ITEM* m  P& s8 q, V* N. s
  2326. BNE Change_Select_Item_End2 s  a$ H; _' T/ r( s5 T
  2327. LDA <Key_Once
    . s# H  v/ a+ n9 t& I! X
  2328. CMP #$08" h6 \; O, T( L$ i- S* g
  2329. BNE Change_Select_Next_Item3 a  c" x# S" Z+ K  H
  2330. JSR Last_Item; \$ x4 ]* M8 D# {* \0 R3 p5 D
  2331. ;--------------------------------------------------# }/ S1 f7 w2 A8 C. Q' P8 j( f
  2332. Change_Select_Next_Item;下一个专辑* x3 D  T' t- G+ O- c. n: R' \6 ~' [
  2333. LDA <Key_Once
    ! l' k% P6 m6 z
  2334. CMP #$04- ?: t3 e. M  X+ u7 J
  2335. BNE Change_Select_Last_10
    3 \8 ?% u. d4 R. ]' w
  2336. JSR Next_Item
    # \+ x1 v# J+ ]2 I8 t
  2337. LDA <Music_Item_Cur* }& H4 P8 m8 S" ~1 l6 U+ C$ t
  2338. JSR Get_Page_Start_Index
    ' @8 b7 t) f+ {  H; l9 M! y0 |
  2339. ;--------------------------------------------------: c* U/ l( k+ _; A( O& d
  2340. Change_Select_Last_10;前10曲
    9 v2 b. s9 h7 d; e  S+ L1 U
  2341. LDA <Key_Once* B- Q" J  ]( \" u# a
  2342. CMP #$40
    1 s2 i* O# ^6 U- d0 \5 q
  2343. BNE Change_Select_Next_10
    " S  _  e: r5 |; E2 V$ Q5 _4 X
  2344. JSR Music_Song_Last_101 z. r9 E" d3 L$ h
  2345. ;--------------------------------------------------
    ) b% X$ P# L9 `4 p+ N
  2346. Change_Select_Next_10;后10曲3 P% V: t/ d- s: V2 W+ h
  2347. LDA <Key_Once
    3 d- O0 |: \' B8 i
  2348. CMP #$80' `" O: j3 U2 @7 N1 E: J$ C1 ?
  2349. BNE Change_Select_Last
    . E/ \2 P/ g8 T4 ^
  2350. JSR Music_Song_Next_10& y% J* h4 G. _/ j4 h
  2351. ;--------------------------------------------------6 N& l5 S8 K1 [8 p9 E
  2352. Change_Select_Last;上一曲
    $ B$ z) K% E5 U' O5 h/ u
  2353. LDA <Key_Once
    5 E) I, X% t' s8 Q
  2354. CMP #$02
    + v# ^1 c: T3 l( }' ]- s& D
  2355. BNE Change_Select_Next5 R4 N% ~' M  R; o* @6 U2 J* [0 \
  2356. JSR Music_Song_Last
    : P4 M' r0 |- z' J
  2357. ;--------------------------------------------------
    ' N/ @$ h7 {; A
  2358. Change_Select_Next;下一曲
    2 M% }6 {0 |0 o! s6 u1 ^
  2359. LDA <Key_Once
    . g, W' ?# Q3 ?! P' Z/ p5 v% S
  2360. CMP #$01
    4 t0 J! c! N+ L9 E
  2361. BNE Change_Page_Next
    8 }$ P: W1 D* l/ D+ J  Z; \
  2362. JSR Music_Song_Next( t/ e; u! A3 L" B) ^6 H3 e& l
  2363. ;--------------------------------------------------
    - \0 P. l/ W2 n+ H
  2364. Change_Page_Next;下一页
    ( X* Z+ Z( y# e$ E. U0 B0 y
  2365. LDA <Key_Once
    ( n! w6 O( b2 A4 P6 p2 H
  2366. CMP #$20
      s/ S7 V& B" I
  2367. BNE Change_Select_Item_End
      [, b' j+ B0 o# |5 J* K
  2368. JSR Next_Page
    3 U& d' A4 ^2 I1 R3 J6 L
  2369. ;--------------------------------------------------
    : Q6 j2 @1 I3 G3 H
  2370. Change_Select_Item_End
    3 ?! J3 X4 f2 A
  2371. RTS2 |' D, s! H$ o/ T& X) f' b
  2372. ! u9 r" i- g  b5 c+ h8 V
  2373. ;==================================================$ D4 _/ |. T1 L: E6 B
  2374. Show_Arrow;显示箭头光标1 M, f. K: W% g! X# I1 w; K
  2375. LDA <Music_Item_Cur
    9 M2 U, l. G7 Y+ @$ P' L: {
  2376. JSR Get_Page_Start_Index7 r. P2 F& D/ W
  2377. LDA #$00% l( N% `7 v" v! L& W
  2378. STA PPU_OAM_ADDR
    " r. B! `1 N+ |# P
  2379. LDA <Music_Item_Cur3 e! L; n) e1 Z9 T4 q& D
  2380. SEC( a$ k: {. E! w, G& [0 l1 C, e
  2381. SBC <Data_Buf
    2 ?( d6 m8 D2 T, r( Q! @6 `
  2382. ASL A
    7 [8 K8 E$ k9 q6 k( T
  2383. ASL A% i. H7 |3 X: L: Z4 T
  2384. ASL A
    , v! g, h4 F+ `8 \& I3 _  h
  2385. ASL A
    4 a) R, s# [& y% S
  2386. CLC2 e- D" r) `& ~- r8 m/ o
  2387. ADC #ARROW_Y_OFFSET
    & }* s7 G/ q) W, r9 A
  2388. STA OAM_TEMP_ADDR + $005 z0 l$ ?9 p/ A7 S* v4 _
  2389. ;STA PPU_OAM_DATA: M+ z* c& M4 c/ \1 u: E
  2390. LDA #$1F( X: j: Y0 P, t# c. @
  2391. STA OAM_TEMP_ADDR + $01) g: v' n4 h$ z; Z/ u. U) a
  2392. ;STA PPU_OAM_DATA8 w' }: l, b3 Z3 y
  2393. LDA #$00. v+ z# _3 V0 Q4 l
  2394. STA OAM_TEMP_ADDR + $02
    # W& i& f2 t9 a- ^5 ~$ w9 `
  2395. ;STA PPU_OAM_DATA
    % G2 @+ j. ^( {- B! Z
  2396. LDA #ARROW_X_OFFSET: n! b( F; n+ ~% |
  2397. STA OAM_TEMP_ADDR + $03
    7 P( f* h4 d1 Z6 r# l% a6 A* [) i
  2398. ;STA PPU_OAM_DATA
    ' ~9 r: M3 D" |$ V# I5 \1 V+ e
  2399. RTS
    / w* ]( ^& ]' m: B! p* p
  2400. 4 @$ D. o7 X6 C% y& W5 }6 k. u/ B
  2401. ;--------------------------------------------------
    0 Y) M% M' p% d2 R# Y0 g/ N3 v8 E
  2402. ;命名表数据
      |% A' C- ], N' Y) ~$ A* z  W
  2403. Palette_Attributes$ P+ N- q. P4 n
  2404. .IF SOUND_BAR_SHOW_ENABLE
      ]0 ~1 T+ M. j* c# A9 S" J
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$550 n+ ], [9 O# t' `" V$ ]$ E' u7 C
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55* a1 \. Q* n4 e) B  x7 C3 d. \
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$754 y3 c. \6 t1 Q; m
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA/ h/ M& s' Q) e0 g
  2409. .ELSE7 ]3 e& U/ V2 K& J* U" g( d
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    + G# d' Z/ s0 d$ J( }2 [7 D
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$558 g% b% H1 V: X7 t
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    / \# D1 x) x* P! M9 ?3 M
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    * E2 b; N. d7 \5 K0 @
  2414. .ENDIF
    + A5 q- [+ U8 ]% r; S6 O& j8 c6 S, N: C* A

  2415. / _2 B. m# Z. {, C( Y
  2416. ;--------------------------------------------------
    / k. W( }3 W2 F( w6 w7 \  ~
  2417. ;调色板数据" _1 n# H( h3 u1 A  |# Z  r1 w3 Z+ r8 f
  2418. Palette_Data
    $ W' l. [3 G. i' b  d
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F! C) l3 C: r. ]2 ^
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F5 r8 `: v% w8 b$ B1 g2 G! p4 m

  2421. 5 p% G: A" _# x' ], i
  2422. ;--------------------------------------------------
    : k- Z5 L) E' [/ R1 F% [+ p* J
  2423. Static_Text_Data
    & @- {4 ?4 T; ]! a. N) g8 w; Z# ^
  2424. .WORD Static_Text_Caption_Data* o( [' r% j9 w/ T2 }
  2425. .WORD Static_Text_Author_Data5 V6 N  I) S* M9 ~3 O! e
  2426. .WORD Static_Text_Date_Data4 b( P8 T6 w* ^: I. M
  2427. Static_Text_Data_End% w5 J1 ^0 _& G( x* O: c9 n
  2428. $ {% j2 v, g4 ^3 F7 A
  2429. ;--------------------------------------------------
    ) @" C- H' ?+ S* M$ Z
  2430. Static_Text_Pos
    & f7 S8 t7 S5 h7 z
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    . i* G- A  @) ]/ E8 W* @
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)9 l2 ~, O) `# _: x
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    ! `0 I2 R# b+ J6 N. Q/ y) H0 w
  2434. Static_Text_Pos_End6 T$ D5 n( I8 _8 F
  2435. 4 V7 Y+ K; c+ E( i) e: c
  2436. ;--------------------------------------------------2 w1 X5 r- j7 t2 g1 n# U* U9 m
  2437. Music_State_Stop! b/ L% b: E4 ^. y
  2438. .IF SOUND_BAR_SHOW_ENABLE
    9 y, _% U0 L' X( M% \$ v
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00  `& p: X% F3 H3 }$ n
  2440. ELSE( T- x0 `( [! S0 [4 r: X
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00+ D( w( x) e/ h; b* k6 D
  2442. .ENDIF
    ' C( K4 t' J( a% F6 Q6 o, F$ d
  2443. Music_State_Play
    + b. I2 W! J. h+ F( W4 f
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00. x( [* H, e- j; x! c

  2445. 6 ]2 u1 k4 E) ~/ {0 s+ G
  2446. ;--------------------------------------------------1 J6 N9 M1 B# e+ B
  2447. Sound_Bar_Text_Data;声音类型文本6 u3 e9 l9 \* q! f9 f
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    * B$ W! j2 _' o; `6 g
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    & F% C7 E8 q0 d3 }; c' t
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    ' b! t' l" n" l/ C/ X+ g; E  W
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"+ w6 e. u" W; k! H! I
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    6 H' q& H7 P9 V  X2 E# W
  2453. , a, Z& a0 \3 G" C" c
  2454. .IF Track_Name_Pos0 X$ H+ V0 q; F+ y7 Z/ B' c0 |" D8 E8 C
  2455. & m  e7 z/ s& X/ W. l& g; P
  2456. ;--------------------------------------------------
    & B% Z$ `/ @& m4 n/ C
  2457. Track_Name_Addr_00;曲目名地址索引
    ! F- @7 W& G' a* B
  2458. .WORD Trackr_00_01  q0 Y4 |5 J3 a0 l% f, w

  2459. & w' R. x' A& ]7 ^/ \3 Z
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    3 g7 |: r$ u8 _# \7 s. |
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2": A( d! W1 f; c4 ^  b

  2462. ( ?9 u* J# }; ~! H  B. P1 {
  2463. ;--------------------------------------------------
    # R: L/ P+ B) H3 f
  2464. Track_Name_Addr_01;曲目名地址索引
    " T% p4 ^! `7 R7 _/ [' k3 @
  2465. .WORD Trackr_01_012 `+ A$ h  r- O' s# [
  2466. ( |6 `- L- R4 M% P: H4 n
  2467. ;==================================================
    6 x& o  u! q2 d2 e/ S% [; z1 W: i
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"8 Z8 G2 P0 [( I. j( s3 z
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
      u( t( {0 P  R) l0 t# |

  2470. $ \4 N6 j4 S9 w! i( {
  2471. ;==================================================
    % s: p' B/ ^7 E0 t
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    3 u- V& ~9 ~) H4 b1 s: |! [7 ]* o  S
  2473. .WORD Track_Name_Addr_008 c' F' Y3 O. @" _. S
  2474. .WORD Track_Name_Addr_01
    ( Q. K' t4 b# V  g( h; f
  2475. .WORD Track_Name_Addr_01% [# C% p3 S7 R% b7 Q7 C) H9 i# |

  2476.   ~# L: @' S' n/ j1 W
  2477. .ENDIF
    ( M# }1 ~& ?  H7 M! ^

  2478. 2 m- u& _2 V/ z- W* h- l) U
  2479. ;--------------------------------------------------# o5 ?3 t$ n) [1 n3 O0 s0 O! o
  2480. Static_Text_Caption_Data;静态文本数据
    / U% i: i$ b* V, }; O" C8 t7 E& z. M3 y
  2481. .DB 16" ^$ q* @4 f" R0 r8 m
  2482. .DB "FC MUSIC 12 IN 1"2 y% `* @. {  ^6 Y
  2483. Static_Text_Author_Data
    % |, Q0 M- g& y8 O
  2484. .DB 25+ m2 G  e( [! o1 @# }4 m3 W
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    2 T  U9 o6 U  t, A- |% l2 d
  2486. Static_Text_Date_Data3 a* l8 p+ J4 O( L5 y0 m  Z) M
  2487. .DB 10
    2 R* w5 }9 m2 r
  2488. .DB "2023.07.23"" R4 U! d4 b. p8 v2 L5 p

  2489. , h0 ^- Q4 b7 t) D  K, k
  2490. ;==================================================. d0 J. d% l7 i/ q/ Z
  2491. Music_Collection_Name               ;专辑名间接索引
    ) Z- r( r% e9 E, W
  2492. .DW Music_Collection_Name_00  T0 S! P/ `6 N5 f/ ^6 L. z& x
  2493. .DW Music_Collection_Name_01/ b' Y) O5 @& e
  2494. .DW Music_Collection_Name_02
    % ]( _$ N1 G2 k9 m% v
  2495. .DW Music_Collection_Name_03
    , J0 B# h" e9 C- G
  2496. .DW Music_Collection_Name_04/ [, o8 s( u! U2 M  M1 l' j
  2497. .DW Music_Collection_Name_05
    6 |+ ?" L& g' s$ i, G; O
  2498. .DW Music_Collection_Name_060 \0 r$ F1 H9 Y. L( n! D
  2499. .DW Music_Collection_Name_07- _% |1 M! P1 a" ^7 v
  2500. .DW Music_Collection_Name_08
    9 A, o) j% D! Q: ?+ j0 w
  2501. .DW Music_Collection_Name_09
    : T* M# Q- ]- T3 |6 h- ]
  2502. .DW Music_Collection_Name_10
    " j1 i. G) P0 _3 e6 j
  2503. .DW Music_Collection_Name_11) {( ?9 Y- B  E. c0 f: ^
  2504. % w, f- i# W5 ]7 J" _, _
  2505. ;==================================================
    9 w) _* |0 @# j) i% o- R
  2506. Music_Collection_Name_00            ;专辑名文本数据
    ! i& f- r! w7 F% w0 q- ~
  2507. .DB 11,"1.RAF WORLD"
    * e) J4 }& [2 f+ ]1 S# D
  2508. Music_Collection_Name_016 G; L4 e& d+ B/ m* Z' ~0 x
  2509. .DB 15,"2.FINAL MISSION"8 {' s3 h: y% {# F, x+ e
  2510. Music_Collection_Name_024 X+ A8 I8 P# w+ z  A- C
  2511. .DB 06,"3.KAGE"+ y6 A! ?; q2 H
  2512. Music_Collection_Name_03! X7 ~7 g; f/ P$ S
  2513. .DB 16,"4.DOUBLE DRAGON"  J" g3 S$ M. _1 \
  2514. Music_Collection_Name_04
    " T/ _  V! F7 Q8 y" Y
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    4 j+ Q  D0 I, m3 h7 [) v% M; r
  2516. Music_Collection_Name_05
    % |. r! {& ~* X* G
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    % I3 }& h6 u# Q5 C4 c
  2518. Music_Collection_Name_06
    " C2 X2 u, s% f5 v  ]- U1 p
  2519. .DB 09,"7.ROCKMAN"7 T0 D. x- N# L- t6 \0 q- Z% }
  2520. Music_Collection_Name_07; n! `0 n& ?1 H( M
  2521. .DB 12,"8.ROCKMAN 2"
    6 o( C7 C! {! v! y) e
  2522. Music_Collection_Name_08% }( w7 y1 \6 h7 Y! c2 m! ^, U0 x
  2523. .DB 12,"9.ROCKMAN 3"  ]) G6 I9 _/ J& `9 c
  2524. Music_Collection_Name_09( x# Q( g' q! K2 I( {  t
  2525. .DB 12,"10.ROCKMAN 4"5 A  g# D2 t& a( F, o" Q% R$ E
  2526. Music_Collection_Name_105 ^9 Z! N" ^% H- L
  2527. .DB 12,"11.ROCKMAN 5"
    7 a$ s' C/ U" n( G! s
  2528. Music_Collection_Name_11
    ; C/ s. E1 ^# M! Z
  2529. .DB 12,"12.ROCKMAN 6"
    : y# x! \0 w* S' Q  ^3 W

  2530. % X; @8 P; M: O8 q4 N  f8 I; F
  2531. ;==================================================9 ~$ t9 L2 ]: c3 P5 f' E
  2532. Track_Name_Addr_Flag                ;显示曲目名标记3 I, W& m; e& y( Z' K9 M
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    1 s4 f; ^% A9 D7 A# b
  2534. 1 C8 {6 `& @; D+ S' n
  2535. ;==================================================
    8 P* s7 P; ?8 j1 u
  2536. Item_Pos_Data                         ;光标箭头位置# m  ~4 }9 T; _- Y4 s1 c
  2537. .WORD ITEM_SHOW_POS
      O+ ?  G7 X7 H* b4 n9 p
  2538. .WORD ITEM_SHOW_POS + $0040* V* _" ]9 x9 f. r- H9 H. [
  2539. .WORD ITEM_SHOW_POS + $00806 K! w. p, ]5 y: Q" j* }4 `8 Y: g
  2540. .WORD ITEM_SHOW_POS + $00C0
    $ _  w. K0 @; s( f8 G' O
  2541. .WORD ITEM_SHOW_POS + $0100/ c3 t6 y  T& ?. d% N5 ?3 \& l
  2542. .WORD ITEM_SHOW_POS + $0140
    2 ~0 y9 |- S1 s+ O# |2 O9 A

  2543. # n2 t. A0 d+ k+ d5 X/ m
  2544. ;==================================================
    1 M) |' h% p# C
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    % p, A% m) i) z3 g
  2546. .DW $BFC82 ^, l; q; F2 H5 ^( t
  2547. .DW $D7F0
    ; e  Q6 `" k5 Z  J
  2548. .DW $9FC0
    * B5 J3 k* m. A+ X8 S9 M
  2549. .DW $BF70" }6 S$ Q+ F0 x
  2550. .DW $8003
    % l' m2 E! X, W- g
  2551. .DW $BF30$ O. Y; K% f0 K5 k2 B+ D; C  G
  2552. .DW $90032 i  |& o, Q/ s) [' C
  2553. .DW $8003
    1 T) G0 e7 B) G! b0 g; |
  2554. .DW $8003# B5 ~, u" I; }+ }; O1 \! {
  2555. .DW $8003
    ; U$ C( p& a- e; {% B, a4 q3 x
  2556. .DW $8003
    & m" I0 D4 a% y  g2 b
  2557. .DW $8003. E5 y9 K+ y. s, F+ m

  2558. & W3 |5 T& @- r8 `4 w+ g
  2559. ;==================================================* |% c7 V  J0 Y- v9 _9 Y( j) V$ {" K
  2560. Sound_Play_Port                   ;音乐播放入口地址+ \  ]) b) n( J! U- j# y7 O# A  w6 s
  2561. .DW $80000 G7 R- a$ X8 j
  2562. .DW $8001
    $ r" }! W& H! j& u( \# s. {- h/ N
  2563. .DW $A000
    3 v, p7 Q1 }6 R; O# f7 Q. I
  2564. .DW $8003* ^% u7 v& X; r0 W, U0 i% T
  2565. .DW $8000- l$ v- C: L& P/ v
  2566. .DW $80031 G7 D9 J  m" O3 z% H
  2567. .DW $90009 f4 {3 M0 k+ a8 {6 @' X4 A. I
  2568. .DW $8000
    : u" f7 z2 H; ?9 D4 L) t# F
  2569. .DW $8000. @7 j  r# {. a8 Y* N8 @/ z, P; c/ B
  2570. .DW $8000* Q/ R& D$ f& S" g; _
  2571. .DW $8000
    1 C/ p# c* Y# y! Q9 K- ?
  2572. .DW $8000
    ; e7 t0 L' f7 X4 y" x) Y  C$ |

  2573. : a$ ^. e0 j) \; n/ z9 j9 E
  2574. ;==================================================
    2 E" t$ D5 @) L) E# R) v: Z7 l4 M
  2575. Sound_Reset_Port                  ;音乐重置入口地址: ~- }( F. j. ~+ Y5 B4 c1 _# Q
  2576. .DW $0000* A8 j) A, n# U
  2577. .DW $0000% C5 }; f( Y1 q5 l
  2578. .DW $0000
    , `: b$ f; y* ~9 X6 r
  2579. .DW $0000$ V: y2 E2 @6 f$ P% i8 S
  2580. .DW $0000
    : R. ^$ }; j- R1 N6 R, f1 \/ ?
  2581. .DW $0000
    & L8 E: d8 m9 I
  2582. .DW $00002 v) L: w$ P' q
  2583. .DW $0000' v# t( W; k9 k
  2584. .DW $00002 J- e" z3 ?: E5 K, c3 ~0 P: B$ \- t
  2585. .DW $0000
    9 v9 d2 O8 B# s7 a
  2586. .DW $0000. Z( ^6 ~+ _: h
  2587. .DW $0000  Q: Z$ p3 t; h8 c! v0 I

  2588. / m, i/ A% y1 h
  2589. ;==================================================
    / G2 [  o. a/ L5 {( n
  2590. Sound_Total_Port                          ;曲目总数) `+ S) O5 \. i) i- D
  2591. .DB 38
    $ r( u  V1 G  B9 _% @
  2592. .DB 337 F/ h4 s2 L/ H1 T3 ^' P" _
  2593. .DB 490 }  k, s8 q8 i6 U; I2 c! C& f8 I
  2594. .DB 41
    ( T, Z8 i# h7 C2 c& ~
  2595. .DB 83
    9 q  H5 `% a7 d8 K/ {
  2596. .DB 70: T" j, A2 B( k8 V. ^
  2597. .DB 501 w( W. m2 v) ~1 M8 L& K
  2598. .DB 67( U' o# E6 u. k8 C. D
  2599. .DB 57
    3 Q' V: ~8 I5 }) o/ Q! O
  2600. .DB 71
    ( l7 x. }9 ^( q: |, d: k
  2601. .DB 76
    ( X2 _, |5 W0 V' D1 h. F5 u& k6 B
  2602. .DB 1023 w0 i2 j4 Y1 p3 ?# W$ n5 Y
  2603.   g2 d( _' _' K% l, W
  2604. ;==================================================7 u1 B7 z, k2 a6 S; R
  2605. Sound_Start_Port                      ;起始播放曲目7 B( d' Z& D# t, C# e# l, D
  2606. .DB 00& u$ h1 b0 }. ^$ g* t
  2607. .DB 00; D+ p( y: \( N1 {- h: W8 n+ o
  2608. .DB 00
    1 h# b9 i# D* G  @! [  A
  2609. .DB 00$ t% ^, ^0 A; N# V" x
  2610. .DB 00
    2 j# q- b; d8 L9 g! E
  2611. .DB 007 f) x; ~! o& w0 m' I
  2612. .DB 00
    ' Y. |0 O# B' q# v# p
  2613. .DB 00
    , [1 G1 }* J( Z0 b5 q* I
  2614. .DB 00! Q( e$ R* r! k5 n
  2615. .DB 004 y2 F" s4 x, M3 }. V% L& x- {
  2616. .DB 00; o0 }2 J7 O% N  }) e6 L
  2617. .DB 00) @! _4 G9 w8 u$ n( @
  2618. # B: j9 i2 x3 Q
  2619. ;==================================================
    - m' Z) f# v* L9 I' N) g* L
  2620. Sound_Bank_8000                      ;专辑bank_8000
    & j' ]6 F, Y. S3 Q
  2621. .DB $100 T3 A) a6 _) f( ?+ X8 F7 ?: i
  2622. .DB $12; Z* G- r, P8 T: P* Y# i
  2623. .DB $14; c# h+ \/ r6 S  [, O
  2624. .DB $16
    + V8 ~2 h- g+ ~+ Y5 g9 F
  2625. .DB $18  z! k/ o, w% m! I/ X2 z* W. W1 k
  2626. .DB $1A
    9 q1 L7 \% K8 C1 I; J7 w% ^+ h
  2627. 7 L/ G- i5 X5 V1 e
  2628. .DB $00
    * ?% l/ I6 l  `/ t2 f0 u
  2629. .DB $02
    ! s5 n% f& h7 `4 X- H
  2630. .DB $0D" y& Q# L9 ?1 k' r$ Q5 N* l& b
  2631. .DB $04  M8 a7 \( D2 M; s! ?4 [' V; A4 p
  2632. .DB $07
    - z3 h; G0 _: u! m
  2633. .DB $0A
    + m" \4 h  Z+ b; e" r6 I1 y
  2634. 8 m+ {9 i/ D. Y4 m7 o1 X
  2635. - a. p2 c% w# `: @: D5 `
  2636. ;==================================================4 Z, E( M; z- o2 ]
  2637. Sound_Bank_A000                      ;专辑bank_A000" f1 x% D3 J1 F0 n" b5 U. D- m
  2638. .DB $11/ m5 [  n6 q- |- O
  2639. .DB $13& W: \  |7 j2 }+ b/ K
  2640. .DB $156 N$ C9 h( `3 i+ h& @
  2641. .DB $175 Y4 t) b5 F" k4 z; U; ~, W3 m
  2642. .DB $19
    5 ?9 y. ~8 G" E0 Z! U
  2643. .DB $1B
    7 U1 Y  _7 e% u
  2644. 3 O% r1 Z5 v* d7 i- c5 q( r- w1 X
  2645. .DB $01
    - {5 C7 I% o2 J& G* W
  2646. .DB $03( L% b2 p: x1 {; s5 [" x& s& h
  2647. .DB $0E
    7 i- a2 i3 j, T7 S
  2648. .DB $05
    6 M, }* W  l" l. g
  2649. .DB $089 m! G8 t* y6 V+ D) Q
  2650. .DB $0B
    . W7 M* ], O' V: y( d: a
  2651. 1 m2 z9 T3 t5 t% L- p

  2652. ! B, h5 b7 q% K& \' `1 R; p
  2653. ;==================================================' }& d* A. {! F8 z. Q3 ?3 l$ L
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    # y1 p2 c* q9 W. n# b3 a
  2655. .ORG RESET_ADDR
    * Q7 S" n4 P6 r8 y
  2656. - E* S7 m( w4 W  l  Z( c
  2657. ;==================================================
    * I, w8 R; d; w! d2 Z
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    * j  h5 e. Z& w) E5 g3 l" G
  2659. PHA- j6 P# I' @3 a: n( h7 J
  2660. LDA #$068 f: v* M: p6 D9 n$ v2 r/ t
  2661. STA MMC3_BANK_CTRL
      F2 `' M  i. U! W
  2662. PLA
    8 V" u8 \+ U3 W! Y
  2663. STA MMC3_BANK_DATA
    # J9 Z) Q5 c  A" V; f: V- s
  2664. RTS+ i' ~. u% m5 Z

  2665. + Z9 q8 P$ F4 D# J. D1 o( _! }1 b
  2666. ;==================================================+ F) L. _, V) H7 }( D+ ?
  2667. Switch_Bank_A000;切换bank到A000-BFFF4 M3 E* R/ ?' O3 L5 N6 B# w; w
  2668. PHA
    7 f5 o+ s! R; r) k( {. j
  2669. LDA #$077 w, I. v9 d! b3 x! w5 ~
  2670. STA MMC3_BANK_CTRL
    " U8 ^" ?  d; c! m- ]* K
  2671. PLA- X6 _7 g8 I1 ^9 L. z3 e# p1 `
  2672. STA MMC3_BANK_DATA( W3 a5 |% A# ?6 i3 P5 I
  2673. RTS
    : l( z* f4 e; Y( b0 O

  2674. . ^" m- G# q, o! J6 s2 N& u4 w# [
  2675. ;==================================================8 G$ L/ V6 i/ M* a2 R
  2676. Switch_Main_Bank;切到主程序bank
    9 S( A" I, r* z7 H0 ]( v: o6 [( U. Y
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    . n9 s4 U+ w# l% a* l
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank1 Z6 v- J6 p  J
  2679. RTS
    7 j; z) ~2 ]4 i

  2680. # E4 o# E9 @* r. b, q
  2681. ;==================================================
    - _+ M2 H+ Q6 z8 d) K4 C
  2682. Sound_Reset;音乐重设(如果有的话); i) v3 [3 s0 D5 U+ ?- \* |
  2683. JSR Switch_Music_Bank  ;切换到音乐bank& e* m6 R6 i; f1 o3 ?* M2 S
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    & S( {# B! s0 P$ z  H* z( m  d1 ]; `) h
  2685. JSR Switch_Main_Bank   ;切回主程序
    " E2 W9 Z# N* }% P
  2686. RTS
    + i; S& t+ X4 r2 H; Z! X

  2687. + W. H- N+ F% A9 F/ m' S4 r
  2688. ;==================================================
    5 R$ P+ A& |! m9 f4 |
  2689. Switch_Music_Bank;切换音乐bank$ M4 [9 y  J2 s4 ?7 Q  l" c
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    " l4 [) V; R% U, U+ D- ?
  2691. LDA <Music_Bank_80000 f  f  ]/ X% Y  V0 \
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank  e4 N2 r2 F; w
  2693. LDA <Music_Bank_A000
    ; ~1 i; D6 W% i7 l: u
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    . \6 Q& d) {: b" D
  2695. RTS8 u# P. J, }7 w' `$ A

  2696. 1 E; D# X+ O  L6 i- x4 i+ U; s
  2697. ;==================================================
    1 o$ l8 H" c8 ?0 x
  2698. Sound_Init;音乐初始化, @! a. P6 f, t; ^! H' L+ [& j
  2699. PHA1 }1 D* A5 o  \! G
  2700. JSR Switch_Music_Bank  ;切换到音乐bank& n0 n6 T% H+ c1 }4 \0 u
  2701. PLA
    + z5 o: T( p) B3 a; X6 y  A
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    9 Z; Z9 ~& O& ?% |2 N
  2703. JSR Switch_Main_Bank   ;切回主程序
    $ \, @( V2 W) O1 E7 ^
  2704. RTS
    . A; k: L* @5 u. @- }
  2705. 3 ~8 P. {* O! u6 p/ M  E0 K
  2706. ;==================================================
    % G1 |: {& H9 L8 S
  2707. Sound_Play;音乐播放* u5 T! i" Z9 }2 A: N2 B  S
  2708. JSR Switch_Music_Bank  ;切换到音乐bank+ J/ t4 U# t, X- g2 P
  2709. JSR JSR_Addr_Op        ;执行音乐播放8 ^0 H0 O# Z0 U; z0 _6 D- f
  2710. JSR Switch_Main_Bank   ;切回主程序
    6 \/ r9 {7 x+ c3 d) b1 _5 `/ F
  2711. RTS; S+ o0 d) |2 X: n4 Y. j- u& k
  2712. 2 T) F, d1 y5 j! R& b& r. q( \7 `/ b
  2713. ;==================================================0 _8 P8 h. @$ ~
  2714. MainLoop;死循环3 W: B+ |% O' }& E0 X. V& \, V0 y' |
  2715. JMP MainLoop- v4 }; ?5 G2 W7 Y& @8 v0 [9 X9 Z  S
  2716. 1 B- C9 a2 n; S8 N
  2717. IRQ_SUBPROCESS_JMP = 0
    9 Q" K& z: C, |' t- B! q/ E1 B

  2718. - V/ M$ \' C, s. Q- G4 L; X/ b. V) }
  2719. .IF IRQ_SUBPROCESS_JMP
    - k/ S& w% j5 W9 P2 |% @2 c
  2720. ;==================================================$ X2 J* b+ }, b
  2721. IRQ_Process_0;IRQ处理过程01 c! `' a: J; w% I9 b7 H
  2722. 0 q" `( r- _9 r' @" Z
  2723. ;15条扫描线后触发IRQ
    : V! I( W( O8 |2 Y& K9 R/ b
  2724. LDA #15! g9 o) i; D  i) W) j0 T8 e1 e
  2725. STA MMC3_IRQ_LATCH9 e' C/ u# k2 m2 ]  g& Z9 \% p
  2726. ; L' I) h: `- v5 ]1 w
  2727. ;设置屏幕滚动& f4 d  I) p  J" S( z! N% k# o
  2728. LDA <Scroll_H; W# w+ |1 u7 I  h/ w
  2729. STA PPU_SCROLL! K) h- _3 M( V, }
  2730. STA PPU_SCROLL
    ' Z3 A! q3 Q3 I- n5 l

  2731. ( x# m; }- k! o! G/ P
  2732. IRQ_Process_0_End; j+ T* H1 f9 n5 N
  2733. INC <IRQ_Process_Index: g4 G# g- C7 ^5 x0 s
  2734. JMP IrqProgramEnd/ ~6 I, H' W! X1 P. E* w8 K) W/ o
  2735. ' G; @- l1 r* H2 ?
  2736. ;==================================================
    5 Z: N. Z- o3 A+ W9 E
  2737. IRQ_Process_1;IRQ处理过程1
    7 U. S+ x" J! T, x, ^

  2738. % N% f/ R6 ?( n  f* w4 o7 k! C
  2739. LDA #55
      N( V6 c( P% a' k3 r9 V2 b  r6 e4 t
  2740. STA MMC3_IRQ_LATCH
    8 u7 O1 p% `) B. P0 z
  2741. ! p( {! T. n* s8 j5 `7 s' r
  2742. ;设置屏幕滚动3 X% f) @/ o: F1 ?/ A( h' z' P
  2743. LDA #$00) B8 L9 q9 L0 ?. z3 `" s8 {) n) u
  2744. STA PPU_SCROLL) S% m. Q# T: a( Y1 E: y/ E
  2745. STA PPU_SCROLL
    & k" o& [# M5 j( _, n
  2746. / s! R; b. s' y! ^- \; S
  2747. INC <IRQ_Process_Index
    ' ]$ T8 R' d0 a- x/ j
  2748. JMP IrqProgramEnd
    / Z$ z* L8 c3 f. n

  2749. . r4 o, W3 [6 Q5 N4 K- c  s( p! h9 H
  2750. ;==================================================
    % `6 ^/ t; x: C" d2 V7 Q- e3 |/ l
  2751. IRQ_Process_2;IRQ处理过程2+ E% ~. n" E' I3 h9 M( k& W  P

  2752. " \0 s- r7 Y7 t& b
  2753. LDA #15
    - O8 [$ n1 x. |5 i6 i
  2754. STA MMC3_IRQ_LATCH
    , E! P2 Q: h9 W5 c

  2755.   f( `" L, P8 k# r0 S8 @9 I
  2756. ;设置屏幕滚动
    ! L! C2 v+ j- o0 ?* C4 U4 H
  2757. LDA #$00
    2 v! `8 K0 n: I9 A1 A( d
  2758. SEC
    + t" e9 ~+ U2 ^
  2759. SBC <Scroll_H! s0 Q- h; \4 X
  2760. STA PPU_SCROLL' @) ?1 k, X. l/ {: \
  2761. STA PPU_SCROLL1 D. t9 s/ z- b8 F$ z$ R! E, Z, ]

  2762. + p5 w& P3 a& W
  2763. INC <IRQ_Process_Index
    . K5 h( G* g; S. B( Y, ~; N# x
  2764. JMP IrqProgramEnd  u1 p9 ?. \0 O  w4 w2 Y. u6 y
  2765. 1 J' m- c0 b% |7 A0 [6 i6 r
  2766. ;==================================================
    % F, v0 l2 j; |4 Q' f; d
  2767. IRQ_Process_3;IRQ处理过程3( [$ S, ]- u& P4 {5 [! Q

  2768. # k% g) M2 @* I$ X$ x' K9 g3 p
  2769. ;设置屏幕滚动
    2 z: I' q. F8 X- y9 r/ p
  2770. LDA <Scroll_H$ R, h2 U3 |% P! h2 u) Y
  2771. STA PPU_SCROLL, o2 m/ B2 t: x; F* s
  2772. STA PPU_SCROLL1 L2 j+ r- f/ r0 C8 K; Y

  2773. 0 m+ n( w! f7 I" n; T0 J
  2774. ;禁用IRQ
    8 k8 t8 Z  X2 ~# X% P
  2775. STA MMC3_IRQ_DISABLE- Y+ t; o( }# \/ _3 b
  2776. JMP IrqProgramEnd+ l6 F( _( l. l
  2777. 0 }: ~. V2 Q5 t+ A: i& y
  2778. IrqProcessAddr( P, j! S- Q; E& f2 T
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    : ^5 S9 `6 w+ |5 y; t  a8 X

  2780. + b  u* @8 D: |7 n( f0 j
  2781. .ENDIF
    + v6 R- k: |# ]. G
  2782. * m0 T- K" v! S
  2783. ;==================================================2 O9 N3 P+ l8 j8 G! l- h
  2784. ;IRQ滚动模式常量
    , s! P, E' B  g$ L1 s
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动9 Z* Z; [9 H# Q1 ~$ c* [
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动2 d6 i" l! w2 u: s5 d" Z# `1 [
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    ' l  I7 E" ^$ a! r: B  y- H1 W

  2788. % w8 h2 V/ M2 s( W( ?* f, t
  2789. ;IRQ扫描线数据$ ~: x, v' M0 Q$ |( Z. V: }" X
  2790. IRQ_Scanline_Data
    8 Y* m8 e' @, v* w# L2 D, K
  2791. .DB 8
    8 N0 A5 N8 L( F: a0 u3 M1 t
  2792. .DB 54, m& d( Y# Y- y  x* X9 V
  2793. .DB 8
    # L6 h5 Y$ l! o- g
  2794. .DB 00 ;关闭IRQ
    % O$ ^6 ]% H. s

  2795. " g* J, w4 i( z& ]/ _1 A& Z5 ?
  2796. ;IRQ滚动控制模式, l/ \+ _' N) f, k* b0 N9 d" u1 j1 x
  2797. IRQ_Scanline_Mode5 w4 W8 ]& x7 ?: E
  2798. .DB IRQ_SCROLL_MODE_ZERO+ B2 b, [9 {6 x$ x- f
  2799. .DB IRQ_SCROLL_MODE_ZERO" Z' \. Z! s3 o! v; m# Q
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    / p, e# R0 k0 [
  2801. .DB IRQ_SCROLL_MODE_LEFT! I( g) e7 O, r8 E! J
  2802. 3 s( F% `& i/ [- w( L1 F
  2803. ;==================================================! \, w: s1 `& G. m$ q& t2 v/ b
  2804. ;IRQ处理
    1 ^6 {: ]1 ?" E- W( `4 q2 B
  2805. IRQ_Process, _, }' A2 [6 @$ A& q& ^* N* o
  2806. LDX <IRQ_Process_Index% g6 }8 F8 B0 T8 ?
  2807. LDA IRQ_Scanline_Data,X
    ! L8 |2 F7 e& n
  2808. BNE IRQ_Process_Latch
    , M3 a. b( b9 G0 P+ l3 R
  2809. IRQ_Process_Disable;禁用IRQ% t9 E% R, ~- e0 u( H! W
  2810. STA MMC3_IRQ_DISABLE
    * E% l. B- }% t: ~7 o  g7 j' o
  2811. STA IRQ_Process_Index
    ; X: z& i' Y) P2 g( j
  2812. BEQ IRQ_Process_Scroll' {/ |* G& R( N. L( _% t  t0 I) Q
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线+ f! U* |+ e5 @+ C9 z8 ]
  2814. STA MMC3_IRQ_LATCH, g9 p' w" K2 p1 b/ H
  2815. INC <IRQ_Process_Index
    " t3 N9 B% I0 Y4 L' T$ W, u- V
  2816. IRQ_Process_Scroll;IRQ滚动控制
    1 Z. a/ P9 z5 B- u' K& j
  2817. LDA IRQ_Scanline_Mode,X
    7 Y6 M; i; l# I. m# J8 {- ?
  2818. CMP #IRQ_SCROLL_MODE_LEFT! r7 g# j5 N3 i& {  k4 f
  2819. BEQ IRQ_Process_Scroll_Left
    " x( X- D( t1 b
  2820. CMP #IRQ_SCROLL_MODE_RIGHT7 `0 A% I7 i# j2 q
  2821. BEQ IRQ_Process_Scroll_Right; U" P! d& e0 P; J) i! q4 j- C
  2822. IRQ_Process_Scroll_Zero;不滚动1 a- r# n. V$ [, H! g
  2823. LDA #$00- d! p' s( O1 l, |9 i3 V
  2824. STA PPU_SCROLL( \  T  j0 n' h( A4 v
  2825. STA PPU_SCROLL
    ' e& d# `; e  n) _
  2826. RTS1 x* Z% q9 e( F" ^: |( g6 D
  2827. IRQ_Process_Scroll_Left;向左滚动0 m  l* {2 y/ I+ O, f) ^
  2828. LDA <Scroll_H; w  Q2 x  j  R. H3 K
  2829. STA PPU_SCROLL
    - s+ _: h" M% F
  2830. STA PPU_SCROLL7 d3 W+ W$ s* F- @2 x
  2831. RTS
    7 R; e- a" o9 Y4 Y/ A
  2832. IRQ_Process_Scroll_Right;向右滚动9 c( y+ M5 Q% n& {) R4 |* Z
  2833. LDA #$00
      E& D2 p; B  v: T9 W; M
  2834. SEC
    $ e8 k" T- w! }" i$ P
  2835. SBC <Scroll_H
    * e" x" T; A! F; }# t7 n
  2836. STA PPU_SCROLL
    1 I& z5 S5 M2 {2 ]' a% ^5 ]1 C8 R* B
  2837. STA PPU_SCROLL
    9 T+ j2 H. v8 x3 N# y7 d
  2838. RTS
    , l% B2 B1 f. K. [* D

  2839. + g; |. x6 _& h) W+ _
  2840. ;==================================================
    & `, A) B# F0 _* @0 c1 G
  2841. NmiProgram;Nmi中断处理
    . c: \0 H5 j5 S1 \$ V! F  d
  2842. PHA2 K  a8 d, `/ {; w) ~
  2843. TXA7 w6 d8 n5 j9 C7 W) H2 u8 a
  2844. PHA
    9 J" \9 ?' P. h7 f3 y' Q6 |/ S3 N
  2845. TYA
    # Z- F4 v  ^0 w: V/ v. @/ R2 U. g
  2846. PHA8 U3 i3 A2 y& H0 j5 A
  2847. " p: x! F6 m* R2 `
  2848. ;读取清除Vblank标志, 防止重复进入
    0 Q$ e+ a' |- j  l4 c, y  L
  2849. BIT PPU_STATUS
    ; x! b( ~% ]( ~. b8 a/ T4 i, o: p& s0 y
  2850. - x' W: q$ i9 F# a8 m7 m+ v0 @
  2851. ;切换主程序bank
    " E* B# e9 q( X) K- x
  2852. JSR Switch_Main_Bank- Z) u  [4 w! H0 v
  2853. 7 W/ L) y! J! f9 k! W
  2854. ;Nmi处理
    & v, n; C. e# J
  2855. JSR NmiProcess
    & `3 @" T" a8 p3 b% U: o  V/ x

  2856. ) L% y* g" _3 D3 d( Z( z$ [  M
  2857. Nmi_Proc_End
    " Q' u5 e# j! U8 H" u' ?5 m
  2858. PLA1 _# [) I8 P  G: Y
  2859. TAY
    9 }! U+ `9 p0 n  U
  2860. PLA/ e2 G$ t/ ]- L. p; u
  2861. TAX& A: N; j" w9 R/ ~7 J; r* C  j
  2862. PLA
    + z' @8 f2 ^9 o) j* v" J
  2863. RTI+ D# x" g  i+ V# t, @% d- F% M; A# E
  2864. + X- x3 m! c# o' x0 H7 h1 m4 h# d
  2865. ;==================================================! G/ f5 `! W4 Z* v! ~1 Z
  2866. ResetProgram;重置中断处理
    , k; D) P( W- o$ w" k+ L
  2867. SEI) H% v* B1 f# T- a6 k& g1 D
  2868. CLD
    7 t/ f, \" f7 |$ b, P: v5 Q/ n; d
  2869. LDA #$00+ X3 q7 J. P6 x; }/ |4 L- R, S- S' i
  2870. STA PPU_CTRL
    7 f3 Q# O7 B) R9 h& p1 s, M0 I
  2871. STA PPU_MASK' X3 d4 c9 {) A, t7 v

  2872. ( J' c7 N9 Y. m7 ~" K- _2 C
  2873. ;切换主程序bank% o4 \0 U+ i/ J
  2874. JSR Switch_Main_Bank
    $ F! U8 a6 H1 c8 i

  2875. 2 b1 v7 {. z7 A$ V
  2876. ;程序处理开始/ X& a8 W0 n# h" @" h1 w- t
  2877. JMP ProgramBegin- R: @( C7 \6 i; D
  2878.   }1 y# z% p! b
  2879. ;==================================================
    9 t7 B$ J; ^# t
  2880. IrqProgram;Irq中断处理" z2 e5 ^& F: h6 k' ]! b
  2881. PHA; p2 m/ q7 v' f. V5 }
  2882. TXA
    2 ?4 X! K5 x: [' [/ w: c; O; h# G
  2883. PHA
    8 K7 \4 L2 Y, I, W( U8 T
  2884. TYA
    9 ^  O; s# _" R% x; A0 M
  2885. PHA
    - z) v  `8 ?+ }: T

  2886. 3 P" s. t9 L% S# b6 |
  2887. ;关闭IRQ
    1 e2 F: r  I" ?. u& G' u- {8 h6 @
  2888. STA MMC3_IRQ_DISABLE8 C# c6 e6 U. Z# W
  2889. 8 l( l/ g9 V0 K# Z8 ^
  2890. ;允许下个IRQ触发
    + n: M, w  r; z, w0 h: D
  2891. STA MMC3_IRQ_ENABLE
    ' j4 l8 |9 h0 r& @

  2892. . u4 t6 L+ d" e# X
  2893. .IF IRQ_SUBPROCESS_JMP2 }: s% u) |& a* ~& I

  2894. * k& x. B; j8 B! m/ R: q* G
  2895. ;执行IRQ过程: f, e( i8 i4 z5 t5 S
  2896. LDA <Data_L: j0 B9 B0 F3 {: C
  2897. PHA
    9 D5 w4 H+ k" c" ?
  2898. LDA <Data_H
    ( i1 a6 W) U+ f! y8 s( Z. r3 ~
  2899. PHA$ u# {6 f# a' g6 X4 F
  2900. LDA <IRQ_Process_Index! G5 W% ]4 V8 r7 I
  2901. ASL A
    9 S* f* M& X' m8 ?9 S  W2 u
  2902. TAY
    / U$ @, M1 K4 H9 [8 K' I6 {' v
  2903. LDA IrqProcessAddr,Y
    8 h8 F0 Q6 I/ e$ _" B
  2904. STA <Data_L9 P8 v0 p* n. N: d7 i
  2905. INY! n+ {; r3 e* D7 e
  2906. LDA IrqProcessAddr,Y
    9 S6 ]& D4 u/ t! |+ L
  2907. STA <Data_H
    ! l+ ]1 P) f2 h7 W
  2908. JMP [Data_L]* y6 N: _2 s7 y/ |4 f

  2909. ' e8 `: O$ X- y( E" @5 m. m
  2910. .ELSE, H% P, p% P2 A1 T7 \

  2911. " Z7 {+ |  x; }! L% Q
  2912. JSR IRQ_Process' a* g- V& {) j

  2913. & ]2 W6 L3 ?# w# o/ U
  2914. .ENDIF
    $ p6 e/ j+ N: A  A

  2915. , [# B5 i1 g7 M/ O- z$ a0 F9 |
  2916. IrqProgramEnd2 N6 C$ U- h: X0 {+ _9 q4 R
  2917. .IF IRQ_SUBPROCESS_JMP8 i8 H% h6 a/ x$ c3 U- p' }2 l3 r
  2918. PLA
    7 ^5 D4 h: Z' L7 ^" L
  2919. STA <Data_H: c# O6 |( ~# c& u9 _* z0 _
  2920. PLA; v9 u7 g  f! {; U' R; k( d
  2921. STA <Data_L% G4 B# [9 v0 F5 u" K( q% J
  2922. .ENDIF
    0 r4 v. [- ~  Z/ r2 y; H, z3 J: v
  2923. PLA
    9 w% B$ \- Q1 h4 J
  2924. TAY
      ]% o' r5 b5 N! F2 O
  2925. PLA1 i2 y1 d  i  R8 D- W( O/ M
  2926. TAX  E! _! \/ |# j- Q- k
  2927. PLA& ]# |0 H$ C- Z+ a  ^- O: `+ x
  2928. RTI) h: q& G/ H+ ^* I: U

  2929. 7 B/ A1 K, P5 m. v$ C# }
  2930. .ORG $FFFA
    ) C+ B' l: W, E: o5 Y- Z* l
  2931. .WORD NmiProgram
    ( K& @( w8 O5 _& u3 m
  2932. .WORD ResetProgram
    6 l1 F9 |  C+ t1 n
  2933. .WORD IrqProgram9 f  e3 Y7 }9 Z1 _( f  ~

  2934. ) J+ c! U- T+ O$ s9 [6 r, }
  2935. .BANK RESET_BANK & BANK_DATA_MASK% j/ y' ]# u; Y/ d# i
  2936. .IF SOUND_BAR_SHOW_ENABLE# j* k2 l4 b/ G1 H6 X- o/ ?+ }2 U9 D
  2937. 2 j3 I/ T# I9 G& D; X3 N6 v/ ^
  2938. .ORG $FE00+ Q: Y7 E+ E, X% z
  2939. PHA
    ) ~( O% D- B% q+ k
  2940. STY $07BA
    9 d6 ]( |; K) s# Q: `( v9 P. J
  2941. LDA #$8D
    4 C! n& P9 ]5 \$ {& \) B* b
  2942. STA $07BC
    9 d- W3 y! s- r  H3 `5 P
  2943. TYA6 f4 D6 T2 |) o: I8 a
  2944. CLC# L% C8 h1 x" G- u  c
  2945. ADC #LOW(Sound_Bar)
    8 p3 K  M; ^% q9 K% ^1 m) k
  2946. STA $07BD
      m( X4 v: g' M/ w. x+ @( S9 ?2 a% i
  2947. LDA #HIGH(Sound_Bar)( J$ \, t! A" \# Q8 a7 M! P% N
  2948. STA $07BE
    & E5 H4 A) _3 v
  2949. LDA #$60; s' C; T1 l. }8 l" `6 O; L! h
  2950. STA $07BF
    , g% s; v4 |& K" s9 j" E) d4 V) a
  2951. PLA3 }$ ?, U) C  c* u
  2952. RTS
    5 t% m% n, t% Y' N2 A% T1 F0 U0 B
  2953. / D! C/ `1 C9 N3 M( [' D) V; T3 e
  2954. .ORG $FE201 C! X! {; x3 X5 S1 Y
  2955. STA $07BA
    + U4 f7 N% U7 ~. x! ]1 C1 ?: V* a
  2956. CLC; t7 d0 t; Y* Z$ V3 ~+ M: Z
  2957. ADC #LOW(Sound_Bar)* j- ~8 _0 ?3 y" i. B) h  Q
  2958. STA $07BD
    . B3 E1 ]& l8 t- O
  2959. LDA #$8D8 |# s9 \: D! I& o
  2960. STA $07BC
    , o( s# Z2 A1 h, u( R+ j6 J
  2961. LDA #HIGH(Sound_Bar)
    " U* I+ g' @: _
  2962. STA $07BE
    3 R8 r' Q# e5 d' L. v6 l0 A. M# w
  2963. LDA #$60
    , l5 d1 j6 L* M% K) m- ~" W* i
  2964. STA $07BF: U7 V7 Y; x/ ?
  2965. RTS, M' H2 T. v. d7 B# U
  2966. - v8 z- ]* {8 p
  2967. .ORG $FE403 Y, ^+ b2 T4 }% c7 F
  2968. PHA/ @, F# t) {& ^- D# a) D8 @
  2969. STY $07F1
    " f9 [0 k: V  X' w( d$ {1 A: y
  2970. LDA #$8D
    / O, e- s% m& a
  2971. STA $07F3
    & R" ^9 V$ t6 L" P2 c6 T
  2972. TYA8 ^( G7 T' H: l* C8 ~2 z1 @' z
  2973. CLC
    5 J5 U7 @0 x+ k4 T& j8 L. G
  2974. ADC #LOW(Sound_Bar)
    6 T7 F1 ~. R- d- p  c
  2975. STA $07F42 P* g6 Q0 U9 r; W; {' s
  2976. LDA #HIGH(Sound_Bar)' L( V: z& q, K* w9 ?# p3 T" r3 ?
  2977. STA $07F5
    * k& O6 {' J0 M( s, ]- P
  2978. LDA #$60
    " |& k- L- f% x- l
  2979. STA $07F6
    $ n0 U$ y$ D" T" |5 c7 [
  2980. PLA
    ' \3 K& E6 B4 n# |
  2981. RTS
    6 ^: f) O, W& Z  {, Y; ^, j

  2982. + K' V! F4 z% w* q- W8 Y8 t
  2983. .ORG $FE60' n' ?* r( i4 g8 ~; W. I
  2984. STA $07F1
    ( I; }" Q) i5 e' o4 M( }# f
  2985. CLC) E( w/ _" u1 m: s+ H4 [
  2986. ADC #LOW(Sound_Bar)# j; i6 D6 }* ?" r7 C% G4 `
  2987. STA $07F4
    - H! y- Z& o; \/ ?
  2988. LDA #$8D
      `+ `0 c: P& [1 ~
  2989. STA $07F35 L3 P3 c5 q$ q6 g& }
  2990. LDA #HIGH(Sound_Bar)
    - Z* J$ Q- k; M
  2991. STA $07F5
    9 T; s4 [# ~2 l6 y. A
  2992. LDA #$60
    # U+ a+ Q7 r' v0 Q! l: W' Z- t
  2993. STA $07F6
    2 m5 c* j' _( _. c; u3 w  i
  2994. RTS
    7 b5 y6 z* t  J! L( x
  2995. 4 [5 q0 A' s( k4 l8 X* z8 Z
  2996. .ORG $FF40% o6 \5 l1 ]8 ]) z/ d- Y
  2997. STA $4000& ~1 T4 S8 \( ?$ O4 a# P( r, Z2 p. n
  2998. STA Sound_Bar + $00# K2 v# X3 ?7 b3 V3 \  @
  2999. RTS. ]: U% }5 C; t9 T2 j* R8 {6 n
  3000.   W' Q4 H3 v/ K2 @, F
  3001. .ORG $FF48
    ; k* Z2 N0 S6 L" u
  3002. STA $4004: o( y! \4 B1 L! n
  3003. STA Sound_Bar + $04
    / O1 s: w; }; @2 k0 d: U
  3004. RTS# I& M. r; W, J( M
  3005. + [) f1 B# }# w2 _, K
  3006. .ORG $FF500 i3 O2 n5 v1 C% V9 G: P8 K5 R0 J  }
  3007. STA $4008' K- v) u1 L& N0 Q/ P2 Z6 [+ r
  3008. STA Sound_Bar + $08! D% \9 }0 c# c! J" o. W: G
  3009. RTS) o0 ^6 Z" Z4 c, K( |) J
  3010. 7 w  g* Z9 g! T. A, M
  3011. .ORG $FF58" d# ~, Q& z* L5 P- l3 X; @
  3012. STA $400C; \# W6 z' V% _( T4 |
  3013. STA Sound_Bar + $0C
    4 }# ~7 M! X- S
  3014. RTS' H5 p) g: y. q2 i

  3015. 7 V8 M0 X6 ~" g- Y2 n! M8 t* F
  3016. .ORG $FF60" Z0 v. f- M( e! ?, B  f; d) G: t
  3017. STX $4000
    . Q- [! k4 v5 ~( U0 K
  3018. STX Sound_Bar + $00
    ; ?5 e1 b4 b5 i% p$ N: N
  3019. RTS3 O7 @5 A, R8 D
  3020. ! z8 B, z6 R# T2 f$ T+ Y
  3021. .ORG $FF68' C, X4 t/ `5 w
  3022. STX $4004
    : Z" X8 {2 O3 P$ Q
  3023. STX Sound_Bar + $044 k8 c- \( @3 ]% F+ o
  3024. RTS2 B# m. Q$ Z$ u
  3025. $ A1 m* {1 e2 ^6 b: h
  3026. .ORG $FF70( A" a) ?, ]6 ]! D
  3027. STX $4008+ p  @% N& s) h( G
  3028. STX Sound_Bar + $08( G4 [( h* M2 v5 h3 M% w6 I" ^& T
  3029. RTS0 O" y" `9 E: V9 b
  3030. 6 L$ R! G: H* G" J" @
  3031. .ORG $FF78
    0 }! q; h% I+ [, S, N
  3032. STX $400C4 q% Z9 d5 x7 v8 @* k2 V& T# }
  3033. STX Sound_Bar + $0C
    - O! b6 [( A9 I* Q
  3034. RTS( d2 b6 a& z, }1 h- Y
  3035. + b* K  w  z% W5 {( N# t9 y. A
  3036. .ORG $FF80' ]% D4 Z' C. q2 ^1 m
  3037. STY $4000; I  j  j, N8 E: m* o& C) g# d
  3038. STY Sound_Bar + $00
    ! b3 \# @  E. K
  3039. RTS% H5 c+ D- S' N, ?

  3040. 9 U& ~$ `' y) ?
  3041. .ORG $FF885 Y. ~. S% M& p4 k
  3042. STY $4004: h3 Z* U! r% y$ `3 F* t% `& E
  3043. STY Sound_Bar + $047 [) c, F+ M* }6 W
  3044. RTS/ J# ~) x0 q3 O( B- V0 M) f

  3045. 5 A  a. m. x8 l/ H$ {
  3046. .ORG $FF907 I5 o( v/ L3 b; [
  3047. STY $4008
    2 T4 S  c6 h3 j$ H  D8 c2 N9 T
  3048. STY Sound_Bar + $08
    1 o7 r! J7 l" U) k
  3049. RTS
    , a/ d# q* p3 _* h. l9 l3 R4 u

  3050. 6 C5 O6 b# M% |
  3051. .ORG $FF987 a( P5 g: \- H$ X! u
  3052. STY $400C1 }* P: S0 F7 C, V  h, m5 i8 W; O
  3053. STY Sound_Bar + $0C8 x! {0 E' g/ x5 R
  3054. RTS& o$ ]- M1 B0 g' ]' m
  3055. . t* C# O4 c8 m7 Z: r) x( m8 h
  3056. .ORG $FFA06 \+ U) \1 [8 y8 s; d
  3057. STA $4000,X4 T' G2 l8 t5 H- H' M7 Y. d
  3058. STA Sound_Bar + $00,X" M' L9 q8 i- f& c. R9 u* s
  3059. RTS
    0 V. F1 H4 _9 K; F

  3060. , r3 l8 |  a1 n$ r
  3061. .ORG $FFA8
    ( Z* L9 J* P* Z/ R
  3062. STA $4000,Y$ ]6 U$ y& O! D3 M
  3063. STA Sound_Bar + $00,Y
    1 b7 C" A9 w; y  D' I# D3 s
  3064. RTS
    $ z8 s& i0 g' t# D7 k

  3065. ; a, f, e/ J6 ]6 ^4 ], Z) p1 c
  3066. .ORG $FFB09 {4 ^( V& I- `2 Q5 I, e0 t& r
  3067. STA $4004,X
    + p  P! E2 l5 p" L* [( Q
  3068. STA Sound_Bar + $04,X! n0 c4 G; j* ~4 M' c
  3069. RTS" @) R0 z, i# T9 y; }& S( o% B8 L  ^

  3070. " i2 V9 c' S* Q3 n4 K7 O
  3071. .ORG $FFB8
    4 t+ l2 t2 \7 f- x2 x, X
  3072. STA $4004,Y1 ]3 p2 s! q$ r/ Y' y
  3073. STA Sound_Bar + $04,Y" M( t) ?% d- E4 T( c7 y  I7 f2 C
  3074. RTS
    9 |) k* X# Y" _4 F+ D

  3075. ; I: I9 g8 r8 C* A8 q
  3076. .ORG $FFC0, b5 f$ s0 D6 e- U, f
  3077. STA $4008,X
    , c* J% `! L' T  K
  3078. STA Sound_Bar + $08,X: T4 o6 U9 P! S4 ~
  3079. RTS
    6 l! Y" M0 X( ?8 M8 `% ^

  3080. 3 y0 `6 f2 \/ R) N6 E# ~
  3081. .ORG $FFC8
    . a; p+ G% C2 k- k+ I9 Z
  3082. STA $4008,Y/ x: ~3 R, D, t! H* ?. j" c1 |
  3083. STA Sound_Bar + $08,Y
    + h* D$ p  A" T0 |! @. c
  3084. RTS
    $ H6 p! J( O) A$ [3 J8 h

  3085. 5 T' ]0 g! a% o) v" T+ @# B
  3086. .ORG $FFD0
    9 U9 F, Z% F: D; N  `0 E' @$ j4 j3 a
  3087. STA $400C,X, c/ N* I7 E- }& V) _: z- N
  3088. STA Sound_Bar + $0C,X
    ' A+ R: d0 f. |5 g  X1 j' R/ _
  3089. RTS  W2 Y& r4 N0 y4 J3 Q6 c" ~/ B/ x
  3090. / C, B# x$ @" T* Q1 e
  3091. .ORG $FFD8: e, j) @2 {7 Q
  3092. STA $400C,Y! O! j% R# S( }( f5 Q0 H. y
  3093. STA Sound_Bar + $0C,Y( @* a# |+ _/ |0 A8 G+ e
  3094. RTS7 X9 H: b/ f9 w8 Q' U9 x0 p

  3095. $ V  F3 l5 e7 ~9 H, G/ b9 G+ a
  3096. .ENDIF, z  S; C+ ?/ W. k! ]- e
复制代码

' V) {9 S1 B/ r% x. z/ f
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3233 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 02:17 , Processed in 1.109375 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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