EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
- P. F7 O6 }# c& U! ]! A8 h1 i( n
$ v5 F( S- E/ ]& L' L' d[FC][音乐12 IN 1]- K  x6 g5 I* H4 R$ {0 o6 V
时间: 2023.07.234 G+ ^7 z, Y2 G3 G; ?5 h3 q" i- D
作者: FlameCyclone' N( L2 d' P5 _4 D8 r

) y/ v1 ?# \# y# Y+ c! s收录音乐内容:# A$ E4 k: u: G2 K7 t/ s0 k
1.Raf世界
  Z. O- m; k4 y. I5 U, O2.最终任务2 E( {/ ~' U" g4 f) U* [
3.赤影战士! ]& N& A# M+ i; U( S0 y
4.双截龙+ `! z% m! _: L. P- M3 y
5.双截龙2; c7 M2 \1 V4 {9 b8 V) ?9 A+ T8 p
6.双截龙3, k6 G) C8 v, _, a: G
7.洛克人& m; Q/ n$ @9 v$ I
8.洛克人28 [/ Q8 _- Z/ ~* E, j2 M2 p
9.洛克人38 Y+ D9 |. ^3 }3 m3 C
10.洛克人4
0 @, |% t2 u8 a) F9 M7 V! w% [" x11.洛克人5
; h! e' U# U9 U6 c: R1 H12.洛克人6
: ?. ~5 O6 Q  G% l! m0 p+ [0 ]/ g; `" g
操作:
6 h4 _5 j5 V/ [( b  M上键:         上一个专辑& ^$ C# V+ k3 X; t5 A& M) q2 r( K
下键:         下一个专辑+ S* ^$ L, f% L$ m7 B2 b2 O
左键:         上一曲, M3 r, P. N( V6 `. i
右键:         下一曲
/ n% V/ s6 k/ a4 f; \- bB/A键:        前10曲/后10曲/ U+ _' }; P- T. q4 M# Y0 a; E+ w* e
选择键:       下一页
- X  R( l" L! N+ S" ~" [+ e8 [开始键:       停止/播放
+ L+ |9 v9 [" x1 a/ m5 F+ k' [2 U9 P7 n* N! Y/ Y( M$ }3 ^. A7 Z3 A
http://flamecyclone.ysepan.com/
0 y# T, D) g$ }1 p' ^, N& a% Q: R8 u, o& _
( Q- ]# @% j  v" Z

, o) R; }9 m! N8 l& h. ]  z" L- N2 t& T/ X) q) t
  1. ;[FC音乐][播放器模板]9 T! B! q* D, D
  2. ;FlameCyclone 20230710) q' ~9 X) K6 j
  3. " [! Z+ }/ ]; w6 |5 S) {
  4. ;文件头
    & N7 `: S  T0 r
  5. ;======================================================================
    $ K' B8 w$ I* v7 n' `
  6. .INESPRG 16                                             ;16KB PRG 数量
    + F5 q" Y% j! ~8 k+ g3 Y
  7. .INESCHR 1                                               ;8KB CHR 数量" w, o% k& v' a+ g7 }2 @
  8. .INESMAP 4                                                   ;mapper 4
    , w% Y- |' @3 _) W% @% f. J
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直5 p' \+ \, j; L7 l  f
  10. 9 F3 ?# J. h  E3 k  I6 D
  11. ;==================================================
    : R1 |0 X, H' P3 g: d! k
  12. SOUND_BAR_SHOW_ENABLE       = 1
    1 @9 R/ N' B+ i9 _
  13. ;==================================================* R+ S$ ^. l; `/ P
  14. BANK_DATA_MASK              = $1F
    ; Q$ P$ \* h+ A
  15. CHR_RAM_ENABLE              = 0
    - |8 f* n' r: D0 t
  16. IRQ_SCANLINE                = 1368 k$ s, }# Q4 y/ F5 @2 t
  17. ;==================================================( f: j! y2 z. m3 P1 h$ |) R# `0 X( T1 Z
  18. SOUND_DATA_BANK_00          = $00
    $ F1 U' v: Z' }) T9 F4 O. y- o& m
  19. SOUND_DATA_BANK_01          = $01) P4 {3 a7 ^- ^8 b
  20. SOUND_DATA_BANK_02          = $023 M, c- M% z7 K8 p4 `9 p: H5 n
  21. SOUND_DATA_BANK_03          = $03
    1 ^$ M: \; ?7 o( N
  22. SOUND_DATA_BANK_04          = $04
    5 Y& a5 Q: }" T' b) B7 i
  23. SOUND_DATA_BANK_05          = $05* U+ S' ~3 p# }
  24. SOUND_DATA_BANK_06          = $06
    ' L4 c8 K4 N- Z% b' c
  25. SOUND_DATA_BANK_07          = $074 v  J2 z, m  h
  26. SOUND_DATA_BANK_08          = $08/ E6 A+ Q% \% G+ d, T% _
  27. SOUND_DATA_BANK_09          = $09
    , N) C5 Z, x+ {9 t* |8 H" Z
  28. SOUND_DATA_BANK_0A          = $0A9 I# }) o$ m5 L3 u' _; U
  29. SOUND_DATA_BANK_0B          = $0B0 Q1 _0 V8 J' z, b- _& w" B8 Z7 r5 f% G$ F
  30. SOUND_DATA_BANK_0C          = $0C: R4 _- J% Q, E
  31. SOUND_DATA_BANK_0D          = $0D
    : N  l' U. v3 F/ Z- F& z
  32. SOUND_DATA_BANK_0E          = $0E4 \; ]: o$ E2 m+ D' W; \
  33. SOUND_DATA_BANK_0F          = $0F/ U$ o4 \& n0 o8 S' a+ b

  34. 8 g' v% R! t5 R0 i- v, q
  35. SOUND_DATA_BANK_10          = $10
    ' H! s- m2 b9 ?$ m
  36. SOUND_DATA_BANK_11          = $11
    6 d: D" K) G. ^' N! }7 A- S
  37. SOUND_DATA_BANK_12          = $123 D) c! d3 d) R1 `7 c+ m  k
  38. SOUND_DATA_BANK_13          = $13
    9 h. ?: a2 j- P  D6 U
  39. SOUND_DATA_BANK_14          = $14+ v1 H+ k9 e+ q7 D$ h6 M- r. x
  40. SOUND_DATA_BANK_15          = $15
      I& K5 L* c0 T) K. V
  41. SOUND_DATA_BANK_16          = $16
    ' j2 P( |; ?$ p& K
  42. SOUND_DATA_BANK_17          = $179 ?) P1 Z' W" j3 f& ^6 J
  43. SOUND_DATA_BANK_18          = $18* d- y: @  Y2 n7 e, a
  44. SOUND_DATA_BANK_19          = $19: G, `; V* G/ u7 O- w
  45. SOUND_DATA_BANK_1A          = $1A) j6 J5 P- ]/ m( e7 t% V. s5 x
  46. SOUND_DATA_BANK_1B          = $1B  v1 g& _4 m3 u* b% a' L9 E- S
  47. SOUND_DATA_BANK_1C          = $1C
    $ ~9 N5 p: |+ C% g$ B% y: o2 v% i
  48. SOUND_DATA_BANK_1D          = $1D6 u0 T8 Q  w' H9 q5 e1 ^* H% r: A) X
  49. / L) t7 l9 u4 F, z) ]
  50. SOUND_DATA_BANK_C000        = $1E7 Q, e' y# a/ j4 t- u. B7 m3 C6 J) i
  51. SOUND_DATA_BANK_E000        = $1F! G6 l1 \$ Y. D  G" X
  52. ;-------------------------------------------------* P' i; }  L+ Q8 ]* ~
  53. CHR_DATA_BANK               = $20
    ; ^1 ~( O8 d- ?  z6 N
  54. CHR_DATA_ADDR               = $A000( g. }# W% x1 S8 q- s! K# o
  55. ;-------------------------------------------------
    5 i! E6 U; m0 j5 v/ Q% _5 J  y5 R
  56. PROGRAM_BANK                = $00; Q! R. S8 B5 B9 `
  57. PROGRAM_ADDR                = $8000
    * O# m% R* }% t6 D3 ?/ y
  58. ;-------------------------------------------------6 U% }- R2 c  |5 L( _. s" w
  59. RESET_BANK                  = $1F  f' |* E# g  E
  60. RESET_ADDR                  = $FD00
    / B' B+ e& J/ l' l: O2 Q# U

  61. # L. ~+ U5 C. }
  62. ;==================================================; W  P2 B: n3 r% m
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    : N7 l8 ~. D7 L) Q
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引- X( O5 X/ M" V7 G+ m, n  K
  65. PAGE_SIZE           = 5                     ;每页节目数
    $ P; x$ c2 T7 U  N; B
  66.   |& \/ I3 e9 b( F# p" K
  67. ;==================================================: V) _" u, k8 [/ J* o# b1 M4 j% `
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    + H0 i$ F( A0 U( ?9 `5 L
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数! O% g# |4 ]6 }* Y5 t: }  ~2 e
  70. .ELSE
    5 @$ B0 B8 R% F* a5 \
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数& H- y0 H4 U6 e9 ^2 y8 B) }
  72. .ENDIF
    4 c2 ~# K+ [+ d. C  Y
  73. 0 y: [1 h- {: C4 q
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
      U3 p( S2 ^. p4 Y/ f! |, F

  75. " \  u; |# I$ u% h
  76. ;==================================================7 i" O. Z/ {- \
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置0 c( W: g0 w9 r; j$ d
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    1 Y: e6 O+ T7 j( Y3 G* d8 J
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;7 _  p# I6 k% h. B2 K- Y7 o3 {
  80. ;==================================================' r& ~' q6 e6 }* W# ^* L
  81. Caption_Text_Pos    = $204D ;标题文本位置$ D# ?3 {8 {: Q5 [2 a
  82. Author_Text_Pos     = $2324 ;作者文本位置" F% W- f& {$ B2 i. i$ ]
  83. Date_Text_Pos       = $236B ;日期文本位置
    5 c! J! F3 s3 s/ o/ c. t0 F! I* u( @. K
  84. ;------------------------------9 k- x$ Q5 K0 r' y
  85. ;------------------------------1 `# g: S% G) e' Y" G5 s* k& y3 A
  86. .IF SOUND_BAR_SHOW_ENABLE
    2 }8 y8 E2 j) m- I* ^. ~) M

  87. # v, U: e2 i' L- C1 Q7 b
  88. Play_Index_Pos      = $2273 ;当前曲目位置, M* D& Y8 `* j2 i8 }
  89. Play_Time_Pos       = $22B3 ;播放时间位置, q% |) q# p6 p' }* C
  90. Play_State_Pos      = $22F3 ;播放状态位置7 N; l, a, r: v) n
  91. " F1 \# X3 r' o! D% \
  92. .ELSE
    , H3 \! ]. E3 I* z
  93. * K  L2 V  l. B* ~
  94. Play_Index_Pos      = $226C ;当前曲目位置# P" V5 q  f9 ^: y; X! @
  95. Play_Time_Pos       = $22AC ;播放时间位置
    " S! U+ K9 N3 S8 T9 r3 N+ M
  96. Play_State_Pos      = $22EC ;播放状态位置6 J$ s! g: G( V; D
  97. 1 }8 l1 v& p: J/ c3 w1 e
  98. .ENDIF
    ; |* y6 o- {- G) n) _  B" \/ c5 r7 y5 M
  99. ;------------------------------
    : P7 o* G) E6 J, P
  100. Track_Name_Pos      = $222B ;曲目文本位置& L& ]# \6 R) K. E$ p
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    & s( h4 n" _9 Z7 E# S
  102. Sound_Track_Pos     = $2265 ;声道文本位置3 H7 O& V% {1 r
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    . Q5 p, D' ?  t' e4 P& \
  104. ;==================================================: R: z! M) {+ [0 B2 k( |1 s4 x
  105. Scroll_X = $00% y2 r$ X# k- U
  106. Scroll_Y = $00! {& d3 I9 m5 D7 D2 {
  107. ;==================================================
    & ^: M/ d% ?8 o4 j' f8 r9 I& C9 {
  108. Sound_Ram_Addr_1       = $0100: K: a% _: t' J1 }% D' _9 G: }" T# m5 c
  109. Sound_Ram_Addr_1_Size  = $80
    + k( L' B& T1 w- z5 K  ?8 v, e/ {
  110. Sound_Ram_Addr_2       = $0090$ R/ {; ?6 x" H
  111. Sound_Ram_Addr_2_Size  = $704 _6 i+ {1 w3 |3 V$ r( J7 q
  112. Sound_Ram_Addr_3       = $0700
    ! m3 N$ Z4 l2 T. t% f( t
  113. Sound_Ram_Addr_3_Size  = $00
    ; K) c$ R8 x0 ~, ?
  114. Sound_Ram_Addr_4       = $0400' s0 r/ X& K9 Z+ I1 q, S  Y
  115. Sound_Ram_Addr_4_Size  = $00
    4 H7 d, t6 ]# U6 X& Z8 m" ]0 W
  116. Sound_Ram_Addr_5       = $0500
    - Y/ r9 M# O# d) T+ J- R
  117. Sound_Ram_Addr_5_Size  = $40! Z6 r: H: }' I& ]
  118. 0 c$ R2 n5 f7 u' D$ \6 y
  119. OAM_TEMP_ADDR   = $0300
    - C* @4 i3 s0 B: r

  120. 3 s9 _. d3 }% x8 _0 J. U0 L
  121. ;==================================================& G! |4 y$ N7 E3 r0 q. k1 g4 {
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器  S# R5 B2 q! G* u6 z7 k
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器8 _( y+ l) f& t! a6 C
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位+ E  k7 k7 \! ~' F8 t9 Q
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    $ R! a- T, Y/ H5 Q
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    7 q8 v+ I9 \$ [4 M
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 ! F+ `) D: {; N5 J
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加9 I! n. D; f2 k4 n' F% U! I& @
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 ( s7 j4 }7 \6 Q9 i$ s
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    6 N$ @! k* H- u4 X9 P2 k
  131. APU_STATUS              =   $4015   ;声音通道切换0 ?7 I9 `$ n# |3 y/ P
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通2 w" U- ^6 ^0 T$ b% o
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    ; e- v* F* n5 L" H3 `( _" u
  134. ;==================================================* x9 v' ]1 O% Y8 b
  135. MMC3_BANK_CTRL          =   $80006 S3 b  G5 ?; j3 S6 ?& ^/ Z
  136. MMC3_BANK_DATA          =   $8001  J" [) `) H2 d" A, H  p; l
  137. MMC3_MIRRORING          =   $A000- q* d/ {2 M0 f- P8 h1 |& L
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    # v( I+ l" v  L( u9 x) Q
  139. MMC3_IRQ_LATCH          =   $C0008 e# N  V6 l; [+ X! ^
  140. MMC3_IRQ_RELOAD         =   $C001% o( [* U: ~0 u/ R
  141. MMC3_IRQ_DISABLE        =   $E0002 C: p5 K+ c% `7 _5 A
  142. MMC3_IRQ_ENABLE         =   $E001- S* x. I/ t  H- S5 a

  143. # ?" F, p& y$ W3 s( w
  144. ;==================================================2 }3 m' _7 C7 E5 M- J
  145. PPU_Addr        = $0200. L& a  W$ l. G7 V* A! w
  146. Palette_Addr    = $02C0& @. ~5 T& e! ?: L# U% c* J
  147. Sound_Bar       = PPU_Addr+$E0
    9 |" a& v! `9 G: l
  148. ;==================================================
    ! \5 {% }3 o5 m( B* D4 z
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D1 ?9 W6 h4 R% B" ?5 j
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    % n5 o: y) a, [; ?; \
  151. PALETTE_UPDATE_MAX      = $2C
    9 U" O& N' Q' O0 D
  152. PALETTE_UPDATE_MIN      = $21* t1 e+ b6 E7 i9 O) ^
  153. PALETTE_UPDATE_INTERVAL = 60
    6 X9 _3 E  n  `' `% E- k" t
  154. ;==================================================
    ( @0 J/ K. j! t( j7 t0 L5 b: ^3 r
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    6 o# i2 p! {0 v! L* v
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    ( `* Q6 Y& Y: v5 P3 |+ v: s
  157. PPU_Addr_H          = PPU_Cur+$03
    ! y' z. o4 K5 z7 d. i
  158. PPU_Addr_L          = PPU_Addr_H+$04
    2 j; f" @# v3 U5 [% H$ t
  159. Screen_Ctrl         = PPU_Addr_L+$01, q: b# Q6 k  m8 o$ {. A+ E
  160. Screen_State        = Screen_Ctrl+$01
    * g8 S  I: w& h. J. ?" J9 p" {
  161. ;==================================================0 z% x$ [: H! V) ]3 i$ d' U" {
  162. Use_Ram_Begin       = $50
    1 R% L1 Z$ A. d) T9 w, C' Q' E
  163. ;==================================================
    , |+ M  s8 o7 F; z9 H( L7 E6 i% r
  164. JSR_Addr_Op         = Use_Ram_Begin6 T; w( k! H% P/ O$ h
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    9 @/ F8 F3 w8 y
  166. JSR_Addr_H          = JSR_Addr_L + $01
    , F. X) H$ {/ q
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    3 c, s: _6 |" L; p0 [: {0 z
  168. Data_L              = JSR_Addr_Rts + $01. r) Y5 Y6 N* k1 w7 A  @! K6 T
  169. Data_H              = Data_L + $01
    5 D* o! K4 F7 x% y
  170. Data_Cnt            = Data_H + $01
    " E3 h( o' Z9 U, \# S; P" j* b
  171. Data_Buf            = Data_Cnt + $01
    0 k0 }. ~/ A" X8 x& `' e
  172. Nmi_Time_Count      = Data_Buf + $01
    $ n; x+ ^" \  }, N* [( p# H( e% x
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    9 W4 u4 E& D( F. ~5 _% ^' w
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01/ _/ s5 _3 M" f* B' F

  175. & ]2 M$ k- @- {1 V! |) H+ Y4 g
  176. ;调色板刷新标志  |9 y9 U! e0 s3 Y
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    2 b' d3 O$ V8 A. U6 t: S- j

  178. 0 [- o, H. t( E  q0 H8 ]! t
  179. ;当前帧文本写入禁用标志
    + n5 Z$ O/ b* h. l
  180. Text_Disable_Flag   = Palette_Update_Flag + $01  V2 }: }7 j/ c% X) w/ w
  181. 1 s% u1 T" e8 y5 \' `8 Z- j( n
  182. ;==================================================6 O$ J( n4 c, L2 l3 [, A
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动/ U5 U4 T- Q1 `( o; w. g
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    ; ?4 b1 l; B& k! @' I4 z
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间& u4 f# D& K  B" x) [- q
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间4 h* G9 N, Y& G
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    ! R' }( G6 W' F4 Y$ ^
  188. ;==================================================1 i7 M) |, p0 P% b5 E7 [8 ?
  189. Key_Keep            = Text_Disable_Flag + 1% z" H7 ?7 [4 L5 ?: d, ^' F1 y
  190. Key_Once            = Key_Keep + $01+ W$ p& C* M- b5 U2 z  y* L
  191. Key_Kemp            = Key_Once + $01
    0 l1 z- C+ l2 j, [3 w9 j
  192. Key_Temp            = Key_Kemp + $01. r2 ]7 w$ L5 r
  193. Key_Getv            = Key_Temp + $01
    ' T8 c/ t# h8 ?' U. r) ~3 n3 d
  194. ;==================================================
    # a, x% @) L2 V. @
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集4 D5 a6 z$ [6 W, V6 {
  196. Music_Item_Last     = Music_Item_Cur + $015 E9 ]6 [, b2 T: ~; y/ t
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    & O# C9 M* d) F/ u7 R8 [4 v% `3 J
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    / @, l: {3 n5 j6 h) p$ e  q
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目! Y! M5 ~6 W" P+ {/ _0 v
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
    # z4 ~- Y3 b, b  C& M4 g, T
  201. ;==================================================
    ' V; Y9 j" h1 s" l# K
  202. HEX_Data            = Music_Stop_State + $01
    . N/ i& R* B9 Z. J  C' t& @3 k7 \
  203. DEC_H               = HEX_Data + $01$ P  Y6 D5 M) A- d" j
  204. DEC_T               = DEC_H + $01
    / p  k# F8 x# [: U
  205. DEC_L               = DEC_T + $01
    , S: E3 Y$ b1 W2 |( ^
  206. ;==================================================
    3 o  _, x8 H7 O) F3 W
  207. Time_S              = DEC_L + $01% R- [6 U7 ?; g) V2 y
  208. Time_M              = Time_S + $01
    " O! c( Q9 ?4 I! D3 S
  209. Time_H              = Time_M + $02
    * x4 C, J, H; n
  210. Time_Cnt            = Time_H + $03
    ! R0 ~" @; p( {- F1 X. l$ p

  211. ; E+ U5 g; d6 v$ t0 k
  212. ;==================================================
      {# u/ x! A) J" m
  213. Music_Bank_8000     = Time_Cnt + 1
      i% g# K# C  z. d: a% d5 u2 \# ]" a
  214. Music_Bank_A000     = Music_Bank_8000 + 1, G. _: _' W- E) b( y, Y$ J
  215. ;==================================================
    4 d2 }/ j+ M8 n
  216. Scroll_H            = Music_Bank_A000 + 1
    1 u" u0 `4 o* v5 C+ ?" I7 B4 o
  217. Scroll_V            = Scroll_H + 1
    ! O) k/ z7 F) f" {
  218. IRQ_Process_Index   = Scroll_V + 1" G+ _/ p; a$ i8 v: i* e
  219. ;--------------------------------------------------# c. v# R0 f6 o- S. I* ^$ L5 H
  220. Page_Cur            = IRQ_Process_Index + $01
    0 v! o! d$ g$ K  w- L
  221. Page_Cur_Index      = Page_Cur + $01
      B. |+ O, f  o0 [% y
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    6 C  n/ Z! o  a( d9 W
  223. Page_Last           = Page_Cur_Cnt + $01" ^. y" f; C  E7 \9 M$ t9 h- }3 Y
  224. Page_Last_Index     = Page_Last + $01
    3 u4 r* g+ d( U. K6 F! E  w
  225. Page_Last_Cnt       = Page_Last_Index + $01" d! g) x9 o- d" Y
  226. Use_Ram_End         = Page_Last_Cnt + $015 I# Z* w2 a. l8 o' ~
  227. ;======================================================================
    . ?6 T& q: A. D, m* @/ f6 d& e9 }6 }
  228. ;音乐数据块. f4 \( k2 w) b8 f3 \4 W5 q6 S
  229. # F: X, z3 N1 Q) A4 I5 d  E
  230. .IF SOUND_BAR_SHOW_ENABLE9 t) J( p. u" ~) Q
  231. * w! {% B/ M6 e+ H6 j! m9 X5 [
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK' \  D! X) P( z" A8 j/ c! W
  233. .ORG $9000
    " y& I( z- n+ L+ `0 Y( s) W$ n
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    : @9 o" T, ~+ U1 c
  235. , h0 H3 ^* Y8 _0 N
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK. g# s' ]6 ?) ~( p7 @/ Q) p
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    % X, H7 E5 w, g0 P
  238. # |/ S- d0 d) T3 Y% A+ ?; _
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    6 q& u' S- A: I! k) v
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank": F- A2 f$ ~5 u8 D9 B- d) m. _! M
  241. - F" u$ e3 d( u' ?  P7 l
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK! l3 [8 r1 h0 f" A. M7 a: I; H
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"7 r; @1 c8 e4 p8 s$ X3 b; Q6 M

  244. 3 F6 w% `1 M" I  ^$ K3 _
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    / u& U( R$ D9 z; v$ Q
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"  A+ I/ T% b4 G5 U9 b! ^2 n3 H
  247. * q) k+ P+ F# ^6 M7 f
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    + c5 l- g" n5 U1 e/ L* U! N
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"8 L7 v3 W: s& A
  250. ! d5 z3 V+ T5 H% G
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    ' ?$ D: I/ @- q& ]4 N
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"# U# `) z% S  l) q

  253. ( u" H$ d0 t5 C; M. P. U6 n/ `
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    8 a1 r. I0 m# x
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    ' M6 j, v1 G  U2 Z

  256.   W  d) \3 K$ ~( Q5 t9 v7 K9 j8 w
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK. b) j- Z( ~( Q+ \' k" f4 ?
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    * y4 H1 g: p; A- F4 B; C

  259. $ ?- H! y& k1 O9 N! `* a# z4 `. ^
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    4 W/ [# E, W# b' w8 x
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    & d2 A+ y4 b  Q5 ?& j+ \8 T

  262. . y. s) b" A" t! r
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    9 b9 N  r  n* J
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    3 K1 \& @& o7 d5 n1 B! L

  265. ' z" h( X. P) t7 N! j" D$ o9 K; \
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    $ o, |" |0 N. j1 j) Z3 T; R
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    * F7 R- X8 b. \* k) f' H! p3 _1 O

  268. " l! a5 l( k) h3 Y$ E
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK0 Z9 u: L" `/ m6 H2 }
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank": e7 x% w5 K) M0 O/ _( M
  271. , Y: Q9 ]2 J  n7 g+ ~9 _
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    ; j8 M$ M( I* n! P. ]5 H; N. h
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    2 Z- M3 |2 w" o" {
  274. 4 U  d  D) _4 z3 C
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    6 c. l8 U# p5 H/ O& [4 X: e
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank": x: [& E  Z: n  J. _7 b

  277. / [! _% H( I/ n( f
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK3 u1 W5 S& c9 M& f
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    ; Y1 i, e8 N- G$ g; Q
  280. + m1 h1 V4 \  K) Y) z( T- O
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK$ _- j7 d. U/ x# r8 _) m& ^1 F3 W9 J
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"% {0 ?: @$ T6 Q/ V/ }  E- q
  283. ; ]. ~: L3 d: ?% _; C( q9 C
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    - m% z3 M0 |+ m8 |4 n
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    9 i! N' Q* k: d0 `* ]

  286. 1 ~3 a* t) O& q9 ^( U* b+ F
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK- k, I5 ~6 O) W' y
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    % O, E6 ]+ O% u. S* q
  289. : N6 E- Y& u; R7 W
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    * h/ E0 v5 f) r% a
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ! x  @2 j4 g# B% V

  292. + P$ |( G$ `; n5 P6 u* Z
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    * X8 }+ e# [" l8 @4 u
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"7 b# _  Z, B, B9 \2 H

  295. 9 s, }0 v7 E# B3 y1 \
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK" B/ n" W5 q' l& w) X& U
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"" C& u# Y, l6 a/ p, w0 ?; n; F% R8 p
  298. 4 t: ^( C$ j8 G; a
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK+ J( x4 c& x3 k( n2 ~) e5 b& {8 P; X+ H
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank", l2 w( U1 Q( H! e8 u, D

  301. ! k& J) e4 _9 H* K: K5 R% k
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    ; ~1 b- F) [! X
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"# I$ m8 H; ]" |8 V) _

  304. ' ?: W( s# z# m) q4 q
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK7 w" w, y* a0 D8 R  u3 V, g/ o
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    1 u% J( y& f& Q
  307. 5 }! X, J+ o9 K4 T: V% h
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK1 @6 T, z2 \/ z9 Z" z
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"  ]. G& S! p4 ?2 {4 U

  310. 2 T* D+ p6 V$ o) F  i4 t
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ; S5 e# s+ C: R; _
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    7 |1 I& v5 @+ q& w

  313. ; C0 a8 D# ?+ p# I  u# A( ~$ A
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK  i  g1 z* v' s+ e" y+ I
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    4 p. `' s4 v* i0 S' I' z4 L  `2 R1 Z
  316. ( L8 ~5 x/ v* D% W  f/ U  r5 ]' m
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    - D% x0 S- V' {
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    1 s, `& a) h0 P! r6 x5 f
  319. 0 o$ H" P/ ^2 g& z8 Y+ Q
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK+ v% u8 G3 I/ x9 l7 n" `, s
  321. .ORG $D400' b5 D! p. M6 n5 p- g1 v: C4 T% Q
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"! a& I! @, Q* l* ]) k% d  |+ {

  323. 9 Y! E, e5 S3 @$ @: @1 h
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    $ `* m) t9 e, f1 K& L+ j5 N
  325. .ORG $D800
    # E6 m, T' f  [8 {. [. b0 f
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    7 \% V  F6 n! E% i$ t4 s! l8 S

  327. , i: ^0 }  c0 u) j1 w. ]

  328. # P/ d8 Q. M+ I3 Y; K$ L
  329. .ELSE
    8 Z% [- T+ X! Z; ^, F9 ^+ L: X

  330. 6 i- D& H& u% G' J1 @% _
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    5 m+ \7 U3 F! x% }6 x/ L
  332. .ORG $9000
    0 ?- @7 [6 J8 W( w4 q
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"6 A8 S1 N8 T2 z% t+ d( {9 K" Y

  334. ; E. [1 k2 z$ G
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK8 C7 ?" j. a% J; j
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"  Q! D/ r8 y7 X7 u' l3 i
  337. 0 p7 I& J. f& D  r
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK* f3 Y; `1 Z) `8 D# Y6 R
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"( }# J* q  [5 B
  340.   z$ X( y# |: Z- w4 G& `& _0 k* P
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK& Z) d% z. O8 h$ x: @, L
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    # z; ]+ z8 _* U0 e: O9 i7 t- x
  343. 0 Q/ N# ~" [+ d
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    3 R' Q2 h8 I# i
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    ' ^- w: U# h( g

  346. 0 c1 D' |) D$ G) w
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK  g; o8 R& B$ b8 y3 ?6 F" D! l7 U7 g
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"6 [& D- ^2 T, e+ W' S1 a
  349. 5 J  h: B! e3 V
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    4 m0 w" Z" i8 n2 E" o3 ~
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    ( o7 f0 d) {: B6 |( t3 `- \

  352. 4 k! U4 s  L3 y( x- c: i9 F( t
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK# @. P7 N2 d2 k
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"! ]5 g* E7 t1 E+ N

  355. . h" \% n# @( {+ {9 `8 \
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK  r& }0 C9 @% k; g
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"8 ]" U9 \& N' w, F
  358. # Q7 ]  j4 i* W6 Z0 O
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    : X1 P: r; A0 ]5 z  W8 ~
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"8 j$ Z  `/ Q( P

  361. 7 B. ]  I- b( K3 t5 T; m
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK5 n6 E7 `: k( |) d
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"  W( }1 K8 z& {7 U
  364. : W# z! g7 R# Q2 N/ w
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    / S& j8 X. w" K7 \: E0 Y1 B+ `+ C  M
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank", g( ?$ P: t  Q1 @1 K

  367. 0 t3 Z; Y$ v' `; O
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    $ J& V8 P- a. A; J0 K' i
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    2 ]1 A) g" g; O! D3 I$ i" L9 U

  370. ( f0 M( u4 c& j
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK0 F* o* W; P" M! U  @+ C
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    ( a( ~  L- ~- R2 |
  373. 1 |$ v& Y, i# v$ L, k+ a- ^4 @/ U" H
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK% P$ O2 z( U  Y! B  z
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
      K! f  D1 R" K2 `/ v( S0 Y% a
  376. 8 k+ W: d) [  |, b  P
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK( {+ z1 P1 a" ^# @
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    0 }$ Y4 T; n9 ^

  379. + G7 w  U  b; w$ S( L6 T" V8 \
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK) _1 m: B& [& R. c
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    . L8 N( i) x6 m( t3 W6 C& Z8 E

  382. 5 N( p9 i7 T. b1 {
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    8 t# m* h+ M5 w2 o( u
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"2 T/ P7 H) y( C9 j5 E

  385. $ P8 t9 h! N8 V+ H5 O$ }; t
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ! Q5 q. Y" I% d; z
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    / L4 I6 J! P3 S9 I, P3 ?
  388. 9 ]: P4 p" q8 a7 p( j, ?5 r
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK3 E1 N! g  k+ q
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    " j' a6 h6 A1 T% e

  391. ) I! V" S7 M& C9 F* z1 _$ p1 a
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    8 a6 a: p0 c* t
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"1 L: Y7 L# s) k- A6 `* @1 g

  394. ( B* o% b3 A; s6 x
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK1 u. u, C8 U$ c- W4 F) M
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    % y1 a! p0 b# F  |( h" T( o+ g

  397. - Q3 l. J  G! U% G8 y$ j
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK6 W1 A- J; o$ z$ F  y5 E
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    # \$ a8 \$ _/ V6 ?! ]

  400. / T5 n, |( p, `* [
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK0 P) b2 |+ z" M' x! N; |2 L
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    : j% G* }- d0 y" H( n4 D  ~
  403.   ~+ }' R1 f- w7 W$ G+ i
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    , G4 [; [. P- E" }6 C' {+ n
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"7 @7 R7 H- b  a

  406. & H3 m8 Z! t7 d3 d+ `
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK( y' ~3 K$ T7 g& Q5 t. N: S6 s
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ' V& F+ G7 G* t( q  \

  409. # ~9 `: S8 [9 s$ A( ?
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK( ~  x' ]& Q( q4 z8 s2 X% F  d
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    5 m+ g4 J* v3 v" i2 r
  412. ) {# ?; X* t) c
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    : z9 ?+ E5 m  G; B
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    - @2 l$ L# [$ x1 S

  415. 9 \5 @8 T5 q) Z
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ( _9 c/ j+ N7 C0 g4 J- u
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    0 c: w. u  x, i3 b* N/ }5 r  s  |4 N
  418. / ?+ m# T; _8 Z( m2 `) a- V
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK5 W$ C1 L7 e: a7 V8 `
  420. .ORG $D400% x) y9 g/ G9 I+ d6 \5 H: P
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    1 Z0 S' d6 R+ G( Q# I1 k5 O
  422. 2 {( J" H+ E: i: e
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK4 L; l; a& e; M3 a4 c$ w2 X
  424. .ORG $D800
    7 V5 O/ ~8 i# J* ]3 }) I, C! U
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    * u0 B, ^* i" ?' \7 ^( U
  426. 8 `; x4 }1 N# |* T
  427. .ENDIF
    7 C; F- q  a- n& i  O

  428. ! {( ^* O1 X& L! x9 m
  429. ;CHR图形数据
    " _% w0 d5 d/ o
  430. ;======================================================================
    7 x+ ~' @+ B) t5 D1 M
  431. .BANK CHR_DATA_BANK
    6 l8 q' k" X& ~! @7 Q# i) J
  432. .INCBIN "chr_bank/chr_data.chr"  Z, l: V0 j0 U
  433. : I% y3 F. C( O& y/ @
  434. ;======================================================================8 X1 q, y$ S" X" \+ C
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    3 s& o5 L, G! E  i% a
  436. .ORG PROGRAM_ADDR8 [, ]1 @$ U9 P
  437. 2 @' o+ e: f$ N# x* ]. a. W0 [
  438. ;==================================================
    0 _: t8 `7 \/ i* s/ g
  439. NmiProcess
    2 X9 K# N2 _& q' y. }
  440. 0 G3 F7 W. _- u) q# o* t" x
  441. ;关闭屏幕控制& U- k7 m3 m2 _7 S9 L' f+ H
  442. LDA #$00
    1 e$ s& r5 g5 X5 b; y$ R3 Z# Z2 D- R
  443. STA PPU_CTRL
    4 |( \! `- K& H2 ^
  444.   m) B. n. o6 D
  445. ;没播放音乐就不需要触发IRQ
    + Q# b+ @+ L0 m+ V9 `
  446. LDA <Music_Stop_State
    5 |5 y; y: ?% L6 K( I7 |- v9 b
  447. BNE NmiNormal1 U* t! p# l% A6 D

  448. / h& |6 o4 L! f& D4 }$ _1 q; ]
  449. ;重置IRQ索引2 ^* t5 {$ T3 \' ?5 i5 E
  450. LDA #$00
    5 O( T$ m# W" q( @3 H  y
  451. STA <IRQ_Process_Index
    6 B: ~8 r" y% r: S) o( k
  452. 6 V+ v! O$ B  L: Q' H& H
  453. ;时间秒数为空则跳过  U* ], I6 d- e. {' b
  454. LDA <Time_H
    . @3 N% i7 g3 M# I# s& E
  455. ORA <Time_M
    , _$ r. U  E) G' v! b  O
  456. ORA <Time_S
    ! B/ V+ G: s+ d, Y$ Q) i; ?
  457. BEQ EnableFirstIrq
    0 n! o' S- {% G# [- x* b* W
  458. 9 r# S/ |! M$ k4 S
  459. INC <Scroll_H: d" z7 x! `" [9 y

  460. 9 B& |5 O9 g' a  ]3 d2 m0 J2 x
  461. EnableFirstIrq
    : z- P% N& E; d9 u, y
  462. ;80条扫描线后触发IRQ" P) }" n# a, _
  463. LDA #IRQ_SCANLINE
    % v& S: q2 B3 `2 a) e) Q
  464. STA MMC3_IRQ_LATCH* Z6 B! b5 z$ J* o% q# j& Y
  465. STA MMC3_IRQ_RELOAD0 P  Q) F# W6 |. s9 _
  466. STA MMC3_IRQ_ENABLE6 b& K+ k9 Z1 n' A- l) x/ c
  467. CLI
    ( i  H6 g3 A' y* y! p: w
  468. 0 b- K7 ^% g! v" D. Z' P  x! r
  469. NmiNormal2 @$ B% z8 x5 m

  470. & `' Z1 B' I3 k! P  C
  471. ;处理PPU图像
    6 M7 u& p& X9 s  C- k7 _. y! ]
  472. JSR PPU_Proc6 G- c8 V4 ^, z, L/ V

  473. " j! ]" z; c; h
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
      ]- t# c) H. j+ p# n6 j; h9 i
  475. LDA PPU_STATUS
    / n. @* x9 k* ~7 j+ k  ]
  476. ;LDA #$00
    3 c) d/ g/ E. n# v
  477. ;STA PPU_OAM_ADDR- f& K. @7 z( M$ H; _/ M8 A
  478. LDA #OAM_TEMP_ADDR / $0100  l$ l) ?/ c: f( Q, W1 d& Z
  479. STA OAM_DMA4 M0 i! k( b& ^+ A6 k% }2 r
  480. . s$ c6 Q; F) {& g
  481. ;启用NMI中断
    " _5 V& B, Y. z: ?
  482. LDA Screen_Ctrl6 `) z* \4 @& R: [% F+ W, b9 h  l
  483. STA PPU_CTRL
    : J: ?$ Q# O! C3 l  m9 B
  484. ' s7 n0 V  X/ i2 Q. h8 |- `
  485. LDA <Text_Disable_Flag8 I. D$ k0 f$ \
  486. AND #TEXT_DISABLE_RAM
    % [# x, ?2 ?6 I0 F/ v
  487. BNE Nmi_Sound_Play& _, y* Z; @' R" p* ?/ x

  488. / [2 W7 ]( A/ Z6 R
  489. ;处理手柄输入: Y  K/ e( n4 U+ I+ |/ L0 ~
  490. JSR Key_Proc# u  q, U$ j! a/ F) o
  491. ' X& r- L( p7 ?
  492. ;切换音乐(手柄触发)
    ) ?% I  h5 C( G  i) v
  493. LDA <Time_Wait_Cnt. Z- m: B$ w: f3 g9 b
  494. BNE Nmi_Cursor_Arrow  z# J7 `6 x1 E1 q1 I
  495. JSR Change_Select_Item& q' h# F1 }, A9 a8 _* P$ X: I

  496. 6 }, F; R( `1 |2 o& S' g
  497. Nmi_Cursor_Arrow' k# [; ?( R1 F+ |3 C8 v! r
  498.   P2 Q: ^2 `. e. o; G9 ?
  499. ;处理光标箭头3 `- V3 F. d2 ?4 E" w
  500. JSR Show_Arrow5 G9 U# i3 |$ Q/ G% ]8 e& z: r
  501. 0 T( U$ }# G9 h3 ^" I% O
  502. ;更新调色板  ^, x* U/ m# |& Q- D) @8 I
  503. JSR Update_Palette_Data1 l  Q/ D3 j7 F( r

  504. 4 V# \1 M6 F1 M3 z# z! y
  505. ;显示时间(缓冲)0 I+ t, k  h" g! H9 V
  506. JSR Time_Show
    * f- `; C: q0 S: ?4 r4 \+ l

  507. 9 E6 I; p' T: I, C% z9 x. d
  508. ;音乐显示(缓冲)+ O9 O' t- `- G" j* [
  509. .IF SOUND_BAR_SHOW_ENABLE
    : W7 A9 s6 F2 A' S6 k0 n
  510. JSR Music_Vision
    7 X$ p$ L  K  s9 |& Q
  511. .ENDIF, g' |, T6 F: l3 o/ f2 V
  512. ! C# J$ ]- K5 H/ ~; O" P2 k
  513. Nmi_Sound_Play' R; K0 v6 [' a' _2 m& f) R
  514. ;播放声音' h# o; X! J- @+ n9 A) i- V
  515. LDA <Music_Stop_State
    4 V) P/ a! R2 j5 M- Z4 b7 U8 ]
  516. BNE Nmi_Time_Wait_Set# w0 c5 I2 D( ]: A( N' u: j
  517. JSR Sound_Play_Proc# T8 |/ W2 w- L) ^& Z7 L
  518. 0 i. M7 [% B* p/ U2 {7 \
  519. ;播放计时. v2 X$ G1 m& y/ J5 \( c) ^% h
  520. JSR Time_Count! D2 Z( i4 F4 R0 @

  521.   e3 M+ E% N/ M4 G6 j
  522. Nmi_Time_Wait_Set! C4 s8 {* x% N8 v8 K# {) j" `5 V5 K
  523. LDA <Time_Wait_Cnt' I% L  m- M" U4 i
  524. BEQ NmiNormalProcessEnd
    6 b2 F' N, ?+ b! ^- V
  525. DEC <Time_Wait_Cnt' x0 k, e- P, h) r
  526. NmiNormalProcessEnd
    ( _# P" s( `' W- {6 K& ]3 B

  527. 6 R, J# S1 y1 z1 _/ x
  528. INC <Nmi_Time_Count5 M, t5 I/ J. N( A' C% }0 E" T$ p

  529. # i. {* w: U) K; P1 ~. H* X  X7 H+ l
  530. RTS1 E2 R" I  m) u& f0 ~0 `

  531. ' W; P$ ?" w( }
  532. ;==================================================
    ' o: I3 D+ ?, N; R1 |
  533. Init_MMC3$ s! z9 v+ x! D
  534. ;==============================% h0 J7 Y6 Y2 e) h/ ]' A# Y
  535. ;禁用IRQ: P* R4 S+ J0 T5 w+ E5 d0 x
  536. STA MMC3_IRQ_DISABLE
    ) u; v0 U& ~5 o% M
  537. ! E* w& _8 C5 A1 d' ~
  538. ;水平镜像
    4 f& E+ V# l2 C$ m2 T: S
  539. LDA #$01. T& N6 v7 N: b3 f' Q
  540. STA MMC3_MIRRORING
    ! q: C( z# T2 M8 ]; C; p

  541. 0 s: t/ o; a/ R4 \7 w% }
  542. ;初始化图形bank
    / O2 f* ~  H) I$ Q) S2 p% q8 o
  543. JSR Init_MMC3_Chr_Bank
    2 X- W- d; ?2 A! {* h) x

  544. " I6 p0 i# U3 G7 }  F4 ^
  545. RTS0 M! H6 `# l2 J- s: ~9 \
  546. ;==================================================* i! u: G7 G7 S! g
  547. ProgramBegin;主程序
    ' _9 T- [# y) @9 N
  548. LDA #$003 A9 n& @) l3 L- ]7 z$ [: i2 V$ S
  549. STA PPU_CTRL
    5 K1 k# v: U* s2 B( B9 t7 g4 s
  550. LDA #$00
    / ~0 D8 V* l8 ^! I+ n
  551. STA PPU_STATUS
    9 D- a4 T/ U7 q3 {4 \% T8 k1 K- g9 _
  552. STA PPU_MASK
    ; B+ F, \" R' e8 s  Z
  553. STA JOY2_FRAME
    $ u2 F4 m% @/ y
  554. / T0 O0 }4 {( F* ~* g2 i  q
  555. STA PPU_SCROLL/ A* {% H3 A; l% [, s
  556. STA PPU_SCROLL# J" L" X  D( y) w

  557. 9 O' Z) [. R3 z9 ?! Z3 J6 a
  558. ;==================================================4 l9 B1 u0 O% G' e: O) d
  559. LDX #$FF5 g( b, i7 P: J' [8 K
  560. TXS
    ( E, q8 B- B* d: S$ Y2 q8 C/ h% s
  561. 2 [# H' p, q% T# i
  562. JSR Init_MMC36 L1 S1 ~7 `. j' t2 D

  563. ( p- u9 _; Z( d2 S# ?' O
  564. LDX #$02
    " U0 I' b* j& ~4 l+ M
  565. Check1* F- ]$ |) Y  Q" z$ h
  566. BIT PPU_STATUS' v: R0 G$ B2 A+ S% S9 t
  567. BPL Check1* Q5 h$ v- f" f1 S. {2 z% V8 c
  568. Check2+ w; R7 {8 d# p, [6 W
  569. BIT PPU_STATUS% _: ]# w# @4 o8 P5 X
  570. BMI Check23 E  Y7 V( }1 `$ L
  571. $ c; T$ K" U+ e: N+ c9 {( u0 i: u
  572. LDA #$0F! i# s' b! S5 X$ p9 C* r
  573. STA APU_STATUS
    1 r& Q" V. f, M1 ?" C
  574. LDA #$C0
    3 Z- l+ @" ~5 m2 U: n
  575. STA JOY2_FRAME( x6 }$ ^4 Q) E* f, b/ `% p

  576. - `& l. q/ S3 f0 t( P5 y" Y" P  b
  577. LDA PPU_STATUS
    % k. ]+ V( j( W; D
  578. LDA #$10
    " S: [8 @$ P$ x7 ]2 n
  579. TAX2 g3 Q$ h% h; T8 O2 f6 j' [% Y
  580. Check3$ S, o& x0 c# @
  581. STA PPU_ADDRESS
    # I; a% L6 i9 u
  582. STA PPU_ADDRESS
    # ^; h% t; D" ^+ e
  583. EOR #$00
    9 ?9 J0 `7 R& [; s3 X, V
  584. DEX
    ' [! @7 n! z( V, A2 C% B
  585. BNE Check3+ v) B+ U- K! y/ Q/ D
  586. ;==============================! H4 }9 Z. L) _
  587. ;调色板清空
    6 y, V& z/ w; F& e) [
  588. LDA PPU_STATUS* W' h) z8 @! O$ D
  589. LDA #$3F
    ' }$ t& _. Z" t) g: b$ U
  590. STA PPU_ADDRESS( M, L/ O8 L0 E0 N& I
  591. LDA #$00- X& Q. K! f6 V$ V% ~" {6 X
  592. STA PPU_ADDRESS
    : i9 R8 p  b5 T& K
  593. LDA #$0F
    , I% s- [% I6 W, `7 p
  594. Palette_Clear9 Q1 a8 y) @( m2 j9 k$ |
  595. STA PPU_DATA
    / }+ u# d7 j5 W' h" q1 G
  596. INX
    9 V0 A: }7 |$ z. [$ v1 ^
  597. CPX #$202 G$ ?1 F% B' F) Q% f7 G$ b# X- `. {
  598. BCC Palette_Clear
    % ~- P8 i& K! b( a: E$ q3 X9 `8 b1 [0 V
  599. LDA #$00
    4 i) x6 H. f9 O- p3 k3 |2 q( w
  600. STA APU_STATUS
    2 C7 }" _& q. t" O# z
  601. 0 P, c( p. p, T( @/ Q+ C" W
  602. ;==============================( M) b; c. K0 d' X& l3 V- w7 f
  603. ;RAM初始化! X: |* J" F' w$ L6 _% z% d
  604. RAM_Clear_All
    7 J& O1 G" z/ o/ A/ D' U- K
  605. LDY #$00
    6 d% ~2 m3 Y$ L& J( r9 O
  606. LDX #$081 ^* T- K" [* B! w( |
  607. LDA #$009 @! O, C# ]# R4 S) B% d3 w
  608. STA <$00
    5 Z5 S( a- [: ~1 @. R- v
  609. STA <$01
    ; h) V' s; ^$ b+ U
  610. RAM_Clear_All_Start! k8 g$ |7 Y2 x$ S( f  o- u2 Q
  611. STA [$00],Y
    * m0 \+ y! ?8 R# i
  612. INY( D* J# w4 a- Y
  613. BNE RAM_Clear_All_Start
    3 |0 Q4 V0 j' G/ ?' Y+ Z
  614. INC <$01- Q: ?( S3 `# X6 ?# C8 k" D" [% \* `
  615. DEX
    " G; q7 b  C& k! K  M* {2 ?* k) r1 l1 y
  616. BNE RAM_Clear_All_Start
    / U* b5 Q* U& X1 L# b
  617. $ `1 s& Y9 _$ p
  618. JSR VramClear# w9 H( q  b5 h6 r& N& R0 S. v
  619. JSR VramInit9 @' I, ]! n3 B! Q# s( p
  620. JSR OAM_Ram_Init3 a9 Q& [& \6 ?/ T# v
  621. JSR Init_Palette_Addr! @$ r4 u- {1 U

  622. , {" G6 \6 {+ |" R* J
  623. LDA #$FF
    5 }' k& M. D/ x: _
  624. STA Use_Ram_End
    9 Y( E: j( d! V9 r# y+ B
  625. ;==============================# d6 P3 p5 S) j7 b
  626. ;初始化背景调色板
    5 K9 B+ y9 Z/ L* t, q
  627. JSR Set_Palette_Color4 W+ b+ j: ^5 j) \' F( S
  628. JSR Set_NameTable_Attributes
    $ T$ o4 H" i3 S, n2 R* b7 N

  629. + a' d5 h1 `4 G! r  d5 c% Z
  630. LDA #$00* `8 Y5 L/ l5 q  s
  631. STA PPU_OAM_ADDR/ `2 p0 b) W2 `
  632. LDA #OAM_TEMP_ADDR / $0100+ S" T, K1 w& }, T1 `
  633. STA OAM_DMA3 @; q. G1 X* Q

  634. ! C2 G! x$ q, X5 O* H1 T* C2 ^3 L
  635. JSR Sound_Reset_Proc
    + Z4 c1 x# k* Z4 ?" C) Y
  636. JSR Set_Sound_Total
    : n% {9 v% }% [6 l

  637. # _8 j. ^: O- y: L8 l
  638. Init_Start_Music7 D  E3 x( O) x9 p5 y( J( }5 A: z
  639. LDX #$00
    % d, W& N6 `4 k. t* I
  640. Init_Start_Music_Write% A2 {* h! V  ^* B
  641. LDA Sound_Start_Port,X& T4 c& i8 L, U6 x" ]
  642. STA <Music_Cur,X
    ! y; R2 ?- S9 G! B! V0 A( M7 E7 W
  643. INX
    8 E+ u( Y# J- F1 J
  644. CPX #ITEM_MAX_SIZE. D, u) ?0 o# X- y2 v& ?; l  S
  645. BCC Init_Start_Music_Write% L# }5 ?; a8 `7 R1 A5 s3 U

  646. 8 Q' a) t* C) F5 ^6 d' L
  647. JSR Show_Music_Text
    1 p9 L" k  L) v. O. q

  648. : `4 M2 p5 x3 W3 l2 \3 Q
  649. .IF SOUND_BAR_SHOW_ENABLE+ p" U0 k0 m& N4 d
  650. JSR Sound_Bar_Text_Set
    1 H1 v% Y5 X5 O3 J5 @9 a# ?
  651. .ENDIF
    1 ~, {) e, A3 r1 R/ }
  652. 9 l7 r! q5 @# p$ y1 ]
  653. .IF Track_Name_Pos7 P* L$ W1 O8 P+ W
  654. JSR Show_Track_Info! g$ N" Y/ g( X: _
  655. .ENDIF4 B( Z: q6 g2 j' A, \2 z9 ?

  656. ; O# _7 C/ A8 q+ ?' o
  657. JSR PPU_Proc$ J2 J8 K% I! H/ W+ ?% Y: F

  658. ' Q% p( E. w" ?( p0 G0 x2 p
  659. ;==================================================' z* ]$ u6 b$ W, R
  660. ;音乐bank初始化
    * {" V; p  w5 x) U
  661. JSR Init_Sound_Bank! V' n; a! B6 X; v
  662. ; ^7 x  ~5 S  a; p: J' G
  663. JSR Music_Show
    # ^; x  s  b" F; i8 i4 E
  664. JSR Time_Show
    % E% q7 p* r2 M1 V# a9 T2 k
  665. JSR Music_State_Show" J% `2 Q6 c8 ~2 u
  666. JSR Time_Delay6 E* F9 a9 v& x; ]
  667. 5 {) G2 @& n: e( z: l8 N
  668. LDA #$01' j: A* k0 A$ i3 p* i8 ]9 s
  669. STA <Music_Stop_State
    ) V' F; \* z- b
  670. , z. C7 ?' J- w0 @; ^/ }" D4 E# R  w
  671. LDA #$88
    ) p. _2 d& }8 k7 R( M9 ^' L8 _
  672. STA Screen_Ctrl
      Y# n/ n1 m7 O1 p
  673. STA PPU_CTRL  N/ U7 f: x& v; y  Q' |! s, m

  674. 4 t3 |$ a6 a( e# g' b% [, u
  675. JSR Show_Page_Text2 n9 N$ o& ]' C. p

  676. , L* z6 A, \6 m" Q  J
  677. LDA #$10
    # L- M* F1 B) D; l: E  A, v! o
  678. STA <Time_Wait_Cnt
    1 W# p4 i' |% `7 L9 H( r
  679. / e; h$ A0 z# P' E% ^9 z$ `) y
  680. Wait_Time_Over
    - ?  H* `" p# K, h1 w. F/ D$ ], Z
  681. LDA <Time_Wait_Cnt
    ) c1 }* b4 B  }3 F* J0 ^8 {
  682. BNE Wait_Time_Over8 L, `0 u. V+ D, j

  683. 3 ]6 O9 v6 s- G$ \8 i) a5 F" B
  684. JSR Show_Arrow
    7 d& ~* h# @1 y& D' Q% G6 e
  685. LDA #OAM_TEMP_ADDR / $01009 \$ N5 E9 M) V. a6 j
  686. STA OAM_DMA7 \+ n2 [# k! o
  687. ; D/ ]0 X6 F1 ]# V* N* E; |
  688. LDA #$1E
    ' N' t$ ^& G& G
  689. STA Screen_State
    . K- m: p$ u, m3 @' D
  690. 8 |; @- J  G0 j( b$ M
  691. LDX <Music_Item_Cur/ q0 ?+ T! v- \$ o8 k1 n+ J! }
  692. LDA <Music_Cur,X
    $ q. N  Z! ]& i. L  a- f8 Q# O, F
  693. JSR Sound_Init_Proc
    " o" v7 ]7 {1 j& Z9 ?0 K1 H+ _9 {
  694. ; J, x+ ~* Y0 \; y
  695. CLI
    ' C! q0 u- [# I) T  ^" M& M
  696. JMP MainLoop2 b4 z1 C3 }9 T8 T1 n5 B) H

  697. 5 k% f* m! |9 K# T) B
  698. ;==============================/ G) n  f  k6 c4 S- M% ?
  699. Time_Delay;延时等待
      Z5 t- {$ a2 Y
  700. LDA PPU_STATUS
    0 f7 q. ~( J  `+ n8 n4 ~& ]  {6 l) Z
  701. BPL Time_Delay
    0 u3 e- @- S  t0 v3 C, c6 @$ d
  702. RTS6 [5 |. m( Y9 V
  703. " `) }  }# s4 v6 W8 A6 s
  704. ;==============================% f9 o) I1 e* m
  705. OAM_Ram_Init;初始化精灵内存
    : p/ b0 o! ^. X& ]# C3 _, j% g
  706. LDX #$00
    0 g* P- O* p: J+ W7 X) |, p
  707. OAM_Ram_Init_Write! L, o, M5 ^/ T: d
  708. LDA #$F8
      C5 b" Y1 E& I7 y' a/ \
  709. STA OAM_TEMP_ADDR,X6 \. |! e! }. o: p
  710. INX
    1 y7 E. m& R: j( o% Q! k* A8 c
  711. LDA #$F8
    * r* r! {7 \; t7 V% J4 r
  712. STA OAM_TEMP_ADDR,X& l! ^6 [* m3 B5 P" O
  713. INX
    " o# W9 R+ z0 r
  714. LDA #$00
    6 s) l) b+ N- V0 M8 b( L, b
  715. STA OAM_TEMP_ADDR,X
    $ Z! Q4 I' l9 b3 A& [# u; i& _' ]
  716. INX
      {/ k' b0 v1 X
  717. LDA #$F8/ H, s, d& [" ?* l4 o
  718. STA OAM_TEMP_ADDR,X9 X* U/ v6 i1 J8 p
  719. INX: w0 D& W2 Q! w* I. L; A
  720. BNE OAM_Ram_Init_Write
    $ {( X1 F) t7 ?. D! _
  721. RTS* B7 p4 |  I8 `4 {" q5 \

  722.   t- |& o# b+ E; ^2 f7 j7 a5 z
  723. ;==============================
    3 K7 k/ E# ~+ F" \( s
  724. VramClear;初始化图形内存4 Z1 j6 `& n8 G
  725. LDA #$201 ]% ~& u" F0 o9 T: L- c; J1 b
  726. STA PPU_ADDRESS
    4 ]2 V( `2 Z1 v) y# n
  727. LDA #$00
    4 C, k: K  m0 C
  728. STA PPU_ADDRESS
    * t+ f  ~( x4 {
  729. LDA #$00" f5 |2 l7 ~! `2 z
  730. LDY #$000 Y0 \5 s$ X4 T$ k1 i( O: e
  731. LDX #$10
    # ], j4 y6 ~+ ?4 S$ O
  732. VramClearWrite
    # p7 d7 s( |& }1 |& R
  733. STA PPU_DATA
    " `" ~) d1 m; U8 ?. Q
  734. INY4 m* L+ I' P6 i" }
  735. BNE VramClearWrite1 R8 C1 m" S) W, m4 b: [3 @
  736. DEX) w4 ?) k2 K5 l% G) T1 Z
  737. BNE VramClearWrite
    + @2 V% F9 w5 _- |! U8 w
  738. RTS0 e, v3 V$ ^6 R8 A# [- l2 r

  739. 5 k4 W$ F! T8 w, @
  740. ;==================================================
    . n5 K4 Q& A' K4 w& k( m% G8 t) f
  741. ;设置MMC3图像bank
    6 s3 v. c/ n# ]! @0 [+ A9 b
  742. Init_MMC3_Chr_Bank7 A* q8 `, \4 W
  743. LDX #$054 G$ p. o$ Q6 m! L4 s  T. V
  744. Init_MMC3_Chr_Bank_Write2 J5 m; A7 T* L% \8 I
  745. STX MMC3_BANK_CTRL3 O$ T& n! W& N1 V9 J" I
  746. LDA MMC3_Chr_Bank_Data,X
    6 q$ \1 a9 p8 M( w& E9 X
  747. STA MMC3_BANK_DATA
    1 b( Z  V7 X1 M: T" ?7 V
  748. DEX
    9 N$ p% N' m3 \
  749. BPL Init_MMC3_Chr_Bank_Write' i$ _( g- a* ~5 W
  750. RTS
    $ r: G4 _6 ], V, Z/ m
  751. ;--------------------------------------------------
      d0 B- |( o9 c
  752. MMC3_Chr_Bank_Data
    : Z6 u( `' ?  _2 w
  753. .DB $00,$02,$04,$05,$06,$07" h5 F) a- Y- X. |& H3 {$ g

  754. ( s' h9 P# q. ^% t% s, Y
  755. ;==============================
    0 j7 o# {$ W3 h; X1 E; {* l' p
  756. VramInit;初始化图形内存7 v2 M/ W) l$ @9 C/ r& a: L+ f
  757. .IF CHR_RAM_ENABLE  w( A6 E2 f0 `" _
  758. LDA #CHR_DATA_BANK
    ; i' p. `- ~$ |4 Z
  759. JSR Switch_Bank_A000
    " e/ y- b2 p; I! f1 U! R
  760. LDA #LOW(CHR_DATA_ADDR)$ R7 D- {7 v: \: ^2 y0 l: u# A
  761. STA <Data_L$ U: W9 v, v- W
  762. LDA #HIGH(CHR_DATA_ADDR)
    ( \2 v8 I; O" V5 H
  763. STA <Data_H# w) V: E# Z& y, c, B
  764. LDY #$003 J( r0 G9 D  s- s7 S6 y" M4 C+ `& N
  765. LDX #$20
    - b/ J- ?) c# l) L) H6 s+ b
  766. LDA #$00
    . D/ |/ g4 y1 F( f6 L" h( p: \$ }
  767. STA PPU_ADDRESS' |3 T8 b3 W- k) N. I; _. m& ]
  768. STA PPU_ADDRESS
    * l; G, e0 k7 ]# w7 t
  769. VramInitWrite
    5 G# _% a% l4 r" T, T) [& m# g
  770. LDA [Data_L],Y
    , O5 Q) h$ M, S2 i6 K0 M
  771. STA PPU_DATA
    ' H; s! h0 \+ _( |% f6 t3 V7 x7 x
  772. INY
    1 M8 a' x+ r) S' `
  773. BNE VramInitWrite
    3 E/ g" W1 r" |& V6 C& l
  774. INC <Data_H  r9 f; h: p* X. x
  775. DEX
    0 |1 t8 ?- o0 h8 B( \
  776. BNE VramInitWrite
    , R0 Y! G% x2 e: ~
  777. .ENDIF" e3 j: i' \3 ~! L  @6 E
  778. RTS/ W* h7 r, y9 J5 w4 Y

  779. * ]+ E: A' O/ ^- {. ]
  780. ;==============================2 D/ |) N. E: k2 i  L" ]+ l
  781. ;音乐切换
    1 ^8 Y' K/ Y- y, B  `
  782. Music_Play_Change
    8 `5 U- t2 h& r% n* D; g
  783. LDA <Key_Once
    5 a0 J, K6 `6 s# a# o
  784. AND #$FF
    + O# g9 {: f4 @2 @8 D9 j  u! C" V$ R" P
  785. BEQ Music_Play_Change_Check
    5 K+ P( x  @5 ?# ?1 i' X
  786. 0 x1 w  g7 @5 y% l1 c
  787. ;禁用音乐条刷新6 o) P3 \. Z* a. W" b
  788. LDA <Text_Disable_Flag
    4 _6 I3 l" R5 s/ \/ A& O2 F, Q0 h- p
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME( |7 ^& h! }" k* h/ b4 b. L6 L) N
  790. STA <Text_Disable_Flag
    $ O, s5 c! U5 T2 {% @% w' C9 b
  791. $ a; @% M; ]9 x: f
  792. Music_Play_Change_Check9 l' `4 E$ T5 a
  793. Music_arrow
    : U9 G& W6 t6 `( r1 f+ R6 T
  794. LDA <Key_Once, f; Z4 j2 b  e& N9 H$ _
  795. AND #$0F
    % E. \) E; H3 i+ k* k$ k/ N4 K
  796. BEQ Music_Play_Change_End
    # E( T/ k2 c) {* o9 _6 @
  797. JSR Music_Track_Change1 {: w7 q6 K) I; Y1 r, K( ^
  798. JSR Sound_Reset_Proc# U: {* n. h; I7 M% @* V# o9 ~1 o
  799. JSR Music_Show
    : ~. `0 [5 a; e9 i
  800. Music_Play_Change_End% w' @& t( F/ h. i- ^0 ~3 r
  801. RTS3 ~8 U8 O6 x' V- @3 ^' C8 q; N

  802. 0 G2 q/ i5 x: ]3 [9 R5 g
  803. ;==============================; w! g4 I6 S' S4 I( {
  804. ;音乐曲目切换
    & A1 f" i7 ]9 u6 X
  805. Music_Track_Change
    & O" J* C* Q8 }$ @$ C
  806. LDX <Music_Item_Cur9 [$ g. T  I7 ?. i
  807. LDA <Music_Cur,X0 L. E& V; T! D5 N6 T
  808. STA <Music_Last: p& N: u, C" O' I* f1 B% C( |
  809. Music_Decrease
    $ O4 a- M4 g6 \, T6 w- g
  810. LDA <Key_Once* e( _5 _$ x4 Q2 Z
  811. AND #$42
    9 N7 L/ c. Y& B% D, _( B4 M3 p
  812. BEQ Music_Increase
    . A. z) O' K% X, ^2 ?; s
  813. LDA <Music_Cur,X  p4 t; l: Q1 D- r; }, Y
  814. BEQ Music_Increase* e! t5 q: F/ B& S: d
  815. DEC <Music_Cur,X' Y' a3 W' n, i, l- O% ]! i
  816. Music_Increase) z; g5 P  d/ k1 Z) y, D: p
  817. LDA <Key_Once
    * f9 K# n7 z" I# W" {6 o( `2 a
  818. AND #$815 }! ]( V: E6 ]# H1 c& H9 L
  819. BEQ Music_Decrease_10" \) D" m* \6 E" A% E" `! A
  820. JSR Set_Sound_Total
    6 S) J/ E: u" m; p
  821. LDA <Music_Cur,X
    % `3 N. O7 ]$ `$ O
  822. CMP Music_Total
    * E8 l8 y$ V/ G: Z! m* X4 o
  823. BCS * + 4# X3 @4 \2 f8 g$ E
  824. INC <Music_Cur,X
    1 U# y' ?/ w4 g/ H
  825. Music_Decrease_10& \0 g' U9 r, t! ^( V$ m
  826. LDA <Key_Once
    0 D: f. |5 G$ Y+ `
  827. CMP #$04
    , a! R( V" J6 A: a
  828. BNE Music_Increase_10
    $ A! e4 @6 }6 i+ T9 ?$ K
  829. LDA <Music_Cur,X
    - _1 L* s/ e/ U  _- R
  830. CMP #10( x, k# f! p" N+ _  S1 X6 R
  831. BCC Music_Start_Song_Min/ I7 t6 B6 c6 e2 I7 R
  832. LDA <Music_Cur,X
    & w8 Q5 g& I4 h/ [4 `/ `% w
  833. SEC
    ) p0 d: _! }$ U) `) S/ ~. N2 C
  834. SBC #10
    ; j. A* m' p0 W; K& w" Q
  835. STA <Music_Cur,X  \6 E+ A: w! O$ l! e
  836. LDA #$00
    0 {0 y$ K$ r8 t. ?' S3 J, k
  837. BEQ Music_Increase_10- q$ {) p5 I7 e( k* {$ ]0 t& k
  838. Music_Start_Song_Min
    3 D' R) F0 c: Q, o7 Q( x
  839. LDA #$00
    0 }. \$ l. |, _: L5 h, G) @
  840. STA <Music_Cur,X
    : u2 ], j1 L, E! g9 W% K2 o4 I+ a
  841. Music_Increase_10
    - p) ]. Q" x1 u2 p2 r, I
  842. LDA <Key_Once/ Y$ z* k4 ?9 d4 N) p/ u+ L. J
  843. CMP #$089 o. H3 }4 a% w/ l  s7 L* A3 ]
  844. BNE Music_Track_Change_End8 V' R2 G$ d/ n1 ]" r* ^% n
  845. LDA <Music_Cur,X: g% Q/ b' [6 V% }) c! @$ ]+ k) E0 s8 r
  846. CLC+ U% `4 }8 ~) [( }+ E, z- h* n
  847. ADC #10
    8 E5 f) E* O8 r) [; Y: F% U; K% J
  848. CMP Music_Total
    3 ]& E  k" g& Z* X. ^
  849. BCS Music_Start_Song_Max
    2 }) A- ]2 Q3 M: a( [, K4 M4 v
  850. STA <Music_Cur,X( d0 d% O9 d4 H. ?
  851. LDA #00
    5 i0 w8 G5 O- E7 L) p. G
  852. BEQ Music_Track_Change_End  b4 x0 o$ P: g9 j* D, ]1 J
  853. Music_Start_Song_Max
    7 ?1 O- D& l  \5 l" ]/ }( n
  854. LDA Music_Total
    4 C+ g  b& X/ F9 H# y; B% c9 u# \
  855. STA <Music_Cur,X7 c' ^/ ?! A7 a% g7 e
  856. Music_Track_Change_End8 B4 }6 Q) X: I: A0 n: J
  857. RTS
    & n# m1 J3 _: h, A

  858. $ Q0 c' n# w" q7 R: B& Z$ P
  859. ;==============================
      ~7 X) d/ x  f1 O
  860. ;按键处理
    / R( h6 S! b3 ?9 Z) \
  861. Key_Proc6 L. r% P. I& `; V
  862. JSR Key_Scan2 H" ^0 e4 C0 K! Y* q, Q
  863. LDA <Key_Keep# _0 ?! ?3 B$ G& o$ J6 ?6 x
  864. STA <Key_Temp& i; c* u& }( ^9 m
  865. JSR Key_Scan1 b: b2 I. s$ [- a3 t5 w
  866. LDA <Key_Keep" ^$ ?! M; Z) c
  867. CMP <Key_Temp+ J# o1 K0 j7 @, Q* h4 t
  868. BEQ Key_Get_Once' z* ~, F8 q' {+ D
  869. LDA <Key_Kemp
    % Z  e7 S) e4 s+ A  p' F
  870. STA <Key_Keep- j, D& Q7 \  l1 ?$ X
  871. Key_Get_Once
    6 _0 q& W. {) J) a3 O' g
  872. TAY2 d2 `; ~9 j$ V$ i5 w( w- ]6 h- N
  873. EOR Key_Kemp
    & X4 b% {* Z) P* q4 J
  874. AND <Key_Keep
    : e! F6 M3 S) K
  875. STA <Key_Once
    - v! _2 H' D( F/ u0 @" J+ n
  876. STY <Key_Kemp
    . A) o" n% y& K$ {) o
  877. RTS
    ' `1 P* A0 i, [9 w$ f
  878. ;------------------------------/ \6 `! S) Y, Y
  879. ;按键扫描
    : v& k- G4 T2 k( e' t
  880. Key_Scan
    9 x; }, O! I% ~( U2 a: k
  881. LDX #$01! N' F' l6 ^7 X
  882. STX JOY1_FRAME
    . G) P8 h9 v& U
  883. DEX
    ( Y5 q! i* L* ^* L2 _4 q& C. V
  884. STX JOY1_FRAME
    ; v7 ^) O) B# Z8 I% B
  885. LDX #$086 k3 ?" S  S6 A; C' n3 R' C2 Z
  886. Key_Value
    1 L' P( G0 w1 E8 ?( _' V
  887. LDA JOY1_FRAME
    1 A4 o4 c1 L7 G! Y% p" U
  888. STA <Key_Getv
    1 G6 g+ e+ g* R6 j, O4 i1 s/ `" a
  889. LSR A# V# j  r+ P5 x# R/ U
  890. ORA <Key_Getv
    ) b1 g6 l4 \3 [' }4 [
  891. LSR A
    ! j* K4 E- D" P) q2 f9 T
  892. ROL <Key_Keep
    & C. L3 E% x1 a7 _. A" z$ \9 B% H
  893. DEX3 d; ?/ [9 N& q2 ?
  894. BNE Key_Value4 b# o. v' q7 e: x8 `
  895. RTS
    3 I* Q' x# |5 N2 D. }

  896. ! ~1 o! A3 y# E+ }3 L* S) n4 A. l* ?
  897. ;==============================. @+ Z' B; L" A5 s! v% Q- J
  898. .IF SOUND_BAR_SHOW_ENABLE
    . @5 z1 ^5 r1 K$ K3 g
  899. ;音乐条显示
    ) b/ d+ S. J4 r' d, T
  900. Music_Vision/ L! y3 r+ K' o4 [6 L" u0 ^7 y
  901. LDA <Text_Disable_Flag
    % ]- p, U+ s- i, M) |* l
  902. AND #TEXT_DISABLE_ITEM( Z( y% {  F- J! q) b8 e
  903. BNE Music_Vision_End3 h# b) l+ z: I! |
  904. AND #TEXT_DISABLE_BAR
    6 `' W! b+ h: D5 B. K3 u
  905. BNE Music_Vision_Set
    + y3 T4 E) k' d$ ^/ ^2 Z
  906. LDX PPU_Cur4 x3 @9 I3 N' C$ c; d9 N" @
  907. JSR Music_Animation
      q. b8 _0 L7 l+ t5 j0 }9 }5 g1 |
  908. STX PPU_Cur1 @2 ?. |. Y- O! |4 v1 o
  909. Music_Vision_Set9 L: U2 A' T: h4 M
  910. LDA <Text_Disable_Flag
    % W: P2 I: V" A5 j9 z. n' O1 Q
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ) F( V) I4 g) u/ J* c
  912. STA <Text_Disable_Flag
    1 y, O, S- T$ A4 G
  913. Music_Vision_End7 u  P+ t* o: }6 G9 g
  914. RTS- ?% s/ n. @7 M
  915. ;------------------------------
    ; i+ D2 C4 @. c% F& C- c# n2 ]+ j
  916. ;音乐条显示处理
    / Q+ Z- {7 q  u# g8 m9 T
  917. Music_Animation! L& w% m( A0 k6 }
  918. LDA #PPU_MODE_CNT_LINE
    7 d( A; m/ m3 n  R
  919. STA PPU_Addr,X
    9 M- h) ?8 J/ c) [/ u; R7 X
  920. INX' B9 b% P+ J  }$ U! \( `2 ~
  921. LDA #HIGH(Sound_Bar_Pos)4 z1 ~. I9 y2 o' |& E" o. c2 W" ~9 i
  922. STA PPU_Addr,X
    ' w& i* a- D- \; n6 Q, t0 z
  923. INX
    . B7 Y) ~: M3 t# T( y$ x+ K
  924. LDA #LOW(Sound_Bar_Pos)& x1 V" L: K3 S6 t! d* i
  925. STA PPU_Addr,X5 |8 S2 X" ]) N/ k! n, \8 m
  926. INX% a! H* S/ I3 Q4 E" a
  927. LDA #$08
    2 f7 i+ i4 F, N+ O& {) O/ ^. _
  928. STA PPU_Addr,X
    0 T7 X. J0 L) `1 t! E
  929. INX
    + N6 F& m" i3 ?6 J
  930. LDA Sound_Bar& f) Q+ f+ |( S
  931. JSR Volume_Convert
    : F0 u5 V# U& J- e! p

  932. ; S! T1 V8 e# ~
  933. JSR Volume_Set_Cnt
    # k+ C2 U1 H) Z" D; S
  934. LDA Sound_Bar+$46 x1 b9 E0 L, j+ `, Q
  935. JSR Volume_Convert! c  B5 O6 u9 x' G2 T

  936. 0 U6 a/ b; s3 U1 H& [3 c, B
  937. JSR Volume_Set_Cnt" Z- d$ H7 y0 d+ p2 ^  k' P3 Z+ P
  938. LDA Sound_Bar+$8, x0 J* s  x8 m; C* q
  939. JSR Volume_Convert
    - ]1 [3 ^1 n) b2 q
  940. 5 K1 j( d: a+ E3 G0 d5 n( C$ ]  S2 u: u) a
  941. JSR Volume_Set_Cnt0 y( k1 \" X; F* M& f$ t
  942. LDA Sound_Bar+$C6 E+ r0 Y9 y, }( c  ]
  943. JSR Volume_Convert) f3 I$ \7 T, F3 L& x, c! h5 l
  944. 9 [: N, h3 ?4 e# ?1 ]
  945. JSR Volume_Set_Cnt
    , C% B7 q% l- t

  946. 8 d8 ~  y" R) r
  947. LDY #$10. ]- h3 C  k2 \" X5 f: E
  948. LDA APU_STATUS9 ^$ N2 ?1 K9 p/ ~8 b
  949. AND #$10
    6 F3 _( U5 z/ q7 K0 D
  950. BNE Volume_Count
    ( c1 \+ |9 Q: Z$ T" {) w/ o: H0 ?
  951. LDY #$00
    8 [& u  k% @. {% L
  952. BEQ Volume_Count
    8 C' Y- j# H. i

  953. 3 m5 R1 k) V+ F* ?: m, g# d/ A0 Q" R
  954. ;------------------------------! D" Y8 }1 A+ a; Z6 m
  955. ;音乐条处理% ]) G/ g" ?" W. M
  956. Volume_Convert
    . I/ k7 d. T& v8 q. ]- v/ R+ f
  957. AND #$0F; y+ d0 Y" y5 `2 }  K  f
  958. TAY" h; o. j. o# s0 p
  959. Volume_Count
    . _- ?, ?8 m3 }& j/ i3 K
  960. LDA #$08
    & q- L7 n, d- A
  961. STA Sound_Bar_Cnt
    $ K3 n2 ]8 G4 @% P5 z- p
  962. Volume_FILL  _$ B) k/ G4 d% V' B  E
  963. DEY
    8 y/ c0 ~0 ]* o4 Z. L
  964. BEQ Volume_Half
      N; s/ h# o0 v5 h- E( u
  965. BMI Volume_Empty
    ! a( e4 w* [6 M0 y( @7 `
  966. DEY5 S7 k: J# n3 |" f
  967. Volume_Full
    ' w7 I4 Q! p) @3 q
  968. LDA #$169 A* d, r. G! }
  969. BNE Volume_PPU
    : T: s& ~+ b3 r4 }# U; ~
  970. Volume_Half
    ) x% h. d) t" T% g
  971. LDA #$159 }% I, o7 `; f/ l! ~! M  M
  972. BNE Volume_PPU
    6 i4 G' I+ B' r6 W. o9 c
  973. Volume_Empty
    & y  C6 T5 e; I1 x- @) G/ K7 p
  974. LDA #$14! u9 k/ b. c' Y7 d
  975. Volume_PPU0 j  H1 ?0 _3 \; J* i
  976. STA PPU_Addr,X
    , m& c$ h9 A* S3 O. g% x
  977. INX
    , E, Q9 K+ R% Z7 W6 Q$ @4 T: B
  978. DEC Sound_Bar_Cnt- c0 |. ~. r/ M% Q. J; U! T* y
  979. BNE Volume_FILL+ G% t$ g0 z$ V5 q0 t: p0 E% j
  980. RTS6 q) C: D  q  L* A) [/ {& L- G

  981. 4 k1 N8 {2 [6 B
  982. Volume_Set_Cnt
    4 J3 c" B/ n3 U, O
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    . y) [, V: Z8 ^" ~/ N: d, C4 F: Q
  984. STA PPU_Addr,X
    ) a6 Z7 D$ W9 ~4 J
  985. INX
    * B& L' p9 u- o
  986. LDA #$08
    ; n" t9 W: y+ ?( `
  987. STA PPU_Addr,X3 f: |3 j/ {/ M) {9 V
  988. INX7 i; Y) f4 `# g3 q& }& h* R
  989. RTS  H' c2 w' x  h% [, S

  990. ) c* ?$ B6 y! Z4 j( ?- S
  991. .ENDIF6 N& L- n4 v# O

  992. * K  J5 l. Y3 w- W. Q" R
  993. ;==============================
    ) Y$ _( `* n* a7 O' I8 I1 Y& S- c
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入* W8 _; v$ r. w
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式7 U" e5 J7 G+ P+ [! i
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除; r+ z2 R9 j# ^$ c# e
  997. ;------------------------------
    1 m/ a, X4 Y. u
  998. ;PPU处理+ G7 l( Z5 y! R' P4 D$ E5 ]
  999. PPU_Proc
    6 K) @. J7 C# l9 {  T
  1000. LDX PPU_Cur/ |2 Q" Q) n! F! o4 c7 ~& C! N
  1001. LDA #$00
    & z7 x" N) A3 h! Q1 X, C
  1002. STA PPU_Cur
    8 O2 i- M6 ~1 W- p
  1003. STA PPU_Addr,X: F3 X6 p+ r2 v7 K$ H! v9 l
  1004. LDA PPU_Addr
    + @$ h- h9 O' E2 q' Q0 b! i2 l
  1005. BNE PPU_Proc_Beg3 a9 n% D9 b+ m& o: x; s6 F, s
  1006. PPU_Proc_Ret0 Y# T- z0 U8 f* P* V
  1007. RTS' @5 a" H5 y/ O3 H6 e

  1008. , w7 f7 J1 L5 V
  1009. ;------------------------------, i$ R' `* ]5 K0 V
  1010. PPU_Mode_Return_Cnt  ;转下行模式* Z( ?0 h/ d9 f( \* M0 F7 s
  1011. INX% i4 H! F3 U" F8 G+ r- F, U
  1012. LDA PPU_Addr_L' B6 g( P" R5 P/ A5 [$ m: p4 q5 K
  1013. CLC3 O. z" O: O3 u) N
  1014. ADC #$20
    7 g2 {, J% j, Q1 t- [
  1015. STA PPU_Addr_L' Q3 g! R7 k0 Z7 ]4 D6 u
  1016. BCC PPU_Mode_Return_Cnt_End/ S/ M# q/ x& i, v( Q7 ^
  1017. INC PPU_Addr_H
    4 m9 q1 b; S! o+ E
  1018. PPU_Mode_Return_Cnt_End, |" V% q1 A4 u! r5 ]5 f
  1019. LDA PPU_Addr_H
    6 e, l$ x" [! ?( A5 v( `+ [1 y
  1020. STA PPU_ADDRESS
    6 v8 E- H4 |! m0 I- a
  1021. LDA PPU_Addr_L$ u) H% |& H1 D9 N+ A
  1022. STA PPU_ADDRESS
    " s( s2 H* |, J5 b* X7 J
  1023. LDA PPU_Addr,X
    " b& K8 t3 o! q& Z
  1024. TAY% [" S$ ~1 ^, F. h, f( [
  1025. PPU_Mode_Return_Cnt_Write
    + f$ F1 q# X, {1 {& v0 P
  1026. INX6 N) j, Q$ l# h1 j
  1027. LDA PPU_Addr,X/ L+ e, Q8 I8 X4 w
  1028. STA PPU_DATA
    8 @' R$ ~2 D* N# n
  1029. DEY3 I) b5 S+ T" k: x1 `2 |) z0 ^4 d
  1030. BNE PPU_Mode_Return_Cnt_Write" a6 x' F( O1 Z9 D# ?
  1031. JMP PPU_Proc_End
    6 u4 C% u/ L, Y

  1032. 2 L: A5 k' C, [7 e3 |
  1033. ;------------------------------9 W3 A5 _( l$ b; t9 }
  1034. PPU_Proc_Beg  ;处理开始
    . h+ D; h! w" b  L% H$ P( ]! v9 Z
  1035. LDX #$00/ g, Y4 `' D* t3 {# p
  1036. STX PPU_MASK! g) B" z! ?: q( y9 A
  1037. ;------------------------------
    1 a, z6 }% k( M. I- ?: T. i
  1038. PPU_Mode_Select  ;模式选择
    ' N7 G' _+ B  L9 I' L3 R
  1039. LDA PPU_Addr,X
    8 H# W9 {( }+ M: r. b; B
  1040. CMP #PPU_MODE_CNT_CLEAR
    " \7 i3 \8 A4 x: {5 A( V! ]* z
  1041. BEQ PPU_Proc_Clear
    ( |& Y% |7 d" M: L
  1042. CMP #PPU_MODE_CNT_LINE
      Q0 O9 f7 F3 x" ^
  1043. BEQ PPU_Proc_Cnt_Line
      ?5 B+ Q& ]$ y& `
  1044. CMP #PPU_MODE_CNT_LINE_NEXT4 f: L; S2 a/ r; G3 F, l
  1045. BEQ PPU_Mode_Return_Cnt
    . o& [! L4 h: n, g1 J+ V
  1046. JMP PPU_Proc_End_Write1 u1 M' E6 ^8 z0 i6 @* y) @4 L
  1047. ;------------------------------0 M) o8 w2 ^) V, e4 C+ Y
  1048. PPU_Proc_End  ;单行写入结束+ Q8 L8 U  \7 O& T# ~! B; I& W  @
  1049. INX
    , v. I7 f0 a4 \8 K
  1050. LDA PPU_Addr,X' t# e& I+ A- N) e4 {
  1051. BNE PPU_Mode_Select2 J: H2 v6 X9 M; Q# Q
  1052. STA PPU_Addr  R7 f3 _: o  ?/ K4 [- x' D, i
  1053. JSR Update_Palette_Color
    ) o- T$ e9 Z7 p" J- \1 q
  1054. # d( j% Y/ m3 G# ~4 }$ e4 O5 g& ?
  1055. PPU_Proc_End_Write
    ' C! h+ F6 v! H( H
  1056. LDA #$00
    # A. \2 p! Y* ?# X( d" N  R
  1057. STA PPU_ADDRESS
    ' _/ \( o. K0 U4 }+ s/ ~7 z# D. t
  1058. STA PPU_ADDRESS2 Q3 l7 @, `9 e! s- q. u
  1059. LDA <Text_Disable_Flag
    , h( E" K( Y; f
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF. l7 w" G4 t; Z# h5 r
  1061. STA <Text_Disable_Flag
    8 H3 G4 u  }( M8 n5 P
  1062. LDA #Scroll_X
    , [, C# z% b4 O- }2 w
  1063. STA PPU_SCROLL$ Q$ a' ]6 x; `' m
  1064. LDA #Scroll_Y
    * a& c1 S( t9 o, a# @( |9 H
  1065. STA PPU_SCROLL
    ; \$ \$ W1 K# n8 {1 G4 e5 W0 C
  1066. LDA Screen_State; h" l5 t% t. z9 [3 m
  1067. STA PPU_MASK
    ! M! X/ l+ z: O6 ]1 \
  1068. RTS* R% j# t6 y8 U, I6 v. N- |; v

  1069. 4 E2 |+ X. G- S# w' N9 R3 w0 T. m
  1070. PPU_Proc_Clear
    2 `- A# [9 R( X% G+ |
  1071. INX
    4 A: ~# o9 J1 [0 I
  1072. LDA PPU_Addr,X- ~1 |: h( D6 j! X
  1073. STA PPU_ADDRESS
    , ~# ]9 _- D- B
  1074. INX
    ' j- d* F  ]" r; ~' H
  1075. LDA PPU_Addr,X
    , F. n" Z. |8 g% n+ M5 v) r9 r
  1076. STA PPU_ADDRESS' c, B* [7 Q1 d0 g) O
  1077. INX
    $ _" y; ?6 K6 {, Z1 C3 p9 G: ^
  1078. LDY PPU_Addr,X
    4 p- c( c6 S8 o
  1079. LDA #$00
    5 `# i4 ?2 b$ M7 T" \
  1080. PPU_Proc_Clear_Write
    ) s- @3 `- r2 _1 W
  1081. STA PPU_DATA' M/ t% {3 E1 k: Z" S( W7 @
  1082. DEY/ |$ H. u$ g, s( h
  1083. BNE PPU_Proc_Clear_Write
    2 ?" c; G2 L7 p& S' n& m
  1084. JMP PPU_Proc_End
    : Z3 y' R, G: p0 z3 R

  1085. ; |0 ?: [- d2 ^& m4 ?  n4 [; m' j
  1086. PPU_Proc_Cnt_Line: F" w* |0 [" D5 [4 S! ^9 r
  1087. INX
    7 ^3 A! A# |% R, S# e
  1088. LDA PPU_Addr,X
    - ]" H& h% f! m# b: C
  1089. STA PPU_Addr_H
    7 }9 E3 G4 O! M; D3 l1 [
  1090. STA PPU_ADDRESS& u+ R* u' ~  t) C
  1091. INX4 i' h* a+ X  a! y
  1092. LDA PPU_Addr,X
    # M2 ~  i% `9 `
  1093. STA PPU_Addr_L
    $ y3 v' v4 B3 N, e% S+ w; W
  1094. STA PPU_ADDRESS. ]: X* Z8 X- @  t
  1095. INX" j' m5 {, s3 w, E) ^- p
  1096. LDY PPU_Addr,X0 G; h8 @) K% j8 c1 T' `
  1097. PPU_Proc_Cnt_Line_Write
    ' s# @( `; ?6 L# G7 f1 a6 a
  1098. INX
    : l  P1 |- h# W0 r
  1099. LDA PPU_Addr,X; J3 X; p: i8 E* U3 X
  1100. STA PPU_DATA
    ; p) [" O2 m5 j" J- O: Y: E
  1101. DEY
    4 B# c/ K$ Q3 i( s
  1102. BNE PPU_Proc_Cnt_Line_Write
    2 m3 K( B8 |9 [' }9 ]
  1103. JMP PPU_Proc_End! z8 f( W/ i+ Q2 x
  1104. " k! m, B, h, h7 S- i+ M* q
  1105. ;==============================
    $ c" Y: A$ j' A8 K: [4 k
  1106. HEX_To_Dec;十六进制转十进制
    / d% g8 q" k  E' d0 q9 `& D
  1107. STA <HEX_Data* V, {3 q( `' x4 l9 H3 C
  1108. PHA% M. S& n3 l, i
  1109. TXA
    + L2 ~+ U7 `3 A* |
  1110. PHA
    ) H  y& I. A% \1 X, A- j8 b
  1111. LDX #$00
      a2 G% v6 T2 `$ M# D7 k2 i' Z
  1112. LDA #$00% G1 D4 t  k7 T) {
  1113. HEX_Cln
    8 Q0 ], E# m: a4 ?5 f/ s
  1114. STA <DEC_H,X
    ' ]- R5 `  V- N" Q
  1115. INX
    4 g5 m! @* H; I
  1116. CPX #$033 E/ \4 C8 r( v+ ~
  1117. BCC HEX_Cln
    4 h: n* N, o2 d
  1118. LDA <HEX_Data0 Z8 x6 \+ N; y$ Q* ]: Y# s8 s% R( U
  1119. ;------------------------------
    2 H% I5 ^$ D0 T. [# Z0 o
  1120. HEX_100; q5 @5 {4 J1 l* l6 R
  1121. CMP #100
    8 T) O: n7 {6 `/ v3 O' y( ]
  1122. BCC HEX_10
    1 ]2 k  ^; e( W; ~* _0 }* P
  1123. SEC% F% ?: x4 i0 Z2 F. u! ^
  1124. SBC #100' L- ^: [1 ~: Y+ @, O
  1125. INC <DEC_H
    3 h* M# ^) c* M1 k2 l, o& U
  1126. BNE HEX_100/ G6 a  w3 _3 [0 r( S
  1127. ;------------------------------# W& o1 f: Q5 o) V$ C2 ?. \
  1128. HEX_10+ I8 P( p4 m- E# G; ?1 \7 L
  1129. CMP #10
    6 |  ]$ r& B, \+ ~" b. \: p8 ?
  1130. BCC HEX_1! _5 S6 t! o2 l2 f1 K8 G8 U& h8 _
  1131. SEC$ T- y% h7 ?- u
  1132. SBC #10
    - P) ]5 I5 m! V; ^& S
  1133. INC <DEC_T
    ! C& ?0 b8 v% \+ m. L. S- d" S
  1134. BNE HEX_101 Q( x, |# s6 u5 A, W* x, d8 D
  1135. ;------------------------------
    ( P& b! X7 h; F: d
  1136. HEX_1
    - V: Q% T" d  t; W" W
  1137. STA <DEC_L) y* B( g7 k& o: a1 v/ ^
  1138. PLA+ Z0 r# W* u  Z+ s) y
  1139. TAX' U" E6 W% f5 g/ J: F) e
  1140. PLA
    % _. Z) R* h) W( z6 h
  1141. RTS1 Y' n! U: f6 B+ x, D; M3 E

  1142. 7 U/ A0 w4 B, ^+ S8 S5 K4 L& F
  1143. ;==============================. p* m' F5 l7 T! a0 C2 {
  1144. ;音乐曲目显示
    / V) }) F) {+ D" I
  1145. Music_Show
    / b& k! O. t( L( q  v
  1146. LDX <Music_Item_Cur
    " y# C0 c/ w/ s% k
  1147. LDA <Music_Cur,X) q& {* l, Y6 C8 Y$ }9 S) a1 h& z
  1148. CLC0 k. q5 Q) r" _' Y
  1149. ADC #$01& o; U1 t; M, ]( p
  1150. JSR HEX_To_Dec
    & o2 v* j0 ~  R/ D
  1151. LDX PPU_Cur: o+ i5 `% ~1 w9 @
  1152. LDA #PPU_MODE_CNT_LINE
    9 w3 ~" s/ K, Z! _
  1153. STA PPU_Addr,X- Z! {' Z1 _( J
  1154. INX7 V- ?4 y& s6 P
  1155. LDA #HIGH(Play_Index_Pos)+ z$ @6 A0 w! V
  1156. STA PPU_Addr,X
    $ x& b0 P; y( R# d7 C
  1157. INX
    3 Z- a+ j' ^0 V
  1158. LDA #LOW(Play_Index_Pos)3 R. R" A/ P) f& C! Q  Q: r3 G1 K/ F
  1159. STA PPU_Addr,X
    , L6 L; N* W& E# ]" j
  1160. INX& o6 I$ G4 \5 _9 O2 k3 N

  1161. & z7 T) P& B# q
  1162. LDA #$07; t2 g# b1 f$ [
  1163. BNE Music_Show_Length
    4 x+ b9 \/ x/ t% V* n& @
  1164.   y& s4 ^4 v9 a( u. v, _: ]$ p
  1165. Music_Show_Length
    % W3 P  V2 s! T6 G
  1166. STA PPU_Addr,X# c5 J7 T3 @! r0 U, Z
  1167. INX2 i) m' c& z% O4 S9 V) e

  1168. - \" w2 z% M+ ?5 b% p
  1169. LDA <DEC_H
    5 a+ H0 u8 ^9 Y9 ?# t3 Z5 ?
  1170. ORA #'0'
    $ c1 p. h% N( ]. E
  1171. STA PPU_Addr,X+ J' l( S% T* j4 F# U7 p6 @
  1172. INX
    9 }7 B# j+ u  o  M# n" I3 F

  1173. ) u. x7 E$ y0 y
  1174. LDA <DEC_T  M8 W7 s/ p" N9 Q+ f
  1175. ORA #'0'/ U: o% v6 e- I" y( O
  1176. STA PPU_Addr,X# V) a* `3 T* z7 \/ b
  1177. INX
    $ v5 r# ?3 V5 [. f) {( A

  1178. # }, s  G9 Q. e8 t
  1179. LDA <DEC_L
    5 @2 X- t( z( n2 j1 ]: G
  1180. ORA #'0'+ y% Q7 a: s, G6 e6 Z+ X" V% o9 [
  1181. STA PPU_Addr,X
    ' ]+ [8 F1 [% N% C0 Z7 F
  1182. INX
    8 ^. w! ]8 T% \8 n

  1183. + Z! i2 `* G8 m7 c
  1184. LDA #'/'
    8 M1 G  n, G7 f9 }
  1185. STA PPU_Addr,X. P, ^. o2 Q- M4 P
  1186. INX
    : @' x, \& b9 G
  1187. Music_Show_Total# n, \$ h6 u% K( m+ t3 o
  1188. LDA Music_Total
    6 z# A& X0 l! V8 }
  1189. CLC' X* l0 O3 s" `9 q% L. k
  1190. ADC #$018 n* m  U) F' n8 x4 z4 k! p8 m
  1191. JSR HEX_To_Dec+ t9 M5 V5 {% J. {% Y  `4 o7 b
  1192. % u9 z* _" Z! ?# [
  1193. LDA <DEC_H
    * `# U( t2 T  `2 Y2 }- h& ^
  1194. ORA #'0'0 ]( O' v* o) R2 ~
  1195. STA PPU_Addr,X
    ; O; Z2 m. d# ^9 @
  1196. INX/ X0 _, H/ _5 }2 ]$ P

  1197. 0 A4 \, L: R) \: i$ _% O3 C5 w
  1198. LDA <DEC_T% F" R' `, H5 c; g
  1199. ORA #'0'
    * p" ?( I: c" p1 K( _, Y
  1200. STA PPU_Addr,X
    $ H( Z6 o8 j. V- I( ^* p
  1201. INX
    ' ]1 f8 m7 x1 |6 Q

  1202. 4 [9 n1 h2 a2 `, K  G
  1203. LDA <DEC_L8 i/ y* A% ]- W7 E4 E! S0 E
  1204. ORA #'0'
    , L" R8 y7 X( r
  1205. STA PPU_Addr,X
    0 I& `8 R; S8 Y3 s
  1206. INX1 ^! X8 `9 r9 w1 @
  1207. 2 N1 b% H2 v8 e$ h! c
  1208. STX PPU_Cur
    # ~, {2 g. q, t. ?" r7 S) t
  1209. Music_Show_End# \0 a- c6 n$ n6 F9 j0 \; h- J
  1210. RTS3 X( D* _/ `: Y$ u6 A* T" C

  1211. ) ?& B- \- R; B6 g3 K
  1212. ;==============================% x3 W0 M1 K# W) M: }6 W" d+ K" `
  1213. Time_Show;播放时间显示; w7 n5 g9 W) m" p
  1214. LDA <Text_Disable_Flag( t/ e* Y+ U4 J. O
  1215. AND #TEXT_DISABLE_ITEM
    . |5 \1 R( S; R. p3 \
  1216. BNE Time_Show_End
    1 E* {+ B9 h9 V* o3 ^
  1217. AND #TEXT_DISABLE_TIME( B3 ~1 U% G; T  d7 J$ Z
  1218. BNE Time_Show_Enable
      H3 U! C# a; C
  1219. 7 D+ C+ i; v& X7 m
  1220. LDX PPU_Cur% Q' l' V. N5 P/ b6 m- p" l, d
  1221. LDA #PPU_MODE_CNT_LINE( [, p2 J/ ^; h
  1222. STA PPU_Addr,X
    ' |6 o$ x. I9 y# j$ c8 k& y
  1223. INX
    * o! S8 G( p" D; b* o. m% s
  1224. LDA #HIGH(Play_Time_Pos)
    ( y1 p  W( [% P7 [- A
  1225. STA PPU_Addr,X
    ) x' X4 c# V- k7 m
  1226. INX! \! d0 X' W) u$ ^- ^: y
  1227. LDA #LOW(Play_Time_Pos)$ [' {+ X) C( q  B) o# p7 |
  1228. STA PPU_Addr,X* ?) m& n$ j) N9 V
  1229. INX
    - S* c. W/ r; \5 {6 \7 L
  1230. LDA #$08+ C8 W) h6 U- t' ?5 A
  1231. STA PPU_Addr,X" x8 q4 E8 B2 b8 ~
  1232. INX
    ; t6 r+ h9 e6 l7 R5 u( K& \  f
  1233. Time_Show_H8 L  b5 d# C3 U' t+ U: A
  1234. LDA <Time_H- B3 f  k0 E" s: J8 J! L4 [
  1235. JSR HEX_To_Dec' i  X& W; W5 A1 L; ?5 m
  1236. JSR Time_Digit1 G' r. m' ]; f
  1237. LDA #':'7 b5 P' s1 @  v
  1238. STA PPU_Addr,X
    % l7 u4 Q- Q# B
  1239. INX# M5 A+ p7 d, U/ V* l
  1240. Time_Show_M" A: t2 E8 a1 E& C
  1241. LDA <Time_M1 D3 ?& f7 a2 B8 M
  1242. JSR HEX_To_Dec' D6 a% O3 r! V
  1243. JSR Time_Digit7 j# H% E) D0 k$ e! Q* j
  1244. LDA #':'
    1 D- |5 N' N6 ^
  1245. STA PPU_Addr,X
    ( G$ Z- {: \/ K8 n
  1246. INX
    * B' G4 p  m4 F, y% Y2 A% q( C
  1247. Time_Show_S# ?/ c* q$ I. g% ~
  1248. LDA <Time_S
    . g4 }. `& V( @% X# Y. R# L
  1249. JSR HEX_To_Dec
    7 V) D4 s3 u) S" ~- ^3 ]+ k' _1 h7 h
  1250. JSR Time_Digit! o2 q" G6 y% l
  1251. STX PPU_Cur! a; R" X8 e3 _* `6 d/ v' S% O
  1252. Time_Show_Enable% z0 g* [" }7 L) U/ t
  1253. LDA <Text_Disable_Flag
    - A: I. V0 V& S5 ~
  1254. AND #TEXT_DISABLE_TIME ^ $FF4 E, Z, L* K' W
  1255. STA <Text_Disable_Flag% g  }2 n% _# Z8 y* {2 p
  1256. Time_Show_End
    - }9 F- U; U: ~3 F2 o, ~( T: h8 U
  1257. RTS
    ' D% F- p+ z9 [- ~

  1258.   J: T* o8 Q$ ^7 U$ i4 N
  1259. Time_Digit) b6 \3 k" o7 S. o. T$ V
  1260. LDA <DEC_T
    # ?4 U( D$ z4 e5 W/ T. ~
  1261. ORA #'0'
    5 ~9 i) T8 j" A6 v0 T6 ^( [& H0 l# p
  1262. STA PPU_Addr,X" M+ V* q- I: V: }/ u6 G: D
  1263. INX
    ' x6 p& x5 w5 L: B/ C! X4 b
  1264. LDA <DEC_L
      g3 k2 z0 Z  H* N% W
  1265. ORA #'0'
    : j7 B0 P) C. g% s- q: s$ ^& h1 e
  1266. STA PPU_Addr,X
    , R/ ?" U) J& R' {7 M
  1267. INX
    ) \' U; H$ B, g' b, l3 {
  1268. RTS
    / K& j/ M, J% p  f- |$ r

  1269. 6 @2 J7 N  G. @! p1 _8 G
  1270. ;==============================: D' W. h" g* x9 s/ A
  1271. Time_Count;计时3 g* z  Y: D5 e8 w/ c
  1272. LDA <Music_Stop_State
    9 |! w, I: K, M4 E& k; `. E+ Y8 y
  1273. ORA <Time_Wait_Cnt  u6 |1 t4 {% Y0 P6 T3 b. ]
  1274. BNE Time_Count_End
    ' Z0 a( Q% ]$ Y, h8 |
  1275. INC <Time_Cnt
    4 }% O( Z4 F# a3 d+ o
  1276. LDA <Time_Cnt, r" _  }; u7 m* U, a  E
  1277. CMP #60
    ) h% w( t0 H" d2 |' s+ u. G
  1278. BCC Time_Count_End
    ) O- B( B+ f9 \  p4 m) Q- q0 ^
  1279. LDA #002 c* g3 A. n$ [
  1280. STA <Time_Cnt
    8 o9 j) v7 S1 ^) ~% }
  1281. INC <Time_S2 T6 `2 c4 Y/ Q  X, {. o/ L  H! }
  1282. : E8 U& m7 M( z& x
  1283. Time_S_Cnt
    * t5 e" |$ }! [7 W0 T
  1284. LDA <Time_S
    % a$ @* `) e( m3 O  R) C
  1285. CMP #60
    ) L& g3 h5 {. c  ?7 R, u( q. ?. S
  1286. BCC Time_Count_End! j5 o% u+ H7 L  Z1 L$ @) s
  1287. LDA #00) s* X& Y6 D! V$ T* d3 A1 v5 Q
  1288. STA <Time_S
    . y! F: L5 @$ s- K3 y
  1289. INC <Time_M, R; [  |- `/ E2 C& l1 ]4 G; m; B

  1290. 6 V6 a8 o$ D  y, p1 _! W) X. R# M
  1291. Time_M_Cnt
    " l5 j0 A, y  L$ D
  1292. LDA <Time_M
    5 y6 [* Y, k; P) O/ }( ]; K# z( R' b
  1293. CMP #60
    ) Z9 G9 {: f- U3 U" F
  1294. BCC Time_Count_End2 N4 n4 M4 B& z
  1295. LDA #00
    " z" o( ?" N5 |; o8 T% M% T
  1296. STA <Time_M/ b* u" R- Z% T, ]
  1297. INC <Time_H" G: t. J' ~; Q2 Z8 B1 m" a
  1298. 2 u$ B  ]) l! {# |
  1299. Time_H_Cnt( A6 }5 |% y1 N7 U) @
  1300. LDA <Time_H4 ~6 \: o7 _: }. z  z0 l' x. S0 X
  1301. CMP #247 e" ?- O5 o( Y$ c5 D
  1302. BCC Time_Count_End
    8 g; H0 H, b+ W+ p8 ]5 H2 l
  1303. LDA #00
    1 N; }6 w: P+ g
  1304. STA <Time_H, Q6 a1 _' ]1 P/ }/ w4 x
  1305. 6 P. _' [+ q& g6 Q/ _
  1306. Time_Count_End
    0 l" Y* G* ]* R2 i/ v) [
  1307. RTS6 ?$ I6 v/ H* u9 x' m, B" A' H

  1308. 2 f! ^: n2 b0 S; B
  1309. ;==============================
    / N) X* T9 y, i+ ~% R% P
  1310. Time_ReSet;播放时间重置
    , A* }5 z8 m) A1 l
  1311. LDA #$00
    8 b5 H; v! v7 W, v
  1312. STA <Time_S0 R  W" h( \3 ]3 k# V" T1 \
  1313. STA <Time_M 9 }) P8 g5 Y/ W0 ]# C, i, `- c, R
  1314. STA <Time_H
    + c  P) a  P# h* A- T, g
  1315. STA <Time_Cnt3 m- o$ i6 C6 K1 Q& V
  1316. RTS
    $ X; {- e2 |( l6 N1 R% ]' d
  1317. 9 X2 d  ?1 Y' |) {' d6 ^
  1318. ;==============================; X7 X8 D$ m6 {  y! i& R, f3 i! y
  1319. Music_Bar_ReSet;音乐条重置
    : Q6 N1 {* w# C, S& M* P- y
  1320. LDA #$00, I5 y6 j% y) }( E
  1321. LDX #$00( G: P( X7 E' }. _' h
  1322. Music_Bar_ReSet_Set$ f& @' `8 e! U: {
  1323. STA Sound_Bar,X) G6 L  V! p1 y
  1324. INX, s3 @. F$ G  j3 c  w
  1325. CPX #$10
    - b. v5 Q0 q. F- X2 H( X2 ~3 T
  1326. BCC Music_Bar_ReSet_Set/ i/ G- z* K* b
  1327. RTS
    7 D3 @+ p( p  S, b+ |# r1 u" X+ D+ _

  1328. / n& V- R  d: M' C  h/ u
  1329. ;==============================' s$ b4 y9 B3 L$ A9 s& V
  1330. PPU_Data;PPU数据写入" \3 Q/ V- c% z5 u% Y! p9 J
  1331. STY <Data_L! g# U2 @+ d& \" i
  1332. STX <Data_H: @: |" k7 B8 [  s5 U
  1333. LDY #$FF; I2 T1 S8 B+ S, E3 \7 j# Q5 z  ^
  1334. LDX PPU_Cur+ S8 a0 w" Z+ N$ `3 q
  1335. DEX! k8 L/ n6 S1 l) Q  V
  1336. PPU_Data_Beg5 ^2 r1 x& p3 k/ k4 `" \
  1337. INX
    ( ]5 j/ d  F& c  B3 ~/ d
  1338. INY2 n5 ?+ t1 e8 d! b/ _7 ?* a8 n' X
  1339. LDA [Data_L],Y$ l: M: Y5 ?9 W7 G4 @
  1340. STA PPU_Addr,X
    3 V, _) p; @% w1 t% J* U( ]% k: f
  1341. BNE PPU_Data_Beg
    9 }4 t  q+ y' T9 w, C
  1342. STX PPU_Cur
    + e$ h7 y7 @" v- ~* u# L
  1343. PPU_Data_End
    - ]5 N3 U+ v, A: z/ d2 Q
  1344. RTS5 f* w9 x' Z: ?/ q/ u5 }
  1345. # W4 n$ [. I0 e2 G" {4 x
  1346. ;==============================
    1 c8 `: o5 L# G6 _6 G3 Y
  1347. Music_State_Show;播放状态显示
    + J" Z3 g! I; \  I
  1348. LDA <Music_Stop_State
    + f2 w( P) X1 b( H+ ^5 t
  1349. BEQ Music_State_Show_Play( ]) v% F- M3 L
  1350. Music_State_Show_Stop9 i4 L; T( H' V. s+ F$ Q: A/ v6 X
  1351. LDY #LOW(Music_State_Stop)
    3 T& F1 c9 O9 W7 w
  1352. LDX #HIGH(Music_State_Stop)" A2 l+ f( H& Y* ~/ A, i8 Z
  1353. JSR PPU_Data
    8 |' R. A$ i6 [0 t7 r
  1354. RTS
    " v/ H. y9 v# M8 ]. z3 u$ k" x
  1355. Music_State_Show_Play( X2 P; p& o! P
  1356. LDY #LOW(Music_State_Play)
    ; }+ Q$ K0 R( u4 \3 T
  1357. LDX #HIGH(Music_State_Play)
    . s4 [! d2 _2 Z2 J. s# m& w5 R  c
  1358. JSR PPU_Data2 N( _' D/ V$ P' ~
  1359. RTS# R7 Y6 e+ ~- y- `+ A. T

  1360. " ?  ^" S+ _2 o8 j% Z4 n% V# C3 j
  1361. .IF SOUND_BAR_SHOW_ENABLE
    ! q: j( E* c7 m+ z" p( D( D
  1362. ;==============================7 y. F7 V5 M- |- R
  1363. Sound_Bar_Text_Set;标题与音乐条初始化1 [- Q- h/ g9 f1 a) P( F3 K8 Y
  1364. LDY #LOW(Sound_Bar_Text_Data)
    8 @2 z$ d& ?; d5 d  D2 J9 i  H" {
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    ( q5 c) b9 i+ i1 d3 K# b" }; _5 F
  1366. JSR PPU_Data
    & X) w9 I! ~3 f: {' x3 T! i
  1367. RTS/ @% m9 F5 D5 ~, ]# h. P# O. l

  1368. 9 l2 G% ?# k. K8 @: X
  1369. .ENDIF2 |7 s! X# z1 O" Y% u+ b) o9 r
  1370. 6 R% v5 u+ R. v1 L
  1371. ;==============================& P9 Z! `0 V3 X5 @' ?
  1372. Set_NameTable_Attributes;设置命名表属性  e4 @3 G  q/ O
  1373. BIT PPU_STATUS- f) |' A4 O8 A1 h/ Q$ d
  1374. LDA #$23
    4 R% s' H7 j0 f9 Z
  1375. STA PPU_ADDRESS( D6 W1 C. P# x' y
  1376. LDA #$C08 B# G  F/ P6 w, j. o
  1377. STA PPU_ADDRESS6 v7 I- Y. D% ^' g) X* j
  1378. LDX #$00
    : O6 L$ Z# M" ~9 M; D* T" q
  1379. Set_NameTable_Attributes_Write
    - B4 P# I6 f  T5 l  F" `/ M; {9 B
  1380. LDA Palette_Attributes,X
    & R* V: a6 u) H/ F
  1381. STA PPU_DATA
    + X1 T+ h- l! r0 U1 |5 P3 \2 |
  1382. INX
    + z1 B4 Y* n# k& E  g' ]6 D' C
  1383. CPX #$40; ~; W, z5 t, r" [
  1384. BCC Set_NameTable_Attributes_Write" f4 n, i$ u) a1 g4 u5 N4 E
  1385. RTS) C4 }# m" v& b' K  q4 u" p
  1386. 4 ?+ ~, p4 e- O: i* _3 a
  1387. ;==============================
    * e+ t+ U9 L; E% c: A* f& o
  1388. Set_Palette_Color;设置调色板数据- u6 i4 J, G- e- X; p
  1389. BIT PPU_STATUS) ]/ m% k. i, {2 C
  1390. LDA #$3F
    ! D+ M& s7 ?4 M) k
  1391. STA PPU_ADDRESS
    & R# x( f, W5 {7 J
  1392. LDA #$00( U/ C4 t% |7 Y9 ]6 _( b
  1393. STA PPU_ADDRESS
    ; H. L( O/ T2 i
  1394. LDX #$00
    , r" K- C4 d& Y
  1395. Set_Palette_Color_Write5 ?8 f7 J7 b6 t" Z. G' `- |
  1396. LDA Palette_Data,X9 a5 @& I* F1 x) ^
  1397. STA PPU_DATA
    1 E. g7 h, d* B/ F  Z& v: ^# [
  1398. INX
    ( d, c2 l$ ]1 I( }/ L8 ]
  1399. CPX #$204 G. @! |' h( }0 |( \
  1400. BCC Set_Palette_Color_Write
    : Y# J( {9 }6 p9 M  A
  1401. RTS
    ) W+ B) K/ W8 r2 G1 ~+ p) a. ~
  1402. ( s: R4 N1 w1 s" Y  A
  1403. ;==============================
    ' e  y* M* f. I7 L. A. S
  1404. Init_Palette_Addr;初始化调色板数据  u- g; D+ \* Q. }. o* s0 O
  1405. LDX #$00' E! O, u2 W- ~; T) B
  1406. Init_Palette_Addr_Write
    7 M, M' S0 D& K
  1407. LDA Palette_Data,X
    $ w, q6 M! i* r2 t* M. f6 o5 r
  1408. STA Palette_Addr,X5 K8 S, I% B# ?0 A
  1409. INX
    " X. h/ G7 N* B, p
  1410. CPX #$20
      J- t# H" v" G/ p' Q
  1411. BCC Init_Palette_Addr_Write
    9 r9 B2 ]9 V% Q) t' [/ j
  1412. RTS9 N* O9 P+ n- L% a( H! m! C
  1413. 9 k) b$ M. e* O$ O/ `$ a
  1414. ;==============================( `6 o8 E; b; ~. [
  1415. Update_Palette_Color;更新调色板颜色
    ; d- S2 z+ g6 z- T
  1416. LDA <Palette_Update_Flag
    : R7 M/ Y# ~& S% S( |* {, {% p
  1417. BEQ Update_Palette_Color_End9 l! ~! n0 K8 U8 z$ X1 h5 \
  1418. LDA #$3F
    3 E7 o1 U! y* f$ P3 z
  1419. STA PPU_ADDRESS: d1 a  `  P4 ^* [
  1420. LDA #$0C3 H) h/ f7 T# J7 O- Z" l; \
  1421. STA PPU_ADDRESS6 V: T1 P, s% p2 T- s/ _: P' [
  1422. LDX #$0C6 A3 d& F3 B* h, B! C. r: u. Z
  1423. Update_Palette_Color_Write
    + M+ T) i- H$ j  H: K" v* k* ~5 C: b
  1424. LDA Palette_Addr,X
    0 j3 q3 L2 k4 m
  1425. STA PPU_DATA5 j4 l. [6 j, t
  1426. INX5 G) V4 W  |3 h% I! V+ Q! o  S0 U
  1427. CPX #$14
    ( g! D4 {+ U. ^1 j7 i  U
  1428. BCC Update_Palette_Color_Write6 q3 I! t8 M7 E2 M; L# U
  1429. LDA #$00
    5 |* x9 C0 |: y0 A0 ~( W. y0 E
  1430. STA <Palette_Update_Flag3 R8 q' ?; x5 Z6 Z" F3 M: F
  1431. Update_Palette_Color_End
    6 F, V) N* N* h
  1432. RTS
    6 i* b( P* G! }' a. G2 e' l" }

  1433. . W- _/ k: |6 u0 }; m1 C) }
  1434. : p) o9 E5 y+ j4 H% V
  1435. Update_Sprite_Palette_Data' e( w4 A8 \" c; Q' R7 s$ A- P
  1436. .DB $21# [# ~2 I2 l/ H! e* @
  1437. .DB $21
    0 [) Z/ g; x" c9 a
  1438. .DB $115 g6 W5 a$ M  Q* j  o6 _
  1439. .DB $010 J& o  }' n& n0 h" P  x
  1440. .DB $01
    0 y, }! |3 A8 Y: i( H: x4 m% C
  1441. .DB $11, @( a5 m) J* d! W- p
  1442. .DB $21
    9 h# {1 \+ V- r* @
  1443. .DB $21
    ( T- r9 W% K& \  R- F2 m+ M
  1444. .DB $11
    . V  P; N  K, `& p
  1445. .DB $01
    1 f; i7 N+ s( S% ?  q* K) S7 M9 L
  1446. .DB $11
    + ~8 [  U9 n3 S/ R* _) x" l0 r
  1447. .DB $21
    6 w) A7 _0 k0 \9 T0 I% F% t
  1448. .DB $217 V! a1 }) \8 b4 S+ w' z. i" `
  1449. .DB $11; [# q7 a) \+ q* G$ ^
  1450. .DB $01
    4 Z5 {3 n1 o/ _' i& v# R$ L
  1451. .DB $11
    4 {& u- X+ d8 h2 d+ ^6 B/ }
  1452. ;==============================3 Y. s# M" v# ]' Q2 t( ^6 }. A
  1453. Update_Palette_Data;更新调色板数据
    3 R, ~! e' v; l, \, _( i
  1454. LDA Nmi_Time_Count
    " E. S9 x# }9 ~( I( R
  1455. AND #$08' M+ c) ^6 y+ Z
  1456. CMP #$08
    5 i* Q; H+ i7 n' `
  1457. BNE Update_Bkg_Palette_Data
    ! K$ ?9 h0 S- g% u+ I# S/ M) c% |

  1458. & J* E- R" _" n( \. [% |6 {9 g
  1459. Update_Sprite_Palette_Data_Set
    4 h/ L) R  I3 X1 M$ d. x5 W6 g
  1460. LDA Nmi_Time_Count
    : t- N7 s' ?( [) X
  1461. LSR A
    7 D- i1 Q7 _5 A; L5 D& e
  1462. LSR A
    . h- e, v) O3 H; O/ k- H
  1463. LSR A
    6 O" F' O( A/ B) _
  1464. LSR A
    % @* J% N- a* Q8 I3 a: k
  1465. AND #$0F) g9 k" Z. C; d, C( l
  1466. TAX2 V8 t1 W, o  i/ X* y' p' J6 ?
  1467. LDA Update_Sprite_Palette_Data,X
    - F1 ?8 g9 O3 K$ F% p9 r& v
  1468. STA Sprite_Palette_Update_Addr, }, ~6 U0 s1 ?; s4 W# P* X
  1469. LDA #$012 ?( k' D7 ]) m9 a6 f& ]7 [
  1470. STA <Palette_Update_Flag
    . S; [$ K2 \: z$ u
  1471. 3 h  S! c9 d2 A% \' L9 J$ O3 m
  1472. Update_Bkg_Palette_Data
    * e) m: a: S! z" o  A3 u
  1473. LDA <Text_Disable_Flag" J) Y& N- E5 U* w
  1474. AND #TEXT_DISABLE_RAM
    4 @' z! G) R- g+ j" d. g0 m0 v
  1475. BNE Update_Palette_Data_End
    5 E2 V/ z8 F$ }. q  p, r* D
  1476. LDA <Music_Stop_State, b) C* j5 @, ^- s; ?
  1477. BNE Update_Palette_Data_End
    ; g" s7 n) U& L* k" M; S/ }9 w
  1478. . B- Y; A( b7 u6 v0 a5 A
  1479. Update_Palette_Data_Check
    + H/ J3 A1 b9 T' n+ u# N( h/ [5 F
  1480. LDA Palette_Wait_Cnt0 h  [% T) S# D7 t" g6 P
  1481. BPL Update_Palette_Data_Check_Over3 J. P) p. k8 b; ~$ W' \2 M+ G' h
  1482. LDA #PALETTE_UPDATE_INTERVAL
    + \2 i, h0 ?4 ]! n
  1483. STA Palette_Wait_Cnt% `; c$ @+ D" V0 F( y
  1484. Update_Palette_Data_Check_Over* E. ]3 y( W  B- l
  1485. DEC Palette_Wait_Cnt
    & Q- d. {0 x; J# v  Y$ R
  1486. BNE Update_Palette_Data_End; y* X8 q3 b% o) @6 u1 f

  1487. 8 R! x( ]+ `/ J! h1 M
  1488. LDA <Text_Disable_Flag
    ) e& s) z% `& V. I; K8 F1 I4 a3 a
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    7 E7 y* l) ^9 Q$ s9 B+ s- M" k# W
  1490. STA Text_Disable_Flag
    9 L. V+ B: o/ f
  1491. INC Palette_Update_Flag
    ' _3 `' x( I( Y* D5 Y* G
  1492. 1 [1 f) B! |7 \1 i
  1493. LDA #PALETTE_UPDATE_INTERVAL
    & s+ q9 m7 m* P0 d" t* M
  1494. STA Palette_Wait_Cnt
    1 N7 K4 l, x. h* u

  1495. 8 R5 M8 w6 K) `; P; H
  1496. LDA Bkg_Palette_Update_Addr
    / @& \7 p0 ?8 Y
  1497. CMP #PALETTE_UPDATE_MAX
    ! G: P4 Q$ |7 G. K" l
  1498. BNE Update_Bkg_Palette_Data_Set* w  ]* v/ U* T. ^
  1499. LDA #PALETTE_UPDATE_MIN - 17 L3 e7 G. Z# S
  1500. STA Bkg_Palette_Update_Addr
    & B0 N. @* b, Q$ e8 }
  1501. Update_Bkg_Palette_Data_Set
    ) p8 U% }7 L: `% \. C
  1502. INC Bkg_Palette_Update_Addr  g4 d. x) I0 A7 a9 w( r
  1503. & W: ]6 Y1 ~  n$ t* r' D% E4 v; W
  1504. Update_Palette_Data_End
    " k0 b! V4 {# K+ @  o. Y
  1505. RTS
      m% x0 F0 ?8 N+ w
  1506. + q) k- M: p2 k
  1507. ;==============================, U& s4 {2 [8 s8 }- K, ?, \
  1508. Show_Music_Text;显示静态文本
    ( g% L# s$ d4 T2 \4 `
  1509. LDX #$003 u( N4 i" K* a7 r0 U  m' ?* V
  1510. Show_Music_Text_Set
    ; L" ?9 E5 n1 _) t# p
  1511. LDA Static_Text_Data,X" ]+ m4 A5 ]1 q, T  v4 ]  R; C
  1512. STA <Data_L
    ' W8 U/ V7 k+ w+ d  z* N. L
  1513. INX
    - G' w* G' _2 c( {( K- E+ E3 j: _  h
  1514. LDA Static_Text_Data,X
    3 [! P. O+ R( O3 L* I
  1515. STA <Data_H5 b6 @. D# q5 O9 Q
  1516. INX
    " s7 v+ D/ D2 J
  1517. LDY #$000 @4 ^  I2 ^1 {  e- n5 H- f7 c
  1518. LDA [Data_L],Y4 P6 J9 z5 f! }; o) ^- L
  1519. STA <Data_Cnt
    ) ~; V) h# h& ~% F8 p4 P
  1520. DEX
    ; N& }! W) j0 M0 ?
  1521. DEX) _: f0 G* p, ~3 N6 K
  1522. LDA Static_Text_Pos,X' a, T' X0 j' k# x' X) f: I
  1523. STA PPU_ADDRESS+ y  Q* T5 y$ A4 u
  1524. INX
    1 W+ o2 S1 t& t5 f# m
  1525. LDA #$20# E1 @6 J4 D0 n0 f. p7 R% [
  1526. SEC+ \& F1 v% |& y
  1527. SBC <Data_Cnt; x: M& A  w9 J- O+ B+ A
  1528. LSR A
    7 L" T& L" F: ~  l$ y8 Z
  1529. STA <Data_Buf) v9 ~' T+ t6 {' b- B* ^; i" Z
  1530. LDA Static_Text_Pos,X
    * Q/ l$ \. W& z2 W0 z
  1531. AND #$E01 {" V: x0 e8 |" j- E( p
  1532. CLC
    3 Q- ~8 ]$ h8 S+ W
  1533. ADC <Data_Buf
    0 K/ x1 D, A9 l( ^
  1534. STA PPU_ADDRESS. O0 |( ]# h, N5 y8 h' q
  1535. INX
    " M0 N1 ?: E( ?# e
  1536. Show_Music_Text_Set_Write
    5 [6 Q3 a+ ^6 C' z& Z' @* O
  1537. INY/ U9 o3 k# J$ l5 i3 @$ m
  1538. LDA [Data_L],Y
    - W& Y  ]$ b* x, |4 h% N( v1 n
  1539. STA PPU_DATA, s2 P! ]" G* W; l' f$ _4 J" u
  1540. DEC <Data_Cnt- B/ M: m8 V) b8 O+ n+ p* S
  1541. BNE Show_Music_Text_Set_Write
    1 @# B2 u( N/ J6 ~+ I: u0 W2 l! Y
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos! P# o- {' a! ~4 S
  1543. BCC Show_Music_Text_Set6 U+ @# B) s9 p
  1544. RTS" |# R  n) b$ y/ Q% o2 p

  1545. 5 {* |0 Z/ d) T6 z+ F4 ]
  1546. ;==============================
    & m& {; G: q% A, i
  1547. .IF Track_Name_Pos;显示曲目信息$ p( N, J: |- {5 T: l$ `6 g! v  Y
  1548. ! O+ x& c4 b+ ]& B3 K) n
  1549. Clear_Track_Info
    0 Z" V; |) B! H2 j  ?  s9 f
  1550. PHA
    . }- e& {3 I. |6 r' I% p
  1551. LDX <Music_Item_Cur* y3 _! X$ ]6 H
  1552. LDA Track_Name_Addr_Flag,X- E! F  W8 w3 N5 i2 [$ ]
  1553. BEQ Clear_Track_Info_End_Ex. [1 d- e) u7 ?* _- V( }7 f
  1554. PLA
    9 w; G, V8 `# i9 N3 i. W  o  d

  1555. ' [  L% o' N% l9 ~
  1556. LDX PPU_Cur
    & K. G4 p4 u5 g4 f) r1 c
  1557. PHA8 J% Z/ N4 }* T) g# L4 V
  1558. LDA #PPU_MODE_CNT_CLEAR0 \* R4 t! j3 _  f1 ]+ }* j/ h# Y7 f
  1559. STA PPU_Addr,X
    % }( z3 [- \. Z7 S6 h
  1560. INX2 h0 t# V( z  q8 I8 a# ]
  1561. PLA
    : j& z/ u7 ?% S
  1562. JSR Show_Get_Track_Name_Center_Pos% t! ], l* K7 f9 s8 N
  1563. STX PPU_Cur
    6 \: x7 D; N0 G/ P; d
  1564. Clear_Track_Info_End
    & ~) e8 ^5 l# Y; X
  1565. RTS
    + S& q4 S  C* G( Y
  1566. Clear_Track_Info_End_Ex+ ]; f% ?9 Q; a6 ^. I
  1567. PLA
    ; G3 I/ o8 l* A* i+ S) B+ f
  1568. RTS) P; |; p: c$ J2 J& j* a

  1569. % b6 T" L$ K/ w, [( {5 v
  1570. Write_Track_Info
      U9 `" q* i5 [, b' C  i1 E
  1571. PHA
    : f; j7 v- }% L( |, s, J
  1572. LDX <Music_Item_Cur, D/ Z* x  A8 V4 N# g
  1573. LDA Track_Name_Addr_Flag,X6 V+ ]( j% U$ H# A
  1574. BEQ Write_Track_Info_End_Ex! c9 F% i4 Q, ^" B( T. ]: D* d* ?( N
  1575. PLA
    % D, e/ P% {! I; t

  1576. ' R7 l- n! B1 I, e' g5 l. u( j+ a8 o) j
  1577. PHA/ n( u" c& ~% e, @! J( T2 h/ ^
  1578. LDX PPU_Cur
    ( V, F' d# i) \" F. |6 h+ M4 u
  1579. LDA #PPU_MODE_CNT_LINE, U6 X) O. d& `
  1580. STA PPU_Addr,X
    1 b- ~$ x7 Y. [' k4 `2 B0 _! W
  1581. INX
      j* A3 C- Z4 v# ~
  1582. PLA+ b, y0 F8 Q1 v# k& y5 Y- P6 b
  1583. JSR Show_Get_Track_Name_Center_Pos8 b: J. y7 ?: k, {) s
  1584. Write_Track_Info_Data
    2 ]( s4 G1 D- k/ Q9 W5 x0 x. l7 F
  1585. INY
    6 e- Z7 j8 ^( k7 j
  1586. LDA [Data_L],Y  y& P% x8 e5 Z  V# Z0 s6 ]
  1587. STA PPU_Addr,X
    8 m8 {& @0 m; U7 E8 R
  1588. INX
    ! A/ n% n0 D# W( \  i3 Z5 V1 L; j
  1589. DEC <Data_Cnt
    3 A+ N: r- l1 P9 M6 ?
  1590. BNE Write_Track_Info_Data
    8 E3 ?$ f4 ~1 o* _7 N
  1591. STX PPU_Cur( c7 I: z# L/ Z
  1592. Write_Track_Info_End
    9 M- M/ u' V) @% |: k) J) m
  1593. RTS
    . g5 v) u8 k6 f5 ?4 ^
  1594. Write_Track_Info_End_Ex1 g  n" ]! l; n
  1595. PLA% t$ K2 b9 j. y/ j+ @/ b1 ~2 |: [! ?5 V
  1596. RTS, x5 e& Y$ Y7 O% q% e) [3 _9 y, C0 Y
  1597. 9 q: J/ C7 L9 X3 `1 w
  1598. Show_Track_Info
    6 w0 ~. k4 P  K( l. c- B
  1599. Show_Track_Info_Clear
    ! J. }2 ~1 e! ~0 B, v/ [
  1600. LDA <Music_Last, ^4 X. ?) I% z" g; s
  1601. % b, D7 J5 n2 ?; j. s; Y
  1602. JSR Clear_Track_Info- f/ R) ]2 M" R
  1603. 5 ?5 f6 k5 j, `1 k; E
  1604. LDX <Music_Item_Cur6 F2 R: v( y$ t" `& G- j, k
  1605. LDA <Music_Cur,X
    8 U6 o' I# L9 V( ?% l' j' o
  1606. JSR Write_Track_Info
    7 B3 X. l0 }9 H% n4 W% ~
  1607. RTS2 Q* F7 s- i7 W7 D$ P+ T* T

  1608. " D; x) X" d6 \1 q4 q
  1609. ;==============================+ E8 k% U% a0 Q" F$ v8 }
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置" ]+ N4 j5 L* K. J+ J

  1611. 9 e8 t% k5 J. x& {& A* O9 q
  1612. ;取出集合名索引
    5 x* d, r2 m8 k+ C2 ~
  1613. PHA
    6 o. Z- Y- i2 j* ^& o

  1614. - @- n2 m2 W; s% A  S, z
  1615. LDA <Music_Item_Cur
    1 r' X6 ?+ Y% h
  1616. ASL A6 n6 b3 g7 d, G0 i- P) G5 s- b: U
  1617. TAY
    # o) ~4 p- ^$ ?8 E- k* _9 s2 w5 f
  1618. LDA Track_Name_Addr_Port,Y5 D$ q- ]+ l# }+ o& o9 m1 ?0 C& o+ ?
  1619. PHA4 D3 ]6 W  `' @0 E+ \8 u
  1620. INY* q2 X! p/ \2 w5 F* M; s
  1621. LDA Track_Name_Addr_Port,Y
    8 n0 n$ w7 c; Z2 n
  1622. STA <Data_H
    # q' v) J# b7 P( o! F
  1623. PLA: d$ L) Y) M, q9 f! T+ T' R
  1624. STA <Data_L: ]( `# D: k+ }% O* l, @0 ]

  1625. * B! q7 _$ T3 `! ~! z# ^( {! E; O
  1626. PLA
    3 {  Y3 @/ E  S. F3 V: \2 M- y

  1627. % ?6 _; n" k& ]5 Y
  1628. ASL A
    " z$ Q$ B# Y9 n9 K9 l. Q$ O
  1629. TAY
    ) ?- L" X0 z5 B6 `: \9 @1 I
  1630. LDA [Data_L],Y& y4 N5 z3 S" a
  1631. PHA( e  L# ~, w6 Y" ]& y
  1632. INY
    4 F/ S( {5 u$ f! W( W& [
  1633. LDA [Data_L],Y! X  j& e3 z- F. {- }- S
  1634. STA Data_H
    4 P. C: E. ?5 i4 B8 |" q
  1635. PLA# E8 }! C$ \, I" u7 E0 |
  1636. STA Data_L8 x) h$ T0 g- e, R) G% x

  1637.   y1 g. ~( x& T. c5 w/ b
  1638. LDY #$00
    * r0 S0 }3 H5 j. C2 H& t3 s% `3 c
  1639. LDA [Data_L],Y$ q/ n  D: ~* H) m7 o
  1640. STA <Data_Cnt2 }8 l7 R  R- t1 D/ c+ y
  1641. LDA #$20; p1 k& m& C. k( i8 b" i
  1642. SEC9 Y7 }! o4 j* G: {5 m
  1643. SBC <Data_Cnt
    1 e+ x/ o# i: F
  1644. LSR A
    % U) C- [9 x  e; m' Z: `% x1 ]' _
  1645. STA <Data_Buf
    5 a0 `% r: g" S5 ^* K
  1646. LDA #HIGH(Track_Name_Pos)3 M  S7 N& f, Y# F1 k
  1647. STA PPU_Addr,X
    + i. Q9 P. i3 \
  1648. INX. D  X. {% P9 y4 f
  1649. LDA #LOW(Track_Name_Pos)
    6 `7 U! I3 d+ o6 j
  1650. AND #$E0: ?& i4 S& n9 v- p3 I4 b( C' i  O
  1651. CLC
    $ Q' b# e& E' T: {4 O2 @% q; |
  1652. ADC <Data_Buf. T- Q+ u5 `& f3 V0 X
  1653. STA PPU_Addr,X
    & ~# T( ?5 `" w/ A$ j1 a8 a7 Y
  1654. INX* Z1 L, u0 N$ Z4 @( L+ X3 l
  1655. LDA <Data_Cnt
    ( H  @! B# w7 e6 i% E3 b
  1656. STA PPU_Addr,X6 y) _1 Q8 q1 Q+ A, `
  1657. INX
    * G) Q/ o; K4 D6 W% {) M
  1658. Show_Get_Pos_Center_End
    6 ]8 G1 f3 x" X1 A: A- E$ x
  1659. RTS, b; z' ^5 X2 x0 a1 p& J
  1660. .ENDIF% o! g4 U/ S2 I+ _  O* h* e9 _- f

  1661. # u+ y9 l+ c5 w% o$ A" C% P7 O: t. J
  1662. ;==============================
    ! }$ n4 d/ x- c  n
  1663. ;音乐端口清除5 [& g% P, g. p' J
  1664. Sound_Data_Clear
    0 N+ T+ U2 i, A
  1665. JSR Sound_Port_Clear
    7 K/ o4 E8 m+ k& x6 k
  1666. JSR Sound_Ram_Clear& L3 F0 F' U; Y. y& Y( i- Y: Z, l
  1667. RTS
    * g0 W  i5 K, A1 ~( N( k
  1668. : ~+ z' h% H( C0 f, Y% O: w% Q
  1669. ;==============================
    # t7 _. O! Y3 u
  1670. ;音乐端口清除4 C- O/ R: _: C. c' K/ S
  1671. Sound_Port_Clear
    9 z( C9 W5 K' Y% r9 C
  1672. LDA #$00% W9 y5 [) ~. M, ]: b; c& A
  1673. STA APU_STATUS
    + ^* G3 k, u+ k, U% w, Z2 ~' R
  1674. LDX #$00
    9 {3 U# o8 I, O* b
  1675. Sound_Port_Clear_Write
    / s2 W: i) z; ^% Y9 g; A
  1676. STA $4000,X8 z6 h0 u% M+ H; g
  1677. INX
    ! L( C6 H+ `( O6 {. l0 L
  1678. CPX #$14( n9 {: [2 @2 @
  1679. BCC Sound_Port_Clear_Write1 V" {$ D7 X$ F7 c
  1680. RTS
    5 D% P/ G5 U2 X
  1681. + [4 N+ {% t: S5 s; h
  1682. ;==============================5 S8 J' T( d' O
  1683. Sound_Ram_Clear;RAM清除0 I2 L: f% D( D1 o6 d
  1684. LDX #$00
      B/ y. c2 I+ L$ A
  1685. LDA #$00. c- b5 b4 a' B6 ^5 v( w
  1686. Sound_Ram_Clear_1
    $ z1 j0 b- T8 r0 x8 i7 f
  1687. STA Sound_Ram_Addr_1,X8 Y+ B; o- S4 A7 H4 S: P0 D* i
  1688. INX% i, T4 J8 f7 y
  1689. CPX #Sound_Ram_Addr_1_Size
    7 t: ~$ M4 T: `  U: |
  1690. BNE Sound_Ram_Clear_1
    - C' D  e" }% J- n% ^6 A) O
  1691. LDX #$00
    1 f( T% J0 q& _6 H9 c  q7 A( |4 ^
  1692. Sound_Ram_Clear_2
    ( R+ r7 q: L) F" L; {9 ~7 ?! Z
  1693. STA Sound_Ram_Addr_2,X) _# Q- p4 W7 b2 i
  1694. INX( f9 h! z7 p0 ^% D
  1695. CPX #Sound_Ram_Addr_2_Size
    . |8 u, a1 h' v! o4 b3 z
  1696. BNE Sound_Ram_Clear_2
    2 J: v* r5 i! H9 J% n
  1697. LDX #$00
    - ?- @8 r; y) _( I
  1698. Sound_Ram_Clear_3" A) ^# `! T# P  v
  1699. STA Sound_Ram_Addr_3,X3 \+ O3 u. X; _2 D
  1700. INX
    2 Z9 A% o4 x+ m9 X3 i; Q
  1701. CPX #Sound_Ram_Addr_3_Size5 K/ u8 N9 P( @: r) {7 a, y
  1702. BNE Sound_Ram_Clear_3% d# r4 c: w# ~& S- ^5 W/ x8 B
  1703. LDX #$00
    7 g  Q/ e* l' F( t9 T$ c; f* }
  1704. Sound_Ram_Clear_4
    1 u/ U: \( c$ D- u
  1705. STA Sound_Ram_Addr_4,X
    ! |5 k# y* d; M7 s/ n( j
  1706. INX4 \2 }* ]/ X" l1 W
  1707. CPX #Sound_Ram_Addr_4_Size
    # X! r  G3 k- L- X
  1708. BNE Sound_Ram_Clear_4
    * T; Z- P, H1 J8 z
  1709. Sound_Ram_Clear_5
    4 v3 p. m0 v0 \7 o! p
  1710. STA Sound_Ram_Addr_5,X
    - Q' R5 r  b% v+ G! e# J( B8 x
  1711. INX
    / M% R# M7 Z# s; Y/ ^: e
  1712. CPX #Sound_Ram_Addr_5_Size
    * O, O9 E! C2 @( A  O% T
  1713. BNE Sound_Ram_Clear_5
    # F" s! R7 F/ ~: J0 n
  1714. RTS' V% f/ z2 U+ r2 c+ Y  j

  1715. 6 J/ t, z5 V: r* B& ^, M
  1716. Get_Music_Collection_Name
    ( U+ U5 h& S, b# R( k, ^8 C3 X& H
  1717. PHA( \' ?0 y7 m  ]
  1718. LDA <Music_Item_Cur5 n* n* H7 f" L5 S! f# D
  1719. ASL A
    2 U: N2 b& Y. N% t" Q3 t4 h6 z1 L8 Z7 Q
  1720. TAY2 l1 Y; S3 d: j; P# m; k+ r" O) k
  1721. LDA Music_Collection_Name,Y
    " Q# M2 P2 g0 J1 y( n; U; w
  1722. STA <Data_L+ w: X0 L8 z& d% r* ~/ G4 ~
  1723. INY& t( D- W' S, n( ^) Q: ^
  1724. LDA Music_Collection_Name,Y
    4 m8 z/ q+ I' d2 V# ^% A
  1725. STA <Data_H* i- x3 \. V0 X9 C# {- p  ~" P+ X
  1726. PLA
    # Z3 ]; a1 O9 x# i  ~/ e
  1727. RTS( n" D+ Y6 T+ c* d: R8 d
  1728. . {1 d6 ?  u; o$ c3 f5 c4 }5 L' H
  1729. Set_Sound_Total
    5 D  F& ]/ y: Z/ k6 d! }
  1730. LDY <Music_Item_Cur
    0 @: _/ [$ l5 l+ k, x9 G) k
  1731. LDA Sound_Total_Port,Y
    / q$ m7 [$ Y& h
  1732. SEC
    $ s; A) O7 Z, W; a; q
  1733. SBC #$01
    0 [( N' m* M; u8 \
  1734. STA <Music_Total5 n( P# ~* \& [; S1 T4 F
  1735. RTS
    ) b! d3 L# Z" x% n) r) K

  1736. # I) x9 b8 |0 [! H/ Z$ U
  1737. Get_Sound_Start
    5 s: C9 b% y- Y& ?
  1738. LDY <Music_Item_Cur
    8 ]2 U3 B* s6 n
  1739. LDA Sound_Start_Port,Y
    ( i3 s& U. _3 A4 v5 ]
  1740. RTS6 ~! Q! z$ w% k! P6 \2 r

  1741. ' ~2 l: i8 `# v) K- C+ L0 D
  1742. Set_Sound_Init_Port1 H. u9 ]  l; ]$ S4 h. R
  1743. PHA
    3 v$ ?" G- \& e+ C
  1744. LDA #$20
    ( `+ K. O" s1 m+ m+ r2 B  z" x- w
  1745. STA <JSR_Addr_Op
    - O( Q1 L  z$ \, B1 g1 \6 q% T
  1746. LDA <Music_Item_Cur  g8 E( h2 K* V6 I6 k
  1747. ASL A
    0 y  J8 v0 i+ P/ Z5 X3 C: Q! L
  1748. TAY
    . g$ @) o6 J/ I% t! I; W  o
  1749. LDA Sound_Init_Port,Y4 a. F$ r3 m$ {1 r& m. O
  1750. STA <JSR_Addr_L8 J5 a& e! _9 g6 A
  1751. INY
    : w" J. R7 E3 p8 n1 g
  1752. LDA Sound_Init_Port,Y
    4 F/ K* T& T& F9 z3 i+ H
  1753. STA <JSR_Addr_H4 ^0 E" S2 i5 X# H% H+ o1 x6 R2 b
  1754. LDA #$60) H8 R7 `# p! e5 o5 |
  1755. STA <JSR_Addr_Rts
    ' t; D. J8 {" w( y% k/ S: n6 N- K
  1756. PLA
    & C5 i0 E5 y! w+ R! A- H  k
  1757. RTS1 J; ]8 l5 W. }" J1 H! c& F
  1758. 7 @5 s3 k6 `9 l1 y/ s( K, W
  1759. Set_Sound_Play_Port
    * R* _4 M- C7 n0 S: {. e
  1760. PHA
    * A& z8 ]0 E  `4 R
  1761. LDA #$202 U9 }2 n$ g0 V& R
  1762. STA <JSR_Addr_Op; {" q, }* d1 e. d, a/ R1 o, P4 I2 @
  1763. LDA <Music_Item_Cur
    1 D9 T: F1 D6 h1 E: ~
  1764. ASL A$ i2 B1 u2 g$ v- f4 b
  1765. TAY* Z5 W6 e7 f5 Z  E; l1 r
  1766. LDA Sound_Play_Port,Y. X) `% U2 A4 S- K* \! `
  1767. STA <JSR_Addr_L# Q& o, [. I* W6 P% Y! K
  1768. INY1 `4 V3 G; f( g) D
  1769. LDA Sound_Play_Port,Y2 N% ^/ B- n" y1 a
  1770. STA <JSR_Addr_H
    9 D. e4 S4 L7 {3 q& w
  1771. LDA #$60
    * x+ k& h" b9 y9 [/ P5 x
  1772. STA <JSR_Addr_Rts
    9 m) J5 c, X) D  s, M; x# f
  1773. PLA/ ?( s# @5 N% T
  1774. RTS' I8 p" X6 M8 p- `: S6 ]* B0 G* ^

  1775. * c- |$ e# ^( {
  1776. Set_Sound_Reset_Port! z4 D' U$ E$ o$ B( L# ~' F) P% _
  1777. PHA! o$ V! @' K1 o6 E
  1778. LDA #$20
    5 B4 C6 C. I8 W; Q$ K
  1779. STA <JSR_Addr_Op
    & Y5 x) c: L# M& M) Q: x
  1780. LDA <Music_Item_Cur4 z9 Q" H7 e7 q- R3 @
  1781. ASL A8 n: v' G( y. ~
  1782. TAY) F7 I( ?5 z6 ^
  1783. LDA Sound_Reset_Port,Y/ r2 ?" X6 @" i7 k0 R- Z. W: M
  1784. STA <JSR_Addr_L+ ~  D3 E3 f4 B& {. u" D& {
  1785. INY; D' [0 `+ W* ^+ \( @' o5 |+ g2 e% v
  1786. LDA Sound_Reset_Port,Y
    ) J  b+ K2 _- Q. b4 O
  1787. STA <JSR_Addr_H
    7 ^) v- A# b+ a- d; ~* K4 B
  1788. LDA #$60
    3 `; i+ W  d6 v: d
  1789. STA <JSR_Addr_Rts
      D- }' w/ [8 N# p: H) Q3 h  |2 m
  1790. PLA
    . ?' `2 g8 v0 V* \' q
  1791. RTS5 R! h" y9 ~" U. `7 I6 k

  1792. 3 m  S8 ^3 v' h& }* }
  1793. ;初始化音乐bank! E, N* J  B& G# k5 P  U/ }/ l# M
  1794. Init_Sound_Bank
    % x. Z  ]* a* d
  1795. LDY <Music_Item_Cur; \, O/ Z( L" L" r7 e
  1796. LDA Sound_Bank_8000,Y
    ( D/ Y9 T, ]8 D( a  g0 D; ?  r- n
  1797. STA <Music_Bank_80005 s+ j, {. M4 T  X4 ?6 x
  1798. LDY <Music_Item_Cur: Z0 \5 w1 \2 ?+ `9 r# E& ]
  1799. LDA Sound_Bank_A000,Y" {8 M, S" l# Q3 s3 A6 m
  1800. STA <Music_Bank_A000' D" F7 U! f/ G
  1801. RTS$ q% p) T4 h/ S% h: F( Z

  1802. 6 j. ~; ]# F  t4 r+ A
  1803. ;==================================================+ G% U* C/ \7 G, `
  1804. Sound_State_Reset;音乐状态重置2 i& }4 t6 f; U. X8 a, f1 ]
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    8 t% q* `4 q( x  k" h
  1806. JSR Time_ReSet             ;重置播放时间
      D# w- M, P: B: A  o, X
  1807. 9 U% R  w6 g; h% \: P$ @' J
  1808. LDA #$00. F/ H( `2 N5 V# o  c
  1809. STA <Music_Stop_State
    , S+ u% }. l# l# X& X6 p9 g' Y
  1810. JSR Music_State_Show       ;显示播放状态9 C- m' y" V9 B; G% J4 {: B
  1811. $ f8 {( y: ]# e! [0 r6 L
  1812. .IF Track_Name_Pos
    $ g, k, G- I# S7 W  P& _
  1813. JSR Show_Track_Info        ;音乐曲目名显示9 K0 T8 @) \/ M
  1814. .ENDIF# p" V3 O6 W0 L+ i
  1815. 2 c7 ?  T5 C1 b& F. P, Q% Q
  1816. RTS
      s% n( B# J) s: m4 A, y

  1817. ' G4 d! k3 y/ `, R( e
  1818. ;==================================================
    0 J" I, m  p/ }: i
  1819. Sound_Init_Proc;音乐初始化处理
    % A7 v1 a7 }7 m# x2 Q) E/ f. X1 W
  1820. PHA
      P( F6 h& t4 v% M
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址, T0 d: m  d' b
  1822. LDA #$00
    7 U$ G( C3 g8 r9 p) M$ B+ H! d, ~
  1823. STA <Scroll_H               ;重设水平滚动
    2 V8 C$ o$ h2 m5 D2 c; R8 v
  1824. LDA #$0F
    : n# v) T; O% ^+ h$ h
  1825. STA APU_STATUS, |9 P2 c/ }- _0 ^6 ]& l
  1826. PLA
    $ d. S, S( K* o. ~
  1827. JSR Sound_Init             ;音乐初始化
    - _# m4 p! a. l6 M+ V
  1828. JSR Sound_State_Reset      ;重置音乐播放状态" K* r  u4 H% `
  1829. RTS; \! E, Y* o3 Q% _& }9 n9 l
  1830. 3 T9 G1 A) a6 L, R& G9 }* ^
  1831. ;==================================================. b1 e; k% q- J2 s3 a& h! Y1 K
  1832. Sound_Play_Proc;音乐播放处理' }) X# E/ U* t3 O) l
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址* W% _& y9 U; V. d( B. `: C
  1834. JSR Sound_Play             ;音乐播放
    - F; `9 g( g( m
  1835. RTS* K5 |; ^2 u( k7 Z( N5 y

  1836. 4 A/ k' s( ?( s
  1837. ;==================================================
    % o. v) v  Y) P2 T+ @
  1838. Sound_Reset_Proc;音乐重置处理+ Q5 d( h7 W8 [, ?8 e% n, ]7 n8 H
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址  N" d2 ~9 }: Z
  1840. LDA <JSR_Addr_L# |: g6 L! X8 B& g7 A
  1841. ORA <JSR_Addr_H
    - S  w2 H  z( R( V9 f6 y3 Y
  1842. BEQ Sound_Reset_Proc_Default/ b$ p1 l, H: I4 l- \
  1843. JSR Sound_Reset            ;执行音乐重置
    ( q% I0 R! ^6 P
  1844. JMP Sound_Reset_Proc_Init_Sound
    " v: s' k4 c" d5 b7 J

  1845. * Y" p) \- [9 u  A- B
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    ) D# ?' c- L! Y' _/ A1 K
  1847. 1 f4 C& i3 f/ P$ N2 h
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断" Z8 ]7 J- P: ~
  1849. LDA #$00* F$ b. ?( R, T
  1850. STA PPU_CTRL( H- c% }2 g; T7 u+ M. a" l3 @0 e
  1851. ( D0 V' o  U  F+ K5 `2 ^8 Z) n
  1852. JSR Sound_Data_Clear
    # H; e) b1 p+ Z% s7 d9 k. k
  1853. ; w* D6 q8 c/ w' j
  1854. Sound_Reset_Proc_Default_Wait5 V! M+ o" ?- f$ ]
  1855. LDA PPU_STATUS8 _7 E) }5 g8 A6 x& I( |  D  i4 x/ Y
  1856. BPL Sound_Reset_Proc_Default_Wait/ j! }4 x4 p- v4 g! @( E
  1857. ! g3 a- e* h: D, w
  1858. LDA #$001 Y3 [1 q3 o9 t! ^9 U0 B# x2 }
  1859. STA PPU_ADDRESS
    + p& I/ p; R. f0 ]7 U  _* \
  1860. STA PPU_ADDRESS1 ~3 d# ]' D+ f# j8 @
  1861. STA PPU_SCROLL; e; d; v# Z# S2 `& E, p
  1862. STA PPU_SCROLL
    # m. \0 A8 ^0 v1 k) c

  1863. 7 P7 p- O, W' j) w% H8 c
  1864. ;恢复PPU控制
    9 ~/ r  n. ]8 t
  1865. LDA Screen_Ctrl  G1 O  K! ?; V. R: _9 E0 W
  1866. STA PPU_CTRL. ^. _* T+ y# j, P' c1 o
  1867. 2 h. P. x- K5 w
  1868. Sound_Reset_Proc_Init_Sound) M" w' B5 w& e8 G3 F/ F6 D
  1869. LDA <Music_Stop_State) u! C. K* J  @0 F1 j
  1870. BNE Sound_Reset_Proc_End1 N4 ~* z$ j+ P! a) |
  1871. LDX <Music_Item_Cur
    2 v) c. N9 k1 v% ^5 B
  1872. LDA <Music_Cur,X
    & g. m. t5 S- f" L& @
  1873. JSR Sound_Init_Proc
    / w4 Z* ?+ L, g* }) l# Z9 w
  1874. Sound_Reset_Proc_End, \6 b: ^2 ~2 D& i2 o. y
  1875. RTS: w+ L2 J2 K9 l

  1876. 7 z) S/ C* g- N& q  Y
  1877. ;==================================================, ]: j, u- i0 [5 h: A& _
  1878. Clear_Item_Text;清除页项目1 {% W$ a5 A% I* [& j
  1879. LDX PPU_Cur
    0 e/ ?8 X* f# p+ |8 h( }7 P
  1880. LDA #PPU_MODE_CNT_CLEAR$ _4 s. c  n4 W& J) [0 X: f
  1881. STA PPU_Addr,X' Y7 m+ K4 {8 v" F' M6 `2 g  l4 M
  1882. INX7 s1 J! F; V$ H6 s' k  F2 }

  1883. ) q2 @5 D2 s. q) C0 \6 G
  1884. LDA <Page_Last- S" v! ~7 r/ E
  1885. SEC
    , u! \3 q9 `5 L; }( I
  1886. SBC <Page_Last_Index7 c/ k4 N/ B# W# {5 i* o
  1887. ASL A
    % H# k8 f4 v! h. ]! k8 o1 D
  1888. 3 r2 [! F0 x' \8 M' p# U2 H
  1889. TAY/ J- m, K$ S6 n* `9 A! O
  1890. LDA Item_Pos_Data,Y/ O4 e: k0 g" z  E0 X! o+ W
  1891. PHA
    7 g& ?5 W( ~* H! l: s( V3 n! d
  1892. INY6 E( }* Y3 |, s4 W# n. |- {
  1893. LDA Item_Pos_Data,Y5 j( Z1 {) m0 g3 k$ ~
  1894. STA PPU_Addr,X0 [8 X# o+ u% T2 }* L# o
  1895. INX
    8 N9 @! [5 C0 x) }) B4 c
  1896. PLA
    / \5 Q. Z6 g" G0 O
  1897. STA PPU_Addr,X
    0 j+ A. p0 [* _5 M2 s
  1898. INX- X# ~/ N1 ?. X. p3 y* e

  1899. / b' ~* v& N5 c) a' S/ o; ]
  1900. LDA <Page_Last
    2 P. F2 N- K+ K, _. I9 `
  1901. ASL A
    " w. F$ J4 q+ {3 b, y
  1902. TAY
    ) y) g' l& L& q8 T5 o) e& ?
  1903. LDA Music_Collection_Name,Y- g& R8 ^8 r+ g& {
  1904. STA <Data_L" M- W" C; W1 `  r4 B! c
  1905. INY
    # G9 {6 H4 i- V: u
  1906. LDA Music_Collection_Name,Y$ o- Y+ c! B' D3 P6 E6 L
  1907. STA <Data_H
    * D, ]  [' i2 `, g5 G( K8 D

  1908. % [8 P( m+ d5 D5 Z
  1909. LDY #$000 ~( d# q9 e3 I( R8 M8 V
  1910. LDA [Data_L],Y
    + ]1 i/ [$ I$ k8 `. F# d
  1911. STA PPU_Addr,X0 g" u6 k1 k5 P& N0 h
  1912. INX
    ! y% N  J( R6 S3 x; d
  1913. Clear_Item_Text_End5 A' I. w: s) L# r! U
  1914. STX PPU_Cur) d( Q0 I7 W0 T. r2 E2 m
  1915. RTS
    5 Z( S+ s0 a% p

  1916. : C% D2 G/ [5 c. l  Q" r0 ~
  1917. ;==================================================5 u) y5 j) ]8 y( b
  1918. Show_Item_Text;显示页项目
    / E8 s0 R% O  K( `7 ^
  1919. LDX PPU_Cur
    7 C( {$ B; z1 H$ T. R3 O5 U) b. B% \
  1920. LDA #PPU_MODE_CNT_LINE
    , m8 G7 t1 G6 U6 K
  1921. STA PPU_Addr,X
    8 j7 d3 i0 C: M& B# L" ]3 m
  1922. INX6 C( a0 v. z; t
  1923. LDA Page_Cur
    8 ^- N+ R  @9 \! B, u. O
  1924. SEC* K; T. F( r* {2 r+ w
  1925. SBC <Page_Cur_Index
    4 l) @' Z! g, A9 R
  1926. ASL A
    : c! g! Z* e% U! l
  1927. TAY
    4 k( i3 F" n3 e4 }) W1 U
  1928. LDA Item_Pos_Data,Y
    1 o0 R( i& ?! M& m3 V) V
  1929. PHA
    5 x' Y3 n- I% i* B
  1930. INY
    5 f- ?/ S* j. J$ S
  1931. LDA Item_Pos_Data,Y* C6 N$ o: L+ K% W, n
  1932. STA PPU_Addr,X1 c" `7 v1 }1 A3 z9 u' l
  1933. INX
    ! h! |6 h. C2 u4 F# E) H9 W4 |! M' r
  1934. PLA
    , Z1 f0 q6 m8 V+ z2 |
  1935. STA PPU_Addr,X' j# H1 y: w% H' u8 P
  1936. INX
    % E! f( `5 v/ h& x, k1 v
  1937. 8 S6 n; l: o6 W  u8 S9 C- x
  1938. LDA Page_Cur
      u0 ?. J& R: t- ^
  1939. ASL A
    , n" r# O2 r+ X: e: ~
  1940. TAY
    % D# o, j1 P) U" W! P
  1941. LDA Music_Collection_Name,Y5 D2 ~' x6 c) I7 _8 h8 m3 n
  1942. STA <Data_L
    * V, H2 j7 \8 v; E
  1943. INY8 e( u" H( M! ^0 e' z6 g4 r: Z  N! t
  1944. LDA Music_Collection_Name,Y! M/ r0 j, z; R" e5 J7 `
  1945. STA <Data_H
    ( \) l5 h# R; q0 ^; v. w

  1946. 8 T" X7 ^- }" t+ l7 [
  1947. LDY #$00
    6 _$ t: u- M& ]/ ]. S8 b& a; }8 r
  1948. LDA [Data_L],Y% ]& @/ U0 \* e. F6 A; p
  1949. STA PPU_Addr,X
    ' J) N6 S: f0 R! L6 Q' U
  1950. STA Data_Cnt
    , G& g/ x: l% N: p% R6 u% y
  1951. INX% o) y+ |$ N; X$ E9 U
  1952. - h5 z9 @# C7 z" ^: @' C, U: h/ Z
  1953. INY
    ( l5 E8 M2 Z' g% g$ {
  1954. Show_Item_Text_Write3 Z! K% V+ S8 O
  1955. LDA [Data_L],Y* `9 u0 j0 L* i3 G/ U8 G' C
  1956. STA PPU_Addr,X
    ' B& @- f. H2 q8 x
  1957. INY( `; c' N1 T$ z) B6 I' f4 B7 l; N
  1958. INX1 Q( q( D& `( w8 L8 F( E% h* w
  1959. DEC Data_Cnt
    6 b/ p, v# z  H) b
  1960. BNE Show_Item_Text_Write
    ' e+ L9 z4 x0 l% p9 R* I. ^# U1 ?
  1961. 2 @4 ]. y7 \2 Z0 t
  1962. Show_Item_Text_End4 x% {# M4 e4 ^
  1963. STX PPU_Cur2 _/ z/ R" {3 B8 v4 V
  1964. RTS
    & ^' F; [' E) x8 `* N- R* H* C; U
  1965. % p# I' z, S$ \
  1966. ;==================================================
    4 }& [3 V' A$ W0 z
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量! ]; U8 X$ l* l7 l" U
  1968. STA <Data_Buf# u# F2 R3 J# x0 }6 x4 J; b
  1969. LDA #$00
    7 J0 X* Q2 ?5 l5 f1 Q* o
  1970. Get_Page_Index_Calc
    4 y) }, z3 r2 e; Z2 }( |
  1971. CLC
    ! i9 n& q( u: U/ x  L0 B( E) e3 y
  1972. ADC #PAGE_SIZE
    3 Z: Z# b- K0 I2 `  A0 v
  1973. CMP <Data_Buf7 j9 m3 \  e% u# K5 @8 l0 o
  1974. BCC Get_Page_Index_Calc
    8 n4 `" K: K9 v' l  u% x/ H4 a
  1975. BEQ Get_Page_Index_Calc_End
    5 b& W" c( h3 _7 F9 s9 s0 Y
  1976. SEC$ v& n- A& ^% b+ P' u, X7 k
  1977. SBC #PAGE_SIZE
    - o: m8 z! h0 _( W& h+ ^$ N
  1978. Get_Page_Index_Calc_End( Y  T) o' W8 T6 x
  1979. STA <Data_Buf
    ; N' S' f7 {: Z" @, _5 L* }( g. X$ p
  1980. Get_Page_Index_Cnt$ {% o- y/ o) I0 p
  1981. LDA #PAGE_SIZE
    9 Z7 y6 ^2 j0 c1 W9 k) h
  1982. STA Data_Cnt
    9 G1 h$ Z9 R& j

  1983. % l9 X) J! \+ q* E& K
  1984. LDA <Data_Buf: a6 A: A) `8 m% _
  1985. CLC
    3 q8 u& @+ V% q& A6 m
  1986. ADC #PAGE_SIZE3 O+ ?* z" z  Z, p
  1987. CMP #ITEM_MAX_SIZE2 N$ A% k2 Z. ^4 a7 O
  1988. BCC Get_Page_Index_Cnt_End
    # {0 D# ?2 k2 M. ?) ]: ?# N
  1989. 8 Z4 M+ f! Z- H0 I# F7 f
  1990. LDA #ITEM_MAX_SIZE
    : S+ ~: Y; f3 E5 s5 ^2 H# M
  1991. SEC
    - r9 F' M/ X' G% j$ g) r' W
  1992. SBC <Data_Buf
    0 O6 C% k4 s( ~& {
  1993. STA <Data_Cnt, P' _, ^3 j9 z5 g( o

  1994. 0 s. _  J: x$ q7 Z. R4 C3 s
  1995. Get_Page_Index_Cnt_End
    * B3 {8 h0 T0 Q0 I3 N4 \
  1996. RTS
      h* d1 r) B( `3 e+ n
  1997. ' O$ [7 C% F! q# m
  1998. ;==================================================$ t3 E, L: F4 r) B3 r* v- M; s( t
  1999. Get_Last_Page_Start_Index+ W& E, v# O/ \" _, l% G4 X
  2000. LDA <Music_Item_Last
    3 R, R4 X2 j# g$ \( v% `% E" H2 ~
  2001. JSR Get_Page_Start_Index
    ! V) K( B" v- y1 _
  2002. LDA Data_Buf* W5 E9 w- R, e' L3 J
  2003. STA Page_Last$ c3 @' {* ]) D- {5 t, O
  2004. STA Page_Last_Index
    4 p/ a( b, y' I+ R4 V
  2005. LDA Data_Cnt, V8 z8 _9 X1 l8 k3 X. y7 A( L. A6 O
  2006. STA Page_Last_Cnt! L% x- @5 a- j% \% b9 @# r
  2007. RTS
    , \6 y7 A5 {" L9 C9 D

  2008. ( d% A/ K* f" |- X4 G! V- `7 B
  2009. ;==================================================
    " y/ R+ Z  @& Q& m( ~8 D6 m* o* B2 t
  2010. Get_Cur_Page_Start_Index
    $ h" I6 t0 k& q" C2 w) n  q1 S$ {
  2011. LDA <Music_Item_Cur
    8 B9 r9 w: T* D1 O! S
  2012. JSR Get_Page_Start_Index% Y4 i" A5 y+ J1 q
  2013. LDA Data_Buf: Z- \5 a$ |$ G5 x. H9 d
  2014. STA Page_Cur$ u% @% ^5 v# `8 ?
  2015. STA Page_Cur_Index
    8 Y' t" Q/ E$ Z, K2 ~  r3 ^4 x
  2016. LDA Data_Cnt
    6 K, ^/ N# q: y. _# c2 i
  2017. STA Page_Cur_Cnt
    * L+ A6 Z- k- @- q  {1 a' c
  2018. RTS! {0 O, b& ~2 o7 E

  2019. 6 Q! P, ^$ Q4 o
  2020. ;==================================================
    ( W6 u7 X, r* H) _) H: X. }5 z- b7 Q
  2021. Show_Page_Text;显示页文本
    $ z: m' O+ H+ @; A+ j. M0 V: h
  2022. LDA <Text_Disable_Flag; O! B, O+ B' u
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM- Q: d; h* L: M
  2024. STA <Text_Disable_Flag
    0 a# q+ }% z/ b$ \" }( B

  2025. ; n3 ~1 h" U5 h, d6 u3 _1 t
  2026. JSR Get_Last_Page_Start_Index
    9 @8 E$ ^* X* T7 G4 c
  2027. JSR Get_Cur_Page_Start_Index' N  Y  G. n7 Q) E! @2 Q
  2028. 0 f* y. `. ^. J7 f/ |$ D
  2029. Show_Page_Text_Set3 [  |6 n8 q6 W/ h7 u

  2030. " ~  F' v6 [! M. e3 O$ e9 e
  2031. Clear_Page_Last_Item;清理上一页
      j& ^5 E( L1 \, n0 i5 F; |; @
  2032. LDA Page_Last_Cnt
    + ?- l4 @6 R; `( e$ F: u
  2033. BEQ Clear_Page_Last_Item_End
    2 F/ M% |) d$ Q5 `
  2034. JSR Clear_Item_Text
    9 \. y- r4 G0 H) R4 e4 a# e2 n
  2035. INC Page_Last; i1 _: e: E* d. z/ R" n
  2036. DEC Page_Last_Cnt
    % ]3 q5 ]' d3 x  g% r0 k4 K/ p
  2037. Clear_Page_Last_Item_End; G5 A$ i9 w, A, m

  2038. 4 u3 O4 s: N* c
  2039. Show_Page_Cur_Item;显示当前页
    5 \$ ~# f* w# O# c$ f8 o: I
  2040. LDA Page_Cur_Cnt8 u! [' x9 h' }( l% [4 _
  2041. BEQ Show_Page_Cur_Item_End
    1 B' L5 t8 I4 S4 O; i, z
  2042. JSR Show_Item_Text/ E: L  Z( O, W; N" }; x: s
  2043. INC Page_Cur
    5 d* O5 L5 h( l6 K' Q2 d3 S8 Z
  2044. DEC Page_Cur_Cnt
    ( Q+ b, G5 W; b1 T2 U' G4 n' ?
  2045. Show_Page_Cur_Item_End% _. O) S- T: E3 b4 h! O6 d* i! g9 v7 w
  2046. 9 u4 o2 }) l7 y5 e9 \8 ~
  2047. INC <Time_Wait_Cnt
    7 A; I6 d0 y- X. k
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作$ c" u7 {2 s: n  E$ {, W  M
  2049. LDA <Time_Wait_Cnt
    ) L& l3 k8 k! {& C
  2050. BNE Show_Page_Text_Set_Wait
    2 ?7 T. {6 Q: P8 S

  2051. 5 i6 K. ?  R) Q& r9 `" v
  2052. LDA Page_Last_Cnt  B; @' L- i% r  D; u7 f; ?5 [- A
  2053. ORA Page_Cur_Cnt. j  B# B- _" a' a& f* {
  2054. BNE Show_Page_Text_Set' r, |9 D/ ^: l* F; z2 Z( ~
  2055. LDA <Text_Disable_Flag0 L/ `! G9 H% [
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    ) J1 _3 I% o+ a& y
  2057. STA <Text_Disable_Flag9 G0 C) `% a6 [& D9 I( I
  2058. RTS: O7 J; @+ g9 l$ g) v

  2059. 5 Z7 C5 I: l5 ~+ F
  2060. ;==================================================
    ; V& A/ u& h( T( g# V( X
  2061. Last_Item;上一项. u& f- x3 z8 O4 y
  2062. JSR Clear_Last_Track_Name# m7 k# A/ t' N2 Z4 j
  2063. JSR Disable_Text_Draw, H* u; ?- I' H  h% |9 {7 P6 M) v

  2064. % X$ n) j& I0 e6 x' x
  2065. LDA <Music_Item_Cur
    2 j6 H5 ?. G5 }& d+ p/ `, \4 c  f; r! G
  2066. STA <Music_Item_Last
      T) |* \2 K: p; \: e2 M, }
  2067. # C: I) g2 _. J. m
  2068. JSR Get_Last_Page_Start_Index2 f. ~8 ?. ]0 g5 b4 t2 ^, \8 o0 g7 o
  2069. 0 p4 N3 b8 |8 M4 i
  2070. LDA #$00! |( Q/ t- R; k& A) B. ^
  2071. STA Data_Buf
    3 N. Y, U" o! C4 u, N* ?3 p
  2072. ( f  R1 k2 D" |* q4 A' n
  2073. LDA <Page_Last& P$ K' d% K2 q, T: s
  2074. CMP <Music_Item_Cur  r- j, y3 `3 {( P0 h) h
  2075. BNE Last_Item_Begin) W3 c! Q7 r5 j) U+ f3 d- J
  2076. / v; }$ z  U+ i5 _! U7 ^" D
  2077. LDA #$016 S" v1 @& u! b0 X
  2078. STA Data_Buf1 r( w, `' M( x6 p" F( ?( s
  2079. Last_Item_Begin- l7 K, i, h" d& z
  2080. LDA <Music_Item_Cur9 D, F; ?/ M9 B; ~
  2081. BNE Last_Item_Set
    / Y- D$ K) W1 @7 X
  2082. LDA #ITEM_MAX_INDEX + 1
    ' ~$ v! o& }: T9 u
  2083. STA <Music_Item_Cur
    . p: k+ {" w2 }& `4 F

  2084. + {6 S5 H' v1 N% f+ G( v: O* I
  2085. Last_Item_Set
    0 l' b3 u$ R1 E  D) \) y
  2086. DEC <Music_Item_Cur% O1 D0 @; m7 o, a% H" ]8 U
  2087. LDA <Music_Item_Cur
    ) t" u0 ~( n# E! ~5 {
  2088. JSR Reset_Current_Music5 {4 _; [5 w2 v" }4 I- J
  2089. / M+ M( y$ G" X4 k7 a, G2 ?
  2090. Last_Item_Play8 ?! C/ z6 @2 Z: E" G
  2091. LDA Data_Buf
    5 G$ I9 K3 f9 z1 d) y( b( q' `8 P
  2092. BEQ Last_Item_End
    : V' f7 e& L7 `/ n+ [3 ?
  2093. JSR Show_Page_Text" {0 d2 i( e* A8 J5 U* G8 l
  2094. Last_Item_End. x& j% L9 I0 @, I* `# q
  2095. RTS  u+ h) t6 M8 F& }. @

  2096. * O0 w) ^+ n' c1 _3 M1 A
  2097. ;==================================================  C5 c7 |. H& L) P+ Q( N
  2098. Next_Item;下一项; A' p7 b2 p, `0 b! c7 G
  2099. JSR Clear_Last_Track_Name% Y4 n/ ^  B: ^1 ]
  2100. JSR Disable_Text_Draw+ h+ d6 ]1 Y3 N) c) z8 c9 J
  2101. $ o$ M+ w7 o) N3 ]
  2102. LDA <Music_Item_Cur
    % I. D% V9 H  [, O# @5 f
  2103. STA <Music_Item_Last
    : _$ g/ F) z. n# s

  2104. 8 w6 X; u+ ]6 ~7 }6 L+ `: m
  2105. JSR Get_Last_Page_Start_Index; Z, ^$ g  X6 M4 K$ f$ x

  2106. ' f" N9 r6 c9 i& ?
  2107. LDA #$00$ L. d  }2 Q' Q$ _" @* ~5 {
  2108. STA Data_Buf" C3 q- @& N! ~9 E& E2 C" a& i
  2109. ) `. p6 x) {2 \' o! ^) S
  2110. LDA <Page_Last/ S) g/ W) Z- `5 E  t
  2111. CLC- r  a% |' d' @, w7 {* F% E% h, {
  2112. ADC <Page_Last_Cnt
    7 z3 m" g9 S4 a* ~1 R
  2113. SEC7 G, w, A* K1 t& L! L9 ~4 m
  2114. SBC #$01. t' U# P# P1 s" b
  2115. CMP <Music_Item_Cur+ D0 @5 K6 i1 j& G9 n1 Y
  2116. BNE Next_Item_Begin5 M( h" x6 L3 x' d% q' ?

  2117. 3 C  I8 y) m$ \9 i7 e
  2118. LDA #$01" z2 g1 ]3 C% I$ ^, n
  2119. STA Data_Buf
    : `" y7 U5 z% J
  2120. Next_Item_Begin  t7 N5 ?' B& j3 [" h- \; u
  2121. LDA <Music_Item_Cur
      L  @" j  y/ P. o3 n1 \5 m3 F3 G
  2122. CMP #ITEM_MAX_INDEX4 d! S3 u5 `# M, F+ D# E
  2123. BCC Next_Item_Set
    ( f) K* y  O" N2 x! T( F# v! @5 s3 ]
  2124. LDA #$FF  U  L- L6 m/ u! z- }, \
  2125. STA <Music_Item_Cur- x2 \. q; n; M' Y4 M3 W/ {0 p5 X
  2126. Next_Item_Set; X! v4 L. z) \* z( x
  2127. INC <Music_Item_Cur% @* Y5 w0 e! v% A6 n3 u; k
  2128. LDA <Music_Item_Cur
    5 ^6 q1 S0 a% K
  2129. LDA <Music_Item_Cur# g* Z% J$ ^  U3 e1 H6 l$ Y
  2130. JSR Reset_Current_Music
    ( j% D2 f: S' |' `7 g
  2131. Next_Item_Play0 q7 D( X0 Y% R4 ~& n  a& R! E
  2132. LDA Data_Buf
    ! E) t. f8 ^2 V& n$ ]7 V4 A
  2133. BEQ Next_Item_End- ?9 z, k& f/ v; S  z, I
  2134. JSR Show_Page_Text8 a7 O' b! c% ?( h/ ~
  2135. Next_Item_End
    / P9 e- C$ S0 g! T
  2136. RTS8 X: C$ w% e- ~) K  [0 j+ |, `
  2137. 4 t$ `8 a  g) G" E
  2138. ;==================================================
    . c% O# ]; C( U8 K; k
  2139. Last_Page;上一页
    2 O' j. K5 A. K* h3 }4 g3 M
  2140. RTS& P$ _6 a2 _0 x' h$ E

  2141. $ E3 ~  c; }3 k- ?
  2142. ;==================================================- F4 \- o. \" j3 n! F- C# E3 H; S
  2143. Next_Page;下一页2 X4 c# G- W5 M
  2144. LDA #PAGE_MAX_INDEX3 \2 I( O. w$ f" T+ r# E5 r
  2145. CMP #$01
    / o; A' M; f9 o
  2146. BEQ Next_Page_End
    ! n/ P5 u& ^& ^1 J/ u& m8 t

  2147. 1 n$ z* `: S# Q. `4 D1 f
  2148. LDA <Music_Item_Cur
    ; |" p- H% Y4 J! S% f# f
  2149. STA <Music_Item_Last: ]) z7 q3 M7 e$ n3 p

  2150. 3 ?7 L  n; h, l4 G5 R, P6 g' a- }4 \
  2151. JSR Get_Last_Page_Start_Index$ _* s+ O- z/ e7 M
  2152. 1 Y: c  V0 ]) R; ~
  2153. LDA <Page_Last_Index
    7 K1 V. a* \' `* [9 l
  2154. CMP #PAGE_MAX_INDEX
    7 K, [" K8 [  ?4 k1 F) i
  2155. BCS Next_Page_In_End_Page
    ' a  [* }/ g  q1 P
  2156. 0 p8 x1 v# j8 ^3 {( `9 p& B/ o- I
  2157. Next_Page_Not_End_Page;不是在最后一页
    9 ~- G* ]) F7 q, A2 z8 K
  2158. LDA <Music_Item_Cur
    4 R: E7 ]1 d! P$ C# C- K' h# O
  2159. CLC  B( g7 `. W  M" R
  2160. ADC #PAGE_SIZE
      j) e2 Z( d# ?
  2161. CMP #ITEM_MAX_SIZE
    1 a) C& ?" B. S1 `5 ^" K1 @3 P
  2162. BCC Next_Page_Not_End_Page_Less  O& g5 U8 |" O" }6 P) n
  2163. LDA <Music_Item_Cur& J8 S0 a' r! H# e6 [" w  x
  2164. SEC
    # ^# K9 z5 E, ?  I6 l* V
  2165. SBC <Page_Last_Index
    $ _$ d" e9 p) x
  2166. CLC
    3 \* e, n; V/ \1 Z6 L. j+ f0 E
  2167. ADC #PAGE_MAX_INDEX  P' H, y1 v4 M. N# k. C
  2168. CMP #ITEM_MAX_SIZE
    $ q6 a) L. g* O9 I
  2169. BCC Next_Page_Not_End_Page_Less. B3 {9 y7 _+ l" ?/ T& q
  2170. LDA #ITEM_MAX_INDEX6 n8 R1 \: U* I7 W8 H6 O/ [  p; ^
  2171. Next_Page_Not_End_Page_Less
    / p, ]( z6 W: K4 K8 i  e8 l; M
  2172. STA <Music_Item_Cur6 W  F5 w. o. X& h
  2173. JMP Next_Page_Reset/ Y% z' S- Q2 x6 P! K+ ~

  2174. 7 N) x5 d' v/ h% l$ a1 k
  2175. Next_Page_In_End_Page;在最后一页, e+ [1 o  B6 X6 [9 y3 ~* H
  2176. LDA <Music_Item_Cur) b' L. X% I' ~1 `2 O& c$ G
  2177. SEC2 @3 {! Y' K9 l, `% Y
  2178. SBC <Page_Last_Index1 P3 R% _/ l5 C+ v0 E
  2179. STA <Music_Item_Cur# u8 _; L: _# ?9 k7 Q
  2180. ; H5 m- q5 S; E
  2181. Next_Page_Reset
    6 ?, }( k4 \& m' w3 v! v
  2182. LDA <Music_Item_Cur
    % ^8 c& t) R, A8 N1 j
  2183. JSR Reset_Current_Music, F; {( o3 V$ s2 t  m
  2184. JSR Show_Page_Text
    # W2 `- Q- H" T, L6 i
  2185. Next_Page_End
    + }  G$ a, g" D8 @  F) l* l
  2186. RTS2 e( ]! h4 F5 D) y

  2187. : R( t( F9 }) }( ^5 k3 K- `
  2188. ;==================================================
    ' D4 `3 Y9 n$ A0 }3 q8 G$ z) Y
  2189. Disable_Text_Draw;禁用音乐条刷新, n2 s3 @, O" R; d) M+ }
  2190. LDA <Text_Disable_Flag3 y3 ~0 B1 b* \- W% k
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME# ^9 k1 o( ~6 u7 m: \$ x
  2192. STA <Text_Disable_Flag' i9 h5 T- V' s' r7 b+ S" i
  2193. RTS9 B! ^) X) H- C2 y2 j$ X! _2 y$ [

  2194. $ ]- h7 b' q3 ~
  2195. ;==================================================
    0 _2 ~& C  d) u" l, }
  2196. Clear_Last_Track_Name;清除上次曲目名# U8 C# Z& {4 ^9 X6 u
  2197. LDX <Music_Item_Cur* @$ K7 H" l/ f( r6 L% ]
  2198. LDA <Music_Cur,X
    0 X5 v, D' k: ~  R1 c% l/ M
  2199. .IF Track_Name_Pos  L5 D) q5 }' w9 _
  2200. JSR Clear_Track_Info* s- Z" c& }  I* I7 k! D
  2201. .ENDIF
    ( U: y  w1 u  K/ v
  2202. RTS
    : K  V# N( |! ~- z8 O' `
  2203. ) M3 A! f* o! ?; {' P1 I2 i+ r
  2204. ;==================================================
    , T+ g9 k+ K( w' o: r
  2205. Reset_Current_Music;重设当前曲目2 p/ Z. \) R8 e6 l1 |) }5 F; [& P$ y
  2206. 4 u/ c  c5 e7 j% C) g; k. u
  2207. ;写入当前总曲目
      d- S& a* Q8 e. y( C9 a
  2208. JSR Set_Sound_Total! }7 z, K2 K/ @. J: o5 N( X
  2209. LDX <Music_Item_Cur8 C% D9 d9 o* Q
  2210. & j- @3 e8 Q0 |! G6 a2 Z/ s
  2211. LDA #$00
    $ l$ N5 i/ M) [$ Y: a- p; x
  2212. STA <Music_Last8 N* L' h8 _( e5 x
  2213. / ]/ T$ l6 m, G2 \) ]% O
  2214. JSR Sound_Reset_Proc
    # u; a7 Y# j' d% d$ t/ r
  2215. JSR Music_Show, ^: u) d' ~+ V  h6 r$ I: Y5 K
  2216. RTS
    ! h" E9 d/ d) g- w+ T% |9 S3 v" t: P
  2217. - R( y  B+ ^# m$ c
  2218. ;==================================================
    - x, a; ?& T: |' V' p; x
  2219. Music_Song_Stop;音乐停止% o; g( L. k2 Z& {* ?4 C8 ?
  2220. LDA #$01
    9 Z% d% ?: M8 y7 R6 J
  2221. STA <Music_Stop_State) |$ T7 ~) r& d8 Q0 V
  2222. JSR Music_Bar_ReSet. d% i8 ^: Q  R) m" c# D2 j+ K( k
  2223. JSR Time_ReSet! `- _( J) y: H7 P1 N
  2224. JSR Sound_Data_Clear
    4 i& b6 z2 [4 V. b" |; g8 j5 X8 \
  2225. JSR Music_State_Show
    5 o2 O$ M$ ~0 X  ]1 R4 O9 _$ R% h( C
  2226. RTS. b: t( u8 _( o. ~, t0 `3 v

  2227. 5 x7 C* {" N6 [& X5 ^: U" D9 n; x$ A
  2228. ;==================================================
    ' V0 l5 A" Q9 i' O/ C1 @$ i
  2229. Music_Song_Play;音乐播放0 h1 t/ m; g) M0 \. G
  2230. LDA #$00  @( ?1 o! W2 P( n9 F  [5 q9 U
  2231. STA <Music_Stop_State
    . S' ?: Q* _2 k/ C/ k  g3 e, p* b4 D
  2232. LDX <Music_Item_Cur
    ( T& ^" c4 ]8 p! h  [1 ?2 y
  2233. LDA <Music_Cur,X+ o  g% P) k3 U
  2234. JSR Sound_Init_Proc$ ?- A: ~1 T8 A% h  d# H
  2235. RTS6 U; @& Q. l. ^9 y. \8 r$ k4 B
  2236. % w. H+ v8 F7 Y0 K* p1 @. T6 A, t
  2237. ;==================================================
    : _) u5 P! D) J. B; e: ~
  2238. Music_Song_Last_10;上10曲
    & K0 l3 G; j$ `& @; J
  2239. JSR Clear_Last_Track_Name
    : I0 I6 Z8 {6 ^
  2240. JSR Disable_Text_Draw1 Y! D: N! X. ^( K, _/ G' |- [4 J
  2241. LDX <Music_Item_Cur
    & K; P7 ?; ~4 M7 {0 }+ X
  2242. JSR Set_Sound_Total0 M: T$ z) r7 p& x
  2243. LDA <Music_Cur,X. m9 P) H& b- E& Y0 B
  2244. SEC
    " J' L  G- V% U6 x
  2245. SBC #100 H( j; g; ~' x- M8 v
  2246. BCS Music_Song_Last_10_Set, K- }/ T1 ?) b( A8 p
  2247. LDA #$008 X/ L' t8 X' W/ n% R. F
  2248. Music_Song_Last_10_Set
    " Q3 d" y# Y( _+ V8 C
  2249. STA <Music_Cur,X
    + z2 k# m# f7 s( e+ i" {
  2250. JSR Sound_Reset_Proc3 ~- O- D0 }! J  K: |/ L8 a4 E
  2251. JSR Music_Show0 Z$ L) F) I' D6 u# R1 N# n
  2252. Music_Song_Last_10_End* z* x* o1 N3 ~9 s( V
  2253. RTS( E$ }/ I3 ~! {/ I& u1 R

  2254. * \. x/ u0 [8 s0 ~: B1 S
  2255. ;==================================================
    4 d8 f6 s% E& C9 @/ R8 K  ~0 C
  2256. Music_Song_Next_10;下10曲. V3 [" f; \: g' N4 j. i( U
  2257. JSR Clear_Last_Track_Name6 M+ T$ U* |+ L3 n( d$ o  S. g
  2258. JSR Disable_Text_Draw8 Z6 R1 i- L. U+ h; Q# j
  2259. LDX <Music_Item_Cur$ e+ U4 _) y$ V& M% R5 G
  2260. JSR Set_Sound_Total' C0 D. Z/ {6 @! v: Y; A
  2261. LDA <Music_Cur,X* J; z4 |- P- F5 ~0 I  p+ N. V9 s3 ]
  2262. CLC
    $ J. n0 L$ v* d: E8 j/ R
  2263. ADC #107 `, |  k9 m# P6 Q
  2264. CMP Music_Total1 S( h+ Z1 p$ R1 L4 d3 o
  2265. BCC Music_Song_Next_10_Set; @; n. K( B: p
  2266. LDA Music_Total
    : l" @# q% L. {+ D) ]3 e1 o" z
  2267. Music_Song_Next_10_Set
    6 l1 n" G; P3 d4 e, |7 h
  2268. STA <Music_Cur,X
    * U- D$ a6 b) B: R
  2269. JSR Sound_Reset_Proc4 Q5 j$ q& g8 O: f8 f+ e
  2270. JSR Music_Show
    # g! Z- a2 [2 a. p( m( s
  2271. Music_Song_Next_10_End
    4 _- Y0 Y* L& I, Q4 g
  2272. RTS6 b! \' ?3 S9 e8 v( \% H/ i
  2273. - M9 f" [% s" [" a6 c. y3 R$ b# F' p
  2274. ;==================================================. ~  P- ^/ G3 D
  2275. Music_Song_Last;上一曲% p  I0 |4 \% N, H& {$ j- Q
  2276. JSR Clear_Last_Track_Name* K% }8 y  _7 m! O- `
  2277. JSR Disable_Text_Draw! @6 A" |, z6 r
  2278. LDX <Music_Item_Cur5 n4 h! p4 d# r
  2279. JSR Set_Sound_Total9 R/ @2 H6 ?4 G! i! _" q
  2280. LDA <Music_Cur,X' {8 `& g/ O( \; Q2 \
  2281. BEQ Music_Song_Last_Set5 c9 H+ m  X, [; V
  2282. DEC <Music_Cur,X
    - f" P: t! n2 `
  2283. Music_Song_Last_Set: A: G& F" V8 c+ q6 g/ n0 X/ h
  2284. JSR Sound_Reset_Proc
    ! G3 t" t7 o6 x+ M3 M! X
  2285. JSR Music_Show
    : _. l( T* C8 b# G/ n( H1 O& ]
  2286. Music_Song_Last_End; M. Y6 L% s7 f
  2287. RTS
    2 G3 w0 Q  a2 f- j' \

  2288. 0 V6 L) R$ _: ]$ O
  2289. ;==================================================
    9 z' c, B4 }8 R0 K6 g' F; L
  2290. Music_Song_Next;下一曲
    * h8 r3 j6 L) |& G+ s: [* f
  2291. JSR Clear_Last_Track_Name
    % A0 _9 D. V' Q/ V
  2292. JSR Disable_Text_Draw, y+ E( ?% S  B; a8 ~
  2293. LDX <Music_Item_Cur/ H) b7 [- F4 j$ h
  2294. JSR Set_Sound_Total" r. U& I+ h3 n1 ~* u
  2295. LDA <Music_Cur,X7 g( Y9 z) e( F1 Q
  2296. CMP Music_Total9 I/ o5 S: v: {4 B& U! c9 }
  2297. BCS Music_Song_Next_Set/ s; {" X, F# i/ o7 H
  2298. INC <Music_Cur,X
    1 [5 K& d  V3 `) [0 d. c$ F
  2299. Music_Song_Next_Set
    # Q* T1 k, [6 K  Z4 D/ P
  2300. JSR Sound_Reset_Proc, I9 p% y/ I" K5 n
  2301. JSR Music_Show3 i) c& {6 B: R$ C
  2302. Music_Song_Next_End
    * N/ Q: b3 p) t" M" E6 K2 G
  2303. RTS- Y' X: x" S6 P. \5 ]
  2304.   m5 Z5 D( P7 D. }, {
  2305. ;==================================================
    - V% `0 _( i! I+ \% O
  2306. Change_Select_Item;改变当前选择项" G' e* E2 i: T# ]- N. |
  2307. ;--------------------------------------------------
    : g6 F; n- l7 U+ R
  2308. Change_Select_Stop_Play_Item;停止/播放
    1 B! X3 Y" I2 ?8 C: d, B' V
  2309. LDA <Key_Once
    1 j" i7 k) P. k1 W( N& B& I
  2310. CMP #$10
    " z* |6 _/ J) \, A2 Y+ n2 Q! t! ^
  2311. BNE Change_Select_Last_Item8 I# z9 G, j0 h$ k! }* Y- Y& w8 Y7 u
  2312. LDA <Music_Stop_State
    1 L: ^4 s: V- X0 c4 X2 V
  2313. BNE Change_Select_Play
    - @7 u4 g% e' Z5 c- }% G
  2314. JSR Music_Song_Stop7 \4 c9 R' v0 p: F7 Q* `& {
  2315. LDA <Music_Stop_State0 v% ?; y: Y  O
  2316. RTS
    * f* F$ @( o! g1 v% [! m5 [

  2317. " ]" U% c% o. r, H) U
  2318. Change_Select_Play% ~3 q) L7 |, K6 p0 q# S7 [( p, Y
  2319. JSR Music_Song_Play
    # @7 M0 e4 M8 C/ ^$ y6 }
  2320. RTS
    + l5 F4 G1 I9 I# p; G' ]1 H

  2321. ' U  R8 I: }$ k; j& S
  2322. ;--------------------------------------------------7 _+ G& }( A7 D. R) u
  2323. Change_Select_Last_Item;上一个专辑, s  V  e/ _. P! K0 ?' B
  2324. LDA <Text_Disable_Flag
    0 R6 k0 j! f9 k, r- b
  2325. AND #TEXT_DISABLE_ITEM7 e& u' x* W1 K7 y4 U
  2326. BNE Change_Select_Item_End4 M( F0 y& W2 E) \" ~* _, `
  2327. LDA <Key_Once  J5 D( A# \6 t7 [4 ]& s
  2328. CMP #$08, I4 P; E; t4 ?; ~. F8 G/ }
  2329. BNE Change_Select_Next_Item
    - \- {- r/ x! j
  2330. JSR Last_Item
    3 V2 s- s+ J# ~* [  W
  2331. ;--------------------------------------------------( z  _! s6 _# [6 G, E/ ~4 ]+ l/ p
  2332. Change_Select_Next_Item;下一个专辑* q  ?; Y" ?) {' ]3 u. V
  2333. LDA <Key_Once" \( K' L" f- F# x- H  k
  2334. CMP #$04
    & C) Q4 B4 V& e& I0 w" Z4 I' _! S; e
  2335. BNE Change_Select_Last_10
    4 }; Q; q- w& [8 y5 [8 r' g
  2336. JSR Next_Item
    ; c% F! J6 e8 j% m
  2337. LDA <Music_Item_Cur/ P8 e# j+ e, p2 t/ J1 v
  2338. JSR Get_Page_Start_Index( u( [) G) s8 d( C0 R
  2339. ;--------------------------------------------------
    0 X" E$ `( D5 f6 |7 e
  2340. Change_Select_Last_10;前10曲' B$ \6 n0 c( Y! Z: E+ F# ?
  2341. LDA <Key_Once
    ( C* Q9 D# i/ e- \4 b- e
  2342. CMP #$40
    : K( s0 ^# c; E) Q6 Q
  2343. BNE Change_Select_Next_10
    " W" L5 b& u. l5 {' h5 s
  2344. JSR Music_Song_Last_105 T1 ^2 n! G) |5 I$ C' N1 H
  2345. ;--------------------------------------------------
    , p: s9 a% @4 c: K5 A
  2346. Change_Select_Next_10;后10曲
    " C- s# ~+ B+ Q# C- z3 |
  2347. LDA <Key_Once/ A; g, A% \5 E8 |; [$ o
  2348. CMP #$80' z  p* s8 N6 e
  2349. BNE Change_Select_Last
    ' S7 G! r( |( M1 q! Y
  2350. JSR Music_Song_Next_10
    3 v! F7 y) \- t% a) A
  2351. ;--------------------------------------------------% s1 _8 i* L+ _4 G& `/ J4 Q2 W; z# \
  2352. Change_Select_Last;上一曲
    $ {8 x/ I3 A, K+ {; a9 V
  2353. LDA <Key_Once
    9 u! T& W3 U* ?6 ^# n0 G
  2354. CMP #$02
    * }8 O. r- Q( {7 ]6 L
  2355. BNE Change_Select_Next
    ! h; v4 \+ i! m& m. A- L$ K
  2356. JSR Music_Song_Last2 m  k; h# n4 B5 J; k% m% R
  2357. ;--------------------------------------------------
    " C: M6 _$ Z1 \0 R% R+ }1 Q% C
  2358. Change_Select_Next;下一曲
    ) x- Q  ]2 {& p# Q* ]4 J* }! H% W
  2359. LDA <Key_Once
    5 o3 [' ]& ^+ n& W" I$ U7 O
  2360. CMP #$011 `$ U: D' N* Y9 U
  2361. BNE Change_Page_Next( _3 G  e: {9 h1 A* X1 G. p
  2362. JSR Music_Song_Next
    6 q# n% F3 V6 J
  2363. ;--------------------------------------------------
    & |" B7 c$ x. l
  2364. Change_Page_Next;下一页
    ) x" p  n: f3 f8 X9 p
  2365. LDA <Key_Once$ x: `; L" G7 H9 B' f: t
  2366. CMP #$20+ A# Z$ R' u# g+ R* J
  2367. BNE Change_Select_Item_End
    5 s# G+ ]6 b7 k
  2368. JSR Next_Page
    ; }, ]. M9 r0 W  n
  2369. ;--------------------------------------------------
    + q+ ^+ V7 X" s% b, b! l
  2370. Change_Select_Item_End
    ' m# L, P# C9 t  S( ]+ m
  2371. RTS$ l+ q; r% E; G$ f
  2372. 2 g6 z8 g4 J! w+ O% h! k! Z
  2373. ;==================================================
    3 T* ?. V; I( g
  2374. Show_Arrow;显示箭头光标2 u/ m; J+ w8 {' k' W9 _
  2375. LDA <Music_Item_Cur
    7 [" f5 T$ `/ X$ `: Q$ T' c
  2376. JSR Get_Page_Start_Index( S) l7 ?. F" z  z$ U
  2377. LDA #$00
    ! D- Q% V# M" ]8 a/ B# [8 n2 g
  2378. STA PPU_OAM_ADDR( J' v+ Q8 T1 o9 R1 b+ w6 a# G/ S
  2379. LDA <Music_Item_Cur
    & f1 V* ^5 i+ r! h8 j
  2380. SEC
    1 m! d2 M. z: v  F% U( }6 ^" @9 N
  2381. SBC <Data_Buf$ k1 r7 \0 f( i# X8 ]& q
  2382. ASL A% K  ?) t* g9 ]
  2383. ASL A
    / ~! Z' h# r/ d" b1 h6 X) V
  2384. ASL A
    # A% O3 o+ a8 g3 q
  2385. ASL A3 ^2 J8 ]6 E0 {' [  J# G" k2 m$ T
  2386. CLC
    5 F' S: o' A( H) B4 }$ c4 X$ `* H
  2387. ADC #ARROW_Y_OFFSET
    2 w: C: [2 u8 E! D) e
  2388. STA OAM_TEMP_ADDR + $00( T: d) M7 k( D5 ^& N, U
  2389. ;STA PPU_OAM_DATA* Q  Y/ F. ^5 C& D9 V; f# B
  2390. LDA #$1F
    1 f- h2 P* S7 G: J8 }& J
  2391. STA OAM_TEMP_ADDR + $018 V: @& k& G% d5 A" Q& H9 @
  2392. ;STA PPU_OAM_DATA5 S0 z9 S; R6 e8 Q! A# X' J' |: N
  2393. LDA #$00- M8 w  E$ i" n# ]1 x4 ^0 a
  2394. STA OAM_TEMP_ADDR + $02
    : k* b8 ^& U3 c9 r* o
  2395. ;STA PPU_OAM_DATA
    " c' s$ x6 A. @
  2396. LDA #ARROW_X_OFFSET* f# N. ^9 ?4 C( \+ j
  2397. STA OAM_TEMP_ADDR + $031 N* S9 T2 T6 o) z. _/ ?! K1 m' l
  2398. ;STA PPU_OAM_DATA
      `5 a$ X, }' i% [- f
  2399. RTS
    # f. ?" i: T. {) w7 s- @
  2400. " p$ H3 y6 v% m9 E  L
  2401. ;--------------------------------------------------
    ' b3 T6 l0 h: L# w+ s
  2402. ;命名表数据& h4 s6 D2 ~4 q7 _- ^4 s; x7 L
  2403. Palette_Attributes
    , X) K. C' C8 W
  2404. .IF SOUND_BAR_SHOW_ENABLE
      o, N3 W. b% ~/ a# {
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55. E6 w* j( c$ w+ S* `8 V; h3 o
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ( _+ @  x8 @( F# f; l& `( K
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75% S- V; H9 Z, h  D. \2 ]* {
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    7 Q  ]+ f8 P. z# ]' l4 W% f6 @
  2409. .ELSE" r0 t) P$ w; B1 D! r
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55* G, Z0 S; c* q# L; C
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55* R/ e, S3 H6 f, R; }" ?8 C
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    , r, u8 B& _1 a. q2 \
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA* h8 V6 c, h9 ~. s& t% G
  2414. .ENDIF
    ( k  x$ `8 A8 [$ z6 k, m; V  A

  2415. 1 G. i7 ~: H  r. R- a8 ^$ A' p
  2416. ;--------------------------------------------------/ R# d. D7 r' ]' i" l+ W/ j  a) X
  2417. ;调色板数据
      V' l6 l5 g* E
  2418. Palette_Data6 \. m. a5 q% G* o! ?) o; c
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    9 p6 C) v. ?; n8 B2 p% n) a
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F; D7 E% {$ c9 }1 a( q% d5 K5 o: O  p- @

  2421. 3 m$ O# B9 m* a- H! z
  2422. ;--------------------------------------------------
    $ v4 J7 P$ ~! S
  2423. Static_Text_Data
    + @: }4 g, _2 {
  2424. .WORD Static_Text_Caption_Data
    " ^! d7 A  g5 q5 f9 O
  2425. .WORD Static_Text_Author_Data
    & Q3 @3 @6 ^2 ?# O% d4 l) q. q/ ]
  2426. .WORD Static_Text_Date_Data
    6 P- E5 D" y3 {
  2427. Static_Text_Data_End) s" M. V% o% i3 h8 N& D

  2428. 5 L" h6 t$ p1 p, H1 U/ D5 L/ l
  2429. ;--------------------------------------------------" c9 E3 p) s1 \; J4 f4 P5 S" |( c+ M! E6 m
  2430. Static_Text_Pos
    8 N; |8 H% T9 b  {
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    ( ?% U" E! r: P8 G
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    ) s$ [$ r" p, ?9 e2 f" I& E# D- {
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos). o/ B8 y% ^- W0 E1 l2 n6 S  t
  2434. Static_Text_Pos_End+ g% [! n4 o% K, j4 w7 K( o
  2435. ; ]( `$ N( C6 A( T. G
  2436. ;--------------------------------------------------" S' |* d1 D7 h  h" j
  2437. Music_State_Stop5 l& W  U. W" q1 i
  2438. .IF SOUND_BAR_SHOW_ENABLE& v# [& G4 O+ k
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$004 e: k; u4 g; w; U
  2440. ELSE
    4 [) F: c8 k- z, e% U8 _, N
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    # z  Z9 u, h& {- F$ w# T8 C
  2442. .ENDIF# u; h1 w. D' _5 p: p$ I" |5 }
  2443. Music_State_Play
    8 J) \/ t/ R/ O8 a. \: k
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    4 O9 n- t) E+ _  d8 N2 `

  2445.   n3 V; D) R5 K* w) r! b6 R
  2446. ;--------------------------------------------------3 j; p, w) b; q) m# e+ h
  2447. Sound_Bar_Text_Data;声音类型文本  ?, h; M, k7 n/ G3 T
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
      T; \* @5 m/ u; s8 }/ ^/ }. u
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"0 i" w. V6 O4 e
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"' Q. I& H! U6 E1 O7 t. \
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    1 n: L, \- O6 e
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00) B! ]5 n/ J2 y9 [8 o  U1 K

  2453. . j  [0 Z+ F! Y" _
  2454. .IF Track_Name_Pos
    " p( K2 T+ n& {( L( \  s5 X

  2455. . Q) n: [3 K; |/ y
  2456. ;--------------------------------------------------! b6 u* {4 x& \' g
  2457. Track_Name_Addr_00;曲目名地址索引
    + n  V& L: y6 g1 U  l5 w* B( |8 \  i
  2458. .WORD Trackr_00_01
    / ?( G. K3 s# L3 }( n
  2459. 2 a  I5 p! }& n. Q2 s
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"$ ~, c1 _) ^7 @6 v$ P; L) [
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    6 G& ?# H: {9 Q6 }

  2462. & [: Y; V& B6 q8 Q( D, [! b2 x# X
  2463. ;--------------------------------------------------5 r1 {" B. |) |" V5 D8 P1 f
  2464. Track_Name_Addr_01;曲目名地址索引
    4 A1 M  A5 u. }, `
  2465. .WORD Trackr_01_01( Y) ^  ~! g2 Q# B$ }) l. c
  2466. # l( }( D, Y) ]" S& b& c7 B
  2467. ;==================================================
    1 f! t% e; |6 z4 c7 E' N( K6 Y
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"6 u# n- Z3 _5 n+ z0 Y2 G; x' `
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"- l, S; X% l' I& z. U, m
  2470. % M' W* X/ {$ B9 o1 @4 @& I
  2471. ;==================================================. V+ o1 h( F' D& d9 h
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引- X  U1 y. E$ U) |3 J- W' X/ s9 ^- t: \
  2473. .WORD Track_Name_Addr_000 L/ T( i% |5 `2 k6 d: W- ^. Z
  2474. .WORD Track_Name_Addr_01) S/ H9 z* ]2 f; _. G/ d
  2475. .WORD Track_Name_Addr_019 S* c$ z) F2 y  [. p8 J1 Z
  2476. 5 f$ y* h6 f& p  D6 i. w" b6 B
  2477. .ENDIF; h  T+ c* C: K3 @

  2478. 1 ]) _5 W2 p% A. v* g) t# ^) K
  2479. ;--------------------------------------------------
    % q- n) Y% S' M. a0 f1 G
  2480. Static_Text_Caption_Data;静态文本数据
    ) A. k- v7 u7 Q! z9 t, y6 l
  2481. .DB 161 Z" G1 ]8 J. M) {' Q
  2482. .DB "FC MUSIC 12 IN 1"0 j. @- b$ T+ K4 a* V1 n
  2483. Static_Text_Author_Data! j6 ?6 {/ m5 S" M3 i
  2484. .DB 25
    ( z6 ~4 h8 Y. t
  2485. .DB "EXTRACTED BY FLAMECYCLONE"+ N+ _: ]0 o8 z2 ?  J; C
  2486. Static_Text_Date_Data, L) ~8 D) N7 O: C/ q) V' {( V1 `$ j
  2487. .DB 103 x+ R5 g7 `! Y
  2488. .DB "2023.07.23"- Y+ y8 Y4 o8 b' L$ i- p, R9 A
  2489. ( F5 \5 k. u" h
  2490. ;==================================================
    7 x4 @/ |* s% w# D* X0 f5 G
  2491. Music_Collection_Name               ;专辑名间接索引
    ; [0 f5 F# Q3 C+ J" k" j
  2492. .DW Music_Collection_Name_003 v* o' \5 b. u, }6 Y
  2493. .DW Music_Collection_Name_01' J& T7 C" i1 Y- I3 x1 ~
  2494. .DW Music_Collection_Name_02) e/ D. n/ \# V( J/ |3 _
  2495. .DW Music_Collection_Name_03
    ! C8 e# h1 Z2 S/ M
  2496. .DW Music_Collection_Name_04
    7 Q) B0 l3 {" I9 ?/ L# k$ M
  2497. .DW Music_Collection_Name_05* a* H. l- W$ r6 R* ~! a) m3 G/ F8 n
  2498. .DW Music_Collection_Name_06
    ( U4 a. P5 [( R/ I
  2499. .DW Music_Collection_Name_078 _$ [- |9 E! h3 J( M
  2500. .DW Music_Collection_Name_08
    ) E7 b0 s2 ~% \9 E* ]
  2501. .DW Music_Collection_Name_09
    . \3 y8 y% m( R6 @
  2502. .DW Music_Collection_Name_101 {; l( L' S7 P3 Y% T+ E
  2503. .DW Music_Collection_Name_11
    9 ]: E& y" F1 B0 ^( Y$ G

  2504. ' s. _+ y* L& y: J7 a& K# a
  2505. ;==================================================, `/ m6 d# ~! H6 I+ T
  2506. Music_Collection_Name_00            ;专辑名文本数据
    1 f9 T3 f. H, p& o" C+ l  I
  2507. .DB 11,"1.RAF WORLD"
    7 s9 P) o* U, ~; T
  2508. Music_Collection_Name_01
    ! ]  O# R! n  K# M4 v! e3 ^
  2509. .DB 15,"2.FINAL MISSION"+ Z; G2 m0 J0 K/ T% r2 J
  2510. Music_Collection_Name_02
    9 w) [# `" Z# F$ l& U& |, L3 `* B% Y
  2511. .DB 06,"3.KAGE"
    * {9 p+ N) T% V+ D! J
  2512. Music_Collection_Name_03
    9 a8 O4 Y/ v' @/ w  }6 S
  2513. .DB 16,"4.DOUBLE DRAGON"9 Y( _7 B# J( d0 I8 ^/ a
  2514. Music_Collection_Name_04
    4 y+ r/ s) b9 h1 J3 _/ P$ v7 I
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    ( M( f( {$ Z# }, O
  2516. Music_Collection_Name_05
    8 g( _% r9 e7 l+ ]5 R
  2517. .DB 17,"6.DOUBLE DRAGON 3"/ D& W& t. U: H' ]
  2518. Music_Collection_Name_06
    5 [3 J4 [2 S  z$ y
  2519. .DB 09,"7.ROCKMAN"
      I9 {+ _  c1 x$ Z) {- n; T
  2520. Music_Collection_Name_07
    & ]2 b, f9 t& A0 ^+ s* @$ ~$ E1 e
  2521. .DB 12,"8.ROCKMAN 2"
    - N% R! S5 C. J3 D; Y
  2522. Music_Collection_Name_08
    ) u! S. [! W+ E. p
  2523. .DB 12,"9.ROCKMAN 3"
    " j  [2 x" `" M* J2 v4 O
  2524. Music_Collection_Name_092 T0 F& \9 s: n& v  v( G& [* Q4 s
  2525. .DB 12,"10.ROCKMAN 4"
    " D. p: q8 k  J2 W0 Y* n( O& S
  2526. Music_Collection_Name_10
    / J( }5 t' w  q! C
  2527. .DB 12,"11.ROCKMAN 5"
    - Q* G$ X' U: S7 x  U) i, y
  2528. Music_Collection_Name_11" W: ~, D. j/ |5 r/ d  \; l
  2529. .DB 12,"12.ROCKMAN 6", K0 u+ z8 }" J3 Z
  2530. ! L: T0 Q( _0 T% S* n5 t
  2531. ;==================================================
    9 U/ R0 k2 }! K5 \! C; z" N0 u+ e5 r
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    $ ~$ h: K- M* O; X! o
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0* `! l& G1 ~1 p6 p: @- c

  2534. ( ]# c  h: u( u
  2535. ;==================================================5 j; V' d4 U2 G$ v- [" n# @
  2536. Item_Pos_Data                         ;光标箭头位置' f& ~+ x5 Z8 A! g, S* P
  2537. .WORD ITEM_SHOW_POS
    1 _6 r4 B6 O4 |6 i
  2538. .WORD ITEM_SHOW_POS + $0040" R+ u* Y# {) c) l/ k
  2539. .WORD ITEM_SHOW_POS + $0080
    2 G, F% l* a/ p/ v
  2540. .WORD ITEM_SHOW_POS + $00C0
    * B- {+ c+ _2 c, |9 D  f6 ?) R
  2541. .WORD ITEM_SHOW_POS + $0100# w  y5 l" N5 K
  2542. .WORD ITEM_SHOW_POS + $0140
    2 `8 J/ `$ p+ l

  2543. 5 N0 `6 h: Q" \: `
  2544. ;==================================================
    ( [2 O' D' u  p) g5 f& j9 x
  2545. Sound_Init_Port                 ;音乐初始化入口地址( S+ T1 Q. V4 _% f6 W) J. @6 p# E1 Q
  2546. .DW $BFC8( G8 v8 O. d1 X
  2547. .DW $D7F0
    6 B7 r2 ~4 c0 K
  2548. .DW $9FC0
    4 ]; r5 ?. C7 X: s) W
  2549. .DW $BF70( I/ H  }6 e* O/ F- O* P( J
  2550. .DW $8003
    6 n' z* }# Q2 Q( z; v' p8 {* H
  2551. .DW $BF30; [% }; h3 G( O/ ^6 Q! u
  2552. .DW $9003
    % L* B* o% V5 g* G  p$ k
  2553. .DW $8003
    $ x" ?0 q& m, E% O2 S) B& \
  2554. .DW $80032 N* m4 H$ x' P  r( v
  2555. .DW $8003; Z* |% M( V5 o' Q. x+ l( q
  2556. .DW $8003
    - v* m) b+ m3 l3 X4 |6 P
  2557. .DW $80031 m$ f: X4 E" l( J1 J7 B) K* d

  2558. ! n# F* x) p3 _, Z4 Y
  2559. ;==================================================: U+ P: q3 h& E8 s0 r
  2560. Sound_Play_Port                   ;音乐播放入口地址
    1 C0 X, m/ H8 J. `6 x
  2561. .DW $8000( P# }. t7 @2 C; `% {& I- \
  2562. .DW $8001
    ; y1 ?9 n  K5 j7 \! z3 U1 z3 f% A
  2563. .DW $A000
    3 \9 p& V1 w+ d3 R# E2 m
  2564. .DW $8003% f  Q" I% y! y
  2565. .DW $80007 G! c0 i  `' O$ o5 D2 T
  2566. .DW $8003
    + U8 L8 x; Z: S: ~
  2567. .DW $9000( t) q1 R" j+ D" N& l2 B
  2568. .DW $8000
    ' Y$ O- @1 r# t+ [
  2569. .DW $8000
    : z9 k9 E2 N" b4 {5 l
  2570. .DW $8000) ]* w7 Q8 o, q/ b* _9 [- b/ Y/ S! `8 `
  2571. .DW $8000
    . u3 S" o2 V: e& b6 I; q$ o0 I# C
  2572. .DW $8000
    & g4 d7 `* v& R& n2 G" _# W3 A' f

  2573. 6 t; k" T/ X! J& C" d' R5 X- h; R
  2574. ;==================================================3 _( H# P/ `! x% _' b: W
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    ( [$ J  ^# Z7 N0 l# ^
  2576. .DW $0000+ x% O  J8 x2 }+ @. K0 g$ P
  2577. .DW $0000
    2 M. S& p; G3 [$ A+ _+ G  b
  2578. .DW $0000
    % R* t: d6 [  Z$ y& B
  2579. .DW $0000* p" J# p2 n# F
  2580. .DW $0000
    5 z# o7 M& x& o; B! Y# ~- u
  2581. .DW $0000
    . l' l6 @1 P3 }% R
  2582. .DW $0000% ^8 f+ p3 W4 K
  2583. .DW $0000
    : _6 k- `, K/ Y. _5 @+ ^* S
  2584. .DW $00002 ]( F" d3 d3 a# e, ^4 {
  2585. .DW $0000+ M" M, ?! m2 I, j4 G0 p
  2586. .DW $0000
    3 v1 [- T1 s; R5 u% c( f$ [' k& A
  2587. .DW $0000
    , E" n( a. V. y1 v* V. F- P
  2588. - t8 @, i* {9 q1 t+ S2 K
  2589. ;==================================================0 a% V* A' p1 o$ z* @- ]4 v
  2590. Sound_Total_Port                          ;曲目总数
    8 ]/ l+ n% w! b: H5 v4 Q" s
  2591. .DB 38
    7 o4 k- V; f. k: |* S: @
  2592. .DB 33
      y- f9 {- z+ B. _7 }/ D5 F% ^& i
  2593. .DB 498 f) I2 t# A4 A+ d% ]( A) N; }) A4 U
  2594. .DB 41
    7 ~: q/ ^" v" P" v: e$ b# ^6 f1 g
  2595. .DB 83
    & h5 J1 m# u5 v+ Y% D& u
  2596. .DB 70$ M# q. ?  |* I! V2 J0 R$ T* |* n
  2597. .DB 50. p! G1 P+ T7 F! \2 t7 j
  2598. .DB 67! ?4 A: f* q. j6 @
  2599. .DB 57/ ?" q0 `, L* T: j
  2600. .DB 71
    $ ]; D. X$ g; Q9 G
  2601. .DB 767 {( ?. n; A, H) l: i
  2602. .DB 102/ C4 u$ \" y. ]

  2603. , x' C( u2 J$ U5 u  K6 _
  2604. ;==================================================
    1 D" Q8 O8 B" @( I9 w% I" Q, b7 w5 P
  2605. Sound_Start_Port                      ;起始播放曲目
    * `4 O( y+ G6 R
  2606. .DB 00
    2 v! P! g1 H2 h' p
  2607. .DB 00$ Z! q- [- P+ E$ _
  2608. .DB 00( K9 @4 e# ]; B( L
  2609. .DB 002 B! ~: C% [6 V4 |" ^9 |
  2610. .DB 002 T/ h. P1 ^" l' \/ Q
  2611. .DB 00) I2 m8 F2 ^+ `8 t3 r' @" N* z
  2612. .DB 005 h1 Z/ Y' f! n' r  L6 w
  2613. .DB 00
    % Q7 D' _% |- I0 S; _* c8 h
  2614. .DB 00
    3 z: t2 B2 c6 r& g: l! t
  2615. .DB 00
    ' O0 d% h! c& g" o) U. O( Z
  2616. .DB 00# O6 u  d# O: D0 c, K2 o# \
  2617. .DB 00. |" m' a' u$ b9 i. I# D# X5 V+ p2 c$ ]
  2618. 1 }- k$ z; h( \. J
  2619. ;==================================================5 J% [  q' O- U0 r! X# [1 c4 D
  2620. Sound_Bank_8000                      ;专辑bank_8000
    " J  K3 {* G+ C
  2621. .DB $10
    : [6 p' Z5 \# X9 _- D
  2622. .DB $123 ]& o" b9 g" d& d! a; u( r# [* G
  2623. .DB $14
    6 }% L( R/ B$ y" u3 @: L% h
  2624. .DB $16+ j- v' R, x9 L
  2625. .DB $18
    : a. u1 t2 M& i/ w* v; {  t
  2626. .DB $1A
    4 O+ t) K9 M' b# P
  2627. 7 e5 L+ ?( \8 P) X2 g( U$ v
  2628. .DB $00
    ; W2 I' `3 ~: h3 C% p5 G
  2629. .DB $02
    & H8 I3 @8 x  w& j3 k' N
  2630. .DB $0D
    # J; R( k% o- P
  2631. .DB $044 Y+ q$ v# C4 q1 M9 r/ c1 v5 A2 {# G
  2632. .DB $07
    $ o+ z% s1 C( H, [
  2633. .DB $0A4 b( q+ p$ x0 _+ r
  2634. + u1 `7 E, j+ B' ~# t% \
  2635. ) t  H3 b8 j4 v: R! E
  2636. ;==================================================9 `& I* d! X0 k6 T& O2 ^' [
  2637. Sound_Bank_A000                      ;专辑bank_A000" T0 r9 y6 l3 i6 L. n
  2638. .DB $115 L6 d9 C) l; Q1 X
  2639. .DB $13- w8 ]- _3 U3 Y6 z( ]* j6 m4 t
  2640. .DB $15
    0 W. ^3 A. S" ^, A. d# R/ }
  2641. .DB $17
    , b( L7 O$ r. ~3 i/ D
  2642. .DB $19
    " u7 b; T. |1 c  v+ U. @
  2643. .DB $1B
    9 e' r: H/ v+ i) d/ `2 O
  2644. : \# Z( {9 G$ m9 c" m( p' c
  2645. .DB $01
    6 _) ~# w, L$ w( r5 z. x* R
  2646. .DB $03
    1 E8 }9 T+ I( R
  2647. .DB $0E. Y) k, R- C" |0 T0 d
  2648. .DB $05
    % Z; T! o2 U* [' F% x0 n5 g3 J/ T
  2649. .DB $08
    / P% I4 I8 ]# A+ I& @( U, N% k. a
  2650. .DB $0B, R  g& F$ Q8 W7 M

  2651. 1 ^. p' L% W% c: D( R

  2652. " y/ T. }6 K+ S  T) Y$ M
  2653. ;==================================================5 a& y7 T3 b1 h: h7 ~6 Y& ~
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    3 R" s, y3 C% @7 A
  2655. .ORG RESET_ADDR4 q1 h/ E# I- q, m
  2656. / [+ U# F; }/ w
  2657. ;==================================================$ o; S# G1 n. R4 i/ v6 O
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    $ E. k% s; T2 B( d8 U! V
  2659. PHA
    ; F1 J! L' d8 ?9 ~  ^/ Z
  2660. LDA #$06% G# |! q7 w! N7 P  N, S
  2661. STA MMC3_BANK_CTRL
    ' ~5 Y+ j, B& i
  2662. PLA, D  |$ C" {( }( h5 x3 T* ^2 Y
  2663. STA MMC3_BANK_DATA
    4 d, D- O: g- H1 ?3 U  B
  2664. RTS9 B$ q. C* X9 }8 q7 u

  2665. 4 P: K2 q. r% v. |5 V7 C& H. i( ^" J
  2666. ;==================================================) h) g; E+ A, i: w2 n# Z! w& y* Q
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    & Z' i" Y# O! r- I6 M' s: w
  2668. PHA
    . ^5 Q$ i: B% H3 g. V
  2669. LDA #$07% c5 T; Y$ W! P6 ]8 }8 G, _* r: I
  2670. STA MMC3_BANK_CTRL
    ; [* L2 ]" X7 \7 d: l4 I9 U
  2671. PLA
    " l. {# v3 \* w$ ~: l+ o, ]. `
  2672. STA MMC3_BANK_DATA) `& f: M  C% O' [: y* L& m
  2673. RTS
    5 \5 t4 [) B; L

  2674. # a) r  w: T3 R' t1 P) l; G
  2675. ;==================================================
    % @3 ~: u+ X  b% B! C4 e
  2676. Switch_Main_Bank;切到主程序bank5 P, K5 c4 ]# H& c6 v" V
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK" ?) L3 a) V! n( K5 ^4 d8 t
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    ( P0 y. @3 g, M- A
  2679. RTS* A2 {$ {6 v- B# o+ T0 D2 z9 a3 Q2 \+ R
  2680. ! n5 G1 p+ S0 g8 @& O* {
  2681. ;==================================================- W6 {/ v, b. w6 t2 E! x' R
  2682. Sound_Reset;音乐重设(如果有的话)3 e6 V5 N3 S: ]. h. ?) Y& e
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    9 Z: C% ?  a4 t- [, [  w: Y
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    & B! I5 u5 ]4 i" l9 P
  2685. JSR Switch_Main_Bank   ;切回主程序  l+ ^1 y8 @; p  }
  2686. RTS
    : f8 k1 x: d0 C5 q+ @7 P
  2687. ! T5 g) Q) l% y% E) @
  2688. ;==================================================
    3 Z4 ~0 `$ j9 g! j0 |) }
  2689. Switch_Music_Bank;切换音乐bank9 d) ]: f/ a4 H- H# a
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    - L1 ^. {' A, r% ~4 P% D: p
  2691. LDA <Music_Bank_80003 \( i: m5 u- P5 ]- c
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank/ d% D% _! t, l8 R- s; H
  2693. LDA <Music_Bank_A000
    ( k  w; z' M5 ]+ _$ N' n1 B2 m: {9 f
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    + A" W  X: j# n& F; o
  2695. RTS
    # d# F! b  u) R# Q8 Q
  2696. 7 J5 }: \8 M9 I7 ~" _3 F
  2697. ;==================================================2 x3 \$ f5 W8 f) M1 F9 Y6 e
  2698. Sound_Init;音乐初始化5 R' \6 p0 I& t3 m
  2699. PHA
    / h7 J2 O( y. A6 i9 W( X! ?; I' L
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    6 n  I  X1 v/ E- R  E2 E/ N
  2701. PLA% U  a+ W7 m6 [/ e2 p# z
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    . T# I7 ^  Y, C0 }
  2703. JSR Switch_Main_Bank   ;切回主程序. t( {. q2 m( P. x, |/ H, ^" z
  2704. RTS
    ) D- x8 E" L' [) G& p
  2705. . J8 ^. e' m( r& i+ |
  2706. ;==================================================3 P" t( p) x; b, m/ x" ]( ]4 `& _; {
  2707. Sound_Play;音乐播放
    6 C- D" s- Y$ e% s1 C3 z* [
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    7 F) ^+ L6 Y7 y0 o( u+ K! X
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    7 E6 S- Q! L8 G8 W
  2710. JSR Switch_Main_Bank   ;切回主程序& q3 z8 d. D% y8 l# W1 K
  2711. RTS
    ) f" B' G" Q0 R' S: U2 [
  2712. & p$ |0 W) f" E
  2713. ;==================================================1 W8 e0 w# E8 q) N' a1 {' j$ e8 Q
  2714. MainLoop;死循环# E1 x- B8 }) k
  2715. JMP MainLoop6 G" h& l6 q' \+ k6 t
  2716. & c- N* M8 C3 U
  2717. IRQ_SUBPROCESS_JMP = 02 S5 a7 M' T5 C% B$ U

  2718. 1 y2 }  X- Y) @! S& ~; R4 W# E
  2719. .IF IRQ_SUBPROCESS_JMP) c+ w+ o- ?& C: q0 s# m( i
  2720. ;==================================================
    ( D9 _1 _7 R8 [9 V2 C* v
  2721. IRQ_Process_0;IRQ处理过程0
    / ]9 E+ h0 e2 k4 T& _* ]' m1 X, {
  2722. % i, v, a2 ?3 u  o( k
  2723. ;15条扫描线后触发IRQ- [# e' j% Y, k( J7 ]' T" J
  2724. LDA #15% D# h; n% h* P$ U; V3 u+ l+ n$ V
  2725. STA MMC3_IRQ_LATCH8 x- j" _2 G1 m! c4 Z9 n. k

  2726. 4 q! T: }% T* @; x6 \5 @/ F
  2727. ;设置屏幕滚动3 _; _# D: w% T$ e1 H0 \4 \+ i
  2728. LDA <Scroll_H% N2 E& d" H* N9 l
  2729. STA PPU_SCROLL
    / N  f, t3 N) Y) X
  2730. STA PPU_SCROLL
    3 C" W1 z: F2 d4 S
  2731. . ]  v9 k3 |8 j) o8 _/ b5 P
  2732. IRQ_Process_0_End, \, }" y/ p1 W8 A$ m
  2733. INC <IRQ_Process_Index( n6 W* g. u& {1 @
  2734. JMP IrqProgramEnd
    9 ~+ o# k$ j+ S

  2735. + v: H8 m& A. j; g. a
  2736. ;==================================================
    2 l6 ~4 ^- ?" v4 Z6 w- ~
  2737. IRQ_Process_1;IRQ处理过程1
    , w3 C9 T2 U% L# O9 v7 N3 p- u* p

  2738. 7 `5 a3 s( d$ S4 Q9 o
  2739. LDA #559 g! w# w3 ~' B8 v, @. n
  2740. STA MMC3_IRQ_LATCH
    8 J- ^! N3 e* @8 y; v+ t
  2741. ( a  q0 o5 n2 p
  2742. ;设置屏幕滚动, c2 ~) p9 c( n1 r4 c; N" m
  2743. LDA #$00
    + E' v* K8 \7 n3 h9 n
  2744. STA PPU_SCROLL
    ( |- ~3 E* W2 B  @8 ~; S- e& z
  2745. STA PPU_SCROLL: E4 L. T8 N* i( ?

  2746. : w/ C5 s9 X+ V3 }+ l# B
  2747. INC <IRQ_Process_Index$ {" b7 z1 Q0 A& T4 t) a( t
  2748. JMP IrqProgramEnd1 O& O5 y, {7 g$ y0 h
  2749. ' k1 L8 q! y* E
  2750. ;==================================================! H4 }  K+ `" ]) Q
  2751. IRQ_Process_2;IRQ处理过程2) `) u* m* a7 H6 W" q
  2752. : w% ^( I8 c, L7 F) F/ o
  2753. LDA #15, R$ i/ S' n9 l
  2754. STA MMC3_IRQ_LATCH# O2 z& I0 g4 T  H2 i
  2755. 1 ~2 c2 q! ?; k/ U* z, M
  2756. ;设置屏幕滚动: Q8 }- D1 n% c+ z
  2757. LDA #$00
    / r9 o0 p, s+ J: q/ z
  2758. SEC
    4 e+ A: |$ G7 G3 z
  2759. SBC <Scroll_H) n: r# v8 I2 Z* o
  2760. STA PPU_SCROLL, A' [8 F9 f( [2 z. ~. _
  2761. STA PPU_SCROLL
    : h; ~8 o" X: w. E, L) Y

  2762. * O1 L* T/ e+ g
  2763. INC <IRQ_Process_Index
    + C& x9 ]. z/ q8 P& k+ Q
  2764. JMP IrqProgramEnd( f7 N$ g2 h- b' H4 w0 J% n' T

  2765. 7 B7 u- q( P1 @! x
  2766. ;==================================================1 {- D/ [- R9 I
  2767. IRQ_Process_3;IRQ处理过程3
    ( K6 W% g; R9 b! u5 }7 w# Q3 ^$ A0 \
  2768. * F3 t  W. F3 K% z) a7 p
  2769. ;设置屏幕滚动
    - D. n( V# G( @+ r  d: r" R
  2770. LDA <Scroll_H' a# M& }8 p# @! \. ^
  2771. STA PPU_SCROLL
    5 M) ~7 M1 d. H3 R; O
  2772. STA PPU_SCROLL
    7 _# g% ]4 o8 [% |; d9 E

  2773. $ p( ^) l2 L# O9 z6 }  u
  2774. ;禁用IRQ
    + R% ?" K3 S6 k7 t, N" W( W
  2775. STA MMC3_IRQ_DISABLE( J7 @2 d/ q; o. D) u, n* Y
  2776. JMP IrqProgramEnd
    6 t- c( V  D* L. f5 H  ?5 ^/ K2 d! Q
  2777.   X2 r/ {* p5 p
  2778. IrqProcessAddr
    ) _/ Y: |3 Z  W5 h
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    / ~) F' n3 i; W3 B$ s+ r) H

  2780. 9 m6 c* R: \6 i
  2781. .ENDIF6 ]2 |- y) \# a& o% C

  2782. ! o4 R% V: _3 i7 z6 U! G
  2783. ;==================================================
    + Q( Y" u" p9 Z  w- K$ c. U: K
  2784. ;IRQ滚动模式常量, H' ?- a  Q  N* L
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    8 A; `) `- Y. C0 V1 x2 T) A
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    ; ]7 k/ U" X+ K+ ?8 N
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动2 u3 ~& Q+ U4 R5 C4 U2 X# j5 a+ E

  2788. 1 ^0 L% @  Y5 I, k" V+ {& j
  2789. ;IRQ扫描线数据
    4 H* R2 j* p9 c
  2790. IRQ_Scanline_Data
    4 z* L; n8 ^' ~, M! w) W/ J
  2791. .DB 84 D& L4 ~4 p, N4 Q) Z1 z2 k
  2792. .DB 546 A1 f3 Y3 u& ?% Q0 \; y
  2793. .DB 81 S9 |6 i' T( C% n) Z; w
  2794. .DB 00 ;关闭IRQ0 }- N! @8 l1 X& Y) u& h
  2795. , M% D) H( e5 i- f3 `/ P7 O
  2796. ;IRQ滚动控制模式
    4 H7 {5 Y8 p8 {  m! q$ v/ r$ _$ @; r
  2797. IRQ_Scanline_Mode
    / W* ]( V% E3 I. ~1 Y3 L* Z. @
  2798. .DB IRQ_SCROLL_MODE_ZERO# W. S9 |7 S% N! m
  2799. .DB IRQ_SCROLL_MODE_ZERO. E/ j4 M- U' K* d+ V
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    : y! R2 o& r( {4 m, U# q
  2801. .DB IRQ_SCROLL_MODE_LEFT1 H! y! y5 Q; e8 \) `  n1 c
  2802. ( l" N* t% Z6 {' a& a
  2803. ;==================================================
    # t$ U$ D1 H' }1 H5 k6 f0 ?3 M7 |+ ]# e
  2804. ;IRQ处理' N2 R( l! `8 M2 u5 S
  2805. IRQ_Process
    - z8 u/ y8 Q' d9 D
  2806. LDX <IRQ_Process_Index
    . M6 |  \8 Y/ K: K5 O% s6 s) F' F
  2807. LDA IRQ_Scanline_Data,X$ B: }# m* l+ l
  2808. BNE IRQ_Process_Latch
    6 r5 Q0 G) J9 j
  2809. IRQ_Process_Disable;禁用IRQ
    3 r/ }( d) ]' k- I. p  `
  2810. STA MMC3_IRQ_DISABLE4 P( j: p3 B9 n
  2811. STA IRQ_Process_Index( T/ ^* ]! M7 ^1 b) w, ^
  2812. BEQ IRQ_Process_Scroll. J4 G7 Y, G5 e5 p4 ]
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线9 k/ u& I2 _* X1 |; p" r
  2814. STA MMC3_IRQ_LATCH" e: B- l8 Q2 F) z
  2815. INC <IRQ_Process_Index
    # w7 d: v* j- e' Y- p) g# N
  2816. IRQ_Process_Scroll;IRQ滚动控制4 O' T( W  l( ^" x+ K( U
  2817. LDA IRQ_Scanline_Mode,X0 @, G! H* r$ n% y! |% \
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    . `# {/ C8 S3 H' y
  2819. BEQ IRQ_Process_Scroll_Left: P' F5 M" u( T8 t$ Q2 S# A: T
  2820. CMP #IRQ_SCROLL_MODE_RIGHT( J7 B* n' `5 ]# G7 X; }. z8 V
  2821. BEQ IRQ_Process_Scroll_Right5 X% A% J) \( c/ r
  2822. IRQ_Process_Scroll_Zero;不滚动0 C5 U' |' W8 o- y( a3 l! p5 R4 C2 A
  2823. LDA #$007 M1 k& @* c3 W3 z
  2824. STA PPU_SCROLL
    , X1 c7 [( q+ N$ d9 p
  2825. STA PPU_SCROLL& J/ W" z0 A# j" k3 s2 D3 o* s
  2826. RTS
    + O! c' ~9 t& p# @3 T. n" D! l
  2827. IRQ_Process_Scroll_Left;向左滚动
    ! M3 v% l0 i( y+ N1 ]5 c& U
  2828. LDA <Scroll_H
    ) Z( @! M, K+ e  d8 @) v
  2829. STA PPU_SCROLL
    / i+ A% z2 z% `) T; _
  2830. STA PPU_SCROLL6 U5 M0 B! n3 p1 S' H8 a
  2831. RTS. m. O* L' w/ G, H2 Y9 q
  2832. IRQ_Process_Scroll_Right;向右滚动
      I5 Z% r6 \; H; R8 ~
  2833. LDA #$00
    ; q0 q' k! e% S: \9 X' x
  2834. SEC
      d2 d; p+ f; s( s+ {
  2835. SBC <Scroll_H
    2 W& a' Z7 ]- d9 e- M
  2836. STA PPU_SCROLL
    ) m3 t& `) Z4 N! V) y
  2837. STA PPU_SCROLL" |- K  b+ M, {5 @
  2838. RTS
    # y8 W3 s5 \6 X# b) B% k8 M- m

  2839. / q% m7 ?1 f. F
  2840. ;==================================================
    . p' ~9 V( J; z5 @1 z- t. x
  2841. NmiProgram;Nmi中断处理
    / f& ]; R: @  [  J. `( V0 A2 L
  2842. PHA" j: ?7 J4 |* i$ y
  2843. TXA7 p: v0 z4 ]% r! {6 n! B& I- O0 S
  2844. PHA9 _% k* O7 m& z4 `6 Y. p
  2845. TYA% H# Z5 m0 D* K& \% y: ^( E- ?
  2846. PHA
    4 N0 \& H# l* W
  2847. 3 k& l; W6 T; S- ~  H7 u% L* E) w
  2848. ;读取清除Vblank标志, 防止重复进入, ^0 a7 Z/ T1 h( f# D$ H
  2849. BIT PPU_STATUS3 b- K, R# `: M* L# d
  2850. % v6 f' |3 S8 v. s7 P5 h
  2851. ;切换主程序bank
    6 u1 w  F4 K8 {  r6 ?/ b
  2852. JSR Switch_Main_Bank
    % Q9 s9 y$ W' h! k4 u
  2853. * U7 x/ g# q. u! ~5 u, }# d
  2854. ;Nmi处理
    $ U2 q6 n; W8 x) r4 z# M
  2855. JSR NmiProcess
    - W6 L2 F# d4 E3 d6 l) _. s
  2856. 1 C" n3 V/ _2 r; H7 p+ p
  2857. Nmi_Proc_End
    : ?+ y) ?4 d6 }. _; @
  2858. PLA
    5 \0 T  i" U9 W6 U
  2859. TAY
    , E% ^  \& M9 k( \
  2860. PLA
    2 ~6 I8 j" h% A6 L$ u
  2861. TAX5 L1 c9 z  L" r0 y, Z  r- Q
  2862. PLA) s+ |3 s2 z7 |
  2863. RTI
    , j: U. F; v9 Z
  2864. ' v- j' s9 f! E. q, ?1 a' n0 n% J2 [* x
  2865. ;==================================================
    % ?9 X3 g! w- B7 p; w
  2866. ResetProgram;重置中断处理
    / S1 X4 \* ?8 k* h
  2867. SEI
    ; a7 F- t; G' a0 C6 {- b
  2868. CLD; y" L3 X. E5 y: L( N
  2869. LDA #$00- W' d( G; L. X8 ?8 ~
  2870. STA PPU_CTRL" @, V6 `% O0 t( c- b( d
  2871. STA PPU_MASK
    . h+ n+ X# w8 X! I. Y7 V
  2872. 9 ^+ n( d  g- Q7 ]9 h1 l
  2873. ;切换主程序bank4 `! P( F3 Z: V5 q! ?3 G
  2874. JSR Switch_Main_Bank+ i, |" n9 k4 ~% b+ {" Q/ e4 f. d
  2875. 3 o, {, ]; r: K, s' K
  2876. ;程序处理开始
    8 |8 l  B" E* B( U
  2877. JMP ProgramBegin
    . ^% T) L# U' L# H0 k" D  {4 U

  2878. ) ^" P: K4 n1 ]
  2879. ;==================================================, g% ?3 ~* P* C4 Q
  2880. IrqProgram;Irq中断处理8 t& B5 D5 f* q/ o0 |) N. }
  2881. PHA; u2 n& C; L" u4 N5 o, v
  2882. TXA
    - }" G  [1 C1 h1 l
  2883. PHA6 `  Z  O! w+ q/ i
  2884. TYA
    : ^* {; B5 w/ h, {: W! {; ^  a
  2885. PHA
    ( u6 e# g3 i2 `% v5 h

  2886. 2 R6 ?! q& }, v$ w0 c% A- Q, Q
  2887. ;关闭IRQ9 a! t7 c0 _1 |8 x+ V( ^
  2888. STA MMC3_IRQ_DISABLE6 Y9 @- Y( K# u# z' b6 V( O4 e$ s

  2889. ; [2 X# H7 m3 c" ?* l4 b* z; q
  2890. ;允许下个IRQ触发
    ( X" A, m9 J" o1 w+ ~3 z4 x
  2891. STA MMC3_IRQ_ENABLE0 N6 G8 t. a2 B# `
  2892. # b! \1 z# N9 }* z3 s( S
  2893. .IF IRQ_SUBPROCESS_JMP5 I1 _4 D9 S! C. H! Q& _1 j9 c

  2894. % i4 Z5 H" v2 @( A6 F: t4 E
  2895. ;执行IRQ过程4 P: S- n4 T% c+ @# P
  2896. LDA <Data_L
    0 H5 K  a) Z. k- m/ H! o6 g1 o
  2897. PHA
      L  U# n4 c: o6 g& W
  2898. LDA <Data_H
    / ^9 D. g4 e$ w- H( Y/ s2 \5 }- v
  2899. PHA* U$ |6 |2 w8 r4 D
  2900. LDA <IRQ_Process_Index
    , y/ H# A# k; ?6 V
  2901. ASL A
    & P# _; L" p  c' F
  2902. TAY
    2 T( s' ?* J8 H" W) n4 ?+ ~& B5 |: C
  2903. LDA IrqProcessAddr,Y
    ) q0 s! q  Q$ R) ]( I
  2904. STA <Data_L+ B9 j3 g! t: M! _, x4 q
  2905. INY
    % i! Q3 V& x7 s1 e4 a# C
  2906. LDA IrqProcessAddr,Y0 Y) b2 |) W  U+ i9 d
  2907. STA <Data_H
    1 P* E8 |8 ]4 v. q  {7 V/ t/ N
  2908. JMP [Data_L]. |, t# D) h' m0 K- l0 T* t

  2909. ( J1 H7 }6 p9 O% h* R  Y- \$ A# [
  2910. .ELSE
    7 e- U- f/ r; }/ L$ K

  2911. * f5 X; G5 }) Y! c. M: c1 d; \
  2912. JSR IRQ_Process
    ; ?7 J9 @- |7 }3 w4 Z( p0 m
  2913. - n$ R  I( n1 c. N/ F% r  v
  2914. .ENDIF  ?9 [& d0 I% l: g' p' {

  2915. $ Y: H$ Z# s! ?! Y- W; V
  2916. IrqProgramEnd' q( S( h7 m7 z+ P
  2917. .IF IRQ_SUBPROCESS_JMP
    ( Z' o6 c2 Z; i
  2918. PLA9 ^6 a& H1 p: ^' M4 X
  2919. STA <Data_H
    5 Q- n4 y/ [( d) M3 \9 {
  2920. PLA
    ) D+ \+ |# e, Z- t& @6 L
  2921. STA <Data_L! F8 j" C4 D4 b7 {, e
  2922. .ENDIF, n9 C4 z  h# @& P' y7 r6 R+ k- y
  2923. PLA
    ( [7 a+ I+ X: p, J" W# o
  2924. TAY
      A1 H/ `, Y5 t
  2925. PLA
    7 \1 v8 g/ |4 _: L
  2926. TAX
    ) d5 T+ \3 r3 P. w: w
  2927. PLA
    ! s( v! z0 c# N4 w3 ^4 ~
  2928. RTI& @5 y5 Y9 C$ |* f  W" B: l& i
  2929. 8 Y8 u! |' C& h, M$ ?1 j4 G
  2930. .ORG $FFFA0 X1 f3 k9 V" n" b- P2 M# E
  2931. .WORD NmiProgram# R! x! W5 p" s0 y, @
  2932. .WORD ResetProgram8 n4 m1 [5 ]" y5 m1 j
  2933. .WORD IrqProgram6 W; ?5 x9 O' \  h
  2934. 7 h7 p0 u$ W  |' O
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    + A2 |- w. _: f  x/ o3 x
  2936. .IF SOUND_BAR_SHOW_ENABLE' r' r3 i8 O  j7 ~4 |$ }0 L( t8 s# ~1 d

  2937. 3 k3 \9 o% p) X
  2938. .ORG $FE00
    # `, n+ S2 y( [& m1 a6 H) v4 N
  2939. PHA8 q; ~. I! W- C7 Y
  2940. STY $07BA/ ?: N. e" _0 R: I5 `
  2941. LDA #$8D
    " w$ ^8 e6 c' a0 r/ v
  2942. STA $07BC8 q; z! z+ x8 `# S# G$ t9 n2 K
  2943. TYA
    6 ]+ d4 |: t+ |; p- L" \/ b
  2944. CLC4 m' t- i' V: Y7 h+ g% [
  2945. ADC #LOW(Sound_Bar)
    - O( w8 d( n; H3 m, i
  2946. STA $07BD
    7 z" b# X% u, W) m' x
  2947. LDA #HIGH(Sound_Bar)+ O: k, C# L4 h* e6 @7 e
  2948. STA $07BE
    7 c9 E5 A1 P8 o
  2949. LDA #$60
    2 b+ p% l4 w8 }; D4 C& |% N
  2950. STA $07BF
    ' z7 j9 u! p5 @) e0 m3 \* P
  2951. PLA  f6 j0 ]/ G8 l# q* A
  2952. RTS' K3 \) A2 F$ l" n5 ~5 W

  2953. + D% ]: _1 H5 g& B
  2954. .ORG $FE209 K$ W; q0 C* y$ ~! \
  2955. STA $07BA
    ; c5 ?6 F2 d: k, F; g0 M* ]
  2956. CLC+ ]2 C5 \% z  J/ D8 `
  2957. ADC #LOW(Sound_Bar)
    1 g7 D# x9 N& {1 p! L( t' T
  2958. STA $07BD
      y$ r" A4 f( q9 |4 U3 p; {/ v
  2959. LDA #$8D7 e. S8 ]: Y! _
  2960. STA $07BC. T5 n9 h: d9 V
  2961. LDA #HIGH(Sound_Bar)* M) @4 c$ ?7 a  Y% u
  2962. STA $07BE1 L' S3 a& d! F* D; s
  2963. LDA #$60$ O: g- M( T7 Z; m! F3 v3 s
  2964. STA $07BF# q6 `1 e6 [( p! F: o. e
  2965. RTS7 Z: g9 I2 I- z2 u6 C& B/ T
  2966. 1 o8 j, E- ]( L8 l" Q: }; U. V2 x
  2967. .ORG $FE404 J+ N9 x# i5 {" S% N
  2968. PHA! V- }5 Z' t1 q- ]
  2969. STY $07F1
    ; z6 Q0 o7 H% w7 d1 S6 E" C
  2970. LDA #$8D# D+ e- r7 ~2 k8 y# r
  2971. STA $07F3% }( m5 M+ L) i
  2972. TYA
    ! w) W. E3 _0 M$ a0 j
  2973. CLC
    % W8 w# ~. W1 s9 s0 W) e. {
  2974. ADC #LOW(Sound_Bar)
    " n' u* s2 _! p8 z
  2975. STA $07F4
    , I, ^3 R2 t5 X/ }% D- M" k
  2976. LDA #HIGH(Sound_Bar)
    1 H) T- h3 M4 a$ H% a, R
  2977. STA $07F5
      z$ a/ r1 u2 r" [% }1 J  ]/ f
  2978. LDA #$60
    ) y& J! q' n" d4 X/ ]
  2979. STA $07F67 g. H  o* }0 M7 M5 F
  2980. PLA) b$ T' u1 a- j( i% z
  2981. RTS
    1 Z2 S% @2 V' a' |$ i
  2982. 4 A1 y" z) \6 t8 g
  2983. .ORG $FE60
    % O' K+ t4 Y& C
  2984. STA $07F12 K& t5 `! D: [0 `4 |
  2985. CLC
    9 \$ ]9 c* I7 z( |; z
  2986. ADC #LOW(Sound_Bar)
    2 a4 D5 |) K& D! _' d, b
  2987. STA $07F46 g; d6 C! h. x8 G! ?/ G! \
  2988. LDA #$8D+ |" t7 Q: d" N$ G/ M
  2989. STA $07F3
    ( p; z1 H5 j; c  S6 S% c
  2990. LDA #HIGH(Sound_Bar)) R( O% d1 B4 E' c" L- K
  2991. STA $07F57 o+ {; f: @. ?
  2992. LDA #$60& `7 k7 G3 X% }6 l( p: h3 o. ?: W
  2993. STA $07F6
    2 |. m4 y9 n( s+ L) q5 p
  2994. RTS
    $ w2 @! V2 F3 P  L

  2995. 7 V- W3 _3 n1 V( s. l) [4 S
  2996. .ORG $FF40- W/ L  i4 M' ]
  2997. STA $4000! x1 H, m. Z7 g) U
  2998. STA Sound_Bar + $007 l4 [* c' B& W3 }' j: x, Z3 I7 O
  2999. RTS
    / b- x& F* c- }1 k# k+ M

  3000. % L* P" x8 o% Z  g5 ^
  3001. .ORG $FF48+ Y. T" O" N8 q8 v
  3002. STA $4004& N0 J$ O0 p3 ?3 w
  3003. STA Sound_Bar + $04) x9 L$ Z* _+ L5 ~7 L
  3004. RTS. b' v* D" d0 l
  3005. 7 f" z- h; [9 C# W$ V/ a. ~8 m
  3006. .ORG $FF50; u  q7 W) r1 ]1 w
  3007. STA $4008- F2 }! |5 `6 N3 ]- s3 [) d) ]
  3008. STA Sound_Bar + $08
    8 L2 E3 D1 ~9 @2 d# ^! f5 t
  3009. RTS& u( D! v0 m5 ^1 Z3 F8 p' p2 e: k

  3010. , ?: ~! c) j% d
  3011. .ORG $FF580 ^) c- b  {1 y. h' R8 F4 {
  3012. STA $400C
    : ]& P( d3 s! i
  3013. STA Sound_Bar + $0C* X0 O3 p2 b& r3 h9 q) X9 s  r# U
  3014. RTS  `) h- m0 t) w" {( w

  3015. " d3 p5 y5 y! w; s' C" {$ v" |
  3016. .ORG $FF60
    ( h# O! c5 A! L8 |
  3017. STX $4000
    * {+ r% ]3 t8 s0 ~4 B
  3018. STX Sound_Bar + $00
    6 m) ~6 e) ~  O4 @' P0 _, K
  3019. RTS
    ! P/ r5 H) Q  M( Y1 n! \
  3020. & C5 L# |( p2 p4 o
  3021. .ORG $FF68, }) j1 S1 P6 E4 N/ Z1 S
  3022. STX $4004) h* w/ m4 I+ c$ \# [" _* J9 V( I% M7 V
  3023. STX Sound_Bar + $04* t3 N! s+ D% [! s
  3024. RTS' r' q2 }, |, v" w: c4 T! E$ s

  3025. ) P" ^0 h4 U, V& {6 q
  3026. .ORG $FF706 m% G+ [. u9 y, n* e3 [
  3027. STX $40089 M, t; L( V/ ^! R
  3028. STX Sound_Bar + $08
    ! ]$ H; b6 F. A( H: x
  3029. RTS
    ) e3 T. @# {* N) ?" E* l& x+ r7 N
  3030. 0 i. G7 A. I6 L* Q: D9 u% S) f
  3031. .ORG $FF78
    6 G3 p: E- X  X$ p. H
  3032. STX $400C1 j% d; z9 k" Y' j
  3033. STX Sound_Bar + $0C7 ~' x3 k$ [  ]$ M# t0 p, `8 Y
  3034. RTS
    ; T) X- _7 d  M

  3035. 2 d& N1 m% @# U6 R) m
  3036. .ORG $FF80
    3 v* Q" _# _1 Q8 ?: ]
  3037. STY $4000
    # d, Q. v6 H1 L
  3038. STY Sound_Bar + $003 V  K. A4 S* i' w
  3039. RTS
      l9 C) `6 k8 |. k% {0 r# V- L

  3040. 3 {. a7 I- ]( R6 o: W3 l
  3041. .ORG $FF88# H9 a% D2 z# i# W/ V! {7 d" c. e3 P+ K
  3042. STY $4004; S, b7 z) [9 `9 |6 j
  3043. STY Sound_Bar + $040 @  W" V6 x, ^  h' S/ z) F. s* s
  3044. RTS
    0 T, \; l" ~. X

  3045. 4 d6 T- ^1 q+ z5 r; T3 z4 V
  3046. .ORG $FF90
    # T3 N7 U7 {8 \' i, t
  3047. STY $4008
    ; f/ {- R8 ~  G( D$ d. g
  3048. STY Sound_Bar + $08# y& o2 p$ x9 f5 p- Q- P
  3049. RTS* G9 d1 I" c' h; b, s* [" Q) m% x
  3050. 7 j. b5 m# m- b
  3051. .ORG $FF98
    1 f. C9 X% W& u
  3052. STY $400C; T2 N, T# Z! ^* X
  3053. STY Sound_Bar + $0C/ N  ~/ M! Z8 F5 Y. J- ~$ y9 Q
  3054. RTS1 U4 _/ A% W" {+ E
  3055.   h( e- @) R; J6 q1 j
  3056. .ORG $FFA0
    6 p- N/ K7 n6 W
  3057. STA $4000,X! W* v: Q$ R8 o
  3058. STA Sound_Bar + $00,X
      J8 P- I4 \3 G5 O  g$ u
  3059. RTS
    ( y% t* x  S+ I; ^. S( V. l" `$ R

  3060. 7 o! p8 ~& @8 b  C
  3061. .ORG $FFA8
    . }( E* B1 u1 T/ W% W* Z  \
  3062. STA $4000,Y0 ?: n5 ~6 u0 T/ v, {5 K1 p
  3063. STA Sound_Bar + $00,Y
    . @5 ]  A2 q' D1 |* l. P
  3064. RTS
    # D  e* L- ]7 p

  3065. + [: q, G5 Z6 X( V( d
  3066. .ORG $FFB0
    1 Y/ |. G  v6 F/ E
  3067. STA $4004,X
    1 d" K: x- Z8 p
  3068. STA Sound_Bar + $04,X4 d- @; G  x' _3 d- |. \( C. |& K5 q
  3069. RTS
    , A; ^7 j! Q4 U, Z! V
  3070. 9 g# L) J# l5 k1 p% O
  3071. .ORG $FFB85 y/ b. E6 i6 R1 i- v9 @: j
  3072. STA $4004,Y
    2 [! R5 `4 H3 I' N- D' I8 U
  3073. STA Sound_Bar + $04,Y
    : D1 r9 x8 C9 ~+ p' U. F
  3074. RTS
    $ R2 W, b9 q; X

  3075. # K1 d; V, s7 K1 ?
  3076. .ORG $FFC0
    ! ^4 F! j1 j+ m  S8 z# @8 j
  3077. STA $4008,X3 b$ i9 k3 K8 h3 `
  3078. STA Sound_Bar + $08,X6 r* u" K* @# Z3 l3 M+ r6 P$ Z
  3079. RTS
    7 G) @) Q4 J  p; d9 ?, S- [

  3080. 0 j: v0 w5 N( L, E! o( O" K
  3081. .ORG $FFC8* ?+ Y, u3 \# Z, h2 _
  3082. STA $4008,Y
    . y4 F8 U. ]4 o
  3083. STA Sound_Bar + $08,Y
    2 T: X2 R) }6 X6 u! I* D
  3084. RTS+ v/ l! w8 V. s4 v
  3085. 6 ^/ ?& O# j  o, Y$ h
  3086. .ORG $FFD0* E# q6 P' Q% g2 G
  3087. STA $400C,X  r: s4 K) K! d3 s( u
  3088. STA Sound_Bar + $0C,X
    6 N. k5 f9 L0 Q* t
  3089. RTS. @, c: L5 l& a3 G0 J
  3090. + y) U4 I1 O$ }
  3091. .ORG $FFD8
    ! q- m- ^+ [; {3 d# ?! D
  3092. STA $400C,Y, r8 ^6 n2 j% p8 N7 W
  3093. STA Sound_Bar + $0C,Y
    4 y. K% U7 b) u. `
  3094. RTS
    * q4 c3 l; ~& S, k+ n" o
  3095. . q7 o2 D0 R- l" r
  3096. .ENDIF
    * }+ v% O/ [2 _( h
复制代码

. R: g& i7 ~% L3 n* B1 D, E- I
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3320 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-17 08:49 , Processed in 1.170899 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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