EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 9 N( i. Y6 K7 |. ?5 D) _$ \9 W

7 L6 j- k  s8 s& s  [) b5 t[FC][音乐12 IN 1]( Q3 E3 r% U/ w
时间: 2023.07.23$ j6 h; I- _4 ]8 M7 Y. o7 H
作者: FlameCyclone
  }' b  v, i  O4 S& }/ }2 N, x
' p; Y0 ~6 N& Z0 P收录音乐内容:9 s# o  p% `& X9 Y" Z9 p* K7 ]* b" ]
1.Raf世界
8 g. j( b9 r- `9 e7 ?- h- x2.最终任务
2 n1 O6 U: r/ g, _8 [3.赤影战士
) j1 o! C7 W: L. f0 T+ j4.双截龙
( H" [! X  B& A2 w5.双截龙2
4 }" P5 s2 R" U% M9 L/ f; m1 u6 D/ ]6.双截龙3
' d% E5 u: s: K: ]1 Z+ L7.洛克人
6 l* D6 e5 s# s; c: C' ?2 I8.洛克人2& w0 D( Z8 x, t* v2 t2 Y* P
9.洛克人3
1 w9 ]+ ]6 T- s% e& M: M/ r10.洛克人4
0 a5 e# M) f! A3 s+ z11.洛克人50 H4 X4 \7 b, s2 H" s- o/ a7 z
12.洛克人6! o& a& M+ I' c0 L7 O9 f3 \( t

8 K. |, i6 [% i$ V! G9 s操作:, V9 m9 U( S" ]0 }0 `6 D, |+ K
上键:         上一个专辑' K2 c2 M: a; k3 h
下键:         下一个专辑
& N9 d" {6 ^, {: U* j  K左键:         上一曲, l( z8 {- O9 E- |: v7 a; f, p
右键:         下一曲
& `: `' M" Y" O! U1 d: o, nB/A键:        前10曲/后10曲
- b& Z6 A2 _5 Z: X9 I; U选择键:       下一页
$ d) \0 W9 q& h% g" G& ?开始键:       停止/播放
8 R5 M9 _, P7 M! F7 N0 R# A' ^: R# {% h; Q/ R% d! Z- b
http://flamecyclone.ysepan.com/
; ~) w- c; ?) q* \; M5 {$ X6 C. m& g/ J( C: ^
2 P, H9 F9 F1 o% c% I
) |9 w- L$ F/ w/ b

4 _' n" ?; P& Q( C1 G% D
  1. ;[FC音乐][播放器模板]0 p2 F% @: L# C: ^$ l" y
  2. ;FlameCyclone 202307109 o* X3 e5 m; L! O- v9 Q
  3. # q, Q4 Y3 N# d. \7 C$ l
  4. ;文件头! L- X9 J) h3 N. i4 J3 G
  5. ;======================================================================1 x+ ^0 B* Z. x2 B7 ~
  6. .INESPRG 16                                             ;16KB PRG 数量
    ) }3 C- P2 Z' t8 n
  7. .INESCHR 1                                               ;8KB CHR 数量* ^% y  ]. r0 ]6 o+ a' A
  8. .INESMAP 4                                                   ;mapper 4$ U1 I  v" J: e* E  `
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直& _1 x) t9 V( Y# _7 R( y" A0 O; K5 S+ b
  10. ; X7 C* M& R# {5 e
  11. ;==================================================, a% y9 D3 i+ Q5 C) b  x" J8 Q
  12. SOUND_BAR_SHOW_ENABLE       = 1- h' h! A& E) ~4 E  Q3 T
  13. ;==================================================
      \/ c6 J8 Q( \+ h# n- @! }
  14. BANK_DATA_MASK              = $1F' M* [% h! A$ ?& B" o& e& K. j
  15. CHR_RAM_ENABLE              = 0+ m# G' d' v3 f  o) c3 M
  16. IRQ_SCANLINE                = 136/ g5 |& G. b% ^! {$ }: H) z
  17. ;==================================================
    2 |2 l) m" A/ t' Z
  18. SOUND_DATA_BANK_00          = $00
    ! S+ Z7 S" ?. G. Y2 C8 \
  19. SOUND_DATA_BANK_01          = $01
    7 P; ^: o5 i+ O
  20. SOUND_DATA_BANK_02          = $02
    0 V+ @$ ^" R/ ~; Z. x# ~+ P
  21. SOUND_DATA_BANK_03          = $03
    9 n* n! t/ e, B/ d5 z! [4 \& W
  22. SOUND_DATA_BANK_04          = $04  ^$ D5 }2 \4 f; q' S3 S7 L. X# }( B- ]
  23. SOUND_DATA_BANK_05          = $05
    ' d: J7 Q/ }' c* N8 P- w+ R# L
  24. SOUND_DATA_BANK_06          = $064 L/ }4 m7 R! a& F/ D7 a" @
  25. SOUND_DATA_BANK_07          = $07
    % x0 [4 H6 y! x$ ?/ h6 f+ |
  26. SOUND_DATA_BANK_08          = $08  Y5 n7 z$ U/ w0 {
  27. SOUND_DATA_BANK_09          = $099 v3 W9 A! ?+ P: Q% [
  28. SOUND_DATA_BANK_0A          = $0A' }" k. \, ?; A* n+ S
  29. SOUND_DATA_BANK_0B          = $0B1 P5 O; `$ P1 t& S
  30. SOUND_DATA_BANK_0C          = $0C
    ! V+ c) i( U" J
  31. SOUND_DATA_BANK_0D          = $0D4 G/ d, K+ a& U7 b5 T) S
  32. SOUND_DATA_BANK_0E          = $0E
    3 [- {6 S. G0 J$ Y, V) Y
  33. SOUND_DATA_BANK_0F          = $0F
    : u) z. l7 m+ e" ^$ I8 k# y

  34. 7 ]/ T2 S. S/ b, E: O6 h
  35. SOUND_DATA_BANK_10          = $10
    % c2 @* ?/ h7 B' |
  36. SOUND_DATA_BANK_11          = $11
    ! v# I7 R9 n- ]8 U  w
  37. SOUND_DATA_BANK_12          = $120 C0 Q- O; R4 w  @- T. ]
  38. SOUND_DATA_BANK_13          = $13
    . ?3 ]8 e4 g2 B4 i
  39. SOUND_DATA_BANK_14          = $14
    9 V' ?- B' s- h/ T. v) q
  40. SOUND_DATA_BANK_15          = $15
      o/ F5 S9 y' W$ R7 U
  41. SOUND_DATA_BANK_16          = $16
    1 l  Y7 I6 Q& B" M# V" v: a; m
  42. SOUND_DATA_BANK_17          = $17! M# J; v7 z1 r2 v2 v3 X
  43. SOUND_DATA_BANK_18          = $18
    3 M, o# V) w7 o5 @5 d
  44. SOUND_DATA_BANK_19          = $19
    3 r1 U9 P8 e2 b
  45. SOUND_DATA_BANK_1A          = $1A
    6 f5 u, n5 R, ]5 a' @4 U- \7 Q# w
  46. SOUND_DATA_BANK_1B          = $1B
    # ?1 ~2 e2 `7 ]! \1 B
  47. SOUND_DATA_BANK_1C          = $1C
    * E0 l4 [1 e, q
  48. SOUND_DATA_BANK_1D          = $1D* \7 a, ?) \6 f# Z& ?$ P( ?! Z

  49. # n2 @+ D: ]1 {6 q5 v
  50. SOUND_DATA_BANK_C000        = $1E
    0 O1 V4 K5 p  {- W8 i  c
  51. SOUND_DATA_BANK_E000        = $1F. f- M% B) o% }4 u* ^
  52. ;-------------------------------------------------
    - B, P/ R7 q* B/ G) P6 O8 G
  53. CHR_DATA_BANK               = $20
    7 @: I- ~+ \1 `" t* Y% X5 a
  54. CHR_DATA_ADDR               = $A000
    # f6 F6 y$ t' B5 E* X
  55. ;-------------------------------------------------  J2 i7 h) v8 W  O7 N% f$ w
  56. PROGRAM_BANK                = $00* U7 f* C! B8 u
  57. PROGRAM_ADDR                = $80000 r- f* v2 f& a- G1 _6 _6 O% g4 o5 f# Y
  58. ;-------------------------------------------------3 S5 Y2 H8 g% B3 o0 y
  59. RESET_BANK                  = $1F
    - E% v7 V3 i* k2 K5 Y0 j
  60. RESET_ADDR                  = $FD00
    " S; _, [: m9 F0 M) ?: W

  61. + a6 z: X; X6 c: a6 T0 w
  62. ;==================================================
    * g% |8 t8 l* m2 y% b, M5 X
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数) U0 I# ^7 F) v; D' f
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引* O; U* _; c, Y# G+ s* K
  65. PAGE_SIZE           = 5                     ;每页节目数7 c+ T, q0 Z4 r5 L
  66. ; {" W3 Z* Q/ c1 ~% _# C& m
  67. ;==================================================! J, r4 z  U" N+ E; N
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除, \6 g. Y5 S6 h$ }
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数7 T6 z) D% I9 f3 T$ V/ p& |
  70. .ELSE" j2 `8 m$ R* e( i! I
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    & x+ z- v' O$ S4 z) K! A+ i" G
  72. .ENDIF4 S  a" A; P& t

  73. ) U1 x7 y4 n" l4 @, L$ h. P7 A
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    6 t: t$ _" [0 O% U+ E
  75. % r+ V; v% S5 j1 y" O% h  ?
  76. ;==================================================
    ! u, \, p* e" Q) k
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    2 Y& L) x8 ?$ k7 o. S) E0 U) \/ Z6 p
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    ! W: ]0 W. d, F
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    4 @2 w$ ?% y% e8 w1 X1 ^+ _/ e
  80. ;==================================================
    ! K# @4 N1 ~5 ?4 U0 u
  81. Caption_Text_Pos    = $204D ;标题文本位置! ~7 g4 G0 L  m8 B
  82. Author_Text_Pos     = $2324 ;作者文本位置
    1 Q/ X3 O3 w# R# i- y
  83. Date_Text_Pos       = $236B ;日期文本位置
    ! A+ t; i1 v- I9 ~$ a
  84. ;------------------------------7 |$ ~! U/ k( U9 n9 F; Q
  85. ;------------------------------
    + W& @+ z9 D, {# r9 @0 u
  86. .IF SOUND_BAR_SHOW_ENABLE
    : e: J. {2 N9 F! x. w3 ?

  87. 5 m" k1 `" q& T9 |4 }
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    9 X6 S7 e1 Y# V% u
  89. Play_Time_Pos       = $22B3 ;播放时间位置2 s  N" r. n/ Z) G/ s3 i( T
  90. Play_State_Pos      = $22F3 ;播放状态位置
    7 i4 t& N, W3 x% J2 i$ Y

  91. ; B9 |4 C" ]$ U4 @' f
  92. .ELSE
    / ?. V0 N; X* J1 e) m. M

  93. 6 M1 G9 g2 h- T, y
  94. Play_Index_Pos      = $226C ;当前曲目位置0 I- {  a% p0 a) s) t
  95. Play_Time_Pos       = $22AC ;播放时间位置
    # [4 I- h. _3 b4 Q, b
  96. Play_State_Pos      = $22EC ;播放状态位置
    ; s( Z  E  d: j2 {4 K3 l

  97. $ F8 v7 C5 w& `4 \3 i5 h/ f1 J2 F
  98. .ENDIF
    7 q  U- ~, a" L9 w- C; H1 n5 t
  99. ;------------------------------
    $ H- r+ g0 X6 L* H2 @9 W
  100. Track_Name_Pos      = $222B ;曲目文本位置
    7 _! J# }: U5 V( m
  101. ;Track_Name_Pos      = $00 ;曲目文本位置. r# c% q. b; q" w# `7 B% v
  102. Sound_Track_Pos     = $2265 ;声道文本位置+ Y' c  I+ W2 e( y
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    ' j  f7 L" Y! m9 G# S" g0 Q* w
  104. ;==================================================! a% Q& }, E. M0 H: j4 _
  105. Scroll_X = $004 u% _7 `  H! u
  106. Scroll_Y = $003 E2 P- U% H( S2 S
  107. ;==================================================# R6 a# b6 S# j2 ]/ s8 J
  108. Sound_Ram_Addr_1       = $0100
    6 a: Z7 ?" E: k
  109. Sound_Ram_Addr_1_Size  = $803 |3 ?# L( y4 v6 a6 t( d
  110. Sound_Ram_Addr_2       = $0090& c# O4 P  D) H% i$ L3 {) h
  111. Sound_Ram_Addr_2_Size  = $70* z& h8 x; B# ^2 P" {: i7 x, \% @
  112. Sound_Ram_Addr_3       = $0700
    * j4 o/ ?6 ]) |) j% A1 T% a/ s& ~
  113. Sound_Ram_Addr_3_Size  = $007 U0 u" G9 K0 Y; K
  114. Sound_Ram_Addr_4       = $0400
    3 m; D! @) E9 |6 d* ]( y
  115. Sound_Ram_Addr_4_Size  = $003 `; _* X6 n3 o
  116. Sound_Ram_Addr_5       = $05008 @4 N( {$ I- I  p% k. a
  117. Sound_Ram_Addr_5_Size  = $40
    6 O! l- d! x7 ?5 ^* Q

  118. ! t( @; C9 r2 B1 v0 r
  119. OAM_TEMP_ADDR   = $0300# `  C. V& r$ B/ |0 ]) K
  120. " Y7 M8 K- h5 Y. s& K, S
  121. ;==================================================4 S+ ]7 a# w5 [+ U: ^7 h& c
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    " R- x1 `5 R' A! c/ U2 q& t0 C0 ^
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器: d' Y9 a* n9 u" \
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位* X' {( a( D; R7 b+ M
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1+ P. f" N- |# T9 X. h- r
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    3 G* i* t- I4 `& W
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    # N7 B' s/ m6 t' G9 V
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加. r" @6 L8 C( L8 b; a# L/ V
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 ! X! |! k6 i/ Y( _: ~
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存  S' ?  M" M! j* K
  131. APU_STATUS              =   $4015   ;声音通道切换+ J" K: s; s2 X- {
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    & o8 M3 i" N/ g) x
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    2 t, r$ d" f' l7 s  F" H
  134. ;==================================================" I7 @9 O. A6 z5 p& r, L; J4 E: U
  135. MMC3_BANK_CTRL          =   $8000* k6 b8 x5 ~4 ?: F" s
  136. MMC3_BANK_DATA          =   $8001% L% i. ?. R( y8 |+ c
  137. MMC3_MIRRORING          =   $A000
    / V. M# G' ]/ v' i1 |
  138. MMC3_PRG_RAM_PROTECT    =   $A0014 P1 u2 a1 I( r( p& F
  139. MMC3_IRQ_LATCH          =   $C000
    2 t1 W# G: w, y7 {+ R" O! x2 Q
  140. MMC3_IRQ_RELOAD         =   $C001
    : I: X2 X, K; H7 f6 A% l
  141. MMC3_IRQ_DISABLE        =   $E000
    ( T4 ^: s/ {# u# p8 [- }# y$ H
  142. MMC3_IRQ_ENABLE         =   $E001
    ! r/ H1 F  s5 e/ w, r, c

  143. ( v, S# t2 H: e  i) h8 v8 U8 u
  144. ;==================================================( S* c9 A, N* G* w8 ]% P. w
  145. PPU_Addr        = $0200
    6 `: ?% B% u1 W! P$ w
  146. Palette_Addr    = $02C0
    5 w2 _3 O# i' ^9 D9 ?* Y$ v
  147. Sound_Bar       = PPU_Addr+$E0* R: {, w  e% b) y- @4 ^
  148. ;==================================================
    0 o7 \. M1 T" [  Z1 r; K( E" v& p" h
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    5 @4 L+ Q+ c- V
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$113 b, C. |; d$ c5 b6 A5 E; Q; X- U; s( q
  151. PALETTE_UPDATE_MAX      = $2C& @9 f$ D6 u7 S/ u1 i8 `9 V
  152. PALETTE_UPDATE_MIN      = $21
    + Q) u0 B' ?* n- k- T" T' i
  153. PALETTE_UPDATE_INTERVAL = 601 X7 a  ]2 x: i  ]- y6 E) R
  154. ;==================================================
    $ S# L. k0 ]8 X3 u- Z
  155. Sound_Bar_Cnt       = PPU_Addr+$F0& M0 Z) b$ r8 w$ K7 \5 R; E
  156. PPU_Cur             = Sound_Bar_Cnt+$02: v- {# \+ l9 `9 X+ {4 B
  157. PPU_Addr_H          = PPU_Cur+$03
    % K, |8 O. A5 N  Y# T& `9 ]
  158. PPU_Addr_L          = PPU_Addr_H+$04" k/ Q7 H& f) B4 R) F
  159. Screen_Ctrl         = PPU_Addr_L+$01* |7 i% _- r5 k  @# R! u
  160. Screen_State        = Screen_Ctrl+$01
    3 N/ v8 P5 }8 }4 }9 Z( V6 P2 @% v" B
  161. ;==================================================: W* ?0 t' U, b; E+ C8 f; T: u
  162. Use_Ram_Begin       = $50/ E9 B6 K2 k5 V" s& t% {
  163. ;==================================================% c! s: J0 V0 W6 ]7 k+ S
  164. JSR_Addr_Op         = Use_Ram_Begin
    ' u& [, X6 [/ a2 I' Q
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    " F% n! p* b) }7 Y) Y. J- n
  166. JSR_Addr_H          = JSR_Addr_L + $01
    3 `- e2 F& x8 F! W
  167. JSR_Addr_Rts        = JSR_Addr_H + $017 q6 `4 d, S7 ^" x0 N
  168. Data_L              = JSR_Addr_Rts + $014 `- Y/ d- J: H& D+ w! |0 p
  169. Data_H              = Data_L + $01
    & _" y. L+ w3 `( {7 U+ l6 M! u
  170. Data_Cnt            = Data_H + $01
    / ~4 l- B5 V0 G' E- G
  171. Data_Buf            = Data_Cnt + $01
    ' B& u, d/ M$ {1 Q/ y
  172. Nmi_Time_Count      = Data_Buf + $01) _2 g% V. a! c* j, e- [- ^+ \
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01+ y; j; `5 C4 P" `' }& ~5 K
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    2 H  B: m& A! F( @9 N* G; M% `
  175. ( a+ J2 C! n- C% a
  176. ;调色板刷新标志& S! t% |0 n1 m0 v3 T3 Y
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    * @. F. U4 Q% B' K: Q6 k* F

  178. - l, s+ C  T6 R' t2 A
  179. ;当前帧文本写入禁用标志; k5 ?% i9 k$ W% }9 l& Y
  180. Text_Disable_Flag   = Palette_Update_Flag + $014 B+ p- m( B8 J% _, i; m. Y

  181. 1 Y3 F$ t% P5 d( Z7 N* `; m
  182. ;==================================================; a4 t6 W. ?4 r  \9 r8 E. v: h
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    # w5 @+ O8 p! D5 D/ m
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    . W; m  v4 L) y" U: Q
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间2 z% H2 u# |+ y" U; U/ ]" _
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间. y: {; z- x- ]9 `5 I
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    , O: O1 s0 C" \+ s8 K, B4 B
  188. ;==================================================  f& c8 N6 f. Z0 y0 v$ N/ p, |! G  l
  189. Key_Keep            = Text_Disable_Flag + 1
    9 }9 P% C6 m& n! W. H; T, I$ D
  190. Key_Once            = Key_Keep + $01
    + T4 S3 h# P% l2 e  G/ A, w
  191. Key_Kemp            = Key_Once + $017 w6 C4 A* ~$ `& Y
  192. Key_Temp            = Key_Kemp + $01
    ( ]3 u6 G4 w- t! F1 j5 V! L
  193. Key_Getv            = Key_Temp + $01- y6 G; B1 b. s; ?3 o- e7 w# M$ {- I
  194. ;==================================================: }0 @$ [  m1 a8 F/ l4 N  F4 }
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集" C2 h4 g9 e# e$ a/ I: b
  196. Music_Item_Last     = Music_Item_Cur + $01
    ; Z  j, e! w) p% L3 h
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集0 f4 V$ v1 [$ S: _% Y
  198. Music_Cur           = Music_Total + $01  ;当前曲目# f6 |' N6 r4 w4 H+ V) X
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    3 v) w7 B& W1 }& V; h
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态& M; \/ u2 @4 z8 _4 N0 B6 M  K
  201. ;==================================================  I6 _/ ^9 z; @8 {, u9 w
  202. HEX_Data            = Music_Stop_State + $01
    - S! C+ R: E2 L) B+ D0 _4 R
  203. DEC_H               = HEX_Data + $01% Z2 }: m, _  G( w
  204. DEC_T               = DEC_H + $01/ o- r1 L+ z: C' _
  205. DEC_L               = DEC_T + $01
    , F1 q1 |: ^$ w" a" T
  206. ;==================================================
    , v& G) A; C3 |# w
  207. Time_S              = DEC_L + $01
    9 C5 f9 n3 z1 o: d: f
  208. Time_M              = Time_S + $01
    4 |0 b* ^* L8 D: S3 k5 R; C& ]& a2 d
  209. Time_H              = Time_M + $02, F4 E. X- }8 T" J) n1 y
  210. Time_Cnt            = Time_H + $03
    . @% X5 o6 P( `

  211.   ]  g5 X; z+ d; J+ [- l* ?/ H7 o
  212. ;==================================================1 A; ~2 X3 T, w8 J9 r
  213. Music_Bank_8000     = Time_Cnt + 1
    ! f( e7 i1 ]0 C. U1 w
  214. Music_Bank_A000     = Music_Bank_8000 + 17 O! G" J* ^4 S
  215. ;==================================================+ f9 C6 d2 t9 ]
  216. Scroll_H            = Music_Bank_A000 + 1
    4 @3 G  D2 ], u+ H( E
  217. Scroll_V            = Scroll_H + 1
    7 G8 F' b0 m9 V& E+ D" I+ g
  218. IRQ_Process_Index   = Scroll_V + 1
    8 K$ S0 O2 _( _9 I9 j
  219. ;--------------------------------------------------; P$ I5 k' a7 ]/ u0 }+ L
  220. Page_Cur            = IRQ_Process_Index + $01/ ]2 Z' [' h' F, ~+ a
  221. Page_Cur_Index      = Page_Cur + $012 V' S5 Y: ^9 }4 Z. n6 m
  222. Page_Cur_Cnt        = Page_Cur_Index + $011 c# F0 P1 J, @+ A4 h8 A; n. ^) `
  223. Page_Last           = Page_Cur_Cnt + $013 {  Y+ ?' S" G9 h
  224. Page_Last_Index     = Page_Last + $016 |  `8 p8 m" N: g4 e( H3 ^$ W8 r
  225. Page_Last_Cnt       = Page_Last_Index + $01
    , [, r+ g3 s0 X9 Z( P
  226. Use_Ram_End         = Page_Last_Cnt + $01$ M3 t0 c7 ^. o, R* j
  227. ;======================================================================: G( ], z/ N1 `+ n8 @
  228. ;音乐数据块" |/ M) z0 s5 W: i  h; ^8 W

  229. 0 h6 ]- i) X$ q3 l  V
  230. .IF SOUND_BAR_SHOW_ENABLE
    4 ]6 Y7 i  W/ s7 M  Y
  231. / y" l# P' T8 w9 |( R
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    & O: f" }, ~6 R. Q7 c4 N/ C4 |
  233. .ORG $9000
    ( f* n9 K5 g' v+ a2 N% [1 W7 W
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"# y3 M2 @3 L6 m: h9 K4 P' N

  235. 2 ~5 ]! ^- q: V  q4 b
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK' W( W1 T! g# U2 n
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"% n- }: T0 p0 {/ z
  238. + e  F- i! d9 D* O% ~8 J$ K
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK- n* Y4 r% s0 [( |
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"# l+ n% E4 _- F" U: z4 [) X- F
  241. ! Q6 z3 {4 {8 ?5 ~' A+ v! T, U
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK) F% g7 I; A0 b% p2 x: z7 s
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"6 W! P1 [! k, Q( m9 t
  244. + {& K" Q. I4 n6 e$ W" e" i$ z
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
      U9 d$ r: n. D) T0 o/ w
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    6 ^2 Y, ^" L& c) o$ X+ S8 R

  247. ; ^+ ~$ Z! x# |+ b' \: d' r
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK! B; w$ r4 P: F7 E' L% W
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"4 j% c& }1 L0 B
  250. ( O. ~3 h! p2 t3 _6 s4 c
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    - s2 ]4 N, r2 r& p% ?6 n
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"0 @) U( p2 D' u; _7 \+ o
  253. & ^! x8 |& |  d6 V9 ~
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK: `0 r+ ?' o+ \7 F6 J% H
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"6 N2 B! D) u" f- u. E' a- k
  256. " \2 |6 e4 _* H7 s
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK; n1 [! q- i9 r& h: E5 b
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"% ]0 X' W+ A. d. i
  259. 2 ^6 [% Y; n/ o, |3 e9 k! n# `
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    - u% w; S* X2 G' U2 l5 [
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank": Z% k) m, i; d& _8 A) T

  262. ; p% [# O$ A: R9 H# K
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    6 ^4 }! M/ b; K
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank". V" H2 ^3 O' X% [
  265. 8 g4 O2 R9 B. X) u  Y+ @1 A- Q$ ?- {
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK! G2 A4 A0 i) ]- N1 l
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"0 j1 p( z7 c7 R4 c- Z$ N" \# n

  268. ) Y( l! M8 n, w
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK% b; _& A' h0 L; E% z4 ]
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    4 k5 p+ x0 }0 g( o

  271. 9 [0 j8 D( }7 L9 V8 W1 r
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK# g1 l! m7 z7 g% I. k& I
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    ; W0 j1 D' w/ ?* R- i

  274. 3 W  `% ?9 i& t2 c4 T
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK/ ^& L+ }- Y1 k0 ?0 @; Y, G' B
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"+ s. g  K: S) p3 l% p- r8 P
  277. 0 M% l) r3 E  r0 ^0 y
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    , d1 E  E# m7 n, z0 a
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    ( W6 K2 ~; X5 X) u

  280. ! o, E, E# \3 j5 {* w2 e
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK) N$ |, {$ n% }2 @, k" ~  x
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"( C& c6 i# _) t& i
  283. # L. N. `! `7 C, \9 l  _8 o  n
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK. z/ D3 p- k* D2 B1 j
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"2 d6 X. ]2 ~7 B; s/ r

  286. " t8 g) y) X1 R6 M) _5 F
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    5 u, R( |# c# z* r& H; r
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    $ B  N1 Q( A6 g- n

  289. ) k+ j, Y9 [4 [4 b' t: |
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    * }/ w& c# R% s0 C6 L* u
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ) i) _" i9 v& i/ f' w) u% g. T

  292. ( D# M; m4 C) Q
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    7 u  Z+ t. ^# l5 d" R. s
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    0 W6 W: i! M1 s- M3 n

  295. + x, T' \" g6 B2 \8 G
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK7 Y7 ?" y5 F1 u. Q2 n: M$ f( N
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"  A! p% ~: m- v4 N9 E2 B
  298. # R- h( K, }1 g; S9 f7 d
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK: m# B/ n- E7 }7 [8 `' w3 q
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"" v. u7 F. K3 w# ^2 V5 ?" A

  301. ' @9 ~; G. D  V
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK( b; K9 x' W9 a5 F  X% P
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"- ~- x$ t4 D! W. h* y

  304. - `- V9 ]- J8 h1 ~0 ?
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    & U5 w, X5 \! B
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    : _% A6 `8 u; {) m
  307. $ P- V$ Q0 B+ l* j3 E! K. k
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK% A* O; Z9 Q; N" d, O' D8 _; {
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"* Q$ ?6 w" J" A
  310. 2 h. |% ^0 i( g2 d& j
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ; o3 x" b% S$ U7 v# d! ?# N1 b
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"3 P4 }) ~# Y- S6 k# C

  313. & C1 S. `' I; Q; a0 `! Q  l4 Y* K
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK$ \# U. L# C2 }
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"+ i0 n6 F7 G+ t5 d

  316. $ N& V7 {: |* |' w1 b# P
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    % {5 n. A7 X* E, m! @
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"/ d9 d. {' D) P& D7 i* E6 l( ~
  319. # g% \- ^1 S, V. W# J! t
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    1 c% y2 }, p$ n1 a% F
  321. .ORG $D4000 d- \% ~9 H! ]# U3 L3 w6 U1 i9 ]' N
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    " f, J( s$ \) ~/ c) I. F, O
  323. % M) o* D. g) p: |) U% B5 }6 K7 W
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK! Z8 \5 j5 y1 s7 m/ r6 {
  325. .ORG $D800% u+ B* _6 L7 [/ b( d; \
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"- k9 k5 V4 g; w, y0 U

  327. ; }0 g% d5 n3 s$ s) Z

  328. 0 G- A  E9 R3 h2 \, E: R3 g
  329. .ELSE4 z, H" g7 m- O1 c! c/ B4 s4 s. U# y

  330. 1 E6 v2 l8 \! l$ \" X, Y# A* I
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    1 ^+ T# Z/ n4 t: K1 S
  332. .ORG $90008 B. W0 [( K# Y0 V7 b
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    ( b% n9 d( R8 G

  334.   C2 o) e* Z# M& `
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    2 b% k- ?9 X  a# m& r
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    , O  [1 Z- }! J, R* e6 @& }* V
  337. $ ?& ]0 R4 }( ^4 ?4 i& {/ C
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK4 v8 F1 Z  O; p# F% q
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"; L/ t1 q; {# [3 _# w
  340. ! u- B, ?  u3 C" _
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK% ]1 K) N3 F2 I' j6 Z& h3 Z4 Q* n3 d
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank". S0 o+ {- U7 f; I  B* l( B+ L6 g
  343. 7 T* ?' m. u8 B* U. K+ \& B: {
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK2 V$ S+ z% a# N
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank". t/ |' I: f$ f) I7 y8 a: F
  346. ' w& d1 F# J0 ]" @4 v7 K9 x: u$ L
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK- y. A2 H; G( L) k+ i4 b
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    9 \4 ^, ^5 @) N1 A

  349. ' v" @3 `0 b$ E6 L' `8 F; y' o
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    ' q. G2 g2 r" }& M3 o3 z' ?* }# Y
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"8 B. r: h! L* O2 e' k" y1 W* e4 O
  352. 7 m, s9 c6 z$ N# s
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK- z% \! n. D: {. }) t4 ~
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    $ B) m0 E) r3 o3 o1 H$ ^

  355. 4 u0 Q0 ?' Y. Z4 T2 Q: w
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    ! _  |( l$ ~0 ~( n0 ~" T( N) @
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"% v* b4 B0 ^3 W' M+ W1 ^

  358. ; K: C# v, F: o+ _. k8 p* i9 j
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    * @: M+ K; Z6 a! O$ L# ?! m
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"' m8 S+ _! `- d: h8 k4 g& I+ a3 \4 q

  361. 2 A7 a0 f/ J2 S( j2 ]$ S2 c8 ?
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    7 W6 O7 D: n3 O& j/ O3 m
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    . h' b3 f) N) a3 A) \% F* v1 l
  364. 4 G) X* h& P& }: f/ n$ u5 O
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    - E/ f5 J; H. `0 x/ D3 U
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"6 X/ Z% L0 t3 A' B" R
  367. * t* W  S0 {6 o0 E4 A
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    3 W* v8 h2 ]3 s! R* e! p) \- Z4 d: I* W% P
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    3 G: Z0 }% m7 P+ V* b+ f4 T4 |, |

  370. 2 i* A' r6 o( S; _: t+ q: ~: `7 @
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK4 E6 h1 `. J( x+ {
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"" j' f% }& X* @/ ~) z$ ~

  373. 8 N0 I/ \$ m; h6 g( u' |
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK8 g+ y. A7 j. c9 }3 C2 S- b
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    ' Y$ B" h3 H4 r  i3 Q
  376. 4 d* B3 L: D0 H3 c! b0 m" Y
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK  b+ ^9 G* b! A
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    * T3 f- R0 d, K; _* V$ e

  379. ( e% w" B$ l5 W# \$ |) f
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK' K; l# l9 r4 u& k7 h4 Q
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"3 ?3 t6 k# B- R( Y# B
  382. # m( a" t0 L3 q: {$ g
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ( g8 K7 [3 C6 b- X+ c
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    & A, f/ r$ h5 `2 e

  385. 9 \, @' x# v5 g/ A
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    + J0 e, z" H2 B
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"! \. h& K- W3 B9 v; F

  388. % d1 Y& x' R0 `- u3 K( u4 t/ a
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    3 l1 K% ]3 e3 X/ D
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    * t  @& i$ f2 c1 x
  391. % k$ ?+ K8 n- D+ A3 J
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK( t; c. f* D- w5 \- X+ ?
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    5 C% T( c& S) \/ m. g4 @

  394. 7 z* [% I* t5 P% J. W& ?$ }# g
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    ) b  m: C/ H, l; Y- R' y1 l9 _4 ^
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    2 v) o* B- n7 p  W

  397. $ f8 a/ F- x$ E; A6 p% ^4 w
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK4 a' H; z9 |7 d  f2 ^! j/ c5 [
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    $ D* p* Y1 V9 ?4 |
  400. ' h( v1 V+ Z, g. z
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK4 v- a! f0 @5 X  j. G7 S% \
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"8 c+ B: u2 T' P' b% H* M5 I( L

  403. ! k' G1 U( ~# g, B6 U  s+ L
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    % _" a. [" Q8 e5 F/ A( _! k
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"% z* C9 ~$ V6 |0 X/ _6 O) @, q8 O; X1 b

  406. 6 `+ L1 ^+ p$ \/ N) ^$ X
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    $ {) s5 M! x) a' N4 H; [
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"; v5 E* y2 k( d
  409. , W" }1 _3 M2 o! A% E3 l
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    9 S/ D; k" n3 L0 m% l4 X: `
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"$ l7 f7 J" H. ?; s% _5 R- w0 U

  412. , E( N6 M' C7 O" |4 x( g4 f
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK$ Y5 y) M1 o" j' f$ x
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"3 Z4 P  F* F, m% U* ]; |# d

  415. * [# p- b. ^, J7 B2 z2 h2 Q; v
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK# V# @7 Y$ q6 ]0 O) w" ~
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"3 p( n! A2 q+ N/ x

  418. - k( g9 P( ]3 V0 b
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK% j( F. c, v( r$ X& C. ]9 J% |
  420. .ORG $D400
    % Z. z0 ?1 j3 e# i4 K2 _
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"7 A1 [6 `$ e$ G* {) i
  422. : P: d! x5 k% U6 u( d
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK) l6 `. b% i2 r- d$ M
  424. .ORG $D800
    ! S. x* [- y/ j; Y0 X
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    4 W! }$ d6 l5 ~' H
  426. ! k8 e5 q5 Z& ?) i
  427. .ENDIF
    ; ?$ g+ C- R! N$ V6 e* B
  428. . b8 r5 B0 |8 E0 |
  429. ;CHR图形数据2 Q$ o( E# c) q/ E1 i3 h* s
  430. ;======================================================================) Y4 @: M* e) s
  431. .BANK CHR_DATA_BANK3 p" G& _, |8 d8 r. B5 T5 H
  432. .INCBIN "chr_bank/chr_data.chr"
    2 ?" q  L1 k* u: ]9 i( e

  433. $ d* Q$ g( ]4 [5 R# B7 U
  434. ;======================================================================
    + }  |' \  w) T4 x- S0 t
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK, C9 Y$ `: S' X& E
  436. .ORG PROGRAM_ADDR
    9 T2 D4 v+ K' p+ W1 l: H* H

  437. ' H% r( }8 Z2 t; ?: [# k, O" w
  438. ;==================================================
    / W1 ^. {+ j' d- x3 h
  439. NmiProcess
    1 r/ j) g6 Y5 J8 n1 q

  440. - g' b2 J1 I9 \5 M# j
  441. ;关闭屏幕控制
    : l+ t8 W( b: N( g9 q
  442. LDA #$00
    1 M. L: W6 m7 J: O
  443. STA PPU_CTRL4 X: |& O+ t# @% Y# u' U) m% @

  444. ' h$ |" g* u8 J& l* [
  445. ;没播放音乐就不需要触发IRQ3 h* N9 s# ?, G
  446. LDA <Music_Stop_State
    3 W: n2 k2 z" f8 y5 {
  447. BNE NmiNormal$ y6 U. j2 f8 i8 ~4 {

  448. + A+ G, |& \( s& {
  449. ;重置IRQ索引
    ; C6 H( [, `% \8 q
  450. LDA #$00# D' C( l/ o# n! e7 q2 ~" C
  451. STA <IRQ_Process_Index2 H" W' ?3 h/ i  ^( O, X- a( X

  452. 5 i* v+ l* Y% n6 X, I; g
  453. ;时间秒数为空则跳过& l  Q( K* |9 W9 K$ \( T4 _& G7 [' w1 O
  454. LDA <Time_H3 Y$ Y& q  _2 r1 T4 n/ }
  455. ORA <Time_M
    . T" ~2 c6 b: Y: S+ e4 `# G2 Z5 \2 r
  456. ORA <Time_S
    - X/ a1 t- `. m' u+ G2 Y
  457. BEQ EnableFirstIrq
    : U9 H; ^' J' k( K5 n& r( Z& |
  458. # a' V; H# t" W6 Q  P& T8 G6 n( c
  459. INC <Scroll_H
    + F( k4 M, F; j0 G: d, W
  460. " V) l% a) t1 i% n8 m$ d* k
  461. EnableFirstIrq
    * y5 x8 k- q3 s0 Q5 \
  462. ;80条扫描线后触发IRQ
    , d; c: s, T4 J) i5 U8 B- b& N
  463. LDA #IRQ_SCANLINE
    , T  g0 S' l, c+ E7 V1 _
  464. STA MMC3_IRQ_LATCH1 q( p6 p4 J) k
  465. STA MMC3_IRQ_RELOAD
    / \0 t% ~8 f! V; e
  466. STA MMC3_IRQ_ENABLE
    0 i+ x  }* b1 y' `+ _  L
  467. CLI' G9 R) d" @; F% l

  468. $ r# M- l) X4 N
  469. NmiNormal
    " a, ?3 i5 h6 c- _
  470. % [" U4 p# |) |) j; s2 M3 ?2 M
  471. ;处理PPU图像) N+ w3 B5 |: ~+ \; l8 f# e
  472. JSR PPU_Proc& @) q6 ^# U$ e. C# O5 A) x, h
  473. : p! w9 d/ b& O: \" ~4 G+ E0 W
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    - j+ Y4 Y, t# l  a" l' z) P0 R
  475. LDA PPU_STATUS
    % C1 _! d) u% y/ V
  476. ;LDA #$00
    9 v/ Z' }- ?3 S, O: ?- @
  477. ;STA PPU_OAM_ADDR
    . V, P- m/ o! n4 }) G+ N
  478. LDA #OAM_TEMP_ADDR / $01008 z0 V5 Z& E5 {4 g" t" w
  479. STA OAM_DMA
    ' B; `2 K1 Q5 j8 y+ c  y) y4 ?  W% u# L' F
  480. % d' A1 t. g3 E( v
  481. ;启用NMI中断; {% x& x- z1 o5 N0 x
  482. LDA Screen_Ctrl9 Q! N! w1 A( v+ x* p
  483. STA PPU_CTRL
    ; ]' X  f3 U$ q8 P0 Q+ \. a
  484. 7 f8 _0 R- Q# k' `  R
  485. LDA <Text_Disable_Flag
    4 F0 N) z) E" @4 e( `: B
  486. AND #TEXT_DISABLE_RAM
    ! V0 }( M. Y, J& f
  487. BNE Nmi_Sound_Play
      \# t! @# K6 T

  488. : G0 _1 e- t7 Z* O1 q% T8 j6 X" H
  489. ;处理手柄输入& I0 O0 V! Q5 z$ {6 ^$ C
  490. JSR Key_Proc) V/ Q' l* k& I
  491. / H' e4 F6 }) ]- W4 E
  492. ;切换音乐(手柄触发)4 {1 S8 v  c! Y/ f' U2 C+ r! R
  493. LDA <Time_Wait_Cnt# a4 f- Y! g0 K  w. n2 O
  494. BNE Nmi_Cursor_Arrow
    1 D2 P+ g6 y1 q) m& @4 h3 }
  495. JSR Change_Select_Item
      z/ y' Q/ f5 R8 l

  496. . E! E9 ?# d- b4 N5 _; x
  497. Nmi_Cursor_Arrow
    ! P- k+ [$ L, a0 J7 M# Y; T& D# P* j
  498. 8 f& U# ~- ?, t! s  O- Z
  499. ;处理光标箭头5 ?9 W& O1 ?+ i8 ^
  500. JSR Show_Arrow
    8 W8 R& A. }1 _7 u0 H
  501. 3 g* H5 _4 V' Q- c$ D  P' r5 b
  502. ;更新调色板' s5 x* w% t' W0 O% f4 w. G9 ^
  503. JSR Update_Palette_Data0 G7 C" O& a9 b
  504. 3 O& ?7 o% [: p$ r9 x$ N5 L5 ]
  505. ;显示时间(缓冲)
    ' N! t' d% J7 }8 v, @) i& E
  506. JSR Time_Show
    ( v% d! y$ k1 w: n/ W0 b9 L
  507. - }( a; {; m* c4 ]7 e9 y
  508. ;音乐显示(缓冲)
    " @- B6 a# b" g5 C' e; q% h3 X, S" i: }  h
  509. .IF SOUND_BAR_SHOW_ENABLE
    % d1 t9 J2 |* U1 ]  c4 Q
  510. JSR Music_Vision
      `' Y. r) D5 J0 K" G; Z
  511. .ENDIF1 B& {. C- O/ r9 M. C* I
  512. 6 H4 t  H  U  w8 n, \# G
  513. Nmi_Sound_Play7 \7 f# n& Q* [& {. W
  514. ;播放声音/ p7 \* {" ]. L2 A2 l' z
  515. LDA <Music_Stop_State. |, O+ v- M% D* m6 j4 s  w
  516. BNE Nmi_Time_Wait_Set+ z9 R; D6 U4 F; L( u5 Y9 t- Y
  517. JSR Sound_Play_Proc
    / Z7 l9 ?/ J' \

  518.   ]3 k: c0 x# f  `* E
  519. ;播放计时
    # ~% S* e% }, G  U9 m
  520. JSR Time_Count% w9 o1 x% L, L  E
  521. & p( Y& \* y& b/ b2 \5 l2 z6 g4 G8 P
  522. Nmi_Time_Wait_Set
    ! b3 ^4 Y. s+ J5 u5 w0 g/ Q( D& T
  523. LDA <Time_Wait_Cnt
    % U. B( O2 H. H. H$ E
  524. BEQ NmiNormalProcessEnd$ Y, \. q% B8 x
  525. DEC <Time_Wait_Cnt: e' H; d9 V2 R* j" s
  526. NmiNormalProcessEnd
    5 V/ f% x$ ?( ~7 V
  527. 3 K: s5 L6 M4 k& f, B" b: X
  528. INC <Nmi_Time_Count
    / Z- \4 `! w4 x2 E; h. h

  529. / J) I' A+ S$ X: H+ H9 G7 k# }+ P6 {
  530. RTS8 ~# v  Y/ s% M# J$ Y

  531. - {& G- Z. o' a8 r2 c
  532. ;==================================================
    4 t7 U- z6 p0 d" V0 I
  533. Init_MMC3
    % i- D  C& ]* x8 @/ @( Z
  534. ;==============================# n" x) K1 \4 Y# d9 G( ^& V
  535. ;禁用IRQ: q: |, S9 {' V9 `/ u. k( `
  536. STA MMC3_IRQ_DISABLE0 q' r) L0 Z6 w" ~( l* J  z

  537. & ]/ [- e# A$ ^1 g" ~% y8 Z. z
  538. ;水平镜像# B4 D$ T' T9 Z/ H8 V2 |8 X7 l: a
  539. LDA #$012 L7 }. N" f' [( ~) h
  540. STA MMC3_MIRRORING
    # Y- W, {4 K8 M' T6 \

  541. 0 z9 ?# f. y1 t# C0 Y
  542. ;初始化图形bank/ f& P8 ^3 q$ x* {, o/ B
  543. JSR Init_MMC3_Chr_Bank. L: R( J. w- F" M& T

  544. 1 U/ E' ^" J4 M0 q3 K8 U
  545. RTS
    . ]3 g) x, B; z. j7 e0 I
  546. ;==================================================
    % d6 \- m% y; z& w- i" ~
  547. ProgramBegin;主程序
      W$ R: K: Q4 Y; @% t
  548. LDA #$00: f+ k: B2 e- B& ]  ]1 s. Z
  549. STA PPU_CTRL
    1 n9 P4 T) d- s) \8 p( x% o
  550. LDA #$00- X% m3 x: j# d6 K% S$ \
  551. STA PPU_STATUS- q, c9 H: [6 {: M
  552. STA PPU_MASK
    / ]0 V0 h7 u. ^7 N
  553. STA JOY2_FRAME5 r) k6 c! \5 c. H. I5 }4 R* P! S
  554. $ [2 n) \' ~. Z. R
  555. STA PPU_SCROLL6 s+ z/ g( K* R  m
  556. STA PPU_SCROLL
    6 j$ Q& P! F9 F2 B9 ~
  557. 7 D6 k9 v. ?8 L/ X
  558. ;==================================================2 ?# R) C* R1 w/ B, J6 s. L
  559. LDX #$FF1 C6 g1 w/ |4 b5 c' U
  560. TXS
    + [4 R8 V/ B' W! S& X

  561. # N/ V% w  h5 ?3 F6 Z# j% t
  562. JSR Init_MMC3
    ) R! z7 d9 G6 A

  563. 6 R3 V, M3 Y2 J, l0 _2 j) g
  564. LDX #$02) a: T& e' D% m8 `. S
  565. Check15 @0 K& x* ?! }
  566. BIT PPU_STATUS2 S1 I. y1 g2 I4 ~( a1 e
  567. BPL Check1% |0 v: {  F8 Q1 I
  568. Check2
    . l% L* Q$ r: y( l
  569. BIT PPU_STATUS$ u# c4 d5 W% p* r+ T- t) N
  570. BMI Check2' b9 y2 Q/ J, o; U5 n6 ^

  571. . o0 r$ I& K: U) Y
  572. LDA #$0F( ^3 f# w& x& a
  573. STA APU_STATUS
    ) p$ E% q9 k  Y
  574. LDA #$C09 z, C7 K7 `$ U" [' s
  575. STA JOY2_FRAME
    6 ^; O+ s: @! R

  576. 0 w# |6 n5 S2 N* b6 A2 h
  577. LDA PPU_STATUS- S0 j& g* ~! ^- _6 ]. U. i1 |
  578. LDA #$102 W2 ]  [! d4 q1 D1 R
  579. TAX0 I1 I( E! Y8 u% E) H8 g
  580. Check3
    9 w6 B" D9 B- M; r' x
  581. STA PPU_ADDRESS
    + v# u) @1 w9 m( S
  582. STA PPU_ADDRESS
    " Z+ `; A1 j3 \& E- A/ u5 u3 Y
  583. EOR #$00
    ! p+ P7 s7 h) `
  584. DEX
    $ g+ X, F9 c! A: J
  585. BNE Check37 X1 ^0 Z" |3 Z2 u4 m! K+ g& j
  586. ;==============================- t1 u' B! \5 ~% o
  587. ;调色板清空
    / d! ~" a* n* [$ {' I2 M6 Z
  588. LDA PPU_STATUS. z! N6 r  x. ^
  589. LDA #$3F  D9 t1 e4 Y- G0 v) K
  590. STA PPU_ADDRESS2 N1 u" o. X6 T7 B4 ?& W, J$ L- G0 D
  591. LDA #$00( s9 b( k" l4 O# v
  592. STA PPU_ADDRESS
    7 |+ h& _1 }6 r: \, p/ a: j' W5 A* B
  593. LDA #$0F! n2 n# E! {4 ^- u  v% \; Q6 O2 G
  594. Palette_Clear/ N/ L- Q+ k. s
  595. STA PPU_DATA( [/ M, [+ |6 |5 B, U8 A' a
  596. INX
    7 u3 K4 a; ]( L# r+ S8 A6 _8 D
  597. CPX #$20
    9 \& }. p" z5 P
  598. BCC Palette_Clear
    7 k- \4 E1 j2 V7 i
  599. LDA #$00) ?! d. u# U* v3 d) `4 q) Q
  600. STA APU_STATUS8 @7 k0 Q. m( j4 Q9 V7 e: v$ v

  601. + y6 z" ^  l) y( k2 P+ D) ?6 D
  602. ;==============================: L' j/ D4 l+ E) g
  603. ;RAM初始化0 g9 B1 q( e- |, k3 {
  604. RAM_Clear_All3 I3 s& W6 ~9 @
  605. LDY #$00
    8 k! w% x9 Z7 ~$ D& f$ _6 _; X! T# R
  606. LDX #$089 C; L. _* n/ m9 m" |/ U
  607. LDA #$00
    $ y/ k5 P) R" ?- n% Z- e6 g
  608. STA <$00
    ; e# z1 u, k* E" M! w' _
  609. STA <$01. a0 p! I* s8 q0 m: Q
  610. RAM_Clear_All_Start+ r; R1 m: }/ v
  611. STA [$00],Y
    # c! R* J* {0 h% O- |6 A$ |( s! g; w
  612. INY
    * e5 B$ J' W% v  N0 v
  613. BNE RAM_Clear_All_Start
    $ w' O& N' C8 t0 q* Y# L8 o
  614. INC <$018 v& l$ b# j; b% ?8 E+ p# Y
  615. DEX+ t3 I& l  f* G- j; h1 E# _
  616. BNE RAM_Clear_All_Start
    ! @  A) x3 N' X% T( J

  617. : J9 M; u; t/ L$ [
  618. JSR VramClear! x. x4 A) n# {/ D3 h
  619. JSR VramInit
    ! a& J3 }9 l  {3 R( t
  620. JSR OAM_Ram_Init* _7 O! L( O# {- V/ e4 V
  621. JSR Init_Palette_Addr' @4 ^6 e" m" G& r; t
  622. , k- C  ]# s$ R6 d; ~
  623. LDA #$FF
    ( I  e0 v& W8 l/ _/ f3 Y
  624. STA Use_Ram_End
    ) m: g: q# N9 U- g+ w0 P
  625. ;==============================
    9 U6 A; i. T6 U* ?3 @) w& c
  626. ;初始化背景调色板
    " Y. G5 b3 r6 t8 l
  627. JSR Set_Palette_Color
    8 w/ ]" {- ]$ H6 s. S
  628. JSR Set_NameTable_Attributes
    # H. |" ?! f- \( t3 G& P
  629. 0 \( A. Y, ^1 _# @
  630. LDA #$00. A' E9 I* H2 B
  631. STA PPU_OAM_ADDR
    9 k5 C& l& F9 d- M( B7 r
  632. LDA #OAM_TEMP_ADDR / $0100
    & |4 A; E: Y+ {6 {' O3 o
  633. STA OAM_DMA
    ! B- a$ K: K! l
  634. 4 ?9 w. t" W" g  ], ^
  635. JSR Sound_Reset_Proc
    0 f) B( s* U& q& d1 f
  636. JSR Set_Sound_Total( m* B. B8 d! }$ _

  637. % {, g3 r0 f" J+ t
  638. Init_Start_Music
    " ]* M6 C3 ?+ v8 ^: C7 Z2 U- a! |
  639. LDX #$00
    & W# h% ~8 j* N  S# l! Y
  640. Init_Start_Music_Write
    ( e) e7 M! \! G: g) ~: A( E5 k5 l4 J) V) j
  641. LDA Sound_Start_Port,X: q( @  \2 m1 |0 p/ h9 m
  642. STA <Music_Cur,X
    7 Q1 {. c- u1 E1 ]  k; t
  643. INX
    ; x8 h% m8 Y. ^" u0 f: b
  644. CPX #ITEM_MAX_SIZE7 t9 h/ J0 N0 E. A0 \6 g# F( `
  645. BCC Init_Start_Music_Write
    7 F8 {$ s' d8 b0 f7 q" M

  646. 6 e# a, {. @/ O0 p4 ^
  647. JSR Show_Music_Text, u8 l$ z4 v; m# V0 H
  648. ( t/ S+ y! {9 @6 j' V5 e+ V, D  B
  649. .IF SOUND_BAR_SHOW_ENABLE
    6 F# L' T/ f8 @6 _% ~- q  w
  650. JSR Sound_Bar_Text_Set
    6 p! W3 t* P& o
  651. .ENDIF# Y0 i( o. G0 B% U+ x) O2 X

  652. 8 e0 `4 L) |, J6 R. z# {. x
  653. .IF Track_Name_Pos' C6 t, o  s/ r& A6 ?+ g( S
  654. JSR Show_Track_Info4 A( u- P3 Z/ @) W4 H$ d+ }: ~
  655. .ENDIF' s3 |# I# o. I( F" ^  l) n# X0 D( V

  656. ; f8 R4 q# _& f6 S6 f$ p+ Q
  657. JSR PPU_Proc9 B) s6 D% P; V; |7 Q7 h
  658. 9 L, F+ H$ z8 B' }% x# Y
  659. ;==================================================
    7 V' y, g5 s3 R6 n- ~( p
  660. ;音乐bank初始化
    1 r2 A9 |' a6 R. B9 {9 ]9 k
  661. JSR Init_Sound_Bank3 M6 N; ~, o# S0 e3 d6 e
  662. ! v4 s3 n5 ]; t% R7 d; [* }7 M8 N
  663. JSR Music_Show
    # o6 k; t7 v* s: x
  664. JSR Time_Show: D4 B  s% f( s( B* x- `3 X2 ~. _
  665. JSR Music_State_Show
    ) q% E6 _( }$ C& h
  666. JSR Time_Delay/ \' N. W5 f' h! k* B8 R
  667. ( H3 w) T! S1 C0 y; ^, [
  668. LDA #$015 H2 X- `( Z- g5 X. z
  669. STA <Music_Stop_State0 M5 |. U1 S. k) T1 A: x

  670. ; X  b3 H  @2 i
  671. LDA #$88
    / C$ x4 b: Y% }
  672. STA Screen_Ctrl
    5 F% ]4 _$ [: r6 Q
  673. STA PPU_CTRL
    ! K  F5 H1 J' ~& v1 ^, a
  674. " M6 ?1 E9 b, C" M6 |
  675. JSR Show_Page_Text
    3 x! o7 P! `& k" T! n% }
  676. # |1 i6 l0 A  [+ x- x
  677. LDA #$10. X: F. g" _3 x4 {% y9 u
  678. STA <Time_Wait_Cnt
    ( E% {! u4 p5 u

  679. 9 G- u5 E6 N  n, c( U  z( K
  680. Wait_Time_Over  @/ Z9 o5 G, g" q) N; [
  681. LDA <Time_Wait_Cnt
    9 `" K; P2 h8 ~& V: M. g
  682. BNE Wait_Time_Over; r+ b: Q7 ^: F9 L1 a

  683. 9 E0 O/ j& E' U2 _/ N+ v' ]
  684. JSR Show_Arrow
    % t. D& y$ ]  ?' A# T
  685. LDA #OAM_TEMP_ADDR / $0100
    ! C6 }8 r; [5 N+ s8 T
  686. STA OAM_DMA
    $ d7 U- l  c6 j! [

  687. 6 @. r, N2 P" O5 {) W: U
  688. LDA #$1E
    9 C$ P1 R" X" G0 `7 F! L' n5 d
  689. STA Screen_State5 [! F# d" s( l" o9 z8 d
  690. - Z0 }( `0 ^' L
  691. LDX <Music_Item_Cur6 ^4 A7 w. D+ L* l7 G" A
  692. LDA <Music_Cur,X6 B& ?, M% D+ H
  693. JSR Sound_Init_Proc9 c% f6 T8 H6 o# V- M: K

  694. , S& a; s+ _% w8 C" J
  695. CLI
    / p$ g# l8 B( T6 i2 g0 m8 D
  696. JMP MainLoop
    " z- a# T! k5 x, f- B7 m" l( K

  697. & l9 u. F- U: n& R" A1 w) b+ ^0 D+ I( E2 s
  698. ;==============================3 J! p8 f" P1 y/ I9 g- K
  699. Time_Delay;延时等待. U. B1 a+ j* V+ j5 V' d& D+ A
  700. LDA PPU_STATUS- ^) \5 t8 k4 D% B
  701. BPL Time_Delay5 x; [9 T. d% R$ P! U1 t2 J( R- b
  702. RTS
    3 ~8 _( k" `% [& A6 `* r

  703. 8 ?1 x5 `) O+ U0 J
  704. ;==============================! O8 l4 n! x" r
  705. OAM_Ram_Init;初始化精灵内存! H4 k* W9 H' ^. x/ G
  706. LDX #$00
    , w, k7 p% h! |
  707. OAM_Ram_Init_Write1 S; @1 ?# H& |  P; e: Z8 |
  708. LDA #$F83 U2 L! Q) D$ C' w
  709. STA OAM_TEMP_ADDR,X
    - C0 U( ]$ o* u) f8 ?0 Z/ N
  710. INX1 V( h/ H% J7 B# z) y+ |  S
  711. LDA #$F8
    ) M: H$ R* l+ z5 l5 c$ Q: B) N
  712. STA OAM_TEMP_ADDR,X
    * b' ?. e& U# u, k: _
  713. INX# f3 a! \$ M2 W, M
  714. LDA #$00
      Z& y' M- L; d# C- N
  715. STA OAM_TEMP_ADDR,X  x* [' F# z- ]8 `
  716. INX
    # A8 k+ Z( d6 f  k
  717. LDA #$F8
    - h  e; m7 _3 p+ L, _( R9 `3 y
  718. STA OAM_TEMP_ADDR,X
    # L3 ~% X( R8 q9 |
  719. INX( t% D# b- @5 C9 y
  720. BNE OAM_Ram_Init_Write- e2 Z( ]1 _' ^
  721. RTS
    , Z% m; F% q8 z$ V: [9 g

  722. 0 s$ H; _0 @: A9 T3 ?& C
  723. ;==============================
      L6 C: K7 ^3 J( w
  724. VramClear;初始化图形内存) g6 l7 z, A# w
  725. LDA #$20
    ) y4 l' g1 M) l* S
  726. STA PPU_ADDRESS
    ' E2 A4 q0 R8 w3 Z# _; w
  727. LDA #$00
    + \0 a( L# U6 R$ ?6 X, l
  728. STA PPU_ADDRESS9 i! z0 ], A& m  c7 ?2 N' D
  729. LDA #$00
    5 n3 Z/ s4 h  }6 l0 q
  730. LDY #$00% k% @" N; B% Y# W
  731. LDX #$108 a& g$ W3 x+ l% Y$ _; R3 v1 N
  732. VramClearWrite; O4 r1 Z# z1 }" A9 T- G% ]
  733. STA PPU_DATA# m& F2 S! S( I: E+ k
  734. INY
    1 {& b' s+ t; m9 f* n) P, D
  735. BNE VramClearWrite
    # f! W% O! F6 R! b
  736. DEX
    7 C. N! V& ]; E. k
  737. BNE VramClearWrite
    + ]0 j9 W) ^; U5 o8 J4 h
  738. RTS' _3 O4 n, ^  I+ \2 D3 \
  739. $ {. ~3 U" D0 E
  740. ;==================================================
    ' H. G4 F* R5 v
  741. ;设置MMC3图像bank
    # S3 r5 q( a3 M8 z' Y1 p6 V! c
  742. Init_MMC3_Chr_Bank$ x5 ]7 O$ s7 b9 M
  743. LDX #$05
    7 k4 @! c& {7 \) Y7 ?( N* Z
  744. Init_MMC3_Chr_Bank_Write0 C( b- X4 _# ]. J
  745. STX MMC3_BANK_CTRL$ Z8 g6 h# w8 p2 W' e! B
  746. LDA MMC3_Chr_Bank_Data,X  ^* e* y1 X5 P! c. y6 r; D' v
  747. STA MMC3_BANK_DATA; E) N& R: |" a/ Y; w1 |
  748. DEX$ i* T# ^% ]+ ?/ a) n8 _& V9 G6 h5 R
  749. BPL Init_MMC3_Chr_Bank_Write- _# x' Y/ c$ R1 y3 `4 s
  750. RTS
    1 e+ s& ?) ~, v- M* b
  751. ;--------------------------------------------------0 V- h) W- @& n6 s' z: A
  752. MMC3_Chr_Bank_Data' d: Q2 I. J, B" |
  753. .DB $00,$02,$04,$05,$06,$07$ h5 s# O+ L  l& M# _& J
  754.   N; r7 v- O# u! z" V. \3 w  H
  755. ;==============================2 T9 d$ Z& @( E# j( U+ D6 E
  756. VramInit;初始化图形内存
    % h6 E& e$ A3 ]' A- O
  757. .IF CHR_RAM_ENABLE
    / _# o4 t7 _7 a4 a
  758. LDA #CHR_DATA_BANK
    3 j# k) b: ?  C4 l6 P  n4 x1 H
  759. JSR Switch_Bank_A000
    / a7 T, }% Y- j) N! x3 F# T
  760. LDA #LOW(CHR_DATA_ADDR)
    # {  n/ M+ i% M( _" C
  761. STA <Data_L
    2 u: J  n" Q) A5 Z! v9 F7 n" X
  762. LDA #HIGH(CHR_DATA_ADDR)3 ~% z4 d/ l+ e; Z# s  ?$ l, o
  763. STA <Data_H
    : W# f0 Z8 Y: R) N
  764. LDY #$007 q  b0 `5 g) r% J& @
  765. LDX #$20" `$ w" b0 O+ x1 o
  766. LDA #$00' C5 ?% V( d& K+ [( o: v: M
  767. STA PPU_ADDRESS8 s) l9 A1 C; j
  768. STA PPU_ADDRESS
    : B0 i8 n" m4 ~8 @+ {2 v: X
  769. VramInitWrite
    # L! `2 c/ C7 O
  770. LDA [Data_L],Y9 {! G  b0 C& p' c( A! X
  771. STA PPU_DATA  C9 L% B3 Z0 L* r& s4 Q' f3 E$ y
  772. INY8 F( b. _. U) @0 H: Q" t
  773. BNE VramInitWrite, w, k& d+ n: l7 w$ o. D, @9 P2 j& T( d
  774. INC <Data_H  p3 o: h. o1 t2 C0 n
  775. DEX4 j( e; e7 C. h6 E- o
  776. BNE VramInitWrite
    . ^3 T0 i8 o4 e4 T
  777. .ENDIF
    & a5 m) }) s6 Y+ u
  778. RTS( B" W& Y2 x7 R" N6 b+ [( j5 F% i

  779. ( I# _+ ~# o* F! c% }
  780. ;==============================
    , ~7 u# b$ P6 {4 z
  781. ;音乐切换
    5 ?( j2 x3 f: |
  782. Music_Play_Change
    ( ~1 f5 \. V3 H$ Z
  783. LDA <Key_Once
    8 g8 O( A) r  t# {7 O8 X5 p
  784. AND #$FF1 V6 A2 ^3 @: O- u
  785. BEQ Music_Play_Change_Check
    / v5 q% l: J/ X. K$ [3 X2 Z
  786. 1 b# r1 `; Q: s: L9 A9 W
  787. ;禁用音乐条刷新1 u& y( k9 O/ E  i# h9 ^7 ~
  788. LDA <Text_Disable_Flag
    ; o8 W) w0 h6 K
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    : s) |+ F% {" Z3 J" e' z0 G% I& q
  790. STA <Text_Disable_Flag# u/ e& r/ k9 }" [

  791. 5 s2 t; I7 V3 C$ n3 }, g
  792. Music_Play_Change_Check3 u; r2 N' a5 u! u6 v: A' l
  793. Music_arrow9 q9 S9 V. _# T6 w. D
  794. LDA <Key_Once
    - A, v  {: ]0 }# ]0 U  B
  795. AND #$0F' \- W! Z# s$ V7 D) Z2 W' |# h
  796. BEQ Music_Play_Change_End6 y. k0 A9 h' G0 e# C0 R. z) {
  797. JSR Music_Track_Change  F+ }+ F% q) w% @% H( ~" ~4 G
  798. JSR Sound_Reset_Proc
    , O) K9 n3 @2 E  [3 M! }3 }
  799. JSR Music_Show# ]7 `0 \3 q2 J
  800. Music_Play_Change_End5 b- A) A0 A/ w  H0 D
  801. RTS) @; Y4 R* \& T+ P1 j

  802. " i0 b  m; a3 m1 F* f3 n, v; h
  803. ;==============================
    5 k+ w* j6 W4 Z5 p9 h
  804. ;音乐曲目切换) g7 Q8 Y! `! Q' J
  805. Music_Track_Change8 a7 T  E" S- T5 t0 ~: K  m* i
  806. LDX <Music_Item_Cur/ d, v5 ^; a5 S+ o/ H* c
  807. LDA <Music_Cur,X
    3 y6 x% R: _/ W+ N0 \1 g  N, |& L
  808. STA <Music_Last
    * G' G) k$ c. K( \5 g. n) S+ s, `
  809. Music_Decrease
    4 b+ j: P! o8 t' L# _
  810. LDA <Key_Once( S1 _# n/ g; U7 g- k
  811. AND #$42+ N* ?; `* v0 w8 h6 R% T
  812. BEQ Music_Increase
    $ K( }* e, i1 _% @  S& p9 U8 G
  813. LDA <Music_Cur,X
    ( R: M4 `0 Q* ?0 h+ T! |4 b
  814. BEQ Music_Increase) ?7 u$ r3 ]- j0 ]6 i6 m7 l
  815. DEC <Music_Cur,X2 X. l/ ]% n  [7 M3 h) b( w# m" E2 L
  816. Music_Increase+ k1 `. ]' p0 O0 e3 l  |
  817. LDA <Key_Once/ S+ I. n3 K$ e' v" c
  818. AND #$812 @3 m8 h6 x6 e3 z6 C5 B( @2 `
  819. BEQ Music_Decrease_10
    + S/ Z9 \+ u0 P
  820. JSR Set_Sound_Total
    % k! y  S8 @: b; f  L3 _: t
  821. LDA <Music_Cur,X
    9 e% z  E' _" {$ k
  822. CMP Music_Total6 _" Y# p1 O+ W# |
  823. BCS * + 4
    5 w! [3 q- _4 n9 B
  824. INC <Music_Cur,X
    + \. B+ {+ r# J4 y$ R$ o
  825. Music_Decrease_10
    : b2 @5 F3 A4 f! x" m7 m4 o* M
  826. LDA <Key_Once6 \; U  q* z, b, l
  827. CMP #$04
    - u; ~% U" f! X
  828. BNE Music_Increase_10' m2 {" `5 X. ^; k: a& X
  829. LDA <Music_Cur,X
    + {! C2 A2 q3 s  D% \
  830. CMP #10( [* ?* A1 q, ?# @: Y$ a# l6 ~
  831. BCC Music_Start_Song_Min' B5 k6 g6 e( j; j& `# B; _7 S
  832. LDA <Music_Cur,X
    ! U3 l1 R- m7 M3 F9 a
  833. SEC+ n* N' w6 |$ A/ O& C7 r* h  N
  834. SBC #10: E9 _3 A5 ^' X, J6 Z" C7 L( q- G
  835. STA <Music_Cur,X7 I, V0 ^; \* s
  836. LDA #$00
    : f% ]) |8 K4 v2 s1 @! }
  837. BEQ Music_Increase_10
    " K. n+ J) R9 `' w. l+ x
  838. Music_Start_Song_Min
    - R, u* B5 i, m" h- S! H' c5 p7 z$ y9 S
  839. LDA #$00
    9 Z' X: K5 ~0 y6 e0 W. z' G
  840. STA <Music_Cur,X- `& R+ e" L, C* ^$ N
  841. Music_Increase_106 F4 f0 Z2 z$ \0 C: G+ k9 c
  842. LDA <Key_Once- Q" k0 ~+ @( W: G" D' H  V: v
  843. CMP #$088 o% Z/ p2 a% G+ R! v& D$ B1 y$ I
  844. BNE Music_Track_Change_End, Z+ {. l. g# r' x; _' b2 ]" T' F; n
  845. LDA <Music_Cur,X
    9 Q, ^$ n$ H, J; ^4 w$ V, c' _2 y
  846. CLC
    2 ?" Q4 w: @  \% ?
  847. ADC #10
    1 c$ U4 E6 B3 [, \5 S4 t6 S
  848. CMP Music_Total$ `$ e- T0 h  [/ |& ~& |% n) c( w5 \
  849. BCS Music_Start_Song_Max5 i) X$ f0 m( G( Z
  850. STA <Music_Cur,X
    5 y$ j+ C- h1 n  Y0 x3 [5 s5 H
  851. LDA #00
      ]) B$ n! H0 s1 }# [
  852. BEQ Music_Track_Change_End9 A0 p5 ?& q% o# ]: v% s' W
  853. Music_Start_Song_Max; t1 x* }! H1 B% V
  854. LDA Music_Total
    / U0 @& ~- o- _6 l! r. f' N
  855. STA <Music_Cur,X- [9 Q0 a7 g8 d6 s; I8 o) K
  856. Music_Track_Change_End" ?3 _* ^  X6 v3 V3 F* M4 n/ n
  857. RTS
    , h+ @  J' {" I" [6 ^. g) @- M3 D

  858. " h; i* x- R7 g
  859. ;==============================
    5 `. {. K% w; C0 k; A) U
  860. ;按键处理4 p! n  {* \: R5 w  k+ r4 s
  861. Key_Proc
    - x1 ?/ Y& F, }6 T
  862. JSR Key_Scan
    5 |  ^0 v4 C6 c
  863. LDA <Key_Keep
    3 W% X. Y/ _- V, z) [* B" V
  864. STA <Key_Temp
    7 D4 c/ _9 `+ _7 x. Z
  865. JSR Key_Scan* R- C5 V! o$ c' Q3 N1 U0 R
  866. LDA <Key_Keep
    / n. ?; c1 J; f6 ^2 j. o" r
  867. CMP <Key_Temp
    ) Y6 S0 h+ T2 S5 w1 Q
  868. BEQ Key_Get_Once5 G0 `# P. q8 w2 O5 m3 c% H
  869. LDA <Key_Kemp
    & W* Z- m/ V2 v3 B: F( G: m
  870. STA <Key_Keep
    % V% o& S$ C+ k; N9 d  M0 k! G: ]
  871. Key_Get_Once# R  r* w3 L5 H1 j
  872. TAY
    6 ~, q; E+ b& [* c. K) u
  873. EOR Key_Kemp
    5 A( |5 t8 C* L* y5 D* t+ Y
  874. AND <Key_Keep
    + o* {9 Q. O& z2 J0 I# `+ ?# L* s
  875. STA <Key_Once! o: N, L' X( y
  876. STY <Key_Kemp
    5 g# C  E. V+ C) X3 L
  877. RTS! t' q  ^% |$ R% X1 q! \+ G
  878. ;------------------------------
    7 f8 @# X" [1 H
  879. ;按键扫描
    8 o3 [, Y  Q# q
  880. Key_Scan
    2 @6 b8 u" X% A# b( Z* e8 E4 e
  881. LDX #$01: [3 C2 P8 `+ ?2 W7 L
  882. STX JOY1_FRAME
    9 B8 ]' B/ C' V1 @
  883. DEX- o  s# y' a' n- [
  884. STX JOY1_FRAME  r; c9 K6 \1 O8 d5 u
  885. LDX #$08
    1 a0 r, A: X5 K
  886. Key_Value
    % I7 K* G; i" l5 Y& L/ W
  887. LDA JOY1_FRAME
    " k0 Q1 W  Q2 j* ~% Q+ L
  888. STA <Key_Getv/ p2 s  z8 P! c
  889. LSR A: a6 M8 A8 ]. G. R! T% Y: |
  890. ORA <Key_Getv
    ( O2 K: W1 m$ b
  891. LSR A
    ; q1 |* u/ w9 }. Y% [1 m" R
  892. ROL <Key_Keep) E! I& h$ i" I) L! i
  893. DEX
    " L! F! H* ~* J4 }/ w. j/ r( l2 W
  894. BNE Key_Value; C) Y* p5 X2 z% b4 M& W! H0 q
  895. RTS
    # l9 k: }0 `) [, `$ y1 N
  896. & G5 t% J# b+ f$ d, p+ S/ z& K
  897. ;==============================
    " T6 _2 f! W% _4 h+ g+ s: y
  898. .IF SOUND_BAR_SHOW_ENABLE
    1 e" a% ~" c0 z7 c8 G5 }" ^8 |
  899. ;音乐条显示
    * n' c# u1 Q) P3 E$ }6 s
  900. Music_Vision
    & F1 i& J4 n# I3 y! o
  901. LDA <Text_Disable_Flag
    + [! U6 D3 S( {, B7 D, B0 q
  902. AND #TEXT_DISABLE_ITEM
      C$ T/ D+ _' v* u/ k" ~
  903. BNE Music_Vision_End9 o; I2 z$ o& i, v; e+ p
  904. AND #TEXT_DISABLE_BAR
    $ l% U0 k, q% g. t6 S5 h, l) \. m
  905. BNE Music_Vision_Set1 Z0 j* f. ]9 }7 h: R5 e1 V
  906. LDX PPU_Cur2 w0 S1 Q% M  a* g
  907. JSR Music_Animation6 E  M" q3 l8 u4 F; }
  908. STX PPU_Cur+ E) z+ [4 f1 G3 c. V" _
  909. Music_Vision_Set
    4 @( ]5 [9 Q8 M& z
  910. LDA <Text_Disable_Flag
    0 L5 ?# l% M( N5 l/ P6 b9 \
  911. AND #TEXT_DISABLE_BAR ^ $FF
    * i# `- d( u+ w# @$ h, H
  912. STA <Text_Disable_Flag
    ) R3 @+ g) g; |
  913. Music_Vision_End  m8 e- H: h8 G7 b
  914. RTS
    8 h( u1 M1 m8 z: l6 N% D
  915. ;------------------------------8 e" `* N/ T; R0 z9 [
  916. ;音乐条显示处理  j6 ^% s' w& |1 W# S5 h7 I# c
  917. Music_Animation! g! X% A$ y' l% F1 l
  918. LDA #PPU_MODE_CNT_LINE
    % T7 n, D) s% ]  }
  919. STA PPU_Addr,X8 t1 X) ?" j. j  A4 {5 r  Q5 l
  920. INX
    ) i3 `7 q4 I1 Q! I
  921. LDA #HIGH(Sound_Bar_Pos)% ?" R$ p& a& \, a
  922. STA PPU_Addr,X
    - a/ j+ P* Z! w2 v& S2 x) i
  923. INX  v# c6 h4 T+ [. @7 \& d' I
  924. LDA #LOW(Sound_Bar_Pos)
    * Y  u: b. J+ Z1 k
  925. STA PPU_Addr,X
    2 L. x3 @( n( L; ]7 x3 j9 Z) X8 K
  926. INX" b5 ~: i' U& v8 c2 u9 \5 X+ W
  927. LDA #$08
    7 p1 s3 e' d6 d1 f$ h
  928. STA PPU_Addr,X
    # S/ a! y( |! J8 H2 I
  929. INX% _% T( q" b3 T7 {2 s
  930. LDA Sound_Bar
    ; e: }8 \; C! d! l$ O
  931. JSR Volume_Convert+ \+ n& j. n3 b! x' {7 v4 L

  932. $ A! g6 m2 |. {: r) w% P+ C, I6 J6 c
  933. JSR Volume_Set_Cnt" p( N' m' z/ e: f* Q0 I
  934. LDA Sound_Bar+$4* c7 m7 L0 A/ c
  935. JSR Volume_Convert
    " c2 m4 s7 z5 M4 d
  936. ' K4 @8 P! I3 @, l7 h" T
  937. JSR Volume_Set_Cnt" u: p* D5 u+ _( c
  938. LDA Sound_Bar+$8  }4 G: E1 d2 X2 q0 I( N% [4 C( Y$ A, {
  939. JSR Volume_Convert* }. C/ l2 Z& A. h/ r3 d$ ]1 X1 q
  940. 8 ?# @% h0 a' P' c
  941. JSR Volume_Set_Cnt
    . Z( b# m# Y* [- n' _: u4 Y) V% e
  942. LDA Sound_Bar+$C# g) [1 Z- w2 O% [$ k  \
  943. JSR Volume_Convert3 m4 @( o, w( p1 T3 f- p

  944. % k2 V" U: J0 ?, F  L# X
  945. JSR Volume_Set_Cnt! H: Q; q) R" Q9 C$ |
  946. ' L6 w. V0 C1 a" ]2 e* i% R- H9 I
  947. LDY #$10/ l9 j9 f- H8 S/ b! Y
  948. LDA APU_STATUS
    1 M0 R& v. P) J: O2 q- I
  949. AND #$10
    - P1 G4 ?( Z4 R6 s+ U4 h- S: _
  950. BNE Volume_Count1 a1 ~% U+ L; J
  951. LDY #$00
    7 z( |" @2 G# X' k% T1 F
  952. BEQ Volume_Count
    # g* ?3 A; d2 y1 V  A* b

  953. - h+ D/ t" }& y) |8 ?) c$ m
  954. ;------------------------------
    9 R: I9 w0 E5 M) K7 t! J
  955. ;音乐条处理
    % y9 G* }* C7 x6 J/ C
  956. Volume_Convert2 d+ Z) o! [; Y
  957. AND #$0F
    % f+ n; j4 i0 Y- ^7 Y' |
  958. TAY) n4 O% J! Y& s  `' E/ H
  959. Volume_Count; W. U' ]7 b5 W" m6 ^5 X6 ^& X
  960. LDA #$08
    5 t% C! g" g, Z& {% Q
  961. STA Sound_Bar_Cnt
    ; n, y5 G6 H) O# H! C2 a
  962. Volume_FILL+ L1 e# t: X4 x1 h0 I
  963. DEY2 M4 z3 L7 Q, t6 _9 U. A9 v
  964. BEQ Volume_Half" J0 r* i: w- S
  965. BMI Volume_Empty
    ! w% ]( Y' y& M  b
  966. DEY
    + S, ]5 J: ^9 x+ r
  967. Volume_Full
    3 O3 e1 K7 ?- b7 p. L, g4 i! f
  968. LDA #$169 A9 i. H! E! y% L$ S
  969. BNE Volume_PPU) P8 o1 o( I% u1 J# h* f
  970. Volume_Half
    $ u. t$ s! l* Z3 h* D& \) \
  971. LDA #$150 c, m" {& I" j, y8 ~
  972. BNE Volume_PPU3 Q$ F. e0 u7 p" l
  973. Volume_Empty
    + A1 M2 Z) I2 t1 ]* y
  974. LDA #$14/ V! V+ r' h" O8 b' U& H: c
  975. Volume_PPU0 d2 E8 E! i; P' M- c$ _- Z
  976. STA PPU_Addr,X$ d  s( U$ x% X9 L5 j3 C) w
  977. INX
      K7 d4 \, Q+ Z6 _0 V, F9 J( d
  978. DEC Sound_Bar_Cnt7 ~6 B8 X2 y; {
  979. BNE Volume_FILL
    ' p# ^3 F( _0 o& N
  980. RTS
    . [# C7 H$ ^5 O' j$ U, K$ I% W
  981. 5 u. B0 l# s* ]$ E
  982. Volume_Set_Cnt
    & [5 e7 h4 U+ ~) N" S& M/ C$ E
  983. LDA #PPU_MODE_CNT_LINE_NEXT: ^5 G' c. l0 D8 |$ D4 [
  984. STA PPU_Addr,X- b0 K( w, W+ u3 ?
  985. INX+ _  C# Q& M" O! m+ l
  986. LDA #$08
    3 p3 N4 _' z+ ]# Q/ `8 w
  987. STA PPU_Addr,X
    . L3 N# u0 [& T+ a. ?. A
  988. INX
    2 E' s* o4 c3 x/ }$ c
  989. RTS3 `; K+ o8 a! k5 @) M/ X- M' d
  990. $ h5 K0 m+ h* ^! z
  991. .ENDIF' o) ^8 L. {. o; V- y. n( z; h
  992. / V7 G$ d) d9 T
  993. ;==============================2 [  m# r" f" G& j
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入: x8 ^3 Y, C1 k4 {. w5 L8 _: n1 C
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式2 B# N9 [4 @' k, K1 f
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除( L7 s3 G/ L  n3 r, U+ O
  997. ;------------------------------, [9 [5 m* @) H2 a" L3 [& k
  998. ;PPU处理
    # W$ e5 L2 P  T/ j3 b
  999. PPU_Proc
    6 f" Y  q; }% t9 T, Y' H1 x
  1000. LDX PPU_Cur! I$ s. h  p& P7 l- R
  1001. LDA #$00$ C' B% {" T7 c6 f8 P3 C. T8 o/ K
  1002. STA PPU_Cur
    5 X& c* R  `- `  G. V  P4 A
  1003. STA PPU_Addr,X( p4 H) U4 ~# u5 H% a
  1004. LDA PPU_Addr
    , J5 L7 b$ G# y) X! }" U
  1005. BNE PPU_Proc_Beg
    ( |4 @2 c( C- P' g- U: t4 R
  1006. PPU_Proc_Ret
    : D% |% R; J8 ?  V0 }% x; p+ _
  1007. RTS: c' w& @  a5 b4 c) ?3 u
  1008. ' V& m( J8 X* a/ Y
  1009. ;------------------------------( a! E/ o; _& ~  |3 A+ ]- w
  1010. PPU_Mode_Return_Cnt  ;转下行模式. U; w. }- t4 _/ c: w" ^
  1011. INX
    1 }! G7 r  Y* z) o* H$ w) {5 i7 k
  1012. LDA PPU_Addr_L
    " E) [3 ]4 o  ~; R
  1013. CLC! i  B3 E5 l$ Z
  1014. ADC #$209 U6 X- O" `; [# g: O
  1015. STA PPU_Addr_L9 r6 n' G! a! v: i5 V$ x
  1016. BCC PPU_Mode_Return_Cnt_End
    6 a7 m$ I6 `& g( |! ~
  1017. INC PPU_Addr_H0 d4 P3 k, u9 }2 H/ d
  1018. PPU_Mode_Return_Cnt_End1 p  p' L, X3 o, z! A6 F) U/ ^
  1019. LDA PPU_Addr_H
    4 d( `/ I  z' B0 }* q6 b0 z
  1020. STA PPU_ADDRESS
    + q; V+ {# d" Y0 b9 l" @$ W2 X
  1021. LDA PPU_Addr_L( j% B2 f4 w5 G
  1022. STA PPU_ADDRESS9 [( ?$ p/ K% s( @5 \
  1023. LDA PPU_Addr,X- N( n2 T" ^! P) {, v
  1024. TAY! R0 @& [: `0 A$ p6 _+ P8 e# _
  1025. PPU_Mode_Return_Cnt_Write
    : T8 _7 {8 J' X7 N, e
  1026. INX0 |1 a, Q! h1 g4 S- Q
  1027. LDA PPU_Addr,X% D# e/ B. t$ d# ?1 c
  1028. STA PPU_DATA
    2 y( y/ [8 X5 b6 ?. H: E5 }' s
  1029. DEY
    1 s9 y& l1 w' x! X+ N' Z. g
  1030. BNE PPU_Mode_Return_Cnt_Write7 z' z5 G& C7 L
  1031. JMP PPU_Proc_End  ?* [  f' T3 R7 _: t
  1032. 0 D+ ]" `% |3 k  Q+ t
  1033. ;------------------------------) n5 H1 l( v' s# ]: i
  1034. PPU_Proc_Beg  ;处理开始
    " E5 Q% C$ ^) I0 r% C3 E  u+ y
  1035. LDX #$00
    , w, |& d4 y8 Y" y
  1036. STX PPU_MASK" ~# l* l7 I( |- K; z/ P
  1037. ;------------------------------& }9 q7 K# r% n. P5 m
  1038. PPU_Mode_Select  ;模式选择5 Y7 p6 h9 R+ D) v) @
  1039. LDA PPU_Addr,X, j3 e1 c( N" I* U- `
  1040. CMP #PPU_MODE_CNT_CLEAR
    , X! M" W0 }4 d$ \
  1041. BEQ PPU_Proc_Clear
    / s2 j" t6 p! `- v) K7 ^
  1042. CMP #PPU_MODE_CNT_LINE
    ) Z  N4 ^  D! X2 |
  1043. BEQ PPU_Proc_Cnt_Line6 s6 {. t0 i, u# A- n: Q
  1044. CMP #PPU_MODE_CNT_LINE_NEXT3 l: n" i: Y" K& m
  1045. BEQ PPU_Mode_Return_Cnt2 A4 S! G" l# V1 D6 T: D5 ]
  1046. JMP PPU_Proc_End_Write
    7 }4 _2 v  J0 k# V, I$ z+ E
  1047. ;------------------------------
    % u: ~# a% q, i% T7 w  g( p
  1048. PPU_Proc_End  ;单行写入结束
    4 X  F  J2 C7 ]3 U( }
  1049. INX
    9 K( M- s0 ]* E
  1050. LDA PPU_Addr,X
    - M0 a* l; o- ~$ r
  1051. BNE PPU_Mode_Select
    ' B5 ]" Z" ^3 r. c" [) z4 D
  1052. STA PPU_Addr
    8 z2 ^4 O" V3 t: w9 M
  1053. JSR Update_Palette_Color) N' C$ D& B8 x2 N9 {

  1054. 0 p# R: j( ]4 o) l: y5 r
  1055. PPU_Proc_End_Write! Q. v$ |( b: e/ h
  1056. LDA #$003 D8 P3 s8 q/ K, G
  1057. STA PPU_ADDRESS
    ( g7 d' b( u& ?0 v6 B- T
  1058. STA PPU_ADDRESS1 S5 |# C9 K2 H% l5 Q. x
  1059. LDA <Text_Disable_Flag
    % u9 C5 \5 {& t% D3 h! }
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF  O& r2 B0 ~1 u& Q3 e6 |' \% f
  1061. STA <Text_Disable_Flag  N/ P' c# _" O8 B
  1062. LDA #Scroll_X8 q6 U; M6 k% U7 {: N( x+ S
  1063. STA PPU_SCROLL7 r' c0 N; p5 ~! F. n+ }! B
  1064. LDA #Scroll_Y
    % c- t. d; S+ n; H7 R+ ^# N# L8 |
  1065. STA PPU_SCROLL
    6 u, p3 Z. a9 R$ z
  1066. LDA Screen_State0 @1 E' h/ x- b5 \
  1067. STA PPU_MASK
    ( m! n7 A6 ?' r/ j+ }
  1068. RTS
    ! M0 f6 n8 Y) S* [

  1069. * L) w5 Q* G9 u, S
  1070. PPU_Proc_Clear
    - S* G) L1 ^. @- ?# n9 ?- G
  1071. INX
    0 R0 Y: \$ I( a9 L
  1072. LDA PPU_Addr,X$ t6 y. X! Z/ t3 V- ?( f
  1073. STA PPU_ADDRESS5 J6 X9 p7 ?! s) L+ ^' ]
  1074. INX/ i  x, G, O5 k" L, O3 L
  1075. LDA PPU_Addr,X
    - R* D: Y( `, z
  1076. STA PPU_ADDRESS
    ' I7 E% E) t" X5 P
  1077. INX
    * U7 k% c, d& C
  1078. LDY PPU_Addr,X% j& _! D4 J# k  c
  1079. LDA #$00/ D; \/ ]& |* U7 e# J
  1080. PPU_Proc_Clear_Write
    1 P; a, E; P; X
  1081. STA PPU_DATA
    ' K  o9 T3 ]) j* C
  1082. DEY, ^) w. l2 d% f# e. R
  1083. BNE PPU_Proc_Clear_Write4 J8 c3 w4 m4 i! T) b5 B# a3 p5 {$ K
  1084. JMP PPU_Proc_End. l$ R5 v1 \/ e6 D2 E; s3 g

  1085. & x8 d; w6 `  `% ?
  1086. PPU_Proc_Cnt_Line0 w' A7 ^- ^, u: S
  1087. INX- Y7 s( t' i2 Z4 L# M( G9 ~3 _5 {
  1088. LDA PPU_Addr,X
    . e% B# e. K& e2 s' o$ B9 g
  1089. STA PPU_Addr_H* l4 O; z# H+ ]0 V, Z2 A8 T
  1090. STA PPU_ADDRESS
    $ d- `6 M4 w! c, m# ]
  1091. INX" H# q% z  w: ~7 x- ~  O- o' w3 e6 ~1 i
  1092. LDA PPU_Addr,X  j/ y" V4 w5 Q5 S3 D
  1093. STA PPU_Addr_L1 C. e" Z8 i: h
  1094. STA PPU_ADDRESS+ x* G! w+ I: J+ ^1 f1 L8 d1 L
  1095. INX
    9 K2 [8 q4 n7 p6 A
  1096. LDY PPU_Addr,X3 Q# k- I2 {/ E% q! [
  1097. PPU_Proc_Cnt_Line_Write2 r1 y& T' v0 b
  1098. INX1 `  a+ G' }- ~% ?
  1099. LDA PPU_Addr,X
    ; K0 n. E/ f  [$ f, Y
  1100. STA PPU_DATA
    ( t5 P/ A' [: G: g8 g
  1101. DEY0 ^) J! B! ^0 v
  1102. BNE PPU_Proc_Cnt_Line_Write! |# y) O& Y. L% W: ?- ~: E8 P
  1103. JMP PPU_Proc_End. _* R/ H. I- j* o* A9 A) X4 |

  1104. * q6 Z! D- x9 l/ m: @5 z
  1105. ;==============================$ Y: P" w4 M  Q" f3 X/ o! A
  1106. HEX_To_Dec;十六进制转十进制# V+ Q/ i- q) V1 j( n
  1107. STA <HEX_Data6 T2 h, Q; C* P' M- G1 \
  1108. PHA
    ( ~5 Y1 O8 @- J9 I/ [
  1109. TXA
    6 x, V% H$ ]2 S4 X; U$ |
  1110. PHA
    0 y9 |" T/ ], t- `) ~. d& k
  1111. LDX #$00% y! A- k; I/ V! ?( {) @* a6 N
  1112. LDA #$00* z  N3 C* p9 B
  1113. HEX_Cln1 r: u# t- y9 b2 k1 N
  1114. STA <DEC_H,X* t% _; V1 ?, J% y0 c! i! C
  1115. INX7 i  _  Q: h0 l* ~" J  ^
  1116. CPX #$03
    6 W5 g% B' C6 ~0 s. c4 b' W
  1117. BCC HEX_Cln
    ; x1 e: g) b# h; L
  1118. LDA <HEX_Data
    % k4 b+ @/ s1 {5 I! s6 c) A" J
  1119. ;------------------------------
    ! d( r2 V8 c0 {! d
  1120. HEX_100
    % Y: n  \) M* k" p# Q  z* j( j
  1121. CMP #100# l6 g% G$ {! A& n% e/ Y
  1122. BCC HEX_10
    0 p. m/ E3 t/ j6 X: ?. X. v6 J4 W/ m
  1123. SEC# q7 m% {5 G- _2 \
  1124. SBC #100- n) a4 A4 ~5 M; n: Q
  1125. INC <DEC_H$ |# B4 l. w7 O
  1126. BNE HEX_1006 p' E! U; I9 a! z
  1127. ;------------------------------
    1 `1 @$ X* B9 J$ K/ V: E% t
  1128. HEX_102 j! r2 B7 z% D; W+ F" L; f9 [* k
  1129. CMP #100 `9 \1 V" z/ Z$ ]0 O& M
  1130. BCC HEX_1
    + ^! q# R3 E# f- f! j/ w; s
  1131. SEC
    4 ~. [, e0 v6 f" X/ j/ _0 t
  1132. SBC #10: C$ x1 H8 y9 W4 O1 I! D
  1133. INC <DEC_T8 S+ d+ t2 x* t# Y2 B2 P6 v
  1134. BNE HEX_107 H; G4 {5 m# _4 b
  1135. ;------------------------------
    # P8 e( H, Q# }4 Q% z, y2 `8 Z. |
  1136. HEX_1
    2 A8 w7 J# \" j
  1137. STA <DEC_L) V4 C* M/ V- c. y6 f9 f
  1138. PLA
    2 l# x# x5 e/ b# J0 X
  1139. TAX
    - t+ P7 ~, M1 G. j
  1140. PLA8 O( K6 \" O  p/ P7 Q, W
  1141. RTS
    0 V0 I" H1 B8 h: {, h% F) ^  L

  1142. 4 L  R; [0 X# t7 [! D) C
  1143. ;==============================* ]5 `. t3 W0 X9 d* @- T% R( m6 K8 ]
  1144. ;音乐曲目显示
    2 t" H9 r$ f. E0 c* I9 b$ B" B5 `4 `' G
  1145. Music_Show
    6 v! g! T( a7 _2 x- J9 o* W
  1146. LDX <Music_Item_Cur
    % J! U) j' t) R% g9 a& i
  1147. LDA <Music_Cur,X
    ! n( V% k4 l/ e0 l; N
  1148. CLC) Y& C$ i4 C) O9 R, |' U
  1149. ADC #$01
    % |; `7 t9 u, G4 O) B( p  O* l/ J
  1150. JSR HEX_To_Dec! D4 v3 p3 D, ^, l1 B* N  O
  1151. LDX PPU_Cur! t9 B! R4 `1 Y* `4 R
  1152. LDA #PPU_MODE_CNT_LINE8 X: r+ }: n& g2 ~
  1153. STA PPU_Addr,X
    % C6 U" J$ j+ _, X) u8 H$ H: O
  1154. INX4 A" u: V. G8 U9 w& ]* _$ c' h
  1155. LDA #HIGH(Play_Index_Pos)0 W6 L9 y8 ?: f# ?
  1156. STA PPU_Addr,X3 i1 ?! a4 Z' i* b9 Z1 t3 H$ [
  1157. INX
    & O4 Q' A0 N1 E* v8 ]. n; z
  1158. LDA #LOW(Play_Index_Pos)
    1 L- @8 ?: r# G' i$ e) y
  1159. STA PPU_Addr,X
    - y$ G# h; i- S5 T. p$ U  L) d% {( e
  1160. INX
    9 b+ k# m5 l1 z0 R/ z8 j5 z. i4 u; C( A
  1161. & J( }% d, r+ k$ M) f( v+ S1 b; |
  1162. LDA #$076 f/ @  R5 u& R, W" l
  1163. BNE Music_Show_Length7 A  v/ T9 `- B. l! k2 x2 W8 w
  1164. ; z) r/ B% r. D0 Y5 J
  1165. Music_Show_Length' ~, V# ~1 k& G3 p: c: W
  1166. STA PPU_Addr,X- n* A2 Z; h4 s( L) p
  1167. INX
    & M0 |$ ~/ v* Q; v

  1168. * _+ c6 ]+ F% k0 H" s: X+ L
  1169. LDA <DEC_H
    0 ^+ z. n# l) N9 [$ q& k8 e4 m, j
  1170. ORA #'0'
    ) g0 I/ S7 l* E) Q4 b
  1171. STA PPU_Addr,X
    * n  Y2 N! W( w/ k
  1172. INX
    - H' Q' P$ m( w6 ^

  1173. 6 _; I: T! K! ]: k
  1174. LDA <DEC_T
    6 B2 N+ w4 `8 h& m/ H  c4 X9 O
  1175. ORA #'0'3 ?5 F5 Z" `5 q" J) J$ S# ]% `
  1176. STA PPU_Addr,X
    7 z4 h) K, k3 Q" k  I
  1177. INX( F$ l0 v: P: x; W' U1 ~

  1178. ; @) p0 z' K8 C3 a) I% F* h
  1179. LDA <DEC_L
    6 I6 l) F+ E& `
  1180. ORA #'0'% E' e. p% q+ d& ]1 K; Q- M( m
  1181. STA PPU_Addr,X3 C$ X! z- b' g1 n
  1182. INX
    3 x1 y  c( f. K) K  t. m

  1183. , A3 b$ J  b9 D: m* j; T
  1184. LDA #'/'
    $ R+ f. L  `* J
  1185. STA PPU_Addr,X  h* w4 d0 w, `9 d& ^
  1186. INX
    : ?4 }5 Y  {- `( z
  1187. Music_Show_Total) }, v7 t! `& G/ x
  1188. LDA Music_Total
    % U' P/ C' r( d
  1189. CLC
    ' y. |3 n: F7 [( t
  1190. ADC #$01/ E$ D+ n6 `/ J* J# p, Q9 G
  1191. JSR HEX_To_Dec. Q/ v" a# v, p; k
  1192. , g, j% `) {6 h! W9 W" a
  1193. LDA <DEC_H
    # R7 R" K/ L1 C5 }2 a, ~
  1194. ORA #'0'; I, r+ h8 }  ^6 j% s  [) i' w+ e
  1195. STA PPU_Addr,X
    ; [" J5 t$ ?0 `8 n+ U
  1196. INX- B' S8 q+ z8 M

  1197. ) ?3 g. ~8 c: b( A7 k& x" L- ~1 X
  1198. LDA <DEC_T: `2 F0 h6 ]6 z7 [' L  y' c
  1199. ORA #'0'
    % I0 _) Q: P/ B7 M1 M( x: q
  1200. STA PPU_Addr,X
    + I, F6 r' e- X8 N3 _. B: ]
  1201. INX4 ?# ^" ~3 @3 h5 s+ e

  1202. & F5 K% O) ?1 q1 Z3 [& w
  1203. LDA <DEC_L% d  H. G& ], G1 Y( h' ]& A
  1204. ORA #'0'* u0 [) n1 H# g. @
  1205. STA PPU_Addr,X
    5 w7 b9 z! [3 V# e$ o
  1206. INX
    # s9 a  t* F3 D) O5 X/ Y

  1207. 4 V. c3 o4 [6 N* G5 y7 Q$ E
  1208. STX PPU_Cur% W+ ~" k- f" X/ b
  1209. Music_Show_End0 R$ {) g; [6 h" T6 I* s
  1210. RTS
    : g" \7 W4 W* n" G7 \0 `$ U
  1211. $ B3 q! E! a2 c
  1212. ;==============================
    7 K) t4 a4 G& c( {
  1213. Time_Show;播放时间显示
    / J: J/ D$ N8 M2 S: ~
  1214. LDA <Text_Disable_Flag' v, d- n' G$ v4 Q5 Q# x
  1215. AND #TEXT_DISABLE_ITEM
    ! L& @$ F& a( b9 q
  1216. BNE Time_Show_End4 t& M% f; h$ {5 a
  1217. AND #TEXT_DISABLE_TIME
    - T6 d0 X  a3 Y
  1218. BNE Time_Show_Enable
    9 f* f: n1 R8 o# R1 W5 J+ c! u

  1219. % i  ~/ K/ @" q  m. {
  1220. LDX PPU_Cur: j! K* r" k3 U( W% q7 r
  1221. LDA #PPU_MODE_CNT_LINE
    9 k5 F/ F* z0 q
  1222. STA PPU_Addr,X, E7 h! K! M5 D- e, d7 O! R
  1223. INX; z- z3 L: Y* o# ^+ x. E* {
  1224. LDA #HIGH(Play_Time_Pos)" R* A3 d, L! r4 W
  1225. STA PPU_Addr,X; a9 m# j' w6 ~' W) D! \* |5 v3 r
  1226. INX( T2 x5 A# }* v  S! N/ j* n* X& l
  1227. LDA #LOW(Play_Time_Pos)
    : g, I8 r) G0 j" s4 |6 e" P9 b
  1228. STA PPU_Addr,X3 e; F( K- Z/ f  @; s/ Z8 V, f- E* c
  1229. INX* o8 N( M  d7 {
  1230. LDA #$08
    1 P( i- Y2 w# P6 o
  1231. STA PPU_Addr,X
    # F% A) e# I9 F& F
  1232. INX
    ! c1 X/ D9 Q- L* @4 q0 ~! C3 O
  1233. Time_Show_H
    2 J- X7 c, n) T! i
  1234. LDA <Time_H& _& o; m9 w& a% f7 k- k
  1235. JSR HEX_To_Dec3 ]7 o: C& N5 P8 i
  1236. JSR Time_Digit
    ' u) ]1 _2 \! i& C
  1237. LDA #':'# s* n: [" p" p  G/ F
  1238. STA PPU_Addr,X, E+ T3 m( w# Y6 x6 z$ ]
  1239. INX5 W- j( u3 W& @: G0 N/ j. y  E
  1240. Time_Show_M/ V) b- N5 ?$ F) Y/ |
  1241. LDA <Time_M
    3 x- b9 z, j, K9 }6 g2 W4 O/ c
  1242. JSR HEX_To_Dec
    ; ^& K- O/ k7 t8 u& d6 ?2 l$ Z. l
  1243. JSR Time_Digit7 N. N7 L2 A* C/ Z
  1244. LDA #':'6 j, m/ t; L9 M1 [* G; v" L
  1245. STA PPU_Addr,X
    / ]* O  S2 r  O+ o+ \
  1246. INX
    2 m# V4 p3 `- A1 e; X3 F
  1247. Time_Show_S# O6 _- j1 p  B% u' I3 _3 O( x
  1248. LDA <Time_S' n! S6 i" H4 W# }. N+ ^: H
  1249. JSR HEX_To_Dec/ J/ t5 v1 e2 V5 v5 K
  1250. JSR Time_Digit
    7 J& Q! E9 c5 }- @
  1251. STX PPU_Cur! f: a) j) o: N- z( b  W6 ~. h
  1252. Time_Show_Enable% Q# G% u/ e" ]7 x! }
  1253. LDA <Text_Disable_Flag
    + L" q6 C+ A2 l# }. L: f2 T
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    $ C* ^4 r0 |. o8 A# E" \
  1255. STA <Text_Disable_Flag5 n' L7 j9 ^4 m' `  k- }5 t
  1256. Time_Show_End
    % \0 a8 Y# W) D1 ^7 I3 _
  1257. RTS
    ) ]3 k( L. z! s2 }0 h

  1258. * {: G9 }9 z0 k+ J# y0 e
  1259. Time_Digit
    % k  @$ S6 n7 @$ w9 m
  1260. LDA <DEC_T5 W: T. ~, D6 u2 [# z$ D% c
  1261. ORA #'0'
    / t7 T+ J, c* v* Y2 H# u% O
  1262. STA PPU_Addr,X
    + Z0 n" V* F/ _" x) n# v; [
  1263. INX8 t. ?8 [; ^1 V6 @% `- N9 L
  1264. LDA <DEC_L3 {5 }, F/ s* _  K2 F
  1265. ORA #'0'; k( g/ Z* k' C4 I2 g7 J
  1266. STA PPU_Addr,X+ Y6 a# a. ^9 [
  1267. INX* N% w4 r" V: B+ P
  1268. RTS
    9 {6 i  X. R3 ?
  1269. + W9 q& _! `% n& h2 ?( x+ F$ q2 C
  1270. ;==============================9 L) E. c& w4 a6 t% K
  1271. Time_Count;计时6 c8 t4 ]  k4 ?; b8 _& w6 s' F
  1272. LDA <Music_Stop_State
    ) W6 a- Y- l$ s  }# I& I
  1273. ORA <Time_Wait_Cnt( e3 I0 f$ c" @1 e: @& M' A
  1274. BNE Time_Count_End
      q/ E) ]: ~7 `/ v
  1275. INC <Time_Cnt
    3 i% Q* J3 p5 @
  1276. LDA <Time_Cnt
    0 k8 E5 l, K/ [
  1277. CMP #60
    ! b, _6 m  N( k% ]: g, R
  1278. BCC Time_Count_End0 x1 Q/ ]6 z4 \0 [0 l; D! Z
  1279. LDA #00; T/ D& k9 R4 L/ l% D
  1280. STA <Time_Cnt. K' T: {! R7 i, u
  1281. INC <Time_S
    # ]0 ^7 J1 _3 y  g( i2 g" _% y

  1282. ) r- R- X! t) w& s0 B# r; F1 y: P$ @+ N  W
  1283. Time_S_Cnt: l( w  C9 \2 D" {$ `) `
  1284. LDA <Time_S
    % O, E. f. _4 \; k( I$ E4 Z
  1285. CMP #60) H2 s8 E0 j% b; O  x% D# D0 l
  1286. BCC Time_Count_End" \; m/ N! X) R. |' C! n$ P
  1287. LDA #00
    $ f9 G/ ^( L4 ~
  1288. STA <Time_S3 r4 G+ j, ]) n9 |
  1289. INC <Time_M0 T0 \% n, ]3 u5 ~. W
  1290. % l8 G* T5 u) l
  1291. Time_M_Cnt9 E$ c( y+ T+ {4 I) w# X
  1292. LDA <Time_M5 s' m0 b! g6 K! c4 ~8 @
  1293. CMP #60
    * R% L6 q: y( {9 r7 D. U% v' o
  1294. BCC Time_Count_End
    , O3 l' l9 U+ M0 _  ^# U9 Q
  1295. LDA #00) U" w. F. k1 e( h& f: b
  1296. STA <Time_M
    ! L& c" \' j8 K
  1297. INC <Time_H
    . [4 z7 E; H/ s. W9 |* G9 Y! P

  1298. , P! N8 }0 _" |3 C
  1299. Time_H_Cnt. r) Y: o$ g$ ?; h, a! _( S
  1300. LDA <Time_H
    . G7 D# H2 K9 V- Y# P3 F
  1301. CMP #24( o  G9 Y" G& m
  1302. BCC Time_Count_End
    ) j7 {% X$ R. L8 q! G2 x
  1303. LDA #00* H) @3 P; f" W$ j9 c, K8 g6 g& i4 w
  1304. STA <Time_H1 l/ p" Q) e4 u- y! K8 Q2 q

  1305. ) B& L; J7 p, g3 W8 W  y
  1306. Time_Count_End
    1 |8 T+ M- j0 d* G& E0 }
  1307. RTS
    + X& `  Q3 _9 T% d. m

  1308. / Q. f8 Q8 J# n9 W; e
  1309. ;==============================5 O$ r4 a, ^+ \, ]
  1310. Time_ReSet;播放时间重置  s: \& n# u- O: Y1 a- l
  1311. LDA #$00
    . e0 [0 K& I5 ?2 S2 X& p9 S4 N2 N
  1312. STA <Time_S
    8 i8 a1 ^+ a$ a, i$ v* X9 h8 B
  1313. STA <Time_M $ f  c/ o% N, F" B/ O: l& a
  1314. STA <Time_H0 R2 V* b, E6 q' T* t
  1315. STA <Time_Cnt: V" y' a' L* [5 C; k/ J5 j$ j% Y# @
  1316. RTS9 V" L, H/ \; Z3 m% D/ c6 P
  1317. 9 g3 \; i0 m2 c& s9 k! |0 r1 @/ ]
  1318. ;==============================
    & K3 M, V" U. G' I
  1319. Music_Bar_ReSet;音乐条重置4 O2 J9 |1 b! g, J4 g
  1320. LDA #$00
    , P# t$ V! m! m! j7 o
  1321. LDX #$00
    * D% K4 l: ^3 z' }- u
  1322. Music_Bar_ReSet_Set. [4 ^: ?2 O2 v
  1323. STA Sound_Bar,X
      u+ v5 B8 |7 P0 u
  1324. INX2 {5 E' @& ^+ r
  1325. CPX #$10/ K4 v# \% K& j" \; r: `* R
  1326. BCC Music_Bar_ReSet_Set+ x2 H& m/ N0 h5 C; S
  1327. RTS
    2 A6 y+ p0 @) V8 F& C

  1328. 1 N+ P& S; K2 e3 o  R
  1329. ;==============================
    3 }' H: m  x; A5 x/ ^: D
  1330. PPU_Data;PPU数据写入
    : s* G1 G$ _8 c1 g6 w
  1331. STY <Data_L
    ; q* B4 T% ~" g
  1332. STX <Data_H
    4 S( w" K  k  w$ a0 V6 r, K& x
  1333. LDY #$FF! P4 C: N+ e& K
  1334. LDX PPU_Cur
    , a8 ~( K4 C5 k
  1335. DEX1 ^) K; f2 p: R) E
  1336. PPU_Data_Beg+ O& ~) f! u1 G- |8 o' K
  1337. INX8 L/ i: O0 }8 |) b1 Y7 u
  1338. INY  z6 r. M3 v2 I! x1 j, |
  1339. LDA [Data_L],Y
    7 `! h$ l2 ^, c2 b* J, N9 D. s
  1340. STA PPU_Addr,X
    # j; T: W6 p  h" d
  1341. BNE PPU_Data_Beg
    ; a5 s& m' M1 r9 V
  1342. STX PPU_Cur" |+ m" Z1 c) U  W$ `' ^
  1343. PPU_Data_End- O, V4 D( d: d* z* e3 {) g
  1344. RTS
    ! o% A/ D- z* [2 N3 a1 N7 V
  1345. 9 Q# `* g$ h( ?; M$ @1 p) ~& H
  1346. ;==============================
    1 U. |7 B/ T0 C' i
  1347. Music_State_Show;播放状态显示% P" T8 V" M4 n8 T
  1348. LDA <Music_Stop_State
    * m* |/ G8 m0 ?6 W; e" o+ c
  1349. BEQ Music_State_Show_Play' n6 J! |5 J" K2 v: ^  c% w
  1350. Music_State_Show_Stop
    ! j: y$ Z  M8 f( S. q5 _7 `
  1351. LDY #LOW(Music_State_Stop)% k% I: y) Q0 I5 h0 v4 ~; p
  1352. LDX #HIGH(Music_State_Stop)
    " b  ~$ _5 |# l8 w/ _
  1353. JSR PPU_Data0 r: {1 ]; H/ \/ \% |
  1354. RTS# ?  C& ~. ~$ T* y, G
  1355. Music_State_Show_Play
    . ~% x% z5 b( z" x" ~' F7 T8 t
  1356. LDY #LOW(Music_State_Play)1 u& F, k- `1 C5 w! {8 Y
  1357. LDX #HIGH(Music_State_Play)
    - N, D( W- t) E2 a" \
  1358. JSR PPU_Data
    . A" n) I; b6 A3 o  P
  1359. RTS
    8 W* L. a, K" F# f9 P3 X

  1360. 4 d9 e& D6 P0 Z) e! G+ w0 h
  1361. .IF SOUND_BAR_SHOW_ENABLE9 B+ j% o9 G) H& Y
  1362. ;==============================
    3 H; f/ X9 w+ q$ y
  1363. Sound_Bar_Text_Set;标题与音乐条初始化1 x3 W! |. k& h, G1 v
  1364. LDY #LOW(Sound_Bar_Text_Data)
    $ }$ w/ M8 H; m( l- Q( F) A7 y& g
  1365. LDX #HIGH(Sound_Bar_Text_Data)* @$ q. K6 L0 D
  1366. JSR PPU_Data
    # W# W' U* o3 v1 m$ ]
  1367. RTS% j1 b/ ~8 ~: B- K; M* n, @
  1368. 7 m( ]7 U6 \7 J# g
  1369. .ENDIF, z  l; m" ]0 w- ]

  1370. 9 C: c, W' m1 S  i
  1371. ;==============================% A7 t# q  H- J- X6 ^" _. T& y6 O5 m
  1372. Set_NameTable_Attributes;设置命名表属性; d8 {, b& ~. u6 a$ e
  1373. BIT PPU_STATUS% J3 b- t6 {9 [$ X; Y# b; a. Q
  1374. LDA #$23
    4 h; U) j' [' U: B$ e8 f
  1375. STA PPU_ADDRESS
    ' }$ y2 l! i; I: e% j' P
  1376. LDA #$C0
    : Z% r# C  F% I8 I; T8 z+ O5 t
  1377. STA PPU_ADDRESS
    5 T) R8 t& ?0 X& G6 h& N2 J3 m
  1378. LDX #$00
    + f1 U9 s1 m9 X8 C; ?) D" n
  1379. Set_NameTable_Attributes_Write4 |) R2 L  c0 }% d8 _
  1380. LDA Palette_Attributes,X
    : H+ \- \5 _# x! Q
  1381. STA PPU_DATA
    ) M& q' S3 ]2 p7 V& Z6 p$ F: B
  1382. INX" j) x* K& D9 Y# K: N
  1383. CPX #$40
    " A$ V. f: U; l, C
  1384. BCC Set_NameTable_Attributes_Write1 g- {7 X( h5 I" ~
  1385. RTS
    1 }0 z* c" E1 Q

  1386. 3 t& x+ \9 F& x0 r+ Y1 \
  1387. ;==============================% Q$ ~$ i6 l( g; w
  1388. Set_Palette_Color;设置调色板数据: _9 ~4 b/ m6 Z) A, G% N
  1389. BIT PPU_STATUS' p: }. c$ W/ r; a- q
  1390. LDA #$3F
    ) H: M0 y/ q* R; u' T+ Q
  1391. STA PPU_ADDRESS
    % C- Z% B0 M  x) O% x# }; j- f* N) a
  1392. LDA #$00
    8 q& @( G& J' @8 U0 x* p  G
  1393. STA PPU_ADDRESS
    8 Q* G, U3 }* A2 g
  1394. LDX #$00
    ( Z4 [9 V6 S0 N3 g( \( Q4 b
  1395. Set_Palette_Color_Write
    ' O& _; e' z4 t# u4 c
  1396. LDA Palette_Data,X
    , T$ T7 w/ f7 }2 S6 n8 p
  1397. STA PPU_DATA5 {* s* ~" g0 u" ^+ C
  1398. INX
    3 O7 O8 d3 P, B) E- @% d1 D
  1399. CPX #$20
    2 b0 N2 Z* D. |5 g8 W4 j
  1400. BCC Set_Palette_Color_Write
    7 ]6 [4 |) Q; c
  1401. RTS* q4 ]3 L0 V$ |" q( h6 q. J% Y

  1402. - s1 a; B! V, ~, B. I1 x5 S
  1403. ;==============================
    ) P' b0 @8 K& T
  1404. Init_Palette_Addr;初始化调色板数据
    , n& W" ^; w0 M
  1405. LDX #$00/ O& E% [: [9 |# k
  1406. Init_Palette_Addr_Write
    / z, q' m; l/ `5 m& T6 B0 y
  1407. LDA Palette_Data,X
    5 z5 q" |1 p4 t
  1408. STA Palette_Addr,X3 H. }: C. _! ?& {
  1409. INX
    * b* N/ {5 x' ]( N( A( [/ b5 Y9 d
  1410. CPX #$20
    & L8 z! y1 W' x0 y2 W
  1411. BCC Init_Palette_Addr_Write% N9 {9 K5 i" Z; m& x2 q
  1412. RTS
      v1 m6 A; ~" k8 Q

  1413. 3 n' b! ^/ ^* t. w. X
  1414. ;==============================; o5 {; B! A% X; \1 a5 M. X! W& L2 K
  1415. Update_Palette_Color;更新调色板颜色9 B" [  A3 p8 o3 `
  1416. LDA <Palette_Update_Flag
    , A: y- M; a% f
  1417. BEQ Update_Palette_Color_End
    % U! n- h( C: \( N8 \
  1418. LDA #$3F8 l$ [& m3 W! [1 q
  1419. STA PPU_ADDRESS% K! W- t: f- V/ ~( N
  1420. LDA #$0C0 P. T: m4 B  U; @/ u; I  h1 I/ M8 W
  1421. STA PPU_ADDRESS, M2 o1 F9 u3 n* f
  1422. LDX #$0C+ h, B/ z( C* N# C( f
  1423. Update_Palette_Color_Write' f1 _  x' l+ u. S/ M: k! x6 t/ ?
  1424. LDA Palette_Addr,X
    4 {/ n+ U0 I# j  N! o4 ?+ B
  1425. STA PPU_DATA
    % G& J6 N- l; a; B0 d5 @
  1426. INX
    ! J4 J# q6 C; ?4 }" [
  1427. CPX #$14+ a) k: e6 j3 r! m! N! @: u2 t- I
  1428. BCC Update_Palette_Color_Write3 X: N  m: O0 l( F" K  x
  1429. LDA #$005 M% x& i) P2 \% L+ ]4 ~
  1430. STA <Palette_Update_Flag
    4 C  ~: f% `+ O% G0 ~9 B: i6 y) M
  1431. Update_Palette_Color_End8 d: _; w5 L$ a2 E. Y
  1432. RTS
    6 |- z# @; |- e, C7 g' y0 `$ B

  1433. 0 w, V- Z. t# [8 V4 K
  1434. 6 a) W- {, U# X' x
  1435. Update_Sprite_Palette_Data2 L; c+ d, c6 X4 b3 Y* b5 g2 Q% S
  1436. .DB $21/ i6 Q+ e/ C4 o2 e& G, ?) ~. w0 v# T
  1437. .DB $218 Q9 V: H, }, ]# i5 _
  1438. .DB $11
    ' J% x. h) J+ ~5 A1 c# f
  1439. .DB $01% n2 F  I& ?( y4 _$ z& V
  1440. .DB $01% N" Q7 |  k, S4 l4 I# U
  1441. .DB $11
    9 e! p9 y9 r) j; O! W, K
  1442. .DB $21
    7 ~5 m! _0 Z4 V
  1443. .DB $21; w( e& ~  x$ w
  1444. .DB $11/ c! g3 ~$ Z+ ^
  1445. .DB $01
    ! a4 }0 G8 d# V" i9 S1 C, Y
  1446. .DB $11
    4 S5 U+ j) h, B. Q; k3 C
  1447. .DB $21
    ; [+ Y+ _" R* n7 g+ ~3 _+ r
  1448. .DB $21
    . [  o! ^- z' g* o
  1449. .DB $11; n) _, P8 f- i3 d! ~# |3 k( l
  1450. .DB $01" @4 [# Y. J! G6 R
  1451. .DB $11; _) U! o; a0 a, X
  1452. ;==============================
    4 A2 K1 u; j0 q# h. v8 E. G; y/ \
  1453. Update_Palette_Data;更新调色板数据7 o5 u) O% e6 h5 o2 o* `8 P. q
  1454. LDA Nmi_Time_Count" J) i: n2 B, t2 l0 G5 K/ [" L
  1455. AND #$082 I8 v  q0 e9 x- K/ \3 r9 h
  1456. CMP #$08
    5 K: J! K- q6 g* s
  1457. BNE Update_Bkg_Palette_Data# j* g0 b' T4 ?3 s) U5 D  \
  1458. & o; @3 C: R! M2 D
  1459. Update_Sprite_Palette_Data_Set
    0 }; `! v: f. K
  1460. LDA Nmi_Time_Count
    ; s3 q  Q/ I+ ]+ l2 f
  1461. LSR A  Z2 G! g2 \- @: S
  1462. LSR A4 c  P& w  H- O9 f. j
  1463. LSR A8 T7 ^. M- K9 `( y  A, P8 H
  1464. LSR A
    2 U0 ^" J( r$ O
  1465. AND #$0F' A9 t8 \5 ]' ^9 I( W( ~, P' Q* G* `
  1466. TAX2 y. m# @/ S5 K5 l- u7 Q- l
  1467. LDA Update_Sprite_Palette_Data,X- {- s+ y" C8 T1 S& P  t' C
  1468. STA Sprite_Palette_Update_Addr2 D7 `# u' u! U( h. [* i
  1469. LDA #$01+ |. e( |0 x5 ~) P$ e. e
  1470. STA <Palette_Update_Flag
    2 F1 Y% A0 U; ]

  1471. $ t$ ~7 }$ c  n3 K3 D# W
  1472. Update_Bkg_Palette_Data5 J, |& o4 F4 ~& [8 k0 ?& r8 M! r; v, R
  1473. LDA <Text_Disable_Flag9 Z) t' x2 C: d2 [
  1474. AND #TEXT_DISABLE_RAM  h. P9 g8 u5 x& j+ F
  1475. BNE Update_Palette_Data_End& e3 z- \1 v. ]' o7 o5 {0 k6 f
  1476. LDA <Music_Stop_State
    ) ]4 W' e" B6 P0 L9 F/ p1 X; Z
  1477. BNE Update_Palette_Data_End1 t* I3 R! F; Y( I! X9 @" I2 j
  1478. 5 X  q3 [% c- \9 F. Z& s) ~8 d
  1479. Update_Palette_Data_Check
    1 K$ B( L' r* M  l: F
  1480. LDA Palette_Wait_Cnt
    ) h! b" b: E0 S6 g# P! h4 c
  1481. BPL Update_Palette_Data_Check_Over  @1 E3 G: n0 C4 R$ P, w+ ^& a
  1482. LDA #PALETTE_UPDATE_INTERVAL+ z' R- V0 p: ~6 m- s% ^
  1483. STA Palette_Wait_Cnt) h& k# R, K0 j) J% u4 L
  1484. Update_Palette_Data_Check_Over* y5 o/ X8 Y! a" s
  1485. DEC Palette_Wait_Cnt2 L4 L* H8 q4 b; g% [. A5 U
  1486. BNE Update_Palette_Data_End/ V: S; U5 ~) k
  1487. 6 k" A/ }0 Y, G  l3 O4 M8 h  B3 L, `
  1488. LDA <Text_Disable_Flag' I& Z9 g5 s4 _- e$ G8 S; e" G8 L
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    3 X& A6 o4 \! a
  1490. STA Text_Disable_Flag# ^: h6 P$ E2 J/ e. w7 h7 h
  1491. INC Palette_Update_Flag9 M# ^3 J/ }8 x, `
  1492. , G5 [1 p7 x6 N5 _+ Q7 |& |
  1493. LDA #PALETTE_UPDATE_INTERVAL
    + _% A4 C0 Z; [8 Z1 I9 w# X  u
  1494. STA Palette_Wait_Cnt: p+ O! w! x- q$ ~5 P3 l" e
  1495. - [! ]' q6 m9 P2 [$ `- U8 o
  1496. LDA Bkg_Palette_Update_Addr
    6 c( P. Q% n4 ]8 x& t
  1497. CMP #PALETTE_UPDATE_MAX2 I* W* ]7 u3 D' V( X4 J# I
  1498. BNE Update_Bkg_Palette_Data_Set8 c4 f' ~' ~2 M
  1499. LDA #PALETTE_UPDATE_MIN - 1" B& l. {9 f2 ^, d5 W
  1500. STA Bkg_Palette_Update_Addr
    5 J" h* S# M5 H9 x
  1501. Update_Bkg_Palette_Data_Set
    / O' j5 A* e2 n9 g9 [
  1502. INC Bkg_Palette_Update_Addr
    0 ]  M$ U- X$ S- t3 S! H' s' ?( X6 W
  1503. ( x+ Y/ V7 D2 L2 K6 G% m
  1504. Update_Palette_Data_End8 F$ a' a3 l0 t3 ?
  1505. RTS9 Z! J, e7 i  x" V
  1506. 6 J7 L  \, a: E+ ~, P/ ^" l
  1507. ;==============================+ w' {8 F2 }5 D' ^0 a9 W8 n
  1508. Show_Music_Text;显示静态文本7 h! \" d: g- t2 u  R4 u
  1509. LDX #$00
    ' V9 X/ a1 Q, }4 P
  1510. Show_Music_Text_Set
    7 _0 O) H) P  H( X( x
  1511. LDA Static_Text_Data,X
    2 l. \$ t$ `) \6 c  \/ L/ }+ X
  1512. STA <Data_L
      A+ S' G( h" w- f
  1513. INX
    & z- P! K6 @& `
  1514. LDA Static_Text_Data,X( X8 w9 v) p$ x( i) N
  1515. STA <Data_H0 p8 S- s) Z8 c+ p) z) {
  1516. INX, q) l6 C2 |0 c4 `* m1 j
  1517. LDY #$00
      q& s: N* F( F6 @/ `) w# a" _
  1518. LDA [Data_L],Y
    4 x# T! ?- Q/ X! C! z+ N! L9 ~9 a
  1519. STA <Data_Cnt
    % E0 T7 Q  ]6 s; w1 a
  1520. DEX
    7 r5 z9 G/ g' J) f6 E
  1521. DEX
    2 m  U, ~4 q# k1 z
  1522. LDA Static_Text_Pos,X1 B: ~! o# p" b, X; M% f4 O% a' \
  1523. STA PPU_ADDRESS' S, X" X. e1 ^) O: x1 w9 m; n
  1524. INX
    6 u8 |% c! I, P: P  Y$ e
  1525. LDA #$20/ }1 n; }" Z  d5 G7 b) z1 j; s
  1526. SEC( x. u+ L2 Z6 z* b3 \
  1527. SBC <Data_Cnt$ c/ u' u& X# E$ ?/ l
  1528. LSR A
    ( X' g  _8 T& I$ X6 a: B
  1529. STA <Data_Buf
    : b# `4 w6 M# T6 F3 f& e" W' }
  1530. LDA Static_Text_Pos,X
    6 O0 |# y/ ?" A6 O5 g2 H
  1531. AND #$E0! G+ g/ d! `4 v4 B) @
  1532. CLC
    # i7 H& W& N6 P7 g( ^1 S& X$ k
  1533. ADC <Data_Buf
    * a6 d3 W/ N0 `* `4 T
  1534. STA PPU_ADDRESS
    1 m8 ?/ O2 H3 N! E1 y$ o- A
  1535. INX
    / T- `% A" ~; k% T$ H
  1536. Show_Music_Text_Set_Write
    " K1 s( m: l7 a/ h! q- i/ g
  1537. INY
    3 L2 v$ L- \! O8 u1 H  c7 y
  1538. LDA [Data_L],Y+ c6 \" U$ T+ c* I
  1539. STA PPU_DATA/ G  ^, d9 D  O& @" B1 A
  1540. DEC <Data_Cnt
    8 |' s( B6 T4 A$ ~' N1 p* R% g" Q
  1541. BNE Show_Music_Text_Set_Write
    / b" q' ^. I  E8 F1 V
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos4 I4 r1 E' v4 L
  1543. BCC Show_Music_Text_Set
    / {5 j  a) G% C7 b- E8 [, U
  1544. RTS7 b' w! P/ \/ h/ E3 N

  1545. * D& i$ j; G# t( ~) K
  1546. ;==============================
      d# o7 C, I- {$ \" K' y2 S
  1547. .IF Track_Name_Pos;显示曲目信息
    4 V" R' k  a" ]
  1548. ( c, x8 W- }' ^& N  x
  1549. Clear_Track_Info
    ! v, E: U' T5 ^5 N$ y. |
  1550. PHA
    0 v9 t/ f3 h/ S% U) C
  1551. LDX <Music_Item_Cur* |0 T! t2 ]  |$ H4 G- v, y
  1552. LDA Track_Name_Addr_Flag,X/ [  W( u7 v/ v* p; ~' R
  1553. BEQ Clear_Track_Info_End_Ex
    $ d3 M1 ^3 ]2 d% u9 r
  1554. PLA
    " G- F' K% S1 s* v% }$ C* J

  1555. ' {: k  @2 a4 h( N& n
  1556. LDX PPU_Cur
    ) w1 L. ]" y) }8 Q# _
  1557. PHA
    1 c2 A" S  Q6 W* |1 @7 O
  1558. LDA #PPU_MODE_CNT_CLEAR
    4 o9 y* u9 y3 X/ ^6 c1 R( u
  1559. STA PPU_Addr,X
    1 T% u3 S! c4 g  X4 }# l& H0 U) g
  1560. INX7 w3 E% M" V% D( [
  1561. PLA
    8 j( {; |8 g# ~9 ^- c# Q2 U
  1562. JSR Show_Get_Track_Name_Center_Pos* h4 M* h/ \2 Y- r  m
  1563. STX PPU_Cur
    : Y2 `! J8 T4 q$ R3 w- }( x& Z
  1564. Clear_Track_Info_End- h6 m# ~! H4 t& h* V+ Q
  1565. RTS7 i1 k* z# `$ ^9 `- A& X
  1566. Clear_Track_Info_End_Ex
    + t1 K( y6 C( s) ?
  1567. PLA
    : ]8 a6 }; p% R, j( ?+ `
  1568. RTS8 s8 b( P5 ^6 e
  1569. % r* R- E, p8 J9 A/ o0 z, \" J/ x
  1570. Write_Track_Info; m  L7 l6 t, U+ u5 \
  1571. PHA( Y( b* t  N4 a3 Z& a" F& G- H: @, \( Y
  1572. LDX <Music_Item_Cur
    5 c: a7 K0 p! J) {. K6 q
  1573. LDA Track_Name_Addr_Flag,X
    / g6 k% Q5 x: j. X
  1574. BEQ Write_Track_Info_End_Ex
    ' g+ `3 |  n9 D0 u1 t6 {+ x' T: |! I
  1575. PLA
    5 b" R9 B" ^$ t; t7 Q9 w1 t! h
  1576. * R9 d8 h* M8 P. B
  1577. PHA, M+ U+ b+ o) r5 `1 l
  1578. LDX PPU_Cur. i+ k6 h. O; k4 y! ]! }
  1579. LDA #PPU_MODE_CNT_LINE! o0 e& e( `  o3 W( S  g- s0 P& r
  1580. STA PPU_Addr,X
    5 K$ q* D/ X) f. k' b
  1581. INX' d4 _! P1 x1 Y- r6 L1 {
  1582. PLA5 M* }  [8 `% @4 ^% _& z
  1583. JSR Show_Get_Track_Name_Center_Pos$ e& Y, V6 v& g
  1584. Write_Track_Info_Data
    % a( v# U" C5 o" g
  1585. INY! ~7 W* Z* T- |
  1586. LDA [Data_L],Y
    : Z0 Y, R% n* @1 M  f8 E
  1587. STA PPU_Addr,X/ w$ e  r9 i& w6 g6 r
  1588. INX
    1 @& u  z9 i4 m3 X' c0 @
  1589. DEC <Data_Cnt9 X$ q! I, z5 W. ^0 ?7 x
  1590. BNE Write_Track_Info_Data
    + ]2 O# j" Y4 G) w& X5 X. t, N
  1591. STX PPU_Cur5 i6 _" C5 Q9 n7 A6 k/ t" g4 j
  1592. Write_Track_Info_End
    9 \% u" i: X& C3 A2 v- h6 K
  1593. RTS
    % [: @* u9 ~8 c4 X- b3 b
  1594. Write_Track_Info_End_Ex8 n" o9 ]5 E$ C6 L0 S# m# x
  1595. PLA* j8 N- q$ f: w6 i5 V5 E2 V7 k2 |
  1596. RTS
    5 X( |- Z& |, J$ A2 N  I" ~
  1597. * ^! b! }4 f9 g" H8 S
  1598. Show_Track_Info- B6 B: b3 s" @* r8 w
  1599. Show_Track_Info_Clear5 X: }- f, {" L, k
  1600. LDA <Music_Last
    " L8 Y& b3 e  ~' [# C- o5 w
  1601. 4 _2 n5 D  a, V
  1602. JSR Clear_Track_Info  `& l# B* J4 N4 P$ \- N
  1603. 1 R2 j! X' |+ \% [; O7 ^8 m" k! U9 w
  1604. LDX <Music_Item_Cur
    4 [/ K" W5 L/ W2 t6 l, a
  1605. LDA <Music_Cur,X
    # J" ~5 d7 a4 M9 O( w
  1606. JSR Write_Track_Info/ L  h' i0 s" n6 g$ ]+ W5 g
  1607. RTS1 x' j& k0 Q, w+ t  T6 G+ ]

  1608. ; _8 k* {6 J$ W) g$ J
  1609. ;==============================& f% ]1 w$ X; c2 Z
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置$ _3 p: F+ p- A* z  Z( ^
  1611. + d5 A" Z* e2 c! V0 H' ~2 f
  1612. ;取出集合名索引) l( f( Z; |- p  R3 M2 Y1 l, \/ Z: \
  1613. PHA0 H7 p1 K" [  s, a

  1614. ! i5 T; X7 L7 O( h8 {' P3 K
  1615. LDA <Music_Item_Cur* e( @3 x  a( Q' {  X( J
  1616. ASL A! z6 \: p, e4 e- L# `
  1617. TAY
    $ ?. Q! K. Q$ s
  1618. LDA Track_Name_Addr_Port,Y
    , o7 ]9 {& O% H7 v, z3 {
  1619. PHA# [& E% s, Q1 G9 P3 C1 ~5 Q6 Q
  1620. INY$ B: F* L4 ]  Q( T: _- ?+ t! t
  1621. LDA Track_Name_Addr_Port,Y. Q# i% Q9 K& _  N5 }0 w
  1622. STA <Data_H) c+ q! ?& l( h4 J/ J
  1623. PLA" g3 X0 O+ x8 m: D( w
  1624. STA <Data_L
    6 E: V; j$ t. p
  1625. 5 |# x; _$ `( y  k5 P! G3 m6 q1 x
  1626. PLA
    $ {0 z$ p* s: |: h# |
  1627. % D* M* Y8 j# {( A
  1628. ASL A
    % K( B( J6 ]/ ?% X! T
  1629. TAY) g/ u8 \7 W1 _% a
  1630. LDA [Data_L],Y4 _. f; H/ `* b+ R4 x9 [
  1631. PHA8 g1 L( E& w# H1 P! Q: a
  1632. INY( T# w. `& E! p$ b$ J
  1633. LDA [Data_L],Y* K+ n9 g" T" y3 P4 C, L8 p: \
  1634. STA Data_H7 `2 [( V$ H. G8 w* ~6 o: e
  1635. PLA& D" }4 p7 T: r7 z4 K: S2 N. p' D
  1636. STA Data_L/ s( c: n' H( x
  1637. 6 K  s! w; H- E! r( Q9 g2 @0 l
  1638. LDY #$005 r) o# X& ]# @" n1 r! a8 h
  1639. LDA [Data_L],Y
    ! V* J3 _" c/ G" ]- Y5 G" [
  1640. STA <Data_Cnt' |. E$ n/ |3 g
  1641. LDA #$20
    . h/ \3 U8 y+ M3 Z
  1642. SEC; y: C; \) E; ]
  1643. SBC <Data_Cnt; a5 ~6 U/ ?, b; `5 W" w
  1644. LSR A  h5 F8 J9 `8 s5 y- e. ?0 C* w. K
  1645. STA <Data_Buf. p7 g" ?7 {- W, C  `5 w+ T8 W
  1646. LDA #HIGH(Track_Name_Pos)7 l& f9 s+ z8 n  h+ ]1 ?1 p! ^
  1647. STA PPU_Addr,X
    ' s4 Q! v  h& O+ E$ l6 ~' [, k
  1648. INX
    * B+ y; l6 g" O; }+ V. E# s! D9 ?
  1649. LDA #LOW(Track_Name_Pos)
    ( T; F7 i! U# p9 B; k) U. E  D
  1650. AND #$E0
    + v6 R5 ?1 z; K# o6 R9 g' _/ |) a7 N
  1651. CLC
    , Q: x$ a  {- R0 r# m9 n2 B
  1652. ADC <Data_Buf0 p, e3 ~) S2 e1 k0 w) }4 \
  1653. STA PPU_Addr,X2 i0 B6 t, ?! s: e: u3 |" b0 b& f8 d
  1654. INX
    1 p3 x4 v' d7 d+ w  R
  1655. LDA <Data_Cnt
    $ ^5 ~- ]1 ?5 q4 m
  1656. STA PPU_Addr,X
    / p" ?* j& A$ D9 X+ ~
  1657. INX) E  x! i7 v' R/ I# C
  1658. Show_Get_Pos_Center_End* }) M# @% p8 B- Z0 ^
  1659. RTS! I$ T3 Q  f  k+ l2 S
  1660. .ENDIF
    4 V& c6 F4 y$ w5 R8 q7 ~3 u5 A
  1661. 0 K1 x) A/ }8 c* ]2 d! W" l
  1662. ;==============================
    : X9 [5 e7 B) e# o
  1663. ;音乐端口清除; N, {+ R$ g5 a. D1 x: i# T4 @
  1664. Sound_Data_Clear
    5 ]. |3 N1 S1 Q& m0 n; S
  1665. JSR Sound_Port_Clear
    ' |! H3 r& Y& T6 k
  1666. JSR Sound_Ram_Clear
    $ @$ Y- x3 B+ P# P
  1667. RTS
    ! _6 A( \) S3 d& s4 {+ u& Q

  1668. ! `8 I% b3 V6 g
  1669. ;==============================- K; ?+ d  o3 Y/ X% P2 i
  1670. ;音乐端口清除
    9 S8 _7 {& y5 v* W" ?* e! O
  1671. Sound_Port_Clear( B! H" q! r0 G
  1672. LDA #$00
    " b& Y* d5 Q+ H' z( r
  1673. STA APU_STATUS
    7 C! V# ?) N+ ~6 b
  1674. LDX #$00) f0 e+ i7 ~' p- w6 k9 B0 Z3 q1 U
  1675. Sound_Port_Clear_Write
    1 Q& S# G( R  p4 Y# @
  1676. STA $4000,X
    ! T4 y- j) X8 Y) x/ Y
  1677. INX
    4 x, M6 P' k# K$ x; ]% p' L
  1678. CPX #$14
      R/ G- \! k! e7 U, g5 ^
  1679. BCC Sound_Port_Clear_Write* ^3 F: t1 R4 N5 P8 y$ d; q
  1680. RTS
      f! o% K+ m7 E6 o( A& z9 I
  1681. " w% ~% d0 W1 ]( O9 c6 ]
  1682. ;==============================/ ?( G& [) w* i, g" _" y
  1683. Sound_Ram_Clear;RAM清除
    $ |) j3 W. X+ k+ g* t
  1684. LDX #$00
    . M, W8 \0 b+ ~
  1685. LDA #$00% F1 W7 w0 _0 j/ s3 A
  1686. Sound_Ram_Clear_1
    % M, A0 C& P* r  [3 S) u9 K  m& C
  1687. STA Sound_Ram_Addr_1,X9 L3 \$ r5 c$ r3 Y
  1688. INX
    : B7 Q% x5 Y7 ?8 a
  1689. CPX #Sound_Ram_Addr_1_Size, Z0 u5 d) A# u; [1 ~! k2 v/ F9 L/ ~  a
  1690. BNE Sound_Ram_Clear_1$ @: s; w3 q2 W! ~) I, W7 U
  1691. LDX #$00
    6 [7 |& c+ H1 G7 g( n0 i
  1692. Sound_Ram_Clear_2$ {8 s4 ~6 l2 v. k
  1693. STA Sound_Ram_Addr_2,X& [% q) J- f6 k. \4 O9 ~" J
  1694. INX
    + M) Z* H: z5 {. b' N7 r+ H
  1695. CPX #Sound_Ram_Addr_2_Size1 r2 x: N1 C5 h' j: j3 e1 h
  1696. BNE Sound_Ram_Clear_2
    - ^2 W  ]5 ~, x+ W' @
  1697. LDX #$00
    6 v* a3 ^0 r9 d) g0 b) K
  1698. Sound_Ram_Clear_30 H/ j' ?* t) b5 z0 l
  1699. STA Sound_Ram_Addr_3,X% |  h9 n3 ^" V- Z- _& T3 z9 U0 }
  1700. INX) L8 U. t3 _2 q$ e
  1701. CPX #Sound_Ram_Addr_3_Size* [. h' H6 Q- T6 t+ _9 h1 A
  1702. BNE Sound_Ram_Clear_3. Y- X) \& J  y8 T  t% g9 p" u; D# C; f
  1703. LDX #$00
    ! u1 @3 F6 l( f& A8 ]
  1704. Sound_Ram_Clear_4) j( y8 k$ w& B: Y! J$ y) y2 J
  1705. STA Sound_Ram_Addr_4,X; f/ I7 s) @8 x
  1706. INX
    , ~% s  k0 {5 A
  1707. CPX #Sound_Ram_Addr_4_Size/ u( _1 a, f; S. ], b# u. k$ L
  1708. BNE Sound_Ram_Clear_42 H' }/ N: ?; J6 Y. Q, }
  1709. Sound_Ram_Clear_5
    , b. |3 l" H2 L, O3 i' B
  1710. STA Sound_Ram_Addr_5,X8 H, p8 [( @9 S
  1711. INX
    5 Z' |6 x5 U; W7 B7 H  N) B4 }( K' j
  1712. CPX #Sound_Ram_Addr_5_Size
    , p. f, O3 f9 O8 u2 U
  1713. BNE Sound_Ram_Clear_5; M# Z- k2 c9 P
  1714. RTS
    $ c/ O8 V  I. m, u5 H
  1715. 0 P; t- ]/ O' x. f4 H
  1716. Get_Music_Collection_Name" H$ F- R+ S0 ?* v- N3 O
  1717. PHA- T# x3 e( J* B
  1718. LDA <Music_Item_Cur! Q/ E/ ]4 {. ~# M3 c
  1719. ASL A2 ^7 N3 V# d  `3 _
  1720. TAY
    9 y& S- r8 j' ^4 X: h* z
  1721. LDA Music_Collection_Name,Y
    , ~, h0 P9 e' w+ J% c
  1722. STA <Data_L
    , X8 z# x6 x* ?
  1723. INY! u9 R9 @7 g1 D4 W0 m7 w
  1724. LDA Music_Collection_Name,Y
    4 W4 m3 q* H- [
  1725. STA <Data_H
    # A: d' K$ r2 G7 \; U
  1726. PLA
    ! S6 ?. {$ i$ M8 a: \/ N- m6 S
  1727. RTS  a% ^9 L2 n( ^/ Y

  1728. , q$ _& B) [, M
  1729. Set_Sound_Total0 g/ T/ m) ]( W- T
  1730. LDY <Music_Item_Cur- f5 a6 c: V7 l
  1731. LDA Sound_Total_Port,Y
    1 D4 Y7 C  d& W; I2 R
  1732. SEC
    ! L4 n, V3 o3 w. W2 |$ K
  1733. SBC #$014 j- d1 }0 @) G
  1734. STA <Music_Total
    % Q# `; v% Y+ B3 k6 D
  1735. RTS
    , }$ D) s. Q, E/ U9 t" @3 c
  1736. ! s" ?( _. @; B: \
  1737. Get_Sound_Start
    3 m& e6 O% ?/ {2 x6 C4 p
  1738. LDY <Music_Item_Cur4 x. F1 t2 E% z
  1739. LDA Sound_Start_Port,Y: r7 y6 T& B* G: ]
  1740. RTS
    - ~" M- Z' Y! W* ]

  1741. 4 l/ ]- W  j$ O' ?* ]. |
  1742. Set_Sound_Init_Port
    3 S. U& m6 A6 ]
  1743. PHA5 p+ B  {; }0 v( _8 s( @2 m
  1744. LDA #$20
      `0 r6 b- C: v5 G
  1745. STA <JSR_Addr_Op: h: Y- u8 S0 K% I
  1746. LDA <Music_Item_Cur
      z  Z5 ?4 m- R1 `
  1747. ASL A* r0 j* {8 G$ g( v, y8 z9 y
  1748. TAY
    / x+ w' r& E: W' C! A
  1749. LDA Sound_Init_Port,Y
    0 Z3 N3 K" ]; D, O: U
  1750. STA <JSR_Addr_L
    3 \* P" O$ n/ ~
  1751. INY
    / E: ]+ }% a- l) R
  1752. LDA Sound_Init_Port,Y$ E$ @, q% a4 H$ y. w" N
  1753. STA <JSR_Addr_H
    6 i6 m. I1 B( {
  1754. LDA #$60; C2 ^$ I0 p/ y
  1755. STA <JSR_Addr_Rts
    + b! S5 o0 z/ \8 o! Y% N  A9 a
  1756. PLA7 v+ T! _, r* g
  1757. RTS
      _7 U( I- ^" ^: z7 Z/ w+ ^. w6 `
  1758. / G; K4 u* M7 K
  1759. Set_Sound_Play_Port
    * b' @5 X$ V. o$ P) D
  1760. PHA3 C- p3 A! }0 ^* ?: F6 o
  1761. LDA #$208 H% L; ~) p. P$ A, v
  1762. STA <JSR_Addr_Op# y/ e7 n& @- q! t
  1763. LDA <Music_Item_Cur
    1 a8 e/ }5 }+ g/ M
  1764. ASL A2 T! |/ k" M0 E" I  f3 Z
  1765. TAY% B6 k) H4 A3 b. h: B9 l
  1766. LDA Sound_Play_Port,Y
    7 \2 W" \$ h2 t; m6 K/ y" B  O( C
  1767. STA <JSR_Addr_L
    4 c" M+ I* N5 S$ f0 c' l
  1768. INY
    . [2 {% x& i, S3 y$ i: t
  1769. LDA Sound_Play_Port,Y
    , D8 ~4 u" L8 L: T' z% P
  1770. STA <JSR_Addr_H! M5 \1 n" p& ~5 _9 S
  1771. LDA #$60' K; y" e" W  O5 K: P
  1772. STA <JSR_Addr_Rts/ B' S, r8 n  q" A' L
  1773. PLA
    , m8 h; b8 O* T5 H
  1774. RTS& A4 L" X1 s( \. r
  1775. 4 t/ h9 x) R- V, G  j
  1776. Set_Sound_Reset_Port) a( O, ^5 U" N+ a
  1777. PHA
    * [2 T+ I; j$ T& T
  1778. LDA #$201 n2 e" s$ @3 Q& M3 t' P1 D
  1779. STA <JSR_Addr_Op+ T% o1 T0 Z! B6 G- _
  1780. LDA <Music_Item_Cur8 m4 v! y- v& V6 P' D
  1781. ASL A
    ( B9 j- c3 K, \+ y! c# }
  1782. TAY
    % I# u' ?' r+ ^& W4 t
  1783. LDA Sound_Reset_Port,Y
    7 ?3 c& o& i) @7 `
  1784. STA <JSR_Addr_L  H* y# w+ o& c+ l1 L' U
  1785. INY, Y- U+ H) {* p
  1786. LDA Sound_Reset_Port,Y
    # @( m  D, O$ D6 \9 w; s
  1787. STA <JSR_Addr_H& d6 B6 A$ |% I2 w
  1788. LDA #$60
    3 I( Z6 U+ b" _6 C
  1789. STA <JSR_Addr_Rts
    . n/ e# b, [% U$ h) O; d3 K
  1790. PLA0 T/ Y! M9 s; e6 Z- M- a
  1791. RTS' E6 p9 n2 H! E4 U! _
  1792. + `6 U0 U; D+ P
  1793. ;初始化音乐bank' N& K$ D+ m/ Z! J# Q9 \6 o
  1794. Init_Sound_Bank
    9 S7 l8 D. c# W
  1795. LDY <Music_Item_Cur3 n6 J8 U1 N9 I
  1796. LDA Sound_Bank_8000,Y- s* G+ o, S$ j- I7 [3 x  N
  1797. STA <Music_Bank_8000
    . P) b: B4 ~  N9 d" J
  1798. LDY <Music_Item_Cur
    4 a6 b. o2 s3 Z
  1799. LDA Sound_Bank_A000,Y; Z* Z( ^: O7 u" f: Y0 I, R) Z
  1800. STA <Music_Bank_A0001 ~. l  U' v* F2 O$ i" Y1 q
  1801. RTS
    0 C$ V0 U! l; f

  1802. $ g  h3 G( d  B
  1803. ;==================================================, x1 C5 Q" t2 l# A6 Y7 _1 ^
  1804. Sound_State_Reset;音乐状态重置) _# N0 t$ t( u) c* `
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    , ?$ [$ r; v, e0 Y, X2 g. Y+ n
  1806. JSR Time_ReSet             ;重置播放时间+ `; V2 K/ m$ N2 }1 d8 Z* p
  1807. ( h  w+ o# o1 }8 T1 x
  1808. LDA #$00
    5 w( u( ~4 C1 B; Z& v: t+ W% w
  1809. STA <Music_Stop_State
    2 g" i$ v6 I' B( O$ ^
  1810. JSR Music_State_Show       ;显示播放状态
    # {4 O5 R5 y; ?. U1 \9 G! j5 R
  1811. 8 y2 B& o. p8 Z. b2 U
  1812. .IF Track_Name_Pos
    : A: v) f- f6 A$ W6 p' I6 g
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    ) n' \2 {. p2 s: |% a
  1814. .ENDIF
    6 g& i; U% M) _0 ^

  1815. 2 s% k! Z, o' I& P% `4 M1 H
  1816. RTS1 j$ H" n1 a5 ^0 I3 h! W

  1817. , m$ p1 w: _3 u3 c, C% ?% N. a
  1818. ;==================================================
    ) d. L% e( u/ x
  1819. Sound_Init_Proc;音乐初始化处理8 u% \. R6 _  f, ]9 w- N' D, X% h  j
  1820. PHA1 O# f' f( W. R
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    ! h( f9 e+ l; ?5 u
  1822. LDA #$00
    & L( l, s& q1 g; \  O
  1823. STA <Scroll_H               ;重设水平滚动
    $ @# {6 P* ]$ ^; M5 @
  1824. LDA #$0F
    2 S2 i* w7 }3 N3 J4 V$ u; B7 |
  1825. STA APU_STATUS
    # \# B6 R6 ^! k, i3 j( K
  1826. PLA
    + v' ?8 u) @. E4 ?" H
  1827. JSR Sound_Init             ;音乐初始化
    ; }* p. t1 X' @' m1 O. }
  1828. JSR Sound_State_Reset      ;重置音乐播放状态$ i' s# c1 D1 c3 t" n+ s3 x
  1829. RTS& I5 N& G- h% _8 F  s9 p
  1830.   {( A, k, E4 C; f1 Y
  1831. ;==================================================
    & |% o# [6 |5 d% E5 D$ y
  1832. Sound_Play_Proc;音乐播放处理* ?+ n. q$ B0 \! u9 N
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
      P8 p- I1 C) T5 H- U1 y" _
  1834. JSR Sound_Play             ;音乐播放
    ( q* o% [' o. i
  1835. RTS
    3 W& I8 j' \: Q& j5 f9 E" w

  1836. ) g# M( K" H9 v7 P
  1837. ;==================================================
    1 Z% q- X, J, {. P* J
  1838. Sound_Reset_Proc;音乐重置处理
    * |5 Y7 O; q/ O. \2 M& \$ a" M
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址7 I- ~1 E8 ~" @5 G5 B' T* f9 N4 Z
  1840. LDA <JSR_Addr_L
    ; P1 _  W' _) V8 f  D
  1841. ORA <JSR_Addr_H
    1 c* C  Y% G7 z: j7 K
  1842. BEQ Sound_Reset_Proc_Default! C0 H: {6 T2 C9 S" Z- m% \& R
  1843. JSR Sound_Reset            ;执行音乐重置8 B: r7 Q% F6 L
  1844. JMP Sound_Reset_Proc_Init_Sound
    6 _4 e* y1 ?: }/ x
  1845. ( Y# V7 I; [2 i* h  z* d
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    2 l# ^5 T6 z( {6 v% F: }
  1847. ' t( v! m; W; D* e, F5 W
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    & h: k) h2 W; C" l8 @8 P- @
  1849. LDA #$00
    8 T, C# S2 q3 e/ p: H
  1850. STA PPU_CTRL
    # j: F; M5 [% j3 N- P

  1851. & D  Q4 y6 e- Z- l" g
  1852. JSR Sound_Data_Clear
    4 \) |& p+ y0 b. ?8 A
  1853. 4 v+ R2 [6 E0 y: a7 v) h4 n
  1854. Sound_Reset_Proc_Default_Wait+ c8 ]1 |) D9 N4 o5 ]
  1855. LDA PPU_STATUS) i, @* v2 u, X3 s
  1856. BPL Sound_Reset_Proc_Default_Wait9 J1 X. G0 H+ G

  1857. , p. e# t% N4 y0 I/ x  I
  1858. LDA #$00
    4 q' ]! A0 w$ H) o- v1 t
  1859. STA PPU_ADDRESS0 d- m- n1 e+ ~/ V; D* G, k% _9 U
  1860. STA PPU_ADDRESS7 w2 p8 Q$ s5 Z+ F" ^# b0 r
  1861. STA PPU_SCROLL5 m, u7 Z% `% N' ]$ P9 w
  1862. STA PPU_SCROLL. y4 g. Y- w' m, f  u* N
  1863. + ^& Q' u5 }) m. @
  1864. ;恢复PPU控制
    7 K; q3 I' ^8 R+ q  u# m2 G1 d; H
  1865. LDA Screen_Ctrl
    : U9 C7 G3 A$ Y9 Q1 d8 s* s
  1866. STA PPU_CTRL0 h2 o; g" {" }$ R2 p

  1867. " g: |8 {# z- n  [( P7 G
  1868. Sound_Reset_Proc_Init_Sound1 {  k" ~; K3 K3 G6 L( F
  1869. LDA <Music_Stop_State0 M: H4 @1 l( F2 _
  1870. BNE Sound_Reset_Proc_End
    + C3 w) E# T' ~8 J* `
  1871. LDX <Music_Item_Cur' U( S* R& T) W" C2 I  J) A$ ~
  1872. LDA <Music_Cur,X
    3 z. p6 ]' Y* z: A  e
  1873. JSR Sound_Init_Proc- b8 |) l( s) |
  1874. Sound_Reset_Proc_End. y, F5 h7 Z9 O8 s6 e: _# b: |
  1875. RTS4 D# M2 p! d# x1 E" a- Q4 E
  1876. 1 f, w- S; Q7 T( ]: P- B
  1877. ;==================================================
    2 e  _0 y5 I! _: l
  1878. Clear_Item_Text;清除页项目; ]# H9 l  U- M- S
  1879. LDX PPU_Cur# D  Z0 E* s4 r3 V9 d/ H
  1880. LDA #PPU_MODE_CNT_CLEAR
    % _, _5 z* O2 ?4 I8 G7 K
  1881. STA PPU_Addr,X  e7 n. a; v; m" v6 [% L! d0 r* o
  1882. INX0 T# X2 {1 ~4 F& D: f

  1883. ' x  c% y# i+ l! c/ U
  1884. LDA <Page_Last
    - _6 K* K: I' m1 V2 ]1 ]$ B' P! X
  1885. SEC- o) l7 W2 Y! ^0 _$ t; f
  1886. SBC <Page_Last_Index' E% \* F5 ]3 \& ?8 f3 N
  1887. ASL A
    - N: }% @1 v) M* J& M# p: i# T2 w
  1888. 6 M8 W! D9 N  x+ v% n
  1889. TAY0 s, k+ A6 @, ^' E$ n9 y1 W
  1890. LDA Item_Pos_Data,Y
    . G. f/ S) p/ |
  1891. PHA
    2 L; p" D* l5 L* Z% _6 ?
  1892. INY" A: e" a$ x! |
  1893. LDA Item_Pos_Data,Y5 c# {7 J* s. _& X3 V' N9 \
  1894. STA PPU_Addr,X" B/ n! J7 Y. O9 Q) b
  1895. INX$ O. Q1 D$ F' {# R) ?" y# N
  1896. PLA
    4 ]4 K/ N7 x& @8 A1 u! V
  1897. STA PPU_Addr,X
    , n9 ?# @, P) {8 p% F
  1898. INX2 g, r; N2 A/ \( I4 e4 I

  1899. 6 t# c9 h3 ]4 O$ p2 u
  1900. LDA <Page_Last
    & X' V# T5 e6 E6 _- \- G7 O
  1901. ASL A
    ' F7 B  C0 _  b! M
  1902. TAY
    6 h7 Z' v! M1 c" p, L. \) m
  1903. LDA Music_Collection_Name,Y
    0 u  j% v6 \1 o3 I
  1904. STA <Data_L# H9 g; ~' f6 k- d3 ^9 ]& P
  1905. INY
    0 @7 x6 q2 r$ ?0 f9 K" s, J7 h' {! H& x
  1906. LDA Music_Collection_Name,Y
    ; f& \4 E6 o3 P7 l4 [- `1 d+ ]- J: w* I
  1907. STA <Data_H. @: J, E1 F( M4 m
  1908. , q  O4 G, B$ q
  1909. LDY #$00
    " @# E# R$ s% T( F* D! O
  1910. LDA [Data_L],Y3 g! `! Y' y2 J1 |- G5 V- Z
  1911. STA PPU_Addr,X
    ! @$ m+ E4 T6 ]0 h% |5 I
  1912. INX& M  z  b1 E& O# t+ d/ Y
  1913. Clear_Item_Text_End
    5 t  }: G0 a. g2 P. H. M
  1914. STX PPU_Cur9 P& ^& K  u5 g- u3 i
  1915. RTS
      ~3 ]/ [/ Y: d' @4 g
  1916. ; t: V/ t( x' Q; Q- b) i7 _' Q, R
  1917. ;==================================================9 f1 F+ n4 x# e
  1918. Show_Item_Text;显示页项目( w2 B, J4 \7 F# b0 X
  1919. LDX PPU_Cur: i0 Q8 h9 E$ N! \5 S8 Q5 T
  1920. LDA #PPU_MODE_CNT_LINE
    ; P" q8 @3 D! R' |3 j0 |
  1921. STA PPU_Addr,X1 a7 i% k" ?: {% Y7 K
  1922. INX: O# _) g9 V+ T: W
  1923. LDA Page_Cur& x+ A, o- [4 w7 l# ?
  1924. SEC7 p1 z" q0 I6 d) v7 H' f; z7 j
  1925. SBC <Page_Cur_Index7 p7 p2 Y) l) {& k
  1926. ASL A6 Q, ]$ U' W9 p9 t0 K" {
  1927. TAY. P: ^0 P  @5 c8 D$ e" x5 W
  1928. LDA Item_Pos_Data,Y
    $ ]- B' n: v9 o! B
  1929. PHA, V" t8 p: \$ W2 v
  1930. INY
    5 `% n8 s1 I# `2 m
  1931. LDA Item_Pos_Data,Y
    3 S: r! w, {2 \
  1932. STA PPU_Addr,X
    9 e0 K) N; D: I1 M# A7 ?
  1933. INX* q1 Q7 t2 l; F* `6 R% L8 @- g4 G9 W
  1934. PLA
    ( S) U. X, [! E+ i
  1935. STA PPU_Addr,X9 o, C9 w* Q! t7 v/ m  a
  1936. INX
    6 O* u" r3 `8 X" {5 ?6 G" S
  1937. ! U, ~6 P* |/ a2 n. d
  1938. LDA Page_Cur5 s6 F$ o/ V' r! M/ c, P
  1939. ASL A8 w6 f7 k4 v1 R) a3 A
  1940. TAY
    $ F, W0 I9 z: Z" a
  1941. LDA Music_Collection_Name,Y
    ' T5 n; Y! S8 |6 H7 i
  1942. STA <Data_L
    % W) _! s7 c; K8 @1 B
  1943. INY
    2 y' i/ x$ m! X) m) p
  1944. LDA Music_Collection_Name,Y
    " i7 j. ^& N  x
  1945. STA <Data_H
    0 c0 S  W5 }6 C- r' d

  1946.   d1 Q1 i8 D6 m' U# E# H
  1947. LDY #$00: `. V# J* E+ q! Q- z) _
  1948. LDA [Data_L],Y
    8 A# V4 S$ N' U/ W6 Y
  1949. STA PPU_Addr,X
    & |9 `4 r+ E  g! h- w, q' |
  1950. STA Data_Cnt% U2 e* `' M: O' C+ q
  1951. INX
    ( B. b9 k1 a: u/ ~
  1952. % `0 G% _! |  {7 W' S
  1953. INY
    ' u) l2 ~8 J4 Z3 P% C5 s; j
  1954. Show_Item_Text_Write+ g( T" m; c2 H' S
  1955. LDA [Data_L],Y; G7 ]2 D# ^# @0 N8 B- o0 y7 O
  1956. STA PPU_Addr,X2 Z- s9 P2 i1 _2 f; Z. c8 k; S5 Y
  1957. INY1 U8 D8 `( U* `( v) i+ a
  1958. INX/ E1 {$ y( ]0 y  E: A9 g
  1959. DEC Data_Cnt
    2 I2 j$ b4 Z& O9 @; u, i6 A
  1960. BNE Show_Item_Text_Write
    / V( D+ x+ G2 @, n/ B6 O; V! I

  1961. & M# Y( R/ o' H' d, w9 L* t! f" y- a
  1962. Show_Item_Text_End
    & I: N+ k& W  F! @$ `+ z5 \) C3 f- a
  1963. STX PPU_Cur
    ' o# j( b+ v2 K$ h8 d! D
  1964. RTS: e; s7 C+ k7 ^" K/ X, w: h

  1965. 6 G( y5 U% z3 T* t
  1966. ;==================================================7 z& ]% k) u' G- Y
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量- _. Q. d! W" ]) }7 ~1 k9 C
  1968. STA <Data_Buf
    7 l  O7 m" E/ @
  1969. LDA #$00
    ; m4 ], O, V- I, B, `. c9 }! I
  1970. Get_Page_Index_Calc
    " S* p% S1 n% e2 T/ z! \
  1971. CLC
    1 n% U9 o% s! N6 E. f
  1972. ADC #PAGE_SIZE
    " b; ~5 G6 o2 j6 z. ^. n) K
  1973. CMP <Data_Buf  w" V1 }( D: N+ }% n# x
  1974. BCC Get_Page_Index_Calc' u# K: i  s/ o7 X$ c$ s% H
  1975. BEQ Get_Page_Index_Calc_End; `& G! m$ P5 W; D* f9 A
  1976. SEC" c  f$ W/ @0 p0 N  Z0 d# X2 G
  1977. SBC #PAGE_SIZE; v8 A3 M, g7 m. s# Y
  1978. Get_Page_Index_Calc_End
    6 I7 p% E. K/ n+ E- Z
  1979. STA <Data_Buf' R# y( a; r; U% R
  1980. Get_Page_Index_Cnt. ~( w4 d3 ^9 I, W* A
  1981. LDA #PAGE_SIZE$ r( X* A0 o' x/ G3 Q7 L
  1982. STA Data_Cnt5 z: V3 g( Z& q% D5 ~! D7 j

  1983. 6 @; I% ]( U5 C  n7 Q0 V+ \
  1984. LDA <Data_Buf* M; z  u% ^: s% v' ]5 Q
  1985. CLC4 n7 N! e# f& h6 x
  1986. ADC #PAGE_SIZE6 [% [& \1 F3 G, w6 g) E, h
  1987. CMP #ITEM_MAX_SIZE( }3 x& w4 w% n8 h
  1988. BCC Get_Page_Index_Cnt_End
    : X& ]6 |0 m0 ~; ?. v
  1989. " E* E- g  Y- h; `% e$ }
  1990. LDA #ITEM_MAX_SIZE
    ' a% @4 c  X( X0 n0 b
  1991. SEC6 W! C3 X4 l0 u6 ?. d; Z6 c( G( z
  1992. SBC <Data_Buf
    7 `/ J  ?; i( l" T0 f
  1993. STA <Data_Cnt% {8 Y- p3 _* b

  1994. ! l! B1 P6 x8 b2 @9 X9 r0 c
  1995. Get_Page_Index_Cnt_End
    3 [" Z. S" e4 J, K# j
  1996. RTS2 v4 c# S/ d( A. o4 E0 ]

  1997. ! r* T2 r0 |) M3 ?6 H( b0 c: W! ~
  1998. ;==================================================
    ; Z3 S, y2 r  n$ q0 D. S2 E3 P% M
  1999. Get_Last_Page_Start_Index
    ' ~, S# C+ n9 I2 a  B3 e
  2000. LDA <Music_Item_Last
    3 c7 O* r3 K0 ]7 C6 `  p
  2001. JSR Get_Page_Start_Index
    " ]/ x. a8 K5 H( W
  2002. LDA Data_Buf
    / O; Q6 L+ I9 u: G) ~
  2003. STA Page_Last" U' @4 f4 Q4 l- a
  2004. STA Page_Last_Index
    0 _, M3 I( }0 G) ~
  2005. LDA Data_Cnt) o( M( n  P5 y" `
  2006. STA Page_Last_Cnt% Q. J+ w# B7 G- ?3 a
  2007. RTS
    ; f. N0 G' [) ]& \3 e1 G! A

  2008. 9 ^& M2 C: B* }9 \: M
  2009. ;==================================================8 B1 ~1 V) C7 N( I/ z
  2010. Get_Cur_Page_Start_Index
    9 d4 s' ]$ }+ x( J
  2011. LDA <Music_Item_Cur# ]: D: H5 X( m( d
  2012. JSR Get_Page_Start_Index
    , v* J+ P+ z1 Q) g/ o
  2013. LDA Data_Buf
    9 I) _. _& I7 Z9 Q! z7 g5 z
  2014. STA Page_Cur6 g, W' P$ C7 B7 X6 x
  2015. STA Page_Cur_Index
    - f. k/ G# z3 l) l# ~
  2016. LDA Data_Cnt2 q/ F2 Q/ @3 P& V$ H
  2017. STA Page_Cur_Cnt" }& C' b" m" W
  2018. RTS7 T& f8 \# U8 j& V) g* d1 a, V

  2019. 0 ]* e5 ?2 t" `* M# G4 ~$ w, J
  2020. ;==================================================
    % O. y9 q/ q; x% x
  2021. Show_Page_Text;显示页文本
    1 {; a* K. h8 o% @* Q
  2022. LDA <Text_Disable_Flag+ r# Q2 [/ b, [. q& N
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM' m  W3 V) E% v0 @8 ?' ~
  2024. STA <Text_Disable_Flag
    8 E+ ~5 B: F# Y& P$ Z
  2025. % R. z; {( z$ Q" S. ~
  2026. JSR Get_Last_Page_Start_Index
    " C, G3 z8 _! A3 M1 p! W7 \* i
  2027. JSR Get_Cur_Page_Start_Index
    1 u. ?- `& b* J0 @% r: s6 _
  2028. % {% q+ k. K8 b& [
  2029. Show_Page_Text_Set7 Z% ?( z' g. D
  2030. # ^. M2 d& M4 T6 B$ ]& n
  2031. Clear_Page_Last_Item;清理上一页
    7 G" L* U4 ^: f/ a- j. S! C+ _
  2032. LDA Page_Last_Cnt
    / m1 C+ a) h, U2 B* ?) m. z6 z) e
  2033. BEQ Clear_Page_Last_Item_End
    9 b! N) u1 A3 B4 n8 r* M( s3 y: l
  2034. JSR Clear_Item_Text& |" h0 Z% D: Y- ~, g
  2035. INC Page_Last$ @- O! V. u! [  ]8 k- r8 X' _
  2036. DEC Page_Last_Cnt
    - R2 }( k0 [+ f, I; t
  2037. Clear_Page_Last_Item_End$ |) A0 i+ |# H4 C
  2038. + p2 d" @1 P2 ^6 p  Z; N1 e7 M- l
  2039. Show_Page_Cur_Item;显示当前页
    ! ]* H8 V5 z) `8 H) @) e
  2040. LDA Page_Cur_Cnt6 _- F0 Z3 H7 q
  2041. BEQ Show_Page_Cur_Item_End
    + G0 H4 k; a& m+ N9 U$ S  ?( j# E
  2042. JSR Show_Item_Text
    $ W4 p1 J' {: i2 o+ h$ G
  2043. INC Page_Cur+ N$ s& u/ t3 [  p$ h2 p
  2044. DEC Page_Cur_Cnt
    4 u$ b0 e  \5 ^; x  B
  2045. Show_Page_Cur_Item_End: ~8 o# S+ A+ j9 |- }3 ]

  2046. % @; b4 W; r4 e2 Z
  2047. INC <Time_Wait_Cnt
      Z5 T3 N0 I1 r' f
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    6 B' N) {' J8 Z1 a0 F% x% v5 ^
  2049. LDA <Time_Wait_Cnt' \/ i, _  X1 I0 E5 L3 }6 K
  2050. BNE Show_Page_Text_Set_Wait8 w" P  z) v1 G1 @! J! N

  2051. : `% a5 [+ a  s+ i# [
  2052. LDA Page_Last_Cnt
    : ?( j9 z, q. t5 w0 s  {! L
  2053. ORA Page_Cur_Cnt
    : V/ k  m# A- c! K1 b
  2054. BNE Show_Page_Text_Set/ h" |3 y7 q! f0 C$ X
  2055. LDA <Text_Disable_Flag
    ! p: f5 D' p1 J& n( }
  2056. AND #TEXT_DISABLE_ITEM ^ $FF/ M7 G" _: p! O- l0 |
  2057. STA <Text_Disable_Flag* r: ~- f9 B( D
  2058. RTS
    / N$ z) V1 e9 _$ g( k: M( l

  2059.   J$ A. T: E1 N9 u/ G! r) ]6 H
  2060. ;==================================================1 M  I% }  s; b. s/ R  m4 p
  2061. Last_Item;上一项4 `7 |9 o+ I( S. n5 k5 O4 [
  2062. JSR Clear_Last_Track_Name
    + u+ n/ T3 V0 \8 K: N) ]
  2063. JSR Disable_Text_Draw- u& X8 q0 I* u

  2064. 6 W5 `9 k$ l7 J; @& ]
  2065. LDA <Music_Item_Cur
    : l6 s# P* u- }8 U
  2066. STA <Music_Item_Last& o) D* F  b3 x1 z
  2067. . G# h  O! `& U6 r6 c6 ]- S1 V
  2068. JSR Get_Last_Page_Start_Index
    ) ?  r2 P0 W0 \& O% Q1 b6 D

  2069. 0 m; V) k9 f: O) P) L0 r- p
  2070. LDA #$00
    $ Z& ^8 `: A% N. j5 M0 S
  2071. STA Data_Buf1 f1 Z5 G+ X7 l" ~# ]& ?7 O" y

  2072. * q. V: y% f+ l/ o) p, \% _* `3 z- l
  2073. LDA <Page_Last
    - [$ t! B5 P& j
  2074. CMP <Music_Item_Cur: S0 y# f! [2 A- b0 _! ?# G0 c
  2075. BNE Last_Item_Begin
      Z+ l2 u# U  P! G) ]# {4 ^# l9 d

  2076. - v* s5 j) E" V8 g! n& m
  2077. LDA #$014 R8 z" ^. U' x) p$ I! y# B
  2078. STA Data_Buf0 O# K, H5 s" A* A5 s
  2079. Last_Item_Begin# M" ]% H1 x2 P7 b5 k
  2080. LDA <Music_Item_Cur* w& f" X& b- }3 j
  2081. BNE Last_Item_Set* P/ J4 A: ^$ r2 ]5 i' w5 S' ]
  2082. LDA #ITEM_MAX_INDEX + 1
    4 W! l- s2 `; K  V
  2083. STA <Music_Item_Cur' F" C7 f  u/ r. |* m
  2084. ' `  |" l2 \" f  b! ~& i4 D, H& q
  2085. Last_Item_Set
    7 {, X" L# ]% D+ l) V: ~9 i$ q& F" I/ h
  2086. DEC <Music_Item_Cur
    2 r! C) q! |" l. c/ h2 u
  2087. LDA <Music_Item_Cur
    2 R9 ^, a; s7 I" L' X* z: S
  2088. JSR Reset_Current_Music5 Q/ O- ^6 B4 r3 D7 a" {
  2089. ) j. b7 F  v" f
  2090. Last_Item_Play
    . O# G& B$ ]9 a9 Z
  2091. LDA Data_Buf" M/ h* B, l! X/ Y% n) ?
  2092. BEQ Last_Item_End
    ( Q. q" |# E; \' ?, w7 i
  2093. JSR Show_Page_Text- V8 y) D7 g3 E7 s% f
  2094. Last_Item_End
    ( a# o" d: Y) f) w) i
  2095. RTS
      _3 ~( p: I2 b' v3 O

  2096. % F- B/ u" A6 |: d: F
  2097. ;==================================================% d1 n( Y. k6 @) S
  2098. Next_Item;下一项. O3 g9 P7 e: K2 M8 ~" R, o
  2099. JSR Clear_Last_Track_Name3 M7 H5 H, O" q+ T
  2100. JSR Disable_Text_Draw
    0 }+ }4 S# }; z& b
  2101. " F  Q# r! O* q0 }9 Y& Z% y
  2102. LDA <Music_Item_Cur
      n6 p' w0 t, {. y- n
  2103. STA <Music_Item_Last
    9 S; Y9 b3 Y3 t/ h8 R% N9 @

  2104. 3 X8 [8 i: b# C
  2105. JSR Get_Last_Page_Start_Index. E5 t% g. ~% s9 N! X
  2106. 3 H: Y# F* o* b' v
  2107. LDA #$00& I) I; g5 k2 I0 Z
  2108. STA Data_Buf
    ' \, S, e8 a' J. o4 Z4 O
  2109. : {- M" F. D% `9 \$ E( u
  2110. LDA <Page_Last
    % }' b- M. D. B* |* a' c. F
  2111. CLC: B: A4 }1 e' V$ ~) P6 ~
  2112. ADC <Page_Last_Cnt) t0 X% S/ C  p7 X4 u
  2113. SEC
    9 i0 w. D- n  q
  2114. SBC #$01
    " o% V- s! X3 T7 [2 X
  2115. CMP <Music_Item_Cur
    1 m7 c  b% z+ |
  2116. BNE Next_Item_Begin
    5 {, a1 O! Q( ~
  2117. $ M7 F% w7 t# E1 b' B0 f
  2118. LDA #$018 \7 Z1 D0 n+ i
  2119. STA Data_Buf
    7 F) u! q/ g+ ^0 w% V1 ]
  2120. Next_Item_Begin! A% D. v8 J' A0 \- _
  2121. LDA <Music_Item_Cur
      S2 q' ?5 \7 z& b) }$ C& |
  2122. CMP #ITEM_MAX_INDEX" ?0 E8 b* @  C. J" i" N1 _
  2123. BCC Next_Item_Set" w5 f6 q! Z2 y7 O) \6 ]
  2124. LDA #$FF( f* l6 P! E8 u" @4 L  p" p
  2125. STA <Music_Item_Cur& ], _& s7 W, |) z
  2126. Next_Item_Set, [6 Y- E* E, E0 _7 p+ {
  2127. INC <Music_Item_Cur: H# _- o' G7 b
  2128. LDA <Music_Item_Cur  z5 N* C& H" ~( e5 W% M) Q; g
  2129. LDA <Music_Item_Cur/ V0 P: a% I' `3 E( r0 }7 s
  2130. JSR Reset_Current_Music! H! ~0 r- \6 a2 x# K! s* q3 M, d# p
  2131. Next_Item_Play
      p" B: r) z, y, o% _
  2132. LDA Data_Buf6 w7 P& V$ h: F: _
  2133. BEQ Next_Item_End
    & y! P' _) F3 ]- X
  2134. JSR Show_Page_Text
    ; A8 e4 ?3 a, P
  2135. Next_Item_End* l% e. J. w4 P9 A& y1 M7 I
  2136. RTS% \1 r2 \" i  L
  2137. # @# h/ \8 g; `
  2138. ;==================================================
    - |6 d9 c4 @. n' i  W
  2139. Last_Page;上一页  F" x7 c9 q! l" b4 b! C0 v
  2140. RTS
    + Y9 G8 b" l! H1 X  F
  2141. : l7 k4 w+ ?/ b: E. E
  2142. ;==================================================) h6 \* C, e- s1 |3 _3 o
  2143. Next_Page;下一页1 Q$ d) u: p1 l1 s0 a4 l, c( s% n0 T
  2144. LDA #PAGE_MAX_INDEX
    3 x8 C  r* x& A) b0 A7 R: W
  2145. CMP #$016 X, U' K% S  ]4 p4 q2 H8 Q0 h
  2146. BEQ Next_Page_End; E- K5 y# l% t

  2147.   m8 H9 {" B' G2 ~1 E$ N3 Q! J, h
  2148. LDA <Music_Item_Cur6 t1 Q$ y/ j7 A3 e" R7 @( R
  2149. STA <Music_Item_Last* g, W5 [$ H1 K' \2 r9 x

  2150. ) _7 N: n2 q7 R$ R& k
  2151. JSR Get_Last_Page_Start_Index# \$ s; J# G# Q' T) |; k) n

  2152. ( j8 K9 o( G. l, _- p: s5 P4 S
  2153. LDA <Page_Last_Index: v* F5 c0 y5 j7 B) U' v( a& a9 {
  2154. CMP #PAGE_MAX_INDEX
    ) R# _) B8 K$ `/ i
  2155. BCS Next_Page_In_End_Page
    ) h  X& T7 X+ i# O) g
  2156. & J3 z/ ^. x( ~# E% }; |- S+ `3 t
  2157. Next_Page_Not_End_Page;不是在最后一页
    2 H: S# C2 L% J; m% M9 Q
  2158. LDA <Music_Item_Cur
    . Z9 Z# [+ n" n8 x7 V4 z
  2159. CLC
    ' U1 N# _, i# f
  2160. ADC #PAGE_SIZE
    " u/ |9 c! d) [/ y7 |
  2161. CMP #ITEM_MAX_SIZE
    / r& k* V% \" g/ q3 r3 V8 e+ D2 |
  2162. BCC Next_Page_Not_End_Page_Less
    + x1 m4 R) F0 Y+ p% z
  2163. LDA <Music_Item_Cur8 x- \! v6 S: u) C6 A5 C
  2164. SEC
    , Q% X5 H" W5 l( F
  2165. SBC <Page_Last_Index
    8 G0 O, O% I' W
  2166. CLC$ X+ C8 y! B5 }, @6 V7 A+ U! Y" I
  2167. ADC #PAGE_MAX_INDEX
    6 ^* h# d5 M) y) S$ p
  2168. CMP #ITEM_MAX_SIZE8 J" a8 Y: |& P- I
  2169. BCC Next_Page_Not_End_Page_Less
    6 a1 W- v" ^: W
  2170. LDA #ITEM_MAX_INDEX
    ; _4 ?4 I& B% j7 \; f9 S3 {
  2171. Next_Page_Not_End_Page_Less5 m0 d/ A9 e) r. s+ Y
  2172. STA <Music_Item_Cur
    9 m: X: u. ?9 g! @
  2173. JMP Next_Page_Reset
    2 V5 ?$ i1 M. Q7 p9 }/ t6 w" r

  2174.   R& `/ U+ ?& H1 _
  2175. Next_Page_In_End_Page;在最后一页
    3 T+ q; a  D5 O- A) H) k
  2176. LDA <Music_Item_Cur
    : O4 s; [" m# n# A
  2177. SEC7 d4 }, b3 n* p0 |) i! L; z2 H
  2178. SBC <Page_Last_Index
    ( b+ o5 b( `0 g* @0 p: [3 W
  2179. STA <Music_Item_Cur8 X9 V/ C& P$ o3 P, D; d

  2180. " `; ~7 O! C* Q: e
  2181. Next_Page_Reset* m, T! X+ r3 n( p' Q! _
  2182. LDA <Music_Item_Cur* q9 i8 [. }! J
  2183. JSR Reset_Current_Music/ I/ l. U8 {& t/ m% v9 ]
  2184. JSR Show_Page_Text
    2 a' }, L3 S- j. ~
  2185. Next_Page_End% q1 b' X% P) e. i
  2186. RTS
    , P/ o" J, L9 z1 E

  2187. 7 ]* y! B: D+ ]8 f
  2188. ;==================================================6 E9 f+ @+ B* P& ^! E+ F
  2189. Disable_Text_Draw;禁用音乐条刷新. s5 a5 p: T3 ?5 i7 L
  2190. LDA <Text_Disable_Flag- J, a3 _% }1 N) f
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME$ c! ^8 C) P! l) G8 l
  2192. STA <Text_Disable_Flag
    8 V' d0 J# D! n0 B+ W. ~/ k: h! {
  2193. RTS: Z8 t7 i  a2 U3 @) m$ Y

  2194. : k1 T- L4 z9 a0 s$ \; W$ r
  2195. ;==================================================
    ; [3 f2 I% y5 T- e
  2196. Clear_Last_Track_Name;清除上次曲目名. C/ L& d8 Q4 S0 n! C! u
  2197. LDX <Music_Item_Cur
    % }$ J7 h7 [7 H7 h5 d/ u
  2198. LDA <Music_Cur,X  y3 D/ Y4 z' `
  2199. .IF Track_Name_Pos# x( N5 Y, L4 e/ n
  2200. JSR Clear_Track_Info% f; g# S3 c) n0 ~
  2201. .ENDIF
    / g% H! u. l0 r$ u) n
  2202. RTS
    ' K  u- _% m: r. b3 o: V

  2203. 1 U8 g- s4 P9 H3 t$ F* \
  2204. ;==================================================. I$ T) H; m5 S7 j+ n
  2205. Reset_Current_Music;重设当前曲目7 A' l. i5 O5 E# Q
  2206. " W& {* [  U! {
  2207. ;写入当前总曲目* {% i- Y8 ]+ D! N: F+ t
  2208. JSR Set_Sound_Total: f% q$ S  U. Y5 ~4 \
  2209. LDX <Music_Item_Cur/ ~  j5 @, x7 `# g6 @0 [

  2210. : p% r7 `' k; }, w, Y! i
  2211. LDA #$00
    ! H. F. @- D6 L3 M8 h4 C
  2212. STA <Music_Last1 ~: I6 m' p7 F3 F* O

  2213. 6 \0 `: a6 l7 z$ E; [. N
  2214. JSR Sound_Reset_Proc
    4 m9 L% B- j1 V
  2215. JSR Music_Show
    , L& ?" h. W2 Z6 b2 D
  2216. RTS
    , j9 G" s: ~5 j0 D! M( I
  2217. - T( n$ o% @+ f2 D8 w! T
  2218. ;==================================================
    + H( j3 Z* ?% |& h; e
  2219. Music_Song_Stop;音乐停止
    * A1 z. `; j- f
  2220. LDA #$014 ~- F' H; ~, b; F) k
  2221. STA <Music_Stop_State0 b9 |- }+ h, m5 _: p7 D  Q
  2222. JSR Music_Bar_ReSet% ]& z! _  X# {  S" W; j5 ]  |
  2223. JSR Time_ReSet
    : l8 r+ z+ D8 R  H+ g
  2224. JSR Sound_Data_Clear
    ' R5 z' x' G) L, u
  2225. JSR Music_State_Show) W" P( P: N/ I4 e' s8 W
  2226. RTS
      p. `7 S& X! [

  2227. : z5 l% X0 ~" N# s% g: W- n
  2228. ;==================================================
    - y8 \. b  W& z1 H% {# {& P* n
  2229. Music_Song_Play;音乐播放
    / w: e% I- e% S# d% X" P
  2230. LDA #$00
    ( B4 Z: T% E' O
  2231. STA <Music_Stop_State2 H/ R8 y4 t$ q5 z
  2232. LDX <Music_Item_Cur
    5 N; G: K0 S3 O+ b# ]; `
  2233. LDA <Music_Cur,X9 i+ M5 l7 M5 g' j+ C5 \$ p1 G9 S
  2234. JSR Sound_Init_Proc( {/ O7 {5 ?4 {# b! c7 j1 f* U
  2235. RTS
    2 k% q+ ~# p, B4 j3 q
  2236. , T4 n, e  D! b2 A; r
  2237. ;==================================================
    ) A, X) A; }9 n. ]+ E) r
  2238. Music_Song_Last_10;上10曲$ ?8 @1 Q: t; ^: u/ [
  2239. JSR Clear_Last_Track_Name! o' t, K" l7 B) p8 f! J& Y
  2240. JSR Disable_Text_Draw4 \7 A5 x* S6 L" G
  2241. LDX <Music_Item_Cur" d" f5 n  j6 _
  2242. JSR Set_Sound_Total. v5 o1 r" [' w
  2243. LDA <Music_Cur,X0 l, N: V/ j$ W+ b% Z  E) Z2 d) A1 a
  2244. SEC
    + W7 Q4 q, {* {, g
  2245. SBC #10
    ! ^3 g5 X  K& n" g+ r" q6 F
  2246. BCS Music_Song_Last_10_Set2 R  d4 \7 b$ n) l% k7 g. N
  2247. LDA #$00. V0 ?4 p. K* D! O1 |+ K& q4 \
  2248. Music_Song_Last_10_Set
    & z3 g' p: r$ f8 W: H: |
  2249. STA <Music_Cur,X
    % l( `, Z; W+ g% p* _- s/ f
  2250. JSR Sound_Reset_Proc7 j/ d& V! N- [$ G  X; ?4 I
  2251. JSR Music_Show
    ' }) q6 q0 ^! L# `0 l
  2252. Music_Song_Last_10_End
    ) k4 m9 F6 n4 f( n8 A
  2253. RTS
    . k# {& h1 _" x) T! {% Z$ `3 B1 _: J

  2254. 2 t  ~0 J, |. s1 T
  2255. ;==================================================3 P4 V+ {6 S1 {# c  b3 X& K8 g( ]
  2256. Music_Song_Next_10;下10曲
    4 `5 O# @7 V2 x$ M5 s4 A6 j0 k
  2257. JSR Clear_Last_Track_Name
    ) H* x1 `% {# ]/ h  ?7 D1 f
  2258. JSR Disable_Text_Draw
    * S, c) u2 Q" Q$ |
  2259. LDX <Music_Item_Cur% U: a% l* m5 H
  2260. JSR Set_Sound_Total- q0 S% }$ \8 L# A+ k# N
  2261. LDA <Music_Cur,X
    8 d7 ~. D( \) l1 M$ k
  2262. CLC
    8 D* J, M. X; R0 @" O' ^
  2263. ADC #10. d. P4 k. M; o4 |9 f8 h0 @
  2264. CMP Music_Total: P) k1 l# N, m1 a8 h; b
  2265. BCC Music_Song_Next_10_Set% x2 N. D# d8 Q
  2266. LDA Music_Total" q8 h0 e  i/ T. J6 g+ l* }( b0 U& R
  2267. Music_Song_Next_10_Set. Q+ @( S* E% t5 ]  K
  2268. STA <Music_Cur,X( y) F, E+ U1 U' J& k3 s- ~
  2269. JSR Sound_Reset_Proc: Y- J8 q" n6 }& S0 i
  2270. JSR Music_Show
    5 j+ \# t& Q7 O  r
  2271. Music_Song_Next_10_End! n) c, M2 n: L! B7 i; C7 D
  2272. RTS- J+ |$ f  ^$ \; b
  2273. 1 M4 v2 _( K0 N& y! W
  2274. ;==================================================
    ) c  _4 ~; g) L# Q* K
  2275. Music_Song_Last;上一曲( x* N( n* _5 ^, R
  2276. JSR Clear_Last_Track_Name& \; p; T8 Y& H! m5 D0 Z& a
  2277. JSR Disable_Text_Draw
    1 ]$ u" `2 Z1 }  ?
  2278. LDX <Music_Item_Cur* V0 P7 a" d- E' b2 @  ]
  2279. JSR Set_Sound_Total$ \  q# T. I; J: M5 n: }- j
  2280. LDA <Music_Cur,X" |( I$ V! ?+ h" y
  2281. BEQ Music_Song_Last_Set
    8 u, [; w$ g4 \& U
  2282. DEC <Music_Cur,X# D# n. {4 h! S% b+ T/ H4 I
  2283. Music_Song_Last_Set
    / s5 @+ p+ k- c' O* E* D( M
  2284. JSR Sound_Reset_Proc) h& ?6 e) V; E8 a' l
  2285. JSR Music_Show
    9 V* O3 [2 S  W" `
  2286. Music_Song_Last_End& G! E( t) ^" ~$ [
  2287. RTS. k; g' M% Z% `0 ]
  2288. % f$ ]2 ?- ^7 o+ L
  2289. ;==================================================* |  h' `/ i0 n: d. W3 M4 g
  2290. Music_Song_Next;下一曲! `- ]# W6 D! j8 @1 D! n
  2291. JSR Clear_Last_Track_Name
    3 H( D5 i5 M* |" L/ u! j& a
  2292. JSR Disable_Text_Draw
    5 W9 f6 S: r) y" ^; }! I
  2293. LDX <Music_Item_Cur5 Q% h& J( S5 S2 t8 Y# {
  2294. JSR Set_Sound_Total
    6 j% ^8 H4 ?* o: o, ?5 Q8 d
  2295. LDA <Music_Cur,X
    : Q5 D: @, O$ P9 ?6 K, a
  2296. CMP Music_Total, M9 Z' ~2 f" N, b" ?" m
  2297. BCS Music_Song_Next_Set
    # d7 H, e8 S; @& v# s5 d
  2298. INC <Music_Cur,X
    5 L. |. a9 W! T; U
  2299. Music_Song_Next_Set; y% w7 H% Z- A  B: x9 W  q. ~- H
  2300. JSR Sound_Reset_Proc
    # ~- v/ B9 e  O9 s3 ?
  2301. JSR Music_Show
    # e. e: W  K% X7 f; A, l4 z! b
  2302. Music_Song_Next_End
    & q  G' T# z" {3 R. ~% }" ^# P
  2303. RTS
    & h1 v* Y! d3 b* o) e

  2304. - |, D6 Y( {7 F3 f
  2305. ;==================================================7 R+ J! l$ s0 z& ~0 W9 m
  2306. Change_Select_Item;改变当前选择项8 T: {& [# K$ W
  2307. ;--------------------------------------------------2 Q2 E% g* N. n& X) P3 M
  2308. Change_Select_Stop_Play_Item;停止/播放
    * O9 v2 }& i! I' M
  2309. LDA <Key_Once) p; a5 L& I& w
  2310. CMP #$10+ V! G' k" A7 h6 g; X4 C) M
  2311. BNE Change_Select_Last_Item
    1 H# k4 E3 b7 K0 M  T* r; g; }/ ^
  2312. LDA <Music_Stop_State
    5 R8 {4 u- u9 `
  2313. BNE Change_Select_Play
    7 I$ y0 u, x7 J
  2314. JSR Music_Song_Stop8 z+ b. d, ]5 C
  2315. LDA <Music_Stop_State
    * i5 \2 g/ Z6 m( K; J
  2316. RTS) B. F9 z; J" y, T; s( j

  2317. , }- O% D  C8 B* i2 A" X0 p: I
  2318. Change_Select_Play7 M3 A; X  x8 V- o
  2319. JSR Music_Song_Play
    # m/ d1 x9 h3 ?9 a5 `: z/ {
  2320. RTS
    # r% |6 o. p" @7 Y5 O9 P: U
  2321. ; s1 E  Y& F" G5 B) c
  2322. ;--------------------------------------------------
    % Q+ z* k+ L; E& a/ j5 B. `
  2323. Change_Select_Last_Item;上一个专辑
    5 a! u+ T/ L9 U- t+ ~5 P  S
  2324. LDA <Text_Disable_Flag4 A/ K+ z$ d: m/ V/ i' S, L& V
  2325. AND #TEXT_DISABLE_ITEM  R# ^1 V% g) S' ^, N% G
  2326. BNE Change_Select_Item_End9 i# ^4 `( F( u% }8 b& z
  2327. LDA <Key_Once, C) n7 @" `/ a; d4 @; |
  2328. CMP #$087 q) r  f% X9 m2 ^( u
  2329. BNE Change_Select_Next_Item
    ) ?  Z8 }  B- q1 u% t* @  f) A
  2330. JSR Last_Item
    1 l1 I6 A) x, Y. S9 Q- l/ Z+ J6 K
  2331. ;--------------------------------------------------0 m' U- o. p' I" ]+ ~, f2 E+ N
  2332. Change_Select_Next_Item;下一个专辑3 E% `2 a; `/ f* e  ^
  2333. LDA <Key_Once4 P. r: _; @5 ]  z! ~( ^6 K
  2334. CMP #$04
    7 w+ N' m& u( G; Z% j
  2335. BNE Change_Select_Last_10
    ' \4 L4 l+ ^; G4 B: J' q
  2336. JSR Next_Item- U% ?( O7 S0 q  u* ]' Q
  2337. LDA <Music_Item_Cur( U' v' M6 m( f( h, w
  2338. JSR Get_Page_Start_Index
    8 M' M& }  |( ], D$ Q5 l) l
  2339. ;--------------------------------------------------
    8 d$ A7 W' b  k, z
  2340. Change_Select_Last_10;前10曲
    % V; D# _4 i) R: f7 Z
  2341. LDA <Key_Once
    ' b* U7 [- p6 `4 m: U: [
  2342. CMP #$40% J2 R; D" ~0 a- d! T% g1 G- [
  2343. BNE Change_Select_Next_106 U9 @/ s0 R: k
  2344. JSR Music_Song_Last_10+ ^, ^2 t: }* e$ }9 @0 }
  2345. ;--------------------------------------------------4 S8 [5 |' M8 a% x' D9 n
  2346. Change_Select_Next_10;后10曲$ Z. r, w2 w; m) s- V7 B- R
  2347. LDA <Key_Once
    : U6 U3 D+ b. ]
  2348. CMP #$80) w5 W5 D6 I+ r5 s# Y( c
  2349. BNE Change_Select_Last# W/ h& r' Y; C& F
  2350. JSR Music_Song_Next_109 o* {3 n( R2 d/ l) M/ E1 g
  2351. ;--------------------------------------------------, z1 ^3 e: M% V
  2352. Change_Select_Last;上一曲
    5 Q1 R  Y1 U. y" v
  2353. LDA <Key_Once, [/ U3 U! Z1 R) L5 U& |' u0 C
  2354. CMP #$028 c3 c! U$ n) J0 A8 T
  2355. BNE Change_Select_Next
      O% c: `5 E/ t. o8 k/ L
  2356. JSR Music_Song_Last+ y5 g. f6 L& V3 \1 f7 h. T. H$ [
  2357. ;--------------------------------------------------' M/ d+ ~  [6 B( M: O
  2358. Change_Select_Next;下一曲
    1 D  u4 q/ {) g9 I% p
  2359. LDA <Key_Once
    8 C6 s2 B' g. Q+ T
  2360. CMP #$012 g# \/ I9 o+ ~
  2361. BNE Change_Page_Next& M6 S9 p5 h# Z
  2362. JSR Music_Song_Next5 c0 e( ]+ ^7 O% g" E- c0 Y; {
  2363. ;--------------------------------------------------3 y. Q- d5 V0 I; x. u4 Z  Y0 ?0 b3 w6 e
  2364. Change_Page_Next;下一页
    9 X$ d2 T/ A4 @$ l' G
  2365. LDA <Key_Once
    ! |) y4 E8 K: _4 }# {0 @& V
  2366. CMP #$20
    0 Y- g; I+ B. Z  g' G
  2367. BNE Change_Select_Item_End2 h8 Q  X/ w7 Y4 h4 B0 _+ M. X0 H3 f
  2368. JSR Next_Page' E( s- @1 B+ i0 F9 s. }: }9 W1 A/ V
  2369. ;--------------------------------------------------: d; o% S" y8 R% w6 c  d# T% a
  2370. Change_Select_Item_End! g% O* G; ^/ ?
  2371. RTS
    * [. h. e+ d7 M/ A$ j5 i

  2372. 3 B; G: C. w: j1 [
  2373. ;==================================================& q5 F. z) m5 K( e7 E; ?. P8 {4 Y
  2374. Show_Arrow;显示箭头光标
    , V5 m) r* t! s( c0 a+ E3 Y
  2375. LDA <Music_Item_Cur
    5 N' O9 K" J4 D
  2376. JSR Get_Page_Start_Index
    3 k( Q* U" @) X$ \7 _
  2377. LDA #$00
    7 Z, w( j& U6 {9 S" c
  2378. STA PPU_OAM_ADDR
    2 @6 t: a$ z- ^
  2379. LDA <Music_Item_Cur: I* O1 d( p: b4 h9 k9 c4 v
  2380. SEC: k0 `; i& p9 X4 o
  2381. SBC <Data_Buf
    9 i6 B( ?0 b+ a2 f3 r4 [% H
  2382. ASL A
    ; r3 x5 ]1 R4 ~, Z' l
  2383. ASL A
    4 g8 v: J) p( W1 `  I" V( P5 ~
  2384. ASL A+ T! W8 {9 m, G7 V- q
  2385. ASL A
    * |- f/ K! Y/ s, [$ s
  2386. CLC# h4 I0 Z' q/ O2 ^3 a9 g' ]
  2387. ADC #ARROW_Y_OFFSET. E9 M9 a. k2 D; t+ h# t. L$ L
  2388. STA OAM_TEMP_ADDR + $00
    9 b% n( A5 X* h" f. A1 P
  2389. ;STA PPU_OAM_DATA
    " D3 F' Q" A( z
  2390. LDA #$1F# S- n/ B$ ]! Q! \0 u5 c  l! ~6 v" ~
  2391. STA OAM_TEMP_ADDR + $01
    # K$ S' G  n8 t" M- w
  2392. ;STA PPU_OAM_DATA, W1 t% E6 O: l8 H5 y
  2393. LDA #$00
    * f6 T+ q4 d7 i9 C/ @
  2394. STA OAM_TEMP_ADDR + $021 u5 h: P- y1 @/ v; V
  2395. ;STA PPU_OAM_DATA
    : b0 [: H8 u' U3 C% |) h" f6 j6 {
  2396. LDA #ARROW_X_OFFSET
    ' A2 W; z; D5 H6 ]+ J
  2397. STA OAM_TEMP_ADDR + $03  n9 U+ b* B. O1 B! C" f
  2398. ;STA PPU_OAM_DATA; M& C0 ~* N0 D( f5 @6 u9 c
  2399. RTS2 f" }  K' b0 x  _7 ^8 B$ [4 F5 ~

  2400. ; i! [) N6 [) I5 _" ]9 M
  2401. ;--------------------------------------------------1 H3 I0 X3 U- ~0 `. r
  2402. ;命名表数据0 U7 k! F; \0 H3 v9 b
  2403. Palette_Attributes' l6 E; ]2 i, Y* y: g
  2404. .IF SOUND_BAR_SHOW_ENABLE
    % P  _( S( I: d0 `2 s7 Z
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    , A' o+ \0 q6 E( y: Q) ^" \
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    3 E+ M& O; o+ X& J
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    , Q6 n2 v6 s+ V
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    8 P8 C1 ]5 u5 y- g
  2409. .ELSE
    ' Q& r  W  a1 T- [/ y  O; [
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    % @" W+ d0 V8 N5 I
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    0 y& h* [4 b& H( ?: a
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75" d! m+ B+ ^4 o- M( W3 x
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA% x; F+ Z# K6 O; B
  2414. .ENDIF# X& C, |  ]4 K: F  I9 \6 n

  2415. ) J( i- l0 l4 \& A! f
  2416. ;--------------------------------------------------
    7 h& n( C  G" j( W! z/ {( Y5 X
  2417. ;调色板数据* h% U/ R! G0 u7 L) _% b
  2418. Palette_Data
    ! U" l, h# y; p; o( ~
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    4 Y# V" m! O# G7 K! R4 S7 q
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    : W! u7 ^8 q+ Z- E

  2421. 5 J  w9 T+ I0 f5 u
  2422. ;--------------------------------------------------$ U6 \- X2 {, i1 Z# E
  2423. Static_Text_Data
    % g; c6 x. @" T- }0 k
  2424. .WORD Static_Text_Caption_Data
    2 ^  [7 O5 H7 a( v) p9 V
  2425. .WORD Static_Text_Author_Data
    ; G, F* ?8 ^# Z
  2426. .WORD Static_Text_Date_Data
    ( T+ ^7 j2 s2 D9 G& Q
  2427. Static_Text_Data_End
    $ G* Q. q9 a1 q$ ?; \; O1 a

  2428. 4 L3 I% T6 ]$ ?2 o6 q: r
  2429. ;--------------------------------------------------
    , I+ e0 D3 T0 \1 {! [' f
  2430. Static_Text_Pos
    2 z8 i3 T0 _' e. u5 B- n% V" q
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    + o) E0 @2 V8 C5 k7 e
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    4 j/ S  d8 V+ Z7 M
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    ) h, n( m2 D$ s! i' f( Y/ @
  2434. Static_Text_Pos_End$ K: h- e7 G6 j% h8 t% b4 K

  2435. " v  `1 D/ ?1 K9 }7 M# m- c
  2436. ;--------------------------------------------------4 n/ @: Q+ P4 u5 j. Y, ]+ _
  2437. Music_State_Stop
    + u0 w0 R/ @% h3 x, |, J
  2438. .IF SOUND_BAR_SHOW_ENABLE# \/ S( H6 H1 t9 D& N
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00. v1 B& y" |  U$ T, w
  2440. ELSE
    5 N5 q8 \/ w# J
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    - t' P9 C; [2 C0 ^9 @0 z* C5 X
  2442. .ENDIF
    9 _8 X1 R+ |$ P' S! z% s. l
  2443. Music_State_Play
    5 K. l4 A6 O: }$ o$ P( e
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00$ k3 v2 l. n" g/ H* Y5 ^
  2445. , u, y( q8 v  P2 Y, L% F
  2446. ;--------------------------------------------------. P5 j; d. Z4 i8 V6 k
  2447. Sound_Bar_Text_Data;声音类型文本
    2 ~7 b. b/ D# f2 n5 ]' D0 C7 X
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    7 |3 I0 V5 ]* N, }9 O" P, \
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    ' g& c% X( T6 D/ Z0 V) u
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"* {! j3 [# J0 ?/ H) }
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"6 U: s* h6 r/ W. ~) b
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    6 y; I) w6 A8 R, Q8 b

  2453. : x' s3 J: f: f8 V2 w. N
  2454. .IF Track_Name_Pos
    5 X8 d8 i; P, a" i, U5 l) ?- f: b$ M7 L
  2455. 6 u4 i. }2 ^' G( c
  2456. ;--------------------------------------------------
    8 g3 V( \5 b0 W+ K5 i' a
  2457. Track_Name_Addr_00;曲目名地址索引8 _' l# C- Z+ K9 W- X1 O7 [
  2458. .WORD Trackr_00_017 ]& @% N+ G" l6 @4 ]
  2459. 7 m; f7 C3 a2 ?1 {; Z- q3 r2 @
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    " ~8 i5 X/ _, B+ J. o
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"+ q- }' }) T2 u( L) J
  2462. : B# O' U4 }' f' j) p" M& x, W
  2463. ;--------------------------------------------------
    ; c; _$ H9 {# y2 G( T3 R
  2464. Track_Name_Addr_01;曲目名地址索引- {( w+ o" ]; K% i0 [5 i
  2465. .WORD Trackr_01_01
    : M! Q0 R5 M0 L
  2466. 3 n2 A/ V2 F9 B& {6 L! M; p) P* n+ R
  2467. ;==================================================
    : f# z/ p* P/ S5 C
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"" v  Q3 r1 l5 u: U
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    , n6 E% v7 f* D' ~3 D& v; z

  2470. - q* N! f- j# V
  2471. ;==================================================
    ( a" Y6 D9 }! t1 m: ~, X4 e+ ]
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    : s% M; C0 \! j, q
  2473. .WORD Track_Name_Addr_00
    . j; j5 b; D4 U  [) `6 X0 n% g( r( Q
  2474. .WORD Track_Name_Addr_01
    : n2 H2 m# H# `8 q, A+ A5 @
  2475. .WORD Track_Name_Addr_01
    ; J, Z* y- j) V

  2476. $ s4 k2 Z; J7 p' C$ X) A
  2477. .ENDIF
    1 q: n6 h. I$ Z. n# ?) ]0 l$ T

  2478. & ^! e% m' q" p1 W0 T' H
  2479. ;--------------------------------------------------: _9 P) U. i7 w9 [+ ~
  2480. Static_Text_Caption_Data;静态文本数据
    7 e$ L2 @+ Z, m- \# }4 g* N
  2481. .DB 168 d) }5 d/ e6 C- ^' p& b3 }4 T
  2482. .DB "FC MUSIC 12 IN 1": W0 e1 P) w) O# I4 b& W
  2483. Static_Text_Author_Data3 ~% f5 v5 @5 Q. N' n  ?6 J
  2484. .DB 25
    0 u6 l5 O  @$ m' K8 {& w1 w% S0 `
  2485. .DB "EXTRACTED BY FLAMECYCLONE"6 W( P. f+ s& \. V& U
  2486. Static_Text_Date_Data
    , M& g& T  f" n
  2487. .DB 10+ o6 e4 m1 ^& v9 y
  2488. .DB "2023.07.23"7 o/ M' L9 m. ]  e( I8 e

  2489. / \& [' j" Y2 g( ~/ ^; Q$ a4 {
  2490. ;==================================================4 W4 a* s) K; I9 n0 z
  2491. Music_Collection_Name               ;专辑名间接索引
    8 e% S/ A- L2 d9 w2 u3 S. H
  2492. .DW Music_Collection_Name_00& B% r" J( g$ ?& q2 b6 R, B: B) p4 C
  2493. .DW Music_Collection_Name_01
      t$ A- B2 Y5 |3 v( r& R# E
  2494. .DW Music_Collection_Name_02
    5 e$ W. M6 u1 q$ L' R! F
  2495. .DW Music_Collection_Name_03# B+ q' ~% S" P7 U/ |5 H  d
  2496. .DW Music_Collection_Name_04: `  _5 j* u# b( |  X1 U
  2497. .DW Music_Collection_Name_05) I: ^3 i" ^' F( W
  2498. .DW Music_Collection_Name_06
    : t7 e4 |6 {' K# c; a% }
  2499. .DW Music_Collection_Name_07& `& T0 K  m: a+ r* ]1 q
  2500. .DW Music_Collection_Name_08$ Y$ u+ x; ~0 q* {" J  U( L1 s' N
  2501. .DW Music_Collection_Name_09" E9 L* w) P$ q1 n8 j8 p" j+ `
  2502. .DW Music_Collection_Name_10( F; T' F) b( a) @9 h2 b! U
  2503. .DW Music_Collection_Name_11* ]1 Q; |. J, h% C) L' d

  2504. ; l2 U( M, M+ H5 k$ z" r
  2505. ;==================================================" r7 f9 e4 I& t" Q* k
  2506. Music_Collection_Name_00            ;专辑名文本数据' f- ~. U+ y1 d/ M
  2507. .DB 11,"1.RAF WORLD"
    3 r5 b/ o- w4 h: {& |9 q* g  g( S
  2508. Music_Collection_Name_01
    ' T6 b# j# W, |- a
  2509. .DB 15,"2.FINAL MISSION"% q" w+ l5 @% Q4 c5 H% a: {
  2510. Music_Collection_Name_02
    8 Q% \7 ]9 l4 j5 S2 f( J: s
  2511. .DB 06,"3.KAGE"
    * X# L5 b* W- K3 D4 d4 ^
  2512. Music_Collection_Name_03
    ( s% C0 ?- c8 P. b/ Q
  2513. .DB 16,"4.DOUBLE DRAGON"
    " m' P* o$ B- T' R, ]) a0 \
  2514. Music_Collection_Name_049 ?0 @+ W! O+ k
  2515. .DB 17,"5.DOUBLE DRAGON 2": R3 \7 O+ x, L, ~6 m' y0 v
  2516. Music_Collection_Name_05; e; ~0 e: ?/ f$ B6 Q5 F
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    - f6 e- a6 g2 X8 G
  2518. Music_Collection_Name_06" {6 J. f1 Y; L
  2519. .DB 09,"7.ROCKMAN"
    - F8 f: q3 }; R8 j
  2520. Music_Collection_Name_07
    + }* J" C7 m9 b; k1 _5 I4 f
  2521. .DB 12,"8.ROCKMAN 2"
    4 L0 ^+ E/ {+ d8 p
  2522. Music_Collection_Name_08
    2 w$ m1 F/ @7 C7 l1 ], C
  2523. .DB 12,"9.ROCKMAN 3"
    / t0 P' B2 w- y% J% \* t# s# X
  2524. Music_Collection_Name_09
    5 A6 j& K' Q  C; [/ L
  2525. .DB 12,"10.ROCKMAN 4"& V1 j4 }! S- W" h! @3 g$ G
  2526. Music_Collection_Name_10- \0 N0 f8 G) M
  2527. .DB 12,"11.ROCKMAN 5"
    3 j- z. G' D# H( D# [- N
  2528. Music_Collection_Name_11
    ! j, r0 c$ x4 u8 X5 `  B4 x1 P
  2529. .DB 12,"12.ROCKMAN 6"$ H/ G# j* K' Y6 \+ @- N, @- a- F

  2530. 3 d) s8 E  Y# c$ r& z/ r6 z' W: T
  2531. ;==================================================  v: o4 F6 c5 W9 w
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    0 T  F! I8 u- t# F  z
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    7 U0 w7 u/ R- o, m

  2534. # d% d& X: [2 ]$ F* Y, a+ |# b/ q
  2535. ;==================================================
    5 N( `% a- x7 u- p6 L6 {2 N4 T* p5 Q
  2536. Item_Pos_Data                         ;光标箭头位置
    . k, |1 h+ }3 T% Z0 f3 Z5 u: K
  2537. .WORD ITEM_SHOW_POS# O# ?+ g3 F! ^- d$ A1 v0 u, H$ Q
  2538. .WORD ITEM_SHOW_POS + $00403 y2 k0 Q& N! l6 ~5 w8 w- k% e
  2539. .WORD ITEM_SHOW_POS + $0080
    % P0 j9 D  p: y* F
  2540. .WORD ITEM_SHOW_POS + $00C0
    . J4 j. V$ v5 Q$ O0 k1 X
  2541. .WORD ITEM_SHOW_POS + $0100* T: d! \4 s* _1 }" r
  2542. .WORD ITEM_SHOW_POS + $0140" ]- V7 \9 f* A, ]

  2543. 2 I5 w/ ^' b& Q5 X: |2 Z0 _
  2544. ;==================================================
    $ t4 N& V/ ]! t5 I- s0 B' L( e) t
  2545. Sound_Init_Port                 ;音乐初始化入口地址: z* y7 l6 {' a3 F% g$ B
  2546. .DW $BFC8# B7 }% ]5 `6 a0 T" G6 L$ M
  2547. .DW $D7F0
    " \: {# D- u+ n: ^9 ]* Z# V
  2548. .DW $9FC0
    6 T( a. u; _$ X8 w) o
  2549. .DW $BF705 A& |) l% b6 f# Q7 K
  2550. .DW $8003! U  ?$ d! X+ A
  2551. .DW $BF305 S: E4 A3 }1 [4 b
  2552. .DW $9003
    9 T7 M% l. H2 W# h. [& a" b+ \
  2553. .DW $8003
    4 Y' ?- l. ~, t: f
  2554. .DW $8003& B& l0 L! B# @& V9 f+ N
  2555. .DW $8003
    " n) F: q1 z# ~( v/ x
  2556. .DW $8003+ Q3 u7 l/ i9 Z5 E
  2557. .DW $80038 O# N+ W8 t$ E) k9 B) @( b
  2558. ' |$ \" y& z7 \% ]9 O
  2559. ;==================================================
    2 s( {8 N: g2 I: p. F( N
  2560. Sound_Play_Port                   ;音乐播放入口地址
    9 i/ ~9 I6 V( ?7 A" p
  2561. .DW $80005 O7 [1 P7 \9 Z, x( h2 ?
  2562. .DW $8001
    ; q( e* c6 P9 I$ I
  2563. .DW $A000
    8 i. ?# M* b& d! X$ K1 r
  2564. .DW $8003
    ) v# E) @9 e; ^2 c
  2565. .DW $8000( l9 T/ }* ], S. L/ r
  2566. .DW $8003  v0 b* w! A6 F$ B: _6 m) E
  2567. .DW $9000
    2 T" P, S4 Q4 M$ P6 V
  2568. .DW $8000
    7 ~6 O3 j/ d# u3 M
  2569. .DW $8000
    ! I" S, e$ g( I" b  M' A8 \# O
  2570. .DW $8000
    $ C) ~. O6 h8 Q; g
  2571. .DW $8000
    0 [( U0 @6 ^( z9 c8 b
  2572. .DW $8000
    / L) {; d6 Z  T3 N! M' g
  2573. 0 @2 @7 v' S. [2 g
  2574. ;==================================================9 g- n- r1 [' y8 g: r7 j
  2575. Sound_Reset_Port                  ;音乐重置入口地址9 P$ j5 A2 K9 W; I2 @4 V& T* G) O
  2576. .DW $0000) U7 Z+ w' |9 ]4 c  C/ f; P
  2577. .DW $0000
    ! S5 M# r/ [. k6 d& _% \9 `
  2578. .DW $0000
    ) {5 r: e3 ~/ q/ e
  2579. .DW $0000
    # ], L5 V8 w* i- t5 K! x4 d
  2580. .DW $0000# O; j/ h! ?3 }
  2581. .DW $0000; k6 h2 I3 f0 ]4 L+ X
  2582. .DW $0000# L8 p. A0 X4 O% K
  2583. .DW $0000. _3 B9 y. C' W# S5 u; A0 a, W
  2584. .DW $0000
    * f" T9 _0 n* v# Q( @0 X1 v
  2585. .DW $0000
    7 \- h. Q* V  _: U" v! [
  2586. .DW $0000$ z; k6 m0 x5 u) @
  2587. .DW $0000! ?& C9 M: c/ ^: O0 ~5 ]
  2588. ! t! m; h+ R- S; n, T
  2589. ;==================================================
    " }. [8 }1 G3 {  N
  2590. Sound_Total_Port                          ;曲目总数$ X: Y# Q3 N5 |2 Z$ o8 r& C
  2591. .DB 38
    3 E9 U- {7 |+ J- r0 s& }: M
  2592. .DB 339 J4 t! Y) H+ ^1 h% K+ B+ t
  2593. .DB 498 Y  w! v, O' M
  2594. .DB 41
    * x% f5 N7 I) U. K4 k0 o
  2595. .DB 83
    % P* ]0 F  P7 N3 u) V, t
  2596. .DB 70$ h& Q$ Y  p* }8 e7 b
  2597. .DB 50
      N! a' y; V; L  u' h) K
  2598. .DB 678 i' `+ o! X8 E5 H% `, F
  2599. .DB 57" r4 j, U' @) \" |) p+ `
  2600. .DB 719 G0 E( z% j# Z* q
  2601. .DB 76
    ( [3 _5 @+ B5 w# C
  2602. .DB 102
    ( k7 K4 r3 X7 }0 d

  2603. # m* M8 e0 l  |6 M; R3 M/ y. Y
  2604. ;==================================================! ^8 B" p$ @1 g5 F
  2605. Sound_Start_Port                      ;起始播放曲目
    ; Q6 O' \$ n) r) p8 [( q# t
  2606. .DB 00
    / g/ `% M5 }$ I1 p3 E' f: `
  2607. .DB 00
    - L" J* v. a8 }
  2608. .DB 00
    ( G, K& E' v0 b6 o! D, g9 |9 x
  2609. .DB 00" g0 f" D# `/ ]# j1 y$ X, y2 `" \* h
  2610. .DB 00
    ( V( g  \! N; _4 s8 t
  2611. .DB 00- p+ X& g# g" m6 w4 C2 |
  2612. .DB 00  e6 t% Y1 C" Q5 M
  2613. .DB 00
    ( E1 z& S. ?; _4 x3 x# m! x
  2614. .DB 00
    . X5 X, J) v) G/ R& @: K' f8 }
  2615. .DB 00
    - R2 w- R$ C0 e1 @! o  A% O
  2616. .DB 00
    : c7 B) Y" v8 X" _
  2617. .DB 007 Z5 X( c: V8 g4 z& h2 Y9 ]7 x
  2618. 5 M6 J1 k$ v6 O5 C3 `3 q* ?
  2619. ;==================================================
    ( [( C3 E7 i* t$ u6 f4 Q  [
  2620. Sound_Bank_8000                      ;专辑bank_8000
    . w0 s: \) g" l+ a8 S  {
  2621. .DB $108 L3 Q% Z: ^3 I( _2 G6 [
  2622. .DB $12
    . j& u  U3 Z8 S5 u4 d; Q! `
  2623. .DB $14$ U6 G. J- [) Q7 R9 w; }( F
  2624. .DB $16
    % P; b; M2 _5 Y
  2625. .DB $18- z0 @  j4 z  M6 _5 [
  2626. .DB $1A
    4 @0 ~  a, ^7 a' d7 g- M
  2627. 5 l& U  p+ h6 M% s- k8 V
  2628. .DB $00
    6 `& {" {5 R) d$ |
  2629. .DB $02
    / L( D, g% e' a* s# E7 u0 x) E+ U
  2630. .DB $0D
    9 J0 s3 v. w  J# ^  E3 z
  2631. .DB $04# }/ B& w* W/ Y& v3 \) T
  2632. .DB $07
    7 |, n0 i' H/ P) o0 C, ]# a
  2633. .DB $0A. `. s5 \8 n+ }+ m0 @
  2634. % n1 e7 u" j8 r" w9 }
  2635.   U* c& S4 Y  o2 d5 I( U: l- t/ `
  2636. ;==================================================/ Q1 _: u7 _4 ~
  2637. Sound_Bank_A000                      ;专辑bank_A000# D7 ?3 z6 ]. W& t% s
  2638. .DB $11
    ) x  z) c4 q! D$ U. c9 n9 j
  2639. .DB $13
    % V0 D- E9 W( ]' N
  2640. .DB $15
    / O+ p* A7 |0 A
  2641. .DB $17/ n4 o( ?3 O: H7 G0 x9 w8 K
  2642. .DB $19& z! X2 q4 S: U8 ^# v5 T' T
  2643. .DB $1B
    7 g% W, S, `* E# q% Z

  2644.   ~* i/ q8 O( P/ B( s+ Y
  2645. .DB $01
    6 |2 `4 D* ]8 d% e+ g, x. I* ^
  2646. .DB $03& u2 W: M' y1 O# }3 g2 X; J( F
  2647. .DB $0E
    0 w( a3 P+ C3 {/ I/ S& Z2 a
  2648. .DB $053 p  R. D5 f+ ^& E
  2649. .DB $08
    . h( [/ Y$ ?. E0 E+ I* w
  2650. .DB $0B
    ) K2 x3 T$ N% o" v
  2651. ) O& C6 Y! d+ N4 ^+ P; F

  2652. 9 [8 F+ q) l2 u* o% H+ V: i/ H
  2653. ;==================================================
    * H. l5 d% X& _7 [& Y  I1 K6 O
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    % L" _0 q7 }  J2 J7 Y$ {
  2655. .ORG RESET_ADDR( ]( C' N- T2 n5 R

  2656. . _4 o8 Q! c2 [+ d8 q
  2657. ;==================================================
    ( C# G6 c, ]6 `" Z4 u" l
  2658. Switch_Bank_8000;切换bank到8000-9FFF6 \9 f* Z: z+ v; P+ C7 D& @
  2659. PHA
    ) a, j- D' W- Z$ y, X& p; O( q* S7 T
  2660. LDA #$06  w5 D% z2 L* h% @: }* s1 j  P
  2661. STA MMC3_BANK_CTRL
    $ J, m! O; _% T8 M4 c" l$ @
  2662. PLA
    ; B7 \7 c% a% s8 y
  2663. STA MMC3_BANK_DATA
    + P# u. P6 @' ^6 f: X+ V; \
  2664. RTS
    ( d) L+ a! [" T( F% R% p4 N
  2665. " r: g- P. E7 b
  2666. ;==================================================0 Q& D4 ~9 M+ D" P3 I
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    " d% V. G5 l2 ^  ?/ [& w
  2668. PHA6 P0 ]' {: b+ }- w; i  h! t
  2669. LDA #$07$ n: c  w9 I2 G# y- b1 g
  2670. STA MMC3_BANK_CTRL( D, J& z$ V- I8 D9 t
  2671. PLA
    / J' t2 n7 l: ~3 c/ N
  2672. STA MMC3_BANK_DATA+ o' D7 j" C  ^- t1 G/ f  [
  2673. RTS
    % Y  A) P% Q2 N( a" ]0 ~& y' B8 m

  2674. # s; }( {6 I1 K9 F+ o5 ]. p
  2675. ;==================================================
    , R1 {7 O! p  v) n8 |# B
  2676. Switch_Main_Bank;切到主程序bank
    / [" q( H9 D  a2 d2 b
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK$ ^# v7 z  G4 n) O
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    $ [$ k3 z0 p1 A
  2679. RTS  k2 v" B9 D5 H: e! Q1 h
  2680. ; a: F( i) i4 U/ i/ U/ P
  2681. ;==================================================
    8 F0 o0 y9 e5 E: ?3 e3 D
  2682. Sound_Reset;音乐重设(如果有的话)) g. Z" s" _, b* L& k, M  x+ L
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    : ^" \/ g0 |/ [" F( R3 f
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    + a' H' g* |! t! ^6 K* m* g
  2685. JSR Switch_Main_Bank   ;切回主程序
    1 M5 c9 C2 U" ^1 ~0 a
  2686. RTS; d4 ~9 Z" j& `

  2687. 2 l8 q4 ]+ {- I: z% a
  2688. ;==================================================. u& e( _1 A! l5 {# p
  2689. Switch_Music_Bank;切换音乐bank$ _+ s% l" F9 c6 [
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    5 ~/ U- b0 j0 T% N
  2691. LDA <Music_Bank_8000
    5 y9 ^3 b+ {8 x5 [- y% Z0 _4 o
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank7 K% ^2 P! _; a* `- V  x
  2693. LDA <Music_Bank_A000' Z( _0 ~5 P) Q* @0 f
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    7 s6 t6 V: ?. n% D: y
  2695. RTS
    . I& u6 Z! U% f" ~+ D( I- K

  2696. 0 I# a" y- r( ~- g( U
  2697. ;==================================================
    $ a) s- ^4 t( b+ T3 ^
  2698. Sound_Init;音乐初始化* M0 X1 M1 Z9 G" y- z
  2699. PHA
      k  y* Q! b. C! r
  2700. JSR Switch_Music_Bank  ;切换到音乐bank; h9 w; n1 c. Z% \% p
  2701. PLA
    4 U+ E: C/ C( W6 B( t. q" u
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    ; g3 W1 f6 v4 l5 A6 C
  2703. JSR Switch_Main_Bank   ;切回主程序' \' e; J5 K3 m5 p7 m/ e5 D
  2704. RTS
    1 d( H; m5 w. n' A
  2705. # T8 U1 \) x7 m6 {. X
  2706. ;==================================================+ v# G0 M1 H! G/ f6 P
  2707. Sound_Play;音乐播放8 y9 b8 S! e% F
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    ; U+ L( w5 j  P( X. G
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    , [+ c6 C! `* D3 r% i! X* J7 x
  2710. JSR Switch_Main_Bank   ;切回主程序
    3 A* g0 w2 }8 f$ w1 u
  2711. RTS
    , ~) a! @' u6 |. s" ]

  2712. # k- s& Z! x" h1 {& L3 @
  2713. ;==================================================- }5 d9 m$ k3 m
  2714. MainLoop;死循环  _2 O) w7 X! ?$ x* h
  2715. JMP MainLoop* [7 x8 c; Q3 c' P! U$ L4 t" \4 R1 N
  2716. & D  _: T6 v! S
  2717. IRQ_SUBPROCESS_JMP = 0
    . \% {5 b$ D  f7 O9 a  ?5 h

  2718. 8 E& x9 u" M9 U  f# z
  2719. .IF IRQ_SUBPROCESS_JMP
    $ v, p' \0 V$ y/ q. c
  2720. ;==================================================2 x$ j1 u. D$ m. ]: {* O
  2721. IRQ_Process_0;IRQ处理过程0
    / g( O) L. z; c

  2722. , m+ g- c, o; G, h0 m
  2723. ;15条扫描线后触发IRQ
    3 s* ~, c5 R. `& K  _
  2724. LDA #15! |1 c( s3 H/ t
  2725. STA MMC3_IRQ_LATCH# H4 H' z, z/ T  @& U

  2726. 2 u' ?2 q+ ~& ^
  2727. ;设置屏幕滚动
    # J  m2 R/ H. z( S
  2728. LDA <Scroll_H
    * \3 L- J* s3 s5 x
  2729. STA PPU_SCROLL$ t( d/ C+ K# v' U6 m8 d% _, z
  2730. STA PPU_SCROLL
    5 P& ?$ @0 ~1 Q1 ?1 A1 y

  2731. 5 V; g8 k' f; I8 L" S* g1 X- p
  2732. IRQ_Process_0_End
    % O6 [1 M0 q6 G* s, f3 s; x5 D
  2733. INC <IRQ_Process_Index3 R& b0 g  R/ d/ Z5 r* z/ ~  p
  2734. JMP IrqProgramEnd
    8 D7 V4 ~) k7 Q* V) C

  2735. . t' K& g: u" T& I/ v4 A- |
  2736. ;==================================================
    ! [7 n* C9 d$ z% V5 S
  2737. IRQ_Process_1;IRQ处理过程1
    ! H' g) K. B( v" H4 H; t4 [

  2738. 7 h. b8 T' F8 I! X# ^7 D
  2739. LDA #55
      N" U/ l; c" N/ H
  2740. STA MMC3_IRQ_LATCH% A4 q. T6 t7 j& V% c4 {
  2741. : J; {2 N( j/ A5 Z+ M2 Y0 l- L' g" b
  2742. ;设置屏幕滚动& c" e$ v5 P, N* @% d/ B
  2743. LDA #$00$ T- B+ i3 d0 i1 T. y% ~
  2744. STA PPU_SCROLL1 v) z+ d- F: I* a, i  s
  2745. STA PPU_SCROLL
    3 w9 p7 R  r  {. P& M( k$ V$ p
  2746. + h% d% _: F- D2 F( \$ I2 a
  2747. INC <IRQ_Process_Index
    7 e/ h& a0 t* _1 L! Y5 Y6 ~
  2748. JMP IrqProgramEnd
    ; B5 ^7 E1 N+ n4 p6 X
  2749. 2 k; E6 W  r  E% U/ v5 h, d
  2750. ;==================================================
    , J; d  o/ o  o6 J8 h: [6 J# l+ K
  2751. IRQ_Process_2;IRQ处理过程2
    - |. H- A. {# K. w  P/ I+ L

  2752. ' K+ B) [0 t  @0 r
  2753. LDA #15% ~) o+ J& n( Y, _9 [* b
  2754. STA MMC3_IRQ_LATCH
    # `& H: ?" S8 r  N5 F
  2755. 8 |% C5 d# ]# D8 t- A
  2756. ;设置屏幕滚动! x) v3 @5 f0 Z9 K% G: ~
  2757. LDA #$005 P: D! S) `8 i2 E. Y! p; f# h
  2758. SEC. D+ `, w1 b1 y2 n2 H
  2759. SBC <Scroll_H, i3 R- V( s; T8 Q" b+ y
  2760. STA PPU_SCROLL( N1 P; O4 Z( @, }* A
  2761. STA PPU_SCROLL
    8 ~1 }# o6 f2 D6 W: y5 \4 H) ]! p# V
  2762. # Z$ Q# l; f( L% q6 ~+ g
  2763. INC <IRQ_Process_Index
    / f$ |# W# t: l" S7 `9 r
  2764. JMP IrqProgramEnd
    $ m6 z( z2 V8 R

  2765. 3 e( Q% E# |2 _5 |, B7 H
  2766. ;==================================================
    " e3 c/ e: R8 \, d( z' U+ O
  2767. IRQ_Process_3;IRQ处理过程3( O0 V' d: G! x% ^7 w% f( J

  2768. 8 E/ \. ~1 x, R: g
  2769. ;设置屏幕滚动1 @0 |) W, I) e* F9 G
  2770. LDA <Scroll_H7 |. y) M1 m( S' N/ n% b7 s. `
  2771. STA PPU_SCROLL5 x4 E6 j% @, |% I) P3 F: X* r
  2772. STA PPU_SCROLL
    4 U# s( j9 U5 Y
  2773. ' x6 I( G2 h' O  i" X
  2774. ;禁用IRQ
    # R1 k6 ]/ S9 E: z' b
  2775. STA MMC3_IRQ_DISABLE
    - t1 i, [1 L& J7 B1 [, Z
  2776. JMP IrqProgramEnd
    , W/ q3 m0 M! P% }! s! _

  2777. ' Y2 L9 d' D. `% j7 [4 ~
  2778. IrqProcessAddr
    : K1 H+ u0 f, v
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
      {% C5 a4 a5 ?  W& F  ~

  2780. / V1 V) ^  s" R) X
  2781. .ENDIF
    ) ]/ U8 u* s) |$ q4 w
  2782. / r. m& ]( e* A' @+ z0 _2 p* ^* @8 w9 |
  2783. ;==================================================* B* c& W9 n  d8 M5 ], E
  2784. ;IRQ滚动模式常量
    & W: L/ }2 X& e
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    8 R2 ^7 V# p) h
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    . `/ X  d/ |; B7 ?; M' W* a
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    + @& z& G+ v; @, s8 Q3 s

  2788. 1 C4 y, m/ c& r
  2789. ;IRQ扫描线数据
    ( x" A: D1 P3 g/ r1 p7 M
  2790. IRQ_Scanline_Data3 g$ [. D% p6 F& u
  2791. .DB 8& m! ?3 R- R. z- E9 ?1 X  R7 C
  2792. .DB 54" L. [) ~9 K7 A$ }' v% @
  2793. .DB 8
    2 O5 U$ {- P5 ~% r
  2794. .DB 00 ;关闭IRQ: Q9 W; w. c0 ^) }" i) M5 {
  2795. 4 ~0 c9 @" C) I) {* Q
  2796. ;IRQ滚动控制模式
    4 ?( s1 b# M% f2 h, ~; Z& w
  2797. IRQ_Scanline_Mode
    0 }5 |0 [. I  g) @0 f1 C
  2798. .DB IRQ_SCROLL_MODE_ZERO
    ' v, Z+ `/ X! s
  2799. .DB IRQ_SCROLL_MODE_ZERO- P3 k$ `( b! l7 v
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    0 _9 P" x' Q! N& {! C/ i
  2801. .DB IRQ_SCROLL_MODE_LEFT
    ) I. Y: o# Y1 g
  2802. ! n* X+ U! p5 i: u
  2803. ;==================================================' ]7 o( A7 `- g% f  l. v& v
  2804. ;IRQ处理5 o) N# Y3 O. t
  2805. IRQ_Process
    , x' B" a% X" V) s% H
  2806. LDX <IRQ_Process_Index
    3 J# v: l8 V3 f9 n: ^  Q1 w* e, Z% D
  2807. LDA IRQ_Scanline_Data,X
    4 @8 m) g6 C7 r  C9 Q- c2 c4 l
  2808. BNE IRQ_Process_Latch0 X/ H2 l) K  J
  2809. IRQ_Process_Disable;禁用IRQ5 N" S- K* G/ M8 C
  2810. STA MMC3_IRQ_DISABLE" p; S! z) K8 c6 L; l
  2811. STA IRQ_Process_Index( c  P/ x, u* \
  2812. BEQ IRQ_Process_Scroll
    ; o* m2 |' }$ Z
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    4 W) G2 \. R3 F) j; [' R: j
  2814. STA MMC3_IRQ_LATCH
    ; M* D$ R. w9 u: c. X  V* Z0 M
  2815. INC <IRQ_Process_Index( E6 M0 F+ Y, h; i5 b
  2816. IRQ_Process_Scroll;IRQ滚动控制* u4 d4 Y& J& F7 B
  2817. LDA IRQ_Scanline_Mode,X
    0 R" u  r1 [0 R
  2818. CMP #IRQ_SCROLL_MODE_LEFT: `- _8 y' k$ b) X# S1 k( X0 y
  2819. BEQ IRQ_Process_Scroll_Left+ Q; o2 ]" I) `! i4 U# _6 ~: }% F
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    0 @- D2 R* E! [& I4 [9 S7 {  G
  2821. BEQ IRQ_Process_Scroll_Right6 x. C7 p! S* y+ K
  2822. IRQ_Process_Scroll_Zero;不滚动
    7 ^- T# T5 y7 Y' g; e; X, `
  2823. LDA #$00( `( ^/ @: X& A8 \! H
  2824. STA PPU_SCROLL
    ' @4 o0 l* s! l( v
  2825. STA PPU_SCROLL
    5 y6 d0 C! R$ Y/ f0 Z
  2826. RTS
    6 {6 Q! `1 d2 w. A. Y
  2827. IRQ_Process_Scroll_Left;向左滚动9 r/ K+ X8 ]4 a6 V
  2828. LDA <Scroll_H, b3 i/ P3 z5 d  ?' O2 |
  2829. STA PPU_SCROLL* D' y" o; W( w
  2830. STA PPU_SCROLL
    / A8 @' d( x! T$ A" G
  2831. RTS- ^0 l9 {3 J. z* G/ H4 m9 ^
  2832. IRQ_Process_Scroll_Right;向右滚动, F) B9 O3 N  v0 L0 a- p
  2833. LDA #$00; v6 E% F5 Y5 J3 O; K5 G8 p7 P# ?
  2834. SEC! l& }, p0 T/ S: a: x, l7 E
  2835. SBC <Scroll_H5 b  N9 Z. Q( Q& Y
  2836. STA PPU_SCROLL
    , D5 |5 i& y$ V
  2837. STA PPU_SCROLL
    / ^! M! Y$ _- c3 O* V
  2838. RTS
    0 J! \0 O, y# @# p7 \. M4 K1 u

  2839. , G6 c8 B. C4 W8 H( [# c; U* |7 C. b
  2840. ;==================================================
    ! c' t  K" y; X" e
  2841. NmiProgram;Nmi中断处理- i& U# I5 f. h* _7 i
  2842. PHA, u; p# A% M; v  @1 Z
  2843. TXA
    9 t) s  D: ]9 v3 B6 E1 s* S3 x
  2844. PHA2 c: g- x9 W0 d, n7 u; B8 Q
  2845. TYA
    6 @$ _. ^% Z  R$ ?  n/ S
  2846. PHA! P: e5 [: o: E: \7 v) }/ T
  2847. ; g4 y5 m0 g+ D# @3 ~* s7 l
  2848. ;读取清除Vblank标志, 防止重复进入1 w7 n0 c1 F& g& z4 N9 T& X; u
  2849. BIT PPU_STATUS
    0 x( {4 B7 ~& c) h
  2850. 0 }6 o: d+ O/ |8 s- r* Z9 u
  2851. ;切换主程序bank
    7 b' h: m5 ^, w) n2 B0 G8 S5 C/ u
  2852. JSR Switch_Main_Bank
    3 B3 Z% \2 r. c

  2853. 6 Y0 U4 s0 |+ z2 K
  2854. ;Nmi处理' M2 i4 p2 }4 i9 C9 f8 {6 `
  2855. JSR NmiProcess4 q4 ^$ |  q8 k& [% C# N$ L

  2856. ) D1 D& ~4 Y: ~& n
  2857. Nmi_Proc_End
    8 X( l2 @9 k( k8 O; }# U* i( z3 H
  2858. PLA; c( f9 e/ r3 Q' Z
  2859. TAY  [7 C# N6 G6 T9 Z1 v/ {
  2860. PLA2 M2 Q5 ~# o" i2 D8 q/ q5 H
  2861. TAX, B3 f9 ~0 ~9 ~2 t3 l+ G. O
  2862. PLA  P( e" Z2 q: {
  2863. RTI
    8 b' ]& q$ F( [& k0 x2 x" ~9 T" a7 [

  2864. / [+ {# i+ z6 o& Y3 Z
  2865. ;==================================================) b! u3 u$ E  p( I6 V
  2866. ResetProgram;重置中断处理4 [4 e6 q1 K% p1 D: V, W
  2867. SEI2 |/ z  X# |/ T; \& w
  2868. CLD; C$ [* d3 j# T( v. i
  2869. LDA #$005 j/ u7 w. T* I, U
  2870. STA PPU_CTRL& Q; q. J/ m3 X: h' B
  2871. STA PPU_MASK+ Q$ \# p# ]4 L' C) W. f! `

  2872. , I8 P8 {4 X- f% j% }+ {
  2873. ;切换主程序bank
    8 V" y/ S3 W  U- `8 I9 w
  2874. JSR Switch_Main_Bank
    / W+ O; t6 w3 F+ W7 H
  2875. 8 |* |/ U, P5 B% g" l' ~5 U9 `3 H
  2876. ;程序处理开始5 G' z; ?) M& G
  2877. JMP ProgramBegin
    & L7 G* [! a- a6 I$ W

  2878. % N# t$ E; C. U4 N- y" B6 u
  2879. ;==================================================
    . |; @" L8 {) i! |
  2880. IrqProgram;Irq中断处理
    6 i. Y1 w; N: \) L6 r0 Z
  2881. PHA
    ' U4 L  ^1 s4 j! }4 y
  2882. TXA# }+ F; w. F3 }9 k
  2883. PHA4 A: s" K$ P2 N+ d. G9 [9 F
  2884. TYA. U/ N4 `) ]# n( ]+ ^
  2885. PHA* N3 Y0 |( y) {/ d/ y
  2886. 4 Y. N% _8 _. M9 j* m% o
  2887. ;关闭IRQ
    . e. T( D. p4 a- q9 P
  2888. STA MMC3_IRQ_DISABLE
    * F1 v2 D! R) {+ M% q( m5 n

  2889. ) o  }) ]% O2 }( j
  2890. ;允许下个IRQ触发" B; L6 b/ \  T5 f% z: J: X8 q
  2891. STA MMC3_IRQ_ENABLE* a' e, ~4 V- {% v. v9 P
  2892. 0 {* A# {+ U; b. ]8 }, ]
  2893. .IF IRQ_SUBPROCESS_JMP# t+ p( I$ G1 {9 N% J

  2894. 4 c2 K% ?  z- w1 o) O9 w
  2895. ;执行IRQ过程1 S! z4 R4 I1 N
  2896. LDA <Data_L
    ! w2 L; Q- {, ^$ B5 t
  2897. PHA( ?5 V% y6 O6 u) l5 R* M: j
  2898. LDA <Data_H4 @% Y1 k6 f  e! V- b
  2899. PHA8 m' d9 U+ Y5 z" J* p* o- R
  2900. LDA <IRQ_Process_Index  w, q0 |+ ^5 `, \' ?
  2901. ASL A
    6 u$ s! p8 s; y% ^. B2 R8 R
  2902. TAY
    2 G: w8 z( l9 n  ]
  2903. LDA IrqProcessAddr,Y" V( `4 H2 B2 Z# Y1 u& i" e+ R
  2904. STA <Data_L; y* F3 y& W/ J1 t: J
  2905. INY4 H- k3 `  h8 j
  2906. LDA IrqProcessAddr,Y
    % a3 h  w; l$ r* N& {% Z
  2907. STA <Data_H
    ' V& N1 P. L4 [8 t# P; o9 u; h' y- ~) A
  2908. JMP [Data_L]
    / G1 ^- V+ P. E! W: T0 D4 C
  2909. 7 a+ N: F) n4 x  f
  2910. .ELSE
    . `8 o6 O; c/ B; L7 V! a
  2911. / ?: i8 U9 q6 j3 |/ ?% ^+ F1 {' |# @. g. b& }
  2912. JSR IRQ_Process5 W8 c. p! c) g/ Y

  2913. 8 m& w6 K! D9 Z# A
  2914. .ENDIF
    ! Y0 _5 ^5 I, e0 F4 n+ e& _

  2915. ! I( ]" _7 @& |2 E( ^0 K. U& T& \
  2916. IrqProgramEnd
    ( o$ o5 r4 F2 ^" y& Q
  2917. .IF IRQ_SUBPROCESS_JMP
    ' ?" p7 P7 N  K2 |7 t1 t! _
  2918. PLA
    : }) }/ Q  I, X4 s
  2919. STA <Data_H
    / L) z8 [4 g# R% y. {% P9 K
  2920. PLA' r: O7 |8 n# L6 F( T" j  M2 w8 v
  2921. STA <Data_L8 n9 @+ A  Z  ], N" I
  2922. .ENDIF) I5 V$ G# l1 r3 G$ o
  2923. PLA
    5 B! k0 j) d) d# ]( R! g3 m3 s4 }$ y
  2924. TAY
    7 @- F2 Y/ Q' U% e1 ~) K
  2925. PLA
    0 w, G( H) A8 b- B3 }0 _
  2926. TAX8 R) _: Z0 \: j1 U7 P$ S
  2927. PLA3 Q+ c& ~) `& M, L7 T
  2928. RTI0 n# Z! l. d; X# t0 F

  2929. ) t8 C  C5 _0 |3 G. J' L( V
  2930. .ORG $FFFA4 s1 N( J, l* r  A
  2931. .WORD NmiProgram
    0 K0 |7 V7 y! g2 {) w6 h
  2932. .WORD ResetProgram
    7 ^+ _% `; W8 Y
  2933. .WORD IrqProgram
    9 j  `. l9 S+ l" r) v
  2934. + K4 z0 F5 B) y& O% s* R
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    6 \9 {9 b# p9 Z5 T
  2936. .IF SOUND_BAR_SHOW_ENABLE* U/ M9 J# Y8 ~9 Q% z- K- y8 b; o0 \

  2937. 7 _5 T- c8 ^0 X1 l/ r/ d
  2938. .ORG $FE00
    2 D+ |" c& D1 e8 x' E  G2 V7 X
  2939. PHA. u' @" O& `$ M0 A, Q
  2940. STY $07BA$ L  w& {9 R0 g3 ?
  2941. LDA #$8D1 J( V: k5 X# I7 o' f8 z' v
  2942. STA $07BC
    ; n, ^5 ^* W6 `9 Y6 W! {& _0 A
  2943. TYA
    ' T4 s% K4 Q; a/ n
  2944. CLC
    - U4 n+ K8 A! n0 {8 n0 M
  2945. ADC #LOW(Sound_Bar)
    5 Z2 \9 S2 X" [) w1 J' L
  2946. STA $07BD
    . x$ m' c: `7 y4 Q$ b- \
  2947. LDA #HIGH(Sound_Bar)) y3 c$ T6 m& G; M
  2948. STA $07BE7 p8 L' ~6 ?" `: Y- \  q( T  V
  2949. LDA #$60) B( j5 v$ @3 m( x
  2950. STA $07BF: J6 O, u8 d; U, |  o7 s. V
  2951. PLA
    ' b% w$ A9 d' {) ^- t# V/ Z1 U
  2952. RTS& A, p2 |. ?8 ?# f8 r

  2953. ( f0 `# F2 z$ v! {% ^% M) L
  2954. .ORG $FE20
    - P2 e. h3 _  X. m) Y: m& G
  2955. STA $07BA; Q6 g1 ^7 f% {! C: J- I7 m
  2956. CLC/ D: ?! Q0 w8 R5 e
  2957. ADC #LOW(Sound_Bar)4 W" Z$ z$ F# s$ A- R) r
  2958. STA $07BD' d5 C: Y0 I6 P- ~' T' [
  2959. LDA #$8D
    * D" J3 z5 D+ }& R! A
  2960. STA $07BC: ^' c$ U; O" u: B, S2 V: d; \
  2961. LDA #HIGH(Sound_Bar)
    - A0 a; c' t+ H5 c- n, c. d1 o
  2962. STA $07BE! _& M# _: g' u/ x0 P! Q* [* B5 I
  2963. LDA #$609 u! Q' I2 b& Y. u* w6 Q
  2964. STA $07BF) W- g( h" J0 r4 `: u* W
  2965. RTS. Z. f/ c  I7 T
  2966. 3 Y! L: f9 P4 q4 g- C
  2967. .ORG $FE40
      U3 L4 i  x2 m
  2968. PHA
    , X* N/ ^* G: A
  2969. STY $07F1
    , S& a* G1 u3 a& ~
  2970. LDA #$8D
    ' H5 }8 n4 y5 q
  2971. STA $07F3* l, o2 N1 w6 {' O" _
  2972. TYA  `( z) t' A  |& e; r$ }/ H
  2973. CLC' C2 F& e$ a# n' k3 x1 b
  2974. ADC #LOW(Sound_Bar)
    4 I+ S# W* b0 p3 l" f2 Q
  2975. STA $07F4+ R8 {% X9 D1 o
  2976. LDA #HIGH(Sound_Bar)6 k' F7 f! ?0 i. N5 s, D. C6 _* w1 [# v
  2977. STA $07F5
    / x" @& f4 k; t- [) i) T
  2978. LDA #$60) ~; w6 C) e4 K* o! V2 V/ M( A5 T* l
  2979. STA $07F6
    7 w1 t" v0 Q" J# L9 a
  2980. PLA9 F  v, ?; A9 I% D( |4 L+ `
  2981. RTS( g/ a0 H/ B* Q
  2982. 4 {% T! H& ~5 W$ W: [
  2983. .ORG $FE60
    + ^1 h+ W$ M# W$ i- r; I' P$ ^% x
  2984. STA $07F1; D( H; y9 f- `  c5 B6 Q# r# V
  2985. CLC
    ' R; {7 t2 b( h1 \# E( O9 T
  2986. ADC #LOW(Sound_Bar)
    3 C4 b* N9 `' J: s8 r8 r
  2987. STA $07F4
    - J: ^7 L9 E. \* _  K) e2 r" s
  2988. LDA #$8D. l6 y. w2 Z. V" Y/ D( d; N
  2989. STA $07F3. F; I$ b, e' M( V, K
  2990. LDA #HIGH(Sound_Bar)  B/ }* D+ d# r! p0 [
  2991. STA $07F5
    4 y6 O# D! l2 ~, v; f7 G
  2992. LDA #$60
    0 l/ K+ {% |. K; o& l# ^, P
  2993. STA $07F64 W" E' _/ y" k1 x+ R8 i
  2994. RTS: b2 H) d/ x4 @+ e- {0 k8 x+ Z

  2995. " e, `" D& L4 ~) c! s- L1 J
  2996. .ORG $FF40
    3 I3 D3 e% B0 n/ B; d" Y, [( T3 M
  2997. STA $4000
    ( ~/ R; N0 c# I
  2998. STA Sound_Bar + $00- b: w. u" X$ v9 f/ ?6 @8 k
  2999. RTS$ j! `* O2 I  J$ [8 P1 [( L

  3000. ) }: W6 F- w. g. S
  3001. .ORG $FF48% [# d  C" H8 ]! g
  3002. STA $40043 u, }  A- a9 x# J9 D5 W, q3 ^
  3003. STA Sound_Bar + $040 w2 W* h- }% y4 S3 z2 w
  3004. RTS4 k4 A: F% C3 `1 w  C5 y& C
  3005. $ f  E6 d* h/ v: `# j/ i5 A
  3006. .ORG $FF50
    ! Y* T/ A! H4 A& T
  3007. STA $40086 B2 X. u% @2 A0 @; `# n
  3008. STA Sound_Bar + $085 W4 S2 K/ k; g$ ^3 d* q4 [
  3009. RTS
    4 U  f, V# p6 W+ x. B1 b
  3010. 7 F; ?( Y. ~+ T/ X+ |6 @$ o
  3011. .ORG $FF58
    % a5 \1 F" l# r. Z8 ]5 i
  3012. STA $400C
    2 r/ f1 A8 F$ [" ?
  3013. STA Sound_Bar + $0C
    4 g+ v6 I' Y2 G1 w- U+ F8 }
  3014. RTS6 b$ f+ W2 B; G8 _
  3015. ' F" ]" _% S- V" z
  3016. .ORG $FF60
    ( \5 ~9 S2 E# k
  3017. STX $40003 k$ B! q7 V/ t+ W, X5 V
  3018. STX Sound_Bar + $00- t' ]; {# b# _, f
  3019. RTS4 W, c0 e% Q3 V$ q- t( i! z& n
  3020. 2 k$ X# Q- m% @7 e0 i; }$ F+ O
  3021. .ORG $FF68# k6 k- E0 f: n, |8 p% p
  3022. STX $4004
    2 r) Q' d1 R5 v5 Q
  3023. STX Sound_Bar + $041 ?! @; v3 M% d  v5 s- e7 L9 h
  3024. RTS
    3 Z, u! {! k& V  }1 ?& T
  3025. * o9 |* E9 O; Q) O
  3026. .ORG $FF70
    $ Q+ D) ?" r. e
  3027. STX $4008
      j' K& \" K" _
  3028. STX Sound_Bar + $08
    * W* o; ]7 w" _$ f
  3029. RTS. J. X& X) t, m0 l

  3030. ! j* J/ t/ x  q6 m* e( \% M7 e
  3031. .ORG $FF78
    8 x, z9 y+ q& n* h' A1 i$ g- ]% w7 l
  3032. STX $400C
    8 H% m( \$ t7 z9 c- d: G
  3033. STX Sound_Bar + $0C: Q9 s" R7 P# y+ {; @
  3034. RTS
    1 D) R& Y3 @& R. R, H

  3035. ' C  m  _$ h% t# h7 @7 p% l
  3036. .ORG $FF80
    3 G% D; U) g5 C7 U# H* J7 X
  3037. STY $4000
    5 i7 i& G3 A" H; U# i
  3038. STY Sound_Bar + $00
    , _: X6 ^, T5 o9 N( ~  {
  3039. RTS( X& G* L0 [0 f  z  l

  3040. 4 @0 y! D. X8 p- G6 @/ N/ c
  3041. .ORG $FF88
    # n/ N- B7 U- U+ @
  3042. STY $40041 v- _/ _6 G( D* y: C, p1 J$ |
  3043. STY Sound_Bar + $04
    " |9 K5 @: H2 {( @; H. M
  3044. RTS/ p* [8 D1 ]6 Z' f' U

  3045. % ]* a6 p0 O8 M6 h! a' j9 J2 j
  3046. .ORG $FF90  h  `9 \' G9 i& I. W' p1 ^
  3047. STY $40082 p( i% d$ c# l1 S! F% ^+ X0 y
  3048. STY Sound_Bar + $08" `! Y7 O4 W0 H& }1 J" |
  3049. RTS
    / A8 y. b6 _- T7 j% W
  3050. , a6 j/ U8 A, X3 |' ]4 p+ |
  3051. .ORG $FF985 T& N& P9 w+ C7 |5 A8 p
  3052. STY $400C
    8 c3 c# B* e9 y: y/ [
  3053. STY Sound_Bar + $0C
    / C3 _* w7 B& u- w
  3054. RTS* w/ a# f6 O% l! B/ d' B

  3055. $ X: ?# e3 Q: I
  3056. .ORG $FFA0
    % h& j: d$ h; k9 P; B
  3057. STA $4000,X. W  R: |. W9 a, H7 e
  3058. STA Sound_Bar + $00,X
    ) _. T0 I3 u3 q* k
  3059. RTS
    6 m! L- C3 {, g7 J
  3060. 3 m9 B% C8 C+ u  d5 A
  3061. .ORG $FFA8) ?8 k/ B+ T% `( f2 i# A* Q
  3062. STA $4000,Y  s+ I! O) P* N0 v$ n
  3063. STA Sound_Bar + $00,Y
    ! H- I2 U: u9 K5 C
  3064. RTS- ]6 B8 z* S0 e9 ^8 b
  3065. # O5 D9 o2 j& L8 d- E* F4 {5 H
  3066. .ORG $FFB0* T: Q3 F* L3 \1 q/ f, d4 u
  3067. STA $4004,X, Q' ]) W& e/ l2 l
  3068. STA Sound_Bar + $04,X
    ; g% A- _! j" F8 ?- v
  3069. RTS
    6 x  y! J' ~' K
  3070. ) Z- h0 f9 q9 q$ X
  3071. .ORG $FFB8
    . ^5 C0 ?& Q! \7 m" X1 f7 u, A
  3072. STA $4004,Y
    ) Q. R. H% P! |5 _2 J# N- F
  3073. STA Sound_Bar + $04,Y
    & M9 c2 i/ Z7 l, I! _$ y/ M8 @! }
  3074. RTS
    & k* ?1 R; R8 @* e- n0 h7 |

  3075. 2 y( @/ e+ |0 B/ i3 F8 K
  3076. .ORG $FFC0
    , N& s* d/ E: x, \- h% q4 o1 R4 W1 m
  3077. STA $4008,X
    - I) U; l" j4 Z8 G4 c
  3078. STA Sound_Bar + $08,X
    - P' R: T( }- J- u6 T8 E6 B, {
  3079. RTS! e4 Q+ m) j. ?
  3080. & t/ {0 C# A. L5 L
  3081. .ORG $FFC8
    , V4 ?' o3 B$ k' T) J* j
  3082. STA $4008,Y6 m1 f$ s2 r" J6 M/ y+ ]
  3083. STA Sound_Bar + $08,Y
    ) `5 W  I, [' [% `& l  K! q
  3084. RTS, U* p6 _8 J5 S
  3085. 1 `; M; v  `# n8 f% n
  3086. .ORG $FFD0& y" ^3 r5 S3 X6 W2 q! I# J
  3087. STA $400C,X+ `, a" g! [/ C$ V+ G
  3088. STA Sound_Bar + $0C,X2 w( Z  o$ k2 d' ]* v; y; Z
  3089. RTS5 @2 ~" ~! a# \' [% ?. c# y2 _5 y

  3090. 7 \! u0 L* D9 Y. a6 Z
  3091. .ORG $FFD8
    , H( @& W8 L- I* n. \
  3092. STA $400C,Y7 i" A4 G( U  \! L
  3093. STA Sound_Bar + $0C,Y* M& C. {8 l+ v: K5 [
  3094. RTS/ U  T- f# q  f/ S6 ~/ @
  3095. 2 e, L$ r; G9 t/ I9 q9 @% a$ o" c
  3096. .ENDIF/ P! i4 R: c5 v* L0 [/ g
复制代码

- H% ~7 V" U; M& Q0 K4 Y$ \
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3115 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 07:14 , Processed in 1.156250 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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