设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
8 L0 C$ T. B8 e4 N% B1 K* G4 u6 k; D4 `1 p* ^: e" h8 h
[FC][音乐12 IN 1]
  o! e) F" v- t时间: 2023.07.23) f! z# p$ t- n& I: k* U: t
作者: FlameCyclone
* w! p) ], I' J
1 |+ o. t& u4 }: N1 F! e收录音乐内容:1 @0 c( ~# g) \+ e. e6 @( N
1.Raf世界. Q/ x3 `1 Y1 G: G
2.最终任务
, Y5 g1 n; A  h8 b) D( w9 o3.赤影战士
; R6 B, m) m5 }# ^" f8 A. ~9 p7 Y6 i  U4.双截龙* t5 e8 G" R( [2 p5 p  R
5.双截龙2* F( x1 ]* T) Z9 O6 v3 U
6.双截龙3
3 v: p; D2 d5 k3 o4 E8 M8 q7.洛克人  O) r1 |* ]  N3 I# ~
8.洛克人27 T! Y9 G+ C, d/ M# v3 j* B
9.洛克人3
9 K8 y* l; P" H$ @# h10.洛克人4
! U% l7 r, E9 H- O11.洛克人5- k) W+ B# h3 b4 i! d# a$ w+ x
12.洛克人6* L& v8 D+ P) z* ~$ P$ V
6 V6 c' n6 z5 p/ y6 T0 ?# d: f1 l" v
操作:
, E! d) n% I' ~9 w% N. z上键:         上一个专辑
* M% x3 a  C1 W  A) ]+ r; _下键:         下一个专辑
/ h, F/ D  D+ T3 m8 w左键:         上一曲
3 N8 s/ R0 z0 N2 K* u1 r" }右键:         下一曲
2 X9 y5 I* A" P; g0 G& f" CB/A键:        前10曲/后10曲( W) e( `  E1 W
选择键:       下一页4 f. B: [* M7 l( S
开始键:       停止/播放
7 S+ s6 `8 X6 U$ C8 e) g7 C- q) J% t, ?$ M$ b  d" @1 l
http://flamecyclone.ysepan.com/, k. q6 X; \! z5 A2 O/ M1 s

# {: y) h" b+ i4 x* b2 r: g% {% j. H% M" O. F9 _' y  A1 M  z3 N; r. F
5 g1 S' w' b1 Y- m- n" Y8 E7 w
# J0 Z4 I2 M" r5 ~2 y; U
  1. ;[FC音乐][播放器模板]
    0 n, P4 F# C( u8 D+ R( O
  2. ;FlameCyclone 20230710( x' O% ~3 \( H0 z1 F! {

  3. 0 T9 C6 C7 X. B, K, J% F' }" A. r# V1 M
  4. ;文件头1 }6 F% o& C, I# s9 R
  5. ;======================================================================
    % o& I& a  R# w: e: ~. ^/ l( P6 O- V
  6. .INESPRG 16                                             ;16KB PRG 数量
    ' T7 R8 O* s7 G
  7. .INESCHR 1                                               ;8KB CHR 数量7 \5 h! }5 h$ Y4 \4 m
  8. .INESMAP 4                                                   ;mapper 4- C( R) c7 N! P
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直/ o% N6 r; o  e/ x! }( z( i& I, M4 V/ h

  10. . p9 N: H( @' x7 V6 j
  11. ;==================================================8 X) h4 i  h8 k$ f. \2 c, x1 z
  12. SOUND_BAR_SHOW_ENABLE       = 1. k5 a2 L9 `. i( g; N! n: A
  13. ;==================================================
    / B8 e* ?3 f+ {. t
  14. BANK_DATA_MASK              = $1F3 M+ _( i; P* d. U* X
  15. CHR_RAM_ENABLE              = 09 c! A/ B/ d3 q8 d3 f
  16. IRQ_SCANLINE                = 136
    : _8 N) {0 K) @5 z' f0 n
  17. ;==================================================
    - K' m, |9 S; q& j. h  ?# C. k
  18. SOUND_DATA_BANK_00          = $008 E& p: f/ m: w7 V: o! X
  19. SOUND_DATA_BANK_01          = $010 ^) i1 `( E6 C0 K& z7 q4 q3 O+ {
  20. SOUND_DATA_BANK_02          = $02
    0 b/ Y3 U3 ^# h+ h6 X6 d
  21. SOUND_DATA_BANK_03          = $03
    - L5 [( c2 A0 `( a3 N
  22. SOUND_DATA_BANK_04          = $04
    ( j  u* [) B" A
  23. SOUND_DATA_BANK_05          = $057 z( {; t; g: \0 |3 t8 c
  24. SOUND_DATA_BANK_06          = $06# k% @, g" L. K, h! Y
  25. SOUND_DATA_BANK_07          = $07, }3 R0 e9 I0 }  p; ]4 H
  26. SOUND_DATA_BANK_08          = $088 I8 l2 X% `8 u. W
  27. SOUND_DATA_BANK_09          = $09
    , I; b; E! ]& v- z6 z
  28. SOUND_DATA_BANK_0A          = $0A, F( |  \' u! I0 A+ V
  29. SOUND_DATA_BANK_0B          = $0B
    " l7 {0 J: K6 _4 R  A+ W
  30. SOUND_DATA_BANK_0C          = $0C# \, z9 a2 Q* t- M; @1 I
  31. SOUND_DATA_BANK_0D          = $0D: k, C! w1 x( Q) \  l) }
  32. SOUND_DATA_BANK_0E          = $0E- ]& t3 O% S" [
  33. SOUND_DATA_BANK_0F          = $0F9 v8 T# H  n+ R3 m% G  D2 _8 Q
  34. & Y  a% T( N6 @1 e4 Y9 G6 P( r
  35. SOUND_DATA_BANK_10          = $106 `1 U# y; I9 t* q
  36. SOUND_DATA_BANK_11          = $110 p4 m3 m9 I$ t. b# M, |
  37. SOUND_DATA_BANK_12          = $12& v% k/ y3 l6 b
  38. SOUND_DATA_BANK_13          = $13
    , c" n1 Q: h! V! s
  39. SOUND_DATA_BANK_14          = $14, Q1 i6 O7 G" Q- U3 E+ Q# O
  40. SOUND_DATA_BANK_15          = $15
    6 u1 ]8 G/ ^) Y
  41. SOUND_DATA_BANK_16          = $16
    ! j& P0 C+ V7 ~# A2 d2 ?' r. C' J
  42. SOUND_DATA_BANK_17          = $174 X  C$ r4 H- r" P
  43. SOUND_DATA_BANK_18          = $18
    ) @3 ]% f9 f- u1 P; Y# o9 D) {
  44. SOUND_DATA_BANK_19          = $19
    8 C5 i9 V$ M+ A2 r" u" t
  45. SOUND_DATA_BANK_1A          = $1A) R) h) ?9 v! A# I! F" t
  46. SOUND_DATA_BANK_1B          = $1B
    2 d, J8 o& |  m3 C. [% k/ w
  47. SOUND_DATA_BANK_1C          = $1C$ Y7 y: @+ H: Y
  48. SOUND_DATA_BANK_1D          = $1D
    / a$ J8 v# X# m- G# [
  49. & X9 |/ N) z* L, E' `
  50. SOUND_DATA_BANK_C000        = $1E
    . b3 V) H- a( @* _
  51. SOUND_DATA_BANK_E000        = $1F
    . n+ Y: p! ^, W5 Z" J$ B
  52. ;-------------------------------------------------, `! S( N! q9 L( k3 [
  53. CHR_DATA_BANK               = $20- O3 Q0 B% O* t
  54. CHR_DATA_ADDR               = $A000
    2 ]$ J% j' k) C' d& e( ]1 Q
  55. ;-------------------------------------------------
    : x- ?' W9 ~3 Z3 s9 u9 G! }/ J8 w& ~
  56. PROGRAM_BANK                = $00
    % [! X+ v& r9 Y3 F+ O/ k
  57. PROGRAM_ADDR                = $8000- M6 _2 r! _4 ^" Z  c# o' v
  58. ;-------------------------------------------------9 m0 A, A6 M$ X" R) N; {
  59. RESET_BANK                  = $1F: V3 }0 z! R' l9 I
  60. RESET_ADDR                  = $FD00
    5 ]$ n1 h5 Y3 G1 Z2 S9 b6 s

  61.   g* D" {) D5 l/ m* ?: ^0 F
  62. ;==================================================
    : `% S- L' Z- U% s9 Q1 h
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    . q  |5 \* M  d0 d/ E
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引0 s0 m; Z( b" ?. x* s
  65. PAGE_SIZE           = 5                     ;每页节目数
    . f( g/ q1 O# d9 S

  66. 5 C5 ~' l3 j/ K+ }; a  ?% z2 j
  67. ;==================================================9 {: k7 I% F1 z2 C" y
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除
    : ?3 s& x0 [- _0 \
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    3 ^9 ]7 W7 H- P1 O8 }. G, i' R4 e
  70. .ELSE3 o) M9 d8 ]4 R/ z; q+ R
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
    4 y. Z1 n  G3 t6 I4 @
  72. .ENDIF, k& E4 {* j- V2 a- J; m; e

  73. 3 x$ K7 g; C# x; C
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    8 j5 D+ T$ F+ X$ I) e( g( f. e

  75. " u* z; h2 c7 G" D& ~, F  r
  76. ;==================================================
      u! ~" O2 H. [( @: E3 E  f6 R
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置6 m2 Y% F' x5 c. [' Q" c+ [7 Q6 U
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    * E; e' q. Q0 |! M4 m( \0 C
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;$ l% D8 r  v) P0 Z& d0 Y
  80. ;==================================================
    4 O7 r& L* j# L
  81. Caption_Text_Pos    = $204D ;标题文本位置1 y2 B8 v* y$ r( ?* s  e
  82. Author_Text_Pos     = $2324 ;作者文本位置
    2 X! T* _$ c9 R9 I" {# d
  83. Date_Text_Pos       = $236B ;日期文本位置
    2 ~6 M! f7 _5 q( n8 L
  84. ;------------------------------
    2 s& |+ c, I- i7 T5 H4 U
  85. ;------------------------------! G6 B( ^5 E0 R8 S! p/ Z3 _
  86. .IF SOUND_BAR_SHOW_ENABLE! S# i. t( g( W6 G# j" i. ?

  87. " O" j6 R: J2 ~! l3 j. s
  88. Play_Index_Pos      = $2273 ;当前曲目位置! J+ \# ^  V& Q8 D5 G7 v8 G5 B
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    $ t1 |; k) A- [- B& p) n: y  v
  90. Play_State_Pos      = $22F3 ;播放状态位置1 ]6 Q+ ?8 Y) f6 i, H& A
  91. 9 b* {, {& B* H
  92. .ELSE1 P4 I  u% A/ e* {! ?

  93. 2 r' g5 U7 M/ N
  94. Play_Index_Pos      = $226C ;当前曲目位置, G# w1 I4 G  N
  95. Play_Time_Pos       = $22AC ;播放时间位置; K' ^' j. z1 B+ t3 ~/ m9 e
  96. Play_State_Pos      = $22EC ;播放状态位置
    4 \. m, @& p! W% |. \# t0 |
  97. $ R+ i. M, N2 q
  98. .ENDIF
    0 e, x, O0 ?7 A9 @( |: M
  99. ;------------------------------+ w1 v" L7 E8 H2 o+ K* F
  100. Track_Name_Pos      = $222B ;曲目文本位置0 o6 v; W9 [  w' U
  101. ;Track_Name_Pos      = $00 ;曲目文本位置5 k, s. D8 [0 I* k# }# }) C( H& u* Q$ F
  102. Sound_Track_Pos     = $2265 ;声道文本位置; ~5 u* q) e2 c
  103. Sound_Bar_Pos       = $2269 ;音乐条位置
    1 c3 O4 {* h- r: f( W/ G
  104. ;==================================================$ T: y7 n  j5 F1 |! W
  105. Scroll_X = $00
    3 F7 ?) H1 C3 X. A8 c
  106. Scroll_Y = $00
    7 j% A" |6 \+ {' `8 L. Y
  107. ;==================================================' V" Y# H; s) J/ x: r. Y: h
  108. Sound_Ram_Addr_1       = $0100& \, L2 w1 e5 n
  109. Sound_Ram_Addr_1_Size  = $80
    ! S4 @9 i" N* A' Q
  110. Sound_Ram_Addr_2       = $00901 S- ~7 g8 S7 i+ k: U
  111. Sound_Ram_Addr_2_Size  = $70, h5 ~  J. \" n- a
  112. Sound_Ram_Addr_3       = $0700- v( B$ b& ?0 x1 R. |2 o8 k
  113. Sound_Ram_Addr_3_Size  = $00
    + r; K" ~; p+ K3 \5 n; H
  114. Sound_Ram_Addr_4       = $0400& K, P3 \" z3 Z  ?* ]0 s$ N: a+ y4 t* P
  115. Sound_Ram_Addr_4_Size  = $00
    6 N0 a: ~7 C- G
  116. Sound_Ram_Addr_5       = $0500
    , t* s4 m; @7 }) i: M
  117. Sound_Ram_Addr_5_Size  = $40+ c7 I) R0 Y% U* t

  118. & O6 m- ?* n  C1 G
  119. OAM_TEMP_ADDR   = $03002 o+ X& X6 n- ~! K
  120. : W( L$ z/ {& y
  121. ;==================================================  }# E. L" F, J+ Y9 J$ j9 a- p: ?
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器0 m5 q* U: T) t! g
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    ) H: N0 Q4 C$ ]" x" J
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位& G3 ?# }( F, j) N. |$ f  g
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    0 M- S+ l0 A$ h4 T
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1' g) P0 m/ Z3 d. |# p3 y
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    9 v- Y7 Z+ m  s- h0 M2 `: R
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    / @, g- e2 N: b
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    $ W% v0 u0 M, }1 E* Q
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    ( [$ K; _, _  l
  131. APU_STATUS              =   $4015   ;声音通道切换
    # M: t, m; |) @  z1 h. _. n4 S
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    4 l2 O) W3 }7 x. H& W
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通# J5 Y  K$ L! ]8 i1 O: v6 d0 y
  134. ;==================================================3 ~9 M- C7 ~) O$ C
  135. MMC3_BANK_CTRL          =   $80006 c/ `) f; u4 g$ k. f; ?
  136. MMC3_BANK_DATA          =   $8001' A! {" _7 O" R; [6 `. w6 N% q
  137. MMC3_MIRRORING          =   $A0007 x$ N# u0 B7 \8 w$ p
  138. MMC3_PRG_RAM_PROTECT    =   $A001; B( w% j7 S% [, V, C+ f
  139. MMC3_IRQ_LATCH          =   $C000
    5 w' ]8 f/ ?9 @4 w
  140. MMC3_IRQ_RELOAD         =   $C001
    # o5 e+ f) W, w; T
  141. MMC3_IRQ_DISABLE        =   $E0000 }) n. N4 h3 O, @, y( [
  142. MMC3_IRQ_ENABLE         =   $E001# Z$ n- }7 U. }* J' ]+ o

  143. 4 g4 `$ P/ f# L! W6 _
  144. ;==================================================( Q4 \! B3 ~% y) v
  145. PPU_Addr        = $0200% o2 \7 P; y. {$ H; U: e
  146. Palette_Addr    = $02C0
    / g7 v: e9 t, t# j2 S$ x: t9 [
  147. Sound_Bar       = PPU_Addr+$E0$ ~/ {/ r6 v% Q7 Y# q
  148. ;==================================================$ R8 \3 l* C. ?# F
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    6 a; a! [( z0 {
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11+ A; U% D2 Y  U. X6 D
  151. PALETTE_UPDATE_MAX      = $2C
    7 d0 B: H. N) m) z2 U- G; V9 C
  152. PALETTE_UPDATE_MIN      = $217 _# E9 g9 F- S. w  o
  153. PALETTE_UPDATE_INTERVAL = 60/ `- B3 l3 W3 S/ j% o
  154. ;==================================================
    ( d. ?1 r8 A5 U1 \4 V
  155. Sound_Bar_Cnt       = PPU_Addr+$F0! Y& f; I- o( d$ l2 ~, g: Y
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    5 m" b1 g( q5 [: a; V- K
  157. PPU_Addr_H          = PPU_Cur+$03
    - x+ B- r$ L" {; l. z' a( }
  158. PPU_Addr_L          = PPU_Addr_H+$040 U, {$ }  B+ U) |2 g( a8 P
  159. Screen_Ctrl         = PPU_Addr_L+$01
    - D7 `3 O9 o) c& k
  160. Screen_State        = Screen_Ctrl+$015 l, z% S) \9 e$ K4 C) w' S( Q
  161. ;==================================================1 y- ~- |2 S, l$ _" ]2 ]8 v
  162. Use_Ram_Begin       = $50& X3 q0 {# K4 y+ ^
  163. ;==================================================4 i) P; e, G) o5 |  x
  164. JSR_Addr_Op         = Use_Ram_Begin
    , r0 U; z7 F% r! ?7 r/ l0 v
  165. JSR_Addr_L          = JSR_Addr_Op + $015 O. @1 i6 \' m/ R, p
  166. JSR_Addr_H          = JSR_Addr_L + $01' ]+ r% e( d$ R& i& z
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    " @! {' Z$ D. m$ f) ?
  168. Data_L              = JSR_Addr_Rts + $019 F: V( R- ^1 p5 A7 I& N3 b! V
  169. Data_H              = Data_L + $015 F8 ~) F6 m; I; v
  170. Data_Cnt            = Data_H + $01$ c, T' r5 u4 c! v" G% a' _
  171. Data_Buf            = Data_Cnt + $01' l6 }& Q! z- f7 w
  172. Nmi_Time_Count      = Data_Buf + $01
    0 z$ W. M8 @2 \  {
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    ' [! f: O. C, p& `
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
      ]+ J; H7 y. V) ~; z
  175. 9 d6 t+ s) H6 o9 [+ p+ r# p; w2 k
  176. ;调色板刷新标志
    2 [& ~7 [5 k3 a' Q6 y
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    ) F0 _3 V" g$ O9 C  Y
  178. : C% `* c! ~$ y( o8 q
  179. ;当前帧文本写入禁用标志
    / ]" d! h/ e5 p, P$ x8 N
  180. Text_Disable_Flag   = Palette_Update_Flag + $017 E  p& k6 [( z2 c) ]4 {
  181. 1 s4 [! A" M: b5 e
  182. ;==================================================
    * A5 x# r- Q7 y- S  j6 X$ A
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动; h' ~& {1 q9 m: K( [
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    : S2 h( G( X' t3 @
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间
    ! \) h1 [- W; e3 I) N2 s2 N5 ]* ^& ]
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间( ~8 x. G0 j4 x( Y  b
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    2 r5 w: A8 r. m  N" d5 b  T
  188. ;==================================================0 ]( v0 P2 a, W1 c2 E! C
  189. Key_Keep            = Text_Disable_Flag + 1
    6 o9 `# u% m' j" F& A
  190. Key_Once            = Key_Keep + $01
      d0 [1 m# Q1 c; q/ B' S3 X
  191. Key_Kemp            = Key_Once + $01
    $ }3 K4 Q2 z0 F& H! K. \% C  F
  192. Key_Temp            = Key_Kemp + $01" c# e, M7 K) G' ~6 ]
  193. Key_Getv            = Key_Temp + $01
    5 I/ A: s1 p' @' u
  194. ;==================================================& A3 Z! m3 X  u$ k
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集6 r' @- x1 F& h$ U7 Q9 T7 r/ [
  196. Music_Item_Last     = Music_Item_Cur + $013 s  y  g6 p$ F  K% z9 R4 Q
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    6 S( B# I: _6 m/ G  q+ g. d
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    & O" \5 Q" `! C, C' W. Z, c, e, Z9 v
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    ' M+ y" v0 R% g/ {9 E' ~
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态# E: v1 x5 j) h6 t* Y7 f
  201. ;==================================================9 \  y/ g& r; l1 l, M
  202. HEX_Data            = Music_Stop_State + $01
    ! p0 O* z' m4 ^) P& X' d5 ]0 m
  203. DEC_H               = HEX_Data + $01
    " [. Z& R$ c% q
  204. DEC_T               = DEC_H + $01
    * U9 ^/ J( H5 o& z+ `  X( T( S8 \/ }, s
  205. DEC_L               = DEC_T + $01
    7 r8 }7 Q: S6 f; u6 U
  206. ;==================================================' L: Q2 |2 h3 G4 I' E0 O
  207. Time_S              = DEC_L + $01
    % i& v6 ?+ v4 V) B- R" J' d0 p5 @0 l% F
  208. Time_M              = Time_S + $01
    & q1 u$ y' s. |, C7 O! ^
  209. Time_H              = Time_M + $02( H0 a. F9 w$ q4 Y. z; Z$ k0 V
  210. Time_Cnt            = Time_H + $03
    $ W0 ^# u' Y: }; H3 s3 W
  211. $ R7 D3 O8 z1 ?9 n, X
  212. ;==================================================
    4 a; S# h# U& T$ P
  213. Music_Bank_8000     = Time_Cnt + 1$ x0 {+ g6 u; R
  214. Music_Bank_A000     = Music_Bank_8000 + 1+ W  I7 P2 h% R8 l6 |7 o6 G
  215. ;==================================================2 V4 g+ c8 N. o9 @
  216. Scroll_H            = Music_Bank_A000 + 1: l. J4 ^; `0 Q& @3 w# d9 q
  217. Scroll_V            = Scroll_H + 1
    , e2 @8 ]; ^/ G4 r* q1 _7 ]( i7 s8 q
  218. IRQ_Process_Index   = Scroll_V + 1( Z  r: ]2 X0 b# `: q
  219. ;--------------------------------------------------
    & ?* {9 V$ G! e+ k. N1 s5 v2 O
  220. Page_Cur            = IRQ_Process_Index + $01% Y) V! X, R( u7 t
  221. Page_Cur_Index      = Page_Cur + $01# P  l* o: V' B
  222. Page_Cur_Cnt        = Page_Cur_Index + $01
    / n1 U+ w# w1 q( {3 [- }
  223. Page_Last           = Page_Cur_Cnt + $01
    6 ?& r' I2 I" g5 U
  224. Page_Last_Index     = Page_Last + $01& }( f2 O8 R, s. ~, L
  225. Page_Last_Cnt       = Page_Last_Index + $01
    - I, u3 h# t7 W. Y8 M/ |
  226. Use_Ram_End         = Page_Last_Cnt + $019 A3 V: R4 p/ _% d
  227. ;======================================================================
    0 [9 o$ ~+ s2 i  B) |" t9 x# R
  228. ;音乐数据块" l9 x1 V9 c- [8 R

  229. * F/ v* r) f/ y) G  r
  230. .IF SOUND_BAR_SHOW_ENABLE8 Y3 N- w; v% }5 K, M6 X3 H

  231. 6 V! ?6 u: R- L6 l5 D
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK2 X; e5 z! P4 o! _
  233. .ORG $9000
      F6 U: @9 U0 _) M) \
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    : p+ B, ]- d, i4 r- S
  235. 3 J2 n% }* _0 b8 A7 ^/ p
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    7 a" s  l9 P, a. G) @/ D1 b
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"/ `* J! G( b  S5 @+ c/ V

  238. ; S  o" r% l0 F5 b
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK
    7 A( O3 D+ l' N& {9 R
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"; q: i$ |2 [- z3 Q& g" `$ }

  241. + B# g3 Z9 o1 ^1 w2 ~
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    4 C# B) u" ~# D2 j# F! O. r
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"1 t3 P" j( X2 {: Y* y2 A2 Q% i6 U
  244. ! Z: `( |+ a0 S
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    6 u: Y* ^4 h& |  V- u: H
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"# Y4 g6 h* p3 ]3 \' E

  247. ( L5 J) u/ x4 |% r
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK' j! n) o; W1 i! n2 u6 t
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    : D) f% D. y  |$ N; Q

  250. " `4 ^; X! s8 z1 ?- D4 y# z. v$ o( ?
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK' m9 a$ y: N& \
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank") D4 r# X5 M" Z' K: @) b$ h
  253. ! S1 k. L7 S0 o$ t6 _! }
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    / C  \3 C$ g4 T: j7 l
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
      D+ l$ Y* p1 G3 B- B! M

  256. ! ]/ w% R/ E& I7 w" V: M
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK1 I3 p) s: s0 f4 u  p7 Y
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    4 u2 t+ C3 m, Z0 N6 B# {9 }4 E

  259. + x, ^7 d; G4 X/ S5 D
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK6 v. |; d; ~& f, K0 r/ N- p. N
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"7 [% ?0 B5 j$ x9 V6 \

  262. 6 }6 {% ~& |7 D
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK3 w7 @. k# D6 U& m. e: S9 r$ Q
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"7 ]) {" b! I4 f; k
  265. 2 I, y" A$ _1 C8 I0 I- D& e
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    ' c" X' U% k0 `
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    ; z5 K+ C& T1 E6 @

  268. " n3 m/ ~- b+ X
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK# L. x" _9 S& x: Y) d) ^
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"5 A: f* E  p; t
  271. ' c6 y1 l; ]3 X4 B( z0 B
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    8 T1 b8 v! c8 U1 [' \2 ?# X
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"
    8 Z& L; S' C' S+ R% C
  274. 8 {3 y3 z5 ~! i9 ?
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    - R4 S0 c1 p( d- S/ g
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"0 h$ C' }* s2 K) B0 ?: ?
  277. , b( E1 P% w" U! s; `
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    / \) H7 M9 V/ D% h! R+ G4 [1 B
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank") b3 A& k6 j: N0 K( d& a" F

  280. ! A* [8 o% c- w0 M: |
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK' _( |9 u5 e# L- L
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    + E) M, e+ k) e3 J7 g) U% S

  283. . R/ ~* J1 K& r' a% U% ?2 [
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK8 |, z. z! b6 A* D( K5 K: |3 Y$ A
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"/ n: N6 S( _. x

  286. 4 x% t! n$ m: j( k* g" T& o
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK% _+ z  z4 T  k  I
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank". k2 O, U8 E" Q8 P
  289. 4 q' \# S! n9 K1 ?
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK6 S) T" d" Y- R3 c1 P% w& l, X
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    $ W7 x. m+ H$ o3 m7 V8 N) {& ?
  292. , {* ]: D2 x' y6 P
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    + g, X; i6 u. Q! ^  o- S
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    - |# \) v! x: c+ Q( S& y0 H8 y

  295. & ^. G! a) o& {0 s5 F% p+ O5 @
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK# k& n' w8 v$ c3 x, k) `
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    6 A  l: c& |% v0 u* W5 d
  298. : G  c( L/ t+ b+ b
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    $ r2 U5 g# ^% [; k
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    6 D  G( c/ v) I1 G

  301. $ N0 _3 d2 y( b- O5 @) _6 k  x
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    6 @; W% v1 Y# b3 \* B, R' B: ~* t
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"6 f$ m- n1 A* q& D9 \( ^) p( `/ F0 _
  304. & l+ \* K2 e2 H- ~
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    + ~2 }* A5 A- l4 u2 w" u
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank") }: A$ N& K( b3 {4 o9 a: F
  307. / F' ^' y$ U! r, N4 n: [
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    3 d1 v- r: t6 Y6 K: }) Z
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"# r/ s4 X! F3 J. V5 r2 W5 @

  310. 9 J4 Y% z3 Q' ~% X9 T
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    * \4 J+ M3 @- J9 F% X3 ^% @1 ^+ V
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"( Y; D- }+ L$ ]  G* H5 f

  313. - Y  r, h0 M9 ^! @: a# v8 i
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK1 E, Y+ A5 }" `# ?1 v6 h8 s3 Y  y
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    6 `0 O* w4 r5 H, i# x+ E& y) Y& Q
  316. ) c! W2 s! v+ J
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK* x: {) j9 X$ }  r3 [
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"* G& S+ L. a8 N" b$ F7 Z
  319. " U. A1 k" T  p. h% j
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK, h8 |! [" K; D6 B6 o5 l1 }) T
  321. .ORG $D400% Q# b/ C% t; l8 `2 K
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    ' |* E+ t' @' N4 y+ C; t  C

  323. 1 w& |( a8 z6 p1 m! D$ E9 x& B  h
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK/ S: ~, z. E- s- n
  325. .ORG $D800
    . Q% V# d. }9 R) s# b
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    - E) L3 E0 y& z: Z$ w7 z% H+ f7 N

  327. 1 T# M3 }' `9 O2 n

  328. 7 }. `& z( j8 s. S' c% B. r
  329. .ELSE
    4 e- E( d* e% J; L8 x% J* s

  330. 8 a/ E: k, h4 G6 Q7 L4 n
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    2 L$ C  `$ X1 m8 p* ^1 X
  332. .ORG $9000
    . N/ m2 N2 f3 w! Z
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"- i. h# O$ m. s6 u6 ^6 L- ^
  334. 8 u" U8 T' G# h1 d8 Y
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK  O7 J# u" t& ?  N
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    8 ~- n$ b. v6 y$ J) ], f- K+ [
  337. , H! j+ g+ q& p; d. i( l/ Y3 }
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK( ?( k" j  c+ B3 ?
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    4 P7 G! O! V) I9 Q- Y

  340. 7 f. w6 H- q% D! |9 F7 x
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    ; t0 z. r& m' ]: s/ P0 G. {7 @
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"3 Q$ Q! h* P! M3 t
  343. . F3 @6 J" Z: R& @. ]& q& c( e- Q
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK$ R5 y3 U; f$ n# C9 q
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"( n3 u- h. R, g: n6 e

  346. 2 L! |. m& y+ R0 K, I
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK/ t9 {' D8 S; U+ ~1 r
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    5 P! S# t/ P( k* o

  349. 9 i7 f4 S% P* H& [: [, M
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    0 D/ X$ I2 a, |. P2 S- j
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"+ |0 D1 p- g7 {
  352. % n8 y  p4 e: R7 q# t/ ]
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    . V) P' _; M. i: L6 @$ H
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"
    - y0 b% |/ {1 i6 z& U

  355. ) s/ B7 }1 J& C5 a: p5 t7 }- l% Z
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    6 ]+ r; Q3 q* G' t2 Q9 }2 g
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"3 S* l9 P/ W( ~& \# r4 W4 b& c8 b

  358. " S* z( T" p; b3 c7 ?! S* p
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ! W' J7 m8 s+ }  b& G  a6 Y- `0 J) X4 ]8 l
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    ' V/ ^5 L9 I0 L+ `( q5 W3 j

  361.   ~' u/ h6 B7 e' |; A* y1 g
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK3 T5 c( \% g9 L: c  X* Q5 h! \* _% S
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"- G. K7 V/ \  N
  364. 3 m# y8 O3 }7 w
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    " j6 m) w; q1 N" J3 P  ?6 [0 a5 R
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    - F3 E9 C) v0 ?" B" x7 w

  367. " M' G; _8 B' b4 j9 g5 f' i
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    # A5 L4 M5 I% |; w4 k) T
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    : v! ^2 x; C5 X0 r0 ^' i' Y* x; t

  370. - f; o+ u0 e; J/ `
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    9 i# ^, ?+ `) u# w! \
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"$ H. B: F9 O, Q* L# B0 {/ q: b
  373. ; x5 b2 H' X* ?) o5 E% Q! N6 a
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    - g7 A- p) n) R; E( ?
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    0 [5 w# V! y/ d0 b2 Q2 G
  376. ( ]& h4 y7 f) a6 S* \: Y; s
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    0 i: @  d3 V% s
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
      a9 `& M, I6 a/ M" D
  379. 4 K& K; E8 x* ?5 A
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK7 a8 _+ I+ H7 J" r8 h
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"
    7 x! Z1 ]2 J3 ^. B

  382. ; A" y2 o! @. N, @% f; C
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    : F% w" H; N) X% Q9 j6 z7 @$ V, l& j
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"! s, r) M* e1 C7 q1 S8 b) i

  385. 0 m3 J$ _! b7 z* R: w- ]
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    - D2 `, l$ d+ x  r# H4 X& y/ D
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"2 c! d& F# o, C" C% G' p  `4 C
  388. ( r# i; U3 D3 `% N; ~; ?4 E1 ~' _+ y
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    9 C; Q6 l; m# s& N
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    " ^4 O. @" e7 Y" T+ n( H2 F6 ]
  391. / H% o9 x+ f5 p% G( {8 F
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    0 g2 |" d- P) t2 e$ H4 U7 w6 G. U
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"8 c6 C2 [2 R; L
  394. 0 m$ e3 _- K9 T6 `
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK1 j8 E# g6 s- y& z% Z5 U; R- N
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    % ^0 h: r1 c8 T( x

  397. $ L" N: ^# e* q' r+ `, z) S: I; E
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK! f& ]7 c5 A* T' X
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"% n) \  s% r/ t
  400. 3 F4 c$ c' V( H' s
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    " t7 A" |: x4 c+ y2 `/ x9 k. c
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"9 y+ b( Z& L, }

  403. ) u+ t4 z9 c- l
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK! T& }/ F# b1 b+ S  x
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"6 r8 F2 V# I2 M4 ^% ~
  406. % j# g# c# f/ @) g) z
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    & B- ^6 p% H( J3 B, F# b+ a
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    3 l' Z; D# I% [! b4 C( Y2 q
  409. 4 N9 @7 {+ r8 K. S! e
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    % _0 J: K( [" X$ f
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"3 e2 E: X& x& `  b# j+ m; |

  412. & L, y3 u5 V  U+ o% j' a& H
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK" l2 W2 k$ y4 u, D
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank": J8 c7 L7 n5 G
  415. , c. k- Y) T; A! n
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    1 h1 X: I# d: v2 r) l" j
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"3 e' x2 b* f* s+ m0 C" \
  418. " J* Q+ ?# H) Q$ c2 z- f' @+ D+ Y1 q" F$ C
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK9 f2 K# }' }2 z+ I  S
  420. .ORG $D400
    4 m& Q  _. y( N; W7 o$ J- r8 Q
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    5 W5 D0 v: o) ?, @

  422. 4 Z' K: {( i6 r3 Z/ x) o* p
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ) U/ l6 B# J3 G! u8 @8 R) V
  424. .ORG $D800
    / G: w$ v$ r+ t0 X% n& N* f
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"" R9 o- A* z, K/ x9 C! C

  426. 5 g. b! O% p! V
  427. .ENDIF
    # B5 ^1 `  ~; ?7 ~( u8 f
  428. 9 _+ q/ x( r& {3 g3 c
  429. ;CHR图形数据: F3 G9 P  Q2 C/ G7 f& f0 }
  430. ;======================================================================+ ]8 F1 g) n4 V* r5 e4 }! G. N$ B
  431. .BANK CHR_DATA_BANK6 ?! P3 O( e; N2 F& G; ^
  432. .INCBIN "chr_bank/chr_data.chr"& A# s5 ]& ]# r. \0 j) n, _5 o
  433. 4 @! _  k6 s8 ?& j) G2 N
  434. ;======================================================================: T2 P) v# S+ b1 U" T
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK' H. I4 }9 e! t1 n6 c
  436. .ORG PROGRAM_ADDR9 {8 g' y9 E/ |( v/ T

  437. 6 h) |- {) R/ s$ V/ D
  438. ;==================================================: m+ B) E) Q. U6 P, F3 V4 p
  439. NmiProcess
    ! _" g5 r, `: G, l; b
  440. 5 F5 x3 C# I! t# Z
  441. ;关闭屏幕控制# \- Y! B: m$ h: |7 {1 @0 A
  442. LDA #$00- a* F8 n( U  Z' d- [% ]
  443. STA PPU_CTRL9 ~5 G, t7 u: U4 G1 B
  444.   b5 [6 d  s! E& b* z- Q' Q: o
  445. ;没播放音乐就不需要触发IRQ
    ) t: F. }* B3 v1 e( Y( a5 O
  446. LDA <Music_Stop_State
    1 M" X3 p  n  J- e  ~, A
  447. BNE NmiNormal
    % `4 a' Y, J9 Y) d- V1 Y

  448.   d/ f) U5 ~0 J! l$ V8 p# i
  449. ;重置IRQ索引
    # s( r- \: |- {2 o( K, M/ g$ x( x- F
  450. LDA #$00
    - |9 h9 }& S6 e
  451. STA <IRQ_Process_Index
    2 p1 R! `( |/ }. \

  452. 9 O# m  H" X! [" y# F
  453. ;时间秒数为空则跳过
    / ^' O* L; N3 c; U. {8 N1 }
  454. LDA <Time_H7 h) g/ i. m7 [& @: F& N3 w
  455. ORA <Time_M  `- C: y- H- k, i# N( G# r& @* [
  456. ORA <Time_S% j" s& S. a7 r0 ?) D3 O, D# p
  457. BEQ EnableFirstIrq
    / F) W* X" t3 t: _1 h3 h( M9 y
  458. 1 h2 q* E7 Y1 o
  459. INC <Scroll_H1 J! L) [. [/ Q8 r& P* G2 l% e

  460. 4 U) x) v0 k$ a& i
  461. EnableFirstIrq
    ( D: L; Y- j1 [8 T! |7 w1 H9 A
  462. ;80条扫描线后触发IRQ
    8 l! H2 t. h$ I" X9 P& E
  463. LDA #IRQ_SCANLINE
    0 {/ h9 K! D! @
  464. STA MMC3_IRQ_LATCH. B0 Z/ ]7 b6 _& b
  465. STA MMC3_IRQ_RELOAD- ^8 S7 C# Z3 f
  466. STA MMC3_IRQ_ENABLE
      h0 f8 v. }; W' ?
  467. CLI
    ! p5 L3 U5 Q$ l7 P

  468. # q- i) X- Y+ u$ e
  469. NmiNormal
    4 G' g% v$ A& A& o- c

  470. 2 \$ B( q; e; Y. @' d6 y# ~( @
  471. ;处理PPU图像
    8 Z3 ^6 a! U: v8 E* [  ?
  472. JSR PPU_Proc
    8 o" n0 P1 e9 r5 D

  473. 6 |& L8 {5 |8 k' M3 c& ~
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)/ O2 V- i3 ~. a0 A' o, N" K
  475. LDA PPU_STATUS  x5 p! S4 A. |+ {: }
  476. ;LDA #$00
    5 S" g: A" Y# I6 o$ f3 d
  477. ;STA PPU_OAM_ADDR  I9 F* b' ]: |% p6 q6 r6 T
  478. LDA #OAM_TEMP_ADDR / $01002 e' _; R+ {/ r+ m* U6 H
  479. STA OAM_DMA
    $ e0 O1 P1 G( C8 U; z- Z) P
  480. " v+ A8 Q, p" w: F: u$ \# q
  481. ;启用NMI中断
    # B6 s6 C2 `: z' |9 B
  482. LDA Screen_Ctrl
    9 q- b3 I- @2 \7 L) `! C" ?( Z
  483. STA PPU_CTRL
    ' Y4 K" y' D3 j, f* n+ h* s$ Y/ C
  484. * ^% H* P1 J% p0 a5 M4 G7 {& q
  485. LDA <Text_Disable_Flag. e% e9 s& x& R% c% i
  486. AND #TEXT_DISABLE_RAM: R8 Y% z( N- g1 ~: T- E
  487. BNE Nmi_Sound_Play2 e! j$ j2 ^. I/ [; W/ f$ n

  488. : N6 m" @: ^& i1 g/ _
  489. ;处理手柄输入
    * X3 ~. h; j3 \) F! U- j
  490. JSR Key_Proc
    ; v0 P* P' s: l
  491. 4 {* \" D+ ^+ M/ O" L) G$ B6 M
  492. ;切换音乐(手柄触发)
    # K( l; l, F8 {: @' }+ W+ K) `; s3 W, B& T
  493. LDA <Time_Wait_Cnt
    8 N6 U5 G" v1 j4 m; X
  494. BNE Nmi_Cursor_Arrow( t) f2 w; c3 k5 t: ]0 c9 f
  495. JSR Change_Select_Item! t, Q+ D" Y5 {" q

  496. ; P- _# g' K! w
  497. Nmi_Cursor_Arrow
    3 b( ]; c" k: L; Z/ A1 s, H

  498. 4 [- h- j) _1 B. q/ \, O9 W" O
  499. ;处理光标箭头4 T# O, Q, N( i' @# e2 E
  500. JSR Show_Arrow
    2 r: j7 f( B$ n/ g8 n

  501. 2 T) |) F9 Y+ W* V; B
  502. ;更新调色板: t( c' G3 h+ k0 B/ z, _! w3 m% z
  503. JSR Update_Palette_Data
    : g! v3 D7 L& d+ l+ B6 n1 N
  504. 8 _1 w) h# Y% O0 R0 M  B* G
  505. ;显示时间(缓冲)
    " T* O6 a/ P2 @
  506. JSR Time_Show5 i2 a# y+ Y# |2 @! C

  507. 4 w, j9 t0 \. s7 W3 p5 U$ V
  508. ;音乐显示(缓冲)
    % `! f4 f% e4 e$ @% ~
  509. .IF SOUND_BAR_SHOW_ENABLE; x, N  n, L2 p
  510. JSR Music_Vision) [% F$ e$ O$ n1 ^  i. r
  511. .ENDIF
      q8 ?+ _5 O  I, N
  512. . o5 G/ C. T$ D0 T" E
  513. Nmi_Sound_Play
    0 G! @% {% y+ |! g5 G
  514. ;播放声音
    $ [% W- S, f3 }) b* ~$ A" j9 g
  515. LDA <Music_Stop_State  |3 I' T# u8 @- l8 j' A9 ]$ y  s) v
  516. BNE Nmi_Time_Wait_Set
    7 r7 m1 H3 H. \; i8 C
  517. JSR Sound_Play_Proc
    % E& L' B! J% m( J7 Y

  518. 0 p6 b* k$ ^  h
  519. ;播放计时
    , j# ?' H5 r9 u
  520. JSR Time_Count
    & N5 m' w( A" i( I* ~( G
  521. # l* p. |* n. P5 w, E. y+ D
  522. Nmi_Time_Wait_Set
    ) R( q$ Y$ m" z0 G2 h1 R
  523. LDA <Time_Wait_Cnt# r3 D7 a" W8 {3 t, U( K  K" `
  524. BEQ NmiNormalProcessEnd8 W9 E# v: P0 n+ ?; r
  525. DEC <Time_Wait_Cnt7 y! j5 a  _. `1 z! a
  526. NmiNormalProcessEnd1 e) X" d$ D- E5 c* r- t
  527. % Q7 m7 V5 @: Y: D- a2 L
  528. INC <Nmi_Time_Count
    . R2 M. y: b6 o5 _) y) H+ Z7 c

  529. & a0 D! \& e( y4 ^  b
  530. RTS
    & q. z* Z% \! i% m# d3 C
  531. ( j0 \! R1 U$ X2 N$ }! ^1 }3 ?% M6 l
  532. ;==================================================
    / }  {) G7 t! u# Z2 ^. m; ~2 U
  533. Init_MMC34 E$ E  i( I7 v
  534. ;==============================, N. Y% z1 L: z% s
  535. ;禁用IRQ0 I2 Q6 e+ L/ n
  536. STA MMC3_IRQ_DISABLE
    7 \" a/ P  r3 `' r3 V/ A
  537. * u; Y+ |/ N" m
  538. ;水平镜像3 L, T# p* D! l  N
  539. LDA #$016 ~; m8 Y( O8 S; X3 G! @0 {, b& p
  540. STA MMC3_MIRRORING
    ; X3 k6 u; R6 z" `

  541. " [1 N) D( `& `8 s) q5 D$ W
  542. ;初始化图形bank
    : S* M% |' O0 A" n1 e6 |" |  L- v
  543. JSR Init_MMC3_Chr_Bank6 F! A2 F1 Z: c

  544. + S8 A6 {1 L; r$ t& G
  545. RTS' l+ Q* @) [* g4 V# e! Q/ ^
  546. ;==================================================
    5 r. R6 V& a2 u& k
  547. ProgramBegin;主程序
    & p, z. Y: S8 f* t" J
  548. LDA #$00
    4 \, D) K+ a7 l9 h% H' A: a8 X
  549. STA PPU_CTRL; W% J* ?) X9 {! `8 s7 R" d
  550. LDA #$004 S# i" }+ y& t/ T/ a& _' C
  551. STA PPU_STATUS* r2 n3 O6 d) w5 o. Q% G
  552. STA PPU_MASK* c" Z" i( c  ?0 Y
  553. STA JOY2_FRAME* x( A5 j  o3 ^
  554.   D# j2 U- T9 x; l
  555. STA PPU_SCROLL- g2 b  M0 Q" u3 v" w) c4 I1 s4 o
  556. STA PPU_SCROLL
    * a$ i- w+ G. R7 y3 J. L! x+ U

  557. % j9 ~) I: u1 c+ F5 X& Z
  558. ;==================================================0 Z* ~' r1 ^5 n6 }! G* f3 E2 V
  559. LDX #$FF
      v( M! E( J& l, x* W
  560. TXS
    8 V4 f3 k2 N! R6 M

  561. $ w% G" H6 \9 C+ E- k) t
  562. JSR Init_MMC3/ J0 `  s3 ^; x  H1 k# r8 u

  563. 4 T: C& A; N: b/ G( q, }0 g
  564. LDX #$023 F6 F) R) y$ M; m7 a* ?6 k& a7 ]
  565. Check16 S% y8 w$ _8 ^1 J) p9 s7 M5 k! n
  566. BIT PPU_STATUS
    . o5 }1 ^* ^7 k. [6 a
  567. BPL Check1
    9 l2 [- B) P. T% W2 R3 u
  568. Check2; ~( i6 ^- ?4 p) a" {! A
  569. BIT PPU_STATUS) n" U1 l! n. }( g
  570. BMI Check2
    * }8 O8 b* @6 L( k& {9 e
  571. 0 }/ c: z0 S8 w! V5 g2 C! y
  572. LDA #$0F* l5 n  }" N* Y/ N1 C: R& ?* ?
  573. STA APU_STATUS( H4 q5 z; B3 _
  574. LDA #$C0
    % R4 }) `7 W$ |' Q# q
  575. STA JOY2_FRAME  n6 o: n: b, P7 f2 a( N
  576. 1 [" d  h) y( F& {" a/ a/ G
  577. LDA PPU_STATUS. g9 ?& K& e& A, ~- q5 j# \+ I7 c
  578. LDA #$10
    . U( X+ C- t& n6 f) Y
  579. TAX! a  N: s( P' e; w6 p
  580. Check3
    ' k! G  L* c0 T5 |3 k5 T. \" l
  581. STA PPU_ADDRESS
    ; e/ R: V1 f4 H& ?3 a, x! s: K
  582. STA PPU_ADDRESS
    1 f7 l$ L: M4 z. J0 w
  583. EOR #$007 \0 p7 }( P8 Y
  584. DEX
    ! K2 g/ b6 y$ l
  585. BNE Check3( H- f1 {# D* x7 e
  586. ;==============================
    * v. u% R( `: w: N, h. K
  587. ;调色板清空
    % A6 _/ }* D' L/ U, g, f
  588. LDA PPU_STATUS1 r  y3 @% J% s% @
  589. LDA #$3F
    - f( W( i- e- Z0 Q' |
  590. STA PPU_ADDRESS7 I5 d+ C& o( {' o* E2 l  `
  591. LDA #$00' d3 b8 v9 `3 j# O7 ?3 ~
  592. STA PPU_ADDRESS
    3 i! _4 X5 f4 M" l) V! z
  593. LDA #$0F9 o: i8 ^" l$ x% E% O
  594. Palette_Clear
    ! W0 {; w# G+ I# I6 v
  595. STA PPU_DATA
    " J) e1 ~; J  ~
  596. INX
    & e$ l/ F' A+ n# a) B! U/ o
  597. CPX #$20
    ! x  F+ e8 @6 D. Z2 B4 u
  598. BCC Palette_Clear
    1 f3 X; X4 D( M- ~/ i( d% z8 t
  599. LDA #$003 `- {4 y& {5 ^# s: \, s
  600. STA APU_STATUS
    6 @- C+ G) e: h* W7 G+ l

  601. 0 R1 e) J+ F* L, G/ ~: T
  602. ;==============================- P( D2 l6 W3 J% W! u2 O. \  @
  603. ;RAM初始化
    . t, Y6 ^+ ?! M+ q- G: C
  604. RAM_Clear_All
    1 P3 s  H; b8 J
  605. LDY #$00: @! l, T8 h  I, L
  606. LDX #$08
    4 L1 X. M& I  A  ^6 |! |8 ]. [4 W
  607. LDA #$00' s. ~" s! Y2 [% l5 u  c
  608. STA <$00# y! v- @( [0 Z- F7 t! \+ ]
  609. STA <$015 d9 \1 E2 z$ V  @. q- {
  610. RAM_Clear_All_Start( e  I4 b; Y- q- C5 u1 z
  611. STA [$00],Y6 n$ V% H+ D  D  f
  612. INY
    . l$ h# o4 S1 R; J" ~) [9 I" {
  613. BNE RAM_Clear_All_Start. C" P& x- e  R4 a: v6 l  j5 T
  614. INC <$01
    5 }1 j4 j: s/ Q7 N4 J$ y7 I
  615. DEX
      P% y! _7 [3 _7 [
  616. BNE RAM_Clear_All_Start9 X6 O9 K8 R3 p% n5 d

  617. 8 U# |  Y! W: G* f
  618. JSR VramClear
    $ B6 C6 Z# \1 j& U0 H# I2 d$ Z) A& F* l8 u
  619. JSR VramInit1 u( K' ?( L1 ~( G1 {. O- }
  620. JSR OAM_Ram_Init
    7 K3 \+ V4 A- Q1 @4 @9 \  ~
  621. JSR Init_Palette_Addr' F" J( ?8 [; j1 r+ L" Z; X. r
  622. " \6 }0 U0 D) T) g" s
  623. LDA #$FF, [3 f0 z1 {# c- C1 ?/ {4 f
  624. STA Use_Ram_End4 N9 m0 C$ P% m2 j! z5 q% v
  625. ;==============================
    2 ^$ c6 `8 E3 f5 x# I( u+ r- {2 J: r
  626. ;初始化背景调色板0 a% V; ?! d9 G: h
  627. JSR Set_Palette_Color
    & Q5 e/ I9 I3 ~8 \3 Q
  628. JSR Set_NameTable_Attributes8 w2 d; v" u  |% m+ m) Q' W5 g

  629. ; C6 u$ f8 q  k- {6 J* `
  630. LDA #$00
    2 O3 P/ r/ g5 D4 C1 k9 y" Z, c
  631. STA PPU_OAM_ADDR# O# Q, T. B$ \: \" z) w# ?1 v
  632. LDA #OAM_TEMP_ADDR / $01003 `' @* b2 P9 b$ S3 x
  633. STA OAM_DMA
    - {  ^2 ]  }) J: F& {( l% P9 z
  634. ' H1 {( v. p# f2 p* z, w
  635. JSR Sound_Reset_Proc
    $ l: M& M7 k' c
  636. JSR Set_Sound_Total
    & w1 n7 r# X4 `0 S( B, N. s

  637.   }$ q& Q3 w* J1 D
  638. Init_Start_Music
    1 Y" ?- }& v0 z6 U+ c% g
  639. LDX #$00
    . ]; {9 P' m  P  |
  640. Init_Start_Music_Write
    + A3 K4 L, `% H& t' ]5 f
  641. LDA Sound_Start_Port,X7 E  f# q; f$ x9 N3 I
  642. STA <Music_Cur,X
    + Q  C& h+ X+ t: R! K) x
  643. INX
    # }) n1 D; U9 }7 G. O: h- Q3 Q8 b. J
  644. CPX #ITEM_MAX_SIZE
    9 _+ X- h9 b; W6 m6 [
  645. BCC Init_Start_Music_Write3 _. t6 ~/ k' q: `* q8 w& U- ]
  646. % K' [& |6 a' a9 Y: v* K
  647. JSR Show_Music_Text
    ( l1 X  d# _  y' W% G9 G+ U
  648. 1 X( u7 W4 ]8 P
  649. .IF SOUND_BAR_SHOW_ENABLE
    1 y  q3 c% g9 `
  650. JSR Sound_Bar_Text_Set
    : b) ~" ]2 {: F7 G
  651. .ENDIF* _8 I1 a4 K& y; t
  652. 9 ^1 d5 i. _: e6 r
  653. .IF Track_Name_Pos1 X: x$ `1 \+ J5 v
  654. JSR Show_Track_Info
    - i# D+ X8 Z. o  A/ K
  655. .ENDIF, B0 Z& O  n- z4 P

  656. ! L- C8 w' D4 Y$ T
  657. JSR PPU_Proc
    - p+ u- M1 _, O! B2 I1 H9 M+ I- s

  658. ; |4 q- \# `( M5 A+ Q
  659. ;==================================================, e" g" W7 J- U) ^6 ^$ C1 E3 l
  660. ;音乐bank初始化
    3 H( C; f8 E9 F7 I; t1 b! [
  661. JSR Init_Sound_Bank% \4 s7 o6 G6 r. M: Y+ Q

  662. + w1 ?1 I; z# a" A+ c# C
  663. JSR Music_Show% s% b, C7 e  q7 {  W7 t" E" l( V
  664. JSR Time_Show+ k2 ?1 U1 e6 p
  665. JSR Music_State_Show: r, l+ |! W/ P4 ?" Y) t, q
  666. JSR Time_Delay
    ' s( a8 W. W% `! |. y0 j3 g

  667. " t$ g  Z5 e% a8 i+ |
  668. LDA #$01
    9 c+ n# ?! A5 A2 S  m& t
  669. STA <Music_Stop_State
    . I, ~$ a+ X) l$ _* u' \; S
  670. ; b" C( C2 [& s
  671. LDA #$88+ r$ O6 A" I, j0 {7 P1 M/ ?
  672. STA Screen_Ctrl$ x! `4 Q- k5 U+ G
  673. STA PPU_CTRL
    " r2 D. F" g. Y0 g3 |1 [

  674. " o5 p2 C+ p4 {. k" Z3 y
  675. JSR Show_Page_Text
    % l. g4 v6 r1 L4 N) X5 t
  676. # ]/ l* ]4 C3 A
  677. LDA #$105 M) u8 X) g: Y$ {
  678. STA <Time_Wait_Cnt: ?7 F  f! L( c0 `% v) b  ]# n% K3 ~
  679. . F9 u% K3 |; O0 i
  680. Wait_Time_Over
      I0 i# ^4 l& |  i
  681. LDA <Time_Wait_Cnt
    " n7 L* m# [- k# Z' ?/ O$ A) j
  682. BNE Wait_Time_Over
    & }/ Q/ l( s- t& Y2 {  Y; u4 G( o

  683. 5 h8 V: r$ I3 }1 w; Z
  684. JSR Show_Arrow
    " o+ f3 ^7 h4 t2 h5 G2 `5 ?  R0 J
  685. LDA #OAM_TEMP_ADDR / $0100
    0 Q. q0 Y8 [1 c2 {& h9 v1 [4 E- L
  686. STA OAM_DMA0 V* B. h2 @+ P! }  s9 h& b, G
  687. % h7 _, U1 f9 _5 E+ I
  688. LDA #$1E6 v! H+ H4 _5 \$ c" O9 \3 J* `
  689. STA Screen_State
    0 [/ m8 z; p5 U6 o4 u1 T

  690. , w5 _# F/ l) @: z
  691. LDX <Music_Item_Cur
    " O. u8 t) m( Q' O( d" U; ]/ s
  692. LDA <Music_Cur,X+ }/ z# g$ V* k) p- R
  693. JSR Sound_Init_Proc* [+ j: G1 E+ ^; {$ C

  694. 9 C; ?% Y9 Z) M, h# u
  695. CLI; A4 F( r+ p! h* h2 C4 x/ O5 r6 F
  696. JMP MainLoop/ G2 m. a# P& S3 q$ z$ ~& r# g

  697. & `" L: C- w, ~  F
  698. ;==============================
    + Y% Z' K+ U# T. ^) V% k1 p" g
  699. Time_Delay;延时等待  }: E, @; W# p2 f# `: e
  700. LDA PPU_STATUS% [/ ^: V3 _# k
  701. BPL Time_Delay
    2 S+ w1 w/ n' C. O6 K3 V9 V
  702. RTS% e; p$ q$ ?9 ]" _

  703. 2 J% ]2 d! Q$ e+ M/ i! c* Z
  704. ;==============================9 V/ a! M  p8 ]; K
  705. OAM_Ram_Init;初始化精灵内存8 m: V  J! B2 A, O' Y. {0 Y
  706. LDX #$00
    ( g  _% b0 e$ U& E! X
  707. OAM_Ram_Init_Write5 l) _7 x  Y$ w2 l8 Y: \
  708. LDA #$F8
    % h* K  B' `3 Z( y- o; C1 Z8 v$ t
  709. STA OAM_TEMP_ADDR,X
    ! }; N5 h( u' O4 X5 w! a2 j
  710. INX1 D7 d0 z3 R# H$ C" v7 A
  711. LDA #$F8
    . T" R- B0 e- N1 m, u  \% d# ~
  712. STA OAM_TEMP_ADDR,X
    4 B+ X+ @0 @' K3 v
  713. INX
    , ^) C4 _* r9 N' u* j6 D
  714. LDA #$00. }% v" q0 H* p, X. d( v% g# `
  715. STA OAM_TEMP_ADDR,X" a  @% f( o& b' q3 V& N0 [
  716. INX  b) i. S$ s1 _. p% [
  717. LDA #$F8! C* b$ p6 b, B, N9 ^4 W% P. i9 Y
  718. STA OAM_TEMP_ADDR,X
    + T/ K4 V& `! G/ M) x
  719. INX
    6 U* w( T* }! M7 s+ _+ Y: l0 v
  720. BNE OAM_Ram_Init_Write
    - b% q6 ~. n& V/ y  H1 A
  721. RTS( d# h- H) N& T/ f  n! G! ^

  722. 4 Q+ N  C4 z2 [$ m" N7 y) r
  723. ;==============================
    * s, a& J- K! n/ r4 n8 w
  724. VramClear;初始化图形内存
    0 \% f9 s9 ?* Z6 a6 t' z
  725. LDA #$20, A$ B5 M6 V8 T
  726. STA PPU_ADDRESS
    & A# D4 G. c( b0 ]) H
  727. LDA #$00! n) f: l6 C7 z$ Q. x" j5 \
  728. STA PPU_ADDRESS
    / s3 r! ^9 B) i5 g. T. s
  729. LDA #$00
    & |; S- \1 {; j+ N: _3 k& T
  730. LDY #$00. R0 D; d" u7 {  p
  731. LDX #$10
    6 X6 S1 Q& v8 x2 x/ ~9 q) B
  732. VramClearWrite
    - O' \* G, K) |! w# ^0 z
  733. STA PPU_DATA
    ! A) A3 w6 W+ ?
  734. INY* J% F/ n! Q2 ~. r
  735. BNE VramClearWrite
    ( B1 z) G# o8 A$ F6 i% X5 m
  736. DEX' s: S) A( K0 V
  737. BNE VramClearWrite
    * v0 D% S( x3 J! C9 ^, v  V9 B
  738. RTS
    $ O' n% Y9 w+ g! J# {

  739. 3 @8 W6 O! t+ V, Q
  740. ;==================================================
    & \% ?1 {! j5 P5 R( i( f
  741. ;设置MMC3图像bank
    1 `) H5 j9 T  l; t- N. ]( y4 ~
  742. Init_MMC3_Chr_Bank
    ' R4 W' U" a& |2 R/ [( @
  743. LDX #$052 k) n) v1 X3 u: h% o" M
  744. Init_MMC3_Chr_Bank_Write
    + Y0 H% q# y% M* _. S' D7 Q: ]2 B) n
  745. STX MMC3_BANK_CTRL
    * N" _. e1 V# N6 l
  746. LDA MMC3_Chr_Bank_Data,X
    : p3 W) B$ l' T( t
  747. STA MMC3_BANK_DATA% j2 Q9 ?- d+ k' S9 t+ @
  748. DEX
    + ?1 U9 x3 h4 ?7 x+ x9 ?8 a
  749. BPL Init_MMC3_Chr_Bank_Write4 v/ @5 L2 R7 z  R& u& P
  750. RTS. Y" g2 ^3 C6 Z& ~- u
  751. ;--------------------------------------------------
    " X3 y; E/ P# c; P5 H/ H
  752. MMC3_Chr_Bank_Data
    5 |( K: I  d0 e  \
  753. .DB $00,$02,$04,$05,$06,$07% b3 T  U0 U! |& T% I

  754. 9 c- Q3 @. T& L- d& m
  755. ;==============================
    + i# V4 S0 c) T* V. z) |
  756. VramInit;初始化图形内存6 R1 C: w4 z- S- [
  757. .IF CHR_RAM_ENABLE
    9 o8 Y* @$ f5 Y2 K( R8 o  \' i
  758. LDA #CHR_DATA_BANK5 y5 p, _8 j* [
  759. JSR Switch_Bank_A000
    . \" x; v) d4 j3 @9 O* H5 B
  760. LDA #LOW(CHR_DATA_ADDR)
    " R3 H! m6 F% v" B" Z$ N6 `7 y# y
  761. STA <Data_L
    8 o0 o% T; [# m* X. y7 p4 a& Q9 [1 s/ I
  762. LDA #HIGH(CHR_DATA_ADDR)
    3 P" W/ j" r. K+ l+ F9 y
  763. STA <Data_H
    ( @3 {# N/ m) |. D  n3 i# p9 u0 T  }- K/ `
  764. LDY #$00
    $ a2 ~3 ~9 `% D# i; l$ B8 `% ?
  765. LDX #$20
    8 d5 O8 v' V0 |" f
  766. LDA #$00$ t! X8 B& n6 s( l3 {: }
  767. STA PPU_ADDRESS
    % S6 [( c) U' Z$ }6 ~4 x
  768. STA PPU_ADDRESS
    5 I4 Y) n& \  J6 Y) _4 R1 V2 p
  769. VramInitWrite
    + n! Y  d$ X6 K2 w
  770. LDA [Data_L],Y
    : u  Z# _4 Q' R+ G' Z0 a+ D
  771. STA PPU_DATA
    # `/ p2 Y  j: E; P$ t& g
  772. INY
    9 ~" u* {2 \/ ~/ X& r. O) ~
  773. BNE VramInitWrite! |( V# j3 A# z* y3 }& `
  774. INC <Data_H
    + J" e8 V2 b( {; {
  775. DEX
    0 q& G) J- p/ G2 }/ F5 K
  776. BNE VramInitWrite
    7 a  M6 @3 s7 ~: @) P1 S
  777. .ENDIF0 i& J. |9 }0 ^, y. z; @
  778. RTS% r9 ]0 `. t# h; u
  779. % {# e: t2 D4 J- @% ~+ d3 t, ~
  780. ;==============================
    1 y2 l. o3 R5 O" A2 @4 L; U2 q
  781. ;音乐切换5 O9 N" q2 @  E: p2 K$ t
  782. Music_Play_Change
    & l: W) r' i# }! O6 f
  783. LDA <Key_Once7 t  l% [: ]9 ?' R3 R
  784. AND #$FF
      v3 E, ?& U9 L$ i3 ?
  785. BEQ Music_Play_Change_Check* g* @: h; k& G! b

  786. 3 @# ~' Z+ K. Q( \
  787. ;禁用音乐条刷新
    3 {: ~% H5 o4 _3 R! s
  788. LDA <Text_Disable_Flag1 e0 G1 o/ `& H2 A
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME+ a) C* ]# w4 O/ e( t* V
  790. STA <Text_Disable_Flag
    7 P( }/ O2 i( }0 i( ^
  791. . w& H5 D* ^9 E
  792. Music_Play_Change_Check6 d! G0 }. |" ^7 l  m1 f
  793. Music_arrow# p$ W# `4 X) Q, i0 T" |
  794. LDA <Key_Once
    # {* \- w4 f* d$ N% G, k* U3 R
  795. AND #$0F
    - J# \: M, A; [2 H6 m& P
  796. BEQ Music_Play_Change_End
    2 c/ v* B; h# m- C( @' r
  797. JSR Music_Track_Change& M/ Z% t+ @4 Y2 w) E
  798. JSR Sound_Reset_Proc
    + N, |' h5 H% l2 X+ k  y
  799. JSR Music_Show( Y; F% T/ q9 ^+ P; F2 y  X' X
  800. Music_Play_Change_End; L, E: h0 o% r1 {' X3 l* }
  801. RTS- ], v2 g" g7 t) u  h9 Q
  802. / f* d. S) E( F+ g
  803. ;==============================/ ]- a! ]* I( L! i/ D4 I( y
  804. ;音乐曲目切换+ I2 K: D) v6 W/ ?% [' F
  805. Music_Track_Change# H6 U& Q1 Q; Z' B0 X9 ]) N
  806. LDX <Music_Item_Cur
    8 v$ l7 c8 W- ^# @2 @
  807. LDA <Music_Cur,X; J7 v$ ~% r% @. B8 j- {
  808. STA <Music_Last
    . C% U6 A" o: V, ]$ G3 N
  809. Music_Decrease
      e! h% O' t6 _8 x8 i# n: d3 K
  810. LDA <Key_Once) N1 t! b' p# u! Z) v
  811. AND #$42
    2 R* s0 \2 _1 `; d9 ~* e# w, h. P) ]
  812. BEQ Music_Increase8 i& J1 W# x% ]$ S; \5 ?% f6 E
  813. LDA <Music_Cur,X% [4 C$ O, T$ r4 y( n9 e) V% v3 `9 N
  814. BEQ Music_Increase& O* j4 F/ P( y& c2 |6 \6 W! ]
  815. DEC <Music_Cur,X- S/ n/ C- {( n& e% x' c$ i# K
  816. Music_Increase8 x2 |( p2 C4 ?$ F6 U
  817. LDA <Key_Once4 l7 g  Q  F$ F& z+ @
  818. AND #$81
    * h! p9 N5 u, y, ]) {
  819. BEQ Music_Decrease_10
    5 W3 }1 P0 l% l/ K
  820. JSR Set_Sound_Total
    2 U* k+ {' g3 r9 R: |
  821. LDA <Music_Cur,X
    % k/ N! Q# Z- ~; Z3 k, j
  822. CMP Music_Total- X/ J6 s" s5 u  J8 O# ?
  823. BCS * + 41 L$ v4 V& a% A4 i
  824. INC <Music_Cur,X1 T4 A0 m- [& I3 {
  825. Music_Decrease_104 M# \1 d9 h% e
  826. LDA <Key_Once! a; T' F! e/ u0 b( ~4 I& L& m
  827. CMP #$04, l* X7 E9 E  K* ]" K& p' h
  828. BNE Music_Increase_10
    4 v. C) T5 _( t4 g3 u$ O' h
  829. LDA <Music_Cur,X6 l& y- ?- u0 z4 F
  830. CMP #10, ]- ~" c5 _3 q; Y' F; ?
  831. BCC Music_Start_Song_Min
    5 Z1 ^0 H# ]1 h5 K# v
  832. LDA <Music_Cur,X; x% X" v, K% p' g4 l
  833. SEC
    , s. k. s( i. O# C4 U
  834. SBC #10
    + z3 i+ R: G8 N, P, g) y9 A; L4 Y" A0 c
  835. STA <Music_Cur,X, ]8 N: H: ]% |& Z0 `0 C7 H+ S
  836. LDA #$00' R" C2 |; Y& f  }) z7 H
  837. BEQ Music_Increase_10
    " G4 A+ c; ^8 c7 [- V5 X, u
  838. Music_Start_Song_Min, [1 j% e0 k9 |1 p* {5 e5 C
  839. LDA #$00
    - B5 D  ~% k! i+ G
  840. STA <Music_Cur,X# a6 ~' l5 d0 {3 N5 V+ \/ i
  841. Music_Increase_105 o- L3 X6 E4 a& g2 z
  842. LDA <Key_Once9 ~' t: `& k4 s( H2 K3 r
  843. CMP #$08
    8 O. i& h% }+ w- f! L" W
  844. BNE Music_Track_Change_End" z& h) X. `9 \
  845. LDA <Music_Cur,X
    - v  t* ?$ f7 t! O2 \8 Y$ S/ ~  w
  846. CLC' {, B1 A* P3 }" q
  847. ADC #103 C) F) \5 A% X- P8 o* R; v8 E; p
  848. CMP Music_Total
    ' ~$ k6 K0 H4 z6 u, v
  849. BCS Music_Start_Song_Max
      F! B4 ^* L0 X4 A: y
  850. STA <Music_Cur,X8 z/ S) S. A& W2 p1 h7 t" u! s& q
  851. LDA #005 [- T  H6 J" m8 H; f" E
  852. BEQ Music_Track_Change_End
    6 k, I# h4 ~; l1 M4 O9 [& m, [
  853. Music_Start_Song_Max/ ^8 Q  s- x8 i8 G& g
  854. LDA Music_Total- f  V. h- W5 T% v+ _" B9 E
  855. STA <Music_Cur,X& M+ S) D! G" P2 W6 w
  856. Music_Track_Change_End) H3 q( E9 ]' c7 P: |8 @5 `: |
  857. RTS
    & P' L9 S$ }# {- d
  858. ) K1 T" H7 H" i; T' w7 a1 }
  859. ;==============================
    6 C5 B" Y3 u! L/ B# \* K
  860. ;按键处理
    2 W' E+ ]% ~6 I
  861. Key_Proc. \( g/ p4 h3 O
  862. JSR Key_Scan
    : H+ q: E2 P7 e* k
  863. LDA <Key_Keep0 h% ?; a' ~$ l# Y% ?& {; W8 S
  864. STA <Key_Temp: o. n' t) K: I0 v2 }. p
  865. JSR Key_Scan5 I7 k, J* G1 z2 m0 n% G( r- e! v
  866. LDA <Key_Keep
    7 S% R% D2 I* K4 l( S
  867. CMP <Key_Temp# l) g; y. k: v8 Z& X
  868. BEQ Key_Get_Once
    # F. N( y2 r4 t/ N/ R, J, d3 t( c8 _
  869. LDA <Key_Kemp) S2 I! o) O5 V" r$ @9 Q
  870. STA <Key_Keep7 C, c% q2 W% E  X: q* @5 N+ O; H
  871. Key_Get_Once1 e+ z; i" j: S8 c. @3 G
  872. TAY  R1 ~& P: m3 {3 Z' O4 C& C+ W
  873. EOR Key_Kemp8 |; K1 b8 e( h4 v
  874. AND <Key_Keep
    " L% [+ w8 w6 h2 w1 x
  875. STA <Key_Once) }7 n! z& @1 a+ F  a7 g
  876. STY <Key_Kemp
    " u! }' o! V& {) l  i1 F
  877. RTS% i* b1 ~/ X0 c, @; l% S
  878. ;------------------------------
    $ Z# {# f/ N; ^# R# P- z& s' _
  879. ;按键扫描8 g" }! @! b! p7 q3 X- a
  880. Key_Scan
    " b! J' @# K6 f3 B  d" w" T
  881. LDX #$01& n% r2 C8 a- D$ Z0 }8 k5 A- s
  882. STX JOY1_FRAME1 p8 U4 d* h5 h: C4 y$ V
  883. DEX$ D4 L" h) _6 X9 e) e. d. z
  884. STX JOY1_FRAME
    9 E/ Q" x, f# V0 h, H
  885. LDX #$08
    * f; [2 x! t2 F) S& F5 s' Z
  886. Key_Value& U! v1 S6 k* n8 k7 z5 l& s
  887. LDA JOY1_FRAME
    + l- }$ r. b( K) a  s6 b
  888. STA <Key_Getv
    / z: r  A/ I- ]3 @
  889. LSR A
    ) m7 X* T* Q# t) F. }
  890. ORA <Key_Getv% m# K, }! R5 P
  891. LSR A/ Y: s! t1 [1 t% ]! u
  892. ROL <Key_Keep
    9 K) ^% R- U- T# K  O, i5 m
  893. DEX
    ' {. a6 B' ^3 ~. b2 \3 Z$ @
  894. BNE Key_Value
    4 u2 F3 G2 N+ x6 W
  895. RTS7 Y  {# g/ `5 U  ]" u4 Y8 z
  896. $ Z# M, v2 g- N# B3 ?1 J. D
  897. ;==============================
    3 x) ]9 o2 W- T7 z3 A
  898. .IF SOUND_BAR_SHOW_ENABLE
    . l" p, o' m0 {1 N$ ]: R) x2 @* _+ l
  899. ;音乐条显示' z$ Q1 V! _4 B! |- U: h
  900. Music_Vision( j- l0 z, \0 e) L  A
  901. LDA <Text_Disable_Flag
    4 P- V8 l. n; l- ^5 }3 m3 m
  902. AND #TEXT_DISABLE_ITEM
    # |+ B" B, f! ~' a. O
  903. BNE Music_Vision_End6 U, k* R4 ~& G9 Y
  904. AND #TEXT_DISABLE_BAR
    $ r# A: ~- G3 V* D; v: O( }% H2 w
  905. BNE Music_Vision_Set. y9 o  g7 @! f/ w% z  g( G% F" a
  906. LDX PPU_Cur
    * T0 f& F4 w( A% `0 j
  907. JSR Music_Animation
    4 ^. }& }, w  @6 C+ _: @- Y0 s; X
  908. STX PPU_Cur
    ( Y( b8 o# P# ~% p! p* L7 J' u# m4 c
  909. Music_Vision_Set
    2 @/ O" V8 {3 H- Y  N) k1 h
  910. LDA <Text_Disable_Flag
    + g: k" Z2 `% m: ]& x% e
  911. AND #TEXT_DISABLE_BAR ^ $FF
    ( i0 G2 D4 q3 V3 L* w( D$ j, k
  912. STA <Text_Disable_Flag
    6 s; l0 i( x$ q1 D1 l) w  H
  913. Music_Vision_End) J" v" |$ c# Y1 A5 @  Y
  914. RTS0 v9 o( D8 B+ t; G
  915. ;------------------------------* U7 {2 U+ k* a0 @- J6 `4 @+ Z' e
  916. ;音乐条显示处理
    2 X( f- Q+ Q: i
  917. Music_Animation5 a8 b0 K; E9 _2 W3 H+ \, D
  918. LDA #PPU_MODE_CNT_LINE
    - m( ^, `1 N7 A2 G1 U6 Y  j0 l7 T# B9 C
  919. STA PPU_Addr,X
    6 H( A) w- B  e& L) R
  920. INX: h0 S, H! a( |' h* E
  921. LDA #HIGH(Sound_Bar_Pos)7 d* \! G; k, b9 w  \4 ?$ s
  922. STA PPU_Addr,X  p6 F; i$ s4 f4 A
  923. INX
      l& M4 ^& |. J& y- p1 o! t$ S
  924. LDA #LOW(Sound_Bar_Pos)8 P, `+ l+ o' n7 B, D
  925. STA PPU_Addr,X  G5 P7 Z1 I0 ~* a
  926. INX
    " _$ \2 w2 A/ h3 X
  927. LDA #$08
    - W: u- X1 Y7 s- `1 S4 g/ _
  928. STA PPU_Addr,X
    2 ?& B3 X) `5 O3 [; P8 a
  929. INX; N: C) a  f0 M6 g) L
  930. LDA Sound_Bar
    + V) O9 X5 d) S+ V" C
  931. JSR Volume_Convert0 I! N, F! S6 u$ x; `
  932. . o! ]% R0 u: Z$ k( z$ w
  933. JSR Volume_Set_Cnt
    1 P$ B3 k2 C- z# n
  934. LDA Sound_Bar+$4
    7 I6 x8 `7 g' N1 k6 T3 G
  935. JSR Volume_Convert/ V1 C/ c6 C8 c, |
  936. - P$ t2 p$ h$ x" y5 b& y6 x' r
  937. JSR Volume_Set_Cnt
    9 H% Q, N, y5 v7 u$ X' m
  938. LDA Sound_Bar+$8
    ; N5 F8 k  Q# V4 i( X' K
  939. JSR Volume_Convert
    % h% s1 o8 S, t. r0 V

  940. . A; ~8 s6 b; i: k3 q4 _
  941. JSR Volume_Set_Cnt
    . a4 [- F  r* w9 s* s3 ?8 Q
  942. LDA Sound_Bar+$C
    ! V4 s' ?; i; U3 Y/ x5 ]) d# L7 ^- t
  943. JSR Volume_Convert4 I* T1 {; O+ c+ z. D

  944. 5 f! B# i+ i) q" u
  945. JSR Volume_Set_Cnt
    ; A. t& v7 F  E' T. u5 i7 a3 `, x( C

  946. , D' j7 ^6 h. G, y3 a1 q! _. L; u) O
  947. LDY #$10( v  F3 Y( Y& c$ }2 q- w! n6 o  d: {. C
  948. LDA APU_STATUS
    7 d% y3 y0 p+ G' x
  949. AND #$109 Y9 z0 ?# Z  M, g
  950. BNE Volume_Count) a, i. E* t* d1 y4 P& C8 h. f7 L' G
  951. LDY #$00" F1 [2 Z* c5 g, p5 j
  952. BEQ Volume_Count( H8 v% @1 P, M# B2 T+ U' i7 r  f

  953. ( L" c) l2 X, ^9 o1 J4 ~
  954. ;------------------------------
    7 b& J4 ~  s( O9 o2 Y* Z
  955. ;音乐条处理9 }2 D9 I  c( t8 r
  956. Volume_Convert9 E; a* ^8 N  w; }6 `' Z
  957. AND #$0F
      c, b2 L5 U; T! J( y
  958. TAY8 @; V% g) C# c  p
  959. Volume_Count2 e2 N( ^- r$ S/ X3 U) a& N
  960. LDA #$08
    5 r* ?- h" B' A
  961. STA Sound_Bar_Cnt6 ~8 @9 m0 |% _) t% J/ b
  962. Volume_FILL
    ; S) c* o8 K( N, Y. B3 H" P
  963. DEY
    + m$ M% c1 e3 u! d( r
  964. BEQ Volume_Half8 Z6 B6 M  C  t. K/ p9 A$ ^
  965. BMI Volume_Empty4 k) y( w; A$ L5 H8 Q" P
  966. DEY% w+ K4 m+ ^1 ?
  967. Volume_Full
    ' p* `1 J' F& m( \$ V$ \
  968. LDA #$16
    / a# M  Y  G: }% ^
  969. BNE Volume_PPU
      B1 C! B+ W0 e$ f7 T; g
  970. Volume_Half
    ; M# l. G( `4 q! H2 ~+ ?; }7 x
  971. LDA #$15# L! P0 c# r9 l
  972. BNE Volume_PPU8 H# B5 p4 Y6 w7 n7 y- I9 ?
  973. Volume_Empty
    4 K% e/ [' k1 e0 T" q  K4 C* }) z
  974. LDA #$14
    ' T9 Z5 v* D- X* w: _7 A3 Z1 o# d
  975. Volume_PPU
    5 A: N: C$ V+ V
  976. STA PPU_Addr,X
    9 U3 _( R- E  F$ i$ ^# Z/ ?
  977. INX
    # x2 h3 ]& k. T, g% \
  978. DEC Sound_Bar_Cnt) I& @+ y2 I! P6 o
  979. BNE Volume_FILL" A2 }. l, v7 C6 {
  980. RTS
    4 ~! L* A# G& J% C, U& L8 g$ K
  981. + J7 [! p& H& h
  982. Volume_Set_Cnt
      E1 t4 [# F% t# X$ Z
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    5 |6 X6 j6 o# d
  984. STA PPU_Addr,X
    % e# v# k% @% j$ l5 L
  985. INX% r* k4 v7 ^  Y. e) W
  986. LDA #$08
    # y( c% A# k# s2 P$ k
  987. STA PPU_Addr,X
    ) W9 T3 ^9 E: j% u/ A
  988. INX
    9 B/ \, L+ p3 y$ b, D
  989. RTS: `8 B5 l0 i* j6 \0 F+ K) F  m
  990. ; ~+ M5 C7 C9 F! q: T) L+ j
  991. .ENDIF. P' E" v7 L! }$ H9 v% k

  992. ' ^) h# `* v& C8 G3 ~7 O- {( c
  993. ;==============================: S3 x' N$ V+ T) a  Q
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入( b7 h0 z# B# b$ Q6 I8 U/ @2 f. b3 u* v
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    3 f3 ~: g1 q' X& D
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    0 ]5 h& y' r/ r3 s1 y0 y. I
  997. ;------------------------------
    0 C8 A' t7 v2 B. I  H  `  O
  998. ;PPU处理
    - ~3 p$ e) v1 L$ N5 r( t, N
  999. PPU_Proc
    # b6 b1 j/ Z' \3 O
  1000. LDX PPU_Cur, N9 d# X9 R9 |" W* G
  1001. LDA #$00$ \/ d! l% N6 [- v  j- J1 m* R
  1002. STA PPU_Cur6 k8 q% H  N  }4 m
  1003. STA PPU_Addr,X
    2 t7 @$ y$ n$ v, m" X- p; P
  1004. LDA PPU_Addr
    7 e2 ~. l2 g; _2 F7 i
  1005. BNE PPU_Proc_Beg
    1 y! O( K/ J9 N3 {" |3 y
  1006. PPU_Proc_Ret& l9 H' N/ R4 Y
  1007. RTS% R. t) n2 I' \5 v; }3 w$ m# C
  1008. 3 o, V* t+ J* w5 {  [
  1009. ;------------------------------
    $ m3 R7 I, Y# n) j7 c) n4 L* s( p
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    5 e1 V& A/ N: R0 P
  1011. INX/ V4 {3 f& E2 @/ ?
  1012. LDA PPU_Addr_L
    % ?8 S7 V* a- x4 P, r  N6 d
  1013. CLC# {: r+ d& x& h! u1 d
  1014. ADC #$20
    $ l. F$ s0 Y5 K1 S* N' w
  1015. STA PPU_Addr_L1 ]  i0 A  Z" ~, T+ Y
  1016. BCC PPU_Mode_Return_Cnt_End+ R7 e' Q+ H5 z6 n; ~- H1 P+ l
  1017. INC PPU_Addr_H
    , N( w& q+ Q$ y
  1018. PPU_Mode_Return_Cnt_End3 W5 c+ N) }  T, Q
  1019. LDA PPU_Addr_H
    + N+ J2 n$ ^# e. p4 |4 E
  1020. STA PPU_ADDRESS# L- f8 k  T; p9 {/ V
  1021. LDA PPU_Addr_L. {$ {* Q1 k$ |% N9 f
  1022. STA PPU_ADDRESS, j6 v* P: s( T: E
  1023. LDA PPU_Addr,X
    / g# N9 ~4 T! o: r. G  Z; O" v. {
  1024. TAY. P( U5 j  D1 P# H& ?0 Z+ o# W* m
  1025. PPU_Mode_Return_Cnt_Write0 f! H, z& d+ \
  1026. INX
    3 V" b0 u; r* r' {! F6 \5 Y- O
  1027. LDA PPU_Addr,X
    & b4 {( g, Q- @* O- A% t2 M* A. @
  1028. STA PPU_DATA5 W9 y% G# {6 \2 h' \: y4 W
  1029. DEY
    4 l8 }) e& U" _6 I  O
  1030. BNE PPU_Mode_Return_Cnt_Write$ k' e0 ]( N$ [) J
  1031. JMP PPU_Proc_End. }0 v$ s( g. W+ f6 P- D8 \

  1032. : N! {; e% T' v, i2 r
  1033. ;------------------------------
    + n4 i# W4 L# E2 s. `1 O
  1034. PPU_Proc_Beg  ;处理开始* r: E& U# C: B; }% _
  1035. LDX #$003 y6 k+ O3 r. t+ Z
  1036. STX PPU_MASK6 B- g+ y$ g, `" i$ ~8 U
  1037. ;------------------------------/ d) R8 U" L. e: Y" Y' l
  1038. PPU_Mode_Select  ;模式选择$ o; a$ |) X" F# V; y9 J9 U
  1039. LDA PPU_Addr,X
    / e7 H$ L" Y+ u) ~  t, s8 O+ h7 a0 R' [
  1040. CMP #PPU_MODE_CNT_CLEAR
    $ [9 }( [" u9 b: u
  1041. BEQ PPU_Proc_Clear
    8 O+ @9 ?& H7 M3 l/ E* X6 q5 S, E
  1042. CMP #PPU_MODE_CNT_LINE, \! m: h& S6 p+ K. ]/ `& P" f2 F! \! n
  1043. BEQ PPU_Proc_Cnt_Line# M4 l0 ]/ v: \$ F! a4 R3 E8 {
  1044. CMP #PPU_MODE_CNT_LINE_NEXT' k/ F2 g3 l: U, L& P6 D* w
  1045. BEQ PPU_Mode_Return_Cnt5 i+ j. S9 F2 G4 L* v: @
  1046. JMP PPU_Proc_End_Write- B2 _, P/ F) x, g
  1047. ;------------------------------, q% w4 S: M! C. w) y1 q
  1048. PPU_Proc_End  ;单行写入结束
    8 ]: }3 h$ N' ~
  1049. INX" k* B& c5 w8 o6 F7 w# z& M
  1050. LDA PPU_Addr,X
    9 |+ f' d' B0 r
  1051. BNE PPU_Mode_Select" p, x' b6 M4 ?# P9 Q+ y3 g% v/ A
  1052. STA PPU_Addr) P8 `3 c+ v. @  t
  1053. JSR Update_Palette_Color
    & V5 @- h2 q' {" d0 {; x
  1054. ' x8 m6 z, {& M* [
  1055. PPU_Proc_End_Write
    2 a. n' I& ~' w3 }/ V  h+ ]
  1056. LDA #$00/ o; I+ ]5 S) v/ t  N& L
  1057. STA PPU_ADDRESS
    2 l0 l4 h" w  y8 f
  1058. STA PPU_ADDRESS. ]* K' L2 L8 j# W6 B% L& P5 m
  1059. LDA <Text_Disable_Flag
    4 U' N. M  [8 }- i9 b8 _) G
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF9 A5 }! F' g% a3 W; b/ {/ i9 d
  1061. STA <Text_Disable_Flag6 W( A; p, h" r3 g9 }" e
  1062. LDA #Scroll_X" b9 V+ v' Y- e# B& M
  1063. STA PPU_SCROLL
    + O* n' g, D- s
  1064. LDA #Scroll_Y
    * i9 f" a1 m3 Y! ~
  1065. STA PPU_SCROLL
    & J& l) R4 T3 \* V5 [
  1066. LDA Screen_State
    - J1 b$ H! x% q& O9 w$ P
  1067. STA PPU_MASK4 C, ~* L$ y9 [
  1068. RTS
      L" e" |! u) i, Q7 \% v3 B  P
  1069. 9 E" |7 ^0 C/ r: r
  1070. PPU_Proc_Clear
    $ K$ f8 b( X4 d- I6 F" J% ?
  1071. INX) n4 ?. ~9 B& a/ y% @0 X
  1072. LDA PPU_Addr,X8 V. F5 ]; u4 o  n, `
  1073. STA PPU_ADDRESS6 D% ]4 Y( G9 n
  1074. INX# w& ^5 Y: ^4 h
  1075. LDA PPU_Addr,X- G  N! b, Z9 ^4 X
  1076. STA PPU_ADDRESS8 s( A( N/ G; g9 p+ Z! r
  1077. INX6 ~. n5 T* F" @
  1078. LDY PPU_Addr,X
    , c* Z" r7 ]7 J
  1079. LDA #$00
      f5 B# l2 u; W3 Z- }, B7 D
  1080. PPU_Proc_Clear_Write. @6 j2 v7 D7 r+ L
  1081. STA PPU_DATA
    8 y) t! r) f& u
  1082. DEY
    1 X/ n5 V. p1 ~6 d- a; G  ?
  1083. BNE PPU_Proc_Clear_Write* ^; U# [* Y4 c0 K  c, e# `
  1084. JMP PPU_Proc_End* x2 N% L1 v8 l3 M1 u
  1085. 6 b2 P  p) g% }. c1 f9 F
  1086. PPU_Proc_Cnt_Line( |: k$ A* ]$ a, D" |% R# `
  1087. INX: |2 _. D  z. {
  1088. LDA PPU_Addr,X
    / F: o/ w6 {. W" X! b: J
  1089. STA PPU_Addr_H
    . E* r. k# V% V4 \' A* w
  1090. STA PPU_ADDRESS7 O5 x7 \( s  e' G0 q
  1091. INX- e# O) w7 H1 D' ~: ^: x, p( s
  1092. LDA PPU_Addr,X
    ! J" T$ K2 F/ ~$ s- R# y( _* K
  1093. STA PPU_Addr_L
    / g) K" q" y4 |4 m- A# [
  1094. STA PPU_ADDRESS
    $ @0 N9 \& ], A" s  ^
  1095. INX
    ! z* R' ?( y8 W# |0 h
  1096. LDY PPU_Addr,X' `8 u$ O5 Z0 D7 z- q# M# ^
  1097. PPU_Proc_Cnt_Line_Write; d! P6 v8 E8 H" H! ^! y
  1098. INX
    : b- y# z6 o; H8 m% k& d5 ~- n) ]) u
  1099. LDA PPU_Addr,X
    # |) }- W# j3 F9 @* T& {3 n
  1100. STA PPU_DATA
    0 y3 y4 O4 M0 B: W& J
  1101. DEY
    ; J/ w* E/ \3 _0 o' S
  1102. BNE PPU_Proc_Cnt_Line_Write
    % O6 R3 a/ n- [! q- W) I3 K( c
  1103. JMP PPU_Proc_End; U" o# p, G( A3 _/ ?8 v' z9 n' C

  1104. ; q: l5 r& H, J+ b
  1105. ;==============================
    % k  y2 V9 d9 B; T$ c4 L6 n
  1106. HEX_To_Dec;十六进制转十进制
    ) \* t4 T6 }) ?! Z
  1107. STA <HEX_Data! @( o3 W. T( r2 G+ q
  1108. PHA- W0 G, l( c' S5 H+ l
  1109. TXA
    , i; l  x, L, a5 J5 V# y
  1110. PHA8 X0 w$ p2 D5 B8 a4 X
  1111. LDX #$00
    2 l2 f" m7 @( n2 C, r
  1112. LDA #$00% y' X. t5 x+ p- F( a# B, E
  1113. HEX_Cln6 c" p8 E. |: \2 u/ V% ~  x
  1114. STA <DEC_H,X
    8 w2 J0 F4 [4 P  b
  1115. INX
    + \% M6 ^9 @/ F) }5 _- g( g
  1116. CPX #$03
    # X4 A' W( ~( \, g# Y  r$ n
  1117. BCC HEX_Cln8 `) ~' F, m2 E* l6 e2 @$ {( ~' v3 G
  1118. LDA <HEX_Data9 A4 N' Z9 e' h' R
  1119. ;------------------------------# C- A+ J) T1 a( G% C
  1120. HEX_100( s4 O( L9 @, S3 W/ w
  1121. CMP #100
    6 T/ M. \) F8 X! D' V
  1122. BCC HEX_10! P, H+ O5 N$ }' V+ d
  1123. SEC# |5 F: Z6 j- |8 _5 b- S: C
  1124. SBC #1003 n; r; R" Z, z. P
  1125. INC <DEC_H
    ) R  n2 }' r) t' f
  1126. BNE HEX_100
    6 [" s& Y7 \) p( m% W9 B
  1127. ;------------------------------
    1 A  K- n$ M- [/ U& Y& R
  1128. HEX_10
    2 o6 H& g7 `; M& I( ?
  1129. CMP #10
    8 [* O; B2 ]4 @& E2 E& K
  1130. BCC HEX_1
    ( A2 L2 C7 M4 v6 V
  1131. SEC
    ; F7 D; ^" B' l7 E
  1132. SBC #10
    6 b2 r8 E6 M% G/ \" P1 v
  1133. INC <DEC_T0 `. C) X& Y9 |1 |
  1134. BNE HEX_10
    3 {# [2 v# ~/ I, t9 |" N5 d  P0 l+ [
  1135. ;------------------------------$ X1 Y( d8 P; q3 Y* [' |
  1136. HEX_11 q/ _  d( r& d# c! o
  1137. STA <DEC_L( G3 H* l4 R$ b3 i. k# a6 ]' ^) z
  1138. PLA
    3 K1 u0 f) {  z1 Y3 Z# z  V
  1139. TAX  z* [- O: R5 s$ o! s, f0 ]8 k
  1140. PLA
    - e9 [3 Z6 A3 t8 t
  1141. RTS% R9 w+ I6 u/ h' U  S/ P* C
  1142. - J  V1 A$ L8 a7 R+ B
  1143. ;==============================8 x/ C) @( ~( \+ D: t8 E
  1144. ;音乐曲目显示0 M6 V' a. R/ \, b2 B# i
  1145. Music_Show" Z# Y" Z5 Q, N4 v  o
  1146. LDX <Music_Item_Cur
    " c2 v+ p/ u5 G; |2 W- Q6 L% w
  1147. LDA <Music_Cur,X
    # |1 u/ g6 o2 {7 O1 w" F- @
  1148. CLC
    ) t& A& d' {2 @2 @7 ?  h
  1149. ADC #$01& V  r3 \& A- h0 w
  1150. JSR HEX_To_Dec
    & d& U6 w* u" [
  1151. LDX PPU_Cur
    / k) a' p, R$ A/ I6 J
  1152. LDA #PPU_MODE_CNT_LINE
    ' j( u5 U" z% G2 L) f
  1153. STA PPU_Addr,X8 x4 u0 \" x) \" R: E$ U4 ^1 q) e
  1154. INX
    2 h  D* D" |9 Z
  1155. LDA #HIGH(Play_Index_Pos)' T- _- |- k  H  C
  1156. STA PPU_Addr,X; `. I0 P. p" G0 {$ a
  1157. INX( X# X" A' H+ t
  1158. LDA #LOW(Play_Index_Pos)  B' @1 [( \5 @" |; i$ {3 E$ ?
  1159. STA PPU_Addr,X9 r/ F+ S, A4 }( ?( |
  1160. INX. p5 H- [6 m( Z  [

  1161. * C3 h1 _3 I& s2 q( \+ ?
  1162. LDA #$076 f( ?' `/ `8 `
  1163. BNE Music_Show_Length/ s/ x* Y4 K9 J# d
  1164. 3 m& t: V. a6 b! M. Q% |
  1165. Music_Show_Length- r: ]! z+ H8 ]# d1 M, Q6 ^* [
  1166. STA PPU_Addr,X
    ! |# n/ x; G0 d
  1167. INX
    5 ^8 v* X- H5 ]1 H/ ^

  1168. 4 m, @' g8 C! f$ h1 }5 H, b- c+ Q
  1169. LDA <DEC_H4 r3 w- \0 A- \/ ^9 D$ r# n/ g
  1170. ORA #'0'  Y. G5 j  m* o7 k; H4 H' `
  1171. STA PPU_Addr,X
    1 f8 e' M3 |: P- g+ {  j( O
  1172. INX6 T1 S8 y1 P% N* s. s' ?$ u

  1173. ) @# ]% O5 e" h& f+ ]7 w. S* ]* H
  1174. LDA <DEC_T
    7 m$ _# N- l/ F* G# w; \
  1175. ORA #'0'# K7 D, s! f$ y4 L. w1 Q
  1176. STA PPU_Addr,X
    : L. ^7 G9 D3 U7 f7 D) F
  1177. INX8 V% @) I1 e6 r3 ^- n' C

  1178. # Z$ y7 \& V# i! I: _2 U
  1179. LDA <DEC_L* Z$ b0 N% {) @" h+ k5 y
  1180. ORA #'0'3 i& P4 x2 X( y9 w6 S$ O
  1181. STA PPU_Addr,X
    $ ~! O8 l0 u) a; B: m' }
  1182. INX
    ; S$ j, l4 h" V7 E

  1183. % e0 v  s3 q8 ?% l, f; v6 m# [
  1184. LDA #'/'
      c, S3 Z6 l  X, B4 G
  1185. STA PPU_Addr,X9 X5 Z# C5 y9 |% u- m
  1186. INX+ I5 ?$ [/ s0 s7 D+ V
  1187. Music_Show_Total
    9 H! Q6 U) O% L* G$ f: E$ t! `
  1188. LDA Music_Total' s9 H7 `+ U5 k, w& G& E; g  ^/ S$ Q
  1189. CLC
    5 v9 O/ P4 f+ k0 |' d
  1190. ADC #$01
    % J( m1 q, D7 v' e% K
  1191. JSR HEX_To_Dec
    ) e" P; I  }0 w7 c; r6 Q

  1192. # P# M7 [4 ^0 G9 ~0 R7 H
  1193. LDA <DEC_H% P2 u  F& m' f4 h, l
  1194. ORA #'0'
    : V) M% S. Q3 m  M/ W! ~( y- e
  1195. STA PPU_Addr,X
    * S3 u6 D) k2 [9 I2 c& Z5 w8 @6 ~
  1196. INX
    ; X1 y( u0 W* I: I+ r6 y! T+ o
  1197. . A; b# t* ~* `* Z# X  E
  1198. LDA <DEC_T) n. Y" J7 v% [: B* n
  1199. ORA #'0'
    5 \' E, e( E4 |9 \
  1200. STA PPU_Addr,X4 L/ \4 D/ r% L( U+ {
  1201. INX: G6 w5 I1 x0 U; n. Q" J5 s& h& x  \
  1202. ! }- C0 F; C' S$ _
  1203. LDA <DEC_L+ n' }; e& M# n  c
  1204. ORA #'0'( c: |9 Q3 s- l: _+ G1 G+ K+ l
  1205. STA PPU_Addr,X7 i2 v- y$ y5 D% l: ^3 v. F+ H
  1206. INX' a2 \0 T& l) Y6 r8 L& \  |

  1207. ! o% x1 S6 W" k! m% `
  1208. STX PPU_Cur
    , Y: R# P' E9 q' K
  1209. Music_Show_End" {2 t7 ]/ B0 F! J! M
  1210. RTS* X8 E- r* P: X* h2 y/ G" ^8 T8 C4 |
  1211. . [6 M6 u+ o* d0 j
  1212. ;==============================. S, h7 a1 |. m- E
  1213. Time_Show;播放时间显示$ h- v! d; i! G7 C& x' K
  1214. LDA <Text_Disable_Flag
    # D( w2 D3 |- s6 e: O$ ]# [
  1215. AND #TEXT_DISABLE_ITEM
    2 u; k8 U8 Y% @: B
  1216. BNE Time_Show_End4 R$ s6 F- k$ v" C/ k
  1217. AND #TEXT_DISABLE_TIME5 @8 a* w3 u. i' O* L& r2 {! d
  1218. BNE Time_Show_Enable
    6 I0 e# t  k6 z; c& p$ [% n- e- C

  1219. ! c+ C8 i. X5 ~5 ?
  1220. LDX PPU_Cur
    7 V" i3 z6 J) B6 ~2 X- f4 e
  1221. LDA #PPU_MODE_CNT_LINE+ P$ r/ \) y2 U3 j; _
  1222. STA PPU_Addr,X
    ( \$ f7 X+ l( h" }1 k4 g
  1223. INX
    ! ]3 Z0 r6 f; v/ L! L
  1224. LDA #HIGH(Play_Time_Pos)
    3 O8 d, R! D, h. |+ J3 Z, c
  1225. STA PPU_Addr,X
    ) h' N7 X% ~* x3 e
  1226. INX
    3 E* G0 f( H. v) A4 d8 U
  1227. LDA #LOW(Play_Time_Pos)
    ! |; Z7 ~7 @2 \! \: G; n
  1228. STA PPU_Addr,X6 x9 I) S' v2 i; S
  1229. INX
    / L! O3 [, a# h7 V
  1230. LDA #$086 Y( H. C% w6 F3 B& \, Q
  1231. STA PPU_Addr,X( R+ c+ v& w! g$ |
  1232. INX
      P5 H. U  V9 t# \8 H1 N
  1233. Time_Show_H
    ; e$ Z# x: h$ V. I
  1234. LDA <Time_H
    5 W" o2 A1 o% U6 S% {; w
  1235. JSR HEX_To_Dec  Y( f( D' u* `% |
  1236. JSR Time_Digit
    ( g6 x( f5 Y  w) l
  1237. LDA #':', r" C0 S4 D4 O6 _$ C
  1238. STA PPU_Addr,X
    * P& z/ t$ G' ~; F% ?
  1239. INX
    7 f. W2 E- q5 E$ ^% U
  1240. Time_Show_M8 |3 f: \- m$ z$ r0 E1 X1 X
  1241. LDA <Time_M( i# c  ~% A, q* N" ^
  1242. JSR HEX_To_Dec
    3 {) `+ l& z7 i' z9 a
  1243. JSR Time_Digit
    9 G4 t2 N, Q6 k4 J2 ?& \
  1244. LDA #':'
    % ?# d: ^0 h: W" o
  1245. STA PPU_Addr,X
    7 v  h' N- ?, q* a+ D* f7 d
  1246. INX0 y% `+ E* b1 l) G! \" f
  1247. Time_Show_S
    2 l5 \$ [! s$ Q% X. ]
  1248. LDA <Time_S
    8 X" w5 n6 {  j! I. H
  1249. JSR HEX_To_Dec: K: N- n* K) B+ O( a
  1250. JSR Time_Digit! q' q+ T7 ?3 c, j( d$ ^; X: m
  1251. STX PPU_Cur1 U/ J# y% v1 L8 X
  1252. Time_Show_Enable; r- o5 L; T: r+ Q
  1253. LDA <Text_Disable_Flag* f" Z# p* J( Z- s6 ^
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    8 A, S4 m& Q4 W9 }
  1255. STA <Text_Disable_Flag, A* S4 v7 d+ ^7 h. M
  1256. Time_Show_End
    6 @" B% F4 q# u$ a; Y, W
  1257. RTS8 s' s! q4 S& {, H8 m1 D$ N
  1258. 3 g* Z6 b, N+ O
  1259. Time_Digit
    : c) R! c, V$ o# u0 ]. d: U
  1260. LDA <DEC_T0 w9 l: }2 R7 ]% L1 ^+ s  @. `) @
  1261. ORA #'0'3 p3 f" X/ _0 M' ?4 [: X0 s
  1262. STA PPU_Addr,X4 |0 L9 C2 _6 n8 j$ ^6 a. l5 b
  1263. INX7 v; S! |! [4 @7 @( v0 Y7 [5 z
  1264. LDA <DEC_L
    6 d( P6 V: }' Q$ Z  o
  1265. ORA #'0'; U  P1 P, E2 H
  1266. STA PPU_Addr,X5 b9 D/ N. {4 s1 e8 L
  1267. INX
      I4 f" [; |  N" M" ?
  1268. RTS
    5 f2 |2 x; G/ O# c7 D- p" G

  1269. " s( T+ w. F% Y7 F* d  c0 J
  1270. ;==============================1 K- z* D% V1 i3 ?
  1271. Time_Count;计时6 o8 h, Y0 s( {0 w- F2 n; j/ F* j
  1272. LDA <Music_Stop_State0 X. n% B: D8 @* M! R% b5 ~
  1273. ORA <Time_Wait_Cnt
    7 l2 t. ^; q+ ^1 Z: x* ~' _! J
  1274. BNE Time_Count_End
    ' [5 O) {% t! h# Q- f
  1275. INC <Time_Cnt
    ! t& \3 y& ~. h! O/ ?
  1276. LDA <Time_Cnt
    # r2 X# s* w4 A  d2 k
  1277. CMP #605 s0 h8 n3 N/ m  x' {. F
  1278. BCC Time_Count_End2 z0 B6 `2 }0 w* R
  1279. LDA #00
    . I- _) z9 T6 f/ R
  1280. STA <Time_Cnt
    , `% I6 i2 `# h6 c
  1281. INC <Time_S7 T: C( S8 m' E+ q, `/ n
  1282. " I. v% z  H8 `3 ~1 c8 A. i0 B  e
  1283. Time_S_Cnt
    ! ~, V; F% @8 _: T( Q
  1284. LDA <Time_S
    * Y" m$ ^* j3 U; H
  1285. CMP #60
    ' p& s$ s3 _; f- @) h
  1286. BCC Time_Count_End1 k! K* L$ x/ C( Z
  1287. LDA #00
    ! G( c: J7 I5 Q  w6 T
  1288. STA <Time_S
    6 @( ~/ y8 s$ Y$ J
  1289. INC <Time_M' [2 ]4 R4 E3 W
  1290. " [" @5 {9 o& H2 U
  1291. Time_M_Cnt
    ( T& |# c6 L# |+ v
  1292. LDA <Time_M2 V. g/ Y. x# Z% `7 @7 o, ^+ g6 p
  1293. CMP #60% V! d. J: l/ a* e
  1294. BCC Time_Count_End) W% T, P* y. k# @
  1295. LDA #00' ~' R( B1 Q/ g& r
  1296. STA <Time_M
    ) }9 u, `. V' a
  1297. INC <Time_H& t* d. p2 k1 c7 X+ l0 g0 i4 [" Q
  1298. * M9 j, x1 ]; w, m# Q4 T
  1299. Time_H_Cnt6 B3 m/ S/ ]1 @
  1300. LDA <Time_H2 ?" y; N7 y! j
  1301. CMP #245 Y! F4 o1 V4 Q  Q' C
  1302. BCC Time_Count_End1 G  V& f  B" v: R; \
  1303. LDA #00
    2 D5 P8 B/ e# q* Z6 ~6 Q
  1304. STA <Time_H0 W1 E0 h: i2 p; r- \

  1305. - h% i" |; g' X) R5 G  _( n
  1306. Time_Count_End% [3 K% O0 W- b6 C
  1307. RTS- D. g1 y$ t% _  \  W1 d
  1308. / Z- h% }, ?' _1 E9 i+ c% P
  1309. ;==============================4 j: `9 d2 P# Y& G, C. ~: R# c, E* L
  1310. Time_ReSet;播放时间重置
    3 S8 Z( K" X% F- v  G$ I( F
  1311. LDA #$00
    2 q! s) m* v& j
  1312. STA <Time_S
    2 W% `7 E9 p5 i3 c7 ?4 n
  1313. STA <Time_M ) E. v& b5 ?, Y4 [
  1314. STA <Time_H/ d5 ~% ~+ a$ t- o$ }
  1315. STA <Time_Cnt5 G& V  y2 A( T1 D; T: {
  1316. RTS4 K- ]7 w, a! Z, b

  1317. 1 _7 d% B& x5 m5 a
  1318. ;==============================
    . Z% n+ ^9 I( P. C, c+ D# I, p
  1319. Music_Bar_ReSet;音乐条重置  v0 I$ m- p/ L' \" }% h& S( l
  1320. LDA #$00
    ' c1 f* J8 A+ S4 [# e9 J
  1321. LDX #$00+ a+ f, l3 [( ]/ I6 F1 R+ c
  1322. Music_Bar_ReSet_Set7 {' R( f6 z3 ~6 @
  1323. STA Sound_Bar,X
    , w0 z- t+ e# j8 q8 ?9 b! r: h
  1324. INX/ P  S9 t0 `8 [1 d
  1325. CPX #$10
    6 `4 P- e7 ?+ V, E2 I
  1326. BCC Music_Bar_ReSet_Set
    3 {; P  l7 x! i- ?, y+ @
  1327. RTS" q- \1 C% f2 t

  1328. " ^8 ?9 q  c  S% v
  1329. ;==============================6 F" b5 q# B0 o7 y* i
  1330. PPU_Data;PPU数据写入4 L4 W1 ]" f! `
  1331. STY <Data_L7 w; `  c' `  c3 f
  1332. STX <Data_H# R/ }% O) v. Y$ G. |8 J/ N  d
  1333. LDY #$FF. w7 _0 O( R2 ~2 [4 G/ Y
  1334. LDX PPU_Cur
    - [+ U6 I% ]$ m% Y+ o+ j
  1335. DEX4 ]0 @' s* L: {4 ~
  1336. PPU_Data_Beg( c7 Y6 n. K0 G; m6 M
  1337. INX, N# k( U# e5 T' L
  1338. INY: f) z5 e: r! L+ n6 R
  1339. LDA [Data_L],Y! n# C7 h9 i2 r  J2 ^. n
  1340. STA PPU_Addr,X3 h$ I  h* l# ]" B- n2 D/ `! p. m
  1341. BNE PPU_Data_Beg
    % ~1 V; z+ x4 i+ K' v  [
  1342. STX PPU_Cur7 D" T0 i1 I6 h+ [
  1343. PPU_Data_End1 `/ z  V' @9 ~! F( F) P3 \+ A
  1344. RTS
    ' a7 X" c7 [3 O  t/ J
  1345. 8 p/ ^8 n% N) k
  1346. ;==============================
    ' M$ b! ?  a3 J0 C7 S
  1347. Music_State_Show;播放状态显示* C( b; k3 H; @8 F
  1348. LDA <Music_Stop_State# _9 M+ b7 s1 V0 ~$ ]' r
  1349. BEQ Music_State_Show_Play
    ! \  {+ D* U! D. Q) w4 e
  1350. Music_State_Show_Stop, F& L$ L1 _/ h& K, G* d7 h5 g
  1351. LDY #LOW(Music_State_Stop)
    4 r$ _) p  h$ ~0 v1 j
  1352. LDX #HIGH(Music_State_Stop)
    7 Z  p" v0 k: T0 ~! e! A  l
  1353. JSR PPU_Data
    1 {0 F, t4 Q) l+ Z+ G6 I
  1354. RTS& d. {$ o4 f* |6 m% C2 z
  1355. Music_State_Show_Play
    7 A, L, x6 I) t8 {7 U
  1356. LDY #LOW(Music_State_Play)
    & I; D$ K& U) O$ Q, G: T
  1357. LDX #HIGH(Music_State_Play)& @/ {" D' S0 w; n. R
  1358. JSR PPU_Data1 B" m3 E% ^% j
  1359. RTS, M/ x- J- g& Q+ U& w

  1360. + V. s. S9 }+ V" L: ]( S
  1361. .IF SOUND_BAR_SHOW_ENABLE" r* K" ?  s: B: Y' n, S) i
  1362. ;==============================8 d. `+ ^$ Y+ e2 O: y9 W
  1363. Sound_Bar_Text_Set;标题与音乐条初始化/ ^/ F0 z; h& N* x/ O
  1364. LDY #LOW(Sound_Bar_Text_Data)
    $ d% T) \9 J6 |3 h( y' r
  1365. LDX #HIGH(Sound_Bar_Text_Data)
    3 G  V; c) `1 k# ?* ]
  1366. JSR PPU_Data) |/ i5 C1 m4 f
  1367. RTS, k0 I; G6 W& Y/ b  w9 T
  1368. 8 o# [: S, l- Z9 _
  1369. .ENDIF
    5 k9 o# S2 C; J0 {; J9 ~

  1370. ' n  w* L3 o3 G3 l8 e5 {* n
  1371. ;==============================
    ( c! L/ G& d* }6 `/ S& r/ ]
  1372. Set_NameTable_Attributes;设置命名表属性* P- K  J1 w5 m
  1373. BIT PPU_STATUS
    & ~1 e- k4 A9 b  t0 j
  1374. LDA #$23
    + i" I' ~2 R; p" e; ]/ \
  1375. STA PPU_ADDRESS2 C& V! a: L& ?7 R
  1376. LDA #$C0
    9 m% H  ^" K, G( s
  1377. STA PPU_ADDRESS# L3 x) b8 Y' z; ^& c
  1378. LDX #$00
    5 u( `" c( W5 V5 N
  1379. Set_NameTable_Attributes_Write
    : V! o. x% o. g
  1380. LDA Palette_Attributes,X
    % Q5 K8 n5 }) N- z: h
  1381. STA PPU_DATA
    : `! D) w' ]! Y3 `
  1382. INX
    " |$ o, q0 x( F/ c0 O" e8 s' j2 p
  1383. CPX #$40
    ' b" @9 z3 ?! L  p' p  x7 M
  1384. BCC Set_NameTable_Attributes_Write
    : X# p: M  o: M" A
  1385. RTS: T$ o/ [" J2 m# f

  1386. & l4 C0 Y+ R! A3 `' Z* W) q
  1387. ;==============================
    & h, q4 a% [8 f
  1388. Set_Palette_Color;设置调色板数据
    6 ?" W; f- k$ P4 k* L2 j7 Z
  1389. BIT PPU_STATUS
    ( X: y* {; m5 O/ B
  1390. LDA #$3F
    2 O8 X9 c" A. y: V& k0 D
  1391. STA PPU_ADDRESS; Y& }: P+ S. f1 b7 |8 ~& k2 ^& ~5 w
  1392. LDA #$00/ `& _7 A* W5 ?6 S
  1393. STA PPU_ADDRESS  u' N; b4 Q6 c( y  d. N6 h
  1394. LDX #$00
    ' M% c' ~1 v' F! O# v
  1395. Set_Palette_Color_Write
    ; W3 |& @" l0 I1 ]1 G# ?" P( D. B
  1396. LDA Palette_Data,X& \: z; O9 z. ?/ o8 }6 I
  1397. STA PPU_DATA$ s' C$ o: c$ a
  1398. INX6 D; n/ H/ i& g1 l+ i3 u6 |
  1399. CPX #$20
    3 R. g. x/ E4 Q9 k- M' C5 }+ m2 ?
  1400. BCC Set_Palette_Color_Write
    2 \; f# B3 U" L4 |8 V. b% M
  1401. RTS
    2 @: M2 o$ y% l- x$ V
  1402. + \9 p' M: }( [* f) {2 o; g
  1403. ;==============================# w. w" \5 H4 d) _2 @  [
  1404. Init_Palette_Addr;初始化调色板数据* }: M, ]$ L7 V$ m. E2 q) A8 a
  1405. LDX #$00
    % E% D" e7 o* p, r4 c! F0 G' z% X/ U
  1406. Init_Palette_Addr_Write  Z7 s; ?% y6 F; p" H6 d( z
  1407. LDA Palette_Data,X- w6 }  C8 x" g8 ]5 `! e4 o
  1408. STA Palette_Addr,X+ C! v' e7 G9 p) x) [
  1409. INX
    7 R3 r3 `# `9 n/ M% X7 z! d  T% v
  1410. CPX #$20! w% U9 W) ?& {+ u# i3 O4 g9 c
  1411. BCC Init_Palette_Addr_Write
    7 C9 O2 \/ i* B
  1412. RTS- ]- C6 m! B3 o# q* Q8 ~9 M
  1413. : v7 `+ E* i$ F8 \4 a
  1414. ;==============================7 s: R2 i: v9 Z
  1415. Update_Palette_Color;更新调色板颜色
    6 S; w. P) Q0 {% `$ [* {% C* {
  1416. LDA <Palette_Update_Flag  g9 T* C2 `! z9 N" [7 C$ ?+ D
  1417. BEQ Update_Palette_Color_End
    9 T6 G( H) C, Z- g$ B3 H/ l) \
  1418. LDA #$3F
    ! [0 r2 g6 Q3 t: m! S
  1419. STA PPU_ADDRESS
      a6 L9 @5 F8 J3 a9 ?
  1420. LDA #$0C
    . F  F$ Q1 _$ c, \8 s; ~* M
  1421. STA PPU_ADDRESS0 j7 C+ q4 r* _0 z  e
  1422. LDX #$0C0 g/ N4 k. H' m& U
  1423. Update_Palette_Color_Write  v5 u" ^  Y, R' a( P! w# g
  1424. LDA Palette_Addr,X
    . z8 N: p4 x8 J5 c
  1425. STA PPU_DATA
    / @0 e: L' k. B' v( o0 \- ]2 w5 q
  1426. INX
    5 O+ k' b( d) W" u
  1427. CPX #$14
    8 I- y- F: c1 k# r
  1428. BCC Update_Palette_Color_Write
    9 L" f7 @* F" H
  1429. LDA #$00
    ' Q$ w3 |6 }2 ^7 g2 f
  1430. STA <Palette_Update_Flag' h2 u- u7 |: s$ J. n
  1431. Update_Palette_Color_End/ p" ]+ e0 m* i  a2 s
  1432. RTS
    1 Z- E, ]" [: Q* C0 T% E- Z

  1433. 2 d+ d' x' G) ]6 Z6 }

  1434. $ k2 }, U* P5 k2 [
  1435. Update_Sprite_Palette_Data6 U: N. I: o. h. c* T
  1436. .DB $21
    8 ?, ^, t/ z8 T: o
  1437. .DB $21
    ) S6 |8 E# e8 A% @6 E. }
  1438. .DB $11
    ) d& O' C4 [0 x0 `) Z  e
  1439. .DB $01: l) s# c0 @2 S
  1440. .DB $01
      u; N* D6 Z) D+ [/ t
  1441. .DB $11* A0 Z' |( k. W/ O3 d! `
  1442. .DB $21
    ! ]' ^6 @6 \, {$ e( x2 }& M4 x' Z
  1443. .DB $21
    $ h6 T- n* I2 x. e
  1444. .DB $11! N  z4 d+ _0 c& B
  1445. .DB $018 K7 X4 V7 p0 o9 X6 q+ K9 C$ d
  1446. .DB $11
    : N$ I$ C6 ^/ l: }& T# d' S* F7 v
  1447. .DB $21
    , t9 w; A" U. Y; I7 ~4 E
  1448. .DB $21
    * Z5 F1 y% j& w# D
  1449. .DB $11  t/ W4 T; t5 n& e7 L
  1450. .DB $01% [8 S! h# f) c9 c# |! h
  1451. .DB $11; G6 d: A6 @" \1 K, ^6 n7 O
  1452. ;==============================4 H* a9 M' Q. i/ d/ S) ?
  1453. Update_Palette_Data;更新调色板数据
    9 n2 x6 ~( F! U) |. s: H+ p
  1454. LDA Nmi_Time_Count- u9 U0 r4 V5 ]0 S
  1455. AND #$08+ u- ~( k& x( @4 U- Y  n
  1456. CMP #$08) n6 Z; [: u8 z1 M5 G
  1457. BNE Update_Bkg_Palette_Data
    . g: Y- b4 f$ Y+ l0 Y+ W
  1458. ! s9 ~2 j' Y& Y9 s8 Q# W% a
  1459. Update_Sprite_Palette_Data_Set7 c) u* G+ J  y8 x; ]6 w+ v9 x7 A$ Z
  1460. LDA Nmi_Time_Count. C) _3 q# N5 i8 U& O+ b
  1461. LSR A: M8 I& U* R5 n7 Z
  1462. LSR A1 r* T! q# C* U- r7 ?" _2 B' [
  1463. LSR A6 o; @% J. z- O$ H0 j7 s7 ~
  1464. LSR A4 d8 u: S6 O% _9 V" G( |9 M/ D# H
  1465. AND #$0F
    5 R, s* o% F8 {  ^- W: N( @
  1466. TAX
    3 \1 ^6 o# ~1 n; Q
  1467. LDA Update_Sprite_Palette_Data,X
    5 A7 d) F. }! S
  1468. STA Sprite_Palette_Update_Addr' T, M9 E1 |6 v1 c1 y2 P
  1469. LDA #$01) s( R2 `6 w, J2 e- }# G
  1470. STA <Palette_Update_Flag8 |' _; M( _* [7 P9 D# ~( C
  1471. 7 t/ j0 |1 S( h/ c: |2 K
  1472. Update_Bkg_Palette_Data
    0 x2 g* B3 z) M  h( ~* y  y
  1473. LDA <Text_Disable_Flag
    6 l' i1 `9 ]& Q' R& @6 c
  1474. AND #TEXT_DISABLE_RAM& V& F% V& l; y2 }% A  `; X" D
  1475. BNE Update_Palette_Data_End
    * z; k2 h! l* y$ B* r
  1476. LDA <Music_Stop_State$ y0 F3 S, H; Q' x! H7 H+ f4 z
  1477. BNE Update_Palette_Data_End
    * v0 M/ O8 F9 B( F7 K& k- A

  1478. ; J! g4 V9 ^2 {0 Z& N& o3 G; z
  1479. Update_Palette_Data_Check
    ( B/ R7 X* F( `
  1480. LDA Palette_Wait_Cnt  B* k5 ~5 e; x) `( h
  1481. BPL Update_Palette_Data_Check_Over- Z" _  E# ^0 y$ i! M2 o
  1482. LDA #PALETTE_UPDATE_INTERVAL
    7 v! q% W- T' {0 Y
  1483. STA Palette_Wait_Cnt! i6 {$ G& ]/ b8 j8 W
  1484. Update_Palette_Data_Check_Over
    % p7 [! P) S+ Y: T/ M5 F8 R) }
  1485. DEC Palette_Wait_Cnt* T3 E' X  I" m# V% N
  1486. BNE Update_Palette_Data_End: ~% J0 r/ r3 q! i  a
  1487. 2 ~# z, @* q+ a
  1488. LDA <Text_Disable_Flag
    . p5 K* p1 ?: f, K( Y
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME6 e0 O% {4 W& y6 V5 r* K& M+ r
  1490. STA Text_Disable_Flag; q3 p- B$ |) S; A0 [
  1491. INC Palette_Update_Flag: K/ T5 Z4 Q: k- f2 o( O

  1492. . R8 t$ W7 l- i: p( W
  1493. LDA #PALETTE_UPDATE_INTERVAL
    1 {* M4 C2 R+ f2 ^
  1494. STA Palette_Wait_Cnt; v9 d. T2 a7 O. H8 @/ M4 y
  1495. 4 i7 \# ]7 e9 O, r4 I: J  T
  1496. LDA Bkg_Palette_Update_Addr
    ! H# L$ i3 c# k' [  b( W
  1497. CMP #PALETTE_UPDATE_MAX
    6 Z2 Z& S: C: ]3 f; A# Z
  1498. BNE Update_Bkg_Palette_Data_Set" u- q1 [" B+ G3 E3 J
  1499. LDA #PALETTE_UPDATE_MIN - 1
    5 y5 ^+ X  d# B6 l6 ?" R3 B
  1500. STA Bkg_Palette_Update_Addr' s. o$ o# u+ w6 j2 j: D
  1501. Update_Bkg_Palette_Data_Set4 Y; z2 `) R9 K8 s
  1502. INC Bkg_Palette_Update_Addr
    % ~& t7 t+ E* x" Q
  1503. + J1 e" y% k8 f7 p: w
  1504. Update_Palette_Data_End( v- e5 R2 }$ {7 O9 o
  1505. RTS! [6 i( ^# e% [) f4 v: @
  1506. 0 o- L& [  u5 A$ K& }
  1507. ;==============================2 c7 d+ v! G" ?/ `* n* G; X; G4 F3 ]3 [
  1508. Show_Music_Text;显示静态文本; S  N  H3 x7 A* G0 T' Y
  1509. LDX #$00
    7 c0 ?7 p0 D4 i6 m$ Z% \
  1510. Show_Music_Text_Set- G" r6 |' x3 Z, Y1 y
  1511. LDA Static_Text_Data,X& R$ x6 u# Q' K1 Q
  1512. STA <Data_L
    6 J( h" e% g' v' ^! z
  1513. INX5 J5 y) j1 q. x' K) c- B4 ~! G
  1514. LDA Static_Text_Data,X
    3 D$ O7 m  o2 A' T4 b$ i  j
  1515. STA <Data_H7 T$ g7 i. ?. @2 U
  1516. INX! d3 B$ N' c$ @0 W7 X# N
  1517. LDY #$00
    / ?& U" Y1 ~# u$ J$ g0 J" J
  1518. LDA [Data_L],Y/ s0 \. G/ o7 ]) o: d
  1519. STA <Data_Cnt8 M* R3 J9 ]- \& |* I7 ]6 m
  1520. DEX; z1 v9 k, G$ }) J4 W, B
  1521. DEX* S; F  a9 ^! y/ B
  1522. LDA Static_Text_Pos,X
    ( L+ e/ \; r9 {2 \& E. z+ x$ B
  1523. STA PPU_ADDRESS
    9 D7 h4 l0 `- x' m! a
  1524. INX
    . f; k2 ^+ P5 [9 O7 k" d" K4 G
  1525. LDA #$204 `# ~4 q7 |4 ]2 T) F+ c
  1526. SEC
    / t% {$ e9 c/ r+ j
  1527. SBC <Data_Cnt0 C  L9 k8 i, Q
  1528. LSR A
    ; q9 \, L- H  m9 m+ w0 k
  1529. STA <Data_Buf, }2 t% A- [( r  M. I
  1530. LDA Static_Text_Pos,X9 @, ~1 ]( D: b4 G5 R4 |# x
  1531. AND #$E0
    4 {8 u' d1 X& U0 w
  1532. CLC; k2 E8 R: Z& q% [, F
  1533. ADC <Data_Buf5 X. f5 Q( c0 o
  1534. STA PPU_ADDRESS
    : W9 t+ C$ `8 I$ z7 G! l& P9 U( b+ n
  1535. INX
    6 P* l) O8 q$ `+ Q7 C
  1536. Show_Music_Text_Set_Write2 x% g7 Y; P- t4 h% c+ ^9 T
  1537. INY% {6 ~9 K! {0 a1 `% _8 u
  1538. LDA [Data_L],Y
    2 z+ m3 r1 T" r0 o' E
  1539. STA PPU_DATA8 d- q+ i' a# S( {% ]
  1540. DEC <Data_Cnt# p5 O+ i2 B0 H, [0 p
  1541. BNE Show_Music_Text_Set_Write& ?% X/ y2 [+ `3 [' n4 H. n9 l
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    0 Z# \3 `1 Z7 i, S! N
  1543. BCC Show_Music_Text_Set6 r- ?/ j9 V/ ]- D  O: Y3 |
  1544. RTS. G' ]9 @$ n% e% E; h' x
  1545. 6 F1 c) x0 A8 Y$ h
  1546. ;==============================. p+ V+ D! J5 d# V  ]' V
  1547. .IF Track_Name_Pos;显示曲目信息% V$ z( c) h+ f  o+ Z. ]
  1548. 5 w" {3 h7 V: [% [% q
  1549. Clear_Track_Info2 n8 w! h* R6 C5 s; |( I: q
  1550. PHA0 h, f, Z: e) k; X
  1551. LDX <Music_Item_Cur3 Y- t6 ^/ K7 T% P5 E: R
  1552. LDA Track_Name_Addr_Flag,X
    * }+ X) I' T/ s6 ~" v
  1553. BEQ Clear_Track_Info_End_Ex
    % s8 c$ h. S0 n
  1554. PLA
      v' e& l. i$ N: Q0 d
  1555. * J% @6 c% h' s
  1556. LDX PPU_Cur/ {: q0 R3 H$ Y% ^( x# i/ u
  1557. PHA! S$ E/ k$ a, }2 i. y
  1558. LDA #PPU_MODE_CNT_CLEAR; T' }- j4 w! o$ b
  1559. STA PPU_Addr,X
    9 Z8 E" k' Y+ ~
  1560. INX
    $ X' C: O+ N& ^1 p: s" R& ]$ N
  1561. PLA6 S7 _' L; ?( x* _4 |, [5 {
  1562. JSR Show_Get_Track_Name_Center_Pos: I4 n1 I0 W( w" q/ |/ d% b5 E. M% I$ m
  1563. STX PPU_Cur
    3 E( H% j% H0 A1 u3 t
  1564. Clear_Track_Info_End
    6 E! d  h% j- m4 C3 H/ G
  1565. RTS
    ( B3 a1 c1 `8 k* {; Z* b
  1566. Clear_Track_Info_End_Ex
    - o7 R# ?0 H5 E4 V! z( C
  1567. PLA/ X# K3 ~; ~- C  Y9 ~
  1568. RTS- p  \" D7 g) s6 D0 l2 F( h8 [0 r( p

  1569. # S; _8 g( s$ X* }/ j
  1570. Write_Track_Info
    & ^/ U/ G, j3 B
  1571. PHA
    9 h7 _3 H& J0 K& x' ~" I
  1572. LDX <Music_Item_Cur
    $ B$ v' L$ t6 l: V
  1573. LDA Track_Name_Addr_Flag,X6 `# s2 w# e' U3 v! T6 {5 K
  1574. BEQ Write_Track_Info_End_Ex9 ]! H/ K, S7 Z
  1575. PLA+ [' f6 @, {' H( T9 i$ t- W  z+ }

  1576. $ i# `4 k" R5 I8 Z2 A
  1577. PHA5 a8 t; y/ ~/ v1 @& m
  1578. LDX PPU_Cur" a/ |5 _+ U& p3 A
  1579. LDA #PPU_MODE_CNT_LINE
    4 b8 D+ b. T: W  \+ H' D( ^6 ]
  1580. STA PPU_Addr,X$ O2 f: F6 \" X
  1581. INX3 G7 u. h: L' m2 j$ W
  1582. PLA
    - ~. n0 m. J7 A! R8 X, S
  1583. JSR Show_Get_Track_Name_Center_Pos
    , d3 I; i  z+ [  ^
  1584. Write_Track_Info_Data) d7 k4 K/ C/ m- _' v
  1585. INY
    - Z( z9 v4 T" b7 b6 e
  1586. LDA [Data_L],Y
    3 u1 ^5 }- b+ d6 ]) X3 C# D
  1587. STA PPU_Addr,X
    * e2 B9 \' \; {& [
  1588. INX
    + W6 [' q: d! |
  1589. DEC <Data_Cnt, C* l& z: ~7 O% c! W
  1590. BNE Write_Track_Info_Data5 y9 T- k6 h/ x1 R. b$ J3 a, L
  1591. STX PPU_Cur
    4 I. x3 g& r1 g
  1592. Write_Track_Info_End
    * u3 n. a" ]7 E; G5 a  f
  1593. RTS
    ' w5 s% f: ~- R: j" v) z
  1594. Write_Track_Info_End_Ex
    % \6 t3 W$ a% w, j) n" `" `
  1595. PLA( t  M; Y" N5 o1 [1 z- X
  1596. RTS
    * Z( B) G- K  {) ]$ z# F
  1597. 0 U2 @6 Y/ A7 s) b4 s/ _& ?
  1598. Show_Track_Info
    5 ~8 i7 N. ~: @% C% Q8 i
  1599. Show_Track_Info_Clear
    * }) H5 G0 m& ?
  1600. LDA <Music_Last& U% W& @& I6 I9 O+ z' ~

  1601.   a* \" y1 D' \& @+ E& q& _. e
  1602. JSR Clear_Track_Info
    ; ?4 s9 i1 l7 G; ?

  1603. % _3 P1 y# O/ m2 n) R
  1604. LDX <Music_Item_Cur+ p0 Q0 _8 J3 p: I
  1605. LDA <Music_Cur,X
    . |( o$ u0 w4 R  G9 F6 C# G
  1606. JSR Write_Track_Info! u: l3 z. N1 \2 [% F( y) W
  1607. RTS
    7 `; S* D$ s2 K4 ^

  1608. . s% b, {7 l7 L3 I
  1609. ;==============================! Y  Z+ x" C  ]# x
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    . l! O6 l* g# O6 N9 g4 k% L4 W" O  u

  1611. ' _1 e) z; ^0 h3 E( C
  1612. ;取出集合名索引
    5 n" j4 J: N+ m' H- J9 c7 ^5 ^+ \" }
  1613. PHA
    0 P1 w( @- X5 m5 |. s, ^* s
  1614. ' G" h6 U( k% ~: Q% _- \
  1615. LDA <Music_Item_Cur# T3 J: v+ J* W
  1616. ASL A
    2 q* {! Q5 C1 F3 D
  1617. TAY( C: Y) n8 U, Z! @, p
  1618. LDA Track_Name_Addr_Port,Y
    ; x4 @5 x  a6 w( j1 K
  1619. PHA7 W# E* v" r! G/ Q2 S
  1620. INY, g& p5 S3 h' |* _( J! M9 z; y
  1621. LDA Track_Name_Addr_Port,Y3 j4 t7 h* T4 r9 ~1 }" {
  1622. STA <Data_H3 ^3 u8 f* r" n$ R- d/ {: r
  1623. PLA$ k9 T3 R* U  Z* p( D
  1624. STA <Data_L% }8 d5 |/ l% ?4 e! p' ?* x

  1625. - \# K% H; I+ `# w% h, B0 r
  1626. PLA! E* t# ^. ?9 X" u5 f+ H7 u1 p

  1627. + p" _- `6 a4 a# H% e
  1628. ASL A
    & c  u$ B# z# e8 s% \4 m# R& I
  1629. TAY
    5 I* w4 u1 _$ f) X
  1630. LDA [Data_L],Y
    : F- n. U. M! u" [/ v; A6 l4 ^  G( l
  1631. PHA
    + G( E' F- ?$ e
  1632. INY
    % y8 f; I( v0 I: c) q
  1633. LDA [Data_L],Y
      S) J3 P# Y( O( Z6 j' v
  1634. STA Data_H7 X! D( L" w1 P7 N# ], A$ ?
  1635. PLA8 w% Y: I, D: i, T, _# m
  1636. STA Data_L
    9 g/ F, e4 m1 S* N1 c2 t2 K8 s

  1637. ( S! o! i% m* s4 U; v! Q
  1638. LDY #$00  E2 m; C3 ~4 ]# n! C
  1639. LDA [Data_L],Y
    6 j- G+ a+ h9 h. v' u8 b
  1640. STA <Data_Cnt& b8 o; i# c  v4 L6 n6 I+ W
  1641. LDA #$20' M. g5 P% }7 X) X! ?$ B7 u* S
  1642. SEC
    * q. l! {  l7 l$ E$ s
  1643. SBC <Data_Cnt
    ( O" E7 x1 n6 e+ a
  1644. LSR A  v. \) r6 O* d. c" a' L+ |
  1645. STA <Data_Buf: N" h$ O& p( c. v% Q& V
  1646. LDA #HIGH(Track_Name_Pos)9 m  u( q( Z: l$ t8 i
  1647. STA PPU_Addr,X
    $ @) k7 j( {* f4 W
  1648. INX
    9 T/ x" W$ q  G! s4 \5 W
  1649. LDA #LOW(Track_Name_Pos)
    " O8 \. T5 L) K1 f3 U+ e6 X* j: [
  1650. AND #$E0) M- t8 \* V7 ~4 S
  1651. CLC
    7 R. N+ g& k; Q+ T
  1652. ADC <Data_Buf+ x+ B; V. N; {
  1653. STA PPU_Addr,X; k8 H1 Y- I8 L/ M  A% T, S+ H7 S/ k8 E
  1654. INX
    9 w7 }$ V: |" p6 g& b4 ~7 C1 u
  1655. LDA <Data_Cnt' k. M& A% S& h8 E; g
  1656. STA PPU_Addr,X! V7 F6 I0 v. j, |% [3 h
  1657. INX
    / W/ ~- q& a* j4 z
  1658. Show_Get_Pos_Center_End
    ! G2 D- O; n9 w
  1659. RTS
    ! o& Z" q( W" V9 L# F3 F9 Q3 V- ^
  1660. .ENDIF
    & V9 w. D. W: M) Y" A' [+ G* w9 E9 y

  1661. $ ]: {: Z1 D1 t* N
  1662. ;==============================  b, H) @' ]/ s* F( h" \1 j
  1663. ;音乐端口清除
    8 X! n2 h! Y9 m2 T; [$ Z& @
  1664. Sound_Data_Clear
    / B% O' K: t% c9 a$ Q/ i  q
  1665. JSR Sound_Port_Clear/ A1 }" @2 L9 _" J6 V, T
  1666. JSR Sound_Ram_Clear$ m+ B: ^( N  N1 t$ s  L) U
  1667. RTS/ `' D2 t6 d4 {7 s

  1668. & n1 ]8 p1 s5 k# ^$ P  p
  1669. ;==============================
    . d4 L, D* N+ c! q) d; t3 s
  1670. ;音乐端口清除
    / Q3 Q' c( z9 l# f
  1671. Sound_Port_Clear
    : c4 \5 b" K6 B0 Z+ w
  1672. LDA #$00
    ' Z9 @/ d& ^. ]9 k
  1673. STA APU_STATUS
      F# B; W$ g% f* D/ Q
  1674. LDX #$00
    , E5 j% O& g$ p" n/ d
  1675. Sound_Port_Clear_Write
    2 _! B1 {) d2 v# N
  1676. STA $4000,X
    4 t- [% r# y2 e
  1677. INX
    . d* V9 Y# p) w* ?
  1678. CPX #$14
    ; E1 P( q0 ?- M' G4 N; L& b
  1679. BCC Sound_Port_Clear_Write  p6 }1 S% t% @0 P  _
  1680. RTS
    - ^8 Q5 S( t; j! \  M- q* ?9 s

  1681. 7 s/ J+ [6 c3 f0 L
  1682. ;==============================- {+ d8 B0 w# m- q
  1683. Sound_Ram_Clear;RAM清除  T& T; Q6 N# |$ s9 e
  1684. LDX #$00$ N" h$ q- ?; A. ^0 a( c
  1685. LDA #$001 j# |# P- p1 m9 @5 B' L
  1686. Sound_Ram_Clear_1* l) t3 U1 |  _3 z* R
  1687. STA Sound_Ram_Addr_1,X2 f8 J7 ^) C4 e) r
  1688. INX. @6 B: a2 r/ ]! o
  1689. CPX #Sound_Ram_Addr_1_Size
    % Z9 z1 J1 C) M
  1690. BNE Sound_Ram_Clear_1! {! f1 B* k) G, _; E$ U
  1691. LDX #$007 z6 i, z. f; f9 \
  1692. Sound_Ram_Clear_2
    3 ]/ r+ g0 ]0 z( d( c$ Y4 d4 d! @
  1693. STA Sound_Ram_Addr_2,X
    * I+ M' t( Q; g. z
  1694. INX, t' J( d4 y5 |2 a
  1695. CPX #Sound_Ram_Addr_2_Size9 x+ E) F9 W1 M/ s! D- Q
  1696. BNE Sound_Ram_Clear_2& E, a" ?+ t# ?$ c1 \! I$ H
  1697. LDX #$005 w* s- _% R1 L  L% E1 S6 E
  1698. Sound_Ram_Clear_3  N6 e$ w/ v/ V/ Z
  1699. STA Sound_Ram_Addr_3,X2 A+ L0 S1 I7 A. y) x" c, S
  1700. INX; i0 g) a1 ]' v2 }; h1 i1 \
  1701. CPX #Sound_Ram_Addr_3_Size; v0 g) F$ \. t+ Z
  1702. BNE Sound_Ram_Clear_3
    $ H# z# j' u+ C+ D5 L6 N- y$ {  x
  1703. LDX #$002 |! h+ ^; s4 z& p# X, Z
  1704. Sound_Ram_Clear_4
    * l$ F$ O+ Y2 D9 F6 y! ^6 }1 N
  1705. STA Sound_Ram_Addr_4,X
    2 g+ r# C. |1 Z4 w* \) t
  1706. INX1 D2 j& Z$ y# T- q, t; W* @
  1707. CPX #Sound_Ram_Addr_4_Size
    , a2 Y5 [8 z8 u; O( O/ p
  1708. BNE Sound_Ram_Clear_4, o1 Z- [3 Y. n! s5 Z2 n
  1709. Sound_Ram_Clear_5
      ]- f* w+ ^8 K0 h' F
  1710. STA Sound_Ram_Addr_5,X
    ; R) N- G$ y# |
  1711. INX7 M1 W2 s2 q% n  C- V" }  N: L
  1712. CPX #Sound_Ram_Addr_5_Size1 H# s: M- w. o  x
  1713. BNE Sound_Ram_Clear_5
    ( k- z- n- E3 x: O
  1714. RTS
    * Q" w  D& V" ^3 ^$ w

  1715. 2 V% _% G' _8 o8 r! d
  1716. Get_Music_Collection_Name
    " N5 ?. u% o2 e  R
  1717. PHA( e6 M5 L9 T/ W6 Z6 ?8 C: Q
  1718. LDA <Music_Item_Cur3 I: |9 X. @* I4 ~) s4 Y
  1719. ASL A
    9 m3 X8 y! @' j
  1720. TAY5 \1 S6 `) [- l
  1721. LDA Music_Collection_Name,Y! X+ e% U- W. K+ Q% i' E5 Q; Y# q' Y
  1722. STA <Data_L
      S# M) y7 G5 H: z6 X& M
  1723. INY3 a4 p: l. m' A" B  S
  1724. LDA Music_Collection_Name,Y6 o* C' E# D$ ]- R% X3 b9 o
  1725. STA <Data_H
    8 X8 D# M; J) K" v7 x" Q. k
  1726. PLA4 l( ?4 E4 F& w) C( M* \& {
  1727. RTS
    * L" m1 g! Z2 B4 b! r) s4 N: C# @

  1728. ) l3 j0 x# R( `( n# |$ D$ k" B0 ]' d
  1729. Set_Sound_Total* z( h7 R& D7 w8 X+ P+ [
  1730. LDY <Music_Item_Cur
    9 f9 N1 |7 Q# d$ N2 v
  1731. LDA Sound_Total_Port,Y& b  J  h. H" i; J, _) U* t
  1732. SEC
    ! D! \4 }% ?4 [9 [+ C% J5 a3 y
  1733. SBC #$01
    & Z3 q) ]) o3 @- A- s/ S* d
  1734. STA <Music_Total
    3 j# I; x8 \2 ^. w8 ~* m6 z
  1735. RTS4 {9 l% f5 a* j- \" i

  1736. % C0 U4 }6 y1 x+ Q5 M  M
  1737. Get_Sound_Start% y) I9 Q; H& p8 ]  S+ ?3 F
  1738. LDY <Music_Item_Cur  l& v4 C# s& S  w
  1739. LDA Sound_Start_Port,Y
    6 }* T+ l7 O5 Y$ C6 J7 M
  1740. RTS! @% f5 u1 p! m# ~1 T/ J
  1741. 1 w1 m4 `( I) s
  1742. Set_Sound_Init_Port3 q1 s' d2 ?2 e( K: d
  1743. PHA
    7 f$ B& C. ]- G6 E0 G6 n
  1744. LDA #$20/ d. b  R: G1 d4 I6 ]7 h
  1745. STA <JSR_Addr_Op. |6 W+ f% ~) }2 b( G  r3 l
  1746. LDA <Music_Item_Cur0 O; l) E" W7 {( J( E0 E- b% v
  1747. ASL A- ?( p5 f& x/ ?2 s
  1748. TAY
    " L6 v. z3 }0 n5 r4 T$ g
  1749. LDA Sound_Init_Port,Y
    2 i! K% c; `" o/ e! o
  1750. STA <JSR_Addr_L
    " o; R: G  Y/ N' X
  1751. INY
    & \' {3 Q5 m! P2 K: h( w
  1752. LDA Sound_Init_Port,Y
    " \5 o2 P7 V8 w" \  M0 o
  1753. STA <JSR_Addr_H9 V! o2 b, c9 j( a/ ?
  1754. LDA #$60
    " ], k4 }8 x- q+ `6 Q' m0 R2 p
  1755. STA <JSR_Addr_Rts" E8 z) r& V+ f% r. d: {
  1756. PLA
    & M3 ]1 @: W6 u$ S. ^, P4 t
  1757. RTS
    ' V, b4 |5 C$ c
  1758. 5 \5 u4 c, g- K: `( N- d. ^
  1759. Set_Sound_Play_Port
    ; u& [, U! P/ d1 v4 C7 E  ^# c
  1760. PHA
    . m; @( }) R1 Q! Y/ m8 o  Z+ |) ^+ s
  1761. LDA #$20! T4 G# e/ l/ P4 m; N- L
  1762. STA <JSR_Addr_Op$ M; |1 M- D) N0 K& C! Z- x
  1763. LDA <Music_Item_Cur2 H6 J) P5 [1 n: |8 B- @
  1764. ASL A4 }& ^0 s5 I9 p4 p0 w
  1765. TAY
    0 }  R) s1 R  f
  1766. LDA Sound_Play_Port,Y
    ; a) Z9 z( ~; C' D% l
  1767. STA <JSR_Addr_L: Z& a) M0 v$ `. M9 H
  1768. INY" f; ]6 Z7 T( E, B+ ]  Y8 u
  1769. LDA Sound_Play_Port,Y
    2 `* C( m* m7 N1 h" e! d- d
  1770. STA <JSR_Addr_H1 y# t9 Y/ y, @9 E& o0 {. l: d
  1771. LDA #$605 }; o. i! W, h( v+ ^3 `
  1772. STA <JSR_Addr_Rts) }! f2 T, c3 S' ~4 D% ^
  1773. PLA& M, P/ @" T9 M# m
  1774. RTS
    & u) G" @% M( h

  1775. 1 W' [8 J  }- B+ H3 X. s1 \+ c, y6 K
  1776. Set_Sound_Reset_Port
    : A. R4 s: g% ?/ U4 w
  1777. PHA" _7 M' q: G$ N: F4 s
  1778. LDA #$20
    6 X$ h7 m1 W$ [! }/ A/ C$ D
  1779. STA <JSR_Addr_Op  K% @1 Q% h  g$ `% H) `" k4 G3 D
  1780. LDA <Music_Item_Cur( }: p4 s8 n( q6 u# c/ B
  1781. ASL A
    ; Q1 u, A! e# Q. C" `, |5 B  O7 p
  1782. TAY' U6 m6 F- K0 m$ G' K
  1783. LDA Sound_Reset_Port,Y
    ( p' q. w5 j3 \( m" i
  1784. STA <JSR_Addr_L, q8 {" I# g; g
  1785. INY/ r( S$ @4 X$ i) t
  1786. LDA Sound_Reset_Port,Y: E) w. y0 ]4 c# m3 u1 @: ^  k7 _
  1787. STA <JSR_Addr_H$ P: M0 \6 C+ M6 O% r
  1788. LDA #$60+ T4 U  l! o: v
  1789. STA <JSR_Addr_Rts0 d6 p# ]4 L0 I5 P" _1 |6 l  F
  1790. PLA
    : s5 E! c9 q8 q# X$ Q& u
  1791. RTS
    1 C/ f% P1 h( P8 T$ m
  1792. + W) K0 s. w8 b& t7 \4 x% _1 `8 D7 N
  1793. ;初始化音乐bank
    6 g* }& t8 T* E9 l
  1794. Init_Sound_Bank0 ?4 g+ t3 K3 R1 J1 o4 L2 K3 p
  1795. LDY <Music_Item_Cur
    # Z# A% n6 A/ r8 e
  1796. LDA Sound_Bank_8000,Y
    % |9 P6 j& g1 [/ B1 P- s
  1797. STA <Music_Bank_8000: q9 E1 X( G0 W0 p+ v
  1798. LDY <Music_Item_Cur
    5 Z8 G& X( [5 `( w- ?5 N% t
  1799. LDA Sound_Bank_A000,Y
    " p) p8 y' T% f) ~/ \
  1800. STA <Music_Bank_A000
    ; x$ _# z  q( j1 b
  1801. RTS
    5 h" E0 F$ F8 C8 G
  1802. $ _- z4 t4 f4 L1 |) E1 t, Z4 I
  1803. ;==================================================7 }/ e5 ~4 k% X
  1804. Sound_State_Reset;音乐状态重置3 d; G) p5 s4 I
  1805. JSR Music_Bar_ReSet        ;重置音乐条) t4 j  q4 R1 U% j' K$ u" }) H
  1806. JSR Time_ReSet             ;重置播放时间
    ; X3 P' v# Y3 z2 @
  1807. , O0 i6 r0 f; ?  I' }1 r5 ]# @
  1808. LDA #$00" x, c* w5 Q% Q) f5 {
  1809. STA <Music_Stop_State
    + o8 A/ ]5 r1 w' b; Y
  1810. JSR Music_State_Show       ;显示播放状态
    4 L. X6 y3 {. N8 \! s

  1811. 8 E, W  Q5 Z' ?+ z
  1812. .IF Track_Name_Pos
    ( f" M! T1 b1 T3 S% a$ g
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    " ^7 V% }9 w) R0 z' Z. \
  1814. .ENDIF
    2 ?' q3 L3 L% q5 T+ M8 n' D2 D

  1815. 1 g1 G: c: I/ F- v* F- [& m: a9 p
  1816. RTS/ p" l! C: m; J' k7 n3 |- I
  1817. 6 k' b/ y* o) R2 i+ n
  1818. ;==================================================
    4 L  G. y2 ]8 m1 e0 q$ q
  1819. Sound_Init_Proc;音乐初始化处理
    ' ^; ?6 p9 d4 L1 W# F6 Y
  1820. PHA
      J- r: F/ P) m, t
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    0 E+ T# d: v/ D; \2 W2 R) i" G" ]
  1822. LDA #$00
    ) N# @6 R1 W4 [, @6 E' u- z
  1823. STA <Scroll_H               ;重设水平滚动/ M: h: z( q  W4 f& W
  1824. LDA #$0F' c4 C) v$ o6 `; |
  1825. STA APU_STATUS
    - n' g, O0 N/ P7 h0 X5 \" P0 ~
  1826. PLA& O& |4 N+ U  R* S( K: a6 E4 p
  1827. JSR Sound_Init             ;音乐初始化1 J6 E( K- |8 q1 B% `1 G- m: I
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    % f' u- P% ?! n- B
  1829. RTS- S& |, N6 k; ]& D0 _! {$ H  s
  1830. 7 V9 B- w3 V0 V4 l* C
  1831. ;==================================================- f" J1 ]& p' h& D7 o3 K
  1832. Sound_Play_Proc;音乐播放处理  M9 Z: d6 S0 f6 d& B5 P, ?4 ~
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    ' a2 {  u( m# ^; p
  1834. JSR Sound_Play             ;音乐播放) I* M" J1 o! V, C$ R. `% G
  1835. RTS% V# c/ x' @: `
  1836. + A9 _' A1 W9 |" |# p# Z" z" A
  1837. ;==================================================
    6 p( V4 L/ i" s
  1838. Sound_Reset_Proc;音乐重置处理
    ) d- J5 Y! M* o- r9 m
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    ! `2 k5 Q' c: E5 U0 F$ ~$ d# f& F
  1840. LDA <JSR_Addr_L
    / o2 [! r$ o  d+ l2 j
  1841. ORA <JSR_Addr_H! A5 g0 q2 ?' _2 u
  1842. BEQ Sound_Reset_Proc_Default9 V7 V$ J1 q9 R+ m  S4 s
  1843. JSR Sound_Reset            ;执行音乐重置
    # M1 c% k4 v6 b' S. J
  1844. JMP Sound_Reset_Proc_Init_Sound! y( d4 |/ H  i. `& B
  1845. $ L6 p8 \' |9 U$ o( o( v
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理/ U6 [' w6 M$ b% }7 n# z, M
  1847. - j  O  \2 P- b
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    % ~) b# g1 f# D3 p: k- n. w
  1849. LDA #$00; M# k& s( h* a$ u2 r
  1850. STA PPU_CTRL
    & d. B9 e( c+ f
  1851. 6 A; `# H1 ~: T/ n
  1852. JSR Sound_Data_Clear2 I2 q) D. Y1 f% [

  1853. 3 y7 Z/ g7 `- v- \/ v
  1854. Sound_Reset_Proc_Default_Wait* Z& U9 O+ X$ F; ?$ S/ o
  1855. LDA PPU_STATUS5 s! S7 v  s3 `% S
  1856. BPL Sound_Reset_Proc_Default_Wait
    . J# Y" D! l* u$ m" K6 G( d: c0 U

  1857. ) h% K8 V, H  j6 E2 u+ \: h- f
  1858. LDA #$008 Z3 Q1 e$ \+ _+ T6 v1 Z! ]
  1859. STA PPU_ADDRESS
    ! g6 ^) ~6 Z; t2 l, U7 d# g6 F  W
  1860. STA PPU_ADDRESS
    7 y, ~* l- ?( V8 |" V
  1861. STA PPU_SCROLL+ L- C! U5 R; o( \* Q1 S; Y
  1862. STA PPU_SCROLL) \+ V$ G8 Y; a$ O& e1 s
  1863. 0 h5 F( L8 h  ?- j5 c
  1864. ;恢复PPU控制3 Y! k8 H" B/ F0 P. H- P- n
  1865. LDA Screen_Ctrl% e! X. q/ i: }
  1866. STA PPU_CTRL- J) b2 @0 J+ [2 H
  1867. 6 D, g7 [  v5 V: A( I9 Q
  1868. Sound_Reset_Proc_Init_Sound
    " |6 J: C- B* G0 x
  1869. LDA <Music_Stop_State
    & F1 Q# i( B: t) }
  1870. BNE Sound_Reset_Proc_End
    + N5 h3 i! ?* M7 C* D
  1871. LDX <Music_Item_Cur  c* t9 }6 w- F" Q
  1872. LDA <Music_Cur,X
    4 b, L2 v9 f7 ?8 ?0 F0 G( N1 {
  1873. JSR Sound_Init_Proc8 l* a7 e2 c, {
  1874. Sound_Reset_Proc_End! S+ P" t: y0 X! _4 f
  1875. RTS! K/ ~( E# ~0 R9 d6 h; f5 S
  1876. # B/ w$ o5 N# [
  1877. ;==================================================
    * t7 V* U5 T; l6 F1 H+ X& [
  1878. Clear_Item_Text;清除页项目
    & f/ \" S/ x/ \% [# C
  1879. LDX PPU_Cur8 C0 @0 Q4 j  N! Q( ~: n7 g& Z
  1880. LDA #PPU_MODE_CNT_CLEAR
    " d" P( [8 ]2 A; c# h; W' e  h
  1881. STA PPU_Addr,X
    # n: S1 `4 J( u8 c, t
  1882. INX
    4 Q  Z/ q; x9 B) }; @
  1883. . ?" W3 c! k7 `1 r
  1884. LDA <Page_Last3 v( T: s  X% B9 W
  1885. SEC
    - B- o3 Z  M! @% I8 c6 y1 w
  1886. SBC <Page_Last_Index0 b/ ]9 _7 Q# O. H
  1887. ASL A6 B2 G# f3 m+ G8 Q2 j, w* c
  1888. 4 q: Z+ a* R0 `8 q
  1889. TAY
    ) c5 U% W) w+ z* G7 Q4 W) g
  1890. LDA Item_Pos_Data,Y
    7 s% c7 _/ M( S/ x# z
  1891. PHA
    ! m3 o$ H# M8 v( F# t
  1892. INY
    9 Z' L! }2 p9 A
  1893. LDA Item_Pos_Data,Y
    5 q& P& Z7 q! I( B4 }) M# F) h
  1894. STA PPU_Addr,X4 V( E# R7 `* K2 h+ _, ?; l( H
  1895. INX
    # g: u& O7 q7 Q) d5 [9 \
  1896. PLA
    ' _; D% @2 V3 F/ ^
  1897. STA PPU_Addr,X& o+ J* r6 ?4 S$ i3 Y1 p8 }+ ]
  1898. INX% b* ?/ @5 w" T$ L$ X
  1899. 0 M) E! \' y& e, L$ s7 J
  1900. LDA <Page_Last3 q4 n5 t$ d5 y* J
  1901. ASL A, m" {* j" K6 {4 F( v
  1902. TAY! Q4 m* U- j6 [
  1903. LDA Music_Collection_Name,Y
    9 v* T5 U; W* E: G. u+ {
  1904. STA <Data_L
    2 G5 h. M1 T; I
  1905. INY
    ; U  B) a& o5 t
  1906. LDA Music_Collection_Name,Y
    7 S; Q: E8 L" I
  1907. STA <Data_H
    " I% W4 q. R6 L

  1908. - N" _  l/ `. J( h( T7 W
  1909. LDY #$00
    4 `- C, r) ^" t+ b. o7 O
  1910. LDA [Data_L],Y1 p* f' S: o- e- p
  1911. STA PPU_Addr,X6 S" C# J  a2 U. t0 T( I
  1912. INX5 s" e$ {5 w- a( @( W3 r
  1913. Clear_Item_Text_End6 r2 z8 Z- k: Q( p& S; R- J
  1914. STX PPU_Cur
    7 J0 t* W0 a. c9 \
  1915. RTS9 ]  m7 i& d  Z' X5 X) E6 m

  1916. ) u' V' O  \) w
  1917. ;==================================================
    2 S6 e( A9 c( y7 g# F
  1918. Show_Item_Text;显示页项目
    1 r3 M& `( o9 B: m- p9 F# J
  1919. LDX PPU_Cur
    + y$ P* E, q4 u( I9 N
  1920. LDA #PPU_MODE_CNT_LINE' j# [9 A# x8 g3 ?/ w
  1921. STA PPU_Addr,X& Z0 `: G8 ]+ L! d/ j' C
  1922. INX7 a- ?7 z/ g# N& x- `. L
  1923. LDA Page_Cur$ E: a7 L1 @" ]. I- J* t. ]; C$ [/ H
  1924. SEC+ }6 k' ]4 V4 S" K
  1925. SBC <Page_Cur_Index
    ' M, l! b% T& \+ g3 F
  1926. ASL A
    2 `9 q. K* L5 Y' N3 A  E6 A. H
  1927. TAY
    5 ]. [) r4 v0 m; _3 q
  1928. LDA Item_Pos_Data,Y
    , l- m* N' ^+ {6 F, w
  1929. PHA
    3 _  l& A8 b# |1 ]) O
  1930. INY% V) O6 a! o: ?5 }2 b
  1931. LDA Item_Pos_Data,Y2 k0 \9 {- J3 S& r
  1932. STA PPU_Addr,X! i+ |- w6 \; D; R$ P
  1933. INX1 p; G# X$ r7 [% T9 X6 T
  1934. PLA/ N% _0 r8 Z5 p
  1935. STA PPU_Addr,X
    ; E! U& d$ q9 Y$ f% u( D8 b
  1936. INX
    . u- ]6 ]: o% q5 p% X
  1937. + _; O, c8 Z7 r7 F2 |( \
  1938. LDA Page_Cur
    + b2 K  {4 |/ X
  1939. ASL A
    % l1 m/ L  d( o, n: ?
  1940. TAY
    # [) k* J  m! P! n" D# E: D1 v9 j0 R
  1941. LDA Music_Collection_Name,Y
    5 t! p* [: [& R% }8 Z# m
  1942. STA <Data_L
    6 a( x' c) F8 B" [: I
  1943. INY& J' B" y: W. U5 Z. m
  1944. LDA Music_Collection_Name,Y
    " s0 z4 Y1 k% n
  1945. STA <Data_H% A- A' M& z* x

  1946. ; t# E4 U& @5 Y- [& o' F9 E
  1947. LDY #$008 g6 c4 u! T  F" t
  1948. LDA [Data_L],Y4 q0 A' S) ?# d0 B" e, d2 |
  1949. STA PPU_Addr,X
    + c" y" `" t( G. }! G! E9 [
  1950. STA Data_Cnt3 E% U1 A: A* R% c0 x
  1951. INX! X, C0 Z1 v5 _; N' j+ M% O5 ~

  1952. & d+ T: W6 j* c
  1953. INY0 b. w! b, g' o2 I
  1954. Show_Item_Text_Write
    ! L5 N' c8 w% c1 x" b# a9 {3 Q% L6 m
  1955. LDA [Data_L],Y
      b# K4 f9 \2 S
  1956. STA PPU_Addr,X
    8 }1 Z# L+ `3 a- |
  1957. INY! T1 @; g+ H1 ?6 {
  1958. INX
    $ `+ }. `1 V- F- Q
  1959. DEC Data_Cnt. P, Y  K- E: o: Y
  1960. BNE Show_Item_Text_Write- d$ _4 y, J4 l

  1961. 8 b: y3 n1 X4 I( O; {& v  V
  1962. Show_Item_Text_End) m' D# O* w2 ]: v
  1963. STX PPU_Cur  R) ^4 F$ S- M
  1964. RTS% z% O, V9 K, \( {; i: o: E
  1965. & P  j6 p9 e/ ^* f
  1966. ;==================================================
    - W$ n8 ]3 ~9 k* [, m! g% _8 H" f5 z/ c) o
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
      {3 n+ e+ o6 g2 F$ A& T/ C9 p
  1968. STA <Data_Buf
    3 t- A0 H, Q) Q4 j; A: M
  1969. LDA #$00
    ) j- O2 ]7 j+ |
  1970. Get_Page_Index_Calc
    4 w6 F* {: H5 E9 Z  I5 ]7 ~
  1971. CLC! z, B, v! ^  L& f; b0 W& c! k! V- u$ ~9 T
  1972. ADC #PAGE_SIZE
    . i; q) q9 C# J+ b+ X5 w
  1973. CMP <Data_Buf7 @% `% T, b: ?, N, }
  1974. BCC Get_Page_Index_Calc" B! Y2 K" }; N& q+ f) m
  1975. BEQ Get_Page_Index_Calc_End0 C. H3 C: M3 P% L8 u
  1976. SEC
    4 x* t/ L' z3 P! J0 a$ D8 ?* D
  1977. SBC #PAGE_SIZE9 P& P2 c; b8 o- w7 v
  1978. Get_Page_Index_Calc_End
    7 P, o; T0 F/ i; n
  1979. STA <Data_Buf
    . G0 J: s) H7 f
  1980. Get_Page_Index_Cnt# _0 B) U* d0 G9 \( M
  1981. LDA #PAGE_SIZE3 S  H; T- d0 O# B
  1982. STA Data_Cnt
    9 @. R$ s" _6 E( E
  1983. * {/ p2 e4 s$ _1 l; W: U/ s& R
  1984. LDA <Data_Buf
    ) b# N: |' f0 X
  1985. CLC
    & E% P% D+ ?# h# T
  1986. ADC #PAGE_SIZE& L/ k5 u# C7 n' k$ m1 t7 G
  1987. CMP #ITEM_MAX_SIZE
    7 h1 r% g9 z* D' j
  1988. BCC Get_Page_Index_Cnt_End4 a/ k1 e& [+ [/ k

  1989. ' n) E' r) a4 b" }* G3 ^) A
  1990. LDA #ITEM_MAX_SIZE
    . Y8 M  @* m& c
  1991. SEC$ W1 J( Q, }" \2 }
  1992. SBC <Data_Buf
    # S' D6 j8 f) I
  1993. STA <Data_Cnt5 ~) g  ?4 G) i2 M. W1 @' F
  1994.   \' B5 M1 A4 t
  1995. Get_Page_Index_Cnt_End7 q# F, U8 \3 _3 Z8 }6 e5 X2 k
  1996. RTS4 b$ M2 [9 D6 M+ j6 t+ h
  1997. 5 y) v$ B$ g: A# x8 y/ l$ g
  1998. ;==================================================$ M0 L/ X9 ^$ ]7 o5 S
  1999. Get_Last_Page_Start_Index+ K0 ^7 r1 Y  i- o; Q6 S5 N
  2000. LDA <Music_Item_Last
    # g/ b8 E' H( _' F* |9 Y5 D* S
  2001. JSR Get_Page_Start_Index0 X- _# d- J  `
  2002. LDA Data_Buf( S7 J4 L" P2 @. ~. E' X' i4 Z$ o
  2003. STA Page_Last$ q4 v9 ~+ G: M! H7 _! J
  2004. STA Page_Last_Index% N1 Y8 ^7 S5 S* q- t! y/ E# Y
  2005. LDA Data_Cnt! c) w% W: G6 |; q. X. q
  2006. STA Page_Last_Cnt" ^/ g8 H3 O: |$ R9 b. {% L% a5 V
  2007. RTS
    ' V; E; k1 B$ e
  2008. - a7 P$ J+ Z. L6 [4 ^
  2009. ;==================================================3 p4 f$ {' F) J: u7 ~3 y, l* y$ Z; P
  2010. Get_Cur_Page_Start_Index
    ' V# h3 M/ o8 ?% G3 Z
  2011. LDA <Music_Item_Cur
    . i7 `  L- F2 [% f1 S8 Z! E
  2012. JSR Get_Page_Start_Index+ Y& Q+ j0 y+ y  F/ w
  2013. LDA Data_Buf
    " ~. p$ w% a( x( l: g: x# ]
  2014. STA Page_Cur* S/ N5 J1 e* n, j& [. l8 o/ V
  2015. STA Page_Cur_Index
    * y5 S, ?+ w3 |: p4 Y6 j
  2016. LDA Data_Cnt
    ( @+ R2 B. Z5 R" T
  2017. STA Page_Cur_Cnt3 n( ~, C2 v) I) i+ u; m1 g% K
  2018. RTS2 J3 R6 U9 a+ i) ]; }

  2019. / K5 i+ O0 Y: U
  2020. ;==================================================
    8 t: V9 r( ]$ N3 d# e6 C
  2021. Show_Page_Text;显示页文本0 P) A* a, ~* H3 K/ Q- W, G' f0 F' j, F& {* g
  2022. LDA <Text_Disable_Flag
    ) C: K" w9 X6 M( V+ X" O9 j
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
      U( Y+ N& Z5 m# _
  2024. STA <Text_Disable_Flag
    & Y  C4 W  ~5 |/ X( d
  2025. 8 Y0 `8 {0 S( i6 @: [4 f
  2026. JSR Get_Last_Page_Start_Index5 T5 m9 T% M: P$ W1 K9 O! u
  2027. JSR Get_Cur_Page_Start_Index/ c/ u$ s; o+ T  y2 |

  2028. ; u. N% @, S7 [5 j
  2029. Show_Page_Text_Set9 N" E: h/ r! U: e
  2030. $ o, l# [) D# v
  2031. Clear_Page_Last_Item;清理上一页
    1 I7 Q4 d, r+ M7 S
  2032. LDA Page_Last_Cnt- T; H1 |0 m$ c% I- G  H6 e
  2033. BEQ Clear_Page_Last_Item_End1 _; r' |7 P# G- q. A
  2034. JSR Clear_Item_Text
    / E6 `3 g2 [  F0 K% ^0 O/ t5 s9 f# N
  2035. INC Page_Last' A2 s0 o$ y. P
  2036. DEC Page_Last_Cnt  ?; H. x; d) V  e0 p$ W
  2037. Clear_Page_Last_Item_End
    ( e: y: y+ U: X4 Y

  2038. ( s+ j/ H' p+ l- j4 {' N) @8 {
  2039. Show_Page_Cur_Item;显示当前页7 t. I. P3 ~# p+ ]/ M4 m
  2040. LDA Page_Cur_Cnt8 q& I1 `; ~: w2 [5 J: e4 F
  2041. BEQ Show_Page_Cur_Item_End
    * ?/ N) o7 q6 L3 r
  2042. JSR Show_Item_Text' g  _/ E& H) o2 c1 c
  2043. INC Page_Cur
    - Q1 K( u# k! F* |; t1 N8 r% ~
  2044. DEC Page_Cur_Cnt8 a' p3 ~; F$ j# _7 V  ]; D
  2045. Show_Page_Cur_Item_End( o* C$ g0 Y) r+ d

  2046. % d5 p% `; g8 t2 E
  2047. INC <Time_Wait_Cnt. ]5 V0 `" h7 ]" m! I) J
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作1 h7 A6 {/ F: K( Z' M! j
  2049. LDA <Time_Wait_Cnt
    / d4 d: c5 N/ l2 T" r  u. f: }
  2050. BNE Show_Page_Text_Set_Wait7 O; T% F2 L1 J; W, p4 d; v2 {) F
  2051. 6 h' i  N( P/ |; V) a( E' k! h
  2052. LDA Page_Last_Cnt& F9 {; w2 z; s+ b
  2053. ORA Page_Cur_Cnt, Z. q) q  Z! f3 I
  2054. BNE Show_Page_Text_Set
    ! V  p6 A. Y7 E2 [4 z- ?4 f! M' s
  2055. LDA <Text_Disable_Flag
    9 M$ V0 h5 Q. O" |# ~( m: q5 w
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    3 C8 b( f& {1 A" Z7 t' ^$ m4 {6 d
  2057. STA <Text_Disable_Flag
    - S3 O1 @( U2 m+ y+ ~$ D
  2058. RTS2 f% o8 ]* a3 L- V

  2059. 9 @- j4 Y, U; t1 y* a2 f( |6 ^4 Z  G4 @" `
  2060. ;==================================================: p4 M' \4 {- N! b' Y
  2061. Last_Item;上一项3 Q* Y- v8 n& {0 j
  2062. JSR Clear_Last_Track_Name
    1 X2 k9 u8 F0 z# X% i4 ~
  2063. JSR Disable_Text_Draw
    7 q4 P, U1 P9 O) O+ P
  2064. . ]$ M  Z' Z8 F  T- Y6 S. V  m
  2065. LDA <Music_Item_Cur, D+ G. x. o- u0 X; H$ m
  2066. STA <Music_Item_Last. ^/ p5 B, i0 R" }4 f

  2067. ) b7 [. D* H: r: V% s% L
  2068. JSR Get_Last_Page_Start_Index
    # v8 r. a& g* c
  2069. 0 \. d# W' a  _1 w, h
  2070. LDA #$002 W/ l' Z# O( o: \3 O" \
  2071. STA Data_Buf
    5 |) h5 T$ }, |
  2072. 1 W+ `, `7 A) A  ]3 g0 o
  2073. LDA <Page_Last
    0 g& ]( C) c" Z
  2074. CMP <Music_Item_Cur
    # X* n' J& o* r1 s5 v  e$ [
  2075. BNE Last_Item_Begin! x' D3 y: X+ ^' s! n0 l

  2076. . F" J7 I+ X( h/ r- K, d
  2077. LDA #$013 U: X* t+ B! F4 a  D; t' d7 x
  2078. STA Data_Buf
    ( Y" \: E% X7 n2 B% A" T+ }' G
  2079. Last_Item_Begin) W- ^3 s8 x3 M- a( d9 _
  2080. LDA <Music_Item_Cur# _& X4 b5 \! u, D( a
  2081. BNE Last_Item_Set
    % g4 F) r& g* Z
  2082. LDA #ITEM_MAX_INDEX + 1
    ; W- A5 U8 ?) V4 G$ h9 E7 j% }
  2083. STA <Music_Item_Cur
    9 K7 U. }9 A; v% V9 d' T
  2084. 9 i; i% z4 R! \
  2085. Last_Item_Set( w) v2 l3 w1 u( J- g, @* j4 @
  2086. DEC <Music_Item_Cur( o; O0 i2 _  y! V" H
  2087. LDA <Music_Item_Cur- N5 T5 m4 a0 n
  2088. JSR Reset_Current_Music
    3 Q% K  F5 `/ Q9 j/ ]

  2089. . ^4 e# x- N4 r4 b+ g2 l+ v
  2090. Last_Item_Play
    / B5 d7 I3 j! }* ^6 M
  2091. LDA Data_Buf# M6 A! p( q+ P+ `
  2092. BEQ Last_Item_End. ^1 u. m' i6 K
  2093. JSR Show_Page_Text" L) j4 m3 l! t5 O: g! ?
  2094. Last_Item_End4 s4 d- S1 d! S+ o: v
  2095. RTS
    4 A" J7 x( `+ K
  2096. ; _& R: u2 `% B& N
  2097. ;==================================================* J4 G/ Z* b+ a7 a8 H
  2098. Next_Item;下一项0 l3 m! K8 c, ?
  2099. JSR Clear_Last_Track_Name! t$ t" i5 _( P7 H5 O* @, s: C
  2100. JSR Disable_Text_Draw
    0 i  E0 y) c- J; C- o9 n, D9 l
  2101. ' p# K  e+ I/ a* j& S# L
  2102. LDA <Music_Item_Cur7 P' |' Y2 ^. k6 |' o9 k2 L, M3 {
  2103. STA <Music_Item_Last/ i2 `/ s* ^6 i1 v* {  H# q. P

  2104. & w$ k" ^' _% T: ~. e+ ^
  2105. JSR Get_Last_Page_Start_Index
    , h8 i/ U! ?$ A4 N& ~
  2106. " k: T& U) @, A& ~) N
  2107. LDA #$00  N! F0 o" J1 n
  2108. STA Data_Buf; k# M) y# J: b

  2109. & W# v  q4 N7 i; X
  2110. LDA <Page_Last, S$ G! e  U! {/ k
  2111. CLC' [1 d' N9 A$ H# ~6 z6 q4 R( ?# Y
  2112. ADC <Page_Last_Cnt
    ' l/ V1 A% B9 k3 U  H2 v/ Q
  2113. SEC
    5 y7 t0 x7 M  ]* L. T( h' O" g
  2114. SBC #$017 N) [- M6 x& }  p/ H# |, B
  2115. CMP <Music_Item_Cur
    4 \) p9 u. g2 J2 O6 i5 c
  2116. BNE Next_Item_Begin
    , N$ f% X* C; c- c
  2117. / W$ G, J, q$ ^1 H, }& O
  2118. LDA #$011 M0 j) [# I2 h2 R2 Z2 @1 p
  2119. STA Data_Buf5 U4 Z4 J  k+ R- |6 n" Z
  2120. Next_Item_Begin
    1 K# ?: v5 u- R
  2121. LDA <Music_Item_Cur
    1 l9 |: G; [6 k
  2122. CMP #ITEM_MAX_INDEX& y1 O" y9 \% Y8 b
  2123. BCC Next_Item_Set
    2 ~( x* K+ @/ _
  2124. LDA #$FF& h  _2 f3 m3 j
  2125. STA <Music_Item_Cur
    ; R" O" n' F+ C$ B4 ?5 m( c
  2126. Next_Item_Set' T- J. F( h1 y8 G
  2127. INC <Music_Item_Cur/ H% v! n) c) [' B# g2 Z) G
  2128. LDA <Music_Item_Cur
    ) G: y4 ^2 J; a+ t
  2129. LDA <Music_Item_Cur
    2 B1 o9 Y( K# Z
  2130. JSR Reset_Current_Music
    % Q# O& _! ^) E/ O: T! u
  2131. Next_Item_Play. |/ N' |; e# E" g; q- M6 j$ S/ ?  o- N
  2132. LDA Data_Buf
    $ f9 q4 c9 X2 t( f
  2133. BEQ Next_Item_End  g) |3 }9 ^" u. @% t8 V
  2134. JSR Show_Page_Text( o7 }( ~8 T% X3 J
  2135. Next_Item_End) i1 @' ^/ x8 z9 @* e
  2136. RTS
    ( }; N7 j) ?2 E1 i
  2137. & e" U& \5 m+ P  X
  2138. ;==================================================& j; e/ i1 n* F: b3 o- b3 f
  2139. Last_Page;上一页2 E2 v" ]# }/ X* O
  2140. RTS3 ^) a5 J( U; i/ @; \& r
  2141. 1 Q! S/ V8 K; L, \) P) ]+ }
  2142. ;==================================================
    7 Z' W+ ~0 r! a; \
  2143. Next_Page;下一页5 A! k: V8 I6 m% n. b% o: O
  2144. LDA #PAGE_MAX_INDEX
    ! ~0 o3 U- i# Q5 i+ ~8 X: |
  2145. CMP #$01
    " u3 ^" K$ j( g2 c* e
  2146. BEQ Next_Page_End5 J5 t4 m8 B7 |4 c& s# c

  2147. $ N* Y( l. U  q1 D2 }
  2148. LDA <Music_Item_Cur
    9 M. [" u! U- \3 N/ V
  2149. STA <Music_Item_Last
    6 z4 f2 [/ f" R% X6 s

  2150. 9 |# X* Q/ Q2 B" S2 @! k4 t/ W
  2151. JSR Get_Last_Page_Start_Index
    5 g% U4 Q; ~6 P& H5 C2 h2 d

  2152. + h: ?, d* M; r" G6 n9 _
  2153. LDA <Page_Last_Index
    ( l; y( m& f1 g7 L: `2 f
  2154. CMP #PAGE_MAX_INDEX  k5 D2 `* s) N6 Z) s8 u& ?2 ]+ Y
  2155. BCS Next_Page_In_End_Page
    $ g$ P: |# x7 a. N

  2156. 9 [) ^+ U! O4 f% y
  2157. Next_Page_Not_End_Page;不是在最后一页' R" z8 K9 R- ]& V
  2158. LDA <Music_Item_Cur8 r3 v# ~2 W+ G' j0 y6 C! _
  2159. CLC
    0 N8 H' z& h: M$ ]8 q6 g, f0 j
  2160. ADC #PAGE_SIZE' |) ?2 }: ^: n$ Z' y/ ^
  2161. CMP #ITEM_MAX_SIZE! N6 s' n& o1 V  q/ p
  2162. BCC Next_Page_Not_End_Page_Less4 \! ~5 O  X9 h
  2163. LDA <Music_Item_Cur3 O. s' E+ ?; g1 H8 \
  2164. SEC: b! F! U9 Y  ~' X- I& z4 }
  2165. SBC <Page_Last_Index
    ! Y6 x* X$ x9 Y% _/ G
  2166. CLC+ O8 p+ m, B7 ^( C) U% e# [! L
  2167. ADC #PAGE_MAX_INDEX
    - E( v( a7 a3 F% Q$ {
  2168. CMP #ITEM_MAX_SIZE
    7 H% \/ u/ q0 F; `. w& {- Q  _* z
  2169. BCC Next_Page_Not_End_Page_Less  M( S" V! h% n/ R7 L; |  u
  2170. LDA #ITEM_MAX_INDEX
    4 i& t0 U; k" w% D/ `
  2171. Next_Page_Not_End_Page_Less8 ~2 w, E- D5 f% L' R9 ~9 D4 z
  2172. STA <Music_Item_Cur
    ; `; C5 m- L7 s3 F3 C% T
  2173. JMP Next_Page_Reset  R8 B0 g  C7 b3 P# {

  2174. 9 U) \% K; [; r) g
  2175. Next_Page_In_End_Page;在最后一页" ~; l8 d0 T$ V9 t% U( Q, T0 L6 X
  2176. LDA <Music_Item_Cur
    + T* y: U" t# \; `& z
  2177. SEC
    0 Z3 O% e2 V# R$ c
  2178. SBC <Page_Last_Index
    5 X( s2 n8 P  T- G; S7 t0 Z
  2179. STA <Music_Item_Cur2 z3 O# S1 K0 ?, A+ y
  2180. 2 y! G: `2 R+ X" ?+ M
  2181. Next_Page_Reset
    : {' Y+ m# g$ S4 E
  2182. LDA <Music_Item_Cur
    ' [; Q# K( I" V+ \2 c4 k
  2183. JSR Reset_Current_Music4 w- G% n. Q/ Q  r
  2184. JSR Show_Page_Text- `% q: w6 `( A5 H7 ]) m
  2185. Next_Page_End. N( k* o, S1 I* S: E
  2186. RTS
    8 J; R; F0 i1 j: h& G% q

  2187. & a  x$ K% T8 m6 h% L2 ^
  2188. ;==================================================
    : }6 c/ R3 Y2 \# f- m/ F& b5 }
  2189. Disable_Text_Draw;禁用音乐条刷新
    6 t6 I; m6 r- g& o; I
  2190. LDA <Text_Disable_Flag
    % [: s* D3 R" m, E0 @# U9 N( z
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    # Y' p: G! m  I
  2192. STA <Text_Disable_Flag
    3 `8 @( u' l' ^* P
  2193. RTS) C/ o4 v3 r" U% e8 s1 o
  2194. 0 ?0 T$ d9 Y% m# y3 [
  2195. ;==================================================
      d- S( ]( G4 @$ v1 ^: |9 w
  2196. Clear_Last_Track_Name;清除上次曲目名
    : h0 N1 O4 h$ m, M9 O& H, }3 ~
  2197. LDX <Music_Item_Cur
    / G# K+ r) f9 y
  2198. LDA <Music_Cur,X  D0 m% d8 }2 C3 K8 d7 @
  2199. .IF Track_Name_Pos& O4 G  a0 Z/ H. g
  2200. JSR Clear_Track_Info3 _# K& r  U( z3 M
  2201. .ENDIF
    8 }( k! O; ~& ^9 R# P2 w! t, U1 @" E
  2202. RTS( w) F( A' T" ~5 w: [) T

  2203. 1 T4 u# a$ |& U6 C: q) K# K
  2204. ;==================================================
    - [! G( u4 Z' k6 G9 k  u% C
  2205. Reset_Current_Music;重设当前曲目
    % J5 ^) E# |6 d3 ?2 f4 }
  2206. & d5 ~: U/ T: |( _  ^+ K
  2207. ;写入当前总曲目8 T  E0 d2 s5 H3 j3 E+ ?( j
  2208. JSR Set_Sound_Total
    " p* H8 v* E0 F
  2209. LDX <Music_Item_Cur
    3 J$ e7 z0 ~9 \* j9 V8 {

  2210. . {! j  i/ D) B$ }& b* Q
  2211. LDA #$00
    / t7 Q" y  g" L5 K- k% Y8 V$ u$ h
  2212. STA <Music_Last; C1 J/ J' X" W2 M

  2213. 5 s4 x1 F5 Y4 o9 s4 u- U4 g
  2214. JSR Sound_Reset_Proc  \" \( L1 F. D/ j3 a
  2215. JSR Music_Show' j3 ^! D' m/ k" N" W
  2216. RTS% ^+ `! j8 T' p1 @5 H8 ?

  2217. 7 I% P& R5 l$ m
  2218. ;==================================================5 G+ T8 N) g! b5 C/ {
  2219. Music_Song_Stop;音乐停止4 l" U- J5 l4 t9 d
  2220. LDA #$01
    % g  L: z9 d+ s: a5 ]
  2221. STA <Music_Stop_State, m8 o* o! G( |  n. u/ u. H% Q" a
  2222. JSR Music_Bar_ReSet) e0 s; g" v6 a8 ]
  2223. JSR Time_ReSet  _4 S& L$ ~' w7 r6 |
  2224. JSR Sound_Data_Clear. d$ l$ T- |& ^$ F& Q  m, U
  2225. JSR Music_State_Show
    ( V9 Z: A9 U, e0 m1 N
  2226. RTS( p9 u6 ^2 e" b' s" p: S

  2227. % ~% V' J4 i2 A# V8 y6 J- e
  2228. ;==================================================8 l) t5 d" P( F3 N9 t7 o# h+ R
  2229. Music_Song_Play;音乐播放# U! n& f# M+ E' t% s
  2230. LDA #$005 @, W, R# W" R" J! t) \
  2231. STA <Music_Stop_State
    . \1 f$ T; V! U8 [* Q
  2232. LDX <Music_Item_Cur
    / T# }" D. E' b& g7 d
  2233. LDA <Music_Cur,X
    8 a( r% g9 {0 w
  2234. JSR Sound_Init_Proc
    ! i1 ?$ h  a7 W1 H& a! j/ @
  2235. RTS5 E" p+ b& ^, E' g

  2236. 8 u3 w0 u# f3 Q9 U  A
  2237. ;==================================================8 M) e: e& r! k9 C$ r0 j
  2238. Music_Song_Last_10;上10曲
    : m6 L$ J) N" [6 p! e* i
  2239. JSR Clear_Last_Track_Name7 Q3 P2 A. k2 I4 J( S% o' I
  2240. JSR Disable_Text_Draw+ o: Q& m2 D' w
  2241. LDX <Music_Item_Cur
    + ~2 ]3 V8 |7 T) I/ K' H  @
  2242. JSR Set_Sound_Total
    9 c8 l$ S7 q) b
  2243. LDA <Music_Cur,X  e1 W! D( P$ ]  k8 |6 x
  2244. SEC+ G/ E: }' X# V  K1 ?
  2245. SBC #10: ]; w+ |" ^+ w1 o  L: h5 s" k
  2246. BCS Music_Song_Last_10_Set/ s7 B; i1 y. u: i, e* @
  2247. LDA #$00
    8 `; p' S5 u9 `6 j' z( a
  2248. Music_Song_Last_10_Set- g1 W2 r& @" \
  2249. STA <Music_Cur,X
    : s2 z# W. R) ]& N/ `- l
  2250. JSR Sound_Reset_Proc7 N) ~% e5 `. g! @$ I& e
  2251. JSR Music_Show! u+ x' O2 }$ c$ x% r( B
  2252. Music_Song_Last_10_End6 C8 Z; u1 E- P* Q
  2253. RTS$ v9 @# f0 R. @
  2254. 8 a2 h2 x8 C/ z  @5 Q2 @
  2255. ;==================================================
    " T, s5 I4 h9 J% b+ d. |
  2256. Music_Song_Next_10;下10曲3 X, U- X4 S7 \* E& N* S% b6 ~' ^1 C
  2257. JSR Clear_Last_Track_Name
    7 u7 ?0 p+ Y/ o- H- D2 J! L, y
  2258. JSR Disable_Text_Draw
    ( O6 y  j( P+ L( S7 G! c; H
  2259. LDX <Music_Item_Cur
    5 f$ w! u: f  P  R; g! F( _
  2260. JSR Set_Sound_Total
      B  a& }( \! Q% ^
  2261. LDA <Music_Cur,X
    ; t* T: \5 ]( x" G4 ~( k
  2262. CLC
    6 K# W. A- Z' j
  2263. ADC #10+ o: Q$ Y6 D9 ?1 }1 J- W6 W$ B
  2264. CMP Music_Total
    ; v; I. ?0 B  s' C% z
  2265. BCC Music_Song_Next_10_Set
    " J) ~) W+ Z( R8 A2 V
  2266. LDA Music_Total6 u# q' C- g1 }5 v: |
  2267. Music_Song_Next_10_Set2 D7 m) j3 @% R& z; U8 _4 n
  2268. STA <Music_Cur,X2 B! o8 f, ^" G; f  w
  2269. JSR Sound_Reset_Proc
    0 Y! ^& \9 o% j; a+ G9 a
  2270. JSR Music_Show# a% X! f: O+ Y9 o
  2271. Music_Song_Next_10_End
    $ Z) Q+ l7 p0 r4 c2 l
  2272. RTS, [, o/ U  G4 a4 k5 H1 }. `9 X

  2273. ( [! o% s" ?$ Z9 X- k1 A) K5 N  x
  2274. ;==================================================
    & _3 A, k; ~6 S2 S/ f$ v1 S3 _* I6 x- z
  2275. Music_Song_Last;上一曲  s( |1 p0 U" ]& h: T- O. {
  2276. JSR Clear_Last_Track_Name5 c; K" D3 |4 w: d' N) G% x. E
  2277. JSR Disable_Text_Draw9 `1 d. }( c4 K. D5 o
  2278. LDX <Music_Item_Cur8 w( F  B/ x! y9 }6 k6 U
  2279. JSR Set_Sound_Total
    7 [1 ]6 J; |) g  p" X' }# j
  2280. LDA <Music_Cur,X
    / _& Z: A1 e  J# n& W, l3 ?
  2281. BEQ Music_Song_Last_Set
    7 z+ Q: Q+ |3 p% @* Q) H
  2282. DEC <Music_Cur,X8 }% C5 _6 h5 w7 Y
  2283. Music_Song_Last_Set
    2 w: C# t2 z4 i, `9 n) s  q
  2284. JSR Sound_Reset_Proc
    ( z6 H$ A5 Q* C$ h& J3 V' _) ]% u
  2285. JSR Music_Show" C( N) V0 a- m; b3 j6 k  E" n0 a
  2286. Music_Song_Last_End
    * ?; D( x( e/ J4 o6 W: z
  2287. RTS& W: S3 @1 j" q) e, u# ?

  2288. 6 Y& a3 L7 F3 d- ]
  2289. ;==================================================1 P9 q/ v4 }' @+ G. W* W
  2290. Music_Song_Next;下一曲
    2 w  g6 t4 f. v" u1 K$ j
  2291. JSR Clear_Last_Track_Name, \  X6 j$ O& Q1 B# F
  2292. JSR Disable_Text_Draw0 `* O( k" g; U- C; ]
  2293. LDX <Music_Item_Cur; G+ y+ \0 ^: R0 r* l9 {
  2294. JSR Set_Sound_Total
    # G1 V; G' }5 J! R5 o7 D
  2295. LDA <Music_Cur,X
    " G) ]  s8 T, c. R) I
  2296. CMP Music_Total
    3 ]9 d' N: z% F% T( s: P7 Y
  2297. BCS Music_Song_Next_Set
    $ \+ m6 p; |, Z" J
  2298. INC <Music_Cur,X' S6 v6 @; l1 I
  2299. Music_Song_Next_Set6 e# v/ y& Y: U: F3 A* k/ n% t
  2300. JSR Sound_Reset_Proc
    $ M1 T( H1 Y0 ~
  2301. JSR Music_Show1 f: l7 Y- u& L; t; w; U- B
  2302. Music_Song_Next_End8 b& W: p% }8 {4 t# E7 |
  2303. RTS3 x: b( }% {" K; [; x+ d

  2304. 2 a$ d+ B. r7 B9 o
  2305. ;==================================================
    ! Z& z$ `: Q6 t6 L7 j2 q" D  L
  2306. Change_Select_Item;改变当前选择项
    ) D$ w' e9 D, C# |  ?
  2307. ;--------------------------------------------------
    4 t6 P% M( o$ ?2 o  t
  2308. Change_Select_Stop_Play_Item;停止/播放; t. y1 e1 e# |: s: Y2 ]$ ^9 o$ X* {
  2309. LDA <Key_Once
    6 N' x3 P9 A& I! O! B, u" ^8 W
  2310. CMP #$10
    0 C, i; K3 W( ]/ i3 j
  2311. BNE Change_Select_Last_Item+ a& r: G: t& u: f
  2312. LDA <Music_Stop_State
    " E7 m' N$ h  b  _3 {* z, I3 _$ k3 s
  2313. BNE Change_Select_Play
    * \7 I, G* J9 E  q
  2314. JSR Music_Song_Stop
    4 A* d3 G1 r' N5 I
  2315. LDA <Music_Stop_State( K: b5 p5 ^( }; P1 e" b
  2316. RTS* W% @) G% ]2 [' B0 J
  2317. ( C( q6 B* f) D/ z+ S
  2318. Change_Select_Play8 _) o- [- T3 C3 m$ m3 y& M! a+ F
  2319. JSR Music_Song_Play( F3 C% s5 u" O7 @9 a& X4 n
  2320. RTS
    , s. {  H# z9 F

  2321. 4 R) L4 F! Q. r" ?+ n
  2322. ;--------------------------------------------------
      S4 r- {# h7 _  G
  2323. Change_Select_Last_Item;上一个专辑
      u6 Q, g' z3 S3 T( o, G
  2324. LDA <Text_Disable_Flag: ]1 Y* N) m! y; i; _) A
  2325. AND #TEXT_DISABLE_ITEM0 g" d1 i' a9 t& u0 V) u& O% w
  2326. BNE Change_Select_Item_End
    ! I- X* C/ b8 U  }" d: B+ Z+ K
  2327. LDA <Key_Once
    7 \* @+ D# M9 E) U3 t! h
  2328. CMP #$08
    1 L2 w; L2 v% G- P: t5 e' p8 I% r
  2329. BNE Change_Select_Next_Item& ^3 I2 W0 t7 k0 p' w8 i; @
  2330. JSR Last_Item
    " L+ F! u& `& T3 P6 G+ ]4 H
  2331. ;--------------------------------------------------
    ; W5 |5 [/ u7 N8 H8 [9 [. U3 D
  2332. Change_Select_Next_Item;下一个专辑5 N" x1 g5 P- T3 F2 D/ F
  2333. LDA <Key_Once
    2 l( C1 l" x* m. n+ e2 g5 }5 ~* a
  2334. CMP #$04
    5 w, ?( h0 u! {! F* L7 m  G1 [$ K
  2335. BNE Change_Select_Last_105 l2 c/ Z2 i4 c, y/ H
  2336. JSR Next_Item% r: ]1 b, Q( t' ^; ^2 ?( K
  2337. LDA <Music_Item_Cur
    0 Q. y1 `3 P  F* c% C$ y! l
  2338. JSR Get_Page_Start_Index
    ) O, @: h1 c6 s+ p! T1 O, y- d7 h
  2339. ;--------------------------------------------------
    / f( L. k; l% q) D  r' d% q: k9 }
  2340. Change_Select_Last_10;前10曲
    % ], r& Y" l0 V8 P6 M0 m9 r
  2341. LDA <Key_Once. }3 I' ~5 C' F- ~
  2342. CMP #$40
    . R; X: p+ A, H1 @, Z4 f6 ^/ {' J
  2343. BNE Change_Select_Next_10- {9 W& J1 X6 f6 W' k: v' r+ U
  2344. JSR Music_Song_Last_10( t) Q3 `# ?0 R$ E6 V& J& T+ p
  2345. ;--------------------------------------------------
    ' i3 a8 t2 w# }
  2346. Change_Select_Next_10;后10曲2 ^* D& I8 B" W+ y$ o7 S% I
  2347. LDA <Key_Once$ u! v7 X4 g& c4 e5 E2 y! L! n
  2348. CMP #$80$ n/ g8 }1 V9 V9 _: K0 P
  2349. BNE Change_Select_Last! n6 C: e6 R& o$ s
  2350. JSR Music_Song_Next_10
    $ [5 T- S/ j7 I7 y1 P; y
  2351. ;--------------------------------------------------
    * {. n- t! h7 O- b8 v8 }
  2352. Change_Select_Last;上一曲( u* q( i: s; o$ H. o* P
  2353. LDA <Key_Once7 _7 @. Q' d! Y( Y
  2354. CMP #$025 [4 [( l  o( C+ y5 r8 c3 J( J' V
  2355. BNE Change_Select_Next
    , ]8 E8 v* S( i6 }$ }& Z0 O5 M
  2356. JSR Music_Song_Last
    2 m- ]* K0 X& ]4 n: m% E
  2357. ;--------------------------------------------------
    , V) ]2 ]% y/ a' A
  2358. Change_Select_Next;下一曲! N4 t1 I) J7 {. c
  2359. LDA <Key_Once3 e3 E& I, @- R( w
  2360. CMP #$01
    , W6 ?% l1 F0 [7 q, }% p/ W; X
  2361. BNE Change_Page_Next9 R3 }- v7 Y! \
  2362. JSR Music_Song_Next- M! p* Q7 H) j3 x6 H
  2363. ;--------------------------------------------------3 x4 ~4 t2 d) T4 S4 J
  2364. Change_Page_Next;下一页
    * G$ S4 j9 {$ E$ h8 n
  2365. LDA <Key_Once
    0 W* W, Q9 P& d* J
  2366. CMP #$20, x% S5 `) E- [/ p# R
  2367. BNE Change_Select_Item_End
    * }- p8 N' L* y* H  G
  2368. JSR Next_Page/ r+ C  F1 s& b1 Q  _
  2369. ;--------------------------------------------------
    7 Z$ B! ]8 h  m# {0 t3 N) k. ]
  2370. Change_Select_Item_End" P. C$ T- y/ o# j
  2371. RTS
    1 ]4 F$ [( f0 g

  2372. 5 j0 H5 ]( v2 `6 I( Y/ X. \% Y* g* @2 V
  2373. ;==================================================% c0 Q2 J- V& }' {6 U. `
  2374. Show_Arrow;显示箭头光标& Q1 P: E4 D0 ]3 Q% m0 p, F
  2375. LDA <Music_Item_Cur$ n0 A' f- l% Q
  2376. JSR Get_Page_Start_Index5 T4 f. k4 q( S( E
  2377. LDA #$00
    ; K5 k: \8 F. ]( B% L8 W
  2378. STA PPU_OAM_ADDR
    + g6 T/ g# S0 @
  2379. LDA <Music_Item_Cur
    . @% l/ l: U7 R3 a0 u  N4 s3 b6 Q" G
  2380. SEC
    9 m2 d+ v  V$ t% k% g7 C& N5 U
  2381. SBC <Data_Buf
    3 A. M& c. v' e
  2382. ASL A- Z6 P2 I* C4 r5 q
  2383. ASL A8 E! Z; V. z9 l! a
  2384. ASL A
    # a$ Q- s0 J, D* K
  2385. ASL A. [$ E# a$ }9 ]9 W
  2386. CLC
    ' ?0 x8 I" [8 y, E
  2387. ADC #ARROW_Y_OFFSET$ Z8 g8 [$ ~% o
  2388. STA OAM_TEMP_ADDR + $004 D; f2 Q$ [- P5 ?; i/ J1 @% C
  2389. ;STA PPU_OAM_DATA
    2 R% [* s6 j+ o3 g, _
  2390. LDA #$1F
    ) O8 {$ [% |8 y
  2391. STA OAM_TEMP_ADDR + $01$ |1 H) L9 ^& O3 |6 }
  2392. ;STA PPU_OAM_DATA: n3 a$ `$ t+ m% ]  H
  2393. LDA #$008 W$ e7 {  }9 ]+ A- H2 Z. i/ c# d
  2394. STA OAM_TEMP_ADDR + $02
    / C0 D% f/ Q3 M: z  @% R/ [' |7 |
  2395. ;STA PPU_OAM_DATA$ O+ Y, W6 p% G* V' x! ^9 V% `8 ?
  2396. LDA #ARROW_X_OFFSET; Y+ y) f, Z& ]  T, S
  2397. STA OAM_TEMP_ADDR + $03, H$ M9 y8 z! N3 o
  2398. ;STA PPU_OAM_DATA
    ; m' F# W* M+ ^; S
  2399. RTS: ~8 A8 q$ }( O4 d

  2400. / X/ f9 m# I- d) |% i: g
  2401. ;--------------------------------------------------
    ' k% j/ ~8 x: H8 ^+ O
  2402. ;命名表数据/ j  e( h9 p2 V4 E3 i0 p! C: B
  2403. Palette_Attributes9 X$ B; a5 i8 [7 a1 m6 @7 a5 K+ M
  2404. .IF SOUND_BAR_SHOW_ENABLE+ j/ q1 p% [% @- R0 N
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55! M6 t6 H- ^# A2 h2 A% V* J1 [
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    8 U  W$ `8 m" K2 D" H
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    $ N, l+ W, l7 a6 o5 Q# C. H. g
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    ' P) O  |: T  C+ E( r
  2409. .ELSE/ ^) e$ B# d. Y/ a" u2 D8 O
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    , q* F1 u! _% i+ l
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$552 p; Q* h* y7 c6 D
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    & e  f, P; `" y
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA+ c, ~) E5 [; Z/ t
  2414. .ENDIF4 y; S& s6 K# z. j/ S$ N/ s: i/ g0 Y
  2415. 1 L3 g8 h  u# n& }) g  R
  2416. ;--------------------------------------------------
    4 U( V3 }* V9 c& @$ j3 y
  2417. ;调色板数据
    5 S* Q4 N5 k$ l* b; \6 h. M
  2418. Palette_Data; v  X; O2 c$ u2 L% v
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F2 A- C" s. A3 v2 j- k
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    $ S2 t7 S( s' e! W, Z1 c
  2421. 3 L$ z. A% h& K# Z6 ?
  2422. ;--------------------------------------------------! E7 \9 P% i$ c, c. v8 D; ]
  2423. Static_Text_Data
    $ Q& g8 n  E+ J2 [5 B1 k2 d
  2424. .WORD Static_Text_Caption_Data3 B" P9 U, `3 |3 c: A! K
  2425. .WORD Static_Text_Author_Data* }% R, m7 O. R: x) S- r$ n" R" _
  2426. .WORD Static_Text_Date_Data
    - U5 B) A8 g- q  D6 s
  2427. Static_Text_Data_End
    3 O, i) }+ H; U2 ^- ]
  2428. ) a& p7 V: y$ f% `  G. C2 Y+ f& C& y
  2429. ;--------------------------------------------------  @- k) m/ L' z
  2430. Static_Text_Pos
    , [4 p+ c" p# T( ]" e; ]
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    ' N9 c- ~! ^  k' k
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    3 ?; h0 x& {# W% ?% G# V
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos): A2 `: ]/ @: D
  2434. Static_Text_Pos_End, M  ~/ d) e5 J
  2435. 0 h* o1 D9 l9 G; X: f
  2436. ;--------------------------------------------------
    ; \* M) H# K* a6 y# f0 V  K, t( w9 e
  2437. Music_State_Stop
    ; h; `5 `# E% L+ u; V
  2438. .IF SOUND_BAR_SHOW_ENABLE
    7 \& q$ _2 Y- U9 p$ h- G
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    3 Z- Z1 Q$ X9 Z
  2440. ELSE
    ' M# {/ k9 ]- X9 ~$ s
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    , o9 h5 A  j. q6 m! k2 L4 W0 Q
  2442. .ENDIF
    , G+ l. R0 d$ ]( c# n3 U1 [
  2443. Music_State_Play- [; D9 |1 S' O$ u, ~
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    " a  o; A+ |5 d5 J0 ~; y5 u

  2445. ) _6 \# H) `4 O+ K5 b
  2446. ;--------------------------------------------------
    6 x, t; d  }+ O
  2447. Sound_Bar_Text_Data;声音类型文本
    . i+ ]) T- A+ E9 l/ }6 D
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    4 n6 ^( s8 z2 r/ f4 U5 H& \$ C1 @
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"# Z# T& c2 |' ]) h! c; j/ G7 {
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-", O2 s3 p: x3 V3 c  X3 u
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    / \  M$ }) [# v, a3 |: K; {# d+ ?, B- n
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    7 T3 B5 r9 i6 ~
  2453. & G9 Y; S: J! A  j4 y# Q$ e
  2454. .IF Track_Name_Pos
    - o. g9 X" Q+ X! |! t, F
  2455. ) h& d- R3 E/ y' Q* {4 q$ h
  2456. ;--------------------------------------------------
    & D9 D' {- X% H6 H
  2457. Track_Name_Addr_00;曲目名地址索引, }7 Y* G" m+ f6 }, R' o
  2458. .WORD Trackr_00_01; A9 A$ S- y- |) Y& j+ L2 y, U  }1 E
  2459. . a% n/ f4 o/ ?
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"2 V* ^1 B5 U2 N$ x
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"$ k* A! l- d0 L  L% V

  2462. 2 j/ i$ b3 T9 n* |* v
  2463. ;--------------------------------------------------4 c% B- O/ U* n
  2464. Track_Name_Addr_01;曲目名地址索引
    2 g  K7 S# P' U6 `9 k) j$ p
  2465. .WORD Trackr_01_016 C) @' }- X' B& h

  2466. / j- o( _- l, Z5 |8 L! Y1 U# R  z
  2467. ;==================================================
    ' Z; o- ~. H$ e5 q  l5 B5 g: k
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"1 K! m6 X1 W5 X7 R- A7 d# |5 T* i0 q
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    ( Y* D8 E& o+ \( f

  2470. 4 B! d- W& ^+ ^3 |3 O' D* A8 w: t
  2471. ;==================================================
    6 J; p. I$ K+ x- ]2 L
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引
    ' ^' s& v8 i$ O) U4 c& t& a! S& a
  2473. .WORD Track_Name_Addr_00" g( N# u, A& R* p$ b( t* y  z
  2474. .WORD Track_Name_Addr_01
    1 ~* W( b8 C* j& E+ d* W
  2475. .WORD Track_Name_Addr_019 H% }0 m- E$ y# {
  2476. 1 H# p2 H: f. X. {9 K' H
  2477. .ENDIF
    2 S1 b2 L5 U6 j3 R; g8 w

  2478. 6 S# Q4 I$ M0 f! E) H
  2479. ;--------------------------------------------------1 ^3 x+ s- P5 a0 `! j- f
  2480. Static_Text_Caption_Data;静态文本数据
    ! M1 @: S! O; @
  2481. .DB 16
    & H9 a/ m# p! _' {# W. i
  2482. .DB "FC MUSIC 12 IN 1"
    4 x/ @8 q* D/ h3 J* V5 G
  2483. Static_Text_Author_Data
    7 r' F4 ?2 _: |
  2484. .DB 252 ?4 l: ~9 Y) O) i
  2485. .DB "EXTRACTED BY FLAMECYCLONE". t+ h2 `4 D+ L5 s5 ]8 k0 Y
  2486. Static_Text_Date_Data
    $ R9 v# t' v% [* B/ H+ Z* E$ |
  2487. .DB 10
    . s1 s7 C4 i! v, w
  2488. .DB "2023.07.23"
    & n% h. ]0 ^( S; i3 f. I8 Z
  2489. 5 r5 e0 u* K# M6 C
  2490. ;==================================================
    9 `* b$ e/ |4 b% r! V+ P& {
  2491. Music_Collection_Name               ;专辑名间接索引
    3 H" B9 y4 n/ Z3 w+ ?0 L( Z6 m
  2492. .DW Music_Collection_Name_00
    9 C6 K$ g' u( L( U6 Q
  2493. .DW Music_Collection_Name_010 A6 K* i- G3 a, m) ]0 H& b
  2494. .DW Music_Collection_Name_02
    " P  v3 z! F" |6 h( H- E) S& F/ E
  2495. .DW Music_Collection_Name_03
    ! E* }( b0 ?& ]- R1 J% k
  2496. .DW Music_Collection_Name_043 Z( p" x, T( a6 w) _$ F, h, ~
  2497. .DW Music_Collection_Name_05
    $ N' {! ?" k2 e) \0 `9 ]9 E
  2498. .DW Music_Collection_Name_068 r4 t1 `2 Q* x: P0 t# l) x' k
  2499. .DW Music_Collection_Name_07
    # `/ H/ {8 {8 U; z- C! ]
  2500. .DW Music_Collection_Name_08
    , ?6 @6 i8 X- ^0 j
  2501. .DW Music_Collection_Name_09
    % d5 e# y1 k: v% B% n" y' V' w- T
  2502. .DW Music_Collection_Name_10% A8 Z# J  M& A' I8 g3 k- b
  2503. .DW Music_Collection_Name_11# h9 L& ]3 A& T, a- S
  2504. 7 N0 K9 a( ~5 G( E( F9 o
  2505. ;==================================================
    5 R1 |( [- X1 Z/ F( P, F
  2506. Music_Collection_Name_00            ;专辑名文本数据! e2 [; T/ c' `( ]" o
  2507. .DB 11,"1.RAF WORLD"
    5 h: o6 P7 s# \& Z* |
  2508. Music_Collection_Name_01
    7 \. s/ E- Q$ \5 `/ W7 o/ y
  2509. .DB 15,"2.FINAL MISSION"& f8 W9 g1 ~' J! d+ P
  2510. Music_Collection_Name_02! c6 m2 g  Z; h; o- m, L( }
  2511. .DB 06,"3.KAGE"7 N2 ?# Y  S/ ?. X6 m' V* C6 d
  2512. Music_Collection_Name_035 m2 W! l9 q  l" @4 E
  2513. .DB 16,"4.DOUBLE DRAGON"
    - k6 X4 j! [' M( f/ w. T& y
  2514. Music_Collection_Name_041 \; @# I3 v( J& ]* ?
  2515. .DB 17,"5.DOUBLE DRAGON 2"- }% |# D% `7 D: g  }
  2516. Music_Collection_Name_05* ~+ m9 s6 v9 P& g2 u$ t, n
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    9 y1 m' a7 x. i3 B
  2518. Music_Collection_Name_06& c2 [9 C# a; Y6 [, X
  2519. .DB 09,"7.ROCKMAN"
    + [& d+ T# Y# f0 [6 n7 A, T4 s
  2520. Music_Collection_Name_075 g3 V, J. C& n9 S# u/ ~! S6 @  _
  2521. .DB 12,"8.ROCKMAN 2"
    : W/ h) ~8 Q' E3 b- L: @7 Z
  2522. Music_Collection_Name_086 {$ V  B) O" }' N' B
  2523. .DB 12,"9.ROCKMAN 3"6 H$ `1 k, Y1 a3 M3 Y
  2524. Music_Collection_Name_09
    / U9 B0 |7 h$ D+ ?( L- j+ l
  2525. .DB 12,"10.ROCKMAN 4"
    , k( e. G9 R. z% m1 @
  2526. Music_Collection_Name_10
    : e% c" u  u, X. A
  2527. .DB 12,"11.ROCKMAN 5"
    6 C) s, ]' e" P+ b# N2 c- E  @8 r
  2528. Music_Collection_Name_116 L1 n  [( R5 X% j; x% }
  2529. .DB 12,"12.ROCKMAN 6"
    2 y7 d/ _( |# t3 j
  2530. 3 }8 r) Y/ W' b$ ^( E- W6 M
  2531. ;==================================================# o' n1 h6 S* X7 T' [3 R: ?7 J
  2532. Track_Name_Addr_Flag                ;显示曲目名标记, Y5 W# K8 @# Y* ~$ p+ |! \+ U$ M
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0$ y$ g) c; h9 d" @5 K0 a+ v- X
  2534. 6 ?9 _& Z/ v  _8 Q6 c/ n' h9 T
  2535. ;==================================================/ a2 [- k1 l$ }
  2536. Item_Pos_Data                         ;光标箭头位置
    0 x/ }" i2 x6 l% C) B. y& [; S
  2537. .WORD ITEM_SHOW_POS; L, M' k8 R2 q: b! t% G: e, p2 \
  2538. .WORD ITEM_SHOW_POS + $0040/ e* U% j! N/ u5 B8 M
  2539. .WORD ITEM_SHOW_POS + $0080
    4 m* B* X, g! I
  2540. .WORD ITEM_SHOW_POS + $00C0: P* d- C) [; C( R5 A) ?, V- Z5 h
  2541. .WORD ITEM_SHOW_POS + $0100
    % B2 B4 d: ]- D
  2542. .WORD ITEM_SHOW_POS + $0140
    ) L/ V9 a/ w  @3 U" ~% Q& J- @$ N2 s
  2543. 6 m- S5 s7 @7 o/ a- l8 \' I
  2544. ;==================================================2 ^( I9 K0 m3 w
  2545. Sound_Init_Port                 ;音乐初始化入口地址0 N! t. E9 m$ P' V* j5 k0 G$ i
  2546. .DW $BFC8
    9 F/ D7 L- y0 v  T% d8 _2 K
  2547. .DW $D7F0
    - ^) D  k; U7 _# j& q/ C3 E/ Y1 G
  2548. .DW $9FC04 p8 x" ]- y( ^! B0 Y! B
  2549. .DW $BF70
    ( ]  F' n8 M2 Q) |6 |
  2550. .DW $8003' n" Z5 D) J! U( |
  2551. .DW $BF30
    $ P' }7 v! |( j; J7 l) p4 _
  2552. .DW $9003
    + j, h& C4 }+ A: J# O  E
  2553. .DW $8003
    * r/ G1 T; L$ r% b( e( _: T! E
  2554. .DW $8003
    ' Y$ o. C$ ?  C
  2555. .DW $8003  f: \( l% P' N( J4 f8 L
  2556. .DW $8003
    & d) X1 B5 T5 U- C0 ^
  2557. .DW $8003, U* w' S3 n- q  V8 F$ ^# z$ [

  2558. . w  d: F7 Q& Q/ `3 e; j8 X- f2 G
  2559. ;==================================================2 g! ^& \* b) g- v/ O6 f0 c8 f# `
  2560. Sound_Play_Port                   ;音乐播放入口地址, w1 q1 \/ T' r  S
  2561. .DW $8000
    $ k1 K( D0 `1 T) V3 p
  2562. .DW $8001) j+ a: `  q/ h% T4 R
  2563. .DW $A0009 a$ S& t+ y5 I' g
  2564. .DW $8003
    ! h8 g$ q: L0 d" x" Z" j
  2565. .DW $8000! I5 D5 K/ s% R4 Z- w5 p% H3 ?
  2566. .DW $8003
    + O, r" c* r8 d# U
  2567. .DW $9000- A6 c* d9 E4 l3 Z) s9 N. C- k
  2568. .DW $8000
    6 v  d1 q; ^4 O8 O, x
  2569. .DW $8000
    8 X' ]- W4 {6 b  I# k  X  ?/ r
  2570. .DW $8000
    , f3 X5 g" e) a% `) r. I$ O2 c
  2571. .DW $8000" o$ x" O  ^5 r$ w) l6 e
  2572. .DW $8000
    " c" d) i* L" v+ G

  2573. + y- ^; f0 X/ k  z; Y1 `: A
  2574. ;==================================================8 l8 b2 ^8 m6 a
  2575. Sound_Reset_Port                  ;音乐重置入口地址; o. i+ U  }# O! G# c9 l
  2576. .DW $0000
    ( Z: z3 j; M6 S# Z8 y0 l! F1 V) W
  2577. .DW $0000
    & _. h7 o! j3 d; P
  2578. .DW $0000
    8 L% y& `: h$ F4 c
  2579. .DW $0000( T) C6 i4 R9 G" [. _! N2 W3 H
  2580. .DW $0000
    + U3 z, O  E3 f& j3 y, F7 ~: z+ ^- q
  2581. .DW $0000% Q8 E  x1 V7 [
  2582. .DW $0000
    1 s: W  _$ u) h0 h5 _: t
  2583. .DW $00002 Z1 b0 x1 v4 m
  2584. .DW $00008 m' b3 e) a- @6 p
  2585. .DW $0000; g" z) @/ T6 b( i8 h
  2586. .DW $0000% E& h8 {/ o4 e2 a% C. G
  2587. .DW $0000
    1 ]7 O' K( ~9 w+ ~6 h4 F1 ^. E

  2588. . m/ k% P7 |: _1 a
  2589. ;==================================================
    9 b+ B) S9 G3 X; d3 _
  2590. Sound_Total_Port                          ;曲目总数5 D/ |/ R0 w; ]
  2591. .DB 38
    2 P; F/ ~' A! z# c' y7 ?# v
  2592. .DB 336 C8 I/ X( ]" v4 o5 Q) j
  2593. .DB 49
    8 Z( T' y, \& y7 l' O% x% c
  2594. .DB 416 m& q: i3 t3 D1 S) B+ z
  2595. .DB 83. f. o. i: c. F& V3 u# W; _" a
  2596. .DB 702 n" P, m# s% q6 ~
  2597. .DB 50
    / i0 ~0 m& l9 r4 M
  2598. .DB 670 H& A. L( a; c# }& m) N2 \
  2599. .DB 574 h+ ]" n6 H) U( n. Q
  2600. .DB 71$ ?, V8 T. G" j
  2601. .DB 76
    9 g  b4 q- z/ n8 T" `
  2602. .DB 102
    # ^% m3 L1 b  u: M# Q* ^- j& V

  2603. ! |. W0 l9 @% w, h6 f+ T8 P3 a
  2604. ;==================================================" ^" Z8 ^4 b) C) u1 \; j3 e
  2605. Sound_Start_Port                      ;起始播放曲目
    ) a8 S$ v" c! {- k8 O5 s* e- r8 z
  2606. .DB 00! ^7 t! R4 J$ Z
  2607. .DB 002 |# O& |/ ]: k4 B: \2 B
  2608. .DB 00
    9 E7 f9 X% C: B0 l8 ~* Z: Y
  2609. .DB 00
    # o) z' ]$ b" m( h5 y
  2610. .DB 009 G% V0 e, C9 N7 m" o( x
  2611. .DB 00
    * F8 E* j# `# p+ R# e  j- r: i
  2612. .DB 00
    1 j; J, r5 q9 {* Z& m" i* @
  2613. .DB 00
    9 z9 ?1 c* V" m
  2614. .DB 00
    & C2 p8 e5 o. v  H( A, L, w# l! v$ R
  2615. .DB 00( X: t5 b2 w6 u: Q  S
  2616. .DB 00
    ' W% o  l- X/ A) x/ n& y; M* Y, O
  2617. .DB 00
    6 C$ ?& k( _2 |
  2618. : {8 n- b. W' K9 g
  2619. ;==================================================' c: `# p4 g7 Z' P) ?: J
  2620. Sound_Bank_8000                      ;专辑bank_8000
    : z$ Z; h; |! O7 R
  2621. .DB $10
    / p' m2 ~( n/ n" [8 ^- N$ z* P1 }
  2622. .DB $12" _+ `5 P4 e3 p$ w
  2623. .DB $14" l4 O: X) F! u: ^0 _( ~/ _: ^
  2624. .DB $16
    & ~& M, Y: f7 i
  2625. .DB $18: a* @1 G7 f0 ~5 _' [
  2626. .DB $1A% l7 W' F2 Q: B# K' n" f2 K8 d
  2627. " A( X$ x4 q5 M9 {2 G8 i5 Q  V. ?
  2628. .DB $007 w. U/ [2 }/ v# W. H6 d
  2629. .DB $02
    ! ]/ e/ d; D5 O
  2630. .DB $0D( t2 L+ w3 b4 Q3 n& ^) h
  2631. .DB $04" T" e$ n, j4 n% T* A/ \$ t
  2632. .DB $07
    5 X) c. y! ]4 W* I
  2633. .DB $0A
      T. M8 U" p3 }8 E, V6 c
  2634.   Q/ }4 N# _3 I

  2635. 4 l* o# _2 M& \7 @/ I7 {  T; X
  2636. ;==================================================
    & ]% I" r. d2 A# ~* a
  2637. Sound_Bank_A000                      ;专辑bank_A000" t3 G2 I) J+ k. q3 m, l6 i+ M
  2638. .DB $11& P! C: y+ U' a3 Z
  2639. .DB $13
    $ P& \( |* Y9 H0 k2 ]1 g
  2640. .DB $15
    / w$ T' @8 Z! f$ W7 t
  2641. .DB $17; K% t2 G0 L2 o+ l' c
  2642. .DB $19  m! D% ^( v8 u) c
  2643. .DB $1B8 q6 B3 d$ M4 v) l

  2644. & [+ R: s+ q) o5 I- a
  2645. .DB $01
    . _) Z6 G) X! P3 G$ i# p, ~' O+ q
  2646. .DB $03
    $ Q( E4 H4 X+ A# @5 M
  2647. .DB $0E
    . T% M& T' |0 u" T
  2648. .DB $050 i% E0 `7 x: ~, f' r0 T' I2 g
  2649. .DB $08
    9 v' h: h. ~; ^& W* T6 S0 b
  2650. .DB $0B
    9 l3 n4 @! b: ]

  2651. / C! @, I1 @1 @3 z
  2652. % L+ ~: j' p* c$ D! g3 }: P& ^3 C
  2653. ;==================================================
    6 @& d1 k& u8 R
  2654. .BANK RESET_BANK & BANK_DATA_MASK1 Z/ R+ p. v- U4 q' A; @
  2655. .ORG RESET_ADDR# b+ M% F$ D* \" E) p( i, m

  2656. 3 k* c5 ^# [3 U
  2657. ;==================================================
    7 O1 J/ j+ F" H3 E
  2658. Switch_Bank_8000;切换bank到8000-9FFF/ b8 {, x% }3 x2 I
  2659. PHA, W( c/ \6 f& D; n7 y2 y& f
  2660. LDA #$06
    . `3 e3 Q3 ?0 V# Q3 u/ Z7 l
  2661. STA MMC3_BANK_CTRL4 L2 d+ w% G) F
  2662. PLA
    ' F  R3 _& A2 B9 \
  2663. STA MMC3_BANK_DATA' q/ Q: Q& V' b& K+ C) e! q2 l$ l
  2664. RTS
    , B9 h6 B% m5 Z) G* \

  2665. 0 u7 q0 x' s7 n
  2666. ;==================================================
    / R( B/ x4 b3 e& g1 I" M( A' @
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    # E! f8 V& Z( L; }; Y
  2668. PHA$ j8 B& y2 Z/ B( L: q5 S' G
  2669. LDA #$07
    1 r9 b$ J) h3 U/ M! n: ?$ A2 W
  2670. STA MMC3_BANK_CTRL1 j% N4 B$ W' l" a3 h& {# b
  2671. PLA
    8 N: b7 n5 z. o
  2672. STA MMC3_BANK_DATA( v3 R* [4 M8 o- c
  2673. RTS
    0 A- g8 ^- J! w7 @( `

  2674. 7 F' N& p. k. q7 b: Y, [5 |) Q
  2675. ;==================================================7 Q5 ]4 C% k* |9 E  m+ v
  2676. Switch_Main_Bank;切到主程序bank) x' @2 D0 u$ b* [. I! ]: `% [3 D
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK* n' V* n/ q" a' j2 L* G
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    1 p4 a# h/ T" E" v& L( L' {
  2679. RTS& ]" o  `! }0 D# \9 N

  2680. " D4 C, D) y2 T
  2681. ;==================================================
    # {3 F0 G+ c) b  Q) z* K1 C% k
  2682. Sound_Reset;音乐重设(如果有的话)
    7 ~  z& x- Y* a# D9 _2 N# S
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    % @$ @0 e0 L7 X5 n1 v; k" X, g9 e
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    ' d! l; B+ ~3 O  y
  2685. JSR Switch_Main_Bank   ;切回主程序
    ' n6 }7 N  d6 m
  2686. RTS
    ) M; o5 |3 y# O( G

  2687. 1 U" j0 o1 ]: {# ~9 M
  2688. ;==================================================) m* a5 [3 ^$ I4 ~% `  x
  2689. Switch_Music_Bank;切换音乐bank
    / t  q' z" t8 Q, i4 M
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    : o' H/ Z2 n7 k2 r$ F) Q: ^9 Q$ P
  2691. LDA <Music_Bank_8000! y7 j; J. i* Z
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank" |# Z# x7 L6 f. C* D+ A) ?2 P" Y
  2693. LDA <Music_Bank_A000
    , j; e1 l+ p6 Y; x) [
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank' K. ]2 @, \( N, i: K& {. G
  2695. RTS
    . e2 a3 L8 [. x/ M( j1 B* H

  2696. 2 X# d- h3 _2 O
  2697. ;==================================================
    - Y8 J5 C* _* X% j, m% d- w, i
  2698. Sound_Init;音乐初始化- f) Y5 }# z' d; K7 S4 w0 M
  2699. PHA
    , H& K# n7 L7 G4 h
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    . F9 n. Y) m0 O8 K9 I4 b5 r3 {
  2701. PLA- g, y) ]6 _; Y! ^! s% w
  2702. JSR JSR_Addr_Op        ;执行音乐初始化
    1 k# T$ Y3 F! O8 Q7 P' U
  2703. JSR Switch_Main_Bank   ;切回主程序
    / N* ?! S- q( Z. w0 c) r
  2704. RTS
    , G4 J" ]) j: T1 l+ c7 |4 a
  2705. + J! q" A7 r  s: ?0 t0 m
  2706. ;==================================================
    $ M) ^; x* v" j( j- d" `8 ~
  2707. Sound_Play;音乐播放( o8 N! l" _7 e( \
  2708. JSR Switch_Music_Bank  ;切换到音乐bank% f; [/ O- v, @% n" B* s
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    : P& e1 h: [' a% v: b
  2710. JSR Switch_Main_Bank   ;切回主程序2 v# m2 Y+ q" x3 V
  2711. RTS9 n4 x( _3 h' I3 a7 t5 ]; m5 y5 ?
  2712. $ S& T' D5 u/ I5 p; {% V5 g
  2713. ;==================================================
    1 t7 e8 U+ h7 A0 a, G/ N. o
  2714. MainLoop;死循环) {/ L" T) X1 A& B& K$ n
  2715. JMP MainLoop
    ) c4 e2 W8 A+ f: ]) q( m/ X6 Q

  2716. ; D' D; K" T4 K4 q/ g  m$ Z, ]
  2717. IRQ_SUBPROCESS_JMP = 09 A8 N+ ?. \. x+ P( l; W/ P& c
  2718. 1 ?  z" R: ^- S$ m0 W2 ~
  2719. .IF IRQ_SUBPROCESS_JMP
    . d# e- R$ R. q3 E
  2720. ;==================================================
    $ `4 N) `9 z( m' b
  2721. IRQ_Process_0;IRQ处理过程0* Q7 C' e1 _. a" M* k
  2722. 7 d( l2 d$ g# f' |6 q  T
  2723. ;15条扫描线后触发IRQ
    8 J' S3 Z  @6 y2 T
  2724. LDA #15
    8 |* k/ Q4 `0 h7 h/ u& b
  2725. STA MMC3_IRQ_LATCH
    % O' D" k: V- Q1 y

  2726.   f0 I0 Z: ]2 v* J
  2727. ;设置屏幕滚动: R% m3 ^6 Q$ j5 o2 S1 F' Z
  2728. LDA <Scroll_H1 F( j+ H1 O, N( _: k' C: g- }
  2729. STA PPU_SCROLL
    % Q) Q" W' y$ _& J9 U0 A" V
  2730. STA PPU_SCROLL
    ; t  U8 H/ W1 g$ G- i( z3 F  ~

  2731. / l# H9 F7 K  l* h* W
  2732. IRQ_Process_0_End
    - e8 D7 |5 q- [2 L7 M& M, K
  2733. INC <IRQ_Process_Index
    ; a) Y  {& ]/ D1 P% X( D# U
  2734. JMP IrqProgramEnd2 k! k# |1 n9 S4 l/ A; H6 H
  2735. 7 i9 G$ N0 l* c. H8 V
  2736. ;==================================================
    + X) x* |; i; j9 m. A/ \
  2737. IRQ_Process_1;IRQ处理过程1
    ; L6 C  K9 ]* l" L7 c9 Y7 D
  2738. + ]! O9 n' U; {+ o9 `" v
  2739. LDA #55
    & I6 @8 M) L: Z/ H6 X) X
  2740. STA MMC3_IRQ_LATCH
    " U$ E/ e, A; c3 I
  2741. ' y, Y8 ~9 ^' R" [; j8 H9 D' Y
  2742. ;设置屏幕滚动
    . z) y& V& d0 [
  2743. LDA #$00
    0 z6 r2 U9 m: x' S% ^1 W* V( U
  2744. STA PPU_SCROLL
    ( M7 ^5 z8 _& @; @" U: c
  2745. STA PPU_SCROLL
    ( L- p! s8 X; i& h- H
  2746. - J  {9 h- W- N* H, x7 A! d& l
  2747. INC <IRQ_Process_Index9 z! A3 W- W: ?1 N; l
  2748. JMP IrqProgramEnd
      H$ N. i9 }, {5 F& o: ], H

  2749. : [: O8 r6 ?% `0 a* E
  2750. ;==================================================/ Y9 K, s* }( A; Z& n  @: ^
  2751. IRQ_Process_2;IRQ处理过程2
    8 f* g. X: L+ P+ u
  2752. ; H; Q" M. ?( z2 i; x1 y- e+ E
  2753. LDA #15
    ( N3 _. ?( f$ }5 [
  2754. STA MMC3_IRQ_LATCH1 H! ^  W1 q/ k2 {8 q1 n
  2755.   i! F5 M3 D2 g* f1 ]8 Y+ _
  2756. ;设置屏幕滚动
    ) A% x8 E/ n: ]
  2757. LDA #$00
    : d9 x8 Q) n0 Y
  2758. SEC2 g8 Z# p" X: ]8 v8 P  {
  2759. SBC <Scroll_H4 F+ _3 t% A/ a
  2760. STA PPU_SCROLL0 K( R, \8 }2 G7 x- n( C8 l+ ~
  2761. STA PPU_SCROLL
      X- z; S  f. y( y) q3 v1 M/ p
  2762. ; A/ L5 [; b- w+ w" b- I
  2763. INC <IRQ_Process_Index4 W1 H/ z6 r' d' B, u/ ?
  2764. JMP IrqProgramEnd$ N- {7 w7 W- O% Y; I& {
  2765. . t& g& T9 _2 C
  2766. ;==================================================
    / n4 I* m  \. U- _
  2767. IRQ_Process_3;IRQ处理过程3. Z+ W2 m& H& b+ k8 B

  2768. % J, @6 {" B" }  w% U# W: x5 E
  2769. ;设置屏幕滚动: S1 ]' W+ q- g
  2770. LDA <Scroll_H
    ( }2 n9 U: c4 w) S) d1 w, }6 K) g
  2771. STA PPU_SCROLL1 _/ E4 T7 r3 ]& S
  2772. STA PPU_SCROLL
    $ w+ P) f: F$ ^7 C

  2773. # d4 a- @. G  a, S: a
  2774. ;禁用IRQ' l, l0 }3 v3 I, |& |) w
  2775. STA MMC3_IRQ_DISABLE& ?% Y0 t5 U1 Q8 U
  2776. JMP IrqProgramEnd3 p8 f: i) E) [% @( g# k
  2777. 8 ]; y7 }$ g4 D, A- Q' f; g* A
  2778. IrqProcessAddr
    / {) x; C+ [; O2 g8 m3 H: A
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3) X2 a. T% j! G

  2780. 7 h# Z5 w: i6 ]1 m% y
  2781. .ENDIF
    7 v! q6 N6 W+ b

  2782. # _/ e, E* E; ?
  2783. ;==================================================  A/ O2 k  r9 e. a+ a2 c% v- L
  2784. ;IRQ滚动模式常量
    6 F8 x, v, U& m5 w
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    3 [" i4 ~. L: W. H* f3 h1 b# E
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动$ D$ L+ U& ?& R! F3 s1 E5 F
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动" d' `$ d& z: y, H0 s
  2788. 0 [( j7 \. [# M1 t: S4 H
  2789. ;IRQ扫描线数据
    & v  S* H) ^5 l0 ^4 I
  2790. IRQ_Scanline_Data& I! r  O5 K3 p0 G! T
  2791. .DB 8% ~, A+ b2 V, t" v6 N
  2792. .DB 54
    9 r. t0 E) \8 k& S
  2793. .DB 8
    ( ?4 |$ P" o8 x" Q# |* k
  2794. .DB 00 ;关闭IRQ
    " j( K$ b% x6 m7 q% S

  2795. : J; `; F: X. [7 u/ v! r4 w# n
  2796. ;IRQ滚动控制模式
    ' [- H! R% s4 z( {
  2797. IRQ_Scanline_Mode( g' w+ ^! B& g- T$ N
  2798. .DB IRQ_SCROLL_MODE_ZERO6 X1 b2 D4 W: f, r6 `0 r$ I
  2799. .DB IRQ_SCROLL_MODE_ZERO# Y( C! e8 B' \% W
  2800. .DB IRQ_SCROLL_MODE_RIGHT
    8 x- ?+ [3 O' ~$ n; E$ J
  2801. .DB IRQ_SCROLL_MODE_LEFT
    5 @: P# p# H4 e$ j7 I0 D" Y. V

  2802. / q4 r7 g  Q% v" m
  2803. ;==================================================/ ~( r9 G: ]  P0 S$ ^4 M. Q
  2804. ;IRQ处理: X* e- ~' B9 _3 M" \7 P( n9 J; X: N
  2805. IRQ_Process) x8 u  i( G* \4 @3 Q/ G
  2806. LDX <IRQ_Process_Index
    - ]# G" T0 E8 }
  2807. LDA IRQ_Scanline_Data,X
    ) e5 c* y7 b  j) N9 N& e. c1 g
  2808. BNE IRQ_Process_Latch
    & r5 l* U. R% C: ?# D1 i
  2809. IRQ_Process_Disable;禁用IRQ
    9 O. Z# \+ v8 M; L9 H' R
  2810. STA MMC3_IRQ_DISABLE. @" e# h( b- D1 B
  2811. STA IRQ_Process_Index
    9 T9 [  [( s4 B
  2812. BEQ IRQ_Process_Scroll
    + U: k- z6 x) W+ P' h& Q* {& j/ ]
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线' s1 `- B7 C- n+ P+ G
  2814. STA MMC3_IRQ_LATCH
    6 a. F" @0 F7 W
  2815. INC <IRQ_Process_Index& U1 |- z2 ~. q% J* K, e8 B% N
  2816. IRQ_Process_Scroll;IRQ滚动控制
    / E5 P3 i- w7 Z  k, r4 S
  2817. LDA IRQ_Scanline_Mode,X
    5 L+ O5 Y! B2 P: A2 g8 \
  2818. CMP #IRQ_SCROLL_MODE_LEFT! r) I' Z" B, k. D; [
  2819. BEQ IRQ_Process_Scroll_Left
    4 h6 E3 ?% q9 H% D7 Y; {
  2820. CMP #IRQ_SCROLL_MODE_RIGHT
    6 i5 Q+ q$ b7 D8 E+ K6 F
  2821. BEQ IRQ_Process_Scroll_Right
    - A& W; t" s' M/ `# S  J2 a+ j
  2822. IRQ_Process_Scroll_Zero;不滚动$ E( `! |( Y. N2 E
  2823. LDA #$00# Z* X5 ]% [" D5 W8 C
  2824. STA PPU_SCROLL4 O: d0 F+ e* `0 O% [
  2825. STA PPU_SCROLL% P# K, W' V% k+ ^5 E
  2826. RTS
    2 q9 Q/ ^& L; j6 z
  2827. IRQ_Process_Scroll_Left;向左滚动
    : Z( G/ }1 P9 B
  2828. LDA <Scroll_H
    , u( h8 u+ X8 t" o4 v
  2829. STA PPU_SCROLL- _8 a0 t; A+ U3 K5 F
  2830. STA PPU_SCROLL
    2 L+ K3 V. b5 M
  2831. RTS& S+ t8 ?/ x4 |" d' y; _% {. J2 b
  2832. IRQ_Process_Scroll_Right;向右滚动7 a  O: M1 ~" s. G' G
  2833. LDA #$00- T4 N9 V4 `  E8 h# Q( u7 P
  2834. SEC
    7 Y9 V4 F! F% G# I
  2835. SBC <Scroll_H
    9 h$ g/ G# f# t
  2836. STA PPU_SCROLL, V- l, c# ~6 S2 A
  2837. STA PPU_SCROLL
    ; u/ Q/ A- y8 M- `" V# L; u! b
  2838. RTS
    ! e7 T  w, N, v
  2839. # y1 Y1 F9 c$ V* ^0 F
  2840. ;==================================================
    7 y9 x; G1 B: O- j" Y& R% }- ]$ S- V
  2841. NmiProgram;Nmi中断处理# K9 R3 I; A0 B$ C6 i3 ]! R
  2842. PHA8 p. o# x2 |+ T- u: K/ B/ F
  2843. TXA
    % ]' {- k- o' F
  2844. PHA) J& Q$ s2 G+ l: C7 B4 u1 \+ X
  2845. TYA3 }% K" o& i+ Q0 G
  2846. PHA
    # L& ?( L" b+ T3 u, M0 V9 G
  2847. " q. v& u' i& g/ P: p
  2848. ;读取清除Vblank标志, 防止重复进入
    2 c/ Z5 Q9 q5 W' e' k% o3 J
  2849. BIT PPU_STATUS: j/ M3 V% g# X! e1 c7 o1 U

  2850. 9 W- L$ V3 d% x$ s
  2851. ;切换主程序bank  q& d7 u/ ]4 P% t
  2852. JSR Switch_Main_Bank
    ) D+ ~0 \0 j' C. m
  2853. 2 h5 D8 r; m7 T1 H3 B. {
  2854. ;Nmi处理; ?/ Y! k8 v" J5 B5 Z
  2855. JSR NmiProcess
    # m1 x# m/ l% w3 x  [( B/ D( V9 A
  2856. $ z3 x3 q( ^, o/ l) u0 |1 y
  2857. Nmi_Proc_End
    8 ?! E- \' K' F: e+ R; s0 R; X! v
  2858. PLA4 y$ Y$ x# L: b5 o
  2859. TAY
    9 D: Y( C0 h+ Q! B4 ~1 i
  2860. PLA5 \& d7 V* M" K0 W+ D8 s
  2861. TAX
    - K& @4 z1 a! c( |2 w# b6 J. m
  2862. PLA
    - @8 }. A4 k1 G6 N# y' Y
  2863. RTI3 g; j0 Q7 h, F; V7 ~$ n- W
  2864. ! l: q. q9 _8 `& G2 d
  2865. ;==================================================
    * m) J: r  v5 m' |9 i/ Y" j$ |
  2866. ResetProgram;重置中断处理& h& ]( s8 j9 G, f2 X: }( }! g
  2867. SEI
    # K3 B5 ^6 H) n9 p" C' o; O
  2868. CLD
    . r6 ^  n. [/ I* q, s) y
  2869. LDA #$00, _' o! @2 V/ H4 T7 v
  2870. STA PPU_CTRL' \% f% i6 T& Q! o% \2 n9 E
  2871. STA PPU_MASK( L& y# @, E1 J
  2872. # _0 X" b. z+ N8 F- {0 ^9 B
  2873. ;切换主程序bank. e- F; t2 r: s" s
  2874. JSR Switch_Main_Bank
    . {  g8 r: }$ s7 O5 Z6 H% x

  2875. - x9 Y6 U, q6 R5 l2 I, @
  2876. ;程序处理开始0 y7 \4 A3 y( T# o4 v
  2877. JMP ProgramBegin
    * k  X8 `* `0 B) b1 y' h5 e

  2878. 8 n: C! g/ o9 I% t% k# M& U, f
  2879. ;==================================================
    4 H( {$ f, h" Q1 H& Z$ e
  2880. IrqProgram;Irq中断处理
    - g/ N5 r" W1 y5 `, t
  2881. PHA- J- c- z; r* S7 ]
  2882. TXA# C7 V7 B, m$ I3 Y" x  J
  2883. PHA
    / k7 A) A; N  z/ @: |
  2884. TYA2 L( C# D1 ?, y! P7 `; H% P
  2885. PHA
    ) K; e5 i8 w5 n! z
  2886. " f7 t2 x6 U$ X# H7 \; C
  2887. ;关闭IRQ7 G$ R& a% M% c
  2888. STA MMC3_IRQ_DISABLE% b( k3 [1 S3 _8 X
  2889. 5 s- f. ^" x& u% t9 u& f
  2890. ;允许下个IRQ触发
    # F3 z7 q% h( N+ V7 ^* r( r
  2891. STA MMC3_IRQ_ENABLE
    3 B6 n# G) a, w$ ?# u" P
  2892. % k; }- u" P8 B. k
  2893. .IF IRQ_SUBPROCESS_JMP
    6 ~  @7 U5 t3 p/ @) Y9 @1 W

  2894. # T: U5 R# \$ X$ O. z: ^
  2895. ;执行IRQ过程5 b  W- c0 N6 \" O  u
  2896. LDA <Data_L8 R. H) ^% c# [* ?' V/ `3 b( E
  2897. PHA; B7 U/ ?$ ~7 }* n+ D) g, ]  ^) m' G
  2898. LDA <Data_H4 P- N3 Z5 t4 O
  2899. PHA
    ( n& T( K% p. Y# w
  2900. LDA <IRQ_Process_Index
    $ H% E1 z4 ]- q
  2901. ASL A9 M3 i* m+ j8 _3 s* Y! {) |2 [8 y
  2902. TAY
    - n$ D2 h7 R  t& W0 Y
  2903. LDA IrqProcessAddr,Y
    " Y; g! w" i3 I4 t! M3 X$ q
  2904. STA <Data_L! J+ q% ~& h2 J
  2905. INY! X$ l; t0 Y4 |( {( C
  2906. LDA IrqProcessAddr,Y, ?# H" W6 F/ ?7 G; W' @; r' ]# T) Y
  2907. STA <Data_H' b8 v- j+ ^1 d4 L! p( Y
  2908. JMP [Data_L]( {! w' R6 J- v- B
  2909. - W/ v7 f: w" n$ V- G
  2910. .ELSE2 l4 `/ f5 f& ~+ S; z! x2 w  [
  2911. ( x6 P# ]1 R# ]% p0 G7 B  l
  2912. JSR IRQ_Process
    8 L$ p5 y: t8 H  S1 h' k

  2913. # m4 P; }0 e- A( B+ c& n( u3 C
  2914. .ENDIF
    6 g: S6 s# D! V; U

  2915. , V* k% t! A3 J) j2 W1 B; w
  2916. IrqProgramEnd0 _$ w& L. ?4 x4 @
  2917. .IF IRQ_SUBPROCESS_JMP
    ! d: {- i' e: j* d
  2918. PLA
    - h( |9 g! }3 o0 ]8 t
  2919. STA <Data_H9 l4 f$ Q  @4 n& N$ ?; G
  2920. PLA
    ( q' ^; s  r, K. r. x$ X" L" N
  2921. STA <Data_L
    ; ^7 c+ ~0 m+ i) s( d% x, g
  2922. .ENDIF
    & n% K9 ~2 l' B/ S7 L9 s+ [1 d
  2923. PLA, r( Y, D4 o9 d
  2924. TAY1 o4 a! |1 r6 M+ Q+ U
  2925. PLA2 w3 `% C; k7 \2 v  O
  2926. TAX
    % E% a8 Q$ K, k4 j( O. ]1 G+ x
  2927. PLA
    7 x/ e. O( O. g  x
  2928. RTI
    - k& g' F0 b, B+ v2 k4 C
  2929. 1 f- j1 O; R( E% ?) ^" q: g
  2930. .ORG $FFFA, |5 o# _, J: e0 I9 U" ~
  2931. .WORD NmiProgram
    7 W$ @+ V/ x( n- c0 K
  2932. .WORD ResetProgram' e. @/ U8 f# G# {
  2933. .WORD IrqProgram
    / ?4 E- U$ K7 u$ q. p% @

  2934. + C0 d# B3 h  L0 F
  2935. .BANK RESET_BANK & BANK_DATA_MASK4 z) {+ R6 A* G5 m
  2936. .IF SOUND_BAR_SHOW_ENABLE
    - c4 q* ?5 c# c' c6 s9 ~- g
  2937. ! j  {' `/ i0 F% y5 Z0 X
  2938. .ORG $FE00( [% ]3 }. `* t1 ~0 a
  2939. PHA
    , f& i$ [% G% l% @! I5 N
  2940. STY $07BA
    # u) O' b9 p1 I# O/ T
  2941. LDA #$8D5 T( v% Y5 O$ k$ X* M. X
  2942. STA $07BC
    3 k9 a$ ]/ Z1 j# P5 a/ ]
  2943. TYA
    : q8 h% }4 i& l) O; M
  2944. CLC/ M/ u6 {. S2 y5 [& Q
  2945. ADC #LOW(Sound_Bar)
    : |7 D- {* j. I4 G* z
  2946. STA $07BD4 t# F6 B' R( ]8 s. _% |
  2947. LDA #HIGH(Sound_Bar)
    + E1 N- ]- c! i6 w# F* O
  2948. STA $07BE
    / g3 C# Z8 H# Z1 Q) A" I( ^
  2949. LDA #$602 |/ r& v/ D7 s/ o) Z9 L, |8 {& b
  2950. STA $07BF
    + N( X1 a  K$ e0 Y9 e
  2951. PLA
    8 i9 b/ G( f8 ~; Z" F
  2952. RTS
    7 }: u+ W- x3 ?

  2953. : N  q7 `1 }  ^1 G
  2954. .ORG $FE20
    7 q' l1 M6 D( |, y' }8 ]: r0 d. ]
  2955. STA $07BA# c! ]" Y& @" i0 E# i3 q
  2956. CLC
    ( D; _; o7 D% e: d* l+ m
  2957. ADC #LOW(Sound_Bar)4 O# t. j* e5 X& i  g. E3 D
  2958. STA $07BD' z( G$ j- Y5 O. n2 o0 h
  2959. LDA #$8D: e* O  q, B5 Y+ L8 ?* \2 C
  2960. STA $07BC
    6 X. C" L5 {3 M9 t: R7 C+ `( q
  2961. LDA #HIGH(Sound_Bar)/ S7 {$ ~& s* Y( q
  2962. STA $07BE7 B: t  Y+ {( X  d* w; q
  2963. LDA #$60
    ( [+ x# y; N; K: W, @; J
  2964. STA $07BF
    + k) x# ]) p% e' d- G$ `
  2965. RTS
    $ J; X- t, A9 `" m9 n$ ?
  2966. 1 X# `9 y, X7 T7 S0 ~+ b4 m
  2967. .ORG $FE40
    1 k) p6 X. W& d. {
  2968. PHA
    9 x* H* m" ?8 K7 C
  2969. STY $07F13 T  a+ i. k% @- `- F% L+ W3 b
  2970. LDA #$8D9 `% w0 b: ]. A. k3 p
  2971. STA $07F3
    6 j) o& p8 @7 S" c# v" A4 ~4 a- {: X
  2972. TYA, m( x( y$ w/ X7 F
  2973. CLC' K1 D9 m$ t- C+ m
  2974. ADC #LOW(Sound_Bar)  u( t! n- b5 b  J3 L
  2975. STA $07F4
    ' j# Q/ q9 O  G) R7 U- t/ d! H
  2976. LDA #HIGH(Sound_Bar)
    0 p9 s2 Y( q& }  s4 {
  2977. STA $07F5
    ( g# x' X# _' m6 F' I! r
  2978. LDA #$60
    , n7 s: M0 G# G2 A" v
  2979. STA $07F6- J& M' V6 u+ J- a2 R
  2980. PLA& D8 ~! @2 Q& O
  2981. RTS
    6 E$ W4 i. a) _# `4 S* i. x+ T9 l0 v/ y! N

  2982. 6 Z. N$ v" @* z9 L  g. Y  R
  2983. .ORG $FE60
    ) l) ?. ?5 E& y0 q
  2984. STA $07F14 N; m% \7 j( b. [
  2985. CLC( _/ h  X) r( C8 r% n
  2986. ADC #LOW(Sound_Bar)
    ( Z% Y) h. S$ ~# O
  2987. STA $07F40 ~0 l" J2 j0 u, D1 z
  2988. LDA #$8D* z9 m. S) }' g
  2989. STA $07F3
    " ^9 P* d3 [& a) [
  2990. LDA #HIGH(Sound_Bar)
    3 L, e" C8 t2 h! A% R% P% M  _, b, Y
  2991. STA $07F5  T4 G9 g3 |  V
  2992. LDA #$60
    # K6 W  {# c6 M2 V$ {) E2 P- n
  2993. STA $07F6
    , I9 M1 ^7 {: {+ P- e0 ?& k- F+ k
  2994. RTS8 R- a5 x' c; H9 v; v) L4 C: _
  2995. 8 D2 _1 a* O( H4 x% B
  2996. .ORG $FF40& P, y3 e4 k1 Z- j  ~& d
  2997. STA $4000
    + \7 a% m6 q4 }) _. A5 r" S
  2998. STA Sound_Bar + $00" a& h- b6 e0 x8 R. j* K3 h) A
  2999. RTS
    7 ~2 I( c& I; e" H

  3000. # }* X/ @' ?' ~4 e
  3001. .ORG $FF48
    $ d! w5 ^7 k& H
  3002. STA $4004+ L. ?6 {+ n9 w5 h  w
  3003. STA Sound_Bar + $04- e, n3 p# O. r
  3004. RTS: M: n. J4 B! g! V5 L. C
  3005. ( T6 u5 Q2 M7 C, R! [9 Y* e
  3006. .ORG $FF50: \- h. g3 Q3 C( D# H: O" n$ j. o
  3007. STA $4008
    " P' l0 x6 H( j" D7 G
  3008. STA Sound_Bar + $08
    $ D' m: A. k1 j: a8 |# e% s
  3009. RTS7 w9 B6 M. H" Y4 O

  3010. - X9 x1 G$ U, O, X* c1 e- X& Q- ?
  3011. .ORG $FF589 `8 O" n! S% N$ `$ E
  3012. STA $400C
    3 N3 g$ |( x% F. D  m3 L% \
  3013. STA Sound_Bar + $0C0 u: L" Q7 y" t8 I( n
  3014. RTS
    2 C& Y# l- w! ~$ l$ F" m* k
  3015. ' W6 C. ?  w6 E  _6 _
  3016. .ORG $FF60
      r7 j2 f3 E, W; l
  3017. STX $40005 E( }5 [% S3 M+ t/ a
  3018. STX Sound_Bar + $00
    / ~, l- l, U# ]; V( C" R
  3019. RTS# ]" y4 S5 h; ?6 V, U

  3020. - K# v) o3 k6 W7 Y3 [1 r
  3021. .ORG $FF68) ]: g+ a2 z3 e
  3022. STX $4004* P% P# I: w  T: _% R$ B' b2 Z
  3023. STX Sound_Bar + $04
    6 \4 O$ N% m2 \6 A0 {0 q' a& E7 A
  3024. RTS7 J! t. j0 V* f. r
  3025. 8 {+ p5 l5 s$ u' J
  3026. .ORG $FF70* K3 k+ |: t( W
  3027. STX $40084 b7 I1 y9 l0 [* `6 B' Z
  3028. STX Sound_Bar + $08: u* j( ~/ q3 k
  3029. RTS- L7 E5 y# I% t' p
  3030. 1 I3 ~7 D: _) g, ^; a
  3031. .ORG $FF781 j, O. r) F. M5 T% y- w; X
  3032. STX $400C
    / X1 N1 n9 z% ^7 l- `( i5 U
  3033. STX Sound_Bar + $0C8 N4 P) y7 o* K+ Q6 B% ^# P7 B
  3034. RTS, y6 Z4 [, ~8 c+ N

  3035. 7 O; r* L6 H9 I# F( E
  3036. .ORG $FF80* _: v$ z0 k) ]9 W1 ]+ i. ~
  3037. STY $4000; _7 ?2 {( R& Q$ N6 Y
  3038. STY Sound_Bar + $00
    + N  s' W% ?& X- c6 k. W6 L5 \
  3039. RTS
    # _- \. M7 L  Y

  3040. , q9 h; n3 J! M. N# R1 g4 G
  3041. .ORG $FF88
    ; a0 C9 c! ~0 B
  3042. STY $40048 T$ y/ ~7 @9 X- [+ ~( B$ g3 A
  3043. STY Sound_Bar + $045 s% \' z: S: v$ R
  3044. RTS
    9 |6 h2 K8 B# i- J/ B5 ~) I" h

  3045. , c  }7 B2 _+ [! o7 E7 }7 {$ b& k
  3046. .ORG $FF90# r, L7 M0 \$ A
  3047. STY $4008" J! l7 p# M! F; _$ x
  3048. STY Sound_Bar + $08  ]0 n# Z! K7 g1 Q- _( S/ t
  3049. RTS
    3 d. }2 k# E3 e5 |
  3050.   e( }- {5 K0 M
  3051. .ORG $FF98
    # f& \) }( y/ u& ^. V: j" s6 Y
  3052. STY $400C" `  Q! L7 o( v. p
  3053. STY Sound_Bar + $0C0 ~+ }3 [! O- }, G3 a: R
  3054. RTS4 W: {( h) F0 F& c0 P0 i# G; R

  3055. ; L: U) f, D  _& V- z% c
  3056. .ORG $FFA0
    7 ]0 P- U( R) G! m) _
  3057. STA $4000,X
    6 r+ F2 D- ^9 R) v8 m7 {6 P" o
  3058. STA Sound_Bar + $00,X. F/ A! V3 n0 G) Z( ]
  3059. RTS
    ; g" Q- \1 h; N8 p9 }: B' N1 |

  3060. 4 W! k" v9 J; p0 }# _* A
  3061. .ORG $FFA8
    * L+ P: K4 D3 {2 ]9 b: W
  3062. STA $4000,Y7 k8 g! N0 p$ L2 t; \
  3063. STA Sound_Bar + $00,Y, R2 B5 Z) F7 f4 G9 J
  3064. RTS3 p9 }3 y+ S* I; u& _: f
  3065.   N) U, b* {6 t
  3066. .ORG $FFB0
    - L0 N) y/ _% e7 O8 i% ~
  3067. STA $4004,X) x2 i, y* e2 z2 J' ^0 ?
  3068. STA Sound_Bar + $04,X
    / w& B8 q2 Y7 D3 I# M- Q) }  D
  3069. RTS3 t9 s! b# u' A) s5 O9 ]

  3070. 5 }- P/ U; \. R% f/ r
  3071. .ORG $FFB85 d5 I. I, T2 Q, e, D1 b
  3072. STA $4004,Y% \  m# R5 @5 N4 [6 f
  3073. STA Sound_Bar + $04,Y
    ) n; [' i  `' ~7 n1 x" Q6 X" \& H
  3074. RTS
    " Q& E; g2 t: U$ @5 U
  3075. . E+ E9 _- Y3 U) t  R, v+ v4 r
  3076. .ORG $FFC0
    : Z1 O/ n) y' @  E
  3077. STA $4008,X6 ~/ T! P* L/ D5 `
  3078. STA Sound_Bar + $08,X  b9 J) C/ u" y* y! \5 |8 d- \! E
  3079. RTS/ V7 n& d9 x2 k. \: F, f1 S+ s
  3080. 4 p) o$ T( B+ Z; k
  3081. .ORG $FFC8
    6 J5 ?7 T" e& f
  3082. STA $4008,Y+ `" W+ B; [  T! h/ l
  3083. STA Sound_Bar + $08,Y
    ; [$ ]& @5 @& V/ \/ m
  3084. RTS8 ]3 R6 T$ i$ o) [9 x

  3085. % n- U1 r& M3 E7 c
  3086. .ORG $FFD0
    6 ~2 P3 ]: F8 W$ {" U9 z- P) ?
  3087. STA $400C,X
    ) a+ d$ O( O& d6 I8 h  q
  3088. STA Sound_Bar + $0C,X
    " @; M1 z# m+ b5 \1 V
  3089. RTS) W6 X2 E* W% j& g6 L  \, i
  3090. $ b4 E& j2 x" h9 {+ [% E
  3091. .ORG $FFD8
    5 N; T; F- ?7 [' v+ U- }: e. z
  3092. STA $400C,Y
    ( z' \1 x" o! m& l$ a6 a/ I
  3093. STA Sound_Bar + $0C,Y
    , p9 z+ R5 {: c% ~; B8 F6 ^0 k# p0 I
  3094. RTS1 C- I; p4 I& b4 k

  3095. * _7 R; M6 B- ^7 Q. z4 E7 f
  3096. .ENDIF
    . c$ J, Q/ h* ~( G$ U% x
复制代码

- c; l+ z0 W- O  m, V3 k- M  L
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3281 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-5 06:44

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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