EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
4 f( r) Q& w0 |6 Y0 o% e5 {# {: J) _: j4 d7 \4 i8 @
[FC][音乐12 IN 1]8 J( x- C  O* N& C) |
时间: 2023.07.23
9 I. I* M7 H8 I" M3 y. V6 x  a0 Z作者: FlameCyclone* q' A, p( @$ g
6 O& k( w/ D/ r- V$ Z& k, v: b/ |
收录音乐内容:
6 Q& Z! Y1 ~- ~7 D1.Raf世界7 h' q. N  `% P
2.最终任务7 D* A, e1 H' g
3.赤影战士
( ~# o4 @, ]+ Z( @# L& K4.双截龙8 _4 w6 n! V6 K; U0 G2 `9 U8 u
5.双截龙20 n! K% ?$ c: T$ ~: t
6.双截龙3
6 K1 n7 x/ f9 N# W5 D; G( U7.洛克人/ {( @; F0 D5 ?
8.洛克人2. F+ \& k+ x% z5 [1 x% p. K0 r9 d
9.洛克人3
% A# R% y% z% `! |10.洛克人4
* f% _4 i0 \& D. j( T0 ~11.洛克人54 Y8 A2 Q) f. \! S. P* U0 |( G4 M$ w' _
12.洛克人61 }  e/ X4 G# w" S4 [/ B3 c3 Y: a
/ \. b, |( d: M( q% ~6 P
操作:
+ e9 V: w, G0 z' Q, E上键:         上一个专辑
7 Y4 r5 F+ h9 b7 g% ^* d* D* P下键:         下一个专辑$ l4 G( L- `' X, M. J
左键:         上一曲
# T+ m3 T5 ?: c+ q# F" \右键:         下一曲
' u' {8 V  t; B1 O7 hB/A键:        前10曲/后10曲
% Z6 I( ~; l: l) F7 x选择键:       下一页( n; c- q6 A9 o6 _( C
开始键:       停止/播放
7 s2 y8 h$ z8 F) q0 T* q; u- @
3 f1 C' \0 J- Khttp://flamecyclone.ysepan.com/" O2 n3 r8 _6 _0 m! t; S
% x1 K6 j2 i4 h! u& c
1 n! g1 X9 ^7 @, J4 X

2 R8 f* R, M# P( X. ?6 n. w0 v7 O+ X7 o1 h% J# t3 ]8 \) s
  1. ;[FC音乐][播放器模板]
    9 [/ g7 C& J( D* ~% `
  2. ;FlameCyclone 20230710
    ( V4 a( \! d% l0 ?0 s3 Q  m' f/ W

  3. 2 ]$ N' I# n2 o- ~0 P2 ]0 X
  4. ;文件头1 `# \. l; G' H$ I5 }. Y5 s( i2 e
  5. ;======================================================================
    0 o' K8 _& C# c6 T0 T5 z0 [
  6. .INESPRG 16                                             ;16KB PRG 数量
    + B/ m7 N3 n% L* A( i0 @
  7. .INESCHR 1                                               ;8KB CHR 数量7 V% x) i6 d. z" ]
  8. .INESMAP 4                                                   ;mapper 4: W3 Y) [: Q5 s7 b& t: y; K- z% \
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直1 Y1 t& k# m4 k6 A7 H4 f

  10. # c7 R( R; _! G; F
  11. ;==================================================
    ) v; Z4 k* M; I4 b: m' d
  12. SOUND_BAR_SHOW_ENABLE       = 1/ x  _9 a3 V# c8 X  Y+ P
  13. ;==================================================/ ]$ H: r: n. E- G+ K9 S$ g
  14. BANK_DATA_MASK              = $1F5 E  |! L6 }2 N4 Z; C- u# `8 L
  15. CHR_RAM_ENABLE              = 0& M1 q/ Q" Z& y
  16. IRQ_SCANLINE                = 136
    6 k. E  j- w, N, K! n& S
  17. ;==================================================& G! ~  }) h& q, ]3 m$ I& Z0 F
  18. SOUND_DATA_BANK_00          = $00
    4 l  |" k0 E- x. }4 B% x* Q
  19. SOUND_DATA_BANK_01          = $01
    ' ~, c$ ?0 L. Q& e0 h
  20. SOUND_DATA_BANK_02          = $02
    8 c3 C: I! S- m
  21. SOUND_DATA_BANK_03          = $036 a7 e0 w) j% ~9 \8 T* G
  22. SOUND_DATA_BANK_04          = $04
    - r3 Y! D2 e3 ^2 R/ U% K
  23. SOUND_DATA_BANK_05          = $05
    / \9 k! x! Y8 }$ u4 F# t
  24. SOUND_DATA_BANK_06          = $067 ?6 b' F: c, e2 `+ T/ R) z
  25. SOUND_DATA_BANK_07          = $07$ d/ s  {% u" `8 {" H- K
  26. SOUND_DATA_BANK_08          = $08
    + ^+ R4 }: C& M/ |  b& i& A
  27. SOUND_DATA_BANK_09          = $09
    + u2 b, Y; a+ `+ p3 @$ v/ G
  28. SOUND_DATA_BANK_0A          = $0A
    7 ?% l& ^+ m% j& ^4 \9 [
  29. SOUND_DATA_BANK_0B          = $0B
    . O. k. i9 `# |; c
  30. SOUND_DATA_BANK_0C          = $0C
    7 ]+ x1 J# _8 S) D0 u. D) L
  31. SOUND_DATA_BANK_0D          = $0D6 g1 I$ O- r* @" _- O
  32. SOUND_DATA_BANK_0E          = $0E, l3 E; G& e3 a7 e3 y3 y
  33. SOUND_DATA_BANK_0F          = $0F: i% X& _3 N6 l7 N
  34. & }% X3 i5 T) D3 Q8 K+ v3 `0 M
  35. SOUND_DATA_BANK_10          = $10
    ! H! l$ _  p% |2 o' R* j" A
  36. SOUND_DATA_BANK_11          = $11  }8 `0 o. u( n0 U0 j
  37. SOUND_DATA_BANK_12          = $127 @9 J8 C* M  t$ M
  38. SOUND_DATA_BANK_13          = $13' |/ n, i( x0 ~' o0 W
  39. SOUND_DATA_BANK_14          = $145 |) Z1 ~. X% J' X
  40. SOUND_DATA_BANK_15          = $15
    , {3 L' j3 w6 n+ E
  41. SOUND_DATA_BANK_16          = $16$ n# M) V3 o  x& x9 @4 \- Q
  42. SOUND_DATA_BANK_17          = $171 w9 [; I  F) k( m: e1 J4 r: X, C
  43. SOUND_DATA_BANK_18          = $18
    2 M0 H4 M; |# j. G! t
  44. SOUND_DATA_BANK_19          = $19$ k4 W  P0 e2 |( ?9 ~  U- j
  45. SOUND_DATA_BANK_1A          = $1A
    3 X+ j# F  q# H2 L  a8 Q
  46. SOUND_DATA_BANK_1B          = $1B# T1 u  @) ^1 _# g, i# n9 q& X
  47. SOUND_DATA_BANK_1C          = $1C
    ) W7 Z9 B" m& W, H% q+ s7 U
  48. SOUND_DATA_BANK_1D          = $1D! d! p3 p# Z( I5 u3 S& X

  49. 5 Z& `" j. K: t
  50. SOUND_DATA_BANK_C000        = $1E0 ~4 ?  {& q8 U: i1 g; U  E0 j
  51. SOUND_DATA_BANK_E000        = $1F
    ! m! H2 e' x- y  N: S# D
  52. ;-------------------------------------------------5 g( E2 D5 A1 |& `* @' V
  53. CHR_DATA_BANK               = $20
    8 U8 x1 X: W6 U9 T: r% y
  54. CHR_DATA_ADDR               = $A0008 M2 b3 |' t; H4 U1 t5 R: d7 \* _
  55. ;-------------------------------------------------
    $ [- z+ P5 Z) g3 s+ D" r& @
  56. PROGRAM_BANK                = $008 ]2 {% x+ J: i( B; ?# `' K
  57. PROGRAM_ADDR                = $8000
    0 `! V2 a2 _8 H0 r. q3 q
  58. ;-------------------------------------------------
    ! h0 \/ R7 d9 |, \+ Z0 [+ K8 f4 u4 E
  59. RESET_BANK                  = $1F  F: `/ q  N6 }
  60. RESET_ADDR                  = $FD00
    3 f  Q1 D) O1 @$ X# l' I$ U
  61. 6 ~8 Z) e8 d4 B0 X( k
  62. ;==================================================
    3 Y- r. s5 k9 h  I" y4 H& _4 {# U8 \
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数. Z4 [5 u- C# x; p* Y
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    3 p: e  Z, U/ {
  65. PAGE_SIZE           = 5                     ;每页节目数
    - D8 D& ?6 `/ r) ~6 o! q0 k, v( {

  66. # @7 E# y! G! g0 a& N2 E
  67. ;==================================================
    ) w- G+ X; i4 y. V/ z
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    : T( \6 U9 V  V2 G$ F
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数; W5 x. y: t0 b4 C3 u# i
  70. .ELSE
    , Z+ @. x2 i4 x8 M0 f& U2 h5 G
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    # O$ v" g0 W8 {- ?; e. T4 `
  72. .ENDIF
    8 L9 ^, s4 y) F1 q. t! a( m
  73. " e5 ?7 t' d& O7 K
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    3 e0 D* [7 d6 `/ Z/ j' g% J
  75. & B. \2 z, U1 x2 R& W
  76. ;==================================================# x6 ^" ?# U6 H5 }& h
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置0 P0 y( Q" u, B, L+ @- P8 k6 _
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    / L3 f+ U* V! u+ G! j% ]. r
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    $ Z5 h# D" N) ^; _. z
  80. ;==================================================
    7 r- w- L% `7 d8 i
  81. Caption_Text_Pos    = $204D ;标题文本位置
    4 l1 e+ h6 s' M/ v# n
  82. Author_Text_Pos     = $2324 ;作者文本位置( V" P( h1 X; d1 |, ^2 Z. T+ p
  83. Date_Text_Pos       = $236B ;日期文本位置# ]* S) ~, {0 O' K0 k6 s0 }7 u3 S
  84. ;------------------------------
    " L# R6 Y% {1 G/ J) }
  85. ;------------------------------& i- ~8 u8 U2 s- P$ h9 a9 |- n' I
  86. .IF SOUND_BAR_SHOW_ENABLE# n( n- b" e# P* g9 k1 J% }
  87. $ S, u/ b# a; j1 ]
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    7 h( ~) \- J# K* `3 ?$ e6 J& j
  89. Play_Time_Pos       = $22B3 ;播放时间位置  `7 e  a( C4 K: j$ g3 P
  90. Play_State_Pos      = $22F3 ;播放状态位置: F  Q+ I. O  Y+ H* q
  91. 3 A3 v9 S$ d% C1 a
  92. .ELSE
    % d5 h3 _1 T" H. }+ X( Z* s4 }, p+ f

  93. 1 z; G% h% W' |- F8 T5 f6 A$ Q
  94. Play_Index_Pos      = $226C ;当前曲目位置* A! @! i; o$ f: L1 [
  95. Play_Time_Pos       = $22AC ;播放时间位置
    9 l& ?7 ]0 i$ x
  96. Play_State_Pos      = $22EC ;播放状态位置; o6 W' {; U6 d: C- m+ @, U) o9 q

  97. # g9 Z: q# w  l
  98. .ENDIF
    . z1 A4 x2 I, r4 _( Q
  99. ;------------------------------9 _8 X( Z5 d4 R6 Q7 r+ o/ W/ `
  100. Track_Name_Pos      = $222B ;曲目文本位置5 H9 z0 [( s5 t% a- _$ e) n' W
  101. ;Track_Name_Pos      = $00 ;曲目文本位置1 Z: X! Q1 `' S5 k9 c3 A) A
  102. Sound_Track_Pos     = $2265 ;声道文本位置2 o! g' k& `) i+ E% B
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    & c# p4 i1 Q0 y9 T4 G
  104. ;==================================================! x; n' ^9 e' C( ]
  105. Scroll_X = $00- L7 C+ a; P  K# H* p/ z; a
  106. Scroll_Y = $00
    & @/ e8 ]& q: k; P# Y
  107. ;==================================================
    9 ?: H0 p" o& Z2 ?+ y* f: T
  108. Sound_Ram_Addr_1       = $0100, g$ X5 D& u7 \: z8 u
  109. Sound_Ram_Addr_1_Size  = $80
    ! `: P# [: P  @; b9 Z4 y
  110. Sound_Ram_Addr_2       = $00909 e5 L7 [" h+ Y2 {6 S6 \1 c5 p
  111. Sound_Ram_Addr_2_Size  = $70, w# N! X" \+ o5 L
  112. Sound_Ram_Addr_3       = $07004 P( _8 m  V1 f
  113. Sound_Ram_Addr_3_Size  = $00
    + j; _, [. F$ g  R: b& |2 z% U
  114. Sound_Ram_Addr_4       = $0400
    9 b$ Q9 e: [# c& o: B
  115. Sound_Ram_Addr_4_Size  = $00% B- u: q/ G6 T( M
  116. Sound_Ram_Addr_5       = $0500
    % [8 J- K, B* K+ h# f) v
  117. Sound_Ram_Addr_5_Size  = $40
    + X; `/ z8 x/ z& T$ N
  118. . w% J! N' q0 d5 @+ L3 O
  119. OAM_TEMP_ADDR   = $0300
    # t2 o* Q8 y' v

  120. " i% ]' _- r) Q' [5 L% Z
  121. ;==================================================
    % Y7 T& h2 X) _( F
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器& \( X0 Q# P# i9 e9 m
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    " i5 T' B+ Y' q( q
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    . a1 ]# s0 z) C) B' S. u+ r" l
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加10 L  P1 t/ J1 `6 l7 `' ^5 {
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1& P+ G8 v3 Q1 L7 X( j. G2 e
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 ) W8 K. C+ r; r! V6 [: X% Q6 R
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加5 a, k4 M# W; h1 _' z" D- n! t! O
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    * \! |8 w$ F8 x4 O7 [
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
      v  R" z1 d2 L' ?
  131. APU_STATUS              =   $4015   ;声音通道切换: [) y# O& T! t9 P) R" ~! T7 d
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    & W" l) c: |2 E6 v) [
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    * g& c5 k* c2 ^3 M+ d4 e
  134. ;==================================================2 A. g6 c* C: @' C
  135. MMC3_BANK_CTRL          =   $80004 P: F; E  Z& S* S* s7 @
  136. MMC3_BANK_DATA          =   $8001
    ; l' b! [6 Z# o+ P$ s5 t
  137. MMC3_MIRRORING          =   $A000
    2 J. ?7 ?7 \2 H, n+ P4 Y# q4 L6 X+ l
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    + T4 `. v! ~( W
  139. MMC3_IRQ_LATCH          =   $C000% ~$ m6 f' f2 N/ x2 `
  140. MMC3_IRQ_RELOAD         =   $C001
    % B+ Y+ ]2 [8 f2 Z7 b/ `
  141. MMC3_IRQ_DISABLE        =   $E000
    9 `3 ~5 `# @3 U0 M6 q
  142. MMC3_IRQ_ENABLE         =   $E001
    , {9 @1 d+ Y' A' B0 L
  143.   p0 B, a6 b! s3 B
  144. ;==================================================
    4 m5 U4 b* ?9 d6 f* o. A* E
  145. PPU_Addr        = $0200; T1 ]6 D5 f0 ]
  146. Palette_Addr    = $02C0; B" k) C) y; z: c; o, T5 l+ b9 [+ c
  147. Sound_Bar       = PPU_Addr+$E0
    " v7 @6 s9 b/ y
  148. ;==================================================
    3 Y3 ?/ o- T6 j  m5 m1 G
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D( [; Z  f7 Y3 [# e4 Z. b6 S; q9 ^
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    - i1 E: E/ \) M$ B7 n! Q  E
  151. PALETTE_UPDATE_MAX      = $2C9 c$ R8 A- q' E/ H+ M* n8 {4 ^
  152. PALETTE_UPDATE_MIN      = $218 o0 P9 N. D- h  U8 x
  153. PALETTE_UPDATE_INTERVAL = 60
    " g% Y! i1 g' }* H* Z. `
  154. ;==================================================
    / ?9 o$ z5 D/ f, V
  155. Sound_Bar_Cnt       = PPU_Addr+$F0* u$ F- j; h' \3 d
  156. PPU_Cur             = Sound_Bar_Cnt+$02, w! q- H4 t6 D8 B
  157. PPU_Addr_H          = PPU_Cur+$03. b9 {' Z! J4 ~- M8 x$ _
  158. PPU_Addr_L          = PPU_Addr_H+$048 z# I- X$ V$ v5 {$ X' k. Y
  159. Screen_Ctrl         = PPU_Addr_L+$01
    : O1 o; S+ k- Z
  160. Screen_State        = Screen_Ctrl+$01
    2 h- L& _8 x2 i( y. C- d
  161. ;==================================================
    ( [% H; N, T2 y8 B0 P
  162. Use_Ram_Begin       = $50
    9 u" q) f" ]: b, W6 a# z! W9 W
  163. ;==================================================  n2 x( P+ U* M
  164. JSR_Addr_Op         = Use_Ram_Begin8 [: L" ?3 u3 P5 p* U, C
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    9 P8 |0 @3 Y; e7 T+ Z; t; H
  166. JSR_Addr_H          = JSR_Addr_L + $01
    ) ^4 P# p3 ~9 v6 P
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    3 P  s) ~& J+ C6 C! Z4 o
  168. Data_L              = JSR_Addr_Rts + $014 b, F% Z+ `7 p* _7 \; A- K
  169. Data_H              = Data_L + $01$ O+ I; X% A5 k% O6 {  ]  S
  170. Data_Cnt            = Data_H + $01
    9 n8 m: u5 S$ Q
  171. Data_Buf            = Data_Cnt + $01+ X7 C. Z) V0 H* L# S  J9 t
  172. Nmi_Time_Count      = Data_Buf + $01
    - P0 U. W3 f4 Y9 Q- G( T8 }" f
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    , l5 F* B5 Y5 `  D9 F+ L3 G
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $017 @; v5 f% A3 a0 M7 }

  175. 7 _6 c- V0 [+ @/ D+ R
  176. ;调色板刷新标志( w, e# Y( r; k8 W6 ^
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    7 ~3 w0 I8 ^; Y) @' N4 ]" d
  178. % Q8 ?( w( C: b# N) [
  179. ;当前帧文本写入禁用标志
    " u& H% D) B0 V& T+ A
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    1 Z+ Z: H$ B+ N, Y! }" _" K* k

  181. 8 e" e7 \" w2 V8 B6 ?& ^
  182. ;==================================================8 I+ m5 p, M. Q% I, v, R7 y
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    * A7 a( V, H0 V' t9 O8 W5 F/ I/ u
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条8 H* j. j- v1 O4 B. m
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间: P, O( k# i0 W, r( v  g; i) B
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
      P+ V# r. {" j( z! V) w
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    " T/ g* o8 T1 [' z" t2 a
  188. ;==================================================, Z8 N1 F* h8 C( C
  189. Key_Keep            = Text_Disable_Flag + 1% W2 A+ o' f" L
  190. Key_Once            = Key_Keep + $01
    8 v! Y5 d& p5 ?3 q" W2 I$ U5 u
  191. Key_Kemp            = Key_Once + $01: \. C: E; {6 E1 s7 Q
  192. Key_Temp            = Key_Kemp + $014 r) v; G( [) G" H
  193. Key_Getv            = Key_Temp + $01
    % P0 S8 }( Y! t" P' u
  194. ;==================================================
    3 u! M2 Z4 J2 s5 ?% U
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    + w6 {: c! b/ g- @3 k6 a- f
  196. Music_Item_Last     = Music_Item_Cur + $01
    ; @8 W" E$ s4 q+ ^$ {/ J% @8 q- f
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集2 e, ~+ a( p9 ?# p3 |' l
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    + K! B" {  X" F- C: `3 _9 M
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目3 _, Y6 i$ v/ |% x7 v
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态9 R' H5 |! |/ q& o& _
  201. ;==================================================
    % x2 D; p! `; e3 a& j( i
  202. HEX_Data            = Music_Stop_State + $01* }& B- g9 `1 T* H+ P+ Z
  203. DEC_H               = HEX_Data + $01
      ^! K1 d: s3 \% ~$ N( x
  204. DEC_T               = DEC_H + $01
    ) W+ Z- Z. M1 _; B/ Y0 @
  205. DEC_L               = DEC_T + $01) o3 C& w6 [' \. b
  206. ;==================================================- Y! |  q* @0 Z+ ]. M
  207. Time_S              = DEC_L + $01
    8 |* ?2 m  o1 v; q) b2 Y
  208. Time_M              = Time_S + $01
    & v% u1 Z; w$ b2 ?' E$ C
  209. Time_H              = Time_M + $02
    ( G) z4 u/ O* t8 w/ Y7 a( Z
  210. Time_Cnt            = Time_H + $03
    4 u6 s" O" z, l) J. q6 `" G
  211. " F& p; V4 ^! I/ F( U
  212. ;==================================================
    5 j3 ^& g  Z, [6 h$ i
  213. Music_Bank_8000     = Time_Cnt + 16 e- S9 I$ l4 n6 ^# }) s
  214. Music_Bank_A000     = Music_Bank_8000 + 1. t0 L' M# l/ S
  215. ;==================================================/ `/ v5 k& {" Q8 h, \% W' S7 t3 U( k, E
  216. Scroll_H            = Music_Bank_A000 + 1  e5 a1 I0 A0 W  Z/ M$ B% C
  217. Scroll_V            = Scroll_H + 1# l: o; i6 i4 P' u& M: g
  218. IRQ_Process_Index   = Scroll_V + 1  Q; g7 M. t5 h8 Z: |1 b
  219. ;--------------------------------------------------
    + ~3 l. c/ P# Y+ D! Y6 f% {
  220. Page_Cur            = IRQ_Process_Index + $01( U) [" l. s9 ~; V
  221. Page_Cur_Index      = Page_Cur + $010 e! u6 C# H+ D: P' S: L
  222. Page_Cur_Cnt        = Page_Cur_Index + $01  e9 e: L" m! F: f' b
  223. Page_Last           = Page_Cur_Cnt + $019 C8 h. r) \8 [! t& U, U& S+ v
  224. Page_Last_Index     = Page_Last + $01
    ! r1 `% F8 k- Y, K: o- d+ F) |
  225. Page_Last_Cnt       = Page_Last_Index + $01
    " A$ p& p$ Y: `/ s2 R$ J
  226. Use_Ram_End         = Page_Last_Cnt + $010 T$ ~. n! i# C- _( W/ J
  227. ;======================================================================. `7 T$ a+ g- c- m" e/ d2 u8 T% B' A) R
  228. ;音乐数据块
    * N- z. `5 H9 |/ K& S2 }& c
  229. 4 u; o, v0 Z5 \4 m3 O6 Q
  230. .IF SOUND_BAR_SHOW_ENABLE
    3 m' |( y6 @7 f- L
  231. 3 t5 \$ k5 I  D5 V  b& x
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK& S; v. t) s' d1 W" R; b7 C
  233. .ORG $9000
    2 T3 M5 V# X5 A! X# e' T
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    & C$ p: a# Q! _* Y" I7 p
  235. + _0 ^8 b5 J! o' J6 f' N8 v8 g
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK( w3 `+ }# f/ W% P- i6 _! k8 g* R
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"& [/ y% t2 k% A

  238. " W6 C: v1 l4 a" j& e+ o) a
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    - w# t( b' F( F9 P
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"1 ?3 d8 p7 n( t; o/ U' Z2 [

  241. 5 k4 z: V# [; H/ U3 _% @& s
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK' j3 L( P$ V# J  w6 v5 K1 O
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    & a& a! \3 o5 b# l3 D/ A/ V
  244. ) F9 X9 E2 v* x2 k8 y# p
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK1 j2 ~+ ?  U+ C
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"+ e! `+ V7 p4 J* O1 P  h' Q; f6 P) @

  247. . H0 h2 `+ B# d, ?2 p
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK6 T8 ?, F$ d% X
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"2 X! {( w% f% Y8 y1 D8 P) g; A8 \

  250. & c5 g) W# `& W4 R
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK. [2 z$ H) y, Q3 A2 L( b! g; a
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
      K0 w) H9 C- G. c5 b

  253. $ T3 j5 ~5 Y9 M
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK+ u8 A8 q. ^( L& V$ n' H2 n
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank". ~+ ], \! h8 I" x) l. V

  256. # `8 F( j4 M! O4 I
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    : i( N# v& i0 V  i) W. `1 n
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    7 _. R, i! w  E4 ]! z" b+ J
  259. . H& ~% u* l9 V- d6 r
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
      ?% }" s5 C1 a/ G
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ( P: r2 {; p! O4 w4 ]( U( S8 g  h

  262. " s# j% \( D5 m) \7 c' c
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK( Q  U0 K! e1 T( x" b
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank") J$ E" ^5 V( f/ _3 s: X0 E

  265. ) j4 E  d: B( \
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK7 Q' ]' U+ y0 N; Q# [$ t& s
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"! q6 d4 Q) c4 M( j, s: G3 I, F
  268. 3 t3 w1 _; |$ Q3 |1 v4 |
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK4 Y' F8 V$ c9 f' {- t3 p# g
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    8 ?& w* a' @7 y9 l+ \$ a+ t
  271. : y/ M8 @2 O  N5 h! _5 [! O5 ?
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    ) _3 y4 L. h, g9 s
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    % y4 B& T- |0 y. h0 C: P
  274. % G* u6 [/ h. w% w  Q4 E8 D
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    ! \" v0 a( l  _$ o$ v: |
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    7 E8 x5 U( T( q+ e+ V, K

  277. 1 P/ j2 p! g! _& F2 _" _
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    ; o* v7 ?; |! w( c' o+ _) ^; E* D
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    / @5 u9 x3 j9 @
  280. * Z5 S$ o: |9 m
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    8 S# H, r7 F8 l; a
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"3 w7 x/ w  @& O. f/ P8 l1 I

  283. ! R* ?) {( g; F! X' R' U! L! d
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK5 P+ b2 z6 k0 }& _( h
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    / @- X3 E1 f* B6 o. Q8 D
  286. ' q( _* _/ Y7 ?0 y' N1 J' I
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK8 m- A+ r* M4 w% w/ `  d2 L
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    ( N+ g* I# l4 e  ~

  289. / p2 e. ?% w, o- I4 P
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK; Z" G: d) i3 N' x2 r
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    5 l% y7 k$ E' N

  292. ' \2 \) L+ U5 N: F- v0 N! G
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK& ^# P4 L+ E3 t& m) k- u. _1 y
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"  p$ j; @. J2 e' B6 Y

  295.   K$ L0 n; Z4 m) f
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    & D! P: V, n. [# Y+ c: F, r
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    5 s; i8 W* U" P# s6 I1 I

  298. 8 n2 T0 e0 i) \6 q
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ( n+ i( \  P- l3 y
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"; h  Q6 `' c8 }# B8 P4 I7 R1 X+ W. D

  301. 3 u' b' _0 ^; o' C. [' l
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    ! k1 T9 S* s5 E. E" d$ X
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    # q# n1 {0 k" j8 X' B
  304. & h! m- `1 ?3 {& I
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    ) M7 V1 h2 D+ [+ i. P0 J3 Y1 i. G
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"- I% y& {* {* ~
  307. / Z, ^( v/ U0 i- J
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    ) }2 [; a6 ~! R* q* W& h( \  r
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ( z0 R! E! j+ J1 T

  310. 2 g, b2 A3 k$ |) M5 a
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK. v; o4 \$ z; X# ?
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"2 e; @9 b0 X7 `) q1 \9 U0 v

  313. + x2 r* C- g/ c% C. f
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK2 Y6 e/ G$ ^$ Z% k: V$ e
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    $ J9 k8 T3 H3 J9 {7 h9 Z0 D

  316. * ?7 c2 H! [8 f' L6 v9 _
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    7 P" _- p! m0 p$ s" r9 `( ^
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    2 f9 a8 X$ Q8 F

  319. * _& z7 H4 Q* |8 f3 O
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK4 ~2 Z2 c6 J$ Y3 S
  321. .ORG $D400
    / ~  _* B- Y5 Z# h* _0 i
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    % f' N9 I1 x, y1 \1 [+ c# v

  323. / n& N7 @; m6 P' p& l7 S' N4 x& j
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    0 N( b( w5 ^  u6 ^& u1 E( e
  325. .ORG $D800
    5 n/ i# O) j. h; _! j
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"* q  I3 j  K$ P. d2 b
  327. ! b- k# ?4 s; t/ E; b

  328. # C  Y; A6 n6 x  j' ]) T
  329. .ELSE
    % Y6 K) ?% u5 G- H/ x; @

  330. % n. M0 ^5 i" j1 ?! ?+ r* [, p. B7 N
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK0 Q' m/ A" S2 B+ y2 G
  332. .ORG $9000% o3 V: m3 g9 W- W5 T: |1 a/ ]) R) V
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    1 ^% `* q: h: F8 U" m

  334. 6 r0 E( m! C% D1 c
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK% @3 u$ E" Q! z" F" q, r: m
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"$ `: w5 f# ?* ~5 g" ~' G

  337. : _9 L) t! w/ i3 t8 a: h3 U
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK6 Z% k# _; z' V" d" i- Y
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    6 s/ L+ t% c$ D) a2 Z. Y

  340. ! Z% |' S) }5 b3 H) E% K% `
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    1 w/ U1 `& m2 B8 w& B1 N7 s
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    " q& e1 C8 k, _( i2 @

  343. 0 ]( o3 v& _6 t4 ^! R! @+ r
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    ) I/ b  X* }& R% {, y  k! K8 @& b
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    + R- ^3 }4 U& |# _; [
  346. . J6 l! v8 {8 N, E
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK" Z7 j9 I8 z/ P
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    7 e: f5 r6 n; p- p3 F* V
  349. # M- _* A3 x3 t: H! p! Q  k  x
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    9 c; e6 L  a3 D$ i
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    # b. s% B/ A" s( e3 s8 k# K

  352. 7 S2 C& }3 a+ N" t
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
      q% @5 P! ]1 U. S
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    ! K1 h3 _/ W) `& Q( Y! h

  355. # K4 u  ?; L4 L' u) M. ]
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    ! v) S; S; m* \  y4 C/ ]& q0 R
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    - X4 X7 A4 y- G5 g

  358.   a  d% e, v7 A' y# M
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK9 \* J" _, x" r1 T0 V3 v/ ^& K' I- q' a
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ' @- U" e  J0 _3 s* ]4 B
  361. / d) b! X7 B& A' f( z
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK. s4 S  H( H" A# W& Z+ N5 ]7 i
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    # \6 k- M$ O- M* y/ m) |% k
  364. , m4 S% }  W  [& z) v6 b2 b# R% r
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    2 `& `- d3 H/ ~: K3 l
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    ( ?/ ]& ]3 J" _' E6 j, d
  367. 6 i9 ^: Z) k% A. f/ S/ b8 z
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    1 R9 U8 I+ N4 V# H/ q+ ?
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    4 S" t$ m, s. J" h# q
  370. ) [+ x; Q# U# ]+ a
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK/ N- @( F( \- K: |' M
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    % X( F1 S2 h5 B2 b) z

  373. ' V6 f7 ~& h) F# U0 J: f
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    ! Q! w- O5 p2 c1 G+ I% n3 A
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    / u0 c& G  V# F* b3 r! J

  376. - D5 e3 |/ d9 }3 S8 b( W* ?; l" C
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    3 u2 n) A* N5 g' r6 n
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    & O2 p% _2 ~3 W2 X) \& b! p) x1 d
  379. % s* \# d" C3 K
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    & s; F+ @3 H1 [0 S/ W0 M$ V+ D. B
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank", {7 S( c; x" L# r
  382. 3 M1 O; u! H1 j( O  c/ S$ ?
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK6 L8 n  e7 P+ y; k- _# n
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    " \4 H3 C. q9 t( u) o5 s. B, p

  385. ; c$ ]% Q, q* O- S1 }# K
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ( g$ ~3 P/ P" Y+ i- A* I8 S
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank". h8 B( {& c& V8 X1 h! a

  388. ! y  Q2 m; `9 W( n0 c0 H
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK+ C. }0 F, }' v) l1 P
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"# H) R4 q7 j( U, o# Z8 s& y' J* ^

  391. # q; `: r0 e; u* e
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK$ d  c! c( T9 G" J
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"1 m& H3 t; g. n, h  _; P

  394. + K7 \7 C& e' A/ P
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    + E+ F) r$ ~$ g6 G& [, Q3 W5 x" q
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    7 G: I9 U7 }$ W0 B5 L4 [3 Y/ p9 b

  397. 7 c" i' b, `9 \1 X( Y* Q% ~2 _. ]
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ( G& Q! \+ a- _
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"% L1 g6 v8 }( b9 d6 e+ V' m( x; X

  400. ) B9 w) ]- Y! f9 }( H
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    6 g9 m2 k* E; t3 B
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"0 {" J$ H+ |. @$ \
  403. % z3 G1 U4 X/ L* A5 Z1 V/ B# \0 w
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK5 b+ R* m: W; q9 w8 z4 Q) d+ v( \8 y
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"* X: Y- e4 E* r2 K6 U

  406. % ^2 K3 k' `3 d& }
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK% p! d# O# k% i( P
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ) @* v+ j( g3 c' N1 ^

  409. 8 r% g. i/ P4 I! K% _
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    - b+ b5 q5 |" Q5 ~
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"1 ]9 O4 w5 x/ ]1 x

  412. 8 X/ Z4 x! r8 s0 i$ Y0 A1 K7 Q
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK, }) d- K% e) I* P: P
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"3 F, v8 w1 y4 Z1 L
  415. 6 j7 D; b- F$ @/ P  j# {) y7 h0 `
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    / B% L( q# {6 u
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"  e, k# h+ O7 s. e
  418. 8 H5 e, g, Q' U* w6 s6 V
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK' m$ Y4 Y7 N+ D: @# `3 W
  420. .ORG $D400
    , k# b1 D( g& j) i
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    " I& \! `  f7 a7 E
  422. % v, Y4 b4 g$ [  {8 {! s; x
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 r2 y. i2 w; }. y! s6 H
  424. .ORG $D800: C; B  q/ B& |' j
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    % z+ v. Q- G" a5 {

  426. $ z; z! v6 J2 ^! ]+ W6 b
  427. .ENDIF
    4 Y  o/ j. H& G, O. S+ ^! J

  428. 4 Y1 u* _# F6 D. U/ k! K# S: d
  429. ;CHR图形数据' H0 A8 l+ _: v7 \& Q; `
  430. ;======================================================================3 @. u# ]5 I  r  ^2 K# ~2 K6 D
  431. .BANK CHR_DATA_BANK. e1 ~5 G1 r. @- f. {* w( p
  432. .INCBIN "chr_bank/chr_data.chr"1 r5 N" g/ @2 Z% U0 f- U

  433. ' D8 a/ O( Q+ r. Y5 a* S4 i, P
  434. ;======================================================================
    1 d( A* [4 x8 ?% E; b3 }9 k
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    9 `4 [( z/ T, S) B5 j' U( g) T+ w
  436. .ORG PROGRAM_ADDR
    * P/ }* ~7 Y! i2 V8 Z+ ~0 E8 Z  `' ?  W

  437. ! k5 V( x+ N. [! T; T) e9 z; x( X
  438. ;==================================================
    ! i9 g! f8 y* `1 T; y
  439. NmiProcess8 W" H1 _6 p$ |% E4 B/ N6 g

  440. 6 b: h  E- N, l' f( Y+ u9 n
  441. ;关闭屏幕控制
    / @6 q0 G1 e- O2 C& R6 z
  442. LDA #$00
    5 q; N' O: v9 v- r$ X
  443. STA PPU_CTRL
    ) m# k& z6 ]4 U; E2 O7 @) T9 r
  444. & X8 R" R% w9 E8 c( ^
  445. ;没播放音乐就不需要触发IRQ
    0 p1 h1 c  ^) X
  446. LDA <Music_Stop_State, m! p" b1 Y6 ^7 J* H, ], s% B
  447. BNE NmiNormal
    ) ^: {8 m) I, v( K* e6 H) Y

  448. ; O- A. O: Q: }. a" m$ x) V. _
  449. ;重置IRQ索引
    ' K9 g) l+ a& p) x
  450. LDA #$00; r" F( T: Y5 o, S: z) K$ l) c
  451. STA <IRQ_Process_Index# c  {9 B6 f: v4 B

  452. + l8 R& B% ~& f# @( b
  453. ;时间秒数为空则跳过5 a. Q! o- @6 K8 e8 E$ e) _( U: V
  454. LDA <Time_H
    0 o# S, t9 W" ~2 o2 q- ^8 P; l5 z
  455. ORA <Time_M
    2 m4 v1 d3 a# v. A
  456. ORA <Time_S
    ( x1 Q) k8 j7 s6 R
  457. BEQ EnableFirstIrq
    + r9 ]% b( ^2 \

  458. . Y2 G' _( G( _
  459. INC <Scroll_H
    * X! b! l4 n- m
  460. * e$ y  r3 u) ^6 |. a8 s& K1 R
  461. EnableFirstIrq + w  ?/ ?- X" h. Q1 `1 |9 j6 O
  462. ;80条扫描线后触发IRQ
    2 {! z9 x  u5 q# q. b/ a
  463. LDA #IRQ_SCANLINE5 P6 Q( V1 ?5 u0 L4 p7 _$ H0 _  k
  464. STA MMC3_IRQ_LATCH
    $ }5 F! i$ ~( A6 e  ]
  465. STA MMC3_IRQ_RELOAD7 U, r% f* Q- V+ C4 y
  466. STA MMC3_IRQ_ENABLE3 @$ X: Z& q' \1 K" K/ p
  467. CLI
    " ~3 ~0 Z7 ]% [9 t  U" i& r
  468. 5 q+ K3 y7 {) p( G+ I
  469. NmiNormal
    & I" ?+ ?0 d+ b8 D) ~

  470. ; K% X% w7 g- }* n" E7 u, r
  471. ;处理PPU图像
    1 i, a1 T# z! Q; F7 R) e
  472. JSR PPU_Proc2 p: f  }7 E- K' z' r% |
  473. ; X( W9 @: a+ X  H; T; U' F: p
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    . x8 ~' P: R$ ^8 v6 s  r
  475. LDA PPU_STATUS
    * g( m2 c. k) X5 F
  476. ;LDA #$00& K3 Y# R/ o! S2 b8 y$ ~0 `5 t2 f
  477. ;STA PPU_OAM_ADDR5 ]( n( n5 h. E. [- n
  478. LDA #OAM_TEMP_ADDR / $0100
    6 N2 N; L' i1 M! |
  479. STA OAM_DMA
    9 F4 g* \% L* c: Z, x9 @+ `
  480. 9 p# v9 L3 I. H% V
  481. ;启用NMI中断( T# f2 i2 R, r: e& o" u
  482. LDA Screen_Ctrl& @/ w5 q2 W" z7 q1 Z  ~# H  j, W% r, v
  483. STA PPU_CTRL
    ' q3 ?+ f, F; _$ X+ R( Q, Y

  484. 3 q8 v- b, z6 j4 S" Z0 k" K
  485. LDA <Text_Disable_Flag# t) N5 ^) S4 F2 m4 f
  486. AND #TEXT_DISABLE_RAM8 P8 W- Z7 K% D4 O, L: B
  487. BNE Nmi_Sound_Play
    ! s. v, }2 l2 U0 p, x

  488. 2 U: {4 |& F0 \* v
  489. ;处理手柄输入6 Z/ w) d2 `* i: M( [7 f
  490. JSR Key_Proc3 l: m6 p* _  B( h* [3 b
  491. ( ]5 L+ v7 ]9 z. r, f
  492. ;切换音乐(手柄触发)4 g" B3 P* |6 O. \, v( z6 e
  493. LDA <Time_Wait_Cnt
    4 n% w3 z4 O, k/ n
  494. BNE Nmi_Cursor_Arrow6 A$ ~* p3 C% l0 \! m& i2 d
  495. JSR Change_Select_Item6 I- W4 y4 u8 W! O4 H( v% w; n% d
  496. 7 L0 `3 R8 ?* `7 S4 B( J6 k
  497. Nmi_Cursor_Arrow6 q& m+ l- o$ T! \8 _, x
  498. : ^/ N' ^; _) Q6 K( J+ Z+ ^5 G
  499. ;处理光标箭头, N6 @8 S: p1 o' \; e2 n3 g
  500. JSR Show_Arrow
      S% b5 A# g# D' Y
  501. % R. }. J5 L/ e5 g4 N
  502. ;更新调色板
    + ~& V) q, c5 z
  503. JSR Update_Palette_Data
    6 F+ t0 k) E; k& l$ Z
  504. " s! e9 z& R+ l  h6 W0 d
  505. ;显示时间(缓冲)
    / K6 x/ f" ]: Z2 M
  506. JSR Time_Show
    - r* `! T8 P: M$ o2 }: ]
  507. ( v# l: g: v0 ]- d( ]: ^* Y
  508. ;音乐显示(缓冲)1 N3 V( U. j/ v# i- M
  509. .IF SOUND_BAR_SHOW_ENABLE. I- z" \5 _" A7 K
  510. JSR Music_Vision
    * i6 t- [" _% Z+ Y+ l/ R; G8 E
  511. .ENDIF5 G0 G, \5 Z* h* Y% h; J3 o
  512. : C. `% z7 C, L# r
  513. Nmi_Sound_Play
      N+ Y9 X/ m$ w$ M* [0 I( u
  514. ;播放声音+ W, \1 Z1 S4 ?  Z) m
  515. LDA <Music_Stop_State1 ^( S. W+ ~+ `% W! \/ z8 W2 y9 j
  516. BNE Nmi_Time_Wait_Set
    ! P. }! Q% @( }8 \
  517. JSR Sound_Play_Proc! H% R: C' Y+ f( I5 Y. G' G8 F

  518. - S8 P9 t+ a/ w2 g3 y. ?8 x# e8 {8 N0 f
  519. ;播放计时9 A& ]. b  H4 u. A0 ^8 h
  520. JSR Time_Count* p3 T* Z5 f' T

  521. % n2 S$ ?: @8 t8 Q0 s' k
  522. Nmi_Time_Wait_Set
    ' ]" T0 \  t2 n- h% n9 S1 R) H
  523. LDA <Time_Wait_Cnt
    ; Y( G) u* |% ?% ^
  524. BEQ NmiNormalProcessEnd
    : v5 v; j  A5 b1 ]/ p
  525. DEC <Time_Wait_Cnt
    9 h: I+ v. M$ K) G. M6 t  z
  526. NmiNormalProcessEnd
    0 ~- T3 g% u: _3 H+ D/ ^

  527. 7 T& n5 Y+ K. ~. W" u4 R
  528. INC <Nmi_Time_Count
    1 m8 S1 J. E" ]  F' {
  529.   |. N5 e7 p" ~! G
  530. RTS
    5 U2 B9 }& _( t. p4 @! h
  531. 6 T  O3 a9 i9 X8 T* V8 J2 B
  532. ;==================================================
    9 z- Z" e2 b7 i% _/ u( d' M8 ?8 W8 R- `
  533. Init_MMC3
    0 u( l, K* x" O) q! \; a& L
  534. ;==============================8 E& v( L. r8 r. E) L9 C
  535. ;禁用IRQ4 ~# R4 O/ _# g) d4 P1 S2 G
  536. STA MMC3_IRQ_DISABLE8 t: {& B& M+ F( R7 K
  537. 7 ^/ k( |8 c6 ^! v& `
  538. ;水平镜像
    0 d; z2 G! o5 w- N
  539. LDA #$01* E; Z- T, J) V7 B
  540. STA MMC3_MIRRORING3 Y/ N1 I- }; |0 P. S  v* B" }9 F! T

  541. $ {; i# c% V# k( l
  542. ;初始化图形bank
    2 R$ g4 Q) Z/ A; D, i
  543. JSR Init_MMC3_Chr_Bank6 ?7 P" C: Z4 M1 G7 e  \+ r3 a
  544. . m$ c0 q) v& a. j/ y
  545. RTS4 Y1 a) T1 g1 W/ m! Z$ G# l7 R
  546. ;==================================================
    ; t' v: L4 }2 K/ ~, n; E
  547. ProgramBegin;主程序
    # k4 y1 K+ _# ]9 ]( Y
  548. LDA #$00
    6 a$ m* \5 y) p- |( I& j
  549. STA PPU_CTRL
    ( I- Z& K9 E' i* J! Y
  550. LDA #$00
    ; Z% }& R, _* c
  551. STA PPU_STATUS, R) Z+ {- K2 P- ^2 I
  552. STA PPU_MASK
    ; x& a0 p- Q4 k; _' M
  553. STA JOY2_FRAME
    5 `* l$ Y& s- s; d
  554. 9 s3 d0 l$ c# N( W1 `5 I/ z% c
  555. STA PPU_SCROLL: ]  j- L% w; k0 k3 A( H8 @/ Y; A
  556. STA PPU_SCROLL7 L! D" K  h1 Y. I, a9 H

  557. : c1 o0 _8 J" ?: R6 R- k
  558. ;==================================================
    / M* A& c; n$ S/ s' D7 v9 X
  559. LDX #$FF+ w" S. S8 @) p1 Q
  560. TXS  z; U* R4 ^) ]: @$ D5 v

  561. ' j8 D6 v% |8 _, P0 X! F
  562. JSR Init_MMC3% L. ^: f6 v5 S* n
  563. / Y% a2 d" E1 w3 V& H% g
  564. LDX #$02
    , h# L4 m+ b8 G" [: N
  565. Check17 \6 v# u  X9 O3 ^: x' {
  566. BIT PPU_STATUS
    + i2 _' t+ k6 O* L7 m) M3 I1 g3 k5 j( g
  567. BPL Check1' B/ D8 p: h: L
  568. Check2; o8 x3 a4 k" A' ^  x, h
  569. BIT PPU_STATUS
    1 T1 ^' Z- {3 Q. v
  570. BMI Check2/ S6 [* v. z& I$ M8 j- d+ Z) T
  571. - ^: K- j) L( X6 O3 H
  572. LDA #$0F' X/ X- z6 g0 M' |
  573. STA APU_STATUS
    4 o& f3 j7 E. H" x
  574. LDA #$C03 L8 r& z1 \" o
  575. STA JOY2_FRAME
    . M/ g& |! t+ G2 P
  576. ! z6 |& N$ _& Z' t5 R  V6 B. S
  577. LDA PPU_STATUS6 `1 Z2 Q6 n5 A
  578. LDA #$10
    $ c  ?$ d2 R* ~  T2 V" u: A
  579. TAX" C, }9 j/ R, D1 ]( }
  580. Check3
    9 q& l/ [) y( I; Y+ ^7 x8 f8 C8 i6 ?
  581. STA PPU_ADDRESS
    " H3 M" ^: Z$ z
  582. STA PPU_ADDRESS* i# E9 e- }$ t% J
  583. EOR #$00
    ; q9 W* T! d) Q! e! J7 J: G1 e
  584. DEX
    9 K4 T  N" K0 S5 b4 a# r
  585. BNE Check35 H, _2 h$ g- ^) v% ~. g+ z2 J3 e
  586. ;==============================
    2 V2 E4 B% b# S# ?; ?4 ^( L2 l
  587. ;调色板清空
    , \, ^7 J( o2 K
  588. LDA PPU_STATUS/ s8 B9 M: G8 C7 V/ {& \- g
  589. LDA #$3F
    # Q8 }$ B6 u& t) w# d! d
  590. STA PPU_ADDRESS
    8 `6 f3 K8 X8 m7 K- T; @6 W8 ^( t
  591. LDA #$00/ [7 n( ~7 |% J6 y
  592. STA PPU_ADDRESS
    ! T8 N, i7 E% G! x; N
  593. LDA #$0F
    2 I5 f' Z. q2 G+ g
  594. Palette_Clear6 _4 |' \, ?) ^& K# j. E
  595. STA PPU_DATA, e0 @& A5 |: K: L9 `
  596. INX/ e' {, ]% \; X
  597. CPX #$20
    % l5 n$ ?1 M& T. f- s, K9 \7 K
  598. BCC Palette_Clear5 d1 n8 u# |+ f0 M: ~7 s! _
  599. LDA #$003 \& J+ ]+ h& [1 E
  600. STA APU_STATUS2 i) |+ X  K# y% t

  601. % c& K& z1 @; O- f* B- P
  602. ;==============================4 {, Z1 V" k; N6 z8 {8 k6 o, d
  603. ;RAM初始化
    " A7 U, E6 Y- U
  604. RAM_Clear_All: K% l. w6 J9 ^
  605. LDY #$00
    - q  M0 g0 C: `. W' d4 T5 h
  606. LDX #$08) Z5 L) c9 |3 Z$ n
  607. LDA #$002 E/ r6 t0 `" w- u8 c
  608. STA <$00
    1 h8 @& E2 K; }# H
  609. STA <$01
    4 [$ S$ j. ]0 s; O' R
  610. RAM_Clear_All_Start
    ( V0 X/ u7 X5 Q  s
  611. STA [$00],Y; T$ ?% H( i9 [3 g
  612. INY# Y% e; X, o) |8 E
  613. BNE RAM_Clear_All_Start
    / M& L/ b5 z8 Q; d$ g
  614. INC <$01
    * O( `+ ?: p* i6 y; n
  615. DEX
    4 f+ O& [- M! I( M
  616. BNE RAM_Clear_All_Start9 a) @6 m! M( V
  617. : K, `. @% H  [5 u* k
  618. JSR VramClear
    . u( ~% W& c% O3 B* V
  619. JSR VramInit
    ! Q$ e1 u1 f6 e0 _
  620. JSR OAM_Ram_Init
    " n. a- Q1 M+ e8 r0 W3 b2 [4 W
  621. JSR Init_Palette_Addr5 V3 ]( b$ ]( N7 q9 I* |

  622. 9 O$ Q( N  M, c; [3 F6 B* d5 w
  623. LDA #$FF
    + q0 b% G0 H$ [7 W  q
  624. STA Use_Ram_End$ S+ O2 {# R5 `- K
  625. ;==============================
    3 ?/ |2 f/ @; i; ~1 H) s6 @. a
  626. ;初始化背景调色板
    4 S2 ]) U" ]8 l+ ]! B  A
  627. JSR Set_Palette_Color' ]  ]  m! _( u' a
  628. JSR Set_NameTable_Attributes
    . G8 a, Y( G; P7 s. |) h

  629. 8 c  p9 p( X3 ~% b! K, i; \, h" U
  630. LDA #$00" n. P; N! @/ n4 u) w8 \3 h
  631. STA PPU_OAM_ADDR. \# ~% s" ?# Z
  632. LDA #OAM_TEMP_ADDR / $0100
    2 l! H* O) K5 O" }
  633. STA OAM_DMA
    " W+ y) u- X! M
  634. & s: A& }# p/ }& f" P9 K& e, w
  635. JSR Sound_Reset_Proc' k' F' |1 R9 }2 c8 O# D
  636. JSR Set_Sound_Total
    - r+ b7 l7 Y8 j# a. r3 _1 E

  637. + l  y" A; Z9 h' ]0 c' ?! Y
  638. Init_Start_Music
    / J( F/ L0 y/ c) n
  639. LDX #$00
    # Q+ s) J% e0 q" ^4 {+ T. i
  640. Init_Start_Music_Write  m/ T7 D' e: B& B2 q
  641. LDA Sound_Start_Port,X0 U' C2 A  B& H6 K2 w% u
  642. STA <Music_Cur,X4 L3 q+ G6 D3 \: n& x' ?% ~9 K& M  [
  643. INX
    * r0 H1 u) u5 ]  z
  644. CPX #ITEM_MAX_SIZE4 r/ o; h6 z( v  i# {
  645. BCC Init_Start_Music_Write
    & H- }  I* Z4 T* U7 }

  646. 3 s# z. B/ }7 L3 r8 m
  647. JSR Show_Music_Text
    3 ~$ Y) X4 o9 i5 d+ B& ?: g

  648. $ N& E/ K; l! l5 Y0 v$ L
  649. .IF SOUND_BAR_SHOW_ENABLE+ G. Z9 F9 s- X: _" Q1 ^
  650. JSR Sound_Bar_Text_Set- a9 y, _2 R% [8 Q" k4 i0 C
  651. .ENDIF
    % [* L0 x6 @. b! t0 o7 f( z
  652. 9 ?7 D* S5 j& h1 B& |
  653. .IF Track_Name_Pos
    / ]+ E$ L+ U3 x% P/ d6 h  h
  654. JSR Show_Track_Info( q) Y- p1 N7 i
  655. .ENDIF
    ) k; G4 F+ r8 ^( i# c! ]! [8 X+ O

  656. $ q. J9 I) C% m" ~  C5 K9 W9 j
  657. JSR PPU_Proc0 Z7 E/ |9 h9 E5 h# |2 J) }

  658. , l: }0 \" k, o! p! p
  659. ;==================================================1 @/ L: t3 Q( [$ w" u$ h5 q( _
  660. ;音乐bank初始化
    9 j/ r* B) @+ f; @+ a" X) Z
  661. JSR Init_Sound_Bank
    ( o. G5 K% K( K9 G1 F9 f& b
  662. 5 G( r: V9 F! a( w8 }3 N! L! H
  663. JSR Music_Show9 ]6 B; w8 Z% z% @; {# r/ E* o
  664. JSR Time_Show
    6 H" e5 l  K. ]$ _" X0 ]( i. o
  665. JSR Music_State_Show' P/ K8 d6 z: \: q: {) ?0 y) m4 I
  666. JSR Time_Delay
      k6 I4 q9 |7 p( [* o% g# i6 T
  667. % Y7 C/ D: j1 B2 S: N! t+ O7 _
  668. LDA #$01
    7 q5 O/ `- U' u) j8 H% L  W; U) b
  669. STA <Music_Stop_State  y! p, e$ j* @
  670. ; h* q$ @( @: ~- m8 `5 ^
  671. LDA #$88% K  S/ V( A0 @, ?
  672. STA Screen_Ctrl, D* q- G( W5 d: J8 u7 P9 A
  673. STA PPU_CTRL3 X' a* }# b: e7 X

  674. / T, C* _: p; c1 f. K) p' e
  675. JSR Show_Page_Text; z6 c- l+ [' V6 {% s5 ^9 m: Q, H

  676. / j4 r6 t# Q* `# }
  677. LDA #$109 u4 {7 {! i$ ?6 K, v; d: J0 s
  678. STA <Time_Wait_Cnt/ Z1 X# F# U8 ?0 P; p/ ^$ M' G3 A

  679. 7 x/ m9 i5 P7 P* `" }! l8 p& i
  680. Wait_Time_Over
    1 E* ^& @* {% o) f, F0 e
  681. LDA <Time_Wait_Cnt* `* F! F. O- {2 B9 b
  682. BNE Wait_Time_Over
    " e4 |. c, f6 W

  683. 7 L& r) e! G# A# F( C; z9 {
  684. JSR Show_Arrow
    # ~8 x/ d. U; G  n
  685. LDA #OAM_TEMP_ADDR / $0100% v- a4 E1 Z$ a
  686. STA OAM_DMA
    5 C* i/ P& y" C( W1 j  s" P1 I
  687. ( ]3 Z" D9 q+ h" W' c; Q
  688. LDA #$1E
    4 g  o  B( d$ j+ \- T* g8 W1 e
  689. STA Screen_State
    7 ~: k: \9 O% ~
  690. 5 L, C: j9 @9 ^# u7 [" k$ D9 y$ L
  691. LDX <Music_Item_Cur
    . v* e# h- u, E
  692. LDA <Music_Cur,X- I" Z! V, R7 N$ o" i& g
  693. JSR Sound_Init_Proc
    7 L2 e+ V+ {3 B* _! T0 d  D, t# Z

  694. 8 J  E& o0 f) p; G4 H/ V$ f6 j
  695. CLI  c4 \0 D9 `% c) j1 e. i
  696. JMP MainLoop
    " S5 B8 |+ a* [, \7 `/ D" t
  697. : U7 T4 @: c) `9 D0 a5 U
  698. ;==============================
    : U- `# e9 s: Z& S2 z
  699. Time_Delay;延时等待3 B  B( J' Z: L: C. f( m
  700. LDA PPU_STATUS: b1 F5 Y3 l& V- b3 ?% R( _( ?" t
  701. BPL Time_Delay; T9 ~# s$ x+ |# R, W" |
  702. RTS
    7 }4 |' a( C' x) O# M6 Z

  703. 9 p, d! ?+ ~$ w4 s" U
  704. ;==============================
    ) B8 f0 P. J* k& [8 K. a
  705. OAM_Ram_Init;初始化精灵内存$ Y( s. n# r7 x. |9 O: }
  706. LDX #$00! F9 c# s2 m+ O' U! z8 r7 W
  707. OAM_Ram_Init_Write4 d- l4 d  t5 b1 H7 x# P) f& Y* V
  708. LDA #$F8, |! x  a/ ^' k" |5 J
  709. STA OAM_TEMP_ADDR,X4 [0 f6 u3 n1 G2 u; O7 @6 c
  710. INX# q. V1 j$ V- @; @
  711. LDA #$F82 w& `$ B' U9 h/ g% C6 k0 {* ]$ ?
  712. STA OAM_TEMP_ADDR,X0 w( L. G) D3 K* s2 s4 ?) y; }
  713. INX
    ' v; T, H+ K. C: g% w: d5 Z& b
  714. LDA #$00
    1 V( Y, }6 z8 i0 p, k
  715. STA OAM_TEMP_ADDR,X
    4 m0 W; a4 m2 k$ c5 s, W
  716. INX
    0 `+ M( H: q9 v9 x% k8 p
  717. LDA #$F8& W8 F7 T( @4 Y
  718. STA OAM_TEMP_ADDR,X
      j# F& H3 |8 g4 H
  719. INX
    # B/ q  F: N% Q5 F& P; c/ Y
  720. BNE OAM_Ram_Init_Write
    % Q0 u2 e' `3 f. q) c: y  X
  721. RTS
      F# Q+ H) S* H, _$ ^  L' k

  722. . \; E9 ~# H. ^, P! G, i) n
  723. ;==============================
    0 t# H5 I3 N. y! C9 |+ k
  724. VramClear;初始化图形内存7 S3 h- U1 p. H! K8 C$ l7 h
  725. LDA #$20
    ! J5 S; T) n& M- p2 Q$ J- \, M# G7 W
  726. STA PPU_ADDRESS# j0 Y* e) L0 d9 n" v; @
  727. LDA #$00
    4 f" z2 i3 C( P7 G  v: u
  728. STA PPU_ADDRESS2 [1 V0 X% J/ K, l
  729. LDA #$00+ y2 A% H* A% B" u! m
  730. LDY #$00
    # F8 c" e* k$ v8 \$ B- N2 J
  731. LDX #$10
    ; E% o- J4 g7 E: o1 J0 A6 R. d0 j
  732. VramClearWrite
    , q4 b) z' j6 ?: E0 F1 N
  733. STA PPU_DATA  K/ K* |* q- A3 T& Y
  734. INY, n3 N0 J+ _$ x; F
  735. BNE VramClearWrite
    ; l* A3 j0 T) i- V
  736. DEX
    : l! ~% G! t( v/ {  q
  737. BNE VramClearWrite8 i1 `* q+ e( q' @3 d& k$ s- C2 N
  738. RTS
    8 o- l$ \! Y8 w7 Q. p" `  N

  739. 1 ^' n# Q+ u7 `( P8 K$ K. G$ b
  740. ;==================================================
    / l1 J3 s* ^. t. G' h/ W
  741. ;设置MMC3图像bank
      }& k6 d+ ?. Z6 U6 h
  742. Init_MMC3_Chr_Bank  K9 b( ~- X2 k* a" J
  743. LDX #$05- U" G" T% `, {, [0 w) E4 w
  744. Init_MMC3_Chr_Bank_Write1 |- I8 A  g7 k% T) U
  745. STX MMC3_BANK_CTRL
    % W: F( v# B, o  ]
  746. LDA MMC3_Chr_Bank_Data,X2 R' ]  b1 S" x8 b- R
  747. STA MMC3_BANK_DATA
    ! t0 M) ?  ^% h8 S
  748. DEX
    ! e3 y/ f! C% o7 B
  749. BPL Init_MMC3_Chr_Bank_Write
    % Y: ~3 Y/ U$ h5 i# |
  750. RTS
    ) w7 O6 m( C, [! P6 ?
  751. ;--------------------------------------------------
    7 X9 G+ q$ Y0 P; @7 U+ d; ~
  752. MMC3_Chr_Bank_Data+ a# E( i" H# @. y9 W* s: e
  753. .DB $00,$02,$04,$05,$06,$07
    ! ~8 N1 \4 Q/ W
  754. & l1 l+ J2 [$ ~- t* i0 u; Y7 b' U
  755. ;==============================! u# ?" ^) F) _9 e  C
  756. VramInit;初始化图形内存- m; m6 B9 G/ w  ~! {& i, |( x* x" {
  757. .IF CHR_RAM_ENABLE
      O* N, E0 J; P
  758. LDA #CHR_DATA_BANK0 x1 q0 u, p3 f2 t  D3 X
  759. JSR Switch_Bank_A000
    9 [, L2 @3 Z# i
  760. LDA #LOW(CHR_DATA_ADDR)) @- [0 g' O3 }/ r& n
  761. STA <Data_L2 m* O- I' G; i/ t+ X3 B$ e) V  O
  762. LDA #HIGH(CHR_DATA_ADDR)9 S5 [+ @/ m2 F# L! O/ z
  763. STA <Data_H
    0 Y9 Q) A3 c5 l. O* `
  764. LDY #$00" R) x% C  D7 r8 `  U: c* R# G. l
  765. LDX #$20
    , S. @1 ~# A7 y  Y  R
  766. LDA #$00
    7 R5 T) s# {0 P1 Y
  767. STA PPU_ADDRESS( x! M$ x: v; D
  768. STA PPU_ADDRESS* H/ M( z+ @# U, H  Z: O3 D- v
  769. VramInitWrite
    $ M. r* Q4 f* Y
  770. LDA [Data_L],Y2 \9 `1 ^' t; _6 ]" t6 V
  771. STA PPU_DATA. A' A: a. l& t2 i/ |7 o
  772. INY' t- \+ j. l& g) _, U, H  n
  773. BNE VramInitWrite
    ; y9 C  A& D) ], }( ?3 c8 H- i
  774. INC <Data_H
    ( d* B1 G! u0 L' ^, _9 Q
  775. DEX
    ' P6 u6 r% G$ q5 g
  776. BNE VramInitWrite
    & v0 r% B0 B' \4 Q5 e1 L
  777. .ENDIF
    ; s0 `7 ]5 r; a: g, i7 _3 f* m
  778. RTS& p+ f9 H7 V' m" D! [

  779. # ]0 [. l* w& Q1 J  M( ]
  780. ;==============================' U  \! e( ?3 W. x: m; _
  781. ;音乐切换
    # b0 e8 ~' T! `. D
  782. Music_Play_Change
    ) K, o+ E( N$ V- @( |% l1 b
  783. LDA <Key_Once8 S$ J1 ?& ^8 m' G" `) b
  784. AND #$FF0 j' c2 F3 d6 d8 C0 P# C- ~; @
  785. BEQ Music_Play_Change_Check
    : G8 F. N, F+ m3 z+ C7 W0 Y4 ?
  786. 8 N6 }' g/ p) L$ L: J4 @8 G
  787. ;禁用音乐条刷新
    ( I- E$ g- V8 K' w
  788. LDA <Text_Disable_Flag" p4 C- p. `; r4 N) ~/ x
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME. d1 q( \8 R% v: _3 O" j. Y
  790. STA <Text_Disable_Flag
    ! ]9 C4 Q& k: q3 I* Z
  791. 3 n5 _  Z5 T% x
  792. Music_Play_Change_Check& D* g  I" O+ b: Y8 q
  793. Music_arrow7 A0 O0 D' m! T0 R; w# S7 d
  794. LDA <Key_Once/ M+ c5 N( h% S) K' j
  795. AND #$0F; ~* O" S8 Z! D. |  t! a; Y- L
  796. BEQ Music_Play_Change_End7 a% s, Q& a5 m1 @& B  V9 `
  797. JSR Music_Track_Change+ }: p  W$ }# J: {
  798. JSR Sound_Reset_Proc
    : u0 Q& N" h* x, J
  799. JSR Music_Show
    5 A/ U. H( o3 A7 V( r. a- D8 j; y
  800. Music_Play_Change_End6 G( [  W) ^' F6 o# H
  801. RTS  m: E" p  a- S: W; e

  802. , e. j9 X& N3 h% i$ m6 m
  803. ;==============================
    7 G3 M. Q) A2 g$ w( ?( l: R0 O; {( s
  804. ;音乐曲目切换7 E% d' A9 B1 T* Q: z, n& y9 S' [
  805. Music_Track_Change
    # [2 \1 l" w& Z# i4 T! \" S
  806. LDX <Music_Item_Cur$ j+ \) n$ \5 d/ ^' ?$ z; X
  807. LDA <Music_Cur,X& {! K3 A* [. t' u% v% n5 A
  808. STA <Music_Last
    9 `+ s; P+ m) U1 z3 z
  809. Music_Decrease1 Q9 `. C, L: |- p$ j! S0 [
  810. LDA <Key_Once% n3 D) n, W1 Q9 G
  811. AND #$422 |! L0 z  k4 l2 E
  812. BEQ Music_Increase- X' l  K# \; Y1 ^
  813. LDA <Music_Cur,X( Z7 H, M% |4 W/ }
  814. BEQ Music_Increase
    ( K; L, w# k7 n+ C. ]0 _
  815. DEC <Music_Cur,X  {! r* f/ m* i( b# m
  816. Music_Increase
    4 _6 Y7 H2 ^- V; R
  817. LDA <Key_Once
    $ j+ Z) F4 S+ |/ a% k% h
  818. AND #$81) J+ }% d: K1 @( N  c0 z/ `  e) @
  819. BEQ Music_Decrease_10  K; P( T' C. {" |( W2 [
  820. JSR Set_Sound_Total2 M  Z, W0 I: M, P1 \
  821. LDA <Music_Cur,X. k+ D$ X9 G5 ]' S
  822. CMP Music_Total
    2 R& h! S4 B1 A" d" \( m$ ?9 l' Z
  823. BCS * + 4
    + Z% H! P5 W$ @
  824. INC <Music_Cur,X; e8 {% R8 F0 j3 J8 M" k  V  c. q
  825. Music_Decrease_10" o8 t+ d% U! w1 g
  826. LDA <Key_Once! s9 p2 z8 N) J
  827. CMP #$04
    . Z% F* ]* }  F# }9 a# E1 ~2 v
  828. BNE Music_Increase_10+ u9 k  u' e" R  F* t
  829. LDA <Music_Cur,X3 G1 M! ~' o8 ?
  830. CMP #10$ t$ {6 x# q9 S8 D# `- H( b
  831. BCC Music_Start_Song_Min
    / c. ^& u3 m4 Z
  832. LDA <Music_Cur,X  @$ {4 G4 L* h9 b1 ]
  833. SEC* E( w% H2 b+ z% [1 k0 S
  834. SBC #10
    $ s  G+ k  X' k' }/ y
  835. STA <Music_Cur,X
    ) {( x; U0 e  F) h7 j/ v: g) w
  836. LDA #$00; n2 p$ q8 H: Q
  837. BEQ Music_Increase_10% x9 D' ]6 U/ d$ j! R+ C
  838. Music_Start_Song_Min
    4 ^+ Q1 W0 i4 q
  839. LDA #$00# K. H2 G' R1 e. {* ^( Q, ?- a7 ]
  840. STA <Music_Cur,X( f' C$ H/ J6 I% w
  841. Music_Increase_10
    ! A8 \, v3 R& l, t+ @
  842. LDA <Key_Once
    $ g+ @8 s0 |- |
  843. CMP #$08" \3 V3 |" |3 ^! Y# b0 n. J. v
  844. BNE Music_Track_Change_End. r9 A. p  |  }/ {# u) V
  845. LDA <Music_Cur,X
    2 y4 U$ S* V: V# U4 r# c
  846. CLC: b9 t4 v8 c& n" J9 f0 n
  847. ADC #10
    & S: J* G, X& O0 |7 }  u  {1 d9 Z
  848. CMP Music_Total; Z( @0 M" L; f0 y5 k
  849. BCS Music_Start_Song_Max1 y+ D9 i) g6 ^7 W$ |  m, N
  850. STA <Music_Cur,X
    8 k4 t; O! ~: u& r$ U! E1 u# D$ O
  851. LDA #00% U* }/ b& m4 t+ \8 C; ?9 b
  852. BEQ Music_Track_Change_End8 ~& O; {" d+ {
  853. Music_Start_Song_Max
    8 H7 X4 S& I- f
  854. LDA Music_Total
    * e4 n% S& p: v7 h
  855. STA <Music_Cur,X
    " B* i2 [8 j% Q  [/ |' D% @
  856. Music_Track_Change_End
    . O+ d, T: N* Q; j
  857. RTS
    & W* I( S8 T7 j& ~
  858. * I; U' C  h' \! ?( U2 P
  859. ;==============================
    0 y4 _; p$ F2 ]" S6 @
  860. ;按键处理# a7 u- Y& T; j  p
  861. Key_Proc5 U" Z5 k3 A% W, @8 L/ k
  862. JSR Key_Scan
    0 u; K9 W+ w' _1 [+ x  A: |
  863. LDA <Key_Keep
    $ P, v* Z  j. J: _1 a
  864. STA <Key_Temp% k# o& a2 R- \% A5 i
  865. JSR Key_Scan, O& f0 L4 O6 g
  866. LDA <Key_Keep
    & y9 ]( ?7 h9 O) j0 R% X% y4 k
  867. CMP <Key_Temp
    0 X6 L* [( ?$ C; I* I
  868. BEQ Key_Get_Once% C: P2 v4 b1 p
  869. LDA <Key_Kemp
    ( a9 ], F1 {; o; P0 u) y1 r& w
  870. STA <Key_Keep: e6 o3 ^+ X! B2 z
  871. Key_Get_Once( l& o6 m2 x/ z! E% L5 ^0 W3 {
  872. TAY
    2 y4 Y+ {0 ]" |9 \5 m  y6 g
  873. EOR Key_Kemp
    * j+ k) E( y  F1 S( ^9 B
  874. AND <Key_Keep7 p7 G  b6 `/ ]5 a
  875. STA <Key_Once9 q2 J$ L# W( R, L3 c
  876. STY <Key_Kemp) ~7 s7 M) z$ N. c' u' p
  877. RTS% k: C- F* U5 [( h4 x2 @; C
  878. ;------------------------------, r' j; p( H% A* P" x, W
  879. ;按键扫描& [% a! B3 ^* b& F
  880. Key_Scan
    8 r* D/ \2 y. d
  881. LDX #$01* N" u$ d+ {3 @0 s/ R% E& }
  882. STX JOY1_FRAME" u- I5 q! f5 o+ e
  883. DEX$ O2 `" ^# F, ]# ^2 p5 E
  884. STX JOY1_FRAME
    & b6 F; x9 R( h$ g- Q
  885. LDX #$08% I( @" g. r4 a: b4 _3 g
  886. Key_Value
    & B/ }- y8 ?; t& b& C9 u6 Z
  887. LDA JOY1_FRAME! X. q- n$ }$ K- u0 a0 y
  888. STA <Key_Getv
    6 T7 l, N, {4 [4 L- Z, [
  889. LSR A
    & v, w  }! e9 X2 c4 x# r
  890. ORA <Key_Getv$ N* d9 j' m) R3 p
  891. LSR A, m# R; y/ J0 \9 A" z# r1 E. s4 c
  892. ROL <Key_Keep& O' {- g5 R. \- h9 g
  893. DEX1 I5 `$ i: l; t+ ^
  894. BNE Key_Value: o% @" o* D6 }0 z
  895. RTS# E. V( S% H$ U; ^8 |! m
  896. 5 }) ^( o5 r. f: u) s% c
  897. ;==============================
    : R$ F6 H3 H0 M3 g0 |) |
  898. .IF SOUND_BAR_SHOW_ENABLE! ]: V7 l5 a7 s6 R4 v' `- ?
  899. ;音乐条显示2 d5 [& L2 r6 ?6 G3 Q
  900. Music_Vision  y) D$ E' R' t# F6 L
  901. LDA <Text_Disable_Flag( S* f& {  b* g2 z2 ]' b- w
  902. AND #TEXT_DISABLE_ITEM( [! h) s* Y$ x: ?/ z
  903. BNE Music_Vision_End
    ' s0 e% r6 m' |8 G, ^+ p$ [
  904. AND #TEXT_DISABLE_BAR
    3 c1 z. m, O8 b' g4 P, V- {( k
  905. BNE Music_Vision_Set
    0 H5 L$ K! y% G: B  \' Y! V
  906. LDX PPU_Cur
    2 \3 q7 Z0 _: P- d, g$ m7 L0 I) A" v
  907. JSR Music_Animation' o* y$ s' _, l, M
  908. STX PPU_Cur4 d* V! c7 T( D# ^4 p+ ?. T  Y
  909. Music_Vision_Set' z- B! @; j% c* _
  910. LDA <Text_Disable_Flag
    " T# z" [$ ], j6 K( ^
  911. AND #TEXT_DISABLE_BAR ^ $FF! i3 B* C# l! {
  912. STA <Text_Disable_Flag2 B/ s1 V, K) N
  913. Music_Vision_End
    & M- [( h4 f3 t" c; s
  914. RTS3 l( V0 S) M0 w1 C: N8 P8 J+ ~6 t, X5 Z
  915. ;------------------------------7 W* s' D* Y1 |+ Y0 A, P' o* r
  916. ;音乐条显示处理4 Z+ f. ~7 d- f8 U- q
  917. Music_Animation
    + X. }& V' J; B4 P
  918. LDA #PPU_MODE_CNT_LINE
    $ q3 A/ L; q) z& @
  919. STA PPU_Addr,X' g. y: H1 V' S: O# W% U; @3 J
  920. INX" @/ X0 g$ p4 W4 |; V: c7 h  e9 X+ v9 M+ _
  921. LDA #HIGH(Sound_Bar_Pos)" }) @/ C6 t( V* r& R+ w% \
  922. STA PPU_Addr,X
    + K* C; Q0 v; u1 t. Q
  923. INX% E: ~, f6 k' A9 z4 v
  924. LDA #LOW(Sound_Bar_Pos)
    / m) L1 b% o7 S! j( i1 F8 c, h
  925. STA PPU_Addr,X# v0 F& {* }6 p& a- q  |& E4 I) c3 m
  926. INX
    ' x! h+ l8 a" ]/ E
  927. LDA #$083 c# _$ k  l# V4 L2 X  ~
  928. STA PPU_Addr,X2 `& T. Y, K) R( b
  929. INX; I! H9 v+ J- u7 U
  930. LDA Sound_Bar
    . d2 _6 u0 S! t: u5 c
  931. JSR Volume_Convert
    9 a3 ]" B  F- K4 K5 L: z& X
  932. # _+ L$ ~  q: N2 s" V, d% v
  933. JSR Volume_Set_Cnt9 ]9 x0 H5 q8 A
  934. LDA Sound_Bar+$4
    ; E8 k0 r- V- g9 [/ Q
  935. JSR Volume_Convert7 X) k4 R5 k2 V% M( g

  936. . Y+ u( h8 T6 M4 h! V. |
  937. JSR Volume_Set_Cnt
    # ^7 t) Y0 i/ c/ ^1 }! y  c
  938. LDA Sound_Bar+$8$ O& J, f. X  F  p* F0 q: P# g  e
  939. JSR Volume_Convert
    ; e0 @# K1 {$ O, d; I% A0 X
  940. ( x  p0 D2 m- @8 T$ \
  941. JSR Volume_Set_Cnt
    0 K4 t6 f. w+ t
  942. LDA Sound_Bar+$C
      A5 Z) K% {4 v6 c% r9 h: ~
  943. JSR Volume_Convert
      \5 z( O5 U& a# \) O2 a4 [8 c2 L

  944. 3 T  q& _) h, B% W& ~: n
  945. JSR Volume_Set_Cnt$ O4 X& O( X4 x. o1 X" A

  946. & ^, t+ E9 J0 C
  947. LDY #$101 @* c+ O, q7 [1 m" V
  948. LDA APU_STATUS
    # u- }: V: T, d$ V: m
  949. AND #$10  `* a0 L5 m! ]/ A, ~- g, Y, Q5 T
  950. BNE Volume_Count" b& h0 l! ~8 u2 {) B$ g
  951. LDY #$00
    9 a" [% g$ [  g. N5 X
  952. BEQ Volume_Count( A/ P7 J$ m* m/ W. r

  953. " t5 I: {6 @7 y' j3 P
  954. ;------------------------------: d5 V2 Z. h" D; [+ E& s0 F
  955. ;音乐条处理
    5 k" e& G' I  f$ h& ~- _- N0 d
  956. Volume_Convert# E" Z* A( d( u- m$ E  _* `
  957. AND #$0F4 m+ r1 |8 F0 @2 t+ w, v# V0 ?
  958. TAY* P  q+ V4 }1 I5 K9 N* `
  959. Volume_Count/ l4 X! m; c: \/ W* g2 [
  960. LDA #$08
    * ]3 L) ?; `* x7 M& |
  961. STA Sound_Bar_Cnt3 `5 ~4 a+ m5 Y. g
  962. Volume_FILL% I/ b# D' d: k8 U# Y( h" D
  963. DEY
    $ L( e; f; N5 Z9 i) k
  964. BEQ Volume_Half+ b( G+ p( k; ~. q& m0 ^$ C5 I1 |
  965. BMI Volume_Empty
    % ^. V% D3 F* L$ t4 i
  966. DEY6 H) F1 `0 D' ~8 s
  967. Volume_Full
    ! U6 [5 w0 t, M  {# o
  968. LDA #$16
    2 I: m/ V8 [) `' @/ L: f
  969. BNE Volume_PPU0 y/ K; J8 V$ P& W7 o/ q1 Y
  970. Volume_Half
      w4 A3 R$ z* }! c+ `% N! d
  971. LDA #$15
    ) o: m. J9 r! C5 [4 l4 U! q2 Z; m
  972. BNE Volume_PPU# r, q" k. {- W6 z" V1 o* V7 T7 ?
  973. Volume_Empty
    - Z( M# {7 c, F+ H
  974. LDA #$14
    ' m' ^8 H9 s: o- r# s
  975. Volume_PPU2 y: J  I& O; r! y7 ^" A5 T, P' x
  976. STA PPU_Addr,X$ ~0 z2 q  H0 a5 x
  977. INX- P. m: t/ R% X6 h9 m
  978. DEC Sound_Bar_Cnt* A5 j: K" ^4 C+ L: ^/ y
  979. BNE Volume_FILL
    $ ?9 y, a+ Q+ q1 P+ t
  980. RTS. ?7 M/ g+ u3 \+ J8 W9 C! C
  981. # R, O3 r$ y5 m8 D6 b; {. w
  982. Volume_Set_Cnt' y; h! E3 ~* y9 O: q
  983. LDA #PPU_MODE_CNT_LINE_NEXT# q; d) D/ t2 t' p7 h7 j" L
  984. STA PPU_Addr,X
    6 P+ z6 `7 N$ ?' }1 O
  985. INX9 L! p. D% `  R; h
  986. LDA #$08
    ; Z$ ]8 b1 ^: y
  987. STA PPU_Addr,X
    . i0 `' v) D/ P/ i
  988. INX
    8 Q! V- b6 m3 Q
  989. RTS8 [# f7 R- G6 v: d4 q. i  ^- Z

  990. . ]% a: F, Q$ P. P
  991. .ENDIF- M9 O, P% |* @

  992.   y  J6 z: }* h% X9 i7 G
  993. ;==============================
    5 Q0 y2 w2 N- e; V
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    # Z- |3 O" T% l; L' t
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    % ?4 X& y/ X; F" f! _3 s
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除$ }, m; s- `7 M0 ~  e
  997. ;------------------------------
    9 {! o4 R1 [) c9 d$ T9 p  W' V
  998. ;PPU处理
    1 Q% t6 u$ H( v8 ^3 E. ?. E  h
  999. PPU_Proc& k  q# y9 }5 R& L1 W3 @6 |9 y
  1000. LDX PPU_Cur
    9 l; `# r; [( U0 d' z; W( k* P9 f2 u
  1001. LDA #$00: Q# |# g, A8 \# u
  1002. STA PPU_Cur, \1 P1 l$ t7 o% g
  1003. STA PPU_Addr,X) n$ P5 g+ F( b$ P: W6 u% a' n
  1004. LDA PPU_Addr
    4 v' ~: M4 L4 {0 j0 I, H/ B1 \0 Q. {3 P
  1005. BNE PPU_Proc_Beg( y; @" b! q, Y4 k; s
  1006. PPU_Proc_Ret
    3 s: z1 s3 U; y. b
  1007. RTS
    % f5 n+ k7 {+ a# P4 j( K* u
  1008. / y" ^* Z% b4 r
  1009. ;------------------------------
    % ]- W* J7 `2 b; q3 g. t% F
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    7 u2 ?! m8 W2 D- n1 x$ X" F& m
  1011. INX
    " v; N$ k9 M( }' b2 v
  1012. LDA PPU_Addr_L" h/ x# t' F  K, ]* J. g0 A
  1013. CLC" F; V* \; i3 x
  1014. ADC #$20
    0 V$ t1 u0 J2 [9 a5 a8 w. U) G2 ^! X
  1015. STA PPU_Addr_L
    . y9 |  a5 G+ L  j0 d
  1016. BCC PPU_Mode_Return_Cnt_End$ O1 U2 g' M2 x
  1017. INC PPU_Addr_H
      A2 B, Y6 q% d0 E  b1 s) V
  1018. PPU_Mode_Return_Cnt_End
    # O" l, [) ?5 Y! g- g. w
  1019. LDA PPU_Addr_H
    " r& F, G/ V6 G( |* K
  1020. STA PPU_ADDRESS" N. K9 N' d  y" s% a
  1021. LDA PPU_Addr_L6 B( ?9 I$ ]* y5 f! i. W
  1022. STA PPU_ADDRESS6 ]. D' f8 |) H; W! ]; n
  1023. LDA PPU_Addr,X' q. I  M  J4 ?3 F/ l
  1024. TAY
    * |  r% O  y& F
  1025. PPU_Mode_Return_Cnt_Write3 W5 z5 B3 U& w" h9 V( U5 e
  1026. INX
    & F/ i! B" h5 C9 r
  1027. LDA PPU_Addr,X; m* `5 S& I3 ~+ X. [3 B
  1028. STA PPU_DATA
    1 ^- P4 Q9 a% o$ g
  1029. DEY. [3 v+ b$ }) Y8 j
  1030. BNE PPU_Mode_Return_Cnt_Write; e) B; ~2 }4 k7 B$ V
  1031. JMP PPU_Proc_End$ B( p1 b9 _- x4 B

  1032. % Y8 e5 R! O* l  w
  1033. ;------------------------------* Y# P" W- l8 b& j8 P1 z* G
  1034. PPU_Proc_Beg  ;处理开始8 f1 w8 N8 E. Z. D7 t+ N' n3 z
  1035. LDX #$00, b' U% t, L0 {8 S! r6 _
  1036. STX PPU_MASK% S3 Q- u% w" F* x# ]( `
  1037. ;------------------------------" v; N; C0 I+ N+ P
  1038. PPU_Mode_Select  ;模式选择
    ! a, a) T/ |9 Y! L% ?% X
  1039. LDA PPU_Addr,X& O& h) b) ?2 \1 o- A% `/ p- k8 ]
  1040. CMP #PPU_MODE_CNT_CLEAR) v- I! e0 h) D
  1041. BEQ PPU_Proc_Clear$ s2 {9 v- ^& E$ t, T7 x# O
  1042. CMP #PPU_MODE_CNT_LINE2 K6 i# G; D1 \; [/ s' h
  1043. BEQ PPU_Proc_Cnt_Line' V1 m/ ~# b+ M* s4 f
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    # X; K2 D' e# c/ h1 U+ ^
  1045. BEQ PPU_Mode_Return_Cnt' Y0 f7 K0 z1 W6 V2 `+ M% w
  1046. JMP PPU_Proc_End_Write
    5 u. p) v* {8 J- r! I/ h3 k
  1047. ;------------------------------
    9 J  h3 D% ]7 k) I& s
  1048. PPU_Proc_End  ;单行写入结束
    $ j0 J5 z% I$ @5 J: g, X, i; `
  1049. INX
    1 ]6 Z4 b) g4 n  j7 n
  1050. LDA PPU_Addr,X/ G8 R( h' @# w: m/ `
  1051. BNE PPU_Mode_Select
    ' M$ L: N/ ]6 ^* N  m5 N% {
  1052. STA PPU_Addr
    2 j9 R  N5 t0 X$ B/ L
  1053. JSR Update_Palette_Color6 |/ J" d7 b- T3 n/ x8 H

  1054. $ l+ _: @: n0 ?- T$ Q+ ~
  1055. PPU_Proc_End_Write3 R5 g7 W; i- Y
  1056. LDA #$00) r" l4 C" p1 T3 j5 x0 K2 N
  1057. STA PPU_ADDRESS
      i4 e7 F, s# i7 e7 o
  1058. STA PPU_ADDRESS
    7 z2 r4 z& B" M: Z
  1059. LDA <Text_Disable_Flag
    ! S9 x0 T# d6 [; G* [; b# d% [3 s
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    ( p6 M: [2 k- |" @# w  n3 U1 G
  1061. STA <Text_Disable_Flag
    . y. c$ o7 b1 F+ E
  1062. LDA #Scroll_X' M$ X9 W; ~3 A! ?& X5 f3 U
  1063. STA PPU_SCROLL
    5 }# v2 }" X8 t/ m4 e  m
  1064. LDA #Scroll_Y
    4 c+ j7 |& q$ Y' c- L% J
  1065. STA PPU_SCROLL
    3 U) W" F" z; h2 m
  1066. LDA Screen_State
    ( Z3 Q2 l* Q9 b( H& ]1 v" x
  1067. STA PPU_MASK
    ! Q  I7 g( v( t8 W) g
  1068. RTS0 \4 `8 S: f! h2 I6 @
  1069. 4 x" N& q+ g6 M6 l& [! X
  1070. PPU_Proc_Clear) o: b) P2 ?! I. h0 m# x' k! M6 p+ g. Y
  1071. INX2 t  Q( E8 I3 @1 _) s
  1072. LDA PPU_Addr,X0 z4 v/ \$ O* ~' w5 {1 w( B
  1073. STA PPU_ADDRESS9 q8 Y3 m1 a6 @
  1074. INX8 |& `  q& q! U. O" X
  1075. LDA PPU_Addr,X
    5 v) j5 r% r' ^! |8 A* v2 p  }* i7 b
  1076. STA PPU_ADDRESS! Y  _. q( e' m- c6 v. T) L2 q
  1077. INX+ `; |" m8 L5 K. A/ f9 F
  1078. LDY PPU_Addr,X! F( W7 S1 u0 q8 B0 V7 e
  1079. LDA #$00
    8 w. \5 V& }, R3 d& W7 e# b8 f
  1080. PPU_Proc_Clear_Write8 r/ _6 }  U1 C4 X, H* P
  1081. STA PPU_DATA
    6 B: H1 X$ H4 m7 t3 S+ u
  1082. DEY4 f3 k# `0 Y% w6 ?8 T
  1083. BNE PPU_Proc_Clear_Write# W9 \" |: \- n  v' J
  1084. JMP PPU_Proc_End8 m; h4 K4 w$ Q* g
  1085. : P9 T- @& ]+ w) w0 C* I# g4 N% D
  1086. PPU_Proc_Cnt_Line
    7 d$ ?0 r* b6 U7 {& j
  1087. INX
    6 E/ ~# G. e! A0 M+ d
  1088. LDA PPU_Addr,X( e: A, R# q# Q7 c# x5 \
  1089. STA PPU_Addr_H( U4 F/ t& c1 g+ B) u
  1090. STA PPU_ADDRESS
    ! e5 n* t' v/ U* I  J
  1091. INX
    + V1 @# k% ], F; }& v
  1092. LDA PPU_Addr,X
    3 q; O% `2 G" f# I2 m9 a* J
  1093. STA PPU_Addr_L$ Y  o* C& H; x, {6 p+ u
  1094. STA PPU_ADDRESS4 J( K& v4 ^! Z8 J. K, V+ _
  1095. INX
    2 c; \- N0 i) N9 U; W8 u7 T$ @( e" R
  1096. LDY PPU_Addr,X
    8 |2 \7 u2 x6 w; ~0 T$ U
  1097. PPU_Proc_Cnt_Line_Write
    ; Y8 y/ p" _3 b9 u
  1098. INX, f& Z) }! b. S) O% G* e
  1099. LDA PPU_Addr,X
      ^/ h# D* O- R& O
  1100. STA PPU_DATA0 `9 e' T5 L. M% k
  1101. DEY: B: n, ^% M# ]4 t
  1102. BNE PPU_Proc_Cnt_Line_Write1 g; k( ]" D! ~* C! G
  1103. JMP PPU_Proc_End
    ; H+ ?7 y0 e5 w9 w0 V% y

  1104. ' q) J) A, [" @( ^
  1105. ;==============================
    ( H  ~, _# w* _# g
  1106. HEX_To_Dec;十六进制转十进制& v- P5 l+ K4 j  z4 |
  1107. STA <HEX_Data8 `6 j! d; B" P& C+ `: O" P
  1108. PHA1 f) P: O. g/ {" X
  1109. TXA6 _4 U! Q' a  ]6 C. T/ x
  1110. PHA. R+ ]! ]$ s' g
  1111. LDX #$00
    4 ^0 [/ c/ `% }  v
  1112. LDA #$00. ]9 g2 |+ Y' r9 o/ u' L- d8 F
  1113. HEX_Cln: e9 j+ S# }" r1 u7 ]
  1114. STA <DEC_H,X9 K3 S' w5 C9 z: B
  1115. INX
    6 y- D& F9 q) K/ Z/ ~1 o% b. v* l5 A
  1116. CPX #$03
    ; u; b2 R  Q+ e1 ], A5 |3 [( V
  1117. BCC HEX_Cln! M- f9 t) K3 W/ ~2 S2 i3 Y$ T
  1118. LDA <HEX_Data5 B6 a5 N9 I5 B& R2 Y
  1119. ;------------------------------
    ( P+ |' p& h& k* A& F* U# W9 }0 W
  1120. HEX_100
    , a* Y/ Y8 ?$ O" D; O
  1121. CMP #1008 w" X0 _  }% J
  1122. BCC HEX_107 s, j+ S, P/ S2 |9 P+ a
  1123. SEC
    1 S" f6 Z  i* {. T2 g
  1124. SBC #100
    / x7 a5 O- r* |8 D; @( d
  1125. INC <DEC_H7 X1 b/ h: L8 V: B+ r" q
  1126. BNE HEX_100
    9 a" u/ B/ p; ], j0 k
  1127. ;------------------------------
      K* g/ G4 v( G4 q, w
  1128. HEX_10
    # o* [, F) z6 v  Y/ {/ z2 ]( Y8 q
  1129. CMP #10& [" |5 |5 D$ @( C
  1130. BCC HEX_1! Z1 \$ R2 C+ {4 W9 f/ G3 V6 U/ t
  1131. SEC
    ) d( _: V" I7 p% R
  1132. SBC #10' M6 q% J7 T) O- i2 n- E% E; t
  1133. INC <DEC_T+ h* P2 J: `9 E( N; V; \6 }" M
  1134. BNE HEX_10
      b' I- b1 ~2 D# e
  1135. ;------------------------------+ [9 y& H  \- n/ I! s
  1136. HEX_1
    0 ~8 c& f* o! P
  1137. STA <DEC_L+ J6 C; J3 |- m. ]" S8 C) z5 S
  1138. PLA( ~- m  h3 Z1 I; a" I! O
  1139. TAX! A* z& J% E' b2 C' a
  1140. PLA& {8 O1 i, [" L9 ~
  1141. RTS
    6 c, t" i, j/ ]5 t: l

  1142. $ C+ d0 B9 v! |5 S  F
  1143. ;==============================
    ; d) S: ^7 }& f: ^, g
  1144. ;音乐曲目显示
    9 L4 q; g) R2 a  _% R4 x" g7 O4 j
  1145. Music_Show
    . b/ k3 _4 c# p! W( P
  1146. LDX <Music_Item_Cur. ^; P- l! [, w& i3 W
  1147. LDA <Music_Cur,X
    % [9 j( T, V& o. _
  1148. CLC
    " W  y  o2 U0 a
  1149. ADC #$013 X$ q2 N8 R. ~. d6 m
  1150. JSR HEX_To_Dec" M" @, |- e5 I3 E4 y0 w) D2 r
  1151. LDX PPU_Cur
    " E' S3 d% `+ Q" t& M2 R  Y
  1152. LDA #PPU_MODE_CNT_LINE5 z) o6 @8 ]/ h
  1153. STA PPU_Addr,X" s# r* Q$ A" B; B* C; ^
  1154. INX; C8 s9 \5 L, l3 `* b& m+ b& o
  1155. LDA #HIGH(Play_Index_Pos)
    , j' R. Q6 D7 ?
  1156. STA PPU_Addr,X
    ! d; m4 {6 X* @* ~; w0 V
  1157. INX
    " H  w4 m* Y% X9 K, ?
  1158. LDA #LOW(Play_Index_Pos)
    * @% ?$ j* X& u) E
  1159. STA PPU_Addr,X
    / i! i2 l. v4 Q9 m! V9 D
  1160. INX
    7 s$ K# t( U% t6 y

  1161. 3 F) F2 {7 [+ t- ^3 r0 O3 I
  1162. LDA #$07/ u4 I4 P0 s  d0 z' {/ z" \" ^# P
  1163. BNE Music_Show_Length
    . B2 j  C" }$ O$ R, J

  1164. * b2 Y% t6 {) t0 y8 j# S; Z( q1 R
  1165. Music_Show_Length
    9 V: J8 I9 f0 ]. N% l; H
  1166. STA PPU_Addr,X
    5 t" C# {" f* A/ w2 g
  1167. INX
    / V0 K0 T% V& w6 K0 w' A
  1168. 2 P# I- A0 ?! z& r1 t# ]4 S9 ]& W' D
  1169. LDA <DEC_H
    & D! g0 o% ~8 T: D; @$ o
  1170. ORA #'0'& J  p' q# `1 ]$ h
  1171. STA PPU_Addr,X- L  S0 ~3 A9 u6 v& K7 P
  1172. INX: v+ h- @! z$ C% Q9 q) b

  1173. & v+ ~% g" V; H# l) V4 ]& Y) j
  1174. LDA <DEC_T
    2 H% s2 r% {2 K* @1 f0 N1 v& I4 U/ X
  1175. ORA #'0'/ A; G' \- r1 R2 {
  1176. STA PPU_Addr,X! I) J/ ?* u% Z
  1177. INX) U3 e+ O* k% R: c/ w4 k

  1178. ' O" R4 F3 K" y9 k
  1179. LDA <DEC_L  P8 n: h, n! P1 }; f" l# i
  1180. ORA #'0'! v/ C8 N' ]* @
  1181. STA PPU_Addr,X
    . G  c6 K5 O1 K; M2 a
  1182. INX
    / \4 Z9 g+ h" O' D7 y. o

  1183. 3 O) ]' B$ ~6 R
  1184. LDA #'/'  {, W" u" q9 g  M& S: m8 s
  1185. STA PPU_Addr,X. c4 J5 z3 `2 m( ]' b" s
  1186. INX
    - c+ r) Z) H# {, B
  1187. Music_Show_Total
    , E$ q$ r; `# B2 }! f. G! H
  1188. LDA Music_Total
    7 V. a" c1 ?0 c4 b( ^5 p/ d1 \
  1189. CLC
    3 F0 W4 w: F: T0 ]& v* P9 U; M- w
  1190. ADC #$017 b; {  j1 {! C7 c* F
  1191. JSR HEX_To_Dec3 t6 ?, Q5 `5 _1 M

  1192. " @6 U0 G& @& t7 U% Q
  1193. LDA <DEC_H: a  E6 r- ]# X' |, i
  1194. ORA #'0'- l$ F! F6 A! P6 M; R  H
  1195. STA PPU_Addr,X
    4 q9 a) x7 }6 g- ?  g8 ~
  1196. INX+ `/ W$ b4 O" u# f- n! A

  1197. : p5 |0 u. a; X/ ]
  1198. LDA <DEC_T
    . k: F# o( i) x& N
  1199. ORA #'0'6 J$ c4 v, P5 [6 M' @% P
  1200. STA PPU_Addr,X% c1 r# y) V  L0 L4 b* n
  1201. INX
    4 A* @* P) M. r" `7 g  F
  1202. 3 A2 ]+ }& ^: C/ ~2 L( N9 F7 l
  1203. LDA <DEC_L, J, l3 v1 }, `9 o9 r
  1204. ORA #'0'
    1 k* R) o. j( g2 o2 ]$ _8 n
  1205. STA PPU_Addr,X9 i, Q5 p9 Z- g( k1 Y' D
  1206. INX: X* P6 k; Y- {1 M7 Y. ~
  1207. 3 L5 d! P; @. N# t, D" U5 O
  1208. STX PPU_Cur
    / d$ ]0 }9 [7 T( }( k% @% Q/ V
  1209. Music_Show_End
    1 m/ F! c; R+ n9 o1 V/ ~
  1210. RTS
    - c6 P: S7 G( J+ w4 \( L

  1211. 0 q9 [% }. E# r, S' q) l
  1212. ;==============================5 T; }/ i7 A5 q0 ?7 r
  1213. Time_Show;播放时间显示9 y2 R! ~/ \. z5 T5 ^8 H8 h
  1214. LDA <Text_Disable_Flag
    , q' D8 E1 b  }/ E( p: o
  1215. AND #TEXT_DISABLE_ITEM
    $ L- y5 M; s1 ^8 |5 q2 f
  1216. BNE Time_Show_End: |- t$ M( o+ }' g% V9 ^2 p
  1217. AND #TEXT_DISABLE_TIME) A: k3 g4 @" E9 c
  1218. BNE Time_Show_Enable* a+ H( o% P( P

  1219. * Z* }4 p- i$ E
  1220. LDX PPU_Cur- e8 y" @* K2 G4 J+ W  p3 T8 ?1 d5 H, i
  1221. LDA #PPU_MODE_CNT_LINE0 i: h- \! ]$ x: ?  R
  1222. STA PPU_Addr,X# F9 b0 W; x7 _7 F9 J) {
  1223. INX
    , q$ J! Z& n1 g- S  O+ U- `
  1224. LDA #HIGH(Play_Time_Pos)
    5 Q: |6 R( X! G" _
  1225. STA PPU_Addr,X
    , t4 e2 G" ]5 _4 j$ S* q! ]
  1226. INX+ b4 U$ f2 W2 E
  1227. LDA #LOW(Play_Time_Pos)  U5 z( c6 ?/ a* x
  1228. STA PPU_Addr,X  l( U2 I& s( I5 \5 N4 K
  1229. INX0 Q. W: S' L% W/ x1 c& \- A
  1230. LDA #$08
    ' v+ b& G- P; v# G# J& a
  1231. STA PPU_Addr,X; \& G. S+ {: V& g0 q1 B8 t! H
  1232. INX  `4 P* D8 i  P, j1 x) h: V  E% {
  1233. Time_Show_H
    6 [9 J" ?& o) G6 u2 {6 U% P
  1234. LDA <Time_H
    . z# q$ ?2 a5 b3 Z. F
  1235. JSR HEX_To_Dec
    ! ?% ]5 m& ?# M2 \# \& Q
  1236. JSR Time_Digit! R. g% h- t9 Q* T0 `
  1237. LDA #':'
    ; ^+ x, d: ]& ^. A- m8 m
  1238. STA PPU_Addr,X. a% Y) ]# R: e, E
  1239. INX. f* T. w. q  e- S" o4 n4 _2 R
  1240. Time_Show_M
    - c) ~! _6 V9 u4 ^
  1241. LDA <Time_M: s* M2 [# W/ C* A0 F. Q
  1242. JSR HEX_To_Dec$ Y+ J8 [" F: O3 t+ X+ s3 [6 T; g
  1243. JSR Time_Digit6 q: W9 K4 B/ a8 {) y8 B1 c7 m
  1244. LDA #':'
    ( ~9 [& t" O" _: Z% ^  ]: t
  1245. STA PPU_Addr,X. `" d' O. P" p* J+ G
  1246. INX; {9 h3 |$ `) B1 c. t4 K0 T
  1247. Time_Show_S( }- s: I7 w) Z/ e* C, x
  1248. LDA <Time_S6 N4 }$ O9 J: D- R  W
  1249. JSR HEX_To_Dec
    $ n! V* }, Q% @/ c& R  c, `
  1250. JSR Time_Digit4 A5 o- u, T8 Z# L
  1251. STX PPU_Cur
    # I$ @& q( V1 d, V. j6 n
  1252. Time_Show_Enable! y1 J! ?: ]% H6 w! m" |3 S
  1253. LDA <Text_Disable_Flag+ s0 Z6 X7 C: s* T$ _1 Y0 c
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    % H& ]: n$ @4 [% y% O# @2 j3 a
  1255. STA <Text_Disable_Flag1 Q* [, u5 M# F2 W; d: U' Y% |# r
  1256. Time_Show_End0 w% e3 w/ O+ |3 P. }# I; Z  L
  1257. RTS5 `0 A( q2 t; C' q2 G

  1258. 5 D$ h& ]0 F' J: Y
  1259. Time_Digit0 B/ j. A$ v# X. |$ o
  1260. LDA <DEC_T
    # J1 h/ c2 |. \- Q
  1261. ORA #'0'. Y( c8 x' j3 B' g' F* D6 l
  1262. STA PPU_Addr,X
    : b! B& U) n2 H  F
  1263. INX% `" b$ c9 k) C% Q
  1264. LDA <DEC_L
    . A) O& Z% u4 R0 t: S
  1265. ORA #'0'* v' u9 m; T) I& h( p+ ]
  1266. STA PPU_Addr,X
    ( }( P$ a$ P5 \: O2 e! C. N
  1267. INX# s  H8 u. q- [7 M8 W7 c: F2 E
  1268. RTS' G  _* q7 o, L# v+ y

  1269. . S1 A: h* l! t6 B
  1270. ;==============================
      G4 t) @. {) `, Y" B
  1271. Time_Count;计时4 f5 v; r- `9 {
  1272. LDA <Music_Stop_State
    2 j1 ?" y2 ?1 ^9 _" V. Z
  1273. ORA <Time_Wait_Cnt
    / G0 e: Y$ R6 r$ J" p8 u* k$ Z
  1274. BNE Time_Count_End4 K+ a: i* q/ [& ?8 X
  1275. INC <Time_Cnt9 _( Z6 m3 y) _$ U! W
  1276. LDA <Time_Cnt5 |+ X0 e' r0 g% k3 M  P
  1277. CMP #60$ l& a0 }3 W9 }# Z. z7 ?0 B, }
  1278. BCC Time_Count_End9 n  f" @! k9 Y% S* q+ b" a
  1279. LDA #00
    1 ]/ E5 O. K6 G: t* x9 i) ~7 U4 ]
  1280. STA <Time_Cnt/ A8 @: o$ j5 w/ l
  1281. INC <Time_S# _$ L5 }% F* D7 S& Z
  1282. , K  I) n% S- {8 l$ M, g
  1283. Time_S_Cnt! j* h2 a1 D' Z' [
  1284. LDA <Time_S
    # f6 N$ Y0 I5 c# X$ k4 D! Q% \0 U
  1285. CMP #60  P1 a9 d" v1 q) w+ ~7 a$ E; y
  1286. BCC Time_Count_End
    ( R; G+ w) `) Y% E: T, J
  1287. LDA #004 S7 V) K5 g. g; {+ Z/ b
  1288. STA <Time_S% a! Y) e! P- q, Z/ Z; f3 F
  1289. INC <Time_M* j* K( @0 Z9 W" w! d

  1290. # j/ |/ m7 l" I5 A# Y0 D  M4 O0 z
  1291. Time_M_Cnt& I2 p5 T+ M' U% l" H
  1292. LDA <Time_M
      [3 d* K1 p5 P1 A# }
  1293. CMP #607 P2 W* G! C6 ~2 M9 C  V9 O
  1294. BCC Time_Count_End' o# ]) d% i  B0 D& {& K* B1 e# b5 ]
  1295. LDA #00& \$ C& ^, i- L" J+ Y
  1296. STA <Time_M
    ; V0 G% {; s+ X5 E+ p
  1297. INC <Time_H
    - A% }/ ?: j: \& j

  1298. & E: x7 O, r, f! J6 G$ D2 W0 C
  1299. Time_H_Cnt
    - m$ V0 u/ F6 I$ x# ^4 V3 R! o
  1300. LDA <Time_H6 W, }( v+ X7 i$ ^# l
  1301. CMP #24
    - X6 z5 C0 N. H: J
  1302. BCC Time_Count_End
    5 g2 `" W) I5 k/ y$ Z
  1303. LDA #00
    - H/ E- F5 b4 {
  1304. STA <Time_H. x& O+ w, Z1 U) ?6 b/ x$ k; q6 a7 [

  1305. 7 _; W$ N1 \# c/ P: N+ U
  1306. Time_Count_End3 _6 ?4 c" D9 Q* Z
  1307. RTS& ?$ P. t9 g$ b/ I

  1308. ( W' r9 N, n9 S0 A5 F+ ^
  1309. ;==============================
    2 z! R+ W+ m4 M/ c- g/ H
  1310. Time_ReSet;播放时间重置
    9 @  x% W3 P5 s* z0 X
  1311. LDA #$005 U3 N6 G1 S$ p" F
  1312. STA <Time_S8 v, R: n" m: J3 [! ^" ]" y# c3 B. w
  1313. STA <Time_M
    ! W4 y" F  `5 Z0 I# [
  1314. STA <Time_H
    1 N8 p# m/ S! A# X2 m
  1315. STA <Time_Cnt3 Q+ J7 K- v$ D1 w  H
  1316. RTS
    5 o9 E3 d8 C0 w# e# n

  1317. ) j5 t- v& i5 T$ g! a" j
  1318. ;==============================, s1 v/ @0 Q9 i: f! y
  1319. Music_Bar_ReSet;音乐条重置, S% i+ t; \: Z/ O% b
  1320. LDA #$00
    ! J, {2 B3 q9 ~5 v( }) {) V
  1321. LDX #$00
    / N6 ]' C/ b# R3 z9 O' [
  1322. Music_Bar_ReSet_Set
    ; t' f: q4 X+ L$ [7 }$ J
  1323. STA Sound_Bar,X9 t6 v* ~! u7 o0 j, o( V( p- x
  1324. INX9 {+ {% l! w& p9 a5 i. t- e
  1325. CPX #$10
    % T" N: E! J, P! T
  1326. BCC Music_Bar_ReSet_Set
    ! @6 v9 f' Q9 a/ u2 |
  1327. RTS- }# C& l# t( Q; r

  1328. 8 |( }; }3 S7 N2 [6 h; m% ?
  1329. ;==============================3 \5 j) `. F5 c/ r
  1330. PPU_Data;PPU数据写入; r. g  R/ F0 t7 O1 C3 q
  1331. STY <Data_L
    " p; O! L) e+ Y1 U4 F
  1332. STX <Data_H4 U4 A3 N+ V& w% P3 m, x. ]
  1333. LDY #$FF
      a6 t7 w6 K6 D8 J, P: `3 r
  1334. LDX PPU_Cur3 J  ^" g+ D/ K# F& \. z
  1335. DEX' Y% K1 I2 R& w
  1336. PPU_Data_Beg  |; M& \& ?- ?- w( t
  1337. INX
    ' d- _- J; [% ~; s! l$ y
  1338. INY, h4 b# @) R, t$ T7 Y
  1339. LDA [Data_L],Y
    ( B9 X: H; V* W5 ]
  1340. STA PPU_Addr,X" I+ ]8 T! f0 Q# ]9 Z, J
  1341. BNE PPU_Data_Beg( h7 J. g9 c- U: I
  1342. STX PPU_Cur) C0 r& [/ H4 O* @8 o
  1343. PPU_Data_End: L6 s9 `! K/ W4 q3 d: s+ H
  1344. RTS# _$ e" E' t  @7 ], q' R! V* ]
  1345. ) m) Z4 f4 Y( ]+ F1 M. V
  1346. ;==============================
    * Y# J$ E- Q) d0 K6 S7 a
  1347. Music_State_Show;播放状态显示
    6 k2 K& |/ b* n- B# S2 B$ s
  1348. LDA <Music_Stop_State
      z  F8 X/ {! Z. @$ A
  1349. BEQ Music_State_Show_Play% }6 m9 A/ z$ k3 v  J5 z
  1350. Music_State_Show_Stop" e; q0 n, d+ b* Y5 J
  1351. LDY #LOW(Music_State_Stop)9 g, e% B. q- T* w
  1352. LDX #HIGH(Music_State_Stop)
    $ G* h8 a, @3 `8 S$ t
  1353. JSR PPU_Data
    ' e$ a5 P2 N! P3 x
  1354. RTS
    2 E9 J6 c' M: Q& Q% [
  1355. Music_State_Show_Play
    / s: t8 q! g! j$ g7 B  s
  1356. LDY #LOW(Music_State_Play)
    2 n$ N. j( b4 n& C: _
  1357. LDX #HIGH(Music_State_Play)3 I5 c( d1 D4 W6 z( p- G: w
  1358. JSR PPU_Data0 S6 N& ?, Q+ D' R6 e/ A% F$ w
  1359. RTS
    ) |- g# C  p+ g% T* ?  c

  1360. 6 T5 p/ G, d/ O1 d$ R* g5 T; [' Z
  1361. .IF SOUND_BAR_SHOW_ENABLE7 j. J1 i5 a4 ]" @
  1362. ;==============================2 Q2 k# s2 y: |! a  ?( T( j
  1363. Sound_Bar_Text_Set;标题与音乐条初始化1 V" U4 t- t0 _, A+ c
  1364. LDY #LOW(Sound_Bar_Text_Data)% {' y6 d/ Z4 j6 v
  1365. LDX #HIGH(Sound_Bar_Text_Data)3 M( M, ^7 N7 W' ?
  1366. JSR PPU_Data' }5 a" C9 x: F4 a" E
  1367. RTS- I/ W/ i4 t# C

  1368. ! l. P3 L+ P" Y! a$ `
  1369. .ENDIF
    ; m1 x; a, F5 @3 |; b! x5 t1 j

  1370. 8 P2 Q# l9 }+ ~7 H* d8 t
  1371. ;==============================
    7 ?+ L' v0 [" ^
  1372. Set_NameTable_Attributes;设置命名表属性
    ! J% l* {' c& e/ }6 ^  z/ ^
  1373. BIT PPU_STATUS
    + L( }9 D0 f: E( [' @/ P) \
  1374. LDA #$23
    # `6 T5 P2 h: R
  1375. STA PPU_ADDRESS
    9 A) x: F4 ^* i* q( n1 G  p, G
  1376. LDA #$C0
    : ?8 d. |3 T7 }" N6 {
  1377. STA PPU_ADDRESS
    # u, ~& C- W% e& Q* P
  1378. LDX #$00
    6 R8 y/ d9 D4 h) r% B% ?4 O
  1379. Set_NameTable_Attributes_Write
    ' C0 q7 @% C  h: G4 D% O" Z
  1380. LDA Palette_Attributes,X
    9 Z5 e3 o" F7 j) c- E$ F- S9 ~
  1381. STA PPU_DATA
    8 e. i6 l' b! _1 v
  1382. INX' Z. \! l+ \. o7 X0 \! w0 S1 `
  1383. CPX #$40
    9 n0 n3 J; u* A1 |2 U" W* w7 L
  1384. BCC Set_NameTable_Attributes_Write
    ' ~* ^1 F0 N5 |$ u+ E4 Q
  1385. RTS7 L9 `& ], q6 q0 S7 E# f) i

  1386. 3 ^$ d8 v4 U4 s. C" u
  1387. ;==============================
      n% S! e9 U' \
  1388. Set_Palette_Color;设置调色板数据
    & p8 q) `' W9 Y; W9 P2 f
  1389. BIT PPU_STATUS
    4 Y8 C; R" U; K" d
  1390. LDA #$3F3 A) i1 ]2 {* _: z
  1391. STA PPU_ADDRESS
    7 t* u1 p( d0 I+ M$ P& w
  1392. LDA #$008 P" l  |* X8 G/ @4 V# I0 v
  1393. STA PPU_ADDRESS& Y$ j" d" ~+ [9 }
  1394. LDX #$00$ N) |0 b, B3 o2 L6 L- A
  1395. Set_Palette_Color_Write
    5 [& W9 V/ `/ b4 I( W( p* H
  1396. LDA Palette_Data,X
    " g) e" a9 u& G3 U0 v
  1397. STA PPU_DATA
    * C  F$ O% X4 s- w& X
  1398. INX+ T/ @) |$ T2 O2 |; Q, }* E
  1399. CPX #$205 ^# `" r+ b! }
  1400. BCC Set_Palette_Color_Write
    + L! L5 h: y! M4 C( J" M9 p
  1401. RTS9 C, F5 C; l8 F# V" v/ K

  1402. # t+ M( q4 b& l. o8 q
  1403. ;==============================
    7 I" C2 d- {) Q) G
  1404. Init_Palette_Addr;初始化调色板数据
    2 d6 ?$ A3 m5 K1 L$ B; Z% Z  o# |
  1405. LDX #$00
    " H0 b! a) g( K! T
  1406. Init_Palette_Addr_Write
    4 [' E. p; a% Z1 G1 T! i5 C" o% r
  1407. LDA Palette_Data,X/ ]- R3 A) P9 k, W3 R. g" e
  1408. STA Palette_Addr,X9 _! m  A, G8 e
  1409. INX
    0 q# s- _4 K8 s7 E* C4 L, g% E
  1410. CPX #$20
    3 J3 Q5 V8 e# x8 O+ `* z
  1411. BCC Init_Palette_Addr_Write7 _+ x4 Z, \* D! d9 B1 C! }! j
  1412. RTS5 S) A+ K  h" u- N, |, a

  1413. 7 x" r  R# ]- n; p; n* Q: |( Q
  1414. ;==============================
    ! X- {4 }% N, q+ l- C& L/ ^+ r
  1415. Update_Palette_Color;更新调色板颜色! T# z: a/ a5 I- [" t# l6 _4 G
  1416. LDA <Palette_Update_Flag6 k# R- E+ l+ n6 ]6 B
  1417. BEQ Update_Palette_Color_End
      R+ Z+ s! w& p$ g9 ?7 f
  1418. LDA #$3F9 q6 P, u+ m/ Q; f1 R
  1419. STA PPU_ADDRESS
    - b7 U; `( ]/ {& a; j+ Y
  1420. LDA #$0C3 Z  W4 I2 e& ^2 W. t! N, v1 z4 {
  1421. STA PPU_ADDRESS' A8 N! q) F3 _* S& W
  1422. LDX #$0C, r" `) c1 ?: l2 X1 i
  1423. Update_Palette_Color_Write' P# K9 f- F! |+ p8 _5 b
  1424. LDA Palette_Addr,X, g8 X! v7 m: `6 ?& c- ~
  1425. STA PPU_DATA5 X& E% g9 A; C" P9 G0 \, |. v
  1426. INX6 E8 T( ~4 g) {$ c+ ]
  1427. CPX #$142 b) y( `# o& b. r
  1428. BCC Update_Palette_Color_Write( T2 L' S; H+ o4 D
  1429. LDA #$00
    1 Z' d( n2 ?3 M6 i' Y8 f! b/ P! z. J4 [
  1430. STA <Palette_Update_Flag  W( V8 N& f- z) W4 j- D' X9 J
  1431. Update_Palette_Color_End
    & }+ K1 p# w3 n. k
  1432. RTS
    + _8 {  N+ _4 f, A! }# _  c

  1433. % Y& F1 A. b$ T

  1434. 0 ^2 |. n: H1 Z  X
  1435. Update_Sprite_Palette_Data8 e" D5 H) J: V  k; ~8 g* I3 j4 J
  1436. .DB $218 |, v: ?% |* _
  1437. .DB $212 V: C* u" F" y3 k( V$ Z
  1438. .DB $11
    1 G* j4 P9 ?; y
  1439. .DB $01, U* j/ `5 D2 a' S; j' v* T3 v
  1440. .DB $010 v* p: d7 j2 l( J7 ]' U
  1441. .DB $11
    4 M8 l) h9 q; W' ^+ B2 h7 s8 n
  1442. .DB $21( @, ^+ R0 S/ T" J
  1443. .DB $21
    3 _# H. p' \0 o5 h. l$ Q
  1444. .DB $11' }. I0 @- d: O# j2 Y
  1445. .DB $01
    $ V5 b. M& i" b8 j
  1446. .DB $11
    " m) r7 p0 |  E$ q
  1447. .DB $21
    ( a' f6 Z0 }2 _1 t7 h0 r
  1448. .DB $21
    - N2 R# D5 J! ]- u3 v" x
  1449. .DB $11& t" w  d! d4 Y/ ^6 o
  1450. .DB $01
    9 [" [$ R; X) ]: L/ `
  1451. .DB $11  B8 F9 a8 ~, y: H: N' |9 s
  1452. ;==============================2 W7 ]: M! A8 Z' w$ G1 V5 X: q
  1453. Update_Palette_Data;更新调色板数据( J- I3 B7 F* v1 q0 S
  1454. LDA Nmi_Time_Count
    6 ^! l% [/ P- a" D
  1455. AND #$08
    % T% [% r; R, c# {5 d& m0 n& M: O
  1456. CMP #$08' K% i/ q" N# n$ j; k$ w2 E- ~! s/ @8 I
  1457. BNE Update_Bkg_Palette_Data1 h# A* U6 N% o. q1 X$ c

  1458. $ G4 R: A1 \% g3 d; T
  1459. Update_Sprite_Palette_Data_Set
    ) R6 Y4 A- O8 P) X
  1460. LDA Nmi_Time_Count. P4 W8 H/ w/ N0 q% L& Q
  1461. LSR A. Q6 q) ^, `1 p$ r/ C8 L
  1462. LSR A% U" t, f; s5 }. v& |6 v7 G4 J: ]
  1463. LSR A
    / L# F" f3 S# V/ I  W8 ]; f7 q0 o  ~
  1464. LSR A
    & y1 T) p$ t* p+ `
  1465. AND #$0F' n: S. n5 s$ i. t
  1466. TAX
    4 c6 e$ w1 i! G0 H5 d2 N" W8 j* u
  1467. LDA Update_Sprite_Palette_Data,X
    & y* Y2 {/ p, @+ a- J; t
  1468. STA Sprite_Palette_Update_Addr
    - t. W, Z6 S! R4 p; _0 s* _! N
  1469. LDA #$01( J# h3 }4 e( J: q
  1470. STA <Palette_Update_Flag
    : M+ W- a3 K- ?; A- x" q5 U
  1471. . }2 t' m+ T8 l5 V# E
  1472. Update_Bkg_Palette_Data! E# H; S' x5 s6 U. \4 y
  1473. LDA <Text_Disable_Flag& g0 S; ?( I$ u2 y4 }
  1474. AND #TEXT_DISABLE_RAM
    " g, d8 G: L+ \: w& X
  1475. BNE Update_Palette_Data_End3 t/ s8 D! M3 m9 |# w# b
  1476. LDA <Music_Stop_State2 e: u, W! f8 z/ r' s! X! K
  1477. BNE Update_Palette_Data_End. J6 P$ ~+ z6 [# J  o

  1478. + X% L$ g) R- a  d0 U- T
  1479. Update_Palette_Data_Check
    3 h& O, Y' b9 \$ M( `
  1480. LDA Palette_Wait_Cnt' @3 C, ]- y' h4 J
  1481. BPL Update_Palette_Data_Check_Over( o  r$ i7 {& f
  1482. LDA #PALETTE_UPDATE_INTERVAL
    ) o! H2 \- _* m8 s
  1483. STA Palette_Wait_Cnt# X" |4 |) k. m
  1484. Update_Palette_Data_Check_Over3 t8 z" q" N/ n% m
  1485. DEC Palette_Wait_Cnt1 J3 W% a' C2 R( h$ f
  1486. BNE Update_Palette_Data_End
    , {# X2 v/ |) [- x8 |
  1487. 7 W( i: S7 |, L) s* M0 H
  1488. LDA <Text_Disable_Flag! s; D# |' ^* D6 H3 C
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    $ a  I7 H! g4 |) C8 ]( _  u5 c" M# i4 f
  1490. STA Text_Disable_Flag. t$ j3 R6 J9 O) w! f0 z
  1491. INC Palette_Update_Flag3 N5 f# K; K! R3 A4 K* X* O1 a

  1492. ; B; g% F8 Q" I9 Z
  1493. LDA #PALETTE_UPDATE_INTERVAL
    1 x' }  g  |8 y* o4 C6 z& W. `: |
  1494. STA Palette_Wait_Cnt
    ( [) b8 F5 \3 i6 a

  1495. 7 m1 B2 Y; u6 X: _
  1496. LDA Bkg_Palette_Update_Addr
    3 ^! D* |: W) `5 p$ y
  1497. CMP #PALETTE_UPDATE_MAX
    8 z8 G1 `6 |5 J6 Z
  1498. BNE Update_Bkg_Palette_Data_Set
    - {7 e8 A8 E( e+ M4 ]
  1499. LDA #PALETTE_UPDATE_MIN - 1
    9 `0 Z' h" [2 h% k' i: S) A$ r
  1500. STA Bkg_Palette_Update_Addr
    ! \$ e: z# e! ^! g2 h
  1501. Update_Bkg_Palette_Data_Set9 K8 v. P( u4 d* u0 I7 u" Z
  1502. INC Bkg_Palette_Update_Addr
    ' B( N. \+ t- _- A+ `( r/ A. ~
  1503. " q( Y2 ]# j5 U: s
  1504. Update_Palette_Data_End
    * f: o/ f5 K4 v+ [
  1505. RTS. H5 j' y0 p) z: t% H
  1506. - m: S: {9 [2 t" o% L, P
  1507. ;==============================
    9 e( [! g( s$ o& J  w* \, y
  1508. Show_Music_Text;显示静态文本4 a4 ~1 X: Q* \$ n8 n# P
  1509. LDX #$00
    / Q) V" p7 Z' ?& i# b( b
  1510. Show_Music_Text_Set# I5 U* N, d- |" ~
  1511. LDA Static_Text_Data,X
    * D/ u4 T0 n" P
  1512. STA <Data_L
    4 D) \) r0 m& P1 m  w6 t6 ]
  1513. INX
    / z- I9 k2 e' e: F& p1 Z& ~- l$ @
  1514. LDA Static_Text_Data,X
    3 q: p+ e. o+ T# A4 m) p7 L# N* x
  1515. STA <Data_H
    ' R7 b" R( _  u  P
  1516. INX- M$ q) W( k; `* H8 b9 r) R
  1517. LDY #$00
    & u3 c) i/ |" x" Y
  1518. LDA [Data_L],Y
    7 m) B3 ~7 k9 v4 J: \, p/ p* z' X5 b
  1519. STA <Data_Cnt9 Q5 C  v6 }: w3 J
  1520. DEX
    0 W6 u6 y  H. w0 w8 O) C
  1521. DEX
    ; ]5 g7 J! D9 s
  1522. LDA Static_Text_Pos,X% D/ [! o' v! b( t5 m/ `
  1523. STA PPU_ADDRESS* ~! W2 V1 y0 E3 E
  1524. INX
    ! |; y) F8 g8 O$ u
  1525. LDA #$20
    2 r- n" O; T$ P- {, x
  1526. SEC
    $ D6 z/ A8 m4 [+ q
  1527. SBC <Data_Cnt
    9 ?4 C8 M* P$ T; l
  1528. LSR A8 O. q0 D- Y, D5 `! s$ o
  1529. STA <Data_Buf; J# O- D! z) N2 [3 J9 C4 o$ ?$ V, E. d
  1530. LDA Static_Text_Pos,X
    1 D0 y* ?0 _0 t% o# e
  1531. AND #$E0* U# I6 A. p5 L4 Z- L
  1532. CLC! v% s4 o3 E4 }" ?0 H
  1533. ADC <Data_Buf
    ! x5 U1 Z- d  f0 X) g, J
  1534. STA PPU_ADDRESS
    ) k" a1 e5 |' s  n
  1535. INX
    . H5 N7 L& Y" N9 L+ }0 l3 k. k
  1536. Show_Music_Text_Set_Write
    5 J; w/ b( ]) T# {
  1537. INY8 d2 |( K0 ~4 e- P! p4 `0 I
  1538. LDA [Data_L],Y5 T+ V: @& j. O7 N3 d/ E
  1539. STA PPU_DATA
    6 Y: u5 i9 `% K6 i) Z9 l1 p2 i
  1540. DEC <Data_Cnt
    % S! S! H. K* w, f
  1541. BNE Show_Music_Text_Set_Write8 J# _3 h; |0 {' A* }: `, y% Z
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    5 J& Q* S5 h5 o) }! @. v2 ]! F
  1543. BCC Show_Music_Text_Set
    * ?7 ~; N# M1 [9 Y% w
  1544. RTS0 D" u5 K% |4 Q6 B
  1545. / n. j; u- c: `" U8 i- Y) C" ]
  1546. ;==============================
    ' f0 ~$ H' O4 ?+ ]/ D
  1547. .IF Track_Name_Pos;显示曲目信息$ F. s7 z- }6 D3 K/ r9 f% Y
  1548. ! l& e% H, h% K; T" {' e/ V
  1549. Clear_Track_Info: U7 [1 I. _& N0 `' @
  1550. PHA
    / F% a! P  z7 c6 [
  1551. LDX <Music_Item_Cur7 y4 a' E; }( y- \& I* r; S" @% J, I
  1552. LDA Track_Name_Addr_Flag,X
    # T- g; t/ c! S- h' H/ h5 K$ P3 d, Y
  1553. BEQ Clear_Track_Info_End_Ex0 ^, L) T2 e- j' X
  1554. PLA$ q5 P7 J7 j$ n5 [, p

  1555. % d. R9 y2 u+ w* O" N! f0 ~
  1556. LDX PPU_Cur
    0 j; a: ^$ V3 Z3 O3 s( i1 O
  1557. PHA
    6 x! y. c6 \/ R: }
  1558. LDA #PPU_MODE_CNT_CLEAR( [5 [( G; }% h% _8 v/ f
  1559. STA PPU_Addr,X
    & u: |% K2 L8 z+ i, }
  1560. INX
    ! G/ w7 n) l7 b4 g
  1561. PLA; C) g/ L! F# b3 m' I- T2 j, I
  1562. JSR Show_Get_Track_Name_Center_Pos
    . m4 X1 ~7 R  H& b; [; j
  1563. STX PPU_Cur
    0 O4 L+ p3 M( @( v: u
  1564. Clear_Track_Info_End
    0 ?; {, v8 u0 A5 e3 i) Q* a
  1565. RTS
    . D  f9 y$ {. ]7 p
  1566. Clear_Track_Info_End_Ex
    6 `) C6 C0 {: Y) u
  1567. PLA
    . g2 c  F3 f1 f4 m) H0 m' Y
  1568. RTS
    2 Z: ]3 \- ?+ ?; [" e+ v) O* q5 Q4 }
  1569. * V; @+ ^( j+ {/ b/ _: Z
  1570. Write_Track_Info
    - r- H( P' e' j6 Q( [
  1571. PHA$ U/ G8 P& C3 z
  1572. LDX <Music_Item_Cur
    2 i1 c/ c- |# u
  1573. LDA Track_Name_Addr_Flag,X
    ( ~0 @: j4 j$ ?' R! N9 N3 K
  1574. BEQ Write_Track_Info_End_Ex% G( ?& }  ~* K8 _
  1575. PLA
    % m  ^8 `+ h1 n. E% f; }$ O

  1576. ; S) l8 B# ?. s4 h, k/ I: ~5 [# |
  1577. PHA
    1 n" m$ ?7 I+ X6 a6 D
  1578. LDX PPU_Cur% f2 e8 U( ~: V# j3 s+ v
  1579. LDA #PPU_MODE_CNT_LINE" t8 M) Q: v9 o6 o  I& ^& d
  1580. STA PPU_Addr,X
    ! D7 W- E. I$ l) b% N3 I8 o
  1581. INX
    1 h* t1 r( x" q* q* |) m/ }+ j
  1582. PLA
    2 H* a, m4 T) w. x7 H
  1583. JSR Show_Get_Track_Name_Center_Pos
    " w' {' `# \# j/ K# R2 E
  1584. Write_Track_Info_Data  P: v0 g7 A6 v6 T
  1585. INY+ u- I3 z# S% ?2 M2 @3 W% ?1 E# P
  1586. LDA [Data_L],Y
    4 u0 b& i8 \8 h5 O9 C
  1587. STA PPU_Addr,X
    ) m: b# k" i& ^" {
  1588. INX
    , w# `; {" X& P0 S! O
  1589. DEC <Data_Cnt7 S0 @$ C3 g4 m) S2 ?* E2 I
  1590. BNE Write_Track_Info_Data4 d/ \- b. `  m: T/ T) J
  1591. STX PPU_Cur1 C3 T/ @! S, A' b% k
  1592. Write_Track_Info_End
    & w' f! B; l4 X# o9 v
  1593. RTS1 _9 L  y; i: t4 ~! X# Z
  1594. Write_Track_Info_End_Ex- G& K3 }" F# E* T0 d' v
  1595. PLA# ?- S$ c5 e" \# R. L# ?* ^8 N
  1596. RTS3 F9 F$ s+ H2 \1 p7 S% h

  1597. 1 z) z3 w5 `! h; E7 J2 l) y
  1598. Show_Track_Info, n" R! @9 k$ j: S
  1599. Show_Track_Info_Clear
    , s3 }9 H/ U& q
  1600. LDA <Music_Last
    8 j! o; |4 T1 `* U
  1601. ; u6 \) B' f+ \( ]
  1602. JSR Clear_Track_Info& e3 C# o2 Q, G: j7 @- Q

  1603. 8 Y, B6 l# w" J9 h7 g
  1604. LDX <Music_Item_Cur
    - }0 q, q$ A, y) K9 T2 P* r7 s* K  P
  1605. LDA <Music_Cur,X& N, W0 Y$ ^2 X$ }# P) [% ?, M
  1606. JSR Write_Track_Info. x. r1 ^: r5 a
  1607. RTS" \4 q8 H! K0 o! I9 O  V' `# Q+ e( q5 f8 V
  1608. % j9 Z. N, }7 r3 _+ @
  1609. ;==============================" N# g7 e+ W" [. ~1 P( t! N! k
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    ! _" A- g# T& e1 M

  1611.   O9 P9 J( w; y' ]% J+ S
  1612. ;取出集合名索引
    & M1 m2 C, Z& _/ P
  1613. PHA
    5 F, V8 G; U# L  f  O8 B* v) e

  1614. ' }( S' j" [' @) E
  1615. LDA <Music_Item_Cur: u% t# B: }& _( W
  1616. ASL A4 F9 E5 A7 a1 m
  1617. TAY( V8 a7 e6 f$ _! r, \
  1618. LDA Track_Name_Addr_Port,Y
    ! L6 p9 {% D) P& @7 j
  1619. PHA, f0 U) P+ v1 P" [6 v
  1620. INY6 ?' P* [" F, _( C3 y5 p* T
  1621. LDA Track_Name_Addr_Port,Y1 N  \0 O4 ]8 i4 |4 t& K, Q
  1622. STA <Data_H
    , Z+ y  {5 B& z+ \% `: z
  1623. PLA
    $ i' o) l5 T' J6 c3 b" F& a, ?
  1624. STA <Data_L# g0 h9 k4 [  L9 {5 T4 V5 k5 m1 n; p
  1625. : J) a* R+ z% ~
  1626. PLA5 R4 @- ?, I8 @5 S  g9 o
  1627. * r2 C* x* \* u! e4 Q' p
  1628. ASL A
    ' U2 I3 g! c! }7 V8 D8 ?
  1629. TAY
    , q5 [( m+ q6 {
  1630. LDA [Data_L],Y( {3 C" n! [# L6 X7 h( j! S2 s
  1631. PHA
    5 w) }8 I! K4 }) A' U
  1632. INY+ f0 G8 D- |& c
  1633. LDA [Data_L],Y
    $ w7 \7 c4 w# E
  1634. STA Data_H
    6 n$ ^* f( a( I1 X, _5 S
  1635. PLA! O$ X) n* m7 O. F, V' b
  1636. STA Data_L
    . F! E2 ]0 M4 z+ B5 Z! o4 v0 |% c

  1637. ! E# e0 W- F* ~' l
  1638. LDY #$00( e: k; u. n& `* \
  1639. LDA [Data_L],Y
    - O, r; N# W$ r
  1640. STA <Data_Cnt/ g* T+ b" _+ j9 X4 ^
  1641. LDA #$20
    7 ^5 I3 n( z2 `7 e; I0 {8 ~
  1642. SEC- S' {: q0 w4 b/ {5 Y; G9 M4 h, e/ m
  1643. SBC <Data_Cnt
    % h. X6 E/ C& {8 x* F1 V/ ?
  1644. LSR A9 C) H2 P. y. _% m; E: i
  1645. STA <Data_Buf* s6 [$ D' E: A* U; q' D
  1646. LDA #HIGH(Track_Name_Pos)
    " V7 K/ d- V( v0 y$ O7 D
  1647. STA PPU_Addr,X
    8 t" Y" ]5 J, k! {# p) I
  1648. INX. b% z3 t) G) o
  1649. LDA #LOW(Track_Name_Pos)' `) {1 h1 n* n- h( r! s
  1650. AND #$E07 \! _3 T+ P. P
  1651. CLC
    & }8 X+ ?4 H& s
  1652. ADC <Data_Buf
    # o9 D1 J! @+ H1 o0 W
  1653. STA PPU_Addr,X
    1 \6 [8 Q+ d# F) V8 v! q
  1654. INX
    8 S; v6 R8 Y) N+ L% n2 j- U7 Y# F
  1655. LDA <Data_Cnt
    . P4 q7 j* T! r, E
  1656. STA PPU_Addr,X$ J$ g# }  A& z: N/ X4 Y6 U, L) w
  1657. INX# n' l* T* T3 f- n9 K! {' h
  1658. Show_Get_Pos_Center_End9 c) m  n$ ~8 |( L1 @& V) h! c
  1659. RTS
    ' j, z9 S% E0 C
  1660. .ENDIF
    1 W- x7 q0 C2 v9 f3 F& d
  1661. % S4 l# v) z# j
  1662. ;==============================
    * A+ e* ?7 {9 K# ]. I
  1663. ;音乐端口清除, a8 j6 W, A  F& n4 B, P6 T
  1664. Sound_Data_Clear( Q8 }, B1 e& X1 h$ E: M
  1665. JSR Sound_Port_Clear# f" @4 K+ b" i/ ]! d# `
  1666. JSR Sound_Ram_Clear
    % P  B( W1 x  O6 x) C
  1667. RTS- T* g9 T6 f4 ]) i' H
  1668. + \) f$ G0 o2 C5 W
  1669. ;==============================
    . ^% D& c2 b! }7 ]3 K
  1670. ;音乐端口清除
    ( H% {( i7 y& C, J  R4 T; }! Y/ Y
  1671. Sound_Port_Clear- c, U' Y8 Z& A( U, J6 u" Z" _+ i
  1672. LDA #$00
    0 w  Q8 [+ Y. Y* w" @
  1673. STA APU_STATUS
    7 ?1 _( C! G8 k  u3 M" H% b
  1674. LDX #$00
    * Y: S3 }# _0 P4 ^  l
  1675. Sound_Port_Clear_Write
    - q4 I* i. J) d0 W% }/ S& X
  1676. STA $4000,X" f. e' H9 g5 F: F6 h
  1677. INX
    3 M3 o9 `! [5 V  C# R
  1678. CPX #$14! s* o4 F4 g5 s  a- z  I: P$ b
  1679. BCC Sound_Port_Clear_Write
      t/ T+ @  ?% o
  1680. RTS
      Z( v  T$ J; {7 b8 o
  1681. ( {+ {8 ?3 y- G+ p2 @  C
  1682. ;==============================2 E, V! s% r" k+ ?; @# I
  1683. Sound_Ram_Clear;RAM清除
    * ^. R3 F6 t7 s4 O' D3 O3 _6 v8 `
  1684. LDX #$008 U1 |# q% C3 [0 E! b3 s' p! V
  1685. LDA #$00
    " |: \8 k" V! @: b6 f
  1686. Sound_Ram_Clear_1& W3 q) E& m) d7 g5 [
  1687. STA Sound_Ram_Addr_1,X' o: n! A3 _% r7 u4 T, p; T
  1688. INX' T8 r& E9 {1 X$ l/ x* u% V2 ~8 v# p
  1689. CPX #Sound_Ram_Addr_1_Size. Y6 L# `0 j% K5 o* S
  1690. BNE Sound_Ram_Clear_1
    + k# Q' N& H( ^4 z, D
  1691. LDX #$00, z$ w# Z4 e9 b) k
  1692. Sound_Ram_Clear_2- p7 @6 Y0 d4 j! q. T
  1693. STA Sound_Ram_Addr_2,X/ \: U! F5 b0 ?8 l  g
  1694. INX; ?4 L+ F( k2 G, ?( J& y5 n) ~6 b7 n
  1695. CPX #Sound_Ram_Addr_2_Size; a5 p3 Q/ t) d7 D, d3 u5 H
  1696. BNE Sound_Ram_Clear_26 x9 k% R" I9 G$ _# K; C: G
  1697. LDX #$00" C( [. a' k! d% K( J& Q6 T
  1698. Sound_Ram_Clear_38 \0 K5 D4 E4 r( T' Z  k% x7 s
  1699. STA Sound_Ram_Addr_3,X
    5 ]" G" q+ m9 d( P/ W+ S9 \/ E
  1700. INX0 `% g1 C5 Q( v4 Q' k: ~
  1701. CPX #Sound_Ram_Addr_3_Size9 y) e5 W' w8 D/ k: E
  1702. BNE Sound_Ram_Clear_3
    & l* P( c  ^2 {4 R9 i+ n3 p
  1703. LDX #$00
    4 c8 i, b2 y! ^1 M/ ?/ r
  1704. Sound_Ram_Clear_4
    ) [( v5 V6 [9 T, w
  1705. STA Sound_Ram_Addr_4,X
    7 }! @) n! i% h9 A( c) T- X
  1706. INX/ `) r# i+ k* O3 W/ L  Q5 c# h/ L  O1 o
  1707. CPX #Sound_Ram_Addr_4_Size' _/ k: k/ u7 t: ]6 I1 Z+ B& b% @4 [
  1708. BNE Sound_Ram_Clear_46 Y; G' p0 w* ]* Y* {
  1709. Sound_Ram_Clear_55 u7 c: N; u# t2 J1 _& z
  1710. STA Sound_Ram_Addr_5,X
    8 R( S7 m6 ?% c  e  G
  1711. INX1 F8 P: W& U! u0 F* y; Y# k
  1712. CPX #Sound_Ram_Addr_5_Size4 G# L. i4 r, B  @/ V! e
  1713. BNE Sound_Ram_Clear_5& }; r" J! w- ?9 h0 `4 N6 t
  1714. RTS
    & I. _" [  G, ?  z* U, o  }

  1715. 3 `% [  b" Z! i
  1716. Get_Music_Collection_Name' V. o; K& @( x/ R2 X
  1717. PHA4 f7 G# _2 S0 h: ?
  1718. LDA <Music_Item_Cur
    % {; Z; @* h0 e1 O& u& }
  1719. ASL A
    * p, `. {' a! I5 \; r  ?
  1720. TAY
    8 K6 c$ j" n. U
  1721. LDA Music_Collection_Name,Y
    # j/ z1 U3 W$ Z. h* h9 t/ M
  1722. STA <Data_L
    8 T% k; |9 ]5 |/ e* B
  1723. INY, i0 n2 i5 |9 y7 K. \( m6 \
  1724. LDA Music_Collection_Name,Y& D$ f% e4 i8 W4 f  R- m
  1725. STA <Data_H
    $ x+ o7 @% _  b9 U
  1726. PLA
    9 A$ {: [0 D0 q2 m. h" f* I/ y; ]& x
  1727. RTS* G4 j) M. V6 b2 Y/ E
  1728. ; p6 h; h5 `( o$ G, H5 _# L3 J  i
  1729. Set_Sound_Total
    & h% P6 z  k; X" J# i3 f& N, o
  1730. LDY <Music_Item_Cur
    6 w1 b$ d4 {1 s) m4 \, Z) T
  1731. LDA Sound_Total_Port,Y' _. U/ ~5 L/ ^/ O1 F( u# P8 T) Y' s
  1732. SEC
    + W( W+ H: _/ Q. |+ Q) M, g7 Q; U2 x
  1733. SBC #$01
    ( y: o2 u; g% z0 j5 G
  1734. STA <Music_Total3 M$ Z  y9 f1 I# V$ n. j% I; @7 `  q+ A
  1735. RTS
    : S' h4 a' r2 M! O
  1736. - G/ W) I) W: Q; r+ `8 R/ U
  1737. Get_Sound_Start3 l' A6 g) A% S8 G, [% Q
  1738. LDY <Music_Item_Cur4 d* s9 s8 t9 y# q
  1739. LDA Sound_Start_Port,Y
    3 y# i0 T8 v6 Z" G' c
  1740. RTS
    . N* r8 p+ K9 B. X5 Z( m+ [
  1741. 2 j; F( Y% F" H5 T1 m# C6 F
  1742. Set_Sound_Init_Port
    " s! Q, J/ J' s- A
  1743. PHA% i9 X: Q) l  s: Y) t
  1744. LDA #$20
    ! p( z2 v- o: A
  1745. STA <JSR_Addr_Op, q/ v7 i% H, A0 j
  1746. LDA <Music_Item_Cur
    / L$ G2 x  z) k* X$ i8 u. W
  1747. ASL A
    + x8 H0 C- Z! \- Z1 F
  1748. TAY# r) K# a; \0 @) U) \3 |
  1749. LDA Sound_Init_Port,Y* U( k5 q. b. d# y
  1750. STA <JSR_Addr_L3 l8 c/ ^( C/ g
  1751. INY' [2 c5 U1 m, r0 r* b6 `
  1752. LDA Sound_Init_Port,Y
    $ U$ Q5 O* X+ E
  1753. STA <JSR_Addr_H
    ' |& A' d3 C! D8 d
  1754. LDA #$60
    0 f* S3 a+ b7 T4 I1 }0 f1 T
  1755. STA <JSR_Addr_Rts
      E: }- p6 b7 i) \$ F! [3 j
  1756. PLA, ?8 R  ]/ D: W) N3 D4 |) H
  1757. RTS- s* U3 t/ d) n& H7 c/ ~

  1758. 3 K8 o+ Q# J1 h2 f- s/ r3 J
  1759. Set_Sound_Play_Port
    7 F2 B. w4 _! h" }. I. i8 Q( O
  1760. PHA' u5 w/ \+ N; c$ F( Y3 J+ Y
  1761. LDA #$20
    7 t& A3 n3 c0 z" z. o6 F
  1762. STA <JSR_Addr_Op
    * N( y6 a5 v4 G' ?* K% v
  1763. LDA <Music_Item_Cur6 U/ J) ?1 A0 B9 Y
  1764. ASL A
    ( c; e$ H1 u5 F" U
  1765. TAY* g1 F- a) C$ U  e- T9 R
  1766. LDA Sound_Play_Port,Y/ k3 n7 o3 h2 T3 Q  D! U
  1767. STA <JSR_Addr_L3 z, y* d' v/ r9 e* b
  1768. INY
    . i: X, W. _6 q1 q; k. n
  1769. LDA Sound_Play_Port,Y* p* H0 w9 @! v( Z. F/ S6 }$ z' Z
  1770. STA <JSR_Addr_H
    % u5 e! z7 w6 j( u+ _' V
  1771. LDA #$609 ~) P9 r2 Z! V+ m0 d  Y
  1772. STA <JSR_Addr_Rts
    ( o' {$ u; k0 b$ X. ^' b2 q% i* `
  1773. PLA
    4 E9 G3 F& X& ?) M3 b
  1774. RTS
    ' w$ F& w' J- ^( `  @+ o

  1775. 3 g& `2 M" E4 Z
  1776. Set_Sound_Reset_Port
    0 `* G- f7 {( b' d1 [5 m9 f
  1777. PHA
    ' K1 f# D6 T. R( T! R2 j
  1778. LDA #$20
    ' s# k. j: S  W3 w7 o
  1779. STA <JSR_Addr_Op
    # s- c. g' s/ U8 y8 n3 Y
  1780. LDA <Music_Item_Cur
    4 K3 I( S% A$ [* x. N8 J- c0 p
  1781. ASL A. E+ l! c1 S( m3 q
  1782. TAY
    ! M, \$ d+ L, \' z+ X. v
  1783. LDA Sound_Reset_Port,Y
    % e; P' Y$ ^* V
  1784. STA <JSR_Addr_L2 k9 s+ \) a# o. {) {; q
  1785. INY
    ! q! H+ c8 n( p' F/ p) r
  1786. LDA Sound_Reset_Port,Y
    9 q! \$ m7 J( c( ]: P2 H6 y
  1787. STA <JSR_Addr_H
    - o" \: h5 z) R% }+ k1 r! W+ v. D
  1788. LDA #$60
    7 }% w  X" e' q* h" E+ k3 j( x0 l
  1789. STA <JSR_Addr_Rts) g- t, g3 q/ Q. H2 ?4 g
  1790. PLA
    ) Z! c5 L4 d0 m: w/ U" F' p
  1791. RTS
      b/ q3 I5 s6 Y9 j% k
  1792. ! N5 B( @2 i6 e6 j3 O) J( t' T
  1793. ;初始化音乐bank0 v1 }. ~( n, o' f% a3 B
  1794. Init_Sound_Bank
    5 w8 R) V2 g6 J
  1795. LDY <Music_Item_Cur
    % Z9 b* t1 @  I9 ^$ n0 a
  1796. LDA Sound_Bank_8000,Y, K3 K' G. Y' I/ l% F7 r" l
  1797. STA <Music_Bank_8000+ {( m9 r4 O5 p+ P
  1798. LDY <Music_Item_Cur5 L- V% y2 m4 l+ ~
  1799. LDA Sound_Bank_A000,Y8 _; {( I- G( ?9 W  o' `
  1800. STA <Music_Bank_A000
    , h+ x+ a3 x& I  Y0 Y3 T, }! t
  1801. RTS  e4 @; n9 {6 }( ^8 L% O: q

  1802. / _5 |$ _2 B. L; f8 r2 ?- L
  1803. ;==================================================9 J5 |1 i4 v9 n9 }' `  E% f9 x
  1804. Sound_State_Reset;音乐状态重置
    5 g- x2 \  P: u* L, F
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    : v+ I! ]1 f7 c$ t. z
  1806. JSR Time_ReSet             ;重置播放时间$ }: n, j$ i% D- \/ Q
  1807. 7 [* l' ]+ l8 S) O, e( Y
  1808. LDA #$005 T/ L7 ~# Q: C9 d4 n  h. Z
  1809. STA <Music_Stop_State3 c/ X; f! |) Z' R- s1 n7 o- `
  1810. JSR Music_State_Show       ;显示播放状态
    : U  y8 `+ N( y3 I, y2 D* P& Q6 E2 P
  1811. / M( t+ f. W) ^4 X
  1812. .IF Track_Name_Pos
    0 M! h3 O6 Y, e& A& W
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    3 E  G. y, L+ @7 s
  1814. .ENDIF4 w( C8 F0 }( `0 E  O5 b9 Z

  1815. ; i" k9 V4 k% {) e% R
  1816. RTS
    & a7 Z, L7 r. Z! [4 E8 t4 `

  1817. , F( H, g/ L) W9 r. f( n
  1818. ;==================================================+ K1 Q( l& U0 t* i- Z( |( t# P$ L
  1819. Sound_Init_Proc;音乐初始化处理
    0 k1 f9 i' ~4 w4 W/ x1 }
  1820. PHA
    ; P: \' e5 B9 f/ v4 f# e; b& _
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    1 a. @6 v! e; a9 {5 d
  1822. LDA #$008 _. `, T9 W$ h! l  b/ l2 @1 Z. u8 r
  1823. STA <Scroll_H               ;重设水平滚动
      J. S6 ~6 O4 x. _5 L4 y
  1824. LDA #$0F/ G( b# d& A: s" e4 w; U+ e& u
  1825. STA APU_STATUS* i) B: D, i& e+ d8 |
  1826. PLA
    - S5 I! k2 R( w. l. n& s" P9 Z
  1827. JSR Sound_Init             ;音乐初始化
    ! U  u  q# y% w8 u$ b" `" P
  1828. JSR Sound_State_Reset      ;重置音乐播放状态9 L- U; _$ P4 s0 a: _( q
  1829. RTS! r( Y. G1 Q$ {! z$ {8 x
  1830. ! a+ M: I# Q6 i/ ^
  1831. ;==================================================6 k7 F9 s  u1 |: Y; v
  1832. Sound_Play_Proc;音乐播放处理
    , x7 v/ |$ i* s
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    4 A0 z' I8 P! c/ R: F/ B; N' x: S
  1834. JSR Sound_Play             ;音乐播放
    . U) ?3 z& B7 p8 L) n: T2 N# E
  1835. RTS9 f, r: s  K; j% I' L
  1836. $ W4 S) c% [" i" u
  1837. ;==================================================
    ' Y5 z% L* j, i$ U  X: X
  1838. Sound_Reset_Proc;音乐重置处理' y$ `) m. [. T- [5 |
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址+ [8 u8 J! X! ~7 R1 f2 B
  1840. LDA <JSR_Addr_L9 w. p! o1 c+ j6 ], i# @: h  [# Q# _* ~
  1841. ORA <JSR_Addr_H
    1 u9 S' q( I3 ]& h& y
  1842. BEQ Sound_Reset_Proc_Default: X5 L3 O: B# b
  1843. JSR Sound_Reset            ;执行音乐重置5 s& y* ?2 \! r7 l) Q
  1844. JMP Sound_Reset_Proc_Init_Sound
    2 k( l% V7 _% D. r, j2 H
  1845. $ Z8 }- v* z9 x
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理" b: q4 Y" ?" D/ ~: Y
  1847. + v) r+ n  j  _0 v! }
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    0 ~  ~9 d1 f4 Y9 f, l, d
  1849. LDA #$00
    * E2 K% N6 o% c5 X) P6 r0 k
  1850. STA PPU_CTRL) W# m3 {! W; @1 @. j
  1851. 0 \. e$ L" L+ v. d
  1852. JSR Sound_Data_Clear
    / P" l/ C6 `' H7 n% ~

  1853. 8 C. d# m  }  m
  1854. Sound_Reset_Proc_Default_Wait
    " f6 L1 H' E4 G( m
  1855. LDA PPU_STATUS
    . H  v& T" a$ a$ i
  1856. BPL Sound_Reset_Proc_Default_Wait- o7 e$ q8 O1 k/ ^

  1857. . R7 F$ b( |- ]5 @. [
  1858. LDA #$00- r; H" t; N; C5 ^2 @& {  B+ m$ h
  1859. STA PPU_ADDRESS
    ; M: H0 {3 u9 y5 b' x9 ]! Y
  1860. STA PPU_ADDRESS' Z: z. ^2 y- E- K
  1861. STA PPU_SCROLL- j. X" d: A2 `
  1862. STA PPU_SCROLL
    4 j2 c. b) |) k6 L: `- i3 R8 R, n% _7 W
  1863. 7 y# j6 }' J# B: d8 Z
  1864. ;恢复PPU控制
    , Q; }2 R$ s2 i6 g) w7 q
  1865. LDA Screen_Ctrl* |+ g8 s, c  m5 [/ r: y  Y* @
  1866. STA PPU_CTRL
    6 j( i! m$ I0 R: ]

  1867. / i8 d& L7 N* P5 i
  1868. Sound_Reset_Proc_Init_Sound
    ' O" a* M. u- [4 ]0 j" q
  1869. LDA <Music_Stop_State
    $ \  i/ r9 d9 B4 P
  1870. BNE Sound_Reset_Proc_End
    ( j7 i# Z% p) @, I
  1871. LDX <Music_Item_Cur. ]3 s% @' u8 U6 [  h0 k, `
  1872. LDA <Music_Cur,X0 z  @6 @% S" A* |
  1873. JSR Sound_Init_Proc3 k) `, z+ c# D) S# y% N2 \  O
  1874. Sound_Reset_Proc_End, R; Y( J: ~! B' Z0 ?% A
  1875. RTS4 `% c9 |( W# A+ ]
  1876. " ^% v( S. p( ^- K7 n+ a3 x! v
  1877. ;==================================================
    * c6 C) m' F6 p% ^) N
  1878. Clear_Item_Text;清除页项目
    9 T$ X% i; J% y$ Y# g
  1879. LDX PPU_Cur
    6 [( |6 M3 ~" M8 y) r- n
  1880. LDA #PPU_MODE_CNT_CLEAR" m6 ]9 j/ {( P4 ^9 w; d1 q! m
  1881. STA PPU_Addr,X6 v& U1 Y* h9 D2 F$ d. J' }
  1882. INX* T  l# M9 {6 }, H  H+ f, n+ B

  1883. 9 u. I9 P, j3 Z; u, L! n
  1884. LDA <Page_Last
    + k& k7 W, b5 Z% e5 ~) ?
  1885. SEC% K8 \  u: w' M6 H! j/ c
  1886. SBC <Page_Last_Index
      Z! e  \3 f, }" `4 x8 B
  1887. ASL A
    7 t* A$ p) s; n# K. y
  1888. , p3 X' x* A% M( a) Z- S
  1889. TAY  r7 B" C) r( g6 N- l7 m) B7 p% k
  1890. LDA Item_Pos_Data,Y( Z0 h" `; L3 P6 f0 q# Q1 h; F
  1891. PHA5 ^( v# s, `! ~' ~
  1892. INY; E0 [! a7 O* Z1 g/ @4 x1 J
  1893. LDA Item_Pos_Data,Y
    9 C: ^, S4 T; n2 }' ?8 C' P. u
  1894. STA PPU_Addr,X
    / B. P( |7 x3 V7 ^( M' q, ]
  1895. INX$ e7 Q( v2 C1 a# c% b% Z6 c+ m
  1896. PLA. L1 I% n6 t8 l6 ^. c8 F
  1897. STA PPU_Addr,X+ l4 k- ?# M$ z  p; A1 @7 {. k
  1898. INX( ^7 r. P' p; m& q6 n2 G
  1899. ) Q  g2 Q$ Y4 X0 y1 I! m! u
  1900. LDA <Page_Last
    ; t( D( L: e+ i/ _  Y& s8 s4 _. b" a
  1901. ASL A
    ' A& N+ B" K/ [" V+ t
  1902. TAY  b/ T- v9 \2 G; T" |2 F6 K" R0 O
  1903. LDA Music_Collection_Name,Y
    8 w( r: D& N$ m' V
  1904. STA <Data_L
    , l/ r+ @; s  g# B& }) ~8 E* |6 K" |
  1905. INY. D& @; _, _3 ~6 e# }: [& p0 B9 F
  1906. LDA Music_Collection_Name,Y
    4 L7 C. B$ ^% e+ q' X0 p
  1907. STA <Data_H1 l- H8 g3 F7 `* Y  Y+ i
  1908. 8 c7 v% b  R, _8 G- M
  1909. LDY #$00# v9 K7 H, I3 U
  1910. LDA [Data_L],Y
    , s. A; o1 q4 a1 K* e$ J  j
  1911. STA PPU_Addr,X7 ~4 T& `9 r# @! p
  1912. INX* B6 A" ?& j: P0 e8 O
  1913. Clear_Item_Text_End) r7 m# q* x' u- W
  1914. STX PPU_Cur
    * L" V  E: o( ~, t. i9 N. @% L8 @
  1915. RTS
    ( }1 G2 R2 d. V8 R0 m0 B! q

  1916. , c4 d' J! l$ D7 [
  1917. ;==================================================
    $ }' f% T7 k$ p0 ^+ x
  1918. Show_Item_Text;显示页项目9 ?$ V/ k$ @" q- Y- z/ a/ O6 i
  1919. LDX PPU_Cur" O7 s9 ?8 Z" j3 s
  1920. LDA #PPU_MODE_CNT_LINE
    1 r) Z& V! M  N/ W3 q
  1921. STA PPU_Addr,X
    5 w' Z3 U! C, B$ ^; i4 d+ ]2 b0 f8 ]
  1922. INX
    % c7 I" R2 Y5 [
  1923. LDA Page_Cur/ j+ S( }9 w7 ^0 Q, P4 l. d
  1924. SEC$ i& @- T5 J5 t: E! {$ T( s% G
  1925. SBC <Page_Cur_Index
    ! c8 e# @# t1 V6 D5 m  }8 Y
  1926. ASL A
    & W! z! y" I% H7 t% j2 I
  1927. TAY
    ( R5 D& e& z2 [+ E, X8 k/ ~
  1928. LDA Item_Pos_Data,Y
    9 B# G2 j, V' ~6 w2 q
  1929. PHA2 t  C( U6 l, X( P
  1930. INY
    , ?/ U; k. p8 E6 Z
  1931. LDA Item_Pos_Data,Y* u7 w. J9 W* R1 R, r
  1932. STA PPU_Addr,X4 b1 b* v! x0 l6 u- `
  1933. INX
    ( ~4 \2 `7 y9 Z4 w4 J- H3 C
  1934. PLA3 ?/ w) t, P7 W- Y" L1 o# s
  1935. STA PPU_Addr,X' D! b2 R0 f" @  ?
  1936. INX, O+ T- w6 r" r3 ~4 W
  1937. ; b# C" A1 a/ ^9 ]- y  @" o
  1938. LDA Page_Cur; Z3 l( _7 Z% p0 o8 c; R# ^
  1939. ASL A
    ' w2 |$ M1 S) h8 |5 y: ]
  1940. TAY
    1 \9 p4 ~9 W0 T
  1941. LDA Music_Collection_Name,Y' G! u* ~2 l$ `& |  _# u6 B- f6 |
  1942. STA <Data_L
    . H# [( @# d0 @, N, k5 j/ X$ M
  1943. INY7 T: B" i" X* X0 r
  1944. LDA Music_Collection_Name,Y
    " m. Z( A5 t. @/ K- r
  1945. STA <Data_H
    5 t4 \. f8 y' }3 o+ b# V# c

  1946. , i4 \9 Y" J9 }
  1947. LDY #$00
    7 f  _" ]" L3 U+ v" q1 e; x" f
  1948. LDA [Data_L],Y
    8 L! |2 L$ x3 D. `. e" d
  1949. STA PPU_Addr,X
    ( A, _$ ^* i" L; W* z! ?: a
  1950. STA Data_Cnt
    9 S. F/ A+ B5 U0 e5 a/ d- e
  1951. INX; m) f" s+ v, k5 Y0 T
  1952. + [7 c9 t) b5 t. Y: w
  1953. INY
    9 w# o8 w: x5 Q0 k6 U* u
  1954. Show_Item_Text_Write$ f7 t% Q! {* O; c
  1955. LDA [Data_L],Y
    / S5 {8 a/ |. L8 z4 a/ y5 m
  1956. STA PPU_Addr,X% L/ j, i2 f0 }( r. D: U
  1957. INY2 E$ J$ m. s) A5 x9 E6 \
  1958. INX
      R+ q! W, ?# c
  1959. DEC Data_Cnt+ N1 J: U$ g/ g
  1960. BNE Show_Item_Text_Write$ @  K; f, X. p; v' D; x- K, x$ z
  1961. - F( Y5 D1 E$ l4 y$ z2 o( c
  1962. Show_Item_Text_End
    ) _8 G4 ^% i8 j2 {* h9 s6 q2 B
  1963. STX PPU_Cur
    8 l( E- k! a# ?: y$ \
  1964. RTS
    9 T- K8 H$ d5 K' R) j. [9 w
  1965. 0 ^' h0 @% v, d4 p+ A7 @* e
  1966. ;==================================================5 j0 m& e$ m1 K! F. r1 R3 l
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    ) o3 A  z" _: F+ d& p
  1968. STA <Data_Buf, y. [" i4 G, o) c, q4 O7 G
  1969. LDA #$00' t+ f; v! y% _7 ~4 u$ ^
  1970. Get_Page_Index_Calc
    6 g5 M( q6 G+ _3 u  Q. T
  1971. CLC
    " |: [# J9 {  ~, H5 u. d  f+ z; r
  1972. ADC #PAGE_SIZE: Z' }/ B0 ^/ M* @9 i" z
  1973. CMP <Data_Buf- O" O, P0 X; r. T7 e: s  z
  1974. BCC Get_Page_Index_Calc
    ' n* a# a/ k2 X0 M8 m8 R3 R0 x
  1975. BEQ Get_Page_Index_Calc_End
    ) z* [; s% k5 k7 J! e8 v4 i- k# z
  1976. SEC8 t4 H5 L1 z$ c& O4 V( u& c
  1977. SBC #PAGE_SIZE8 \2 ?; S8 z8 {7 V8 t% d4 O9 X
  1978. Get_Page_Index_Calc_End
    * z% z: Z4 k8 `% N( @  W1 M9 O2 _
  1979. STA <Data_Buf
    . _/ }! i; W1 {
  1980. Get_Page_Index_Cnt. Z. t2 T0 e8 F. J5 q) C
  1981. LDA #PAGE_SIZE
    ! r6 M7 L* J+ l
  1982. STA Data_Cnt
    + m- B- V8 K5 p! C
  1983.   S; K2 _) G' A: X1 a( o4 K6 n
  1984. LDA <Data_Buf  b; d" \0 }3 f: s) q+ K" W
  1985. CLC
    $ [# V) R1 i- p7 ~7 m
  1986. ADC #PAGE_SIZE
    ' x6 `" O! ]  `3 d6 _8 R4 ~1 c
  1987. CMP #ITEM_MAX_SIZE3 U; B* ?# O6 B$ s0 G
  1988. BCC Get_Page_Index_Cnt_End  ?% H9 `  x+ i/ j

  1989. 2 S5 R7 D! _- ^% p6 |% @) U# Z
  1990. LDA #ITEM_MAX_SIZE- w, O. ?6 Z4 h
  1991. SEC+ W( B5 R, J2 ^$ ?9 y/ u! J6 H8 V
  1992. SBC <Data_Buf3 `. [0 Y/ O3 }$ u8 u$ V9 D* G
  1993. STA <Data_Cnt; f3 e9 `  \$ F' [/ F8 l* G
  1994. " ]2 n" @$ [/ _1 N
  1995. Get_Page_Index_Cnt_End7 Q: \& y& `& W, a# i' _
  1996. RTS& U( Y; v& P: J0 a1 L  R$ c" }6 l4 E- {
  1997. $ ?$ e; i, ~! t) T0 k( \- f
  1998. ;==================================================- v0 b% O3 t1 ~5 m1 z4 U
  1999. Get_Last_Page_Start_Index
    " e3 r$ w: j6 W: n2 H& b
  2000. LDA <Music_Item_Last
    9 q# B  a( |5 \" G% o! t/ Y' K; J
  2001. JSR Get_Page_Start_Index5 H7 \0 G$ p3 y
  2002. LDA Data_Buf
    & x8 B$ ^5 @) }
  2003. STA Page_Last' C" w# F/ o9 G$ v' W) n4 m( J
  2004. STA Page_Last_Index
    ' V! O1 a" x  k" k  h/ F* F. x! m! w
  2005. LDA Data_Cnt
    , z5 n6 S) o5 k' C
  2006. STA Page_Last_Cnt$ d6 I3 G8 G& W& P
  2007. RTS
    % O: l/ p1 D4 g3 C( j" l
  2008. 0 A2 {, f% ^: w; [
  2009. ;==================================================$ _. p3 ^* q- s2 X* ~; u
  2010. Get_Cur_Page_Start_Index
    ' l, Q. J# w, j7 w& m" i; E% C1 `5 Q
  2011. LDA <Music_Item_Cur
    9 M- V* x* _' `: N! ^. `' ^
  2012. JSR Get_Page_Start_Index
    6 O0 s" s% A- ^5 T6 d
  2013. LDA Data_Buf
    ) I" B0 M4 [8 c7 L3 D6 l- i2 T
  2014. STA Page_Cur
    * H3 h0 H( G/ \/ S! y. M1 z* ?
  2015. STA Page_Cur_Index; D; a# L, V& ^
  2016. LDA Data_Cnt" r* ~9 _) o8 u5 h* \
  2017. STA Page_Cur_Cnt2 n( w; Y2 v, M- ^+ B0 E
  2018. RTS
    & e% s+ X! h3 {, _
  2019. & ~3 u! e% W: g0 o& b
  2020. ;==================================================- ]! S- D& T1 Q: v! H3 I' w6 ^7 N/ U
  2021. Show_Page_Text;显示页文本
    - a' K- `9 }- d, w  a" L
  2022. LDA <Text_Disable_Flag. i3 V) s3 D$ s7 \
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
      j: p* w/ Y9 I! t$ B4 A
  2024. STA <Text_Disable_Flag
    2 G6 Q* y' {+ U4 j  ^/ B7 x) a. p

  2025. ' Y& J+ a) D! h. X4 P5 q* }( i  a
  2026. JSR Get_Last_Page_Start_Index
    7 I9 H5 ?- {& o5 y3 H
  2027. JSR Get_Cur_Page_Start_Index
    " Q& \% s" _" t+ L  p! u% B: H! M
  2028. . M( s' r/ ?' M9 k
  2029. Show_Page_Text_Set! z, _; h2 D& B% G

  2030. - y3 K2 {% M" _: N* i, t
  2031. Clear_Page_Last_Item;清理上一页
    ! |; b6 j0 ^) z5 W/ n$ z' p7 K
  2032. LDA Page_Last_Cnt
    - p$ |& ~3 @& ~: j
  2033. BEQ Clear_Page_Last_Item_End4 h! r2 ?) c2 o  j4 X
  2034. JSR Clear_Item_Text
    7 p' X7 ~8 X2 q- Q2 ~" c
  2035. INC Page_Last3 A6 U& r2 P8 N2 `( B
  2036. DEC Page_Last_Cnt% y  D8 r0 Z2 C! G6 q
  2037. Clear_Page_Last_Item_End
    ; X- x2 s/ @- E: W

  2038. ; C3 _" P' ~/ N. a$ {! l  S# _$ M' z
  2039. Show_Page_Cur_Item;显示当前页! m/ X, f/ `3 a6 X
  2040. LDA Page_Cur_Cnt# ]7 m; h: `( u4 P
  2041. BEQ Show_Page_Cur_Item_End& M. H4 ]% i' \
  2042. JSR Show_Item_Text
    ; F: n3 D7 F, G: y' |7 U8 a
  2043. INC Page_Cur
    # N% B+ F0 {& F( `7 h0 O
  2044. DEC Page_Cur_Cnt! C% s( G" j& e, o: o" _
  2045. Show_Page_Cur_Item_End
    & _. X% w/ A) h2 }$ H' x

  2046. 2 g& N' a% z8 x# ^0 v
  2047. INC <Time_Wait_Cnt# u# j) C. ?) U; a
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    % |1 v  m- B$ }; |
  2049. LDA <Time_Wait_Cnt) D# c" m) b2 Z' I4 u) s
  2050. BNE Show_Page_Text_Set_Wait, b) G- s6 T, x( j

  2051. , x3 w) |0 T5 v: ~) p9 n
  2052. LDA Page_Last_Cnt
    2 i- f; O- k+ T5 t; s8 P3 O) x) V
  2053. ORA Page_Cur_Cnt7 q" \6 M& U% R) C
  2054. BNE Show_Page_Text_Set9 Y, e5 f' R! J% v3 f
  2055. LDA <Text_Disable_Flag  k* @- P4 N: U6 X6 y, S* ~; a0 C
  2056. AND #TEXT_DISABLE_ITEM ^ $FF# U8 P( ^7 `6 `' M& g5 J
  2057. STA <Text_Disable_Flag
    , j; V' I" P) a$ l
  2058. RTS1 X( w2 D) s- O
  2059. . O1 Z& B3 B& H; r/ x: ?, x
  2060. ;==================================================
    * O, Z& f+ Y# r+ ?! J0 Q: J; Q$ O
  2061. Last_Item;上一项
    0 t7 R3 k+ M, f( X: Z" j
  2062. JSR Clear_Last_Track_Name
    $ M0 `3 \7 J) e) K7 q/ a$ h. w% R
  2063. JSR Disable_Text_Draw
    9 v, A7 F2 w) s; C. E. z

  2064. & p; J: Q; d; D9 ?& L
  2065. LDA <Music_Item_Cur
    , h: @0 D7 n2 H/ d' z
  2066. STA <Music_Item_Last/ W. H1 q2 X2 {1 G' ~
  2067. ! t6 P4 m9 ^& E8 Z! D) l0 f
  2068. JSR Get_Last_Page_Start_Index
    - r$ o1 a$ T, f7 _& M" m' N- u

  2069. 1 H2 o4 A! o0 G; A1 e8 e
  2070. LDA #$00
    & s. r1 k  @. L. K
  2071. STA Data_Buf# _9 {# }% t! P4 j: G

  2072. % _" }, i* |, s/ F  h
  2073. LDA <Page_Last
    2 q  N6 r! {+ @$ {" ]
  2074. CMP <Music_Item_Cur& h* l5 J; U$ b
  2075. BNE Last_Item_Begin
    4 ~) \) u3 w, q% h$ }- U4 [

  2076. 7 E) N" m4 i* o; g( t% S; r
  2077. LDA #$01
    8 f. e! J5 m0 f2 F( p7 i: n& F- o
  2078. STA Data_Buf% D7 e; }( A  L1 ^
  2079. Last_Item_Begin
    3 m9 ~, c8 e/ h& B; h) h% ~
  2080. LDA <Music_Item_Cur/ @: i8 s* W9 Z0 q  s2 v- T$ E
  2081. BNE Last_Item_Set( G7 H: t6 M4 u- s
  2082. LDA #ITEM_MAX_INDEX + 1
    6 u4 [, w0 N, \6 C
  2083. STA <Music_Item_Cur* C( n5 G3 F$ B2 C

  2084. 1 {- {, D3 d3 G0 E, L2 H: ?
  2085. Last_Item_Set
    % }3 Q% ]# v! @6 a# @8 N" i- \
  2086. DEC <Music_Item_Cur
    2 Q) b0 U. k( ~0 V" U2 C0 c" k7 ^9 M
  2087. LDA <Music_Item_Cur; N  ]: h+ J' Z8 w# {( G4 E
  2088. JSR Reset_Current_Music; |6 Z) A3 V3 @* S1 j/ j

  2089. 0 r) \& H& ~5 E  d( i/ b- ^: r
  2090. Last_Item_Play  ^# x" m, p; x9 L0 H
  2091. LDA Data_Buf$ k# }% {$ q. K8 K; w: \
  2092. BEQ Last_Item_End& ?  X6 E9 }4 W  B3 R
  2093. JSR Show_Page_Text
    / V: y5 y: {( s5 e8 X. z. F' _
  2094. Last_Item_End4 P; ^- }! G# m. t: i
  2095. RTS
    ; X. d1 G' G/ J4 o3 H2 b* k/ A$ V' s

  2096.   V) W2 c! R; q& T
  2097. ;==================================================& V. [8 G& ^0 f4 ~5 ^. \
  2098. Next_Item;下一项
    ! i. q; L8 y" P4 q7 l9 E& P7 J
  2099. JSR Clear_Last_Track_Name( H1 P( L% g' U% T  @7 b8 }
  2100. JSR Disable_Text_Draw
    / R$ d! B$ e; B1 v8 q# ~

  2101. $ `: Z7 B  n2 I) C0 \$ F2 e/ R
  2102. LDA <Music_Item_Cur. V+ M4 u6 t% P6 B! l0 t: W
  2103. STA <Music_Item_Last
    : V7 G- M2 P- `5 t- L( v

  2104. # K, ]- H; v! r2 y$ H
  2105. JSR Get_Last_Page_Start_Index7 |$ D4 L+ E2 x! v: {$ U# m
  2106. 1 F0 C% o: a5 y
  2107. LDA #$006 i& U, j( V3 D
  2108. STA Data_Buf; E: H; z- h5 {1 u; D

  2109. 1 e# K! ?& o; S/ g
  2110. LDA <Page_Last, E5 w7 z' D9 z
  2111. CLC* F6 K, D  N; o  z5 y+ G, {
  2112. ADC <Page_Last_Cnt3 C1 L8 \2 d( J+ W
  2113. SEC
    2 O, ~3 y7 H$ ^& v
  2114. SBC #$01
    ! F, [4 ?; ?4 S$ `
  2115. CMP <Music_Item_Cur
    + U7 i4 c: G* a0 j3 S& a7 \
  2116. BNE Next_Item_Begin
    + U3 c- L0 h+ K* K- j+ a* D, s; i5 g
  2117. , Y  @6 C+ {, e2 t: f
  2118. LDA #$01$ j3 z9 c! ?' s+ {& ^/ A
  2119. STA Data_Buf
    ' t& A9 \) ~2 X8 n, [
  2120. Next_Item_Begin
    ( Z% Y' E  y8 v( f% h
  2121. LDA <Music_Item_Cur
    0 f# K9 D, ?! u% f. R% R6 v
  2122. CMP #ITEM_MAX_INDEX/ H! T- A1 I9 F) F- n: i( G1 y
  2123. BCC Next_Item_Set0 [6 y4 f6 [4 a2 A& \) y
  2124. LDA #$FF
    ' i. g8 A' v/ Y, K7 W! Y
  2125. STA <Music_Item_Cur
    ) m% }+ i* e/ }  o' ?! n6 b" }8 y, J
  2126. Next_Item_Set
    . J1 w4 u- B" C% m% Q; p0 ^( v0 O3 m
  2127. INC <Music_Item_Cur
    9 D7 ?1 S% m5 V- X
  2128. LDA <Music_Item_Cur
    : ]. K* M! v; `1 D; u
  2129. LDA <Music_Item_Cur
    " b( n& W6 N, g) e9 \) ?" e
  2130. JSR Reset_Current_Music* Z! p& S4 w, S2 [, @4 p. z8 ?. h
  2131. Next_Item_Play) ]) t4 Z2 U% B' ?+ e
  2132. LDA Data_Buf  b) Z  H& D- a0 S
  2133. BEQ Next_Item_End
    / f* ~5 i* l9 ~. O% x
  2134. JSR Show_Page_Text! z5 y0 L$ V% ]9 o* b7 K
  2135. Next_Item_End" @; \# E; G2 I6 ?
  2136. RTS
    # \6 j' P0 f  X1 C  b

  2137. + T/ W) g1 g- L/ b- Q
  2138. ;==================================================7 h; X' V2 X/ `; o$ r, h; L' ^7 n
  2139. Last_Page;上一页" x( u+ l- s( ~7 D
  2140. RTS2 q) |$ v8 i2 Y8 J5 X: c2 D: R. C& H
  2141. 1 n, P4 y* _; o0 y5 O+ Q4 ^/ P+ l3 d
  2142. ;==================================================
    , V% V$ h3 t& P0 ]% u7 K4 S& T/ `
  2143. Next_Page;下一页2 ^+ ?3 T% c7 N3 y/ K
  2144. LDA #PAGE_MAX_INDEX7 f1 L$ R& w2 ^' C
  2145. CMP #$012 `1 T' a2 ]! a; x  G8 R1 ]
  2146. BEQ Next_Page_End( T1 _2 f$ g; _+ i

  2147. 0 E6 |4 `- C$ X& {+ v9 ~" z
  2148. LDA <Music_Item_Cur
    8 w$ E' z) _* m4 K9 j0 I
  2149. STA <Music_Item_Last" {! J2 {% c2 C6 R1 D) Q' \
  2150. " K! G$ l3 }+ I/ M$ }1 v7 ~7 X8 s) l
  2151. JSR Get_Last_Page_Start_Index
    3 C2 H9 v+ r5 `% D# @! O
  2152. 4 X  I( T  b( L% O7 n5 p
  2153. LDA <Page_Last_Index
    : L. D$ F' Z# M8 y2 w# ]
  2154. CMP #PAGE_MAX_INDEX) S" d. e' o/ ]; M
  2155. BCS Next_Page_In_End_Page
    8 p" e* a/ E4 }% T8 V
  2156. 4 h/ |- L+ Q: U: g, M
  2157. Next_Page_Not_End_Page;不是在最后一页
    # e6 d7 `: ?' y3 A. F8 u3 ?/ k0 Y
  2158. LDA <Music_Item_Cur
    : i) ], Y* Z; \" {0 d1 p
  2159. CLC
    # C3 f/ e" f1 [; v; ~* s, ?3 E4 L
  2160. ADC #PAGE_SIZE
    ' C/ o' g1 p  F0 L- m
  2161. CMP #ITEM_MAX_SIZE
    ; B4 n. q8 o& ?4 p
  2162. BCC Next_Page_Not_End_Page_Less8 p4 h- P7 l* |
  2163. LDA <Music_Item_Cur! q4 j# r$ N. y8 u: Z
  2164. SEC
    # t) P) e6 }9 }9 I2 ~3 V9 a( I
  2165. SBC <Page_Last_Index: u" z9 y* l" s) D. E2 H3 h! `
  2166. CLC2 I5 Z7 `  }2 J
  2167. ADC #PAGE_MAX_INDEX
    8 a, z% K" {8 z( {: J
  2168. CMP #ITEM_MAX_SIZE( g4 d4 q% |2 n
  2169. BCC Next_Page_Not_End_Page_Less* ~3 s3 ?- z7 h* z- _6 v1 W4 ^
  2170. LDA #ITEM_MAX_INDEX5 Y- X5 ^) x/ }& b; w6 R  K4 B
  2171. Next_Page_Not_End_Page_Less
    8 e; L  I* h" S8 @* q' W' h2 ^
  2172. STA <Music_Item_Cur
    ) F: L: d1 a8 R9 ]3 r
  2173. JMP Next_Page_Reset
    9 `! G, y& g0 ~

  2174. 5 g9 J4 p. }+ B: F- A7 `
  2175. Next_Page_In_End_Page;在最后一页
    ( @1 T3 y) q+ H, o' i5 p7 L& C
  2176. LDA <Music_Item_Cur5 W0 A+ m3 w8 l; r8 h; ^6 Y6 d' E
  2177. SEC1 P8 E7 p5 a2 V* d" O% Z" L! ~
  2178. SBC <Page_Last_Index4 k( c8 W, y  U# B. u
  2179. STA <Music_Item_Cur! q5 E6 F' `/ _
  2180. / t* f! h. I; S
  2181. Next_Page_Reset! z% i5 R' _6 x) E* h
  2182. LDA <Music_Item_Cur" D8 R, H* u/ O. B
  2183. JSR Reset_Current_Music! w0 _7 j$ t4 d
  2184. JSR Show_Page_Text& f+ {  m6 j" ~, S* Y, P
  2185. Next_Page_End9 y) O* O8 Z# m& f1 r9 Z
  2186. RTS
    : y% ?1 Y9 ~+ I
  2187. & J7 J' z% \- P, m
  2188. ;==================================================) f0 c8 K% A& p; l
  2189. Disable_Text_Draw;禁用音乐条刷新
    & {% b5 y7 S# H
  2190. LDA <Text_Disable_Flag
    , Y) \( `* ^3 j1 ~% z( r* I
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME6 l1 [0 A! }5 h* d: W
  2192. STA <Text_Disable_Flag
    , l5 T  Q- [$ P& e# Z" i& I3 V% w5 X0 @
  2193. RTS
    * {/ r; b2 R5 C( g- a; R! \

  2194. " d% q& R3 V, W4 p$ }0 V% E
  2195. ;==================================================# H9 X/ [; W3 D# V1 \
  2196. Clear_Last_Track_Name;清除上次曲目名
    2 r8 a" ~/ Y0 f6 v4 w) {* V9 q
  2197. LDX <Music_Item_Cur
    : u1 \" Q$ p0 H; ~
  2198. LDA <Music_Cur,X  |3 L$ i* K, r% Y
  2199. .IF Track_Name_Pos1 N- X" H+ |/ ~( D
  2200. JSR Clear_Track_Info: v4 y" R$ S$ m5 {. Z/ [( F$ u+ X
  2201. .ENDIF5 K; V+ R; D) l* p) W
  2202. RTS
    6 G) p$ x1 g4 ^) B6 t9 N0 z( X

  2203. ) E, O! N. {! X% `$ w; v8 F' h
  2204. ;==================================================$ v9 b6 @0 ?' o* _5 X
  2205. Reset_Current_Music;重设当前曲目
    0 Q" h; p3 d" r! ?' ^! j) M' |
  2206. - u% Y$ V) k7 o* G) z- G& l
  2207. ;写入当前总曲目
    ! s" ^4 `9 N& o1 e
  2208. JSR Set_Sound_Total$ K) c8 p1 p* e( q! _& p; v
  2209. LDX <Music_Item_Cur
      x; @8 T( g  h* N6 F# U/ T

  2210. ) e: Z! Q! z3 j% \' i3 z
  2211. LDA #$00; }& _1 _/ E5 w& w0 T0 W$ E9 U# ~
  2212. STA <Music_Last
    + V2 v) G& R1 Y* S) o( P* X
  2213. 0 A1 [+ P, e' u  Q- I4 d
  2214. JSR Sound_Reset_Proc% l7 g& Q+ {3 ?& k. {; @
  2215. JSR Music_Show
    : u9 G+ v; @% e; k0 J6 y0 F
  2216. RTS% G; L  i0 r' W4 k  l4 z

  2217. 8 N$ V9 Q9 {+ X0 p4 X! z! F; ?
  2218. ;==================================================
    # h) K8 @$ R9 Y  L& ~/ Z* A2 V
  2219. Music_Song_Stop;音乐停止. a+ R! F+ Q* V7 j$ T; @
  2220. LDA #$01, B4 W8 L. p7 z1 S/ V
  2221. STA <Music_Stop_State
    4 ?  E* r' }6 z$ _# H6 o
  2222. JSR Music_Bar_ReSet/ u+ e% d) H; V/ \, m
  2223. JSR Time_ReSet( `" Z7 y2 d6 r
  2224. JSR Sound_Data_Clear
    , c- k; A# a8 G, K
  2225. JSR Music_State_Show
    & r4 j3 U5 L# }) k& C
  2226. RTS
    . `2 u, o$ A  U2 N% y

  2227. 6 T. i" m2 z& Z& G) K) v/ f
  2228. ;==================================================  U4 \) I/ h  h" k+ J
  2229. Music_Song_Play;音乐播放2 X: j0 t1 L- d8 |* J
  2230. LDA #$00
    ! _! O8 s* c) O; d! G
  2231. STA <Music_Stop_State/ b/ @# G8 C' O; Q5 t
  2232. LDX <Music_Item_Cur
    6 t, T, W+ u% D2 Z: `7 C- X3 A# i6 E
  2233. LDA <Music_Cur,X- _( w  K  K9 ^. @; t
  2234. JSR Sound_Init_Proc
    % a/ O9 i& S# r" D# s: V, F
  2235. RTS8 \) B8 m; e5 }/ q0 m1 z

  2236. 0 l& T! s  X' e2 Y. h. j
  2237. ;==================================================8 Z7 U, q* `  W! X" R
  2238. Music_Song_Last_10;上10曲$ J$ |0 Q) c2 ^
  2239. JSR Clear_Last_Track_Name8 \2 X3 K% V' N' }
  2240. JSR Disable_Text_Draw
    ' J$ D3 |& _8 X
  2241. LDX <Music_Item_Cur
    7 Q7 K/ x: N6 ]! f1 g( N
  2242. JSR Set_Sound_Total9 V, I) G( v* u3 H
  2243. LDA <Music_Cur,X
    / L: ]  j/ t! f; \# P( g( }& U: i
  2244. SEC/ O/ y3 |: I3 z! o
  2245. SBC #109 A! t6 r$ {8 l; c9 i
  2246. BCS Music_Song_Last_10_Set
    * l% q; @; I' S( c2 L
  2247. LDA #$00
    , n3 ?& ^( h1 d. b! Z: n( F
  2248. Music_Song_Last_10_Set
    8 k! a7 R1 U/ A1 s3 X
  2249. STA <Music_Cur,X
    . q$ F2 A, t# R: D7 d9 Z
  2250. JSR Sound_Reset_Proc
    8 G  a* H% o. Y% t* L
  2251. JSR Music_Show# `& ?) h  |  @
  2252. Music_Song_Last_10_End$ p/ q( c3 I0 u2 n& n
  2253. RTS4 W/ x5 z/ g2 o/ W$ N' D1 y

  2254. / m# a" Y  }8 ^- [1 ]
  2255. ;==================================================
    ; J& n, [% t0 v2 |! G: D
  2256. Music_Song_Next_10;下10曲% U0 q* k3 l0 M( I
  2257. JSR Clear_Last_Track_Name, N: l* l) Q9 d
  2258. JSR Disable_Text_Draw
    8 G0 O; m! ^; T4 \
  2259. LDX <Music_Item_Cur
    9 C8 k. J3 I; I2 u& @- G
  2260. JSR Set_Sound_Total! V2 [5 r6 F' a3 K' {* I9 O
  2261. LDA <Music_Cur,X
    5 L: W. [6 [+ a3 U$ p# U
  2262. CLC
    0 ^3 u! ^* ~6 b$ i; X2 T* b: L5 D
  2263. ADC #10
    6 s+ ?" k( G  ^* P, h
  2264. CMP Music_Total! S) `0 y! D& Q: [
  2265. BCC Music_Song_Next_10_Set9 j+ d! y1 T  e, V6 t: F5 C
  2266. LDA Music_Total
    4 Y+ @" U  e& ]
  2267. Music_Song_Next_10_Set
    * L; ]' x+ h; j. H$ o) J
  2268. STA <Music_Cur,X+ E" R# |- y1 ?* m% v! k
  2269. JSR Sound_Reset_Proc
    $ x8 w# f2 m! H0 c6 b7 k# a" m. P
  2270. JSR Music_Show1 a2 Z: C2 ^9 o' j) y7 ]
  2271. Music_Song_Next_10_End8 B: k8 Y! J3 i9 V' E6 T
  2272. RTS
    ; D2 V* p2 U0 f. B& V" U
  2273. # [+ M% [% ?1 E1 B. c$ [$ x
  2274. ;==================================================
    ! |: j; M" v: E, Q
  2275. Music_Song_Last;上一曲' @) [/ K7 q* R# R# y2 i8 c
  2276. JSR Clear_Last_Track_Name- i5 }" A3 y2 E6 D* t1 p
  2277. JSR Disable_Text_Draw
      ]$ v4 G/ X1 m5 N: d- U5 i1 Q( u
  2278. LDX <Music_Item_Cur- v7 |  r8 s+ ]" a  D, V
  2279. JSR Set_Sound_Total
    2 X! k( |+ l$ n0 _" F( V# s
  2280. LDA <Music_Cur,X
    ! j- F8 L% d# @3 G) [% h/ i
  2281. BEQ Music_Song_Last_Set
    , Z+ d( `4 \. \; I& K
  2282. DEC <Music_Cur,X2 g4 T$ v2 g/ a& V
  2283. Music_Song_Last_Set: u& q8 \- V/ S; l
  2284. JSR Sound_Reset_Proc7 N$ f$ T. l9 a* n/ ~
  2285. JSR Music_Show
    , g- E. F" M' H) L4 J- H
  2286. Music_Song_Last_End
    0 O  m" f# y# I
  2287. RTS
    / f2 \! Z) f7 l6 Y4 E) u' F! }

  2288. , [4 F/ r0 y) e1 i, X, w% w3 ]! |
  2289. ;==================================================5 }. e, O3 c, h. c4 U0 E. `# G
  2290. Music_Song_Next;下一曲
    ' s( z- T- s; ?. `3 W: N
  2291. JSR Clear_Last_Track_Name
    1 ?7 {% X( q3 F0 Q
  2292. JSR Disable_Text_Draw' p# }% y; f- @
  2293. LDX <Music_Item_Cur$ r0 y1 p, ?# \% D& Z( ?7 `" x
  2294. JSR Set_Sound_Total% r  u* r, J7 F3 }. x& n' R
  2295. LDA <Music_Cur,X) b, C* C- a3 o: m# x
  2296. CMP Music_Total6 @  a( U& ?* w$ s7 m
  2297. BCS Music_Song_Next_Set
    $ @( Z; \; B1 s+ b
  2298. INC <Music_Cur,X
    # D5 Q% Z9 @7 B  o: i
  2299. Music_Song_Next_Set0 c: |  O8 x+ J2 b  n
  2300. JSR Sound_Reset_Proc3 }4 ~# _+ |/ W* c
  2301. JSR Music_Show
    3 o% ]& F) W1 |7 `8 n8 m
  2302. Music_Song_Next_End
    ) U4 W1 y8 p4 a% O
  2303. RTS
    6 e! K9 O& a' _+ F3 J( h7 P1 F

  2304. & j. s# r1 J) p8 d+ y& ~& j
  2305. ;==================================================/ W; L& N; j+ B- l+ T9 U
  2306. Change_Select_Item;改变当前选择项
    - X# |# H" L3 C$ }1 {% w
  2307. ;--------------------------------------------------
    % I" M3 F7 {# Z
  2308. Change_Select_Stop_Play_Item;停止/播放
    , u4 U; h' Z: `# r; R
  2309. LDA <Key_Once  @+ C6 ]  Y/ V% k7 c
  2310. CMP #$10% E; `% w% F* a( H% z
  2311. BNE Change_Select_Last_Item0 h' x' H" d$ Q! {& [
  2312. LDA <Music_Stop_State
    . Y2 I& L# C% O3 `  J3 n2 s
  2313. BNE Change_Select_Play
    & @; l! v9 Q. K
  2314. JSR Music_Song_Stop
    # G9 `; O0 n$ u) j
  2315. LDA <Music_Stop_State
    ; _% l$ v. o4 s! ]( Z: x
  2316. RTS; Y2 a" a0 ^# L/ \
  2317. + F$ H& z' s. V; C! ]7 }
  2318. Change_Select_Play
    " z, k7 p' ^0 |0 r+ X* a' F. z# T
  2319. JSR Music_Song_Play
    ( o& k" m# _) i4 S2 s+ E
  2320. RTS$ ^3 g/ V/ u4 Y2 s' t3 P; ~
  2321. 9 {% |1 j9 j# a9 T
  2322. ;--------------------------------------------------
    ) E! b" N6 N" e/ A' D" f
  2323. Change_Select_Last_Item;上一个专辑
    ' m, T5 R1 P1 v2 e) }4 E; b0 q; N
  2324. LDA <Text_Disable_Flag! M$ @; {  G' [, b; p4 K7 Q6 V
  2325. AND #TEXT_DISABLE_ITEM5 f8 q1 @1 o# o, A; _& S) Z7 E
  2326. BNE Change_Select_Item_End
    . h* w8 E2 p3 R$ S4 U% M2 i
  2327. LDA <Key_Once5 Y% g' {* S' |; d- O
  2328. CMP #$08
    8 }- o; i' X" J3 }& z, i9 D
  2329. BNE Change_Select_Next_Item
    : k! D% G9 @6 a* N1 `# T" H
  2330. JSR Last_Item1 T- r5 @2 {3 Q; k7 ?
  2331. ;--------------------------------------------------( F( X, ]" c, x8 W% l$ E7 A7 k% J
  2332. Change_Select_Next_Item;下一个专辑
    / o' G- s, r8 {4 K5 A$ O: |
  2333. LDA <Key_Once3 x; [# J* k) s. \+ G
  2334. CMP #$04" c8 a9 q+ }- Z* _
  2335. BNE Change_Select_Last_10
    9 K2 {% l, X0 r4 h
  2336. JSR Next_Item& k& P4 S5 F) u: r! j/ W
  2337. LDA <Music_Item_Cur# p+ \# W0 O5 V- k! ?
  2338. JSR Get_Page_Start_Index9 o. @6 ]9 F# C3 F
  2339. ;--------------------------------------------------
    2 V1 [5 G3 w" b' u3 g! M- ?
  2340. Change_Select_Last_10;前10曲3 i& F. `+ v) @1 c; Y3 ^/ ?* N( A
  2341. LDA <Key_Once
    # H* h. K! k( S& J8 s
  2342. CMP #$40
    3 E" v% {. t9 E+ i% O
  2343. BNE Change_Select_Next_10: D; k% |1 l# S& z1 z
  2344. JSR Music_Song_Last_10! }2 F, e9 h  q
  2345. ;--------------------------------------------------
    + [: E- z% Q+ G! s0 y. w
  2346. Change_Select_Next_10;后10曲
    6 a$ [# c9 K8 s0 }& z5 v1 h! A  ?1 d
  2347. LDA <Key_Once' Y+ d4 D, ~: B5 X- T% }
  2348. CMP #$80
    ! `, t, F  s. T% ~3 C5 t' m
  2349. BNE Change_Select_Last
    4 t  D# N6 s# p0 @! V" n7 n  p
  2350. JSR Music_Song_Next_10! ]( D) I, u% n* P2 O# |7 k
  2351. ;--------------------------------------------------+ l8 I' ^  }" T. L5 D' ^' k" \
  2352. Change_Select_Last;上一曲' Y: ^& u% W) E& f  p  p; G
  2353. LDA <Key_Once8 C9 K: Z. e$ M
  2354. CMP #$02
    7 C" ~( D0 D" D2 o3 S
  2355. BNE Change_Select_Next$ m# L4 a2 ]  R& U4 b* e
  2356. JSR Music_Song_Last$ q# Z4 [/ Q% X1 Y$ n% `6 H
  2357. ;--------------------------------------------------
    . P% G& b$ M& W5 |# n+ t
  2358. Change_Select_Next;下一曲
    9 \* {& U% f4 Q9 J; k8 w: ~5 f" J2 P
  2359. LDA <Key_Once+ X/ U2 j" ^; J9 e9 Y
  2360. CMP #$01* f: ]/ a* D6 e! t3 r
  2361. BNE Change_Page_Next
    # ~1 \; P. K& d1 G3 A
  2362. JSR Music_Song_Next9 Z: [" m4 Z0 E, t  }- t, Q6 s% n# `
  2363. ;--------------------------------------------------& o# t) x+ h! l  E" H
  2364. Change_Page_Next;下一页
    ! K9 z( T2 \1 y0 c8 u0 `
  2365. LDA <Key_Once
    8 y. ~9 t  B3 P; X, g6 C3 o7 @1 ^8 h
  2366. CMP #$20
    * A* \3 J1 Q+ T5 m' w
  2367. BNE Change_Select_Item_End
    7 `+ M$ H. t* S' s$ v+ w4 Z
  2368. JSR Next_Page% z2 T/ B/ J7 v  |0 o6 i3 x
  2369. ;--------------------------------------------------8 }% C2 h8 m% p4 |
  2370. Change_Select_Item_End3 d& [+ a! C, {
  2371. RTS9 y# O/ f" l' N3 ^7 C

  2372. ! X/ v4 h$ J9 e( S) C
  2373. ;==================================================
    . U% e" _: _6 E/ I
  2374. Show_Arrow;显示箭头光标4 v7 l% @5 n3 k* x$ @
  2375. LDA <Music_Item_Cur
    3 Z1 h. u  ~) b: h6 @& H2 Y# ?
  2376. JSR Get_Page_Start_Index
    - W1 K6 {: t1 p
  2377. LDA #$00% V; D+ G. a: A( d; D' Z) |
  2378. STA PPU_OAM_ADDR
    " Y4 q) ?$ [- ~. Z  Q
  2379. LDA <Music_Item_Cur9 ?& H' {5 B* s, Z
  2380. SEC. i' C0 u" O( [
  2381. SBC <Data_Buf0 j  E  w3 B6 q" [$ g) Z# j
  2382. ASL A# f3 O4 K* c0 L! U$ B: m2 b
  2383. ASL A+ v4 Y) m; j7 W+ v+ g: u
  2384. ASL A
    - r* E7 R* O, G0 n
  2385. ASL A& [, X% _8 @; V3 k/ F6 _
  2386. CLC
    3 \0 e, G- v9 \5 ~) \( j( j. H
  2387. ADC #ARROW_Y_OFFSET
    - Q1 ?2 f$ B& r
  2388. STA OAM_TEMP_ADDR + $00& V% e' g( H2 `9 u: z! f- K/ O
  2389. ;STA PPU_OAM_DATA+ s& b6 n2 o- p5 X5 ]
  2390. LDA #$1F+ c+ C& a+ W9 e- a, _8 l9 X; m& B; U
  2391. STA OAM_TEMP_ADDR + $01
    ) A* y& v% V0 {( i* U
  2392. ;STA PPU_OAM_DATA
    * C% e- b7 o" S& @1 z$ D% h/ s
  2393. LDA #$009 \6 _$ X; c2 t* G6 w0 Z
  2394. STA OAM_TEMP_ADDR + $02
    ; N- ^% a% R+ f3 b# R1 S& p% `% N  s
  2395. ;STA PPU_OAM_DATA
    4 I8 l$ j+ J* g3 h- Y; {" l  \
  2396. LDA #ARROW_X_OFFSET- ?* q* y! |7 w3 l; ^; w
  2397. STA OAM_TEMP_ADDR + $03
    & s' V5 S* j( X! N
  2398. ;STA PPU_OAM_DATA- f( W  N5 s3 V6 E
  2399. RTS( A( P8 x- T: E+ X$ f/ W$ x
  2400. ) p1 \8 K; p& B" ^1 o) b, |! }  [
  2401. ;--------------------------------------------------+ B8 c! R0 J$ g* k. V" K
  2402. ;命名表数据
    , S, P1 W; C3 ]7 X/ i
  2403. Palette_Attributes- ~1 N+ e1 ]' e. s& M
  2404. .IF SOUND_BAR_SHOW_ENABLE
    ! V: ~6 P) i. D( M
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    6 R  `. K3 W* o6 Z2 {8 r" F3 C# f
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    0 y  ?& K3 `7 p7 g5 r% U1 R
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$753 {5 L1 B! m4 ]4 ]
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    1 C" d( D7 Y- N  m- u
  2409. .ELSE5 I- C6 z2 {" u  Z; k4 e. K
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    * k& q, U6 r: s6 p
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$554 M2 i5 s0 J) G' |: p
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$752 a# F9 H0 e" c$ O; L6 m- A! E. M
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
      M; e2 O/ U4 l3 y- e
  2414. .ENDIF& p; U! B( ~9 |
  2415. 5 ^0 j9 M% _, _: F2 K' b8 \
  2416. ;--------------------------------------------------
    - S. {7 i$ r3 R* o
  2417. ;调色板数据
    * P' y& ?  e+ o: }2 B$ w! x
  2418. Palette_Data9 I9 f) v! t4 l' [# q- a- o
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F- }3 r! v* q$ v, B# J5 d% u( s
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    9 d! J+ K% Q: M& l

  2421. / J, q! r7 q( m3 ]6 C& W* E( P
  2422. ;--------------------------------------------------
    & h9 L: `# f& y) F1 e. l$ i9 j
  2423. Static_Text_Data& n) x: e5 b7 V) n
  2424. .WORD Static_Text_Caption_Data2 h8 ?, j" g# a7 b9 t% f
  2425. .WORD Static_Text_Author_Data
    " C0 W) v7 u$ Z  r( p% v
  2426. .WORD Static_Text_Date_Data
    ! m8 f$ W, @4 Q" ^" U
  2427. Static_Text_Data_End% V3 ^$ P$ j7 A. M  T: t  E( ?
  2428. . ?% J* O8 h% n8 ^
  2429. ;--------------------------------------------------
    1 h# ]: x- H  [9 S% h5 o# L- S
  2430. Static_Text_Pos
    3 f, U6 z& P. Y$ J' k
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    / L% p/ h4 W5 k9 u' M& I' M% z
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    / |+ m4 ~# o# @& H  \$ I. h
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    8 L8 _' e8 a* B# k
  2434. Static_Text_Pos_End
    2 h$ H" T4 s( Q9 `8 `! |9 Z

  2435. * `- u, a7 w/ T* I: Q
  2436. ;--------------------------------------------------- G( |8 Q: X/ Z% K
  2437. Music_State_Stop* y8 {/ P: f* T8 `7 {& ~
  2438. .IF SOUND_BAR_SHOW_ENABLE
    9 P9 p' U' @2 b2 W
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    # z3 g( I0 M+ i" ?! O9 v
  2440. ELSE
    + C* p$ g4 l* m
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    , Z9 E( M$ {, Z) g% ]
  2442. .ENDIF
    " f: X. x+ ]) z- d
  2443. Music_State_Play  I! |" l3 v  K1 g) K
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00) @2 \( U/ H# G: }1 l- Y% V

  2445. ; ]' ]; C! f- R1 e; X. ^3 [  O
  2446. ;--------------------------------------------------. O# \) W) C# _  _* `
  2447. Sound_Bar_Text_Data;声音类型文本9 Y  H7 c5 g6 Y/ J2 {
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    / f: R. Y/ ~2 d! R( A
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    0 @9 l: g, k% ^8 i3 P2 J( v
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"+ b  \) P& Z) q
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"/ O& N# k9 h/ F; [+ w" Z
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$000 x7 E3 a5 i/ z9 I2 L. @' ]

  2453. 8 O' B/ V7 F# S! f+ E" x( h0 J
  2454. .IF Track_Name_Pos7 y/ a/ d. d# N) n( m& }$ _

  2455.   _# B9 E( q  r+ c* F/ k$ u) z9 ?; h/ |
  2456. ;--------------------------------------------------
    # o, h7 \# S9 N$ w1 n# @
  2457. Track_Name_Addr_00;曲目名地址索引
    3 q0 g  B1 t8 G% s4 E+ P! f
  2458. .WORD Trackr_00_01; @8 A7 U1 O/ c9 B9 T- S8 t0 T
  2459. " u* P% y: h0 P1 B( f$ G
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1": b( `7 t" l6 e& a# ~: p* i% `: k
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    4 p9 Y+ a6 o# B, v4 N$ c" @1 Y
  2462. 8 h+ i# A8 p; |, ]! c: @" L  m
  2463. ;--------------------------------------------------# r- W5 w! e" u) M; |
  2464. Track_Name_Addr_01;曲目名地址索引
    4 r4 f2 [; S( w( }" `# Z6 x
  2465. .WORD Trackr_01_01% u' O/ s! x/ h6 J. N
  2466. ! M- U9 s! W2 p, f2 Y  H
  2467. ;==================================================
    , X. j' ~" n. P7 q
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    ; P7 N8 ~! Y: w+ S/ X
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"5 i2 U2 d& u: e

  2470. ' ~& _# b7 T6 E7 e! y0 F
  2471. ;==================================================, U& P7 P* ?0 U( e
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引3 z, Z8 n1 j) E7 R' S, W; z. ^/ u6 S
  2473. .WORD Track_Name_Addr_00! B' s6 ~  R; W7 L$ A
  2474. .WORD Track_Name_Addr_01" F; u' G3 q  J- H
  2475. .WORD Track_Name_Addr_01
    0 W& x, g3 a2 _# S! t5 \
  2476. 2 T# P, p, E* o( w; N9 x
  2477. .ENDIF" E: _0 D" B# H& P! d
  2478. " p( S1 G2 g, U+ |. i- Q
  2479. ;--------------------------------------------------
    4 Q" V; C2 e/ _# y$ a4 D' ]& r8 z
  2480. Static_Text_Caption_Data;静态文本数据2 H! ?& E: G6 \4 t$ s6 _9 [3 u
  2481. .DB 16
    ) |5 _' R) ~8 B% `. s8 G3 o
  2482. .DB "FC MUSIC 12 IN 1"
    & b, w/ [9 h: t6 E/ `; w+ L- _
  2483. Static_Text_Author_Data
    $ x6 n: W9 ]' J8 E- ~0 u  h
  2484. .DB 25
    5 }* w. n( W7 m3 |: i  l
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    9 l, ?9 ]: n/ U. V5 |3 F. ]
  2486. Static_Text_Date_Data
    1 }( d+ ~8 l3 |" A" X) q
  2487. .DB 10
    5 d$ |1 p9 y4 Y5 ~  A" C  a
  2488. .DB "2023.07.23"
    3 p% d" G8 G, Q  B  X1 O
  2489. ' {" z( g! @) r* A
  2490. ;==================================================( P" v$ y! ]9 P1 a
  2491. Music_Collection_Name               ;专辑名间接索引. L2 q7 o2 C6 J3 l7 q8 v
  2492. .DW Music_Collection_Name_00
    7 H6 _* ~+ D- ?7 i. d! G/ D
  2493. .DW Music_Collection_Name_01+ w" n& s* [0 y% ]6 Z* G
  2494. .DW Music_Collection_Name_02
    5 e4 H3 H8 H3 k. c$ F( h& i
  2495. .DW Music_Collection_Name_03
    0 o; p, Y6 ?6 ?$ D+ r4 {
  2496. .DW Music_Collection_Name_04% N6 D) k8 K7 F* \4 \* |$ [, j
  2497. .DW Music_Collection_Name_05/ n. P6 o  h% O" C& L& X
  2498. .DW Music_Collection_Name_06. B6 I, y. a2 m; n) ?% I! s
  2499. .DW Music_Collection_Name_07
    " G) z& B: r3 j3 r/ }! X
  2500. .DW Music_Collection_Name_08; b) z# A8 A% Q$ h
  2501. .DW Music_Collection_Name_093 P/ t+ d2 _* y, X8 j, f% C
  2502. .DW Music_Collection_Name_10
    - L, b! ~7 ?" a0 d7 d; S- W
  2503. .DW Music_Collection_Name_11: U3 i4 `9 m% a2 |
  2504. , u, z) q6 i7 a% x. t
  2505. ;==================================================
    5 @" r% i) y& ]5 }" M
  2506. Music_Collection_Name_00            ;专辑名文本数据
    5 x- _4 Y! v, e1 Z( P4 e
  2507. .DB 11,"1.RAF WORLD"
    ! @  y* l; Q1 G$ H
  2508. Music_Collection_Name_011 F2 r. t0 p$ p  P  t8 D
  2509. .DB 15,"2.FINAL MISSION"
    # Q6 R& E% r3 e3 {% g& S; r
  2510. Music_Collection_Name_02
    % v# K% ~: M' W' S$ w
  2511. .DB 06,"3.KAGE"0 }1 Q$ y. |7 N. \8 d0 a  g
  2512. Music_Collection_Name_03
    # I) ~$ A) J9 T- w; \) z( v. r
  2513. .DB 16,"4.DOUBLE DRAGON"
    3 x" C6 {7 o) \9 v1 Y& q0 E* u
  2514. Music_Collection_Name_04
    ' b% H5 O3 F& l: J, e, s
  2515. .DB 17,"5.DOUBLE DRAGON 2"% ^* C, v! Z, u" A! _9 M* e3 @! `
  2516. Music_Collection_Name_05
    * @- p/ r* V9 Z) m
  2517. .DB 17,"6.DOUBLE DRAGON 3"* U1 O' A- {: ?
  2518. Music_Collection_Name_06
    ( D/ ?$ e- S7 O+ }
  2519. .DB 09,"7.ROCKMAN"
    * p. l1 z$ [4 C* x& _, H: K
  2520. Music_Collection_Name_07
    + Z5 X  Q6 S: t" P
  2521. .DB 12,"8.ROCKMAN 2"
    ) |2 N7 A" x& B1 l; g+ ~: x
  2522. Music_Collection_Name_08# h' O5 E. A- d
  2523. .DB 12,"9.ROCKMAN 3"
    4 g  ~# Q( G. N# ~; F' u
  2524. Music_Collection_Name_09& B& T; w4 E6 E
  2525. .DB 12,"10.ROCKMAN 4"' g' z6 m' r0 y8 z  G! m% ~
  2526. Music_Collection_Name_10; q0 G  X# ]. _) ^& q: ~" B
  2527. .DB 12,"11.ROCKMAN 5"
    ' k9 ^/ h) k9 a' s7 {
  2528. Music_Collection_Name_11
    . [) T+ G) b; [- D; x
  2529. .DB 12,"12.ROCKMAN 6"5 P# f7 y! A! ?/ w* t
  2530. # S( T& p' I" W0 b
  2531. ;==================================================
    0 S# _6 Z, h" Q* W/ M
  2532. Track_Name_Addr_Flag                ;显示曲目名标记8 I$ C2 m  I9 V) ~
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0$ e" K. A7 G! R' @" F2 i% w6 A: Z

  2534. " ?2 G9 O+ C; M4 O9 h; }; W, I
  2535. ;==================================================
    + G2 n. q8 {; [2 L1 k
  2536. Item_Pos_Data                         ;光标箭头位置
    4 Z8 x. \9 t! `
  2537. .WORD ITEM_SHOW_POS6 C- E, Z+ k# W1 I/ o& o1 i1 X; s
  2538. .WORD ITEM_SHOW_POS + $0040" d" B1 m$ g/ _' B; `4 j8 ~
  2539. .WORD ITEM_SHOW_POS + $00806 H* k/ B: U( Q
  2540. .WORD ITEM_SHOW_POS + $00C0
    ' ^% F7 Q/ o4 j9 z' f
  2541. .WORD ITEM_SHOW_POS + $0100
    ; b% c: i" i8 Y- X
  2542. .WORD ITEM_SHOW_POS + $0140
    / k/ ~3 h3 u! j8 d$ T" s( g

  2543. 7 f; I7 R! s* x+ R
  2544. ;==================================================8 w; Z# u4 z2 {( C4 c, o  Q, y1 ]# G
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    2 H+ y) z* r- ~9 y
  2546. .DW $BFC8
    1 d1 p1 S* d2 O3 Y0 g# `+ n% @5 O1 x
  2547. .DW $D7F02 B$ I) V+ e4 P, N" z
  2548. .DW $9FC0
    ; d  \& |7 Y: V$ k, C
  2549. .DW $BF70
    ) v7 a! E5 e- ^
  2550. .DW $8003: S" y' L$ T' K" @( _% V; T
  2551. .DW $BF30
    2 o; h8 l6 X) j
  2552. .DW $9003
    2 x& a" f2 Q. s
  2553. .DW $8003/ A; g! K6 `* ^4 }
  2554. .DW $8003
    ) K8 [( w, X% h3 S9 b7 L
  2555. .DW $80039 Z7 Z/ M  J# r4 j. C% u8 ]. I1 j
  2556. .DW $8003
    0 @# ~6 @* ?( G0 \3 E% J  h- e
  2557. .DW $8003
    ! X# I& L+ Z1 |* D, ]! i6 w7 z

  2558. 9 f( n' V! t( F; W2 R
  2559. ;==================================================' Z5 m$ ]. Z4 F
  2560. Sound_Play_Port                   ;音乐播放入口地址, m# @% m4 g8 @" i: T
  2561. .DW $8000
    2 F# x$ c+ @& @+ L8 G
  2562. .DW $8001. h/ P9 S7 h: ^  P: g
  2563. .DW $A000# o" ^' x  g( G% X4 y
  2564. .DW $8003+ u, Y; f- O  Q8 {9 b8 {
  2565. .DW $8000
    6 |9 ?4 e8 x1 {$ v! ~  [
  2566. .DW $8003) F7 S+ G# x9 [( M+ P8 }# S  N
  2567. .DW $9000
    , y3 i2 J4 [2 B5 W
  2568. .DW $8000
    3 f' e& i* S" U, Y/ _$ q4 a7 n% N
  2569. .DW $8000& s0 p8 @" V: o/ H
  2570. .DW $8000
    3 A% R% v' o0 R  @/ Z) y; y2 f
  2571. .DW $8000( r9 a( N, c5 g
  2572. .DW $8000
    : B  N( c; p. U

  2573. ' X+ @( ?" P- [' j
  2574. ;==================================================/ [5 y1 g$ |  B" m6 \, d* W
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    % w6 [* P! A; z; X6 C3 n
  2576. .DW $00003 z' |4 ]# G" l: p1 u
  2577. .DW $0000/ o9 q$ F. D/ ]( y" Z# }  d" k
  2578. .DW $0000
    . x9 D" e+ S$ K, m
  2579. .DW $0000
    & L4 t1 z) J  Z9 O* S4 C! {
  2580. .DW $0000
    0 Z$ h0 z/ y6 d& w
  2581. .DW $0000
    ) D* c" R- U" w! s4 @4 E
  2582. .DW $0000+ e# }! I( U8 T7 {4 m  H& H
  2583. .DW $0000
    / v! L1 R( V5 J' g6 j' b# H( i
  2584. .DW $0000- ?5 _2 y, e3 z
  2585. .DW $00003 E& S/ o( {- T: o  U
  2586. .DW $0000
    8 p" c, W2 Q$ z
  2587. .DW $0000
    . G& r; n; ]' R) q9 e
  2588. 2 ]7 r- M3 B  r0 R6 a. o& U' G
  2589. ;==================================================
    # B/ ?' C; c/ I( O7 u  x
  2590. Sound_Total_Port                          ;曲目总数" a9 N3 _" n4 f; j8 x4 N
  2591. .DB 38
    1 D* P3 Q# c3 D+ F! r
  2592. .DB 33
    ( I* f% }3 ]! H9 W9 h- g# J
  2593. .DB 49
    ! |7 [4 d* w3 D- |4 z
  2594. .DB 417 j( R! v" Q5 N2 X! m4 n; V+ W5 J
  2595. .DB 83. N5 n* ]' F4 x2 t6 d, @$ n( k, e" A
  2596. .DB 70
    * k6 z+ {9 [. F  G+ D6 [- u
  2597. .DB 50, o0 t$ k5 B% b6 l: f2 i& K- K+ x
  2598. .DB 67' R1 P0 f1 E+ V/ d1 F! E2 N! g# D
  2599. .DB 572 w  t2 Q" ]: f' W
  2600. .DB 719 t& E3 ]& I$ s# O8 {8 M5 `" |
  2601. .DB 76
    ( r5 A% L$ i( n! A7 B2 U
  2602. .DB 102* u. \2 `7 Y2 T* M

  2603. 0 m/ F, a& ^6 P% H
  2604. ;==================================================
    0 C  N, t/ _1 S: }3 a! Y9 e7 T; g) M
  2605. Sound_Start_Port                      ;起始播放曲目
    / b! j. }, t; Y9 |3 f* a/ N
  2606. .DB 00
    # I6 p9 C$ a! A9 k6 S0 z
  2607. .DB 00
    2 {5 F4 c+ A1 z& q" r& ?" Y
  2608. .DB 00
    5 _% c1 [' S' g6 d
  2609. .DB 00
    2 }7 O8 [0 i5 W: B3 V. N0 o7 t
  2610. .DB 00; A* H7 o2 N  y' @
  2611. .DB 00; N0 v7 I! z/ p7 y5 e# j- M3 j
  2612. .DB 00, E) n8 B2 Z& ^( ^
  2613. .DB 00
    * J" K' w2 }4 C' I* `5 \6 J3 }
  2614. .DB 003 w  L: m/ M  {# K+ x3 C3 j
  2615. .DB 00
    7 u& t6 U4 |: {& _" `
  2616. .DB 00; ~9 @6 f: ?4 `5 o8 O
  2617. .DB 00% |- h% }- V' l* c0 k4 \

  2618. ( C& V1 F$ E5 P4 P0 ^
  2619. ;==================================================
    ! a+ C7 m* ]) H) W" F4 ]
  2620. Sound_Bank_8000                      ;专辑bank_8000
    3 j% a$ Q1 m6 H/ C" {6 t1 u
  2621. .DB $108 C! R( V+ B, X. D
  2622. .DB $12
    1 f3 L: |5 P; m3 g) M% v. w
  2623. .DB $14
    5 b9 _3 U; D; b: R( e
  2624. .DB $16
      ]0 ]' d$ O# T5 H
  2625. .DB $18
    8 U" n+ x; d  z& _
  2626. .DB $1A
    0 L: e7 m( V6 d1 H0 E

  2627.   G  |& Y* N; O' v- Y$ S
  2628. .DB $00
    9 C' _' N6 Z$ i
  2629. .DB $02" S0 U0 C# Z( y3 Q" x' i  T! c0 b
  2630. .DB $0D
    & U& E1 n  M" ]+ W& }
  2631. .DB $04
    ) H* w% X1 P. Y$ J
  2632. .DB $07
    $ }7 Q; r3 `) a9 G  g$ ^5 d
  2633. .DB $0A; R+ b+ V  d/ P
  2634. ) N, k0 X# Z6 H2 p

  2635. $ D" c7 m  [" _7 V% a7 s$ \+ t8 c$ R$ X
  2636. ;==================================================  [# w4 |2 `$ Q, l+ t. O& T
  2637. Sound_Bank_A000                      ;专辑bank_A000$ s# s5 d0 `- K$ U
  2638. .DB $119 _' E- }) M$ v' s  Q$ M! Z- k$ }
  2639. .DB $13
    8 p' A, r3 c$ N
  2640. .DB $15- x) y! m0 j! m# h
  2641. .DB $17
    ' u! u9 V' P5 F! D) q( i
  2642. .DB $19
    " X: a& ^( H$ C+ T1 N- ]
  2643. .DB $1B7 g$ \' V6 q4 P5 N# G& o
  2644. 9 m- p4 O7 c& ]! q( j
  2645. .DB $01' [# j& {4 d, G  C4 y
  2646. .DB $03. x* c3 [/ f* w& I* e) H- N
  2647. .DB $0E
    5 D8 h/ {7 z! X2 [' _5 P+ K
  2648. .DB $05' ]) n7 H* [# e; Y; ]( a+ P: M
  2649. .DB $08" D9 V) p9 r. [
  2650. .DB $0B& n0 o- e& `  R, a
  2651. - b9 P1 [- z5 s( W4 A* [% L% {

  2652. , U6 @0 |# n$ V6 R
  2653. ;==================================================' J& s/ X1 n3 l& R
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    2 Z" T/ E& |& Y! `, M" @
  2655. .ORG RESET_ADDR' v' v6 h- d4 b: ^6 R1 Y- i
  2656. 4 V3 i7 A: r9 c7 m0 R7 `& S) A) W; f
  2657. ;==================================================  ^& i( S" v, x7 F3 `+ J
  2658. Switch_Bank_8000;切换bank到8000-9FFF7 u+ }; y/ U2 j, w* V4 E3 b
  2659. PHA
    5 a; \: H  j. S
  2660. LDA #$06
    - W) b) r+ t7 B0 F6 ^
  2661. STA MMC3_BANK_CTRL# g: x* V: L$ {9 g0 [( z! l
  2662. PLA: y) c' p4 V" a
  2663. STA MMC3_BANK_DATA
    # _  Q; K3 ~* B$ P1 H: u/ f+ y. M
  2664. RTS  J* u# }' E# V4 }- o5 M/ [: r9 t- C
  2665.   `9 r& j! @  c7 X) F
  2666. ;==================================================' f4 a! a4 y8 ~1 y7 U' @3 ^
  2667. Switch_Bank_A000;切换bank到A000-BFFF7 a; s8 w9 V" D) `
  2668. PHA' H5 ?# `+ Q3 N- E( p6 v5 N
  2669. LDA #$07
    6 }( L. d, |# b2 N3 c
  2670. STA MMC3_BANK_CTRL
    * X- [5 t; G, J: d' m, m" `* {
  2671. PLA4 P# Z- M( {5 S6 |2 x) ^. W6 Y
  2672. STA MMC3_BANK_DATA
    ( D& D  [# p* V: k2 o( v: e
  2673. RTS
    8 `% }' K7 L$ m: o4 Q
  2674. 4 p/ U. r: \$ {3 u7 y
  2675. ;==================================================
    4 a! e3 _6 V7 p- R: m8 s
  2676. Switch_Main_Bank;切到主程序bank- m- ]- \* Z; ]1 j
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    + @2 H+ r9 a  x$ Q4 E: r0 k, {4 C
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank5 R! C$ G) g8 P$ u( F- p/ u9 G
  2679. RTS
    2 U+ e. G2 ~- a

  2680. ( _7 v* ?  J% E
  2681. ;==================================================
    ! _% {0 C% s6 Y# ]; G1 s
  2682. Sound_Reset;音乐重设(如果有的话)
    $ u2 y* X2 `2 D# {6 Z! J
  2683. JSR Switch_Music_Bank  ;切换到音乐bank4 P; t% ?1 S+ I6 O0 v, F( p
  2684. JSR JSR_Addr_Op        ;执行音乐重置2 x& e: \/ J! M4 ^3 t# U+ h  I! s
  2685. JSR Switch_Main_Bank   ;切回主程序
    - |+ H$ e3 P0 i$ }6 h: w0 U# S) [
  2686. RTS
    " {/ e, G5 c4 j0 h

  2687. $ @0 ?, R% t5 D- }) n
  2688. ;==================================================- h! T2 h. T9 G
  2689. Switch_Music_Bank;切换音乐bank& b# f+ T. A* T; U) q4 B# w
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    ! D  i& u* O7 {1 u/ p7 n
  2691. LDA <Music_Bank_8000
    : z& n6 U6 J& h; S
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    4 u) L  f& E+ X8 ]4 B5 e! F# p8 y# x3 c
  2693. LDA <Music_Bank_A000# l4 p! J" Z# |9 s. t  m# J) R) |
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    - s/ ?9 K3 E5 Q
  2695. RTS
    0 Y( [4 Y# g! q0 @8 K, {' a

  2696. ; j0 r5 k; H7 h/ ]+ m" k% C
  2697. ;==================================================! P; i: I; w" j1 l! W. f0 A% O
  2698. Sound_Init;音乐初始化
    $ O5 h' C8 W4 ~# B: q4 k+ p) B
  2699. PHA  S  C. W! N$ q. r
  2700. JSR Switch_Music_Bank  ;切换到音乐bank' _( U% d$ R' b! U; E* ~) |3 e
  2701. PLA
    % S9 @: n+ {, S; `7 a$ H: e
  2702. JSR JSR_Addr_Op        ;执行音乐初始化1 L' f4 E, }3 z. r) ^
  2703. JSR Switch_Main_Bank   ;切回主程序  [/ |6 w8 P9 u6 |
  2704. RTS
    1 I# D9 {/ r4 F8 ^) k2 `

  2705. - p. r1 J7 U8 S8 t# m8 z( h) X+ G
  2706. ;==================================================( o* x  o6 G4 T% e( A, k/ v
  2707. Sound_Play;音乐播放9 D0 t+ h, z; q) C( \& y$ J. D; t
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    " p; ^' W7 J& f
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    ' D# s* d: I5 |- x
  2710. JSR Switch_Main_Bank   ;切回主程序4 t6 M% C) _- [, Y2 l$ ~: [$ T  @, Q
  2711. RTS# Y6 @' I5 }$ T$ q* s" p
  2712. 0 O8 A9 t' R7 ^8 `- o
  2713. ;==================================================
    ! a. O, V1 w0 q" z7 C! Y& l! F
  2714. MainLoop;死循环* a8 N* R0 m7 X
  2715. JMP MainLoop
    % x+ k  B7 ?: A/ ^! b! V. L
  2716. " Y% n5 f1 _8 h3 J# F/ U
  2717. IRQ_SUBPROCESS_JMP = 0
    / |2 \& }) L3 Y0 G5 \3 U
  2718. 4 `, M* P% }. s. o2 K
  2719. .IF IRQ_SUBPROCESS_JMP$ l  u9 E) K2 [* M+ }3 e
  2720. ;==================================================
    5 z) F3 Z& Z' L0 e- p
  2721. IRQ_Process_0;IRQ处理过程0% \+ u( ^. \) V% l8 J' O2 Q8 |

  2722. & s0 s8 b9 n5 W; }
  2723. ;15条扫描线后触发IRQ& B& y( O. B' K! A" e( i, I3 `
  2724. LDA #15
    . s- Y0 K1 Z: b
  2725. STA MMC3_IRQ_LATCH1 X# {4 \( @* ]0 L

  2726. 3 l6 k) h- G6 D; Z5 E. y
  2727. ;设置屏幕滚动3 e) l3 w* }; j' u1 S: v4 M  U
  2728. LDA <Scroll_H
    " S" |* P/ z1 L2 @2 y
  2729. STA PPU_SCROLL
    : s, k2 r' Q& F. l  W" \( o7 j
  2730. STA PPU_SCROLL
    6 c) {. ^1 }2 f; n
  2731. ' g* x4 c+ D  \6 |8 l
  2732. IRQ_Process_0_End; t" A. l7 ^5 I% D4 J
  2733. INC <IRQ_Process_Index! {  g1 i/ A* j, V# `2 _# R  [, O
  2734. JMP IrqProgramEnd# Q: O; M/ N8 J( d! U( s
  2735. 1 P# M6 A9 r; w1 W; f
  2736. ;==================================================
    # p, W6 z8 d" e$ O
  2737. IRQ_Process_1;IRQ处理过程1
    4 F  J! L& Z- m+ @

  2738. 1 w. s* E5 [8 w/ W, D
  2739. LDA #55
    $ e0 t, S4 w: |1 B
  2740. STA MMC3_IRQ_LATCH2 g2 r$ A" A; T7 F" m0 H

  2741. " H! O) ~/ G; b& ]' t
  2742. ;设置屏幕滚动9 A" R# {+ r) m; D# [3 M1 r
  2743. LDA #$00
    / X2 G' J  I$ {1 E6 ?
  2744. STA PPU_SCROLL
    , _7 L7 r& L9 N1 q- k$ N
  2745. STA PPU_SCROLL; X( m( J2 G5 r  o9 o! ]3 C1 W% `

  2746. 6 M. l& P$ m% W& v5 y9 v9 b$ F
  2747. INC <IRQ_Process_Index; f% C$ \! N+ z- Z5 j+ u3 L
  2748. JMP IrqProgramEnd
    + h  l. G* c# m0 M7 j8 c( P

  2749. ( v% G, _  {4 L; I* }7 F
  2750. ;==================================================& D9 v- d: J0 {8 \( G  f9 A6 k
  2751. IRQ_Process_2;IRQ处理过程24 B, S/ g* f+ X( E: v
  2752. 9 \; h# i: @8 I. @
  2753. LDA #15
    2 ~% ]$ o6 M9 P  d0 x
  2754. STA MMC3_IRQ_LATCH
    ' ^) S. m0 Q) V3 c1 m& X. @+ a

  2755. / _! @8 @2 V) d9 \1 z( {
  2756. ;设置屏幕滚动
    ) ?% W/ ~) i" Z3 L1 v+ z
  2757. LDA #$00- r. F, M1 P7 D! X
  2758. SEC
    % N/ U1 b! a0 y' T
  2759. SBC <Scroll_H! A9 k7 n, b( B" O! {
  2760. STA PPU_SCROLL7 k. b9 j! U6 V; {1 Q: K; X, q8 F
  2761. STA PPU_SCROLL0 Z# m# D& U+ A- `

  2762. * F' ~5 H% ?' C# J- N
  2763. INC <IRQ_Process_Index
    9 P9 ?1 |5 i" x1 d+ Y& m
  2764. JMP IrqProgramEnd
    ; L6 T% j7 e: a! J+ w/ A
  2765. 3 ?4 B- o: O+ f" R; Y2 e
  2766. ;==================================================# j/ y" A: b& g7 h: n5 W
  2767. IRQ_Process_3;IRQ处理过程3; N. C, F& U; y4 l9 p& R$ m2 m- ]
  2768. 4 o+ g7 w$ @3 ^+ z2 Y5 ^
  2769. ;设置屏幕滚动1 L; @( C, V' n% c' z
  2770. LDA <Scroll_H0 q" `* l: H  C" ~. U; q
  2771. STA PPU_SCROLL
    6 h& p$ }0 ]0 f4 T
  2772. STA PPU_SCROLL
    * N$ x4 E+ U7 ?3 H) X

  2773. ; g: z7 T) \5 w/ C. g0 y- k
  2774. ;禁用IRQ1 K/ R* N5 D$ A6 ^" e( I" j; r
  2775. STA MMC3_IRQ_DISABLE
    ; ^; t. w* I+ A5 J
  2776. JMP IrqProgramEnd
    3 l8 g, r$ a" N1 a1 _+ _
  2777. : [! m; r& J* C. s  K" c2 R
  2778. IrqProcessAddr  Z3 Q3 o3 H, ~$ Q- x
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3: w3 T5 H  i  ^8 `& x

  2780. ; m9 e, w5 u4 d6 E5 J
  2781. .ENDIF
    $ C1 r5 B; g- D2 h; f% J; S
  2782. ; b6 I3 m* [  i$ g0 |  x
  2783. ;==================================================7 ^" `* j9 W+ B) V
  2784. ;IRQ滚动模式常量
    & k0 X* b8 Q) f4 x: |% g% o
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动- A4 y: [6 U5 @5 R
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    - ?' W  J; G- n+ p
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动" H( U/ ]- k' \* }, O; W
  2788. ( `, Y6 _2 L6 H  F8 v
  2789. ;IRQ扫描线数据
    - \: k2 }  J) d5 p1 b' b) u
  2790. IRQ_Scanline_Data- `, W" J4 s5 A$ O; }. j
  2791. .DB 8
    4 m5 O! x% G- e% L$ H
  2792. .DB 54
    % T+ s* N; p" I$ U& r" x" e6 H* k' G" ?0 @
  2793. .DB 8
    ( s$ x+ Q% q  p/ q$ j! F, I
  2794. .DB 00 ;关闭IRQ
    7 t$ s! l8 T4 S$ y5 a* h2 l

  2795. / f3 H! e5 G2 g
  2796. ;IRQ滚动控制模式8 w9 ]4 Y+ _) Q/ f' O  H
  2797. IRQ_Scanline_Mode/ k9 t# `! d, `: p- [6 k3 F
  2798. .DB IRQ_SCROLL_MODE_ZERO0 Z; K' ]) x) V# R/ [% E
  2799. .DB IRQ_SCROLL_MODE_ZERO
    ! D- m' \) D% E* R* F
  2800. .DB IRQ_SCROLL_MODE_RIGHT" H. m, j( @& V( P% X! Q/ ?' X& z
  2801. .DB IRQ_SCROLL_MODE_LEFT
    # b7 g* K$ W' b' L

  2802. + D, C3 o* X8 q" K9 c+ m
  2803. ;==================================================
    ; r% M7 p6 `; f% @7 ]( Y
  2804. ;IRQ处理
    " [  X9 H5 s( W. r: |# L5 d
  2805. IRQ_Process
    " I1 J1 c2 l" Z  ]. e
  2806. LDX <IRQ_Process_Index7 n/ T6 n5 n. F" w4 D
  2807. LDA IRQ_Scanline_Data,X
    9 H: M1 [1 \: N9 I4 }
  2808. BNE IRQ_Process_Latch
    8 T, {/ z- p* R" p$ n. E) f
  2809. IRQ_Process_Disable;禁用IRQ
    ; Z" p# Q4 l3 c* b& V
  2810. STA MMC3_IRQ_DISABLE
    * x5 R" Z3 F' }/ z' n
  2811. STA IRQ_Process_Index
    ' x# C; [- N6 x: U
  2812. BEQ IRQ_Process_Scroll  N4 v! |+ t- `4 l
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    , Z$ P, a8 r4 j9 P
  2814. STA MMC3_IRQ_LATCH3 a( ]: v8 I& `+ ^' Z
  2815. INC <IRQ_Process_Index; |9 \) g3 L6 \
  2816. IRQ_Process_Scroll;IRQ滚动控制
    & f% y6 E  _6 `5 J& U
  2817. LDA IRQ_Scanline_Mode,X
    : S7 f" C( t" a) ^
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    . [3 I( ^8 m# o" I, s) S. h
  2819. BEQ IRQ_Process_Scroll_Left7 |% o- l, i7 Q& N+ P% X
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    " B) p# ~* m9 Y9 u9 q1 X
  2821. BEQ IRQ_Process_Scroll_Right" k7 L' v+ _+ g9 d
  2822. IRQ_Process_Scroll_Zero;不滚动
    8 D# ~+ I  r/ ?/ h: e6 l) Q
  2823. LDA #$00! m6 R+ {" \; Y# N6 P3 ~4 k
  2824. STA PPU_SCROLL
    9 `# J2 L! q; X) P* D% e5 i6 Q
  2825. STA PPU_SCROLL1 E3 n! [# _2 v9 ]
  2826. RTS
      s8 z0 g8 h7 q
  2827. IRQ_Process_Scroll_Left;向左滚动: O# |9 v! ]8 [% U
  2828. LDA <Scroll_H/ [7 g5 u. a) v
  2829. STA PPU_SCROLL
    3 A) V9 Q- a7 w% t5 ]
  2830. STA PPU_SCROLL% E# W) t( T7 h
  2831. RTS4 r: f: y& r3 {# E2 c
  2832. IRQ_Process_Scroll_Right;向右滚动+ x3 s5 R: N3 Z9 q4 z2 ]' @
  2833. LDA #$00
    , T1 H) r; \! o( R0 m
  2834. SEC
    * h0 |+ n" C5 ]5 j6 }7 g5 `
  2835. SBC <Scroll_H
    0 A7 \( [" A8 g% ]: d* o  ~2 B
  2836. STA PPU_SCROLL
    ! `; Z7 L- g' C0 h
  2837. STA PPU_SCROLL, `* y9 `! X, f- a1 z  u
  2838. RTS+ F4 L$ y9 L1 R/ w& n

  2839.   j1 W+ ^: Q  F4 D+ z$ A
  2840. ;==================================================
    3 Y0 P+ n9 R  N& i3 o; E1 b$ ~
  2841. NmiProgram;Nmi中断处理5 I4 h* D5 K! W; f) _' v
  2842. PHA
    # k0 W- C1 z4 m& J+ p
  2843. TXA
    8 j8 r8 I2 J( u; E  r, ?) [. ^
  2844. PHA- L* P' Y  z8 Y- Y/ v8 H  y
  2845. TYA' F! r2 X( G: E/ E8 w1 z2 f
  2846. PHA
    0 a3 _  L& B2 [- a. K4 W- N' B9 G7 E
  2847. 1 X9 Q7 u. z* m
  2848. ;读取清除Vblank标志, 防止重复进入
    " T( V) l- y" o
  2849. BIT PPU_STATUS
    * k1 Y4 S) L$ b0 s# F$ j# g5 W
  2850. 6 o* a  U5 Q2 Z( x8 V: o! s( y
  2851. ;切换主程序bank$ n: b4 w/ w  K; b" v8 [0 `
  2852. JSR Switch_Main_Bank2 [+ I- n4 k" g
  2853. 0 C3 g% f0 O" u) o* \% k
  2854. ;Nmi处理
    . z+ Y/ ~8 F; _0 U6 z
  2855. JSR NmiProcess# o  T9 ]; e  W. _% N
  2856. 0 i- s  i3 ?, Z5 I5 n$ r
  2857. Nmi_Proc_End
    ! Z+ s" @: F. q) h( q0 `
  2858. PLA$ o3 P" Z0 @, y
  2859. TAY
    8 ]7 P/ \+ i- ~! X1 P
  2860. PLA
    9 n# S6 S/ g* T/ h* r/ W7 O
  2861. TAX
    2 ?, I" G& ?  a% W
  2862. PLA8 b, }6 A# ]2 }  |' P2 N4 x
  2863. RTI
    $ }: N- f, d7 E

  2864. 8 v' W# F$ v' [5 e& y
  2865. ;==================================================* ~9 r1 T8 m) c2 d/ K: I) W& T
  2866. ResetProgram;重置中断处理% ~+ V9 R7 o! c6 K2 y, o
  2867. SEI1 s' w# [% ^6 U# ]
  2868. CLD  C* \2 k' A$ D& t% A* F$ G; }% g
  2869. LDA #$00( S) [) }! \0 C  e
  2870. STA PPU_CTRL) X) b! C+ ]: N; ?( \% h
  2871. STA PPU_MASK  i! z, ]+ F. D
  2872. 1 O2 \) y. E0 a) u6 Z
  2873. ;切换主程序bank: B4 \9 g. e  N6 G
  2874. JSR Switch_Main_Bank7 Q; G& k( v1 l) g2 ]. y

  2875. ; r# i7 [. o' Y
  2876. ;程序处理开始
    1 I, V1 R( g5 k
  2877. JMP ProgramBegin7 [% o" V6 Q1 }# N$ G  g

  2878. ( U- T. k9 `1 T' v: W4 g  E
  2879. ;==================================================1 _6 k2 b0 d: x. [. B' p4 p$ d
  2880. IrqProgram;Irq中断处理
    - s6 Z. S# {0 X: _) U5 G6 `* `
  2881. PHA; ^  E/ \: x# C) H2 t1 B/ ~& x
  2882. TXA7 Y. Z  |0 C9 g
  2883. PHA
    4 B3 t* L3 R( ^% x) D; O( U
  2884. TYA
    7 D$ A) E; H0 E) [- A% l
  2885. PHA& ~) `7 A* W6 f5 u4 m

  2886. 9 x4 L: x0 y$ B- s$ m+ T6 Z. @
  2887. ;关闭IRQ2 u. o' m2 \. W5 P3 |
  2888. STA MMC3_IRQ_DISABLE
    ; ^4 V' e0 G: G1 s$ G% i
  2889. % P; u% Q  a6 {' K; x( S) c
  2890. ;允许下个IRQ触发9 U/ |6 }1 [) Y# Z( }
  2891. STA MMC3_IRQ_ENABLE
    4 |. P- d/ C- y& k+ n5 ~9 @
  2892.   r+ S3 A' _: U1 w1 T
  2893. .IF IRQ_SUBPROCESS_JMP- X9 }6 E4 W0 p6 ^

  2894. 3 x& p* `% q6 y3 Y2 c# N& [* T
  2895. ;执行IRQ过程; f0 D& g6 Q0 u9 f1 B2 k2 p+ R
  2896. LDA <Data_L
    3 Y0 X* A0 k# x$ y8 \
  2897. PHA
    $ J+ l, z* s: ?" \* k) s
  2898. LDA <Data_H; @: n7 v5 o+ I. {* N' |3 w
  2899. PHA
    ! D( X( a( N, ]
  2900. LDA <IRQ_Process_Index& C8 M; M  J4 T# f' s
  2901. ASL A* U' P7 d/ v  W2 K2 |
  2902. TAY' W. l2 S3 f' y4 u4 |
  2903. LDA IrqProcessAddr,Y
    5 r4 B% L" _5 J6 P* P
  2904. STA <Data_L
    : g* ]3 \5 F, D! r0 W7 [
  2905. INY! `) ?' \7 k! p
  2906. LDA IrqProcessAddr,Y
    9 H/ g% H  L, \5 w
  2907. STA <Data_H1 Z4 g# `- V9 J( i6 l1 S
  2908. JMP [Data_L]! T, g5 s8 j  o

  2909. : D5 Z, L. L  W6 G$ ~( D
  2910. .ELSE1 e& r7 Q0 e! O' C, c

  2911. : c. L* x& j: C- s* }5 Z
  2912. JSR IRQ_Process
    # G5 x) R$ O. b
  2913. ) ?0 _% N: X8 U) ~& O
  2914. .ENDIF
    * X: _1 n9 Z0 M' x0 h" v
  2915. 7 g4 U9 U4 y- K2 E
  2916. IrqProgramEnd) c! y2 k! y& a
  2917. .IF IRQ_SUBPROCESS_JMP; \* x* S2 u/ c$ j6 m
  2918. PLA+ \9 z, c0 U6 A/ @8 Z, L5 z
  2919. STA <Data_H
    1 W4 \% ?" c0 p. y9 P, p
  2920. PLA, l% T+ n2 S) L* g
  2921. STA <Data_L& g. c/ g; `% D4 Z
  2922. .ENDIF  n1 P8 H' [9 R" b5 [3 [, R5 ?
  2923. PLA
    ) X- Z& w3 a! P5 a# o
  2924. TAY' w8 ]7 `; {9 q
  2925. PLA% c, m" f8 n  k: Q
  2926. TAX
    ( C/ e- C% X9 Z3 G! Y
  2927. PLA
    ) m- ]# N% s0 {3 F
  2928. RTI
    1 J7 m' j6 X, F3 E0 K
  2929. 8 D2 Q0 `! Q/ @8 L1 P/ [$ s
  2930. .ORG $FFFA, W5 Q: L# C2 l7 E
  2931. .WORD NmiProgram* {- f/ a( C8 K! i1 k7 h
  2932. .WORD ResetProgram
    , B3 P) m+ z4 X& o5 P& u
  2933. .WORD IrqProgram( u6 Y, x# G! s, N
  2934. . q4 q, B! y- _  ]- _
  2935. .BANK RESET_BANK & BANK_DATA_MASK* y; J# u1 i9 C+ p; A; D& d
  2936. .IF SOUND_BAR_SHOW_ENABLE5 u% [$ M5 m3 ~9 ^3 G

  2937. / y1 ?) T" ]( T8 B: `
  2938. .ORG $FE00/ x$ D7 d! H  T$ [  _
  2939. PHA
    ( o5 V9 h+ R9 ?$ S9 [
  2940. STY $07BA
    ( E* y+ V6 F& x" l
  2941. LDA #$8D  p/ w7 A' y, F) @
  2942. STA $07BC
    8 e- f% H9 H" _  g, \
  2943. TYA. e% s- [  I7 b" G
  2944. CLC
    # X# C2 w& ]3 x  f9 ?. w4 y, O
  2945. ADC #LOW(Sound_Bar)8 A: h% e: o' J! |( z, H5 ^
  2946. STA $07BD
    % K. c: v. `. N
  2947. LDA #HIGH(Sound_Bar)) F4 Y$ U( b* Z
  2948. STA $07BE
    ) X+ `1 P/ Q0 l7 w$ Z% t/ f1 j
  2949. LDA #$60
    7 P& t6 [  Y. p$ \
  2950. STA $07BF
    : u$ r8 U# _+ T
  2951. PLA' a" Y6 b! j& U& B
  2952. RTS
    & M8 ^) w1 g$ N2 O2 @1 K
  2953. + [6 I9 d3 U4 H4 z. k
  2954. .ORG $FE20& ]( U. a/ V4 h% h  P
  2955. STA $07BA
      E, _& ^' x8 a( M
  2956. CLC7 E' J* v1 q: Z4 t$ q3 p
  2957. ADC #LOW(Sound_Bar)' t4 _* B; D% a2 k
  2958. STA $07BD
    3 z6 ^* r# B+ Y  N  J: H7 h
  2959. LDA #$8D
    7 [. ]0 f2 ?5 M: Y  z* d
  2960. STA $07BC9 ^+ L; W  x4 I+ I
  2961. LDA #HIGH(Sound_Bar)! c' t: W1 q: p2 G
  2962. STA $07BE
    3 I! F8 @( ^4 w" c- b- c) j4 s
  2963. LDA #$60
    : b' A. }/ s6 r8 k
  2964. STA $07BF, w' y7 ~0 H  R- b
  2965. RTS
    + T/ w5 v2 B) u* G/ _2 ^
  2966. 0 ]4 {; [. C; c3 n; E
  2967. .ORG $FE40
    8 o8 r. d/ a' ?+ V- g  L
  2968. PHA
    ( i! z# q* _9 B" N) A8 C( Q
  2969. STY $07F1
    8 H/ z# j4 T( U
  2970. LDA #$8D" W! A& ?1 z( j2 s' E
  2971. STA $07F3+ A2 O5 m% h" J+ t% k7 d- Y
  2972. TYA5 z! o* Z9 i" R0 n# F2 r; A
  2973. CLC
    8 R" O0 N- O7 p
  2974. ADC #LOW(Sound_Bar)
    : \1 d! w7 I& }0 X& D
  2975. STA $07F4
    1 k1 G2 s! R+ z+ L" k" l* h
  2976. LDA #HIGH(Sound_Bar)
    : o  c! @( i4 V) _) [' L7 ?
  2977. STA $07F5" V8 ]( x/ L- P7 J+ n: ?
  2978. LDA #$60
    3 e% P5 L3 f& ~0 r' }
  2979. STA $07F68 r. f4 V0 U  y' o! |
  2980. PLA1 f0 i$ Z& y. o! q
  2981. RTS  e" B2 }0 B4 s9 \; V9 D
  2982. ' [/ @, H9 \1 b0 ]3 E8 F- i
  2983. .ORG $FE60
    9 J! D3 x+ W% X' c7 _4 k
  2984. STA $07F1; Y5 Z; u5 d7 N3 ~$ M
  2985. CLC( X. `% q3 K9 F+ @
  2986. ADC #LOW(Sound_Bar)
    : d2 t# d1 X( e) \1 [( t' ^& S
  2987. STA $07F4
    0 Z  B- u: y, |+ `
  2988. LDA #$8D
    * z4 ^) P0 N5 m! v* y& T
  2989. STA $07F3  J/ e) [- o7 j5 k. ~% q
  2990. LDA #HIGH(Sound_Bar)
    & [7 g$ h- x8 \3 q3 L# z# u- l
  2991. STA $07F5" I* `- j" A4 S- `" q4 P
  2992. LDA #$60
    # D4 g( q0 `; p. H4 ^
  2993. STA $07F6
      D. O0 c  V2 o! r
  2994. RTS6 H% M* D4 K( s! C0 E6 N

  2995. * S7 H9 x( T+ V9 o4 T4 v
  2996. .ORG $FF400 R8 x  o+ W# P3 a) f& M  _
  2997. STA $4000
    3 B; Q, A% D4 Y2 L0 J/ U+ |
  2998. STA Sound_Bar + $00
    & {4 U% U- ]& q& d( p" H/ ?
  2999. RTS
    9 v2 u7 C7 U( d2 Z# P
  3000. 4 \* _" p7 V6 o* M* o4 C7 ^) }0 l
  3001. .ORG $FF480 J7 t3 H, Y: p7 S
  3002. STA $4004* f7 w, _0 Y% f; H0 a
  3003. STA Sound_Bar + $04
    - h: q5 V" o' f6 n
  3004. RTS5 G' A+ x5 d, A7 g* h' {

  3005. # K* w+ Q5 N! f6 g$ V2 I$ v( e
  3006. .ORG $FF50) a& v3 f  n" P( A$ G
  3007. STA $4008' J4 ]' F4 `4 [, F% K- H$ g0 h- {+ f
  3008. STA Sound_Bar + $08
    % k, {6 Q" V5 M8 {( x9 r4 a/ `- f
  3009. RTS4 a: y1 r4 ?- K6 `7 W% I. S9 h
  3010. 3 u5 R" e  N) g
  3011. .ORG $FF58; p% E- q/ C. O' m$ M# o4 S; Q
  3012. STA $400C
    1 ~& O/ M7 _# D" p( X1 v- M
  3013. STA Sound_Bar + $0C0 S* G, t$ G* Y; {
  3014. RTS
    5 L, O1 r* O2 o( f. F

  3015. 4 z2 u# |, }4 o; _- M- M! B
  3016. .ORG $FF60
    $ V; y2 T0 ^8 Q1 @: m
  3017. STX $4000' g2 d# E# v- W5 ]
  3018. STX Sound_Bar + $009 @" @5 v) l3 @9 C
  3019. RTS6 _8 s/ v9 Y( G* {, S
  3020. 5 E( @  u7 G4 W- H! S4 ?, M1 g
  3021. .ORG $FF68! S8 o, E! m' ]- X9 c( q# F
  3022. STX $4004( W& [* z  u7 L0 Y
  3023. STX Sound_Bar + $04
    1 e5 V, z4 l% F/ r# b# w) P, A
  3024. RTS
    ! `- }1 g6 c3 s  g. \) Q. a8 y
  3025. 3 t! {: X8 Z6 x! H% ]" h6 W
  3026. .ORG $FF70" ^' [% d$ S! f$ [9 a
  3027. STX $4008' i& N2 g* x: F3 U
  3028. STX Sound_Bar + $08
    . M* B* s0 @" C4 W5 r: \) d! J" J/ \
  3029. RTS6 c. J- t8 u8 a" X3 C/ Y; v+ ^
  3030. * t2 y- t; s+ }- s9 H
  3031. .ORG $FF78& [0 i$ \- f" @- l& O! F8 l5 Q
  3032. STX $400C- M/ ]" C1 {7 E. v) C7 [& o& v$ _
  3033. STX Sound_Bar + $0C+ Y) f1 ~! x! i; |2 ]! [8 Q. j
  3034. RTS
    6 r& ^' H8 R5 J1 t

  3035. 5 I% j0 y! e9 e0 I  {0 M6 E, J
  3036. .ORG $FF804 M! r" n6 h7 M2 `: b, }
  3037. STY $4000) n) A3 u' [3 d4 S! ]* F/ p' h- t
  3038. STY Sound_Bar + $00
    & ?/ _. f' T+ R! b1 r& ?8 H
  3039. RTS
    - g# W7 y4 [- D6 R% y

  3040. ! l+ w0 T+ @5 `  x7 ~# W
  3041. .ORG $FF883 @' J0 P/ K$ T; d3 f
  3042. STY $4004# l* H  O% E  i6 }: x. E) C% w3 @
  3043. STY Sound_Bar + $04/ b5 r$ R, @, O. d2 j/ o( N# }' j! g
  3044. RTS
    ( s! G* n) ~# v
  3045. 1 e1 U# E* K6 u/ |! ]
  3046. .ORG $FF904 n& r$ w  @4 ~6 e' P# h. V
  3047. STY $40089 D2 `8 Q8 P: h* c
  3048. STY Sound_Bar + $089 `0 g; Z+ ?+ v/ \* I; S/ F
  3049. RTS
    1 C2 m- X& Y( _  O3 W# y0 T1 B7 f

  3050. . q- b6 p7 m: q6 {# f) N
  3051. .ORG $FF98" S& M# _7 ]. m- |/ f
  3052. STY $400C& q4 t$ G5 u1 ?& d4 G( x
  3053. STY Sound_Bar + $0C. S4 l% y# H- y1 k6 N" N
  3054. RTS+ f. N& r  k( s
  3055. # G& b# m, K4 h9 M& @
  3056. .ORG $FFA0: _2 P2 a1 B" K$ j3 P8 R" O
  3057. STA $4000,X) n0 r. B2 O. M+ W7 c
  3058. STA Sound_Bar + $00,X
    4 b3 y9 d) g  e" S" e" z
  3059. RTS; a$ s( @% d4 C8 ?  d2 B, p% P! X) |

  3060. ( d& q. _) ^0 K# i; ^& t
  3061. .ORG $FFA8
      S1 K% t7 r% h+ u  P
  3062. STA $4000,Y
    " `. [- Y9 p% Y7 a- X% k% S. z# f9 {
  3063. STA Sound_Bar + $00,Y
    ; \! W4 _# _+ ^: x" c+ N: k
  3064. RTS3 W, }5 g7 o* O, ^' l+ H
  3065. " y1 b* Y. }7 V) F( [5 A
  3066. .ORG $FFB0) Z% N% P4 a  \+ c  r
  3067. STA $4004,X
    & F/ s- I; C& H$ ^+ s: O& d
  3068. STA Sound_Bar + $04,X
    # A2 X3 B' M7 f' }- D
  3069. RTS5 p: L1 @( z# V1 h9 |
  3070. * ?7 C& A+ R; Y
  3071. .ORG $FFB8, u, u' y7 B4 |. n
  3072. STA $4004,Y
    ; q, Y2 `" y7 }
  3073. STA Sound_Bar + $04,Y
    9 a8 M8 u7 u- T! B+ y% r
  3074. RTS
    1 G+ v0 t, R" @: i( q
  3075. - C7 d! {  A8 u& {9 O: u% O
  3076. .ORG $FFC0; M1 D7 Z; z& v0 Y) B
  3077. STA $4008,X
    1 _/ P1 M" Y6 i5 i  R5 y
  3078. STA Sound_Bar + $08,X
    8 }! Y1 M, Z* G! ^
  3079. RTS
    0 p0 K1 F2 E$ i+ _5 V2 K

  3080. . h5 A% q, X1 Y
  3081. .ORG $FFC8
    7 C! w; g' Z# q
  3082. STA $4008,Y( J. O: j$ K4 q0 h: k3 G
  3083. STA Sound_Bar + $08,Y
    9 F4 C& G9 ~- a) e* W
  3084. RTS, H. X* [" h1 N% G! p

  3085. / @7 q3 G, ^, D) w- q
  3086. .ORG $FFD0
    ! h+ X% j6 I* `/ B$ v/ `
  3087. STA $400C,X0 z6 ~; {" ^( e; V! M
  3088. STA Sound_Bar + $0C,X
    3 q: ]' y4 p; [, F& O
  3089. RTS8 c5 ]: u& L, @' D, X/ p

  3090. 9 q; p( ]" U/ P- p- T9 `
  3091. .ORG $FFD80 Z: \8 T. v% z3 ]! F
  3092. STA $400C,Y& q+ {( `7 j& l4 i" \8 C  ?9 d
  3093. STA Sound_Bar + $0C,Y* t- U  G% _% j6 k2 P
  3094. RTS
    3 {+ T' g+ u/ M5 I; l- f
  3095. 7 |8 w1 q6 N, Z1 o- D" j3 }
  3096. .ENDIF
    2 K$ Y9 O  U$ s6 z& W
复制代码
5 I2 _! [# P1 F0 r- r
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3421 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-13 08:53 , Processed in 1.096680 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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