EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 ; t4 W8 h/ a) q! ^* \7 G
2 h4 Y8 N8 a/ I  X8 b
[FC][音乐12 IN 1]
! G$ F( Y0 z- h5 x7 v- T1 q8 f- f时间: 2023.07.23
, J6 D& h: [- O. [# D作者: FlameCyclone8 `- O/ {1 }/ J- _  r' O! U+ G+ A

4 y9 d2 f  X+ t7 X! t5 |* y4 f5 S收录音乐内容:
/ ]2 R, X+ i, m/ {7 R8 g1.Raf世界& ~7 ^# k; t0 X! M- m8 {
2.最终任务( T& z8 G* K# x: l4 h
3.赤影战士8 E" Z  S' P: x% [* X! B2 q
4.双截龙9 ~9 `1 Y! f+ h- y6 u+ |
5.双截龙23 J! D. p: K) i
6.双截龙3/ J+ T. {. D  C; p( `0 s
7.洛克人; K( [( J% D  a3 i
8.洛克人2- q5 I# ^9 [5 x' `
9.洛克人3" Z  R& u7 S+ z  o7 Z# B9 G# k
10.洛克人4
$ F6 L% H  n9 l- L0 }+ h7 D3 D; y4 _; d4 {11.洛克人5* c8 d; e: L# n& h
12.洛克人6
7 {& X4 y, T$ E- w4 B' L
1 n  A( f# A% ]7 g! J8 R操作:9 x' e- G& U  Q/ A! y7 C* H
上键:         上一个专辑
6 ^$ R. O2 A# M4 Z) F; V下键:         下一个专辑( ^6 z# |3 e5 l- X* c
左键:         上一曲# `3 [) r4 C6 {& }4 U% T# E
右键:         下一曲
' u' q/ W- x. p& A4 N3 IB/A键:        前10曲/后10曲
. ^1 a  t5 ]8 i选择键:       下一页+ O0 S; \1 P6 P
开始键:       停止/播放
0 J" P8 F' q0 E0 D( ?5 f' `! z, J5 s; ?6 |, E8 s7 M) D, B3 Z, n
http://flamecyclone.ysepan.com/
! O! Y0 R) j& o) U# I: z0 j. y" c+ K, Q7 E
: \1 [1 y$ N" E
1 {  I; ~: K+ ]; P5 H6 V5 {  L
2 Z% [( J) P2 J9 J7 w4 J3 d
  1. ;[FC音乐][播放器模板]
    9 C( p% w0 G* |: m
  2. ;FlameCyclone 20230710
    $ i% X" d  w( d# C. V

  3. ! R' K, A! C+ _8 s
  4. ;文件头# t3 x# ^: h- W, H% z4 S
  5. ;======================================================================
    5 o! V& @2 G' c& E) N
  6. .INESPRG 16                                             ;16KB PRG 数量
    % O, W! A, O1 D
  7. .INESCHR 1                                               ;8KB CHR 数量
      |2 M: G# M' e& B- H4 ~# N4 O
  8. .INESMAP 4                                                   ;mapper 4: H& R" R. f- @
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直- r$ C. h* Z5 \* k* R* b
  10. * \9 ]- }6 q7 d% ?8 n! L0 K) _
  11. ;==================================================
    $ T9 K. r6 R0 W6 D) ^# w. x
  12. SOUND_BAR_SHOW_ENABLE       = 1
    0 l1 [" b  L4 G& z5 s* a6 a6 ]
  13. ;==================================================
    " W, L/ C5 {3 y. Z) c
  14. BANK_DATA_MASK              = $1F
    4 f8 \% a3 t& P. O- f
  15. CHR_RAM_ENABLE              = 0
    * {) ~! }0 T% d9 [5 r/ m( `, z
  16. IRQ_SCANLINE                = 136
    9 Z, S7 p- h2 p) W* k; y
  17. ;==================================================
    1 {6 K/ H# c" f9 b( b# R4 v
  18. SOUND_DATA_BANK_00          = $00
    $ G7 R) I+ _4 @$ |  k# p
  19. SOUND_DATA_BANK_01          = $01$ E/ X7 o8 x- g. F
  20. SOUND_DATA_BANK_02          = $02
    3 e$ F9 C2 l6 i. i* x
  21. SOUND_DATA_BANK_03          = $03
    ) I5 I9 k4 k6 W3 p& G3 H1 u
  22. SOUND_DATA_BANK_04          = $047 K) K5 \2 F# p* t
  23. SOUND_DATA_BANK_05          = $050 N0 j  `6 R* _
  24. SOUND_DATA_BANK_06          = $06
      M6 Z% |/ c5 V5 r5 v0 O" j% l' R# i
  25. SOUND_DATA_BANK_07          = $076 P9 O8 M$ F. s$ u8 z
  26. SOUND_DATA_BANK_08          = $08/ a0 H# C- J! |6 q: \+ I7 O
  27. SOUND_DATA_BANK_09          = $09; u* r7 f( Q4 B1 f( y# T4 P# g/ E
  28. SOUND_DATA_BANK_0A          = $0A
    $ X! Y; c4 d) Z
  29. SOUND_DATA_BANK_0B          = $0B
    0 ~1 \, J- w& h& Y$ i
  30. SOUND_DATA_BANK_0C          = $0C
    * J9 T+ N' C) n6 X3 E
  31. SOUND_DATA_BANK_0D          = $0D
    " {, [5 p1 \7 g- T+ I% K
  32. SOUND_DATA_BANK_0E          = $0E2 `4 f8 Z$ w3 ~- e% }" J2 {4 O
  33. SOUND_DATA_BANK_0F          = $0F- b7 A) v/ e1 @; a+ d$ U) {% ]

  34. " j0 ^# J/ r7 x( n. Y0 m
  35. SOUND_DATA_BANK_10          = $10
    4 [: f% T* y- o
  36. SOUND_DATA_BANK_11          = $11$ x0 J" A( S/ L! @4 e
  37. SOUND_DATA_BANK_12          = $12
    ) I* \4 o. x: W
  38. SOUND_DATA_BANK_13          = $13: w7 I( L/ r! S
  39. SOUND_DATA_BANK_14          = $14: ]8 k+ f4 D; n% k+ }
  40. SOUND_DATA_BANK_15          = $15
    9 e$ K' w1 r0 W& H/ ?
  41. SOUND_DATA_BANK_16          = $162 S1 i, P: Q) i
  42. SOUND_DATA_BANK_17          = $17; R8 l2 q$ c$ |& x/ J2 c
  43. SOUND_DATA_BANK_18          = $180 ?4 O* K  Z4 G2 L0 ]. |+ i
  44. SOUND_DATA_BANK_19          = $19; j; m" B: |$ s; t, m) E! y( P
  45. SOUND_DATA_BANK_1A          = $1A: d7 M$ P# c+ v* ?
  46. SOUND_DATA_BANK_1B          = $1B
    / D, h3 g( c9 E; ^7 z
  47. SOUND_DATA_BANK_1C          = $1C
    $ w1 f5 X' j. R, X& h
  48. SOUND_DATA_BANK_1D          = $1D
    " A8 t+ Q  S, Z9 c

  49. ( q5 ?  e9 n4 ~  ]/ ?) B5 R
  50. SOUND_DATA_BANK_C000        = $1E$ Z3 q/ m8 B$ ?
  51. SOUND_DATA_BANK_E000        = $1F( }6 I& f" b* w; X+ M0 t) i& s3 P5 q
  52. ;-------------------------------------------------1 R4 L& K5 c: a# w6 Y; m3 G- X
  53. CHR_DATA_BANK               = $20
    - w6 g& F: n+ `& G' {3 F
  54. CHR_DATA_ADDR               = $A0007 g' b; c" {+ R2 J( i: p
  55. ;-------------------------------------------------- J7 E. L0 K: {: a
  56. PROGRAM_BANK                = $00
    5 W6 z% `. R% ~+ _+ g' x
  57. PROGRAM_ADDR                = $8000; A$ |0 J$ y9 D) c
  58. ;-------------------------------------------------* T0 L. ]# ~  i
  59. RESET_BANK                  = $1F
    3 P: A& z9 Z0 S- d% F) f' w' e( D
  60. RESET_ADDR                  = $FD00! O. O$ J) V9 P# v8 R* S7 ]

  61. " R9 v2 p7 _9 P/ L9 j# C) R
  62. ;==================================================1 y; V( b2 O' @7 _/ }$ D+ J
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数; |: I) x4 i9 g( N4 P! f# z- k
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引! W1 p$ Y$ ^0 g* N7 f
  65. PAGE_SIZE           = 5                     ;每页节目数
    9 T$ F* L: o$ c  ^) A3 E

  66. 7 h. N6 G$ P# \4 j# X. L3 a" F
  67. ;==================================================2 n1 V7 J* r  q3 y# w( ]: A6 L
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    / h3 g! y! s/ Y2 p, `& \
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数: r& q* G& ^  @; s
  70. .ELSE2 K' ?  K; N4 s
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数- q% t( i. E1 r) l5 G5 p: a; I. x
  72. .ENDIF
    6 e2 m. N/ I& V, F/ h6 L

  73. ; i0 F8 l4 b5 w/ B
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    ( H/ B/ b' u5 A

  75.   k8 }( \; K; f3 x& A. W2 N' i
  76. ;==================================================# c3 U- p; a+ h7 e5 K; G( A8 ~
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置( L: s& S( C. V$ F
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    3 c; h" k8 m! W" _
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    0 x* f8 `$ z& ~* G- x, _
  80. ;==================================================: M# @/ I# N! R& T
  81. Caption_Text_Pos    = $204D ;标题文本位置. h% r* O( l" [6 _/ q" J2 q' }
  82. Author_Text_Pos     = $2324 ;作者文本位置
    - E2 w+ ?6 x4 E6 u) h
  83. Date_Text_Pos       = $236B ;日期文本位置
    / [: r% G* F# ^
  84. ;------------------------------
    7 C6 P" D0 {: t
  85. ;------------------------------
    1 p& n* r' ?; u5 h, m$ {
  86. .IF SOUND_BAR_SHOW_ENABLE4 u; W) S) q) g; P/ v
  87. 9 D, B/ s, S9 i: E2 L5 w
  88. Play_Index_Pos      = $2273 ;当前曲目位置! y* p9 I( `# g" Q
  89. Play_Time_Pos       = $22B3 ;播放时间位置7 M9 S* E# E$ |" B- H9 {( W' n$ O) d
  90. Play_State_Pos      = $22F3 ;播放状态位置
    6 B' b0 L* q( H. b9 x; ]8 y& Z
  91.   P# b/ o, R4 ~) m) h# N& o* ?
  92. .ELSE& c+ _2 O7 ^+ j6 T; N1 C: i# r4 t* x
  93. ( |' d( \% ?% u" ]+ W
  94. Play_Index_Pos      = $226C ;当前曲目位置
    8 m* _+ a2 g, o9 ~' `% |
  95. Play_Time_Pos       = $22AC ;播放时间位置
    6 }; F$ T& [5 T6 a8 L) M; @
  96. Play_State_Pos      = $22EC ;播放状态位置8 `! L  ~3 R( I' Y& t+ R
  97. ; M4 V6 v1 |7 H+ S: x8 S
  98. .ENDIF9 V9 W8 V. e( Z% f+ O8 z6 s
  99. ;------------------------------' H; R/ K% H' _9 a; m! X! f) p
  100. Track_Name_Pos      = $222B ;曲目文本位置  N' K6 ~$ y5 K( f3 z" V8 V! S
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    8 d$ R! q, g) \, C6 d1 p7 C
  102. Sound_Track_Pos     = $2265 ;声道文本位置& N+ c" D# C; t* U# A3 Q
  103. Sound_Bar_Pos       = $2269 ;音乐条位置/ D' ]. W$ r& }) _/ B* h
  104. ;==================================================
    , f1 ]/ h6 J6 A( ]5 U* I+ S2 N
  105. Scroll_X = $00
    * \5 Z( I5 {! p4 b! |9 b
  106. Scroll_Y = $00& v3 q1 |" V, j3 Z5 F' j4 S2 C
  107. ;==================================================
    9 r  a& L" q' N( Z3 c+ V) h$ S* x
  108. Sound_Ram_Addr_1       = $0100
    $ F, m+ k3 U0 o
  109. Sound_Ram_Addr_1_Size  = $80
    3 `5 R5 h% X" B% c  D
  110. Sound_Ram_Addr_2       = $0090! D5 f% K7 O$ U: `
  111. Sound_Ram_Addr_2_Size  = $70, u, k* p- W! Q. w$ }! K+ ?
  112. Sound_Ram_Addr_3       = $0700
    + ~* A- A+ H( L& h7 b
  113. Sound_Ram_Addr_3_Size  = $00+ Q- j+ m9 K; A
  114. Sound_Ram_Addr_4       = $0400% l1 G4 Z# g, N
  115. Sound_Ram_Addr_4_Size  = $00( \1 ]) {8 c, J" N3 v0 n
  116. Sound_Ram_Addr_5       = $0500
    # x  v, c% W2 H( f8 ~9 y
  117. Sound_Ram_Addr_5_Size  = $40" ~" k; ?- g1 H7 A
  118. $ \) j. w# c0 C$ _9 m/ }1 U* x( T
  119. OAM_TEMP_ADDR   = $0300
    + R% x5 C4 w3 ]6 T; A2 l) z
  120. , k! o; g. c7 S  l
  121. ;==================================================* v1 K+ G, c. d" \6 w1 u9 D
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器" T) Q; d' l8 P$ `  R; g
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器, H1 b3 K" m0 c: b( P
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位9 @6 r& z& z. Q) U  b6 [0 j
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    6 D* O# L: c3 c9 H
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加18 r( k+ z% b& z7 B5 l+ W7 I$ K0 i+ B; f
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    7 M6 o* S. i9 G+ ?( h
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加; m  J# I  I% ]9 ?
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    " Q4 o. @  N" q: w1 ]
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    + ^! r+ R5 }- l" `) c& H
  131. APU_STATUS              =   $4015   ;声音通道切换5 s: p  Q/ P+ I/ `0 O  n
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通/ {9 D# c+ t* i) s  v! f, p' c1 x. {+ a
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    + {1 [5 r2 g$ k  A; J: S
  134. ;==================================================7 M0 A3 G5 k4 @: f! o4 d  ^1 X# g0 f7 e
  135. MMC3_BANK_CTRL          =   $80003 f2 H. _% f% g' N9 C
  136. MMC3_BANK_DATA          =   $80017 E! f0 h7 ?1 j6 }
  137. MMC3_MIRRORING          =   $A000
    + M! G- m, A! d2 s) r
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    - O1 c; f& V4 }1 l$ d, v
  139. MMC3_IRQ_LATCH          =   $C000: n# o- Y' N. {
  140. MMC3_IRQ_RELOAD         =   $C0019 u; v9 p" E0 J: P# G1 C6 B
  141. MMC3_IRQ_DISABLE        =   $E0009 [8 Y/ ~! c# P" s4 e" ^
  142. MMC3_IRQ_ENABLE         =   $E001
    9 }$ c5 \1 R- g# p% m* \) |9 J
  143. & D  |( g7 y: y6 Z
  144. ;==================================================  V, A* S$ q. ?9 O) N3 v: I  h
  145. PPU_Addr        = $0200
    % `; M, l  y% M$ {" i
  146. Palette_Addr    = $02C0
    ; w4 `5 b: }  _: E3 ?
  147. Sound_Bar       = PPU_Addr+$E08 n' p' }  D3 k, {$ t- y3 B+ U* j
  148. ;==================================================5 r% h* x9 [, w/ Q+ P" c
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D  e5 b/ Y9 [6 ~8 j  ~
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11; K( r9 R" C( H7 {* \
  151. PALETTE_UPDATE_MAX      = $2C
    8 U1 D- W$ E- K, J
  152. PALETTE_UPDATE_MIN      = $21* ?$ D7 q6 }# x! k( {
  153. PALETTE_UPDATE_INTERVAL = 60+ c! W3 O- h7 R6 D
  154. ;==================================================9 u7 G: V7 C! m% X
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    6 n* f, [5 u7 d, D
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    5 q% s7 c; F. N
  157. PPU_Addr_H          = PPU_Cur+$033 y, V; d& V$ H* x, R
  158. PPU_Addr_L          = PPU_Addr_H+$046 Z, G+ K/ N# F
  159. Screen_Ctrl         = PPU_Addr_L+$019 u( \9 a3 F: [3 u  E
  160. Screen_State        = Screen_Ctrl+$01
    $ j, ]3 n0 c5 I2 j& M: F  l- z- g
  161. ;==================================================$ t7 l6 x1 `, D: `) S0 S' q! n* [
  162. Use_Ram_Begin       = $50
    ! ?2 S4 P1 B$ T, }+ A, x
  163. ;==================================================
    $ j6 T) X1 c- y- a  _# n
  164. JSR_Addr_Op         = Use_Ram_Begin
    * N) }, U1 l+ M& |2 P" V2 P  E
  165. JSR_Addr_L          = JSR_Addr_Op + $01# ^+ G; o/ l$ L3 L9 Y
  166. JSR_Addr_H          = JSR_Addr_L + $01" i& {4 T( M0 k" w6 v+ d# [! P
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
      z$ X7 P6 S- c# J7 L
  168. Data_L              = JSR_Addr_Rts + $01
    , r+ m0 i4 A# k% r5 h: ?! z2 x
  169. Data_H              = Data_L + $01" j1 m' p- j; O- @6 s7 L# k+ V
  170. Data_Cnt            = Data_H + $01+ ]+ `- N' o7 {/ H  }
  171. Data_Buf            = Data_Cnt + $010 J* [; z7 P: d* n9 {# R/ W
  172. Nmi_Time_Count      = Data_Buf + $01
    5 ~7 ]$ M5 Z& [* @# X
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    . }$ F/ U1 ]$ f& T" u
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    7 h1 [$ S% V+ }: y) U% |
  175. + D0 O0 ?+ S) `3 A6 \
  176. ;调色板刷新标志
    9 Q# c! j" C4 c0 Z
  177. Palette_Update_Flag = Palette_Wait_Cnt + $015 U1 y  e' @2 o0 [% X0 x
  178. # O- e* f! p! t
  179. ;当前帧文本写入禁用标志3 u; L: @( I2 T
  180. Text_Disable_Flag   = Palette_Update_Flag + $01" t, S) R2 O6 t. M8 i
  181. 2 O6 v- E3 E3 y0 ]( d. e
  182. ;==================================================$ b/ o1 C6 P: H0 c2 \
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    9 O6 F* R% L+ w! g
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条) x6 ~, r9 A& J  D! y/ [+ n, J8 G( P/ k
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间' w2 ]0 v/ A: ~- V; ^
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间( `9 y/ [, h& S, u  i1 h
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间: I/ ^; b/ R- L
  188. ;==================================================( ^4 o7 H: @7 O" L
  189. Key_Keep            = Text_Disable_Flag + 17 l' ~$ [% X" r7 B, k9 C8 _/ [
  190. Key_Once            = Key_Keep + $01
    2 V' p9 L) w* S
  191. Key_Kemp            = Key_Once + $01
    % u$ Z' m1 h; L# ]
  192. Key_Temp            = Key_Kemp + $01
    7 ]% a  w# ~! Q+ \  W
  193. Key_Getv            = Key_Temp + $01
    ( j& l0 t2 p8 C9 K! S9 C- H
  194. ;==================================================
    / o7 @9 r# I  p- y
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    & _& T/ }) E. Z9 @0 c1 J
  196. Music_Item_Last     = Music_Item_Cur + $01
    5 r5 k  \% x* B* Z2 _
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集6 O6 p! K6 L  Q' r
  198. Music_Cur           = Music_Total + $01  ;当前曲目$ Y8 B1 M& O% D! |5 F
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    " w, N9 n2 t% R6 j7 X& J  ?0 ?
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    & l" c0 ]8 L6 Q
  201. ;==================================================4 f' d7 N, _* ]/ ^+ q
  202. HEX_Data            = Music_Stop_State + $01
    ' C! Y3 z/ `) G  Y, w
  203. DEC_H               = HEX_Data + $01
    " u5 N8 F# {& d+ r% Z/ |0 I9 Z7 F
  204. DEC_T               = DEC_H + $01
    ! J4 t  b4 {5 ~$ P8 r/ J% @0 _
  205. DEC_L               = DEC_T + $018 E9 \! x4 W4 m. ~4 B
  206. ;==================================================4 b3 }- K4 Q; c8 {! I
  207. Time_S              = DEC_L + $01
    . I- F' |/ Q* _- w
  208. Time_M              = Time_S + $011 o; d  r. i; e) a, `  F
  209. Time_H              = Time_M + $02
    ! w0 D3 J" m& f) ?: A: p5 S# t" x
  210. Time_Cnt            = Time_H + $03, B* j/ L9 B: D: @2 @4 Z; n
  211. 8 q/ I! a) p9 P; o
  212. ;==================================================( M9 {' {8 n5 ~4 c: U6 J. b) P
  213. Music_Bank_8000     = Time_Cnt + 12 U1 o+ E2 y1 r9 F
  214. Music_Bank_A000     = Music_Bank_8000 + 1- l$ h) R3 d/ N$ t& N1 X+ P
  215. ;==================================================# m1 K- h' g" Q3 ^# b
  216. Scroll_H            = Music_Bank_A000 + 10 \5 z: a' I  K$ m
  217. Scroll_V            = Scroll_H + 17 b' q% V' h8 ~( `
  218. IRQ_Process_Index   = Scroll_V + 1
    5 L- V1 W5 }7 D
  219. ;--------------------------------------------------, h& C* J) W. l8 ^8 z* L0 p. T
  220. Page_Cur            = IRQ_Process_Index + $01
    3 J- N9 \8 J& m
  221. Page_Cur_Index      = Page_Cur + $01
    - F1 U& Y# v2 |% H& t- v
  222. Page_Cur_Cnt        = Page_Cur_Index + $01% B4 Z2 ?) C: P  N  `
  223. Page_Last           = Page_Cur_Cnt + $016 o2 r; i5 Y7 d3 p% O
  224. Page_Last_Index     = Page_Last + $019 F+ y, E" v' H( m0 o2 n
  225. Page_Last_Cnt       = Page_Last_Index + $01; I6 [, H: L, H, ^2 g" ^' K
  226. Use_Ram_End         = Page_Last_Cnt + $011 ~' Q9 x" n4 ^6 {0 g/ E# Z: U
  227. ;======================================================================
    2 l/ [' `1 Z5 n. i2 k1 d6 ~
  228. ;音乐数据块
    5 g; ]" Y# x/ C( c4 C

  229. ' a' E0 B6 p- G
  230. .IF SOUND_BAR_SHOW_ENABLE
    2 E+ r& ^2 c( Y
  231. 1 t3 g! m% k" h0 c& ?% e
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK/ a* D/ O5 ~: ~6 R, F, M; b- X$ b
  233. .ORG $90006 X! D5 g& ^' |8 m8 q
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"4 T4 `, p9 f' r( i3 m& ^0 K8 q; o+ V

  235. / F  O5 O% ]4 y5 ^
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK: J) n( [4 u% S( i2 A
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
      ?! _+ C8 j& h

  238. ; v7 |+ e1 X" R, w2 b6 z
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    * l& [( F  B. W' z: ^
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    1 W! _7 _9 k) b7 G
  241. / T; `- `3 S0 l
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    3 M8 A6 [! n, {/ ^% p1 O/ _2 g
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"6 {8 `$ s4 S: W/ ], k) O& l$ [

  244.   Y/ Z% [+ x# m
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    6 Z6 e- \) L8 a
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"9 |) a: P" y  g- [' b6 B! W

  247. ) R& \1 V8 p& }7 u: q5 f1 a
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    * o0 O7 J7 x& A
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"' p. F+ ^4 r% h! g
  250. : _1 E; H: @% Q( k# h& t
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK! |" f+ z, @( U
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    . x% Y, O2 e4 c& U

  253. . n/ s4 t0 ?# q& u' O/ U: q
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    . b1 B' d, c: z7 R9 R1 |1 |
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    5 q/ W. W( a6 o( V  x; _' w% o5 m
  256. ' Q% E+ r+ P" {& j) H
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK- I+ [, G$ n* k0 a5 Y3 l6 l
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    / S. k0 H. U; O0 V
  259. ' z# b$ ^3 z; K% [4 z
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    9 c/ E6 B- n5 V1 Q/ e: V9 N
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ( B7 y8 t6 ]+ a: D
  262. ) T, N6 s2 t# }! ]+ m
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    & [2 f* `8 u. `' y# l4 B4 F& Z
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"6 P( n3 f" y* R
  265.   D( t  B7 L  h0 Y) Z  m
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK; K2 A# U$ s0 p+ [$ S
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    $ d6 ]" Q' y* R$ i( z
  268. 8 k, S% V1 `; Y9 ?) p
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    + ]# a" p# K9 [- x' {3 ~
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"4 q2 b# s, g7 O# N" \+ I

  271. ) |+ z* M* A6 W$ ^9 d! G- x. y
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    1 }! x5 y/ \, S4 V/ U$ `1 Y
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"0 O3 z  [' a3 V- \
  274. ! S7 `6 k: v- z8 S. }4 o( g
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK* g+ }8 N4 B4 U4 y) A
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"0 @4 I) U/ C% @! p+ S
  277. : O$ m5 M; e, e# z1 d1 A
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    % [: r# k& Z6 O8 _" V* `
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    9 P& n8 _* ^) P0 H

  280. ' X$ R  j2 Y- m6 o6 l
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK0 k1 H/ ?. a6 V
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"4 l; V) J9 ~# `: _4 L4 t
  283. * M( {: x' r3 W7 G
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK; s' U; H2 p- ?# A3 n9 y/ r
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank", U: s3 a# ]# ~1 f
  286.   N, L; [! y$ V4 |
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    # Y& v% ^9 h. B: J" o3 m
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    1 [+ I, A/ `6 X" W" m

  289. ; N) D9 D0 ~6 j' k5 N
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    # @) e- F, T7 q
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ( L2 n% v% d: l) P: L

  292. 9 y  F- h1 H- h: v4 \
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK' h  Y. |% q  \: N, }! D- J0 i
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    . S* _' Y  {$ e3 I; P0 ]" q! ?
  295. % t' C0 j  T+ K' P
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK* v! a/ ~+ I; \0 G
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"0 [0 M  u/ p1 g

  298. 3 g9 u8 ~7 V0 w* T9 }4 ^, V$ S
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK0 d. B! z' B& K. b
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"/ v' W$ m9 C$ j. P: o

  301. " }+ I* y1 @9 l; b
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK3 A6 I, ~2 i' b3 W6 C' D
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    , ?% f% T$ R4 R' h; {! B3 d; X

  304. 3 Q& r" l) c' @. G8 t; g
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK/ l3 L4 q* c# w/ n* h
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    0 g7 T+ t0 K1 [7 |  e. C4 B
  307. 9 O# p# N& F) R/ J4 @3 u
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    - @- m/ X6 [9 h6 A6 i; K5 {, Y- C' h
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"$ s# }: w- R; m( a! j
  310. ; L$ _2 ]2 E# J/ }0 B6 t8 m1 \
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK$ t1 C9 l+ d2 f% V% r
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"% }4 D# R5 k6 s! B8 ^

  313. ' l  M, L& Q! I$ G  k  }* o
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK8 x% b7 R1 Q: q+ @2 U
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank", I9 w9 D" u- C, m- {* _

  316. 0 a8 k6 N, v' [" k9 `8 f
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ( Q! w) Q5 J+ Z. u# J8 g* w
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"/ X4 ?+ }, y" P8 ]2 ^1 [& U8 I
  319. & {. s9 y) ?8 c" h3 |' y7 Z
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    % d3 i" x! t. w3 T6 B5 {2 i
  321. .ORG $D400
    6 Y: d- E' }0 G0 Q' g7 b- B* s
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    - [0 t( B; T: g
  323. ! H- X5 F" f4 H4 ~
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK6 k- E3 p0 D; J9 }
  325. .ORG $D800; n/ l" ~# L; V3 L4 R
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"% _: q* x9 {7 M& Z. k/ A
  327. ) ~, D% V; Y% n
  328. 7 i9 b8 }4 C0 e" {4 p1 g$ D' q
  329. .ELSE
    5 X* G; H$ j! |  D1 ?. d

  330. # m. x8 W9 T& o9 V) X
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK# U5 i5 ?* m5 D  l  p% j' M' L
  332. .ORG $9000) [% w2 ~$ y! Q9 L
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"% Y. N" i; S, b' {& S4 U' i! I

  334. " K& p& \8 Y0 J8 I; A
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK6 R3 l4 ~) n6 u. c# t+ |/ t
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ) \+ n) q9 Q, C9 _/ U- K; t  v; C
  337. 9 p# U& }. j: J
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK! Z0 W, g" |# t9 p2 A$ F1 g
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank", i, _) p  `2 e% I
  340. 8 H3 M4 Z0 A: ?# y, j
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    & }2 [& P+ e- b+ n; n
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"; z$ r; U8 x0 h7 d
  343. : R$ r# o: V  i
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK$ A( C' u6 S9 C! k$ z8 r
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    ! t6 n9 k4 x4 I& ^" D) |

  346. . \, h6 n" b9 [" D/ z+ ^# w
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    5 z, b! i# P2 U& l; w" u; l
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    ! ]5 v1 t6 V4 }1 _" A, U
  349. 3 a0 U6 F, W' J( x; y7 H
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    ; f. g3 R- Q. E2 m& d( S  f6 o
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    ! j! c. l; w% |3 n8 g6 g

  352. - j/ m7 @( T( }5 n) @5 \
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK: o$ b; C3 {" D2 u
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    8 J5 F6 w7 @. j2 f$ }
  355. 3 [  i. d* k8 n1 u
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK6 T  e! H/ `3 l, b, @
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    * \) r- c+ M# j

  358. . }, ~: K* T7 l; I
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    . j' P/ I. b) ]& Z/ b
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"+ ^, L8 t0 X( r5 Q

  361. 2 w+ B' U3 N2 r0 U$ T& z9 U
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    1 T& l2 F5 V" B0 ~2 L7 r( z0 i
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"3 Y, E" d* p; u9 Y, E# N

  364. ! X9 r* U7 L# I% q" z- J
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK/ G7 P$ ^: d" }1 c( A" e
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank") h* z9 C& `6 u! x* I; Y

  367. , ?# Y% G& a: L( {" b
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    : x8 b% y" B4 J) r
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    , C- z0 s. j  Z" q7 F+ T

  370. 2 Z% ]" u7 A' z* \3 |" d+ m
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    1 j* e6 u2 t+ }& l1 \9 r
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    & c' E; |  x( x4 d' g, S

  373. ( g* r* p' ]: z  n
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK* ^6 j5 I7 z; x
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    ! _8 M- z+ ?- p# o8 m, O

  376. & M8 {+ P0 Q9 r. S9 D* t% G* O
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    3 c4 z% Z, R* I4 q- Y  o9 ?
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"' I4 ]; u: \& s
  379. , P1 A4 A# Z( ^! Z  A" Z% i
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    : S9 Q0 A  r, n6 l, R3 w
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"! r/ J+ z9 O5 l! N

  382. ) B2 L9 C, s5 A1 @
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK9 K4 _/ T. D, `: z" A3 g# b
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    - [* G- A1 ^2 E& y- u$ \/ I

  385. ) s( B0 H8 d0 b" C+ o
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    8 ^6 b. a! T) u6 R1 T9 T5 Z
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"2 F( j; I  V* a3 p0 O( _0 w) I2 K
  388. ( }7 y' n/ [) H; H" a1 V. W
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    , I: t* B# G9 [" r4 ?
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"6 ]3 j7 Y$ H4 O* [& D+ t

  391. 3 T$ D; I  D. L$ j( z+ y, U1 `
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    1 A- n5 k; |% w6 w2 p, `
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    ; _" ]% R5 y& x' N
  394. 4 ~1 D" Z* E9 g$ z4 W
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    ( ~$ ?* ]6 j; I5 M
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    0 T. n3 l* Z3 `1 h8 T( M+ K

  397. - @1 q) ]+ w) I! \
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK$ f* J* |/ f9 O4 v* e5 ~, e
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"$ P7 b$ s. T7 L& u
  400. 3 m) u8 H; n% E2 i0 V# v: k
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK; B9 k0 _% {- X& _5 V- _
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"4 i3 E# {  \4 p5 F

  403. ) @" l) D* M; f  F2 t% T+ E; C  b* P
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK0 c- x. X1 r6 Q( c! K
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    0 y1 f& Q# U& j5 a9 x3 B

  406. / O* [0 C5 R& {5 @
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK: d, z" B2 M* K' Q0 t. Z( B8 }& D
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank", o' I% k0 T. l+ L  j& `3 N( Y
  409. 0 }/ S: D1 A2 H* G" ?& Z2 P8 [9 T
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    7 r, C- ^* A0 H, e6 G
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"8 s4 X& A1 l* j; y7 d$ V

  412.   x. f! M* I; L
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    / s1 t0 i4 m+ Q+ D- Q) L
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    $ t% D& o, f+ E; h" S1 o- p+ E
  415. 3 {3 X, N# l& E* M$ h! K
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    3 }0 Z* D* V- S
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    8 i, g% Z7 u+ v% F: C# ^, A5 l

  418. # W3 u$ S, l0 G% g7 Z2 {+ G
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK: E' @6 _- ?$ w1 l
  420. .ORG $D4007 _( T) Y+ G7 Z3 P: @
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    ; n; ]: O2 m9 q8 y, _# R

  422. * U4 _* Z8 b2 @, Z
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK; e7 G9 o, C; v9 c
  424. .ORG $D800: s( o* W' d3 O( t% j; J$ _% }1 [6 I
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank": F/ h6 H. n  d
  426. 7 X3 j1 E) T, f0 D& J
  427. .ENDIF: n! p# L* \3 h$ v, @
  428. / g0 d8 [0 e3 R3 z
  429. ;CHR图形数据( |- s9 e: A, j+ S
  430. ;======================================================================# j8 t0 L' ~. W- `
  431. .BANK CHR_DATA_BANK) J' K$ i4 k2 Z, l7 o4 O# L$ _# N
  432. .INCBIN "chr_bank/chr_data.chr"- X6 w0 G. o7 j- H/ `: @  z  G
  433. " x3 f! s5 ~7 G5 p7 j4 h
  434. ;======================================================================
    $ C1 A, Z: {! X5 v$ c, E  y7 c- U9 q
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK; v9 r: j* p) C6 c* r- q
  436. .ORG PROGRAM_ADDR
    2 }7 q$ J' y( k* B1 D1 C! s# B- @
  437. : m1 S3 ^) x! v. u( d2 p
  438. ;==================================================
    & Y2 j8 h( Y8 V- I% l
  439. NmiProcess
    , v/ N6 P: m. X  k8 C

  440. ! _9 t% p8 b3 f% e5 K. A
  441. ;关闭屏幕控制2 \0 Q- e% F9 D" B
  442. LDA #$00& `! l- `/ x. y- \) `+ t
  443. STA PPU_CTRL5 g% Y9 w5 l9 i" T8 J7 ?2 M+ f

  444. 1 l- [, B5 }" C3 t1 S
  445. ;没播放音乐就不需要触发IRQ
    + S' K8 G& C2 M. z/ P
  446. LDA <Music_Stop_State( s: r$ L  d6 j; z6 f7 ?$ {
  447. BNE NmiNormal
    " b, @. @9 k; y0 g
  448. * H" S, j6 g% b0 W0 p
  449. ;重置IRQ索引' x; r8 p6 T. c6 A0 J: P8 s3 u
  450. LDA #$009 c: {' R% N3 ^. }8 ], `
  451. STA <IRQ_Process_Index( J1 }% ?( n. P) B0 e
  452. $ K3 ~  E2 M: P' i5 M; q2 h
  453. ;时间秒数为空则跳过
    3 B4 j  ?: \! K( Y5 B( R, {, Y
  454. LDA <Time_H6 C+ f% @! E/ a# q- H
  455. ORA <Time_M' k6 q# w2 g; R6 y+ T$ z- A
  456. ORA <Time_S
    * |  n, Z& c7 g. z: Z; M
  457. BEQ EnableFirstIrq$ |, `( [  g' U( g8 u# |: |

  458. 6 w- \: p/ q. F
  459. INC <Scroll_H' B* h5 N4 e' L3 K6 ]' \$ }
  460. : B0 E3 c) P# q- E. l) r
  461. EnableFirstIrq 0 a+ L# H/ A8 E% ^. L
  462. ;80条扫描线后触发IRQ
    0 p% ?: _. s+ Q6 J: x2 q4 {
  463. LDA #IRQ_SCANLINE
    - f4 Z+ h$ L) I) V
  464. STA MMC3_IRQ_LATCH! G1 L; M) x& |2 N- R. I% i2 J; I: t
  465. STA MMC3_IRQ_RELOAD; X6 O5 o' {# j3 F$ k" a* |2 d( R
  466. STA MMC3_IRQ_ENABLE; T% F* ~, y) ~
  467. CLI  u: N  z- t6 _2 y& d

  468. 0 l' L" U, P5 H+ C) P
  469. NmiNormal9 e" P! s: H1 H1 D; R

  470. : m  \$ G" V3 D
  471. ;处理PPU图像
    $ j2 ~3 Z" C. Z3 S1 m% W' j) F
  472. JSR PPU_Proc- U' A, _# K( W- q% n

  473. 2 w: [8 l. P" W( D4 c# m
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)5 |+ {, h: [0 O
  475. LDA PPU_STATUS6 n8 }* `) v% W( k; U1 O
  476. ;LDA #$00
    # c' Z2 D, y3 n' T4 R
  477. ;STA PPU_OAM_ADDR
    ; t4 `- ]; P* y! Q' j
  478. LDA #OAM_TEMP_ADDR / $0100
    7 J% x- \! R7 L7 b7 z
  479. STA OAM_DMA% V5 [& K$ r/ m* X1 @) X9 d* _
  480. 7 S2 K- X3 d+ }3 O
  481. ;启用NMI中断
    9 C2 [8 t. Y" l
  482. LDA Screen_Ctrl
    % L- p: B9 e+ y" v5 U6 P5 ~5 `
  483. STA PPU_CTRL- l* L- t6 f% u: V. U% }+ `( x* l* F9 C
  484. & r7 \8 v, x( u0 R$ D# [
  485. LDA <Text_Disable_Flag
    5 j  M4 x: @$ e# k1 X0 @
  486. AND #TEXT_DISABLE_RAM
    / C& s3 G( C  M* W
  487. BNE Nmi_Sound_Play# t( e3 s" e; t* e9 A: Q

  488. # E( @. u' x% @) ~
  489. ;处理手柄输入7 P% g% x+ f" h1 \7 O  d4 T
  490. JSR Key_Proc
    8 j+ i3 n. _2 p7 ?: B4 v" Q
  491. & ^& e2 T. V5 f+ H! [8 c: r
  492. ;切换音乐(手柄触发)
    & H* `9 W2 v9 E
  493. LDA <Time_Wait_Cnt, r5 j' V' f6 m3 H2 A& h
  494. BNE Nmi_Cursor_Arrow
    ' v4 V( {& u/ }6 A
  495. JSR Change_Select_Item  \' `* j0 S# V& X' b& k0 ]1 z3 A

  496. * U( \3 F: M0 j) S# d! I
  497. Nmi_Cursor_Arrow* z. T/ i0 H5 R* X4 m/ n7 E

  498. ( A; I: p2 K. y, x: m! A6 l; K  l: f
  499. ;处理光标箭头
    - w& Z5 R; @5 Q. n
  500. JSR Show_Arrow- ]2 R; O$ d  x5 B7 m5 ^
  501. 1 F, I9 E/ J8 B5 |
  502. ;更新调色板- Q4 P6 K" `2 ]8 f) {9 i
  503. JSR Update_Palette_Data
    ' }# g6 d% P  z) |

  504. $ S- @$ _, w0 U8 J6 N
  505. ;显示时间(缓冲)+ T' f& y! @9 \- X' B* w+ U* v+ ^
  506. JSR Time_Show
    & V6 V7 P: x) T# Z$ t$ l/ t
  507. # q" D6 E) q4 I3 m
  508. ;音乐显示(缓冲)1 c' I2 \3 u! Z- Y( ?9 s; M
  509. .IF SOUND_BAR_SHOW_ENABLE
    3 J; F; a! S: ^- s4 L
  510. JSR Music_Vision
    - @2 O0 _7 E- k" D0 f0 T2 a
  511. .ENDIF
    ( U2 U  @3 d9 Q' v. V
  512. ( H/ [% f8 t( X4 [
  513. Nmi_Sound_Play8 Q' p$ e3 ]. U: E; ]" C. Y' r* ~
  514. ;播放声音% P# N$ P- R0 G) N9 j2 Q
  515. LDA <Music_Stop_State
    8 w% ~4 Z6 P* R& S. U
  516. BNE Nmi_Time_Wait_Set, B: J$ [, |6 D7 t3 f  ~; y
  517. JSR Sound_Play_Proc
    % t8 n8 Y% c9 L: A4 R0 X% B
  518. : O8 o3 o7 i8 U- Q! \: M7 E: ]" b
  519. ;播放计时
    7 C! @' }! C8 P, f. f4 [; B* S
  520. JSR Time_Count6 \$ y4 \) d' b4 K  B
  521. # O- V: _& G0 B* C' M
  522. Nmi_Time_Wait_Set
    ; G) l; u9 `# p9 K
  523. LDA <Time_Wait_Cnt/ e$ C& g; {6 \8 g3 B; f+ t' }
  524. BEQ NmiNormalProcessEnd
    + P; z: G' o% V0 a5 S- U' H) \
  525. DEC <Time_Wait_Cnt
      l) r8 t" _! s# `
  526. NmiNormalProcessEnd# `9 E6 |: W2 n+ D! ?+ I. {
  527. 2 h. t/ y) q6 J8 J& o" W$ e
  528. INC <Nmi_Time_Count$ s! B% \% c8 X( N/ b, j
  529. , c8 ?3 w- G/ a' M
  530. RTS- |, Q( r$ ^1 X
  531. ; G# `& ~8 I4 r& E# I
  532. ;==================================================6 _! n( a! J, n4 i& g
  533. Init_MMC34 ^6 _+ N5 W; c# O0 _( h
  534. ;==============================: w$ ~- z- T3 E5 e, D8 q! R
  535. ;禁用IRQ
    # V! ~$ T3 K: N; i6 P/ i' E2 ]. ~5 d
  536. STA MMC3_IRQ_DISABLE
    & i1 D1 _; s! U! I+ `- \! K3 b
  537. 9 t2 }8 M* Q2 l' @# O
  538. ;水平镜像  p' a9 ?- U/ J$ ^2 x0 P
  539. LDA #$01
      |) @% F9 V/ G* m/ E) R' ?
  540. STA MMC3_MIRRORING0 N) n. E4 n; b0 c: i
  541. 5 \0 {- S, w) u1 Q5 [
  542. ;初始化图形bank
    : u7 B0 P% E$ `3 L+ X' J4 M
  543. JSR Init_MMC3_Chr_Bank
    $ c. ]$ i5 m5 j  M
  544. ; @* H- E0 w1 V& V7 K0 k1 ^
  545. RTS
    * r% K" v/ g; `7 Z* `+ ]' M
  546. ;==================================================
    . X4 V/ ?' i  ?! ^
  547. ProgramBegin;主程序$ Q% L8 k7 T3 X
  548. LDA #$000 O; @& @$ F$ ^* T7 N
  549. STA PPU_CTRL
    6 {5 h2 |& K5 U3 |: V$ S6 I6 X* B
  550. LDA #$00; z  c* Z- N! s& `
  551. STA PPU_STATUS
    4 Z* N5 J. F  Z( |
  552. STA PPU_MASK
    ( ~& |* i) d5 ?3 i/ N: Q" V
  553. STA JOY2_FRAME
    ' \; b1 {% s- g$ E

  554. ! s, D6 {" ^  R8 I1 V% P# y
  555. STA PPU_SCROLL) _2 F# [5 [, S# N+ g! {8 K, x
  556. STA PPU_SCROLL
    & ~9 z2 t# l& z+ Z' W# E8 K" f

  557. ) P  P( Q7 ?4 H9 X
  558. ;==================================================
    ) |( ?3 l$ @# ^) A' r
  559. LDX #$FF8 L  j4 N. O+ l5 b( J
  560. TXS
    0 H# _+ s4 B7 ^$ E

  561. : T. N' [$ V8 {! Z9 p: B6 M% g
  562. JSR Init_MMC3
    ) X; K$ r# ~0 |" W9 g% P, F! g7 b4 d
  563. / b7 J3 n( }# `' j: }- M! ^, d
  564. LDX #$02) b% e9 M: m# I% p. ~
  565. Check1
      Q6 M+ }6 I5 W" @
  566. BIT PPU_STATUS& ~% O& v5 U$ h0 S, g* o" \
  567. BPL Check1
    % m0 }4 q) z' z$ Q, o
  568. Check2
    1 b; y' |5 G% V$ s) S! f* p
  569. BIT PPU_STATUS
    5 i7 v  h* }* \  W1 D
  570. BMI Check2, e: n4 v7 f* }8 M
  571.   K- a1 @2 v( {4 D5 r
  572. LDA #$0F: K2 d! Z- Y) P6 @6 |2 F
  573. STA APU_STATUS, Z7 |# J9 k" y
  574. LDA #$C04 Q4 S  }7 [& n0 a% p6 g
  575. STA JOY2_FRAME9 \% O9 [& n: j! p
  576. # l. Q9 _5 F+ m7 s4 Z/ \8 a
  577. LDA PPU_STATUS
    6 }* J8 N5 |/ Y4 z) y
  578. LDA #$10
    , x% Z% e3 Z2 d$ C' v0 O
  579. TAX! g( ~  `* H1 z$ P
  580. Check3
    2 n' [* H- E/ u& r
  581. STA PPU_ADDRESS
    # Q' K5 m1 U* d
  582. STA PPU_ADDRESS
    % e3 \, @8 z3 |3 W9 Y: A! ~6 w' _
  583. EOR #$00: B% n7 a* P/ o5 l
  584. DEX
    1 M; F$ ~8 c4 T* C
  585. BNE Check3
      z; N' M! k3 K* w$ f8 k
  586. ;==============================% z6 W2 s$ ?: ]  ?5 Q
  587. ;调色板清空" l& ~% R( B  `7 }) ^5 o
  588. LDA PPU_STATUS0 {0 R- k9 L- N5 P6 |6 `$ l
  589. LDA #$3F
    # Z' M9 ~1 ^" J. k
  590. STA PPU_ADDRESS
    1 r. O; j- y  K6 Y
  591. LDA #$00
    2 X  z# U2 [" o9 C+ L! \1 t
  592. STA PPU_ADDRESS
    + l2 T$ @6 v( j* A) z
  593. LDA #$0F* @; i$ ~) a0 ~' T2 E) d2 x  y
  594. Palette_Clear8 y" Z/ W; O0 b
  595. STA PPU_DATA
    5 `* M2 D* X- w8 L, M8 H6 S
  596. INX
    ( u# a. o; s! X
  597. CPX #$20
      J4 b+ u) Y; U% w3 ?
  598. BCC Palette_Clear* Z5 c  ^9 G8 W5 C# i/ R4 R
  599. LDA #$00) p( v4 q- g6 T* e  i
  600. STA APU_STATUS- M" j; Q' g$ f

  601. $ ?6 F/ j2 H  ?& b! p1 W
  602. ;==============================
    ! o+ R3 z* V, w  L3 e% H
  603. ;RAM初始化( r9 c3 K2 d2 l) ]5 z
  604. RAM_Clear_All
    ( g* Q8 S# d) e9 E% n* C: `6 Q9 a
  605. LDY #$00
    7 u; _7 A( e  P/ X5 o* \
  606. LDX #$08
    8 J8 N% W1 J4 H5 Z! ]
  607. LDA #$002 ~7 d# Q% D% B0 F
  608. STA <$004 N  i# `; }6 T
  609. STA <$01
    $ U5 {7 b. i* N4 i$ e' X- j, c
  610. RAM_Clear_All_Start
    , f5 L! X/ t1 m$ l9 U) g; \
  611. STA [$00],Y
    . X  m! Z3 {, E% q! }: u5 f% v
  612. INY
    ; p) \3 i; B1 D" x& R3 b# q
  613. BNE RAM_Clear_All_Start/ D& W. J9 e5 u; ?* ~: o0 c8 }% |
  614. INC <$01  ~5 B4 V2 X$ _0 g! h( z( [
  615. DEX
    , b) n) S8 @0 A! I
  616. BNE RAM_Clear_All_Start
    $ h/ F) N) m( C" r- ]- J" R! |
  617. / c2 w1 T* f$ N& n8 J+ D. T
  618. JSR VramClear
    / `) r- [+ f" Y7 O3 H- y7 W2 g
  619. JSR VramInit. p. S# \+ k# H7 h9 \9 b
  620. JSR OAM_Ram_Init, Q* I% w; e& U' K) i( l* k
  621. JSR Init_Palette_Addr
    5 D: [8 i+ e: m9 _2 l1 n

  622. . n  T( P, @: t1 V# U
  623. LDA #$FF4 X* ]$ j6 e4 T% l
  624. STA Use_Ram_End7 _; ]3 O/ Z% s1 u$ ?( \& P6 `
  625. ;==============================& x2 B2 ]6 `- P- T
  626. ;初始化背景调色板
    " P# s5 Z+ h' y9 h* \# v
  627. JSR Set_Palette_Color5 M9 e9 Z7 t! f5 O& u! D% b
  628. JSR Set_NameTable_Attributes
    : S2 |& T2 |* a- @+ R# S( I0 h

  629. , Y0 p' f+ @& q* Q5 u0 m: x( U
  630. LDA #$00! T7 g3 Z# h7 L/ f0 N
  631. STA PPU_OAM_ADDR5 H" \+ Z! [- D
  632. LDA #OAM_TEMP_ADDR / $0100# o, n3 n. a7 I4 r3 S
  633. STA OAM_DMA) F5 x: g. }9 `) s9 A" }
  634. ) g' g9 Q  O& t$ S
  635. JSR Sound_Reset_Proc$ i+ Z) A" x% ]8 E6 ]# [
  636. JSR Set_Sound_Total: D$ }( `  o7 e) w& H
  637. ) i! Z# ~0 @: z* N; B, p* {
  638. Init_Start_Music  D$ b) h( f9 X/ x0 @! D1 v# b& S
  639. LDX #$00
    5 r) P5 X3 M9 e7 z& s/ C# A2 v% E
  640. Init_Start_Music_Write4 [; i5 S5 X5 ~6 M
  641. LDA Sound_Start_Port,X4 y# ]0 F# y/ p6 i
  642. STA <Music_Cur,X$ c( ~' W  @: h% G6 L
  643. INX3 V6 S, Y0 ^  R+ A- a5 J" V
  644. CPX #ITEM_MAX_SIZE3 A7 _. x5 x/ t
  645. BCC Init_Start_Music_Write
    * n) J) S& K! w; O4 {! N' Q6 T# |% P5 e

  646. 1 G7 J& f. r! L  P0 {
  647. JSR Show_Music_Text2 q3 I  z/ {# C' a
  648. 1 h% f. s- u, }' m2 Z# r
  649. .IF SOUND_BAR_SHOW_ENABLE% k6 t% a( ^' l9 k
  650. JSR Sound_Bar_Text_Set
    : M* N9 {/ |& a) O+ k
  651. .ENDIF
    + ~! J/ D) f4 t% ^, m4 }0 }8 M2 D# }
  652. + N* S+ B& o( c# C* x, J
  653. .IF Track_Name_Pos0 I8 P$ a1 P/ _# e$ \
  654. JSR Show_Track_Info
    ' r, Z* |5 u3 V* {. U: ]& o* _1 b
  655. .ENDIF
    , {- d& T& k% g2 S7 ^6 ~
  656. ; \* w9 _) S% K. j) {8 p; s4 X
  657. JSR PPU_Proc
    % D" p2 e  S: r4 B  g) O( o4 y
  658. ! B9 Q& F4 e4 N2 M
  659. ;==================================================
    / d7 \& x) [3 i- U) i. x6 s2 [  P
  660. ;音乐bank初始化 2 B9 H3 p' z: {; }0 c* g
  661. JSR Init_Sound_Bank
    + G1 F2 Q- X; w: \/ f
  662. 5 g, x7 ?2 J, }3 q) x; ]
  663. JSR Music_Show
    % I' g! j& P" Z5 U8 m: @
  664. JSR Time_Show, e1 M' ^# f0 e9 M9 j0 U2 H( e
  665. JSR Music_State_Show7 s+ M9 g, Z! _
  666. JSR Time_Delay( f5 k5 M- v1 D
  667. - S1 Q/ X; D5 n0 s( v
  668. LDA #$01/ d0 f8 B4 Z1 k3 f  d- ^8 ~. l
  669. STA <Music_Stop_State; [* j8 V' R; e# K

  670.   @$ {+ V: w$ M6 O8 F
  671. LDA #$88
    : M$ z, ^+ Z  Q: T
  672. STA Screen_Ctrl5 a( f$ D4 B3 p+ t5 h/ l# ~
  673. STA PPU_CTRL
    * t0 Y% i* P2 P+ u( V8 Q9 M
  674. , Q6 o; L2 p# G# L- O, w
  675. JSR Show_Page_Text) C1 d* k7 x8 Y0 J( `
  676. 5 X9 H" U0 Q) A4 R% `" \
  677. LDA #$102 I) K. b1 D, m  a& n1 [9 ?
  678. STA <Time_Wait_Cnt
    " P2 d& p/ c5 e

  679. & B- m- h6 V" d$ R: M# ?
  680. Wait_Time_Over
    : B2 q0 ?$ z3 [& b+ R
  681. LDA <Time_Wait_Cnt
    ' }3 @3 G( V! a6 g( ?& r
  682. BNE Wait_Time_Over. J! p( u2 R$ q) Z) D9 t0 |2 a1 `
  683. ' G7 y" c/ C+ p9 Q2 g
  684. JSR Show_Arrow
    $ M0 ]1 n* b. o" k/ o3 C) h
  685. LDA #OAM_TEMP_ADDR / $0100
    # K3 r, o! e7 h, K
  686. STA OAM_DMA
    . J' o5 r: s+ k  y5 N+ r, d
  687. 2 T5 Z3 d5 \) Z2 G, c& E2 G7 c
  688. LDA #$1E
    9 G/ p. p+ Q0 p. Z6 O) V
  689. STA Screen_State1 R( h7 j/ n( r) U8 P1 F: t# M
  690. # A1 T/ [  E, d
  691. LDX <Music_Item_Cur( {0 C+ A; ~. ~1 j" m: P
  692. LDA <Music_Cur,X
    : R) Y, K! \0 H$ u* h( c
  693. JSR Sound_Init_Proc
      k1 w/ ~$ F$ v7 |- z0 t4 J* b* W$ t) N

  694. . Q2 y' z5 o& N& H
  695. CLI
    1 ]: G) v7 v8 L
  696. JMP MainLoop
    - u+ Q7 A2 e9 ?% h2 O( G

  697. 9 u2 @( ?7 [* M  T  R9 P3 z4 ^; R" X4 e
  698. ;==============================" ^9 G9 T- U  h& d
  699. Time_Delay;延时等待" U9 ^6 z! g  b5 t
  700. LDA PPU_STATUS1 f- z3 G1 ~# ^" E. Q* y
  701. BPL Time_Delay) m9 Q' d% D  }2 {
  702. RTS1 d9 j& j: ~+ c9 w/ n0 {! p; p

  703. ( s0 E% G: L+ ^6 W
  704. ;==============================
    ! R& @) X( U5 L0 s- B0 X+ Q
  705. OAM_Ram_Init;初始化精灵内存
    - x* x# E1 P, U+ W+ w9 g
  706. LDX #$00
    / G: b$ P6 x" b: N
  707. OAM_Ram_Init_Write
      B  R- z2 @$ t+ o( \$ \7 A; Q' `
  708. LDA #$F85 Q6 ]4 ~! {3 ^( D0 r
  709. STA OAM_TEMP_ADDR,X9 o; ^2 N6 F1 v+ G) p0 s2 x
  710. INX; c5 ]! j! R% {2 j- E
  711. LDA #$F8
    ! a# Z$ Z/ I# s6 [. J
  712. STA OAM_TEMP_ADDR,X! G& ?4 |2 ]6 b$ t3 V) X" a
  713. INX+ W6 v" M. y( V6 Q
  714. LDA #$00
    $ a- n3 `( s! U* G# S7 o
  715. STA OAM_TEMP_ADDR,X
    " q# K8 k3 ]8 i8 v9 N5 i9 u! }; B
  716. INX
    & u$ J! P. }2 H) A
  717. LDA #$F8$ w! h  g) ~. U1 Z/ W! t, G1 i# c
  718. STA OAM_TEMP_ADDR,X
    6 `7 ]" U5 \9 j; f( z
  719. INX' }* A* Y! g2 E% c6 ^! M2 G
  720. BNE OAM_Ram_Init_Write* `% r% V" N& J
  721. RTS" N, S1 P4 ]/ n$ F1 i2 A

  722. 6 Z+ R5 @0 s, Q' X: ~
  723. ;==============================. Z! ~. p* a# ^! _
  724. VramClear;初始化图形内存
    7 M  \1 ~& R) [& P$ K' ~
  725. LDA #$20) J* w) J' ]  E7 e$ @' J
  726. STA PPU_ADDRESS
    5 }& S( l. m0 @' ~% ?. E
  727. LDA #$00, ]6 \. H. P8 T( z
  728. STA PPU_ADDRESS% R$ y" b# j' y% k  c- d
  729. LDA #$00
    7 R& n, Y( g# \- S& D3 D/ x0 j
  730. LDY #$007 V1 F. ]2 `0 O8 P9 L, V4 g% m
  731. LDX #$102 j3 f3 b, V9 T+ Z8 d: }* g
  732. VramClearWrite+ Z. q9 ?2 h  \
  733. STA PPU_DATA
    $ A; B2 M, a5 o% B4 l+ w% p
  734. INY
      q( Q" M  P; x+ o5 t+ m
  735. BNE VramClearWrite
    ) ?* [" B) \3 U! [  }4 g( d
  736. DEX
    " H; a" _% f. ^
  737. BNE VramClearWrite8 H" Q3 d/ q+ O9 `" ?
  738. RTS
    5 ^' e6 Q' M+ s5 k8 x2 h/ n

  739. 1 O% o1 |* k( T4 i
  740. ;==================================================
    ( G+ |: g+ A5 c. J5 O
  741. ;设置MMC3图像bank
    " a& a! j6 V# T3 N$ J3 e
  742. Init_MMC3_Chr_Bank6 T* t! p1 ]5 q7 j! ~* u2 _  X
  743. LDX #$05& D7 \+ I2 U7 U7 }9 z9 C" L
  744. Init_MMC3_Chr_Bank_Write
    5 Q; T8 I8 A$ @! |# K" O( |% @7 v
  745. STX MMC3_BANK_CTRL  \5 x* V$ F/ w( _' I/ P, Y. o) n
  746. LDA MMC3_Chr_Bank_Data,X
    . e3 Z0 r: e9 s0 i, R+ w: X
  747. STA MMC3_BANK_DATA# v' p9 s1 W, D2 o7 {+ p( b: g
  748. DEX1 _  V% A! j4 _. Y, k6 r
  749. BPL Init_MMC3_Chr_Bank_Write) A: c& k6 _: p5 M
  750. RTS
    " i7 l8 N- q: }) N- Z% i
  751. ;--------------------------------------------------
    * H4 {9 t( I7 _+ m- s
  752. MMC3_Chr_Bank_Data
    % l7 ^$ I9 o. o+ L; J
  753. .DB $00,$02,$04,$05,$06,$07
    . {% m! f. I/ Q1 y+ O

  754. $ U2 }% u* c9 a! F3 \4 L
  755. ;==============================
    5 x/ }- C' D: i( a, T* M: I# C
  756. VramInit;初始化图形内存
    9 `6 H( G1 S! z% p; p
  757. .IF CHR_RAM_ENABLE% k+ m9 c4 h. P& U
  758. LDA #CHR_DATA_BANK
    5 M. Q# b# o! {, c2 }
  759. JSR Switch_Bank_A000' ^) _  _6 Z" m* Y) q. x
  760. LDA #LOW(CHR_DATA_ADDR)! P& }: v5 |6 p  O. I/ ]3 B+ g# A
  761. STA <Data_L+ ~" i8 G4 ^& P! E
  762. LDA #HIGH(CHR_DATA_ADDR)
    . r# t2 a1 y$ H8 S# ]
  763. STA <Data_H
    $ H4 q2 U; y7 {) d  T. e
  764. LDY #$00) R4 x/ h6 R! ~6 k* {9 E
  765. LDX #$20
    ; A5 T; [" e) N1 v
  766. LDA #$00  M5 N6 W& d9 C- r: H" [
  767. STA PPU_ADDRESS+ e$ W0 H+ j, }  A% ^4 r
  768. STA PPU_ADDRESS
    9 a* v  V' ^! q& \
  769. VramInitWrite* L9 y5 b  r) @  ~
  770. LDA [Data_L],Y
      O' J  u- i0 w
  771. STA PPU_DATA
    ( l  i) Y9 r( H7 F7 V# F
  772. INY
    5 @- H; W9 \" `" C' _4 ^3 s' i! v
  773. BNE VramInitWrite' E. R" i" |2 i8 R7 r
  774. INC <Data_H
    2 \$ e: r" b4 L3 j8 {" o  W, K
  775. DEX" p4 k! _$ Q1 C7 x
  776. BNE VramInitWrite" D" w: S9 W$ F" r3 K
  777. .ENDIF
    3 @: X1 \/ n! a8 i
  778. RTS
    ; H$ \3 ?* A% S  a- ^# f& E6 _

  779. / _' l" G( Y8 a; D2 O2 w# i: T
  780. ;==============================9 F6 m4 `3 I; C
  781. ;音乐切换4 g7 J9 Y- H2 `3 h( X( ?* A
  782. Music_Play_Change
    ! ]& u; T3 _( `% w0 M
  783. LDA <Key_Once
    0 w# O9 Y7 h5 W9 ?) t/ s
  784. AND #$FF2 o: u5 q# p$ M  N$ _( }8 |2 t  P
  785. BEQ Music_Play_Change_Check& G9 A, R7 D1 g% X( @& {5 S( L7 U# Q4 L
  786. # w! N$ q8 D4 m6 ?: @
  787. ;禁用音乐条刷新
    & L$ V3 c. H9 s! J7 h+ Q6 w
  788. LDA <Text_Disable_Flag* h7 ^' t' g+ T) f0 T
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    % [* A0 |0 D  D2 l
  790. STA <Text_Disable_Flag& r' V/ n: c( w( s5 B/ A& ]
  791. ! r( V# ?( |3 F4 S$ b/ W5 @, A
  792. Music_Play_Change_Check) I  Q% D( k0 O) T
  793. Music_arrow# I, t& S  W7 u
  794. LDA <Key_Once- ^! G( E* M% u- C0 H8 r
  795. AND #$0F
    + k# b# Z4 {% I- Q! K- v
  796. BEQ Music_Play_Change_End
    : n! t' x" C8 W% o0 W7 _* Q) _) ^
  797. JSR Music_Track_Change. p) J# J) g5 d# X- b* ?. c. Z
  798. JSR Sound_Reset_Proc
    6 ?7 j: c, m* M. k
  799. JSR Music_Show
    / z+ Y) J) U. B$ O
  800. Music_Play_Change_End2 X2 ]2 z% a; ~9 M
  801. RTS
    , |! q3 H& [( _0 s: p2 e

  802. % z3 Z/ N" K8 a  U" P/ o: F8 ?
  803. ;==============================  Z7 s( @+ R& |( k' J7 n) F3 ?
  804. ;音乐曲目切换
    9 ]% h8 j; \. O3 d
  805. Music_Track_Change+ B+ U* ?& m# L" |8 c( ^  T" t& W! l0 M
  806. LDX <Music_Item_Cur
    8 a9 L2 j  b, m1 w
  807. LDA <Music_Cur,X
    ; q* r. X( z$ L
  808. STA <Music_Last
    # {* A8 j  [. `' {( \2 q
  809. Music_Decrease
    & V, _2 V1 N! D/ `) e
  810. LDA <Key_Once) K7 n3 P8 x3 B7 g( b8 p
  811. AND #$42
    ; S0 O4 g7 c8 q3 d5 j
  812. BEQ Music_Increase
    & V2 i- z/ s: ]
  813. LDA <Music_Cur,X
      n" v& N3 N0 c( X& E
  814. BEQ Music_Increase0 x8 U$ p: l% \4 u1 ?% M
  815. DEC <Music_Cur,X
    " V$ T8 z* Y# |; @9 e2 G' l: M
  816. Music_Increase2 W, }) @/ `& a, G7 \* I1 {
  817. LDA <Key_Once& [8 M( B) j1 I& \" f& B& v  m
  818. AND #$81! F! H; |& i3 @2 N! s! ]
  819. BEQ Music_Decrease_10: y3 }( A. U6 R; f7 G1 i+ k( M& ]! ?
  820. JSR Set_Sound_Total
    ) ]" T& b/ y& v+ z+ r7 x  n8 C
  821. LDA <Music_Cur,X
    - d% p! M/ n, Q0 l5 L  |% h# |
  822. CMP Music_Total) Y( S; ~5 v* l# l/ I
  823. BCS * + 4/ A! y9 C# s* H% {; I' _9 J
  824. INC <Music_Cur,X' x  I& H. J9 O2 @! Y( z% e: S
  825. Music_Decrease_10
    ; F0 @. y6 }# @! t0 q' j
  826. LDA <Key_Once8 d5 \0 ^( P( \/ T
  827. CMP #$04
      m2 \' M1 T) Y8 O
  828. BNE Music_Increase_10
    ' d. }' [6 }0 o
  829. LDA <Music_Cur,X1 _2 @, `+ `( ^: _6 O4 C
  830. CMP #10* N( [+ m2 r! R/ E! V) u9 D6 \
  831. BCC Music_Start_Song_Min( B* X1 W4 I- L* ~
  832. LDA <Music_Cur,X
    9 k5 a( w, |; U
  833. SEC# R1 F! `+ Y7 g  u' T0 ]3 g2 U
  834. SBC #10
    $ W5 R0 P4 `  B. u. E
  835. STA <Music_Cur,X7 L- H0 Z3 b. i2 I5 }: s7 f
  836. LDA #$00
    2 s6 z, h" ?7 @' N7 f6 J
  837. BEQ Music_Increase_10" q3 N! p# W3 V" ~1 m# o+ A: x
  838. Music_Start_Song_Min; t* L2 K, Y. Z
  839. LDA #$001 m' u: }, }$ D, D" F
  840. STA <Music_Cur,X
    7 m" O$ t2 u6 y; P. j
  841. Music_Increase_10
    3 w! x, J2 o3 L- @! `
  842. LDA <Key_Once
    7 c" Q8 c" s" i$ c% q! H
  843. CMP #$08% P. ~8 w8 Y2 O2 j6 u
  844. BNE Music_Track_Change_End
    5 \7 |$ N$ j. _- e! |
  845. LDA <Music_Cur,X
    ( [( e5 K& p' X3 o9 X
  846. CLC
    & P0 d: d7 i; q7 P! P1 c
  847. ADC #10
    . H1 E  e; m8 I3 O7 m% b, X
  848. CMP Music_Total
    * _! p0 |5 W3 Z6 |+ |# k
  849. BCS Music_Start_Song_Max6 t, J- [8 ^' \5 J
  850. STA <Music_Cur,X
    & Q4 M/ C& O4 P+ {( A0 O; h8 `' S
  851. LDA #000 ~( L$ j/ o1 j! i
  852. BEQ Music_Track_Change_End
    " _( Q& F! e- d9 x5 f* d
  853. Music_Start_Song_Max  U/ o6 H) L- U6 B! W
  854. LDA Music_Total
    , G. Q; B# u* ^/ j* O, b
  855. STA <Music_Cur,X
    : r$ E5 u! z- T" v& ]6 F
  856. Music_Track_Change_End
      Y7 A+ A/ J6 q. k
  857. RTS
    & B3 p% |) k' @! e/ o
  858. - {0 o0 l0 d/ ]+ o( r3 E
  859. ;==============================& J( d* \: @6 _; U$ I& L
  860. ;按键处理3 o& [9 b% v6 j( ]  _
  861. Key_Proc* Q  L0 A" P- \% ?; ~2 c$ j
  862. JSR Key_Scan& J! z' u" K8 H& Z
  863. LDA <Key_Keep
    & K( A( b9 U  z0 I/ Q3 m7 ?# K
  864. STA <Key_Temp( }1 D7 K3 W7 R; T0 L4 i& p
  865. JSR Key_Scan
    ( |+ x. l; d# @% E4 m  H6 c; k
  866. LDA <Key_Keep! P  I# y. w# q0 e
  867. CMP <Key_Temp
      W8 x/ ?# z2 L# P
  868. BEQ Key_Get_Once3 U" E* z6 _9 o
  869. LDA <Key_Kemp! Z$ H6 o- n# R  U' Q' o
  870. STA <Key_Keep  Z- M$ Y' z+ V/ T. c4 P0 R. a1 D
  871. Key_Get_Once
    0 S( a3 }" u7 G4 J5 a6 [, B" ]7 Z
  872. TAY
    ! u7 S! g: E* e  w
  873. EOR Key_Kemp
    - d4 _( A+ W. f6 p! G7 ]
  874. AND <Key_Keep
    7 `# T  i2 }0 u- j
  875. STA <Key_Once
    - O& ?: F+ j" d2 h0 s9 V' q
  876. STY <Key_Kemp, G" Q9 U4 J+ j. W
  877. RTS5 O, n: h. i, Y9 m* w; B
  878. ;------------------------------
    ( N4 w2 f' z+ k6 d% R7 Q
  879. ;按键扫描
    7 W  J/ L( E6 k+ K- G
  880. Key_Scan) v( R/ P# C  k- l( h
  881. LDX #$01
    # T& ~& b5 Z1 z0 C6 c. H3 |
  882. STX JOY1_FRAME
    3 a9 C4 {! R1 \5 p' P. Z5 j
  883. DEX6 |( b' B' ~( L
  884. STX JOY1_FRAME
    - {4 t/ \  p) V/ `0 m6 y5 R& }
  885. LDX #$08+ F  t2 ]2 N& Y
  886. Key_Value1 p/ {& b) R1 e
  887. LDA JOY1_FRAME: o+ q1 Q) m; u+ ?
  888. STA <Key_Getv
    / v- w& j+ X. q' B  A
  889. LSR A) o1 W2 @" C2 j7 q! A) Q1 q/ ^9 [* K
  890. ORA <Key_Getv" z! N2 W7 b$ p( @3 w
  891. LSR A
    ' n2 m6 V5 Z- n+ o: _' M3 W
  892. ROL <Key_Keep2 b/ C" A# W( X7 r) V) H
  893. DEX! V, ]% }0 c8 \4 A/ o0 j8 @% E
  894. BNE Key_Value! o# B0 [2 n, W5 f& j! U" v$ _2 z
  895. RTS; \# F6 A/ r. _. W. l1 }$ S+ x

  896. $ t2 z2 v6 ]! q
  897. ;==============================
    # F& [3 R! \8 o- c( [5 P
  898. .IF SOUND_BAR_SHOW_ENABLE
    + u0 m. ^0 e; _! E; U' D0 H; S
  899. ;音乐条显示
    . d: B0 z# D6 q5 V- L% u& |
  900. Music_Vision7 t. Y( H1 U9 ^7 \& N
  901. LDA <Text_Disable_Flag
    ; H0 F/ J% W3 ?
  902. AND #TEXT_DISABLE_ITEM
    ) f( ]% I0 k3 [* Q+ ^0 C
  903. BNE Music_Vision_End
    0 n, [8 w; B( r9 K; ^
  904. AND #TEXT_DISABLE_BAR
    3 o* e2 N; n: P, O9 R9 `2 M
  905. BNE Music_Vision_Set
    7 M" x, V3 ~+ s0 Z; E/ H7 O8 R
  906. LDX PPU_Cur5 p/ e6 o. i0 v
  907. JSR Music_Animation
      T4 b7 z) q% f: R  t3 e& K
  908. STX PPU_Cur: Y4 z3 j  n) J0 q! V
  909. Music_Vision_Set# z, W, c8 ]$ L
  910. LDA <Text_Disable_Flag
    9 Q7 D( E0 d8 ]1 @; [
  911. AND #TEXT_DISABLE_BAR ^ $FF, Z4 G$ Q0 ^. Y$ {$ v# I' k
  912. STA <Text_Disable_Flag4 @4 x) l0 l7 F" B; Y6 g( b; c: ~
  913. Music_Vision_End
    ; W( ~; w, B0 i9 c
  914. RTS3 l  J8 w, z+ G+ d  y+ p
  915. ;------------------------------
    * k9 ?9 t; l- M9 I
  916. ;音乐条显示处理$ T$ F& a5 ?* I
  917. Music_Animation& H& t+ H& s: t% S- m; X* }# M
  918. LDA #PPU_MODE_CNT_LINE
      {, W. f9 ]2 v1 L  D6 t
  919. STA PPU_Addr,X
    : X% ^, ?- D3 P
  920. INX
    7 B( d9 F$ ?# _7 t* F6 k. i
  921. LDA #HIGH(Sound_Bar_Pos)
    ' W4 O. j1 q5 i( M6 C* ?+ o' |
  922. STA PPU_Addr,X
    6 K2 ]% I/ D" q; u5 S7 r3 Q
  923. INX4 x# [& u( n* E: X. D
  924. LDA #LOW(Sound_Bar_Pos)
    % X$ a  {3 k* z1 X( E
  925. STA PPU_Addr,X
    " e( v( n' i) Y. G4 }
  926. INX. ~9 F. o8 ^' R" x6 l5 ?
  927. LDA #$08% T6 |' d4 U! t3 V7 P2 N$ c0 z2 V
  928. STA PPU_Addr,X
    ( O& r& ^6 b2 Y! K3 b
  929. INX7 `5 G$ s  p# y+ G; k
  930. LDA Sound_Bar
      S4 j" b* x& _2 P2 p
  931. JSR Volume_Convert7 Z+ i: {5 z. {  N& f0 _

  932. 0 v9 @  d7 U( F; t  [
  933. JSR Volume_Set_Cnt" N. [; Y/ H7 ^% F. w1 P
  934. LDA Sound_Bar+$4
    . U- f( V8 f3 s$ `' b
  935. JSR Volume_Convert
    8 S9 ?9 @9 m5 P
  936. 4 Q* H8 j% V2 d- W
  937. JSR Volume_Set_Cnt
    + m8 E! L/ F' e4 v+ w6 X+ d
  938. LDA Sound_Bar+$8* C( R' a, B5 ?! s! U, {
  939. JSR Volume_Convert6 T6 U- `( v, G& |0 |

  940. ! H& i/ F" R9 u1 y: x+ y2 n; e  ]
  941. JSR Volume_Set_Cnt
    # P0 @' ]0 q0 U  P/ Z
  942. LDA Sound_Bar+$C
    " v$ W/ Z" ~2 _4 d. D% z9 i6 A, y* Q
  943. JSR Volume_Convert; A' r# ?+ B& V$ Q
  944. , ]5 Q: V& M6 I2 E: j+ ?$ l! @* v
  945. JSR Volume_Set_Cnt
    * ?; F- e( e' S
  946. - A2 ?. Z4 ~  \/ J( x- Q  J: }$ \
  947. LDY #$10
    0 d) w1 f! A& Z/ s
  948. LDA APU_STATUS7 k' P4 b0 m. G% g8 z
  949. AND #$10
    + r( u8 U2 U  c9 U1 V
  950. BNE Volume_Count2 n$ j+ a1 {% @/ v! _; s  S8 I; n% w
  951. LDY #$00; S7 K# R; R% W- M+ ^9 b3 U' b
  952. BEQ Volume_Count7 A1 ]. U$ _5 ]. C
  953. ! ]: s  c7 U. `0 P5 @
  954. ;------------------------------
    + n- i8 ^$ O- g) |1 v6 u; {
  955. ;音乐条处理7 q& X. h4 o* b. _+ f
  956. Volume_Convert
    $ W$ s- V+ s" @) \3 p- s
  957. AND #$0F
    ; d; T& u1 a8 A0 z* `
  958. TAY. V% D: E6 U5 p
  959. Volume_Count6 Y. Q8 Y$ J$ a% ?3 N8 k
  960. LDA #$08, c* Z' M. G& _* C. `9 g2 A/ ?" [
  961. STA Sound_Bar_Cnt
    ! ?; `$ V2 B- ^) F- m# ^4 s
  962. Volume_FILL
    0 Z: {3 }8 a8 x' ?
  963. DEY
    & q' n$ g, ~. u  t3 o* @
  964. BEQ Volume_Half. A8 R8 t5 |! `7 r5 m( @5 S7 S
  965. BMI Volume_Empty
    0 T2 G& A0 B# `% _8 D
  966. DEY/ b/ J6 u$ V7 i
  967. Volume_Full
    , f2 q# t9 E# {. N: e- c
  968. LDA #$16. `+ c6 E1 j0 x% }1 K- }+ ^
  969. BNE Volume_PPU
    ( C3 W8 b5 V4 E! h; p0 Z
  970. Volume_Half# j% _$ f6 x# |
  971. LDA #$15
    / W9 F) V" r) a' w7 s6 E* A
  972. BNE Volume_PPU
    , {$ ]. l; f# b$ @8 L9 i
  973. Volume_Empty
    2 ^$ y: I0 e# P# X4 E0 u; x
  974. LDA #$14
    ! |  |0 Y; b6 u* q% ?  L: ?' e
  975. Volume_PPU
    $ L/ O) A1 q( \7 X) e, z- c+ q  E) N
  976. STA PPU_Addr,X2 Y, e' F6 Q( a4 Y  t% ^
  977. INX
    * t) W9 h* D9 _1 R. X) K
  978. DEC Sound_Bar_Cnt& k) W* |4 F* c0 B2 \# l) j. G) F7 F
  979. BNE Volume_FILL* f. m3 K; K$ c  C9 \+ A  t
  980. RTS& M9 `! U4 O) O9 o8 i2 n0 [
  981. & f$ F+ L( a: r& |  n( T! y  W8 m' m  T8 F
  982. Volume_Set_Cnt
    ( v% U) I& |9 e
  983. LDA #PPU_MODE_CNT_LINE_NEXT
      y  |: }  e5 K# M
  984. STA PPU_Addr,X3 ~$ j& [; @; c/ @1 x
  985. INX, r* Z  E+ {- `( H1 A% e2 g
  986. LDA #$08
    5 B( Q1 [) P! ]' r
  987. STA PPU_Addr,X1 s1 N* Y4 `. Q- W1 |& p+ Q& r; M
  988. INX
    # y* V9 Y+ G; d% g
  989. RTS
    ' V  h4 C5 v' O! F% _8 N2 I

  990. 2 L# F% a0 l1 [* F# Q1 i
  991. .ENDIF
    5 K. A, H9 {  g- L
  992. " u7 ?' N7 C# A' y. T
  993. ;==============================
    7 C6 |- x( X5 a, K& k, i
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入" i$ M  O  ~' D& ~$ H# C
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式6 ~% u3 F6 O% c1 q3 b' a8 N8 k
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除) p6 e: h) l& Y: N6 q4 [1 D
  997. ;------------------------------
    $ l1 D- M- i/ u& D5 p1 _3 Z( X
  998. ;PPU处理; }2 F* g* K) e: F
  999. PPU_Proc
      h( o: l4 S. e# C( D7 ]
  1000. LDX PPU_Cur; \4 R4 o* s( n5 E; i8 b& Q
  1001. LDA #$002 o' c) c+ q: {( v; e
  1002. STA PPU_Cur) y- s7 o. e8 h& f
  1003. STA PPU_Addr,X! ]! h$ h" U$ _1 s
  1004. LDA PPU_Addr# y4 y+ ?+ C) L, Y3 Q# ?
  1005. BNE PPU_Proc_Beg) z8 f; ~/ G% w5 ]6 D# ?* @
  1006. PPU_Proc_Ret, p9 D! t, @$ s0 E6 g
  1007. RTS" s$ b$ \0 H7 F1 q6 d/ C6 j

  1008. + y9 v6 N* ~( |3 {; y- V
  1009. ;------------------------------
    + g. G/ C( a3 {* I
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    - t3 G% V* Q4 |8 I6 K/ C
  1011. INX; M  L1 u) p8 W6 H# y/ J' a# r0 c
  1012. LDA PPU_Addr_L4 F8 {3 C# |) ]3 [
  1013. CLC
    + `- g! [2 M# c3 K; \2 z4 r6 h
  1014. ADC #$20
    ; [" P$ s% e" B  a
  1015. STA PPU_Addr_L
    # S2 h# {; D1 m
  1016. BCC PPU_Mode_Return_Cnt_End
    1 h) ~$ A0 q( r' G# y
  1017. INC PPU_Addr_H
    , |" {* n/ U4 \, z( o, l" @
  1018. PPU_Mode_Return_Cnt_End
    4 U! `$ D; ^* S: m' z% `  h
  1019. LDA PPU_Addr_H
    ) m, h5 ]3 [% R& H" ^5 F! ]
  1020. STA PPU_ADDRESS; U# z: u, i$ m$ E9 u8 K/ m7 ~) W; b
  1021. LDA PPU_Addr_L& h2 I- A* x  z% M7 `
  1022. STA PPU_ADDRESS
    0 R& {$ @0 O4 [* V
  1023. LDA PPU_Addr,X! \( h6 \' @$ n' F9 S
  1024. TAY
    ( L6 l/ q+ q, b3 P# ^) i4 |
  1025. PPU_Mode_Return_Cnt_Write
    2 E0 i' n3 l! e3 o
  1026. INX$ W! z. Q, i3 X6 w: G& B( t
  1027. LDA PPU_Addr,X5 t6 k9 o. M( w. E& s0 r
  1028. STA PPU_DATA: g& E% f* D! c0 J- O6 Q! u3 S
  1029. DEY
      O" D3 x: M& ^! ]0 o5 L
  1030. BNE PPU_Mode_Return_Cnt_Write
    3 P& I3 A& p; Y1 j/ g( z# ]
  1031. JMP PPU_Proc_End
    . Y! T) s0 C* u
  1032. 0 t: o) |  \( Z
  1033. ;------------------------------$ G! Q! a; v* N
  1034. PPU_Proc_Beg  ;处理开始6 Y6 d4 h1 u. P0 r0 T$ d
  1035. LDX #$00
    ( A+ a" {/ j; P/ w/ K5 Z
  1036. STX PPU_MASK
    / V  ~. c& Y" B
  1037. ;------------------------------
    2 @3 J4 p& \% R" W
  1038. PPU_Mode_Select  ;模式选择" i$ a- y+ g( z* t1 U/ V* J9 F
  1039. LDA PPU_Addr,X1 n9 G- ?$ ]0 w
  1040. CMP #PPU_MODE_CNT_CLEAR
    1 {1 Z$ F: L+ A; e3 r" l) T
  1041. BEQ PPU_Proc_Clear
    ' J. t1 N* T4 ~7 \
  1042. CMP #PPU_MODE_CNT_LINE2 L$ X1 u$ y* J2 A2 N8 b; a
  1043. BEQ PPU_Proc_Cnt_Line
    * w/ r9 ]* b) Z. R
  1044. CMP #PPU_MODE_CNT_LINE_NEXT( Q0 t/ n! a( }! e) `7 a
  1045. BEQ PPU_Mode_Return_Cnt9 W2 W3 t& I# w
  1046. JMP PPU_Proc_End_Write
    $ v( ~4 `4 }- T3 s
  1047. ;------------------------------! U) T- ]! P9 X( s( [  E* C
  1048. PPU_Proc_End  ;单行写入结束! u+ v9 `- ~' u0 q
  1049. INX
    # [- Q' ]! l* ?9 o) P6 f
  1050. LDA PPU_Addr,X# v! T2 m+ E. Z, i4 ~
  1051. BNE PPU_Mode_Select
    1 }/ E/ A) `8 Q( W+ A
  1052. STA PPU_Addr" Q2 K, P3 t1 [% T1 Q5 g( }+ o
  1053. JSR Update_Palette_Color$ G/ K  v5 c& Y+ w

  1054.   \" n! ~  f, N
  1055. PPU_Proc_End_Write- {- Z4 E/ u4 F) n3 V7 G- M9 K
  1056. LDA #$002 r% [2 r) w6 k  \3 g0 c
  1057. STA PPU_ADDRESS% P" f* {% g5 g  A* M, C+ J9 p
  1058. STA PPU_ADDRESS9 l+ b7 q9 h) x9 Y9 f. j( ?
  1059. LDA <Text_Disable_Flag
    5 e4 [7 t" c1 [% m
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF9 {& P' V* ~) Z$ `
  1061. STA <Text_Disable_Flag0 D4 ^; m$ @3 p
  1062. LDA #Scroll_X
    : E, @; w: C# y4 F4 w* [
  1063. STA PPU_SCROLL
    ' v' m% n, a) c1 T2 Z' l- Z
  1064. LDA #Scroll_Y9 S) C1 w/ n3 b: D/ o* [. \7 \$ u
  1065. STA PPU_SCROLL
    - h) x. _8 h; K  |  t! e$ t! s# n
  1066. LDA Screen_State! x# `3 }) w4 i- o$ j6 P, N: \
  1067. STA PPU_MASK2 j4 G4 X& p, ?* m
  1068. RTS" q5 W" O8 I9 m/ u( M" y1 Q

  1069. ( Q1 k! c2 I; ^3 o, V
  1070. PPU_Proc_Clear
    ; T( J6 ~$ H- q; l! C
  1071. INX: S% H0 N3 G$ l4 y
  1072. LDA PPU_Addr,X; e! r# [/ D' o6 M- J- D% }, Y
  1073. STA PPU_ADDRESS
    ; H9 U. Q4 T1 h# w: ]1 Y
  1074. INX
    * K8 d. R+ h* }7 g8 _) @
  1075. LDA PPU_Addr,X4 s, s. \# U0 @( S5 k
  1076. STA PPU_ADDRESS
    ) y5 D1 B! v9 }/ J
  1077. INX
    % d/ `# I) S/ V; G
  1078. LDY PPU_Addr,X
    + w  S+ [$ T! k4 J: n  Q' M
  1079. LDA #$00
    . N3 C8 P0 z) C5 A* r
  1080. PPU_Proc_Clear_Write2 \, v" W+ U% e1 C; U7 R* W
  1081. STA PPU_DATA6 |% y( s1 [7 Z. T& I8 r5 L# ?0 r
  1082. DEY/ X! R, v0 G8 N* {6 A
  1083. BNE PPU_Proc_Clear_Write
    ) f9 O* ^- p" S
  1084. JMP PPU_Proc_End
    + Z+ g5 [& v8 c9 u2 g8 \: u, g

  1085. ! @4 y( Y% \% j4 g; A) V2 D
  1086. PPU_Proc_Cnt_Line
    ) x2 ^$ W( t! y4 e: q. ~* t% |
  1087. INX
    ) \5 r: f  i' w: L( g0 M
  1088. LDA PPU_Addr,X
    - F; S& G- ]1 E* K, Z* E5 V
  1089. STA PPU_Addr_H2 A1 N% n0 c& T/ Z
  1090. STA PPU_ADDRESS
    " S) u) X- e- H, @0 B6 F( T
  1091. INX; _; A5 m+ Z) O2 W+ K8 L
  1092. LDA PPU_Addr,X
    5 H# P2 ]# v' q% }: u; Q  A' f9 B
  1093. STA PPU_Addr_L1 w6 ]: Z* w5 F' f
  1094. STA PPU_ADDRESS# F  J8 }! d9 z/ E4 W" N
  1095. INX
    ( T: H0 l+ q+ ]7 G4 s1 o- x
  1096. LDY PPU_Addr,X
    9 g% {2 f. s. P
  1097. PPU_Proc_Cnt_Line_Write  `# S& a/ [+ d8 J1 u
  1098. INX/ F# q( f0 G# E* M0 x0 U
  1099. LDA PPU_Addr,X
    # b: Y" U# P2 R" {* u3 B
  1100. STA PPU_DATA3 r7 i/ o" d' ?( m
  1101. DEY
    0 U5 @* U( j4 j) p
  1102. BNE PPU_Proc_Cnt_Line_Write
    6 D5 _. Q% W7 C6 S
  1103. JMP PPU_Proc_End* _3 T3 h. @9 a6 L. F* p1 I
  1104. 8 V1 a8 D/ C0 R7 b# S6 G( ~
  1105. ;==============================. L9 k, o# X6 k+ F4 I/ }, C/ K
  1106. HEX_To_Dec;十六进制转十进制
    , L& k$ t: o0 l5 b; P
  1107. STA <HEX_Data
    $ k& ]! L- p6 O) U  h! D' X7 U
  1108. PHA) `  q  A) K5 V8 Y1 q5 z
  1109. TXA
    1 a9 j# B# z: \. _
  1110. PHA
    * H, h( T# _- ~- b( Y. y* R) e9 V
  1111. LDX #$000 M7 a" J6 q5 G. d* k, p; I
  1112. LDA #$00
    8 m" E  t3 G" `$ L
  1113. HEX_Cln
    9 ^% P' ], W0 l' ]0 m7 q
  1114. STA <DEC_H,X
    + W. [4 ?( T3 L" T) X( }9 f
  1115. INX
    / [+ C) F+ X5 d( b
  1116. CPX #$03/ n4 T2 ]$ k2 S4 @( w2 E2 S. ?
  1117. BCC HEX_Cln
    + J$ D6 b+ h! O% J& j  L
  1118. LDA <HEX_Data+ [6 ^8 O4 h$ c  N  F  o
  1119. ;------------------------------
    * N, P/ i' q* B( |4 b5 t9 o, X+ T4 p
  1120. HEX_100. D0 T3 d6 E; a6 |3 F. I. X4 q
  1121. CMP #100
    ) ?: X1 F2 f" G; I
  1122. BCC HEX_10
    ! N  f$ `2 w7 c( x! Y# F* G* d
  1123. SEC
    % f/ X8 Z. E6 L. d
  1124. SBC #100
    0 Q+ l/ N' M  s, u5 X$ f
  1125. INC <DEC_H
    9 G8 N; y% F" i9 t, v* N* q& n
  1126. BNE HEX_100$ T/ E- l% N7 p( H
  1127. ;------------------------------" Z0 Z8 o( L: K+ D* f7 y$ l- C
  1128. HEX_10
    " k& H# _( e/ @$ f1 H
  1129. CMP #10
    " `5 h2 @! T( V# z1 t
  1130. BCC HEX_1) U# N6 r- b. [+ F  i" i: N+ G
  1131. SEC% c/ u1 J9 j  v! A9 n8 L+ c
  1132. SBC #10
    " U! G0 r- r! z; D+ e
  1133. INC <DEC_T
    3 Z% O3 J3 K, U. L+ d- D. ?3 H
  1134. BNE HEX_10* `7 [" e+ p. G. h( O# \# \2 C
  1135. ;------------------------------$ z4 w  T9 E0 ~, D5 |9 T, i
  1136. HEX_1
    2 v" v: _3 f6 D
  1137. STA <DEC_L: l6 c( D  R5 v8 |+ s7 V& E* I
  1138. PLA/ ~. D* i& e  w0 Q. i
  1139. TAX+ G$ u1 b2 c' x7 s7 n
  1140. PLA2 j% [% e8 h8 j% I6 H
  1141. RTS3 D" w! `) t' L" W- S
  1142. % W% b4 h& @: S5 }3 i: k
  1143. ;==============================
      W+ H  M0 @3 M) q5 f
  1144. ;音乐曲目显示$ I3 f" l2 k' ?0 B3 R% W, f% k
  1145. Music_Show
    ! M8 Y/ u0 O0 m$ q- p
  1146. LDX <Music_Item_Cur" Y$ G3 C3 _6 N7 E; O$ D9 Y
  1147. LDA <Music_Cur,X+ w/ }( h' }: q  f  d% B
  1148. CLC
    ' n, t$ N! _" N, e* s
  1149. ADC #$019 U3 E; D* I* ^) t' H1 K/ X
  1150. JSR HEX_To_Dec9 `  {* C/ k9 T, T% V, D1 ~
  1151. LDX PPU_Cur5 @) l: m; i  ~
  1152. LDA #PPU_MODE_CNT_LINE
    % Q8 w" M0 X8 C1 L. x* S
  1153. STA PPU_Addr,X
    4 o4 q9 i6 L& M) q2 \
  1154. INX  ?1 l. N, J) {$ ?
  1155. LDA #HIGH(Play_Index_Pos)% E- b8 S8 H5 k# {: z; a6 M
  1156. STA PPU_Addr,X  u2 Q+ B8 @, [0 ]+ ]( _6 L
  1157. INX, v- \) g  R8 X' `( I; K, ]
  1158. LDA #LOW(Play_Index_Pos)
    5 ^  C' {: p) q( u# p! Y3 n
  1159. STA PPU_Addr,X; O9 I2 h$ L" {6 ?: |/ t* _& w& G
  1160. INX
    8 Q& y1 v( `* I7 F5 j, _. j# _- D; R

  1161.   O7 i/ P3 V2 f! e; j# ]
  1162. LDA #$07: v: ^, X& ]9 A6 N5 a, x! v3 O' l
  1163. BNE Music_Show_Length5 d3 ^1 U/ K4 [# M; o5 y# \6 J! e
  1164. & u0 k' `$ G9 D; n5 m- q/ K, A! ?
  1165. Music_Show_Length$ u$ K" {" o- k, {& p
  1166. STA PPU_Addr,X$ p. ]" H& Z! g# O
  1167. INX2 |: J! M+ ]# d* N9 l1 B

  1168. 3 g+ d' T9 ?0 F7 V4 C
  1169. LDA <DEC_H+ o" h( R4 }$ d
  1170. ORA #'0'
    $ Q* ?6 c. [) \  t6 n
  1171. STA PPU_Addr,X7 a# r" @" @0 w! N  ^8 N
  1172. INX
    ( b2 D' J+ j; F( V( o+ Q/ j
  1173. " i2 j8 m4 S2 d+ u, A* z/ N
  1174. LDA <DEC_T
    / j( L4 \6 M; i* V
  1175. ORA #'0'4 N  L6 G* L0 w/ s: `6 e3 U% c. p
  1176. STA PPU_Addr,X
    6 [/ P6 a% D5 g& F8 c0 l. d
  1177. INX) A/ o- V; L# v9 [

  1178. 8 ]$ C! M" C1 U, d5 K3 i
  1179. LDA <DEC_L
    ; |& f9 M! `4 e5 F4 G+ Q# m' Z5 k
  1180. ORA #'0'
    - _$ N: d/ b9 i  F4 |5 |
  1181. STA PPU_Addr,X( J& X6 L7 T4 u$ i
  1182. INX
    0 M& J4 E7 q+ P' m5 \6 D
  1183. , y# W+ t) |! b+ e
  1184. LDA #'/'
    + S% @% b; N5 c0 z0 e& N3 D
  1185. STA PPU_Addr,X
    3 M0 @/ C% s5 L7 t9 D7 Y- |& E6 I
  1186. INX& n+ [- E% f* N
  1187. Music_Show_Total
    8 l, G2 l7 ?1 @( w! x. Q
  1188. LDA Music_Total1 Q* y" f1 K: M& B/ u
  1189. CLC
    8 @5 m/ e, \+ _
  1190. ADC #$01
    5 `7 |* m3 Z) f& {1 O
  1191. JSR HEX_To_Dec! d! J0 c2 M: z1 W( k

  1192. 3 R( p4 t$ H# s& c
  1193. LDA <DEC_H4 N, c, y% g8 o" r: i8 X
  1194. ORA #'0'
      r! s7 G9 Q- o1 u  P
  1195. STA PPU_Addr,X
    , n1 c8 \0 B$ P
  1196. INX6 V7 y1 d8 ^/ d# {3 {$ V' @- [$ L

  1197. ; u" Q" |7 L7 M' x8 t5 K
  1198. LDA <DEC_T
    ) c7 v. W7 G% t1 L$ e3 `
  1199. ORA #'0'
    8 Z: ^1 w0 k* l7 Y& J
  1200. STA PPU_Addr,X  Z5 b! ?  x! N; U" G, F6 m
  1201. INX, u9 J5 N* {- O! g% B
  1202. ) k) \5 v3 E( O' o
  1203. LDA <DEC_L
    . D0 E( D( k3 k9 X0 @% L: m$ U
  1204. ORA #'0'
    % U! Y9 V- @" y( @2 y* ?7 [7 x
  1205. STA PPU_Addr,X
    * _8 R- o7 @' m4 {, ]/ T7 i' h
  1206. INX
    3 J3 C6 c0 |2 w5 h. J! s9 Q

  1207. : X+ p/ v/ o4 H, h
  1208. STX PPU_Cur
    3 n6 K* r' u1 ]! |/ N2 G  Q/ K8 G8 \
  1209. Music_Show_End" G) |; k- `5 R4 G3 y# x: s) w7 h
  1210. RTS
    ( b5 _4 d! ?/ w( O; B5 i! e
  1211. % E7 v2 i" j. p' B, p# w
  1212. ;==============================8 o% [! q3 g! m3 T
  1213. Time_Show;播放时间显示
    ' S; \  i0 V1 |( m
  1214. LDA <Text_Disable_Flag
    $ M2 t* M3 T& O  T' t+ L* b. K' z( t* ~
  1215. AND #TEXT_DISABLE_ITEM
    % z5 [2 l! _8 Y, k" j* w
  1216. BNE Time_Show_End
    ( x, _7 I( G5 W$ A
  1217. AND #TEXT_DISABLE_TIME
    ! i: T2 s  y6 J$ o: ~; Y
  1218. BNE Time_Show_Enable  J  d3 c0 F% m. Z3 Z

  1219. - g, Z  J5 _- q3 B
  1220. LDX PPU_Cur
    8 n; S5 X( i1 e
  1221. LDA #PPU_MODE_CNT_LINE6 h5 d: ?# b0 m5 m' A9 }2 f
  1222. STA PPU_Addr,X. _. Z# M4 P% Y  |, D% [
  1223. INX
    & W( O; Y5 x# W$ j! @8 u
  1224. LDA #HIGH(Play_Time_Pos)  S4 V9 j5 I; K# z0 S, I
  1225. STA PPU_Addr,X
    # N* K5 }1 w0 D' ?! Y
  1226. INX0 U8 ]6 y* o+ [5 S$ M
  1227. LDA #LOW(Play_Time_Pos)
    1 w' O& `* b( A5 D
  1228. STA PPU_Addr,X
    ) w4 A' a) E6 e* O1 _
  1229. INX
    ' |0 |4 B  m+ P( t$ B8 T+ P; K
  1230. LDA #$08( n9 u# I  r, W
  1231. STA PPU_Addr,X
    . E$ v) _  J# g# \; P
  1232. INX& y0 v0 N5 N. {2 x3 ^! n
  1233. Time_Show_H' o& j1 O3 G) j8 [5 d! i* l* {
  1234. LDA <Time_H, I: r$ M) B7 Z  C# h9 E: R' P: t
  1235. JSR HEX_To_Dec. }( H' f3 U  a$ e7 G7 o, W
  1236. JSR Time_Digit2 h* W& B4 c& i$ |. w: ]# c
  1237. LDA #':'8 t+ j9 k$ v/ b. G8 T* D- \
  1238. STA PPU_Addr,X2 `7 ~7 D& l  {
  1239. INX
    % U- B6 N) d! r2 A1 i4 a6 t
  1240. Time_Show_M
    0 I' E9 D, ~  j1 m* t
  1241. LDA <Time_M; G4 Z4 {& @- R$ q
  1242. JSR HEX_To_Dec
    ' v7 b) v9 D5 g7 I! L$ t/ ~
  1243. JSR Time_Digit) E: U$ O' ]/ p; B
  1244. LDA #':'
    ( y" T, g1 @5 U6 P$ d
  1245. STA PPU_Addr,X
    ! p# [- l2 g& P" N; c% L
  1246. INX6 p/ U+ A0 |' K' c
  1247. Time_Show_S
      b, n( Y0 [, w4 W
  1248. LDA <Time_S
    8 z5 q+ G( C& n0 u6 g* x" ]+ J; I
  1249. JSR HEX_To_Dec; @2 d7 R+ T0 M. T! \! f+ c4 N
  1250. JSR Time_Digit
    - N& b6 u2 r$ J/ G, C
  1251. STX PPU_Cur: H1 ?: k5 M! A6 o
  1252. Time_Show_Enable( ]0 j" `( Q  h4 p8 {0 a, A
  1253. LDA <Text_Disable_Flag
    , y8 F- u' j8 ^: t9 o7 c' Y6 M
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    ' V* c( R" O; L. Y4 |4 f
  1255. STA <Text_Disable_Flag
    8 Y7 }/ ~$ U$ n% J7 ^# f
  1256. Time_Show_End. K; l' Q) I. s6 M' T( a
  1257. RTS5 q& z. t0 h& ?. P/ |

  1258. , y  N9 L( u& `4 {: i% j- m
  1259. Time_Digit
    , q2 V$ j) [0 k8 O9 p: d$ s
  1260. LDA <DEC_T
    9 I2 t: }# W7 }9 p, r/ l8 [* Q
  1261. ORA #'0'+ Q3 D( Q% u( F2 D6 V! c. B# G# ~
  1262. STA PPU_Addr,X6 \- u" E% `0 X- z9 N
  1263. INX
    # l1 u8 v8 G; K' S3 G8 d
  1264. LDA <DEC_L) y( _* c4 [, G
  1265. ORA #'0'" _1 q( F* e8 l
  1266. STA PPU_Addr,X* @! X! i. t/ M* _, l( ]- p9 r
  1267. INX9 @9 K3 S& j- n6 y1 e. h& X
  1268. RTS2 E# r" @7 H/ k) p
  1269. % H, M: k! V0 h9 u
  1270. ;==============================
    0 F4 w% ~$ L, |3 X9 |% f8 i) W
  1271. Time_Count;计时
    3 w/ D+ r$ v8 g+ C0 h' K1 T
  1272. LDA <Music_Stop_State/ ~9 A5 X* [$ x% c+ d
  1273. ORA <Time_Wait_Cnt
    7 O. h; C- V- E) [. q
  1274. BNE Time_Count_End
    : ^  l; t2 P9 c8 R1 W
  1275. INC <Time_Cnt
    2 @  U) O- U* V4 v6 I; f& _% W
  1276. LDA <Time_Cnt
      _; T# s8 j+ L, Z
  1277. CMP #60
    # S3 j" i6 _6 l
  1278. BCC Time_Count_End, V4 F9 v% L+ ^0 [
  1279. LDA #00% H! z2 ~7 L1 l$ D# r( U
  1280. STA <Time_Cnt5 ]7 h- }7 N/ N5 Z6 c
  1281. INC <Time_S
    : U9 `' J, M7 O5 o! x

  1282. ) o/ {3 X) t3 ^9 R5 D& x% `8 m
  1283. Time_S_Cnt
    , w! L8 c! ^- ^7 f7 Z4 C' R
  1284. LDA <Time_S
    # ^- c+ n2 j; l9 a: o
  1285. CMP #60/ k( U- I4 O1 E8 U, u) l
  1286. BCC Time_Count_End* U! S4 b6 N% |0 l3 Y
  1287. LDA #00# C0 B0 v% t  M
  1288. STA <Time_S
    2 N6 `; J6 e9 C5 i8 i$ m+ I2 s4 _0 e
  1289. INC <Time_M
    0 C) o3 c. L2 |9 y0 ]

  1290. : L- o, ], L8 e' j3 P& k
  1291. Time_M_Cnt
    # ~- P9 ]! [$ a. x. p
  1292. LDA <Time_M$ |) u* w, L' B7 y3 b9 Y; V
  1293. CMP #60
    - r+ G( A. k3 D. o% {
  1294. BCC Time_Count_End
    1 s4 x& k6 n7 N) z  O' ]( r
  1295. LDA #00) ^& T; |2 x3 n# }5 m& P$ @
  1296. STA <Time_M$ N7 P8 c  E  G- z- Q
  1297. INC <Time_H% M& k+ q6 O/ [" a
  1298. ' A- W: J6 y& l$ g* r8 \
  1299. Time_H_Cnt
    2 X' U$ A9 ?. g
  1300. LDA <Time_H( ], |( R" Q8 s* i% \% d
  1301. CMP #24
    7 u7 }: R5 m& x( M% E* ^
  1302. BCC Time_Count_End* \! t. j# o& W# _+ W
  1303. LDA #00. o, o9 f% V2 k$ G! J
  1304. STA <Time_H/ O/ f. O  o  s% J. C: D
  1305. 6 _5 R; v! Y8 v
  1306. Time_Count_End
    ( c& q: _  P' Y2 c6 A/ o6 c
  1307. RTS
    4 {4 |2 p6 {1 `7 ?
  1308. , R7 s0 v' d4 k6 M3 s, x1 l
  1309. ;==============================  L/ l% S. `2 k! p' j
  1310. Time_ReSet;播放时间重置6 Q  Z4 m' O" Z6 i# E& f1 S. V
  1311. LDA #$001 E+ _# E2 l0 B# Q% W
  1312. STA <Time_S
    3 f, r, b) y0 P9 O+ q
  1313. STA <Time_M
    ( K1 H2 W9 `* d( k4 j
  1314. STA <Time_H
    3 ]) K; j  Y/ N% E# i
  1315. STA <Time_Cnt
    , U( W: S' \' e6 U: C( P& \
  1316. RTS* ^6 z9 \% H" a- n+ q) a

  1317. - H% j. ]6 j% N2 _6 A8 p. A( a- N! i+ h6 E: `
  1318. ;==============================
    2 S( f* _6 d* H- i% f( @  a
  1319. Music_Bar_ReSet;音乐条重置; L3 y$ \& ?7 q0 U+ y8 w/ }
  1320. LDA #$00
    4 l8 Q2 J( B- E" F4 ]* I
  1321. LDX #$00
    + t5 a$ \* T* N# O% f
  1322. Music_Bar_ReSet_Set
    4 }4 z/ y6 e7 L" y( E( q
  1323. STA Sound_Bar,X( b" {2 L6 y8 K5 V' ?# |, o; [
  1324. INX
    % @% E( ?" J! G3 D
  1325. CPX #$10
    2 Q5 n* ?4 P% h* S5 n. J
  1326. BCC Music_Bar_ReSet_Set$ @! Z0 ]7 h" Z) ~2 R/ o' J$ v
  1327. RTS9 v+ ]2 l. s# g( J* b; ?
  1328. ! g0 l+ P+ C' w5 x7 R$ |, I
  1329. ;==============================
    6 B$ y( i# `" l" W+ v) H# @% c# M
  1330. PPU_Data;PPU数据写入
    4 H/ X9 x  W5 o
  1331. STY <Data_L$ G, x6 X, V0 ?$ B
  1332. STX <Data_H
      F/ m% U! p; ~4 U( o: V  q
  1333. LDY #$FF; k& M" L! f; V( f: X
  1334. LDX PPU_Cur+ S2 \1 O! N$ ?7 x% X4 l0 y; @
  1335. DEX3 x5 c5 m8 R5 Z6 V% @: h' |0 p
  1336. PPU_Data_Beg3 I0 o1 |! o5 q& ^6 X' r
  1337. INX
    4 b$ t0 o# K7 P" T
  1338. INY
    + r* l/ |* a; U* v- b& L
  1339. LDA [Data_L],Y
    2 J* r* P& y3 ]* m1 B
  1340. STA PPU_Addr,X
    2 ?# g+ E% f4 ^/ f  k. L
  1341. BNE PPU_Data_Beg8 n$ _# W6 K# s1 X3 A
  1342. STX PPU_Cur  Z$ y4 r' w- o! q: q. n) d, X/ A
  1343. PPU_Data_End
    # n9 q/ Z* p/ c
  1344. RTS4 b$ C8 z. W0 T6 E, k+ g/ G
  1345. 2 m1 ^$ z& \# ?% V) i" v. @- x
  1346. ;==============================6 |9 b% p, y* @1 G- F
  1347. Music_State_Show;播放状态显示% @. R  {7 H  p3 z+ w8 f/ V
  1348. LDA <Music_Stop_State
    6 {. o" K& @; M& U3 V
  1349. BEQ Music_State_Show_Play
    8 M% ^0 z, i9 Z8 Y
  1350. Music_State_Show_Stop1 h6 v% C! ]. _1 b2 W3 R- n) `
  1351. LDY #LOW(Music_State_Stop)
    6 X4 J. O4 c' Y* L& t3 q
  1352. LDX #HIGH(Music_State_Stop)2 K# ^; w+ W! I7 m5 }, z' a" j
  1353. JSR PPU_Data
    * m3 ~$ O& F7 E. D) _
  1354. RTS( o8 X! S6 S9 a# O) k
  1355. Music_State_Show_Play
    7 U" I/ F% R9 ]. x6 b% g
  1356. LDY #LOW(Music_State_Play)% Q0 W6 j, c+ z3 @  }6 v
  1357. LDX #HIGH(Music_State_Play); t/ T% N3 a5 e; l- a2 j/ m
  1358. JSR PPU_Data, ~2 s. s$ @# \. P$ Y/ W
  1359. RTS6 z6 Q6 c, }  p) a% G" r1 c( r8 N: U6 p

  1360. & K' _3 G/ [$ `8 B( M2 X3 o
  1361. .IF SOUND_BAR_SHOW_ENABLE; p0 t% r& S: P6 [3 o
  1362. ;==============================0 T8 k1 I6 |# @  T# n
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    * r  E: N: n2 o* x
  1364. LDY #LOW(Sound_Bar_Text_Data)
    7 \. r1 x' g8 C& l" g7 b
  1365. LDX #HIGH(Sound_Bar_Text_Data)( p+ L, z9 \7 L0 G, O
  1366. JSR PPU_Data# m) R0 g; R1 s; y8 U8 L/ {% |
  1367. RTS" g4 V$ v. i9 k1 {9 D8 O
  1368. 5 v9 [2 Y6 S8 f* e4 @
  1369. .ENDIF
    . z" u! D0 k+ M+ g4 R2 ]
  1370. * ]9 `; t7 ?7 ~" @9 D
  1371. ;==============================' J+ G( ~: D% a' U
  1372. Set_NameTable_Attributes;设置命名表属性
    # U" s- T' D- w
  1373. BIT PPU_STATUS6 x! q) ]0 I; ^' G7 N1 r6 J
  1374. LDA #$23: J  y) z& v9 x% x8 Y- q7 `9 u
  1375. STA PPU_ADDRESS
    . ^% c1 I7 t8 S* Y+ T. P0 X# `2 |
  1376. LDA #$C0" I" }5 B  N3 k8 y9 F7 {
  1377. STA PPU_ADDRESS5 L; I* B' I' t/ m
  1378. LDX #$00
    9 G2 P/ \& t# P# F9 s* N2 {
  1379. Set_NameTable_Attributes_Write
    ) g+ o5 T/ b, T" `3 y
  1380. LDA Palette_Attributes,X
    & e4 \& C* C0 |/ L) U' S" I5 F
  1381. STA PPU_DATA# ?, g9 i% A5 T: g3 i* z5 x
  1382. INX/ M8 d; B/ [( }" g- {
  1383. CPX #$404 C0 ~) h3 M/ {9 A' [
  1384. BCC Set_NameTable_Attributes_Write
    1 I$ V. @7 H$ S% O" z3 m4 n+ w
  1385. RTS
    ; l9 T! Q9 e6 r$ M1 q
  1386. / W& m, H3 |- n: u9 A$ Q' M
  1387. ;==============================  ~! B; q% Z$ O
  1388. Set_Palette_Color;设置调色板数据
    4 W. q7 M# ^% i) Z3 |
  1389. BIT PPU_STATUS' E6 u3 b7 V) ?! P# M+ F
  1390. LDA #$3F
    4 G- U1 e8 O: [. E* U% t  o
  1391. STA PPU_ADDRESS9 G+ d' }$ C$ U, ^& L! E
  1392. LDA #$00
    0 R+ }$ ]2 r/ j7 d0 j
  1393. STA PPU_ADDRESS% C3 B2 }0 p' W9 W+ D# Q, L7 r% x
  1394. LDX #$00
    * V  c5 K$ S1 i/ y: d
  1395. Set_Palette_Color_Write
    ; o' @3 t7 p% h* G. E  Q
  1396. LDA Palette_Data,X
    ' i4 ^4 o. ^5 ?' h
  1397. STA PPU_DATA, X/ _' L4 x8 N, V: \+ C2 A+ F
  1398. INX# K/ ~4 `. b+ R7 ?% O; H8 L4 J2 s
  1399. CPX #$20- e% D6 j4 q  K0 Z7 }6 L& z
  1400. BCC Set_Palette_Color_Write9 s' p5 r% v% y7 R0 U$ K$ Q
  1401. RTS% ?+ Z3 E2 B8 f
  1402. ; g: i0 ]. v& x
  1403. ;==============================
      K/ g" M) l* Q6 w' r
  1404. Init_Palette_Addr;初始化调色板数据
    % S% x  F% z* P/ h3 h2 Z6 ]
  1405. LDX #$00( [; [+ M/ x% K0 X
  1406. Init_Palette_Addr_Write6 d) F1 ~5 |$ U, h
  1407. LDA Palette_Data,X
    5 r% s- X; p$ F0 v# h
  1408. STA Palette_Addr,X* X' }& C" p& r: W
  1409. INX5 s9 ?% D( J: `) Z: f  n# P% S+ j
  1410. CPX #$20
    " u- e! Q# v, E
  1411. BCC Init_Palette_Addr_Write
    1 H% V: F$ W" J! ~/ ~. Z" N
  1412. RTS
    ( l9 @6 g! N& P8 C4 j6 S4 l
  1413. 4 P' [1 T5 V( m$ v
  1414. ;==============================
    & ~% |7 R' }" c! W0 U
  1415. Update_Palette_Color;更新调色板颜色$ S% m8 P5 Q' V3 i7 _/ Q0 _
  1416. LDA <Palette_Update_Flag  v+ W; B$ m, w
  1417. BEQ Update_Palette_Color_End
    * L3 w! P! x0 s5 t7 \
  1418. LDA #$3F
    / @6 f9 x5 g  H: u7 g% i
  1419. STA PPU_ADDRESS: r$ @4 H/ }* e( A& r1 g7 O
  1420. LDA #$0C1 j1 x7 r$ }0 I' Y
  1421. STA PPU_ADDRESS% D1 d/ r; ?0 \5 t) s# |
  1422. LDX #$0C
    , B, X0 F0 M9 s$ f! @: B- J) g
  1423. Update_Palette_Color_Write
    0 D; U3 x  v) n/ E9 D' T
  1424. LDA Palette_Addr,X' V( S0 G% K5 D- R. ~9 O/ s
  1425. STA PPU_DATA
    ( @! z% v( ^7 C( K2 F4 p2 @7 |
  1426. INX) [& ?0 V1 y+ ]% k8 A! P8 c
  1427. CPX #$142 {7 W4 U- \/ t1 k# U# y2 l
  1428. BCC Update_Palette_Color_Write
    " o7 \& d: @4 }# g
  1429. LDA #$00
    - Q! }' _& h$ a; [) `
  1430. STA <Palette_Update_Flag
    5 M" X1 i( U- y9 t" r
  1431. Update_Palette_Color_End- }5 ?: \0 i0 q, ^
  1432. RTS* n4 C1 g( j$ ^, c$ Q

  1433. 6 n# a1 Z/ `3 A- G: q- R. Y0 [

  1434. 7 C3 G+ b. Q+ Z9 u+ j- I
  1435. Update_Sprite_Palette_Data
    9 s: I, R! G. d' o5 K. A
  1436. .DB $21
    . e! U: c' |0 l" v  u1 t
  1437. .DB $21
      c# B/ R9 \: C( I
  1438. .DB $11
    ' \! z$ `  }) m* I; |
  1439. .DB $01
    8 Z  b" ~! M; P, {
  1440. .DB $01
    1 l5 H; ^& D7 L- y4 f0 [. J
  1441. .DB $11* m( M/ [7 v1 n2 F" Q0 G# R4 d
  1442. .DB $21% t! W, x4 Q& w9 X
  1443. .DB $21/ n+ p- P% H5 [" f4 s( x' d
  1444. .DB $11+ J: \$ y2 O- K0 i  j/ U
  1445. .DB $016 Q0 K2 x# p1 e- h  N
  1446. .DB $11
    + P: `: ?* Z! f. |3 l( o2 R
  1447. .DB $21
    * z& L1 i- A# g) l+ \0 h, p
  1448. .DB $21! b; d  q  ^7 t" l
  1449. .DB $116 R4 ~' _& W3 S
  1450. .DB $01
    5 K( U/ j% k# ^3 D7 I
  1451. .DB $11' u" ]2 b0 w" F: f6 b
  1452. ;==============================
    6 V9 T( H2 I$ P$ H# w& I
  1453. Update_Palette_Data;更新调色板数据& h5 \. p% d+ \6 `' J! l% ^: ^8 q
  1454. LDA Nmi_Time_Count5 K6 O6 l/ P" u: `3 D
  1455. AND #$085 P0 F/ ?! z* _. _7 c
  1456. CMP #$08
    ! J/ }, ]: U/ o' c& E. |, v8 u) w% R
  1457. BNE Update_Bkg_Palette_Data* F5 @2 n0 S% M7 \: ?( g- X& m
  1458. 4 I, r2 H& U9 b1 l7 ~3 S# l
  1459. Update_Sprite_Palette_Data_Set
    7 f2 o; V8 m1 w
  1460. LDA Nmi_Time_Count
    : a) u/ l+ Z& ?+ u- S
  1461. LSR A% _: Z: h9 m  J8 n; A, I; M4 G
  1462. LSR A/ d" R+ j, p5 v$ o" {* z
  1463. LSR A% f, K6 i+ u* U7 ^( F6 r8 i
  1464. LSR A: e4 ]; w- g* l/ s
  1465. AND #$0F
    * _- O7 R+ ^8 \, x
  1466. TAX
    , P6 z% h( k! L* ]) d
  1467. LDA Update_Sprite_Palette_Data,X
    $ _2 a/ z0 x6 @+ ~7 X5 u6 m
  1468. STA Sprite_Palette_Update_Addr, G% l+ t8 i* U4 P: j
  1469. LDA #$01
    $ d1 I) T* p, j
  1470. STA <Palette_Update_Flag9 f# {4 m0 u5 E
  1471. / u/ p, R6 K% m  Z# \8 k3 f  k
  1472. Update_Bkg_Palette_Data: w: K( ?3 q% w4 U1 Z
  1473. LDA <Text_Disable_Flag; j& H2 S3 y2 C  F  J, A# o
  1474. AND #TEXT_DISABLE_RAM
    5 A6 l4 d0 E' ]7 \3 J
  1475. BNE Update_Palette_Data_End
    9 R. z6 e( V8 A, F" \- t: j
  1476. LDA <Music_Stop_State
    * h. ^) w# ~8 ?/ m9 m% y
  1477. BNE Update_Palette_Data_End
    # J; v1 S% h/ j! N" U, M3 ^+ J

  1478. 8 }6 B) B- w& y- y) @1 M) p4 ~0 ?
  1479. Update_Palette_Data_Check
    1 C( e0 N( w8 N+ g
  1480. LDA Palette_Wait_Cnt
    ' R( k" y) F6 A% w- E1 U) x
  1481. BPL Update_Palette_Data_Check_Over$ \5 @# O6 s& D0 i
  1482. LDA #PALETTE_UPDATE_INTERVAL8 j9 t  F) O2 c3 X0 Q2 c3 B
  1483. STA Palette_Wait_Cnt
    5 ^( ^% _/ F9 X# d; ^$ M( S" ~
  1484. Update_Palette_Data_Check_Over
    3 [8 E5 z* g5 g6 A
  1485. DEC Palette_Wait_Cnt
    1 z# c9 m1 J% `5 Y. a+ l
  1486. BNE Update_Palette_Data_End  t1 T4 ]! z2 ^! l0 J

  1487. % W+ ^0 N. q% c, b5 S# H) [
  1488. LDA <Text_Disable_Flag1 l; X, O% S  a. z
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
      n( V$ I$ g, r! e: ]
  1490. STA Text_Disable_Flag
    1 h5 r0 y& f/ |, ~2 i
  1491. INC Palette_Update_Flag
    - J4 d! J, x) ?  L0 K  o7 d4 D

  1492. $ y; F$ O, m7 P7 H2 Z  q
  1493. LDA #PALETTE_UPDATE_INTERVAL
    2 `1 }' W8 P4 O" c; }5 \) Y
  1494. STA Palette_Wait_Cnt+ l, y% P& O% U, L# O
  1495. & ]! g( C; Q7 b3 @
  1496. LDA Bkg_Palette_Update_Addr) w* s5 s# y( C0 _: `" [
  1497. CMP #PALETTE_UPDATE_MAX
    5 }& T- x7 O3 R( ~3 d9 j* U  i# \. o" i
  1498. BNE Update_Bkg_Palette_Data_Set% x# d) o4 O- G/ Y5 s
  1499. LDA #PALETTE_UPDATE_MIN - 1& E$ D4 d& v; x+ o
  1500. STA Bkg_Palette_Update_Addr8 d' T1 }/ i, k( y" r
  1501. Update_Bkg_Palette_Data_Set+ O4 l% j8 Q1 h6 h  C, e- d" [
  1502. INC Bkg_Palette_Update_Addr1 @! h/ @' `4 M+ j+ ^# G( I. @

  1503. ; ^7 b1 Q* g! E) }4 h# f
  1504. Update_Palette_Data_End
    9 x& y# d4 `3 \( K. e, ?
  1505. RTS& N. ~7 \0 o9 j* o. X
  1506.   v8 i5 K  g9 N  L
  1507. ;==============================
    5 c5 W# [; G* a/ R: r8 w' U
  1508. Show_Music_Text;显示静态文本3 P, _7 Z, i, K6 O% t# P- r
  1509. LDX #$00
    * D& X$ b( D# x6 \
  1510. Show_Music_Text_Set
    $ A7 M1 c# L% Q# u: ]/ S/ c/ c
  1511. LDA Static_Text_Data,X( X9 x& J) H( x, C3 @) U
  1512. STA <Data_L
    9 f/ K3 k: c% k4 k8 J
  1513. INX
    ! X8 j9 u4 t1 U
  1514. LDA Static_Text_Data,X
    6 s. T+ @% }% e% p. O: F* E4 m( `4 b! v
  1515. STA <Data_H  q8 I3 t3 s, S) T( m
  1516. INX; M( H7 f+ S9 e( W6 q  [7 J
  1517. LDY #$00
    , \5 n3 ]: J% q0 D1 d& s+ f7 B
  1518. LDA [Data_L],Y
    + {$ A8 {- ?. O
  1519. STA <Data_Cnt8 C/ h( g1 r+ g
  1520. DEX# ^5 X: q4 o$ }6 U9 G
  1521. DEX
    - |0 C1 k# l2 A* P+ H5 a8 I; |
  1522. LDA Static_Text_Pos,X
      X4 p6 n: o! G# D
  1523. STA PPU_ADDRESS) a& `8 P. z5 R6 x/ H2 g+ ^
  1524. INX
    ! E1 [9 g- I) q- L
  1525. LDA #$20
    $ f* ~3 K5 T( L% o3 u4 ]0 W
  1526. SEC% N4 S$ ?) K7 ~5 I9 a
  1527. SBC <Data_Cnt
    " K. x- F# f6 C1 u2 L& Z4 W/ Q  M+ _
  1528. LSR A5 Y' v7 x- ?% U8 @* }  z
  1529. STA <Data_Buf  E9 i  Y2 R5 `7 R1 |1 d
  1530. LDA Static_Text_Pos,X- _& x" z0 g5 l; j; G( ?
  1531. AND #$E0
    * V1 [: d$ a  f+ @
  1532. CLC
      a: G5 a" i/ V
  1533. ADC <Data_Buf% U- U7 C" Y% e' v$ Z
  1534. STA PPU_ADDRESS
    & V+ N* `: x# f( b! U, h; d! p  c
  1535. INX
    & ~/ W# [( F0 t6 V; s
  1536. Show_Music_Text_Set_Write
    9 X6 t" {( `/ e
  1537. INY
    0 y, Z4 G! y. z! |: L- k1 C
  1538. LDA [Data_L],Y
    ; ~' v) t2 Q4 s( i" u4 l
  1539. STA PPU_DATA
    4 w& [" `& r* o8 B
  1540. DEC <Data_Cnt: g4 S. X: C$ t: G- I7 V8 z: V
  1541. BNE Show_Music_Text_Set_Write0 ]' q% a) A6 M% I/ ?& K  y
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    8 ~) r: e5 ~$ R- f* p' u
  1543. BCC Show_Music_Text_Set
    ; M6 Q3 J, z2 w3 u1 L; S( u
  1544. RTS# u. J1 W* b% C& y" S1 X  `
  1545. - P" g. b  F/ ]& J: R
  1546. ;==============================
    & ^5 V) J0 {9 B" m# N1 Y
  1547. .IF Track_Name_Pos;显示曲目信息% ~3 Y. G6 B# O" r2 B
  1548. 2 J% u* c2 f1 v. }  y9 j! B
  1549. Clear_Track_Info
    # a6 O) Q5 S5 X" Z5 h' i
  1550. PHA
    / y" u* r" m, m3 s$ U
  1551. LDX <Music_Item_Cur
    # m# @" H0 X5 P/ }2 ?1 c3 Z# [8 q+ O
  1552. LDA Track_Name_Addr_Flag,X) W+ }0 r5 `9 ]! t1 E0 B6 Y' B
  1553. BEQ Clear_Track_Info_End_Ex
    " Q+ J& p8 Q5 j' O6 E. t0 J' {
  1554. PLA2 D3 j# N3 p2 d' Y, T

  1555. ( {: V# G* ^5 y4 r9 t9 x) c
  1556. LDX PPU_Cur* y: ?. C% w7 B. l) s1 \
  1557. PHA  \& |# x  Q- l, V# P2 m" J, F% @
  1558. LDA #PPU_MODE_CNT_CLEAR
    # O2 ^; m; C, k0 r5 K$ T1 S
  1559. STA PPU_Addr,X+ O) `) s2 L; b7 ]9 @
  1560. INX/ h% f: [# L" `. f+ f0 `
  1561. PLA
    0 q0 r- @4 O: Q. f
  1562. JSR Show_Get_Track_Name_Center_Pos) D* K3 e9 |3 C+ Z3 E
  1563. STX PPU_Cur
    ) \' J6 Y0 J3 c5 E
  1564. Clear_Track_Info_End
    , [* q, P$ j1 O
  1565. RTS
    1 A# ^. j% n2 n
  1566. Clear_Track_Info_End_Ex8 W) c2 [- e3 Q: X* w: x
  1567. PLA
    $ [( c  N3 {, N/ c2 t$ X" {8 a$ v
  1568. RTS
      r/ y+ g3 F, w9 n6 y5 A

  1569. # L5 v+ j' ^% y# i( Y
  1570. Write_Track_Info# u! ^# i5 N4 h3 t2 S! y- t
  1571. PHA
    ( {: H$ z3 `0 I$ x; ?( \; n
  1572. LDX <Music_Item_Cur
    - T/ |# g( P/ r) o8 t
  1573. LDA Track_Name_Addr_Flag,X6 p* f# ^( G) b( p0 P" s0 Z! Q
  1574. BEQ Write_Track_Info_End_Ex
    / h6 U8 I) b0 h# ^3 m7 r
  1575. PLA
    ; O8 ~5 r5 Q  T

  1576.   ~$ V6 b$ S4 v5 `0 P- u; D
  1577. PHA
    ' ^9 v' s+ u& T2 Z
  1578. LDX PPU_Cur
    9 G* p( t8 ~& `* d' ~. S% e
  1579. LDA #PPU_MODE_CNT_LINE
    * Q" S# b5 L: a* n) f
  1580. STA PPU_Addr,X
    , [5 F0 W' V) i" c, F
  1581. INX
    : Z0 H; _; n* o. f
  1582. PLA
    ! w( s4 [3 I7 \9 U8 A
  1583. JSR Show_Get_Track_Name_Center_Pos
    & e* O- {' a  p5 R
  1584. Write_Track_Info_Data9 C/ ~+ `$ l9 R/ K$ t3 L7 t- g
  1585. INY/ T4 |. h7 D0 g+ R" D' f5 b
  1586. LDA [Data_L],Y
    5 C) o  h* U5 P4 W1 _
  1587. STA PPU_Addr,X2 i8 [$ ^7 ]* _
  1588. INX" b4 v3 |0 @% Q* L" f/ ?1 {" F8 T
  1589. DEC <Data_Cnt
    6 p$ Y" C- ^8 d
  1590. BNE Write_Track_Info_Data
    ( B6 T+ \$ A) |( g
  1591. STX PPU_Cur
    6 D1 B* ]$ t) z; h' y+ z
  1592. Write_Track_Info_End
    * K- s+ f" k# b/ D. H3 S# S
  1593. RTS
    , t' o# Y5 {: c, A* W, n- ~. @
  1594. Write_Track_Info_End_Ex
    " c+ E8 g6 Q' U4 Y
  1595. PLA/ e/ B1 F4 S- L! @
  1596. RTS' }) Y2 s* ?8 o6 e+ w. K# |

  1597.   [* l" R$ X; F4 }
  1598. Show_Track_Info( V& V! u- T" [" U% e- z" ?
  1599. Show_Track_Info_Clear3 D% M3 b; e9 ^% n/ O
  1600. LDA <Music_Last* L; Y+ S/ A; C; I
  1601. ( t+ G' U0 Y  }. B& Y
  1602. JSR Clear_Track_Info
    # N% e" z" i; Q3 g

  1603. ; {2 T" g/ Q7 Q) R) ^8 d  O
  1604. LDX <Music_Item_Cur& j  Q' T! O4 _. ]
  1605. LDA <Music_Cur,X
    ; H" H$ ?1 F: k( L
  1606. JSR Write_Track_Info% A6 U: b+ ~6 h( c2 n2 [6 P
  1607. RTS( w% p) I( N4 p5 N& V3 T

  1608. ( k& X! G9 Q/ b5 w3 q  o
  1609. ;==============================
    ' X- K4 e/ R- \
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置- A$ ?% y, r% t7 Y. s3 m
  1611. + M: k* `5 }2 y; \8 G5 m
  1612. ;取出集合名索引0 I0 r- Z9 S8 E6 Y7 }
  1613. PHA
    , O+ A% ^  o! g- E# f# G: l

  1614. 5 V( M) |, j* f7 ^/ {
  1615. LDA <Music_Item_Cur
    ! R* l# r7 k! |9 w* C! d( W
  1616. ASL A
    1 ]% K+ |& B, z( C# S
  1617. TAY
      z# U; ^3 \4 o2 H) e1 a
  1618. LDA Track_Name_Addr_Port,Y
    ; g8 A4 ]; z- l7 ]8 s) R  V
  1619. PHA
    9 k" x1 f, H/ w
  1620. INY; K/ U, n( O/ p+ \# Q( v$ t+ K
  1621. LDA Track_Name_Addr_Port,Y. X3 k. U7 Z5 v! v; K$ Q5 ?8 X3 ?8 e
  1622. STA <Data_H
    0 O# s7 d& D+ W  m0 G7 \1 r
  1623. PLA8 ?9 [4 ?% ?; J* A% D) D* h) [" d# c) j- @
  1624. STA <Data_L# w3 r, y5 F# F! r3 d

  1625. , P6 o) u% p% M2 b( R( i# q
  1626. PLA: u, f: A* P6 [
  1627. $ w( \1 G0 N7 i/ i. Z& `
  1628. ASL A
    9 P8 w8 `# u4 ]4 O
  1629. TAY5 k% |0 Z) ?  j* u
  1630. LDA [Data_L],Y
    * b+ @2 i! W/ W9 n+ W8 |; h6 l
  1631. PHA
    ) [% g( _* E5 e5 Q: d
  1632. INY
    1 k2 _+ ]% V( s+ j% U4 g. J
  1633. LDA [Data_L],Y
    " t5 l& `/ Y& U
  1634. STA Data_H
    ; [2 q, J% X# ]& F  h
  1635. PLA. [5 c# e4 E# r& ~: k% e; X
  1636. STA Data_L% K' B% Q0 U: N( V6 U; r2 L
  1637. ' N: D- g" [1 {- B% K
  1638. LDY #$00
    ; V% X* u6 I3 ^) W# [3 n6 e/ f
  1639. LDA [Data_L],Y6 j9 u; r, M3 ?0 g( Y& O
  1640. STA <Data_Cnt
    " ]$ T1 J" g4 M" Z* L
  1641. LDA #$20
    ) Y# K1 A- n( G6 L( i! J( Q
  1642. SEC
    4 k  P& F+ N5 Z/ x- {. L5 G8 q
  1643. SBC <Data_Cnt
    - a: q+ l+ f8 F& N
  1644. LSR A
    2 ^/ L0 `: B$ Y8 f* t# ^+ J
  1645. STA <Data_Buf8 H& `& U) i( {  h& D
  1646. LDA #HIGH(Track_Name_Pos), c+ s' S1 o% |7 K. w( W  l' l3 r7 Z+ @
  1647. STA PPU_Addr,X
    # x1 @% j4 k5 F( E* e9 I
  1648. INX
    ) L0 R; S1 S) W9 q
  1649. LDA #LOW(Track_Name_Pos)! z2 i! E6 Y8 _$ ~/ K' a
  1650. AND #$E0
    * z1 |" C1 t. _) X9 O, Q$ ?
  1651. CLC
    & M1 w) A0 u2 J/ b( U  z
  1652. ADC <Data_Buf
    * H' e8 C- X9 }: y) m
  1653. STA PPU_Addr,X
    & z$ R& z. I8 {9 x8 d, D5 a
  1654. INX4 p( Z9 A- B) V9 R
  1655. LDA <Data_Cnt' \2 P7 b) `+ ?
  1656. STA PPU_Addr,X& q% ^' X& h2 v- t$ w6 t
  1657. INX
    8 u" Z/ C! x( `" Y+ g* S6 `
  1658. Show_Get_Pos_Center_End+ }" m# g3 U) S! B! G
  1659. RTS9 u. y. M: @$ r% Q9 ~! G
  1660. .ENDIF
    : n4 ?! ]. V1 Z& D
  1661. ) F% A4 W2 |# b: Q
  1662. ;==============================$ i$ B- B4 h" G0 J, q: o
  1663. ;音乐端口清除+ H2 t+ @. _* Q& B
  1664. Sound_Data_Clear
    # q; ?5 k6 L8 k
  1665. JSR Sound_Port_Clear- D* ^: V5 O2 g; U* H
  1666. JSR Sound_Ram_Clear4 t, u2 U, X7 a! |, ^
  1667. RTS
    ' _- Q: @, t* c4 H. s; D

  1668. , [; d* `% S- M6 _, n
  1669. ;==============================
    / N7 _7 p. \& a9 {/ ]
  1670. ;音乐端口清除' g, j. N0 S( L
  1671. Sound_Port_Clear1 u2 N( L; u7 M5 B' E4 D
  1672. LDA #$00% L- {6 @1 w- |) u$ P( y8 H; S
  1673. STA APU_STATUS
    5 |0 O' Z) E" o/ T1 c
  1674. LDX #$00+ ?4 r' W3 ^) l
  1675. Sound_Port_Clear_Write. Q0 R  R! U6 W2 D6 w- `
  1676. STA $4000,X
    : G5 z$ K# |/ o. Q8 c
  1677. INX
    ; n/ f4 R6 L$ m1 `$ m8 S6 r2 Z
  1678. CPX #$149 v0 h" u$ r  H7 J( n; P; ?+ `
  1679. BCC Sound_Port_Clear_Write0 Q* w) p8 V8 Y% n
  1680. RTS
    ; q4 b! n- Q4 _$ G7 J

  1681. 7 Q: F& V5 o1 D$ D; V# h$ |, G
  1682. ;==============================
    ( E9 M$ \: C: t2 H: b# J' s
  1683. Sound_Ram_Clear;RAM清除  \" D5 w' t4 s7 m5 c
  1684. LDX #$00) x7 n2 c) W0 R3 p
  1685. LDA #$00$ r) M% O  v5 w: |( T, V5 j8 l1 z
  1686. Sound_Ram_Clear_1
    # F# A1 @" I" I: C4 z& W6 l0 D
  1687. STA Sound_Ram_Addr_1,X4 G; X7 {) x) f) }% i+ w
  1688. INX
    3 }& r% u  i5 r1 ^% T
  1689. CPX #Sound_Ram_Addr_1_Size% k5 |3 e% h$ u8 J
  1690. BNE Sound_Ram_Clear_1, P+ d9 [$ n$ _& y5 ~( r
  1691. LDX #$004 _7 A0 i- `: ?8 Y6 y
  1692. Sound_Ram_Clear_2' u' I  O* Q* [- a/ a
  1693. STA Sound_Ram_Addr_2,X
    : i  _, V( l6 }# K  g% k; [) `
  1694. INX
    " `! Q( r, [9 f: h5 S/ I0 r9 M
  1695. CPX #Sound_Ram_Addr_2_Size
    4 d2 _9 l5 ?4 Z. _8 ~: P. B, H
  1696. BNE Sound_Ram_Clear_2
    ; [5 w1 [: U8 O' M, A6 j
  1697. LDX #$00
    - z0 p8 ^7 i- T; Z# o* J& w
  1698. Sound_Ram_Clear_3
    0 R, o, W7 V3 p# k' B7 P% r4 w  ]
  1699. STA Sound_Ram_Addr_3,X
    9 i; I9 e, `' f" S% E6 p; h
  1700. INX  u- R5 c, z4 a+ H
  1701. CPX #Sound_Ram_Addr_3_Size8 Z; E/ ]/ P2 [' Y! }" o7 q! p
  1702. BNE Sound_Ram_Clear_3
    4 x4 a* b, u. P, P  e& |+ b/ t
  1703. LDX #$00& N3 o( }9 m& u9 C2 @1 b
  1704. Sound_Ram_Clear_4
    * Q% Q4 `6 b1 W+ D( }# R
  1705. STA Sound_Ram_Addr_4,X
    ( k) z1 I4 e1 T7 k. h: E2 O! C
  1706. INX8 V% \, @$ Q; ?
  1707. CPX #Sound_Ram_Addr_4_Size  d6 x" p5 D3 O7 Y' Q! l8 I3 I
  1708. BNE Sound_Ram_Clear_4
    7 g; B. U3 r/ Q# Z  f
  1709. Sound_Ram_Clear_5
    9 Q- [$ ]6 F& f
  1710. STA Sound_Ram_Addr_5,X2 P/ H: n2 F. U) B; s( x5 q
  1711. INX6 @) E: x/ w$ S8 H) O
  1712. CPX #Sound_Ram_Addr_5_Size% c1 H% ]( a' E) `3 Q% T2 B
  1713. BNE Sound_Ram_Clear_5
    9 ^# a9 p* U* \7 N5 ~% J  I$ i! {0 G
  1714. RTS
    - H0 b. s2 f6 h0 u* K8 @3 {2 m7 [4 a
  1715. # A6 U5 `6 ?0 U0 u, P( G
  1716. Get_Music_Collection_Name
    ( m- @  q8 W/ P
  1717. PHA# z( C; q5 i) r7 \
  1718. LDA <Music_Item_Cur
    * z; r' D7 K9 c8 ^# p' ?# K
  1719. ASL A
    ' m$ E2 y( s: P% O
  1720. TAY' d" l/ n7 n+ p! T; h8 H' k
  1721. LDA Music_Collection_Name,Y
    $ W1 L$ X+ I* E$ U3 Q1 _9 f
  1722. STA <Data_L9 |# t& @& P7 M- j! c9 n
  1723. INY1 I) ?& i1 X. a' H- `
  1724. LDA Music_Collection_Name,Y+ D3 e5 O) }  w. m) _
  1725. STA <Data_H7 ^3 ~/ [3 Z) m
  1726. PLA' K- U8 T  o7 z& \9 t3 P; r; H2 g
  1727. RTS6 ?/ q8 Q/ j) s
  1728.   Z1 I1 f6 l- Z4 H, e
  1729. Set_Sound_Total
    ' Q6 ~9 B: }# L3 a+ p0 K
  1730. LDY <Music_Item_Cur9 A' |% K  p7 C5 A9 W
  1731. LDA Sound_Total_Port,Y# B" ~+ S8 L! l  K' f
  1732. SEC3 O& X/ ^( {* t
  1733. SBC #$01, K" F4 Z/ g+ P
  1734. STA <Music_Total
    0 c" H1 x9 P/ f5 V% |
  1735. RTS7 O7 n* E+ @* k  N% Q
  1736. + z; v: o% v* Q* Y
  1737. Get_Sound_Start
    % p* d+ e* I' [+ n5 L
  1738. LDY <Music_Item_Cur
      \# ]7 ^, }& F& @" A$ W
  1739. LDA Sound_Start_Port,Y  Q# b) L. @% S) ?  F  ~; s9 @
  1740. RTS# U, i0 h9 d# e6 |& X( t
  1741. $ c; K! v4 X7 A, v( f- H, q3 N
  1742. Set_Sound_Init_Port
    - c3 ^7 O# l- Y3 G5 {" K. ^! M( R
  1743. PHA
    3 W- ?* ]- X+ h4 ^! z  O& Z2 H& i
  1744. LDA #$20
    , _2 D/ F! r: ?: o  G& p
  1745. STA <JSR_Addr_Op: d( E2 I5 x3 ~3 b6 d# a8 X/ W" {- q
  1746. LDA <Music_Item_Cur
      {5 @: t7 F4 Z- H8 H
  1747. ASL A
    / D/ K& h, w- M* C, H$ S) p+ ?  P
  1748. TAY& L# d$ x: O# ^4 |
  1749. LDA Sound_Init_Port,Y
    3 a0 x8 B( [0 i; b, @& i) i
  1750. STA <JSR_Addr_L# b% O) ]4 v& j2 k! p% r* q
  1751. INY: S+ Y3 K) E! {# L
  1752. LDA Sound_Init_Port,Y2 \# x5 g  C7 P/ {$ ?1 J
  1753. STA <JSR_Addr_H+ a$ Q+ F6 f8 p* {( V
  1754. LDA #$60$ z. b) b% h  H. s
  1755. STA <JSR_Addr_Rts. _9 q. f8 q# p! U
  1756. PLA9 p, M$ u/ M5 {3 ^; f0 x
  1757. RTS
    ( X4 J' a6 e2 _: ?5 ]; @

  1758. ! T- \& y" J" L. M5 O5 w
  1759. Set_Sound_Play_Port1 W. W6 Z, H" ~  G8 g) }" Y+ V
  1760. PHA+ p" L! c0 `$ S6 r( s3 S% Z
  1761. LDA #$20
    & v. N% w7 c- s: R
  1762. STA <JSR_Addr_Op  E" |* Q  @) K' t, U8 b% `. C! ]
  1763. LDA <Music_Item_Cur
    1 {+ s: u1 F' p# X( x$ A9 l' T
  1764. ASL A- G! R! o, C0 @0 w: o" c6 z; i0 ~
  1765. TAY
    4 G: |! [# E. V
  1766. LDA Sound_Play_Port,Y
    ! N# A# U9 }- Y
  1767. STA <JSR_Addr_L
    * W) J4 H8 i! l  c# j( }
  1768. INY
    # y7 X3 R& _2 S1 R
  1769. LDA Sound_Play_Port,Y
    ! L# }  j3 K6 l, A0 |
  1770. STA <JSR_Addr_H
    " g( ]/ a" m) M& l' n
  1771. LDA #$60" U0 ^+ z" {' k5 h$ Z! ~  |
  1772. STA <JSR_Addr_Rts% G& L$ Z+ C8 V, [4 o
  1773. PLA
    7 p0 F4 j- }+ _; i9 o
  1774. RTS
    1 r! w$ C, x% _

  1775. 1 F! ]3 S! X2 t
  1776. Set_Sound_Reset_Port0 W1 N1 O' _5 L8 d( |8 E9 M
  1777. PHA1 N6 n/ z( Q5 X
  1778. LDA #$20
      r4 u2 U$ X9 i! g7 l# U  l
  1779. STA <JSR_Addr_Op0 k2 D+ w' a% S, l6 L
  1780. LDA <Music_Item_Cur# B* ^% q" C9 }9 {1 z9 R
  1781. ASL A
    % h) \# j  D  @9 y$ k6 c: x
  1782. TAY% X2 T8 U2 _1 S) ]
  1783. LDA Sound_Reset_Port,Y7 O7 A# f) `! ?! y- F* Q
  1784. STA <JSR_Addr_L
    # p1 s. c2 g/ j0 I+ c: W3 S8 y
  1785. INY- q  F/ P& j: |8 U; d
  1786. LDA Sound_Reset_Port,Y' X! c% d9 ?& a4 j
  1787. STA <JSR_Addr_H
    / `  J  {7 p# K1 U
  1788. LDA #$60
    4 }! |1 ^) p: D3 z
  1789. STA <JSR_Addr_Rts2 ^* J$ b% o9 c, ?2 V% a
  1790. PLA2 T2 Q5 ^4 J8 L
  1791. RTS
    2 z5 J4 k. ^0 e
  1792. ' t% ~  N9 C0 h( K0 Y/ Z5 K9 O  }
  1793. ;初始化音乐bank0 U( k# _" ~$ \' ^' x2 @$ u
  1794. Init_Sound_Bank  K" p4 `$ H- _% r' T/ V
  1795. LDY <Music_Item_Cur5 _8 |6 [6 Z; _- L3 P' x2 y
  1796. LDA Sound_Bank_8000,Y
    & f1 \4 D1 W- _/ V9 B! k
  1797. STA <Music_Bank_8000
    / E& \) R. p- k# w9 V" I5 \8 s) I
  1798. LDY <Music_Item_Cur
      l5 r0 c3 p  F' _; G
  1799. LDA Sound_Bank_A000,Y
    & z2 g/ y' a4 O* S) Y
  1800. STA <Music_Bank_A000
    7 H) o) R- z0 z4 F4 `3 \+ s# ^
  1801. RTS( C1 V: w! s7 v5 ~$ {+ A  C) K
  1802. ! E# {, ~, x# ]) l2 W2 C
  1803. ;==================================================; k$ [( {/ j/ Q! |* l
  1804. Sound_State_Reset;音乐状态重置
    0 A" D1 Y6 ~' r* ^5 O5 Q
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    $ h8 U: O( J7 n% Y( K
  1806. JSR Time_ReSet             ;重置播放时间
    0 Q& o! L/ @( B. ?# ^" r, P
  1807. 4 i  M- X  X" m# b: K1 p& ~: F6 t
  1808. LDA #$00/ |, v- P' _* q, U0 V  I
  1809. STA <Music_Stop_State
    4 a: A1 g. E% ]/ D
  1810. JSR Music_State_Show       ;显示播放状态
    " V) Q1 O5 J7 E' F5 y, \

  1811. 8 M% N7 U8 }7 z  g+ r0 z4 V6 ]
  1812. .IF Track_Name_Pos
    1 y% J4 H$ F2 Q9 B' Y. O
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    ; M+ P! t/ k+ a; T2 o7 o
  1814. .ENDIF
    ; I. p: R% J8 X7 v
  1815. 4 C; C% H3 e- l- d. {& m4 y- [2 j
  1816. RTS
    % H8 B( J  v! g3 A: w
  1817. ) S7 U4 k1 G  Q/ x2 w) e7 x0 E
  1818. ;==================================================
    ! D& g  x9 H% d/ W5 |* ?
  1819. Sound_Init_Proc;音乐初始化处理) o: [) R$ Z9 l  y* J  l
  1820. PHA
    - j) g6 O9 W: l* w
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    & x  q$ _7 F' p2 y8 k" n
  1822. LDA #$00
    " q. O. y6 P1 U3 A6 }- Z. [
  1823. STA <Scroll_H               ;重设水平滚动  ^8 ~# U4 P* K% N6 ?% w( G0 A- [
  1824. LDA #$0F0 D$ p2 U1 ^5 @/ C0 e, e
  1825. STA APU_STATUS" K( x% c" V6 n; Y
  1826. PLA
    % e$ R; p( I$ S2 d& |' w
  1827. JSR Sound_Init             ;音乐初始化
    , b% T, @& c' r3 J1 G
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    : H) m' U9 l2 X
  1829. RTS
    # E# G* e2 G7 {7 I; ~! `" b
  1830. 4 a1 K, |/ ]0 {9 Q- f6 ?
  1831. ;==================================================5 D% x: F0 z) s6 p; a* R. H( ~$ h
  1832. Sound_Play_Proc;音乐播放处理
    - z! [8 m! R6 k! w8 M
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    " v3 F/ i5 w) f9 e9 K
  1834. JSR Sound_Play             ;音乐播放2 Z7 j# ?5 |' B% k' p4 c4 t
  1835. RTS
    2 E5 v8 `8 a7 H6 O' l
  1836. + B* M; c4 V# p; x4 @- i
  1837. ;==================================================+ @1 Y0 m; Y2 s8 x& e5 W8 L
  1838. Sound_Reset_Proc;音乐重置处理
    . D/ ~# q# [- F+ F: \
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ' B+ E* `8 r% y  q- Q2 w' U
  1840. LDA <JSR_Addr_L9 W( \1 }4 p; [) N2 h. D+ w
  1841. ORA <JSR_Addr_H
    9 c: Q5 u- B9 K
  1842. BEQ Sound_Reset_Proc_Default, F3 V) W  c$ }) T1 Q  p; o1 e# ?4 [- i
  1843. JSR Sound_Reset            ;执行音乐重置
      z0 G3 G8 k3 \& q
  1844. JMP Sound_Reset_Proc_Init_Sound; a* f' T& S% J) j$ x/ l3 ?

  1845. % R) Z8 p3 [* E2 I9 |) K
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    8 C$ i* u# ?7 z0 t6 I  ?
  1847. 7 q9 R3 [  V5 F# a( C  D
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    # \( J. Z. o+ X- A; N
  1849. LDA #$00
    2 w1 p0 S9 D6 \1 k; m
  1850. STA PPU_CTRL
    ' g/ e. \5 t1 G  G' L8 u# n0 W

  1851. ' O# t) g% G: y8 y/ _7 t; ~7 [8 k' m
  1852. JSR Sound_Data_Clear
    % I% n6 [" ]: }$ e' P
  1853. " Z7 E( E: Z, u1 `* U. X; F
  1854. Sound_Reset_Proc_Default_Wait
    3 Q3 |2 ?+ F2 s
  1855. LDA PPU_STATUS
    0 s6 V  i$ d. s! m" M/ \3 _
  1856. BPL Sound_Reset_Proc_Default_Wait. e9 W6 W3 h( I7 B( D
  1857. 9 g; ?9 b5 J" x/ I) ]* s1 w
  1858. LDA #$003 h$ n7 f$ n8 z) S( }
  1859. STA PPU_ADDRESS5 [# ~5 `1 E  k! A: ?
  1860. STA PPU_ADDRESS
    ) l% o: z  a( }& i+ x
  1861. STA PPU_SCROLL- p' W4 ?' O1 x
  1862. STA PPU_SCROLL
    5 N  y- n% m1 M" B2 K+ X2 v. d
  1863.   X/ `  ]$ W+ y
  1864. ;恢复PPU控制- [) \9 R+ g9 C5 o
  1865. LDA Screen_Ctrl! m$ Q- m; L; E2 C/ U  p: v0 w
  1866. STA PPU_CTRL8 x) B. w( y1 j9 `( i, W$ b

  1867. / t+ [8 D% n+ w) s  e
  1868. Sound_Reset_Proc_Init_Sound
    , U9 y0 _/ v3 F8 p+ A/ v) r8 [
  1869. LDA <Music_Stop_State
    9 \: d' h3 g' G4 R2 y$ r: A/ b& I
  1870. BNE Sound_Reset_Proc_End% B& p' b& d3 X* E# a5 }
  1871. LDX <Music_Item_Cur
    ( X1 }. Y+ r2 @0 _
  1872. LDA <Music_Cur,X7 M/ C& `2 a& u1 u9 Y
  1873. JSR Sound_Init_Proc
    + N( l4 d0 k1 N3 p  O
  1874. Sound_Reset_Proc_End
    ( V2 X( N9 v' P; R
  1875. RTS$ R  @4 P5 c) D$ U' \4 n3 A% B0 q$ ~

  1876. 6 p; o% |: U% J- L6 _% M
  1877. ;==================================================3 T- m; L6 c& m. X4 s
  1878. Clear_Item_Text;清除页项目
    0 H! w* Q7 w! ?
  1879. LDX PPU_Cur
    1 ?/ D, ?( A% S& w* n0 f
  1880. LDA #PPU_MODE_CNT_CLEAR
    ! l6 R3 h6 w4 n& l4 J! p, U
  1881. STA PPU_Addr,X/ s) K% w3 N; ?
  1882. INX6 l3 b0 R* `5 Y9 a
  1883. 1 A3 ]4 C' {$ p) a
  1884. LDA <Page_Last: D  z( K4 m" H# n' L$ T7 h4 s% u5 Y
  1885. SEC
    / t$ _+ ^  N+ L  W6 N
  1886. SBC <Page_Last_Index
    6 P, S6 L3 `* a9 T: H
  1887. ASL A4 u- k5 C6 [+ O( t5 F, E

  1888. # e' g9 l  m' \, X. m, h; O* f, P
  1889. TAY
    % L5 Y. U6 [9 E$ L
  1890. LDA Item_Pos_Data,Y* T+ C9 B6 F  H. P( |1 C
  1891. PHA
    ! ~' j0 {1 h5 z, W& J; q3 `
  1892. INY4 p. q/ N" L& }. D$ x
  1893. LDA Item_Pos_Data,Y
    8 ]9 X% G5 f% a, W* Q7 C" H, I
  1894. STA PPU_Addr,X0 C3 T# E+ C4 e
  1895. INX
    % Q; f5 Z% M2 y6 J5 ]
  1896. PLA" g$ z' Z: e4 h' w; r
  1897. STA PPU_Addr,X
    1 ]$ Z2 Z8 o! a2 n9 l6 h2 K! n
  1898. INX
    ' }9 O; \- a$ E  o$ U+ i

  1899. 1 G1 W" M. ?( Z, @/ _# ^' e
  1900. LDA <Page_Last
    ) n1 s: c! g$ r) d
  1901. ASL A
    2 x# F2 a8 `/ o/ m
  1902. TAY% O( _' B& x3 ~/ W) y
  1903. LDA Music_Collection_Name,Y& Y9 {! P- W2 ^- e/ \
  1904. STA <Data_L1 ^6 [" x  S3 A" R" O
  1905. INY# i& w+ B7 `7 s
  1906. LDA Music_Collection_Name,Y
    ! D8 r" M9 s2 [6 b: {' o! B
  1907. STA <Data_H; {8 X* n2 F" t1 H9 S$ i+ W+ ~: M

  1908. 8 Q: S! u. U$ L2 b! c
  1909. LDY #$00- ~# R. p: X1 D
  1910. LDA [Data_L],Y
    8 `7 R* r# X3 P+ p5 ~9 R
  1911. STA PPU_Addr,X9 i. \: V' y# f5 a2 T8 i# g
  1912. INX
    * ~7 Z& y$ n8 }* c3 C
  1913. Clear_Item_Text_End9 m5 c5 \% H( e% j0 T
  1914. STX PPU_Cur% M. b, J+ T  {( l
  1915. RTS2 S5 \2 m) a" y$ K
  1916. 8 d4 }4 J) }7 T! D  V
  1917. ;==================================================
    9 F. @2 w, N0 Q
  1918. Show_Item_Text;显示页项目
    " J& a% M; D- ^% A
  1919. LDX PPU_Cur
    ! {8 U! @6 t. |7 C% x6 f
  1920. LDA #PPU_MODE_CNT_LINE
    " \' `" ?) b6 \8 h5 |# o7 T4 r
  1921. STA PPU_Addr,X
    5 l* m) Q* U& o
  1922. INX
    $ t2 Z* O0 J/ p$ P" D& K: Y
  1923. LDA Page_Cur* |- g; \6 K5 f3 H7 U" u) t9 w; I
  1924. SEC4 z( @" f) X8 H& ]5 T. P7 |" _5 X
  1925. SBC <Page_Cur_Index; O/ w+ \/ A% k8 N
  1926. ASL A5 `/ L( y7 K% S2 O- H
  1927. TAY
    1 U+ t+ Z( C' u( Q$ E2 O4 j
  1928. LDA Item_Pos_Data,Y
    3 E/ O( K/ g7 x1 C1 Q" m  w4 P: X- I
  1929. PHA
    0 U4 m( z9 r4 z3 ?
  1930. INY1 }# a: U, q1 }# J' L9 n
  1931. LDA Item_Pos_Data,Y
    5 S7 ~; W) |2 E9 \
  1932. STA PPU_Addr,X
    ! A! Q% a  H! V/ P. Q' m
  1933. INX
    5 ?. v; @# Y) A  H1 i
  1934. PLA
    $ V- l  l( K6 Y5 r: ~( R8 j
  1935. STA PPU_Addr,X
    5 L. `: F4 `6 C5 o
  1936. INX
    6 U: ^& z$ `1 ^/ r& f* n9 }+ Q! Y

  1937. : a) n% m* H% q+ h
  1938. LDA Page_Cur
    0 a9 |! [5 W; b# l$ {
  1939. ASL A
    & v& [+ s0 T) \# H5 B' D  f
  1940. TAY8 u% q8 W4 y+ u( y, P
  1941. LDA Music_Collection_Name,Y
    + u2 k0 g+ R, b* M; d; Z  v9 H
  1942. STA <Data_L
    & m, s& A0 C. ?4 b
  1943. INY! J2 ~; E, C3 D* K' l8 V# b3 }
  1944. LDA Music_Collection_Name,Y# r. q. E/ U0 e4 k5 A+ y8 q
  1945. STA <Data_H) t" o; w3 G' p9 B( I6 [( I

  1946. - z8 W+ M$ a+ R
  1947. LDY #$00
    + S- g0 Q. }# Q" G, L2 w
  1948. LDA [Data_L],Y4 w/ y+ W8 u6 @* y6 _1 O
  1949. STA PPU_Addr,X
    ) w7 A0 H/ E* X1 J, Z% W1 P9 B
  1950. STA Data_Cnt, t% t2 ]1 }% _; X0 P+ O
  1951. INX
    9 \2 W- U; r, L$ ^8 h/ [
  1952. ) s* E( y7 S9 t: r
  1953. INY
    / G, J7 y# u! x& e
  1954. Show_Item_Text_Write
    , G/ }& {. \! `
  1955. LDA [Data_L],Y
    + n# [9 W4 X1 u7 N1 P
  1956. STA PPU_Addr,X* O" u+ J* N0 P! n+ `% A- ^: m7 h
  1957. INY5 N" U0 Z# e: q* e" B% d
  1958. INX6 F( M! @6 b% f) ^  X" e5 }4 [
  1959. DEC Data_Cnt5 h; u  B; t4 O7 j, U
  1960. BNE Show_Item_Text_Write; |2 y# k/ [8 c; j* t* w) w! b
  1961. " Z4 K; P" X. E# H
  1962. Show_Item_Text_End7 E. ]; a" I* T. T1 f/ L
  1963. STX PPU_Cur2 h2 L8 e; d5 i* z' b5 U; l" j
  1964. RTS: N0 R7 z8 U0 V! y7 Y4 ~4 E
  1965. 8 S; n7 \; q- w) Y
  1966. ;==================================================5 |0 M7 I+ i0 s$ Q  Y3 {; Q
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    ( g* ~6 y+ r  b% w9 ~- \
  1968. STA <Data_Buf
    9 `7 t8 m8 q- v
  1969. LDA #$00
    5 D- T7 C7 Y  q! ^
  1970. Get_Page_Index_Calc
    ' \; ~9 J1 g$ K
  1971. CLC) L/ T3 K1 E( s" R5 b. C! C: Q
  1972. ADC #PAGE_SIZE- x; o0 j4 Y& {4 Y- t+ W: U4 W
  1973. CMP <Data_Buf' O6 h( G. D6 a7 b: I) j* K* M
  1974. BCC Get_Page_Index_Calc/ P9 m4 J3 v) Z
  1975. BEQ Get_Page_Index_Calc_End
    ) ?  ^. Q  e  |  K' |" I& b' c
  1976. SEC+ D8 `( w% }5 j% P; u
  1977. SBC #PAGE_SIZE+ a  K. {- [- O9 G0 l/ n
  1978. Get_Page_Index_Calc_End
    : w8 E6 O) _- ]/ X) M
  1979. STA <Data_Buf1 E( ~# h) G) }% [" Y: P
  1980. Get_Page_Index_Cnt- |' v4 S1 _1 k4 R: G, E: r! w
  1981. LDA #PAGE_SIZE
    3 W' V* {0 u; F3 h; @! }
  1982. STA Data_Cnt
    8 [; x, S6 `' C

  1983. ' d- ?0 N3 [7 W" Y0 X
  1984. LDA <Data_Buf
    5 i- K9 l$ N+ ~
  1985. CLC; x) p. N$ b% i: \4 r
  1986. ADC #PAGE_SIZE6 @) Y0 H; W* C% A
  1987. CMP #ITEM_MAX_SIZE
    1 ~; e, D& C" E* U: J* A
  1988. BCC Get_Page_Index_Cnt_End; b; O" f* h$ h, L) T& a
  1989. , a* ]4 E) Z" d6 o9 P
  1990. LDA #ITEM_MAX_SIZE+ |& X' u9 V4 p+ i
  1991. SEC
    , ]+ }' |  ?5 h" d; S1 a0 G
  1992. SBC <Data_Buf
    & u3 U* N! S/ w: i" a
  1993. STA <Data_Cnt/ |3 E8 X4 b5 N# p; T4 v( K- m" N

  1994. / K' \& q4 b1 `- {' e" |4 Z
  1995. Get_Page_Index_Cnt_End
    ( y) w# _  ~' \
  1996. RTS& c, W8 F0 a0 I" x% L3 p8 k8 C
  1997. 0 R9 W6 L4 b  j2 ^
  1998. ;==================================================; ]' k6 Q! M8 u+ z% y
  1999. Get_Last_Page_Start_Index
    4 `1 J0 W* |$ p: y4 N+ B  g+ `* j
  2000. LDA <Music_Item_Last
    ) Q' S/ U. O3 }9 p
  2001. JSR Get_Page_Start_Index
    1 f# ?4 ]$ ^5 f5 r4 l
  2002. LDA Data_Buf
    . _$ n5 {1 V. M/ R: S
  2003. STA Page_Last6 Y3 L8 i/ p2 B5 r. A
  2004. STA Page_Last_Index2 [. v( @$ P& \6 p* R
  2005. LDA Data_Cnt. ]6 q$ N. @% E2 O- y2 ^9 X/ Q: h  W
  2006. STA Page_Last_Cnt( b3 F) F, E! }4 I* n
  2007. RTS) a' W, a# k" p. N+ V( G* Q

  2008. 0 |9 k# I! B. Z1 W9 M- n! Q
  2009. ;==================================================5 R8 @6 t2 N4 y
  2010. Get_Cur_Page_Start_Index
    - a% f1 r! j& [
  2011. LDA <Music_Item_Cur8 q4 e- F9 X, ]* x1 d
  2012. JSR Get_Page_Start_Index  T: \4 G4 m# ?* w0 j; E5 z
  2013. LDA Data_Buf
    - i9 O4 Q( L! U* d0 u
  2014. STA Page_Cur' ?0 K4 U7 `8 x* }
  2015. STA Page_Cur_Index
    8 x$ I7 I/ @( q- W
  2016. LDA Data_Cnt
    ( L& b3 b0 j) _3 }0 R
  2017. STA Page_Cur_Cnt, e- Y! z2 O4 H3 g4 `$ O- ?4 k5 G4 {
  2018. RTS/ V  B. V0 s5 m, T' ~5 x3 M% H7 Q9 K
  2019. + p/ Y1 ]* m. }" X3 |( o
  2020. ;==================================================: s4 H+ y( V0 S" z
  2021. Show_Page_Text;显示页文本
    7 k, |9 `$ w; r, ^
  2022. LDA <Text_Disable_Flag  J3 L- ^" v9 c  q$ _& V% ~7 Z
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM, U1 p" `7 m6 O! H( Y
  2024. STA <Text_Disable_Flag
    5 L! M( g$ B# {

  2025. " }) H1 t8 I  ~0 h' Y* N8 O
  2026. JSR Get_Last_Page_Start_Index
    " `  w8 T/ S% b$ U
  2027. JSR Get_Cur_Page_Start_Index
    % i. u) ]% }# ]- H! h! t5 W) X
  2028. / i/ S2 y; K: }
  2029. Show_Page_Text_Set
    2 c7 u  r- x. M) Y
  2030. ; ~& {+ J: u, N. v  O# Y0 g
  2031. Clear_Page_Last_Item;清理上一页
    0 Y  R* J( Q% m( ~
  2032. LDA Page_Last_Cnt
    4 W1 ]0 ~+ n) ~' j# ?& [' B
  2033. BEQ Clear_Page_Last_Item_End" D6 a' A3 e8 a" d# g
  2034. JSR Clear_Item_Text5 n$ _/ M& t3 S) b$ t+ d$ ?
  2035. INC Page_Last! G9 r. M5 A- ~/ a3 q$ R# m$ O
  2036. DEC Page_Last_Cnt
    8 `( g) K5 R5 @
  2037. Clear_Page_Last_Item_End0 _9 u: f; g; `, ?2 ?1 T) w% |
  2038. 4 M  x. Z( g( @2 h% @+ ^
  2039. Show_Page_Cur_Item;显示当前页
    1 L6 R- Y4 N  g! R; Y/ s* X
  2040. LDA Page_Cur_Cnt/ f' K- }) [  R& F9 {& a3 I
  2041. BEQ Show_Page_Cur_Item_End( w" T, s9 i# b8 [0 N/ S
  2042. JSR Show_Item_Text- r4 R5 p, R# }; w6 ?0 X- s
  2043. INC Page_Cur
    ; h0 z7 n: o& d* r
  2044. DEC Page_Cur_Cnt
    , x+ j! ], N0 R1 c/ t0 U+ ]; R2 {
  2045. Show_Page_Cur_Item_End
    ) ~) ^, b" ]2 {+ N1 Z, O* k7 e# ]

  2046. 3 b% z* B% p/ l+ Z5 s- M4 e
  2047. INC <Time_Wait_Cnt
    # Y, F3 a& a& a+ i6 P* s! M
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    + H1 B$ P6 j+ x/ U) Y
  2049. LDA <Time_Wait_Cnt
    - n6 q0 K$ t- O7 u6 v
  2050. BNE Show_Page_Text_Set_Wait
    - M$ z0 H/ X6 ]: t

  2051. 9 Y+ r7 C% N1 Q& {& w$ ~
  2052. LDA Page_Last_Cnt
    " x) s3 Y; P5 k4 Z9 `, R9 V
  2053. ORA Page_Cur_Cnt- w5 _0 T3 s9 D) b4 B7 Q+ u
  2054. BNE Show_Page_Text_Set2 D' V" z( L' G$ r: Z& h/ h
  2055. LDA <Text_Disable_Flag
    . B1 }& \3 T7 h  ]
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    , A1 `7 {6 _! c1 i
  2057. STA <Text_Disable_Flag" |' x/ J* t/ ~4 y9 d/ I( H
  2058. RTS
    " P9 U' E/ E% C5 N
  2059. 1 i: t' z6 R  |* Z- U
  2060. ;==================================================
    5 j- c& z& S8 s) E
  2061. Last_Item;上一项
    . ]7 y, U7 m6 r% h% J
  2062. JSR Clear_Last_Track_Name
    0 m, G; [+ @! O2 p
  2063. JSR Disable_Text_Draw
    7 s2 W6 \" s( B4 E, q

  2064. # q7 @0 x# Q+ v7 ?
  2065. LDA <Music_Item_Cur
    : `4 G1 |& @0 p2 v  @
  2066. STA <Music_Item_Last" I) ?# J2 S" c* ^) h
  2067. - d& Y# c( L3 P, `) H2 O2 d. V
  2068. JSR Get_Last_Page_Start_Index1 ^; V- m7 u6 t

  2069. * P* t% x' C& E' i: a$ {
  2070. LDA #$00) S0 I8 @9 t( Z9 q9 f
  2071. STA Data_Buf7 e! X* Y: _/ l" v- {' s0 L5 j

  2072. + z( `! S4 m% }
  2073. LDA <Page_Last
    ' _" M4 I% l, q
  2074. CMP <Music_Item_Cur( d) w& _, l1 S$ v0 F. D- t
  2075. BNE Last_Item_Begin
    7 J& Q  {4 [3 W* j5 e) s
  2076. 2 Q# M- ?# Z" @$ K% t
  2077. LDA #$016 q! P+ r' v: L
  2078. STA Data_Buf
    ( `! l# e" x! b/ @; C9 F% v$ c
  2079. Last_Item_Begin
    : N+ I2 D2 G4 u+ ~( Y# X6 O+ S' c6 F
  2080. LDA <Music_Item_Cur
    1 @& d( g/ t. B
  2081. BNE Last_Item_Set/ \  k" h4 f8 W0 T& F1 A" Z
  2082. LDA #ITEM_MAX_INDEX + 1
    1 ~$ W6 `, x% K9 Z; |/ |/ |
  2083. STA <Music_Item_Cur
    ; [3 h7 H+ C/ R6 D

  2084. + z, [4 N) A0 ~7 n6 K1 V/ V& R4 U
  2085. Last_Item_Set
    & h- h" c5 v; G* \4 I8 t, j
  2086. DEC <Music_Item_Cur$ j  j0 O- o8 ]5 X
  2087. LDA <Music_Item_Cur
    % H4 f7 \( |8 V% V$ e) b
  2088. JSR Reset_Current_Music* `' U0 B6 R, s& T# r/ p8 j$ h; ~% |
  2089. 1 C; K7 \, h3 S8 J! l5 w. \
  2090. Last_Item_Play
      R8 n) F& B  K4 ~& w
  2091. LDA Data_Buf
    0 r- ^% J  K8 h- {/ r! C6 Z; |. Y
  2092. BEQ Last_Item_End, r- E6 F2 w- ~4 x/ B8 N' d
  2093. JSR Show_Page_Text
    2 l$ F/ g/ n* r5 G* L6 f" H
  2094. Last_Item_End( R  w* j: F# n* ~' t
  2095. RTS, t1 y" X4 r# I) T8 Q2 b2 t0 u

  2096. 0 @& m, ~' C% j. g; o* [
  2097. ;==================================================' _+ \5 I5 W! k0 S; ]6 M, E
  2098. Next_Item;下一项
      }5 h/ }7 u2 R& j6 z3 n
  2099. JSR Clear_Last_Track_Name
    6 f  Y- ?( y+ ~, \0 C; Q9 C
  2100. JSR Disable_Text_Draw
    $ K- f/ L1 y% \( a  u- M& ]

  2101. * q, j" j$ e) {( ~% i7 V
  2102. LDA <Music_Item_Cur
    % W6 n9 E1 j6 _* O) F( I" D
  2103. STA <Music_Item_Last
    & L% y- l0 I+ c+ a  n5 ^
  2104. , g6 D$ _/ m7 b" _) E# V) E* j
  2105. JSR Get_Last_Page_Start_Index& N- k7 ^# g8 l5 g( P, E, X& e3 w

  2106. 1 ], M% x3 e& d& I- c, W4 m/ F
  2107. LDA #$00( G  Y/ r5 b& I* p) U
  2108. STA Data_Buf
    + r, Z6 g6 K( ?& e; X( T; }

  2109. 2 U: I! \1 a% N, p5 R: b
  2110. LDA <Page_Last2 f  M; q6 `& V1 ?2 r$ K2 U
  2111. CLC4 V- }3 q' X3 T6 V
  2112. ADC <Page_Last_Cnt
    " Q+ }9 v& t8 g
  2113. SEC
    ( Q) a! L- O; K4 e" ~# I4 o0 Z
  2114. SBC #$013 N& }8 J4 e& B( l4 \9 L) Y/ @) S6 \" W
  2115. CMP <Music_Item_Cur& w0 U3 ?4 a4 M* n# x4 b2 _
  2116. BNE Next_Item_Begin
    % W9 q& K5 g" D. a

  2117. . s6 N( W( p* I$ O" Z" s0 W
  2118. LDA #$011 {, i/ P5 z( S" F) P. ^  n
  2119. STA Data_Buf
    . a: J- g) A0 h% `0 t" O
  2120. Next_Item_Begin
    0 P% s! Y% p0 {; A6 ?+ B3 }' H
  2121. LDA <Music_Item_Cur
    % ]; {3 i' ^& |8 Z! S# }
  2122. CMP #ITEM_MAX_INDEX8 |( D1 X4 d- F7 l" ?! W
  2123. BCC Next_Item_Set
    , g! y9 ?' {) n' T# f1 v, i0 h
  2124. LDA #$FF! \) `/ X! o# c0 y3 b) q/ ~
  2125. STA <Music_Item_Cur1 x% D% g# r: q6 B2 j- G8 S
  2126. Next_Item_Set7 _' ]( R. D& E( B% b5 A& T: b
  2127. INC <Music_Item_Cur
    , Z! w% z5 k' p
  2128. LDA <Music_Item_Cur
    ( q! Q; H: i; a2 B, K3 Z6 \
  2129. LDA <Music_Item_Cur% s- d% u6 a1 B3 [$ m  w" A0 V0 ^
  2130. JSR Reset_Current_Music! t2 I; i1 ~3 C* B' d" `# W* r
  2131. Next_Item_Play5 W3 l3 d; B3 ~4 f3 q1 }
  2132. LDA Data_Buf  i7 U" \( z1 i* H: v' i8 J9 P6 m
  2133. BEQ Next_Item_End
    & E% \$ ^4 S/ g7 H) q/ y
  2134. JSR Show_Page_Text# ^( t. P- c8 f" z7 O, H$ b
  2135. Next_Item_End
    / G0 L2 a$ E4 S! U  X
  2136. RTS
    9 d( w3 N5 \' z, s
  2137. ' _# w/ m3 {9 F# \
  2138. ;==================================================
    * p- i9 {0 a" ~1 S) p: v
  2139. Last_Page;上一页6 a* b* _) n5 M- @* s! I8 u% _
  2140. RTS
    / w: N2 _. R: x0 ]. R

  2141. * B- {8 z" O" A( n, D
  2142. ;==================================================
    5 R! O6 W' q8 e: u
  2143. Next_Page;下一页
    ; ]( O6 M! {  f; A- @8 ?
  2144. LDA #PAGE_MAX_INDEX5 u5 J/ ]3 a0 S$ A1 l
  2145. CMP #$01! c5 j( Q4 e$ T# U
  2146. BEQ Next_Page_End6 V7 J! z5 u( Z$ {

  2147. # t3 l/ W+ N2 `1 w* I% ~) u
  2148. LDA <Music_Item_Cur
    ! _/ g) y0 o( [0 ^4 Z
  2149. STA <Music_Item_Last
    * ], v6 F! b- M* }

  2150. ' |& @. x3 V* o9 b  d' R
  2151. JSR Get_Last_Page_Start_Index
    2 Q3 W, ]" I' K, v& z2 b! n

  2152. 6 t. p& `3 N+ g  B+ T
  2153. LDA <Page_Last_Index# T) O( f% w& @0 O
  2154. CMP #PAGE_MAX_INDEX
    ' h( X( E& L0 p# [9 z
  2155. BCS Next_Page_In_End_Page
    6 t  P8 }6 \2 o. P* Y( Q
  2156. $ i  d, H+ f% `$ Z, G9 w3 @
  2157. Next_Page_Not_End_Page;不是在最后一页
    8 g$ V% Z7 t1 E7 ^
  2158. LDA <Music_Item_Cur0 W) c0 t+ h& o; `
  2159. CLC
    1 B8 O3 m! g& q) j0 H! K
  2160. ADC #PAGE_SIZE
    7 _4 l$ v. X  T4 X
  2161. CMP #ITEM_MAX_SIZE
    % R& L7 e; r" A: u4 N! U. G# @
  2162. BCC Next_Page_Not_End_Page_Less
    * \7 ~* Z- ~( |: r1 A
  2163. LDA <Music_Item_Cur1 |  ?' D) e+ K, D8 T+ t
  2164. SEC) B  B9 T0 T! A/ B2 E0 D
  2165. SBC <Page_Last_Index
    " M7 a' P$ }$ R1 [, j
  2166. CLC5 x6 z* d8 H8 q( X
  2167. ADC #PAGE_MAX_INDEX
    4 s0 u! Q& G  \8 f8 e+ a
  2168. CMP #ITEM_MAX_SIZE
    9 V% V2 u* C4 p. J' w
  2169. BCC Next_Page_Not_End_Page_Less& u# |9 T7 q* Q1 ?
  2170. LDA #ITEM_MAX_INDEX( J! T8 _# H7 ]3 L
  2171. Next_Page_Not_End_Page_Less/ C" a% d5 C4 E# A$ z! w* c
  2172. STA <Music_Item_Cur
    & m( Q" {  e; y( z" d! @8 P0 c
  2173. JMP Next_Page_Reset
    9 l( M: S0 ^0 _- J; ~
  2174. $ U5 b! A3 @5 Z& u5 D: `  Z
  2175. Next_Page_In_End_Page;在最后一页" v" `  G- A$ F1 N$ W/ U
  2176. LDA <Music_Item_Cur8 E, T7 V- J0 _, J/ _, e
  2177. SEC, x4 @$ G; v3 ~
  2178. SBC <Page_Last_Index
    3 @4 a/ y" p/ L
  2179. STA <Music_Item_Cur
    8 w, E1 H. w! t. f% N# C$ F

  2180. ' e$ P9 Q9 w, _5 o) g
  2181. Next_Page_Reset
    ) D) R1 o" L* r2 D) I  B7 _9 s% ]
  2182. LDA <Music_Item_Cur2 t- Z6 I. J5 @( {9 G! B, H5 Y2 D
  2183. JSR Reset_Current_Music% t& @; P# u: i5 Q
  2184. JSR Show_Page_Text
    5 b6 u# }: T# I5 e) s6 M7 L9 i$ E# z
  2185. Next_Page_End: P2 L  ^5 e" l* @, \2 ]
  2186. RTS
    5 C7 L; m0 E) X" U
  2187.   f, t- q& W6 f* D. G1 `" ?* K! e0 f
  2188. ;==================================================
    " x% V$ [, M& ^
  2189. Disable_Text_Draw;禁用音乐条刷新
    " K4 H0 ^8 \) h$ V6 ]) @
  2190. LDA <Text_Disable_Flag
    - V4 l" e: K8 z$ W. Z5 U: {
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME1 i; M% O/ S  p- E
  2192. STA <Text_Disable_Flag
    9 U! g% N8 k% g) w+ Q
  2193. RTS, I' v$ J; \/ I/ J8 D1 A% F
  2194.   B0 r' b9 G5 `! X
  2195. ;==================================================
    8 F& Q% C' P/ X) }9 [
  2196. Clear_Last_Track_Name;清除上次曲目名/ y6 s% f8 f7 D' a8 i6 g0 ~
  2197. LDX <Music_Item_Cur- C' s: a0 }9 _, u4 o
  2198. LDA <Music_Cur,X* W; [) b' k) @9 b) a: a; ^5 C1 Y
  2199. .IF Track_Name_Pos+ W& j0 D9 U- c% j* ~* \
  2200. JSR Clear_Track_Info+ D# i: u- b2 I: b" l5 G
  2201. .ENDIF
    2 j+ q& R, K( v/ o/ z
  2202. RTS
    5 G4 J# h3 Z+ i" }/ V  _

  2203.   v& i, T# j$ o. Z
  2204. ;==================================================
    & s( G& P+ t! h. P8 |- `' I7 l
  2205. Reset_Current_Music;重设当前曲目
    ( u8 b2 I) @3 N3 o- k! H- @

  2206. ' g: D5 g! h4 l) g5 k2 O3 O
  2207. ;写入当前总曲目
    % U+ ?' \; L! Y1 B  d- T
  2208. JSR Set_Sound_Total
    9 t8 A: X1 P8 B, V
  2209. LDX <Music_Item_Cur
    9 Y4 @5 D- C& I$ `3 v/ d
  2210.   d* @) C8 t" m7 g8 c
  2211. LDA #$000 U+ i: |+ T- d. S2 h
  2212. STA <Music_Last/ S/ K& Z" |, H" ^3 q
  2213. 1 m( C( J5 n# |. z  B3 r# C( R( ?$ d
  2214. JSR Sound_Reset_Proc, `: q2 p4 c7 r
  2215. JSR Music_Show
    " S' h* o# \3 d' S% E% s; `5 i
  2216. RTS
    " C# `+ ]/ h$ F$ y
  2217. 2 J3 P! C, _0 n( O7 z
  2218. ;==================================================( }9 }, o0 ]0 L: i! w4 Q6 m
  2219. Music_Song_Stop;音乐停止
    3 m# @5 v0 ?* n6 P
  2220. LDA #$01) ~. m' ^$ g2 z9 i2 f
  2221. STA <Music_Stop_State
    . R& e/ N) ~5 ]0 p$ {
  2222. JSR Music_Bar_ReSet
    . m5 k. h! l( M! o9 D+ ?0 ~
  2223. JSR Time_ReSet
    - m5 w  Q- }: G1 q" Y8 v
  2224. JSR Sound_Data_Clear
    ; Q" e* J3 x! y( z3 D* p
  2225. JSR Music_State_Show' F7 R/ `2 A" Z+ ]0 |
  2226. RTS9 U- {9 }9 S+ ?3 y  N

  2227. & v6 r0 }# L+ P* ^9 Y5 q# k3 B. ^
  2228. ;==================================================
    0 u4 r! w2 I% X8 A
  2229. Music_Song_Play;音乐播放
    * R2 f+ A) q- Z$ T7 N! Z; U3 `
  2230. LDA #$003 Z% ^' K! x8 O8 W1 R0 B
  2231. STA <Music_Stop_State
    6 V3 C2 f( k  k" b1 I
  2232. LDX <Music_Item_Cur
    " y  `8 @) a: s7 U
  2233. LDA <Music_Cur,X
      Z  Z8 L: n! l5 K
  2234. JSR Sound_Init_Proc
    ; V, Q' i' L) o* y6 ~& y
  2235. RTS+ L! a2 s* B/ w2 w0 O9 w

  2236. ; E0 s: k  X) Y/ C0 K, Z
  2237. ;==================================================* s7 Y7 T/ n2 c/ ^9 k2 |/ e
  2238. Music_Song_Last_10;上10曲
    & |& B2 B4 J$ O  c. v
  2239. JSR Clear_Last_Track_Name# G! _/ G/ L& N* N  O8 Y
  2240. JSR Disable_Text_Draw
    7 q1 t* a- y$ z' ]0 }7 N8 N3 i( ^
  2241. LDX <Music_Item_Cur
    * F$ `! K4 z* @6 {: g
  2242. JSR Set_Sound_Total
    5 n9 a2 G$ k$ \3 }. w$ A( l! [7 G
  2243. LDA <Music_Cur,X' f) Z  ?6 |; E* x6 t
  2244. SEC. C( u$ p2 E* j0 T2 r1 l
  2245. SBC #10
    0 G$ ?. \7 W1 z
  2246. BCS Music_Song_Last_10_Set) |& ]' A: L1 V4 Z  b
  2247. LDA #$004 ]+ v( l& Q; ?8 O' t, h
  2248. Music_Song_Last_10_Set
    # N4 `$ A" P5 m3 F" T8 ^
  2249. STA <Music_Cur,X- e1 C% I3 X$ I. _2 ?! \6 j" D
  2250. JSR Sound_Reset_Proc, L9 `3 X: T9 U# k. s
  2251. JSR Music_Show
    7 R, A* {0 A/ g- o5 g4 h$ A, ?# v; o
  2252. Music_Song_Last_10_End
    3 f5 H  n/ u0 h% d
  2253. RTS: Y% ~! B! N/ e3 `* G" m
  2254. % v: `( b! B4 z- z! {
  2255. ;==================================================, G3 X" S/ J, r2 P+ f4 L
  2256. Music_Song_Next_10;下10曲- X' p( Y; x5 H. a# ~- g
  2257. JSR Clear_Last_Track_Name) W% s0 Y, A% h5 u; v& ?" |( \
  2258. JSR Disable_Text_Draw5 g; n2 X  Z" ?: D: l2 A8 P9 j5 W
  2259. LDX <Music_Item_Cur
    ! A: u, O6 w/ y& i; ^) f+ X1 Q3 u6 E
  2260. JSR Set_Sound_Total
    + s  S0 f4 C% H* j5 T  e5 S
  2261. LDA <Music_Cur,X- Q0 N8 }( c( H, c8 d1 u
  2262. CLC2 B7 R0 s" [/ w: W- M. v
  2263. ADC #10
    % K" J* N; {9 }) n
  2264. CMP Music_Total
    3 w+ u1 [7 ]; @# M$ P, ~* q; }
  2265. BCC Music_Song_Next_10_Set$ [- N5 C8 @) I4 `; n: f5 x
  2266. LDA Music_Total
    - b" @. o+ Q. L  {
  2267. Music_Song_Next_10_Set' @  G7 b1 t( J; X+ X
  2268. STA <Music_Cur,X
    1 ^  l  T) ~. @! p# ~7 n
  2269. JSR Sound_Reset_Proc
    " v) x; }& A# S' n+ n
  2270. JSR Music_Show( J5 @( a/ Z2 f. H: i$ R1 ^. u$ C
  2271. Music_Song_Next_10_End2 }, O; B3 q' T- Y9 P
  2272. RTS0 Y9 t! J! r9 L( `$ n5 V! O0 i

  2273. 2 N5 X/ E, d  v3 ^7 g1 d3 R
  2274. ;==================================================$ Y2 ?) o3 i1 k3 P
  2275. Music_Song_Last;上一曲
    8 ?( H" j* ], B! r" r$ Z
  2276. JSR Clear_Last_Track_Name
    ( p6 ?6 `: k. ?, M+ g4 r! |
  2277. JSR Disable_Text_Draw5 d6 d7 ~5 p5 f& N7 {) F# f9 J
  2278. LDX <Music_Item_Cur
    ; b, W! c; h: ]/ R# U
  2279. JSR Set_Sound_Total! N% G; Q' \) B- _- I
  2280. LDA <Music_Cur,X
    " G) {( C8 A' \
  2281. BEQ Music_Song_Last_Set
    8 x% d& e1 S1 e! r
  2282. DEC <Music_Cur,X
    1 e2 B6 T5 h# O. a
  2283. Music_Song_Last_Set+ O7 X, Z$ W8 z5 C
  2284. JSR Sound_Reset_Proc
    ; w% u5 s, F/ J
  2285. JSR Music_Show
    / D+ P2 _$ s; ]) B5 M; _. z
  2286. Music_Song_Last_End
    / c, J7 t9 L. I) a" {4 k
  2287. RTS
    $ W& x7 S/ x5 B# _. r( c4 o

  2288.   E' P% F0 y* n* J
  2289. ;==================================================
    " b7 K% V& G; |6 J+ y
  2290. Music_Song_Next;下一曲
    7 r  v& @* T) ^/ X) Q  e" B% }( c# t- v
  2291. JSR Clear_Last_Track_Name; {1 n: j( O* d% D: B" {2 e" P/ a
  2292. JSR Disable_Text_Draw, A. `3 {( r5 ^- n% E" m( Q+ f
  2293. LDX <Music_Item_Cur
    7 L+ u7 h! ~/ s0 s+ N. l
  2294. JSR Set_Sound_Total
    ! h5 {3 n, F5 @5 r+ o& r6 i
  2295. LDA <Music_Cur,X
    3 W% y/ [9 Z/ b& Z# g
  2296. CMP Music_Total
    7 N# C5 |! l+ f- J
  2297. BCS Music_Song_Next_Set
    * b# K; u$ f+ _- \2 w
  2298. INC <Music_Cur,X
    8 D+ ^5 ~3 q( w( H) U
  2299. Music_Song_Next_Set
    " t' e) v# ^7 N4 O3 i4 q0 P& g
  2300. JSR Sound_Reset_Proc6 p" x# d3 W  X7 {! \$ v& r  M
  2301. JSR Music_Show( y0 C# X2 v, d: F1 Y
  2302. Music_Song_Next_End' p, Y& f3 E- j8 V( i
  2303. RTS
    4 p1 Y# M1 K, s5 \4 w; c3 p( U
  2304. . k) u: |( D9 b8 J* H
  2305. ;==================================================
    9 A) _9 _% p7 |: L+ O& `1 u7 o) P
  2306. Change_Select_Item;改变当前选择项
    9 l/ p% |( Q' ~' v8 e
  2307. ;--------------------------------------------------
    - H# }1 t/ U# t/ P4 T
  2308. Change_Select_Stop_Play_Item;停止/播放' N, V6 M- ]+ y: z' \6 A& ]
  2309. LDA <Key_Once
    . l2 S  M; A2 _* o/ \9 t( o8 Z" z5 i  W
  2310. CMP #$10
    + m3 @3 O0 h) v! w8 F1 X
  2311. BNE Change_Select_Last_Item
    2 p* y' G- I' U4 m+ p1 `: L
  2312. LDA <Music_Stop_State
    % h% z6 h& G; p5 C
  2313. BNE Change_Select_Play
    % R0 D2 p  ?7 H& o% Y
  2314. JSR Music_Song_Stop
    5 ]. j" S9 |0 B7 v
  2315. LDA <Music_Stop_State' z$ Z3 ?  O& ~/ P/ l' p' T
  2316. RTS
    : a+ d8 }9 {: D& z7 Z, O
  2317. ( t9 w2 H. j8 \3 P3 t9 h1 g3 d* t
  2318. Change_Select_Play: p/ d; Q& v. i- }/ U# m
  2319. JSR Music_Song_Play
    8 h% B# _* T- J* r, o! ?
  2320. RTS* W+ r2 x2 T- L- T% B: }2 \, f" z, o

  2321. + B- O- K( X7 L( z$ e1 j% T
  2322. ;--------------------------------------------------
    : |5 I1 l- w% T* P" q$ d# X
  2323. Change_Select_Last_Item;上一个专辑
    ! H! T7 o  n( K% z* S, Q+ t
  2324. LDA <Text_Disable_Flag5 z& ^/ u$ p: W8 U- X
  2325. AND #TEXT_DISABLE_ITEM
    ' F# V1 e) \0 w7 y/ K. F
  2326. BNE Change_Select_Item_End
    8 J' H0 @4 Y% b9 X" H! G( E' {- x/ Q
  2327. LDA <Key_Once! k9 H& G: d; Q" R" o: b' f
  2328. CMP #$08
    ) R; y! ^0 {9 A# }; N
  2329. BNE Change_Select_Next_Item1 O3 C0 a( M! L2 D9 V: f
  2330. JSR Last_Item8 E" e: @6 t2 z5 r, e7 |) E. Z" v, \& H
  2331. ;--------------------------------------------------1 n9 q: q$ C3 t! n; [
  2332. Change_Select_Next_Item;下一个专辑
    + G9 ]& }  q" X5 E6 x3 D  J* w/ m# M
  2333. LDA <Key_Once
    # O( a# @3 t/ n, v+ G$ y5 ]
  2334. CMP #$04
    * Y/ O6 c% ~/ b) g$ b! f
  2335. BNE Change_Select_Last_10" ^! f: x$ V1 k" m
  2336. JSR Next_Item1 L6 O( s2 \' m
  2337. LDA <Music_Item_Cur
    ' U3 u. T* v% H1 H+ D0 ]2 ?- N
  2338. JSR Get_Page_Start_Index
    4 L/ C8 Z: G. x: n8 {+ W
  2339. ;--------------------------------------------------
    3 M% z7 V7 E# {; Y& G2 v
  2340. Change_Select_Last_10;前10曲; E0 Q6 u% _" L/ Q( o. t( c
  2341. LDA <Key_Once, e; i. a) _, W& n3 J) O; b( j
  2342. CMP #$40. ~( w! T9 Q" [: I( r4 q
  2343. BNE Change_Select_Next_10; z4 Z$ x, |# ^
  2344. JSR Music_Song_Last_10
    # L0 V. F! n) [+ u, k9 e
  2345. ;--------------------------------------------------' Y( A) l/ G, @& ?
  2346. Change_Select_Next_10;后10曲, m8 @- ]3 h: h; z% I5 J
  2347. LDA <Key_Once
    + [7 J( m$ R0 ?8 @
  2348. CMP #$80/ C# ?: L8 H+ w2 k7 ]
  2349. BNE Change_Select_Last" m- P/ n: u. L# f( q: ]
  2350. JSR Music_Song_Next_10! M* x) ~# ^9 D- n; \6 W
  2351. ;--------------------------------------------------
    8 m7 h9 I, I) m( X  f
  2352. Change_Select_Last;上一曲8 U$ F0 p2 v; ?  `' e* ?. F
  2353. LDA <Key_Once' b7 h! Y- g, Y5 z. W
  2354. CMP #$02
    ! g' d; ^4 C# [# z4 a; e/ x7 b
  2355. BNE Change_Select_Next
    ; X0 @5 @6 u5 p
  2356. JSR Music_Song_Last" a: x0 w8 V; e# N5 X& o/ l
  2357. ;--------------------------------------------------( y$ S: Z! N7 p' o
  2358. Change_Select_Next;下一曲! ~# M) }8 {3 }1 I% k* {9 H4 f/ z; i
  2359. LDA <Key_Once
    0 ]5 x5 c9 o  W. ]+ f/ E  F0 L; Q/ m
  2360. CMP #$01: z& p7 `% y7 s5 O! {
  2361. BNE Change_Page_Next
    9 ~5 P8 r8 A& Z4 j
  2362. JSR Music_Song_Next3 j& R  z! i2 Z" z: Q! k$ Q
  2363. ;--------------------------------------------------
    % B/ a) e! {- l
  2364. Change_Page_Next;下一页) g$ o( [" d2 ~+ L% Z7 o8 K
  2365. LDA <Key_Once4 X+ L. a5 D( R$ k& s
  2366. CMP #$20
    * T4 z9 x& p; N6 I
  2367. BNE Change_Select_Item_End/ m# v! t* x& H
  2368. JSR Next_Page$ r* c8 [# O" d/ e/ g
  2369. ;--------------------------------------------------
    ' a$ {  Q2 ~% P. E8 g: M
  2370. Change_Select_Item_End, I6 q! l! t' r  E3 n' [0 T
  2371. RTS( Y7 g( y8 l1 q. v
  2372. ( b  d/ \  z  o, [
  2373. ;==================================================5 c) E% W* s/ v0 H( X
  2374. Show_Arrow;显示箭头光标
    1 D: y" Q, d% C# V: j
  2375. LDA <Music_Item_Cur
    ( A, M" g/ U/ b% k5 N
  2376. JSR Get_Page_Start_Index/ r' ?" v; g  \; k, W3 C) X1 {6 V2 ?  h
  2377. LDA #$00
    : b+ K8 P) p+ n9 {4 [1 E- q: C
  2378. STA PPU_OAM_ADDR! {3 d$ J( |8 o- J0 [
  2379. LDA <Music_Item_Cur- }/ t( r- X9 z7 G5 q
  2380. SEC+ }4 J# e9 c, J
  2381. SBC <Data_Buf
    6 t- E( n7 q- f; j  Y" ^2 G
  2382. ASL A
      W  X# p; o2 y) d! m* c" Y
  2383. ASL A
    $ b9 r: t+ R- }( g1 i
  2384. ASL A: L; V; t* h: V' I( F. R' y
  2385. ASL A
    $ ^! W8 P, x0 |! ^  c! E/ O
  2386. CLC& A; R- p0 d/ n- I, ~
  2387. ADC #ARROW_Y_OFFSET
    # P) `7 X1 C3 {: @( j. H7 i
  2388. STA OAM_TEMP_ADDR + $00
    0 ?( A6 q- y# v2 [: `. b4 J# _2 y+ h' I
  2389. ;STA PPU_OAM_DATA+ L, Y" e$ @9 N
  2390. LDA #$1F
    7 u8 V' X! ^- T" C- b& N! X3 Z' [/ ]
  2391. STA OAM_TEMP_ADDR + $01
    3 N1 Q+ J) x: i
  2392. ;STA PPU_OAM_DATA' \+ @7 {7 Q2 K$ @/ J, ~; n6 S% g$ U
  2393. LDA #$00
    & ^! G5 `" \1 g+ B, a" K
  2394. STA OAM_TEMP_ADDR + $02& ]' M! H. r. J# ]* W6 ?
  2395. ;STA PPU_OAM_DATA
    4 m7 R/ g/ ]  W& _; c9 c3 U. \
  2396. LDA #ARROW_X_OFFSET
    % r+ b" ~8 h) k! r, P8 |# `
  2397. STA OAM_TEMP_ADDR + $03
    * Z& x: V$ U  w/ e# z6 N$ W
  2398. ;STA PPU_OAM_DATA9 o% B4 ~$ C6 S
  2399. RTS
    9 ]1 m9 f3 M+ v- `# k  K7 w
  2400. . l( Y) r9 |2 u2 s7 ~) Z1 |5 m
  2401. ;--------------------------------------------------
    , M, l/ ?  I5 @) R1 \: d. r8 z
  2402. ;命名表数据6 D8 F" w/ K- c  K: D
  2403. Palette_Attributes
    . O! x$ q7 j4 E
  2404. .IF SOUND_BAR_SHOW_ENABLE
    6 t+ a1 k' g* F: c; m( t1 @* y9 h
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    1 t' _! ^( n4 c
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$554 W+ Z+ t4 Y! B$ i2 f  j
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$756 E& |9 j5 P* W& N( x  D
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    7 W" N* ]7 h! V4 p$ w
  2409. .ELSE
      S4 L0 ~. \+ A5 Y
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$557 R0 f, K- r) W2 d/ Z" }& t
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    $ ?. j! C# B; P5 `1 D
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75& U: V8 `, e( \8 }; s
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    0 U4 b! y! m! f
  2414. .ENDIF
    ( g6 ~- ]) S. K
  2415. ! O6 w7 V" ?% g6 `# V4 o$ g
  2416. ;--------------------------------------------------
    : D6 o6 N  P3 Q
  2417. ;调色板数据( V9 z" K; a2 w" I
  2418. Palette_Data
    ' {' W* f) n. Y( l# w4 u+ Y
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    & N3 ~. U% ^0 T4 ~4 ~' J+ ^( B& r
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F1 I8 |! Q7 p: `* f

  2421. & d0 V. ?% u8 V9 w, B6 |( q
  2422. ;--------------------------------------------------( p+ n5 K5 o3 i( @/ h  e% n
  2423. Static_Text_Data' \" J+ ^2 Q9 y( p; [
  2424. .WORD Static_Text_Caption_Data
    # J# ]' ~: k1 X: \9 J( F
  2425. .WORD Static_Text_Author_Data/ `! a( H& h, B, T$ A  g; p# r1 v
  2426. .WORD Static_Text_Date_Data: ^1 o  K3 z; R) b! N
  2427. Static_Text_Data_End& C8 L9 C, [' R1 w! Y9 _

  2428. $ q7 R/ T0 B" P  p
  2429. ;--------------------------------------------------
    ; k9 S* I% U3 l& R& m, [9 t
  2430. Static_Text_Pos
    ( p* [2 }" Z9 a/ f
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    ! a+ I9 [2 L) a8 l3 t+ s
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    2 q3 O4 z/ Y7 j" @
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    " v# j* A! I" M$ [# F1 [# u
  2434. Static_Text_Pos_End- v- J( `7 |# N" |% R9 o
  2435. * `- |# B. C2 V- _, v+ [. E
  2436. ;--------------------------------------------------9 v7 U2 i5 }7 w6 r) u2 ~
  2437. Music_State_Stop
    ( L' Z7 @* H% U8 |9 j
  2438. .IF SOUND_BAR_SHOW_ENABLE
    4 m  P) c, T4 k+ a
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00) }3 `4 f. ?0 }( a$ u
  2440. ELSE: r+ Q1 P& x4 Z1 C9 f0 O
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00: C1 e" J0 r* x! D7 s% l9 }
  2442. .ENDIF9 h3 F3 u) X+ {3 D$ q) m- v0 e
  2443. Music_State_Play
    1 G0 J, C$ \7 S2 Q
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$002 K! J8 P5 N! t9 g3 W7 |

  2445. 8 v3 z$ R$ X3 u  E
  2446. ;--------------------------------------------------: g1 N+ K8 z: ?, Q  e  c
  2447. Sound_Bar_Text_Data;声音类型文本! E, L/ \2 x3 @7 t4 y
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    * A# v4 V  Y, v
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    2 F+ J3 `# O4 q* s5 w
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-". x$ @9 a. t" L8 t$ P/ p
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"$ P* n, g8 f  `. J# t
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00- x2 m+ Q& b& L! d$ a4 d' i
  2453. " w( O0 a  H0 F6 ]" q# Q+ {- R: b
  2454. .IF Track_Name_Pos
    5 W' ?" A( a0 l, O! i. @( k0 t( ~

  2455. ) |, s- f/ e' V7 W( v+ j  }
  2456. ;--------------------------------------------------6 U) y  h8 Z& Q9 O; A" U1 \
  2457. Track_Name_Addr_00;曲目名地址索引
    ' E9 ?- T" i$ s, Z! d$ }9 N
  2458. .WORD Trackr_00_01
    ; J0 r3 Q' `1 s2 N% x% o9 s
  2459. # v( E( x" U& E. Y; u; A9 v
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1") O* y7 o9 i" y
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    , d, q3 a$ j7 }& I' G( `

  2462. % S3 M/ D7 o* c! q0 \: y5 N
  2463. ;--------------------------------------------------: x6 n8 u) N1 a1 Z) u+ e
  2464. Track_Name_Addr_01;曲目名地址索引
    5 F8 v/ P. e  y  ?7 j- J
  2465. .WORD Trackr_01_01" h/ d4 T' q% X! I
  2466. ! t4 s+ ]! F4 G4 ^0 p
  2467. ;==================================================4 ^3 u% Q/ v9 j! c  A
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1". t# j- v, I/ q; u" t$ V9 i
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    & P3 T7 v, O. l4 F# ~+ l; S5 G

  2470. - z( e  w( E, ^( C
  2471. ;==================================================. d7 ?4 [9 u" o
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    : |$ H8 r1 B/ `% u7 s! g1 h- p" ?; ^
  2473. .WORD Track_Name_Addr_002 `' d" u" P! @" d+ H
  2474. .WORD Track_Name_Addr_01- S# b7 C2 R8 K" [. O
  2475. .WORD Track_Name_Addr_016 b& i3 {4 P9 \) p
  2476. 9 B% z+ C; V. @. Z
  2477. .ENDIF& S& t( `. U1 f. o
  2478. % s% f, r+ G7 |( ?7 j, C2 y+ q
  2479. ;--------------------------------------------------0 o! i; G; x4 `8 d/ j
  2480. Static_Text_Caption_Data;静态文本数据
    + _* v" l: k/ R; W
  2481. .DB 166 u) J! B+ V: j$ \( o( R  ?
  2482. .DB "FC MUSIC 12 IN 1"
    $ e; {8 W) x% G
  2483. Static_Text_Author_Data" F" S+ \% Y/ ?' w
  2484. .DB 25
    - K5 N& m( J$ Q* ?% _- y
  2485. .DB "EXTRACTED BY FLAMECYCLONE"2 S, T! c5 p1 G; t( Q, `4 E& i0 h8 j* X
  2486. Static_Text_Date_Data
      _: L: t2 Y. I- \
  2487. .DB 10
    1 v6 C/ e% O+ d5 f) f) e' G% _4 z
  2488. .DB "2023.07.23") ]' ~. d. w; K0 v9 g+ @2 Z
  2489.   @" l" `1 P0 T# J5 h4 U4 v
  2490. ;==================================================# I& _* R  @+ @/ N# F/ D
  2491. Music_Collection_Name               ;专辑名间接索引
    6 ]* ]0 i! w# A
  2492. .DW Music_Collection_Name_001 x* j. C6 G& p' q+ h8 [
  2493. .DW Music_Collection_Name_01
    % U0 B1 u( ~' b) i0 k3 |# M$ s' j9 d
  2494. .DW Music_Collection_Name_026 @( i1 O7 [3 o
  2495. .DW Music_Collection_Name_03( y7 }4 K# m/ R' \: ^0 r' U4 m
  2496. .DW Music_Collection_Name_04( x+ I3 K7 l( _" g" X( E
  2497. .DW Music_Collection_Name_05
    # t7 `& ?; x. i+ ?6 r1 _  w" ^
  2498. .DW Music_Collection_Name_06
    4 h; {; Y, E$ B) ^% ?
  2499. .DW Music_Collection_Name_072 F9 y! S% V2 s
  2500. .DW Music_Collection_Name_08; N" B8 |. j. F4 p( ?
  2501. .DW Music_Collection_Name_09
    4 J5 j' o7 ^4 |9 W; E
  2502. .DW Music_Collection_Name_10& x: E% x% _1 t  N$ a5 k* M3 f% G
  2503. .DW Music_Collection_Name_11
    , m9 C/ u" y; p- w- i2 H
  2504. 3 p: O; t+ K& ?% G9 q1 r- T4 O# H1 T, Z
  2505. ;==================================================
    9 t4 A) G, Y' z  z) R* B
  2506. Music_Collection_Name_00            ;专辑名文本数据
    # U5 h/ q, f( u
  2507. .DB 11,"1.RAF WORLD"
    ; E( X4 R' n/ h: O2 B/ a* i2 h) u
  2508. Music_Collection_Name_01, j6 i7 u* e3 s5 B2 i( D+ o
  2509. .DB 15,"2.FINAL MISSION"0 [  h: f/ [0 I% _$ }
  2510. Music_Collection_Name_02' [9 H0 {$ k) c+ \6 @5 [
  2511. .DB 06,"3.KAGE"
    & S9 ]; c3 z; v+ y8 C% @
  2512. Music_Collection_Name_03
    ) n6 g" e$ e9 D$ ?# M
  2513. .DB 16,"4.DOUBLE DRAGON"
    5 ^5 V" T7 b" X4 ^/ A8 [7 A
  2514. Music_Collection_Name_04) O. ~' m0 d; ^" e
  2515. .DB 17,"5.DOUBLE DRAGON 2": a: a/ u, ~1 I: M8 N: l
  2516. Music_Collection_Name_05% Z9 Y# f6 o3 s4 i. e" N. X* {
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    , F& y! G. Y$ x0 Y% y8 o& O& ?
  2518. Music_Collection_Name_063 D; {6 w: [9 y' v$ d- Q- W$ ?
  2519. .DB 09,"7.ROCKMAN"
    1 W* w3 i0 g1 V8 F+ r# q" k
  2520. Music_Collection_Name_07
    2 I$ b0 U1 L* C: ]+ M& R
  2521. .DB 12,"8.ROCKMAN 2"
    $ u' d. H/ T8 l; f6 Q
  2522. Music_Collection_Name_08
    # V! H9 o" e7 j/ v: Y
  2523. .DB 12,"9.ROCKMAN 3"
      }$ g6 z  \7 X
  2524. Music_Collection_Name_09
    6 t/ Q2 X- ?" w' g6 D
  2525. .DB 12,"10.ROCKMAN 4"$ u/ w) S- y9 X" [3 E; _
  2526. Music_Collection_Name_10
    % _; L7 @, J+ Q1 E# N
  2527. .DB 12,"11.ROCKMAN 5"
    $ e/ u& N4 z* C3 G; M
  2528. Music_Collection_Name_11$ g9 t5 O* {+ T( H5 U8 A$ U& y* X
  2529. .DB 12,"12.ROCKMAN 6"
    5 {0 b: i' s& b
  2530. : A; [$ d; q9 m5 A/ I! W( p" ]0 z
  2531. ;==================================================
    8 @& ~! F' f& ?
  2532. Track_Name_Addr_Flag                ;显示曲目名标记- n4 \8 `# L2 S& U/ u1 [7 w
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,03 Z# k/ O7 O$ q# t
  2534. / [. ?7 C6 ]2 L3 t) B+ U2 I
  2535. ;==================================================
    * _4 i/ G( B) s3 Q- c
  2536. Item_Pos_Data                         ;光标箭头位置/ e! N3 q0 ]( K! s$ L; k3 x) ~
  2537. .WORD ITEM_SHOW_POS3 x- P4 A" i( o9 z) t( g( A
  2538. .WORD ITEM_SHOW_POS + $0040
    9 P9 M  w" R3 l) U2 N  C+ Z
  2539. .WORD ITEM_SHOW_POS + $0080
    7 V/ |' z# n. ]1 f
  2540. .WORD ITEM_SHOW_POS + $00C0% @' `( _. Y$ k! }
  2541. .WORD ITEM_SHOW_POS + $0100! o9 q5 f8 N+ I  p% I8 X; y
  2542. .WORD ITEM_SHOW_POS + $0140
    4 J  N  O% R. X2 j7 n
  2543. ' U5 _) y- R+ ^  z
  2544. ;==================================================+ g3 ~& E* i& l6 V1 N- p3 L7 R* z
  2545. Sound_Init_Port                 ;音乐初始化入口地址0 L: c' w% d3 N% i" Q
  2546. .DW $BFC8& j: i5 Q! A. M# s' m2 o8 J* F3 }% u
  2547. .DW $D7F0
    $ _: ?$ Y% O) N) U. z
  2548. .DW $9FC0
    , U" g) Q. w4 k0 T: ^) ~2 ~$ l
  2549. .DW $BF70* r0 t3 b8 b  ^) O. q& ^
  2550. .DW $8003
    ' \9 _& }! j7 M- A/ D) K
  2551. .DW $BF30+ I+ f# j" Q- k. x9 ^
  2552. .DW $9003* N' S" Y" p7 C& a( F1 i
  2553. .DW $80038 S, b! r$ s3 ?6 P& q: n
  2554. .DW $8003
    2 _/ \7 i8 k% d& V" C- y5 O' |
  2555. .DW $80039 g9 h* K' [% Y; x! m4 ]
  2556. .DW $8003
    ! A* E' ]" H% Q8 ^; r) s0 x$ q
  2557. .DW $80039 \/ ^5 a+ B" _2 d0 W5 A
  2558. & s) ^7 w% |5 E3 c" s. X/ Y
  2559. ;==================================================
      _' O6 D% j! f- `& m
  2560. Sound_Play_Port                   ;音乐播放入口地址
    # L; O# c3 f1 I6 m; V  m
  2561. .DW $8000+ ]. j  [6 b# d: A% K
  2562. .DW $80011 A- p. r. M2 i0 N" _
  2563. .DW $A000
    ! K9 G1 W) o1 {' o) e2 A' X+ b0 H2 a
  2564. .DW $80039 {& y! h' ~$ \0 E
  2565. .DW $8000+ J: j% W, N- U  n4 W8 h! Z3 Q. i  D
  2566. .DW $8003& ~; k+ b$ i8 Q. L# U7 R& _2 E0 q
  2567. .DW $9000
    + ]$ X5 [$ M, V2 U7 w7 w1 Q
  2568. .DW $8000
    : V. Y& V* F9 |' U. w/ g% n; s
  2569. .DW $8000# {4 {) A: I# `5 [/ E
  2570. .DW $8000/ |  Y1 ^! P& z  p+ V
  2571. .DW $8000
    " p' @8 S4 z0 g( J# Z& ^
  2572. .DW $80003 H' b8 Z7 e/ \/ S
  2573. 0 N9 S8 k' x2 k- p# r" A0 \
  2574. ;==================================================: g) r2 `1 `" l" p& Z! A
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    ; ~1 X0 A" D/ `8 r' P6 D! M
  2576. .DW $00000 d$ s; p) c3 L7 |+ }
  2577. .DW $0000
    % |0 F: }% C  L# W' x) v. o
  2578. .DW $0000
    5 e6 i$ ]! {  l
  2579. .DW $0000. @' t8 X9 U8 \3 M) i* E$ g( i
  2580. .DW $0000* f4 E1 P" u9 f
  2581. .DW $0000
    7 f. S# t  _4 ]9 S1 ^
  2582. .DW $0000# i1 g+ e' J6 H1 m; ?! B
  2583. .DW $0000
    ' ]/ {- ~" f, M4 ?% t* f, ~5 u0 u+ x0 g
  2584. .DW $0000: K) }& M; g) w2 x# z+ e
  2585. .DW $0000
    # c2 D( ?, Z3 X6 l4 X8 L1 n! Y
  2586. .DW $00001 ^7 M5 ]' K, V) ]
  2587. .DW $0000
    9 C3 G3 n6 u) A9 s( f) Z+ Q
  2588. ; }3 [2 w) q5 d
  2589. ;==================================================/ F0 F9 d+ i9 J4 g
  2590. Sound_Total_Port                          ;曲目总数
    3 E  b9 I  `1 R' y
  2591. .DB 38$ c' d3 N8 E- u# _4 [9 L
  2592. .DB 334 E* L# B% V% w& N* B! c
  2593. .DB 49
    0 ?( D" r+ R8 e: l0 j
  2594. .DB 414 F4 r) I3 _9 G" \# \3 g; W
  2595. .DB 83: k" s2 z+ J2 M) C
  2596. .DB 70
    8 c9 Z4 l5 c0 k3 X
  2597. .DB 50* B$ V$ I# p: V' u
  2598. .DB 67. E( F6 [% S* N! k0 W5 S2 t
  2599. .DB 57
    ! q$ a- W$ {* B8 A6 k5 @
  2600. .DB 714 O( _) n; Q6 H9 [
  2601. .DB 76
    , z' Z8 i) Z0 r. B& H
  2602. .DB 102" r% G; [0 X7 k  e4 ?4 \# w
  2603. * N/ j# D" a9 [1 N4 h
  2604. ;==================================================' _- b; l8 q  _; [; p
  2605. Sound_Start_Port                      ;起始播放曲目
    3 B( b; }4 g, E* k9 C6 A7 _
  2606. .DB 00
    % y  l( C! V. x
  2607. .DB 00
    % y6 O# j! W5 T
  2608. .DB 00
    ) |! F! Q+ K5 _  A/ Y: M
  2609. .DB 00
    4 [3 n% ^! q/ c, |; Y
  2610. .DB 00
    7 I1 G* b) D3 P- x  W
  2611. .DB 00
    9 f2 P5 G, I* z( `% X2 B  H
  2612. .DB 00
    * ]  [" `7 |/ q7 y/ d
  2613. .DB 00; R6 H% Y# ^, V4 |1 n, t
  2614. .DB 00
    9 p( Y2 M0 V7 {* T5 m4 C7 |+ i
  2615. .DB 000 [  k0 u) e! T3 u! @
  2616. .DB 00
    $ }) F" y7 o, W4 {* y
  2617. .DB 00
    # k* K/ {; x2 y3 I- _
  2618. 1 y" v( \7 f0 ~: Z( p
  2619. ;==================================================
    $ P8 y6 t: k( Q0 x, s
  2620. Sound_Bank_8000                      ;专辑bank_80005 X6 r. y1 @6 w) Z' w6 j
  2621. .DB $10
    3 K9 R# V9 j& R$ T. V6 @  f; w. o
  2622. .DB $12
    5 K" E, N* O4 L2 g" o$ o
  2623. .DB $14& W. w; l& h3 s7 C4 N
  2624. .DB $162 E% I4 w5 ~  _0 o! M; Q
  2625. .DB $18  O5 n  f8 U  ]( U& g! U
  2626. .DB $1A3 z" P* z  P3 ?/ \8 f* A7 N
  2627. : n4 q3 X/ n' ^' J
  2628. .DB $00, b. S) I: n6 o) q
  2629. .DB $02+ g9 N3 }& ]; ^: V7 f, x* _
  2630. .DB $0D
    1 |- L- H% s8 J8 N! H
  2631. .DB $042 ]) g$ p* q0 c$ h3 w
  2632. .DB $07) s% ~7 u- D4 u3 ~6 C# Y' L, j
  2633. .DB $0A
    % ?8 V+ n, N( F, R* w* u5 H

  2634. & U0 Z6 ^; p" D* z4 w4 q. k% n' C$ ]- `

  2635. 6 W/ g7 K8 ]7 I# E. i& J& ^
  2636. ;==================================================
    7 b/ w- }" l9 y* Z# h4 `
  2637. Sound_Bank_A000                      ;专辑bank_A000  f, P8 w: I) K) x+ \
  2638. .DB $11
    ! o8 R4 m6 o* V- D+ y# V+ n7 S
  2639. .DB $13) n3 u9 H( y, D5 ]9 T
  2640. .DB $15: f/ o0 X5 M0 y* E5 g
  2641. .DB $17
    / \3 ]) z/ @& B- I
  2642. .DB $19
    " y( V& E( ?8 n8 g
  2643. .DB $1B- \9 M. s9 K' _' H6 @( u, Q6 ~

  2644. % }3 R% l8 v/ \5 C# N" I0 ^4 F
  2645. .DB $01
    4 |$ `0 z/ @8 y9 g  a4 H
  2646. .DB $03  o1 M" C  z* M  p6 q% T! L
  2647. .DB $0E
    " T) }) P- J2 H6 y$ P) d0 Z
  2648. .DB $05
    / i" Z0 Z; ]4 h9 {1 @' v. o
  2649. .DB $08
    " U* V" w, q: _9 y7 A
  2650. .DB $0B
    ) E4 {4 Q+ a. l( n( `2 e0 p

  2651. % d8 o7 Z1 T8 f5 E/ c" _

  2652. ; g3 l" R+ a9 `+ b4 w- u% e
  2653. ;==================================================
    . a& r" V) I8 F% J3 ^; X7 D
  2654. .BANK RESET_BANK & BANK_DATA_MASK7 _) Z# J8 I! f
  2655. .ORG RESET_ADDR5 W# u: K' U! _) U$ t
  2656. . k" p2 U. U1 Z6 i" b3 L$ `
  2657. ;==================================================
    0 ^' \4 k$ g8 h% Y: }) G" D  N, g
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    $ y8 O; |  i/ @! q# P
  2659. PHA! E# F8 |$ ?3 D0 {& D
  2660. LDA #$06
    7 |# {1 R. W; w
  2661. STA MMC3_BANK_CTRL
    $ T- v" O- E7 ^+ p0 Y" e
  2662. PLA
    * K/ j* O, S: k0 Z) B7 {
  2663. STA MMC3_BANK_DATA" _6 S# I8 w0 z& O- `$ V* ^
  2664. RTS
    " P5 Y/ _# l5 K4 }

  2665. 5 b. _" @8 `) W
  2666. ;==================================================
    - z, q# X6 C  }% z
  2667. Switch_Bank_A000;切换bank到A000-BFFF- e+ D- w9 M3 R7 ?0 x7 J+ e. h4 h
  2668. PHA2 h. {- x5 z- t7 G! \0 T/ ]- a
  2669. LDA #$07
    * \% p/ U& M  A$ |% `$ ]3 m4 a- b$ D: f
  2670. STA MMC3_BANK_CTRL
    2 W- K1 A  ]/ ~9 @; {9 l  t% p
  2671. PLA
    6 }+ {# g- R* D: n9 u
  2672. STA MMC3_BANK_DATA9 w, _) j  j) g; D& A0 H- J
  2673. RTS
    $ h0 Q1 Y# v! O8 }6 L

  2674. 3 w8 o2 \. n' G/ y
  2675. ;==================================================
    " {7 k; b1 @( @( p0 I* A# p
  2676. Switch_Main_Bank;切到主程序bank$ F8 \. x$ e4 d% ^7 C
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK# s" _  l! w5 C7 }; F1 |5 p
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
      u; B  ?5 y" @/ Z( h: a
  2679. RTS1 Z' N8 G3 _# B- U3 ]

  2680. * K; g1 Y$ I" J4 N4 X
  2681. ;==================================================
    & w+ E6 Q% Y  I9 |0 o. G
  2682. Sound_Reset;音乐重设(如果有的话)
    1 @2 K9 v+ l3 B0 S2 c9 [, ]
  2683. JSR Switch_Music_Bank  ;切换到音乐bank* `1 B% O( {/ S5 D/ f
  2684. JSR JSR_Addr_Op        ;执行音乐重置. K( x! W* H& X* @  p
  2685. JSR Switch_Main_Bank   ;切回主程序
    1 f( f8 J! k6 b5 X' S
  2686. RTS
    3 p9 x* ^9 q7 u# g% ]' e# `

  2687. ) V2 _  e5 _1 \
  2688. ;==================================================
    6 z  Z1 u1 `; u. @( ?2 r9 o
  2689. Switch_Music_Bank;切换音乐bank
    ; A9 r- P9 Q0 ^4 p! D, I; u
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    4 S7 y- y% c3 {0 z
  2691. LDA <Music_Bank_8000
    ( R. M: s6 R& c8 Q
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    6 R& Q1 S+ G1 o; l, Z, |; J
  2693. LDA <Music_Bank_A0008 g1 y+ C. @9 U) V0 c6 S
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
      U1 }9 A0 y5 Z, |; r/ v
  2695. RTS3 N  ?3 ]% I6 n; f" r1 l3 b3 k

  2696. - M  D' K# T7 A) w+ p) e
  2697. ;==================================================
    7 x9 t1 v) }' u4 A+ b9 [" x" D! @
  2698. Sound_Init;音乐初始化( y6 X; Q, {7 f( C0 N) {
  2699. PHA
    , Y6 J* X& y" j* `9 H
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    ! W5 o7 X8 y  u" r1 P
  2701. PLA
    , j2 C3 e5 L1 c3 M1 j/ N. f
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    " m  K& x& d6 l
  2703. JSR Switch_Main_Bank   ;切回主程序0 _% t+ K1 u$ s; X5 F0 X
  2704. RTS* s# d0 r/ N- N: n8 ?

  2705. 8 ?$ u2 k: p; d
  2706. ;==================================================
    $ p' F, o8 {+ Z
  2707. Sound_Play;音乐播放
    + N6 `; W9 Q) R2 j" Q& P$ P
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    5 I* `6 V7 e& ]4 J/ U( ~6 d) N
  2709. JSR JSR_Addr_Op        ;执行音乐播放3 b! a8 W, {, R! w: I& y0 c
  2710. JSR Switch_Main_Bank   ;切回主程序
    + D! P& j( x$ x9 i7 _5 ^
  2711. RTS) R0 \$ i' W6 V) y
  2712. : `/ b2 e6 z1 }5 h  K
  2713. ;==================================================
    9 R, M) x9 R. P) k% T. L
  2714. MainLoop;死循环
    , F2 H7 B2 z: ^5 j: z$ A: B
  2715. JMP MainLoop
      T" T8 K" S- x" x, F  v
  2716. & s/ L3 v$ v! c0 G  ^/ S% |1 q
  2717. IRQ_SUBPROCESS_JMP = 0
    . f3 M7 P& A  f3 j$ q! s

  2718. - U  {# J! [2 P/ V
  2719. .IF IRQ_SUBPROCESS_JMP+ l$ b  F* p. e1 j8 X
  2720. ;==================================================* S+ ^( ]5 b  o0 M/ Y
  2721. IRQ_Process_0;IRQ处理过程0" [4 ~- k( \: \- S; e7 i
  2722. 5 |. r1 s) V2 X4 b* P" P7 x: ^9 \( K
  2723. ;15条扫描线后触发IRQ
    ( l; l  F' w* D  x4 k+ l$ \
  2724. LDA #15
    # j% d, P1 V; B! Q
  2725. STA MMC3_IRQ_LATCH
    4 Y. L0 r' v6 n" r
  2726. % b. ]2 R) v+ E( @$ x
  2727. ;设置屏幕滚动9 }. H! }5 A+ @6 K  D% S
  2728. LDA <Scroll_H+ \2 a# }. _+ L( W* a! q
  2729. STA PPU_SCROLL
    4 ^; D; }2 e. A! j3 g3 s5 J; q
  2730. STA PPU_SCROLL- V9 W7 h, ^. {* w+ ?6 V# b' P/ Y8 s

  2731. 1 B8 F5 o7 v1 J5 K
  2732. IRQ_Process_0_End3 X) U: w, x- B
  2733. INC <IRQ_Process_Index
    / j* y( B* T, }$ a' K
  2734. JMP IrqProgramEnd
    & ?# k4 d3 R) ~

  2735. , k$ G! k+ G4 z# f; h
  2736. ;==================================================
    , B. k6 W0 @1 y8 N5 y. w1 T' w- B
  2737. IRQ_Process_1;IRQ处理过程1
    2 O" }9 d' p2 R  s

  2738.   i. a" m$ _; T
  2739. LDA #55
    % d; m+ s2 }0 |8 F
  2740. STA MMC3_IRQ_LATCH
    / w# c* M# ^0 q

  2741. ; Y( c# I; `9 L
  2742. ;设置屏幕滚动0 E  `( N$ _* L' s+ ^! Y6 B, d
  2743. LDA #$008 h" w% \3 Q; i% h/ K9 m) y/ M4 W
  2744. STA PPU_SCROLL
    ( g+ l* C) K: ?
  2745. STA PPU_SCROLL
    % e3 [# u; V. r& {
  2746. . r! [" r6 r. v. Q
  2747. INC <IRQ_Process_Index" ?& i6 S' \1 f5 A- L
  2748. JMP IrqProgramEnd
    9 Y% x; P9 k; E$ s3 `' V

  2749. 8 s' J  d- B) h! _4 x' n7 T$ \
  2750. ;==================================================6 G& t0 Z# S* f3 f/ \2 a& p
  2751. IRQ_Process_2;IRQ处理过程2( c+ b. H! ?6 `6 [9 J" W

  2752. : R$ U/ o$ N( O2 l  ^
  2753. LDA #15
    0 m; s9 \& W; t! I3 P
  2754. STA MMC3_IRQ_LATCH) e2 X: p) w% o* z# }
  2755. * ~4 y  k8 D$ n$ Y/ k8 g/ k
  2756. ;设置屏幕滚动6 h. m5 E7 j$ ]
  2757. LDA #$00
    ( ]. H) }) q& c/ r9 E+ k
  2758. SEC
    , X5 Z  U; ~' I# f7 u* T# V5 X
  2759. SBC <Scroll_H
    ' G! P. U$ B% u4 Q7 }
  2760. STA PPU_SCROLL5 P! S  m6 G; `# @: |2 i  }% k+ U
  2761. STA PPU_SCROLL& ]! x4 t! \4 U. c* ^# I

  2762. ' X' N/ y$ ~" A' N
  2763. INC <IRQ_Process_Index
      A" J& h  Z; V* q5 K% u: [( H% |! r
  2764. JMP IrqProgramEnd
      `' Z/ R2 `, R% F& e
  2765. 4 _" e5 ~% v- r- e
  2766. ;==================================================% j: B) F! T8 A3 O" ~
  2767. IRQ_Process_3;IRQ处理过程3/ [8 u4 m8 H+ [5 Z1 Q
  2768. : ]. ]1 w& {( \% `
  2769. ;设置屏幕滚动- j# E+ w5 y3 ]- @+ h; o) s
  2770. LDA <Scroll_H
    8 ]% _) Q# K  g( O! b
  2771. STA PPU_SCROLL" `. n. ]* c  y6 C' h  \! J9 |
  2772. STA PPU_SCROLL% T" ?2 s5 @- X  B6 C' d5 G6 p
  2773. 8 y% c. h5 V) ?, L- F5 s$ B+ X9 `. R
  2774. ;禁用IRQ
    , S2 i! I8 E$ z7 s' u
  2775. STA MMC3_IRQ_DISABLE8 k8 G/ u6 \% n
  2776. JMP IrqProgramEnd
      x' B. ?5 V; ^7 m8 y4 l3 m5 U
  2777. / D0 g1 p4 k4 J! F% M" c6 X2 p  I
  2778. IrqProcessAddr! u  H! ?6 {; ~9 \
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3* y/ Z+ [9 f6 ~5 G$ D8 S( A. d: ^/ ]& ?
  2780. ) w2 |0 p$ V5 X) }) C
  2781. .ENDIF
    ( L" V1 q1 m; A; _. n, V! P' L2 T" ]
  2782. $ j' y. q4 i6 h1 Q: k
  2783. ;==================================================
    . x7 p) s$ F) p3 y, Y
  2784. ;IRQ滚动模式常量
    2 l( Q7 v1 N; F4 C
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    3 F. \& C8 p; z. B
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动: P9 P, U2 [  _; y/ L9 [3 E
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    ; E) O4 q5 t$ B, ?

  2788. # @: u) e2 i! T* D5 g# R
  2789. ;IRQ扫描线数据  R& W% f' Q9 I1 G/ j8 c" t
  2790. IRQ_Scanline_Data
    ; j8 o  ^8 |2 P1 _' |1 I9 T9 z
  2791. .DB 8
    ( l, }! X* ]4 }+ X0 X# T2 q
  2792. .DB 54$ k2 G# h9 v* a& ?  J5 h. o
  2793. .DB 8
    " P4 [4 I' d+ D% P
  2794. .DB 00 ;关闭IRQ
    ; U& L' o8 `* j* m
  2795. & t; @5 |2 a3 P! L% a: R
  2796. ;IRQ滚动控制模式( g( y; m+ ]* z& G
  2797. IRQ_Scanline_Mode
    ) d# m) A7 i/ o2 X6 V* o) Q7 t
  2798. .DB IRQ_SCROLL_MODE_ZERO/ D: {' S! d  }
  2799. .DB IRQ_SCROLL_MODE_ZERO- f+ Q# e4 d+ N: R0 [- a! |
  2800. .DB IRQ_SCROLL_MODE_RIGHT* f4 U7 \3 }& @* n; h0 q# M9 f0 W+ U- b3 p
  2801. .DB IRQ_SCROLL_MODE_LEFT
    , X# g4 @  b" `3 i- \2 [5 q  T

  2802. / J! S/ e6 T. w, U) Q+ i5 [' v3 [1 E
  2803. ;==================================================% L5 t6 S6 U/ [5 v, _8 ?9 y+ M
  2804. ;IRQ处理
    - p" ?4 B* Q, R, l4 R6 v, X
  2805. IRQ_Process
    2 d. m) f6 ]5 A0 X$ h, X) O
  2806. LDX <IRQ_Process_Index, Z1 {( t. j' A9 E3 E2 a
  2807. LDA IRQ_Scanline_Data,X
    : r4 r! Y/ a8 f( T$ q
  2808. BNE IRQ_Process_Latch
    8 ^4 W+ }/ \) u8 z' w" j7 y# y
  2809. IRQ_Process_Disable;禁用IRQ
    ' E& d3 V5 a. }* Z
  2810. STA MMC3_IRQ_DISABLE
    + c' N" W7 {$ r
  2811. STA IRQ_Process_Index) V  O0 M  R7 n& X8 O% }& F( t- H
  2812. BEQ IRQ_Process_Scroll- X$ a& |* [8 T7 ?, m
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
      s* u6 q+ r9 G5 ?7 C4 z2 p
  2814. STA MMC3_IRQ_LATCH
    : x* C( p* J: @2 b  C) U
  2815. INC <IRQ_Process_Index
    7 ?& J& A$ j1 E2 B3 ^0 Y. M6 B! ^
  2816. IRQ_Process_Scroll;IRQ滚动控制, W+ Y$ ~6 q, q/ q5 K
  2817. LDA IRQ_Scanline_Mode,X
    # k0 g2 K5 C4 x
  2818. CMP #IRQ_SCROLL_MODE_LEFT2 I+ d, F' N& S6 y' q
  2819. BEQ IRQ_Process_Scroll_Left
    , V( }" G) M+ f& V* L+ m" T
  2820. CMP #IRQ_SCROLL_MODE_RIGHT8 _3 Y' R; S( o: ]1 L
  2821. BEQ IRQ_Process_Scroll_Right; B% ~8 C3 ?2 s3 u
  2822. IRQ_Process_Scroll_Zero;不滚动- i3 y* L* X. F, I
  2823. LDA #$00
    ) n# X# w1 b. k7 Z! F, a
  2824. STA PPU_SCROLL* k1 \( b+ ~8 a6 y
  2825. STA PPU_SCROLL: u' `' J. X4 O9 `. T; D
  2826. RTS
    & x; M3 C' C+ P; z4 K* F4 h
  2827. IRQ_Process_Scroll_Left;向左滚动
    ) d" v) N6 M: s0 K/ ]$ K
  2828. LDA <Scroll_H
      U+ g4 T5 C4 X. T5 p, c8 S
  2829. STA PPU_SCROLL; A8 j9 f3 h3 D  W
  2830. STA PPU_SCROLL5 K0 R: h" i) x, b- ]" e
  2831. RTS
    : l* ~$ O* \; b
  2832. IRQ_Process_Scroll_Right;向右滚动
    % z- v! a' p4 ^+ e1 k
  2833. LDA #$00
    % c' f, K3 ^- _' R
  2834. SEC2 z0 I: R: k; E0 B1 l- X3 l% J
  2835. SBC <Scroll_H
    " @- Y7 m) x" O: ~; l0 e0 |, w
  2836. STA PPU_SCROLL
    & b* R5 S  c3 P) Z
  2837. STA PPU_SCROLL
    % A) U) m" |4 o. B5 J
  2838. RTS% X( _1 p% f" l  \

  2839. # q9 W8 H) f2 I/ N
  2840. ;==================================================6 H- Y. ^8 ?& q
  2841. NmiProgram;Nmi中断处理
    2 g" m" R1 s5 X* g4 }1 b3 Z/ n' H
  2842. PHA% h  S7 \8 U/ o9 Q1 o/ d
  2843. TXA
    + z3 X  O) m' J
  2844. PHA& j+ q6 h/ m! ]
  2845. TYA
    ( d9 \& p' x- C: j9 T
  2846. PHA4 a, X$ d3 D1 l/ q4 U

  2847. , e$ ~1 O4 ^3 p) F
  2848. ;读取清除Vblank标志, 防止重复进入
    2 r! ~5 f: V- ^$ L, r' z% o
  2849. BIT PPU_STATUS
    ! a- ^% j' u  s- e0 X

  2850. 9 x6 ?6 {0 A; w0 X9 v$ Z, p
  2851. ;切换主程序bank
    " K6 ]* i  \0 d. a8 L$ k4 l6 z
  2852. JSR Switch_Main_Bank/ ?1 L$ N2 d8 v% ]" E8 C- Z

  2853. % E" D) I, X$ R% _5 D9 x' _
  2854. ;Nmi处理
    : }& K, K# I0 f
  2855. JSR NmiProcess  L( I  H; y$ Q, C
  2856. " o9 ~% c6 a( p
  2857. Nmi_Proc_End2 E/ x+ J; N) x, v- D" R+ E& B
  2858. PLA
    ! `% g$ v- F  g3 o7 ~
  2859. TAY. Y& H0 c' w5 n8 G8 I3 i7 o# M
  2860. PLA
    9 d+ c' |1 S% H9 B% k* P
  2861. TAX  P7 Z: V( J& }0 ?& I
  2862. PLA
    - c2 @. _/ C  H% I) m
  2863. RTI
    1 Y1 l% @2 W1 v3 Z/ ?. U
  2864. % z: q9 F& S+ O9 D* q) r
  2865. ;==================================================
    * g9 n9 Q8 G$ W% D
  2866. ResetProgram;重置中断处理
    3 L0 P7 R- s, i' \  L
  2867. SEI! `) Y0 M# }2 W
  2868. CLD/ |4 e* X% d0 {  e, `3 `9 w
  2869. LDA #$00
    & ~+ I8 a5 p4 L2 ?9 ~5 @& q8 m
  2870. STA PPU_CTRL+ k& n1 b* v4 s( z& w& H; a7 r
  2871. STA PPU_MASK1 Q0 Z5 Z" ?" {* ]* t/ g+ n! I7 r
  2872. 5 A9 F2 F' e7 I! ^. b! N) J3 B
  2873. ;切换主程序bank" Y! }2 [- V/ W$ |: }$ }
  2874. JSR Switch_Main_Bank' |' _+ {, Z& s% k

  2875. * q5 y* D" |8 Z7 W; L  i( ]& k$ K. b4 _
  2876. ;程序处理开始; I9 u1 R6 L0 S( k. q8 Q
  2877. JMP ProgramBegin
    ; A4 }& P" }' u% k  {

  2878. / f1 H, k9 i2 J9 K7 L& e
  2879. ;==================================================
    ) h& a8 v1 }7 I4 n
  2880. IrqProgram;Irq中断处理) p/ d! R9 M' B0 @. h
  2881. PHA5 X/ E0 o, g, X% i3 t- c
  2882. TXA$ n% F( |- p# s. w) M( S2 O' O
  2883. PHA
    ! t8 l  Q3 D" m) Y6 P. b# W  g+ O0 m
  2884. TYA- b+ j- Q3 \, ?8 s
  2885. PHA
    - u3 z% ]5 W. S$ L( q
  2886. ! H' x; K" m. ~5 \) i
  2887. ;关闭IRQ2 O7 y- h5 o: A2 u% H7 e% @
  2888. STA MMC3_IRQ_DISABLE
    6 F0 l. D  v- H7 Q+ n+ P8 j

  2889. 6 ~- {3 F: g+ L$ [
  2890. ;允许下个IRQ触发3 R& T* T' D" e1 Z+ @4 @) v
  2891. STA MMC3_IRQ_ENABLE
    . g/ x7 P! S" N8 j3 k, R

  2892. / o( g' U  p+ E2 u, o5 P
  2893. .IF IRQ_SUBPROCESS_JMP9 j- b1 A  ^: e1 C) }5 b
  2894. 8 {7 T$ R( ]4 U+ W$ [2 r) B
  2895. ;执行IRQ过程7 Z3 L4 ?' q7 m
  2896. LDA <Data_L
    1 c( B5 u: O- q' O/ K
  2897. PHA
    3 S- z2 r. Q' {
  2898. LDA <Data_H
    ( C6 h% T6 G* U  |" t) f
  2899. PHA3 N0 B! v0 E2 P
  2900. LDA <IRQ_Process_Index# L7 j7 p! S, G! s$ n
  2901. ASL A2 F0 ?0 t7 C0 S8 Z4 ~
  2902. TAY
    " d6 \  X0 w$ W7 o& K
  2903. LDA IrqProcessAddr,Y" `2 _& r& K6 X* p6 F
  2904. STA <Data_L3 V$ s/ C( n$ P6 J3 a2 I3 V  ?
  2905. INY1 t. s6 u, _2 O2 q1 j1 T* R. a
  2906. LDA IrqProcessAddr,Y
    + \; ~, N" A1 T# D
  2907. STA <Data_H
    , X: g) X/ r1 d# e
  2908. JMP [Data_L]- [. [# G  S0 ]: l2 [; ^" C
  2909. 6 X6 d: v  |; u: Q3 r8 l3 p) n
  2910. .ELSE% a# d6 z& z5 ?4 F6 f

  2911. 0 P: q: ?- R0 k6 U- i
  2912. JSR IRQ_Process
    3 S3 A: P2 O( v# Y1 b5 x) I
  2913. 0 r, [0 @# o  P- @. _+ R9 ^
  2914. .ENDIF
    8 x0 f, s0 U' V& O1 ^, M2 G

  2915. . n* I. ^+ U0 r8 f$ J9 R! D
  2916. IrqProgramEnd
    & A! R* L/ |9 ~6 c! W* d; u
  2917. .IF IRQ_SUBPROCESS_JMP" q3 w  e+ p4 t( k
  2918. PLA% \6 j( {) K, F( v
  2919. STA <Data_H
    ; Q' \7 j. G! I7 U5 q, q
  2920. PLA4 e! d: @- p. Z! F, w6 s
  2921. STA <Data_L
    " ?  y/ I% R- G) X. J. V; ^
  2922. .ENDIF$ Z2 F2 {7 y; T' a; O
  2923. PLA4 b  i% q8 V  y' u
  2924. TAY3 u& ?) w2 r. ~
  2925. PLA& G& }; u# ~4 e* b. A) j5 b
  2926. TAX
    9 N4 h" s" ?* ]
  2927. PLA* B3 ~# U* h( I3 Q" j, a
  2928. RTI
    / w: O/ W1 M8 I$ O* r4 l2 q: V
  2929. % W2 Q- R" {7 N' A' o* h
  2930. .ORG $FFFA3 V, k; R: {$ M# m
  2931. .WORD NmiProgram4 H% J, l  W4 e) [2 h  ?. R
  2932. .WORD ResetProgram0 W7 x1 ^& c/ n
  2933. .WORD IrqProgram
    % ]0 l* ~) n6 z* E4 \% M
  2934.   L! e* k( M3 a/ j- i
  2935. .BANK RESET_BANK & BANK_DATA_MASK8 y( Z6 D. l% h5 w& p; b" d7 _0 |
  2936. .IF SOUND_BAR_SHOW_ENABLE
    . x: M" v" J* l/ b

  2937. 9 a- d9 I: O  p7 [$ X5 a" l0 p
  2938. .ORG $FE00) y6 n" H0 L* o$ [
  2939. PHA) e0 I: p3 o. m& x- @# j
  2940. STY $07BA& n5 J/ s) i9 Y, B
  2941. LDA #$8D1 Q2 {" s# \. S" R5 N% h
  2942. STA $07BC2 o* Q! S, u. G6 A9 I# `3 G
  2943. TYA
    . t( l+ B0 ^* V6 I, R$ j3 a
  2944. CLC8 z# v& `2 J+ y3 A9 M7 K1 R
  2945. ADC #LOW(Sound_Bar)" D, V( \6 K- W) f* V1 ]8 d
  2946. STA $07BD
      L- o, ^! @3 f8 f, T% o; b
  2947. LDA #HIGH(Sound_Bar)
    / z& _& u" E/ n* z  C
  2948. STA $07BE
    * s  G& N9 z, g) `
  2949. LDA #$60! M  }5 X  A: l4 v% E- K8 C
  2950. STA $07BF
    * }1 v% f7 v! s* x5 B9 F2 o
  2951. PLA
    4 G; c( k. a+ H3 S4 F
  2952. RTS8 ?, h1 }- o: y  l2 G
  2953.   f. Z  A: ^9 |$ |" G9 c- ]
  2954. .ORG $FE20; i, b6 \$ h9 \3 a: d# N& p( t) x! K0 ?- v
  2955. STA $07BA
    9 j6 N# v! \' S* C# h
  2956. CLC
    , [- c( k7 x; A$ x  [
  2957. ADC #LOW(Sound_Bar)5 N$ y% K+ N' q  V8 ]& u
  2958. STA $07BD' R& C6 Y( X, j4 t2 E
  2959. LDA #$8D
    # k8 W, a; Q4 j$ k  g$ O$ z& z
  2960. STA $07BC
    7 s& ]  U, W7 z4 @; [
  2961. LDA #HIGH(Sound_Bar)" h* A7 `% r) U2 t# H! D
  2962. STA $07BE! W, I6 c; K' }( `; l/ C
  2963. LDA #$60
    ' E1 G- O; z7 n8 d0 n
  2964. STA $07BF9 v* V6 p. \/ L
  2965. RTS5 c5 R8 H) w1 q8 }3 N6 M; Y- X
  2966. ; ?; Y* k5 P: A1 @* U
  2967. .ORG $FE40
    $ q1 R$ W6 j% s( K: s  b
  2968. PHA
    7 }' |) }5 @( J/ ^' R7 W
  2969. STY $07F1
    + B: W1 ^: ^0 n
  2970. LDA #$8D
    : \% D' y8 b4 S7 J/ \0 c7 ~2 U- R  p
  2971. STA $07F3
    ) L: Z, s+ U( p! r1 G* P, [* j5 j
  2972. TYA
    ; _$ h9 y$ C- ~
  2973. CLC
    ) t- G7 l& r/ t" Y
  2974. ADC #LOW(Sound_Bar)
    7 P! G5 Z" O5 i6 D* m; J" L
  2975. STA $07F4
    % Y4 M* O; U+ q/ X
  2976. LDA #HIGH(Sound_Bar)
    6 K( H9 V/ y9 r, H. {1 \
  2977. STA $07F5
    - o% |" O0 d+ h# o' }4 K1 W$ `
  2978. LDA #$60' O3 W6 I6 W. S8 t2 |: ?8 K
  2979. STA $07F6# s$ K) {8 |7 }
  2980. PLA, Y# W3 O# L5 |8 A& p* y: ~( a. h
  2981. RTS; y* E* B; f6 S3 i( ]1 {% F
  2982. 0 y' ~5 o% u: o) ]) H* j+ c9 P2 t6 i
  2983. .ORG $FE60# d  o/ k/ a5 i# i. l. @
  2984. STA $07F1
    ! d7 @# i4 S% ~% W- Y3 C! c
  2985. CLC1 K7 I6 H1 [0 W, [
  2986. ADC #LOW(Sound_Bar)& L' t5 |: O  i
  2987. STA $07F43 P6 T/ `" U  o7 ?3 O- |+ A& K' |; ~
  2988. LDA #$8D
    7 _. I0 o6 g; L! q( M
  2989. STA $07F3; r$ I( u" o- S% m) _
  2990. LDA #HIGH(Sound_Bar)
    - ?+ y5 w* X/ t- }% O5 g
  2991. STA $07F53 r6 [3 @/ G! x: a! s+ u
  2992. LDA #$60
    . {8 h3 u$ P) A6 {4 a* ?7 k8 }
  2993. STA $07F6! I. b  Q( E6 I
  2994. RTS
    ; t7 V" r! `/ C2 A& {9 Q) O, x

  2995. , U6 L, F! ^, A3 i; K
  2996. .ORG $FF40  D) x. i* o) w) E: E" ?5 o% ]
  2997. STA $4000) R& _9 B( e& A0 v) z7 n
  2998. STA Sound_Bar + $00# |' h* f; _  H0 W- Y3 ^
  2999. RTS  M' i6 ^- I& \. g, w

  3000. 0 t2 m! ^7 U5 E/ |9 Q
  3001. .ORG $FF48. S4 P5 E" w" _) h2 \- M8 e
  3002. STA $4004
    ' o/ y7 h7 L7 G8 p/ w3 [
  3003. STA Sound_Bar + $04
    " _" h8 I2 x* o. G
  3004. RTS
    1 F  Y) a0 }6 B3 @1 |! b- s

  3005. - Y& r6 r- c( @  s$ K( e6 u7 b
  3006. .ORG $FF50( A2 w4 ~2 O  g3 _5 M  P
  3007. STA $4008
    . X; `1 }) A/ h: k
  3008. STA Sound_Bar + $087 ?. X0 _3 U" h( O: X, G! k" }
  3009. RTS
    6 C+ Z2 v" _7 b8 ^: i( ~8 _. w
  3010. 1 Y' U6 l( R5 M
  3011. .ORG $FF58+ P3 Z) X& n# f# d& M* V$ C  ^
  3012. STA $400C) y; V8 V/ Y- q  l
  3013. STA Sound_Bar + $0C
    . A* q/ _3 r# l. g4 |
  3014. RTS
    9 p% K0 N7 R  I6 X
  3015. / z; `+ K: N" x: A7 t' Y$ r9 u
  3016. .ORG $FF604 N) v* x& A/ c6 ?5 W. Z
  3017. STX $4000
    ' j9 Z& @# _4 q! w+ \
  3018. STX Sound_Bar + $000 t8 o' ?: f( O4 i0 m6 c) N9 A6 Q
  3019. RTS8 J3 ~3 y: M2 _$ ]& \6 h
  3020. ! F8 Q/ X0 p; X* \2 L
  3021. .ORG $FF68
    $ W( F5 a3 s6 Q+ j( f1 E
  3022. STX $4004) @0 x( z% N4 j5 r+ ^' O3 n- V
  3023. STX Sound_Bar + $04( {4 s2 R$ W# }
  3024. RTS5 j2 z  p/ P' i+ {- u
  3025. 4 w+ C' Y: z6 k0 G5 S1 O
  3026. .ORG $FF70
    ; d$ |2 X, G" u" |2 ~
  3027. STX $4008
    9 Q( z5 v$ H3 U  j# B
  3028. STX Sound_Bar + $08
    # g: D- ^( z. b; M7 u. A3 e: n7 q
  3029. RTS
    * @9 B# w3 \  V! L: v, a

  3030. % r# s( T( ]" o1 M0 h4 _% |! ]
  3031. .ORG $FF78
    ! q5 t7 v+ C- w
  3032. STX $400C
    " o/ |6 |9 R* Y1 s
  3033. STX Sound_Bar + $0C. Z( @5 v' N: n4 _/ A  X3 A; N$ _
  3034. RTS
    7 K/ v) W( o. W7 o0 {5 M' E

  3035. . C2 Z( \1 ]6 q# t1 _4 Y0 J
  3036. .ORG $FF80
    8 j2 P# S, Z* `
  3037. STY $4000
    ! z5 h% H6 U) t) G
  3038. STY Sound_Bar + $00. ], G0 x# W2 G
  3039. RTS3 G3 p- Z! E; [' N* S

  3040. 6 [* m* W' S# |, r/ T6 Z# |- G
  3041. .ORG $FF88+ w7 r5 l9 k( Y! `
  3042. STY $4004
    5 k) s9 I" C  S8 I5 O/ d. L4 m' o
  3043. STY Sound_Bar + $04
    1 N# Q2 ]  j; t5 a9 k3 B. K4 n; M
  3044. RTS
    : X6 e! m7 B! P

  3045. $ ~: Y- E0 i( t
  3046. .ORG $FF902 Y) y% A5 m/ ~7 Q
  3047. STY $4008+ ^$ V0 K1 Y! X) G0 @
  3048. STY Sound_Bar + $08" c/ P" U- u! w* d4 b4 f0 a+ L
  3049. RTS* N) j0 G0 E2 _3 @7 X3 a7 C
  3050. 4 W+ @$ o) E6 X6 d; }0 I
  3051. .ORG $FF984 W" \0 c4 S) `: o+ g& I- l
  3052. STY $400C4 {. c7 Y7 `/ m6 x) u
  3053. STY Sound_Bar + $0C
    ; W" \( f9 _' g: k) F
  3054. RTS$ b1 r0 Z$ g& u# D$ k. ]
  3055.   [7 N2 {) \( C' u" g, }
  3056. .ORG $FFA0( E2 p# H1 v9 B+ j: C
  3057. STA $4000,X$ D) D: y, ]2 a' o" n
  3058. STA Sound_Bar + $00,X
    ' G. j8 R0 ?6 Y7 j$ n
  3059. RTS
    7 a) ]% [  z$ n

  3060. " ~: S% p& G2 S5 n! K
  3061. .ORG $FFA8
    5 S: ?0 y9 w4 t6 z7 w1 U& J
  3062. STA $4000,Y
    1 e! b, H( S$ A/ K, f  i  F
  3063. STA Sound_Bar + $00,Y
    7 a* G5 F- O& v" k
  3064. RTS
    . f/ [  m1 r& F2 q  L* H6 _1 n

  3065. & ?3 @* h) }% C8 e
  3066. .ORG $FFB0
    5 P- D; |& M& L3 [# N/ p
  3067. STA $4004,X/ f2 u' V; @3 g/ x9 Q
  3068. STA Sound_Bar + $04,X
    $ |$ j4 D) i% {5 a- U  s/ u" H- b) \
  3069. RTS
    / V5 J: ?- p  Q& q& ^

  3070. ; c. F* y" E9 U/ i
  3071. .ORG $FFB8
    , f. |- z& ~& x% }% A
  3072. STA $4004,Y
    * M5 Q4 F+ s3 D# h; b* |
  3073. STA Sound_Bar + $04,Y6 V, a+ L4 a% U; n
  3074. RTS
    . H3 Q0 s) x" G

  3075. 1 x8 T6 r$ [( n: y
  3076. .ORG $FFC0
      i) z; U# m4 X; L/ w8 ^* L
  3077. STA $4008,X
    5 s2 ^; \) g  g! T
  3078. STA Sound_Bar + $08,X
    $ e5 q( t; f% t# X: X
  3079. RTS3 Z) k, A; B; @1 ^
  3080. % r- D1 b5 q+ r8 h" k
  3081. .ORG $FFC8$ C$ {/ Z! T( ^* D, m
  3082. STA $4008,Y
    ) V2 c8 }6 }, y
  3083. STA Sound_Bar + $08,Y: H! J, A9 r6 R& {# V- d& P1 e
  3084. RTS
    . B2 q; g9 j" ]

  3085. 4 _6 Y) z5 u+ ]9 I! ?8 N+ N
  3086. .ORG $FFD0
    9 T3 z- c) _, j; i
  3087. STA $400C,X, ?2 U; {8 Y# H8 e
  3088. STA Sound_Bar + $0C,X2 C7 y1 |) L* Z4 }. M# Q
  3089. RTS
    3 @" ~$ [- Z7 j* C  {+ R! o
  3090. 5 R( q) H, V' X5 j. J. _
  3091. .ORG $FFD85 N" q* k: ]8 ?9 U) V  ^
  3092. STA $400C,Y( r8 Z4 U% J" K9 ]/ x6 g% g+ y9 w9 t
  3093. STA Sound_Bar + $0C,Y; q9 ?2 z/ Z0 {3 p/ N5 i
  3094. RTS
    0 r9 G. s9 O* Z5 a# l" ~) a  T& }3 ?

  3095. , \; a2 Y9 @% T6 G0 u0 \4 u* E% q$ l
  3096. .ENDIF
    " {, J5 x8 x4 d6 p3 v
复制代码
6 J$ v6 A" N( b$ B0 t4 v9 @
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3328 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-7 16:23 , Processed in 1.090820 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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