EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
' S, v' |# R& n3 Y( h/ U/ u
9 |) Z( N* {# [, M$ N( `[FC][音乐12 IN 1]: H/ J0 p5 X! ]* J
时间: 2023.07.23/ {) s& I9 Q) h1 h4 j. S% z
作者: FlameCyclone+ ^- P. E3 \  @. R# S
  r: R1 G$ a" Q7 v, f: z1 d( |& t
收录音乐内容:( w6 d7 L" w: n* q/ o
1.Raf世界+ ^+ Z# F' o; b1 A* v0 m
2.最终任务' `! ]# ]9 J. S$ ~
3.赤影战士
" P5 s1 Z1 V8 ]7 n4.双截龙: c6 h: V3 C+ p3 a- H
5.双截龙27 X6 T) D8 Y& h# G
6.双截龙3
5 j7 P# y4 w% e( @# P$ K7.洛克人
2 x3 |1 a  \  Q; Z8.洛克人27 ]2 W  r+ Y' J) l
9.洛克人34 C/ ?( D( h  e# S: C
10.洛克人4, L- V! I- M0 z; |, h# }
11.洛克人5
/ q' B- j$ B. P, L7 |' z2 M' i( a12.洛克人6+ I+ X' T+ I; v7 {
1 X0 h1 {5 i. q
操作:
# b" t5 b& c; v& \上键:         上一个专辑
0 p5 A& I' Y# y下键:         下一个专辑
9 x# ]/ ^3 ~6 Y3 p8 f左键:         上一曲) u( T2 X# ^) C5 Z; v' e
右键:         下一曲5 L7 x- L- q! P1 m- y
B/A键:        前10曲/后10曲8 M3 G1 V9 _4 o
选择键:       下一页
2 w! R* T( o9 L1 z+ t开始键:       停止/播放' R5 f6 k! y. I& Z4 r9 A1 A

4 x5 L6 z9 p/ i' ^- H# C) ]http://flamecyclone.ysepan.com/
. {" ?# |+ _  ]8 F  m/ |0 }6 s* _! e  a3 c# W$ J7 X

2 e( e% C# X+ Q4 J9 a; O1 e: j0 J
8 P7 q% ?* W1 E6 s$ k
, O1 _- y4 a& O7 S
  1. ;[FC音乐][播放器模板]% ?6 `& }" i1 M+ _# ?0 G! }+ ?
  2. ;FlameCyclone 20230710
    ) N: f: S* Y/ G2 p, n3 _

  3. 9 l0 ]" {5 F2 k, ?' E. A
  4. ;文件头
    # O' V" t* o6 T* O( ]4 [
  5. ;======================================================================$ c1 e% w; ]/ Z, g3 s( |# t' e( G
  6. .INESPRG 16                                             ;16KB PRG 数量
    + z# H7 W' P3 |! Z( l; E% |
  7. .INESCHR 1                                               ;8KB CHR 数量  }7 l- v: w4 `" D
  8. .INESMAP 4                                                   ;mapper 4
    , h! \+ t, x; x: @  T5 U
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    9 C8 z9 `! a* v' k' h. a  d
  10. & I  {# `; J8 B1 e! f4 T( V
  11. ;==================================================
    ' g2 ?2 S$ a0 }
  12. SOUND_BAR_SHOW_ENABLE       = 1* L- y2 l9 v( ^  T( v
  13. ;==================================================0 g0 a) I$ K3 n' s6 L' c. q! W/ ]7 j
  14. BANK_DATA_MASK              = $1F
    1 e8 P0 [) \7 b, {( _: f
  15. CHR_RAM_ENABLE              = 0
    7 N0 J$ E3 D0 c& e
  16. IRQ_SCANLINE                = 136& R6 m! s8 o. N: b; |  M
  17. ;==================================================9 k7 h9 Y, T% Y4 J1 Z% n, m
  18. SOUND_DATA_BANK_00          = $00
    % @) m# k0 U2 V1 ]7 L
  19. SOUND_DATA_BANK_01          = $010 ~& C& z" B6 A3 N4 Q+ G
  20. SOUND_DATA_BANK_02          = $02
    0 w: ^0 [7 z! k3 T( M9 z
  21. SOUND_DATA_BANK_03          = $03
    8 m) p  l  s5 s$ M
  22. SOUND_DATA_BANK_04          = $04
    4 m: Y& i0 N: \
  23. SOUND_DATA_BANK_05          = $05% ?' r" G+ H7 ?  m* M7 D9 e  E
  24. SOUND_DATA_BANK_06          = $06
    : ]8 W# C+ b+ I$ F
  25. SOUND_DATA_BANK_07          = $07& X0 `- `% u7 x6 n" E0 R+ H+ u
  26. SOUND_DATA_BANK_08          = $089 @. Z  K4 w) T) |9 u
  27. SOUND_DATA_BANK_09          = $09
    3 j4 d- J: L1 C& p
  28. SOUND_DATA_BANK_0A          = $0A
    & c/ ^, d  i- D9 z! N* T
  29. SOUND_DATA_BANK_0B          = $0B
    ; ^6 \3 y/ Z8 p' b
  30. SOUND_DATA_BANK_0C          = $0C$ }4 U6 k2 w$ O4 l  @+ i/ a: i
  31. SOUND_DATA_BANK_0D          = $0D
    % f) t. K! N0 l0 V" O& V& s0 `# G- I
  32. SOUND_DATA_BANK_0E          = $0E
    ( H% L5 n) X# `
  33. SOUND_DATA_BANK_0F          = $0F" Y! C: v7 Q' H# E9 d& ~( r

  34. 7 @+ `$ E& x3 P( y) j+ v
  35. SOUND_DATA_BANK_10          = $10  p& {$ T4 D( G1 t  O. }6 t
  36. SOUND_DATA_BANK_11          = $11
    ; Y. `0 b  d) p, |, G% p; v
  37. SOUND_DATA_BANK_12          = $12
    0 k8 c/ a$ T% B
  38. SOUND_DATA_BANK_13          = $13
    , ~  Y4 D4 S& v- E) E/ _! p: v
  39. SOUND_DATA_BANK_14          = $14
    % t: X5 u- M* }5 n$ @4 N0 X1 \% q! Y
  40. SOUND_DATA_BANK_15          = $15* _3 e: a  t- |8 S0 A
  41. SOUND_DATA_BANK_16          = $16
    7 ^2 C3 Q  N9 E! B; Z
  42. SOUND_DATA_BANK_17          = $17
    / ~1 F& c: I# c0 ^
  43. SOUND_DATA_BANK_18          = $18) V/ s% L' T- L* X9 D$ H' \
  44. SOUND_DATA_BANK_19          = $19
    * {2 [0 c' C0 w3 m' h
  45. SOUND_DATA_BANK_1A          = $1A
    ; S1 S+ p  `  E6 k2 G1 |9 Y9 z% }
  46. SOUND_DATA_BANK_1B          = $1B
    / x3 r# K, U, M3 D
  47. SOUND_DATA_BANK_1C          = $1C
    : s- C3 V2 U& B$ n0 y
  48. SOUND_DATA_BANK_1D          = $1D$ y' U0 o0 d7 ]- Y

  49. 8 t$ f& J/ \* }
  50. SOUND_DATA_BANK_C000        = $1E
    # {7 I2 K; O  U0 J  r0 b
  51. SOUND_DATA_BANK_E000        = $1F
    6 L( I. j( [* E
  52. ;-------------------------------------------------
    ! }2 p' P3 Q' p9 V
  53. CHR_DATA_BANK               = $208 J5 f3 K2 Q& A
  54. CHR_DATA_ADDR               = $A000
    / Q! K6 Q) e# S  K* h6 O) U
  55. ;-------------------------------------------------# F' X' A, b" ]8 H
  56. PROGRAM_BANK                = $005 A  B6 ?1 b/ P$ C3 ^0 ~! A, w
  57. PROGRAM_ADDR                = $8000  ~& V, Q, z6 e. T/ I
  58. ;-------------------------------------------------+ V; J' x" i: P% t/ C2 K
  59. RESET_BANK                  = $1F6 F' S2 c! M0 R, T( V$ @+ T
  60. RESET_ADDR                  = $FD00
    ! I. K. H0 e; B7 A3 ~4 B
  61. 5 _0 n: m* S& W' F
  62. ;==================================================) Z# N+ o- z  ^. Y* I$ I
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    1 s, r7 o6 p$ A, b! S/ k
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引" w  P$ a, a) n
  65. PAGE_SIZE           = 5                     ;每页节目数
    ( Y; o8 v5 x2 P" o/ G
  66. 0 G! S& O1 m+ ~! c2 m
  67. ;==================================================
    7 n2 \& o$ p' ~4 m1 v# X+ x
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    - A! A' y" k2 j0 Y, A  I" d1 Q
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    ( M/ J' c0 R8 i6 S% T
  70. .ELSE
    : ~4 H( g% `9 Y( f( s' P, l2 f
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数. r2 _( X, o+ T2 z! O
  72. .ENDIF
    , w8 L3 \% P! N# V& w1 P- p1 h

  73. 1 P  w& ?0 O. W4 C2 b9 \
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    4 N+ v- R  c: ^' L; D& D
  75. 0 b) |+ V* l- d& h+ d
  76. ;==================================================
      r& @* ^' K/ Q8 L; L* J$ e
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置
    4 S- e" r. e) Y! @: N
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2: L# u* E, s7 s$ ?$ g4 f
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;6 Q; i4 T% c3 W% D: i9 A
  80. ;==================================================0 n3 J& Z, n4 B& t8 w- Z' r5 s
  81. Caption_Text_Pos    = $204D ;标题文本位置
    7 }7 G' T: u1 g/ Y7 o; o
  82. Author_Text_Pos     = $2324 ;作者文本位置0 w# o6 [9 w6 F0 m
  83. Date_Text_Pos       = $236B ;日期文本位置
    ) r) C8 R* S3 X
  84. ;------------------------------+ m% V0 L$ _) D) d. s% L+ X
  85. ;------------------------------5 Z4 a8 L1 N" \. \6 o" I) N' ^7 Q6 C
  86. .IF SOUND_BAR_SHOW_ENABLE
    % e/ a4 @: j2 A& H: c
  87. * G9 n; p) R# L# d6 ^8 @% g
  88. Play_Index_Pos      = $2273 ;当前曲目位置8 M( ~, k) Q8 u) W+ B1 N/ [
  89. Play_Time_Pos       = $22B3 ;播放时间位置. w4 r; y: E) K( V6 S) \8 @
  90. Play_State_Pos      = $22F3 ;播放状态位置" m) D; |2 |9 L

  91. 4 c, v: \5 n1 S+ s7 e4 R1 b
  92. .ELSE2 k- {1 m: j' ?. i: F& v+ @8 p

  93. 5 a, Y0 z" M. c' K4 ?( Z
  94. Play_Index_Pos      = $226C ;当前曲目位置8 J1 ?# s, u6 ?) ?, i( F
  95. Play_Time_Pos       = $22AC ;播放时间位置$ a0 }( i5 V8 F1 v& ?9 N4 w- y0 E
  96. Play_State_Pos      = $22EC ;播放状态位置* i7 D) t( b" K8 x
  97. $ t9 w. W* U9 n1 u1 n) k2 D
  98. .ENDIF% m2 A  I; A5 @
  99. ;------------------------------1 I$ S2 W0 G* u' |
  100. Track_Name_Pos      = $222B ;曲目文本位置& D, ^9 s" q" X/ ?: A1 o7 _! l
  101. ;Track_Name_Pos      = $00 ;曲目文本位置" F5 u/ {! C" K- _  ]$ j3 s
  102. Sound_Track_Pos     = $2265 ;声道文本位置, r  q5 q/ G7 g4 n2 ~
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    8 {0 |# Z: u* ~6 u/ X
  104. ;==================================================
    9 t# O6 @3 ^& S
  105. Scroll_X = $00" z7 g1 }1 i8 z$ n+ w
  106. Scroll_Y = $00  _5 Z* ^# J2 b7 n2 r8 Y8 d
  107. ;==================================================
    ) I& W! J- p* e
  108. Sound_Ram_Addr_1       = $0100" i8 L& d% ]: H
  109. Sound_Ram_Addr_1_Size  = $804 g( i2 A/ K. E7 X- T1 V( A& y
  110. Sound_Ram_Addr_2       = $00906 X8 @& j0 L# i9 B9 ?6 D0 A
  111. Sound_Ram_Addr_2_Size  = $70
    % a- n. s! q5 `1 k, L
  112. Sound_Ram_Addr_3       = $07009 H4 {  n  l, @7 M/ G
  113. Sound_Ram_Addr_3_Size  = $00
    , l2 v9 _! c0 F* i  z
  114. Sound_Ram_Addr_4       = $0400
    7 O; y( _$ l9 \/ h: Y
  115. Sound_Ram_Addr_4_Size  = $00
    . M9 l* N& Z5 l" C) T# i. k) V, n
  116. Sound_Ram_Addr_5       = $0500/ E' D2 c; d7 ]8 q5 C, W7 x" `/ v
  117. Sound_Ram_Addr_5_Size  = $40$ E7 m! T# U& z" o+ v8 G/ }8 Z

  118. 2 S$ v6 H* K1 m8 n* T5 y5 A! K4 B
  119. OAM_TEMP_ADDR   = $0300" C3 D4 Q% b1 Z! m& P; q
  120. ! r+ M) v& W' _: ?8 l- v
  121. ;==================================================! h% |3 @: u. A
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器5 [$ N" x% A% q. V* p
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器+ N; d. I, @  q/ U
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    1 j5 N4 Q0 E' g
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    1 T0 d" }' N% k5 u
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1+ ?4 m2 K1 u; J- X9 p1 ^3 z
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    # S/ ^0 J2 ^" P, i
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    $ O5 F! P: [5 j+ z8 b! W
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    6 k* X0 f: C- B* R. {* `. Y7 Y2 J
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    , m0 B" F6 U+ m2 K" M9 G4 s
  131. APU_STATUS              =   $4015   ;声音通道切换
    , c+ G4 X7 Y5 {& A% O
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    ; o0 i5 A9 d& K- ]0 j3 {: z7 z
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通6 m' E* J3 w9 I6 U
  134. ;==================================================1 w0 b+ l" z3 d% r- f0 Z
  135. MMC3_BANK_CTRL          =   $8000( x/ _5 ]- U- {8 }
  136. MMC3_BANK_DATA          =   $8001( a! q$ x% U3 k# i0 O/ V/ n
  137. MMC3_MIRRORING          =   $A000
    4 V% `( T+ z! V0 O% Y
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    : h, A" o0 u& p% J. q1 E; m3 {$ q
  139. MMC3_IRQ_LATCH          =   $C000; Z0 n) I' H8 V: P% Z
  140. MMC3_IRQ_RELOAD         =   $C001, g* k0 Q4 R& P$ J: s6 E* \
  141. MMC3_IRQ_DISABLE        =   $E000
    ) K) H( L" b3 G
  142. MMC3_IRQ_ENABLE         =   $E001
    0 m0 v* W6 C7 b  \+ L+ r

  143. ; K1 V) ?' s" }
  144. ;==================================================
    . {' |. a7 |$ V7 c( W' j; B9 k
  145. PPU_Addr        = $0200
    ( C, ?5 X. \3 X' W# p
  146. Palette_Addr    = $02C0" ~; O0 O/ m* M& p
  147. Sound_Bar       = PPU_Addr+$E04 w2 _# l, y! Y3 u7 u2 `
  148. ;==================================================
    2 m% b: Q* a* \' s8 T
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D0 i% P6 ~+ L: t: f* o4 ]
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$118 Q# W$ a4 A2 V# M3 u" [
  151. PALETTE_UPDATE_MAX      = $2C
    ( Q3 p  }; e/ _8 Q" }, v: s0 W, k
  152. PALETTE_UPDATE_MIN      = $21
    , m+ h) n' L* a) P5 g
  153. PALETTE_UPDATE_INTERVAL = 60
    ) ~. z" A0 Z3 z7 e. j) N& g) G
  154. ;==================================================5 \! v1 r+ W, D# W8 F6 q" S2 U
  155. Sound_Bar_Cnt       = PPU_Addr+$F07 b' h1 F2 x$ Q* L; d0 r5 ~
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    - `$ F1 l& l# G0 D0 e# \
  157. PPU_Addr_H          = PPU_Cur+$03
    2 H# G: ~+ p' C! w, g5 j
  158. PPU_Addr_L          = PPU_Addr_H+$04" v' l7 X7 {$ a0 G' b% d
  159. Screen_Ctrl         = PPU_Addr_L+$01
    - U; }" |9 V: X/ q- k
  160. Screen_State        = Screen_Ctrl+$01. W$ n) r( E) D( ~( N0 o3 c5 Z
  161. ;==================================================
    3 |4 S0 y6 c! J$ Z
  162. Use_Ram_Begin       = $50
    ; S, G6 m4 }0 L" E
  163. ;==================================================+ B( y; \* |- p9 ]* f
  164. JSR_Addr_Op         = Use_Ram_Begin( C3 U: H) w& O, {2 |% m
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    2 V, \- g9 I0 X* Q
  166. JSR_Addr_H          = JSR_Addr_L + $01
    + I0 \4 H! S' B: h/ e, X
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    # X& k" z( l$ N% l) x% Q7 @
  168. Data_L              = JSR_Addr_Rts + $011 T4 x+ U. S% w9 y, _. M
  169. Data_H              = Data_L + $012 C* k  I7 N. c  Q
  170. Data_Cnt            = Data_H + $01
    ; e/ w4 z& U, a! j, q) i9 U
  171. Data_Buf            = Data_Cnt + $01
    % l0 s1 h) S6 Z# @* h% Z# g
  172. Nmi_Time_Count      = Data_Buf + $01
    " u! j. \8 g7 r% o4 R/ w1 X$ A
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    $ k" Y0 _( }8 c5 ^
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01& m; f+ a4 `: ~7 k
  175. 5 B2 V# `# ?* E, S. Q
  176. ;调色板刷新标志
    % D& t( l4 l4 @. y. Q  E
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    7 m! i5 u! I/ X5 `

  178. 3 X; u8 a# u/ ]8 w5 ?. H$ e$ m: v
  179. ;当前帧文本写入禁用标志9 a/ o0 I" z! }: l
  180. Text_Disable_Flag   = Palette_Update_Flag + $01' U) v/ S8 L) f& P( s
  181. 5 x0 c( E; o6 y0 N) Y/ O
  182. ;==================================================& m  f$ f1 o8 Z* o8 H
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
      u+ I( y5 D, V. h6 J
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条( g% }) c- q2 y5 Q
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间( t) H) P3 A1 t+ F! V) ~
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    6 O! T/ \/ }/ J7 Q
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    . k- Z. `& s6 I1 C
  188. ;==================================================' J+ h1 @0 @. p  G
  189. Key_Keep            = Text_Disable_Flag + 10 B. `: s( b, x
  190. Key_Once            = Key_Keep + $01
    1 ?, G6 Y: p- i6 D2 S: B: h3 E) B
  191. Key_Kemp            = Key_Once + $01
    8 \4 V# r" a# J- n7 F5 w$ Y, V* k* t
  192. Key_Temp            = Key_Kemp + $01$ V2 m9 U9 s% {$ b
  193. Key_Getv            = Key_Temp + $014 A; [+ u4 ^5 y0 I5 c- {2 Q7 [
  194. ;==================================================' \+ U. ~  L! K9 U; r
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集$ L8 f4 a+ J' ~" [- D9 R: ?
  196. Music_Item_Last     = Music_Item_Cur + $018 K- Y8 o' K+ L, |. Z8 T7 l
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    ; Q8 m5 u+ i4 G5 |1 ]% ^# J$ O
  198. Music_Cur           = Music_Total + $01  ;当前曲目/ w$ {; O. @# i4 {7 f7 h
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目# D5 ?1 o2 k! I- K/ z) X. q' M$ z
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态/ J/ ]1 q# P: w( q
  201. ;==================================================
    9 t# u! o1 I! j7 x2 m* i1 W2 ?1 J
  202. HEX_Data            = Music_Stop_State + $01/ f& O; A+ ]4 n2 a% B- o& i+ v
  203. DEC_H               = HEX_Data + $01  i' w9 |# K1 B/ C
  204. DEC_T               = DEC_H + $01
    6 X+ N2 H& v4 [8 q' J6 s
  205. DEC_L               = DEC_T + $019 M. r' H* [' Q& a+ s
  206. ;==================================================/ J( g* [4 c& m: y$ X2 p0 z
  207. Time_S              = DEC_L + $01
    8 N# @& I8 ^& y# [
  208. Time_M              = Time_S + $015 t3 I6 n1 X* A, j4 S' g0 }
  209. Time_H              = Time_M + $02- }& Z$ v7 _, s$ V. q
  210. Time_Cnt            = Time_H + $03
    ! B. D- Y# ]% j3 O! M

  211.   t- L. I3 L, s1 u$ E' @" I
  212. ;==================================================" A/ g& o4 F0 _& O3 X+ v! g% ~4 g
  213. Music_Bank_8000     = Time_Cnt + 1
    - n) m. X) W2 h" r# p6 q7 v
  214. Music_Bank_A000     = Music_Bank_8000 + 1) X& L1 m* j) H$ }9 T
  215. ;==================================================
    & d) ]: q( [: l+ f. I" u
  216. Scroll_H            = Music_Bank_A000 + 1
    ) x! r1 R2 r4 z4 y$ b& Z# [
  217. Scroll_V            = Scroll_H + 1
    % i3 V$ u3 r$ H5 q
  218. IRQ_Process_Index   = Scroll_V + 1% w, ?, q( U; ^  S# H) J% A
  219. ;--------------------------------------------------' y$ |! V% A( }" o
  220. Page_Cur            = IRQ_Process_Index + $019 p" ?8 {0 V# a7 J' f9 Z; }) X
  221. Page_Cur_Index      = Page_Cur + $01
    : H. q6 W# R/ c( c' i, m
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    5 f# x4 p2 L6 G( {" v- U- l
  223. Page_Last           = Page_Cur_Cnt + $01
    , e+ J% q# u2 L
  224. Page_Last_Index     = Page_Last + $012 G  m+ p2 Y0 p  q7 w: B3 \$ G/ \& M& N5 t
  225. Page_Last_Cnt       = Page_Last_Index + $01
    $ r6 V5 I( V- \: l8 l* V
  226. Use_Ram_End         = Page_Last_Cnt + $01
    9 ^0 S! T3 a8 c: T! h5 q+ w
  227. ;======================================================================
    8 C' S& i4 R6 S# |
  228. ;音乐数据块( J) n$ t" w" C

  229. ( S" i  u" s& o1 ~. [
  230. .IF SOUND_BAR_SHOW_ENABLE
    ! Z! R) G# H2 K4 f* q' T/ o

  231. + n7 q1 T% D8 @. r' y
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    # I+ k! X5 _* Z0 j" n: E: d6 p, q! F
  233. .ORG $90006 A6 Y1 [8 H: N* W. J& W0 [
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"4 t5 d! j1 }7 y0 j+ @
  235. : a0 Q+ Z: n' @* t2 V9 t, r
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK  |# z: k. B8 p+ l
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ' }' k! l! L7 f) w- u
  238. 5 v- u4 @1 X7 z4 `$ g
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK. ?; @. L" l. K$ a8 O8 Y
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    / S7 j' ?; `0 W. S4 x7 D1 r

  241. , Z$ J1 ~! x5 v* k4 C# {
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ' O2 E+ e( p" d4 w& B& `2 ?0 }
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    % T! p* ~; x% N7 A

  244. . [! `5 V0 Z6 M! N: ~& s
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    * Q. t/ d9 o2 p2 _+ w6 I8 [
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    , G9 Q) R# l0 x/ r2 L. W5 Z

  247. , C7 [8 b3 p4 E% R/ G; T
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    # z# D! _' x4 h* \
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"' R' X+ L0 T7 ~1 N# Q
  250. 3 H1 z' Z( W# ?/ f
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    3 m$ Y% n8 e/ J$ ^: j2 _
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    7 p! @' m+ e3 f! M+ M
  253. " ~, h+ {/ e, K1 k! G6 F) c
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
      x) E9 w  Y( h  ~
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"  v  w( p6 }3 P
  256. ' E" i6 ?. t7 A/ S1 R5 T1 ^
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    2 Z: t! f2 z  m: m0 t
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"8 q3 t; e8 d" ]; h" M" S
  259. * p; g: r' l+ ^# h5 d: H
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ; {! v8 `' e& s
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"1 u3 P1 r' ?/ U& o" q5 L, [1 @

  262. 1 j2 u9 E% ~$ ~5 m! a  J3 B
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK5 v/ k+ B/ ~& B. A! P4 q. o
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    0 S' l* q; `1 ?' C9 j! X: @
  265. % _" q3 Z) E6 N% u: H
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK) @1 x: ?, J! a8 V) t
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"( U4 c0 s- K" `6 {6 D. c+ i, `* {# O9 c

  268. - l' S8 `, B  m
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK/ j* ]) g9 d9 y8 Y, U& y% W
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    ) d1 h- P( I, Z* O. }

  271. ' N& g* F3 U" w6 e+ L
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    5 _& x$ k, O3 [5 e& s
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    * O/ n; d. a3 ?( U: U% \' w. p

  274. 7 a6 y9 X; V% `& e! t8 d4 O
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK" P3 L$ J7 Z! J' |3 z9 q! Y" Q" {
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    & K( |( X$ _4 q0 B; X
  277. . j" ^6 t1 W: a1 G2 g
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK+ n% I& I4 K0 X5 \* ?
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    $ S; |" }" |5 G& N- v2 S
  280. 9 a) j+ C1 L3 Y' C* B
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK3 O7 ^. L0 D. }# q4 _$ ?8 k5 l* n
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    , n/ h4 d7 a2 Q; P, I! h, ^1 E& K

  283. 4 Q$ f9 g) {: w8 p) u& w9 ^) X
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK3 b" [, q5 w9 {) i" U8 \3 o
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"' |! f5 X6 k2 |3 a8 l7 V9 l3 e
  286. 6 E7 }9 F3 U3 a! @& e
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ! k& C8 X$ C' q% r- V
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    3 O) D6 E! z) U5 j& [

  289. 3 C  ]' q. v; ]1 L: o: F& Q) R6 Q
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    - ]& h; B, h: G& S9 d7 O! ]
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"8 i! K' r+ K5 w, J- o, s
  292. 4 [, W1 z# n# ~/ {- U
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    3 B2 a' P" J7 H4 f9 i# a
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    6 m7 t- I% u3 X( ~; T$ c# z( Z
  295.   I( ^5 x8 }( j9 y/ K* c
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK5 R% F" i, \: C* @: t) F6 \
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    3 U7 z! W8 y6 h- X3 |
  298. 3 r4 G4 H, v& @0 G% _
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK* N8 @5 V/ S' m+ o9 e. F3 R
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    6 R) M$ x" u5 y+ \+ Q- E1 d% J5 }; d
  301. , b( K- k, \7 g$ F3 N) }" |( Y' g/ n
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    ' f7 b+ E6 B/ \' `% Q+ g4 D* W, M
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"7 H  e* {+ g! K7 `& t

  304. 2 _% N6 M) h: c1 u& P. d
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK! {/ P( M& f2 w0 u; V5 n) [
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    % q0 p& ^' O( B8 g7 Q( t# M
  307. . i6 {$ H+ l. n5 h
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    + h9 h# z. T% m8 d* s" O  k& j
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    3 ]7 \, [+ W, X4 x: R/ |$ A  J

  310. ) h& y/ l) D2 z# g" r. k' m
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    . \0 ^# f- d$ q, E/ Y. k
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"/ B& K, c( d% f% }% a. `; p
  313. . U, T1 k! W9 D7 q' y
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK) {: I  w/ c5 M# y/ s3 m
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank", u# t# M- M% V2 N- l3 t
  316. 6 e5 F6 A6 H8 C9 ~9 b' x
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    . R$ e9 @2 @  u8 F3 \9 ~
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    + e; ?( q, K; m  U$ O. _. w
  319. * I3 w4 O! H; \! v- n6 V0 H- z3 ^* C
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    + |% R$ d* ?% v, S
  321. .ORG $D400* z  n7 _$ f! b$ s( U& R
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"* y: q+ \! z" I

  323. 1 t8 S/ t- \2 j. G  L) W/ ?
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    3 l6 F) G# q* A9 v
  325. .ORG $D800  b( |5 n" P1 R: m: K) A) ?
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"/ m1 H$ Q& j9 a  Q& R& o* `! ]- k

  327. ' P& a$ e+ o/ H6 R& o5 z
  328. 9 W% e5 W5 }) z3 I* B/ q
  329. .ELSE
    $ P5 o" _9 a  W1 k' I* t
  330. . [; w! |" N1 M% i7 C
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK, [4 j7 V) O9 ^" M) J0 N
  332. .ORG $90001 ^2 |4 d( o' q7 _
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    " C" {4 g* x6 @

  334. 4 J0 E9 _' w: d! P7 Z- |3 l
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ' @. P* `$ @4 R3 o+ {: q; n
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"! a' o! X  I, Y# @5 c

  337. 5 }6 Y* @4 T9 v$ R/ g. s5 Y& @! _
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    ; C0 a, }/ K6 g' @5 j! E" u8 d
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    0 [4 i$ b3 F: q2 d4 K0 W2 q

  340.   g4 w9 S) N1 e  b
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    " }3 c% V  s/ R
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    8 q8 i3 F' d' ]4 n. J2 f6 r

  343. - D' x9 q9 o0 _7 i2 t0 S7 \
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
      R8 b  O1 v* K2 V
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"" `9 _4 [) K* s$ C

  346. 9 c% ~+ }& X, G1 Q1 A' d7 ]6 n, o
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    $ V) c2 U- I- t- t
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    3 V6 ]. }% e& v: M) b: l
  349. 7 i5 P8 C2 R. ~& C; {" V" H/ M4 M
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK2 u5 Y9 `) U# u& b" J
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"! a1 k1 v4 v  a/ {8 s3 V
  352. . y1 a4 l  _! b$ O; G: g
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK0 {& f& F+ E+ U' ]) z
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    ) E3 A# R* t3 \/ ?! h" u

  355. % `+ u" s' Q5 V1 h" k# ?+ D$ a& h
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK3 J8 O& x4 {# c2 H! p/ F( @( x, e
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    * a! v8 g( M& r" w) [7 v/ k& z5 E
  358. 1 v5 \+ L, L1 ]* O
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK4 z( q9 l) o% Y9 [  |- Y% B$ B& h
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    , m0 B1 W+ F$ }% x

  361. 1 G2 N! a' k6 m. i2 s! }
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    ) X' D& q5 d9 s
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"& c: R( l/ k: v2 f  ]5 Q2 u7 p! d
  364. 4 s: k4 R6 Y0 h7 D* o7 J4 w8 ?
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK. W3 O* M. a* C# X3 ~
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"5 U* X+ A. H- G
  367. 1 C' x2 e9 q' ^
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK& z' k. y+ p4 x: k4 m. ^" j& s
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    & i! T! ?4 i4 ?3 `3 ~* \% r2 \
  370. * p. g, @( l) ~; C% y9 P2 ^
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK6 g# _% [$ k& {7 h+ k: F" X
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    0 P2 y' q) l# {6 O: ?
  373. 5 U. S! J. \5 T+ U% _* I9 [6 u
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK1 S( @. A: d8 A7 v+ {- j" f0 k
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank". b$ V' J9 P) J. @% c
  376. ! g" w  [8 \# O6 [
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK7 [* f) M: Z7 X6 A0 f( R
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    " f% g) ~9 }( i9 ?

  379. 5 I8 @+ r0 \- o. B
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK+ c! Y  a' |. k% u9 R% E1 h
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    0 t: R! r4 |# O4 G6 D2 ?
  382. " H- _3 k* d/ ~& ~
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    0 ?% l( I8 ~3 v) N' X
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"  x( J6 D, s# I, [0 |' _

  385. 5 F, ~" f8 o+ B
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK' w+ m8 ]" y4 Z! W6 S& A3 A
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    # W* A6 G6 N1 w

  388. ) l" I7 _- B* z$ j
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    0 H' @* C$ c: n  O
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    $ I3 U" a4 q% x2 T/ n6 S" k
  391. 0 H' w& Y2 z7 E0 ]7 d+ ]4 \  y, l
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK( A8 f7 U7 r: y
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    2 I4 s& s  }: V

  394. ' m/ Q: j# `' r
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK% d" I- g0 l8 W8 p  @
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"% n: w+ u  `& G% }  l

  397. ) E6 S) [8 s' ?6 z8 J! P# e
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ) o& [1 ~0 M$ j* G! [( l! ~( _. p
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"3 p; o% r: n/ j
  400. 7 R: ]5 g0 e- L: l# l$ @
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    ( i: h9 X( d6 m1 R8 Y! t1 o: r1 W
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    . z, ~1 v2 ^: D- d! ?2 ]
  403. " x$ `" f. Q* o" q3 `
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK& ?% w% _7 e2 A5 ?  }, |( R1 w/ P
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"4 r: o5 P6 Y: |- I/ k: V9 K

  406. 1 u" p0 @* h9 w9 E2 b$ E* Z. W
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK* d; i& \. _( g3 o3 i0 o
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    , N/ A. A( m5 H" u

  409. 0 T. i" ?/ M4 {8 C/ {
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK  `8 b" D4 _* j6 C
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
      D4 q' r# d9 x7 [

  412. 2 d$ Q! z: z; G, {2 P$ v, c
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK% M5 ^& E# V! r% ?) r+ Z  v
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    . I; M# }- S- T/ S8 A+ m% ]
  415. $ ^7 K: Y( w0 x! `" B. I; z7 `: R  e
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    : G" }2 t% `" F5 e/ }( t
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    6 g" T5 }8 F  A9 d7 G  _
  418. & `6 J3 q/ e- t7 T# }' H
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK, a) W  O( k, G5 M
  420. .ORG $D4004 |4 m4 H- C, o! }
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"- ^9 R! x) ?. a1 c
  422. . L3 `$ ]. H2 X7 F/ S$ ?
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ; h% @) x# W5 j6 w' V
  424. .ORG $D800
    4 w9 r$ I9 S( {; ]# f* \- _" @
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"! F8 T5 |# C9 ]* o2 r3 f
  426. ' @! l: z6 u- B. T: @2 a
  427. .ENDIF
    , \' P" D  M5 G  R* j
  428. % c5 f. b. s+ o' D# ~; ?2 i
  429. ;CHR图形数据
    ! y$ x* ]7 i$ C5 S0 Y' m9 `
  430. ;======================================================================
    3 A+ m8 Q9 e( `; }% K( q6 D. h) Z
  431. .BANK CHR_DATA_BANK
    / ^- Z1 T- Y; u# e: s& ?
  432. .INCBIN "chr_bank/chr_data.chr"& E' C5 a+ w& V9 J, q
  433. 4 c5 s1 y9 g2 N
  434. ;======================================================================" M+ `2 u' s  p6 ?( N0 B1 ?
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK: {$ r- ^1 A" ^4 s* B8 x* w! x3 B
  436. .ORG PROGRAM_ADDR  Q( {4 t. y* ?' n4 j
  437. / {9 I& \) c1 I. U0 ]# x2 |& e9 v
  438. ;==================================================: q4 ^7 P, s& b. {3 {# j
  439. NmiProcess
    5 M, O( L/ l: W: Z

  440. 5 B' O5 d: B0 ]; b* Q/ y* q3 @
  441. ;关闭屏幕控制
    3 T: n, \- N' q1 [, F* x
  442. LDA #$00( L! g  |# N/ N# R: U
  443. STA PPU_CTRL
    # y# C- F+ t& }8 E3 a: G7 J

  444. 6 o5 `+ \" v( d+ G5 Q
  445. ;没播放音乐就不需要触发IRQ2 l' \* S/ E8 n4 i3 r
  446. LDA <Music_Stop_State
    ) S8 ~& L0 \( Z' d) b' w' C1 R
  447. BNE NmiNormal
    8 G$ l& J+ X  a. a* Z
  448. 3 s, e6 l9 ^3 p6 _; s
  449. ;重置IRQ索引
    5 N& P) T3 ]8 L8 b
  450. LDA #$00/ _9 C% G5 |: J4 n
  451. STA <IRQ_Process_Index
    " y9 P3 i, G. c- ^2 {! h8 G: w9 n
  452. " W- r% Y8 z6 ~
  453. ;时间秒数为空则跳过4 r0 u3 @, @6 c) m* [6 L; x
  454. LDA <Time_H, ~- [& O, Z$ _; v2 J. V% C
  455. ORA <Time_M+ [& S2 [; X: N! k6 g
  456. ORA <Time_S
    % ~4 T+ v7 e0 u! o8 D; U
  457. BEQ EnableFirstIrq5 M+ `- y$ x! d) P5 f

  458. + A0 u# k: W3 C
  459. INC <Scroll_H
    9 Q7 ]: c5 ?* _* \' h. I9 e
  460.   `; {6 s! D; H. l) s& @) ]
  461. EnableFirstIrq ' R) U+ E3 y/ Y) m+ W; v6 o
  462. ;80条扫描线后触发IRQ; E) _2 q: J. O- X) R8 V
  463. LDA #IRQ_SCANLINE
    1 B( ~: ^0 n3 c7 ~% _
  464. STA MMC3_IRQ_LATCH
    ( w1 |' r/ k7 O8 I
  465. STA MMC3_IRQ_RELOAD) B& `( I  k) N/ A& l9 }) Y
  466. STA MMC3_IRQ_ENABLE
    9 R2 K9 k8 I7 Z
  467. CLI$ r0 B" E. \* n. C
  468. 0 j) g4 G0 P( P% k8 ]
  469. NmiNormal
    0 V; o( }$ e) x0 f/ k- r. O% m
  470. $ |+ K4 e/ f, @
  471. ;处理PPU图像
    ) e" B. o0 i9 _4 k
  472. JSR PPU_Proc7 H- b# F( j% b+ N$ B) b
  473. 5 a2 N, u' u2 e7 _4 M  K
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)* s7 K/ n8 v) A$ b. e2 {" R, F
  475. LDA PPU_STATUS9 `; C4 R9 I, M: I# D5 @
  476. ;LDA #$00
    $ w$ j7 K) o8 |$ s
  477. ;STA PPU_OAM_ADDR6 r8 F4 G( D- [/ v+ j: P
  478. LDA #OAM_TEMP_ADDR / $0100! |+ J9 t6 O' g; Z/ f% q( e
  479. STA OAM_DMA
    , f5 b/ S. k5 P' X9 ^  i
  480. , x  z9 q) y3 l  h1 @. I' v
  481. ;启用NMI中断+ I  o5 \( v8 F4 s5 ]# {+ ?! ~
  482. LDA Screen_Ctrl1 j( D! S# [5 A/ I6 m
  483. STA PPU_CTRL. n1 l6 c0 l) p4 Y
  484. 5 x# v4 }* B; W7 K0 C
  485. LDA <Text_Disable_Flag
    & k& @! G7 u) ~
  486. AND #TEXT_DISABLE_RAM
    $ L# x3 R1 k* S" c+ ~
  487. BNE Nmi_Sound_Play0 V# z5 @% r" q- d  Y

  488. 6 u2 r% {6 d- n$ p- G' I
  489. ;处理手柄输入
    ' b/ M& w2 O! A- I
  490. JSR Key_Proc& z0 Q/ C0 v  Y8 W% _# k: V" k
  491.   v' }$ {& k9 G) `$ l% q
  492. ;切换音乐(手柄触发)( m0 Y: k( m7 w1 u
  493. LDA <Time_Wait_Cnt
    $ p6 h- F! B( d' _
  494. BNE Nmi_Cursor_Arrow
    7 n, N8 h0 ~$ L/ O
  495. JSR Change_Select_Item
    3 ?. [5 g' }/ Z
  496. ( [9 n; G( D0 ?3 F( t  y& d
  497. Nmi_Cursor_Arrow
    " }+ }5 S' k& v" t4 l3 q

  498. * {6 `8 n' H& q# Z4 @8 Q2 B! }9 A
  499. ;处理光标箭头
    ' v( ^, c+ U5 V( }8 n1 C
  500. JSR Show_Arrow" z; {, S4 b6 O7 C% p/ A) l; W

  501. ; m0 C5 U0 U# E. T' b1 N
  502. ;更新调色板& N8 B! c  t% Z: c+ K
  503. JSR Update_Palette_Data
    # i' ?& M0 }: ^+ W

  504. 9 G% z% p! Y  W" o- H7 {/ b8 _/ y+ ]* g
  505. ;显示时间(缓冲)
    ; N% l+ L; I" `5 E
  506. JSR Time_Show& g3 W, {+ S7 j2 v$ x$ B
  507. 8 a7 L) M# F5 R8 ]! q6 j6 Q; [0 ?
  508. ;音乐显示(缓冲)7 t2 U, Y& }  c/ e% f
  509. .IF SOUND_BAR_SHOW_ENABLE
    ( {( u; u' _1 ]" q$ |
  510. JSR Music_Vision
    # s6 W2 w% f% s* y
  511. .ENDIF2 A( ^0 h6 c' I5 q2 E# J6 |

  512. % e% ^2 m4 T2 U$ {4 @$ |9 [
  513. Nmi_Sound_Play
    # s; ]9 j# }- m5 ]& A; v4 h
  514. ;播放声音
    0 G: H7 z& e6 R
  515. LDA <Music_Stop_State; J7 M0 R( W1 r0 [: U& ^
  516. BNE Nmi_Time_Wait_Set( u8 |5 o/ n2 g1 C7 `
  517. JSR Sound_Play_Proc
    2 r' [0 a, |. L8 H. x' D
  518. ) T; R$ c+ Z, x6 `, S0 O
  519. ;播放计时8 y9 e) h# Y, o1 w8 f. f3 @0 O
  520. JSR Time_Count7 d: K  }8 i0 [9 r- C$ o
  521. # g  t7 m3 A" X, F) z6 U  L* l& Y
  522. Nmi_Time_Wait_Set6 P5 Z+ Y8 i/ V
  523. LDA <Time_Wait_Cnt
    / X3 F3 E: r9 o. l3 Z0 v+ ]
  524. BEQ NmiNormalProcessEnd# R9 N9 F2 V, S: Q
  525. DEC <Time_Wait_Cnt7 Z$ g5 J2 Y9 `% v
  526. NmiNormalProcessEnd! F) F2 }% B# `0 F6 G

  527. & }9 N3 \+ _# a% T: C, Y, s
  528. INC <Nmi_Time_Count* ~1 ?8 _- B8 X. `( t* I
  529. 5 h# t+ B; a0 K- y& K
  530. RTS" N$ k7 w4 t$ v
  531. 0 f' ^6 V4 r' q2 a' g
  532. ;==================================================
    2 `% H; j0 v$ Z! E$ t
  533. Init_MMC31 l/ a! `4 }2 e8 A
  534. ;==============================9 V4 a! N( t, G1 p
  535. ;禁用IRQ7 L! G+ p- G" V
  536. STA MMC3_IRQ_DISABLE
    9 F6 u7 ~( w5 J8 j

  537. - s( x* f( T/ L, W
  538. ;水平镜像
    7 d- v: _4 f) L% K- t; p
  539. LDA #$01
    7 o. U, d3 t0 S/ i% b
  540. STA MMC3_MIRRORING6 ^! Y2 ?% L6 i
  541. - z& |5 s: ?' z- \: W4 P  }
  542. ;初始化图形bank
    / J( z  q  m, r; b" z2 [. [6 G
  543. JSR Init_MMC3_Chr_Bank: J, t0 _6 l9 @& E7 P1 r

  544. 4 n0 [/ m: Z2 @8 j* L6 x
  545. RTS
    + d+ [4 }' g' ^. f5 \, P
  546. ;==================================================9 U+ J6 ~& }3 q& {$ z$ E3 G
  547. ProgramBegin;主程序
    % c! K+ H: P0 h
  548. LDA #$00" H3 K, J& f/ i3 j. T+ v' Y9 S; e
  549. STA PPU_CTRL. F/ `& h; W# A) |5 j
  550. LDA #$00
    1 s7 E8 r% {& A- y& ]
  551. STA PPU_STATUS
    3 S8 W. a0 {2 b6 ]9 n
  552. STA PPU_MASK
    # [  O1 A! |+ F1 p# S+ z, J
  553. STA JOY2_FRAME
    8 F$ g+ E  O: q" e/ k6 t
  554. & ]% T% m) E1 y( j: N; f
  555. STA PPU_SCROLL
    : m1 V9 \) s9 p9 P. S, h0 q
  556. STA PPU_SCROLL4 c  P# `: o! u* |
  557. , V5 }: ]" g5 H. J' H+ m
  558. ;==================================================1 v( M& A6 X1 _. h7 S, V/ i
  559. LDX #$FF
    1 j% ]8 i* A2 B8 \
  560. TXS' l6 N* Y9 D. o4 S! I7 A
  561. ; i5 a% d1 e& B* K6 H1 Q# y& K
  562. JSR Init_MMC3
    + \$ ?/ v0 w) m( h7 O+ r( y& I! t
  563. ' T6 h$ B2 ~' A5 J) e# K; s0 m
  564. LDX #$02
    ( r- _  v, F" p3 d& j$ Q4 M3 o3 @2 A
  565. Check1! s/ ~, S1 u4 T8 B& w( O; {
  566. BIT PPU_STATUS
    5 O' u; e2 ]2 }" ]  S4 q
  567. BPL Check17 A8 ^( w: Z1 W! \" o/ \% ^: A
  568. Check2
    / r( F) m1 N' p; ^$ q
  569. BIT PPU_STATUS. V1 X3 f" N7 D" t$ F8 Y5 M
  570. BMI Check2
    - d  g1 n$ |, E' w& w5 U+ Q

  571. ' \3 z, A; Z# a2 N, q6 j
  572. LDA #$0F
    ) S2 k+ A+ L( \# E& f* I
  573. STA APU_STATUS
    % q) x: G4 T& R
  574. LDA #$C0
    $ I, w# o+ Y, }4 D! e2 T- s
  575. STA JOY2_FRAME
    % u" d/ C- p2 u
  576. 7 F: S% p% v6 N7 }1 c
  577. LDA PPU_STATUS3 ~- y9 v0 C3 X% E- d
  578. LDA #$10
    $ B: {2 n9 u/ a
  579. TAX
    0 L8 Q$ ~. A9 v& i
  580. Check3
    6 W9 b/ X3 H8 f7 C  g  H7 ^
  581. STA PPU_ADDRESS
    8 g! ~, v8 Z& e! I6 N& T/ \  {; W
  582. STA PPU_ADDRESS
    , V' c2 x$ ]0 M, q) @/ v) q) t( ]
  583. EOR #$003 \- R2 u$ t6 f4 m( v% `
  584. DEX
    & \1 l  I2 X# Y2 E
  585. BNE Check3
    8 h( c; C/ I* o2 X& W! |
  586. ;==============================$ b) |, Z5 O4 I9 w
  587. ;调色板清空
    + c1 w( K# X6 Q$ q1 j2 R
  588. LDA PPU_STATUS7 R' f. R: m. F5 \0 _( K
  589. LDA #$3F
    : ]9 L4 k  G  u5 v9 n
  590. STA PPU_ADDRESS4 `) d* R6 P/ [& f+ r6 N
  591. LDA #$00% N' f* S2 m1 A( Z$ r$ Y1 t# y' S- z
  592. STA PPU_ADDRESS6 e' v- s0 i) S! N( R+ j+ L
  593. LDA #$0F8 k' u" _  B0 `* @5 @3 W
  594. Palette_Clear
    + t/ F) ~% X2 N; t! [8 s5 a! Y: N
  595. STA PPU_DATA2 @- {! b" j- L
  596. INX
    $ L, }2 r4 Q' W  s
  597. CPX #$206 \2 l! |/ ^! G- o8 E' O
  598. BCC Palette_Clear* R* ~/ F. U3 N3 u
  599. LDA #$00
    ' I7 k; Z5 _  j/ D
  600. STA APU_STATUS, G" {) z5 T$ U0 q) E# E

  601. 6 w9 T% \  r3 W; a
  602. ;==============================
    ' K! H2 R2 A' d& X$ C
  603. ;RAM初始化3 G0 w- v& ]" ]9 i
  604. RAM_Clear_All
    9 k1 q' n" l; N1 q4 m
  605. LDY #$00+ X8 k3 J6 \- Z7 |8 E- F
  606. LDX #$087 D/ c& R1 j! w2 G& h
  607. LDA #$001 h% u) h4 j4 D* X
  608. STA <$00
    - c) w7 I, C5 w: x
  609. STA <$01
    # I0 s. [/ I" F  k
  610. RAM_Clear_All_Start
    % f# Z8 G" U: ^7 x8 R! ~5 u& b
  611. STA [$00],Y
    $ V& G! Z7 I+ H/ J: f+ j
  612. INY7 n% ~2 \& k' n6 R' G) P
  613. BNE RAM_Clear_All_Start6 L8 e7 s) N+ h4 S- x8 n
  614. INC <$01
    2 p: P+ V/ E/ }. \9 X
  615. DEX  Z  \7 S$ D' ]5 W3 j3 w( K( Z
  616. BNE RAM_Clear_All_Start# Z% R+ ^: C# g. `2 E7 Y8 \+ y2 Q; |
  617. - h; Z( ]  c5 m& h! [  e8 Q* H0 m
  618. JSR VramClear
    2 L" j7 ~( {3 ~+ U0 p( l
  619. JSR VramInit
    / H, ]1 T. i/ Z" ]# [+ l2 B! f
  620. JSR OAM_Ram_Init
    - ^  Q# \6 b" I+ r7 V3 ?7 R. l/ Y
  621. JSR Init_Palette_Addr
    4 y2 `* @2 D0 K# n
  622. 0 _; [" [3 F( I
  623. LDA #$FF
    , G) j7 I& \4 e" t8 ]
  624. STA Use_Ram_End7 N. M  W) P+ }& Q4 I5 {  f
  625. ;==============================/ j8 o# c& G: y) `3 G  x2 Q* ^0 v
  626. ;初始化背景调色板
    ) ^0 `$ A, d, R& f0 l$ K. Y
  627. JSR Set_Palette_Color' T* ^7 u% [0 q" Y8 S5 p9 D. S' G
  628. JSR Set_NameTable_Attributes
    : q2 P4 q- Y2 J7 y  W

  629. $ o. V9 b# [3 b3 f
  630. LDA #$006 Z' _+ |; n4 h) D1 H. c. a6 v
  631. STA PPU_OAM_ADDR& K% l' H7 Z9 G/ ?2 E/ }7 M8 V
  632. LDA #OAM_TEMP_ADDR / $01003 H$ H6 c: E8 h9 Z4 S
  633. STA OAM_DMA
    4 ^1 o1 `+ ^- A" B& }2 ]& n* v
  634. 6 y2 ^/ l4 D0 ?8 r- O
  635. JSR Sound_Reset_Proc
    5 ^% z" ~: `9 `8 C4 R+ ?- {1 k
  636. JSR Set_Sound_Total
    & m8 Z3 [8 _- B: f7 ^0 k: u. w
  637. 5 a7 J% S4 O/ e/ J4 N. {
  638. Init_Start_Music
    1 j  F0 O- L$ u9 m# q# R( s; |$ ?! m; [
  639. LDX #$003 O. j. d! u* R& V8 r; G/ s( j
  640. Init_Start_Music_Write9 r9 ~" o6 o2 v( Z
  641. LDA Sound_Start_Port,X
    ! p* ~1 ]) X0 G9 d
  642. STA <Music_Cur,X% J& f. N  l8 Z2 ]  B
  643. INX
    7 N- P& `  h& p- s) }; v- F
  644. CPX #ITEM_MAX_SIZE
    7 k9 _  f5 {% A3 S
  645. BCC Init_Start_Music_Write' e1 N, T0 ?7 k/ b( ^- y- b0 O# v- ^+ P

  646. & ~6 ~1 m& `$ z) P  [
  647. JSR Show_Music_Text
    - G9 U  ~5 p# U( h; q

  648. 9 ^- ?% \1 z( \, N+ I6 X8 P# D7 F. |* s
  649. .IF SOUND_BAR_SHOW_ENABLE
    - O) E$ T2 w/ q; d9 R6 m
  650. JSR Sound_Bar_Text_Set- |* W+ n* g4 j1 x8 F. {
  651. .ENDIF- p) {* L9 t/ w
  652. , n8 _$ u9 Y* J* k% F% o) T
  653. .IF Track_Name_Pos) T9 s6 ]3 ^! w( Y9 c
  654. JSR Show_Track_Info
    2 ^  ~. e0 D0 D, j1 {" z
  655. .ENDIF
    + e7 E9 s3 S+ Y
  656.   B0 Q* r* }, d# L8 U
  657. JSR PPU_Proc5 h! Y% D: j8 `2 X. u8 P
  658. " V/ ?& X- N& {
  659. ;==================================================7 a  @% R: Y/ n0 @
  660. ;音乐bank初始化 - K  c/ ~% ^6 w5 u" [0 K
  661. JSR Init_Sound_Bank5 V9 v$ ?3 D- _: Q- V2 V

  662. 9 f  ]& U7 y$ m0 D2 ?/ @7 ^
  663. JSR Music_Show0 A( N" J. i9 J. i
  664. JSR Time_Show
    0 l; D  O% m* S' @! R5 b- T
  665. JSR Music_State_Show( H  _" F2 K. k0 b* @5 {3 @# P% N
  666. JSR Time_Delay
    % N6 q* E; E( z. m  l
  667. 8 ]1 T+ h# `/ m( Z
  668. LDA #$01
    4 \+ R5 L6 ^) W# A
  669. STA <Music_Stop_State2 W0 ~+ x( ]4 h( }

  670. / O" h: w& R( M
  671. LDA #$88
    5 K1 c! n( `' g9 A, X, Z' n* N
  672. STA Screen_Ctrl
    7 J% @, u4 i' Z  a
  673. STA PPU_CTRL
    . F* c2 W, e0 Y7 x* v8 y' m+ p8 ]& n
  674. % _# c! \2 D7 x! }( O" S9 Z6 ?
  675. JSR Show_Page_Text- |9 z9 h  }& o5 Z7 I* M
  676. / D6 Y5 a0 q2 f$ F) g5 B
  677. LDA #$109 C. V# g3 d: n
  678. STA <Time_Wait_Cnt1 ~2 S' _& q9 }7 Z! v, l

  679.   J  a0 y) J. v/ G9 D
  680. Wait_Time_Over0 N$ t) S/ W2 k4 |8 H( S& {* J
  681. LDA <Time_Wait_Cnt7 W1 n- _4 q+ G4 O& T/ L1 `' X) f
  682. BNE Wait_Time_Over8 r" ?2 i. g$ a. X2 K

  683. / D. J* c% T/ f
  684. JSR Show_Arrow# Q1 d+ g" V! {* Z1 i
  685. LDA #OAM_TEMP_ADDR / $01000 m# C3 o" J4 f" _1 \( W+ q/ ]
  686. STA OAM_DMA) G* K+ {  j8 {. n9 k+ t

  687. $ x2 t2 Z8 a% R4 H' |8 m
  688. LDA #$1E" j2 c9 z. p) }+ `
  689. STA Screen_State
    ' w% f% d8 K' p" T2 R

  690. 0 \1 O- o' @8 q$ z# z( r
  691. LDX <Music_Item_Cur: `% c5 C& l" a8 x5 \( Q2 D
  692. LDA <Music_Cur,X
    5 M  T6 c7 m8 j/ ~
  693. JSR Sound_Init_Proc
    ! e" L, I( a' y( n7 B' \  u) d  W

  694. 6 t9 Z4 v3 ]) C( g* s/ M
  695. CLI& \' U7 A- p9 _
  696. JMP MainLoop
    - J7 P1 T9 b9 F: Q0 S

  697. * f5 D$ O* B7 W% u& X
  698. ;==============================
    8 d( x  Z3 f5 ]2 o4 n) r: d
  699. Time_Delay;延时等待
    * s1 B8 ^2 a$ |! S4 A
  700. LDA PPU_STATUS
    % p7 n, H: W5 ]7 _% Z$ V6 ~( J! Z3 ~# l
  701. BPL Time_Delay
    + I+ ^) g1 l, b4 o: ?5 h. ]3 o
  702. RTS: G8 F5 n* {  r8 _' q9 \

  703. ) |9 \1 C3 T% ~0 }5 T! \0 u
  704. ;==============================
    7 Z& G6 Q, B  }
  705. OAM_Ram_Init;初始化精灵内存
    3 |9 W$ X4 x  g; [
  706. LDX #$00
    # Q9 N/ n. H9 Y: A
  707. OAM_Ram_Init_Write
    + \: ^! v4 C  l1 u6 C
  708. LDA #$F8( h  s. j' f+ o. s9 X/ }
  709. STA OAM_TEMP_ADDR,X
    # b6 a: i) A1 B
  710. INX
    % M4 t" L1 m$ T0 T+ B# U
  711. LDA #$F8
    . [5 Q9 W3 U$ m/ y
  712. STA OAM_TEMP_ADDR,X
    5 U; Y  x9 I2 O& `- C0 |0 P: r! K
  713. INX
    $ g. G, E7 \1 \7 `* M/ d
  714. LDA #$00
    4 C0 e% U. |$ x0 ?
  715. STA OAM_TEMP_ADDR,X( a7 [! C1 u) }& z3 }/ W  z/ P
  716. INX1 d1 x( P, Q4 a" }
  717. LDA #$F8
    5 N$ h; z/ a, ?
  718. STA OAM_TEMP_ADDR,X% d0 ?  X% R" p7 ?
  719. INX
    8 Q. g' i4 w! {% m: \) @
  720. BNE OAM_Ram_Init_Write7 f8 {& r9 f4 C8 z6 C
  721. RTS
    - a8 v/ [' l$ ^0 }- q& ]

  722. ( L& ?" [6 o6 h: e2 U/ n
  723. ;==============================6 Y( T  ]! b+ [/ [/ `
  724. VramClear;初始化图形内存
    6 g# E' ^% h: e; w+ ^3 E
  725. LDA #$20
    4 s% G8 c6 I8 ~/ G8 V
  726. STA PPU_ADDRESS- D/ k; h3 {% i  e
  727. LDA #$00
    * T: n" z  X8 ~& f5 O/ }# D
  728. STA PPU_ADDRESS# _1 v8 l2 r6 j* K/ V8 f
  729. LDA #$00
    + _) P) v! b' J( R; `
  730. LDY #$00
    1 B9 Q  ~$ D' l
  731. LDX #$103 R+ U: ]4 \4 C3 }2 \
  732. VramClearWrite; M, D; g  }& \( d
  733. STA PPU_DATA
      w) h4 H% Z0 a" {; l: r$ E5 E& i
  734. INY
    * ]7 C! L8 F7 O4 c+ w% C2 u6 F/ r# S
  735. BNE VramClearWrite( a0 m: Z2 G; W) }1 d
  736. DEX
    / K4 M+ a- ?% R; b8 j$ J
  737. BNE VramClearWrite
    1 c  s# @# o7 A# y" S; V$ J3 B' C5 A
  738. RTS
    2 q4 u7 E' [" N6 d# R
  739. ! z0 U9 {  p/ f1 y& a9 x) I+ e
  740. ;==================================================
    8 w" i2 w% ~$ [. ?) W( n, ^
  741. ;设置MMC3图像bank( G4 `/ S0 y* n% k$ [
  742. Init_MMC3_Chr_Bank
      v4 e. p7 i3 i
  743. LDX #$05
    ' f1 A$ m( E& w, V
  744. Init_MMC3_Chr_Bank_Write
    / j3 j" Q7 O5 }
  745. STX MMC3_BANK_CTRL
    2 \, n  y4 D* s( N( w4 Y
  746. LDA MMC3_Chr_Bank_Data,X% _# f4 l: ]8 c+ h3 ~) Y
  747. STA MMC3_BANK_DATA
    & P6 m) A3 d7 t2 c3 ]
  748. DEX
    0 k" ?" s. _* Z3 _/ Y: f1 i; @, x+ r
  749. BPL Init_MMC3_Chr_Bank_Write3 m6 u+ I% P- n4 [% L* W
  750. RTS
    1 T" M$ N8 V, n6 G; J1 P: b
  751. ;--------------------------------------------------- T1 ]. S  Q- s% [/ T# p% x
  752. MMC3_Chr_Bank_Data" M# c% F2 e* y. h2 M' a
  753. .DB $00,$02,$04,$05,$06,$07* `, h; K- e( c$ E( i, R/ T! M

  754. * ?( O: x6 ~$ k5 K. e- t
  755. ;==============================
    * V6 z( i' W* C$ X! \/ H
  756. VramInit;初始化图形内存6 l: d6 A" D  S
  757. .IF CHR_RAM_ENABLE0 k# Z# p8 L  g
  758. LDA #CHR_DATA_BANK* t" c! D* ^2 a) {
  759. JSR Switch_Bank_A0005 ~  }* O! m  E! C* T' s' r' j3 y: u
  760. LDA #LOW(CHR_DATA_ADDR)
    1 i& @# \" h' ~) Q- y! n
  761. STA <Data_L9 O! o2 @* k9 s+ P- z/ V  N
  762. LDA #HIGH(CHR_DATA_ADDR)
    4 f" \  c2 E- w8 N
  763. STA <Data_H$ T/ J& F! l; K
  764. LDY #$00
    5 E* q  g0 k3 }3 i; V
  765. LDX #$20
    $ t) p  ~& t, C$ Y+ W3 Q
  766. LDA #$00* D0 L- q& F8 K& q' n
  767. STA PPU_ADDRESS
    5 ]: P+ F* n8 }7 C
  768. STA PPU_ADDRESS
    8 B$ ]9 ~& x$ W+ z8 e
  769. VramInitWrite6 `* o( O7 c% T5 \" y! k
  770. LDA [Data_L],Y8 ^" m. M' t/ ]% a
  771. STA PPU_DATA. Q. D* h+ v1 V( {* P- R! s: b. C3 l
  772. INY+ U2 h" h8 w0 P- [+ P6 x3 i. B7 F
  773. BNE VramInitWrite5 A! h4 S- n' d4 g& P& N+ T0 H! Y
  774. INC <Data_H6 T- T$ Q4 e$ i8 P3 Z
  775. DEX
    0 D' o3 ]. @8 C  t$ m' q$ p0 j$ A
  776. BNE VramInitWrite8 @  b* r: G" A/ ]
  777. .ENDIF) s3 K. |8 P% }6 N
  778. RTS
    1 ~& Y+ P1 m; i

  779. * ?- \( P/ a" ]
  780. ;==============================% B3 Q1 Q" z0 ?
  781. ;音乐切换
    ' y4 V' a  S. {* u7 }9 @6 o
  782. Music_Play_Change
    5 ?/ \) }/ e) f! ?8 J& d2 G
  783. LDA <Key_Once
    " c/ `: h. N6 a
  784. AND #$FF. O1 d; P. A' A2 \/ x0 }
  785. BEQ Music_Play_Change_Check9 o9 ~! U" r9 M
  786. $ T) @1 P. c# E; P, a6 q
  787. ;禁用音乐条刷新  F, t5 S3 x' r
  788. LDA <Text_Disable_Flag. E, Y6 [5 ~1 W# D: q: R0 H
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    & }& d% O# P. B8 z; O
  790. STA <Text_Disable_Flag
    # a3 [6 c6 \; ?& B

  791. 7 l+ u$ i* `3 d8 T- s/ z$ L% ^
  792. Music_Play_Change_Check
    5 F& c8 q. z* w' \
  793. Music_arrow
    / J0 C. u, ^* N% T6 F1 ~6 n% {
  794. LDA <Key_Once$ d. d' A# y( Z0 A( l  ~6 h4 {
  795. AND #$0F
    & j; X) \2 X# Y; P. O
  796. BEQ Music_Play_Change_End
    ) A* h" ~' R; C& X4 Y6 d, {
  797. JSR Music_Track_Change. c0 N7 O2 W- @3 {7 w
  798. JSR Sound_Reset_Proc
    / D# o/ U1 P' p1 G( F
  799. JSR Music_Show
    5 e! T5 L& y2 V  P, t
  800. Music_Play_Change_End
    & @( G2 X! U$ ~; ?$ F- j
  801. RTS
      L& A. G" x, s' Z8 [% c* o
  802. : ^: B, V  n& v  s
  803. ;==============================# @5 t% ?) @' C+ O; t* A/ M$ s
  804. ;音乐曲目切换# K# R  O' t+ z% S* C
  805. Music_Track_Change
    5 `. M9 @5 ~1 {. ?9 Z0 _- v
  806. LDX <Music_Item_Cur( A; Q/ `, c4 e9 c  `
  807. LDA <Music_Cur,X& e* V9 j$ F) I( _2 {
  808. STA <Music_Last
    + K! U5 V& K1 h7 C2 y. g! l3 s2 G' {: F
  809. Music_Decrease
    " h# A; M4 w  I, M* l' \
  810. LDA <Key_Once
    : s: {9 _3 E9 u' r5 ?" d
  811. AND #$42% Y1 i% }% {, M3 u- @% ~) L7 k  ]
  812. BEQ Music_Increase
    * F" N( B1 f6 ?8 R1 b$ E
  813. LDA <Music_Cur,X
    ) D. C' v( d# o7 |* N4 b
  814. BEQ Music_Increase
    - \, ~: t" n- y: n* G9 \
  815. DEC <Music_Cur,X. p' h# ]2 k2 B5 A! u4 b  B, L4 G
  816. Music_Increase! ]3 l) n; ]# ~+ s
  817. LDA <Key_Once
    " ^7 Z  v( Q+ g9 W
  818. AND #$81
    2 R! f; z, S$ ~# u% c1 J
  819. BEQ Music_Decrease_104 ?: O  k' M  A, X0 B. H
  820. JSR Set_Sound_Total
    ! i/ _8 x  ]+ O
  821. LDA <Music_Cur,X& k+ X9 I# J3 A. B  a* A
  822. CMP Music_Total/ q; [- d5 n5 d  m: q% @
  823. BCS * + 46 j, [/ z' d+ c! h, K) M
  824. INC <Music_Cur,X0 Z& ~7 U6 @; v6 m1 e) f! z
  825. Music_Decrease_10
    + g" @' k) X$ W! y- d6 y$ w
  826. LDA <Key_Once
    . U/ S! X3 D6 T' L5 C
  827. CMP #$04' }" g5 \4 P/ ~
  828. BNE Music_Increase_10
    ' a8 u" Y% t) V# }! ~% C+ }0 N
  829. LDA <Music_Cur,X7 q: f! ~: C$ \2 O& ]9 p
  830. CMP #10
    , v3 I0 V/ L& R  S- @; Y/ b, R. t5 T! n
  831. BCC Music_Start_Song_Min
    * ]- p: Q6 b. x5 n) w/ a7 B0 M7 k/ |
  832. LDA <Music_Cur,X
    2 a* G  }% w0 k7 T' A
  833. SEC5 t+ m* O) Z6 A! M9 U  O/ s8 N
  834. SBC #107 `. H5 B" @" j
  835. STA <Music_Cur,X
    5 e( I& h6 ]6 Q
  836. LDA #$00
    / b! k0 M% ]6 J, O% s* p
  837. BEQ Music_Increase_10* W: s" |3 Z# z
  838. Music_Start_Song_Min
    + p+ U* Q$ J7 y( ^7 V6 Z; n
  839. LDA #$00; `% M) X0 f# H4 T
  840. STA <Music_Cur,X& [; i, ^8 |/ d2 i6 s% T" _
  841. Music_Increase_106 f8 i, u/ _6 O. [
  842. LDA <Key_Once
    4 z0 Z9 y2 M& G
  843. CMP #$082 E0 |! a% [) _6 t# x" O$ M' D, }
  844. BNE Music_Track_Change_End$ A2 C* J; Z- H. ?2 ?1 w) o6 }4 i8 @
  845. LDA <Music_Cur,X/ Y- ?4 y' Q  _; j, v! H$ G) b
  846. CLC
    : ]- `$ w! L5 R# K2 U2 ?
  847. ADC #10) v% J- W8 n, n  n8 t4 {' i5 h
  848. CMP Music_Total+ o/ F) F- [0 C( Q' y3 l) `  d% S' \
  849. BCS Music_Start_Song_Max6 |- X; d. u. p- ]+ b# o3 f# s
  850. STA <Music_Cur,X
    / f, G) [7 Q% h4 {/ J+ X4 f
  851. LDA #00, w2 Y. m) c, d
  852. BEQ Music_Track_Change_End
    ; r. u& V8 }( e  ]: W6 a
  853. Music_Start_Song_Max) H( Z" T+ h: }5 N; i1 K0 K8 P0 @
  854. LDA Music_Total$ g" O6 i7 e3 a: N- L
  855. STA <Music_Cur,X; s" `& |, f0 c: }  M( _1 c
  856. Music_Track_Change_End0 y" |; _# G7 z; R
  857. RTS/ h, R" ]( N* c+ x8 i

  858. # \2 G, {! R7 o  `$ \0 c, x
  859. ;==============================+ V/ b# Q4 M$ N* Q1 g1 w$ S
  860. ;按键处理
    + Z7 R0 }) u: U+ O
  861. Key_Proc8 |5 {% j4 c! U& @
  862. JSR Key_Scan
    $ Z) {1 w2 i5 Z
  863. LDA <Key_Keep
    . S3 P0 `6 Z0 x( }% N) ~  i5 R4 h8 U
  864. STA <Key_Temp# h5 y+ p$ s9 x
  865. JSR Key_Scan
    0 R, d9 I( ^; T# e' L" Z& }
  866. LDA <Key_Keep, w2 m, R' H; X8 a, a
  867. CMP <Key_Temp
    2 P/ z  v# b* m6 s9 t, t
  868. BEQ Key_Get_Once
    . y5 ]# u6 v0 ~' r: N
  869. LDA <Key_Kemp, v" ]& z8 Z3 u, o  ?
  870. STA <Key_Keep
    ( K# O% c) @4 k7 U* y
  871. Key_Get_Once* t2 |( o$ ^4 U: B
  872. TAY! C2 H& v! p& C$ Y3 ~
  873. EOR Key_Kemp
    3 Y6 ?$ a  q3 i  P3 }$ B
  874. AND <Key_Keep
    6 I/ O2 V; v+ r% e( r+ Y
  875. STA <Key_Once  p! i+ d7 }6 {, U% ?  Z
  876. STY <Key_Kemp5 g& m5 t+ K) A8 z8 L
  877. RTS8 g( b# C$ X" o. _: ]' b- X: S; F
  878. ;------------------------------  p, y& ]' H: ?- Q$ c) B$ {
  879. ;按键扫描
    ' u, r5 _3 Z  }& m  r7 k
  880. Key_Scan
    % H9 O2 Y% w; |) E2 J8 e9 ?, B1 s
  881. LDX #$01$ U' Y% y0 O* P5 Y2 l
  882. STX JOY1_FRAME* _* C, S. t; T9 R+ R6 R
  883. DEX# T0 u1 h% o0 V4 x/ {  r
  884. STX JOY1_FRAME- b4 e/ `2 g4 |/ u! l) @
  885. LDX #$08& G, A9 y6 W$ Q2 g% T3 ~! d
  886. Key_Value
      f; ?( W4 d& y2 C: _* w/ s* ?7 A
  887. LDA JOY1_FRAME6 u* o! n! B5 ?# e
  888. STA <Key_Getv  c; r7 \6 B% r; ]/ o( L
  889. LSR A/ V( M' Y! G  x& }4 V) ~/ m( o
  890. ORA <Key_Getv1 z! b# U2 C* `, b( W2 r
  891. LSR A
    + @  C7 ]7 a$ ]' F" P8 I% ]
  892. ROL <Key_Keep
    . ]* b$ w! T% n. P" E
  893. DEX: l7 e: ?  m% v* E; _/ t6 S5 d1 C
  894. BNE Key_Value
    2 B* Z, H  a: m* A* S+ m
  895. RTS0 {- K6 z& L( E0 `$ X* [% F
  896. 7 z+ w' p" q1 w) V
  897. ;==============================6 `$ ?" ~1 x& [4 x& v2 F
  898. .IF SOUND_BAR_SHOW_ENABLE7 _3 Q# f) i6 L* s9 [% C6 g) G
  899. ;音乐条显示
    , u  _: }2 S; x! A: v1 y0 `' u
  900. Music_Vision
    6 m* |0 K; z  J% `# q
  901. LDA <Text_Disable_Flag0 o9 R' h& e. h1 i
  902. AND #TEXT_DISABLE_ITEM4 K3 y* q% Y- w7 Q+ Z+ N
  903. BNE Music_Vision_End9 |/ x5 e. E3 L, L3 `
  904. AND #TEXT_DISABLE_BAR0 e9 y% D, Y# {- i$ J
  905. BNE Music_Vision_Set
    " ~3 e! g* q: j: @( ]; k/ Y
  906. LDX PPU_Cur2 N8 a' ~( i1 e+ v) K
  907. JSR Music_Animation# [- v) W: e% p0 v9 u- |0 K
  908. STX PPU_Cur
    ) Y; z3 B0 Y# e* {
  909. Music_Vision_Set
      `6 A" A6 f5 u1 r# |
  910. LDA <Text_Disable_Flag' Q, d% `4 l+ D
  911. AND #TEXT_DISABLE_BAR ^ $FF' N! X) }1 D8 W: J6 u( u
  912. STA <Text_Disable_Flag
    0 D& ]2 l0 `  m. I4 ~5 K" f) y
  913. Music_Vision_End
    . n2 n* c* a0 f2 g1 {4 I, B
  914. RTS
    & k3 H; _4 M* g0 W1 h" S+ e
  915. ;------------------------------
    / c6 I/ D5 p  h& `9 p- e) V& j
  916. ;音乐条显示处理+ y$ o: [( a4 Y# B' T; D
  917. Music_Animation
    , C+ l( X* h  m3 R6 _
  918. LDA #PPU_MODE_CNT_LINE
    ; E6 T0 L$ _; p) Y$ q/ R* _
  919. STA PPU_Addr,X7 c# }+ Q( W, P: z$ b
  920. INX
    # P% ?/ {7 H5 m( r  e- K6 F6 @
  921. LDA #HIGH(Sound_Bar_Pos)9 Y/ ]7 n9 G8 `- Q6 ~6 N
  922. STA PPU_Addr,X
    , G  R& s' L# \) u/ d  g
  923. INX
    $ P5 M5 B" h( H8 Q; g
  924. LDA #LOW(Sound_Bar_Pos)
      t5 C3 S6 {7 Y1 }  G1 |0 M: I+ F
  925. STA PPU_Addr,X
    7 |0 c8 u* e+ q, q$ o: |
  926. INX# j7 r7 A5 }- g- N3 D1 E* I0 l: V
  927. LDA #$08
    * L. R2 V9 m1 D' }- }
  928. STA PPU_Addr,X
    & g" w& y* i* W" u8 @
  929. INX7 K3 J+ y& B/ v- l  {* p5 X+ D
  930. LDA Sound_Bar
    ' K/ C8 y4 A2 l' @" m, ^
  931. JSR Volume_Convert
    ) d9 m8 S' k, c2 \, p
  932. ' G: O7 c4 N" r% P- ]# q
  933. JSR Volume_Set_Cnt
    ' B! E% ^. p, t# A. w0 R2 Q
  934. LDA Sound_Bar+$4
    6 e! Q; m' R: L2 C2 p. E/ \* ~
  935. JSR Volume_Convert
    4 t# z# \+ R0 M5 Q, s8 x
  936. # B# m) n$ f9 z2 d$ z
  937. JSR Volume_Set_Cnt) V: t) s6 G1 G' O8 ?$ t- z, I0 o# k
  938. LDA Sound_Bar+$8
    - {* s" ?1 U8 c9 [' }- o
  939. JSR Volume_Convert
    5 ^' S- h( h, @

  940. 9 C: r7 K+ y  F  I" N, c4 B+ I2 ~9 p
  941. JSR Volume_Set_Cnt: p8 V! k4 i) w* ^8 R2 k& ~
  942. LDA Sound_Bar+$C
    ' t) p/ M$ X7 F) K# T1 g
  943. JSR Volume_Convert( ~  E+ B/ S4 m+ K, @1 |: `! Z, F
  944. ) b( L  B1 A1 ]; S9 R& h9 Z
  945. JSR Volume_Set_Cnt. ^8 O3 `" t2 ?: o

  946. + z# ~9 C8 l& J" }$ V& @8 k/ D. A
  947. LDY #$10
    2 v5 T' Y! t. `: h' y
  948. LDA APU_STATUS
    9 x- z' U6 g4 d( s" J4 R7 S
  949. AND #$10
    * \: I5 H7 f( J) s# {9 O
  950. BNE Volume_Count6 a/ _1 H. R7 r" j
  951. LDY #$002 J9 ]) h! n: L- u2 W# K
  952. BEQ Volume_Count$ U" J0 K, V7 T$ `
  953. / Z$ K8 [3 L( v; L' a( d8 q  j
  954. ;------------------------------
    9 v( S: y; y- j# \9 ]% F# A
  955. ;音乐条处理
    9 g- y1 ^! D0 B5 N3 z
  956. Volume_Convert6 E! b) h& q; \" T" m# K$ Y1 f) @
  957. AND #$0F- K, M+ S: I  L$ s- K3 p" C, q
  958. TAY
    8 M" H' r0 m% T& S2 F! s/ u2 K
  959. Volume_Count* z# i/ A# m1 u9 @/ O
  960. LDA #$08
    : m% b; Q0 b) k+ `: u
  961. STA Sound_Bar_Cnt
    9 d2 q& O( X4 d/ ~) \4 |- W" a
  962. Volume_FILL
    " r0 u, ?. L4 R0 T  B9 J
  963. DEY8 A2 E* T" \' H% |
  964. BEQ Volume_Half
    6 S! o; p7 U3 o# W& b: \/ V* E
  965. BMI Volume_Empty* r/ }/ k: I5 L4 m
  966. DEY
    & F$ t' S+ Z# a! j8 L9 L! R
  967. Volume_Full7 f4 r9 W8 p; _- l6 \
  968. LDA #$16; J# S4 t4 q, N, |* h) V8 Z
  969. BNE Volume_PPU
    2 K, m* H% G6 }" A, y5 Z
  970. Volume_Half$ D4 L/ |7 }3 z$ j
  971. LDA #$154 `6 M4 F" ]0 q% d$ C7 o: g
  972. BNE Volume_PPU+ O: R/ d3 h7 N# J: M
  973. Volume_Empty
    # e2 b4 A6 B& S
  974. LDA #$14! V1 v/ `( w: l' l
  975. Volume_PPU$ j- `: E$ c0 z' U  u
  976. STA PPU_Addr,X( E6 g2 ^, i% U! }
  977. INX
    4 j7 t1 H9 n0 Y
  978. DEC Sound_Bar_Cnt
    * v5 x; V9 l% A
  979. BNE Volume_FILL
    3 N* ?5 K+ D' K. Y: s
  980. RTS5 m0 B  J# P+ G' j1 h( s4 ]" a

  981.   O6 U5 V1 y; n4 x9 y
  982. Volume_Set_Cnt. c6 [' a) P0 \0 \+ v1 ?
  983. LDA #PPU_MODE_CNT_LINE_NEXT
      f. w% D- Y3 t8 \9 P* R
  984. STA PPU_Addr,X- |% _# a+ F& _8 _2 @) _2 S# D4 u
  985. INX
    1 \, I# q6 V4 M9 T3 M4 ]" f
  986. LDA #$08
    9 t, x% G) m3 h* O
  987. STA PPU_Addr,X
    ) l8 ~5 t' s+ F: w# F. _
  988. INX7 @3 U5 s1 g' [/ V3 d7 }
  989. RTS
    ; ], }: {) I. M( Q8 E. M5 `* c9 P

  990. ( V2 }5 R0 O. A- M% H& J
  991. .ENDIF
    1 [7 H- L! H: d

  992. 8 V& m) j3 t+ Z& W$ D" J
  993. ;==============================- C9 n" W8 v+ n  }) R& B7 ^. P: R6 x
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    ; G* V; P1 W- i* i
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    . A' x) G* H3 n9 \/ u4 G! J" Z, A
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    ! A' [4 @9 R0 L8 L* {) ]0 K- w' a
  997. ;------------------------------
    . A4 f" ~, v- r1 q
  998. ;PPU处理6 |; @0 U1 B/ B8 |
  999. PPU_Proc! _6 K- ^8 y! T& L5 f$ i
  1000. LDX PPU_Cur
      C7 ]% J( P( S/ u( }, |. T
  1001. LDA #$00$ ]& J3 Q- W3 m! \% H$ m5 w7 @% x' L2 X2 l
  1002. STA PPU_Cur  k2 y$ j3 `" ?2 s2 \5 \, N
  1003. STA PPU_Addr,X
    9 }, L1 r* S  u5 j% K' M7 x
  1004. LDA PPU_Addr; w0 g- ~8 @. }( B9 Y
  1005. BNE PPU_Proc_Beg
    % R/ I( k% q# r4 a$ p) [
  1006. PPU_Proc_Ret
    8 p0 z% W/ h! q; V7 h! y
  1007. RTS1 P- p8 b6 Q1 k) a7 l

  1008. , }6 M9 A( ?( b  d
  1009. ;------------------------------/ k7 a4 F, [" l! N6 f5 K
  1010. PPU_Mode_Return_Cnt  ;转下行模式: h! e- y3 Z2 G5 q$ F' i3 b
  1011. INX- c$ Y3 p8 U+ j7 i
  1012. LDA PPU_Addr_L* L9 F# |1 E( G/ {6 _
  1013. CLC
    4 Y( {2 ?, ?5 s  ^1 p
  1014. ADC #$20" a3 I* K# ]4 j) p( w1 x
  1015. STA PPU_Addr_L: c: j/ c5 y; C+ g
  1016. BCC PPU_Mode_Return_Cnt_End2 Q( h5 R8 w1 ?6 E; m  O, [7 |! k" n
  1017. INC PPU_Addr_H
      p' o7 M, ~1 f1 X. n* d
  1018. PPU_Mode_Return_Cnt_End, X7 `$ V4 F. T6 j) e3 r
  1019. LDA PPU_Addr_H- \; Q" h0 q5 Q; H7 f2 a) x3 @
  1020. STA PPU_ADDRESS
    + ^3 Y( U' E  W  `) F- _1 ^8 k
  1021. LDA PPU_Addr_L  e0 ~" g8 B& y
  1022. STA PPU_ADDRESS$ D; f1 S3 L) ~; a
  1023. LDA PPU_Addr,X
    & Z$ J6 l) h2 J& N
  1024. TAY/ W. _" q# F. B1 `; q
  1025. PPU_Mode_Return_Cnt_Write; q5 R* D3 G% p5 k% F' N/ P
  1026. INX  a' P( n6 y' E7 S$ Z
  1027. LDA PPU_Addr,X0 C0 |, f" _/ b! o
  1028. STA PPU_DATA3 P  l9 |0 y; l% o2 x& j$ U
  1029. DEY
    " a0 o! H& l/ E( p
  1030. BNE PPU_Mode_Return_Cnt_Write" h6 q' u8 z" u; @3 [
  1031. JMP PPU_Proc_End
    ! Q6 L) t7 P! j  i, x" A" d  R  [
  1032. / `2 }' s- {8 d* W9 G8 [* v
  1033. ;------------------------------
    # F) _# ^- v4 S9 m4 ^8 j
  1034. PPU_Proc_Beg  ;处理开始
    ( v4 l- h2 x. c& A+ N0 z
  1035. LDX #$00" n3 i: S( f, q. J
  1036. STX PPU_MASK' p3 C# }0 J; ]3 E& D& p7 F
  1037. ;------------------------------: F- Z- d9 S: M
  1038. PPU_Mode_Select  ;模式选择' a3 L) V" I! G0 A4 x5 |' n2 [3 }6 j; N
  1039. LDA PPU_Addr,X
    4 ~# k4 E2 \* F5 c, Z
  1040. CMP #PPU_MODE_CNT_CLEAR" a7 X  }7 m. d) z8 \( |7 A+ t
  1041. BEQ PPU_Proc_Clear
    9 J. T$ i+ }8 y3 b! ^; V7 f
  1042. CMP #PPU_MODE_CNT_LINE
    8 Q4 Q2 K# r0 ^. T) y5 w& Z
  1043. BEQ PPU_Proc_Cnt_Line
    2 P. I9 Z' O) {$ M& v$ S0 R
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    7 P7 {' n- Q, r8 b, D
  1045. BEQ PPU_Mode_Return_Cnt; l1 i* _2 j; N0 O7 Z- Y
  1046. JMP PPU_Proc_End_Write+ ^' F  ]' N- l1 L& W2 k
  1047. ;------------------------------
    ; V; }) }& |5 Q; T
  1048. PPU_Proc_End  ;单行写入结束4 l9 i. S+ S; M- a; |
  1049. INX
    7 Y: I  H/ Y- h
  1050. LDA PPU_Addr,X
    7 @) m' R; w0 l0 m* }4 @0 r$ R0 J
  1051. BNE PPU_Mode_Select' J' a8 K  }; g8 p+ A8 D' u: l% ~
  1052. STA PPU_Addr) H8 q8 w5 w, @+ H) P
  1053. JSR Update_Palette_Color. E  }/ C7 v: E+ \* [
  1054. + M& O1 r9 p6 T9 r2 h+ G3 ?; Y
  1055. PPU_Proc_End_Write7 J7 H" z! q5 Z! q6 Q
  1056. LDA #$00
    2 C8 S0 W$ n' \8 Y+ P  {) o
  1057. STA PPU_ADDRESS
    - i7 Y$ z5 u2 ?7 q8 o& w
  1058. STA PPU_ADDRESS7 B. M/ }9 j  d/ n# D- P3 a
  1059. LDA <Text_Disable_Flag
    / U8 @6 z! J, h7 o; ]
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    * E- a6 e9 I: l7 Y
  1061. STA <Text_Disable_Flag
    & _5 ^! j, q  I) n
  1062. LDA #Scroll_X( v7 r' O6 z1 v$ `( L0 |
  1063. STA PPU_SCROLL6 i9 S  A' L7 Y! _8 V  ?
  1064. LDA #Scroll_Y' i# U- a  @% J" p' w' `$ C' [" g- {
  1065. STA PPU_SCROLL
    - T# F' b! U! j! f* e+ P) l
  1066. LDA Screen_State. J9 U5 I1 W  K2 ?* \" Y/ r; W
  1067. STA PPU_MASK
    $ K) ^/ z9 v& x1 j
  1068. RTS
    7 o6 B  S- K+ W, g

  1069. 5 V& L; }1 X' O- n2 H6 r0 X& G- G! a
  1070. PPU_Proc_Clear7 F1 `' b+ `1 `4 `2 u  @
  1071. INX
    + {, D! H: o; J1 ?' K. R' c/ Y
  1072. LDA PPU_Addr,X& f7 h( z! V8 _
  1073. STA PPU_ADDRESS
    1 G8 g9 k( p- U3 @) d
  1074. INX. T# [) J+ I/ c' Z3 x0 P. X
  1075. LDA PPU_Addr,X& J6 N) M- }/ i; G
  1076. STA PPU_ADDRESS% O+ j  [8 x" M& m/ H
  1077. INX
    $ E  B! y6 g$ k2 c
  1078. LDY PPU_Addr,X
    5 Z8 j0 O- H: e; _4 x' N+ M3 [
  1079. LDA #$00
    # z( f6 r/ X3 ^" a: _
  1080. PPU_Proc_Clear_Write
    / H" }+ ?0 F( d4 M+ Q" y. }
  1081. STA PPU_DATA# i9 B# a/ J8 m2 Q% K) m% S* z5 U
  1082. DEY+ _2 O* R4 a* y1 ]% K
  1083. BNE PPU_Proc_Clear_Write2 M- _8 R( L: ?7 u8 a6 R: \/ U
  1084. JMP PPU_Proc_End
    " Z/ E( `& k: a

  1085. $ q7 Y7 P; p5 P% ~" c* L2 X
  1086. PPU_Proc_Cnt_Line* x. ?6 u5 i# u/ G8 B$ f/ M
  1087. INX
    6 \% s6 J  Y6 o$ x# p" c6 p' N
  1088. LDA PPU_Addr,X, K' x# t" j" M
  1089. STA PPU_Addr_H/ n: ^! h& n5 o5 ^0 Q
  1090. STA PPU_ADDRESS
    + H* R% ]- _6 b  e
  1091. INX) q# H' X0 G$ \! f% L, {4 p
  1092. LDA PPU_Addr,X, L% y% ]5 e0 [- u4 U5 z
  1093. STA PPU_Addr_L* w' `. a1 [$ r5 l
  1094. STA PPU_ADDRESS
    + c' d: s  \# J, _& Z  @4 x
  1095. INX: T, C, d4 s2 f3 I5 M
  1096. LDY PPU_Addr,X0 |* u2 J6 s5 B) U4 h! f
  1097. PPU_Proc_Cnt_Line_Write
    3 m" X0 d6 g5 \+ C/ S' M
  1098. INX/ L; \5 O) V) h. O$ W3 ^( o
  1099. LDA PPU_Addr,X. m1 x5 i; G' i; ?/ b" H$ k
  1100. STA PPU_DATA
    . F( w8 ]" |, v
  1101. DEY$ V3 _7 E' P/ X0 m) @
  1102. BNE PPU_Proc_Cnt_Line_Write
    0 n: _8 g) }- P* Z
  1103. JMP PPU_Proc_End, e$ v" U% x1 Z3 c) Y

  1104. . i( w/ a6 H1 J8 R" }" _! V
  1105. ;==============================
    % @) s& J  A* z* D
  1106. HEX_To_Dec;十六进制转十进制* U$ U. z2 c# R' {3 }
  1107. STA <HEX_Data7 w+ t3 u0 K9 b6 y/ P
  1108. PHA
    8 E( x  |9 P4 }* Z+ z( \- y/ R
  1109. TXA
    8 }* e6 [, j* ~0 j! `6 S) _5 i3 L
  1110. PHA
    7 u0 X' `& [4 a* d1 d
  1111. LDX #$00
    " h( I3 [4 z$ R/ W# z) R/ X
  1112. LDA #$00
    2 g5 p' e7 ~; G  @! R
  1113. HEX_Cln! D; h8 ^7 N5 ]! g' N4 ~& }" l
  1114. STA <DEC_H,X- Z$ O; e# }% m" r, [+ ~; J
  1115. INX9 {$ W( z: v8 \
  1116. CPX #$037 [8 E* E7 h8 d0 G& @, t
  1117. BCC HEX_Cln
    0 C2 u3 C9 X1 U5 |0 {/ r
  1118. LDA <HEX_Data
    ) C7 P# r4 o3 Q3 p+ V
  1119. ;------------------------------! @7 C1 |, `) c; y' v, H
  1120. HEX_1005 A/ F% @2 p) j0 t
  1121. CMP #100" m# v: u1 {$ `( Q2 y
  1122. BCC HEX_10* I! u, g8 U* u& E% L/ I
  1123. SEC8 M5 x' b/ K; E- ^
  1124. SBC #100
    1 N% y0 U* X7 C, k! v
  1125. INC <DEC_H
    ! A8 o  y9 k. e* Z; [- p+ G1 ~- m
  1126. BNE HEX_1001 o; ^# `3 C7 r$ h' t6 e( y4 a( {" d
  1127. ;------------------------------
    5 O8 f8 ?% d; G) X/ H( C4 [5 s
  1128. HEX_10" |3 q: r$ h) v
  1129. CMP #107 [1 P$ p  c% H# L- s" d2 J
  1130. BCC HEX_19 }5 K4 q; I5 ]) k" n5 X, B
  1131. SEC
    ) l! q% g! I! o3 e9 Y( J% L* L
  1132. SBC #10
    ) U  A. P$ j) H  ^6 G- r2 b, W; c9 F$ |
  1133. INC <DEC_T# x" b  R$ v. b! ?
  1134. BNE HEX_10' D2 @+ M: U% m! g! Q9 ~
  1135. ;------------------------------0 o* J# O3 U6 f9 h% u: D
  1136. HEX_1
    + l+ O$ _5 \% C# m7 J/ E' ^
  1137. STA <DEC_L) N0 B  J2 `1 h5 ~; G* s
  1138. PLA
    + `9 \0 n) f' ?( Y" ^
  1139. TAX% {5 t" R# F. f" f& [' N
  1140. PLA
    ( H% k' E& j. d$ x( s  P1 F
  1141. RTS9 |8 F) C) n& V, h7 h- b# n, |% @

  1142. 5 r, b, f# S4 r- p) t
  1143. ;==============================
    , o3 C9 F6 z5 Z7 B( l
  1144. ;音乐曲目显示) i0 M8 m& ]9 j8 g+ a5 t  ~
  1145. Music_Show# x5 x! X$ g* H5 F/ Y! s) Q' y
  1146. LDX <Music_Item_Cur
    9 m+ l1 a' ?6 P
  1147. LDA <Music_Cur,X9 }3 b  c/ m  \/ w# \; ?' q
  1148. CLC, E- W" |4 ~1 c2 {* n( q( A! l
  1149. ADC #$01
    * `! ?& S: B) U8 _5 M  r: W* I+ e
  1150. JSR HEX_To_Dec" E! h* p' r  Q( R. |
  1151. LDX PPU_Cur6 ^7 U& S- u1 p/ @
  1152. LDA #PPU_MODE_CNT_LINE8 w8 P, D& L6 P. m5 w  X% W
  1153. STA PPU_Addr,X% G( H" C+ p# ~# c/ D, d5 {
  1154. INX
    $ g9 `- y& g) h5 m1 K/ O
  1155. LDA #HIGH(Play_Index_Pos)
    + m3 o: v( V/ O- o' a
  1156. STA PPU_Addr,X0 @: P7 \( A$ H1 E. m
  1157. INX
    : o/ A; Y% C% [' n; I
  1158. LDA #LOW(Play_Index_Pos)0 i1 {8 Z5 J  Y6 E& t
  1159. STA PPU_Addr,X8 P6 B% v' @% q
  1160. INX
    ; ^5 [8 p/ d5 n" M3 u0 [4 h. L1 b

  1161. 2 g- q7 l5 d; _7 ~1 G, n
  1162. LDA #$07
    & @8 J: m/ ^' a7 J7 |& o0 `+ C
  1163. BNE Music_Show_Length$ e2 [" V! d' J$ N) _! E5 c& [
  1164. 9 c, t* O2 S( M* N  F
  1165. Music_Show_Length
    " l+ z  k+ T3 y, L) H4 `
  1166. STA PPU_Addr,X
    * F1 b. D* z; `  W, ?3 K
  1167. INX3 y: ?; ?& \% _
  1168. 6 y; \1 y, v7 u, r. L7 k
  1169. LDA <DEC_H: k( y$ W/ z6 e: P% J% e% K. U  j
  1170. ORA #'0'
      j. L4 N8 z4 P! e5 t) i
  1171. STA PPU_Addr,X
    " O8 B: ^5 N/ e- |& d* k5 B; m3 a' x/ m
  1172. INX
    , O% m3 U9 R: a$ X! Q

  1173. ; g  N' E- X( O- H" q; Z
  1174. LDA <DEC_T5 |9 T+ o8 k8 q
  1175. ORA #'0'
    3 P& d7 r1 M) \; j4 u
  1176. STA PPU_Addr,X
    - c) b% b( _! B1 B5 b
  1177. INX$ }1 _  h: F4 B& W3 f4 |( R
  1178. ( ~" V8 N+ M: ]$ i8 w
  1179. LDA <DEC_L
    ' m0 c+ G% K) X2 y0 P
  1180. ORA #'0'
    4 K* }. K. F  H9 L& }- I
  1181. STA PPU_Addr,X6 A1 x% t, H2 v$ w* v/ ]+ L
  1182. INX3 z6 E1 k% L$ H. `8 _# p: n
  1183. - ~  D6 V* D& F4 Z
  1184. LDA #'/'1 r* ?9 m4 r, @* m. g, L8 Q
  1185. STA PPU_Addr,X
    ! A5 c8 m% ?9 T* E# y+ U
  1186. INX  l! E  m& t6 @" Y1 w- |: Q" w, o
  1187. Music_Show_Total
    % h0 n' Z" a4 e5 C
  1188. LDA Music_Total
    ; Z4 U+ w% g  q
  1189. CLC
    * F* X- r9 ~' g, _3 [, E/ `
  1190. ADC #$01/ j4 g9 I, F1 f, K7 v3 ]
  1191. JSR HEX_To_Dec
    0 Z- B* X: W. k! A/ x. A# ^; a

  1192. ' J! l% w$ _; D3 l6 c5 N' \
  1193. LDA <DEC_H
    * J# R4 o4 Q' e; M2 T# u5 z. @& ^
  1194. ORA #'0'
    1 i8 d# Y# J2 U) I( h
  1195. STA PPU_Addr,X5 V4 _. [+ T$ k1 @& j
  1196. INX0 v/ U; W* o  T' y: r; ?
  1197. ! Y/ Z; t& t3 d& `4 N5 l
  1198. LDA <DEC_T
    0 d: F+ M2 y* C$ s% m# B, k
  1199. ORA #'0'
    ' |$ j# K1 Z4 L6 g2 X7 H, w
  1200. STA PPU_Addr,X& z6 P9 Q0 R7 N( t1 F
  1201. INX
    % y5 J( e  e) H, x

  1202. 6 M& F$ ~- j$ |6 _" V8 [% d
  1203. LDA <DEC_L3 O3 t4 ~% |1 r) n3 ~0 d- C* M
  1204. ORA #'0'/ b2 d* m3 ]  ]+ Z
  1205. STA PPU_Addr,X
    0 r& ^; O! s' i5 s  r- w  ?
  1206. INX) j, L- h2 \& N& @- x3 G* V

  1207. 6 H" G5 [9 h7 d7 Q) h: R) }9 z
  1208. STX PPU_Cur7 ~3 L+ `# z, x: _
  1209. Music_Show_End+ m) o; x$ ^$ h9 m) ~; m
  1210. RTS
    / O4 L3 L3 n3 G( ~5 b; m) a
  1211. ! n; J: [5 q( {" `/ |
  1212. ;==============================3 b# P2 U8 B8 K: x7 v/ G
  1213. Time_Show;播放时间显示
    & h- U2 ~7 I2 |4 F
  1214. LDA <Text_Disable_Flag5 T+ ^0 B' {7 X6 W" a* j9 I" H+ D
  1215. AND #TEXT_DISABLE_ITEM( E, M7 K( j2 ~( [) p
  1216. BNE Time_Show_End
    2 R5 u9 _& @* d$ J; A
  1217. AND #TEXT_DISABLE_TIME, f* H; g: A4 w% m5 X1 \/ O4 g
  1218. BNE Time_Show_Enable
    + [& \' r2 m( n. W- [  ?3 y
  1219. 0 }! S. ~5 w3 e& Z0 @2 E5 Q
  1220. LDX PPU_Cur" `' i: L8 [$ E+ c+ v, P
  1221. LDA #PPU_MODE_CNT_LINE8 K* ?7 Z0 D- O1 |5 A& \& J! s
  1222. STA PPU_Addr,X" f9 [- N: @0 V
  1223. INX; p( U4 G# y* f. T8 a2 p( I" ^4 F# o
  1224. LDA #HIGH(Play_Time_Pos)( o. @. A6 |' p3 ]9 \9 f' m8 I% v
  1225. STA PPU_Addr,X7 B7 F( V8 l( p% G0 y' |  a% N0 c- V" ^
  1226. INX
    . x+ D1 s9 {  T# f9 k
  1227. LDA #LOW(Play_Time_Pos)( G4 R8 g1 @* A  N5 P/ `& ^
  1228. STA PPU_Addr,X
    $ `) t  u2 @. B/ ^2 o) s
  1229. INX
    ! K5 V  x( m: c! j$ I' A; D, W" I$ A! x
  1230. LDA #$08
    $ P$ I) d$ s" x3 D' X! `  u( a6 ^
  1231. STA PPU_Addr,X
    - z( m& }2 p* z" c1 W0 @# ^
  1232. INX4 H. q4 R0 C4 g9 [8 w3 X! {
  1233. Time_Show_H1 b3 I+ S# l5 R4 j# v
  1234. LDA <Time_H' r. S+ D' O9 b5 E1 O( H
  1235. JSR HEX_To_Dec# j- u, a3 V! j' r: g: [
  1236. JSR Time_Digit$ p- M7 ^) K( a
  1237. LDA #':'  @6 T  S( q7 ^6 T1 _0 b
  1238. STA PPU_Addr,X
    2 }9 W3 l/ o" c" U
  1239. INX
    / r- q- k  O9 B
  1240. Time_Show_M
    - z: Q, t# X. `( Z* A
  1241. LDA <Time_M' Z! F3 p2 E5 r% d( k! [, N+ q3 T2 i
  1242. JSR HEX_To_Dec6 \4 ^9 w0 l% F2 t( b
  1243. JSR Time_Digit: D  a4 Z: D. F5 d) l: P: E
  1244. LDA #':'
    : W9 I% C3 n& z/ u
  1245. STA PPU_Addr,X! W( o3 T8 V& V
  1246. INX
    . v  w- g& u0 s( p9 d
  1247. Time_Show_S, d( M4 |0 U1 ?2 N) V) K2 C
  1248. LDA <Time_S
    ( H, |2 D- h# A: c. `9 m+ O# P& X
  1249. JSR HEX_To_Dec
    " q9 g/ H7 V1 i0 A9 D8 [
  1250. JSR Time_Digit. R. f! F, @! S) ]. \; P& V
  1251. STX PPU_Cur0 v, c7 U6 Z) s0 f8 ]! Q$ o/ U/ q+ ?
  1252. Time_Show_Enable- U$ d) |/ \$ y3 F0 n' q
  1253. LDA <Text_Disable_Flag
    , P" m8 ?, A2 O3 m3 m/ l( \2 P% A8 B
  1254. AND #TEXT_DISABLE_TIME ^ $FF5 J4 ^# k  _5 W9 X- y+ {- T
  1255. STA <Text_Disable_Flag
    " G2 d; O: I' W3 }" W
  1256. Time_Show_End2 h5 _( c( }" w, l9 s
  1257. RTS% z, y6 A) V. y3 D( U

  1258. ' K0 u. Y- G% k  l3 D
  1259. Time_Digit
    ! Y9 t! Z' H' U6 W" d* F
  1260. LDA <DEC_T
    % \- F$ e9 O) L3 n
  1261. ORA #'0'7 F1 N( @3 ~2 {# |* D
  1262. STA PPU_Addr,X
    0 M9 {- g" z$ y
  1263. INX, t- P8 {6 z3 k
  1264. LDA <DEC_L% X& S+ C5 T: Q0 e, W6 G
  1265. ORA #'0'. e' E1 p8 C  z3 c4 M$ e
  1266. STA PPU_Addr,X/ s6 }4 C/ W, V1 J, T! |
  1267. INX: u* a" ~+ L! c/ R  F
  1268. RTS
    - {1 {) d6 ~  A; k
  1269.   s8 E# U9 q' H  f0 _
  1270. ;==============================
    5 p  q. \+ e7 B5 [
  1271. Time_Count;计时
    * ]5 M& b8 L: W' x, }& t+ x. a. f
  1272. LDA <Music_Stop_State
    1 t/ {2 j3 _5 C9 R, r5 J4 D4 e
  1273. ORA <Time_Wait_Cnt; v% F9 ~2 x# M8 f
  1274. BNE Time_Count_End  c* d/ c8 f- w+ a& S
  1275. INC <Time_Cnt  b, h" H4 M% M0 w4 p5 ~
  1276. LDA <Time_Cnt2 r- k9 a  Q2 p$ p) A' \$ l
  1277. CMP #60) l0 Q& m% G" H; p. [
  1278. BCC Time_Count_End0 Q# C) B0 _+ E8 O* }$ m
  1279. LDA #00) K. u  b* j1 b# [
  1280. STA <Time_Cnt
    ' v& Z5 p: T# h" j8 ]# x
  1281. INC <Time_S/ U( v5 }% w" B1 g! _8 Z
  1282. . r  _% c4 M. j4 c5 x
  1283. Time_S_Cnt0 x5 k4 H. w3 Y) \  s3 e
  1284. LDA <Time_S
    - a, H& V* ~0 q3 i" [
  1285. CMP #60
    - T9 ]" y* r0 a+ r* m( k
  1286. BCC Time_Count_End
    ' Q6 ^1 P0 ]3 o# W* N: g% R, F1 I
  1287. LDA #007 c/ o( X" z( C$ ?+ n% |0 J6 q- {
  1288. STA <Time_S2 x( |5 f# ^2 Y  \+ g' Q, @* v# _) t
  1289. INC <Time_M2 q: y  y4 Y. r% J+ o
  1290. * R1 a8 b9 q1 J% u4 ~
  1291. Time_M_Cnt. p$ S/ I* q4 V6 U2 U5 [+ }% W: G
  1292. LDA <Time_M( _1 l2 s' h% t. K6 @; K" W9 R0 D5 j
  1293. CMP #604 x( u. f' a$ Z4 w+ [( Y
  1294. BCC Time_Count_End
    ) Q: c3 {( ~" V4 C8 s$ S( s9 d- ^
  1295. LDA #001 B  C2 n: ^7 J( _% F4 v, j& g
  1296. STA <Time_M
    ! B& N) Q& J/ V" B/ h
  1297. INC <Time_H
    : t, \# j( t( `% M' _+ |7 I

  1298. , f1 r0 E+ _7 I
  1299. Time_H_Cnt
    " {6 V% K+ j) n
  1300. LDA <Time_H2 s! M6 E+ v" b: H3 b% q
  1301. CMP #24
    4 x, Z3 C0 T" ~5 }; x  N
  1302. BCC Time_Count_End; |2 S, D5 ?7 y' O6 S
  1303. LDA #00# Z/ q# l+ d2 D' }# x* `
  1304. STA <Time_H/ g+ z( M5 ?" J. H! U4 L3 n3 t

  1305. # r/ Y6 O& E) m; W9 z
  1306. Time_Count_End
    8 a, h& N: g- ~- O% Z8 `- P/ h
  1307. RTS: V- j: e- R; P* a+ C

  1308. $ }# w7 q& C5 J% `8 W% ]
  1309. ;==============================
    1 e4 S1 w: U9 X7 @( N, _
  1310. Time_ReSet;播放时间重置
    ; Q$ _5 d8 Y* R# Z! l9 J
  1311. LDA #$00
    + U. I9 |* I" f2 R1 K
  1312. STA <Time_S4 u3 t  @1 _, I  ]
  1313. STA <Time_M ! M' M" S/ c& I* ^
  1314. STA <Time_H9 [$ i- W1 ]0 B: j
  1315. STA <Time_Cnt
    % d6 Y: n5 T& Y* o  W. ]7 g) X5 W
  1316. RTS  _" |( S! C+ G0 n/ j; H
  1317. 9 [; Z% _0 f; ~) L5 G! O8 x6 |+ s; p
  1318. ;==============================. q( P6 h' Q* B8 Z
  1319. Music_Bar_ReSet;音乐条重置
    ) K( ~" k5 T9 Y- s+ i
  1320. LDA #$00/ M! {: U" x0 [4 j
  1321. LDX #$001 Y- A6 `! [! _7 y
  1322. Music_Bar_ReSet_Set% Q$ e* }, x5 k8 i2 P8 g
  1323. STA Sound_Bar,X4 z% Z: _" z8 p) {+ O
  1324. INX6 B' v- H  c% y; [, ^
  1325. CPX #$10
    8 |* V/ D' B- Z1 Q# P; |0 `
  1326. BCC Music_Bar_ReSet_Set6 b6 b- {/ j% E' C* Y" ?6 w( B. s
  1327. RTS: K! O- U8 X0 w; f

  1328. $ N3 y% u$ Q0 K3 Q. w* P; ^
  1329. ;==============================
    + K  q/ J% O) Y% E4 C" g
  1330. PPU_Data;PPU数据写入0 i% X, V$ d5 b9 e( i
  1331. STY <Data_L
    8 M7 P: P- j' M6 l
  1332. STX <Data_H) k$ Z6 ]2 I* `' R4 ^
  1333. LDY #$FF
    6 D3 f4 o$ m  Y
  1334. LDX PPU_Cur2 y: O9 p1 H( N% S8 u
  1335. DEX( v( i8 A0 C; T# d% {- S
  1336. PPU_Data_Beg
    & O( J3 ]( F/ P( B3 n* H( V
  1337. INX8 b3 u% A  H* Z8 j
  1338. INY# `$ r8 B/ g, p  y4 m! ]( t" f
  1339. LDA [Data_L],Y! `* c- ]# s, ^
  1340. STA PPU_Addr,X
    7 H% L: d1 i& z" }  h7 x
  1341. BNE PPU_Data_Beg
    - G# `2 @$ q8 s+ C4 F4 Z
  1342. STX PPU_Cur& c% F; {3 d$ p( S
  1343. PPU_Data_End
    + p5 v" o+ Q! G" R8 Z; V
  1344. RTS' V6 P) q9 n; r! L/ g9 R
  1345. ) G" F! b8 @- l2 x* ~1 k
  1346. ;==============================% @( ?. t0 U9 ?+ ]
  1347. Music_State_Show;播放状态显示7 {' c) [% ~. {) A7 M
  1348. LDA <Music_Stop_State
    6 g/ D5 f9 e, D, E1 O5 q
  1349. BEQ Music_State_Show_Play( f( v3 `# [/ N: Y; e( S4 K" a
  1350. Music_State_Show_Stop
    6 b% T, p; G+ I* e! p
  1351. LDY #LOW(Music_State_Stop)( w2 Z$ I# V) J& U; c  N3 e) u2 @
  1352. LDX #HIGH(Music_State_Stop)8 a7 V7 V) K4 \( s
  1353. JSR PPU_Data# X9 M% u& D/ d% [/ z& [
  1354. RTS
    % @2 y+ x  |  l$ q& S
  1355. Music_State_Show_Play
    / k$ O5 K: P' _5 R; C" A
  1356. LDY #LOW(Music_State_Play)+ }5 B, b! Y9 m. \0 a4 q0 X
  1357. LDX #HIGH(Music_State_Play)( M% [6 J' @/ Q: B. \3 Y. w* ^) o& J
  1358. JSR PPU_Data* T5 Y9 g* d- i% b8 x! a
  1359. RTS' z- g5 W1 Y9 d5 L
  1360. 7 G* O* b( Y' u7 E% r9 O" d2 D
  1361. .IF SOUND_BAR_SHOW_ENABLE
    0 {6 D1 I8 N# r* J
  1362. ;==============================+ {+ s! {' @; c+ X" _# F: [0 h
  1363. Sound_Bar_Text_Set;标题与音乐条初始化% ]$ ]# P( W. _, ]9 f5 y
  1364. LDY #LOW(Sound_Bar_Text_Data)
    7 n. i# K" A1 \7 X: ^- U
  1365. LDX #HIGH(Sound_Bar_Text_Data)0 |' L" l0 u( X8 \8 m2 R' N. ~
  1366. JSR PPU_Data
    ; `- [! V) h) D2 s4 p5 C$ P/ _( I
  1367. RTS6 w6 s% }) B; E7 t

  1368. & n% D* W; q2 N% x6 X( V
  1369. .ENDIF
    , P4 [3 h: _1 S  [" f5 i7 _/ Z' N
  1370. * q  m9 H0 x9 U
  1371. ;==============================
    / R9 C  d9 T/ ~5 ~* |
  1372. Set_NameTable_Attributes;设置命名表属性
    1 F* n, ?9 T& ?  d1 q" k4 A( _/ O2 ~+ P
  1373. BIT PPU_STATUS
    , y9 ]! B* u( r' z9 c" G
  1374. LDA #$23  M9 Z& _5 d6 ~$ M+ F1 U, U
  1375. STA PPU_ADDRESS" n8 o/ d8 a& {% C( I
  1376. LDA #$C0
    ) a% g* j7 ^, ^/ f$ [7 [3 l3 A
  1377. STA PPU_ADDRESS: f9 M. j4 {1 \0 H- }  B
  1378. LDX #$00
    + e3 s4 b3 C9 a! }
  1379. Set_NameTable_Attributes_Write. `. C2 ^3 C  }5 L- \+ N5 U2 ^3 k
  1380. LDA Palette_Attributes,X
    - H8 P; y" p- G
  1381. STA PPU_DATA/ {0 x" J& U* S! l
  1382. INX1 Q; {; y, N3 \! r# W4 m& A0 L
  1383. CPX #$40
    0 f7 f* x5 t8 j: w+ c2 S
  1384. BCC Set_NameTable_Attributes_Write
    6 Q% z! o) R9 d$ |9 D* w+ i( @
  1385. RTS
    8 @: C6 Z+ O9 b" J

  1386. . Y& g$ i' j% A4 Y) I
  1387. ;==============================6 d& x0 q  x( H1 h: I+ q
  1388. Set_Palette_Color;设置调色板数据
    3 r7 p4 u. x. B% a7 t$ y  F3 f
  1389. BIT PPU_STATUS
    ! k: I0 o7 i5 L4 ?; Q0 z
  1390. LDA #$3F
    8 L% C3 }# x% i
  1391. STA PPU_ADDRESS
    " ?( v: n8 B6 i/ r9 w1 U0 e1 p. E8 U
  1392. LDA #$004 A( O4 _$ N& ~% @, g" x- J
  1393. STA PPU_ADDRESS" Y4 C: e, _" K. m9 ]7 c0 X
  1394. LDX #$00
    - r. `) W+ v  k0 |) {
  1395. Set_Palette_Color_Write4 `9 V& G0 F  M* O% S
  1396. LDA Palette_Data,X
    6 Z# T( E" ~+ S9 S) V$ p) x
  1397. STA PPU_DATA- d4 y4 |# E& u: v$ \
  1398. INX
    8 ^- t7 f! }2 ^6 K& H8 I% S7 G
  1399. CPX #$20
    ! N5 o7 [, m- A/ ?0 ~
  1400. BCC Set_Palette_Color_Write; W) b$ p6 H4 @9 d
  1401. RTS) K1 G) x* {5 `# m
  1402. 3 G' {$ X# H* D; A: N
  1403. ;==============================; j, h' _8 I$ g4 [6 P8 t7 q
  1404. Init_Palette_Addr;初始化调色板数据
    7 |: b( r9 y9 K" Q
  1405. LDX #$00
    - N4 ^4 H; M/ j! ~
  1406. Init_Palette_Addr_Write( X% H3 w& l  ^8 w8 ?/ H7 ?
  1407. LDA Palette_Data,X+ Q+ n$ {1 s3 U8 R6 @1 Z) M1 m
  1408. STA Palette_Addr,X
    ( P$ Q0 T! L5 M: B% ^& S
  1409. INX
    3 z# f# @: s1 [6 I- L/ |
  1410. CPX #$20
    ; i4 @+ A& g2 V. }7 C2 {
  1411. BCC Init_Palette_Addr_Write
    9 A, [/ ?% E+ X
  1412. RTS
    , ?$ ^, P6 r9 Z; a% t

  1413. 5 r" Z' y- ^7 n. q. P
  1414. ;==============================
    8 x" c# I9 k7 c% h4 H
  1415. Update_Palette_Color;更新调色板颜色' `$ j" A5 E) v3 R/ I
  1416. LDA <Palette_Update_Flag0 t% g& X3 G  k: f% ^1 o3 z
  1417. BEQ Update_Palette_Color_End' \5 g( P6 u6 ~- V$ u
  1418. LDA #$3F: O2 I3 u: {9 d/ D
  1419. STA PPU_ADDRESS* ]% u3 b. e% a( p9 ]  k
  1420. LDA #$0C
    ; t8 n2 f6 S7 D7 O6 I; O; d4 w# K
  1421. STA PPU_ADDRESS
    ) k/ w! X/ T5 A
  1422. LDX #$0C1 _5 ~# E2 U* L5 D
  1423. Update_Palette_Color_Write
    ; q- j! f) b+ {2 V8 L$ l, i* y0 ~
  1424. LDA Palette_Addr,X" P$ k1 o; E, Y) t- W7 \
  1425. STA PPU_DATA% _# m! p6 H! P- _
  1426. INX
    5 e1 B7 o+ h$ K8 Z
  1427. CPX #$14
    0 Q+ e' }1 k- k# J& Z
  1428. BCC Update_Palette_Color_Write
    4 w) K2 ]. b  D0 e8 b! A6 F% J5 n9 |
  1429. LDA #$00
    " O; k3 C# A9 C: ^" I. ?6 H
  1430. STA <Palette_Update_Flag1 E6 |7 S0 Y2 h
  1431. Update_Palette_Color_End
    2 A6 {" Q/ p! f4 g7 Q
  1432. RTS
    6 h: x( h; J2 Q) z* B/ b
  1433. ! j5 o; Q! k4 K  h& a+ a0 a: B
  1434. $ c5 w3 S- i: I- j2 H3 ]5 V: _$ ~
  1435. Update_Sprite_Palette_Data( M9 \, j) y1 @( T$ m
  1436. .DB $21
    % e4 Y2 s  c. ^
  1437. .DB $217 V9 m! A; U* I3 c- K) S3 W
  1438. .DB $11
    2 y; f8 W1 {5 y! [
  1439. .DB $01
    % P! c" C( V' ]# m- B1 v
  1440. .DB $01% s7 D0 X, B! L1 h1 ^! H' B
  1441. .DB $11
    ) Z; i1 U: H: Q
  1442. .DB $21; l1 h' v7 I$ |8 b$ M6 U
  1443. .DB $212 T2 ^5 C( V3 M) n: V
  1444. .DB $11
    ( r$ O' `% ^; b; S8 n7 U' d
  1445. .DB $01; P$ B$ e! F  P/ N& n' R8 X/ h
  1446. .DB $11
    : p! \" _( Z( r4 k. F: J# G( h% ~
  1447. .DB $21' I7 t$ |( R5 f3 y
  1448. .DB $21
    2 ^" E( b# {1 _; O6 v5 [
  1449. .DB $110 X% m9 ~8 k  T' |3 m8 c
  1450. .DB $01
    - ~; M) v! A, p. A! I+ e( l6 `
  1451. .DB $11
    0 a* R9 h9 u0 e; o! ~! d
  1452. ;==============================
    8 }8 W; P& [$ ~4 l$ A. y+ W2 j
  1453. Update_Palette_Data;更新调色板数据
    5 x5 [4 \3 N' x, I9 A- h
  1454. LDA Nmi_Time_Count3 o2 L0 i' L! I% ]' }9 S9 U6 ?
  1455. AND #$08
    + W8 ]+ M& s2 _+ j% a: \
  1456. CMP #$08! o$ z4 {4 y( T
  1457. BNE Update_Bkg_Palette_Data9 _' ~, u( Y' u5 A& U, S: v& G) n: o

  1458. 9 S8 y. D* I0 N8 i5 D
  1459. Update_Sprite_Palette_Data_Set
    / F6 r, C2 C! ^) w* m! @. G
  1460. LDA Nmi_Time_Count
    " @1 n  F9 @/ `0 {
  1461. LSR A
    4 S2 J" D+ L8 A" T$ F# U  i+ [% ?% ^
  1462. LSR A
    / {0 u7 A1 g+ G7 y8 T
  1463. LSR A( U) q$ p. e- [; M6 E% T3 }
  1464. LSR A6 {7 o5 u, E( T: Y) h8 \# b+ _9 Y
  1465. AND #$0F, g$ u% A: }! }4 z9 Q- N
  1466. TAX
    2 I' G7 `; O: X/ k
  1467. LDA Update_Sprite_Palette_Data,X1 z  a( _: j  F( n
  1468. STA Sprite_Palette_Update_Addr
    - c$ {: X  Z0 H6 W7 R
  1469. LDA #$01
    , `0 U2 R& l7 v7 k- x: K7 F
  1470. STA <Palette_Update_Flag
    # }: V2 W: s- {) o% L

  1471. ! h# J6 L2 N' n( ]& ~/ g
  1472. Update_Bkg_Palette_Data4 D: U) g* [0 _0 v
  1473. LDA <Text_Disable_Flag
    4 v/ N+ v5 s& E; v
  1474. AND #TEXT_DISABLE_RAM9 g, y; s8 {; _4 B
  1475. BNE Update_Palette_Data_End
    , D* {, f/ Q3 `! X& G' z
  1476. LDA <Music_Stop_State
    9 r8 B! a  N; ]$ [
  1477. BNE Update_Palette_Data_End1 l2 b; O& G% A% t; N3 T: p9 b

  1478. ) P* e- I0 p6 \0 r9 q) h
  1479. Update_Palette_Data_Check8 s. J, D& M# {- ~; @7 w* |
  1480. LDA Palette_Wait_Cnt
    , j! g# C$ a4 U' k
  1481. BPL Update_Palette_Data_Check_Over
    $ q# r7 j  C1 k; i3 h0 K  o+ V
  1482. LDA #PALETTE_UPDATE_INTERVAL1 @* q3 i  `& a
  1483. STA Palette_Wait_Cnt
    5 f& Z; |2 J) D9 L/ s" \9 q
  1484. Update_Palette_Data_Check_Over
    $ {4 t( a+ c) A3 }6 b6 L
  1485. DEC Palette_Wait_Cnt
    $ V; |& ^2 F* Z( Y5 A+ D2 U
  1486. BNE Update_Palette_Data_End; H" K7 x$ S% v! w$ v% m" t% U

  1487. / D8 q  o, O( N# X% a' T& P; T
  1488. LDA <Text_Disable_Flag
    ; [- t/ F, U$ c* b, }
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME, D  _7 k  g" S( x# [6 k. k; V) N2 X5 u
  1490. STA Text_Disable_Flag
    8 w& N5 X* M5 l/ F9 i+ T
  1491. INC Palette_Update_Flag
    3 i% `; t+ m& t0 t" h9 E2 C
  1492. 9 T1 s+ L# y- i; y; S) [$ W# S5 R
  1493. LDA #PALETTE_UPDATE_INTERVAL
    + Q( R$ H8 x7 U, D' U, a4 [/ h
  1494. STA Palette_Wait_Cnt
    5 Q) r2 ^* R2 l9 S5 h/ \
  1495. ! u0 d" Q2 r5 u
  1496. LDA Bkg_Palette_Update_Addr
    # @) ?2 V/ K! j
  1497. CMP #PALETTE_UPDATE_MAX
    " T3 _- o: n! g4 }4 \, P
  1498. BNE Update_Bkg_Palette_Data_Set
    0 Y. ?: U9 Y7 ?. j$ G$ c
  1499. LDA #PALETTE_UPDATE_MIN - 1
    . _/ B0 \& r9 P3 N( p# Z
  1500. STA Bkg_Palette_Update_Addr3 g7 l# J. n1 Y$ J! S  {
  1501. Update_Bkg_Palette_Data_Set) ]" H: c' U( q1 h. p# T
  1502. INC Bkg_Palette_Update_Addr
    4 Y4 \) o! i+ ?: b# Y" J2 T8 ~5 y

  1503. 1 l, @! z7 r6 v# p: {1 w
  1504. Update_Palette_Data_End
    0 S4 o) i* d0 U# Q7 L6 D
  1505. RTS3 y, f2 A8 R0 a
  1506.   h" A8 Z1 n; l5 Y. K' o& p
  1507. ;==============================; N8 s9 x% x. X: \) G8 I. ^
  1508. Show_Music_Text;显示静态文本+ J" C2 S6 N3 z# W
  1509. LDX #$00" m; N- i1 O6 t4 m  ?8 T) y8 F' ~
  1510. Show_Music_Text_Set
    7 x+ @* i+ V, N. p7 _! ^
  1511. LDA Static_Text_Data,X$ c: t% p+ p  c- o$ K) P- v, P
  1512. STA <Data_L
    4 Q2 s( U+ B. M* v$ q% c
  1513. INX
      ^% E% Z+ M9 M9 u
  1514. LDA Static_Text_Data,X4 \7 v+ e" @5 I& O, c" R0 b  r
  1515. STA <Data_H; T/ b- ^8 u7 E  ^. Y7 y
  1516. INX& p1 T" u8 \  i1 B; q' B5 r  K# C& Z/ o
  1517. LDY #$00% {8 \% [6 ~' R7 C- G
  1518. LDA [Data_L],Y7 O! T: |! F' H/ X! A, w+ a' B
  1519. STA <Data_Cnt( ]4 {+ ^* h* ?
  1520. DEX& L! A* \* N0 W. Z6 U0 W. s2 e
  1521. DEX* |# g# V2 U6 S* C5 s* S
  1522. LDA Static_Text_Pos,X
    1 V" u% V* |1 v& `1 r- X) ~, n
  1523. STA PPU_ADDRESS
    & x: y8 z+ q$ H9 ^/ P1 x) f! d
  1524. INX) b. h, |5 B( r/ r) g0 K% y$ a
  1525. LDA #$20
    5 i, O' C3 F* l$ F+ |: k
  1526. SEC
    6 ~+ ]8 a2 x1 X! f2 C- ?! W" l
  1527. SBC <Data_Cnt
    % v% s0 G( R( r1 s, {! g3 V6 Q
  1528. LSR A0 E6 g6 A/ r) _) `# h0 J
  1529. STA <Data_Buf4 F6 p. W4 f$ a* q# B$ K
  1530. LDA Static_Text_Pos,X
    , _7 m+ ]- z# M# G
  1531. AND #$E0
    $ J5 c9 N) m: q
  1532. CLC
    / k  l2 C5 V0 p- a
  1533. ADC <Data_Buf
    . g! Z) q+ w% H# W& O5 {; A
  1534. STA PPU_ADDRESS7 q- C) N, o* |
  1535. INX
      X( t7 a" |7 f
  1536. Show_Music_Text_Set_Write
    ( W. b' d3 `+ K
  1537. INY
    * Q/ e6 p; }7 T6 D
  1538. LDA [Data_L],Y
    4 x+ P, ?" F$ `7 e
  1539. STA PPU_DATA$ h/ H% G% E( N
  1540. DEC <Data_Cnt
    - S% B; R4 U2 D! k1 @, C5 r
  1541. BNE Show_Music_Text_Set_Write
    6 a( e* X, [. ]4 k! L$ k* C$ W
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    " q! Q8 m# r) y4 g/ z
  1543. BCC Show_Music_Text_Set6 l& v7 V3 k% t) h$ B* ~% K5 `, _
  1544. RTS
    ' E5 z( F6 P" h& n2 Y) u  a+ n

  1545. + u  a; O5 t% N$ t
  1546. ;==============================) M7 q# C" g0 _6 a$ v: |
  1547. .IF Track_Name_Pos;显示曲目信息) y- S9 J. T' Z2 t* |  {* {

  1548. & ]1 n; t1 E9 {7 a/ m) [
  1549. Clear_Track_Info- L8 X( n4 n; z) k, v
  1550. PHA$ N" q& F; p8 c
  1551. LDX <Music_Item_Cur3 _5 l. U% I. z
  1552. LDA Track_Name_Addr_Flag,X
    6 B2 v# N. l: H5 U/ @9 E: H, j
  1553. BEQ Clear_Track_Info_End_Ex
    & H3 m4 a8 _4 {+ y0 O2 B" |: K
  1554. PLA
    1 h4 E* ]& Z  ?

  1555. ' B; I2 r9 b: R
  1556. LDX PPU_Cur
    : m7 @, K) u0 o$ X4 K0 [& l% d' T. ?
  1557. PHA% T" k/ X% y, }% E1 L
  1558. LDA #PPU_MODE_CNT_CLEAR
    1 T' }  U5 E0 H5 k2 S# ^+ y
  1559. STA PPU_Addr,X
    7 t9 P/ R8 D0 F8 \; t# u. ^) p
  1560. INX
    $ [2 k$ {' D2 |5 [
  1561. PLA
    & i' W0 d8 V6 v/ X7 N0 Y7 a& X
  1562. JSR Show_Get_Track_Name_Center_Pos4 y; L$ f( ]% ~- P6 ^, \1 r9 u& V
  1563. STX PPU_Cur
    + E# L8 ], H6 k' @) R
  1564. Clear_Track_Info_End& G: V4 d0 W3 t  n. @- \
  1565. RTS; Y& @2 A8 Y* }1 P
  1566. Clear_Track_Info_End_Ex
    ; M8 k  o, E2 E: ~) |
  1567. PLA
    # v  i4 i4 q, \8 e5 A) H+ ~
  1568. RTS
    5 c/ h+ c4 _; T. t& `
  1569. 5 t$ T! H- A! W: ^  O9 |" m) f8 m
  1570. Write_Track_Info
    / ~) `3 }. \2 t- D- [) k
  1571. PHA
    5 s/ ]) Y# l& T. @) A
  1572. LDX <Music_Item_Cur# _, p4 @; S. v5 V5 a: s
  1573. LDA Track_Name_Addr_Flag,X; d+ h* j* p# A9 i8 L5 N
  1574. BEQ Write_Track_Info_End_Ex
    ( U4 h! \' F) g5 s
  1575. PLA6 d3 A+ h! N5 k1 Y# k

  1576. 3 Y5 P/ I: h4 S
  1577. PHA$ y* E4 P) i: u3 w  A# M
  1578. LDX PPU_Cur
    ) f5 {9 Y0 Q) \, @( e  y: `* [
  1579. LDA #PPU_MODE_CNT_LINE, @( P6 z/ {* {
  1580. STA PPU_Addr,X2 @- S" T' Y: }+ m5 M: |( p/ }
  1581. INX1 h  H: |* _' c3 I+ P" f4 P2 J
  1582. PLA( i$ g2 O6 M' l. s7 p& z
  1583. JSR Show_Get_Track_Name_Center_Pos
    , W' i& j8 Y+ H  k* b+ w( j
  1584. Write_Track_Info_Data
    6 L! s0 W/ T5 W$ v0 |7 M( E3 J
  1585. INY
    . c1 y! c, X2 F3 n
  1586. LDA [Data_L],Y
    & p+ U' H; B$ v6 R
  1587. STA PPU_Addr,X) H" X* e/ }  I7 A  f: H0 `
  1588. INX: J! S3 T! C8 Z4 t; ?! R6 V  O, M
  1589. DEC <Data_Cnt9 h6 Z- D7 K- s+ [5 W' Q
  1590. BNE Write_Track_Info_Data
    - v  T$ N8 B$ B* o# y+ j
  1591. STX PPU_Cur' X0 d" X3 w8 s7 b6 G8 X' z
  1592. Write_Track_Info_End
    0 K0 q; O( N6 G: g; r) s
  1593. RTS
    9 ^- a4 C0 x' i/ U( j( b2 N) g  }
  1594. Write_Track_Info_End_Ex. B" o* i1 _1 P! ^" I- u) Y9 l3 F
  1595. PLA
    # B- [' f8 m7 b
  1596. RTS
    8 V$ F$ a, S" x. Q/ @/ ]6 W) E: N0 j
  1597. 2 ~. t- z% P8 Z* f+ _) k/ q
  1598. Show_Track_Info6 c1 k% \2 I% y$ W7 d; e! z( \6 y
  1599. Show_Track_Info_Clear
    : A$ \/ ^0 G$ P2 l$ z6 P2 @
  1600. LDA <Music_Last. e. E  T8 `6 d$ P2 k5 s6 Y

  1601. 8 N9 _' [: \  G4 G# i
  1602. JSR Clear_Track_Info, J3 ~0 s. X9 F7 s! N+ R" x
  1603. ; y' S+ J" B$ s  V' }, T" ]% m# r5 `
  1604. LDX <Music_Item_Cur) d1 i6 A0 S. g
  1605. LDA <Music_Cur,X6 _8 X+ r( w1 K+ Q* ^" V
  1606. JSR Write_Track_Info3 V5 Q/ ?$ b1 N& e8 b1 w
  1607. RTS6 H( f2 o; @; t/ W1 Y0 s
  1608. . w& l! Q4 [8 v  r
  1609. ;==============================
    ! X+ @2 o9 n9 F0 S$ l. H
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置/ ?; T+ w$ Y) e6 Y6 h
  1611. " R8 d+ }& f$ O: s. o2 s
  1612. ;取出集合名索引1 c0 `7 B: Q( X& X6 s2 W5 H
  1613. PHA
    8 ?2 s: o1 w! l$ C4 E3 T5 d) ^
  1614. & D2 K/ L7 O0 j( h
  1615. LDA <Music_Item_Cur
    ! Z( Z0 e$ E) u4 m) `
  1616. ASL A
    ! ?+ Z4 T2 n1 T; @4 K
  1617. TAY
    " j# @0 ~3 H8 n
  1618. LDA Track_Name_Addr_Port,Y; X" ?* ^6 u& {; n! R: v; o7 y
  1619. PHA
    * ]9 Y& M( t, M9 Y' o/ _
  1620. INY, ], ^' q, d  E" G: u0 R* ?' F. u
  1621. LDA Track_Name_Addr_Port,Y4 j6 w9 H) w! U4 w- b' a
  1622. STA <Data_H
    / ]( k3 Q( Q) ]3 n9 v& a
  1623. PLA
    1 t6 R* E. [0 i8 [
  1624. STA <Data_L( R) o) z0 T5 L7 P$ M

  1625. " k! M: E9 J: S/ F- t1 E
  1626. PLA! j1 h9 }7 c5 `- b, q' g

  1627. & Q+ f# R  c" S0 T( D  J
  1628. ASL A7 G7 h" }! [. ]
  1629. TAY
    % D: C* Q$ t# k: h; Y& A6 m4 r1 e7 @
  1630. LDA [Data_L],Y
    1 ~( g/ H4 e" E. P
  1631. PHA1 [( m; P' i2 }' [4 ~( M
  1632. INY" Q8 L3 [  V% r+ a+ D2 s
  1633. LDA [Data_L],Y
    . ?- g0 E" @/ r; s8 S1 l
  1634. STA Data_H
    ' a+ Q# O. j! V4 x4 P, v
  1635. PLA- ^9 c9 ?& \: F  b" R+ B' V- o
  1636. STA Data_L
    % W0 g; e, [* h9 i

  1637. : n+ D. V. G2 G- I
  1638. LDY #$00
    ; g0 _& `+ T, ~5 w6 k1 E  m' k$ S/ g' D) p
  1639. LDA [Data_L],Y2 x" M) @% H& l0 H' Y
  1640. STA <Data_Cnt! r( D6 W+ h2 b6 k4 l
  1641. LDA #$20
    * U$ `. O7 ?. y" i3 H: H% \
  1642. SEC
    - A" D8 `) t. Z" l5 I
  1643. SBC <Data_Cnt
    1 d7 G0 X* X1 u- m! i9 [
  1644. LSR A
    6 S' H8 _% G  ~% ?# j8 c# ^! r
  1645. STA <Data_Buf% ?: V; K" W2 Q8 D8 |! O5 W
  1646. LDA #HIGH(Track_Name_Pos)
    9 l7 O1 ~1 Q" U+ d
  1647. STA PPU_Addr,X
    6 l! F4 X' ~& x" U" k9 S
  1648. INX5 A9 U5 |3 v# r6 }. I
  1649. LDA #LOW(Track_Name_Pos)# d& l# m1 W7 ]/ Y9 o
  1650. AND #$E0
    5 i) u2 C. r4 y- Y( m% V
  1651. CLC$ U8 s8 Q9 G( g
  1652. ADC <Data_Buf
    ' ]( y8 l/ F' T, _% E. C
  1653. STA PPU_Addr,X
    1 E0 C/ T; r9 W9 h0 g9 ~
  1654. INX
    ) ~7 Q1 \' v8 c0 M6 ?& ~# A+ L
  1655. LDA <Data_Cnt+ P- s* l6 k* y4 Q6 ~
  1656. STA PPU_Addr,X
    6 `* b2 N0 U# I( B/ d3 q
  1657. INX
    0 A7 h( s" D7 H: M( [
  1658. Show_Get_Pos_Center_End4 \4 y7 y4 M* B; @
  1659. RTS9 {! P/ E3 b& T/ L
  1660. .ENDIF
    % t: S* m4 z0 N* s! c6 Z
  1661. . q! @. `; N% X6 A  ^0 I
  1662. ;==============================
    ! r# F2 G1 T( L, E. Q( l# _5 o" x
  1663. ;音乐端口清除- K6 w% }  k1 X6 t
  1664. Sound_Data_Clear
    * h3 x$ V! F; ^# B; V
  1665. JSR Sound_Port_Clear5 j8 C: {+ b3 W) y4 j4 p
  1666. JSR Sound_Ram_Clear+ v2 }- \' v& [$ W9 y9 X
  1667. RTS8 i8 |. q- D, S8 K$ q% b

  1668. * E" N% Q% j3 }: S1 E8 N
  1669. ;==============================
    $ f# |8 V" w" X
  1670. ;音乐端口清除; f; _. [4 r3 M8 [6 r3 T. f! Z. D
  1671. Sound_Port_Clear+ S6 Z% r" C2 S- {) `3 P4 P! V
  1672. LDA #$00# X# r( ~; e1 G# `; e' ?! h  F1 r7 K
  1673. STA APU_STATUS* ]  z* m2 E1 A0 H% q# b
  1674. LDX #$00
    0 |6 |* e" K& P* G
  1675. Sound_Port_Clear_Write
    5 k$ O! S; g1 n- [# ?4 I
  1676. STA $4000,X7 z; B( s8 l, b2 X1 w4 X
  1677. INX
    2 e$ [6 ^) |  a2 n) O8 E, Q! Y
  1678. CPX #$145 ^% |" R; \1 |8 E  M- \
  1679. BCC Sound_Port_Clear_Write
    5 j1 o7 u3 s4 Z
  1680. RTS
    / O% S, f) ^. |. `' }7 [% L

  1681. 2 V" r/ ]$ S, w" s1 e; z" H. e
  1682. ;==============================" r; b+ f7 x' c6 b) S- Y
  1683. Sound_Ram_Clear;RAM清除
      ]5 Y3 W0 c9 U6 S
  1684. LDX #$00# x6 u0 {) L, W
  1685. LDA #$00
    , n* e- @8 E* M2 v1 X
  1686. Sound_Ram_Clear_1
    2 T8 n. K, W4 j
  1687. STA Sound_Ram_Addr_1,X2 b0 A4 k, ]4 Y9 L; ^8 D. S
  1688. INX4 M& |* d( n  T. k  l
  1689. CPX #Sound_Ram_Addr_1_Size" z* g  \8 ^6 W$ K# H9 T
  1690. BNE Sound_Ram_Clear_18 Q) i% Q, U. u% R' p. c/ u
  1691. LDX #$00% v/ ~# \8 X& x+ q# `$ [; ?- \+ X
  1692. Sound_Ram_Clear_2! {1 Q/ ?' _7 ]; J- |
  1693. STA Sound_Ram_Addr_2,X2 T2 J, Z- Y9 Q
  1694. INX  Z8 U1 k3 i& y* c: Y- A0 y
  1695. CPX #Sound_Ram_Addr_2_Size6 i8 M' P# }/ B4 U6 j. v8 B
  1696. BNE Sound_Ram_Clear_2" o( y) x. R6 T9 D9 q
  1697. LDX #$00! _: t8 u  J! M9 C; X
  1698. Sound_Ram_Clear_3
    2 M4 `3 E+ ~) i
  1699. STA Sound_Ram_Addr_3,X
    0 W! n5 d# t* ^
  1700. INX
    ( u: @0 x. X# t
  1701. CPX #Sound_Ram_Addr_3_Size
    + P9 o4 c  D- X- o1 q
  1702. BNE Sound_Ram_Clear_3
    5 ~; a' a$ {1 L* N: k# K
  1703. LDX #$00
    # F  u. N6 p3 K; J; ~' T  |
  1704. Sound_Ram_Clear_48 G0 t& f5 y+ N: z& Y: P1 C( h- ~
  1705. STA Sound_Ram_Addr_4,X% p% z) Q; T4 e, ?2 f
  1706. INX
    6 |% R: J" ?' h  q. ^) t
  1707. CPX #Sound_Ram_Addr_4_Size
    4 b; ^1 o8 c4 E1 v5 ^
  1708. BNE Sound_Ram_Clear_4
    1 u7 }% [, c' k5 }
  1709. Sound_Ram_Clear_5
    2 \- k7 q; \" q- x/ C9 f! X! L$ w1 s
  1710. STA Sound_Ram_Addr_5,X
    # ^4 i0 @: v" M1 r+ I- V3 t
  1711. INX5 p! N( B( ^* Z& N
  1712. CPX #Sound_Ram_Addr_5_Size
    ) g; F! w( S/ X8 C
  1713. BNE Sound_Ram_Clear_5) w5 L! g' _' P0 Q% T
  1714. RTS
    * @  A3 K* }4 f, f4 D- y

  1715. 2 V- I, A/ Q# B- F
  1716. Get_Music_Collection_Name
    + x" G( d" V6 |. G& |+ p
  1717. PHA
    , s  H* b2 x! ^# s, o
  1718. LDA <Music_Item_Cur
    , G# v& t% ^$ k7 n
  1719. ASL A, _* j' ~& S$ v4 ]1 ?
  1720. TAY
    5 Q# m/ g% x- v% z
  1721. LDA Music_Collection_Name,Y
    % n( h2 ^% o- p! O
  1722. STA <Data_L4 F3 f4 p0 I4 X1 w4 ?3 K- ^
  1723. INY
    6 }8 s2 s$ s& F- Z. f' M9 b' ?5 |
  1724. LDA Music_Collection_Name,Y3 I. A$ p) n6 X+ ~
  1725. STA <Data_H6 z7 x2 L5 t# P  {/ X6 M& |' g* Y
  1726. PLA: H, L( z, b6 l% k) `
  1727. RTS
    ; p8 G9 B. w0 j8 A/ c  |
  1728. " {, z7 h' {, V6 X
  1729. Set_Sound_Total, l! f1 z+ l4 j- Y
  1730. LDY <Music_Item_Cur$ w6 S/ X" {& A. \# m
  1731. LDA Sound_Total_Port,Y7 N; E/ n% z3 I9 a
  1732. SEC
    : |3 F0 B! H, p2 T& \0 v2 {/ l
  1733. SBC #$019 y& `6 _; T; j) `) d! R1 M5 I
  1734. STA <Music_Total
    - s# G* [5 x: L* t  [
  1735. RTS
    ' u5 u: W- L! X. e7 d9 c4 f
  1736. 2 B5 g* q. V3 j/ W
  1737. Get_Sound_Start
    8 V% P+ V$ e/ L, e
  1738. LDY <Music_Item_Cur/ f/ ?9 i' }; b% m; a* U" C
  1739. LDA Sound_Start_Port,Y0 L4 [7 L0 W0 c! u% Z
  1740. RTS3 A8 p4 r3 f) Q

  1741. 7 U: j# }/ D' q6 o7 ]# U0 Y2 J
  1742. Set_Sound_Init_Port8 Q* j- v4 ~8 j' t1 V& Y, Z
  1743. PHA
    , s  o2 ?; g+ L+ s
  1744. LDA #$20
    : z& e1 @3 e/ U: A$ S
  1745. STA <JSR_Addr_Op
    4 o8 Q) y6 P( N- p7 E* u) b2 Z* W
  1746. LDA <Music_Item_Cur
    7 B+ g; {. t" C0 b. A
  1747. ASL A3 A- ~+ z: |5 D7 l3 |" Y! Z
  1748. TAY
    , G7 O* {: y, U3 G
  1749. LDA Sound_Init_Port,Y3 |+ L9 ]! X  ]' I. {; |3 Y
  1750. STA <JSR_Addr_L% O7 g* r. X/ P- u
  1751. INY
    8 |1 ~5 F% G9 N8 S7 j, Z
  1752. LDA Sound_Init_Port,Y
    ; J" E$ P/ C, P; z
  1753. STA <JSR_Addr_H
    3 R& l% j8 s+ `! l
  1754. LDA #$60
    2 R0 V7 r4 R( w+ ~5 c
  1755. STA <JSR_Addr_Rts  Y0 t5 }& t7 q. D0 P2 D+ P: c
  1756. PLA
    1 G  R% I6 c# s% P3 a/ }. h7 X
  1757. RTS
    4 m3 f% F2 B2 r  H; B! X7 s
  1758. - D0 k; q" [8 u& k3 `4 @1 V
  1759. Set_Sound_Play_Port
    5 W$ W* P! F  K* K
  1760. PHA% N- W% i5 {) A2 d  Z
  1761. LDA #$20
    0 s5 A" j7 Q0 U8 d8 H
  1762. STA <JSR_Addr_Op8 B8 k7 q, z% ~5 Y. H' p8 E
  1763. LDA <Music_Item_Cur
    - R: b! z0 L/ x
  1764. ASL A
    3 {" t: C% R# _8 ~6 P
  1765. TAY4 _( q) [6 i% X1 q( G! b* D
  1766. LDA Sound_Play_Port,Y4 t" c) n$ F9 R* a( @2 N& {
  1767. STA <JSR_Addr_L. g& D3 k7 P+ x1 j7 C  s2 C0 c
  1768. INY
    - k/ V) g1 `9 g3 d8 I
  1769. LDA Sound_Play_Port,Y! K7 x4 e+ \+ r1 c3 O! K  D
  1770. STA <JSR_Addr_H
    8 r) O4 z& B9 H4 [0 E
  1771. LDA #$605 W, n# B/ ?8 |
  1772. STA <JSR_Addr_Rts$ T* W5 w) u$ f1 ~" w4 ?
  1773. PLA
    2 u" x  r& g! I) Z2 |9 Q. f  h
  1774. RTS+ D& ^  M* I, U

  1775. % E- i" p5 m# u
  1776. Set_Sound_Reset_Port$ U- [% |5 X1 i$ H
  1777. PHA
    * P+ r: n3 o* L6 H
  1778. LDA #$20
    ( T0 i* K  k7 _6 \$ L& L; O4 y# q8 ]
  1779. STA <JSR_Addr_Op% }0 D: L- r) ^! }
  1780. LDA <Music_Item_Cur
    # A. l( Z8 e# ^0 }6 f2 i; {1 u
  1781. ASL A
    ! |* f+ `$ @5 X) G5 A% a
  1782. TAY. v+ F, S0 r9 P  I: U% O. a
  1783. LDA Sound_Reset_Port,Y1 P# u$ O' U9 u# {/ H8 [% V
  1784. STA <JSR_Addr_L
    ' W$ T, A# f. l, o+ E  z
  1785. INY
    . |4 R( E9 L4 g# q. Z
  1786. LDA Sound_Reset_Port,Y
    9 E3 o6 v1 l) p% ^( \  u" A
  1787. STA <JSR_Addr_H. _* B) I5 V" [
  1788. LDA #$60% n# h3 [" m% w8 ]$ V
  1789. STA <JSR_Addr_Rts0 @3 u4 l  Q2 L/ w
  1790. PLA
    4 F* E9 V4 P' |7 O9 g3 w
  1791. RTS
    - }: y- L. K- V& \, B. I
  1792. ' C% U# b! ~& t: \" |
  1793. ;初始化音乐bank& y6 V# b2 r6 b% d5 c8 ~/ L4 }
  1794. Init_Sound_Bank
    , E. o; u6 ]% y
  1795. LDY <Music_Item_Cur
    & p1 o8 Z4 y" w1 X0 o4 D9 l" j" P
  1796. LDA Sound_Bank_8000,Y
    0 v- o3 _5 `! ^& |0 T# B
  1797. STA <Music_Bank_8000
    , H' T" D' k0 }$ Z& u! s+ H, J
  1798. LDY <Music_Item_Cur
    : f% V3 i, Y5 W8 s
  1799. LDA Sound_Bank_A000,Y2 J1 N; z" q. `$ A  V, l) E  e
  1800. STA <Music_Bank_A000$ b: E- F' k# q* Y2 O4 a4 V8 W3 r
  1801. RTS
    " A* K+ D* C3 C9 |. d1 B6 `" @. i
  1802. + r0 n0 u+ P. i& k, {0 d
  1803. ;==================================================: W) I' c% B9 j5 V7 u/ `0 ?
  1804. Sound_State_Reset;音乐状态重置
      j" w- x+ H% c. ^/ U
  1805. JSR Music_Bar_ReSet        ;重置音乐条$ z+ ]# v9 d9 ^
  1806. JSR Time_ReSet             ;重置播放时间
    4 h, x$ Q$ \4 {! W1 w. ]) _

  1807. - A) \4 F% X& p# b
  1808. LDA #$002 G2 B2 @2 @+ e
  1809. STA <Music_Stop_State
    1 {0 `: t% H+ s: ^* m. |: P
  1810. JSR Music_State_Show       ;显示播放状态+ K3 l9 {0 `0 I- r

  1811. / x9 O) h! `5 A: Z, r
  1812. .IF Track_Name_Pos
    4 @4 e" L' K. ^% y" o( f
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    * X2 n# J& R, j- G) W9 H" @3 z& f
  1814. .ENDIF% [9 x7 C- ?7 d) O; l3 K6 E' B
  1815. 4 t. H, p# s& i
  1816. RTS7 A; j- b/ E, C) @0 N# D7 _9 \

  1817. 3 H; r5 U6 L* J2 w$ N+ y- g: b
  1818. ;==================================================
    ' _1 j/ A" f0 G3 g6 I7 ^
  1819. Sound_Init_Proc;音乐初始化处理
    ) w3 ~) t! a) ?
  1820. PHA! P; q3 m0 i( W
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址: `! R! X& C. m4 \  ?3 [
  1822. LDA #$00+ S# }# E/ J* H4 J) d; s( [/ u
  1823. STA <Scroll_H               ;重设水平滚动: d* Q( t: C, g7 G3 g) H; V
  1824. LDA #$0F4 f$ u1 f3 m4 {: e* J8 L
  1825. STA APU_STATUS3 |  {. V4 L, K; n6 T+ _
  1826. PLA
      Z& u# @- ]6 ^  G) w. f/ j
  1827. JSR Sound_Init             ;音乐初始化
    6 e1 z$ j( {* p. o# |
  1828. JSR Sound_State_Reset      ;重置音乐播放状态+ h& w3 ^! h7 q( e
  1829. RTS' i8 E/ H) H9 G" Q. b2 r

  1830. " ^' O( w2 a! Y) W* O( ?
  1831. ;==================================================
    , e/ F3 O9 e1 l5 ^
  1832. Sound_Play_Proc;音乐播放处理6 b8 o9 O2 S/ L1 V9 R0 r4 D
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址& c. X4 |3 P* Z; g- y" G1 p
  1834. JSR Sound_Play             ;音乐播放% A$ E9 |: s& p* l
  1835. RTS
    5 @# \7 F  c3 [- Z  d1 L6 t

  1836. 3 ]) S: o* F, i5 z  Q
  1837. ;==================================================
    1 m) p( M3 V' |  w& Z
  1838. Sound_Reset_Proc;音乐重置处理9 ?. |+ P9 B+ p; K# T
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ' ^5 D3 W6 j8 V! q# N$ Z
  1840. LDA <JSR_Addr_L
    % J8 q  _' h% k0 @/ S8 c
  1841. ORA <JSR_Addr_H9 G' `: r( v. j5 L9 v; ~. U
  1842. BEQ Sound_Reset_Proc_Default
    9 f; Y4 v4 }( q* V& b) }4 ?
  1843. JSR Sound_Reset            ;执行音乐重置6 o1 Y/ S: U5 a  k! _
  1844. JMP Sound_Reset_Proc_Init_Sound
      m, v* q, G5 O" {# z- P' A. ]% @
  1845. % }/ v. d* B6 M+ N; Y7 W
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    1 N2 K  O* D. n6 |! }

  1847. 9 S2 ]; w1 }' Z6 w
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    : L# g' [' ]2 t/ a+ \1 i) B7 s4 ^3 l
  1849. LDA #$00( X4 e' @: v/ l3 {% g6 y" `" e
  1850. STA PPU_CTRL; I- \, @0 p3 M; D( |4 M

  1851. 5 N' O0 I. I- z" B
  1852. JSR Sound_Data_Clear
    9 `: S  g* z$ t/ A' O1 `+ c

  1853.   I  o5 U2 F9 E& J' Z- Z& M
  1854. Sound_Reset_Proc_Default_Wait1 t' ^4 u) t. b7 _% S
  1855. LDA PPU_STATUS
    : S4 |( f4 k& i) P8 f, G
  1856. BPL Sound_Reset_Proc_Default_Wait
    # _/ S( b% |" \' _& V

  1857. 8 V! T, M0 l5 {, F) U5 ]
  1858. LDA #$00
    " P1 W) W# D& e9 d. }% K
  1859. STA PPU_ADDRESS$ O; _3 e8 Q! ^+ W, ]( G+ d
  1860. STA PPU_ADDRESS
    9 E  j+ c3 ]( n, K
  1861. STA PPU_SCROLL( N, `0 X$ `( |
  1862. STA PPU_SCROLL
    % h8 X7 B9 B4 Q# Q+ C5 p3 T

  1863. ( c+ K7 j6 V6 `; V; O% j% j8 f5 i
  1864. ;恢复PPU控制
    $ m* p  `" s0 c# y
  1865. LDA Screen_Ctrl# e' F' D# Q" o& d
  1866. STA PPU_CTRL
    4 |0 [1 T, P5 U5 \1 R

  1867. ' t" r! x+ e/ b* O
  1868. Sound_Reset_Proc_Init_Sound1 O- X+ e, u" |5 k
  1869. LDA <Music_Stop_State
    , X5 c/ C  U: u2 \5 C. o
  1870. BNE Sound_Reset_Proc_End
    2 }* d8 r9 ?; A5 Y
  1871. LDX <Music_Item_Cur) J  Z/ g7 }: ~( r8 V/ r
  1872. LDA <Music_Cur,X3 y2 B% ?; D4 T6 f; N- j7 c) s* k* Q( q
  1873. JSR Sound_Init_Proc
    ! w8 B# K# |: V
  1874. Sound_Reset_Proc_End, `  c: @, l! @8 [' L  n  q& V, Y
  1875. RTS0 }  {( d0 @. l  j4 P
  1876. % s$ s2 I! ], C8 ?# V
  1877. ;==================================================6 u+ [1 q0 L- Q; F' E) M1 l
  1878. Clear_Item_Text;清除页项目
    + x! W0 s( f/ W, I; a( }! S+ S
  1879. LDX PPU_Cur) O9 a$ U) R  U6 K
  1880. LDA #PPU_MODE_CNT_CLEAR
    7 Q# Y( d- }, ?) F
  1881. STA PPU_Addr,X. l8 V& d4 [, {' Z4 `" L- ]8 u
  1882. INX  y+ A8 S" t5 c0 N9 x% K

  1883. 2 H& L+ }3 ?3 F- B
  1884. LDA <Page_Last
    ( r9 b" ?/ b5 R
  1885. SEC
    " C  d7 C5 ]* H+ z" z. [
  1886. SBC <Page_Last_Index
    " [. r. N/ H$ ?$ y) P! D
  1887. ASL A
    : F- i5 @  L3 O) S( C
  1888. , p( B1 I$ x4 j# i; d$ ]
  1889. TAY4 j8 g& H+ Z4 ]' r/ S0 I
  1890. LDA Item_Pos_Data,Y
    ; C, Y8 d7 a: T. ]) f0 k
  1891. PHA1 {9 O) V* K, i% m& i% L
  1892. INY$ A" ~4 `( Z; ~3 w2 t
  1893. LDA Item_Pos_Data,Y. x, B" p) t6 b5 L! C/ W
  1894. STA PPU_Addr,X
    3 E4 c0 _' o1 |- I
  1895. INX' B' P; `: S8 g
  1896. PLA  g  e" S! O9 z
  1897. STA PPU_Addr,X* Q( v$ J) X% h9 q$ T3 S
  1898. INX$ A. |# l& V  r/ Q& s

  1899. 8 f! E2 r! L; _2 ~1 z$ `( V
  1900. LDA <Page_Last/ |. G  r  c. ^0 ~! v* h  b
  1901. ASL A& ]/ x; s; t& ]" k  N
  1902. TAY, n4 k# v- b' |, F
  1903. LDA Music_Collection_Name,Y
    ! m4 \' }/ a+ ~( Z  D+ F4 i
  1904. STA <Data_L
    0 v  a+ @4 v. B  S, ~5 ]
  1905. INY  }+ b& v+ }2 e& c- V1 `% E/ j
  1906. LDA Music_Collection_Name,Y+ |+ P1 q; k) E, W( P
  1907. STA <Data_H
    3 e7 k. N; o2 T' M, m

  1908. * M& {& s; B* r& F
  1909. LDY #$00, s: }* L6 x* X, |
  1910. LDA [Data_L],Y
    ! o  B/ _$ M3 O
  1911. STA PPU_Addr,X" K& f* Z" O" D2 P5 o9 C& K
  1912. INX+ H* k/ E+ @$ j8 u& H3 p  r" l) S; u6 K
  1913. Clear_Item_Text_End
    6 U  [1 v( H7 G  ^  d  y
  1914. STX PPU_Cur: g, @1 z8 w! ?1 |; s
  1915. RTS1 Z% y, p, ^4 A7 e) Z8 _) {1 ^: f

  1916. * T) g5 X$ e# N% g8 |
  1917. ;==================================================6 j& D2 o& V( a& }. G
  1918. Show_Item_Text;显示页项目
    / p2 M0 a& k- U6 O5 v/ }  D/ a
  1919. LDX PPU_Cur
    * H. [- L# B, o
  1920. LDA #PPU_MODE_CNT_LINE
    # h+ z; y# t. L7 E! l) B
  1921. STA PPU_Addr,X
    : `1 U" l( F2 q2 b+ v8 M3 y
  1922. INX& I6 d) y/ `( Y! _" ]
  1923. LDA Page_Cur* d( w& u& Y7 T. \) ?) {: R$ b
  1924. SEC$ Q- u  R3 s; l, Q0 O9 X
  1925. SBC <Page_Cur_Index
    4 y' N/ v5 F) P( {2 t) ]
  1926. ASL A& L% G  J3 S+ L4 A
  1927. TAY7 l# J" N+ L$ S2 H
  1928. LDA Item_Pos_Data,Y3 D/ c& Q, |5 p) y; u8 Q6 I8 U! T
  1929. PHA
    7 l) Q9 U' D4 Z  i6 z. G
  1930. INY
    . c6 B/ I7 P% J6 D; Q! G
  1931. LDA Item_Pos_Data,Y# c4 }# O0 ]; [1 U" _( t
  1932. STA PPU_Addr,X
    " Y( _: x3 c+ R$ H7 B
  1933. INX% ^' ]5 j2 x+ ~/ P6 Q
  1934. PLA
    ) s5 z6 U  q4 [' j
  1935. STA PPU_Addr,X, p7 J' U2 h) q9 t) e- `
  1936. INX
    2 f* t! G0 K! f

  1937. ) r+ C: W1 z. ^/ J) S
  1938. LDA Page_Cur
    2 i8 N$ c' ^8 d0 ^5 ^: ?1 |
  1939. ASL A
    ) F* t' v7 `; U6 e  \* Z
  1940. TAY7 ]/ @# _# m& Z3 q8 M
  1941. LDA Music_Collection_Name,Y
    / j; }4 x* L% I2 f  K
  1942. STA <Data_L3 A6 O$ S8 m. {
  1943. INY
    6 X/ \; C; \* \) u
  1944. LDA Music_Collection_Name,Y
    4 ], V( n6 Q& R- i* ]3 I% s
  1945. STA <Data_H
    $ U7 a; T  ~4 d2 N7 u0 F
  1946. % Q! Z' G0 i" \8 e$ ?: _; [
  1947. LDY #$00* }! R9 V) O3 m; _- q( ]3 U
  1948. LDA [Data_L],Y1 P0 }  P* ~7 \" u$ x  O  f- {2 @
  1949. STA PPU_Addr,X
    6 l6 ?: e; d; Y8 ]) E- J
  1950. STA Data_Cnt, X7 Q8 Y1 F( q* M4 q
  1951. INX
      C7 Q8 h, `" y# P) p

  1952. - I2 A$ I5 `1 {% e8 R- V
  1953. INY* ]8 ~- p/ Q% C' r
  1954. Show_Item_Text_Write/ F8 I% V  b# P3 @# H) `. G
  1955. LDA [Data_L],Y
    % h2 q1 I; v0 m3 V; x
  1956. STA PPU_Addr,X8 S1 c& d/ V3 d  ]% Z% R, U4 ?
  1957. INY
    4 k& |! _  b4 t. v# y8 I- v
  1958. INX
    % R- J! s$ U# h, T6 t$ w# ^% }
  1959. DEC Data_Cnt0 q3 w% E9 {, {- c. o8 _
  1960. BNE Show_Item_Text_Write% O# c1 H& i$ b; V( \

  1961. % E# J: s: }  U! o
  1962. Show_Item_Text_End7 W" Z* @. q- }) P/ Z1 l
  1963. STX PPU_Cur* Z6 W, b% @4 w
  1964. RTS4 m2 Y3 ^8 z+ X# U0 \
  1965. ; |( Y/ R6 U/ k: B5 K& E* p% V; C
  1966. ;==================================================+ Z. F5 z8 E" D, Z
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    5 o8 Q8 @1 |& B( \6 G- j
  1968. STA <Data_Buf1 ~% J4 e" ~  i2 P4 N$ v, G# a/ {( z
  1969. LDA #$009 j! E2 h- y8 ?
  1970. Get_Page_Index_Calc
    1 A2 f0 f& a! I' Q: Q
  1971. CLC1 ?/ I0 J- O, s3 v
  1972. ADC #PAGE_SIZE6 E+ I# U3 {1 O" o3 F
  1973. CMP <Data_Buf* e& R! T6 U; S  w8 ]
  1974. BCC Get_Page_Index_Calc
    9 o4 Z  {+ e7 `% Q5 f- G
  1975. BEQ Get_Page_Index_Calc_End
    ' e6 d- B& W) E
  1976. SEC
    4 }$ a* v' i' Q; z
  1977. SBC #PAGE_SIZE
    % @' ?! O5 V1 P1 v
  1978. Get_Page_Index_Calc_End
    : d4 r( M8 N0 D9 v- t
  1979. STA <Data_Buf
    5 u/ _  ?: J+ l$ w) @  ^
  1980. Get_Page_Index_Cnt
    0 _+ k+ a% H) x! r% x
  1981. LDA #PAGE_SIZE
    6 H3 o2 V0 g  k7 T/ Q
  1982. STA Data_Cnt
    0 J. |8 w! r- B5 m
  1983. / R7 L% r4 ?6 M0 ~* h  }6 [: W
  1984. LDA <Data_Buf
    6 q( a: s) Y4 R4 m
  1985. CLC8 P) t( }/ F! n) z
  1986. ADC #PAGE_SIZE
    , ~; \3 I7 w" p& j; Q$ B3 z# W
  1987. CMP #ITEM_MAX_SIZE
    ) t/ `% E* U8 |& C
  1988. BCC Get_Page_Index_Cnt_End( W2 N# W; U9 g, f
  1989. 9 _( ?; P7 l" v, S( D4 l# @$ J
  1990. LDA #ITEM_MAX_SIZE7 s+ @+ `% a2 ]* d" n. H
  1991. SEC
    , A% m) T( D, V/ O: Y
  1992. SBC <Data_Buf4 \7 H. M, m5 I  n9 x
  1993. STA <Data_Cnt
    ) P# n7 S6 U1 J/ x2 T
  1994. $ {. N1 M( L3 y9 n
  1995. Get_Page_Index_Cnt_End
    $ t1 a( S- K$ r. e( l
  1996. RTS
    8 t- D5 b9 u3 U4 F+ s" X
  1997. % T- S0 V8 J" P
  1998. ;==================================================% K( f# F: |; N+ G' i% N
  1999. Get_Last_Page_Start_Index0 q& d4 g. b7 x
  2000. LDA <Music_Item_Last
    5 X7 F2 D. m/ g* M5 V
  2001. JSR Get_Page_Start_Index
    & T% ~8 P7 C2 r% e5 i2 O' b
  2002. LDA Data_Buf
    : P) D* G# c2 h
  2003. STA Page_Last
    6 g) E2 V0 R1 }3 i3 b
  2004. STA Page_Last_Index
    . w! I/ f3 i2 P) S3 q& w7 z% f
  2005. LDA Data_Cnt
    : {9 Y- d, k5 {  W. T3 i
  2006. STA Page_Last_Cnt$ L9 w/ [+ }+ Q  l; o& u, E
  2007. RTS7 V+ `' R, G, ]) F3 M$ x
  2008. # N4 d( r( X" l0 V( x" e# P
  2009. ;==================================================# \1 D% m  J2 d" G: C
  2010. Get_Cur_Page_Start_Index( j9 J  {+ r0 {+ d
  2011. LDA <Music_Item_Cur
    ) Y) p: ^4 z+ Z8 e( B: D
  2012. JSR Get_Page_Start_Index7 h% H6 u& M, |0 ?( v8 D3 q
  2013. LDA Data_Buf
    : m* B0 b- C; F
  2014. STA Page_Cur
    ; r' S# S% ]% n7 j2 I6 e
  2015. STA Page_Cur_Index  n, o; e9 q  F) E2 }8 S( @! ^
  2016. LDA Data_Cnt
    ! k$ E8 R8 z& q
  2017. STA Page_Cur_Cnt4 J4 _5 V( Y- U: Y6 Z* y8 H" g
  2018. RTS
      [1 d9 @3 S4 t. Y

  2019. 8 v; p( f5 C; E6 ^8 B
  2020. ;==================================================/ g6 }  R) h1 w1 u' P9 o, E: Q
  2021. Show_Page_Text;显示页文本
    6 T7 u2 T, G* w' Z* L6 y! K
  2022. LDA <Text_Disable_Flag
    7 |0 U4 S- ^3 z+ O
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    3 U- F7 j# j( N* R/ @. d
  2024. STA <Text_Disable_Flag
    + h. N" ^4 t# h
  2025. ; a8 _% P, w% G; d6 o: }
  2026. JSR Get_Last_Page_Start_Index
    9 n7 c3 b  |( Y/ z- d# ?8 I
  2027. JSR Get_Cur_Page_Start_Index
    4 `( X! {9 q8 u3 i* O; O1 P9 H+ T

  2028. 7 g5 r& I% l% t3 r% N1 y
  2029. Show_Page_Text_Set7 `$ [# s4 y( K6 V3 t

  2030. ' W' w6 s& P# a, r8 }' u9 N
  2031. Clear_Page_Last_Item;清理上一页( g6 l" F) c/ y% n
  2032. LDA Page_Last_Cnt
    , }1 {5 b7 E7 h2 t- o
  2033. BEQ Clear_Page_Last_Item_End  ^, z4 b/ M4 i. Q' s: @
  2034. JSR Clear_Item_Text8 G& I  J+ y  a
  2035. INC Page_Last" Q" i3 ~& H9 l; b
  2036. DEC Page_Last_Cnt
    . I' l, j, b4 d" W2 F1 `7 r* R% }- _
  2037. Clear_Page_Last_Item_End$ ]. P9 L0 R% l

  2038. ! ^1 d( Q' ~  v2 Y) v
  2039. Show_Page_Cur_Item;显示当前页
    5 g1 q- G' x/ P( |2 W2 N8 e
  2040. LDA Page_Cur_Cnt
    & ~2 N+ N1 Q5 c% _
  2041. BEQ Show_Page_Cur_Item_End# g+ `9 V& {  c" V, {: D5 q) V0 N
  2042. JSR Show_Item_Text
    " Z( V* c) C3 v
  2043. INC Page_Cur
    " J- E" N; _" E5 [: A
  2044. DEC Page_Cur_Cnt
    4 p0 B2 t9 B1 B3 d/ }! E
  2045. Show_Page_Cur_Item_End0 q$ `* l) j" V* |# d

  2046. ) j( r2 \: n6 C5 ~2 N$ D
  2047. INC <Time_Wait_Cnt0 |4 S6 X" h0 F4 N
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    + a+ r; l2 V- T* f! a% }; }
  2049. LDA <Time_Wait_Cnt2 @! i2 `. P$ i- D9 Y- N
  2050. BNE Show_Page_Text_Set_Wait
    % r& B$ z. @4 S! ?: k: d$ {. ^' O
  2051. 0 x' p6 Q! \$ A( t
  2052. LDA Page_Last_Cnt
    ( w- o( P3 M/ @) w
  2053. ORA Page_Cur_Cnt
    4 ?" V$ @* Z, M" C3 t% U  ~8 r9 B9 E
  2054. BNE Show_Page_Text_Set. Y. U; m3 d6 Z, b# Y) c
  2055. LDA <Text_Disable_Flag- y" x  s; _* \; D/ j  Z
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    ' x8 ^: {- A2 P
  2057. STA <Text_Disable_Flag
    6 J( E4 H$ n# {" P) N" `3 }! C
  2058. RTS
    0 q9 u7 l9 S6 I# v8 e

  2059. ; E' X$ O7 w) q( N) B# O; N
  2060. ;==================================================
    4 V) J0 [9 J! ?$ `
  2061. Last_Item;上一项. R. n3 g$ g+ L7 d1 c; _, v3 f
  2062. JSR Clear_Last_Track_Name
    * Y3 N( i2 s$ E' G  Q1 y! p7 _
  2063. JSR Disable_Text_Draw
    $ y4 [9 f+ b7 z: T
  2064. / ]% f6 q$ c7 t; \0 ?3 q
  2065. LDA <Music_Item_Cur1 ]; c' }& I+ c  `2 |) v& @
  2066. STA <Music_Item_Last+ M. v. C! r( m/ k, |

  2067. ; F6 S$ c2 {+ M2 O+ V
  2068. JSR Get_Last_Page_Start_Index
    + P0 X5 e+ t7 D. a
  2069. ( T4 Y( l- A! O' i( ?- |" d
  2070. LDA #$006 ^$ ]- z: W- d2 K4 e* G
  2071. STA Data_Buf* ]2 {5 X' Z. J1 v# d5 d9 A
  2072. * q4 y& C# K1 i3 f: S. ^
  2073. LDA <Page_Last( ~* }" d: [4 U  ~
  2074. CMP <Music_Item_Cur! R6 U9 M/ ]8 B' U1 ~. J  p
  2075. BNE Last_Item_Begin
    - E9 L0 ]5 h) v) W8 U7 u

  2076. & i% J. n( T) M7 B
  2077. LDA #$01$ F+ k0 n  I6 I8 |! f: i
  2078. STA Data_Buf
    & o2 e5 Z& C) B1 d* N2 i6 V
  2079. Last_Item_Begin
    7 o' F) C; D# {* T& Z1 F, J
  2080. LDA <Music_Item_Cur  X2 @" b5 i" |; ^; F& {$ A3 H5 N
  2081. BNE Last_Item_Set
    ) n8 h% o2 b6 J
  2082. LDA #ITEM_MAX_INDEX + 1
    " A% _$ D/ w# @& v" o
  2083. STA <Music_Item_Cur$ i- `" |2 D( D) s! H( S
  2084. - x3 m; ~7 ^, w/ K3 S
  2085. Last_Item_Set1 A) _5 v5 h* s4 {: \* W% b" T. b/ Q
  2086. DEC <Music_Item_Cur
      I, W  z" h" m
  2087. LDA <Music_Item_Cur
    ( j; i- r. @0 r- ?$ t
  2088. JSR Reset_Current_Music% p: j2 B7 f4 T, D8 w

  2089. $ l/ [# `8 l2 \% w& G$ x3 `
  2090. Last_Item_Play
    0 H: q1 B: _% M  H: J+ v/ j) Z& W! z) Y
  2091. LDA Data_Buf
    + H  H+ o; O+ |* N+ g
  2092. BEQ Last_Item_End4 @7 V$ c9 l7 O( @0 W' R
  2093. JSR Show_Page_Text
    - w2 T6 i3 \3 \8 I, x
  2094. Last_Item_End. c  t2 w& w+ a: L+ `8 q6 ?# R
  2095. RTS$ z- x2 C) v, X* ^3 [! V. ~1 w

  2096. & E, ^: B% Y1 P, Z7 C' o/ y
  2097. ;==================================================
    3 ^! H6 L' T" P3 x* f: S
  2098. Next_Item;下一项& g4 A- Z) O  K) M
  2099. JSR Clear_Last_Track_Name& h2 S+ A4 E+ n, s* V1 i2 u0 M' A
  2100. JSR Disable_Text_Draw# v9 O$ X! {) ^% n! T; `4 Z

  2101. 6 ]$ b4 }7 ?4 N1 B
  2102. LDA <Music_Item_Cur0 \: q" S" i- g7 P" W
  2103. STA <Music_Item_Last$ ^) m6 j" a2 P. t" o7 g* k- P

  2104. 8 O1 W* ^2 p  f( K  }; {; v# m
  2105. JSR Get_Last_Page_Start_Index
    4 W$ R5 D+ q4 r# x9 i4 m

  2106.   e) {' K2 D6 g1 D
  2107. LDA #$00, m' ]0 b" {- a/ A% F7 [, I% Q
  2108. STA Data_Buf
    $ d4 I0 d; A4 Q- d3 L+ L
  2109. * M3 N% v; S) t. m3 u
  2110. LDA <Page_Last3 g2 H1 o  u+ _' u
  2111. CLC
    % E& R6 A3 q& r
  2112. ADC <Page_Last_Cnt
    7 a& a% M' e4 M, }* W7 B
  2113. SEC5 S$ h+ T0 w* p' q2 v/ F+ |
  2114. SBC #$01
    % n: ?4 X3 m7 R
  2115. CMP <Music_Item_Cur
    % I5 _/ ?! m4 ^7 B" _! e
  2116. BNE Next_Item_Begin) _3 e4 z& [. |/ i5 J
  2117. ) N0 g. i$ S. T  s  @/ b6 v" P
  2118. LDA #$01" T' K( w9 ?( y( d8 j! x( o# c+ S) b1 R
  2119. STA Data_Buf# S1 K; b; j4 t8 O8 ~
  2120. Next_Item_Begin
    $ w% a2 W. L8 w7 q( E; T
  2121. LDA <Music_Item_Cur4 k! @' y- x9 H9 S" L( }: C7 {
  2122. CMP #ITEM_MAX_INDEX( B6 }5 c6 K% F% h! V* x0 j
  2123. BCC Next_Item_Set$ {& Q4 @3 r* Z8 v2 D: N
  2124. LDA #$FF5 \/ h& h/ j7 U; l
  2125. STA <Music_Item_Cur5 Q: P( q* I1 w  h( A$ U$ H; n
  2126. Next_Item_Set# N/ O* P- W, s' y
  2127. INC <Music_Item_Cur% s/ `1 A! @3 D
  2128. LDA <Music_Item_Cur
    2 q2 s" P4 @& T6 C4 U" V+ Y
  2129. LDA <Music_Item_Cur) B$ I- K; w! I, @" Q/ j0 [: k
  2130. JSR Reset_Current_Music
    / i2 F; w! ]' R
  2131. Next_Item_Play
    4 u/ P( j$ ^4 {+ _
  2132. LDA Data_Buf# Z2 M' `7 Y- O" T: z
  2133. BEQ Next_Item_End" H0 e, r; d) `
  2134. JSR Show_Page_Text/ e% z# H1 T5 i  }
  2135. Next_Item_End
    ) @  _  X/ y6 w" O7 F  H! U% s' N
  2136. RTS4 z* q+ ]/ W# F' _& `

  2137. 4 |: U$ w! C9 s+ q2 D: o& U
  2138. ;==================================================0 \& V! c5 p! X& G8 {8 ^2 R
  2139. Last_Page;上一页5 r3 c' x; M1 s2 F6 l1 }- u9 n; y8 W
  2140. RTS( ~4 p1 O; ^! P) R5 Z$ f) z" l9 M* {
  2141. ' E6 g' Z( y" N$ O) G
  2142. ;==================================================" B# a) C0 h8 t  m' x* Z
  2143. Next_Page;下一页& f/ m. z. l% v9 M, Y( v6 m
  2144. LDA #PAGE_MAX_INDEX
    ; i8 c9 x# A' o. H
  2145. CMP #$01$ K$ ?" h) r, G( a; |, U  ]! j  r5 G
  2146. BEQ Next_Page_End
    6 V+ n' k7 E& y5 m3 k

  2147. 9 a% {/ s# k* t7 j% K
  2148. LDA <Music_Item_Cur. t% Y) C6 G4 i5 `
  2149. STA <Music_Item_Last
    3 r3 z! j( x8 h% W

  2150. 8 H! Q+ N. n5 b8 F. X& w' L% {# }% {
  2151. JSR Get_Last_Page_Start_Index
    0 i$ R) e  r3 ]4 Z- H, F

  2152. + n8 ?5 `3 i- `- L
  2153. LDA <Page_Last_Index
    ) |2 _, z6 p- h3 i
  2154. CMP #PAGE_MAX_INDEX$ j7 k! d/ M- m' P) S9 ]
  2155. BCS Next_Page_In_End_Page
    & r# x9 m, W8 |
  2156. - ^3 x( i& [, |2 X2 o
  2157. Next_Page_Not_End_Page;不是在最后一页
    8 m: I# y* A8 }: y$ R, {1 g
  2158. LDA <Music_Item_Cur# {- x6 O* L" z& o
  2159. CLC
    " T+ Z/ y0 [( t1 b3 g+ @
  2160. ADC #PAGE_SIZE
      d1 ]" k3 E$ r" W8 l5 Z  ]
  2161. CMP #ITEM_MAX_SIZE. Q5 }+ K. u. v
  2162. BCC Next_Page_Not_End_Page_Less& v. K; r; ?5 R4 T7 m4 v
  2163. LDA <Music_Item_Cur
    1 B& {. V, g0 R7 K
  2164. SEC3 H# U& D9 l/ @# |; D- Q: U
  2165. SBC <Page_Last_Index- G2 R: _2 V% |+ P# X( B
  2166. CLC
    : d  J( J* B( P0 L
  2167. ADC #PAGE_MAX_INDEX( D+ i# t+ t5 x, ]
  2168. CMP #ITEM_MAX_SIZE/ a! q% w& ?( M, ^$ R# \& a
  2169. BCC Next_Page_Not_End_Page_Less) b& W$ x- G4 U9 E* W
  2170. LDA #ITEM_MAX_INDEX
    + p' B" y& A4 R
  2171. Next_Page_Not_End_Page_Less' e- D* `9 Z3 H+ o5 m# r
  2172. STA <Music_Item_Cur0 Y8 N' ]0 W2 p1 P) g
  2173. JMP Next_Page_Reset
    0 E* ^0 x" S3 X* ~7 m3 `. Z0 ^

  2174. $ j! o' X  T; ?8 P
  2175. Next_Page_In_End_Page;在最后一页
    - R, _/ j/ J0 D. o* c
  2176. LDA <Music_Item_Cur
      k8 G! l! W# [& I7 i
  2177. SEC' Y  {( Q$ h) w6 X( J) _8 k
  2178. SBC <Page_Last_Index
    + H8 P: H. A/ z( l9 \# r4 }
  2179. STA <Music_Item_Cur
    & y5 d) V; w2 T  x: w

  2180. # Y$ G* N1 w6 y  J0 W
  2181. Next_Page_Reset
    $ K6 X0 O0 v  }3 d
  2182. LDA <Music_Item_Cur
    & _5 V6 ~7 P9 i5 N8 z2 |0 I) H: x
  2183. JSR Reset_Current_Music
    7 g8 @# z0 |, z- J& Y5 `
  2184. JSR Show_Page_Text
    & Q2 ~7 q* W' _. r* U
  2185. Next_Page_End
    8 Q" d) n/ r5 t7 H1 O) ]: `
  2186. RTS" c% Y3 A4 R5 O

  2187. . {( f  ~+ v# ^/ O& d. ~0 n8 c- Q
  2188. ;==================================================1 z* p, C# D! {, V3 T& D5 y4 ]
  2189. Disable_Text_Draw;禁用音乐条刷新9 c4 S- `; ~0 T& x$ i4 z1 Z; |: h
  2190. LDA <Text_Disable_Flag
    ' J2 l7 m+ m; f
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME6 D! h- L# b4 _$ c* z
  2192. STA <Text_Disable_Flag
    . l2 ~# w7 R+ {! n0 R8 W/ j% j5 i
  2193. RTS5 L. @, N) {# E( X) j

  2194. ( H$ }9 n7 o+ @+ a% ?
  2195. ;==================================================
    ! x' X0 E. K& ^: [% k
  2196. Clear_Last_Track_Name;清除上次曲目名1 }! c( {8 N, d" B- C/ j$ R
  2197. LDX <Music_Item_Cur8 V4 X4 j5 J8 S8 Z
  2198. LDA <Music_Cur,X
    $ x) K2 Q: v0 i/ o% h+ i9 F( n$ N
  2199. .IF Track_Name_Pos; W5 ?7 s, f- g
  2200. JSR Clear_Track_Info
    . _3 d. w' w" j, ^
  2201. .ENDIF. T5 n* s6 z) H5 o8 I8 H
  2202. RTS; ^* \# l9 s6 o# E

  2203. % A& n  \- Z+ A7 v7 v0 Q, z
  2204. ;==================================================
    $ D# z% o6 K* o) M3 u
  2205. Reset_Current_Music;重设当前曲目  l9 b; ]2 C: F4 n/ Q
  2206. ! z9 \! q1 N6 Y# E) Z
  2207. ;写入当前总曲目
    ( b9 g2 v8 r+ u
  2208. JSR Set_Sound_Total
    - c) ~$ Q/ n5 k3 E- \
  2209. LDX <Music_Item_Cur
    # V) w6 O0 b: z$ E9 P

  2210. 6 }( m! p! A; I  l' |% w
  2211. LDA #$004 K5 C1 y4 n3 J( [
  2212. STA <Music_Last( i; [. q! c  x  t' i4 j% r

  2213. $ C  I0 ?% P" _. g
  2214. JSR Sound_Reset_Proc4 C& k! [/ @, h  H( n- @
  2215. JSR Music_Show
    % H4 ^7 l( v- E: o6 G+ f- G4 P# Q4 M4 q
  2216. RTS  M) t& J# E8 i( B* k- {

  2217. + `. c2 {! H! q4 D: O# B
  2218. ;==================================================, V# g3 P8 C. ^8 L" ]
  2219. Music_Song_Stop;音乐停止
    1 o( l3 k2 N2 A% A. u8 @/ H0 e; e
  2220. LDA #$01
    5 U  H/ P5 a2 D' V$ ^
  2221. STA <Music_Stop_State
    ( p2 p, v4 f6 \4 _8 R5 D5 U; o& c
  2222. JSR Music_Bar_ReSet! D- z# L7 d9 E; P# E0 }5 G
  2223. JSR Time_ReSet
    2 b% Q$ E: y4 T4 d, D9 s
  2224. JSR Sound_Data_Clear
    . u" X. i4 X) e+ v
  2225. JSR Music_State_Show6 `5 a5 i6 I  n' I6 |
  2226. RTS
    . v! A: a7 h$ b. ?
  2227. 3 Y5 @$ k8 ]5 ^; l8 I: W
  2228. ;==================================================
    : C+ {7 N* Q+ p# w1 w
  2229. Music_Song_Play;音乐播放6 u, Y1 Z" X7 V8 S
  2230. LDA #$00+ v  B  `. N0 F; j9 D
  2231. STA <Music_Stop_State
    ! e+ W6 f9 C7 f8 A/ }  \+ v
  2232. LDX <Music_Item_Cur
    3 _+ ~# j& [2 `! A! E" |
  2233. LDA <Music_Cur,X
    " D3 _7 B! d& a
  2234. JSR Sound_Init_Proc+ d) x. ]8 C7 k0 B5 h$ l
  2235. RTS
    7 {$ ?# \) h9 A) u/ H: r

  2236. 5 T3 `: g+ f# a8 s4 o
  2237. ;==================================================7 f7 p4 Y# V1 P$ y0 r- V3 T) Z
  2238. Music_Song_Last_10;上10曲
    1 N8 R! M1 i- f  L  y  d
  2239. JSR Clear_Last_Track_Name: x3 m) j' |7 d/ @
  2240. JSR Disable_Text_Draw1 g  E6 J5 i+ E3 w" ], O2 S! h% B' t
  2241. LDX <Music_Item_Cur# Y2 w7 U) l# t4 v5 [" O5 ]
  2242. JSR Set_Sound_Total) C2 y: _/ _; n, X
  2243. LDA <Music_Cur,X
    " R  A9 F' Q( X/ q; X
  2244. SEC
    & K! `$ d4 I$ \. S4 m
  2245. SBC #10- e7 I, o% T+ B& k0 C
  2246. BCS Music_Song_Last_10_Set
    & Y9 b. T7 g9 c+ W
  2247. LDA #$00
    . r4 l. m4 \4 n* m% A
  2248. Music_Song_Last_10_Set) O: o& J2 p1 c5 A' A  u& |
  2249. STA <Music_Cur,X
    7 z) S: W2 G8 n/ T
  2250. JSR Sound_Reset_Proc
    9 N7 M' \1 u6 g4 I
  2251. JSR Music_Show# k* R% N& B! ]6 V) B
  2252. Music_Song_Last_10_End
    ; B! J6 \5 b$ H$ _2 t
  2253. RTS
    4 }& a8 c1 z, [4 i2 n: @
  2254. # a! K) u+ u4 ]( w1 e
  2255. ;==================================================" o  o6 c9 O/ t. H/ j" g/ }  H
  2256. Music_Song_Next_10;下10曲* c# i5 b7 M% f  u: b. @3 ?
  2257. JSR Clear_Last_Track_Name
    % f( R5 n/ m3 ~1 ?$ p& W
  2258. JSR Disable_Text_Draw
    0 K5 `5 K) }$ [4 S/ {1 I; o
  2259. LDX <Music_Item_Cur* w' T$ P! f  T
  2260. JSR Set_Sound_Total
    / R- f; l/ M" R- [5 |* E4 L
  2261. LDA <Music_Cur,X
    : G% u2 c! h+ ^/ z5 i! N* u" E. a
  2262. CLC
    , Q7 s- Y7 _5 Q% W
  2263. ADC #10
      I; ?# H3 O& ?0 I/ m" E3 C7 ]
  2264. CMP Music_Total
    , y% n9 q- J* I6 M2 ?% a
  2265. BCC Music_Song_Next_10_Set
    - E: S# K9 a# V5 w
  2266. LDA Music_Total) K6 l/ l7 C1 `& L
  2267. Music_Song_Next_10_Set9 v7 p' D' J" R9 H; F; X6 ]
  2268. STA <Music_Cur,X
    . P' m# J/ L3 }' t" P# z( o8 f7 d7 T
  2269. JSR Sound_Reset_Proc
    , D( r  h% H' q( S$ A% H
  2270. JSR Music_Show, S: @. @" t& u0 ?+ E  @  G9 S
  2271. Music_Song_Next_10_End
      T* c+ b( o! x3 M# B
  2272. RTS
    & ?3 V+ M7 F( e0 z1 u

  2273. ; s1 C) m5 w: @$ O9 V
  2274. ;==================================================
    . j3 G8 y9 R+ {, s. t* o3 x* }  T$ y
  2275. Music_Song_Last;上一曲
    & Q& H1 k  }: M6 Z
  2276. JSR Clear_Last_Track_Name; A# L$ ^4 h) H! Q# ?
  2277. JSR Disable_Text_Draw/ e" O) C8 \6 G8 y1 r+ ?
  2278. LDX <Music_Item_Cur: d/ D) Q9 e9 _0 M4 j
  2279. JSR Set_Sound_Total
      R) |8 u$ {# I3 {( w: C/ m7 u8 J& v0 m) }
  2280. LDA <Music_Cur,X2 v; {$ c  d& N: l* O3 R& o$ X
  2281. BEQ Music_Song_Last_Set
    , G' G; d4 U! b: c
  2282. DEC <Music_Cur,X) d3 b: x0 }4 Y& m
  2283. Music_Song_Last_Set
    " a' d0 l5 w5 z6 v3 C' ~! |' C
  2284. JSR Sound_Reset_Proc$ c3 e2 U2 F1 d+ m3 u; b
  2285. JSR Music_Show
    8 K( y+ b/ A3 r5 o% E
  2286. Music_Song_Last_End
    3 H8 _6 `: e; L/ C& X9 t# W' W
  2287. RTS
    1 M3 C. g) K6 q+ N6 b
  2288. ! C7 M/ F/ p- A  {) ?
  2289. ;==================================================1 S) d+ F+ W) X3 u# [
  2290. Music_Song_Next;下一曲
    # I- Z) S8 U8 }& f) |% u0 [/ J
  2291. JSR Clear_Last_Track_Name/ _5 |% R. V! \0 i. [
  2292. JSR Disable_Text_Draw
    3 y8 U: _0 a! _& D; d6 x# ~" Q
  2293. LDX <Music_Item_Cur) T8 ^2 M  W* U) F5 U. [
  2294. JSR Set_Sound_Total1 |, m4 ?5 l9 U; M& ]* h
  2295. LDA <Music_Cur,X( L  Y9 D/ ]: p) g: ?! E) b! D
  2296. CMP Music_Total
    1 E+ s: O5 V' \
  2297. BCS Music_Song_Next_Set
    8 x# g1 _/ k' [6 D: ^% ?
  2298. INC <Music_Cur,X
    ! p0 G! K2 W8 W( o
  2299. Music_Song_Next_Set5 N& m' E2 p5 d8 Y. Q, j3 y
  2300. JSR Sound_Reset_Proc( i6 v. C7 ?$ L' p4 i3 b' Q) |
  2301. JSR Music_Show0 M$ J7 c( z; l% k1 M# u9 S
  2302. Music_Song_Next_End
    ' l; b1 F# G% @3 e( ~3 h
  2303. RTS3 a1 a7 f8 [9 i8 m+ J( q% ?  f  `

  2304. 2 J8 b! r. p8 r3 g# h
  2305. ;==================================================; [8 j$ G) i: k) R* Q, \3 U5 `
  2306. Change_Select_Item;改变当前选择项
    2 D) z. W' B0 h6 C+ g
  2307. ;--------------------------------------------------
    ) G  l5 \$ S* q4 y2 B& E
  2308. Change_Select_Stop_Play_Item;停止/播放
    ! ~/ E3 X9 w( m* [. N* V5 C! w
  2309. LDA <Key_Once% x7 C3 l! L! y; Y( z: E
  2310. CMP #$10, y2 r% P, B/ S4 C' g4 {. T: Y2 e
  2311. BNE Change_Select_Last_Item
    6 Z$ D8 o$ p- w, A0 ^% ]/ q4 ~
  2312. LDA <Music_Stop_State
    $ k+ g- r: ]9 ]( ^; u( }) F
  2313. BNE Change_Select_Play
    4 v: d+ B& _) x1 E+ r
  2314. JSR Music_Song_Stop9 b7 ^4 O! H. W  o5 h
  2315. LDA <Music_Stop_State
    ; _* H7 V# T5 M, G
  2316. RTS# o$ I/ U( @( `- m% `& }: w" F/ B
  2317. + n- k/ g4 R; k' a
  2318. Change_Select_Play% E- P6 }0 e+ y# L  G3 Z
  2319. JSR Music_Song_Play* M! Q6 }$ @+ {# t7 S. C
  2320. RTS
    8 ?# ^, t$ Q. o  C  |; m

  2321. . s2 c9 K5 b8 U$ Y# p
  2322. ;--------------------------------------------------
    6 s1 G+ `2 A& x0 Z# K
  2323. Change_Select_Last_Item;上一个专辑
    ) O& k: h  [  a; K( H$ h
  2324. LDA <Text_Disable_Flag
    " [8 k$ f9 E# P5 [! s0 ^! I3 d) B
  2325. AND #TEXT_DISABLE_ITEM
    - T, b- ^) Y3 K4 b8 q& W
  2326. BNE Change_Select_Item_End
    0 U! b! W' C( Z' O+ J7 J0 w) F# [
  2327. LDA <Key_Once/ r/ l  @. p* o+ [( H
  2328. CMP #$08( ~! C* h! e. P* |% {
  2329. BNE Change_Select_Next_Item
    ( l& O0 v! N; @. ]; H
  2330. JSR Last_Item
    ! w  N$ d' J8 k/ ~; u$ s$ M. a6 v
  2331. ;--------------------------------------------------
    / l8 `# N3 N+ y* D- n
  2332. Change_Select_Next_Item;下一个专辑
    & A2 C4 A2 ^3 F" Z$ S
  2333. LDA <Key_Once4 l' l! h' `/ e& d+ ]; h# {6 N; P
  2334. CMP #$04
    / p7 Q: s* v) z6 m6 |
  2335. BNE Change_Select_Last_10
    6 W2 j* k$ x% R# Z
  2336. JSR Next_Item! X3 `' `* g  N( j& f2 p5 b! c
  2337. LDA <Music_Item_Cur$ R2 a; e7 u2 U  S  g4 u5 Z/ j
  2338. JSR Get_Page_Start_Index
    4 J, N) D! }( M: y: \
  2339. ;--------------------------------------------------
    ' j6 `6 k" r& F" w
  2340. Change_Select_Last_10;前10曲4 R; a$ \3 f& Y3 }2 w) n
  2341. LDA <Key_Once
    . {4 o; t) k( t) i5 z9 x* u
  2342. CMP #$40' h  }. Y2 d7 U, H1 d; c
  2343. BNE Change_Select_Next_10
    % G" a5 S' K' h$ @  i: T4 w
  2344. JSR Music_Song_Last_10/ w/ G3 ~; K4 w/ M* H
  2345. ;--------------------------------------------------
    $ j) X. P5 w, Q  H$ d
  2346. Change_Select_Next_10;后10曲
    " v- m! O% w: v+ e4 y5 I
  2347. LDA <Key_Once- o! y# F, ?( w/ F  J9 h' Y1 Y& d
  2348. CMP #$80
    1 ^7 W2 l+ ?$ M- |
  2349. BNE Change_Select_Last
    , S: x( g" B. t3 o7 I- \# j
  2350. JSR Music_Song_Next_10& i. B) W. C% J' A
  2351. ;--------------------------------------------------* p2 w; V2 E5 J/ h3 u# E: w
  2352. Change_Select_Last;上一曲
    ; z- M, y2 @0 z$ z
  2353. LDA <Key_Once
    5 o3 P  E! s6 B  @; p
  2354. CMP #$026 `5 G2 w" @9 w: Y
  2355. BNE Change_Select_Next1 P! N& D% Y  H: I* `8 a* R' ^' }
  2356. JSR Music_Song_Last
    ( O' w  z+ t7 d( M% E" _6 Y/ |
  2357. ;--------------------------------------------------2 X" s! E3 g2 a% y, w2 x
  2358. Change_Select_Next;下一曲9 a( U8 Z0 a  a/ w3 a
  2359. LDA <Key_Once0 o: {7 N, |* y( I7 l
  2360. CMP #$01
    ! v( o% D! K7 I: M
  2361. BNE Change_Page_Next9 c  N0 P7 W! ^* J
  2362. JSR Music_Song_Next/ g. k$ G' R* c: T
  2363. ;--------------------------------------------------2 G8 q% d7 p/ q% m  ?! _) j
  2364. Change_Page_Next;下一页4 a/ ?# @' T4 [, ~1 T* A- X
  2365. LDA <Key_Once2 O. A$ K3 o. U9 F
  2366. CMP #$20
    ( j/ }9 n) K1 d$ m
  2367. BNE Change_Select_Item_End9 H: d7 w1 g% m; a
  2368. JSR Next_Page
    - z* o4 X0 ]- S+ a. Y7 D
  2369. ;--------------------------------------------------2 ?! W% G' a2 w7 ?& B6 d) E
  2370. Change_Select_Item_End
    0 o  M+ L2 X/ v4 I/ E
  2371. RTS0 W9 a/ L' B$ Q) g( T& I' m5 B% l

  2372. ( w( X0 I4 E  S+ e
  2373. ;==================================================
    % `( W. O0 ?# C4 f6 Y
  2374. Show_Arrow;显示箭头光标
    # m1 G! F, \$ O) ]' p
  2375. LDA <Music_Item_Cur. s# i5 v, {/ E' M
  2376. JSR Get_Page_Start_Index6 d8 S, A# H! W! @5 Y
  2377. LDA #$00
    5 {5 v. X4 j" g) I. b) W
  2378. STA PPU_OAM_ADDR) |, l2 @0 ~( P! I
  2379. LDA <Music_Item_Cur! j: w" H5 B' @: M" H8 \
  2380. SEC
    , Z8 L% n( V- D2 K. e5 |* P  J
  2381. SBC <Data_Buf
    1 C8 _% K- V! X9 v
  2382. ASL A9 l" Z& p/ |+ D: j0 i
  2383. ASL A; W9 \+ |5 Y. M7 u; N8 T
  2384. ASL A) W& b8 \; W  j2 p8 H8 Q: X: T, ]
  2385. ASL A% k' Y3 P1 Y/ L7 v% b
  2386. CLC$ n* V( f+ }3 l. ]: _. E$ }6 N
  2387. ADC #ARROW_Y_OFFSET
    4 S9 ~" h- c- [/ T4 S& |8 `4 S
  2388. STA OAM_TEMP_ADDR + $006 H* k" S' l$ j; t' I6 w* o' e% m
  2389. ;STA PPU_OAM_DATA/ ]- F/ I5 c. i  \. r! A( V, u
  2390. LDA #$1F
    & M0 j+ X* t3 r# g9 Q- c4 b
  2391. STA OAM_TEMP_ADDR + $01' ^5 B  t  P, \7 m9 H
  2392. ;STA PPU_OAM_DATA6 A: K  H) \. u2 F! y0 i
  2393. LDA #$00
    - D- A: O$ W( g9 O+ v% {
  2394. STA OAM_TEMP_ADDR + $02+ I  [& t+ H/ J; Q7 h. m
  2395. ;STA PPU_OAM_DATA
      _; Z0 V' T+ P+ K
  2396. LDA #ARROW_X_OFFSET
    $ e" R- N$ }! L" R# o; J
  2397. STA OAM_TEMP_ADDR + $03* {( K3 @( R/ r5 k  x
  2398. ;STA PPU_OAM_DATA
    ; D3 J) T" |- c% a
  2399. RTS
    7 E  E! I. T5 g1 f; ^/ ?

  2400. ; `" \: K2 ?3 J) ?  A* m* u
  2401. ;--------------------------------------------------
    ; y, [$ K, N  D" Q7 S: a
  2402. ;命名表数据' b* ]7 M4 L& n5 X6 M# f  V& _
  2403. Palette_Attributes
    3 r( p3 g+ ?% ?2 e3 B8 d9 w
  2404. .IF SOUND_BAR_SHOW_ENABLE4 W8 M6 j5 Y8 V/ W
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    7 @3 O8 ]( O( z& R1 m9 _' m
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$550 X/ G6 L$ a, m. d# Y4 g. Q+ M& i  H
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$751 Q, ]& J2 L% W7 X7 H" Z, Z6 L
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    + {8 p3 p: G3 o
  2409. .ELSE
    ' l% ], [1 m5 `7 l$ F+ H8 g
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$557 C7 ~/ R7 L7 [. Z% k: q* [' c2 {
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    7 V$ f% J) Q0 b( k5 F
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75* k2 B% K$ c" t" p: b( D$ |' V
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA; ~* t) M: O2 z& H
  2414. .ENDIF' a$ E3 k0 {/ ]2 Q/ f7 M, v

  2415. , X: W' ?  q/ |" R" W9 t- M1 V
  2416. ;--------------------------------------------------
    1 Q: s: @- S, {% B
  2417. ;调色板数据
    - T8 Z0 _8 c5 U/ n/ V; j' D& \/ g
  2418. Palette_Data& H2 {6 N1 T$ l. B. G3 f* _
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F
    3 X8 f; B- {' D) T+ H
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    ; B$ i" I2 g7 Q: Q; k

  2421. : ^% S3 e% e% v9 a7 ]
  2422. ;--------------------------------------------------9 c& r5 R% q# R' ]% o1 v2 F
  2423. Static_Text_Data
    / {& ?7 B; B# k: D; X& {( z" R
  2424. .WORD Static_Text_Caption_Data
    : J+ I4 {9 U% F+ `3 k
  2425. .WORD Static_Text_Author_Data
    $ s: c- S1 u3 p  z
  2426. .WORD Static_Text_Date_Data) I9 y4 j& U( U# b& Q# B; v& \
  2427. Static_Text_Data_End3 G+ N. O5 ?5 {8 J' L

  2428. 7 J2 `  {6 T$ }/ c
  2429. ;--------------------------------------------------/ w6 [. n; f* ^6 n% B
  2430. Static_Text_Pos
    7 v. B# h; L2 v! M3 m: r
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)# m/ t( `2 e+ t2 F
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)! h. b% I  p& G: P. u3 y2 C
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos). U% T$ R! H1 Z. Z
  2434. Static_Text_Pos_End" K1 }: C# _4 c

  2435. - B  N, {9 W9 @( r) w  ]) V
  2436. ;--------------------------------------------------
    " D- X$ n1 P9 ]. e2 u/ x
  2437. Music_State_Stop5 }% }  }5 W2 a6 V' {
  2438. .IF SOUND_BAR_SHOW_ENABLE; r) ^9 \0 C' l; J
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    / y8 r; }* v) s2 S
  2440. ELSE9 y+ j( l& y) W* T+ B
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00: x3 ~/ ?' y* I  I$ d  @
  2442. .ENDIF$ G: B9 ~5 p* U5 S5 G
  2443. Music_State_Play- t/ I6 ^+ y# ]6 {- l
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    6 ?) t0 M' ]/ Z& d. o3 f
  2445. 4 k# _6 ]/ q. a3 S3 ?( Z3 l$ o
  2446. ;--------------------------------------------------5 M( I$ e$ J& |, ^# d$ _
  2447. Sound_Bar_Text_Data;声音类型文本  k4 h0 O* }! W8 l# m+ j
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"9 u; M9 l, Z" n
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    ' [) R$ W! v* w, d2 e& X4 @; s, h
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    0 C8 U* `* ?; w% o% F3 S: l9 e
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    ) @7 T, |7 Q, F1 \
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$004 z! P& K% E  Q
  2453. " L/ ~5 Z4 k; J9 F" H8 y
  2454. .IF Track_Name_Pos7 e- d* D8 `/ E+ l( d
  2455. 2 g5 Z. u& R4 |
  2456. ;--------------------------------------------------
    - J* u* Q  `2 `3 o- S
  2457. Track_Name_Addr_00;曲目名地址索引: l8 N3 S( H! ~: b2 G, E0 w& a6 b( t
  2458. .WORD Trackr_00_01
    $ I4 y8 r4 f: ^& s" q9 Y
  2459. ! s# }' v& f- I6 n
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"* A9 ?& s. |# `) g% }
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    & s* v+ [; p5 V1 h, c! a0 Z; j

  2462. - z. J9 m# r' o9 _: A, c. U
  2463. ;--------------------------------------------------
    0 [* G. y" k0 a2 n7 w$ \
  2464. Track_Name_Addr_01;曲目名地址索引
    0 g" n5 x5 J( f( ^
  2465. .WORD Trackr_01_013 j7 s1 `+ h5 F0 [; O8 R) M

  2466. 0 j3 M8 \' r) @3 K
  2467. ;==================================================; s; L' {6 p) T+ g! T5 Q
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    $ |; G" V% O- h2 M
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"& Q* w  s$ T! x- ?6 J
  2470. ( g& k+ m/ W0 ?
  2471. ;==================================================* Y( y( {# |- Z/ l+ ~" B4 B
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    . @7 t3 t9 c8 K
  2473. .WORD Track_Name_Addr_00
    * @, E4 V0 ?- C
  2474. .WORD Track_Name_Addr_01: z+ F- E$ a8 w1 d) N% C
  2475. .WORD Track_Name_Addr_01
    ! a& W/ T7 c5 q/ V0 {* _# F
  2476. $ G5 Q  U3 u1 R. t  x* |
  2477. .ENDIF+ P5 T5 `; F4 q+ K1 f
  2478. 9 i0 ]/ c" M. D- U# E/ J% G
  2479. ;--------------------------------------------------
    9 o9 h) \6 q% F8 F. ~+ t& j
  2480. Static_Text_Caption_Data;静态文本数据' ^# ~7 L: }* i' J$ r# _
  2481. .DB 16* U' ^& F) ~: Y' h/ J4 N) ]6 w
  2482. .DB "FC MUSIC 12 IN 1"
    . X* C! m/ _* R7 r- H
  2483. Static_Text_Author_Data  `' I5 U% \) A/ l4 o0 v
  2484. .DB 25
    % m2 p3 n" \: y0 c# J/ ?& ^
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    6 i0 G8 }' ~; K7 a
  2486. Static_Text_Date_Data$ r3 s2 j* C* O
  2487. .DB 10
    9 o* ?& d1 S, ?: o% Y, W5 a
  2488. .DB "2023.07.23"  n: P: V  P: |- P0 I6 W
  2489. / {" r+ n# R. [! h# O9 ?
  2490. ;==================================================
    9 S. b# u# v. Z& M
  2491. Music_Collection_Name               ;专辑名间接索引$ w9 u+ |$ c$ V9 M% {/ `6 ~1 @
  2492. .DW Music_Collection_Name_00
    6 G0 g. Z- d) ^: w3 K2 i
  2493. .DW Music_Collection_Name_019 ]0 U1 N2 P1 T' i# v2 f, H  U
  2494. .DW Music_Collection_Name_021 Y( M8 [7 F2 ]+ w0 f
  2495. .DW Music_Collection_Name_03
    ' S5 F) W& y- C3 \* C7 A8 s
  2496. .DW Music_Collection_Name_046 N& B8 J0 t; w" s0 _2 B, x8 @
  2497. .DW Music_Collection_Name_05$ @# W& D% ^9 K/ G$ g
  2498. .DW Music_Collection_Name_06
    5 L( S5 c0 m* `+ m9 q$ j. d
  2499. .DW Music_Collection_Name_07
    ( w- j$ p  f6 c+ B( @+ J' A! ~
  2500. .DW Music_Collection_Name_08
    " H4 ]8 d5 |- w  W1 a8 c
  2501. .DW Music_Collection_Name_09
    ! F" v$ Z4 w5 v/ T0 c; d" J2 z
  2502. .DW Music_Collection_Name_10& `/ m# L- n3 j/ Z8 T* M6 H& g$ l% L( i
  2503. .DW Music_Collection_Name_115 r& @$ u8 t$ V, [6 m  F4 U

  2504. : ]5 `! [$ G, _5 L( p: V5 Q9 x
  2505. ;==================================================
    * Z" _5 w2 y0 w" O
  2506. Music_Collection_Name_00            ;专辑名文本数据
    - {. p6 V* c7 ~2 o: O$ |% M! |
  2507. .DB 11,"1.RAF WORLD"  {/ p/ c' m! ~. H  c/ q
  2508. Music_Collection_Name_01
    / }' h) q( V/ |2 }2 l  N
  2509. .DB 15,"2.FINAL MISSION"
    - R+ O  \9 S! X; t5 i9 R
  2510. Music_Collection_Name_02
    ) ?6 J' M& T8 t. v8 H- h
  2511. .DB 06,"3.KAGE"
    ! V) f4 Y6 m) @; C% q3 p. ~
  2512. Music_Collection_Name_030 V& {+ V6 I7 Z8 A8 a9 s
  2513. .DB 16,"4.DOUBLE DRAGON"
    ! Q4 @8 @3 F0 _) a/ e' F
  2514. Music_Collection_Name_049 H1 J3 I( }7 [6 q
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    5 e% B! s7 ]" |  V5 k( B4 ^! q- [
  2516. Music_Collection_Name_051 n# t6 M: E2 m3 ?0 L9 O$ Z4 ]( _
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    + ^: Z0 J( M6 l5 }/ u5 C
  2518. Music_Collection_Name_061 A6 j$ Z2 O4 M% G$ u
  2519. .DB 09,"7.ROCKMAN"
      V2 |2 ~. e( s. E* L
  2520. Music_Collection_Name_07
    ! ~8 h' z$ g) [8 s0 U% B
  2521. .DB 12,"8.ROCKMAN 2"3 u& F1 ]) \& m: b5 R
  2522. Music_Collection_Name_08; R. Z" I9 X" }6 R9 }6 p
  2523. .DB 12,"9.ROCKMAN 3"
    7 X3 F) X! r( C2 R# l3 e
  2524. Music_Collection_Name_09, g$ N& X' S0 v) p9 f
  2525. .DB 12,"10.ROCKMAN 4"
    9 C" ]! z: F3 [2 t
  2526. Music_Collection_Name_104 H" o- r- t! j6 d+ Q& Y
  2527. .DB 12,"11.ROCKMAN 5". x9 w' Y3 _6 @7 b$ m
  2528. Music_Collection_Name_117 I' v8 i% w7 L1 o9 i8 H$ Q
  2529. .DB 12,"12.ROCKMAN 6"
    7 N$ H2 t6 e/ p& b& R& |6 D
  2530. " T) E$ n7 ~; P0 T# ?
  2531. ;==================================================
    8 X" J+ l6 k4 x* e, h# \! D
  2532. Track_Name_Addr_Flag                ;显示曲目名标记) u7 n+ m/ Z$ g- k7 r9 p
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0  C1 a3 p7 V; l2 R$ {1 n

  2534. : ~$ j  X! G) L5 W
  2535. ;==================================================! M3 R) h( F) e/ r5 s$ u
  2536. Item_Pos_Data                         ;光标箭头位置% V5 M6 Q2 r( u4 x9 |
  2537. .WORD ITEM_SHOW_POS/ ?, Y( {# s7 N5 r4 o/ {; z
  2538. .WORD ITEM_SHOW_POS + $0040
    * Z9 [& e0 ]9 @; g6 a3 o8 d, Q4 O; h
  2539. .WORD ITEM_SHOW_POS + $0080* n: U" |6 M) f$ b2 E! |8 i
  2540. .WORD ITEM_SHOW_POS + $00C0! g/ e* B% V) [) i
  2541. .WORD ITEM_SHOW_POS + $0100: F' B, U1 B* H0 L
  2542. .WORD ITEM_SHOW_POS + $0140
    . R. c& I1 f4 g8 l
  2543. 7 u$ r& E4 y8 b! v# x0 b$ y
  2544. ;==================================================- a1 o0 L7 Q' C) N
  2545. Sound_Init_Port                 ;音乐初始化入口地址8 a2 v7 b7 v5 E' K; T# [& J
  2546. .DW $BFC83 R! F  f7 |+ c" k/ W/ a
  2547. .DW $D7F0
    ; R! s: u, n' ?7 i
  2548. .DW $9FC0; t/ Z6 h9 t1 z( t3 F$ d( O9 B0 U
  2549. .DW $BF70
    & c5 m. e9 Q( X& u! \: {
  2550. .DW $80037 R; ^3 c5 N9 B9 o7 u# ^4 h7 t
  2551. .DW $BF30. a- }) j9 Z* C5 X; s* Q7 P! T; T
  2552. .DW $9003- @; t4 g! j5 W6 w% G8 h$ s" H3 Z- @
  2553. .DW $80035 b, J$ v+ o3 ?' X, ~
  2554. .DW $8003
    & u& D, j' {! ^: M' n! [+ ^
  2555. .DW $8003
    ! k/ h# l+ O4 v2 S) q
  2556. .DW $80039 t( g6 Y+ P, j! N/ f+ ^% i* k9 i
  2557. .DW $8003
    9 A5 Z4 m9 N% y8 S+ `. W7 e' c, R

  2558. 7 {2 L2 c$ ]  ^# J3 B4 J$ b
  2559. ;==================================================0 K: C* T& ]8 O, }6 ]  ?
  2560. Sound_Play_Port                   ;音乐播放入口地址$ B5 [9 t4 p6 D( i2 X# n
  2561. .DW $80007 h+ L6 X1 _4 B. C2 E; z- l
  2562. .DW $8001
    . m0 e4 }. X  T4 p8 O
  2563. .DW $A000; V' T% A) p! i9 m9 v& ^/ H7 L1 W
  2564. .DW $8003& I3 R' }' x. t! \0 h# B# j: Z; {
  2565. .DW $8000
    ; L6 a3 i( j5 r2 E5 U
  2566. .DW $80035 Z" _& ], o. Y5 r5 P
  2567. .DW $9000+ a/ X8 I3 l3 C+ B* ?1 m
  2568. .DW $8000
    # x; l! S+ U; h$ O+ ~& `
  2569. .DW $80009 q$ `) k8 q% c9 y+ P4 q$ f
  2570. .DW $8000
    # I! O; Z$ t# m& l- F1 u
  2571. .DW $80009 B2 V0 ]  T7 a( T; r3 u3 \
  2572. .DW $8000- p3 W" y' I' l" m2 o

  2573. 2 ~7 @+ l3 z2 b; C
  2574. ;==================================================( B! x8 O7 C/ j7 l
  2575. Sound_Reset_Port                  ;音乐重置入口地址$ ^; j5 B7 {  y4 K. _
  2576. .DW $0000' ]8 n6 p' n9 N- `3 {! X( t7 D
  2577. .DW $0000, |. W# M" B+ x; d
  2578. .DW $00009 z! ^# K8 R* }3 ]8 l3 q1 |
  2579. .DW $0000( p; t. p3 I- }( g% l
  2580. .DW $00009 @  N# U4 c+ u/ A/ F' K! \; j0 I
  2581. .DW $0000
    & p5 k& r# \; {- z
  2582. .DW $0000
    , I7 r* n8 k2 v! k6 ~
  2583. .DW $0000
    4 M, \+ e+ C' ]; T( V
  2584. .DW $0000
    / k  }+ A/ D0 e) z( ]
  2585. .DW $0000
    0 q- V" c8 Z6 x
  2586. .DW $0000. \4 ]- j! c: T) q1 \8 B
  2587. .DW $0000
    5 q) ~* a* t1 u: A1 ~  n" W9 a6 Q
  2588. / s; d1 c# q( j: K
  2589. ;==================================================
    : e0 Y2 \  O5 ~4 J0 f" T# _: ]
  2590. Sound_Total_Port                          ;曲目总数1 m% F' j# y+ G' S/ |
  2591. .DB 38  }, j- _. ?6 B7 p* f
  2592. .DB 330 A$ i. [' s& n1 C5 m! o: }/ o) S
  2593. .DB 49$ Z5 n4 x# e& s: H5 a& }5 c. E. ~
  2594. .DB 41
    . z( n1 Y5 j7 @9 ~! Z. `+ q& l
  2595. .DB 83  z3 y3 a, f% i: A) b; ^5 e
  2596. .DB 70
    ' y; p. k0 r7 h
  2597. .DB 50! f" H4 k) g& A2 Y
  2598. .DB 67
    # L4 K& \% L8 M; Z# b4 u1 i7 {0 ~# \
  2599. .DB 57  N! J, Z2 G& [$ Q9 d
  2600. .DB 71/ t5 z3 S6 L9 h; X
  2601. .DB 76
    - d/ p* ?! P$ e1 x8 T' \
  2602. .DB 102
    * E5 R+ S, d' e8 s  g6 w

  2603. ) r0 o: l. L5 B) `- m, f
  2604. ;==================================================
    4 Y3 j3 O! _# b9 Y
  2605. Sound_Start_Port                      ;起始播放曲目
    / u1 E, ?- F( ?2 }/ b( T) x
  2606. .DB 00  D, J* M& K) T) a9 ?' p
  2607. .DB 00
    " [( c. J! K) q) w$ F
  2608. .DB 00
    2 c1 l" w& K" v! }0 E+ A
  2609. .DB 00: c: z) e, a) r- F+ K6 j
  2610. .DB 00
    + |3 r& B/ R" x& {
  2611. .DB 00' m/ p5 o% x# m2 W2 R
  2612. .DB 00
    & i5 ]$ `& }* d; x; O$ X7 {( O
  2613. .DB 00
    3 H3 |& u6 {1 ^9 p7 t$ ]1 X
  2614. .DB 00( ~8 q- z( @  p& H& ~
  2615. .DB 000 i$ G; L! j9 q0 ?, e8 \5 V
  2616. .DB 00( p# D9 d9 _: i) e1 v# p, N
  2617. .DB 00
    $ B1 W. \; e# X5 Z
  2618. 5 H( G: b, ~) f: v
  2619. ;==================================================
    - E5 }' u. [  e
  2620. Sound_Bank_8000                      ;专辑bank_8000! T. J/ m$ c0 N# j: v0 v: C3 W3 ~
  2621. .DB $10
    4 _  u  u5 z* E  N- L6 i! E
  2622. .DB $12$ }& O$ O% s. F3 [3 t
  2623. .DB $149 K% j( H( |0 m5 ?& {* r; m
  2624. .DB $163 S8 }; z4 a( x6 d8 l. J7 K. C
  2625. .DB $18' N5 l4 ~# W  _2 Q
  2626. .DB $1A" e: J2 i) z$ r
  2627. 8 V% E$ }( l3 k; k, H+ b
  2628. .DB $00
    % t3 }& Y0 G- H2 u7 G- c
  2629. .DB $02
    3 f) ^. k" D& c+ y( h/ i
  2630. .DB $0D3 q6 A% P" ]4 U5 `# R! j7 \
  2631. .DB $04, U7 p+ X' W$ l4 [& D  d
  2632. .DB $07
    ' K# r) q0 M; H' n! h  v. m+ m+ H
  2633. .DB $0A% h6 L( c! s4 R# d8 L* X
  2634.   Z; q; f/ M' J! j: L) n3 M
  2635. - H5 c5 D0 z, _1 B' c$ X
  2636. ;==================================================
    6 Y" {* h( P8 H; U
  2637. Sound_Bank_A000                      ;专辑bank_A000
    " Q" F: K/ p# {; s+ O- w& a1 r
  2638. .DB $110 r" r- S! H2 X; G; r* V
  2639. .DB $13
    7 L+ I7 w( Q& p
  2640. .DB $151 z# N& t* L! ]
  2641. .DB $17
    & W5 l0 Q% t6 }/ N
  2642. .DB $194 t- M, R. v4 x1 x( G, S; C9 Z, V
  2643. .DB $1B1 D& V1 q+ B2 o$ ^" B! \6 k
  2644. 9 V: Y# ^, s% \6 v! M
  2645. .DB $017 p5 {  w8 s+ i( h
  2646. .DB $03
    0 }0 i( V8 i8 E& q
  2647. .DB $0E
    3 J5 X% m* v: v4 W4 n
  2648. .DB $052 B1 v' @8 C) F: k3 q2 C
  2649. .DB $089 b! B6 j) m" o9 ]# M
  2650. .DB $0B
    - Y% F4 h# l1 x. q" s3 a  N

  2651. 4 b& L# @# c( b! u3 x0 ^: U
  2652. ! R& g4 |* l3 p( N
  2653. ;==================================================
    $ D7 C! P1 E& w: i6 q& K
  2654. .BANK RESET_BANK & BANK_DATA_MASK" Q3 Z% |$ u6 F7 a/ `! c" \. p8 w) o
  2655. .ORG RESET_ADDR
    , w- l9 P% i' \7 X4 c' {

  2656. ! D- N# m* G: s
  2657. ;==================================================' ~5 m# z3 d: H
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    / V" S, s' ~" c0 c+ \
  2659. PHA/ m4 T0 Q2 Z1 z; M! I6 u% i
  2660. LDA #$06
    ( f/ e' ]/ B4 q1 i
  2661. STA MMC3_BANK_CTRL
    & d  Q" B" Z* k+ L! v1 U
  2662. PLA! ?; H+ `8 e8 z1 k2 c
  2663. STA MMC3_BANK_DATA
    0 d; ]. [( }# k& k
  2664. RTS3 |% K+ b2 j: P7 g
  2665. 0 n/ ~# q8 l' R9 B1 k: \
  2666. ;==================================================
    ) K, A6 P# _6 v. m  f( q( Y" r8 }
  2667. Switch_Bank_A000;切换bank到A000-BFFF! K% g9 s1 N$ b" t* _; _- q
  2668. PHA
    * i2 ]" C& R) f. L; s& k; V# f8 C
  2669. LDA #$07: g: J4 x/ m% @0 _
  2670. STA MMC3_BANK_CTRL5 f8 ]+ Q3 z, p' d+ Q6 V0 z
  2671. PLA
    ! k7 ]$ l* B5 v; Z
  2672. STA MMC3_BANK_DATA
    1 c  U  C1 W# j; {
  2673. RTS
    $ X% w. Y  C( [: }1 h
  2674. ) i5 Z/ \% X" \2 X
  2675. ;==================================================
    . H3 s% ?) q) A9 B* }# p. Q
  2676. Switch_Main_Bank;切到主程序bank
    $ {6 g8 @8 h0 m0 e
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    # u' Q  Q# ^* ^! `; @
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank4 k+ n. m/ v% P0 h" l
  2679. RTS5 L9 z; i9 e- A

  2680. - O# C( ?4 \0 U6 K/ c! [
  2681. ;==================================================+ ]5 a/ Q6 \& n5 i8 W; n8 @' x& f
  2682. Sound_Reset;音乐重设(如果有的话)4 b* V1 ]" G3 t$ I( R1 A
  2683. JSR Switch_Music_Bank  ;切换到音乐bank4 [* h/ P$ W! S
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    0 M, d+ c& u7 N- X
  2685. JSR Switch_Main_Bank   ;切回主程序' G4 k/ z( k; T# |
  2686. RTS
    " x" |. B  P1 l% @6 a/ W2 F" F" V
  2687. ; O7 t3 x" d2 Z
  2688. ;==================================================
    0 W- d8 p  M0 X& s. ~# @
  2689. Switch_Music_Bank;切换音乐bank
    % d# V" _5 s. o9 E" }: f
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号. d  j# o4 @1 q: f( r  ]9 N* G
  2691. LDA <Music_Bank_80007 [7 _5 q& t1 W# ?( s8 k
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank" l  S! V6 \8 H* B
  2693. LDA <Music_Bank_A0006 z7 E' x) X% q0 A# p) L
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank) ^- |$ Y1 Y. v2 D( M
  2695. RTS# q, V7 K$ |2 D

  2696. ! J$ T0 P/ I6 V# m
  2697. ;==================================================
    0 z0 k# n- h7 k$ Y7 ~6 M/ {2 S
  2698. Sound_Init;音乐初始化
    & E; V, `9 y( r7 m5 S( O
  2699. PHA
    ; d, G& t" a2 b! m/ M# J
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    " L% m" e& v0 p
  2701. PLA6 a. ?0 ?/ G& O, P. H
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    ! I1 W+ M3 \/ h9 ?" S; u! P
  2703. JSR Switch_Main_Bank   ;切回主程序
    " v* a. Y9 S( p' a& v( E5 ]
  2704. RTS' r1 F) N2 C. I8 S9 j* g0 \

  2705. 3 D7 C9 t% i5 z* `9 x2 C/ \! {
  2706. ;==================================================* m" W& g- k' W# n) W2 n
  2707. Sound_Play;音乐播放
    0 M- O& ?$ U' ^5 u4 S4 y0 k+ ]& k0 i
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    7 h! f5 \8 v; O# N
  2709. JSR JSR_Addr_Op        ;执行音乐播放6 E. y) e4 E/ U, ]) S# q
  2710. JSR Switch_Main_Bank   ;切回主程序
    ! F8 J$ _8 K2 @
  2711. RTS
    8 L/ O+ y: Q$ S) t
  2712. , A: q0 ^: h/ M
  2713. ;==================================================
    ! z+ y9 o1 j9 q5 q. A! g) a7 w5 v' M
  2714. MainLoop;死循环
    9 M. _8 O1 [3 C, B& z
  2715. JMP MainLoop
    / k2 N, t9 e! D+ f
  2716. 9 v8 m. ~! @; s  _. i
  2717. IRQ_SUBPROCESS_JMP = 0+ z4 `6 l+ r0 X6 Q

  2718. 5 b/ i5 ?( c+ c. y# f
  2719. .IF IRQ_SUBPROCESS_JMP/ U* K# k" l6 O. z; q
  2720. ;==================================================
      L" {( Y4 h+ y# ^$ L% N
  2721. IRQ_Process_0;IRQ处理过程0# z4 o$ d$ W" B

  2722. 1 w2 O, G3 S$ J% y
  2723. ;15条扫描线后触发IRQ
    / B' ~. r" _0 ^' A4 m
  2724. LDA #15
    " B$ N' u, X8 K( a0 M: w  m$ \# w
  2725. STA MMC3_IRQ_LATCH' B+ f- K0 ^  W! A& p
  2726. : `9 f; R5 v! K: `$ N. M
  2727. ;设置屏幕滚动
    # K8 k; n. S  z' K& Z3 Y& c
  2728. LDA <Scroll_H
    1 B0 q' c( k  {+ d
  2729. STA PPU_SCROLL
    3 |( H0 |) }1 k3 t
  2730. STA PPU_SCROLL
    8 k: x% o6 v6 r

  2731. $ d8 l% [+ V. z. _
  2732. IRQ_Process_0_End1 @- _* j% D* \- p, b2 J
  2733. INC <IRQ_Process_Index: I9 b% @: X, a4 \
  2734. JMP IrqProgramEnd
    : u2 T; _+ m5 h0 c7 l/ G& r" l# f

  2735.   ]1 g! I" n' y
  2736. ;==================================================; V' s# ?3 O+ J% O& u9 E
  2737. IRQ_Process_1;IRQ处理过程1
    - t$ ^+ b( m, n3 G8 E. l  I
  2738. 6 V  e6 O$ b) V! M/ s
  2739. LDA #553 J7 L* }+ }, B
  2740. STA MMC3_IRQ_LATCH+ F) u- D/ {) D# [
  2741. # `7 h" S0 v7 K- f3 g" W4 o5 [7 r% ?
  2742. ;设置屏幕滚动) `- \: h# _. Q
  2743. LDA #$00( @3 l5 R5 ^0 F4 R9 @8 S( T
  2744. STA PPU_SCROLL
    8 P# y# ^+ b, G1 `1 s; o
  2745. STA PPU_SCROLL
    * u( t8 b- y; N/ V% \/ O

  2746. ' q* P+ Q: W2 @5 J% w+ N
  2747. INC <IRQ_Process_Index
      S  [) e# g5 G
  2748. JMP IrqProgramEnd
    $ ^, }* [2 O/ Z  k1 N9 C
  2749. 5 o/ Q7 \4 Y8 `2 {# A$ W
  2750. ;==================================================. v5 Y& x& v/ S: s' J1 o! K7 \
  2751. IRQ_Process_2;IRQ处理过程2" U% y/ T6 B, h5 |2 i7 O8 b
  2752. 8 Q2 K/ ~! q# t
  2753. LDA #15" X- ^6 M* r8 Z5 L' n
  2754. STA MMC3_IRQ_LATCH/ a9 s( y: Q; q& J$ V2 c" Z( J

  2755. - G. M% Z) }( f2 O
  2756. ;设置屏幕滚动/ N$ e; q# h  g+ }1 i: o
  2757. LDA #$00
    9 L) |, ~0 F. E' ?1 [9 b6 t
  2758. SEC
      I2 ?# i7 ^# j
  2759. SBC <Scroll_H% `' H$ U+ [) j8 m# R
  2760. STA PPU_SCROLL
    % u7 ^: D  r4 b& U
  2761. STA PPU_SCROLL) D6 c' V6 f1 R# o0 O. o
  2762. * I' G  G4 I3 V
  2763. INC <IRQ_Process_Index
    / E4 l6 P: f8 E; O: M
  2764. JMP IrqProgramEnd
    ' e, D; K& _+ Y9 B6 Z0 i
  2765. ) F; s, l4 o  r; Q4 s- O' g" Q
  2766. ;==================================================
    3 |( ?5 V- W& x
  2767. IRQ_Process_3;IRQ处理过程3
    8 ?1 O( t) d! y, H" T

  2768. 6 M" L& x- V/ Q6 a
  2769. ;设置屏幕滚动
    ; S& O  L2 f( C
  2770. LDA <Scroll_H
    0 H1 M! E4 q: F
  2771. STA PPU_SCROLL2 H$ r( ?6 o4 m* |
  2772. STA PPU_SCROLL
    : ]3 h6 N' K( G2 u2 v
  2773. 0 G! O5 V( x, s& U6 H1 y
  2774. ;禁用IRQ
    , k/ w6 I; m" X  z5 O& T3 n
  2775. STA MMC3_IRQ_DISABLE
    9 y9 n* x1 q# \
  2776. JMP IrqProgramEnd4 c8 Z( r% `( I- u
  2777. , e4 k, v% M, x; z
  2778. IrqProcessAddr
    6 r3 d# D2 A0 D7 J2 f3 {
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3$ v4 _$ a+ s6 w  W* V  U
  2780. 7 w! r% L8 Q$ c/ {  X7 r
  2781. .ENDIF6 h! n+ ]& Y( Z6 Q
  2782. * P: S7 m0 X+ N
  2783. ;==================================================
    $ L; _5 e# E6 e7 M7 I+ M
  2784. ;IRQ滚动模式常量) Y9 {' V: }6 K- j( l' j, |. F7 m
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动7 |) P8 R  m9 h
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    * r, G# Q# g. q2 P$ o0 B
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    ( p  V& A$ ~# a' H6 h. f

  2788. 8 @) f0 k( f3 D7 w' B3 S1 C
  2789. ;IRQ扫描线数据' ]# \4 w* V- h3 u1 {/ Z/ B
  2790. IRQ_Scanline_Data
    + a- d) I9 [. Y( G+ p. t
  2791. .DB 8, c- x- h- J8 w8 E1 C: p
  2792. .DB 546 J/ W1 A9 y- q: T2 j- z
  2793. .DB 8
    : `2 C# m3 M) H4 E) T# B5 t
  2794. .DB 00 ;关闭IRQ
    - r0 V9 @- \. X7 }) n
  2795. 3 ?8 r" I: p' X* }
  2796. ;IRQ滚动控制模式
    * W. ?8 ?& r8 E
  2797. IRQ_Scanline_Mode& ?- n/ O! r  p$ L; N
  2798. .DB IRQ_SCROLL_MODE_ZERO; b9 H# X# {  V# P  d5 o- h, H
  2799. .DB IRQ_SCROLL_MODE_ZERO
    " e6 @2 m. x$ g/ E( E- o" |- Z
  2800. .DB IRQ_SCROLL_MODE_RIGHT1 |5 R: p9 I# P6 o, w$ `
  2801. .DB IRQ_SCROLL_MODE_LEFT% B) j% w6 y. [# i% x: F

  2802. " s! y, J7 y+ _; M' e  P$ z* t
  2803. ;==================================================/ L/ w7 J, x( a% k/ t" {  V1 C
  2804. ;IRQ处理
    2 I6 ]1 L1 |$ b1 q0 D
  2805. IRQ_Process
      n2 H/ Y9 N2 k: F& b, q; _
  2806. LDX <IRQ_Process_Index
    5 c. C% ~' j) N+ g: ]
  2807. LDA IRQ_Scanline_Data,X
    / J( I4 T6 Y  I8 L
  2808. BNE IRQ_Process_Latch
    1 p0 p- R$ }" k% [" D% B6 i" `% x
  2809. IRQ_Process_Disable;禁用IRQ8 ]: X; m" T# W& y
  2810. STA MMC3_IRQ_DISABLE
    ' t/ \) `4 j+ `. N
  2811. STA IRQ_Process_Index8 c& g6 B$ r% V% u; M3 \
  2812. BEQ IRQ_Process_Scroll
    # u/ ?& |; k. o% a
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    # k: X( U+ T5 O. `6 [6 T
  2814. STA MMC3_IRQ_LATCH( t* o" l9 u* q3 D8 u
  2815. INC <IRQ_Process_Index9 B3 Z+ G, M5 m# s& w: S& t
  2816. IRQ_Process_Scroll;IRQ滚动控制% K  t2 s# G4 r0 x2 ~& G! `
  2817. LDA IRQ_Scanline_Mode,X6 h2 U' f8 ~, A$ \4 C
  2818. CMP #IRQ_SCROLL_MODE_LEFT! B6 G% I# L/ z+ t) f* r$ v% I
  2819. BEQ IRQ_Process_Scroll_Left
      I$ F% ^3 E; v7 w: P
  2820. CMP #IRQ_SCROLL_MODE_RIGHT6 T9 i, n5 x$ H4 r/ y2 C
  2821. BEQ IRQ_Process_Scroll_Right( b2 y/ R8 H3 s* ^7 z6 I4 d. G
  2822. IRQ_Process_Scroll_Zero;不滚动
    . U; ^7 d3 W) b5 `* X
  2823. LDA #$00# d# n" \/ F& C/ o
  2824. STA PPU_SCROLL4 ?: F7 X  q; [! u" X) d4 p& s2 T
  2825. STA PPU_SCROLL5 K! P; o0 L' F
  2826. RTS+ k; [: d, o% o1 M, S' d
  2827. IRQ_Process_Scroll_Left;向左滚动
    1 |' H* {1 r+ k3 f" m& _
  2828. LDA <Scroll_H( d' b, g9 {: l* M( x0 O
  2829. STA PPU_SCROLL
    ) {" T' U$ |1 U  O! H1 d! m
  2830. STA PPU_SCROLL0 S9 b# }% L$ e+ p9 l' j
  2831. RTS
    2 F  T( n9 M% S2 {$ D/ l
  2832. IRQ_Process_Scroll_Right;向右滚动
    7 K  D* B4 I) w, k
  2833. LDA #$00
    : B0 l# J! T8 N# ]) O. m
  2834. SEC
    * _( Y  {# G& H
  2835. SBC <Scroll_H
    + g# F# u, m# a
  2836. STA PPU_SCROLL
    , z: W- K: {! k
  2837. STA PPU_SCROLL
    4 u; @. g7 v: I2 s/ B. N( I6 A
  2838. RTS
    : T6 I; y' F4 [2 n+ [3 l

  2839. ) A( b/ H! k7 k) a
  2840. ;==================================================
    * E) ^9 v8 b3 Q. a3 ~
  2841. NmiProgram;Nmi中断处理
    7 J2 ?' O: c: y& ?
  2842. PHA# H9 s+ J* H4 w. `
  2843. TXA# `! S  m& g/ P1 W3 v$ X3 X( R
  2844. PHA7 D8 Y; M" ?$ e2 |
  2845. TYA
    4 N( S$ w3 i; |0 E: p
  2846. PHA- H' s& u' x! A3 l% q& E1 [' F2 f: A
  2847. , [/ h$ C# L" k/ r
  2848. ;读取清除Vblank标志, 防止重复进入" N- S* g- j8 [7 p- G1 J! D
  2849. BIT PPU_STATUS" x5 `% }. p( F' w* z

  2850. , z0 @2 t) _. O% m% ^. q. w! q9 ^
  2851. ;切换主程序bank
    8 ?1 G* B3 u( u9 u" r
  2852. JSR Switch_Main_Bank. t- k& V9 Y8 y; ~! Q

  2853. ( K, R. X' b! J' @; T" v3 v5 b
  2854. ;Nmi处理
    % `  d$ z. R( t% c- V
  2855. JSR NmiProcess. _& N  _( q; y% V6 o! N1 c1 D' J  h
  2856. 5 G% q9 H; J  Q% a( C# E7 X- _
  2857. Nmi_Proc_End# x. y. Y( u8 d' s7 T& Q
  2858. PLA
    8 _$ C! q/ W% d
  2859. TAY7 Q; ]6 I- Q0 V- f4 N' Q  ]
  2860. PLA
    0 r& G" r; @, R  Z4 S3 V. h
  2861. TAX
    0 q6 V# O& ]1 c: L7 v9 p
  2862. PLA) Q2 r. u& {. w+ s
  2863. RTI- b; E, K) X4 b. F) q8 n( b" h

  2864. - N( k7 n  C" ]' \# m" r9 H& w( \' P
  2865. ;==================================================" D/ N& A/ d8 ^. w: R- F$ d
  2866. ResetProgram;重置中断处理# c/ h3 _  {; @: d
  2867. SEI
    ) E$ M- Y  h' X' `
  2868. CLD9 ?% _( \; s$ w. D: l& H
  2869. LDA #$00
    , V; F9 v) ]7 p- x; ?. A8 x9 o
  2870. STA PPU_CTRL
    3 b5 G9 a5 T0 P6 a
  2871. STA PPU_MASK/ C- o! g% ~+ P" {( {" M
  2872. . _4 z# u- [0 y( _5 a
  2873. ;切换主程序bank5 A5 G* H" ]' W) d/ z
  2874. JSR Switch_Main_Bank2 a4 f' I8 ]3 ]; p

  2875. & P  ^3 a/ ^, H7 }
  2876. ;程序处理开始
    ) G6 n9 A- \% s( ]+ K: E
  2877. JMP ProgramBegin+ A) s3 _% [9 z& ]8 l

  2878. ) B! j3 r2 C5 c2 A1 t. x
  2879. ;==================================================
    $ I+ |3 x) t* w, {' a1 k! c
  2880. IrqProgram;Irq中断处理
    2 L+ {5 v/ c: t
  2881. PHA
    & @+ @# r, l: H
  2882. TXA
    # ~4 j$ [6 H, P5 ]8 D
  2883. PHA3 t7 o6 Q  M/ c0 ]* o: x
  2884. TYA
    7 u8 J$ `( \' v+ A
  2885. PHA( L; N. _+ k/ X  r$ i; D/ N
  2886. 8 {' ^4 t% D. _3 |5 t5 X+ k; d
  2887. ;关闭IRQ7 Q( M1 N$ X& P  d# Y! M
  2888. STA MMC3_IRQ_DISABLE$ v& r6 L4 G$ c( o3 H+ v3 \% \

  2889. % j2 q, K3 f  S: |
  2890. ;允许下个IRQ触发
    # X! v7 U- k; V+ M
  2891. STA MMC3_IRQ_ENABLE, C5 A" R8 z1 i) W
  2892. " Q/ T  ~1 g1 l4 b
  2893. .IF IRQ_SUBPROCESS_JMP( N( G/ W% I; D
  2894. + M; T" m7 H9 v+ w' G
  2895. ;执行IRQ过程2 P6 v% C' e3 f1 i7 h4 v8 `. Q
  2896. LDA <Data_L
    - \4 H; S$ \- b4 c
  2897. PHA
    % F* ~2 Y/ B7 N% h- {* E: I
  2898. LDA <Data_H
    , z+ D, B% e" v# A
  2899. PHA4 Z+ c* |8 K9 {  Y9 v9 E
  2900. LDA <IRQ_Process_Index5 S  _$ C3 x2 E0 J" L/ _1 H
  2901. ASL A
    ) }% s+ j7 n, S" b6 |3 N4 u" O4 Q' Q5 k
  2902. TAY, ^" z* G  H# l- @
  2903. LDA IrqProcessAddr,Y
    / `! \3 c2 v. {4 z7 C
  2904. STA <Data_L
    * R. b& k. {. Q1 h
  2905. INY. l9 H$ h5 L/ k. V( L
  2906. LDA IrqProcessAddr,Y
    5 o& l. o( T# F8 {' Z2 {9 @
  2907. STA <Data_H
    + e3 J9 t- O+ Q0 ~) j2 [' c
  2908. JMP [Data_L]
    + d2 @+ e% m: O* T& m0 r
  2909. ) t5 \5 F5 h, g4 Z7 ~2 ^
  2910. .ELSE5 r/ s3 b) H7 c$ @
  2911. 7 O. h+ x4 \- s1 o1 l7 ?; B
  2912. JSR IRQ_Process% C8 A: C5 c+ K% N

  2913. 5 ?7 Y/ }! C* t2 y* C& q! f
  2914. .ENDIF$ q' @+ c3 f! G

  2915. 2 J7 Z0 v# S5 P- r- v: y
  2916. IrqProgramEnd
    0 B. ^$ E0 I" ~9 }8 k
  2917. .IF IRQ_SUBPROCESS_JMP
    1 u/ A# z7 }+ p* h3 T
  2918. PLA' a5 \4 u0 ~9 g& ~6 n2 n# {" m
  2919. STA <Data_H
    ; O3 I" V/ W4 `) ?2 ~5 g& P* W
  2920. PLA
    ! r5 w  [: m  p: O% `# V/ B
  2921. STA <Data_L% O* k- g2 h3 ]6 u! {/ s
  2922. .ENDIF
    % E) o+ K" N+ R& \% U
  2923. PLA8 P4 B1 S' F/ w
  2924. TAY
    7 \2 Y7 f) P/ W
  2925. PLA1 y3 R. u% {  l* Z3 R0 n; J2 W
  2926. TAX
    * T* M! K+ G, s0 m1 X3 ^
  2927. PLA
    + @% H. M4 n! |6 r. m* I
  2928. RTI7 |2 m: f$ q1 I4 \7 _) @9 b

  2929. 9 W% N. M4 e' m  P; ^7 x) C, j
  2930. .ORG $FFFA
    , w- B% b# h- W1 O7 Y3 O4 G5 J' s/ a
  2931. .WORD NmiProgram
    0 r/ y9 C# d2 y. E/ }
  2932. .WORD ResetProgram6 y1 M& y! E! T1 [2 q
  2933. .WORD IrqProgram
    1 u# B  b- P/ p2 U+ R) Z: A

  2934. ' a1 e1 f( Z  ?5 I( j
  2935. .BANK RESET_BANK & BANK_DATA_MASK
      p7 h3 l2 h4 s% C/ P1 ?! B
  2936. .IF SOUND_BAR_SHOW_ENABLE* f- A$ ]! ~, }, _
  2937. + b" w: p; ]; U! G: l$ b& \
  2938. .ORG $FE00
    $ P4 K! I) w2 P% s: A4 I; ?4 q+ s" p
  2939. PHA
    " u% H) L7 @! r! p0 _
  2940. STY $07BA
    " C! Q% {% c% ?3 e# k8 d
  2941. LDA #$8D' U2 s' S5 O) q
  2942. STA $07BC; |* k1 D( M" e8 |( @
  2943. TYA
    # o, ?+ A* N. Q; O& ~6 j
  2944. CLC
    ' u# d7 q' F7 o3 W
  2945. ADC #LOW(Sound_Bar)
    4 n* b0 f6 H4 {" V% H
  2946. STA $07BD
    / `/ B. j0 C  P2 `* @1 e
  2947. LDA #HIGH(Sound_Bar)
    - Z7 Y2 i0 ]) v5 M- v0 B7 a
  2948. STA $07BE2 S# i+ k5 r4 q* }/ o& T3 K
  2949. LDA #$60" O' ]: i4 H! z5 N& r+ e4 N3 A
  2950. STA $07BF4 g" A5 f+ K3 d* ^' P0 k
  2951. PLA# [4 `: z; H; y/ J
  2952. RTS! }3 j  Q2 a2 M! H: l7 @9 ~0 d

  2953. 6 B; G& C# y3 \/ c/ M
  2954. .ORG $FE20: b, x2 C* e2 J; R; S& C
  2955. STA $07BA9 O0 q" a8 _; F  a, l
  2956. CLC/ ]6 J! m) l1 K1 F6 d7 S/ f1 x
  2957. ADC #LOW(Sound_Bar)
    ) n, Y# L5 [% g
  2958. STA $07BD: z2 B( K  G7 F7 I. Q+ u8 Z
  2959. LDA #$8D
    4 R- @: U. {3 B1 b( \; }
  2960. STA $07BC
    # M  N  R6 r8 Q. x% D6 J: S
  2961. LDA #HIGH(Sound_Bar)8 n1 r* ^% n) X" q
  2962. STA $07BE
    4 O4 u$ h. t  s+ l+ o
  2963. LDA #$60/ n2 s* X2 }) R5 _/ |
  2964. STA $07BF
    ' W  G2 Z6 z1 A
  2965. RTS* y; Y; [! E5 Z

  2966. ; t7 F: c2 P( @  u$ t
  2967. .ORG $FE40
    9 x- p  }, E4 V2 L2 t1 j  a% Z% S
  2968. PHA3 N1 m$ H& V# A* |
  2969. STY $07F1$ w; k3 d* e" c
  2970. LDA #$8D
    , x+ K! _) z3 Q5 g. |3 M
  2971. STA $07F3
    . Q5 B; w6 ~) t$ ?
  2972. TYA& g, G& |7 D& Q6 W( P
  2973. CLC
    9 s  f5 Z+ w: Y5 z) z$ Y- }
  2974. ADC #LOW(Sound_Bar)+ ~9 e/ i' }, B
  2975. STA $07F4/ R5 ]+ ?$ [( m/ v8 Z
  2976. LDA #HIGH(Sound_Bar)* e+ E/ f0 w! ]2 |
  2977. STA $07F5
    ( Z; B3 d. J) D0 U$ U! M2 w- }" {
  2978. LDA #$609 Z* N3 B; O2 [4 Q7 T$ A) C, G5 U
  2979. STA $07F68 [  o, _: N. x& {
  2980. PLA8 B5 P" _" M" P! A
  2981. RTS* o+ L' h- J3 W  o8 U
  2982. : M: [2 q. q* y4 `5 V2 W+ h
  2983. .ORG $FE60& N/ Y7 I+ C' l
  2984. STA $07F1$ T2 c( l! M4 L  b
  2985. CLC; \- T; |7 @' ^7 n. p& ?
  2986. ADC #LOW(Sound_Bar)  `, K) ^% v- F% `7 m/ F- o$ L
  2987. STA $07F4# U0 v+ ?, E, Q0 v: {2 q* P+ W% m
  2988. LDA #$8D4 v0 z9 w' y" S+ C. e5 [- B
  2989. STA $07F3/ Y: d6 T4 }. x$ W' J* t* s6 n1 ?( h
  2990. LDA #HIGH(Sound_Bar)! m8 ~0 X7 j1 w4 A
  2991. STA $07F54 ]( `& l& W1 s8 J$ r4 L$ [! X6 g
  2992. LDA #$606 A$ P: W2 C6 [) `5 m% ]8 s
  2993. STA $07F6
    ) o4 r2 l& F# K
  2994. RTS% m4 K( b& v1 [
  2995. 9 F3 [9 f; V) h' ]' b* S
  2996. .ORG $FF40. Z$ S! v4 V, z: X" ^1 G' \
  2997. STA $4000& r6 i7 X" S7 ]# U5 V: j
  2998. STA Sound_Bar + $00
    - {$ X* `* S. M# ~# {) e' P' g
  2999. RTS
    8 ^* X) H5 M$ r8 J* C* @
  3000. ( E1 N5 _! A/ F, S) x
  3001. .ORG $FF48
    , N9 g3 H5 }- B& c: `
  3002. STA $4004( R" h/ U4 w& B/ I
  3003. STA Sound_Bar + $04
    $ G  }( ~! h" R5 J  T& Q& ~
  3004. RTS6 v+ _7 p# k0 ]+ w* O2 j' O+ ~
  3005. 9 h( P7 N2 b5 b
  3006. .ORG $FF50
    ' ^) h  U* B/ W% J4 {* j9 z
  3007. STA $4008
    ) H1 C& a* c' L
  3008. STA Sound_Bar + $084 D5 R! ^/ r( Q, W1 S" U0 E
  3009. RTS9 _8 r/ z7 |$ }6 b9 g7 m; l
  3010. % `) \9 v3 r* M4 F* [/ [
  3011. .ORG $FF589 d3 C2 s& [* C
  3012. STA $400C
    5 |# W/ V) T% ~! W" x6 M$ k& V  i
  3013. STA Sound_Bar + $0C
    4 ^) p9 B; p/ I* e
  3014. RTS
    ' s" r2 P" l) @3 n5 D

  3015. ' G& ]6 W2 t# ~) j! ~$ h) d) P7 v
  3016. .ORG $FF60' {+ v5 d2 `2 J6 o
  3017. STX $4000
    : G' Q4 l, ^7 {7 v
  3018. STX Sound_Bar + $00
    4 J2 T2 r6 x1 y) H' z
  3019. RTS
    3 L3 ?/ g4 z0 j" n
  3020. + N- T2 i) T0 M' F4 C" ~
  3021. .ORG $FF68
    + D' I9 [; |! D& |' `5 _  B
  3022. STX $4004/ }- D3 l4 o; _
  3023. STX Sound_Bar + $04
    & Z, ^" G- p* [5 f: [& {5 c% R
  3024. RTS
      o0 r- e9 ?/ s  ?( D  V

  3025. ! w& b4 y' |8 s' [/ d- x' }& [8 \# Q
  3026. .ORG $FF703 s* f7 K1 u- J; }. `" v
  3027. STX $4008
    ( {) K) [% T$ x$ c3 X
  3028. STX Sound_Bar + $08- r# ~7 _& e( P0 d) r% u  z& b
  3029. RTS/ U1 V! V8 b) Z: {) Y1 f8 o8 D

  3030.   C8 s& {5 v) _$ b' }/ y
  3031. .ORG $FF78
    . N, l( O! Y7 o- `4 W0 J- Z( [4 C6 U# y: n
  3032. STX $400C$ G* _6 {" |) x/ p9 S2 v5 J
  3033. STX Sound_Bar + $0C% r+ N" h: t2 s9 K
  3034. RTS/ E+ s& q4 ~& ?
  3035. - ?& k; X8 E6 V. |' D. b
  3036. .ORG $FF80
    % t; G  j' g8 o
  3037. STY $4000# ?- T* V3 `* ~( @3 U( E. h
  3038. STY Sound_Bar + $00
    9 L+ [% ~/ o$ O
  3039. RTS" K7 j' g1 w2 E: `9 g% u: E

  3040. $ A2 d4 n. Z$ g) @5 M
  3041. .ORG $FF88
    5 ^7 a! x( {# r% A* C  ]' Q
  3042. STY $4004; [* D$ H0 [0 {  g4 e
  3043. STY Sound_Bar + $04
    ! O' x6 C1 ?6 R2 {2 D6 d
  3044. RTS
    $ p1 D1 {3 l& R6 {* o# n
  3045. ; _. p- f: g% u) B* P3 Z
  3046. .ORG $FF90  u! u0 q& E5 d
  3047. STY $40082 i; a' W. }) u2 C3 D& |
  3048. STY Sound_Bar + $08
    - x0 ]/ B) o& G* _4 U  h
  3049. RTS
    6 z2 t; Y7 i$ g3 U8 p( f: C* J# ^
  3050. 7 I: W! j, u$ Z8 x
  3051. .ORG $FF98# T+ x/ f. ]; }
  3052. STY $400C" R- U5 l# [' v1 i9 X$ |
  3053. STY Sound_Bar + $0C
    + k  B! t3 D2 k) h! o9 f
  3054. RTS, Q6 m$ B* s5 w
  3055. * H% \) C" t$ o2 G- b
  3056. .ORG $FFA0
    0 y. p! e  R) T8 E4 H$ A; d* N
  3057. STA $4000,X/ _% X; Z/ ?, m, `, d- [- C9 I* ~7 k* ~
  3058. STA Sound_Bar + $00,X9 v( C9 F& R. R+ `) P
  3059. RTS8 _  c7 O& s- ]

  3060. ! v' y  q+ Z0 `
  3061. .ORG $FFA8
    - p3 b$ K! E5 v2 @* h8 P  D
  3062. STA $4000,Y
    5 H% p, n% }0 C
  3063. STA Sound_Bar + $00,Y
    7 I/ B1 y; X2 @4 p. H
  3064. RTS
    2 Z. H0 c4 G$ y8 d, E
  3065. 4 ^2 o" ^2 Q4 U( J  f' p
  3066. .ORG $FFB0) m$ f- {( w# T. ?, J2 h
  3067. STA $4004,X
      N1 ]! j- ~& T0 g  O8 A& D
  3068. STA Sound_Bar + $04,X
    ( y8 }/ E) q  `5 y# ^* ]5 Z$ ~
  3069. RTS
    2 N+ S) L  D& A- i1 g0 e

  3070. - |: P) h9 s) j
  3071. .ORG $FFB8
    $ a7 @9 z* R5 o$ j+ F5 z  I2 ]8 c
  3072. STA $4004,Y
      c( N! Q- A+ `. g
  3073. STA Sound_Bar + $04,Y
    : B4 M4 G7 \! Y& W
  3074. RTS
    , T2 M. Z5 w/ p( s( G

  3075. + r1 f6 M( S$ o6 U
  3076. .ORG $FFC0
    3 [* L9 z0 k* U6 [0 D" L
  3077. STA $4008,X6 P3 h2 K' Z; x& H; F( C6 B" ?
  3078. STA Sound_Bar + $08,X
    5 o' I" C- i8 Z) {0 U5 M
  3079. RTS
    ' v. M! M0 M' n5 V  A
  3080. % m4 P0 H5 O, O* E" Y* x, E
  3081. .ORG $FFC8
    $ v  u' c; C3 r; Z: k5 B
  3082. STA $4008,Y6 N9 ~! U1 K) E
  3083. STA Sound_Bar + $08,Y
    2 v  n: e; e0 m
  3084. RTS
    1 C3 X, }$ Y# n, D! u7 j
  3085. 3 J  O- A3 v- p" d5 Z4 \
  3086. .ORG $FFD0, O- U/ V1 _, f. V4 m# j
  3087. STA $400C,X
      j. o" N& }' k
  3088. STA Sound_Bar + $0C,X8 V! G5 f* l; t8 p2 m7 m
  3089. RTS
    ) l' C1 S" {/ U( i# T" h' }

  3090. & \6 y! Q4 ]! l' m2 o
  3091. .ORG $FFD8$ H0 D! B/ U3 _
  3092. STA $400C,Y
    5 o  [" \2 y+ b+ f: l3 d0 F: x8 ~
  3093. STA Sound_Bar + $0C,Y
    : v# M1 Z) C* e( o3 R! Y. X+ K
  3094. RTS
    8 v' n0 g$ u" n9 c  w

  3095. 1 X9 @- q$ G& Q7 q
  3096. .ENDIF* z2 R' ?4 q, Y1 _% F8 Z
复制代码
5 a; c5 z- }0 e2 h
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3302 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-27 06:47 , Processed in 1.096679 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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