EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
: V; V, n$ @* U8 H
7 Z5 b4 U( r6 o[FC][音乐12 IN 1]
- F: h5 p4 J0 u7 s. J时间: 2023.07.23
" m: x% g0 Q) D  }3 X& r) \作者: FlameCyclone4 k" H6 J' k6 I. p9 A6 `$ _0 K

- \1 ~: D/ ~# u收录音乐内容:
7 u+ |! w: D7 V  Q5 e1.Raf世界2 r# r; f2 j  I& F  F" R' U
2.最终任务( z: T. K% d' ?3 T. f
3.赤影战士1 ~) ^4 k3 W1 E% H+ p
4.双截龙
/ R% K1 V+ Q* t! F7 E5.双截龙2
$ ~$ j$ `; }* {6.双截龙3& W3 u+ W( F3 T! F& i% w* @/ R
7.洛克人
. d6 L# t# e' U+ g# [) N7 p8.洛克人2
$ z& M$ D+ y4 n; q) b9.洛克人3
* Q/ E/ ?5 s! Q" r# p10.洛克人47 M' A- [& h7 m# P& K, g
11.洛克人53 H* N0 R: [. f2 @& `" y( O
12.洛克人6
9 Z- \( \. c7 G1 M% @+ `) e4 y9 n, m/ l
操作:
7 P( z4 V4 t$ M* _# y% p上键:         上一个专辑( Q7 J* X+ I) r2 A+ @
下键:         下一个专辑! g' M7 u  M* x1 j  i, d$ c* w
左键:         上一曲8 ]9 d# A# m" [' Z, A
右键:         下一曲7 f# D) Q+ E4 O) ]' M3 k
B/A键:        前10曲/后10曲" p- F2 D, i6 p0 H* I) Z- Z; G9 R
选择键:       下一页
5 d$ ~- k2 D6 S& f) ^* o* R开始键:       停止/播放, d: [1 d3 Q% w$ s3 }

+ d) }8 T4 d0 e4 Z# d& Thttp://flamecyclone.ysepan.com/: k7 f/ r& S$ D9 L) u! q9 G

" F# c4 g0 `9 N  b( _5 z6 g6 j5 m2 j% d: ?3 r; M
# u$ f/ s2 I2 a% v

; I' n4 s& v# n! W
  1. ;[FC音乐][播放器模板]& F1 X4 G, Q! ^5 i& V
  2. ;FlameCyclone 202307107 G1 R0 N4 f; [7 L2 ]- i

  3. / _) F4 w5 w) ^: G8 }$ e
  4. ;文件头
    2 T& V! u1 v; ?; L0 F; k8 z3 M% A
  5. ;======================================================================. f1 z5 ~- Y( ]! R$ H1 B+ q6 B
  6. .INESPRG 16                                             ;16KB PRG 数量1 \- f) Y2 n; R; T
  7. .INESCHR 1                                               ;8KB CHR 数量
    ( C/ t, e" }: Q7 M7 H
  8. .INESMAP 4                                                   ;mapper 4& F+ F, j" I7 i" m2 M8 D
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直
    7 f4 z( v$ p: |$ w1 E

  10. 0 {& }# u) C. @7 H, f! w  Y* B" I
  11. ;==================================================
    3 o, }- ~4 F& l; z3 u+ l8 f
  12. SOUND_BAR_SHOW_ENABLE       = 1( c/ g  n: o* L  E
  13. ;==================================================
    7 Q2 F, a. t7 J& j2 E, y
  14. BANK_DATA_MASK              = $1F' @8 o8 Q% z4 t
  15. CHR_RAM_ENABLE              = 0
      [! L0 O5 j! D# C
  16. IRQ_SCANLINE                = 1363 B- p& K1 Z( |- {
  17. ;==================================================7 r# y: W5 b. Q; [9 F* g
  18. SOUND_DATA_BANK_00          = $005 N: v) I. `3 b4 s5 n
  19. SOUND_DATA_BANK_01          = $01& v/ Y* N$ y) ]) i
  20. SOUND_DATA_BANK_02          = $02
    + v1 N3 |$ @7 K1 a/ L3 N6 j4 s
  21. SOUND_DATA_BANK_03          = $03; O1 B+ r! D! C  E; b4 w
  22. SOUND_DATA_BANK_04          = $04
    ( ^$ G  n$ h  ]; P" s9 c( G
  23. SOUND_DATA_BANK_05          = $05$ V8 \/ G- P9 f9 n! y
  24. SOUND_DATA_BANK_06          = $06
    : n, m: [$ k8 H: \( }$ ]9 S
  25. SOUND_DATA_BANK_07          = $07! m8 I8 I& Z1 U2 h- g0 H0 d
  26. SOUND_DATA_BANK_08          = $085 _! s3 u; t1 w6 l+ r
  27. SOUND_DATA_BANK_09          = $09
      r4 g# b4 H6 f5 ?; Z1 m5 ]7 R
  28. SOUND_DATA_BANK_0A          = $0A2 X( F- ?, x' i; F
  29. SOUND_DATA_BANK_0B          = $0B
    0 e) c$ X" R4 d: b
  30. SOUND_DATA_BANK_0C          = $0C
    8 e8 N  S+ z4 m2 h; g0 m  R( V. f
  31. SOUND_DATA_BANK_0D          = $0D6 V" _# a6 o: `' }; [
  32. SOUND_DATA_BANK_0E          = $0E
    ' Q( o6 U( f! }! K! y
  33. SOUND_DATA_BANK_0F          = $0F' S6 Z" X1 b6 L8 }

  34. 1 N' S# Q- c# G4 _# Y* k7 c  Q" h
  35. SOUND_DATA_BANK_10          = $10
    ! F/ ~# h' V/ t0 h3 n$ l9 W
  36. SOUND_DATA_BANK_11          = $11$ b9 @# W: m/ X& a- H% R% C
  37. SOUND_DATA_BANK_12          = $12
    ' c6 W6 N7 F3 Z; e. }1 }
  38. SOUND_DATA_BANK_13          = $13
    0 @. o/ _3 C& O/ k" u
  39. SOUND_DATA_BANK_14          = $14
    : Q" z, ]& |8 i; m
  40. SOUND_DATA_BANK_15          = $15
    ! }, }7 b: J9 [# u1 S% t8 [, k3 V
  41. SOUND_DATA_BANK_16          = $16
    6 A8 F& F7 C4 R- y7 G6 E
  42. SOUND_DATA_BANK_17          = $17# Q& f  x( }  R) \* d* P  S
  43. SOUND_DATA_BANK_18          = $180 [' V5 e7 d: j2 N
  44. SOUND_DATA_BANK_19          = $19
    / y2 A5 z+ i. T6 Z- W- W, W1 P" }
  45. SOUND_DATA_BANK_1A          = $1A; K& \5 q* W4 c# `6 H6 d) V; x- h
  46. SOUND_DATA_BANK_1B          = $1B& \- p& N) M* N9 k, w. u5 F
  47. SOUND_DATA_BANK_1C          = $1C' _- R+ H) [3 k
  48. SOUND_DATA_BANK_1D          = $1D, N- W* @7 Y5 e" t$ N- |

  49. ; t+ D) v2 w) h! b, P  C7 b4 W
  50. SOUND_DATA_BANK_C000        = $1E
    # X0 |: d  j6 W# G0 V# M
  51. SOUND_DATA_BANK_E000        = $1F% ]5 A9 b. j0 k+ j# Q
  52. ;-------------------------------------------------
    6 p- x  s3 O. V& ?" W
  53. CHR_DATA_BANK               = $20/ f/ t* J, t, w. C9 I2 u$ q4 R
  54. CHR_DATA_ADDR               = $A000
    ) N. A1 ?6 E9 ]5 ~; \* D! R
  55. ;-------------------------------------------------" i: u* ?( c+ N: Z. |( B
  56. PROGRAM_BANK                = $00
    3 [- l# _+ w0 L& v
  57. PROGRAM_ADDR                = $8000
    + d9 z+ t" y5 \& ^, \# R+ |
  58. ;-------------------------------------------------' W4 a  L1 z% Z6 z* x
  59. RESET_BANK                  = $1F6 {; H9 f. b4 u, q1 S  d) i
  60. RESET_ADDR                  = $FD00% y. q0 y0 ]6 P# N

  61. ( R$ c2 h3 _( E5 t5 u
  62. ;==================================================
    ' K' D" ~* L6 Z5 m5 B
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数! ~+ W" q7 n9 s0 }* i; l6 U5 L
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    8 i' ^. s! X. {- y( R
  65. PAGE_SIZE           = 5                     ;每页节目数/ G" o1 y% i  O- Q
  66. ) C% `( f+ `5 A! m  S: P
  67. ;==================================================+ F+ |( L8 s7 T9 b6 Q( B- H& E
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除2 l  A. @* R$ ?8 g
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数+ ?# K6 _& L% N2 b
  70. .ELSE  z2 D+ o# V  p/ U6 h1 X
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数* x' u4 ^: ~/ ?
  72. .ENDIF: l5 H6 [. \4 r# h9 J6 K7 v

  73. ) j* S2 P7 [3 z+ p4 T
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    5 \3 o% z! X+ o8 `& V7 _

  75. - |9 ^9 S) U, A* [5 B' E: ]& m
  76. ;==================================================; f- Q# B! |$ D% S! W: v( c! ^9 X
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置4 G% V. |& L# A0 O
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 21 p' T/ M% t) `1 w: E( d. P
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    % K, F, y/ c0 A4 \* i5 ~6 Z
  80. ;==================================================
    + E/ q5 J+ r) F9 I0 y3 |4 b  C
  81. Caption_Text_Pos    = $204D ;标题文本位置
    1 B2 |" F; }% A6 q7 m3 `
  82. Author_Text_Pos     = $2324 ;作者文本位置3 T0 x% v9 R: j. A7 H; u7 c
  83. Date_Text_Pos       = $236B ;日期文本位置: p& n: p- A) e) v
  84. ;------------------------------5 m( O3 X/ v6 g, I9 W
  85. ;------------------------------
    # ]5 s9 a7 `0 K
  86. .IF SOUND_BAR_SHOW_ENABLE
    $ E: F) }& z& N
  87. . [0 L; M: Q! `- i+ G8 g; u7 C
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    & j3 n" |0 i6 W; X- n& p# s# o
  89. Play_Time_Pos       = $22B3 ;播放时间位置' f4 a6 \9 v7 O# v6 Q
  90. Play_State_Pos      = $22F3 ;播放状态位置% d$ q: C$ ]' t/ a. P# G3 I7 W. R+ u, w

  91. ! S- x: ?' x' s1 z" q* z/ S$ |
  92. .ELSE& ^9 S) m- H  W. x
  93. 4 z2 W8 R) o1 C+ _0 q. e
  94. Play_Index_Pos      = $226C ;当前曲目位置
    9 Y( ?6 o3 R* q+ U
  95. Play_Time_Pos       = $22AC ;播放时间位置( e6 W2 }& @- P8 f7 v; L! T  U
  96. Play_State_Pos      = $22EC ;播放状态位置9 B1 C+ }6 M' I1 \" S
  97. 9 X* P' z' b  U
  98. .ENDIF9 V& l4 o4 \6 {/ z, s/ b: U
  99. ;------------------------------
    & y" I* p2 J  P0 {6 }# S! N" k
  100. Track_Name_Pos      = $222B ;曲目文本位置6 m* h) a! L3 ^( J" e* v9 k% u6 i
  101. ;Track_Name_Pos      = $00 ;曲目文本位置
      h# l8 q  I3 [
  102. Sound_Track_Pos     = $2265 ;声道文本位置, ~% X2 z6 V9 r8 _9 `
  103. Sound_Bar_Pos       = $2269 ;音乐条位置5 A: p  T% U- K, K
  104. ;==================================================
    6 K1 w3 Q! J3 F
  105. Scroll_X = $00
    : n$ d. \- p  u- p
  106. Scroll_Y = $00
    + t2 M- ~5 H+ V
  107. ;==================================================
    ! @6 F0 ^% R1 `7 t9 f
  108. Sound_Ram_Addr_1       = $0100
    4 K) v- M2 b! ~; b
  109. Sound_Ram_Addr_1_Size  = $80; t$ v, n: s! w7 q3 C
  110. Sound_Ram_Addr_2       = $0090
    4 @& M/ X- w- g6 p1 Y
  111. Sound_Ram_Addr_2_Size  = $705 e2 c0 x, t2 k! z! R! ^) a
  112. Sound_Ram_Addr_3       = $07004 V) E3 {) m% s, u" O: E
  113. Sound_Ram_Addr_3_Size  = $00
    8 x) {8 I3 ]4 X( g8 ~) Y
  114. Sound_Ram_Addr_4       = $0400" G/ Y, x, Z4 K/ M( T, G2 I% Q
  115. Sound_Ram_Addr_4_Size  = $00
    $ \, K9 ?9 ^( ?9 ~: U, e) }: P$ {
  116. Sound_Ram_Addr_5       = $0500
    & y8 A5 W+ m9 b" j1 s1 a' X
  117. Sound_Ram_Addr_5_Size  = $407 R! M% e/ x4 ]( H0 N

  118. 7 p/ {7 v7 v2 l
  119. OAM_TEMP_ADDR   = $0300
    / e8 _6 T, D7 ?* g! R" R3 F
  120. 1 O4 C- S. z* l/ R' Q6 {; @3 A
  121. ;==================================================8 p5 b/ o; v4 z% u: @  ^5 G
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    9 B9 L6 ?* l. o4 V8 j& F4 [
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    ! ~. K( P1 K8 |3 i
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    ! v1 c5 v1 d: g# _, d/ l! D/ h
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
    # A6 x1 M1 {. }" w0 `, T6 w
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
      N- X+ Y/ ~' H0 ]$ F9 B( V2 J
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    ) [+ F1 v% f" c' u0 ^7 P8 b
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加% }9 n7 c) I8 d  P" m
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
    ) V( }5 B( V6 J% R9 b% g  K. A5 w
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存- b+ s: ~6 g9 O  F8 e. u4 G+ _  D
  131. APU_STATUS              =   $4015   ;声音通道切换+ E. [( r( R0 g( d1 }8 Q
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通4 G& _; W) z$ g. }( }# h( Y
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
      k3 q5 o; X+ X0 o; N
  134. ;==================================================1 k6 s9 U3 J3 z7 \* g9 a& _
  135. MMC3_BANK_CTRL          =   $8000) A6 k/ f  [5 A5 b' W
  136. MMC3_BANK_DATA          =   $8001: g/ U5 c9 j" v! r5 z/ p
  137. MMC3_MIRRORING          =   $A000, l4 n6 M- g: @: m9 Z$ q% g" w  b# q
  138. MMC3_PRG_RAM_PROTECT    =   $A0014 k3 f3 |( a, b. ]: b6 ?: D
  139. MMC3_IRQ_LATCH          =   $C000
    ( ]/ ?6 _" s/ o4 \- K  G; ~
  140. MMC3_IRQ_RELOAD         =   $C0016 }$ u6 W/ S4 X! }
  141. MMC3_IRQ_DISABLE        =   $E000
    ' q9 L5 v7 q9 _
  142. MMC3_IRQ_ENABLE         =   $E001
    8 j' G8 i& ^9 x8 w" t0 y
  143. - c5 c- Z; O- Q- _, f! v
  144. ;==================================================
    : @' v9 Z. K% i( k
  145. PPU_Addr        = $02008 ]* ]2 l! S1 V! K8 D
  146. Palette_Addr    = $02C00 T3 _4 C6 P( N. ?, ~6 F- w; u. e
  147. Sound_Bar       = PPU_Addr+$E0" T% J5 q# x- e
  148. ;==================================================" q9 q$ w3 J6 d/ A) @
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D4 P( M+ N5 I5 f- g" \; V1 R0 @8 z  ?
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11
    7 l% j$ a! R8 U- N2 L
  151. PALETTE_UPDATE_MAX      = $2C" U7 @4 h+ ?5 Y# v4 _5 W
  152. PALETTE_UPDATE_MIN      = $21
    6 Y: y* }2 }! m1 X5 z8 J8 g
  153. PALETTE_UPDATE_INTERVAL = 60' \8 N2 X! {) r5 l: y3 W
  154. ;==================================================
    # `, u6 q9 i8 k( }# J
  155. Sound_Bar_Cnt       = PPU_Addr+$F0
    4 {3 w0 T/ B4 [7 n6 I: I5 r* J6 ~
  156. PPU_Cur             = Sound_Bar_Cnt+$02
    3 k  F) Z9 E8 t: |/ t* i
  157. PPU_Addr_H          = PPU_Cur+$03' h$ d( i5 X+ {2 G8 ~- `
  158. PPU_Addr_L          = PPU_Addr_H+$04& t" {; n: J5 I
  159. Screen_Ctrl         = PPU_Addr_L+$01( U- t0 G! z. |
  160. Screen_State        = Screen_Ctrl+$01
    ( V  b  ?! |7 [8 U/ T
  161. ;==================================================/ H7 I( P: e' [8 J
  162. Use_Ram_Begin       = $50! y* w0 C% X" Z$ T7 J) [* Z: U
  163. ;==================================================
    ) L4 l+ P  e5 d9 w0 [% z
  164. JSR_Addr_Op         = Use_Ram_Begin+ c, @( C  q/ m* `
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    : S5 i0 x# n; r: j) w* O0 Z  _! c
  166. JSR_Addr_H          = JSR_Addr_L + $01$ |( `9 u5 W& u% C
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
      L/ A6 W- c  k  B
  168. Data_L              = JSR_Addr_Rts + $01
    4 ]) w& F* P( O% u6 S3 |4 {0 ^8 ~
  169. Data_H              = Data_L + $012 D( h& B# r+ I$ u5 l' b8 b( J
  170. Data_Cnt            = Data_H + $01
    ) P& B$ b1 v7 a$ z$ B
  171. Data_Buf            = Data_Cnt + $01! w* Z; M; {7 i9 ~. p# A
  172. Nmi_Time_Count      = Data_Buf + $01
    & }7 f+ Q: V5 t, O9 T$ s
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01$ |; s' E0 J2 w
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01  f& F* c" t. C' a$ V
  175. - V" a. a+ e/ A# W+ S  }4 L
  176. ;调色板刷新标志
    2 o( G& q0 H( i) J& S
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    3 Q* c# R! ^: u1 w; U4 D: W

  178. : F- v8 X) w: k7 L# e7 F1 h3 m$ h
  179. ;当前帧文本写入禁用标志: [6 f! H4 M( o  {
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    0 I/ P$ d; f! A% t% |0 J4 A

  181. % t; [% v/ U+ v
  182. ;==================================================  E. ]# f9 U0 L
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    7 U( I( s+ g: n3 f( ?1 [2 x; x
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条4 A+ j8 x( Y: |
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间0 B6 j3 S+ Q% T& z! I% ?! W
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间; d, l9 b0 o! E7 A8 B: O6 b
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间6 r' V; y- V3 s# `
  188. ;==================================================
    , C; n2 {3 R( U# r
  189. Key_Keep            = Text_Disable_Flag + 1
    6 j3 q, p6 O# O$ N# N0 ~
  190. Key_Once            = Key_Keep + $01
    5 N9 c9 R$ c4 o( k
  191. Key_Kemp            = Key_Once + $017 T& K2 h' \8 u, c$ U- r! E  s" U
  192. Key_Temp            = Key_Kemp + $01* A, I5 c" _$ R3 X# h( I
  193. Key_Getv            = Key_Temp + $01
    % f% }# S  o3 E% \' {' M- H
  194. ;==================================================
    6 t3 H$ }' X% v6 P# H
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集% ]* r8 R4 X+ z% ?: T
  196. Music_Item_Last     = Music_Item_Cur + $01# `5 y  w% W3 Y/ Q8 P
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集( I2 [+ N/ ?; C  V
  198. Music_Cur           = Music_Total + $01  ;当前曲目! H- F" l+ i/ |- F8 l, k$ c
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目$ o( U; F, l2 \, z3 }/ ~& S' R
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态
      _3 {7 V7 u( m, N+ x
  201. ;==================================================
    7 T5 [! ^5 T3 ?  h$ E
  202. HEX_Data            = Music_Stop_State + $01
    : ?3 ^( }3 F. o$ A
  203. DEC_H               = HEX_Data + $01
    ! H6 E+ j3 Q9 G+ z
  204. DEC_T               = DEC_H + $01+ }: _" ^* M0 x# b
  205. DEC_L               = DEC_T + $01  {- x5 |) t: S) |& r4 k( t
  206. ;==================================================. H! ~8 t) d4 V" {0 V. D! M
  207. Time_S              = DEC_L + $01% F, Q) G1 h% W) v, U8 a
  208. Time_M              = Time_S + $01
    1 ~2 y9 |! ^6 ~2 i' i, f
  209. Time_H              = Time_M + $02
    3 G' N/ P7 w0 d$ z7 F4 s
  210. Time_Cnt            = Time_H + $03
    % f$ {, d) ^# ]' E

  211. 2 a  W# d/ r* w/ \- ^& L- e
  212. ;==================================================$ E. n0 ]; l) R  A
  213. Music_Bank_8000     = Time_Cnt + 1) @, B3 w/ ]" B/ j
  214. Music_Bank_A000     = Music_Bank_8000 + 1! t- s" e- j1 g6 o" f
  215. ;==================================================$ Y6 \5 j" G' t+ I8 ^& f
  216. Scroll_H            = Music_Bank_A000 + 1
    + i$ C& N2 M% Q9 O
  217. Scroll_V            = Scroll_H + 1
    ! {0 Q0 e5 b# R0 {) I
  218. IRQ_Process_Index   = Scroll_V + 1- @- B( j, Z  ^
  219. ;--------------------------------------------------" k% z" A+ V: H
  220. Page_Cur            = IRQ_Process_Index + $01) A0 J2 h( ]9 P( K
  221. Page_Cur_Index      = Page_Cur + $01
    + p8 ]9 t6 |8 P; V: I0 _/ h
  222. Page_Cur_Cnt        = Page_Cur_Index + $011 {' A' M+ n* z. k; V
  223. Page_Last           = Page_Cur_Cnt + $017 C* {' K. q4 q8 i& a' l2 H+ G
  224. Page_Last_Index     = Page_Last + $013 n" N! z+ h6 {! E* d8 K! E8 S6 b
  225. Page_Last_Cnt       = Page_Last_Index + $01
    4 a" k! ^9 i: _+ A
  226. Use_Ram_End         = Page_Last_Cnt + $01! ~4 E6 j& t8 ?- m' Z$ A2 ~9 L
  227. ;======================================================================3 o6 j! S3 Z4 u" J) ?
  228. ;音乐数据块9 _! g9 n6 q3 B1 H: z9 Z: q5 T
  229. 7 x3 S% @! S; I% e2 V
  230. .IF SOUND_BAR_SHOW_ENABLE
    * B7 P% i5 }2 e5 ^  Y
  231. 9 Q" ~' H1 t& D3 c. c- e- A
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK) N7 K, R% s& y& k+ F( J
  233. .ORG $90009 a: |0 Q4 A" p+ I* j( A
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"/ `7 Q; R, ~, _' l, L

  235. * E' c% y- D% }7 n# Q3 S
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK5 K* u$ |6 U' n. l" j: I
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"3 N8 }5 f4 F0 M4 e$ ~& R- [
  238.   E3 s, h0 F/ E, ?4 a' H
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK( H$ Z* F) [0 D9 W& Z
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"
    / y* y) `; ^* c" I2 c

  241. * Q0 Y6 r7 P- ~9 M! J/ R  ?
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK. c5 n" M! [1 M$ g
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    6 e- h" ]  P" T) R
  244. ' `( c2 l, j0 M, }
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK$ v  V5 W! p- X; \6 s/ {
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    8 C  G* _4 H: f1 H( Z
  247. , Q. t& T# N+ ~1 E6 o; R8 A
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK7 H! l5 Q1 V2 I) }, D$ A
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"" Q' z4 x( _9 k1 }' m: m+ @; s

  250. ' }4 j* D. s; f' B0 t+ v
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    2 @) M# k7 o9 M+ G7 _3 s2 B
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"4 t% A. H$ k' o8 w

  253. . [" s) ?4 g8 h+ r1 {- P
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    ' ^7 M2 k- }# n
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    , s) R8 @4 {% @! H

  256. $ z4 l6 y  J8 A( B. R' r. r
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    . v. C+ j3 z4 m/ u
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    - I5 ~6 X/ z2 \; _; \' t

  259. ' E( t7 o3 j* v1 A
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    - R" @9 U, Z6 K- Y: @; {
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    $ ]; c/ J; y; H+ O

  262. # \$ y6 `% q  k8 T3 v+ f8 K0 C, y
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    4 o: d9 B9 @6 k6 C
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"! [+ W% h! G4 \- r; t, [

  265. + K' E1 f( a/ H: C3 M7 e
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK) S5 K$ D1 m* m: i) b; s5 R
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"
    / L6 F) j6 a8 l7 b  z; `
  268. " J0 Y4 W& x, i" L+ o+ p2 s  C7 H
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK4 S: b/ L; n' ~+ u8 [0 O
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"  \( y' L& o3 b$ D+ z- [
  271. ) {( a" e  }+ ]7 E3 o
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    / E0 D& i7 [, N' e" |! r; H! M
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"' q; \9 H  Y6 H6 j

  274. 4 ?$ x1 N! \9 X3 [8 J
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK. Z7 }0 Y! a. @+ g; X  X# v( j. E
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"* T9 R' {  v  r3 n' E3 e' f" X8 ^' q

  277. # i4 y9 j% g% I- m0 e7 M; F
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    0 y8 l9 ^( c' E2 C& D
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
    . ^6 U) O* D9 M+ H, W

  280. 9 |' }/ k7 B" y1 Q1 z; R
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    0 h  B& a: Q: y& r' |
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"' _+ ^& X7 i; k9 }6 {7 n3 z
  283. 8 m5 H% ~. u4 l5 z  e8 N
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK# G, E) \7 _1 J2 w
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    . g6 F' b- z7 }$ e9 u" f% @" N  j
  286. : w& q/ a: e/ Q: A; ]3 l
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK3 [2 I4 K7 O( [$ o6 K# u
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    ' l2 Z% G# Q( g& G3 `7 c. ~9 p

  289. 2 K$ M. i6 J8 l' a
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK
    8 R) q" ^) O$ i2 ]2 d
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    / D; o% _' P( H$ z5 j6 J
  292. & V- A" u- T' ?3 n" }( s. h% H
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    9 T" {1 @/ m( M* a; n
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    3 |# Q- v" `2 c4 A
  295. & B+ E; x& [+ {7 Q
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK5 ^4 e/ F0 H8 ?) r  _
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    & t6 b! R! `, k; F/ B9 G

  298. ' \* V6 z" l6 }$ D
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK/ g2 K2 ?- F0 K  P; {5 M
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"& R9 Y% f% N" c/ p+ ^0 r# R- l
  301. & E; F! i+ S# G4 n2 f+ Z% R0 _
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK0 {; V* c$ _3 b
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    6 s6 Q5 Z  X9 @- r

  304. ) u5 u3 S& j, G% i3 B
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    ( X6 r% b( R- j0 q- a; V. A
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"
    ' @% ]" B$ Z! b% @
  307. ; ]; x' @: \0 I2 t- n; M; i
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    3 T; u; f9 [. A
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    3 r; Y$ [0 j  R- f7 C% k1 M

  310. 9 a1 C8 b  m' \: S
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK5 r" {* J3 H. L& ?0 Z1 ^. d6 V
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"3 W; ?2 `5 n; D' T) @
  313. 0 I8 g) X" b  c" t8 M
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK9 A2 a9 |0 ^! Y; K4 V9 `5 v
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    $ j/ W! p3 d- G& ^- c3 j' t* a
  316. 1 ~: }$ N( h4 V  k- Q( a3 T
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK' l, G8 j9 [: T9 y( d
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"7 B! L; {( \7 X# t4 F2 X* _
  319. . j0 X. F( C* ^4 G, p1 T! c9 g
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK, E9 @- Z. P2 d/ Q' q
  321. .ORG $D4002 P) X" W% a: E1 ]. T
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    1 D: n; W  C- U' L) g6 T' T; }& P6 H

  323. % e4 j, R/ N; k! y6 U
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    / C' y% O8 |6 h5 j5 C
  325. .ORG $D800
    6 J% H: P7 e& s5 g. T
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"7 K0 l3 Y. Y$ R+ h

  327. ) U  `% R. [, B) z4 |

  328. $ n9 q# N$ J! I& ?
  329. .ELSE
    $ `+ B4 X) M0 C+ i) X  @& O

  330. * H+ L+ w, k' ?# k  i" V
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
      Y6 m0 {/ ^5 o: `, p! I6 Y
  332. .ORG $9000  ?$ B0 Y; |, x- I7 f4 T* i! L
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"9 A5 |. L( |7 }3 |
  334. 2 K2 q: D! j4 d* z* a
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    : j8 F5 `5 c9 s/ ^- i0 L7 M
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    ! g. t( W/ l) Y$ q3 P- V
  337. / Y( n! c3 r$ U" l3 ?5 g; @
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK4 q) z- m) C% r* @- N
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"! \0 w3 J% r: ]6 r+ {
  340. 5 b, l+ T0 V4 S5 n( E( ~2 f- F& n1 [
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    6 f1 n9 z3 D  h
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    - c8 G8 c0 m' b/ v" r

  343. : F% [" a  y3 {+ z' q
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK
    . _$ E6 x0 n8 u4 {6 }
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"/ ^: Y. K+ l0 }; ?* [8 H

  346. 1 |( b' q4 s4 t( M
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    - q3 j$ M4 r: N6 y
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"/ r( |7 b: t6 j* j# l3 [
  349. : Q& t, K1 |6 M  E, ?+ `: w# U8 r' \
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK. l. r& ~6 O: n* V: z  q' }
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"( C- X4 ^% V6 S: M/ O  o
  352. 8 _' y* }5 a( s) U1 i- g/ D
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK5 u( o7 e* m. ?3 i
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"  `1 ~: h6 R$ Q. F: ~: Q6 M# \
  355. * F! Z7 Q9 ]2 l+ Z
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK
    1 Q1 q7 ~  B' r( K8 b; R  F
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    " [5 l& l/ `, ]0 h+ x

  358. 1 D) b4 w) A; A+ l1 ]' D
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    : `4 P6 }+ I) s4 l: O5 M
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    " W# h% X, T3 b: E  F

  361. # Y% \& o. c" g
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK- B( f" P* {5 L
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"/ f( V  U+ t7 S$ j0 I

  364. 9 b9 `* _1 p4 b7 H( O$ I! p1 ]& i
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK; C( [' T" W" e/ D4 M  F
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"" ?9 v! m, F4 a2 k: M) c& O8 N
  367. : P. i# y  Y1 ]4 A, g$ T
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    $ z3 s; O( o; m
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"& k, {" p/ L  D
  370. ! w" R- t& G" m- m6 g
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    4 ~& Y8 O5 o6 H; ^' h8 r1 ?2 A
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"& {: H& C0 L8 y% L/ t; g' y
  373. ! W! J1 D) ?8 J, b0 r2 a
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK9 q" L3 W9 H% h" U- i
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    3 O; N( w+ S8 h4 D' d: N/ U

  376. 5 o4 |0 d1 h) j& R3 V3 m
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK. G" ]6 Q+ Z- Y* @  J" T
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank": E( n. l$ ^; J
  379. ! M, |, ~! }: L
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    ! g+ V( L5 ?7 Z, o' o; i. w2 q
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"2 Q' Q$ \0 k+ Z$ y. x

  382. ' b$ h0 o" g& d) B. d; D( t
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK8 G. J9 L- e" e. v$ l7 m& e& G
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"/ h! _* `. ^! B2 s

  385. 8 |, `/ J' i6 i9 o
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK# ?$ Y9 b' s  X7 e( p; T/ Y  O
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"1 o! q6 Q; [% V9 ~/ C( `$ V
  388. % U, H) z! E7 u8 U; p  f
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK$ O8 w8 I3 w0 a
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    6 C2 ?  }; u. g: E$ X/ o8 c5 s

  391. : t' ]" b) j" H+ ~
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    1 B8 H2 g* E  z/ F
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"
    & X4 H2 l3 W  ?# D- ~' l
  394. # B' `" \5 n+ F+ _2 {) @% ?) c
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK1 u# }* q0 |/ r( j
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"0 u7 f$ c7 u4 L! W! `2 J+ ]
  397. ! d! Z; Q, F1 e" F0 ]* g. E
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK& k0 y. C4 t' w7 `
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank") j. @- b& C7 L' }4 Q$ m, F
  400. / h6 E9 x7 d+ g2 {( h3 @8 G# N
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    6 E4 e; q. ~8 M2 S, x8 g0 G
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    8 Y: p5 p: {+ C% W
  403.   X0 [) w/ b0 ^
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK
    5 G. u* B" h! ~, h( o5 \
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"+ d0 Z9 s4 ^4 k# V. J" O0 f

  406. 1 Y# T9 v; G. W* x7 a0 w
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK8 t# b5 X  @2 |1 f
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"0 c( [& s' ^: j5 N( x/ i

  409. , e+ Z4 h; l$ e. t; ]
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    & c' |$ o: G& L( E+ m
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    7 ~6 T8 L8 m' `  m' x& Y/ e

  412. ; B: O2 ?- R0 p. B% [
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    5 Q* R$ S$ ], C0 l$ {* F# L
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    " q9 ]. U& `: O& `% Z1 e8 O

  415. 0 M: [+ P, U  X3 L- `2 b& v7 W
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    0 U) N+ _- S  l' N7 q% G
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"! V1 R( K2 J5 l" i/ d/ p
  418.   {2 B* H0 x' q" E5 h
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK+ ]' z' i: x! l7 X  z
  420. .ORG $D400
    & u4 }( W2 l" g% |
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank": {9 K+ k( n' {7 Y

  422. 7 ^, U0 o! O# Z: [# t; j$ G: j
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    5 R/ [( f1 H9 i8 d" X2 K4 b
  424. .ORG $D800
    & m8 W  T& ~+ [$ @8 j
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank". \5 X2 V5 h- i- {1 q5 @
  426. ) r, Y+ \! @* x. p% m3 x( g  B' \
  427. .ENDIF) j* K" O- H! f5 `3 r* ?) ]
  428. 9 ~5 B5 m0 l3 B' I
  429. ;CHR图形数据1 i! q  d  E% K5 i5 S
  430. ;======================================================================
    ( B! K) O" H9 ?/ H
  431. .BANK CHR_DATA_BANK1 n# A, Q5 l$ E' G6 C3 m
  432. .INCBIN "chr_bank/chr_data.chr"
    ' |8 c" R3 b# ^( O0 h" e

  433. ! v6 P- k& J3 b3 t" F5 M
  434. ;======================================================================5 |, P& U, x; K7 L3 l
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK: E  r5 i; I" s$ \$ D% ]6 L
  436. .ORG PROGRAM_ADDR
    0 X) J/ |; e  v2 C, \
  437. ' G0 H4 w4 O: t8 J
  438. ;==================================================0 _. T" I% }7 L& r3 f
  439. NmiProcess% i: y0 f* C6 v0 Q: v- \

  440. 8 h( [  L2 y. u1 O+ f4 L5 a
  441. ;关闭屏幕控制
    * i! |7 T$ x3 X" b- T. A) u
  442. LDA #$00; }% d7 i' n+ A- h( ]1 [
  443. STA PPU_CTRL
    + h% O* G! Z, Q$ k+ Y  Q+ e

  444. / p7 |' l- E, i+ U
  445. ;没播放音乐就不需要触发IRQ4 ?2 O% A4 E! v3 i* ?4 H
  446. LDA <Music_Stop_State
    6 F7 b) c4 o3 s" _& B7 \& _
  447. BNE NmiNormal% U$ Y4 J8 `' W4 x( `1 `

  448. 1 p8 [! y0 S' \( Q6 c/ j7 R
  449. ;重置IRQ索引
    8 P0 I- ?' i# q! i7 h
  450. LDA #$00
    9 D' x  s3 z* ^. ]
  451. STA <IRQ_Process_Index
    ! }4 ^2 R' E3 g) @; p! ?

  452. " o0 l9 q( N, x9 J( n, v( G# a0 `- j  j
  453. ;时间秒数为空则跳过/ f' f$ v! y3 U7 Q, O/ O
  454. LDA <Time_H  t+ C+ |* Z# y& @2 T- G
  455. ORA <Time_M- P+ q2 }7 d# J/ G, A" C4 }
  456. ORA <Time_S- t" E, M9 _5 a8 n1 I6 u6 t
  457. BEQ EnableFirstIrq
    ) _$ D6 x2 E! G* r/ F" H

  458. ' P' g* q( j. |& ~% H  {8 d
  459. INC <Scroll_H
    / P4 q% p6 @' [$ ~

  460.   R; K+ L0 D0 e6 Z7 W
  461. EnableFirstIrq 7 }) E8 B- Z! ~* n
  462. ;80条扫描线后触发IRQ
    ! @3 p  i, }. O6 Z
  463. LDA #IRQ_SCANLINE& T) }* Y: ^% h  D& y7 ?6 K6 O  i$ t
  464. STA MMC3_IRQ_LATCH8 i$ R; M% _; O8 i2 u
  465. STA MMC3_IRQ_RELOAD2 [$ x# i0 e8 x
  466. STA MMC3_IRQ_ENABLE+ B2 T2 z' v; o6 q. d; D/ b; }
  467. CLI6 z3 c3 S& ?- V7 o! _" ^! g, J

  468. : ?% P$ {, h+ ?0 I2 N' C  S" O
  469. NmiNormal2 _! n' E+ ^6 H- u- \8 k$ m6 i
  470. / E% q5 m+ r7 s5 v0 i7 e
  471. ;处理PPU图像2 U, n. ?5 ~  F: K. g
  472. JSR PPU_Proc
    - N; P4 l. f! Z3 K8 N0 O6 C

  473. ' }: P9 O" ]9 Q: M/ w( D% r, R
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)
    1 ]: ~& f3 A  d4 C' c9 g
  475. LDA PPU_STATUS
    5 n/ {- e7 j5 y* O
  476. ;LDA #$00- D: J% @, f6 u* o( P" x
  477. ;STA PPU_OAM_ADDR
      S3 Z4 G- q2 [" s2 D& R9 c) V9 O
  478. LDA #OAM_TEMP_ADDR / $0100( w. W, V8 V& R- R" F7 v; H' x
  479. STA OAM_DMA, n& i+ p$ h8 H
  480. 8 t) {- I/ c* @( m2 `
  481. ;启用NMI中断
    8 U  ~7 [  _# h5 C( x
  482. LDA Screen_Ctrl: v9 W" N5 b2 L8 u  `' }9 ]7 D
  483. STA PPU_CTRL' {8 p( |1 C9 X

  484. 2 G8 ?, v. w& `; E8 o
  485. LDA <Text_Disable_Flag
    6 f2 o9 e! Z5 N8 E+ ?, ~4 A3 l& H
  486. AND #TEXT_DISABLE_RAM
    3 l& K/ N6 E# l* `/ L
  487. BNE Nmi_Sound_Play
    " i7 n* A9 Q7 k" b% V
  488. + J' }! Z3 S: M$ f& P  G1 K0 ]
  489. ;处理手柄输入
    " O9 B' z( Z1 H  \
  490. JSR Key_Proc
    # K1 K3 Q$ u- r% a& d& [! R
  491. 1 \- u$ u7 Q9 }3 X) n6 o" ?
  492. ;切换音乐(手柄触发)( c- X" D3 R/ E* r7 v7 Z0 B; x
  493. LDA <Time_Wait_Cnt& {9 [" D" I' l! O- ^! Q% g! P6 g
  494. BNE Nmi_Cursor_Arrow
    , f) Z! p, D' i9 u) \8 {9 s/ F: O
  495. JSR Change_Select_Item2 t8 [& N' D7 v& F; r

  496. 2 l; u0 M* u% D7 j: `# V
  497. Nmi_Cursor_Arrow
    " R( f1 Q; l6 ^8 P
  498. * g( T) w+ y( Z$ b/ n
  499. ;处理光标箭头
    6 V9 ~6 `8 x1 J, C. D
  500. JSR Show_Arrow
    / ]8 S9 N) P, V2 o

  501. , s7 w9 @+ G7 l+ a4 V0 M% [
  502. ;更新调色板* ~; P% [) f( c- A
  503. JSR Update_Palette_Data5 u+ e$ ?* M2 V$ l

  504. $ e9 h  a" w5 g: T  h: t
  505. ;显示时间(缓冲)
    3 C  ~2 j( u$ A* a$ t5 z
  506. JSR Time_Show
    ' N1 z5 S- o; _

  507. " {- Z/ v( A' U  m* K8 R
  508. ;音乐显示(缓冲), O" K! k; i0 n9 A* ^6 E
  509. .IF SOUND_BAR_SHOW_ENABLE1 ?+ P- G" o) D4 ?; A
  510. JSR Music_Vision
    , [8 m0 ^* u( H5 V- N; p/ a9 f
  511. .ENDIF
    8 [, ^, p  {" |. q  \: H$ r
  512. + S# L+ I0 H' \" v
  513. Nmi_Sound_Play
    + }1 @, w+ k* a5 o9 |8 K( e
  514. ;播放声音" v  S9 f4 Z; m+ o2 m! b; h' o! n
  515. LDA <Music_Stop_State
    5 P5 V$ ]. V: ^. d; c3 s6 ~6 K# W  A
  516. BNE Nmi_Time_Wait_Set% _0 N  \9 @- D$ g( ]) r! T
  517. JSR Sound_Play_Proc
    6 y) Z4 k. ?: A, g5 s2 H
  518. 6 l+ P2 b- N' p
  519. ;播放计时0 f% Z' w2 e* R. \/ x
  520. JSR Time_Count7 I9 S$ T* K$ `1 c0 a
  521. + E: t1 T  ^+ f0 C
  522. Nmi_Time_Wait_Set
    ! L: k. X$ M; A
  523. LDA <Time_Wait_Cnt! `9 M5 J% S: }& Y+ u
  524. BEQ NmiNormalProcessEnd; F$ y' R4 I+ J9 c6 ~
  525. DEC <Time_Wait_Cnt
    % ]( _% L  D9 H5 M; ]1 P+ O: P2 r
  526. NmiNormalProcessEnd& k# \+ z! w2 r- s6 Y, l2 r
  527.   B1 ?: z0 f! Q* i3 u( q" s" Q
  528. INC <Nmi_Time_Count& O* U6 Y$ l' H7 B, h5 V

  529. 0 j- F! C) e* V, w! G0 q5 l6 g
  530. RTS/ K/ l8 j% J) Z9 h5 Y! O
  531. & d  ?/ B$ t1 e" p' D  B
  532. ;==================================================% |3 o& |5 ?; U. `) O2 F; J/ Z
  533. Init_MMC3% b9 t* \8 A  D) s; d
  534. ;==============================) J  s* G& H8 T% L7 w& t% e
  535. ;禁用IRQ# W' H+ N: }) Z7 O
  536. STA MMC3_IRQ_DISABLE
    " G) T! w: B# l. A3 M+ j
  537. 2 z" p2 q, X; e" A3 W1 F
  538. ;水平镜像  o: ?. ]( G4 Z% }% E6 B- ]
  539. LDA #$01
    , G' Y$ [* ~* m: N: |: G
  540. STA MMC3_MIRRORING
    / r5 D9 ^- g+ v# y
  541. 1 A# o9 B/ g6 L- E1 j
  542. ;初始化图形bank/ p$ k; w5 p  @: w" F) u
  543. JSR Init_MMC3_Chr_Bank0 R( I- J3 }7 P" B  @

  544. ! A$ u& _  v+ o
  545. RTS, T. o4 ]2 e; A
  546. ;==================================================# _7 B$ y4 C! m5 D" I
  547. ProgramBegin;主程序0 G. N: q7 x. a$ p$ ~6 r
  548. LDA #$00# x  Q8 W* s2 x, ^
  549. STA PPU_CTRL
    ; F0 _. ]; d* R' m/ ?- w
  550. LDA #$00" v6 w7 ~) R8 `6 `( e
  551. STA PPU_STATUS
    8 c& d& |$ m0 c  o& r9 D7 R
  552. STA PPU_MASK
    ' _5 [3 }5 P& u- Z5 {# c
  553. STA JOY2_FRAME& Q! s$ C8 A9 v1 h

  554. 9 |) A7 }" ^2 g- J
  555. STA PPU_SCROLL
    0 L9 G4 B% y; B  M6 y5 V" A3 k- f
  556. STA PPU_SCROLL
    ; T/ u3 M8 K) o2 I! N- D5 a3 r- P
  557.   N; J# o" g0 O4 Z% n; T$ N: s) j
  558. ;==================================================
    & F5 l2 U, c$ m& |) A/ J
  559. LDX #$FF
    7 Y/ f+ i/ T2 {5 Y
  560. TXS
    3 ]3 ?' Y! I0 {; h( {  C/ v

  561. ' S- h3 V! @4 s
  562. JSR Init_MMC3
    7 B- }7 v- U; e. D- Q

  563. 2 j8 u  @8 ^" ]7 f. U( d
  564. LDX #$02# B. Q  Y* m) d; a+ `' K
  565. Check1/ p  ]; d* ~& ]- u; w" M
  566. BIT PPU_STATUS4 ~2 l/ `) I1 x
  567. BPL Check1
    9 f' V" B! g6 f( l, n! _& D; W
  568. Check2
    2 R) D5 ?& ?+ Q& x8 `' Y
  569. BIT PPU_STATUS5 |& B- ?) f) o' U; j: [& Q
  570. BMI Check2
    7 X% x0 @9 }# d4 D) i

  571. / U! O/ `8 X- f# M
  572. LDA #$0F
    - Z) Y$ j2 L, ?4 Z) v0 u2 e5 P( d
  573. STA APU_STATUS
    7 q# C. b- @8 ~# K$ O
  574. LDA #$C0
    ) `9 n5 f+ v# x% x& p
  575. STA JOY2_FRAME
    & u5 o; {; M5 u( ], G
  576. ) h; W* w; N9 ^& Z! v
  577. LDA PPU_STATUS
    : v7 _( Z  L2 J4 x
  578. LDA #$10
      k& A- E. p: W6 e% _* t, o
  579. TAX
    & C- N2 |) l% c+ a/ f; l6 Z
  580. Check3
    " R) b9 G! \8 Y3 A- U
  581. STA PPU_ADDRESS. D$ Q( ~! v) B/ j  S: t& A
  582. STA PPU_ADDRESS/ \  |: [3 N6 ^5 g2 A
  583. EOR #$00
    , O  x# d6 F+ z. G) w7 D5 U
  584. DEX
    6 W# [# R7 n5 y9 o$ b& M9 s% H( H
  585. BNE Check3
    6 \$ B* Y, N/ ~- p" A( R
  586. ;==============================
    . l! P  g2 k3 b4 s2 u% B: }* q
  587. ;调色板清空2 x! J" ]8 o; ?" w  @7 G
  588. LDA PPU_STATUS' S5 ?" ]" Y/ J! u6 I  r; J
  589. LDA #$3F
    - }- T( P8 o7 x4 f
  590. STA PPU_ADDRESS
    $ }& N' T2 A! h) J- l  Q4 d7 O
  591. LDA #$00
    : k3 X3 m0 H# L; n. [7 r) N
  592. STA PPU_ADDRESS8 T7 ?. G) H- d2 c; Z( @
  593. LDA #$0F8 V2 y8 @3 N1 `4 }
  594. Palette_Clear% f! D/ X  b' S3 x; J' m* }
  595. STA PPU_DATA  t, K; r- V9 K: w
  596. INX
    ' [- K; z8 n, n7 O) U: l
  597. CPX #$20
    7 @$ a4 w1 ^, I0 j1 n
  598. BCC Palette_Clear
    / c  x7 [8 h/ B% O. ^3 P* \
  599. LDA #$00- p- Q- z; m4 f' m+ X$ i, ~
  600. STA APU_STATUS# {5 K+ T2 y/ X9 l4 I

  601. ( C# K" s0 f3 r1 l$ C
  602. ;==============================! ^; R! c0 N$ W4 r# K% ]. m
  603. ;RAM初始化* V5 Q# W! Z9 e0 a3 l4 ]
  604. RAM_Clear_All( ?3 F1 f4 |) e" d8 L
  605. LDY #$00
    * L: `# b9 q% Z
  606. LDX #$08
    / x; @5 t+ i: O; e" E# l& l, w
  607. LDA #$00
    / p! l" e& w9 l
  608. STA <$00
    * W  c! M; {' Y9 x# w
  609. STA <$016 z8 E' `( K; t7 w  m: M
  610. RAM_Clear_All_Start) r) r7 Z& d+ @" E  {4 N# v
  611. STA [$00],Y
    ' Z1 V" m5 y! t5 }" U* M" p
  612. INY
      t. y  ~5 ?, Z8 f! Z
  613. BNE RAM_Clear_All_Start& z2 h6 S; P  ^# C$ j, t$ d
  614. INC <$010 B) L* n/ }; H- ?: P  J
  615. DEX
    & {5 u; ?7 C! p. Y/ T: W# x2 H( N
  616. BNE RAM_Clear_All_Start
    - n! J  |& P( i# d9 r' p0 x
  617. ! \% _0 {( y* j; I' j
  618. JSR VramClear
    $ ~; _7 X5 |2 L! D; H7 T
  619. JSR VramInit
    - v, r4 F6 a3 P9 U' [& [2 A
  620. JSR OAM_Ram_Init
    9 w; O0 k: T+ V0 [' e( ?9 j3 P) V0 b
  621. JSR Init_Palette_Addr
    ) v) m! w( W1 g. |  h# W4 A0 N

  622. 7 J) p, c+ c5 a! m
  623. LDA #$FF
    " O  Z/ j: |& I6 r2 F
  624. STA Use_Ram_End
    ! j( q# P) `0 w/ S
  625. ;==============================1 ~# q' t! f  i  V2 Y( m! G
  626. ;初始化背景调色板; _- Z: _; q7 y% I" S
  627. JSR Set_Palette_Color  l8 P8 q9 n1 V6 _/ h5 d& _! ]
  628. JSR Set_NameTable_Attributes% o% v8 c$ z) R9 L' f6 b  j
  629. ( f  `6 f! o* Z/ k+ k
  630. LDA #$00# N5 B0 b: O. @9 t, v
  631. STA PPU_OAM_ADDR
    5 ~( y  o2 }0 f- q3 ^- X! u
  632. LDA #OAM_TEMP_ADDR / $0100- V/ g3 l' Z; J
  633. STA OAM_DMA
    + s9 c; c$ g8 O* x. ?) P; }1 K. z

  634. 2 X9 f) x+ r5 ^' U! p+ _( P
  635. JSR Sound_Reset_Proc
    ( v: B; x4 g5 e  D: h2 V
  636. JSR Set_Sound_Total
    % ~, G( Q! ^" g" E( y
  637. 0 X: `( C4 H7 Z3 \6 V" n
  638. Init_Start_Music+ t0 m) i, x6 m& b
  639. LDX #$009 d9 _1 B3 F; S7 Y% _- I+ V
  640. Init_Start_Music_Write, a' M& r5 T$ R- d* w! B+ A  ^) k
  641. LDA Sound_Start_Port,X
    0 L9 B' x) Q( Q4 v& ?" ~+ |
  642. STA <Music_Cur,X
    & w: N7 c; S# u; n! h
  643. INX
      H6 b# S: c3 @" K4 A1 y8 s
  644. CPX #ITEM_MAX_SIZE' g& t5 ^( l/ l+ k0 A- C- W1 e
  645. BCC Init_Start_Music_Write
    & F% g- ?& `. |& h0 j

  646. 1 n1 c4 u( r, t" c7 w
  647. JSR Show_Music_Text: |) ^/ v8 Y% e
  648. * I) h2 u  m6 p: n3 q: Z+ E4 H
  649. .IF SOUND_BAR_SHOW_ENABLE3 L* u. u; |- {  R3 E" a
  650. JSR Sound_Bar_Text_Set
    ) j& e. v6 P' E' u7 l3 ~0 F$ |
  651. .ENDIF( {4 O4 F6 H4 a7 U5 f) I. ?5 _

  652. / h/ D" P* c2 i' D2 b
  653. .IF Track_Name_Pos6 s# {3 ?+ k$ ~) _7 `- o
  654. JSR Show_Track_Info
    ' I+ o: o! m4 I) M0 e: ~
  655. .ENDIF
    * t9 B. S9 x" S1 f
  656. 3 l# Q( p+ @+ O5 f8 f. w
  657. JSR PPU_Proc
    ! o, ?5 `& z3 @4 c* `5 r  v$ }

  658. ! |$ C. \6 ?: r- h7 k
  659. ;==================================================# Z: W4 P/ ?) k/ }, q
  660. ;音乐bank初始化
    5 M3 F  Y8 u, l; R) p8 u  K
  661. JSR Init_Sound_Bank( o) }7 D1 C& s' G$ b
  662. 7 _* N% M' _5 u" `
  663. JSR Music_Show
    8 l8 t2 q7 i- n+ r" Y
  664. JSR Time_Show
    - P& @( C' R- }
  665. JSR Music_State_Show
    # i; P9 k6 ^9 T3 y3 Q6 q6 i$ [
  666. JSR Time_Delay' T, r- r* M) d7 f6 s
  667. 2 m' o1 ~, |; k  Q! ^: c
  668. LDA #$01* e% p  T: Z" A, s
  669. STA <Music_Stop_State% U- t8 W/ \+ F: z2 m

  670. 3 C1 W$ B6 E8 K8 C- c
  671. LDA #$88$ V( @& C& d4 e: F
  672. STA Screen_Ctrl
    1 P" s1 V* H9 e7 W
  673. STA PPU_CTRL* b4 v: V* [4 B3 _* G4 B1 O/ ~) \
  674. ! W' f6 Z3 |  ?' T2 s6 S( y
  675. JSR Show_Page_Text
    - Y, `% q) F  M+ w- T7 s/ Y9 S
  676. # l9 u7 @* `- y
  677. LDA #$10
    / y  B. r0 |) H  Q1 S9 Y- w/ n
  678. STA <Time_Wait_Cnt
    * }! f4 t- T# A* g
  679. : ?4 h' M; V0 B
  680. Wait_Time_Over
    9 F) o1 f) X2 d7 L9 u" G/ y) \
  681. LDA <Time_Wait_Cnt
    3 i4 v  r9 K# J1 O: b. O& R( X3 I
  682. BNE Wait_Time_Over
    & x4 q- G. G8 E8 N4 P0 v4 d! r

  683. % m. C7 V! _0 u% W( g$ n
  684. JSR Show_Arrow
    ) f9 K" [5 K8 A" T6 |' f7 ~
  685. LDA #OAM_TEMP_ADDR / $0100
    6 S+ T; ^3 I2 b' W
  686. STA OAM_DMA3 ~$ v/ y, j2 K- A5 l

  687. 2 O# I3 a9 f; [% @+ f
  688. LDA #$1E
    4 X1 c4 L( ?, o4 s/ y
  689. STA Screen_State
    : O3 l. P; W' x! U: B; ~2 s; d

  690. ; y  J0 Q- Y, ~, V5 G3 f& Z
  691. LDX <Music_Item_Cur
    " S2 S: _4 u& y* s( V% R" E
  692. LDA <Music_Cur,X+ h/ @" H0 z0 k( t' e
  693. JSR Sound_Init_Proc
    # M; s2 v/ _  e/ F6 `% i) q
  694. . j8 f  S1 k3 V& W8 o5 q
  695. CLI; O9 Z" e, O( e2 |' J! J$ @9 |
  696. JMP MainLoop5 A6 Y( s7 L1 K3 n+ T
  697. : [2 u" G3 E  m* N5 [% U2 d
  698. ;==============================8 y0 k1 T. S+ t# F0 s
  699. Time_Delay;延时等待
    " \8 g- ~; K/ T
  700. LDA PPU_STATUS( q& Q0 X8 u3 P& ?2 J
  701. BPL Time_Delay
    " u6 Z0 k1 {8 ?0 j
  702. RTS
    * k/ a0 V4 ]/ ^5 J' r
  703. * M" k4 r4 o7 A/ O3 `( ]5 G, J6 d
  704. ;==============================
    ! }, b9 j4 Q7 q9 l7 k
  705. OAM_Ram_Init;初始化精灵内存
    0 V8 V3 q) N& G3 Z
  706. LDX #$00
    / |+ ~. }0 C9 A+ J
  707. OAM_Ram_Init_Write0 }) @6 i9 I  Q! C8 x
  708. LDA #$F8+ W7 n$ [; R4 |; a* V4 ]
  709. STA OAM_TEMP_ADDR,X
    " }% ]% m( W2 ^* h1 x5 J3 l
  710. INX5 f7 m( Y: O* w( h- v& @3 ~: j
  711. LDA #$F8
    " V& w" d/ {( @# V( C1 y6 T
  712. STA OAM_TEMP_ADDR,X1 |& c( \- v0 r) [$ S. ~) j
  713. INX0 Q! a  j3 x& P+ M* Q+ X( m
  714. LDA #$00: u  F; c( Z! G  B8 \
  715. STA OAM_TEMP_ADDR,X' L! q  R5 N, H9 G1 \; D
  716. INX0 x: ^+ g: \6 e3 [+ L$ e1 v7 [
  717. LDA #$F8
    $ U  k4 W3 `, B( _; D4 `* W: _! p) G# }
  718. STA OAM_TEMP_ADDR,X
    : B8 K+ P7 C/ B; N2 A  o7 R
  719. INX
    . Z. ?/ L5 L8 g$ c: ]8 D
  720. BNE OAM_Ram_Init_Write) ~, X1 {7 x0 I+ c
  721. RTS5 |* c# U& g( i/ f6 O( w2 ~
  722. 0 h; W4 Z& Q6 `) V, H) B' c5 Y
  723. ;==============================- }' v$ N  H5 N' [$ W
  724. VramClear;初始化图形内存$ e) G( ]+ d: {0 i; _
  725. LDA #$20
    9 y1 J3 ?" L4 c$ S6 c* u; i: `
  726. STA PPU_ADDRESS  N. v2 B% N7 n% e
  727. LDA #$00
    / }7 c" f2 N/ F8 O6 n% D/ {9 @
  728. STA PPU_ADDRESS
    $ ]1 T) M) F! {8 m& r" u
  729. LDA #$007 i3 T' }5 Z# g# w2 u3 u
  730. LDY #$00
    : g- Q7 y; G0 {
  731. LDX #$10
    % }1 a0 Z6 y% U6 b5 J/ e7 E
  732. VramClearWrite9 s1 ~  N) H2 n! N2 Q5 s* M
  733. STA PPU_DATA
    # J, z+ B/ x8 R, n9 d
  734. INY6 E+ }  j% k2 e" x: l; I
  735. BNE VramClearWrite  `: z* S7 }. a( d4 s
  736. DEX
    ! t3 e: I8 W, W5 k8 K  P% O
  737. BNE VramClearWrite* f  }& [2 ~: i4 j7 l& L" F! D
  738. RTS5 Z( h8 `# F- _! ~# b$ \
  739. 7 b; c2 d0 \; ]' T  i( {% A3 A
  740. ;==================================================
    ! q- {! M& N# i" ?6 O' F
  741. ;设置MMC3图像bank
    ! C4 e5 W' _- q2 K8 G% t5 q9 ?
  742. Init_MMC3_Chr_Bank
    ' u9 x' g; ^% A) e
  743. LDX #$05/ r# S% T: e9 s0 T
  744. Init_MMC3_Chr_Bank_Write9 Q% C6 e" K4 L
  745. STX MMC3_BANK_CTRL
    + R, Q/ }! l4 f/ j- }
  746. LDA MMC3_Chr_Bank_Data,X. t5 [! ^& |1 `9 y$ P8 R
  747. STA MMC3_BANK_DATA2 e. S& i9 k* Z1 D- R
  748. DEX
    " i+ o' C# g' F3 u7 {" w: Q$ c
  749. BPL Init_MMC3_Chr_Bank_Write
    9 }$ V3 L9 }6 V4 `8 L) r
  750. RTS+ `7 O4 D/ N- y3 m7 j
  751. ;--------------------------------------------------
    7 w  ]* @; o5 w" X4 F/ {
  752. MMC3_Chr_Bank_Data
    / d) ~# _+ _8 M9 [9 W0 S3 Z
  753. .DB $00,$02,$04,$05,$06,$075 A1 T, Y% a6 v' l( ^# M( ], W# V9 t/ ^

  754. 8 {4 J8 q3 y0 B+ C! p! p
  755. ;==============================1 x- R( C( I' _3 @* z# C& y
  756. VramInit;初始化图形内存
    6 v+ D. x+ D/ y! o
  757. .IF CHR_RAM_ENABLE
    # I2 `% h, H/ X9 o
  758. LDA #CHR_DATA_BANK
    + j4 Q2 F  s1 ?7 z# C+ N
  759. JSR Switch_Bank_A000
    $ N9 X$ g6 o/ K# C4 f% W% ?/ S
  760. LDA #LOW(CHR_DATA_ADDR)
    9 ]% P# o) |4 Q  x
  761. STA <Data_L4 }/ e5 C( V% p% P) k2 H3 x
  762. LDA #HIGH(CHR_DATA_ADDR)
    2 I$ @+ u' Z+ y, f- r. S
  763. STA <Data_H
    % \8 u: T) h! M* K5 X/ S9 m9 }# I' F
  764. LDY #$00
    ; o8 t( E6 {( p( O0 [
  765. LDX #$20( F- X4 Y. Z: V' S( l' z' X
  766. LDA #$00
    9 H& Z/ |) n) n2 v) K; y1 `; [
  767. STA PPU_ADDRESS* F( |( H  g9 p, g: Z2 a  R/ b7 W% B
  768. STA PPU_ADDRESS
    & v/ w  {: v. O4 o
  769. VramInitWrite
    ) ?" m# }$ l& }; K  l# k% g
  770. LDA [Data_L],Y
    4 g+ {2 v& h4 [6 ]/ }- R
  771. STA PPU_DATA
    ' S! a) t- G) y% ]0 t
  772. INY1 d7 T% \8 g" J1 W+ _; Z1 {
  773. BNE VramInitWrite( P- b4 ~/ b! |- L( W' H
  774. INC <Data_H6 v3 i- W' S7 U' m
  775. DEX5 g% j0 R, D% b0 W4 o5 I
  776. BNE VramInitWrite
    ! U$ k* `$ m7 A$ p+ m$ h
  777. .ENDIF
    * w, l7 R/ o6 ^  I- S; q
  778. RTS: ?8 p! }) R6 l& O% N+ ?9 ?

  779. ' ~2 Z+ l2 U) c+ Y) ^2 h7 G
  780. ;==============================2 b  n, _0 [2 L: q! X
  781. ;音乐切换
    ) |1 x) s$ U+ T4 Z+ s
  782. Music_Play_Change: c9 F3 `+ V6 |* F2 Q6 a
  783. LDA <Key_Once% k" i5 J, _' w
  784. AND #$FF
    ; @9 |' x3 E2 n# \4 U
  785. BEQ Music_Play_Change_Check  k2 t+ |& i- N6 ?
  786. 9 C8 S- `' |3 |3 w
  787. ;禁用音乐条刷新
    % Y5 s3 H0 S: Z9 Q
  788. LDA <Text_Disable_Flag2 Z3 b8 x2 Z6 Q% J" b! S; z' k
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME4 q; M0 }: z1 }$ E; d
  790. STA <Text_Disable_Flag% L# ]$ y& V3 b3 D; F

  791. 1 l" h/ L& t  o" {  O
  792. Music_Play_Change_Check
    6 t7 K, M/ s$ V5 o
  793. Music_arrow
    : U- {/ |& }5 H) ~- f4 W: S; j
  794. LDA <Key_Once
    ) Q1 \/ m* Y4 [: ]& x/ S- {' \
  795. AND #$0F; g6 r5 \) e, e3 S1 [
  796. BEQ Music_Play_Change_End
    * P; @1 e9 g3 y4 M$ @( u
  797. JSR Music_Track_Change
    & I' M) R: R' K* o2 f0 y; z
  798. JSR Sound_Reset_Proc
    ( T# H. c. {3 B& I% z# e, w
  799. JSR Music_Show* ~+ e( z( b' I: c5 }- |4 X" p- K
  800. Music_Play_Change_End
    / Q: z3 F1 C, @, A2 ~! ]. b. Q. A
  801. RTS
      f2 p' f: j  z' A) l$ e2 g
  802. : y0 {  `4 \4 d; M! E' U
  803. ;==============================" b1 Y  m' L1 R/ w4 D
  804. ;音乐曲目切换
    , h! |* Y+ A0 `! G, o
  805. Music_Track_Change% {8 b: m8 [( C6 h9 ]1 I) e! e
  806. LDX <Music_Item_Cur( n& Q0 T" V2 B7 K$ k* K( l
  807. LDA <Music_Cur,X4 s3 ?! G  c. W9 g) e
  808. STA <Music_Last
    # B' x8 a7 F4 K
  809. Music_Decrease5 g$ H  X- S% K) Q! V! \
  810. LDA <Key_Once% c3 a& m/ b* c. Q1 [! o
  811. AND #$429 e2 c+ j2 n6 u* l
  812. BEQ Music_Increase! E$ n1 {6 X) m* g/ z
  813. LDA <Music_Cur,X
    / F2 p4 L/ m: o9 S
  814. BEQ Music_Increase
    6 M' o  j' S4 z5 ?  C: U
  815. DEC <Music_Cur,X
    , f" ?- W& h/ J+ }) w+ }7 ^; s
  816. Music_Increase! u$ |, A: S. R& `
  817. LDA <Key_Once
    ) G3 S/ K2 @" e8 M/ E. O, G0 ^
  818. AND #$81
    , F8 O( f/ r) `# {
  819. BEQ Music_Decrease_10
    ) K- J8 p$ S/ O( @
  820. JSR Set_Sound_Total9 ?1 s+ c5 F: _) G0 ?+ U
  821. LDA <Music_Cur,X
    - C5 c( ~$ L! ^- p3 u- `! T
  822. CMP Music_Total& _- T1 a+ t7 z' G" N% g  x
  823. BCS * + 48 v0 j, {8 q; V  r
  824. INC <Music_Cur,X
    ' X0 O- c' j$ S( S; \# i
  825. Music_Decrease_10
    3 G" w9 ?9 f5 J3 a6 C* E
  826. LDA <Key_Once2 v( T+ Z3 }5 ^  _6 G* T
  827. CMP #$04
    ) g+ B7 x7 T4 i! r- p
  828. BNE Music_Increase_10# B. H9 {& j* S+ {
  829. LDA <Music_Cur,X2 m' X' ~; x( P7 M6 b
  830. CMP #10
    ( m% @+ \' t9 C. j+ i; G5 J: K
  831. BCC Music_Start_Song_Min7 ~8 p0 {. Z5 h1 u2 H' E6 V9 O' X
  832. LDA <Music_Cur,X
    8 b$ E5 k$ u, d. v
  833. SEC1 S( h) ?9 W; Y3 P8 G
  834. SBC #10; t' C8 x: C, t# s9 U
  835. STA <Music_Cur,X
    0 w/ ]. H' N8 `8 U5 C
  836. LDA #$00" i! L& j( _% C0 g
  837. BEQ Music_Increase_10- T, s& S/ J, W% j  j! Y# k
  838. Music_Start_Song_Min
    + A; z. F* ~6 M7 J8 k
  839. LDA #$00. A6 L! Y* }6 c  ]8 a3 T
  840. STA <Music_Cur,X
    , Z& C/ x$ U: W' b, n) ]
  841. Music_Increase_10& y' ]+ }# l6 P5 _$ X: {
  842. LDA <Key_Once  S" J  u$ Y9 u) w4 t. e
  843. CMP #$08
    / y) k' ]- Z8 O  Q( C: Z+ N1 O3 Y
  844. BNE Music_Track_Change_End
    1 C4 o: u# \- Y  e  M% j" u
  845. LDA <Music_Cur,X
    ! a* P; Q" w- r% m
  846. CLC
    5 J, w: m: R& |! j  a8 g
  847. ADC #10
    9 U1 b2 F% T" O! q
  848. CMP Music_Total4 Q% S8 P. |' ^- v9 [
  849. BCS Music_Start_Song_Max
    ) K" e( e, g9 ]7 @3 I
  850. STA <Music_Cur,X& D# f0 a/ m# X0 m9 ?8 b  m+ B
  851. LDA #00" g- s" @6 ]3 D8 P6 {6 L
  852. BEQ Music_Track_Change_End
    ) Z8 \3 Y- `1 n/ d1 `
  853. Music_Start_Song_Max! D* S: {) N7 `' B- n6 h% `6 L
  854. LDA Music_Total
    # b3 ]4 S! M% ~8 y2 a0 W: u
  855. STA <Music_Cur,X
    ( D! Y, T) a, j0 q% U! L
  856. Music_Track_Change_End
    * h2 B6 p! G; X) Z/ U% c5 E/ p# A! f
  857. RTS7 p2 Z# K9 D) X/ w( J. \
  858. 3 E" Y% T6 N1 B5 x$ W
  859. ;==============================
    # D- m2 X) _" P
  860. ;按键处理3 l. b# W. g0 }2 E2 V% J
  861. Key_Proc
    3 I, |0 j5 G$ S  i% A; D! J7 z
  862. JSR Key_Scan0 U- G" O5 i" B+ m8 I: _
  863. LDA <Key_Keep
    - `; a: ]/ j& i$ S/ X0 F/ p+ E0 o5 I
  864. STA <Key_Temp
    0 R& ~3 b  K! A9 U, P
  865. JSR Key_Scan9 _: y8 p' Z3 R3 g# [7 Z/ D6 }
  866. LDA <Key_Keep- E; V* v& G; ~1 i+ ^8 {# Y
  867. CMP <Key_Temp
    7 \/ i/ `! j  z/ K9 o% L0 h5 S3 y
  868. BEQ Key_Get_Once5 }9 Y4 U4 x2 K/ E. |. w$ L3 Q
  869. LDA <Key_Kemp
    ) m7 `! r9 C! b! l3 ^% r$ [* K' n
  870. STA <Key_Keep( _5 M: _! G. u- ^
  871. Key_Get_Once
    ' ]# v( A# q% t- p% E
  872. TAY3 e* s8 ^9 `6 [
  873. EOR Key_Kemp( J* u3 C. I# ~+ q' M
  874. AND <Key_Keep0 G0 [$ n6 a- w+ I% D: ^$ K" _. y
  875. STA <Key_Once
    5 T, t. E7 d: A4 z9 x$ f! Z
  876. STY <Key_Kemp
    : O) n3 I0 D4 n- a$ m! E
  877. RTS
    ) E# B4 K. g9 M' Z% @
  878. ;------------------------------
    9 h2 ?) X, i2 W9 C' d
  879. ;按键扫描8 o, M" r" t2 e: m
  880. Key_Scan
    4 p6 H' M+ B9 ~* O2 l
  881. LDX #$012 o( c8 z% R; K; V
  882. STX JOY1_FRAME' P# s8 t0 q; O2 c! S( _  w
  883. DEX
    % R9 {+ c+ }; x4 A
  884. STX JOY1_FRAME0 {/ h" [0 O& R* y8 N; x, U
  885. LDX #$083 V& L$ B1 S! k4 `, i
  886. Key_Value
    7 n5 K' A- Q% K- _2 o2 Q
  887. LDA JOY1_FRAME
    $ Y* ]$ Z' E) @  i# L, T- ]
  888. STA <Key_Getv
    ! [4 M- e# e) `6 b
  889. LSR A( m* B+ `8 I& _" T7 E9 w  \
  890. ORA <Key_Getv7 A) c( u9 O. ?
  891. LSR A3 |8 {- B. Y3 o) R7 \3 w
  892. ROL <Key_Keep
    ( l. [5 w3 i: H! }/ B
  893. DEX
    ( i; j- U+ j, [: ~
  894. BNE Key_Value. E: d) N' g: w  t2 t; w  q
  895. RTS
    8 s" m" x& o$ N; b  }

  896. & y9 f) f  k/ w, o$ Q) i
  897. ;==============================$ o3 j" v9 y, Q- X
  898. .IF SOUND_BAR_SHOW_ENABLE
    1 T2 s& z2 v' d4 M
  899. ;音乐条显示
    5 U! O0 G& k( D; n/ A% H3 S
  900. Music_Vision% Q1 C$ n4 U7 k9 l
  901. LDA <Text_Disable_Flag
    3 Q/ b, W# w. e% P
  902. AND #TEXT_DISABLE_ITEM& x9 t5 f, z+ [, `0 ~
  903. BNE Music_Vision_End% d" H3 B5 `3 t+ F, [- g+ W
  904. AND #TEXT_DISABLE_BAR
    , F1 w6 h  D% Z8 K+ S$ U. B$ S7 G
  905. BNE Music_Vision_Set
    5 ^: e5 T7 ]4 Y' a$ S- Q
  906. LDX PPU_Cur9 \8 ?7 a& X' G# J3 x( ~6 k
  907. JSR Music_Animation' ]: ?. `7 |' j: l% v: O: h5 Q
  908. STX PPU_Cur
    ' W# j& \8 H) ^; P8 V( Q
  909. Music_Vision_Set
    ; P9 u7 \# b2 E" ]3 W- e
  910. LDA <Text_Disable_Flag
    $ w: v) ?- T$ M2 b- k
  911. AND #TEXT_DISABLE_BAR ^ $FF; d' Q; N; A: y) d- E8 A0 \' p
  912. STA <Text_Disable_Flag9 k1 o$ d5 A8 B% b
  913. Music_Vision_End
    * h+ m" e, w! p) W
  914. RTS$ m; Q. P* T6 n6 \$ o! S# F2 Z( w
  915. ;------------------------------
    2 }; w. i+ \, _
  916. ;音乐条显示处理2 D+ }$ x( z1 Y; L
  917. Music_Animation& I3 u2 q1 U2 [( Z
  918. LDA #PPU_MODE_CNT_LINE
    4 i. g4 ~* y- T, S; |
  919. STA PPU_Addr,X' P6 p# m* ^8 \' Q+ Q8 x
  920. INX
    ' U, }+ R9 }( D5 H
  921. LDA #HIGH(Sound_Bar_Pos)) Y9 m. j1 ~; r% P8 X' ?
  922. STA PPU_Addr,X% T! y2 E1 D$ I. p# z' ^0 ~
  923. INX" Y8 i" o" h& q7 ?9 z4 f: F; f
  924. LDA #LOW(Sound_Bar_Pos)
    . A; h3 P9 \4 j1 E+ \7 s! x
  925. STA PPU_Addr,X
    7 D/ \2 B1 {& _" Q
  926. INX
    8 a0 E: R" M# ~6 \
  927. LDA #$08, j# y5 R2 L) G3 N2 L+ \1 J
  928. STA PPU_Addr,X8 B: H& W# i* w' o
  929. INX7 b$ a. v( S$ P: v
  930. LDA Sound_Bar* [$ t2 G. i: U1 m$ f- ]' F+ L
  931. JSR Volume_Convert, t( ?8 t; e7 X7 i, K7 p/ y! D: s

  932. & _, b! G  I8 B9 p& @4 k9 N0 B
  933. JSR Volume_Set_Cnt
    & J" y8 q( `, \1 u3 F$ i! S2 @) N
  934. LDA Sound_Bar+$4
    : x5 N1 A3 Z( Y) q" N% I& H# A; ^
  935. JSR Volume_Convert
    2 I( @  o, r" G6 {: D9 q/ Y

  936. $ Y) ~; R3 ^+ V- h) v
  937. JSR Volume_Set_Cnt9 r! Y5 R4 G- |" Q) V* q
  938. LDA Sound_Bar+$82 }( H$ z  G- w5 k8 c# G
  939. JSR Volume_Convert0 f" \  L& v6 e3 N2 D
  940. 6 P" q/ s' {% c5 a
  941. JSR Volume_Set_Cnt
    0 d6 S2 j1 l- M+ v$ e6 Z; n
  942. LDA Sound_Bar+$C
    9 l' P2 R, I7 u
  943. JSR Volume_Convert
    + P) X1 N4 _! u* n

  944. 0 f- l' [& ]4 R2 J" Q0 r
  945. JSR Volume_Set_Cnt" Q1 @1 u! g1 T, h6 A
  946. / I7 p" b6 H) y9 {, Y, C3 @
  947. LDY #$10
    8 e; X3 Q+ z) a/ b2 L) W
  948. LDA APU_STATUS
    5 K) Z) S& ?; s* Y2 v
  949. AND #$10: u1 @) b0 z4 X
  950. BNE Volume_Count) b+ E! v# X5 {+ z
  951. LDY #$00
    6 i4 \6 Y+ u% T$ D9 Y
  952. BEQ Volume_Count) w- F& c: H; O4 {- x( t

  953. 8 ]+ }, T4 x2 P* v# k
  954. ;------------------------------: P3 S4 U% U7 g
  955. ;音乐条处理; i: i/ y; F4 x$ G$ O+ T3 n  Q3 j$ s
  956. Volume_Convert! t' @3 D" a5 q2 n' m
  957. AND #$0F
    7 g- c) M9 w. m0 b. ?8 S8 ]: w
  958. TAY5 q. e- E, L# ?) H3 t* G
  959. Volume_Count
    : X. d2 n: i! k9 i
  960. LDA #$08
      J$ T8 g3 j% ]' S: n* I
  961. STA Sound_Bar_Cnt
    ( Z# t' `6 ^2 P
  962. Volume_FILL: E: N% B5 u6 `3 b- b
  963. DEY
    6 n: W; x* }6 Y1 M  T
  964. BEQ Volume_Half
    ' A% V  _$ [, U# {) J- p1 D7 M" K) X; {
  965. BMI Volume_Empty: |) H) a6 [7 i
  966. DEY
    ; a' |1 g+ l( L5 Y$ ^
  967. Volume_Full8 _5 j- i8 \- h) K7 B% R
  968. LDA #$16! v0 U. l) j+ q5 J* y5 t3 r
  969. BNE Volume_PPU
    1 U, O/ B$ @. P( }, Q7 R
  970. Volume_Half
      l9 j( ]+ z. ]+ k' ?$ p
  971. LDA #$15
    6 l5 u, d& l7 @! c3 R% h  g
  972. BNE Volume_PPU; C$ e! ]: q/ [! k% B
  973. Volume_Empty$ z. h4 F; m( g6 N# y% u
  974. LDA #$14
    $ s+ G7 a: u4 S9 [6 q5 A
  975. Volume_PPU
    6 u. |; T' U3 @( L; F6 l( H( K
  976. STA PPU_Addr,X, N2 h# m; P) G, ^/ h# Q
  977. INX& C2 R& s$ p# [2 X: u  }$ H& F
  978. DEC Sound_Bar_Cnt5 [% N: ]6 X- y% [* ?  f: L/ t7 m
  979. BNE Volume_FILL
    1 J% M5 o" E. ^: Z( q2 ?. p# E
  980. RTS- |3 Q! S/ v& K& g
  981. 9 ?; \& t( Z. E! @9 U  O
  982. Volume_Set_Cnt
    ' I+ P2 {2 _- |2 e. i9 D2 O* j
  983. LDA #PPU_MODE_CNT_LINE_NEXT+ I! ]% a* Z( c& o3 ~/ o
  984. STA PPU_Addr,X2 I& M4 N1 G( \8 H
  985. INX
    / q( c$ v& J5 h% z. E  P; x( Y/ D8 c. E
  986. LDA #$08
    7 M' R. ?% G( a! t- o0 ?
  987. STA PPU_Addr,X% t  {. @& _5 X: e4 [  H
  988. INX8 r  M8 d5 _  p3 q0 U
  989. RTS1 W5 f6 e8 @+ h, y4 X

  990. $ w$ o9 a7 v4 \/ r# _
  991. .ENDIF' e$ r4 ?! F; m

  992. 6 ~+ m" h. N& _4 A( D5 E$ ^
  993. ;==============================
    - p! j( Q% C0 T1 J8 _( ?# o! j
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    ; s. z. w  U& V0 N5 w( ^
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    % x3 `  [% c& t% v' J2 ^. Z
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    1 `. o" s2 a& G5 V1 S5 z0 P  b
  997. ;------------------------------
    1 o* E. L8 T0 z6 ^
  998. ;PPU处理
    ' g- c- |/ y- L6 k$ I, D! X7 `
  999. PPU_Proc0 m8 E3 m; |2 T
  1000. LDX PPU_Cur! M9 b) Y' Q. A: g' J2 }& x( X4 o
  1001. LDA #$00
    1 M$ f1 w0 t% E+ Z% Y  M
  1002. STA PPU_Cur
    # H! u! d+ f  Y. l
  1003. STA PPU_Addr,X% e# @* n& @- x1 V" w
  1004. LDA PPU_Addr- s8 U6 ?$ v2 p: a+ x
  1005. BNE PPU_Proc_Beg! k) f) S0 G1 J2 [3 c
  1006. PPU_Proc_Ret
    - X+ z- V( Z$ J0 {
  1007. RTS# M- y0 X, h7 u* N# s  U
  1008. 2 O/ Y/ V+ [, M* ^4 B
  1009. ;------------------------------) ]: ]& J6 p# ]' G* w' I$ r1 J
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    ; U* B9 N7 o* k9 H& K
  1011. INX% V" ~* G0 D% ^# p* b: z
  1012. LDA PPU_Addr_L
    . w$ U/ B+ j3 |6 R
  1013. CLC
      E( L3 ~4 A9 X7 S) p
  1014. ADC #$20
    % M2 m. ]. _3 ~$ S. E" b& t9 H
  1015. STA PPU_Addr_L
    " p/ \( g1 x& D! S
  1016. BCC PPU_Mode_Return_Cnt_End
      W$ \3 S9 p: i8 L5 F. n; W
  1017. INC PPU_Addr_H0 b* k0 a, ?/ R% P6 B9 e* T
  1018. PPU_Mode_Return_Cnt_End
    1 ]! {0 D" _! ]: o
  1019. LDA PPU_Addr_H  R5 h; b4 P3 w, U
  1020. STA PPU_ADDRESS: Y- G  Z& Z% W% F
  1021. LDA PPU_Addr_L0 z! b0 Y0 R+ Y4 r! t  R
  1022. STA PPU_ADDRESS* J2 s, E- ~5 O1 B8 c
  1023. LDA PPU_Addr,X( K% `4 a. B; H
  1024. TAY
    $ l% J" F4 K6 ^3 D3 i
  1025. PPU_Mode_Return_Cnt_Write
    / f4 U, U  y  z4 e+ p, h( D6 v: w
  1026. INX
    + p: j+ D; b+ Z
  1027. LDA PPU_Addr,X
    ! K3 @4 _  x, Z$ V  S
  1028. STA PPU_DATA% D/ E9 j9 S1 Z: p# _# w
  1029. DEY% x6 [0 |) S; ^1 m/ @' o
  1030. BNE PPU_Mode_Return_Cnt_Write
    + d( h; T) `' P
  1031. JMP PPU_Proc_End6 m0 E) H: i2 Q- d

  1032. + a, p  _6 @5 [/ M; ]: }- b
  1033. ;------------------------------
    ) n1 \8 y! l1 N% I" |3 p9 f& C% i6 |
  1034. PPU_Proc_Beg  ;处理开始
    ; o$ y/ ~* |2 Q/ C9 a
  1035. LDX #$00
    / H% b# N' f, Q
  1036. STX PPU_MASK/ h3 b0 [4 j# G& T
  1037. ;------------------------------
    ( W4 g& n: }: A
  1038. PPU_Mode_Select  ;模式选择
    8 T' N$ R! O7 M$ D
  1039. LDA PPU_Addr,X
    5 ?* @" N) p; M8 U8 [
  1040. CMP #PPU_MODE_CNT_CLEAR
    ) F5 q( s" {1 D. h
  1041. BEQ PPU_Proc_Clear4 e7 k( n( Z( G: M3 X. y. Z
  1042. CMP #PPU_MODE_CNT_LINE0 P- x. \2 Z; i9 K/ a
  1043. BEQ PPU_Proc_Cnt_Line
    ' x! I5 V0 ]6 Q0 X2 A+ A
  1044. CMP #PPU_MODE_CNT_LINE_NEXT" o9 v1 e6 [- P5 R" Z0 F/ u
  1045. BEQ PPU_Mode_Return_Cnt
    4 ]& ?* P5 u: B( C5 E5 ~0 V
  1046. JMP PPU_Proc_End_Write. J, W, w+ I; E3 ^9 J5 A
  1047. ;------------------------------  |0 Y) F2 w: _6 k# ?* }) k
  1048. PPU_Proc_End  ;单行写入结束, ?" K8 l2 @! E2 J; r4 Y
  1049. INX6 B% P  g; j: d
  1050. LDA PPU_Addr,X
    ( N- n: g; T/ d) u; D1 V( E9 y! g! M
  1051. BNE PPU_Mode_Select' E# a, m/ ]+ C, x$ X7 s3 V* k
  1052. STA PPU_Addr
    ( p0 F0 q/ P$ Z9 ?9 ?
  1053. JSR Update_Palette_Color1 N. k$ f" E$ r- h; N! H. ]

  1054. + F8 k" A+ S0 S$ _! v2 e3 F# O
  1055. PPU_Proc_End_Write
    " v( B3 r, |0 a
  1056. LDA #$00( N8 `0 \6 ]  O0 X1 T; b2 J7 ?
  1057. STA PPU_ADDRESS
    , E% M  _$ v6 X  C$ c0 ~! d
  1058. STA PPU_ADDRESS6 o! X- g, r* v$ V
  1059. LDA <Text_Disable_Flag
    4 m: Z. X; C0 w" O8 W
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    : k9 W! w8 v' |. f. s
  1061. STA <Text_Disable_Flag
    0 L, g6 |; ^( d( W) W. y5 d2 s
  1062. LDA #Scroll_X
    0 N3 e  }: v2 P( f! ~5 @
  1063. STA PPU_SCROLL
    1 |5 \9 ~, ?/ s* W2 t+ B. R
  1064. LDA #Scroll_Y0 Q; @: }7 `" g$ z2 w' p0 b8 K8 E
  1065. STA PPU_SCROLL' S, p! s& m8 v7 _
  1066. LDA Screen_State
    3 `5 Q/ |# `9 ~/ ]8 d" T
  1067. STA PPU_MASK
    6 u* W6 t& ]) M5 h( B1 b5 c! m, d
  1068. RTS
    8 l& [/ v) I+ r9 b0 w7 j
  1069. ) U7 u/ E( @$ J- d4 [
  1070. PPU_Proc_Clear
    - a( \! F( W" I; a
  1071. INX
    # A+ Q* F+ D) O( m3 @
  1072. LDA PPU_Addr,X
    % z8 w3 T0 C. R0 Z2 i
  1073. STA PPU_ADDRESS
    * y: a  s5 n' M4 o" P# W
  1074. INX- ]$ M& E; L5 T- D) A7 Q
  1075. LDA PPU_Addr,X
    ) C" u" s/ O4 w8 G: Y5 e
  1076. STA PPU_ADDRESS
    : r! O/ C" y. |) c; E! w# H
  1077. INX
    ) i3 o( @% _1 h; B
  1078. LDY PPU_Addr,X! y) [! W8 `& K& y
  1079. LDA #$00
    4 \) W) q7 I1 ^
  1080. PPU_Proc_Clear_Write" J3 U) V; D! b3 Y6 i1 A* b
  1081. STA PPU_DATA1 L2 Q- h0 \2 D: ~6 E
  1082. DEY
    ) |9 C* v& {$ Y/ W  P" \3 Q
  1083. BNE PPU_Proc_Clear_Write6 b+ X1 _: r% Z% Q8 M) X* h/ A9 ?4 S9 K
  1084. JMP PPU_Proc_End
    : q- R3 P" b: c9 X  i/ `0 y
  1085. ' g9 t; c" i$ b8 I& X
  1086. PPU_Proc_Cnt_Line
    / A# D9 I8 }5 d& @% ]) q1 w
  1087. INX/ T% w4 e# Q% |  c0 r8 C4 l
  1088. LDA PPU_Addr,X
    $ v5 |; w5 p5 s+ a  W& \
  1089. STA PPU_Addr_H4 w( K$ ~9 w7 ]  D8 |* k
  1090. STA PPU_ADDRESS( C; \( S+ D( A& z
  1091. INX* \' R" D" A- t& n" h" g9 j; [9 E
  1092. LDA PPU_Addr,X$ H+ x6 n6 w' ^4 `* H- Y
  1093. STA PPU_Addr_L
    ( ^. M# b! G; i2 Z' p3 \
  1094. STA PPU_ADDRESS
    ' o* G: @% ~# u+ ~8 q4 y4 P4 i
  1095. INX4 d1 w4 T9 S0 @* G
  1096. LDY PPU_Addr,X0 I' `: C3 J8 t4 Z, C" T$ N- f
  1097. PPU_Proc_Cnt_Line_Write0 T: b0 m% k: x  p0 {; h/ ^
  1098. INX
    4 F2 Q8 G( d) ~
  1099. LDA PPU_Addr,X" E" _  _* u; c3 C7 V, G
  1100. STA PPU_DATA
    ' B3 Y* v9 e* O5 q6 b! {' q
  1101. DEY
    % {1 `. @! _! w1 C+ d5 i
  1102. BNE PPU_Proc_Cnt_Line_Write( a; K: `9 Z1 j% O, N# H7 [* R
  1103. JMP PPU_Proc_End
    / ]" s5 ]5 y7 C8 g' x

  1104. 7 I- V6 Q0 v2 f- ^
  1105. ;==============================$ W8 R; s9 |* ^, Z- @' o
  1106. HEX_To_Dec;十六进制转十进制
    / E% _# h% Y0 G9 X0 \; l5 C
  1107. STA <HEX_Data
    6 g- m  L9 ?6 B9 d
  1108. PHA
    $ t2 a6 }1 a( n5 {) O( ~3 W# Y
  1109. TXA
      \( g; X/ }4 n+ }7 K& ~
  1110. PHA
    1 A9 L, k4 H# X$ ?( @6 n
  1111. LDX #$004 V# B3 f8 m/ T3 h
  1112. LDA #$00
    8 |$ l! V2 z) ~2 v. @
  1113. HEX_Cln
    ! q& q4 n0 y0 s( ^9 u
  1114. STA <DEC_H,X3 Y; m9 c# J8 y1 f/ g! W
  1115. INX+ N2 D& j4 o$ j# v6 N
  1116. CPX #$03
    # Z( r& U1 \1 j) A2 D, M
  1117. BCC HEX_Cln
    5 v% E. ~- c  S3 J, U$ p" @
  1118. LDA <HEX_Data- E- C  c  m5 I8 S; _9 Q3 L9 e: j# y
  1119. ;------------------------------9 r$ [) h8 [5 T, `$ A- D- G
  1120. HEX_1008 K1 @# y3 |! A5 I5 q
  1121. CMP #100
    9 {% y  |. t5 ]' \  v
  1122. BCC HEX_10" {; x  K( L  t* R- ~
  1123. SEC
    3 j8 ~; m8 i# C, J/ q' ]
  1124. SBC #100# f" p5 v$ ]7 X3 ~" l
  1125. INC <DEC_H
    ' ~: R. x! a2 d$ \, H( A4 p" l+ u
  1126. BNE HEX_100$ w' \" g  G0 e* i( G
  1127. ;------------------------------
    + y1 k$ F! e$ [! s2 {5 t
  1128. HEX_10
    0 N) E1 S& C! g; B
  1129. CMP #10
    1 @& [# d7 X0 D1 o
  1130. BCC HEX_1
    * G/ _' b# E" x5 I+ \- _9 f- q
  1131. SEC0 b/ v1 k( v. k3 Y
  1132. SBC #10
    $ N- t* _( _5 U! X7 y; ?
  1133. INC <DEC_T
    + F, Z0 D/ y  {- n$ l& m9 C
  1134. BNE HEX_10
      _* S, k/ z6 Y
  1135. ;------------------------------# \$ ~1 Q. f2 b3 n; j9 H
  1136. HEX_1
    , D6 n, W- l7 \  n6 I1 a  b+ C
  1137. STA <DEC_L" l! X* j* `6 m) e
  1138. PLA
    / [* M6 x+ N) I8 {( D8 U8 \
  1139. TAX2 K& p$ f7 r% o/ Z
  1140. PLA$ _. U  L2 b9 @9 M$ {) p" f9 N
  1141. RTS3 [8 @: D" U: X
  1142. 4 |4 s' x9 k9 k! Y* a& b
  1143. ;==============================
    ' h! o0 R& s( K7 s6 @$ L
  1144. ;音乐曲目显示" t5 A( p& @+ R! }  V  H
  1145. Music_Show) u$ _+ D; v9 a9 X, l
  1146. LDX <Music_Item_Cur( c: B- c' \& ]
  1147. LDA <Music_Cur,X& y* n5 g  E: W& T
  1148. CLC) K8 v* J: ?6 N. D
  1149. ADC #$01
      P* I" T0 d) k9 `" {* R( T
  1150. JSR HEX_To_Dec4 I/ |5 g4 g. H+ u* q; Q$ f
  1151. LDX PPU_Cur  C0 t" B8 u. ^  R" l
  1152. LDA #PPU_MODE_CNT_LINE
    - T$ ]' ]! q: s% d9 M+ K
  1153. STA PPU_Addr,X
    $ J6 c: W) E! v
  1154. INX
    9 x# ~3 o1 |- s3 K
  1155. LDA #HIGH(Play_Index_Pos), d1 V: A3 x4 @  [
  1156. STA PPU_Addr,X1 t& w+ `; a: A4 x, r! d3 t
  1157. INX
    - A  J- |% u( ~/ {* z; ^5 f
  1158. LDA #LOW(Play_Index_Pos)3 E1 z6 A: U; h! m6 X9 q
  1159. STA PPU_Addr,X
    4 K, k7 a* o  ]; o
  1160. INX2 H. L' ^" E4 w4 m& {; ?, M& _
  1161. ; q# k, C" k: k0 [+ l' r  V" G
  1162. LDA #$07' ~6 O( o! ~9 A0 O2 V4 O' g
  1163. BNE Music_Show_Length4 U1 q5 D7 N2 h% K6 ^' p
  1164. 3 T7 _7 \( @. M- Q3 ~9 n; y( ~
  1165. Music_Show_Length0 p  c5 ]+ `5 s7 w! I+ s
  1166. STA PPU_Addr,X
    ' a$ X) N$ Q; ~& {8 X* q
  1167. INX3 S5 e7 `1 A) m5 ~
  1168. + M) _2 e! d' }& Q
  1169. LDA <DEC_H- t7 l3 O$ E2 }) q# y1 K8 |
  1170. ORA #'0'
    : I1 A* X9 @8 Q
  1171. STA PPU_Addr,X( L2 M1 k' I) W. N2 ?
  1172. INX
    : I4 @+ v' p2 q9 ^9 A) D: C

  1173. ' R6 e/ D" @" V6 e, M( K8 ?6 D
  1174. LDA <DEC_T* C* ]9 h: Q9 t" ]" [! \
  1175. ORA #'0'0 L1 n/ N7 G' x6 Z7 Z! R
  1176. STA PPU_Addr,X
    2 J; l! {% E5 n/ V% N  k+ e# K
  1177. INX# g7 K* ]0 D7 o) M# C8 {4 x

  1178. 8 ]8 T' D4 Z' j# E
  1179. LDA <DEC_L4 ~, Q; c+ n& r) L. x
  1180. ORA #'0'
    % H+ G! p# A. K& Q$ E% L+ O
  1181. STA PPU_Addr,X, V  c" |: J5 j& I- f  V4 o
  1182. INX3 H7 }$ \% M4 l* R3 \) I0 Z

  1183. . \2 t) j: c. Y; z% e6 T
  1184. LDA #'/'
    7 N0 Y2 X! z) p% [" R+ b
  1185. STA PPU_Addr,X2 j* R- Z/ Y+ s$ s  t
  1186. INX
    2 v5 b2 }  C1 p4 w1 Y; ~
  1187. Music_Show_Total" g! j- {6 z1 J5 l9 M8 m
  1188. LDA Music_Total8 y  T+ x; |& I8 v( f
  1189. CLC
    - n6 ]+ g4 b9 v) H- F2 B" \3 \
  1190. ADC #$01
    + \: q, z) K) p2 Z0 F$ E
  1191. JSR HEX_To_Dec
    9 q0 I( K1 ^/ Z6 K( Y2 ]0 E; C

  1192. - k' R5 ?5 K& }8 S
  1193. LDA <DEC_H
    3 B1 G' q' P, A7 f3 Q: o8 K
  1194. ORA #'0'
    3 i. S# }; U) r: r8 m
  1195. STA PPU_Addr,X; p1 z# C0 e  k! C  i6 f
  1196. INX
    4 c1 J/ e% J8 V; X5 N! e

  1197.   y1 C9 _; f$ f  F
  1198. LDA <DEC_T  J8 d8 I! k0 S9 ~6 u
  1199. ORA #'0'
      ^1 i" x) R1 s( Y
  1200. STA PPU_Addr,X
      h! I6 ~7 g$ B/ \- d/ x4 s/ S
  1201. INX' E, ?. ]" [" V/ A) _

  1202. + p4 P1 j* ]; `
  1203. LDA <DEC_L
    2 `9 ~& M! K  A5 G" c" Z8 S
  1204. ORA #'0'6 D# h4 n4 X! [+ E- ?1 e8 B/ E
  1205. STA PPU_Addr,X) t# m' I+ [) @3 @# ]: _
  1206. INX& x6 [6 \) N! i9 C

  1207. 8 m0 {# e: w, U1 U; S% [5 V
  1208. STX PPU_Cur  `% _2 d/ f3 V) r
  1209. Music_Show_End' l1 o  M- u: G6 L9 c) B- n
  1210. RTS
      X, J( P) ?: _* x& n3 ?9 h0 Q

  1211. , q& P9 M  T$ S+ m% w
  1212. ;==============================
    ; @, ?& r% J: g- \5 j9 W
  1213. Time_Show;播放时间显示6 V5 Q, Y& q4 N8 n, Z
  1214. LDA <Text_Disable_Flag  p$ Y: A5 X# p% l7 k0 i, z
  1215. AND #TEXT_DISABLE_ITEM
    . p: r& I  c  I) z. Y
  1216. BNE Time_Show_End
    ! N6 B4 b9 f9 Y
  1217. AND #TEXT_DISABLE_TIME. j$ Y, f* b8 r
  1218. BNE Time_Show_Enable9 G3 v+ z/ K! r, P
  1219. $ K3 m7 @* M3 ~: i' H
  1220. LDX PPU_Cur9 W! V. H2 h% G9 ^' K
  1221. LDA #PPU_MODE_CNT_LINE( y' l' B5 [0 P
  1222. STA PPU_Addr,X
      f: n7 |/ o+ \0 i3 j2 C) m
  1223. INX" x& w6 ]) a' r) H" a7 O
  1224. LDA #HIGH(Play_Time_Pos)7 l" H: A; ~9 u$ q5 y
  1225. STA PPU_Addr,X
    ) m& c% a9 B% O- z8 ]  U' s
  1226. INX
    ) ~& Z/ y$ b, x
  1227. LDA #LOW(Play_Time_Pos)
    + ]5 s4 [5 _' B
  1228. STA PPU_Addr,X
    . t  y/ p5 n5 p9 D6 ~3 t* R
  1229. INX
    ) K+ Z, Z! a7 e" ^
  1230. LDA #$08" G: g4 A. j, A# j# `! U7 z, a7 f8 Z
  1231. STA PPU_Addr,X. l1 F  p3 h4 o! [
  1232. INX( U- r- H$ @9 `( ?4 M
  1233. Time_Show_H" Q% i9 q) }, b0 S- ~. l
  1234. LDA <Time_H  L, D; `* \$ g1 `
  1235. JSR HEX_To_Dec0 f5 {/ _, z9 V! L: {4 Z
  1236. JSR Time_Digit
    2 P3 j& u$ ~3 l9 o$ x2 J( Z! p* r* Z
  1237. LDA #':', C0 g! V5 k# V; f( J6 Z1 U$ J
  1238. STA PPU_Addr,X
    ! e6 u7 Q! R$ f5 \% G' K
  1239. INX
    . i+ }8 ~6 f# I) B& C) w2 Y+ h
  1240. Time_Show_M" J4 A7 N( |! j( u: I- C; R0 a  J; B
  1241. LDA <Time_M" D% [" A4 w6 _( N4 V8 i: M- N
  1242. JSR HEX_To_Dec; O& D1 _/ g5 `- B, e% Z
  1243. JSR Time_Digit
    ( [( d( O' V' q: H1 e9 O7 }
  1244. LDA #':'; ?( @8 u/ e6 l0 a4 s: s/ S& `
  1245. STA PPU_Addr,X! u3 R( h6 L, Q
  1246. INX% ]# \0 K: K( C4 E' w
  1247. Time_Show_S( l& j+ I4 ]6 I- Z  B
  1248. LDA <Time_S
    / v3 ^. k+ t7 K0 j/ k1 ?$ ]1 f2 d
  1249. JSR HEX_To_Dec
    0 J7 l* S# O! s- b% h
  1250. JSR Time_Digit: j0 k2 }4 I! X3 a
  1251. STX PPU_Cur0 _4 _6 t$ v, ^3 Z4 C+ f
  1252. Time_Show_Enable
    - K8 @) [3 n9 W+ H! c. @; \8 J2 W
  1253. LDA <Text_Disable_Flag% ]: V7 `! c/ P  ]
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    % j) k  r4 s+ Y4 {) F0 `6 X
  1255. STA <Text_Disable_Flag
    4 Y! u/ P  @' ?8 k/ T1 X: `; I. K6 Q
  1256. Time_Show_End
    * x& {3 L" O# F6 W  O* w3 Z
  1257. RTS
      ~6 n( |% J0 `9 H5 d5 s: F
  1258. & \  Y) q( k& `/ Q, @( V- k: ~
  1259. Time_Digit" g9 I, E  I1 h0 ^! l; K
  1260. LDA <DEC_T6 b' F5 c5 f) l( C+ @/ B
  1261. ORA #'0'
    - A+ Y9 w# t( S! i" J( G
  1262. STA PPU_Addr,X4 V5 q; J$ l. }
  1263. INX! [/ W4 z+ w7 [1 }
  1264. LDA <DEC_L
    9 d) [3 K) c" @, _- q- G# U
  1265. ORA #'0'' D% p+ y+ S. C: U% b) _
  1266. STA PPU_Addr,X
    9 n3 V+ p! q# w( H& ^+ U
  1267. INX* Y# E  l: {0 ]) M' W7 o4 Q
  1268. RTS
    " t# W" |4 k) V# U& N& b- ?$ Z7 u
  1269. " q% H  b$ i. a4 v* X: I
  1270. ;==============================' K8 l* y' U0 A5 z# F3 Y/ L
  1271. Time_Count;计时
    # l5 N6 m2 ]  v7 z7 j' _: N8 u( P
  1272. LDA <Music_Stop_State
    + ~% M' m1 @4 @; t/ A' d
  1273. ORA <Time_Wait_Cnt
    8 Z% y9 @3 ~3 o1 m6 Z
  1274. BNE Time_Count_End9 Z: H# N9 b; j4 {% j
  1275. INC <Time_Cnt8 s: S/ v  i  I0 e& g1 @! r+ ^, J
  1276. LDA <Time_Cnt
    ' E' r% P# a) y3 Z& ]& I
  1277. CMP #60
    ' R6 ^* @" d' Z8 `2 S2 h6 ~
  1278. BCC Time_Count_End4 }  s9 p; D$ u9 Z& c3 b
  1279. LDA #00! K- ?- X' z, {) r
  1280. STA <Time_Cnt* q% n0 q9 G; w( o$ H7 o7 F
  1281. INC <Time_S6 O) q4 W8 Y- N  U* e: C. D5 y
  1282. / B! }' t6 O7 Y% _* R+ G; b7 d# ^
  1283. Time_S_Cnt1 k) T! e* b' A
  1284. LDA <Time_S
    * C. i! ]- P  _7 {% F) ^( M/ L
  1285. CMP #60
    $ L  D/ h# G7 T
  1286. BCC Time_Count_End
    6 p3 O/ F8 ~. ^! j. V5 X9 j
  1287. LDA #004 T  X$ z( @! ~, H
  1288. STA <Time_S& Y1 t" K! v1 o# ]; K" ?0 ~
  1289. INC <Time_M
    ( i4 p, q) M( F" m8 D' K

  1290. * s, M0 e& M. R4 M- u
  1291. Time_M_Cnt/ v% h% {  }& P7 A  W+ V! m
  1292. LDA <Time_M
    6 P1 u& }% Y; Q9 \
  1293. CMP #60* ~/ v1 h- J7 N. |
  1294. BCC Time_Count_End
    5 o3 M2 e2 _; k) {) }) Y
  1295. LDA #000 i/ r! A+ C% K8 P8 w/ n
  1296. STA <Time_M& e1 F' x) v  U
  1297. INC <Time_H  l1 }3 X* P- f, y- ~( Y
  1298. 1 v: X9 Y4 ]' B
  1299. Time_H_Cnt  R) X; i; o8 l' q# m/ ?# G0 g
  1300. LDA <Time_H
    3 Z7 V# c& Q4 a- |. V. q  {
  1301. CMP #24
    & l' F, y+ O; t9 f) {2 V
  1302. BCC Time_Count_End8 }7 o4 o& S/ S1 F  v( w
  1303. LDA #00
      E: r% }% `  l
  1304. STA <Time_H2 {2 f; Y  F8 I# y

  1305. & S% l# U3 }$ V( L
  1306. Time_Count_End4 w" i/ J  h3 `' S; {
  1307. RTS( j8 S/ l8 m7 y& X# a* q
  1308. 7 j  p8 [$ N* w4 F2 c3 F0 E
  1309. ;==============================$ e3 i9 v& C( L
  1310. Time_ReSet;播放时间重置
    ' p) {7 k8 I; B7 N+ N* A1 H
  1311. LDA #$00; r; d  T2 E. ?" W4 M% v9 [
  1312. STA <Time_S
    + S& Y; [: o" |% z1 R7 c- m
  1313. STA <Time_M , I8 z; \" E/ Q  j
  1314. STA <Time_H( N! C7 |4 g# p% h6 W0 O
  1315. STA <Time_Cnt
    6 j9 K1 |) ]; N; ^: P
  1316. RTS
    " ?6 m+ [7 }% b/ X7 k$ t3 _

  1317.   {4 Q0 L% I  H# I: S9 u1 G
  1318. ;==============================
    - y% n, ^! y) b: J& Q( P0 e; v- x+ v
  1319. Music_Bar_ReSet;音乐条重置4 q+ b2 }$ C# @  f1 }% {
  1320. LDA #$00
    3 o8 c$ k) J2 P# v3 {, }6 C2 e$ l
  1321. LDX #$00( L3 P0 T5 q. v, n& _4 d# W, c* O
  1322. Music_Bar_ReSet_Set
    5 A. C" ?( E# `1 J$ x8 `6 q6 l  E
  1323. STA Sound_Bar,X( _- C1 E: f' ^2 l1 T/ a- v/ p6 O
  1324. INX
    9 v' Z  z! }! y0 y1 y
  1325. CPX #$10
    5 n. E: D; h8 h7 S! R9 ^6 c" h, y
  1326. BCC Music_Bar_ReSet_Set8 I+ v6 L% W  @$ d5 o
  1327. RTS$ e$ V  A& Z# |. L! ~# A- R. q9 l9 ?7 H
  1328. ( k+ L- e( A/ R( F, s: ~! O
  1329. ;==============================* Z/ K8 n. }1 |; O( @+ O
  1330. PPU_Data;PPU数据写入" i; v0 g/ _# M; `) g  x) r
  1331. STY <Data_L
    7 N2 C. {! J* L/ S/ W: @8 ]5 M4 V
  1332. STX <Data_H0 Z1 O# J+ v" c
  1333. LDY #$FF
    * F- Q) t- K& w" [) {
  1334. LDX PPU_Cur! _/ M5 s( @0 I# _' [* }
  1335. DEX. P3 u( m: o, h5 q: B7 B+ A
  1336. PPU_Data_Beg
    2 m4 [8 P3 |  D# h9 ~$ e
  1337. INX
    " N! }' S& V+ k
  1338. INY
    6 ^) [9 i9 a( H* ?& U: s
  1339. LDA [Data_L],Y* |% y5 I4 }" }' u
  1340. STA PPU_Addr,X
    0 J7 }3 I( f! [, T+ F
  1341. BNE PPU_Data_Beg
    4 C" }$ g. k; p
  1342. STX PPU_Cur
    ' m' e1 t% H  s: w, X4 p
  1343. PPU_Data_End
    9 F- Z# C, N5 m5 r6 R' y
  1344. RTS
    4 F( z' a8 n( D3 |7 b# V+ g

  1345. 4 h$ w) e4 V  j+ P" A
  1346. ;==============================
    ; x7 A/ W" [2 e" B) a3 J) U+ p) K
  1347. Music_State_Show;播放状态显示6 a+ K5 d0 n& @4 d1 B. q5 q
  1348. LDA <Music_Stop_State
    ' f+ N: K  \0 D
  1349. BEQ Music_State_Show_Play
      y! W3 |' |5 X5 c( G
  1350. Music_State_Show_Stop
    6 F* L$ W2 x4 R' c; j9 j9 K
  1351. LDY #LOW(Music_State_Stop). U. r/ f2 f, x  @% Y
  1352. LDX #HIGH(Music_State_Stop)% \4 @- _2 m, r8 l6 v2 W
  1353. JSR PPU_Data
    + y7 O  q( @2 L1 i, q
  1354. RTS2 K2 M) Y% f; p" D7 T
  1355. Music_State_Show_Play/ a+ c# [) Y7 K4 i4 w5 `$ ~
  1356. LDY #LOW(Music_State_Play)
    ) e8 o% {: |9 _3 C
  1357. LDX #HIGH(Music_State_Play)" P! R& ~  i7 w' d* Q  N6 f
  1358. JSR PPU_Data
    6 s2 g$ J, \* w* t/ S
  1359. RTS! \' [' G1 \7 D: @" e. ?, H% `1 ?
  1360.   }9 y' M9 o1 K9 d/ y! o& s5 q
  1361. .IF SOUND_BAR_SHOW_ENABLE6 C8 I) u: C4 o$ P8 V/ K
  1362. ;==============================6 p, l  S1 [- `- o
  1363. Sound_Bar_Text_Set;标题与音乐条初始化  V# {% N3 [4 L. K$ p/ `7 k
  1364. LDY #LOW(Sound_Bar_Text_Data)
    7 b: J9 Z/ X) `+ v4 `
  1365. LDX #HIGH(Sound_Bar_Text_Data)& i. _  C6 Q3 z. a' j
  1366. JSR PPU_Data" R3 {1 v* q5 y! q2 e2 S
  1367. RTS
    # {% @4 D3 o) R( U$ q% X" Y

  1368. 8 L. c% D; ^! a& `6 x0 B4 W8 I
  1369. .ENDIF1 ~2 k( {# ]3 i/ `4 U

  1370. # ~5 U" U3 m7 _) m8 H
  1371. ;==============================$ F$ b: ^% C& Z  |/ Y, ^
  1372. Set_NameTable_Attributes;设置命名表属性
    + }- H2 X) c5 j& t( G. X
  1373. BIT PPU_STATUS
    4 E, g; F* ^# X% o4 {# V
  1374. LDA #$23
    4 N) s1 _/ B4 L5 P6 n! J- }* H# _
  1375. STA PPU_ADDRESS) m6 W: w) i  s$ R
  1376. LDA #$C0, }% z; }1 Q2 A; u# J
  1377. STA PPU_ADDRESS
    / J" P0 `* n" H: g" X+ b2 H
  1378. LDX #$00
    1 L# M  p. l$ C
  1379. Set_NameTable_Attributes_Write
    8 ]$ R3 O6 \; F0 _
  1380. LDA Palette_Attributes,X( _  b0 Q+ O. R8 A, J/ Y( @# Y
  1381. STA PPU_DATA
    3 k1 ^* ^2 f7 ^' H" F
  1382. INX
    ) x; D2 U7 V5 a9 @2 p
  1383. CPX #$40
    1 T3 q% P, S# ?7 _7 [
  1384. BCC Set_NameTable_Attributes_Write- e+ \& Y* ?& d6 S. H( F
  1385. RTS
    & ?$ t4 J6 {, m
  1386. , E9 G# P: Y4 `
  1387. ;==============================4 F7 f8 H% v& ?7 J# a* t
  1388. Set_Palette_Color;设置调色板数据
    4 [7 ]9 ?8 ]( S$ \0 f
  1389. BIT PPU_STATUS- Q' ~4 @& w9 {* h9 k
  1390. LDA #$3F
    ' A; d/ Q  ?* h9 V! q6 o4 i
  1391. STA PPU_ADDRESS
    + ?5 y5 d  R5 `8 c
  1392. LDA #$00
    , d3 c: f( `) z) W2 F
  1393. STA PPU_ADDRESS
    9 V! J5 o4 D0 o# @5 U! v% n
  1394. LDX #$00% \& @8 Y7 E* R' c/ S9 @
  1395. Set_Palette_Color_Write
    $ I: [# ?$ q- C" X
  1396. LDA Palette_Data,X
    % f9 U% z" {, A8 N. D5 }) l& n8 G
  1397. STA PPU_DATA: k' E2 [4 R' @$ Z& b8 M1 ?+ W; Q
  1398. INX+ |- e5 [* q9 C# \0 R* \
  1399. CPX #$202 g9 z6 ]' D- D  j' K& j8 x, M' u: v
  1400. BCC Set_Palette_Color_Write! E- G5 ]$ Z3 K$ c: T$ H
  1401. RTS
      f. A2 O; ]: q

  1402. 5 I/ d: U1 Y- r0 i4 Z  e/ H
  1403. ;==============================
    . }" w' R# s% \; w% r  B
  1404. Init_Palette_Addr;初始化调色板数据
    2 A' f& T1 |- f' k7 k- i2 Z* j; J; ^
  1405. LDX #$00. z8 y( V* j# j6 h. h. _
  1406. Init_Palette_Addr_Write3 y6 L. P6 t" J# C; O" p  p
  1407. LDA Palette_Data,X9 V! _& P: w: _0 I/ s) \9 h4 S
  1408. STA Palette_Addr,X
    : T0 t0 \6 p: w8 W: ?6 \
  1409. INX' D+ M3 d. V, Y
  1410. CPX #$20
    % A2 Y/ t: |8 n* j, D* f" t
  1411. BCC Init_Palette_Addr_Write' l0 `6 a' S, Y. P
  1412. RTS
    # |9 F" L3 W1 Z. c6 v; Z: p5 C
  1413. 4 x9 \8 R! [* v# Z. r# f
  1414. ;==============================: X, V8 V8 X% ~5 E- H. @
  1415. Update_Palette_Color;更新调色板颜色
    $ w5 m7 }& U8 O7 U
  1416. LDA <Palette_Update_Flag7 u: K/ \3 }2 x/ p) D
  1417. BEQ Update_Palette_Color_End
    , i% O5 }, m% D2 w- A7 F: j
  1418. LDA #$3F
    $ `9 g1 x. C) ~4 Q7 e
  1419. STA PPU_ADDRESS! T, h% H  Q& E+ d! q: l2 F
  1420. LDA #$0C
    5 W  O, |' y# M% E
  1421. STA PPU_ADDRESS
    " s! b( A- ]2 R7 L
  1422. LDX #$0C
    / r4 c; l! A4 i9 v5 L
  1423. Update_Palette_Color_Write' ?; z; p; ?& @1 G7 `5 r. R3 g& \" R
  1424. LDA Palette_Addr,X
    1 {$ u$ k0 A. N! ^* ~3 `9 P
  1425. STA PPU_DATA0 P. J8 }% v  Z0 ]- @  u6 \
  1426. INX& `& [+ Q8 W6 D( m( I, r! W+ @
  1427. CPX #$14. V2 r$ G- L. l* e
  1428. BCC Update_Palette_Color_Write! g8 U' y9 j8 O/ M+ i: J' {
  1429. LDA #$00) y, m7 L6 F5 _  g/ Y  g
  1430. STA <Palette_Update_Flag$ \/ f, a( y0 C5 D4 V
  1431. Update_Palette_Color_End. e( W4 @- v1 q- a
  1432. RTS4 ?& o1 C5 h! v. B; R, E

  1433. ; e. T( ]* P8 C8 w
  1434. 0 h# C  k2 v8 F- }) g$ D9 h3 z
  1435. Update_Sprite_Palette_Data
      i8 H* ]/ @" {/ R9 z& p) a6 m. E
  1436. .DB $21
    * d! z) U$ G' x" L- R; r
  1437. .DB $21
    $ T4 H) n1 d5 A3 a% ^
  1438. .DB $11
    : j* L8 t2 \0 O$ J: q2 n6 O% k2 T/ ~
  1439. .DB $01
    * s" M$ P) a9 Z3 h) p- b; t1 W. _
  1440. .DB $019 x( I4 W6 r* W: R) B: D4 h
  1441. .DB $11/ Q5 E! @( T7 {
  1442. .DB $21& n& Y2 [% E6 O7 G$ W
  1443. .DB $21
    ' l  {+ X# b: B; h
  1444. .DB $11' Q9 v9 q& q  l
  1445. .DB $01
    4 E$ o- A% k( l" v+ D2 K* p+ A
  1446. .DB $11
    6 E" d9 ?% l, r; F$ G) E; b
  1447. .DB $21
    , [2 C  D1 X* F' ?5 _( F
  1448. .DB $21/ F: ]5 c1 ?( z7 Z3 X" F2 b
  1449. .DB $11( x) g; a: H7 ?; ?& W
  1450. .DB $01! U# Q& v4 g" t1 l* m  s+ U
  1451. .DB $11" X. h' ~- G4 N2 n+ P7 C' ]! P
  1452. ;==============================
    ; v0 Z& `- j5 w# V" `
  1453. Update_Palette_Data;更新调色板数据
    ! E- g7 m3 W" ]0 A% d9 E
  1454. LDA Nmi_Time_Count
    7 E9 N5 V5 Y9 x6 \. x" K
  1455. AND #$08* {: N$ x( M" _4 C- D6 y( U
  1456. CMP #$08* `5 `$ i% f( H( p" G4 t1 d6 i
  1457. BNE Update_Bkg_Palette_Data6 h& f; {" z9 z) q
  1458. 1 d) m& s8 y+ `% G& B7 F& g7 u6 q
  1459. Update_Sprite_Palette_Data_Set
    4 h, O1 H. J) a
  1460. LDA Nmi_Time_Count
    - S3 f$ M3 p+ S# t2 J3 t8 L6 x0 g
  1461. LSR A4 j8 }3 l8 g2 `! ]& ?
  1462. LSR A
    1 r- m( N6 y2 o& S. ]+ b; b- C7 `
  1463. LSR A7 s8 i2 i2 o5 [4 N
  1464. LSR A
    4 F5 i) M2 u3 v5 d  N
  1465. AND #$0F: [' ?: N* C8 j( p' p
  1466. TAX' }; K* p. }1 C+ g
  1467. LDA Update_Sprite_Palette_Data,X
    & g5 |& u- k. O4 a' W" T' s* d  _
  1468. STA Sprite_Palette_Update_Addr
    # Z0 [% W5 M  i% A! l
  1469. LDA #$01
    $ s$ W" v, b8 \1 f7 G
  1470. STA <Palette_Update_Flag
    0 ?. ]& z  a6 }6 N$ ^+ P* }) K  _
  1471. + E/ i: C, J4 f: \  X4 j5 f
  1472. Update_Bkg_Palette_Data0 r) T0 X- k" h2 B  Y
  1473. LDA <Text_Disable_Flag8 J: ~; D0 q9 c& Z9 ~7 H/ S2 [
  1474. AND #TEXT_DISABLE_RAM
    8 ]: C* {3 b/ l$ N3 }
  1475. BNE Update_Palette_Data_End
    . @; o$ b% J4 F5 C% P
  1476. LDA <Music_Stop_State
    " H% m% Q- ]8 W8 T( O9 g! A, z
  1477. BNE Update_Palette_Data_End
    / {) T" d2 a% P( L$ r3 P
  1478. 8 r0 f3 V  `# S4 ]' @
  1479. Update_Palette_Data_Check
    4 T# S; L- v- m7 Q4 K
  1480. LDA Palette_Wait_Cnt2 h/ x2 Y, o- u2 K) T
  1481. BPL Update_Palette_Data_Check_Over
    $ r6 B/ C/ q" d$ h( [" ]
  1482. LDA #PALETTE_UPDATE_INTERVAL
    # a2 u' r* e& `( {4 B
  1483. STA Palette_Wait_Cnt
    ! T6 w+ i0 j  Z+ g2 l% O% B6 h+ i- _
  1484. Update_Palette_Data_Check_Over' @# q8 [& ^* Z
  1485. DEC Palette_Wait_Cnt* s& u% ?% p, H
  1486. BNE Update_Palette_Data_End" _, ~/ V" a1 J8 I) V6 H5 |

  1487. ( i8 F- Q3 e4 D7 L5 m! p: q
  1488. LDA <Text_Disable_Flag
    % m) O) b  R4 R$ Q9 j# }6 _/ O& q7 @. ?
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    1 e* l7 l9 X$ ~. _* B# }6 c
  1490. STA Text_Disable_Flag
    - ^" C1 I3 L" ?# H8 A
  1491. INC Palette_Update_Flag
    0 u+ y/ f2 H. x, I( e: f/ A

  1492. : ]( [2 J" s5 A" G& M
  1493. LDA #PALETTE_UPDATE_INTERVAL
    4 q2 e0 c/ B% _
  1494. STA Palette_Wait_Cnt6 m- b) v; i) y4 a! Q: D4 O; Z
  1495. 0 r3 ^  k  D0 x5 z
  1496. LDA Bkg_Palette_Update_Addr
    ) \4 k, m% ^4 I/ E7 ]2 e" L3 K$ x
  1497. CMP #PALETTE_UPDATE_MAX
    1 a) J) ]3 N$ P5 G
  1498. BNE Update_Bkg_Palette_Data_Set; u6 q& k- ~3 a" u
  1499. LDA #PALETTE_UPDATE_MIN - 1
    ' J$ P( z( t* b- T: v9 G: v) C, e
  1500. STA Bkg_Palette_Update_Addr
    5 m  q( t! y0 [1 u( [
  1501. Update_Bkg_Palette_Data_Set
    5 R* a: i2 P7 h* J
  1502. INC Bkg_Palette_Update_Addr3 V- l2 c& [! D8 k$ z, i) j
  1503. - ]8 \% p* D. m/ V/ R
  1504. Update_Palette_Data_End) d$ Z; ^% ?, Q# E2 A
  1505. RTS2 o5 ^1 Z% a. [( Q

  1506. " @$ m& d) }* Z3 T
  1507. ;==============================
    , I: ~8 y  p6 f: B) m
  1508. Show_Music_Text;显示静态文本
    , j# l, w9 F% ?, ^* I4 G
  1509. LDX #$007 F+ ~) s7 @% `+ R
  1510. Show_Music_Text_Set, S' `  A& x. G
  1511. LDA Static_Text_Data,X
    " O+ P1 q, i" m0 n! ^! v/ K
  1512. STA <Data_L: P/ o! R* Q! z" Q* T1 O
  1513. INX
    + p( b$ b. e& G' Q# z* \/ b; L
  1514. LDA Static_Text_Data,X
    ( F& Y) A0 T) r# v" U8 t/ H
  1515. STA <Data_H4 A6 M: a4 u4 M- h$ n- t0 D
  1516. INX& D; W( D% f; p; X* m' M9 B8 D- H
  1517. LDY #$00  N# I* E7 Z  u# X9 f
  1518. LDA [Data_L],Y, k& R; s( p1 v  g
  1519. STA <Data_Cnt) A) }8 a- e( h) f, u8 W6 Y$ _
  1520. DEX- \: X  ^- m+ `: h9 J/ U; j0 k
  1521. DEX" \$ ~. ^8 A, A& ~
  1522. LDA Static_Text_Pos,X
    ) [! a4 C; q% |4 e1 ^6 K
  1523. STA PPU_ADDRESS
    * v8 |9 R$ ?% t0 z+ A
  1524. INX+ ]5 y! I" W: G; N/ Z
  1525. LDA #$20
    8 b6 D& K- @$ }( a# f
  1526. SEC
    - s5 B6 i& Q: B
  1527. SBC <Data_Cnt) V% i: I) w1 h1 O
  1528. LSR A) G1 s( t, |* T# [
  1529. STA <Data_Buf
    ( J( K( p0 _% Q1 {2 K0 m
  1530. LDA Static_Text_Pos,X. x0 [8 t6 a9 [0 G$ J9 C6 O
  1531. AND #$E0) ~/ j9 E7 X7 p: @, V3 b6 l
  1532. CLC. P: C& S* q1 _  J4 ~3 F& d
  1533. ADC <Data_Buf3 k$ n+ y& \# ?: d
  1534. STA PPU_ADDRESS
    1 r  ~- T: A* L
  1535. INX& S$ S/ a/ \1 x# Z" d; o7 Y
  1536. Show_Music_Text_Set_Write* `, V! {4 Z4 c6 s1 M3 K; n5 o* U1 E
  1537. INY$ H) h! Q0 \3 m6 D
  1538. LDA [Data_L],Y1 m; S+ I* `# t$ B$ c
  1539. STA PPU_DATA& h! R& W, Z+ w; M# N
  1540. DEC <Data_Cnt$ g: c% ?/ L0 W5 t# ~! Z6 T# ?* s
  1541. BNE Show_Music_Text_Set_Write; [6 b( E9 A, D0 C4 H
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos  D3 C( p$ ?. `, C7 ?
  1543. BCC Show_Music_Text_Set
    8 r- k1 L; r4 i
  1544. RTS8 b: }; h  |8 n# F

  1545. / W' d$ h- h  U( n. S  V
  1546. ;==============================
    ; L5 p& R. D( |5 U
  1547. .IF Track_Name_Pos;显示曲目信息
    7 v! q. z$ f$ d5 p' ^) ?

  1548. * e* @- }1 m/ A4 l. X
  1549. Clear_Track_Info- |7 W, b5 d2 }) h* c- H
  1550. PHA
    4 S( M8 V' O6 j+ _2 t
  1551. LDX <Music_Item_Cur
    # n1 l, S' ?, ~
  1552. LDA Track_Name_Addr_Flag,X/ r# o- \+ T8 [  i& X
  1553. BEQ Clear_Track_Info_End_Ex6 t; U3 P% Q3 \& N# o7 b5 |
  1554. PLA
    $ r  v) K" T* h, t

  1555. 8 m! K7 X* s( M
  1556. LDX PPU_Cur
    ' Z" ~2 G! z- z6 y2 a* [" ]
  1557. PHA
    0 l' y( I. M4 p) m3 [6 x
  1558. LDA #PPU_MODE_CNT_CLEAR  D# V  K' v! X
  1559. STA PPU_Addr,X
    0 J9 {% z0 P: f; U- C
  1560. INX
    . U' G# Z, l, `, q. g1 m
  1561. PLA
    % C. L) w$ F5 f# V. M/ M" f' ?
  1562. JSR Show_Get_Track_Name_Center_Pos# J8 u) P8 Q: Y( p8 t
  1563. STX PPU_Cur
    3 J0 ?& Y  Y# A6 l
  1564. Clear_Track_Info_End  H  o1 R. _% ~, ]: K" |* I6 Y
  1565. RTS8 F* T+ b1 ^% Y% J. q6 D* x
  1566. Clear_Track_Info_End_Ex3 A! e6 R6 H7 E
  1567. PLA" e* }, U  E9 }6 a
  1568. RTS' z4 b0 K4 a2 W& F

  1569. / F+ v/ S5 D  j8 v+ B
  1570. Write_Track_Info
    2 b3 A2 U2 a! i
  1571. PHA8 F- o: W0 [9 e* g2 v# f( ]
  1572. LDX <Music_Item_Cur* J4 Q. x9 p$ J$ U
  1573. LDA Track_Name_Addr_Flag,X" \- }" J* t4 L! O" P& G
  1574. BEQ Write_Track_Info_End_Ex
    2 e& ?  U1 Y& x2 H& ^6 u4 r8 g
  1575. PLA1 Q8 S5 H2 @: B1 U' G# E% q" M

  1576. , d2 p  V  R: u3 l  e$ e
  1577. PHA
    7 `) {) e" T3 R( w
  1578. LDX PPU_Cur, ~/ m* S! K4 U0 j4 H3 M9 P
  1579. LDA #PPU_MODE_CNT_LINE
    ) y' E* ~2 K" A: ^% P( n
  1580. STA PPU_Addr,X- x$ c# L2 k5 }9 k5 }1 \
  1581. INX; G) ~% w5 M+ c0 n- d5 F
  1582. PLA& }* X6 H3 \& ~: K2 \/ ]& _
  1583. JSR Show_Get_Track_Name_Center_Pos* i& v4 Y: o# n" t
  1584. Write_Track_Info_Data- O4 j! O* M) T! h: O
  1585. INY4 x- y: n0 H) B3 z( u; Y3 x$ `
  1586. LDA [Data_L],Y
    7 K, N& Q. l' ~% t$ X5 j
  1587. STA PPU_Addr,X; e$ W& j1 k8 Z7 h1 N9 \5 [
  1588. INX7 f) d  Q- o9 u: F8 q/ d+ Y
  1589. DEC <Data_Cnt
    6 t9 ?/ P( [" v& y# V1 i1 N
  1590. BNE Write_Track_Info_Data
    / M6 ~& u: R  k, w: F% t/ e
  1591. STX PPU_Cur8 [$ Q3 L. T- W3 _
  1592. Write_Track_Info_End
    ' M2 i  p8 x" @3 k* A  q- @
  1593. RTS$ E. Y2 k8 `* W9 I) Z$ c
  1594. Write_Track_Info_End_Ex. X1 i) J/ w; O. @( \
  1595. PLA
    ( D8 B$ u9 J1 S( X
  1596. RTS
      Y8 E4 u( ^' B* g2 Z6 I. Y
  1597. 0 V  b9 s' C8 D2 |7 K) c/ U# V0 {+ J
  1598. Show_Track_Info
    , `7 V7 k1 e& E" ^9 Z- R/ G! O6 \7 n
  1599. Show_Track_Info_Clear
    ! }1 w# ?; M$ P# b4 @3 B
  1600. LDA <Music_Last9 S9 \+ C  @' |! w& c

  1601. * g. J1 C% Z0 u! t
  1602. JSR Clear_Track_Info3 V& q, L  v" A/ g  u6 @. k

  1603. 5 u3 ?* a' r' T: B1 `' r
  1604. LDX <Music_Item_Cur9 y: b" h5 v- R7 S1 `
  1605. LDA <Music_Cur,X& v( S- z, \+ M0 I3 U
  1606. JSR Write_Track_Info
    5 y4 M0 J, N3 w
  1607. RTS
    . G  b* g5 q! s1 E6 M, V
  1608. 5 q5 ^7 C* T2 w/ N  M* r' i. @/ A
  1609. ;==============================/ B" k) v1 @$ \
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置
    + J) O: m# l7 S) e
  1611. * o  r* R* M* J: s1 K
  1612. ;取出集合名索引
    ' r/ ^: D) l% i8 E% d! ?
  1613. PHA. L, B8 C+ f5 e$ k3 |1 n  e
  1614. * Q& ?# L4 H+ ]/ z% ]# A) X
  1615. LDA <Music_Item_Cur
    , n- i+ j# z8 a
  1616. ASL A
    0 I+ ^6 Z; n5 {6 B, m
  1617. TAY
    + e3 A/ [7 w: x5 O3 K6 `8 ~5 X" O: _
  1618. LDA Track_Name_Addr_Port,Y3 ~4 `6 }# }( `* s
  1619. PHA, {  K+ B' H5 j
  1620. INY
    % U1 ?, |0 |0 o" j6 _, L
  1621. LDA Track_Name_Addr_Port,Y" j$ b" ]1 `( M. @# [8 ]0 F
  1622. STA <Data_H* m# s; I: X/ u1 H/ W8 L# M5 F6 s7 m
  1623. PLA
    5 |# X  I$ x  K4 q& ]
  1624. STA <Data_L
    3 H7 t" t9 b$ f9 _2 T$ l9 M3 O5 F

  1625. 7 D* O  b. m* b, h
  1626. PLA  K& `: w( D6 Y- ~; V
  1627. 5 A, n/ I) E- [/ C* a
  1628. ASL A' \* K2 b. y* H3 L9 v
  1629. TAY1 ~$ h. ~: v, i+ y9 v! D
  1630. LDA [Data_L],Y
    2 V0 t1 s) k: }) R4 c) U* T
  1631. PHA
    0 v6 [& ?- j+ |, W' `0 y' h
  1632. INY
    , R8 Y. D% N9 O6 F* v, D
  1633. LDA [Data_L],Y
    3 V. h" @% }4 u! Z/ F6 s$ s( s
  1634. STA Data_H
    ; f8 K/ P! `, b- b( L. j8 s9 J* u- F
  1635. PLA' }  X- t8 D/ {+ E/ E* A
  1636. STA Data_L
    6 `, b! U: |+ F% [5 p: @0 \- _; P
  1637. / e0 J  ~4 R+ ~& S6 ]+ D
  1638. LDY #$00
    : t' F8 V5 \5 x; y5 t# F
  1639. LDA [Data_L],Y3 y' x1 n& l1 G
  1640. STA <Data_Cnt
    1 h  V8 E& a6 I2 a' `1 i1 N9 s2 X
  1641. LDA #$20
    , p) {8 ^& T( U. P  k* ~
  1642. SEC
    * J* ^! ?( T5 ?2 ?% o! z
  1643. SBC <Data_Cnt
    ( m+ {: h" x, z: t/ l
  1644. LSR A
    ' r4 S1 d; |% U
  1645. STA <Data_Buf1 y, P& ]/ H* {  i: y8 V
  1646. LDA #HIGH(Track_Name_Pos)
    / v) e& w7 ?) z& d9 t
  1647. STA PPU_Addr,X
    : C, f  h( f: E. }( A: c
  1648. INX
    ' a& g: A  X. x$ Y. x4 k0 C- g* b
  1649. LDA #LOW(Track_Name_Pos)9 c' q0 U6 J4 @' m( H
  1650. AND #$E0
    & l% h- S* k1 w1 _$ h& q/ K
  1651. CLC2 S( l; y9 q2 ?
  1652. ADC <Data_Buf
    2 I8 U* {5 a! O& P# }' s& c7 q
  1653. STA PPU_Addr,X* P9 W3 ~  N% i; ?; T+ S1 C4 W" W
  1654. INX$ Q2 S( B( d! g
  1655. LDA <Data_Cnt+ d4 @6 }6 Y1 G7 K$ k4 O7 W
  1656. STA PPU_Addr,X+ G6 E8 y5 X3 D. D; Q" V9 K
  1657. INX
    1 E* l- n9 n2 j) G6 ]/ o& ^2 Z
  1658. Show_Get_Pos_Center_End" G& p) H2 c; h
  1659. RTS
    6 R/ [3 R  l4 P1 p1 t0 Y1 ]/ ]+ M# G
  1660. .ENDIF
    2 @( L& M  u/ ^& S& v, {5 F8 h9 p

  1661. ' f: p6 d# E! N& w4 v0 v6 }8 c( B, L' F
  1662. ;==============================
    2 f/ S4 x* ]' M5 v
  1663. ;音乐端口清除
    3 J+ ?  u5 f5 _; E
  1664. Sound_Data_Clear
    & o/ y4 D" @* m; n
  1665. JSR Sound_Port_Clear9 \3 @& A2 R. d  L  c! S0 F
  1666. JSR Sound_Ram_Clear
    3 |! o; x, V. @% Z6 N6 k# T
  1667. RTS
    - G* }6 o3 J5 C: x/ {

  1668. 6 b3 ~# {& F6 c& U- B
  1669. ;==============================3 y. r+ T( Q' H/ g8 ?3 _1 x1 {
  1670. ;音乐端口清除
    / U1 j+ j7 o6 n# I1 |- r. ]+ I2 w
  1671. Sound_Port_Clear! v1 l$ u) z2 q7 ^
  1672. LDA #$00
    ) m8 S, ]* p/ p7 g
  1673. STA APU_STATUS1 m4 x' U0 j1 T! D' X
  1674. LDX #$00' c. _& N0 X8 M; x/ K2 p
  1675. Sound_Port_Clear_Write
    6 a* Q4 z$ j" j: U
  1676. STA $4000,X
    $ W  O# j0 c1 f( h* T! e
  1677. INX
    1 b; p" q! b  n
  1678. CPX #$14, K0 T+ _7 A1 }  ]
  1679. BCC Sound_Port_Clear_Write
    # Z- |4 Z; H- W( G
  1680. RTS2 }5 q% N, A. h4 t; }7 }
  1681.   A# m% k1 N8 E( o' F
  1682. ;==============================9 o, q/ R4 s& d" f8 z* }
  1683. Sound_Ram_Clear;RAM清除
    , n5 p6 P$ L& }# {; w
  1684. LDX #$008 M* P+ Y  u# d& b* D6 q+ s( [
  1685. LDA #$00, M" u! b) l8 d: c# B' y
  1686. Sound_Ram_Clear_1
    % K3 f' O( _% _+ N2 F, G! D
  1687. STA Sound_Ram_Addr_1,X# R- {+ ]3 X0 s% g: {) K! i3 l8 R
  1688. INX* ^. s7 [# _* T8 z! L
  1689. CPX #Sound_Ram_Addr_1_Size. H* }- A- E# L9 b2 o* m
  1690. BNE Sound_Ram_Clear_1
    1 g- y* {' d; E1 W) q% d: D
  1691. LDX #$00% j* \9 }3 g" W6 M
  1692. Sound_Ram_Clear_2$ D0 S, y6 p" Q4 L. C, O
  1693. STA Sound_Ram_Addr_2,X1 b/ F. e+ M3 I+ _
  1694. INX
    & E: e- j# B" E$ o( `) f5 c
  1695. CPX #Sound_Ram_Addr_2_Size. m& O5 ~  S* E
  1696. BNE Sound_Ram_Clear_2
    4 u  I4 f# v* z' E9 ?
  1697. LDX #$00
    ) a( Y- w' F+ @) D  D0 V
  1698. Sound_Ram_Clear_3
    8 e) v1 ^! p  Z
  1699. STA Sound_Ram_Addr_3,X
    ' L9 p  R% N. B0 `* _
  1700. INX
    . u4 z& k* J; {* b9 Q' j
  1701. CPX #Sound_Ram_Addr_3_Size: M( g+ j5 t  M6 R, m# ^
  1702. BNE Sound_Ram_Clear_3
    ' x: Y5 n2 W0 g' ~1 M" t
  1703. LDX #$00
    " |9 h. G% E9 X) f" Y7 u
  1704. Sound_Ram_Clear_4: G: }3 }/ s# ^* b
  1705. STA Sound_Ram_Addr_4,X; ]4 |$ u2 N- E" V% P
  1706. INX; q& t' K. B! ?+ m+ M
  1707. CPX #Sound_Ram_Addr_4_Size0 R0 O7 `* {' J3 Z
  1708. BNE Sound_Ram_Clear_4
    2 ^& Y' }- L9 J8 Q" S6 ?: M
  1709. Sound_Ram_Clear_5
    $ m; Z4 g8 ?' R  n$ I
  1710. STA Sound_Ram_Addr_5,X
    9 B/ D6 g4 H/ E5 T$ f+ A9 @' X2 J+ p
  1711. INX
    ( K! h; {2 i8 J
  1712. CPX #Sound_Ram_Addr_5_Size0 I. c) [$ @7 w! Y5 O% r
  1713. BNE Sound_Ram_Clear_53 P+ V1 Y6 p* o8 |) b
  1714. RTS4 P4 W) \' M+ M& z' A( f2 X. v

  1715. $ t3 X& \! B" ]8 P! y$ U
  1716. Get_Music_Collection_Name- i- ?, J& W( B8 Y: p4 C
  1717. PHA7 K: R* O( }: d' u$ ^
  1718. LDA <Music_Item_Cur
    + F8 P4 B5 w: y' E- \1 r4 w
  1719. ASL A4 L) Q% N4 L2 R' A" Q+ t
  1720. TAY
    , G7 i% v7 Y2 S( C( C
  1721. LDA Music_Collection_Name,Y
    9 U  _; i  V. K% d" L
  1722. STA <Data_L, m" m3 r. s' _6 L
  1723. INY
    6 ~+ c. p' L/ V! C
  1724. LDA Music_Collection_Name,Y
    , S' a6 I( U% m: X/ \$ q' L2 _+ i
  1725. STA <Data_H
    $ t$ i+ c$ D/ A
  1726. PLA0 N& h9 O% j9 P! g) C9 n0 z
  1727. RTS
    6 {0 Z/ j! R$ l4 C: X( q
  1728. / a; Q$ l  m  E& a  t$ U$ D7 n
  1729. Set_Sound_Total
    , R. y6 x% ?, G5 O5 W0 [
  1730. LDY <Music_Item_Cur2 L; N; o) G# w8 b% e$ ^
  1731. LDA Sound_Total_Port,Y$ S1 H& @6 Q* {' I- p+ @2 r
  1732. SEC" o) X2 o. m' d" |# s0 U6 a
  1733. SBC #$01
    ' g6 ?9 k5 Q# ~, J- b2 |+ R  G
  1734. STA <Music_Total
    - g5 _# K2 S* n0 q* {5 }
  1735. RTS( n/ J1 t8 K3 Y2 a$ x7 A
  1736. 6 }$ W; g+ X. L1 U- g( Y6 j4 x
  1737. Get_Sound_Start
    1 x* F$ O& B7 y
  1738. LDY <Music_Item_Cur
    0 U$ ?2 c- M- J" P& _6 U
  1739. LDA Sound_Start_Port,Y) L6 R9 Y5 I3 N5 Z/ J1 Z: r
  1740. RTS
    / j/ O! }8 Q7 p4 e$ c

  1741. ! o, _% A+ W0 [
  1742. Set_Sound_Init_Port& m  ~# r" W1 b% |5 _
  1743. PHA  g( V6 x4 n' E1 T3 A: D" ?
  1744. LDA #$20
    9 l: G( n2 {. M) W. M
  1745. STA <JSR_Addr_Op
    3 z. v! Y* }) j# l/ n: Z
  1746. LDA <Music_Item_Cur
    8 Q& ?# B: W0 A7 h6 n5 }, `8 x" ^
  1747. ASL A, x* M" [" R7 ^& }/ ^4 N
  1748. TAY6 j" h0 n9 E( ?" b
  1749. LDA Sound_Init_Port,Y' B, [& ^  @2 l. t- L
  1750. STA <JSR_Addr_L
    ; `0 r2 {$ `# P( a  A& h
  1751. INY# `) V! j4 S) W. ^. g7 w' }6 n
  1752. LDA Sound_Init_Port,Y
    2 O9 X: D4 l- Q- o
  1753. STA <JSR_Addr_H5 r  i: [/ H( e: \% B
  1754. LDA #$60
    : j3 z- }9 x4 j& X3 K0 e8 k) x4 V
  1755. STA <JSR_Addr_Rts& D3 F+ i2 N, a8 t' Y
  1756. PLA; Z. _; W% A( W) f- g
  1757. RTS
    ( k; E9 F: G) U/ X) [
  1758. 6 H' R4 X4 v: G# l
  1759. Set_Sound_Play_Port
    ' V! h5 R* P# D$ x& U/ ]  K
  1760. PHA
    ; d% f( @& L! e- K* ^/ G
  1761. LDA #$208 q5 v  ?& y8 C
  1762. STA <JSR_Addr_Op0 I' A% S2 O- W# n  {+ K& ^4 r
  1763. LDA <Music_Item_Cur
    " A- P' K( d; m, C
  1764. ASL A0 m) R" f2 T4 D: g8 \3 H
  1765. TAY
    9 n5 V1 r# i+ q8 g* n
  1766. LDA Sound_Play_Port,Y
    : H) q+ f* D. R3 w2 E" x
  1767. STA <JSR_Addr_L
    $ R2 A: h* O! J, }- s% P$ G, S
  1768. INY
    6 X2 s2 F* w4 B# e" k6 C; s) t
  1769. LDA Sound_Play_Port,Y7 `/ k# W+ d3 V9 T/ m0 ]
  1770. STA <JSR_Addr_H
    * k6 @0 t6 T0 \9 f9 y  ~! Q0 w
  1771. LDA #$60! z+ k3 b) Q1 ^& _, s% u
  1772. STA <JSR_Addr_Rts8 c4 R0 J! M7 u+ J& D7 E( e7 ]
  1773. PLA
    ' H2 ]; O1 W& u
  1774. RTS
    1 ?& I( U8 o7 @- }" Y

  1775. . x6 H- {, P$ {. ~8 h! A
  1776. Set_Sound_Reset_Port
    : ?) @; d0 U3 H$ z% X) |- x& A3 G) y
  1777. PHA
    , h" n* ]: q/ z  W  M
  1778. LDA #$20
      B9 R9 X8 p' j# c5 k
  1779. STA <JSR_Addr_Op
      G4 V# i/ V9 F$ R  H
  1780. LDA <Music_Item_Cur
    ! r0 X0 Q1 E. e
  1781. ASL A1 ^2 v; c; j) B/ N+ n& m
  1782. TAY5 x! I1 O* A( N
  1783. LDA Sound_Reset_Port,Y9 R' r6 C; o; `- k8 s* M. k
  1784. STA <JSR_Addr_L* \6 X8 p8 m& k0 V
  1785. INY6 D; ^9 d% Y" i: v
  1786. LDA Sound_Reset_Port,Y
    $ J! t3 N3 A7 _# ~5 r, a, Z2 w
  1787. STA <JSR_Addr_H$ K2 R7 u8 Y2 ~! j
  1788. LDA #$604 A8 a* E' ?2 L- }" x
  1789. STA <JSR_Addr_Rts
    7 z0 _+ [3 `. Q! z: C$ q
  1790. PLA
    & }( }+ s$ u: h6 {0 D+ P, [
  1791. RTS2 H' v4 w6 V7 |( }# t$ w
  1792. 6 |! d7 o7 C  ]  R) f1 x
  1793. ;初始化音乐bank- ?' g1 f8 e" [. S9 h8 v
  1794. Init_Sound_Bank
    : \# \! p: L/ I+ Q1 w! c- w5 u* ^
  1795. LDY <Music_Item_Cur
    + N" b, z5 c, A. R2 ]+ w2 m
  1796. LDA Sound_Bank_8000,Y
    4 Q# z1 B. r* I6 l. v
  1797. STA <Music_Bank_8000
    ! u0 {$ ]( Z5 k; o2 q8 R
  1798. LDY <Music_Item_Cur
    6 B5 q  j5 D$ O  X
  1799. LDA Sound_Bank_A000,Y. c" ~- B! n9 t- X- S
  1800. STA <Music_Bank_A000) H/ w+ {8 L0 r2 Y) f2 K7 D! i/ b
  1801. RTS1 g" g+ J8 C& l2 R5 M, M4 k
  1802. + t( Y" z  z3 F% k8 \
  1803. ;==================================================
    5 N0 z+ C9 u' o
  1804. Sound_State_Reset;音乐状态重置
    4 R. ~0 Q6 Q/ Z
  1805. JSR Music_Bar_ReSet        ;重置音乐条
    . i! M6 @: X# e/ x$ q
  1806. JSR Time_ReSet             ;重置播放时间
    ! Y5 e  s7 B1 B3 {6 `" t& X& [! L
  1807. 0 T$ G  v0 S$ b$ l  f6 [
  1808. LDA #$00. p; C2 K2 e6 P' f% A+ Y' j0 G
  1809. STA <Music_Stop_State# y) j9 }: l" S! q: `
  1810. JSR Music_State_Show       ;显示播放状态$ {! N4 M* ^/ m; X9 @

  1811. % M6 H2 S& i8 ]) ^$ _
  1812. .IF Track_Name_Pos
    - ^9 e8 B# `4 e. h. w
  1813. JSR Show_Track_Info        ;音乐曲目名显示, x7 ?# ~2 v6 O4 b+ {+ F
  1814. .ENDIF
    + B- J  `- W% @; n' ?% k% A/ v  C

  1815. 0 [4 e( u. y& V
  1816. RTS
    ' ?4 e4 c6 X) K# M) k% i+ o9 Z0 b

  1817. % W) ^( \0 U7 U! m4 x. U* B
  1818. ;==================================================
    ( f+ m/ y2 D8 b8 P
  1819. Sound_Init_Proc;音乐初始化处理6 h, B! J& _  J0 i, A- f5 X: a
  1820. PHA
    ! I7 |& P: |+ d: @. Q- |
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    ( V# n" S$ L3 [
  1822. LDA #$00
    3 z- w# M3 b: p, J" h* t
  1823. STA <Scroll_H               ;重设水平滚动, E, y' u6 _: o
  1824. LDA #$0F$ _! h) Y4 G: U" n. y, h7 _$ l+ s
  1825. STA APU_STATUS, M) {) ?4 R: |; P' o2 W
  1826. PLA3 D* a& i/ S4 ?4 y1 V$ r/ e
  1827. JSR Sound_Init             ;音乐初始化
    % i  R" w2 ^# m$ c" x
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    $ Y; m, f  B5 {+ K4 K+ I
  1829. RTS% e, r; ?% G* z3 S! }* R

  1830. 2 O% O: e% d" u  k1 K
  1831. ;==================================================
    9 t6 D0 \+ U# Q1 V' f+ Y. ~) q1 l( c
  1832. Sound_Play_Proc;音乐播放处理
    . B  |/ t" ~/ m. d3 V
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    7 T! a  z, I' c% G4 ?1 p
  1834. JSR Sound_Play             ;音乐播放
    & x) V, O0 A* e9 H0 F6 A
  1835. RTS2 Y, _% E# w% Y2 t3 M7 ^1 ^

  1836. # S. v2 L% K* B1 g
  1837. ;==================================================
    8 {0 D* F! @; R: y* l
  1838. Sound_Reset_Proc;音乐重置处理1 {! U' R2 {6 S& g& W2 P
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址4 u, V9 R* {, M5 Y
  1840. LDA <JSR_Addr_L. J3 u* ~" p/ t9 H# w
  1841. ORA <JSR_Addr_H' p" X7 u* g8 ~5 x! Z
  1842. BEQ Sound_Reset_Proc_Default
    1 i% \( W/ W4 @- k2 a$ k2 }0 ]4 P
  1843. JSR Sound_Reset            ;执行音乐重置
    8 v9 L, @, R- f* B7 U
  1844. JMP Sound_Reset_Proc_Init_Sound
    3 L9 u2 _- _% x8 _# n
  1845. 9 d# N: s$ ^2 Y3 Z& x6 ~; l
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理7 Z/ k0 z# T* S7 d* i% y8 U) E

  1847. ) w  B5 ?; Y* R0 e1 B/ ?; M5 d
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断1 D, p+ r& P0 \8 K5 D9 L; p5 o
  1849. LDA #$00
    $ B5 `" _' [5 H- d* }* ^
  1850. STA PPU_CTRL  b( |: z: U7 W' r' f1 H" M

  1851. + K, B0 J: R" ?
  1852. JSR Sound_Data_Clear
    / I; u! T- a( x  N; z% Q$ S  \
  1853. ! w3 [0 c6 \" M
  1854. Sound_Reset_Proc_Default_Wait
    % ]: q# G( ^6 i2 U. h
  1855. LDA PPU_STATUS9 R- j; {9 c2 H* a7 b- W
  1856. BPL Sound_Reset_Proc_Default_Wait
    ( l. v2 ?' X' F' K  I. P

  1857. 5 j0 s; A* ?- L
  1858. LDA #$001 L" S1 O( T5 M3 ?3 W8 \
  1859. STA PPU_ADDRESS
    $ {: c* _0 ?* q& g
  1860. STA PPU_ADDRESS
    * E" U" r$ e! C: }4 y& ^7 n
  1861. STA PPU_SCROLL4 y2 g9 t; }# R7 f$ o" g
  1862. STA PPU_SCROLL
    " A& G) }/ \+ O4 B5 W( N
  1863. 5 y& `% H: [+ U; b: u
  1864. ;恢复PPU控制
    9 m, d; K: g/ X; u7 G
  1865. LDA Screen_Ctrl
    . R; p$ N1 F( _+ z3 `2 H
  1866. STA PPU_CTRL
    4 L3 n! f% v  I6 @3 ]% j3 b
  1867. . q9 d0 m% b& a5 M7 z' w5 o
  1868. Sound_Reset_Proc_Init_Sound; |) K3 O/ @5 v* T2 x' O4 i
  1869. LDA <Music_Stop_State0 ?3 l1 E3 M- q
  1870. BNE Sound_Reset_Proc_End4 ?% A  S) _  w4 h
  1871. LDX <Music_Item_Cur7 I5 B$ x& p% N$ t
  1872. LDA <Music_Cur,X# I1 h0 e) f7 N
  1873. JSR Sound_Init_Proc
    1 j* \7 D% V0 j2 S2 O1 k
  1874. Sound_Reset_Proc_End
    ) l* c5 Z+ u  F
  1875. RTS
    $ C( ~: P5 s( r

  1876. 8 q1 N8 j( S. r4 T% F' X4 Y9 y; i
  1877. ;==================================================
    9 }; m$ B3 I" k
  1878. Clear_Item_Text;清除页项目
    8 W' R& F( r8 k& I7 G* e. [
  1879. LDX PPU_Cur
    0 |$ l% E4 g6 ]: p, j
  1880. LDA #PPU_MODE_CNT_CLEAR5 O$ m1 {% O3 g9 Z2 s* s
  1881. STA PPU_Addr,X6 C7 Y$ V. X6 t9 @. D
  1882. INX$ u1 e# q! ~" Y4 A2 g, Q! H7 e
  1883. ( I5 n! R% l% E6 u$ O
  1884. LDA <Page_Last
    8 T& f6 u) |! ?& ]: O: s$ Z
  1885. SEC' w9 Y/ @. t* u1 [( Q
  1886. SBC <Page_Last_Index) l! W( v/ w6 S5 h  F
  1887. ASL A
    7 g" [# l; U+ ]& N
  1888. , p$ H2 \3 _4 l' x& Z$ m* x& C$ L6 ?
  1889. TAY
    + `& O0 B9 l2 K$ J6 h- G
  1890. LDA Item_Pos_Data,Y' A' q- y4 Z! q8 D. q
  1891. PHA1 V, \; {9 X7 N) M# M2 W+ p9 a
  1892. INY* L. B3 y/ O. g  f/ t; Z6 \4 m
  1893. LDA Item_Pos_Data,Y* b; _/ G0 e2 F: W
  1894. STA PPU_Addr,X# @" Y: [1 O8 Q4 @/ y
  1895. INX
    5 V. E/ X$ `2 h$ }# W
  1896. PLA
    & z+ d! i$ s1 ?* J  W
  1897. STA PPU_Addr,X: I6 |8 {  v( Q/ i! L* v9 D; _, J
  1898. INX7 I8 `! J! X, B5 Q1 q9 p. g

  1899. / _9 p; \* x" H3 q
  1900. LDA <Page_Last, ~7 E; f& F" P* ~0 L
  1901. ASL A
    " }" N0 v8 ^* c* n
  1902. TAY( a3 P; @" C6 \
  1903. LDA Music_Collection_Name,Y7 j) k% f$ ?  L) W
  1904. STA <Data_L
    ! Z8 p( l. N2 [! k* A! j9 b
  1905. INY% Y1 k, |! B, Y7 n, h- q, C+ p
  1906. LDA Music_Collection_Name,Y
    0 t9 p$ p) v! N# M6 m6 E
  1907. STA <Data_H5 B+ Z+ x& y4 ^

  1908. 7 J5 D7 J! p7 }7 S% F. i
  1909. LDY #$00
    # P2 D* V! m, h: \  e8 p
  1910. LDA [Data_L],Y' Y9 J3 }/ _( M6 N4 Q
  1911. STA PPU_Addr,X  T* s' m! u8 g, `) a* R, q4 e$ ?
  1912. INX
    4 s5 g) s1 S% R7 P1 c, n7 V0 U- e
  1913. Clear_Item_Text_End
    % M3 s! c" x' W
  1914. STX PPU_Cur7 q" A3 q2 o/ _. L
  1915. RTS
    - ^6 y& W9 w' F5 b" V8 g- f% S

  1916. 5 D8 U, [2 R% L) `  b
  1917. ;==================================================
    4 A4 O( v1 a( v% S6 |1 w% ]: n7 H
  1918. Show_Item_Text;显示页项目( e/ C6 t! Y! `7 r5 K
  1919. LDX PPU_Cur
      F: F# v9 z8 s' @. L8 h  T$ d
  1920. LDA #PPU_MODE_CNT_LINE
    & A+ N& E' \5 ]6 C
  1921. STA PPU_Addr,X+ N5 ]4 Y3 O/ y' W
  1922. INX
    * ]$ p2 `9 w- c6 V% o9 N, G1 F' \
  1923. LDA Page_Cur2 p5 c: [4 ?. y4 {
  1924. SEC' d' k- _& c: @
  1925. SBC <Page_Cur_Index
    : I5 X# ^+ a8 T$ D+ b0 v2 x2 a% n
  1926. ASL A
    - y- U/ @" I% O5 p) E
  1927. TAY" W& L# v' v! z' R4 f* W
  1928. LDA Item_Pos_Data,Y
    & i8 c+ p9 t+ h1 F" p0 v& K4 D
  1929. PHA
    - K9 g) s& H+ ^  y( i6 \
  1930. INY; F5 n. ^. e; v( b/ j
  1931. LDA Item_Pos_Data,Y
    ( I/ W' X) I* J( q! H
  1932. STA PPU_Addr,X" O% \% Y- d2 S/ |
  1933. INX3 Q/ J$ M8 }' _, u4 Z# C3 `
  1934. PLA- Y( z7 w, p; l- p
  1935. STA PPU_Addr,X8 _( m# ?8 }6 C7 P
  1936. INX
    * {, {) A: ~4 [/ X5 p( ~$ L

  1937. - D/ S4 z8 H8 F! \6 j
  1938. LDA Page_Cur9 ?1 v( u4 b! v+ ?0 s
  1939. ASL A5 l  p, l3 E/ m) Y( n8 m6 H: V
  1940. TAY
    2 x$ E4 ]5 N, t6 K# {7 |! O
  1941. LDA Music_Collection_Name,Y
    ) q* ^& {8 q% c; u: F! Z& @
  1942. STA <Data_L
    % N* Q$ Q- M6 l7 h
  1943. INY9 h* J+ f' ~/ Z- X
  1944. LDA Music_Collection_Name,Y1 L+ v! g% Y& M) s1 t: w
  1945. STA <Data_H: e, ]( J3 {  ~( Z( ~5 [0 k/ y
  1946. : W5 t% D8 k/ L' |: S. U1 B6 q
  1947. LDY #$001 H3 q4 F" L7 \2 C
  1948. LDA [Data_L],Y
      a1 H  A: L; s5 V# H4 T1 T& u/ C
  1949. STA PPU_Addr,X" W- l  r1 Y' ^8 w
  1950. STA Data_Cnt5 U  I, m1 v" P3 A8 I, j: ^
  1951. INX- {; x) J. Y: H+ F) }2 J/ {; N4 W
  1952.   r- j# e* v$ O4 e9 M. K
  1953. INY  Z( l: ^5 U  b1 U
  1954. Show_Item_Text_Write
    + V7 n. \3 h. ~; k% P
  1955. LDA [Data_L],Y
    4 [3 X9 a2 x- j) r
  1956. STA PPU_Addr,X# r* v# U$ d1 C2 ]
  1957. INY. q, L' X* z! L, \/ L8 o6 P
  1958. INX/ u. i4 V" V1 m+ Y# T$ C
  1959. DEC Data_Cnt) ^( P3 Y% c2 s* W0 O3 ]
  1960. BNE Show_Item_Text_Write/ s4 H% \4 U$ [2 {) I3 L' v
  1961. 7 d8 R- @$ A1 p) a, @
  1962. Show_Item_Text_End
    - \% M, `2 T. L$ W& Y; _
  1963. STX PPU_Cur
    ; [! [0 f% N1 i# o0 f
  1964. RTS
    ) F6 I. z0 u% B, n

  1965. $ c8 g* D) S; {3 X' f1 v
  1966. ;==================================================1 k: |* h) z) W5 `
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    ) x8 `+ ~5 Q& X$ H3 w) b0 q) A6 ~
  1968. STA <Data_Buf: a8 k& L4 m$ B
  1969. LDA #$00. M% i) H( I8 _* r& _# I0 T
  1970. Get_Page_Index_Calc5 C9 x8 K, ?: D; ~' v% e
  1971. CLC
    / {4 b: l/ u8 m1 j- K. m
  1972. ADC #PAGE_SIZE1 Q( }4 ~, F- r5 [8 q/ z4 L
  1973. CMP <Data_Buf/ H1 Q7 r! u8 z7 z# E0 S
  1974. BCC Get_Page_Index_Calc7 h6 q! b+ O$ A( d* d# t
  1975. BEQ Get_Page_Index_Calc_End6 l- W3 b% N" s7 _6 m8 K% v& P' r
  1976. SEC& Q8 V1 D7 Z/ H% T! ]9 ^" }
  1977. SBC #PAGE_SIZE3 y. x0 [4 D0 Y+ U; ?& }
  1978. Get_Page_Index_Calc_End
    2 k8 ?0 z' z8 H, i/ l+ o
  1979. STA <Data_Buf
    1 {, L  J- {! I. b3 L1 s
  1980. Get_Page_Index_Cnt
    7 m% `& M; Y# g/ D1 }
  1981. LDA #PAGE_SIZE7 E( X/ l3 o1 B9 q$ a
  1982. STA Data_Cnt
    3 {/ j8 Z/ u; V# ]# c* r
  1983. + _$ c) r$ Q% i, B9 F
  1984. LDA <Data_Buf; v; W2 x. n: G, h/ T
  1985. CLC( k7 K/ F; x3 a! l
  1986. ADC #PAGE_SIZE; K! o; e+ C$ f& J3 u
  1987. CMP #ITEM_MAX_SIZE! r% P2 N; @: f1 z
  1988. BCC Get_Page_Index_Cnt_End
    $ E8 ~1 }9 ]# ^# T. ?# S
  1989. ! L: X8 ^7 V3 |! M, J
  1990. LDA #ITEM_MAX_SIZE
    & q1 h2 C+ N4 D! S. M
  1991. SEC
    ) B# j1 f* d5 _$ M% G+ H2 V& T9 W
  1992. SBC <Data_Buf- F4 U; M: m( T" S
  1993. STA <Data_Cnt" n0 p7 k5 ^5 c6 ]& n# z

  1994. " y+ ^6 J" Y$ H8 h* A
  1995. Get_Page_Index_Cnt_End5 {! Z. m/ i4 `; g
  1996. RTS
      q. i" y7 X3 S! i$ g# L
  1997. 4 X  N8 _4 s( v! t
  1998. ;==================================================
    : {0 ^$ E) i8 ~) h" Q  k; s
  1999. Get_Last_Page_Start_Index: l# N3 D$ Z( G' Q: M0 l3 P7 i, a
  2000. LDA <Music_Item_Last0 Y# Z) P+ O- a2 h
  2001. JSR Get_Page_Start_Index
    - o  b% @% ~' Y7 Z
  2002. LDA Data_Buf
    8 ]' c( @! _5 q  D# s% x+ Q" g! Y
  2003. STA Page_Last; n" @/ x5 U, q/ U5 G1 p
  2004. STA Page_Last_Index
    9 y4 A" ~5 k. r9 s/ V5 v: U. ^
  2005. LDA Data_Cnt1 z" P3 T! ^% d2 B+ e
  2006. STA Page_Last_Cnt
    # B4 ~6 {" V( n
  2007. RTS" x4 g/ S2 |$ u. B5 O. Z# C

  2008. ( g. j7 K( ?5 Q: l7 q1 P; B6 p6 S
  2009. ;==================================================# k; Y5 A, Z! H% q) K
  2010. Get_Cur_Page_Start_Index
    + x5 c* X0 K0 K" o+ @* x$ X
  2011. LDA <Music_Item_Cur: q: M% H2 r) B' p3 C& I6 |' v
  2012. JSR Get_Page_Start_Index! \. O0 V, V( D/ v
  2013. LDA Data_Buf4 n" V8 C! w. \# ]0 F5 D) Y: z
  2014. STA Page_Cur% o: r' Q5 l" c4 C
  2015. STA Page_Cur_Index7 Q) B$ s. R" x. m0 }
  2016. LDA Data_Cnt+ [* m( }& |9 I: T
  2017. STA Page_Cur_Cnt9 ]! g  p- }, {  L
  2018. RTS
    - V0 a& J+ I/ v: y; ]
  2019. , S( |$ y8 h8 j; ?' o3 v  m2 \
  2020. ;==================================================  D' |9 g8 ~( U( r0 f
  2021. Show_Page_Text;显示页文本
    & B& s# A, f7 y' _
  2022. LDA <Text_Disable_Flag# ^. d8 g, a9 w* R
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM! D/ F6 ?0 z+ f+ b4 H1 n% k+ j
  2024. STA <Text_Disable_Flag
    0 W  S5 Z+ Y4 {' F3 O! d

  2025. 4 l  u; `: I! r6 F
  2026. JSR Get_Last_Page_Start_Index
      ~! a( D# v# t. S) D% j: |# ^
  2027. JSR Get_Cur_Page_Start_Index
    , R+ h: n4 V" f& p, ]6 a* c

  2028. 5 |( K" \5 J, u7 f* G4 o% j8 M4 {/ e
  2029. Show_Page_Text_Set
    ( S# |- @4 Z! G+ O7 _5 b
  2030.   ~" `  D$ x! c
  2031. Clear_Page_Last_Item;清理上一页
    " B5 |! z& Y/ D6 R0 j6 W) {! l
  2032. LDA Page_Last_Cnt
    0 Z3 _2 P  j4 U' w3 R
  2033. BEQ Clear_Page_Last_Item_End
    * o7 z8 j% z5 F* W" z- T7 F" d$ |! W
  2034. JSR Clear_Item_Text( G& `+ b9 C6 g6 T
  2035. INC Page_Last
    * C/ z1 E7 h( ^: F0 [6 T
  2036. DEC Page_Last_Cnt
    " U0 L5 @1 _9 R  l
  2037. Clear_Page_Last_Item_End+ P# _+ ]0 r9 c* A& w$ {/ E( i  D

  2038. 1 G6 P# R# \% }" ], D* P
  2039. Show_Page_Cur_Item;显示当前页
    6 J5 P5 w' ]% b2 R  j5 q% }# e
  2040. LDA Page_Cur_Cnt
    0 y( N- ^$ b, X
  2041. BEQ Show_Page_Cur_Item_End
    0 _; a; c$ Y! b5 U. e$ o, c, l' |
  2042. JSR Show_Item_Text
    3 ^; A; _' p% ?" ^9 B/ V
  2043. INC Page_Cur5 U1 W! p# L  S' K. @- W# i
  2044. DEC Page_Cur_Cnt3 s, z3 I+ t/ ]+ O, G
  2045. Show_Page_Cur_Item_End# C8 w( E. R5 ]  N# S2 `1 s& ~
  2046. % t9 q: B7 m0 `: {9 O' a5 _6 W* a7 l
  2047. INC <Time_Wait_Cnt2 L7 W* x& r" w4 _: `& B
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作: D0 c5 f1 N$ A0 ]/ n: c0 P3 c
  2049. LDA <Time_Wait_Cnt
      z  d& l1 p$ I/ v, ]' [
  2050. BNE Show_Page_Text_Set_Wait) I) y% _8 ~8 X- I( c3 p

  2051. : `) y" }% b" Y7 Y
  2052. LDA Page_Last_Cnt
    ! W: |% V$ s0 M! C" i0 r4 n+ q
  2053. ORA Page_Cur_Cnt& W, ?" g2 B" l. j& k3 |
  2054. BNE Show_Page_Text_Set
    % T: w% w9 q5 y8 g$ q% q  z8 A1 y
  2055. LDA <Text_Disable_Flag
    3 E2 b. H6 y% ?
  2056. AND #TEXT_DISABLE_ITEM ^ $FF% r6 j& g6 F9 ]7 G
  2057. STA <Text_Disable_Flag
    ) [; t# f3 D( s0 v$ W
  2058. RTS3 z$ v! ?3 o) X, c
  2059. 4 Y* q# p5 j4 S
  2060. ;==================================================. z1 K8 D3 r; f
  2061. Last_Item;上一项
    9 y. E( t( Y3 H; u! m' p* e' a/ R
  2062. JSR Clear_Last_Track_Name
    " [" O( {/ D8 A. F  t7 E& r
  2063. JSR Disable_Text_Draw
    % j- S7 d2 X, |; C; Y" v+ a  {

  2064. + M5 O( W  ]8 n" u  }& j
  2065. LDA <Music_Item_Cur5 D( L7 t$ {7 `6 k0 E2 Q
  2066. STA <Music_Item_Last) ?! H& _' e. L& z; s& S, `9 e
  2067. ! S/ f' E/ f! f( P( J
  2068. JSR Get_Last_Page_Start_Index+ }1 B* Y! Q: A0 A

  2069. * j( B5 R. z9 q3 c+ w
  2070. LDA #$00# x8 b& Y/ Z; G$ `4 d
  2071. STA Data_Buf
    # A' V. l( X1 `5 n( n& Z
  2072. * B- H. m3 @4 r, w, t
  2073. LDA <Page_Last# U  g% z5 q; ~$ j& u; `
  2074. CMP <Music_Item_Cur
    / }" ~* D, Y0 t7 @4 y, x( q
  2075. BNE Last_Item_Begin
    ) h' v" V% F' c  r2 U
  2076. 1 u1 g: Y  G  e2 R6 a( o1 k
  2077. LDA #$01# v; j" b+ W" g6 K9 E  R5 k
  2078. STA Data_Buf
    $ m4 F4 m% G7 i
  2079. Last_Item_Begin
    3 f4 T+ @; ^; x# T3 q) M
  2080. LDA <Music_Item_Cur7 A8 W9 @0 r5 E/ S, i5 d3 Y+ k
  2081. BNE Last_Item_Set( w: K" X, B! d4 E
  2082. LDA #ITEM_MAX_INDEX + 15 p+ K3 e3 D% f$ r9 }: r; X
  2083. STA <Music_Item_Cur
    , [7 q4 X, X- M$ t6 K" n. U' X

  2084. 6 o# z6 _5 f8 `0 a& c2 i9 y8 P
  2085. Last_Item_Set
    % L2 s: B0 X' v7 n6 h0 J
  2086. DEC <Music_Item_Cur
    5 t7 Z/ v3 V! H! b: i- k9 [# f, w
  2087. LDA <Music_Item_Cur, q- z! ]7 `* ~8 d& l
  2088. JSR Reset_Current_Music7 H1 R0 a1 M' }! _: A7 i& H
  2089. ) i5 e& K9 s. h* |
  2090. Last_Item_Play: ^4 K1 Y( s! G% U+ {
  2091. LDA Data_Buf; d6 {7 I( v! q0 ~
  2092. BEQ Last_Item_End
    - ?: ]  L5 k  C$ _# D/ J
  2093. JSR Show_Page_Text
    7 I1 f3 \9 l( T3 R
  2094. Last_Item_End) o* ~4 B! t& o, `
  2095. RTS
    9 x3 g% @' q. D: h8 V. R
  2096. 8 e$ Y( O  o9 L' q7 Y' x
  2097. ;==================================================
    * O* D7 |- }! Y* \; H0 P- l
  2098. Next_Item;下一项
    , t' b  q# y' q  [; B' Y2 e
  2099. JSR Clear_Last_Track_Name5 }1 H/ d2 F/ Z) L4 O# g. \: z
  2100. JSR Disable_Text_Draw
    6 Q: S% z; C% c
  2101. - f; H# U5 J, ^9 y
  2102. LDA <Music_Item_Cur0 @. a' K* x, v; @9 h. {" U: ~
  2103. STA <Music_Item_Last
    ; h5 h' z% Q  p/ i
  2104. 8 J3 C" W) q/ |# G7 V6 w
  2105. JSR Get_Last_Page_Start_Index
    + I; s0 U! N% V$ {* l2 l5 {

  2106. $ N) w$ ]7 ^7 ]) b6 a0 j7 ^
  2107. LDA #$00
    9 v# j& @/ S% V$ h8 G
  2108. STA Data_Buf9 c. P5 z: }. i* O/ u

  2109. 7 \/ S, P. k. M. f8 b+ Q( Z
  2110. LDA <Page_Last
    ) M7 F& q9 i8 y
  2111. CLC
    ' P; x$ P- r4 f+ p
  2112. ADC <Page_Last_Cnt* b3 Z3 C1 b( S
  2113. SEC+ [4 J, G* D1 R  a1 c( K: I
  2114. SBC #$01" i  z2 C! x1 b  r: M' p
  2115. CMP <Music_Item_Cur
      c2 x, K8 x  q4 }- G6 h3 p+ k; ]
  2116. BNE Next_Item_Begin
    % }- `  ~: |9 x. v, b! w

  2117. - Z4 d% s* x' M7 R, ^2 p$ D1 V
  2118. LDA #$01
    " h: H: u5 B; e3 F' ]! q& y+ w" n% }
  2119. STA Data_Buf0 `2 z3 ^, ?6 v' w5 f# Z  P
  2120. Next_Item_Begin
    ( q' Q0 ~) ^4 q
  2121. LDA <Music_Item_Cur! `8 s/ V" O; Z3 {) E6 G
  2122. CMP #ITEM_MAX_INDEX
    . J: ~. ~  L- l' u  c
  2123. BCC Next_Item_Set
    + I, q2 Z3 U6 h7 P9 y. @
  2124. LDA #$FF& B3 ?) A5 j0 a& j6 Y( m  M2 R: l
  2125. STA <Music_Item_Cur4 T; z. `- n$ V- b) u% k' R
  2126. Next_Item_Set
    9 f4 M2 ~9 j9 @2 s  n6 T
  2127. INC <Music_Item_Cur
      V' t# Q+ a1 q: Z8 Q' g" p
  2128. LDA <Music_Item_Cur6 G! }% E: `$ ?7 U6 q2 F
  2129. LDA <Music_Item_Cur1 T" x- h- Y0 w; b4 [1 S: F# N
  2130. JSR Reset_Current_Music0 K/ O! c# L! I3 v3 i& b
  2131. Next_Item_Play
    - z; o8 ]9 u  f) e8 l4 v5 G
  2132. LDA Data_Buf
    , ?+ r# Z2 q( a/ J5 j7 B
  2133. BEQ Next_Item_End9 I0 V' f; V" a/ \1 [) w
  2134. JSR Show_Page_Text
    2 ]% x% `5 b  h
  2135. Next_Item_End% T. O6 l6 u$ q- ~; c2 w! h8 [
  2136. RTS
    ( {  z& R4 u/ ^& Y5 K* N& X% |, M2 ?
  2137. ( g7 W6 A) Y8 D$ }( F
  2138. ;==================================================
    9 R4 l( U+ F5 {
  2139. Last_Page;上一页5 M" r4 O  q4 H+ h$ \! |
  2140. RTS% u5 G) `: x% h3 v- N6 y
  2141. 1 Y! y1 U- V0 N) K
  2142. ;==================================================: f- a$ ?0 s. n  @0 g4 o( H  g
  2143. Next_Page;下一页
    ! B: M) o1 e3 q: @4 u
  2144. LDA #PAGE_MAX_INDEX
    $ _% D& f* Y, S5 K! L& ~( y. B0 H. s
  2145. CMP #$01
    . d! w, ~  K$ m  J# Q
  2146. BEQ Next_Page_End7 x8 B' n- A+ D& a4 T9 v. C
  2147. 2 p% r, j& s$ y4 [# V. Y
  2148. LDA <Music_Item_Cur
    & b+ Q' t6 l9 K0 f" L- q$ i
  2149. STA <Music_Item_Last
    2 G* J; _. o" ~6 ^9 {
  2150. 5 f8 `4 N/ {. h1 K- J' o3 J
  2151. JSR Get_Last_Page_Start_Index, E' s$ Q5 U# B. q

  2152. 7 G1 P& @8 `% Q2 y5 i
  2153. LDA <Page_Last_Index8 l% _- z% ?; _8 x. Q8 N5 X
  2154. CMP #PAGE_MAX_INDEX0 W1 G  P0 ^+ c! b+ |
  2155. BCS Next_Page_In_End_Page# R) r. |, z' F+ `  [; Y- C
  2156. 6 b2 J6 x0 @7 r1 R, X0 R/ z# Y
  2157. Next_Page_Not_End_Page;不是在最后一页. }& N6 L. [7 Z3 E# {
  2158. LDA <Music_Item_Cur
    & B% m9 }" e" C# S5 ~6 ~
  2159. CLC- q7 [0 q5 I0 F! p% C' v9 e
  2160. ADC #PAGE_SIZE
    . L/ ~5 N8 @% D
  2161. CMP #ITEM_MAX_SIZE
    7 u4 h; f2 B' d" L
  2162. BCC Next_Page_Not_End_Page_Less
    3 u  ]% o% S0 ]6 X  {0 `" k+ o4 P% r* l
  2163. LDA <Music_Item_Cur" i' v+ }7 O7 j" L" o
  2164. SEC
    * M( n, ?, ]. P5 O% F  ~
  2165. SBC <Page_Last_Index7 D( r/ A+ ?* [! b
  2166. CLC
    - ?: f: O! Q, c7 M7 \
  2167. ADC #PAGE_MAX_INDEX$ n) B! X5 v1 D) B
  2168. CMP #ITEM_MAX_SIZE
    ( r9 r+ k; ~# B3 r" G
  2169. BCC Next_Page_Not_End_Page_Less; B* |8 s  A  ?3 X9 h
  2170. LDA #ITEM_MAX_INDEX+ c$ T, d! {* S. |
  2171. Next_Page_Not_End_Page_Less
    9 A' `0 R2 Y2 Y" e1 ]7 V; W9 D
  2172. STA <Music_Item_Cur; }$ s" Y3 ?: q2 R- P0 l
  2173. JMP Next_Page_Reset
    6 z5 }* V: R5 r& j
  2174. 2 T$ m$ C  t+ P* X8 q
  2175. Next_Page_In_End_Page;在最后一页
    # P+ Z: i" g4 p8 i2 L
  2176. LDA <Music_Item_Cur
    6 F& L. P( H& q+ @6 M
  2177. SEC
    ' t( @) Q3 ]0 y- O- p7 F
  2178. SBC <Page_Last_Index8 u: R* F( [1 C) H
  2179. STA <Music_Item_Cur1 X0 C/ {' K# ^/ |4 _
  2180. 1 `/ ~1 q% s$ N9 O) e' x
  2181. Next_Page_Reset
    ( [& U' ^* H5 v* O9 i
  2182. LDA <Music_Item_Cur, x0 ^4 z: z0 _$ O4 ?6 R! v
  2183. JSR Reset_Current_Music4 b( v  u) u2 w
  2184. JSR Show_Page_Text+ |$ M- o% k( n
  2185. Next_Page_End- d( Z8 B8 j4 @5 u8 C/ w  R. t. \3 l
  2186. RTS
    . Y, b, \/ Z" F' F7 w1 d2 r
  2187. * E0 `1 e/ K8 j
  2188. ;==================================================
    : `# G9 Z2 k% U1 }/ ]' J
  2189. Disable_Text_Draw;禁用音乐条刷新+ ?: T$ G/ @6 D' T" r
  2190. LDA <Text_Disable_Flag; J2 z7 k. i* O( ~( S' O+ r; y2 N
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    ) O  R% R1 B4 l# [* t% _
  2192. STA <Text_Disable_Flag- y1 V$ W# [- x
  2193. RTS- n! Q- y3 G& O3 q* ~% r# H

  2194. 6 D' q- Q$ q9 f2 Q
  2195. ;==================================================
    ' B' a, I# N" u% l7 N
  2196. Clear_Last_Track_Name;清除上次曲目名
    / u' c# }+ U& e+ h: r
  2197. LDX <Music_Item_Cur; R' G" E$ W1 d
  2198. LDA <Music_Cur,X
    ) |1 w# {+ G9 f7 y1 I" O+ P" j9 }
  2199. .IF Track_Name_Pos& W& S8 U7 }7 M0 w! J+ M) A
  2200. JSR Clear_Track_Info
    9 H: D$ h6 B- f& L
  2201. .ENDIF- M" a" d+ E8 u. D
  2202. RTS1 j0 ]$ x7 F3 W8 @
  2203. 3 h# @" j$ G' E/ J  E8 J
  2204. ;==================================================3 M) H; J# e$ X# q9 i; W) I
  2205. Reset_Current_Music;重设当前曲目2 g( X7 t: p5 R  o& p
  2206. , k/ P7 I/ y6 ~' }4 i
  2207. ;写入当前总曲目1 R8 c$ b3 n4 Z! \+ `
  2208. JSR Set_Sound_Total
    3 }- Z1 u% y8 b0 j+ l
  2209. LDX <Music_Item_Cur
    8 `$ i  }3 i, w! c/ r+ g& S$ Z. S
  2210. 8 N/ d1 |% K# O  A
  2211. LDA #$00
      n% U5 S5 t3 E6 Y4 g% W' n
  2212. STA <Music_Last
      B: `$ L9 |+ b+ u
  2213. ; Y2 S; n# j. A; A2 D. l: }
  2214. JSR Sound_Reset_Proc( H2 @3 p5 K: R! m' C: \% ~
  2215. JSR Music_Show; K/ w7 ]+ u" X$ P; U
  2216. RTS
    ) l" _, N: Q) T7 w. N4 h

  2217. " N. n$ b+ B' Z" Q. ~2 V4 E
  2218. ;==================================================
    ! C; H4 H1 v( A* Z( z
  2219. Music_Song_Stop;音乐停止, E7 g& x& R+ U7 j
  2220. LDA #$01+ M/ q& v* e7 l6 I
  2221. STA <Music_Stop_State
    2 {+ ?  w! H6 m6 [: X3 y
  2222. JSR Music_Bar_ReSet) C) h8 ?6 P) w, {. Y
  2223. JSR Time_ReSet
    # [' C: J+ U% x5 _+ N$ _9 P( X
  2224. JSR Sound_Data_Clear
    $ X* `* g* \6 s2 R7 S8 A  {4 G+ P8 {
  2225. JSR Music_State_Show2 k( v% ^3 q9 f/ E! R! g
  2226. RTS
    9 q' n6 \, j& g! W- |4 g
  2227. . X. Y6 S. C& X  d1 c
  2228. ;==================================================
    & x7 u* b/ U4 \
  2229. Music_Song_Play;音乐播放% ?$ G6 H1 a" }/ m/ h
  2230. LDA #$00
    . O4 q! ]# V# h
  2231. STA <Music_Stop_State
    ) p' R; a3 B5 L
  2232. LDX <Music_Item_Cur
    2 B) C2 \5 w' h( m5 h
  2233. LDA <Music_Cur,X* u, ]$ |# h8 q1 t
  2234. JSR Sound_Init_Proc9 X+ S4 z1 r5 B
  2235. RTS
    6 z- ^4 u' R( X# v5 v

  2236. " X+ n. P. E8 K$ Q: `
  2237. ;==================================================- L- o# z5 {5 a* b" u9 [
  2238. Music_Song_Last_10;上10曲: s1 {" [3 w* r) t2 }$ M
  2239. JSR Clear_Last_Track_Name
    ' [# P* A( x# J
  2240. JSR Disable_Text_Draw
    0 g% T/ y, P+ F2 U3 l( U
  2241. LDX <Music_Item_Cur' C% D0 q' {2 E5 X
  2242. JSR Set_Sound_Total
    0 _0 ^" C' o+ D) x5 A
  2243. LDA <Music_Cur,X: y; J4 j, ^3 j% {( z) W7 N
  2244. SEC
    6 O4 S) k9 ]& a0 z2 A6 F! Y; ^
  2245. SBC #10
    2 W- _. k; \9 e/ G8 R0 z
  2246. BCS Music_Song_Last_10_Set
    0 t9 W9 w$ o& U# V4 q
  2247. LDA #$00
    4 F' \2 b; V( N7 O7 \9 _8 M
  2248. Music_Song_Last_10_Set
    ; F( C1 y7 H( I/ c" T/ {
  2249. STA <Music_Cur,X; U6 u* H5 T! C- V
  2250. JSR Sound_Reset_Proc
    ! V& @. y5 C0 S4 a2 W% h# \$ o
  2251. JSR Music_Show# r1 Y$ b2 o/ a* B
  2252. Music_Song_Last_10_End# w- h! k5 `7 z* Q  M
  2253. RTS
    . w2 T+ P4 x' A8 R" u* n5 T0 }0 k, \& _
  2254. % M8 V/ E4 m# j& C' z6 f. p0 P
  2255. ;==================================================
    ' Q( h! G4 b- n" H. e. M
  2256. Music_Song_Next_10;下10曲
    7 Y# M5 _5 Y5 g2 ?) `
  2257. JSR Clear_Last_Track_Name$ x& S6 _) Q9 n  C! j  y% r; D
  2258. JSR Disable_Text_Draw, j/ }1 g2 r! q5 t* w/ G
  2259. LDX <Music_Item_Cur
    5 N4 N' ]5 l) _6 t' _! `2 u8 O3 k
  2260. JSR Set_Sound_Total* T' g) A) [: L! h. E8 L) x
  2261. LDA <Music_Cur,X4 Q5 h1 U7 o8 h* v1 h" u
  2262. CLC& S, Q" M/ ^; F" X. T: X( R# Y
  2263. ADC #10# o4 Y7 Y% v  y% e+ E; O( O
  2264. CMP Music_Total3 y1 H3 v" L. Y, L! m
  2265. BCC Music_Song_Next_10_Set
    , G( G4 f5 i* V  C6 y2 Y" @
  2266. LDA Music_Total- n% G* e. @6 Y$ t$ l+ u
  2267. Music_Song_Next_10_Set: I! m: M) O# |8 a5 e2 w# k; C7 T/ \4 U
  2268. STA <Music_Cur,X) P% w6 K1 A, D0 }
  2269. JSR Sound_Reset_Proc
    2 ^5 k3 T  _. k$ Y& x
  2270. JSR Music_Show) j/ Z/ G! K3 Z2 W' i  ?
  2271. Music_Song_Next_10_End7 z* A9 h2 a9 z( S
  2272. RTS
    0 ~# u- s5 O# d  W; h

  2273. % |3 C$ L# N7 @! b
  2274. ;==================================================
    ' H5 Y8 k. B, z( a
  2275. Music_Song_Last;上一曲  u$ e2 w# w. e+ z
  2276. JSR Clear_Last_Track_Name% s& p1 ~" @3 Y6 V" Q2 `3 D
  2277. JSR Disable_Text_Draw2 t, e1 y' u3 C& i5 Y
  2278. LDX <Music_Item_Cur3 Y% i2 |5 d8 g# t( x9 E% P' j4 f
  2279. JSR Set_Sound_Total- q6 ?# i9 p3 ^: L# P! B4 R
  2280. LDA <Music_Cur,X
    2 X4 T& ]( x7 I1 E, o) Y6 x5 |+ r$ A
  2281. BEQ Music_Song_Last_Set
    5 f# q" E, a# C' P
  2282. DEC <Music_Cur,X
    6 j& c! }2 i. w2 X& C
  2283. Music_Song_Last_Set
    9 c$ |) y4 m7 O6 C4 d! a" D( v
  2284. JSR Sound_Reset_Proc
    , U" c* T! w" p! k9 b8 Y3 X
  2285. JSR Music_Show
    & F: R: {8 [9 I0 h" v
  2286. Music_Song_Last_End
    " E: g  p+ b" Z4 e9 s
  2287. RTS
    4 z/ H* S0 @2 R- o) k- j8 B
  2288. ; p6 b9 o/ i3 R/ a
  2289. ;==================================================, s3 i0 i9 n$ Z; D# V/ H% C, S
  2290. Music_Song_Next;下一曲
    ; y1 a& B: ], N0 |- q! P& y
  2291. JSR Clear_Last_Track_Name
    ; v+ I4 n6 X0 H3 D) e; T! D
  2292. JSR Disable_Text_Draw
    6 O& X: P3 {# P6 ]4 g
  2293. LDX <Music_Item_Cur' J" D" t# _2 D- X
  2294. JSR Set_Sound_Total' T6 \, ~( Q6 h$ Q; j5 ^' [5 m
  2295. LDA <Music_Cur,X
    # z" c9 H. ~, P" o3 K; I1 X
  2296. CMP Music_Total( A7 g" Z3 O. K9 W: t% c
  2297. BCS Music_Song_Next_Set
    % U2 R% }- }: D. Q$ D* h
  2298. INC <Music_Cur,X# H5 F; w! h3 A- z' A4 k. R
  2299. Music_Song_Next_Set
    9 g6 R. u2 \0 x) H# y+ j
  2300. JSR Sound_Reset_Proc" U7 B0 l: F; n2 D7 f+ I" d
  2301. JSR Music_Show) g9 O* U$ D9 T% H9 }
  2302. Music_Song_Next_End% ~  [, {0 f2 {
  2303. RTS/ }" q5 g/ W( n+ ~7 C8 _

  2304. * G, C7 `' ~0 r/ ?8 V2 t
  2305. ;==================================================" y9 l& ]$ R2 H  q; l! L: a. r
  2306. Change_Select_Item;改变当前选择项
    ( H$ k/ A% R1 {; B
  2307. ;--------------------------------------------------  f7 I& b6 k* b: D& Y- c
  2308. Change_Select_Stop_Play_Item;停止/播放
    " E* M0 {/ m* Q) W, ~
  2309. LDA <Key_Once
    5 j- N6 ]& N  O! m' L4 h% j- k
  2310. CMP #$10
    * j  p: a  Q) N3 V! o* ?
  2311. BNE Change_Select_Last_Item
    5 _' ]4 r$ ]3 V$ l' a7 _9 F/ T% u( y
  2312. LDA <Music_Stop_State
    , I7 q& i9 s. x' V8 o
  2313. BNE Change_Select_Play3 u6 ^' V: ~) ]1 ]
  2314. JSR Music_Song_Stop
    + C5 V9 V: R7 |, @7 O# g
  2315. LDA <Music_Stop_State- {% d' o. d3 I; o9 }0 ^) W
  2316. RTS
    6 \0 E$ b' C( k" {- O2 Y
  2317. . W* h# i; T  ?9 T$ @* S
  2318. Change_Select_Play% m6 s: L/ T7 ^! |* a
  2319. JSR Music_Song_Play
    # m7 A( J" |, q9 t
  2320. RTS
    % ^3 N% }( e, H9 j
  2321. 5 v$ f  E( O$ b, K. m* q( P
  2322. ;--------------------------------------------------
      y" |& j+ ]/ [+ s+ w3 r& b
  2323. Change_Select_Last_Item;上一个专辑
    ; }. f- ^  k7 T& U) X2 G
  2324. LDA <Text_Disable_Flag0 K: m; I: e  D/ Y% R
  2325. AND #TEXT_DISABLE_ITEM5 }8 |; ^% }( y1 C
  2326. BNE Change_Select_Item_End
    9 t( X. K% G9 o, c$ A
  2327. LDA <Key_Once- q/ x% Q6 S! b" k, p: L/ v
  2328. CMP #$08/ f( @7 i4 `& l& J2 y- k
  2329. BNE Change_Select_Next_Item
    & }$ i' K1 a% w% R* b6 ?$ [
  2330. JSR Last_Item% F# D  w$ F9 Q$ k' Q( P- K) Q: C
  2331. ;--------------------------------------------------) h- b/ x. k. o
  2332. Change_Select_Next_Item;下一个专辑  ?7 H2 O8 s$ ]" @( O) I! X
  2333. LDA <Key_Once8 d/ U* @( t2 C8 S
  2334. CMP #$04
    0 K% t" X2 B! s  P
  2335. BNE Change_Select_Last_10
    / r7 h8 G. \4 W0 t% U) W; b
  2336. JSR Next_Item
    / E$ ?! r" [6 Y' ]9 ?* ~0 V
  2337. LDA <Music_Item_Cur
    ( V- y, G) C3 }2 S+ k' c  V* x
  2338. JSR Get_Page_Start_Index6 f' Q. D& B: D7 Q& w
  2339. ;--------------------------------------------------
    : ^" f8 S9 w" Q# q' X
  2340. Change_Select_Last_10;前10曲! n9 A  E. u8 u8 S. d7 m
  2341. LDA <Key_Once
    8 t! a, Z3 E2 E# J/ N4 S; t
  2342. CMP #$40( d. T% i' [% r
  2343. BNE Change_Select_Next_10% |/ j' r4 d8 Q# }( p2 L
  2344. JSR Music_Song_Last_105 q- ^8 c* P. f0 G+ o
  2345. ;--------------------------------------------------( f+ H9 ?! T, e  O7 q
  2346. Change_Select_Next_10;后10曲4 o3 J% H) [* m7 {
  2347. LDA <Key_Once" }* Z0 w/ w/ [
  2348. CMP #$80, I$ P- X- W/ |2 J6 R
  2349. BNE Change_Select_Last
    " E  h6 X: R0 }- d! N, L* I
  2350. JSR Music_Song_Next_109 u/ F# W9 q6 Y
  2351. ;--------------------------------------------------
    2 z. B/ |- y0 I/ H& |3 G
  2352. Change_Select_Last;上一曲- |1 u; D- C7 I. {  A4 V5 B
  2353. LDA <Key_Once$ {- @( S0 ^0 R3 u6 T
  2354. CMP #$02
    8 G! R% W) L* h* ^' n, h( T- Z% P
  2355. BNE Change_Select_Next) P7 s% R) s) n  E
  2356. JSR Music_Song_Last/ A, g) G, ~' h: h. k% H/ M- C9 Q
  2357. ;--------------------------------------------------
    4 S: i& l$ N9 P1 |. E6 F
  2358. Change_Select_Next;下一曲
    * A! m6 \% F, R# x
  2359. LDA <Key_Once8 A9 x( P0 t' y6 m8 e5 n
  2360. CMP #$01
    3 E+ E) B, B* i+ u( O) {" n( |& m
  2361. BNE Change_Page_Next6 D0 k2 ]* W. t/ T
  2362. JSR Music_Song_Next
    * @/ g" `7 L7 O& C4 C- I& F
  2363. ;--------------------------------------------------
    $ B, Q/ V( j8 Q% P% e
  2364. Change_Page_Next;下一页$ A% U2 n5 J9 q6 j
  2365. LDA <Key_Once$ O, [; g; [& K4 a
  2366. CMP #$20
    / K! M" `- W' O1 _$ e  H
  2367. BNE Change_Select_Item_End8 j$ _& w4 O  N7 b- X
  2368. JSR Next_Page
    2 t0 L5 ~$ z) H0 }, W" ^) a) n/ ~( N
  2369. ;--------------------------------------------------  J9 j- @& K5 H! B! T/ {: ^* y
  2370. Change_Select_Item_End4 {2 @5 K0 Z5 U" f; S2 R
  2371. RTS$ f# Q+ Q! |9 u$ i' c
  2372. ' B. l- k# }# ?, O% V9 C$ U, q
  2373. ;==================================================
    ' e4 i: J3 ^' f, z6 u& |
  2374. Show_Arrow;显示箭头光标/ j0 d6 [. ?: H4 f; [; N' W( U
  2375. LDA <Music_Item_Cur+ ^# W' t& H' @! R% t
  2376. JSR Get_Page_Start_Index- \8 L6 p) {4 Z& Z% T8 B* n2 @
  2377. LDA #$00
    0 v# A& m. }8 p1 d, d5 K4 R% z
  2378. STA PPU_OAM_ADDR/ o, C" P! K* c& x6 F
  2379. LDA <Music_Item_Cur8 G" L9 H" `. v+ B) k
  2380. SEC
    , a3 u! ?1 E5 \$ R, R
  2381. SBC <Data_Buf, d/ h8 \# \2 K% g
  2382. ASL A  x# x9 l8 l" g1 C
  2383. ASL A
    5 R2 h  A/ w! a' H) A7 |0 j
  2384. ASL A
    % d. y0 b  o$ U" `
  2385. ASL A
    & d+ m7 g5 W5 T
  2386. CLC3 b5 a7 J# f/ b6 L4 V) q2 Y
  2387. ADC #ARROW_Y_OFFSET
    ! [' g5 L3 q9 o! B7 Q
  2388. STA OAM_TEMP_ADDR + $006 g6 Z9 s  u8 b  G. z
  2389. ;STA PPU_OAM_DATA  t! {/ `) \) E; b5 q# v! c& z
  2390. LDA #$1F; G) J0 V4 E) U& Z: V# C
  2391. STA OAM_TEMP_ADDR + $018 H- ]. K4 o, c" x6 t* V* {3 Y
  2392. ;STA PPU_OAM_DATA
      y/ S$ O% D. S) ^5 i; `
  2393. LDA #$00( s8 w2 U* [0 o& {
  2394. STA OAM_TEMP_ADDR + $02. H8 J0 s" _0 d0 k, b3 s  t4 \
  2395. ;STA PPU_OAM_DATA
    0 _+ X# t  }0 z- R1 ?4 x
  2396. LDA #ARROW_X_OFFSET: q6 l7 ^; D8 ]& q
  2397. STA OAM_TEMP_ADDR + $03
    * U3 o6 S2 C1 s( @# @8 m2 X
  2398. ;STA PPU_OAM_DATA
    : h* O: D1 y# R/ O. a4 I4 Z0 V
  2399. RTS
    3 W6 {7 N( `+ F; V& z3 R

  2400. / ^# e; e' }+ d3 q1 b% a4 t2 w% m
  2401. ;--------------------------------------------------" T  k# W3 @& D4 K4 Z. I
  2402. ;命名表数据
    9 ^+ T' u# g% `. T; b" q
  2403. Palette_Attributes3 z' A1 m( t6 ]% e* [, x
  2404. .IF SOUND_BAR_SHOW_ENABLE  q' K8 `/ Z# z
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    - I  `# ^: q" R9 g8 J& M
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ; ~! S3 U9 O; O! l9 m% t9 I7 ~
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75, z, B0 d2 b/ `& @
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA% K' h8 R, h  g( o9 ?8 N
  2409. .ELSE; b; a( Y' K3 k4 }6 A% Y: z
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55
    , C! w8 D4 `/ J$ q4 X! |
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    + J; m& Q8 t" o
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    " {; @$ T4 j% b7 K
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    6 S) N4 M. d* E( d2 N- |
  2414. .ENDIF
    7 x7 _/ n2 k# I1 L% j

  2415.   h3 e4 X. ^0 l3 n1 A) a7 f$ B) f! e
  2416. ;--------------------------------------------------
    7 m& B, w+ W2 M8 Z; V: b
  2417. ;调色板数据- A4 L6 N% o/ [+ d. E/ c& J& s
  2418. Palette_Data$ `  M: d! A" t
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F0 I4 o+ d4 k% L  K% f! s  m% u4 M
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    0 D: R% f" [) V+ h9 t! ]

  2421. 4 z* g9 H0 f. r6 _- w' t+ h
  2422. ;--------------------------------------------------
    7 d8 S# V& B1 ~7 o7 W2 j
  2423. Static_Text_Data
    + K* Q. d- m6 s3 I
  2424. .WORD Static_Text_Caption_Data3 y! c  U3 r+ l% v% g
  2425. .WORD Static_Text_Author_Data; h/ I/ M: `! [' y2 a. O
  2426. .WORD Static_Text_Date_Data1 i% R* K4 N% \- V1 u' `
  2427. Static_Text_Data_End
    + Z/ i0 L! \$ |

  2428. 8 H- W$ Y" Z$ l% R  C
  2429. ;--------------------------------------------------
    2 [/ {2 a! z3 g% l% b$ ]4 b
  2430. Static_Text_Pos
    $ M3 O, Y9 l. O* j3 d# J8 U3 C
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)" f' p. w  }% }! K8 T. S. q5 o
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)! _" E- p8 W. c' r* [5 j1 z
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    ) v7 z+ f+ B+ c2 D- H
  2434. Static_Text_Pos_End
    9 M5 S+ Q8 N- a; h; l# O

  2435. " _+ e! P, a* y; `
  2436. ;--------------------------------------------------
    , M$ s" }% I0 `
  2437. Music_State_Stop* v6 G% D8 Y- F, d  H  z. N& \% b
  2438. .IF SOUND_BAR_SHOW_ENABLE
    3 [$ z( V) \: w$ P- }; P
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    & z$ Q" e, z# `# O9 N4 r- [, g
  2440. ELSE
    9 M+ A. X5 _. D; A, M( b
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00) A* g, h4 W9 G, V/ C, |+ S
  2442. .ENDIF' ^0 d8 F& X0 I# i& |4 y
  2443. Music_State_Play
    ; F, ]+ t, [/ Q# E2 c$ `4 B- Z9 S
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$003 l, g/ x& T$ d3 o6 O! k! A2 r+ Y

  2445. 9 V1 a% K+ {5 e/ W! {9 u
  2446. ;--------------------------------------------------/ W2 K1 f  U6 o/ @( `, w
  2447. Sound_Bar_Text_Data;声音类型文本
    , Q0 u# M$ p7 R! j2 E3 e8 O
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    ' L" I) b" @2 k' o9 _# Z- o
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"  X# T8 }6 Y) K* i
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"* z8 I; ^% d/ [. Z
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-": }$ |* Z- [0 ?+ O9 u: V0 C
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    ) T, |3 }; n# k' n8 I' F6 l, N

  2453. : V, i1 u! x( Q& K
  2454. .IF Track_Name_Pos5 g4 G3 T4 \- u0 B: _
  2455. ; u8 [' b6 t$ U5 P& K
  2456. ;--------------------------------------------------# d4 d2 G/ H. p6 ~5 M
  2457. Track_Name_Addr_00;曲目名地址索引# _. ~  c* f& a% Y3 z
  2458. .WORD Trackr_00_01
    , c- t5 T2 O' R
  2459. # r9 }6 ?( @" K
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    : [$ D, U; t" ?5 d" d: N" G
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    0 `6 ^( x* G: v% d7 f9 j5 D

  2462. 5 R* N# o3 E4 z" G' _
  2463. ;--------------------------------------------------
      ^+ d5 W9 S0 [% t6 B- U6 K
  2464. Track_Name_Addr_01;曲目名地址索引
    ( Y6 k& o$ n4 N9 B! q- f
  2465. .WORD Trackr_01_01
    6 O- l4 i& F. O' C7 a2 V" y

  2466. 2 a' h1 w  C5 K& T# O/ K* |0 H
  2467. ;==================================================
    9 A% U8 ~. @# ]6 X& g6 l
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    3 u4 e$ W1 Y; t9 Z
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"3 l4 F' f- b6 T7 k& ]
  2470. 9 m- i2 S! y$ W- G& V$ D
  2471. ;==================================================0 k) C, x9 j7 t
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引1 ?& [& ^/ i* u" i
  2473. .WORD Track_Name_Addr_00
    ' k: }$ X/ K9 k/ y  }
  2474. .WORD Track_Name_Addr_01  X& w% ?& S2 J9 g* S8 b" ~
  2475. .WORD Track_Name_Addr_01) l& b* {3 A1 U+ |. O0 M- _

  2476. 7 i# a" J9 G& g- O' q8 Y# ^( o
  2477. .ENDIF0 ?9 f4 g" Z% A
  2478. ( L& P- [% I$ I& A. C
  2479. ;--------------------------------------------------
    ) R6 D2 ~# I) }. P* n7 _
  2480. Static_Text_Caption_Data;静态文本数据$ j. \$ E. F$ ?  l9 l# ~3 Z6 j
  2481. .DB 16
    % H  j3 G+ s8 @
  2482. .DB "FC MUSIC 12 IN 1"  Q7 M* @5 g, S( D$ ^  \
  2483. Static_Text_Author_Data7 [3 g1 {/ F3 S! K0 X9 l: |3 X1 m4 C
  2484. .DB 25
    7 ~1 U, q# z2 I# r5 f  E  p* @1 E
  2485. .DB "EXTRACTED BY FLAMECYCLONE"3 m2 M0 n- g4 i" O% G" k  M' I
  2486. Static_Text_Date_Data6 D+ |- i, `! T2 n" b" i9 ^
  2487. .DB 106 ^6 C/ p8 V$ n( A
  2488. .DB "2023.07.23"
    % \1 ^* ]2 e; L: Q6 H. p1 r" d

  2489. 4 k7 s2 _$ T7 s. o+ b
  2490. ;==================================================
    . N( l! K% l6 U) \
  2491. Music_Collection_Name               ;专辑名间接索引
      l9 Z5 ]$ W" ^8 \
  2492. .DW Music_Collection_Name_00
    ' K7 O% I' l. n0 x% k
  2493. .DW Music_Collection_Name_01& Z0 s2 ~. |2 i( C+ u: D. A  Z% b
  2494. .DW Music_Collection_Name_02# N1 H' g# u7 q; V- y0 Q0 v4 J" _
  2495. .DW Music_Collection_Name_03, M- V4 y1 U5 G6 d5 N" Y1 v: K5 E
  2496. .DW Music_Collection_Name_041 W5 e: c' y' E
  2497. .DW Music_Collection_Name_05/ j& c- m! d  |& I. n; N  X. X6 e! ~8 B
  2498. .DW Music_Collection_Name_067 c' w! Y: w, C! k; \, w
  2499. .DW Music_Collection_Name_07
    / a& j, h5 D1 e4 I: t% N
  2500. .DW Music_Collection_Name_08
    & t2 A6 m8 o8 I: @% @
  2501. .DW Music_Collection_Name_09; ]2 \. R3 I- G7 L+ _2 ~: {
  2502. .DW Music_Collection_Name_10
    ' Z8 O4 w  B* y0 J: j" n1 p
  2503. .DW Music_Collection_Name_11/ ?( n6 \0 Z9 H

  2504. 7 `% K5 ?4 _, q$ U
  2505. ;==================================================
    2 r0 X& m5 \$ \$ g( b: v; P1 a) ]/ z2 B
  2506. Music_Collection_Name_00            ;专辑名文本数据/ d0 A2 y9 y, P3 [
  2507. .DB 11,"1.RAF WORLD"- w$ g5 d# w9 J
  2508. Music_Collection_Name_01. @. _$ y1 K  R5 d1 I/ B
  2509. .DB 15,"2.FINAL MISSION"
    . k8 o! z% E2 L* i' _# J) g
  2510. Music_Collection_Name_02: d  X2 w" N5 S% s6 i
  2511. .DB 06,"3.KAGE"  }0 Y# Q8 Q  _  K1 W$ G9 L
  2512. Music_Collection_Name_03
    2 O" e4 P( t9 C6 l
  2513. .DB 16,"4.DOUBLE DRAGON"
    8 ^; @, m; l9 W8 _. c: `/ b+ N
  2514. Music_Collection_Name_043 V% s5 T: T$ \- K* j0 i8 Z
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    5 M! g  w) `9 x! ^3 k; {% n+ `
  2516. Music_Collection_Name_05
    & [5 `* c; @& }0 M6 p) Y
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    ) [0 ]4 j6 D9 p- P* k  o/ s) H
  2518. Music_Collection_Name_06* B4 ^% j  F4 ~) B8 E! c
  2519. .DB 09,"7.ROCKMAN"
    # H" U: \( C. S/ X
  2520. Music_Collection_Name_07
    ! V0 C& W2 B% s1 Y/ w1 x
  2521. .DB 12,"8.ROCKMAN 2"# `: Y+ g8 J4 f) P( j- n
  2522. Music_Collection_Name_08/ F# i1 b) ~! w$ r3 \
  2523. .DB 12,"9.ROCKMAN 3"
    . x6 |5 C- y# I: V! _! c( {) S
  2524. Music_Collection_Name_09$ {* J# d7 p. Y' V. f0 [6 u0 W* o: q
  2525. .DB 12,"10.ROCKMAN 4"
    6 ^! ]1 g! u7 F* G8 V
  2526. Music_Collection_Name_10
    7 _. W$ |) R( S4 ], q+ M* \
  2527. .DB 12,"11.ROCKMAN 5". C; t7 _% O2 t* u5 J
  2528. Music_Collection_Name_11' p, w1 F6 C$ G0 P' V
  2529. .DB 12,"12.ROCKMAN 6"; r- p1 ?/ c, i' _
  2530. - Z* `8 E* u) [9 j6 `8 I
  2531. ;==================================================
    5 r( X4 }' F" ~! m0 D6 u
  2532. Track_Name_Addr_Flag                ;显示曲目名标记7 D* k/ ?( d3 l( ?: i
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,08 n* p9 j* a* J9 |- x: _( e- a. E+ _

  2534. 3 E! I: p/ v6 P
  2535. ;==================================================
    ! \% ?! [' a0 t' @& H
  2536. Item_Pos_Data                         ;光标箭头位置
    9 N$ Q! s8 d7 A+ w
  2537. .WORD ITEM_SHOW_POS
    / |) m: C0 d* s7 H
  2538. .WORD ITEM_SHOW_POS + $0040
    6 Y% x  x3 B5 ?6 ?
  2539. .WORD ITEM_SHOW_POS + $0080) q2 O; o' ?! o& ^6 O
  2540. .WORD ITEM_SHOW_POS + $00C0# A3 ]( g  j, |5 ~5 |  O( v# i) ^9 ^6 c
  2541. .WORD ITEM_SHOW_POS + $0100
    ( k4 m; z9 b# _. E
  2542. .WORD ITEM_SHOW_POS + $0140$ C- C0 z, T1 n8 r
  2543. 6 Y9 |& z) R! \% n& Q# Z, n
  2544. ;==================================================
    4 [6 N6 f3 i( L0 x
  2545. Sound_Init_Port                 ;音乐初始化入口地址
    / D" b2 F( }  T; q" k; }; a
  2546. .DW $BFC8
    * ]1 H& v! [6 e' Z2 t5 Q5 C
  2547. .DW $D7F0. W9 ?& m  k6 Y  n9 n
  2548. .DW $9FC0% f6 [9 N& ]9 v) P! b7 G
  2549. .DW $BF70/ {& x4 J" P1 c. f2 f% s1 q$ d
  2550. .DW $8003
    ; }* K1 u$ W; E; E* p. F) W
  2551. .DW $BF30
    - j0 R3 ~% v0 |
  2552. .DW $9003
    4 N1 d- s( `; H- k5 I% ?4 \
  2553. .DW $8003, c$ K  a" x/ J# I- {" T2 b
  2554. .DW $8003
    : h3 g6 W7 M; ~0 S3 p) l
  2555. .DW $8003
    : l7 }$ n* w' E, Q3 |. \& b
  2556. .DW $8003
    $ {- a) }2 s0 Y! @; ]
  2557. .DW $8003! b$ q; D( U) T6 B) ]! `0 X
  2558. . x0 d9 K" e3 d& K! }4 ^9 Y
  2559. ;==================================================
    ' E" P& }- u* P: o/ D; }
  2560. Sound_Play_Port                   ;音乐播放入口地址) s3 b# [1 b2 l3 g5 @
  2561. .DW $8000; @) j: a4 Y+ H$ B3 S) \. K/ p
  2562. .DW $8001/ J7 P# U# j! M# M0 _. m9 }
  2563. .DW $A000& {3 i/ r0 F+ P0 c  K$ j, h3 `
  2564. .DW $8003
    + N4 o- \! Z. e# i  O8 A2 B
  2565. .DW $8000
    " j- _  J, v9 E( x2 f: s
  2566. .DW $8003; S6 H* l& \$ B1 ]
  2567. .DW $90001 q' @. s* q' e. U6 l
  2568. .DW $80009 u) c+ J9 }6 U! c
  2569. .DW $8000) d4 k. I/ U& W8 x3 f
  2570. .DW $8000
      g$ R; Y7 I3 K( Z& r5 {
  2571. .DW $8000
    $ H( u* W3 D; s' E3 g0 C6 C
  2572. .DW $8000. K* l: P0 b* V, `' [" X
  2573.   f! I$ A9 p$ I
  2574. ;==================================================
    / K2 @( c8 X. w6 ]
  2575. Sound_Reset_Port                  ;音乐重置入口地址* |; j) t* Q. L8 e! n4 c% m
  2576. .DW $0000
    3 M4 o) t4 B4 G. A) q2 f; [
  2577. .DW $0000. [2 b/ m0 E2 f# T8 j
  2578. .DW $0000
    & S3 w. y$ [# ?# p
  2579. .DW $0000
    9 x; U. Z" R: K  H& k7 L& D3 ^
  2580. .DW $0000
    5 k) _6 o2 D( g' V+ E
  2581. .DW $00008 [6 U' _5 s/ @0 {
  2582. .DW $0000
    8 L, p: N; \+ V' _: G7 I
  2583. .DW $0000
    2 x; C5 u+ k( g+ t$ I& u$ b
  2584. .DW $00001 M) |- F7 b# h! |: ~$ s3 ?
  2585. .DW $0000
    . ]# G# h0 l% w- W
  2586. .DW $0000% \$ V( t* K) d" k
  2587. .DW $0000
    . q( x% c/ K5 X

  2588. : W/ g, U! v2 c) M
  2589. ;==================================================: L$ U, w0 E$ G  k" b
  2590. Sound_Total_Port                          ;曲目总数
    0 ]1 B. t% Q3 s# b- ~/ k  u1 Y0 \
  2591. .DB 385 z8 A& \- g) q7 s
  2592. .DB 33
    6 i5 ?* Q4 m: S' {: b
  2593. .DB 49
    % z/ x; B' c+ d- E
  2594. .DB 412 K, F; P; m0 d  j
  2595. .DB 83
    ; f# Q# Q" r9 S7 c. ^
  2596. .DB 70" @( s% j8 ^- ]1 o7 P
  2597. .DB 50, T! W/ U+ b  e' }, [
  2598. .DB 67
    8 q" c: {: j) I" o0 N4 _9 K
  2599. .DB 57
    9 C4 N- M7 W, c+ S- }3 y
  2600. .DB 71
    6 g9 I; F& }2 I/ T  }
  2601. .DB 76! X7 ]) |6 @# t& p6 k( f
  2602. .DB 102
    4 m8 `8 o( W3 L
  2603. ) I& x* g( b& l% L+ @# S+ ^
  2604. ;==================================================# u4 c# W7 ^4 G5 `# ^1 D- I
  2605. Sound_Start_Port                      ;起始播放曲目; B" r  K! s# b3 l; r
  2606. .DB 008 }$ E: n$ D7 c  W; x: M; r6 ?- w; I
  2607. .DB 00
    . U/ F; m, V' U, ^5 n+ }
  2608. .DB 00
      t3 v  n' e* b  I0 R; W, c8 A1 _
  2609. .DB 00
    ; f; j/ u) _* O0 e
  2610. .DB 00
      [# J/ s2 _$ [) w) q8 L: y! s/ [2 i
  2611. .DB 00
    $ l. _7 [/ t  X0 ?5 q9 J
  2612. .DB 00; b1 _, t3 F9 Y) Q% X% \9 e9 i3 g
  2613. .DB 00. V+ }) `" }3 X) V& d
  2614. .DB 00
    , A1 ^/ ~/ J$ ?7 f: ^) d8 z9 q
  2615. .DB 00
      U, r8 L, @- `8 \. H8 v: \. _
  2616. .DB 003 `- I$ M$ `$ Q$ t) B0 A
  2617. .DB 00
    / f: l. i; X/ L
  2618. ; `- C0 `3 t4 }0 a8 `  ]
  2619. ;==================================================; U. _7 L" v" w) p4 D. i8 I
  2620. Sound_Bank_8000                      ;专辑bank_80004 y% z9 i5 G! l- i1 A
  2621. .DB $10" N  @( c" v) P# C  o; W0 ]
  2622. .DB $12
    7 b: ]  p$ A& r$ G$ W. x# e
  2623. .DB $14
    ) S. L  d2 ^1 K7 x) |
  2624. .DB $16
      {& r% k; Q# {) G6 j
  2625. .DB $18" d- v7 C& k+ b; _" M7 q
  2626. .DB $1A
    0 s+ _: p9 ?, w* d- D

  2627. 1 G; a2 Z* \4 T$ I
  2628. .DB $00
    & o% M* v: [" U. p; Z3 N4 ^) D: z
  2629. .DB $020 y( R- G$ R& k1 K: ?  E
  2630. .DB $0D4 p% M9 F1 z! A0 l0 j2 Q
  2631. .DB $04; Y: _$ ]% C& |- ^
  2632. .DB $07
    1 s9 m  r+ t% J
  2633. .DB $0A
    # N6 h9 ]5 N  U( ?

  2634. 8 \- s# _. _3 z, u# G

  2635. : k, o8 T) m- W* Z' W
  2636. ;==================================================
    3 O2 u- f7 f( F, v0 Z! h
  2637. Sound_Bank_A000                      ;专辑bank_A000
    . x$ E# _  ?- h. {
  2638. .DB $11
    2 D+ ]$ R2 t1 i6 Z. f4 b0 ~; N
  2639. .DB $13' H5 @2 k! n! h3 ?2 b' M
  2640. .DB $15' Y! [0 X( ~/ G9 t/ |
  2641. .DB $17/ E4 o' h3 H* N8 f. d* M$ c' l
  2642. .DB $19  l, r: H) k2 \$ }0 k
  2643. .DB $1B: Z4 j' t; T6 A5 }
  2644. / R& c# t! P# |* M  F  ^
  2645. .DB $01' j7 P* y% P* z; e2 h# J
  2646. .DB $03! Z6 E& M2 ~% _, N' S# [- h: `
  2647. .DB $0E# W1 {! N- ^3 ]# s/ }; G/ q
  2648. .DB $05
    ; h4 q$ t: c& X/ K& V3 [& i
  2649. .DB $08
    & g6 I, a/ Z9 a6 Y- p; n
  2650. .DB $0B
    ) C* ]2 W/ L. K, w! l) I* _

  2651. 6 v5 Z5 h# Z, f# [
  2652. 6 T* Q( z/ x) ^* Q% R2 s
  2653. ;==================================================) m8 Z2 q& U! |+ h$ U
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    2 W: ~9 \) q6 C- s# ?9 u% T
  2655. .ORG RESET_ADDR
    / Q9 w& o; U# Z2 L7 t9 `' b$ h

  2656. - F' w+ k3 e1 h
  2657. ;==================================================
    6 I; ?" q$ P% r3 m0 A9 p
  2658. Switch_Bank_8000;切换bank到8000-9FFF6 I, W$ B$ v. F% R
  2659. PHA& m0 a+ l6 Z. n+ X! v7 q: O* R+ ]
  2660. LDA #$06
    # B3 P# d) r8 D- G, Y2 x: q
  2661. STA MMC3_BANK_CTRL
    : g/ U2 p+ \6 J0 J" S* F2 Q
  2662. PLA5 V: S! _% S) T. m5 |( w
  2663. STA MMC3_BANK_DATA
    4 W2 z$ e3 ]' Z; b
  2664. RTS
    - x$ k6 h: h9 x, {# J9 n; C
  2665. 4 n4 b: S9 Y1 j1 `2 H( p
  2666. ;==================================================: h3 U% D3 Q7 ?
  2667. Switch_Bank_A000;切换bank到A000-BFFF
    5 S# v: s2 k* P' D, s- g# v
  2668. PHA
    4 X/ c/ d% Y1 {& W; r% P) t
  2669. LDA #$07
    $ l- b0 q$ Y0 P( e% R) G' u3 K
  2670. STA MMC3_BANK_CTRL
    6 V8 i# a) @; E& U* B6 e
  2671. PLA
    9 Y: d9 D& g: [* {( e5 q) R7 ^; u9 [
  2672. STA MMC3_BANK_DATA
    0 V$ E9 W) v9 x5 k$ [: ?2 H
  2673. RTS
    ' ?$ C4 @1 D8 f% q5 g& D6 r4 |
  2674. ( P: M* s3 x: l( {) U
  2675. ;==================================================
    9 O& K* y$ t! q3 s8 b
  2676. Switch_Main_Bank;切到主程序bank
    6 Q, j$ r- ~  q0 U' s* p
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    ) B7 G% {9 |: s; X& q% H
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank
    % a& i# M) s5 V- g' }) L9 y
  2679. RTS
    / f/ Q. |' H3 {) }

  2680. ; _4 Y4 a5 E9 v4 C) ?( T
  2681. ;==================================================% w8 [  F$ p# p4 D  ]; U# Q
  2682. Sound_Reset;音乐重设(如果有的话)0 E/ n" N+ `6 n! G
  2683. JSR Switch_Music_Bank  ;切换到音乐bank9 a: m5 Z9 z4 ~4 a
  2684. JSR JSR_Addr_Op        ;执行音乐重置6 Z6 \# D4 E( i  R- Z8 m) y% g
  2685. JSR Switch_Main_Bank   ;切回主程序
    : D) F4 }* ?9 @% g: B
  2686. RTS2 b, [6 B+ O8 W  ^) r: ]2 _$ ?" K- V
  2687. * F" S# t" y0 l; [0 [5 F: p
  2688. ;==================================================
    - R8 ?+ X8 S! \& D9 e# N
  2689. Switch_Music_Bank;切换音乐bank
    3 _8 m- @# G0 Y: B6 z+ |* R
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号4 E5 z2 q$ I$ d" _. A4 t
  2691. LDA <Music_Bank_8000' n/ s+ ]) E' b0 F+ C
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank& M' z5 P6 P8 p0 T0 Q) ^8 j) V; d
  2693. LDA <Music_Bank_A000/ X) U* m, j+ E8 `9 v) R, W4 x
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank, r" Q5 {9 G/ z* @& @$ K$ t0 W
  2695. RTS& g) N" o  f% j
  2696. ( L  F! v. e- @6 {2 _( n
  2697. ;==================================================
    ) n" s! i- z' n5 m. v0 {
  2698. Sound_Init;音乐初始化
    0 a3 T4 H! W3 i
  2699. PHA
    5 {$ @9 {" A. X( X: S
  2700. JSR Switch_Music_Bank  ;切换到音乐bank# F2 V9 f9 h  a  g8 W5 F3 E4 c
  2701. PLA
    6 R9 u( }* u2 ?. Y6 N
  2702. JSR JSR_Addr_Op        ;执行音乐初始化9 D2 Y/ ?8 ]# p0 |( \* d* d
  2703. JSR Switch_Main_Bank   ;切回主程序% x4 K" i) W6 R) x  D1 j
  2704. RTS
      B8 L  n+ K5 W/ M# s
  2705. 2 s0 W) a5 v+ s
  2706. ;==================================================
    9 v+ C& V- N  [  M
  2707. Sound_Play;音乐播放0 n3 N7 a2 e' T3 N+ e; y: ~7 P
  2708. JSR Switch_Music_Bank  ;切换到音乐bank/ e( g) f+ q/ W3 S0 ?, Y2 s1 D  u' w
  2709. JSR JSR_Addr_Op        ;执行音乐播放- R$ G6 A" O/ d8 f) `
  2710. JSR Switch_Main_Bank   ;切回主程序
    . r0 {. ?( ?# L# O* n: A  ?
  2711. RTS
    , O4 @& i; g9 r: S5 r

  2712. . I! t& [4 o8 J% ]  m
  2713. ;==================================================$ q8 B& [( c+ p( y) ~' P
  2714. MainLoop;死循环) d# y, i, t( P# L$ H4 P
  2715. JMP MainLoop
    4 F% ~- h" A; }! [) Q
  2716. # s( _  H% F, I  ]
  2717. IRQ_SUBPROCESS_JMP = 0$ l1 H2 h% I$ Q- i# L, h! [1 T
  2718. 7 e" g, X& o. F# `8 K
  2719. .IF IRQ_SUBPROCESS_JMP
    5 v! F* N' n+ M; K# t
  2720. ;==================================================+ v+ o  L1 @: ]0 w
  2721. IRQ_Process_0;IRQ处理过程0
    3 e9 Q8 a2 L, \4 e. l, ]

  2722. ) @% Z8 d: m& m" T1 P" v3 R7 B1 G
  2723. ;15条扫描线后触发IRQ: ^/ @) J9 G' j# t4 _; K+ e2 w
  2724. LDA #15' P3 ]1 d" f6 v6 q9 e. o
  2725. STA MMC3_IRQ_LATCH& X, M: g$ q8 W% i! G
  2726. : j& B0 L& U$ k
  2727. ;设置屏幕滚动, I4 l; i' _; C) v. N
  2728. LDA <Scroll_H
    % _) O) `1 |# T$ H4 I
  2729. STA PPU_SCROLL
      r0 R. T8 ~0 _3 L; y* A9 P
  2730. STA PPU_SCROLL: s- c) j! Z0 ]' C1 Q: b
  2731. - a2 B& v# d8 t2 o& H
  2732. IRQ_Process_0_End) X9 \$ t5 V' j, f) R$ ]. B
  2733. INC <IRQ_Process_Index
    0 c( ~# {) k5 u' B3 S
  2734. JMP IrqProgramEnd
    # _" p: ~) ~4 K) T, n

  2735. . h( p6 u; @6 _
  2736. ;==================================================
    1 p7 u; ^% I- k6 A; ?
  2737. IRQ_Process_1;IRQ处理过程1
    / _$ ^& D/ D! d. o/ ~3 t+ u/ }* e
  2738. 4 {* H4 i: m1 Y( ?9 `3 J
  2739. LDA #550 ?* M3 O% i+ }$ x' [
  2740. STA MMC3_IRQ_LATCH
    * o. I) b7 s+ ~# x6 Z: {6 e
  2741. 0 r! ~' m3 o5 y9 i
  2742. ;设置屏幕滚动; _+ J+ ^, t4 |4 y& l7 r' \! L
  2743. LDA #$00
    % ^  m8 _9 o3 ?1 J4 ~& Y
  2744. STA PPU_SCROLL
    . u( [, e& z6 a7 ?
  2745. STA PPU_SCROLL6 ?2 x0 k( ]7 \" J! X( e

  2746. 4 U3 z* J# K! L( w* `0 g
  2747. INC <IRQ_Process_Index& h8 u# {) v1 x
  2748. JMP IrqProgramEnd( @+ K% ~: ~0 c. k0 ~1 C5 H3 J& s

  2749. & L- ?' o0 N; M! k
  2750. ;==================================================
    9 T+ C) Y2 }* P1 t) _  `4 f3 F! l
  2751. IRQ_Process_2;IRQ处理过程2$ o9 G) ^, j6 E- f

  2752. 4 ~7 h2 ]3 T% B1 G/ C* G, c0 B5 ^
  2753. LDA #15
    # M$ _2 G" k* |8 s' P
  2754. STA MMC3_IRQ_LATCH
      H( N, q8 j+ i& a
  2755. , [$ b* C3 p9 ?' }6 @
  2756. ;设置屏幕滚动' A/ ~% c: V% v* E; E- w
  2757. LDA #$00
    ! V9 s* v/ j! c/ V  q& W
  2758. SEC! b, o& [1 l" @- J& M# q
  2759. SBC <Scroll_H
    - X! p  {: g& |) t/ y) N
  2760. STA PPU_SCROLL8 I9 U" Z. n. |) p. ?# g3 `
  2761. STA PPU_SCROLL
    8 T/ Z) E4 G; z8 C0 O* Z" j

  2762. ) K0 `, D7 f6 P8 Z8 y8 R  y+ H) T
  2763. INC <IRQ_Process_Index& F  F: ?+ e. k' Y
  2764. JMP IrqProgramEnd
    / w+ B9 T$ U/ a, F9 i9 ~* J1 u; `, {
  2765. * v. j7 S. \( v; Q) r* W
  2766. ;==================================================/ T: c" \" U+ @3 `' P9 ]
  2767. IRQ_Process_3;IRQ处理过程3
    2 T# l, B1 ?: u+ Q9 v7 ~' H
  2768. ( V; s1 R( S# D  [6 }
  2769. ;设置屏幕滚动
    ; P: z5 N; z8 S1 y3 y2 I9 S
  2770. LDA <Scroll_H
    8 [* a2 U7 q& l+ |9 ^9 `8 x
  2771. STA PPU_SCROLL. T& d8 Q% r; l& b1 U) j8 Z0 V8 z
  2772. STA PPU_SCROLL6 b, k3 t( l- j* W/ l9 E

  2773. & \6 s5 c% i7 e0 ~
  2774. ;禁用IRQ! U0 Q% D; S3 N9 j' y2 L
  2775. STA MMC3_IRQ_DISABLE. _/ G6 F6 z* @+ o/ M5 h3 l2 f; Q
  2776. JMP IrqProgramEnd
    + ]( v# v, `+ R& U: i8 G" e7 x5 I
  2777. ; i0 |; @8 ^! c2 M
  2778. IrqProcessAddr
    ' c! T8 I% r0 g
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    + i& ~$ r* B# V+ Q

  2780. 7 g2 h- [& B2 F/ k2 ^7 L, k, g
  2781. .ENDIF7 c" `! g, w# S. x

  2782. $ e3 I, ?+ C# y, G5 D# J1 u7 [
  2783. ;==================================================3 p8 v* f3 d, l, Y' J
  2784. ;IRQ滚动模式常量
    # N+ b/ `. i! ~% q& g% }
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    6 G4 p/ P4 @" @+ t& Y& Z; l/ ~
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    " s! k% y2 W8 t3 V# i9 i
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    8 n3 ~$ x) a4 f& M+ Z4 {+ w

  2788. 6 ?+ K& ]+ I, o
  2789. ;IRQ扫描线数据
    " d9 _- y( K( @- l' ~6 }- L3 I
  2790. IRQ_Scanline_Data
      }) z& h; u2 V& i, }3 K
  2791. .DB 8
    , S4 @8 X& G- S' ^$ a
  2792. .DB 547 b" V; {, T" w) |1 j! Q4 p
  2793. .DB 8
    5 w% _! |, }( z9 x2 _
  2794. .DB 00 ;关闭IRQ' ^1 m* h. T; q- p6 D

  2795. ) P' U% H# ?+ b2 ?- i
  2796. ;IRQ滚动控制模式
    . P9 h# r8 @4 F+ w9 u- d
  2797. IRQ_Scanline_Mode8 |  B" P" R' b5 ]1 q
  2798. .DB IRQ_SCROLL_MODE_ZERO: V& F' |) p% j
  2799. .DB IRQ_SCROLL_MODE_ZERO
    4 N% {" M% N; R+ L! A% _
  2800. .DB IRQ_SCROLL_MODE_RIGHT/ A' e" D: x' d( e
  2801. .DB IRQ_SCROLL_MODE_LEFT' W# F* K1 k% V# p) J- \  j
  2802. * E9 y! ^% t' a8 F- Q+ j
  2803. ;==================================================  S* o0 U3 ?# i3 q8 v( ~
  2804. ;IRQ处理
    # Q9 b* g- h7 a
  2805. IRQ_Process  L) f) g- V2 e+ W( n: ?
  2806. LDX <IRQ_Process_Index
    4 B7 C  B6 [7 a% ?* w- I' G1 J
  2807. LDA IRQ_Scanline_Data,X6 u7 q3 X/ a4 ^0 w
  2808. BNE IRQ_Process_Latch
    ; E2 `0 s4 b% `
  2809. IRQ_Process_Disable;禁用IRQ! U9 l1 B9 f& ?$ f' D6 \
  2810. STA MMC3_IRQ_DISABLE
    1 m1 k7 [! E4 P7 [, h- z& G
  2811. STA IRQ_Process_Index
    6 Z  j8 d7 b0 n* a0 l& x
  2812. BEQ IRQ_Process_Scroll
    ) a7 C% H9 v& i: B2 C
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    , b) B" a$ S5 u! @7 ~0 S) H
  2814. STA MMC3_IRQ_LATCH% G1 p" z, a: q7 `; c
  2815. INC <IRQ_Process_Index
    ! j( T, T/ a# T( F6 s, |+ N" M5 A
  2816. IRQ_Process_Scroll;IRQ滚动控制
    % i  i; p- e7 s" J5 H9 [
  2817. LDA IRQ_Scanline_Mode,X
    ) i1 K/ T8 f! _0 a' U
  2818. CMP #IRQ_SCROLL_MODE_LEFT: z. [/ l: r' [* ~" s, Z7 V2 m
  2819. BEQ IRQ_Process_Scroll_Left, \$ e- f' `8 |1 W$ z' y: P9 i
  2820. CMP #IRQ_SCROLL_MODE_RIGHT8 x* z, |* f. U! `! r1 o' w8 b
  2821. BEQ IRQ_Process_Scroll_Right
    / {; G1 a( B6 }
  2822. IRQ_Process_Scroll_Zero;不滚动7 C; `0 b" a  b) L5 B' c% q
  2823. LDA #$000 ~7 F! t) I0 @* N+ n# y
  2824. STA PPU_SCROLL) o- f; K' E8 F5 o
  2825. STA PPU_SCROLL/ ]& U3 N$ V7 W# y" a$ M1 t1 ]' M
  2826. RTS" m# a9 y3 P" U6 J/ _
  2827. IRQ_Process_Scroll_Left;向左滚动
    0 R. e/ t( ~4 ~4 B$ N* s
  2828. LDA <Scroll_H
    , ^; `& ^% S) B& a( m
  2829. STA PPU_SCROLL
    ! l* i0 E1 a) s# [8 z6 [
  2830. STA PPU_SCROLL
    8 u) C8 L  J' j. J; \' ]
  2831. RTS
    ; a7 D8 M8 |: ?* |1 `6 s0 N. q: F
  2832. IRQ_Process_Scroll_Right;向右滚动# k& `$ R: c7 u: q5 S5 ]
  2833. LDA #$00
    4 v  l( V1 k5 A
  2834. SEC6 d8 m& D4 X% M" |4 f
  2835. SBC <Scroll_H' Q2 H( x! N, {, }$ O0 U
  2836. STA PPU_SCROLL
    " w' ?. _, K. q8 T
  2837. STA PPU_SCROLL
    3 {' w1 A$ s; Y1 M0 F6 c
  2838. RTS
    9 @3 i+ ]6 Y  R8 i
  2839. 3 e- [6 f, ?4 Y6 B2 D, p
  2840. ;==================================================
    / b. i5 R+ f3 `5 V- G6 w
  2841. NmiProgram;Nmi中断处理+ ~8 M* h$ T3 h5 }) @9 C
  2842. PHA
    , T. G( H; L7 o4 ^
  2843. TXA' E0 t( q, x) Q! M
  2844. PHA, L# T, t! V6 r& |, {2 t
  2845. TYA
    1 Y% ?/ C* p! H( [  ^' q% V) t/ p
  2846. PHA& r  z$ d- i. z$ r

  2847.   l3 i0 B$ Y7 D3 t- @5 Z
  2848. ;读取清除Vblank标志, 防止重复进入
    2 a- U0 G9 D6 A7 b: K
  2849. BIT PPU_STATUS8 V: Q; D' d* ?( X2 G
  2850. : }2 I. B: `! k8 Y9 ?6 ?
  2851. ;切换主程序bank
    3 k% ~5 i# r  @2 S
  2852. JSR Switch_Main_Bank
    , i3 q0 Q& Q! a$ V# Q0 }. L; l

  2853. " U+ e( P/ I  ^& o- h
  2854. ;Nmi处理+ \) i, f1 f7 f0 c% L+ ^
  2855. JSR NmiProcess2 {6 Z' [9 O: ?; y$ m) a

  2856. 7 O: N% \5 ^; {2 y( z: _' t+ }: ~
  2857. Nmi_Proc_End0 z6 Q* K. s6 k; C
  2858. PLA
    ; _* p$ w- }) d3 G- Q0 U, [
  2859. TAY
    . J1 ~6 F. L3 b1 S, h
  2860. PLA
    ( H+ T& r1 x; o3 Y" h# `" A  Q  i
  2861. TAX
    9 m6 [5 [7 y; O3 _9 Z  Z) w% j
  2862. PLA+ d5 }. j6 y# z! Q( k; x/ h
  2863. RTI
    & l- S$ P4 B* r1 x3 A& M$ Z

  2864. 2 Q1 E' X2 L" f, b" I
  2865. ;==================================================3 a! H9 }! [3 g
  2866. ResetProgram;重置中断处理: M5 k$ Y9 z) W8 u
  2867. SEI% |0 o/ \' m. u  V+ X4 Y6 S+ [; b
  2868. CLD
    4 z, p/ H" u; S# H/ z8 z  T
  2869. LDA #$005 S! h0 L2 r/ S4 q
  2870. STA PPU_CTRL
    ! s7 x. Q; K5 y3 Z: Q8 O! ^
  2871. STA PPU_MASK3 A. k6 j& e/ F( i* z6 _* X9 y

  2872. , t) p" O4 ^6 f( }/ r+ H; [4 x
  2873. ;切换主程序bank0 P3 P% h  V* D2 O, C/ ^/ G& s
  2874. JSR Switch_Main_Bank$ \8 p2 k& Y1 E2 @' e

  2875. 0 J0 k: I( r9 q( t/ m* C2 j: R+ z
  2876. ;程序处理开始
    ) _2 Z8 X: x5 |- g6 b  A
  2877. JMP ProgramBegin
    + q; \. ~+ a9 g

  2878. ' W$ q/ Z' n( ~6 _' n- Y
  2879. ;==================================================2 A9 Y1 X* {( t- F& W* l& b6 I3 E! ?
  2880. IrqProgram;Irq中断处理6 e5 {; I" M1 R& D' H7 l0 m
  2881. PHA6 u5 z4 J3 M' \
  2882. TXA: ]" I8 F2 K4 D9 G" B8 _2 [- u* {
  2883. PHA2 U' Q" F1 Y  t( y, B
  2884. TYA. @% P9 p9 }# `7 P. k* O( N6 s
  2885. PHA
    ) L8 g3 m- m; T, g
  2886. 3 w+ c9 O, O6 {3 Q7 Z4 a# u
  2887. ;关闭IRQ' G3 Y: [* I) F% d
  2888. STA MMC3_IRQ_DISABLE
      r2 [) i3 g) Y! l) |

  2889. * V6 r" I* o! _8 x' j
  2890. ;允许下个IRQ触发
    4 ^/ o4 D1 y* [3 m5 i
  2891. STA MMC3_IRQ_ENABLE; Z3 t7 q) J: ?5 g0 _) i) \# s
  2892. # S6 b. Z9 d6 F/ ?
  2893. .IF IRQ_SUBPROCESS_JMP/ l$ I  a+ B/ }- q/ ]; I
  2894. ) l  \3 c4 H" P! @; e/ N% O: Q
  2895. ;执行IRQ过程7 S# e7 k4 b1 |1 A8 j3 Z5 `
  2896. LDA <Data_L( Q! ^, i  l6 p8 B0 O
  2897. PHA( n4 V% q5 U$ `- K
  2898. LDA <Data_H
    6 v5 A4 s  z) N: M$ l* |9 L
  2899. PHA
      r2 y& {4 x# G* F
  2900. LDA <IRQ_Process_Index/ Z5 p& f7 p; k0 V5 k2 C, t1 ?
  2901. ASL A, F# G. e3 Y6 t1 W
  2902. TAY
    4 [2 ?: G# O4 r6 r
  2903. LDA IrqProcessAddr,Y. m6 U" P. t2 I% E
  2904. STA <Data_L# t2 Q; |/ s0 z# h( B6 F
  2905. INY
    : Q, U  E+ X2 z' s3 V$ A
  2906. LDA IrqProcessAddr,Y+ w: X$ G- R1 W: \# d
  2907. STA <Data_H5 Z+ @3 _3 J9 p2 ?/ x
  2908. JMP [Data_L]
    , c; @5 v: \" V

  2909. ; W! P# i  [3 h! o4 y
  2910. .ELSE
    + ~0 c. B+ f# {- g/ c) E; l

  2911. 7 ]5 Z" ?, f6 H& o# |2 p4 N
  2912. JSR IRQ_Process% p- g3 [- D' y$ U# _5 `( r

  2913. 6 W- H: I% ^6 A* ?
  2914. .ENDIF
    2 [6 \- \9 C. ]' L0 b' h( M
  2915. 6 v0 E* P6 w5 V" ?* i$ I. x9 \: {- W' Z
  2916. IrqProgramEnd0 Q+ g. K: x. J9 x1 \$ \
  2917. .IF IRQ_SUBPROCESS_JMP/ ?7 B$ s0 O4 u/ q
  2918. PLA+ ]- N/ {; p& `- {
  2919. STA <Data_H
    5 R, x* N, {2 ^& ^% K5 F
  2920. PLA# k4 M! F1 Y' U) [. e1 D
  2921. STA <Data_L, O2 x& p$ i3 Y
  2922. .ENDIF! w9 j& T$ a8 l% o+ Z8 w! S
  2923. PLA
    % A% T8 e* s( v. r8 W+ Q) B3 o
  2924. TAY* `$ M" C2 b( r8 b
  2925. PLA( w9 R1 @& q! k7 z/ K& [4 f
  2926. TAX" j# E  J% n/ T1 d; f
  2927. PLA
    0 r( v& Z2 n; _9 r# q+ d" U
  2928. RTI
    ; r0 n1 n- }$ l* y4 {" K* h
  2929. * r  N; }# l; c
  2930. .ORG $FFFA: r# q8 D( Z" e! G" Z# `& H1 K: }
  2931. .WORD NmiProgram
    ; x% q/ X( d, x: m! L# e& L& o( |! v
  2932. .WORD ResetProgram- [/ M. V5 ~$ s
  2933. .WORD IrqProgram
    9 a6 U; ~5 h: ]9 g% b

  2934. 2 d9 n+ z/ p$ f
  2935. .BANK RESET_BANK & BANK_DATA_MASK& Z- a  W5 I/ q- L- c6 y# e( u
  2936. .IF SOUND_BAR_SHOW_ENABLE$ G. @0 K0 a! n5 Q! V# \

  2937. ; s- y4 T% P: u& H: B$ \
  2938. .ORG $FE008 ~/ j9 Q" \2 R
  2939. PHA5 k. n" p6 F) c( }. q# u5 E
  2940. STY $07BA
    % }0 t9 z4 Z+ a4 d
  2941. LDA #$8D0 U& h6 T" M  R$ N  l* i- i/ M
  2942. STA $07BC
    & ?1 E; T# U/ H/ t0 {" y
  2943. TYA" a; U4 M- S; N5 F0 E6 m
  2944. CLC& ]" R/ j5 p) \1 i, O6 M
  2945. ADC #LOW(Sound_Bar)  d' s  T; X7 l3 B: z
  2946. STA $07BD
    $ s4 j* h8 E$ E4 P$ u
  2947. LDA #HIGH(Sound_Bar)6 W. a" z3 U5 c9 |& z, r! F
  2948. STA $07BE
    - z7 H( A/ [* @
  2949. LDA #$60" P: o) R! [0 h/ E" ?& E
  2950. STA $07BF
    / M; I1 Q$ [) E2 t( f
  2951. PLA
    2 o4 o/ C+ @  e# V
  2952. RTS
    % z3 a9 S$ C# q! y0 F( G

  2953.   _" y) R1 D4 ~& _- l& U4 X
  2954. .ORG $FE20
    - E" R: R& F, I3 q% ?. K
  2955. STA $07BA
    5 H. e, q6 F' F( W- ^, p. z: d
  2956. CLC. C2 S+ Y6 s3 c8 c- a# w
  2957. ADC #LOW(Sound_Bar)$ l0 Q0 Y2 [! W( `. Y) ^
  2958. STA $07BD
    ' x' n& j) i- X0 W5 G4 J
  2959. LDA #$8D; E2 O1 R4 U9 |4 i0 _( W( Q/ W# Z
  2960. STA $07BC: g7 u) T1 H* ?/ b. @, a
  2961. LDA #HIGH(Sound_Bar)8 R1 X9 C% v  Q. b! Z
  2962. STA $07BE
    , V, m" a& e+ w6 g
  2963. LDA #$60
    0 m3 L0 A% n! k$ h& J: Y4 D3 u. ]; y
  2964. STA $07BF
    + B% e  q$ Q5 D+ N: Q
  2965. RTS+ o2 l' p% ]( g- l1 K/ j9 D

  2966. 4 F. W3 |6 `2 {' w
  2967. .ORG $FE40& D  m5 q, D* g! y- p8 P
  2968. PHA
    * n2 R; k( y  k1 n% k! V8 ?
  2969. STY $07F11 ^0 c7 p8 X: k  I
  2970. LDA #$8D  |! D! P( [# D) v
  2971. STA $07F3( K$ P' n$ l/ }5 f
  2972. TYA
    # \2 Y  u; a: v6 }  _% f
  2973. CLC+ v" `: Z6 R2 _
  2974. ADC #LOW(Sound_Bar)
    $ \4 _1 \8 r- h
  2975. STA $07F4
    0 J' T8 ^0 D. G' ]
  2976. LDA #HIGH(Sound_Bar)
    0 z/ h: ^: v; z& t1 H) A, a
  2977. STA $07F5# E5 l! @& l& L6 C& Y) g/ T
  2978. LDA #$60
    , C. Z) R$ _/ Z* ~
  2979. STA $07F64 Q) B) t) I5 s" H! k
  2980. PLA
    ) D# y; g7 h0 H. L
  2981. RTS
    " w3 O1 K. F$ O8 }" T: C8 H, x

  2982. 6 v7 B6 z3 i( Z) @3 J5 o& J
  2983. .ORG $FE603 U2 l5 d. S3 _8 [; h6 f, w" [3 ~
  2984. STA $07F16 {+ O" [% ~& M( ]+ |. k1 c' y
  2985. CLC
    , q# d8 o  m& `3 B& K8 R+ C
  2986. ADC #LOW(Sound_Bar)( T+ n; M! W( s# O: _# I
  2987. STA $07F4
    + A; w/ E; j9 D* h" ~. O* F
  2988. LDA #$8D
    . O: w. \1 p9 U2 S4 A
  2989. STA $07F3: c! A+ n) |1 p4 K3 I/ O
  2990. LDA #HIGH(Sound_Bar)
    3 q2 c) t* Z) M+ o+ R) h2 v
  2991. STA $07F5# U. B9 t  ^0 D( \
  2992. LDA #$608 y# h- _% C% Z# h
  2993. STA $07F6
    % \; d7 U7 W6 z6 c
  2994. RTS" H" q6 s, ~0 m. a
  2995. ' ?6 c0 l2 }+ C7 {- u( c
  2996. .ORG $FF406 X" K1 ?* T; t8 P7 k( V
  2997. STA $4000. {" d; [4 W7 O' ]- o$ c
  2998. STA Sound_Bar + $00
    / w7 t* P+ l: |8 m2 d' m
  2999. RTS3 c5 `1 n8 J/ l/ C2 D7 U

  3000. 9 ^4 b( E, Y: F' q
  3001. .ORG $FF488 @: L# Y5 `% e. k- u
  3002. STA $4004
    0 v) Y( m( o+ b  f! v# B0 r! M
  3003. STA Sound_Bar + $04
    ) T5 k+ _) r! D6 X
  3004. RTS
    . Q- K( O3 e" n6 Z; c# x1 W& g
  3005. * i3 u6 T# H" F, p) }6 ^
  3006. .ORG $FF50% r: @# F+ s- w2 Q) X* s, M
  3007. STA $4008
    - `6 h4 `% }8 C
  3008. STA Sound_Bar + $08" f5 R6 b2 {7 ?. X$ [2 N
  3009. RTS
    * C, B: ?* t4 y. u9 j

  3010. & q# }. p6 \. s; Q# }$ ]$ M, f
  3011. .ORG $FF58
    9 p3 S4 ~9 T1 d  I7 @8 F
  3012. STA $400C
    1 p* _2 `  e4 H' n( x
  3013. STA Sound_Bar + $0C) _9 X* }* O& a) z
  3014. RTS
    ) n3 s0 i) n7 D
  3015. ( d% v- R; P. k  R2 a2 y$ }5 U
  3016. .ORG $FF60) Q" R* k8 g+ n9 R9 W! x
  3017. STX $4000; q% d+ z! I9 t# V# O8 ]& w; X" t
  3018. STX Sound_Bar + $00
    ' T% C4 ~6 Z+ U( ^; v
  3019. RTS8 w" D& d# g5 G9 f) X2 }
  3020. 4 q7 I; F4 j  K5 P' a
  3021. .ORG $FF68
    2 U% a" k1 o8 |# C! h6 P3 B% t9 ]
  3022. STX $4004
    ; J2 P! p! t2 E% j1 O
  3023. STX Sound_Bar + $04
    1 X1 e. j. t8 M% J
  3024. RTS/ v9 t! h+ r% ?# N- {( i
  3025. " u# @! t. ^: r9 q. U0 M/ @
  3026. .ORG $FF70+ k3 Q+ _# |2 G, l" z( @
  3027. STX $4008
    & n2 E0 C+ X, [4 a2 H- y
  3028. STX Sound_Bar + $08
    1 j' \# ]8 P, M3 |% k
  3029. RTS  J" N" K, k# x
  3030. 4 z2 }" _& H" H' H/ ?
  3031. .ORG $FF78
    4 ]5 W& S8 `6 x) [" H
  3032. STX $400C
    - A% {& d$ K4 i' r0 D
  3033. STX Sound_Bar + $0C6 W0 C1 |* q0 |# l6 @+ p: {" c
  3034. RTS
    # a* w6 W/ P7 ]: z  e0 A5 G' q
  3035. " m9 l$ L' k2 U4 Z  a1 }
  3036. .ORG $FF80
    3 g  ]7 }+ R2 V0 K
  3037. STY $4000
    . b, ~) v8 Z+ [' @2 Q1 ?  C
  3038. STY Sound_Bar + $00
    ' c* w# |7 q9 m. k2 c, u4 F
  3039. RTS
    ( x4 {# z$ Q, L: n2 o8 u6 j2 K1 I

  3040. 0 J0 b9 x$ k2 u1 f4 a
  3041. .ORG $FF88
    0 m; u; ?8 @  C! m: L
  3042. STY $40041 O8 \) _5 r& {3 s9 J# L
  3043. STY Sound_Bar + $04' |4 `! [0 k5 [1 @# B$ ~2 k( }
  3044. RTS
    - Q$ c  n& [0 |5 I  v1 B! I
  3045. 2 R5 v# O) G: k' |; u2 u3 H
  3046. .ORG $FF90" z( d! t2 h. z( w
  3047. STY $4008
    : K$ [' D  n. b: H
  3048. STY Sound_Bar + $084 T- `% z9 o" V- E2 K- C
  3049. RTS7 Z/ c3 m7 z5 M8 i9 i
  3050.   R; A$ [! W! i% i5 F- z: P/ A
  3051. .ORG $FF982 j* {5 {6 w4 s# |$ ?/ n
  3052. STY $400C
    ; W: o! y$ ]; k, M: _1 ?2 w( b
  3053. STY Sound_Bar + $0C
    * C; X+ Z/ N2 q" i/ k$ n
  3054. RTS
    7 R0 S6 _% S( Z  I
  3055.   ^$ h( k9 ~$ }7 \" a
  3056. .ORG $FFA0. }: n+ d8 ]+ Y2 s6 N
  3057. STA $4000,X
    & i, }" m2 C. Y7 p2 h8 G/ Y
  3058. STA Sound_Bar + $00,X
    / z7 t: d: c$ w5 j
  3059. RTS
    : e& @. j& q3 D" r( K7 {

  3060. 1 P' S* }+ i; A- X
  3061. .ORG $FFA8
    " d5 s* x; {' L9 b9 a! G8 V! b3 K  C
  3062. STA $4000,Y
    + @$ W' @: Q& f" f( x
  3063. STA Sound_Bar + $00,Y
    * h# ^# O) u" G' d  \
  3064. RTS
    9 C4 S& z" p/ w

  3065. 0 u$ C! H- d4 v$ s! v
  3066. .ORG $FFB0. `% v* f. m4 t+ N- s5 T& Q/ p
  3067. STA $4004,X
    1 p- @9 e7 T9 g, b+ w
  3068. STA Sound_Bar + $04,X
    5 [- F9 j+ ]# l2 F1 J
  3069. RTS" E, _& b5 d1 G2 e& T$ l* m5 {$ E

  3070. " S' b8 |: i5 J% H, C8 U
  3071. .ORG $FFB80 T5 j* u3 r% n7 @1 h3 p! f
  3072. STA $4004,Y
    0 O# z) [" [$ i: e. W; |% n
  3073. STA Sound_Bar + $04,Y9 O8 H+ Y! v% ]0 N! N
  3074. RTS
    ) Q2 ^, }1 s8 v/ g, c
  3075. 9 l3 p& D# q9 u8 o' b7 o6 E0 b- O
  3076. .ORG $FFC0) A; e3 E, t* m( _) ?
  3077. STA $4008,X/ V  z1 u0 H4 J: i7 l7 a
  3078. STA Sound_Bar + $08,X  f* w$ }8 s  F/ I1 d6 `+ L
  3079. RTS
    - ~% H  {+ E" P8 [! a

  3080. ; X: f* A6 {1 C& E
  3081. .ORG $FFC80 L+ f- m/ i% W! |( ^
  3082. STA $4008,Y4 D% [3 ]( F% ]( T! C$ p
  3083. STA Sound_Bar + $08,Y. D  R* M: S; N7 x0 J
  3084. RTS
    ; q( {2 L* d! U  Y

  3085. 5 ~0 ?  ]# q1 ]$ O
  3086. .ORG $FFD0
    + d: g8 ~" B0 Z
  3087. STA $400C,X- D( L, O% ?! L- c# a$ R2 L
  3088. STA Sound_Bar + $0C,X
    0 J: r8 h( c+ x
  3089. RTS8 A# A( y6 q& E8 V* a
  3090. 6 t8 ~) ~1 a1 U: `
  3091. .ORG $FFD8
    $ ~8 N; W5 j5 \( W  {+ l
  3092. STA $400C,Y4 n+ j" [7 Z: e
  3093. STA Sound_Bar + $0C,Y, n+ Z: i6 m1 G
  3094. RTS5 ]6 `6 K! ]1 e1 H: B% X

  3095. ) w3 Q2 b1 I3 `) x' ^- u# ^: ~
  3096. .ENDIF& o- ^1 b3 G3 l, o
复制代码
. ^' I" q( u: ?3 `$ I! x0 w
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3176 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 07:25 , Processed in 1.219726 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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