设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
$ ^2 B4 E) r. j$ v% P' z% l" |0 m* `5 K! S: ]
[FC][音乐12 IN 1]2 w! w2 I& x6 m0 S
时间: 2023.07.231 `  O" _0 e" e3 c
作者: FlameCyclone
, |. q/ y4 D$ W. W* ^2 e6 I7 r* e0 d2 s4 N$ {' H( H
收录音乐内容:
( D$ n' P& ~; `7 ]5 n  v1.Raf世界" h; A9 t! h% E; t& z" r- C# G
2.最终任务
" P. R" m4 u/ s7 c* \6 r3.赤影战士3 K2 I, y1 g; `3 N6 R: I/ c
4.双截龙
1 m7 X. V3 X+ i1 z7 k5.双截龙2+ F3 k" q! I/ t6 E! p! z5 I
6.双截龙3! E) U7 B7 p& s4 Z
7.洛克人7 a; N; I9 I7 N5 b8 C% T& k0 w2 m
8.洛克人21 K' B3 S1 J4 z+ A, \
9.洛克人3; \9 k7 U: P( s/ F5 _! v
10.洛克人4, f4 p' J5 c2 O, Q9 T6 C
11.洛克人5- |  ], s0 Y9 i0 b# |7 t
12.洛克人69 V* S  Q3 W3 @9 s. }* L+ c
9 w# L& \, N/ E
操作:
% Q+ m; ]" q9 i1 Z4 [$ f% x1 P% G8 J上键:         上一个专辑. F2 n0 C0 I- O8 m* D
下键:         下一个专辑5 t9 R& u: d& ^: S/ l
左键:         上一曲
) g) h* z4 D/ S8 W( P& `5 j右键:         下一曲
4 ]& G, _+ A" e( bB/A键:        前10曲/后10曲. k9 P% `. [; N. p
选择键:       下一页. B  R6 u0 M# y& h! ~& k
开始键:       停止/播放
9 `5 S2 Q$ _. V% q7 f
9 S0 l; i* W" v( yhttp://flamecyclone.ysepan.com/6 R  u5 j# ^5 h( {
: `$ i3 P* b* @7 N$ D+ B3 l8 z
" f' L8 v* m4 e% R" u1 X

! M/ I1 a- ?0 {* L; U
0 ]4 R5 Z" i' O( N* [0 W
  1. ;[FC音乐][播放器模板]
    ' G$ G+ p( Q" [+ B2 o! e
  2. ;FlameCyclone 202307105 {( `$ ^/ y% W9 Y

  3. % d0 R% _9 g8 D8 v9 ~1 k1 x
  4. ;文件头
    ) ]2 g; c- ~: i0 i, u
  5. ;======================================================================
    9 u8 H4 x  z# ^
  6. .INESPRG 16                                             ;16KB PRG 数量9 c; N- x$ @7 Y1 [
  7. .INESCHR 1                                               ;8KB CHR 数量
    9 ?$ B, Y0 m0 v9 y/ \* t2 S
  8. .INESMAP 4                                                   ;mapper 4
      e9 X2 A/ k) i9 v& R
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    4 X. @3 `; \9 c4 C$ w
  10. , t1 k, J4 t$ v. E1 A1 |# @" Q
  11. ;==================================================1 l/ b. @5 T+ x3 s' E
  12. SOUND_BAR_SHOW_ENABLE       = 1
    * F9 S6 G3 [* J+ [  l  W$ @1 o  ^
  13. ;==================================================
    $ l* p# q! f5 W" E
  14. BANK_DATA_MASK              = $1F
    " d! @+ H" b6 E; {; l+ E
  15. CHR_RAM_ENABLE              = 0
    6 z9 U- V# [% n' |/ s! `& @1 ^
  16. IRQ_SCANLINE                = 136( C. T! I3 G6 O6 C6 X, M
  17. ;==================================================# A  Y4 b7 |- c, ^
  18. SOUND_DATA_BANK_00          = $00
    4 H% o. Y9 A8 Z7 C
  19. SOUND_DATA_BANK_01          = $01" f9 {$ ]# y, S7 E: A
  20. SOUND_DATA_BANK_02          = $02. K8 c. c5 u2 R' n- F
  21. SOUND_DATA_BANK_03          = $03  o- Z; v# {: U: f
  22. SOUND_DATA_BANK_04          = $04
    ! k/ O: S. k* Q
  23. SOUND_DATA_BANK_05          = $051 Y, X$ \6 T, I- b0 z% R
  24. SOUND_DATA_BANK_06          = $06
    % A3 V% F* _' `! v. `
  25. SOUND_DATA_BANK_07          = $07
    ! U: ]2 w2 U& R8 p
  26. SOUND_DATA_BANK_08          = $08
    2 z0 a3 ]: [( @# w8 X0 m
  27. SOUND_DATA_BANK_09          = $09/ m$ b3 @5 x- g* u$ D
  28. SOUND_DATA_BANK_0A          = $0A
    ! b, f5 ?& n2 [
  29. SOUND_DATA_BANK_0B          = $0B
    2 a' ~1 @% Z/ `" W
  30. SOUND_DATA_BANK_0C          = $0C
    5 \0 ~" ]3 a/ C: v
  31. SOUND_DATA_BANK_0D          = $0D
    : F* c0 _- _7 k" H8 s2 W; Q, I4 A
  32. SOUND_DATA_BANK_0E          = $0E' t3 D8 R! d4 K4 ]) }& a
  33. SOUND_DATA_BANK_0F          = $0F
    & o! c- n; L5 g

  34. # }: E! K: T: u( o! ^
  35. SOUND_DATA_BANK_10          = $10
    / o! y3 {0 s) T
  36. SOUND_DATA_BANK_11          = $11
    + W7 E% z! a! e9 L! E# O" e5 u9 X
  37. SOUND_DATA_BANK_12          = $12
    ' S7 M5 C4 F$ P4 ]# H/ a
  38. SOUND_DATA_BANK_13          = $13
    ( A4 R" [2 Q$ K, D* b0 C* A) o
  39. SOUND_DATA_BANK_14          = $14
    . M+ |1 U) D" E" o4 H
  40. SOUND_DATA_BANK_15          = $15
    % t  y0 c0 F" y5 I
  41. SOUND_DATA_BANK_16          = $16
    3 H8 ?8 N3 [3 E! j5 r$ V- K
  42. SOUND_DATA_BANK_17          = $17
    8 I, v( U' S7 ?1 `( v: C
  43. SOUND_DATA_BANK_18          = $183 H: _# u$ w4 w. m% g- u
  44. SOUND_DATA_BANK_19          = $19
    / ^/ L( ]. F& k- K9 a; B
  45. SOUND_DATA_BANK_1A          = $1A( |( Y* i2 [1 r- F3 }8 ~
  46. SOUND_DATA_BANK_1B          = $1B0 L/ V* P) o! d4 _4 |) ^
  47. SOUND_DATA_BANK_1C          = $1C
    ) C+ A2 d+ l9 K$ n, W/ a! A! }
  48. SOUND_DATA_BANK_1D          = $1D, \! {! _) O8 q. O
  49. 2 G2 g; v: K) ^- {' L
  50. SOUND_DATA_BANK_C000        = $1E
    ( J( x/ D5 m' `" H2 g) t
  51. SOUND_DATA_BANK_E000        = $1F% @6 R) M) W3 h8 q
  52. ;-------------------------------------------------
    3 Q& k& A5 D% j1 T# U
  53. CHR_DATA_BANK               = $20
    ( B7 b8 R5 y% x' N* ~- ]6 T
  54. CHR_DATA_ADDR               = $A000/ r, n# I' z% Z2 k$ I" A
  55. ;-------------------------------------------------
    , [3 {# w( L. ^- K' X; C, \
  56. PROGRAM_BANK                = $00
      P0 b- O2 I8 T" K7 L
  57. PROGRAM_ADDR                = $80003 H: E. E* x: E+ V( _5 F/ v
  58. ;-------------------------------------------------
    8 ]" B( I+ R1 v$ f! z
  59. RESET_BANK                  = $1F
    9 f- U! ~3 ~; s: `
  60. RESET_ADDR                  = $FD00
    , c  Z! b5 G4 {& n0 n/ }+ d
  61. 9 C- v4 @! X' T  T; Q: @7 q1 g3 p
  62. ;==================================================$ U( s$ m( N. A- s' X4 _1 b
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    ! W! ^7 [: O1 P0 W
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引) p" w; s; t- n' S
  65. PAGE_SIZE           = 5                     ;每页节目数8 w2 y# N  W3 I  i: W5 y4 r# u. R

  66. 0 B6 Q7 P+ r- Q* M* U  z
  67. ;==================================================
    # w& d; W2 A1 T1 F) Y1 @
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除  Y! T  n+ \7 f
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
      o& G  ^6 d+ A
  70. .ELSE
    7 }- C2 l% T# q0 ?. p" F( ?
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数3 {( T8 l0 L1 D! y( U% r( A" ?
  72. .ENDIF
    - }# V0 |8 x; l
  73. / B' K" F9 ^& D% H
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引6 ?% ?! k; z! J7 g5 z  e/ M( c& l

  75. , B  Y# D  J8 O6 a) c" t- R
  76. ;==================================================& l# P1 A- ]4 D  ^  b
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置% B, h. b8 ]* p. n& `
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 21 ~% \2 R1 F- q  E/ k  v0 M
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    9 _& h% R6 T4 S- j
  80. ;==================================================. Q9 a& x& Y& _  G; e7 u
  81. Caption_Text_Pos    = $204D ;标题文本位置, c2 ]/ [2 w# c; `3 q  f
  82. Author_Text_Pos     = $2324 ;作者文本位置
    3 y" a, G1 ?$ ]- H( L, N  _1 r* \9 {
  83. Date_Text_Pos       = $236B ;日期文本位置
    9 R, u# i! |3 z  g/ j! g# i: H
  84. ;------------------------------
    6 k1 ]1 h2 t" n
  85. ;------------------------------
    : [. J# ~* o- w. s7 p
  86. .IF SOUND_BAR_SHOW_ENABLE
    5 K. Z- H' p" ~" d% J# T

  87. . M- w' ]! I% m" R! }2 \7 V
  88. Play_Index_Pos      = $2273 ;当前曲目位置+ ^& `  O0 e# z! J3 [( K
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    8 f9 p6 H: E  Y' _) M0 G
  90. Play_State_Pos      = $22F3 ;播放状态位置+ l- Y$ G- d8 S# G
  91. 4 ~( Q, L7 b( h, g
  92. .ELSE
    / j" x2 Z. O: Q9 l& F/ Z: s

  93. : T% ^+ s  J# o1 Q
  94. Play_Index_Pos      = $226C ;当前曲目位置
    1 Q5 m  x* R$ m# A, q
  95. Play_Time_Pos       = $22AC ;播放时间位置. W' t! F* W/ ?
  96. Play_State_Pos      = $22EC ;播放状态位置
    2 }5 x/ d/ T  Z* q# \

  97. 8 H9 L8 z0 n/ J+ t
  98. .ENDIF; [" C/ Z2 q1 q8 l: b2 a/ Z( w: h) i
  99. ;------------------------------* v  q0 Z# V" q. p* p- k/ r
  100. Track_Name_Pos      = $222B ;曲目文本位置
    ; ?$ @' ~$ S2 x- J
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    ( ^' I7 Y, W' {! E" i  m7 f) F) B
  102. Sound_Track_Pos     = $2265 ;声道文本位置* M! |, M  n' q( q$ \- C/ f6 Z8 U
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    / ^4 v: L0 T" ~4 q5 X: d
  104. ;==================================================
    " {8 h4 r; T9 V' i
  105. Scroll_X = $002 j$ h. _/ G6 Z* q* I) n8 f
  106. Scroll_Y = $00
    ' f3 f" @( z  R5 L; D" a
  107. ;==================================================4 w7 e* E8 l) [' ?
  108. Sound_Ram_Addr_1       = $0100
    , s, ]! w  |" |
  109. Sound_Ram_Addr_1_Size  = $80* s$ \& p; K) ^  Q- A7 Z' a
  110. Sound_Ram_Addr_2       = $0090
    ) ]: W9 M+ K6 ]' `! ~: Z2 V
  111. Sound_Ram_Addr_2_Size  = $70: u& w) b$ S  x! I4 W1 s% V' @% o
  112. Sound_Ram_Addr_3       = $0700
    $ X. Z" J. i' k" f) G
  113. Sound_Ram_Addr_3_Size  = $00' F5 ~, @) j. K' X* b
  114. Sound_Ram_Addr_4       = $04009 ^0 d8 Q: R" m% Q* \
  115. Sound_Ram_Addr_4_Size  = $00
    2 N+ S+ y; @" O) K1 l8 \( I2 ~
  116. Sound_Ram_Addr_5       = $0500) C) j5 Q  W& t5 R, R- X- I
  117. Sound_Ram_Addr_5_Size  = $40
    + V* P4 N3 y! T& B' Y

  118. " {) `0 |& f1 H
  119. OAM_TEMP_ADDR   = $0300
    ! y! Z2 `4 P- v& v$ b( r0 X

  120. # e, a0 t5 X5 H: R0 U) G
  121. ;==================================================
    ! C. Y$ R& J" e  C) b9 P
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    - ^) O9 f; X" H* o- Q6 e
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    6 }- N/ i: m* E- N
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    : I" B) m0 {/ R( u/ ~$ _- e
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加12 q# X/ ~0 W! X9 J1 }! f( {% u- X
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1  ^& @- g7 S+ H3 `9 B3 S! i% ~
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 7 Y0 a0 C0 g4 u. ]# R  D  C4 K" f$ ^6 s
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加' Y7 @1 F4 q( S, V: ^
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    ( X5 L+ s6 h3 K
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    ! |/ e- B' U" w- ~
  131. APU_STATUS              =   $4015   ;声音通道切换
    4 w0 e) s7 T. X$ v1 k$ W2 h
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    ! z. |% ~' d+ \$ P. P% G- a7 Z
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通4 Z6 d& h* h2 O/ s5 S" \2 m
  134. ;==================================================2 G8 {+ Q% A  v; \
  135. MMC3_BANK_CTRL          =   $8000! @) h! @- J3 b% @
  136. MMC3_BANK_DATA          =   $8001
    4 U% Z( x$ P& Q- G2 `
  137. MMC3_MIRRORING          =   $A000
    + c! m0 h$ v5 n( b" C' p1 `' F
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    1 U0 F7 P+ X* v4 p5 K3 \, Z) u
  139. MMC3_IRQ_LATCH          =   $C0002 [5 T% [4 n5 d. N( Q; X, }
  140. MMC3_IRQ_RELOAD         =   $C001
    6 H$ v( ?: _! u. {: j' x
  141. MMC3_IRQ_DISABLE        =   $E000' e# w1 J# E0 U) @
  142. MMC3_IRQ_ENABLE         =   $E001: l+ a+ z$ R0 i: t. l
  143. - v- v' G' A$ b1 X9 d" R2 l
  144. ;==================================================
    ! \& Q$ h0 V, ?6 Q* O" y0 z. d
  145. PPU_Addr        = $02001 g1 |9 m3 t5 T# m& c/ d, M  P# `
  146. Palette_Addr    = $02C0/ M8 I8 H* J" O& _
  147. Sound_Bar       = PPU_Addr+$E0
    & y6 F: @6 _/ O
  148. ;==================================================
    # f* P: M1 E4 [% Y
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    - A0 g2 C4 @. k8 j& h9 O
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    7 s7 z9 e" Q, ~& R
  151. PALETTE_UPDATE_MAX      = $2C5 J7 |$ w2 `, E2 ]
  152. PALETTE_UPDATE_MIN      = $21
    6 c0 R  v5 G1 Y/ M* `
  153. PALETTE_UPDATE_INTERVAL = 60
    & D8 @: t% W0 y7 f$ B
  154. ;==================================================! F6 n& ~$ Q" o# j9 h  d* T
  155. Sound_Bar_Cnt       = PPU_Addr+$F0. W! g1 ]$ [" {- P0 h# i
  156. PPU_Cur             = Sound_Bar_Cnt+$02& E$ l8 P' Q4 b% H  d. A2 ~
  157. PPU_Addr_H          = PPU_Cur+$03' Q" [% Y4 `- d, [9 f. i
  158. PPU_Addr_L          = PPU_Addr_H+$04
      `& z( f. H- u3 S7 }" X& ^2 y
  159. Screen_Ctrl         = PPU_Addr_L+$01
    4 Y( P  O- q5 [. d% A
  160. Screen_State        = Screen_Ctrl+$01
    / L+ _, ^7 w; C/ V6 o" |- J
  161. ;==================================================2 U/ f7 H$ s2 K* G8 ^  [
  162. Use_Ram_Begin       = $50' C+ q. d! Y5 `8 G4 c2 k
  163. ;==================================================' f4 m( o* V% H' y) q' Q/ ?7 m9 s
  164. JSR_Addr_Op         = Use_Ram_Begin
    7 y: \( k1 a& W% ^3 s1 F$ j
  165. JSR_Addr_L          = JSR_Addr_Op + $01- W5 s1 K1 E) Y% J9 d4 }, T
  166. JSR_Addr_H          = JSR_Addr_L + $01
    - N- w9 K. O: R$ [
  167. JSR_Addr_Rts        = JSR_Addr_H + $01. A) r; E3 `1 V. N6 z: ~
  168. Data_L              = JSR_Addr_Rts + $01
    ( b. K, Y8 y( v
  169. Data_H              = Data_L + $01
    % P3 ]+ F7 P3 r5 K8 w5 X
  170. Data_Cnt            = Data_H + $01: J( i4 d6 m) m) D
  171. Data_Buf            = Data_Cnt + $01$ x; {( ^+ ]8 i+ ]  W
  172. Nmi_Time_Count      = Data_Buf + $01
    0 @7 V: h  h6 C7 l7 E( o
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01$ t% U0 F+ c1 J( n$ w! v- F
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    - y) S. c( x, @" y: D5 H2 A

  175. + G$ f. M* V1 h; }5 l! F
  176. ;调色板刷新标志. @. U; w% l9 f0 W% ^9 E
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    " ]& N: n/ d6 B" j

  178. 3 {9 ^4 u" S4 P/ l
  179. ;当前帧文本写入禁用标志$ R2 L, R! `, R& K$ R$ I' `8 B
  180. Text_Disable_Flag   = Palette_Update_Flag + $01. ?. _; W- }5 b$ P+ \  B; w: \

  181. 4 e' u. P6 o/ E  u4 d- T8 K% [6 y! @
  182. ;==================================================( ?1 T4 ^$ s& L2 [! g) r' v
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    6 _7 [- a# w1 I+ h, s
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条$ j0 [' w/ p* v9 c# f, ]7 M& i
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间3 L. P& z' F8 N6 n# N0 J6 Q4 ]
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    . l+ z+ x% L4 M. }6 \
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间; Q' }# y$ c$ ^
  188. ;==================================================
    , o* {' _6 E. V2 R% Q1 A5 _
  189. Key_Keep            = Text_Disable_Flag + 1
    , }, F, K8 Q* W* W* x6 G) z2 `) d
  190. Key_Once            = Key_Keep + $01
    % ?* s: V% G% W0 r" X$ _" s" q
  191. Key_Kemp            = Key_Once + $01; Q; D* y' R" ^1 C4 W
  192. Key_Temp            = Key_Kemp + $01
      j( d+ j2 P  n# ^# [& ?9 [
  193. Key_Getv            = Key_Temp + $015 J2 K0 H5 C( f
  194. ;==================================================
    # j9 c$ o* K* x9 n7 a
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    : {/ s0 F% n- l( e
  196. Music_Item_Last     = Music_Item_Cur + $014 t' G. u+ `5 h/ z( p
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集9 L" m, F# z. {/ N. x: B0 |8 ?4 E
  198. Music_Cur           = Music_Total + $01  ;当前曲目. G. K, t. o, h  `2 x  j1 u$ H
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目1 z; E& u, y8 e7 z  S& D  A
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    / }& e6 Z. }2 ^
  201. ;==================================================, ]; o5 X( U& X; `' q4 q
  202. HEX_Data            = Music_Stop_State + $01
    * X+ x! g% r9 _
  203. DEC_H               = HEX_Data + $01
    6 [6 E7 r1 u  |: U
  204. DEC_T               = DEC_H + $01
    7 U( |( ^2 Z4 ^% Q
  205. DEC_L               = DEC_T + $01
    * q6 @% z: ]- U, k
  206. ;==================================================
    ' V2 D& H& ^: x/ {( n
  207. Time_S              = DEC_L + $01$ U5 p1 _( P4 ~7 u  Z
  208. Time_M              = Time_S + $013 y+ _1 V5 o" |. a9 D5 I! ?
  209. Time_H              = Time_M + $02, R0 u  W+ w% [+ e+ _; Z: C+ {
  210. Time_Cnt            = Time_H + $03
    # U8 o. }, M+ C
  211. 6 `0 V9 e5 J2 k7 p/ o' G; E" ?
  212. ;==================================================
    & Z1 R: v, n( k4 t) e( j" H- u
  213. Music_Bank_8000     = Time_Cnt + 1
    + Y; ?+ Q3 T- ^
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    6 N* i3 z- A7 _4 y
  215. ;==================================================3 V0 V/ r5 Y+ S% K
  216. Scroll_H            = Music_Bank_A000 + 11 B7 i2 z. \( t/ F# T$ g
  217. Scroll_V            = Scroll_H + 1/ \- K/ A7 f& o3 p  \7 t! Y4 T
  218. IRQ_Process_Index   = Scroll_V + 1
    2 D- j+ I* ]. R& _3 F
  219. ;--------------------------------------------------9 ?3 n- J4 _) a. ]4 H, p1 g
  220. Page_Cur            = IRQ_Process_Index + $01
    ' q5 w) @' i1 ?! T
  221. Page_Cur_Index      = Page_Cur + $01
    3 }0 v1 \6 L; p) q/ Z
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    8 `0 u' `1 s: a4 C4 i3 v. F! ?1 G
  223. Page_Last           = Page_Cur_Cnt + $01
    + s7 S2 @, |7 e* [4 C
  224. Page_Last_Index     = Page_Last + $01' U$ ?; W. v# J. F& _% D6 j
  225. Page_Last_Cnt       = Page_Last_Index + $01! ~% X) V8 `1 P9 s2 E- i
  226. Use_Ram_End         = Page_Last_Cnt + $01
    1 E& B; n/ z8 G4 d/ u
  227. ;======================================================================; [0 q6 p$ }1 u" ~8 J* S
  228. ;音乐数据块, U' \9 A* W* `2 i6 ~0 B, e4 S
  229. 3 a) I" S) }# c$ a2 P+ P" v
  230. .IF SOUND_BAR_SHOW_ENABLE4 n. D' K! v) b

  231. 9 n) t7 J0 e8 _5 U
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    1 G* L- V5 h+ R5 a: o4 N  z
  233. .ORG $9000
    ! s' D4 L. B: h
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"* D' g& Q0 X6 y+ a% R% G0 L5 k

  235. % P- o5 j1 p5 t6 p
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK* B$ u3 c5 w" z
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"/ ~8 l& X7 E  Z, O  ~' `) O
  238. " c1 M# q* Y& b! n# Y
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    1 |! J/ l- z0 Q9 R9 M
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    3 s+ c5 q9 Y. k: X

  241. 0 Q- K' a* `/ I+ h8 g
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK, m4 ]8 D6 i; c6 n8 I, |
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    0 I+ O2 l$ k- {& N3 _5 @/ s% |

  244. 4 V& @8 W- E2 t. W" T
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK) d4 \% D% T% x9 m, F
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"( _6 V4 G& P( ]' b
  247. 9 `1 l3 u8 _1 E5 J9 o& n) O8 L& P) w
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    / O" D1 @: o& z! n5 e) ?1 H
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
      I& y- p. C1 a* \: {) Z

  250. : Q! b; }8 v& N! Z" R
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK$ k" |/ g6 \, p$ {7 R
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    5 U7 w  r6 j8 [% \2 W1 v$ W
  253. * U5 h, [8 f& Z1 g& O' Q% K) r4 h( U9 y) B
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK' a7 k- V- Y' |$ Q
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"! M& z  R; X# m5 v5 v

  256. 6 E& q- S# Q. h
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK" I( Q9 K1 V, B. a
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"7 o; Q9 F' ?' a7 I' s

  259. 2 z% d; l3 s: E5 `1 v) f5 G( l
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK1 l) ]7 k4 w, k( U$ u
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    + L1 y  \" g' ~5 V

  262.   |. l5 S8 I) T/ K7 l4 R0 \
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    & g+ q4 v3 _* _+ x& U3 a) F
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    + \" M, I0 F5 t" B& r3 h2 y' f! B5 N
  265. ( {! K+ P4 O; m$ s3 y- ^
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK/ @% h, p" A  W2 H0 H
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"$ F# ]0 _- v) l/ s; e3 j3 X$ D( k
  268. ) H6 Q0 r. B7 k% H: U/ \3 n
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    8 Y6 \/ @9 K8 P, ?. ^- f0 [* m
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    2 o/ L  p, B, X) |9 P
  271. 5 k( S9 x0 X! O) q( S6 T% {
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK# G5 K9 H/ F# l% R  r) I! R5 \+ k
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"- ]  \- D. D: b6 w4 {

  274. . A6 `$ F5 |4 e8 W: x. q' V
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK8 a# T( j" J# I4 P  H+ J
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"$ s* d) g( \5 R9 ]5 u0 a4 Y0 S

  277. ! l7 x  [( @8 g0 ?
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    , Y( }8 o1 }" i4 X9 s
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
      m1 C9 Z( h& |! q
  280. + \* S! [2 \- ~; i: t6 Z& q
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK9 J2 W* h. ?" u3 a& A: n  X
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    % D* L0 D$ K& G7 Q" n
  283. 6 D% M( j# G0 L
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK; ]0 D1 c; V4 Q- m7 @: A
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    - z, a- M( w: U6 i4 S
  286. . |" W0 v' b4 j& K) ?
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK8 Z/ D1 V! N% {0 `. m  T
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    # X* {! y  O; K3 E9 l! m; P7 ~
  289. * [& L; [+ h' [! l0 Q! v/ R) A
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK0 Q9 w3 s2 C3 q  f3 n5 K
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    % j& P3 j  a9 `; n4 G8 U
  292. + m: D- g8 \3 o2 d* C: F: t3 r
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK( u7 o6 [7 N! c" _6 x6 b- z8 k
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    ' X& }+ ?* l% s# z* Y4 m0 ?& |; @

  295. % M* W% b' r! ]) s' M( N' ^  n+ H
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    0 {4 U( k3 B* b7 w* q0 m4 T
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    ) ?' t$ C. J! y& A- |& S) [
  298. 7 `# j$ s' g6 F5 e) a8 d: @) @2 l& }
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK9 O8 Z- t' |. n( N% ]  N
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
      F5 E! Q2 l; S; s7 ^

  301. 1 L: Y  [3 j8 A$ ]4 `  ^( s
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    8 U' E+ H2 M- h9 d' _
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"( C2 c& o/ S. w

  304. 7 J. e# X1 r# B* t/ f
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    + W; ?1 l7 g" G6 q
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"9 X& e/ ?6 A; U! H% r3 h

  307. $ ?1 }0 x8 u( Q) ~/ s) y
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    / a6 S% V. X' J& B/ l* i5 k- m! Y+ S
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"& `. M* g, N0 O( s5 u& y: ^0 F3 v
  310. " ~( Q2 Z3 m3 ~& u" R8 |% Q3 B
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    7 y0 Z9 x5 V6 x/ n% m+ w* O
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    0 |! B" M3 y! p9 z. S
  313. 7 W' m! |0 r- V7 G) I" }
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    2 d# `) }4 w& h
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    # S! e6 [6 X% \9 n, Z' s

  316. $ P5 G( x" o$ K1 C* }9 G
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    & a+ }8 l$ W; `8 P( D- c
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"$ J  n  G  I3 ?; i

  319. ' N2 X0 s' i. }" Z9 R' _
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK! W* B/ P# H" \' K6 @4 D
  321. .ORG $D400( k& o- p! K+ R$ p* w
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"( e) e( J: z7 q# H( z3 L
  323. - g. C) c/ V& S& ?! |$ J6 t4 q
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK# @' j- R- h; H' l
  325. .ORG $D800, {$ o& o8 q1 k8 ~' R$ Q# Z9 d
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"  Y  _2 ?" |9 k  F
  327. 0 t& P, b* R/ y& h& {9 E' g0 ]

  328. . H1 y: X- L& I: k! N
  329. .ELSE8 X# M1 M+ D0 }' h  r

  330. 2 f+ b8 j" s' A5 y" [$ y! y
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    7 H" N& H6 Q: a1 K
  332. .ORG $90000 W; n9 f, F( m6 H) L) A3 ~* S
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    " V% p, I: e: a7 s6 A) N

  334. 5 q: J& G1 \; [* l
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK$ W, b4 U5 K+ {9 n  @
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"2 Z! F9 p* G- D9 m  L1 g3 L& Y; W/ W

  337. ( F$ H! I( r+ F( u/ t2 B1 A
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK- m1 Y' g# r  ]
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    0 Q: J) I( w( F/ v- o3 C: T$ r7 j5 Z
  340. : P; i( i5 q/ ^5 `4 s1 {
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK' g/ [; S6 G, {& {/ O5 m* [
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    & w2 b3 U$ S7 s. z4 x& E
  343. # v' Y, {  G5 J
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK" @4 T1 ~$ }# h- q& J
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    6 H4 Z- M% W: \# X

  346. 7 G' q( ]6 l* K8 r' D! ]) K* K
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    $ E7 {4 w/ S, r" Z! h$ w
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"8 F# `7 D+ D" j- y
  349. / z5 V% s7 c6 p# h. v
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK6 W/ K5 h9 e7 R% P: a
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"+ Z# X# ~: b) `: D3 x' H. }/ G7 v
  352. $ m5 [! Z% C9 R. x) J! R4 Q
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK. I3 M- b6 m# W! x0 N8 E' \
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    * f8 h  X/ k# Z2 E' k: V

  355. 2 O' z+ S- [/ h
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    5 S  K* S. ?. [* P: C
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    * K9 K, D3 {& s9 Q+ Y% }
  358. " e' l: W3 m  j. [6 C" ?
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK) ^! P3 s! l7 Z$ h+ ^2 Y7 F
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"# I+ h3 U2 V& v' _
  361. 5 d3 `- o8 g7 j  j
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    5 q# ?7 [2 v. K4 L  |7 O- n3 ~
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"  d% h, T( j! X1 r# ^3 u
  364. % B+ C3 [& A& j+ v$ w; I6 n
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    / H0 x4 J6 l6 O7 ~0 Z, T6 T+ ]' x. K2 \
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"6 N) c; w1 ]3 w7 `2 m& T

  367. - r' B5 {% s8 a! z7 _, J: Z
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    * o) Q: {/ N6 z7 ?
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank". t) w- l1 z! S6 @6 ~+ v
  370. . [6 z/ P* }' ~* @
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK; I2 k$ G+ Q. X' U$ G9 I( h
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"! T$ K! t, M/ d

  373. " [& W0 _- R" }; N8 Z7 f3 z
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK4 I9 N  ~  _! Z5 J
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"9 p8 p; p. }2 H- P4 J, G1 m) C

  376. 2 ?7 X' h* g% a+ g! `/ N2 c
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK9 ?5 l: D3 k2 I5 W% N( k2 T& m
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    ) c; I1 O( W, d' I+ S0 p

  379. - K% s) J) V+ f5 {
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    1 R& b. G0 ?  d5 M
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    5 ?& }& {$ e5 z: K: R% c, a0 o

  382. # o5 e6 N: ~3 m* c  [4 I
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    : l6 c5 B2 ]  i# n  `
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    ) W- e3 m+ {: S  L% P
  385. $ R, ]( Z4 Z* g  l+ u7 n
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK& x' }2 e7 W) f% a% R& D9 o
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank") Y, |; r8 }0 @2 ?: c+ b

  388. 3 O" k% a; ~$ w8 Y% f
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    2 M7 i8 g" X6 ?/ {& l
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ( R& V+ N$ x; i4 H

  391. - T4 P$ k2 a) b  V3 z5 d
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    + ~8 J0 O! K/ q. X2 X# p
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    6 ^& j+ ~' J( j3 M1 K- y( g) Z% p! E
  394. ( O6 k( Z" z3 I% Y
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
      J- f( ?7 S& F/ _- s
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    9 @( E) y) j5 ?; w0 k$ I! W
  397. - u. R" i" v# f2 S
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    6 }1 H4 M4 y. u) j: z3 J
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank": ^6 p- M0 r9 s! U; ^: x( c* x* b
  400. + \/ l% t6 u+ n0 e8 e' T
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    . r2 z# v. ^5 u( ?9 [+ p
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    ) r# e5 `: k* x9 f& i! C) B! O6 n
  403. 0 K. z; \, x. R3 n: i8 Z
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK- a. Y. v6 _0 z$ {$ W
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"& |3 M; `, Q& O( J( e' \5 e; _/ V

  406. # R8 H( Q# c2 g
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK9 B: e2 T* U* x; p% b( k8 _1 Y' z
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ; l+ _" a. T& I+ l

  409. % h" d. Y$ k, y- u' `$ i3 J8 y
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK$ ]# v6 j, M. X. o
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    " ~2 B4 v' h! K+ u" E1 \5 _7 L
  412. / ^2 ?$ U7 c6 F6 _* q5 F  c
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    " e! n/ T, t7 B) y) @5 j/ U
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank": h1 l% S$ E% H8 L) K3 D

  415. 1 N$ q( v: P9 \6 v
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK* [' K. O: ~: K( x! [+ Q
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ) Y1 n9 |& n0 T

  418. 4 ]: C6 o8 Y0 K7 C9 o; y
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK% l+ c# k( H$ k" ?( w
  420. .ORG $D4001 n: q9 D% q# Q6 u, Q+ ~9 h- ^! a
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"$ g- V1 ]$ E9 u) k# P; R# [4 J( e

  422. * E2 H" K1 G9 ~
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK  V/ ?& v* `2 A3 E. X
  424. .ORG $D800
    ( U. ]/ N; q% `, V
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    5 s- R  q2 n3 u7 v

  426. # `( C) K+ s# L! e% t
  427. .ENDIF( g, g7 m. l. u  N
  428. / k, f( y' m$ U, h: j" l& E
  429. ;CHR图形数据, t0 ]3 J1 W5 x% p/ N
  430. ;======================================================================! y! ^7 L; `& k/ T! P" m
  431. .BANK CHR_DATA_BANK! o0 [& T* Z6 S1 D6 m) M& ]
  432. .INCBIN "chr_bank/chr_data.chr"
    % T1 l% d  Z4 l) V
  433. * f8 }& P: e$ |% s( o
  434. ;======================================================================
    / t. `. L+ F8 C3 z+ ^# M
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK& v* P5 l+ H, L& K6 A8 ?! C
  436. .ORG PROGRAM_ADDR
    8 ^8 k# Y  D' ]0 D6 ]5 D3 o4 x' Q

  437. ( G# n- T/ |. E4 O* T% U# m1 b. ~; J4 c
  438. ;==================================================* u5 a: I/ ]$ O3 ^: g8 I. ^
  439. NmiProcess
    % `4 t" W/ s% O! ^

  440. 5 b" [3 w' Y4 j- n
  441. ;关闭屏幕控制' a8 L8 ?4 F# o2 p6 s# ^. h$ b
  442. LDA #$00$ `; A! O: z$ e3 K5 G+ q% w
  443. STA PPU_CTRL7 b8 Y4 [7 Q' v' d9 _" W' {

  444. # Y5 C8 ^8 {4 n
  445. ;没播放音乐就不需要触发IRQ
    : l0 V, y' c# ]+ F
  446. LDA <Music_Stop_State( I3 l8 w# m4 ?4 O8 t3 P+ h
  447. BNE NmiNormal
    ! f# q2 u9 y% i/ `; f# E! l( v( I

  448. ) P; H- C" V$ P, M1 W2 i
  449. ;重置IRQ索引. j  O( E% u  B, a- [% b- h
  450. LDA #$00
    3 I4 C' G; I/ v
  451. STA <IRQ_Process_Index" c& H# c+ u" t
  452. 0 v; i6 u1 m- b1 v
  453. ;时间秒数为空则跳过
    ; ^: j# X& q) m9 Y, ?
  454. LDA <Time_H
    9 G* ?7 }' r2 Z# P' m& t
  455. ORA <Time_M
    4 k$ m* Z$ a% d7 x" {
  456. ORA <Time_S' v' O% r; w: x
  457. BEQ EnableFirstIrq
    - T7 ~2 a' h  o) F2 O/ B1 ^. L! J
  458. 2 M+ [$ n5 ]4 f2 U3 e3 A
  459. INC <Scroll_H
    7 K3 c+ d# T8 Q6 }
  460. % K. n  `8 D. P, B  z# s
  461. EnableFirstIrq
    ( q3 Y5 j4 X: o8 @
  462. ;80条扫描线后触发IRQ
    6 i6 @# |6 C8 x4 V5 l2 I3 L8 z
  463. LDA #IRQ_SCANLINE
    ' Y/ H" T7 |# G: @& b. o/ a- b
  464. STA MMC3_IRQ_LATCH
      y# z5 E* P% Q
  465. STA MMC3_IRQ_RELOAD
    ( Z; ~# t8 K  e( Q) V
  466. STA MMC3_IRQ_ENABLE
    - }6 j* @  z* G7 j3 M
  467. CLI* ^- m% m( w) |3 w; u1 w, O
  468. # w( b$ A5 S' D' F
  469. NmiNormal
    ) A, ?$ O2 x+ z$ }4 K. I

  470. 9 ^3 M: {( O! n# y9 t- i/ P
  471. ;处理PPU图像4 T" P, x9 `* u2 [0 y
  472. JSR PPU_Proc
    1 ~# C; l6 W, U( U4 k

  473. 9 r; K; e0 |% b2 o7 L
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    ) n8 g0 ^/ G: d' c- N
  475. LDA PPU_STATUS
      C/ ]0 C! I. V8 Z, f6 }
  476. ;LDA #$00: k" |; G. {$ Q: N5 [% l
  477. ;STA PPU_OAM_ADDR5 Z2 x4 F/ e$ k5 C& ^
  478. LDA #OAM_TEMP_ADDR / $0100
    ! j& ^& s0 B1 t; R
  479. STA OAM_DMA
    " D# b* R+ A6 N" _4 c& C
  480. * V8 ~! r; |' n
  481. ;启用NMI中断
    ) Y$ E, O" U- Y: P7 @
  482. LDA Screen_Ctrl
    / ~+ K* Y& Y7 O* T& v  O+ k
  483. STA PPU_CTRL
    0 Z+ H, F% b/ Y. k

  484. ( Z* H0 _# Q+ |) l+ j$ Z9 ]# f
  485. LDA <Text_Disable_Flag) b7 ]  B/ H5 B" U( ]
  486. AND #TEXT_DISABLE_RAM
    : D( M  `/ a, ]% k0 |
  487. BNE Nmi_Sound_Play( }+ J) p- W1 G- D% }) ~" B  g

  488. * L+ A1 F5 s' q" `1 r, Z- U' _
  489. ;处理手柄输入8 z" G; [7 X" E9 g
  490. JSR Key_Proc! z5 y" }0 a" g

  491. : Y+ W4 h. \3 g8 V6 U, r5 i
  492. ;切换音乐(手柄触发)% B0 u8 A2 ?- X7 g: l
  493. LDA <Time_Wait_Cnt
    ! c7 F3 ]* V+ S2 r' `+ z
  494. BNE Nmi_Cursor_Arrow
    $ H6 M5 @4 z7 }- Y* I
  495. JSR Change_Select_Item
    1 j& q8 B$ R' ~& F$ f& K! t- H8 Z
  496. 7 f8 C+ W! y" S( g. ]  Y
  497. Nmi_Cursor_Arrow2 L& ~9 N# Z7 z  m

  498. 5 a0 }! l1 p# b
  499. ;处理光标箭头" a' ^' z' L- [. i  V$ v- r% D6 }
  500. JSR Show_Arrow% D3 A& O& R: W! c1 |- y

  501. ( n( K, R! j$ `$ k
  502. ;更新调色板
    : J' Y' Q+ U9 S. C  P$ J' Q
  503. JSR Update_Palette_Data3 Y2 c* f, W% c  e3 `" E' Y4 r: X3 F

  504. # I0 _9 a7 l' i
  505. ;显示时间(缓冲)
    1 C% `' M; D% m8 E9 _
  506. JSR Time_Show" U- ^- i0 x9 R

  507. 6 H6 c& Y" p+ H% O
  508. ;音乐显示(缓冲)6 O7 }  z# i; P
  509. .IF SOUND_BAR_SHOW_ENABLE/ [0 d4 A4 ]5 O2 t3 q
  510. JSR Music_Vision0 j7 y+ q( }2 ^$ h; b7 p5 v3 Q
  511. .ENDIF" m( w- P& B+ k* D  K1 h
  512. # k$ b, G$ w+ F3 c
  513. Nmi_Sound_Play/ O% X7 o% f6 l% J0 |6 l$ o1 {
  514. ;播放声音
    2 a0 y$ g) X7 z; \, l* B4 P9 W- R
  515. LDA <Music_Stop_State0 m( I* T- O0 U5 }6 y
  516. BNE Nmi_Time_Wait_Set
    ! Z8 G# a9 O* d8 x9 z. {8 L
  517. JSR Sound_Play_Proc
    * F) D5 V2 Q) l9 F$ G$ P
  518. : Y& G& _' J+ j, Z( R+ M; a( L8 Z
  519. ;播放计时: K1 r, |/ f, R' z0 A# }% V" S- T
  520. JSR Time_Count
    0 V4 o0 M) S: M7 N9 J+ D

  521. & v. {% V  y& g8 b" \
  522. Nmi_Time_Wait_Set' s$ b" Q, W7 h. x- i4 A
  523. LDA <Time_Wait_Cnt
    ! C! a6 v* c- X% x. ^
  524. BEQ NmiNormalProcessEnd! s, \8 j+ |, @5 R1 }  B  ~0 S
  525. DEC <Time_Wait_Cnt( E6 O& x6 _7 G0 T6 Q
  526. NmiNormalProcessEnd% X+ T" F: @; |! i5 J6 S- N' C

  527. / q# ^! K. D( Z( t3 S" m7 w
  528. INC <Nmi_Time_Count7 \! B  C- K8 P7 {+ v" `! F( }# r2 Y

  529. 0 U$ G: p  V/ B9 Z3 x3 G( g+ L
  530. RTS( ]1 ^& E' w$ D6 R

  531. 3 C3 q, d' W/ {: @" [7 Q: A
  532. ;==================================================
    9 X9 c1 Q( \- V& B! n6 u, |
  533. Init_MMC3
    4 N& U' _; z9 N- x. N3 ?
  534. ;==============================
    / g  ]$ m" O% I( {% l
  535. ;禁用IRQ- c! L5 d# p% f( s! n/ p. r
  536. STA MMC3_IRQ_DISABLE
    0 n0 ^. E% `' y' }3 O" x6 z
  537. 3 r# M0 C' D% M- I& Y
  538. ;水平镜像1 Y" S; ?! h! d) i9 H9 `
  539. LDA #$01: P4 s$ L# y% U. e, J% x% e
  540. STA MMC3_MIRRORING/ e. x$ S* h) E1 b1 P9 L# Q- f$ T

  541. ) i) u# Q* z8 w! _4 K2 l/ a
  542. ;初始化图形bank
    ! c, K8 b4 k* [
  543. JSR Init_MMC3_Chr_Bank
    " E: \" R) e8 g" u) G9 z
  544. " a8 o& q; E& }* C* w2 o
  545. RTS
    6 j) J: D+ g; P: Q
  546. ;==================================================
    - H3 W% o6 s' T. m% F1 T: d# b( p
  547. ProgramBegin;主程序; \. f. [" X4 x# Y, `
  548. LDA #$00' \, x0 D+ ^; Y, d" ~) M9 X) K
  549. STA PPU_CTRL
    ) r, m) d$ G5 G& Q# E
  550. LDA #$00
    6 X) }' e# p; o; g" Z5 g3 g& A. e7 P
  551. STA PPU_STATUS$ {. I+ T- U! V- o/ t- H
  552. STA PPU_MASK
    7 f5 ~. G2 A6 k
  553. STA JOY2_FRAME/ E% @3 c! ?8 [! |5 h
  554. 9 o  [# s5 W. |6 P! B
  555. STA PPU_SCROLL
    + r1 D, _7 D- p
  556. STA PPU_SCROLL8 g5 J" U2 h3 d+ c! S: F! ^' [! S
  557. ) g0 U. G" _. T7 H2 d( V% a
  558. ;==================================================
    9 p5 Q: I6 `2 }1 _' M# b7 x: [. \
  559. LDX #$FF( f' p" n2 [) S) _" s
  560. TXS
    / \2 e8 G9 [$ n7 f& g

  561. + A4 g& U( w* g2 N/ Y0 f9 A) K; p
  562. JSR Init_MMC3
    & m& P9 [; M; l, ^

  563. / w7 L1 U( n0 i7 r
  564. LDX #$02
    6 j5 ?$ z5 o# h4 a; K
  565. Check1
    1 S+ p& z9 ?+ v, w; Q
  566. BIT PPU_STATUS
    & c$ Y$ o. a3 H/ i
  567. BPL Check1* g$ o. l( w, C2 l. ]+ n& d8 }
  568. Check2) ]/ E( d& j# x3 q0 C9 o
  569. BIT PPU_STATUS. B+ g8 G: x/ j$ T) M  @' R$ q
  570. BMI Check2$ L3 N2 c) M2 C, o% I! d: \" J
  571.   ^9 H8 Y! P1 a0 f/ z0 G
  572. LDA #$0F
    ! v, @# x' t# c4 q0 l1 O. t& O
  573. STA APU_STATUS
    2 e% f% d$ p9 `/ ]4 S7 p* v3 i
  574. LDA #$C0
    3 I9 D4 R7 Z7 c7 G
  575. STA JOY2_FRAME9 @: K9 b  g7 b! ]  b3 T0 e
  576. $ w; w4 M0 d1 d- Q) O: A" o4 ?5 k
  577. LDA PPU_STATUS2 B2 o, G1 \5 ~7 x, z# }0 O
  578. LDA #$107 k: F, R& a1 y# |9 ?
  579. TAX& f5 v0 a* c% G. `+ {: r
  580. Check3
    3 R( E4 z+ |7 @3 z
  581. STA PPU_ADDRESS
    8 D8 _& N. B5 Z
  582. STA PPU_ADDRESS& u: ]' X: ]! h5 f2 i
  583. EOR #$00# f: _5 K. z) b4 Z# f6 [) c
  584. DEX$ H% Q* b& W3 _
  585. BNE Check3
    . y9 N1 |# t) t, d+ T( a% R4 b
  586. ;==============================
    6 K0 ^- B/ \3 [& @  E4 C$ W
  587. ;调色板清空8 m% o/ y( m7 u5 O3 H
  588. LDA PPU_STATUS+ y0 _. j4 b/ E5 V9 A
  589. LDA #$3F
    1 [) v# s6 I: H9 U
  590. STA PPU_ADDRESS% Z7 B$ w) F- ?4 Y( f9 o$ ?7 r
  591. LDA #$00' x6 N* ~0 r/ W) F; m1 F1 K
  592. STA PPU_ADDRESS, p* O" K( E2 y) A$ T1 \: L- M
  593. LDA #$0F
    5 ]% r: z, ]* y
  594. Palette_Clear
    ! F9 U2 B4 B* L
  595. STA PPU_DATA8 J% z1 m6 Q7 k1 d) J) p! A4 l
  596. INX
    8 e9 q$ z5 `; e( T; u3 {! s
  597. CPX #$20
    % a  o8 I9 ?) i% B: }
  598. BCC Palette_Clear) C4 o/ z! j, c/ i+ `/ b
  599. LDA #$00
    & b% m/ V9 i9 d* f
  600. STA APU_STATUS* i( Y6 p! q1 _' u4 f, E7 ^

  601. % C$ \& @# h$ A; L
  602. ;==============================1 O7 A9 K: \7 Y# y
  603. ;RAM初始化6 J: _8 e/ j( t% l$ B$ X
  604. RAM_Clear_All
    3 L+ F# W, ^" y: H; D
  605. LDY #$00
    2 K6 j  m: [$ a3 U. N
  606. LDX #$08
    / e, W# T2 q* z# z; B
  607. LDA #$00
    * g# V$ _, a/ o" d1 X. K6 J( \
  608. STA <$00# B7 a% ~) D! b" g! `/ P) w9 a8 K1 N
  609. STA <$01
    / ^( y2 g# H! K0 m0 X
  610. RAM_Clear_All_Start
    ! B4 o' o; E& ^$ P: t* }% d7 O
  611. STA [$00],Y( t$ ~$ N7 H" B
  612. INY
      ~1 ~( m) s! G5 k) [
  613. BNE RAM_Clear_All_Start6 a1 h6 ~# S" ]; ^0 Z
  614. INC <$016 O1 B& \3 S* i0 [9 k' z
  615. DEX$ t7 [" `) S# s' C4 P
  616. BNE RAM_Clear_All_Start
    & q; Q1 e! w. G2 f8 _
  617. 0 s3 m1 ]4 \+ p- U7 _/ Q" w0 i
  618. JSR VramClear: }- U0 P2 q0 C
  619. JSR VramInit  }7 X4 O2 M( d7 z
  620. JSR OAM_Ram_Init1 O$ v, q" i8 o: b: r1 w- a
  621. JSR Init_Palette_Addr5 d) f$ v, r: n

  622. . U! r7 m# ]+ B5 J
  623. LDA #$FF9 N: j% L+ O. F( @: T- c" |/ h( H8 W
  624. STA Use_Ram_End
    ( V- X! q% x% J" g6 Q# S) H
  625. ;==============================
    3 s$ R3 y, Q. @' p/ @
  626. ;初始化背景调色板/ T% d8 F) I& X# R5 m( T* z
  627. JSR Set_Palette_Color
    ' o  b& Y' ^8 t& B$ h7 l
  628. JSR Set_NameTable_Attributes) F, c# [$ j9 b. y  f
  629. ! x  E# v& x4 k
  630. LDA #$00
    / \; P9 c) Y& Q; S' V8 D
  631. STA PPU_OAM_ADDR8 [7 p8 `1 k* m0 Y$ h
  632. LDA #OAM_TEMP_ADDR / $01006 a9 j0 E' k8 j3 Q( }
  633. STA OAM_DMA
    2 C1 c% b9 F/ H2 D1 ]
  634. : {5 u1 z* e+ D2 L( K! x) B! \
  635. JSR Sound_Reset_Proc2 o  Y1 K( O9 `9 X# k( Q
  636. JSR Set_Sound_Total
    : F' R# B% A+ z# X/ ~

  637. 1 A2 M8 \" {8 I: L
  638. Init_Start_Music
    * L1 b, P: V# V% t7 ~- U
  639. LDX #$00$ D. v  \+ M% X: y
  640. Init_Start_Music_Write# A9 E# h5 V5 k* s  T: P
  641. LDA Sound_Start_Port,X) {( V' a3 X1 f& Z* G. @
  642. STA <Music_Cur,X* \! l% Q2 K) i$ g2 J) P  i% c8 T% o0 V% \
  643. INX& w, i4 I2 p6 i/ R! u
  644. CPX #ITEM_MAX_SIZE- N& y0 D: b& R: D4 s
  645. BCC Init_Start_Music_Write$ ^1 b+ p# R. g. C9 H- c
  646. 9 T7 M5 Z/ A6 M# i+ U! i* n
  647. JSR Show_Music_Text+ x  ?0 c& }9 P8 K
  648. 6 F2 ~2 g7 o, _3 h
  649. .IF SOUND_BAR_SHOW_ENABLE, f: ^* F0 _+ c' Q5 N: J( T
  650. JSR Sound_Bar_Text_Set
    0 I( C0 F# `5 _: m
  651. .ENDIF
    0 [- @* K3 L" V# t$ p
  652. ! t! }! i! Q6 \' e4 L# y
  653. .IF Track_Name_Pos5 R" W& J6 x9 o3 Q3 ^! R
  654. JSR Show_Track_Info
    5 z. u% w, Y1 U  N  M
  655. .ENDIF
    4 u6 I3 i. M4 w6 f2 k. p) d& m

  656. ; G. W- A2 R7 k8 H/ D
  657. JSR PPU_Proc+ S% p3 H8 E( Q
  658. $ g  f" }: W, C! _! U' g( K! g
  659. ;==================================================
    : k$ b& h& p# ?" h* ?* h6 g/ f/ W
  660. ;音乐bank初始化 2 W' `' I8 M$ |) X$ F/ M: l
  661. JSR Init_Sound_Bank
    7 {* b  y/ L5 R" G8 N9 C

  662. 7 ^; @1 ^: d- H
  663. JSR Music_Show
    + ~+ a( `& O* \/ P+ t; m
  664. JSR Time_Show
    % g# H$ A- k. i) K# Q7 S
  665. JSR Music_State_Show( q) f% H) B3 o8 v: x' B; O% @
  666. JSR Time_Delay
    ! c5 t: X  u/ D' J2 E
  667. - [) e3 o' s: }! i6 K0 c, R, d
  668. LDA #$01
    ' H3 [7 F1 `8 b2 y7 q3 Z
  669. STA <Music_Stop_State5 m1 @" N) E7 ^- _

  670. 3 s% E! R. }7 |# w1 t+ d6 f8 b
  671. LDA #$88! c$ y. d5 h, y* s& }; m$ e# Z
  672. STA Screen_Ctrl
    - T  \" R( H4 C" I6 x, I
  673. STA PPU_CTRL
    . E) w# r2 y9 G) ^, u% t

  674. % @6 R; [( I$ z% ?5 p
  675. JSR Show_Page_Text$ j6 P" i' l" E; K8 X

  676. # a1 L' k8 f) I; p. h  \9 y
  677. LDA #$10
    7 {. S( z. K" b8 u- L) x8 c
  678. STA <Time_Wait_Cnt
    % d) S3 |2 Y/ T& h9 k" q4 a
  679. 5 {+ E' k# k" F
  680. Wait_Time_Over+ e+ b0 R! C2 [; D1 h9 |( u: }( ?
  681. LDA <Time_Wait_Cnt
    + s, K4 a: p+ c2 `
  682. BNE Wait_Time_Over; i+ ^7 ^0 X0 b& B; O  r% ?
  683. / X& g6 y" P/ v, m
  684. JSR Show_Arrow( f6 D5 G/ o: s1 t" q, h
  685. LDA #OAM_TEMP_ADDR / $01003 y# }3 A; b* C( Q/ m% P
  686. STA OAM_DMA
    . i7 k. J) \. I2 {1 a0 c! Y

  687. 5 a. A' ^  P! n$ J
  688. LDA #$1E
    $ U! f$ ]3 H9 g" N! ^
  689. STA Screen_State
    4 U" z, j: J! N/ B: j  P

  690. / K; N8 M6 T3 u0 k  {
  691. LDX <Music_Item_Cur' m6 I+ G: `$ V* ^
  692. LDA <Music_Cur,X
    % ]; ?$ `; V! I1 r: B2 @: K" s. P  c
  693. JSR Sound_Init_Proc
    " }$ T8 S4 W  c- k1 l
  694. : z4 u9 n- t9 ~% A" a0 }
  695. CLI
    7 E6 h0 t  W) g% |" u  N- ?
  696. JMP MainLoop$ f9 ^# o% d- Q

  697. , P1 T: h/ u4 Z% L- H; d0 H) k
  698. ;==============================
    $ K* ?- M6 G) [& x% H$ @) H9 Y- C
  699. Time_Delay;延时等待: g# Y! }- \  ~2 L" n  W
  700. LDA PPU_STATUS3 Q7 y- ~. k6 p9 X% b7 R
  701. BPL Time_Delay
    $ P! }+ U' `/ W( `# R
  702. RTS* [3 C; u. b* b% i/ G( u
  703. 0 q7 V7 @5 Q: h7 s8 V  G  W- a
  704. ;==============================. y! U0 D0 _% E( Q" U! T* c
  705. OAM_Ram_Init;初始化精灵内存5 B, Y4 C& n2 v% H- V% |
  706. LDX #$00# e- V" n, @9 {- V1 J4 `& O; c
  707. OAM_Ram_Init_Write: G) n7 q/ q: p+ {0 o0 R
  708. LDA #$F8
    : z+ s$ t% D4 G" ?
  709. STA OAM_TEMP_ADDR,X% X/ l4 L! W( C( h9 ^* n
  710. INX
    ; {% D* b% `. U
  711. LDA #$F8  Y; k- J+ n( H+ C0 R) P- w% N
  712. STA OAM_TEMP_ADDR,X
    7 A! Y; w% S+ m- S" {' x
  713. INX: J1 g- ~% l& L4 h
  714. LDA #$00
    ; O( c6 H' a$ r
  715. STA OAM_TEMP_ADDR,X* B6 e, P% |, F8 g0 T0 Q
  716. INX5 V, v8 ^$ }/ Y: S4 K6 V
  717. LDA #$F8
    6 `, f' Q. b6 e  @+ \* |
  718. STA OAM_TEMP_ADDR,X
    4 F7 P) ^4 ]* K& L' {
  719. INX
    6 Z& a% m- }5 Q0 L
  720. BNE OAM_Ram_Init_Write8 d, p4 i2 w- k9 a- y  ^& s7 B5 u
  721. RTS5 b3 Y% @+ e/ r: ?& X. l6 ^7 q
  722. 8 ~  V5 x9 m  e2 L) e
  723. ;==============================% v7 ~- w5 [, Y
  724. VramClear;初始化图形内存
    4 i! h! @, e" F9 v8 E! A5 r( ], K
  725. LDA #$202 M& b' t$ j" |4 N- M0 t5 a
  726. STA PPU_ADDRESS# F% v. k* i9 ^1 i' {( s
  727. LDA #$00+ U/ q5 k4 F8 P1 {9 J
  728. STA PPU_ADDRESS
    4 r4 p" Z4 s8 ^  ]* d3 O
  729. LDA #$00
    7 w3 G7 x; m) P; Z& y9 T
  730. LDY #$00
    & f2 L& A4 B: l" ~5 \5 d
  731. LDX #$104 ^1 P+ F. T5 M4 G9 R1 v- S
  732. VramClearWrite9 [2 K; M3 c1 B
  733. STA PPU_DATA* n. e' @- @7 J
  734. INY) ^! Y7 ]3 g) T; F5 V  h
  735. BNE VramClearWrite) R3 V1 G2 Z$ t. l' _- O  E
  736. DEX7 C$ h; S1 b# I$ j/ L7 n/ H+ F% o% N
  737. BNE VramClearWrite
    7 U+ V! o* Z6 a7 U) Q" `* \
  738. RTS
    3 }# P' F' g' {# f! L- n5 {- {
  739. ) {2 f' b3 u. @) n) W3 c7 M
  740. ;==================================================* V8 ]5 ~; o) H
  741. ;设置MMC3图像bank
    / N$ U3 q9 p; M8 m2 \  G& m+ C
  742. Init_MMC3_Chr_Bank
    & ~& j9 W4 E3 G+ ]9 [
  743. LDX #$05# k! s. D+ `" G* o
  744. Init_MMC3_Chr_Bank_Write
    + ~% c7 \$ @" y
  745. STX MMC3_BANK_CTRL
    $ ^# o0 u& y5 Z
  746. LDA MMC3_Chr_Bank_Data,X9 T0 h0 r* w& \4 {) ^4 C* @  t
  747. STA MMC3_BANK_DATA( w, G) f  t1 _' b, Z- d6 P' P  _% }
  748. DEX% U5 `/ K$ u# z8 x* s9 X  A* D
  749. BPL Init_MMC3_Chr_Bank_Write$ M3 k3 l: ~+ D
  750. RTS. U1 e( e! Q6 s& S+ d& T, M- m% ^
  751. ;--------------------------------------------------- M0 V" M: {) C" K% h$ }- Z; b
  752. MMC3_Chr_Bank_Data3 c: K" ]. E+ T$ X# F: l
  753. .DB $00,$02,$04,$05,$06,$07$ H% Z# Q2 `' X
  754. 6 ?7 j' W: M  O0 `8 R9 b% t
  755. ;==============================/ d" B2 m+ D7 _
  756. VramInit;初始化图形内存
    8 ?% J8 l7 l+ c/ o0 q% E) E
  757. .IF CHR_RAM_ENABLE$ t1 }+ t( `8 [
  758. LDA #CHR_DATA_BANK
    + f' c: D# K- c: d5 f7 T: v
  759. JSR Switch_Bank_A0009 P1 e2 t( [; f
  760. LDA #LOW(CHR_DATA_ADDR)
    3 O; C3 T  W; ?+ `2 k9 ?2 P
  761. STA <Data_L
    ( ^6 D! p- `$ O2 R
  762. LDA #HIGH(CHR_DATA_ADDR)3 r8 y* Z- A/ i$ y: ]' e
  763. STA <Data_H
    % B) ?1 s# i; s0 d3 g
  764. LDY #$00
    * J- N3 r" a  H& q& c" S
  765. LDX #$20
    " U- @- N* q- d" v
  766. LDA #$00( p8 p- y, l$ P2 r
  767. STA PPU_ADDRESS% u( v" l  _: y) Q$ `3 q8 o
  768. STA PPU_ADDRESS  R0 j1 V! X* ~# f8 W( A. c) O
  769. VramInitWrite1 [4 `7 @& g- P
  770. LDA [Data_L],Y
    6 j: x0 v3 E3 u% O9 t/ T
  771. STA PPU_DATA6 D$ P/ v/ A9 g( d3 l- D- W
  772. INY
    3 F& n! D/ ]( l2 L2 r& D' G% j. s
  773. BNE VramInitWrite2 o" b  }* ?7 l' S+ C
  774. INC <Data_H3 I1 H2 G- J' _' O0 |% q! E
  775. DEX) T4 `3 _8 d6 y2 z0 P
  776. BNE VramInitWrite
    - B2 X  J8 s/ I# y) s9 g/ c
  777. .ENDIF
    7 {) h2 M# g+ D3 F
  778. RTS0 Q$ l1 [" B1 l- Y5 f! o
  779. 2 I$ _9 R7 T/ C& h
  780. ;==============================
    " [& b" t& w# P4 \1 t& G
  781. ;音乐切换  o& P% W0 ~& d* L0 ^) K
  782. Music_Play_Change$ j' W( p+ q) l' G. t+ a
  783. LDA <Key_Once; v4 s! g+ S% \2 k( q% W
  784. AND #$FF
    8 Y8 |3 s/ [7 M; g& \& f
  785. BEQ Music_Play_Change_Check. Z- {& a7 m7 o7 Z: S7 ?- J

  786. 2 @  p! _5 S. |/ l$ y) A. `) r' v
  787. ;禁用音乐条刷新
    % |# y" D8 U5 Q& |
  788. LDA <Text_Disable_Flag
    2 p# G* v" k. I. |4 Z7 o5 B- \
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    0 b7 c' B" F/ X6 J5 l  D* c4 _
  790. STA <Text_Disable_Flag
      S0 V8 s- @3 o- M, D; z

  791. + Z3 ^* Q' c) B* S9 m) u# q2 g' u
  792. Music_Play_Change_Check
    + d- J6 {& E5 s
  793. Music_arrow0 A, n/ U5 c" J% ]/ s
  794. LDA <Key_Once" I. k" C) q5 P: a* c9 r
  795. AND #$0F9 I+ Z" h3 v9 P' f9 o
  796. BEQ Music_Play_Change_End6 V& C' [2 F3 R
  797. JSR Music_Track_Change7 z! z! n0 z5 Z* C3 G3 E
  798. JSR Sound_Reset_Proc
    " n6 y: b. i- W5 \
  799. JSR Music_Show0 C( N. g6 e% F8 H2 `( R( c
  800. Music_Play_Change_End
    ' ]( }- |/ h: S  `( c6 d" i
  801. RTS+ p+ n  r* v9 h% E- E% K! G0 P

  802. 4 p" I  o* l$ L7 i9 ]+ H
  803. ;==============================4 k; j+ M: I5 u& o8 J! x3 C
  804. ;音乐曲目切换
    & ~% _0 I4 B2 C3 D. R  }
  805. Music_Track_Change; y" p5 F! o1 C! l9 _0 ^6 ?
  806. LDX <Music_Item_Cur5 t/ \* |; e5 _( E  p
  807. LDA <Music_Cur,X. ~+ h2 i0 a8 @6 [. N  W
  808. STA <Music_Last+ G" T5 E/ A: r0 o/ d
  809. Music_Decrease
    1 V! f" o- L' i3 r
  810. LDA <Key_Once: z& G; {4 n! @1 n6 S. x" p
  811. AND #$42/ \6 _2 r/ S1 N
  812. BEQ Music_Increase
    / k- c$ O4 A( Y. P" G+ c2 p0 _9 u) v
  813. LDA <Music_Cur,X
    ! X% i, |0 T0 P( x( y4 I  p$ R
  814. BEQ Music_Increase
    ) V* K( z5 q. m$ W9 |7 e$ @
  815. DEC <Music_Cur,X
    ; r3 v- E0 c, u6 _* a
  816. Music_Increase
    ) e( ~4 q2 d+ X4 X1 N8 G6 v6 N. X
  817. LDA <Key_Once8 X- w+ N7 o6 I. e* z3 }
  818. AND #$81
    7 R2 v! V, h* H  T% U2 |/ b
  819. BEQ Music_Decrease_10, H/ r$ w6 {& O- B+ a7 H/ q3 e
  820. JSR Set_Sound_Total
    : x& q. @8 Y7 X6 ?2 h  v
  821. LDA <Music_Cur,X
    : q9 ]* @+ a1 ]( F/ s
  822. CMP Music_Total
    5 ^4 g' n/ R% j* S
  823. BCS * + 4- N( s/ W' A* j  d8 f
  824. INC <Music_Cur,X& f# M* k& ?  O& o, {
  825. Music_Decrease_101 j2 {% Y% r- D+ l4 p- z
  826. LDA <Key_Once/ f& x5 K( }6 s* i  L8 V: e
  827. CMP #$04
    ( m) s: C! r1 I) t: Q2 m
  828. BNE Music_Increase_10
    3 x, R( @. h$ \! f
  829. LDA <Music_Cur,X4 _$ V6 i4 {2 H
  830. CMP #10
    & H/ s4 i6 {" @. M+ C3 ]- P
  831. BCC Music_Start_Song_Min
    . d+ l( [) ^( x# u! i% y" h  v
  832. LDA <Music_Cur,X
    . m/ }0 t2 U7 Q
  833. SEC
    7 L& S, M. [( c) [" W6 ~5 d- c. |0 E
  834. SBC #10- D3 z1 {3 c$ g
  835. STA <Music_Cur,X0 U  O+ L, X/ I, c/ Y) b* Z( ~
  836. LDA #$00+ ^/ u8 J4 G3 M+ e' a+ L5 _6 O
  837. BEQ Music_Increase_10
    - T# q6 r5 p2 n. k
  838. Music_Start_Song_Min- \8 J7 Q* e7 ]: r
  839. LDA #$00! o2 P/ t/ W  i) ^; I
  840. STA <Music_Cur,X4 `4 C. F6 p2 d2 v. b" \
  841. Music_Increase_105 b, n' b- E+ C% P. _
  842. LDA <Key_Once/ w6 U1 `2 m( \0 q: P" j
  843. CMP #$08
    - }. H  Q/ Y% m5 t, r5 P$ z
  844. BNE Music_Track_Change_End5 k3 d( }$ f) |& Q1 p
  845. LDA <Music_Cur,X; B: J5 f2 F5 n
  846. CLC& M7 a2 u7 l  q7 [" h
  847. ADC #10
    6 X) l. s3 v$ n& e' S+ L! v
  848. CMP Music_Total0 \/ C2 ]4 f6 Y6 m9 l
  849. BCS Music_Start_Song_Max
    - `% ^5 A6 R% E% @, q
  850. STA <Music_Cur,X* G2 j6 R( D0 Y( G( ^+ G1 h
  851. LDA #00; E/ M, ^* R3 Y, i" k
  852. BEQ Music_Track_Change_End( j% \& a- i' f" }- s# I
  853. Music_Start_Song_Max
    ) Q. F. H1 u3 V2 c+ ?3 e; {: e
  854. LDA Music_Total3 t& d- A$ I) q3 m. i4 h2 o
  855. STA <Music_Cur,X* P# r9 P+ |4 |& }% q/ S2 I7 H
  856. Music_Track_Change_End
      v" _) m  f- q. |7 U/ J5 ^
  857. RTS* C1 j# C9 l& @( M, a
  858. # p, ^4 [, F3 b- y
  859. ;==============================# W9 B8 A2 H0 W. R. O
  860. ;按键处理
    ( v0 F8 x! }( U) X
  861. Key_Proc+ A" @) ^$ P8 i1 |, I+ R
  862. JSR Key_Scan! J; s6 J" `. E) p! H; T5 L
  863. LDA <Key_Keep( L# R+ b/ Y8 Z: i) t
  864. STA <Key_Temp# e; |8 j- Q+ R# K; q! w4 F4 u5 q, a! O7 |
  865. JSR Key_Scan; ?  X8 ~- p" m/ Q- k
  866. LDA <Key_Keep; k0 A5 \' a! z( E, o
  867. CMP <Key_Temp
    . A9 H+ f+ c$ D- W, ~4 F7 e! W
  868. BEQ Key_Get_Once
    & Y% Z) D+ n; s0 E8 ~+ j
  869. LDA <Key_Kemp" s5 p  f) ~5 D' z& ^* w
  870. STA <Key_Keep( `) ]+ K+ p2 y+ I/ o9 S/ N' o
  871. Key_Get_Once
    ! `* ?$ J7 J, f8 o
  872. TAY  m( s: ]7 C1 O0 d$ b- _) |' M
  873. EOR Key_Kemp
    ! K2 d/ N$ P7 R/ |
  874. AND <Key_Keep
    / L" Q0 f7 ~2 a2 S. K
  875. STA <Key_Once- a9 X1 K" `6 U" T5 k
  876. STY <Key_Kemp
    % k6 F  c2 J/ u) c5 r+ y
  877. RTS$ q. i  I( @0 q) m+ Y6 L
  878. ;------------------------------% D) w; h3 h) m& c# M3 Y
  879. ;按键扫描! B0 n' B& O' Z6 e; h
  880. Key_Scan
    / ~: f; \8 {; i5 N
  881. LDX #$013 L8 m0 W) I  I7 U% ]8 q0 W  G
  882. STX JOY1_FRAME: {# H" ]9 s6 O
  883. DEX
    7 R/ n1 ~! b5 u1 S7 e
  884. STX JOY1_FRAME
    7 g4 v- k0 l/ q: w
  885. LDX #$08( v- @  {" U+ h( k$ H& O
  886. Key_Value
    ( V4 L. Y: a$ X
  887. LDA JOY1_FRAME$ H9 }9 a+ {& Z+ \
  888. STA <Key_Getv
    $ M: z+ i& l* ^" e% f
  889. LSR A  c! h& ~  l5 G9 w4 R0 `6 Q
  890. ORA <Key_Getv
    / t) e$ z; p1 g' R5 l& x; K
  891. LSR A
    3 I3 M* N1 U# \) D
  892. ROL <Key_Keep  J4 R  m2 K: q; `! ]8 G7 p
  893. DEX
    ) X7 c* `/ G. d4 ~# {( x$ |  ], n
  894. BNE Key_Value
    5 R* \- r: e% L( p2 @  U
  895. RTS, F5 i/ _. R$ d& j6 P( B
  896. / O1 m5 a2 e6 ]4 x. p1 ?' Z7 W8 j
  897. ;==============================% t- w' H+ W7 i  w5 F
  898. .IF SOUND_BAR_SHOW_ENABLE' q( s' x9 M) K3 [- D% p$ m
  899. ;音乐条显示6 _- w' \7 J5 `3 x: n! _) \$ S1 ^
  900. Music_Vision5 d9 P; k) ?: s' e. V: ^' X
  901. LDA <Text_Disable_Flag
    2 t* {# d7 H+ o$ G% B% W  p0 C
  902. AND #TEXT_DISABLE_ITEM& p) m7 ]8 U, r
  903. BNE Music_Vision_End
    # A4 R: [/ ]9 F1 C
  904. AND #TEXT_DISABLE_BAR
    , a' E# X+ S: b8 F/ Y8 b) P
  905. BNE Music_Vision_Set0 a" J7 _' e+ _% `
  906. LDX PPU_Cur
    + [. o# G+ @$ ^: r% E5 Q# {% d
  907. JSR Music_Animation" |& a7 [3 z" `
  908. STX PPU_Cur2 S0 ~' |+ t4 ^1 c. V
  909. Music_Vision_Set
    8 z% X) }# U. [6 ~& h
  910. LDA <Text_Disable_Flag
    + m. Q0 D2 ^# a2 C6 d$ e) A
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ! U: [4 G. Z" @* [" `
  912. STA <Text_Disable_Flag* X) x$ o$ m& _( v. F& W
  913. Music_Vision_End3 h) K, K0 t. q) {9 ~) `- t/ V/ M
  914. RTS
    1 _/ ~& ^& K  t* ]) k
  915. ;------------------------------
    / u& J# M" Q  I; D* Y
  916. ;音乐条显示处理8 D9 @! B1 m6 U8 z7 {
  917. Music_Animation: [8 R  l: @- o/ i& l
  918. LDA #PPU_MODE_CNT_LINE
    1 x) Q# I6 M9 E7 y4 Q
  919. STA PPU_Addr,X7 K$ g7 x) |/ x% r5 m
  920. INX
    : c# L6 s" ?" q! \1 }) l% X5 S
  921. LDA #HIGH(Sound_Bar_Pos)
    % k+ R0 h9 ], Y- F6 i6 ~
  922. STA PPU_Addr,X  Y* s' N9 {  x$ Q: H
  923. INX7 ?/ l, H. Q: ~) @# v" Q" k, W+ \$ p
  924. LDA #LOW(Sound_Bar_Pos)
    2 {6 N" Z: j7 r* {+ e  s$ n0 t0 p
  925. STA PPU_Addr,X
    : l+ R" i  U6 E3 |* L- z* F
  926. INX
    " f# I/ a8 Q3 F3 m! H
  927. LDA #$08' E6 M: J  |3 _3 ?' O  v9 O# W
  928. STA PPU_Addr,X
    ) b! h* ^8 H4 `* i
  929. INX
    + n+ ]( Q) S( L) q% `6 M" F
  930. LDA Sound_Bar' {( r. u4 |* z& u7 Y6 c" ?
  931. JSR Volume_Convert- Y' ]8 x- J& }# e8 ^3 e2 A3 m
  932. " m6 r3 X$ N" P) A* O+ X! c, d
  933. JSR Volume_Set_Cnt
    : v, I4 d3 l* B; A
  934. LDA Sound_Bar+$4
    8 U7 e+ P4 w0 E, P$ L# g! A5 t
  935. JSR Volume_Convert
    " {$ a% f3 F8 ?6 @: e

  936. $ b" d8 H: c. H/ V( d( j3 u" P
  937. JSR Volume_Set_Cnt# T9 }+ \6 J& P1 D
  938. LDA Sound_Bar+$8
    1 E9 E1 n5 @0 S- F4 @) w* V, {+ T
  939. JSR Volume_Convert2 r# d: j( Z: f, a
  940. + G( `) v+ J( v0 L
  941. JSR Volume_Set_Cnt+ o/ F, C# d$ h" o- R& r
  942. LDA Sound_Bar+$C% I8 Z, z& [% F! q1 t
  943. JSR Volume_Convert0 H& q4 k* V" }  t* B" O3 S

  944. ; F$ k6 M; ^4 T8 m) j% F" V* @" C. m! U
  945. JSR Volume_Set_Cnt
    9 [7 F' @+ h( t5 i

  946. 6 s3 u" C  [% w
  947. LDY #$102 C' L) X( c7 m1 h: A
  948. LDA APU_STATUS( s% z' I# t# B4 T% [
  949. AND #$10/ b) ?: G& [! X! I% L1 }4 H
  950. BNE Volume_Count- @2 u0 g+ n  R, d' T$ C+ x
  951. LDY #$000 J6 }) F: g4 ?+ e
  952. BEQ Volume_Count
    2 i$ W& F5 ~+ X; b9 E9 j
  953. 8 t2 G  e3 B/ x6 `$ S) y- e4 R' J
  954. ;------------------------------% a3 p8 u5 d' V1 S
  955. ;音乐条处理5 j; S! {& s0 s+ R- {: \; y7 |
  956. Volume_Convert- T+ T& L( S# _" G9 b& Q) y+ L) d# w
  957. AND #$0F
    - [. M  {9 f/ P+ ^7 i  p' m
  958. TAY+ @5 z$ J9 Y5 h7 ?2 h3 T1 b
  959. Volume_Count7 a4 u' j, \5 {0 P2 A2 Q
  960. LDA #$08# ^$ S9 R+ A7 l  W
  961. STA Sound_Bar_Cnt) x6 Y! D' e! @* C+ I+ U' m
  962. Volume_FILL
    4 y% W% K5 ]" }- l9 K
  963. DEY; \/ d" E& G& ~" f+ G, y: c" D; v. z
  964. BEQ Volume_Half
    * M4 x( F% e& b; l6 z7 [) c
  965. BMI Volume_Empty
    1 k: {. ^) e- ~! w1 k  i
  966. DEY- V! I' _; V3 ?5 i; _8 r
  967. Volume_Full
    / V( ]' @: P  a8 Y1 S; I
  968. LDA #$16' j+ v+ H& M* K
  969. BNE Volume_PPU
    6 W: \/ i8 |' C
  970. Volume_Half3 c- G+ {# u. V0 G
  971. LDA #$15$ H3 R7 H* i6 K3 z7 o/ v
  972. BNE Volume_PPU
    7 ~" Q) ?( v6 c# \- A
  973. Volume_Empty
    8 A# |8 q  n5 K% u3 G
  974. LDA #$14$ P1 f( }/ r3 g: F+ Y, `1 N. O- @$ n
  975. Volume_PPU
    7 s, [5 @8 }8 L8 x1 w, U+ ]9 o" g2 a
  976. STA PPU_Addr,X0 q6 d% G8 u$ G
  977. INX0 k# s+ s8 M) L2 S3 z3 _: ~7 {0 @
  978. DEC Sound_Bar_Cnt
    - [6 }/ k5 n* C, E. ?
  979. BNE Volume_FILL; M$ @, X( `7 A+ _2 u
  980. RTS2 b2 F- g1 t6 g. l! V, E

  981. * n0 K# \  A* o& Z- U! N" |! j
  982. Volume_Set_Cnt* P* [4 k" l( V* ?; R
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    + \. e! Z! Y$ |  V" W+ v
  984. STA PPU_Addr,X9 X( |3 A9 a1 V2 L  c/ R8 O
  985. INX4 F6 }2 i. W* e4 H; o8 H$ V$ W% f. h. @
  986. LDA #$08
    7 `8 u# E9 F1 [1 u" I: v* ?6 _) f
  987. STA PPU_Addr,X$ b" w: I( @$ R; {
  988. INX
    ! s: |3 ?/ {3 X+ ~
  989. RTS2 E  B3 {) U3 Z* [
  990. + I* N9 V* F" _$ t6 C( a& _
  991. .ENDIF
    1 q! P( l4 f7 v

  992. $ F2 x2 ]0 B! J9 H+ a& `. t
  993. ;==============================
    2 J2 f5 c6 x0 A! F- d1 X
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入: Y: v3 Y8 {) L# m2 m3 w9 @
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
      R  m6 }' z: a' u5 \6 B+ G9 r
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除' @6 y- h& k$ r1 ?
  997. ;------------------------------3 i/ t2 }  j' \0 g* d" K
  998. ;PPU处理: I  n; c4 E6 ~1 m$ D) b2 m0 C+ f, M
  999. PPU_Proc
    ! V: X" O6 U6 j2 X
  1000. LDX PPU_Cur. n5 }# S* y3 h) y  G4 J
  1001. LDA #$00
      }+ l: ?1 R) s6 \, ]
  1002. STA PPU_Cur
    + }- Z8 M" Y" d! c+ N0 [2 g( q& |$ Y
  1003. STA PPU_Addr,X
    : e& p* V$ K& f4 e" Y" j6 a9 o
  1004. LDA PPU_Addr
    % f/ _6 p, O) Y- \1 Y" w( ?7 R6 T
  1005. BNE PPU_Proc_Beg7 r2 ^8 l, U6 T- X8 A
  1006. PPU_Proc_Ret
    4 I0 [0 G7 T& S+ L
  1007. RTS
      Y! N* S3 A% x! \7 b2 @2 h7 Y

  1008. + \8 s$ i  c5 s9 U
  1009. ;------------------------------
    2 X- g1 E0 w* p! X5 \
  1010. PPU_Mode_Return_Cnt  ;转下行模式$ h; q/ J; v8 [  h2 r2 v
  1011. INX
    - `) W0 f4 Y' c& I
  1012. LDA PPU_Addr_L0 M: ]* R7 l) n+ f9 @% d( G  Z1 u! T' G- {
  1013. CLC
    ( m$ G/ `9 k+ A
  1014. ADC #$20; X) ?' |; r, `
  1015. STA PPU_Addr_L
    9 c' h9 x$ M. H: E
  1016. BCC PPU_Mode_Return_Cnt_End. L3 s1 @) A4 u* ]
  1017. INC PPU_Addr_H& {* v- O$ w% F
  1018. PPU_Mode_Return_Cnt_End
    8 h) I; |" h, K) S9 d5 ^+ ^
  1019. LDA PPU_Addr_H
    / Z2 b" h- ]. M' _$ D
  1020. STA PPU_ADDRESS# J8 t% u& w+ D/ C* I) j% P# u
  1021. LDA PPU_Addr_L
    1 S% ]& s6 O) Y" B- F1 ?3 _1 ]
  1022. STA PPU_ADDRESS
    ( |2 V# V6 A  [0 n+ O
  1023. LDA PPU_Addr,X; Y+ w9 T2 x0 S6 F) B' O$ R
  1024. TAY
    ( S6 I, H0 t7 T; K. B# h! ^
  1025. PPU_Mode_Return_Cnt_Write
    7 T( i5 x6 f  g* h6 p' R* W6 O0 u
  1026. INX
    ' y/ O5 z5 _: u4 p0 r
  1027. LDA PPU_Addr,X( p, C. {0 {& |; J2 O  ?" z0 T
  1028. STA PPU_DATA
    * C" b& V) y1 l  S
  1029. DEY
    / \& `6 z7 K, T* R
  1030. BNE PPU_Mode_Return_Cnt_Write
    2 x4 |: L% R6 c8 Z
  1031. JMP PPU_Proc_End+ E* h9 V$ i: @+ `9 |; u

  1032. ( ]5 x- V/ {; u  w5 K; ^2 f
  1033. ;------------------------------" w  F% M3 x! W3 s0 b/ @
  1034. PPU_Proc_Beg  ;处理开始2 W: u  o" o& O/ q. \
  1035. LDX #$00
    % @2 O. R6 V/ X4 Z; W8 T+ z. K  Y
  1036. STX PPU_MASK
    6 T; C/ {& l1 o+ K  N+ ?# W
  1037. ;------------------------------
    % U# J" c5 p, h
  1038. PPU_Mode_Select  ;模式选择
    * O) e  o  P* n( b% f
  1039. LDA PPU_Addr,X
    + P9 X3 g) n& s! c0 }
  1040. CMP #PPU_MODE_CNT_CLEAR8 f) r$ [% t5 O4 ?7 b9 B$ L" I
  1041. BEQ PPU_Proc_Clear
    + \+ B' Z5 f) J9 J# S$ G1 J* x6 C
  1042. CMP #PPU_MODE_CNT_LINE
    1 c, [+ D1 B3 _
  1043. BEQ PPU_Proc_Cnt_Line
    ' N1 [7 V3 @6 x5 p6 O
  1044. CMP #PPU_MODE_CNT_LINE_NEXT5 o9 C" C7 G6 E  A. o
  1045. BEQ PPU_Mode_Return_Cnt
    & D: ]1 W# ]/ {/ e. }* [! U
  1046. JMP PPU_Proc_End_Write) h9 Y% L8 i7 H: D$ B
  1047. ;------------------------------
    1 B" N+ H5 H  b' @! u: ^
  1048. PPU_Proc_End  ;单行写入结束- o0 x! r+ ?! L: a
  1049. INX! x. R( Y. H& E( h, t" E+ S
  1050. LDA PPU_Addr,X
    . |1 t& O) u  i4 H$ S
  1051. BNE PPU_Mode_Select
    6 s5 t$ o1 w( B
  1052. STA PPU_Addr
    & Y7 C! r; D# I9 ]! Z0 s
  1053. JSR Update_Palette_Color
    ( M) }0 o! g' B' `$ V
  1054. ' ]  s  v4 t3 A, _1 J+ f5 m+ O
  1055. PPU_Proc_End_Write
    # }" Q+ G: @$ d& T4 {; ^* o/ K
  1056. LDA #$00
    ) _/ o0 o/ ~$ v. ?
  1057. STA PPU_ADDRESS
    1 I- E* n- r$ N
  1058. STA PPU_ADDRESS& ^9 F$ U  y6 f' t5 Y# a) P
  1059. LDA <Text_Disable_Flag
    ; n) w) c* Z! V! z7 l+ O6 p
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF+ g# M! ]* q# ?! b. ~- u
  1061. STA <Text_Disable_Flag
    9 {  `% W9 d) S/ T/ w9 a. d( ]
  1062. LDA #Scroll_X
    # \9 D; x) N0 d$ f
  1063. STA PPU_SCROLL
    3 c0 w6 V3 u7 G( z6 L$ h; I# [
  1064. LDA #Scroll_Y/ \" d8 f+ {/ a1 J. t( I* ^/ t
  1065. STA PPU_SCROLL
    3 p/ ~( d, B& w' N) Q, U0 _
  1066. LDA Screen_State
    5 w* M" J$ x& g
  1067. STA PPU_MASK4 R4 X- e/ T3 ^
  1068. RTS% T# J( H& {, \0 [, M
  1069. , G+ q, x, e: T0 \6 C
  1070. PPU_Proc_Clear- i% a! ]; @' n  C$ w8 p
  1071. INX( S) Q, c/ M5 e( P+ l2 d, v
  1072. LDA PPU_Addr,X0 R( v: J/ U4 F+ D3 M4 J
  1073. STA PPU_ADDRESS9 {9 Q+ x) T' _2 U' ]
  1074. INX
    : \; t8 T! P  Y/ T; K
  1075. LDA PPU_Addr,X
    ( [# L- {7 l% ^6 h, Y. \$ L' b" e
  1076. STA PPU_ADDRESS* S( k. M. X3 C3 H. K2 Z1 M7 D
  1077. INX
    7 q: c! z2 Y2 P$ _$ `
  1078. LDY PPU_Addr,X
    - P! R  o+ Z& l
  1079. LDA #$00
    " r/ t8 z# y; ^, d  J  D2 v. _
  1080. PPU_Proc_Clear_Write. q9 E9 j$ v3 [! L" T7 o9 ^
  1081. STA PPU_DATA  [/ ?0 B$ D* e! ?/ N' h
  1082. DEY
    ( `& T/ V3 G$ a
  1083. BNE PPU_Proc_Clear_Write
    $ o: W  P! q0 p
  1084. JMP PPU_Proc_End
    4 e; |) I  b2 ~' O4 R

  1085. 2 F1 }+ O) _0 q0 |& U6 J
  1086. PPU_Proc_Cnt_Line
    ! ~- g+ I9 c- Q/ m
  1087. INX
    ; C! m% ]# N  l5 P
  1088. LDA PPU_Addr,X. [" U- P9 A$ P4 B+ \1 x, s! T
  1089. STA PPU_Addr_H
    ! g# u3 P3 a- T5 ~
  1090. STA PPU_ADDRESS
    6 \0 I( f$ @9 ^: `- M
  1091. INX
    7 w$ P9 t" l' G) A# }7 t
  1092. LDA PPU_Addr,X
    / N0 p" Y0 c, z. l& J, I# N0 K& g
  1093. STA PPU_Addr_L# ?* X# V* a+ W, y/ t, p+ I( p( p( m
  1094. STA PPU_ADDRESS8 v0 G7 H) ?! m1 Z
  1095. INX5 Y) T/ F* M/ V2 @1 @" e) _  Z
  1096. LDY PPU_Addr,X
    5 i& I1 k; ]6 p
  1097. PPU_Proc_Cnt_Line_Write
    1 N% L. f, s4 T8 k  `! C
  1098. INX9 Z* }7 d; n" K# C. u- A
  1099. LDA PPU_Addr,X
    9 {! v- P2 D2 E
  1100. STA PPU_DATA
    $ V1 ~8 \  Y% f
  1101. DEY
    5 q7 K. @' O& R6 ?3 q* ~2 x' ^
  1102. BNE PPU_Proc_Cnt_Line_Write9 V6 I$ o; X9 M2 P. }' n. P
  1103. JMP PPU_Proc_End5 |, K; G+ c( A
  1104. * E# X  f9 N  q  t+ @+ _4 b
  1105. ;==============================
    - ~( X9 B- r; X: P
  1106. HEX_To_Dec;十六进制转十进制
    ' w! {0 k5 R* Y5 I4 [2 V
  1107. STA <HEX_Data
    - b) Z: F! \0 {5 ~2 J
  1108. PHA
    5 @8 _4 K2 ?) K* c) f! u
  1109. TXA
    ' ^$ v6 u8 h# Z% J' j. r
  1110. PHA8 K; v2 d" B, |1 d
  1111. LDX #$00
    $ M: X2 O6 B1 p7 g6 d" k9 g- J7 k. r
  1112. LDA #$00
    9 R+ d- T$ H0 T
  1113. HEX_Cln* B3 C. n- x" e" d8 c0 n
  1114. STA <DEC_H,X
    1 [- ~$ Z- H$ M4 D- M  I
  1115. INX
    9 e8 Y2 Q7 _  s5 [* _2 `: T+ K2 d" Z
  1116. CPX #$03! e3 I  z5 Q! a" P" v
  1117. BCC HEX_Cln; M& m! b' B6 T
  1118. LDA <HEX_Data
    & w% P. h0 A- `- u& [. F' Y
  1119. ;------------------------------
    4 i6 e* q+ j7 d' u3 y
  1120. HEX_100* u0 p% L" L# @  O* g- A
  1121. CMP #100
    / \3 m& V5 Q- ~% C+ w
  1122. BCC HEX_10
    . V# G. `; v( ]9 s7 q7 {: h, z
  1123. SEC
    1 l$ ?9 H9 u, V# c: M
  1124. SBC #100
    ! T3 h  f' Q2 H
  1125. INC <DEC_H* }- A6 o) ~! u$ ^! J) J8 V
  1126. BNE HEX_1002 o3 N/ R+ p+ G) t  i, i3 L
  1127. ;------------------------------
    . g# R" C- {/ M# n) t
  1128. HEX_10' q# n% \& e8 J0 V0 O! v
  1129. CMP #10; Z5 m) a) _. R0 Q# Z* t
  1130. BCC HEX_10 Q- r8 f) ~. B8 C
  1131. SEC; n0 X1 f& B3 Q- o3 A" i6 T8 u1 c9 Z0 Y
  1132. SBC #10
    : B8 @, B' [6 r& N  t2 ?2 H
  1133. INC <DEC_T
    0 Q- g* r, M- A+ V5 S
  1134. BNE HEX_10' H8 I8 }7 y  i8 P6 c) ^! s& {$ _
  1135. ;------------------------------% H& Q- A4 _* \/ r, @
  1136. HEX_1: J( p; m$ f  }  ^3 c; b- X
  1137. STA <DEC_L: x# l: k! h4 D
  1138. PLA
    : a3 \+ X- a- y0 k  ?5 U1 y
  1139. TAX
    ; C: H8 y9 ?0 M) H# j2 ?8 Y
  1140. PLA
    % a/ r9 g$ q/ h2 S  r  c
  1141. RTS
    & |7 n* b: M1 B1 j5 U1 E% o

  1142. 7 I! S5 n$ J( S6 w
  1143. ;==============================
    " K! F; X2 P% u4 F7 K! J
  1144. ;音乐曲目显示
    1 G) k* s# U/ `4 z! _! g/ {5 I
  1145. Music_Show
    0 O& V/ _9 K: n* J
  1146. LDX <Music_Item_Cur& K( ^( h; u3 p2 F: h4 O3 n; j) \
  1147. LDA <Music_Cur,X. u/ @# Z  m. ~- ~# w& T
  1148. CLC
    . `3 e% i; _. U% \3 ]7 b5 r
  1149. ADC #$01
    ! d/ k/ z3 w/ ?, s: f3 U0 T
  1150. JSR HEX_To_Dec
    / c" D4 c6 c# }6 U" [% o* A4 G
  1151. LDX PPU_Cur
    # _% P# D+ k- j& a0 q+ j
  1152. LDA #PPU_MODE_CNT_LINE$ N; Q! {+ |( j0 D0 e
  1153. STA PPU_Addr,X9 I* J9 w* t, W
  1154. INX
    5 g/ a2 x% ]5 M% B5 X
  1155. LDA #HIGH(Play_Index_Pos)+ Q- c5 t5 }8 x6 j- d
  1156. STA PPU_Addr,X
    8 i) L5 `" o. N/ ]7 I8 R8 q
  1157. INX/ V2 f9 L, `- l3 \; _4 c
  1158. LDA #LOW(Play_Index_Pos)3 ]. ~' e' i0 y
  1159. STA PPU_Addr,X
    . B1 _% Z6 m5 }  U& r& Z/ B
  1160. INX) m4 I( n* c1 z
  1161. 2 Y1 {* q) h0 T3 P( P. r
  1162. LDA #$07
    - d4 R4 V5 q; l+ W$ Z
  1163. BNE Music_Show_Length7 z: ?. p; O: G3 a9 K* I7 U
  1164. 0 z' v! T, m5 Y: p
  1165. Music_Show_Length1 C% H! {: k+ g9 i6 F
  1166. STA PPU_Addr,X2 C) F) b3 f/ F. E! z3 B/ c6 u, S/ o
  1167. INX8 m2 B6 t% J9 f- ?

  1168. % v2 `6 g- [2 M& n% u% m% W$ U3 A
  1169. LDA <DEC_H' f6 ?$ ?# R* g' y* |
  1170. ORA #'0'
    7 V& G& @2 i: J9 C% f% \& M
  1171. STA PPU_Addr,X/ m3 C1 S6 d! q: v1 c% B4 c1 a
  1172. INX
    0 n/ `' e$ x; R# V
  1173. . Y3 r' U, t( H5 Q- e% q7 u
  1174. LDA <DEC_T3 p0 ]1 l$ ]7 M! z# U' r. Z. @/ B+ N' O
  1175. ORA #'0'5 K/ X! s  j  T& w/ e) k
  1176. STA PPU_Addr,X
    5 ]9 l" A" Q3 z/ B- Q4 j
  1177. INX
    5 f. w' x: j6 S" [  i. L
  1178.   o% _$ l) _6 S% R
  1179. LDA <DEC_L) `9 k% p9 `- \7 c' o( C; D
  1180. ORA #'0'* b5 h" K2 K: ~1 T
  1181. STA PPU_Addr,X( N, c: m4 k# q2 K! ~( O: b
  1182. INX
    + R8 j' D: F% |5 }+ k

  1183. + B9 X* C; k5 F5 Z" R' B
  1184. LDA #'/'
    $ p$ ^5 [: G+ j' \# E3 \
  1185. STA PPU_Addr,X
    ( T! s7 U1 J1 N" m9 p9 v: S8 X
  1186. INX
    " ]2 m2 a/ O4 V
  1187. Music_Show_Total
    6 y2 q4 p$ @2 g8 v5 O5 b
  1188. LDA Music_Total
    0 F/ N# s+ O5 E: {
  1189. CLC* O( @4 g, V6 h8 ~
  1190. ADC #$01# T& W, S# S, @; ^5 @* P, n' `; f7 u
  1191. JSR HEX_To_Dec
    4 T% n, v: d$ g; T) T9 Z' r+ Z
  1192. # l8 R0 |8 s7 l- s0 A* v3 a; h
  1193. LDA <DEC_H
    " d/ @: ^) H* q, {9 w# u) U5 L
  1194. ORA #'0'1 N6 }3 A! A; S& Y( R. c
  1195. STA PPU_Addr,X3 [  H# H1 N8 q6 m  w
  1196. INX2 C7 W1 i5 o, Z/ E' u' G8 @
  1197. $ g# |/ M: W7 P$ s
  1198. LDA <DEC_T
    ! f, j6 g; U  p1 g5 e
  1199. ORA #'0'% C+ t; L3 F: e- U
  1200. STA PPU_Addr,X
    7 v0 p$ i5 {8 f% ?
  1201. INX8 w; e* O+ x  b$ F, M6 v
  1202. ) G! p# T) H( H6 r- ~. I) @0 w% W
  1203. LDA <DEC_L
    5 y6 Y2 t7 `4 b5 a& P
  1204. ORA #'0'$ M4 U' K+ N* F/ n4 |
  1205. STA PPU_Addr,X6 ?. N- C7 R! S+ t- c" B
  1206. INX
    $ _: A' T2 [0 f. x  e- j6 A
  1207. % E$ b- R  L8 R2 i* ?* z
  1208. STX PPU_Cur
    ' ~* |( t% z9 e1 L6 d
  1209. Music_Show_End( n# Z: x* n) u* }4 L  U0 L* K
  1210. RTS
    8 D! h6 v; b7 B" x

  1211. " n, y+ y! e6 ]1 K5 G+ N) M
  1212. ;==============================: P3 o0 ]7 w: e0 g
  1213. Time_Show;播放时间显示6 O; x  o. ~) x7 u- ^8 L% f
  1214. LDA <Text_Disable_Flag1 x3 T8 T0 L2 ^7 u, n
  1215. AND #TEXT_DISABLE_ITEM
    ' z) K% S' V1 R
  1216. BNE Time_Show_End
    : ?1 r# s& m% g
  1217. AND #TEXT_DISABLE_TIME  s5 Y0 [9 O6 f# r9 r+ d
  1218. BNE Time_Show_Enable
    $ R2 F$ _% d* h( Y" [

  1219. & p+ ^7 ~: O  {  ]$ i
  1220. LDX PPU_Cur2 I) I2 ~8 J) I% V# Y' t3 `1 O8 c) J6 U
  1221. LDA #PPU_MODE_CNT_LINE
    $ q  R# {! X/ N5 d: x! Y7 W/ z
  1222. STA PPU_Addr,X
    % a* w# v1 W- V) Q, r5 [
  1223. INX  y, t. a3 e* w* t! A. Q) f
  1224. LDA #HIGH(Play_Time_Pos)
    ; v; t$ E0 `3 [# R5 ~  A8 @! o
  1225. STA PPU_Addr,X
    & {- a0 F) v; ?, H2 N  k& _8 i
  1226. INX
    * @$ f  ~# V) p8 L' ^; z& M
  1227. LDA #LOW(Play_Time_Pos)& @1 |/ Q6 ]$ J' K# ?3 V
  1228. STA PPU_Addr,X
    6 F& a2 i$ o0 i) O7 q9 I3 a
  1229. INX
    / N" c+ \+ \0 v& U
  1230. LDA #$08& {- E1 G+ t: ?
  1231. STA PPU_Addr,X
    ( V1 C. d' P+ u1 ^6 v( h% n5 G2 o
  1232. INX
    $ A$ k+ R8 `9 v0 Y; N2 Q
  1233. Time_Show_H
    : O# a) O) U0 b3 w" U/ R
  1234. LDA <Time_H, |& l1 \9 _7 J
  1235. JSR HEX_To_Dec& Q6 D2 c' L' ~
  1236. JSR Time_Digit
    7 B9 Q* ^4 ?4 o+ }9 f. O- e+ I
  1237. LDA #':'
    " O* o& ?8 {2 V* \9 M$ z
  1238. STA PPU_Addr,X
    ' H) E6 X& C. Z5 ^; O3 Z8 U% z
  1239. INX1 S6 T& T1 g5 o; Z- J/ m+ a
  1240. Time_Show_M
    ' B! T* u/ K$ ?3 ]: y
  1241. LDA <Time_M
    3 B# g8 {" g, E6 \
  1242. JSR HEX_To_Dec
      T6 y  Q6 f) Y( e9 x( h9 @
  1243. JSR Time_Digit7 T$ ?- T7 q3 `. u3 s
  1244. LDA #':'" k' o8 g- q0 [; D& G; y
  1245. STA PPU_Addr,X( X, T- P, c( t7 Y
  1246. INX
    3 o; m! A, x+ X$ v/ t5 J
  1247. Time_Show_S' Q1 |3 U4 }% q& H0 B
  1248. LDA <Time_S0 L! w$ w5 i* f  f' d
  1249. JSR HEX_To_Dec
    ) Q! D* k8 \! ]0 w) i, c6 N6 N
  1250. JSR Time_Digit. R& }2 ~" \4 U0 E- f
  1251. STX PPU_Cur, ~2 ~3 k7 d2 `2 R2 n
  1252. Time_Show_Enable) f  U1 u/ T* w* H" S
  1253. LDA <Text_Disable_Flag
    / x' Z% O3 K! y8 c
  1254. AND #TEXT_DISABLE_TIME ^ $FF* @( R& _; i8 h: D5 L, _1 T0 O
  1255. STA <Text_Disable_Flag
    1 o) J' z* P! e  D- r8 S
  1256. Time_Show_End
    6 z& o0 F$ _3 y$ R+ C5 \6 _
  1257. RTS0 |* O" _! c7 a7 R
  1258. 1 ]: X4 w( F6 H2 f& t3 A
  1259. Time_Digit
    + Z( N  a% U* ^
  1260. LDA <DEC_T5 \; W2 N" L: U1 H, @+ D
  1261. ORA #'0'% N' H, n6 u# j5 O6 h0 Y5 y4 b
  1262. STA PPU_Addr,X
    ! u! _' j3 B3 x- o' W4 f
  1263. INX
    1 n* C7 u6 I7 X% D9 s" I4 D" u; v) C
  1264. LDA <DEC_L. F0 F5 Y/ e& S9 |3 g4 x( x
  1265. ORA #'0'% |* w2 O9 H! I( L5 G
  1266. STA PPU_Addr,X
    ; m+ }: N4 v( E+ U% s
  1267. INX
    : x+ s: r' I: u( F( o1 v3 C# j
  1268. RTS
    7 m; _. L4 [; L- G* d/ y; o

  1269. 0 Q2 m) R8 W* V4 C( [: C2 E7 N
  1270. ;==============================& }2 W: T% z. Q: d, i& u+ Z
  1271. Time_Count;计时
    ' N( g7 i+ e3 p) l
  1272. LDA <Music_Stop_State
    9 a' G$ Y7 Z4 B: _1 _
  1273. ORA <Time_Wait_Cnt0 |+ j. H8 ~, D" \$ x  F; s1 ]  o0 f
  1274. BNE Time_Count_End
    - b: V: Q. f: Z' S( Q
  1275. INC <Time_Cnt
    " C$ T  T; C6 h  ^+ h
  1276. LDA <Time_Cnt  O3 r9 ^4 k6 x
  1277. CMP #60
    ! b# E( C) U* \  U% G
  1278. BCC Time_Count_End- a+ L7 G, g" h7 X& p
  1279. LDA #00
    6 ]* F8 f- A" Q7 w, v' O
  1280. STA <Time_Cnt% X+ J7 n  S, p& l; b* u6 q+ w! W
  1281. INC <Time_S
      w! A* R$ T# r0 L* Z

  1282. 9 l8 b: H; A" v
  1283. Time_S_Cnt
    ! u* p. [! ^) `+ R6 |0 O6 T8 O6 W
  1284. LDA <Time_S, {0 C( {3 v- \4 }2 t% h
  1285. CMP #60' X1 O0 @5 t1 R
  1286. BCC Time_Count_End" m; D- e' {3 x
  1287. LDA #001 @" K. K- K2 ?
  1288. STA <Time_S2 K* |8 c& L2 s: F  ?$ A" F5 [
  1289. INC <Time_M& _0 J/ @0 d. E1 ?& G, P! T

  1290. % m8 @/ b+ v/ o  l1 U
  1291. Time_M_Cnt
    - ?3 u+ A4 ?1 m* D  `+ @5 I: x
  1292. LDA <Time_M
      t/ b) O, ~+ g5 w5 ^8 S! b5 {$ m
  1293. CMP #60
    3 p% [7 Z! Y1 ~
  1294. BCC Time_Count_End) e8 q  Q8 A1 N6 u1 H: e* o
  1295. LDA #00
    ! M+ ~+ P+ ~6 z
  1296. STA <Time_M+ s" U4 j, T7 C/ s9 f9 G7 Z$ X
  1297. INC <Time_H
    5 m# ~% z- k' |/ T# l, m# _
  1298. " b+ n! }" R6 p- m) r( Y
  1299. Time_H_Cnt
    6 q! T! c3 [" k+ ]! C
  1300. LDA <Time_H. S; I6 Z) |, c0 x7 ^: W
  1301. CMP #24% N3 ]/ g5 e% V! `6 A3 C1 W
  1302. BCC Time_Count_End
    7 V/ Z# d/ _; B$ b# ?$ R- n& p, m
  1303. LDA #00
    * q6 p' t0 i% j! s" n
  1304. STA <Time_H/ a6 C2 K$ b1 y8 K, l" a
  1305. 2 q! \  x: v/ H8 t6 ]8 Y% I  J2 G
  1306. Time_Count_End
    0 }. t0 y7 k7 ~% P' N
  1307. RTS" o' X, o& Z+ q+ y

  1308. * Z5 k, @! B% L  e8 V
  1309. ;==============================) x2 S$ d, k, ^
  1310. Time_ReSet;播放时间重置5 q1 i0 R4 Z# _& |  K# k
  1311. LDA #$00: _+ J% p0 `5 t! c6 C
  1312. STA <Time_S* B& `1 I, }& @1 L: K& U
  1313. STA <Time_M
    ! `1 V1 m. s; N
  1314. STA <Time_H
    , f& I; d: }" `1 x+ V5 \$ v
  1315. STA <Time_Cnt
    - ]/ e4 H+ P- g0 f( D4 t4 Z( I
  1316. RTS8 E7 j- X$ H  w% n( m% K% u, p( ]
  1317. 4 T& D" J3 G" H1 J0 d1 h" `/ A
  1318. ;==============================, j1 O0 w& i: n& ~0 \, O3 h4 ^  Z
  1319. Music_Bar_ReSet;音乐条重置( W0 @, ]3 |% p
  1320. LDA #$00' ]2 X2 m5 o4 l& W  e
  1321. LDX #$008 t4 z' S$ t8 @0 d
  1322. Music_Bar_ReSet_Set) G+ D, B  l- C9 l1 B- u
  1323. STA Sound_Bar,X0 K( y2 p/ R( v/ D
  1324. INX
    $ u$ `0 [, X# f3 c: H3 g
  1325. CPX #$10* k/ u. J  Q$ ^2 h3 z: R8 w
  1326. BCC Music_Bar_ReSet_Set
    ! p* Y1 b# G% @: s$ ~
  1327. RTS3 k+ r. |/ t/ q$ D+ w: k: j& u
  1328. 6 V% `7 k6 e1 N3 c9 u6 K% ^
  1329. ;==============================& m: ^2 W9 X8 z' }
  1330. PPU_Data;PPU数据写入
    # \: ~3 H2 @) H, u* ~5 O, l1 s
  1331. STY <Data_L
    ! Y! V' e+ y* E9 P7 @
  1332. STX <Data_H# i2 H  G5 N! t7 j
  1333. LDY #$FF6 m1 k! e/ j7 C% F/ |' c1 b
  1334. LDX PPU_Cur" d7 z' b: x  Z0 |3 @8 p0 L, i7 [
  1335. DEX( g8 F2 Y. D; \& S6 p
  1336. PPU_Data_Beg
    $ I, u# n  ?% Q# d. q$ l
  1337. INX7 f( V' S6 ^3 Q/ i& {3 P
  1338. INY2 Z4 Q1 _) v# b, C2 }. f6 \5 X
  1339. LDA [Data_L],Y
    9 b8 V) C% N. B/ U; C
  1340. STA PPU_Addr,X' m% m( u/ c  }! x: ?' y2 T
  1341. BNE PPU_Data_Beg
    2 P( P* w4 _5 p2 @& ^
  1342. STX PPU_Cur
    5 m3 B9 N. F2 h+ n2 q
  1343. PPU_Data_End
    5 T  H. D& R2 i5 u8 J. S" K$ s+ |
  1344. RTS  D; |9 `9 w; K

  1345. ' _3 ^5 M# R% F/ w, i/ @8 ^
  1346. ;==============================
    : M+ c6 o/ b7 X8 d0 C
  1347. Music_State_Show;播放状态显示
    & f  q7 Z5 c$ [0 C/ H) @+ E
  1348. LDA <Music_Stop_State6 ~3 M+ J0 }. U2 ^
  1349. BEQ Music_State_Show_Play$ o' o* R  F* v7 i, t" g, I6 N
  1350. Music_State_Show_Stop; R1 y: A+ y4 @7 O
  1351. LDY #LOW(Music_State_Stop)
    ) _4 x# }- V* _! [# |# }. G9 S
  1352. LDX #HIGH(Music_State_Stop)2 @* m% `* a& o  L
  1353. JSR PPU_Data
    ) R4 q' `. g6 H! y/ D
  1354. RTS7 L" v4 o! w, M1 ?9 y
  1355. Music_State_Show_Play3 r8 R5 A& _. G: o7 [
  1356. LDY #LOW(Music_State_Play)% |  C* i$ ?! m( [4 A
  1357. LDX #HIGH(Music_State_Play)
    / T) p3 U4 W% H: h# ~3 p5 [
  1358. JSR PPU_Data
    . E7 [: p& i4 `
  1359. RTS
    : D$ V/ Z) o5 J' T  L: E! i" i( N
  1360. 6 S/ w  W' }/ \% [  v0 k: E
  1361. .IF SOUND_BAR_SHOW_ENABLE
      d2 J1 k$ _& C- o9 h' J# q
  1362. ;==============================
    & ?, G- b9 Q# }4 w+ D
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    6 a8 _+ o/ {% a  l1 ~4 f
  1364. LDY #LOW(Sound_Bar_Text_Data)! C  ?8 n2 U7 o3 K' w$ L8 I! q
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    / S0 g$ s. G8 j" t
  1366. JSR PPU_Data
    , v9 C& O; a# W: J! v
  1367. RTS$ w" e8 i$ z- J' [
  1368. ! ~: }6 ]- C$ j/ l
  1369. .ENDIF
    1 O, ?% w6 S: ?

  1370. 0 c; [9 ]0 C0 m4 H7 N
  1371. ;==============================
    9 M4 O% w) c4 [! S& N0 E
  1372. Set_NameTable_Attributes;设置命名表属性
    ; t- A" x" O1 L# ~% L3 h/ O& N  f
  1373. BIT PPU_STATUS) F$ T4 i, w/ c# a2 _
  1374. LDA #$23
    / }; w5 Z( G4 g3 I/ @
  1375. STA PPU_ADDRESS
    ) I8 V% _- e" K6 y# H
  1376. LDA #$C0
    $ p6 p0 Z" b% m% G) J
  1377. STA PPU_ADDRESS% j5 x8 H2 K1 s0 ]# A& f( i6 q' G- ?
  1378. LDX #$00
    4 g2 |2 c! E/ r- O0 y3 L' ^
  1379. Set_NameTable_Attributes_Write( y& k; u; `4 `9 n$ _
  1380. LDA Palette_Attributes,X
    0 k6 D+ g6 D/ }& W3 B+ t+ ~
  1381. STA PPU_DATA
    4 E- x" c; C3 {% J% s4 ^
  1382. INX
    # L6 c( b& F" Z+ n1 P& [
  1383. CPX #$40
    , `" ?4 D' q& Y4 b) I! P% o6 _
  1384. BCC Set_NameTable_Attributes_Write& v! s: u6 o9 A  Z! e
  1385. RTS
    4 G* o# z! {8 J+ D
  1386. . P+ L: O6 _# H5 o/ D
  1387. ;==============================
    7 Q$ A" B" J- o: H! K% y, y
  1388. Set_Palette_Color;设置调色板数据
    5 ]/ K# e5 v: q
  1389. BIT PPU_STATUS
    " W- e8 Q2 e, s1 ?5 z1 Z5 A* S
  1390. LDA #$3F
    ) K  `) X9 T& B$ z. V
  1391. STA PPU_ADDRESS
    % }6 E$ m3 S) e# E6 P- C
  1392. LDA #$00
      V' w5 m. [3 k- v: ~
  1393. STA PPU_ADDRESS6 i* N% z1 m1 P1 F, b# G
  1394. LDX #$00
    8 K  W& S0 {( Y
  1395. Set_Palette_Color_Write1 a+ ]- V& @8 X- V8 j
  1396. LDA Palette_Data,X
    , a. }" A' a6 y& R0 U2 R& x. J% x
  1397. STA PPU_DATA
    6 u) n+ J. ]: y& S; l
  1398. INX
    2 @0 C8 _, B; i1 ^4 l
  1399. CPX #$20
    8 i) D' l1 q: [; D6 E0 J' H
  1400. BCC Set_Palette_Color_Write3 |. n, X0 H+ J- c) c
  1401. RTS
    ( H5 q% F- O9 x: n0 F! O' ]

  1402. & c# `  A# ^! V) U. v* F9 ^; m- M
  1403. ;==============================
    + e# b( {9 f5 a' `% m" Y
  1404. Init_Palette_Addr;初始化调色板数据9 F7 W: e& i2 D4 g5 T
  1405. LDX #$008 ?- e5 H# S# {) M9 F8 ?- S4 B+ C
  1406. Init_Palette_Addr_Write
    9 X. u$ T+ `5 y& |
  1407. LDA Palette_Data,X
    ; z  u0 Y. ~- s  h" K6 T
  1408. STA Palette_Addr,X* A" d' F8 H+ ]7 v  j# X
  1409. INX" E$ {9 A7 |# T6 r" `: d: {
  1410. CPX #$20
    8 p% Q" ^+ N6 x1 m' C( K& P
  1411. BCC Init_Palette_Addr_Write
    6 o7 W9 k7 c, N) J. d9 f3 o" T7 P  F# S
  1412. RTS( {) |, U6 D2 j8 y" v5 |9 g  {

  1413. " O# K% n; v: \$ c4 S$ b
  1414. ;==============================
    ) G' D+ U6 o' E# ~- x( q$ r- L
  1415. Update_Palette_Color;更新调色板颜色3 f. d6 T1 g1 G9 W0 g# i. _
  1416. LDA <Palette_Update_Flag
    & s9 [/ h! K9 _. [) Q/ _- j" M
  1417. BEQ Update_Palette_Color_End
    * O* l/ N2 S# b4 p
  1418. LDA #$3F6 Z0 E" H# R! m! h2 U2 Q# C3 r; W
  1419. STA PPU_ADDRESS
    0 @9 E* ^! `  ?! e4 [
  1420. LDA #$0C& F, W! _+ a7 c5 z" O
  1421. STA PPU_ADDRESS
    : {6 c) f( V) w1 o  r% M9 z: p" H
  1422. LDX #$0C) J" @3 ^+ ~4 j: t8 I$ Q
  1423. Update_Palette_Color_Write6 G" F, l6 \: a& a3 [' b: K
  1424. LDA Palette_Addr,X* A8 E* t  K6 \- x+ n' J
  1425. STA PPU_DATA* z# Y+ ^4 x$ Z
  1426. INX
    5 F1 t/ z& Q5 z% V; H
  1427. CPX #$14
    ; W0 y* x3 G6 K8 L- f
  1428. BCC Update_Palette_Color_Write
    $ J/ V# G: I+ n8 S7 O- j% {7 h
  1429. LDA #$00
    5 S' L/ N5 G' s) u* }0 K9 e( q3 a
  1430. STA <Palette_Update_Flag+ r# n4 \. q4 z& k4 ^: N' @
  1431. Update_Palette_Color_End
    6 t+ H! g5 Z6 t/ m% p# K- T- ]
  1432. RTS
    * J* \' H* i0 q1 I1 y* K
  1433.   U' p. a6 j: b/ X2 n# ~
  1434.   m- {2 S2 G3 |1 B" m' N
  1435. Update_Sprite_Palette_Data
    * Z* T- b$ y  f* I; b* ?, G2 e6 \
  1436. .DB $21
    # [  `! t/ l/ u5 @
  1437. .DB $21$ c" D5 {0 G8 }
  1438. .DB $11
    & W4 {' b. A  ?6 J3 N
  1439. .DB $01$ H6 u% c' Y2 ~5 r
  1440. .DB $012 B& o4 @8 [  V9 A  u
  1441. .DB $11) Y2 n% y( ?, i2 w
  1442. .DB $21) l7 n8 B: W" t6 H
  1443. .DB $21
    1 [$ X( m: i: i
  1444. .DB $11, ^7 ~, k" ?9 K4 |. L7 {0 }1 N; F
  1445. .DB $01
    * w7 L0 X8 V6 b; y* @$ u. z
  1446. .DB $11
    9 w, E* a2 C8 ~! g
  1447. .DB $21* ^( F4 {9 C9 n' Q, J
  1448. .DB $21
      n3 A" L$ C" `* `9 m$ H5 D/ ~3 Q4 u
  1449. .DB $11
    0 c* i& v0 Y9 l# \/ u. N. B
  1450. .DB $01: A4 A# a# I! W, d# y9 t
  1451. .DB $11
    ) C2 {' D2 ^3 g* L8 @8 W; K
  1452. ;==============================
    : q7 e! A) ]3 o
  1453. Update_Palette_Data;更新调色板数据% i- k# i' G  E1 ~, i, Q
  1454. LDA Nmi_Time_Count
    7 _6 c" s& @5 D3 k2 P# g) J* x
  1455. AND #$08: F4 j1 I/ f2 x- S3 ^& R! n
  1456. CMP #$083 i: d  T/ r$ j" R
  1457. BNE Update_Bkg_Palette_Data- W( Q/ n$ H5 S- E/ g, U" k6 g
  1458. 9 ~( z7 L. J  Z7 ?- O
  1459. Update_Sprite_Palette_Data_Set! l9 ?# D' R: J9 ]! ?8 `$ g
  1460. LDA Nmi_Time_Count
    $ ?( C) V) w+ a% T( O
  1461. LSR A
    + z8 m# l0 P. u" O
  1462. LSR A
    ) _1 Z/ a! o# f/ f$ p. V. G* A
  1463. LSR A$ X, t' T0 O6 c5 v7 G
  1464. LSR A
    6 x6 Z" D# o. T! s
  1465. AND #$0F
    # _' l* u4 Y" C9 H( C; u0 Q
  1466. TAX# N& x: Y, [; v- \( X2 f
  1467. LDA Update_Sprite_Palette_Data,X
    3 `+ o( p& x7 `* [6 A5 u
  1468. STA Sprite_Palette_Update_Addr3 A* x/ Y" `6 l
  1469. LDA #$01
    % \3 w  J6 C+ J8 n8 {6 p& v
  1470. STA <Palette_Update_Flag3 o9 C) u2 C+ d  z, X8 f, \5 H' F

  1471. 2 p  r0 B4 R$ g: Q2 W
  1472. Update_Bkg_Palette_Data
    ! K% y: M6 Y" M. D5 C" }" C4 o. o
  1473. LDA <Text_Disable_Flag
    % ]5 K/ }* h& y' [
  1474. AND #TEXT_DISABLE_RAM" H. z6 Z1 [: O4 n
  1475. BNE Update_Palette_Data_End
    5 h, t: v2 f& q% S1 i& N
  1476. LDA <Music_Stop_State
    * P! {. J; V: u
  1477. BNE Update_Palette_Data_End7 ?5 P/ K9 H2 x& K+ L( o/ W8 Q

  1478. # \& @6 l% Y: R! B0 H
  1479. Update_Palette_Data_Check
    ' J  O2 z8 Z! F6 D2 u6 \
  1480. LDA Palette_Wait_Cnt
    / O, A6 g4 ]# q! p% f3 D8 A
  1481. BPL Update_Palette_Data_Check_Over6 R; _: u' @5 l- s* R
  1482. LDA #PALETTE_UPDATE_INTERVAL5 y2 T" E' B( @( f; q
  1483. STA Palette_Wait_Cnt
    ) o- n. a" C6 \2 V8 G3 C" d" A& g4 g
  1484. Update_Palette_Data_Check_Over
    ' ^/ r5 Y2 [! y% R+ B9 V0 W
  1485. DEC Palette_Wait_Cnt
    5 \% b8 y7 \: }) w/ x5 S
  1486. BNE Update_Palette_Data_End
    ! m! o) T3 I) r/ [: o) K4 c1 ?$ k

  1487. 6 `; m4 R# k# y" M' R! N
  1488. LDA <Text_Disable_Flag7 [5 b# D9 t$ y( S' u
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME: l8 z" d, B" `! H3 G, x2 P& |
  1490. STA Text_Disable_Flag
    ' S4 M: u' `) I  @) N4 B9 u; W
  1491. INC Palette_Update_Flag( O+ r6 s7 A5 l2 P- y
  1492. 9 I  }: b8 d$ w# L( z  E
  1493. LDA #PALETTE_UPDATE_INTERVAL
    6 s0 L  R! B, Y% O0 f3 e
  1494. STA Palette_Wait_Cnt( [- h; J( S0 g8 k0 ^

  1495. ( U/ X6 [6 ~: U0 i
  1496. LDA Bkg_Palette_Update_Addr& T  U3 ]% `0 E; w) |" F' }* ]; b( A
  1497. CMP #PALETTE_UPDATE_MAX6 U) t- K+ g0 R* A
  1498. BNE Update_Bkg_Palette_Data_Set
    / |* h0 [( S9 q2 o. P
  1499. LDA #PALETTE_UPDATE_MIN - 1
    $ M/ C4 m' X) K  _( L; I
  1500. STA Bkg_Palette_Update_Addr
    ! ~, d6 C  g" v& z1 \! B2 Z
  1501. Update_Bkg_Palette_Data_Set
    ( G% o! L4 T1 ^( }9 V* l
  1502. INC Bkg_Palette_Update_Addr+ K1 W* F; t* s# X% i8 e7 _9 I
  1503. . L3 C2 D5 h/ ^; @" _
  1504. Update_Palette_Data_End
    6 \0 a( \: P( W
  1505. RTS. \( o  c; D1 I5 L( Q1 N

  1506. 5 h+ [0 [2 e5 |9 u* v
  1507. ;==============================
    + I- W) b5 Z0 W: ~4 y0 {% `4 H1 `
  1508. Show_Music_Text;显示静态文本0 ]& W$ R9 V9 l, z% }  p
  1509. LDX #$00
    2 V- R) a9 Z1 b6 y1 W/ j/ A) I5 a, a8 w
  1510. Show_Music_Text_Set
    / o, ?1 z7 L, k5 n
  1511. LDA Static_Text_Data,X0 f( h' F% U7 K& m
  1512. STA <Data_L
    # ^, g) J* x+ O" k" H( V
  1513. INX% {( a8 e' ]3 n2 b6 K7 h
  1514. LDA Static_Text_Data,X& w2 K# x, I- g) ~/ g( q# T! b1 ~/ q+ G
  1515. STA <Data_H% H8 Y7 {  q3 U
  1516. INX
    ; T2 C1 W" x: n' I3 h% H3 u; u5 z
  1517. LDY #$00" W/ }" P, Z% d" q  Z) h
  1518. LDA [Data_L],Y
    ; p1 N# b! Z2 l+ r
  1519. STA <Data_Cnt  j1 K% l1 d1 J# R
  1520. DEX
    # j4 o: i+ {& q) b0 _3 W  M4 H
  1521. DEX' Y; T. F" A1 [) b) s, O
  1522. LDA Static_Text_Pos,X
    2 w' V' e3 j3 ]& V2 i9 s9 y2 W
  1523. STA PPU_ADDRESS
    . ?2 u+ I, U, j8 M1 k0 \
  1524. INX) q1 U+ A* _! P: q1 M
  1525. LDA #$20
    ! |! X& n- s* M4 j: G0 f
  1526. SEC
    4 h. K" z$ I% _# j2 A+ P
  1527. SBC <Data_Cnt
    + s# I4 `. P5 f8 |$ \. z# _9 t$ K
  1528. LSR A8 }1 A& v0 f  O+ w$ U, B0 ^- {
  1529. STA <Data_Buf
    : d$ G. g5 Y: ~5 P; l
  1530. LDA Static_Text_Pos,X! Q- `: q" V% s' D( S% y: V6 v
  1531. AND #$E0
    ; Z( [- I* L* I
  1532. CLC8 G; W) S+ q" S0 p5 n# C
  1533. ADC <Data_Buf
    0 k; @; I; r& Z& j  a
  1534. STA PPU_ADDRESS( O  t/ Y+ s( A% d  y( ~+ B
  1535. INX2 w$ E: |6 `* L& `3 u! |0 c
  1536. Show_Music_Text_Set_Write5 Z, Y9 E; @  m) R
  1537. INY
    7 ^; S/ ^3 @8 x( O
  1538. LDA [Data_L],Y
    # l+ P$ f2 e! e& V7 \4 h3 }; H1 j; K
  1539. STA PPU_DATA
    . N, ?6 @7 C4 x' F0 L
  1540. DEC <Data_Cnt
    3 h& _: Q2 F, i5 w* x
  1541. BNE Show_Music_Text_Set_Write9 ~8 }- j0 a$ \# c
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos" ~/ N$ C9 a) {0 H
  1543. BCC Show_Music_Text_Set# z+ U8 @& P9 P0 s
  1544. RTS
    ' I; o, ?$ i1 f2 O: g# c) Y2 k5 ]

  1545. ( a9 }8 Q  I! D3 G; W
  1546. ;==============================
    6 w0 F6 O; Q6 ?# i8 `
  1547. .IF Track_Name_Pos;显示曲目信息* D/ |! }5 \6 U

  1548. ! ~/ P6 W5 P6 D" g
  1549. Clear_Track_Info) j: R* K& [. l8 a! \7 C, P
  1550. PHA+ G8 P, q% I# }+ h
  1551. LDX <Music_Item_Cur
    4 b" z! j/ E8 w: I1 p+ ?
  1552. LDA Track_Name_Addr_Flag,X& E" i$ R( X3 k7 c2 a  L
  1553. BEQ Clear_Track_Info_End_Ex
    , e! I- n* H+ H0 M* U! Z
  1554. PLA
    ) Y9 y3 a) S0 V8 U1 S/ B  ~

  1555. 9 k1 q! B, D* A# P$ O' V% Z
  1556. LDX PPU_Cur
    ' z5 g- Q7 V$ y8 I& s
  1557. PHA
    $ u, Y# j8 I+ G/ S" r) o, G
  1558. LDA #PPU_MODE_CNT_CLEAR
    , x, y: Z: i& N. }: h$ }. j0 i# p
  1559. STA PPU_Addr,X
    9 [) T; S) X1 j$ C8 P8 |4 W
  1560. INX/ [! |, Y+ i. q3 W
  1561. PLA" `7 ~6 a4 I  I: X6 a
  1562. JSR Show_Get_Track_Name_Center_Pos
    2 U" g2 H# N3 \" ?
  1563. STX PPU_Cur. I: F7 x, R4 ?0 H! e5 T0 u
  1564. Clear_Track_Info_End$ R( P! g" G4 D9 a( q
  1565. RTS
    . B3 j7 @. n$ I; T- E" a- B
  1566. Clear_Track_Info_End_Ex
    + y0 \0 q7 h$ G7 s9 M  ~
  1567. PLA
    4 ]8 ?# [: s2 V, l
  1568. RTS
    ! d" [, P5 I! k# r' p, ]& ?
  1569. 4 U( J& @* s/ I
  1570. Write_Track_Info
    , |  \1 T' j/ B% j  j# P9 [# I
  1571. PHA
    + J5 g# t  q2 n- m/ j& }. r
  1572. LDX <Music_Item_Cur
    ! R8 @+ W! H$ F4 `; [
  1573. LDA Track_Name_Addr_Flag,X
    # C' [! ?( J" N+ o% w
  1574. BEQ Write_Track_Info_End_Ex6 [$ n/ ]2 |$ ?. w
  1575. PLA) @3 P3 }: y8 Z% n' D4 n( e
  1576. % J' ^( k& \* N2 d- s
  1577. PHA: _4 Q" O$ h) s9 S
  1578. LDX PPU_Cur7 }- N* i" \9 B" Q) m- v- t
  1579. LDA #PPU_MODE_CNT_LINE
      t2 H8 a& E9 g% Y* G& z9 e
  1580. STA PPU_Addr,X: F% [3 G& @) ]! m' _% u
  1581. INX
    / L, T. E, ~- j8 q% C& q
  1582. PLA
    4 b& `3 {8 b0 W! g9 r2 L. w
  1583. JSR Show_Get_Track_Name_Center_Pos6 ^' i( q, ^7 ?: }0 W
  1584. Write_Track_Info_Data
      m0 ]- c, v5 S7 e
  1585. INY$ [7 O1 L2 C7 |8 c% a: s2 n3 C
  1586. LDA [Data_L],Y" Z  C, j: f! s
  1587. STA PPU_Addr,X2 X3 U5 P" c3 I6 S5 l: @8 s
  1588. INX
    3 [0 U' `' ~  F: {* S
  1589. DEC <Data_Cnt
    9 z) l  h5 `8 t5 B$ B! n; ?
  1590. BNE Write_Track_Info_Data
    # F- p/ a0 [, l1 q! h& o& ^- n
  1591. STX PPU_Cur
    ' s+ M# }, ?  Y/ f
  1592. Write_Track_Info_End! W$ M% u( A( ~2 v5 f! a
  1593. RTS
    6 G: ~& {- g2 u3 Z
  1594. Write_Track_Info_End_Ex; b- `$ f, A, `9 I7 D
  1595. PLA
    % }8 j. P! `% Y4 e
  1596. RTS
    2 h5 q3 |3 {$ a/ a! R# [

  1597. $ {* [" I$ S, @4 D
  1598. Show_Track_Info
    ' O6 `( ^; t5 K
  1599. Show_Track_Info_Clear  T2 L! `: X; D2 a0 Q% a
  1600. LDA <Music_Last
    8 o* k" u3 `( E/ b, M  H
  1601. 1 X2 B1 M) b3 _
  1602. JSR Clear_Track_Info
    ' V4 w. a# I/ s. S* |

  1603. # W; o6 f, F& n& O! O6 g
  1604. LDX <Music_Item_Cur
    ! C8 z. F7 ~- n4 {7 ~- h
  1605. LDA <Music_Cur,X
    , z. c& U) r/ t+ l) E
  1606. JSR Write_Track_Info
    2 r7 \# i2 \/ q- l: S# z7 X
  1607. RTS
    " t  K4 A- _. b' t% t) x+ u
  1608. * V' V; i8 e8 @9 e
  1609. ;==============================
    " r& [( X& T" ^, ?
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置8 m5 P4 L9 f: w% ]  A: h
  1611. ) c/ Q0 ~3 T. y" S$ c! \
  1612. ;取出集合名索引
    $ ~7 T3 E; `( g* X6 `6 ^
  1613. PHA1 o3 I0 L( _6 X; _3 E

  1614. ! |/ x6 b" A1 W& Q' e: q  F
  1615. LDA <Music_Item_Cur
    ( ]' g2 [9 D2 R0 }; `" X
  1616. ASL A8 A, ]- d, j6 J0 A! t% u% i4 z/ a' E( V
  1617. TAY% @' C  g+ u1 ~" ~
  1618. LDA Track_Name_Addr_Port,Y
    # |( n. Q" b# R5 _' i
  1619. PHA
    8 d" s& e8 B8 V9 G
  1620. INY
    / i* j( |" X: V" v. {4 H
  1621. LDA Track_Name_Addr_Port,Y) {( s5 e6 v! e$ H+ c3 O+ Z( S/ G! s/ L
  1622. STA <Data_H% ^' c% X, ~& W9 v( h3 ^' I. E8 {
  1623. PLA
    0 p+ e: U7 A# h6 L
  1624. STA <Data_L7 p8 ^8 N% h2 L$ F
  1625. * p* y0 n0 T: o
  1626. PLA
    : L! l& q( P5 E

  1627. , r  `5 r) |5 p# r# L; |
  1628. ASL A
    4 r0 F) T2 Y" N
  1629. TAY. b3 W: A- h2 z$ c2 I7 e2 i, y& w/ _
  1630. LDA [Data_L],Y) d9 t" I4 V6 D1 G) q; D" {2 ~* B
  1631. PHA
    1 c" t. h6 O3 W3 R, S* O0 [0 `0 g2 I6 y
  1632. INY
    ( [' e9 R3 l0 a2 h8 |
  1633. LDA [Data_L],Y
    5 x, R# I8 L" K+ e: b
  1634. STA Data_H
    , t6 K6 C! }( @  {! u! x/ w0 p( \: N
  1635. PLA0 z1 U7 B& k7 `
  1636. STA Data_L8 }! u1 `% d: u8 W9 R

  1637. ' r. u5 y, u" g, }3 g. O! ^4 c
  1638. LDY #$008 {8 X( A# W1 v$ Q0 P
  1639. LDA [Data_L],Y
    1 [2 G: L" y, C1 I
  1640. STA <Data_Cnt! w7 s' w* h* o9 }2 {6 @) {* X+ t
  1641. LDA #$201 I0 V" ~; ]% h+ `, a0 Y1 T
  1642. SEC* W, y0 Q4 `- S  x
  1643. SBC <Data_Cnt
    7 A; M: p) ]4 I
  1644. LSR A
    ; \- v3 [4 o) A5 V1 y4 O
  1645. STA <Data_Buf# z& d1 p- _6 g5 t7 Y* F
  1646. LDA #HIGH(Track_Name_Pos)& x* C" B! l  _0 c( Z
  1647. STA PPU_Addr,X2 k/ P5 ?2 N+ l
  1648. INX3 U- Z, D3 ^! }8 B1 X. `
  1649. LDA #LOW(Track_Name_Pos)- T* W# Z, k: Q* a& n! Z
  1650. AND #$E0
    : X& }' d  w5 \! ^
  1651. CLC
    # Z' k* k, L2 o# f* A
  1652. ADC <Data_Buf& U! ?8 ^1 k9 D' r" {
  1653. STA PPU_Addr,X" F' \* L2 c9 B5 W! i
  1654. INX
    ( m3 v! E" [. A8 ^" Z' F
  1655. LDA <Data_Cnt
    1 @" o+ H7 O) [; E
  1656. STA PPU_Addr,X3 [* C/ M; Q, D: ^5 t1 E
  1657. INX
    ( ?3 t) B' Q& y7 ~+ O% k$ ~9 N
  1658. Show_Get_Pos_Center_End* H/ n. A, K; ], D
  1659. RTS" E2 c* ?: I0 w( t7 a4 i" Z: ]
  1660. .ENDIF7 b# j( o0 ?% V: |* b

  1661. $ N5 S% c3 ], S, Z3 @4 y1 \  p
  1662. ;==============================5 T- ^% c" [4 E5 w% N7 @* c; v
  1663. ;音乐端口清除
    ( Y- P3 h1 Z! {) W  B: o
  1664. Sound_Data_Clear
    # t0 e/ r- ]5 ?% Q* E
  1665. JSR Sound_Port_Clear. V1 N, Z. M% N
  1666. JSR Sound_Ram_Clear
    . W7 g) x- A/ b& q2 R& C
  1667. RTS
      j0 ?' l* S' V2 v

  1668.   r7 M% S' ~4 A! V) V- K# y9 B
  1669. ;==============================+ H2 u8 g# `+ N+ u( _( E' J
  1670. ;音乐端口清除
    ' v0 g; z. z3 R# W% d
  1671. Sound_Port_Clear
    " V$ F( `# [" V! W# c, z  o
  1672. LDA #$00
    ) F1 Q/ N! e' `( [* O& E1 |: Y2 {8 Z
  1673. STA APU_STATUS
    $ T! X( m. @7 C# E
  1674. LDX #$00" O1 Q2 D8 h5 ^* s6 c# ^; q6 S
  1675. Sound_Port_Clear_Write: K; C7 H5 m/ I
  1676. STA $4000,X) H2 y7 D) y  ^; v' V
  1677. INX( E7 a2 ]- Z$ U: c' J
  1678. CPX #$14, `9 _; @- X: l. i" g# Z7 J! B
  1679. BCC Sound_Port_Clear_Write
    8 @1 C6 F" w, U) ~  ^% Y4 A* `
  1680. RTS! e- d3 H* ?' g8 n% k# H( P2 D1 n

  1681. ( }  o& j3 O" t/ Z5 L  a. N
  1682. ;==============================, Y7 U" }  D* v6 N
  1683. Sound_Ram_Clear;RAM清除
      Z0 h# K8 @: J1 b
  1684. LDX #$00
    . g$ F5 E9 L1 |+ o
  1685. LDA #$001 q1 ?& r, `( F$ ~
  1686. Sound_Ram_Clear_1
    7 q0 r$ M+ q8 w! n) f. v( k  A4 R) i
  1687. STA Sound_Ram_Addr_1,X) s/ z/ i' s- c* V; z. ]- a: |
  1688. INX1 z* v+ T& [% C- @7 C* p
  1689. CPX #Sound_Ram_Addr_1_Size
    ; }, B0 l; i+ U; v. v. o6 B0 u
  1690. BNE Sound_Ram_Clear_1
    ! U& p; p6 ?9 g
  1691. LDX #$00
    $ ]* Z$ ~2 f, c4 |8 U4 H
  1692. Sound_Ram_Clear_2; X; H+ P0 u/ [
  1693. STA Sound_Ram_Addr_2,X
    ) j( f6 t; I7 N
  1694. INX. E; }* }1 z0 z+ F9 B  s% _
  1695. CPX #Sound_Ram_Addr_2_Size- p/ V+ w/ G4 z1 {% n" n
  1696. BNE Sound_Ram_Clear_28 c4 L+ d4 r& B$ E9 |( E7 f
  1697. LDX #$00
    9 N8 Z# t8 H& K- U! R
  1698. Sound_Ram_Clear_3* w& s/ k3 [9 e* D  ]
  1699. STA Sound_Ram_Addr_3,X; M6 }8 L+ }3 v% M$ a7 ]
  1700. INX7 X: N' L( I. u
  1701. CPX #Sound_Ram_Addr_3_Size% F' {  r2 I5 W7 z( B
  1702. BNE Sound_Ram_Clear_3% w& g3 }4 K8 J7 c
  1703. LDX #$00
    5 R; w  p7 N6 x2 Z
  1704. Sound_Ram_Clear_4
    7 \3 Y$ |* `/ L/ P' y& M2 N
  1705. STA Sound_Ram_Addr_4,X, e0 m# C+ q* s9 g- O
  1706. INX. t' x, A4 z+ l- d; X
  1707. CPX #Sound_Ram_Addr_4_Size
    6 ~  Y" G: l8 a- t* Z# V  A
  1708. BNE Sound_Ram_Clear_4
    % c; I8 v- _  [, _3 ?. S
  1709. Sound_Ram_Clear_5
    ; N, B& }8 m7 p, K" k' _3 J
  1710. STA Sound_Ram_Addr_5,X
    * u& Z. L6 }' u3 h8 U9 ]
  1711. INX$ i+ K1 \8 d, Q; u3 g" j! Y
  1712. CPX #Sound_Ram_Addr_5_Size
    ( N+ s% A& ?, A# ~, s! Q
  1713. BNE Sound_Ram_Clear_5
      M! U( a% Y- V* s) y
  1714. RTS
    7 O, ^1 ?$ e0 T& ]& Q! Y
  1715. ! G$ B1 R6 c( e' K$ e* f' V
  1716. Get_Music_Collection_Name
    1 ^! S/ ~- m; F5 U; O8 S8 N0 O2 K) x
  1717. PHA$ h' {$ u3 ~' F) Z. k
  1718. LDA <Music_Item_Cur( I* x& h0 N( K$ V2 p( s
  1719. ASL A
    , p9 z5 `3 p% J
  1720. TAY1 y7 z% q% u! `7 H# \3 q" Y3 {
  1721. LDA Music_Collection_Name,Y
    9 w& m6 H# X4 @
  1722. STA <Data_L( G2 d/ k& q# V% R
  1723. INY
    / \% f, L2 I3 k, |4 O  T
  1724. LDA Music_Collection_Name,Y
    . w) g( a1 \  N
  1725. STA <Data_H
    ( J/ \' ^# c$ a( Y9 M
  1726. PLA2 T( O" |+ l$ r0 O3 o, |
  1727. RTS/ c2 N" d3 N! Z/ r; G/ t

  1728. . `6 ?/ L3 i$ _2 {
  1729. Set_Sound_Total
    & D) S! m" q4 R& V# u
  1730. LDY <Music_Item_Cur% f! ]. V9 s# L; ]
  1731. LDA Sound_Total_Port,Y
    7 s. b! s3 H: H
  1732. SEC3 Z5 I# z- V0 b+ O6 u
  1733. SBC #$01
      K# L$ v% i. k: I; G& e
  1734. STA <Music_Total6 o0 C9 {- u" k! v; A. V: `0 P
  1735. RTS
    . N" l, S, V4 r; A& P2 M

  1736. 7 S% C/ Q6 x6 M6 S1 Q
  1737. Get_Sound_Start6 o* R) W* ~/ w/ @! s
  1738. LDY <Music_Item_Cur
    / T& p6 ]& d( K1 }3 ~) A
  1739. LDA Sound_Start_Port,Y4 m+ t/ A, v9 ]) e
  1740. RTS
    5 {  _- ?: _( S3 \

  1741. ( ~1 D/ K/ ]* n1 s- I
  1742. Set_Sound_Init_Port
    5 ]' P% V9 M/ }% ]
  1743. PHA1 d: n3 K/ p2 @( H  R4 G# |0 f) o6 O
  1744. LDA #$20
    ; }# N5 w& K1 ?
  1745. STA <JSR_Addr_Op
    . i: \/ i; h' A, U% W
  1746. LDA <Music_Item_Cur
    4 v8 x' c4 N& T8 p5 g5 v
  1747. ASL A3 f7 d. A7 g  J2 Y  s( V8 q
  1748. TAY
    / ^6 _5 A9 P  A
  1749. LDA Sound_Init_Port,Y* S: ~& M( \5 A. _
  1750. STA <JSR_Addr_L8 ]% A, w( _$ t3 F3 _5 X+ [
  1751. INY
    . e7 n9 s  x; d' j" E
  1752. LDA Sound_Init_Port,Y0 b2 U0 v6 s9 \6 f: J8 ~
  1753. STA <JSR_Addr_H" k6 l6 h4 O- G5 @- Q' d: i( G
  1754. LDA #$606 P9 D6 L- C# w7 A9 e' i
  1755. STA <JSR_Addr_Rts
    $ _1 d: o8 d9 O0 d
  1756. PLA
    2 o. o0 F2 |; u: T6 e
  1757. RTS: N9 h: _; d7 _1 M% Y& d

  1758. ! P, O6 e' d: A1 S
  1759. Set_Sound_Play_Port
    8 C0 Y- O# z1 j
  1760. PHA
    , R7 O7 m5 G1 P" j7 F0 [$ }8 J& B4 |
  1761. LDA #$205 a- W& Q  C& p
  1762. STA <JSR_Addr_Op
    ; M( U4 |% a, f% K
  1763. LDA <Music_Item_Cur
    1 `( b% q0 @7 _, K8 H% V0 A
  1764. ASL A% s  K3 Y# Q5 X! U) I& Y
  1765. TAY' |" I4 {* ~1 h4 \' K
  1766. LDA Sound_Play_Port,Y9 |6 x* U8 V# R1 L
  1767. STA <JSR_Addr_L
    3 ^6 B: ~* P3 `
  1768. INY
    " N; W+ {6 X+ }3 R: @% x% w
  1769. LDA Sound_Play_Port,Y# n% t/ s: U& @+ k
  1770. STA <JSR_Addr_H, f# N1 K, i- o/ O; s4 ?
  1771. LDA #$60) N9 C# m* n; z
  1772. STA <JSR_Addr_Rts6 X0 q% \4 S9 k# [7 a) `  a1 d
  1773. PLA0 d/ A+ d6 W7 }2 S% m: N4 m& H
  1774. RTS, t9 M  q) U5 u, `) F! z

  1775. 0 C, w2 J. k, R7 q6 Z3 d
  1776. Set_Sound_Reset_Port
    9 D1 _$ u. W8 I5 U" T4 N
  1777. PHA
      v2 G. F+ _8 M. S+ A( Z
  1778. LDA #$20
    9 P1 ~" n- Y  q9 Q' r
  1779. STA <JSR_Addr_Op# a) z2 m) Q, V+ T
  1780. LDA <Music_Item_Cur
    9 B# J" W- T7 Q' K2 V0 Q% U5 t
  1781. ASL A- K  Y, @* t' c1 l4 |! S' S
  1782. TAY' \/ o6 C% a! h
  1783. LDA Sound_Reset_Port,Y6 n6 f8 J! d' h+ D
  1784. STA <JSR_Addr_L
    " q* V0 ]6 s$ p  d( f: I# v
  1785. INY( Z/ O0 D6 V" z) X! u; d$ f
  1786. LDA Sound_Reset_Port,Y
    6 }8 G9 B' C; a* {. n
  1787. STA <JSR_Addr_H
    2 k$ Q& X! K% T& W7 `' H/ B# j  j
  1788. LDA #$60; p% L- u' _' B" N. M
  1789. STA <JSR_Addr_Rts
    + e7 V: B9 y, p# e% e: a( C
  1790. PLA
    ! x. [# _0 v2 d$ d5 j$ k  X
  1791. RTS
    & t$ a8 n( p2 i

  1792. 5 d4 x3 D7 k! H1 y& F4 B. D
  1793. ;初始化音乐bank
    8 Z7 r( e2 e; f3 \" ?- d
  1794. Init_Sound_Bank; _; A. E$ E/ y, b, R+ c
  1795. LDY <Music_Item_Cur$ h. e5 a  i& {2 Q8 I
  1796. LDA Sound_Bank_8000,Y2 z# [! ]! H6 @6 |9 B2 O
  1797. STA <Music_Bank_8000& V: P- Z6 U5 Y* Y4 q( l
  1798. LDY <Music_Item_Cur
    3 E( M0 v% E7 N0 k+ Y2 n5 K
  1799. LDA Sound_Bank_A000,Y9 j8 y. B1 Z/ q7 X% q2 ]
  1800. STA <Music_Bank_A0003 _  r* Q2 A; E" n: n- G) l. G
  1801. RTS) \+ p% i- b- o! u7 u

  1802. - e- d( E! |5 ?
  1803. ;==================================================) W$ n  q4 {8 z/ S+ g4 @
  1804. Sound_State_Reset;音乐状态重置
    7 o& I" S0 {: ^$ |- V8 E7 ]
  1805. JSR Music_Bar_ReSet        ;重置音乐条  z* ~; z5 T- |% s+ }" n2 \
  1806. JSR Time_ReSet             ;重置播放时间
    - w' s& s7 j4 x! c: A; V* n
  1807. ! [& ]2 l9 L8 z+ M; {& a
  1808. LDA #$00
    + ~: l6 E  Y+ m6 N) i  f# Q8 x/ s7 O! _
  1809. STA <Music_Stop_State
    - r7 u9 o  K) p& z2 b, G. v
  1810. JSR Music_State_Show       ;显示播放状态
    8 [. t' w- g" J3 ^) R/ }
  1811. 8 }# b1 M7 r3 o: y) @9 k2 W" O
  1812. .IF Track_Name_Pos
    7 N$ F. A* ^5 u
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    ' P8 \  ^7 Z+ n; e2 R0 t9 m
  1814. .ENDIF
    - @" T6 B& K0 T1 P: `* p, k
  1815. % y" x( j+ ?/ [7 w2 @
  1816. RTS6 r0 n; V( ~2 O# r" e
  1817. 8 ~! M* i% w7 e: B- D
  1818. ;==================================================3 S6 x0 _) C: X
  1819. Sound_Init_Proc;音乐初始化处理) x1 N2 S7 D3 }
  1820. PHA& V$ b" F/ }  T* k8 b! G# q
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    * R9 g8 [& l" C8 A7 k: i" u* O8 I
  1822. LDA #$00
    5 d9 p2 `. \+ Q3 y
  1823. STA <Scroll_H               ;重设水平滚动
    7 X5 i; B1 q' a3 ~$ ~
  1824. LDA #$0F! w" U( V4 I0 O
  1825. STA APU_STATUS
    # \/ i( D  {* |9 v
  1826. PLA
    9 v6 I6 ~; {0 ~& L+ [. f
  1827. JSR Sound_Init             ;音乐初始化6 `7 t5 ?: N4 n% @: u- ]/ @+ z
  1828. JSR Sound_State_Reset      ;重置音乐播放状态8 D+ D+ Q) x- m, U
  1829. RTS
    - {5 I) ?' H6 A
  1830. 3 {* R: U5 x2 s7 [$ x$ y1 b
  1831. ;==================================================
    . }% U: x! t. C  ?! J
  1832. Sound_Play_Proc;音乐播放处理
    * S3 T+ x% D- W, X
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址. D' J% a1 a1 ]' W, k8 @
  1834. JSR Sound_Play             ;音乐播放* A4 S  E: Y* B) a% J0 [
  1835. RTS
    ( k" S: Y2 S$ r; n/ s. z$ w7 B
  1836. $ t: r% K& p1 O- ]7 v+ j& Q
  1837. ;==================================================( |9 [( g, I, a; ?! n3 S
  1838. Sound_Reset_Proc;音乐重置处理
    & F5 i4 J! f; z5 T) M
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址/ m* a2 g# O$ I1 [* W
  1840. LDA <JSR_Addr_L
    " O' m$ b4 [" q- M2 g, \
  1841. ORA <JSR_Addr_H
    * y( @8 E5 c1 U
  1842. BEQ Sound_Reset_Proc_Default# {. A! \6 ^& n: m& g
  1843. JSR Sound_Reset            ;执行音乐重置
    8 G- c. x; p3 E# \1 q0 l5 |
  1844. JMP Sound_Reset_Proc_Init_Sound* v: t- n4 p- l! X1 ]

  1845. 4 u( J7 `2 [& T* M
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    / Q7 }0 f9 f0 Q2 F3 z4 G

  1847. " V. H( @& Y0 I$ i
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    4 R+ u. R8 ^7 }  k( B) @
  1849. LDA #$00
    , p4 U$ Z, q7 Q  K% v$ G$ j$ f5 }
  1850. STA PPU_CTRL
    * V/ W& @4 V4 T2 k! F+ w
  1851. & c# T6 K! B  a9 ^
  1852. JSR Sound_Data_Clear
    ' D6 c% l9 S# I3 |  Q5 u9 G. v

  1853. 2 T8 v+ r; l, q6 W& K
  1854. Sound_Reset_Proc_Default_Wait
    8 H: f  ^3 X: c& P2 l" B( ^) M; I
  1855. LDA PPU_STATUS
    : A& q+ f- A; O. U/ |2 K' \( i3 ?" c6 Z6 S
  1856. BPL Sound_Reset_Proc_Default_Wait; ?5 m% X* u9 ^3 G3 C
  1857. : b+ ]5 ^# E' ^1 Q$ n7 F
  1858. LDA #$00% q' @. j1 W/ T8 }3 c
  1859. STA PPU_ADDRESS
    , ?! ]+ c* k) E. H- \4 W' [
  1860. STA PPU_ADDRESS
    2 G) Q7 ~! e( T1 E* w
  1861. STA PPU_SCROLL
    ; K+ x1 z% G/ w, m$ d7 z6 ~- `
  1862. STA PPU_SCROLL
    , T0 H1 A* G2 U) P

  1863. 4 L2 a4 f! ]0 n1 W
  1864. ;恢复PPU控制2 U6 I# K+ q! Z# |; ?
  1865. LDA Screen_Ctrl% J1 h8 ^0 A& s' E+ _/ f
  1866. STA PPU_CTRL0 \9 |" _& }; F) X5 M' k' c

  1867. ! j1 B" N+ ?  o8 J# [% w5 e
  1868. Sound_Reset_Proc_Init_Sound* O3 m5 Z# L$ x, y
  1869. LDA <Music_Stop_State, G% L4 n3 ~/ B* k0 J* N5 w
  1870. BNE Sound_Reset_Proc_End% ]' E$ g0 h; T8 {4 l
  1871. LDX <Music_Item_Cur
    - o2 F+ o7 Q1 D5 t8 `9 g- S
  1872. LDA <Music_Cur,X
    : a; Q7 _' b  h% T
  1873. JSR Sound_Init_Proc
    " B( p4 F4 J# V
  1874. Sound_Reset_Proc_End# d. q& d, _' a9 Z+ j0 Z5 _
  1875. RTS5 {* y0 d9 H5 h

  1876. - x1 v% `! i" [- e* E1 V. h/ g/ |) M( }
  1877. ;==================================================: G( n" k0 t4 ]4 L) ?
  1878. Clear_Item_Text;清除页项目7 g2 Y3 \2 H; D: P
  1879. LDX PPU_Cur" K5 e+ t3 ]" s! @
  1880. LDA #PPU_MODE_CNT_CLEAR
    & k' R9 k- v# R% d2 G) l
  1881. STA PPU_Addr,X
    9 d6 N$ [# r4 j  K
  1882. INX
    + e; J, f  Z0 _7 G" Z, \% G
  1883. 7 j. _" x# I0 [$ q5 r. u# x
  1884. LDA <Page_Last
    . z1 q' Q+ P3 [! Y
  1885. SEC4 [5 e( p7 k( B' t- H# y
  1886. SBC <Page_Last_Index
    2 J" \$ K7 S2 `
  1887. ASL A- c4 N: s, d6 N& F

  1888. 5 v# R# ?# d* y
  1889. TAY3 s6 e8 G5 F* G$ @0 M9 b
  1890. LDA Item_Pos_Data,Y
    ) c+ \0 b5 V. B
  1891. PHA* x4 {) s' n* o0 G% c: W  Q. P
  1892. INY
      b4 f; c# V3 J
  1893. LDA Item_Pos_Data,Y
    * I' S+ r; Y8 q5 R9 s, [* v) z% Q
  1894. STA PPU_Addr,X0 o+ n8 n. c  Q
  1895. INX
    " D6 L  A' f3 v) j: `) b
  1896. PLA
    ) v. Z* }+ o2 B4 \
  1897. STA PPU_Addr,X
    ! K4 v+ r! ^) h0 ~
  1898. INX
    $ g9 Q" K0 ]+ G' }" O

  1899. - u6 [% T! a$ o: G# `
  1900. LDA <Page_Last
    / M& o7 ]( u9 ~4 E8 z* e- o
  1901. ASL A
    % x% k% N  d7 d' Z* x0 ]
  1902. TAY
    $ l4 }0 t0 s+ T
  1903. LDA Music_Collection_Name,Y
      ~/ B% P6 Q# g# U' A! G( _5 u
  1904. STA <Data_L
    * b+ R; |1 W- O1 r
  1905. INY
    5 N* k# _. Y1 G) ?
  1906. LDA Music_Collection_Name,Y, s+ i, b8 j. O, D" X( s
  1907. STA <Data_H
    ) _: u5 o/ K6 F9 S7 s0 a

  1908. 1 J) A2 E1 V7 |) b' Z
  1909. LDY #$00
    4 z) r5 A) w+ D* a: h7 K
  1910. LDA [Data_L],Y
    , g* B( E/ m2 l; R- [
  1911. STA PPU_Addr,X' G# n0 G# Q, T3 L, x. R
  1912. INX
    6 N  P* U/ @3 `( M9 N
  1913. Clear_Item_Text_End2 w$ g% ?7 A# c5 w. D" F" A
  1914. STX PPU_Cur0 h0 D$ [/ B% {2 W# M" C# k
  1915. RTS2 ?+ _9 a5 I6 U6 ]

  1916. 1 e  q8 y- t+ M! Z
  1917. ;==================================================
    ( U, q/ Q- x. S3 |
  1918. Show_Item_Text;显示页项目
    : U, @  y. |, }% ~7 u- V
  1919. LDX PPU_Cur! p( Z) S- R" T6 m
  1920. LDA #PPU_MODE_CNT_LINE
    3 U, @) k/ x% k* P' T* X$ `
  1921. STA PPU_Addr,X; }' ^6 t& z( {+ o' S% ~
  1922. INX& L. ]. a: i: k; b: \  p! O
  1923. LDA Page_Cur0 t3 c' D, D& i, X" T
  1924. SEC$ }9 E6 S9 Z6 l; W  I
  1925. SBC <Page_Cur_Index7 e: m! r& l/ _
  1926. ASL A
    4 G1 M  R$ L$ d; L! k5 K2 @
  1927. TAY( S3 j7 p' \& r9 q
  1928. LDA Item_Pos_Data,Y3 P3 E9 S: f, Z& Y
  1929. PHA
    9 Y, L6 M/ J3 E" k
  1930. INY* {1 O1 d9 j' @' E3 |  ?1 P0 i! s) y: U
  1931. LDA Item_Pos_Data,Y
    ( [9 k( M8 z! r$ {
  1932. STA PPU_Addr,X
    ) ~" {9 w' @* d( W: X$ o1 v
  1933. INX5 X& B5 i' E/ W  X$ o2 b# Q/ t8 ]
  1934. PLA
    & Z  T$ E: x# M% h( @% S
  1935. STA PPU_Addr,X
    ; a! o3 C5 L, h) T( ?2 N, n
  1936. INX
    ; L) x6 |: R) B' G5 g- s  {2 S
  1937. " A+ @' K2 ~+ k4 D( g$ S
  1938. LDA Page_Cur
      ^+ A4 n0 |1 d% Z4 L
  1939. ASL A0 z( d7 r+ v0 A# c8 R$ B6 ?
  1940. TAY6 B% G1 |6 W# @: f/ j
  1941. LDA Music_Collection_Name,Y" e/ Y0 z/ ?* k5 d2 ~
  1942. STA <Data_L! L% N5 `& z8 j+ f4 y2 |  ]( C
  1943. INY
    7 c' d0 F7 U; r5 ]
  1944. LDA Music_Collection_Name,Y
    + Y, f" e0 l& N# o) V
  1945. STA <Data_H
    . D4 X- @3 b$ h8 R+ C
  1946. : h) g) o  ]4 L* x9 p: \
  1947. LDY #$00
    3 H) w) k" H0 a6 S  O7 Q% f
  1948. LDA [Data_L],Y
    + _$ W1 O" [2 y* v5 h1 q( s/ q
  1949. STA PPU_Addr,X9 o. d+ E! h+ P7 I! \
  1950. STA Data_Cnt  i, E, {5 Q  g2 c  d
  1951. INX9 a9 U/ {" K$ R. W. u. {# k

  1952.   |- e2 |# _2 n' W; F$ n+ O
  1953. INY
    ) b$ ~8 r6 f, \' C& @. L+ T
  1954. Show_Item_Text_Write
    * j" C1 P1 k  l  s/ {0 o' C
  1955. LDA [Data_L],Y+ O  F+ Z$ R$ u# f% f
  1956. STA PPU_Addr,X
    / {1 s& m  {0 M* A) H. L
  1957. INY( K& e4 d  m: ?5 ?. ^0 \8 A
  1958. INX* H' K) l0 A- w, v5 c
  1959. DEC Data_Cnt- Y8 k3 @; t% \
  1960. BNE Show_Item_Text_Write
    8 v4 ?3 N+ b: Y6 G
  1961. 0 T! `$ r0 M% |/ C3 ~1 i( }
  1962. Show_Item_Text_End: f: T: K" V0 u8 j" N' Z
  1963. STX PPU_Cur
    / E. g2 s9 \. L3 r  v
  1964. RTS
    " V: G3 n" }0 O; L8 U7 H2 |

  1965. % G9 j. M2 E7 X9 d- j) A* R
  1966. ;==================================================( n; K( ^- M' F  V( @
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量' H& @, M2 ^! \2 J3 R% |" c
  1968. STA <Data_Buf
    8 F* d- U# i, L8 v  X& i, g
  1969. LDA #$00
    8 g4 F7 n1 R9 [# f
  1970. Get_Page_Index_Calc
    + b# o2 ?$ a" T! p- s
  1971. CLC
    , R8 {# Y8 c2 V
  1972. ADC #PAGE_SIZE
    " f& Y7 K: L- `: X7 a9 I/ t9 m1 w9 D
  1973. CMP <Data_Buf/ G4 E& ^6 _0 Z1 Q5 W
  1974. BCC Get_Page_Index_Calc
    : R$ v9 }7 \+ U& E0 O
  1975. BEQ Get_Page_Index_Calc_End
    $ L) r0 _7 W7 }* e
  1976. SEC
    ! _- H% w' t8 V' y
  1977. SBC #PAGE_SIZE% o1 O; v. @0 n+ L% X
  1978. Get_Page_Index_Calc_End8 J  W) m& Y# H2 C1 ~. i- s/ m
  1979. STA <Data_Buf
    4 ]6 W. \+ X. b$ N7 f6 A
  1980. Get_Page_Index_Cnt
    # m* m3 i# m# \8 a# u* y' U  _. y
  1981. LDA #PAGE_SIZE' R1 S) [, M3 B
  1982. STA Data_Cnt( R  u2 S$ W  H7 F: {( s/ ~
  1983. 9 i2 e6 @# m9 t, R& h# x7 }
  1984. LDA <Data_Buf. T3 z: ?8 m+ G
  1985. CLC
    6 V* _( u, a6 q5 i* `& U6 k% z( W
  1986. ADC #PAGE_SIZE
    7 D3 k/ ~2 d% h. u: F1 H
  1987. CMP #ITEM_MAX_SIZE' F  f2 T. F( K8 {" b6 I- M+ f
  1988. BCC Get_Page_Index_Cnt_End& ]  o, r' U$ M& X3 V% P
  1989. 4 ]$ I/ H4 D( j: ~
  1990. LDA #ITEM_MAX_SIZE
    ) w, g. M7 g* H& H  `% U
  1991. SEC) ^# T5 Q; `1 B! ?  P
  1992. SBC <Data_Buf+ }7 p- j* i, P! h" u4 Z5 E
  1993. STA <Data_Cnt& _) w3 x5 ]3 Q# }3 y

  1994.   H; n8 q8 G+ L+ l% _
  1995. Get_Page_Index_Cnt_End* b( Q) `) a) m; d, v0 S6 r
  1996. RTS2 |9 d9 D, X6 T1 H* O' ?6 @8 S. Q
  1997. : N+ {. x/ B7 t& o6 D( n
  1998. ;==================================================8 |, I( d0 a/ L" I. n4 I
  1999. Get_Last_Page_Start_Index
    & m# u; Q6 x0 L: V) u; m# j) a
  2000. LDA <Music_Item_Last( p9 \( F8 J: _' C- f. C" y
  2001. JSR Get_Page_Start_Index' O8 g( X/ g2 T
  2002. LDA Data_Buf7 ^. l* X- o. X2 f, C
  2003. STA Page_Last6 [) P/ v  o3 ^; A
  2004. STA Page_Last_Index- y: o4 i+ d0 T/ n7 p7 d+ q. C3 c
  2005. LDA Data_Cnt$ T  c. o( \$ W* K) N
  2006. STA Page_Last_Cnt
    ' b& {" I) `2 b' D
  2007. RTS
    # Z2 s- j: Z1 B& v4 ?
  2008. * w6 t5 ?7 D( o
  2009. ;==================================================
    ! n- V) O3 X7 ]; k1 d
  2010. Get_Cur_Page_Start_Index' l; j- I4 }6 q5 |2 c% E! r
  2011. LDA <Music_Item_Cur  E+ y  i4 u' q7 n6 W4 A% I
  2012. JSR Get_Page_Start_Index
    1 e: w0 a, U+ @. s* C, G$ O
  2013. LDA Data_Buf
    5 y- a. N: L; @- E# Z# C/ \4 D) S1 I
  2014. STA Page_Cur1 }" d& C8 ?, q
  2015. STA Page_Cur_Index3 K1 ]' q  S/ N* q" g
  2016. LDA Data_Cnt
    $ d( ~! k3 y( }
  2017. STA Page_Cur_Cnt2 B, w, f" K" p* i% c- R! [
  2018. RTS
    ; M# h3 V2 C! j# Y( v" t; G
  2019. + |! K, G8 G! e6 y
  2020. ;==================================================' Y  i$ Q$ M$ ^  j
  2021. Show_Page_Text;显示页文本7 N8 _) ~  j7 _( C. H* Y
  2022. LDA <Text_Disable_Flag
    0 R/ F& t- Q5 J' i) ]! w
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM  ?5 s1 @2 b3 `. W
  2024. STA <Text_Disable_Flag
    2 f0 n4 l4 S0 d0 a
  2025. 0 r. S& ]& i( [% f
  2026. JSR Get_Last_Page_Start_Index8 S8 X8 H6 J% q. _2 S; Y
  2027. JSR Get_Cur_Page_Start_Index) G2 v: n6 C) b, H6 U4 S9 r2 X
  2028. 5 s' s8 J/ I) D% K
  2029. Show_Page_Text_Set
    5 A, x7 h, [! x

  2030. 6 h* r3 |6 \1 Z) a
  2031. Clear_Page_Last_Item;清理上一页. P+ L4 t4 p0 W& j1 T: A
  2032. LDA Page_Last_Cnt# r: _/ B% \# O# v& m; h+ J
  2033. BEQ Clear_Page_Last_Item_End! N" \" l6 F! r) @
  2034. JSR Clear_Item_Text
    8 Y% z1 k5 U+ g; v) f
  2035. INC Page_Last
    ! n: c! J) R# |5 L
  2036. DEC Page_Last_Cnt
    / `) h* h3 W6 L% s" U) ^# c, s
  2037. Clear_Page_Last_Item_End, c8 k  k6 }( ^4 `; I7 e: S
  2038. ) ~+ U; H+ [; ~' v/ P$ ]7 t
  2039. Show_Page_Cur_Item;显示当前页
    * \  g$ {5 i9 i3 ~) U
  2040. LDA Page_Cur_Cnt1 p! @0 G- h$ W: m
  2041. BEQ Show_Page_Cur_Item_End1 L+ {! F* U  t3 |- w' q
  2042. JSR Show_Item_Text
    & c; f  O/ J/ Z/ x1 S0 O
  2043. INC Page_Cur
    ! f, r" y9 W; ]. C: p' R
  2044. DEC Page_Cur_Cnt2 p8 G( t& m, s) c6 K2 I: U% b
  2045. Show_Page_Cur_Item_End
    4 J7 F( g) [& m6 l: U7 g. Y
  2046. 5 l! W0 M$ }+ P1 n/ D
  2047. INC <Time_Wait_Cnt1 p' k4 a  ~, c" w! a- W. g* \- |
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作- e. n2 ?# l! Y
  2049. LDA <Time_Wait_Cnt
    8 b$ P8 S) d7 w2 l5 B( M  x
  2050. BNE Show_Page_Text_Set_Wait
    7 S7 ?2 N3 Q$ ]0 N8 d3 A- C

  2051. 6 V) F6 h" M5 @' X- c+ j
  2052. LDA Page_Last_Cnt
    . S8 Z1 i$ o* x2 V+ F4 T( f/ v$ i
  2053. ORA Page_Cur_Cnt
    & B) W: Q( w6 s7 w  L  \4 @- y
  2054. BNE Show_Page_Text_Set# o7 T. P2 U6 E" n
  2055. LDA <Text_Disable_Flag
    ! |  A6 [! s5 S& i' s6 q
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    # M  N4 A  P# X1 J
  2057. STA <Text_Disable_Flag: Y* U7 o8 q* V# @/ ~4 S9 l5 ?
  2058. RTS; I4 [$ D' A  m. a2 A  n  E7 t2 H

  2059. ! {$ w. T  A% G* n: R; M
  2060. ;==================================================4 b1 Q) ]* ^4 i7 b; t) s
  2061. Last_Item;上一项
    9 ~& v1 E, K+ u
  2062. JSR Clear_Last_Track_Name
    - ^: x& Q7 o) ?+ x" |) H$ C
  2063. JSR Disable_Text_Draw
    2 q8 C" b# z: R; s# \; k  _: [

  2064. " q% a9 J: ^+ A4 P6 J( c9 L- t
  2065. LDA <Music_Item_Cur
    . t6 {+ {: Y, L3 P4 h1 u; D
  2066. STA <Music_Item_Last
    ( |, ^2 q9 I" W: ^
  2067. ! R1 s. E& _+ A5 x7 S% R
  2068. JSR Get_Last_Page_Start_Index
    , M. D& A4 q' T: E( O  O
  2069. " S( a5 i! e4 i+ p, u4 G5 F! T2 l
  2070. LDA #$00
    9 g! O; Z& ]- s3 H, {+ t6 f
  2071. STA Data_Buf
    # j( X( u  U# O+ _8 K9 S* L
  2072. . y' Z( g4 }, n2 o
  2073. LDA <Page_Last
    9 N6 a/ [; I( e) _7 S- ~7 L
  2074. CMP <Music_Item_Cur
    $ X' l. H0 q7 O4 }0 q; l
  2075. BNE Last_Item_Begin4 \: z  Z7 Z0 Z4 u( q1 w/ ^

  2076. ; s) [0 Z  y& p( a' e5 R# e
  2077. LDA #$015 F6 P! o% @: z" Z" U2 s
  2078. STA Data_Buf; ^$ J/ C$ g: j; K1 ?* ~" F
  2079. Last_Item_Begin
    ; ^) ^9 @: E# @: Z4 S' P2 T
  2080. LDA <Music_Item_Cur/ G$ J, J$ R+ J) |. Z
  2081. BNE Last_Item_Set
    3 k) y& g) m3 Q9 \
  2082. LDA #ITEM_MAX_INDEX + 1
    % O7 M0 E/ n2 R8 U3 u  m
  2083. STA <Music_Item_Cur; c* U5 p! j0 n: z0 V8 m9 m+ U

  2084. 5 R" j8 h, }5 ~7 f% w3 |
  2085. Last_Item_Set  s& z" ]  H1 F
  2086. DEC <Music_Item_Cur3 U' \$ z9 I+ }7 D+ T
  2087. LDA <Music_Item_Cur
    7 l# q1 X" Y- a8 O
  2088. JSR Reset_Current_Music
    6 d: g8 C; n: o: Q
  2089. # |) K* H' ?, m; A+ _# R
  2090. Last_Item_Play( ]' P7 D" {7 E3 t5 ]- C7 I# \
  2091. LDA Data_Buf
    * {5 J# T+ l8 ^9 N% Z, k- u( ~
  2092. BEQ Last_Item_End
    ! }& D( ?4 x4 ^# l! d
  2093. JSR Show_Page_Text
    6 ~; H" x2 @/ M" h, p% Y0 n
  2094. Last_Item_End
    ; P* h( M' h0 x% S" v7 S$ d$ l
  2095. RTS
    0 v* q& B( E3 @/ k% a
  2096. $ ?  T. [3 \& |5 R! J
  2097. ;==================================================
    4 n3 t, K, b) `" Y7 t; j7 p  u
  2098. Next_Item;下一项
    * w* Q* F: b% X' I. v# D
  2099. JSR Clear_Last_Track_Name
    1 n  N0 b2 v' [6 Y6 ]& x8 U8 `1 E
  2100. JSR Disable_Text_Draw4 l3 N$ o4 H1 R/ O0 @9 Y
  2101. 6 y! s4 ^  E, U$ f8 ]
  2102. LDA <Music_Item_Cur6 ^6 ?" H/ q; A
  2103. STA <Music_Item_Last
    9 y7 V9 o$ i/ y5 m9 B+ X
  2104. 8 h2 K/ V; m0 f7 r! I8 g
  2105. JSR Get_Last_Page_Start_Index+ {7 n' h8 K# ~- W, @5 S+ n

  2106. : O5 z& ^2 Q" i  `8 d4 l
  2107. LDA #$00
    ( d, n9 Y+ W: X5 i1 Y
  2108. STA Data_Buf7 g  X& ?  t# C

  2109. 3 H* _6 Y2 [% R1 K7 E
  2110. LDA <Page_Last
    % W, k7 ?  H2 U: S( W
  2111. CLC
    3 W  p% h8 N) R
  2112. ADC <Page_Last_Cnt
    0 y: d3 `' k' p; @# h3 ]
  2113. SEC
    * G8 c+ c; b- w4 |
  2114. SBC #$01
    1 ^% ?$ f# u: O! _' v# j' y0 \
  2115. CMP <Music_Item_Cur
    4 _- x  m, ~% @
  2116. BNE Next_Item_Begin
    6 l* D: V* C: C: o6 `) T

  2117. $ i# ?7 d. A8 C" N
  2118. LDA #$019 V- J: j3 t7 t, C# Q* G0 Y
  2119. STA Data_Buf
    " E5 ~8 W4 Z" x
  2120. Next_Item_Begin& F9 T+ U, f! T
  2121. LDA <Music_Item_Cur
    0 `+ \- s, V+ p% _/ ^' [- J
  2122. CMP #ITEM_MAX_INDEX
    . C" Z+ K" r0 @1 R( @
  2123. BCC Next_Item_Set
    % P/ x. I9 _( o9 y. k
  2124. LDA #$FF
    , C' ]# K! _6 Y8 m. j
  2125. STA <Music_Item_Cur" O. \, |7 I5 H( e) o
  2126. Next_Item_Set
    " O; P' B  D8 r) }! E0 T* c- k# ~. {6 `
  2127. INC <Music_Item_Cur2 f7 x5 o/ x' f
  2128. LDA <Music_Item_Cur
    " i2 d7 p! g/ D# L+ [) R6 P
  2129. LDA <Music_Item_Cur; W/ v+ Y; E; E: E
  2130. JSR Reset_Current_Music- a3 }& J. t' d" |7 o8 U5 y! n. A
  2131. Next_Item_Play, [  N* c6 i" X  o- c; Z
  2132. LDA Data_Buf
    : \" M1 D9 p$ a# i/ J3 C3 B
  2133. BEQ Next_Item_End2 W5 J+ j3 g% b! \7 D: j
  2134. JSR Show_Page_Text
    / M) W# i6 R  q* ^! y7 G& y
  2135. Next_Item_End
    1 `- S+ r1 `, w; B
  2136. RTS
    8 s) D) i& Y( F0 M! X

  2137. * q3 x& I. F8 C. k* V
  2138. ;==================================================
    * Y# r. \9 w9 ^/ m
  2139. Last_Page;上一页2 e+ H9 G0 y1 M( P  O$ V
  2140. RTS
    " h! L% y' H% A% }7 F$ V1 U. I" d

  2141. $ X& @, E$ e6 A
  2142. ;==================================================
      s% [( O6 Z7 G
  2143. Next_Page;下一页, o) K8 x: [& D1 s& j
  2144. LDA #PAGE_MAX_INDEX
    2 z" _9 }( n5 V7 u, I( _
  2145. CMP #$01# Z4 A$ R1 a8 c; U: X8 L( W& i7 P
  2146. BEQ Next_Page_End
    4 w3 O; {+ p% H* o9 B' Q0 a

  2147. , }. w# y5 _$ a6 y
  2148. LDA <Music_Item_Cur( ^, i  D: Y: G/ f, Y' [
  2149. STA <Music_Item_Last+ H' _+ H: V9 j; j; e

  2150. $ R! ~) ]0 T% y) e5 X/ |3 F
  2151. JSR Get_Last_Page_Start_Index" I# h( s7 v6 f) S) I/ R
  2152. ! A* k' y) x3 F/ T
  2153. LDA <Page_Last_Index9 p, g* d3 l" m( s2 c
  2154. CMP #PAGE_MAX_INDEX
    ! _/ L. X! X/ O+ k. y+ J" Z. u9 S
  2155. BCS Next_Page_In_End_Page$ j) G2 {# C/ f8 l# m# u

  2156. 7 J! c/ |' f8 L- _: P
  2157. Next_Page_Not_End_Page;不是在最后一页
    6 z$ z6 h0 \( H2 M& k$ ^( L+ F
  2158. LDA <Music_Item_Cur$ P+ ?* _4 Z$ ?: V. q1 H
  2159. CLC
    & i8 t- Y! R( X! |/ I5 m
  2160. ADC #PAGE_SIZE
    9 h6 ?* R9 q' {" G, H  j6 \/ f
  2161. CMP #ITEM_MAX_SIZE% K( Z/ U/ H% w# F8 f$ b% O( y
  2162. BCC Next_Page_Not_End_Page_Less
    - K# d4 O3 M1 ?% W0 a3 b, J1 f
  2163. LDA <Music_Item_Cur3 r5 S# S; m6 D% s8 k
  2164. SEC
    0 ]- {4 [0 @, T  n
  2165. SBC <Page_Last_Index
    ; m) O/ H; Q" z' I2 `
  2166. CLC% s; I- x. }0 z8 \* ^  h4 p; u
  2167. ADC #PAGE_MAX_INDEX. x8 u, o& ?' Q- `% Z2 v# n
  2168. CMP #ITEM_MAX_SIZE
    : U5 P1 K, E" y* }5 {0 v3 f
  2169. BCC Next_Page_Not_End_Page_Less
    # h4 J% H( h& {( u4 e- V
  2170. LDA #ITEM_MAX_INDEX9 l0 h- ?$ ^; X6 l" O$ @
  2171. Next_Page_Not_End_Page_Less
    4 R2 y1 D6 |2 w( U+ u
  2172. STA <Music_Item_Cur6 f! Z9 n: K  [) o
  2173. JMP Next_Page_Reset. v* T$ l! P7 J: [! P) u2 U

  2174. 6 H# T7 W) G# c
  2175. Next_Page_In_End_Page;在最后一页' d& ?: L+ m; A9 ]' j
  2176. LDA <Music_Item_Cur
    & [. n  m/ G/ J# k1 P/ q6 B
  2177. SEC' z5 K; z2 B- d: t& U8 z: }/ w
  2178. SBC <Page_Last_Index
    2 a- J5 X+ Q3 r$ j, l  \
  2179. STA <Music_Item_Cur" S2 G( B" r3 f3 a* P/ M
  2180. 9 ^) K$ ^8 e( S  Z3 |! f+ k  e3 _1 b
  2181. Next_Page_Reset
    ; q: p& V  p% a5 P, ]) M# l, z
  2182. LDA <Music_Item_Cur
    9 |0 }( q/ G5 C$ G% U( n, ?1 F+ n7 M
  2183. JSR Reset_Current_Music
    / U+ {/ a# A1 M% [* h: C9 o: @
  2184. JSR Show_Page_Text
      b4 v  M" I" j0 H& _% n) x
  2185. Next_Page_End$ S1 U3 A4 _+ S* W" d, i* I8 f
  2186. RTS7 F" S+ c- |4 m4 A3 s1 ?( y
  2187. 0 V& C& J. y& ?8 V9 C* N; v
  2188. ;==================================================
    ) n8 m+ I% x$ K; t, v0 r! c4 L. M$ ^
  2189. Disable_Text_Draw;禁用音乐条刷新
    # h; \; Z1 u( z) Z: Z/ M: c
  2190. LDA <Text_Disable_Flag
    - z7 z& C8 V- f$ k
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME" H7 ?% u, V* f4 W
  2192. STA <Text_Disable_Flag0 s6 _3 m" @: I) A6 j
  2193. RTS+ F; [# e  {2 w$ B: `6 j8 t) U

  2194. . @* b& h! R. v! M
  2195. ;==================================================
    " p2 h7 W# |8 Q6 ?$ Y. Y) X
  2196. Clear_Last_Track_Name;清除上次曲目名
      x3 b( @0 H, o, y  L% a3 Z
  2197. LDX <Music_Item_Cur8 Z1 Z2 z7 n4 M6 l  Q6 |
  2198. LDA <Music_Cur,X
    ! ^/ J' N$ X. k. {' `$ h+ a! I! b
  2199. .IF Track_Name_Pos+ C+ \8 e+ b4 n7 n7 H
  2200. JSR Clear_Track_Info
    % U, J" e% K- C% }6 W) g  G7 l
  2201. .ENDIF
    9 @, w; r! T' E4 c% @
  2202. RTS
    1 N8 z# b8 U) O" t# |

  2203. 2 \  |; F7 _8 a2 _0 k
  2204. ;==================================================, ]3 e- f6 T: k+ i+ i- K7 s
  2205. Reset_Current_Music;重设当前曲目8 \, P3 j' N8 A2 \0 H

  2206. 3 L. A$ D  E: b0 S+ s; s4 ~5 L
  2207. ;写入当前总曲目# W! K& h6 N' E) s
  2208. JSR Set_Sound_Total
    8 Z7 F& S. t% u
  2209. LDX <Music_Item_Cur
    8 a& ]) I, K4 `. b8 q! W

  2210. , F: b7 v% C6 n; ^/ g+ @
  2211. LDA #$00
    5 p# H) }4 J2 h' Q6 f" e3 _
  2212. STA <Music_Last
    5 l4 M6 F: f+ p. n9 ~

  2213. 6 J( n, u5 f2 g5 i% m, x
  2214. JSR Sound_Reset_Proc8 Z: i5 y4 m1 c) u: C$ ?. o
  2215. JSR Music_Show% c; i* D/ N9 K
  2216. RTS
    % E$ |- h3 S5 `+ E6 T' m

  2217. ; J3 g, U3 \% d, T( Q6 I
  2218. ;==================================================3 _6 d4 K& I0 |8 x5 g  P
  2219. Music_Song_Stop;音乐停止
    * b( Z7 j# i: {, H' v% b
  2220. LDA #$01
    3 }/ e/ J. n8 A1 k, t+ b
  2221. STA <Music_Stop_State( h: s  q) G" a8 l" i# w1 ?. q
  2222. JSR Music_Bar_ReSet
    7 t( j, v# L' k8 g% v3 E5 \- o
  2223. JSR Time_ReSet
    ) i, o6 R) Q5 O9 D$ m! ?* G
  2224. JSR Sound_Data_Clear: \0 t* Q& V7 P' ~6 ^4 ^
  2225. JSR Music_State_Show  ]- p; y, L+ ~
  2226. RTS
    ! M# S+ k. ?, ~) {2 g8 ~3 I
  2227. 9 O2 e  I( v! G( h) a2 d
  2228. ;==================================================% m2 o, e3 o/ m5 T
  2229. Music_Song_Play;音乐播放% ~# o0 S' f+ G% D0 Q2 w; s8 Z( \
  2230. LDA #$00" ]3 t, j8 e% d
  2231. STA <Music_Stop_State
    8 ^3 J3 T# T8 p0 ^# i
  2232. LDX <Music_Item_Cur
    4 o$ X& z, L# `. \6 F4 E2 g; v
  2233. LDA <Music_Cur,X
    / l" Q! L2 d* |* d
  2234. JSR Sound_Init_Proc" [. m3 h& g7 U. B, P
  2235. RTS
    ' o% J( ^# D5 E+ Y" t! M2 g
  2236. + f3 W; }' G: h, Y; C( c* E0 \$ x
  2237. ;==================================================
    % c& A5 G4 o1 c( i* ]
  2238. Music_Song_Last_10;上10曲
    5 y7 a  R; Q4 x1 D, _) O
  2239. JSR Clear_Last_Track_Name. \8 O+ g/ O9 r/ \5 L. @
  2240. JSR Disable_Text_Draw1 t6 o# d, O$ R) l* E2 t8 z2 c/ g
  2241. LDX <Music_Item_Cur% e# v9 g! f, G
  2242. JSR Set_Sound_Total. D9 D! I; s, P% w0 L5 ]1 e3 R
  2243. LDA <Music_Cur,X
    $ _! P9 @2 }+ p; ]
  2244. SEC
    4 [6 g' ~9 E6 E' e
  2245. SBC #109 O+ ^1 h2 O; j, r- f! s. f
  2246. BCS Music_Song_Last_10_Set9 D7 k1 y8 k! _. a
  2247. LDA #$007 I$ w$ P4 ]* Z' `+ P+ O
  2248. Music_Song_Last_10_Set
    4 X7 v7 p+ h" J& L' d  j% z  T3 \
  2249. STA <Music_Cur,X  V# X$ c, S! w- e/ n# N
  2250. JSR Sound_Reset_Proc  f" i7 m, N; O' D7 Z
  2251. JSR Music_Show& l, O) d* A3 [% c* l/ Q
  2252. Music_Song_Last_10_End* Z( y  i- N6 v1 ?+ p+ B3 ~
  2253. RTS
    ( I. L9 z* E0 B

  2254. 2 T, g8 ^* a. j6 L- l9 \: A3 f
  2255. ;==================================================5 g3 V' I# d. ]
  2256. Music_Song_Next_10;下10曲0 K$ o5 k5 f+ D* a0 ]4 K
  2257. JSR Clear_Last_Track_Name
    7 g7 ~( s+ m- P! ?( w8 O/ o2 ?8 Y
  2258. JSR Disable_Text_Draw
    , t. H# P3 Y2 O9 [8 h
  2259. LDX <Music_Item_Cur( V4 A$ y  Z' W0 [9 k0 ^  I
  2260. JSR Set_Sound_Total/ p. Q5 k9 H8 S; v  i( u  q
  2261. LDA <Music_Cur,X
    + p/ b7 V7 f2 t/ b2 D
  2262. CLC1 O' K6 c' h7 @/ o( S
  2263. ADC #103 W+ I; m8 Q' `  K, S
  2264. CMP Music_Total
    6 u% a# y$ i+ {. k3 j, L9 \8 d
  2265. BCC Music_Song_Next_10_Set5 q5 W. V0 T" x
  2266. LDA Music_Total0 i4 v9 A8 Y: k' T) L' D
  2267. Music_Song_Next_10_Set
    5 |# J. r8 U" D) f
  2268. STA <Music_Cur,X' g' J7 L* J1 O; M$ @6 A, ~0 n
  2269. JSR Sound_Reset_Proc: E" _7 G8 F) |+ j
  2270. JSR Music_Show
    ( z* y5 G  K5 _; j
  2271. Music_Song_Next_10_End% j4 x* Z) Z" r2 J* K. \
  2272. RTS
    9 B3 r! f2 h' W6 x8 G

  2273. 2 G; C, i9 q* H3 i& W* o* B
  2274. ;==================================================! u1 b  d0 o" f+ B8 }; V+ h
  2275. Music_Song_Last;上一曲
    ' e" ^3 B3 y/ l# s4 j, C
  2276. JSR Clear_Last_Track_Name
    $ D( @2 Y1 w% j0 L$ _+ u
  2277. JSR Disable_Text_Draw0 |* t( _: Z/ {; v) p7 V( n- X& x
  2278. LDX <Music_Item_Cur
    : `# z: p8 f/ n' o2 O: `* M- N
  2279. JSR Set_Sound_Total" t+ m7 `  ]# C4 j* @4 j2 G% G& ]
  2280. LDA <Music_Cur,X' T* q; d0 Y0 z  S" z0 P/ Q1 Y
  2281. BEQ Music_Song_Last_Set
    " O9 e/ \/ |1 `
  2282. DEC <Music_Cur,X
      N0 y# A, W( E- |2 d( u3 v0 d
  2283. Music_Song_Last_Set: F7 K, P) K5 o/ ~  R) x: j% q3 Q9 l
  2284. JSR Sound_Reset_Proc
    0 F7 _- k7 e& s$ b
  2285. JSR Music_Show, U8 N* M. ~3 l3 U# }3 v$ ^0 K
  2286. Music_Song_Last_End; s  G0 `: e! n4 Q: g+ T; |
  2287. RTS
    4 L, |" j) V- U! D1 N& ~

  2288. & T! ?6 E. S( i8 ]. h1 C$ P6 G$ R! `
  2289. ;==================================================* ]) O2 d# S  t
  2290. Music_Song_Next;下一曲+ z3 E5 q1 w. ^- `6 R$ \8 R
  2291. JSR Clear_Last_Track_Name
    # Q" F2 h+ e; K% [
  2292. JSR Disable_Text_Draw5 z+ P; n9 P. D) |8 O& J/ x- t7 v
  2293. LDX <Music_Item_Cur& E$ \- A: K4 b. y; h
  2294. JSR Set_Sound_Total4 r+ Y: K3 d0 c! g* j
  2295. LDA <Music_Cur,X
    : \, e; g/ r4 ?2 v: U% m# w
  2296. CMP Music_Total
    ) `/ f7 M; T+ \5 `" B( t  q2 S
  2297. BCS Music_Song_Next_Set. @+ r7 Q9 J( b# j% D8 s. a8 {" x5 D! b
  2298. INC <Music_Cur,X
    3 a  h) ]4 g, ^! a) m
  2299. Music_Song_Next_Set
    8 I9 M1 S" }4 B, m" ], T
  2300. JSR Sound_Reset_Proc
    * e0 _/ l9 E$ R
  2301. JSR Music_Show) ?3 g4 @" \) O; k0 }
  2302. Music_Song_Next_End
    1 Z& f" k* @, Y; m) c: X6 n; T
  2303. RTS0 a! y, G; ^) v4 |) h& z1 a* T

  2304. + k3 @0 h: r% k2 h" p- S
  2305. ;==================================================
    % {; w3 I% z: i0 O8 U; J* L
  2306. Change_Select_Item;改变当前选择项0 x0 ]( U+ _0 D- H4 b7 F
  2307. ;--------------------------------------------------! G' f% J# V! r0 [/ r1 D
  2308. Change_Select_Stop_Play_Item;停止/播放  N2 j- J9 E5 E% w" \
  2309. LDA <Key_Once1 x+ p( {& U) z
  2310. CMP #$10
    1 S/ M2 W; [' U4 ^2 n* y
  2311. BNE Change_Select_Last_Item1 _$ t, w' M1 ^( L9 H
  2312. LDA <Music_Stop_State5 G/ h$ G6 [/ u8 o5 V
  2313. BNE Change_Select_Play
    2 d8 M+ W2 n) _; f6 H. ~6 P! O* n
  2314. JSR Music_Song_Stop
      u5 y/ V) `. I: K
  2315. LDA <Music_Stop_State2 ?  }8 G' ]( q3 ~5 C! t
  2316. RTS
    $ }7 c1 u; ]' L# N
  2317. 9 c6 C( N* u( E" w) b7 \
  2318. Change_Select_Play- S2 P# l/ q) j- c
  2319. JSR Music_Song_Play
    5 f  z4 d5 Z# S/ y3 F
  2320. RTS- ?) x4 K. Z0 G# L0 ]* L

  2321. * L2 K5 r: A- F. `! L$ l5 c% \- u
  2322. ;--------------------------------------------------
    / v' K9 X- `$ s" f: l# }
  2323. Change_Select_Last_Item;上一个专辑
    ) ?: O4 Y! W' w
  2324. LDA <Text_Disable_Flag
    ' _) ?4 c5 t6 j. L- M
  2325. AND #TEXT_DISABLE_ITEM
    . `5 ^; N% W& L
  2326. BNE Change_Select_Item_End
    2 U  v1 L/ J5 m' r+ k% V6 h( m
  2327. LDA <Key_Once
    & H+ K0 X' `& [5 j
  2328. CMP #$087 W9 x1 _$ s, O7 U6 W" Q7 q
  2329. BNE Change_Select_Next_Item
    + G) D/ m$ r" z1 x0 `, {
  2330. JSR Last_Item
      L& n0 R3 J- S! T1 e: m$ x
  2331. ;--------------------------------------------------
    4 x% `' X, {' o, M
  2332. Change_Select_Next_Item;下一个专辑
    6 a% o  J2 L% A9 g
  2333. LDA <Key_Once3 s; q$ R8 N9 d; j# U
  2334. CMP #$04  b6 |% a2 p6 k, [. u& A+ w1 \1 p9 p
  2335. BNE Change_Select_Last_10
    - L6 V, \: u  ^- F' c
  2336. JSR Next_Item/ a. a  k" m. ~+ e7 ^
  2337. LDA <Music_Item_Cur# x1 s: S7 ~( b6 A. b
  2338. JSR Get_Page_Start_Index
    , o. }7 _" A( O$ ?6 {
  2339. ;--------------------------------------------------0 C7 _& @, {0 |" b* E' r3 q$ B
  2340. Change_Select_Last_10;前10曲
    1 k6 G9 K# v! o( T& R$ k5 O4 X$ {( \
  2341. LDA <Key_Once
    0 y) F: E- D% p% h9 {8 ?# U/ C
  2342. CMP #$40
    1 l2 ~$ b" f5 ]9 k) \4 f4 e- K
  2343. BNE Change_Select_Next_10/ D0 u% }* a5 y. e& Z
  2344. JSR Music_Song_Last_10
    7 v! `7 C9 f- b* C$ V8 t, M& E4 U' Y
  2345. ;--------------------------------------------------
    " w" F  ^. W! v# E6 X8 w
  2346. Change_Select_Next_10;后10曲
    # Z, f( W: ^( ]6 U  R
  2347. LDA <Key_Once
    ( R, \7 ?+ j5 n& p! U
  2348. CMP #$80
    2 k) Y& `: T' h9 l& n( Y, [
  2349. BNE Change_Select_Last
    / p2 L; ?+ \1 f5 p0 B! v, G( b
  2350. JSR Music_Song_Next_10
    . U7 ^& }( L5 T. u3 {: ^4 H5 g
  2351. ;--------------------------------------------------1 C% a- \" G" Y% P% S- u$ N
  2352. Change_Select_Last;上一曲
    2 v. {* Q- z. z; J
  2353. LDA <Key_Once
    $ E: y; c1 u7 f2 y, _( K( L7 S
  2354. CMP #$02
    2 S% W) q7 p" _9 Q5 k
  2355. BNE Change_Select_Next# X! |4 L( q: ~# p+ d
  2356. JSR Music_Song_Last
    $ G. N: ?$ f6 o$ x: i
  2357. ;--------------------------------------------------
    ' ^0 r% A4 m3 l. n- C- u
  2358. Change_Select_Next;下一曲+ o5 B6 S$ }: O5 P+ L$ ]7 ?
  2359. LDA <Key_Once; }2 ~- Z4 l1 I9 C
  2360. CMP #$01
    + K. s$ }' Z" S6 A# Q
  2361. BNE Change_Page_Next
    ( l3 r  n6 Z% |5 T( C) t$ ]9 ?
  2362. JSR Music_Song_Next
    + x" K+ y* ~; `! ?4 V0 {1 S( h& i
  2363. ;--------------------------------------------------
    9 g1 q' x0 n% l5 Y% ^# \1 V9 A# w
  2364. Change_Page_Next;下一页
    & ], O& g4 Y- H/ F/ b( |/ T
  2365. LDA <Key_Once( k; B% B- k( ?8 v8 Y& H" @
  2366. CMP #$20
      C1 C. t7 F  S; _4 B+ v1 ^, `
  2367. BNE Change_Select_Item_End; {) T6 ~% l- a" q
  2368. JSR Next_Page. m3 W# P) ]% [& g- e& a0 l. f
  2369. ;--------------------------------------------------( j- k- a4 a' F2 n
  2370. Change_Select_Item_End
    , Q' s: v" y) h# s0 e, x6 s& I- R
  2371. RTS
    8 T( @) N" b) S' }& K9 N. X8 a
  2372. , }% K$ y- X9 ]: w; N
  2373. ;==================================================
    ; @, Z$ p/ z7 s6 m" X! G% f
  2374. Show_Arrow;显示箭头光标  x8 Z" G9 J1 a$ \% T3 q8 t
  2375. LDA <Music_Item_Cur
    1 A  Y  H& E3 X) g) }
  2376. JSR Get_Page_Start_Index
    - V' P, [/ J; C# H! Y
  2377. LDA #$00
    7 F) T+ S, p- j8 C+ e/ R1 ~, w
  2378. STA PPU_OAM_ADDR
    3 U, d2 G( _0 v# w( D' R. O
  2379. LDA <Music_Item_Cur4 r- {5 m! F8 ?( i. F
  2380. SEC
    & A$ F! L" V' M/ _4 H' x
  2381. SBC <Data_Buf1 ?5 e: E8 b" b4 E* g; U
  2382. ASL A
    / @1 n+ _7 u  U+ y! L7 Y
  2383. ASL A  L- a) B  l3 t/ b) m
  2384. ASL A3 `6 p7 _( @: g' n0 b3 u- v6 l+ p
  2385. ASL A0 c: W  S( j7 S8 L; @
  2386. CLC( g+ j# x5 D1 M& U1 a
  2387. ADC #ARROW_Y_OFFSET5 d8 _$ y- {8 M9 Z6 Z
  2388. STA OAM_TEMP_ADDR + $00
    ) q% ~, d2 K1 r% ~9 H7 J
  2389. ;STA PPU_OAM_DATA
    2 y: m$ j1 \& O) Q$ y
  2390. LDA #$1F
    ) @) Y+ N3 a: L% k8 m8 J) O
  2391. STA OAM_TEMP_ADDR + $01/ x2 f3 T% F! \2 r- N1 u3 S8 t0 q' ?
  2392. ;STA PPU_OAM_DATA3 J# `0 g' X$ {4 w* u
  2393. LDA #$00
    % A6 G) \2 h# Q' u3 Q
  2394. STA OAM_TEMP_ADDR + $02
    . f! ~2 e) n/ C# G8 U" _1 W
  2395. ;STA PPU_OAM_DATA9 ~/ a3 e! ^& O; ^
  2396. LDA #ARROW_X_OFFSET# a! j' l4 u9 ]  n) |0 Q, f
  2397. STA OAM_TEMP_ADDR + $03$ k* {# L: L# ~
  2398. ;STA PPU_OAM_DATA5 _9 Q3 l5 t9 ]' z+ z5 \! b
  2399. RTS
    0 @) ]3 |1 Y- m

  2400. 7 g. P! O# L) ^* S& p. F9 v
  2401. ;--------------------------------------------------
    3 Y  J5 z; u3 t9 H" h) V
  2402. ;命名表数据
      Z' \6 L' B$ u6 n9 j6 T9 D
  2403. Palette_Attributes7 J9 A- q" J, Z. s& K
  2404. .IF SOUND_BAR_SHOW_ENABLE% [9 s' f# v# r: t, L# S
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    ; Y8 C% K, ~2 r: d$ r
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$551 q  o- U* R7 @, @% V
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75+ Z& K$ r6 F8 N7 q- |7 q
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA% r2 K% l5 M; C: n* z) ]
  2409. .ELSE' f  f" `1 w1 l3 x0 Q. r/ x
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    7 r, n+ ~6 ~9 B6 }& j6 Z
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    5 E% [+ b4 k+ Z. B* [
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    + N/ r! b7 s/ i6 D% |, D; i- N
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA( X' S7 F( _5 ?
  2414. .ENDIF: ]" |& P$ |+ z8 Q( `

  2415. 1 g$ |( ?- v. P0 t3 i
  2416. ;--------------------------------------------------
    * g; d0 N4 ?9 F: C7 Y: o7 s7 `
  2417. ;调色板数据
    * ^2 @9 @% ~2 ^! z% F
  2418. Palette_Data
    2 f/ G6 \7 z0 m
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    5 e, t% m" \" I1 n
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    ! L6 k* G9 B. G
  2421. : P  V- m# ]$ O5 D- R) h6 u
  2422. ;--------------------------------------------------
    6 W: I) O. x( p5 I( `/ f
  2423. Static_Text_Data$ b8 t* [+ r/ o# |8 H$ r  z
  2424. .WORD Static_Text_Caption_Data
    8 i( w- O1 x2 W* _2 y( |* I
  2425. .WORD Static_Text_Author_Data
    % V' ?7 V( {: g
  2426. .WORD Static_Text_Date_Data
    9 j! N* T# R9 I/ [" _
  2427. Static_Text_Data_End) a6 m/ }' H1 m% ^& u( ]$ o

  2428. 1 t7 S, X- K# I* S5 K: K
  2429. ;--------------------------------------------------
    5 t. ]. a3 A* A! ^5 V+ [* c
  2430. Static_Text_Pos. i4 x4 U, `/ O1 `
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)/ i8 K8 j+ j: T- [; a( w8 g
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)  h4 N; r( y8 z2 [/ v% O+ @9 J
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    ; R) w0 Z9 d, }& I5 e
  2434. Static_Text_Pos_End
    + A: Y6 m5 h; @8 q, b' C: j

  2435. 1 R; T, h/ q2 Q! F0 c% t; I
  2436. ;--------------------------------------------------
    " _6 K4 U0 f& o
  2437. Music_State_Stop3 N+ O9 G( c% e5 ~
  2438. .IF SOUND_BAR_SHOW_ENABLE5 _- j9 Z5 h/ l2 v4 I& d$ V
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    1 r% s, g) B/ |, d" P2 `4 X
  2440. ELSE  Y" f! u- W: u" `
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    . q1 u3 |; `- Z$ u
  2442. .ENDIF
    , m& {$ ]1 |9 w: d' O
  2443. Music_State_Play
    . t3 c' B8 ^. K% s1 w& H
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    , k: i5 k. ^' c, U4 l; p

  2445. 5 y( n+ w& i+ C& d7 ]
  2446. ;--------------------------------------------------
    " U" m: @* d- j: f  J2 t3 P3 R0 E
  2447. Sound_Bar_Text_Data;声音类型文本5 H( \0 S1 U; |, o4 G. w3 ~) n
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    3 a6 `) J. l5 N% o
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"# J0 x2 e  b  a/ i  m
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-": o* `  d# j4 P  |
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    0 X9 G4 a' i# m2 T  u
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    . I, l! D8 h$ g
  2453. 8 g5 ~; i0 ~5 Y- M* W' B; P
  2454. .IF Track_Name_Pos
    # z( P# f$ h) Y% U! m) }
  2455. " h- j7 c+ k* ~' s' g# I0 w
  2456. ;--------------------------------------------------' l/ w, B6 T$ P. L
  2457. Track_Name_Addr_00;曲目名地址索引3 ~7 @! l* F* Z; x
  2458. .WORD Trackr_00_01
    / A% m0 j" d$ F) V2 A
  2459.   X  j5 ?& R2 O! {
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    " i% B( X& t! t4 k" C1 A% A) O
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    - P% H. A) O- v  Z! d9 _
  2462. $ u) j/ t! y7 i; [
  2463. ;--------------------------------------------------8 m7 m6 z" O8 F7 s
  2464. Track_Name_Addr_01;曲目名地址索引
    8 ?  L* e; F1 F0 k( X
  2465. .WORD Trackr_01_018 i) L8 x/ ]0 ~) C- R
  2466. 4 Q+ n" j) R) }" Q
  2467. ;==================================================7 T+ F' ~) f& I6 N7 z$ c
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"/ x% m( B, N6 t
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    # g" z7 j9 j& y+ R+ _
  2470. 7 f1 W6 X# e/ i* `
  2471. ;==================================================4 m3 t6 U3 D/ d( Q4 ?
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引6 Y: ^2 W9 L; h. G) v
  2473. .WORD Track_Name_Addr_003 C/ `( D% }3 E: F
  2474. .WORD Track_Name_Addr_01
    $ X. e1 X" y; T& i$ S3 F
  2475. .WORD Track_Name_Addr_018 J5 e- f: \1 Z8 U& V
  2476. 7 p' s; Z1 g7 Y* {, P
  2477. .ENDIF. U9 o9 I, H9 M3 M' j1 d# j

  2478. ( ~7 G1 m/ U3 h$ ?
  2479. ;--------------------------------------------------$ W% c! c* ~: D; a' \$ m
  2480. Static_Text_Caption_Data;静态文本数据
    0 s# ~6 B. O- A) F9 ?
  2481. .DB 16
    3 P" _; r' U. R
  2482. .DB "FC MUSIC 12 IN 1"
    9 p" V0 b5 P) P3 E
  2483. Static_Text_Author_Data5 J& p  G+ }5 o" a3 Q
  2484. .DB 25
    2 w. a3 i: ~" C2 Q. Z# F' [9 l& w; ~6 |
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    7 S$ y& N" l+ p0 h9 c) D
  2486. Static_Text_Date_Data- L/ T/ O2 }4 a& A/ _
  2487. .DB 10. K/ @5 R: W0 l- Z5 K1 u
  2488. .DB "2023.07.23"3 b3 C* ], v: D: x
  2489. , i( L8 m, z. L+ X' u" K  b
  2490. ;==================================================2 t$ A7 s- N3 O: [$ J
  2491. Music_Collection_Name               ;专辑名间接索引
    & `* R5 Q2 t0 z5 M" Z) H
  2492. .DW Music_Collection_Name_006 d: y7 x) ^/ ]$ F1 T* U
  2493. .DW Music_Collection_Name_01( ~( E. D5 ?% n( f( |) x6 V
  2494. .DW Music_Collection_Name_02- }( V$ ^" @2 ~: O" C. v
  2495. .DW Music_Collection_Name_033 H) q" w7 X) t+ ]" G6 C, L$ E
  2496. .DW Music_Collection_Name_04
    + r6 ]- y# j6 Q0 z1 n
  2497. .DW Music_Collection_Name_053 R8 \0 C6 o4 l3 E% }  s
  2498. .DW Music_Collection_Name_06
    1 d5 ?: ?: q( b0 c: L
  2499. .DW Music_Collection_Name_07
    4 h. j5 r: j: T% `; o' ]
  2500. .DW Music_Collection_Name_080 M% c" B1 |- G* h+ w  T3 H+ v& _
  2501. .DW Music_Collection_Name_09
    ( _) h* l! c& x) l
  2502. .DW Music_Collection_Name_10
    ! [2 c" j3 i# F/ v* b' ]" d
  2503. .DW Music_Collection_Name_11! K) v( o, |0 q9 x+ z- m7 l8 Q& @

  2504. # ^9 |: _' p+ u
  2505. ;==================================================
    ' o! D; a0 Q9 O/ U0 G1 \5 m2 m
  2506. Music_Collection_Name_00            ;专辑名文本数据
    + u) s! |+ x" Z* h  v
  2507. .DB 11,"1.RAF WORLD"6 v" L2 q( G* e; H
  2508. Music_Collection_Name_01
    9 V: T) B2 f, h7 o* h! V. C7 @
  2509. .DB 15,"2.FINAL MISSION"# p! l! B" S$ t! I% v) f" U
  2510. Music_Collection_Name_02
    ! G* Z8 Y% ?% _$ u# U/ J! H
  2511. .DB 06,"3.KAGE"
    : ~4 c- p/ m+ L' Z6 w. z( C/ |  q
  2512. Music_Collection_Name_03
    * b/ Z, \8 e  i" X
  2513. .DB 16,"4.DOUBLE DRAGON"5 b/ x4 K8 k$ N0 F) i
  2514. Music_Collection_Name_04
    9 i: ~: C/ J9 `  c
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    4 ~3 R5 P3 n; v: \9 r+ l3 a
  2516. Music_Collection_Name_05# I  K9 ?5 L' g/ a
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    6 h* b& y$ g: F, C* J' L
  2518. Music_Collection_Name_06
    / g: `' Y0 l9 E$ q! J
  2519. .DB 09,"7.ROCKMAN"
    ' y" `5 [7 G% @' g) x9 b  C3 ?2 Q
  2520. Music_Collection_Name_07
    0 E- l  k& B+ \2 h
  2521. .DB 12,"8.ROCKMAN 2"
    / R7 x- L' k( w! }  H+ L1 Q
  2522. Music_Collection_Name_08
    , Z8 a3 I) p! A/ y  L+ v1 _
  2523. .DB 12,"9.ROCKMAN 3"
    5 P2 w4 D7 p, G& l8 z% Z
  2524. Music_Collection_Name_09
    6 H( ~+ s" h; a7 X7 R4 I
  2525. .DB 12,"10.ROCKMAN 4"
    1 Y! ?# `( T" M0 H: F6 G% R7 w
  2526. Music_Collection_Name_10
    0 F" U! q( a: f
  2527. .DB 12,"11.ROCKMAN 5"
    , f- k+ ~% H1 k. K
  2528. Music_Collection_Name_114 ~( y( V% x' Y* {3 u
  2529. .DB 12,"12.ROCKMAN 6"; p* n' O0 M$ o2 G# M$ X' y$ P

  2530. & \: P( E7 D# m  a
  2531. ;==================================================2 w6 K+ w9 c6 D1 {
  2532. Track_Name_Addr_Flag                ;显示曲目名标记# o* I) I8 [7 V3 P9 q4 c% T6 f& L
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,01 u9 W! B4 [( S4 Q
  2534.   a& r, ?7 T9 M! A' p9 V+ M4 j
  2535. ;==================================================
    # H9 C/ m+ v. u* S4 B2 R
  2536. Item_Pos_Data                         ;光标箭头位置  c, ^; Q+ U: [
  2537. .WORD ITEM_SHOW_POS
    1 P- n4 y3 }# I: Q( {5 c1 f
  2538. .WORD ITEM_SHOW_POS + $0040
    & S& ]1 f$ `  ?( |
  2539. .WORD ITEM_SHOW_POS + $00806 \5 T0 @6 \' s
  2540. .WORD ITEM_SHOW_POS + $00C0( ~, B3 }7 Y' g: A- C9 h% a* B
  2541. .WORD ITEM_SHOW_POS + $01001 F$ Y4 x0 C2 v- M' ~+ B: F. V1 _
  2542. .WORD ITEM_SHOW_POS + $0140
    ( B+ E% C% w: d6 o& ]& T" _1 U1 z
  2543. - i3 v& p  a* y7 C$ k
  2544. ;==================================================
    - o4 [! [" \" O9 @: e. H8 A# d# Z
  2545. Sound_Init_Port                 ;音乐初始化入口地址0 @2 s4 z$ A' q* B- I
  2546. .DW $BFC89 w& p( P3 `8 V7 I
  2547. .DW $D7F0
    $ v- f7 l& U4 i$ A) J
  2548. .DW $9FC0
    : Y8 G) i3 Q7 j# l( L7 Q) Q
  2549. .DW $BF70
    ( ~; ]9 U, Z/ S6 W: O1 ~4 O) `
  2550. .DW $8003# S( v. B# }/ I; [2 c
  2551. .DW $BF30
    0 v. R3 S3 T' F0 y
  2552. .DW $9003' m0 Q+ b3 ^- M5 E
  2553. .DW $8003- J6 T4 U* v; B' L% n
  2554. .DW $80032 b$ p3 b$ s5 p1 b- @& k
  2555. .DW $8003
    * H- X6 s3 p3 I7 \+ \
  2556. .DW $8003* X+ Q% I3 m/ g' @. ^
  2557. .DW $8003. }* v: q8 o) h: l* P2 U
  2558.   _  h0 v2 R; U0 B& ^3 z- Z
  2559. ;==================================================
    % n+ m& @1 O5 n6 y' [- J/ I+ [
  2560. Sound_Play_Port                   ;音乐播放入口地址
    6 s- H/ R) |4 h$ E  {% o- s( y
  2561. .DW $8000
    , V* Y$ t$ j2 }2 d
  2562. .DW $8001
    9 Y4 ]6 L: F& ]
  2563. .DW $A0004 i; s* {# E8 ^; J8 [' j3 a
  2564. .DW $8003! Y4 a. R) m1 N6 i$ u: v% A
  2565. .DW $8000
    5 u/ l; \# a) N3 |7 {6 x
  2566. .DW $80039 K- k/ T- M' h
  2567. .DW $90006 L9 z/ ~% B- X& A) @2 ~! L
  2568. .DW $8000
    1 h5 @8 t5 f( l& q) t7 J
  2569. .DW $8000
    8 Q4 d+ V- a2 p7 D4 f9 p; H3 B8 A
  2570. .DW $8000- R, J6 A% C# F0 L9 X$ g) ]
  2571. .DW $8000
    ) W% @8 l& C& |9 j3 }1 G
  2572. .DW $8000
    + x. X' e- f, ~  C$ g% Y3 R

  2573. 7 r+ z/ o" _7 w; Z% l
  2574. ;==================================================- B1 C8 R" q! A7 E+ y
  2575. Sound_Reset_Port                  ;音乐重置入口地址; z) X: t6 @& v% O" T# n
  2576. .DW $0000
    + X' h* k9 V$ x5 s; B
  2577. .DW $0000
    + w* U8 o: ?# c/ A5 N2 ]4 h
  2578. .DW $00003 \  f1 Y! h8 W" }: i) `; b; f
  2579. .DW $0000
    1 V. m1 @  n) {# J( W3 `: a
  2580. .DW $00009 b$ c. f- X" k6 {3 o
  2581. .DW $00001 `9 e" v4 ^* z; i: s+ Q( Q& o
  2582. .DW $0000& H% W( K, s' s- ^1 ~; s
  2583. .DW $0000
    2 O) O1 R6 [; D; [2 t
  2584. .DW $0000. o0 b6 S4 t6 a2 `$ [2 [) c( ^
  2585. .DW $0000
    ) m) @6 X" a' ^2 C( }/ @9 H7 h
  2586. .DW $00000 q6 y' q4 n/ {) N, ]
  2587. .DW $0000
    5 D( }7 V, K& J: p. q1 |+ |
  2588. 7 [1 H( B9 r( n
  2589. ;==================================================$ j6 R% N$ Y. `3 }( n
  2590. Sound_Total_Port                          ;曲目总数
    - T9 l8 h2 b" _0 v
  2591. .DB 38& Z2 w) y+ i& i, Z0 w$ f
  2592. .DB 33
    ( q" y- Z/ C: l, X
  2593. .DB 49
    : ~7 U" y, y, E5 A) A
  2594. .DB 413 n0 q. W, ]$ _# K2 s
  2595. .DB 83
    2 y9 ^3 j" O7 E! L6 X. A- W
  2596. .DB 702 x6 P; F& {1 A2 S
  2597. .DB 50% }: e2 a8 J* s( J) _' H
  2598. .DB 678 O5 J- c4 B# w& x; d) }
  2599. .DB 57
    ! m& d2 _, Z3 X( Q
  2600. .DB 71+ v' s, w) X6 L8 Z1 {( U
  2601. .DB 768 O7 a' e0 ]) q4 J: e7 r
  2602. .DB 102
    $ K8 s# h) K) R+ f

  2603. $ |& V- L( f' H: u7 {
  2604. ;==================================================
      H# f8 g6 J' M, X8 g0 ~9 k1 D  w. C
  2605. Sound_Start_Port                      ;起始播放曲目9 h7 t! p$ g, R- F0 `; |# L( s2 c
  2606. .DB 005 w- l: _, l# L/ t8 L8 K2 d
  2607. .DB 00% U1 V; ~1 m! K1 z+ z8 p) M
  2608. .DB 00
    $ z9 _" l* z4 w( ^7 ~8 ]0 u: t4 ^
  2609. .DB 00
      S! R7 N1 l/ Q% a
  2610. .DB 00/ Y2 o; A5 e4 b
  2611. .DB 00
    4 `- {6 P3 g, I, W6 L/ V; @
  2612. .DB 00
    ; |: T7 D1 W. e6 j  Y% T2 i5 J
  2613. .DB 00- o" i0 c% h+ a$ A$ i
  2614. .DB 000 x0 O" {# V* X) N' x& P- i5 B
  2615. .DB 008 `, ^/ E6 r3 @6 v
  2616. .DB 003 n9 J6 w5 I0 f
  2617. .DB 00- ~; ^( {# s9 T" \+ H) ?7 N$ S

  2618. 7 U. f% [1 G, d" r8 E  Z" q
  2619. ;==================================================
    6 N( M& \' w4 m! M& b% R! p' g
  2620. Sound_Bank_8000                      ;专辑bank_8000
    8 q' m4 j9 g# n( ]( }, c. G0 H
  2621. .DB $10
    1 m9 x0 n5 V6 p9 m8 R. s6 q) W
  2622. .DB $12
    ( y( y  f+ j9 }) Q$ ?
  2623. .DB $145 O5 o' |0 `/ h# b& i
  2624. .DB $163 T1 k# l! f8 m) p8 k
  2625. .DB $18* D6 w" u4 N& C2 w* T
  2626. .DB $1A) t' ^. D7 a' B

  2627. 9 |5 a/ W4 y* ^' M9 m6 p
  2628. .DB $00
    ! n! v3 t) ^( V% f! |0 z" S
  2629. .DB $02
    1 I2 e+ ^0 ]6 Y& k
  2630. .DB $0D
    ; N( Q& n3 n. F3 k$ i$ X$ R3 `
  2631. .DB $04+ T- _. ^: \4 v+ f; p
  2632. .DB $070 v4 g& L' k: L3 B
  2633. .DB $0A+ M" A8 O9 U0 v
  2634. 1 ]$ J6 ^& N* q9 \4 \1 c' r
  2635. + X  w; L1 W9 o) m3 Y
  2636. ;==================================================
    ' I& b% W* Y! Y/ X# k
  2637. Sound_Bank_A000                      ;专辑bank_A000; W7 }/ P) S. Y0 A* N
  2638. .DB $110 ]& q) O& W9 f) D+ g( w
  2639. .DB $13
    & E+ l( y1 H* z1 c& C9 v
  2640. .DB $15
    1 s1 M7 c5 Q* F3 A0 u
  2641. .DB $17
    ) J; o) B3 I& Q& P0 m
  2642. .DB $19
      B6 T, U3 |: s3 T& [
  2643. .DB $1B
    3 p2 t+ d1 j1 k5 f5 H5 d) q
  2644. ! _9 s% t$ o) B* ?, t* v( Y' B) z
  2645. .DB $01
    ; }2 @4 Q: g% k* g: [5 [& r; e$ q6 z
  2646. .DB $032 X, v+ m7 p4 ^; H* e8 w1 L
  2647. .DB $0E) a7 A% ]) Z% E; v6 f
  2648. .DB $05
    * q; ^9 m2 W/ x6 S) O4 _/ C" A
  2649. .DB $086 a3 z- n. W2 U
  2650. .DB $0B
    7 J1 E! s  R( F* F. m
  2651. ! \: Z8 u8 K, ]

  2652. ( E/ c7 j1 G1 Z; f! i2 M% ^" ]
  2653. ;==================================================- Q) a. C) t' B. p
  2654. .BANK RESET_BANK & BANK_DATA_MASK/ k( Z3 L( h' h7 Y1 L3 Z, E3 b
  2655. .ORG RESET_ADDR7 J/ V# [5 K' T& m! u/ l$ G
  2656. " `+ b' Y# d1 v5 d2 c9 u# e3 s
  2657. ;==================================================3 G9 v  p: i, F, Z
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    # Z5 ?: D8 A$ n  l% o
  2659. PHA
    0 g( l  i2 n2 `( l' o) W
  2660. LDA #$06
    % j% v* }$ Q: X, C7 J' c
  2661. STA MMC3_BANK_CTRL
    # Y" v4 S: J% ^- S% ~6 m( E
  2662. PLA0 v' @9 y% K1 `6 V. ]2 w8 V6 p2 w. h8 d# z
  2663. STA MMC3_BANK_DATA0 i$ ]9 s  u4 G% B" H" ]$ ~
  2664. RTS
    # B" t9 ?0 s  T  n% |" e/ k! [
  2665. " ~' p6 }% v7 F
  2666. ;==================================================3 l( [# {1 S: V4 L
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    4 l3 E1 y; S5 R/ p
  2668. PHA
    + d, ~0 o  u! u3 x! F/ p! b
  2669. LDA #$07& g. Y9 r0 v" ?+ @( K& y# y
  2670. STA MMC3_BANK_CTRL
    5 O9 f- h" s$ C8 X) j
  2671. PLA
    2 [' I, ~, Q' o  z
  2672. STA MMC3_BANK_DATA
    : Q7 d: r6 A+ A) V# V# a" c
  2673. RTS4 [+ J& }4 ]& [0 [2 H/ m

  2674. ! I. n9 k( X. t& [' o& P
  2675. ;==================================================
    ) h" j# U2 r) t9 c
  2676. Switch_Main_Bank;切到主程序bank
    ! Y0 ^1 q9 ]" Z0 O0 D) T
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK4 T/ m) _/ s7 J1 g  a
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    $ x2 x. Q7 s, a6 X$ Y' F3 I
  2679. RTS
    $ z5 v0 }  ]9 p7 v: p
  2680. 3 S8 {+ M# C& L1 U( t# j7 T: h
  2681. ;==================================================
    9 n- f3 n" ?* R: N4 T$ R
  2682. Sound_Reset;音乐重设(如果有的话)
    9 G/ t% X' K% r
  2683. JSR Switch_Music_Bank  ;切换到音乐bank+ a0 t$ W, w1 j/ k/ k9 _
  2684. JSR JSR_Addr_Op        ;执行音乐重置3 a% U2 R6 n7 }* m
  2685. JSR Switch_Main_Bank   ;切回主程序" s0 c5 b* D& I
  2686. RTS
    4 ^3 K. P/ |  C

  2687. 9 O7 L7 h' U3 @1 w# S* Q/ D$ T
  2688. ;==================================================
    9 I& g" ?7 D4 S! F8 E5 Z7 `
  2689. Switch_Music_Bank;切换音乐bank
    , [4 {7 J1 N( H& Z
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号; |5 d# p$ }6 n4 C
  2691. LDA <Music_Bank_80006 B4 _$ h9 r2 p+ C9 V
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    * d3 j5 j% Y# B/ T- M( t
  2693. LDA <Music_Bank_A000" p* S; e/ M! U
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank# e0 b$ v2 x; [$ X3 T
  2695. RTS
    6 ^$ }7 t6 J8 P
  2696. : O6 R: l" h  U! m* \9 _3 u/ U
  2697. ;==================================================( h  Y) ^+ I. m
  2698. Sound_Init;音乐初始化
    ) m6 p9 g" w6 W* ~$ A  x
  2699. PHA  X( M" @$ G' ?" F7 \$ h# |2 _+ E3 U. f. \
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    . B2 K. j0 Y$ L$ P, t# e% L
  2701. PLA
    4 w! Y( ~* j3 K" D/ R
  2702. JSR JSR_Addr_Op        ;执行音乐初始化% G$ S: V  P. e4 |  {' Q9 x, w3 L
  2703. JSR Switch_Main_Bank   ;切回主程序6 t  h/ I9 ^0 b  s% ?# I
  2704. RTS* ~' D% w3 z0 T% S( [; {
  2705. , V: v5 ]: F, R& R, d
  2706. ;==================================================" D# M7 {' A8 n+ z/ x
  2707. Sound_Play;音乐播放  e: v  ~! a% {/ Y6 e
  2708. JSR Switch_Music_Bank  ;切换到音乐bank! e" F6 x5 \/ t: F
  2709. JSR JSR_Addr_Op        ;执行音乐播放' @3 _7 _( H' u9 z2 S9 o
  2710. JSR Switch_Main_Bank   ;切回主程序2 Y* o$ J/ m  ?  b9 U5 ~
  2711. RTS# @+ u) t4 C- \$ T8 [+ E1 g
  2712. 1 e3 h( E" A) C
  2713. ;==================================================
    2 C0 n1 x2 I" s# v
  2714. MainLoop;死循环
    : d) ?7 ^$ N, W6 o1 k' y
  2715. JMP MainLoop
    0 ]) x$ H: S) B. {$ S) S/ A9 T! R

  2716. 8 t6 c1 N$ T( T9 N5 M  Q4 R
  2717. IRQ_SUBPROCESS_JMP = 0; d0 Y/ |0 O9 {3 p

  2718. 9 f4 \, d# [/ U+ p' f
  2719. .IF IRQ_SUBPROCESS_JMP
    2 {: j: n. i) @# L' l
  2720. ;==================================================
    ) l8 D  I3 s: @5 J
  2721. IRQ_Process_0;IRQ处理过程0; m1 T6 {. G0 M6 Y! T! U4 i* r

  2722. 6 P6 x8 A% K: `1 e2 F5 Z& V
  2723. ;15条扫描线后触发IRQ
    # @  G  F, C  R1 ^0 q  B
  2724. LDA #156 m& R3 {/ o5 T( r+ w. Y
  2725. STA MMC3_IRQ_LATCH
    * S0 ^* y& S6 o& e( h) F
  2726. ( a: ~1 {5 v! Y4 m
  2727. ;设置屏幕滚动
    0 U3 F6 m2 c! O9 g3 ~
  2728. LDA <Scroll_H
    & i" I/ ~/ c- W3 r0 y( v( _/ W" a. _
  2729. STA PPU_SCROLL: c3 `! H) K- N. h* Z
  2730. STA PPU_SCROLL$ x) M, c9 o+ E; u4 t  y+ Z0 I1 X

  2731. & P; Q& o, ^1 S1 \& [3 V9 x
  2732. IRQ_Process_0_End
    , _9 A; K2 {. |# ~4 Z" z& A* e2 ?/ n
  2733. INC <IRQ_Process_Index8 v- b( \& K$ h) ~3 o4 |' n' |
  2734. JMP IrqProgramEnd
    , G. |& O4 r  O" U0 r+ [

  2735. + s5 Q4 L+ \# O: Y/ v
  2736. ;==================================================
    / h2 w" @& P8 z  {
  2737. IRQ_Process_1;IRQ处理过程1
    " F' O3 z6 Z2 g' W* M( \8 Z: ^

  2738. 2 o- i( U6 H6 g6 |2 r
  2739. LDA #55* j% D$ r) p( j; J% ?$ K( v
  2740. STA MMC3_IRQ_LATCH
    7 [( g$ q5 i: q, ^; A

  2741. $ P. B+ S9 o* i$ ^5 O  G
  2742. ;设置屏幕滚动" C+ g# `6 j. ]
  2743. LDA #$00
    3 T+ V8 p1 ~5 o2 j) Y" O1 ]6 D
  2744. STA PPU_SCROLL
    3 P# X$ Z% j6 H$ ^5 R; f; }/ P
  2745. STA PPU_SCROLL. ~( v: W3 A- \: b& d4 j

  2746. 0 l9 q+ ]2 Y  H, M( f
  2747. INC <IRQ_Process_Index
    4 p( w! V7 m( S: Z- }
  2748. JMP IrqProgramEnd3 L$ M5 d& s( l# l6 E
  2749. % n* A8 w4 z; [0 U1 e
  2750. ;==================================================
    9 ^# x7 P( W4 X' n/ G; \3 d, Q) ]
  2751. IRQ_Process_2;IRQ处理过程2% J0 A8 u" Q' W* I

  2752. 4 a( D9 F5 E9 f
  2753. LDA #15
    : ~, N! c* l+ m+ Z3 [6 x% A
  2754. STA MMC3_IRQ_LATCH
    # t  o+ B, S/ ^; e
  2755. 0 k7 N% D: u& J) n: g
  2756. ;设置屏幕滚动
    4 A8 m3 t0 ]0 O, Y* N0 H6 x5 e4 u
  2757. LDA #$006 X/ _" v- ?* P5 O. r
  2758. SEC
    & j) }7 ^+ o  \1 Q
  2759. SBC <Scroll_H
    # D& Q! e5 Y. O: k" e/ N9 T
  2760. STA PPU_SCROLL
    7 C3 ~  j7 g8 H/ h
  2761. STA PPU_SCROLL
    ) {4 a6 w) e2 C& G7 f8 t) J- f( H
  2762. 1 U/ d" J" |$ `# a2 C- h8 s
  2763. INC <IRQ_Process_Index9 N- a9 v" K& J2 V/ k  e
  2764. JMP IrqProgramEnd5 m' H: a5 \) y! N5 [5 K9 q
  2765. 0 \6 m  l- T! h9 v
  2766. ;==================================================' r6 b$ D. ?; p- l9 A3 f9 _9 ~
  2767. IRQ_Process_3;IRQ处理过程3& j/ d3 k. y6 {9 s% N

  2768. # z3 b: ~0 S) h
  2769. ;设置屏幕滚动
    : q+ c$ S' Z8 k7 G! I. N3 o4 W1 ]
  2770. LDA <Scroll_H
    + r  u; |- r; M* r% u: T' O
  2771. STA PPU_SCROLL* j8 ^. M/ a- R) j: U; J* c
  2772. STA PPU_SCROLL
    ( d5 G- V4 ?6 O/ Y& Q3 ]
  2773. ' ?0 O" O. b. q# W8 A8 d# g
  2774. ;禁用IRQ8 l' Q( w: J5 f
  2775. STA MMC3_IRQ_DISABLE
    - B4 I% V8 c: E
  2776. JMP IrqProgramEnd
    . U2 Z# Q6 J% U& Z& r

  2777. + ~7 ?9 V6 y  o( A# j" ^
  2778. IrqProcessAddr! |: R& F1 X! U: e0 |6 ]2 a
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3' _8 I& ^' Q# {2 Y! Y6 T2 k
  2780. 8 m8 o4 I7 P' `# j/ Q0 m) j  a+ Q
  2781. .ENDIF" U5 r' O1 p1 S$ C2 @, {9 W

  2782. ( M7 Q0 P' D& [# j- z$ {
  2783. ;==================================================0 Y% }0 S; r4 }$ K2 E( @
  2784. ;IRQ滚动模式常量
    / A) S0 h! |  p9 |$ T& B; r
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    + ~* X' `! ~7 y: X' T/ ^
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    . e( D7 s; Q' J' S
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    8 f! K) g: I3 A- D5 K, H& j: d7 Z% B

  2788. - z! [3 G8 T7 G
  2789. ;IRQ扫描线数据
    9 L; @5 p" w' c8 K  x0 z" ?2 A& Y
  2790. IRQ_Scanline_Data
    & t' ?' f, C* b3 J7 A' j
  2791. .DB 8
    . X1 i7 y9 E! A: G
  2792. .DB 54
    2 m# d* P7 W: J1 A6 Q! ]# P8 ]
  2793. .DB 84 c! D1 \  k4 t# a
  2794. .DB 00 ;关闭IRQ- |+ m6 ^0 f: Q+ S) E: {7 Z
  2795. # y8 e7 H9 y- u) [/ I" j4 S
  2796. ;IRQ滚动控制模式
    * p& ?! O3 A& N- o0 V" y
  2797. IRQ_Scanline_Mode/ g- |; ^3 I  O+ O( _
  2798. .DB IRQ_SCROLL_MODE_ZERO" ~' r: k8 K  O* \: J. P
  2799. .DB IRQ_SCROLL_MODE_ZERO, z1 @2 A7 ?8 t8 P  p: v
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    # i+ h; F5 Q: f, h9 }7 T7 ?( D+ N7 d
  2801. .DB IRQ_SCROLL_MODE_LEFT. o8 `3 l- Z7 D$ K
  2802. 0 L4 v, H! E- f* G# c
  2803. ;==================================================- G+ `. e; h& |5 ~7 {) \% D
  2804. ;IRQ处理
    " t  z0 e6 h  Y9 _/ G/ q( U
  2805. IRQ_Process
    2 P2 q, N& l4 B0 O  S
  2806. LDX <IRQ_Process_Index
    5 M; V9 P1 [. m5 O9 H
  2807. LDA IRQ_Scanline_Data,X
    3 i# }, x" W0 [" h  X2 n% s+ J
  2808. BNE IRQ_Process_Latch! F2 |' D& d  D6 c) c% ?; L, X; x6 F
  2809. IRQ_Process_Disable;禁用IRQ9 z7 U/ M0 H# B8 g3 w% C/ J$ s5 t- G
  2810. STA MMC3_IRQ_DISABLE) S% p/ G0 o8 s  D9 }4 J
  2811. STA IRQ_Process_Index
    6 [/ c8 e) R/ |7 U7 |8 e
  2812. BEQ IRQ_Process_Scroll' H6 g0 v* e0 e# c6 y
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    ; u( ]0 F; V, g  d/ m9 F
  2814. STA MMC3_IRQ_LATCH
    & l  U: l. S5 Z- M9 s% [
  2815. INC <IRQ_Process_Index
    ' E( _) l7 x7 c
  2816. IRQ_Process_Scroll;IRQ滚动控制
    " o) O. Y/ b" Z( q1 m
  2817. LDA IRQ_Scanline_Mode,X, g) l" C' c7 p
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    " t7 a2 B$ M5 ~, W
  2819. BEQ IRQ_Process_Scroll_Left! J  |- ^. e6 y1 i3 n& b
  2820. CMP #IRQ_SCROLL_MODE_RIGHT4 L" Q! I+ G- q" R' R
  2821. BEQ IRQ_Process_Scroll_Right
    . ~. s$ }+ |: w) A
  2822. IRQ_Process_Scroll_Zero;不滚动- N# H2 m2 `+ w: D" Q
  2823. LDA #$00
    + ]+ Z) l3 k5 W6 i9 u& C6 _
  2824. STA PPU_SCROLL# R) Z, Y. _2 S. @* J& A7 G: v
  2825. STA PPU_SCROLL) n: f/ x/ f; }: p
  2826. RTS
    7 b" m3 i, N/ a+ E
  2827. IRQ_Process_Scroll_Left;向左滚动
    8 \% P3 H# W' f2 F7 V
  2828. LDA <Scroll_H
      E" X  y& ^$ p; E8 T* U0 x5 p
  2829. STA PPU_SCROLL
    + Q$ o3 ]. H0 ]/ }% E' \
  2830. STA PPU_SCROLL/ k  E4 X" p7 |. o
  2831. RTS: Z: r5 V1 V) Z
  2832. IRQ_Process_Scroll_Right;向右滚动0 M7 c  }7 _; [( J9 j
  2833. LDA #$00
    ( G! ~  a1 @! ~# z. V
  2834. SEC; Z) @. o. K% ~/ ^! `# N
  2835. SBC <Scroll_H0 A! O7 r' ], G- V
  2836. STA PPU_SCROLL
    1 Y3 G7 N! S4 l2 [8 u9 U9 ]5 q* z' f
  2837. STA PPU_SCROLL
    ' u4 u5 P) n1 _, [/ b+ ^
  2838. RTS
    2 f9 a# P9 E' q7 A6 P

  2839. 0 G5 V. Q5 ^; f7 @
  2840. ;==================================================% k/ e% k9 T) v" e# }
  2841. NmiProgram;Nmi中断处理
    + o( _  s* F5 ^# `2 r; I+ G
  2842. PHA* i% I+ Q- @! |
  2843. TXA/ u1 ]! V& a' j2 V8 V8 X: l
  2844. PHA
    + m; t4 e6 f; X+ ?
  2845. TYA, C. S2 s3 j$ p7 K$ C5 R" G& N$ W
  2846. PHA# @7 M% Q0 M* f8 v; {* M+ x! c3 p

  2847. 8 P; b8 R) i% r6 u8 y" ]
  2848. ;读取清除Vblank标志, 防止重复进入9 y7 c4 Z( h% `
  2849. BIT PPU_STATUS4 k, r' l  y- L  j( g% n
  2850. & q( \$ Y) E6 O
  2851. ;切换主程序bank% m$ D/ {. w4 n$ k- z. `0 b6 v
  2852. JSR Switch_Main_Bank
    7 f# P! ~( O5 h4 I' t  p  I6 y

  2853. ' m1 L7 u3 r3 C. i1 n
  2854. ;Nmi处理9 ]3 Y6 J( \  ?
  2855. JSR NmiProcess/ w) ^: j7 G) d) n$ g& P
  2856. 2 N6 a5 E* o6 X5 y, \
  2857. Nmi_Proc_End: g( u& N% P: a: z+ S% f: u/ c0 z1 G
  2858. PLA
    ( ~. H7 R) z' x4 x# R& t
  2859. TAY
    $ g. [+ [8 l% `3 m% B' [
  2860. PLA; D0 l# S, x0 f0 U9 \
  2861. TAX
    1 u$ o+ z2 j" S2 `: d
  2862. PLA
    % R' v5 W+ P& u  ^" l- P
  2863. RTI
    & x1 Y5 B# l: P; C

  2864. 7 y- O' R2 A/ ~/ \
  2865. ;==================================================5 m& l3 V0 T7 E% \  L6 D1 _
  2866. ResetProgram;重置中断处理
    6 J' G$ r4 p! K9 h. n) I
  2867. SEI
    6 |3 G1 }- Z" F; N! z+ F% Y/ B$ k' m
  2868. CLD
    8 c3 x6 x: K6 v) j7 ~0 ?4 m
  2869. LDA #$00
    + Q: G, r! A9 S; V4 i
  2870. STA PPU_CTRL
    3 }5 k6 Z* q: d7 N+ A0 x
  2871. STA PPU_MASK) m. L/ C. I' w7 X6 s+ d

  2872. , ~* f/ i# }% G7 R8 O6 m9 K$ q4 S
  2873. ;切换主程序bank
    1 A5 @3 [) F# w! Y8 n1 Q
  2874. JSR Switch_Main_Bank+ o' F: p) A4 G

  2875. 4 \% T. W) \" J: s7 ^
  2876. ;程序处理开始% y% ^* N9 f) }% N5 L6 K2 [
  2877. JMP ProgramBegin* p1 r: c# g* W5 I
  2878. * H- b' A' _0 v( m) v
  2879. ;==================================================
    $ T  \2 \6 @% }5 j; G
  2880. IrqProgram;Irq中断处理0 a* t, B. g5 r" N
  2881. PHA# z& a! {( ?3 f3 f0 ]( ?, |
  2882. TXA
    1 u1 `, j: n3 B
  2883. PHA' L8 e, @8 x( [2 N% X& n, |- F8 r* p0 X, Q
  2884. TYA
    : D9 q8 P3 X) L+ @) d
  2885. PHA* m; i7 u5 e  c7 |5 g
  2886. / o0 z) Q4 P2 ]6 n1 T; E
  2887. ;关闭IRQ* [3 C" [9 F% _, p
  2888. STA MMC3_IRQ_DISABLE2 a/ W% F, q9 M; @8 P  V

  2889. % [' ~# f  l4 J) x* O
  2890. ;允许下个IRQ触发/ P  ]' B# n* S! K2 R7 ?
  2891. STA MMC3_IRQ_ENABLE
    7 f7 V+ }( m8 Z# g
  2892. 8 J) {* u1 {' u1 C! S; v
  2893. .IF IRQ_SUBPROCESS_JMP
    6 t0 ?" D( `0 g, G
  2894. % A5 S# H/ G. V' H# y! a4 R* l$ {
  2895. ;执行IRQ过程
    * Q) g/ D& V* Z  ^
  2896. LDA <Data_L0 O) n( z: I/ c2 t: q
  2897. PHA; a  e/ b* g$ I- O
  2898. LDA <Data_H
    ' l+ V* }, D! v$ \+ n
  2899. PHA
    ! |* |, y) g0 o* b5 K* H: q& O
  2900. LDA <IRQ_Process_Index
    $ h5 ?( N/ w5 Q8 v0 L5 w
  2901. ASL A5 o9 W6 e6 f/ I
  2902. TAY
    2 }! n" M  w4 G1 F  O% u- W
  2903. LDA IrqProcessAddr,Y
    ; {, V1 ~/ h; {) }( k
  2904. STA <Data_L
    4 ^( A4 a3 ]3 y# V# l# ]" C
  2905. INY
    + A. p  }, s8 Q1 x: v
  2906. LDA IrqProcessAddr,Y* |. s$ g$ w/ t- c
  2907. STA <Data_H# @$ i, m6 e2 G, _
  2908. JMP [Data_L]& {1 @+ G7 h8 X* y* ?; F; B

  2909. . m& s& @- t* z- ]5 V1 k2 @  {( N
  2910. .ELSE" Z6 n$ o" V* o. o& `, _1 K5 P

  2911. ! w/ X# B2 d# V% B- O1 t+ @3 H5 c
  2912. JSR IRQ_Process
    : `! n6 b4 x, D3 o! c3 u
  2913. ) r/ ]7 A1 B9 e/ w
  2914. .ENDIF
    & ^9 i/ |7 |) s& W/ [% h+ i( Q/ a* W7 `. U
  2915. 2 \& u5 |. ]0 f# B" o, k/ }
  2916. IrqProgramEnd
    % ?: b$ \( H, k' C. B
  2917. .IF IRQ_SUBPROCESS_JMP; Y+ i8 F' f) O; h1 F5 Y
  2918. PLA
    + B6 ^2 t- i$ y8 R  @- X; I
  2919. STA <Data_H
    9 B8 ]  n! g  D; S% W0 h' W
  2920. PLA
    8 C6 U, n" x! |; q2 I/ d1 P4 `
  2921. STA <Data_L
    4 C% ~0 C$ C. G+ V
  2922. .ENDIF  F" t6 `$ l# D/ j5 C4 w: X
  2923. PLA
    ) a4 R' m7 M% G. G/ c5 `4 X; v+ F
  2924. TAY, V. ]/ _* G$ I) D" \8 i  g, z
  2925. PLA
    ! q7 Z& N5 c  i; E2 F2 I1 f
  2926. TAX
    1 H6 b5 p) s5 j
  2927. PLA
    ( G( B: c9 O+ |- A6 W
  2928. RTI
    ! A+ P/ {) j: u! |
  2929. % R0 ]7 x$ [; ~) h% n& f
  2930. .ORG $FFFA
    2 R2 }" y, j, Y6 e
  2931. .WORD NmiProgram
    4 B; k  N0 [" r- @
  2932. .WORD ResetProgram
    ) \& l3 g' a2 t% d
  2933. .WORD IrqProgram: p1 G% f' C6 r
  2934. 9 e2 x& t7 k7 z7 T, c/ V" K/ W6 n
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    , V% U* e! U4 [: y! P6 J
  2936. .IF SOUND_BAR_SHOW_ENABLE
    8 }; i4 w& K0 K% ^

  2937.   m6 N4 m7 U; F
  2938. .ORG $FE00
    8 L1 ~1 {4 O/ Y: G) d, o
  2939. PHA/ W0 q3 f3 n! D! e; ^
  2940. STY $07BA
    / j5 a% D5 m4 m3 {
  2941. LDA #$8D
    / f3 J! v6 F4 e' j, L1 g
  2942. STA $07BC4 U+ h! z% J, O3 E8 [) X
  2943. TYA4 K5 ^( V5 h4 i
  2944. CLC. Z/ Q5 `! D0 O6 d8 R
  2945. ADC #LOW(Sound_Bar)
    7 q; s! }" v: F  y
  2946. STA $07BD* M. A+ ^! v* X6 ^
  2947. LDA #HIGH(Sound_Bar)9 E5 x$ Y+ {9 |6 I
  2948. STA $07BE  `( T1 G  `, C' ]- v; d
  2949. LDA #$608 O" I1 X8 e8 z5 y' R- A0 G
  2950. STA $07BF5 m* ~5 ~# R* F# p6 y* @' B7 |
  2951. PLA; O+ [8 A0 m0 V) q9 t9 W
  2952. RTS- g; W0 `0 V; R0 n" E; C9 n0 j
  2953. . G$ M3 d5 f* l& ^6 w7 ^$ ~5 Y
  2954. .ORG $FE203 A# M) l& a$ J$ l) K
  2955. STA $07BA
      q" `/ L; R: |2 R
  2956. CLC; ]4 T2 H$ D/ I5 s( T
  2957. ADC #LOW(Sound_Bar)" k: i7 w4 o$ O+ U4 ?. J
  2958. STA $07BD' ?" B2 F/ w7 S9 P; i/ ]: _, ~( `
  2959. LDA #$8D; z9 E1 I4 F% Z, Q
  2960. STA $07BC, Z! k. E: ^! ^
  2961. LDA #HIGH(Sound_Bar)4 c& ^, n: x* E
  2962. STA $07BE
    / E: p) T) T2 N* N6 H, f
  2963. LDA #$60  g( {$ A. g5 s0 \6 ^
  2964. STA $07BF
    4 P/ w0 i# U& E# \
  2965. RTS3 W& t( v% |: {. }0 `1 S7 S5 k- o$ n

  2966. 8 G6 o. ~3 {& {! E; K9 J
  2967. .ORG $FE403 Y: a" S6 l$ K% o9 c
  2968. PHA
    : i) t! V# b+ X1 q8 A2 f
  2969. STY $07F1
    ( y' o) D: @. b& c& n
  2970. LDA #$8D
    7 h- @  V* N5 M2 |& e7 D% K; U
  2971. STA $07F3
    6 K( ?/ X/ r' E8 g
  2972. TYA
    9 M) Q. G7 l8 T* r7 v9 s
  2973. CLC
    : L4 z* O* c- O% W1 J( A
  2974. ADC #LOW(Sound_Bar), S" s/ N* |2 d! g2 o
  2975. STA $07F4, v: {: S% s4 z' m/ {/ I
  2976. LDA #HIGH(Sound_Bar)
    ' s. R- G3 C5 u4 R! `. Q
  2977. STA $07F5
    ' }2 Y: e& n$ g) o
  2978. LDA #$608 U  F$ N+ U1 Q/ L5 F
  2979. STA $07F6, l( o6 ]( z' R1 j
  2980. PLA
    7 O' V& a* T" ^
  2981. RTS! a6 O5 b" l4 d# j# |: s- ^
  2982. . [( B, \8 e: k! Q2 j' Q
  2983. .ORG $FE60* d. M" q7 ?& W6 E% q* g: Y5 J; {
  2984. STA $07F10 C% E8 I" r" s- u
  2985. CLC: B5 Y4 C6 A# I3 v% _
  2986. ADC #LOW(Sound_Bar)
    $ V2 e0 Q' p. `/ ~, j; t+ {; b
  2987. STA $07F44 @% o' h- N, z. R1 `+ i
  2988. LDA #$8D
    - ~7 u( V& `$ c
  2989. STA $07F3
    ( I# v" b2 m" Y: ~/ `4 b
  2990. LDA #HIGH(Sound_Bar)4 V) M2 t  Z, a& k) a( H  H/ W& Z, N
  2991. STA $07F55 B! H  O5 M( ^* ~  {% `+ N1 }8 k& Q
  2992. LDA #$60' V7 o- j3 k0 R8 F( Z
  2993. STA $07F6
    3 _( o) y5 U8 G+ S
  2994. RTS
    0 e3 ~; l* z' T% A8 x$ S
  2995. $ ?- D. r- z- S2 h
  2996. .ORG $FF40
    ' p+ |6 l" f5 p% v3 N1 t/ y
  2997. STA $40000 _( Z$ r" D$ [( M
  2998. STA Sound_Bar + $003 H$ V; H! n( j; N3 B
  2999. RTS( Z9 l9 G3 t' G0 @& K( j

  3000. % @& f, m( U2 l# o0 I. [, J* C
  3001. .ORG $FF48
    ; H2 V7 j2 E6 ~4 Y- o8 g
  3002. STA $4004( B5 q$ o' U) ?; J. D) q
  3003. STA Sound_Bar + $04- v) Q/ [. w! l* |
  3004. RTS
    ( Z* y! p  i, J  A6 ~; K# V8 N! h

  3005. " m! D1 D7 i( u  s* U
  3006. .ORG $FF50% {' b/ A# ?  R) J5 i! ?
  3007. STA $40085 M8 t' ]9 j$ W3 _
  3008. STA Sound_Bar + $08
    8 R. Z+ N% g* g" K  }
  3009. RTS, H8 m+ O- s( [4 f% y  T& f- d
  3010. , r- R7 }5 Q9 |
  3011. .ORG $FF58
    0 l+ J5 Y- O* S7 e8 A) S2 }
  3012. STA $400C
    * y; }  Q) f" N  P6 k8 n) W0 M9 j2 p
  3013. STA Sound_Bar + $0C& w# b  j8 U' c. G- ^# ]
  3014. RTS5 S# @. }$ u( c( p

  3015. $ r  [3 j" {8 q& P
  3016. .ORG $FF60: f9 }6 ?3 z' t3 S4 v) t
  3017. STX $4000: h& n8 e* Q( h8 v% q8 F+ z8 C
  3018. STX Sound_Bar + $00, f) D- c2 F4 x  N8 ^1 h
  3019. RTS' `  n/ {2 u( a: {( R
  3020. ' {* s2 i" N2 N& y( o# {
  3021. .ORG $FF68
    5 m, ^* v1 F* G2 o3 R
  3022. STX $4004
    4 M% d/ K  L; o- g/ A+ }
  3023. STX Sound_Bar + $04
    ' o. U( W/ S& F* U7 [
  3024. RTS
    ) r: a. l0 E: \0 K6 |8 @

  3025. 5 q8 J3 A- r/ |
  3026. .ORG $FF70/ {, W" B, N3 Z. o' K! H+ {
  3027. STX $4008' l0 N& G" Z3 R" j" D* @& I- i
  3028. STX Sound_Bar + $08- Y8 ^4 K5 ^7 P9 e
  3029. RTS
    4 R& U- j8 F: r! Q2 g% V+ X

  3030.   \5 J; y7 H; P2 E9 [" y) s8 q3 L# b
  3031. .ORG $FF78( O& q8 e, D" A: c; F5 ?( Y$ k8 @
  3032. STX $400C# l' @  t3 M+ S! M
  3033. STX Sound_Bar + $0C6 \# Z/ F; K3 \3 Z; y4 i0 }
  3034. RTS
    , O: n5 J9 q9 \

  3035. ; W$ B0 C/ a( O4 ]7 U! T
  3036. .ORG $FF80
    % p7 t8 n8 W. ?- Y( n
  3037. STY $4000
    % K7 ^$ z# ~- R# t7 h
  3038. STY Sound_Bar + $00% a0 A, n3 c+ M& {
  3039. RTS) ~( S# _# b0 t  K' U+ |

  3040. + R* [6 a  c# }" ~0 v3 B# X
  3041. .ORG $FF88
    " w' K8 h( F/ F9 n2 }8 a" l# d! Z
  3042. STY $4004
    8 O! ]: B) w" Q  S( @
  3043. STY Sound_Bar + $04
    2 T! L2 E$ ?: Y8 K3 G% G4 z
  3044. RTS
    4 W! Z% C6 ~9 |: T+ P9 {
  3045. * W0 ~& V7 D1 j( z
  3046. .ORG $FF90
    1 A: i" E1 w5 K+ a$ t& W8 g
  3047. STY $4008
    . f. J, a5 k5 ^+ q% _$ l8 y
  3048. STY Sound_Bar + $08
    # k+ N6 w# C2 Y8 j; H
  3049. RTS
    8 u+ u! s( R' F1 [( _6 F
  3050. 8 K8 P% D+ _# b5 U/ g3 H; j: ~
  3051. .ORG $FF98/ W- V8 ^/ L# J' l+ Z9 \) p# g6 K
  3052. STY $400C
    1 ~, B5 g& k, C, c: c8 a  H' y% X
  3053. STY Sound_Bar + $0C- R% `  r2 o% o  a9 i* @
  3054. RTS
    ( w7 t! I) v6 p% ]# y+ x! R0 T
  3055. ) ?% o6 T1 h9 w
  3056. .ORG $FFA0( y3 f6 I6 C' @( B& z/ b
  3057. STA $4000,X, F4 e9 ~' j) O6 x
  3058. STA Sound_Bar + $00,X+ X, c: \" S6 P* C, S% A
  3059. RTS
    0 `& I: ~& i3 G/ ^* J0 P
  3060. " B& _: F1 `9 d" U$ C# K
  3061. .ORG $FFA88 a8 |: c6 q, I( _
  3062. STA $4000,Y2 [6 q+ \( D% f+ \
  3063. STA Sound_Bar + $00,Y1 A; A5 J& v3 }  M" l( w  S) _
  3064. RTS" P' |2 v. F" j4 N6 l
  3065. % ~* _6 L: ^: k' [3 Y/ ~+ O4 q
  3066. .ORG $FFB0% _0 ?$ D6 T( r. X+ Z' U
  3067. STA $4004,X
    ) \5 f7 n) s* A4 Z! j) W9 s2 P
  3068. STA Sound_Bar + $04,X
    . i( r2 O  \& Z, H. g8 Y
  3069. RTS5 y+ y/ H( z* W( T* `, b1 W
  3070. * ~" |0 P: V& p( _; G
  3071. .ORG $FFB8. ~9 v$ l& Z" L- D- i2 ]
  3072. STA $4004,Y6 c* |/ _! Q& i- I, d5 [& y
  3073. STA Sound_Bar + $04,Y  R1 j4 U( O/ ]4 t1 |: p4 {
  3074. RTS
      t! W) C3 O* D) m& A, d; q
  3075. 6 Y8 w3 W5 ]9 @6 U7 z" c
  3076. .ORG $FFC0
    + C$ R- \: o1 \+ \# N
  3077. STA $4008,X
    ; t; w3 S" t' I" w" _
  3078. STA Sound_Bar + $08,X
    0 P6 L/ u+ @! \- _3 }/ ]4 [# ]
  3079. RTS  E9 E) K! @9 ?6 ^5 f
  3080. 4 \2 z0 z5 h2 L9 \( D
  3081. .ORG $FFC8# d2 p" y% ]2 s: n. E1 [
  3082. STA $4008,Y& p- {- }5 h# I4 W: ]% g. j# N
  3083. STA Sound_Bar + $08,Y+ U- B+ [. L" V+ v& K
  3084. RTS
    9 V5 L) b/ J8 _- i* N$ B

  3085. 3 Q! `6 t, Z9 t% k* N
  3086. .ORG $FFD0
    6 N8 S: r, s3 X
  3087. STA $400C,X
    & Y& S, v( D4 ]3 H( G
  3088. STA Sound_Bar + $0C,X
    1 P/ I% N8 ~1 x- a( D
  3089. RTS
    ; Y/ n% K) r5 {1 q: j7 x7 n6 ?: j5 I
  3090. % z5 ]% b$ t3 J; E( w. Z
  3091. .ORG $FFD83 U. j, }8 \1 ?) L
  3092. STA $400C,Y
    $ @, G" r0 l# m" N
  3093. STA Sound_Bar + $0C,Y3 i+ t% @$ ~- q- [' h2 k; w
  3094. RTS
    ; L; e3 R- \) W

  3095. % s* D1 _% P; q" T
  3096. .ENDIF
    # _5 E+ O/ z9 K9 H% ]
复制代码

+ [2 d8 P: O2 B8 m2 U7 J+ r/ L
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3243 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-26 02:37

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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