设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
5 O. _! n8 X$ C4 u& r6 D% P  s4 P- ^) f8 q
[FC][音乐12 IN 1]
6 Y6 i4 x6 l" n* q5 {( Z时间: 2023.07.239 B% v" j; j1 b9 D5 g9 G7 Y
作者: FlameCyclone
4 J# U* R: K6 _$ r8 K, j5 Z) S; x; F1 b: |" ~8 F) N9 y
收录音乐内容:
  l* i( y+ ]1 V5 B9 C2 w% e9 C! G1.Raf世界
, L9 v) m) s/ o2.最终任务8 |1 J- Y1 @* P% w2 a
3.赤影战士" _: ?3 |8 j& ]0 P. ~2 j' q2 v
4.双截龙* O; }. S* @0 T0 o- a# C- Q
5.双截龙2
" |- i+ j! K0 ^! h6.双截龙3
/ I" {, ?  X' D1 ^7.洛克人
9 e5 p" i7 H# Q" g8.洛克人2
$ Q* p! ?9 k  T: l; T' e0 j9.洛克人3
: n8 p+ F0 _: g10.洛克人4; d( ]  o2 v( K( m, `
11.洛克人5& M. k8 s' W& \) s/ l3 h0 z, i% G
12.洛克人6: y$ I* |# ]. K5 _
2 [. Y5 M; l" Z/ ?. p
操作:
. R/ z# f1 E7 C9 G* f上键:         上一个专辑& e1 S. ?& W+ S4 w
下键:         下一个专辑  M( a' L- V$ f0 o! a- E
左键:         上一曲9 Q, ^! j# C. u% W/ R
右键:         下一曲
- B! S: i: h! [( _# GB/A键:        前10曲/后10曲, G4 v0 |7 k8 g' N% v* _
选择键:       下一页
/ d9 X- y9 S/ b开始键:       停止/播放
' ^% N9 w) ~4 H7 Q
( i* w, S2 r6 U: Z8 I0 Z; @7 k% vhttp://flamecyclone.ysepan.com/
- {9 t. V2 C; }5 i( G2 I0 C% a( g5 ?

0 o& Z2 J1 s/ J8 S* v  q
  R) Z2 F9 S% T. ~. h
. I5 L9 o& ~7 F% S6 e
  1. ;[FC音乐][播放器模板]5 s, x9 f' n" n9 F; H
  2. ;FlameCyclone 202307106 d+ E# h, q  b2 g8 ?
  3. - g0 X: A3 x& y$ e- V4 Z; G
  4. ;文件头2 m% P% i: M8 i! }
  5. ;======================================================================% O1 r, ~6 ^& i5 b
  6. .INESPRG 16                                             ;16KB PRG 数量  z# `* `, p6 `4 U
  7. .INESCHR 1                                               ;8KB CHR 数量5 m& v! k: R$ m, ~% T; c7 v
  8. .INESMAP 4                                                   ;mapper 4
    # Q$ S  F8 ?2 `1 N* y
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直- S' q4 j3 q! S& O$ F( C

  10. % L6 U. I( ^* f2 z2 M4 Y
  11. ;==================================================, \$ \. @* A% V7 U1 z+ H
  12. SOUND_BAR_SHOW_ENABLE       = 14 k! I5 c/ h  n  N8 V8 a
  13. ;==================================================0 c, U% w" B% D0 Z1 Z
  14. BANK_DATA_MASK              = $1F
    ! ?1 G& p# s3 P0 t
  15. CHR_RAM_ENABLE              = 0
    ' D% A9 b0 g0 \- E
  16. IRQ_SCANLINE                = 136
    . g# i1 W- Y6 @, W: Z8 M
  17. ;==================================================; Z& R. E5 l* a) }% V8 E) A  P  n) t
  18. SOUND_DATA_BANK_00          = $00
    $ A+ c* N! v6 a
  19. SOUND_DATA_BANK_01          = $01: E/ P$ G2 h% V
  20. SOUND_DATA_BANK_02          = $02* k: l; t9 H) a1 ?
  21. SOUND_DATA_BANK_03          = $032 n: M6 A) ?, P, O4 g1 g, _
  22. SOUND_DATA_BANK_04          = $04  r# A9 n/ M7 @- I: y- D9 A2 P2 n
  23. SOUND_DATA_BANK_05          = $056 O# ?) X& H8 p3 |! v
  24. SOUND_DATA_BANK_06          = $062 ], |# O3 W, c+ j# C" Z
  25. SOUND_DATA_BANK_07          = $07# t! p" c/ k" y4 z: H; x
  26. SOUND_DATA_BANK_08          = $08
    . ~$ C' U2 i) X3 ~  A0 `  {0 N% H
  27. SOUND_DATA_BANK_09          = $09
    , W& q% K& K6 m/ H% j
  28. SOUND_DATA_BANK_0A          = $0A! b) i" {) Q- G* z& E
  29. SOUND_DATA_BANK_0B          = $0B
    / O- b+ E9 O3 V
  30. SOUND_DATA_BANK_0C          = $0C7 c9 _8 G- W( V$ i6 Y
  31. SOUND_DATA_BANK_0D          = $0D: k" `; L9 g% R" _
  32. SOUND_DATA_BANK_0E          = $0E1 O3 P& z$ M3 M- C/ s
  33. SOUND_DATA_BANK_0F          = $0F# [( p$ u. K8 A
  34. ' r' |% K& p  |7 q2 [9 i( _6 X
  35. SOUND_DATA_BANK_10          = $10/ j* [  f" s. r3 s0 k; e6 l8 }
  36. SOUND_DATA_BANK_11          = $11; V9 X5 p4 d; [
  37. SOUND_DATA_BANK_12          = $12
    8 o8 ]% j2 j$ B( `3 o$ N
  38. SOUND_DATA_BANK_13          = $13! R9 L8 u5 O" I& c0 @( x8 d: m
  39. SOUND_DATA_BANK_14          = $149 |& C) O7 [. ?( v  t6 g
  40. SOUND_DATA_BANK_15          = $15
      l, R% ?+ e- @+ M0 j
  41. SOUND_DATA_BANK_16          = $16  b  u' H+ z" m/ C
  42. SOUND_DATA_BANK_17          = $171 }/ `3 V8 G. U# @# ~
  43. SOUND_DATA_BANK_18          = $18; h) w* ~, ^3 n6 \# |5 y
  44. SOUND_DATA_BANK_19          = $19) o2 l. O3 F5 c8 D. K
  45. SOUND_DATA_BANK_1A          = $1A
    - O8 E" `' k& c; ?
  46. SOUND_DATA_BANK_1B          = $1B
    ( ?" c, E) z" H/ k; ^! ?, p7 H
  47. SOUND_DATA_BANK_1C          = $1C$ o. v& n; U8 X1 A
  48. SOUND_DATA_BANK_1D          = $1D
    / X6 g* ^! e3 B2 n, U& |6 K$ l

  49. ( Y, S1 G. R4 L. X/ i0 o- y1 Y
  50. SOUND_DATA_BANK_C000        = $1E8 T7 j+ Y& R: R5 ~% V# t- I; y8 X4 G
  51. SOUND_DATA_BANK_E000        = $1F! @8 Q" ?2 C; m  M# N+ e: {
  52. ;-------------------------------------------------" @6 \" n7 D7 J1 {  m2 t7 S
  53. CHR_DATA_BANK               = $20/ x+ A+ m2 S/ c4 Q" S
  54. CHR_DATA_ADDR               = $A000
    , s% _+ X0 k( J0 `+ y7 m- |" k8 s
  55. ;-------------------------------------------------: o' w( Z' _) G6 E
  56. PROGRAM_BANK                = $00
    7 M5 E% Z, E5 t, h& F: ?
  57. PROGRAM_ADDR                = $8000
    6 \3 c4 G% o+ W6 T" U! n
  58. ;-------------------------------------------------
    " Y. s9 H+ t4 Q8 k2 S
  59. RESET_BANK                  = $1F
    3 y! U7 b8 |! A# Z  Y
  60. RESET_ADDR                  = $FD00
    ( W0 k' i4 E7 Z8 X! x2 ^9 B) F2 @
  61. 4 R; w: A: P$ w, ]7 L  M2 _3 s
  62. ;==================================================0 f* F0 _' O3 a9 }3 E* K& o
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数2 B6 S& X; G8 W5 P( O( N
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引" f5 d  n3 _6 s" ]& k1 [. W
  65. PAGE_SIZE           = 5                     ;每页节目数
    3 f; _1 ?6 ~. T& k
  66. 1 s( s  U- R6 x# G
  67. ;==================================================
    / Q5 f2 a8 |# N! Z2 V
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除! n; [2 E1 t8 H, T5 K
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    ) E/ I4 A% x- [
  70. .ELSE
    - {0 w7 g' Y+ u
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    # G$ r8 v% A# T6 P2 L% X  T
  72. .ENDIF% L: j  Y1 K$ R# m! d6 g
  73. 6 d6 J: Y8 N! V. \, Z3 Y
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    ( e9 m% y2 q3 w6 l
  75. # J/ b" d- S1 O# H8 e% @, Q  G6 A
  76. ;==================================================
    / z- W  K5 O$ b* h% e
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置- n" F, Y7 z6 ?7 r
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 20 n1 C! U) s! P0 J
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;) r! T3 n! X4 w* x1 I* ?5 Z
  80. ;==================================================
    % D7 G$ t: l5 o
  81. Caption_Text_Pos    = $204D ;标题文本位置5 s0 R: }/ U" ]5 D4 h( j
  82. Author_Text_Pos     = $2324 ;作者文本位置* j5 m; }  v0 ^- v0 ^9 ?, E  w% k
  83. Date_Text_Pos       = $236B ;日期文本位置  a, Q6 m. N9 P6 j: k4 H' [8 J
  84. ;------------------------------
    8 B9 l. x4 d! Z. q/ f
  85. ;------------------------------( f4 K  o9 H2 n& Q9 r
  86. .IF SOUND_BAR_SHOW_ENABLE; P3 ~7 J6 O5 H% |4 q  p

  87. - u% o: D- h8 \- G; p
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    6 y9 z1 a* G/ T* A
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    2 X+ F3 [- I& w- p1 Z0 m
  90. Play_State_Pos      = $22F3 ;播放状态位置3 g8 j7 Q7 T# y" X

  91. 0 u% Z# d/ j8 l" [/ K
  92. .ELSE$ K: U3 B+ P9 Y7 r, G

  93. 7 F* e1 ?% Z7 x7 j
  94. Play_Index_Pos      = $226C ;当前曲目位置
    / F- [' s% H7 n7 A( M! Y8 |7 K( X
  95. Play_Time_Pos       = $22AC ;播放时间位置, N% i# R; c" }
  96. Play_State_Pos      = $22EC ;播放状态位置
    1 e9 C! R- l4 u. z( N* T
  97. & ?7 L! S; R$ v% I  f7 p2 a
  98. .ENDIF1 E) F9 M1 E3 @, e' P# P( h" A
  99. ;------------------------------' [3 {0 ?) d3 X, n; s
  100. Track_Name_Pos      = $222B ;曲目文本位置/ t- K1 X8 [+ L4 S
  101. ;Track_Name_Pos      = $00 ;曲目文本位置- Z5 R: ~+ u# D$ i- x. A
  102. Sound_Track_Pos     = $2265 ;声道文本位置# v) x% n. v6 G3 I) o
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    7 P1 i! W6 e3 n0 e. X+ ^
  104. ;==================================================7 S3 l/ n: r% |: U/ }
  105. Scroll_X = $008 }7 `$ d9 o" R( S1 j, s" r9 x% {% `  o
  106. Scroll_Y = $00# y! w* q) n% r: l$ E) ?3 W
  107. ;==================================================& H2 S) D5 Y* a$ [: O# t  b
  108. Sound_Ram_Addr_1       = $0100
    4 i: O2 G  A0 {5 e( p* B9 U
  109. Sound_Ram_Addr_1_Size  = $80% R7 E7 N) p) Z7 k5 P/ p/ Z& L) S. t# e
  110. Sound_Ram_Addr_2       = $0090" c% H9 f4 y* R% z2 W; j
  111. Sound_Ram_Addr_2_Size  = $70; Z6 R( V9 _4 V0 g. N
  112. Sound_Ram_Addr_3       = $0700/ R# A6 t& c1 {9 n; l, g2 ?' R
  113. Sound_Ram_Addr_3_Size  = $00% p& ?/ N8 O' d# w' D9 ?
  114. Sound_Ram_Addr_4       = $04007 z& S1 L, N: k" u
  115. Sound_Ram_Addr_4_Size  = $00
    & k* l$ I' W4 f4 ?2 j3 x) p1 b
  116. Sound_Ram_Addr_5       = $0500* F$ O: y7 }- a. B9 h; v  J
  117. Sound_Ram_Addr_5_Size  = $402 M7 h1 M3 R  B) _
  118. . u. ~4 f% ~! M
  119. OAM_TEMP_ADDR   = $0300/ a- j& s2 l: ^+ _; M

  120. 3 ]6 ], c6 {9 {& ^) ^, `0 C8 x
  121. ;==================================================
    , U3 [9 }0 K. V
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    ) e4 r0 B4 Z% l# B8 I: @
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    2 ^! S5 X( d7 m
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    " w' j' k% n' K' A) x  @# S
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1+ k  n% M7 c+ z$ c2 R
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加10 l# U! p3 n4 v: ?( w
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    ( e9 o( }+ R: l6 f
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
      r* p& K4 A0 {
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    7 @+ ~: B1 v4 U8 j$ a
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存; D; F5 q& y0 l) [5 @, _1 J& r5 n/ u
  131. APU_STATUS              =   $4015   ;声音通道切换* M$ J: Q" M( }) D' n* h
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    6 S' Z' `; u/ D  o3 s
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    . B( _4 u8 |, K7 ]
  134. ;==================================================( b5 {, n; C( S: p8 H2 T' [
  135. MMC3_BANK_CTRL          =   $8000( r1 g7 n' ]1 C% ?% I
  136. MMC3_BANK_DATA          =   $8001
    ( |4 x1 L8 G, @
  137. MMC3_MIRRORING          =   $A000
    . _9 ?- s, i* d+ i) B
  138. MMC3_PRG_RAM_PROTECT    =   $A001& T; v2 h; a8 e% u$ P
  139. MMC3_IRQ_LATCH          =   $C000
    ( P' Y/ q' E4 R7 a
  140. MMC3_IRQ_RELOAD         =   $C001) B: r+ X' U" x: \9 T/ G) e
  141. MMC3_IRQ_DISABLE        =   $E000! m% w9 n) n, J: m% \; u
  142. MMC3_IRQ_ENABLE         =   $E001! o+ g9 P$ Y+ s' T* F/ G/ v5 H; k
  143. 7 ^2 F4 ]0 I& m: Z; Y5 t* w
  144. ;==================================================
    ! L9 z) g, o5 N' H
  145. PPU_Addr        = $02006 d7 }8 N5 u" w4 {: f8 `& t1 ^
  146. Palette_Addr    = $02C0
    + Y8 ~' ^; ^5 {3 J" U0 r9 [
  147. Sound_Bar       = PPU_Addr+$E0
    / b0 Z% I, v, `- i
  148. ;==================================================. Z. u- m, N' P3 N, L8 b
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    - N5 T, n8 W( \- F  _0 ]" J' x
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
      c( t& r( I3 s3 o. x; ~6 d8 \" w
  151. PALETTE_UPDATE_MAX      = $2C1 d) p. A- f. D$ T" x3 D
  152. PALETTE_UPDATE_MIN      = $21
    - p1 G$ m( k* G+ @
  153. PALETTE_UPDATE_INTERVAL = 60
    8 b, r. q# l' f. ?9 ~8 E8 t
  154. ;==================================================
    ) Q6 E7 D7 f# ^' w! }& }
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    5 X! P' `8 M# N0 I
  156. PPU_Cur             = Sound_Bar_Cnt+$024 v9 d, v2 O5 i8 |
  157. PPU_Addr_H          = PPU_Cur+$036 Q$ {) B, G  l8 l1 w- L
  158. PPU_Addr_L          = PPU_Addr_H+$042 C3 z) P2 ]- [4 c0 g  q
  159. Screen_Ctrl         = PPU_Addr_L+$01
    9 F9 y/ x5 M  \6 \: T" n& d9 V4 z
  160. Screen_State        = Screen_Ctrl+$01' P+ |8 P/ [8 n9 v6 R) r
  161. ;==================================================/ Y7 m' F0 I8 {, ~- S' ^& _+ e, k
  162. Use_Ram_Begin       = $50- L$ P* F4 i4 n- O, ]
  163. ;==================================================5 _: \$ |$ s) q! }6 D
  164. JSR_Addr_Op         = Use_Ram_Begin
    5 R  v+ z+ h9 l1 K7 x
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    $ G8 [$ B8 H2 [. |+ a: e
  166. JSR_Addr_H          = JSR_Addr_L + $01* R+ R. M5 d8 \/ ?
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    * c. J8 [" W% r* [
  168. Data_L              = JSR_Addr_Rts + $01
    8 {6 p% v) ~: N& v3 P3 G; v
  169. Data_H              = Data_L + $011 O4 F2 c' L* @4 n/ s5 I0 y
  170. Data_Cnt            = Data_H + $01
    0 h/ u2 p  {. W5 ?  J" y
  171. Data_Buf            = Data_Cnt + $01
    % F) y- Z% B; v+ ]; |
  172. Nmi_Time_Count      = Data_Buf + $01
    $ {. @. n( k! T. s2 w8 z
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
      r2 E# Y( ~( g5 m1 a$ s2 l  D: b+ d
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $017 ~( K2 e, a& Q' h) J" b! z

  175. 2 A4 b$ E1 D! N1 T# Z0 D" W
  176. ;调色板刷新标志
    & ^4 g. I, e! r, a* r
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    1 U& C" c- `* f5 j/ g% W3 F

  178. ' U/ Q2 Y3 C$ z" W& c
  179. ;当前帧文本写入禁用标志
    - N2 }, a* o; f
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    9 S' f- b  [8 E

  181. - Y9 s: S9 e. F; U' `4 {
  182. ;==================================================
    - B; z; s* U: M; b; d# C
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动3 p& }! N3 L0 n( Y' W; ?
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    , x( S/ A6 `8 C. P) A9 h# v; \0 @
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    6 X7 A3 }! y' y* l
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间. ^9 k$ M1 h4 w# M$ ^" l
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    ; ~  d3 p8 l. G+ ]9 p
  188. ;==================================================
    " y% C! x4 e6 M" [  X7 _
  189. Key_Keep            = Text_Disable_Flag + 1
    2 m; F, w# N# l9 y8 i) {
  190. Key_Once            = Key_Keep + $01
    2 r3 f# D" T2 e5 i
  191. Key_Kemp            = Key_Once + $01: U: r" V4 a. \. w* c2 }, U) \
  192. Key_Temp            = Key_Kemp + $01
    " s, \  f% S+ U- O
  193. Key_Getv            = Key_Temp + $01+ E0 m" B2 x! D- E: r6 `4 p
  194. ;==================================================: c8 b" J: q: Y6 p
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集. u9 @6 S3 M* `4 Y) k- \1 P7 V
  196. Music_Item_Last     = Music_Item_Cur + $01
    0 e! C6 Z) c' a% b2 X  ~
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    ! T. K" a7 t+ h
  198. Music_Cur           = Music_Total + $01  ;当前曲目* ~' Y# b+ g. N, M! k" o
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    . ?& D5 T; l) K1 D
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态7 Y5 `& k- c% F. b  x" O9 d
  201. ;==================================================
    ) r- }/ @1 A$ Z# Q) Q
  202. HEX_Data            = Music_Stop_State + $01
    + [, c+ t& l' m/ W: G, _
  203. DEC_H               = HEX_Data + $01
    ! U$ a' w4 v6 w( _& `1 t+ D9 ^
  204. DEC_T               = DEC_H + $019 r, U: b% @3 H
  205. DEC_L               = DEC_T + $01: l; ], B( i3 d4 W
  206. ;==================================================
    3 k' S; V) S6 {8 p% s( l( Y
  207. Time_S              = DEC_L + $01" f) n0 d4 P( r" c! n
  208. Time_M              = Time_S + $01
    . t# Z! @" H$ J. ?  S- J6 q3 x
  209. Time_H              = Time_M + $02
    % x( O. p5 X1 J' z% x
  210. Time_Cnt            = Time_H + $03
    ! p! u8 D* F# {5 j" }9 B  b

  211. 5 |6 }" n% f  `, _' |9 p' g
  212. ;==================================================! f: I# U0 Q& f( B
  213. Music_Bank_8000     = Time_Cnt + 1
    ; R; `" O/ K; R" L. G5 s
  214. Music_Bank_A000     = Music_Bank_8000 + 14 ]/ o/ |( i2 X3 @1 b0 e( c* |. p
  215. ;==================================================
    8 H+ S! S! ?; x- x$ k0 r8 g6 Z8 z
  216. Scroll_H            = Music_Bank_A000 + 1) I- p/ b- \0 ?3 ]: q7 ^0 S
  217. Scroll_V            = Scroll_H + 1
    ! X$ }5 p4 A! v, x, ~1 `/ E
  218. IRQ_Process_Index   = Scroll_V + 1( S" B" j4 J  C; r; o3 b7 l
  219. ;--------------------------------------------------
    " K+ t# p- Q: M) A' A
  220. Page_Cur            = IRQ_Process_Index + $01
    : R" B  C. u5 r2 z$ ?6 v# T. @, y
  221. Page_Cur_Index      = Page_Cur + $01
    6 `* \) ^! ~: T
  222. Page_Cur_Cnt        = Page_Cur_Index + $012 m: s( R! ^3 N; ~7 K2 B* N
  223. Page_Last           = Page_Cur_Cnt + $01# }5 j, Q. Y. }3 v0 c
  224. Page_Last_Index     = Page_Last + $01; h2 J: c' [3 n0 E& J
  225. Page_Last_Cnt       = Page_Last_Index + $01
    % S1 T* Q. q! W5 ~! o# ]- L6 j0 j" T
  226. Use_Ram_End         = Page_Last_Cnt + $01
    " _. a" Q5 v/ b! e1 G3 M9 U
  227. ;======================================================================
    , S' N3 M6 n9 [$ N( R6 L0 ^
  228. ;音乐数据块  W% t7 {, X4 f: Z1 `

  229. - N6 i; m2 ?$ B1 F" E
  230. .IF SOUND_BAR_SHOW_ENABLE
    2 X) C7 i& Y6 ?+ A( l

  231. - {( f; c+ D+ {9 Q( R. L: ]# q( P
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    6 _2 _! c8 V/ _! {! m4 N  u, [
  233. .ORG $90006 j/ v% l% h. P) ?! e( k7 ?
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    4 g7 L$ h9 k$ c/ }  ]( E

  235. 1 d! i2 f+ C4 K4 H# R' u( C
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ; H  x$ [8 _5 p+ a0 ]9 J
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"' B% s& g5 B4 E5 B2 f; Z
  238. : ?3 X% ]6 ?4 `2 q; G, K
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    * U& e+ O; C' k+ h$ |5 g
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"8 l0 x) {6 e0 x+ B- n$ L
  241. . F" W( e4 @* w! T
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK% O# x5 J. d. m* c0 n7 w5 h+ E  ?( w
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"( R+ t. _- x+ B' v- Q8 q- w% v; t! g$ d

  244. ) a/ ^: L) U1 h* s4 }2 `& F
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    + o* t0 Z+ t7 o2 K' b
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"9 X& l  O7 u+ X/ i2 Y7 x; _

  247. / X* `& X& y' `; M/ M% r
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    # M* x' L  T" r/ a
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
      [9 ~" \% l9 ^8 z
  250. ) U/ x( \! O- a: D% M3 x5 W
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    ! B/ ^8 Q. U1 q) ?& U$ d  Z+ X
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"7 ~9 P- G0 {/ J/ @
  253. : R2 t3 d' U6 ^
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK* J/ H0 ^* m1 e7 Y
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    ) N) ~3 Z- t1 J4 w6 H4 ~, F3 w
  256. 1 v3 M; x, K3 B- j% \. ]( Q
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK& M& y: c, E( a8 U  m( ]
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"" ?# V& t$ {1 y4 x* J

  259. 6 l8 N& v) }  U/ _4 V8 b9 ?
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK+ D$ r$ g# h$ X2 ^
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"/ y# u* P  z8 n+ e4 {
  262. + ], Y, K8 B( D) k' |2 l  t7 ]
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK. p- C& Y. g$ d! _/ m1 f- ]3 n4 t
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"0 ]* y/ Q4 ?& r4 u2 L6 h) O
  265. ( L" z! Z: j6 X5 ?; M
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    % E: l5 S5 w, P% r9 }
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    9 f* }- m! i8 j( I/ U

  268. 5 ?6 j% u) y2 ~; ]- b
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK7 l8 R, b) K! c3 H
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"; m) j, }( }! r% T" Q

  271. 5 {+ \5 b0 U' k6 h" M
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK! v+ \8 R$ B: A# N2 s- B
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    & h* H2 C" r) Z. Q. ~6 c

  274. % i9 T$ G1 s3 L. i3 R" M  Q
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    ! P( l* n8 `- |0 {5 q" ?2 q% v
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    $ T0 \3 w, m' B* O  C( B
  277. ! d. P; h9 h" K" X. b+ k; _
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    " ]" y( \& \, N6 O8 e1 [
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    8 o$ B8 I: o( w% z2 k3 [5 B' e

  280. + K& |- H4 c7 v
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK/ [4 @" Y9 ?. ?$ d! U! ?- u8 U7 ~. x, n
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    ; A: f0 G/ b& W) m- t! N% B
  283. 7 t( Q/ @' |# R* y
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK' h+ Q) s' \6 G4 u- F
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    ' O0 c- X3 M+ ?3 U. D$ N8 p  w

  286. $ j! T; ?! z+ q5 H  }* L+ k9 E
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK4 o7 j5 g9 g2 ?* S
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    , P0 x. w5 G' ]4 J

  289. ' U$ F% k2 E. N' s9 h* r
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK0 e3 D+ q( [  b; a! L* Z
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    ; n& j4 k9 X' v' W. A
  292. 5 J% Z5 j! j* E: J! V2 G! j
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    4 D3 V0 X% l& C# u; f
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    6 o& p6 ]8 ^! B

  295. 6 R# `' t. k1 j0 N, w3 m
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    * i2 D* L  P5 K) ^, j( a* d* A* d
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    # j9 g" }; E" b& y( r, b. c

  298. & g# }5 ?" m. L6 g
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK$ d( |! r( _5 `3 O4 {
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    $ T. j/ q1 G  G; J- m

  301. + c4 N3 g& S5 g+ z
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    , {+ ]' m3 j# I' B0 ~" ?& K
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"2 W3 d# q3 U, S; p: P) H/ ?

  304. $ N# v9 \6 f; K- c2 C
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    2 F( J9 f& t( e& h- C* W% a
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    + A5 u8 C! l8 I( a- E
  307. . P6 S7 K5 }3 z5 T
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK  K' P; ~! w3 k1 F( ~! B2 j
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    + P, v+ `& C# I0 Y
  310. 4 n3 y8 F5 C0 o+ k1 M
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    , j* g2 B# m$ Z" y& n
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    . h0 E. `; `- h5 A

  313. 7 u. k. }$ e  `4 f! @4 M3 e, q
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK9 I" L" |4 G# u4 n
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    1 u! V4 p, D: h+ h; E
  316. 7 E3 Y3 ]2 u7 K- f1 R6 O5 ?9 |7 m
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK" p/ _! Q4 c- R3 ~- u1 g
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    # y9 u2 H$ M  n) C7 Q; I4 H6 G' C) q9 e
  319. 0 e. l  U2 q0 R  v4 m
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    : y) O: E; b: n; a8 Y; K+ V- h0 p
  321. .ORG $D400- n5 J) Y, R- t+ a- d5 Y
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"/ }( p% K# f7 Q6 G6 s: l, ~* Y. F
  323. $ q. G! A6 \3 S+ v
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ( Y' Z; j+ k9 b, T3 ^7 b
  325. .ORG $D800) U0 F* C6 \8 S" t6 W
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"7 }9 R7 d8 P  t. n) t
  327. * {2 S7 h' a" C) h% k* F* z

  328. - V9 _8 R8 H6 ~" y' ~0 }
  329. .ELSE# `. H& _" f" g7 m

  330.   Z$ U6 b- s* A' T8 d, d
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK9 t+ T# h2 R+ ]" d; s
  332. .ORG $90000 b6 m4 |7 g  P2 \# F- f4 w3 Z
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"# X$ z8 G0 ?: R- S- P9 M3 P

  334. - H" E3 {2 N/ |1 c/ S3 U# J- V
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    - X' R% _4 _1 g% S
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"2 G' ]; @$ }3 g+ `( J/ `2 \
  337. ) i6 L+ M; U' R) q- G& g
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    ' W1 Q" l; c, y
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    . L2 M+ N/ H- d' W$ K, V
  340. $ F7 V. @- B3 s
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK/ u2 |4 T2 F& c+ u' M" Z
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"3 m9 p( i2 |. F, J+ l! k
  343. - ^4 `# H& k# V! S0 e. W/ ^. t' ^
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    6 b: a; z' a- A1 c5 [
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    . |8 ]2 q$ {1 g  m

  346. 2 N, I4 m3 y; x
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    8 s4 [: B1 T* W: F7 }" ^3 R
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"' \2 e) j) @+ b! K% Q

  349. ! B0 j' {; h$ D% ]; ^! w
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK6 e, [* ?( \" c
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"0 r7 _& X. o9 t9 u) c+ N' h

  352. 6 d8 ~4 i; H; Z1 x/ s% ?
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK3 |  i0 c& c8 l9 w
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    ( H7 {. a5 m, Y
  355. 7 n/ b5 c) n5 J( m% A6 [
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK) j% n8 x- y+ `: v( [
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    % l2 t$ c$ k2 J% M) u. L3 c
  358. 4 o/ `0 h7 q2 x: s% g
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    , o4 ~+ D& u- d7 u0 W5 E
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"1 r  m7 H6 H, ?5 R+ O2 `, J+ J: z
  361. 4 i0 \/ m5 G# o& t) `
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    7 A/ }6 D+ w# e5 l7 T* j8 r
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"/ Y& r# h$ N; t" w) D. K
  364. 1 C; V3 d4 {" l+ h* i8 z
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    % G) m* M, g' U& b% X! h7 A- I5 ~
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"- \8 W0 D% {: V/ Q1 |
  367. " a4 {; l/ o! S/ ^8 O; @0 J5 X, G* y; n
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    # }+ U/ _4 a1 G/ m( C8 B) Z- ~
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"- Z3 P6 N: p. U

  370. * G3 Y+ Q6 l8 u# |2 U) j5 `& b  _  }
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    ) H! j4 `4 }6 J, g) J0 j
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    " k" k& q2 |0 w0 U5 c

  373. / k* l9 Q0 d: G
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    , o* x8 F, H7 H. l4 Q3 Q( Z9 q
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    % X9 p+ L3 p. ~( ^7 E! @* k
  376. 8 c- R/ y% S- E/ ^2 Q! Z
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK- h; I  W5 D! B$ ~+ v. `
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"5 V+ @! i$ p4 ]% t3 A5 v

  379. # k* M' y+ a& P
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    0 \$ G  r8 }, r1 o$ {5 w
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"* H$ x. k$ j2 V
  382. . w# c6 {1 M$ x* g# r! |; {# ^& B- Y& `
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK$ R$ e, Z* g% b% G  [% D4 E# Z
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"( P; C6 q  \  z; e$ g5 H/ Z

  385. $ P  k& z- i5 E# F" V5 n
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK/ {, y  F) e- y' L3 z
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    2 I6 v0 N0 Y- _) h2 x  L& p

  388. ! r# Q7 ^- L! R6 X, r
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK% j7 s  e3 g0 d+ Z7 ^/ o4 l4 k
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    $ N! L- s1 J$ k6 ^
  391. + V9 i7 D0 M/ Q2 L
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK2 @" d4 f* C1 p# m  H
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank": [* e/ t1 I4 [: d9 w# q
  394. " \! c- x! J4 r  d% j- s( k7 J( I
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK7 W  u. [" X8 t5 t! Q- R; n
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"; a) w3 k6 X5 W" y, U8 k
  397. 0 {1 _- U; j* m. R
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    - p" m" B; Z' F0 A
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    9 C8 k0 i7 T* k
  400. + X7 s+ \. b* u& z6 a$ Z
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK0 P1 a! V5 B5 C6 b& x- X
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    ! C/ m3 l: \1 [
  403. ; C) B2 j8 V" ~# K
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    / R, N/ D+ B# ~9 c# B$ ^! \* m
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"5 [( ~' R" u& f% u4 _
  406. - v1 b. x1 ?  \% e6 W; C0 P0 a+ S
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK3 Y" Z; _  q# m  j6 P
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"! _6 H7 ^4 i# R

  409. / s) |* v" g. Q% G% k  c8 \! _
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    6 g4 y2 L, |: w4 Z# C6 }
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"  ^1 }" c' l: R# i6 _% u- y  @2 s. m- I

  412. . Z! I  O2 D& x# t& i
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK& ]0 A$ z4 z6 r5 @0 u! i
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
      d* L6 N" s4 B) F- }% u

  415. - U) ^8 W# ?6 V+ W
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK6 J! V/ c: r* I+ }( J( B" O/ \
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    1 q( E6 C" Y: L( S' [! q! y: }
  418. , b1 U- d% j# f" x
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK" Q& L- w* X. ~7 G) I
  420. .ORG $D400* b4 `7 i( K; h; h  e
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank") Y6 r+ y" V0 N' ?, W/ |0 m

  422. 1 E/ O$ X+ E% p
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK2 X# N, q  n1 V( G. ^2 c
  424. .ORG $D8003 U* t: g- T  N
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    ( |8 a6 _  T% ^6 B" Z- M9 {# h. r* K
  426. # m! P2 K3 _* G5 P: T
  427. .ENDIF3 w5 G6 z/ m* r4 `8 r! E+ m2 Q
  428. $ h! y; m) w. i$ X* w/ U/ H
  429. ;CHR图形数据
    0 f0 @2 J3 ?4 ~
  430. ;======================================================================& O5 K1 `* }5 _; A, S, R
  431. .BANK CHR_DATA_BANK* ~" o- t1 s) m  h
  432. .INCBIN "chr_bank/chr_data.chr"
    3 H* d6 M: H" z/ L

  433. $ r& `3 W' t6 ]" ^
  434. ;======================================================================1 K) }0 k! ^8 c# F, s
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK5 k4 `* u1 L, V
  436. .ORG PROGRAM_ADDR5 ^  |  v1 h& A; `
  437. , U% N- |1 x8 G! _
  438. ;==================================================( n! J7 A* u0 c, g* r
  439. NmiProcess, Q% y- [: p: c2 i& i

  440. . N4 ]0 u, r, p% Z& C" x8 v
  441. ;关闭屏幕控制$ G* c# s- s2 @
  442. LDA #$008 H/ _; S5 o$ P5 I4 P+ H
  443. STA PPU_CTRL+ u/ N* c5 X! n+ [
  444. ' y( Y- |" ^- r! ]+ q- `
  445. ;没播放音乐就不需要触发IRQ
    7 ^' g1 ~8 t3 t1 W9 l9 H
  446. LDA <Music_Stop_State! w" F/ X% V& D& X: X
  447. BNE NmiNormal
    ) ~8 c2 a; x5 U' D; R- s
  448. & _$ F% _- u) ~  h9 u7 s* I
  449. ;重置IRQ索引) N$ S: p9 Y1 e! P+ _, }
  450. LDA #$00' }9 m7 {' a8 t: s/ W8 z4 V
  451. STA <IRQ_Process_Index
    1 Q, _" V- w* L2 B, [

  452. 0 o2 B) \8 o" N$ Z" e
  453. ;时间秒数为空则跳过* X/ R8 `/ G" ~9 @& [0 i
  454. LDA <Time_H) d9 s0 U! b8 a% u; `: b4 q! `% h
  455. ORA <Time_M
    ; r9 Z0 M' l: L1 e$ {$ ?
  456. ORA <Time_S! Q- U& X# E+ ~3 y% E
  457. BEQ EnableFirstIrq% U! ^' X9 r! e; K; O1 l) L3 D4 W
  458. # ^% q" y' ^: A/ P
  459. INC <Scroll_H1 z; C7 @7 I/ E, ^' O6 J

  460. % |* q3 K) R3 }  d- ~! z6 y, w  K4 {
  461. EnableFirstIrq
      Y+ R( K6 N6 k
  462. ;80条扫描线后触发IRQ
    , d9 M  t+ p6 J% q& p
  463. LDA #IRQ_SCANLINE* H9 `  L1 r: j" X$ U3 |/ k# \% T: F
  464. STA MMC3_IRQ_LATCH
    . ]: ^) n( Z' q
  465. STA MMC3_IRQ_RELOAD
    : Q8 }9 |( {- F
  466. STA MMC3_IRQ_ENABLE
    * g, Y2 T9 g% D, {3 S2 x4 a
  467. CLI
    . B$ ]" i2 c, h# y
  468. + c0 U+ A( I; z/ M/ q# m" X
  469. NmiNormal/ g8 K8 ~# \  r& f) W+ H; a" t

  470. ; }* h& _! d# a" g- o- X# _
  471. ;处理PPU图像
    & y; }" |1 c: ?1 v5 j- o
  472. JSR PPU_Proc
    7 m% r  J: G) o" t* @

  473. 2 n, @; `) f7 I, U2 v9 M/ i* K
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    6 k  |8 r, d4 |4 Q
  475. LDA PPU_STATUS
    % v% m* O$ W# |: }1 N
  476. ;LDA #$00! N2 k* b. H9 \& H3 X% m6 c0 W, p( S
  477. ;STA PPU_OAM_ADDR
    1 t, _4 R  u" S6 v" d! h
  478. LDA #OAM_TEMP_ADDR / $0100( j9 S. A. k# A) C4 y# ~' n
  479. STA OAM_DMA2 Z" t& J! x6 U" o, x* S

  480. , C5 X$ n  Q. n! c
  481. ;启用NMI中断
    7 S  Q; e3 z) `3 ?
  482. LDA Screen_Ctrl
    6 t" t$ S3 Z* }- c
  483. STA PPU_CTRL" K. X4 z# H( m/ j8 O! W8 G0 H
  484. ; M; c8 n( M5 F7 q3 T/ d+ w; {
  485. LDA <Text_Disable_Flag
    # v. c7 M1 y; _) B6 m2 p9 d  D; f$ ~) h
  486. AND #TEXT_DISABLE_RAM
    ( _/ R0 E. {1 g
  487. BNE Nmi_Sound_Play) [' R- e# }2 }' b$ E3 _/ s4 a4 T& L

  488. ; G) i) S7 z2 N$ x$ B6 Q
  489. ;处理手柄输入
    & y# k2 p" P, \$ P
  490. JSR Key_Proc
    ! M; {2 N+ z: R% l$ l$ c

  491. " R: v3 T  o; K
  492. ;切换音乐(手柄触发)
    3 K( X4 t# S% ]
  493. LDA <Time_Wait_Cnt8 Z! A" I2 K$ h$ Y% z6 ?0 |
  494. BNE Nmi_Cursor_Arrow
    ' |9 S: V. w: e. t& s$ B
  495. JSR Change_Select_Item
    5 u3 l0 g# m' G: u( N
  496. % ?0 {8 W# b: d  E, q* X
  497. Nmi_Cursor_Arrow: {5 @: ?$ q2 L9 B: k6 i) [1 f
  498. , A6 X% b- [0 a. e
  499. ;处理光标箭头
    0 R0 l: z6 D' [7 y+ U( O4 X; X# r
  500. JSR Show_Arrow
    % W# p- q" b- c
  501. : a- s5 W9 K( b% ]! E- e
  502. ;更新调色板* X1 O, Y% W0 I+ `
  503. JSR Update_Palette_Data
    ; A) k4 V. g2 a/ Z
  504. $ `# V- N8 K  v5 U+ H$ c$ Q
  505. ;显示时间(缓冲)
    1 P- e0 r# v5 [. ?7 B8 ~& @
  506. JSR Time_Show% z* G9 Y  ~7 g9 h  S3 W9 P- E
  507. ) [/ K% @$ N2 G
  508. ;音乐显示(缓冲)
    7 M' s4 K2 H$ r- ]9 X
  509. .IF SOUND_BAR_SHOW_ENABLE
    3 G/ N1 e3 b  c* _3 Y% [
  510. JSR Music_Vision
      [3 R; w) q2 l- C+ g- e+ o( m5 i, g
  511. .ENDIF
    ) g2 ]( z$ {$ s, Q4 Q- f, ]% l

  512. + v9 U! a  c( X0 z$ ~2 ^0 p/ I
  513. Nmi_Sound_Play
    & i8 ]; f% q6 m2 C4 m8 F
  514. ;播放声音" S8 R5 K2 ], D( ]0 m
  515. LDA <Music_Stop_State
    + p1 s; p4 q: M; P, K
  516. BNE Nmi_Time_Wait_Set% d& T& E. ?, r
  517. JSR Sound_Play_Proc4 Z8 _9 \( x; ?$ ~, `

  518. 5 v: q" C* {' S- k6 r7 |+ |
  519. ;播放计时
    ) I, ?. x2 d+ G1 Q2 S
  520. JSR Time_Count2 w7 w) G5 j5 i
  521. 0 t! M7 ?6 Q7 w. ]
  522. Nmi_Time_Wait_Set( |& \/ a3 T) z( l
  523. LDA <Time_Wait_Cnt
    ! ]  V$ m3 I3 [# U
  524. BEQ NmiNormalProcessEnd6 p9 ^$ l: q% z, [" {
  525. DEC <Time_Wait_Cnt, `1 Z* m# n) g
  526. NmiNormalProcessEnd
    3 {# w* k& ?" o2 C! x
  527. 6 S- [) S! Z% I+ v- E
  528. INC <Nmi_Time_Count
    $ Z" X# E6 a3 q0 T0 h

  529. / s# N6 g% V. e9 [1 P
  530. RTS
    $ ^  q- z9 T) q. N1 B& L0 l( n
  531. ; L0 N2 W& ]6 G. x; E
  532. ;==================================================: w7 B$ k/ q4 R( C  g6 n
  533. Init_MMC3
    6 s: f$ n' K' {6 p* `6 T/ }: w
  534. ;==============================
    / U$ Q, O# k  y
  535. ;禁用IRQ! }( `" @) M! {5 \8 q; l4 a! P, n
  536. STA MMC3_IRQ_DISABLE/ c! \% d. L  K. v* A/ w  e/ U) _

  537. ' x+ d$ E! r) O3 p; m+ O" m
  538. ;水平镜像
    ( T% B/ q7 R" Q; G$ `) M  Z
  539. LDA #$01
    % c& k( m- e$ V& [
  540. STA MMC3_MIRRORING, |# G7 q& k$ t8 B+ _7 E" h

  541. 7 c  ]+ E. P& _7 A* R
  542. ;初始化图形bank0 _, ]$ f/ E. y( D. h" `" z' E: @
  543. JSR Init_MMC3_Chr_Bank
    / `7 W* ]  c, ?, h2 s5 ~* }% H
  544. , r/ N3 \# I  |1 v2 V2 I
  545. RTS0 Z% g) Z9 Z: [0 x4 s1 x/ o0 w
  546. ;==================================================4 I$ {* _: Q5 L1 j
  547. ProgramBegin;主程序
    4 s9 ]* _/ C# \
  548. LDA #$00
    ! B3 t& b) h8 U" g% Z( w
  549. STA PPU_CTRL
    ( |& `; i4 _/ N
  550. LDA #$00
      s# F1 z0 ^$ R3 P7 I
  551. STA PPU_STATUS
    + t$ }5 F2 H8 F9 M
  552. STA PPU_MASK
    5 N# @( J' @1 Y- Q8 h
  553. STA JOY2_FRAME+ k( r1 e3 F- S8 M& \

  554. 9 |, g1 J' I5 {& e4 @* c
  555. STA PPU_SCROLL
    0 e7 L( J5 ^# U3 |* e, B3 F: D' V! }
  556. STA PPU_SCROLL% S( c8 F! Z/ j/ A
  557. 3 L' h1 _. I/ T/ F4 P
  558. ;==================================================
    ) K+ B8 [& E- `9 B' a6 q* V
  559. LDX #$FF
    " w; f. I( {$ F0 h) O6 r
  560. TXS
    ) _1 M1 C' i# F
  561. ' _# |3 B/ k% H) D6 q, Y- m
  562. JSR Init_MMC33 ]2 t# X- h9 s
  563. 5 j; ?% V* L8 A  x2 |# F/ Q2 R
  564. LDX #$023 R0 K5 ?1 A2 d- n
  565. Check1, u7 ~% }% x6 y% K6 q7 d
  566. BIT PPU_STATUS8 {7 Q6 t5 ^) P/ F
  567. BPL Check1
    5 y4 s# r* H# I& n
  568. Check23 w  n: ^' J  ]7 J6 ?
  569. BIT PPU_STATUS- v) T9 T, p- |: D7 d( _+ Q
  570. BMI Check2) J2 N8 n1 T: ^
  571. ' n2 d: J; D+ y/ E
  572. LDA #$0F
    ( ~, g- y* u3 A6 {
  573. STA APU_STATUS, \+ a6 L2 I+ d
  574. LDA #$C0! g# D, a0 I7 j; X# t3 t) C3 u6 _
  575. STA JOY2_FRAME6 O; ?9 X* W% m
  576. $ g  q% M' t- Q; q
  577. LDA PPU_STATUS
    6 a+ {0 F- p2 {+ z/ `% F
  578. LDA #$10  w7 [9 H( U& S
  579. TAX
    : ?3 N* z# ?0 T, P2 P' h' H
  580. Check39 {9 q6 G  X9 q/ X5 c4 t/ y
  581. STA PPU_ADDRESS7 G: j" ]5 L5 ?  g! U
  582. STA PPU_ADDRESS
    * \# y& r( i; w: e+ O2 O4 F5 Q: e
  583. EOR #$00* @. a/ p8 D+ D9 N
  584. DEX
    5 h% q) Q' [0 N! h" T2 V- b
  585. BNE Check33 L* t& Q9 T7 Q) u
  586. ;==============================
    # H1 d1 T9 I8 L+ }7 Y, u
  587. ;调色板清空
    5 l. U7 X' c7 f4 _4 b
  588. LDA PPU_STATUS* C9 c, w1 {8 Y# D  j
  589. LDA #$3F
    0 B/ i- \9 r; E7 l3 Y! i% e, E& t: V+ c
  590. STA PPU_ADDRESS* Q' g- ]: X4 d2 [
  591. LDA #$00/ I* x+ ?6 L4 q2 y% z
  592. STA PPU_ADDRESS' P1 _& G  U; X6 J8 b
  593. LDA #$0F
    8 c& E" I& @  S9 R9 A$ D; E. p
  594. Palette_Clear8 a, G& b7 F$ u1 W* j, j# N
  595. STA PPU_DATA( g* }2 b  c- B+ h
  596. INX
    # ]" g0 {7 L& [: w9 s( M! e
  597. CPX #$20; r# X& Q9 q" g7 {; G
  598. BCC Palette_Clear- e0 e7 K- }6 n* U% d7 ?( I
  599. LDA #$00
    $ h, s, B! K  {0 h+ H
  600. STA APU_STATUS
    + I0 l% C/ ~& q* q, w" H6 Y% y

  601. % L# M- w, E2 I: r
  602. ;==============================
    5 I6 C1 A; l' e! I
  603. ;RAM初始化/ O) h, s9 }: h3 @/ ~2 g
  604. RAM_Clear_All
    . P4 L$ X+ T/ H0 {+ n, U4 ~
  605. LDY #$00
    ! w0 G- ^0 @8 J5 E
  606. LDX #$089 Q; `2 S1 a: j1 B+ C5 i7 E# x
  607. LDA #$00
    # R2 e$ e4 @6 H5 ?$ n0 [9 R6 v
  608. STA <$00
    % V* T! H+ b/ K) R$ h
  609. STA <$01! O8 `3 t( M% H. @
  610. RAM_Clear_All_Start) ?4 _* F8 H3 V
  611. STA [$00],Y
    , X! z+ w7 }0 l$ B5 `; _
  612. INY; i, Z+ A! F. `5 h* ~8 w: R
  613. BNE RAM_Clear_All_Start% g# b5 J; K  O3 B7 V
  614. INC <$01
    ' Q' J1 E$ u( f% {6 u+ p) E
  615. DEX, R& M! f3 h4 z" v
  616. BNE RAM_Clear_All_Start; x, Z; d& f) C/ \* f
  617. $ h2 R+ G) o' g! X6 N! B9 v
  618. JSR VramClear
    : y/ ~& ^( l4 }
  619. JSR VramInit: L+ D- V; u0 P/ t" j5 s0 n
  620. JSR OAM_Ram_Init6 _" z- ]  r6 I; B3 ]# M% l
  621. JSR Init_Palette_Addr
    3 V8 R# N6 m3 w

  622. ) \! r9 B, }3 a' g* `! h  X
  623. LDA #$FF1 i: C/ N# l1 T7 _/ d5 w2 N
  624. STA Use_Ram_End
    + i9 Z4 z2 b% j4 R* [! Q' D3 _3 D6 {8 d
  625. ;==============================
    2 q$ i# T& l' h7 _+ k( B- }' M; Y
  626. ;初始化背景调色板
    3 {" @$ g  K' m+ [
  627. JSR Set_Palette_Color! v6 e  J: s! M' A% w
  628. JSR Set_NameTable_Attributes
    1 L5 m- m! V8 b

  629.   U$ H6 s6 m6 [9 W* K: {
  630. LDA #$009 V9 z; h7 }8 Z7 d( }" c5 a
  631. STA PPU_OAM_ADDR3 G( w2 Y7 _) T0 b; c: I
  632. LDA #OAM_TEMP_ADDR / $01000 X: j( @: ]) k6 M
  633. STA OAM_DMA1 }  E: L( r9 L, j4 \" C$ G
  634. 9 A  v. A( \" v$ K" c- N+ e
  635. JSR Sound_Reset_Proc
    4 H; z4 E$ K) s% T* q3 s
  636. JSR Set_Sound_Total# \' V% @/ \8 N

  637. 1 H% D1 D' b, O; n6 r: l
  638. Init_Start_Music
    : k0 r) d1 J2 S, T" _7 _4 b" F! N
  639. LDX #$00+ h+ |+ S% w1 b
  640. Init_Start_Music_Write+ D0 R, Q0 t5 L( j1 s
  641. LDA Sound_Start_Port,X6 P. h  K1 N. L( N% O) Q
  642. STA <Music_Cur,X
    % Y7 a  N0 q9 X1 Z( O  F
  643. INX
    1 V+ ?: v! Z& g9 i2 x
  644. CPX #ITEM_MAX_SIZE
    0 \8 [" q0 I) ], W6 K( d
  645. BCC Init_Start_Music_Write
    ' p5 C% l8 B, }- T5 _& c. ?) y* G- @
  646.   h4 _# E$ e5 q' [% V
  647. JSR Show_Music_Text
    4 R* U, i+ z2 l" N0 y; o4 C" ~/ @
  648. % k' M+ ^  q- ?1 R% |, Q
  649. .IF SOUND_BAR_SHOW_ENABLE' C* U2 T% w& D: W$ H8 d" R6 ]
  650. JSR Sound_Bar_Text_Set
    ! e3 S; r  J+ N# u5 G$ I* W, T9 E
  651. .ENDIF! _7 ^' @3 Y5 j1 a0 o' M+ B

  652. 0 U& l" t4 ^& a4 j
  653. .IF Track_Name_Pos
    6 D% Y1 `, Q2 R* V8 h3 q+ `
  654. JSR Show_Track_Info( U; Z4 N( l: h% o" c) G
  655. .ENDIF, U( M) `$ l; O
  656. : o7 X5 ~+ R+ Q1 Q, w
  657. JSR PPU_Proc, l5 ~+ }* `1 L( m
  658. - ^/ T9 N4 B' X9 E5 P+ F  m
  659. ;==================================================7 A$ G; I9 @0 D
  660. ;音乐bank初始化
    - q; l! P: e3 X8 B
  661. JSR Init_Sound_Bank, ~6 N( L* I2 f! a4 Y

  662. & N# d3 }$ j, V" Q( y0 a
  663. JSR Music_Show
    ( c6 {% G; @' L. q4 M
  664. JSR Time_Show% d7 @( L) |% k' F
  665. JSR Music_State_Show+ y: U& V4 i2 o4 y) B7 }( j
  666. JSR Time_Delay/ m2 [7 k- A1 }
  667. 8 Y. H7 }% }5 z
  668. LDA #$01
    * i- O& N) i( _+ f9 A& @" R8 y3 J
  669. STA <Music_Stop_State: W# D# P0 C! d% h* e' x
  670. + Y3 h, G* l( s5 a: b
  671. LDA #$887 b/ _2 n' S- h) Y0 g  c
  672. STA Screen_Ctrl- S) m/ v' @) {
  673. STA PPU_CTRL0 R+ _' }5 T5 Z' q

  674. 8 A% {  ~( T- S/ D! o
  675. JSR Show_Page_Text& H2 B# P, e/ F: T* J, `1 S; x- t5 N

  676. " s6 s& Y, k  B, n/ p4 k& b
  677. LDA #$10* M* M0 @$ v% b% Q/ R% s, f
  678. STA <Time_Wait_Cnt
    : V. D) s) d9 o& n  `" Y' f
  679. 2 ^2 f+ V0 ?! N/ b$ F6 F2 u7 H7 A
  680. Wait_Time_Over
    5 h. Y, d. c. E' S( K% T, u$ }
  681. LDA <Time_Wait_Cnt
      A1 I4 o" [7 S1 c/ ^
  682. BNE Wait_Time_Over4 o: F2 Q! F- E) i3 K
  683. 3 v  K5 \4 D5 g4 @
  684. JSR Show_Arrow
    ; G) i9 y4 v6 }) r$ J
  685. LDA #OAM_TEMP_ADDR / $01004 r, G8 d9 E/ i2 Y) T) O& d* F
  686. STA OAM_DMA
    ! I0 |6 Y: u( B9 |% m6 Q0 I* }
  687. # Z3 [/ g- _: @+ u+ M. i
  688. LDA #$1E
    ' k( e$ ?8 t. v9 m8 T: S' @5 q+ [+ ?
  689. STA Screen_State' b% R  D6 ^" ]! A, y. ~6 D1 @
  690. 3 S$ u) R+ a9 s  J3 H( C" D
  691. LDX <Music_Item_Cur& S- ^0 Y  d8 V# L+ e+ B0 p; ?' g
  692. LDA <Music_Cur,X" F% g$ e5 w" y1 b" c( p  \# d
  693. JSR Sound_Init_Proc
    " U+ W! |) s6 }6 G! a

  694. 9 Z0 H6 q# z: y3 A4 x1 J4 O+ L
  695. CLI
    ( y' ]4 _! r& M: b( f' y
  696. JMP MainLoop2 ?# i* {5 `. D% w8 T. f9 x

  697. ! C3 t, n7 T6 ^
  698. ;==============================1 T0 j3 R0 p7 Z) E" S2 s2 f
  699. Time_Delay;延时等待4 ]8 g5 U$ t1 `) G. k
  700. LDA PPU_STATUS
    + Q4 R' P4 F9 P3 R+ G
  701. BPL Time_Delay9 V( P+ V8 j. {( n  T0 S; x5 [% j7 E
  702. RTS* _$ B; X/ s' ]

  703. & ?: n' c/ N! q& n
  704. ;==============================" a* F+ y9 m- P' H. e0 \
  705. OAM_Ram_Init;初始化精灵内存7 N( Q$ c$ b+ I6 h
  706. LDX #$00
    ' l2 m% V0 B* l) D1 e* ~5 f
  707. OAM_Ram_Init_Write
    * X3 t) T9 k- l/ w+ I* ]
  708. LDA #$F8. ^" q. a) w. A+ Y
  709. STA OAM_TEMP_ADDR,X8 m& i2 c% h# N+ J
  710. INX
    . ]9 j8 k- r. J
  711. LDA #$F88 i* b9 m2 `' y; m; l& i
  712. STA OAM_TEMP_ADDR,X
    $ i( M3 T) w  h3 Y% z1 p+ ]
  713. INX' E, q" q! L% t+ i3 q9 o. I
  714. LDA #$00$ x) S/ ]& B. a8 H* |4 D: z
  715. STA OAM_TEMP_ADDR,X- n& `' R. Z: S4 M" d/ `" F
  716. INX
    : f4 t& q$ `8 [6 O! I* V1 u
  717. LDA #$F8
    1 c. _& b' t  g% K" Z, a4 K! ?% p$ J: H
  718. STA OAM_TEMP_ADDR,X5 q7 W( h  b$ G3 I
  719. INX+ |' O/ _+ J' P1 D
  720. BNE OAM_Ram_Init_Write7 E- E/ ]1 q! I2 S* a* }
  721. RTS
    ! G( t+ K% Z# H* U8 @% R6 V
  722. 8 W" m) J+ }2 q8 S5 ^2 A
  723. ;==============================# Z* r0 h  X- L' t4 @0 B1 g
  724. VramClear;初始化图形内存6 c5 Q3 D& S# J- E; P! n/ u
  725. LDA #$20# {& B( ?3 K( W
  726. STA PPU_ADDRESS$ P# F1 ^% z2 T" P# r! N+ `
  727. LDA #$004 \- H) X1 W# ?/ [
  728. STA PPU_ADDRESS& K; v/ j* r- D" E2 z# ~0 A
  729. LDA #$00
    ; q- S( x: O& O% p) n
  730. LDY #$00
    0 D, b% v. D/ R" r
  731. LDX #$10
    6 X7 c% Q& Y7 A6 B" m+ g3 ^  [- z
  732. VramClearWrite: J# H* H# y: k) h, x) [
  733. STA PPU_DATA
    9 T8 M* |8 d$ L( o& z
  734. INY, Y  ^8 Z# h3 P2 W
  735. BNE VramClearWrite3 ?6 E( m4 Y. s& z
  736. DEX
    1 k  }/ f) j# D! M
  737. BNE VramClearWrite* N3 d3 k' j- A2 w- ^% l( O/ v
  738. RTS: f* N3 [9 S# n0 ?( ~

  739. / ?3 I) f+ A. \' |! ^9 p
  740. ;==================================================: P7 w. [& }( w8 ^3 ?
  741. ;设置MMC3图像bank
    " ]& Y( i- V) c6 o3 W
  742. Init_MMC3_Chr_Bank
    0 l' i3 X* k0 U
  743. LDX #$059 C  Q* M9 X" V+ O6 ]: b; _
  744. Init_MMC3_Chr_Bank_Write1 O/ a/ n7 L) B) m, n
  745. STX MMC3_BANK_CTRL( M$ ^4 R! d/ w  L7 V1 L* @
  746. LDA MMC3_Chr_Bank_Data,X
    4 y2 i  L7 I  t$ s) i, {
  747. STA MMC3_BANK_DATA8 q8 Z/ h4 E' V7 v
  748. DEX- m7 l# h' Z8 V! l% D7 ^+ i6 \/ |
  749. BPL Init_MMC3_Chr_Bank_Write
    0 [: s5 u+ e6 H- m" V% K. P
  750. RTS
    " {; S  B* E* b
  751. ;--------------------------------------------------
    9 G& G2 M# d- _. O2 Q, G
  752. MMC3_Chr_Bank_Data$ G- l7 H6 D6 h& i$ r
  753. .DB $00,$02,$04,$05,$06,$07
    8 X9 K  X. L* M& x; d/ b

  754.   v% T- d8 f" L: P% f
  755. ;==============================
    / C- m  R" d! i
  756. VramInit;初始化图形内存) x/ I8 k" V: M3 B
  757. .IF CHR_RAM_ENABLE
    # ^( g3 @5 o7 M. p0 D( s
  758. LDA #CHR_DATA_BANK# i- ?: `4 f- k8 |
  759. JSR Switch_Bank_A000( |) H% a& l+ U
  760. LDA #LOW(CHR_DATA_ADDR)- r9 {6 M# o$ ^3 f- r& P& g" U7 {
  761. STA <Data_L
    * ^7 W. P1 Q/ E; o! G
  762. LDA #HIGH(CHR_DATA_ADDR), o* ~8 r2 ?% ~( P& ]5 d+ f) g* Y
  763. STA <Data_H* X) O. {8 v. k, T" p5 k
  764. LDY #$00
    8 B+ U& L( b6 W0 L5 R8 ?
  765. LDX #$20) z- F+ K6 F  V+ _
  766. LDA #$00+ v. R# J8 C5 p
  767. STA PPU_ADDRESS( L2 |' D' ^3 q9 u0 G# ]
  768. STA PPU_ADDRESS
    % C1 t% x. [; D( Q
  769. VramInitWrite* E, n( h1 F9 o4 M9 n; ?: O! u7 m
  770. LDA [Data_L],Y
    4 v& D& d) N$ b$ e
  771. STA PPU_DATA' e( f% @! m- Q/ x4 q
  772. INY
    , V7 ]) M! m! w3 l$ F* k
  773. BNE VramInitWrite8 ]* r( |) Y: B: b2 i% y
  774. INC <Data_H
    / P% d3 ?1 _7 f( U+ W
  775. DEX
    ! q; h, N, P! Y4 }
  776. BNE VramInitWrite
    ' V' M' P9 t& I7 S% u
  777. .ENDIF' `# g0 I. x8 N  n! G4 J7 G! i
  778. RTS+ u4 V" J9 R2 T
  779. ' u( ^' p  J0 q" W+ E
  780. ;==============================6 @1 X/ a! V7 U+ j( J$ M, `
  781. ;音乐切换
    / T' n9 r' d. L
  782. Music_Play_Change
    # L) S5 ?" L2 H9 n$ F
  783. LDA <Key_Once7 e" y/ C3 C, S& F# f, ?
  784. AND #$FF
    # C  o0 u2 K; ~; I% D
  785. BEQ Music_Play_Change_Check3 e' _9 i  P5 d7 u# R# c; X

  786. " ^: }5 L' A  P
  787. ;禁用音乐条刷新& Z$ x9 ?3 a" R. m2 C
  788. LDA <Text_Disable_Flag
    / z( g9 P, X- H$ p  u
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    , e8 K0 h+ e) L5 ~
  790. STA <Text_Disable_Flag' e5 a0 A( x; }5 E+ I4 Z' t

  791. ; Z% \" f, S3 z/ x
  792. Music_Play_Change_Check' D, s8 ]1 Z9 S/ U6 A3 ]5 |# C, G3 q
  793. Music_arrow' K! m# \1 j% X, f4 b- t% z
  794. LDA <Key_Once
    # M8 V, f- _6 @
  795. AND #$0F% a1 @* Q  a$ [6 G' T* q
  796. BEQ Music_Play_Change_End
    / v' Y! J: p! B; a" H/ a# C0 v) {
  797. JSR Music_Track_Change% h: D- ^/ g  m
  798. JSR Sound_Reset_Proc! ^& v# F9 D( U5 F/ x
  799. JSR Music_Show: w! Y- y) P$ @
  800. Music_Play_Change_End) z2 V/ K& ~/ `
  801. RTS
    . e2 O9 l/ v$ u, }% D8 E3 c
  802. . n/ A+ u* F6 @3 f2 {6 t1 R
  803. ;==============================+ @" G  E6 Q2 }5 B5 u9 N+ F
  804. ;音乐曲目切换
    " M1 j: I+ i: J# [  g" o2 U
  805. Music_Track_Change
    4 k  E" L, o- {; h9 q' d( j
  806. LDX <Music_Item_Cur
    6 _0 Q' u; ?  J
  807. LDA <Music_Cur,X5 {: t" l4 u' y% n! N
  808. STA <Music_Last
    * C9 Y- N/ F% A. v
  809. Music_Decrease5 w) S* F, J/ l8 m- u) V7 z$ {' n
  810. LDA <Key_Once# M# j/ V$ r* ?# _1 w, C+ J% ^8 Q
  811. AND #$426 p, V7 Z' D3 |0 ^1 |5 [
  812. BEQ Music_Increase
    ' P0 T& e* i' r3 j8 l4 d; p" `
  813. LDA <Music_Cur,X# ?" r# w& N) }+ R! D8 v
  814. BEQ Music_Increase' n5 a! E3 B% e3 q3 _7 g
  815. DEC <Music_Cur,X0 H( X/ c4 n# C  n6 i4 N: l
  816. Music_Increase
    " e2 q) b; B, ]) q7 D
  817. LDA <Key_Once
    6 F" T  g- S3 I; g( ], k
  818. AND #$818 v% l+ B  ?( b" M2 X
  819. BEQ Music_Decrease_10/ D& N: ?  @; i2 Q% n! V; [9 b- w
  820. JSR Set_Sound_Total
    ( m9 E! K5 h0 R5 E0 V& j5 _0 y% s
  821. LDA <Music_Cur,X/ ~" T5 r; L( [5 M
  822. CMP Music_Total
    ' I6 F: }7 Z) x! P; P. t2 ?) j, g: K' L
  823. BCS * + 4
    " F4 @7 W8 R1 {2 }9 u0 x
  824. INC <Music_Cur,X) x( j8 }1 S" ]; b( @. E% H/ t
  825. Music_Decrease_10& `' q7 I+ @. \$ K
  826. LDA <Key_Once
    & K7 u: w4 k* \4 E3 f: A
  827. CMP #$04# r0 U3 Z/ j$ e
  828. BNE Music_Increase_10
    0 \$ C1 V% q7 y, c% n! O
  829. LDA <Music_Cur,X% ~. e! j" e$ F; U# ?
  830. CMP #10% D8 N4 ]1 |( o/ q/ D
  831. BCC Music_Start_Song_Min* P; ]( [4 w1 ?2 _
  832. LDA <Music_Cur,X2 m) z  U# w9 w" }2 Q, G
  833. SEC) Z0 N" f+ n" \/ O2 E7 k
  834. SBC #10( O, }, o! w' m8 T8 U- d5 Z8 k: S1 g
  835. STA <Music_Cur,X/ j2 {% R# `3 N2 a
  836. LDA #$00
    % U( t0 m% ~2 R
  837. BEQ Music_Increase_10# F. v- u  g4 Q$ D
  838. Music_Start_Song_Min* T  A  \/ P  b( i' y
  839. LDA #$00
    / Y4 m/ K% }# J2 Q! e# m
  840. STA <Music_Cur,X
    ( e4 \+ Z; h- L
  841. Music_Increase_10+ e* ]8 G+ U( x) M" X2 Q* S
  842. LDA <Key_Once2 D5 Z) _5 \) C) {6 L" O( N
  843. CMP #$08
    3 ?$ u1 _& m; Q& v
  844. BNE Music_Track_Change_End9 g1 x: J% [4 C+ ~+ P$ J
  845. LDA <Music_Cur,X
    0 L2 h" x; \; d1 K5 {2 V
  846. CLC7 L* I# Y; w, R$ x" `# z
  847. ADC #10
    4 x+ R8 x1 U" A% \' n6 m
  848. CMP Music_Total
    " S" L; p$ k. E3 r
  849. BCS Music_Start_Song_Max. y" r( Z( E/ B
  850. STA <Music_Cur,X% a/ q$ Q' T* Y4 y
  851. LDA #00( k' q; I% T6 D  v$ ~' J
  852. BEQ Music_Track_Change_End- p. V6 {* ]+ Z9 Z
  853. Music_Start_Song_Max1 r' y8 ~0 y; T9 {
  854. LDA Music_Total
    " a9 N( z& p9 d9 y
  855. STA <Music_Cur,X
    , N: g0 G; v6 I& ~' [8 `
  856. Music_Track_Change_End
    : X' Q  Y) f0 W  E
  857. RTS) s8 s1 l2 z4 Y2 i

  858. ' v3 o- c( ~& n# v' [9 |
  859. ;==============================2 ^6 ~$ k, I* Q6 a1 V1 m6 N2 }/ E
  860. ;按键处理/ Z+ U8 |, P- }4 [
  861. Key_Proc
    & b+ [! a1 e8 ~( D
  862. JSR Key_Scan! T& Y3 J: Y$ A. g, e
  863. LDA <Key_Keep0 q$ r8 L* [2 Z: o0 [
  864. STA <Key_Temp$ C* V3 G  f6 {9 T- J3 F4 b
  865. JSR Key_Scan
    $ f  i1 \( J& [2 ^. i
  866. LDA <Key_Keep6 u" C( ^" ^( o
  867. CMP <Key_Temp
    ) Q' R7 H" D) i8 v. W4 Q8 Q1 x, V
  868. BEQ Key_Get_Once1 b8 W' V/ j, @3 _
  869. LDA <Key_Kemp6 |6 [9 |  m" {$ N2 Q& K5 W- w+ X
  870. STA <Key_Keep7 a& V0 Y6 O) d
  871. Key_Get_Once& s! |1 Y# \9 D
  872. TAY
    0 s  U) d/ J, a! p. p
  873. EOR Key_Kemp0 ^  P$ V/ H. I0 Q/ D* g1 [4 \
  874. AND <Key_Keep
    2 r3 A0 j; t0 V9 Z* S4 K; V
  875. STA <Key_Once7 e9 T% S2 I$ N9 N
  876. STY <Key_Kemp
    ' E9 L; L) T/ s* f  X
  877. RTS. Q! v4 I5 i* u
  878. ;------------------------------- C% Z8 q/ z2 R
  879. ;按键扫描/ q0 K/ ?- @" ]7 z% V1 T) x! k! H/ R
  880. Key_Scan0 Q1 ^$ Q9 o4 C0 j
  881. LDX #$01+ ^  ]( C; A5 v8 \: {
  882. STX JOY1_FRAME) O3 R) n" k! Q5 q0 `( ~
  883. DEX
    ' p0 Z9 Q* ]* p  `/ q$ c& a
  884. STX JOY1_FRAME9 d6 e  w& {/ G* \! d: L0 S
  885. LDX #$087 t7 O3 r- Q+ V7 b, U- o+ s' `
  886. Key_Value
    ' Y* M+ t5 L0 l
  887. LDA JOY1_FRAME; A' n" D% I3 P; t, u) c" c! v
  888. STA <Key_Getv* t7 G6 }: u  ^) a- S
  889. LSR A! u5 {' w# T& d% K$ z
  890. ORA <Key_Getv
    " {$ d: I# U- V
  891. LSR A' g9 J2 q6 S, K/ L
  892. ROL <Key_Keep
    ; }/ f: r$ G; p  P. H
  893. DEX+ ~6 X( h5 w! i  B2 v
  894. BNE Key_Value, o; @/ i' b: Q" p' P1 \2 X7 H
  895. RTS
    # V- _8 t0 Z' ~* z4 L/ A3 z! J
  896. ) n* @/ {. |; D2 \' h7 d4 A
  897. ;==============================
    1 A  N0 D1 Q! _. O0 a
  898. .IF SOUND_BAR_SHOW_ENABLE
    0 `+ P$ G, m; ?
  899. ;音乐条显示
      O( @5 n% ]( o" g1 l$ c
  900. Music_Vision7 z1 p7 p6 h! t9 i! Y0 I( \1 }$ ]9 k
  901. LDA <Text_Disable_Flag* i6 i+ Z7 M5 I8 k4 F9 A$ j
  902. AND #TEXT_DISABLE_ITEM
    ( B' Q/ e" B: R
  903. BNE Music_Vision_End
    ' `9 N+ e6 z: G! F7 ?4 D2 u
  904. AND #TEXT_DISABLE_BAR
    , z- X' ?& h: c4 R$ }3 t) m
  905. BNE Music_Vision_Set
    2 O: k$ @: V0 O6 H
  906. LDX PPU_Cur
    ' c8 |" x1 K/ z- E4 W9 T
  907. JSR Music_Animation0 z3 S3 |% ^9 n, y8 v  I- o
  908. STX PPU_Cur" x. N: ~/ j6 R, e. ~
  909. Music_Vision_Set
    5 T% C9 b- A+ N
  910. LDA <Text_Disable_Flag; j" U" c7 B/ k! L4 y- [
  911. AND #TEXT_DISABLE_BAR ^ $FF3 J& e) ^( N. z7 l( A
  912. STA <Text_Disable_Flag
    7 E% ]- y/ h3 B. A! T7 X
  913. Music_Vision_End& Y! a+ I; U7 a$ v1 l" M
  914. RTS
    * r* z" P; M* D* Q6 t" G
  915. ;------------------------------4 s9 q+ \# B& E& ]8 m, y0 c
  916. ;音乐条显示处理& B% b. q+ B  h, o0 O" U
  917. Music_Animation
    6 I  L' G6 _' ^6 f; t2 Z" V
  918. LDA #PPU_MODE_CNT_LINE+ k6 J1 I* W6 ]( ~' |! ]" P
  919. STA PPU_Addr,X
    5 u, D, H2 \. _- d9 S& Z
  920. INX% z3 {6 Q8 M: r8 f0 S& E: D: H
  921. LDA #HIGH(Sound_Bar_Pos)
    . ]% N4 G9 B3 }2 m
  922. STA PPU_Addr,X
    1 u/ f; f. d2 A1 Q
  923. INX: {5 Y3 a  B( w, {: |
  924. LDA #LOW(Sound_Bar_Pos)( ]$ p) z& j, g8 x3 r' d3 v- c
  925. STA PPU_Addr,X
    ! b2 o4 y* X) u! f% ?0 e
  926. INX! F7 H, n1 @- ?& ^3 M0 g' m
  927. LDA #$08; V; a; d6 H* {  f& |% q1 x
  928. STA PPU_Addr,X# u0 D6 H. I% l8 L: K% D
  929. INX
    + G0 Q" U+ @4 x( L* Z
  930. LDA Sound_Bar
    4 Z( W$ q% W$ `5 B4 F; {) E2 q
  931. JSR Volume_Convert
    % W' C$ j! `8 F+ z% s. G6 Y
  932. ' J5 Y! n. X% t2 x+ l: L$ T
  933. JSR Volume_Set_Cnt" ^0 @" }! r8 `5 Q, J" h
  934. LDA Sound_Bar+$40 D- R: w$ K1 Q/ I* k! v. k
  935. JSR Volume_Convert* B/ n1 W5 P& c$ h! y+ X4 \
  936. + B2 c2 V2 |, z$ K- k, b
  937. JSR Volume_Set_Cnt
    3 _$ d, O# M; ^/ ^1 ^/ |8 h
  938. LDA Sound_Bar+$82 }% |9 p" c* C: P
  939. JSR Volume_Convert
    5 n( V" N7 C8 ^3 H$ m8 @' ?
  940. # Z( \( `1 o' X/ e+ T  m7 R4 g
  941. JSR Volume_Set_Cnt* e2 r# O, f3 h0 S% t
  942. LDA Sound_Bar+$C3 x4 C  P, {' b2 D. ^) b
  943. JSR Volume_Convert  c( o" s, k% U' ^% ^' H$ Y; w

  944. 2 F) N% I& s4 ^* p6 _
  945. JSR Volume_Set_Cnt
    + s+ O  i( @& V; X
  946. ' B8 s& ?) }5 ?; W
  947. LDY #$10! j4 m# i( w% S: k. W5 t
  948. LDA APU_STATUS
    $ p0 t$ E8 i  A% w! G, p
  949. AND #$10
    2 h; v+ q& m6 I2 W
  950. BNE Volume_Count
    / e$ @+ z: O; {6 w  E' n$ y5 H! a
  951. LDY #$00
    - Z- q; r2 m6 [  `6 e7 `
  952. BEQ Volume_Count- w5 G- f& u2 ^! u

  953. 3 O. Q4 k  r2 r
  954. ;------------------------------/ E; Z' P6 Y' d; v& [' F: S: U7 O
  955. ;音乐条处理
    8 _: L: s6 _* h) t# e
  956. Volume_Convert
    ' t! D2 e! q( W1 D$ T6 P
  957. AND #$0F
    9 n9 y  r$ b6 a4 \& t/ j& e; o; W% N
  958. TAY
    ) d; Z# l; n. O% Z7 [0 S
  959. Volume_Count
    3 O9 E1 T9 z' }! }( I
  960. LDA #$082 p2 _& p# A* I/ b7 R
  961. STA Sound_Bar_Cnt
    ) z7 {1 G0 f$ g9 D/ _2 i3 x  K
  962. Volume_FILL( `% b6 ]3 u1 M1 g5 c
  963. DEY5 n2 N$ R. }8 ?; s  T( [  Y1 o
  964. BEQ Volume_Half, m* J' ^" c% ^# E: |, M! \
  965. BMI Volume_Empty7 l$ ~8 {) g6 {# `+ ]+ C
  966. DEY' n/ b/ e: N, G0 f$ U
  967. Volume_Full
    * L( |8 V5 j7 q8 E; b) K7 {5 R/ a
  968. LDA #$16
    ( F# G- Q2 r3 e' n+ O6 D5 h
  969. BNE Volume_PPU' N0 h( S6 Y8 `2 z
  970. Volume_Half
      Y; M5 v1 |' c* T& ~" j
  971. LDA #$15
    - K- G$ X- A- n  S
  972. BNE Volume_PPU
    : t- V5 c: P- O& Y+ F
  973. Volume_Empty0 M) Y& q. j/ v. W: ?0 S
  974. LDA #$145 \& A9 w2 a6 b5 v2 H
  975. Volume_PPU" m1 L0 s: z0 @9 B3 `1 b! t
  976. STA PPU_Addr,X
    ) n  Z7 b9 m' }( O' q
  977. INX. k) r8 K5 u8 J' C( w
  978. DEC Sound_Bar_Cnt6 b1 f& N" z/ Z5 A4 O& l- _
  979. BNE Volume_FILL
    " b- ?7 k! Q: c* F, k( O) P
  980. RTS9 {1 }; g4 l( i! \& ~  ?: w6 X
  981. & _9 j1 O9 s  i# c7 w. H
  982. Volume_Set_Cnt
    1 Z# f9 A+ V, r$ v) e# p5 K
  983. LDA #PPU_MODE_CNT_LINE_NEXT0 L7 F3 U  ^6 _8 y( I1 f, g: ~( Q
  984. STA PPU_Addr,X+ O9 u$ K2 d5 _# Z  z/ d9 F3 _; s
  985. INX
      O) A# Q# j$ ^
  986. LDA #$08
    , }0 z: k# M; c3 g+ d
  987. STA PPU_Addr,X
    / a8 @: K3 K, g8 P: j0 T
  988. INX
    * G( o" x0 j) z2 F+ Q! [2 s2 U
  989. RTS& {5 I, z5 I2 ?

  990. . e3 X0 t2 [% j8 Z3 s
  991. .ENDIF
    , N+ |3 {$ d5 \/ j, r$ @7 k. ?
  992. ' G0 W$ n# n* n9 o+ Q0 [# |
  993. ;==============================5 @) n6 U! a+ C* m2 [* v" T' c+ h
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入6 W- F4 j. o+ W% a( `  }
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    2 c% N+ V% y: Z" s$ Z3 x
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    . |. \. {* }0 C5 b
  997. ;------------------------------/ G. ?, k6 ?) t% J3 B
  998. ;PPU处理
    + l# f" G! Q$ o8 ~
  999. PPU_Proc
      G' t+ m0 ]$ u
  1000. LDX PPU_Cur
    ; W" V/ K- p# ^: Q% y
  1001. LDA #$00' V9 j* W  r0 W3 _6 S; c
  1002. STA PPU_Cur& O8 |& C! w6 A$ w' [
  1003. STA PPU_Addr,X
    ! Z# I! U7 g  \- r3 \0 t
  1004. LDA PPU_Addr/ f( Q: L5 I6 C9 L- d
  1005. BNE PPU_Proc_Beg
    1 E7 A! P. r3 [3 @
  1006. PPU_Proc_Ret0 o* ^" Y' m6 L. p
  1007. RTS7 I9 P7 _# [* b( F% Y5 u
  1008. 1 B& m: p3 f- Q4 z: e
  1009. ;------------------------------& O0 G. C$ N, u
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    " N2 ]4 a, X2 h- D& G
  1011. INX
    5 G6 {6 m/ t: h8 v
  1012. LDA PPU_Addr_L1 ?* [5 }/ B' Y/ z! f
  1013. CLC
    + p" H- ?% `# S# g% y5 i
  1014. ADC #$209 a6 h; {* b% G0 \) G3 {) k8 A- o
  1015. STA PPU_Addr_L
    ' G7 K1 i! y. A8 l4 ~. b* o4 e* \" X8 T
  1016. BCC PPU_Mode_Return_Cnt_End) g* ]3 |# [) m, W0 U
  1017. INC PPU_Addr_H
    ( R- }  l5 U/ n' _7 b+ a! C
  1018. PPU_Mode_Return_Cnt_End7 G9 M" s0 @& M# s" v9 H# }
  1019. LDA PPU_Addr_H
    ! {) a, a- j* [. Y4 ^7 h8 z* ?' A
  1020. STA PPU_ADDRESS4 B4 [7 V) }6 E. E
  1021. LDA PPU_Addr_L
    ( M7 g. w( \7 z: ~1 ?, U( x* I
  1022. STA PPU_ADDRESS
    4 [( l; C3 X; `7 e6 j/ \- D
  1023. LDA PPU_Addr,X: H5 k; D# ^4 S
  1024. TAY
    . p8 f( b6 P7 U8 ^; ?
  1025. PPU_Mode_Return_Cnt_Write: e* Y- j, P" ^6 e8 J
  1026. INX
    # D) h- R5 [8 O& t- [) g5 [
  1027. LDA PPU_Addr,X  I2 `! g; C# Y- n
  1028. STA PPU_DATA
    : C. |0 F1 I, I; C. U5 ?7 m
  1029. DEY$ P! i- y) e# b
  1030. BNE PPU_Mode_Return_Cnt_Write
    + ?$ T9 r  [" r6 t2 `1 O0 s$ ?
  1031. JMP PPU_Proc_End
    . _) G% Q% b3 r4 G; f8 e+ I7 r. q
  1032. / L1 U; l) M, d+ S
  1033. ;------------------------------; E% I  y: f% j3 j- X
  1034. PPU_Proc_Beg  ;处理开始
    0 k' ?8 S# ?, x/ M9 D) ?
  1035. LDX #$00, a- ?# o: i4 b+ M3 \
  1036. STX PPU_MASK
    ) U8 F9 C' L0 K" H$ p. w
  1037. ;------------------------------
    ! }6 H# P* y8 D- O* Q5 T' b3 c6 q0 w
  1038. PPU_Mode_Select  ;模式选择9 O  C# q! L5 g; A# g7 X! {2 z) a
  1039. LDA PPU_Addr,X
    1 d" b+ z# O+ g) L
  1040. CMP #PPU_MODE_CNT_CLEAR: ?4 r4 Z4 F$ M1 z! \0 A
  1041. BEQ PPU_Proc_Clear, I- ?' H2 D, @0 T& B
  1042. CMP #PPU_MODE_CNT_LINE
    + {$ g. X9 F/ P5 A; t7 ^4 i7 `" f
  1043. BEQ PPU_Proc_Cnt_Line
    $ i4 H( ^. A) P. o% b
  1044. CMP #PPU_MODE_CNT_LINE_NEXT( b6 H9 Z, m- P) @( z' a1 q5 Z
  1045. BEQ PPU_Mode_Return_Cnt0 P2 L/ s6 r' x( H9 W3 P) L) w
  1046. JMP PPU_Proc_End_Write
    ) P1 e, e) Z+ P+ u+ S8 `- J2 m; p
  1047. ;------------------------------2 H5 _* v6 q- J% v
  1048. PPU_Proc_End  ;单行写入结束/ K; U- H: k7 Q9 g) r# _  [( G$ `
  1049. INX' L" C/ R! Q4 Y8 o; y
  1050. LDA PPU_Addr,X
    , i4 j+ n5 |7 h" w0 q; B0 z
  1051. BNE PPU_Mode_Select; N$ \& t4 W$ Y2 }. m
  1052. STA PPU_Addr% `( `4 V7 ~5 k4 Q' m9 g% h8 _
  1053. JSR Update_Palette_Color& t5 g( A! d3 Q
  1054. 0 \6 T: {% p2 k
  1055. PPU_Proc_End_Write
    . H7 B  U2 @3 K, B3 w' J
  1056. LDA #$00
    . Y: L" ?8 \; E) x: o7 p
  1057. STA PPU_ADDRESS7 G% R* Z- ?- j; R' O' u( y
  1058. STA PPU_ADDRESS
    1 ^7 K9 O3 g0 [( v% N" A' ?
  1059. LDA <Text_Disable_Flag4 i) ~$ _) J! A
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF$ v5 r6 j9 J& M; P. f8 U
  1061. STA <Text_Disable_Flag9 z* }4 u. }1 i  U
  1062. LDA #Scroll_X
    % C" K! Q- R$ s6 s8 A  N% k$ a
  1063. STA PPU_SCROLL( w+ |4 M) t0 n8 c, Z) B9 F0 D9 z. Q
  1064. LDA #Scroll_Y
    + @, I& S7 u! R  r; V% L+ o
  1065. STA PPU_SCROLL; e% M; c! H% v; C6 ^
  1066. LDA Screen_State
    # W2 X8 s8 l8 F4 b. c% |3 q9 F3 a6 v0 i
  1067. STA PPU_MASK, W' Y7 e% I. q6 s8 ?6 o
  1068. RTS( `( \  w4 d5 h9 B( w" w4 t) i
  1069. 3 r( }  G* M& U! Z
  1070. PPU_Proc_Clear
    % ]3 b! A1 X0 q
  1071. INX8 q7 J3 |( @1 i8 J3 S
  1072. LDA PPU_Addr,X
    5 ]) G% p4 S: Y! `5 |
  1073. STA PPU_ADDRESS
    ) z; C1 u& D! _' ?' r& J  A
  1074. INX6 u' O" o$ b4 x  L! a. z8 d" W& E
  1075. LDA PPU_Addr,X# K8 @1 v3 |1 d6 d2 \) V2 h" i
  1076. STA PPU_ADDRESS
    8 p5 X# A5 }$ u) h
  1077. INX* e5 C+ I  F7 k4 I) A7 r  q7 i+ M
  1078. LDY PPU_Addr,X# `+ o7 _2 _% _
  1079. LDA #$00# ?7 V: Z2 I/ _8 d: S+ i7 Z6 t$ ]
  1080. PPU_Proc_Clear_Write
    ( P- u6 n" U1 f
  1081. STA PPU_DATA
    5 f" p  H" D( |& j
  1082. DEY8 `* s% A( c( j* p- ^* L+ I
  1083. BNE PPU_Proc_Clear_Write
      ~( L8 @6 L6 O! j
  1084. JMP PPU_Proc_End# ~) Y8 p2 V- M% H5 W( ?
  1085. ; ?+ r/ \# a1 A# u$ E& v
  1086. PPU_Proc_Cnt_Line
    7 D) B; h* Y( Y2 d! B$ D5 L6 Q
  1087. INX) H1 y; z1 d3 |" c
  1088. LDA PPU_Addr,X' f3 {* E# P% f8 d; M
  1089. STA PPU_Addr_H! G/ D- i5 Z4 J( k2 `& z2 g! J
  1090. STA PPU_ADDRESS: S) E/ G4 ?, a2 Y2 o2 Y
  1091. INX4 \( s, [" U% N0 F+ @/ J( n# q
  1092. LDA PPU_Addr,X+ Q9 M9 L* Z: O! S- [. v
  1093. STA PPU_Addr_L
    + k. l# y6 }, l  R& _% l! Q& t
  1094. STA PPU_ADDRESS& i- I# j3 a, b* D3 O1 p
  1095. INX
    8 ?/ h2 X& M% q+ E
  1096. LDY PPU_Addr,X
    0 E& N# I4 }4 g# m; M$ W& a, R
  1097. PPU_Proc_Cnt_Line_Write' K* e: w2 s3 y* `
  1098. INX
    $ W' N4 {8 s; |% b& R& \, @
  1099. LDA PPU_Addr,X  K8 m# `3 F) h' T3 h+ S7 k3 g
  1100. STA PPU_DATA
    9 l; W7 S2 a$ w0 ]  z* R! D
  1101. DEY
    $ x" k: H8 p7 b$ k" r) c$ `
  1102. BNE PPU_Proc_Cnt_Line_Write
    * W& |/ G6 E4 E" o; y& W
  1103. JMP PPU_Proc_End
    * r5 d8 h8 q8 X$ Q- z1 @6 S- c$ s* @1 i

  1104. # S) }5 a( s, [5 q, f
  1105. ;==============================
    6 U' w. ?% C8 _& [! Q) ], i
  1106. HEX_To_Dec;十六进制转十进制
    / Y8 C7 x3 H& Y) A
  1107. STA <HEX_Data, z; i5 n7 r8 ?- o, F' [- U( y" ~
  1108. PHA" \. S6 l8 M) G& B' b
  1109. TXA5 _. K) y1 l9 ^3 t# Y  R4 X1 a
  1110. PHA+ L+ b) h% n5 F6 E) S
  1111. LDX #$00/ d* f# C4 }6 x4 x
  1112. LDA #$00
    : n6 H# L) J1 W. z4 L; @( L8 j8 O
  1113. HEX_Cln
    2 K: O& ?! o9 i7 x" F4 t
  1114. STA <DEC_H,X
    % n% f8 x: O) ^  C" v$ G! @
  1115. INX; Q8 Q/ K1 n  C; m9 j3 ]
  1116. CPX #$03  t, p+ c+ I3 ?1 }4 [( N- T
  1117. BCC HEX_Cln
      z5 B$ _1 G: U' \% n* S6 Y
  1118. LDA <HEX_Data( n6 ^; I9 p# ]7 z- c
  1119. ;------------------------------
    7 C+ G9 ]7 S9 D  C5 N
  1120. HEX_1001 b" S1 `# s3 A1 [; i4 {2 T
  1121. CMP #100
    1 m1 U) a6 Q- h# k
  1122. BCC HEX_10
    8 v$ E; }0 G9 ]( @5 ~! U) M
  1123. SEC
    ' `* {6 l  Z& _+ U3 h3 v
  1124. SBC #100$ `% z9 H4 [, X( {/ E8 n
  1125. INC <DEC_H9 _/ M  ?7 }, C3 j& w
  1126. BNE HEX_100
    ) f+ B6 _9 e, {; T4 k
  1127. ;------------------------------: m$ l5 N( P- b2 Y# p6 Y  M0 I
  1128. HEX_105 r/ z7 D$ z. ?% F2 C& _
  1129. CMP #10
    - v" w& e' S' d7 p9 W
  1130. BCC HEX_1
    . n9 g6 b/ Z) T$ c
  1131. SEC  U! X, Y8 R% ~+ u3 S
  1132. SBC #10
    * t+ A% k# w/ X# @7 V. e( Z6 ^
  1133. INC <DEC_T# f3 S1 e9 d8 t/ m- f" P' R
  1134. BNE HEX_107 F( m2 h* v6 M* n  }
  1135. ;------------------------------
      g7 P% i8 x8 f0 ?) `
  1136. HEX_1
    - Z" t! [, ?. S
  1137. STA <DEC_L
      R* z7 [: ^* K
  1138. PLA  y3 Z. C% ^' C) m, I5 N  L4 G$ P
  1139. TAX4 Y. B' ~( n! [0 P
  1140. PLA; S8 |5 @6 N2 x! l1 c" b* ~7 U
  1141. RTS
    - [& }( h- `8 H
  1142.   ?/ W* F! y' `$ B; ~# ~
  1143. ;==============================  n4 p! @  ~! H
  1144. ;音乐曲目显示/ Q  t- s3 S$ E' Z! y' G
  1145. Music_Show/ C  k4 f, j" q9 e, f  k
  1146. LDX <Music_Item_Cur6 n5 }2 U6 {4 G) J8 S5 s2 S
  1147. LDA <Music_Cur,X: Q+ f/ u3 c1 x$ g- Y' J" b
  1148. CLC
    + d! y: C$ l; Z; G
  1149. ADC #$01
    % x8 B( v+ }1 r
  1150. JSR HEX_To_Dec2 n9 [( L" x# j; l7 m! P
  1151. LDX PPU_Cur) `* b# i8 X* P+ v, z5 s
  1152. LDA #PPU_MODE_CNT_LINE
    " h8 R; n& n3 q) u
  1153. STA PPU_Addr,X
    6 m8 k+ b8 M5 k
  1154. INX
    + m4 M$ d  b0 W1 F3 X" y
  1155. LDA #HIGH(Play_Index_Pos). I! u( R0 n$ Q8 s3 m5 z
  1156. STA PPU_Addr,X5 y1 Z, @; z9 i6 k. J) [, W+ K
  1157. INX
    / t, J- J0 Z5 S  T- I9 }
  1158. LDA #LOW(Play_Index_Pos)
    2 h2 I6 |9 A$ K% u: j
  1159. STA PPU_Addr,X3 s  j" x% @" ?! \: N
  1160. INX
    , h1 Z- @* t$ ]  [8 \6 x: x" m
  1161. : J7 Z) O2 m0 u' C" J, G8 a
  1162. LDA #$07! ^3 A+ R5 ]% |0 F3 o& O
  1163. BNE Music_Show_Length; g+ P/ N5 d: X6 e& O6 Q) |) d

  1164. ( R$ J$ b- r6 C$ Q9 [
  1165. Music_Show_Length3 M. b% j7 u' H" E- `$ t
  1166. STA PPU_Addr,X
    + t% a1 j' o# Y0 x: M6 e; `
  1167. INX9 d" D& r3 t7 H3 J! c

  1168. ; }0 s  y* e4 q, o& q# M& M
  1169. LDA <DEC_H) l( `+ x# A* l) C9 W* }
  1170. ORA #'0'8 p/ l7 z9 h% M& D' ~7 v
  1171. STA PPU_Addr,X& v8 ~0 P% x% H' `. u; ?' c! Y
  1172. INX
    - e. c' E: g: F( p9 W; A& c
  1173. ! {+ _0 s* o" c) i% P, o& ~; [
  1174. LDA <DEC_T
      o* H! N) C2 }  N; {4 I' c
  1175. ORA #'0'
    : W( N1 C$ H, ]. f) y
  1176. STA PPU_Addr,X
    & @1 [: ~6 R, A$ `  d8 K9 K
  1177. INX
    5 `! v0 {) Q9 e; M6 a) }: L
  1178. ! l$ M. ^% j) y
  1179. LDA <DEC_L) J# N* Y, q  D: i3 C0 ]/ P( \: m
  1180. ORA #'0') b: r9 }. @$ |' }8 b, o3 v
  1181. STA PPU_Addr,X
    ) c" e9 q% O# N& J6 _
  1182. INX2 B' ~, }, j0 i" k6 ]8 ]
  1183.   V% u, m9 J. @, M) R) O  r; @
  1184. LDA #'/'
    # T& R& _" j: t0 Q
  1185. STA PPU_Addr,X( X: @% T+ p( d# k$ s1 p
  1186. INX3 s6 \' c3 g2 r: Y
  1187. Music_Show_Total4 C% B* W6 S$ N8 X6 ^
  1188. LDA Music_Total, M' N6 |% d% P$ a
  1189. CLC, h$ S: R8 m# i& I. Y' V. E
  1190. ADC #$018 ^0 @/ h- u, }/ e
  1191. JSR HEX_To_Dec& b! `" ?& o  `  R0 V+ I/ d
  1192. 8 t% Z# }, z/ f
  1193. LDA <DEC_H( q- \. c2 D. W& ?; \
  1194. ORA #'0'
    - ~  b' E6 c. ^' s1 z5 _
  1195. STA PPU_Addr,X
    * l6 p6 _8 s3 c2 l" w/ |/ }' X5 d
  1196. INX/ j7 \* m3 B+ z5 e. l. p4 P1 `- O
  1197. ( t  c1 c  q6 Q% d' c- A( f
  1198. LDA <DEC_T* L  L+ m4 O+ `6 m
  1199. ORA #'0'9 l. x) |# `$ \- U$ w
  1200. STA PPU_Addr,X
    : y& E- h0 M0 C5 s2 b5 e: `
  1201. INX3 J1 o( n  y  a3 ]/ ~9 Q2 T4 n
  1202. . P$ [- ?$ a0 w/ Y; p3 ~$ R: M
  1203. LDA <DEC_L- E  G/ t4 i, R, W; ?
  1204. ORA #'0'
    , f% R1 d4 z# |1 w" s$ E7 |& X
  1205. STA PPU_Addr,X3 H+ T5 D6 f2 z  ]: Z. s
  1206. INX
    : q1 q8 M, Q3 Y& m$ A
  1207. 0 A# K! H- I: |/ L/ X6 G
  1208. STX PPU_Cur0 v2 p8 [+ S$ L9 W
  1209. Music_Show_End
    6 K& a3 r, E+ f/ l3 ?
  1210. RTS% F- D8 s' H( B2 I! k" L: ~4 p
  1211. . Q! y( f4 o4 N- g3 W/ ^6 D* n
  1212. ;==============================
    . Q4 b7 F0 R# C' u
  1213. Time_Show;播放时间显示
    % \, C: m0 |8 y6 K" Y
  1214. LDA <Text_Disable_Flag: f; {2 z. J, K& O
  1215. AND #TEXT_DISABLE_ITEM
    # l4 \0 ]6 B' @' v
  1216. BNE Time_Show_End9 w$ F% b2 b+ ^9 w7 S1 h
  1217. AND #TEXT_DISABLE_TIME9 Y  S. r( q/ R- Q' D/ J
  1218. BNE Time_Show_Enable  t2 {+ d' D4 x/ x0 t
  1219. % C3 t5 x1 N" n0 V7 n8 |" N; A  @+ z
  1220. LDX PPU_Cur
    7 S9 [$ `/ V7 E6 N9 _- d# I2 F; e
  1221. LDA #PPU_MODE_CNT_LINE$ A; A" y! J" Q
  1222. STA PPU_Addr,X9 a- {8 M1 d2 n
  1223. INX
    ! J, {/ B4 Y) T) W
  1224. LDA #HIGH(Play_Time_Pos). p$ x. Z1 P+ C* p6 v- g
  1225. STA PPU_Addr,X7 \4 E; }# j. m2 j5 B2 ~1 A# c) B
  1226. INX
    : f* k3 {3 V0 J- I
  1227. LDA #LOW(Play_Time_Pos)
    # L4 \! R; H' T  v) }: X" e3 w7 C
  1228. STA PPU_Addr,X7 R& f! h/ s1 U! ^' B
  1229. INX
    $ \1 ^" L/ g6 P2 V+ v( ?% d
  1230. LDA #$08
    ( i/ \4 e/ q; q- ~; h8 m8 I8 Z
  1231. STA PPU_Addr,X' z0 |" }5 d6 h8 U* W0 V
  1232. INX$ b" T; W9 D( G0 B  q) N0 N7 q: D
  1233. Time_Show_H9 v' B) `* h- l; ?  u0 ]
  1234. LDA <Time_H; v6 r" R8 E- @6 K% }2 d1 j! n1 n
  1235. JSR HEX_To_Dec' N& T/ A& L! V# F
  1236. JSR Time_Digit5 T" p' D+ Y& I, _  A
  1237. LDA #':') o- v0 g* r" K4 h  |! d* r
  1238. STA PPU_Addr,X9 L7 M2 s! C* F7 q8 p
  1239. INX  M6 x- P9 \+ d: W% m. o
  1240. Time_Show_M
    1 r2 a. m/ k- A/ n. \7 q6 v
  1241. LDA <Time_M( G& G$ |, _' l; B
  1242. JSR HEX_To_Dec
      y5 {. ?: J. j1 k1 I
  1243. JSR Time_Digit! A8 \+ ~% U9 e( x
  1244. LDA #':'
    7 T: m6 `. O4 `: V% y$ P
  1245. STA PPU_Addr,X5 E0 W$ h. |( C! K: A
  1246. INX; }. [3 b- V1 q7 a$ I
  1247. Time_Show_S
    7 y) C+ V2 J* H  h- O1 c" O
  1248. LDA <Time_S% ]" F) C; a2 n& B/ |
  1249. JSR HEX_To_Dec# q- W8 e4 g& w" L, T4 e# h2 l
  1250. JSR Time_Digit
    # G; s7 q8 F/ N% R) l  {, y% x$ Q
  1251. STX PPU_Cur
    8 w- T2 P$ X1 M( F. c5 `
  1252. Time_Show_Enable3 R4 G+ x3 D* a$ k4 E0 d
  1253. LDA <Text_Disable_Flag& ~0 C5 d( t: {, }1 `" W
  1254. AND #TEXT_DISABLE_TIME ^ $FF  D' g3 g& o- V9 V2 l. b
  1255. STA <Text_Disable_Flag+ ]# @# K0 ~; E5 h2 }
  1256. Time_Show_End
    * W1 @0 K" [6 P+ X% I/ r% t
  1257. RTS5 K1 e4 S3 ^& ?  r6 R# {
  1258. 8 c  M7 u$ h; b+ T0 `* v
  1259. Time_Digit+ x' i# x3 D8 ?! x0 P+ |0 L
  1260. LDA <DEC_T6 W8 Z5 E/ \4 F
  1261. ORA #'0'8 O( b" C" X! I6 z7 p; z- S
  1262. STA PPU_Addr,X- r: v7 w# V) ^
  1263. INX
    # r  R6 m  D5 f3 R; i) b
  1264. LDA <DEC_L
    ! E2 S  k: {4 L
  1265. ORA #'0'
    6 L0 L( h/ h( Y) O5 U! ?, o9 U
  1266. STA PPU_Addr,X
    2 b; B3 ]1 l5 K  |
  1267. INX' A6 d5 F  H2 X: @( i' O8 k+ k. g
  1268. RTS% f6 G& i# I  ^: }; K
  1269. 9 c& O4 S4 F! `
  1270. ;==============================
    4 E6 m# D; G# |0 V8 W, j+ f- D
  1271. Time_Count;计时
    9 S" ?! z- a! c4 ^
  1272. LDA <Music_Stop_State
    ) k' k/ _- O! d3 }( `
  1273. ORA <Time_Wait_Cnt
    8 W8 H+ l5 X. \( ^/ |
  1274. BNE Time_Count_End
    2 t+ V% ]; o9 o7 x+ v, V. z
  1275. INC <Time_Cnt
    2 i1 d3 j# q" c9 o
  1276. LDA <Time_Cnt
    2 J, c- S3 R$ G* Y
  1277. CMP #60
    , K4 F. M7 ^+ s: x5 G
  1278. BCC Time_Count_End
    ' H6 [& q( t" o& R0 ?! M
  1279. LDA #00" o& X/ B- ~: s
  1280. STA <Time_Cnt0 U; I0 Y' _3 r, z
  1281. INC <Time_S
    - G/ q: U) }" Q2 Y3 ]
  1282. 8 M. r$ E/ |, x' t+ t
  1283. Time_S_Cnt
    * @6 E- Y$ A$ D( Q0 l7 S
  1284. LDA <Time_S
    5 _0 ~  }1 B6 m+ s8 ~6 s8 G& B
  1285. CMP #60+ |- X' C  c/ ?3 B
  1286. BCC Time_Count_End
      W) o# z- t# r5 ]$ Z
  1287. LDA #00
    ; g7 Y3 S. w  _- b6 L
  1288. STA <Time_S2 N2 p9 r* v, z* N& w; Q
  1289. INC <Time_M
    & `0 v; U) o+ L! @0 q$ v' a" ]

  1290. % v: t* y# q7 l7 P$ T: ]3 f% [4 e
  1291. Time_M_Cnt
    % z# W% D2 a8 \" \* x# T
  1292. LDA <Time_M- j3 u" a2 K; i
  1293. CMP #60
    * b/ s6 U1 o6 C9 ?# Z" @
  1294. BCC Time_Count_End1 O; K9 b2 g* ]7 j1 a
  1295. LDA #00
    9 o) g; ?# E, s, k0 ^7 ^
  1296. STA <Time_M
    9 U2 y" ]$ _' L2 k1 ^
  1297. INC <Time_H
    4 m+ ~8 R, |3 B7 q; L5 d6 t
  1298. 3 D8 O* C! z0 R, b
  1299. Time_H_Cnt+ a5 o! a+ j1 e
  1300. LDA <Time_H
    : D: K' r2 |+ `7 X1 R
  1301. CMP #24$ V6 s# s1 a' D1 r9 D
  1302. BCC Time_Count_End2 f3 G4 Z# d+ B4 D
  1303. LDA #009 ^1 `9 B$ x* {; X
  1304. STA <Time_H5 ~* Q: J  f) R! p

  1305. 8 i5 n7 `9 K% c, e# W
  1306. Time_Count_End
    : {" H! a, c/ v
  1307. RTS! [$ f* K/ `) t4 y7 u7 m0 r
  1308. + t2 I4 i4 j% v- s
  1309. ;==============================% T9 J) l0 u, [# N+ @
  1310. Time_ReSet;播放时间重置" P. l' V7 O6 |
  1311. LDA #$00/ n0 a/ X# Z" F" V
  1312. STA <Time_S8 ^: W0 R9 C( Q! Y4 N
  1313. STA <Time_M ( Z. l. e0 o8 e6 O/ u& O4 Y
  1314. STA <Time_H  m  a8 x' J4 l$ h, J' I5 ?  g  e
  1315. STA <Time_Cnt% ^- ^. B0 ]1 ^: Y. r/ y
  1316. RTS4 o& h/ p0 [! |0 O# C2 c

  1317. : d# r( S5 D+ c$ \% F
  1318. ;==============================* p4 Z% w$ u4 s6 @( b" }
  1319. Music_Bar_ReSet;音乐条重置9 w% s8 }: y5 V& W4 [2 @  [- w
  1320. LDA #$00  i# d/ E& O. c, D/ n
  1321. LDX #$00
    4 H; `/ W; M5 K2 b" j
  1322. Music_Bar_ReSet_Set
    ; N& I2 W0 h& |% _, N9 f
  1323. STA Sound_Bar,X
    ! w2 v2 |; V/ x% c$ A& e! {
  1324. INX+ p8 A5 u4 t2 A; S, }8 e# M
  1325. CPX #$10
    2 X  T6 c* m$ ^
  1326. BCC Music_Bar_ReSet_Set
    % S* J6 l& U" c' U! l
  1327. RTS
    7 i" S1 n8 C- x0 p

  1328. " Q* n, c) \) |7 a+ O" n
  1329. ;==============================9 T3 H9 k4 |" J$ K
  1330. PPU_Data;PPU数据写入+ t- c, P9 D4 f! ]2 b* \$ L
  1331. STY <Data_L7 i) C$ y6 b, c
  1332. STX <Data_H! ^  e9 h) O" L7 w' F7 A9 m
  1333. LDY #$FF9 C: n, @# q0 @0 j5 t& l" o% p! {
  1334. LDX PPU_Cur! m+ ~, h" j. |# I9 U2 g5 v
  1335. DEX5 P: u0 p$ D* B: F# B1 d
  1336. PPU_Data_Beg
      K/ `) c  P, _+ {7 w- u4 r. Q
  1337. INX
    $ r  |% Q9 E6 [( P' ?
  1338. INY
    0 [3 F; K: \% _0 U3 w
  1339. LDA [Data_L],Y
      t" k! q' O) Y% S% }) I
  1340. STA PPU_Addr,X
    ' h6 W7 d; B0 G$ x0 |
  1341. BNE PPU_Data_Beg  t" R$ ?, Y" Y9 |* \3 N
  1342. STX PPU_Cur
    : q& N4 J5 Z0 y) _3 p
  1343. PPU_Data_End0 v9 k3 O- C8 A
  1344. RTS
    - I- ?5 `. A2 h% ^

  1345. # Y  i( i& F8 g9 j. O1 _* ~
  1346. ;==============================9 ~+ K" f3 D- p# @$ X
  1347. Music_State_Show;播放状态显示4 u, ~! w. A. B6 G  A7 l
  1348. LDA <Music_Stop_State
    % ]' b- ~3 p* \8 {& g6 E* c
  1349. BEQ Music_State_Show_Play
    " D3 x8 o1 z4 \7 w* Y3 R2 X) i
  1350. Music_State_Show_Stop: k* |  d# M2 }3 H5 W( g+ F7 T
  1351. LDY #LOW(Music_State_Stop); |, A+ h: a) T0 r# P+ t+ p& w
  1352. LDX #HIGH(Music_State_Stop)
    6 l2 t" Z1 m6 B7 _( W9 p
  1353. JSR PPU_Data0 W7 U! A1 Q' c  m2 H. V
  1354. RTS
    & t& j3 N1 X1 \2 o6 L" e
  1355. Music_State_Show_Play$ w7 S5 E& p; p1 l! e) h. o. ?
  1356. LDY #LOW(Music_State_Play)- P: m* Z$ S( h, g1 \* Q
  1357. LDX #HIGH(Music_State_Play)
    - n1 j6 L9 X  u, r- j4 n/ j; C
  1358. JSR PPU_Data
    ) S8 s: f1 P9 j6 ~. D0 i5 e
  1359. RTS; G0 o, O8 v( D$ \" o
  1360. , L$ J, [% O) x  W+ F6 N
  1361. .IF SOUND_BAR_SHOW_ENABLE
    + y- u* y' M) t# g
  1362. ;==============================
    1 _* B& b& d% q5 u3 L7 r# O
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    : e7 O: k7 G1 a8 B( R
  1364. LDY #LOW(Sound_Bar_Text_Data)5 l# c' Q% Y1 n# l; H
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    / n: t6 O8 O7 Y* o
  1366. JSR PPU_Data
    + ]; q  T8 X6 t8 c" K) c
  1367. RTS
    ( ~0 x. t  O& n3 T7 E' [& K
  1368. # {# O1 W# i) ^% O1 ^1 e
  1369. .ENDIF) D) ^# Y4 ~  W4 a& |4 ]

  1370. " k% Z/ v3 V) Y/ T* m7 |
  1371. ;==============================
    0 s, v; @0 b; w, J
  1372. Set_NameTable_Attributes;设置命名表属性
    2 q7 `4 H/ ^+ v$ `4 W( z
  1373. BIT PPU_STATUS( i& [. d' k+ K/ b
  1374. LDA #$23; m# B, p6 p! j3 \: B% T
  1375. STA PPU_ADDRESS: k: L: g2 m3 g! G! O' Q9 b
  1376. LDA #$C06 U8 u. r8 h- N- _+ C- {
  1377. STA PPU_ADDRESS
    & L, M! ~- j; P$ r4 h+ [. O
  1378. LDX #$00
    ; w# p& f+ ^0 i* R6 A: m4 @/ f
  1379. Set_NameTable_Attributes_Write
    8 c6 w; A/ n% E. a, {
  1380. LDA Palette_Attributes,X
    ; h" _7 j: n' d) l  ], p
  1381. STA PPU_DATA
    2 g* [9 I9 B/ P' ^( h8 b: g+ Q
  1382. INX
    ; ]; P7 z7 Y. E0 g2 N8 h
  1383. CPX #$40
    9 q8 N, U7 s& p- h& M
  1384. BCC Set_NameTable_Attributes_Write# K/ o* ]; Q. y0 m+ q6 T0 ?+ P
  1385. RTS
    6 D2 U: S. Z' M; |6 E: ^7 K9 N
  1386. : G4 q# H5 f9 v0 K, [/ v# ~) `
  1387. ;==============================; _$ _" P) F" L6 C
  1388. Set_Palette_Color;设置调色板数据
    / k4 j1 h: \2 a5 y3 I3 o; D4 M' l
  1389. BIT PPU_STATUS
    - }3 l7 s- V% W# g( `8 o. Y
  1390. LDA #$3F
    + k" [% c! f; C1 E( M2 X2 m7 }
  1391. STA PPU_ADDRESS
    $ j1 r9 z7 I6 m* a
  1392. LDA #$000 D  l- o3 g* ?& H( X, W, h
  1393. STA PPU_ADDRESS! U6 Z" d; D. _7 E
  1394. LDX #$00
    # e0 J; s. q$ o1 ~
  1395. Set_Palette_Color_Write
    ( j$ v. z9 h. \4 ~+ a/ ]- p
  1396. LDA Palette_Data,X
    " q1 `; @: L* S, k
  1397. STA PPU_DATA6 S2 J  a# N1 k2 R% d
  1398. INX' x' Y- U3 @* m- z
  1399. CPX #$20+ T- ?2 M4 ^! c' D& K; i1 v$ `' Q* @
  1400. BCC Set_Palette_Color_Write
    / v4 w0 t$ c4 U
  1401. RTS
      U' a: C. |4 E6 B! k: E
  1402. 3 ^, t  x) A4 n1 j- d7 r6 F* ~7 z
  1403. ;==============================; U/ V1 i6 Q( W
  1404. Init_Palette_Addr;初始化调色板数据3 e- e8 [8 P8 V. e# c  Q
  1405. LDX #$00
    . z( s! U" H) t! l2 f% R
  1406. Init_Palette_Addr_Write
    ! k- R9 g9 j' [8 t8 C0 O, o4 W
  1407. LDA Palette_Data,X
    : U7 |/ V: b9 `* L& n, @
  1408. STA Palette_Addr,X3 b  m* n/ e4 X% Z  L. G; O
  1409. INX5 u4 i- O. }; O$ l  I7 U
  1410. CPX #$201 Q: i6 g' J/ T
  1411. BCC Init_Palette_Addr_Write+ J# d, |; @5 t' M6 ]9 s
  1412. RTS4 J0 z$ ^1 \/ j, o+ W( |# Z* F. D# x
  1413. $ W+ s4 }" T4 X; q2 |# t" t  L
  1414. ;==============================
    ' ^7 Q" k! Y3 S8 V! Z
  1415. Update_Palette_Color;更新调色板颜色
      |8 [+ x0 _5 A' ^/ c) I. U
  1416. LDA <Palette_Update_Flag: P- @+ Q8 }) o/ h, `
  1417. BEQ Update_Palette_Color_End7 H; |) p6 s1 P+ d" a3 H4 y
  1418. LDA #$3F3 W0 j" j& C# [: }
  1419. STA PPU_ADDRESS, A- G; i5 A6 O( C1 b1 H* K' h
  1420. LDA #$0C# z, E; v) p3 K, s0 ]6 Y) ]! m0 h
  1421. STA PPU_ADDRESS
    ' F$ i; f# |* m7 }4 }5 F& x
  1422. LDX #$0C
    ; Z, _" ^/ O( o" L& X' z
  1423. Update_Palette_Color_Write
    9 p* p/ r# O6 w6 D  N2 Z/ j
  1424. LDA Palette_Addr,X
    - H, a5 J4 q+ U8 c7 Q# [
  1425. STA PPU_DATA# ?' C6 i/ B+ e- B) c3 [
  1426. INX
    5 M$ X6 }. C. H$ I# r- I
  1427. CPX #$14
    # V# q7 j( o# b1 c
  1428. BCC Update_Palette_Color_Write
    ! O* `8 x5 h6 [( I( Q
  1429. LDA #$004 f: d! X1 ?# J, n
  1430. STA <Palette_Update_Flag
    1 X+ E# O# _5 r* u$ b
  1431. Update_Palette_Color_End/ r" D* m' i7 J* l3 ?" ~- N
  1432. RTS9 L( o3 I8 l" D( m2 Q: A5 |
  1433. ; h, b+ h$ o; Z
  1434. - K0 W2 Y; U$ B2 \% ]
  1435. Update_Sprite_Palette_Data( {4 E! Q' q! q- O- f' b7 v
  1436. .DB $21! m3 u- H3 p% h* p% t
  1437. .DB $21& c6 L5 I( ?1 X, A1 Q# k
  1438. .DB $116 i$ @9 x2 A: J' V$ f
  1439. .DB $01  e, A5 l& ~8 X' }) |  ^( S% y0 [, q
  1440. .DB $01
    , c" Q& ?0 I; E( c- T
  1441. .DB $119 ?7 L3 j9 E. _3 Q3 P' i
  1442. .DB $21. Z" e3 R5 X: `
  1443. .DB $21$ \- d/ f! \4 T3 }' r5 [  X4 d2 b/ \
  1444. .DB $118 K9 C' e3 g  o  \1 Y
  1445. .DB $01/ o1 {& b/ ?. Y" I  r( h
  1446. .DB $11
    . e" B% u0 J" g: b+ t* }' N1 ]
  1447. .DB $21) S. J7 ?9 _; o6 u4 b# V
  1448. .DB $21
    9 V4 k) Z8 @7 e- k# x) B
  1449. .DB $11# O/ L% i& \" ^5 i
  1450. .DB $01- Z7 H& S# J- v
  1451. .DB $11
    1 P9 @' P) }  j  l2 _% _
  1452. ;==============================& d+ V) P) l) C9 b& B/ ?
  1453. Update_Palette_Data;更新调色板数据2 ]0 j  K1 g  }; X+ m
  1454. LDA Nmi_Time_Count) t  H4 g0 U7 N5 a' S9 Q8 A
  1455. AND #$08
    1 n" [: z7 ]8 d, y3 z$ I
  1456. CMP #$08
    % H* |. Q; O( F" @9 }7 b7 `
  1457. BNE Update_Bkg_Palette_Data$ c8 `* H$ ~5 }* f
  1458. " `' s+ X# k; R9 r- [$ |
  1459. Update_Sprite_Palette_Data_Set. O5 l+ W7 d  X; t/ N$ B
  1460. LDA Nmi_Time_Count+ D2 t, r) X% B
  1461. LSR A+ |" f& w( K+ g9 m6 p& R; H3 n
  1462. LSR A, G7 f+ g1 L2 m& y0 W/ D* H' L) u
  1463. LSR A
    - P# G! S, b; n) n
  1464. LSR A
    : w, J0 w" k7 J+ ^
  1465. AND #$0F
    & O% P8 l! K( F3 _0 d% ~& T
  1466. TAX9 J; t4 J# x- r. {2 L3 u4 Y
  1467. LDA Update_Sprite_Palette_Data,X& _# j* {& b# }5 L
  1468. STA Sprite_Palette_Update_Addr
    2 r( s" C5 I$ e9 X% X
  1469. LDA #$01( x& H- o; a- J& V5 l( L' K
  1470. STA <Palette_Update_Flag7 p- x5 |$ v) N4 s

  1471. + S& Z7 b4 w5 W# w
  1472. Update_Bkg_Palette_Data% i" F9 `) l8 s3 f
  1473. LDA <Text_Disable_Flag
    ' C7 [4 C  k! f) @
  1474. AND #TEXT_DISABLE_RAM, Y1 ~& `" o- I1 R
  1475. BNE Update_Palette_Data_End/ Z/ V! P# O: A2 t, ]$ d
  1476. LDA <Music_Stop_State, |, J9 E" K0 {/ o9 `$ H
  1477. BNE Update_Palette_Data_End: s3 M3 w9 {6 L
  1478. - t' I; L; ?% X2 X+ o4 ]: f' o
  1479. Update_Palette_Data_Check
    0 I# u8 U3 Q, D# S8 U/ l4 r/ i
  1480. LDA Palette_Wait_Cnt
    ! i2 _1 ?# m, U7 }! T/ Z
  1481. BPL Update_Palette_Data_Check_Over
    7 W' R+ a9 R! I" K& M8 e
  1482. LDA #PALETTE_UPDATE_INTERVAL
    , \9 C- }5 Y7 l+ V2 H- x/ Z
  1483. STA Palette_Wait_Cnt# g3 ?6 \! s' X0 T
  1484. Update_Palette_Data_Check_Over2 v* Q+ `6 I& t9 p
  1485. DEC Palette_Wait_Cnt+ J9 S) T2 T9 R( G  W7 z1 E% w
  1486. BNE Update_Palette_Data_End  ^  w& e8 I8 W1 r$ g, Z
  1487. $ `- P' o5 w, L
  1488. LDA <Text_Disable_Flag
    ! @, c; _' F* U9 t, N
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME$ }. A4 J' h8 B
  1490. STA Text_Disable_Flag8 ?2 ~8 P- W. S1 }2 b
  1491. INC Palette_Update_Flag- x, _/ X6 R8 o, k+ c+ l* x) c6 R
  1492. 5 U. `+ ?% {) W! A# U$ P
  1493. LDA #PALETTE_UPDATE_INTERVAL9 u6 Y0 ~) P6 Z/ W
  1494. STA Palette_Wait_Cnt
    ' z# z3 j' I: h7 |7 D# C* M
  1495. 1 z$ p9 J. v- Y6 f& J; N9 C3 q
  1496. LDA Bkg_Palette_Update_Addr
    ; @& E: _- n3 {1 `8 [$ v
  1497. CMP #PALETTE_UPDATE_MAX% L- r4 r' S- q! R" d4 p5 }/ f
  1498. BNE Update_Bkg_Palette_Data_Set
    , d0 o# [, S, Y
  1499. LDA #PALETTE_UPDATE_MIN - 1
    * b6 M7 T1 e4 ^0 N' l
  1500. STA Bkg_Palette_Update_Addr
    * r4 y* l5 S; r( L4 O4 H9 ?0 z
  1501. Update_Bkg_Palette_Data_Set
    5 e; A: L! l- u0 K! ]
  1502. INC Bkg_Palette_Update_Addr4 @& Q  i8 y& K- {2 Z
  1503. ; v& g$ O1 o3 f- d
  1504. Update_Palette_Data_End
    # z- E# l. d8 V: |5 f7 t8 s' C7 h) Q
  1505. RTS
    / e3 `9 G6 W5 ]9 @
  1506. * R8 v1 y% n$ V
  1507. ;==============================) v4 E2 ^- r( e/ F; i$ [4 @
  1508. Show_Music_Text;显示静态文本
    % @5 d6 L" p7 A% ]4 d
  1509. LDX #$00
    - D9 A7 t5 A9 L% Z2 O
  1510. Show_Music_Text_Set+ R) b6 w. j; Y9 B. F) C
  1511. LDA Static_Text_Data,X
    & g  P2 y7 H# R$ q" n+ K
  1512. STA <Data_L
    1 A# q6 J: D( p  d
  1513. INX/ v# \. O+ r) s
  1514. LDA Static_Text_Data,X% C5 t4 i4 |- I" }# v5 U+ [  I$ O: @
  1515. STA <Data_H
    2 L$ \# ~2 b; v: n& {
  1516. INX8 Q) d$ A* r' w8 _; R
  1517. LDY #$00
    / W# Y+ |) ]6 w1 x+ d* A
  1518. LDA [Data_L],Y6 {$ A- U- w' T8 w: a! Y
  1519. STA <Data_Cnt
    , D! z+ f' A- L5 s
  1520. DEX/ ~0 e; Q2 i  S+ U
  1521. DEX! x( ]3 E4 e$ Z
  1522. LDA Static_Text_Pos,X: {; D' Z0 a3 Y$ R" d* G& Y  J7 p
  1523. STA PPU_ADDRESS
    , l$ \- {: e( q+ P3 Q# r
  1524. INX
    8 m' a1 y: J3 e& O
  1525. LDA #$20- t. x, H7 a: _* ~  A( U* G
  1526. SEC
    % S2 u% i+ i" {6 k9 }: K$ H
  1527. SBC <Data_Cnt
    3 \5 `5 @7 K$ O; k9 ]# U/ p" m
  1528. LSR A
    % o7 a3 t# y+ G; X* U& Z' @9 L
  1529. STA <Data_Buf
    3 z5 n# E( g' j& e, R9 B
  1530. LDA Static_Text_Pos,X; J, `' W" ?) ~& `& x8 {- D$ }
  1531. AND #$E0
    6 ^4 c8 j) O) i/ ]; z& F% K2 N
  1532. CLC
    9 P8 n6 p# B4 ~# M  b% W) m- F
  1533. ADC <Data_Buf
    9 Z: F3 V5 W1 A$ L$ H
  1534. STA PPU_ADDRESS
    3 Z% T! I$ J' |1 i7 ?$ X
  1535. INX
    $ m* @* g+ D, i5 d, v7 g% T5 D
  1536. Show_Music_Text_Set_Write! o: T0 x- F6 o
  1537. INY4 ?4 o5 p+ g& N; ?2 U3 W" d' v
  1538. LDA [Data_L],Y  K% E0 w" C" y% X% O1 l0 U
  1539. STA PPU_DATA: v- |+ }2 f/ s( p& n6 L+ n
  1540. DEC <Data_Cnt
    : ]2 w5 E" o( Y- Y: M
  1541. BNE Show_Music_Text_Set_Write3 I; X, o. w  Q
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos2 c& Z3 Y- `0 Z
  1543. BCC Show_Music_Text_Set
    0 U- w# f/ D& S! U
  1544. RTS# t. n5 l. b. d# f% o5 l5 }) w
  1545. : _) p7 n  n( L+ o# Y/ O% S0 t. \0 i
  1546. ;==============================
    . m) V& z0 n/ x- G$ W+ S8 s" l, c
  1547. .IF Track_Name_Pos;显示曲目信息; K5 V" S; a. @) q

  1548. " d# Q* @- P" }$ O, U" h
  1549. Clear_Track_Info2 K6 d& ]; t5 @9 ~; O
  1550. PHA
    3 i. r+ r9 u% a6 u
  1551. LDX <Music_Item_Cur
    6 t6 Q( |3 a7 j" y2 ], t0 Y3 Z2 ~
  1552. LDA Track_Name_Addr_Flag,X% D% y0 _- U7 L: f/ c( F. {: ?
  1553. BEQ Clear_Track_Info_End_Ex
    ) D/ p% k& W; u6 b  m
  1554. PLA
    : q5 Z4 O- V3 D

  1555. & v" Q* v6 S& C! @& I: ]
  1556. LDX PPU_Cur- j" l5 ~+ v' J+ I9 p5 G# _
  1557. PHA
    ( h8 V1 y8 Q: }- }# {
  1558. LDA #PPU_MODE_CNT_CLEAR2 ?$ ^2 E0 o9 o) ~1 c
  1559. STA PPU_Addr,X; `- [" ?: r4 `& Y
  1560. INX
    1 t% v" h+ ?! q9 u* G8 a
  1561. PLA' c+ q  x# H1 m( \0 l6 O
  1562. JSR Show_Get_Track_Name_Center_Pos$ H. R- q2 b8 t4 f* m9 `7 Q
  1563. STX PPU_Cur/ u! t8 [- g' K2 P7 K0 R) X
  1564. Clear_Track_Info_End
    2 }: M& x: w5 G5 y2 f
  1565. RTS
    . s. j' U' T7 U# J9 F' ~
  1566. Clear_Track_Info_End_Ex9 n+ y% L+ h, n! Y/ y% T
  1567. PLA! a6 E9 A0 U1 k2 N1 g1 J) l) i
  1568. RTS
    9 F8 [$ ~2 l  F- e; _4 L. Z
  1569. 9 ?. O. w* k' ~8 t
  1570. Write_Track_Info
    5 R) Z( V" Y, w! F) J6 B; t( X/ n
  1571. PHA, Q6 \; n& }# {% @6 s# E
  1572. LDX <Music_Item_Cur# X8 E7 Z9 P8 K& O
  1573. LDA Track_Name_Addr_Flag,X* m* `$ t" i1 T  ~
  1574. BEQ Write_Track_Info_End_Ex/ Z" }" d0 b! z: g# D
  1575. PLA8 A/ R  O, _, n7 z
  1576. # S. A* G/ k+ N: o+ t1 K
  1577. PHA
    # |2 r) ?  V1 N1 y- o+ V; e
  1578. LDX PPU_Cur
    7 s- @) g1 T& j6 H- `3 f$ c  |
  1579. LDA #PPU_MODE_CNT_LINE3 M0 j4 x6 A1 g' N5 x! A! P
  1580. STA PPU_Addr,X$ Z0 d& [, F2 W  L0 P% B% P
  1581. INX, [& N( k/ v7 |+ N6 C/ e. W
  1582. PLA9 z$ ?8 W" E8 i
  1583. JSR Show_Get_Track_Name_Center_Pos
    ! _. X$ p* @1 L; |- A
  1584. Write_Track_Info_Data
    % I. A3 j2 \: H* F& o- w
  1585. INY/ Z) G+ ]1 P/ a$ w
  1586. LDA [Data_L],Y
    9 }( ~0 `" ~, |
  1587. STA PPU_Addr,X) F9 Z. [& B  ^2 i( @, [8 q5 m
  1588. INX
    ' u- y1 g* z7 ~$ f7 H
  1589. DEC <Data_Cnt
    ( h- F7 f( E0 U, @; N' a7 ~: F
  1590. BNE Write_Track_Info_Data: o$ w# `' Z/ j( G" I0 s  r6 G
  1591. STX PPU_Cur
    0 W) S3 \; h( w, I/ L( b3 x0 ~* Q
  1592. Write_Track_Info_End
    3 p) `8 E; j- l( h  N
  1593. RTS
    " ~. s0 E" F5 i! y6 P# O
  1594. Write_Track_Info_End_Ex# K6 v% y' S, C( \/ P
  1595. PLA
    ! y* h" w7 s8 K# b; O
  1596. RTS! \0 Y: j( Y4 a

  1597. 7 y, L# y; B$ r. x6 t# ^2 r
  1598. Show_Track_Info6 F$ A7 n4 O' g7 q+ u2 z7 ]
  1599. Show_Track_Info_Clear
    ( I7 g' H* V" u  s# t6 \( ^
  1600. LDA <Music_Last
    8 P/ ]. e1 u* l; x. r
  1601. " m# z% E$ m& x6 z. H- i4 y" e
  1602. JSR Clear_Track_Info
    + w( m- U- v4 j  E7 p

  1603. $ P: d  Y* t; H
  1604. LDX <Music_Item_Cur; Y! G  U5 K) M3 f! z
  1605. LDA <Music_Cur,X& j( `. D9 O/ Z' B
  1606. JSR Write_Track_Info( K" R* Z/ P: N, p- m7 r
  1607. RTS
    $ J  j9 q8 W5 {/ W
  1608. # f1 S# P( a' y% R& _
  1609. ;==============================; q9 [$ F8 b( m) b( H
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    4 f& Y' F  W: W' W8 E; c

  1611. : ~1 Q" ^9 S! {! n+ Z% j, B0 z
  1612. ;取出集合名索引
    9 E* n7 t  A/ p% P8 g7 j
  1613. PHA
    & s5 ^* q4 P* g+ A/ n4 d

  1614. " B4 j, h+ L: v6 H% z$ E
  1615. LDA <Music_Item_Cur
      M5 X3 N5 h! p/ e* z
  1616. ASL A
    5 d5 s; W) |  }
  1617. TAY& ]" f/ W/ S" a
  1618. LDA Track_Name_Addr_Port,Y' n( M2 [* E( Q. ~
  1619. PHA
    ( }6 G* L8 [5 M
  1620. INY& |# p' x4 A. J+ r
  1621. LDA Track_Name_Addr_Port,Y9 ]8 N6 E& P* A
  1622. STA <Data_H/ C7 v! B5 X% ^& O- O% ~
  1623. PLA  W+ W# |0 K! I; V& G
  1624. STA <Data_L5 r) y  c# N; m$ v# e
  1625. / V! P  K  d1 Z, b
  1626. PLA3 t7 |3 b( v2 H
  1627. ! \6 L* J  w) q
  1628. ASL A
    + t' B! @6 N- H& N) T# K- T
  1629. TAY3 {, T( a- U4 H6 _
  1630. LDA [Data_L],Y
    / P+ i) ~1 y1 T7 }8 m
  1631. PHA. i* Q2 T) p* t
  1632. INY4 ?2 o, r8 M( {: J
  1633. LDA [Data_L],Y/ w$ o5 ^% p+ l0 c& B
  1634. STA Data_H9 X' q) c  l: C, Y) Y  b! G
  1635. PLA
    ! L; r4 B4 p" x6 m+ I
  1636. STA Data_L
    - n/ h6 n8 M2 @: I/ f- L! M/ S0 S
  1637. 3 d6 }  Z# }; Q
  1638. LDY #$005 R5 P4 t% L8 l- v
  1639. LDA [Data_L],Y# Q) r7 [1 h9 ?; Q, Q: q* t4 Q
  1640. STA <Data_Cnt
    5 H: ^) a0 m: ]/ [& L# s
  1641. LDA #$20
    . e+ F! E8 \  {6 ^+ `6 k
  1642. SEC( _) s5 d1 c2 t2 P
  1643. SBC <Data_Cnt
    ) |: o- _! d1 W0 C, N. H
  1644. LSR A
    0 W( w# W9 L+ i+ ]3 o# g
  1645. STA <Data_Buf7 |( G/ @5 H2 c5 Q) l
  1646. LDA #HIGH(Track_Name_Pos), |* S' ~8 R" z' r9 L
  1647. STA PPU_Addr,X
    - x3 r; H# u( Y5 `9 H( {$ V
  1648. INX
    * V* n/ g9 {+ j
  1649. LDA #LOW(Track_Name_Pos)6 i) B4 r0 }$ Q) q% Q: ^5 F
  1650. AND #$E05 X$ R5 \5 y: M6 ]
  1651. CLC
      p  R$ n. P4 \% H/ w" R: i
  1652. ADC <Data_Buf
    : [% d1 V7 g1 @  {
  1653. STA PPU_Addr,X
    ) P: S5 l* H) X2 H, T$ t2 P+ h
  1654. INX  z4 H5 c) U' q  _* Q  P+ [
  1655. LDA <Data_Cnt0 P/ T5 p( {3 K  J  i
  1656. STA PPU_Addr,X1 n- f% h! N" v. A" K+ x) P, |
  1657. INX2 F0 k& e1 N& g3 o7 j5 ]$ ]
  1658. Show_Get_Pos_Center_End
    # q6 t0 K% c' b5 o$ p+ r
  1659. RTS
    + w5 q( R. o3 k5 S; y3 [" `! Z
  1660. .ENDIF$ Z7 F  v) ]5 c0 W' G' D: z( ~

  1661. 4 x5 t) h  m  P5 M' F0 ?: u: K! v& O
  1662. ;==============================
    6 c8 n3 `( c& b; l/ b9 `7 `
  1663. ;音乐端口清除
    " X+ a3 F. v3 Y3 ?/ v
  1664. Sound_Data_Clear
    * {* ]" t$ N3 b9 J
  1665. JSR Sound_Port_Clear' l4 ]! L( w2 }  H+ C% f
  1666. JSR Sound_Ram_Clear1 W+ J5 F, P! g" }
  1667. RTS
    - O$ ^% {/ }2 z' R- P. @% `
  1668. $ `  K. W/ V% _" c% e3 e
  1669. ;==============================( j1 }* U; i5 d. i/ K/ S4 B
  1670. ;音乐端口清除# u0 F5 l1 l. H9 u2 \
  1671. Sound_Port_Clear+ `0 v8 h4 u$ F- G0 a# L& j8 N- X' |
  1672. LDA #$00/ a) I4 r: X; f- X6 S/ _3 e
  1673. STA APU_STATUS, I& Q$ _& X& m/ H/ H& W
  1674. LDX #$009 e: R8 V7 g6 w, t; A& V
  1675. Sound_Port_Clear_Write
    ! s7 v3 t  \7 P, d
  1676. STA $4000,X
    & ^( u# |5 H, g+ p+ \2 I
  1677. INX
    ! ~, w. {' u" B: A" a
  1678. CPX #$14; g: ^( r# ?4 c6 X
  1679. BCC Sound_Port_Clear_Write
    * j, J2 Z( [* d; c5 I0 t& [. b
  1680. RTS+ w# f* v* m6 [7 Z: Q! \

  1681. - B* ^6 \, c# `
  1682. ;==============================. z* x4 L! O3 G; U' @, r- e' J
  1683. Sound_Ram_Clear;RAM清除' M7 F, J0 a& I( b
  1684. LDX #$003 [& W3 ]' ~( n, K8 Y
  1685. LDA #$00! H, ]7 o6 l  G. b  G4 V
  1686. Sound_Ram_Clear_10 N- F3 p6 V! b
  1687. STA Sound_Ram_Addr_1,X- N& o, k) z' v! s  m$ r) ?
  1688. INX
      C" n8 m3 M/ G2 t# k: E. y
  1689. CPX #Sound_Ram_Addr_1_Size
    - Q  d, V! L5 D5 j. w* V0 U# f
  1690. BNE Sound_Ram_Clear_1& T9 Z3 j& X, j+ {+ z  ^4 c4 |
  1691. LDX #$00- a+ H3 o# X! {" ^9 c( ]( y6 S$ k
  1692. Sound_Ram_Clear_2
    * A$ C& t* ^5 ]
  1693. STA Sound_Ram_Addr_2,X
    ( |2 `* ^6 X* G; Y1 Y' i
  1694. INX
    1 P+ Z7 H1 E9 x; v' A- W. ]; {; U
  1695. CPX #Sound_Ram_Addr_2_Size3 U1 E* Y# r6 x  R6 K, B
  1696. BNE Sound_Ram_Clear_2) i: S# y4 m" J" H  D$ _: h
  1697. LDX #$00  L8 @7 q8 v& E8 b) @* m7 }( C
  1698. Sound_Ram_Clear_3
    4 v4 d6 ~+ ]5 \2 a
  1699. STA Sound_Ram_Addr_3,X+ t* ~! s. I: {" q: W: l% I
  1700. INX; h" P  E5 J/ ^& ?
  1701. CPX #Sound_Ram_Addr_3_Size
    " l/ p+ Y0 ~( a- Z4 i
  1702. BNE Sound_Ram_Clear_3+ g# T( x$ Z3 w* b
  1703. LDX #$00
    ' c( J3 L$ m0 n4 [
  1704. Sound_Ram_Clear_4
    + Z* e2 y; O1 d
  1705. STA Sound_Ram_Addr_4,X
    4 G3 U3 T5 f0 O$ k$ }8 n+ X
  1706. INX" r: g, i# j6 I! Z' T9 N
  1707. CPX #Sound_Ram_Addr_4_Size
    1 j0 r) a4 S# m5 h
  1708. BNE Sound_Ram_Clear_4
    & h* i1 Q+ a2 e: q
  1709. Sound_Ram_Clear_59 V; t% y" E! ?) d% }$ x# @
  1710. STA Sound_Ram_Addr_5,X
    ( P* y" k; d" {" T7 \
  1711. INX
    # m. z! _. P+ Z2 ^! ^6 M
  1712. CPX #Sound_Ram_Addr_5_Size+ p, z% J: ^) U# O7 S) W1 ]" d: {
  1713. BNE Sound_Ram_Clear_5$ Z  W( A& G" G3 b6 f% Q. k  u
  1714. RTS0 N8 [' P7 u9 I8 ~9 Z  B
  1715. ! C% b, O- {# J$ Z7 \3 f
  1716. Get_Music_Collection_Name
    / K6 }8 F# K/ E: D& L0 f5 c7 K8 [
  1717. PHA5 s! d' r! C. W& V' N* H  G, c/ C" B
  1718. LDA <Music_Item_Cur( E0 d& d1 g; h2 c; i9 N7 \
  1719. ASL A, B9 ?& Q1 @  S$ J3 p5 w2 L% R
  1720. TAY6 ]$ K  s/ w" U1 N2 S0 d- T2 E% f
  1721. LDA Music_Collection_Name,Y
    8 W* b6 G6 T& B
  1722. STA <Data_L
    + D) h+ x7 ^  @6 W8 E5 c
  1723. INY4 d3 c8 a- \& m7 F7 z
  1724. LDA Music_Collection_Name,Y
    0 d) ~9 E7 {+ J/ S  d& G# G
  1725. STA <Data_H/ `, i& Z3 _. L# z: G
  1726. PLA+ k1 C! n3 k# u4 w3 T: |/ x1 I
  1727. RTS
    ; v- ?& z3 ]7 d: o* G

  1728. ; u4 p1 ?- Y' ?! Q2 n
  1729. Set_Sound_Total1 f( ]* h$ ^9 V8 ?8 p* w& o! J) p) `
  1730. LDY <Music_Item_Cur' T  U: b6 i6 p3 n
  1731. LDA Sound_Total_Port,Y
    ! j) K6 n5 G4 D* [2 m' i1 K
  1732. SEC
    & g5 a5 s: ~, i; N
  1733. SBC #$01
    , R8 j% @4 R: o2 ^9 S5 s
  1734. STA <Music_Total
    4 |8 n/ J  X# S/ F6 b7 o3 J
  1735. RTS
    0 s) E7 i5 w0 J
  1736.   h' h8 ?& i* y& F% ~2 f; a7 y
  1737. Get_Sound_Start
    ; X0 `( E: ?6 y# o+ R5 l" r7 Y
  1738. LDY <Music_Item_Cur
    / R, n# W5 H$ \# c# ^# j
  1739. LDA Sound_Start_Port,Y* k7 H8 o4 v6 L5 F  Q5 {. ~6 d
  1740. RTS
    6 h- @( I( _7 N6 Q% _

  1741. 7 C0 N# W1 ?2 v, }9 j& v
  1742. Set_Sound_Init_Port
    8 D$ e  D% V; e# m
  1743. PHA4 F& b+ R4 b. v+ [2 ?0 L9 h  m
  1744. LDA #$20
    # E: }" ~0 g  X% H  r
  1745. STA <JSR_Addr_Op
    + c3 T* o( b/ n! K
  1746. LDA <Music_Item_Cur1 Y* N/ g7 r2 n. B
  1747. ASL A
    * \" Z- ]; Z* @
  1748. TAY5 L6 W% @3 I5 |0 w
  1749. LDA Sound_Init_Port,Y
    + B4 H# P6 o& E! h- T! y8 y5 q8 j
  1750. STA <JSR_Addr_L
    1 ~9 a  S9 ]( _4 O2 B8 L$ \1 ]
  1751. INY  R. a7 @7 X. W- m/ [" \- v7 P' g
  1752. LDA Sound_Init_Port,Y
    ) B7 ~* U& O5 k2 l
  1753. STA <JSR_Addr_H2 b- q: n7 i8 {& x) e; u
  1754. LDA #$60
    ! j: G6 U! Q) [) w' }. j7 P& H# ?
  1755. STA <JSR_Addr_Rts/ |% v  b$ @  {( `
  1756. PLA1 t/ Y+ `. u2 ^% E; i
  1757. RTS1 M, R6 @1 }6 W* d
  1758. ' q, K, B9 Y( Y
  1759. Set_Sound_Play_Port/ _% [' e: y) U" i2 h
  1760. PHA1 X1 h& r7 q+ m& [/ g
  1761. LDA #$20
    - ^5 ?4 `$ d8 Z3 a3 b. z. P
  1762. STA <JSR_Addr_Op
    . b# ]9 p5 t% n% P- i( d! ]* w6 H
  1763. LDA <Music_Item_Cur
    5 i! q% O1 l* z1 ]  q
  1764. ASL A, \& Y& e- {& g+ P2 T. ~6 M5 e
  1765. TAY, }1 D. Q( B: z1 y9 ^  p7 \
  1766. LDA Sound_Play_Port,Y
    # H, v0 M) n! E/ r" b
  1767. STA <JSR_Addr_L& R* C2 G3 f* y( `- O. y" {% p
  1768. INY) b# k( L, j  U7 N
  1769. LDA Sound_Play_Port,Y
    # q! H5 p3 r4 Q: e/ ?& U6 w. j
  1770. STA <JSR_Addr_H) R4 B2 K9 b* E$ k4 ]% O) O/ K
  1771. LDA #$60; D' _3 R. V( h+ x0 x
  1772. STA <JSR_Addr_Rts- `# V6 o( E# z$ T9 Y
  1773. PLA
    7 g7 j- L# H3 n
  1774. RTS
    2 Z+ _2 s' p# I) G9 B
  1775. 4 H  M. R$ c  V$ E! {1 e
  1776. Set_Sound_Reset_Port! z- e" O2 F0 a# ~
  1777. PHA% g' y0 F! N# n- K+ m
  1778. LDA #$20
    ; |* s7 U, y% s& G
  1779. STA <JSR_Addr_Op" E2 b0 ]% I6 x
  1780. LDA <Music_Item_Cur
    / V9 B% B) [; @% t; f
  1781. ASL A; I0 ]0 e. @8 K0 `8 o
  1782. TAY
    0 i6 j+ d6 q) e$ ~; V1 h$ I
  1783. LDA Sound_Reset_Port,Y
    2 g  P) _, [8 k$ }) v/ g6 I
  1784. STA <JSR_Addr_L
    ' n& m* y  D5 v* k9 R" t
  1785. INY) h  b+ [! p4 b, z2 f( f/ \* o
  1786. LDA Sound_Reset_Port,Y
    3 ~6 X3 r/ _/ _( Y
  1787. STA <JSR_Addr_H
    + z( U# f, l0 E+ A; c
  1788. LDA #$60* h# A1 Z8 Z6 `" `4 Z  O5 }' \
  1789. STA <JSR_Addr_Rts; ]& Z9 a$ m; q$ Y! }7 c0 E
  1790. PLA
    . b# }  I6 h' X+ G
  1791. RTS
    : \5 G% O% ~" M) {8 b0 B

  1792. 9 _) w1 f: Y' M2 {
  1793. ;初始化音乐bank6 d" m( ?* N; G4 I
  1794. Init_Sound_Bank
    2 Y; q; x3 F$ J+ i3 Y) x  y
  1795. LDY <Music_Item_Cur
    & Y0 G1 @% y; y
  1796. LDA Sound_Bank_8000,Y9 |& n; _4 V0 L% L  w% l
  1797. STA <Music_Bank_8000
    ! F, D- {: X* u  C1 L- c9 A
  1798. LDY <Music_Item_Cur
    ( a, U5 ]1 M! q0 D' J
  1799. LDA Sound_Bank_A000,Y. e1 s4 F) z6 X) E) C" e- p
  1800. STA <Music_Bank_A000: N4 \( o3 n( f
  1801. RTS9 p8 d' T3 `# X- G1 Q3 W

  1802. , ^' A5 J1 q' ?
  1803. ;==================================================
    ( _  Q9 V: S% S" W" |( ^2 S
  1804. Sound_State_Reset;音乐状态重置
    / o; M( M# i4 ^% @: F0 `
  1805. JSR Music_Bar_ReSet        ;重置音乐条# b5 s* _% |/ i2 G9 L% n  r, M
  1806. JSR Time_ReSet             ;重置播放时间- A" V. r' @7 s5 u8 a. V2 l' i

  1807. ' O. }2 _( z1 l# ?* T7 ?- s8 B
  1808. LDA #$00
    8 {6 j8 i( I5 }) P4 B: ^: {! H4 j7 M. E
  1809. STA <Music_Stop_State
    / T/ U6 P4 |' }0 g, B% A5 S  V
  1810. JSR Music_State_Show       ;显示播放状态; v0 F1 g7 w" f5 h/ E2 a7 L
  1811. ; I% {. d9 _  h* o- {5 V
  1812. .IF Track_Name_Pos5 q7 j) ]6 M! V: A' b! x# d& u
  1813. JSR Show_Track_Info        ;音乐曲目名显示& [# i$ C! u2 L( H" Z% v
  1814. .ENDIF5 z2 X6 q/ x% `9 N5 A- P
  1815. 1 n7 a: y& Z# D' ?
  1816. RTS
    ' @3 I- `) P' K/ |

  1817. ; c% @. c" R' O, b9 l8 `' J
  1818. ;==================================================: I8 [+ W6 I0 D6 G
  1819. Sound_Init_Proc;音乐初始化处理
    ' O2 T0 _$ y1 \( K
  1820. PHA  a& g2 K; X4 P# g3 C7 R4 }& v1 v( }& J4 n
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址$ k8 \1 D4 E0 y8 _% \' {
  1822. LDA #$003 d0 v  i( l" p  }$ U
  1823. STA <Scroll_H               ;重设水平滚动0 Y0 X2 W( }; X! I) h$ o
  1824. LDA #$0F: H6 \8 @7 @' p: y# ^
  1825. STA APU_STATUS% {% X" I: \% E+ o8 @4 B
  1826. PLA
    1 z1 g2 c3 `. t$ z. F% ]
  1827. JSR Sound_Init             ;音乐初始化
    ; _5 Y. L' N# r. {# v4 l. i
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    5 [" R- M# \9 D  D/ ]
  1829. RTS! c. [2 {% X! S

  1830. . k0 w$ [, a: k9 Y4 T! |6 U
  1831. ;==================================================5 r7 f9 ?8 {& ^( {" L
  1832. Sound_Play_Proc;音乐播放处理/ [2 h3 w* V' H0 X
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址/ I! o+ z" Q  [0 f
  1834. JSR Sound_Play             ;音乐播放
      l( ~$ U& E% c; r! r- Q
  1835. RTS
    9 P# Q, {3 d7 u# u8 t( e0 }: l

  1836. / \  g# A( r$ T  q
  1837. ;==================================================" a4 T. @$ W7 w! w
  1838. Sound_Reset_Proc;音乐重置处理
    " `6 g' d7 S+ i1 i) o" ^
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址/ Z: }/ @3 A) [; S, c: P( P
  1840. LDA <JSR_Addr_L, e0 o' J6 r5 P9 _$ k% Z
  1841. ORA <JSR_Addr_H
    & m! r# h; s% m6 J1 ]3 a& L
  1842. BEQ Sound_Reset_Proc_Default: r; a: c5 A6 |6 C* A
  1843. JSR Sound_Reset            ;执行音乐重置
    % B7 Q' H( t1 U7 |$ c" f9 H7 l# P
  1844. JMP Sound_Reset_Proc_Init_Sound* C  j  f% G" o: a8 M9 E7 l

  1845. * w: p. Y' i7 m6 z0 |
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    + r1 Y: c/ S: R0 M! u

  1847. 6 D' L" f- @3 ?' X3 [* ~
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断4 F0 U- a! u$ e% [, l
  1849. LDA #$00
    2 }, T. Z1 x7 p: k
  1850. STA PPU_CTRL
    + o0 l& ~3 |& ^" p" E" N
  1851. % q' G/ T7 Z6 m  ^! m% s# b) K
  1852. JSR Sound_Data_Clear2 E" H" S" J+ Z, t) q- A

  1853. ; x' L7 ]. J8 |* g2 e" r
  1854. Sound_Reset_Proc_Default_Wait7 q9 f0 j! v4 F0 W' i
  1855. LDA PPU_STATUS
    5 ~9 `. K, n. i. H& d
  1856. BPL Sound_Reset_Proc_Default_Wait$ [! H, w3 O7 r% A4 ?& ]
  1857. : X$ X6 g8 \  I* r. Q3 s! p# `
  1858. LDA #$00+ H2 ?6 R. B, N% [* l, S
  1859. STA PPU_ADDRESS
    ' z& u# R. I  h: w) Y" W$ D% W
  1860. STA PPU_ADDRESS* V# _5 D9 x" T/ L/ g8 u$ Q
  1861. STA PPU_SCROLL. @# C8 O, s. a% {1 S; Z9 A
  1862. STA PPU_SCROLL2 }  |) Z3 q2 g2 N# I+ h6 G6 i9 \
  1863. ' {4 Z2 n* e: |+ S9 ], u( ?
  1864. ;恢复PPU控制
    7 k. _* Z4 D  @- N0 d. `  C$ p
  1865. LDA Screen_Ctrl
    ! T; n4 t* a- X
  1866. STA PPU_CTRL
    " i8 A7 f' g+ e; E

  1867. 5 `' {# Z+ @, Z4 A5 o3 L
  1868. Sound_Reset_Proc_Init_Sound
    2 ]4 M4 w1 [8 S' ~( _% c5 c. a
  1869. LDA <Music_Stop_State% M7 {' a$ u$ d& B1 ~
  1870. BNE Sound_Reset_Proc_End
    % D& ?6 S; c& P0 i+ q
  1871. LDX <Music_Item_Cur$ q% |5 u' x3 A- v& I2 F
  1872. LDA <Music_Cur,X6 i# m, k: _- j, D
  1873. JSR Sound_Init_Proc3 W! X9 r5 [/ n+ X. B$ }5 v
  1874. Sound_Reset_Proc_End& C1 |/ d7 t& v9 Z. q- M  d( S3 _( D" A
  1875. RTS+ P2 Q4 Z! `6 O% M
  1876. , h- [4 f- ~* d, h1 a
  1877. ;==================================================4 }9 j- K- ~/ i# Z& w
  1878. Clear_Item_Text;清除页项目8 q: r; m0 }, q% M. J& Q
  1879. LDX PPU_Cur4 b1 h9 m4 K: e, m; h) s
  1880. LDA #PPU_MODE_CNT_CLEAR5 U, I. a5 K, M  R. I; W2 s0 Y: F
  1881. STA PPU_Addr,X8 Q$ f& d6 U5 d; E& C8 a
  1882. INX
    " m% O3 J5 f7 w% I
  1883. ' V) g7 z+ i$ O/ R/ J, P
  1884. LDA <Page_Last+ m3 j, |) S  A/ N4 S# y* s
  1885. SEC
    ' F$ V3 J* ^( t4 N( U. }$ R
  1886. SBC <Page_Last_Index* |  K$ i3 H3 n5 H9 N; J
  1887. ASL A
    % ^' _! a" ^# }, I* C

  1888.   t, `( X& V6 [# C0 }3 z2 x+ W+ M
  1889. TAY2 F. W6 K, }* h4 L& E% s
  1890. LDA Item_Pos_Data,Y( P% ~. s( {4 q" u) G
  1891. PHA
    8 g( J- {& K" {1 x) Y
  1892. INY. [' P: C4 K& j9 ?/ ?+ D5 ~) Z
  1893. LDA Item_Pos_Data,Y" [  W; e* v' q
  1894. STA PPU_Addr,X
    : v) m; C/ O3 ~
  1895. INX9 s# C$ `8 h" }# J0 }+ e# x# [
  1896. PLA% d; H* p6 s3 C) K  p+ t( e4 t
  1897. STA PPU_Addr,X
    + h  i6 K+ D8 Q
  1898. INX: d5 d8 M- e" n# f3 _& T

  1899. % t* b, \( Z4 Y* f" j6 t
  1900. LDA <Page_Last
    5 a# k; t+ u- X$ Y( F/ w, T  c" v
  1901. ASL A; f" |: \# H+ d5 K: j( d" B
  1902. TAY
    ( h% y: _8 N; h# F' [8 _2 I7 c7 B: r
  1903. LDA Music_Collection_Name,Y
    ) L/ k0 v8 s- ~  L
  1904. STA <Data_L
      A$ H: X+ Z8 U- @1 a" E: f
  1905. INY
    6 [2 s5 X' ^0 H; d5 g9 I
  1906. LDA Music_Collection_Name,Y! m6 }8 K0 _0 P' J- [
  1907. STA <Data_H
    6 {" Q' p8 l; i" p1 f4 D
  1908. ' y8 ~9 U* X+ Y$ J
  1909. LDY #$00
    . I, m1 M7 l& b) b% A* t' f% l
  1910. LDA [Data_L],Y1 E* r1 }5 a: i" V  p/ ]3 L
  1911. STA PPU_Addr,X
    & g* z; a7 a4 V/ w; z& i
  1912. INX, D) T! w" U0 I% v" C, m
  1913. Clear_Item_Text_End6 H. U3 N! K, |6 W$ W! e+ s
  1914. STX PPU_Cur& A- G8 v3 \/ `+ s/ d( i
  1915. RTS
    : A) ]/ t% n, x/ B
  1916. ) C+ i3 x: Q. o4 S
  1917. ;==================================================
    " L  J. l/ Z6 K4 m9 [
  1918. Show_Item_Text;显示页项目
    % N, C+ m0 o3 p
  1919. LDX PPU_Cur, t6 T* B7 G( P) v; g6 |6 R6 l: N
  1920. LDA #PPU_MODE_CNT_LINE
    # t2 z  l; q2 E& p* _
  1921. STA PPU_Addr,X
    & w# t1 r2 w1 l; a* b# t7 _5 [# {
  1922. INX( L1 P, T. \  o  l# o
  1923. LDA Page_Cur
    , }2 J/ E- i. E6 B3 X- d
  1924. SEC: @8 f9 U- ^  `
  1925. SBC <Page_Cur_Index! Z* H2 {' m( h) u& l9 Q1 j
  1926. ASL A
    . |, c. e1 J, Y5 T
  1927. TAY
    ' }% L- b3 k: a- ~1 X$ |" w
  1928. LDA Item_Pos_Data,Y6 C6 J5 y1 B5 {; R  M
  1929. PHA
      ~- g: I8 L( l' A8 m. R& W6 X8 n
  1930. INY6 {; F* g' R+ P- M
  1931. LDA Item_Pos_Data,Y
    1 s% ?; a" m) l; B4 L$ U; ?
  1932. STA PPU_Addr,X
    / E6 M# |* G3 d4 l
  1933. INX; H4 x' Z1 E$ |: K" F- z! |
  1934. PLA
    ; S& C  I/ {" h, I; K5 t
  1935. STA PPU_Addr,X0 @. F: J2 r: |. e; v
  1936. INX
    . d1 d- H" F& w/ B7 `7 A
  1937. 4 `$ `, X/ g: V7 O
  1938. LDA Page_Cur
    , K$ T& b9 J( `& k, u4 Y
  1939. ASL A2 ~1 g# o/ e# u1 S) o4 |
  1940. TAY$ D# t! Y3 n3 C. V  z
  1941. LDA Music_Collection_Name,Y" S3 P1 ^+ \5 e* S% G8 B+ p4 `
  1942. STA <Data_L
    : X0 {9 b: |8 C
  1943. INY& b5 z6 j$ D/ A- }9 g: q
  1944. LDA Music_Collection_Name,Y  c+ F6 J- w" |# k( Q1 f: p
  1945. STA <Data_H, X8 w1 U4 Q* I# X

  1946. 3 T$ t3 i9 n2 y" ?9 k; e. ^
  1947. LDY #$00& k: f3 \* K, q, [0 S; \* y
  1948. LDA [Data_L],Y4 R1 s- {. w7 I9 c
  1949. STA PPU_Addr,X1 O6 o; W4 X8 E+ f
  1950. STA Data_Cnt% I# D  H% [. u, R8 w7 C$ \
  1951. INX' A# P5 A# x+ a( p: u4 H3 N2 S

  1952. # a- R. P* f3 n3 [7 f
  1953. INY( Q- X8 R+ H0 G0 }
  1954. Show_Item_Text_Write( A+ ]$ m+ N% A, a" g9 y
  1955. LDA [Data_L],Y4 U& w8 `0 O+ I3 {0 R
  1956. STA PPU_Addr,X4 P) u. R0 l- h7 |  }' `) ^
  1957. INY
      ^% G+ C, V3 N  ~. A
  1958. INX
    - K* \: e$ t: s# M( ~4 ~
  1959. DEC Data_Cnt  C% y+ r' q3 F
  1960. BNE Show_Item_Text_Write
    - v% v+ b/ e9 ]# o9 O0 \
  1961. 4 s: R! I( a" L
  1962. Show_Item_Text_End
    * _" K6 f' `/ b3 L" b: Z. O( ]
  1963. STX PPU_Cur% ]% o6 _! {" C4 F1 {
  1964. RTS
    * p2 E) m& i7 k( w: j- G2 M- G

  1965. + q( i& S5 m  Q# H* M1 t2 G/ t
  1966. ;==================================================3 X0 ?$ `( i1 r
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量8 G1 V3 G! F, p! k( U
  1968. STA <Data_Buf1 d3 ?) [+ Z) E
  1969. LDA #$00# C$ _9 z) w* g, [- D9 c8 e
  1970. Get_Page_Index_Calc
    ; Z: t4 J! u* y4 _6 [! o* p) T9 v: x! z
  1971. CLC6 ~) E% w" V3 ^1 s$ U, A$ V' y" p: c7 I
  1972. ADC #PAGE_SIZE# l( L* C1 c6 E- w  }( r: f6 C/ u3 ]+ p
  1973. CMP <Data_Buf% b! i  _- G* G3 }. [7 Y
  1974. BCC Get_Page_Index_Calc
    / ~( M8 X. x& P4 f9 y
  1975. BEQ Get_Page_Index_Calc_End
    ( {/ r1 t. L7 V9 `
  1976. SEC) E1 i9 E) h" J  x; K/ F  W, ], k
  1977. SBC #PAGE_SIZE0 h# i; c; A- f* X2 o' ?
  1978. Get_Page_Index_Calc_End) V, k0 m4 I( E( `5 Z( m% a
  1979. STA <Data_Buf
    " g6 T4 u1 X( K% P  @
  1980. Get_Page_Index_Cnt5 X- ]( g, ^5 W2 }+ u5 b, ?% |
  1981. LDA #PAGE_SIZE
    # R% G6 B) `0 L) Q- }" V2 \
  1982. STA Data_Cnt3 P% n5 m! |" D( u
  1983. 5 H* \' \0 A. s  x; R2 E
  1984. LDA <Data_Buf' w0 a# U0 r+ w. x/ k+ N% q
  1985. CLC2 V! h7 R( c- G- l( m" {3 J
  1986. ADC #PAGE_SIZE
    3 ^7 e7 Y: r9 D4 X7 X
  1987. CMP #ITEM_MAX_SIZE1 |5 q# n8 i& Q5 ?. x, t
  1988. BCC Get_Page_Index_Cnt_End: x/ M3 x  ?& i# G

  1989. 8 B/ b$ A- c) H* w4 q3 Z; r1 p
  1990. LDA #ITEM_MAX_SIZE% q. R- ~8 k0 o  {" V" M
  1991. SEC& l* _8 W# Z7 Q1 b3 A  I
  1992. SBC <Data_Buf! i9 q6 `6 t* D& B4 ^  a; G5 C) ~5 o
  1993. STA <Data_Cnt) e) }) Y+ O) u, Q' _

  1994. $ l: N) o( t8 X3 N- l: K2 A
  1995. Get_Page_Index_Cnt_End4 B( J+ ~* H) x% G
  1996. RTS
    " |) M/ o0 _) [' \9 N5 K" U) R

  1997. . o+ A- a3 ]* c9 `
  1998. ;==================================================
    8 A+ T2 E7 T. b( w: M6 L. U  C
  1999. Get_Last_Page_Start_Index" R  p& A" m9 s  x- m) Z" r! |
  2000. LDA <Music_Item_Last* O7 w/ }, M  ?3 l) ^/ m, C
  2001. JSR Get_Page_Start_Index( c+ b, G: U1 l9 J; ]6 \! @3 x
  2002. LDA Data_Buf
    " W* g) V- C; u9 i" B1 K9 b
  2003. STA Page_Last
    . R/ s. X0 ^& d2 V$ i3 L3 P! b
  2004. STA Page_Last_Index
    1 F. T" A3 g3 A9 }8 w; e, |* `
  2005. LDA Data_Cnt/ g7 g$ N* i, z) I* ?0 ]3 W% s+ P
  2006. STA Page_Last_Cnt
    ! j; {! G+ s' S  }/ o  w
  2007. RTS# \: X1 v- ~  U8 `
  2008. - }5 E4 u. d3 I3 r* O3 ^, d
  2009. ;==================================================
    % E$ i6 v# k" m+ P: B8 w) d$ j+ E
  2010. Get_Cur_Page_Start_Index
    ; R) d$ V3 b, y' m* W# C
  2011. LDA <Music_Item_Cur0 o! e7 T1 Y1 ~6 B
  2012. JSR Get_Page_Start_Index$ W) s" ^, p+ `. n0 M, G
  2013. LDA Data_Buf
    % Z" z9 ^% u( l6 G9 `( W
  2014. STA Page_Cur
    6 H- D" g9 B2 S8 Y
  2015. STA Page_Cur_Index
    , q4 N2 d; ?' d8 R7 S# q. v
  2016. LDA Data_Cnt
    ) J7 [" N4 o' P0 n( i
  2017. STA Page_Cur_Cnt
    $ k/ n3 Q& l: ~! t# k
  2018. RTS
    # y, S- m( `+ l! r7 E

  2019. 7 n. o! K' L% X7 F: ]9 R/ x
  2020. ;==================================================
    $ M0 j! O% r% B' p7 ]2 m: _
  2021. Show_Page_Text;显示页文本
    ! c- U7 @" {2 d( }  N% A& k
  2022. LDA <Text_Disable_Flag
    # C8 r, K( K9 Q4 O
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM2 G+ @- q8 \9 z, ]; G
  2024. STA <Text_Disable_Flag
    5 j# O. h/ @+ N! U2 p$ \

  2025. 1 T! f0 o0 w- z! I) V
  2026. JSR Get_Last_Page_Start_Index
    ; v8 y1 U: V  O- ^. u
  2027. JSR Get_Cur_Page_Start_Index7 F4 \  d0 Y0 F3 C0 ~) x" q1 I

  2028. # k; f  `9 D2 t! S6 c* A
  2029. Show_Page_Text_Set& l$ R" C" n  E- }8 _1 |+ r; E
  2030. % F3 O+ s5 L3 X9 c/ K: L! K$ f* L; O
  2031. Clear_Page_Last_Item;清理上一页
    9 c+ D3 v2 T% \$ @% K! n
  2032. LDA Page_Last_Cnt8 N% Z4 h* j! ^9 K$ q5 K
  2033. BEQ Clear_Page_Last_Item_End
    ! d- u/ o) q/ O! M7 D% c
  2034. JSR Clear_Item_Text  Z8 u0 K8 P# a- D2 G) g
  2035. INC Page_Last5 o5 l2 f9 k6 n6 Q
  2036. DEC Page_Last_Cnt
    3 C. a: d. ^* x) c/ l+ s/ b4 E# @7 `
  2037. Clear_Page_Last_Item_End
    " n: I2 v8 H2 B9 k5 j8 ~
  2038. & u9 O4 v, I! |; w
  2039. Show_Page_Cur_Item;显示当前页
    , U9 e- M, ^' Q% {0 Y, y
  2040. LDA Page_Cur_Cnt
    % t+ G6 r$ L$ j5 d' o3 L
  2041. BEQ Show_Page_Cur_Item_End
    ( x0 v$ F1 d$ t/ O$ D
  2042. JSR Show_Item_Text
    $ n' w/ @2 P" S
  2043. INC Page_Cur: c9 X6 R& N. D3 Q
  2044. DEC Page_Cur_Cnt
    $ l: a2 U7 g0 q4 S3 l
  2045. Show_Page_Cur_Item_End- J3 l$ `+ ^* z7 s6 k6 s# U
  2046. 1 {0 d- ^6 j5 ^4 a
  2047. INC <Time_Wait_Cnt; d: o% N% Q0 M' t
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    & }# g, U8 @& l6 S0 O& r& t
  2049. LDA <Time_Wait_Cnt
    8 I" J4 j  m. g3 b. d' V; w
  2050. BNE Show_Page_Text_Set_Wait* Q9 w! H0 X8 V+ e4 V2 K! l6 H

  2051. ) Y. F' |1 g. r
  2052. LDA Page_Last_Cnt: U( W# y- E* ?) c. @
  2053. ORA Page_Cur_Cnt
    % s$ t# n+ c- a
  2054. BNE Show_Page_Text_Set
    * r0 s6 C5 r% J4 W% S9 f
  2055. LDA <Text_Disable_Flag( |6 m6 ^1 \, o& ~. `0 \8 x$ B
  2056. AND #TEXT_DISABLE_ITEM ^ $FF8 a4 e/ g  l' P0 P  o8 X1 e, g
  2057. STA <Text_Disable_Flag4 S' K5 r  b" ]5 _$ n' f6 ~! O9 y
  2058. RTS4 l1 I. y' Z. A# r+ P# \
  2059. 7 d8 ^6 [7 z5 ~2 y! p' ^
  2060. ;==================================================  _8 d, y& I2 i7 D3 J" }) i
  2061. Last_Item;上一项2 h6 ]3 e$ w$ P% h2 O
  2062. JSR Clear_Last_Track_Name9 R8 a& h  K* f# U! K' J* D
  2063. JSR Disable_Text_Draw2 Y$ Z' c/ q+ `8 o7 S8 b+ L

  2064. 7 m" i! A/ c7 e8 v) q, I
  2065. LDA <Music_Item_Cur+ b2 b/ {8 m$ F/ k2 V( [, I
  2066. STA <Music_Item_Last
    . E) T, ~$ U4 [' C

  2067. ! `7 h! F: {( p# F6 T. {
  2068. JSR Get_Last_Page_Start_Index
    + m5 H1 G  R5 l" W
  2069.   G" c: ]6 l- R2 Z/ a2 g
  2070. LDA #$00
    ' N7 A0 G: L- W5 y! E; e
  2071. STA Data_Buf
    5 A$ d1 T% D% s
  2072. 6 T+ h4 \5 T5 P9 b: D+ O
  2073. LDA <Page_Last; z% G1 z. j% D! [0 _
  2074. CMP <Music_Item_Cur
    4 q0 |# k9 {% k! e; b
  2075. BNE Last_Item_Begin
    $ w: ^0 a/ c2 \" Z, C5 {
  2076. 8 l/ }5 A/ C# R& _% m% H
  2077. LDA #$01
    / W8 N% F1 T3 f
  2078. STA Data_Buf
    9 G2 T2 i9 c7 x3 u
  2079. Last_Item_Begin! R8 `  B: v9 F% v2 g; f
  2080. LDA <Music_Item_Cur
    5 a7 Z' J! }* x( f. ]
  2081. BNE Last_Item_Set
    3 a) t: U% G2 b
  2082. LDA #ITEM_MAX_INDEX + 1
    9 N, V0 v$ g9 [0 o. N
  2083. STA <Music_Item_Cur
    # y) G1 t& z/ n, }) N0 z  C

  2084. 0 I4 i& A* |& k9 |
  2085. Last_Item_Set3 R( Q9 ?  c* H9 F3 v6 C  Q8 c
  2086. DEC <Music_Item_Cur
    9 P' ?$ M( H% z7 \/ u
  2087. LDA <Music_Item_Cur
    # y- e& T: F# |0 C4 J6 d
  2088. JSR Reset_Current_Music
    9 r: K8 y. t; [6 |: E5 B+ O4 k

  2089. 7 A: ^$ u- ~0 S1 u( G9 d
  2090. Last_Item_Play
    " D# j- B4 B1 {/ d% x6 r
  2091. LDA Data_Buf% Z3 h- r' X3 h# c0 C
  2092. BEQ Last_Item_End" a9 D; F4 v8 N4 N2 C7 A
  2093. JSR Show_Page_Text
    % |% }# A6 s  A% O( d9 v6 I
  2094. Last_Item_End, y1 Y9 Z" r: q) ~# h. p. l' Z
  2095. RTS
    ! R4 E  W' U& U% b/ P' P& X

  2096. 3 d- A* b5 U& l" F) s
  2097. ;==================================================: T+ U4 V3 T; q' C' [! _
  2098. Next_Item;下一项4 x* u' C+ e6 {
  2099. JSR Clear_Last_Track_Name
    1 P9 B; T0 G- x+ T
  2100. JSR Disable_Text_Draw+ V6 a& U+ T7 K5 l4 Y6 T
  2101. # H7 M  ?0 ?0 S3 c' v
  2102. LDA <Music_Item_Cur
    4 O1 R. L) P; ?
  2103. STA <Music_Item_Last
    ( d* h; q0 _3 P4 c7 e
  2104.   B, L- _% J; o
  2105. JSR Get_Last_Page_Start_Index+ P( C! i, _" q5 c9 I
  2106. , i6 n/ P/ Y$ Y9 L9 b- \
  2107. LDA #$00
    5 K( Y* g. N. U2 `6 B; ]  Z  [
  2108. STA Data_Buf
    ) C- p5 s2 Z' ]

  2109. " @% z& y- F' g: q6 Q
  2110. LDA <Page_Last
    ) _, k$ }. J& _
  2111. CLC
    7 j1 ?. i8 {) u9 y
  2112. ADC <Page_Last_Cnt
    # k9 V, w* Q! {5 y
  2113. SEC
    , U* f, Y0 U$ E6 g
  2114. SBC #$01, v  s4 T4 M& p  `/ H
  2115. CMP <Music_Item_Cur6 r! N8 a7 Q" F' S) S
  2116. BNE Next_Item_Begin/ ^* T5 v1 w4 l% M3 r  [2 `: p

  2117. ( H  `/ y  L3 T. Z- e+ i4 g
  2118. LDA #$01
    9 s$ o! T8 ~. J5 g" X0 G
  2119. STA Data_Buf
    # v8 l# s6 x8 Y: h9 D+ J
  2120. Next_Item_Begin- F! Q' W/ ^. S/ p7 |
  2121. LDA <Music_Item_Cur
    0 R1 [' n3 k  k0 f# e) ~
  2122. CMP #ITEM_MAX_INDEX& P9 L$ X; J+ V. H& a
  2123. BCC Next_Item_Set* {- }( ~4 W0 [
  2124. LDA #$FF
    ' ?- T! P" |5 ~" B& A" R# c0 I
  2125. STA <Music_Item_Cur
      Z" F- L( d, u, d6 v
  2126. Next_Item_Set
    ) J. F7 K9 V' l) `% o
  2127. INC <Music_Item_Cur7 ?! R' l: r6 B2 e( n& f7 c6 [
  2128. LDA <Music_Item_Cur
      K2 {* V4 \! C( q; d
  2129. LDA <Music_Item_Cur
    ! T5 A6 J3 t6 E$ c* j9 B8 o
  2130. JSR Reset_Current_Music
    3 s6 q% ?; N9 v2 w
  2131. Next_Item_Play5 A# M. X2 y' ?3 [% ~- c* \. Y! I
  2132. LDA Data_Buf
    $ Y) g  q4 K) S6 g0 [+ B( z
  2133. BEQ Next_Item_End
    # R; Z7 P" v4 e9 G9 S! Y+ E
  2134. JSR Show_Page_Text' w0 k2 h# V/ l" Z5 `
  2135. Next_Item_End
    : K9 H: \# s0 |2 w" L1 J
  2136. RTS- a' O- S- Y: K5 L0 ~' M6 E
  2137. $ t) w! l: h4 z* s0 V1 w% ~8 V
  2138. ;==================================================
    & o. A) a8 p) b, @) z
  2139. Last_Page;上一页: @4 y. w9 e# z" {" C
  2140. RTS
    8 h/ e, C2 [6 s: w5 M# Z

  2141. , D9 N9 B1 n+ U$ ~# c
  2142. ;==================================================  f2 n4 ]. f' S9 i; x
  2143. Next_Page;下一页% J" l9 o! E  V/ }3 r# v
  2144. LDA #PAGE_MAX_INDEX
    : [4 h- c+ m# {& n) N7 J6 h
  2145. CMP #$01
    ' l. Q: Q( w  a6 q
  2146. BEQ Next_Page_End
    , q; v5 _* }0 z2 q! n2 ?
  2147. ! }. m; A# |8 J( Y( B& H1 @. w
  2148. LDA <Music_Item_Cur
    $ `; K: ?) S+ z  x1 Z* h' B
  2149. STA <Music_Item_Last
    1 J0 k2 J  V& E1 N' p) E7 c5 O

  2150. $ ~2 E3 U1 E+ S5 L6 L% E* ~8 i
  2151. JSR Get_Last_Page_Start_Index
    % q6 c  o$ o# S3 G$ j+ o- C
  2152. - p9 `8 w+ |) N9 a$ D
  2153. LDA <Page_Last_Index5 D, `- u9 W5 l& D
  2154. CMP #PAGE_MAX_INDEX1 A+ w* m/ D& s# w# E* W, C
  2155. BCS Next_Page_In_End_Page$ Q: J% k( \% Z  q

  2156. " K/ A) Q5 u6 V1 w
  2157. Next_Page_Not_End_Page;不是在最后一页
    ) {4 `2 H& f, o9 @& s" `
  2158. LDA <Music_Item_Cur
    ( |" O1 i7 f6 J$ E- H2 g5 h
  2159. CLC
    ; i$ w4 ~) ^& ?* L) Y
  2160. ADC #PAGE_SIZE
    & O  }7 l% q& w0 P- Z
  2161. CMP #ITEM_MAX_SIZE
    # S( X  [$ d& d$ k
  2162. BCC Next_Page_Not_End_Page_Less
    4 T. @9 o9 t# C
  2163. LDA <Music_Item_Cur( a1 F, P1 ?( e
  2164. SEC
    , F5 |* g2 `; Q% n* A  q+ W. ]" g
  2165. SBC <Page_Last_Index
    ' G; R- W0 }3 T* ?1 j7 o
  2166. CLC
    : t) k/ X$ H+ Y) w
  2167. ADC #PAGE_MAX_INDEX! ^- h# _* |$ j$ a# h
  2168. CMP #ITEM_MAX_SIZE
    9 ~" W$ [4 P8 ]7 H5 I0 H) [/ y3 O
  2169. BCC Next_Page_Not_End_Page_Less" Y5 Q! r$ f, y6 e! Z4 Q
  2170. LDA #ITEM_MAX_INDEX# Y4 o" c8 `+ {( i
  2171. Next_Page_Not_End_Page_Less
    ' x# U0 @, v/ g( x* r" J
  2172. STA <Music_Item_Cur
    - m( g: ~- e+ ~! R4 W! u) o. V6 {
  2173. JMP Next_Page_Reset% U+ F& v: g/ U( U1 b9 d+ {
  2174. 1 H5 a6 P: C- J8 i, [3 ]8 p
  2175. Next_Page_In_End_Page;在最后一页
      M! a; ?5 U( c
  2176. LDA <Music_Item_Cur& L+ I& a# k9 [1 d1 m" D
  2177. SEC7 c7 b$ J' g+ ?9 B" d0 p
  2178. SBC <Page_Last_Index1 ^0 J7 r/ x$ a& R0 E& N" P
  2179. STA <Music_Item_Cur
    ' U7 e' i; P+ d1 W9 d% K
  2180. 2 t: q" x/ K+ Z+ M  g0 Q
  2181. Next_Page_Reset
    8 \9 v# Z' P: x% v  l5 \" ?
  2182. LDA <Music_Item_Cur& }* Y1 S0 E+ Z3 B0 ?% ~9 B* m( e
  2183. JSR Reset_Current_Music+ l/ L. W# k( q$ A$ S
  2184. JSR Show_Page_Text
    9 S' j1 y. w, K  ^4 J& }8 K
  2185. Next_Page_End
    2 A! N# B' F1 t1 ~5 V
  2186. RTS
    & c3 v4 P! j% `6 B1 F
  2187. - Y0 f/ p0 ^$ I- M4 X
  2188. ;==================================================) Y# i! |5 T( ~
  2189. Disable_Text_Draw;禁用音乐条刷新+ o; E/ \" k" `
  2190. LDA <Text_Disable_Flag: o6 C4 g* \: K* o1 Q
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME( N2 o$ J2 v9 J% B- g* W
  2192. STA <Text_Disable_Flag9 s, {$ E; }; D( W6 [
  2193. RTS
    5 x: [) q" S7 j, t; O/ o
  2194. $ Z0 U" f6 n5 i
  2195. ;==================================================5 x  Z/ r" T/ v4 [/ C
  2196. Clear_Last_Track_Name;清除上次曲目名& o  ]8 e, I% m  x- s( {
  2197. LDX <Music_Item_Cur0 U; W4 @% p0 U  I( K! P* I
  2198. LDA <Music_Cur,X
    2 Z+ ^9 _; Y4 f. E
  2199. .IF Track_Name_Pos# T0 A7 }  G3 {, c. O, |- Q
  2200. JSR Clear_Track_Info, S2 x: K6 W8 A# @, ]
  2201. .ENDIF
    ! z: u6 x1 o: X: `( n& A3 ~5 ?
  2202. RTS
    , ~* o  k+ N$ Z' p. R5 l+ t

  2203. ; d4 u3 `' q. d. T
  2204. ;==================================================  I% N' L8 f' o5 h( A6 m7 F/ \4 P1 L
  2205. Reset_Current_Music;重设当前曲目
    0 b& I% ^# P+ L2 z/ x/ G

  2206. ( A% L5 u4 \! b. G
  2207. ;写入当前总曲目2 m8 x: t* m( ]+ S: S9 z( ?8 k6 l
  2208. JSR Set_Sound_Total
    % r7 j& |6 M' ^; [2 Y
  2209. LDX <Music_Item_Cur
    2 U0 j: \- p9 |( z) G5 t, @, l8 H
  2210. + R' n% {9 e; m8 i# l) ?
  2211. LDA #$00
    . O# s( L& F& f+ a% B% j
  2212. STA <Music_Last
    9 W5 U8 y* G4 G2 N/ `* {
  2213. 8 {" I8 ?3 p, `& T8 B1 m7 K
  2214. JSR Sound_Reset_Proc
    8 t, A) T; b3 k2 a" S5 R
  2215. JSR Music_Show
    - e! ?6 ~$ p5 h+ V9 j* ?, i6 _" W
  2216. RTS' |9 t6 `# x4 B8 F; B' [) p
  2217. 8 b9 F% N  _# t. ~+ {/ |
  2218. ;==================================================( N- _& h, }5 h/ L
  2219. Music_Song_Stop;音乐停止
    8 l% r  W2 p* @  }
  2220. LDA #$01
    / g- J2 m, e0 |: Z0 m/ k6 w! g- j
  2221. STA <Music_Stop_State
    1 ?0 k" [& ^  e# J3 U9 J
  2222. JSR Music_Bar_ReSet1 c7 l- o; T6 [" D) @( p
  2223. JSR Time_ReSet
    0 W+ R6 Q4 h2 V8 N4 ]7 g
  2224. JSR Sound_Data_Clear/ p/ S# I, }# d. S4 h+ T! e
  2225. JSR Music_State_Show
    , \8 o' y+ ^0 t+ f
  2226. RTS2 L6 s2 ~1 q- A. N
  2227. 4 c7 ~0 ~% `3 h  J$ x, N
  2228. ;==================================================
    ) K, I9 k: X6 H6 ?+ B. g
  2229. Music_Song_Play;音乐播放
    1 K5 @9 L8 t: e& }& q3 ]- a1 C1 l
  2230. LDA #$00
    % F8 k1 L- r/ F! R6 C" U
  2231. STA <Music_Stop_State9 {( B; U2 f6 q! u, q
  2232. LDX <Music_Item_Cur
    ; I" Z9 x; I, `: N
  2233. LDA <Music_Cur,X
    " t0 t- z" U" O
  2234. JSR Sound_Init_Proc
    6 O# R6 y* j4 d# g+ _  t
  2235. RTS
    : C& x- l4 s# b) r
  2236. 0 ~8 ]$ r, d/ b5 X* ~
  2237. ;==================================================
    + D) t4 E7 `6 m
  2238. Music_Song_Last_10;上10曲) e& q$ Q, I+ G( o) R
  2239. JSR Clear_Last_Track_Name4 ?  g+ r, p0 E5 V/ p
  2240. JSR Disable_Text_Draw9 l5 n3 W0 y2 g
  2241. LDX <Music_Item_Cur
    3 V* a5 h5 |# n8 r, c1 K$ t9 z
  2242. JSR Set_Sound_Total9 k, q+ P( D9 ~5 U' i( w
  2243. LDA <Music_Cur,X0 V; Z% z. q% k7 C3 H* g' ^
  2244. SEC
    3 {6 }: M; s; s! @% F
  2245. SBC #10# ]$ N! \6 c, _' u5 T
  2246. BCS Music_Song_Last_10_Set
    ; F6 T4 W$ O/ [& w5 J* v
  2247. LDA #$001 Q+ {* K7 i0 t* I1 B
  2248. Music_Song_Last_10_Set% I+ P7 d8 A# Y, F* D7 e% g
  2249. STA <Music_Cur,X
    2 a0 M/ }7 [" C0 ~
  2250. JSR Sound_Reset_Proc% }, F! e( }! Z4 N! [3 ~) s1 y
  2251. JSR Music_Show9 l+ Z  N3 t% p) N  t
  2252. Music_Song_Last_10_End7 f$ [  J* a# k- f
  2253. RTS3 g7 U7 o4 y. O/ S3 U/ @
  2254. / m6 V0 T/ Q% c! u
  2255. ;==================================================
    / F6 P% [0 W0 ?7 V
  2256. Music_Song_Next_10;下10曲- v3 [4 m; t" y9 h+ z& h( W" ~* r
  2257. JSR Clear_Last_Track_Name
    2 S8 n, r3 a( V0 l3 ~0 ]
  2258. JSR Disable_Text_Draw
    % U9 u2 L; t2 H/ j& P2 |) M+ R$ R
  2259. LDX <Music_Item_Cur
    , O& I! J' h2 V5 o/ q, f$ S) U
  2260. JSR Set_Sound_Total6 r4 \$ Y( C9 k* a# J( b
  2261. LDA <Music_Cur,X
    . G2 P6 N$ Z! E9 @3 E1 ^+ @
  2262. CLC
    ' r. L. Z/ s% {7 M
  2263. ADC #10/ }# ^" H+ N$ l. W- @7 g) |, x
  2264. CMP Music_Total" l7 S  L# Q) U# A$ L
  2265. BCC Music_Song_Next_10_Set+ P* }' y' C$ V) Y* @
  2266. LDA Music_Total
    . R5 h  U1 `2 L( w
  2267. Music_Song_Next_10_Set+ M3 @8 O7 Y; u+ m/ I4 e
  2268. STA <Music_Cur,X
    6 M: w% y3 D7 C3 ^  {+ F- A  E3 n7 T; s
  2269. JSR Sound_Reset_Proc0 |* L1 k8 Z" t4 h/ ], D" D9 v) {
  2270. JSR Music_Show
    3 j+ T$ r2 _+ ?
  2271. Music_Song_Next_10_End
    7 W+ U+ C$ A& i/ T/ g0 U
  2272. RTS
    . x4 w3 z) E/ l; T. I4 z. X* ^! _

  2273. 7 h+ w0 ]9 Q7 k& @; H2 c  I
  2274. ;==================================================! s; u' g  G- P% ~8 r  h
  2275. Music_Song_Last;上一曲
    ( O3 B+ Y) [  R! U# L% h* M5 P, j
  2276. JSR Clear_Last_Track_Name2 s, r- T' p- {6 H
  2277. JSR Disable_Text_Draw
    % |" \/ [1 O  b) W$ E8 C) Y
  2278. LDX <Music_Item_Cur
    ) Y5 n  G( u  E/ s7 s6 M+ Y5 }. g
  2279. JSR Set_Sound_Total
    - I5 U( O: M. D# ]/ z1 ~/ @4 \" G
  2280. LDA <Music_Cur,X- R  d7 L1 C# o
  2281. BEQ Music_Song_Last_Set
    : ^' W0 l/ f* s* L
  2282. DEC <Music_Cur,X
    7 H( V; I) s+ D6 T# _6 m. C# A4 l
  2283. Music_Song_Last_Set
    + `4 H- q0 Z5 I6 g6 o2 f% U
  2284. JSR Sound_Reset_Proc4 c! T1 k  D2 M, C
  2285. JSR Music_Show
    9 f2 ~+ g. p7 |7 p/ I9 G
  2286. Music_Song_Last_End% w- F' w3 N; l7 \. C5 A  F
  2287. RTS
    ; J, o% R: H( a; s1 s: S1 ]' Q

  2288. ) u. C5 U) C/ N2 U9 F9 y2 v
  2289. ;==================================================
    ' i$ n& R1 t. `8 N6 B& y) H/ l( |
  2290. Music_Song_Next;下一曲
    ) W3 E7 H1 c2 i2 q8 D! T7 M. W. z
  2291. JSR Clear_Last_Track_Name- o1 V, e4 \, p$ t
  2292. JSR Disable_Text_Draw
    9 P' ?0 X0 D7 n: r; X. M
  2293. LDX <Music_Item_Cur
    - ]4 [+ o5 n8 Q3 h% A; V
  2294. JSR Set_Sound_Total
    9 r1 y7 f3 `! }" R
  2295. LDA <Music_Cur,X
    , V- M2 z3 b6 T, V6 A( P  ~
  2296. CMP Music_Total
    ) _+ \% V% ]/ u$ S# \
  2297. BCS Music_Song_Next_Set
    8 C$ q/ n# s+ `# l/ O' k
  2298. INC <Music_Cur,X
    ; Q) R4 A' U5 R6 G& D* ?  V1 s
  2299. Music_Song_Next_Set* E3 O8 I, r% @+ \5 l1 J
  2300. JSR Sound_Reset_Proc3 k) H( e; t$ z" z
  2301. JSR Music_Show9 A4 [! n; P& A: `8 a
  2302. Music_Song_Next_End
    # p( k0 U( @6 H- I. o9 `
  2303. RTS
    + |6 _) C6 X- P0 u7 ]
  2304. $ y4 Z! B% A# t
  2305. ;==================================================
    2 [9 g9 v$ _8 p0 M8 ~
  2306. Change_Select_Item;改变当前选择项
    9 r. s6 O$ V, L" p
  2307. ;--------------------------------------------------& p5 Z- o7 _9 d' N" x8 N
  2308. Change_Select_Stop_Play_Item;停止/播放3 c1 o4 |) V8 t
  2309. LDA <Key_Once8 O, B8 b) b' u* q, X! \2 y
  2310. CMP #$10
    4 D2 P3 D3 d6 u* |" K1 {3 g
  2311. BNE Change_Select_Last_Item; o* ~8 ~( \% {! Q, s: U) G& {
  2312. LDA <Music_Stop_State) m6 [: B! v# D( _
  2313. BNE Change_Select_Play
    ; Y# X9 p5 t, ~- U9 C" e
  2314. JSR Music_Song_Stop
    ! J0 [% I0 R% v/ _
  2315. LDA <Music_Stop_State
    7 e2 t( V& p( N+ l) ]2 i7 M0 O
  2316. RTS
    . h- X3 M. [( V% u

  2317. 7 O5 l& @6 D0 r. E8 h; \
  2318. Change_Select_Play. q$ h5 Q" U- A
  2319. JSR Music_Song_Play0 c9 }/ E7 f6 u8 @
  2320. RTS
    7 P% R0 s  @  L9 y
  2321. 8 H8 ?* H( g4 R
  2322. ;--------------------------------------------------8 O0 m6 u, u; c9 g1 G0 T- U6 t
  2323. Change_Select_Last_Item;上一个专辑
    8 Y9 q: L: X5 m5 h0 j/ M( P
  2324. LDA <Text_Disable_Flag' R" b& Z' u5 L- R7 g
  2325. AND #TEXT_DISABLE_ITEM3 J5 o" o4 m4 v" W8 z, o0 l6 p/ ^- K! w
  2326. BNE Change_Select_Item_End' y: S- D$ l9 c% g
  2327. LDA <Key_Once, E& A( y. z; ^: Q; L3 e
  2328. CMP #$08
    3 ?# E. T8 L0 e) ~
  2329. BNE Change_Select_Next_Item
    9 ~7 j9 o1 |4 k. I" N
  2330. JSR Last_Item
    ) W/ Z* h4 C2 X# t1 Z& E' A
  2331. ;--------------------------------------------------6 j) ]9 f' t" {/ w. U4 [/ N1 X! C
  2332. Change_Select_Next_Item;下一个专辑
    * ~/ R5 n/ e3 D0 U* \& _6 A( E
  2333. LDA <Key_Once3 h5 s3 z* b1 Y1 A
  2334. CMP #$04  \; l$ K* }5 M5 |( }  G" J8 _
  2335. BNE Change_Select_Last_10' U1 _) L7 m: l, Z" p
  2336. JSR Next_Item
    , Y, ~' p! S) t4 _2 v4 c
  2337. LDA <Music_Item_Cur6 [: x* \% ~+ V; G# F
  2338. JSR Get_Page_Start_Index, R; p  y  s9 t9 k) {; ]7 G2 B
  2339. ;--------------------------------------------------2 ?! p2 ?. U* H4 T0 P& V, u
  2340. Change_Select_Last_10;前10曲& j5 \$ L: A5 v8 F
  2341. LDA <Key_Once
    2 d6 {# F$ P5 I  c
  2342. CMP #$40  r- I+ j* v  N& k& Y- }8 D% k0 v( r
  2343. BNE Change_Select_Next_10' B% ]# V' l" ~& C/ j  K
  2344. JSR Music_Song_Last_10
    . F+ }3 m7 `+ H4 G4 u( B
  2345. ;--------------------------------------------------; D6 Z/ z( z' e% O
  2346. Change_Select_Next_10;后10曲
    . C0 @; [1 D( R1 \5 u: _1 P3 s
  2347. LDA <Key_Once* j0 u# x- U: O4 n' V- r9 ^2 g
  2348. CMP #$803 K  x2 h* O% A4 D9 v" Z/ y) F
  2349. BNE Change_Select_Last
    ! P! t- }' B% W6 n# Q1 A) ]* O
  2350. JSR Music_Song_Next_107 D" D2 r( N) @: P
  2351. ;--------------------------------------------------
    ; m$ Q& e1 a5 [2 M5 S
  2352. Change_Select_Last;上一曲3 o: C. q2 h1 g: F% j
  2353. LDA <Key_Once
    " c$ I( e5 w" [8 P% W" ~6 X
  2354. CMP #$026 f# T! d* ]: \
  2355. BNE Change_Select_Next
    $ q( a; o2 N9 a, x4 u+ `
  2356. JSR Music_Song_Last
    - ]% m5 x/ {/ L
  2357. ;--------------------------------------------------
    # e7 `7 F& h7 Z5 T" c
  2358. Change_Select_Next;下一曲/ e# E) d; W. f( @, g) j
  2359. LDA <Key_Once
    6 A9 I- ~; ^- A5 x: S# U
  2360. CMP #$01. f1 Q1 I7 U+ C, D8 e) A! h. s
  2361. BNE Change_Page_Next
    ! l/ ~5 l9 P$ C$ w) k  ^. M
  2362. JSR Music_Song_Next8 T+ W1 ]% i% ^% }: G5 O/ ]9 h
  2363. ;--------------------------------------------------6 ^4 q- K7 J+ Q$ U( q/ \% e0 @
  2364. Change_Page_Next;下一页
    8 [( w0 k( [: s) ?3 z* B
  2365. LDA <Key_Once' j7 E. A, q# P9 s
  2366. CMP #$20" }! b1 B7 F& Y/ {( z+ o3 s" U0 N
  2367. BNE Change_Select_Item_End4 J0 A% d  `. Y& }3 o
  2368. JSR Next_Page/ S- b: g2 [5 O1 f7 ^
  2369. ;--------------------------------------------------* f% n3 X4 Z2 k: U& q
  2370. Change_Select_Item_End
    + r3 ~: `: n- ?1 G& u: u
  2371. RTS  V( z6 I2 V+ _# ?6 X# M

  2372. 5 @3 ~6 R( w" H, ]' O
  2373. ;==================================================# H6 [: J+ c* y+ `
  2374. Show_Arrow;显示箭头光标
    ' D3 |. G. a1 X0 j# q' O6 v
  2375. LDA <Music_Item_Cur
    & F$ ?7 z( K6 {& y& `+ j- q- s( C8 x
  2376. JSR Get_Page_Start_Index. t& K$ S' b) f+ f, y
  2377. LDA #$00
    ; h1 G9 r; A' m# n3 P8 H
  2378. STA PPU_OAM_ADDR. S+ {( t" S6 L7 ?
  2379. LDA <Music_Item_Cur; X% u2 f2 q& m, u) c7 H, n1 h' ]& T9 _
  2380. SEC3 R1 r- @8 b* O+ n% P; u
  2381. SBC <Data_Buf
    " X: a4 x" a7 _4 \
  2382. ASL A. e5 f+ }, \$ ~% k
  2383. ASL A2 g6 U, z; Y4 I6 k6 b4 l
  2384. ASL A
    ( u0 j8 ~* C& K. z6 w5 |: h2 \
  2385. ASL A! _  ?) r- R$ M% Y( c) H2 _$ X
  2386. CLC
    8 F2 T8 w3 x6 b4 U& z
  2387. ADC #ARROW_Y_OFFSET
    , P1 h1 F3 c& {$ _! B
  2388. STA OAM_TEMP_ADDR + $00
    0 U/ z6 ]# ^6 G6 J. u3 J% m
  2389. ;STA PPU_OAM_DATA
    " J& X1 e9 h4 `( a7 |% m
  2390. LDA #$1F- F  |/ {0 |( W. [
  2391. STA OAM_TEMP_ADDR + $016 c' M4 z) A8 {$ Z: ^
  2392. ;STA PPU_OAM_DATA
    9 m$ A6 U+ ^: K2 q8 o- ~. [
  2393. LDA #$00% d  L% a/ t- _3 z: g
  2394. STA OAM_TEMP_ADDR + $023 m4 D3 G7 ^0 W% H: Z, X+ C
  2395. ;STA PPU_OAM_DATA7 q# h8 i- A3 q: O, q0 K
  2396. LDA #ARROW_X_OFFSET/ J' [3 l7 w. S$ {: Z$ q+ L4 [
  2397. STA OAM_TEMP_ADDR + $03
    * @; D0 y6 u3 J# u: d/ E  o
  2398. ;STA PPU_OAM_DATA1 y& V# y# B& V) r! v
  2399. RTS' F/ h# }2 m$ |" n7 ~

  2400. 2 v: I: t- i6 Y8 t7 _. `( X
  2401. ;--------------------------------------------------
    * n0 c. N  k8 T* X1 l" A% ^
  2402. ;命名表数据/ H9 x+ ?9 A' |+ g
  2403. Palette_Attributes* l& v" z4 B) `$ V" B
  2404. .IF SOUND_BAR_SHOW_ENABLE
    & U( Q! y7 f- Z9 O8 ~& |* P6 g2 b
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$558 ?7 l) {) @9 [' d# R/ j
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55/ [# n& O9 u; q1 l5 i
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75/ r$ t9 A; `! S% n, K! C
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA' {, Z# c5 E0 {# q# H2 G, J' b
  2409. .ELSE
    1 h' I# ]+ G# Y& b# ~
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55  M: I) v9 l& @2 e+ n. _
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    8 M/ W3 n- \' |+ z1 x- [
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$753 s6 x0 K. l. {/ L- H' t9 I
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    + D/ Q. f# L9 p9 h  R- B! w' i# o- X
  2414. .ENDIF
    ( d$ E/ _- h$ v

  2415. " b8 Z2 G( b- {9 [
  2416. ;--------------------------------------------------+ U" u: a0 k$ C6 v8 G# ]2 ]& @* p
  2417. ;调色板数据
    ! n# l! z  O3 b# O
  2418. Palette_Data& B( _8 Y  L$ e0 L6 e
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F$ m( Y( D, n  F
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F, U1 e, y7 U" C/ |9 a
  2421. ' `$ W1 r' ?7 k$ u+ F' p
  2422. ;--------------------------------------------------
    $ [* }% n" x+ D/ T
  2423. Static_Text_Data, P0 {8 \/ o- V
  2424. .WORD Static_Text_Caption_Data% e) p$ X1 y& }7 e
  2425. .WORD Static_Text_Author_Data/ R' F+ i0 M$ k! j; [5 ?& L
  2426. .WORD Static_Text_Date_Data/ c% |. M6 u& W
  2427. Static_Text_Data_End
    ; F! Q0 y; ~* K2 v

  2428. & w3 {1 q4 L! D- L9 x* V0 {1 s, `
  2429. ;--------------------------------------------------) U+ B: I9 `4 T' c+ b
  2430. Static_Text_Pos
      e# [; g' \# ?* R0 b
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)4 O  B$ i$ d# [9 I# V
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    8 S) Z  o3 ~6 z" o; j+ N
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)0 b  j  |4 z5 u
  2434. Static_Text_Pos_End) P$ J' p" v3 D8 y4 g" s

  2435. ' o2 [+ T4 Q2 ]8 g) I/ v# l
  2436. ;--------------------------------------------------5 b; t5 a: r* @. l4 y
  2437. Music_State_Stop  v9 r9 {2 q. d* C
  2438. .IF SOUND_BAR_SHOW_ENABLE+ c& r  ^; q& a7 O( Z( W
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00" D- p6 p+ h& M! F
  2440. ELSE
    0 z7 \$ n+ ~" j; Y! Z$ {
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00! y7 f. J/ }- K+ T# R, s
  2442. .ENDIF
    7 W) B7 _) ~9 F7 ]7 b) o
  2443. Music_State_Play* ]  F0 `) y1 y4 r! x# G. R
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    9 _4 m. y  I( q$ i9 B- ?2 V
  2445. 9 y; _8 i! b7 \1 D4 V% ]
  2446. ;--------------------------------------------------
    0 m8 v: I" o; g) N( P$ [' T2 z
  2447. Sound_Bar_Text_Data;声音类型文本
    . s: i# K5 z5 _* ]3 s$ D8 J
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    & O8 I$ x$ u% O
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
      P( t, J; J5 R5 v4 u
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    ' X5 n- j0 Z9 O" E  v; s
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    / D& g$ E1 F. y# R
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    . _6 j0 V! a" `# }) }  A
  2453. , U  k! g! l8 t( Q: t% K
  2454. .IF Track_Name_Pos% Z9 t) Q1 w* A+ |9 \! p

  2455.   W/ d) ^: Z  K" p8 Z2 x6 q6 ?, Z
  2456. ;--------------------------------------------------
    6 x- V* X3 j7 @) L
  2457. Track_Name_Addr_00;曲目名地址索引% B/ V$ I2 `9 i8 Q
  2458. .WORD Trackr_00_01
    9 h+ E" N0 b4 n
  2459. 2 Y; V- V& h% u! _. E
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"* n+ K1 Z+ o: r
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    . N' y+ M( d% X- p7 Q

  2462. ' M9 D. x' u7 r( M0 C2 M: q$ r# g* r
  2463. ;--------------------------------------------------# N/ s2 p& ~  H: O
  2464. Track_Name_Addr_01;曲目名地址索引
    0 M6 l, Y# M$ N: d$ I
  2465. .WORD Trackr_01_016 f2 P+ E8 c5 I8 u, R6 Y
  2466. ! A  _: i$ X3 O' }# n. }
  2467. ;==================================================
    # W* b' G# H' O# m
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"6 ]8 w% m1 K( W( j4 ?0 S+ p$ x
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    % j5 }7 p5 O8 }- o
  2470. , F  W6 p% D7 N8 ~. z& a
  2471. ;==================================================
    ( z6 ]1 \9 P( s2 B( F$ a( f
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    + O" B) a' h. z; `  p9 {
  2473. .WORD Track_Name_Addr_00. `3 b5 ~) K4 |4 f4 D* ?
  2474. .WORD Track_Name_Addr_016 [3 p+ o; |/ p/ l$ d# ^
  2475. .WORD Track_Name_Addr_01  \; S9 F  a5 M+ w

  2476. # L; y+ Y8 J$ |4 t6 @% }# w
  2477. .ENDIF
    1 ?2 n( [; U+ k7 f
  2478. $ v* C4 L- u. c4 @7 \' B$ m5 Z
  2479. ;--------------------------------------------------9 A. S# i6 O0 g# H; k& _# b
  2480. Static_Text_Caption_Data;静态文本数据
    ) d+ Y& v4 p9 {  X) |- _! T: v, e$ E
  2481. .DB 16" |8 [9 v. x5 S2 B; ?7 j2 J8 c
  2482. .DB "FC MUSIC 12 IN 1"& G9 f3 \# S/ `6 f" V9 g5 e
  2483. Static_Text_Author_Data
    # Q$ T) }, w( z) E, }" P7 c
  2484. .DB 25! p9 ^$ t5 Z2 W" ?  a
  2485. .DB "EXTRACTED BY FLAMECYCLONE"0 t2 u# ?/ G4 g: C, @: \
  2486. Static_Text_Date_Data
    4 }# t3 N9 \0 L; b& m1 q3 e
  2487. .DB 10
    0 b( ]3 {  M7 R& E/ F- z) e
  2488. .DB "2023.07.23"
    * }: v6 f1 X9 A3 V

  2489. / I; Z+ ?2 ~1 y
  2490. ;==================================================
    $ c+ [( M8 \$ `' T2 _' o
  2491. Music_Collection_Name               ;专辑名间接索引
    ' Q5 p( [6 a8 D5 V; v8 q
  2492. .DW Music_Collection_Name_00
    3 D) w4 Q. Y. {5 N+ l1 e& i
  2493. .DW Music_Collection_Name_01; {1 O: j% D% o- a% b+ l3 q' d
  2494. .DW Music_Collection_Name_02
    1 D# k/ ~& _- Y) g3 D# q" @
  2495. .DW Music_Collection_Name_03+ [5 Q8 S# Y  Y+ l
  2496. .DW Music_Collection_Name_04
    / t2 w. L7 d) b+ Y) s- X
  2497. .DW Music_Collection_Name_05: T3 n: F9 y4 g1 j
  2498. .DW Music_Collection_Name_06
      ?- e6 q( _5 l( V, `
  2499. .DW Music_Collection_Name_073 |3 @% [4 s! k$ G" a9 N
  2500. .DW Music_Collection_Name_081 B9 E0 R9 [8 ]5 ]
  2501. .DW Music_Collection_Name_09" ^2 Q4 t: Y# c) s4 Z) m( R9 @
  2502. .DW Music_Collection_Name_10
    + ]' l- Y% D: I2 ~6 S" W1 b
  2503. .DW Music_Collection_Name_11+ [2 z6 I: ]* U* h4 W7 n( X

  2504. & G( p2 v: C( H( ]5 d8 h" C3 O8 J
  2505. ;==================================================
    " K0 z- |1 g$ S& P/ V4 P
  2506. Music_Collection_Name_00            ;专辑名文本数据
    7 k) ^5 Y) w; j  O
  2507. .DB 11,"1.RAF WORLD"7 v' @( ~; d$ {& S; d
  2508. Music_Collection_Name_01" }( M" I  }+ ?! l3 _: C$ M( f
  2509. .DB 15,"2.FINAL MISSION"; k  g% o) `3 ?5 K6 l) C- j
  2510. Music_Collection_Name_02
    & J) k2 }( A& Z$ B- d) P
  2511. .DB 06,"3.KAGE"
    1 X. H  q5 _- n& c# {1 V
  2512. Music_Collection_Name_03# J, z3 w( Z3 c7 d# L
  2513. .DB 16,"4.DOUBLE DRAGON"' m' ~) l! m& Q1 w* F* W
  2514. Music_Collection_Name_04
    6 ]1 o; ]0 b8 ?3 q/ {0 e- y
  2515. .DB 17,"5.DOUBLE DRAGON 2"8 c5 [, ~; V: h5 ^- ?. E9 H
  2516. Music_Collection_Name_05& K9 O- y7 v* O6 m% y
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    7 u7 M, ]4 j7 H3 Z8 ^' J( u
  2518. Music_Collection_Name_06
    ' g* W" P" \/ q, h9 [# t
  2519. .DB 09,"7.ROCKMAN"
    5 t! [% n/ n1 R* s3 w' ], R0 K
  2520. Music_Collection_Name_07: v; M' L, C9 B% f
  2521. .DB 12,"8.ROCKMAN 2"
    ; B$ @# n  p" c& x7 h
  2522. Music_Collection_Name_08* D, D/ h# P- l) }/ C; y
  2523. .DB 12,"9.ROCKMAN 3"
    ; U* }; d. @# B3 V7 c3 i9 @$ M
  2524. Music_Collection_Name_09
    8 C/ S: ?* L# P% b
  2525. .DB 12,"10.ROCKMAN 4"2 g) b7 i4 U; O; {" |" q
  2526. Music_Collection_Name_10* L+ V* m/ l$ p+ W. I
  2527. .DB 12,"11.ROCKMAN 5"
    . U7 ]7 Z% t$ m2 W
  2528. Music_Collection_Name_11
    # Z5 {) Z1 {) M5 b9 U" w3 i  a4 a
  2529. .DB 12,"12.ROCKMAN 6"0 V  W" n4 f/ B
  2530. ( {& O7 y% f# C. p
  2531. ;==================================================
    . |7 N# V# e1 _- ?. \6 s# B
  2532. Track_Name_Addr_Flag                ;显示曲目名标记' v* k3 V/ t* S* d+ R3 W4 |
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,06 X" Q4 a- A5 m) ^1 J4 N3 b  x

  2534. ; v6 P+ |  v+ f
  2535. ;==================================================
    5 o" \' h! U: [6 k. r0 G
  2536. Item_Pos_Data                         ;光标箭头位置
    - _/ n2 Y  N2 r! J+ Q, Y
  2537. .WORD ITEM_SHOW_POS
    , k) V# m' o0 X* }9 `4 P2 \' g
  2538. .WORD ITEM_SHOW_POS + $0040
    / L1 g  ]! _. P  A7 p  c) F
  2539. .WORD ITEM_SHOW_POS + $0080
    6 N' L8 Z7 H& `" ^
  2540. .WORD ITEM_SHOW_POS + $00C0
    ( u. C, M( ?# m0 T
  2541. .WORD ITEM_SHOW_POS + $0100
    # O% n& A8 H; |0 ]+ X2 r: h$ ?8 B
  2542. .WORD ITEM_SHOW_POS + $01401 ^, O* _0 y. W! ]' B

  2543. ) t9 \: v$ O" i5 Y) e
  2544. ;==================================================
    " Z: M* `# Z: Y! ]
  2545. Sound_Init_Port                 ;音乐初始化入口地址/ c$ R5 [$ v$ h6 _* B
  2546. .DW $BFC8
    5 {3 T+ ~  H  e4 b) z
  2547. .DW $D7F0
    5 p0 B1 b7 e% P+ x  G$ l' |. h0 S
  2548. .DW $9FC05 M, a/ ~( ]* [' w8 S
  2549. .DW $BF70
      x* i; i( `& j4 Z
  2550. .DW $8003- D- N4 z6 |$ N2 y6 x; S( h
  2551. .DW $BF30
    9 u+ Q! a* o0 j) |
  2552. .DW $9003
    3 d% Q9 V  z, l1 ?. a1 u; L. D, g
  2553. .DW $8003
    ) b( R( u. x7 ?5 P# l% _4 T
  2554. .DW $8003
    * T# v4 V+ z) M
  2555. .DW $8003+ @$ s5 f& e5 d) U$ K, w: j
  2556. .DW $8003
    0 N, Z: I0 {: }7 Y. x
  2557. .DW $80032 [. I" }. P* Z+ P: Q7 ~' e- y
  2558. . U  h& B! M# V2 p/ w
  2559. ;==================================================$ }$ g" C* I% ^& @
  2560. Sound_Play_Port                   ;音乐播放入口地址) Q" U% k2 l5 J) Z
  2561. .DW $80003 Y, i& y9 q" o0 X8 @% O
  2562. .DW $8001
    . i6 v# v+ T, \- @
  2563. .DW $A000- B2 {) k: }& W/ R( g7 |* r3 u9 i% n
  2564. .DW $8003
    3 _( |, h6 @  C% D( e' X
  2565. .DW $8000
    7 ~+ k# @$ c5 L" ~# @/ o/ [
  2566. .DW $8003$ K' @8 |  z5 L: M
  2567. .DW $9000$ M: {5 M0 a8 i2 r$ T3 C" q
  2568. .DW $8000; z2 V9 Z9 n# ~6 m. S. j2 ~
  2569. .DW $8000
    7 _: Y7 y0 m# j8 ^
  2570. .DW $80001 a; ?) |4 ?) y. C
  2571. .DW $8000* ^" q" v7 E3 |
  2572. .DW $80001 w: k  R8 M( h4 ^

  2573. ( o6 Q. i7 o' F2 L
  2574. ;==================================================8 r" M8 D. Y9 f* [9 T8 ]; Z
  2575. Sound_Reset_Port                  ;音乐重置入口地址1 D* I8 L0 ^! L6 k6 c4 }
  2576. .DW $0000
    & f0 I, \' }/ w" f! F- f, A& ]
  2577. .DW $0000& l# O; w  x( ~& t* j
  2578. .DW $0000
    / r9 G; s1 u& U! I. U. a
  2579. .DW $0000" C% S9 a$ i/ K- U$ I2 C# Z9 |( T
  2580. .DW $0000  u; H4 F. ]2 ]1 h
  2581. .DW $00002 _9 w, v' n, k; Z$ e
  2582. .DW $0000' M* R( C0 V6 z5 a- N
  2583. .DW $0000
    # Z) t; I! r/ e4 S* _
  2584. .DW $0000( D& x2 O( ]! B0 j1 ]- _
  2585. .DW $0000
    # e) ?* U/ e% W( m) q
  2586. .DW $00007 @- K+ N) p( ?8 |/ ]; s
  2587. .DW $0000; p9 o4 R: p4 g* U

  2588. ! D+ X! S% I* s2 v% u* B* R2 G
  2589. ;==================================================7 U# N) [7 h& L9 q" u
  2590. Sound_Total_Port                          ;曲目总数
    & M6 X( j! G0 |6 L0 M. Y
  2591. .DB 38) C6 ~. p, r+ C3 v6 J# v
  2592. .DB 331 f+ O. r8 [1 S/ P
  2593. .DB 49
    5 Z6 U' r  k8 {& ]
  2594. .DB 41
    7 c! I, C% }1 B$ b  i
  2595. .DB 83
    9 R/ X" u  L0 b3 t  o$ q6 }3 \$ j- q$ z* p
  2596. .DB 70
    + t: e7 A# b/ v' |0 Y- P, P
  2597. .DB 50
    8 [0 ]% }$ H7 @3 a* p
  2598. .DB 67% v+ C% A8 K& I* Y/ `8 E
  2599. .DB 573 V" Y& |/ s5 o4 g1 v) `0 d& J
  2600. .DB 71/ O4 O9 X+ r% l3 q2 R3 z2 G
  2601. .DB 76
    / b1 j; \2 @4 h6 e
  2602. .DB 1029 S4 ~$ ]! D& E1 R) C3 p1 B  u- b7 ^

  2603. + @, t* C# r) L  n# u/ c2 m
  2604. ;==================================================
    ' y% c( |# [( a( s5 ?
  2605. Sound_Start_Port                      ;起始播放曲目( @/ J; ]% D3 L5 T$ R: {
  2606. .DB 00+ ?  z8 X; B7 s' k
  2607. .DB 00
    % c$ D2 ?$ {. @* O: D! \* {0 l- e) d
  2608. .DB 00
    # S/ v1 {' ~: r# M
  2609. .DB 00+ Y' m, Y5 S+ r
  2610. .DB 00/ _* w* S+ b! ?
  2611. .DB 004 @- B) V+ q/ @) A0 `/ B3 b0 o
  2612. .DB 00
    , |% Q4 Y% p* \+ R. D3 P
  2613. .DB 00( ^! m0 S  E4 ?3 ~* }1 P* [* n
  2614. .DB 004 s  R4 p$ s. ?; H. d
  2615. .DB 00
    * |. ?$ a: C) t# z8 p
  2616. .DB 00
    8 N0 j& W) P$ E" R
  2617. .DB 00; d* D8 _! z) C) V8 W% k

  2618. $ p$ j, T1 o0 y/ u2 h2 q# j) W
  2619. ;==================================================1 N8 T1 z' k! P" v% A2 [8 A" [, o
  2620. Sound_Bank_8000                      ;专辑bank_8000
    ' z  m: i; C1 @. Z
  2621. .DB $10
      s8 `6 Q) b# x3 o/ E$ o
  2622. .DB $12; m) L5 |2 G& R0 M- d  B
  2623. .DB $14( ^1 Y4 M' Z2 p/ `( W) g1 S
  2624. .DB $16
    8 F( d; e3 N! u# M' |
  2625. .DB $18
    + S3 O  `) Y( q4 e0 z
  2626. .DB $1A
    9 G% B" ?# L! V& m3 V
  2627. 9 s, K; v# ^) l  i' I. f
  2628. .DB $00
    0 ?( R8 ~, d* |
  2629. .DB $021 x$ r& {' h" `( n2 K5 _) L" w, w6 P
  2630. .DB $0D0 z, l- [2 E9 i5 T5 p3 l
  2631. .DB $04- L  d) g. Y$ u8 d! |6 ~+ K9 i
  2632. .DB $076 P, P* `( `: y, @' @7 d
  2633. .DB $0A& C+ ?% k: y' O3 P" q4 l9 K# F' f
  2634. , _! H' L8 K: T9 h- V4 M1 G
  2635. 4 u8 C5 x( p# j% X& D& @# N3 F
  2636. ;==================================================
    3 {6 j8 O, A, H, h: W# f
  2637. Sound_Bank_A000                      ;专辑bank_A000
    . i) Q5 ~! y8 g2 q
  2638. .DB $11
    % a2 n6 B7 f# d4 Y$ }/ M
  2639. .DB $13
    0 N8 _+ G3 G8 ?# Q: v3 ]* u
  2640. .DB $15
    1 F; e( W, b% j( X$ P% H8 z; c
  2641. .DB $17  A6 n- G; q1 o" ^' k
  2642. .DB $19  I+ r: Q5 g' J  k7 d$ s' C
  2643. .DB $1B9 Q' [  N$ T2 i. R( x
  2644. & X  n5 B6 T* B6 D
  2645. .DB $017 P. G' H$ q* o7 e5 ~2 c- ]: B
  2646. .DB $03
    : ~+ {+ |8 M- T( O
  2647. .DB $0E$ O$ t5 V1 O8 I7 V& v! z
  2648. .DB $05" p3 A- ]6 x2 R% K) \' n, c" J
  2649. .DB $08
    2 `- P. u& M" I2 Z/ K* x! i5 R
  2650. .DB $0B
    ) U  V! O+ k9 e' Y  S

  2651. ( `* r) e' x# F
  2652. 8 S& ]6 c+ @4 T2 a
  2653. ;==================================================1 J, M& h' A3 {- b7 J8 @
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    ! ^( M- J6 J6 P, Z- C+ }# x+ x
  2655. .ORG RESET_ADDR) U* S: F$ y' c8 e

  2656. : a. }$ @: e2 x8 u# @
  2657. ;==================================================
    ! f$ [2 B3 [9 ?# v$ y, f' u
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    0 ~- i. g8 W" ~  x. T8 V# q
  2659. PHA& x/ r! Z/ U5 S8 X1 I4 ]
  2660. LDA #$068 z1 |' r1 H% Y& p7 Y. ^+ l; X+ L
  2661. STA MMC3_BANK_CTRL0 p8 t# v% e1 v6 O5 h
  2662. PLA1 D' P1 z7 z9 C& F: ]
  2663. STA MMC3_BANK_DATA- b( i1 X, @- g/ R: B$ [
  2664. RTS
    ( f3 H* s+ k# P9 g& U7 j8 ^
  2665. 3 ?  p$ g% }" k0 P. B8 Q3 e
  2666. ;==================================================' S& z; N1 x4 o  z( F
  2667. Switch_Bank_A000;切换bank到A000-BFFF) c  W1 q* Y6 I
  2668. PHA
      x& E. m, w! a8 _, e% p& m- q2 O
  2669. LDA #$07/ a- t1 j8 M: T7 u# q
  2670. STA MMC3_BANK_CTRL9 S5 w( k& g. m1 j( V$ {9 e
  2671. PLA
    * o8 G0 z; p) ]4 a( o
  2672. STA MMC3_BANK_DATA( t8 j; K0 l. y( u6 H
  2673. RTS
    ; o7 P4 S/ m* }3 b6 G
  2674. ' y+ x9 _# H& ^6 D; J$ W
  2675. ;==================================================
    * E, b$ r+ g! ]" `- u( @
  2676. Switch_Main_Bank;切到主程序bank. }* t5 s% w; d5 k% T
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    7 X+ A$ C, z* Q
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank* P7 v- c, N# @# B( {2 R
  2679. RTS- @% m6 L9 H# X, A

  2680. 7 ]! c' R( x) I1 l  ?
  2681. ;==================================================$ C. A* L  Q2 `  P
  2682. Sound_Reset;音乐重设(如果有的话)4 ^4 [( Z: O' u  g: ?/ _
  2683. JSR Switch_Music_Bank  ;切换到音乐bank- e5 {* }' h. g5 T
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    : s$ L& r0 \2 p/ L7 o# s" Q
  2685. JSR Switch_Main_Bank   ;切回主程序6 R" n6 x% C# d2 u* G
  2686. RTS) K, y3 \: i: g
  2687. ) A+ e+ d2 J& Y" c
  2688. ;==================================================
    : Q$ o& G: w8 A. E2 C
  2689. Switch_Music_Bank;切换音乐bank
    ! y- D/ V- A2 C9 K0 k7 C3 j
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号" h: [0 t! D. V- X
  2691. LDA <Music_Bank_8000- G' r" f' |5 N: f6 x4 I
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank3 i) `0 k. T) b* r
  2693. LDA <Music_Bank_A000
    9 i: x4 R) O' P+ [
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank+ t8 Y. _# }/ {& b! |' a7 P& ?. w
  2695. RTS& N1 O$ K' n5 V, q6 ]' u! P. _

  2696. 0 E' l* f/ {" B: \' i3 a- I4 s
  2697. ;==================================================: e( r% F9 h7 t! ]  O. Q( p4 z
  2698. Sound_Init;音乐初始化, `- B+ y) h, R& w' @+ P. R9 v1 n
  2699. PHA) o/ f' j! F8 l
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    0 y) v. T3 [' p
  2701. PLA
    / o0 O0 u  z, L2 x
  2702. JSR JSR_Addr_Op        ;执行音乐初始化; A' O" C2 M: j) f/ }: h
  2703. JSR Switch_Main_Bank   ;切回主程序
    6 \- n" H% ^5 G5 g+ F
  2704. RTS
    6 a+ Q: h5 o3 z7 M& r" H
  2705. " c% m2 J  P# u; _: |
  2706. ;==================================================4 e/ y! G$ g5 L% M8 d
  2707. Sound_Play;音乐播放
      q4 ^" e1 ~" n( j: T, {
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    : D* n9 S7 m+ }  p$ k  y4 p
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    ' S: e1 E  W, ?( a/ h' X' y& o* R! p" G
  2710. JSR Switch_Main_Bank   ;切回主程序
    ) y8 F& ^" H2 q) L8 A; H  d
  2711. RTS
    ) J7 v0 K; f, G4 }! ]( }2 P

  2712. " u) L5 l4 }4 E4 p
  2713. ;==================================================
    9 }! U* v# i3 l3 h7 C
  2714. MainLoop;死循环
    2 V6 y% m0 H. \0 B0 h0 }
  2715. JMP MainLoop
    8 L/ N# c( ]8 o% }$ y" R3 p, j% R- D
  2716. % U: K. H8 L. D- i! O
  2717. IRQ_SUBPROCESS_JMP = 09 q/ w5 p( P7 T5 D' {8 N/ T* P

  2718. - v# ^$ ?5 `) D+ V3 S1 r
  2719. .IF IRQ_SUBPROCESS_JMP% m/ Z7 z! t) }3 C
  2720. ;==================================================+ Z) o  V& f/ ?- O
  2721. IRQ_Process_0;IRQ处理过程0: ]9 H$ v1 x0 V( z
  2722. 1 {8 B1 j3 w: ^: W% Y4 h" V
  2723. ;15条扫描线后触发IRQ7 s& m( y% H, d. B4 J* ~9 N
  2724. LDA #15' @0 ~( `% t) J$ n: o. P
  2725. STA MMC3_IRQ_LATCH3 [+ S* b) c# Y" [- i7 r- @

  2726. % }! ]% D, k9 b& j
  2727. ;设置屏幕滚动! S, F: [$ H% X& J- P5 e
  2728. LDA <Scroll_H+ o( W" c' _/ E# L' I; [
  2729. STA PPU_SCROLL
    5 `1 K2 Q7 k" k2 ^" e* p
  2730. STA PPU_SCROLL. o. c4 X8 I+ @6 F
  2731. 9 g. P( ~0 g5 o" ^" Z
  2732. IRQ_Process_0_End
    . f0 M- Y7 D* o1 A, Y; c
  2733. INC <IRQ_Process_Index8 I! V4 ~: s* Z
  2734. JMP IrqProgramEnd
      c: o% z3 W* W/ {3 V

  2735. 0 {+ j. ~4 o* T( e
  2736. ;==================================================! w% }; D. Y) t- E) [6 O" `
  2737. IRQ_Process_1;IRQ处理过程1  u8 S. b$ S4 ]8 G1 M  e: D

  2738. 9 f  j  I) m6 I
  2739. LDA #55
    $ i& V) d( y! _% Q7 K" P
  2740. STA MMC3_IRQ_LATCH& M$ c0 k. M1 N

  2741. : ?3 i0 `7 {2 w1 k9 q
  2742. ;设置屏幕滚动
    * o4 B# h( x( {$ z
  2743. LDA #$00
    ( g/ F. j% K  x' t$ t( C) u6 t) S
  2744. STA PPU_SCROLL* i6 C5 h& D$ O9 M3 j
  2745. STA PPU_SCROLL
    - e, l7 m4 ^0 U) v% G
  2746. : e/ m6 k6 d% L/ }0 m  j
  2747. INC <IRQ_Process_Index
    ; E$ U& M6 P6 Q, K/ P& H) z  i4 \
  2748. JMP IrqProgramEnd
    , h" q3 ~+ A. t/ L# j$ k

  2749. / w( A2 W& `5 L' N  @3 s
  2750. ;==================================================
      B" W% q* k8 b" |" V" R$ a7 i" L
  2751. IRQ_Process_2;IRQ处理过程25 h" ?% m2 R* _/ s5 S$ q
  2752. , u1 i7 }& d1 D  {
  2753. LDA #15
    9 v' u) Y# x- b( `. i5 l
  2754. STA MMC3_IRQ_LATCH
    6 X0 ^/ U& j0 p. e. l
  2755. 5 d2 y) ?! y6 g; y& f+ s: F
  2756. ;设置屏幕滚动8 p9 k- x+ w7 C( q4 f
  2757. LDA #$00
    . {( k6 J: P4 N* w
  2758. SEC
    7 u" y8 Y' `' O4 V2 @
  2759. SBC <Scroll_H" i0 y' ?, a9 X
  2760. STA PPU_SCROLL4 a# d  m5 j, y0 c
  2761. STA PPU_SCROLL
    % K0 `, {1 X6 z- N" O

  2762. " B$ b( n# K1 d  }( P2 s% p
  2763. INC <IRQ_Process_Index# V. `! }6 W. O/ u$ p, Z/ b; m. q
  2764. JMP IrqProgramEnd( u6 W) r6 f+ a- O% W2 G

  2765. : I  m5 |$ A! N" p+ c
  2766. ;==================================================
    2 _: D5 p6 s2 Y& h6 p4 G$ A
  2767. IRQ_Process_3;IRQ处理过程3
    4 |; O8 J5 s) Q7 w+ g
  2768. 9 |  w9 u# _, p1 Q# Z* d& p
  2769. ;设置屏幕滚动3 h1 q! M' |+ W
  2770. LDA <Scroll_H
    ' e1 H' }3 ^- A, y% c, S) [5 H
  2771. STA PPU_SCROLL
    6 Y2 |' V" }; U1 {( f
  2772. STA PPU_SCROLL
    ; Q1 F! B/ f; R: K! D; k0 A
  2773. 2 y$ e* o) Z( H# D: F1 ]. j
  2774. ;禁用IRQ4 s( Q2 p& F3 ]
  2775. STA MMC3_IRQ_DISABLE
    . U2 Y* _7 }: U2 S3 N7 Q
  2776. JMP IrqProgramEnd6 n$ I4 U( a8 b( i

  2777. ( u4 k* L0 d2 X* C* w, A- ^/ J
  2778. IrqProcessAddr4 B1 D+ }, x% U) o/ d4 F
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    ( ^8 o# r, z- \! T9 V5 |

  2780. 6 R* O) F& G5 p& m8 I
  2781. .ENDIF
    % A. `+ i8 n. L$ l; L
  2782. 7 H) M4 N' x9 ?1 H  K5 |( P4 o
  2783. ;==================================================6 X& E$ Z) K  _: a( K# M( z
  2784. ;IRQ滚动模式常量
    . r$ C. d  [6 ^
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    9 O' d' m; s3 G1 Q* T3 L0 Y
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动; o3 W) U( m4 O  P8 Y1 f
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动' ^0 O2 G) `: f, ]6 I  [  S
  2788. , k$ T, e* j, J
  2789. ;IRQ扫描线数据
    7 \( N3 |+ A5 f! o. U
  2790. IRQ_Scanline_Data6 r; _: }/ [( w4 i7 j# O
  2791. .DB 8" w8 J5 ?& G8 K+ z' K
  2792. .DB 54& d6 E9 T- h2 c9 z3 x# T$ l: }
  2793. .DB 8
    1 ?  o% G, g* O" [. Y
  2794. .DB 00 ;关闭IRQ
    ( P! v  s; z! l' n' Q8 |7 ~5 a
  2795. 4 k% \5 D2 g) z* k# o
  2796. ;IRQ滚动控制模式
    ( ?" e& H$ ~; ~8 T' I) A
  2797. IRQ_Scanline_Mode
    1 J& v# Q  k, H% A9 \( a
  2798. .DB IRQ_SCROLL_MODE_ZERO
    : o3 ?, [: \* O- \9 \
  2799. .DB IRQ_SCROLL_MODE_ZERO0 `' r& I! M1 x2 D/ P
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    - Y& X! N6 |, n( |8 x
  2801. .DB IRQ_SCROLL_MODE_LEFT% G7 W; V4 {$ ]6 I* o" z
  2802. 5 m  P3 u  K: j3 \
  2803. ;==================================================
    ) `/ Q% K& ~  u  g
  2804. ;IRQ处理
    4 W; i* j6 F) `4 \! B
  2805. IRQ_Process
    $ o, }0 d% \! G0 D* i1 H' k
  2806. LDX <IRQ_Process_Index
    9 j, M/ c6 H5 K. J! I( \* }" j5 j
  2807. LDA IRQ_Scanline_Data,X8 f& r4 m2 I0 V" @0 J; I2 i
  2808. BNE IRQ_Process_Latch; V! J* ^/ m5 [9 v7 V- W* n
  2809. IRQ_Process_Disable;禁用IRQ. Q2 `# Y( w' O! o
  2810. STA MMC3_IRQ_DISABLE1 I6 l1 x" \) u( Z
  2811. STA IRQ_Process_Index
    ; p1 e! \" h0 R
  2812. BEQ IRQ_Process_Scroll
    * R) P: U5 @) \5 ?+ q% e5 ]# H& V/ R
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线: r5 e% x1 x! G  B' q
  2814. STA MMC3_IRQ_LATCH1 Q$ {* P! o) B- e1 P/ ?2 @6 O$ q
  2815. INC <IRQ_Process_Index
    + h) [$ ^0 z( m* @
  2816. IRQ_Process_Scroll;IRQ滚动控制" m, q# O6 F' O8 Z
  2817. LDA IRQ_Scanline_Mode,X
    4 h) H$ d1 q) O, R( x+ Q4 X# R
  2818. CMP #IRQ_SCROLL_MODE_LEFT1 X9 D/ f" H  r# ^2 k3 I' O
  2819. BEQ IRQ_Process_Scroll_Left) S6 s, r3 _/ x) p. D
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    % t5 }6 d4 u/ P! r! ~& o+ p
  2821. BEQ IRQ_Process_Scroll_Right: x: }$ O' x, f# @) n. G5 ?
  2822. IRQ_Process_Scroll_Zero;不滚动
    * }" H. ?8 V7 f
  2823. LDA #$00
    # s# s# h0 v1 K# T9 v/ V5 D
  2824. STA PPU_SCROLL
    2 ]  O5 \& A& T" c5 J) O# K9 b
  2825. STA PPU_SCROLL
    ) C3 `: w, d5 g+ ~
  2826. RTS
    9 j  F- Y( P+ F/ p" w
  2827. IRQ_Process_Scroll_Left;向左滚动4 W6 m2 ~3 {& w# J; [1 I# W6 S
  2828. LDA <Scroll_H( {7 S! q$ X& I4 A7 }
  2829. STA PPU_SCROLL
    ( O3 j& ~, G8 k* D" @. o
  2830. STA PPU_SCROLL; p* h* [3 o/ F. }' d7 \
  2831. RTS
    : M4 p3 t7 e6 g- ~3 ^' A8 A
  2832. IRQ_Process_Scroll_Right;向右滚动/ v- L8 J# M, l& G: y0 h1 w4 X
  2833. LDA #$00
    9 y) D/ ^' t' F
  2834. SEC$ U/ z9 _2 Z% q- i9 E6 A& C
  2835. SBC <Scroll_H
    ' ?  W9 J' c" Q, S6 a
  2836. STA PPU_SCROLL
    + x6 _: \  j& f5 }0 a: b4 X
  2837. STA PPU_SCROLL" d7 k$ G# D& k1 x
  2838. RTS
    - }+ h% |5 l/ @: b* K$ n

  2839. : E1 ?1 H' u6 m2 z/ e
  2840. ;==================================================& ^% |- q/ ^3 D9 y( L8 N+ @
  2841. NmiProgram;Nmi中断处理
    9 H4 `8 i+ m" x" J
  2842. PHA# p5 {, B/ w6 f7 i# e2 a
  2843. TXA0 f" E0 e3 ~+ C. Q. }" K
  2844. PHA
    % V# i% N1 Y2 ~& v1 r7 _9 Z" s6 I( S
  2845. TYA  M) I9 p. X" F- J
  2846. PHA  K, j7 I( v' f" P& \0 h) j  g
  2847. 4 [4 l& W& Y7 O4 C: _. x2 z% f
  2848. ;读取清除Vblank标志, 防止重复进入
    + V9 |* \( e0 V! z/ H8 f
  2849. BIT PPU_STATUS& E2 D, h4 {( x/ j" \

  2850. 0 f. `/ L: {- t, V1 F# T
  2851. ;切换主程序bank% c; P0 J/ \8 C  U+ @
  2852. JSR Switch_Main_Bank' m4 ]$ T7 v3 T$ @1 v+ W2 q1 i
  2853. 0 O/ A" b8 `0 k% f4 @- O
  2854. ;Nmi处理8 Y" }5 z* ]$ J* f3 b- q3 ]" ]
  2855. JSR NmiProcess7 V1 r- _) _1 _: g5 [6 \& V6 Y& k. i

  2856. % k9 t" p0 L0 D& a1 a2 b- `
  2857. Nmi_Proc_End
    1 E% b3 x5 {$ j$ V) D; U
  2858. PLA
    2 c9 B' ?  k$ ~( `
  2859. TAY
    & Z0 q# f+ ~- K( F3 c
  2860. PLA
    7 [; h7 G3 @/ W6 q
  2861. TAX& k; V; I0 y- X( s8 z& j
  2862. PLA* T4 \  g: t* ]* c) m
  2863. RTI4 G0 W- m# M! m! b/ j
  2864. 0 b3 y$ `+ M9 s6 V- ?; d6 T# B
  2865. ;==================================================
    ; P* _+ v( K& ]$ O1 E6 v
  2866. ResetProgram;重置中断处理6 Q  e/ r- Z, p9 U& e% \7 a
  2867. SEI
    9 h1 F' f  E- W( Z
  2868. CLD/ g, k+ d, _/ f" r9 o: {: l0 ?
  2869. LDA #$00+ a1 b: m, ?0 w9 L( ^" x
  2870. STA PPU_CTRL& A4 A5 ^  N2 }+ m: Z0 O
  2871. STA PPU_MASK
    ! i, k" ]; \  r
  2872. % ^) D! n- K# h- F% K; u
  2873. ;切换主程序bank, G( V1 r& j% z3 M8 \2 P
  2874. JSR Switch_Main_Bank
    , Z8 _& n, r( C5 J7 p5 ]$ j1 }

  2875. 9 k0 K9 F. p1 I, a9 d, J1 X
  2876. ;程序处理开始
    " I( T% p5 E& |+ o1 v
  2877. JMP ProgramBegin9 k& p9 c5 s" u* T7 I7 p4 N# O7 g% d4 F
  2878. . k8 [9 G/ F/ z3 c0 _" _0 Y
  2879. ;==================================================' N8 ]! v% Q3 n) O9 P1 ~8 r
  2880. IrqProgram;Irq中断处理/ s8 x* W6 ?& C/ H7 |. T0 u
  2881. PHA2 g8 a" f; v1 Z8 e  b3 r
  2882. TXA  ~0 t* w2 {1 ?: ~6 X6 R
  2883. PHA
    6 U% N6 v0 n) H: F
  2884. TYA$ M1 i! W( s5 z# J" c$ H7 g
  2885. PHA
    2 t& L" w8 H4 k, f  e

  2886. ! J5 |0 P4 _  T, Z4 N4 f0 }
  2887. ;关闭IRQ" b" N8 \+ q: k0 f) S# C! p4 ?/ D6 y
  2888. STA MMC3_IRQ_DISABLE
    , k7 [' n7 d; R. |. }% a7 d( A
  2889. $ W# a4 U( z. P2 ?) S
  2890. ;允许下个IRQ触发
    & R" V4 e- @  a& N' W
  2891. STA MMC3_IRQ_ENABLE  V9 B. K3 `9 X0 j
  2892. : q6 U/ q! F! R$ ^  ~
  2893. .IF IRQ_SUBPROCESS_JMP
    0 L& G1 x$ S, C4 @& t$ J7 Z7 G7 l

  2894. 4 b# w8 \6 P( B+ Z! {# |% O
  2895. ;执行IRQ过程
    2 X% E" F, k, U, ^+ k& }7 v
  2896. LDA <Data_L5 N, B# K* L. q/ `# ]* z
  2897. PHA# e! K1 O' b( b9 p( v
  2898. LDA <Data_H$ z0 q" l: M) A- g; z& ~, s
  2899. PHA2 e+ S) ^6 l* q' w7 s5 u
  2900. LDA <IRQ_Process_Index
    2 p1 R3 `# L7 i0 Z# A6 l
  2901. ASL A
    9 B3 n5 G  @3 p0 E0 t8 f& o. X, @$ z
  2902. TAY
    , F& R2 o. Y2 b
  2903. LDA IrqProcessAddr,Y- o  G3 |- w9 V' x
  2904. STA <Data_L! V) s0 o! H# P  z9 k* W% _( _
  2905. INY
    1 A+ @3 @; l1 K
  2906. LDA IrqProcessAddr,Y
    7 k& F  s* C7 y
  2907. STA <Data_H* t; m4 Q. B! A1 C* x8 F2 _& }+ r
  2908. JMP [Data_L]
    0 q) _) _+ l  ?+ [9 L! t# ~6 ~

  2909. : P. W$ [3 k: k5 H! D, R/ `
  2910. .ELSE
    , I; z2 I  V) m; ^! S( l* J
  2911. + Q  A  @; g! V$ Q5 J& m% t
  2912. JSR IRQ_Process; u" U3 q! }" r2 l$ |9 S
  2913. ) \  {+ n( p& h3 f
  2914. .ENDIF8 U5 t0 u! D. ^2 ^& y5 ^

  2915. # `: i$ d$ U( |, i$ ^8 {
  2916. IrqProgramEnd% \" f# h) x6 r2 z
  2917. .IF IRQ_SUBPROCESS_JMP: z5 R( ]! W# O: @4 f) W  e
  2918. PLA
    . \/ j9 D* q4 Y4 ?
  2919. STA <Data_H
    8 ]3 {" J' G7 Q, ]! y
  2920. PLA
    ; A/ P" z5 T8 X5 a! z6 F6 D
  2921. STA <Data_L
    , @# U3 `* P0 G& s
  2922. .ENDIF
    5 J8 ?( k  g, D0 r5 V8 k% _
  2923. PLA, h" {# {5 A) ^9 i. O9 V
  2924. TAY
    $ R* |' e1 S, _
  2925. PLA) |! {  l) ]- J' K9 t* V/ [
  2926. TAX% O% k, }* i# |$ R" C8 X1 K# l
  2927. PLA+ Z) S$ s& y( d2 E* P; x
  2928. RTI2 w4 X6 Q% }% C! n( Z  F
  2929. 4 N/ I6 l: F8 B0 M
  2930. .ORG $FFFA' E8 O  n) h; B. a$ B0 B  J
  2931. .WORD NmiProgram
    * }! E2 Z# X" W3 R' h# r+ {
  2932. .WORD ResetProgram/ ]" V7 _+ F  q2 }! U, |
  2933. .WORD IrqProgram
    : l3 ^0 K5 J8 g& c( ?
  2934. 0 N4 m4 W0 F6 W- Y  a  J
  2935. .BANK RESET_BANK & BANK_DATA_MASK) w* `2 b8 s8 i/ x' T1 p$ ^
  2936. .IF SOUND_BAR_SHOW_ENABLE
    ( w9 d7 B& ?. }# P; P
  2937. " {. {- G6 H$ i( c) Q. }# k
  2938. .ORG $FE00
    : n9 k, a+ A2 u8 z9 ]
  2939. PHA. M( ?- V$ ~, Q4 ?4 _
  2940. STY $07BA. X$ [; T% U) |- L0 F( c
  2941. LDA #$8D
    / o; M3 r8 ~6 S6 V! B$ r' {" K
  2942. STA $07BC
    3 q7 A: ?4 O1 V& `) o! E
  2943. TYA% f& I3 N5 s9 @1 B1 X& ^. f2 w
  2944. CLC, P0 {5 r# e! y2 s/ A: [# b& h$ a
  2945. ADC #LOW(Sound_Bar)
    1 c) S  y! o2 T1 s" X$ N) e# d  A
  2946. STA $07BD
    - }9 _& v* F/ n& E
  2947. LDA #HIGH(Sound_Bar)
    + X5 r8 ]! N2 W* _2 R: T
  2948. STA $07BE7 b8 h2 d. Y1 K6 r* a
  2949. LDA #$60
    & v" b0 D8 z/ U2 D
  2950. STA $07BF
    : J, t' d9 v. X( o* H# W
  2951. PLA. w/ s7 ]& L6 x7 M3 J! l
  2952. RTS" N4 |  i1 m! z

  2953. $ [# I: P1 }# H9 I& \# i/ m
  2954. .ORG $FE20" d1 _) B" E  U" x
  2955. STA $07BA# W2 _$ ?, R- X- N! U" r3 u! H
  2956. CLC0 E4 Y" J' O. _& ?; P$ x% \
  2957. ADC #LOW(Sound_Bar)/ B" R9 H" Y1 d# F1 H( Y
  2958. STA $07BD
    5 c4 @  ?' u) Y- Y5 M; V5 b) B
  2959. LDA #$8D9 y7 J7 F- U' a5 D
  2960. STA $07BC
    3 |1 K8 D. ^* W9 ^0 ?
  2961. LDA #HIGH(Sound_Bar)9 j4 C9 f/ u2 b
  2962. STA $07BE+ V  e$ s4 A8 J$ A4 E* X! m
  2963. LDA #$60
    $ [1 m6 p4 n2 V6 m& W
  2964. STA $07BF
    1 f6 m$ S% |+ g5 S* C% g  ?" H' P
  2965. RTS' P  g; N/ {$ U5 ^# Z/ [/ U3 l
  2966. ; G6 D( k% f5 T: p& |! z
  2967. .ORG $FE40* G8 X- ^/ s; O6 [
  2968. PHA. W, s( Z; a/ o: T: O
  2969. STY $07F1, J; A7 u" g( W$ o* P! L8 o5 G
  2970. LDA #$8D
    $ O: J0 p, [# A; P
  2971. STA $07F3
    9 G8 b) I8 m1 Y% }3 z2 Z
  2972. TYA
    8 Y+ c6 W, P3 _& o. Z
  2973. CLC
      e" l& U! ]  o0 j* P; ^' o
  2974. ADC #LOW(Sound_Bar)- }' ]0 Z- ]5 Z0 v( g, L0 a/ g
  2975. STA $07F41 [6 V) g2 U; e6 ~8 N' w
  2976. LDA #HIGH(Sound_Bar)
    ( {# D0 W: C3 `5 z; ]2 P/ `0 N
  2977. STA $07F5
    1 x1 C) y4 x9 e% _
  2978. LDA #$60
    # |4 J* J9 b; B2 V0 I. t
  2979. STA $07F6
    4 [4 s- L. w/ h- |0 z. c+ t
  2980. PLA& [$ x) ~: T, x: t
  2981. RTS
    + X* Q  G! P, ]
  2982. 1 t' A$ N! G% R( n
  2983. .ORG $FE60: r5 d9 k5 X- y( {% A& B+ z& E
  2984. STA $07F1
    1 G' @8 c; l( O7 T+ \
  2985. CLC+ E, Q& [" I4 d3 N3 B; ]
  2986. ADC #LOW(Sound_Bar)/ i$ v1 T9 Z, B' q; z0 [
  2987. STA $07F4
    9 P# s3 q( p& K8 ?5 ^8 o- S' Q
  2988. LDA #$8D
    ) M' r) d4 ?1 K0 Y
  2989. STA $07F3. R6 H7 D- V7 [: z' N* l
  2990. LDA #HIGH(Sound_Bar): L% f5 P) C5 c5 K2 w
  2991. STA $07F5
    - U6 S* b9 ~, {+ X4 F2 ]
  2992. LDA #$60
    3 [0 J1 l1 R$ o6 L" Z. `
  2993. STA $07F6$ O3 v! \# t+ C( {" Z; v
  2994. RTS3 E0 Z" Z( C3 B; g! H  |# a

  2995. * |5 v/ w1 E' H* u: J$ _% b$ Q4 [% O& a
  2996. .ORG $FF40
    0 u8 D  O7 C) {
  2997. STA $4000
    % }! `! C" L9 Q# P9 A
  2998. STA Sound_Bar + $00
    0 ?$ `8 _- i* `
  2999. RTS+ Z: p; `2 F5 `

  3000. $ B  ]' F4 p" I* k# b6 q; X
  3001. .ORG $FF48/ c' y' b' Y- t
  3002. STA $40043 W4 j% X6 ?7 v) F  m
  3003. STA Sound_Bar + $04
    7 E9 {# o! A! C
  3004. RTS
    % c' S& C2 @( m; a0 m0 i
  3005. * M1 \- a) Q' F+ E4 @
  3006. .ORG $FF50! T, ^6 ~) z( V0 V
  3007. STA $40082 Y+ P9 t1 \$ Z: C& M5 S
  3008. STA Sound_Bar + $08
    5 q- a3 n" E1 d/ y1 r7 C5 u
  3009. RTS
    ) x8 R$ Y2 H/ R$ V# L! G' M  M. O, P4 q
  3010. 3 P) V" D9 |4 e( v
  3011. .ORG $FF583 L* L" ^. O: u' S- p) ~- s% m
  3012. STA $400C
    + D( t2 K6 B& U5 J& c* S
  3013. STA Sound_Bar + $0C
    3 {, V' T- E+ s5 T6 V$ ]
  3014. RTS0 N* f- Z" M4 R8 a# z+ e; f
  3015. 2 A% ?* h) p, h/ G
  3016. .ORG $FF60$ N0 R1 q6 b( o' O& E  L: P$ b4 W
  3017. STX $4000) k5 c- ^2 Q/ y0 S
  3018. STX Sound_Bar + $007 {0 ?7 k; G# t! F* e- Q
  3019. RTS
    7 b: ?7 i3 w5 a* h6 |! y4 ]
  3020. ' ]0 n! g& ]5 `7 I( n1 V
  3021. .ORG $FF68( K4 t% N- H+ z/ p# v! s+ _
  3022. STX $4004
    7 h% n4 I" b( O  W
  3023. STX Sound_Bar + $04* K8 ^/ J, N! @8 W# ?2 h& X1 R8 c
  3024. RTS4 z( j8 O; D2 g! G$ B' x8 V2 H' A

  3025. " d7 U- M% F6 D& g6 ?2 a' K8 h
  3026. .ORG $FF70
    7 v! [' U8 p- j$ ]
  3027. STX $4008
    7 M* M+ P! B" x: D* ]/ t" K
  3028. STX Sound_Bar + $08
    ' n8 }6 j+ j: H! M4 {
  3029. RTS# |# h& A) I$ \8 k) E8 z
  3030. ' k) T, j& ]0 \- W* x
  3031. .ORG $FF78
    ! W4 r: o6 K/ U0 v1 b: D! M# g
  3032. STX $400C0 _7 n  p$ e: l
  3033. STX Sound_Bar + $0C* h$ j2 i1 J/ g9 G
  3034. RTS& q& i4 |- u  M3 f
  3035. % a: u+ u8 g8 L7 _% ?' D) A  H
  3036. .ORG $FF80  X7 y- N+ x% b! I7 V& m& J, ]
  3037. STY $40009 K" ]8 m+ u2 Z& |, [0 q
  3038. STY Sound_Bar + $00
    - n' w( v  T2 k2 l2 d
  3039. RTS
    % D5 m, h  c$ h+ k# y, U" N- a
  3040. " _0 O- @* ?) m: H6 J  C
  3041. .ORG $FF887 z2 w: C- s( z- @$ @  H
  3042. STY $4004
    $ c& M9 g& }$ W2 ~# q$ `1 ^
  3043. STY Sound_Bar + $04
    6 G1 [: N0 s5 v( z- E3 R
  3044. RTS( [, `! C& ?  P- {& y$ U9 |& C% Q

  3045. ( r0 y% U& e: a/ j8 K+ ]
  3046. .ORG $FF90
    1 ]! ~9 \& K- u, L! m* @$ O# b; x0 K
  3047. STY $4008
    $ A: g; M) Z7 @& q9 b0 Y
  3048. STY Sound_Bar + $08
    6 b& U* y. J2 G8 P* [" q! |
  3049. RTS( `0 B% e, C* _0 I7 r

  3050.   s" S% u1 S+ S5 o8 @5 d0 ^  j9 _
  3051. .ORG $FF98( ^: X, [& u/ b, a
  3052. STY $400C9 C/ h& p1 W% b) S4 }
  3053. STY Sound_Bar + $0C
    * C, A# x+ k3 B: X
  3054. RTS
    ! q9 B! o. ]' Y& q1 v+ e7 x+ Q+ A

  3055. 4 P* s. m- a1 G- N1 F
  3056. .ORG $FFA0( c& a8 K" q! q0 {# Q& R3 V# q
  3057. STA $4000,X
    . Q0 {" W% ~- {- s# p/ z$ U
  3058. STA Sound_Bar + $00,X$ r8 L- y; Y* N: j0 A
  3059. RTS
    + M; c. U) q$ q* U% a+ d8 m) X/ R; n

  3060. : w+ f' i% I6 A) G- T- D5 Y
  3061. .ORG $FFA8$ U1 c5 F" b) o9 Y  n7 q" j. C
  3062. STA $4000,Y+ S% _' _0 A! K' j3 K% N; u' c
  3063. STA Sound_Bar + $00,Y. I% c% P0 Y: q( x
  3064. RTS
    - S) q/ P' n! o8 p2 v

  3065. - V- U3 q2 p( X5 m
  3066. .ORG $FFB0+ K6 P1 t0 }# p! `
  3067. STA $4004,X
    0 m, f* m5 d8 Z) S  N1 m
  3068. STA Sound_Bar + $04,X
    8 \. o: |# D# p$ L0 Q
  3069. RTS
    - R5 a$ c3 b+ f. F

  3070. 8 J. S! h$ d) f6 L& r' d6 S% L6 M
  3071. .ORG $FFB8; b# t6 _* a' u& t
  3072. STA $4004,Y
    , Q4 R$ y, J2 G6 M
  3073. STA Sound_Bar + $04,Y" s/ q: q( g: ?+ ^; C
  3074. RTS
    8 ]8 u- Z0 p% n  t

  3075. / \; I* O( l; A7 l
  3076. .ORG $FFC0" v; H' b8 d4 R8 z' I
  3077. STA $4008,X
    ; h" a9 Z; |4 d- M; `
  3078. STA Sound_Bar + $08,X8 |3 P  d/ a  ]7 B
  3079. RTS1 ]/ ^2 I. C  q$ k" w
  3080. - [: |: `/ s* K+ G# @
  3081. .ORG $FFC8
    ! D5 ~) x1 F! P. `; f
  3082. STA $4008,Y' `8 p$ G3 N: T; T7 R8 r3 g
  3083. STA Sound_Bar + $08,Y
    % f& J- |7 A. S0 ]' R, ?) ?. J  E
  3084. RTS
    5 \6 }+ {3 q3 }7 Z2 Y, R8 E& Y  u

  3085. 0 s; k" d9 s: l
  3086. .ORG $FFD0
    / w# l! {5 F( b6 t
  3087. STA $400C,X
    9 [1 I& s& X  ~$ X2 i+ [: \
  3088. STA Sound_Bar + $0C,X; F3 _9 I, O4 R. Y# _
  3089. RTS2 c: M% x1 |) \  z3 Z
  3090.   ?) _5 p4 b: Z7 j3 k
  3091. .ORG $FFD8! w( f2 n; c9 F6 C+ Z
  3092. STA $400C,Y
    4 U7 [( ~) S7 o' {' J# x
  3093. STA Sound_Bar + $0C,Y
    ( V6 P& o, r# l' @. |
  3094. RTS
    / S* b- ?  a! z! K0 g4 u
  3095. ! J9 ]' Q( \3 [6 O# Z0 k
  3096. .ENDIF  a) s, o' d3 x; }% D  a% U+ `! R5 E
复制代码

% o$ }$ J- Y/ w( |* p. l
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3184 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-26 19:17

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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