设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
1 J' v( q3 ?# _/ n" b" h7 x% `: f0 |  {9 q* o1 V
[FC][音乐12 IN 1]; p# {0 W8 Q6 B8 e$ f: _
时间: 2023.07.23" n. n7 i# K* r: O
作者: FlameCyclone8 l" l: D+ a( O3 y9 R
$ B# e5 w2 K8 h- M
收录音乐内容:
' c! @9 }& k$ s) H) P4 \! j4 _1.Raf世界) ?7 j- z- U0 S3 w
2.最终任务
5 E* u3 u+ a& K% s( ~  z3.赤影战士/ c- D, n0 j& U! \* k% R, l
4.双截龙
+ E' I2 A' E  c) q5.双截龙2; J' \$ m) x8 m- P  \# B7 v
6.双截龙3
, T+ H9 [% A; [* O" @% U7.洛克人3 j% d7 `1 o0 e# J
8.洛克人2
- r. n$ C. K( v/ ~. W  }9.洛克人3
" U7 N5 J* ]+ S# y10.洛克人4
, m+ Y% X! E( R+ i8 B$ p" c  e8 W. K$ ]* E11.洛克人5
/ l- Y7 y. j4 D' O12.洛克人6
0 b0 |9 m1 |% [8 i* m, D
) N* Z' O. z; a. E) O) X操作:3 U* h. [+ H* t" E# j  k& `
上键:         上一个专辑+ u+ k3 @4 a9 D* x7 B5 d3 H; g" R
下键:         下一个专辑
# t9 ]' N* w( y8 w8 U, V左键:         上一曲
4 T1 W5 {* f/ Q: @右键:         下一曲, ^4 Y2 D+ i3 n: T# J
B/A键:        前10曲/后10曲- `; V: G+ V! X3 k* V+ I- `+ L
选择键:       下一页
% c" H( T; A( U4 m( A7 h开始键:       停止/播放
2 j- m# }6 i8 X) ?( W8 y  S9 ~/ A( p8 p7 y/ N% E
http://flamecyclone.ysepan.com/
3 O& @6 r$ p) X& A, j5 b6 x: O0 o. u. Q

3 ~& p0 h* t, S1 V
' L0 y% g7 g8 w# v
% P" P# A$ W! W% K; R3 H  j4 u
  1. ;[FC音乐][播放器模板]
    5 @! s9 T; x6 o- o' K; i( `2 I
  2. ;FlameCyclone 20230710/ X- Z: l$ U- x- F( i1 K

  3. ' d* ^9 m: F3 l' f# k7 `
  4. ;文件头' J% ?1 m( Z) r$ \. h: x0 e
  5. ;======================================================================$ `' x% g1 `; P: a) ?- |$ O
  6. .INESPRG 16                                             ;16KB PRG 数量
      I0 r: z5 s+ _; s1 r
  7. .INESCHR 1                                               ;8KB CHR 数量
    * O+ C+ X, l2 c
  8. .INESMAP 4                                                   ;mapper 4+ ^8 B- t: R; p( O7 v# y
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    3 P' \/ L9 Z- t1 V; I
  10. . L) k* B, h* r$ a% J5 n$ @+ F1 P
  11. ;==================================================+ ^/ ^% J9 n  Y! F4 N% x8 }* [7 i
  12. SOUND_BAR_SHOW_ENABLE       = 1
    5 b& l1 E$ C1 ?- s$ J  d6 y
  13. ;==================================================
    9 @! i/ p0 Q: u; T
  14. BANK_DATA_MASK              = $1F
    % Z) H4 g  w% d2 o5 X/ y# ]
  15. CHR_RAM_ENABLE              = 0& C! G1 m6 i" }# U+ d
  16. IRQ_SCANLINE                = 1366 a$ z+ T' J$ B
  17. ;==================================================7 t0 z; {3 z2 f; I8 ]9 @9 S4 r: s
  18. SOUND_DATA_BANK_00          = $00
      v! U. i) b: {: m; s. [. T$ R& Q, j
  19. SOUND_DATA_BANK_01          = $01! h2 ^9 e" I# k% J  p  l& i
  20. SOUND_DATA_BANK_02          = $02% y9 K* ~8 K9 {$ @' p: ]+ P
  21. SOUND_DATA_BANK_03          = $03) l8 V# }" a! x6 M
  22. SOUND_DATA_BANK_04          = $04
    % S2 e  O+ T* G" Z) n: e8 q
  23. SOUND_DATA_BANK_05          = $05+ ]8 Y% R' t! J- |  X& Z
  24. SOUND_DATA_BANK_06          = $06  l$ Q+ }3 q/ V
  25. SOUND_DATA_BANK_07          = $07
    . S- _' A' O" J6 P8 Y
  26. SOUND_DATA_BANK_08          = $087 K. r+ w$ W: ]! B7 f$ B" T
  27. SOUND_DATA_BANK_09          = $09
    # X/ L& W. K* @$ S
  28. SOUND_DATA_BANK_0A          = $0A
    " t& ~1 s6 r7 J' \! v6 U% b& I& R
  29. SOUND_DATA_BANK_0B          = $0B
    9 X8 J# E0 M' S! h  N
  30. SOUND_DATA_BANK_0C          = $0C
    % a* s* w( z4 [0 q! Y* i* \* h0 S
  31. SOUND_DATA_BANK_0D          = $0D
    0 h7 U, e% P7 b- p: p
  32. SOUND_DATA_BANK_0E          = $0E
    ! {2 y, A. m+ e3 Y* {/ W1 Z$ F
  33. SOUND_DATA_BANK_0F          = $0F
    5 M6 B  @( h% J0 S  f% _
  34. & R3 D5 \& b* D! B- L
  35. SOUND_DATA_BANK_10          = $10  ?4 g% u1 `1 A) a! C0 b; W+ a, t0 b
  36. SOUND_DATA_BANK_11          = $11
    1 L0 t4 |9 j0 t
  37. SOUND_DATA_BANK_12          = $12
    ' A1 p4 |) q  b/ H% Y" U
  38. SOUND_DATA_BANK_13          = $13
    ' N/ ]. S. x4 v0 W& h! y$ A
  39. SOUND_DATA_BANK_14          = $14: |3 v& N3 Q  @! b1 P" Y. G" @% s
  40. SOUND_DATA_BANK_15          = $15
    + w8 z+ w2 q9 f8 e  H* W
  41. SOUND_DATA_BANK_16          = $16! J. m& ~* K. ^& |! L6 C
  42. SOUND_DATA_BANK_17          = $17
    / o4 v0 u1 g5 z; S4 f* t6 M
  43. SOUND_DATA_BANK_18          = $181 Z+ W/ `& @8 W* H
  44. SOUND_DATA_BANK_19          = $19' C( M  w  m8 s* x+ |
  45. SOUND_DATA_BANK_1A          = $1A
    0 o0 d& L3 y' [! d3 p
  46. SOUND_DATA_BANK_1B          = $1B* z1 K- N0 K# U, b/ `
  47. SOUND_DATA_BANK_1C          = $1C7 Q% B/ ]6 A' w0 ]1 M- T9 s4 z
  48. SOUND_DATA_BANK_1D          = $1D4 Q9 J, t2 S+ b" w) z. \  }
  49. % U  x; f0 _- f% _% Q; u
  50. SOUND_DATA_BANK_C000        = $1E
    1 I) k- o  @7 C; `, N
  51. SOUND_DATA_BANK_E000        = $1F
    1 z$ m5 }6 y/ }# w/ d- x3 e# ?
  52. ;-------------------------------------------------
    4 s9 i' Q( V& Y' I- x* v. x5 i
  53. CHR_DATA_BANK               = $20
    0 Q6 l3 m- M, m
  54. CHR_DATA_ADDR               = $A000
    " ^, U1 m& Q  T9 {  w* J2 D
  55. ;-------------------------------------------------
    8 B& K( ~1 i4 W# J9 e+ m
  56. PROGRAM_BANK                = $00: e* C3 h! V9 [( R8 ]
  57. PROGRAM_ADDR                = $8000
    & a7 [/ k' U" }: E; H5 z$ ^
  58. ;-------------------------------------------------. U& q: X' l, v4 U
  59. RESET_BANK                  = $1F
      m  r/ O) |$ ?; M* m; Z: e
  60. RESET_ADDR                  = $FD00( [( l: m! T, ^7 m

  61. ) S  r' J3 D5 P4 C' P
  62. ;==================================================
      e7 {0 F. Z- O/ c6 \
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    3 x4 j2 I/ o- |0 d  \3 a* r7 w
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引0 M/ W6 U: D1 N+ G
  65. PAGE_SIZE           = 5                     ;每页节目数; P% c, |9 [% A9 e0 U2 A

  66. 2 Q6 s. N. ]. {8 Q9 F
  67. ;==================================================6 I  A! R: F* @5 C2 u- s
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    " e/ Y5 D3 k: Z3 @
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数5 e+ K) ^; P; s+ s: L
  70. .ELSE# `/ `, W! `# W8 T; _
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数8 L" o4 N) v# X+ W5 U
  72. .ENDIF
    4 C+ m: B3 y* R+ k& L& L$ k
  73. ' @* H  {$ x, q4 Z2 X# B
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    3 P6 H+ W: G8 e# t" T7 ~. L; ^
  75. 5 ^- |- F9 P" e/ _6 _
  76. ;==================================================  f$ Y- y3 S8 w& A8 I8 Y
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    ( M6 B+ o8 R. H  I/ r0 x( C3 y
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2& z, d, ^/ `* L- u' l
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    , ?2 q( b. u" `0 H
  80. ;==================================================* t" l# b. g3 T+ {$ [/ e/ \& U
  81. Caption_Text_Pos    = $204D ;标题文本位置6 ?  v. m8 A1 q# a. K9 m% s3 _
  82. Author_Text_Pos     = $2324 ;作者文本位置
    # n4 ~2 B6 z4 S# H
  83. Date_Text_Pos       = $236B ;日期文本位置! o* m2 z6 c3 |! l+ f
  84. ;------------------------------$ {$ x* U( [, J2 u$ M
  85. ;------------------------------
    1 R- l" L0 I$ s4 R! Y
  86. .IF SOUND_BAR_SHOW_ENABLE. @5 w6 q5 M3 _& Q
  87. 2 _1 Q( W% R" _9 s" i* C
  88. Play_Index_Pos      = $2273 ;当前曲目位置) U) E) G+ h, P) U. J
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    # H# n# x! ^: N( ?
  90. Play_State_Pos      = $22F3 ;播放状态位置# s0 e2 x7 @# Q4 g
  91. 7 M2 w+ f" w) |0 H; L1 H
  92. .ELSE& x, E9 p" G4 z2 {! r

  93. ) X4 W/ H+ @5 Q) V
  94. Play_Index_Pos      = $226C ;当前曲目位置9 w* ^7 F$ I: V: w: q
  95. Play_Time_Pos       = $22AC ;播放时间位置
    * M7 s! E0 i+ W7 [/ F
  96. Play_State_Pos      = $22EC ;播放状态位置/ d& d! w- t# X9 H2 Z  o
  97. ) w" v3 r1 w! h2 h5 b
  98. .ENDIF
    + `9 D+ i$ o; U; V9 t# C) Y6 d& Y; E
  99. ;------------------------------
    4 Z8 N6 |; Q% ^* p' w
  100. Track_Name_Pos      = $222B ;曲目文本位置
    8 A  [7 e1 I, r% L; D6 Z
  101. ;Track_Name_Pos      = $00 ;曲目文本位置) K0 u  \' Y- C5 v
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    0 A/ C' F  r+ }; U
  103. Sound_Bar_Pos       = $2269 ;音乐条位置; V3 W$ t- a! u% `6 Z7 c
  104. ;==================================================) P: Z: u4 {& r# D# r& ~7 K3 i) W2 S
  105. Scroll_X = $00
    3 \" z2 G5 ~+ C" J8 h  A
  106. Scroll_Y = $00
    9 b6 x0 Z6 O: B; P. v
  107. ;==================================================
    " K- O/ c% e  t# [& g- A8 }# s$ \
  108. Sound_Ram_Addr_1       = $0100- h3 ?9 n- `1 |9 U7 n! i
  109. Sound_Ram_Addr_1_Size  = $80/ {- ]& p0 B+ i6 W1 C# e
  110. Sound_Ram_Addr_2       = $0090' t4 L. b8 d6 _
  111. Sound_Ram_Addr_2_Size  = $70  @4 c, A! b6 P$ v* X- Y1 v
  112. Sound_Ram_Addr_3       = $0700
    5 c1 i$ n+ j' `5 ?. I3 E
  113. Sound_Ram_Addr_3_Size  = $00
    ' m; Z1 p: K% e0 P; V
  114. Sound_Ram_Addr_4       = $0400: c, u2 f, v6 T
  115. Sound_Ram_Addr_4_Size  = $00
    . K/ `7 ], r+ u. S& Q3 P
  116. Sound_Ram_Addr_5       = $0500: h9 H; M0 S$ C' b" k' U- m
  117. Sound_Ram_Addr_5_Size  = $40
    # n/ K9 @* c) P# U6 W: Z" V7 W

  118. 6 B% b& `7 c4 J7 v$ ^
  119. OAM_TEMP_ADDR   = $0300: h, d1 p' i2 [+ }2 p' X
  120. - N% q: }! r" y" w
  121. ;==================================================
    0 A* [5 R& `0 }/ i) v. ~
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    $ m3 J: t8 J% g) n
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    ) t$ Z  K. L0 N) S9 |4 X, L
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位* ]) }' ?+ ?7 z) {5 z; X
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加14 r7 ]. B" q; b( h: ]# Z
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    7 _& \0 c4 g4 k( o8 a7 H# B
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 # u; _. w* j" M0 {& \7 f! F
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加! K( c: p5 W0 i+ H/ F: R( Y+ u
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 & E7 W( W8 {8 D, i& \. T- w  l
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    . J) o# z& p8 F* u
  131. APU_STATUS              =   $4015   ;声音通道切换. z8 U( z1 z9 y4 f6 P8 O! _+ M
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    2 K7 a1 i: O1 c. x2 \9 |
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通" i+ U; [' t7 z. `  r) l! n
  134. ;==================================================' e  _" i# t5 O$ B! k$ ^, I" {6 i. B
  135. MMC3_BANK_CTRL          =   $8000, D" C) P: `5 f
  136. MMC3_BANK_DATA          =   $8001
    & ]- ^& N: a: V9 S" S' x' @
  137. MMC3_MIRRORING          =   $A000  Z- ?8 a" l9 p- s$ k
  138. MMC3_PRG_RAM_PROTECT    =   $A001$ p2 D, k7 T3 Y+ x) }" K0 i
  139. MMC3_IRQ_LATCH          =   $C0008 r9 x3 u+ {  z2 ^0 ^, g
  140. MMC3_IRQ_RELOAD         =   $C001
    5 Z& j5 U& g2 Q4 j! o
  141. MMC3_IRQ_DISABLE        =   $E000
    $ B) T1 q* Y- k6 j) ^' W6 W
  142. MMC3_IRQ_ENABLE         =   $E001
    $ Q, V2 z9 ~$ |& n% M. Z

  143. 8 s4 T$ N/ v8 U& Q/ G
  144. ;==================================================
    " J2 A6 @* a7 z3 O" l+ [. v
  145. PPU_Addr        = $0200) R: d  X0 e' @8 R' e
  146. Palette_Addr    = $02C0
    ! B* W" L- W7 S) j# b* v% A3 D
  147. Sound_Bar       = PPU_Addr+$E0
    $ O8 L% [; }: m; u/ J" D* E
  148. ;==================================================
    9 {  x4 J, [$ z
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D2 g5 |% S% u/ ]) d8 M
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11$ {6 }) `5 a! f. s9 k0 ?/ w
  151. PALETTE_UPDATE_MAX      = $2C6 |, H$ U1 n# j7 a3 G9 I; `' P4 Z) o
  152. PALETTE_UPDATE_MIN      = $21+ z0 h. x, B# {0 M+ p1 f* H" l. P
  153. PALETTE_UPDATE_INTERVAL = 60. U, t) s  G/ ?6 W' q, r- Y; {+ o
  154. ;==================================================+ v( V* H$ c, ^0 W7 \; z4 R# e; j' d
  155. Sound_Bar_Cnt       = PPU_Addr+$F0( J. k" y) z5 ~  V% h% p, Y
  156. PPU_Cur             = Sound_Bar_Cnt+$029 J9 ?, C' q! v3 T, b
  157. PPU_Addr_H          = PPU_Cur+$037 c& N% r6 E/ Z2 n' o
  158. PPU_Addr_L          = PPU_Addr_H+$04
    , R- f$ i$ c. z
  159. Screen_Ctrl         = PPU_Addr_L+$01$ T8 P: X8 v' x" m# v6 B. F" E! i
  160. Screen_State        = Screen_Ctrl+$01
    4 j; u) A# v: ~6 e2 a
  161. ;==================================================
      R1 Z6 ~% w) h6 Y- g: h
  162. Use_Ram_Begin       = $50' |% V* {" g$ i
  163. ;==================================================$ E$ `, r2 E3 ]
  164. JSR_Addr_Op         = Use_Ram_Begin
    - P1 ?% O  P7 C% H2 r* D/ v
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    4 B3 F5 K8 o1 h) g4 }( [
  166. JSR_Addr_H          = JSR_Addr_L + $01
    ; A+ ^- c' I' }8 A8 \
  167. JSR_Addr_Rts        = JSR_Addr_H + $01* m% q% ]5 X/ C8 A1 n1 o2 p# |# N
  168. Data_L              = JSR_Addr_Rts + $01
    * ^! n. A! g( g$ q$ w8 n
  169. Data_H              = Data_L + $01
    8 a* q! J; C8 ?
  170. Data_Cnt            = Data_H + $01, ]/ O& C- o& S
  171. Data_Buf            = Data_Cnt + $016 O3 @) F6 g; |2 `
  172. Nmi_Time_Count      = Data_Buf + $01
    ) R8 h) q' U7 s8 o
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    ( R  }6 n2 Z# O6 q: t+ c
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01" Y# ~' ^+ F. b5 _7 G6 E

  175. ) e" b  S$ O8 N5 g6 j
  176. ;调色板刷新标志9 H8 S) x4 n" E/ o
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    ) _4 p+ A. M% Y0 y9 h% x2 S: C5 W3 _
  178. ' G" S) l( o1 q
  179. ;当前帧文本写入禁用标志
    ( k2 ~  n9 @% T% }- V8 g
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    & H5 }7 v% G+ H* D8 J; q

  181. " j7 E% x* t/ u6 `( g
  182. ;==================================================
    * Y4 l' b( w; D. N  `+ O$ p: p  L
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    3 u3 S3 N8 l" {/ Y, V- D: m
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    , c- v0 }9 V! e* P; ^: a4 j
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间$ a& U  [/ l  n
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    4 H# O* F/ O& f& B  z
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    * {% e1 }- m# _* A% v) J0 \
  188. ;==================================================; s; ?9 C1 u6 V8 e! g9 y1 Q% v
  189. Key_Keep            = Text_Disable_Flag + 1/ E0 k4 M  t" U8 w  v$ ]
  190. Key_Once            = Key_Keep + $012 g6 P5 U/ K! N
  191. Key_Kemp            = Key_Once + $015 ^' [" g2 c! \% \& I$ ?& Q
  192. Key_Temp            = Key_Kemp + $01# O" T( T  f+ M
  193. Key_Getv            = Key_Temp + $01" h2 p2 J* P* j' O8 R& g6 D. j3 D
  194. ;==================================================7 n5 L1 F- u: ?5 m
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    5 n4 d, [) ^+ V/ A" T8 }) D
  196. Music_Item_Last     = Music_Item_Cur + $01
    6 r3 f) c' `' R4 a, Y
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集  Q+ r2 z% O4 o* x, i/ e
  198. Music_Cur           = Music_Total + $01  ;当前曲目* A1 K9 Z, t1 ?% F
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目7 Q/ @+ n$ e$ h4 J4 j) R
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态2 y: P: B0 M1 O6 a) @1 V6 W1 T. A
  201. ;==================================================
    , w! T  y' v& n" B, e
  202. HEX_Data            = Music_Stop_State + $016 L& ~5 A7 S- |. w
  203. DEC_H               = HEX_Data + $01& Z5 t8 y# B- Z4 O# I* K
  204. DEC_T               = DEC_H + $01+ q% u+ ?- g3 V  f4 N* x
  205. DEC_L               = DEC_T + $01
    : p5 E5 l6 Q* K0 B; \( @; w8 T
  206. ;==================================================' i) K" J3 R: M- E- k
  207. Time_S              = DEC_L + $01/ ]6 ]# |6 }; j: T7 p, e
  208. Time_M              = Time_S + $013 z3 F0 U4 n/ g4 S( _8 e
  209. Time_H              = Time_M + $02: t2 H# |- V: [4 }. [
  210. Time_Cnt            = Time_H + $031 j7 J) k: z' s7 b, ?
  211. ' N( b4 B! l% z) l& b
  212. ;==================================================0 T) s6 b  K: z/ v  P* E) V9 l2 ~, j
  213. Music_Bank_8000     = Time_Cnt + 1" t: [1 e7 ]! H- o! F
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    , ?# l3 V8 y# S: d8 R! }
  215. ;==================================================% \9 G! c( M  q/ w& j6 S# o& ?8 b6 s
  216. Scroll_H            = Music_Bank_A000 + 1
    - L( K# y  J. K8 `: C6 W
  217. Scroll_V            = Scroll_H + 1
    6 O# F  n6 L6 s7 A: n1 y4 o0 a
  218. IRQ_Process_Index   = Scroll_V + 15 S' [: ]; Y% u9 f
  219. ;--------------------------------------------------
    & @5 s6 c7 e( K3 a- N; X
  220. Page_Cur            = IRQ_Process_Index + $014 N% q, b9 r  O' {* s- v
  221. Page_Cur_Index      = Page_Cur + $01
    6 S$ v! |* M( g" E& E
  222. Page_Cur_Cnt        = Page_Cur_Index + $01* J9 L6 X# `1 }( }5 V8 D
  223. Page_Last           = Page_Cur_Cnt + $015 W: {5 _) N- V# {5 g- N/ {7 A
  224. Page_Last_Index     = Page_Last + $01
    - K. e) U. y' q- B. @) X  \
  225. Page_Last_Cnt       = Page_Last_Index + $01
    , j1 R- Z8 r' H" c, k0 j1 a
  226. Use_Ram_End         = Page_Last_Cnt + $01/ j7 s8 p! ]$ h& J0 u
  227. ;======================================================================
    ) J# g2 W1 I' D* x& l
  228. ;音乐数据块" M0 H8 o/ T1 u: x  z. O0 l# E8 Q
  229. 9 r1 n' i  N* n9 y7 z
  230. .IF SOUND_BAR_SHOW_ENABLE
    7 I( j6 H7 ]0 ~& K

  231. / K; X: g( j0 G6 t+ u, ^
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    6 P  ~9 p* h3 V- n
  233. .ORG $9000
    & R7 {8 |" D# {, Y8 ?9 T4 i
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    . W6 l2 m# q8 J, M: e
  235. 0 x% x$ K6 _0 M" S/ P" |2 D. r
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK' j4 y5 e* _' N3 v6 c' S. S
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ; v+ X" W5 A$ Q5 z

  238. 3 Q! x/ z& ~$ a
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK7 @/ ~6 }+ ?+ Y3 ?
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank": [* P) ^- k& k8 _3 I
  241.   D9 ]7 }! e$ x6 V+ n: r8 ?# J  G
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ' K! `4 i; g6 e
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"" u# [& m/ ], D& u; U

  244. ; m$ M4 {0 L$ J! s9 f6 b+ [
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK; H2 |+ ^  p9 O: Q
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"% }1 E- E" B0 Q' P' ], v
  247. ) }' w; L* u8 B. T% D
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    # u8 W$ f. ?0 a  U! f
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    2 A, x  M( a1 R8 v! z+ I& H2 z

  250. " \! I" v7 H0 c' E" R4 e
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    / I* a7 D& M5 V$ k  @! ?( t
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank": v6 H' @/ {% P
  253. 5 {( o% i! x, C
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK, ~1 P) @" _/ A3 {) Y  ?" [
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"5 k  Y& y/ V$ q- p

  256. / b, T' s& z$ p( y
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    : ~8 h! Q9 o; B0 a( U7 ^% N% S9 q
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"/ d9 n! _) L4 Y; }( g
  259. 2 B, M8 s6 v' n  K0 C1 J+ M/ i
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK! C  p' F* T6 _$ Q# \
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"5 y$ S7 ]& d) l

  262. ; q$ K- m# H4 P/ {4 E
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    ' \+ s2 @+ K, {
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"5 s& M; R6 A4 D; f: d: w

  265. ' A: V1 U9 l3 R7 X7 n% v8 P! E3 k
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK! V; w' C) @- l* h* m
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"* V+ w9 j) @6 m0 r
  268. ( M* @$ D) ]" n! M8 j
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK- t9 _8 m' @: B$ n6 J6 r
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ; c3 X1 P) d: n6 e7 X0 ], f3 s

  271. 1 _: d9 M/ \' n
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK/ I1 L% ^6 f0 k3 r
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    ; e" S) z9 [: H- z+ t5 M6 `. h

  274. 6 c% s. r+ S: G% d+ {9 |% i) v6 t. a
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK7 ^$ _9 ^* R9 A7 z0 W  ]  e( }; ~
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"# p! S) a' ?2 y+ R6 b+ k8 i5 K9 G

  277. 0 e/ Q' Y! o, J
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK8 P2 \+ G& r, _, d+ F: t$ B3 n( U/ I
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"2 v# X) V, R& k" F7 T. z$ T9 |7 K
  280. * Q' f& j- |! l* z3 O- F; z9 v8 T% I
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    * n( M" G7 R  [- U! i
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    , u# A) m. x! p- g5 \' _

  283. : I3 {% w3 F. S3 E. @! m: G: i4 I
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK; G% U7 {  i+ W; ]$ {% y, i
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    : o" ]2 n1 C% u6 ]
  286. . j7 y* N- S  q) x) R$ ]2 M0 q
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK" D, b2 K% w6 @6 m, ?& B5 f
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"+ u4 a1 p$ F# z5 r- H* E- A

  289. - Z# a' d$ k, ^+ f# M8 L8 @# G
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    . p( U% C# w5 t' A6 N
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    , u" |7 f/ t+ {8 q

  292. - b6 Y( v& O5 c7 g$ Y
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    ! `. ^$ M. ]- w# g' F: N3 m
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"$ e1 w8 ^) n: X) J9 }
  295. - i9 g3 g* t& z' x8 C& ?2 F  L
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    . m* b6 Q" i) d/ z
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    6 i5 X, M% u6 M) Q) s

  298. 4 G9 }: _/ a2 u/ k' i5 P
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK+ [: X4 e% ~3 w8 }
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    0 e" ^3 a* [% ~9 j0 {; q* F. i
  301. " [' A% v' W+ m3 m9 _# S- t& E# x
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    7 E% X- {- N; A( z/ H3 v) I
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    / I9 {! l( ~/ K8 c

  304. ! s/ `" D* J6 E% J, w4 L3 ~
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    " j: z& t1 P" ]
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"6 u; r  P/ ^# ~$ i% c5 C$ V, D' r7 M

  307. 3 F: K% |# Y! |$ \/ Y4 M, D
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK/ z$ o' b( z: o- r! z& k
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"  q4 W4 R- b. G6 i
  310. + x1 q7 A& U8 Q. D( T) x
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK5 h- S  y% e! O
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    / {# O% _# t- W/ l3 w" a. L

  313. 4 y, W  K5 H2 s, @% J/ W! q0 j7 T
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    + o/ j: D$ l3 p; w1 T, l
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank". ]' Y5 S! A% H) E) M8 q* o  P

  316. ! Y2 n- \2 I3 W% d! A1 i
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    0 M9 l5 D" C0 R) T  y4 t- m0 _
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    / B) Z& C+ p1 D$ A
  319. 0 ]* h" {, Y# D" w7 E
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK1 U. g3 Q9 D/ ~- ~
  321. .ORG $D400! {# L1 r- D& e9 E1 c3 o- E
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    3 ~% b* {9 [: o$ {

  323. , J7 G5 {$ ^" r: O
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    7 o/ U" m3 P0 O7 a8 v; l
  325. .ORG $D800. v8 T' p1 Y# S) c/ ~' @2 X, T
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"2 m! M# k: R9 k) i# ?' L

  327. 2 S6 d! z% [! _/ H: B. C- c

  328. & x3 _. W4 o# z, N
  329. .ELSE
    ; v$ ?2 l- j" G5 l6 E+ E' [4 {

  330. 5 U$ \* j" s! p  M
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    9 S) r, i* X5 j, \8 L. T
  332. .ORG $9000  K7 P" ]: U% z# e' q1 W" ~( U
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    # n2 Y# b. i3 H" H( r; a8 }( r
  334. : N0 d8 e$ d' `7 k/ f
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ' b# d& j5 A) i+ l0 s
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"* N' z/ ~$ k& F9 c- F' {: n

  337. 1 x9 V9 x0 P: @
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK; o% F) X" E, y* ^- o/ P' ?/ @3 M
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    / P# f8 u& ]2 z' _/ L2 F

  340. ( Q$ w  B7 t3 G) y7 [4 @5 J
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK/ f2 D( r% K! L" X  g- V& }0 P
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"3 v  `% c' n- r. K
  343. 1 ^" ^/ B8 f# |3 W- |9 [7 g: W, p$ W
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    ) g) M2 r, ~8 l' G& W( H
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"! p! Z6 e$ p6 }9 B# W& j

  346. ; N0 @! ?" Y8 h- Q( I$ v% U
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    . O) w6 a2 v: z1 h% n; Y' e
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank", `' W/ ?0 ]! ?; {
  349. ! Z1 S( r8 T1 U+ ^. Z
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK0 ?+ _) B& _5 f* W* t4 \2 W# _( q* A
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
      a2 Q- V% K6 r7 ]+ r, C, i

  352. ) `) T" D' x7 O! h6 V, O
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK7 I% }' x) X& k" J2 L6 V# t" {; Y7 Q% a
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"3 E/ ~1 g. k) `/ ~

  355. / X0 [- K1 o& l. t$ \/ [; K
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
      G5 Y$ K& p3 G+ g4 R! r) T
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    0 x; `0 B; @5 r& P9 @0 z- v

  358. / o, `0 ~) x: b& J4 I/ A- D8 Q
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    2 V0 M9 e0 a1 o' K# d% o6 \% k
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"% K5 j4 x1 y2 a) O; z4 J

  361. . R5 b: [" f" q# P; F
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK: F6 j; u2 C7 Z/ v6 ]3 i
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    * R( B. ?( j( B% n$ `
  364.   |' e, ^1 ^& u8 Z) Z% J
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    & M* y6 c3 M, {/ |: a' [9 C/ C6 F
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"  |0 e% H8 D$ o& v; A8 O) ?

  367. - |) {3 t" T& y1 k( T
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    & F! {- ^" v3 t) i) r' x  V9 |  {2 m
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
      j! @. ]: V: r+ A

  370. ) B2 M) q$ ^& L! h. A0 e
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK" }0 [+ m8 A# H5 ?
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"/ Q+ L2 e$ ?1 [( Z. h
  373. 2 ~$ U( {5 R* E5 M- l! h
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK% a  Y8 z# G. y: ]) A. Q
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    ! d. J7 V( m" C
  376. # t6 |8 Q* Y4 P8 W& `: n1 D# H
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK' G! U9 c7 F( `/ m- m$ H
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"" s: J. b6 ^0 ?) Q+ {; `
  379. $ f. ^# Z. M+ f; `) v7 N
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK; y6 S4 C# k8 f4 B
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    : k/ K& G9 E+ o4 J9 k
  382. ; {9 Z3 {: c% W0 G# G2 ?* y: z. E
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ; G$ n/ X# v- f: H, E- M9 K8 m! n
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"! i6 L  q; ^/ q! d/ k  [

  385. * {: V; [4 j# u
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ! h6 e4 Z% }5 F. @5 \" l6 r
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank", V) O" }2 ~" H+ D, E; l

  388. " F' ^+ a6 f& ^
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK; e" E$ K, Q1 C2 Y* e) \. `
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    - W! ^8 N- |% P" h# y- P0 h

  391. + @2 n1 u1 j1 s. p
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK% T5 A: t1 t% g7 s% e6 V1 G
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"# I0 i+ ^8 q/ D8 O
  394. ( _( v/ }" ^1 s+ W8 O
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK0 P( V6 F5 R+ h6 Y  R
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    ! t3 H* l' X8 j/ r9 \* }0 L1 E6 P* X
  397. 0 E- J6 C- G$ G/ R  W0 r
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    % W( d* B& g/ h. R# Z& x
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    1 ]% A5 }" |6 C, h
  400. 2 r) ]) s$ U# G: }
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    7 g/ N, H5 x, V
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"8 y, k, {$ u1 @! l' \! d
  403. ' q4 Q% {( p) p2 k4 M7 ^6 q
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    8 Y) }8 E) o. x2 Y7 n! S
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    - G/ b7 s) D# H1 w
  406. 2 D4 z: K7 G% d% u0 x5 z9 \
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    : ?% a* @7 P$ ?, z3 G, _" J( v
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"( C2 |/ l4 }+ g! a; h

  409. ( s  y* A3 _: S" y; b
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK; u) {% y5 F( U" d: I
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    ; v* y0 Q. R) e7 {9 K
  412. ; [# m2 z5 N. {3 J. l
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    2 c* t4 h# D: H+ v! W5 v6 a) z3 V! d
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    / H4 T! ^" j$ _1 P
  415. # }0 P) g3 J8 i5 \1 s2 c
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK0 K# R. ?# L5 b- y$ H
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank". y* K6 q- A$ I  q
  418. 9 G$ S% l, l9 I. B3 y& H% |9 ]
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ' E6 w- c" Y4 r# t- [& S; ?
  420. .ORG $D4005 k3 \3 J2 W$ D& M# L/ f) Y9 }% y: A
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"6 v2 j% ]5 x2 I: A; T! O! J) ]! p

  422. $ l1 G2 N6 A" t% g9 N# m
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    " Z4 K# e' I3 a! i9 t1 B
  424. .ORG $D8007 i  ]  O5 l9 P! ]5 H) a: l
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"1 V# y+ ^: M( ]4 o9 r; ?

  426. " u+ I: n6 ^: |
  427. .ENDIF
    * Z; V7 |/ F" m) B
  428. 4 p" q  M5 |9 L: t! ?
  429. ;CHR图形数据
    & F& V% D. B6 n
  430. ;======================================================================8 u1 q- p, ?) e8 z
  431. .BANK CHR_DATA_BANK9 I; k3 B1 Y. k
  432. .INCBIN "chr_bank/chr_data.chr". }6 ]; w# \5 S2 }; z# p1 q% p/ f

  433. # }7 s9 d, I" D/ z
  434. ;======================================================================
    0 \+ o5 J7 w5 h6 a
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK. F; \3 K+ j0 L+ B
  436. .ORG PROGRAM_ADDR1 w* K. a7 M4 k6 I/ s! b7 d

  437.   l# p' Z9 j  e% @! Z
  438. ;==================================================
    # q! s9 [/ ?; }  f# ~
  439. NmiProcess
    # m- S4 v( l0 O; m( p' E
  440. ' b5 g' m: L6 N
  441. ;关闭屏幕控制
    % C  N- e$ ^. w( r6 J! D& K% Z
  442. LDA #$00" D4 _4 p$ ^  n7 G# a
  443. STA PPU_CTRL& u$ w  R9 E& o6 m; V( B3 M
  444. 8 q& W! q# V( K% P, n
  445. ;没播放音乐就不需要触发IRQ, P- k8 e+ K4 n5 |6 `9 I/ A
  446. LDA <Music_Stop_State
    ; b4 b7 C* n! q  L0 p
  447. BNE NmiNormal9 z: L  L% I( z4 y6 j# N( J7 h
  448. / W9 `+ ]% Y) [, Y
  449. ;重置IRQ索引
    ' z: n# U  ]6 V1 ]
  450. LDA #$00' Y! D! P/ p% ]2 F' h/ h0 m5 W, ^
  451. STA <IRQ_Process_Index( J- d& w8 Z8 ]4 Z
  452. 8 d# F7 T6 u: X7 r4 S  }7 l8 D8 n
  453. ;时间秒数为空则跳过
    + ~1 B; K# ^3 o, {) a9 U* P0 ~! S
  454. LDA <Time_H; v. j) W3 ~# K' j7 j
  455. ORA <Time_M
    / p* {) {0 k. q& _
  456. ORA <Time_S) E. _4 [" b! F2 v
  457. BEQ EnableFirstIrq9 M, P+ B6 J, h3 G: M, V6 V5 T2 n
  458. , _2 y! ~: s, E: b( I
  459. INC <Scroll_H7 o: p7 O- n; z5 i
  460. $ t( u7 H  c9 G) Y- A7 l
  461. EnableFirstIrq 5 t0 T6 N5 y+ H8 n; n# f# n2 U4 ^
  462. ;80条扫描线后触发IRQ, f) \1 M  V6 A
  463. LDA #IRQ_SCANLINE' l) k" E7 T/ {
  464. STA MMC3_IRQ_LATCH
      c) E+ U7 J2 c* M! f
  465. STA MMC3_IRQ_RELOAD# I  T2 k0 T9 x6 o' ?; B+ k6 m
  466. STA MMC3_IRQ_ENABLE& j1 [! Z2 d7 j4 z) M. I
  467. CLI
    , X; d  K4 {" L+ \* W- s

  468. 3 B. O2 d' V. j$ p3 Q3 w
  469. NmiNormal4 @; X7 V- ?6 a3 }8 u7 P2 o: J! U

  470. 7 H% y3 C0 O# ~6 V
  471. ;处理PPU图像* Z. F# q! e4 ]- B$ T' n; v
  472. JSR PPU_Proc" U+ J) A+ N6 g6 A( v1 W( p

  473. . E. \: q" y- n5 U: N) w, [
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    ! n4 `% n6 k4 T; \, k2 R( }4 R
  475. LDA PPU_STATUS+ h9 A" S; u( t( c& v  E- k
  476. ;LDA #$00
    $ }! f4 \7 q/ D& o9 x' g7 D7 \
  477. ;STA PPU_OAM_ADDR
    7 a2 z& r3 |3 d* _  G) o3 L
  478. LDA #OAM_TEMP_ADDR / $0100
    * C8 l3 r& U  K, F
  479. STA OAM_DMA/ K, T) W/ S, I- y

  480. ( \2 `2 x! ^) c  i8 g
  481. ;启用NMI中断) j. k# e1 d* H
  482. LDA Screen_Ctrl
    $ y) G5 l# z% F* W/ J1 l* V
  483. STA PPU_CTRL# S/ o% r  ^+ w! W5 ?

  484. 8 [! Q4 r4 F( z6 r
  485. LDA <Text_Disable_Flag6 L1 ^6 ]3 x, t3 s) J6 A: q  r
  486. AND #TEXT_DISABLE_RAM
    $ Y( O/ i7 I$ S* L% w' Q
  487. BNE Nmi_Sound_Play
    1 g6 \' U) L% G! K5 }

  488. + ]7 q$ E& N4 t! Y* Z
  489. ;处理手柄输入) I; q/ N$ f0 k5 h9 L, b3 @  N
  490. JSR Key_Proc. O) K8 E: p8 e, O8 W8 F

  491. ; @; j6 I+ P. x5 c. a
  492. ;切换音乐(手柄触发)
    + q% V1 Q* `4 k! {1 E  Z% T. p" X
  493. LDA <Time_Wait_Cnt
    ' A! v8 t5 T% k3 l. P
  494. BNE Nmi_Cursor_Arrow' r+ }' W6 k- M8 ?0 I
  495. JSR Change_Select_Item3 T/ W- A0 [9 B9 f; ~5 s
  496. 9 O0 W5 m) J2 s% J+ ^
  497. Nmi_Cursor_Arrow" x, {8 C; |- J/ m$ N/ r

  498. ) m) \$ M7 w% n) w* R% J4 ~4 I
  499. ;处理光标箭头
    : Y; I4 j! ~9 H/ r( Y
  500. JSR Show_Arrow
    9 Z9 d, a& d) k& n$ M
  501. ( K( |5 S$ Y) i7 Q) i& _
  502. ;更新调色板& N2 Q- s: R  X6 D
  503. JSR Update_Palette_Data
    , S/ }0 n0 T$ H8 n6 ?3 f
  504. / U$ v# T3 q7 S* g; K
  505. ;显示时间(缓冲)
    * l  w& ?# T6 W5 f' Z5 `- p
  506. JSR Time_Show
    , ~# a, F, Q# |8 @$ k% Q' t5 v  v
  507. 9 K( d1 t% w1 ?0 r6 D' t% b
  508. ;音乐显示(缓冲)
    7 Z, b! k  }6 R6 z
  509. .IF SOUND_BAR_SHOW_ENABLE/ k1 h% t2 L: ?8 j" w) W) l3 ~7 ~
  510. JSR Music_Vision2 g8 a! e- O* U2 Y# D3 |! \
  511. .ENDIF9 V& p- b- D3 B% t6 [' }  Z1 d

  512.   Q) m! g) U# ?, U- f
  513. Nmi_Sound_Play' L' I) K  V2 k0 U
  514. ;播放声音! u9 `; ~- x" J% y2 W+ `
  515. LDA <Music_Stop_State
    - O3 ~% r4 [3 _6 b$ I; I; i( e
  516. BNE Nmi_Time_Wait_Set
    9 M! ]9 T9 u$ {3 S, ?8 b$ G& {
  517. JSR Sound_Play_Proc( M( o4 r+ e" m9 @! }! L

  518. 9 m  v- i4 L" r6 k( Z1 H
  519. ;播放计时1 f" a8 w, W  Z" w1 {0 Z0 {2 g9 f$ I
  520. JSR Time_Count
    $ g, ]1 L, Q/ Z1 a+ P( y- {
  521. 6 c& J5 @2 C2 r# f4 ~! Z
  522. Nmi_Time_Wait_Set
    " _/ E1 ~; P+ b# q+ B
  523. LDA <Time_Wait_Cnt
    " W4 c" ^8 a8 H) H3 L5 w% l2 m+ [
  524. BEQ NmiNormalProcessEnd) q3 A- @  d5 Q4 h6 g1 k  ~2 z
  525. DEC <Time_Wait_Cnt
      I. M* Z& L6 [' U4 H) N- z
  526. NmiNormalProcessEnd
    / z4 q/ R: l$ P' |3 A( T# `
  527. ; |6 F+ @! b1 U1 b+ Z
  528. INC <Nmi_Time_Count
    7 i/ Z" k7 j$ c  T

  529. % l7 x# R) u# T! H* R9 y' {
  530. RTS
    6 l& J- b# n) |

  531. : k1 ^% `( B- {* `
  532. ;==================================================! Z5 f$ a" k6 i3 M" A
  533. Init_MMC3
    1 Y0 T  s3 t$ z& n
  534. ;==============================
    . ]6 o+ g2 V& u! G7 Z
  535. ;禁用IRQ
    : t* W! ]1 i* R! n) W) q' M5 W
  536. STA MMC3_IRQ_DISABLE5 n4 g4 m& n0 |; k3 a

  537. ( @3 z! J1 q$ q9 T
  538. ;水平镜像5 \' g$ C$ `8 G: C6 i! C2 \
  539. LDA #$01
    ; o% m7 m5 s( }" b9 S; t
  540. STA MMC3_MIRRORING
    ! H1 ?3 D! O) z, O4 d& m0 I' b4 T

  541. 9 D# ~  z, F6 d6 ~! k- p
  542. ;初始化图形bank0 S0 W2 {& m- Q3 a$ L9 Q
  543. JSR Init_MMC3_Chr_Bank* @# w, U  i5 I
  544. 8 Z: J2 x3 v. G- W( C  G
  545. RTS) k6 L1 Z* w9 Z, S
  546. ;==================================================
    - U% L- F$ O) B6 p( i
  547. ProgramBegin;主程序) W7 Q+ O9 \. _) R; }+ a( }1 ~
  548. LDA #$00& ~. Z  b0 `' ?3 N7 V. A3 k$ n
  549. STA PPU_CTRL% x; }& ^+ ?# ]' P6 \+ o* M
  550. LDA #$00
    8 D: N6 {* V3 ?* d4 }7 p4 M1 @& M
  551. STA PPU_STATUS! Q2 D6 s# Q( Z9 z* X
  552. STA PPU_MASK7 v3 S/ z' [3 M' P7 b
  553. STA JOY2_FRAME
    0 T8 A+ w0 Z; p* L' C% i* C

  554.   x* m( G, @" X/ @8 o
  555. STA PPU_SCROLL
    , n5 |- M8 T, P8 o* B
  556. STA PPU_SCROLL7 `. _, u! ?" J9 \# U

  557. 1 Y5 ?2 A- d3 b! ?/ Z4 q1 L
  558. ;==================================================
    , T8 L. S" e- U
  559. LDX #$FF7 L8 |8 Y) V$ d: k
  560. TXS
    0 a! ~7 Y4 N# n7 D* c
  561. " [# {$ l, Y) `" E1 J8 A7 P
  562. JSR Init_MMC3
    0 k: _/ ^, v( k+ @5 b, T
  563. + Z- @& t! ~/ N" d
  564. LDX #$02
    4 i! B8 t: g1 _6 h) `/ e
  565. Check1/ V+ ?7 {; g5 m( ^- v+ [2 B3 }
  566. BIT PPU_STATUS
    $ G) b: l' J& E/ ?  A$ u; S0 u
  567. BPL Check15 h' U  K/ P# _
  568. Check2" ^! ~# @! P) G
  569. BIT PPU_STATUS% S9 M3 U& k9 x- ~2 ~# N8 D- ?
  570. BMI Check2
    . M2 i6 O  @5 N, c; b
  571. ' T, {( b& B3 G
  572. LDA #$0F
    4 d3 R% X% {1 E6 t
  573. STA APU_STATUS9 j* h) a) S; L* [- _: {
  574. LDA #$C0
    ! ~0 N* g5 ~. Y9 X) i
  575. STA JOY2_FRAME
    ! x8 C0 x. L# }7 _6 ]  {
  576. / c. r2 x: z- @0 W7 K& U/ [& K
  577. LDA PPU_STATUS' I5 p% {5 B3 M) E# y( D
  578. LDA #$10. ~( m  E1 L3 y: J& P
  579. TAX
    ; f8 M/ O- r3 \( j! N1 C2 B
  580. Check36 D! S  j& h% A0 i
  581. STA PPU_ADDRESS  l  r9 T& \- F* T2 D3 V1 f2 |$ b
  582. STA PPU_ADDRESS0 l8 V" I% k. y+ v) E8 l% p+ m
  583. EOR #$00
    : ?5 ?0 H1 V& k* t0 M
  584. DEX' t' _9 i' m7 R6 |0 {( U
  585. BNE Check3. N/ ?0 b6 R1 x
  586. ;==============================
    3 @7 U, a) T8 e
  587. ;调色板清空
    % g' G; ]8 s* v! [' L7 T
  588. LDA PPU_STATUS3 P/ c" O  }; s8 q, K
  589. LDA #$3F! S% J) C" C; T0 r5 d
  590. STA PPU_ADDRESS. L6 F: r' m+ h% p/ f
  591. LDA #$00
    1 _: E/ w) j6 t. c* J. n
  592. STA PPU_ADDRESS
    7 d2 N; |# O2 ?& a0 s
  593. LDA #$0F4 r* M# q2 w* y1 h# Z( |' M' ^
  594. Palette_Clear
    8 D0 S8 G& D! o+ b1 }
  595. STA PPU_DATA
    . E* m$ q$ \; I+ P
  596. INX  I6 k7 Z+ O" _, f0 l+ E$ c
  597. CPX #$20
    5 O5 Q# f% c/ R2 c& |! ~
  598. BCC Palette_Clear7 w4 ?5 s; v  M4 Q0 v5 a# }
  599. LDA #$00
    $ S- ?7 C5 w: O: b, z) }0 B0 n2 t
  600. STA APU_STATUS! b+ P8 ^$ ]/ P

  601. ( s1 V7 Q/ ~* L9 P' u& e$ Y
  602. ;==============================
    9 U3 R  s% D' W0 h  b2 Q& J4 k" y. @
  603. ;RAM初始化) ]7 H# B6 f0 b
  604. RAM_Clear_All
    ( H$ {3 x: i  _0 ^# ?: s
  605. LDY #$000 s$ ?# _/ k  I  M6 {6 h
  606. LDX #$08
    9 P0 o# y( q0 ~* ~0 D# }3 C
  607. LDA #$004 i* v8 e, K8 r" r- q  o) V8 B
  608. STA <$00. l" d5 b6 y% k; Q
  609. STA <$01
    8 z6 P. C# b8 D8 G( R/ W) u" h# \; V
  610. RAM_Clear_All_Start
    * M# g9 d7 P, f" g. ^  s/ T) t
  611. STA [$00],Y
    # y9 H- ]! n# M$ S3 g$ {
  612. INY  v' {3 W/ E7 W- @( \
  613. BNE RAM_Clear_All_Start( x8 z, \4 A& j: X" q4 P* T8 ^
  614. INC <$01
    $ `% \3 p9 @; Z7 S! A4 T0 f* S
  615. DEX
    & W+ o  M  A& w( @- M- L. c
  616. BNE RAM_Clear_All_Start. O; N9 M. g1 q: d

  617. " S3 O; [3 z; |' w$ y  r6 E
  618. JSR VramClear
    ! E' ]1 Q6 W9 d5 e* R
  619. JSR VramInit
    8 T$ w& B" s+ ^
  620. JSR OAM_Ram_Init' i1 Y4 |+ o0 J2 z
  621. JSR Init_Palette_Addr- j8 q4 A9 j8 k" \2 o

  622. - G) w5 t6 r: H. \
  623. LDA #$FF) k: z0 G  T3 ~1 H$ v
  624. STA Use_Ram_End) T8 c$ U1 N7 G" Y& O* k
  625. ;==============================, y& c  ?; e9 I5 u( x+ y
  626. ;初始化背景调色板
    2 P: U* J1 t5 I! @
  627. JSR Set_Palette_Color' {; H. u, l! m/ O, Q* @
  628. JSR Set_NameTable_Attributes. M- t4 h% Y; B% X+ s! y+ |
  629. , L6 O; T' Y7 {3 l
  630. LDA #$00
    0 e9 e- j& M4 |+ r
  631. STA PPU_OAM_ADDR
    * H0 @) q6 o8 i. f. r/ e  m. M8 p
  632. LDA #OAM_TEMP_ADDR / $0100% k4 f- R5 O  z2 r; x: P
  633. STA OAM_DMA
    2 ]: w% s  O: |% T1 Q# z
  634. 8 @% c7 q: j3 W
  635. JSR Sound_Reset_Proc0 n/ Q- \) V  K' m( j/ \8 Y
  636. JSR Set_Sound_Total" q( ?' n2 b2 e$ z

  637. ! v3 h1 O5 T) R
  638. Init_Start_Music
    1 ~. x2 d* R) q9 v
  639. LDX #$00
    , d$ m- m: A  `: F5 o2 W- l+ n
  640. Init_Start_Music_Write
    ) j) d9 I. `8 p0 V& a: K0 k# s4 s
  641. LDA Sound_Start_Port,X0 v; e5 o  v$ A3 ?1 [0 c0 p& \
  642. STA <Music_Cur,X
    * j! V- g4 N+ Z# J8 T- e2 k  S$ p# g
  643. INX
    . l- q- E+ q! Z* j" r( j
  644. CPX #ITEM_MAX_SIZE
    4 ?% ]2 F) q) E$ H/ X2 r' @
  645. BCC Init_Start_Music_Write1 B& D+ s& [4 @5 l8 A: J

  646. # J. }0 M# t- c3 o: D
  647. JSR Show_Music_Text
    9 u& `( T5 ]- G9 O2 A' w

  648. : U+ o: I! u2 P) \4 A4 m
  649. .IF SOUND_BAR_SHOW_ENABLE
    " ~' h* s8 y1 [8 k2 W9 V+ [% ^
  650. JSR Sound_Bar_Text_Set
    - M0 l7 u/ R' ?! V/ t0 s: b
  651. .ENDIF" B& U& F$ _/ d; o' c2 i5 o8 h, [
  652. / C% n9 c6 X: [7 F+ X$ Q
  653. .IF Track_Name_Pos
    4 {" w7 ~3 F; Q0 y& Y
  654. JSR Show_Track_Info
    ! {3 B  C4 _2 s  K1 U
  655. .ENDIF; B3 O+ l1 _% ^+ i
  656. 4 u, `- Z, c* n
  657. JSR PPU_Proc0 q0 X4 [( [6 {3 Y5 [* E' k- I

  658. * [- `  P  _2 `' p* O7 v# d
  659. ;==================================================
    4 C! T. G7 _2 \  i* @0 d( h) q
  660. ;音乐bank初始化 9 p+ p, [  ?8 a  Z! a* }" D( I3 A
  661. JSR Init_Sound_Bank; A2 H% Q' R; p# `

  662. + j) q, H9 ^& F
  663. JSR Music_Show
    / z; d! v+ A: k; ^5 l
  664. JSR Time_Show
    $ f, i0 c& t) c) _4 \
  665. JSR Music_State_Show! r" L9 P1 D! ^% v: g4 E. _
  666. JSR Time_Delay
    4 R3 e: ?& B4 H6 A( s
  667. 0 Q' N! m& H6 X
  668. LDA #$01, K8 v+ `# g, l; Q9 d
  669. STA <Music_Stop_State
    ( k. C# `- \$ j8 j

  670. : g, w6 R. {+ n/ S# v; @, q* T
  671. LDA #$88% q! c' T( u* ?) Y4 H
  672. STA Screen_Ctrl/ E9 p; X" m" s% b9 \! B
  673. STA PPU_CTRL
    ) }4 y* W+ F  G" H
  674. " Q( M. p; v) b* j
  675. JSR Show_Page_Text
    2 k  J% g. H# S4 D+ u8 I
  676. 4 n) q4 A$ E2 }& v6 a$ `
  677. LDA #$10) k7 u& U" @, h
  678. STA <Time_Wait_Cnt
    ! W+ f0 k9 A5 j
  679. : ^: u" |/ {) w( K5 H; |
  680. Wait_Time_Over
    , X3 e2 ?) b- s8 n, t
  681. LDA <Time_Wait_Cnt
    3 ~8 T; O. _( a" U/ i" a" s
  682. BNE Wait_Time_Over
    5 w# f" |# t& S8 S& N
  683. : E8 N* F, @( G0 @3 l* T! b
  684. JSR Show_Arrow
    - B- ^6 ]: Y& @3 [
  685. LDA #OAM_TEMP_ADDR / $0100
    4 s8 }1 R. \+ W2 \2 Q5 @& E( K
  686. STA OAM_DMA( T- D$ c: c2 l& ~+ }

  687. ( U) }; q. q* F( k
  688. LDA #$1E
    - n2 G* O6 \; W9 w5 D( y
  689. STA Screen_State  J5 k: K* i0 }; b+ Y1 l. Q. m

  690. 8 f& b. R9 `1 N% S( o5 M' a4 i
  691. LDX <Music_Item_Cur
    : A8 N& U. x+ p4 b* `; l
  692. LDA <Music_Cur,X
    7 U$ M& e8 A# K4 y
  693. JSR Sound_Init_Proc$ o) `$ j% ^3 c6 C- R

  694. ) J7 _+ E  F' B7 k# ~# p. G, p* ?
  695. CLI+ Q$ ^; E" s6 [* r3 F! n% J8 N
  696. JMP MainLoop
    0 W1 M3 L  U! u$ c/ [" Z" d

  697.   O; A/ g! N% N3 G! U/ {7 D) F
  698. ;==============================+ O0 W0 p/ a9 b7 w
  699. Time_Delay;延时等待
    7 M6 A7 ]4 p2 B0 ]4 {. |4 C& t
  700. LDA PPU_STATUS
    ' s8 K. \, j! A1 l) C& X2 a
  701. BPL Time_Delay5 t5 f0 @  [  r/ L8 B" ^
  702. RTS
    ) H5 w: m8 B! m0 T
  703. . g, U! N/ \9 h, M" G/ G
  704. ;==============================
    3 |& I7 ~5 ~, b
  705. OAM_Ram_Init;初始化精灵内存
    5 o( N, S2 C% c5 x' X
  706. LDX #$001 U% J" r& Y8 z. w% c
  707. OAM_Ram_Init_Write" s' e- p) g( E0 M, [0 {) A: e
  708. LDA #$F8* \8 b, v1 a! W& G
  709. STA OAM_TEMP_ADDR,X  e* w, s, u& ~9 [- }
  710. INX- q. ~& g$ g5 a
  711. LDA #$F8- C. K" h% P6 D# a9 B5 M/ \; c
  712. STA OAM_TEMP_ADDR,X# O) j! I) A7 }0 l% N$ j0 z
  713. INX- P0 ^) ]- Z3 P& D
  714. LDA #$00
    ; u6 A, e% w2 ?
  715. STA OAM_TEMP_ADDR,X3 |% Q+ {" O! `1 u4 a" p. Q  C
  716. INX
    5 [3 b$ c. w1 @/ L" a) G
  717. LDA #$F8
    - b/ P1 p) ^# y: z% Q: \, ~( y
  718. STA OAM_TEMP_ADDR,X
    5 n8 ]* z. g, ?2 {
  719. INX
    ' o4 f2 D1 L- S
  720. BNE OAM_Ram_Init_Write
    + L+ p6 T/ y5 _1 T" F. U
  721. RTS- G1 `; n# j+ l  G+ d- ]

  722. 2 v0 J. b6 G: }  r- K6 _; Y  X
  723. ;==============================
    * F& V& `5 D: Z- U% A% z& O2 u6 g
  724. VramClear;初始化图形内存3 m! K2 C8 u5 E! U& R( u
  725. LDA #$20
    9 p* i2 U' w+ K% j4 \
  726. STA PPU_ADDRESS, @8 C/ C$ u# M7 X3 X
  727. LDA #$00( s) C5 a) {( b8 Y; v, v7 L
  728. STA PPU_ADDRESS. y5 ~" ?; o& P- e* t
  729. LDA #$00+ Z0 g9 }* b0 ^1 f) H
  730. LDY #$00% P: p0 T+ C8 z& X! v+ v
  731. LDX #$10) X; F" N' ?/ M4 A7 f
  732. VramClearWrite. S$ b0 w" f7 S: X7 M3 Y- W
  733. STA PPU_DATA* P$ _1 M) p4 a4 ]0 b
  734. INY0 X% _* Q7 Y$ w5 a# I. L
  735. BNE VramClearWrite
    ' Y" H+ o" \( y5 N2 g1 B1 W
  736. DEX" V3 f% F- b9 s, N3 C
  737. BNE VramClearWrite' G* j2 b* F# N* N/ y" d3 p7 [) ?
  738. RTS
    5 l& E. T1 I& {2 m8 G$ N0 D( @

  739. : m# t4 f' P; e, E' u" ?, R
  740. ;==================================================5 x* q) {' J. k+ z% w" j, a
  741. ;设置MMC3图像bank
    # i8 x1 W5 e/ _) M
  742. Init_MMC3_Chr_Bank
    9 L3 ?+ E5 i' {9 J3 L
  743. LDX #$05. e# S6 c4 A& b' e2 i
  744. Init_MMC3_Chr_Bank_Write
    # U3 a7 g; s) X5 S: J# D
  745. STX MMC3_BANK_CTRL! ~$ c0 A+ F7 N
  746. LDA MMC3_Chr_Bank_Data,X
    ' P1 N/ V9 X" _; J! R
  747. STA MMC3_BANK_DATA$ J/ _' w& m) L( _3 c5 p3 T
  748. DEX
    + n% `7 j, P: o1 u4 \8 l
  749. BPL Init_MMC3_Chr_Bank_Write
    - k' U8 g7 x* ?& y9 M
  750. RTS3 D) v' u5 x0 Q  v& ^6 J& Y
  751. ;--------------------------------------------------
    $ Y. ^5 y6 U% g* G- t0 o
  752. MMC3_Chr_Bank_Data
    . ?8 F, n4 _0 A# N; \5 U+ Z1 }% m& ?
  753. .DB $00,$02,$04,$05,$06,$07
    # o9 c2 v" J% Y, C

  754. 2 e% t# u. e9 m) w
  755. ;==============================+ x5 u9 g+ Q/ q% a
  756. VramInit;初始化图形内存
    4 Y5 I6 ?/ j& A! Q4 e, N6 Y
  757. .IF CHR_RAM_ENABLE
    $ E: K! G0 S; W: v" z7 E- f3 X
  758. LDA #CHR_DATA_BANK
    * E% a, }3 x5 e: S
  759. JSR Switch_Bank_A000
    ) e- Z7 c' P# H) t5 {5 i
  760. LDA #LOW(CHR_DATA_ADDR). F, N" H1 _( a; D
  761. STA <Data_L
    6 _" O- a7 Y( f8 m
  762. LDA #HIGH(CHR_DATA_ADDR)& F8 z* o- g1 M5 M- g) n5 g
  763. STA <Data_H
      X* g' R: k. q8 Y/ A: {
  764. LDY #$00/ i0 a" w6 g% f
  765. LDX #$20+ ?/ D3 _8 l4 u; z( I9 }# q
  766. LDA #$00
    : ^8 d7 |3 V' I  r9 H/ ~: s: ~
  767. STA PPU_ADDRESS
    - n0 c; W  @& }# r5 [# O3 L
  768. STA PPU_ADDRESS* U, {. ]$ E; p- i/ k
  769. VramInitWrite# K! a/ V; b- n3 }3 ]% o
  770. LDA [Data_L],Y
    , u7 }4 ^' x0 \6 [$ f
  771. STA PPU_DATA
    0 x  L  F- S. M4 u& O5 w
  772. INY
    9 {! x3 F) T, @8 ~+ \# A* h
  773. BNE VramInitWrite% H7 _  R+ X- s0 q- Z2 n
  774. INC <Data_H
    ' [0 i  L. z+ V9 A
  775. DEX
    / M) D, e% c( _4 ~+ d" J) C/ w
  776. BNE VramInitWrite
    # H( t* p  k2 _: L% `2 q1 Q. ?
  777. .ENDIF; Y4 ^* v6 L% r# f0 L6 `
  778. RTS
    ) Z/ g: p+ \/ O

  779. / O9 ~# r4 j1 Y- Z$ z5 [
  780. ;==============================2 D: e" t- E4 o* R0 z
  781. ;音乐切换# P. y! L, M" Q; _6 O2 }7 r
  782. Music_Play_Change5 J6 L) y. D$ ?' H; P
  783. LDA <Key_Once. l3 Q" C+ x( v
  784. AND #$FF
    ! s' W3 F/ p6 s5 U- |' o. V
  785. BEQ Music_Play_Change_Check( q5 K, L8 H# t

  786. , R! ^- ]+ H" J
  787. ;禁用音乐条刷新; h) f' ]9 f) J7 @5 p- K8 k7 A4 U
  788. LDA <Text_Disable_Flag
    " T& H6 P$ q$ ^: ~
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    1 W( R% u7 }- y; O, q8 r  p
  790. STA <Text_Disable_Flag& y5 g& y/ C) U2 {4 F& _" T
  791. ) T- W5 C$ N9 R. |# A; |
  792. Music_Play_Change_Check
    : w# D  a0 z+ K$ [4 Q! `  |
  793. Music_arrow
    7 K* {; |7 [& N
  794. LDA <Key_Once; r* b; h6 O. w  G
  795. AND #$0F
      p& w; z9 R& P7 B) ?1 _
  796. BEQ Music_Play_Change_End
    ( O( e( B, o* x1 b. V: V) S8 C
  797. JSR Music_Track_Change
    8 r1 O9 B8 g' C  P- y' `3 x% }2 J
  798. JSR Sound_Reset_Proc
    6 L: V/ B5 E5 T; k
  799. JSR Music_Show- j- q# S2 w/ v5 R
  800. Music_Play_Change_End
    4 _& ]  u- D( X' o* ~/ H# }
  801. RTS
    8 k/ {: ]2 S$ o

  802. / ^. m! P+ P2 e' Q
  803. ;==============================8 X9 I; H: X3 z2 e5 Y5 {: s0 p
  804. ;音乐曲目切换
    ! P0 ^; k" V; H- z
  805. Music_Track_Change
    / Q  U: Z# @$ \' L
  806. LDX <Music_Item_Cur- p, i- F. o+ S+ M* o
  807. LDA <Music_Cur,X  W! s' e: k3 G* @1 K% S7 d
  808. STA <Music_Last
    - E' |7 t+ I: X& ~! k
  809. Music_Decrease
    & r2 B0 s% V5 m9 }. z
  810. LDA <Key_Once
    3 i5 v3 q6 Q5 m- k  a! \, i
  811. AND #$42
    ; o0 w( s" W, v  @$ Y- R
  812. BEQ Music_Increase
    & Y( c/ M% ^' {; R0 U# A
  813. LDA <Music_Cur,X: J0 I: u$ y1 ~5 I+ s/ u/ ~
  814. BEQ Music_Increase- d+ a- C1 I* N5 E; C
  815. DEC <Music_Cur,X1 A5 ]4 U0 f$ e8 z8 V
  816. Music_Increase6 p- i; Q: x& n" e7 H( ~& p# k/ V
  817. LDA <Key_Once
    ; S& X8 Q& C7 `6 g
  818. AND #$81
    1 H( p, i. ^: D" C  ^
  819. BEQ Music_Decrease_10
    + q1 x% D" V+ t- N# M
  820. JSR Set_Sound_Total
    4 ]# ^% n9 x5 M/ d
  821. LDA <Music_Cur,X
    2 F# R# p  A7 |3 Q
  822. CMP Music_Total
    2 ^" o$ U0 G% e: @
  823. BCS * + 4
    9 j  B* b! A% N( [5 |! [
  824. INC <Music_Cur,X  |) A' `6 k0 E
  825. Music_Decrease_10
    7 v$ p) {( Q. ^: C& r
  826. LDA <Key_Once
    , G. Z1 Z5 f1 Z8 [: A5 w
  827. CMP #$04
    - Z4 I1 i% G! x5 c
  828. BNE Music_Increase_10
    ) k: P; s& l3 v) n" ?) g  L
  829. LDA <Music_Cur,X! U4 O+ S5 N2 a9 x3 E
  830. CMP #10
    ; ~3 }, n5 M+ m' d, j
  831. BCC Music_Start_Song_Min
    3 ?! L( h1 X( t
  832. LDA <Music_Cur,X6 _6 R$ {! L) P3 \# Y4 w+ q
  833. SEC
    : E( f6 E8 T9 _4 Q
  834. SBC #10* L: i1 X% H% j9 d  J/ F
  835. STA <Music_Cur,X
    ) t4 Y# A$ t, `+ M8 D4 i% c
  836. LDA #$003 c: H- t5 j, r; V  l
  837. BEQ Music_Increase_10# M- y2 W$ Z3 j7 J: U
  838. Music_Start_Song_Min
    ) P9 ^7 T: [3 Z) |+ V; U7 u
  839. LDA #$003 n, n$ h9 M* N1 y  c
  840. STA <Music_Cur,X! e+ h, ]5 ]* W- R+ Y
  841. Music_Increase_10- ~( @! @3 k# c2 ^/ \  k
  842. LDA <Key_Once
    ; W. n9 K2 @+ U% T3 ~
  843. CMP #$08
    % y9 {3 h5 y- M1 U! s- O
  844. BNE Music_Track_Change_End
    2 b# F1 m9 b1 U; d; j
  845. LDA <Music_Cur,X8 _3 Q5 q2 r( [% M+ S
  846. CLC5 ?# a  t6 T) I/ o
  847. ADC #10' _- _/ R) R- X; r" J8 P2 F+ O
  848. CMP Music_Total: c5 a: H9 s4 ?5 ^8 c9 w% H
  849. BCS Music_Start_Song_Max' B9 `% e9 ]# _. ^$ V4 |3 u
  850. STA <Music_Cur,X6 ?. K) n" P( o( ?1 Q5 X
  851. LDA #000 E. e; h; j4 E& M8 q
  852. BEQ Music_Track_Change_End! z- ]1 l9 |0 r( Y! C
  853. Music_Start_Song_Max* q) L8 i! I5 B, @0 N5 x
  854. LDA Music_Total
    9 z* |, d9 a4 y8 r7 T9 _
  855. STA <Music_Cur,X
    ) @6 P% M- o/ _$ B  y5 ]& y# s0 ?" O+ a$ \
  856. Music_Track_Change_End
    & S3 c# r, h1 h$ i" e" A
  857. RTS
    * b6 O4 n' r2 \# `) W, W- s3 V  Y
  858. # X1 O) N7 X1 n1 M( L5 v
  859. ;==============================
    . N6 O. ?) |) H1 K& @
  860. ;按键处理
    6 d* e* e- H* m3 I  F
  861. Key_Proc3 _; R5 B" G7 V& E' |
  862. JSR Key_Scan
    9 E5 W3 l* R5 p" n, q
  863. LDA <Key_Keep
    0 I& t1 S5 W% e( c
  864. STA <Key_Temp! ]* O" Y" U, x9 {/ d( k
  865. JSR Key_Scan
    " Q3 @1 J  \6 _. r  P. r- L
  866. LDA <Key_Keep
    ( ~  W0 U/ b+ N
  867. CMP <Key_Temp$ ?# u6 R* ~# s. ~
  868. BEQ Key_Get_Once$ e  y/ B  x; ^& \$ y
  869. LDA <Key_Kemp7 i4 O, c& i4 m4 n8 J9 b" J
  870. STA <Key_Keep
    * P4 _/ b8 k2 E) ]  _& `! R+ g1 M
  871. Key_Get_Once
    & u1 x; U8 h( I7 ]$ L: Z8 F" |
  872. TAY
    1 X9 c6 M( j3 s0 \# f- h8 n
  873. EOR Key_Kemp
    & b+ M( J: u: S$ W; Q4 X0 L; x' c
  874. AND <Key_Keep8 A& E( A& L: o9 `: j! z; `/ |
  875. STA <Key_Once4 d/ d; D; ?$ ~9 X" B
  876. STY <Key_Kemp
    - H( A! n, b% y6 I' J. o! k4 s
  877. RTS
    1 r; ^7 {  ~/ W  N. U
  878. ;------------------------------1 }( h/ A5 v6 V% {
  879. ;按键扫描2 A; G' D2 e9 P4 L2 Y' l
  880. Key_Scan
    9 S; l3 [6 g3 ]5 L: o4 c4 \
  881. LDX #$01
    8 G/ f, W" X# F5 y# H  k) P# @" M  N
  882. STX JOY1_FRAME
    ! B& f" A1 M9 b3 r
  883. DEX5 s4 {8 R8 y7 W/ g  Q9 m
  884. STX JOY1_FRAME
    ) A7 b5 B+ j/ ^; y3 k. I
  885. LDX #$08/ K( k+ T6 x) B# y# |7 `4 Z
  886. Key_Value) v6 T1 b7 m( B2 ~3 l9 p
  887. LDA JOY1_FRAME
    . u# J# e: A3 q1 x  x
  888. STA <Key_Getv: U# s+ Q  c# G' A2 q/ a8 C/ w
  889. LSR A
    + V: f0 d9 `( v2 X
  890. ORA <Key_Getv
    $ X% S$ N! U8 C7 ?" m
  891. LSR A
    / f  v1 G* h7 k* B/ _, ]
  892. ROL <Key_Keep
      H( f  _. A% S; B/ ]0 w
  893. DEX  K; I" A- i3 `6 M) p
  894. BNE Key_Value1 @6 ^9 M6 H5 f9 x6 [
  895. RTS
    ( N+ U2 f5 L) K, y7 i
  896. 3 ]1 o0 s# I4 B) Y) y
  897. ;==============================
    , `) h2 c) _; Z' U; t, s+ o. H
  898. .IF SOUND_BAR_SHOW_ENABLE2 G2 l) s6 ~  E# c, D
  899. ;音乐条显示
    / E' K/ ^: ?! f' e9 _5 x
  900. Music_Vision
    9 \3 R0 Q5 F9 _. z; E5 z2 j
  901. LDA <Text_Disable_Flag
    8 x* l4 n. @4 I' J& Z
  902. AND #TEXT_DISABLE_ITEM
    - E: U! c2 A2 Z4 i) N
  903. BNE Music_Vision_End- K) v7 {% V' j% J( L
  904. AND #TEXT_DISABLE_BAR; y7 ^. l' C! b8 d9 f& y& N' N$ j
  905. BNE Music_Vision_Set
    3 g8 N. C8 |2 h$ Y2 V/ g
  906. LDX PPU_Cur5 M+ x/ F% ?# @9 n* q" p
  907. JSR Music_Animation
    ! I2 y& f* d7 X
  908. STX PPU_Cur
    ; e! l8 T. `: H/ I
  909. Music_Vision_Set
    9 e/ |& C0 ]% `; u8 C- v
  910. LDA <Text_Disable_Flag. a% D! ^3 H( I; f
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ! j# @! l$ n  W$ ]
  912. STA <Text_Disable_Flag
    " ?! I! V( U5 N  h/ h: P; M
  913. Music_Vision_End
    ( d- Y  r# ?, B' S
  914. RTS
    5 o- w, u- ^4 y! G% [) u2 _
  915. ;------------------------------
    , z) A, v4 C1 Z1 d! `
  916. ;音乐条显示处理
    2 x1 z3 O1 i4 Q3 \1 n$ g7 a* V9 k
  917. Music_Animation5 b. t9 C7 o1 \7 G
  918. LDA #PPU_MODE_CNT_LINE6 `/ u/ J- q7 Z2 ]
  919. STA PPU_Addr,X
    & J8 O. b7 U, ^9 Z& y; O; y2 _( R: `
  920. INX
    ( l+ A% I! _5 N$ ?) E
  921. LDA #HIGH(Sound_Bar_Pos)
    . u( \' Y1 Z6 x9 i( v
  922. STA PPU_Addr,X3 I$ X4 Y/ g- c2 I* \
  923. INX( A! X6 R! G& R
  924. LDA #LOW(Sound_Bar_Pos)! R. E' O! `: z* P
  925. STA PPU_Addr,X
    0 z+ T8 _% p1 N- r# o) [* u  V
  926. INX% Y7 H+ n. U; z7 @% }# B: K, ~
  927. LDA #$08! k8 w9 A5 b8 E- `3 S
  928. STA PPU_Addr,X* w( ~% l8 K, ]8 H+ W
  929. INX
    8 A  P6 J2 {: x* X9 q" x/ r
  930. LDA Sound_Bar3 E% H3 G$ Q! V: C& a- a
  931. JSR Volume_Convert! C9 z. D0 X3 h. A! C* {

  932. ' o; W" G* X4 Z. k
  933. JSR Volume_Set_Cnt1 z  }, V7 m' _* A0 p
  934. LDA Sound_Bar+$4. Z1 l- l3 @0 |# E6 @" A) b5 X! H
  935. JSR Volume_Convert7 q& h; N9 ?3 ]1 e  {( W+ p

  936. 8 N' }' z; W2 o- b1 o0 U3 Z& M. o3 q
  937. JSR Volume_Set_Cnt+ a9 D+ w8 R. g2 z" m# ]
  938. LDA Sound_Bar+$80 N3 y4 v: K  q% f
  939. JSR Volume_Convert
    % X$ b$ t% @, V7 L" ]

  940. 3 G+ _, C2 Z4 ~, v# M/ O
  941. JSR Volume_Set_Cnt1 K. `8 n( c* }3 s) u
  942. LDA Sound_Bar+$C
    7 o. ?' p. D7 p" ?- y( [0 s; ?
  943. JSR Volume_Convert
    6 I, E# m; {. `/ x
  944. % e8 n* y# K9 q) l: N2 R1 R- X) f( e
  945. JSR Volume_Set_Cnt8 z6 I+ r* k/ G( C

  946. : C2 \, q# c+ m+ ]
  947. LDY #$10
    - r7 l5 a2 I$ I9 G+ L
  948. LDA APU_STATUS- {/ W1 b9 A6 ?; ?* D
  949. AND #$10
    # ^. a2 \; e$ ]$ |( X
  950. BNE Volume_Count
    # a8 p9 G9 B# L; C$ Q0 }( N
  951. LDY #$008 I" T5 ^1 q6 W# k3 ~1 m( l: h
  952. BEQ Volume_Count/ U5 o, `: ^( Y  E+ [# d
  953. 0 k  B; k- r1 a7 t
  954. ;------------------------------  o' p# x8 ?$ E% v0 E
  955. ;音乐条处理: V( O' s8 B; o+ x' |. t6 X5 K+ B
  956. Volume_Convert$ e8 ~3 K2 v) F7 U; @/ ~
  957. AND #$0F
    7 d6 W( |: x! X% V4 x- U
  958. TAY7 M. d5 e3 y; S% K4 F2 S* b
  959. Volume_Count( e/ Q5 Z) o8 E- m7 C
  960. LDA #$08$ f3 z, r# N& O' p% g
  961. STA Sound_Bar_Cnt
    ) j9 U& _0 B; B0 f- Z$ \0 n
  962. Volume_FILL
    2 X+ X" x, ]5 w
  963. DEY1 T: u* H. p. F" B
  964. BEQ Volume_Half$ q+ q1 R8 c$ V! i/ q. F6 i! e
  965. BMI Volume_Empty
    ) Y5 _$ _# |, |" E& O
  966. DEY
    + Y0 o; x- m7 w- Q
  967. Volume_Full
    & K  o+ d2 g' C; D, H+ e- A, ~+ i
  968. LDA #$16$ D. t1 \4 n/ K5 j) M0 L9 Q
  969. BNE Volume_PPU
    ; C9 n+ k( N3 ?9 c9 Q) Q4 h
  970. Volume_Half5 W$ F4 W+ `" L& Y3 g
  971. LDA #$15! n7 }3 }* b, I3 s) C3 [# F
  972. BNE Volume_PPU9 b2 k  W3 w9 M3 F
  973. Volume_Empty
    0 S0 s% i2 @3 ^5 x$ a% J1 F, N
  974. LDA #$14
    2 e( f/ b) g4 r5 @0 O% b- v
  975. Volume_PPU8 P0 f* w* f0 c; T: e
  976. STA PPU_Addr,X
    % m* u, t) t% E$ U  p" o( N
  977. INX
    : q& p- N! D& U
  978. DEC Sound_Bar_Cnt  S" O) E9 v. {8 @0 Y" u3 v
  979. BNE Volume_FILL
    # Q5 P0 T0 q! U; t5 E
  980. RTS
    ) x' U. {  E6 G3 {* b2 E) v

  981.   S( j; J; j2 C3 U8 M/ y
  982. Volume_Set_Cnt
    * a5 m0 y% |5 L- T" b
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    & t# E4 k3 _1 K, @! J! S
  984. STA PPU_Addr,X
    4 f8 C5 w* z6 L1 K( R5 V
  985. INX
    6 f  H# X+ j1 F1 L5 o
  986. LDA #$08
    + \& j7 u& C; [. I5 H0 R- \1 W
  987. STA PPU_Addr,X9 Z' q4 N0 s& ~# d5 ]. L$ I  D0 o
  988. INX
    3 g, M1 d; f- ]; U, c( c) Q
  989. RTS
    0 i' e0 s# b# e

  990.   ?* D# n% ]. g) v
  991. .ENDIF# w* j8 e2 f0 h6 s0 H( S

  992. * p6 _( i. W. U0 ^7 l
  993. ;==============================  y2 {7 W. e# c, h7 n4 W1 z
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    & W! _- T2 @( d+ o* L9 t- g* U
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式. Z) e; b0 L1 {3 A: \; t+ T
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    0 D% V% B+ d9 T9 s2 N
  997. ;------------------------------+ V  l8 e, J% `; A2 Z' C3 D' g
  998. ;PPU处理& z" A+ Z2 @6 p1 t
  999. PPU_Proc. M9 {+ l" i' s; y4 s0 X
  1000. LDX PPU_Cur- z  l; K, G9 ?8 q
  1001. LDA #$00
    + |: v8 Z9 |- O7 L1 ?' g, q
  1002. STA PPU_Cur
    & D) f+ p2 Y& o' g( j  N$ {/ X
  1003. STA PPU_Addr,X1 Q( h! G! O; ]* ~! M% ^
  1004. LDA PPU_Addr3 x0 s; w# i2 K6 L9 u' {
  1005. BNE PPU_Proc_Beg+ k" U8 r' M( L, \' E5 g& }
  1006. PPU_Proc_Ret/ G. M2 u* Z2 k: w" o& l0 v
  1007. RTS
    ! r% \( W4 y  c# Q9 F% a

  1008. # S% W& E0 y0 g( w1 \" {3 S
  1009. ;------------------------------& V# S9 O  F1 ~9 r4 V  a) `
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    5 p# w2 d6 k2 G6 {
  1011. INX9 a8 n" h3 s5 \9 c
  1012. LDA PPU_Addr_L
    0 n! x5 b- Z" F: r* J) w
  1013. CLC
    5 s/ Z3 f7 p/ ~% W
  1014. ADC #$20
    ( U  ^" H4 ?4 E- P/ G& C- \8 Z# p
  1015. STA PPU_Addr_L
    " Z# s9 Q" F) D- v: F0 {
  1016. BCC PPU_Mode_Return_Cnt_End
    " p$ j5 Z. u9 a/ \
  1017. INC PPU_Addr_H
    , A* P4 Q) j) i& n. Z  m8 V; p
  1018. PPU_Mode_Return_Cnt_End2 c& y7 h* A! Z% {1 Q  J, A. g
  1019. LDA PPU_Addr_H, b  l+ _, F& l( ]/ [
  1020. STA PPU_ADDRESS
    % Y+ I! J" J" ~  G- h
  1021. LDA PPU_Addr_L9 g9 Z9 w+ M- F8 S) C
  1022. STA PPU_ADDRESS2 X6 t: X$ v% |. a2 M9 H, Z1 \2 n
  1023. LDA PPU_Addr,X
    % V1 G2 d# H9 t* H) `; P4 t
  1024. TAY* q2 E7 a' j  v7 H
  1025. PPU_Mode_Return_Cnt_Write
    8 s9 T" S4 c2 [# Z, u' q
  1026. INX
    . M' F/ \4 T, c& p& d% H, M
  1027. LDA PPU_Addr,X
      Z, x) q) e: Y( u& @( n0 V
  1028. STA PPU_DATA
    7 d8 I# H9 K8 w' W& t% H& u: }
  1029. DEY
    8 H( b  ^2 Q" _# K2 y; f% k
  1030. BNE PPU_Mode_Return_Cnt_Write
    0 p) u0 U) h: B! S4 ?% ~
  1031. JMP PPU_Proc_End
    6 w' J. m9 B" m
  1032. / w. A1 J% L# A9 m; }) ^; g
  1033. ;------------------------------
    - e! c, g; j3 N! ?  l
  1034. PPU_Proc_Beg  ;处理开始  N+ \+ ?3 n4 i
  1035. LDX #$00
    . K7 ?  ?7 {3 D0 L7 K( i: R! _
  1036. STX PPU_MASK
    # p/ {3 [( y4 |
  1037. ;------------------------------
    7 `; Z9 U9 J& o. M3 C1 I3 J* D
  1038. PPU_Mode_Select  ;模式选择
    $ v* I& ~  K1 b$ S5 x8 E- h
  1039. LDA PPU_Addr,X
    4 z1 C6 [. a, q7 \
  1040. CMP #PPU_MODE_CNT_CLEAR
    0 q# L# `+ M* E7 q- f" y/ Q
  1041. BEQ PPU_Proc_Clear
    : h' u+ W. `% x6 W8 ^
  1042. CMP #PPU_MODE_CNT_LINE
    7 s& c8 S* ?: g
  1043. BEQ PPU_Proc_Cnt_Line
    , M* E' @8 P6 A* e& [  e
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    % V! s- Y2 d! f: r9 c) _
  1045. BEQ PPU_Mode_Return_Cnt, n& Z" }* W" L4 X2 E% A4 e
  1046. JMP PPU_Proc_End_Write1 R! \7 N3 A  [; O
  1047. ;------------------------------
    ! z* @" \. Q. X4 j
  1048. PPU_Proc_End  ;单行写入结束; g7 `; b8 D1 {
  1049. INX
    $ r5 ], I( I1 `; B3 t
  1050. LDA PPU_Addr,X3 A9 R: e# U1 E5 s
  1051. BNE PPU_Mode_Select
    8 a) G$ i+ c" ~7 ]& Z: @+ m9 I
  1052. STA PPU_Addr, q1 m: @5 K: r5 o5 L+ ~
  1053. JSR Update_Palette_Color
    + L( S4 x2 y5 a9 F/ T5 d  q! M
  1054. / B$ Z$ x6 f  F: A) c9 a
  1055. PPU_Proc_End_Write) L/ x- {7 i+ K  b; q4 r
  1056. LDA #$00
    * J; |9 u' {/ V6 n% Z5 i
  1057. STA PPU_ADDRESS) i! t9 `+ h4 y. \5 j# C! U  k
  1058. STA PPU_ADDRESS
    3 K; |5 f% @4 d* B6 M
  1059. LDA <Text_Disable_Flag
    . G" @+ L4 K& g' m
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF7 `0 `8 u; X- |: I( a( x
  1061. STA <Text_Disable_Flag8 d9 U7 H% s1 ?6 H+ U! S
  1062. LDA #Scroll_X
    8 X, ~" q% q5 u0 n0 a
  1063. STA PPU_SCROLL
    7 i! h: F) u, X% |  {: l
  1064. LDA #Scroll_Y
    2 h0 F5 m) ?, E  x4 y9 \" B6 E
  1065. STA PPU_SCROLL
    ! V) A+ |& r; l; Y8 t1 O5 b3 S# |
  1066. LDA Screen_State
    5 O- T( {4 q6 ?
  1067. STA PPU_MASK
    ( V5 N# o, ]# }
  1068. RTS
    9 M0 |( H5 h+ X* F4 B: R

  1069. 3 ~& _& n1 _: p! s# E( B. G1 T
  1070. PPU_Proc_Clear8 z5 y3 A. S4 y, }. ?( G0 P9 {2 i
  1071. INX
    5 P6 G, e4 J% J( x
  1072. LDA PPU_Addr,X
    6 m0 u+ n+ P1 t
  1073. STA PPU_ADDRESS' \: O, Z& K4 z1 c$ Z
  1074. INX
    4 Y/ z( t, p& V9 y% _8 `+ d: q
  1075. LDA PPU_Addr,X
    6 N" l' O0 \% \2 L/ W8 O
  1076. STA PPU_ADDRESS
    4 ^1 @/ v" Z% S9 X. y0 C/ {! V0 o. ~
  1077. INX
    % E  k8 W: X2 Q4 A/ f
  1078. LDY PPU_Addr,X
    * k2 |) R& t! k/ H# }
  1079. LDA #$00
    * Z* m; q+ S: C4 }" X
  1080. PPU_Proc_Clear_Write, O! @6 l" }" u0 d+ d
  1081. STA PPU_DATA
    ' C% }  \$ _, i/ s& p/ ~9 U8 I6 r
  1082. DEY4 }" R- `2 Y) T9 v" y1 H
  1083. BNE PPU_Proc_Clear_Write5 o" n/ F  U% p, @
  1084. JMP PPU_Proc_End& d6 d% p( G* ^2 M
  1085. ! r5 E: j. H5 z. E' Q0 f" J) r6 N
  1086. PPU_Proc_Cnt_Line5 ^( j! D( u$ q  J0 }
  1087. INX& U- i- B/ m7 B( E$ M! U) U0 L
  1088. LDA PPU_Addr,X- d3 ]: F7 |# e2 f& V6 u
  1089. STA PPU_Addr_H
    ( s/ [) Y+ e6 _/ e) f' G
  1090. STA PPU_ADDRESS
    1 X' \$ u5 @! _% @  o
  1091. INX
    , t: ~) L' k- ]
  1092. LDA PPU_Addr,X
    + Y' U% t, h. U% r$ `
  1093. STA PPU_Addr_L# ?. `( A. F' Z' A
  1094. STA PPU_ADDRESS) D+ ?3 A9 w+ R9 }; M! N: M
  1095. INX( x5 [; n/ v# Z# H& n
  1096. LDY PPU_Addr,X
      t& H! t, z0 |) M( C; e& @
  1097. PPU_Proc_Cnt_Line_Write- U6 v4 a4 @3 J+ B+ Y( O* X
  1098. INX
    , \- \: N; ^) W  k# Q- G
  1099. LDA PPU_Addr,X
    # d5 t* Q3 r) d( X
  1100. STA PPU_DATA
    : B& z' K) Y+ m) J
  1101. DEY% }& W. ?! }. U' v. r% D+ N. ~
  1102. BNE PPU_Proc_Cnt_Line_Write# y4 u1 ^. P# ]8 p4 W8 q
  1103. JMP PPU_Proc_End7 u4 V' p. O" y0 j3 P1 i8 `3 n
  1104. , Y$ R' e8 {& G& ~( y
  1105. ;==============================
    & _! d1 `7 r, p: g# }
  1106. HEX_To_Dec;十六进制转十进制+ B0 b! }5 p" p
  1107. STA <HEX_Data
    ! _4 o7 I# y: y: t
  1108. PHA
    / t3 i& C; s% ?+ L
  1109. TXA+ }* |3 I) d) z* S: b5 s! h
  1110. PHA
    $ O# `( \1 @( [# l- x: P
  1111. LDX #$005 U' M* z1 o4 U! ]; P4 V/ N
  1112. LDA #$00& R5 t. Z+ u' `! C6 v0 r& |$ U! x
  1113. HEX_Cln
    2 O! O3 u- c( K$ `+ j" p9 C5 U& r
  1114. STA <DEC_H,X
    3 R0 `: D! f# W$ H
  1115. INX: d3 L( l, @* M6 N4 [
  1116. CPX #$03
    2 U1 k9 T" Z( K: D( [
  1117. BCC HEX_Cln
    . S& t9 Q" J8 r( S9 D3 b) ]) H2 a
  1118. LDA <HEX_Data
    7 L+ `2 R- i9 n9 n+ g
  1119. ;------------------------------
    . @; V% A/ f& F. F9 z( s) G6 }
  1120. HEX_100
    6 G/ I0 g+ z5 ]# l! b0 }
  1121. CMP #100
    * i; A* W" x. _* ]+ O3 I! m' M6 W
  1122. BCC HEX_10
    7 I2 H5 J  {- i0 `  f5 m( i* |' p  m
  1123. SEC
      J. w7 z" D$ |3 C0 u/ Y; v# X. i& J
  1124. SBC #100
    ) u/ S) l8 D% J- U/ c$ _
  1125. INC <DEC_H
    5 x9 h* j' A6 j! [+ w: I" W9 F
  1126. BNE HEX_100
    8 b' n& S! \. v1 k
  1127. ;------------------------------
    . @6 M: h5 k2 A+ J! I; g- B
  1128. HEX_10! H) x. `% F0 {5 ~4 k3 p( W
  1129. CMP #10
    8 n  q6 Q1 [( _+ H1 ?; @0 K  x
  1130. BCC HEX_1" L" M3 N* g8 B  d
  1131. SEC8 X2 S, d& P7 C. P
  1132. SBC #101 ^" n4 H; \) J
  1133. INC <DEC_T
    ( J- c' X5 @# l  \
  1134. BNE HEX_10
    7 }% ^9 ^: F8 Q8 c, E: X, k2 U
  1135. ;------------------------------3 s% a4 G6 _+ {$ n2 Z% [) M, }
  1136. HEX_1) A  F$ K# M" o( Z# A
  1137. STA <DEC_L
    : ]" H' Z& A0 Y' `) o; x$ O  J' J
  1138. PLA
    3 C$ G& @7 Z2 K3 w; ^; d( d" l% u
  1139. TAX
    4 U" O) G. q, ]8 f0 v, @. k
  1140. PLA' ~/ U0 N) l! I! H" u
  1141. RTS
    5 m$ Y* \# Y# ~  I5 w+ ]1 Y+ u

  1142. 7 _: T- O( P# c! P1 G- i
  1143. ;==============================2 B/ g8 ?- r+ p# o: w
  1144. ;音乐曲目显示
    4 Z! n/ o, p3 w9 M
  1145. Music_Show$ T1 S, {6 m; G, X: p
  1146. LDX <Music_Item_Cur3 P& `5 _! F# K& @
  1147. LDA <Music_Cur,X, Z2 K1 v- N5 c! L
  1148. CLC
    % c, P/ I- @; k. C* _/ Y1 F  |7 C' o
  1149. ADC #$01( n  w2 f% C9 `! w
  1150. JSR HEX_To_Dec
    7 }" A6 K! h2 G
  1151. LDX PPU_Cur
    ' K0 b4 z  [" S# p
  1152. LDA #PPU_MODE_CNT_LINE
    * k; m# j+ o9 ?- j" V
  1153. STA PPU_Addr,X% a' Q; [( F/ r' K: i! n. u
  1154. INX
      |! T7 f& n% M* H5 J. |
  1155. LDA #HIGH(Play_Index_Pos). r* e0 E5 K# }2 ~$ y
  1156. STA PPU_Addr,X% [' o$ g6 f. d4 u6 v, C. ?+ z  l
  1157. INX
    5 f. h% V5 j/ G3 m! y7 s
  1158. LDA #LOW(Play_Index_Pos)
    & @/ G( d7 U9 q
  1159. STA PPU_Addr,X5 c' D" j1 G+ f+ \
  1160. INX
    * h/ D9 ?: _) P* u1 C8 b9 @  U

  1161. 1 D8 ]& `* G6 R* `8 }2 m
  1162. LDA #$079 I$ C, |1 c8 G% w5 t
  1163. BNE Music_Show_Length( U8 X- E/ }/ x3 R; U/ L

  1164. / Y3 S) a7 q; ?* M7 u
  1165. Music_Show_Length. O- [, J  O! x, [
  1166. STA PPU_Addr,X
    - k3 l* L  k5 }( u
  1167. INX- C1 D6 ?$ C2 I! E
  1168. * x- s- U- s- H$ I  m& E
  1169. LDA <DEC_H# X' n/ B! e1 B; P( Y5 O
  1170. ORA #'0'
    ' ]$ w/ u. x, [/ \
  1171. STA PPU_Addr,X
    ' T. L* g& P& n- r, D& h, g
  1172. INX
    ' H, P/ q/ i3 C$ {$ O/ ?

  1173. 9 D* s4 k- w+ b: O! J" L1 \
  1174. LDA <DEC_T/ E, Y; }$ C+ k9 g+ F6 r
  1175. ORA #'0'
    2 _; M$ T$ o8 a4 S$ F9 L3 q( o
  1176. STA PPU_Addr,X
    9 D7 J, V: _+ l/ T6 V! P3 D; q
  1177. INX
    $ N/ z1 c% h( ^3 n% w
  1178. 0 C5 N6 n* c0 v3 J- m2 W
  1179. LDA <DEC_L
    / x. D6 d- m: P
  1180. ORA #'0'
    7 Q) L' V8 r$ D+ E& a2 ]
  1181. STA PPU_Addr,X0 v) `" f! A2 f1 i5 T4 h
  1182. INX7 d# O, |% s! A; o

  1183. " q1 `1 u+ k* k: t/ T
  1184. LDA #'/'4 t+ g5 d& X5 ?; R$ \" ]
  1185. STA PPU_Addr,X
    ( W6 X2 _4 m, N6 n, |' F
  1186. INX6 ^! G5 [, k1 Y& k$ _
  1187. Music_Show_Total8 u# Q" l0 b( A! `$ D
  1188. LDA Music_Total
    * N/ o( j! a% a1 [1 t4 I$ G
  1189. CLC2 B% ~; x' p  J. H
  1190. ADC #$012 a* K+ ]) H7 T! f
  1191. JSR HEX_To_Dec
    . Z9 V" _" r0 ]1 k& b; u

  1192. 3 @2 `. C$ c8 H
  1193. LDA <DEC_H
    & U4 z2 L# j% v$ ]7 B
  1194. ORA #'0'& b1 ~: g2 k- v; _5 L1 g1 [
  1195. STA PPU_Addr,X
    9 X- r/ Y2 d  X5 g# Z, B
  1196. INX9 |, T5 [1 {" f; z# u# n

  1197. 2 W7 R; b( H" n0 r$ N/ w9 ?% N7 y
  1198. LDA <DEC_T: }( N6 a. x% C: u1 k! C/ N4 Q# l' j
  1199. ORA #'0'3 O8 }1 O' F- ?( S# P( P0 F( O8 K
  1200. STA PPU_Addr,X
    ; ]/ d, B# l  t! R
  1201. INX4 [! L" D0 ]7 L. T/ Y+ n$ x# I

  1202. ! R( X3 T3 ]) j/ T3 s5 i+ j9 @5 q- Y
  1203. LDA <DEC_L% k5 `6 V4 K8 Y8 g+ d
  1204. ORA #'0'8 B& q/ a+ _5 i: F
  1205. STA PPU_Addr,X
    / N6 a6 ~, i1 W2 A" A
  1206. INX
    * [. C$ I1 l! i: k. j0 a
  1207. 2 ^. V( |- S) b3 e# m; l# _  l
  1208. STX PPU_Cur
    / ^) K  ]) W6 g8 u* j5 D
  1209. Music_Show_End
    - Z1 `. ]# C: S6 f8 T
  1210. RTS3 ?) U- s7 }3 Q" [/ X
  1211. ! R  z* d- v/ `. ^" O, d
  1212. ;==============================& _* C" E( _; |
  1213. Time_Show;播放时间显示
    2 r( i% t) Q3 C8 g9 c+ X2 s
  1214. LDA <Text_Disable_Flag
    & o3 _% ?+ P6 r
  1215. AND #TEXT_DISABLE_ITEM( @$ P/ \( k/ G3 `% r7 z1 v& u# p
  1216. BNE Time_Show_End+ Y7 J6 @, E) C- [
  1217. AND #TEXT_DISABLE_TIME
    * |3 a/ |* ~; Q. c  l
  1218. BNE Time_Show_Enable( a. G8 K0 M' Y' Q6 l3 S

  1219. . ~! H: |  _7 t
  1220. LDX PPU_Cur
    ; Z  ]0 I# b/ T" u) y
  1221. LDA #PPU_MODE_CNT_LINE9 |  }6 n2 Q7 X
  1222. STA PPU_Addr,X
    + Y% |6 S, d3 \: D* ~8 c' J
  1223. INX
    + N: j. Z/ v/ s% L1 ?% a
  1224. LDA #HIGH(Play_Time_Pos)+ K$ `% z/ G4 \6 x5 U
  1225. STA PPU_Addr,X
    ) B) ~; d& a. L& t4 `
  1226. INX
    4 v  e# M+ k; S; d. A0 l% @
  1227. LDA #LOW(Play_Time_Pos)' h# j% J- [% k% M% T
  1228. STA PPU_Addr,X" s& s, }, h5 Y% d
  1229. INX0 W* E8 d, {3 `, ^
  1230. LDA #$08* e. j! e( W  [; i' A# d
  1231. STA PPU_Addr,X
    , H) L' W  X7 Y5 {# z+ q, Q" l
  1232. INX' E6 ?& C1 Z+ ?2 h2 v7 ?5 K
  1233. Time_Show_H+ T) ]8 K0 i. O& H# X  i' \
  1234. LDA <Time_H
    2 S' m3 d* L+ i0 k9 @3 c$ U
  1235. JSR HEX_To_Dec
    2 V" a2 C; W) O2 [" n
  1236. JSR Time_Digit
    ' A. U) v1 F; D( O) L7 e" C
  1237. LDA #':'! ^! }( E8 ?9 N
  1238. STA PPU_Addr,X* Z, [9 z( b, H' K& b- l
  1239. INX0 F' ?' H# T- ^& l* E
  1240. Time_Show_M
    $ u4 T. l) J  ]
  1241. LDA <Time_M6 P$ q8 z1 P, X% k/ I5 g
  1242. JSR HEX_To_Dec% n* y7 w  A8 ^  q' k8 s& B; z9 W  Y
  1243. JSR Time_Digit
    6 ]! Q4 c2 V% H8 U; J6 C
  1244. LDA #':'
    * m5 \% }$ h& Q, D. a
  1245. STA PPU_Addr,X
    3 X1 `# A7 K" z& g2 y6 v2 w
  1246. INX
    7 K# S( @$ f' F5 y6 {9 f' O+ P
  1247. Time_Show_S
    " r0 z( n4 N) }. V; d
  1248. LDA <Time_S" K0 y# q0 G  d
  1249. JSR HEX_To_Dec
    ; u" Q# C& A2 L/ N4 g
  1250. JSR Time_Digit
    . G& q. k, a, U
  1251. STX PPU_Cur
    6 y7 ?$ u0 R1 ]3 s6 p, m1 _2 q
  1252. Time_Show_Enable- Z9 N* N  D( Q$ i% ?% ^3 L
  1253. LDA <Text_Disable_Flag
    - @7 g6 z4 u) S- p8 u8 m5 L+ a
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    3 ?9 q3 b6 U% K# A' f6 n
  1255. STA <Text_Disable_Flag8 ?1 d0 W! ]6 g2 O7 E/ A( I+ e
  1256. Time_Show_End
    ( `8 w) ]  O: P0 t
  1257. RTS
    5 R7 t* j6 P/ Y: t6 ^& u
  1258. 8 l& ?2 @/ r1 g) m
  1259. Time_Digit2 E& `$ _( O6 j' E, `
  1260. LDA <DEC_T, l( W9 U7 H+ p2 n5 O6 m: D8 \% `
  1261. ORA #'0'
    ( ?- K, _6 T9 p
  1262. STA PPU_Addr,X( O4 G0 Q0 D2 J  G9 g9 a+ C
  1263. INX
    ( I' V5 S1 i- ~6 \
  1264. LDA <DEC_L
    $ ?& y6 Y6 W$ \, t; z2 C
  1265. ORA #'0'
    ) `7 P9 t- j+ d2 ]! W: E
  1266. STA PPU_Addr,X2 X" h- c; s- X
  1267. INX
    1 I) f( ]2 a) I9 h8 _
  1268. RTS
    5 e6 i- W9 R1 r, u
  1269. 6 d. a; T( v( }  R
  1270. ;==============================8 R$ E( k* B) {+ P; [( i
  1271. Time_Count;计时$ |1 o: m! a9 @
  1272. LDA <Music_Stop_State- Y( g& V) T7 D. U# i5 k" |/ N
  1273. ORA <Time_Wait_Cnt+ E  X  }8 [! K( c# Y' |2 T
  1274. BNE Time_Count_End
    ( k+ d. A( N; \0 \) F, j$ q
  1275. INC <Time_Cnt. {# R8 x) s/ \; D3 X! k# n
  1276. LDA <Time_Cnt
    - B4 k% q% B. Y$ u
  1277. CMP #60
    / ], j8 n( i5 Q
  1278. BCC Time_Count_End
    $ S  l# _, z3 m( v4 I/ O: p2 I
  1279. LDA #00
    6 c( v+ O" ]4 |% ?
  1280. STA <Time_Cnt
    & u1 C# z& @8 ~( t" R* L, w% i
  1281. INC <Time_S
    , w5 [$ y7 a8 q1 s
  1282. ! z* l' f# g5 c/ w) q
  1283. Time_S_Cnt* \. W, m5 H# n2 a7 g
  1284. LDA <Time_S/ Q& [+ r4 G; p. a/ I! U# I/ L
  1285. CMP #60
    . Q& B6 i8 a, H! Z
  1286. BCC Time_Count_End9 z. G7 y0 ~- D5 p) `; o
  1287. LDA #00
    5 o' O$ O; [5 i9 t
  1288. STA <Time_S
    0 F0 S4 W- W5 K8 k3 {- X1 H
  1289. INC <Time_M5 x. m7 @; U* J& v; l( {
  1290. 3 q+ i% ~8 |7 b2 W5 N5 r
  1291. Time_M_Cnt' x; A$ |; S+ M4 {5 W3 U" t) \) m. s
  1292. LDA <Time_M
    ' t/ H1 x: ]3 v
  1293. CMP #60
      {4 h  F# x  O1 g; r# _
  1294. BCC Time_Count_End: g. E6 @1 A0 {' F% ~
  1295. LDA #00
    9 X( b/ f7 ?5 K
  1296. STA <Time_M
    0 }( D" O3 r' T' R9 F
  1297. INC <Time_H- B$ h8 c3 z) D6 e& p. \7 {

  1298. + M0 T% c( e* ^+ F# U
  1299. Time_H_Cnt
    ! Y, L) g( B$ y8 s( a8 B
  1300. LDA <Time_H
    9 n: @/ b6 i0 t2 X: y5 e: U
  1301. CMP #24: u' s& V; |- r# o5 X
  1302. BCC Time_Count_End, l5 X' X- h% ?  A0 a/ Q
  1303. LDA #00* Y6 |4 Q" f3 J+ }! Y  [
  1304. STA <Time_H
    - b( I% |1 h* J% H; b. r- {4 P* G

  1305. ( V3 r6 J7 Z& l8 B5 v
  1306. Time_Count_End( N0 |/ h- Z2 O+ w' O9 C
  1307. RTS0 |8 D% C2 h: R$ d4 ^

  1308. 8 }4 R# |; ]) M0 Q
  1309. ;==============================
    4 n6 o+ G- I6 j# y* g9 }0 @; u
  1310. Time_ReSet;播放时间重置
    9 i" @' ~& \6 N  o
  1311. LDA #$00
    ! U& S( N/ }  ?' T8 V& ]/ x! S! i1 E3 D
  1312. STA <Time_S; N: g& v. p: G; q) e
  1313. STA <Time_M ; l0 ^% i; E9 H. ]  }1 e4 G) G+ R
  1314. STA <Time_H) r; W7 k2 X9 k/ h6 I1 \- P
  1315. STA <Time_Cnt
    . i- f; v( w' ~" B
  1316. RTS
    2 [: J3 }/ _- e

  1317. + f5 C, E6 I3 w1 }& a+ z" C  D
  1318. ;==============================/ S, `+ @8 h/ Z$ |
  1319. Music_Bar_ReSet;音乐条重置/ u- D. I  G; ~* ~" E6 M
  1320. LDA #$002 A: @  ]$ r7 l( f* B
  1321. LDX #$00: R& A" V$ `% |1 ~
  1322. Music_Bar_ReSet_Set
    % d5 m8 c$ T( x
  1323. STA Sound_Bar,X+ H( H, h9 R' m& J" _3 R  F, \
  1324. INX
    / r& D) P* u: Z7 O( o
  1325. CPX #$10: o* o1 k" j; |2 K: q
  1326. BCC Music_Bar_ReSet_Set' k6 V7 C4 i# J, o: l
  1327. RTS
    / Q' q' |4 C/ ~5 a# T  ^
  1328. . b5 `4 E, o! N
  1329. ;==============================2 k. G! M+ P0 O, r7 e3 G
  1330. PPU_Data;PPU数据写入
    ) s* U6 i" e. a7 @/ ]4 I
  1331. STY <Data_L' _, E2 [# e% w% c5 U5 ]) h* \
  1332. STX <Data_H9 K" T; r+ I. D2 }- u2 A/ _0 ^
  1333. LDY #$FF
      U& Q' o3 u: ~, R* Z" \7 ]
  1334. LDX PPU_Cur6 }" i& J* L2 g1 z
  1335. DEX
    9 y1 P$ }" ?5 h% w5 o
  1336. PPU_Data_Beg
    : h2 [$ t) A2 w1 x/ r+ c/ i
  1337. INX
    ( a- Q" y" y; T* w
  1338. INY
    / g# g) T1 O; K
  1339. LDA [Data_L],Y
    $ l3 A1 b6 z" H8 C0 A
  1340. STA PPU_Addr,X
      A  Q+ M; ~9 b# T
  1341. BNE PPU_Data_Beg/ l/ e$ @" B; |! T  \- I$ j! Q4 f  L* U
  1342. STX PPU_Cur
    % v+ D. H! F1 F4 l7 m4 Y4 U2 g- X
  1343. PPU_Data_End9 e6 \. `+ K: W9 t) A* a
  1344. RTS
    - x" x+ i# F5 _2 a+ {. N# z4 ~/ A
  1345. 4 P. ~7 _5 R( }9 M" u2 i0 u/ z
  1346. ;==============================
      i+ n% L0 E* `1 @% d, f8 y# R: M1 T
  1347. Music_State_Show;播放状态显示1 o# f8 F+ S7 f1 H: _2 ^
  1348. LDA <Music_Stop_State
    ) V" t* j- t; e' I7 X: E
  1349. BEQ Music_State_Show_Play
    8 h2 c: P) o" b
  1350. Music_State_Show_Stop
    . Z/ n& h( |7 [$ p
  1351. LDY #LOW(Music_State_Stop)
    # z& }  c! c# |- U  I7 q  v! Y
  1352. LDX #HIGH(Music_State_Stop)9 A/ P& `" l& f
  1353. JSR PPU_Data3 ?; s9 \+ K3 `( O
  1354. RTS. |( V( _# M" }& ^5 z% S
  1355. Music_State_Show_Play
    , M+ Y' F6 w( ?. U) X) t) l3 d  T
  1356. LDY #LOW(Music_State_Play)" p2 R1 y0 G. J9 d2 I% x
  1357. LDX #HIGH(Music_State_Play)% T. n9 X8 Q( G) m  r0 g) n
  1358. JSR PPU_Data' }; A' b1 w. ^% x: w; }0 p
  1359. RTS5 q5 S( T! ^; m  P
  1360. 7 u' O: i9 w) S* {& S2 Q
  1361. .IF SOUND_BAR_SHOW_ENABLE
    ' H$ U& g: A2 o
  1362. ;==============================- ~* P* _+ A% @, n7 u% n4 O
  1363. Sound_Bar_Text_Set;标题与音乐条初始化( n9 u4 n2 j9 N8 P
  1364. LDY #LOW(Sound_Bar_Text_Data)
    2 B; I3 c2 q. n; L; B3 g2 _
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    # i% C, B: t+ m) d5 x. s+ x: c
  1366. JSR PPU_Data1 t% h6 ^& M$ v/ X& `0 I% K
  1367. RTS
    " f4 V' G- L. q# i' I# I9 h
  1368. 1 N2 T4 r$ v5 _% x9 P/ z" h/ ^& C
  1369. .ENDIF# P$ ]2 v$ b% U

  1370. , q% }: r& r1 y9 X/ D& Z
  1371. ;==============================+ \4 s1 J* C6 C0 Z* H
  1372. Set_NameTable_Attributes;设置命名表属性; L5 V+ i4 |* b6 u
  1373. BIT PPU_STATUS
    & ]# P4 y9 A8 r9 G8 p' s% H
  1374. LDA #$234 B2 T' J. q4 k
  1375. STA PPU_ADDRESS2 K9 k* T, l9 X
  1376. LDA #$C0
    . }' j4 N2 ^2 D8 j5 M; r1 X9 J
  1377. STA PPU_ADDRESS
    6 h3 B: U) D$ u
  1378. LDX #$00* y! p9 ?: c0 }5 m/ @3 J0 c2 t
  1379. Set_NameTable_Attributes_Write/ k: X% G0 u, q- b, h0 A2 z
  1380. LDA Palette_Attributes,X
    1 s; p. C, e# A& h/ m8 e
  1381. STA PPU_DATA
    " X' C3 U0 [( g+ i: t
  1382. INX
    ; W3 p6 ^  c' Q6 r- q' d
  1383. CPX #$40& A- K1 n5 K- ^7 T( y4 l
  1384. BCC Set_NameTable_Attributes_Write; J2 f, l0 h  O/ K
  1385. RTS
    0 O' u& @0 ~2 l5 ^% x* E2 _% ]; o. Z

  1386. 0 `- \1 Q( k) O. u( [3 j9 q
  1387. ;==============================
    * C: y7 g6 c1 O
  1388. Set_Palette_Color;设置调色板数据9 U* I7 I! |7 b# R: e
  1389. BIT PPU_STATUS  l* U* f! C+ p1 v) @  x& P2 |
  1390. LDA #$3F2 z; T& y1 X' x: u: r2 e3 T3 X
  1391. STA PPU_ADDRESS7 W# |& A- s3 c! R9 g* v& W" B8 j
  1392. LDA #$006 g! q6 D. t+ S" N; i
  1393. STA PPU_ADDRESS0 u1 q1 t" r1 F  s$ l$ ?' C
  1394. LDX #$001 o/ w( s. K( i
  1395. Set_Palette_Color_Write* ]7 a5 o% |% J/ i, o/ E0 T
  1396. LDA Palette_Data,X
    7 B& }7 l/ n+ W# U  i* P
  1397. STA PPU_DATA) }# `0 G2 h  T) I9 I
  1398. INX6 X" \) m1 _& |- ?$ z3 h
  1399. CPX #$20% N6 _! D2 @9 M- H& m
  1400. BCC Set_Palette_Color_Write
      ], G, u5 N- S  \4 `
  1401. RTS
    ( o7 ]% d' {7 R% x

  1402. . v- \$ u" _) X( U
  1403. ;==============================, U0 w6 w3 i8 R, e
  1404. Init_Palette_Addr;初始化调色板数据9 x( W- K  S* _$ V3 B, }
  1405. LDX #$00# ~' {% }, `: K$ e
  1406. Init_Palette_Addr_Write
    % b8 _  ^) R1 t* Y
  1407. LDA Palette_Data,X  w3 l7 B1 J2 H0 D* h" m4 ]4 D
  1408. STA Palette_Addr,X
    1 z" r5 ?0 t! {
  1409. INX) n0 l) i9 a; b9 s3 j
  1410. CPX #$20
      d+ [, Y0 [& S( c* z
  1411. BCC Init_Palette_Addr_Write) v* Y5 f0 S. f0 q2 Y
  1412. RTS* X0 F% Z( u0 F

  1413. ) I) G- m% p% S2 Y: Q
  1414. ;==============================
    3 H1 a9 v8 s2 H: g; [- I
  1415. Update_Palette_Color;更新调色板颜色4 d1 w0 }, k4 z$ m% y& V
  1416. LDA <Palette_Update_Flag
    $ _2 V2 m- @4 T
  1417. BEQ Update_Palette_Color_End$ [4 {/ T/ Y0 a* U
  1418. LDA #$3F
    . Z# Z) Z* m0 T/ r  C9 v
  1419. STA PPU_ADDRESS- {" `. p  D3 D
  1420. LDA #$0C
    5 H- S1 u% w- {+ n0 T$ b- k
  1421. STA PPU_ADDRESS6 e# \' I% h7 {- L; G2 [' h5 h
  1422. LDX #$0C
    8 M/ C) q/ X' w& F: k- v9 B3 Y
  1423. Update_Palette_Color_Write
    * c3 o8 i  J) L; U! Y' ^5 \
  1424. LDA Palette_Addr,X
      C# _2 R* f# O( q+ f
  1425. STA PPU_DATA* |# w8 j! P* _
  1426. INX7 p5 e5 p1 y" [, N4 f
  1427. CPX #$149 O( a5 u( H! u9 F& j" U6 I: h
  1428. BCC Update_Palette_Color_Write
    " C+ X) f+ O9 D( B7 G
  1429. LDA #$004 u5 m8 o, A6 K; _
  1430. STA <Palette_Update_Flag
    9 ^+ d% O. E9 Z8 w+ \$ Q( Y0 J
  1431. Update_Palette_Color_End' ?- p+ M  N% Y& Z; Z% z8 t
  1432. RTS9 i" W6 u2 K/ v1 T- M2 `
  1433. 4 y; k0 m# {, t6 \: p

  1434. 8 H0 c" A8 F* Q
  1435. Update_Sprite_Palette_Data( U9 _- s- f% O- f
  1436. .DB $21
    . Q0 K) [6 T  U
  1437. .DB $21
    7 Z4 m5 g& e1 D+ v
  1438. .DB $11! P+ w5 [" ~* J7 m- M$ X
  1439. .DB $01
    0 Z8 `. b) X' V# P
  1440. .DB $010 `4 X; H9 y9 R9 Z( x' h' B
  1441. .DB $11
    & j- x# X% p* Z. d
  1442. .DB $21
    - C, V4 |8 @" r8 ~& P
  1443. .DB $21
    ( E5 B; v8 n3 H8 _$ G5 y
  1444. .DB $11
      W8 ]. S+ Y) l' P% ~8 A
  1445. .DB $01% \1 s  _1 `8 Y& o& O7 x, `
  1446. .DB $11
    6 F, a- w6 @; J) D/ }3 r* @; u4 u
  1447. .DB $211 p! z# f4 i  h
  1448. .DB $21. l8 d# T- `1 U
  1449. .DB $11
    + `8 E& d! [. E+ N
  1450. .DB $01
    0 I( ?! ?/ M+ z: F- H+ U2 }
  1451. .DB $11
    3 {4 l" G& e$ D! p7 t& M
  1452. ;==============================
    $ @& x1 V# H0 v% V
  1453. Update_Palette_Data;更新调色板数据
    1 |1 U: e2 ?, c' k- |
  1454. LDA Nmi_Time_Count4 S5 `2 I" w! ^8 c1 @) O$ W1 G9 w8 O
  1455. AND #$080 a" i! W6 L. Z0 ~& \# k
  1456. CMP #$08
    ) l3 b% h' p6 ~5 w) g
  1457. BNE Update_Bkg_Palette_Data
    2 |! g9 \0 D: ~( f+ ]' r
  1458. " |  f* W( z/ o2 A
  1459. Update_Sprite_Palette_Data_Set! |) Q8 \& Q4 a# n# Z
  1460. LDA Nmi_Time_Count
    " ~/ i2 K7 @- e
  1461. LSR A' A1 U$ D$ B' f5 ?7 ]
  1462. LSR A
    ' [4 r. |/ o8 M0 s' C$ b
  1463. LSR A
    9 E! N: M4 s0 x. n, E6 w% g- \; Y
  1464. LSR A
    % c0 l0 b* a, E; @) H
  1465. AND #$0F
    2 H' {5 O7 |( S8 t7 q
  1466. TAX
    + u' o5 s4 I' s+ N- W9 O
  1467. LDA Update_Sprite_Palette_Data,X1 k9 z9 E7 [8 k; Q% k5 H
  1468. STA Sprite_Palette_Update_Addr' Y" _$ ]$ Y8 G& v
  1469. LDA #$016 A0 U( \' I, ], z7 M3 z7 y1 a
  1470. STA <Palette_Update_Flag
    , D! Q) D( @: S; h
  1471. # Q" f, j  u( Z& Y9 p
  1472. Update_Bkg_Palette_Data* K  g. i/ l& q$ D2 c% }9 G
  1473. LDA <Text_Disable_Flag; o. w5 F$ O% h5 \: T' T
  1474. AND #TEXT_DISABLE_RAM
    + t2 J1 U( V2 W+ r% z5 `6 n6 _
  1475. BNE Update_Palette_Data_End2 [, O5 h+ |6 j( ~
  1476. LDA <Music_Stop_State
      D* m% s3 C  X: O8 }6 \) q& Y
  1477. BNE Update_Palette_Data_End
    0 U- p, j9 e8 B9 ?& f( j
  1478. . _- [9 ?' ~- x% r9 }
  1479. Update_Palette_Data_Check
    . {& b+ \1 s2 e9 j, U) Y: t
  1480. LDA Palette_Wait_Cnt# |; ~0 X) w! X0 [" @7 @, e! A, T
  1481. BPL Update_Palette_Data_Check_Over1 Z  e; t6 y: W
  1482. LDA #PALETTE_UPDATE_INTERVAL7 x' ~2 P  Y' t8 E; B1 r
  1483. STA Palette_Wait_Cnt1 Y: d6 Q+ a9 x. ^
  1484. Update_Palette_Data_Check_Over; T/ m4 \: c6 j: c9 M
  1485. DEC Palette_Wait_Cnt' G9 ~4 {- o3 b! u' P( S0 ^
  1486. BNE Update_Palette_Data_End
    $ f" e( S8 l" c1 I

  1487. 4 S# M/ c- c% D$ a9 f
  1488. LDA <Text_Disable_Flag
    4 `/ v& E  f$ L* m
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    . g2 t, s' G6 m0 y3 r
  1490. STA Text_Disable_Flag1 g1 Y& p: l3 w
  1491. INC Palette_Update_Flag
    # n8 P* _, W( A1 r+ Z# R7 V
  1492. * I, F" ?# E$ j! F+ c
  1493. LDA #PALETTE_UPDATE_INTERVAL5 K, ?3 L) e' Q
  1494. STA Palette_Wait_Cnt: b3 P+ ]3 I/ z% f% \; i

  1495. ) H7 H# C# S5 I9 L
  1496. LDA Bkg_Palette_Update_Addr. @* y  z/ m3 b
  1497. CMP #PALETTE_UPDATE_MAX
      U: q; a' k4 B! C2 H7 v5 H! m
  1498. BNE Update_Bkg_Palette_Data_Set# E, F. g9 P- h' ]
  1499. LDA #PALETTE_UPDATE_MIN - 1- h8 [/ Z- Z2 M3 b
  1500. STA Bkg_Palette_Update_Addr
    ' Q* S% R9 K0 y" B- h: M* \" Z* \
  1501. Update_Bkg_Palette_Data_Set8 G0 F  D% {$ P6 A- W
  1502. INC Bkg_Palette_Update_Addr
    * z; k; w$ [# {& N( F- M' F
  1503. ; \- E8 u- {! W2 Z/ ^$ \/ j/ [. }
  1504. Update_Palette_Data_End
    ; E! x% `) x3 Z0 p. X  T) T3 N
  1505. RTS
    ) j! e# O' e- O/ i$ T' ^, p
  1506. 7 y  t+ {& B# S" S  s
  1507. ;==============================
    , U$ d& m, w5 [& i& @" K7 V
  1508. Show_Music_Text;显示静态文本
    6 D5 i4 N3 i/ ~3 X! K6 i
  1509. LDX #$00
    + i2 N  j% \& K( [% Q
  1510. Show_Music_Text_Set7 ^. Y% T9 O. i
  1511. LDA Static_Text_Data,X
    3 L8 y/ t, l6 s2 g
  1512. STA <Data_L
    $ b- i9 t7 e3 u& q6 A. u
  1513. INX8 i. g1 R  H0 Z# Q
  1514. LDA Static_Text_Data,X
    $ L" m" A/ L0 f. b
  1515. STA <Data_H3 d' G1 Y1 \: ~0 E7 y
  1516. INX1 L7 W1 V) R4 M& N% a
  1517. LDY #$001 e. Y* a8 @( s' Y
  1518. LDA [Data_L],Y' g+ C- Y$ v/ W7 q
  1519. STA <Data_Cnt
      F* I+ X( |% R. O& l0 T  F: F
  1520. DEX
    ' o7 I! x. w8 p! ~4 o2 F, x
  1521. DEX* q# p: X& y. o, I: E1 O$ C
  1522. LDA Static_Text_Pos,X# ]2 r8 x: Q9 H- ^
  1523. STA PPU_ADDRESS
    + f, Y4 t4 r! l' A9 u
  1524. INX
    - K4 M; }% G0 P
  1525. LDA #$20
    : Q+ S8 ]: [" w1 E2 O2 n
  1526. SEC% M- f& n1 L% ?8 x- c3 m) V7 g
  1527. SBC <Data_Cnt
    + p% x/ W& e. d5 v! I% q. H
  1528. LSR A
    ; h3 ?7 t; k& G) v9 D1 f, R
  1529. STA <Data_Buf
    3 v* g3 [3 k, s3 r8 r  M
  1530. LDA Static_Text_Pos,X% x+ y( c# ?$ M7 s- u
  1531. AND #$E0
    $ y/ C2 y0 e& z4 C
  1532. CLC
    3 Y; F# c9 z" ^  C# z6 R* `
  1533. ADC <Data_Buf% r" R3 ?* o" m4 y6 u
  1534. STA PPU_ADDRESS
    , ^; ^# F" W; `& {  D
  1535. INX# Q: N/ ^4 c6 h3 v
  1536. Show_Music_Text_Set_Write9 B; Y* |% z$ E/ U: s4 |7 g) F
  1537. INY
    8 }6 n" s% T: n: l7 W2 G, X) }! I  F) [
  1538. LDA [Data_L],Y
    % e8 W( ]& w" H: V0 N8 b
  1539. STA PPU_DATA
    , i( X" G( ~5 L, ~
  1540. DEC <Data_Cnt& c1 {8 L+ q  T. K0 q. W
  1541. BNE Show_Music_Text_Set_Write
    + D6 N- b! `  K- X6 G
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    7 h! D0 {& b- C8 i0 s
  1543. BCC Show_Music_Text_Set
    ! K# s2 S, A& ?5 V# e& i
  1544. RTS
    & b$ ~  a5 d2 ~- s! f; M9 a* W

  1545. . M) Z  Z2 J( P# H% N
  1546. ;==============================  u9 P! P5 u9 ^4 U: A( F# |0 ?2 J
  1547. .IF Track_Name_Pos;显示曲目信息. g5 q7 y% d2 _& C$ V/ X
  1548. 1 L7 Z& a: p; a, C9 l2 y
  1549. Clear_Track_Info
    9 w* t- S9 Y/ Q! y  L  D9 `0 f3 H
  1550. PHA
    7 T% B/ Q4 I5 x
  1551. LDX <Music_Item_Cur
    . C/ J! P/ n. \6 E) b! f
  1552. LDA Track_Name_Addr_Flag,X: N" m! D+ n5 s* c
  1553. BEQ Clear_Track_Info_End_Ex% V' k, w# J1 P. D5 C
  1554. PLA+ ?; A, A8 B+ g* h2 E' }
  1555. / X* v( P$ E- ?, A
  1556. LDX PPU_Cur' @6 ~9 A, _$ t+ T7 ^  p
  1557. PHA
    0 F# o& p$ T: m2 ]& H
  1558. LDA #PPU_MODE_CNT_CLEAR
    # e. Y3 C- ~  N+ I
  1559. STA PPU_Addr,X
    " y# {2 v  Z' I, n1 `4 ^# L
  1560. INX7 d. @4 K& y! O
  1561. PLA; n; R9 z* ]: X% R) _8 Y
  1562. JSR Show_Get_Track_Name_Center_Pos! w; P6 J& K+ D% R* v
  1563. STX PPU_Cur
    9 D2 N: X' c! z  L3 @: }) l3 Y
  1564. Clear_Track_Info_End
    2 E- q3 |- D/ m- i8 v9 i
  1565. RTS' i* @3 Z1 L' Q5 l2 V# M
  1566. Clear_Track_Info_End_Ex
    / Q1 O' b( r6 A/ H/ J
  1567. PLA+ |. b) Q* ]& n# ]) |' g; {9 s
  1568. RTS
    6 d0 H2 \1 M* s* V' [3 I+ B4 }3 T
  1569. / V" f' e! |1 n' r  ^5 s
  1570. Write_Track_Info! _7 c1 t& E( |" @2 m1 O" c
  1571. PHA
    7 T1 q* ^7 I1 I! j: `  w+ _
  1572. LDX <Music_Item_Cur4 s( A: l. f3 t& q! f
  1573. LDA Track_Name_Addr_Flag,X
    3 N* Y+ t) r8 ]; z! t
  1574. BEQ Write_Track_Info_End_Ex
    / Y  t3 G  \8 \1 x. |* R( {
  1575. PLA
    ) `' L# g, q  R9 N  R
  1576. $ ]( z; w, d- a+ G: c3 K
  1577. PHA
    + r2 k( U. c& ?
  1578. LDX PPU_Cur
    % H' g; F0 z0 U1 N4 ?4 ]: L
  1579. LDA #PPU_MODE_CNT_LINE/ }+ o- X! E+ c7 @, j) i9 ]$ i7 ?
  1580. STA PPU_Addr,X
    ' }9 V! c7 C6 u4 R: [
  1581. INX
    8 o7 A7 c$ e0 D
  1582. PLA
    7 k7 w/ D+ p8 h9 t" _% Q; i
  1583. JSR Show_Get_Track_Name_Center_Pos
    3 e0 ]9 H  _1 C: K% z$ ~3 F
  1584. Write_Track_Info_Data
    / k3 k/ @. i2 S
  1585. INY
    " N0 B0 W/ X0 T! Z
  1586. LDA [Data_L],Y( K: l+ b! e/ m/ X& S
  1587. STA PPU_Addr,X
    , _. _% T% u. s4 S. T  V
  1588. INX
    ( L, |: B* ~* S6 y, _. z/ D
  1589. DEC <Data_Cnt- D. M; i, e  M" W
  1590. BNE Write_Track_Info_Data2 p# v, J  d5 D# w
  1591. STX PPU_Cur
    1 A( G) b, L! J7 O5 U
  1592. Write_Track_Info_End
    9 ~& t7 ]7 k, O4 r% u) y
  1593. RTS
    - v, C6 Z9 K0 q& H# z8 Z
  1594. Write_Track_Info_End_Ex' y# Z- M6 b4 M$ Q+ S+ P* o4 H5 K
  1595. PLA  @2 s) L5 S1 q7 C( ~* I
  1596. RTS
    7 k* E' l. x2 p! d. U: A

  1597. 1 s0 H, m% u. }8 G7 W! r( i5 N
  1598. Show_Track_Info, Y: D; n, u1 l3 y3 H- D9 y- A
  1599. Show_Track_Info_Clear
    1 J/ w3 x1 U; S+ b
  1600. LDA <Music_Last! I1 D' B! C& S# F* a1 A
  1601. ' r5 s7 L4 X+ D  @& h3 @
  1602. JSR Clear_Track_Info
    ( m" Y8 ~- d2 J4 e

  1603. 4 g% D) c+ ]. @- {' a
  1604. LDX <Music_Item_Cur
    4 h5 ^+ W' ^' z  R
  1605. LDA <Music_Cur,X
    & r' K8 }6 F' k2 r! z* n# J
  1606. JSR Write_Track_Info
    1 S! n+ C  s1 C( _3 b9 D" e  m
  1607. RTS
    1 w3 ~( j7 b) N8 ~# p5 z- d
  1608. * `% J1 j3 v7 |/ t4 h" L
  1609. ;==============================
    0 c0 ^* J2 X7 ]* M, c3 E* w
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    0 U9 s% M+ }; D  \2 o) n
  1611. . c( g) y4 D: {; o4 R6 {: @) E
  1612. ;取出集合名索引* ~& P7 I4 J( Y8 U4 u4 ]' R
  1613. PHA
    " ~  c0 V! M) J# U- L

  1614. . }% M# w- f9 O8 @/ \- d
  1615. LDA <Music_Item_Cur
    9 O8 s" c9 B, n- Z
  1616. ASL A
    5 O0 a1 V! h; e* w1 V
  1617. TAY7 Q1 A& B5 i1 {6 e1 w
  1618. LDA Track_Name_Addr_Port,Y( y, t& m" ~4 A. F) L) g
  1619. PHA
    9 u) J8 Z3 [+ a: i9 O
  1620. INY2 F7 G  y7 a3 Z+ C8 |8 V
  1621. LDA Track_Name_Addr_Port,Y3 Y* g5 K6 W% k- S3 K& j" m; t
  1622. STA <Data_H
    + |5 o' e( y3 N' d: I9 ]/ F/ |1 N
  1623. PLA
    ; B- `/ ?. z* R6 Q
  1624. STA <Data_L6 R* `" R9 f$ ?( |

  1625. / [. M/ z% H" e( I/ m
  1626. PLA
    0 M3 v: v& m( E* B, a0 o
  1627. 6 H8 P, E& w+ ?: Z
  1628. ASL A
    ) U& S* J; e/ Y# a* x
  1629. TAY
    6 J" h3 p' c* p- J4 `- \: e
  1630. LDA [Data_L],Y
    7 N7 g, H4 Q  t! R0 W0 f7 F
  1631. PHA
    8 X( h) B" U$ v9 G  U9 Y
  1632. INY
    9 z0 `/ R5 s8 \
  1633. LDA [Data_L],Y
    # P. D$ p5 W; z8 u" y+ k
  1634. STA Data_H
    ' k0 W& y) c2 o. u" U4 s, }& J+ v' q: T
  1635. PLA+ w# n+ Z& G5 d. D4 j" R
  1636. STA Data_L
    & n$ r- ^5 [: s+ F; ?; n# U

  1637. + E6 y/ B6 D/ r
  1638. LDY #$00
    , |2 f7 ?7 }$ E) g! Z
  1639. LDA [Data_L],Y
    2 j, r' |8 r2 n7 v% J( Z
  1640. STA <Data_Cnt/ ^$ Q) o1 i9 S( k- D
  1641. LDA #$20" W. l8 _+ L% F. a! U
  1642. SEC
    ( A4 @% F7 U1 W8 {5 X
  1643. SBC <Data_Cnt
    6 z% i- _7 E; k$ o, d
  1644. LSR A
    ! M0 q! k* v# ]
  1645. STA <Data_Buf
    : Y+ C7 Z7 b% v! S
  1646. LDA #HIGH(Track_Name_Pos)) U# X; x, U4 A- Y' |7 c
  1647. STA PPU_Addr,X
    $ q1 ]9 e3 h- {
  1648. INX+ {) e. F6 G- R4 [3 E; A
  1649. LDA #LOW(Track_Name_Pos)
    ( t. ^! [4 U& a8 @
  1650. AND #$E0
    9 x  R% C/ @) l5 r, W4 S, w/ r7 R
  1651. CLC
    , _/ G* L" s  z* I+ v1 J: K
  1652. ADC <Data_Buf
    0 Z6 D3 m  z5 n. L/ q3 i
  1653. STA PPU_Addr,X0 z# o2 s* n! h0 p0 _
  1654. INX  @# d9 z4 u# d9 q; H9 D
  1655. LDA <Data_Cnt
    $ U" A- P' }; Y3 j7 m$ y
  1656. STA PPU_Addr,X, [% q$ y: c6 I$ @' C$ h
  1657. INX
      X  z& B+ z! w5 \
  1658. Show_Get_Pos_Center_End1 q2 T. Z* {( g9 P
  1659. RTS: v$ O* e* v6 s$ V! x# B6 l, d7 u
  1660. .ENDIF( z7 p, O- Q  d: ^. S+ {* I

  1661. % [2 p/ a0 X. H# J* U
  1662. ;==============================; j: q( j$ j; a  l& I
  1663. ;音乐端口清除
    + k6 Z; O) q5 J9 H9 b4 ~
  1664. Sound_Data_Clear
    * L6 i8 w, K  L* v/ C
  1665. JSR Sound_Port_Clear: \7 x, N! I% m  x
  1666. JSR Sound_Ram_Clear3 l$ |% y2 c; t/ |
  1667. RTS" r! b/ X1 a( _+ K' ^/ B
  1668. ; [) N* I) y0 I- x2 y
  1669. ;==============================
    , z" _7 N+ v. a2 H
  1670. ;音乐端口清除0 ~7 Z; p% p# u9 y
  1671. Sound_Port_Clear4 e% y- u8 m3 a6 [  G
  1672. LDA #$00
    9 g( y/ O) _( P* {6 L3 A
  1673. STA APU_STATUS
    $ o$ [( {5 o" L
  1674. LDX #$00
    ) n0 w! U+ A9 A5 Q$ y
  1675. Sound_Port_Clear_Write
    3 d1 M- g$ M1 Q  y2 c
  1676. STA $4000,X% q  D6 R: I6 p! s5 o1 I1 I6 v
  1677. INX
    : w0 O) @5 Y$ E$ ?/ d
  1678. CPX #$14
    & U2 h, J; z4 W8 N3 k
  1679. BCC Sound_Port_Clear_Write
    7 h5 P4 A/ J  j) h) ~
  1680. RTS! p" ~9 K/ O  i( t* `

  1681.   C  K- q1 k" H8 i8 A% c
  1682. ;==============================* u; m/ G% X. \* r4 Q! h2 m
  1683. Sound_Ram_Clear;RAM清除" k. V3 N4 [" I" V3 u( q
  1684. LDX #$00  v  E5 `8 A( F
  1685. LDA #$00
    " M; \- H: |5 c* a
  1686. Sound_Ram_Clear_1
    # f  G( L' q6 o# o8 p
  1687. STA Sound_Ram_Addr_1,X9 f" a& h! _9 s2 S
  1688. INX
    0 t* g7 F+ p$ Q$ B
  1689. CPX #Sound_Ram_Addr_1_Size1 Y4 e$ Y  g$ t3 D
  1690. BNE Sound_Ram_Clear_1
    ( r, {3 d  D6 S- ~
  1691. LDX #$003 o0 I2 Z" M2 d" z$ e' P0 j
  1692. Sound_Ram_Clear_2& b7 ?+ A# k6 G& a+ i3 U6 Q- N
  1693. STA Sound_Ram_Addr_2,X
    , W2 @5 i, s4 Z0 o' `9 Z
  1694. INX
    0 c9 p+ l4 M, p/ q. G
  1695. CPX #Sound_Ram_Addr_2_Size/ c8 Z0 c( o  N; K! m, \- w* d1 U
  1696. BNE Sound_Ram_Clear_2
    4 X  u" K7 w6 h" h% [# {6 z8 K
  1697. LDX #$00
    7 ^' [9 m( o0 C- w
  1698. Sound_Ram_Clear_3- \% G3 X2 _+ [- l+ w
  1699. STA Sound_Ram_Addr_3,X
    % C7 L* T- _/ v& \
  1700. INX
    . e8 B9 u& \5 U
  1701. CPX #Sound_Ram_Addr_3_Size9 A. v7 ?) N9 w2 e
  1702. BNE Sound_Ram_Clear_3
    0 S. I/ ?. a0 h" I
  1703. LDX #$00
    ! r1 [0 ]% X# V0 v  P' }: R
  1704. Sound_Ram_Clear_4
    & _4 f2 a: Y9 H4 g
  1705. STA Sound_Ram_Addr_4,X8 W: a: `9 |3 U% [' I' y" X9 b
  1706. INX" h% Z2 }4 y1 E- o
  1707. CPX #Sound_Ram_Addr_4_Size7 M. s1 U( F& c. D  Q' l! Z3 }' `1 M
  1708. BNE Sound_Ram_Clear_4# d5 o( c. ^+ I) ?
  1709. Sound_Ram_Clear_5
    6 K+ m! j% }: ~9 D/ z6 a" e5 s
  1710. STA Sound_Ram_Addr_5,X- B- s- V/ W, W6 `6 e
  1711. INX
    4 v' `8 K) \9 A3 l) U9 k$ W* J/ E
  1712. CPX #Sound_Ram_Addr_5_Size
    5 m  `( n5 Q; v; \& d6 a( u5 L
  1713. BNE Sound_Ram_Clear_52 N. M& j& A; Y  n5 L( I
  1714. RTS8 h: y0 G& Q' a: Q

  1715. ; ~/ x# U+ f) `; ~* L
  1716. Get_Music_Collection_Name$ [0 T7 i( r' E! v+ ?0 w/ c* e
  1717. PHA
    : w" C/ Z' i! g; c
  1718. LDA <Music_Item_Cur: o: r1 X/ ?0 P6 L" S8 I
  1719. ASL A# b/ r4 _0 j' x; Q6 E
  1720. TAY0 S$ J+ R$ n& N- ?! r# Z9 v8 `, [
  1721. LDA Music_Collection_Name,Y
    0 U8 `7 x& @) S1 h  P2 C  I
  1722. STA <Data_L
    / e  `5 M  G$ B) f
  1723. INY
    1 v" {" V# ]5 g- y
  1724. LDA Music_Collection_Name,Y
    0 X+ {) i+ [; L; d9 R0 e
  1725. STA <Data_H
    + Z9 e$ X% t# S4 R
  1726. PLA0 d5 n( K" ~/ e5 G
  1727. RTS* Q+ W( a( x0 q2 o1 h! Z

  1728. ' O& M9 l4 r6 F1 S
  1729. Set_Sound_Total4 O& ?8 I7 m0 ], W7 `
  1730. LDY <Music_Item_Cur
    6 ^7 C7 N  \1 y1 F
  1731. LDA Sound_Total_Port,Y1 t: \! s+ V# a0 c: o6 d
  1732. SEC$ ~: E1 r" d& n
  1733. SBC #$01
    , A; s- m* P* A; \8 O( {
  1734. STA <Music_Total7 J; s7 ]" x: f9 y9 }. B
  1735. RTS4 P5 c; F/ @7 B. K
  1736. ' f8 y3 Q$ z; ^% d
  1737. Get_Sound_Start* v7 |* f4 S# T; Z2 L) Y9 F- {1 s
  1738. LDY <Music_Item_Cur
    6 [( D% I% x' w( Z3 I! `, Y
  1739. LDA Sound_Start_Port,Y
    8 l9 V  g9 P* J/ Y1 g
  1740. RTS
    * L7 K; E$ _+ v
  1741. $ _' I, y! U5 v$ K4 s7 s, c
  1742. Set_Sound_Init_Port
    0 H( V, ~1 n$ C* |: v, i
  1743. PHA
    : a* G4 V. p# n4 v
  1744. LDA #$20% f+ D8 J# k- @2 d$ G$ r( c( E) w
  1745. STA <JSR_Addr_Op
    4 u3 _3 S! K0 Y5 G  B2 e- c7 E
  1746. LDA <Music_Item_Cur
    / l6 u  m! X+ |9 H5 }
  1747. ASL A3 D6 V  z+ J2 W4 Y
  1748. TAY
    % [1 {6 s+ K$ O0 g5 [
  1749. LDA Sound_Init_Port,Y0 Y2 `1 ]. R- H( E/ G
  1750. STA <JSR_Addr_L
    % ]+ Y, ~* I! Y# J
  1751. INY1 ?$ e6 S! J8 B6 F; c5 @6 a
  1752. LDA Sound_Init_Port,Y  B/ S! K- f8 `% b; b! e8 |
  1753. STA <JSR_Addr_H
    ! M6 D, p+ e% [! T* `" C) I
  1754. LDA #$60
    # F2 p3 P! s5 O# }% {% g4 o
  1755. STA <JSR_Addr_Rts
    / r2 [4 P% q# m7 a. ~
  1756. PLA( ^' z  l1 s4 y. Z/ G, Y2 m
  1757. RTS
    0 ?7 p  q+ @  l& m$ {  p

  1758. . a9 u/ I% `9 Q7 L
  1759. Set_Sound_Play_Port* X3 Q. k. ~, d8 ]) Q
  1760. PHA" `. `( K# i: z- d2 V. \6 C- w
  1761. LDA #$20
    0 [7 X0 a4 \" v7 w
  1762. STA <JSR_Addr_Op. p6 _2 P7 D) p5 ?' e& \" S
  1763. LDA <Music_Item_Cur
    8 B' O0 ^4 e3 m+ p% c2 W
  1764. ASL A9 H, [9 U# i! b1 @2 L- H
  1765. TAY
      t; k! }' u; B
  1766. LDA Sound_Play_Port,Y
    4 P/ Z2 s! A: D: k5 V/ M
  1767. STA <JSR_Addr_L
    / [3 Z& g# d9 ^* E3 m7 |& {, |
  1768. INY: G5 L: {' s( i/ ]
  1769. LDA Sound_Play_Port,Y' @  D  c( F9 T8 R5 a) q
  1770. STA <JSR_Addr_H$ B1 r+ N: ?' c/ y4 B3 {: \! D
  1771. LDA #$60& Q; W( M- ~6 p
  1772. STA <JSR_Addr_Rts
    ) Y+ {) h) f. \$ D  m  ^
  1773. PLA- J; O3 w5 Y. ~* a0 W" Q2 W1 X
  1774. RTS' ]/ h& Y' {! E" `

  1775. ' T9 G% y) C$ j/ }/ r$ U
  1776. Set_Sound_Reset_Port) q# T4 ]9 {* {: Y. v
  1777. PHA
    ' e& D: W5 g8 \* c
  1778. LDA #$20
    5 n( s1 |3 S' f
  1779. STA <JSR_Addr_Op
    & K9 O/ Q% }0 t( ]1 t  }
  1780. LDA <Music_Item_Cur
    . i: C+ n1 V* p$ i& r- Q
  1781. ASL A
    ; E) u1 ?! ^1 I' |$ a
  1782. TAY
    5 k5 w3 t1 a2 \5 j
  1783. LDA Sound_Reset_Port,Y1 O5 F4 j3 n! y9 U4 @0 |
  1784. STA <JSR_Addr_L* {7 T) V7 @" Q7 H
  1785. INY8 X5 S# I' W6 p: g- X
  1786. LDA Sound_Reset_Port,Y
    4 b3 M- t. k$ n; s3 \/ l8 v$ F* {$ k
  1787. STA <JSR_Addr_H6 A) l- n7 G9 o# _& h* h
  1788. LDA #$60
    $ A1 Q* \! a( h9 x
  1789. STA <JSR_Addr_Rts
    - v3 V( |8 `7 Q4 f: i
  1790. PLA. R: a+ ~9 M7 T
  1791. RTS
    $ P3 Z- H& c0 a/ Q( k7 S7 [9 Z
  1792. 3 j5 y* G4 ^4 T9 S
  1793. ;初始化音乐bank+ K0 R) u$ L" `4 i$ \* Q/ d
  1794. Init_Sound_Bank" _# z5 \6 \: d: L
  1795. LDY <Music_Item_Cur) F6 F0 [. U* m$ T! b- Z7 F
  1796. LDA Sound_Bank_8000,Y
    : i8 N; B/ n+ l9 }# F/ R
  1797. STA <Music_Bank_8000: |3 \' B0 g5 f+ O7 f
  1798. LDY <Music_Item_Cur  g5 L# N" S9 ]" R+ N
  1799. LDA Sound_Bank_A000,Y4 s6 z- e) [- n! E& T. B
  1800. STA <Music_Bank_A000
    - B9 Y8 G( g. v# r
  1801. RTS2 E- j5 N. @3 C! U) a
  1802. $ e) o3 A4 A  _+ M* h* ~* a
  1803. ;==================================================, X( y' _' {& R* j+ ^8 x
  1804. Sound_State_Reset;音乐状态重置. G7 c. H; W0 S3 g. Y* Y
  1805. JSR Music_Bar_ReSet        ;重置音乐条9 E9 T" \" D  C& n9 |" O
  1806. JSR Time_ReSet             ;重置播放时间
    $ h7 l- N9 Z+ Z" E6 ]

  1807. 7 @: E. t( |: u* o! T! W. r  \
  1808. LDA #$00. D. e0 @# d3 o. z/ Z) C2 q
  1809. STA <Music_Stop_State
    / `& P( s, W8 }2 k
  1810. JSR Music_State_Show       ;显示播放状态
    1 X$ ^8 Z- h( {$ e2 h  |4 T5 v: @8 N

  1811. , Y8 z+ \( n/ d0 |+ a/ K. n
  1812. .IF Track_Name_Pos
    ' x/ k( X3 O/ A9 u; N# l- q
  1813. JSR Show_Track_Info        ;音乐曲目名显示* h  g. a6 |% R5 n2 q2 O
  1814. .ENDIF* E. Y% x7 E' W* H! E/ `

  1815. 8 D0 C4 S! e) t6 O3 E
  1816. RTS0 I, O* x& d5 ~
  1817. # s" @) s. o0 Y' [0 c& N) M
  1818. ;==================================================
    8 G( _3 e1 _5 c9 ]1 ^- [' @
  1819. Sound_Init_Proc;音乐初始化处理; [0 I) W5 N9 V" @6 W& l
  1820. PHA( U" w, e. R" H7 W; K! Q
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    ! O. j* _$ d' m
  1822. LDA #$00
    ) b! c0 i/ y1 d4 X, @
  1823. STA <Scroll_H               ;重设水平滚动
    & u& r# g, I* N* i2 h
  1824. LDA #$0F  l5 v7 F7 [6 U! y
  1825. STA APU_STATUS7 \3 B( ?8 R  J6 z9 o+ Y
  1826. PLA
    2 ~# H/ _% G5 ~9 W; E8 d
  1827. JSR Sound_Init             ;音乐初始化7 Q7 ~/ F0 u* f9 }
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    1 {  N( d7 F% e
  1829. RTS
    ! T  [& ^7 q, _$ ?# i
  1830. 6 p0 c0 d5 a3 ]" u" o- \, t
  1831. ;==================================================) ~7 Q9 O3 S1 O+ ~
  1832. Sound_Play_Proc;音乐播放处理
    8 B' A/ c1 x0 G5 e8 S! k/ B! {: v
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    ( H! B4 N" z, i: ?7 P7 Z
  1834. JSR Sound_Play             ;音乐播放& _. ^' ]( X3 f, h% k# U
  1835. RTS5 k( U$ K/ Z; F0 l" s3 T, W9 B1 O

  1836. ; _, g& s$ [- f) b, J& y( B2 O8 R
  1837. ;==================================================$ E; Z; j: E- W9 n& }
  1838. Sound_Reset_Proc;音乐重置处理. `5 ?( A4 Y. W
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址3 g2 W3 ]* B7 k- G9 t6 X! q
  1840. LDA <JSR_Addr_L* o' L; P, }1 g: M% H
  1841. ORA <JSR_Addr_H
    . a) B0 Y- r8 u+ I0 |# Z
  1842. BEQ Sound_Reset_Proc_Default/ o3 J9 K  ~; j1 c5 q' a9 e
  1843. JSR Sound_Reset            ;执行音乐重置
    $ h7 _6 H, s7 I1 e* ]. U0 W& W9 T
  1844. JMP Sound_Reset_Proc_Init_Sound" `( @# }) |! J7 K- h

  1845. ! u0 u! ]  I3 [' p6 R
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    . ?! c  \$ O) }+ w( y, I" T
  1847. % ?# Q+ b/ U  {1 w' c' b0 A
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断$ A7 R3 Y# ]/ h( F( U1 F; H6 v
  1849. LDA #$00
    5 X2 ~2 u; Y2 d; U7 x/ w8 o: C
  1850. STA PPU_CTRL
    % I1 d7 n( ?; L- w

  1851. + J7 H/ [4 N" v% R$ s
  1852. JSR Sound_Data_Clear% w" S; h! d) R

  1853.   n6 p6 `9 g( X' D! S" b' d- @
  1854. Sound_Reset_Proc_Default_Wait. m6 ^! Q& h! y. r3 w
  1855. LDA PPU_STATUS8 s) X5 a7 h1 `7 u$ i+ x  d
  1856. BPL Sound_Reset_Proc_Default_Wait2 G+ v9 w! y8 n5 O3 I
  1857. % |. d7 B& G7 u" B
  1858. LDA #$00
    0 ]4 `+ y# p  n& _4 U
  1859. STA PPU_ADDRESS8 Y6 F/ L% u' ?/ z9 A  R
  1860. STA PPU_ADDRESS5 `- N5 B) H7 L; j3 j
  1861. STA PPU_SCROLL3 R4 e4 w1 {* h% Z7 H& |3 i1 l
  1862. STA PPU_SCROLL' W. L$ @/ v- X2 e! L
  1863. - d: p5 l: b; m" g
  1864. ;恢复PPU控制
    / [% O7 H# ?$ I; l" `
  1865. LDA Screen_Ctrl2 A& e+ v) T# b! v' {
  1866. STA PPU_CTRL7 O( {6 e* ~4 L+ Q6 ]8 X/ ]! s

  1867. ! o1 N" m3 R5 b9 a
  1868. Sound_Reset_Proc_Init_Sound. Y0 S" C) V" A: V( G& x& P2 R( n
  1869. LDA <Music_Stop_State9 u! P# }" c; P5 N
  1870. BNE Sound_Reset_Proc_End
    6 g& |% ~' i3 ]: T/ A/ l
  1871. LDX <Music_Item_Cur, Y+ a# p  }& O) a) }5 T0 Y
  1872. LDA <Music_Cur,X
    5 \+ G: k; l% o6 u6 o5 C2 @" U* `
  1873. JSR Sound_Init_Proc) D$ p' `6 L; o: W* ~: K
  1874. Sound_Reset_Proc_End2 H; ^$ B1 P1 Z
  1875. RTS
      p" t$ h" q, x+ }
  1876. 2 S1 [1 l. n2 d2 w# T$ Q
  1877. ;==================================================) [  i, D9 T9 y5 q
  1878. Clear_Item_Text;清除页项目
    " }! R9 B5 o4 J+ @9 A1 W( ]  H
  1879. LDX PPU_Cur
      q% r& s% E( b( s8 u3 R* _
  1880. LDA #PPU_MODE_CNT_CLEAR/ r3 Z% X& q$ E9 t0 C! J
  1881. STA PPU_Addr,X6 i4 |6 O! J" A5 u
  1882. INX; R  k& Q/ f0 q4 }, C+ D
  1883. . }9 N9 |- p; T3 w6 `. Z
  1884. LDA <Page_Last
    ' W- W/ J( v& Y8 z1 F7 I
  1885. SEC- I# J/ X7 }! Q/ y6 B0 J( g! C3 b
  1886. SBC <Page_Last_Index
    ' E* }. ~/ X3 C: v( X! `) ]4 L9 G
  1887. ASL A( c) m; S4 P7 d. V6 M: `

  1888. ( o" n. M7 b6 N5 `4 m
  1889. TAY: |9 ^2 }  F1 k, C4 R- D  }
  1890. LDA Item_Pos_Data,Y2 _1 E( A% A3 l( M5 a6 j
  1891. PHA/ \# H1 R: I( Y2 h2 E
  1892. INY7 S7 J% y* B0 M; Q
  1893. LDA Item_Pos_Data,Y5 X7 E9 m4 e- X+ ]$ a. J' m3 i8 v
  1894. STA PPU_Addr,X4 D7 D) k4 N0 s
  1895. INX/ `& s& p5 E) x& u6 W6 a) r& B
  1896. PLA3 R$ C7 `4 b3 ]- y
  1897. STA PPU_Addr,X* o7 [6 s' l( x  S
  1898. INX
    * ]2 p9 z6 X/ e$ y6 e5 E
  1899. ( i3 l* `4 @3 ~) v2 [/ ]
  1900. LDA <Page_Last- U' w0 W6 d; |: S3 h2 D
  1901. ASL A
    : o  t' x+ x  S; N, F9 h9 ~  e5 A0 u
  1902. TAY  R& d: W! j7 b, H5 V, m# ?
  1903. LDA Music_Collection_Name,Y, g/ {( y/ x1 p4 r# b  x; Z
  1904. STA <Data_L
    4 m3 E- U4 j4 w, f8 V: D
  1905. INY
    ! M/ G0 Z6 |6 o$ t# w7 l" f3 E
  1906. LDA Music_Collection_Name,Y6 b7 f+ X  x& ]& K* `( ^. [: p
  1907. STA <Data_H
    - A& n: X' Y, a; b: n

  1908. & J6 c8 |, C! N/ B2 E4 z' h
  1909. LDY #$008 `2 o& x% w% l% x5 T0 P0 K; u
  1910. LDA [Data_L],Y  C0 g$ ^. D: t+ R* n
  1911. STA PPU_Addr,X
    ' a' L! r8 R1 B$ Z7 c. [) N
  1912. INX
    , H& C9 O9 X. M7 x# A3 p: S. S* F
  1913. Clear_Item_Text_End: @5 P" C6 {- p/ {& n# k
  1914. STX PPU_Cur: a8 _- Q& a: p
  1915. RTS: m; H# ]9 @& d
  1916. 0 v; K7 N8 ~2 y% Z
  1917. ;==================================================
    9 G0 a5 @$ h' b6 W
  1918. Show_Item_Text;显示页项目6 O9 l5 I" Y8 v# `
  1919. LDX PPU_Cur/ @6 X2 q. N6 y
  1920. LDA #PPU_MODE_CNT_LINE
    + w: x) X* B7 {( ^4 Q2 h
  1921. STA PPU_Addr,X
    7 R" ]) t1 E4 C
  1922. INX
    3 B  {) Q. k+ I0 J" o/ O0 V
  1923. LDA Page_Cur
    ( m5 @, Z0 f; }* u) \$ f( u' V
  1924. SEC% Z, ?5 s: |. U4 l1 @  v* q
  1925. SBC <Page_Cur_Index
    5 a; y6 \" D/ x4 g4 x7 ~; o
  1926. ASL A
    3 p3 W1 V" [$ I, k6 I4 O& n
  1927. TAY
    0 t5 u& c: z2 t: h
  1928. LDA Item_Pos_Data,Y$ ?8 ]! v$ _/ O2 j$ R" E0 d
  1929. PHA& \  L6 P% Q9 _" f0 ^( |* r, S7 T
  1930. INY
    " ~8 t. w5 l! d4 k; W( e
  1931. LDA Item_Pos_Data,Y# V7 W" |5 h9 C  \% T
  1932. STA PPU_Addr,X
    # s9 f: H- g* q+ l& O
  1933. INX
    5 ?1 R% y+ Z( z  u: o
  1934. PLA
    & j- `$ N! ?4 }: b) q6 w% R
  1935. STA PPU_Addr,X6 D% N9 A" l' [8 G1 n* U; p
  1936. INX& o) X4 w. f: Z

  1937.   e  k  y8 k5 S6 z/ Z' ]
  1938. LDA Page_Cur, ~3 B2 `" Z% ^2 H1 L# B! G( y) G
  1939. ASL A
    / O( n3 i% k" [. K) g% h: U2 Z
  1940. TAY& S9 v& y; G! _: |) _7 q; f4 A& |
  1941. LDA Music_Collection_Name,Y0 Z0 Y9 c( n" o4 o( A7 I5 ~- n
  1942. STA <Data_L. l  N2 n" S% Y. ?! p/ Q
  1943. INY% V  h9 x9 B' G2 k: f7 R
  1944. LDA Music_Collection_Name,Y, R- Z  {4 w7 s8 k
  1945. STA <Data_H
    % J/ t" C5 R- J: w

  1946. # z5 q* G/ M  W! P9 h6 |' }) }' Q
  1947. LDY #$00
    , l, M+ N! ?3 v
  1948. LDA [Data_L],Y
    ) |$ p& p4 T; a6 o1 C- t( J' g
  1949. STA PPU_Addr,X1 r; B0 j- f2 M2 B" P4 i0 e
  1950. STA Data_Cnt
    ! I# h1 G+ P1 @( C0 D
  1951. INX
    8 e& A6 U( O1 }9 B8 e

  1952. $ b) y/ u4 E( ?/ j9 M
  1953. INY
    ) p5 v4 ^, y" D( ]2 B- _3 B
  1954. Show_Item_Text_Write$ @, l( n8 I3 J) o* n
  1955. LDA [Data_L],Y2 Z; g" n; x. Z/ v1 N( c' V' R# b( a
  1956. STA PPU_Addr,X, H" S+ e* x5 Y+ }- n
  1957. INY
    # I2 P5 n) y& m8 p: o0 j+ |4 z. w
  1958. INX
    + K& |1 S4 V+ L4 K- X
  1959. DEC Data_Cnt8 j& d& K" @6 q: @+ @
  1960. BNE Show_Item_Text_Write4 f: @) D5 j0 V: v6 e% T8 B3 D
  1961. 1 Y2 J  a, z! h6 B7 F
  1962. Show_Item_Text_End
    - o# S: @, ?# U: ~. s
  1963. STX PPU_Cur
    3 f( C3 }, S  N9 d% F
  1964. RTS& @7 Z7 U' n1 T

  1965. ( f0 ~" {; m, }
  1966. ;==================================================, G0 n) P# D( T0 [$ u9 z* v1 N
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    4 M8 W1 P" L% R- ]- A
  1968. STA <Data_Buf
    , C/ z( y6 k$ W% p; |- y
  1969. LDA #$00
    - j, B% ]# V/ {3 Z2 n, Q" y- a* a
  1970. Get_Page_Index_Calc' c( ]2 x2 B6 ~
  1971. CLC) Z4 q: L# x; x: {
  1972. ADC #PAGE_SIZE
    / D! H- `5 M# V% [& n3 |
  1973. CMP <Data_Buf
    ; O0 _+ z! j- `, ^, a9 P
  1974. BCC Get_Page_Index_Calc, B/ t7 O+ Q, _- Q9 h6 b
  1975. BEQ Get_Page_Index_Calc_End
    4 r" h& K$ A/ S. J2 T) ]" J# V, |
  1976. SEC( G/ b& D  X" J4 f' v6 L$ J
  1977. SBC #PAGE_SIZE  r; N3 q& q: m/ t) z9 ]/ |7 Z
  1978. Get_Page_Index_Calc_End
    ' p5 C" i1 }) s& q* W+ R
  1979. STA <Data_Buf( X1 }1 \4 l2 ~9 s
  1980. Get_Page_Index_Cnt. Q0 o9 @4 U2 c* k4 g1 a
  1981. LDA #PAGE_SIZE' j* ^8 _: l; y" j- t6 R* j% l
  1982. STA Data_Cnt( [3 ~2 h: @3 ]
  1983. ) q# L7 l( q: u; ^) A
  1984. LDA <Data_Buf
    7 }  N  {) K5 Z6 ?/ _( I
  1985. CLC% `# F" a/ ?/ |$ z
  1986. ADC #PAGE_SIZE
    9 a6 v( G2 G! a7 Y
  1987. CMP #ITEM_MAX_SIZE2 H( y9 |) H; q& L- Q; j  Z# f
  1988. BCC Get_Page_Index_Cnt_End
    , N0 A3 z' L4 T
  1989. 6 O0 J$ h( n; T: y2 C
  1990. LDA #ITEM_MAX_SIZE
    9 S2 W+ G% S+ D/ m$ ]9 n2 q  G
  1991. SEC+ B. _" A& T4 l: u6 e2 M; o$ j& @
  1992. SBC <Data_Buf" x" U+ J- g. e2 T# A" t9 T$ F
  1993. STA <Data_Cnt
    * r4 y# B& U2 H: n
  1994. 5 B3 c9 y0 [) e( z- D
  1995. Get_Page_Index_Cnt_End
    ' o% P4 i% ]* g# Y9 g* q+ E
  1996. RTS
    5 M' S; a0 _: _0 ?
  1997. % S) O$ ~& M9 B$ w9 {9 i
  1998. ;==================================================2 `6 L+ U, d# N9 M( I* F' z
  1999. Get_Last_Page_Start_Index
    ! [( z: V. [) ^7 P
  2000. LDA <Music_Item_Last
    8 }: m3 I' q& v4 d1 I  Y
  2001. JSR Get_Page_Start_Index
    ; O4 `' R* o" l  z# n% M* V* t# T, M4 k
  2002. LDA Data_Buf* E) ?1 H% h5 D
  2003. STA Page_Last4 V2 g7 t4 v% U' h3 ]. ]
  2004. STA Page_Last_Index+ ^& c8 {' W3 w
  2005. LDA Data_Cnt
    4 W5 z/ G# |) P: H' ?' A/ O
  2006. STA Page_Last_Cnt
    4 s" l1 O/ d# ?! d4 G
  2007. RTS3 G# l% v/ p* l, A

  2008.   n/ p6 Q+ E1 d
  2009. ;==================================================0 R. i6 Y7 b& t1 c0 y  B$ Q: E4 |
  2010. Get_Cur_Page_Start_Index
    6 Q- I5 q" W' Y1 ?
  2011. LDA <Music_Item_Cur
    ' w) |3 O: K+ T& D0 A8 h
  2012. JSR Get_Page_Start_Index
    ( `; u) w1 k1 L
  2013. LDA Data_Buf1 a, Q2 }. n5 A0 `( b( T( v
  2014. STA Page_Cur, ~: y  G. f2 q' Q  a3 A' z
  2015. STA Page_Cur_Index9 T1 o6 h1 |( U3 y+ S
  2016. LDA Data_Cnt
    ( {$ c' r( m6 C2 n
  2017. STA Page_Cur_Cnt
    $ b$ d4 _2 |2 ~' r
  2018. RTS
    , x  g4 q3 F, I% ^, M0 v

  2019. ' d+ w: P# Y+ S5 F+ B
  2020. ;==================================================
    . G. L% J/ \0 x! |+ R
  2021. Show_Page_Text;显示页文本
    , A" a3 n" r3 ]
  2022. LDA <Text_Disable_Flag4 ^3 A9 o9 k! ~( C/ J. {
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM; U9 D. ?' O; E  S' r
  2024. STA <Text_Disable_Flag! r6 `$ N$ j7 |7 B0 V1 W
  2025. ( ]2 ~) |* T7 c) |; U" e
  2026. JSR Get_Last_Page_Start_Index
    " r6 H2 }( j* p
  2027. JSR Get_Cur_Page_Start_Index
    5 D% n' ^. a4 S/ N% {2 U
  2028. 6 B/ Y$ w0 q$ f6 `* Q; g' L
  2029. Show_Page_Text_Set6 M5 n6 N& b" r1 q( p5 T" [- ~
  2030. " i! W. P' a" b. |
  2031. Clear_Page_Last_Item;清理上一页2 o) I6 I8 t1 r! ]7 u, C% B! S
  2032. LDA Page_Last_Cnt
    % u2 _$ S9 T* @  h/ T2 C, R
  2033. BEQ Clear_Page_Last_Item_End( E: A( D7 b% m
  2034. JSR Clear_Item_Text, F& X# q4 q  n; F/ o# P9 c
  2035. INC Page_Last
    6 R$ g% \% z" M, l* d8 `1 }
  2036. DEC Page_Last_Cnt2 I9 X8 W- q% a+ z) |$ c/ n
  2037. Clear_Page_Last_Item_End* X& ?1 l8 R* N9 ?

  2038. + a4 T$ p+ F* s
  2039. Show_Page_Cur_Item;显示当前页
    5 ?) y% m3 C$ s; a6 y/ u
  2040. LDA Page_Cur_Cnt
    : z% K  b4 L3 K; ], A8 w/ d9 X4 Z
  2041. BEQ Show_Page_Cur_Item_End
    0 P) D0 f) L; H
  2042. JSR Show_Item_Text
    ; H$ |, N* I1 `
  2043. INC Page_Cur
    1 T) X; i% ~) e3 k
  2044. DEC Page_Cur_Cnt) e# S. ]0 s4 a" n  r* U0 m: [1 e- o
  2045. Show_Page_Cur_Item_End- n2 M$ n6 r2 t

  2046. # p8 C0 d. W; o. P
  2047. INC <Time_Wait_Cnt! C# y7 P0 X9 @- Q1 b
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作" u" v0 F- x2 M& W& n! I4 c2 H
  2049. LDA <Time_Wait_Cnt6 X+ }/ E4 o! ]; K! t
  2050. BNE Show_Page_Text_Set_Wait. M# U3 z2 o, L: a" q% {& L% |5 U
  2051. / W- c* S1 s: V# X/ _
  2052. LDA Page_Last_Cnt
    " C" P* K+ [0 t
  2053. ORA Page_Cur_Cnt
    * Y( c0 O# O' w1 K+ W8 v! U
  2054. BNE Show_Page_Text_Set
    ! g5 k' _, w& A2 j' @
  2055. LDA <Text_Disable_Flag
    ( B: ?/ N3 I6 p! _4 S& G
  2056. AND #TEXT_DISABLE_ITEM ^ $FF+ n* w" s1 d4 j: A
  2057. STA <Text_Disable_Flag
    / B3 [4 U# k- f! O3 r6 s
  2058. RTS
    1 `' Z% k# g% @. Z# Q8 `' s

  2059. . d, G* h' U7 i1 ~4 r. W- u8 p; N
  2060. ;==================================================9 i" k+ A4 d* m' [6 s; K; o
  2061. Last_Item;上一项  r" A& R0 I3 q2 e# `/ S; n$ A
  2062. JSR Clear_Last_Track_Name& d6 N* d; S( s, G. g2 Q1 a& P
  2063. JSR Disable_Text_Draw
    / C0 B0 t& W$ r0 p) V( K4 T. d
  2064. 9 [; O! c( A& ]4 g6 x' J
  2065. LDA <Music_Item_Cur" T7 B2 A! ^& M- R1 e
  2066. STA <Music_Item_Last
    5 K' P( f& g4 ^  P9 n
  2067. 7 R/ E, z" e' y( ~+ D5 X
  2068. JSR Get_Last_Page_Start_Index
    / a% j- e8 I2 g% |, ~4 \

  2069. 0 H8 t3 ], y* C0 p) B6 j
  2070. LDA #$00
    & s! f7 o7 D, I- I5 s. r& f; t7 X4 Z
  2071. STA Data_Buf  V" n9 _3 u+ o3 |
  2072. : O- O/ ~5 L7 o& r3 k  T5 f8 q( t
  2073. LDA <Page_Last* c* X% g! L$ R0 x
  2074. CMP <Music_Item_Cur
    ! v8 ]" v5 X) P2 h* l
  2075. BNE Last_Item_Begin7 f2 R4 a* w$ O# x

  2076. 3 ]) _+ D- H6 B; Q6 O' v
  2077. LDA #$014 b8 n3 a) L% g! u# X* s1 U
  2078. STA Data_Buf# p3 A# @1 ^& b
  2079. Last_Item_Begin
    0 E  ~7 n8 v# y
  2080. LDA <Music_Item_Cur
    $ r  R* e5 j8 j% |/ P; {4 T. e
  2081. BNE Last_Item_Set
    : ?0 \7 W; t; @) g: V, O7 h
  2082. LDA #ITEM_MAX_INDEX + 1
    ! }6 n" C" X" X; K  Z# i6 S
  2083. STA <Music_Item_Cur
    9 i- s- k/ J8 Z6 K

  2084. " b! i! O* G: m6 c6 c
  2085. Last_Item_Set# C! d9 t% I3 a& w. B' v0 b: y  }
  2086. DEC <Music_Item_Cur
    * @* i- P  |1 [. {
  2087. LDA <Music_Item_Cur
    0 N& C: s& C4 v$ w( g
  2088. JSR Reset_Current_Music. m1 L& \. U# L1 c
  2089. 9 N: i. |# |' X, i2 P4 K
  2090. Last_Item_Play9 e1 S! G* U; e0 P9 a& h/ E9 W- x7 n/ F
  2091. LDA Data_Buf
    2 A8 |. D+ `) Y+ ]3 `
  2092. BEQ Last_Item_End6 D( y4 {7 Y. S
  2093. JSR Show_Page_Text% d! r3 b# j% d& J
  2094. Last_Item_End9 Q5 \1 D4 r! K$ ^' W6 d) @# ^, y
  2095. RTS
    6 }+ I) E* r6 F; ^/ N" p* h

  2096. 8 @0 }' w% p7 M' l; N$ `2 W# k
  2097. ;==================================================
    " X9 }9 ~. i& n- W; N, Z4 T  b
  2098. Next_Item;下一项2 u( a7 T4 T- p* E$ n, d; n5 Y* z
  2099. JSR Clear_Last_Track_Name
    ) j- w4 f$ }2 e" m' w9 u
  2100. JSR Disable_Text_Draw
    ; o  y+ O( @/ r! o2 \% h$ A+ h
  2101. , v; L" T$ F, j! V- s7 Z7 M
  2102. LDA <Music_Item_Cur; W5 n8 Y  ?, y3 ]  q
  2103. STA <Music_Item_Last
    # X9 D+ H% Y+ r& D
  2104. * D) Y" i+ ^& E; [
  2105. JSR Get_Last_Page_Start_Index  v9 N. f' h" v: z

  2106. # |) i, e7 s! n# D, g0 O
  2107. LDA #$00
    4 U  n6 C7 i: t' ^7 v8 A: ~
  2108. STA Data_Buf
    6 T! b) I' F9 F( a& e
  2109. ) I8 x% _. X9 p1 c/ Y/ s
  2110. LDA <Page_Last; G$ O6 i4 j# C
  2111. CLC5 W: Q6 m: k! P2 w' j  o" [
  2112. ADC <Page_Last_Cnt
    % j- l. e- ?6 g8 m0 f
  2113. SEC
    4 R) b' [1 d; D- H
  2114. SBC #$01
    ! S9 c$ `4 i" s& ?0 p
  2115. CMP <Music_Item_Cur
    - @7 A( F. i4 Y  c- z6 n
  2116. BNE Next_Item_Begin1 k/ G, L9 W: ]& p9 f
  2117. 1 z; A, a  M6 X& g# v
  2118. LDA #$019 ~* k3 s0 A% U; l$ a: B. _' b
  2119. STA Data_Buf' d% s5 A/ B/ K9 b. j  ^  C
  2120. Next_Item_Begin5 T) M$ F" \1 ]. g
  2121. LDA <Music_Item_Cur6 P2 B: A7 x( c
  2122. CMP #ITEM_MAX_INDEX
    9 }. j, f+ M+ L+ U1 V% L0 v
  2123. BCC Next_Item_Set
    0 i, M" J- s" F8 x' C, a  `
  2124. LDA #$FF
    " t' l: g" b1 h
  2125. STA <Music_Item_Cur
    % O2 {: e9 b9 ~) f/ a# p9 [
  2126. Next_Item_Set9 q) L1 u: e# m, p+ l
  2127. INC <Music_Item_Cur
    ! ^  |9 B/ q  z5 M( W3 a
  2128. LDA <Music_Item_Cur
    ) m5 p$ r  ]# d
  2129. LDA <Music_Item_Cur3 Z; p8 U1 l# y1 ^: ?4 @
  2130. JSR Reset_Current_Music
    6 @% d# K& M" a5 Q5 w
  2131. Next_Item_Play
    + ^& k& R  `3 Y7 @: L& E
  2132. LDA Data_Buf
    7 v% q7 s8 E6 ^) b7 t
  2133. BEQ Next_Item_End
    5 T. q. X- D1 Y5 e
  2134. JSR Show_Page_Text. |! h5 K/ _- `' S; v
  2135. Next_Item_End. R) `4 d9 Z  R# n% U, V) H0 f; K
  2136. RTS! B' N  v5 X7 l  U- {' |' P

  2137. 1 Z- l8 \' u8 |/ e5 X! R7 R
  2138. ;==================================================
    ; q  b8 z! b* d# v
  2139. Last_Page;上一页
    / S& X+ Z+ V9 [2 W
  2140. RTS
    - H" i2 S0 ~7 v2 p
  2141. - P# B# l4 x* @6 C. T. B
  2142. ;==================================================
    ) e* r3 w. s3 t! @
  2143. Next_Page;下一页& p2 C9 o3 ]6 N
  2144. LDA #PAGE_MAX_INDEX
    " N; m+ @1 k$ M; w# j, D- K
  2145. CMP #$01. B8 P+ q! M7 W
  2146. BEQ Next_Page_End9 k, l7 o/ F" V1 o4 ^1 R: t
  2147. ; d4 u+ f  X  A$ h2 F/ L; j- b  I0 h
  2148. LDA <Music_Item_Cur; [( F8 y: e- b& i
  2149. STA <Music_Item_Last/ K5 b' P9 h: d, }9 Z* f  E

  2150. $ s: |& I: A, z* C$ V2 r  _
  2151. JSR Get_Last_Page_Start_Index
      s0 h$ N8 |5 r

  2152. 1 T6 E) B9 H6 t
  2153. LDA <Page_Last_Index
    . f+ c6 R" H6 d4 s* X1 g
  2154. CMP #PAGE_MAX_INDEX/ B4 L6 G/ h8 w( b8 t) B& L
  2155. BCS Next_Page_In_End_Page. M$ ^( b- c9 ^" B& `
  2156. 6 E6 x4 ~' I* q, {
  2157. Next_Page_Not_End_Page;不是在最后一页
    + o! o- K7 r/ J) M4 M8 U8 m" p
  2158. LDA <Music_Item_Cur6 F8 ~9 H- I+ I( [# ~7 X8 h: P
  2159. CLC2 a3 Z$ ?/ E/ b7 P) q
  2160. ADC #PAGE_SIZE& W0 M5 k1 ?# ~- l- w  a( k: y" Z
  2161. CMP #ITEM_MAX_SIZE
    + ^) {- y$ p" _- H. Y
  2162. BCC Next_Page_Not_End_Page_Less
    ( {% W* K5 o. O# h
  2163. LDA <Music_Item_Cur' {' r+ B' ?( d6 g' \
  2164. SEC* L# b; s1 l- q6 G& L) ~/ i
  2165. SBC <Page_Last_Index
    : I, t- Q' P: o9 w0 a6 f2 y
  2166. CLC. a$ \3 A7 |: {" I3 h6 J' F4 U
  2167. ADC #PAGE_MAX_INDEX  b4 y$ D- c" M8 B
  2168. CMP #ITEM_MAX_SIZE0 E4 S4 ~! C5 _) B
  2169. BCC Next_Page_Not_End_Page_Less- y8 u2 k! J5 H: n5 Q
  2170. LDA #ITEM_MAX_INDEX
    6 m. q0 M" R/ H+ k6 q+ C! `
  2171. Next_Page_Not_End_Page_Less0 K% D- a. t8 V
  2172. STA <Music_Item_Cur9 W) {% d) c+ }7 K& i
  2173. JMP Next_Page_Reset, R' ^: }# P+ ?* Q4 g& w
  2174. - m. n6 d6 D& \/ N* y& O8 x/ @' C
  2175. Next_Page_In_End_Page;在最后一页9 a: i% M2 q- k
  2176. LDA <Music_Item_Cur
    $ a) I0 ~; p7 f$ U6 V1 _( N
  2177. SEC
    ) @8 d0 j0 e7 E; x* n1 l
  2178. SBC <Page_Last_Index
    0 ]8 X* d1 b+ k- N9 o
  2179. STA <Music_Item_Cur7 M& k; ?- v: Z3 S( \: q0 t

  2180. 0 M; g7 w2 T5 V9 [9 I" E' u7 K
  2181. Next_Page_Reset8 N  [* z0 P4 U; ^, L
  2182. LDA <Music_Item_Cur; U: z8 W8 x! i! S
  2183. JSR Reset_Current_Music
    - ~2 i0 a( P" `- t8 T. \
  2184. JSR Show_Page_Text0 o1 g; s3 i0 A- `- i9 y
  2185. Next_Page_End
    ) d, I/ J; \& x  |
  2186. RTS
    . Z$ x  B3 b! |& X5 n: a0 l

  2187. , U; V+ `' ~: s, y1 m
  2188. ;==================================================
    0 m4 O- {" \) e0 K' Y) h
  2189. Disable_Text_Draw;禁用音乐条刷新+ @. j* E% ?8 E8 U& q
  2190. LDA <Text_Disable_Flag
    ( J: k0 i9 o3 O. m/ A6 P
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME" i2 `9 p' U4 {
  2192. STA <Text_Disable_Flag$ Z, N( ~! w, h9 a4 ?
  2193. RTS
    6 D& u/ ~+ X2 P) I( d

  2194. : K" z& e8 m3 Q0 c0 G! M
  2195. ;==================================================8 ~# q% ?  l5 _* y, c
  2196. Clear_Last_Track_Name;清除上次曲目名
    - B; w% k! |7 l8 }7 A
  2197. LDX <Music_Item_Cur
    ) P5 f! ^7 |- d' X
  2198. LDA <Music_Cur,X4 |0 D7 N9 v$ z2 I9 w$ y
  2199. .IF Track_Name_Pos
    ! S9 ^- d/ \+ b' {$ i0 C' Q8 C" l
  2200. JSR Clear_Track_Info
    / _4 H4 Q, j# Z) W* y2 ^
  2201. .ENDIF( ^. \& m' T. |  w3 i
  2202. RTS3 v9 U: ~2 v0 m. Q+ B
  2203. 3 y" G" O* A8 K- o- \
  2204. ;==================================================
    ! V/ o# q7 V) n6 \0 \1 v
  2205. Reset_Current_Music;重设当前曲目7 O& s: E  A, c$ A/ G+ ~" g
  2206. ( d& T- s# u  x  H2 W( d1 J, O1 @
  2207. ;写入当前总曲目( p+ ?+ T8 c) X3 G* b6 E9 o
  2208. JSR Set_Sound_Total
    9 y) ]7 ~: }* N& V8 {9 x2 Q
  2209. LDX <Music_Item_Cur2 B( e* l" G" S* O
  2210. $ {# X  ?! x+ L4 D
  2211. LDA #$00+ t( X0 ~, n3 p/ Z
  2212. STA <Music_Last* e+ s" k2 ^3 e) }2 I" \8 _
  2213. 1 K1 |6 m5 t+ m+ M  p6 \/ A; c
  2214. JSR Sound_Reset_Proc
    / C! E" u( r- {
  2215. JSR Music_Show1 J8 e( i# m4 y' x+ Q; j8 M! r0 I
  2216. RTS
    # w  p  ]9 B4 S( g7 C+ f1 N; T
  2217. 2 e7 t8 E* R, i( o2 q, g( q
  2218. ;==================================================
    . K) m# J& y: \* q# q
  2219. Music_Song_Stop;音乐停止
    # j8 x- _' O% b; V
  2220. LDA #$01
    ) |# c# K, t$ N, D' w  l
  2221. STA <Music_Stop_State
    * F. z( L! ^! h  Z) v
  2222. JSR Music_Bar_ReSet1 ^  v& m% U# s& a, ]' \
  2223. JSR Time_ReSet0 C, |) \- Z! O$ e! e
  2224. JSR Sound_Data_Clear/ |1 R! L. H; n7 A8 p7 O2 y
  2225. JSR Music_State_Show5 M$ _9 M6 r: t& ~4 Z8 L" q/ b
  2226. RTS
    * _- ?. ]6 e1 O! z$ c: v  o. S

  2227. * ^9 y& H6 j; l2 W* s: K6 A: V6 J
  2228. ;==================================================
      E# p3 \+ {) h$ V
  2229. Music_Song_Play;音乐播放
    5 {. f9 d& j' y
  2230. LDA #$00
    6 s& O0 l- ]$ K# U
  2231. STA <Music_Stop_State
    2 ]& _0 {" O8 v4 i& A
  2232. LDX <Music_Item_Cur
    . ]* l: i. N2 Z
  2233. LDA <Music_Cur,X( j. e4 r" F3 g9 c) N
  2234. JSR Sound_Init_Proc
    $ I% p1 J# k; {8 e: {
  2235. RTS+ {" K* ?2 y5 k! o' E& w; u  _3 `
  2236. - D* b# r# ?# Q+ q3 H
  2237. ;==================================================
    6 F, d% l. Q* S! \  \/ ^
  2238. Music_Song_Last_10;上10曲
    + B+ U- ?7 C: V) I& p8 T
  2239. JSR Clear_Last_Track_Name  R* P: T, N! q! _* D4 K, j. q
  2240. JSR Disable_Text_Draw
    ' `% y7 _* Y4 \, R
  2241. LDX <Music_Item_Cur
    ( T9 o! Q( k' U+ |- x
  2242. JSR Set_Sound_Total" {6 B5 V) p% b- d, v+ @. y
  2243. LDA <Music_Cur,X7 W; p! b: P% d% G" V! r, C1 N$ Y. b
  2244. SEC% E9 j# b& G8 b) [* p4 X( k
  2245. SBC #10, p% N# z) V: J: X! B7 c
  2246. BCS Music_Song_Last_10_Set
    ; U6 J- E4 k# X/ K( U4 U
  2247. LDA #$00- ]# i. ^; j5 G# [5 u% ~
  2248. Music_Song_Last_10_Set7 ?6 ^) j3 H7 z8 _. _# K( v; {8 D
  2249. STA <Music_Cur,X9 a% f# `$ V! I( n2 d- u# }
  2250. JSR Sound_Reset_Proc
    : w6 p. \; x: r8 d; U; ]5 f+ S! q7 S
  2251. JSR Music_Show
    $ S( c5 |- x, b3 z& F
  2252. Music_Song_Last_10_End  `# z* M3 `* q* a* R
  2253. RTS
    / A1 v2 p5 k8 p( M5 D/ {

  2254. ; f- i0 R5 m/ A' ^$ N
  2255. ;==================================================
    , b, z+ c8 p- C- q' G
  2256. Music_Song_Next_10;下10曲) U/ y- Y+ s* u7 p( Z) X1 ^' b
  2257. JSR Clear_Last_Track_Name
    5 h$ p2 n* ^0 a' t
  2258. JSR Disable_Text_Draw
    : \% w3 `5 k( K& W6 b. k" L2 y
  2259. LDX <Music_Item_Cur
    4 V0 d; j% {# ?* Q/ ]6 Y. B& T
  2260. JSR Set_Sound_Total
    7 Q. @% s* J" h0 A2 `/ H
  2261. LDA <Music_Cur,X
    3 P) C7 l; ~0 t7 t( G; G
  2262. CLC+ J& B9 W" D% h0 l
  2263. ADC #10$ O  W% [+ \( c* t. V8 \+ x) ^
  2264. CMP Music_Total% N; E4 U* y9 f' L8 ]- @+ f
  2265. BCC Music_Song_Next_10_Set
    3 K7 f' V2 `. N% E2 A0 m
  2266. LDA Music_Total; Z2 H2 `5 b+ B2 z* @
  2267. Music_Song_Next_10_Set, D1 f5 X7 W. H  J( ~, a9 r
  2268. STA <Music_Cur,X
    . X3 c' l1 @6 g
  2269. JSR Sound_Reset_Proc/ V8 B% w: E( m$ z& M. l
  2270. JSR Music_Show. T; H7 p& t) u
  2271. Music_Song_Next_10_End7 \1 f% _) ?( s' v+ r
  2272. RTS
    1 g" Q5 H. P% W: w6 J. @% @' J' K6 v
  2273. ' j: d3 k3 ~/ H1 r
  2274. ;==================================================  ?+ u4 Z* n/ J3 G
  2275. Music_Song_Last;上一曲
    ! W) b$ y  b0 }7 R
  2276. JSR Clear_Last_Track_Name6 r: @4 j  i9 P+ R9 ~# T0 b" g: {3 n9 V
  2277. JSR Disable_Text_Draw: z% A5 C9 K7 ~9 T$ m
  2278. LDX <Music_Item_Cur. P: Y, r) q: q% w
  2279. JSR Set_Sound_Total; d, x2 c: L  H1 Q2 G, Z% _
  2280. LDA <Music_Cur,X
    7 `1 M' j/ d" n0 W. X, }8 M
  2281. BEQ Music_Song_Last_Set+ A; t3 ?2 Q& [: a8 ~" V8 {
  2282. DEC <Music_Cur,X
    ' F: ~: Z  n1 S/ }$ j  i- s8 P
  2283. Music_Song_Last_Set5 B. q9 w" `: Y/ m6 r% i
  2284. JSR Sound_Reset_Proc) @( ^8 \" X; e
  2285. JSR Music_Show
    0 u" j5 w3 I$ o6 c' a% x- e
  2286. Music_Song_Last_End
    4 x& N- r7 W7 g& j
  2287. RTS
    6 M& s3 i" U1 D% e2 m3 Q
  2288. 5 Q( N) h- `& l" R
  2289. ;==================================================$ D: b. M2 F  B) q9 h
  2290. Music_Song_Next;下一曲
    5 X- o& w: M, B, t+ \) l
  2291. JSR Clear_Last_Track_Name
    / x0 o% O* D+ W" ?  \1 V
  2292. JSR Disable_Text_Draw4 B( ~, y& F. e5 M5 [
  2293. LDX <Music_Item_Cur0 o/ b6 W2 V& O4 W. H0 e
  2294. JSR Set_Sound_Total! O& R+ d  r6 y/ V
  2295. LDA <Music_Cur,X
    0 P# w* J9 n2 u% E% m# B
  2296. CMP Music_Total
    + l8 w4 Y; N( k, a7 c
  2297. BCS Music_Song_Next_Set
    & g0 o2 z2 J  v) R9 p
  2298. INC <Music_Cur,X
    : C7 u5 _3 F0 N" ~
  2299. Music_Song_Next_Set( v8 O' l5 n/ m# V( ?% l# Z
  2300. JSR Sound_Reset_Proc0 n# o! ^/ W5 V8 H# A! ?9 M
  2301. JSR Music_Show2 N0 I; @( V1 t9 Z
  2302. Music_Song_Next_End
    0 Q' q, O1 ^( `4 ]+ }
  2303. RTS
    ' G/ D9 _8 q% x! k- t* Z
  2304. 9 l7 n) s. J$ w9 w( a% ~( D
  2305. ;==================================================
    + \, x/ e1 }7 N4 a  r
  2306. Change_Select_Item;改变当前选择项& W9 B4 b0 T( a$ W: U7 z. `' h. j
  2307. ;--------------------------------------------------
    ! j% X$ Q5 E" E# {0 V8 x
  2308. Change_Select_Stop_Play_Item;停止/播放' T" K" P5 K; @9 N  w
  2309. LDA <Key_Once
    " L2 _; `% o/ [, H  g
  2310. CMP #$101 e  T" L3 M9 C& x" A  [* `
  2311. BNE Change_Select_Last_Item9 X2 k( N+ g5 V& Y5 N
  2312. LDA <Music_Stop_State
    : y+ a: V" y; x7 }7 @
  2313. BNE Change_Select_Play- y/ J$ `$ W5 l! _% T+ J- b; G
  2314. JSR Music_Song_Stop
    4 R& ^: B7 L% X2 X/ j; k  x& i: ]
  2315. LDA <Music_Stop_State* i3 e( c( A  s
  2316. RTS) J, W' {5 n5 K! D, l$ M
  2317. 9 ^, L. k  A. `# N# g9 h# v
  2318. Change_Select_Play5 L) i, X3 F( \2 z4 C7 q9 \  o
  2319. JSR Music_Song_Play7 J  S7 `* u3 L- Q- I: p2 K, A
  2320. RTS
    ' R) r' J. J4 E' w2 ?
  2321. - F/ V0 J6 A1 G8 i4 v1 F
  2322. ;--------------------------------------------------
    " f9 r- A$ @6 }4 L* s2 ~/ a
  2323. Change_Select_Last_Item;上一个专辑  b0 F+ {  b! P; _+ m, t
  2324. LDA <Text_Disable_Flag
    8 i8 g0 a  {, P* `7 ^
  2325. AND #TEXT_DISABLE_ITEM$ H, [2 ]& M" \* a" U. S% Q
  2326. BNE Change_Select_Item_End5 M4 x3 @8 D2 d5 L3 x
  2327. LDA <Key_Once; N2 r0 z) \" H' u. Z- R0 V
  2328. CMP #$08
    ) ]' e  z% l# R2 ?$ Y4 f
  2329. BNE Change_Select_Next_Item* [+ n/ ?: T6 y8 z# C4 v
  2330. JSR Last_Item0 n. x& ~- ]+ S
  2331. ;--------------------------------------------------
    ' _3 }& C% e: r4 P' L
  2332. Change_Select_Next_Item;下一个专辑
    * _# ^# J8 L9 f  C
  2333. LDA <Key_Once
    0 ^% Y1 E: A: A7 |
  2334. CMP #$044 o- m) v( L, L0 o3 P8 [& D
  2335. BNE Change_Select_Last_10
    % x- t. F( k. \8 w6 U% k& x
  2336. JSR Next_Item5 j9 I5 `3 w! T; a+ v; B8 }! N; e
  2337. LDA <Music_Item_Cur8 R  Y, N% }3 @+ h- H
  2338. JSR Get_Page_Start_Index
    ( m4 Y* n8 I/ W  l3 q
  2339. ;--------------------------------------------------7 i# R# \& i$ W$ g" l8 u# m2 j
  2340. Change_Select_Last_10;前10曲  a  H; L& s* H
  2341. LDA <Key_Once
    : I0 x( W; O1 Y/ f4 k
  2342. CMP #$404 C" z1 i) G8 _# \3 a7 n1 }# l
  2343. BNE Change_Select_Next_10
    $ U0 c7 D' \' S( S
  2344. JSR Music_Song_Last_10( f+ i3 `8 q2 o" Q2 l5 n
  2345. ;--------------------------------------------------
    ' G4 m' }" ~% k  Z$ Z
  2346. Change_Select_Next_10;后10曲+ S  v' P" g, @) F
  2347. LDA <Key_Once/ f+ O; m! O" R1 K, O1 g
  2348. CMP #$80
    : }+ s) }& i3 j4 O/ J
  2349. BNE Change_Select_Last7 ~! K& h- \4 A9 X) P) n7 _* y3 M
  2350. JSR Music_Song_Next_10( H+ g' V: E3 k$ c
  2351. ;--------------------------------------------------
    + Z! g6 k- r( J0 }3 T. {
  2352. Change_Select_Last;上一曲) E  k; S/ z8 ^! T" z- L
  2353. LDA <Key_Once
    ; m3 E* ]+ A: E8 r* J  b2 L! P
  2354. CMP #$02
    ' |" b! {2 _7 I1 S- k' ?9 B
  2355. BNE Change_Select_Next
    # ~) g- A7 A7 R$ K( I* J
  2356. JSR Music_Song_Last
    " g$ R3 H1 w2 K" |* v* ?
  2357. ;--------------------------------------------------
    ! O# V* D- A5 i2 E
  2358. Change_Select_Next;下一曲+ }5 R1 u5 E+ @8 Z. g
  2359. LDA <Key_Once2 l4 i  C+ u0 X4 c, t
  2360. CMP #$01
    ; U% Z( q. P7 w4 s
  2361. BNE Change_Page_Next
    7 ^8 H6 W5 Z! r6 g
  2362. JSR Music_Song_Next5 c8 ]8 c/ f' W3 ]8 D, b2 d7 p4 U
  2363. ;--------------------------------------------------
    7 C' `" G4 Z/ a. v
  2364. Change_Page_Next;下一页
    ! F; e( ]! l3 a
  2365. LDA <Key_Once
    3 I7 G  p1 c$ ]6 V
  2366. CMP #$203 G+ R+ M. T( h8 z0 E' g
  2367. BNE Change_Select_Item_End
    + j  A% l- q0 @8 R" j
  2368. JSR Next_Page
    7 C8 H2 U7 \' c- d$ Y, |
  2369. ;--------------------------------------------------* ~6 f4 p& h# |1 V3 y3 {
  2370. Change_Select_Item_End0 r  l: u" @2 s7 r
  2371. RTS
    ' @- F! Y; A; ~. L$ b' v7 k  G! y) ^
  2372. 4 e. x4 w6 \: p! P+ Z) y( k! E: m7 ]
  2373. ;==================================================# Z. C+ \! Y( v) y; O: m5 ~
  2374. Show_Arrow;显示箭头光标- m/ ?9 S% \$ h7 E9 A( r
  2375. LDA <Music_Item_Cur$ k4 l8 C5 C+ `5 s0 i9 g. y
  2376. JSR Get_Page_Start_Index, v. d6 H8 m9 k8 N$ F
  2377. LDA #$00+ y5 U. N' U- r* a
  2378. STA PPU_OAM_ADDR
    - D9 B8 P# ^+ E+ f7 q3 q4 D1 `
  2379. LDA <Music_Item_Cur* |3 g: q/ J' v1 Z6 l2 P9 ?0 @( m
  2380. SEC
    2 Z9 s, E* E/ ]8 O5 l8 s
  2381. SBC <Data_Buf6 y" D9 D  e7 ~. P% }0 K) n+ |6 W) f
  2382. ASL A! ]1 t! Q1 e$ _) H$ ?- h, Q
  2383. ASL A
    * B; E& G4 Q5 N8 h
  2384. ASL A
    2 m. Z- _9 m# U, R5 g
  2385. ASL A4 r3 U6 V; Y7 w, F. l
  2386. CLC6 q5 k, M: I7 W" k3 e
  2387. ADC #ARROW_Y_OFFSET6 [" l0 ^0 C# E  Y  J
  2388. STA OAM_TEMP_ADDR + $00
    $ f0 P: L6 J0 O+ b
  2389. ;STA PPU_OAM_DATA7 m5 R/ ]# W9 `
  2390. LDA #$1F" B( b& c0 T9 C2 o& c2 E$ ?
  2391. STA OAM_TEMP_ADDR + $01
    ( g! Z4 w( u! `. h2 x3 V) a
  2392. ;STA PPU_OAM_DATA
    + [9 F5 ]6 U$ t  R- z8 {' Y" j
  2393. LDA #$00' I! [5 [. |3 y( O6 V$ v' c
  2394. STA OAM_TEMP_ADDR + $025 M1 |# \2 D- o9 A  [. c
  2395. ;STA PPU_OAM_DATA
    % E% I$ N3 b( ~& d% I9 X
  2396. LDA #ARROW_X_OFFSET
    ; f! Q! C3 h+ y+ @2 J- L: n  M
  2397. STA OAM_TEMP_ADDR + $03
    9 Z' T$ V9 @1 C' a  y$ }' B! ^
  2398. ;STA PPU_OAM_DATA
    % f9 \9 t: H; w  N( Y
  2399. RTS
    2 u; u7 D3 Z5 M
  2400. , Q5 C' V6 D7 j1 e1 b5 l
  2401. ;--------------------------------------------------  P8 A! V1 K: u9 o
  2402. ;命名表数据
    8 R; ^% S. c6 u; V+ S1 `9 _( ]
  2403. Palette_Attributes: d% P" K8 {3 i& Q1 x- ]2 K
  2404. .IF SOUND_BAR_SHOW_ENABLE
    : g& s' e( U; {) U" E' g
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    * u) H) q5 c3 A4 R% n; o# M! G# }
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    $ d+ j+ o5 S- E! }" p% t, K
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$753 R3 M& _  `# r  }2 g' ]0 {' n
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA# m, s" y" Z; i& h4 D/ X6 d
  2409. .ELSE
    & o. K1 A  @( q8 P* j- K' V
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$551 A8 m. u. X: q0 I( t0 i1 x7 w, A: N
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    / V; O# s+ U8 R2 T! k0 c
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    * d* b. X- O8 \  c1 k
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    $ t) I* y% ^' c2 a8 y4 K
  2414. .ENDIF
    / b& o& @' v8 u  i

  2415. 2 z2 F* P; N" k3 ^: a) U
  2416. ;--------------------------------------------------% e, d, d* k9 G1 K7 u( A$ h
  2417. ;调色板数据2 Z5 W  b& C4 b% d2 M5 @/ _
  2418. Palette_Data
    * ?& l- _& t& D+ l: }9 h
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F, @  q, w' b- F5 B: Y6 |  B
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    % h. k$ y+ s( d

  2421.   @9 }, J! o: z8 t& E
  2422. ;--------------------------------------------------
    * ^. P( `: I5 a& \, O$ x" g9 n& d5 D( G' J
  2423. Static_Text_Data* I) R0 k! _1 C) {$ Z
  2424. .WORD Static_Text_Caption_Data+ j1 L/ Y: C% }1 c
  2425. .WORD Static_Text_Author_Data* y2 }% h- s/ ^$ M
  2426. .WORD Static_Text_Date_Data
      s0 t& S3 W0 f0 h
  2427. Static_Text_Data_End
    ' c$ i' f5 Y5 R0 G" V, T

  2428. ) r- W& ~% R' ^' K
  2429. ;--------------------------------------------------
    5 w+ n6 P9 G( L9 X$ z" q
  2430. Static_Text_Pos
    ' y+ O9 `3 f& w3 a) L; j2 d+ i
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos), ^; b" i) P5 n4 u8 A6 c* {
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)5 e, O+ A$ g2 H) R* d8 [( ~0 z6 J
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)* l4 I. D+ ]1 `0 A) G/ T' W: G) |
  2434. Static_Text_Pos_End
    + q3 l9 p6 X" f2 R, J% R

  2435. ' e$ L$ T1 r0 s# y- ?
  2436. ;--------------------------------------------------7 p) V3 O% {* ?9 a" h
  2437. Music_State_Stop% y9 }3 G, h+ \/ ^/ N
  2438. .IF SOUND_BAR_SHOW_ENABLE
    / o: I! u4 h; Z( i! J: V1 U0 c. |# l
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00/ Y( F3 ^( ]6 v, ?
  2440. ELSE
    ' F0 H7 c# |$ C- n0 _4 I
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    : J. A' {9 Z; v" w  \: L
  2442. .ENDIF
    / D% C/ b6 A9 s# L  d  X4 K6 O
  2443. Music_State_Play4 D7 [7 L+ K0 @# c; i6 F5 v( }
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$001 M4 Z- @% v4 Q- K: D" W: k9 o* j

  2445. 5 m9 u8 I0 Z2 N" d  H& b7 F$ M
  2446. ;--------------------------------------------------/ J  Q1 z+ v; U" @+ x
  2447. Sound_Bar_Text_Data;声音类型文本
    3 y+ k0 d4 e  F; m* N6 d
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"; ~, |/ ^" \3 C: d
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-": y. f$ [$ W! r0 k& v; ^1 k
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"6 k& N* @$ D$ O/ B% s/ ^
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-") k* L- [; W4 M' e" G2 a* |1 g
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$007 ~/ b2 i! s9 w* _3 v

  2453. - Q0 `; @# P8 {
  2454. .IF Track_Name_Pos
    4 E7 {, V/ I% `6 t1 K, k

  2455.   a$ A# Z+ U% Q5 U# D2 t
  2456. ;--------------------------------------------------! V) a. Y& `7 e
  2457. Track_Name_Addr_00;曲目名地址索引
    % @+ K0 k7 N5 a3 d7 G
  2458. .WORD Trackr_00_019 S1 [( j0 V! _& @! L  _
  2459. * M- B4 M, e, V- q9 Y; ^" T
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    ) K6 z0 x/ d$ I2 s7 U
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    2 K- M& ?2 c+ [( `& n4 _& H$ D7 o
  2462. + v, n# T, ~) ]; j: O' W9 A
  2463. ;--------------------------------------------------7 `& d8 \$ N' O4 `4 u: v
  2464. Track_Name_Addr_01;曲目名地址索引
    / i1 Q2 ?, A9 n2 B
  2465. .WORD Trackr_01_01& P7 l1 s2 L# ?: E

  2466. ! k) B7 K- V# j# d
  2467. ;==================================================
    ) C+ l2 R3 F$ b4 d* E
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    . y0 `' s. ]4 a& c0 T' N) L: X
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    3 Z+ P# c3 x5 ?! \
  2470. ! K" t* o+ C6 P8 X: w# t0 H' |
  2471. ;==================================================
    + P- d5 d7 u* h1 m
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引( ~* T( L5 y; e7 p2 }  j5 u" u
  2473. .WORD Track_Name_Addr_009 o8 G( x' |/ P
  2474. .WORD Track_Name_Addr_01
    : t0 B1 ^6 D: d  Q
  2475. .WORD Track_Name_Addr_01
    : h# ~* R' _/ F0 o0 s& M
  2476. % r5 y( ~- b2 S& U
  2477. .ENDIF+ t+ H6 s6 M' O2 R+ \0 [  p
  2478. - E; Y3 M1 R0 a3 R3 g, [, E
  2479. ;--------------------------------------------------
    ! d' o2 V% [( P2 }$ L% j' R
  2480. Static_Text_Caption_Data;静态文本数据
    9 @" O% T' c4 x" c" S, K
  2481. .DB 16
    , Z1 D. _( o, Q
  2482. .DB "FC MUSIC 12 IN 1"
    9 a/ U2 A. `! S+ G+ ?
  2483. Static_Text_Author_Data
    ) `( `, s5 w- T' d3 }% H
  2484. .DB 259 w7 h# x' ?$ J7 r7 d( e
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    - Z: W) a8 |- j* p* s0 j1 O: Q
  2486. Static_Text_Date_Data
    - s% U3 S0 M3 D3 Y6 r; \) a; d$ {
  2487. .DB 104 U8 R6 [; o$ U; W
  2488. .DB "2023.07.23"" \- z1 h! j. b# ~/ T4 g

  2489. 9 I( [! x9 Z, v% {
  2490. ;==================================================
    5 [& i3 a+ i* f- T) U. j) a; T$ N
  2491. Music_Collection_Name               ;专辑名间接索引
    ) h$ C) {3 \$ \3 A" L
  2492. .DW Music_Collection_Name_000 x' B' D$ u6 A5 W0 }& g0 H2 t6 o  W: t
  2493. .DW Music_Collection_Name_01, o0 K% Z9 h5 Q* A  m( o# g
  2494. .DW Music_Collection_Name_02
    0 E: U3 p1 P4 w" \/ [
  2495. .DW Music_Collection_Name_03
    8 E7 C2 X$ v. i0 a* o6 n0 }( M
  2496. .DW Music_Collection_Name_048 N( _+ w8 L! i( G  D
  2497. .DW Music_Collection_Name_05
    8 Q" m6 f1 C' q" s/ K
  2498. .DW Music_Collection_Name_06
    + w) b% J1 c1 o0 Z# b
  2499. .DW Music_Collection_Name_07
    * v8 y9 J2 g. x; D: z4 B& M$ E
  2500. .DW Music_Collection_Name_08
    & X7 k/ w  k2 G3 h4 E
  2501. .DW Music_Collection_Name_092 ^& ], D5 J4 b6 P) E
  2502. .DW Music_Collection_Name_10* _! u5 t! {/ ]0 s* w" T) u+ ?
  2503. .DW Music_Collection_Name_11( p# g  N" h8 L/ Y1 n. r7 S

  2504. ( @* h7 T, T% V5 m6 x
  2505. ;==================================================% l' x6 \% Z- {. L) v
  2506. Music_Collection_Name_00            ;专辑名文本数据
    5 O; b1 i% n8 Y+ z( P
  2507. .DB 11,"1.RAF WORLD"
    9 }& m6 t0 a% `; ^
  2508. Music_Collection_Name_01, T9 e+ N9 p" }% G6 n
  2509. .DB 15,"2.FINAL MISSION"
    ; ^$ Z  L& T' \* j1 u$ l) V: \( ^1 E
  2510. Music_Collection_Name_02
    * s! i' u: F$ B  [& F1 U+ P5 u, j
  2511. .DB 06,"3.KAGE"0 |% A4 G5 S4 f0 y% w
  2512. Music_Collection_Name_03
    + r+ u  I0 H% C
  2513. .DB 16,"4.DOUBLE DRAGON"
    4 W" r! S, u* D9 n& A
  2514. Music_Collection_Name_04
    - \7 h7 ?6 w* M8 T6 o
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    + S  ~& V4 S3 n9 R; j& y3 z
  2516. Music_Collection_Name_05) _- Y8 N+ Y7 ~; D5 R
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    7 Z! m2 I/ |: f0 T: E/ I
  2518. Music_Collection_Name_06
    * G4 P1 r/ O  b5 g0 g, x6 c  f! m
  2519. .DB 09,"7.ROCKMAN"
    9 P1 }# ~* b' y4 K4 C
  2520. Music_Collection_Name_07
    7 u: H( L* u9 {6 R) J. T/ e
  2521. .DB 12,"8.ROCKMAN 2"
    1 o& E4 ^" I, {, C' ], }
  2522. Music_Collection_Name_08
    4 ~! x3 l+ H6 T
  2523. .DB 12,"9.ROCKMAN 3"; ^, k: d0 [% h" K! K0 k% S7 l
  2524. Music_Collection_Name_09
    2 u: q% X, ^# o% q
  2525. .DB 12,"10.ROCKMAN 4"
    % o! C/ ~$ {1 p- D' ?6 l
  2526. Music_Collection_Name_10
    2 g# f) Y/ {( i
  2527. .DB 12,"11.ROCKMAN 5"1 G& z: r. s& B% y
  2528. Music_Collection_Name_119 j  c+ _: y- {& [5 ?1 t, e5 M' B' d
  2529. .DB 12,"12.ROCKMAN 6"
    9 K2 F5 ^% T. h: y" Y- T  c

  2530. " Q% t0 V- l, M1 }! c3 F
  2531. ;==================================================( G: c; o! U6 }" |" B% Q& o
  2532. Track_Name_Addr_Flag                ;显示曲目名标记/ e9 \9 ^4 m, ?' |3 J" l
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,07 L7 m: m( a* w/ K- q$ ~# k
  2534. + z0 d, R4 l% ~& [7 V
  2535. ;==================================================, X- {) k  S/ ^$ X/ Z
  2536. Item_Pos_Data                         ;光标箭头位置
    3 \$ L7 E/ o) t% j
  2537. .WORD ITEM_SHOW_POS3 L# u' g7 H/ G, K
  2538. .WORD ITEM_SHOW_POS + $0040( i$ U7 d- C; Y& s' ~0 r& C
  2539. .WORD ITEM_SHOW_POS + $0080
    + e6 Y- Q* V& z; e. f
  2540. .WORD ITEM_SHOW_POS + $00C04 W7 ]5 X( w1 L) `2 W8 j( `& a+ Y
  2541. .WORD ITEM_SHOW_POS + $0100
    $ W9 h; Y) T. e8 c' o: b
  2542. .WORD ITEM_SHOW_POS + $0140% X% G5 v6 k+ D% ]# P
  2543. 5 v8 \, Z, |5 d; \! l
  2544. ;==================================================5 v8 e  I/ i: a7 ?) y
  2545. Sound_Init_Port                 ;音乐初始化入口地址7 ^; K" i* {; a7 D: {; S
  2546. .DW $BFC89 g8 X2 n, C  z5 H7 g7 P8 S: z
  2547. .DW $D7F01 n" h5 z6 P2 g, V
  2548. .DW $9FC04 U7 L4 ~: {' N' }# g/ z& u
  2549. .DW $BF70
    ) u7 J5 k& o2 f! p9 Q4 U
  2550. .DW $8003
    5 n* q" @. Q5 v: x  C
  2551. .DW $BF30
    7 b# K) ]+ x; U4 L# V2 U0 b
  2552. .DW $9003
    4 b" f. j& h: B, g
  2553. .DW $8003
    6 f9 I& _  Z1 t! h/ W
  2554. .DW $8003& N3 L8 E3 T5 D3 }* M# _
  2555. .DW $8003
    & E  x7 s* ~* a6 {, V9 U, c
  2556. .DW $8003
    ; w  }: o6 F0 W" Z* j0 c) S* e
  2557. .DW $8003; C9 d7 T7 V6 I3 K. _

  2558. 5 q2 I7 @, U: B; w4 z: l0 H4 j
  2559. ;==================================================
    8 [" X4 o- \7 n* ]( T" }2 t  i5 o$ Z+ M
  2560. Sound_Play_Port                   ;音乐播放入口地址% P$ b8 V/ @1 z+ d* Q* w; G
  2561. .DW $8000' H( H2 }8 s, _" x9 V; G# Y
  2562. .DW $8001
    % ^- ?; z$ u% i3 ]% W! |
  2563. .DW $A000
    % v/ C( P5 @+ Q2 b: V' ]7 T4 `
  2564. .DW $80036 ~; t4 Z& e5 M
  2565. .DW $8000
    6 S5 p9 ], \, s! ?9 B' K. F/ Y1 q( p
  2566. .DW $8003
    9 L% y: F5 {2 l& B1 [* l; k. b. B
  2567. .DW $9000' h. r' K9 ~/ b! L
  2568. .DW $8000' F5 I5 W7 t. ]+ }3 }
  2569. .DW $8000
    : c/ @4 w. P' ~& I2 J
  2570. .DW $8000
    % ^6 p$ R! k4 @9 l4 _
  2571. .DW $8000( q. L/ v2 f/ z1 C- o9 z9 Q
  2572. .DW $8000
    9 {7 f9 W, G( q3 s, w& T' \$ W
  2573. 8 H5 I3 c& c; F
  2574. ;==================================================
    0 h" c9 N0 Y# W/ U2 c
  2575. Sound_Reset_Port                  ;音乐重置入口地址+ y% L0 r! A2 `5 b; M
  2576. .DW $0000$ ~1 \) f1 n0 Z: A& F
  2577. .DW $00005 U' W0 Y" z) X) C% j" w5 I0 G3 z
  2578. .DW $0000
    ) ]  R$ E8 I9 ^$ U8 o% l$ J
  2579. .DW $0000* a* r: t0 T8 Q4 z6 |7 j. `& A
  2580. .DW $0000
    $ @6 B5 I2 B7 p' O9 S7 l
  2581. .DW $0000& x' I* |; K0 y
  2582. .DW $00008 S" o7 ~4 ]& _1 A& _
  2583. .DW $00006 p1 L* k. K- @5 ^3 O  H, T; x
  2584. .DW $0000
    ; a# ^. X( x' ~
  2585. .DW $0000
    # l" q" e, B* T4 r7 A
  2586. .DW $00000 Y) D$ J; H1 k+ X" L  O1 _
  2587. .DW $0000) M4 W% q& C) R8 ]) C( ~. X
  2588. 3 \' k: o. K* f. `6 b! O" |  B4 }3 p5 o
  2589. ;==================================================
    ! M' v: U3 H) O
  2590. Sound_Total_Port                          ;曲目总数5 g/ b: I7 s) ?( a& \6 u
  2591. .DB 38& M, P5 v4 |" l' ~; V% r& t" w
  2592. .DB 33* M& G$ P8 l1 x/ T2 h+ x
  2593. .DB 49
    % k2 t( v' X- G  b& g
  2594. .DB 41" p- E2 @* Y! l
  2595. .DB 83, X; U" D% i# ]/ f& Z/ }  I
  2596. .DB 70( x4 @' S+ i/ k+ j) v, @# ~- Q/ D& m7 x
  2597. .DB 500 [. N, h& N# R. i  l: C
  2598. .DB 67
    . Y" F7 _- E" y6 y
  2599. .DB 57
    ; F! x6 |9 K7 A! K
  2600. .DB 71
      Q- `! y0 L1 F: J3 A* I
  2601. .DB 765 t. y" A/ q$ n/ U' g" W
  2602. .DB 1024 H" B8 d+ L% }" G. Q

  2603. ( M6 N  l, k. V# e
  2604. ;==================================================
    . T3 f( C7 D+ m1 h$ ^
  2605. Sound_Start_Port                      ;起始播放曲目
    , t9 O$ J- d0 Q1 E. F
  2606. .DB 00
    ; a6 s: g- ^2 @/ @
  2607. .DB 00; t2 |* u  \: h; l
  2608. .DB 00. r4 e, E3 ^$ F+ m+ {
  2609. .DB 00  d  {' O/ Q6 C7 ^
  2610. .DB 00  m: [' h% f: f: k2 _0 C* T( c
  2611. .DB 00
    . _$ R) R0 |. d2 |2 P# c. t) \
  2612. .DB 006 y9 j! R& H- M. x2 [
  2613. .DB 00; Q( r) k& w8 V& J( C
  2614. .DB 00
    * ]3 X3 E/ l, V' T$ ]# A: C- o' E1 h
  2615. .DB 00' l0 ^% f2 d7 P& U
  2616. .DB 00
    4 H: {5 @5 }, g$ e/ o# ?
  2617. .DB 00! k9 T, ~+ V! N3 T# J( ]

  2618. $ e0 H: a1 C0 Y* n, q9 X' o9 t1 V
  2619. ;==================================================* s, S2 V! m) Q" ?) s( i
  2620. Sound_Bank_8000                      ;专辑bank_80004 i3 g( F, o) q9 m
  2621. .DB $10  L# B4 p% `) N5 Q
  2622. .DB $12" `7 m! q  n- u' k8 \
  2623. .DB $14
    # L# g1 [8 F+ s- L5 Q7 d
  2624. .DB $16
      ?5 A& d$ O; Z% L) O4 N
  2625. .DB $18+ B$ O. b1 o7 k% [0 M) s
  2626. .DB $1A2 i- E' Z6 v7 x5 E
  2627. ' Q% ?% D* c' A4 q9 ~% r
  2628. .DB $003 x2 I/ b# p8 f& ]; ]( ^  u$ ]
  2629. .DB $02
    8 w9 G( Q& F; i1 K6 a$ o/ }5 a
  2630. .DB $0D: S. M; a7 q3 v  y7 y4 q5 {
  2631. .DB $04+ ]3 v8 o9 j+ ^
  2632. .DB $07
    * D% {% k! I& K# O2 ^
  2633. .DB $0A1 c8 y: P1 ~2 H2 v; U% C$ A. O
  2634. ; w6 P: m$ u  t; m' _

  2635. * e, E' x2 \/ H/ b
  2636. ;==================================================
    1 ?2 S0 f7 g* w: R5 u+ F2 Y3 Z4 m
  2637. Sound_Bank_A000                      ;专辑bank_A000
    6 I# T( o4 r, `7 w0 b; ]& y3 u) }! r
  2638. .DB $11" v8 F* ~3 w( m, [, O1 X+ H
  2639. .DB $13* T1 l9 X) p$ t
  2640. .DB $15+ ]& G4 u; `* B' [
  2641. .DB $17
    % J3 f* L3 U5 l8 O/ f4 f0 o# a
  2642. .DB $19
    , p% n0 C1 V* R7 c  Z# M* D
  2643. .DB $1B: q0 ?7 y5 U; v8 ~
  2644. " |4 l* B- \# L/ U- T
  2645. .DB $01+ _6 O$ }% t4 Z5 v# e
  2646. .DB $03
    6 C4 q" m4 o  O5 g" Z5 F
  2647. .DB $0E
    % I# o9 H+ q  o( `' f  B, p# x9 m
  2648. .DB $05
    3 B9 }, u" o& \/ P: l6 B
  2649. .DB $08
    ) @( w, [# f8 @
  2650. .DB $0B3 N9 P" E! L( w2 v2 Z
  2651. : c  z* ?/ V8 C" y9 i* P1 o3 D
  2652. " ?+ R7 a1 C* G+ B* i" ?- u
  2653. ;==================================================
    ' f0 p- t3 Y5 o3 S
  2654. .BANK RESET_BANK & BANK_DATA_MASK! C' X/ ~8 `" L9 Q4 b0 E
  2655. .ORG RESET_ADDR
    7 X! S2 z/ L* Y. [( |

  2656. " u1 T& U) n; b8 R+ x) z7 R* k6 Q+ ]1 n
  2657. ;==================================================
    4 n4 ]; @3 Z1 N
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    $ t0 P% e- q+ ~3 m1 r2 p
  2659. PHA$ \: `+ u1 u( N2 T+ {2 z
  2660. LDA #$06
    $ M8 R1 P  G8 ~: W' S  g2 p
  2661. STA MMC3_BANK_CTRL% U' ~: ^9 F$ Z
  2662. PLA2 E6 b1 Q0 b0 z- I2 c
  2663. STA MMC3_BANK_DATA( r+ W: u' W2 z& T0 A% y/ Z
  2664. RTS
    ! d8 g  k# x& m- V
  2665. % x% y3 S! J; O7 n
  2666. ;==================================================7 ]* U7 ?- S  `% B# @
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    5 x3 |3 C8 v3 C; [
  2668. PHA3 e- ?1 ~) P; J$ Q/ _! R
  2669. LDA #$074 a9 u$ r" E9 p0 a% O
  2670. STA MMC3_BANK_CTRL
    / }( z* d& a% _( B. {; @
  2671. PLA
    ; y  a1 h5 G3 _* E" \0 c. G3 z- r
  2672. STA MMC3_BANK_DATA
    ; a5 }4 F9 G* U' ?/ {0 R4 Z7 _
  2673. RTS
    5 v% C/ M8 m# n
  2674. 1 W2 d# a5 ]6 |* |2 k# g1 b5 |
  2675. ;==================================================( L" F" U  l! _  g
  2676. Switch_Main_Bank;切到主程序bank
    " b8 O5 h7 M% T; m$ h- l7 C
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK) {# |8 z2 U, N% Z+ [8 b
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    $ B4 Z; w9 a1 A4 ^: M" G
  2679. RTS6 U9 {3 J) E- v
  2680. 3 l: f0 x& e% {2 R4 j0 z
  2681. ;==================================================. \' P* i+ M9 j" S7 a$ l8 G' ?7 d3 Z
  2682. Sound_Reset;音乐重设(如果有的话)$ Q( F5 q7 g) C; P- @7 I) i
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    2 u0 [% R/ _3 z# E
  2684. JSR JSR_Addr_Op        ;执行音乐重置- A: U$ e. \: E7 {0 T8 K7 S
  2685. JSR Switch_Main_Bank   ;切回主程序% }0 H/ p2 m% D* H& B1 r% A
  2686. RTS
    / B7 k5 D# i6 ~) l4 U
  2687. + A2 O9 G6 {: X( {7 b
  2688. ;==================================================
    0 M! l" y) l" D& {
  2689. Switch_Music_Bank;切换音乐bank: `0 G1 O1 l9 I
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    , A+ H, F. R, J+ t
  2691. LDA <Music_Bank_8000
    * l; ?. w" K4 D
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank# x* Q$ v. ~' m
  2693. LDA <Music_Bank_A000
    + N) v* w3 h6 M
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank1 R' w7 ]3 c$ {& Y% N, i0 Y8 X! r
  2695. RTS6 P7 E2 W4 a7 L+ U7 l

  2696. ( V; H$ l! E7 K* ^0 {( t
  2697. ;==================================================; x" E' E- {6 C2 B
  2698. Sound_Init;音乐初始化
    % ?% M  g% d* Z
  2699. PHA
    4 I5 F4 f3 u7 q$ v$ z$ w
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    9 t7 F& \0 M6 Q- a5 k
  2701. PLA4 R8 y/ J  F+ Y2 ]' o4 i, [' U
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    " p" O4 O& y% h* ^. f
  2703. JSR Switch_Main_Bank   ;切回主程序4 j- b1 [0 ^) V# {
  2704. RTS. ?2 P* i# R6 d, K" |+ L: c3 L
  2705. . u# a! v0 {. a: r
  2706. ;==================================================' m  n4 o/ D# B
  2707. Sound_Play;音乐播放+ _8 Y, ]+ D$ @# ^- l' J
  2708. JSR Switch_Music_Bank  ;切换到音乐bank. `1 E, w  o$ Q) O
  2709. JSR JSR_Addr_Op        ;执行音乐播放! Z8 ?/ {5 _7 i; m
  2710. JSR Switch_Main_Bank   ;切回主程序
    ) O: O4 B; L& L/ H, Z
  2711. RTS
    ( B' m6 N% B' A( ]$ d/ g2 m

  2712. / B2 L) v" W1 g# F+ P  f9 D
  2713. ;==================================================
    ! R4 I1 |9 i% F# d1 Y/ v: g4 F
  2714. MainLoop;死循环
      F7 u3 h4 ?/ h. g8 A
  2715. JMP MainLoop% r- {7 ~) B0 F- J9 z

  2716. : u& W! z# r5 ]$ m% i+ l. S! E
  2717. IRQ_SUBPROCESS_JMP = 0
    % C6 \- c' @) P. {4 D
  2718. . z) J3 ^( \( W9 v  y- F# Z8 U4 }
  2719. .IF IRQ_SUBPROCESS_JMP: h# R( T. U- W1 p8 \
  2720. ;==================================================
    . V0 p3 n0 q/ }2 x. p
  2721. IRQ_Process_0;IRQ处理过程0* y# h3 A* N: X) m) Z6 I/ D  P

  2722. 0 ^! w; m1 b& c
  2723. ;15条扫描线后触发IRQ
    % o4 Y) }+ w; D, m* B) W% z; l% L1 S
  2724. LDA #153 r" j" C/ @! i# R+ \4 t( X. K% T
  2725. STA MMC3_IRQ_LATCH
    7 S% `. D' k, L$ J6 I7 d
  2726. ' N& l3 J3 Q5 n$ d
  2727. ;设置屏幕滚动, V% H0 g8 I. t7 s3 M& O
  2728. LDA <Scroll_H
    5 }9 ~. N5 Y$ Z# W4 _; P
  2729. STA PPU_SCROLL
    7 Z- t, a* S, F- V* F3 b/ K, E  q
  2730. STA PPU_SCROLL  \) r- |% Y4 |3 ^( n. @
  2731. 6 C; r. B  q. p% M8 E
  2732. IRQ_Process_0_End" c& b5 b' ~8 t7 X" x* |/ i) I
  2733. INC <IRQ_Process_Index% v9 j# V& P0 u9 M& O/ M9 X% i
  2734. JMP IrqProgramEnd# F. P; W: e$ |5 k9 n8 `

  2735. ) ?- S! \0 O+ r8 J( O, Z
  2736. ;==================================================% U/ p- V2 u0 ~9 D( [
  2737. IRQ_Process_1;IRQ处理过程1
    , e1 g7 p) \6 L$ `& @" c, v

  2738. ) Z8 ~# j2 j8 }
  2739. LDA #55
    ; S0 h! `: n# g7 `) w% Q
  2740. STA MMC3_IRQ_LATCH( ?6 r  U( n, \2 j7 o; [/ r
  2741. . N1 r& G8 z/ ?, s% g3 N
  2742. ;设置屏幕滚动( W, T- A9 `, Z. E
  2743. LDA #$00! `( U# D, n  T$ I& v7 x4 k
  2744. STA PPU_SCROLL9 E9 m4 @, y9 g9 H* A9 q7 s
  2745. STA PPU_SCROLL) @4 {* w9 j% ]9 o0 u
  2746. " ^9 x. _7 F3 M% K: q
  2747. INC <IRQ_Process_Index
    7 J5 p6 k; [, {* d! a
  2748. JMP IrqProgramEnd
    + u+ [$ e4 W, |& F8 [' G. T3 l

  2749. 6 B% h; J$ q/ a; F5 q9 U
  2750. ;==================================================, b6 ]8 E8 T) ~% W& c$ S4 f
  2751. IRQ_Process_2;IRQ处理过程2: v" u0 _  j0 O+ B) |! H6 N
  2752. + M8 n# `- Y0 x7 |& N/ `
  2753. LDA #157 c5 E3 q" \3 D: ~+ @+ Y8 V
  2754. STA MMC3_IRQ_LATCH4 B! V0 _- Y, u( g

  2755. # X% h/ z! F# X9 H
  2756. ;设置屏幕滚动
    ) L3 f' ~. W) {* Y
  2757. LDA #$00
    ; S0 A8 I- C" c# U
  2758. SEC
    7 O5 t8 \2 [3 a, o4 w0 l
  2759. SBC <Scroll_H: h, B, W9 N( [7 s" I$ g
  2760. STA PPU_SCROLL
    7 a9 e9 S' [9 \" }9 X, Q' ?9 B
  2761. STA PPU_SCROLL+ d5 D; P: Y. m8 a/ d! t; t9 d/ a
  2762. 7 Q5 v9 g  R' k  Z
  2763. INC <IRQ_Process_Index/ @" Y9 V  N( j. a. l% I$ f
  2764. JMP IrqProgramEnd& L1 s: [9 U2 t; y9 ]
  2765. 3 @; j* P" h. Y, U0 m
  2766. ;==================================================' @! {) H# H% h+ I3 ^
  2767. IRQ_Process_3;IRQ处理过程3! ?9 _% @9 W3 Z" s
  2768.   ]3 \, @8 u3 A& s" T) H
  2769. ;设置屏幕滚动; {4 m. P8 s) w* D
  2770. LDA <Scroll_H  n' q- s4 s2 ], d% x7 @' M3 f
  2771. STA PPU_SCROLL
    . R" f! b$ i6 F' p
  2772. STA PPU_SCROLL
    $ U0 {; c+ Y3 Y
  2773. ' O' e: ]  ?  `9 H- H* f, z- e( A
  2774. ;禁用IRQ
    + W# W4 h8 ?4 A% }; `1 e4 z$ P9 r/ i
  2775. STA MMC3_IRQ_DISABLE! T& W/ b. a& P/ }) P) g6 G. t
  2776. JMP IrqProgramEnd: o% \' Q6 }/ d6 W+ Y% B' n% h
  2777. , b# ~: Y( ?/ m
  2778. IrqProcessAddr0 T% G" e, z& Q
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3( s1 h% V2 x" _' E; g" V- x

  2780. ( ~/ Z7 b( Z2 h& y$ f3 ^( w+ i( t
  2781. .ENDIF2 n7 R5 [# z  v
  2782. * [1 r% ]* l) Z* r# v3 r' U0 E
  2783. ;==================================================
    " l  g) ~, @9 Z/ O5 J' |5 G# V9 z
  2784. ;IRQ滚动模式常量
    ) s5 ?! x* M* s: j$ H7 @: h
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动2 J/ o# \. P$ y% b
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动. ~- ~3 _: ]! A
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动8 b0 u% g2 q* Y) E2 I2 e
  2788. % ^5 r/ p5 T( T) o' W
  2789. ;IRQ扫描线数据# C% C; s+ ^* b! I
  2790. IRQ_Scanline_Data5 T1 ]- R# }% e, Q$ v
  2791. .DB 80 X  y* u' r) r0 v
  2792. .DB 54; k# |8 V4 t1 ]: T. f$ [8 C
  2793. .DB 8+ O; [3 `8 J, `; ^* ^) y# d
  2794. .DB 00 ;关闭IRQ% m2 G! g+ @1 B  T
  2795. 3 z# C( C4 K% r* @
  2796. ;IRQ滚动控制模式
    9 j: V% ~8 |7 J
  2797. IRQ_Scanline_Mode1 Y! c1 L, x' ~+ E
  2798. .DB IRQ_SCROLL_MODE_ZERO
    / V  T  d& N. U  c
  2799. .DB IRQ_SCROLL_MODE_ZERO
    ! t8 M+ @( j0 _3 s
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    ( _: G+ N* a1 V  m+ `& \
  2801. .DB IRQ_SCROLL_MODE_LEFT/ z6 {8 l) Y+ ?: O

  2802. 0 B2 E4 Z% g% R6 F/ y" [) D
  2803. ;==================================================
    " v6 N. O- I( m5 j" u
  2804. ;IRQ处理& \$ E- l! ?9 M% n9 m7 }. H+ E
  2805. IRQ_Process3 s- T1 Z3 P3 y# B2 A! T
  2806. LDX <IRQ_Process_Index
    " Q9 J3 X0 P. ^7 V) Q' y; s
  2807. LDA IRQ_Scanline_Data,X
    , m8 L7 M3 c% N: C. h, [, Z3 a
  2808. BNE IRQ_Process_Latch: P; Z' P! T$ p5 ]  H9 x# q+ ?
  2809. IRQ_Process_Disable;禁用IRQ; \. Y/ Y# j8 [, o
  2810. STA MMC3_IRQ_DISABLE) m  q8 ]5 M1 G+ \8 Q& Z% y
  2811. STA IRQ_Process_Index
    , L  |7 {. w" U2 D# w
  2812. BEQ IRQ_Process_Scroll
    ; l3 z6 I& w. J$ ~: L3 \: l3 g
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    6 ]1 Y% d: `- Z
  2814. STA MMC3_IRQ_LATCH1 e* t( }8 z: k! d- ]
  2815. INC <IRQ_Process_Index9 Z; y# ^+ T8 i- B
  2816. IRQ_Process_Scroll;IRQ滚动控制
    8 L1 I5 Z% D! r6 @
  2817. LDA IRQ_Scanline_Mode,X/ g9 C/ }5 h6 P: y
  2818. CMP #IRQ_SCROLL_MODE_LEFT$ H% C( {' p) b4 G/ P# f/ x
  2819. BEQ IRQ_Process_Scroll_Left
    3 g# Z9 @! ^, i, t3 r$ T
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    9 G( z! a. N0 h/ t1 `1 S% b
  2821. BEQ IRQ_Process_Scroll_Right5 u! J- I$ W& `
  2822. IRQ_Process_Scroll_Zero;不滚动' G2 f0 f; _8 m$ O( R4 A9 F3 n& ^% l5 N
  2823. LDA #$00* [- W/ d+ D* x# B4 T1 h# G
  2824. STA PPU_SCROLL
    * ?; Y/ }6 P: c7 M2 F
  2825. STA PPU_SCROLL. e3 C& O  \* W  g* w7 ^8 ^% }
  2826. RTS9 p$ m6 T5 f& S" r' t# ~1 P3 q
  2827. IRQ_Process_Scroll_Left;向左滚动
    . R5 }1 e' y9 q4 x$ j$ D6 r! u8 o6 ~
  2828. LDA <Scroll_H- t" q  t8 t& ~
  2829. STA PPU_SCROLL- S8 V/ T7 @) x2 X- k3 a4 f
  2830. STA PPU_SCROLL
    2 L- u, C* g; _$ |$ Q4 V; G) e' P
  2831. RTS4 @' M/ d) h9 |; w4 K) {
  2832. IRQ_Process_Scroll_Right;向右滚动3 A. H5 \; u) ]  X, H+ M
  2833. LDA #$00
    ; x, n( {, G9 y" s- X0 V
  2834. SEC
    . Z( B! ~  W: n1 d
  2835. SBC <Scroll_H
    5 c, e: N! g1 w, F! X
  2836. STA PPU_SCROLL
    ) @2 Y2 \8 R6 F: i
  2837. STA PPU_SCROLL. y- @7 ]( H7 V
  2838. RTS
      K- N3 C+ X: @% \! }# V

  2839. 7 k3 M2 Q, G5 t$ U! ?( a
  2840. ;==================================================
    # P( H0 |, {4 q0 e
  2841. NmiProgram;Nmi中断处理
    , O8 d5 L  L) E+ E
  2842. PHA$ {" j& [# o1 s
  2843. TXA
    # b# ]) b7 O' l$ x' n' Z% b* v
  2844. PHA
    / k1 g) \. q7 l# k
  2845. TYA/ A- \" H& H* ]2 ^; n
  2846. PHA
    # W9 ?7 ?+ H4 s) g( a0 n  I2 d! J* k
  2847. 9 j/ f! s  G# q( K' e
  2848. ;读取清除Vblank标志, 防止重复进入: E! S( I" F( _% G1 }
  2849. BIT PPU_STATUS& C6 m. r! J  \& J

  2850. / c# X3 u3 B* t% E! F8 T) u
  2851. ;切换主程序bank
    9 ]3 n/ z* a8 W! L8 @' }! `
  2852. JSR Switch_Main_Bank9 b. h, f8 J$ b

  2853. # S8 n; }$ r9 ]
  2854. ;Nmi处理
    5 K. ]7 r5 V* p' ]1 G
  2855. JSR NmiProcess* Z9 t8 W; }5 d$ q8 F
  2856. 7 v0 K8 O& I( W3 @, _( z; s
  2857. Nmi_Proc_End
    ' |+ M  d; D& m. S! A3 D0 V; O2 o
  2858. PLA
    : |# g- _6 j' a, D3 H0 y( a: m
  2859. TAY" X$ A" @, t& u
  2860. PLA9 x- F  ~/ _* ~5 a; l2 y) D
  2861. TAX+ G3 t; P  w& F1 F# d& K
  2862. PLA
      P% U6 E7 }1 a1 q! w  a% z
  2863. RTI6 s6 o4 l: B! |& ~4 H
  2864. - H) @+ W% [# i6 \7 _$ e# Z
  2865. ;==================================================
    - M6 u3 e( h! K, s6 a/ d
  2866. ResetProgram;重置中断处理# s4 c* |' S& Y
  2867. SEI: P  w3 C( B6 H; x$ }  }% ~6 T( [2 Y
  2868. CLD
    & `' ^5 U, h. _
  2869. LDA #$00
    9 \% [: R) ^' i. \; ~
  2870. STA PPU_CTRL. m# \* W6 W( b/ t
  2871. STA PPU_MASK
    * ^! n( k4 k' p) ]  N! i# o
  2872. 2 y8 g4 K9 G4 b6 w
  2873. ;切换主程序bank
    # [& C: x2 U2 `3 [0 s
  2874. JSR Switch_Main_Bank: L) S% G# y  U& O. |# t

  2875. 2 k2 X8 H% \3 C7 k% g: e* U" v
  2876. ;程序处理开始
    " H5 y9 b' _7 d! ^
  2877. JMP ProgramBegin+ g8 Y: @  C" ]; I7 r# M& P- m

  2878. % ]- S" A1 v9 ]8 m! d. n
  2879. ;==================================================
    - S% p) D* q- _8 J6 E
  2880. IrqProgram;Irq中断处理! k- C, y0 B2 g5 ^( b
  2881. PHA" @5 Z, M+ a9 f
  2882. TXA
    ' t( |+ f' d$ t1 Z  F
  2883. PHA9 o$ x, {; |, M. {) F
  2884. TYA7 T) b  r0 U9 x" B$ O* v
  2885. PHA
    6 `9 h6 D, e+ K8 [& v! ]

  2886. " r; ?- }- `7 P# ]& C; D2 ]
  2887. ;关闭IRQ
    8 ?. H% P3 y: S! c, W- B$ \0 b
  2888. STA MMC3_IRQ_DISABLE* S1 {' s6 z# B& M
  2889. 4 z, m7 W7 @; W1 J; S, s! F7 H$ N2 |
  2890. ;允许下个IRQ触发
    $ D* T6 c$ g/ ^* f# R
  2891. STA MMC3_IRQ_ENABLE
    1 U, _- }8 G, D1 _& Y7 c

  2892. / J0 v! `( W, A8 h  g
  2893. .IF IRQ_SUBPROCESS_JMP
    2 W: B6 G* D- r; Q) v; N

  2894. 7 o0 A- R; R% G# t% J- ?6 {2 a( g& P
  2895. ;执行IRQ过程
    - v8 ~- ?5 }1 B! `' F
  2896. LDA <Data_L# w2 a7 Y) J8 M; J; |+ A+ L! Q
  2897. PHA
    7 i! t# N8 X1 I0 M7 Y  K
  2898. LDA <Data_H
    ! G( L: {2 Q+ ^! p; S: l! T) Y
  2899. PHA
    6 w. l& L9 x5 V4 k& R6 e
  2900. LDA <IRQ_Process_Index
    ' I3 g# Z) U+ C. \& Q' m
  2901. ASL A
    : ^9 i# ^" {3 w2 n
  2902. TAY8 A6 s' j! {& |
  2903. LDA IrqProcessAddr,Y$ ?! T: j9 W6 Y; ~( K
  2904. STA <Data_L& F! x. @: n7 @; V" F
  2905. INY
      K7 w2 J+ v! R# G
  2906. LDA IrqProcessAddr,Y* o# w* C: W) j/ b/ ^% F' F6 ]# w" Y
  2907. STA <Data_H0 P- o0 B6 f" n- f- d# A
  2908. JMP [Data_L]
    4 ^/ `/ Z) @% x  E8 K8 V

  2909. 6 A; m0 P9 \( |8 g
  2910. .ELSE2 Q; r) U3 ~0 C, Q8 H% S$ d
  2911. 3 G3 u! @5 o5 h' k# I
  2912. JSR IRQ_Process
    : R. w3 {; j2 o8 W" A2 L" O

  2913. : f. y6 h* t4 t
  2914. .ENDIF
    / y7 Q  L5 S7 w1 X7 D7 j

  2915. " l5 _4 S- T8 P! D
  2916. IrqProgramEnd
    ( z6 y  z; d% u/ i
  2917. .IF IRQ_SUBPROCESS_JMP
    8 N6 H: u" M1 J! V
  2918. PLA! u' e  r6 H: ]; t( L
  2919. STA <Data_H
    2 n8 B% o4 G. Z
  2920. PLA
    9 z. O7 b* M5 Q6 [# x* y
  2921. STA <Data_L2 N! L8 f4 I3 u( u
  2922. .ENDIF% V2 s' N! `: |% C6 ]
  2923. PLA
    2 e) A0 }9 o) Y) S2 T$ e
  2924. TAY
    3 ]! u( t1 Q6 G! f5 }
  2925. PLA
    3 W# ?/ I/ S6 e% }, z8 v! F
  2926. TAX( l& F* {! o( }0 \0 n+ f& R
  2927. PLA
    1 Q# b" D' c5 A# V7 Q7 f( q4 s
  2928. RTI7 A' C- f" k- ?; b4 v

  2929. ! K- S2 L/ [, W: G3 `
  2930. .ORG $FFFA
    6 d" z' e4 W8 p
  2931. .WORD NmiProgram5 U. N5 W" R5 q8 y$ J( w* A
  2932. .WORD ResetProgram, T/ {: Q' X+ ^. [' p0 c- \+ J
  2933. .WORD IrqProgram+ L) w. P  M, n3 r( n

  2934. 3 n. B! O0 y! T1 l5 I3 P7 A
  2935. .BANK RESET_BANK & BANK_DATA_MASK% s% `1 i% @* x
  2936. .IF SOUND_BAR_SHOW_ENABLE, R: E; `6 J) X2 S, u, N

  2937. + n* ]2 H2 a% k
  2938. .ORG $FE00
    2 H; ~2 e  o% Z! d
  2939. PHA% b/ a9 J& R  v( }
  2940. STY $07BA
    / I7 c6 H* T7 Z+ r
  2941. LDA #$8D
    3 d: o! Y0 V& U! ]; x5 S, c$ y
  2942. STA $07BC
    . F* c0 g, |! s/ W
  2943. TYA
    : O* P' A4 A7 z" ]7 ^7 Y( Q5 Z' x2 I
  2944. CLC
    ; B8 |( m) i$ E) h4 D
  2945. ADC #LOW(Sound_Bar)  T' F2 ~. N% i; \  N
  2946. STA $07BD5 m$ L9 I0 C$ P  V7 Z- r- B# M
  2947. LDA #HIGH(Sound_Bar)
    9 h4 n3 P" \. K  ~) q% }
  2948. STA $07BE; ~- C# P9 I/ U% T
  2949. LDA #$60
    8 H2 v0 U" y8 `* N: p$ D$ u; M
  2950. STA $07BF3 ^0 K* V8 b% l; n$ F, w
  2951. PLA" }* O' q0 r6 R/ l  O# u% r
  2952. RTS
    $ Z4 l8 p3 x$ L! q( J5 A
  2953. % B; _4 R6 O; N0 U- t
  2954. .ORG $FE20
    + M' a& n% e( F+ c
  2955. STA $07BA
    * e' X# H: \: L
  2956. CLC
    4 q: {7 r/ o2 Y) F# j. ^4 P- S+ W( l
  2957. ADC #LOW(Sound_Bar)
    # x! _7 j: z. I+ d7 E  g
  2958. STA $07BD
    " B) |4 C  t& ]! k: x; C; h
  2959. LDA #$8D1 D+ K; ^  k4 P3 J2 r$ p
  2960. STA $07BC
    / d( o* U' p  V4 Q/ l
  2961. LDA #HIGH(Sound_Bar)
    / A5 x. t& B1 Y1 F6 e2 r; ?
  2962. STA $07BE
    3 a+ _* i( h) \( D
  2963. LDA #$60
    $ Q- e9 s* K# ]) j# g6 D% g2 A
  2964. STA $07BF6 P5 O4 S3 C" _- i9 M' }* B
  2965. RTS
    ! v5 o; t6 y# ^+ k2 ^, s: S) w

  2966. $ B- U3 a  F$ V, j% F' k
  2967. .ORG $FE40" W* \6 Z& N& q" I( p
  2968. PHA
    ( a' x- ~& J& }6 O
  2969. STY $07F18 f* z- G4 n- F- n5 p) v' R
  2970. LDA #$8D+ `# q# g, e. D
  2971. STA $07F3) h  O+ P7 a0 K
  2972. TYA
    " W3 P2 M& c  b$ d3 g3 n
  2973. CLC  p) r5 h" w: }6 C2 r, E6 Q
  2974. ADC #LOW(Sound_Bar)- k0 L4 [; S' i) A
  2975. STA $07F43 p6 A$ Z0 A" B" Y
  2976. LDA #HIGH(Sound_Bar)1 `, g3 {6 U" p. K" x+ ]0 }4 G4 ?
  2977. STA $07F5
    1 c3 b" V; h* K$ b, J; C' |
  2978. LDA #$60
    . Y2 Q) x+ C* O/ S
  2979. STA $07F61 {5 P' Z4 u  x8 \0 \& F/ r7 H
  2980. PLA
      m" Y6 N9 P$ d# F* r' e
  2981. RTS# h9 t" t! O6 P. F4 }* b
  2982. 2 n3 N# r) ?3 o7 B
  2983. .ORG $FE60
    . z9 \5 |/ w$ _( r1 N
  2984. STA $07F1& T$ V: I! o( R% }4 v) S8 k
  2985. CLC
    . U; u3 `; B. H
  2986. ADC #LOW(Sound_Bar)
    % l5 Q( h& e" f! B& L
  2987. STA $07F4
    8 ]" y6 A% f7 A* S$ x2 F5 x
  2988. LDA #$8D% F( c* R  Z$ b2 q. M; v9 |: u! o
  2989. STA $07F3: U( D' F4 |/ p4 B
  2990. LDA #HIGH(Sound_Bar)
    ! t" ~! F8 A  v9 r. ~. W& }" J3 o
  2991. STA $07F5
    & K  m# a. I; n; `6 E$ F8 S" J- B
  2992. LDA #$60- D, x- w0 R2 }) f
  2993. STA $07F6
    % X9 A& S) E, y2 H3 E
  2994. RTS
    $ g3 i, i4 [6 s6 R! E( B

  2995. / g# H2 b3 T/ ?7 ?7 h& ~6 t
  2996. .ORG $FF405 u& o6 X  Y4 O
  2997. STA $4000
    6 x1 D& y5 P$ I9 `) p  i
  2998. STA Sound_Bar + $00
    5 `1 h6 j8 l3 Q: b# s
  2999. RTS
    2 l7 Y$ O- @4 L: j& a9 Z
  3000. - ]; z# q+ K" l& G. \! ]
  3001. .ORG $FF48
    $ C3 e* W1 m9 H+ Q
  3002. STA $4004
    + |3 E& r3 W: u/ X! U. _8 X, F
  3003. STA Sound_Bar + $04# M* K" Y" v* P. n( U) F
  3004. RTS2 p& d7 m0 a& V8 I2 l

  3005. 7 W0 M6 c9 |8 S8 F1 b& E6 u0 t6 B
  3006. .ORG $FF50) F+ i& {. }; K, r* o5 s: B
  3007. STA $4008
    $ l. d: q' L& @" Y' P5 d. o
  3008. STA Sound_Bar + $08
    # w4 h: F& ~9 D5 m* C" E8 x
  3009. RTS
    + a# ]) z9 W2 K
  3010. 0 T6 Z+ P, w$ E
  3011. .ORG $FF58+ y4 P: f4 Z- J+ Q" d
  3012. STA $400C
    . L6 Z# ]! q' g9 Z
  3013. STA Sound_Bar + $0C$ l  @! j: q) H) F- y( _; B6 W9 {
  3014. RTS
    - u$ h- C2 c# q  t

  3015. ( m1 R5 `* ?) L. L  g5 h9 Y
  3016. .ORG $FF60
      e. I2 Q. i8 ]# U7 z6 d
  3017. STX $4000
    1 E7 W% a/ Q8 M/ `, H- k- ?
  3018. STX Sound_Bar + $00$ ~6 y: g  c' N) J# L' G! ^7 b
  3019. RTS% G/ u6 ?9 e$ I. s% b

  3020. 2 @6 E  ^* A; c# v6 ]
  3021. .ORG $FF681 j; S6 m2 T+ i- y! K& d* y
  3022. STX $40045 W) p2 m1 ?4 B6 I% P& T
  3023. STX Sound_Bar + $04
    ; z# k2 f3 x0 y
  3024. RTS
    ! r( G# Q1 G7 S! g
  3025. / @1 G, {7 |! c# j
  3026. .ORG $FF70
    " z" _) L6 ]0 p* G" ~4 ?4 \/ o
  3027. STX $40080 v7 O0 z' d4 a8 ^3 f
  3028. STX Sound_Bar + $08" N. x; x/ o( C' Z' a% s
  3029. RTS: e& f. q9 B$ B0 o5 z8 W

  3030. % {; u. z, |+ |4 @0 v
  3031. .ORG $FF785 S: ~6 M) E7 Y+ I# w( z: W
  3032. STX $400C
    , K: m* c1 G4 W2 f2 X( P
  3033. STX Sound_Bar + $0C2 |/ Y5 i& \, g& k6 ^* v
  3034. RTS3 ?. s! k% o+ \, J/ B& B8 }9 q8 Q

  3035. 3 w' l0 H+ K7 r' Z9 A
  3036. .ORG $FF80+ o$ R- ]4 L4 B
  3037. STY $4000
    ( O4 j3 Y# Y9 Z" j
  3038. STY Sound_Bar + $00
    8 b5 m* n; o% z4 Z/ X
  3039. RTS
    , ?, A6 _7 L- b  p4 d: d

  3040. , I! e' L4 ?) t* o8 P
  3041. .ORG $FF88
    7 W. z; W$ v9 F) I6 ?/ ]
  3042. STY $4004/ S; _5 L& M) q1 t. e
  3043. STY Sound_Bar + $04
    8 _! w% N( o5 r, P
  3044. RTS+ v2 v* i! u5 F

  3045. 4 |' _  W4 ~0 o4 x! E
  3046. .ORG $FF90
    * N/ |- X0 t0 `" _. f! e
  3047. STY $40089 O0 N$ m0 e- Q, E9 q- K/ ?) ?
  3048. STY Sound_Bar + $08) ^5 J8 ~1 O& u
  3049. RTS$ w( V8 }! E! U: a; W0 j

  3050. & i% Z( A- g' W, p1 y+ \9 b
  3051. .ORG $FF98
    / s$ \6 |, f% ]
  3052. STY $400C
    / M: d* s+ p7 Z2 N* \
  3053. STY Sound_Bar + $0C1 Y6 c8 j) r8 c2 i
  3054. RTS
    1 A( h+ L& d# I$ p( v& i( [) \

  3055. 1 p9 b- @2 Z5 j) z. j
  3056. .ORG $FFA0, {  |$ H5 G$ b+ P( V' o5 w5 w
  3057. STA $4000,X1 I2 D2 E6 g# H9 _- d# u
  3058. STA Sound_Bar + $00,X7 s- _' ~# K2 J- E
  3059. RTS- n7 n2 s$ |: K2 p" w
  3060. + Y) G- k& X4 b4 y# R' ^, S( X
  3061. .ORG $FFA84 {3 N7 Y- J! o' R3 }/ Q
  3062. STA $4000,Y
      H6 k, ^8 k$ F5 m  @" d$ {
  3063. STA Sound_Bar + $00,Y8 m6 e, }+ Q& C) {5 e
  3064. RTS0 P/ R0 i) M' l5 U" z6 {

  3065.   @) M) q& J5 w7 L: Z( V5 ~
  3066. .ORG $FFB0
    " }5 ~, |0 s  L9 G
  3067. STA $4004,X! l; z' E3 E% Z
  3068. STA Sound_Bar + $04,X' n2 {9 [: n$ Y1 E* ^
  3069. RTS8 h5 {' \/ A# Y3 _6 A
  3070. % n4 z; {5 u% I, {' {
  3071. .ORG $FFB88 B1 N3 _+ y3 {, f3 G  z
  3072. STA $4004,Y* k9 E, C5 u' Y2 k8 w8 B
  3073. STA Sound_Bar + $04,Y* Z) l* C  S/ `+ W. c% {9 ?& p) s
  3074. RTS
    9 r0 L6 X! Z/ _+ F
  3075. ; L$ P% @& Y6 V) D0 n7 Y* i
  3076. .ORG $FFC0$ w& _9 \- U  A) `" M' Y' m
  3077. STA $4008,X$ [$ \1 i6 v" J! g/ p5 }
  3078. STA Sound_Bar + $08,X
    - X; r0 j! L' H, U. q2 e( Z" u
  3079. RTS
    ! X9 ~) ]! Q. q- a
  3080. : V1 Z8 ^- Z% t: M# x) S
  3081. .ORG $FFC80 X+ u; ^8 U3 _5 }& b# O9 m
  3082. STA $4008,Y3 I* C1 c  `# O" K4 y' a9 ^  j( U
  3083. STA Sound_Bar + $08,Y+ F* X' v) S. |6 _0 [; O1 [
  3084. RTS
    & b  U" m* W& i" Z' p
  3085. / S* J0 X) s0 k- g" M
  3086. .ORG $FFD0. B9 `' w% K- i. F7 V
  3087. STA $400C,X
    ' Q- d7 _( m, D( m/ l. [
  3088. STA Sound_Bar + $0C,X9 F- m3 r1 g/ m
  3089. RTS5 S* x1 J3 C6 }# O

  3090. $ `0 A; g$ V" M+ R8 I5 U, }: m
  3091. .ORG $FFD8) q7 ?& K; d( R) {
  3092. STA $400C,Y* d7 d% z5 |5 n8 ]' _' N, c6 Y
  3093. STA Sound_Bar + $0C,Y% x0 N9 z# n) q. O7 m( m# T; F6 y: q
  3094. RTS
    : B2 E9 f/ s" v. y4 F* J  e- h
  3095. . p- T/ F- |8 s  }0 A4 I) \( z
  3096. .ENDIF
    7 }5 w& J, Q0 O/ i" n, d
复制代码

" v$ Q4 b7 b* Y6 z. T. @+ R. `
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3223 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-6 00:53

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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