EMU618社区

 找回密码
 立即注册
帖子
查看: 251|回复: 1

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑 6 m0 V" d- B- o/ D. M% M. V, a6 L
: v  {- p) X- K5 p2 Y) Q* ?
[FC][音乐12 IN 1]
5 Z( ~3 Z' h" t& a7 K. L5 S时间: 2023.07.23+ a: s, e8 d# @( [
作者: FlameCyclone( `# J. U. V  E
1 t7 ^8 F8 T0 f" s6 k( w
收录音乐内容:9 K  M/ B/ D( ?" D
1.Raf世界
! G7 m7 s% l4 w. R/ O2.最终任务, A/ g- a& O1 o0 v4 Q! m
3.赤影战士* }" x# K+ @! B: M. c, s( q/ R3 k
4.双截龙
* U: G, E5 j! F+ `5 ]) {5.双截龙2) E$ Z) ?6 y( v9 v$ P1 V1 k
6.双截龙3
, m* G' W  B, H) B; n! i  h! ~7.洛克人3 _0 B. [! y8 m
8.洛克人2
8 J# ?5 P0 M6 J: J% H3 r$ ^6 H0 w5 D9.洛克人31 V2 ~7 F- h, w
10.洛克人4
/ }- t3 y6 w2 z. y- m' V1 ]11.洛克人5+ Q# @1 d6 P0 S2 [% [, `1 l
12.洛克人6! |. O. s5 }0 c1 n) f2 u
' D! G# \+ J  x" Y1 Q: @
操作:
# k1 T( k% p% h- p* r  h+ V1 t! R上键:         上一个专辑$ [6 w/ C/ k5 G/ L
下键:         下一个专辑( K# g2 M9 r# U; x0 r2 J' E; Q
左键:         上一曲; P5 V7 b, A2 N% f' f8 A* l
右键:         下一曲2 N9 k- k" P" m. Z. H! F
B/A键:        前10曲/后10曲9 Q  t' ^- ~, J# F0 D! A
选择键:       下一页5 K5 X7 }: D2 o8 C5 P  {
开始键:       停止/播放
" p" h8 Y# A9 [; R+ }: i- ]/ x8 B; H& o
http://flamecyclone.ysepan.com/+ o7 u6 N% l6 W

9 ?6 q4 n" y- K3 T
3 S$ n. t7 ]4 d# q1 \
1 I& Z- w( W( j" L, e. X! S6 g! D) Z. G3 X! R
  1. ;[FC音乐][播放器模板]
    / w8 c! V- G( n: Y/ s
  2. ;FlameCyclone 20230710
    ' U  _# F9 q% `" l5 n* o
  3. $ F$ j: T0 z1 W6 @! h
  4. ;文件头3 \1 C. B4 i, G5 Q9 u# H
  5. ;======================================================================
    7 d$ s, u: ^1 k% _/ ?' C
  6. .INESPRG 16                                             ;16KB PRG 数量$ |+ R  @' b; C( ?" f
  7. .INESCHR 1                                               ;8KB CHR 数量5 c! p/ s; L: \' X
  8. .INESMAP 4                                                   ;mapper 4) \4 ~7 c/ \9 D" A! i  n
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
      Y. p* q' ?: {7 G0 M' Q

  10. 0 f! T/ ]0 ~) b9 G4 X9 s
  11. ;==================================================
    6 c# J; |) k7 Z, ~( D: E4 z# y% s
  12. SOUND_BAR_SHOW_ENABLE       = 1* K" I5 H* e' _& p
  13. ;==================================================
    : }( u( f4 F2 K& X/ \- M8 t% s7 v0 E! u
  14. BANK_DATA_MASK              = $1F
    ! q( ]7 a9 U. d9 e
  15. CHR_RAM_ENABLE              = 0
    5 @0 q  w8 q& v8 S% g1 e
  16. IRQ_SCANLINE                = 136* y- o. _4 u9 ^  x+ l- p8 Y5 Y8 j
  17. ;==================================================. ]6 r6 O& M& ?/ b& m* p$ F, [( X
  18. SOUND_DATA_BANK_00          = $00
    5 g9 w. }# K8 w7 A
  19. SOUND_DATA_BANK_01          = $01
    4 z' x4 b' u0 A
  20. SOUND_DATA_BANK_02          = $02/ A! Z  q$ S$ U9 T( e" O5 u6 d
  21. SOUND_DATA_BANK_03          = $037 O5 ]" R9 T1 c; \
  22. SOUND_DATA_BANK_04          = $04
    9 `" U6 Y7 D8 I# T8 p8 K
  23. SOUND_DATA_BANK_05          = $05% V# A" x" A4 [) q! U6 g
  24. SOUND_DATA_BANK_06          = $06
    1 q  ?* G+ }) x( ?* B. H" R
  25. SOUND_DATA_BANK_07          = $07+ H/ E5 p8 H5 v9 h9 \, \, G9 C
  26. SOUND_DATA_BANK_08          = $08* W  u# H/ |9 p4 Q2 t
  27. SOUND_DATA_BANK_09          = $09; `: ?& X$ D. \! h3 o
  28. SOUND_DATA_BANK_0A          = $0A
    ; }: e. O4 U% l3 k# H! E7 ?) K
  29. SOUND_DATA_BANK_0B          = $0B
    + v* h& A( W+ C, T2 G  l1 }
  30. SOUND_DATA_BANK_0C          = $0C
    * K- `" y3 O1 r6 p$ a$ U
  31. SOUND_DATA_BANK_0D          = $0D  s% }2 O6 y* U( T0 W  |: {; e
  32. SOUND_DATA_BANK_0E          = $0E
    8 t1 Q' P& {0 u2 h0 u$ O  z: R
  33. SOUND_DATA_BANK_0F          = $0F+ D9 H8 p2 g* z- g
  34. ! v/ B6 h* _. c4 W
  35. SOUND_DATA_BANK_10          = $10; W8 L: K( ^! @1 w
  36. SOUND_DATA_BANK_11          = $116 D7 K% ]# \& z3 X0 e9 e
  37. SOUND_DATA_BANK_12          = $12
    9 S; G5 `, k  P/ F
  38. SOUND_DATA_BANK_13          = $132 S  }/ {$ @7 g1 p- l0 g
  39. SOUND_DATA_BANK_14          = $14
    7 ]- A. D# n; B
  40. SOUND_DATA_BANK_15          = $15
    / ?# k( f5 y2 e' o
  41. SOUND_DATA_BANK_16          = $167 }2 C2 O1 M2 }, ]+ ]
  42. SOUND_DATA_BANK_17          = $17- R& g* F% Z7 }" M4 T- T- T
  43. SOUND_DATA_BANK_18          = $18. X# Q+ w& ?  U5 ~# ]
  44. SOUND_DATA_BANK_19          = $19
    + r; `9 O" v& n
  45. SOUND_DATA_BANK_1A          = $1A
    / N0 Z4 g0 C. k9 y1 n
  46. SOUND_DATA_BANK_1B          = $1B8 k! K9 t$ I; u6 O+ Q
  47. SOUND_DATA_BANK_1C          = $1C5 B" U6 n  i& L$ n7 M
  48. SOUND_DATA_BANK_1D          = $1D8 X9 ^) m0 c( R+ p- x# G
  49. - ?7 [$ f( c- B
  50. SOUND_DATA_BANK_C000        = $1E. i2 E7 }  W8 g) Q9 c, s% A
  51. SOUND_DATA_BANK_E000        = $1F1 V, |. w: S' m0 T- ]
  52. ;-------------------------------------------------
    % d6 Z6 R9 j6 b+ j6 }/ A
  53. CHR_DATA_BANK               = $20
    ! }. K# Y: C% ]
  54. CHR_DATA_ADDR               = $A000
    7 m$ [# \4 y" u" Y7 c- Z2 c
  55. ;-------------------------------------------------) D0 o: F5 e$ {; B2 H% `/ d
  56. PROGRAM_BANK                = $002 S0 [2 Y' Q& G) \  O- F3 }# _) r
  57. PROGRAM_ADDR                = $8000
    4 x4 \+ o; P4 `5 D5 Q8 o0 h
  58. ;-------------------------------------------------( K1 E! R4 S$ _8 r9 d8 H7 \+ u1 u
  59. RESET_BANK                  = $1F5 c; z% \9 ~5 `
  60. RESET_ADDR                  = $FD00. i' E& N0 W. t) m' g  r
  61. 3 X: c( Z& l& V5 `4 _0 J, x
  62. ;==================================================- R" n9 w" c: `, o( a7 y: u# f' e6 C
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数) H# k5 ]6 u6 X' h3 N
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    / N% t9 \, w) |+ I3 N5 [& ]* Z
  65. PAGE_SIZE           = 5                     ;每页节目数
    8 R6 x* o3 [$ ]1 w7 ^" y& l

  66. 8 N2 s$ G( [4 `( r1 C# U8 ~
  67. ;==================================================% r' w  @/ W9 w1 U! l' A
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    + s( {) i7 ?% I* _
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数0 p* C2 A) |4 @  f9 ]& v- L
  70. .ELSE
    1 m' X) l: E1 _. S$ a( y" E
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数# t% y3 H$ s8 v; h( O* Q" w4 W7 y
  72. .ENDIF# d# {( g  }& m1 a
  73. * \% v+ Z  E3 G  S
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    4 I" A9 t' }3 r6 j6 ?2 X
  75. ' ?+ ^! E% ?) h# d5 \
  76. ;==================================================. S9 C5 R. X1 w* i) R
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置+ [; ]" I' x+ V- J6 u
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    " s% p$ k4 z: _  Y
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    3 A- \8 {" Y3 N1 t
  80. ;==================================================
    " d4 v1 R, \7 ^7 P. K' _; S1 Y/ Z
  81. Caption_Text_Pos    = $204D ;标题文本位置& S5 v1 q! r( }! m# p
  82. Author_Text_Pos     = $2324 ;作者文本位置" ], K& E0 x9 W6 ^
  83. Date_Text_Pos       = $236B ;日期文本位置
    $ u6 c) a1 k  |8 E8 L) N+ Y! Z
  84. ;------------------------------
    , L4 N* h( W; Y# D/ {1 c' [; q! H
  85. ;------------------------------
    8 c' r  E, F: x4 o: W, @9 T
  86. .IF SOUND_BAR_SHOW_ENABLE
    & B3 r6 j& i1 d% i+ r! g

  87. 0 n* X/ J) }* D% \* o
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    ! `6 i' y0 R6 v3 R8 V# y
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    ) J0 T! t6 \/ J) m+ `
  90. Play_State_Pos      = $22F3 ;播放状态位置
    & @% V; f& n9 W0 x7 C
  91. # y5 q6 B2 l! V2 s
  92. .ELSE. x6 A" ~1 x1 Y2 S$ L6 W- A% o
  93. 5 [. a8 _4 u1 }, G. d* i/ U
  94. Play_Index_Pos      = $226C ;当前曲目位置9 n% }1 I3 {; p$ B( g
  95. Play_Time_Pos       = $22AC ;播放时间位置
    . k* h7 S8 U5 M- k; @
  96. Play_State_Pos      = $22EC ;播放状态位置
    % t! c4 S+ F9 y7 G# S* O

  97. % A* g! E/ y+ H" {% x
  98. .ENDIF* S8 b3 W% J2 |2 }4 o
  99. ;------------------------------0 u& @3 @7 \! \6 [5 x% Y
  100. Track_Name_Pos      = $222B ;曲目文本位置- m# Q1 r! x. r/ ^, z+ y4 Y6 j; \# ^
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
    3 v; W1 Q4 \1 M/ @# ~. u6 i( ]
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    2 Z, h9 G3 V' u
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    ( Q% e& W# s; V' }' y$ m5 R& y
  104. ;==================================================" d* U/ m! g( W7 y$ @' n
  105. Scroll_X = $003 |3 J* f8 t" V! \
  106. Scroll_Y = $001 J" s! c. M8 G$ `  [
  107. ;==================================================4 L" p5 v% X" d. |! I
  108. Sound_Ram_Addr_1       = $01004 _) q- W* E% s6 n- A
  109. Sound_Ram_Addr_1_Size  = $80' [6 T- G% m3 ?. ~, y1 y; k! b
  110. Sound_Ram_Addr_2       = $0090
    - H" ]) t  i4 I- O. \3 a: y# c  h; k
  111. Sound_Ram_Addr_2_Size  = $709 k6 ], |1 @- f( B; D4 f1 s0 c
  112. Sound_Ram_Addr_3       = $0700- _6 u. p& f; z/ O: U) t6 S! p
  113. Sound_Ram_Addr_3_Size  = $00
    3 @: T/ J& ]* G
  114. Sound_Ram_Addr_4       = $04006 q) \( d# p% w+ ^2 W2 F
  115. Sound_Ram_Addr_4_Size  = $00
    . X$ H! p% L+ w: l" R" m+ ~" ^7 k
  116. Sound_Ram_Addr_5       = $0500' H8 v) E7 r; V& a9 y
  117. Sound_Ram_Addr_5_Size  = $40
    0 t# x+ c3 N- \1 A1 \. {5 `8 b
  118. ; L( d* K$ q9 f, v! W1 r0 N
  119. OAM_TEMP_ADDR   = $0300
    - r, {: O/ l/ a

  120. 6 s+ S+ S- k5 ^  d  j" E
  121. ;==================================================
    ' `, i; I2 q+ n% Q8 _* o
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器3 c& {1 L/ P" u# p# N
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器# `9 U5 ], q  E
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    0 o. L4 s# |- ^  {! ^
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1; M- Q- ~4 l* C" d  u
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1) q4 v) @0 J! ?
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    0 @( q2 _/ [1 R. h+ j
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    0 w# z4 b  }' t# n7 [" x- O
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    ; F* ?) w- U. e3 V
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存9 y  |, i: J4 i' e9 x
  131. APU_STATUS              =   $4015   ;声音通道切换
    - V7 e. c% p, i: B( N# r
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    " O4 M4 _' D( b# C: X
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    9 P8 W+ Z; ^2 m0 [* m
  134. ;==================================================, R) |6 I5 o3 }0 ?3 _" l
  135. MMC3_BANK_CTRL          =   $8000- B- k, S3 \1 G2 i& e
  136. MMC3_BANK_DATA          =   $8001
    - `! [6 w4 O2 e' s$ @# F! q
  137. MMC3_MIRRORING          =   $A000
    $ u' ]: I% _) X! f% ?
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    ) h. n) Z& ^" V/ d4 h  I) D
  139. MMC3_IRQ_LATCH          =   $C000+ g0 E. t) ?; Z- d, T0 f8 B7 o& `
  140. MMC3_IRQ_RELOAD         =   $C001% T' N) O" z5 \* K: l8 W3 q9 X
  141. MMC3_IRQ_DISABLE        =   $E000
    8 O+ ~2 G) t2 h7 j/ _
  142. MMC3_IRQ_ENABLE         =   $E001
    ! X, C0 s' }' v- i( Z, ?
  143. " }  B# F/ w: \5 _% ]
  144. ;==================================================
    * e( r" A: P8 j7 k
  145. PPU_Addr        = $02003 L. W9 W* U$ {% b! u4 A& Z
  146. Palette_Addr    = $02C0$ }* }  Z, r4 y# p0 f9 {
  147. Sound_Bar       = PPU_Addr+$E0$ k' W, W# {1 y; n
  148. ;==================================================, }# l6 X" l$ V( T
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D$ ]# Y; X6 a* X. n4 t) C  b
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11& i$ o5 _" c; V9 `
  151. PALETTE_UPDATE_MAX      = $2C9 E3 T- f% `& P  m1 P% s
  152. PALETTE_UPDATE_MIN      = $21$ N& @; v$ d: `4 x
  153. PALETTE_UPDATE_INTERVAL = 60
    2 E# R9 F5 T; h; O1 }: u
  154. ;==================================================/ C9 H+ f! C3 h8 Z1 s
  155. Sound_Bar_Cnt       = PPU_Addr+$F0; Q6 }" g1 }! C8 Y
  156. PPU_Cur             = Sound_Bar_Cnt+$02, N$ }/ H$ _1 B' S. Z
  157. PPU_Addr_H          = PPU_Cur+$03
    ! c- B  w" Q3 Y, ^
  158. PPU_Addr_L          = PPU_Addr_H+$04* k* V+ `6 g  a% }9 B  u; Y/ S8 G, P
  159. Screen_Ctrl         = PPU_Addr_L+$01
    . h% {+ l2 X1 O/ a
  160. Screen_State        = Screen_Ctrl+$01
    ! u6 k8 h$ c' s4 U# r8 m2 ^" p5 P
  161. ;==================================================" |- ?: {& W0 @
  162. Use_Ram_Begin       = $50  w* G5 O0 D" d/ F: w. b1 \
  163. ;==================================================: q7 l' f. s. v- I! W: ^
  164. JSR_Addr_Op         = Use_Ram_Begin
    ( Z# [% r$ h7 Q" A% B
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    # ^1 l5 j" {2 n& ]/ R9 Q7 j/ G
  166. JSR_Addr_H          = JSR_Addr_L + $01& Q+ [3 D' M2 ]
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    / f3 e' Z8 ~2 W5 ^, q- t
  168. Data_L              = JSR_Addr_Rts + $01/ \" w2 L2 ~! w& r, v+ l2 p5 U
  169. Data_H              = Data_L + $015 d" Q/ T9 G  s: P1 n/ d
  170. Data_Cnt            = Data_H + $01# h5 T0 v7 n% B8 \  y4 C
  171. Data_Buf            = Data_Cnt + $01
    2 k; D5 I& [3 |, ]
  172. Nmi_Time_Count      = Data_Buf + $01
    % V+ n, A  \# P/ Y
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    # [. e8 z; M, m% e# E2 H
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01* ^1 r/ o. n, u2 P9 Z$ o

  175. 1 H2 a* u8 n  v; b5 |3 h+ i) T4 M
  176. ;调色板刷新标志
    ! k/ ~" e2 Q$ A
  177. Palette_Update_Flag = Palette_Wait_Cnt + $019 |9 }3 G5 ^. @3 M
  178. $ U$ q' F6 I) @' b0 B
  179. ;当前帧文本写入禁用标志$ m1 G5 `6 Z; k2 s( n1 H# u
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    ; C* m6 b( e/ ]& P$ I
  181. 7 U+ R9 Y1 V4 ^. K5 k
  182. ;==================================================
    7 T' P! Z1 {/ X" L& F. o6 M
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动+ z. ]1 |$ T  g* i# n8 y, t
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条& v& J8 d2 ~8 E' [4 w
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    ; [6 e0 C0 s3 _" M  l% t
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    / e" v2 ?6 g% s0 ]6 x
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    / s( b  R% A2 n. C
  188. ;==================================================0 K1 F' J4 ]) S% C# H: v
  189. Key_Keep            = Text_Disable_Flag + 11 l4 q" t' ~- ~& ]
  190. Key_Once            = Key_Keep + $01
    & Q+ c( j. [% N) l
  191. Key_Kemp            = Key_Once + $015 M3 _% y7 z  U4 D1 a
  192. Key_Temp            = Key_Kemp + $01
    5 _7 C$ q. _  y: |  E
  193. Key_Getv            = Key_Temp + $01
    # C5 j* G  e% E, w* e7 d4 B* @2 R
  194. ;==================================================
    6 ~, W, x- k3 c* k( Y' p* V  j
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集# D3 B4 D" P. Y: a  N' T# Q
  196. Music_Item_Last     = Music_Item_Cur + $01* S, z* R1 R( M: K# w7 a5 M* [
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    # }* Q  W5 Z8 a# z8 ^7 h. i# T
  198. Music_Cur           = Music_Total + $01  ;当前曲目/ v3 D; t/ {" @1 F. G
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目* E1 E0 p& j$ L& c3 Q/ D; J$ B
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态. P5 Q8 d1 ~+ c# b# f
  201. ;==================================================
    $ M$ k& o! j8 l( d& Q- H9 [& O
  202. HEX_Data            = Music_Stop_State + $01
    ) h  j3 P, R+ @( ^7 F
  203. DEC_H               = HEX_Data + $011 q( G% T* R$ a5 U$ L' q9 ]
  204. DEC_T               = DEC_H + $01
    9 {/ e7 z& {: X: a- Y9 W
  205. DEC_L               = DEC_T + $01
    4 v! a  b" P8 C3 X" w5 Q9 W  q
  206. ;==================================================
    - ^  d/ c0 I7 [6 Y1 W- Q9 [7 H
  207. Time_S              = DEC_L + $01! w+ T% Q. d2 O" {3 F# m
  208. Time_M              = Time_S + $01: A: v, V0 w4 @5 x/ q% T) q7 T
  209. Time_H              = Time_M + $02* p' Z' A; y4 p/ @$ {7 q9 x4 T1 c9 c
  210. Time_Cnt            = Time_H + $036 [# n7 e/ x% u" k! G5 e( ~

  211. * \- M5 y4 o9 U& w/ m* @( N
  212. ;==================================================
    * q- P- L8 h  S1 Z
  213. Music_Bank_8000     = Time_Cnt + 1
    8 }$ b1 `# B8 O9 w
  214. Music_Bank_A000     = Music_Bank_8000 + 1- R. |. l2 k; d' B5 @, h" f
  215. ;==================================================/ w2 X, z9 k+ v, P2 w3 _
  216. Scroll_H            = Music_Bank_A000 + 1/ T. X0 h  A3 i
  217. Scroll_V            = Scroll_H + 1
    " [( ]+ V, e# o5 T
  218. IRQ_Process_Index   = Scroll_V + 1+ J* E( z) n  w0 A: O
  219. ;--------------------------------------------------
    ! x4 u; I8 R5 A. j3 b  t  Y0 k5 ^
  220. Page_Cur            = IRQ_Process_Index + $01
    * C- b" t! M2 F" T
  221. Page_Cur_Index      = Page_Cur + $01
    9 k: I6 M, L: h, E6 G
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    ) K9 s' U5 {! F- L
  223. Page_Last           = Page_Cur_Cnt + $01$ @; r4 M) ^; a( T3 \- ?) J8 s
  224. Page_Last_Index     = Page_Last + $01
    & k$ T9 r. [! H: e$ @) K7 K
  225. Page_Last_Cnt       = Page_Last_Index + $01  a9 Y8 J; g9 W5 K
  226. Use_Ram_End         = Page_Last_Cnt + $01
    4 H# s6 g9 o( G5 g# W2 ]
  227. ;======================================================================
    3 A* W# e$ q% K2 |" b
  228. ;音乐数据块
    5 v8 _+ @* q/ o& J' u$ q( ~- I

  229. % D1 w  j( _$ T
  230. .IF SOUND_BAR_SHOW_ENABLE; J. M5 e! z8 B$ D( i4 y1 F/ c

  231. % {  q4 ?0 \) g& L  r8 s
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    5 H. U" c( C4 B: q- p
  233. .ORG $90008 ]" k/ n- ]) P$ |( n
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    " r9 U7 v8 Z0 }6 l9 M8 f
  235. 8 {  L: D1 _: W- F2 ?
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK  m1 M: L; o* O. U. D
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"5 V" _" r: G- P

  238.   Y  n3 D* L( ~2 b7 `
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK/ e' }" Y; j; B7 X
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"* f2 [' Z+ v6 I) f% R- T$ n5 @

  241. ( |: d: c) u1 X1 Y
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ) `. x5 g2 R: I1 w6 h
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    ' b" w- m. R! e' E% j1 P9 [

  244. . p: k; }. V2 U5 h% w4 q3 d
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    / o$ h: y- t8 ~! Z' \
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    6 [* E1 g& J& Z9 z4 U* O

  247.   Q; I2 l  K( O( O
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    4 j0 \6 r/ M! a/ }* _, u8 n. N
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"# y8 N! C" a# x
  250. 9 `; G& @3 K; M8 H4 N2 i, y
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    8 a5 g  Z: t3 R' }% {
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"9 J) ]# Z- T9 Q4 c. L
  253. 4 i. T  n: |2 t) ~1 U& k
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    # h5 b# [  w. K; [0 @- }
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    + l% @, O5 e4 @& o# d' ?7 W0 e) q, q
  256. 6 R' `* S8 S# l( z3 C: P8 w9 t, [
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    # k9 D! C! K" J/ L: c* U! _
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    4 I, R3 R; W: z' E5 P
  259. - T1 U# h( t- H
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ( ?- [" [" f' m3 O1 N6 C( ?3 e
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"( d1 O! b4 D& r, }7 Y0 K% C

  262. 5 m# s! l  U% [# ^* s7 N: B2 g) i  g
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK  W& f- j& t; [9 |0 W# D" d
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"
    & R# e3 _' s6 j. J- b' P! ^
  265. 5 ]9 t/ v6 ^; R6 C8 ]+ ~
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK7 \. E9 K, t5 l" \
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"5 R/ f3 P3 ]- j. l6 O

  268. ' W: |4 `! ]7 J5 \" u/ d, n
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    7 z4 X" F# i# H/ O
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    - ^1 G1 N. k1 T) G
  271. ! }0 z; ?7 ]1 f
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    $ l! s+ `, Y/ i& [1 e
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    ( u3 N7 E! X3 i& Y& ~
  274. * r; m" t' i# T4 B- ^  m- Z
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    2 T0 K$ s& Q. X3 T) m6 s
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"5 @/ F6 V1 b) W- B
  277. % U) f1 K7 }2 u) h$ c! ~
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    4 s9 W+ J( h+ E6 O" h( w6 B
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    " [( o  P6 O- x3 s! m

  280. % U4 Y+ F# ~" c
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK2 E% m) w; {/ C! w- k
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    5 i. j; t3 M7 O% r+ h9 G9 i+ q

  283. ! @; f8 P. d8 i; [( F4 h
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ) ]3 r5 k# E' j$ \: d5 K( ?% j
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    7 z+ Q$ j1 B, k, o6 U

  286. % Z( T3 }. Q$ m* S" o# i: g
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK$ b0 @# l* D' g$ C& D! a$ X* z
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"* `$ g; ], z# ^# B6 M6 z# ~  J! ]

  289. 5 [- J0 r2 l7 Q& p8 E# B# t1 Q
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK7 M' r; F' e" d- r: R
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    & w- I" X. J- o  u- H, @9 `
  292. " R3 U2 G" L1 w
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    4 M8 r" G% M! R1 r- U1 Z: w5 p
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"/ Q. ^$ S! I8 N! u. x

  295. 4 N9 G; c8 H) O
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK" L: i: U, ]! i1 a" R
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"! v1 R( D$ J5 ?3 D  s5 o/ ]

  298. & S5 a2 b$ I3 X" Y7 N0 D7 B
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK( A! S8 t5 X. c8 d8 Y0 R
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
      P% c3 ~2 d( K% d9 ^$ Q: H
  301. , o. H2 @. Y0 c  T
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    " v0 @9 }; b: L0 `
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"9 t/ x/ Z% z: ^. S! {2 _

  304. ) B- x1 E1 N4 v
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK- F1 o% U) ]7 J0 G- J; g
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"2 U5 K& w' a/ r, X- x
  307. " M0 ?  n0 ], v/ @
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK  l% R3 \4 x+ ?, j. ?" |+ u. \
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    % p- M. d, V. ^8 \3 j
  310. " M( N  r4 E5 H4 J8 N; c! D' a
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    - S+ Q! o; z* r7 h: {4 n
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    0 R! @. ]; n6 P, `, Y- n4 l) ~6 p5 b
  313. , F2 ^1 m3 }( \6 ^
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK/ B# K& q8 [( _6 L9 J
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"% n1 x  H) o4 l6 a" K. L, j
  316. 4 c' S: v7 p! ^' m# k6 d
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ! P. [. ]" C  U; E1 m4 ?
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"$ O& \' D2 b3 ~# Y7 G
  319. 9 y2 C; t0 `% u2 O) C7 P
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK4 y* J4 `! Z8 i  G4 U
  321. .ORG $D400) X; y3 R  ~, {8 v* O6 ~" w. ]
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"+ f; s# o  u# s% V8 m) V5 v  F
  323. - f/ x# h& C) G# W+ e% ]
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 t8 Y% H/ H- p6 f/ [' z' W+ C
  325. .ORG $D800
    ; J6 q1 x% T* j2 y! ]- x
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"4 z/ P5 H" ^, Y/ x, L6 n6 ^

  327. + A% G# Z8 \1 \2 S0 E( D; \% ~
  328. 1 P* m. C& t3 C
  329. .ELSE( w$ n+ j! g( w$ U0 x
  330. 9 `! `( N% ^/ k3 d& B6 X- ^% h4 b
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK' H: s) f7 r- _) \! G1 G9 R# X7 @
  332. .ORG $9000
    ' u. F2 C5 }$ g8 H! y  L3 y3 x
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank": w9 h3 u+ Q* Y5 v- T( _" R3 @
  334. , c4 h* Y" ~! L8 `+ Y7 F4 w, s  ~
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK+ j: C5 |* @/ |( u  a* B. m/ R4 e
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    7 c: P6 P2 m7 Q) B( {" F, e7 A) F

  337. $ e$ w+ v* C& J! H/ @' ^
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    8 {% C& D9 X0 o" K
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"9 k6 U: w- [& }+ J8 V

  340. % V$ n8 o# S  Q
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    2 d, }" {% O+ F4 N* v: c
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"/ ~2 x. [2 I7 @+ m5 d3 M( L

  343. 3 j' S+ A; x# m
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    6 Q& N) P- n5 `; i# {/ T0 E* ?; C! \* e
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    4 w# o" @9 @/ J' G  ]9 B$ i
  346. 9 e2 C1 M7 x  j5 x
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK# r$ |4 E+ U' l5 S; @; b/ u6 x, C
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    # h( C+ X9 a% D: |, K5 h
  349. : O5 Y% ~; f* t. r) r/ W
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    # S) q. J1 I  v& p; j; I7 }
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    % Q! ?; r% y8 x, M  ~

  352. % O) f" M" r) C  c: g2 m
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK) `% c# d% J. w9 r
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    ( C" e3 L8 @& Q. q: ]
  355. 1 N4 ?$ _0 g! X1 b
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    ' @1 W6 S5 G: U3 y4 U5 n
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"$ o0 ?7 Z" {3 {
  358. 6 L6 x$ j2 b' @: u+ o" b
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    8 p7 A2 ~) q6 Z1 j; n
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"$ v* p0 ]1 _* |6 W; q

  361. ' {& z+ f8 n  A4 S& I
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK* Z  R! g! Z+ [* _
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"3 n* p8 F  I% i1 ^2 K

  364. ! X4 G$ q% _0 j+ j
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    1 K# G! j/ X; g3 ~# A' E" Z
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    5 T3 r2 u/ Y) R

  367.   d5 F* v5 @: X/ i+ h1 l+ |
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK. z$ i& {- j6 s& z2 r1 ?' b
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"+ `7 n( O5 F* C) |3 V
  370. 5 [9 u& Y( D# I0 B
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK9 S( D6 u- X& r) e  _+ {
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"% K( C7 J2 l+ {5 A

  373. 0 t3 B! d! U$ o: F7 d
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
      b  w4 s% {) C: d+ m
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    6 _. e, Z* \4 C" J8 _

  376. 1 Y0 t! c4 G( P* u5 }. H  d
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK. f0 x: g/ P* m5 [' |
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    / `1 m1 p: Q: w$ Q" H- G3 ]5 u

  379. 7 l; M% Y( q+ D$ A% N+ I7 M# {
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    " y* k$ U9 A; L( g* r( u( ]: ?
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    2 g$ I' q8 [) u) N: a( ?& ~, W$ Q
  382. 6 p0 A. b: Y8 {# J" k
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    5 ~$ Y2 F3 f9 G+ N9 H" M3 k
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    # v, P8 p- e) A: p
  385. " Z) @, s1 q: a2 q1 ^$ ^$ P7 l  X( `* r
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    ( _( F& ~- Q0 u! O. F1 q8 I
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    6 m7 z% b4 K" X0 k8 t! _

  388. + }+ y+ }3 ]4 A# ~+ ^/ ?
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK! _4 C; }! [" i% |; ^, {
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    5 I  j; v4 z: f2 ~" b' A" ?6 T$ ~
  391. - w7 `# p+ w2 H. J4 G; a0 w
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    0 [" g7 l3 x9 E0 q
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    9 y( N6 f% |2 o- G
  394. & e5 \9 k4 v, n
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK5 B6 P2 V4 |, ^  t$ r) A
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    # `7 Q8 W4 A3 |+ p
  397. ! z$ s; m* y. v. i6 C
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    ( N4 h8 H5 y  k& N9 G
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    6 K* s! S8 @# S; `& K: c1 l
  400. 5 K4 r& s0 u  p  \
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    % V6 }" l6 y3 }/ _0 n& d* C
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"5 w/ ^9 z6 R2 b; t: B* T$ W8 J. `7 Q

  403. 2 _4 p5 Y+ J2 \) L5 F
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK/ H% A: D+ S4 b7 g9 ]' ]' N# x/ `
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    6 h! _4 B, ^' S9 A
  406. 8 Z' r7 D, N: Y5 i; _
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK, _8 b8 Z5 l: k" g5 d& e2 F
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    / ?+ }1 m7 @  h: K$ a+ H& K6 Y0 O
  409. $ ]0 ~% |9 u$ Y* V' Q7 d
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ' e5 q# B: l9 }! Q; |' {( x' C
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"" {" s+ ?3 G0 g: i

  412. " C& ?9 G; U/ o  Q* o; J  d/ \& _
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    % a8 H! f$ c$ g$ u6 F: m
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    6 _+ s- h& I  ]* g
  415. - j" q( h) R# C# u7 W* \  s
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK* a; j% n3 E9 D- P8 b
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    % |, q7 n* f; c* Y8 j( s

  418. 0 A2 j# j5 b  T* ?
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    9 ^: P* O3 I8 z! a- \. l
  420. .ORG $D400
    6 ?3 h( v, [0 q+ _
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    0 h8 q/ L8 w" Z, u

  422. " B6 {6 p$ F8 m! \* e6 u
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK* r+ ]4 m: g' G
  424. .ORG $D8005 B% L* T2 s/ W4 c3 S& d
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
      V" T8 @7 o% q4 m

  426. + U" R0 Y  j' _0 C2 {
  427. .ENDIF
    ! `. O5 r; o  M
  428. 3 G) R, \* U2 I& a' }7 P- F
  429. ;CHR图形数据
    : ^0 k0 V' w  a5 l" a
  430. ;======================================================================
    6 r) T3 Q2 L4 Y# \) y% b1 r
  431. .BANK CHR_DATA_BANK
    8 J# U7 s& u- E" f* m: k5 I
  432. .INCBIN "chr_bank/chr_data.chr"+ Y$ h  P1 E8 }
  433. - U: R5 ~% q3 P8 @6 ]
  434. ;======================================================================3 x2 K- e) S3 N: F, Y& K" o
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    0 o4 A- B2 Z$ H9 Y6 ]4 @% D
  436. .ORG PROGRAM_ADDR
    7 O; k2 H! ^6 b8 m/ \

  437. : A( g6 ~+ r5 Z
  438. ;==================================================  a  z- E! _+ @% e( D
  439. NmiProcess
    2 P1 y" H& M' E. Z; @6 G, n- t
  440. & n$ E. x+ U$ Q! l8 m
  441. ;关闭屏幕控制
    3 f  x, H3 c  a  X1 h* K% J
  442. LDA #$00
    + V7 k1 c5 f! ]! C* o
  443. STA PPU_CTRL* D1 f7 e0 T/ u9 o

  444.   p: K9 w( d  f! [) }
  445. ;没播放音乐就不需要触发IRQ
    0 U+ t/ _  S9 Z/ p. j  H6 X
  446. LDA <Music_Stop_State0 ]. n, k3 r9 M& R# p
  447. BNE NmiNormal
    4 O4 A# f3 U2 u2 d/ q9 N
  448. ! N% t7 K' T- G4 E
  449. ;重置IRQ索引
    % Y$ ?! m/ Z) C$ P! [) J* c  E
  450. LDA #$003 H8 n  x/ y# x, a. I5 c" N
  451. STA <IRQ_Process_Index5 [/ P! a  r4 w* e

  452. # q  ^! {: ^; i
  453. ;时间秒数为空则跳过3 P( r% n* s3 M- @4 E
  454. LDA <Time_H7 W; Q$ \7 z& b
  455. ORA <Time_M4 p4 {5 B1 l5 j+ W3 [
  456. ORA <Time_S" ^7 k# J& W; C- a1 i7 G" F
  457. BEQ EnableFirstIrq
    ! j3 r% L; z; {/ }5 A
  458.   T( f% _* p2 x# Q
  459. INC <Scroll_H3 i, u; L: d, r0 v
  460. 5 m4 ?& S0 [4 l( {) [$ K
  461. EnableFirstIrq ) r6 P5 t( f: A  _* I& M
  462. ;80条扫描线后触发IRQ
    3 [; I4 [; k. E8 I' Z
  463. LDA #IRQ_SCANLINE
    1 r4 ?, c/ l: e: u: r) C4 M
  464. STA MMC3_IRQ_LATCH* J  T, i) a1 q' {% w5 i/ G
  465. STA MMC3_IRQ_RELOAD+ L" g2 u( o3 k# v4 z4 Q- L
  466. STA MMC3_IRQ_ENABLE
    2 Q1 T  Y: q4 R5 P! W$ f' X7 V
  467. CLI
    / `$ D& J3 S, y& A6 U& i

  468. 0 h" E. F1 n& Z0 A9 i; ?" L
  469. NmiNormal
    ( ?( ?  K, j6 M

  470. , u0 }6 x4 P. e, U+ Y# \: w& |
  471. ;处理PPU图像
    / y. G6 K1 l& K! M; T0 f8 P' B
  472. JSR PPU_Proc
    & v/ @4 V. L- A2 r* P3 ~  x4 o" T

  473. ) m8 o6 T  W$ G. p
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)$ K1 z* C2 ^! i5 r5 i
  475. LDA PPU_STATUS# e3 X7 }0 i. R- t) a2 T3 M
  476. ;LDA #$00: K. P/ ~8 O( _. {# {8 {) C/ }
  477. ;STA PPU_OAM_ADDR
    ; X9 X) R1 f) s4 ]3 ?5 i
  478. LDA #OAM_TEMP_ADDR / $0100
    # D* a6 b6 }+ ~' t. e1 c: `0 V
  479. STA OAM_DMA8 F/ j, B* S) y6 s" g' q: N5 a
  480.   d- _3 D/ E. g$ N, n- n; I' l9 V
  481. ;启用NMI中断
    6 Z2 |5 |# P( d: M
  482. LDA Screen_Ctrl
    - S& F( ^$ }" ?; q0 q+ w9 U
  483. STA PPU_CTRL; n- Z; m0 }. B" m$ \# M' d
  484. ; \: m3 p3 m9 ?4 Y4 S
  485. LDA <Text_Disable_Flag
    9 {* p' Q- W' B' {. m
  486. AND #TEXT_DISABLE_RAM
    ) a/ b7 v+ e3 f1 _! T
  487. BNE Nmi_Sound_Play& ~5 s% v9 y3 V# J; O0 w6 X
  488. " F) I% e' c; z
  489. ;处理手柄输入
    ; T" `$ |6 B4 J& K  J5 E5 W
  490. JSR Key_Proc7 S$ d) M: c( S$ W8 ?1 I1 [

  491. ' Q+ P, P+ @6 n/ r  Q
  492. ;切换音乐(手柄触发)
    ; ?+ [4 P: z: M: M
  493. LDA <Time_Wait_Cnt& K" O6 w* V, W
  494. BNE Nmi_Cursor_Arrow
    4 B0 w% n# T2 C  q- Q6 j
  495. JSR Change_Select_Item
    ) d, S" {/ z, v, H6 O- m
  496. ; k0 R* g3 I. Y
  497. Nmi_Cursor_Arrow
    3 d2 V! U$ j0 Y# M, ?  o
  498. : o3 N( S  {( e  m( t9 W
  499. ;处理光标箭头
    " i6 k9 T% F2 g9 P3 N1 `* e3 ~7 k% w4 D
  500. JSR Show_Arrow
    ; n) G( ]& }7 C; [
  501. 6 H8 n0 s  b( m# a4 L1 l+ c4 V& j
  502. ;更新调色板& b' w) P& x9 v* G; u
  503. JSR Update_Palette_Data; f$ v1 c, ]1 _( w* M6 t$ o

  504. * U* F  _2 N4 ~) Z
  505. ;显示时间(缓冲)- H7 {9 _# S8 L/ [4 Y" J
  506. JSR Time_Show
    ) P' n8 E" ^7 C! A

  507. , I5 q3 e$ }4 d: o/ r* k  i
  508. ;音乐显示(缓冲)
    ' |$ A5 x5 D/ H# d
  509. .IF SOUND_BAR_SHOW_ENABLE9 k: i1 M% M* H9 f8 X1 \1 T
  510. JSR Music_Vision# E0 C" I; r" |) i6 _2 z
  511. .ENDIF
    ) r3 _7 h6 c9 u2 M% ^
  512. ) T  }9 y8 z3 f; b, A! U& v
  513. Nmi_Sound_Play
    ) H5 z; M2 J9 a) J, f5 ^3 r4 V
  514. ;播放声音; d( |. D  U: D8 Z
  515. LDA <Music_Stop_State
    ) W8 v: f0 @, l
  516. BNE Nmi_Time_Wait_Set5 l* n1 i7 }7 r0 v6 x
  517. JSR Sound_Play_Proc% Q2 Q6 E+ S+ M8 ~- a; A0 a- ^

  518. ; l+ V/ I% F, Z8 H( V
  519. ;播放计时
    0 h8 g& \$ G: A# b$ e. t, W! @
  520. JSR Time_Count, R' y' X' _- E( S* w2 A- S

  521. # K9 H8 E- S: |% g9 r& U
  522. Nmi_Time_Wait_Set
    : n8 }% W% o; p& h9 L" r1 r8 f
  523. LDA <Time_Wait_Cnt
    6 }, N3 G5 L  U& z  E: ?
  524. BEQ NmiNormalProcessEnd
    . w/ k0 }; N# K
  525. DEC <Time_Wait_Cnt
    0 b- N  J. U) G3 z
  526. NmiNormalProcessEnd
    * I/ O6 I2 c$ k+ s+ ?! I" s+ g

  527. 1 U; `. i! F1 A8 T; d8 x* A
  528. INC <Nmi_Time_Count
    $ W$ {# ^* J2 [) m# {
  529. ! O( V; h5 V( \$ g1 n. w" p
  530. RTS
    # _6 f+ M) `6 p- D0 @. b* i
  531. & l6 ~, ?  D$ e' O8 ~: B
  532. ;==================================================% k% P4 C) _4 l/ Y! g
  533. Init_MMC3; z8 l- H- R; U5 T
  534. ;==============================
    * V8 E! v* f: e5 J
  535. ;禁用IRQ; ]* C& E4 C3 F/ k
  536. STA MMC3_IRQ_DISABLE
    ; ?/ K: `1 _) K* x
  537. $ w3 G  l3 N8 v" I. d6 g$ ~
  538. ;水平镜像
    0 |& R: A, }  ?: x% U0 |! O1 T
  539. LDA #$01
    # a1 P5 J2 ?7 k4 G
  540. STA MMC3_MIRRORING
    * E8 L  k! K3 E  W. h
  541. 9 |, F- G) `3 V
  542. ;初始化图形bank6 u3 K/ S  v8 `, x
  543. JSR Init_MMC3_Chr_Bank
    0 S4 }7 H! ?1 [: Q7 V

  544. & t6 Y' V. v2 b6 E& n( J
  545. RTS
    0 n3 b- G7 S# j. G
  546. ;==================================================
    ( i; n4 w. g! a" o+ ]
  547. ProgramBegin;主程序/ Y8 ^, H$ T: \: M
  548. LDA #$00
    / `5 ~' u' B% d1 }1 w0 g/ W
  549. STA PPU_CTRL
    9 C6 x5 t. `5 j) b$ k+ l
  550. LDA #$00* J) K4 O0 d% M0 A- h  C: b
  551. STA PPU_STATUS
    / F' D; D1 `/ @* W1 w7 N3 Z
  552. STA PPU_MASK! R! K" Y4 j- |! }* `
  553. STA JOY2_FRAME
    : k' i5 u, q, [$ ]
  554. - v6 g  D- Y1 s1 O, _  i4 `! J+ {  F
  555. STA PPU_SCROLL9 n# n7 E' R+ e1 T
  556. STA PPU_SCROLL
    ( ]9 T; R  A3 K0 H5 l

  557. * R2 `  g3 I* E
  558. ;==================================================3 U7 p6 o" L. B2 T, t5 }. Y
  559. LDX #$FF$ X4 Q/ w* ^* B  }* l  l& A
  560. TXS- f6 \8 ~0 E) y6 b% K  B
  561. 3 R0 p, a: q2 c: S
  562. JSR Init_MMC3' y4 y% Y5 k/ W8 K5 n' C, l
  563. ) W8 A6 p# n% V/ p+ E
  564. LDX #$02
    ! Y( \& h0 E8 s2 q$ G
  565. Check1/ _: s: P+ [/ u- Q$ S* V
  566. BIT PPU_STATUS
    + `3 y/ D9 Y# t' r9 N" E' ~8 c
  567. BPL Check10 Q+ C9 _* L" Q( _0 b9 n7 v8 ~
  568. Check29 ^" c7 ?: `# D( t
  569. BIT PPU_STATUS: _2 I! P" @* j) N6 X! Z$ ?% q- @" j
  570. BMI Check2, R4 l0 E; Z' l" P- S0 ~

  571. % T/ R+ S( B! _" m! @
  572. LDA #$0F( f% d: ?8 T: |. Y7 ~" n" e, `
  573. STA APU_STATUS
    3 w3 ]: B8 @( V; D+ h
  574. LDA #$C0: c/ h2 v7 w! |4 ]6 t+ |
  575. STA JOY2_FRAME. g- a6 G0 a- E: B7 n2 @
  576. ) q3 B8 q# \9 Y6 h8 `
  577. LDA PPU_STATUS
    8 u8 x5 H. _8 r* V
  578. LDA #$10
    . z* Z% k0 Z5 B; \/ }
  579. TAX7 J5 R  z" R- ?, O: ?% W/ Q$ o
  580. Check37 O/ ?& {) q3 S
  581. STA PPU_ADDRESS
    & Y; ^1 X, G$ Y' a
  582. STA PPU_ADDRESS4 n1 P" p4 H5 o) J
  583. EOR #$00$ [6 k: ]& b" a; {8 J
  584. DEX" ]" @! @6 x# X1 t
  585. BNE Check3
    6 C& d; f5 K$ p  d' Q  e
  586. ;==============================# N8 \7 d8 `$ U; ]
  587. ;调色板清空6 ~& L9 {$ J' K3 u; J6 s3 E
  588. LDA PPU_STATUS8 R1 s0 x; n6 o6 l- p( q
  589. LDA #$3F2 T+ b& ]' Y2 I. E1 }* c5 O
  590. STA PPU_ADDRESS. p  G! `% Q- I& O2 h% j
  591. LDA #$00
    5 ]  a, s" H& ]8 `& L
  592. STA PPU_ADDRESS5 }7 N9 Z5 T  Y) z
  593. LDA #$0F
    : n  U* t( ?- ]& f* h. G2 X
  594. Palette_Clear8 W/ l) u% q' I3 d
  595. STA PPU_DATA
    # @# H3 G4 ]3 w* ?* v
  596. INX
    / @' a; f# x! Y& G  h
  597. CPX #$20
    & p- y9 S' r3 \; j
  598. BCC Palette_Clear% F& w* R- J1 w9 `! |
  599. LDA #$00$ X+ y; \3 F  K8 a' P0 L
  600. STA APU_STATUS8 @" u  Z3 q( G# k; x& t7 R

  601. + T9 o4 @& B  r0 M; y$ e! R& d! B; F
  602. ;==============================
    0 ?  Z1 H, q. c) e) ^
  603. ;RAM初始化) J6 m* F5 y) n: c1 d' }' \- D$ v2 ?
  604. RAM_Clear_All
    6 G8 ]% a6 L2 I- _; d4 `& L
  605. LDY #$00
    9 L1 ~5 q, D  y/ Y+ W
  606. LDX #$08
    4 C' J1 D# E7 _8 C
  607. LDA #$00
    * p/ s2 f. t+ I2 G: s0 F
  608. STA <$00# S5 Q) {% n4 Y: N
  609. STA <$01
    7 g8 F" _. i% i
  610. RAM_Clear_All_Start' e: G2 ^) V) f/ s1 Q, O
  611. STA [$00],Y
    * u: V: l6 m# j4 w  c# ~5 R
  612. INY
    - R; k0 d5 K2 ?" ?2 s% O
  613. BNE RAM_Clear_All_Start
    7 Z) j. v* g7 Y  `( W- s" H0 ?
  614. INC <$01
    ' F+ z/ Y  z( t! T+ ~  a
  615. DEX# ]9 L* h2 S" O2 k1 j' S
  616. BNE RAM_Clear_All_Start: i" D% }" g1 L; j7 S0 b
  617. " R4 Z7 U: M7 R% }1 H# v
  618. JSR VramClear
    ! V1 N. `. a9 U0 S' E' D" K) R
  619. JSR VramInit
    * H9 e0 X! Q# ^8 y# u
  620. JSR OAM_Ram_Init
    4 P3 ~' m8 K- v' j0 {: h
  621. JSR Init_Palette_Addr! f' t( }; r) w3 Y

  622. % s2 j; u: A! u8 ^8 e/ B
  623. LDA #$FF
    0 Z! ~+ G! k4 q3 H
  624. STA Use_Ram_End; M+ f9 n: a& ]0 B
  625. ;==============================# p; y3 Y7 ~  t
  626. ;初始化背景调色板
    1 a5 M! O" w/ O! j2 e- g
  627. JSR Set_Palette_Color* k% s) y/ h" I4 i7 m! h; M, H; c: m/ o
  628. JSR Set_NameTable_Attributes( o" O5 F, }% g$ K5 T% w
  629. % ~1 r% L9 u7 ~2 f
  630. LDA #$00
    . W- I) L2 @9 ~5 ~! }
  631. STA PPU_OAM_ADDR7 q/ s2 e  c& I# W1 b& C( \
  632. LDA #OAM_TEMP_ADDR / $01007 [/ p; h1 h( W& A4 \
  633. STA OAM_DMA8 c& q5 N9 e' Z; n/ k, m

  634. ! ?+ C" {: K+ o
  635. JSR Sound_Reset_Proc8 d' n) f% l: r, W$ T3 m
  636. JSR Set_Sound_Total
    " F# I2 o+ C) T

  637. 4 v$ W3 X* J4 n* Y! S
  638. Init_Start_Music% ]6 C% |  Z" c' i
  639. LDX #$00
    ; a  B& C2 }" B
  640. Init_Start_Music_Write) Y* k( K# z3 b+ o" k
  641. LDA Sound_Start_Port,X
    . p* t( S0 ?* Q# T
  642. STA <Music_Cur,X, |) B1 {/ u; q+ U& y2 U* B' u: Y
  643. INX
    ; Y, [+ O! \- j; `2 ?9 G
  644. CPX #ITEM_MAX_SIZE1 a' C  I8 S+ b
  645. BCC Init_Start_Music_Write/ {3 o7 y! c  u5 n

  646. ! B. p9 X4 y2 {. A9 [  y0 O
  647. JSR Show_Music_Text
    ; }/ Y. [2 @; `/ i' `" L

  648. : ]% l3 J& q+ f, e
  649. .IF SOUND_BAR_SHOW_ENABLE
    # K8 |& A  R5 _+ K
  650. JSR Sound_Bar_Text_Set
    ! o7 N4 _: G4 |; \5 v, V2 g! j: u# O
  651. .ENDIF9 R: O' s8 A- K

  652. % A9 U' G0 w7 L/ L7 o/ u
  653. .IF Track_Name_Pos. Z  y. Q9 F4 y  n1 @
  654. JSR Show_Track_Info# }, t' w( W' B; V' b. K- O
  655. .ENDIF. w- d/ e$ @: h
  656. 5 a8 g  E. H$ Q* M- P+ ~: ]7 t% ?1 N8 k
  657. JSR PPU_Proc
    * Q, [8 X- p+ w, a

  658. . _# \+ ]& ^" ^( k' R6 ~4 n
  659. ;==================================================7 R. {' \3 [6 k& R; P# a& S' i' g
  660. ;音乐bank初始化
    " j9 t$ t; P9 g$ ^9 u& v- |$ K
  661. JSR Init_Sound_Bank* D) H) }6 u; ~2 R0 x- _! ^

  662. ) E) [' Y. g' p( Y$ ^' W
  663. JSR Music_Show& r0 R2 U4 |- [4 w
  664. JSR Time_Show
    8 Q7 y( [, b2 A) G
  665. JSR Music_State_Show5 Y' q. H0 f( A6 H8 ?
  666. JSR Time_Delay  d2 x0 U! w2 F; X# a
  667. - ^4 ?% u3 m5 i, g4 X
  668. LDA #$01( S7 F$ V9 \7 |
  669. STA <Music_Stop_State
    : b  |6 Q; ]: ~  L* m
  670. 9 c3 u" Z% e& p& \
  671. LDA #$88
    6 ~% D( q/ \) q2 X
  672. STA Screen_Ctrl
    / f- b$ X' Q, b
  673. STA PPU_CTRL9 V5 ], S" F5 J2 B/ P

  674. 3 I+ m* x- E9 b/ P: j' `3 d5 l
  675. JSR Show_Page_Text
    9 M/ U& Z* V! \: B* l; L

  676. ; }% l- k' Z4 G. R6 Z# k! Y
  677. LDA #$10
    , X! J; B. M. B( h; ~' L4 y9 }; ~
  678. STA <Time_Wait_Cnt
    ' M+ z+ ]3 R' g% T7 v- O
  679. ' K$ o7 p! J+ o9 w, `* ]. h
  680. Wait_Time_Over
    ; Y; W' |) m  T% I
  681. LDA <Time_Wait_Cnt8 \" Z8 K* F) D3 G$ }
  682. BNE Wait_Time_Over. j7 U9 V4 s; g4 u! L0 `3 T

  683. * f( d. ?' @) y  A6 F+ ]
  684. JSR Show_Arrow) I/ \" z' }) X$ z# k$ A
  685. LDA #OAM_TEMP_ADDR / $01002 b5 R& K% e: X/ _
  686. STA OAM_DMA
    ; V6 s6 U1 x  C' {, F) p: a

  687. & p7 r& Q+ F' l1 Z! w1 O& v; `, k1 R
  688. LDA #$1E
    2 l& s+ B8 U  F$ [3 D# W" l# `
  689. STA Screen_State7 Q& u$ L0 d- G* n$ o4 M  q/ B4 t
  690. 2 G0 W* i% i! D2 T" [) z' k& v) ]6 p
  691. LDX <Music_Item_Cur
    3 m9 d( c. x3 ^1 D! K" j* m
  692. LDA <Music_Cur,X
    + {; H& S) E3 M. {2 z, u
  693. JSR Sound_Init_Proc
    & |$ l4 J* O! \7 |3 q0 M5 I+ |
  694. ; x3 b. F( V( U/ \6 s6 H
  695. CLI4 U. V1 X: S* \# g5 S
  696. JMP MainLoop8 m* y7 i5 \0 B" E9 V
  697. 6 A" Y( o' ?6 p8 k6 ^4 {; M# T/ K' s+ Y/ m
  698. ;==============================2 k/ m5 r- e/ }5 X3 y
  699. Time_Delay;延时等待
    * u- i& s+ X( u
  700. LDA PPU_STATUS
    ! M& I& ?/ ~" E; L8 h: h
  701. BPL Time_Delay
    ; W3 O$ ~& K* H9 D
  702. RTS' m- T8 F8 p7 P2 U- m# S

  703. * i; _1 B# o6 T3 |6 H' p; F2 U  j& d
  704. ;==============================
    - @3 K3 e2 P( K
  705. OAM_Ram_Init;初始化精灵内存
    4 ~9 T* ]$ C+ E2 K/ E2 y8 S& d  y
  706. LDX #$00
    . d: c8 G1 U7 f4 g, u
  707. OAM_Ram_Init_Write
    0 d- V% D7 v1 Z0 s- S, ?
  708. LDA #$F8
    7 J+ T& d: B) p
  709. STA OAM_TEMP_ADDR,X0 g( s& p) t, p9 F
  710. INX3 L8 o* B1 |$ C* |# R( Y! Z7 A
  711. LDA #$F8
    ( P' \0 m  `1 x' _  U& u6 W3 C7 a
  712. STA OAM_TEMP_ADDR,X
    ; @% ^# {+ [, k/ A
  713. INX" Z6 a) @1 o9 V7 z
  714. LDA #$004 E6 R* b9 D1 }
  715. STA OAM_TEMP_ADDR,X" ?8 F9 F3 J* z. i$ |- w) Q$ `
  716. INX2 g6 g9 w& j; B6 _  a
  717. LDA #$F8. ^3 s2 ]0 }) i; r; W
  718. STA OAM_TEMP_ADDR,X
    ( }& O5 z- Z8 Q1 j  S7 R8 N
  719. INX
    / }- W2 V9 r+ {1 r3 p! ~6 [
  720. BNE OAM_Ram_Init_Write5 I! c1 T6 v; u; q
  721. RTS# F- j; ^9 l) c: I' ~3 D/ N
  722. ( }6 [5 o: F: l3 ]& }. X
  723. ;==============================
    / j7 y3 b! ]' o! x3 b0 v
  724. VramClear;初始化图形内存. B2 s( K8 ^5 G. w8 P
  725. LDA #$208 @/ K: _/ U. M
  726. STA PPU_ADDRESS; C- h! ~8 u) K
  727. LDA #$00+ W8 {  A$ F5 E
  728. STA PPU_ADDRESS' x* x7 S5 c) G7 l! q2 q7 P
  729. LDA #$00. K7 p" x. }# G, V* t1 o
  730. LDY #$00
      U" o9 f# h" p$ D" W
  731. LDX #$10$ Z& k0 Q) p8 A+ x% \$ C
  732. VramClearWrite
    - v" C: j7 F: r  K% _# R
  733. STA PPU_DATA( V% ~- L' Z  S( z/ \( U& K+ ~  [, T9 y
  734. INY
    & A! @+ g  }. c  y1 }" a5 w
  735. BNE VramClearWrite! p* l5 y4 C7 M, H1 m# p: C
  736. DEX
    ( T& t! c! \% x
  737. BNE VramClearWrite3 ~7 x- B6 W( i: J; P, \
  738. RTS
    1 e1 M6 P1 q# [; r1 X
  739. 8 i( k. `  m; r
  740. ;==================================================
    ) V& [8 e6 D$ u* P- q5 e
  741. ;设置MMC3图像bank
    8 v5 ?" Q8 t- Y! }
  742. Init_MMC3_Chr_Bank5 D- B1 S5 l2 o
  743. LDX #$050 _  h' Q4 ~* |' E; [, y
  744. Init_MMC3_Chr_Bank_Write6 d" i6 q. v( L+ V  M/ g. \
  745. STX MMC3_BANK_CTRL5 U( b8 ?# z, z1 n$ i; c5 K5 w
  746. LDA MMC3_Chr_Bank_Data,X% m1 {" P$ P* {9 ~: L' g9 s
  747. STA MMC3_BANK_DATA
    2 S/ Y0 z4 F, Y* _- C6 _) V
  748. DEX: T% {* s% P5 g: [) L
  749. BPL Init_MMC3_Chr_Bank_Write; Q3 k9 i0 u. a9 D& s( T" {
  750. RTS; B1 E2 \! e' l- L- r1 T7 H
  751. ;--------------------------------------------------3 p6 x- r1 w0 y# }7 Q  [, i# R7 X
  752. MMC3_Chr_Bank_Data
      T2 e* b5 U& t9 H1 g
  753. .DB $00,$02,$04,$05,$06,$07
    % H+ O5 R* Y  o1 z& x1 W

  754. & X. T" l9 G3 B6 A
  755. ;==============================  y9 }( J8 m9 A
  756. VramInit;初始化图形内存
    0 `7 v. U/ h" o4 [  n
  757. .IF CHR_RAM_ENABLE/ x" h# X  \' ^2 p6 M
  758. LDA #CHR_DATA_BANK% T. E2 p; B8 l! G  X+ @
  759. JSR Switch_Bank_A0005 R$ H; h/ U. n# V+ N- _" L
  760. LDA #LOW(CHR_DATA_ADDR)) V3 [7 f) P( O$ Y) I" @2 O
  761. STA <Data_L
    & c# m' z! _/ n
  762. LDA #HIGH(CHR_DATA_ADDR)
    2 R  }. T$ J3 e- Y; o7 l9 E
  763. STA <Data_H7 j; w& s$ r6 M5 b- r
  764. LDY #$00
    1 r+ T6 |$ w; c( z& P
  765. LDX #$20
    2 }" K# j* A8 c" x$ t3 V
  766. LDA #$00
    & P) \& G: i& }8 z: ?# f7 }
  767. STA PPU_ADDRESS- K. X  }% v" I# [0 f* q
  768. STA PPU_ADDRESS
    7 t5 H2 r$ s! c5 s3 E6 f* t* |0 j
  769. VramInitWrite( h$ a/ r/ w! W6 u
  770. LDA [Data_L],Y
    4 ^* f. v" M9 E4 K
  771. STA PPU_DATA
    2 F4 e3 S, c8 C* d& z) m$ n# B* [
  772. INY
    + f1 B( r3 ]! I- T9 X8 |) X' B0 n
  773. BNE VramInitWrite9 T/ Y+ |0 P' @# p0 R) `: i
  774. INC <Data_H/ Q7 M) Y! ]  d# A
  775. DEX. ^- Q& @9 V! u% t7 }
  776. BNE VramInitWrite
    . W& ~0 ?( T% d2 }0 ]
  777. .ENDIF! A6 U4 B2 i' V5 b. f
  778. RTS
    + A$ U$ j" v2 k0 g! J" I

  779. " ^$ o5 \0 G, a% D+ W# `
  780. ;==============================' k+ ]; `4 J. @
  781. ;音乐切换6 Z- h( f! y6 [& M0 y) u
  782. Music_Play_Change; k5 o: w# o% d2 z3 W1 ?1 M# E# u( [' E
  783. LDA <Key_Once& F. T5 ^8 T; ?3 C
  784. AND #$FF
    * B6 r! i/ C8 {, R6 q$ K8 Y
  785. BEQ Music_Play_Change_Check- f+ \, \% s7 C" C& _3 X' h

  786. $ l" F- o# A) ]0 ^- S
  787. ;禁用音乐条刷新
    - b; U' Q5 W2 I4 U+ m
  788. LDA <Text_Disable_Flag
    5 y) G: y- H$ b
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME5 @# Q( K/ Z2 I: y$ g
  790. STA <Text_Disable_Flag; g5 g8 H' z6 R' z+ M# S& W

  791.   D7 b! k9 s2 Z$ K. ^- Q
  792. Music_Play_Change_Check
    3 l3 G3 X; d+ R) Z% R1 F1 Q: @  ^
  793. Music_arrow
    ! f! ~( Z5 o) p# L& t
  794. LDA <Key_Once
    # B0 M  L: p/ U* X/ v/ j$ V' d
  795. AND #$0F: y6 z% q1 n* z6 a' A! x
  796. BEQ Music_Play_Change_End
    0 w% ^% v6 Q* S/ W& [9 `
  797. JSR Music_Track_Change7 M/ x) C" U5 L7 W5 t# e  y0 N
  798. JSR Sound_Reset_Proc4 f0 B: ~, b( u0 m
  799. JSR Music_Show' h* l$ }3 E9 ~0 E" Z2 P
  800. Music_Play_Change_End$ [! u2 g& p) O% F
  801. RTS: ~5 F6 P! i9 g% _% K

  802. 4 s" M6 f: I2 P1 {  o
  803. ;==============================% ^. ?5 r5 K& A% g% y0 v' i
  804. ;音乐曲目切换
    : z4 r2 B) f  |
  805. Music_Track_Change2 L8 j6 N. ~. s% t3 }- Z
  806. LDX <Music_Item_Cur
    / D0 A) S2 S' ?! F0 D0 Z# a7 j' s, w5 O, x
  807. LDA <Music_Cur,X
    6 s# N5 R" a. @; v7 o$ }
  808. STA <Music_Last5 G; X/ y7 w7 `; F0 z# Q9 S; ]
  809. Music_Decrease
    # _1 ?& ^; ~" i. n9 s! O
  810. LDA <Key_Once
      P) x7 d% O: ]9 ?1 n
  811. AND #$42) M$ L: `( M8 i# L8 j; C6 e9 D
  812. BEQ Music_Increase$ u- o8 n! O2 `! U( X. q( @4 k. P
  813. LDA <Music_Cur,X
    & r( y, U: {+ n  G, K! F
  814. BEQ Music_Increase
    0 c( Y! l$ j4 Y% M# T# a
  815. DEC <Music_Cur,X* Q" H1 M! H6 \$ F. _  Q. S$ z
  816. Music_Increase
    # |" l; l" D- T/ N9 l) E
  817. LDA <Key_Once
    . \4 p) F, E! I
  818. AND #$81+ w( f2 o# ]! J  x  o$ G
  819. BEQ Music_Decrease_10
    0 Y1 [' g) M$ L8 ~
  820. JSR Set_Sound_Total
    8 _& K9 o9 F" O; b7 c" @
  821. LDA <Music_Cur,X& ~5 s: ~/ a  n
  822. CMP Music_Total
    ) g% C) [8 ?+ w" k+ _5 o( p
  823. BCS * + 4% r2 {2 i. L. Q: J4 Z, z4 L# C0 ~
  824. INC <Music_Cur,X9 Q1 D3 C# M( J) `4 o) b2 C
  825. Music_Decrease_10
    * z: E) F* M* O# P, R
  826. LDA <Key_Once
    & Z2 k9 ?. R7 o- Z8 n
  827. CMP #$04
    ! a; O  F# x; f4 g% H9 M
  828. BNE Music_Increase_10( k' z( R! W; Z( N! J
  829. LDA <Music_Cur,X: H! D6 X7 s) h; o( t+ ?
  830. CMP #101 `5 f; a& r. t& l! E+ V
  831. BCC Music_Start_Song_Min: P- l/ u4 G$ H5 i( Q, \6 l7 J
  832. LDA <Music_Cur,X0 z/ W/ P' Q7 t1 p( m) ^( x3 D8 z
  833. SEC, ]3 Z3 ^8 F4 t4 O
  834. SBC #10
    # i: V1 \; s, E% \/ v2 b" E
  835. STA <Music_Cur,X
    5 ]  {7 N: p7 I
  836. LDA #$00
    $ ~' C" }" A' ]) F
  837. BEQ Music_Increase_10# q4 w7 d  J' F0 K
  838. Music_Start_Song_Min3 `" x8 P. ]& @4 S% Z- @, s( d; t
  839. LDA #$00
    5 o7 |" N) ]; L+ X/ K
  840. STA <Music_Cur,X
    ! F7 d; u  M) x5 r
  841. Music_Increase_105 {/ g. C5 W' m. z! J: c! a2 Q' @
  842. LDA <Key_Once
    & E6 j5 m+ ~+ M! _
  843. CMP #$08
      A9 C- r) \1 S1 n
  844. BNE Music_Track_Change_End
    + h; c5 R$ L% a0 q
  845. LDA <Music_Cur,X# Q4 @9 t" N! N3 V) D4 m; _
  846. CLC
    . ]/ ~: i2 K$ i2 M9 o+ O, C- M, k
  847. ADC #101 F$ m# a" {3 c/ C6 E( M7 Z
  848. CMP Music_Total
    ; R. o* N8 e& j) c5 H. }8 q) r+ a7 y
  849. BCS Music_Start_Song_Max
    . G; p$ o1 T1 e
  850. STA <Music_Cur,X7 N2 {1 Z, v  k9 ]" _% E: R
  851. LDA #004 D! Z; S- R- A/ ~1 l
  852. BEQ Music_Track_Change_End
    ; G5 [4 ^; M* `7 d5 |
  853. Music_Start_Song_Max# T- y8 a5 V8 |: Y: |
  854. LDA Music_Total7 w3 J% n) ~, N0 |; \
  855. STA <Music_Cur,X
    & T8 r7 a3 y+ q
  856. Music_Track_Change_End
    ) h) W2 K& u1 V  f* C' T* ~
  857. RTS
    ) s+ {) P7 S$ r; c5 F

  858. , m5 K4 w, ]3 B& n+ I
  859. ;==============================
    ' ?( I' h  k1 u: b* _9 N8 e
  860. ;按键处理
    ; Z% j/ O- s4 R* p3 h
  861. Key_Proc
    ' F& [: Y; v$ }# r" e, x
  862. JSR Key_Scan9 k  f3 r" H1 D' f$ G: W2 F
  863. LDA <Key_Keep
    ( N+ r$ e* B5 d
  864. STA <Key_Temp
    $ }1 ^9 A' W2 Z  X
  865. JSR Key_Scan
    ; g9 V6 q. N( V8 v
  866. LDA <Key_Keep' [( _. m/ ?+ X& \
  867. CMP <Key_Temp
    * D  s1 E+ Y% {. C" Q4 C- Z
  868. BEQ Key_Get_Once
    - _' b: N+ n( t; G9 N0 t
  869. LDA <Key_Kemp
    # Q8 m8 z1 L7 W3 n7 j
  870. STA <Key_Keep
    2 L5 Z. q2 e9 p# g9 }! H) Z- D
  871. Key_Get_Once$ x3 a+ P, m0 l& E$ j
  872. TAY
    & O, S8 K1 Y. i4 @+ S- W
  873. EOR Key_Kemp, X- z% Z5 z4 G: ?8 z
  874. AND <Key_Keep! ]4 a9 ^* U9 T7 a8 q
  875. STA <Key_Once8 b9 \$ T% x( s. }; t: I; n4 }8 Y
  876. STY <Key_Kemp, m: k3 F  i- ^9 y# y+ o6 `
  877. RTS: H$ n8 q+ ?. t- i# l/ g9 P1 t6 ?
  878. ;------------------------------
    . H! F3 z' o. o& O' Z" w
  879. ;按键扫描2 V8 ^" B$ P4 n/ k% }* s
  880. Key_Scan
    $ A. j5 g; M' }9 m' u  ^$ F) x: H; H
  881. LDX #$01
    4 P  C3 h, s3 ?4 L3 B3 T" ~
  882. STX JOY1_FRAME+ p! y. i6 g* `7 i) @. i8 _" {
  883. DEX
    * o! F* G" R: T; v( r
  884. STX JOY1_FRAME- T5 W* c9 P/ `
  885. LDX #$08
    + a/ {% |# r  U% X9 M/ ]6 @8 O
  886. Key_Value
    8 D5 T# \2 k$ ~& p5 u) W
  887. LDA JOY1_FRAME* d6 P. q* f  V) o7 A; `5 o
  888. STA <Key_Getv+ p: g  s7 d0 g+ H4 I/ m
  889. LSR A, P, X. {! o# t/ ?; P2 W
  890. ORA <Key_Getv
    # b& K) z. A0 P  g( k% |' m+ B6 c
  891. LSR A1 {( w2 I% D* W/ X  o' z) N- H
  892. ROL <Key_Keep
    : [) k3 j5 G# S* T6 @: S6 p3 j2 F( m5 {
  893. DEX
    8 Z7 \1 R. G/ f' ]/ n' e7 S2 }
  894. BNE Key_Value
    6 }4 f8 ~) W# P/ [, U- l
  895. RTS
    + y0 f' b0 R+ C7 |
  896. 9 Y" y* |9 b8 W" O+ E7 E* E
  897. ;==============================7 M1 {. ]) a5 E
  898. .IF SOUND_BAR_SHOW_ENABLE/ e; [4 C+ Y1 F" I9 K1 v, {. b+ `
  899. ;音乐条显示
    ) X( `0 S+ x; I2 V4 a! C* j
  900. Music_Vision
    1 E6 E5 C7 v% [( i
  901. LDA <Text_Disable_Flag) W* D# O! k7 I% g& G$ R3 O
  902. AND #TEXT_DISABLE_ITEM
    8 D1 y  W  d5 D6 x2 A
  903. BNE Music_Vision_End: s% C! i2 {" D: X6 K! y3 J( E) b- \4 ]
  904. AND #TEXT_DISABLE_BAR& n) L) D2 x% }' b
  905. BNE Music_Vision_Set
    9 Q) t8 Q- n6 U  X+ i6 G% v+ C
  906. LDX PPU_Cur2 A& m+ o" A$ Y% r. ~; w' U
  907. JSR Music_Animation, }6 W7 \. l( w
  908. STX PPU_Cur
    $ `: O5 ?0 _7 _1 Y
  909. Music_Vision_Set
    ! b6 z- x; u, ~' u
  910. LDA <Text_Disable_Flag
    / t* Y0 L( w* a. e4 z2 h- X' O
  911. AND #TEXT_DISABLE_BAR ^ $FF
    : X( R/ d& @/ m: m
  912. STA <Text_Disable_Flag  [* ?3 c4 ?& Y0 l1 j
  913. Music_Vision_End
    ( L8 r! a/ }0 m
  914. RTS
    5 W. \8 w, @! k* y
  915. ;------------------------------" Z4 [% E1 c1 W1 m7 Q3 u7 `
  916. ;音乐条显示处理
      z$ I6 u* W% d0 I
  917. Music_Animation
    - z) V. K" Q# g1 {) J% z" u. v
  918. LDA #PPU_MODE_CNT_LINE
    # E! q& l4 B  X, O
  919. STA PPU_Addr,X# P) }7 `8 M4 G
  920. INX
    % U" \4 W) _1 @+ V$ I( @8 |) F# ~
  921. LDA #HIGH(Sound_Bar_Pos)
    + P/ ~7 e& j+ D  V; n
  922. STA PPU_Addr,X6 ^4 m" l, v- c& t+ [
  923. INX
    ( \! Z: C, y% ^$ s. E
  924. LDA #LOW(Sound_Bar_Pos)8 n0 g2 Z& g8 v- Q
  925. STA PPU_Addr,X
    . m& F- F: S! k" R. u- p
  926. INX
    , U8 q' H' f5 `4 L- s+ X
  927. LDA #$08
    . t  W' X8 I& `. Z9 z- f% t0 W* w& B
  928. STA PPU_Addr,X/ y) ^, u! s( [% y! z* R
  929. INX. Z9 ?+ D1 g: c5 g. K
  930. LDA Sound_Bar
    7 A5 }" ^5 ^& k
  931. JSR Volume_Convert4 M( m2 S  C% o% C; Y
  932. & N. a6 ?' m8 s2 }3 s* V% I
  933. JSR Volume_Set_Cnt$ h+ @8 Z5 [5 _
  934. LDA Sound_Bar+$4" N0 S. @# \& y+ O/ k3 a+ s
  935. JSR Volume_Convert* l2 ]( P, q, _* x9 h

  936. 2 Y- x. [8 g* b
  937. JSR Volume_Set_Cnt" Q3 Y% M% m0 a, w: q/ E1 D9 j
  938. LDA Sound_Bar+$8
    , i- @( Y$ @* D* v, W/ {" a& u  Z/ X: u
  939. JSR Volume_Convert
    " f( j+ i. R% M, Y
  940. 2 E/ `/ U! X" `, G: o1 v. \8 w- Z% _
  941. JSR Volume_Set_Cnt/ i4 Q4 k8 e( r4 a8 a( `" z1 I
  942. LDA Sound_Bar+$C; D4 j: v/ l# \
  943. JSR Volume_Convert
    4 w; t1 r# B' Y6 P' }5 k1 Q
  944. ! r: F) ]+ d+ w! @4 W1 w9 A2 x
  945. JSR Volume_Set_Cnt
    - M# T) m5 D% A& e2 s
  946. - ?1 ^: H! o  A. r, E
  947. LDY #$10" J. ^8 U% H# P/ p6 N7 e  P& g- p
  948. LDA APU_STATUS' W! `4 y! g/ m0 B3 ^0 m
  949. AND #$10
    # A; V3 m+ O4 P$ V+ ^3 S4 i
  950. BNE Volume_Count
    ; i( W, C+ a, |" P1 @& T
  951. LDY #$00
    / g8 |- U- y1 S5 a
  952. BEQ Volume_Count
    . J, b" u2 g4 c1 p: c( P# i. V
  953. & q& A6 u0 ]# I4 Q# L! x2 N
  954. ;------------------------------
    & ]; C' e; s! T; l( a. v, K6 r
  955. ;音乐条处理0 U5 n3 g& Y8 m) ^/ O2 t
  956. Volume_Convert" Y, x9 n3 t$ t( Q/ }
  957. AND #$0F1 h# [9 j1 \! r+ o6 @
  958. TAY
    * z/ J1 ]4 [& R; a  \
  959. Volume_Count
    6 o8 C7 m* o2 r; z2 C! y9 G
  960. LDA #$08
    1 b2 f" m- `( B( r) f
  961. STA Sound_Bar_Cnt3 [2 M6 W# T# }- |( ~' W" I
  962. Volume_FILL
    ' m4 P# ?! x" S, T$ V
  963. DEY
    ) x4 u+ Q& x8 i; ^& P# p0 U
  964. BEQ Volume_Half6 @4 Q+ r7 \3 A/ P7 T* e0 t* u
  965. BMI Volume_Empty! ?. e1 \& Q% X# T1 W
  966. DEY
    8 x( k6 J/ O7 X4 N$ t) s% N1 t/ o
  967. Volume_Full
    0 _! f/ ]) G! W# A  Z. ^
  968. LDA #$16  [$ z/ X2 H4 e' d# w. T
  969. BNE Volume_PPU
    ; M5 f) C. ~6 {2 K5 R4 [2 J" ^; _
  970. Volume_Half
      O1 {, a' H) w. s5 [- _% [
  971. LDA #$152 H. m2 j  y8 _% w, `
  972. BNE Volume_PPU8 N; Z" e, S- G! l5 F
  973. Volume_Empty7 I% f5 f9 x' j% L$ \0 ~
  974. LDA #$14
    7 v2 R; ], ^4 [$ ^7 l
  975. Volume_PPU/ g% i5 u2 ?* T) L$ d
  976. STA PPU_Addr,X- t+ u: |& t' W3 E& u8 ]2 ^# m/ l" q
  977. INX
    4 v4 H7 s- R9 g2 l
  978. DEC Sound_Bar_Cnt
    - S1 [* {9 F( v5 h' S
  979. BNE Volume_FILL
    ' O0 E  v9 t* R7 ?; Y* ]
  980. RTS
    : ^2 a) q- y, T5 z' a2 \6 N' \
  981. , \: B3 s' w, p- w& d
  982. Volume_Set_Cnt
    1 U+ {; r9 _7 G2 ^( ?9 R
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    ' {; D' e' Y+ S7 Z
  984. STA PPU_Addr,X" K5 N2 }8 c: w
  985. INX, _, J) Y$ E' G* ~$ D$ E
  986. LDA #$082 n. T( s6 O8 c
  987. STA PPU_Addr,X3 G( e: U& Q% U8 y
  988. INX9 Z$ Z* m. |% S, s$ X/ T
  989. RTS
    6 |! t) U6 p: Z& ?- w! e
  990. - x9 P- _6 l: ^% ]& a3 t/ z
  991. .ENDIF
    9 f) X  U# b$ E+ k9 e
  992. , F! Q' x* o& i- X' ?
  993. ;==============================
    % \4 l1 n, S0 W* A! D
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    1 u+ u) U" n4 P: k- |7 Y  [
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    % ~$ X" G+ W- |% C
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    ' Y& Q3 h9 t3 W' ^5 x3 I& @
  997. ;------------------------------
    6 Y' R, b0 ]- {+ ?* c* j; E
  998. ;PPU处理
    # R; N1 ?3 {, ~5 q4 M
  999. PPU_Proc
    1 X* N' m& G7 [. }: G
  1000. LDX PPU_Cur: T# J$ N/ ?( Q8 V6 @
  1001. LDA #$002 R0 a$ `6 h- C5 O' d
  1002. STA PPU_Cur/ ^  `0 N& T' v! Z( J/ E$ v
  1003. STA PPU_Addr,X5 l6 W/ s+ [( u( t& m' J" a2 ~/ E
  1004. LDA PPU_Addr: d8 P# K9 L1 \$ f9 x( _; Q( i: y9 d
  1005. BNE PPU_Proc_Beg! R5 @6 }  t0 ^- _7 a
  1006. PPU_Proc_Ret7 T* ~( Z' P, E, V  t, V
  1007. RTS7 S) ?' P# ?8 n& u1 V
  1008. 0 g& y! B* a9 g3 T: H9 _" G
  1009. ;------------------------------
    2 J4 Q: g6 r+ t' |
  1010. PPU_Mode_Return_Cnt  ;转下行模式# W$ d) P! e0 T5 e8 o
  1011. INX
    ) c- `% @0 r, p9 Z9 G  K
  1012. LDA PPU_Addr_L
    ! [- Y8 O3 E) P# T1 |
  1013. CLC
    : y% f; {# m2 J1 q- x2 {) I0 z
  1014. ADC #$20# |+ J  J# ?4 o, q! X
  1015. STA PPU_Addr_L
    ) L8 f6 W% N( p5 D3 Z& [
  1016. BCC PPU_Mode_Return_Cnt_End
    5 w# m- d' }6 n' K
  1017. INC PPU_Addr_H- q! Q7 G/ K6 C  `. r
  1018. PPU_Mode_Return_Cnt_End
    % y9 g' x+ {' ?4 z. U8 j
  1019. LDA PPU_Addr_H
    0 ?) Z2 `9 O# @0 t. t1 K
  1020. STA PPU_ADDRESS
    ! a0 y4 T/ o# M' r/ R4 B5 n8 F
  1021. LDA PPU_Addr_L
    & S9 @2 a% B* e
  1022. STA PPU_ADDRESS6 @0 C7 g! T: K/ }6 K) L
  1023. LDA PPU_Addr,X! `6 u9 I# Z; v* q% c: f
  1024. TAY3 N4 @8 f( o) i6 Y4 h
  1025. PPU_Mode_Return_Cnt_Write8 M# _4 {4 P6 q4 z
  1026. INX* a3 j( Y( C; _  k
  1027. LDA PPU_Addr,X
    6 R. l7 c1 b, c+ ?9 i9 s
  1028. STA PPU_DATA
    & y. \' p+ t% E8 @  V
  1029. DEY
    2 @; m2 o$ h) @6 F; A. A
  1030. BNE PPU_Mode_Return_Cnt_Write
    5 q( y4 o: Y$ v' U9 a: a) P
  1031. JMP PPU_Proc_End, h) Z4 r& u8 b% f% e/ h
  1032. % r; [0 V- M1 k4 P9 b5 |
  1033. ;------------------------------/ K9 n' n9 N( a5 f& x0 z! |, i
  1034. PPU_Proc_Beg  ;处理开始- ?7 C0 \$ ?; o& k% _
  1035. LDX #$009 i' u0 ~4 k- W1 F" x! e
  1036. STX PPU_MASK
    8 _1 d; }7 ~, f& q
  1037. ;------------------------------; ]; l. I$ {) y
  1038. PPU_Mode_Select  ;模式选择
    8 p0 x$ O% {' l9 v
  1039. LDA PPU_Addr,X. Q1 _( ?/ }5 K1 R
  1040. CMP #PPU_MODE_CNT_CLEAR& d9 N. ?" I/ b# K+ k8 V+ O- G
  1041. BEQ PPU_Proc_Clear
    9 @. x; [( x- g# l- a
  1042. CMP #PPU_MODE_CNT_LINE, r' R) [* w8 ?2 G% U/ }# H5 [
  1043. BEQ PPU_Proc_Cnt_Line) I) G2 L, b" W" z. l- r
  1044. CMP #PPU_MODE_CNT_LINE_NEXT5 y( Y% r, h( p& B( @/ s9 t5 _
  1045. BEQ PPU_Mode_Return_Cnt
    , H  u: m9 x1 I6 C+ W& w1 h+ c
  1046. JMP PPU_Proc_End_Write
    # e4 _0 i" S" b
  1047. ;------------------------------% d* @! {% W9 h* b( P
  1048. PPU_Proc_End  ;单行写入结束0 }' [) R( \0 H/ ~' A( A4 Q8 {$ ^
  1049. INX2 I' E7 m% k4 I/ @% M
  1050. LDA PPU_Addr,X
    * M. V2 m+ p6 x' |+ W0 ^' C. K
  1051. BNE PPU_Mode_Select9 F& R9 q3 B8 }* Q& ]
  1052. STA PPU_Addr6 a% I7 Y% H+ ?) [
  1053. JSR Update_Palette_Color
    : h" T( p4 ?2 N- {8 T: p

  1054. 9 S) R" [8 e) G6 K9 G& W3 i) ~' c
  1055. PPU_Proc_End_Write
    2 U/ @/ [' Z* x6 i
  1056. LDA #$00
    & d5 D: [4 Y7 G, P3 B# r2 {
  1057. STA PPU_ADDRESS
    ! G- j# h+ v/ t+ h$ x+ K" O, [
  1058. STA PPU_ADDRESS9 m+ Q. Y, I! H: q3 D1 v
  1059. LDA <Text_Disable_Flag
    9 P9 J! i( e/ \) `' a) T  f
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    3 d; ^( Y+ T) @  R, m% v9 |6 P. R
  1061. STA <Text_Disable_Flag/ s; l2 @, O' y% j% n4 B; C+ l
  1062. LDA #Scroll_X
    5 K6 D2 n+ ~  l7 H
  1063. STA PPU_SCROLL
    1 p4 {. n- G7 ]' J( N: h8 b/ T; j
  1064. LDA #Scroll_Y
    7 k  M  k" z! s- f
  1065. STA PPU_SCROLL& g1 d5 u+ A# W3 P0 z/ l0 Q
  1066. LDA Screen_State7 |: I! i1 y  p. t- m' ]
  1067. STA PPU_MASK# r9 Q& g0 |) I- v6 T% X
  1068. RTS/ [% z1 ~, `+ W' f  L4 g& ^# z
  1069. 5 H8 M) T" s6 z3 b1 H/ g
  1070. PPU_Proc_Clear
    & \& m" I$ ^+ z" G* {; y$ j: Z
  1071. INX+ n( m4 T8 R) a1 O9 `; A8 M$ Q
  1072. LDA PPU_Addr,X) L+ h( {" h+ Y; i0 k2 g$ Z
  1073. STA PPU_ADDRESS
    ; p2 }' L2 T; [0 Z) W; ~
  1074. INX8 ?* E# f+ w( Y3 `: T
  1075. LDA PPU_Addr,X# L0 k, F  A1 X' O' Y2 j" e
  1076. STA PPU_ADDRESS
    . l! R& g1 g- v! ?
  1077. INX
    - \8 X- n& m7 H$ |$ f
  1078. LDY PPU_Addr,X
    : d9 p1 x2 U4 t
  1079. LDA #$00; [2 j! X- T7 s* g) H$ {* e; G
  1080. PPU_Proc_Clear_Write
    & K2 A8 F- B0 i  J) v
  1081. STA PPU_DATA
    - J: v* l/ x$ Z$ |! r
  1082. DEY
    ! v! o' I( q4 R; x" n& \
  1083. BNE PPU_Proc_Clear_Write
    ; p1 Y0 N4 u% Q+ L2 G
  1084. JMP PPU_Proc_End7 U, P7 Z0 C6 x- ?- l! u" }2 E* v3 ]

  1085. ( y9 }/ t* f* @+ f( }8 m
  1086. PPU_Proc_Cnt_Line
    ' C" d0 r2 o3 M2 g$ Y9 f# `; K5 T, D* V
  1087. INX/ \! ?: ]7 a0 C/ Z7 V# Q% v
  1088. LDA PPU_Addr,X
    / j2 X& z2 _0 O$ Z( {
  1089. STA PPU_Addr_H( t/ s0 Y& U, c2 s4 M  J6 G4 \
  1090. STA PPU_ADDRESS
    2 y, q8 K* t- _2 w! @9 p) x% c
  1091. INX8 f0 b# L& w+ q
  1092. LDA PPU_Addr,X/ Y- f) q' {* n' U* c9 {2 P
  1093. STA PPU_Addr_L$ k+ B" x- p7 a% v
  1094. STA PPU_ADDRESS& L; u$ J- k: z7 j5 W4 |
  1095. INX
    8 V3 w* J& H6 h1 d5 k* V4 O1 v
  1096. LDY PPU_Addr,X  _4 ~2 _: P  M/ \/ P8 m
  1097. PPU_Proc_Cnt_Line_Write% M: D7 j* V8 H1 j! t
  1098. INX7 X! z  H/ m. _$ ]/ Q
  1099. LDA PPU_Addr,X  @% ?/ Z2 a7 |- T
  1100. STA PPU_DATA
    5 Z, s) `# T8 K0 ~; P5 X6 R- Y
  1101. DEY
    ( Y3 L# z: P$ R# }
  1102. BNE PPU_Proc_Cnt_Line_Write
    ) J; e, S0 U: C% J& k
  1103. JMP PPU_Proc_End6 `+ i, J& I% s- A
  1104. 6 p9 t! [0 D: M$ \" Y$ u
  1105. ;==============================4 a& t+ c& h* t7 U
  1106. HEX_To_Dec;十六进制转十进制% M. h4 J" I8 ^& D
  1107. STA <HEX_Data
    % Z  {% ~& t# Q5 A: G
  1108. PHA
    7 O( U9 U* e8 E  ]
  1109. TXA
    " p/ i* _% l* L" |  ]3 z- D" l
  1110. PHA* w) U; |8 [& s. }
  1111. LDX #$00
    . A3 Z. @7 O7 d: P. _4 q! |) I
  1112. LDA #$00
    6 r3 w7 {; d9 E  ?/ b, R& {; v
  1113. HEX_Cln
    4 S2 a% ?* S0 X) e, }
  1114. STA <DEC_H,X
    7 U. _# P( v. N
  1115. INX
    # q, G* G! x! P
  1116. CPX #$03! k* X( t$ `* s( o7 w
  1117. BCC HEX_Cln
    7 n9 y; I" s+ i' z& v+ t
  1118. LDA <HEX_Data
    . l) u* B) k8 V/ a
  1119. ;------------------------------* n" {) S& j- j
  1120. HEX_100! T4 j; B+ I* H0 e2 p. i& p
  1121. CMP #100
    ; F1 q- Y2 V, b/ O0 c! n! D
  1122. BCC HEX_10. }; e! \1 }! I! R
  1123. SEC" K" s% c/ m9 M0 P. b. T. L
  1124. SBC #100
    1 C2 T& V* J: \7 N6 K4 i
  1125. INC <DEC_H
    & x9 ~9 H$ R8 A9 _* s  ]1 A$ M5 V
  1126. BNE HEX_1002 R+ Y6 n  |% h1 Q& _
  1127. ;------------------------------
    ) h3 z( |. a% e# `( O; S
  1128. HEX_10
    6 L! D) _# a  t4 N: u
  1129. CMP #101 ^2 q  L, Q$ T* E. L5 r3 w
  1130. BCC HEX_1+ ^5 @7 f+ ?( ]6 f) [
  1131. SEC9 ^, D2 ?8 U3 O+ b( B2 f4 F. l, ^
  1132. SBC #10* ^$ x7 C6 Q9 z/ F/ l! m  g$ |) m
  1133. INC <DEC_T
    # |: R. y7 O7 q& b8 k3 |0 S
  1134. BNE HEX_10. x+ X2 W& ^7 O5 }( z8 [  @9 r
  1135. ;------------------------------5 \* F4 ~6 A0 p6 b/ s
  1136. HEX_1
    ; T8 o9 b* p; E7 p5 \) g
  1137. STA <DEC_L
    : f9 B1 v( T- a
  1138. PLA
    ; ?2 P; W5 A/ G/ O8 U
  1139. TAX
    ! B. b, B* k4 K+ l: f: S) k- g
  1140. PLA
    / }9 u6 d8 p) `: ]5 e
  1141. RTS& Q8 D1 Z6 ]7 R  b! D$ Z+ ]
  1142. - W! \! Y# Y9 x
  1143. ;==============================: j4 C9 C5 c' o) T1 a
  1144. ;音乐曲目显示
    - s: ?/ j* R" T( N# j2 i
  1145. Music_Show
    5 y% I5 n% t" p0 C
  1146. LDX <Music_Item_Cur
    5 z6 k$ u8 r' W7 m, T
  1147. LDA <Music_Cur,X4 K; u6 N* {# K& C8 m- s
  1148. CLC0 y4 K8 \, `1 `) a
  1149. ADC #$01
    / T4 e; P; g# }0 V
  1150. JSR HEX_To_Dec  L) `  K% G$ ~* M
  1151. LDX PPU_Cur+ \8 l8 {  v) @. ~2 b" @0 d3 Q: R
  1152. LDA #PPU_MODE_CNT_LINE# ?: j$ K% e. D9 e8 T( K
  1153. STA PPU_Addr,X" R& Q1 D( l; c8 F; p: G
  1154. INX( C+ L& T5 N7 p% a: K8 n! j* e+ G
  1155. LDA #HIGH(Play_Index_Pos)
    , C& |) N! F2 w8 j3 ~2 ?
  1156. STA PPU_Addr,X
    $ ^# q1 V: A, Y; a
  1157. INX, D0 D0 t( a- H
  1158. LDA #LOW(Play_Index_Pos)
    1 D: T5 x) C. [) o) l- M
  1159. STA PPU_Addr,X
    ) a+ J% M; H/ |1 r! I2 x
  1160. INX
    1 Z: |0 _3 h) w# o/ v  h5 v
  1161. ' b7 [* h" g2 _# L6 p$ e
  1162. LDA #$070 C9 d; F, g# P/ f7 x( k1 J% m
  1163. BNE Music_Show_Length! v% K! o; v" ]
  1164. 7 f8 }% h4 k' Y3 H0 R
  1165. Music_Show_Length
    6 ]3 Z4 d5 m8 q0 Z' X7 e0 F
  1166. STA PPU_Addr,X
    : f4 ]( v5 c4 f# U
  1167. INX( A2 h; ?) {9 S

  1168. * B3 \3 T+ i, G, X) A4 u! F
  1169. LDA <DEC_H& d, `/ H# \3 C0 g# z% `
  1170. ORA #'0'
    ; U: }% c) x/ F0 F' p: s6 d  {
  1171. STA PPU_Addr,X8 e7 g; B' K0 |
  1172. INX) H0 Y0 L5 c% f4 `) Z2 j1 z( d
  1173. 0 E9 a; l8 ]* m. x$ V7 O- v
  1174. LDA <DEC_T
    : w. p0 S0 w/ z7 B/ _
  1175. ORA #'0'
    6 z- O; S$ ^& p, ]* v9 D# v: {
  1176. STA PPU_Addr,X
    ! ?' C' ?4 ~$ A/ A( P7 A
  1177. INX! n' \, L% M1 t! K; q- ?. f8 U

  1178. - a6 |5 q( p3 v
  1179. LDA <DEC_L
    5 u5 Z% T- J, G! d% C' t
  1180. ORA #'0', x# Z0 F' O' k2 _5 V) j2 Q( P
  1181. STA PPU_Addr,X" S6 g1 l; e8 g+ W
  1182. INX
    ; }7 [; y( u. l" s; g# d

  1183. 6 z4 ?( Z& `* I+ C2 z
  1184. LDA #'/'5 r- y6 `+ M: @: i& h3 e
  1185. STA PPU_Addr,X& y$ U+ O1 a0 H" a; {* @$ I+ r
  1186. INX4 `! d! R7 F! X
  1187. Music_Show_Total
    8 l1 W  L! z+ A2 Q7 Y4 l# S
  1188. LDA Music_Total
    0 J2 b$ K6 j8 I# g
  1189. CLC
    $ Q  W3 ?" O$ o) q1 f% `# A
  1190. ADC #$01! O1 N  W( B3 s# B
  1191. JSR HEX_To_Dec: y3 j, {8 w: v' Z. d
  1192. ! v4 d! x' M* W
  1193. LDA <DEC_H
    * c+ {" }/ W$ \8 x$ s
  1194. ORA #'0'( O! X6 u) S4 e, f' N1 h2 D
  1195. STA PPU_Addr,X
    . o# A' i. H% p5 E
  1196. INX
    / f4 \) Y2 }4 T% _
  1197. 6 `5 A( H7 r  F1 X
  1198. LDA <DEC_T2 a! [- i2 t* `! h/ b
  1199. ORA #'0'
    ) X* }4 g$ @5 f
  1200. STA PPU_Addr,X
    : [* D* Q# a- \, z
  1201. INX+ q8 Y8 l' \9 J+ j0 X2 L

  1202. * g% v( B7 e, A/ j: }) ^  U# m
  1203. LDA <DEC_L
    ) b6 B& T* V! T2 u/ F& j
  1204. ORA #'0'* e! E' k) G( t$ R% `) l5 n" E- c
  1205. STA PPU_Addr,X, ], S/ z: {9 g, Z9 A: r
  1206. INX
    * x( F0 k8 x! h5 I

  1207. / g+ t6 K1 W, O$ @% O# x
  1208. STX PPU_Cur
    + f* Z. x' \$ S3 Z" L& _# y
  1209. Music_Show_End! c5 T  s2 |4 I$ Z* C# [1 E* x
  1210. RTS- v( y" C" y! i* X+ X7 B2 Q
  1211. . y( O# A" Z( f1 `4 x% y$ }
  1212. ;==============================
    0 b/ K' n+ A% s2 m, Q4 F3 F
  1213. Time_Show;播放时间显示6 t5 D. k1 q/ k1 }8 b$ a
  1214. LDA <Text_Disable_Flag
    7 U$ l/ x; a! s  @' k5 @, g( u
  1215. AND #TEXT_DISABLE_ITEM  u2 Y4 X. n, W- F, a7 S
  1216. BNE Time_Show_End
    . @: w$ m: c; ^$ ]8 b! r' Q
  1217. AND #TEXT_DISABLE_TIME1 h  V1 R7 z. u  r2 D( p
  1218. BNE Time_Show_Enable/ V+ q0 K& K$ a/ C( O+ P+ H/ y

  1219. 3 m- J7 b- [5 r0 k% P
  1220. LDX PPU_Cur
    ; C* g! D4 s% ]. n8 _
  1221. LDA #PPU_MODE_CNT_LINE* ]  k) e0 W1 ]3 e" M' B
  1222. STA PPU_Addr,X
    5 ^8 j/ g# I0 B* C4 R7 z
  1223. INX0 s! H5 P8 ]1 @4 R$ h" K
  1224. LDA #HIGH(Play_Time_Pos)( \1 g; R3 r" ]
  1225. STA PPU_Addr,X4 I- A3 U: Y4 o1 H
  1226. INX  r3 q( k% n/ D6 P
  1227. LDA #LOW(Play_Time_Pos)
    4 Q  f( o2 ~# @* c) U0 f5 G
  1228. STA PPU_Addr,X9 S2 E5 z2 k) Y$ @3 I
  1229. INX
    2 s6 @, K" d/ T# k- X( ~% n
  1230. LDA #$08
    8 n0 h) y* `: w4 ?. [
  1231. STA PPU_Addr,X
    / k5 Z* s9 b$ [, L4 Q) w( ]( \% X
  1232. INX* T- G3 X9 S- e+ B( W- Z9 e
  1233. Time_Show_H# ^, o: C4 ~0 x0 l/ d
  1234. LDA <Time_H
    9 x5 N0 F8 r+ c+ P
  1235. JSR HEX_To_Dec
    . O9 E$ j/ f8 r6 J/ ?2 X/ m6 `4 O
  1236. JSR Time_Digit, J' q. I6 y8 t5 G
  1237. LDA #':'" K9 k. X0 S, b7 B
  1238. STA PPU_Addr,X3 @: e  ?" a2 O) ^7 t; \/ v
  1239. INX. u3 ^: V# L- s# {) w
  1240. Time_Show_M
    1 |/ t, L  u# P. }6 Y2 P' e5 C
  1241. LDA <Time_M  I6 w; E4 {+ j' M+ I$ |
  1242. JSR HEX_To_Dec
    , F( ^" x% ^0 O+ i) \2 M
  1243. JSR Time_Digit# @8 o6 W) u1 p1 U- K
  1244. LDA #':'! z% |6 s& b! d4 w2 R
  1245. STA PPU_Addr,X
    ) E+ c/ K! b# ]) ~3 W
  1246. INX
    7 Y+ H: _3 ?4 x1 A) n4 _4 u
  1247. Time_Show_S
    % B1 f0 v2 f5 ~% l: o, I
  1248. LDA <Time_S5 J9 E$ O- m, u
  1249. JSR HEX_To_Dec
    & c$ l. d0 `- m$ ]$ \3 k
  1250. JSR Time_Digit
    6 o8 d  }9 X9 t
  1251. STX PPU_Cur
    6 I! e5 Z! y; x/ H4 l
  1252. Time_Show_Enable! E  F  b/ v, H! C* m
  1253. LDA <Text_Disable_Flag% v7 l/ D9 J; ~* Q5 f7 q) Q- U
  1254. AND #TEXT_DISABLE_TIME ^ $FF$ W9 c$ _" s2 ?. m
  1255. STA <Text_Disable_Flag( w' F3 ?( y/ \6 ^+ P! r
  1256. Time_Show_End
    , ?! P7 [. U. o
  1257. RTS
      S. y& T3 y- B% z
  1258. $ b. P, b/ ?0 I2 i
  1259. Time_Digit' W! L6 l- w, }# V- y+ s
  1260. LDA <DEC_T
    7 \0 J/ Y7 Q  t7 r+ n- {) U; j
  1261. ORA #'0'& y  C; k) r5 T; _
  1262. STA PPU_Addr,X
    : |0 C% ~% k" E$ E5 E* b* @
  1263. INX- S* y/ x' g) d) x9 }# Q' ~6 Z8 q
  1264. LDA <DEC_L
    ! W8 }6 c* v, k& K/ x1 R* o0 J
  1265. ORA #'0'
    # w9 _! {  m5 ]; D
  1266. STA PPU_Addr,X7 k8 r; W( V( ]" E9 q
  1267. INX
    5 r$ E! {( V! U
  1268. RTS
    ( R% k" A* a+ l: j8 @

  1269. : j5 n( M  n6 J+ f$ g: e6 r5 G
  1270. ;==============================, g$ E8 O. R( N+ l
  1271. Time_Count;计时' a# M/ }; V5 [8 n
  1272. LDA <Music_Stop_State
      j6 d3 Q( a7 i
  1273. ORA <Time_Wait_Cnt  `& p' X3 K  c  N( r5 q" d; b$ S" U
  1274. BNE Time_Count_End
    1 B  \  n. _9 X4 ?5 X9 m
  1275. INC <Time_Cnt
    * b; T. f" D( `
  1276. LDA <Time_Cnt" r7 x+ z; ?; P9 f, e0 g
  1277. CMP #60
    6 ]9 b: A; C0 C1 U, U% Y  t
  1278. BCC Time_Count_End$ o# o4 K! v6 M  I/ ^8 A
  1279. LDA #00' j' Z# s) Q0 F2 `4 Z8 `
  1280. STA <Time_Cnt
    $ ^2 ]+ @6 H4 r; {$ V
  1281. INC <Time_S: @6 f5 d# `5 M, M8 N1 b- P; ^

  1282. + l7 k0 [# F: k5 i1 m) P
  1283. Time_S_Cnt. ~  t; y. {1 ?( c" a
  1284. LDA <Time_S" x& N/ A% A: S$ [1 B. l
  1285. CMP #607 Q7 h8 P1 v9 F, X( Z( p! g
  1286. BCC Time_Count_End
    * K" i3 R6 h# l1 |; V( @
  1287. LDA #00, y9 ]1 }1 O. n: Q) p. ?: M
  1288. STA <Time_S
    4 x1 Q4 v  |' B" J% D& n& p# @
  1289. INC <Time_M
    ( ~; i4 c  a9 `+ f0 L
  1290. 1 D4 Y6 r5 v* K% Z1 F" l) o, g
  1291. Time_M_Cnt, _& ?( l# Q% V8 M5 l9 a
  1292. LDA <Time_M
    - D8 {. Q6 l4 ?' z" o8 J( ^
  1293. CMP #60
    * D3 ^, h3 R3 q9 a9 i" \' }  J. S
  1294. BCC Time_Count_End
    0 h, a! l- ^* t7 g- U/ n
  1295. LDA #008 J, X% G5 T. l9 t7 L
  1296. STA <Time_M
    1 d" Z7 ^  |2 o) m3 R2 X7 o
  1297. INC <Time_H
    * x# O0 L; a* X0 w# U( [+ K* v
  1298. % e+ {) b, `- I# b( k
  1299. Time_H_Cnt
    " L1 N! {& t* [, w: _6 G4 O
  1300. LDA <Time_H
    . q$ u; W6 q% L  R. f% K
  1301. CMP #247 D  ]1 T2 M( Y1 V3 A
  1302. BCC Time_Count_End
    $ E( l) q$ q: a' o( l6 D. h) b
  1303. LDA #00; O7 Q; n0 c. z/ r: k; w
  1304. STA <Time_H8 @; G8 G3 x+ Z/ q' X1 }
  1305. + v1 j9 B4 d" X+ T
  1306. Time_Count_End
    6 t* ^( w9 i1 L
  1307. RTS
    - B: m! v/ B3 {: }2 |6 ^

  1308. 5 J0 k3 Z' L" u2 L, c
  1309. ;==============================
    4 d# ^/ H" Q+ F, d
  1310. Time_ReSet;播放时间重置) \5 h5 N# {* Q
  1311. LDA #$00
    " m6 Y+ }3 p+ d# w9 h$ t7 P
  1312. STA <Time_S! b9 |* L- \9 ?: z1 o  _6 n  m
  1313. STA <Time_M
    & F- p, P% \* ]
  1314. STA <Time_H! N$ W; C7 c2 k9 t" R4 r/ ^
  1315. STA <Time_Cnt( d+ S/ `0 }9 w0 `/ o8 }4 Z2 b- R. L
  1316. RTS
    % S3 z) ^9 a; D) \

  1317. ; N9 J8 T' d1 j
  1318. ;==============================; m, f, N( {  V) R4 _
  1319. Music_Bar_ReSet;音乐条重置' M* R/ y& h- e* y
  1320. LDA #$00* ]# E* M& x5 X# |8 E' m/ s
  1321. LDX #$00) s% c4 k$ R+ {7 x6 J
  1322. Music_Bar_ReSet_Set. {. W, w) o; ^9 q$ r
  1323. STA Sound_Bar,X8 g5 V+ V" T1 N4 S" U1 o
  1324. INX. i* F/ W" V& u
  1325. CPX #$10
    4 u0 T& B7 W+ ^' f. g$ O
  1326. BCC Music_Bar_ReSet_Set
    . n2 u, \) m! q+ m
  1327. RTS
    & j3 @( }7 U# ]* l9 d/ }& E
  1328. " [$ r) o) g; d4 p' Q! q
  1329. ;==============================
    1 i/ P6 r0 j1 [0 o' p& h
  1330. PPU_Data;PPU数据写入& B# {% S1 }' a# c
  1331. STY <Data_L6 m/ d' x; x0 S/ ~' H; n
  1332. STX <Data_H
    + W; Z2 H3 J9 r/ G1 _2 m
  1333. LDY #$FF  v9 a! i" a$ Y
  1334. LDX PPU_Cur: P7 s0 R/ w) w/ N  T! w0 A
  1335. DEX  p8 J6 H" Z1 K
  1336. PPU_Data_Beg( [* ^* G5 T4 X& y
  1337. INX
    + j& a" ?0 q' N" I5 i, ~; O$ E
  1338. INY
    9 j, j: y8 a( y
  1339. LDA [Data_L],Y0 A, K6 b% f% D5 p) t& V: [
  1340. STA PPU_Addr,X" {' t) S+ r& V( E4 l
  1341. BNE PPU_Data_Beg
    ' O: N$ r6 V% k; a. J, c5 G; |
  1342. STX PPU_Cur3 q* g9 T' V) W9 ^
  1343. PPU_Data_End2 P. a+ s" M- K% I
  1344. RTS/ g2 W! k5 j' N  G2 s
  1345. - W& ]& W' P; s3 c% _8 L
  1346. ;==============================
    8 a  \0 F2 M$ \& W& q0 F- @. O6 S) \
  1347. Music_State_Show;播放状态显示1 f+ `, A  L6 Q+ f$ M% U
  1348. LDA <Music_Stop_State
    # I1 O! x4 `, K, Z, O0 _0 P5 A
  1349. BEQ Music_State_Show_Play
    ! X. c  G6 p( p9 T; @7 N
  1350. Music_State_Show_Stop, d0 A* ]3 j' r( X$ S# X- D
  1351. LDY #LOW(Music_State_Stop); [  N1 }9 i9 B
  1352. LDX #HIGH(Music_State_Stop)) g$ A' t8 L0 p" T9 Q1 i9 P1 l3 @
  1353. JSR PPU_Data
    ; I7 I8 x* x1 F- f
  1354. RTS
    ' N" |+ d. b2 w
  1355. Music_State_Show_Play: y! ~9 a, a" A- R
  1356. LDY #LOW(Music_State_Play); U1 X: H, I! `) C, v% A5 u
  1357. LDX #HIGH(Music_State_Play). R+ e8 E! ?$ s0 R1 g
  1358. JSR PPU_Data* A& u* \/ ~, o% H9 Z& \" |: Z- ~
  1359. RTS+ W, ~+ r7 Y  Z" |
  1360. 0 L! I, e& x0 z# F, K. L) }( z8 ?" ]
  1361. .IF SOUND_BAR_SHOW_ENABLE* `3 T5 ^1 m+ j, B; K1 {
  1362. ;==============================# F$ p# D1 w- P' ?+ O0 ^# W
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    8 n3 ^7 f% B: W& _; n
  1364. LDY #LOW(Sound_Bar_Text_Data)
      E. g2 G4 t: e
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    # ]. I* `: n6 K1 k- Q2 I
  1366. JSR PPU_Data
    / I, W  r. ]6 _# a8 x  H
  1367. RTS8 W# {( i5 c2 [
  1368. & m$ @8 ~/ k) K3 j: h1 ?" |
  1369. .ENDIF
    4 `1 R  o! Y) `
  1370. 2 d" l1 D0 [" ^7 h2 j) G
  1371. ;==============================
    + x" W, L. s: D6 g/ l" ?
  1372. Set_NameTable_Attributes;设置命名表属性& @  L( d, G1 L& Z, i1 ]
  1373. BIT PPU_STATUS
      S9 L) c" f# T1 S! P
  1374. LDA #$23
    / {1 {$ `3 T+ I1 r* E$ x9 Q0 p
  1375. STA PPU_ADDRESS
    % O  b. k2 {) k8 S) N* \3 @
  1376. LDA #$C0
    2 x) _+ V, U0 i! `
  1377. STA PPU_ADDRESS, W4 Q# ^2 v2 C$ J+ P5 D
  1378. LDX #$00
    2 ^1 q+ S, L! H" h) [
  1379. Set_NameTable_Attributes_Write
    3 ]5 I3 p5 L4 [; W0 {+ P
  1380. LDA Palette_Attributes,X+ {9 W4 Z  S$ }8 k
  1381. STA PPU_DATA& o5 ]$ J6 L1 C5 d5 z) c& k, m% Y2 L& V
  1382. INX! F- S) b2 U8 T5 _4 I9 x
  1383. CPX #$40
    5 p; v2 z/ K* C
  1384. BCC Set_NameTable_Attributes_Write$ l# P$ a- X$ c" K5 g8 @
  1385. RTS
    . R& q% t2 ^2 f2 B2 w- q9 k

  1386. " ~" m) y0 J8 [3 I6 n+ u
  1387. ;==============================
    ; x) k8 [( Q4 v% c1 a
  1388. Set_Palette_Color;设置调色板数据
    ' i# c, v* H4 B$ v4 D4 T( _# I
  1389. BIT PPU_STATUS
    / a  U! O/ u% X; f" K' F
  1390. LDA #$3F
    / y6 p, w6 d" C, s4 G8 W6 g
  1391. STA PPU_ADDRESS
    " l5 }6 ~/ e$ d0 K! p' ]/ Z
  1392. LDA #$00  w* H6 G# E  L& B, a6 y2 \
  1393. STA PPU_ADDRESS
    0 P: t; B* r' j; ]$ V
  1394. LDX #$00
    % P  p1 }! t7 U( C- W. L! J7 E6 |. Y
  1395. Set_Palette_Color_Write
    . E8 N) K8 J! Z  h' h, q
  1396. LDA Palette_Data,X. {3 _% z, S; D
  1397. STA PPU_DATA
    6 L/ i9 S+ m# Y: U
  1398. INX. N0 K# [( Y7 K; Y9 f
  1399. CPX #$205 [, M, C$ e& I5 e
  1400. BCC Set_Palette_Color_Write
    0 `+ h4 S+ f7 w" }
  1401. RTS
    / M' T3 a/ M( i: i
  1402. # k% f. k- _7 P# Y2 {% J- a
  1403. ;==============================
    + ~  ]  Q$ Z0 @, z
  1404. Init_Palette_Addr;初始化调色板数据5 F% _  J$ m9 y% _: D
  1405. LDX #$00. _+ S9 l6 q- C3 f
  1406. Init_Palette_Addr_Write) }& T& L) h# r
  1407. LDA Palette_Data,X2 }* w1 |1 F- g: Z  d4 m2 X
  1408. STA Palette_Addr,X1 |, s3 A# `9 x8 D7 J$ x
  1409. INX; V# i9 y9 b# _+ z# P8 O
  1410. CPX #$20. d& b$ v, r5 Y1 G1 c
  1411. BCC Init_Palette_Addr_Write. W; y1 I1 e, [3 B
  1412. RTS$ `7 K  |; i: @, O
  1413. & Z$ K9 o7 N! I" h8 J
  1414. ;==============================
    5 I( B1 H- P1 `: W
  1415. Update_Palette_Color;更新调色板颜色2 E9 _3 t8 |. p9 I, g& q
  1416. LDA <Palette_Update_Flag
    * P9 _; a) O2 f. }7 Z
  1417. BEQ Update_Palette_Color_End( @+ w) D/ N, d1 D9 c
  1418. LDA #$3F" g. s! ?, o& w
  1419. STA PPU_ADDRESS$ ^+ \/ L* `% f
  1420. LDA #$0C
    8 O+ O& C9 v  Z6 ]" N
  1421. STA PPU_ADDRESS- X3 e+ {7 h$ G' E5 b
  1422. LDX #$0C" h1 @& c) C. b1 A6 s. c
  1423. Update_Palette_Color_Write
    ( F) S% e! c; i
  1424. LDA Palette_Addr,X
    4 X8 s. c/ O( y4 _& m. h. W
  1425. STA PPU_DATA
    : L2 ~2 T" U5 j& |1 v4 N) P
  1426. INX
    6 s: I, |6 r9 M: _$ t* L8 y
  1427. CPX #$14
    ( K; K1 g: ?5 N, q9 ]# s2 `
  1428. BCC Update_Palette_Color_Write
    0 G1 o9 p( I& G7 ]2 _
  1429. LDA #$00
    0 F/ y3 @. J  d" m: F6 ~
  1430. STA <Palette_Update_Flag
    7 Q* c% a1 [- v/ [+ Y
  1431. Update_Palette_Color_End
    # `5 ~- y4 [. u, ~0 x2 `/ x6 p
  1432. RTS
    7 l% f$ s# U1 @

  1433. & O/ e  I3 |4 Y, R2 V$ N# j

  1434. " r8 _" p% a3 d" z" Q! D8 @# k
  1435. Update_Sprite_Palette_Data! v: h4 t% |  ?5 }; h7 B( q/ z
  1436. .DB $21
    ; r% V2 g. e# {2 t" `9 V) S
  1437. .DB $211 @6 i4 A+ ?3 X' s
  1438. .DB $11* q( `5 C5 i3 U4 D$ ]' f$ T1 @3 ^
  1439. .DB $01
    2 n$ l0 n3 {$ g
  1440. .DB $01
    2 I7 |) t# k# U: H& f
  1441. .DB $11
    ( ~  D" R- a) r: \4 Q
  1442. .DB $21  l  o- F0 P4 L
  1443. .DB $219 {! C( k; y% [: H$ Y
  1444. .DB $11
    ! Y  u) e8 x) q( E' l9 Z1 H+ q3 F7 j
  1445. .DB $013 U- b4 T. x  k5 a
  1446. .DB $11% l# {5 h% u- ]: ?7 z: B8 z
  1447. .DB $21
    - O+ g: N* E0 P# f- s
  1448. .DB $21- Y: L( z# W) p, |. x
  1449. .DB $11& \+ V* U. ?' z+ o' }$ l
  1450. .DB $01
    ' Q" {! Y! b: U
  1451. .DB $11/ J4 q2 \* i* k, ^2 v
  1452. ;==============================6 h8 S. ~% n  ]4 M3 I' X8 V. ^% F
  1453. Update_Palette_Data;更新调色板数据
    1 w! [- D* o3 s0 a4 Q" Y. ]; \4 E
  1454. LDA Nmi_Time_Count
    - g( G$ m" f+ @& M8 V9 O
  1455. AND #$084 e1 y6 E/ Q  p5 A4 Z
  1456. CMP #$084 g) Y# @! w" c. r% j6 d" U! P
  1457. BNE Update_Bkg_Palette_Data, h, J5 e$ p- j$ }0 h/ z: x2 w7 L
  1458. ; K# i' s+ W4 b9 q& C8 n- L9 H
  1459. Update_Sprite_Palette_Data_Set
    : k  g" S4 A' F/ H
  1460. LDA Nmi_Time_Count
    ) ?0 t9 Z) x* @- K
  1461. LSR A
    5 K/ O7 b3 X. o# x4 z. S6 F7 D; N
  1462. LSR A
    + ]* Z: X. P( y
  1463. LSR A! d% B& l* B7 ?6 B
  1464. LSR A
    # S; d, N# T% F" U  `
  1465. AND #$0F
    5 B. y+ Q" \; \  h* a0 u" m; [
  1466. TAX3 }+ E% w0 Y  z/ f0 r/ |
  1467. LDA Update_Sprite_Palette_Data,X
    $ N: B- c0 |4 e, C5 J6 S
  1468. STA Sprite_Palette_Update_Addr1 `* V+ F# h( x
  1469. LDA #$01" P6 s2 v# s& I1 K/ W" g* ]0 V
  1470. STA <Palette_Update_Flag3 o0 ?" {  [1 M

  1471. ' y& ?3 \9 u/ o2 @% J7 T0 _
  1472. Update_Bkg_Palette_Data/ [9 Y6 n% F& ^
  1473. LDA <Text_Disable_Flag+ e$ Z0 c; u+ l$ s: p1 {
  1474. AND #TEXT_DISABLE_RAM. B0 l" R7 X5 L) \. x4 Q' M
  1475. BNE Update_Palette_Data_End+ i, m7 d; h% K5 }6 T$ e
  1476. LDA <Music_Stop_State! r1 E  B, o" ]$ r
  1477. BNE Update_Palette_Data_End
    $ t/ X+ a0 K8 K3 \1 s

  1478. 8 w( i7 |# r0 B& v+ j- i) U  |
  1479. Update_Palette_Data_Check7 K: o  O- B) c3 W4 ]; Q( X: [
  1480. LDA Palette_Wait_Cnt* M, b& q/ K9 S+ f: ^+ d
  1481. BPL Update_Palette_Data_Check_Over$ `2 j0 \( e6 g$ O9 g3 N
  1482. LDA #PALETTE_UPDATE_INTERVAL0 r  F1 k, @; M5 ]' p! K
  1483. STA Palette_Wait_Cnt$ c& j% I) a! D9 o8 R# Y
  1484. Update_Palette_Data_Check_Over
    ; I9 d# S5 Q2 K: z( q
  1485. DEC Palette_Wait_Cnt
    9 l3 A. Q2 Y( {; v" {- S
  1486. BNE Update_Palette_Data_End
    * r$ h9 X5 J0 x5 z+ R6 ~6 z1 @2 w
  1487. : W8 t/ q, E! m; ]9 v, G, u
  1488. LDA <Text_Disable_Flag( f& |5 _4 I3 ^0 o; N
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    0 j2 R9 S! G9 D/ n2 f7 N
  1490. STA Text_Disable_Flag
    , }5 x* C; M  q  a
  1491. INC Palette_Update_Flag% S( Z) i8 N" h$ Z: ~$ v% e- Z

  1492. 6 @1 r4 @  i: l/ ?7 c" X# i$ `) ]) V
  1493. LDA #PALETTE_UPDATE_INTERVAL
    4 ?* `. f- b) h9 o* S
  1494. STA Palette_Wait_Cnt# m3 g$ C$ G/ G% s  W

  1495. * j& p0 m' e7 N+ R# E; F3 h
  1496. LDA Bkg_Palette_Update_Addr
    7 Y9 A; v2 \# {, r
  1497. CMP #PALETTE_UPDATE_MAX& ^, t  \9 r. _0 |! H
  1498. BNE Update_Bkg_Palette_Data_Set
    9 `+ r8 |' ~* m0 v2 _
  1499. LDA #PALETTE_UPDATE_MIN - 1
    ) {" @5 ?# l' T& }. p- {" f( E
  1500. STA Bkg_Palette_Update_Addr
    . p) s) S$ l+ N6 C
  1501. Update_Bkg_Palette_Data_Set) `0 [: C6 y' n% f# T0 A4 v
  1502. INC Bkg_Palette_Update_Addr1 r. A8 q, O2 H5 \$ v$ m
  1503. ( \8 k0 @, F' y& Q5 P0 B
  1504. Update_Palette_Data_End
    0 a1 A/ r" S# |1 o. }
  1505. RTS
    $ L! l: F: w, ?% t

  1506. 8 J! N0 M1 R0 h5 {
  1507. ;==============================% q/ R) w/ u% c. y3 d* V% t
  1508. Show_Music_Text;显示静态文本
    # e( o7 h2 b- K) [; k. J* x# Q8 D
  1509. LDX #$00
    ! p1 T' y+ U7 W$ i. a1 b
  1510. Show_Music_Text_Set% k( ~7 Y& P' B, j" g6 c; H; ]  C" i
  1511. LDA Static_Text_Data,X
    ( s5 o. {. G+ {- `( i3 c! {
  1512. STA <Data_L) o4 V0 V  E' }; U
  1513. INX4 {0 N. y5 ~- m8 J5 u# t" r9 F" C
  1514. LDA Static_Text_Data,X
    9 X/ C4 B; ^1 o$ v* ~: W1 S
  1515. STA <Data_H
    8 s" v3 ^6 b* U  ]7 W8 x+ t
  1516. INX6 R6 M" _' l' g  q
  1517. LDY #$00
    ) V7 ]3 L3 Y* p) d- m8 I
  1518. LDA [Data_L],Y
    ; t5 P4 _4 A; k
  1519. STA <Data_Cnt
    8 s8 S& U) _; {* `9 B6 [
  1520. DEX
    , H) }: s" ?+ ^( y
  1521. DEX" ]7 K$ i: c% J9 ~3 h" Y& q
  1522. LDA Static_Text_Pos,X' e& j8 i. e9 ]+ e
  1523. STA PPU_ADDRESS
    0 d8 g' ^% g( }' w3 d* i0 l
  1524. INX5 n) @  |0 z4 L
  1525. LDA #$20
    % b3 D  Z1 b( m7 D% `: c) v5 S) |9 h
  1526. SEC
    ; j3 S! j' \/ Z3 G4 r: \+ L- d
  1527. SBC <Data_Cnt  ~' ?8 E0 F2 n+ C& _, r: Y! r
  1528. LSR A$ W# E- N/ p# q4 m9 v
  1529. STA <Data_Buf. m+ w/ V6 I+ Z- H& `
  1530. LDA Static_Text_Pos,X
    ; [+ y! R5 f$ O2 X5 q
  1531. AND #$E05 i1 f; p. U" [5 i2 F
  1532. CLC
    ! o( W% ]5 y  r2 F) T
  1533. ADC <Data_Buf* ^' L" g2 F& `' u/ [3 q. R6 _
  1534. STA PPU_ADDRESS" l: P* \" l. e" A/ ]# _5 B
  1535. INX
    9 p& d4 [. _; @+ `
  1536. Show_Music_Text_Set_Write
    ) k- q) ?5 A* @6 k
  1537. INY
    ' |8 a! K; p/ C' h2 N" E0 P
  1538. LDA [Data_L],Y+ L  ~3 W5 m! n4 ?' W7 ^
  1539. STA PPU_DATA
    6 t7 L0 e# ~4 {  _. Z3 [
  1540. DEC <Data_Cnt
    $ x  y" x6 b8 H" T+ g9 p; ~2 V7 @% W
  1541. BNE Show_Music_Text_Set_Write
    $ l* }& Z5 z4 x& d+ m5 F  ~
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos% {+ f3 r+ T. u  L/ x1 A
  1543. BCC Show_Music_Text_Set
    # N% x: A" F$ a1 k
  1544. RTS! l' Y9 g  d6 {9 w2 |+ _' B) h
  1545.   a0 I* q& X9 |# D5 T8 g
  1546. ;==============================2 B$ h# A! \+ J5 g, o
  1547. .IF Track_Name_Pos;显示曲目信息
    " S, w4 h! Q0 `4 X- M% u
  1548. 3 s2 b( J- U: f  s2 i3 K9 J
  1549. Clear_Track_Info9 k: F4 n/ p% `, ?# j* I6 h; N
  1550. PHA
    + V" V2 M- Z3 F" p- Z& J' @" A
  1551. LDX <Music_Item_Cur+ d* A# P% Q3 x4 p  ?5 H
  1552. LDA Track_Name_Addr_Flag,X$ R( p/ [1 t5 T0 J
  1553. BEQ Clear_Track_Info_End_Ex
    ) D4 {0 g$ \  p1 @1 |
  1554. PLA' L* i- ]2 J2 C
  1555.   J( L% T- A$ s/ `; f8 _
  1556. LDX PPU_Cur
    " }8 N5 D4 t2 j, M
  1557. PHA
    * j, S4 ?3 K7 F
  1558. LDA #PPU_MODE_CNT_CLEAR4 H& |9 W% P# S) U6 e
  1559. STA PPU_Addr,X$ X" N* a: ]9 U* R5 j% O
  1560. INX9 L+ d: x. i0 {3 Y, w+ k
  1561. PLA0 l9 k. Q8 O% y+ R* q" s
  1562. JSR Show_Get_Track_Name_Center_Pos% c- G# X+ |: k7 N/ |
  1563. STX PPU_Cur
    9 E% w  z! k; w' t$ ^
  1564. Clear_Track_Info_End8 B7 i$ W1 S/ [2 S. n
  1565. RTS
    , ]! \# t! @3 H/ F% H
  1566. Clear_Track_Info_End_Ex8 T# }6 [; p( I  v0 j4 B
  1567. PLA
    ( l) ]- v  ]! f1 }/ K
  1568. RTS
    . ~* A5 h0 ^7 g9 S" L) P
  1569. # r" y: _$ g+ s) e
  1570. Write_Track_Info
    # x. \- P* E& x! T
  1571. PHA+ L( P9 b3 j2 h; D
  1572. LDX <Music_Item_Cur
    3 b/ j, y9 |# I8 F1 D$ D/ \& e
  1573. LDA Track_Name_Addr_Flag,X
    6 A2 R: z  B+ _9 T* ~
  1574. BEQ Write_Track_Info_End_Ex( m$ K# k* @5 U6 B; _; p6 D" G8 @
  1575. PLA1 F0 k5 H( i$ h

  1576. ) ~6 k/ e' w( J* R" s! `' A
  1577. PHA" q6 c- J5 k$ n% q
  1578. LDX PPU_Cur
    % P. @2 x9 s9 q2 i! f
  1579. LDA #PPU_MODE_CNT_LINE, u! \1 v; x, k7 e
  1580. STA PPU_Addr,X- {/ {9 j4 ~% [; N/ i- o; b
  1581. INX; c5 o5 p/ `: R  m1 g" v( h
  1582. PLA! ~( [) ?" u' x  s* a2 w! H; H
  1583. JSR Show_Get_Track_Name_Center_Pos
    / p  D) h# z/ L# K% l
  1584. Write_Track_Info_Data6 N  I. ]4 p6 k) b" ?9 U0 }
  1585. INY
    1 r) L' b' Q* @  f; X/ p4 g) Z
  1586. LDA [Data_L],Y( I# |0 N' m2 N4 T& D# T% {
  1587. STA PPU_Addr,X8 M! b0 t: `7 u0 f  b2 g6 |  p4 W
  1588. INX
    & N% L( T( j/ O/ c- e
  1589. DEC <Data_Cnt0 `  R1 c  v3 u
  1590. BNE Write_Track_Info_Data
    8 n8 s( G) u* {7 d
  1591. STX PPU_Cur
    . _5 a4 g$ s2 h& y8 c9 n
  1592. Write_Track_Info_End+ p( D0 m7 i: O& I& x
  1593. RTS3 [0 S' k" O5 d6 s0 U7 Q
  1594. Write_Track_Info_End_Ex9 z' ^- ]. c; d2 [+ `+ |
  1595. PLA
    8 A) q4 N+ `9 o
  1596. RTS$ g8 G1 `1 y5 B
  1597. 3 }! x( u6 Y) N3 t; C7 k( k3 s( q
  1598. Show_Track_Info: K3 u( L) q& n
  1599. Show_Track_Info_Clear
    # \7 f3 p1 Z6 t" }8 {1 }& H
  1600. LDA <Music_Last2 ^( R; q  |( a& V2 n
  1601. - S& o# S6 Q4 P8 F; q$ s
  1602. JSR Clear_Track_Info
    6 A& u: u* N& b
  1603. % C$ H+ M1 a5 Z* {5 _  l( S
  1604. LDX <Music_Item_Cur
    ( X/ G4 t" J: y
  1605. LDA <Music_Cur,X
    8 w1 ~  Z8 Y( z! q& y
  1606. JSR Write_Track_Info
    " h8 k3 F1 e, S8 l$ E5 }
  1607. RTS
    ; `- B% ?$ c- C/ }9 [4 Y  f

  1608. & ^# Q& N% v9 `
  1609. ;==============================
    + R" z3 [5 Y: \% A. F3 S
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    : F) V) m, T1 ~' C) Y$ }9 @% a  U0 k
  1611. ; A& T& N$ E5 ]$ ^7 y) H  n
  1612. ;取出集合名索引5 c; b- N: w+ }( q
  1613. PHA
    8 E/ R7 f$ e; C

  1614. ' P5 J2 {# Q* F% ]! Q" T
  1615. LDA <Music_Item_Cur
    ' U% k( Y; @# }
  1616. ASL A
    4 S, U! X5 B$ f; O1 J6 a) `& W& y
  1617. TAY5 l3 H" ]4 X; z/ W& K6 V
  1618. LDA Track_Name_Addr_Port,Y3 L" o& F& J" r
  1619. PHA5 H* s6 p2 `: E& M  p8 J! g. D$ s1 l
  1620. INY
    " ]4 s! g5 @9 j& F- A6 R1 S% x  j
  1621. LDA Track_Name_Addr_Port,Y! C! d- B) q" s/ m6 l
  1622. STA <Data_H
    + `, U. ~8 R4 m" U& T8 F: E
  1623. PLA
    8 a6 g, r. j, g' P
  1624. STA <Data_L% I. h, h6 k7 Q% v

  1625. 7 r3 w# n; }* O& w: E; s  @- w1 D
  1626. PLA
    1 v2 `  M) x1 F: f$ Y: o
  1627. ; }# H( w' w: j# u# f8 Q
  1628. ASL A, Q; _. C  s: z" N% W. B6 M
  1629. TAY# a7 L" F8 X$ B8 v2 Q% u0 `7 N1 P
  1630. LDA [Data_L],Y
    : I# e- k9 c4 f5 \7 d8 W
  1631. PHA% {8 D' m, }! ^4 c% l
  1632. INY
    / b5 _6 ]( j7 L4 ^
  1633. LDA [Data_L],Y
    9 D3 J' L1 h, ?3 ~
  1634. STA Data_H: a% d' I  v! t3 U+ ]( X) q7 _# ?
  1635. PLA
    0 _8 U5 G# K( d( N
  1636. STA Data_L% e' z' Z  q4 ~  O; b

  1637. - c: [8 C: z  s( n. b
  1638. LDY #$00$ s8 h. \+ [  V" H
  1639. LDA [Data_L],Y
    ( L7 g4 o: w  t5 I
  1640. STA <Data_Cnt
    : {2 q2 E/ W/ L  J/ w& E3 q
  1641. LDA #$20" `+ C/ T5 ~$ ^8 ^6 C0 y
  1642. SEC& T; d& R/ l3 I( r
  1643. SBC <Data_Cnt% @# G; G$ w0 g& j& t) [
  1644. LSR A
    & Z  l+ y( Z! E' G1 @- \5 D
  1645. STA <Data_Buf
    . R! ?0 L) P8 o! E, w
  1646. LDA #HIGH(Track_Name_Pos)
    2 ]$ n( Z# C# d2 L9 s
  1647. STA PPU_Addr,X  H" G* ~, r4 e" Z
  1648. INX3 A2 ?# F' t/ ^# C2 V
  1649. LDA #LOW(Track_Name_Pos); X' \% u3 D; E7 A6 z
  1650. AND #$E0
    # Y  {  C: g6 x& S" N9 ^
  1651. CLC- z) r' U9 I' \' x$ n( _2 f7 Q
  1652. ADC <Data_Buf
    : g' V5 c, z2 g
  1653. STA PPU_Addr,X
    9 H7 u( H7 S9 S" l- t, ~( T
  1654. INX
    2 p2 ?. I' N* j) }
  1655. LDA <Data_Cnt( ^8 n; K* }6 e$ ^" l3 X
  1656. STA PPU_Addr,X. R! y( J7 K1 e. Q
  1657. INX
    ' @7 y: P4 p. o6 \) S6 P; z, C& F" B
  1658. Show_Get_Pos_Center_End
    9 V' |% @& b& B4 ?- U, b; P* I% J
  1659. RTS
    " I6 Z/ F* r$ D- Z% H) }
  1660. .ENDIF
    0 }& }( `6 v1 J# k4 C' F

  1661. 1 I. F5 l" S' k& I' q( V* w
  1662. ;==============================# T% u5 d/ u' J& \
  1663. ;音乐端口清除
    ! V/ o# e" E* T1 b. o5 U
  1664. Sound_Data_Clear
    4 l" D: O/ Y5 x
  1665. JSR Sound_Port_Clear% Z  U& Z) `3 P1 i4 `) G) r
  1666. JSR Sound_Ram_Clear, V, }5 n4 C* g( a9 O0 Q2 W
  1667. RTS
    % ~" ]- @' i; s" k( ~# [

  1668. 0 j# u# O# Y4 c, {0 {
  1669. ;==============================; \* c8 Q3 e  k  @; t, K
  1670. ;音乐端口清除
    1 q: O5 |, O0 Q5 {8 j: s  M) D
  1671. Sound_Port_Clear4 `0 v7 d$ M3 r0 v% \
  1672. LDA #$00
    . Q/ C; k2 L+ B# Z; R3 O
  1673. STA APU_STATUS# @! d4 v: f9 Z# P1 L/ L. U8 [) }
  1674. LDX #$00
    8 v9 q" q( J8 |) K
  1675. Sound_Port_Clear_Write% v. y1 I% x0 F+ z! X
  1676. STA $4000,X
    , ^) p5 f7 L: c2 ]# m  |
  1677. INX/ T/ `( b/ I; |* d# [6 Q  ~
  1678. CPX #$140 z3 I) R) g/ f1 I1 R% S6 I
  1679. BCC Sound_Port_Clear_Write) t1 F" i& N6 u
  1680. RTS. g* I% {6 I2 K! r$ f: \4 v

  1681. 6 P. ?- B5 M; P9 q3 {, p
  1682. ;==============================. q3 ~  G: \% w+ r( x
  1683. Sound_Ram_Clear;RAM清除. o; Y/ M9 U+ o  M4 L4 k
  1684. LDX #$00
    # A5 V' S. ?' d& {6 o; z6 v9 z
  1685. LDA #$00& m# E7 d) S. D$ @* m# L5 m
  1686. Sound_Ram_Clear_1
    ) p5 I7 L2 n7 Q# @, T: q
  1687. STA Sound_Ram_Addr_1,X' t. l9 I" }) n5 e( @8 ]6 v3 V
  1688. INX% ^0 V' \, u( p. f
  1689. CPX #Sound_Ram_Addr_1_Size9 d+ o, D, q6 e
  1690. BNE Sound_Ram_Clear_1
    $ J  F. [+ P* I
  1691. LDX #$00* M% Q( w% B2 x, f% ^$ m
  1692. Sound_Ram_Clear_2
    ; A) A+ f' O9 G
  1693. STA Sound_Ram_Addr_2,X
    , o1 ?1 b3 D' v5 D
  1694. INX9 O( V3 [4 T  G7 X$ c# D( H
  1695. CPX #Sound_Ram_Addr_2_Size( u% ?0 j& M) R
  1696. BNE Sound_Ram_Clear_2
    7 R- H" L0 {3 x/ Q: s% I
  1697. LDX #$00
    ' }/ A, T4 {. V4 h3 s) m% M
  1698. Sound_Ram_Clear_3
    & I8 v8 d, ~- s3 d
  1699. STA Sound_Ram_Addr_3,X7 v5 t. G* G5 W. A
  1700. INX
    ' ^$ C, v/ [6 k: B! n* ~0 G' L
  1701. CPX #Sound_Ram_Addr_3_Size
    4 Z0 f& K5 b9 d$ X
  1702. BNE Sound_Ram_Clear_3+ u" o0 v3 b" K6 w$ i8 J0 Z9 @
  1703. LDX #$00
    ) O  n, ^6 _  F5 b
  1704. Sound_Ram_Clear_4
    " m4 ]0 v0 f9 K
  1705. STA Sound_Ram_Addr_4,X7 Y8 a$ P  j1 c3 _' l; P5 e* r" V  a% ]
  1706. INX
    & y( ^/ q& P+ E5 g
  1707. CPX #Sound_Ram_Addr_4_Size
    9 H3 T% L! B: q  R. l, I7 x6 r$ j+ [
  1708. BNE Sound_Ram_Clear_4
    1 N- k' J7 e) ~9 U7 g; ]" p4 Q; E  _
  1709. Sound_Ram_Clear_5
    0 s" o5 H$ o: p. g* v( R
  1710. STA Sound_Ram_Addr_5,X$ \2 `( m7 {6 k, P
  1711. INX+ K) ^" B* E& e! W* p4 [$ T; c+ m
  1712. CPX #Sound_Ram_Addr_5_Size- J' g; ^& R" x/ e: B* c8 L
  1713. BNE Sound_Ram_Clear_5
    " _  V5 ~( z5 }! ~+ L) y
  1714. RTS
    3 U/ v. {3 `: P; P) N5 ], m. C) ~

  1715. & n: V) _% }- C5 @
  1716. Get_Music_Collection_Name3 B& P9 N9 u* v5 Q9 y" l
  1717. PHA
    , [- e& o3 G; y% W6 E/ F
  1718. LDA <Music_Item_Cur- \8 p4 z7 S( ~" s/ [4 O* Q
  1719. ASL A. ~  i, S2 b+ W8 ^
  1720. TAY; x; G) n8 e- J
  1721. LDA Music_Collection_Name,Y$ g9 p8 o# s% X3 |6 l% Q
  1722. STA <Data_L+ h. }7 H6 I* ~
  1723. INY$ B1 d! _5 ~5 V% w4 S% W
  1724. LDA Music_Collection_Name,Y. G0 r5 u9 u( C5 `% Y
  1725. STA <Data_H
    4 z2 E. l; v# D2 g
  1726. PLA; i/ u, e( }- S+ R% S' v# z8 Y
  1727. RTS
    ; Y% A( e5 P& }
  1728. $ o2 X* u, w1 ]1 u1 Z: W7 P
  1729. Set_Sound_Total; f. t- w7 ^1 h
  1730. LDY <Music_Item_Cur1 D2 M; q8 j+ S. S" M5 i
  1731. LDA Sound_Total_Port,Y* f/ m" ^5 h- @# v. \9 S
  1732. SEC" b0 |" ^! O( a8 y' m" o2 J
  1733. SBC #$01
    9 }6 o2 S* F& s: w2 @/ f& Z# j' {* o
  1734. STA <Music_Total5 ?' V! \0 c# \$ z
  1735. RTS+ o! R. U; R5 M( l' L% W4 T

  1736. 1 {. g5 @! H; w5 X7 R$ ~
  1737. Get_Sound_Start
    " D4 U/ P8 T! f* o. d( u
  1738. LDY <Music_Item_Cur: Y, j  N& z+ z, ?4 s1 t1 r
  1739. LDA Sound_Start_Port,Y8 c7 K! Y& M. ?5 m' d
  1740. RTS
    ( b; Q% }1 f7 P; J7 u! t8 n

  1741. " I( q# [# z  \0 c
  1742. Set_Sound_Init_Port
    : g3 q% D: n' e/ h
  1743. PHA
    ) R* [6 E7 d9 d! I, o: X
  1744. LDA #$20
    0 ]- V: r4 o; n/ h  S
  1745. STA <JSR_Addr_Op
    3 T, F8 e% e8 N
  1746. LDA <Music_Item_Cur
    * `: @3 K+ U9 R* |  Z& b
  1747. ASL A
    & i8 I/ Z3 b' p( h
  1748. TAY$ D( I5 L" s& x% Q7 |( ^& @5 b3 _
  1749. LDA Sound_Init_Port,Y" w0 U$ d* k& {. b, t+ @! O6 @
  1750. STA <JSR_Addr_L
    - J9 K. c/ I  L
  1751. INY- N1 N1 x  l( o
  1752. LDA Sound_Init_Port,Y
    $ H( P: f1 q0 T, H2 @
  1753. STA <JSR_Addr_H( u$ ~5 r2 n/ S( w  g
  1754. LDA #$60
    1 F$ a% q( z9 J) |+ S. x5 y( N5 J
  1755. STA <JSR_Addr_Rts
    . M$ m* q4 ^# I# M  Y( u4 v8 f
  1756. PLA
    ; }. ?' c1 Z/ C% P7 A7 }0 }" ^$ N
  1757. RTS* l" Z, W2 z6 D1 z5 v% v
  1758. 0 f' N% K0 }$ y. b) F) n
  1759. Set_Sound_Play_Port
    ! Z# L  d. c2 ?' o& `
  1760. PHA
      E3 g: U: g! X: ~4 [5 u) U  G* {0 j
  1761. LDA #$20
    1 F# K" B& T) o$ c6 B8 j3 }" a8 V& p
  1762. STA <JSR_Addr_Op5 V( z& V) ~8 o' m3 N9 t! h
  1763. LDA <Music_Item_Cur
    ( s3 C/ ], C4 j
  1764. ASL A2 z- j5 y; }( B
  1765. TAY/ k1 P) t* f1 w. e& k# h4 d2 {+ r
  1766. LDA Sound_Play_Port,Y
    , y+ B$ O$ x! s! B& x! k: S& n
  1767. STA <JSR_Addr_L7 X' |! @* L7 o- |. w6 o
  1768. INY0 Q0 q4 t  N' p# X+ S: e7 ?3 W
  1769. LDA Sound_Play_Port,Y, M) z) h; r* V5 m9 v
  1770. STA <JSR_Addr_H
    2 v3 b# M+ Z( K4 t' R  [7 e/ [3 ]4 N. V
  1771. LDA #$60
    2 ^8 I. V& ]; `1 M  p
  1772. STA <JSR_Addr_Rts
    1 N" w: t6 w+ I
  1773. PLA
    1 {/ u( F7 h4 F: k! O: {* r
  1774. RTS5 c) P. U  d: v0 I3 s

  1775. - g4 A3 \, h- F. ^2 F$ d
  1776. Set_Sound_Reset_Port
    # ~( S8 d1 }& ^( |' q7 Y: q9 ^( ]9 x
  1777. PHA5 ~' F* @/ w4 Q* l  _/ }6 j$ I
  1778. LDA #$20
    2 g3 a; \' M. L1 ], C0 ^
  1779. STA <JSR_Addr_Op1 L+ ?0 O- y2 g
  1780. LDA <Music_Item_Cur
    8 e; S, w$ @: |% b) R
  1781. ASL A
    / k: Y# Q/ z5 W
  1782. TAY
    $ q5 o( k! N4 P0 t4 o
  1783. LDA Sound_Reset_Port,Y: e- z( T5 }# X
  1784. STA <JSR_Addr_L3 @# f/ u7 c- u. P+ B
  1785. INY: W% v4 ~/ A' Z1 O3 q9 g
  1786. LDA Sound_Reset_Port,Y; R2 q) y: P5 X2 ?
  1787. STA <JSR_Addr_H
    8 J& Z& c. E- |/ [
  1788. LDA #$60
    1 K( I6 ?. D. ]. G) O, ?
  1789. STA <JSR_Addr_Rts
    4 [. B; w- G! p2 X+ }0 w# z
  1790. PLA" a( ]* S) Z# [8 J/ s! H
  1791. RTS9 v0 v) R4 b* E
  1792. / u- P3 r0 @2 L. F- e) u# N
  1793. ;初始化音乐bank
    % r7 [' }* n; Q4 P3 K+ ]( ]
  1794. Init_Sound_Bank/ i7 D% B! u5 P5 J
  1795. LDY <Music_Item_Cur6 h$ O+ s9 u1 Z) H7 O2 {
  1796. LDA Sound_Bank_8000,Y
    0 b% f/ s! M$ w4 r  R1 J, I0 j
  1797. STA <Music_Bank_8000/ @, K9 |7 K# e' ~) |( h/ p7 w1 q
  1798. LDY <Music_Item_Cur
    & K. u  D% S9 o, c8 }7 z# _8 J& H
  1799. LDA Sound_Bank_A000,Y, M9 S+ I7 y" I7 j7 R
  1800. STA <Music_Bank_A000$ P5 M+ Z4 v- H) h
  1801. RTS
    " S2 ~& y5 w6 Y$ ]' [- o
  1802. 3 _& m, Y+ r8 Q  f; j4 o2 ~1 F
  1803. ;==================================================
    # E4 o, m& }# X
  1804. Sound_State_Reset;音乐状态重置4 o+ t! d+ ]% V' |% U" `
  1805. JSR Music_Bar_ReSet        ;重置音乐条$ Y5 N! M' t. B* O
  1806. JSR Time_ReSet             ;重置播放时间
    5 b7 K7 o( K: _7 q* M! A3 I
  1807. 9 o( y+ K2 x, P; |4 S3 ^( {/ \
  1808. LDA #$001 O% O+ K1 p( w" y+ Z$ D" P. E+ d
  1809. STA <Music_Stop_State( N8 x1 H# |' y
  1810. JSR Music_State_Show       ;显示播放状态
    ( `4 s7 n% I# p' o! `

  1811. , E* v1 a8 j% {9 T3 D; B2 O
  1812. .IF Track_Name_Pos
    5 G% z4 M( n! B2 L
  1813. JSR Show_Track_Info        ;音乐曲目名显示" \2 k" Y2 ]& J
  1814. .ENDIF
    * d' x$ `/ W' Y6 j* A
  1815. / U1 J8 [+ }0 }. P! S+ E( A9 b' p
  1816. RTS% ^6 m8 ^% M: b/ O1 `# g
  1817. 8 r6 r( n1 M$ e4 j
  1818. ;==================================================
    / q+ d/ K2 w$ X+ U* J) s
  1819. Sound_Init_Proc;音乐初始化处理
    8 W: G' W3 D4 u" A* `, C( @3 [' l
  1820. PHA# H, D  O5 S6 _! v
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址# O! M( m' x, p0 [1 I
  1822. LDA #$00
    . _5 k/ ~. m7 |/ e+ W( T
  1823. STA <Scroll_H               ;重设水平滚动8 g5 Z7 F  G1 y; A5 @
  1824. LDA #$0F
    $ M+ y7 G9 a6 g3 K- y
  1825. STA APU_STATUS' c& t, H1 w6 D: v4 s# B
  1826. PLA) _- {, t( V$ T  ]" T8 k! r
  1827. JSR Sound_Init             ;音乐初始化/ w; `' i/ U" o; E( L3 K' @3 j0 ~0 J3 F
  1828. JSR Sound_State_Reset      ;重置音乐播放状态/ ?% Q) W- `6 B- l3 ]" {$ m
  1829. RTS% @% P1 E( B% m8 o

  1830. 3 ]% X7 m& t5 P. w" {* f- Y+ C( C
  1831. ;==================================================
    2 ?! N# E% s! ]* x
  1832. Sound_Play_Proc;音乐播放处理( J$ d+ A( e) f; s/ k& q
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址- Y; j, K: j6 X3 Q& z- Z! l
  1834. JSR Sound_Play             ;音乐播放
    , A# R% _$ W1 N: F# [7 \
  1835. RTS% O- W7 O8 C% M% ^" v8 o

  1836. # R- S6 Z! w. E; M' [2 e) \0 o
  1837. ;==================================================9 }/ i8 d. b9 k
  1838. Sound_Reset_Proc;音乐重置处理
    1 W0 P9 J  S& J( O5 N& I8 Q+ Q1 H
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址2 \/ Z7 p  N# }$ B! a' Q7 [
  1840. LDA <JSR_Addr_L
    / W9 n( Z0 t( }- L, L
  1841. ORA <JSR_Addr_H2 s- f7 f6 k- B9 [8 X% O5 j) C
  1842. BEQ Sound_Reset_Proc_Default; j- |; @4 T) Q* ~* B, y
  1843. JSR Sound_Reset            ;执行音乐重置
    ( e& i( s: H8 a: |; A. U* \
  1844. JMP Sound_Reset_Proc_Init_Sound
      r/ Q: s5 U4 T& D7 c& Q3 J

  1845. 1 \0 E# f5 W8 Y5 h0 c. _
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理! _+ z, O, e* F2 n, ?* F0 ?7 b* B: O% W

  1847. + d( z) }* N) `: U, c+ ^1 C
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    0 R/ Y" q8 x9 G# S9 x3 ?
  1849. LDA #$00
    2 k& [3 g1 S1 Q
  1850. STA PPU_CTRL
    2 w4 y  g) r; p( I( M0 U) @( F

  1851. & P9 m7 P$ p( i/ S- E) E
  1852. JSR Sound_Data_Clear
    : K& C4 f& q. O  Z& J% \% w
  1853. : [/ n2 Y6 A, k  c7 J8 n
  1854. Sound_Reset_Proc_Default_Wait
    ! ^3 P+ n& s+ @4 B  b( w9 U( o; P
  1855. LDA PPU_STATUS8 w, H# u- R- @& a/ U
  1856. BPL Sound_Reset_Proc_Default_Wait3 ?- d. E& o% r" L2 B3 j) e. V
  1857. 5 }5 ~: L8 i1 L' L% u- O( ?  H6 B
  1858. LDA #$00
    7 E7 l- ~! Y% ~8 p5 {/ O
  1859. STA PPU_ADDRESS
    6 U4 }8 o- v, D: z) B5 b  p" m
  1860. STA PPU_ADDRESS
    - m) I% u* O( ^; m% I
  1861. STA PPU_SCROLL8 y4 _4 w- G" ?: b8 A+ E. i
  1862. STA PPU_SCROLL
    6 x; G3 O+ n9 f  s: {5 q# v

  1863. 1 O9 A* M7 O6 N
  1864. ;恢复PPU控制8 v4 o9 i$ T3 C8 y4 ?) k" a
  1865. LDA Screen_Ctrl" [  A8 v  o6 {8 Z1 {
  1866. STA PPU_CTRL
    ; M6 C: q5 J+ h7 g
  1867. 8 @5 w+ l/ l2 g9 S
  1868. Sound_Reset_Proc_Init_Sound% C" v4 p' u9 a  s
  1869. LDA <Music_Stop_State
    5 _$ X* R2 e& O, c1 {( h
  1870. BNE Sound_Reset_Proc_End) `6 O* S. U9 |7 H
  1871. LDX <Music_Item_Cur6 f3 ?3 z0 r  E2 J: v3 d2 O
  1872. LDA <Music_Cur,X7 N( B- ]: S1 g2 y. t& K# C( @
  1873. JSR Sound_Init_Proc  o# E) p+ `* D' ^) ?# P
  1874. Sound_Reset_Proc_End. N5 r' }* b# I/ |
  1875. RTS) x4 `1 l! a& {  m3 B* w- s  c- ?
  1876. ( ~  V* U7 K/ m# U0 b/ O
  1877. ;==================================================
    * r8 a- s$ v2 b) T" [7 @
  1878. Clear_Item_Text;清除页项目
    " t( \  n# R: g  V
  1879. LDX PPU_Cur/ E# i# a; a* E5 F; T+ u3 s
  1880. LDA #PPU_MODE_CNT_CLEAR" j0 o: G, j  \: [& L& m
  1881. STA PPU_Addr,X
    - ~' X1 }9 F" ^: s
  1882. INX4 Q1 z5 s5 w7 O+ G! t/ B1 _

  1883. 0 M' J9 b7 g6 G) N
  1884. LDA <Page_Last
    ; v( O+ `" _$ I' R: w
  1885. SEC1 _' k( @8 e' j9 Z" D$ c/ D
  1886. SBC <Page_Last_Index
    1 l5 j; @7 {  M% d
  1887. ASL A
    & j" r# y. \3 ?; S

  1888. - i; v6 x, v  a2 A! y
  1889. TAY( J7 y! f) y; ]. C$ a: i
  1890. LDA Item_Pos_Data,Y
    - p& n4 {" t7 Q0 c# L0 f( Z
  1891. PHA
    * C% z2 r6 o* w6 }$ w
  1892. INY5 W! t7 S1 j+ k, t# c
  1893. LDA Item_Pos_Data,Y
    ( V* c1 Y# ^' m5 _8 G3 V6 c
  1894. STA PPU_Addr,X
    - |9 c% w( [% @- A4 u
  1895. INX0 g) H  e7 _3 q9 _
  1896. PLA) a# ^0 c* F* e/ |+ }
  1897. STA PPU_Addr,X" U& j  t/ c8 Z4 P, \
  1898. INX% s: K1 h3 Z  Z- {% m2 _$ o
  1899. & E# Q  g8 y# q" S7 d
  1900. LDA <Page_Last# c  i9 _( b1 k2 h6 C0 ^& i
  1901. ASL A
    ; ~( M6 z* ?- t" @
  1902. TAY8 y, |) T+ B3 m+ V" E
  1903. LDA Music_Collection_Name,Y
    ( L3 n- O0 |( k, a) e1 l
  1904. STA <Data_L6 R) m' r& C' \: I" `
  1905. INY
    9 g4 g: J# l9 I6 Q" m. @
  1906. LDA Music_Collection_Name,Y
    - N) R& d( I# U7 E. }( t( n
  1907. STA <Data_H
    / ^4 v4 Q6 |/ ?( F/ ]- s3 L
  1908. 6 ^; W1 f$ [4 F! w2 r  l
  1909. LDY #$005 Y2 `$ v0 {- P: o- S' ]4 u
  1910. LDA [Data_L],Y
    # }8 K6 {5 P' T4 h' d, `
  1911. STA PPU_Addr,X
    3 J! m, j; q8 y) g
  1912. INX* U* I# `$ B1 n
  1913. Clear_Item_Text_End
    5 L  y) E/ s) U( E. [1 M: ?+ x9 J1 C
  1914. STX PPU_Cur+ [% Q. ~. S: m0 D
  1915. RTS1 U& H( v0 Y  X1 m. j7 x
  1916. 0 w9 ?8 s" w4 k8 s$ c% k
  1917. ;==================================================
    ( F3 |; @+ j: g( F
  1918. Show_Item_Text;显示页项目- x$ {1 F5 S. W
  1919. LDX PPU_Cur  I4 \- v6 _/ ^9 C6 K& F( {1 }
  1920. LDA #PPU_MODE_CNT_LINE/ R8 k0 N- P3 E9 y  k3 O/ B$ o
  1921. STA PPU_Addr,X
    6 o/ c5 f) M2 ]) ~6 ^3 `% {
  1922. INX5 g  U- L! J. }9 w  T' Q- o
  1923. LDA Page_Cur
    1 i( q( L0 I3 l$ y2 Y& X
  1924. SEC
      @( y) d1 }$ d
  1925. SBC <Page_Cur_Index
    : _$ W$ I5 m) }3 u
  1926. ASL A
    ) `8 P8 f# o  U% J# m8 [
  1927. TAY
    3 {& L* I$ V& ]2 i5 ~  ]  N! y- A
  1928. LDA Item_Pos_Data,Y
    6 v/ E4 o# R4 R- i
  1929. PHA+ N/ A9 y% p7 y1 z7 h
  1930. INY# M$ f8 Q6 l& ~
  1931. LDA Item_Pos_Data,Y
    ( Y8 A5 a- d# d4 K
  1932. STA PPU_Addr,X8 T6 E4 d( f* |  w
  1933. INX1 F! I3 Y9 j5 r. e% C7 t0 P% N  c" n+ w
  1934. PLA
      w0 A" c* c4 K4 I7 `
  1935. STA PPU_Addr,X5 e( G( T" m" l' a
  1936. INX
    " F3 V' X( }. z% N; {1 j

  1937. & d  `1 x3 G# M) w% c& w9 x
  1938. LDA Page_Cur
    ! {7 ]9 ^! N; h' n5 e  `
  1939. ASL A
    * y, N* I) n( I$ d0 y8 K- d: ^. [  A
  1940. TAY% @, q! t' d4 X2 T- y: b9 {. j6 ]
  1941. LDA Music_Collection_Name,Y) @; w& Z' u; c3 ?7 A1 W5 ^3 u
  1942. STA <Data_L
    % o& l8 a4 M# a, V( ~* o2 `; c
  1943. INY
    , ]  k/ I3 M5 ^8 Z+ m" A9 K3 M
  1944. LDA Music_Collection_Name,Y
    ( d, A: T. o" w" T2 O" \
  1945. STA <Data_H4 D! L; n" p$ w( j& C" x
  1946. $ L' h0 b# a" x, P- _$ x! N! ^3 o
  1947. LDY #$001 U; v, M- S1 |# f1 I
  1948. LDA [Data_L],Y* q4 E# S9 \- `: Q- W8 t! m7 Z* A
  1949. STA PPU_Addr,X
    $ X* P" q- d9 K9 Q& a, a- a
  1950. STA Data_Cnt
    ( t+ F) k2 L; c2 _+ `! f4 B
  1951. INX9 U) M+ w4 f: z$ c

  1952. / s+ ^/ n4 _8 W* w
  1953. INY; ?* `/ ?# }# M; \# L. f2 Q
  1954. Show_Item_Text_Write
    5 n/ [6 \6 L3 n
  1955. LDA [Data_L],Y1 \5 K$ I$ _7 O5 ]! @0 L7 a
  1956. STA PPU_Addr,X
    3 b% H+ X4 d/ S5 O# J0 p
  1957. INY3 p) o) T1 @4 E
  1958. INX
    1 S! Z( m, a: u) k, a* @
  1959. DEC Data_Cnt
      h: g8 V  H+ j' }. Y$ W
  1960. BNE Show_Item_Text_Write
    4 L9 I2 T5 ~. E9 U) ?+ T) r

  1961. 8 D- g) y' I% K, v6 C* V
  1962. Show_Item_Text_End; m8 h0 ~( n7 |1 m5 U
  1963. STX PPU_Cur- B; Z8 [0 {; ^: k5 b1 I- f4 N
  1964. RTS. \" N7 y( s; Z8 d, ?- B% W6 D

  1965. # J' k! c0 T$ _
  1966. ;==================================================$ _/ T/ S  v: N
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量; T7 y6 k1 v* [9 J. k8 b9 C
  1968. STA <Data_Buf
    7 l& ~9 R7 E8 m, {* \9 g
  1969. LDA #$00* v. B* j, u4 r4 _+ Q% f. G
  1970. Get_Page_Index_Calc
    4 j' h9 l, L: y1 |
  1971. CLC1 _+ ~9 o+ q; _& g
  1972. ADC #PAGE_SIZE4 c2 A2 l4 o- B8 O2 O& @
  1973. CMP <Data_Buf" t8 e, N# \: R. w
  1974. BCC Get_Page_Index_Calc9 L6 D' M" e, \8 Y2 X, Z
  1975. BEQ Get_Page_Index_Calc_End
    ! k# H' p1 Z( V2 R1 G4 U
  1976. SEC: U& E. n! R: b; }" Z4 L
  1977. SBC #PAGE_SIZE
    . a% w& B3 y/ J2 h; V
  1978. Get_Page_Index_Calc_End
    1 }  {) n4 u( l. T* l" F: Y
  1979. STA <Data_Buf
    # K: v! ]) I8 ~& X0 d4 D9 v
  1980. Get_Page_Index_Cnt$ Y5 g! p, h% j$ z
  1981. LDA #PAGE_SIZE
    ! G9 n( E; F1 {) l4 H+ x8 o( T
  1982. STA Data_Cnt8 {& ^1 \* t- l+ b; q/ S
  1983. 4 Y& C7 q5 w- j3 v
  1984. LDA <Data_Buf5 N4 j2 E: G4 k( Z( f9 K6 n
  1985. CLC5 m0 {# @8 D9 Z( b3 L
  1986. ADC #PAGE_SIZE
    7 E) T. E/ r, T7 T
  1987. CMP #ITEM_MAX_SIZE
    ' z1 x+ W2 f9 _) F) h
  1988. BCC Get_Page_Index_Cnt_End! C: n3 w' f; g5 \
  1989. / Y1 u. e% }0 S6 {/ L9 _
  1990. LDA #ITEM_MAX_SIZE
    # }/ p# H' s) q: W6 ~
  1991. SEC
    - d1 q  e% F. r% P1 m4 ^) z% \
  1992. SBC <Data_Buf
    " `" j5 R  p. k' K3 y
  1993. STA <Data_Cnt# Z* f+ Q8 F  V$ x4 a. X; S
  1994. + Y! j9 s9 c7 i1 z/ Y
  1995. Get_Page_Index_Cnt_End
    & e7 {4 e2 ^+ ^# `/ v7 ~2 |
  1996. RTS/ W. m: o8 y7 o1 E* f3 O/ c

  1997. " V6 b  h  T/ }3 L. F( F
  1998. ;==================================================5 Y9 V, f: d$ u8 j$ s
  1999. Get_Last_Page_Start_Index" r) [7 C6 O( g( g, Z% ]8 e
  2000. LDA <Music_Item_Last
    . v* u) _! v4 _0 d1 \
  2001. JSR Get_Page_Start_Index; Y% Y! h1 a0 e: H5 z
  2002. LDA Data_Buf1 w9 S& Y  x# E
  2003. STA Page_Last# P* U- A( x/ ~2 C5 @' D* s% l9 [
  2004. STA Page_Last_Index
    / f) J  |% B  F/ u* T+ g
  2005. LDA Data_Cnt: n+ P9 U$ W! P9 r
  2006. STA Page_Last_Cnt$ h9 V8 w6 T$ D  l3 m5 Z! z
  2007. RTS0 t. _2 d4 a! R# H$ M& r; G% l. {

  2008. - Y- `" P# \: i' x/ i  V4 ^
  2009. ;==================================================
    0 p, X/ c! j* {1 {$ m+ Y
  2010. Get_Cur_Page_Start_Index( f4 L# K( q+ v( w
  2011. LDA <Music_Item_Cur
    3 n  s  k1 e, ~) Q9 U! @6 ]
  2012. JSR Get_Page_Start_Index% [- j8 I3 D; f+ @* m
  2013. LDA Data_Buf5 g: i; ], m! ^4 y
  2014. STA Page_Cur
    ' I) m  }& l  u4 i* S) e# i/ r2 L6 J
  2015. STA Page_Cur_Index
    " ^' }- D7 y: ?+ Q  W7 z* j3 d" A
  2016. LDA Data_Cnt
    - k2 u4 |: `6 N( p+ U; ]3 @
  2017. STA Page_Cur_Cnt& H' L6 B  R- D; M
  2018. RTS
    . U( _3 C) R1 |0 K  X7 D
  2019. # l9 M4 J- i9 X# I
  2020. ;==================================================
    4 H, m+ y8 [* h% B
  2021. Show_Page_Text;显示页文本/ j; n  {3 x( W2 f
  2022. LDA <Text_Disable_Flag
    + c( T' {) ^5 q% g, c. Q
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    0 A( {6 T  s# n4 L; j
  2024. STA <Text_Disable_Flag
    ) V, P' p$ ?0 Q/ ?
  2025. ' N  L/ G8 S, n/ {8 S" F% ~
  2026. JSR Get_Last_Page_Start_Index
    $ ~" c. ]5 M* }; X7 w* F
  2027. JSR Get_Cur_Page_Start_Index/ u- P% h/ S% m+ T* n1 a- F

  2028. 1 h! }: D. f. n# D- H
  2029. Show_Page_Text_Set
    " @0 }0 w# {! K& w$ f
  2030. + @1 N2 C( i9 r: P! h( z/ g
  2031. Clear_Page_Last_Item;清理上一页. O* [) b9 b1 x( k
  2032. LDA Page_Last_Cnt
    / R2 S# l7 J) {7 H" E2 Y; J
  2033. BEQ Clear_Page_Last_Item_End$ L* _8 d: E' E7 Q& c
  2034. JSR Clear_Item_Text
    $ Z5 D" U" c$ w
  2035. INC Page_Last+ f! ^& [8 X1 ^; E9 d5 w2 Y
  2036. DEC Page_Last_Cnt+ |, r  U; F3 e/ }
  2037. Clear_Page_Last_Item_End
    1 ^) y9 M, r% o( {5 k5 X9 V& T
  2038. * O+ e# m* j7 t. C+ l6 T0 Z
  2039. Show_Page_Cur_Item;显示当前页
    # S  c; h1 \* F0 W* i0 q" l
  2040. LDA Page_Cur_Cnt4 k$ z  o* V: B5 t" Z( I# h2 L
  2041. BEQ Show_Page_Cur_Item_End2 }/ u) l  a7 M) b5 t
  2042. JSR Show_Item_Text. r7 P, N. |- ]8 w
  2043. INC Page_Cur
    " U; @; H7 E4 H6 f; e1 C6 g
  2044. DEC Page_Cur_Cnt3 R6 B" F# i8 E8 d- G+ h+ D
  2045. Show_Page_Cur_Item_End
    . ~7 y2 q' g9 T4 b& l! g
  2046. 2 A0 @$ l6 }5 A0 P; c
  2047. INC <Time_Wait_Cnt1 W+ n0 d6 K8 q- w+ j, x
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
      e( u& M8 s3 v: {) k5 ?# ]$ B
  2049. LDA <Time_Wait_Cnt
    8 m% i  E, u4 a  g2 Y4 G' z' I$ L; q
  2050. BNE Show_Page_Text_Set_Wait
    ( U! N+ V) n. ~' P- \
  2051. - q  D  c6 Y+ d( P+ v9 F/ u4 Y
  2052. LDA Page_Last_Cnt6 W; {( k6 H+ ~9 \/ _# _8 m
  2053. ORA Page_Cur_Cnt8 J3 G6 E  L& O3 m7 F- F" _
  2054. BNE Show_Page_Text_Set8 U% r# Z8 ^+ _/ f
  2055. LDA <Text_Disable_Flag# N2 [% W% o) V7 D
  2056. AND #TEXT_DISABLE_ITEM ^ $FF. Q: Q8 B1 i9 l9 Q* Q3 J0 c5 J
  2057. STA <Text_Disable_Flag" l7 j, M" x0 O/ G. k! e( n
  2058. RTS
    6 ?4 Z, ^. \* M+ O3 G/ }( G  ~

  2059. ( L' E7 |. j3 K& @
  2060. ;==================================================
    / F+ ^2 ^* z2 _
  2061. Last_Item;上一项
    : o' c. C8 [3 x
  2062. JSR Clear_Last_Track_Name
    + w* s$ d9 `) ~2 S
  2063. JSR Disable_Text_Draw# M7 h* i6 U- |

  2064. ( E; M" t% r# m  _  f
  2065. LDA <Music_Item_Cur
    6 w! _8 _$ p7 a& D# s9 D
  2066. STA <Music_Item_Last6 v) I7 I% o% L

  2067. ' s$ D0 w' U2 d4 w0 Y0 J
  2068. JSR Get_Last_Page_Start_Index
    ( [: k: I; D0 N/ G3 s$ Z# o

  2069. . d: p/ r2 y5 W5 r: t% N) s
  2070. LDA #$00  ~1 i% o) V( p, D
  2071. STA Data_Buf
    3 `" n& x$ q  i* O6 D" K6 |4 C
  2072. 7 f+ n/ y7 y. @0 ]; k
  2073. LDA <Page_Last: W4 ]) p" ^( N  K) D, E( P* g& D
  2074. CMP <Music_Item_Cur7 |3 \' y: o: l, d1 I
  2075. BNE Last_Item_Begin
    3 Q" W/ U) U3 {& o" G

  2076. ) e- ]3 K6 P9 i" g# W, i$ Y
  2077. LDA #$01/ x$ a2 @/ T0 k
  2078. STA Data_Buf
    ! a& K% D, \" X
  2079. Last_Item_Begin
    & s% m- c8 W% f2 B% e
  2080. LDA <Music_Item_Cur
    / @/ e8 W5 c8 X  x9 Q$ L
  2081. BNE Last_Item_Set% M# ^' K% t* b; r
  2082. LDA #ITEM_MAX_INDEX + 1. O/ k0 Q! u" B9 e
  2083. STA <Music_Item_Cur- j* U* ^; Q; y) r$ D4 h
  2084. ! M7 p8 r; O- L' L% P- u
  2085. Last_Item_Set( ]  E+ O, t% }5 |1 k. d% L
  2086. DEC <Music_Item_Cur  c# C' m8 n- ^; e- r3 ~
  2087. LDA <Music_Item_Cur8 F0 G6 z. \1 J$ b. s8 W- {) t
  2088. JSR Reset_Current_Music
    5 P& Q4 ]* ^- K" ^

  2089. 7 J/ M& z0 }" V: C: a9 C
  2090. Last_Item_Play' d; l( l  c. J$ r3 D# p
  2091. LDA Data_Buf5 f  O9 L; b; x, w" G
  2092. BEQ Last_Item_End
    " z4 V0 V4 L- E4 H
  2093. JSR Show_Page_Text7 v! j0 T  D0 j. x* o1 ], x( Y
  2094. Last_Item_End$ O# G$ F- H" o4 k% v' x
  2095. RTS
    3 A5 P; ]% n' c8 r* ]3 F9 @2 s0 p

  2096. : `1 n+ c& ^& h, a+ n; K
  2097. ;==================================================
    8 h1 V7 ?6 X: o! j2 @
  2098. Next_Item;下一项
    , {( j( O% ]6 u6 }/ c  D
  2099. JSR Clear_Last_Track_Name
    ; ~% C0 g" q, v) D
  2100. JSR Disable_Text_Draw8 D' p5 J- _# W2 |! a. S0 W: c* E8 A

  2101. 4 w5 J' S/ m9 [% R8 q
  2102. LDA <Music_Item_Cur
    ; a' O# R, N- h. }8 T9 G
  2103. STA <Music_Item_Last6 z' M, Z# o0 j- s! O0 f2 ~

  2104. & g  ^3 b! X8 M) H2 Q2 V) F  E' M
  2105. JSR Get_Last_Page_Start_Index
    $ I! C8 q& F) n0 N  [

  2106. ) @. v6 }; s% N; S% U
  2107. LDA #$00
    9 _; A" s1 q0 R0 g0 x6 T3 g% s
  2108. STA Data_Buf
    1 C* d' I( ?: v

  2109. 8 g, Q# n7 q" ^. `# A
  2110. LDA <Page_Last+ S) @2 P$ ?7 u
  2111. CLC1 X, N- J* O! Y) m
  2112. ADC <Page_Last_Cnt; e. J3 Q: L9 n, R/ d1 Y
  2113. SEC& c3 E* N/ ]4 d# P
  2114. SBC #$01
    % W2 Z7 m- {& J1 M7 E, x) M$ G
  2115. CMP <Music_Item_Cur
    ( c, X2 g' W% N/ f3 Y( I6 {( R
  2116. BNE Next_Item_Begin
    , [" L+ ~* d  u0 |: l  n

  2117. / ~# Y! ]& L2 F) |
  2118. LDA #$01
    & m/ l: u7 w' E, f" P
  2119. STA Data_Buf) O) t# Y0 n$ C/ P
  2120. Next_Item_Begin1 b( N4 F4 x2 a1 W$ \0 l
  2121. LDA <Music_Item_Cur0 b5 C# @, c/ r; V8 b# H( r2 Q
  2122. CMP #ITEM_MAX_INDEX" Q: p! ~/ K8 z, p
  2123. BCC Next_Item_Set  S  L5 |9 q+ t! D- X% Z" V: B
  2124. LDA #$FF
    ) r$ G1 d3 i8 Y
  2125. STA <Music_Item_Cur( l3 B' `7 L7 \& r" m& A
  2126. Next_Item_Set
    ( \  p8 n  \( T9 B
  2127. INC <Music_Item_Cur
    " q3 s4 f7 V5 w
  2128. LDA <Music_Item_Cur3 q8 y' T, ^1 R  b5 k/ |1 P0 b- s
  2129. LDA <Music_Item_Cur1 a4 A; @# C* Q7 T
  2130. JSR Reset_Current_Music
    5 Y! a9 d& y3 p1 P$ o" ?6 i8 \
  2131. Next_Item_Play
    . i( U+ t% G, C. k0 u
  2132. LDA Data_Buf
    & P  `0 I! r' R0 l' ]( e
  2133. BEQ Next_Item_End
    $ x& @9 R9 B. f& c2 m
  2134. JSR Show_Page_Text, c# N# K' m) U- q0 `9 [
  2135. Next_Item_End/ p  p/ V7 _5 L8 n
  2136. RTS$ s6 d& V: _$ h0 Z
  2137. $ D3 b# b' m4 L: a! @5 V
  2138. ;==================================================
    * m6 a! y$ O4 O$ F1 n# n( J7 \) A
  2139. Last_Page;上一页& j2 _' W' ~' c1 F
  2140. RTS* p$ D1 F& e6 O+ E

  2141. * u5 @. d" E2 |8 Y/ N( m
  2142. ;==================================================
    2 E8 h' r+ m8 U0 r8 k
  2143. Next_Page;下一页  H8 T& D6 K8 u3 [9 ]. f: a1 A- V
  2144. LDA #PAGE_MAX_INDEX
    1 Q2 @3 C4 G$ U3 L, J" d* M; B7 |
  2145. CMP #$01) P9 \0 b+ F# ~* F5 g
  2146. BEQ Next_Page_End
      ~( h; e5 ?( H; j# X

  2147. ! ]# X4 h$ A' J7 y# m3 G# m
  2148. LDA <Music_Item_Cur+ r- c9 Q4 |) @7 z  k2 D
  2149. STA <Music_Item_Last
    " W6 x$ c1 o+ G+ ]; a: [  H

  2150. ' D6 Q! b# E0 z% s. U  r
  2151. JSR Get_Last_Page_Start_Index; h+ p# g8 B1 K! p3 q" A
  2152. 4 G# v# ~; \6 v
  2153. LDA <Page_Last_Index! v8 T8 X; B& P  {
  2154. CMP #PAGE_MAX_INDEX
      `$ T- P4 v; k, a3 Q" U7 z
  2155. BCS Next_Page_In_End_Page
    4 v8 O0 O8 t) e! X" o

  2156. 7 Z4 T, v8 s. o0 e
  2157. Next_Page_Not_End_Page;不是在最后一页
    ) ^0 ~/ x' h' N3 {. l
  2158. LDA <Music_Item_Cur' L, M' p8 `, I. }1 o/ Z
  2159. CLC% h/ m! C) u& i; _* N* [/ W6 T
  2160. ADC #PAGE_SIZE
    & r6 Y$ j) y; a2 H3 ^# r
  2161. CMP #ITEM_MAX_SIZE' z& @3 K0 s) ~. u
  2162. BCC Next_Page_Not_End_Page_Less7 Q- I  `# r' W( H% [* Y2 p
  2163. LDA <Music_Item_Cur; d- ^7 s7 i# ^8 i' _+ T! I
  2164. SEC
    * a; C9 Y( X, `/ O
  2165. SBC <Page_Last_Index
    " h- q4 Q# s7 K/ d4 s, }2 ~
  2166. CLC
    & N1 O6 r/ i5 L2 G8 W; `1 [
  2167. ADC #PAGE_MAX_INDEX
    % B# Q  X& {" B. c  V% e
  2168. CMP #ITEM_MAX_SIZE
    3 d8 l" c) u" l
  2169. BCC Next_Page_Not_End_Page_Less0 x) _" l* w8 @0 f: T. F* \
  2170. LDA #ITEM_MAX_INDEX4 u- Y+ g3 _/ l7 Y* r6 p
  2171. Next_Page_Not_End_Page_Less8 p8 N( h$ g9 F5 y( R+ b" G  n
  2172. STA <Music_Item_Cur
    # U" ]' i. D. L$ _! o
  2173. JMP Next_Page_Reset
    * W  A# ^' Z5 I* B

  2174. 3 O, h, a7 f; A
  2175. Next_Page_In_End_Page;在最后一页; i) l  ~3 Q! K" P
  2176. LDA <Music_Item_Cur
    , T9 c  D2 @4 S4 N% y' E
  2177. SEC: W6 n! U& o+ g% b- X7 g" ?/ T
  2178. SBC <Page_Last_Index8 c( Z9 m/ j: U$ e1 n, K
  2179. STA <Music_Item_Cur
    ' K6 W! b) {. D( z
  2180. : C( E: k6 H. M9 g  D
  2181. Next_Page_Reset# V9 I9 z" l/ f- H+ d3 z
  2182. LDA <Music_Item_Cur* Q8 L+ Z3 R/ C8 W* R
  2183. JSR Reset_Current_Music( g6 r6 a8 W6 j7 D& S1 D' N
  2184. JSR Show_Page_Text' G: C# j0 y4 G0 H
  2185. Next_Page_End2 X" q: {6 w2 R& @1 d6 B5 `1 W
  2186. RTS% Q0 G! L; M9 ?
  2187. * M! |9 c  r5 }; T6 V0 t
  2188. ;==================================================: c6 Y4 _; z  L# ~
  2189. Disable_Text_Draw;禁用音乐条刷新* v$ L' k* v! j4 ?( T8 w$ }# @% u
  2190. LDA <Text_Disable_Flag. A: f4 r* ^0 n, [3 w
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME! r8 ?& Q. {0 G1 O8 E8 D
  2192. STA <Text_Disable_Flag
    7 ^4 a1 z) c" v' j8 w1 @, {6 ^2 V# e2 Z
  2193. RTS4 @; s# V# i* O, U* Z/ l$ a
  2194. 5 q/ V/ y( d* N! g4 D
  2195. ;==================================================
    " }* c( ?$ s1 h4 C0 H* i. n
  2196. Clear_Last_Track_Name;清除上次曲目名
    ( K% \. I+ Z0 W
  2197. LDX <Music_Item_Cur* J) }. @* B# a8 h, c4 m/ i
  2198. LDA <Music_Cur,X0 t: a& i* t6 ^3 G# K0 b
  2199. .IF Track_Name_Pos) ^  `% R) O' i9 c
  2200. JSR Clear_Track_Info+ s7 P) X, ?1 _8 r3 [% ]& p) P
  2201. .ENDIF
    9 u# ?. r: n9 e
  2202. RTS
    & q1 U1 o/ a! @7 z) K# I

  2203. 4 a9 `/ p1 ]1 E6 z/ b
  2204. ;==================================================
    $ y6 i% ^& z* f6 {* o  v7 K
  2205. Reset_Current_Music;重设当前曲目
    & ?" u6 E9 j6 S1 `; D7 R
  2206. / j" @# D5 t  O6 f% G3 U" M
  2207. ;写入当前总曲目
      K+ R, h/ Z' U- ^2 ^( `) \
  2208. JSR Set_Sound_Total
    9 x5 ?% C; `) c* l( `
  2209. LDX <Music_Item_Cur& H* z5 A8 j% w" ?- v. E+ a7 K$ Q

  2210. - s( u% `& U& _6 ?: m
  2211. LDA #$00
    & b* i1 A5 f8 x, d8 n
  2212. STA <Music_Last
    ' |) k6 }7 D: S7 T
  2213. 9 Q! u: B! e5 e, j
  2214. JSR Sound_Reset_Proc
    0 U& M! b9 F6 [- H) N8 F0 g+ k
  2215. JSR Music_Show% N9 |; K: V. Z
  2216. RTS" s3 K5 Z- E; s0 C! t2 j5 k9 S
  2217. 3 E. Q8 i4 P) G$ }# L2 i
  2218. ;==================================================7 e/ L/ a- p9 Y# O) h1 U" A
  2219. Music_Song_Stop;音乐停止
    ( ^, v) N- b8 r
  2220. LDA #$01
    0 \) j# `8 r+ e; s& d
  2221. STA <Music_Stop_State
      D7 Q' j1 h* ~5 q- D: O3 _# B5 a
  2222. JSR Music_Bar_ReSet. y, [# F* A9 p- p
  2223. JSR Time_ReSet
    2 N4 {0 K3 ?4 Q4 r& p1 ]- a
  2224. JSR Sound_Data_Clear
    , ]7 h" H' `7 V2 r
  2225. JSR Music_State_Show6 H5 ?$ \: p; d, c0 G
  2226. RTS& D# c. E7 m/ K  l) O
  2227. : K$ i- G# L  G" ^" A+ w) [3 i0 M9 c
  2228. ;==================================================6 ~0 z) c: d* W4 e! ^
  2229. Music_Song_Play;音乐播放
    # g: A( {9 m- G  o6 v  U
  2230. LDA #$00! V% V+ ]: n( f
  2231. STA <Music_Stop_State$ B2 o4 a. h( V* w& d
  2232. LDX <Music_Item_Cur4 g  S# P2 A( z8 b2 u/ d. }) Y
  2233. LDA <Music_Cur,X
    8 \. c( T3 S' F9 @3 ~1 Q* Y2 b9 S0 v, k
  2234. JSR Sound_Init_Proc0 b% M5 q6 E; ]9 _
  2235. RTS
    $ i3 n" s; s* {) U$ X* p

  2236. & c  }% F7 C4 W# a- Z) n3 n( d
  2237. ;==================================================( W8 X% {8 H. v) u2 z3 z
  2238. Music_Song_Last_10;上10曲* f9 e) P: F( H
  2239. JSR Clear_Last_Track_Name/ J: _; `2 W( }6 L
  2240. JSR Disable_Text_Draw( c" l/ X1 Z  N  w
  2241. LDX <Music_Item_Cur
    3 X- P# L& I, B$ q
  2242. JSR Set_Sound_Total
    5 b2 h: E" R4 f
  2243. LDA <Music_Cur,X
    + r0 `; l3 W# Z" Z% J: Z+ t5 _
  2244. SEC, ?. ?$ x& J& H1 w+ A% G8 o/ Y
  2245. SBC #10
    2 V6 ?3 ^0 Q' X1 K. n: D
  2246. BCS Music_Song_Last_10_Set
    . N: L- X: d6 W/ M  P4 y
  2247. LDA #$00( X: I( j2 q1 A9 E
  2248. Music_Song_Last_10_Set% s; y+ ^' S$ o* G: l4 p) [
  2249. STA <Music_Cur,X
    ! a  c2 t5 Q0 K1 m7 G$ X$ v  O
  2250. JSR Sound_Reset_Proc4 v4 w; l& J- |: U4 V
  2251. JSR Music_Show. [* Q+ I$ }! X& h# ]
  2252. Music_Song_Last_10_End
    ! e4 j* P8 g' ]* K* U
  2253. RTS8 D+ V2 S0 t; p: B
  2254. / i' y. y6 h' c
  2255. ;==================================================6 m9 k& ^! g! U
  2256. Music_Song_Next_10;下10曲
    6 B- u9 I- a9 R( @1 H6 d. V6 ~
  2257. JSR Clear_Last_Track_Name
    % J. q+ l8 w; x# m* m
  2258. JSR Disable_Text_Draw
    / Q7 C& u- {0 z
  2259. LDX <Music_Item_Cur
    ( |6 f( B9 ^" z; T/ U
  2260. JSR Set_Sound_Total
    0 ~7 B  q' K( Q
  2261. LDA <Music_Cur,X
    0 ?! E. C) p& J
  2262. CLC
    & L# G6 o: c. {
  2263. ADC #10
    9 I  c% ]8 r( Y$ |
  2264. CMP Music_Total
    # ]2 V$ i3 H% V& a, U2 D, k) {2 u' @
  2265. BCC Music_Song_Next_10_Set
    ( ]) }; V4 d' Z
  2266. LDA Music_Total
    ) I2 I) V& y& {3 O) Y
  2267. Music_Song_Next_10_Set# S) r  Q* J7 }& Y
  2268. STA <Music_Cur,X
    6 ?; Z+ E. n/ R2 T0 X
  2269. JSR Sound_Reset_Proc
    9 h$ B' B3 d6 ?1 j9 c( F& t. p
  2270. JSR Music_Show
    0 Z) j5 V5 s$ n" p$ j
  2271. Music_Song_Next_10_End
    " _6 i# H* r) z) i0 S9 s
  2272. RTS
    1 V. t( e, L% B% b

  2273. & N: B0 P" |6 t
  2274. ;==================================================
    ) _7 ~" ]7 N0 Z; `
  2275. Music_Song_Last;上一曲
    - t* W( J7 ~9 _3 q
  2276. JSR Clear_Last_Track_Name- d9 Z6 t1 A0 l( o3 L, H
  2277. JSR Disable_Text_Draw
    / g# |: |  n7 `0 ^
  2278. LDX <Music_Item_Cur: i, J& e/ h# ]. Q2 {/ _. V4 F
  2279. JSR Set_Sound_Total! c: {3 D( o9 s7 D9 d; A
  2280. LDA <Music_Cur,X: t+ H7 U9 I' |! v0 Y. z
  2281. BEQ Music_Song_Last_Set" F2 r, J/ E( ~6 i( n! z
  2282. DEC <Music_Cur,X
    9 w" S, C3 \; ~2 ]8 W& z7 W* j# K# H4 v
  2283. Music_Song_Last_Set
    , _! D; p! ^# r& W! F- G
  2284. JSR Sound_Reset_Proc
    8 n' Q: R) Z; D
  2285. JSR Music_Show1 M6 |, u! T& R
  2286. Music_Song_Last_End' w; X+ A+ _; V* a
  2287. RTS% b) G2 k+ M$ D  x

  2288. : @/ L# S+ |2 d. |3 l3 K
  2289. ;==================================================
    . I1 k6 I2 y+ f+ r
  2290. Music_Song_Next;下一曲. o# J- m; {; {
  2291. JSR Clear_Last_Track_Name
    8 n0 _8 ?+ j4 S' L
  2292. JSR Disable_Text_Draw
    # B, `! _" s! d
  2293. LDX <Music_Item_Cur
    3 \: G0 s* W4 j" E, U9 a: [- ?
  2294. JSR Set_Sound_Total
    ) e, v0 o. T! W' u! J
  2295. LDA <Music_Cur,X
    8 |7 x, R8 D- i5 {6 \+ [8 o
  2296. CMP Music_Total
    - F- `2 ?, t; `, U0 _
  2297. BCS Music_Song_Next_Set) z& E# t5 L' B; H9 B
  2298. INC <Music_Cur,X, U/ }: U* t  V$ O8 H
  2299. Music_Song_Next_Set% h7 z1 c# t# \
  2300. JSR Sound_Reset_Proc" j' A2 J; m% ]( |' R
  2301. JSR Music_Show
    ( G7 t* {* v: a" ^/ w6 p
  2302. Music_Song_Next_End9 y- p0 t5 g, e# J" B
  2303. RTS7 c; d! d+ ^/ ~9 b5 k
  2304. ( r$ y/ Z/ ?1 r
  2305. ;==================================================
    : _) M% x! `- G- d
  2306. Change_Select_Item;改变当前选择项  S4 I8 E5 \  \6 [2 ^) q
  2307. ;--------------------------------------------------
    " y: b  W- q2 G3 F* |) C
  2308. Change_Select_Stop_Play_Item;停止/播放% ^  H) \7 g1 i$ n# @, C3 o
  2309. LDA <Key_Once/ d' W) L6 ^. J  w/ a
  2310. CMP #$10! t2 s# \# A6 J2 O" ~2 C% n
  2311. BNE Change_Select_Last_Item3 _3 X: \- b4 p7 v
  2312. LDA <Music_Stop_State7 u4 h4 j9 d% n1 u' O
  2313. BNE Change_Select_Play
    0 P5 b& z+ Z" u* D( ]
  2314. JSR Music_Song_Stop" L* s: e; k0 W- I. w+ H
  2315. LDA <Music_Stop_State% g0 z7 i9 v% h
  2316. RTS
    ( {5 N0 `% R4 [6 f

  2317. & a/ m, G2 X0 h9 |& L7 g# j7 o
  2318. Change_Select_Play
    0 ]# C) @- j+ u0 {
  2319. JSR Music_Song_Play
    : d& V/ `- }2 \) O$ g
  2320. RTS
    / M, l, X3 E  T8 q

  2321. 4 d2 e! p5 P; x0 f# D
  2322. ;--------------------------------------------------
    3 T/ b2 y* Z' ~) t0 Z! f
  2323. Change_Select_Last_Item;上一个专辑
    " {7 Z6 q: G' K  }6 p, t
  2324. LDA <Text_Disable_Flag
    * h! J9 ^4 q3 v7 N7 J' m+ V
  2325. AND #TEXT_DISABLE_ITEM8 c! Q# f; _: |
  2326. BNE Change_Select_Item_End
    ( B6 h- G' K4 d+ i( ^9 a6 s; T
  2327. LDA <Key_Once
    : X; O' ~2 V" H9 C
  2328. CMP #$08
    ( ?0 O+ I( I0 }$ d" S/ ]8 ~9 o2 B: a
  2329. BNE Change_Select_Next_Item
    9 y* m/ _% c+ [4 D9 }
  2330. JSR Last_Item
    6 U! o" W/ X  a8 [( f
  2331. ;--------------------------------------------------4 k* V) m" ~. A( j+ T/ C
  2332. Change_Select_Next_Item;下一个专辑
    4 h/ d  g" W  C7 `( o6 O. f" a* u# l
  2333. LDA <Key_Once$ B  ]& |0 U& M# u$ e$ D
  2334. CMP #$04
    ' [0 c, D' H0 P
  2335. BNE Change_Select_Last_10
    / r* T) V: [+ r
  2336. JSR Next_Item" e$ V. t7 t$ v8 T+ ~
  2337. LDA <Music_Item_Cur. d1 c) D9 O0 R, S/ Q
  2338. JSR Get_Page_Start_Index
    & s& ~% y' ~* \
  2339. ;--------------------------------------------------
    # v, o/ `! W% z# ^2 [/ [
  2340. Change_Select_Last_10;前10曲/ \& Q! I: q. S# d
  2341. LDA <Key_Once& \/ v0 y* J7 W: i4 M
  2342. CMP #$40
    9 E+ E' U! m1 G
  2343. BNE Change_Select_Next_10
    7 _! E$ Q+ W: U( _/ y. P2 G3 V% q* T. m
  2344. JSR Music_Song_Last_104 A, [8 p4 f+ K$ F! y% I" X
  2345. ;--------------------------------------------------
    ! L8 v$ m! f$ X8 ^" {! n) A+ R7 A5 b
  2346. Change_Select_Next_10;后10曲
    . o; e$ n+ @, h- z& G, q
  2347. LDA <Key_Once/ P& c- [( c6 f- Z" C! {2 k3 x
  2348. CMP #$80+ R/ P1 p7 k/ Q+ M1 {
  2349. BNE Change_Select_Last
    $ x+ _5 S1 \; o  H* T
  2350. JSR Music_Song_Next_10
    , ?; w& n/ u9 p* I1 m/ s6 G$ w
  2351. ;--------------------------------------------------2 z4 K) w* [1 W5 ?; f. Q7 L+ L
  2352. Change_Select_Last;上一曲
    - H6 H( T3 n: V. D6 \
  2353. LDA <Key_Once
    ! L- R9 C1 f  w1 j
  2354. CMP #$02# }& G  z: P/ a+ P3 N& R( X
  2355. BNE Change_Select_Next
    . H- z$ q$ T* v
  2356. JSR Music_Song_Last4 ~+ @+ c8 f7 @% F
  2357. ;--------------------------------------------------
    4 q: x, A: p' a- Y/ J8 h
  2358. Change_Select_Next;下一曲
    # ~4 L& Y# H  k" g
  2359. LDA <Key_Once3 P5 q6 Z) I; m" E
  2360. CMP #$01
    " L; J1 S9 w" X$ m/ C; s5 n
  2361. BNE Change_Page_Next+ D! J/ W+ m4 h( Q$ |6 V+ _
  2362. JSR Music_Song_Next0 K3 J" ]+ u2 a! U" `) Q2 s
  2363. ;--------------------------------------------------$ k" d; z9 i) N0 i! X- T
  2364. Change_Page_Next;下一页
    + @2 s& h6 N* f; r1 U+ Y$ z
  2365. LDA <Key_Once# l; Z) c$ R/ Z2 X8 i
  2366. CMP #$20% M+ j  d7 l2 s( ]6 m
  2367. BNE Change_Select_Item_End
    1 T7 j+ E' ^1 Y+ I! ?
  2368. JSR Next_Page
    0 S8 H, _5 {" W9 z9 ]
  2369. ;--------------------------------------------------
    ) O; Y" u! F( U
  2370. Change_Select_Item_End
    + F2 q* {  W+ @  I/ A1 U  r, i+ Y% V1 P0 L
  2371. RTS
    ( }" ^& f! v" P. u

  2372. ! f, E. i4 t$ o# j
  2373. ;==================================================
    0 V* w( D& G4 H  _0 b
  2374. Show_Arrow;显示箭头光标7 ^# u% B, o5 \
  2375. LDA <Music_Item_Cur0 T8 ~8 }6 B$ d/ N# k9 X
  2376. JSR Get_Page_Start_Index! A6 W1 K) I/ j0 O3 |7 M
  2377. LDA #$00% w% O. D8 y" D" l- I
  2378. STA PPU_OAM_ADDR
    , u6 [/ ]3 R+ c$ X* j/ p6 U5 t, o
  2379. LDA <Music_Item_Cur
    ; Q6 r5 E" Y2 [: C8 w
  2380. SEC4 q% v6 {" i# T7 |; J
  2381. SBC <Data_Buf6 d. t$ J& G' ?3 J" X8 a: ^3 C' q
  2382. ASL A
    7 \! F. p% |0 m
  2383. ASL A
    3 o5 i' n1 [; |# g+ Y9 a
  2384. ASL A% P) [( ]4 D5 w: N) i* l
  2385. ASL A; e# j% Z" W0 D% [2 n: A
  2386. CLC& Z" T: U' p$ e/ F& E+ k8 K5 Y$ \6 @
  2387. ADC #ARROW_Y_OFFSET
    5 V- B- ]4 K  J1 `* V0 p
  2388. STA OAM_TEMP_ADDR + $00, A7 }& ]$ L1 p
  2389. ;STA PPU_OAM_DATA
      K! C# w5 m$ W3 |) E& w) h
  2390. LDA #$1F
    ' R  b5 M. c" n+ r; r* q
  2391. STA OAM_TEMP_ADDR + $01
    # |8 H: z2 ~. q6 t1 P" ]
  2392. ;STA PPU_OAM_DATA
    ; B4 }9 f) J9 s; V  Y
  2393. LDA #$00: l6 i" c' }1 J" v. l( a; K
  2394. STA OAM_TEMP_ADDR + $02
    , X4 k) ~* Y1 g  Q& N. }; R# @3 |
  2395. ;STA PPU_OAM_DATA
    5 t9 A; O7 ^$ V, ^
  2396. LDA #ARROW_X_OFFSET6 ]/ _+ M8 |$ v/ e/ o1 t
  2397. STA OAM_TEMP_ADDR + $03: X- G( k* X) G4 Q1 D+ w
  2398. ;STA PPU_OAM_DATA& Y3 ~% m: |' p' Y
  2399. RTS
    ; d; U1 E# I( P) V5 d  ?
  2400. 9 p3 {& H5 L, A/ Q5 n
  2401. ;--------------------------------------------------
    0 r6 A5 P8 w; x6 a" `% M$ T
  2402. ;命名表数据8 ?! Y" J/ w9 E3 M( V+ x5 T
  2403. Palette_Attributes" [; f7 i6 s  h; `! c
  2404. .IF SOUND_BAR_SHOW_ENABLE+ H, k5 g3 Y$ j1 ]
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    : _& R- {( B  {" B4 p
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$559 Q$ p; Q: K% h9 E7 f
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75  m; m. X8 x; Y
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    " c$ Y' p7 R: A8 X, W+ q4 O
  2409. .ELSE
    5 t: Z4 {# R, Z
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    % l% v# r1 e0 K) a, f
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55+ ^/ Q7 G( r8 c# X0 W/ ]
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75+ d; F- \3 E% m) v# h( j
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA/ V- `  E/ ]8 m6 Z$ q
  2414. .ENDIF
    ( z5 u- p) I0 P6 A! H

  2415. $ b8 r+ L- k& ?& J' \$ Y2 n
  2416. ;--------------------------------------------------
    ! F$ S* n5 ^& c
  2417. ;调色板数据
    ( J1 G4 `+ @0 ?6 \* n$ Z+ F1 {6 Y
  2418. Palette_Data
    4 b+ d* ]  b' Z% N8 r( F
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F- E" i$ {! S! y2 d" ^
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F0 }" c$ L( `5 J3 |$ \$ W
  2421. % O9 P) a/ E6 H8 c6 p" @
  2422. ;--------------------------------------------------
    1 v) v( }  A# d2 i% Z1 P3 n
  2423. Static_Text_Data0 `( k# \. z8 O: _+ L2 n
  2424. .WORD Static_Text_Caption_Data; g3 E3 V' P" Z. z
  2425. .WORD Static_Text_Author_Data; u. Q* J0 Z+ s$ c% a
  2426. .WORD Static_Text_Date_Data1 H$ R5 x' k9 E2 h3 d* _' v8 {
  2427. Static_Text_Data_End
    ( o1 V6 z" H: M1 r
  2428. ) V6 m; ~) c  v& g
  2429. ;--------------------------------------------------& d1 |6 }5 R  O$ t$ @
  2430. Static_Text_Pos
    ( |. u% i. ]; h, n; L9 x0 }
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)2 k1 D" W% l3 l/ B, e6 X
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)2 [: ?- ^  M* {0 s! s
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)8 I( T  X& E- [* H& ]7 n
  2434. Static_Text_Pos_End6 a$ `* W5 \3 p) j/ v! P; d0 B0 {

  2435. 1 J0 Y. v% O# E1 e. I
  2436. ;--------------------------------------------------
    8 `; N& ^& x  ~: b1 S  e
  2437. Music_State_Stop) l/ Z, ^! B# p6 A: @1 g
  2438. .IF SOUND_BAR_SHOW_ENABLE
    * T6 I2 h& o5 Q. C6 t  _' R6 i& z
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$001 x1 h4 |0 E4 l$ a
  2440. ELSE
    ' B, O# r( B! r0 G' H6 K. b
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00. {0 M" k! Z, W! h# z6 f/ R9 J
  2442. .ENDIF
    ) o5 E, o. y( c! M% `
  2443. Music_State_Play' c1 {5 g* [0 b) e5 m! k
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00) s# P$ j' v8 z
  2445. 2 e8 {  m) x& w% o! _. ?8 U1 \
  2446. ;--------------------------------------------------
    - w/ ?8 [- P8 x7 g( n5 A2 |
  2447. Sound_Bar_Text_Data;声音类型文本$ D1 v7 i1 k' ^
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-") h$ {# Q8 o( o# K; l) T' V
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"* ^3 E4 q5 P( f, ?
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    3 `- q! [: V- F) n* D0 y
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"9 |1 |5 k) T# Y" d2 ]
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    5 U9 O3 k) ~; q- s
  2453. 3 g+ {0 z. Y  U' {2 w' m9 k
  2454. .IF Track_Name_Pos
    - {* D4 P+ O+ {

  2455. $ U1 O# M8 i+ i, j7 C/ P8 |6 h5 H
  2456. ;--------------------------------------------------- ~+ ~/ N% \9 v2 S4 {5 {& v
  2457. Track_Name_Addr_00;曲目名地址索引
    6 O7 T2 l' D% Q: a, f9 V, t
  2458. .WORD Trackr_00_01
    5 V/ g3 @& v' i; l+ Q3 [% I
  2459. 7 k* X. X: {& B  k7 `0 v
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    0 a6 \# H) A1 F$ t' \
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    : F* o  b* N, \5 l0 J

  2462. . M% ?5 B9 q( |9 K
  2463. ;--------------------------------------------------7 N5 f4 v3 P0 F* D5 c
  2464. Track_Name_Addr_01;曲目名地址索引
    - Q8 t2 o+ P3 C. m2 O
  2465. .WORD Trackr_01_01
    3 I- o- y1 E6 M# l( }3 Y) G
  2466. 8 E% A( r) I9 ~2 O% r0 F1 O5 m6 Y
  2467. ;==================================================/ w1 T8 c( P# s5 i
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1", _" b4 B2 w1 I% p" M; S6 H* O
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    0 Y$ P  ?$ T8 l$ h; d- P. [

  2470. 9 @0 S$ q7 v% K- E5 n
  2471. ;==================================================
    ; i  T) [$ B+ n0 x$ C9 o
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    : V; `3 i0 I( ]0 \  M& \" U
  2473. .WORD Track_Name_Addr_00
    5 u( y& o: g& j2 I9 X2 e
  2474. .WORD Track_Name_Addr_01
    + b, }7 p3 f/ q0 L$ m& k/ G  J
  2475. .WORD Track_Name_Addr_01( ^& v! O8 F4 K! C" B1 d/ O

  2476. * S3 v1 }3 y5 D6 U, T8 S0 i* \
  2477. .ENDIF1 w5 A+ {6 D  I- E6 Z
  2478. % \  O/ y1 m) w
  2479. ;--------------------------------------------------
    ( D# k3 V- I; E# T. d7 I; {
  2480. Static_Text_Caption_Data;静态文本数据
    ; z& u' n: r/ F$ }+ [: _, f1 @
  2481. .DB 16
    / N  \" o' r; O7 M; c9 [9 J. R3 ?/ q
  2482. .DB "FC MUSIC 12 IN 1"* F3 S1 [- Z; Z- N, s" b
  2483. Static_Text_Author_Data% q2 Z: a, E8 _  P9 ^+ F  F. ~" e
  2484. .DB 25
    1 m) Y9 ], ^6 p* ^* Q" b
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    0 V5 q9 r! s+ y7 ^
  2486. Static_Text_Date_Data
    ' W& _  G6 V0 d$ n4 G
  2487. .DB 10  \7 _% U. u8 l7 m7 z3 G! j- L
  2488. .DB "2023.07.23"/ X2 A2 X, \' t' D# |3 Q

  2489. # F3 U; Z/ W3 d5 p: T  T2 D6 G( f
  2490. ;==================================================( |8 |* g, T1 y/ Q" w% h! v* m
  2491. Music_Collection_Name               ;专辑名间接索引
    / F5 ^7 D) y: Y) z( s8 ^8 z+ X
  2492. .DW Music_Collection_Name_00# B" H6 j2 t0 o2 }, \
  2493. .DW Music_Collection_Name_01
    8 I4 }: P0 _7 @6 J/ r) X
  2494. .DW Music_Collection_Name_02
    6 h8 [7 ^, B- b2 X7 f7 ~! @8 O
  2495. .DW Music_Collection_Name_03. R. e1 [! l5 E" O* }( o0 _
  2496. .DW Music_Collection_Name_04; {( T& A7 x& ]. [: s
  2497. .DW Music_Collection_Name_05
    , R. ]) S% ?4 w; K: Q
  2498. .DW Music_Collection_Name_06
    8 b( |- m$ J( T7 }$ t" O+ I8 T
  2499. .DW Music_Collection_Name_07
    $ T8 Z2 V# v% i; X- q
  2500. .DW Music_Collection_Name_08
    " ]. W2 G' ]8 K* f7 p5 {
  2501. .DW Music_Collection_Name_09% b0 H4 }1 ^7 S. [' B' [( o9 E3 O$ B, `
  2502. .DW Music_Collection_Name_105 c6 l6 L9 L8 \7 @
  2503. .DW Music_Collection_Name_114 X8 ~) F0 X2 b4 {, H7 x; z( @! [

  2504. . ]8 r# r3 B$ o: P0 D- X
  2505. ;==================================================" k" F! i8 i1 R2 s
  2506. Music_Collection_Name_00            ;专辑名文本数据# N, h* k: ~) I4 k
  2507. .DB 11,"1.RAF WORLD"' b: p# e+ B4 ^0 X, O" p* e8 k4 Q! V
  2508. Music_Collection_Name_01: ]: U0 O6 R4 l& R: U5 h' s! J
  2509. .DB 15,"2.FINAL MISSION"2 Q* X: M+ t, f" G
  2510. Music_Collection_Name_02. u5 {$ G6 p3 N
  2511. .DB 06,"3.KAGE"8 [6 L/ |2 H: u5 m5 m! S# h* N
  2512. Music_Collection_Name_031 B% O  D8 M8 H6 Z
  2513. .DB 16,"4.DOUBLE DRAGON"  O! F' J9 p+ H, V* Q( F8 e
  2514. Music_Collection_Name_04
    6 I9 D) t1 W0 c+ {3 ^
  2515. .DB 17,"5.DOUBLE DRAGON 2"2 A' M* a$ h4 h# E
  2516. Music_Collection_Name_05: N/ E4 C) p# k8 y0 Z& u2 ]
  2517. .DB 17,"6.DOUBLE DRAGON 3"; V1 C; W# U: Y( t) D1 u. U( e# v
  2518. Music_Collection_Name_06
      e3 Z! Q/ f7 Z
  2519. .DB 09,"7.ROCKMAN"
    ( j& F3 y! g5 S. z, d5 `
  2520. Music_Collection_Name_07
    , z: {* n' g0 ^; [/ x
  2521. .DB 12,"8.ROCKMAN 2"
    % H5 Y1 ~* R& m4 K0 h2 o
  2522. Music_Collection_Name_08
      }$ }* Z3 X8 `) Z# q
  2523. .DB 12,"9.ROCKMAN 3"
    $ ~' A$ B, u& X4 o! L# l
  2524. Music_Collection_Name_09
    ' f5 S& c0 I( m1 o& V5 v* \
  2525. .DB 12,"10.ROCKMAN 4"! Z; ~8 U5 A6 `+ W* d6 B3 j
  2526. Music_Collection_Name_10
    # _* f5 R/ \( v: h+ {: V+ ~4 L: f7 j
  2527. .DB 12,"11.ROCKMAN 5"
    : j; q! j- Y- c3 S  O) M1 N3 F% t
  2528. Music_Collection_Name_11
    ' Y! H/ q! @4 ?2 G9 a$ R3 C4 E3 E$ g
  2529. .DB 12,"12.ROCKMAN 6"
    9 Y3 \- X) h* ]4 Z/ R
  2530. % a2 V' A- U) u6 _# E" h6 l
  2531. ;==================================================
    0 b" F8 C  ~4 C: J
  2532. Track_Name_Addr_Flag                ;显示曲目名标记$ f  U( G8 Z: R
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0$ z) q2 y4 b# }6 |  V# o6 q# g
  2534. 4 k0 e- X2 V! {& x/ ]
  2535. ;==================================================+ f, Q4 z. u- p9 t" Q6 o
  2536. Item_Pos_Data                         ;光标箭头位置8 k: b; _$ o5 ~. O* v: I
  2537. .WORD ITEM_SHOW_POS1 g% [# J" I! g/ u* _' `
  2538. .WORD ITEM_SHOW_POS + $0040
    ( \$ o; x$ n  o- M
  2539. .WORD ITEM_SHOW_POS + $0080
    8 r3 v! r% P8 w1 ^: w  k3 Q
  2540. .WORD ITEM_SHOW_POS + $00C0* [; N/ Y. y9 c3 X* a9 m
  2541. .WORD ITEM_SHOW_POS + $0100* K$ ^( F& D4 y6 {
  2542. .WORD ITEM_SHOW_POS + $0140
    $ m0 W  q7 A$ p) ?

  2543. / X" N( E7 ]8 X! h
  2544. ;==================================================
    7 v4 A: F6 [2 J6 E! e( ?
  2545. Sound_Init_Port                 ;音乐初始化入口地址) Y- A; v" \2 [+ x; P' w
  2546. .DW $BFC8
    4 V+ k; R. [8 v  [0 T( a7 k
  2547. .DW $D7F00 \) S4 I2 }" O# H' Y9 k6 c  x
  2548. .DW $9FC0
    ; ?; D! M& i" \
  2549. .DW $BF70( M$ p) G9 f/ ~6 o0 R
  2550. .DW $8003% l' H  h0 a5 K4 i: Q  M
  2551. .DW $BF30
    0 c' D/ t* N. I
  2552. .DW $9003
    5 g, W! a" c  S+ X. R% U
  2553. .DW $80030 m; |' Y7 d7 A7 g  \& S
  2554. .DW $8003
    " t8 U) V' Q& D; g) k7 P" h  v% U
  2555. .DW $8003& ~( [% o, }$ ~+ n% w7 p$ {, \
  2556. .DW $8003
    ; U, X  p: D: s2 l, [; p, {
  2557. .DW $8003
    5 d3 A4 a9 U' ^# `5 E, Z; t& ~
  2558. ; z0 U1 f' a/ V; F5 I  e. ^
  2559. ;==================================================/ R1 C: d( X0 u; l8 j2 M  D  Z
  2560. Sound_Play_Port                   ;音乐播放入口地址
    2 w3 Y' |! }: Y8 P8 j
  2561. .DW $8000
    & B+ f( {2 X( N* p# \* [
  2562. .DW $8001
    & s: W; B6 o. n0 L  e' {& r6 Z  a( x
  2563. .DW $A000
    9 z% \7 K3 v6 W; p. G1 y4 b; }
  2564. .DW $8003
    8 Y2 |2 C. {* t9 Y1 C' r
  2565. .DW $8000
    / T' m$ N) M; x0 b4 W) W
  2566. .DW $8003& D2 D6 S! m$ K+ t' E( X
  2567. .DW $9000& G4 S1 E# p7 C$ d
  2568. .DW $8000( x- B/ I( s, [0 a6 ~8 k9 W
  2569. .DW $80006 _# O. X( F5 b( S) K
  2570. .DW $8000% n+ T, K! c0 U" q4 m! f0 @0 s
  2571. .DW $8000
    - H( F8 a0 d, R4 ?$ }4 ?" ~% R
  2572. .DW $8000: R" Z) z8 b. O  I( Q7 E

  2573. : t6 R, V% a5 m+ `% i6 w: w5 r, G5 r2 w
  2574. ;==================================================/ g8 {( W8 Z. g" ^
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    ! m) k  E9 z  B5 c0 G) h$ u
  2576. .DW $00001 Q) Q( k/ B" Z* u5 d
  2577. .DW $0000
    ; Z) A( \, A& c1 \) Y# {& @
  2578. .DW $00000 R/ i0 M# I; V( Z- ?
  2579. .DW $0000
      C4 Z8 E* S5 [7 T
  2580. .DW $0000
    , B  U) q. i# E8 ]: I7 X9 t) U
  2581. .DW $0000; ]/ B* H+ I$ P5 m$ o
  2582. .DW $00007 l7 f* }$ `1 k4 j
  2583. .DW $0000+ e( J5 L9 |6 M/ N  D( k
  2584. .DW $0000
    - l5 f# U4 T4 q  R; i" m
  2585. .DW $00008 b8 D" a: r% v6 W
  2586. .DW $0000/ \! B2 y5 b7 t4 B  C" n
  2587. .DW $0000$ y. u8 |$ O! i" A0 M+ {( ^5 z3 Q
  2588. ) d- U. _+ V  D$ z
  2589. ;==================================================! M( X) Q! i' `% ^
  2590. Sound_Total_Port                          ;曲目总数
    ) K! ?5 |; u: K2 {( Z
  2591. .DB 38. k; S" r. k; s& W& t" R+ w3 x
  2592. .DB 33! ]& `: {3 z; c; n
  2593. .DB 49& m. g8 l0 r! _5 g6 t4 j
  2594. .DB 41# E! j; l3 J# n# ]& \2 t
  2595. .DB 837 N& C. s2 e- s3 r: m
  2596. .DB 70  F6 m+ C  F2 a5 L) q& @% N& Q
  2597. .DB 502 E7 f0 D3 ^$ ^
  2598. .DB 67
    / V- J0 \) P1 ?$ s% [
  2599. .DB 57
    4 p# n8 M$ @: i/ w/ u* p
  2600. .DB 71
    0 R9 M7 a5 X" k  m  }% X: @" Z
  2601. .DB 76
    , K% R& A% v* T( z! ^
  2602. .DB 102
    ' E# o& L. d' l: Z$ X# W# P3 U/ ]

  2603. / D) w3 G& W) h; P. S9 H* T
  2604. ;==================================================
    2 l/ R9 h  s  ?& z( a/ P0 l
  2605. Sound_Start_Port                      ;起始播放曲目+ e! q( m$ ]5 g+ R
  2606. .DB 00
    $ [3 O2 L" c; D: d" w! M6 m% u
  2607. .DB 00
    7 G6 Z9 N% m% |0 [" f! Z, u. J3 A2 i
  2608. .DB 00  g! X% i/ {, t4 A# L
  2609. .DB 009 F# r, }! H! x
  2610. .DB 00' W) q+ [5 g. ?& Y
  2611. .DB 004 H* M8 C5 `$ |: R+ W7 y) G8 P
  2612. .DB 00
    7 @2 m# G( r' S) L! H0 C
  2613. .DB 00
    + A! P3 b! a) @& g
  2614. .DB 00& ~: A' B( C; v$ r4 t
  2615. .DB 00/ m7 |# Z" @: O6 w7 d! F3 U$ _6 ^
  2616. .DB 00
    # V8 J% X: Q6 J. ]
  2617. .DB 00: s# D4 J  x$ [# B) V: M
  2618. - u* j) i5 \2 X% N1 H8 K  i4 Y
  2619. ;==================================================
    ! R0 G& ^* T. E1 A
  2620. Sound_Bank_8000                      ;专辑bank_8000
    : \3 p5 R! k7 d" i& S" H" h
  2621. .DB $109 L' F; t5 T6 ]: Z
  2622. .DB $120 E" W; t$ }) t) [% n! E
  2623. .DB $14) U, g) M  [8 O* q% x
  2624. .DB $16
    # }" `1 O, z8 o9 ]( J% L1 |
  2625. .DB $18
    9 Q+ Q) r$ j, Y: H
  2626. .DB $1A
    $ T7 T& Q1 ^  n9 w8 u6 q
  2627. ' r" ?) |, {* \
  2628. .DB $00
    " w1 p# \( O4 K6 b7 g5 b
  2629. .DB $02
    7 j$ p' `0 ?, U' Y: H( b) c
  2630. .DB $0D
    , Y. e+ q! i! Z# G
  2631. .DB $04
    ' v2 b0 m# I' n! B0 z8 n
  2632. .DB $07) E* i9 P8 W+ f* |* e( [
  2633. .DB $0A
    4 z" Y7 U- f7 o8 g4 }; W
  2634. 4 O( p; o+ l2 K3 q1 K/ a, S

  2635. & j1 U  t. f( K5 c
  2636. ;==================================================
    ' ^: J$ p  N& T( M# z  m/ Z
  2637. Sound_Bank_A000                      ;专辑bank_A000
    # Q8 w; E% D' P+ I6 E6 P
  2638. .DB $11
    $ {! ?# }, ~  n2 ^" q; Q
  2639. .DB $135 ^2 J3 h' L- J* P$ r3 H
  2640. .DB $15
    ) G0 [; V7 Z! {0 M; W
  2641. .DB $17( M2 `) T2 c( b
  2642. .DB $19/ Q/ u; A/ g8 O$ G  t
  2643. .DB $1B
    ( F4 ~9 o/ R/ v  V* @) Y/ P2 v

  2644. - ~- |* h" G1 p& k# X! x. @
  2645. .DB $01- v; ^8 p) o, P0 q% s, B
  2646. .DB $03
    9 a/ C! o" ~7 Q
  2647. .DB $0E. @( n" m& j) N6 N$ G0 O; p: N5 m. a
  2648. .DB $053 n( q" S$ p; i3 V, x- y1 {: M
  2649. .DB $080 B" ^5 P( D. J6 W% U
  2650. .DB $0B
    . P& G' A5 t2 t! x1 C. o* i

  2651. ! Z) R% i( w& L2 c
  2652. 8 f. r9 E" W$ G5 k% T# F- ?9 I% p
  2653. ;==================================================
    0 @: w1 f/ Q) V0 A% n* n
  2654. .BANK RESET_BANK & BANK_DATA_MASK  s* ~) E9 H4 y( l0 f) ?; k' i
  2655. .ORG RESET_ADDR/ q( ^1 q' g9 U% U  T- {; }

  2656. # B! k' y6 n5 Q
  2657. ;==================================================9 O  p7 P. j) m1 h% i& D
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    5 o, `2 c' \2 |' X& T
  2659. PHA( ~3 ?, y' D4 v" J6 D2 K( y
  2660. LDA #$067 L9 y2 S' W0 g  h0 Q8 B/ m
  2661. STA MMC3_BANK_CTRL; t+ [& M' W- G- Y) X
  2662. PLA
    # b6 q$ b# P9 V; q% e" e
  2663. STA MMC3_BANK_DATA4 o. Z6 M1 ~/ B5 P5 J' w: `
  2664. RTS
    - Y- [! t5 a: E4 B  z

  2665. 6 @' O, f( v& ?- W8 D1 l0 X
  2666. ;==================================================  L8 D, j0 q4 s& K
  2667. Switch_Bank_A000;切换bank到A000-BFFF+ |3 O9 p- O" I4 ^/ J7 X" r
  2668. PHA
    1 m9 k5 G- X+ w6 i1 x' R
  2669. LDA #$07
    4 C0 x$ v0 _" u
  2670. STA MMC3_BANK_CTRL
    2 d' w: ~$ t* l  R1 l2 S
  2671. PLA
    + u3 h. j' u9 t8 s! d$ {/ e* L
  2672. STA MMC3_BANK_DATA# t( |5 I' F+ x; q5 h- F, K( b
  2673. RTS4 \$ \# _% I1 }4 O

  2674.   k: [3 e0 H- u# j5 o4 e* B( U2 u
  2675. ;==================================================( ~$ y8 r9 T+ W! t4 w% O
  2676. Switch_Main_Bank;切到主程序bank  s$ t# W  g7 H$ f% d" m
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    4 g2 O7 E9 u9 T! p6 u: l" e( C& ~
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank3 P8 q1 t" G9 N  R1 r! |, l  P" J
  2679. RTS3 J$ u, l( A# [9 @: H

  2680. ! i' q5 o$ }" d- l
  2681. ;==================================================
    % e% i- d$ O5 ]" Y; [" I8 P
  2682. Sound_Reset;音乐重设(如果有的话)' q8 T) k( _) C  m
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    - R0 b1 ?: o/ C1 }) @8 g. z. z
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    ( H6 |- N, X- W) Y6 ~
  2685. JSR Switch_Main_Bank   ;切回主程序- W8 b$ l0 p) C0 c- t5 ^7 U
  2686. RTS8 C' X# \4 y$ b

  2687. 4 J8 ?' I0 A0 u- a, D
  2688. ;==================================================: N9 N% a% L) V- Y, d% R+ {5 F
  2689. Switch_Music_Bank;切换音乐bank
    8 d* S( A! i4 c3 U9 u% d1 c
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号9 Y  r/ ?% {( f- {
  2691. LDA <Music_Bank_8000
    ! B0 r8 S" j8 {9 a+ H" p: p/ u! l6 s
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank( u$ B" V. o5 L3 P
  2693. LDA <Music_Bank_A000
    6 X* h* y5 Y- I9 ^$ \* t0 E
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank5 b$ r# X. E5 l# R. i
  2695. RTS  M  g5 ?7 I3 W) N9 v; j

  2696. : a) S: ]8 V: [3 O  {% n
  2697. ;==================================================: S! E' Y5 @8 r7 R9 F/ S
  2698. Sound_Init;音乐初始化7 A& [8 d  r4 t5 n
  2699. PHA
    $ W8 Z& Z0 D3 G- u3 z
  2700. JSR Switch_Music_Bank  ;切换到音乐bank' _; D6 x- e/ ]: U% \5 F" g
  2701. PLA( R# f" D2 `/ E& r9 X
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    ; D, E( M/ V0 f
  2703. JSR Switch_Main_Bank   ;切回主程序8 ~* C' c- S5 {8 H
  2704. RTS$ D# J" V2 M" r3 ^& S
  2705. ' E- o# L7 `: k: q+ e  I
  2706. ;==================================================
    8 x+ H0 h- ]! n( o1 d
  2707. Sound_Play;音乐播放
    ( R, B  J9 j9 l' V$ i/ C& j7 |
  2708. JSR Switch_Music_Bank  ;切换到音乐bank! i& x. z6 ^% i8 b" V
  2709. JSR JSR_Addr_Op        ;执行音乐播放+ o! d  n/ }5 h, H3 Y0 i
  2710. JSR Switch_Main_Bank   ;切回主程序: a8 i5 l3 w( R8 `  G3 K) s4 j
  2711. RTS9 L6 s# [& N- ]0 \9 |' C" Y
  2712. $ y& C+ ~2 p: N  x
  2713. ;==================================================
    5 s$ i& @5 b% Q4 ?  a
  2714. MainLoop;死循环. O) T! c" Z  _
  2715. JMP MainLoop
    4 y$ F% n9 Y' U1 Q
  2716. * h/ m5 ~$ Z0 q8 Y# N6 B5 a
  2717. IRQ_SUBPROCESS_JMP = 0: V1 _1 m+ X/ S% r
  2718. $ z4 h( i( T; M1 D! t# |
  2719. .IF IRQ_SUBPROCESS_JMP0 B$ a" F/ u9 F5 [
  2720. ;==================================================
    . I' h  T2 F3 m) c
  2721. IRQ_Process_0;IRQ处理过程0
    4 _8 r/ z8 b4 V& y" A# a
  2722. . ~) n5 C& C, t
  2723. ;15条扫描线后触发IRQ
    9 A8 B7 h/ J- P8 d
  2724. LDA #15+ |" U5 L% U4 W( Z/ |  [( H% w& \
  2725. STA MMC3_IRQ_LATCH
    % v+ B4 E' D& |
  2726. ; \) g& v9 G& r+ m& o$ n9 ?( n! K
  2727. ;设置屏幕滚动" H/ q4 ^6 {% N( F& O
  2728. LDA <Scroll_H+ A1 A, |; Z- m' W# J
  2729. STA PPU_SCROLL
    ( \4 D- c6 t' a
  2730. STA PPU_SCROLL
    $ e! g" ?- H( i* U

  2731. ) E% a) p0 \3 O6 v  V! z
  2732. IRQ_Process_0_End
    & q/ Y- e, u, a6 c; X
  2733. INC <IRQ_Process_Index
    - y% H1 q5 y8 t/ T/ X1 i+ s
  2734. JMP IrqProgramEnd
    - V$ k" H7 L7 F$ a2 R- ^2 y- ]

  2735. 9 z2 @, h, @& F; C+ q* B1 _* t) E9 E
  2736. ;==================================================- Q6 I  f$ Q+ \/ p  H  x
  2737. IRQ_Process_1;IRQ处理过程1" P! H7 Q7 }' E+ ^+ v( B3 t
  2738.   {% O. R2 q5 F, H# b4 U
  2739. LDA #55
    % o( G0 G' w/ s* |5 L9 z
  2740. STA MMC3_IRQ_LATCH
    + b$ ]. m# @2 u
  2741. % a7 [& ^$ J3 T
  2742. ;设置屏幕滚动
    9 c# Y/ j% U+ z; p9 J4 ?# s
  2743. LDA #$00
    2 T( o  }" z3 v7 N% ^/ y
  2744. STA PPU_SCROLL$ C1 R6 F5 Q1 B* L# _; F% Y
  2745. STA PPU_SCROLL
    / V, ?2 |0 ^; T6 w
  2746. ( Z4 N5 x- t+ J3 I
  2747. INC <IRQ_Process_Index
    ) d5 _9 ?7 l  }' z. }' j
  2748. JMP IrqProgramEnd
    + U  U1 z) c6 x' n

  2749. # q' o: X3 W" o' F- _+ `. I
  2750. ;==================================================
    / d' Y+ ?2 E* e+ [4 X1 C* ^
  2751. IRQ_Process_2;IRQ处理过程2
    1 d  A% v, s( r* r/ ~
  2752. $ O( N& z* o8 k8 L0 s; o  `
  2753. LDA #15
    6 h: A" H% G0 U, ]) o
  2754. STA MMC3_IRQ_LATCH! U- ^+ d: {8 }' w1 }

  2755. ( S$ C' p) B, K" U. q6 z$ H5 I# M
  2756. ;设置屏幕滚动
    . X! t& x- [( i" t/ ^6 u, y
  2757. LDA #$00
    ' q; \2 |" a6 w
  2758. SEC
    3 r' `/ b% E( N" f7 i
  2759. SBC <Scroll_H
    5 E8 B2 u, u6 l( v# R
  2760. STA PPU_SCROLL
    1 A/ g) c, u' I2 B6 b5 ^0 K1 s
  2761. STA PPU_SCROLL8 a" X" ?9 e& z

  2762. " e; g8 |/ x, e- L+ i' U
  2763. INC <IRQ_Process_Index8 t: B3 |1 d. d% f
  2764. JMP IrqProgramEnd
    7 j  Y( _$ V- L4 R7 N% P
  2765. . y: t; W3 n9 V& p
  2766. ;==================================================  `: d7 C. R5 i- J* ^: b- _
  2767. IRQ_Process_3;IRQ处理过程36 m" j  H# P" F" R# r

  2768. . Y& i: d6 {: @1 n; T& V
  2769. ;设置屏幕滚动
    1 b' n% E1 I. Z, O! \
  2770. LDA <Scroll_H! }) _, {9 C1 i! a4 Y% U
  2771. STA PPU_SCROLL9 h% ?% j, M  y4 X  E
  2772. STA PPU_SCROLL# f4 O5 W. }* `
  2773. % X( @3 l' `) W# d6 r3 C
  2774. ;禁用IRQ: n; B; A3 z' Z+ k# v
  2775. STA MMC3_IRQ_DISABLE
    ) i" T& t! w- q+ u5 C& M
  2776. JMP IrqProgramEnd
    : a) o" b3 x% K& G
  2777.   z- \. h% L( [) Y6 s6 B$ e# W- ]
  2778. IrqProcessAddr
    5 r0 z# I0 ~  ~7 H
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    . H1 H2 O+ V& t6 a) n9 j

  2780. 6 X+ A5 }7 f/ w7 o  z
  2781. .ENDIF7 s. ]( Q3 y& O9 q9 C! W$ K

  2782. ' [' H; O! p/ k7 D% Q' y3 ]7 d
  2783. ;==================================================1 d3 Q+ Q  [1 E* }  S# e
  2784. ;IRQ滚动模式常量- a0 ^+ D/ A% ~" ~1 U
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动  v* A% o" B1 C+ G8 e) w* Q1 L3 K/ j
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动3 Z# _* _1 u  C
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    ) ~8 p6 [4 ~% Q/ G9 B

  2788. " N" f- n& X2 U! T/ v
  2789. ;IRQ扫描线数据
    # Z0 e8 A' z& D2 p3 {2 `3 ]% @
  2790. IRQ_Scanline_Data
    0 r7 X2 j* ^. Y+ \: L+ Q
  2791. .DB 8- v  d, r! K4 ]/ |
  2792. .DB 54, y% C! v( t* J, |
  2793. .DB 8% x' ?1 i. ^, c& F& d
  2794. .DB 00 ;关闭IRQ* @9 h; w( b4 I; \2 I( w1 q6 F

  2795. 9 |, \( J( r4 f- W6 z, j+ X
  2796. ;IRQ滚动控制模式
    6 V( S# l# D5 w( P9 M8 S
  2797. IRQ_Scanline_Mode
    0 T% _5 |$ z- ^0 V$ k
  2798. .DB IRQ_SCROLL_MODE_ZERO7 g- a: R5 O  L( _: f
  2799. .DB IRQ_SCROLL_MODE_ZERO
    0 C' L2 }( r7 K8 f' M4 q
  2800. .DB IRQ_SCROLL_MODE_RIGHT* p& G2 V( a. n6 \& d5 i8 i
  2801. .DB IRQ_SCROLL_MODE_LEFT, E( B& T! k  H
  2802. 7 `$ ^) @& {- t- T1 A/ C+ y
  2803. ;==================================================- P; W( M* l4 g+ M/ l/ A
  2804. ;IRQ处理
    # v5 N$ l7 s) Y! l  [( K
  2805. IRQ_Process! e: C7 N: M% b( v
  2806. LDX <IRQ_Process_Index
    / k" C( r2 X9 D5 @
  2807. LDA IRQ_Scanline_Data,X: y7 S8 W6 [) Q6 \4 g
  2808. BNE IRQ_Process_Latch5 E! v+ q; ~5 B9 C% I
  2809. IRQ_Process_Disable;禁用IRQ+ D/ r" [; p% h$ s" Q6 w; L" ^
  2810. STA MMC3_IRQ_DISABLE+ X0 q) W4 H9 v2 ^
  2811. STA IRQ_Process_Index
    ; x: ^+ {9 f. _! l, a0 f
  2812. BEQ IRQ_Process_Scroll
    % }& _* ~/ g7 v3 I
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线7 X6 [: y2 f1 O% ^# U
  2814. STA MMC3_IRQ_LATCH6 H! j; ~3 T1 p# a( _
  2815. INC <IRQ_Process_Index
    : G& e6 f9 w- D7 Y& Y  g, p/ u
  2816. IRQ_Process_Scroll;IRQ滚动控制
    ! o0 u' N0 j# R( o: Q
  2817. LDA IRQ_Scanline_Mode,X
    5 k4 V7 E" y, X% }
  2818. CMP #IRQ_SCROLL_MODE_LEFT
    : U2 c5 ~  @) \
  2819. BEQ IRQ_Process_Scroll_Left8 o( r* O9 t# q* D6 S  ~
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    ; V& Z' \- r5 G2 F4 O
  2821. BEQ IRQ_Process_Scroll_Right) D" V" X3 T3 G& \6 a% L+ S; H, n
  2822. IRQ_Process_Scroll_Zero;不滚动0 G- W; [% K. }! ^" N
  2823. LDA #$00
    & S/ Q2 f' }8 P6 I. W
  2824. STA PPU_SCROLL
    * F- M9 i3 K. z) k
  2825. STA PPU_SCROLL
    % I7 p+ A7 C) \. ^* i
  2826. RTS+ H$ ~: @7 b. A5 q
  2827. IRQ_Process_Scroll_Left;向左滚动( @9 l8 F, m) f3 ^/ e0 V
  2828. LDA <Scroll_H. ]4 S, J/ u$ k, X. P
  2829. STA PPU_SCROLL2 c: ~9 ~  k+ ^2 q2 Z( J( i3 i
  2830. STA PPU_SCROLL( X; H9 _$ e5 W7 M5 r
  2831. RTS
    / ?% t' c& r  W$ W, g8 O1 L
  2832. IRQ_Process_Scroll_Right;向右滚动& y9 ^# F" r% \5 L' k
  2833. LDA #$00
    & T" @- ~6 W% N8 _
  2834. SEC
    7 ^- }6 J0 w, O/ h" I
  2835. SBC <Scroll_H! m+ ~7 {" Y1 T/ `
  2836. STA PPU_SCROLL
    2 j$ e" \8 R7 ]$ Y, Q( `
  2837. STA PPU_SCROLL" a( U. U  E! n" H
  2838. RTS
    7 i4 L" r3 _* {9 w7 v: W

  2839. $ t* U% _' U, ?* k, W2 Z6 x9 ^3 t
  2840. ;==================================================
    " ^' `- D7 w- i! G/ l3 T* R
  2841. NmiProgram;Nmi中断处理4 t8 h6 ?! ~1 }; y9 v
  2842. PHA
    . |5 b3 ^8 s+ E& q  S5 L2 F
  2843. TXA2 d0 }; y; _( F1 T2 |9 b1 E
  2844. PHA
    ) R( L- `* o& G
  2845. TYA8 }. L1 E6 y- e2 L
  2846. PHA5 M4 A3 I5 L+ ^3 X3 g, X: T/ |

  2847. 3 G* G- |1 H8 h- B4 l+ U1 D* R+ b, |
  2848. ;读取清除Vblank标志, 防止重复进入! J; _  r* G# }4 R. Y4 K
  2849. BIT PPU_STATUS
    - U7 r) `' G) o& E
  2850. " V. E. _2 f  l8 h# x4 B4 l. O
  2851. ;切换主程序bank
    0 K. ?  g  l' S5 S' d) k7 x# y
  2852. JSR Switch_Main_Bank
    ! G! m" v% h: f/ l( d/ X& g
  2853. ( ]4 e& g& o% j$ a
  2854. ;Nmi处理' J9 Z8 M% `# w5 T! X. a
  2855. JSR NmiProcess+ d4 _% r4 q- V' l7 ^$ m" |/ n
  2856. 4 b+ n. T; X8 [) b% M
  2857. Nmi_Proc_End$ L" r( P1 p+ h3 F4 T) E, P: S! b
  2858. PLA
    ! A' R# `) K# {  j, o! m
  2859. TAY) W0 R; a3 Y* N4 T% i
  2860. PLA5 X. W' T" v* i0 W7 C, U# J; `6 Z
  2861. TAX" z6 B# D, s; j
  2862. PLA' c1 P. Z  s! ?6 h# A
  2863. RTI6 o, B- Z9 A/ x
  2864. 6 a: {3 A8 g' p. T$ e4 l) B1 ]: z
  2865. ;==================================================
    ) x: n6 w6 ]8 G9 B# b+ u. q: V
  2866. ResetProgram;重置中断处理4 D7 v+ l( h5 f4 O. t
  2867. SEI! Y5 a- \  _: n
  2868. CLD
    8 e6 ~* K# K. O
  2869. LDA #$00  d) _* c9 g7 c& J  k
  2870. STA PPU_CTRL6 c% \6 Q8 A: a
  2871. STA PPU_MASK3 u6 N8 u6 E4 O* Q, `
  2872.   J7 d/ s# O8 E1 [- c; |
  2873. ;切换主程序bank. w! Y; u/ L: t0 G) k! I: t
  2874. JSR Switch_Main_Bank
    : k. {) T% M) B4 e' z  ?5 L

  2875.   h5 N8 Y6 D7 Z; a: S
  2876. ;程序处理开始
    9 Y) ]% A2 k3 [0 s
  2877. JMP ProgramBegin; v! z- r" ^& Q0 P

  2878. - ?" r! \" n' A+ `
  2879. ;==================================================+ K- I6 x. I" H! Y! ~" W
  2880. IrqProgram;Irq中断处理
    $ n$ \* Z- e7 L# G) a1 p3 J
  2881. PHA
    5 J, v7 \% N0 `# s6 }) c" l( n
  2882. TXA
    5 R# S/ Q, l/ R  m* d4 [( x( Q
  2883. PHA$ U5 ~4 j! K3 K3 @/ q  Q
  2884. TYA
    * e: Y* R/ _3 r
  2885. PHA+ B% J1 B, I% X

  2886. $ n' Q8 d3 X  k) d" Z  r
  2887. ;关闭IRQ
    / u6 w) w/ Q: B; [
  2888. STA MMC3_IRQ_DISABLE1 G5 O- A1 c0 x

  2889. ' E& D% u8 B' F8 I: ?. \
  2890. ;允许下个IRQ触发7 ~) g1 L* s6 v
  2891. STA MMC3_IRQ_ENABLE
    ' C) A+ l# n+ p

  2892. 0 Q% H- w) i& W' O5 U7 @+ m
  2893. .IF IRQ_SUBPROCESS_JMP9 T) k: y6 A' I5 W" c6 W1 D5 ]

  2894. 2 J2 l$ p7 @" Z( t1 n% J' O
  2895. ;执行IRQ过程  }3 `/ O" t/ u% ]
  2896. LDA <Data_L
    / G* F' l* O2 S
  2897. PHA
    3 V" d$ y* W$ P5 ^$ M# M
  2898. LDA <Data_H, T& X, e9 ]9 I" f0 a4 |7 @; A
  2899. PHA, o  D* Z& \2 {) y3 \$ r
  2900. LDA <IRQ_Process_Index# |9 O: {9 Y' x% M
  2901. ASL A! G! E3 l6 y2 T  \
  2902. TAY
    - b/ k1 A! S, t$ S$ Y) b9 [
  2903. LDA IrqProcessAddr,Y, B+ m; N' u( Z, D
  2904. STA <Data_L
    5 ?& {4 H( j; B3 X
  2905. INY( P2 z( }. t" j3 O
  2906. LDA IrqProcessAddr,Y
    . }' J9 Q5 A0 K1 E# }; c
  2907. STA <Data_H. H. h; ]5 q5 g0 o$ J7 e$ O$ ~
  2908. JMP [Data_L]
    9 Q) A  g9 T6 D7 e" J/ R2 o
  2909. $ ~2 H0 r3 i9 f+ u" W; i7 l+ n) n
  2910. .ELSE/ X% G, |1 `3 d$ D: d; t- O; [

  2911. 1 N) u! V3 W0 |, F0 x
  2912. JSR IRQ_Process+ G9 W! }) L  @: J5 D; ^) X* H; e

  2913. : ?0 t  B+ V$ o; @" E4 O
  2914. .ENDIF; f- {9 S# j9 A2 \5 M3 [% k

  2915. : n* \. [% t" c+ L& \  W
  2916. IrqProgramEnd: R8 B; M) T1 o4 ~/ e8 u
  2917. .IF IRQ_SUBPROCESS_JMP
    " P3 r9 S. Y% c( N$ y* a6 x
  2918. PLA; K% \- D6 M; w) G, {
  2919. STA <Data_H9 L( p; L- ^- P6 J1 H% u( n
  2920. PLA
    6 m  C5 M5 |+ z6 K
  2921. STA <Data_L. `8 d1 |0 _3 m7 Q! [8 L
  2922. .ENDIF1 J! Y# l4 H0 O% m7 t
  2923. PLA
    # f2 R6 i! h! J4 T% x
  2924. TAY- d6 a4 u! y- g: f
  2925. PLA
    ) g+ {( n, g( B9 a' M% I, n3 O) G' U
  2926. TAX
    : P! `9 q$ L: a/ r
  2927. PLA
    4 _! D* ]8 ^$ C
  2928. RTI
    4 f: @2 m# ^$ E5 w/ F' H; I
  2929. $ J& V' w# r( j9 q, m& C( U$ ?$ [
  2930. .ORG $FFFA# D5 ]" a! q# M0 t% y* t
  2931. .WORD NmiProgram; E. \+ u! a/ d5 w2 k$ x8 Y
  2932. .WORD ResetProgram  F% _$ ?4 M" B- R! `
  2933. .WORD IrqProgram
    6 p4 w6 z: K' H9 s/ H

  2934. $ n5 Q6 u$ X! d& H0 h/ F
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    / |0 D1 z4 O  D6 }
  2936. .IF SOUND_BAR_SHOW_ENABLE% T3 s. u5 ?) x
  2937. 0 h" j0 S1 C$ g- @8 s. _
  2938. .ORG $FE00' |% g; ~, j) k. }* a7 H
  2939. PHA) _7 ], {# `9 E0 T; u6 s
  2940. STY $07BA
    ( D% }6 _! D, b3 d  z" k& J% e+ s% g
  2941. LDA #$8D2 m5 A' \+ v5 |7 ^, E
  2942. STA $07BC) q$ r6 }( ^$ H
  2943. TYA
    ( f1 R8 E: f( n  M+ ~! J
  2944. CLC
    / I' g: X$ }5 x5 s  a$ D0 T/ F
  2945. ADC #LOW(Sound_Bar)# D, z8 e3 \3 H# ~+ E
  2946. STA $07BD1 {8 I9 D: t( ^! Z2 E5 U
  2947. LDA #HIGH(Sound_Bar)
    1 D- t9 L4 j8 F: C0 j
  2948. STA $07BE
    9 q4 E( ]1 y5 h6 }! v
  2949. LDA #$60
    % n7 d; Y1 |: y6 l7 w& c7 |
  2950. STA $07BF
    : w/ `9 f# I3 q+ @+ M' W
  2951. PLA% B6 |8 l. f' r! s' @8 I  c% q. Z
  2952. RTS" b4 s8 W1 l8 v% k3 B2 ]* z' F7 l

  2953. 1 @6 U- z. h% z* p) D1 |, r% U) [
  2954. .ORG $FE20
    " E7 {% r- L( s8 F( N
  2955. STA $07BA: P" `, Q' g/ H
  2956. CLC
    . b: U7 L/ a+ z& u) h& E& Q
  2957. ADC #LOW(Sound_Bar)- b/ Y/ }* ^: ~
  2958. STA $07BD
    2 e8 x% ~$ p$ _5 H' Y* |
  2959. LDA #$8D' {3 [1 O. j% |; b5 i
  2960. STA $07BC1 _4 W; I. U, e  X/ m2 M; ^
  2961. LDA #HIGH(Sound_Bar)0 ^9 G1 i6 }7 u. N' a/ c
  2962. STA $07BE
    5 y% F0 s$ ]. Q' v, j, g
  2963. LDA #$60  t! r2 B, Y3 w5 m/ X" u
  2964. STA $07BF! M* Y4 i7 d' C* j) q4 J
  2965. RTS
    * Q/ ^" X: i1 P! H

  2966. ' j! H9 {* @% \  s" C1 H
  2967. .ORG $FE40& x8 D  C5 C: a% k
  2968. PHA3 |9 A6 l. o' N4 S
  2969. STY $07F1, `3 T3 u1 L. G- ^( q& h8 t- O
  2970. LDA #$8D
    1 Z* s4 B: Z5 r+ s3 L6 V0 T% Q9 b
  2971. STA $07F3
    7 p; A  G* r8 C0 r2 y0 S
  2972. TYA6 H/ {% `4 k( q+ J, p
  2973. CLC2 K  q9 s! v: J& ]
  2974. ADC #LOW(Sound_Bar)
    ; m" D0 Z! B% l, ~) L
  2975. STA $07F4: X: M8 z( j! h
  2976. LDA #HIGH(Sound_Bar)* d/ u$ I+ ^% d
  2977. STA $07F5
    4 A6 w" |8 ?% n
  2978. LDA #$605 S) `7 `5 s' E( {, }6 ]9 x
  2979. STA $07F6
    9 s$ t6 D, q: ~& ]( X/ u4 D' o9 d
  2980. PLA/ S9 m! p! S( v. ^9 e) X# B% h& b
  2981. RTS: u/ S; M- ?$ y) C* J

  2982. 8 i2 N5 N4 f# Q2 W6 z
  2983. .ORG $FE603 W( l  L9 A. C; g; W) v) W
  2984. STA $07F1& K* W2 k: k" B( H
  2985. CLC
    " m$ T' P; `- E$ f5 g
  2986. ADC #LOW(Sound_Bar)( C9 E( u: x. o# F
  2987. STA $07F43 Q7 u- U: d4 H  U$ E
  2988. LDA #$8D
    # i) V8 A% L" }9 U) U! k
  2989. STA $07F3
    6 S. e+ a5 I! q/ l
  2990. LDA #HIGH(Sound_Bar)4 x4 q5 U: j. f0 A! Q
  2991. STA $07F5( E/ h5 F* m& K' s
  2992. LDA #$60
    9 |; ]" N. G' t$ G9 H' a; Q+ r$ ]
  2993. STA $07F6  ]; O' y; z( d+ h. G8 A- Q7 Y! U
  2994. RTS
    % A& d2 p% }% C- `1 ~9 f: L$ J- l$ a

  2995. , w' O6 Q; _7 t4 X$ g- v
  2996. .ORG $FF40; J* N. W3 Q: u; ?5 v  V
  2997. STA $4000
    3 W0 M9 X/ c5 ?, H/ b8 [& [
  2998. STA Sound_Bar + $00
      _/ E/ a6 W% T' E. l; N: q
  2999. RTS
    " K' L/ K5 n; @* Z8 J$ O) _% c

  3000. 2 i1 V0 x% A5 M* @' M* ~  p
  3001. .ORG $FF486 i, ~- u5 r+ m! S* \; \
  3002. STA $40043 ^1 X  e; y0 y; B5 i
  3003. STA Sound_Bar + $04
    , B& e8 _0 N1 \. x! q
  3004. RTS& Z$ p# P0 F9 u! E, l3 Y
  3005. 0 d# N7 c; A" P' L5 s
  3006. .ORG $FF50
    6 o4 ^6 x: F- z, U# Y
  3007. STA $4008
    8 i) @4 O1 Z- G3 H, D
  3008. STA Sound_Bar + $085 }: q+ D2 w& F
  3009. RTS
    5 f& z/ Z2 Q$ \8 e/ z
  3010. " e$ }4 ^7 [3 I0 C. F2 w& `
  3011. .ORG $FF58* j8 E0 `  f6 k) }6 M! J
  3012. STA $400C
    - r8 g8 g! E: e  A8 [3 T% P
  3013. STA Sound_Bar + $0C
    . b! ~0 a' `( f! W, I# ]( d
  3014. RTS/ G" s( W3 M- ?9 b
  3015. + f' J5 T' _5 Q* t' O
  3016. .ORG $FF60
    3 ]4 D# g+ I  Z& S  g) P
  3017. STX $4000$ x. N+ j0 Y- A+ ]+ K- ]2 E0 y
  3018. STX Sound_Bar + $00& I( N+ @/ l+ X. }6 y; }
  3019. RTS5 l; B1 M) [, C* W4 h/ h
  3020. / t- n: M- \5 f6 v5 j( ?
  3021. .ORG $FF68. s% }; e7 N& Z( R& q* R6 w: {
  3022. STX $4004
    ' Q2 `7 [4 C+ y' K) u! {
  3023. STX Sound_Bar + $04
    ; Q) c0 c0 U! \
  3024. RTS9 r" [% m; E6 s  H' S1 O7 g) s

  3025. 2 r6 q4 _& @$ K9 M& H: u6 F
  3026. .ORG $FF70& M* Y# R; r+ H3 z  _- g
  3027. STX $4008
    - _( x: y8 P. k! }
  3028. STX Sound_Bar + $08* i; B6 {, Q  J, Y" z* l* O
  3029. RTS$ }8 _" X0 R8 q/ |; M3 z  `

  3030. 0 I$ D% `4 A, U0 [  I3 Q* ?
  3031. .ORG $FF78
    3 x; b3 F; F% ~) k2 e/ m
  3032. STX $400C
    ' T( m7 m, N' l& o6 @' a( L/ i
  3033. STX Sound_Bar + $0C: M% k, m' S+ i- Z
  3034. RTS
    9 v. R9 T3 Z5 H* a, v

  3035. # Q7 C( v7 l: a7 [4 G7 |' C4 ?3 G& G5 l
  3036. .ORG $FF80$ f8 w0 d# }! v+ z
  3037. STY $4000
    : z  n. d' x* Y* H5 O/ A0 [% i
  3038. STY Sound_Bar + $006 ~* A; c: D7 z4 u" O: W+ x
  3039. RTS
    9 m* l- v. J/ o, f& l

  3040. * H  ^- N* }* ?5 ?: N( D- g
  3041. .ORG $FF88
    0 j7 f; o! Q: M: S7 B9 P6 b4 Y, k
  3042. STY $4004
    " ]5 g: t+ T3 Y4 K8 R
  3043. STY Sound_Bar + $04
      n! T7 v2 `( t2 S" @& s. c- o3 R
  3044. RTS% l3 C3 k" u, @# ?/ r
  3045. , q- m2 w: m" v' _, z  D7 U5 F( M4 p
  3046. .ORG $FF90$ Y) b- _- v7 E
  3047. STY $40083 A  x" O4 W$ y- Y. s
  3048. STY Sound_Bar + $08$ S+ N' Z. V( R0 G0 \! ~3 Y
  3049. RTS2 a+ o; I; X0 v3 `1 x6 ~
  3050. ; e4 A% t" @1 K4 G6 t
  3051. .ORG $FF98) L0 R/ ]4 W$ O6 Y" ~7 x
  3052. STY $400C
    8 ^& [, w# R/ x# ^! W
  3053. STY Sound_Bar + $0C+ A  ?2 m9 K& h) q9 |
  3054. RTS
    5 Z. T+ T- W) V+ x. L+ t
  3055. + `8 F/ a; J7 E7 D1 w
  3056. .ORG $FFA07 w+ ]2 [1 d) r: J* R$ C4 ?' G+ A1 a( Z
  3057. STA $4000,X
    9 [; e" T. p9 P# r3 a6 V& M, G) f
  3058. STA Sound_Bar + $00,X
    - R* [/ k/ T2 x; u( P7 b4 C9 ^
  3059. RTS/ U: r8 O' w6 V6 z( d
  3060. 5 ?/ Q3 u1 S) ~: i( J$ M  Q9 c
  3061. .ORG $FFA8
    0 d0 E* _1 X6 a% F! r, d* ~) j
  3062. STA $4000,Y: O4 C# y! G  ]% \" G: b
  3063. STA Sound_Bar + $00,Y2 r1 D+ F3 T* [: W; V# x
  3064. RTS
    . L5 V8 i1 C0 j+ X, y) w+ q
  3065. 9 @# F3 |. ]$ m  Y1 y+ U
  3066. .ORG $FFB0! P4 F8 ]/ {# }1 O
  3067. STA $4004,X
    ) n! e( H. x8 P7 y) s) F2 O, o! ]
  3068. STA Sound_Bar + $04,X# a+ `1 S8 U. w+ h: [
  3069. RTS
    / R& Q; h4 g# F& M1 T' [) i8 z; Q
  3070. 4 q3 f- \. o0 U6 m$ x3 z; t$ X. U* R
  3071. .ORG $FFB88 B1 K. Y. \5 @( ]: F
  3072. STA $4004,Y+ J: ~) Z" Y- j3 C. h/ V
  3073. STA Sound_Bar + $04,Y
    / X. ]% H0 m  [& ?) L" G& E& U+ _
  3074. RTS, ^! F4 U; u/ Z7 Z, P; z! x
  3075. , a& v2 ^: E% f6 K5 i
  3076. .ORG $FFC09 t( u2 H/ i% A, ^
  3077. STA $4008,X
    ; a9 Q( C  W7 V: U
  3078. STA Sound_Bar + $08,X/ F4 @! Q( [/ l( }7 |* k$ m
  3079. RTS
    / O% c+ N* [0 u# ^, O: X
  3080. " y5 h+ [# T' A$ W3 q9 [
  3081. .ORG $FFC8
    6 D3 e: y  [, F6 U1 e: u
  3082. STA $4008,Y" }3 P; l) X: X8 u2 K
  3083. STA Sound_Bar + $08,Y
    % y/ X9 F) J* k% q7 r9 z
  3084. RTS
    7 z  t0 X* H, V( }. f8 E/ f6 E
  3085. 9 b0 C) [5 S& ^/ S8 V
  3086. .ORG $FFD0
    ! }' o3 D$ _1 M6 y3 V: ~) v3 b
  3087. STA $400C,X- M2 O% J& `& x! I+ _+ a
  3088. STA Sound_Bar + $0C,X# L2 k7 h( J( v' c+ H) n
  3089. RTS
    / h6 M  v% G( e

  3090. 5 U( n9 c( Q0 |) z3 R% a
  3091. .ORG $FFD8! O* I7 O+ J" H) H4 |1 ]+ I
  3092. STA $400C,Y
    7 M: Q. R1 n* B7 I+ ]
  3093. STA Sound_Bar + $0C,Y
    . R" }) l: X7 e. `( r3 D4 v: l
  3094. RTS
    % T" g. q4 _9 k$ U; C

  3095. & L3 M3 I3 }6 S) s$ r& t3 h* @& i
  3096. .ENDIF/ t( |- S! [" ~0 Z2 E$ Z
复制代码
) ^% y8 j7 f: g  ^
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3243 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 06:30 , Processed in 1.142578 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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