EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 : ?* @1 w7 C1 @  J  }) m, O
$ c3 Z) J0 A2 N6 y
[FC][音乐12 IN 1]3 [4 h: B% R1 L! I; V
时间: 2023.07.236 A/ ~! F3 N. H5 a* |; O) T6 |) K$ i
作者: FlameCyclone
0 y8 H$ \6 Q: |# d& V* E( `4 A. F" m
收录音乐内容:- B4 |' Q! [0 @* M
1.Raf世界
6 H0 \/ Y7 p% B4 S6 N0 w2.最终任务; ]1 c% i$ f2 D7 P4 U
3.赤影战士
1 z, n# P; ^7 R* z4.双截龙/ G: A1 h% p0 M% q9 }+ |# @: ^
5.双截龙2# h( w) \" q* a1 p6 [0 @' @4 n
6.双截龙3
% {, {0 w" d( K7 y! G, u! Y7.洛克人
9 u, H! J* n- Y! h6 ^# p8.洛克人2; G8 v" F4 R% L7 {
9.洛克人3
6 [7 M9 Q. b5 G# ~10.洛克人4! T( V+ h6 F7 R: _. I, B$ q
11.洛克人5* V8 u0 K& M: S! ^: ^+ Y
12.洛克人6
0 G8 e5 @+ ^3 Q2 O/ N3 n# ?4 d1 S. ~
操作:
9 N; F% Y$ ?! d4 r8 O上键:         上一个专辑# @8 |! W2 n2 z1 u' \& O  m
下键:         下一个专辑1 U& s; k  `. Q+ \1 n# h3 c
左键:         上一曲
/ {! p; R5 [" X( M9 S4 J; |右键:         下一曲
7 ?% N! b$ A0 k- t' _B/A键:        前10曲/后10曲
' N5 J9 o6 M- D; a- C! y选择键:       下一页
3 p5 V6 S& W* [5 C# W5 z9 L) ]开始键:       停止/播放
4 l( \4 V" t$ W* [3 v8 [  f
! s$ f5 _2 F" J* j. O5 Whttp://flamecyclone.ysepan.com/
( v, @6 @* \0 s0 p. a0 `, _/ ?# ^% t, ], E3 N% K+ A
  I, a2 Z% s% h# u
- T" ?3 i9 ?; W# p& w  A1 p4 K

2 t8 u5 K! X% a3 @
  1. ;[FC音乐][播放器模板]9 c. e  X" H4 t& Z
  2. ;FlameCyclone 20230710
    % C; U1 |8 L8 B* h  Y  ]/ W4 W3 t

  3. / u( R8 s9 M. m) P+ |0 }
  4. ;文件头: U5 M& H* e, B& }) s* g, G
  5. ;======================================================================
    " K3 m/ g- m0 u" e: W* |
  6. .INESPRG 16                                             ;16KB PRG 数量) ?5 }0 z, d  u9 A/ F1 b) l. A
  7. .INESCHR 1                                               ;8KB CHR 数量$ t' n9 L' r. f% m  T4 M$ ?( j# j$ ~
  8. .INESMAP 4                                                   ;mapper 48 x8 c) A' d4 j4 a
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直7 t- V# R) o( l% Q& c

  10. $ {6 a# R8 c, K1 Q. K
  11. ;==================================================
    / h' N% ^9 W, U8 C
  12. SOUND_BAR_SHOW_ENABLE       = 1
    % G$ f! `, j% u; `5 M1 t5 j+ Z
  13. ;==================================================) Y2 Z' v, N4 \; x/ L, |$ v% U
  14. BANK_DATA_MASK              = $1F; o9 J; B0 A1 N$ X" ~/ s
  15. CHR_RAM_ENABLE              = 04 P4 v+ \; I% m
  16. IRQ_SCANLINE                = 136- m" Y$ @# V( {; ?' z
  17. ;==================================================
    . X& v5 t# C! K. `
  18. SOUND_DATA_BANK_00          = $000 m9 B& j3 G1 s0 I
  19. SOUND_DATA_BANK_01          = $01& u4 D/ V8 `7 I/ H9 _
  20. SOUND_DATA_BANK_02          = $02- q& ^1 @# x9 |/ X/ Y' b- S% W! [
  21. SOUND_DATA_BANK_03          = $03$ E: z( `! [9 Q% h) `  [7 U
  22. SOUND_DATA_BANK_04          = $04
    5 V  h( e6 y% o8 v" s. ?# ^+ }
  23. SOUND_DATA_BANK_05          = $05- i6 k9 ^: A3 }) ~) o1 ]
  24. SOUND_DATA_BANK_06          = $067 ]8 x* i' g( S/ U
  25. SOUND_DATA_BANK_07          = $07* d( }0 \- u$ _" l2 ?
  26. SOUND_DATA_BANK_08          = $08/ I4 A2 J1 P% v! I% o, s7 I
  27. SOUND_DATA_BANK_09          = $09
    * L' a' l& \2 W, z9 ^
  28. SOUND_DATA_BANK_0A          = $0A
    $ c7 p6 {( O. f8 r& m
  29. SOUND_DATA_BANK_0B          = $0B
    " B. t% Q8 ?* F4 [
  30. SOUND_DATA_BANK_0C          = $0C
    / d! c! T8 R/ p7 ?' w5 L5 O  z
  31. SOUND_DATA_BANK_0D          = $0D  h2 x' Y# E; E7 T* G
  32. SOUND_DATA_BANK_0E          = $0E3 E/ c5 p, C1 X7 f$ D
  33. SOUND_DATA_BANK_0F          = $0F
    0 Z  k# P  t% I. Z
  34. " ^# n* K  G# t* j+ l$ i
  35. SOUND_DATA_BANK_10          = $10' V7 x# ]' Y- M7 ]& z+ m
  36. SOUND_DATA_BANK_11          = $11/ C, M& k3 n4 S" t' U6 |
  37. SOUND_DATA_BANK_12          = $12
    8 t/ E$ ~& P4 J. n
  38. SOUND_DATA_BANK_13          = $139 q. t4 }4 [- O& z  {1 ]2 n
  39. SOUND_DATA_BANK_14          = $14  V* G* v1 P3 p  `( c
  40. SOUND_DATA_BANK_15          = $15
    ; C) Y# W/ A9 d7 m
  41. SOUND_DATA_BANK_16          = $16
    ) g$ E: R9 j2 ?4 d) _8 H0 b7 L7 ^
  42. SOUND_DATA_BANK_17          = $17& Y( `/ _; [, I& b- I
  43. SOUND_DATA_BANK_18          = $18
    0 U: N" q5 N$ m7 a, e) \& c
  44. SOUND_DATA_BANK_19          = $19
    1 C& k* S: N( T; A: k) v6 q
  45. SOUND_DATA_BANK_1A          = $1A5 Z+ ~: A9 ^/ O- `2 \% s  P
  46. SOUND_DATA_BANK_1B          = $1B
    " @; ?& D7 [& e
  47. SOUND_DATA_BANK_1C          = $1C1 K# o+ O# g* ?( Q
  48. SOUND_DATA_BANK_1D          = $1D
    2 h& D7 l# J: R

  49. 9 S$ [5 K$ s# S& H' S
  50. SOUND_DATA_BANK_C000        = $1E
    ! J# Y; y$ n4 S  Y! P8 U# V
  51. SOUND_DATA_BANK_E000        = $1F  _; i  ?( A; G2 K8 P
  52. ;-------------------------------------------------
    * z( B* }% }5 x( o
  53. CHR_DATA_BANK               = $20
    0 s% R& O$ C! z1 V+ x( a  R
  54. CHR_DATA_ADDR               = $A000
    ; p& Y  g% F: _# Y( V2 n& v0 K
  55. ;-------------------------------------------------
    9 u, C# ?: g" V+ [
  56. PROGRAM_BANK                = $00
    2 J0 x9 B. X4 N. H9 F1 L; y
  57. PROGRAM_ADDR                = $8000
    ; e$ N- C, N* c0 K+ l6 r
  58. ;-------------------------------------------------* u6 e# V, [2 N6 e! K, L3 B6 l" ?
  59. RESET_BANK                  = $1F& K# Y4 _: K4 j' G* B
  60. RESET_ADDR                  = $FD00
    # |+ j/ ^% Z1 I+ p5 l# E6 \$ E' }* K

  61. 2 H" G9 s. ?, z) f6 o" x
  62. ;==================================================
      \" j% k' |# T6 f# \
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数4 A. y9 Z5 H: a; T6 C
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引/ T. ?5 b5 \1 [* u0 |4 V
  65. PAGE_SIZE           = 5                     ;每页节目数
    " H) w' F' E) l; w, S6 @
  66. # x  i5 L) A, i; U& O) W
  67. ;==================================================8 a6 C. Q' j6 j1 b" A( r8 C4 j
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    ( ]0 i0 N9 R7 u& q: `
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数- b& _; g" r8 Q. c
  70. .ELSE& O3 B. s6 H( {8 \
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数" n0 `( C0 \/ U7 i
  72. .ENDIF
    ' n* P4 E" ~& u) J; {
  73. 1 W) s7 X0 ?1 q2 N% e4 k/ Z4 |& \
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引! p8 w) v. ]  u8 r( G5 E8 h9 F
  75. ' Q1 d7 w9 U# o4 P4 Q% P
  76. ;==================================================' g5 o1 W/ z% L2 v  C- q
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置5 F3 G8 [8 J) E& N
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    6 U8 t8 ]# I5 n
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;5 C( B8 c5 h% C: z0 R
  80. ;==================================================  ^: d- u* ~1 X" ?
  81. Caption_Text_Pos    = $204D ;标题文本位置0 |' B; x# i) x
  82. Author_Text_Pos     = $2324 ;作者文本位置: B# |3 @' r3 R
  83. Date_Text_Pos       = $236B ;日期文本位置
    3 l" x! S6 K. k" y4 g; `& g9 G
  84. ;------------------------------
    ; M6 O* T8 v0 D6 C  H, n' E) S
  85. ;------------------------------' W3 t* N; Z, k2 \3 Z3 [
  86. .IF SOUND_BAR_SHOW_ENABLE
    + s5 p- r1 @( e3 D
  87. 3 Y! H0 z7 x  Y* ]
  88. Play_Index_Pos      = $2273 ;当前曲目位置, S- o5 E3 V4 r1 y  J$ ^. [3 u
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    6 N3 r, A) ?( V+ t% q1 i+ `: Z6 C$ z
  90. Play_State_Pos      = $22F3 ;播放状态位置
    / u5 D8 w1 b$ g) p+ w  c5 Q' C

  91. / z7 C$ V) J. b9 o0 a3 u% P. z8 Y
  92. .ELSE
    6 _' ]8 _' y; z
  93. 4 f9 U( \8 |9 t* m7 R, R
  94. Play_Index_Pos      = $226C ;当前曲目位置$ }  \) ^. q. [0 O" T. F
  95. Play_Time_Pos       = $22AC ;播放时间位置
    . t, p; C2 S# W$ i5 _* Z8 E. k
  96. Play_State_Pos      = $22EC ;播放状态位置5 k" @, H9 S5 O

  97. 9 P2 |: M( X6 h/ p
  98. .ENDIF
    # J* e' L7 C2 B' h# X  g, ^
  99. ;------------------------------
    7 M# R5 Y+ t& k: L) |" O# u
  100. Track_Name_Pos      = $222B ;曲目文本位置7 A" L1 u6 p/ o+ F4 k) v, }3 u
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    . D; Q; \+ |/ f: ]4 \% I
  102. Sound_Track_Pos     = $2265 ;声道文本位置3 f0 K8 F" H7 f: ~7 ?5 O; V% \
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    , C/ |' I# P" n( c6 b
  104. ;==================================================
    ! S& U: s7 p- E+ X2 p) X
  105. Scroll_X = $00
    ( ~8 }& g, T4 S& e7 y7 z
  106. Scroll_Y = $00# k( w5 w& Y3 C; B
  107. ;==================================================
    7 `+ L7 B# f8 R8 c, n2 g; ?! ?
  108. Sound_Ram_Addr_1       = $0100
    9 W9 }# W1 ]& H* O, b% ]6 G$ V- [
  109. Sound_Ram_Addr_1_Size  = $80
    $ Q, U7 v, H. d- J& |8 G( O
  110. Sound_Ram_Addr_2       = $0090+ A1 V0 W5 {+ c$ Y7 O! x1 }
  111. Sound_Ram_Addr_2_Size  = $701 {# J2 a2 y8 l
  112. Sound_Ram_Addr_3       = $0700
    : Z$ b4 v  N7 _0 Q& v% z  |# d
  113. Sound_Ram_Addr_3_Size  = $003 m: w- K, W3 |4 A8 f
  114. Sound_Ram_Addr_4       = $0400
    4 _5 z1 i& H' }4 q8 `) \
  115. Sound_Ram_Addr_4_Size  = $00
    8 H8 C* H/ h5 d- o
  116. Sound_Ram_Addr_5       = $0500
    & ]; Y! s8 [0 ^- n( j
  117. Sound_Ram_Addr_5_Size  = $40- N0 I7 c. ^2 _1 o: f
  118. ; F( Z- h! Y9 A/ S
  119. OAM_TEMP_ADDR   = $0300
    + l. w' l" q/ x, |) T
  120. / t2 I* ^4 P+ ?6 F
  121. ;==================================================
    ( w; \7 E# e- [* u5 ~9 v# n
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器3 K/ O) `( p% v& l6 J4 i
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器1 V2 e# B' I; ~1 L* `
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    6 \+ \) d$ v2 G; ~, n
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1. ?8 D2 T+ Y2 C4 x' X, Y7 K4 E
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    / T6 e( E; h0 c5 c
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    + J$ V$ f! V( a- j
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    2 y, L/ n3 ]: ^
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    4 H% y+ b% i) D) O( P# J
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    6 ^- T/ c: w# S3 a- H% U" C& v3 F( C
  131. APU_STATUS              =   $4015   ;声音通道切换$ _2 n. @9 [  b$ s- i
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    . X- S' D, U+ r. k. J
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通/ J4 w5 j0 w1 Q- ?3 q
  134. ;==================================================
    6 b7 N- v$ _5 r0 V
  135. MMC3_BANK_CTRL          =   $8000
    - Z3 V! H# c1 l2 W, n
  136. MMC3_BANK_DATA          =   $8001
    : d7 z% J  [  s9 a" ~, C% L' e
  137. MMC3_MIRRORING          =   $A000
    1 C- x  R3 c; G
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    9 J1 [2 |3 j" K4 \  O. z2 D; D; G
  139. MMC3_IRQ_LATCH          =   $C000/ G3 m* p* m* ~0 X# C( E" I& F0 }
  140. MMC3_IRQ_RELOAD         =   $C001  I1 }" X) I( |) o. v  w7 y
  141. MMC3_IRQ_DISABLE        =   $E0008 u" L, D7 d3 q$ j9 X1 a- k. s
  142. MMC3_IRQ_ENABLE         =   $E001
    + [5 F" [: n' k

  143. + {. V% ?3 L: c0 F! O. j3 V8 g
  144. ;==================================================" Q( |( X. `' J
  145. PPU_Addr        = $0200
    . G; u$ F5 H) y6 ]# l* e
  146. Palette_Addr    = $02C0
    ' d. q0 |7 b8 J* y9 i) [
  147. Sound_Bar       = PPU_Addr+$E0) r; ]4 ^% o9 E1 C* {
  148. ;==================================================2 _  A4 j7 `; h( Z
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D& o, Y3 U+ K1 i8 ]  k8 P
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    / i- o6 s& D; f! L. Z
  151. PALETTE_UPDATE_MAX      = $2C
    3 p9 }9 }9 C2 J
  152. PALETTE_UPDATE_MIN      = $21
    6 G5 S3 t$ L' \7 x  n
  153. PALETTE_UPDATE_INTERVAL = 60; {! v3 w( v& k. ]$ V
  154. ;==================================================: g1 q6 J, N+ {5 }: A" P2 x$ j
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    $ Y! t; Z3 L2 t: E. X; G" Q/ W- ?
  156. PPU_Cur             = Sound_Bar_Cnt+$02# M. \7 d: i  I+ l) S9 F
  157. PPU_Addr_H          = PPU_Cur+$03( }' j$ A+ n& a( u( G0 O9 Z
  158. PPU_Addr_L          = PPU_Addr_H+$04+ O9 H+ g7 `0 M' g$ j4 E
  159. Screen_Ctrl         = PPU_Addr_L+$01
    0 V, r! ^7 s' e. p
  160. Screen_State        = Screen_Ctrl+$01# g+ X& z( N2 u( N3 @. p  i
  161. ;==================================================/ t$ s1 s" U3 P0 T
  162. Use_Ram_Begin       = $50
    - G4 m3 E2 Q. y/ f$ N
  163. ;==================================================' k0 {  B7 p" h( f6 U' p3 T. n  Q
  164. JSR_Addr_Op         = Use_Ram_Begin
    " v; f) V# l1 u' L
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    - G$ |) r3 W8 q9 a5 h
  166. JSR_Addr_H          = JSR_Addr_L + $01& B8 H* ^5 t8 d9 @" F2 r7 g
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    5 k9 }/ h3 c) l7 z- G
  168. Data_L              = JSR_Addr_Rts + $01
    & L$ j/ i/ |6 O9 S% c) n1 {6 M
  169. Data_H              = Data_L + $01
    & h" b5 S1 o! \, y* g" i0 x" @. z( e" d
  170. Data_Cnt            = Data_H + $017 ^$ P: w1 j4 p( n/ j, [
  171. Data_Buf            = Data_Cnt + $01% m0 P6 g+ j0 k5 |" l& y
  172. Nmi_Time_Count      = Data_Buf + $01+ r2 U' P- ?. z- ^
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    / W! Y8 X8 W- u! T# d' N& w
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01" D/ Q+ [# p3 d& N, n8 [) }. X

  175. 5 e3 m( ~8 j! L
  176. ;调色板刷新标志5 f/ D0 G8 s  K" E  Q7 f- ]9 I. l
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01) k* m$ ]" ?3 V$ K

  178. 8 {* J1 e4 @; }& Z) P4 [- d
  179. ;当前帧文本写入禁用标志, m2 H9 s6 P; M  ?3 }2 X
  180. Text_Disable_Flag   = Palette_Update_Flag + $011 ?/ d# D& I! P3 n/ A! H
  181. & x9 u. r" ~/ \6 }3 x. j3 b3 x
  182. ;==================================================
    # n' `' T" C2 ]1 F
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    * x0 i# }* |/ Q, J& N
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条* F! u, P" w& T0 }+ L, r
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    ! k" k% C/ _. v( X: Y
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    " m/ ?3 F5 ^- h( g% N1 l* u) l
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    & W! x/ @% o" E7 Y
  188. ;==================================================
      M; P2 `, y" {$ C( ^* _
  189. Key_Keep            = Text_Disable_Flag + 1: ?( z5 u2 R4 q1 X1 B
  190. Key_Once            = Key_Keep + $01
    : Q8 U8 ~$ r& M9 k: G: A) H3 o  J
  191. Key_Kemp            = Key_Once + $01
    : R9 Q% U: ^& X
  192. Key_Temp            = Key_Kemp + $01/ k( z9 {) i# J, Z
  193. Key_Getv            = Key_Temp + $01
      W  _6 o0 U! I1 Y* {& c" k* _
  194. ;==================================================. I& @3 Y! c; @) H' F
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    4 y* \& F- L  @
  196. Music_Item_Last     = Music_Item_Cur + $01
    ! y9 G( E) u; {- l' f" F
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    0 j8 J6 a% g5 Q+ s8 r! |4 d4 G
  198. Music_Cur           = Music_Total + $01  ;当前曲目3 u; n& S, {$ ^9 K5 x8 Y  N
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目1 \4 ?7 d, l4 @
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态1 u/ V. P5 Q+ @8 _! x+ y
  201. ;==================================================
    4 G+ {$ A  R5 ]' q
  202. HEX_Data            = Music_Stop_State + $01+ a6 o2 D- p. U0 `
  203. DEC_H               = HEX_Data + $01/ W- ]8 {4 \* a  f
  204. DEC_T               = DEC_H + $010 A( d+ C# S' @  z
  205. DEC_L               = DEC_T + $016 d4 V. d3 y1 ~
  206. ;==================================================; K: X# s- P0 O) @6 f! P% [
  207. Time_S              = DEC_L + $01: \8 l7 J. ^8 ^: `# T7 R) n$ k. J, q
  208. Time_M              = Time_S + $01; Z+ L8 t+ m5 d6 T9 u9 R" t7 d
  209. Time_H              = Time_M + $02
    ( ^2 ~" ^$ k) P3 f
  210. Time_Cnt            = Time_H + $031 y# E" ~2 U$ D/ g
  211. / F4 f/ N6 [7 l; @* B3 O% \
  212. ;==================================================( v0 S5 T. Q" O, N! Q
  213. Music_Bank_8000     = Time_Cnt + 1& L2 z7 E4 L! @; j; _9 V
  214. Music_Bank_A000     = Music_Bank_8000 + 13 B& f( f6 \5 [0 }9 q- ~1 b' I' v
  215. ;==================================================' r$ `3 E' F2 s" s! @7 O
  216. Scroll_H            = Music_Bank_A000 + 19 ?1 O" j6 \1 f- v+ T% @$ \
  217. Scroll_V            = Scroll_H + 1
    2 W/ E) P  p( w; t2 d: B# P
  218. IRQ_Process_Index   = Scroll_V + 11 t# {8 p( y' R2 r# G: L
  219. ;--------------------------------------------------
    1 t5 i5 u5 U! p3 E+ P! O" I/ P9 V
  220. Page_Cur            = IRQ_Process_Index + $01
    1 I( X% [% v. p% x
  221. Page_Cur_Index      = Page_Cur + $018 E- M! o3 l$ H6 ]( w7 {3 I
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    6 l" {3 ^* m: i; E/ _
  223. Page_Last           = Page_Cur_Cnt + $017 e8 d* n8 V/ ~' N- f
  224. Page_Last_Index     = Page_Last + $01
    2 _0 t! w3 Y+ O9 Y% L
  225. Page_Last_Cnt       = Page_Last_Index + $01% F5 C8 |0 E' o& j9 z  A
  226. Use_Ram_End         = Page_Last_Cnt + $01
    * E2 ^# y9 b1 H+ C/ G4 k7 j0 i. ?
  227. ;======================================================================
    - \! i* ]! c0 y
  228. ;音乐数据块% o7 E3 K3 H# Q& r  l

  229. . _" x) m& U' M1 r3 b
  230. .IF SOUND_BAR_SHOW_ENABLE, J  J2 i! e5 d* d, C

  231. 2 L0 |" G9 z' x
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK, V( ]7 m3 w6 n7 u5 z& ^' ^1 d
  233. .ORG $90002 x9 F1 O9 z7 l4 B2 S1 }; e
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    * }# n# c. f" V0 o$ H( y; C3 J# X
  235.   s1 f$ E7 \0 U9 I2 ~: r
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ; d3 C( ?* i" a2 k
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank", j& }$ O  v! |1 |/ X; K- c2 H

  238. - G; J3 `# v. }" w/ F: e1 n
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    4 a% X3 {/ \4 m7 c  \' M% U
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    - M; Q  y" L$ I" ]

  241. $ U- E" J8 O: [  f/ Y
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    6 ]9 c6 q2 h+ N
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    + k3 D2 v4 w+ H; q2 }6 m: Q( V" l
  244. $ t) H% F6 w* q1 \
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    % |# }3 {0 H% L5 i4 X! c
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"" x  o$ i# Y$ G

  247. $ ]) e. c& d1 ]. I, x% t  c' }
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK9 `  d' I" G9 p2 @$ r. l
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    8 j4 r; x' N6 R! I$ l

  250. ! {- f5 F6 z. K2 y' u, O. T
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK( q' y2 N9 }) d0 o  j3 w
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"# S% j9 `+ r& z' u1 A+ l
  253. 8 ]$ Q$ Y& R( q" i& w
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    " N) Q% r  H/ C1 Z; M
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"6 a1 g+ f/ I* r9 k: L/ a- K1 Q

  256. ' p& T# I# J+ ?" y/ A9 I8 z, `
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    ! L) {! ^" }2 a+ y/ s
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"4 e  L5 L" F$ @3 A/ j) a
  259. 1 h' U' p& E% j8 {& G, p
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK; l  |# O2 D3 y. p, y& `+ Y
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"* L. ^$ t! T+ V4 b9 @
  262. 1 f+ N& i( b& h/ z, _- W
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    6 T+ s7 I% B8 K$ b& G' P& t
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"% a4 [6 I5 D$ F! o- G
  265. 6 Y$ N0 k' K$ d$ V+ V3 J8 B
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK5 P5 W8 V8 h' m) Q
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    6 |/ T4 Q9 k4 U5 J( s( g# _+ G/ c

  268. ' v2 y/ P. i3 d  a
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK3 l# L2 p. `* c( x& ?3 W
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"+ }- D' y% `2 T

  271. 0 H, l  F8 N( j, K* ]
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK' l7 H; i. H% m4 D- ?
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    ' F0 ], q# R. Y! ^
  274. 1 S5 _* L" O% E2 h) C# V
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    1 `9 S+ h3 _3 m. O. S+ r% C
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    8 ]/ i# g  P, Q! k+ c

  277. - i4 ?5 A1 @1 h( O1 ~# D
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    1 U. n2 Y$ y& _+ {1 m1 K! ~
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"2 N! g, ^* U4 g3 p8 w: k7 C; l# ~
  280. ( [+ c: A. P% Z# M5 u  u
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ! a! b4 r: i# i7 z1 G2 w+ F
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    & Q9 y5 E$ n, [

  283. , `: S, m7 s5 y
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ; ?8 W( ^/ Y, t  Q. V6 u& D/ K
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    0 h$ q9 V/ V6 |: D$ i, E" }) g6 Z

  286. 7 K- |, j* z; U# v4 E9 }" }
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    : w( w6 @# j0 T5 W& Z& }
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"5 }% b; y3 Z1 x
  289. * \0 p8 @3 B: H/ M4 T/ T
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK5 L; J9 S6 }$ G; a" m. T1 C9 [
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    % ]; h2 e0 J6 V/ q& K' D

  292. - W( O% c9 t2 F2 E' B
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK0 u; j5 w+ q- z$ s: ^- U# A8 {
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"5 d: K. w: r. S: t, C5 T; o& S0 z

  295. # t( ]" g8 G/ o& W1 w2 r
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    % |5 @7 ]% H# u
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    ! J- y) A; b, _( \- b
  298. 6 @# M- w* q9 [5 M( I2 X% P* g! F# ?
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK, X+ O7 ^7 M+ {$ l3 z' b% ]; o' q) {
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"1 r) {" G, t: c2 U

  301. * T1 h8 Q; a( r' O9 _5 I5 A  k$ l
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK( v3 f$ V7 q, a0 T  u0 O7 q7 b" ]( P
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    ( B$ H7 _  N9 B% b- O6 a! [

  304. 8 J9 l3 F# _# p; }' S
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK7 c  T5 @' W) }8 y) n# l9 R
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    2 S  e9 S/ M: {7 f) p% {  z

  307. - R( o' Z  V  Y
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK, V3 \2 Q0 W# j" X! J8 `6 X
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    * e" Z* }$ l& d. P6 f

  310. 9 i9 n- V# P: O/ F' t
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    6 @) P# S. W7 U7 l
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"8 g, u* x2 M2 \  X8 M) _
  313. ! n8 \; B! @* G$ V, x  ?
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK. G6 Q# T0 x0 D. P. G2 a
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    / E+ f2 ~! a$ O. y6 @- S
  316. ! h( ^: p7 ?+ w  ~0 {
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ' [" P1 O3 q2 W3 s8 U
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    $ p, c2 C$ V4 m

  319. 9 R/ G: V  f7 @2 z8 G
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    " w6 K/ a3 a9 F- `! M! U! G
  321. .ORG $D400& X' c& l% E( o* }1 n* J" L( G  Z" N, h
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"3 A9 |3 \/ J3 S* Q

  323. ' ^' O' T0 h  y% l
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ; A" P5 u! m* @2 @4 u; c% ~2 G# y
  325. .ORG $D800
    : D$ k4 @& Z0 ?2 v/ ^
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"" d% ^7 n; W# ~. s6 ]
  327. % Z( J! [& K5 v% c! Y* I! M& Z, z

  328. ' `% [5 S8 K1 x7 M
  329. .ELSE
    $ O3 D5 b+ V; f9 @9 P3 M
  330. % f: M6 H6 z2 s5 X5 X4 Z1 N& \
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK, M5 }% }% [! |, C- x) D
  332. .ORG $9000
    3 U' Y& p% F! k% @3 {5 I: Q
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    ; {9 u& D% N( l' s" S, L3 V
  334. ) m% m! V9 {* e0 t9 i( |$ b  t
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK. C" O! P) G/ O# Y4 |% ]# l3 U
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    2 r- y* j/ g, f, n, I7 N, J

  337. - K, a& W3 H, k3 m$ `: p9 w3 g
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    % G( B$ d( {2 D
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    % n" e8 }8 s5 b7 `5 r
  340. * y# \  Z  |/ K, T% d$ Z
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    * [2 @% Y4 p$ y# o$ e8 s
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"2 M" p1 @/ \: p4 q$ ^

  343. 3 e& W  r: e: Z& G2 [7 f5 |' F
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    # ^: E( ]; I3 n) ^  [/ Z
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    6 J8 p# y5 G9 }1 W
  346. * R/ X5 o+ k7 c& z3 v% B
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    ' p0 Z" Q+ t4 X! k- }" O
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    ) d& J) j9 u' Y. z# K$ B2 r' ?1 V& b

  349. 0 m7 {  }( Y# w  r' b$ e
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK# a9 G) l: }! f. {( H3 T4 a" N
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    " Z1 C/ w( e; A( C+ x5 I
  352. 0 y. B3 ~( _: o
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK/ k, `& p8 E( `2 @& @, ]. {
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"4 _+ ^; t, T. U- ]. L
  355. % _5 v% W. C$ l1 d' F8 q5 ~
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    / f! N, _$ ^. x7 e# z- S' |
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"+ f6 c9 o, q) Q# @/ V- u# h
  358. 4 {2 j* _6 N9 E
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK* A9 D8 Z1 l# ~- a  `; \0 k
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    6 F; Y2 I3 x+ r- B
  361. 7 ~3 ]# |" F- t3 Y) _# ~
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    0 C9 m0 R/ Z: |- p
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"
    % y5 x" B+ A! c+ w4 c
  364. ; C" P7 I. t( e; a0 N( t, v8 y& z
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK  ?( c1 O# ^4 ^  `1 X# V; I
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    0 S  w) k1 f9 ~5 M% H' k6 P
  367. 8 X- a( o: S' n+ e" F
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    5 V/ Y  I( {( j7 Q+ q; @- ]
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    % o& e6 t3 p2 Y' @3 V* ?' f4 K- B

  370. # a+ Y% p% M; n, |4 w7 K) ?& c
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK: G' U3 a1 w  O7 w
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"6 O* B/ E4 c7 u4 O8 I  r0 E

  373. . Z+ @! q0 m4 f) F: @: q% U
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    * E- ~: S/ ]* U6 c
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    : x" j) z1 M: L! x# a; Q7 w
  376. , L' ?* U$ |  G4 ~$ S# r$ X
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    $ u6 M8 L' ^) \" J# Z9 z; [# I) s
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"  l' q! }) V& T
  379. ' O  Y/ Y1 ]3 t' C$ D
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK. E6 V0 y* [: M2 ]- d. l: Y
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    ( v4 o1 M4 ~; [9 |) o1 N6 C
  382. " v: N6 K) Z5 Z: ]; @$ J/ [
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK4 A& ?& m' |) s; y6 L
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    . k& V  g9 P, r  j

  385. ( J' W+ x) U" u) T1 _
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ) F. W  g/ w, ]
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    5 R: n) k+ Y( [. y
  388. 0 @( C  ?' C7 L$ y- r) b, r1 e8 d
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK# \) e; H3 k2 c  c( {8 ?* o
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ! A0 B: f" ?" v) h( m# w+ X# A6 N( W
  391. 2 `0 K4 _* X5 s
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    / t" ]9 I9 R7 C7 `' u& T6 W
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank", h6 }3 S$ P- @2 C% _$ X5 \; _
  394. ' P& A4 m) _9 J3 R) [* ^
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    " k+ L$ J; R9 `7 A+ w$ A
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"- v: v" X. c% c2 w

  397.   a4 [# W9 B& y2 @
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    8 u" _# |& E% ^
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    - K0 J; q3 U- p
  400. 5 }' x( c8 h' P3 l+ `8 H8 L6 d
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    . ]$ z( R' l  z% Q  d' m7 T
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    + x+ L3 C, [" ~- L  t

  403. : L& E) V- f  @1 n3 j2 S9 s5 Y
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK8 G+ A% A; ~, p' J: I7 D
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"5 W+ ~: `) v# I5 @/ ~9 V7 \
  406. + ]% S6 y7 m9 Q# T
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    / ?/ M% L, c" r3 G! X3 U* M% o9 r2 \
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    ; h) z9 X, r) B2 Z6 M
  409. & B; l8 [4 y/ x0 T) m9 A
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK: ^1 F% T1 R3 V
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    9 k4 _% X4 v0 c( T; q( o% \

  412. + j1 E- x4 \. `0 `' N9 b& v
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    & N5 t) e$ B+ D- T+ S3 z% |
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"4 d1 o( v; A- D9 U$ i6 H% p

  415. , _# Y3 Z5 f6 @8 D& ^; U
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    . P" P- q+ A7 \* @8 N
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"+ Y5 m2 g7 H' g; {
  418. # D* T' G9 G+ [+ |7 b/ L
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK' a% p. \# R5 L( k1 k  }
  420. .ORG $D400
    1 `" Z; o& [" r
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    ' A& J7 Z2 B: W; K4 b' `7 |( K) d
  422. $ t5 Q& _7 _3 j
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK3 k  E+ d" |0 d
  424. .ORG $D800: E6 z: \2 J# w
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"' a* O. z. E% A, \
  426. : ^% [3 r' f' h, U4 V; ~6 S4 B
  427. .ENDIF5 E0 ^: A9 q* r  Q- d+ e$ d) c
  428. $ s  h' W  b) y. i0 T3 y
  429. ;CHR图形数据
    4 N; K6 x# C( `3 P6 f3 m+ c
  430. ;======================================================================* @4 i' T- o/ t. T9 w, z, y7 T  Q
  431. .BANK CHR_DATA_BANK* R$ o$ |0 S0 S
  432. .INCBIN "chr_bank/chr_data.chr"7 F, H% @8 E( \: |$ T
  433. & [9 K# I/ ~! S3 Z6 t8 |# B* Q8 V( U
  434. ;======================================================================
    5 H% n- E, n5 U7 @1 J* R) V1 i. D
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK* h+ P# W/ i$ g0 W* Z/ u
  436. .ORG PROGRAM_ADDR8 d2 Y& u2 Y# e, r1 q+ `- t

  437.   Q1 O( c% s. T) V6 J
  438. ;==================================================
    ! I( ]' {$ r6 ?* g
  439. NmiProcess
    * n( ~. C$ u& m2 ^3 @/ b
  440. 5 i( y9 S' k9 C* F9 f; k" L
  441. ;关闭屏幕控制
    3 L5 u8 F/ I# E! ]
  442. LDA #$00% x2 J& W: P2 R* Z& ~
  443. STA PPU_CTRL3 p! t" y& z) ?8 G* g
  444. 1 d$ A7 H1 i: u' L& ?3 B0 e
  445. ;没播放音乐就不需要触发IRQ1 K, M' S. K! v
  446. LDA <Music_Stop_State
    3 P) o. R; h3 P& h* c2 U" B2 O9 U
  447. BNE NmiNormal# P( D& D# Y# d, l" C* c8 U

  448. / d- s& |7 t4 k! E$ Q/ k1 J
  449. ;重置IRQ索引* u. P' n/ B! u
  450. LDA #$00
    ( ~% e6 ?9 h" E: o) Y. z3 b
  451. STA <IRQ_Process_Index& d6 H# \" z9 K; R
  452. 0 m4 _* m% j7 D$ a! W7 F9 U5 m
  453. ;时间秒数为空则跳过! u, m2 }; D- @  R
  454. LDA <Time_H% ]2 G) v8 c' Q  J  p+ L  {/ u
  455. ORA <Time_M
    & l  T- _# K6 M3 Z. l
  456. ORA <Time_S3 Y0 F6 ]! l  N; c+ X* ]) l( O( U/ m1 }
  457. BEQ EnableFirstIrq* v" `! b- T3 I) b) o% R0 Z
  458. 1 }* E1 E% X( c8 A" E
  459. INC <Scroll_H) ?- p" }: I' X8 X' k: C

  460. 7 l5 E; e1 G# G* S) H
  461. EnableFirstIrq 0 C- ?$ q* Q! Z% I1 o/ W
  462. ;80条扫描线后触发IRQ" m! P3 C( [( D" \9 U& r
  463. LDA #IRQ_SCANLINE
    9 o. w$ ~$ U' ^) G6 R2 v" r9 N
  464. STA MMC3_IRQ_LATCH5 }- k; u$ ?% [2 R) ^  S" U
  465. STA MMC3_IRQ_RELOAD
    ! k& [5 r! n  Y2 u7 ~( K* L: j
  466. STA MMC3_IRQ_ENABLE  E2 Z0 H! K& H9 X7 k
  467. CLI& C1 z2 ?. C' X0 M
  468. 8 n( m+ o9 m! @6 s0 w; E( O
  469. NmiNormal
    8 v8 L$ p5 Q2 `# |# z2 o& ~0 G
  470. 4 X% E& M3 x/ k5 j
  471. ;处理PPU图像
    # y. `9 v1 ]+ U. {
  472. JSR PPU_Proc
    6 w! |( I/ A7 i+ f2 u
  473. . P8 v# c, E# r$ z3 K
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)& G9 G; s5 W  s4 B  R
  475. LDA PPU_STATUS% t! H! d4 |) Z$ V: ^4 R
  476. ;LDA #$00
    4 S8 W5 M& R! n
  477. ;STA PPU_OAM_ADDR
    ! }% X' x$ Q5 _' r+ t/ h
  478. LDA #OAM_TEMP_ADDR / $01001 O0 e3 q# E( [8 c
  479. STA OAM_DMA
    & R9 A" l# d( S2 S/ o3 {

  480. 5 T! R' r- `  [8 h8 @. S  \
  481. ;启用NMI中断% Y5 B6 l& [  @& m
  482. LDA Screen_Ctrl( F3 v' B! X( L# g. b6 I
  483. STA PPU_CTRL% C- h$ P9 L9 e' d5 H. d8 b

  484. , X$ `& F( e9 _( e* `% v
  485. LDA <Text_Disable_Flag8 o9 I, @) W* r' d0 j
  486. AND #TEXT_DISABLE_RAM
    ' P6 i7 z" V( d( R
  487. BNE Nmi_Sound_Play; q9 f& r4 S4 ~- g3 b' ]8 S* ?
  488. " Q% {- b9 B+ g) b' N
  489. ;处理手柄输入
    ' s9 `& a- m# v4 k
  490. JSR Key_Proc% J' t' [' x  `2 \- @3 m# n
  491. 6 F" Y+ \0 u+ a' \
  492. ;切换音乐(手柄触发)
    " f$ q) [3 W. h1 f0 @- E/ S8 o0 v
  493. LDA <Time_Wait_Cnt! r: u( {' M) k9 e3 ?
  494. BNE Nmi_Cursor_Arrow( X) O0 q0 \' E4 F& M" Z7 ^; b) ~
  495. JSR Change_Select_Item( k, ~6 M+ k. O- {  w

  496. 6 P( m& N% {: `; I# K
  497. Nmi_Cursor_Arrow* M& w3 Z- h$ p+ w/ d4 _
  498. ) r& o7 @9 z! R5 K0 q# R$ d
  499. ;处理光标箭头8 b9 n( b: ]2 ]3 J* Y; w3 T% t
  500. JSR Show_Arrow6 C5 H& m3 s3 }

  501. - @9 j; a# m; F2 M9 h" E
  502. ;更新调色板
    , {* Y, M; i; x# F' c
  503. JSR Update_Palette_Data) a6 t# P* ^9 X# e+ i8 T5 J

  504. & s. Y9 Q, ?) }) X
  505. ;显示时间(缓冲)
    5 Y8 g7 @( T; r, ^
  506. JSR Time_Show& V: Y. ^7 D+ P  Y' _
  507. 9 M( @' P' D8 ~% w; k: V
  508. ;音乐显示(缓冲)) l0 O; D/ }+ E. C
  509. .IF SOUND_BAR_SHOW_ENABLE4 _9 [: \; F1 V) I9 k
  510. JSR Music_Vision) f1 s! e# N* }2 q4 p# N, E
  511. .ENDIF
    3 s( [7 E" F, z! ]$ y# c# Q9 k3 a# A
  512. 8 h, _1 f1 @$ K8 {$ j4 O0 j
  513. Nmi_Sound_Play
    ) l: C5 j5 y+ V2 m6 q2 R, T
  514. ;播放声音
    8 T$ G0 ^3 @! s  @, k
  515. LDA <Music_Stop_State; B1 K3 ^1 K; m4 n: q% U
  516. BNE Nmi_Time_Wait_Set
    * h% k7 H4 \9 N) t3 L. A
  517. JSR Sound_Play_Proc# C' _- C2 W, x, @5 K# Y/ {

  518. 3 }$ i# N+ h" }8 }& }7 i
  519. ;播放计时
    ; i6 f- N6 C# t4 d- n+ v
  520. JSR Time_Count
    + C. x# V# z4 e

  521. ; T. L- S( x5 s( J- X6 Q8 N, b% @
  522. Nmi_Time_Wait_Set7 d: b& N2 F0 |" j! D" d' O
  523. LDA <Time_Wait_Cnt
    $ S3 R. b' ]) @+ Y$ k
  524. BEQ NmiNormalProcessEnd0 C1 a3 y- H% H. V/ R
  525. DEC <Time_Wait_Cnt
    / T3 F6 z1 ?3 A1 ~0 w
  526. NmiNormalProcessEnd
    2 B0 M) s3 S, i% ]4 d

  527. ' z) ?1 \. m9 x. y& S( E' u
  528. INC <Nmi_Time_Count
    # W' e( k7 E. L" D# o) A

  529. 5 _3 M3 y4 z- X' Q" I# `
  530. RTS
    / z2 }* k9 E/ `3 B
  531. 3 h6 H5 {, o1 J. I5 Y2 h& K4 j
  532. ;==================================================
    5 O1 ~; v: w6 `! V: U! C3 P
  533. Init_MMC3
    5 q: Q( t- Z& s# y: Z
  534. ;==============================$ Z( e4 j5 e% F0 H) ^
  535. ;禁用IRQ' }' |" V; _* e: N5 |
  536. STA MMC3_IRQ_DISABLE# ?9 F' {  @1 a6 ?+ y

  537. 7 F% W, K' w5 g' _
  538. ;水平镜像, |: T  U+ G( i8 P  _
  539. LDA #$01
    ( E2 n) R5 j" d, w" `
  540. STA MMC3_MIRRORING' @" R; v8 ^% D" C  G; u) n

  541. 0 q" \4 \9 O% a* ^( x, u% m9 J+ G
  542. ;初始化图形bank. v1 e/ v3 C6 j. \3 P3 G4 [7 R) y6 D
  543. JSR Init_MMC3_Chr_Bank
      S8 A, t7 P+ X0 ?& j6 J3 w+ N

  544. 5 V! j1 G5 y* ]- ?8 J
  545. RTS
    # l* g* \5 V9 u
  546. ;==================================================/ d  b2 X! j3 ?7 w! G$ R( ~& Z
  547. ProgramBegin;主程序5 g! G# U* x7 J& w! C4 r& [
  548. LDA #$00
    % |3 v' W8 Z7 A3 c! r+ B6 A9 S
  549. STA PPU_CTRL
    0 p2 B: w, B& Z: v' M/ F0 f
  550. LDA #$00
    ' T8 o4 f5 s% F5 i, z/ l4 B) Y( s
  551. STA PPU_STATUS
    ; T; h7 X- C$ e; u  m
  552. STA PPU_MASK
    . B% N8 c. o$ Z6 t- o/ C
  553. STA JOY2_FRAME) o" A0 f/ ~! n- D: m
  554. 8 i) Z3 X2 l+ G% k. T! M
  555. STA PPU_SCROLL
    & J" s. G# `8 v; A
  556. STA PPU_SCROLL
      |( H* v# u7 O0 K

  557. & e) g/ p% _5 |) f  V; m
  558. ;==================================================- v; F, c6 z1 f' M2 w9 \7 ~
  559. LDX #$FF
    ! b, ]: g. Q3 E& V- K. F& L0 x
  560. TXS
    : L2 W0 K. a  i% \9 u9 x; V

  561. : N- c& a- E. `, e2 @  ^5 c
  562. JSR Init_MMC3% w7 X: q1 u. ~- l) e

  563. + N; b- Y2 ^% N# B5 |
  564. LDX #$02& I8 Z7 D( u9 g! k% w  Q. f# r# Z
  565. Check1: y, s7 \+ A8 F/ t
  566. BIT PPU_STATUS- J7 h7 Y* K4 U/ m! W0 z8 g
  567. BPL Check1
    : r6 p; D$ [# S# t
  568. Check28 T; `, x3 W: e/ y$ L7 `6 O
  569. BIT PPU_STATUS. Q; q4 A9 d/ \3 t$ U
  570. BMI Check2
    9 b0 e, l. U0 K0 r- I

  571. 6 c7 _. W# o" V+ e4 g) o8 _
  572. LDA #$0F6 O9 W* T7 s* w
  573. STA APU_STATUS* n& ?! f9 j( O: p& l
  574. LDA #$C05 K$ Q" ^; R# K" |
  575. STA JOY2_FRAME0 x4 ?6 y% G9 O& i$ t9 f

  576. 9 {, ~: ^$ G3 G5 K8 ^3 Z' v$ g  X! L
  577. LDA PPU_STATUS7 G7 o; V% g$ ]4 q. ~
  578. LDA #$10/ ~  p1 ]3 ?' w2 ?+ I/ M
  579. TAX
    6 e6 o5 a: t; }, C/ _* b6 R+ R# @
  580. Check3% s$ Q- l4 n/ b5 o% M' |/ t% {& H
  581. STA PPU_ADDRESS
    : O8 A8 s, L' J! r7 A3 V- o  s
  582. STA PPU_ADDRESS
    " K4 h# |( ]7 E; a9 a. K
  583. EOR #$00# l) f$ G+ ?* ^% P" Q) w
  584. DEX
    " u7 T+ W2 B- [/ K( c4 z1 S7 N
  585. BNE Check3* [2 k4 v! w* l6 R5 q0 u6 _) Y& `
  586. ;==============================. |4 T4 Y  G) b) a/ c8 B
  587. ;调色板清空
    6 X: F; S1 E  B; c) {- i* v' e
  588. LDA PPU_STATUS# ?3 Z: z: M$ e: g( v- j* D! b
  589. LDA #$3F3 R5 N# r- Q9 m5 U/ Y( |9 B
  590. STA PPU_ADDRESS0 k  d! R( [. t7 x# o( u
  591. LDA #$00: @1 c5 U( o; Y/ W
  592. STA PPU_ADDRESS
    # m( D+ F" K+ T# u3 m1 I
  593. LDA #$0F
    ! a( j2 k4 |! n* c4 ]$ P  F
  594. Palette_Clear: S7 O* h9 [" @: Y3 \: k9 o
  595. STA PPU_DATA
    0 A( U$ C- I  ~) {8 X
  596. INX
    5 f3 X( x, [) k  P/ K' R* O6 }
  597. CPX #$20
    0 [+ O' @0 ]' G" r. M
  598. BCC Palette_Clear
      x3 j# f1 `' t8 y; ?' }( {
  599. LDA #$00
    9 b3 N" o+ N4 }! j% ^- b2 X) W: B
  600. STA APU_STATUS# Q  x9 S7 l3 p  ]4 A8 t

  601. / V7 k, ?& X: F# F6 Q" F  b
  602. ;==============================
    - x; \) N9 ~" g2 C3 D' e) Y9 Y6 g
  603. ;RAM初始化8 Z; R6 S# H1 Q9 u
  604. RAM_Clear_All
    $ f7 N5 k. G8 t
  605. LDY #$005 C3 }* N0 g$ w9 J, v
  606. LDX #$08; Z) \# z1 p7 A9 I$ s
  607. LDA #$00
    ' i2 C2 B6 m& X# H
  608. STA <$00
    0 t, v) Q" X& U  Q/ B
  609. STA <$017 K+ ~& N, _( x# v9 \
  610. RAM_Clear_All_Start
    / }1 E, |1 d3 j" [: _5 v
  611. STA [$00],Y
    0 b& H8 L# }5 y1 i
  612. INY
    - m+ z8 g3 g1 k  x
  613. BNE RAM_Clear_All_Start
    & E2 w% O5 t* n
  614. INC <$01
    5 ?; h) n% v2 g" T: ]: O4 G# S2 {
  615. DEX9 C4 s7 @% q% ^9 E( q  n7 s
  616. BNE RAM_Clear_All_Start
    : A  @" ^4 A0 K8 Y- H2 ?
  617. ; ~4 ?9 [9 R  y
  618. JSR VramClear
    6 t0 P- p5 s9 X; S& C! f  p
  619. JSR VramInit
    4 J6 n9 }- t: Z. E
  620. JSR OAM_Ram_Init7 b* o+ E2 B2 a+ i5 b% [
  621. JSR Init_Palette_Addr( t; W- \* ^( J' a% Y' ?0 u' V

  622. ) p0 K$ V4 r4 y. N: L/ a5 R" m, ]8 u
  623. LDA #$FF4 Z- r9 l( m* t& X3 C" x
  624. STA Use_Ram_End
    - E  c  C9 |/ n  S" j
  625. ;==============================
    8 D1 k! g; d* W1 _. T
  626. ;初始化背景调色板7 S* g. {6 f# G: F2 Y( B6 Q* v3 Y
  627. JSR Set_Palette_Color
    , |1 L& y1 D3 ^9 y- ]9 A9 @2 C
  628. JSR Set_NameTable_Attributes0 d$ j# F" o7 y- N- M" P

  629. 7 E; t3 F* B" z" O" r& V  f
  630. LDA #$00
    8 g# x7 W: T  U) S
  631. STA PPU_OAM_ADDR
    4 B. ?4 }1 z* i( {+ }
  632. LDA #OAM_TEMP_ADDR / $0100
    , s( q+ a5 t: [9 M& L! Y5 E+ s
  633. STA OAM_DMA4 A. H9 E. I( F- ^8 W
  634. 4 e8 g8 C/ r: O/ U6 O+ D$ v  ~
  635. JSR Sound_Reset_Proc
    ) |- j$ ?  E+ B5 N+ l4 T: j
  636. JSR Set_Sound_Total% a" R; J' L0 h6 H" m9 u
  637. 7 m# W, U5 H/ T9 e9 p& y- ~0 `
  638. Init_Start_Music
    8 s  `* W6 I( q& \* ^% C
  639. LDX #$00
    - q9 J) j: k/ O  [
  640. Init_Start_Music_Write
    2 n3 [3 o" N4 x
  641. LDA Sound_Start_Port,X% k: T& [. W. J& @
  642. STA <Music_Cur,X
    / g2 X0 U+ l" _/ M8 o% n
  643. INX
    ' s7 L# l4 L( J; X1 r/ W& b
  644. CPX #ITEM_MAX_SIZE9 y) _) \1 B/ ?3 K$ D
  645. BCC Init_Start_Music_Write9 E6 X  V! B  a3 ]& T2 M8 g
  646. ! r5 z6 M$ [9 B0 Z
  647. JSR Show_Music_Text
    - A; U3 h- K+ O2 l
  648. / v2 W0 X: Q6 v, }- A. Z
  649. .IF SOUND_BAR_SHOW_ENABLE# J% p, H6 j* z  P2 e2 X8 e
  650. JSR Sound_Bar_Text_Set" n$ R9 ^) J( Q, T3 b) |9 {9 I' X
  651. .ENDIF. ]9 X3 J7 `+ h0 H8 {2 n8 [( I6 e0 s
  652. ) K/ E5 B% {$ U3 V
  653. .IF Track_Name_Pos  J* f: N) i% S
  654. JSR Show_Track_Info
    , s# c- j  ^! I+ d
  655. .ENDIF; e, W* b( M* i2 x* ]

  656. : k7 Q1 n" w0 m/ D" a
  657. JSR PPU_Proc6 i$ t: ~6 O) I1 u/ T+ ?: x) P* ^0 o
  658. * |- U4 g* L$ x' a
  659. ;==================================================
    6 k0 ]% K% z  ]- k: a' O
  660. ;音乐bank初始化
    4 P! P$ m3 v8 l+ X
  661. JSR Init_Sound_Bank3 m8 M) r! U$ e7 A- D
  662. ( Q9 W6 r; Z0 Z/ U$ P- v2 n
  663. JSR Music_Show
    / l2 L2 M, {# _( a# I
  664. JSR Time_Show+ w! s: Q! S* l  B7 S( G
  665. JSR Music_State_Show
    & N3 s2 D3 P/ |( l( [& S
  666. JSR Time_Delay5 Z3 _# d. f! j! t4 O. q

  667. ( c6 b6 S3 m3 x; q) o$ ^4 a# r
  668. LDA #$01( O3 I* k( n+ `* }7 V9 L' R/ q
  669. STA <Music_Stop_State
    + _6 \9 M* f0 y9 S  N8 v* e! u

  670. " }2 |% d# T$ G; C% g: X8 s- j
  671. LDA #$88
    4 @5 o3 }3 [' C- {5 {& t0 V
  672. STA Screen_Ctrl% L! a. n* ?' G* X
  673. STA PPU_CTRL
    8 Y4 ~/ R) O# Q' f

  674. % j" o; V5 D2 b4 ^9 B
  675. JSR Show_Page_Text# G% T8 Q9 H% _% H. c" k7 P6 U( |

  676. - A+ a, c. L4 {
  677. LDA #$106 {0 [9 A* a, ~" F0 N" v: b: u
  678. STA <Time_Wait_Cnt# _5 h( c' r- m6 J  a8 U$ W! r

  679. 6 A* s) l# W% d& }% N- F
  680. Wait_Time_Over) r& W: L& u6 m1 P5 Z3 b8 C& G
  681. LDA <Time_Wait_Cnt
      D& x0 q! L3 D% F0 ~$ b
  682. BNE Wait_Time_Over6 j3 l! F' t: i% c$ N6 l
  683. 9 u# l  ~' l- E7 u5 `
  684. JSR Show_Arrow9 i4 [  p9 D: l1 l( b5 ?' L
  685. LDA #OAM_TEMP_ADDR / $0100
    , H- k2 _2 W& ^4 F! w, R7 K" V2 ~- L
  686. STA OAM_DMA
      p% a6 ]5 w+ ?$ M: J2 ]
  687. * ?& e. J/ y8 ]
  688. LDA #$1E
    6 p6 u5 i! S' O; \7 T+ g. x
  689. STA Screen_State; A. ~: m( }" n8 h; S
  690. ' b  T! I2 t3 ]! F# s( [
  691. LDX <Music_Item_Cur
    ( t1 k, m, R/ F
  692. LDA <Music_Cur,X
    8 v* O, U6 _7 b* ]$ t( P
  693. JSR Sound_Init_Proc
      R/ @! }, @8 r- ~& r
  694. ; W1 L6 d% j- [4 V8 d& W
  695. CLI
    ' k! j% |( T4 `
  696. JMP MainLoop
    ) F$ \- ^& c( @% P5 L, q2 Z
  697. ! l- Z- J4 Q/ V" f
  698. ;==============================
    2 B6 X1 z/ E+ Y  E  I
  699. Time_Delay;延时等待/ S" q! |0 W4 c" i: \4 Q
  700. LDA PPU_STATUS
      T; Q$ w; Y( j7 m  n9 |; d' I
  701. BPL Time_Delay
    ' b) o$ P! L2 O  F, X0 C6 X* k- ]
  702. RTS  \$ u7 u' i, r1 b  k* p1 L5 Q4 @
  703. . H) X% f3 b; }8 ?- s7 _: G/ C; V
  704. ;==============================/ \/ x+ J; X2 J$ E
  705. OAM_Ram_Init;初始化精灵内存
    # S& \7 I& ]9 e7 ~
  706. LDX #$00
    / C8 X% B2 \9 O* ?9 A7 E% v
  707. OAM_Ram_Init_Write
    3 b; Y- A! n* t+ ]+ v
  708. LDA #$F8* K5 `8 E; R. B3 [
  709. STA OAM_TEMP_ADDR,X) d0 ]" S- o0 X; V* N. k- k
  710. INX# V3 h" z2 ]! P& i3 B
  711. LDA #$F8: ~6 f; c. ]# f% n! x& g2 i/ i6 z- L
  712. STA OAM_TEMP_ADDR,X) q$ ~; z% a3 S! [8 U6 d  [" z
  713. INX$ _. t7 Y1 _" B1 x1 v$ Y8 h
  714. LDA #$00
    & Y/ S7 r: H  S+ w8 b1 |8 g6 x9 q$ ?
  715. STA OAM_TEMP_ADDR,X
    , {) c$ l/ t% F
  716. INX- N& Q5 y' V5 o0 i
  717. LDA #$F8
    ; Y; E- Z' M4 i& [8 `3 V
  718. STA OAM_TEMP_ADDR,X
    + ^: i) w) l4 B& }* _' `% \
  719. INX# X. m3 V& J* q: o6 _/ b7 ]. o& f; z; v
  720. BNE OAM_Ram_Init_Write7 o) a( C9 x6 F( M
  721. RTS
      _5 N5 V8 f; C. ]0 Y

  722. & e' @) b& F: |' x' i5 ?- j
  723. ;==============================  \1 E1 h6 d* z: k8 H: u* K4 `
  724. VramClear;初始化图形内存( h- E7 |. A/ k9 y1 b
  725. LDA #$20
    2 i" E. k. G, n2 A
  726. STA PPU_ADDRESS
    # a2 W- W# a; ~+ H9 N: L9 C3 h: Y" U
  727. LDA #$001 x0 M9 ?) P: O5 g2 U& _4 A
  728. STA PPU_ADDRESS
    ( |9 A8 q% B# }1 i9 u: d
  729. LDA #$00
    ) @' {! d4 B1 R
  730. LDY #$00
    - g4 n: D: X7 c' \* d) F
  731. LDX #$10
    6 B, j2 C  M7 K* H$ q( l$ I
  732. VramClearWrite
    7 \/ V. }  l0 I
  733. STA PPU_DATA
    7 u+ s4 q! `# V3 Z% ?! a6 K
  734. INY
    7 G- ]3 u/ m1 X3 A) B
  735. BNE VramClearWrite
    ! k0 q) O: X* h. W. O* y1 i
  736. DEX+ H8 O% l6 x5 u# Y6 w7 u' Y' q
  737. BNE VramClearWrite( w' c, `- K$ G+ ?0 |/ t6 s7 z/ f
  738. RTS
    7 r. D( ?* {4 J1 ^. b& e7 o) w
  739. , O3 L& C3 T# H' I# A3 s
  740. ;==================================================7 L" P6 j9 N" W, l9 l# Y
  741. ;设置MMC3图像bank
    ) Z& {# x3 ?$ t- ^% Y4 @
  742. Init_MMC3_Chr_Bank
    * J0 |5 \  S( G& H& q9 Y0 j# Y, @% Z
  743. LDX #$05) x( S4 v; ?: \2 Q4 Z# Y
  744. Init_MMC3_Chr_Bank_Write4 E) W, E# `1 S% C  l; n  C
  745. STX MMC3_BANK_CTRL
    ; V# X4 M. r# y) S, L. j+ ]5 W
  746. LDA MMC3_Chr_Bank_Data,X& \+ N9 t1 z6 x7 z
  747. STA MMC3_BANK_DATA7 a# j( l* s" Y' }! e' @% g
  748. DEX
    ( p; I3 C: p$ B7 G+ [! s3 `3 c
  749. BPL Init_MMC3_Chr_Bank_Write+ h5 ?4 }* v8 t% Y: ^" I8 i# k. `. Z
  750. RTS2 f$ d$ y( M3 |3 P$ V# {
  751. ;--------------------------------------------------
    5 \+ O  O/ k1 S+ Y
  752. MMC3_Chr_Bank_Data
    ) K6 g  g4 h3 z2 B0 n
  753. .DB $00,$02,$04,$05,$06,$07
    7 N# ?8 {$ n2 _( G1 O- R7 v! a2 `& ?

  754. ( X- }2 A$ P* e- @0 u1 K# c, E
  755. ;==============================; w2 {  P1 r8 s3 c% l
  756. VramInit;初始化图形内存6 r$ U) I/ x1 u6 Q% G5 s& I
  757. .IF CHR_RAM_ENABLE. j9 g. E- I4 j' I4 ?) h
  758. LDA #CHR_DATA_BANK
    * a5 G$ k  ~# W/ p3 @5 z# l0 J! |
  759. JSR Switch_Bank_A000
    % E' z% ?" x# X
  760. LDA #LOW(CHR_DATA_ADDR)
    : I- V# o# S1 J" `7 J
  761. STA <Data_L
    . F# O; B" P9 r/ U$ ^* u/ X7 p; s" S' r
  762. LDA #HIGH(CHR_DATA_ADDR)
    $ A' t" G3 b1 W
  763. STA <Data_H3 t1 E' M1 T8 F9 X
  764. LDY #$00& M3 s3 ?; L* n. [
  765. LDX #$20
    * k8 i8 y0 W' X) u. j% H" E
  766. LDA #$00# y4 M  V, E' p: R' O
  767. STA PPU_ADDRESS
    8 F; Z- x# j5 v
  768. STA PPU_ADDRESS
    1 B4 D! H4 F0 Z8 V% @8 ~7 E
  769. VramInitWrite/ S6 X* V1 z/ H- `. U0 r; O
  770. LDA [Data_L],Y
    4 O/ @3 H. V  g4 J) i
  771. STA PPU_DATA
    2 H% P9 k4 `5 h, x. x, \  H
  772. INY
    ( V, y0 u4 f1 J& j: Y; j  f
  773. BNE VramInitWrite0 U: i; ?) u8 M5 ?5 T$ p6 f0 B/ y
  774. INC <Data_H% d0 b  i2 @7 T: s( j3 n
  775. DEX
    ! ~. ?6 U$ F$ Z2 h
  776. BNE VramInitWrite8 @, C$ B1 t* I9 v. V' K& f; [* T
  777. .ENDIF
    % B& C. n/ g; x) O% h7 G' m  \
  778. RTS
    ; F5 q& v# }: ~4 p
  779. 0 I6 a' q! a. R! k. d* X. B. u( e& |
  780. ;==============================  ]- r4 L. p4 y! F
  781. ;音乐切换
    7 t6 _" Y  }; T+ A
  782. Music_Play_Change$ O! X* O% j0 V, l: L/ G+ E
  783. LDA <Key_Once
    ( v# Y. i3 Q2 C& z6 @2 L
  784. AND #$FF# N: G8 o$ g6 ~$ @* v/ v
  785. BEQ Music_Play_Change_Check
    # F0 d, ?2 M- r1 I% b( d

  786. 3 F2 U% l9 \8 c) ?0 ]
  787. ;禁用音乐条刷新/ F) d! F8 U3 n% B- e+ p
  788. LDA <Text_Disable_Flag
    6 t5 j$ i. f4 }9 p% C8 r1 d
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    * Z# q( y# K0 J! p6 g
  790. STA <Text_Disable_Flag2 y4 s% H; ^7 w, D# u  w

  791. * k9 ]3 b* ^% G, x! t2 g
  792. Music_Play_Change_Check* p6 O; b, J! h% n8 O1 R
  793. Music_arrow
    ) U$ z( c* {1 |6 ~+ k7 }3 @
  794. LDA <Key_Once: t$ L4 P2 V  g7 X% H: I' _
  795. AND #$0F/ i: F4 f8 y$ C1 P
  796. BEQ Music_Play_Change_End
    . J$ e1 o+ ]; {! x& I# n& x4 v6 s
  797. JSR Music_Track_Change
    2 z" _7 a% d& N' |
  798. JSR Sound_Reset_Proc
    ' a5 J5 L% ~1 d! k
  799. JSR Music_Show
    ' G) H( X& f  p4 f6 h
  800. Music_Play_Change_End6 M" _: t: G" R3 K3 l+ [9 }
  801. RTS
    # S; N2 g/ `$ F1 M
  802. 2 f* [4 x7 j0 x. U0 V
  803. ;==============================
    3 i4 P$ d* J' ?( P+ i! R
  804. ;音乐曲目切换
    ; n% e8 e8 B: m; f4 e; ^, I
  805. Music_Track_Change: O) F) M. H: P2 B( O  N
  806. LDX <Music_Item_Cur( M+ w& `7 E& l8 w
  807. LDA <Music_Cur,X
    # m/ W7 @" b5 M2 j
  808. STA <Music_Last
    & y- n/ I' y& }  k; x
  809. Music_Decrease
    ) Z0 n) \& e+ O7 ]3 ?
  810. LDA <Key_Once
    ; Z, s2 l0 E* r# J9 d- @
  811. AND #$42' |, r7 i, i! u: @) r6 a2 y1 b
  812. BEQ Music_Increase! o6 q5 c$ r# e
  813. LDA <Music_Cur,X' w4 u& G9 S5 L2 n* J) v# _
  814. BEQ Music_Increase4 S0 `% s. `) K. M* O
  815. DEC <Music_Cur,X8 ^  R- k0 b8 T- b6 M- U
  816. Music_Increase. e1 {( i) v+ S. T2 T2 [
  817. LDA <Key_Once5 u, n' _6 M2 t
  818. AND #$81  d0 q. T. M! |8 r  z! f0 B
  819. BEQ Music_Decrease_10
    ' @: h( j2 g; M$ ~: Q! i
  820. JSR Set_Sound_Total
    4 N3 F6 r- ~( ]8 R2 [" U
  821. LDA <Music_Cur,X3 y2 X4 e% P, Y/ e
  822. CMP Music_Total( ]& S4 c) m) C0 w+ u1 v
  823. BCS * + 4% n; \6 y) f% T) l4 ?( ~, i
  824. INC <Music_Cur,X, f, ]8 k- V5 V& D; J/ K3 U
  825. Music_Decrease_10
    + k2 @. J% Z( }, c1 m
  826. LDA <Key_Once
    ) {0 Q- Q# x7 E* H+ p
  827. CMP #$04- C4 G& A* V! G" n
  828. BNE Music_Increase_10. d6 F5 [( L6 t1 z
  829. LDA <Music_Cur,X
    , M: F+ }5 r' n1 ?' ^
  830. CMP #101 Q+ {2 |# w- Z6 n' r0 U9 P4 H5 l
  831. BCC Music_Start_Song_Min
    $ u/ W5 {4 M6 \+ z, D  {, ]2 L6 A
  832. LDA <Music_Cur,X% }$ E6 _( F, }8 w& @0 z
  833. SEC
    : N# ]5 q; O7 u; j4 L8 {% N" c* d
  834. SBC #10
    0 S- O2 ~7 B1 A
  835. STA <Music_Cur,X
    ! \7 }" q) F- z8 E8 N& s& g
  836. LDA #$00
    , h9 f  |' C9 \6 c
  837. BEQ Music_Increase_10
    0 Z2 b3 g+ i0 l1 N' E4 T
  838. Music_Start_Song_Min; j* M' V* _( v" v& d
  839. LDA #$00
    / L% r! a, v# P
  840. STA <Music_Cur,X
    + }5 J  z+ X6 N2 b% C& N9 k  L
  841. Music_Increase_10" x# z1 [, e/ [4 ~
  842. LDA <Key_Once
    2 f& K) E4 |+ S4 o
  843. CMP #$08; ?+ Q! h4 I5 t2 X2 |
  844. BNE Music_Track_Change_End
    0 Q, c" @1 ~. P
  845. LDA <Music_Cur,X+ K" n, S( |' k& _: ^
  846. CLC- J' b3 Z* `4 A9 s! ^+ M
  847. ADC #10
    . x% l* S0 G# v2 b
  848. CMP Music_Total
    3 B/ c: e: F" Q1 ~
  849. BCS Music_Start_Song_Max& Q8 x* @7 ~& i* P% a, r" `
  850. STA <Music_Cur,X+ e. ?+ N+ ?: W- B- `$ i$ W
  851. LDA #00$ Z7 p( \6 m( T7 s' I$ v; f5 \4 U( N
  852. BEQ Music_Track_Change_End
    5 r( f. k) e* \
  853. Music_Start_Song_Max
    * g# ?( z5 H' @0 o# H" ^& U# a
  854. LDA Music_Total
    : X- [$ ?$ n6 a# ?! o
  855. STA <Music_Cur,X+ _$ v8 I! ~; K: y& V
  856. Music_Track_Change_End) V1 ]3 `9 Z4 q7 C' L; ?* l# m6 y
  857. RTS3 Y  d" {+ s  z: q
  858. " F9 _3 m7 E: p! v) u8 [) J) h
  859. ;==============================' x4 _* u6 r$ J# ?
  860. ;按键处理3 k6 W2 A0 \8 A# t+ ^, i+ s' Z4 n
  861. Key_Proc- Z+ L9 o. g4 X+ K/ e  G
  862. JSR Key_Scan
    0 \5 O# w1 r. R# B1 h: d
  863. LDA <Key_Keep
    / c( x& Z  t' ]4 d* M/ x
  864. STA <Key_Temp
    ! T$ e* h: M6 F7 B+ `0 ^
  865. JSR Key_Scan
    / }) u, ?2 a" U0 O( i4 O" a
  866. LDA <Key_Keep8 D: V3 J; `7 W* w
  867. CMP <Key_Temp
    9 r' b! t% M3 n6 E
  868. BEQ Key_Get_Once( R* ], f8 {2 J. C3 v9 h4 B
  869. LDA <Key_Kemp
    : r- Q6 S. p( w) l- f: T0 L0 E
  870. STA <Key_Keep
    ' x) I6 u% f" R( Y
  871. Key_Get_Once
    ( F4 `7 o3 a7 e$ j! N- L! Z
  872. TAY
    6 M2 h" G) p; ]' R
  873. EOR Key_Kemp
    % N- F4 G: ~4 z9 i
  874. AND <Key_Keep
    . Q6 C; G2 I1 n& o, Z
  875. STA <Key_Once
      j1 ?# a# M# z( X
  876. STY <Key_Kemp0 W- l$ i( Q: p+ F$ V9 Q
  877. RTS/ S4 _" a; b7 z# v( m
  878. ;------------------------------
    % w3 T: x4 x6 g) m6 h
  879. ;按键扫描$ J8 L: \  e8 B" Z: f. ^
  880. Key_Scan2 L0 f  B" o+ ^: o
  881. LDX #$01. L  Z0 O# |( t& _9 ~
  882. STX JOY1_FRAME
    % O9 a* f- a! ^
  883. DEX
    ( E4 c: e2 g" n2 p) M3 m# s; A
  884. STX JOY1_FRAME* [& G2 ?) ~' Y" x
  885. LDX #$08
    5 s+ {. i1 M( z. V/ M( b$ Q* Q* _& R
  886. Key_Value
    8 G* K+ A& g* ?. r
  887. LDA JOY1_FRAME$ F% q5 r0 k' |1 G
  888. STA <Key_Getv
    5 N( R6 l; T/ }7 N' L' d
  889. LSR A( r8 U, b/ c( [% X% t" i
  890. ORA <Key_Getv1 _+ A$ I( e* s
  891. LSR A
      c& i$ {! s- N9 s" [" l
  892. ROL <Key_Keep* |' X2 V6 Z- |* E2 Z
  893. DEX0 [' q/ \2 |1 W" ~3 V$ M' f8 b1 G
  894. BNE Key_Value
    5 D; l- f' |3 e5 Y0 n6 M
  895. RTS
    : F8 K3 c( m+ j  m

  896. 3 Y- H' @5 d3 m
  897. ;==============================
    7 _% J) z% l: y; ^, W( h6 y; |
  898. .IF SOUND_BAR_SHOW_ENABLE
    * c$ F: D2 L2 G( e/ [. u
  899. ;音乐条显示
    : B: O" V; U+ z1 q
  900. Music_Vision& P, k9 e+ d3 T& H# X; m9 c& n1 J$ f  u
  901. LDA <Text_Disable_Flag
    + a* W8 a/ D+ F4 E' Y* e3 S( E9 }6 ^
  902. AND #TEXT_DISABLE_ITEM
    + ~- w- c7 u6 p, X) K$ e( T" f; ?% v
  903. BNE Music_Vision_End5 L! @, Q2 s& C3 G: }0 C$ f/ x1 e) z
  904. AND #TEXT_DISABLE_BAR2 u4 k% `) m7 a6 Y- y) s
  905. BNE Music_Vision_Set: R4 e: C2 W' I; j* R" Z1 `
  906. LDX PPU_Cur
    3 [: j# N1 M# n4 L+ ^
  907. JSR Music_Animation
    4 ]7 _2 C! r+ K* a5 x
  908. STX PPU_Cur" P0 M* ?  ]* B: X8 T4 @% ?* S. ]
  909. Music_Vision_Set
    2 ^" H. |2 _" J) _3 t' x3 D9 q5 ]1 Q# p/ [
  910. LDA <Text_Disable_Flag
    9 }% S4 }) p# J" R
  911. AND #TEXT_DISABLE_BAR ^ $FF
    3 y* H$ u* Y- V/ q$ G  r- f5 G3 H
  912. STA <Text_Disable_Flag6 g, v' Y/ V! A' V& W6 [
  913. Music_Vision_End
    ; S. O) m8 e# j8 ]' N& a! }
  914. RTS
    ' F0 T! P8 J: K7 `
  915. ;------------------------------
    , _( E7 L0 x! T
  916. ;音乐条显示处理3 ~9 d9 C+ S8 ?1 [
  917. Music_Animation
    9 E; r9 t' T" \1 c$ a
  918. LDA #PPU_MODE_CNT_LINE
    8 n" m2 ]5 |) i1 Q. d! N4 v3 {6 Q# E
  919. STA PPU_Addr,X
    , N! r) ]( }* j( _8 o
  920. INX. Q2 y9 l2 v4 j1 f+ _
  921. LDA #HIGH(Sound_Bar_Pos)
    ) g; f8 Z' Y  i$ S
  922. STA PPU_Addr,X% c% ]# x9 z/ }0 J
  923. INX4 h+ r* N7 L+ ^, b
  924. LDA #LOW(Sound_Bar_Pos)& F0 u0 T  e" q5 h) b4 Y
  925. STA PPU_Addr,X4 d+ L( |- A) c, K3 K
  926. INX
    + q7 y9 t: C( _
  927. LDA #$08, J/ W# f$ U) t, J! `
  928. STA PPU_Addr,X
    - D: V6 H  P9 q* J  A
  929. INX8 }, r& D9 f: t8 d$ J. ]! V; R
  930. LDA Sound_Bar
    , a. k. O" Y3 l. F) {
  931. JSR Volume_Convert
    3 g5 E3 ], G3 V# H* ~  r/ e% O
  932. / {+ {2 F8 }9 q, Z* I* k
  933. JSR Volume_Set_Cnt
    4 g% P, G4 z' {6 C. v! L# }4 H$ i7 N$ E6 i$ \
  934. LDA Sound_Bar+$4
    ! `! F0 {# l- z" K" ~6 V
  935. JSR Volume_Convert
    % h  q  C% Y6 [( W, Z- I; b- [6 Y

  936. # X5 U$ q4 l+ A7 d' V( z
  937. JSR Volume_Set_Cnt6 w( R# m! U, K" ~! x2 `* Y
  938. LDA Sound_Bar+$8
    ; A0 u0 U# u. O$ F9 o6 i
  939. JSR Volume_Convert
    + ?6 `* _( P; c) c9 p

  940. & j- j" ?% w: T3 c% P
  941. JSR Volume_Set_Cnt
    , G2 h+ H5 t8 k7 w. v
  942. LDA Sound_Bar+$C
    . L2 z* T- I" a7 P
  943. JSR Volume_Convert: C6 n% u, J7 J) {+ q3 a( {
  944. 3 |3 b' a$ D3 b# h  Q* m' O- x
  945. JSR Volume_Set_Cnt
    6 \2 W/ u. m2 Q6 a. W. W
  946. 5 l* }( M2 R: |, m  U
  947. LDY #$10
    8 S% A5 v6 `5 X% a& l* {
  948. LDA APU_STATUS0 I; e4 e: Y2 W$ {4 }2 i7 |0 C" w
  949. AND #$107 B2 C; W: ?* G" G) q$ m  h, `' k6 Z
  950. BNE Volume_Count7 D4 P, f& [7 C/ K9 D
  951. LDY #$00( y( T1 O* e2 _# j5 W3 P
  952. BEQ Volume_Count/ q: {$ X% t" }7 v; c
  953. : K3 `% X1 |2 G% I
  954. ;------------------------------* |" {# r- H& [, K& m/ ]: u$ ]
  955. ;音乐条处理8 G! Q0 r; p0 V4 r* y) Z
  956. Volume_Convert
    5 f% G! e' j7 T1 t) R" Z& s
  957. AND #$0F
    . L: ?( B: V6 N# w, \
  958. TAY2 R- v0 ^' K9 L
  959. Volume_Count
    + L3 o/ Y0 s/ H
  960. LDA #$08- q1 S- @# }6 k1 H0 ~
  961. STA Sound_Bar_Cnt' V! O* h& P1 @" |' ^. ~
  962. Volume_FILL
    # Y6 @/ M: [, T7 _
  963. DEY: [/ P8 K5 W2 S  Z$ R
  964. BEQ Volume_Half
    3 I) f5 M; a$ Y
  965. BMI Volume_Empty
    % c" s6 c# b" `* ~, L' r# q
  966. DEY
      g6 G7 I* G/ O$ K
  967. Volume_Full, C) j, ?% `9 f7 y8 u" L  g
  968. LDA #$16
    + d; x2 g5 e' f' H* C, }
  969. BNE Volume_PPU
    1 Y; I# F8 t% r
  970. Volume_Half6 z& [4 e" R; }4 S0 n
  971. LDA #$15" y$ R/ [3 K; N' ]7 G' z
  972. BNE Volume_PPU
    0 U/ u5 Y/ J! B
  973. Volume_Empty
      s7 k& U/ i) U( x9 H, L9 t: g
  974. LDA #$14! e0 i7 y2 d/ Q! U* {: B3 k
  975. Volume_PPU
    ' p; q* y& C" P( {7 |
  976. STA PPU_Addr,X
    8 K! D9 X! b/ E& v! Q$ c
  977. INX
    / `/ m/ o: Y8 W+ Z7 D
  978. DEC Sound_Bar_Cnt
    $ i2 j4 {3 s* B, X: }0 S3 U% |" R
  979. BNE Volume_FILL
    ' w& x7 P* X% G( Q# u; i
  980. RTS. O! g# v0 C5 W0 f- l' V
  981. & d) U2 v+ W. S2 D1 y6 s5 u
  982. Volume_Set_Cnt
    , S3 X" f7 D0 X6 L4 r9 H# {7 x
  983. LDA #PPU_MODE_CNT_LINE_NEXT" D: ]9 \2 i0 Q: o+ ~1 z
  984. STA PPU_Addr,X0 ^" F7 a5 I, j  ]- g9 x2 e
  985. INX
    / e" B4 X2 e2 P
  986. LDA #$08( S. u( a* c: e* |/ e6 f
  987. STA PPU_Addr,X- o& R" a" L9 }+ F/ X) w# ?0 R0 Y
  988. INX
    0 W( g4 U8 i0 x7 b2 C, d
  989. RTS; Z% p. q  L' j
  990. 6 y* h+ m+ t# N* ?/ \" _
  991. .ENDIF) H* d2 l( f6 q6 O9 f* Y  ^) c
  992. ) I$ ~4 O% ]- L" ^
  993. ;==============================% I9 x1 f* _9 z8 c: ]8 ^5 {
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入3 }( h/ s: H  S% V
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    $ N& M0 u7 U$ }4 M  n4 u  S
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除3 k( A7 X  A" |0 D& S; l
  997. ;------------------------------9 _4 N$ O/ _3 Z4 E) g( `# Y$ V1 h
  998. ;PPU处理7 [+ R! d4 g! N
  999. PPU_Proc
    ! E5 R3 ]4 P5 h
  1000. LDX PPU_Cur$ r4 s) p! n6 W0 I
  1001. LDA #$00
    2 B* y3 z% ~) L5 c. p
  1002. STA PPU_Cur1 J3 g* @: ]0 {( I) J4 D
  1003. STA PPU_Addr,X. y/ D4 `, i3 U4 }. P8 H! w
  1004. LDA PPU_Addr
    9 Z* D! F$ g3 a* a% |6 @
  1005. BNE PPU_Proc_Beg
      q$ i8 Z! k, |1 ~) v
  1006. PPU_Proc_Ret
    ( R' t& N1 R4 {- l7 a
  1007. RTS
    3 I! d  k9 R) S! A8 D
  1008. : _* |6 m/ Z4 p  U: j0 s
  1009. ;------------------------------/ J* S. Z% K% `
  1010. PPU_Mode_Return_Cnt  ;转下行模式1 d( @5 F4 P# H5 Y9 `* @
  1011. INX
    - L  w2 \' A/ O- w
  1012. LDA PPU_Addr_L
    % e* `  \) S2 t0 p) [% v" x3 D
  1013. CLC
    ' ~9 R2 l0 q" z5 J
  1014. ADC #$20# B1 {( ~) l6 `' d0 N4 G1 p. {- Y) m
  1015. STA PPU_Addr_L6 e9 _$ u2 {# }* \8 M7 R- C0 n! Q
  1016. BCC PPU_Mode_Return_Cnt_End- I$ x8 m% V9 q2 C& l
  1017. INC PPU_Addr_H
    7 G$ v+ U% g" [* `5 r6 R
  1018. PPU_Mode_Return_Cnt_End% C$ h' L: W: ~9 S
  1019. LDA PPU_Addr_H
    8 \& f* c( A# |
  1020. STA PPU_ADDRESS) w3 l$ Z  k/ y1 s% b
  1021. LDA PPU_Addr_L; K# @) u6 h& W, K+ a
  1022. STA PPU_ADDRESS
    ' z! I' ~7 b( L% @/ i
  1023. LDA PPU_Addr,X
    3 X  h0 X" y( n9 i2 I" k; c
  1024. TAY
    2 Q8 M8 I7 C3 A0 s( ]
  1025. PPU_Mode_Return_Cnt_Write
    1 `7 r3 ?* u2 x+ {, r
  1026. INX
    ; z1 G$ P5 p- a3 x  @
  1027. LDA PPU_Addr,X' Y8 p- R/ S7 A4 M) [; {$ F* d
  1028. STA PPU_DATA
    9 U9 S5 e6 f; h5 B1 i
  1029. DEY# [4 d$ w! v0 J0 ]' g0 k0 m) \
  1030. BNE PPU_Mode_Return_Cnt_Write0 }: W' O5 c+ R
  1031. JMP PPU_Proc_End
    , w! _2 Q6 u- d. U2 r2 \( d% Z. [
  1032. ) _8 z1 }# z* e- \+ _9 z% S9 a
  1033. ;------------------------------$ @! g  P/ `6 `+ ~  R
  1034. PPU_Proc_Beg  ;处理开始
    9 e# K) X- @" D- z; |5 [
  1035. LDX #$00, w+ A' ?) m, i) H6 x$ F
  1036. STX PPU_MASK
    1 C6 W  i! q5 F" S9 }3 u
  1037. ;------------------------------, T3 p5 L9 V2 V8 V. T# G
  1038. PPU_Mode_Select  ;模式选择
    8 ]- l# h! S% m& G6 `
  1039. LDA PPU_Addr,X" |6 V1 K/ M6 V: D3 p  ]8 r8 Y
  1040. CMP #PPU_MODE_CNT_CLEAR
    / Q# f% X8 w4 `+ E$ S. \
  1041. BEQ PPU_Proc_Clear) c, A8 }) g1 O0 C" u
  1042. CMP #PPU_MODE_CNT_LINE
    * |+ C! X% Y1 ]4 W! }$ V
  1043. BEQ PPU_Proc_Cnt_Line, U% h1 Q$ n6 T) z
  1044. CMP #PPU_MODE_CNT_LINE_NEXT: Z1 Q" w4 t! v/ d8 x& [
  1045. BEQ PPU_Mode_Return_Cnt
      D3 E, c( d+ c$ m& C& ]  T
  1046. JMP PPU_Proc_End_Write# c0 z' S8 W0 s
  1047. ;------------------------------
    8 y) i, d- }7 s% V  Y$ ]1 G: \* o
  1048. PPU_Proc_End  ;单行写入结束3 U8 M' [9 i2 x7 i! ^
  1049. INX
    6 w# @7 {* S0 f' k" C4 U* s- W
  1050. LDA PPU_Addr,X
    * w/ C) ^5 g: i" A
  1051. BNE PPU_Mode_Select7 y- a2 B8 E  f$ j
  1052. STA PPU_Addr
    7 l$ i) P( i7 X3 A: w
  1053. JSR Update_Palette_Color4 e3 E  a; x( o: |' I; @/ l+ E, w

  1054. 8 R6 n9 E7 x! `" ?5 C! W
  1055. PPU_Proc_End_Write
      P. D# I' [9 P/ e, p/ M1 U
  1056. LDA #$00
    # p+ G" F4 L( e' P5 i" t0 P
  1057. STA PPU_ADDRESS# z5 o0 E+ S0 J( f7 t
  1058. STA PPU_ADDRESS4 C6 f) \* p( @  x5 R, Z
  1059. LDA <Text_Disable_Flag
    % l- [- o, n' Q; g% Z( l8 g
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    ( `  y; M3 h2 {9 s& @: I" {
  1061. STA <Text_Disable_Flag
    / a. _6 L$ `' }  M* n) t2 w
  1062. LDA #Scroll_X
    # [6 |8 n, p2 C4 r4 a- I8 a  D
  1063. STA PPU_SCROLL% I7 y" g9 T, @
  1064. LDA #Scroll_Y
    , N! }% i4 x6 d6 |1 `% |6 S
  1065. STA PPU_SCROLL
    # f1 Z! W) d: I1 i( r; \# m
  1066. LDA Screen_State1 }4 r* i3 _8 ]9 W% |$ s3 A2 j
  1067. STA PPU_MASK
    ( a7 M; g/ {, |( x
  1068. RTS2 {; ]% A, u1 h" j2 Q1 i% e

  1069. 3 e$ }( `) \* P- V2 h; V
  1070. PPU_Proc_Clear
    * [  L1 j" b: y( Y, b6 ~+ U: F3 A
  1071. INX. Z" r$ a. @; R! O  |& ?
  1072. LDA PPU_Addr,X1 N4 m# h4 c5 ^+ ]/ P, b
  1073. STA PPU_ADDRESS( @4 c" A, M# i' G$ U4 }
  1074. INX
    ( M2 k8 O2 _1 E' v" Z7 j
  1075. LDA PPU_Addr,X
    7 e# k. s0 u0 M% G1 {/ @
  1076. STA PPU_ADDRESS7 R; i$ F) d6 g- W6 \6 y  ?0 M
  1077. INX& a5 D/ J/ \* C) L1 Z
  1078. LDY PPU_Addr,X, n5 D4 {% L5 t1 I# k
  1079. LDA #$00$ c6 u2 D' d/ v2 A  [# T9 w
  1080. PPU_Proc_Clear_Write
    ' ]# l: S9 j/ m: i6 M6 X6 L
  1081. STA PPU_DATA2 v$ b6 ^# v: a2 k
  1082. DEY) v0 J: i6 y/ C  j5 [) K
  1083. BNE PPU_Proc_Clear_Write4 P9 ]* l# s( t. _+ t0 _
  1084. JMP PPU_Proc_End
    6 H  W1 e! @  u! G+ q3 w$ I. m
  1085. 8 I" _1 o: W% V& s
  1086. PPU_Proc_Cnt_Line' |9 u1 \0 M1 }
  1087. INX
    8 P5 `; ^; ]( K! q  R) G2 \2 ]
  1088. LDA PPU_Addr,X( j4 h& L0 [4 |; N0 u
  1089. STA PPU_Addr_H9 H$ d7 L0 m/ G3 k( X( g
  1090. STA PPU_ADDRESS7 u6 C3 a+ `+ v7 f! h+ m5 S
  1091. INX
    ) b2 i! @# X4 U8 @
  1092. LDA PPU_Addr,X+ {  n7 M: S; b8 z3 r+ G7 r: H
  1093. STA PPU_Addr_L
    ( ^4 D4 l" t5 u  ^
  1094. STA PPU_ADDRESS
    * n: d) B4 k3 _$ w5 f. l" @6 \
  1095. INX
    # E' Z' v# B* N6 v
  1096. LDY PPU_Addr,X$ q1 O  `) m. f; [$ w
  1097. PPU_Proc_Cnt_Line_Write
    5 k' w2 o2 E. b( N4 K; k3 a
  1098. INX
    8 Q( d/ D8 w, N+ Y$ E+ [
  1099. LDA PPU_Addr,X
    ; ~* f/ v3 O1 X4 ~( Z
  1100. STA PPU_DATA, V+ _% E/ Z  w# D9 C. B  b$ W
  1101. DEY' ^+ S" V4 [3 C- E- i6 e
  1102. BNE PPU_Proc_Cnt_Line_Write
    + t; I% |" i7 {3 P: N( ^7 |
  1103. JMP PPU_Proc_End$ U  v2 Q- F, Y7 y' G

  1104. 0 }7 P) `. x- X" N2 w/ u' J! S
  1105. ;==============================7 `5 |/ }% y0 Y
  1106. HEX_To_Dec;十六进制转十进制$ Y) c& n+ C  ]& u0 H
  1107. STA <HEX_Data) ^8 m3 Q$ I$ k% f! S: g$ j
  1108. PHA
    - ^1 _4 C  j, F; L& ~
  1109. TXA
    4 }& e5 R! b# U; b
  1110. PHA
    ' r/ V6 v+ u6 {' _
  1111. LDX #$00( c0 j# Q+ c5 ^6 Y# p  W
  1112. LDA #$00
    . ?- q& R+ g/ `$ }# e
  1113. HEX_Cln
    . r+ f4 i# i+ J8 s3 y- g* r( d
  1114. STA <DEC_H,X( g  X' O2 M" V. E
  1115. INX' @2 k: t0 `& U/ C  K' I# r) V
  1116. CPX #$03+ g$ {- b" y# ^$ {' y
  1117. BCC HEX_Cln3 ~; |% d6 K% B
  1118. LDA <HEX_Data! ?5 q# J. l0 |" |" V' Q2 H
  1119. ;------------------------------
    8 m4 U# b) _6 U; J! Q# p' B( L! D
  1120. HEX_100" A# k4 M; l- h, n( f% A
  1121. CMP #1009 W( ?) X/ W4 O& \
  1122. BCC HEX_10
    ' `3 {; e  \* q  q' u/ ?2 v# ^$ P- }
  1123. SEC0 k, a9 S! |! e) V0 D
  1124. SBC #100
    % c+ ?0 W1 U% I* W2 x6 d
  1125. INC <DEC_H
    " f* f& M- x9 W: Z+ h3 R
  1126. BNE HEX_100$ Y" ?2 w: b0 _7 g& k/ _, [
  1127. ;------------------------------
    ( {& L5 n2 q9 k" ^6 F8 A3 \8 g7 M& v
  1128. HEX_10
    % q4 H/ d# r2 Q8 C& g
  1129. CMP #10; z  v4 D/ T1 `1 @: \& f* u
  1130. BCC HEX_13 H. f$ t0 L1 P  P, J( T( o
  1131. SEC
    9 j+ W/ A/ U5 m& j8 z8 q' p
  1132. SBC #10
    & ?0 A. Z5 k# u
  1133. INC <DEC_T
    + z7 C5 Q7 s- A/ L
  1134. BNE HEX_10, ?6 e, V9 d7 m& k6 O& ?* B
  1135. ;------------------------------, q( p* ^" s" x# @" z2 ?
  1136. HEX_1( b) \; \8 S" i( X" [, ~* Z' u+ _6 x
  1137. STA <DEC_L
    # j( ^; ^9 G# n2 Z( c; Y& y
  1138. PLA3 K0 B0 @; J  Q3 F6 u% |0 a$ R
  1139. TAX" Q' v, J4 p8 `, P8 ~% H
  1140. PLA# _& C" V- P2 m7 |$ F5 G! y. N
  1141. RTS
    ) W% x/ G1 ^  W8 t! s8 s" ~
  1142. ; @: E0 }3 N$ W! u. f& t
  1143. ;==============================, m3 v, c1 J' c9 N! h! \8 c  e
  1144. ;音乐曲目显示
    9 N$ r8 R: q) F9 g, Q% b6 T7 n
  1145. Music_Show
    & A2 t7 N, d0 I& w) A- x
  1146. LDX <Music_Item_Cur, z% P* e' O7 D& G
  1147. LDA <Music_Cur,X
    - z6 B" o% H, }* d( c5 B
  1148. CLC# Q- T& [+ N1 P4 U1 T7 l8 P) \( g, C
  1149. ADC #$01
    $ \$ W9 V) h- y, |
  1150. JSR HEX_To_Dec
    ! D+ V% Y7 m9 u
  1151. LDX PPU_Cur: q7 r5 X* f; d5 g" j9 M
  1152. LDA #PPU_MODE_CNT_LINE" D9 |2 s9 b% k6 L3 o; F. ]- ^
  1153. STA PPU_Addr,X
    ) e' \4 e/ x. \# O
  1154. INX* Y7 X( a7 k! [' n. i
  1155. LDA #HIGH(Play_Index_Pos)
    1 y3 f$ V% W4 e; _/ ?- l% u
  1156. STA PPU_Addr,X' \: A4 x  s& E5 d) x# k
  1157. INX
    5 d& o( p# u1 a& i
  1158. LDA #LOW(Play_Index_Pos)
    / N! C# j% \3 B* T: ?) s
  1159. STA PPU_Addr,X
    : X$ @- t& Q( C" {% ?
  1160. INX
    : g) k& F2 {( |- b- a0 K
  1161. 7 M; n0 _; H3 H9 U8 `# ]; x
  1162. LDA #$07( t+ E; r* R+ O$ v' C
  1163. BNE Music_Show_Length
    8 e; r: e! [, _$ B; P
  1164. ! W. W& R1 w- c
  1165. Music_Show_Length+ \. Y) }& y5 I" g, p* y6 c
  1166. STA PPU_Addr,X" z" ^. {1 G+ M; s0 {9 c3 ~
  1167. INX
    4 g3 S6 c6 b8 X! Z# B- @

  1168. & R4 Y; y0 h+ h1 b
  1169. LDA <DEC_H
    % T5 {1 \* i5 c- Y8 H# t. }& x( c
  1170. ORA #'0'- s- Q( l. a! d
  1171. STA PPU_Addr,X" z/ D9 ~  w9 g# a  c0 h$ r
  1172. INX
    0 S( M) X2 v, w4 G% X
  1173. 2 R8 t; I* A- ]! X$ F, o3 G
  1174. LDA <DEC_T/ T( ~- O: I  x; ^( P6 k
  1175. ORA #'0'
    . b% B* d( N; t3 z6 V$ Z
  1176. STA PPU_Addr,X+ U: C  @* s5 r' J/ a
  1177. INX
    0 `+ I& ?3 l! k& r* q8 ]: j

  1178. 2 h  G# }. ]( U. Y
  1179. LDA <DEC_L
    ' Y$ v$ z3 v: U: o: J# y7 R% x
  1180. ORA #'0'
    7 h7 R, T9 }* X6 K% Z8 C
  1181. STA PPU_Addr,X
    8 W3 W# u: W" `5 N# ^
  1182. INX
    9 h+ w2 b; o8 Q8 J" x6 P5 k
  1183. , S+ P% t1 Y0 I
  1184. LDA #'/'! Y/ K: }$ ?* m
  1185. STA PPU_Addr,X
    ( A: o. o; M1 @& p. I2 a: _" P
  1186. INX" h) v. D9 {) v! p
  1187. Music_Show_Total
    % P, e- O1 T8 N: c' @0 L
  1188. LDA Music_Total
    / P/ @3 [9 c! j  v
  1189. CLC6 q# N. z/ ]$ B! v2 s* G8 B$ P( U
  1190. ADC #$017 h4 j3 @7 l% W6 R( t
  1191. JSR HEX_To_Dec
    + s9 n4 X3 \; _- O$ X: Y
  1192. : t1 s* O; }/ ^" j2 i1 D
  1193. LDA <DEC_H; x1 {: F1 X: U1 p/ p+ t' x
  1194. ORA #'0'
    3 E% w, r0 R* P, e6 ^9 u/ w$ p
  1195. STA PPU_Addr,X& T8 c' i- ]# `; E
  1196. INX
    ( t- p" ]; `$ k4 K" z0 V6 u; W6 x
  1197. 4 a' m* s5 E& z6 ]( n2 H
  1198. LDA <DEC_T
    8 a) L- x5 L2 V
  1199. ORA #'0'
    " W1 ?* _4 o8 H' c. q6 @' g
  1200. STA PPU_Addr,X" F) {4 {3 s. z; V0 |/ i
  1201. INX  o  |" {& c0 R  w# j6 L7 y4 X) F

  1202. ' n8 Z% U3 W' n- S6 e* C1 {
  1203. LDA <DEC_L
    + G. S# l2 P1 v- G
  1204. ORA #'0'
    - b" D3 b8 s8 Q% c& Q8 o0 j' T0 h
  1205. STA PPU_Addr,X
    3 M8 X$ Z" B2 E7 O/ V* K' A( v
  1206. INX
    # t1 C( X9 }7 s& T6 K

  1207.   v% o- k4 }# n, {0 x! K
  1208. STX PPU_Cur, z+ I1 K2 Z- U; G5 O
  1209. Music_Show_End
    % W  H/ e8 v, _- _$ p/ B
  1210. RTS8 z* \$ |3 G0 K  x& T

  1211. $ S5 b: ~7 a+ ~4 ~5 c" w  C  H1 K3 _
  1212. ;==============================
    * m9 J3 W! i5 B9 B3 G3 o$ o: H
  1213. Time_Show;播放时间显示
    $ R8 z. L7 u3 G4 W+ Q% W# K
  1214. LDA <Text_Disable_Flag
    ' X  P! B0 }$ H, G6 _
  1215. AND #TEXT_DISABLE_ITEM9 s$ b% e2 @6 R) h# M! {+ Z
  1216. BNE Time_Show_End
    # f5 Y$ C. c5 L
  1217. AND #TEXT_DISABLE_TIME4 |# i9 N8 T9 {: r% e6 B
  1218. BNE Time_Show_Enable, \1 s5 Z1 t# v6 J0 U
  1219. 0 S8 w$ x- s, B8 f
  1220. LDX PPU_Cur
    9 m, w6 b9 l& N* x
  1221. LDA #PPU_MODE_CNT_LINE+ |0 K0 ?9 F" j. \  P1 x% l+ J
  1222. STA PPU_Addr,X
    ! a: {5 x/ M8 g7 e% G4 \' P$ h
  1223. INX8 o6 I, s& d0 X  S! O
  1224. LDA #HIGH(Play_Time_Pos)
    ! O4 Z  F* t' d! f- D3 g" P
  1225. STA PPU_Addr,X
    5 }0 E0 i" c3 u* M5 i2 h
  1226. INX% \! h& c8 r+ Y4 E
  1227. LDA #LOW(Play_Time_Pos)
    ; F; C- @  c$ }4 _- Y2 J
  1228. STA PPU_Addr,X; P3 q+ P0 d' U
  1229. INX6 Y: r9 U! S, y* G5 @; ~1 t* V
  1230. LDA #$08
    1 C+ R, ^( I/ N2 X6 @0 M
  1231. STA PPU_Addr,X& G9 G4 ?* w3 S- J, T" q
  1232. INX
    8 W% U7 W- s" o4 C
  1233. Time_Show_H9 `! Q7 `) I/ A+ Z2 M
  1234. LDA <Time_H
    ! |! B; D. A( H6 ^' M* R4 @
  1235. JSR HEX_To_Dec
    - }7 s. R) X+ s/ _# R9 P
  1236. JSR Time_Digit1 j) u4 E9 G/ ], k
  1237. LDA #':'
    2 U- P  z2 b3 @  R
  1238. STA PPU_Addr,X
    ; I0 j6 W) c; E- ~
  1239. INX
      s% w) A3 [) B1 G
  1240. Time_Show_M- I+ G5 U# H' i8 ~
  1241. LDA <Time_M
    1 I. Y+ T0 s/ `6 |& ^% J9 p
  1242. JSR HEX_To_Dec# G3 a! R! ^# {7 E* Z7 _
  1243. JSR Time_Digit; s" a- Y9 \' ^/ ~/ A8 E
  1244. LDA #':', b' q: L/ C& b- M3 N
  1245. STA PPU_Addr,X
    ; P5 B/ m/ X  g
  1246. INX
    7 T6 X, o' D! {4 J3 U
  1247. Time_Show_S
    * d* A; l6 x+ e7 }8 d4 X
  1248. LDA <Time_S5 M$ d$ X; x9 J$ K( N+ k. y3 L9 w
  1249. JSR HEX_To_Dec
    8 w/ B6 W# X! R7 A! f, D
  1250. JSR Time_Digit, [4 ^6 i  Z) N- L3 T& P
  1251. STX PPU_Cur6 `' N1 z8 y0 A. ^
  1252. Time_Show_Enable: r: t. w- L% f7 h; s6 U
  1253. LDA <Text_Disable_Flag
    ; }; Q( Q, u7 r# V
  1254. AND #TEXT_DISABLE_TIME ^ $FF" g' |+ D: R& l2 Y2 C9 I) Z
  1255. STA <Text_Disable_Flag' W" X$ z0 v4 A4 p: @. G* `! [
  1256. Time_Show_End
    - u" F& k, U3 |4 s  \8 s
  1257. RTS
    % P1 W2 n- N; G' b# D7 l
  1258. + W4 N) P$ Z1 E; c, Y3 f/ c
  1259. Time_Digit
    & B+ `! R' Y* ]2 B
  1260. LDA <DEC_T' f5 O9 J4 O5 F( R0 U- J/ h
  1261. ORA #'0'
    5 p1 l8 \* v1 ~$ P
  1262. STA PPU_Addr,X
    $ s5 j1 m2 l  @* b* {$ W
  1263. INX
    0 m& W1 `: C) S2 y( X1 @
  1264. LDA <DEC_L
    3 A9 R# P8 X0 ?: u
  1265. ORA #'0'8 c7 a" j0 c- F
  1266. STA PPU_Addr,X
      y. X- k2 g5 M( M. V
  1267. INX
    ' C3 i" L4 t! w  s) l1 P' M  e
  1268. RTS, |0 p0 ]5 c9 e2 n

  1269. - m: d4 y7 O3 A, L, F0 t5 @
  1270. ;==============================
    ! I: O7 k9 @+ A4 p- k! }
  1271. Time_Count;计时" s3 r. V' z) S  a% ^, k
  1272. LDA <Music_Stop_State
    * C; s9 s% K6 z$ ]0 U
  1273. ORA <Time_Wait_Cnt
    2 H) }' x3 [8 B4 B$ v  M
  1274. BNE Time_Count_End5 H' V; c- `! {* c& b; Y5 B8 e
  1275. INC <Time_Cnt# B+ Z: O" `: p) g
  1276. LDA <Time_Cnt
    / m/ g2 a( v* P% h$ u2 p) O
  1277. CMP #60
    - g+ S. P, v6 ]# n9 ]
  1278. BCC Time_Count_End* _  `5 t5 q/ Y! q7 f: b
  1279. LDA #00
    / T3 a5 T" |0 u. ~  w# |
  1280. STA <Time_Cnt
    0 ?% e! \2 I$ c, u9 A6 n2 P5 v
  1281. INC <Time_S+ [* I; R3 G9 i' m

  1282. 4 Z# M  {0 R: h$ w5 G; E
  1283. Time_S_Cnt
    : {  X, ~9 }" I( k! f3 D* m/ q( b& w
  1284. LDA <Time_S! x% f: U1 Y! O" P' ^# Q0 k
  1285. CMP #60
    # P; H/ M1 v, k8 T
  1286. BCC Time_Count_End3 y9 T3 X4 `, ^+ L' e% F5 I
  1287. LDA #00- {# w! |/ e' W" ]
  1288. STA <Time_S* c" }2 j4 @9 {2 r' C/ Z
  1289. INC <Time_M
    * U. V! G0 \# V

  1290. 6 h: ~$ A# u) y! Y
  1291. Time_M_Cnt! V2 X# |' ~6 f. k5 e
  1292. LDA <Time_M) U4 I( @. v9 m4 _
  1293. CMP #60# l) Z  k2 D5 m9 K: w
  1294. BCC Time_Count_End
    , @: n1 z1 g3 [; U: p
  1295. LDA #00
    - }$ c3 `5 q4 {/ f/ [# X3 x5 V2 f  `
  1296. STA <Time_M2 V2 ?% n7 P1 u# \0 H
  1297. INC <Time_H) |! {" k* o  @5 N) c/ }
  1298. 0 _0 B3 E2 O* M3 m
  1299. Time_H_Cnt4 X6 M& [' m/ s: U1 U2 v. p
  1300. LDA <Time_H
    " f- p& [& }' ~. U! `
  1301. CMP #24; N3 N( Q' a9 y
  1302. BCC Time_Count_End
    + H. g' F# i( q
  1303. LDA #00
    . B3 {& z% H0 ?+ P" u, i
  1304. STA <Time_H
    / Q  t/ ?' D6 a# I) Q) @8 |
  1305. 9 b9 M4 f, J7 ?  o  E4 A
  1306. Time_Count_End
    ' z0 D0 a1 m. q' q
  1307. RTS% d9 T; r8 Y9 _0 N' V

  1308. 8 ?! M; N0 j6 S+ L. f" S
  1309. ;==============================; Z$ ^2 v. N1 Y( O/ \
  1310. Time_ReSet;播放时间重置1 S5 A6 `! f' q# h8 P, v; i
  1311. LDA #$00
    2 R# e- F2 C) G, ?6 E1 @
  1312. STA <Time_S
    6 P, V6 T. K- l1 y1 l% {. R4 Y! `
  1313. STA <Time_M
    * r5 d" \5 X0 u- R& V
  1314. STA <Time_H3 V" I7 j3 }1 _! z& d
  1315. STA <Time_Cnt
      p+ M) ]# @" S+ d( u  f/ z) D
  1316. RTS
    ' U- W# B4 a% f4 O; G- S

  1317. # c! }& H9 v0 g5 a/ ~* G
  1318. ;==============================& @/ X/ p4 d5 ]! S4 g1 |$ b0 t
  1319. Music_Bar_ReSet;音乐条重置) ?; e- L- D, B8 a. R9 o. ^/ u
  1320. LDA #$008 k5 f& l5 `; c$ y
  1321. LDX #$00$ L* f8 H& s7 O3 b" l
  1322. Music_Bar_ReSet_Set5 i, ]; d8 K* U/ l$ ?
  1323. STA Sound_Bar,X
    7 d% x8 ^5 l' t, M$ B
  1324. INX- P0 p7 L, @% \/ B
  1325. CPX #$105 o6 O. ^3 L/ ]0 {+ e
  1326. BCC Music_Bar_ReSet_Set
    ! V9 C4 U1 }6 G; {% g. P( A
  1327. RTS
    ) Y4 ]5 \& Y1 p% W. {. [$ t  I
  1328. ; b1 O1 F9 Q2 K4 W5 H/ }6 H, R
  1329. ;==============================
    / e2 N) U7 o0 g& \
  1330. PPU_Data;PPU数据写入, q; R' H* s, `# K6 {# x) c9 j3 p
  1331. STY <Data_L9 _' z' J2 E: U6 C8 x! G
  1332. STX <Data_H
    & [% I. m2 }7 \  B. \  a
  1333. LDY #$FF  A5 Y( d7 d0 j9 m% d
  1334. LDX PPU_Cur+ d: V  f$ b8 ^) {' G% M6 W2 @3 S
  1335. DEX' ^; ?- f  R% ^, \- ~* S& O
  1336. PPU_Data_Beg: J* H5 s& T8 D' X& @0 b: \0 @
  1337. INX
    ' J* `% C% w+ M6 V5 l( `) _
  1338. INY1 {7 t, [* K- L/ c2 v6 x
  1339. LDA [Data_L],Y  L8 e; M: ~, i2 w5 ?, p
  1340. STA PPU_Addr,X8 Z/ m$ x% u! y9 Q& @
  1341. BNE PPU_Data_Beg+ A9 {6 }; l' s3 n+ B
  1342. STX PPU_Cur
    3 v7 |2 @9 x5 C+ r
  1343. PPU_Data_End
      `1 {3 J0 |: E# N: m' G1 ]  X
  1344. RTS
    # D. g) L8 m4 ^3 n9 [5 ^7 S

  1345. . J& s: Y9 I5 ^3 M$ \: o# g; D
  1346. ;==============================- s" v( \9 K; ^! d7 \6 d2 L) r( W
  1347. Music_State_Show;播放状态显示
    % Z# ~2 V' a* Z0 D1 ^% N
  1348. LDA <Music_Stop_State
    2 N6 }3 R. @) ?  Y+ s
  1349. BEQ Music_State_Show_Play
    % s- I9 }& V+ P( I1 ~* t
  1350. Music_State_Show_Stop6 I$ c) `( H  D9 L
  1351. LDY #LOW(Music_State_Stop)
    ; y+ [7 \0 |# a1 x8 r8 h7 t
  1352. LDX #HIGH(Music_State_Stop), f& G7 W7 x% m! r; X
  1353. JSR PPU_Data
    : m: A" r% c' D
  1354. RTS2 D4 X' `$ {# G; A2 a' @
  1355. Music_State_Show_Play5 N& F* p) q/ x# P; C: b
  1356. LDY #LOW(Music_State_Play)/ }& ~8 I  q' D/ k
  1357. LDX #HIGH(Music_State_Play)
    2 t( o- @( Q& w+ T  x, |8 q" B1 k1 o
  1358. JSR PPU_Data( x" K' k4 F9 i, T+ y
  1359. RTS
    6 n; o6 S" Z) a, e7 c+ I

  1360. ! u4 g! I6 B. j+ N6 o8 a, i
  1361. .IF SOUND_BAR_SHOW_ENABLE
    % m6 B( {! g" p  B2 u& {
  1362. ;==============================8 \# J# B2 I9 s
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    9 r, A( ~7 v: q2 N0 R" v
  1364. LDY #LOW(Sound_Bar_Text_Data)
    + ]( Y8 f1 p2 t
  1365. LDX #HIGH(Sound_Bar_Text_Data)0 }, d6 f% x) _$ t, y" e8 c1 m* l
  1366. JSR PPU_Data5 h( U5 N$ k7 T: g8 ^1 Z
  1367. RTS
    % J# c# Z: ]; G8 Q; Q( C7 p
  1368. 3 o( z6 L' q) m$ g) Z) A
  1369. .ENDIF5 \7 ^  s; V. Q. R4 y  S1 ^

  1370.   r) B  S" N& x
  1371. ;==============================& Q* ^. w9 S% Y) q' B
  1372. Set_NameTable_Attributes;设置命名表属性
    % t$ K9 a4 }) v
  1373. BIT PPU_STATUS
    + S6 L1 F$ A2 t5 \5 g
  1374. LDA #$23
    ; S, x1 K& ~. ?
  1375. STA PPU_ADDRESS
    ) K0 [! {7 Y1 J# k" i- Y
  1376. LDA #$C0
    - g% M8 Q0 c2 h5 ]
  1377. STA PPU_ADDRESS
    # ?# ^; `8 V' U
  1378. LDX #$00
    ( F$ o! r- V: @" v
  1379. Set_NameTable_Attributes_Write
    $ ?* z% F; ^( y
  1380. LDA Palette_Attributes,X# c: P6 s/ y4 T- O) ~5 w- }
  1381. STA PPU_DATA0 [# ]( f9 {: s( @4 E! _+ q
  1382. INX0 ~: h' U2 O6 J, h5 ~* W% f
  1383. CPX #$40" P  N% M1 |8 d, u
  1384. BCC Set_NameTable_Attributes_Write
    2 |9 w# z7 R+ i2 ^: b$ C9 r
  1385. RTS' j! c; N2 B* a2 D& ^: y3 g4 ^
  1386. ) h$ n6 J, V+ O- t4 Z
  1387. ;==============================% t  X2 T; k5 F
  1388. Set_Palette_Color;设置调色板数据
    : B! {& _( L3 ^7 z6 O
  1389. BIT PPU_STATUS
    6 k( J/ [& K5 Q; J% {3 Y0 d) ~
  1390. LDA #$3F
    : ^: U/ B& [: m( E3 L
  1391. STA PPU_ADDRESS
    4 k& y9 x' L5 o& r& e7 C
  1392. LDA #$00
    4 e, [3 e+ ], d1 r6 f6 ~/ R/ [+ X
  1393. STA PPU_ADDRESS
    & c3 t7 F* V( n- N
  1394. LDX #$00; [( ~( W6 E; `4 z
  1395. Set_Palette_Color_Write( T8 V8 X# C! l. {% t
  1396. LDA Palette_Data,X6 \, g& M% O* c# w
  1397. STA PPU_DATA
    ' \$ ?+ P0 E. ]
  1398. INX1 O* W. v% O4 K5 Y+ g
  1399. CPX #$20
    % C. ?5 q! {# C  P- e3 U, k
  1400. BCC Set_Palette_Color_Write6 r$ h$ p: a" d
  1401. RTS7 _. |7 e5 V) c* m

  1402. 3 G! Y) k9 w( k2 }! K# V
  1403. ;==============================
    9 O9 t6 w9 Z8 s4 l, B
  1404. Init_Palette_Addr;初始化调色板数据$ j$ D% H- D: Y9 j$ M
  1405. LDX #$007 O+ m$ e( e& V" B' G$ _  [5 K
  1406. Init_Palette_Addr_Write5 f- |2 _1 i) C
  1407. LDA Palette_Data,X- @+ g; g+ P) Y5 Z/ W
  1408. STA Palette_Addr,X
    # k8 J3 y, A3 N- d8 ?, A
  1409. INX; F* {! _4 c* y8 }  s
  1410. CPX #$20
    2 O* T/ d$ |/ ~" ?
  1411. BCC Init_Palette_Addr_Write
    & ?0 {1 \1 D# |. M/ i2 R7 Z$ h
  1412. RTS' v1 b6 O1 Z! ]) O. G

  1413. 1 P* h! v# w1 J# j6 M3 `% b) H' c
  1414. ;==============================
    3 R) E8 J  `8 |! l5 F( D% c
  1415. Update_Palette_Color;更新调色板颜色
    5 r2 ]4 X: s2 \# L& E5 `( O
  1416. LDA <Palette_Update_Flag; D2 ?$ Y# q( b' D
  1417. BEQ Update_Palette_Color_End
    * }  D4 j+ n3 p; r7 i- s
  1418. LDA #$3F2 Y  h3 B& t  ~. W
  1419. STA PPU_ADDRESS
    ) i9 A3 ?# A4 e- ^6 t0 K4 A" ~) S; D7 i
  1420. LDA #$0C1 f% s' M8 U% X. T7 [5 i5 K6 h
  1421. STA PPU_ADDRESS
    3 M9 _! W& `! K! t. U
  1422. LDX #$0C6 O4 \  P+ q% |: ~) H0 }; x
  1423. Update_Palette_Color_Write( ~! M5 W6 ]( N% p# w
  1424. LDA Palette_Addr,X3 l  w" T2 W0 E" ~; K
  1425. STA PPU_DATA  B9 [) v4 I& h8 E- P5 j# V
  1426. INX
    1 R1 h5 C& e8 \: I
  1427. CPX #$14
    + s4 p' u+ P; q; [8 t- S
  1428. BCC Update_Palette_Color_Write* w3 Z8 o9 _8 f$ P/ m/ \
  1429. LDA #$009 V5 z. ]# y' y4 Q1 i. `0 l9 P1 A
  1430. STA <Palette_Update_Flag
    $ N- Z; c+ e" L
  1431. Update_Palette_Color_End3 }% W1 i/ W4 ]* j
  1432. RTS9 X% P2 R- \# P# Y$ F9 s" {' v

  1433. / O( Z7 ~/ x( a" E9 T5 s

  1434. ) N, u$ ]. X7 s& N+ t
  1435. Update_Sprite_Palette_Data
    * \+ ^7 H2 ^9 w
  1436. .DB $21
    ' b, V; |8 j6 n4 ~: r
  1437. .DB $21% C3 }" Y5 f( |
  1438. .DB $11
    6 f5 N. h) F! H
  1439. .DB $019 ]  P; ?$ p2 `
  1440. .DB $01
    9 J$ P. w; h- Z! \3 v6 f
  1441. .DB $11! \5 |+ ^# z2 _( R4 K9 j: K9 V' R
  1442. .DB $21
    . j( U9 ]* }. @5 M4 i
  1443. .DB $21) T% I& U5 N& E$ k3 ~
  1444. .DB $11
    $ D# C8 z6 C. ^, q6 I' C
  1445. .DB $010 x1 V( X% ~* Y9 c
  1446. .DB $11
    + H6 r' \0 l+ R
  1447. .DB $21
    3 h; b2 Y& I  E0 x7 p: z5 s1 }
  1448. .DB $21- g$ a# s+ k. ]# o! P
  1449. .DB $117 \/ ]" [' F) i& u
  1450. .DB $011 k. d7 b' T. i, t! \: Z7 u
  1451. .DB $11" }3 _% j! @6 i6 M! k; p$ Y
  1452. ;==============================, g# N" q$ Z) G
  1453. Update_Palette_Data;更新调色板数据
    2 {4 E+ ?9 E# S: J) Y# `& u
  1454. LDA Nmi_Time_Count: K0 W* @) o1 o  }2 l6 w
  1455. AND #$089 _2 ^& `- m4 U4 _3 D1 K0 J
  1456. CMP #$08
    ( i1 N# E- z4 |8 y! S
  1457. BNE Update_Bkg_Palette_Data7 p1 h9 X3 ~$ ^* `6 }. M8 F( ]# }* e

  1458. ) ]' ~8 C7 M: `
  1459. Update_Sprite_Palette_Data_Set& s+ Q1 {9 p) i9 |$ ^' F
  1460. LDA Nmi_Time_Count
    * O" w5 R' t" b  Y0 E3 u0 ?
  1461. LSR A& t+ e$ ~0 ^0 R! \+ u/ [
  1462. LSR A  \% K! F2 J+ y0 ]  U% B
  1463. LSR A3 n& s6 ^% D% ]7 ^
  1464. LSR A
    2 g) N  ?6 E- D$ e- u% g6 U
  1465. AND #$0F6 x  n7 A' `0 j
  1466. TAX
    7 q; T( o# G" J7 N
  1467. LDA Update_Sprite_Palette_Data,X, t& V3 q% f+ O0 `
  1468. STA Sprite_Palette_Update_Addr
    ! e+ o# J) u4 W2 Q4 j' O. y/ z
  1469. LDA #$01( S2 h5 i, [+ e+ n
  1470. STA <Palette_Update_Flag, L" T: Z. J% ^6 L' J

  1471. , C+ ?# f/ S& S& l( b  R1 ]& G( u
  1472. Update_Bkg_Palette_Data& o# w: T4 n9 ^, P; a( k' ~! J- s
  1473. LDA <Text_Disable_Flag
    ; b6 R$ P5 T! D0 A# x4 D, t8 P
  1474. AND #TEXT_DISABLE_RAM
    * u3 g- B! v% Z" a$ y$ k
  1475. BNE Update_Palette_Data_End
    ! i0 F7 i( ~# d
  1476. LDA <Music_Stop_State
    1 ?1 O  E0 _: }+ C
  1477. BNE Update_Palette_Data_End1 Y$ a  I' f) c7 p

  1478. 5 n, e% S, i, ]* l
  1479. Update_Palette_Data_Check3 G" v/ F; c0 t& V- p% S& D' T- ]
  1480. LDA Palette_Wait_Cnt) }: ]3 l- S& |* w0 N# m' g
  1481. BPL Update_Palette_Data_Check_Over
    7 Y) k/ {/ k) m5 O# w0 t& b
  1482. LDA #PALETTE_UPDATE_INTERVAL
    % s2 b' m; U% ]8 x# a4 f
  1483. STA Palette_Wait_Cnt# [9 b/ J: C* s! ~6 p6 F1 T; g5 d3 W
  1484. Update_Palette_Data_Check_Over
    8 G9 C; t4 {5 @( ?1 l6 c
  1485. DEC Palette_Wait_Cnt
    / s& V1 Q( ~( P9 I
  1486. BNE Update_Palette_Data_End
    ; @1 f% B4 Q- h
  1487. ( p: O- p( H& G' y
  1488. LDA <Text_Disable_Flag
    / U" R" [; q/ _( y# m- {
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ' H2 P* Q: ?4 Q- X- P# B  ?
  1490. STA Text_Disable_Flag' Y4 Y& h0 r( [, {
  1491. INC Palette_Update_Flag
    " i. l3 l$ C+ V$ h; P

  1492. & K" R( t3 }% S( f  G
  1493. LDA #PALETTE_UPDATE_INTERVAL
    ) v* i: f# u# h, |2 O9 H7 T$ [
  1494. STA Palette_Wait_Cnt
    7 L6 M( q* f1 q( j) Z! K, A

  1495. 6 q$ ~1 @2 N# ?6 |. q
  1496. LDA Bkg_Palette_Update_Addr
      Q$ X: w, ?5 }
  1497. CMP #PALETTE_UPDATE_MAX
    % s( ^# T6 d. Q- z, q5 n
  1498. BNE Update_Bkg_Palette_Data_Set
    ! l7 v6 n6 F7 j; A( N' F* n3 i; W& a
  1499. LDA #PALETTE_UPDATE_MIN - 1
    2 I1 e3 S( Q- c+ p1 s' B
  1500. STA Bkg_Palette_Update_Addr7 B5 |4 Q' ^+ x( A4 S
  1501. Update_Bkg_Palette_Data_Set
    , S8 }( p/ M4 L* F) h4 {6 D/ ^
  1502. INC Bkg_Palette_Update_Addr
    ; @( [* s, @9 x5 k5 g

  1503. : n2 o3 T$ o& d6 x1 P* M
  1504. Update_Palette_Data_End
    $ _5 D* E7 o* d. R9 B/ P4 W
  1505. RTS$ ~7 f& K1 Q1 N8 q* p4 O

  1506. " Q/ W' f& P" ~, \4 [3 y% Y7 _& u" `: v
  1507. ;==============================
    " _- l! _3 o8 Y4 W( w
  1508. Show_Music_Text;显示静态文本! j) f3 F6 ]9 e
  1509. LDX #$00
    & X/ s9 d  f8 g4 E# \, c2 O
  1510. Show_Music_Text_Set4 L0 s0 U1 {5 c+ I
  1511. LDA Static_Text_Data,X
    & }8 d5 Q" x) O& F1 p$ `
  1512. STA <Data_L3 p. N/ u% c0 I$ h! H% y
  1513. INX. y. s8 y. x% X* m
  1514. LDA Static_Text_Data,X
    2 R9 @6 q3 I/ i! g
  1515. STA <Data_H
      z- q3 }# w* C9 u2 U
  1516. INX' w4 N+ Y0 X5 Q; X0 J* c
  1517. LDY #$00, i8 O. Q, X8 ^% o
  1518. LDA [Data_L],Y
    % ~% x% J* e0 `1 B# r7 X% q- x; S
  1519. STA <Data_Cnt
    ! j2 Z  u6 J, I9 T5 m! K, |3 p0 b. x
  1520. DEX% I) \+ o# V2 M0 a5 R
  1521. DEX
    ! k6 P: P9 H) y4 S/ g
  1522. LDA Static_Text_Pos,X
    # [& `! b0 U+ F- d! d; h
  1523. STA PPU_ADDRESS% @6 w: z9 [* b) |
  1524. INX
    . h; M& i  g& H7 B( e
  1525. LDA #$20
    ( |! P% K8 B8 g( n
  1526. SEC
    ( w+ ]/ r! p+ L* ^& \: B* v
  1527. SBC <Data_Cnt
    5 s# h0 F$ {0 U7 B% k/ \2 ~
  1528. LSR A" |& B; p1 X; S
  1529. STA <Data_Buf
    $ n$ ^$ A5 `$ [
  1530. LDA Static_Text_Pos,X
      j- \: v3 H) ^- n
  1531. AND #$E0+ W& t  n5 I& T$ x% p3 v
  1532. CLC
    ' B+ {- s+ X' g' G$ b. o7 M
  1533. ADC <Data_Buf5 q$ ]3 `7 k4 ]) s
  1534. STA PPU_ADDRESS9 l, m: }/ R: q$ m
  1535. INX! @# F2 I; a$ c/ n: D; j- O% O
  1536. Show_Music_Text_Set_Write: N! t; ]3 U0 s- E3 n) F0 @: T9 T# N
  1537. INY
    1 o( l" Z. i2 c  S0 P+ s8 b" i
  1538. LDA [Data_L],Y* m/ _1 k& m1 g. g- [, P! F
  1539. STA PPU_DATA) K$ ^) a; Q( {9 G
  1540. DEC <Data_Cnt  Y  u- D" P2 u& z( ]+ Q. G  t
  1541. BNE Show_Music_Text_Set_Write2 e: n, L5 H# g4 s5 h
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    , r9 S* q8 y+ u. }% K
  1543. BCC Show_Music_Text_Set
    + ~5 g' c# O4 d0 [' l
  1544. RTS2 g; F9 o, C" E' W$ ]' G
  1545. 1 F" J/ m! U; o: @1 _  v$ r% p( b
  1546. ;==============================
    & S, c# X: Y5 F2 g( K9 a
  1547. .IF Track_Name_Pos;显示曲目信息
    : T7 n( \7 n4 V3 J4 B& G
  1548. 0 Y0 A. ]  x& \# H
  1549. Clear_Track_Info
      V  k( [3 K" }
  1550. PHA/ n, |9 H$ F8 w2 L
  1551. LDX <Music_Item_Cur
    & W- g0 d! Z8 w2 j" O
  1552. LDA Track_Name_Addr_Flag,X$ j7 g/ M- V0 H5 V; G$ H: a
  1553. BEQ Clear_Track_Info_End_Ex! u8 U: S/ w& o( F* S) B7 Q
  1554. PLA
    ( T# u! A) ]. A# C  L% a* y/ A
  1555. ! N0 `. E, p0 g; r' w. X5 a& w
  1556. LDX PPU_Cur
    / O, ^; G" x# ]& L
  1557. PHA
    " l5 a( r  Q- C$ ?# y
  1558. LDA #PPU_MODE_CNT_CLEAR
      N( Y) C) r9 G6 M$ j- C: W. V
  1559. STA PPU_Addr,X
    - L! K+ Z1 E+ ^0 y' a4 j( Y5 j
  1560. INX
    . T: m- d. [  z6 l) F' W0 f
  1561. PLA
    ' d. n3 \( }+ Z* p: j( [( {& m
  1562. JSR Show_Get_Track_Name_Center_Pos1 e& C" @- j  s" Q# K
  1563. STX PPU_Cur
    ( s) ^- {* l2 X# j* o
  1564. Clear_Track_Info_End) U- ^: h* b2 ~
  1565. RTS
    * k7 W/ t' M& F' h
  1566. Clear_Track_Info_End_Ex$ M; _' G. z) S5 p
  1567. PLA! l( |/ O2 c8 a& \- u: Y" `. W7 ~+ g
  1568. RTS/ _1 k  u9 C5 f0 _7 c" c

  1569. " L6 `3 D: }( @1 Z$ {
  1570. Write_Track_Info* v9 x/ g, T2 X+ A. z* [
  1571. PHA) [# A& J0 I0 j! P( b6 N% W0 @2 y; _
  1572. LDX <Music_Item_Cur
    * y4 W8 E0 i, o* ~6 r" k
  1573. LDA Track_Name_Addr_Flag,X5 V' S2 _  w' b
  1574. BEQ Write_Track_Info_End_Ex
    $ K3 k1 Y2 x! e; ]8 D) X: V, g6 A
  1575. PLA
    # \4 p/ L! ~7 d+ r: D
  1576. 7 J+ v  v8 {3 O* a
  1577. PHA. {2 z, J: T( V9 X0 R9 s
  1578. LDX PPU_Cur) G  }) ?3 V. j
  1579. LDA #PPU_MODE_CNT_LINE
    - E9 F9 v4 n# P
  1580. STA PPU_Addr,X
    ! Z) ~% J9 N/ \. f- f
  1581. INX: w9 P9 p# [  y3 a: P
  1582. PLA/ }4 Z" f- J4 m+ T" ?7 E+ G
  1583. JSR Show_Get_Track_Name_Center_Pos
    # @/ x0 B7 Z. M( @: S. {5 J+ b% H
  1584. Write_Track_Info_Data
    9 a( E9 A: o- P
  1585. INY  Y% q9 H( @3 o( `
  1586. LDA [Data_L],Y7 D) }' d: r! _+ ?5 ^
  1587. STA PPU_Addr,X2 ~5 [& _: ?  F8 M; ?
  1588. INX) _/ e9 k% i# C
  1589. DEC <Data_Cnt8 t5 f' g7 E$ U  r
  1590. BNE Write_Track_Info_Data
    9 G+ @. A) T* i. ]- |( ~7 ~* k
  1591. STX PPU_Cur
    9 |- u: p- I7 u6 W- ]6 y* V
  1592. Write_Track_Info_End
    " W+ M$ m5 M9 i5 @+ Z: F
  1593. RTS
    1 ^9 R, o5 _. U
  1594. Write_Track_Info_End_Ex$ U' g, ^$ V2 t* H
  1595. PLA
    - W0 A# a; }& a0 W
  1596. RTS
    0 |$ [! ?4 ~3 ?

  1597.   G6 X9 `+ i- |9 t) q$ ~- W
  1598. Show_Track_Info" b  D" N" m- [" L9 c( m* T2 a
  1599. Show_Track_Info_Clear6 V$ p( J& v4 k
  1600. LDA <Music_Last0 U2 H: k& r4 f+ s1 M0 o
  1601. 1 V6 K& a. c+ p& P. T; ~- x' M3 I
  1602. JSR Clear_Track_Info% n. e7 H/ `( W$ i9 C7 G
  1603. 1 w4 V6 h9 s4 p, B5 z+ P$ A
  1604. LDX <Music_Item_Cur
    3 R; ?7 R# b# H. W- O: }/ h
  1605. LDA <Music_Cur,X" G: x8 [, w3 O8 x1 Z  H
  1606. JSR Write_Track_Info$ ?4 t+ S8 @8 p( e
  1607. RTS
    8 \% p- N8 }4 M0 v$ ?% K0 H

  1608. 9 t# C3 q9 z, w4 _
  1609. ;==============================
    & K+ c" d( z5 @6 c4 S0 x. g* E/ y
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    : a0 Y4 \+ e3 y; g: [+ Z" M6 l
  1611. ! S' L' X3 V' d3 N
  1612. ;取出集合名索引' E3 E% t% e! L% c( ?
  1613. PHA
    - l* A% d- ]2 u% t# b

  1614. % @% ^, v  S; u7 v/ @$ i+ J4 L
  1615. LDA <Music_Item_Cur0 H7 D' h. b# _! a8 T8 [
  1616. ASL A
    . [  C" z7 b8 k, ?" v) X
  1617. TAY
    ' h& A; ~2 m# v4 j- [$ Z
  1618. LDA Track_Name_Addr_Port,Y
    / }& e( U- [# I/ S2 u0 W) h. j9 S8 U# I
  1619. PHA
    : p7 M: V6 @( u  {
  1620. INY
    " ~/ r0 K% e# O% A1 e- X
  1621. LDA Track_Name_Addr_Port,Y
    & z7 U8 q+ X' |& r
  1622. STA <Data_H
    5 S( B$ J# \" }8 i" e, R
  1623. PLA( I/ m; [8 B2 u2 W6 U
  1624. STA <Data_L; q" Z6 u' u( g3 w6 {

  1625. 9 S* z7 v8 D! T
  1626. PLA
      u" V  P6 d, p  |
  1627. 3 Y4 c1 P7 T, J1 z. W2 c
  1628. ASL A
    5 s( r$ H  X5 T5 p
  1629. TAY
    * ?) c- w) b4 n1 J1 n0 @
  1630. LDA [Data_L],Y6 H. |/ x" [% @9 ]# n0 {
  1631. PHA  r( j3 h8 \% k& A- {5 |
  1632. INY
    : U0 Y, u$ {8 j' j
  1633. LDA [Data_L],Y
    0 J  {. u* x) |- m9 g% u! ]
  1634. STA Data_H
    3 E/ y& f$ D/ @, J. N5 @$ W
  1635. PLA& Y  j$ T0 r$ p  ~$ @
  1636. STA Data_L- q$ R. W$ F6 R9 `9 Z6 E# @4 t

  1637.   O% p$ [# p2 L8 c6 P
  1638. LDY #$001 L( ]1 x& D0 s7 b8 K3 F! h
  1639. LDA [Data_L],Y
    : W" N6 d! N% b) h$ N
  1640. STA <Data_Cnt
    . U# |7 \* m1 ?' y* H1 H
  1641. LDA #$20
    ' i9 Z4 O7 o' R' }# R
  1642. SEC" Y- }* z8 h7 z
  1643. SBC <Data_Cnt2 D4 S" \- x; f& @
  1644. LSR A# a2 Z( x! {3 Q) W: E
  1645. STA <Data_Buf
    5 Y8 n$ Z! X' l/ {
  1646. LDA #HIGH(Track_Name_Pos)* m& T9 E; u, ?/ T3 U( }8 w8 z7 T( H" ?
  1647. STA PPU_Addr,X
      J+ ~4 ^& R4 W6 t' D) j$ x
  1648. INX4 P0 E( Q, F4 w5 `7 H, F+ v
  1649. LDA #LOW(Track_Name_Pos)
    ) [- ?& }8 e/ h2 ?
  1650. AND #$E0
    ) T$ v) E4 L' G; \' U% m" |
  1651. CLC
    3 T  i; R: T. L. C
  1652. ADC <Data_Buf# L. e( F4 Z+ D+ A
  1653. STA PPU_Addr,X6 w9 d: r1 m) S- I5 x
  1654. INX1 J2 F1 x5 b- R: q
  1655. LDA <Data_Cnt* p2 m6 _8 R+ i
  1656. STA PPU_Addr,X6 ~/ j/ o( X8 w
  1657. INX+ c" r1 y  C7 F, V1 j
  1658. Show_Get_Pos_Center_End9 I# q" E, d: g. S7 c
  1659. RTS3 s3 l  U  Z9 c# r( I/ d0 x2 ^2 ~* z- P
  1660. .ENDIF" z6 C' q. s' x/ u

  1661. / f7 x. k: Z) q( N
  1662. ;==============================  H3 e4 j5 H6 I0 E* W$ }. F' ^
  1663. ;音乐端口清除9 i+ p! o" I9 R  U
  1664. Sound_Data_Clear
    ) t; ^: e6 I: x" Y1 A% G4 p
  1665. JSR Sound_Port_Clear
    - F5 ?  n9 K. y; i# X9 p
  1666. JSR Sound_Ram_Clear
    ; B7 L! n3 E. L# ~7 e3 i2 Y
  1667. RTS- \6 g- J6 f# X4 i$ w" k
  1668. . D( Y3 O. r1 A/ {0 @! ]
  1669. ;==============================' V% v4 X" A6 N, ^# Z, }0 \! a0 s2 v
  1670. ;音乐端口清除( }. J/ K0 I% S, W4 b3 E
  1671. Sound_Port_Clear
    , y0 C$ U: l) _8 J! a; T! g
  1672. LDA #$006 Y' V3 {- e2 B3 O
  1673. STA APU_STATUS
    4 M* N3 y& x3 j' V- S8 w7 t, v
  1674. LDX #$00
    5 ?: C* w- R" _. e5 S. E/ P9 J# M
  1675. Sound_Port_Clear_Write
    2 e% a$ D$ K. N2 y  i2 i
  1676. STA $4000,X- L1 s5 K9 e$ ^# t* J* n  m1 t
  1677. INX& `$ z3 L& }* e- Y& W0 A1 d
  1678. CPX #$14
    + E# K0 e6 k2 ^  T
  1679. BCC Sound_Port_Clear_Write
    3 a1 O  o1 c1 \# q1 T+ {$ R* o
  1680. RTS$ o( h+ S; a8 X0 @  C
  1681. 7 h+ c! ^' N# T
  1682. ;==============================# p& n3 p$ ]7 L% i
  1683. Sound_Ram_Clear;RAM清除
    0 P) M% v+ [9 H9 d% H4 V5 j
  1684. LDX #$00
      u! W# I1 K0 @% H2 C, ]: L
  1685. LDA #$00
    ) P' j& `3 W/ c8 v0 A
  1686. Sound_Ram_Clear_11 }6 m; f! A2 i! f
  1687. STA Sound_Ram_Addr_1,X
    - a9 l4 [& T6 p; {* ^% F
  1688. INX" z' s( a* b; w' v9 b3 P' z7 D
  1689. CPX #Sound_Ram_Addr_1_Size3 [! Z, N! G6 `5 g+ U  j6 B
  1690. BNE Sound_Ram_Clear_1
    ! P* y' S( W( ^- q
  1691. LDX #$00
    - P. ^) c$ o$ v0 v5 R# W- M
  1692. Sound_Ram_Clear_2% ^# J  ~. G8 m" W" R$ R6 J1 Z
  1693. STA Sound_Ram_Addr_2,X
    ! m# J' |. Z) Z. K' K
  1694. INX3 Q- }) }$ y$ f  [) {3 Z: |
  1695. CPX #Sound_Ram_Addr_2_Size, ^6 Z3 z9 J  L/ G
  1696. BNE Sound_Ram_Clear_29 ]' a0 Q1 f9 C# u/ e% U) ?0 v
  1697. LDX #$00/ u- K9 k0 H6 Q$ T8 w
  1698. Sound_Ram_Clear_35 a8 r6 d: I- g: a1 \
  1699. STA Sound_Ram_Addr_3,X9 Q; l- ^; Q: G8 j6 u5 t! T" a
  1700. INX2 P' G+ H9 X3 |8 z/ R
  1701. CPX #Sound_Ram_Addr_3_Size( Z/ O5 k* G/ D1 j0 G5 H/ y
  1702. BNE Sound_Ram_Clear_3
    . E! m# P) b  D
  1703. LDX #$007 |8 K3 A# C8 \1 T, {% X9 ~
  1704. Sound_Ram_Clear_4
    * D% f6 r8 B" C3 {% _
  1705. STA Sound_Ram_Addr_4,X
    / W3 ~" `2 T5 N/ ]! x
  1706. INX
    , b) Z1 I) G8 R8 e& Z! s
  1707. CPX #Sound_Ram_Addr_4_Size
    ' M5 O8 E: @% }* W
  1708. BNE Sound_Ram_Clear_4
    ) [  B4 a- I  P8 d1 d  v. S
  1709. Sound_Ram_Clear_52 d9 V: q9 \- ~4 F* \
  1710. STA Sound_Ram_Addr_5,X1 ?6 |4 C. d. z# Y% x! `
  1711. INX
    9 n4 B2 i" s0 m
  1712. CPX #Sound_Ram_Addr_5_Size
    5 ?: i( [* m; n4 d: S. p
  1713. BNE Sound_Ram_Clear_5
    ! a+ H4 X( i* u: `& }7 `9 C& G; E
  1714. RTS
      ^. N4 o- F, T  U- J8 A' ^. T
  1715. 4 u5 {1 [7 X( e- S3 {- H8 P, Z
  1716. Get_Music_Collection_Name6 t, H0 I: [3 B3 \2 J+ u+ S
  1717. PHA8 T+ b, ?) E. u4 _) `
  1718. LDA <Music_Item_Cur8 s# r: n7 s8 X: X& t5 B6 S# J8 P8 I& S
  1719. ASL A
    7 ~+ Z* z( n1 F  p6 P
  1720. TAY* r2 \3 Y2 S" d0 c7 N4 R" b
  1721. LDA Music_Collection_Name,Y8 D# @5 _" a- j/ |7 l% c. x
  1722. STA <Data_L
    9 m$ n8 _8 D" u) r$ q8 C9 \( g
  1723. INY
    % {1 g/ L6 J$ s8 X
  1724. LDA Music_Collection_Name,Y& B2 G6 w0 H, z$ }
  1725. STA <Data_H, w. @- [, }4 ?' W0 P
  1726. PLA
    , T/ k! u  T/ X" o3 m
  1727. RTS
    . O$ F1 O( _! ]; q# C, I/ }( R4 f

  1728. ' S; A  d* Z; w9 d# V
  1729. Set_Sound_Total
      Y9 c/ D" u! O. o
  1730. LDY <Music_Item_Cur  W) d2 \% Q' i. P& ^% G
  1731. LDA Sound_Total_Port,Y
    1 Q+ N4 S1 `" m/ g, O
  1732. SEC
    ( c- f; C7 t  F" S. }8 R
  1733. SBC #$011 N4 T( r! Y' V( D' B9 v0 \
  1734. STA <Music_Total
    / F8 K; Z" H$ C" a* n. [8 v( {
  1735. RTS
      L* a5 S# x! `

  1736. 9 w( Y1 q" Z" a  s( I) j  Z' d: m9 j
  1737. Get_Sound_Start& p1 ~5 B3 w' R2 c  P$ D1 @
  1738. LDY <Music_Item_Cur$ w8 Q! ?8 n" I. \
  1739. LDA Sound_Start_Port,Y8 C' k/ ]; j! k9 ]1 b8 E
  1740. RTS& b, i+ g2 d5 g4 [& E! f1 e
  1741. , o3 U! O+ @' K9 ~! y& _
  1742. Set_Sound_Init_Port3 {8 m0 ]8 Z& M
  1743. PHA7 ]& t3 I  p0 w5 e/ G+ X' x
  1744. LDA #$20& c- s# X! I7 L" I. `, _" F8 r( U
  1745. STA <JSR_Addr_Op
    $ t" w  w) i* t8 _  [% R0 t2 j' P
  1746. LDA <Music_Item_Cur" D. }/ X7 i& R4 K  `
  1747. ASL A
    8 A8 y$ d( ?, r" b/ d: [
  1748. TAY6 t4 F" P( `2 g) j! U( o  V: A+ L" e
  1749. LDA Sound_Init_Port,Y
    - ]1 Y" ~9 c- ]' b% p
  1750. STA <JSR_Addr_L
    % z' s4 B$ @8 G9 N
  1751. INY
    ! R4 O7 E+ m4 a$ o
  1752. LDA Sound_Init_Port,Y
    4 S3 k" P  z- R. l1 Y, A2 e
  1753. STA <JSR_Addr_H
    / T$ r) V. m( V1 W9 d, }* P
  1754. LDA #$60
    * L+ {# H# _3 n* M0 E% j
  1755. STA <JSR_Addr_Rts. A5 A# O" ^* t; S5 E) y
  1756. PLA% P; `7 g/ A& U$ i
  1757. RTS; I4 ?' Q$ U4 Y
  1758. 6 I  _( E  B  ^9 F5 I( ?
  1759. Set_Sound_Play_Port8 ^2 D: {7 L7 u6 M6 `
  1760. PHA
    9 W2 t. {8 g  _/ w
  1761. LDA #$208 |& g/ z4 ]  d8 a& b( L
  1762. STA <JSR_Addr_Op( @% o& N7 i5 m- O. p
  1763. LDA <Music_Item_Cur- Q0 B: L- G3 s( E
  1764. ASL A6 B2 P0 {3 c- A- {8 [1 B) G* f
  1765. TAY
    # Q0 {! }0 n+ x* t
  1766. LDA Sound_Play_Port,Y# f, Q5 R  l, I$ t5 L1 M% i/ T
  1767. STA <JSR_Addr_L/ U# Q: @1 n  z; f! a8 ?, m" T
  1768. INY
    ( h8 G7 n, o( C# S6 j/ F7 D
  1769. LDA Sound_Play_Port,Y
    5 B5 f! {/ j) q4 r" _
  1770. STA <JSR_Addr_H% H+ s2 h- c% B
  1771. LDA #$60
    # W" {% V, O! v+ m( z
  1772. STA <JSR_Addr_Rts! E4 B9 i& G8 k3 ]: n1 a
  1773. PLA- P6 L; R) e3 Q
  1774. RTS
    3 R4 q: K" g: M/ T+ q+ E, p
  1775. 0 Y$ j/ N; Z7 X) ]
  1776. Set_Sound_Reset_Port; J0 F2 k  F7 y" @. T: \1 c: {( P
  1777. PHA: M0 V% Q5 c0 R( i% D' w/ b! {
  1778. LDA #$20
    7 H% E( u; T% l: I- X- @' B* ~
  1779. STA <JSR_Addr_Op  ~- b4 m/ g4 K! T2 Q
  1780. LDA <Music_Item_Cur
    ) X2 C/ B- W, \+ \1 p* I5 P
  1781. ASL A
    ) @! p/ S3 r9 u, _
  1782. TAY
    1 G. Q8 |# X' h
  1783. LDA Sound_Reset_Port,Y. V6 z7 y4 b' t
  1784. STA <JSR_Addr_L
    8 q$ q( E/ a! m
  1785. INY
    $ \" f6 h4 W% p7 u; R0 g' V: ~
  1786. LDA Sound_Reset_Port,Y& I# B$ ?' b9 a( R
  1787. STA <JSR_Addr_H- Y; q7 f8 a4 D
  1788. LDA #$60' J1 F  _+ l+ q
  1789. STA <JSR_Addr_Rts
    & ^# Y0 I8 k+ j5 h6 [
  1790. PLA
    ' I/ a! ^# z& ?! A8 V
  1791. RTS$ j: ~8 `4 o9 Z3 N% t+ s

  1792. % t, |2 @0 ~& M* D+ {" X4 h* d+ |
  1793. ;初始化音乐bank
    , w0 O' E- y0 Z
  1794. Init_Sound_Bank( B8 S4 P  h" _: b! Q
  1795. LDY <Music_Item_Cur
      U: D) e  B& f) u
  1796. LDA Sound_Bank_8000,Y6 H+ p# U  t& Q' t( Z
  1797. STA <Music_Bank_8000( Z7 T# z+ ?9 L& g  R& }
  1798. LDY <Music_Item_Cur
    ; I1 _) X8 P% ~6 a
  1799. LDA Sound_Bank_A000,Y! G; X, v) q, y9 @. l0 R% i3 o
  1800. STA <Music_Bank_A0002 p9 o( t5 ^6 M
  1801. RTS% U  [9 s6 X) X
  1802. 0 @) H0 W# h, c' o5 [; N
  1803. ;==================================================
    1 E" T% J+ u$ o* m) c  L7 s$ f
  1804. Sound_State_Reset;音乐状态重置
    8 r8 m- e, ]. E5 G* G' `5 s. k$ E
  1805. JSR Music_Bar_ReSet        ;重置音乐条/ B2 x% g5 j( w2 b8 j
  1806. JSR Time_ReSet             ;重置播放时间
      G; A+ A9 r. ]8 @& o# l/ L

  1807. 4 Q4 q" Q1 [* b6 [2 P" l/ D  i- t: R
  1808. LDA #$00
    9 c; I  p3 l& q2 Q0 |) R2 V! u, |
  1809. STA <Music_Stop_State7 R5 N% O; k" p$ q0 `
  1810. JSR Music_State_Show       ;显示播放状态# b. H' Z/ B* J

  1811. % v: ]3 E' a7 T9 x
  1812. .IF Track_Name_Pos
    % a) {: h8 e: t9 r8 x2 [2 E
  1813. JSR Show_Track_Info        ;音乐曲目名显示0 ~$ P: w  ^7 @: L2 t7 F
  1814. .ENDIF, r8 |4 e# ^! c% ~- |% N: O

  1815. 1 h, V( |  Q! k& r9 y& ^+ `8 z! O( U
  1816. RTS
    , d! E) B2 ^! J4 z# T" y1 U$ b

  1817. , r1 [2 h2 ^" r% ^$ X7 ^
  1818. ;==================================================: S+ C% n( C8 w; E# J0 I
  1819. Sound_Init_Proc;音乐初始化处理4 f0 W/ H) K/ V. ^  y" O9 m$ ~- \
  1820. PHA
    ' a1 d1 A) P2 m3 x) i: d1 e4 j
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    ; Z& @7 @. s* V. J8 t% ?
  1822. LDA #$00
    * B; b2 k, S5 Y) B* _
  1823. STA <Scroll_H               ;重设水平滚动
    - S" G$ ^: \. ^. i0 j0 Z* H+ Z
  1824. LDA #$0F
    . `, |" P- i+ F) x: P) D
  1825. STA APU_STATUS
    ' i1 H+ Q1 ]8 s
  1826. PLA
    1 @6 V/ d% @* `& r
  1827. JSR Sound_Init             ;音乐初始化
    ' S3 ?' ^' Y$ e& a. l$ S$ b
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    , t% W! B; Y0 |1 ]% z( C
  1829. RTS. U' s- c7 n8 A; F; D5 J

  1830. 7 B0 f+ e0 m' y7 }+ k: a* S7 Y
  1831. ;==================================================
    # w( A: Z# Y* l  U% h" J* r
  1832. Sound_Play_Proc;音乐播放处理  z/ o4 L( }3 S+ U
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    / r% S" @# j, A/ S$ J0 p) Y7 W0 A
  1834. JSR Sound_Play             ;音乐播放
    6 f2 w, \8 M3 R
  1835. RTS
    4 R0 [# O5 p9 y+ E2 ]
  1836. # ]$ Y% t$ g+ n7 F, [! T* R- Y: a
  1837. ;==================================================
    2 q' k. q( f9 l) s( O' I# r, B" D
  1838. Sound_Reset_Proc;音乐重置处理
    3 G1 j( q; k& L+ W" @! D4 c# b/ `
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址. c2 c7 q+ m, R5 `+ [4 B
  1840. LDA <JSR_Addr_L
    / s, g* H0 R" `
  1841. ORA <JSR_Addr_H6 H  }4 C# O' [
  1842. BEQ Sound_Reset_Proc_Default
    6 {: u( \$ Y- |3 k) ?) ^
  1843. JSR Sound_Reset            ;执行音乐重置+ `# H2 A. i' @9 _) }
  1844. JMP Sound_Reset_Proc_Init_Sound' S$ l4 L- u5 _+ [  q* W
  1845. + B, ]9 @& k# o( L  Y! }" j
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理, H: E: K! b; \$ i
  1847. ( c+ w& a0 ~! `4 z! s, x
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断0 G% p4 a, J, N, G
  1849. LDA #$00
    % _. c# r2 t/ I5 Z; e) g
  1850. STA PPU_CTRL
    ; V  `2 G( x' K' G6 o

  1851. 8 T8 ]1 z+ W$ h0 B" `/ F
  1852. JSR Sound_Data_Clear
    # V1 s- m  D' P, q3 c- y  f0 @
  1853. 8 H$ }5 T" c  o5 @% u$ K- h
  1854. Sound_Reset_Proc_Default_Wait3 J4 P7 z0 i# ]3 B( v
  1855. LDA PPU_STATUS
    4 n& K2 [! D; U
  1856. BPL Sound_Reset_Proc_Default_Wait: R1 x4 Z& n+ Z

  1857. ' H. T. M" J: I
  1858. LDA #$00: D1 l6 @) {) X; g1 P& l3 M
  1859. STA PPU_ADDRESS1 ]  t7 O# u" X$ c0 H3 d4 W
  1860. STA PPU_ADDRESS
    & @7 g% }1 H, Y5 \; P7 G  u
  1861. STA PPU_SCROLL
      T7 P, Z7 @2 L4 Z5 l8 ^$ q
  1862. STA PPU_SCROLL4 {8 s! Q2 N$ W1 }

  1863.   I7 \, f  }) \2 B. E4 w
  1864. ;恢复PPU控制4 v4 I6 f4 m' D* H" p
  1865. LDA Screen_Ctrl+ G1 I" @, e9 S; Z2 r+ m/ |
  1866. STA PPU_CTRL
    ! P8 s/ A" f' q* I$ s2 o

  1867. 1 T' x! }- g2 d8 o7 u
  1868. Sound_Reset_Proc_Init_Sound
    / U1 O3 `: n* z( `% m6 k
  1869. LDA <Music_Stop_State
    3 A: h5 K6 @: C' e8 s4 A5 R2 `
  1870. BNE Sound_Reset_Proc_End3 o; ^2 ~3 S1 B1 P5 x
  1871. LDX <Music_Item_Cur
    ! P" f6 b- b* o5 S" W: T
  1872. LDA <Music_Cur,X, L  p) b6 [* Q3 P2 }& [- p2 `7 i1 x9 u
  1873. JSR Sound_Init_Proc
      J& e1 H' l" X$ P7 P5 J. U
  1874. Sound_Reset_Proc_End
    ( s3 k- `/ c: |2 J6 \7 \! X9 s: {$ V% d
  1875. RTS" x% M, D: D2 Y$ j; d9 M; d+ V" j
  1876. 1 Z6 y  K& F+ h; T
  1877. ;==================================================0 {2 @1 n! `" X7 o. X) B
  1878. Clear_Item_Text;清除页项目7 M, I3 G% L" M9 q. R
  1879. LDX PPU_Cur
    ( E, J2 r7 A( W5 o) |+ A
  1880. LDA #PPU_MODE_CNT_CLEAR6 P" T* v/ X" H& r( O
  1881. STA PPU_Addr,X
    % e& S$ Q) D" z4 V6 t! U
  1882. INX
    ! T3 G. ?; G) ]9 \
  1883. ! {. }- \% c0 }: K7 W
  1884. LDA <Page_Last: t$ R: Q% J8 v
  1885. SEC
    . ^2 _6 W! N0 [, F  p+ X
  1886. SBC <Page_Last_Index
    5 I3 G) H' f5 ~* R" [/ N
  1887. ASL A
    4 B& H) Z: \3 n+ B' L1 P. i
  1888. * d8 D0 R* }4 s& o
  1889. TAY3 j) a5 V$ c! j: E. q4 s
  1890. LDA Item_Pos_Data,Y* Q8 N. F2 V  U% p& f) o, T& d
  1891. PHA* U+ p) y3 r/ X4 I8 J3 {2 r* D2 I' k
  1892. INY, X1 h! ]$ @; u% d4 I6 v, j
  1893. LDA Item_Pos_Data,Y
    " f$ f/ c8 m, s1 v
  1894. STA PPU_Addr,X
    $ X, N. N8 u( U
  1895. INX  K) z, S+ u" `5 w8 r
  1896. PLA
    6 L% m0 O. }& L1 I( c! q  n  }
  1897. STA PPU_Addr,X1 R: Y( `9 K$ `* @) B
  1898. INX6 G) A, f& X  g) x' Q5 m

  1899. 3 r" F! {% {  s( e. l
  1900. LDA <Page_Last
    $ Z4 h0 a% u5 s
  1901. ASL A4 b8 H+ }& g2 }& T  ~+ a( M
  1902. TAY
    $ `* P: E1 _! F- F5 T5 u. ~
  1903. LDA Music_Collection_Name,Y
    1 Q1 F' p4 C* ?. R) l/ o: p
  1904. STA <Data_L
    ) K+ L+ f. L$ t6 s! C. Z
  1905. INY9 x. D( Y( C# Q) f. a# M
  1906. LDA Music_Collection_Name,Y0 e# p( H6 {4 p9 }
  1907. STA <Data_H- s9 i6 H, y7 M* r7 a. v( p- q

  1908. . M2 R; J2 n' D- S( [2 f# S
  1909. LDY #$00
    7 g( s8 Z4 i: p
  1910. LDA [Data_L],Y  M+ Q! z- I# v% p
  1911. STA PPU_Addr,X" Q# r6 R# M. ?# ]  c
  1912. INX+ S9 n6 ?- t" I+ ?% R
  1913. Clear_Item_Text_End9 s" n3 G8 D1 l
  1914. STX PPU_Cur3 m; S: Z$ Q8 @4 }( {
  1915. RTS/ v0 ]; u3 f. V7 U

  1916. 4 m$ K. I) A- v
  1917. ;==================================================
    + D( W% f* e0 h: k/ Y
  1918. Show_Item_Text;显示页项目
    2 E  p( p: H) r; }
  1919. LDX PPU_Cur' g8 t9 r) M$ e: V, T
  1920. LDA #PPU_MODE_CNT_LINE9 r- s$ A9 w% G; L8 R
  1921. STA PPU_Addr,X
    ( d3 m$ `# z. j2 V8 {3 e8 N6 r
  1922. INX) _/ R4 b) `! S" }
  1923. LDA Page_Cur
    2 }) E' B/ }$ m5 _& K1 Q0 y
  1924. SEC& j9 x" n# ^( B& Q* w
  1925. SBC <Page_Cur_Index
    , O1 ?3 k2 o( g$ j
  1926. ASL A! n7 ]9 l7 \+ {! d
  1927. TAY" G- w7 C3 x" E
  1928. LDA Item_Pos_Data,Y
    & k% c( I/ r) O% X) j
  1929. PHA" p. S5 @$ P: {; ?5 u
  1930. INY
      m# i; |& }2 }$ z2 N  Y: o+ I5 b
  1931. LDA Item_Pos_Data,Y
    ' ?! B# g  ?' o, [
  1932. STA PPU_Addr,X( Y, p" g* Q- b, r. ?
  1933. INX
    * x: Y9 k0 r2 _+ Z' A3 Z
  1934. PLA! I: C4 e7 \* u$ F
  1935. STA PPU_Addr,X; ^! H) O  N( Z0 g9 a" ^2 [/ R5 Z0 B
  1936. INX
    3 h0 O- Z& ^7 G! t& d5 t
  1937. ( I( ~) s1 R6 `0 U! R$ f
  1938. LDA Page_Cur1 O0 _8 ~) \( W# H& S  b) @
  1939. ASL A
    & V" H) v, R+ p6 }
  1940. TAY
    2 {8 o4 ^! C: b0 c  ]
  1941. LDA Music_Collection_Name,Y9 p5 k: E) i1 W
  1942. STA <Data_L3 R: E( ~+ ]' E. `% w* R
  1943. INY. N- @( o8 r+ }! {/ Q
  1944. LDA Music_Collection_Name,Y
    : `$ G' z# B9 J6 J8 ]9 ?5 w
  1945. STA <Data_H" I$ {0 G7 n  J% J7 B

  1946. 9 n2 j: G; m0 o  z5 r" G
  1947. LDY #$00/ p: H" Q, Q# o9 Z5 B1 V/ G
  1948. LDA [Data_L],Y
    , p4 C* g" z8 w+ p* u
  1949. STA PPU_Addr,X& o- ]- }4 S. p! E
  1950. STA Data_Cnt
    1 N; e2 ?: E9 l) K. U
  1951. INX
    ! h; P# l5 i: O8 Z
  1952. & x0 \  T& H0 i: U" ]6 b+ s
  1953. INY
    5 a7 B1 O' Z* H* o: K* J/ l
  1954. Show_Item_Text_Write
    0 l. F5 m3 J7 c2 I
  1955. LDA [Data_L],Y, @, u7 I( D1 ]2 B* D0 S+ o
  1956. STA PPU_Addr,X% q- f* S/ o/ r9 u" q1 L4 A" V( L
  1957. INY
    + o9 T/ ~# J. I3 H! A/ N: \
  1958. INX
    & |  `5 K. v- f$ x, B  x; N
  1959. DEC Data_Cnt8 T; j% U: ~0 y8 F
  1960. BNE Show_Item_Text_Write/ U2 S( t8 [% d  n, g( G! T

  1961. : p" w7 u/ Q3 V& `( P+ `
  1962. Show_Item_Text_End. G: o" u. M# S9 ~* O! T7 n
  1963. STX PPU_Cur
    ( G- ^, g' a0 j1 C
  1964. RTS! }' Z5 b- G+ ]" a

  1965. + A8 ?! c& d  p9 U( r
  1966. ;==================================================
    6 |( S& v: g: ^1 K6 J
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    % [4 X3 W# O- Q* ~  a
  1968. STA <Data_Buf. F; R- |" P8 l+ _# o
  1969. LDA #$00
    $ d4 q5 G& r$ F" K( @" |' @
  1970. Get_Page_Index_Calc
    - n, M3 ?, \. v1 ^
  1971. CLC
    : C# ~" f) ~. S# [9 n; [
  1972. ADC #PAGE_SIZE3 U. Z' N) J, P! T, g3 ?, o
  1973. CMP <Data_Buf
    , i* ]1 [, j& |, |( Z
  1974. BCC Get_Page_Index_Calc4 E4 Y( i6 h, f+ n! m
  1975. BEQ Get_Page_Index_Calc_End
    6 q0 b( w1 i  ]
  1976. SEC" [0 `# ]8 U" ~
  1977. SBC #PAGE_SIZE
    9 d" l- m& ~" U. {
  1978. Get_Page_Index_Calc_End$ k; H" U  J; G$ u) S" X
  1979. STA <Data_Buf
    + A. s: G$ M3 ~1 `/ W/ a
  1980. Get_Page_Index_Cnt
    9 c$ p) w) v, K9 @* A/ k8 |
  1981. LDA #PAGE_SIZE
    ! D6 f% M0 F7 E# W3 q1 |. v
  1982. STA Data_Cnt
    # M# B, f% S4 z: k, W- r
  1983. ( v* C5 _  r" r% J& s
  1984. LDA <Data_Buf; `- W- S- y9 ]* ?
  1985. CLC0 T! k  N+ Y; f, n1 O
  1986. ADC #PAGE_SIZE/ g1 _( F- o8 H& o
  1987. CMP #ITEM_MAX_SIZE
    ' M) Y4 j2 z  H8 e' k
  1988. BCC Get_Page_Index_Cnt_End
    ) G: m$ L% V6 b2 D

  1989. * D( ^, }: a" Z
  1990. LDA #ITEM_MAX_SIZE, M1 k* T" h% I% }8 ]( e7 V# Q
  1991. SEC
    / u! @# M  A; l1 f4 L: B+ y
  1992. SBC <Data_Buf
    ( |( g6 `( T& s; I% A" \2 @
  1993. STA <Data_Cnt* }: ~" v2 x: {7 R6 L; }

  1994. - U( t/ R! V6 j2 ^  ?
  1995. Get_Page_Index_Cnt_End( ^2 }2 X$ O( c0 f6 C" q+ u
  1996. RTS
    : b  `1 \/ v. i' V& O8 G. Y  I  M

  1997. 9 g- ]* i3 u" }4 O; M
  1998. ;==================================================
    ) G) x8 m- g7 G" t  x
  1999. Get_Last_Page_Start_Index
    6 o9 D4 U# `9 A
  2000. LDA <Music_Item_Last- K) a% Y) i/ O$ E) x/ P
  2001. JSR Get_Page_Start_Index3 N# B1 ^0 b& ~( k% _7 N3 R( a! v
  2002. LDA Data_Buf. ^4 V- ~& c1 x0 y) d% Z
  2003. STA Page_Last
    : Z3 x$ h5 U/ R- d# |9 z& o5 ~8 r
  2004. STA Page_Last_Index
    2 y, X; ]  l" \+ _, D1 P& N
  2005. LDA Data_Cnt' K2 K# \' @7 Z- n0 Y
  2006. STA Page_Last_Cnt- e6 F; M, I; R8 S+ L9 [* t' R' j
  2007. RTS
    ( L, ~4 r( x$ l$ U; j+ i
  2008. ) N' R9 `  _1 D  s. s
  2009. ;==================================================
    ! v5 r8 W, R+ q6 O! u* u
  2010. Get_Cur_Page_Start_Index
    9 Y% G/ B& V. T: y3 N" N
  2011. LDA <Music_Item_Cur
    1 s. T  `3 N6 ?" e* y  u
  2012. JSR Get_Page_Start_Index' T/ c6 x* U( B* A$ b1 n; M+ e
  2013. LDA Data_Buf2 C9 x0 f2 T7 F8 Z2 Y) S- J
  2014. STA Page_Cur3 ~3 g. b5 d  }; m4 }
  2015. STA Page_Cur_Index
    $ W7 m$ N4 ?; J6 Y; O1 @
  2016. LDA Data_Cnt0 G  ^6 v/ V0 `% V6 c$ ~+ t
  2017. STA Page_Cur_Cnt( K) r! l0 O4 Z  a
  2018. RTS
    . Q8 @) @& ~: b. s4 s! k8 R
  2019. ! B* x/ V+ b5 k
  2020. ;==================================================. N- e, c$ X/ J6 t, n! R/ l1 o( w
  2021. Show_Page_Text;显示页文本' n4 J7 ^6 I% o; @9 `( M1 h
  2022. LDA <Text_Disable_Flag
    : k& ?( D1 o! U8 I' v4 t) K3 \" M# {1 r
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM) T6 \) t& s/ Z) g! ~# g* A* E$ L
  2024. STA <Text_Disable_Flag6 B2 ~% o9 r8 O( E

  2025. 3 H2 L( ]5 e! p4 H
  2026. JSR Get_Last_Page_Start_Index5 N2 `- C7 l3 V% P, J
  2027. JSR Get_Cur_Page_Start_Index% {. w( Q) T% G

  2028. . w' ?& b, u! W2 T
  2029. Show_Page_Text_Set
      z5 X# Y6 i% D6 S- J
  2030. " T' M  ^, ~: e* U& l4 S" w
  2031. Clear_Page_Last_Item;清理上一页, v. t& Z- i& R$ J+ _  U& ]
  2032. LDA Page_Last_Cnt
    8 {9 [- ^# R- m4 [7 O1 j5 k& r3 \
  2033. BEQ Clear_Page_Last_Item_End( l+ _, M) Z2 e8 p9 k
  2034. JSR Clear_Item_Text
      C5 |+ a6 ]1 e3 U' |8 A* @
  2035. INC Page_Last
    2 O* I3 Z' W+ J
  2036. DEC Page_Last_Cnt
    ! B7 z/ d: b/ O7 Z9 ]
  2037. Clear_Page_Last_Item_End$ M2 ~, c3 k* p- h* n6 N2 L
  2038. : s' n0 W5 o6 t, {. G: d
  2039. Show_Page_Cur_Item;显示当前页
    - p: x5 v6 o0 t9 q( @
  2040. LDA Page_Cur_Cnt% Y7 o+ B# _" K2 P
  2041. BEQ Show_Page_Cur_Item_End
    & }, n% b* Y1 _5 d/ X( u$ h3 i
  2042. JSR Show_Item_Text6 M, ?9 i$ ]; ?: x% }6 n* T  y
  2043. INC Page_Cur) B: [. Y9 C& f* k
  2044. DEC Page_Cur_Cnt, n5 b3 ?* i$ D/ F
  2045. Show_Page_Cur_Item_End
    / Q7 l" P; o/ O8 k
  2046. 0 _, K/ U2 t0 W9 T8 ^+ y
  2047. INC <Time_Wait_Cnt
    2 Q: U" K8 ]: Y0 g  @
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作: @" ^2 @- K3 s0 B& L& ?) s
  2049. LDA <Time_Wait_Cnt9 C- \+ y* ~& K) q, X8 _9 D/ |
  2050. BNE Show_Page_Text_Set_Wait5 U" D0 {2 ~& O4 X4 `

  2051. 3 o6 b1 M( {: M9 D
  2052. LDA Page_Last_Cnt
    ) v7 u; w- ~: n: F" Z
  2053. ORA Page_Cur_Cnt
    ! ~8 b8 g7 F+ A# \& \* F3 F
  2054. BNE Show_Page_Text_Set
    6 ^8 p) R2 r, V3 k5 \: H$ Y7 T
  2055. LDA <Text_Disable_Flag" F, T' c1 ?; v) d
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    & u! U" w* Z* [3 l8 f7 w3 R
  2057. STA <Text_Disable_Flag+ q' _* E8 c. P1 J" T* W) L& M( p' d
  2058. RTS
    2 ~) L& \! l8 ]1 F
  2059. : t% r* V) U6 @
  2060. ;==================================================
    , z0 P# p" ^  C* }$ s
  2061. Last_Item;上一项
    ) b7 i- s2 i7 w7 K( z
  2062. JSR Clear_Last_Track_Name5 @5 |8 D% Z" J  P" [
  2063. JSR Disable_Text_Draw  Y; D( u( B# z, \$ u2 ~
  2064. + x0 B# f" ]' b6 Z
  2065. LDA <Music_Item_Cur
    ' S- @, u; N& T) d: j( Q0 Y
  2066. STA <Music_Item_Last
    6 G! p& X8 z- G0 G- P  c
  2067. ) K  J5 I. z, T7 Y
  2068. JSR Get_Last_Page_Start_Index
    5 V7 q. u1 R: q+ E" q
  2069. 1 c! L: X$ o2 L- ~, ?9 d- B! D% O
  2070. LDA #$00
    8 b- W0 }. E  g
  2071. STA Data_Buf
    1 U! d1 C# w( a8 ]% V

  2072. & W( G& ?) {2 _4 |9 ]
  2073. LDA <Page_Last
    4 k  P4 A" w+ \( B" M* `" |
  2074. CMP <Music_Item_Cur% }8 K+ H& {, V/ r" y+ O, |1 s
  2075. BNE Last_Item_Begin- t% r# U/ H5 }

  2076. % }0 `2 G: b8 ~" m1 [2 {& z
  2077. LDA #$014 V* J* T! m) {: C
  2078. STA Data_Buf
    6 O, X5 q, o8 r( S
  2079. Last_Item_Begin
    / u$ i0 F- k/ P/ v0 ]( B
  2080. LDA <Music_Item_Cur- e6 t4 d% }, C! U5 y0 M8 Y- ^
  2081. BNE Last_Item_Set
    8 L- G, r0 P6 B' Q- f' A
  2082. LDA #ITEM_MAX_INDEX + 1
    " _- \: E  _8 H$ H% Q6 M
  2083. STA <Music_Item_Cur6 O; E# w* Q# J1 x& E1 B
  2084. / l2 c: o! d: T; i
  2085. Last_Item_Set1 P1 t8 t- |# B
  2086. DEC <Music_Item_Cur& M! a8 L9 P7 I/ y
  2087. LDA <Music_Item_Cur& G$ ~+ c4 S, |8 ?! D- @  y
  2088. JSR Reset_Current_Music
    $ d: y! E& }, W' V
  2089. 9 o( s4 p2 Z5 V! n
  2090. Last_Item_Play0 A0 r+ x, n& f3 L# d' P
  2091. LDA Data_Buf' c, J! L4 B: T
  2092. BEQ Last_Item_End
    ; k* w% M& ^" y1 Q% Z9 A1 i' u
  2093. JSR Show_Page_Text  }; M2 G# C' r/ V. o  q
  2094. Last_Item_End6 u8 j0 f$ B% {4 A* n/ w% V
  2095. RTS
    ; G' {/ H% g3 m' x. B; ]8 U* \( p
  2096. 1 h  `+ P, V. ?7 E. p5 j
  2097. ;==================================================  ^5 ~1 O; O9 ]
  2098. Next_Item;下一项
    2 z1 A: O! d& ~) f* x& a
  2099. JSR Clear_Last_Track_Name9 g6 z4 |$ ^- y+ I! m+ M  W, \3 l
  2100. JSR Disable_Text_Draw# |! A& K" ~5 i/ z

  2101. 1 u* D+ d) s% H. u* u3 m
  2102. LDA <Music_Item_Cur
    # q7 d$ b! e: h0 R1 v
  2103. STA <Music_Item_Last- s- s. b) ~* S' k
  2104. ! d' o% P  e2 X
  2105. JSR Get_Last_Page_Start_Index6 C1 h; z  Q; C, c/ w/ R
  2106. % o/ Y3 S, @3 g7 i9 v  l$ W
  2107. LDA #$002 b- `3 v8 T5 F3 J! E$ C
  2108. STA Data_Buf# D6 S$ R/ R' P* X6 |; Y
  2109. # _0 R! i$ m$ B/ g7 H4 V' q
  2110. LDA <Page_Last
    3 |9 N6 L$ Q/ B! j* c+ i) E- p9 u
  2111. CLC1 e6 x& o. b) A
  2112. ADC <Page_Last_Cnt
    6 b! c7 x2 S3 t: t. F4 k2 j
  2113. SEC
    & a% D- b* \+ l" T
  2114. SBC #$01
    + P- h, w6 d) A- H* R
  2115. CMP <Music_Item_Cur, e! J# L' ~( B- H# b8 ^
  2116. BNE Next_Item_Begin' |4 o/ ~% u, q8 m: \2 c  y  a

  2117. . H/ l( u  R0 I2 ^0 v# Q
  2118. LDA #$01( q) y' P6 L. _  ^+ ^) [3 Y
  2119. STA Data_Buf
      R% Y) h9 p" A3 {% N3 ]; j
  2120. Next_Item_Begin
      r- e( K7 l0 d
  2121. LDA <Music_Item_Cur5 T4 y# K/ m5 ~- }( W6 @- X; u
  2122. CMP #ITEM_MAX_INDEX5 |- y) ^7 H2 s; K' c' F
  2123. BCC Next_Item_Set
    5 _8 Y% ^6 v5 B8 K
  2124. LDA #$FF
    & |% ]8 m0 e! p6 h- D: U4 \
  2125. STA <Music_Item_Cur: \) K3 C  g& s
  2126. Next_Item_Set
    ( I) G7 M$ J; V  B* i5 t1 s/ F; P
  2127. INC <Music_Item_Cur
    4 A" e" w. {9 V/ [4 B2 a
  2128. LDA <Music_Item_Cur$ R7 T5 x2 n/ }/ d1 I' z1 x, U
  2129. LDA <Music_Item_Cur
    + A# Q, X' }$ q+ u$ b" p, D7 {. ~
  2130. JSR Reset_Current_Music
    , L/ \& @# L, \
  2131. Next_Item_Play
    $ W3 X3 r3 B1 F0 b: V- W
  2132. LDA Data_Buf
    & r4 Q2 R7 u# P
  2133. BEQ Next_Item_End3 L5 o* K' h  q3 h" ?, d
  2134. JSR Show_Page_Text
    1 W! A: J1 e8 @- y
  2135. Next_Item_End
    ( P" e5 @1 H: T0 e% X
  2136. RTS0 }' [+ H, D( `3 s
  2137.   K6 A, B! k+ _$ [7 K
  2138. ;==================================================
    2 A) T7 z* w8 y9 j) a( C3 H
  2139. Last_Page;上一页
    % y) n4 p) |# p' K
  2140. RTS3 O7 g* f" Z8 ^. {0 o
  2141. , Y. ]' Q* [9 v& ]0 ]
  2142. ;==================================================/ z% R1 P, u4 n' b9 F9 l0 d+ ~1 E
  2143. Next_Page;下一页( d. c- m: s% J! n$ U5 s3 I
  2144. LDA #PAGE_MAX_INDEX& b$ |: Z9 E6 m, |* I) k: m6 }
  2145. CMP #$01
    7 ?( b, N1 d5 c: g) u4 F& ]
  2146. BEQ Next_Page_End! |0 ^" w2 ~9 T% D( t7 @+ j
  2147. ( ?9 R; r8 S" R* I  |
  2148. LDA <Music_Item_Cur' w4 @0 Z: o/ c+ W
  2149. STA <Music_Item_Last
    2 ?! G. u3 n. ?0 J
  2150. ) |3 ^$ v$ y) T$ J
  2151. JSR Get_Last_Page_Start_Index5 R( n  R$ r2 X4 G6 d' S+ l( e( I9 F
  2152. % U/ O  ~) o  M9 D
  2153. LDA <Page_Last_Index
    ! w7 ~& \, L$ _; E. D
  2154. CMP #PAGE_MAX_INDEX
    # U9 q5 V+ Z! d# G2 k$ z
  2155. BCS Next_Page_In_End_Page
    : l" a. z4 M/ W2 t+ f* d

  2156. 8 G/ |* P. e* b
  2157. Next_Page_Not_End_Page;不是在最后一页  e. B7 {, j  e
  2158. LDA <Music_Item_Cur
    ) B$ i6 r+ s* E1 Z3 Q. c
  2159. CLC
    7 D, T+ C$ N" D; ]
  2160. ADC #PAGE_SIZE
    4 t: l  P( Z! m9 g! l& v4 d
  2161. CMP #ITEM_MAX_SIZE+ Y: [# T# e6 S- \7 X# q
  2162. BCC Next_Page_Not_End_Page_Less( N+ R" B* C1 V$ A
  2163. LDA <Music_Item_Cur
      U: t% |0 M& F, M" d5 y; F
  2164. SEC) J% Y7 e' {- W  |3 @7 R% w
  2165. SBC <Page_Last_Index
    - h1 E( c3 p# k# n* ?- J
  2166. CLC
    ! _( G/ F0 e  v7 B
  2167. ADC #PAGE_MAX_INDEX$ v* T; ~. {3 U) R
  2168. CMP #ITEM_MAX_SIZE: T1 \1 R. \) X& |9 {  L$ [
  2169. BCC Next_Page_Not_End_Page_Less
    ! \8 |1 i4 ?/ O: S
  2170. LDA #ITEM_MAX_INDEX/ m% y' K4 F+ b' }
  2171. Next_Page_Not_End_Page_Less
    . y; A, Y' z$ V6 q
  2172. STA <Music_Item_Cur3 r; t( z# M( h6 d+ P
  2173. JMP Next_Page_Reset
    # u0 a# J4 O( Y# ~" _
  2174. 3 ~% x) u: Z! Q' {6 b' ]
  2175. Next_Page_In_End_Page;在最后一页
    2 y% ~, R6 d/ s  t: s  i! m) R6 h
  2176. LDA <Music_Item_Cur& {! w. H" T/ e' e% `+ y3 |
  2177. SEC8 V+ Y2 U7 h. x5 n
  2178. SBC <Page_Last_Index
    3 m  Y3 s$ K! ?  ^1 \8 i
  2179. STA <Music_Item_Cur
      ~+ n# ~. U3 R4 t( F

  2180.   n+ t" b* x2 F, g* C+ P
  2181. Next_Page_Reset; T' b; a/ B" n, {+ ~. u
  2182. LDA <Music_Item_Cur
    1 {  z, J  W8 }5 w! t$ [
  2183. JSR Reset_Current_Music
    $ f  Z3 ~: }8 s8 a% l7 s
  2184. JSR Show_Page_Text) X& X7 c& M4 s2 U6 u$ i  C# l
  2185. Next_Page_End
    4 |4 W* Z6 h" _2 G3 j1 X
  2186. RTS
    4 ~; k! n, I: A8 ]  O

  2187. ! ]0 B* @; c/ X  U
  2188. ;==================================================
    8 g  {  K' a/ `/ e" f
  2189. Disable_Text_Draw;禁用音乐条刷新
    ) f. k% b* S) j  v; M0 @
  2190. LDA <Text_Disable_Flag% D* @1 l% k0 T1 j6 E1 f, \
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    - `, B1 h+ ]0 {5 L
  2192. STA <Text_Disable_Flag
    6 g* @, d. M. E" z5 l9 \% h$ r
  2193. RTS0 P" {# `; ]* E

  2194. 8 }- h* ^: }6 K" |( A/ F' S
  2195. ;==================================================
    ' @+ K+ D5 S  r2 T. q) l
  2196. Clear_Last_Track_Name;清除上次曲目名# ]- f- a- T2 }# S% j
  2197. LDX <Music_Item_Cur
    % h" q# w5 I% p0 m3 z% B6 n
  2198. LDA <Music_Cur,X2 Q4 {! w9 g9 q( ^
  2199. .IF Track_Name_Pos
    5 z" N1 v% M+ _% o  ]
  2200. JSR Clear_Track_Info
    0 |/ O, H7 L: w6 T
  2201. .ENDIF
    8 |- V. j8 X, m. U
  2202. RTS# i  c4 T) w! I& [5 F
  2203. & L0 M1 H: Z( c7 x0 N% O
  2204. ;==================================================
      `& D8 X5 m6 \$ Q5 ~( ]
  2205. Reset_Current_Music;重设当前曲目
    0 D" p& w+ P8 R( f1 Z

  2206. 3 g& ?8 U3 e, P9 I+ \( v: `
  2207. ;写入当前总曲目
    " J# s9 {4 b  k. Y+ }2 ^8 ?
  2208. JSR Set_Sound_Total3 z& W* u* a' b
  2209. LDX <Music_Item_Cur" M0 Q  p4 c. o: S: y, R

  2210. 0 W# E, r7 h) {; y' d/ h
  2211. LDA #$007 e, M+ u) f) I
  2212. STA <Music_Last8 R2 b8 F0 S  @4 v1 e
  2213. * Z' M# [7 x& m4 T$ o: o7 J$ |/ Z5 Q
  2214. JSR Sound_Reset_Proc
    0 N, y3 {. F. Z; k+ X$ T
  2215. JSR Music_Show( Q* f2 n. F8 G& I) C
  2216. RTS7 ?1 G8 K& D3 k9 S( L
  2217. 7 I; k6 F; D' S5 d
  2218. ;==================================================( q2 j# o: R% @5 s: N
  2219. Music_Song_Stop;音乐停止/ o8 I0 V8 c8 Z' v2 w
  2220. LDA #$01
    6 G4 i& s! E$ m5 X, s% Y& }
  2221. STA <Music_Stop_State
    4 R. v; O3 G, Z( I0 l; r/ X# v* _
  2222. JSR Music_Bar_ReSet  T/ p- \1 n" Y2 `
  2223. JSR Time_ReSet7 U" t' G5 g0 r' B5 C+ [
  2224. JSR Sound_Data_Clear
    & k9 q, [! C. _7 n$ q( C7 Q
  2225. JSR Music_State_Show
    + S2 w* y3 M2 h% N& ~. J
  2226. RTS( {& S+ g( ?* }

  2227. ! K) s1 \7 J- }  g8 w
  2228. ;==================================================1 Q1 c' q. Y' u: }
  2229. Music_Song_Play;音乐播放
    & z5 R  ?) b8 W0 t
  2230. LDA #$00
    * T9 w! b. _+ ?4 q3 z  F
  2231. STA <Music_Stop_State1 B" Z, d1 Z* h
  2232. LDX <Music_Item_Cur
    2 R! |+ k; j( ]5 F- u
  2233. LDA <Music_Cur,X
    1 n( J7 F: ^* Y7 `
  2234. JSR Sound_Init_Proc
    5 L% p$ f" v. X( F% h. ^& k
  2235. RTS
    8 \1 b0 w/ k% J, ^) q: k: z
  2236. $ M' u4 k7 H5 C. w0 x
  2237. ;==================================================" n4 Y, ]  U+ T0 Y0 V
  2238. Music_Song_Last_10;上10曲6 [, z7 E4 b: U$ q7 p: c
  2239. JSR Clear_Last_Track_Name
    * {2 p, d: {$ T6 n9 J
  2240. JSR Disable_Text_Draw  N- k- i& o6 z1 S
  2241. LDX <Music_Item_Cur/ l4 I( R: x. E6 Y$ I6 b& a+ ^
  2242. JSR Set_Sound_Total
    ; E9 V- ^- Q7 {9 @0 N; A+ Z
  2243. LDA <Music_Cur,X
    ) x, d  F; G0 B: S) ~
  2244. SEC3 z  ~6 v, l& ^6 h2 x4 a" H! _
  2245. SBC #105 G' x. {& X6 y9 x  c
  2246. BCS Music_Song_Last_10_Set
    0 r% w5 L( V! ~
  2247. LDA #$00
    % A" ^5 N, r5 v4 `+ ^( y% Y8 N5 H
  2248. Music_Song_Last_10_Set: y2 N7 Q; \# Y7 s. a7 \
  2249. STA <Music_Cur,X9 I. w$ l4 U7 Z- a$ t4 B/ z
  2250. JSR Sound_Reset_Proc  B, c! H* v  _  G1 L0 P
  2251. JSR Music_Show8 c" Y/ h( t, N* G: r
  2252. Music_Song_Last_10_End
    ; s7 n# y/ ]; D6 ~$ J
  2253. RTS
    & y, t) Q9 k' G
  2254. 1 i+ P& {: [; [0 u* P* J
  2255. ;==================================================
    - y  i% m+ o/ J8 f
  2256. Music_Song_Next_10;下10曲
    % N( z2 s. X* v3 {+ K) e6 j
  2257. JSR Clear_Last_Track_Name3 G4 n+ y) v3 B( Z0 a
  2258. JSR Disable_Text_Draw
    6 R0 e) A# B3 z0 y
  2259. LDX <Music_Item_Cur
    9 I+ V- T/ ?, j) x$ D
  2260. JSR Set_Sound_Total7 O) K: F$ \, a. Q) [% h
  2261. LDA <Music_Cur,X
    7 m4 P& m& ~% ~
  2262. CLC4 O1 O9 J3 Q( }/ h% O
  2263. ADC #10. ]8 Y: @8 ~4 E( H8 p
  2264. CMP Music_Total
    3 a4 C( _$ ~) y
  2265. BCC Music_Song_Next_10_Set, [, [7 |1 H% w) S
  2266. LDA Music_Total
    . ]5 q. I- v  y) q" @
  2267. Music_Song_Next_10_Set
    ' T- j0 ]& A3 F3 ]& }
  2268. STA <Music_Cur,X
    5 V, V) q; {% A$ |
  2269. JSR Sound_Reset_Proc
    : A4 t8 X" y& B+ s
  2270. JSR Music_Show, s/ j0 g9 a( X1 P  b# T
  2271. Music_Song_Next_10_End) C) @6 ~7 @4 l
  2272. RTS* W6 k! @" U/ e# o
  2273. 2 E; \* D/ O& `  X' a! N) I
  2274. ;==================================================, x5 E( y- s8 t' k
  2275. Music_Song_Last;上一曲; H5 }% ~) }, l, q
  2276. JSR Clear_Last_Track_Name
    , i- P: d0 B* c. F* G" _
  2277. JSR Disable_Text_Draw! t9 ]' \9 F4 n2 {' {9 u" a
  2278. LDX <Music_Item_Cur
    " {" J( S' E3 @) H
  2279. JSR Set_Sound_Total
    " M0 _0 S% y: I, s8 ?# R
  2280. LDA <Music_Cur,X
    9 [* i' X$ A# L! e) Z7 \; u
  2281. BEQ Music_Song_Last_Set
    4 f" D: c- i) e# T# G- ?
  2282. DEC <Music_Cur,X, Y. s2 r7 @4 |+ J
  2283. Music_Song_Last_Set
    2 c+ D( \% [& `- Q% r' G3 J
  2284. JSR Sound_Reset_Proc- ~) g8 e  q$ o' ]" T
  2285. JSR Music_Show
    6 j0 J+ v- T4 {# O$ Z+ G
  2286. Music_Song_Last_End1 \7 a) b# R7 o9 a! ?4 s
  2287. RTS
    ) C5 @+ x6 j8 v  y

  2288. & W8 w# H3 ?' K1 ~. N8 p. ^
  2289. ;==================================================
    / j* k. J! u4 B# M1 ]8 g
  2290. Music_Song_Next;下一曲2 M* m* J/ ^$ E- H+ x% {! @
  2291. JSR Clear_Last_Track_Name6 K( v8 V! z5 l# `3 {! h$ I
  2292. JSR Disable_Text_Draw& [/ L( e2 Q* e. G+ Z
  2293. LDX <Music_Item_Cur. ~" H. _% @: ]* u' K! ^
  2294. JSR Set_Sound_Total& V0 F) G% d  Y0 K
  2295. LDA <Music_Cur,X
    ( L3 m5 B) u' a, l9 Q1 a9 ?: O
  2296. CMP Music_Total: Q$ g  v' f! _& T
  2297. BCS Music_Song_Next_Set
      `. i* h+ o$ c8 i0 o; F
  2298. INC <Music_Cur,X7 w2 v( M2 Z, B2 r. w  @# u
  2299. Music_Song_Next_Set  k/ }8 O" w; X; a+ a0 J
  2300. JSR Sound_Reset_Proc; o8 {6 p6 {+ E! E
  2301. JSR Music_Show7 W/ s7 k* h* v/ ?5 q: G/ h
  2302. Music_Song_Next_End
      i  ~5 p- w3 Q# M* f
  2303. RTS& |" U, Y$ d/ u

  2304. 1 F/ W3 d% l$ ?, W6 V
  2305. ;==================================================$ Z4 C; c. y3 F9 A9 F5 n* d
  2306. Change_Select_Item;改变当前选择项
    5 v) c( S# E* I" f: L6 I; ?, W
  2307. ;--------------------------------------------------
    ' L  t. e5 M. _8 ~- K" K
  2308. Change_Select_Stop_Play_Item;停止/播放
    9 x0 N/ c$ W- {# I% q2 m. f
  2309. LDA <Key_Once# s6 u8 T6 B5 O  Y# m1 W4 P
  2310. CMP #$107 e( A+ b4 P: w& A* y7 F2 M0 j8 a
  2311. BNE Change_Select_Last_Item2 Z+ A: a1 g: p6 M$ p, h
  2312. LDA <Music_Stop_State$ ]0 Q( W  ]4 ^. |+ E
  2313. BNE Change_Select_Play
    7 j  n7 v; l' n% `9 Z9 c( n
  2314. JSR Music_Song_Stop0 m( r0 ?  Q% R# h
  2315. LDA <Music_Stop_State0 Z1 Q9 N/ @1 ]  i: I& A
  2316. RTS+ M7 J$ Z  n' f+ W

  2317. ; o/ k0 ?& \4 K" o* w/ H4 @
  2318. Change_Select_Play
    3 m3 d' g9 k7 e6 d+ }. N
  2319. JSR Music_Song_Play1 s2 g+ C" @2 k2 L& r
  2320. RTS- B7 P1 M" v3 B3 c9 t7 W. t

  2321. $ g# U, P* }) h) s* v) y$ C4 S
  2322. ;--------------------------------------------------
    * G% S; [# I( k5 h7 I; u" o2 s
  2323. Change_Select_Last_Item;上一个专辑
    & V- R% B5 z- F" ?$ a
  2324. LDA <Text_Disable_Flag
    # ?  x6 K+ U5 N5 g+ w
  2325. AND #TEXT_DISABLE_ITEM
    3 _+ I/ H1 v2 L) L5 P
  2326. BNE Change_Select_Item_End( P5 j9 n* F4 c$ h7 B  C' J
  2327. LDA <Key_Once
    # ~" x: }  ]( |" ?$ Q1 ^5 B7 A
  2328. CMP #$08
    ! E, k' |4 g. ~" h
  2329. BNE Change_Select_Next_Item' [2 U$ ~3 g9 Q, z! q
  2330. JSR Last_Item+ A; P( n8 Z/ I3 z4 j, a
  2331. ;--------------------------------------------------
    * e  S  L  u! d5 z
  2332. Change_Select_Next_Item;下一个专辑" P, h6 C* K' O( I8 I
  2333. LDA <Key_Once
    0 u& N! m) w( d# W3 g
  2334. CMP #$04
    0 ~3 s  k% i: K. h
  2335. BNE Change_Select_Last_10
    9 L: k& v$ X4 Q" h+ ]/ k* L: i6 H
  2336. JSR Next_Item
    ' `4 Y, g! f9 k- V6 r* I
  2337. LDA <Music_Item_Cur, i( P+ w  t& {1 F/ X+ d
  2338. JSR Get_Page_Start_Index
    8 K: T8 r# ~6 ~: m
  2339. ;--------------------------------------------------1 c+ C3 z/ o: n! U/ m
  2340. Change_Select_Last_10;前10曲
    ! G( y3 X7 c, f/ p5 I
  2341. LDA <Key_Once
    ! _6 K% r1 |9 ^: b' Y
  2342. CMP #$40) L! E2 e( A% [" d5 p: P
  2343. BNE Change_Select_Next_10
    : h1 l: {3 X: f& C0 M+ X3 {- ~
  2344. JSR Music_Song_Last_10! ~5 }5 y6 m" K9 s
  2345. ;--------------------------------------------------( [5 _! l6 F* A! E+ x
  2346. Change_Select_Next_10;后10曲7 _! k) I4 a* r# J% L+ M
  2347. LDA <Key_Once5 w9 H5 s& u% x! h) E2 s7 N
  2348. CMP #$80
    ; f( k4 Y0 s2 B0 N9 ~9 P9 z
  2349. BNE Change_Select_Last
    ; m( n+ ]8 u- F) |" ]
  2350. JSR Music_Song_Next_102 S  x& J$ m+ }( j
  2351. ;--------------------------------------------------; U4 Z% w9 D5 Z/ N$ |& C9 T
  2352. Change_Select_Last;上一曲1 {, O# K) k5 J/ o. q" k* ^
  2353. LDA <Key_Once
    / B% Y& v; W6 H+ Z/ K/ I5 A% b) b
  2354. CMP #$02/ r# G* Q' _- D/ W! }. r/ ^4 E
  2355. BNE Change_Select_Next
    / J* I" g4 s! m) {' P6 L! {
  2356. JSR Music_Song_Last
    ; O9 J4 d" b5 [9 p5 ~. g
  2357. ;--------------------------------------------------/ F* e* W5 }2 U7 V6 j- w
  2358. Change_Select_Next;下一曲, k% O- d9 N4 M/ B
  2359. LDA <Key_Once
    8 l: S2 J+ {- w' f- T: c
  2360. CMP #$01
    / |! ~( d& i- c. c  Y* h" i9 H
  2361. BNE Change_Page_Next, J& g: b, O% u8 O6 [) d6 D
  2362. JSR Music_Song_Next
    1 e$ E/ W% W* S8 ^) F( z/ N) L
  2363. ;--------------------------------------------------3 |& U9 U* L$ B' \( D" g
  2364. Change_Page_Next;下一页4 V& m6 _2 B3 |" n* n
  2365. LDA <Key_Once+ N3 c: L8 J5 S. n" w2 U- y$ n- z0 o
  2366. CMP #$20
    5 W" n6 }' j4 @( g. d! r
  2367. BNE Change_Select_Item_End
    7 ~+ v& Z7 N" m: z: l
  2368. JSR Next_Page  K3 w! J" @6 ?
  2369. ;--------------------------------------------------8 G2 b/ Q! [0 L& q9 w; o: \( w
  2370. Change_Select_Item_End
    ) k! V8 _1 x0 g, \& U) V/ V
  2371. RTS
      D$ ]: i8 J. p" _& T

  2372. 8 N+ V' N7 k* \6 O
  2373. ;==================================================6 U" h: a- r0 A" [$ ?0 r$ m
  2374. Show_Arrow;显示箭头光标
    4 K# q6 a4 c2 `4 J0 n
  2375. LDA <Music_Item_Cur: T5 ?, [% M  p9 ]* Q  V0 M6 T
  2376. JSR Get_Page_Start_Index
    3 {7 o( Z, ?, Q
  2377. LDA #$00
    # d- B# E) _1 K- Z
  2378. STA PPU_OAM_ADDR; U" d  G) @! `0 b
  2379. LDA <Music_Item_Cur, Q/ l: G2 N0 o0 N  {
  2380. SEC. T& D! m7 b1 W  x; ?- d% {
  2381. SBC <Data_Buf' [/ a" v. [7 f1 R
  2382. ASL A1 a: [0 ?& {5 c. |8 z* w' {2 c
  2383. ASL A
    7 I0 O1 C$ k) ~6 A8 M
  2384. ASL A& d( O7 ~$ `- u6 \9 d$ o3 U  t
  2385. ASL A" _5 l* l9 d' A( \  b$ o8 ~' s3 g
  2386. CLC
    " m% a7 q  s- X0 k
  2387. ADC #ARROW_Y_OFFSET
    ( X5 N+ `' O  X6 O6 ~0 f- ]  ~
  2388. STA OAM_TEMP_ADDR + $00" s! A( m! r4 K2 g
  2389. ;STA PPU_OAM_DATA
    : f" M: \# }9 l# n( z
  2390. LDA #$1F
    . J7 k2 O# K8 {$ T. m- ?
  2391. STA OAM_TEMP_ADDR + $01' r7 U7 Y; W/ v; `' \
  2392. ;STA PPU_OAM_DATA
    4 h4 V" w! F' X0 b- U; w4 F
  2393. LDA #$00
    & ~; B0 }8 N- ?* C5 M
  2394. STA OAM_TEMP_ADDR + $02
    8 z6 D) w; v5 H! e
  2395. ;STA PPU_OAM_DATA2 F( Y- x! b% H' r" ~' _& I/ V4 [
  2396. LDA #ARROW_X_OFFSET
    9 N0 [; s% n  l9 J) c- t  j
  2397. STA OAM_TEMP_ADDR + $03
    * v8 `) l& j* g& c! L: E7 M
  2398. ;STA PPU_OAM_DATA/ l8 v' Z: k2 g7 L7 m) p# W
  2399. RTS
    $ w- D  o% P0 _7 T
  2400. 0 m& ]+ @% }! U2 i, [
  2401. ;--------------------------------------------------
    2 h! o; I/ U. d
  2402. ;命名表数据
    3 t7 b( b5 y3 o
  2403. Palette_Attributes
    / I: j! C7 E# c# A% ]0 Y* P. `! Y4 \; p
  2404. .IF SOUND_BAR_SHOW_ENABLE
    ' J; E( @! \, l3 L
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55* W$ A9 Y/ @+ [3 [( r
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ( y5 f  d" E% U7 F/ V0 [3 N, Z
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75/ p+ i/ b2 C2 e* S6 \" n9 h
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA) Q0 w4 z, d; Z' e' c! \; R
  2409. .ELSE* d4 A% o4 s$ g" K' `+ Q: K) c
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    % U7 U9 C- ]5 @  ]' n* v
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    6 F0 k0 a+ S0 `2 h3 F
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75" }+ t/ H4 i3 V: i
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    - O1 N. ]- u3 j& k& \; D- r
  2414. .ENDIF
    3 R: @. L+ \: Z  b. h

  2415. & g/ z, N' g! o! ~8 [! e! W
  2416. ;--------------------------------------------------: Z/ c  F' [0 |# h) ^8 w3 L% B* p
  2417. ;调色板数据* D5 r; G# \/ {* f2 g" a6 L0 ^5 x
  2418. Palette_Data, z+ P6 [9 O! P
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F) D7 ], N$ [0 H
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F- V, Q* r5 i+ }1 r& j( M. J: H$ E
  2421. * d* \' j0 N8 e6 W
  2422. ;--------------------------------------------------
    % d8 V* p4 c8 R$ t, r! K8 b: y
  2423. Static_Text_Data
    3 X" H) I) s& \- j# o
  2424. .WORD Static_Text_Caption_Data
    ; p" Z/ \2 m+ u, V2 l2 h0 [9 U( U
  2425. .WORD Static_Text_Author_Data
    0 I1 v2 ^- g6 s' `. W
  2426. .WORD Static_Text_Date_Data
    # e0 D: o( g1 e$ Q5 i) x
  2427. Static_Text_Data_End) B) y; w! P2 T

  2428. , V( I" [5 j, C, w' p0 n0 ^7 Q
  2429. ;--------------------------------------------------" k* t# r- B' }9 v/ {1 v4 d
  2430. Static_Text_Pos# j# k5 I6 ?) V9 K* G  @
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    6 o  O6 J, M; {! E- r  K% `
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    ( r! a$ g! |% [% C
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    6 L; E6 k, t, _8 o) Q
  2434. Static_Text_Pos_End
    % {8 E, E9 j: y2 _8 j5 f

  2435. 8 B5 \7 _/ j. G% {2 [! Z
  2436. ;--------------------------------------------------
    + r/ N0 a! B. Y( z! ~+ c" e
  2437. Music_State_Stop  }" T' T0 {& k
  2438. .IF SOUND_BAR_SHOW_ENABLE; g0 L" d, z+ y! ]% F
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    ! z  d( K$ `# @- w! e3 ~
  2440. ELSE
    " q7 _% P: J/ Z6 ?) A$ {
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00& y$ A9 W1 Y. x0 Z  w
  2442. .ENDIF9 _: c1 [9 Q, h7 r+ B( m
  2443. Music_State_Play
    5 c2 n$ [* z% V/ V' A& o5 ?3 ~
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    ; I: [2 {7 Z/ |2 ~

  2445. / l8 r) N1 g) G. x: g
  2446. ;--------------------------------------------------
    ; D  Z7 R8 n% C/ v" {$ ~
  2447. Sound_Bar_Text_Data;声音类型文本, i4 t5 f3 [% H& {" P* v
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    ( h% x8 v+ Z! ]  W$ a
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"0 m7 B3 }4 y9 \: L7 p1 X
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    ) H' L6 `' X  @) g: s3 _! d
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    3 z; C5 g3 x6 m: q# |" Z
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$008 Z. r/ b' V9 N8 h, `7 S

  2453. 1 o8 b6 u# K* q. q( W# m
  2454. .IF Track_Name_Pos
      }, d; G5 M& @- U  o5 B. A! s

  2455. / N0 n" |3 c) W) D2 X8 V8 M9 j9 {
  2456. ;--------------------------------------------------
    . \  {% j7 q  G3 n
  2457. Track_Name_Addr_00;曲目名地址索引9 K* o- F- r6 ~( M
  2458. .WORD Trackr_00_01
    - ?. n$ z. }- p% X1 c  c/ \

  2459. ( A) G% p/ q, T) h, q7 g- B
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    * S# Z/ q5 k, V( I* B3 Q0 J
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"+ C3 \# L+ N5 M5 `0 T3 [% M  Y' n3 |

  2462. 9 V* \- o6 }* k1 Z; s, ~
  2463. ;--------------------------------------------------
    . f% R2 @* ]9 s, L! ]' ]9 ]+ o. r' N
  2464. Track_Name_Addr_01;曲目名地址索引
    ; g, f( ^* e. S: f3 ^# @) ]' Q
  2465. .WORD Trackr_01_013 D. O' ]! j; e1 Q6 g* u3 F& o$ q+ S

  2466. ; j+ c7 @4 G0 t( s" X% C
  2467. ;==================================================5 Z) N2 g, S5 o* c& F/ c
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    4 \& k1 x) A2 y/ }4 [
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    / x. P* B) b" `# S' U4 E9 Z  u
  2470. , y* h: a6 [2 G1 |/ c
  2471. ;==================================================. J+ ^0 E! u1 p
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
      u6 p  E4 ?5 Y" C9 c; B8 ]
  2473. .WORD Track_Name_Addr_00
    $ H& Q- ^3 W5 Q; Q3 L' q
  2474. .WORD Track_Name_Addr_01' ?9 \  Q! R6 X5 |4 V- ^+ i
  2475. .WORD Track_Name_Addr_01
    ; {, s& x: Y6 d

  2476. ! I$ R! u' k% Y
  2477. .ENDIF
    . C3 h7 f' A2 k& r3 W( e

  2478. $ X, G4 [. l2 l2 z& V
  2479. ;--------------------------------------------------
    1 L! `: I: c2 B' E& k" C
  2480. Static_Text_Caption_Data;静态文本数据6 v" m3 `$ J& M& R( D+ _7 \
  2481. .DB 16
    ) [9 {4 e6 N9 u; k; O$ R* [' s
  2482. .DB "FC MUSIC 12 IN 1", ]$ G: T1 c$ M( [; y" x$ G6 ^
  2483. Static_Text_Author_Data& ~: R1 T% E% B  k3 M
  2484. .DB 25# b% W4 g- {6 W6 j+ `
  2485. .DB "EXTRACTED BY FLAMECYCLONE"+ D  [1 T' I4 x) b( o. ?$ s! ^
  2486. Static_Text_Date_Data
    : S1 s1 t; G" y3 S3 ~
  2487. .DB 10
    / R; \* \% A0 J6 F' q% H- P
  2488. .DB "2023.07.23"8 T" {: T" |: G% @. C6 R& U
  2489. $ a4 x8 ^% |, N) T1 J
  2490. ;==================================================
    3 f2 Q' M) E- c" j2 `
  2491. Music_Collection_Name               ;专辑名间接索引7 d# Q$ I% U% w/ J
  2492. .DW Music_Collection_Name_009 ^1 a( O! S! Z( G3 s$ D* {
  2493. .DW Music_Collection_Name_01/ {$ r" `7 y) a: B. W' W
  2494. .DW Music_Collection_Name_02; h. g4 Q) B! w+ [* s; n, Y4 d
  2495. .DW Music_Collection_Name_03* D: A+ g3 }( Q$ l% e* t1 m( W
  2496. .DW Music_Collection_Name_04
    . I. ]8 i. I+ K( v4 L1 @7 n* P
  2497. .DW Music_Collection_Name_05
    2 x  h# L4 }& a6 ?6 I8 x
  2498. .DW Music_Collection_Name_06
    , Y/ Z1 V% X$ N/ `8 O0 |
  2499. .DW Music_Collection_Name_07
      f8 u: V9 p/ @4 M
  2500. .DW Music_Collection_Name_08/ H; S' a- Y) |% E. z
  2501. .DW Music_Collection_Name_09
    , q; \/ Z  X9 g/ r4 |! y
  2502. .DW Music_Collection_Name_10+ h5 Y; E# a! j* N# U
  2503. .DW Music_Collection_Name_11, W( B7 I" N2 x. G
  2504. + C: V" k4 X* E, v7 V, _* e
  2505. ;==================================================7 v/ @  ]" f+ D, z/ H* m: p
  2506. Music_Collection_Name_00            ;专辑名文本数据! c5 `0 s, a& b# G0 M
  2507. .DB 11,"1.RAF WORLD"
    6 T; z  O$ {' v
  2508. Music_Collection_Name_01; H" I; k8 M6 D7 X
  2509. .DB 15,"2.FINAL MISSION"
    4 M7 Q# w6 M# I) L% q" ?2 }5 P  \
  2510. Music_Collection_Name_02
    6 m0 O, Y1 u7 {: ]+ ^8 Q2 O( l
  2511. .DB 06,"3.KAGE"& n8 I7 n, H, V/ ]7 K" ?
  2512. Music_Collection_Name_03# q. l1 @# {# w/ b5 B' {# o- u% P
  2513. .DB 16,"4.DOUBLE DRAGON", I1 i, o* F3 u
  2514. Music_Collection_Name_042 ^+ [& {* |7 \& l
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    ; S8 Z) z* a) J. ?7 s: D
  2516. Music_Collection_Name_05
    % t0 s* [. p8 z, G/ \& h
  2517. .DB 17,"6.DOUBLE DRAGON 3"( H2 A- @4 F+ q/ {6 Q  W
  2518. Music_Collection_Name_06
    + Z8 l1 v2 X9 V1 l8 f
  2519. .DB 09,"7.ROCKMAN"
    # Q4 p/ ~' G; e7 z
  2520. Music_Collection_Name_07
    ( D# K  z: H- f% F. d- F
  2521. .DB 12,"8.ROCKMAN 2"
    , k6 p! a) ~% [  x8 p$ u
  2522. Music_Collection_Name_08
    1 F0 z8 z" F1 ~& L5 u
  2523. .DB 12,"9.ROCKMAN 3"
    * n9 f- z+ j. T. e! N* _$ S4 [
  2524. Music_Collection_Name_09% L& u6 O) B. B! J6 F
  2525. .DB 12,"10.ROCKMAN 4"
    ! O5 [8 K  k3 K& t9 r
  2526. Music_Collection_Name_100 ^" m( z% W6 N
  2527. .DB 12,"11.ROCKMAN 5"
    ; q+ Z7 i) c& {$ }$ e: P& y* p
  2528. Music_Collection_Name_117 o6 j3 A, Q% r9 X: e) d% {+ i! K2 U
  2529. .DB 12,"12.ROCKMAN 6"0 z4 l" T# H' y# n
  2530. 0 ]& ]4 I4 N3 W
  2531. ;==================================================% f: ~) w! k. S7 m1 q, f3 y
  2532. Track_Name_Addr_Flag                ;显示曲目名标记
    % s! j" \) r/ p, I7 _/ h  f
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,08 z3 J9 ^, N0 L
  2534. ; w* n7 W5 X. F3 q" M
  2535. ;==================================================
    & q# f- i# v8 Z0 b6 R9 q
  2536. Item_Pos_Data                         ;光标箭头位置
      g: a) h' `9 d' G8 b
  2537. .WORD ITEM_SHOW_POS
    0 P5 b" `  \3 z1 u/ O' ^3 K
  2538. .WORD ITEM_SHOW_POS + $0040
    8 b5 @! T& {% i' B# o
  2539. .WORD ITEM_SHOW_POS + $0080# O, p0 w4 o1 N( y" ^, j: y
  2540. .WORD ITEM_SHOW_POS + $00C0+ U+ B9 p  o% ~! p
  2541. .WORD ITEM_SHOW_POS + $0100
    & C6 ?1 i4 ~2 Y, W4 w2 z/ T5 P) a
  2542. .WORD ITEM_SHOW_POS + $0140: V# W' I3 m9 x) o
  2543. # c, i$ H7 |- v  M, J  B1 j/ t( n* D% \
  2544. ;==================================================5 L3 ]! U) ?2 A8 h( H
  2545. Sound_Init_Port                 ;音乐初始化入口地址4 |+ G6 R+ L  m2 d6 ^* e
  2546. .DW $BFC81 k" I2 g! B! P2 k0 q- O# q
  2547. .DW $D7F0/ q3 Z& {' T( Y1 U
  2548. .DW $9FC0
    $ N; Q5 S" z+ A& f, M
  2549. .DW $BF70, g$ O  z+ e* C' R1 F9 x; s" I
  2550. .DW $8003, A/ b, U9 v* z; E
  2551. .DW $BF30
    # U/ {1 v  O7 f2 n7 ~
  2552. .DW $9003
    - ~% I2 |: f% w: N5 `
  2553. .DW $8003% c7 c8 u/ s4 O% f
  2554. .DW $80036 p1 F5 g% ?9 X. m7 v" U
  2555. .DW $8003' b' c( }+ J! L0 P: @6 i
  2556. .DW $8003
    4 q( ^; b* S5 r6 L8 L
  2557. .DW $8003! P9 L0 C! j6 w' j" d7 Q% |

  2558. 6 w6 P, b- e4 q1 K6 V; V7 t" z
  2559. ;==================================================; K! {% h9 b( y; s7 B4 o( J
  2560. Sound_Play_Port                   ;音乐播放入口地址
    : ?2 [8 _! f( K: U' O  q8 @6 W) H% G
  2561. .DW $8000
    . ~* N, O: [3 K9 ]. a" U$ c+ P
  2562. .DW $8001# T2 c% [' ^' V# o) I* z
  2563. .DW $A0001 G% [  G0 S6 e- y
  2564. .DW $8003
    ; g+ r; [# W" j4 _5 F
  2565. .DW $80007 c6 U5 S3 G2 t& l2 F- X1 w8 e7 F
  2566. .DW $8003) v! g/ W# |9 J3 S
  2567. .DW $90003 h$ ?7 M% n  j/ P3 I
  2568. .DW $8000) t( \6 x% q1 p) G
  2569. .DW $80005 d5 B5 m' t3 c- A) J( l) P
  2570. .DW $8000
    ) E  H, j- b% S9 c# u2 q' o7 c8 y
  2571. .DW $8000
    ) Y; }& b) b  a& Q: Y* I9 Q- b
  2572. .DW $8000
    & m: q5 ?+ r; m) D2 V+ X' j
  2573. 4 g9 G& ?, j& r$ \. |
  2574. ;==================================================
    ' S9 b; Y9 i! W; R& i
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    8 o" ]8 P- h6 x7 r8 f" w
  2576. .DW $0000
    & l7 }# h2 q: j* Z0 I
  2577. .DW $0000" E+ F0 @% U+ V6 X; e" R4 t
  2578. .DW $0000. H- Z. v% }$ @" _2 W/ ~
  2579. .DW $0000
    : L3 {8 @3 L* `$ f2 L1 o) D* N
  2580. .DW $0000
    7 F! }" s5 @; d# t2 ]' @
  2581. .DW $00004 o& a( E/ }: O- H( T
  2582. .DW $0000/ d+ c8 a, c  a( W% H4 k2 W. K9 U
  2583. .DW $00003 g. Y. ~& Z- O- i- q- [% g
  2584. .DW $00006 t7 e1 W' C5 @; n6 B- ~, ^
  2585. .DW $00000 P) Z2 z# @3 ?# c  z9 N0 O
  2586. .DW $0000* q! j) f2 n  u$ x
  2587. .DW $00007 D- |8 {7 v& ~! [
  2588.   a4 A) @  h6 v
  2589. ;==================================================7 |2 H8 o2 m5 L' {9 W. O
  2590. Sound_Total_Port                          ;曲目总数" S  ?0 H( J7 |; X  R
  2591. .DB 38! o3 @0 c3 W2 c+ n* z* S
  2592. .DB 339 B! x, t$ g% G1 v* c; v0 F) H
  2593. .DB 49$ j( V& @9 o: R5 @
  2594. .DB 41* Q( R4 [& E2 a( Y( m- i' ?
  2595. .DB 83
    + _) H, W7 M- X7 Q3 Z+ e
  2596. .DB 70
    0 l% A# {4 e: h; `" l
  2597. .DB 50
    5 l' A5 G6 P* u' W
  2598. .DB 67
    3 k' G" z+ i" r1 h4 p; d
  2599. .DB 57" T/ e  j9 H& h/ ^: w& ~2 M( V
  2600. .DB 718 I& y1 A% |  @& l/ m) g; ~
  2601. .DB 76" n" M. I& E, l- g* q
  2602. .DB 102  M& A5 O  A! s7 M' M

  2603. - r) g' Z8 P+ A2 k0 f- V3 u7 y# _  x
  2604. ;==================================================/ b$ ?6 q* n* B! L# W* P: {' [
  2605. Sound_Start_Port                      ;起始播放曲目
      @' k8 w" m4 V9 i" R: R& L+ C
  2606. .DB 000 ]  o6 P6 k5 m3 j
  2607. .DB 00
    " s0 E$ z" L1 g% _0 ?! d  J
  2608. .DB 00
    ) [3 {) m/ f/ d. m* @
  2609. .DB 00
    % C; d9 C9 C& _
  2610. .DB 00
    ! @; Z5 _, M7 l- n9 F8 b
  2611. .DB 00
      E( }6 ^) I# c: z6 C6 P" {
  2612. .DB 00. V6 _* p1 K% ~! {# H" ]
  2613. .DB 005 Z' a  b( n- C
  2614. .DB 00
    " N/ b, Y; j" b3 v. O
  2615. .DB 003 M& c" g# K- N7 o
  2616. .DB 00! t& A3 x) u8 T) a
  2617. .DB 003 ?1 Z  i/ j1 Y5 {7 N0 v
  2618. ) M/ e( _5 i+ h# n. T
  2619. ;==================================================6 K+ [' w) F' s! R* O, g( t6 I0 x7 F1 r
  2620. Sound_Bank_8000                      ;专辑bank_8000/ A) C  r$ [. W. Z" }/ P
  2621. .DB $10
    : w8 e- K* p8 ^5 D( q" y; }5 D
  2622. .DB $12
      i2 P& V& N' {( U/ i" H$ h
  2623. .DB $14
    0 C$ F% y7 ^8 d* _
  2624. .DB $16
    6 I% Q! i' L2 ]& ^
  2625. .DB $18
    " O, t9 s6 v8 M! C7 O
  2626. .DB $1A
    ' l8 {% S" u8 h' A& b
  2627. 0 b$ j' E* x' @2 ~) K8 d$ i
  2628. .DB $00" a1 V/ P; f0 c  q" D0 V  K' K
  2629. .DB $02
    2 ~$ t" ?+ V$ Y9 W# q
  2630. .DB $0D
    ( m; w1 }' `) X2 j  W/ ~! Q
  2631. .DB $049 g) k. K/ P& B& R
  2632. .DB $07
    ; m$ o+ m- p9 l* F
  2633. .DB $0A
    3 ?( @" r: S$ ?+ U

  2634. ! \$ e& Q2 L' V% c  f

  2635. ' p" S/ e& C2 D. [
  2636. ;==================================================
    6 S7 @  S4 W# @
  2637. Sound_Bank_A000                      ;专辑bank_A000
    # _* \, D' w/ v
  2638. .DB $118 }# C; i! b0 c1 x, [& I, m- F* M
  2639. .DB $13
    : G* F$ x/ L, L0 L* z$ g
  2640. .DB $15' a% _1 ?! V$ g3 k! S
  2641. .DB $17* h8 M* Y" n& D, N4 |: ]
  2642. .DB $192 q$ |' F4 \  H* |1 w
  2643. .DB $1B" B6 d* f6 J3 d. x+ h. ]$ Y* G
  2644. % p% w  M& c) q" z
  2645. .DB $01
    6 b* |/ ^4 g4 a5 ~& P
  2646. .DB $032 ]  d- |+ t/ f  F( q" m! o* V* o1 v
  2647. .DB $0E! t: \9 z0 t$ s8 K$ i4 Y; k/ W# L
  2648. .DB $05
    4 K  y3 J5 R$ U3 H  Q" p; I; U
  2649. .DB $08- A0 W' i* c( m
  2650. .DB $0B* I+ m" j- m8 ^8 k
  2651. / m/ H8 ]3 R' w. w, q
  2652. . n" b$ W- j$ f2 E: o% {" E/ ]% w+ d
  2653. ;==================================================
    . y6 U% H, {/ ]4 M5 w' r# l& b
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    ( T0 ]* Z5 U) [. p2 x4 p% q
  2655. .ORG RESET_ADDR
      ^# f9 @) {, A( t* Y8 T! B) ?
  2656. 7 X3 d8 f& h, z! S7 @# s% j: t3 e
  2657. ;==================================================
    4 q" S5 y- J  n
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    5 d* Z( g1 A! q9 n$ d% {
  2659. PHA
    + Z  W9 D. N( W  ?) N1 P4 d
  2660. LDA #$06
    ' ^, p- a) \2 @) G
  2661. STA MMC3_BANK_CTRL
    2 L5 Y/ }4 q% u1 Q$ p7 V9 y4 U
  2662. PLA
    ' A1 s6 p) @. I/ r$ c$ C4 [
  2663. STA MMC3_BANK_DATA8 F; c/ J; N9 t/ `
  2664. RTS3 J4 [: }2 ?6 l" i

  2665. : H( Y2 k7 ~; q- F1 [& y
  2666. ;==================================================
    " Z. b) E; n4 G
  2667. Switch_Bank_A000;切换bank到A000-BFFF0 g" [. @9 p5 d7 x
  2668. PHA" Z0 M2 m5 K0 G  U; Z/ _8 e* o* T
  2669. LDA #$07
    " G1 B1 i  i" z! U7 v' q
  2670. STA MMC3_BANK_CTRL; g# @2 N' K6 A5 z$ _
  2671. PLA2 |/ v- [& U/ l$ h
  2672. STA MMC3_BANK_DATA9 f3 ?0 M! q) a% E' b
  2673. RTS
    9 A0 @2 s0 f0 s4 A+ X/ i9 O4 C( [

  2674. / [' y3 K  N: A2 J) g- F/ W
  2675. ;==================================================
    ( K" E" u- K, M2 v
  2676. Switch_Main_Bank;切到主程序bank! S. g: o0 @  V3 t
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    5 n4 E0 q: d( g7 m
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank2 x; F( f" G3 x4 u3 B2 K
  2679. RTS
    ) _) L" `% ]/ G* @1 S
  2680. ; F8 z8 F, V: }+ X
  2681. ;==================================================) [- c% e. p( X6 ^
  2682. Sound_Reset;音乐重设(如果有的话)
    0 U$ U9 t( r9 O
  2683. JSR Switch_Music_Bank  ;切换到音乐bank* D- m- x" L- h6 p% x
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    ; _6 N$ g$ L% I
  2685. JSR Switch_Main_Bank   ;切回主程序
    " D/ D. G) G" \6 M; d1 _
  2686. RTS7 |$ x$ ^* P& H' R' m& c7 t
  2687. ) c* q1 D, t* i& d# U
  2688. ;==================================================" m* e  m3 y+ h1 _' G3 a& Q2 p! N
  2689. Switch_Music_Bank;切换音乐bank
    & o8 a0 N5 i  Q* x' O) O* k5 p+ _
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号) L; @- B8 C' s7 s6 e% o
  2691. LDA <Music_Bank_8000
    ' y  M4 T1 i5 ?
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    " c. P) }$ Q8 m/ R' [  B9 r, J
  2693. LDA <Music_Bank_A000& p( R6 q7 q! [( q( W
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank( p+ {; N% ]# U- l: ~
  2695. RTS- Q6 e. e( e6 w7 w- j
  2696. $ l: y5 L* S: _3 L1 }
  2697. ;==================================================- o3 o9 q1 r  J; t
  2698. Sound_Init;音乐初始化
    + s6 I) i' h3 x% u- L0 w6 X
  2699. PHA
    / I4 A6 T; G  |
  2700. JSR Switch_Music_Bank  ;切换到音乐bank& b& N+ S" p, f8 n
  2701. PLA/ \+ Y5 k- j! l$ y4 j! ^  f+ q
  2702. JSR JSR_Addr_Op        ;执行音乐初始化: r- s% v, u3 c$ F) p  ?
  2703. JSR Switch_Main_Bank   ;切回主程序1 J% M/ B9 W* ]+ ?* P: Y
  2704. RTS
    1 m0 K8 H+ e6 H+ ^
  2705. * L' l3 }+ a  [
  2706. ;==================================================1 }$ W& c; A: i8 X0 C- j
  2707. Sound_Play;音乐播放$ a5 S3 o2 _8 ?4 n
  2708. JSR Switch_Music_Bank  ;切换到音乐bank4 O( T& j* w/ g" t
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    ; h" ?/ Y5 T( T1 t
  2710. JSR Switch_Main_Bank   ;切回主程序2 J$ \" V+ F4 I9 ~: i$ Z
  2711. RTS
      R9 w" ]0 b8 `) i5 d( `" _
  2712. % k8 o" M$ k2 {' F6 r  Z% I
  2713. ;==================================================
      `5 Z3 D0 |; B5 x% T/ w
  2714. MainLoop;死循环8 U" E3 q3 S+ Q$ O6 B* j
  2715. JMP MainLoop) \1 K1 g) L4 F) h

  2716. : w5 e5 Y' R- H" g6 B' A6 w
  2717. IRQ_SUBPROCESS_JMP = 0+ C; \  C- r; [0 r& K
  2718. 1 W1 }7 w5 A: A7 ^# z& F9 a
  2719. .IF IRQ_SUBPROCESS_JMP+ h0 Z/ b3 m4 }' r* m$ ?
  2720. ;==================================================" c: c  m5 F6 V4 `
  2721. IRQ_Process_0;IRQ处理过程0
    5 r8 z* y2 r" O* R, x# w+ p6 t
  2722. , L" v+ N9 T. s% y( n: A  v
  2723. ;15条扫描线后触发IRQ) o& B0 b( v9 ?4 k
  2724. LDA #15) t* M: c( a  ^/ H$ O) v
  2725. STA MMC3_IRQ_LATCH
      E9 H0 [" l: M
  2726. - |% x; K  l) c2 @
  2727. ;设置屏幕滚动
    6 {; J2 p2 ]3 j4 I% ~2 q% w
  2728. LDA <Scroll_H
    + U* y* ~- F) e% e0 d& Q" b4 t4 E2 G; T7 `
  2729. STA PPU_SCROLL
    . {: `- D" J8 W
  2730. STA PPU_SCROLL8 _1 A% e9 K; Z  `3 i; Y- u

  2731. ! e8 g1 o8 C, a+ J
  2732. IRQ_Process_0_End
    ( ~& z2 }9 D* V: p* G0 d1 \2 J
  2733. INC <IRQ_Process_Index2 ~, c" L+ g- G; n7 ]2 N) k
  2734. JMP IrqProgramEnd! G2 \& ~% g' w9 y4 q( ^$ p2 j0 I

  2735. 9 l. u# q1 y7 d! W2 ^; m
  2736. ;==================================================
    9 ~5 P4 `$ w, J* a9 P/ o' r
  2737. IRQ_Process_1;IRQ处理过程16 @; _; [+ Y, }6 G9 S. f# ]% e
  2738. % s5 }1 H( c; p, m1 R# y* k: s
  2739. LDA #555 W* |+ ]/ [7 Z6 \" l% I0 C
  2740. STA MMC3_IRQ_LATCH9 ?; A( s( p! Y9 n; m6 y; n( H
  2741. ; j4 e: r% ]# d6 e- Y3 {
  2742. ;设置屏幕滚动
    6 l+ ~, c) d) @( P* `
  2743. LDA #$00% u) \  a5 R! @* B
  2744. STA PPU_SCROLL
    - G% D+ T0 C+ m! G* q
  2745. STA PPU_SCROLL" }  w- i: p4 v$ m, I

  2746. * n2 ^) ^' {: W  m7 |2 L, o
  2747. INC <IRQ_Process_Index
    ( V! t' W, V. j# @8 m
  2748. JMP IrqProgramEnd
    " `( C$ @7 n0 s% l

  2749. - _: T3 H$ A- V& B9 E! H+ S+ x  O0 R
  2750. ;==================================================6 G. D, h& ^: o- v% A
  2751. IRQ_Process_2;IRQ处理过程22 [# S( |$ ^4 M9 _, l* r: x! V

  2752. - Q' j* T0 y( W5 ?8 y9 m9 \
  2753. LDA #15
    ) A5 W* m1 m, X, x4 |! [
  2754. STA MMC3_IRQ_LATCH
    1 u! q: M. q! [1 M
  2755. 5 \0 Q- v- o) j0 J5 U
  2756. ;设置屏幕滚动
    6 `  t. u+ N8 q) w* @
  2757. LDA #$00
    1 [- V9 N( i6 N
  2758. SEC
    % f1 [4 \9 I( h6 M" Z1 g: s. R
  2759. SBC <Scroll_H2 I/ q0 b' X9 k) e" I5 P( k
  2760. STA PPU_SCROLL
    3 ]' c5 O. A7 E( u8 _
  2761. STA PPU_SCROLL
    ! m2 D" k% J6 O- a* m$ t; u+ e
  2762. ) v; D6 j1 ]4 R; E8 ]1 Q/ P
  2763. INC <IRQ_Process_Index
    2 m, `* R8 w0 E( e* E: h2 t; W2 T
  2764. JMP IrqProgramEnd
    % x: B5 y7 o/ q  C4 N

  2765. . t( C" Q) j) P; N' e' F- L
  2766. ;==================================================" m: y- q) E1 i, r  U. M5 t1 n
  2767. IRQ_Process_3;IRQ处理过程3
    " g9 u, ^2 U  y7 S& Y; Z% R5 c( Z

  2768. # m2 }3 a$ W( ^( R$ h4 s
  2769. ;设置屏幕滚动
    + I6 T4 C. c* X: b; v
  2770. LDA <Scroll_H
    6 f- Y' o6 w; y5 l
  2771. STA PPU_SCROLL  `. {; D, X3 V$ s8 K9 Z
  2772. STA PPU_SCROLL: A& m- U& R0 N: a" t

  2773. % v( L+ m$ y1 k0 T1 j
  2774. ;禁用IRQ# Z6 w2 S. ?8 N3 B! [& v
  2775. STA MMC3_IRQ_DISABLE
    + ^3 W9 H, N7 F6 C7 \+ @! X& o
  2776. JMP IrqProgramEnd- ^7 c  |) t8 b( o6 m0 ?  Z' R$ g6 M

  2777. - E3 d+ ^. @( J, l
  2778. IrqProcessAddr
    " N. `/ m( u" i2 J. [  g
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    : J( W( w' p6 o# G: w2 ~

  2780. , A( N' N) L5 Q2 y, F; ?
  2781. .ENDIF
    % F4 K; u4 H' V+ D' o
  2782. + `) T- t* [1 r: V; _) n
  2783. ;==================================================
    * u1 W0 t6 K0 _
  2784. ;IRQ滚动模式常量2 O2 l7 i; g* T* A3 \; @
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    0 `9 a. \! e) F4 w7 P7 z& j8 L
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动( m4 W8 q3 L- i3 L
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动+ r& V" u5 R1 u  E

  2788. 4 e2 f" I0 X& L, G. @  M+ F' G4 q
  2789. ;IRQ扫描线数据0 c( y, Y1 |$ `# \9 {6 p; c
  2790. IRQ_Scanline_Data
    $ x7 @0 h- o% ?; V$ F
  2791. .DB 8
    * A% V, q3 A$ z; @/ Y, k" h2 |
  2792. .DB 54
    , i" S# g% K1 g
  2793. .DB 81 X+ b8 r3 ?* U. b! L0 ~0 d
  2794. .DB 00 ;关闭IRQ
    4 C. s, E% ?+ O9 U$ g

  2795. 2 M. R6 a# w0 L* }. O1 z& h
  2796. ;IRQ滚动控制模式+ \$ u0 O1 r! L+ Q2 ^  C- }
  2797. IRQ_Scanline_Mode' U$ }* o4 e1 E9 ]7 R
  2798. .DB IRQ_SCROLL_MODE_ZERO
      F3 W% V4 l: T
  2799. .DB IRQ_SCROLL_MODE_ZERO
    ! @9 H, s# g% Z
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    1 H' u8 F" X/ Y# t: p+ R1 o
  2801. .DB IRQ_SCROLL_MODE_LEFT2 J1 J7 H" ?& x+ J' X' ]* w
  2802. " h# p6 T, N# ?- b$ D  H
  2803. ;==================================================+ g: g1 t: r/ c* G$ D9 D
  2804. ;IRQ处理" {& t; y( U  T- q
  2805. IRQ_Process
    9 c( k3 f3 l3 p
  2806. LDX <IRQ_Process_Index
    / ^% M. |9 K, r% Q+ C2 f. ^
  2807. LDA IRQ_Scanline_Data,X/ ?0 v3 }8 F  l4 O' N
  2808. BNE IRQ_Process_Latch
    - t' U& r7 b  |2 m2 p* X: ?1 W
  2809. IRQ_Process_Disable;禁用IRQ
      ?# Z: {: D' t% F' X) V# n
  2810. STA MMC3_IRQ_DISABLE
    : }8 I0 V% w0 X. J) o: j% {$ ?# G
  2811. STA IRQ_Process_Index% q" B& i0 l) i5 Y
  2812. BEQ IRQ_Process_Scroll- {8 f, w/ \0 n; A1 s
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    4 q& X1 \, {3 b& ~: S0 Q% g
  2814. STA MMC3_IRQ_LATCH6 L0 T6 y4 j' M& s
  2815. INC <IRQ_Process_Index4 f2 m$ o. i& S8 u
  2816. IRQ_Process_Scroll;IRQ滚动控制
    9 v! S) y$ J( S8 c
  2817. LDA IRQ_Scanline_Mode,X) \& S. `4 y, X: v! |- U* W
  2818. CMP #IRQ_SCROLL_MODE_LEFT* h$ \6 d8 F! I7 q- C
  2819. BEQ IRQ_Process_Scroll_Left6 y% R4 T( g" S/ t% C7 _' M
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    , x, B& B3 f( U( T! a6 @* \
  2821. BEQ IRQ_Process_Scroll_Right
    # F4 G5 n  s1 {+ v# G% y  w* F
  2822. IRQ_Process_Scroll_Zero;不滚动6 ^9 w# ~/ s9 j+ G5 d
  2823. LDA #$00
    - g+ l/ Y! b, t0 ?
  2824. STA PPU_SCROLL& R( U5 x9 C1 ], ~8 ~6 F, E$ y' \  m  j
  2825. STA PPU_SCROLL
    : J; O  m- _# e/ o3 [6 ~- C1 o
  2826. RTS, Q8 v( ]% r# a0 n# y
  2827. IRQ_Process_Scroll_Left;向左滚动- z, a9 @7 I: V
  2828. LDA <Scroll_H
    5 e  r4 {! l% }+ e  Q/ x
  2829. STA PPU_SCROLL* F6 S' e/ _9 o. f8 I
  2830. STA PPU_SCROLL  |- x: e" u$ V; F& X5 e! ?) D9 N+ z
  2831. RTS
    ( V5 f0 _; Q/ a7 m9 ~
  2832. IRQ_Process_Scroll_Right;向右滚动
    1 U. O4 k' q; t7 A  @
  2833. LDA #$00( X7 i! @8 r* Z
  2834. SEC
    : i* Q" V; E! i$ f& ]
  2835. SBC <Scroll_H
    ) N: \$ p* u% j3 [$ i
  2836. STA PPU_SCROLL
    % ?, G* @* S8 n. f- N
  2837. STA PPU_SCROLL, M" W2 K+ c% L* `7 D# y" U
  2838. RTS
      a- q  U, ^/ v3 ^# b( c4 Q

  2839. + b4 v  P( A; V+ S5 u6 j7 g
  2840. ;==================================================
    9 C, V  Q& W- ^
  2841. NmiProgram;Nmi中断处理
    : k' v0 X3 m6 O! V) W
  2842. PHA
    ( y# T: b/ `) k6 G! O$ K9 G
  2843. TXA
    7 c/ K* q  `; I0 h
  2844. PHA
    + a6 [. o% b5 @0 s6 s; M$ q
  2845. TYA
    5 c  g# E" J7 H# z' T
  2846. PHA' K2 [3 i) |: D2 U4 J2 U7 ]; o
  2847. / \7 S' P# t' V, T  ]+ r" L# k1 q
  2848. ;读取清除Vblank标志, 防止重复进入8 n, i' i; p, n- Y  e* p( P% f
  2849. BIT PPU_STATUS
    : \0 Q8 q" W+ w' d8 @( G

  2850. 1 {; ~/ @7 [: n  O2 C" S
  2851. ;切换主程序bank' X. D& J3 ^: c! B* ?9 g
  2852. JSR Switch_Main_Bank" A9 s/ w! O, K4 p

  2853. ; V& Y% R% I( }4 t1 I% y8 @) W
  2854. ;Nmi处理7 O# l! ], o8 j( l( \+ A8 x! A
  2855. JSR NmiProcess
    & H0 E! r1 f4 c' m1 G0 D
  2856. - r3 y/ p- h/ C7 A" ?6 t! e
  2857. Nmi_Proc_End
    9 C5 F  j0 W( L/ R) _
  2858. PLA
    ' v7 @* K4 U# l' ^: B5 D0 l/ x
  2859. TAY
    4 w! P+ X7 K1 o! K% m
  2860. PLA& X$ L6 |; Z, g! O& D. k6 p6 U
  2861. TAX
    4 P8 F5 l2 {& ^+ @3 \" y
  2862. PLA" h2 ?+ f0 c) a2 o; g5 |
  2863. RTI' }" K2 |: s' q" J+ }& w
  2864. 8 v, S2 D& w4 @, j  [0 |
  2865. ;==================================================
    " `2 ]" p! C/ ?) F- u
  2866. ResetProgram;重置中断处理7 M  A" W: f) ^! M# I) `
  2867. SEI& U  D% R$ G& j- V8 u
  2868. CLD4 ]; D4 ]: ?; s8 T, v. m" _
  2869. LDA #$00
    , t' R5 B$ E7 [7 ]% b( T
  2870. STA PPU_CTRL
    0 M+ ~" M7 y. u8 j: W0 Y, a4 s) t
  2871. STA PPU_MASK7 {- `' o; ^& w
  2872. 9 r& _# f! M3 ?$ n: ]8 K
  2873. ;切换主程序bank
    2 J9 P$ O1 N- Y) D& B
  2874. JSR Switch_Main_Bank
    2 U$ r5 h( |7 d: Y, a

  2875. $ q9 m6 y! g% d( _$ d. ~2 n4 e
  2876. ;程序处理开始: i% A6 n* O5 x5 H: F
  2877. JMP ProgramBegin
      {' H! t8 ^9 ], L6 ^+ u
  2878. : l! M' `' ?* w1 e, R1 H2 z5 o
  2879. ;==================================================
    ( N# `/ w/ H" i! r* J
  2880. IrqProgram;Irq中断处理
    4 ]+ m# N$ P. h0 q' W' O
  2881. PHA
    7 H; {% K. m5 X8 K% _2 f
  2882. TXA. h) |4 c9 V. H/ r8 r5 X
  2883. PHA, b- U( v8 T/ L2 L5 M# f% z) r
  2884. TYA; G( A, X$ ], [
  2885. PHA! t$ |$ ]6 W5 l! a! N. B/ {' W

  2886. 7 m6 X- u: h0 h9 R# a7 \: G* {
  2887. ;关闭IRQ
    0 x! s; d5 N# ^+ P( h! c5 |! r) y
  2888. STA MMC3_IRQ_DISABLE( W' K8 |' ^' J" a0 R' J7 v
  2889. - z# S# ?) c/ U
  2890. ;允许下个IRQ触发
    + W; [6 E$ \/ c# t8 h9 n& t
  2891. STA MMC3_IRQ_ENABLE
    + R) L9 @3 Z4 z

  2892. . o% e6 c) n/ m7 M9 Y
  2893. .IF IRQ_SUBPROCESS_JMP
    ' E7 }1 @$ o: H5 i6 M) a8 b) s

  2894. $ b6 t1 `0 x" f
  2895. ;执行IRQ过程* R( \6 P8 Z! k
  2896. LDA <Data_L5 v' o* b4 N2 r* s9 j8 M2 C2 E
  2897. PHA9 D) s* ~  m; ~# s% [2 w( q) i* l
  2898. LDA <Data_H
    $ w8 A4 L- V' s0 a% p/ \+ m6 d
  2899. PHA' O2 d7 p# q$ `) M
  2900. LDA <IRQ_Process_Index7 P# `, a, x! t
  2901. ASL A
    9 a4 e) O: x& I, {4 Q6 U' x
  2902. TAY- g9 G8 M4 }$ [
  2903. LDA IrqProcessAddr,Y
    # \* ?- ~  C% S. w  w
  2904. STA <Data_L# S9 w: A/ g% N: i7 O
  2905. INY
    # |/ x3 D2 u/ T9 n" L0 {8 G
  2906. LDA IrqProcessAddr,Y
    2 `3 D0 E9 u% w6 R" c5 J
  2907. STA <Data_H
    ) ]1 H5 u9 d( Y# H4 ]
  2908. JMP [Data_L]
      Y  [! _7 o$ _, V% b) Y! W

  2909. / _1 Q% l- g0 k6 Q( e9 W7 Y
  2910. .ELSE5 U& Q8 V: G1 m% S7 s
  2911. : V, Z/ z% ]9 H9 o% k
  2912. JSR IRQ_Process1 |" n& T- g5 `! E' T: p; U

  2913. " f9 b6 Y2 b" Q8 O4 m) h) `
  2914. .ENDIF( s: X) r; @) @/ u# f
  2915. ! }% M( G& d# w( u
  2916. IrqProgramEnd1 R0 _, {; P0 _: Z" x- I( A
  2917. .IF IRQ_SUBPROCESS_JMP7 H( w0 L5 M$ g) z
  2918. PLA8 H8 P6 {/ C+ ]4 ?4 |# K; y) S
  2919. STA <Data_H
    + ?* K$ U! M: E2 q
  2920. PLA1 T+ h$ C) s; A/ L, a. L# s
  2921. STA <Data_L
    ; c* u- c9 K- T
  2922. .ENDIF
    " D  y+ z* S' h$ _; a1 u7 L
  2923. PLA' B6 _: {5 W! e$ n9 V# @0 ?$ c
  2924. TAY
    4 w# H; T+ R& V5 b% _
  2925. PLA% w3 y+ ~1 h' N+ e& {
  2926. TAX
    8 [9 L2 F/ A' r- r% `
  2927. PLA4 g* d; x5 }, ]& f( H7 r7 Q  |
  2928. RTI7 f: j9 N# n# F( l9 p- B
  2929. 8 c- ~6 S" H: g4 t2 e
  2930. .ORG $FFFA
    ( H& z9 n9 z& s' c) W6 ~$ d. H
  2931. .WORD NmiProgram
    ' M5 w% j" ], ?6 W" L
  2932. .WORD ResetProgram
    4 @0 g5 O7 N6 G/ N
  2933. .WORD IrqProgram: ?7 _% [  q8 ?5 X

  2934. - I' Q4 f  f' o
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    & Q) Y8 f4 N/ S! o2 x
  2936. .IF SOUND_BAR_SHOW_ENABLE0 ~2 L. @4 C, R, ], {! |! v1 O' W

  2937. 2 c' R/ Z2 f7 W  U
  2938. .ORG $FE00
    / `. X0 O6 q) z# A' O& J! i
  2939. PHA% }6 P- e$ t" w8 e& [" C' T
  2940. STY $07BA
    7 R/ ^( T0 p- b4 U- R) H+ Z
  2941. LDA #$8D. Z. \  x8 L# K, N
  2942. STA $07BC
    ' I- S7 L: _/ l  j4 L, Z. V
  2943. TYA; Q  |) P8 X1 o
  2944. CLC
    , h5 U+ Y% l2 H# k2 F8 C
  2945. ADC #LOW(Sound_Bar)% C. Z$ }: D) h
  2946. STA $07BD' }! Q* Z$ O3 |, v6 X
  2947. LDA #HIGH(Sound_Bar)
    ; A" K! O$ ^! d  a3 {3 J6 L5 ^% b
  2948. STA $07BE
    ! P$ w  ^9 J% J- X. z  N
  2949. LDA #$60
    4 b) ?  I7 z1 s, r7 o+ b# C
  2950. STA $07BF
    + q2 D$ m3 T& ~- S  J
  2951. PLA
    5 `0 ]+ C6 A1 l" p
  2952. RTS. F4 F0 Y' }' l

  2953. $ B. v; }; s( {) E/ m0 O3 N- x& M
  2954. .ORG $FE20
    # E2 e, k, C( s. n
  2955. STA $07BA
    / e$ l7 [- k( q5 ~
  2956. CLC
    1 l. ^0 E* u2 Q0 i4 g7 h+ ~, q; L- P
  2957. ADC #LOW(Sound_Bar)" T; `' q7 ?' h4 w' L+ x0 N0 m$ ~
  2958. STA $07BD
    7 L' _/ n% L4 ~( I, `
  2959. LDA #$8D
    5 U* y4 Q. ~% r, M4 z/ W7 f  ^- d
  2960. STA $07BC8 T' `- K8 C2 D% X( C
  2961. LDA #HIGH(Sound_Bar)7 d. q! Q0 f! n0 O. O8 E& ]5 D
  2962. STA $07BE  C* l9 J5 ^! L# x, t
  2963. LDA #$60& G/ t+ e! V3 H, P- m" ?" u
  2964. STA $07BF
    ! t* _' g/ K, J; Y8 I0 N' R
  2965. RTS( h/ d$ |: o' H2 v! ?, N2 E& q

  2966. 9 U7 F& m, ^* q! I& V6 t  T
  2967. .ORG $FE40
    . x% L- h  u; [1 l* ]2 O
  2968. PHA* J4 r+ Q5 V$ f0 V4 l5 _
  2969. STY $07F1
    : U" n4 D  A, v  v* B  i' C
  2970. LDA #$8D5 t8 k" r4 e7 W
  2971. STA $07F3, n4 N/ f% `; V: F1 o1 }
  2972. TYA4 H, E$ F6 E3 c
  2973. CLC% n& A& [  t2 @
  2974. ADC #LOW(Sound_Bar)! o. t+ c* D. ^# Y8 O6 H% ^4 C
  2975. STA $07F4
    , R  T  x" m2 ]) R2 ?* Q2 {  b
  2976. LDA #HIGH(Sound_Bar)
    , \8 b: e4 n, ~! O6 r
  2977. STA $07F5
    ; M. N0 w* e; e4 N
  2978. LDA #$60
    + P" r  [! L( {: Y
  2979. STA $07F6
    ( l& u! O" K: J9 w: q: Z6 w
  2980. PLA
    % N* u2 Q3 _8 A& C/ X, U; ^5 x) l
  2981. RTS
    ( W  l. j+ m. A+ \' e. f% X
  2982. 5 c7 `* I: O* [- [, {$ U
  2983. .ORG $FE60# V# q$ C( {3 l4 n4 K% d) M
  2984. STA $07F1
    ; Z  T$ ^) ?2 p4 }: a
  2985. CLC
    5 l4 p1 t+ R2 m, }$ ~2 q+ ~
  2986. ADC #LOW(Sound_Bar)
    * N0 F' g4 z" y/ t5 ]+ h
  2987. STA $07F4- ~! ?' r3 p2 S# \0 G
  2988. LDA #$8D
    2 K: j6 i& Y% W/ ]' a& b
  2989. STA $07F3% Z5 c2 i' \( t1 j6 f$ H( W9 O
  2990. LDA #HIGH(Sound_Bar)
    7 X) G* E' p; r
  2991. STA $07F5; s: L  L: f' l1 M. n! R
  2992. LDA #$60
      [9 r4 u9 t( I# ]" d
  2993. STA $07F6
    $ K0 N. O# K* M" B% {
  2994. RTS7 t0 L- d1 ~8 x4 b- _
  2995. % o& I) Q  P, N
  2996. .ORG $FF40$ `/ Y  ?3 M5 Q$ f& Z/ l. e; r
  2997. STA $4000
    / _, G& \/ q& V6 v7 h6 u5 P8 S3 _4 V
  2998. STA Sound_Bar + $00
    $ D2 \+ u7 }% O: H% {
  2999. RTS& |$ k  Z/ b9 q9 c0 ~% ?1 p
  3000. 7 n1 I! o0 g% R/ h8 D; F
  3001. .ORG $FF48  Q0 u7 f5 i. z! [
  3002. STA $4004# B" ~# X+ n" `. c
  3003. STA Sound_Bar + $04' O( `. Z) u" K  {* K" v3 k1 m0 F3 m0 B* B
  3004. RTS
    ' H# V; D9 X3 f5 ^
  3005. ' _& x% Q% `7 |0 V
  3006. .ORG $FF505 E4 [, J8 N9 q% S3 m# P; K2 r( V
  3007. STA $4008  p/ N; J/ y6 J; P$ ^0 e
  3008. STA Sound_Bar + $08; _5 ^. N' A8 n( z% O6 e0 V
  3009. RTS
    " l* x% q, s3 P$ V: |/ v

  3010. ) @2 ]1 M" u' n+ Y/ n, _# T
  3011. .ORG $FF58
    5 }8 a$ j& |/ H9 f
  3012. STA $400C
    0 h* Y7 h: ]! x$ Q
  3013. STA Sound_Bar + $0C5 T; E. _# R% g% P; z' @
  3014. RTS" B9 F" q8 m4 T1 U4 w4 U0 i( e$ W
  3015. $ r! N% p7 V1 d9 P1 A
  3016. .ORG $FF60
    8 f5 W  f, f/ y  W' h
  3017. STX $4000
    3 G, F7 i* n( S
  3018. STX Sound_Bar + $00
    & K! ]! c; u  w! M: o3 s! [
  3019. RTS7 O5 {+ _$ d2 Z. \# E) V
  3020. / |0 N& y  c# A- C8 N+ p# {
  3021. .ORG $FF68: @$ x$ {( a/ p. y6 a
  3022. STX $4004) }, o& v! m  }1 d1 _0 z! f  P  `
  3023. STX Sound_Bar + $04
    $ }5 ^( j! x9 R" v; `
  3024. RTS/ B2 [7 t, Z8 G- ?7 f

  3025. , c7 c$ c; f5 G/ n3 b0 W
  3026. .ORG $FF705 H5 N- S4 r, y( x# h
  3027. STX $4008
    1 q: K4 M) t& X9 O0 r' @- e- [
  3028. STX Sound_Bar + $08
    ( t$ O7 S0 n! r
  3029. RTS2 z% j1 y0 {; H) F! b: f

  3030. 4 w! d* b8 Z9 W. K# Q% d
  3031. .ORG $FF78
    * g' u- r4 M# `) }2 G3 _
  3032. STX $400C
    # T" S9 a$ Y+ ]
  3033. STX Sound_Bar + $0C+ ?6 [, B/ F7 M
  3034. RTS1 m+ m6 k6 f: z7 r; p! ^3 a& d/ u6 _
  3035. 7 @5 k9 R9 B2 e) j( c  K
  3036. .ORG $FF80; _7 o( G6 L8 n6 y" o" \5 {' }
  3037. STY $4000
    ; J# h0 R3 j) ^, W/ I
  3038. STY Sound_Bar + $00
    ) r; m/ D+ a7 I. T$ b3 ?' a
  3039. RTS/ D' R  L: i" F/ |# P8 o- ~  ^- }

  3040. 3 {4 v1 |  K7 F% w2 J5 U# b
  3041. .ORG $FF88
    ; c" E$ P' k) T+ a/ Q
  3042. STY $4004
    - B/ y% s& z: w% U7 X  I! z  G
  3043. STY Sound_Bar + $04& L* U9 e9 `3 V  \" t5 j3 P$ F
  3044. RTS
    * F8 s2 [, ?5 e
  3045. . x% L. d3 _' w
  3046. .ORG $FF90
    3 r- \& K" C8 M8 z3 l* E5 Y# P2 D
  3047. STY $4008
    4 W' d/ V/ a4 X( \  N5 [. _' D. r* l3 Q
  3048. STY Sound_Bar + $08
    ' q7 u" C' o* E- {
  3049. RTS6 R; X" e) R7 W+ c
  3050. 9 G- u' W9 @( j/ c; T( l" X  S5 s
  3051. .ORG $FF98
    . U' o+ J* v  L- q7 G
  3052. STY $400C& a/ P- F* _# s! C# u' [2 J* k# n; n
  3053. STY Sound_Bar + $0C0 Q0 m6 V1 ]# h: A$ e% o
  3054. RTS# Z; E, |3 H$ o
  3055. 8 K4 k- e, O2 U4 ]7 ^
  3056. .ORG $FFA08 o" H  ]( s, \9 }% ~; O9 a
  3057. STA $4000,X3 `8 P; L" @4 A  j6 U
  3058. STA Sound_Bar + $00,X
    3 z- K2 K8 W4 y, N
  3059. RTS4 V: j  {# [1 r% ]: M6 F  m- f
  3060. # l  n, m$ z6 A& U& V4 x
  3061. .ORG $FFA8
    " i5 \. v0 k: d) s- E/ B: |- x
  3062. STA $4000,Y+ B# y+ m0 }3 r: a7 f
  3063. STA Sound_Bar + $00,Y- V$ Y- r! }2 m- Q$ s- |1 A4 \
  3064. RTS. g7 T- ?1 ^$ r  e$ Q8 b4 K6 A* K# H
  3065. 2 @* f, e9 D% Q9 Z2 z
  3066. .ORG $FFB0& t8 u5 H3 Y; I( N6 h1 E
  3067. STA $4004,X
    4 b4 u0 Y/ ?, y
  3068. STA Sound_Bar + $04,X
    # B2 ]9 \2 h. `
  3069. RTS, t8 L9 u/ w4 U+ m. H; V

  3070. ) M  I( A' I  g3 c; I' i; P
  3071. .ORG $FFB8, z$ C* {! ]) U9 F$ K6 ]" @
  3072. STA $4004,Y
    8 R  l$ p' Q. S% v6 A7 E
  3073. STA Sound_Bar + $04,Y5 V: G3 `2 H3 H
  3074. RTS4 a7 i8 \# n3 C
  3075. : [$ Y' n3 N4 @- G% X
  3076. .ORG $FFC0
    $ [9 B' N% P- l8 v( |
  3077. STA $4008,X: q6 q! P) c: ~! ~$ E/ W
  3078. STA Sound_Bar + $08,X/ b7 u2 e3 H1 F
  3079. RTS
    % u! ^% j1 o0 o+ ~/ Q" P6 f  X

  3080. 6 z, i6 Q& f$ ~
  3081. .ORG $FFC8/ D; L  ]  v8 d' f- ^2 P  Q
  3082. STA $4008,Y
    : i# N7 E/ x+ K8 @' @
  3083. STA Sound_Bar + $08,Y! b/ r0 L3 n- l- A, [+ M
  3084. RTS
    1 l$ \' x' T! a7 e8 g# @
  3085. 2 A* y. M& R) m0 m% K" z
  3086. .ORG $FFD06 y# U8 M: Z% z# Y9 Z0 e
  3087. STA $400C,X
    / V1 M( x1 P) v: |
  3088. STA Sound_Bar + $0C,X
    9 r7 {  n8 v; T* F  V8 D' v" Z  D
  3089. RTS
    2 f( H1 P( I4 S' w6 [

  3090. * k' J" e1 ^1 @( X
  3091. .ORG $FFD8
      Y' A4 K) F& t7 T, O
  3092. STA $400C,Y
    . R" J3 n  P6 }2 l
  3093. STA Sound_Bar + $0C,Y( R+ p6 C+ V+ Q6 z5 _$ G
  3094. RTS& C# a7 T9 T3 q3 Z3 a9 B% y! ]& ?8 u4 x

  3095. ) b' z' Z+ f1 }5 M( o4 U2 N
  3096. .ENDIF* C  s+ r/ g7 ]) C; B7 p& B, Z
复制代码
5 J( q% g: c" r& P/ ^1 P; ]
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 2833 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 22:12 , Processed in 1.125000 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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