EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
% ~5 M7 n) Q$ m. g5 }( E( J* Y( r- L
[FC][音乐12 IN 1]: L( U7 ~7 X. l' N+ [+ L
时间: 2023.07.23
4 F+ m! d( ?( ]3 Z6 S: O作者: FlameCyclone
. F( i( S) ^' _  f5 K: I$ o
1 T7 t/ S8 t& c- J收录音乐内容:
/ ]$ b( l, {1 x1.Raf世界+ `0 h2 [6 b- @
2.最终任务
' P% ]& s( \2 _6 J3 c, e4 I3.赤影战士7 s, _  X. B5 y1 H5 g- @' s! X
4.双截龙
. r" T6 g; |' }1 W1 r! }5.双截龙2- o1 c' {6 _9 z8 T" y" u
6.双截龙3
# X6 |- [0 m8 d& l3 h; T7.洛克人* `# `& D6 j5 ?
8.洛克人2
1 @- C( K- k; C( n5 `9.洛克人3; ]4 i% X* N) r
10.洛克人4  r% b  m- U. M8 S
11.洛克人5
) E  E( P( q" @* Y( Z12.洛克人6
9 P6 |, L, z5 `
1 u  ~/ X1 a6 r9 U" F& N2 |! o操作:1 Q6 z  h: ^' g& `
上键:         上一个专辑1 `* H; G, _0 I6 H/ d
下键:         下一个专辑6 @8 d, w; z+ t/ k0 I, n
左键:         上一曲
$ o' A& h4 G# r7 K) Y4 c: C3 _右键:         下一曲3 @* V# H) x4 Y
B/A键:        前10曲/后10曲8 M4 _/ v8 \4 C. q8 r& L
选择键:       下一页' S. `0 v& b$ p" Y4 M
开始键:       停止/播放$ h; R, ~1 |! b. K

! \1 g) C! p4 `3 rhttp://flamecyclone.ysepan.com/
  k: J6 |  r6 a. \+ W+ g! s6 c( C, \" \) _4 C  X  n/ H, |% M
+ F; s3 q9 {6 y. j

! W: P: G$ S* a9 C6 F
- o  R1 p7 i7 G2 g
  1. ;[FC音乐][播放器模板]+ M) S+ t% i8 b1 @/ b9 x
  2. ;FlameCyclone 20230710! I" Q  T' Z" P

  3. 0 ]. q3 {6 `$ f: Y4 Z' j. b: }
  4. ;文件头
    9 G: i$ N4 H) M+ R' ~# U
  5. ;======================================================================
    & j+ b) i+ w1 o) z9 V% O) {& ]
  6. .INESPRG 16                                             ;16KB PRG 数量
    5 r/ \3 U/ G2 `
  7. .INESCHR 1                                               ;8KB CHR 数量
    / y% U" K$ A0 e
  8. .INESMAP 4                                                   ;mapper 4" F- ~' E; E2 E$ P3 [% [, g
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直0 d! Q4 n6 j9 v* ]( O$ b3 {4 S
  10. ( U* X; b3 C) a7 @/ v' L/ d
  11. ;==================================================
    - }# _: t/ N- @4 c) N
  12. SOUND_BAR_SHOW_ENABLE       = 1
    % |% g( L) V& q# b! |
  13. ;==================================================
    9 ?, A- H7 P3 w
  14. BANK_DATA_MASK              = $1F& V9 H. q* f: Q
  15. CHR_RAM_ENABLE              = 0
    & B$ f% j* W! s5 Z
  16. IRQ_SCANLINE                = 1360 ?% E, r' }1 V6 y0 r. y1 K6 A, `
  17. ;==================================================, r; U+ G/ i; E* {3 T. k
  18. SOUND_DATA_BANK_00          = $00
    & T. s, d  X/ x# f. n
  19. SOUND_DATA_BANK_01          = $019 K1 g4 |4 [% H3 Q2 a
  20. SOUND_DATA_BANK_02          = $02
    " f2 b& n3 R) Z
  21. SOUND_DATA_BANK_03          = $03+ L0 ~5 @# p* I3 t+ G+ A. g
  22. SOUND_DATA_BANK_04          = $04
    , |" e7 q( l1 M  e+ Q  r& @
  23. SOUND_DATA_BANK_05          = $05
    + \% e3 B. a! _. f  g+ e
  24. SOUND_DATA_BANK_06          = $061 F$ o" N$ L9 y, |* @
  25. SOUND_DATA_BANK_07          = $07
    1 N+ z/ W% [8 l) N5 P" ?) k
  26. SOUND_DATA_BANK_08          = $08+ x. K  V0 M+ I7 x) d' R& I
  27. SOUND_DATA_BANK_09          = $09
    " g  V+ A+ |" [$ D; i5 R3 Z
  28. SOUND_DATA_BANK_0A          = $0A0 T$ M9 e' B; P' C7 g( H# Y
  29. SOUND_DATA_BANK_0B          = $0B
    0 c+ C/ I; }! {) g
  30. SOUND_DATA_BANK_0C          = $0C
    / F2 L5 J( A  Y: H: o# V
  31. SOUND_DATA_BANK_0D          = $0D2 p' |- C; `7 i. x! D* u
  32. SOUND_DATA_BANK_0E          = $0E
    1 U, x3 A2 m' @9 q& R
  33. SOUND_DATA_BANK_0F          = $0F1 }* r' D7 o* j" q: ^
  34. ' M! J1 ]0 z% ^
  35. SOUND_DATA_BANK_10          = $10. U) P* b0 Q, K$ @) o
  36. SOUND_DATA_BANK_11          = $11
    2 J: M, C( `0 u- r
  37. SOUND_DATA_BANK_12          = $12+ V8 W) A' y9 c* A; q9 T: N
  38. SOUND_DATA_BANK_13          = $13$ G/ y3 d0 D0 ^6 c  @
  39. SOUND_DATA_BANK_14          = $14' @; C, C6 O# W6 w3 P7 C1 B
  40. SOUND_DATA_BANK_15          = $15
    9 {1 L+ z  P. m6 g
  41. SOUND_DATA_BANK_16          = $16- m3 P5 ]6 l) P  ~$ x
  42. SOUND_DATA_BANK_17          = $17. j3 k& `) q$ h
  43. SOUND_DATA_BANK_18          = $18
    * ?. u* m, j( A- }
  44. SOUND_DATA_BANK_19          = $192 g. `, u9 j9 m! ^  s
  45. SOUND_DATA_BANK_1A          = $1A+ R" W+ Y# \% x# O
  46. SOUND_DATA_BANK_1B          = $1B) ~1 I' N7 l/ f! f: T
  47. SOUND_DATA_BANK_1C          = $1C
    ( Z6 v5 v2 f; y( I( G5 d8 ]. a
  48. SOUND_DATA_BANK_1D          = $1D
    8 q3 L/ \/ J* H7 Y- N$ k

  49. % Q, r" Q: ]& X2 F
  50. SOUND_DATA_BANK_C000        = $1E
    8 U* i% J. Y% }- @) o1 K: w
  51. SOUND_DATA_BANK_E000        = $1F
    ) c) I; T8 R" C" ]1 ^
  52. ;-------------------------------------------------8 {& u( v0 k3 I6 J5 S
  53. CHR_DATA_BANK               = $20- H& @  w* x0 m7 J
  54. CHR_DATA_ADDR               = $A000: I! H; M8 Q5 d$ x) A
  55. ;-------------------------------------------------8 K3 h9 b8 ^7 E# {; d0 s5 ^$ _
  56. PROGRAM_BANK                = $00* n2 X2 i* j; S5 V! T  ?8 F! R" X
  57. PROGRAM_ADDR                = $8000
    . F; ?) y  Y/ G5 S* i) m# B* I6 W
  58. ;-------------------------------------------------
    1 {) J% S' T* L
  59. RESET_BANK                  = $1F
    : \9 t, Q) P1 w: X5 N! [
  60. RESET_ADDR                  = $FD003 @7 y; p8 `9 k: d" Z& a% ^2 J

  61. $ b; w8 V; |: G8 `  \
  62. ;==================================================
    3 v/ S+ K6 r+ C' z! `
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数
    0 V7 S& R1 M$ c5 ^' [8 z; L
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    + q. k1 ]( ^' Q3 ~
  65. PAGE_SIZE           = 5                     ;每页节目数
    4 X* T7 @2 }) c4 q1 J$ P0 Y. r

  66. . Z' \0 F- P4 ^
  67. ;==================================================' ?: ^/ @2 Z) j$ ?4 p
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除( p# P. Y; s: L0 @: h- H
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数! R, x# O" D4 G9 b: ]; \
  70. .ELSE+ o- V) k' F$ ^3 ^
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数
      T& n! r4 w) M6 \' @
  72. .ENDIF
    - n2 \+ v# w, f0 ]6 r
  73. ( H1 S7 e  C$ B' W1 p
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引) G% S" i# o, ^1 g: ~$ R* q) Q
  75. 5 \) l8 U% f; S' i4 s
  76. ;==================================================9 R- s, L' ~0 d: o
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置/ t9 Z0 _0 D6 y  z2 H9 z
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2% m. _9 L2 z9 d$ r5 R$ `- A
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    - N9 `% P  `5 _4 g" g" O% P
  80. ;==================================================9 O8 A! w9 Y  {9 l$ [1 X: |
  81. Caption_Text_Pos    = $204D ;标题文本位置
    , T) T: e$ y4 Q$ x  s
  82. Author_Text_Pos     = $2324 ;作者文本位置; W1 i$ |9 }4 r! c) [& {+ x3 _0 h  q
  83. Date_Text_Pos       = $236B ;日期文本位置
    ( P! l8 _# V+ p! a7 Y, }
  84. ;------------------------------$ ~# c8 h% r% V1 B. I  \7 y* e
  85. ;------------------------------
    ) b- I/ q5 @  m( k/ [
  86. .IF SOUND_BAR_SHOW_ENABLE' ]/ `" @) G- a" j3 U( R, D& Y8 f
  87. 8 g- a8 i  n, `9 X, F
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    5 S4 u4 ]$ i+ }: s* L* F9 w
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    # N5 r- b& u  p1 o8 j7 n
  90. Play_State_Pos      = $22F3 ;播放状态位置( _8 U9 S7 W4 g
  91. ) h1 J5 G! b% |0 Y3 j, S) q
  92. .ELSE& H) H8 ~# s9 F/ C5 Q2 o5 g. l! X
  93. 3 W  L" K1 _! p) X' S1 ]
  94. Play_Index_Pos      = $226C ;当前曲目位置
      [8 g( n4 Z. b8 h& Q  ]6 _/ A
  95. Play_Time_Pos       = $22AC ;播放时间位置
    % k6 k1 H$ {* I' R: X: s7 y1 b
  96. Play_State_Pos      = $22EC ;播放状态位置- \1 k- a6 Y0 \' G% r

  97. # D' q+ W0 E% ~; w' X! y1 }
  98. .ENDIF9 Y, V- X+ o6 J8 B7 m0 o
  99. ;------------------------------7 F, V; W6 d% C! ~# w$ Q0 w; X
  100. Track_Name_Pos      = $222B ;曲目文本位置
    ' a6 b9 u* C: V- e  i- L, Q
  101. ;Track_Name_Pos      = $00 ;曲目文本位置% M+ N2 a9 v! ~8 h' j' i: e& W4 H  J
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    , u# G, y! |# a" j3 b& B
  103. Sound_Bar_Pos       = $2269 ;音乐条位置* T0 d% {: ~. }4 p7 y2 O0 O7 V
  104. ;==================================================3 B& J3 T5 W8 H' f) W, y
  105. Scroll_X = $00  m+ X- g2 E( R7 T4 N; X
  106. Scroll_Y = $005 @: p& i5 H3 k3 O! _
  107. ;==================================================
    , Z% B' ?# O  w* C; K" ?. ?: \+ r
  108. Sound_Ram_Addr_1       = $0100, ~+ {6 P& x8 q
  109. Sound_Ram_Addr_1_Size  = $80
    ; J% @* ?- l- s9 U5 e8 l. L* g
  110. Sound_Ram_Addr_2       = $0090
    ( f& U4 G4 [1 i/ j) v& k0 j
  111. Sound_Ram_Addr_2_Size  = $707 _/ S, I. x7 z8 W, _
  112. Sound_Ram_Addr_3       = $0700& C- A) }+ p/ H9 b# B# _" {7 c
  113. Sound_Ram_Addr_3_Size  = $00( \* q* @8 _" {9 c2 c/ P4 F( F
  114. Sound_Ram_Addr_4       = $0400
    1 d. |( z* K, [( ~1 _# M! Z
  115. Sound_Ram_Addr_4_Size  = $00
    0 X! y. o( I' x
  116. Sound_Ram_Addr_5       = $0500
    - I! d- F7 C$ E
  117. Sound_Ram_Addr_5_Size  = $409 b) B( o1 M' ]8 z9 f+ }) {% U( R
  118. / k7 }' X0 d. c. K8 n6 b
  119. OAM_TEMP_ADDR   = $0300
    % L- {4 E: _+ W2 C! M1 u  D
  120. * |! D& ]0 f( l9 ]0 A
  121. ;==================================================: [4 P; k; i7 g$ _
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    5 s: F1 O$ Z: F" g9 E8 ]4 w
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
      B1 M  L5 d7 y2 x% U$ V
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
    ! R/ J  R0 D. V6 ?3 b: K  V
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加13 t; Y8 b9 Z" g# W
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    / }; u1 }" Y% T7 ]0 g) E8 R
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器
    + A$ {8 M4 U0 T5 y6 L: L2 s
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加, i1 P* i6 n3 J  T! c- @* I" B
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32   b; Z) F) z7 X0 c$ P7 b
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存5 z  ^/ Y, @& `* z
  131. APU_STATUS              =   $4015   ;声音通道切换0 @/ e) l1 K4 Q4 q
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通
    / x" Q. z4 b: E; |* |2 e% @$ \
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通
    3 T3 r& Z: [6 ^0 [
  134. ;==================================================
    % A& M4 `" K8 P5 h- Y
  135. MMC3_BANK_CTRL          =   $8000
    # T" ]6 \; y2 p3 m8 e; \
  136. MMC3_BANK_DATA          =   $80016 _# }5 l& Z- n0 {
  137. MMC3_MIRRORING          =   $A000
    : I. d: t# @; c' e( r% d. x
  138. MMC3_PRG_RAM_PROTECT    =   $A001. j+ ?2 _4 M5 X8 N% w+ M
  139. MMC3_IRQ_LATCH          =   $C000- ]* t# K' }* \7 {' g/ r8 Z8 G
  140. MMC3_IRQ_RELOAD         =   $C001' A7 u" W& p- @/ y5 p* F% I
  141. MMC3_IRQ_DISABLE        =   $E000
    , |5 w* a9 _- n! q( G( l
  142. MMC3_IRQ_ENABLE         =   $E0015 O: z% o5 p3 u# l

  143. . K( T' p2 V8 t3 m+ o
  144. ;==================================================' S5 |0 N5 ^5 A6 c& p' _+ h
  145. PPU_Addr        = $0200
    / _4 D% q0 J* }1 E7 ?/ \, s
  146. Palette_Addr    = $02C0
    * U) a' \3 t! Z2 }
  147. Sound_Bar       = PPU_Addr+$E0  E( R& I9 V) X2 G# ^& D% j
  148. ;==================================================
    , D2 H% G  q9 {
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    ) ?* R" L9 \8 W! G4 l8 l5 k& `
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11+ P; A: J, I" ^) `' ?$ \* i; Z
  151. PALETTE_UPDATE_MAX      = $2C( E, }+ U) ]4 ^) g
  152. PALETTE_UPDATE_MIN      = $21
    3 D  R, j. P0 i" L
  153. PALETTE_UPDATE_INTERVAL = 60
    + \9 h  a( x" E8 k& F; I1 O
  154. ;==================================================: \5 N! N/ C; Q9 U8 `: [: y; d
  155. Sound_Bar_Cnt       = PPU_Addr+$F00 P: f- l9 u( d% _; j
  156. PPU_Cur             = Sound_Bar_Cnt+$028 V/ k) ]- |' T- C
  157. PPU_Addr_H          = PPU_Cur+$03
    , n% s0 s! t9 i0 H: s2 w/ _
  158. PPU_Addr_L          = PPU_Addr_H+$04
    # G  R& Q* i2 M
  159. Screen_Ctrl         = PPU_Addr_L+$01, S$ @/ g* e9 x# ~7 X
  160. Screen_State        = Screen_Ctrl+$01& b& \9 I  R& s" G% e5 Q+ ~9 _
  161. ;==================================================) V' }' F/ A3 y% c! L. [  u
  162. Use_Ram_Begin       = $50. V$ W# U  Y1 E! q$ p- M: P5 }# r
  163. ;==================================================
    8 G0 p7 W& ^; N+ b
  164. JSR_Addr_Op         = Use_Ram_Begin( P3 H# Y* _0 c( L+ o, [. g! Z
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    ! S3 Q! a4 w) h) L! B/ c' ^) o. g
  166. JSR_Addr_H          = JSR_Addr_L + $01% S, B; t& S+ ?
  167. JSR_Addr_Rts        = JSR_Addr_H + $01
    3 m4 d0 x- \0 `2 d5 B- r9 K
  168. Data_L              = JSR_Addr_Rts + $01
    * L" O( a5 \" h( H! ]! ~
  169. Data_H              = Data_L + $01* B2 x, J+ R: F! L
  170. Data_Cnt            = Data_H + $01- n: h9 d1 g& o  z  J! N3 U
  171. Data_Buf            = Data_Cnt + $019 Y0 U- N( ]! k( F* |
  172. Nmi_Time_Count      = Data_Buf + $01& G( K; F: T& w* Y
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01* s+ O' X$ K: l
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    " W2 w9 @, \. D2 D2 g1 t/ l
  175. 6 Z" d+ r) M' i
  176. ;调色板刷新标志  I8 ]0 ]( v# Y2 C0 _3 A; o- Q
  177. Palette_Update_Flag = Palette_Wait_Cnt + $01
    " ~. H$ M6 B6 E6 y" n$ [, n

  178. + p  ]  G6 P' R- Z5 {  t
  179. ;当前帧文本写入禁用标志0 G" r5 U& F9 T, l4 L% p
  180. Text_Disable_Flag   = Palette_Update_Flag + $01
    ' {4 P( r9 D& u  ^1 \2 N" R
  181. 4 y0 O1 r; ?+ |
  182. ;==================================================
    9 D, J+ J2 ^* I
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动% @% b" M& o  V7 R# A
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条
    2 ^  _: T; d' C. I* T) z
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间- }7 I* X. J! N( t- R% q6 F
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间5 Z' O! Y8 d7 ]" C
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间# m) F" X" _* G! V5 k6 O7 S
  188. ;==================================================
    ( i: Y: X+ a; _0 i' M/ l
  189. Key_Keep            = Text_Disable_Flag + 1+ a6 t0 V4 _* c
  190. Key_Once            = Key_Keep + $01
    & z0 H+ r4 N3 L2 H& K
  191. Key_Kemp            = Key_Once + $01; K" N7 [- S/ u% d4 R7 i
  192. Key_Temp            = Key_Kemp + $01( W' K" H' Y. [; }, v' r
  193. Key_Getv            = Key_Temp + $014 A5 J7 z/ K* F
  194. ;==================================================
    5 E6 B. U& q+ S" r
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    8 o2 Y7 G( M3 e$ R
  196. Music_Item_Last     = Music_Item_Cur + $01
      y% k- u3 r( X3 P% f
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    0 O3 ]/ z' K# v, r6 \
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    : s# p, q/ a) A* J0 r# f+ o
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目; o. a. Q# Q* c) P6 Q+ J5 v
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态! r( A3 V- i. W  R! s* b5 @% k
  201. ;==================================================
    4 A0 {$ F5 \/ g" d8 A
  202. HEX_Data            = Music_Stop_State + $01" K; a" h9 Z9 ~/ l  ~) }' G
  203. DEC_H               = HEX_Data + $01% ], n0 F8 @$ u6 B  Q
  204. DEC_T               = DEC_H + $011 t/ u+ w  M9 G* L9 Y+ u
  205. DEC_L               = DEC_T + $019 I/ f7 d. F1 c! K3 x. ^% e
  206. ;==================================================
    1 I; Q. p/ L* Y/ h5 g3 i( I
  207. Time_S              = DEC_L + $01* N, V6 F9 R1 x, ~( B
  208. Time_M              = Time_S + $013 m' j+ E) a8 V( L' P3 U
  209. Time_H              = Time_M + $021 X1 {) @! q9 N- l
  210. Time_Cnt            = Time_H + $03
    1 J& V" e$ m. M( P" G0 y+ ?- i

  211. 9 [/ g" x3 r1 O/ }* b. r1 ?6 `
  212. ;==================================================- `! B3 F; k: |  I8 E0 l
  213. Music_Bank_8000     = Time_Cnt + 1
    # e. W) G/ s) L
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    7 s& S% m+ c8 v3 S( c
  215. ;==================================================$ k) ^0 i' {5 t6 D' i  `$ @* t9 s. d
  216. Scroll_H            = Music_Bank_A000 + 1- {& \6 e  y6 ?6 a9 E' B
  217. Scroll_V            = Scroll_H + 1  R- E. ?+ E. h
  218. IRQ_Process_Index   = Scroll_V + 1+ u$ b0 o8 x$ n' k* f/ F3 A
  219. ;--------------------------------------------------
    . X3 m6 v, O4 v6 U$ K7 [4 E
  220. Page_Cur            = IRQ_Process_Index + $01
    5 w9 y' V' A  Z5 z3 A
  221. Page_Cur_Index      = Page_Cur + $016 B7 i0 i2 p/ e3 M# t
  222. Page_Cur_Cnt        = Page_Cur_Index + $01  R: {8 t" }) n% O5 f: d) z
  223. Page_Last           = Page_Cur_Cnt + $019 x, w" `0 u* H; ~3 z
  224. Page_Last_Index     = Page_Last + $01
    ; C# G& }7 \. R% J+ e* e$ V
  225. Page_Last_Cnt       = Page_Last_Index + $01
    # G  v' x( C8 W
  226. Use_Ram_End         = Page_Last_Cnt + $018 }5 f: j& `+ ^: T
  227. ;======================================================================: |, B1 i" K0 z, g# f) \8 c
  228. ;音乐数据块9 \4 v# P9 U: D8 t9 x* _  I
  229. ) A' e+ q& c0 {& D' @& C
  230. .IF SOUND_BAR_SHOW_ENABLE) Q+ E# |5 D) \) w/ o0 K- T
  231. 1 r8 D1 S4 w! u( i" i1 H+ v
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    4 P; \4 {$ s/ F8 s, m
  233. .ORG $9000! |0 ^4 D1 `6 U8 O
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"# G; @: v3 O4 J, O$ k( B
  235. 0 G+ \  R0 z) e9 \) t) t" d/ x
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK2 Y4 y- ?% c7 H& L; P% p) g# _
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"& I0 f( N8 I1 a& W# l* C' N
  238. 3 a$ b1 ?) c* ]9 n6 A  l. i
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK; P; t2 l' P. r$ E" X6 V: t
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"( A+ R  S  i+ m; U! f

  241. . ?- k1 m) @3 x
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK5 X9 K3 [0 V# `' a3 O" E7 _
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    4 Y9 B5 B* l/ _1 M3 ?" t
  244. ' J$ ^- y) `/ R/ l2 v
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK0 Q( R8 Q. F: y2 i0 J% t  i8 N
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank": f( ?2 }. N! q5 u* k  M" A
  247. 8 }7 P1 t- Z( ~+ c* r# I/ _
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    7 G2 w& L$ L1 F# n
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    ! v( F6 P0 t- o& u& M! n/ Q  K

  250. ( f8 n+ }  z& `
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    6 \/ E; q3 g( ~
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"" ], l, \- H* j! T$ l/ j9 P. q7 o

  253. 2 f$ y' U8 I6 o, Y' W
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    ! B; v9 C* L4 i. [% j0 }9 l, F
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    4 ?6 `( D( p9 L9 c& i: z
  256. , V: o/ {' a) w4 c' c" q3 A8 F
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK2 v! \6 z( @" T: V) B6 R
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"2 A3 U1 ^# G6 B$ L8 g+ N0 L) A
  259. - r  M" O) m( n9 T  o$ }0 V
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    7 Q' ^' I' }$ O: q
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    3 R3 ]- h# G- l# M+ V
  262. $ T% P, c$ H! l& d2 \: ]
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    * {' Q  C, f1 k: P. \! s3 y
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"7 J& o7 @2 ?* F) M# k4 a9 `6 r0 W
  265. # e0 @! L8 W$ g+ |
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    % @3 x0 i& F+ j. ]
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"- C0 K+ t) }; y+ `
  268. / e1 e) B! Z3 n! Y! ?4 \* f1 p
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK
    $ l& M# R( p) Y7 t/ ?) R
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"( l% x$ r1 h7 K. U. R5 e
  271. % v9 m: L, l2 t% W. D9 ?' k
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK$ d( b0 ]4 M1 J4 @9 Z5 }- n9 C# b8 i
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"0 A% c$ L: G! T0 _

  274. 9 e/ m9 k5 Y# T& j' G* w
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK3 U. ]7 Z% y( H& l2 \- ^
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"% k+ }6 ?) ^, Q; w6 _; P( s9 X: O# ]

  277. ' l$ ^$ ]- |9 E5 q  B( f2 O
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    0 E4 U! |8 n5 Q4 |$ ?2 R4 [
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"
      _! {, Q  _3 O) x: ?9 v7 K! u
  280. 7 w1 e! A8 ?- T. }
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK$ u9 C1 j- f* q' S0 O+ C; u/ c
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"+ W8 R  I: O+ L% |

  283. / a2 ]4 r' b8 h# H* [8 M
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK* t# B4 I$ I: e; X/ i% C
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank": \& C% x* v3 Q; c0 q3 f

  286. 2 ^* n  K1 w& j- V; u. Q$ C
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK9 e! W% N1 @9 c: t) i, a
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"
    " h3 Z& ?+ x$ K3 i7 Y

  289. % o$ M) _" U. |5 c. o9 v3 X/ P
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK  F* W3 N9 y- U2 Y' b) X
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"3 ~; V) O" u2 Q. d. A
  292. 6 X9 i) q& N% P1 [0 s1 D
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    ' v; h+ V+ |/ W$ q# R# k
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"! N  U! T9 \& p. f( ?

  295. 7 A  z: Z: Q" Y4 p* q1 L
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK# f! Y1 |7 ^  K. n/ y4 q* Z& y
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"
    ! L8 |6 x/ f! ~6 C) F" n

  298. 9 N# y' K, X/ i8 Q* I. S
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK5 N' m8 @+ }; t  r& i* L
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    0 U3 }) h) z; n) d. w
  301. 3 h- q& |: p  Q
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK6 q- g/ @. b- X7 y3 X* d, p
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"' ~) |% U$ V( S

  304. " x9 M8 T' K+ _
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK. q# }- |9 V+ C
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"% s. i$ \2 T- y0 v+ g5 W- A/ F

  307. ; q) q( p: o5 E/ W$ m
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK8 t# Z3 T5 {3 n6 l1 ?- F4 f/ v
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"0 n# _& n, h  _. \5 [

  310. ( F$ e+ e" F* s0 M
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    - P$ Z! T/ ^' W; k' \
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank"
    6 X8 X8 r+ f. }

  313. : @" Q0 Q" @3 U+ X" {5 I  O
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK
    ( `. Z$ r1 [$ A/ _1 N2 K/ @
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    - J5 B6 n/ b4 u. C5 r( O
  316. 4 x( B; R) e% K' d9 b* |
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    - h/ k+ s" w$ q! }& g! f
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    ; @& ^; ~9 v  q2 p
  319. ) ~8 o- [3 }- r" W# R. i- f
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    & ^3 p* d( @7 s* n3 y
  321. .ORG $D400
    ' q8 _3 x0 ?5 s) ^) h' [7 T
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"7 X" ]  t/ x# s/ k

  323. % e+ {6 V0 G0 q% U4 f
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
    ) r  d1 K3 N& n% v3 I# e
  325. .ORG $D8001 O9 z: ?$ P" b* G: _. B. V
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
      a1 g2 ~- ?6 B1 @2 v  i7 T) D4 Z( ^

  327. 1 j3 e$ D6 e2 g/ x( r

  328. ' L& S% \* n3 ?0 b4 C8 N: J
  329. .ELSE* Q. c% ?1 x4 f" x

  330. 9 Q  ], m8 E3 Q* j
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK, R6 M7 l5 G/ {" Y4 y2 C
  332. .ORG $9000
    / a# C  [- q. w6 F
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"
    $ b/ p0 L7 P7 Z% z; y; m3 T! B8 y
  334. # M& Y, v! C1 G/ N, x- a. L
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    ( o8 r3 v5 B1 |% Q6 q" y# F' M. ^
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    7 B, {# J) C( ]1 J

  337. 5 l5 H# R/ q, U9 \4 n
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK2 o, X* j1 Y: x; Z
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    # D/ l6 m+ R3 Z9 O, m# a/ @( \& h

  340. * t/ i/ P: _! @, C* j+ @/ m0 {
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    + F  b( k5 {: j5 g. Y
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    1 l0 K4 a! O, L0 N

  343. - E2 _6 R, `9 G- O- x) n7 \  i
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK1 t2 x+ j% N5 \) Y# V/ S" K
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"5 x* b$ c, W+ ^4 c: R
  346. " R7 r" s- _) n+ O# A
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    ( b0 G8 p6 {; h' Q3 K( I
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    2 }1 c: x0 S7 O  N

  349. # Z; }, s% z+ E- q" ~9 k) i
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK3 p6 b' W  }1 _3 b: Q* E$ Y
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank", z' d; D1 C1 J2 [1 k7 `
  352. ; p; L0 H, k4 {8 X" b
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK
    " Z1 H) c, m+ a3 R: N
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"2 J& G3 n0 ?5 |& q! ^( ?& y
  355. + ^) ]: `& P' U* O& @
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK$ r( {; l% i$ X/ m# l+ \8 R# l
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"; ^- \: r/ p8 d: H+ ~: W2 X( G! p

  358. / W9 @* K3 _/ S! K
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    ) l- k' K& q, ?  `+ y
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"
    + x, [9 r# }" m3 ^

  361. ' W; W3 k( _& C  I0 G& i' O+ m7 o7 S
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK1 c  _. y, M! f  a5 G4 m, f: O
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank": E' q& F9 ~4 F
  364. ( x1 t% r8 D: N9 N
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    # `: K  V& Y% X! H/ d
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"' d2 e% ~/ E3 @. o4 j
  367. 9 B: W6 e, w% b# m! I) y7 f$ e
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK* j/ b/ t5 a$ o, j; \! M: V; m
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"" `6 ^8 z6 P6 v: }: a8 ]7 ~: x
  370. 4 r1 ^  u. {/ _& f& g# x& H
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    ; R9 m, ]- Y+ P- d/ K7 @; w
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"
    ! Q2 R" Q6 v$ ?' u- f! ]4 }/ }

  373. 9 p4 u1 o% v& V8 v
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK/ _) p5 X) x3 U: s
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"8 Q& I3 q% H$ o7 X! D# A# Z* R

  376. $ c  P4 A+ a8 Z2 _4 J/ m
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK
    + H! _& o! A5 I" ^! ?) S6 O
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank", o6 q7 H8 u. A. N
  379. " b& C$ c; }' F4 a
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK, f8 W# ?* g& N1 Q2 u" k
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"- ]' [# Y* @0 i3 C* g" K# M' A- _
  382. + ?" h- e5 v1 e8 z. {! X% u( t, A" ^  ]. u
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK5 Z" Q4 r* k# h3 v6 U
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"
    4 c5 `3 n6 ^0 }+ x" a/ h) H, s

  385. ) P, j1 T) R9 d$ z3 ]; B
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    $ E: k8 s$ }8 e* ]& t
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"4 o0 M( R( q- i  @( R0 i$ o* `* r

  388. % ]1 B7 ~: y  D/ w& z" o3 U
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK$ b1 e2 r4 w/ @0 N# g1 c8 o) O
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    # u  ~# {2 a- i; @! r( i
  391. 2 l5 i  C1 G" \4 M* m
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK: [: E7 I1 h' m% I0 P" B: x
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"4 B' H/ @( I  H$ ^& ?! `
  394. ) D+ K! |$ o2 N$ q
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK7 s! w' H+ [) y9 t' P0 j$ s( U
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    & T3 z, t+ x$ [& b
  397. $ B/ e% ^! n; ^' D& P: {& }
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    4 s8 ?! s* J, U* o; `8 e* m  X
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"8 r: W  Z' }; x' \6 F5 H
  400. 3 w3 j/ p3 K6 t* |. k
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK
    * W6 W' J8 q3 z" _' E
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"
    + W/ ~, A6 f0 A8 t- w% X

  403. 5 E, Z/ |! }. g4 m% h  t  f2 q/ Y9 l
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK% n5 W% h5 c+ I8 p  ^! J! Y
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
      A5 ?& S0 K5 O8 i
  406. 8 \" K6 m7 \/ R% o
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK
    5 M  i. B* ?1 p0 b+ c0 P- c( ]2 H
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    6 \# I4 K7 [& N5 U; O+ y7 f8 U
  409. ; Y! e4 K9 R  H2 E; W: h
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    - l9 M) E$ u+ |% z
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"
    ) A! `8 C- X, s5 R) I4 b

  412. $ f- R: q. _/ p- ]
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK% v( _/ s) F; B% }
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"( G9 e3 v& b% d) @( p8 g
  415. " ?# o0 S$ h$ j1 O
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK. ~$ @* o) r0 R% s
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"; z* U- c. H4 d. v3 f

  418. 3 K! O9 n3 r6 {+ D# J
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK# G9 l' C5 n  i4 n
  420. .ORG $D4003 c5 Y/ M2 e$ n5 C) T5 ?$ D
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    ' f% o6 M% Z. Z& _1 {1 F; u8 S' R
  422. % J- ?" H% g" j: |# K' T$ d2 F* R
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK+ q, l( _6 W) Z+ V% o$ a5 d7 Z$ V3 v
  424. .ORG $D800
    1 H; z/ K* y7 T; g- `! ?
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    3 B3 ?. \. l3 p/ N, u2 q
  426. $ s/ \4 T, B' Z6 o0 n8 H$ T) J9 k
  427. .ENDIF6 ^& H7 a# D6 j4 x0 u' Y4 ~1 F

  428. - `" u% \+ u; s+ v/ ~6 \2 O# x
  429. ;CHR图形数据! X3 u' a; }5 f2 L3 n6 P0 C' {
  430. ;======================================================================
    9 H: l8 R7 ~( y- t' q
  431. .BANK CHR_DATA_BANK
    # B2 ^/ h; H. K3 |; W2 X* i
  432. .INCBIN "chr_bank/chr_data.chr"( ?3 D. e" P; b* a" s* r+ B0 `$ }& q& O

  433. & b4 P: _: S* r, z" X. L
  434. ;======================================================================# p3 @2 C+ j' T( e' C1 o! p
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK: P# |) Y, X% E. o
  436. .ORG PROGRAM_ADDR
    - n. M7 n, R3 Y& H1 Q: G
  437. - d( f7 x/ v% R; n5 t8 f$ A2 r5 T
  438. ;==================================================
    8 n& ~) L8 O4 m6 [/ O& g5 L# B* q/ c
  439. NmiProcess
    , w7 F! L& G( ^/ e
  440. ( P$ B, d7 j* Y- @& R
  441. ;关闭屏幕控制8 t  f( T* e! p0 [
  442. LDA #$002 m! R- I2 S! W* w. o% J( S  h
  443. STA PPU_CTRL, L2 {) c. O4 U$ u6 X6 T
  444. % O% l* `  x0 G( t. @; E
  445. ;没播放音乐就不需要触发IRQ
    4 [& \( V" Q+ z  W
  446. LDA <Music_Stop_State
    - M" [- r' v) `  z  a) v7 p
  447. BNE NmiNormal. T, V% u2 F1 p# D

  448. : J1 K4 z# [. ?. A3 t0 J' \: k
  449. ;重置IRQ索引$ @. b' e- D8 K! _( F. X' x& ~
  450. LDA #$000 t; D3 Y/ n  v- @+ k" |. r6 P
  451. STA <IRQ_Process_Index: h( S6 b- V1 T& k
  452. 4 b7 H0 |4 B6 h) b
  453. ;时间秒数为空则跳过+ \. S, Z' h1 j, f% k
  454. LDA <Time_H$ j& Y/ E2 G" E$ G
  455. ORA <Time_M- m  W0 Z( Q+ {1 ~6 r9 y
  456. ORA <Time_S
    / m  w6 e4 U1 q% f9 w. X
  457. BEQ EnableFirstIrq
    * g+ t( ~# d4 Q. l9 q1 M5 T( b
  458. 2 L* H2 r% P3 e" D  B
  459. INC <Scroll_H
    ) H2 D" u8 W) J  J

  460. 1 J$ X7 c0 H+ K* P4 h/ c% {; q. y
  461. EnableFirstIrq
    2 z" }1 H6 f$ P8 a0 h
  462. ;80条扫描线后触发IRQ
    1 l, N) G4 R0 _
  463. LDA #IRQ_SCANLINE
    9 R0 {1 w7 {9 T+ I
  464. STA MMC3_IRQ_LATCH
    # M$ i( p( d5 E, B& R9 U$ w& {" y' G
  465. STA MMC3_IRQ_RELOAD6 D8 L  d  _7 o* _
  466. STA MMC3_IRQ_ENABLE
    + R7 c: z+ I2 X# _
  467. CLI
    - B2 T3 a/ @/ z8 ~0 X! b, K& k) X4 @

  468. 0 Y- g' r6 d( {4 c9 i9 N
  469. NmiNormal% j1 S- j$ `2 }. W6 }2 {& w( ~) A

  470. ' u" M  G  @& l9 U# ]& C3 p
  471. ;处理PPU图像, a3 ?) c* q) }
  472. JSR PPU_Proc
    9 U) u5 ~. I4 J$ d

  473. 5 g4 j& U2 D# m3 r/ r2 T# ]
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)6 p, z7 Y; F9 v' b# G0 I
  475. LDA PPU_STATUS
    8 f; ~- L  \$ t2 u* |
  476. ;LDA #$00
    , v6 J  j" Z: J/ j
  477. ;STA PPU_OAM_ADDR
    # o& f# @, ]! U
  478. LDA #OAM_TEMP_ADDR / $0100
    # x/ y; k5 S6 m- f( M# t
  479. STA OAM_DMA- c3 s0 F! _9 ^
  480. % u9 {7 Y, W" @: y
  481. ;启用NMI中断
    ' @6 v8 A. g2 g3 `
  482. LDA Screen_Ctrl
    ) c$ g- w4 f. P: r0 T3 w+ V2 ]
  483. STA PPU_CTRL
    6 I' ^! i, ^8 S$ J0 K; V2 s
  484. 0 b: o9 ]# r  c# k& C9 q
  485. LDA <Text_Disable_Flag# M8 e/ _. Z( A
  486. AND #TEXT_DISABLE_RAM/ B$ W5 g' s* b. N3 m
  487. BNE Nmi_Sound_Play- s) c, k1 Z, e2 v9 h

  488. , F( B2 q! Z' ~' h9 [) k5 \/ V
  489. ;处理手柄输入1 O6 {3 J& a) Z) t
  490. JSR Key_Proc
    / ^8 f3 ~% L- m+ v

  491.   P8 `7 e- U" A, q
  492. ;切换音乐(手柄触发)
    : e& R! O4 F& h/ U1 ]- r
  493. LDA <Time_Wait_Cnt7 R) \, {" _" G, P' ]$ }
  494. BNE Nmi_Cursor_Arrow
      k: i4 b8 `' i- {# U# G
  495. JSR Change_Select_Item& d3 t; Z9 y7 v8 v

  496. ' {3 a# P. I4 E& k1 H" r, v
  497. Nmi_Cursor_Arrow7 R; E, {! i5 f$ O# v# T

  498. 3 E8 d! P* U8 x1 S! c6 c5 n
  499. ;处理光标箭头
    2 }' i, _8 ?, S# f7 d. z& c
  500. JSR Show_Arrow* t4 R: o0 m4 h3 ?& \
  501. 1 q" o; j# w5 B/ Q( D  V* `
  502. ;更新调色板9 [% S" ~: h) u. L
  503. JSR Update_Palette_Data
    ; N. I  j1 w7 Y2 I/ m9 t. c

  504. 4 ]$ Q6 d# n/ o& Q; t' f
  505. ;显示时间(缓冲)
    5 O8 y& Z" Y. E+ R! Y
  506. JSR Time_Show
    % A& J. K( N- ^. ?+ q9 I) B/ l
  507. 2 L3 g& K# O2 p2 z5 h% {* f
  508. ;音乐显示(缓冲)
    / x' d6 ?, w( P7 |( [
  509. .IF SOUND_BAR_SHOW_ENABLE
    $ w1 o% s* [9 d+ H% v4 d5 l' j
  510. JSR Music_Vision
    - R. m. a" Z1 D8 @( Y
  511. .ENDIF& h( [3 o5 `2 Q9 P, }

  512. 9 ]: ?$ W0 |- d5 w5 Z( b# y
  513. Nmi_Sound_Play& C% `% t4 m* X5 o6 U! Q7 g
  514. ;播放声音
    % @$ K# D& S6 |% N
  515. LDA <Music_Stop_State8 F* P  o* j6 F0 b% h
  516. BNE Nmi_Time_Wait_Set7 m3 B* f- s% o  r# L3 F, \; K! h
  517. JSR Sound_Play_Proc
    % q' b- W7 @6 ~: F
  518. $ Q3 [. h+ h/ O7 j
  519. ;播放计时7 N# @$ c; K; v
  520. JSR Time_Count$ m2 O. K! \% H$ Z0 q! x
  521. 1 \& I1 _! v. T. M0 P, z0 h
  522. Nmi_Time_Wait_Set* M+ r/ n# p5 S8 g3 q
  523. LDA <Time_Wait_Cnt# z. \3 V. r; C6 j8 v
  524. BEQ NmiNormalProcessEnd% K0 f2 [" c$ c6 C( ?7 }- h
  525. DEC <Time_Wait_Cnt, V6 N2 s" G% k0 T9 A" e0 }
  526. NmiNormalProcessEnd
    + T6 h$ l# S2 \+ G- K" G% I4 h
  527. . u. E/ B" K& U& U. z$ c# t
  528. INC <Nmi_Time_Count
    # L6 G. \/ d1 k2 v: R
  529. ( N4 ?# T4 N/ S# I
  530. RTS; A8 Y- O* ~4 \* x' a

  531. 1 G! ^" G- g- Y9 F
  532. ;==================================================
    4 L! F" J  D( F3 q( ], r
  533. Init_MMC3
    # d. ^) e9 x6 A' r( B% h+ |
  534. ;==============================
    2 k) r! ~+ F; y
  535. ;禁用IRQ
    $ H; X9 P4 q+ y; _" T: U, r/ i
  536. STA MMC3_IRQ_DISABLE3 h2 s9 \* j, `  Q: k% Y9 w3 ~
  537. 6 ?* K+ R+ V4 L: }! v% @) i: T
  538. ;水平镜像
    4 L5 V. {6 v9 T' ~
  539. LDA #$01+ f5 K9 g; ?2 q+ E" A- ]! ]
  540. STA MMC3_MIRRORING* H* U# \% ?+ @+ X" ~

  541. ) l$ o  h. Z- i5 m5 }1 f
  542. ;初始化图形bank! C1 S5 O5 U( X& ~, z
  543. JSR Init_MMC3_Chr_Bank
    ' E  h" q2 I" ]  K

  544. + ?0 C+ l2 G- }& p% d- J# K
  545. RTS
    5 U' H: p: }' @! ?4 o! E& i0 j! b! Q
  546. ;==================================================
    ' b: c+ w- N+ W  b
  547. ProgramBegin;主程序
    % a2 f. M$ r4 v- q/ n3 q( j
  548. LDA #$00' Q  C. J1 C; ~9 `$ N
  549. STA PPU_CTRL
    1 t; U7 L) `/ I7 g& r
  550. LDA #$00
    9 x( o- i/ X& `' |
  551. STA PPU_STATUS
    + \" |7 u( W# P, w1 m2 d  E$ `  L
  552. STA PPU_MASK
    # v1 V* i9 D5 y6 p- p" O
  553. STA JOY2_FRAME
      Y" b/ K1 ]; z' P
  554. 1 m+ t0 R. R( t! u# c$ j3 {0 `3 j& ?
  555. STA PPU_SCROLL5 i. D' y% ]/ N4 f4 U; I( B
  556. STA PPU_SCROLL* m0 ?) w$ U! n  l
  557. 0 [3 W' W, |& z( v$ X/ Q
  558. ;==================================================
    , U. E# i9 L) I/ {. W
  559. LDX #$FF& k+ S( A7 t* q( C& O8 T: [# z
  560. TXS
    ' b. C2 e1 Z, Y4 ?3 X# n# B
  561. 0 _- I0 f( Y/ @8 g' O& m  [, t4 D7 |
  562. JSR Init_MMC3
    - _  o1 b' C3 u8 X- x, p2 V( D

  563. - W" s% x' u: W
  564. LDX #$02
    # ^; e. H9 w+ h3 ]
  565. Check1, c; B8 c, s* j/ g3 g9 \
  566. BIT PPU_STATUS: S2 r, w0 J5 B1 \4 {5 r: i
  567. BPL Check1
    * J3 D, k- A2 B
  568. Check24 b; ?, u7 I3 S) y
  569. BIT PPU_STATUS$ N3 p4 H+ P% V  c% o" }
  570. BMI Check2) c& n/ ]; P* h# c
  571. - d* _8 g! X1 D8 u
  572. LDA #$0F( {# R1 o% N0 @) J. g/ q+ ]
  573. STA APU_STATUS
    ; }- \. \  K# W3 N2 A
  574. LDA #$C0
    $ m+ P5 F4 e" B" m& p) j
  575. STA JOY2_FRAME
    ) C$ A3 O6 |+ C

  576.   c9 C% w/ C* l5 v% S
  577. LDA PPU_STATUS
    8 J7 u# ^9 m: t9 ]4 ?3 k6 f
  578. LDA #$10
    . N2 E. t1 G' F
  579. TAX* A/ C& j2 H. A" e4 z, J
  580. Check3* ?9 \! Q; E5 }4 e# @8 Q
  581. STA PPU_ADDRESS9 F, [4 T  ]7 v& C6 _+ o: f
  582. STA PPU_ADDRESS' Y7 |9 @* ?; y$ k
  583. EOR #$00
    ; o( Q4 B8 i( R" s4 u
  584. DEX/ m2 ^3 k  s8 G7 E
  585. BNE Check3
    9 A1 v) X+ C6 S* L
  586. ;==============================+ t9 i* Q& W- R% q$ Y
  587. ;调色板清空
    8 |) l( ?% I+ o' v8 c* x4 E: e
  588. LDA PPU_STATUS8 O- N2 k; \5 `3 w" k# M
  589. LDA #$3F7 T5 Z" D% v: k* v. e5 P6 E$ n
  590. STA PPU_ADDRESS7 d; q/ l' t7 B% o$ l4 M0 z
  591. LDA #$00
    3 V4 u' O3 m2 H$ J2 W* X
  592. STA PPU_ADDRESS
    . y3 l" ~$ o4 l. n: I# p' W% |; W
  593. LDA #$0F! T, c+ k# b" n
  594. Palette_Clear; p0 l0 c( t8 v" [/ Y
  595. STA PPU_DATA
    : L8 S) p+ ~' l) }) |& |' x
  596. INX
    ) d6 X: ], I4 G3 p5 p; T# i
  597. CPX #$20
    0 q% U8 x( n3 }  |0 C+ @+ @. Z3 M
  598. BCC Palette_Clear( r; R* v+ O5 k! n  B, w& M
  599. LDA #$00
    * X" p2 ?+ [, b/ x1 A8 p4 T, X0 p
  600. STA APU_STATUS3 e0 Q& e: a6 k. U* V3 F

  601. 4 |0 E- P4 c( g0 L3 _
  602. ;==============================3 d1 q2 f$ C7 Z8 F4 c  H6 N
  603. ;RAM初始化
    , o0 a' I/ n5 t
  604. RAM_Clear_All
    ' u9 ~7 B' i# i$ R% ]+ ?  D' v
  605. LDY #$004 T, t3 L  k$ z( ~$ |
  606. LDX #$08
    # z; [; u  X) F- V% M
  607. LDA #$00
    0 }. `2 l# {) c
  608. STA <$00
    6 p7 S+ ?8 O3 h6 H, H; S' }/ u3 o
  609. STA <$01
    ' w: d; z: P. u: m
  610. RAM_Clear_All_Start. Q0 ^0 i: B+ O- n1 N) f* Q) P9 ?
  611. STA [$00],Y. \; c" S) L2 I( t# y% z  |4 p
  612. INY
    2 ^, o/ J$ K( H! p3 I
  613. BNE RAM_Clear_All_Start4 u. s6 K% v. d) `& z
  614. INC <$01; l/ T" r! A. Q) n! p( G" p; `$ D
  615. DEX
    : C9 K- J6 w) n( o& R
  616. BNE RAM_Clear_All_Start
    ! v6 U, o/ s  O- z

  617. + H8 P! Y+ k4 W$ c3 t' P
  618. JSR VramClear& @* k% }; h; k+ f3 e& U
  619. JSR VramInit
    2 V* v: {5 I; F
  620. JSR OAM_Ram_Init/ V" P* }, O6 T  h8 |; W( f
  621. JSR Init_Palette_Addr
    : Q9 t1 W* O0 `6 n! s' `- `

  622. 3 K; I& N' o, |5 q( G
  623. LDA #$FF! z4 k; N# p3 Z$ k0 O! v; q3 i
  624. STA Use_Ram_End! M0 \/ r: K0 d0 C: C% J6 K' U. M8 s
  625. ;==============================, n  Y+ F2 R/ A) P0 P) d2 T# F5 |
  626. ;初始化背景调色板
    % K+ I, Y! g( k3 g5 I6 ?/ }& s4 Q
  627. JSR Set_Palette_Color' X/ A. Q5 K3 b. ~  |
  628. JSR Set_NameTable_Attributes
    5 z8 ?4 C# M! N  R9 `3 r
  629. ( }, ^9 C' h; n* H
  630. LDA #$00
    ' v3 `3 L5 o) w: u8 t/ [6 |: t2 ]
  631. STA PPU_OAM_ADDR
    7 q" V( }' \/ {* M- o
  632. LDA #OAM_TEMP_ADDR / $01003 g5 }* w2 l- e' R
  633. STA OAM_DMA# L( z' g6 [# \. C

  634. , d' E3 \3 `* F! l7 d4 z1 U
  635. JSR Sound_Reset_Proc
    7 c; |- P1 R+ Y3 c
  636. JSR Set_Sound_Total  Y* {, p" F6 U+ r& U; @) z0 g
  637. , S# P0 R9 m, t" H7 a
  638. Init_Start_Music3 t4 z& Q5 v- T1 s7 y; V
  639. LDX #$008 z+ c$ x2 U4 M0 `& \8 f& O3 Z# ?& B
  640. Init_Start_Music_Write2 p, S/ x7 A2 M5 N% t2 h* r
  641. LDA Sound_Start_Port,X
    9 s. f; @: [  c* A: G
  642. STA <Music_Cur,X1 O, f4 X! D# D; {. ]
  643. INX
    & P3 @9 K: `$ x. @+ \
  644. CPX #ITEM_MAX_SIZE' O& K8 j( s1 A! d# L
  645. BCC Init_Start_Music_Write
    " \2 t- d( U+ Q+ F# w

  646. % M( S1 P, |* n
  647. JSR Show_Music_Text
    0 {& U% |7 H* u% w5 D
  648. 2 l2 w$ Q* |# p- ]/ w& i, j
  649. .IF SOUND_BAR_SHOW_ENABLE
    ( j9 ]4 |" _5 N' v9 k2 [% @
  650. JSR Sound_Bar_Text_Set! U3 r' z5 g8 x, @# r1 [& Y* L
  651. .ENDIF& B/ f$ P  x1 B

  652. 4 Z" O4 \* ], K0 y% D0 @
  653. .IF Track_Name_Pos
    / W; ]! ]6 e' k
  654. JSR Show_Track_Info
    * W, K. }; k* s
  655. .ENDIF
    6 i4 V3 d0 W8 u

  656. % A3 U' {! ?& ]+ ]4 j
  657. JSR PPU_Proc5 M, m1 }- B# \$ F. s6 _' G( m. I

  658. 8 a+ F# ?( }7 W
  659. ;==================================================) O; g5 O. W! ^' M  R
  660. ;音乐bank初始化
    ( e1 T) ^) P4 u6 R& F+ y; D7 u, v
  661. JSR Init_Sound_Bank
    & T. S& q, K" c3 h

  662. . R7 l( j8 a' ~% w  {
  663. JSR Music_Show
    / X4 i# y# y2 H& z0 p1 g$ t# p
  664. JSR Time_Show
    , V+ D* H; u! g- m
  665. JSR Music_State_Show/ m4 b6 Q, I' t. W
  666. JSR Time_Delay5 i, [) ^0 z- D! ^* r' W- Z( C

  667. ' R2 ^" Y1 c  A, i2 H" {
  668. LDA #$016 x: \- S. R  S% T3 ^
  669. STA <Music_Stop_State3 x/ A, M. x: t8 _6 l$ m& E
  670. * H3 J; U" o# C0 J: ^+ y
  671. LDA #$88
    ! I& Q+ |! Q2 S
  672. STA Screen_Ctrl
    ) L, m, D. A' b  V* z
  673. STA PPU_CTRL
    / i! k3 [4 O# S6 X! g' |) ~

  674. 9 _5 D+ u! }5 O( y  Z. x
  675. JSR Show_Page_Text! J: M" ?! Q% M/ c- n
  676. & {6 b0 t- _. h+ F% l, F& K
  677. LDA #$10
    % o- l$ f5 s3 q9 g9 N
  678. STA <Time_Wait_Cnt! m7 d8 m! g, h4 R4 v3 Q$ U
  679. / l, J7 M* a1 s  X8 H' T
  680. Wait_Time_Over+ z- C- N9 j" r# _
  681. LDA <Time_Wait_Cnt2 h! `/ E% E$ Z( o( U/ f9 S: G
  682. BNE Wait_Time_Over
    / l; S  b+ l1 }; }
  683.   k! ~: ~! J3 a1 o% H! z; z* W& g
  684. JSR Show_Arrow
    5 w, e7 D7 ~$ P" S4 W; b( ]+ Z
  685. LDA #OAM_TEMP_ADDR / $0100
    . B' ?$ A1 [) Q. o: ?
  686. STA OAM_DMA
    ( Y8 X' v  }8 U. p8 [7 O

  687. ( |; ], B% w6 t5 |" c. j
  688. LDA #$1E* V0 K, @' G8 D0 a4 c
  689. STA Screen_State
    3 D+ o$ r+ c4 R; j" {0 s4 o
  690. ) L  h0 O, U7 S7 h( B! F
  691. LDX <Music_Item_Cur8 g+ v7 @% o+ ^3 Z4 L
  692. LDA <Music_Cur,X
    , f* e2 J; e, C& K$ s9 ]  a
  693. JSR Sound_Init_Proc8 L0 N2 f+ |0 B. i1 [

  694. & z% j5 i$ c1 R- b1 e
  695. CLI
    ! b" ~! A0 o$ Y$ C0 ]8 Y
  696. JMP MainLoop
    ) j0 D# P) ]" x& m! K$ @: f

  697. * d. F; f  u2 D* [( u3 ~/ a
  698. ;==============================4 `* p) Z9 [9 G+ \7 f" b- y6 Q* s5 |
  699. Time_Delay;延时等待
    $ [+ I4 o. B. t, u
  700. LDA PPU_STATUS
    * r& }/ D' I; V. o
  701. BPL Time_Delay8 p4 e, y" C5 D! d! `7 i' V+ A6 Y
  702. RTS- b  N' U/ r% ?) p

  703. 0 D4 V( |6 R5 M3 z
  704. ;==============================, x9 j: j( K, a( T% q
  705. OAM_Ram_Init;初始化精灵内存/ |2 L) L5 c( V8 _( H6 y8 Q
  706. LDX #$008 H( V( Q& Z& \
  707. OAM_Ram_Init_Write. Z1 K( C" l9 p
  708. LDA #$F8% E* @1 w! n7 l6 M* L
  709. STA OAM_TEMP_ADDR,X
    $ U! n; L; Z  @2 K4 G
  710. INX
    , R/ T' [: l2 Y& S8 a. `
  711. LDA #$F8- E) @" v$ a# B( o8 }& x6 M8 f
  712. STA OAM_TEMP_ADDR,X3 s  ]' K1 `0 ?, W2 F6 V: w, j
  713. INX* |1 h. ~+ d# A* L7 R
  714. LDA #$00
    / a8 |$ J* S, D# }0 J
  715. STA OAM_TEMP_ADDR,X
    7 s9 }! H1 A4 e' u9 C. H. b
  716. INX
    8 {: m/ c4 |. P/ T1 a
  717. LDA #$F8
    & f! d, H. o9 C. B& t: v& f( O5 z$ L* n
  718. STA OAM_TEMP_ADDR,X
    , {5 n  [* j! z0 s6 C6 E* b" r: y
  719. INX  K8 }: ]+ x0 g3 H- u8 j, c9 F
  720. BNE OAM_Ram_Init_Write1 t3 R% J8 z6 O3 c' y4 F
  721. RTS
    2 b' {  V  f# Q4 q
  722.   `  Y% \6 K4 C( V; O5 B  v& `
  723. ;==============================
    4 g1 }" _% \, |8 U" O% F+ @
  724. VramClear;初始化图形内存
    $ S2 r$ E3 P4 S$ E2 N
  725. LDA #$20
    0 Y1 P; O1 Y, l5 C( p
  726. STA PPU_ADDRESS
    * a  Q  r" a) Z$ L9 @; p
  727. LDA #$00$ N$ p+ j# |! @) d- D7 d2 H: m
  728. STA PPU_ADDRESS/ Z5 l/ {2 }% s! D1 S
  729. LDA #$00! {( D  _' G5 n# \7 j
  730. LDY #$00- H! ?/ S/ c$ u0 L8 ?$ h' a
  731. LDX #$107 A4 y; i  l2 _* d# r4 [! k, Z
  732. VramClearWrite+ F. j  ?. ]- d
  733. STA PPU_DATA5 {! F0 l4 u2 U* Y! x0 H/ _5 Z; b, q
  734. INY
      `+ ~, p5 w: d7 p) |
  735. BNE VramClearWrite, V: p+ S) Q+ M  f  T) g! [2 \2 s" @
  736. DEX
    9 s; p# i+ v# ]: s# E9 p4 V0 E
  737. BNE VramClearWrite: N# M0 ^' @- U: c, s
  738. RTS/ Z$ S* V' f2 a/ V, d3 w
  739. $ U* M. N8 g9 q8 h
  740. ;==================================================
    " [1 h5 i& v! d
  741. ;设置MMC3图像bank8 I6 v) @7 i. a/ M4 q1 _
  742. Init_MMC3_Chr_Bank
    & Z2 z& r  q5 H! n, H4 M
  743. LDX #$05
    - {+ j0 k2 M$ m: B( E. B+ w. x
  744. Init_MMC3_Chr_Bank_Write. O& m2 W$ X+ d2 Z& }: e7 Q
  745. STX MMC3_BANK_CTRL
    ; j: o0 \9 Y# q$ X
  746. LDA MMC3_Chr_Bank_Data,X
    5 {0 ]) x. h7 ]
  747. STA MMC3_BANK_DATA& n, f4 t9 `  K& s
  748. DEX2 x. ?3 L( M/ }8 W
  749. BPL Init_MMC3_Chr_Bank_Write
    - l; j; ]& O0 Y6 Q  \. k
  750. RTS
    ; `% y  Q. w' c5 F1 R( S9 P1 r
  751. ;--------------------------------------------------
    # A0 V1 k& }7 z) w
  752. MMC3_Chr_Bank_Data# ?4 V9 E- P( T$ |2 F7 ^
  753. .DB $00,$02,$04,$05,$06,$07
    - P8 x0 l: ~& `; Q5 ]  {
  754. 4 N1 d! y2 t+ h
  755. ;==============================' b0 X/ U% R& L2 q/ H$ @; n5 l
  756. VramInit;初始化图形内存
    ) d1 B: G8 p0 x3 ?$ ~- u
  757. .IF CHR_RAM_ENABLE, i( I# D. I6 @& }; Z5 \
  758. LDA #CHR_DATA_BANK
    7 i* L, ~; n1 i; H$ x
  759. JSR Switch_Bank_A000! O$ M3 D6 `* `) \8 ]. j
  760. LDA #LOW(CHR_DATA_ADDR)7 r; e) I  p+ b# ~1 d) J
  761. STA <Data_L
    / v! I6 `) h% Y  H& O0 @( G8 I5 ~
  762. LDA #HIGH(CHR_DATA_ADDR)0 W# q4 r1 c2 z8 d; b
  763. STA <Data_H
    & Z" e" a2 ^. D6 U8 L! s1 b7 Q
  764. LDY #$00+ V3 G0 ~+ c! o( B9 ], Q2 o: b
  765. LDX #$20
    2 X" n7 k9 W! @
  766. LDA #$003 _4 h& A; |( P# |& `
  767. STA PPU_ADDRESS
    7 v) N) c" W( B$ @# {
  768. STA PPU_ADDRESS! J" S& V# v4 x8 M! Q4 y: e
  769. VramInitWrite9 T5 u3 X/ F  e0 O' Q
  770. LDA [Data_L],Y
    2 c! ^8 B- i6 X6 n3 w
  771. STA PPU_DATA: i, B' M9 n$ R; H- f9 N0 I
  772. INY
    / V" e; C/ l6 m! T- X
  773. BNE VramInitWrite1 U* x6 Z, K2 H( A
  774. INC <Data_H' _5 B# a( q8 A8 ]) v* a# I
  775. DEX
      Z' Q9 u) ]' g; y
  776. BNE VramInitWrite% i4 X( g( u3 h8 Z
  777. .ENDIF
    * S/ x. c% @. O& F/ H, o5 B
  778. RTS6 b1 k( ?. Z  p  a; q1 Y$ y2 B

  779. # u6 \' E$ K/ `9 h
  780. ;==============================: Z2 `2 e. \! ^, P2 p" E
  781. ;音乐切换
    8 e; @$ T: s0 \' J: x+ f+ n1 j
  782. Music_Play_Change
    $ A3 f! q- e- R6 W% }% [4 l
  783. LDA <Key_Once/ d% z! ?4 r! c8 }$ T4 d
  784. AND #$FF
    - L& U1 l0 s9 M+ a+ ^0 ~
  785. BEQ Music_Play_Change_Check
    5 z% C! |( P( i# |
  786. + G; T  ^: K2 C
  787. ;禁用音乐条刷新
      I7 D9 ~, M9 ?, ~2 z6 _& l
  788. LDA <Text_Disable_Flag; {. O- o: c1 }
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    6 B9 r- s! e  ^  _7 O: H
  790. STA <Text_Disable_Flag5 X2 J1 I- a: Z4 i

  791. ( K* G. z  E3 H5 y
  792. Music_Play_Change_Check
    # m6 V& j& [5 y9 T: c7 g; {9 m- U
  793. Music_arrow( a6 K* q7 p. g' Q4 N  U" z5 {
  794. LDA <Key_Once5 h; b/ Q0 O8 V6 L7 l$ r. F/ I& Z
  795. AND #$0F
    - _0 H* ], [. B. i
  796. BEQ Music_Play_Change_End$ I1 _1 b- M$ y$ `
  797. JSR Music_Track_Change: R4 H) \5 \; W
  798. JSR Sound_Reset_Proc- [0 v- }* A$ n9 ^; M
  799. JSR Music_Show
    - A5 l) V2 R3 f/ ~
  800. Music_Play_Change_End# y# K7 s% u1 l
  801. RTS
    ; u8 Y2 ?; V0 t5 J7 w) |
  802. . J" u0 X, u4 `6 ^: g
  803. ;==============================
    $ T. n  e! o8 h3 K5 q( N
  804. ;音乐曲目切换
    " l  O" n( A7 ^
  805. Music_Track_Change. Z: C4 D7 j7 ]- p! I8 _! a
  806. LDX <Music_Item_Cur& l8 R1 [2 i' q9 J- O' V- D9 @
  807. LDA <Music_Cur,X
    * U  g  D, n: g, O4 m
  808. STA <Music_Last$ k0 q& V- A# X  l# E+ N
  809. Music_Decrease
    ; r3 H; m3 Z" b  \' h
  810. LDA <Key_Once# E7 S+ S  q8 ^$ l! N
  811. AND #$42
    . j" z2 b' c/ y5 ~# x9 }9 t& F
  812. BEQ Music_Increase$ X3 c+ A# T" j+ g9 D
  813. LDA <Music_Cur,X
    8 ]& {8 z' \4 n/ f1 O$ |
  814. BEQ Music_Increase4 a  v6 Y8 c6 f
  815. DEC <Music_Cur,X9 [1 V; P5 O$ e& M
  816. Music_Increase- n/ g+ b0 b+ T3 N1 l: ^# i
  817. LDA <Key_Once
      J9 R+ E- m! ^0 K& o$ Z! d7 C
  818. AND #$81
    5 l) W$ J4 J- M4 Q( ?$ L% B
  819. BEQ Music_Decrease_10
    ! [$ a  N" x$ s, h
  820. JSR Set_Sound_Total
    # p3 M$ o" N+ l# ^- ?7 H) h8 K
  821. LDA <Music_Cur,X6 V6 _  j# y( b* C9 O9 g3 }7 p
  822. CMP Music_Total9 w6 T- N0 c1 }
  823. BCS * + 4
    2 O" t8 h2 Y6 d% \; d8 r
  824. INC <Music_Cur,X2 j1 a: c# O% j' G$ y+ h
  825. Music_Decrease_10# u" X% b! E% Q" Q) R* X& `
  826. LDA <Key_Once
    3 w! g1 \1 T) p3 s: h! O
  827. CMP #$04
    . T* G2 x! F7 ]4 ^; }$ L
  828. BNE Music_Increase_10* C/ A8 W. X) ]# }
  829. LDA <Music_Cur,X
    ' \: k- W1 V9 H3 a2 D# y/ _
  830. CMP #10
    % s; g8 j! X0 M. p8 |1 i
  831. BCC Music_Start_Song_Min
    4 D! w  c# J% u  w: ]; d  I0 V, F
  832. LDA <Music_Cur,X/ T* [+ [0 w8 T3 k) j. b1 Z
  833. SEC
    0 h8 e; ?% x! Y1 J  o! ~4 d. G* g6 y
  834. SBC #10( S5 X  E8 e0 ~* `% `
  835. STA <Music_Cur,X3 \- S/ F; S; c1 V# Z# u$ f
  836. LDA #$00* \5 X5 e0 W9 P3 J
  837. BEQ Music_Increase_10
    & Y5 T2 A! S( I& ]
  838. Music_Start_Song_Min
    6 h1 V: R8 j, Y) a5 G' l5 v7 [7 D
  839. LDA #$00/ q% a3 V4 b8 q! U
  840. STA <Music_Cur,X
    * x  K3 B; Y6 F+ ^
  841. Music_Increase_10
    $ t' ]4 [- `; E) e7 Y6 w
  842. LDA <Key_Once# T. A2 |; p0 W3 C. C' k
  843. CMP #$08
      I- T: c1 G. B) `; k; f7 L+ s
  844. BNE Music_Track_Change_End
    % Z* }6 e, H2 }! j  ^
  845. LDA <Music_Cur,X$ u& y; [' u! P. M& J
  846. CLC: U  u6 p) t7 u) L& o
  847. ADC #10- {# \: Y- ]) E. O
  848. CMP Music_Total
    2 p" P, K7 B; m' T8 `5 V
  849. BCS Music_Start_Song_Max; J( q$ W+ ^4 `1 Q% o/ {
  850. STA <Music_Cur,X3 u' H6 E: g, J! a! n
  851. LDA #00
    & P- y: N0 y* P) i
  852. BEQ Music_Track_Change_End
    : ^* j1 _/ }1 [+ O/ J' n. A
  853. Music_Start_Song_Max! @6 M0 j+ Y+ M) G8 X: ]
  854. LDA Music_Total
    5 y' G4 c, K- c* y6 P
  855. STA <Music_Cur,X% @3 {1 U' |' @) S$ C6 n
  856. Music_Track_Change_End
    $ z4 O% B& Y: ~
  857. RTS) z  o/ K% p" ~9 C, G

  858. 2 W% i& r5 ~. v9 C# a
  859. ;==============================4 o$ c: A* o: R/ L4 U5 o2 d& {
  860. ;按键处理2 [- v0 W5 i) P; ~( P* b/ ~: T+ D
  861. Key_Proc
    6 {% Y  k' e, X
  862. JSR Key_Scan
    0 Z8 m  G* j* M6 w; o7 X
  863. LDA <Key_Keep
    ' `# ^" {$ S2 C0 y2 P% ~: Z
  864. STA <Key_Temp1 {* X. \& t5 w% Q
  865. JSR Key_Scan
    % \5 V' e+ J5 P6 M7 D( y0 V& c: Q' Q
  866. LDA <Key_Keep' R% q7 |/ Z4 M8 m; \7 e
  867. CMP <Key_Temp
    ; n2 n' _' T5 c4 n0 @1 y* m& c
  868. BEQ Key_Get_Once1 u( W$ a% |7 @7 p5 W6 h1 F2 l
  869. LDA <Key_Kemp
    9 d, v3 J' _; A" }. D' `! n
  870. STA <Key_Keep6 E, b, s, e+ W& L' U, Z, e" O3 f
  871. Key_Get_Once6 [+ `! c* \3 h: g7 O- R" L
  872. TAY5 _, j7 C5 i. q/ ]/ y/ Y8 A
  873. EOR Key_Kemp
    - ^9 \) n' s/ T
  874. AND <Key_Keep
    ) {" v3 {% y# g- [/ [2 r
  875. STA <Key_Once5 F/ o; I) R0 p* @- G4 E, {0 e
  876. STY <Key_Kemp
    ' h" Q/ O$ T1 F0 ~7 B$ @3 ~
  877. RTS
    , e  q/ I9 u7 v4 f$ |
  878. ;------------------------------4 c" O( i! @0 d  _7 X* E0 d
  879. ;按键扫描
    % T3 Z: m6 H0 J- H7 p1 z" {' ?
  880. Key_Scan
    ( z3 X6 o* e- ~% G+ L4 n2 B
  881. LDX #$01
    8 s8 ?; f1 t* p: n
  882. STX JOY1_FRAME0 z- u8 ~; r2 G' d
  883. DEX6 b' s; g9 Z& `/ B
  884. STX JOY1_FRAME
    4 A$ D' X( n# P+ {" p$ n. i
  885. LDX #$08$ X! b5 U0 `2 G! F  |3 b
  886. Key_Value
    ; p  F& \! C! \; n6 {* z3 L# {
  887. LDA JOY1_FRAME* u3 y7 J. i6 B9 X% ?1 h
  888. STA <Key_Getv/ ?% Z- d+ X2 s# V4 C8 W# [
  889. LSR A
    7 d0 ?, K0 d8 P5 T% R5 J
  890. ORA <Key_Getv
    ) p% n" E5 Y" q2 H) w
  891. LSR A
    0 W* U6 r: o: Y4 T
  892. ROL <Key_Keep
    1 Y8 t2 g  f+ e- E" V7 X
  893. DEX
    9 y% w( b$ c. N) \% b7 b- h6 F
  894. BNE Key_Value/ @/ R7 c9 I- o9 y
  895. RTS
    2 n; M- B8 z% {& }( T

  896. 2 J3 T# O, y  T) b/ z1 y6 t# |
  897. ;==============================
    ' Y- G$ G/ Y# c1 b7 p& B
  898. .IF SOUND_BAR_SHOW_ENABLE2 Y$ O  x4 G+ y' G( A, x8 ^
  899. ;音乐条显示
    , d! N- `% _: F0 P8 X( J
  900. Music_Vision
    3 R. J% Y% \2 f* V( p! {' B* [: v
  901. LDA <Text_Disable_Flag8 p- D7 B& ~) T3 e. c
  902. AND #TEXT_DISABLE_ITEM# `0 F- N4 b) T  U# q
  903. BNE Music_Vision_End
    + @7 A0 S' L" z2 d0 I$ X, \
  904. AND #TEXT_DISABLE_BAR
      X. t& Y+ H2 P* ?8 c8 ?
  905. BNE Music_Vision_Set
    . U; B$ l: O' h# J) x
  906. LDX PPU_Cur
    # X. E- U0 c9 Z+ `4 O
  907. JSR Music_Animation
    # e" A0 P$ w4 j& Q, j/ d0 Q
  908. STX PPU_Cur
    , o4 m8 m  w  A% p( Q- V
  909. Music_Vision_Set8 G" o: F" p6 P* ^
  910. LDA <Text_Disable_Flag, p0 p. h' w+ a# R6 H2 v
  911. AND #TEXT_DISABLE_BAR ^ $FF
    8 I$ K7 x: _2 n9 r; n. s8 A+ c5 E
  912. STA <Text_Disable_Flag
    : D  a: D; w* Y  w, f# @  L" g& ?
  913. Music_Vision_End8 d" j) a, \8 m- ^4 Z
  914. RTS' T7 S+ w2 q  o6 D9 p  _5 n" k
  915. ;------------------------------
    - l& l, B0 ]* m4 Y; n2 W% X
  916. ;音乐条显示处理
    0 ^  G- G( }; Q- p; P
  917. Music_Animation& Q+ s5 ?3 _3 Q8 ]! H& K
  918. LDA #PPU_MODE_CNT_LINE
    ! K( U; Y4 `; I4 C% Z4 h0 }# J
  919. STA PPU_Addr,X
    ' f3 I4 h, R9 z! |& I' ~' I
  920. INX5 w$ ], ?; O$ N) q! @
  921. LDA #HIGH(Sound_Bar_Pos)* E; n* Y. V5 u. g
  922. STA PPU_Addr,X
    1 v) a) m) Z2 S- p( V  i
  923. INX1 Y$ K3 \! ?& u4 O. j
  924. LDA #LOW(Sound_Bar_Pos)
    6 S! {: y3 D, j2 g" @! u7 c6 a
  925. STA PPU_Addr,X; L( Q4 ~) B$ `6 H$ c9 A# A0 F
  926. INX
    " a, D& H  }1 q" f3 J- G
  927. LDA #$08* I3 O, |3 j) d# F/ i
  928. STA PPU_Addr,X# h6 x2 G+ ^( t4 k' g5 Y
  929. INX
    ) j$ D0 x9 ]( ^8 o& q
  930. LDA Sound_Bar0 l) N; g5 A' i% x4 K, F
  931. JSR Volume_Convert5 {" h6 ]. p& y% P1 P. w
  932. 7 B6 i& I- s5 A6 k: v# t
  933. JSR Volume_Set_Cnt; ?. ^/ g1 t6 K; P7 q
  934. LDA Sound_Bar+$4' Q8 K  j. ?: g$ D
  935. JSR Volume_Convert
    # n7 ]5 V) c* m4 s. R( z
  936. : T' Y" S( w1 A. a* F9 i
  937. JSR Volume_Set_Cnt) ~. c: O2 k/ W$ X
  938. LDA Sound_Bar+$8
    8 V. @7 k/ g% `  Z
  939. JSR Volume_Convert$ B( e5 z2 u' H6 c
  940. - p5 k5 h3 j6 [) {: b
  941. JSR Volume_Set_Cnt1 w7 ^6 e* Z! ?6 o+ S
  942. LDA Sound_Bar+$C
    / U4 ^* e+ d) v4 t1 k' c1 R. u
  943. JSR Volume_Convert: ^+ L% C" z' t$ H8 A5 D
  944. 6 I8 R/ P  q2 {5 X- x. U3 x
  945. JSR Volume_Set_Cnt
      G6 a( M5 C2 ]  o: p6 G; a

  946. 2 w& x' z* d3 B# k; a! ?
  947. LDY #$10
    : z" Q- e- I3 C8 I( `
  948. LDA APU_STATUS
    ; Y+ O# j6 ^' M/ L7 t
  949. AND #$10
    0 [6 F0 n, l; Y; m: T& }$ |9 z
  950. BNE Volume_Count( X" `  {- X  |/ T6 Y) s
  951. LDY #$00- r  U4 ~# q2 R7 r. y+ |6 |7 M2 D
  952. BEQ Volume_Count1 P* r: j: y8 S! c" k0 ^

  953. 6 A6 ~9 S& @% k
  954. ;------------------------------- g- v" c$ H) ]' u* \2 q2 J
  955. ;音乐条处理% i  D1 ~4 D6 u; v% {& H9 _
  956. Volume_Convert
    4 r4 m) F5 l3 X' f* Q$ |. |
  957. AND #$0F
    4 I* L) }) a% m
  958. TAY; b6 Z0 h* i( r7 n1 \8 w# V
  959. Volume_Count1 l7 q7 s- {, Z% y
  960. LDA #$08+ |6 ]( K" L- K' B" ~/ W
  961. STA Sound_Bar_Cnt
    ) W6 q& ~1 B* `  N
  962. Volume_FILL7 u: @+ }/ E9 Z* h) x7 W
  963. DEY
    5 a! E& J! s9 R
  964. BEQ Volume_Half
    4 y3 {9 w! C4 v8 ]- w: Y( `
  965. BMI Volume_Empty* {, @) q8 o) `1 k  I
  966. DEY7 o( a) H+ y1 X* P2 w
  967. Volume_Full  [' Y! n* T7 K- ]- ^; d. q7 M0 D
  968. LDA #$161 N0 d* ~( I+ M' G/ g4 L1 }
  969. BNE Volume_PPU
    % A; Y+ u  _+ `# }4 y9 i
  970. Volume_Half; R3 w3 Y! ^- z- v" M, y+ E
  971. LDA #$15! z3 L7 H3 I# x7 @5 D  n
  972. BNE Volume_PPU0 Y$ }' C6 |! n/ z" r) [3 s( f& y
  973. Volume_Empty! j& j. t; b+ v5 X
  974. LDA #$14# S5 L3 `+ y0 Z* B
  975. Volume_PPU5 }1 C; S3 L2 v: r. E: ~% a
  976. STA PPU_Addr,X
    4 H; O: c: V8 u% K1 H
  977. INX+ w% t, O5 n+ o3 S" c
  978. DEC Sound_Bar_Cnt! G1 o) G) b* ~3 b% Q9 l  `) x6 ]
  979. BNE Volume_FILL3 ?; a. p# P5 T; ?
  980. RTS
    7 j0 s6 ~0 A& O, F, _

  981. $ q% Y8 o7 ^) s& d5 m5 ]7 u
  982. Volume_Set_Cnt
    + y* E5 e. U- Z  }1 C- `" h( t
  983. LDA #PPU_MODE_CNT_LINE_NEXT. b/ s1 Y  e3 w9 w7 i
  984. STA PPU_Addr,X
    6 q* v. ]0 ~" l8 d$ Y; {' N1 |, q
  985. INX$ O, ?* ]" G. Z$ Y+ G6 |
  986. LDA #$08
    / A; Y4 z/ u1 P4 {/ b0 Q7 ~
  987. STA PPU_Addr,X5 d3 N1 c' o1 r5 _) H
  988. INX+ [1 |* j6 V& J
  989. RTS. R" x: {+ ~" a- Y" R8 x

  990. 4 |2 o* v% V, q: _) u
  991. .ENDIF' y3 h% z8 {" w/ A+ z
  992. , g  S  a% x/ ~  f/ U
  993. ;==============================. Q  T3 q/ O- P1 B2 z6 k+ a
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    4 Y. z6 _: _8 x  u
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式
    * f' Q7 n) j' W" X3 M9 N* a% J/ C
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    ; o! v; `4 S. o: l, L  Q! R1 _
  997. ;------------------------------- l7 v! @9 O) k5 e( E) u
  998. ;PPU处理4 i) n2 t9 h/ D/ \* K" p/ H# q$ g/ r
  999. PPU_Proc$ [3 |; S1 f3 w# g0 Y+ g
  1000. LDX PPU_Cur& ^0 Q% _8 m( d
  1001. LDA #$00
      r6 a- T$ L% ^
  1002. STA PPU_Cur1 i- r- B6 z  D# I* W# a4 `
  1003. STA PPU_Addr,X- ~% Z4 X7 m! Q- w
  1004. LDA PPU_Addr9 Z  P1 J$ x( j  W$ s/ G6 v
  1005. BNE PPU_Proc_Beg
    " p3 Y4 u' K( @6 V; g, [
  1006. PPU_Proc_Ret
    ! k0 w) M% _: n! \2 L! n
  1007. RTS. }4 v, A6 Q1 m
  1008. 2 \( `+ @9 k' n  ^) n) q/ t
  1009. ;------------------------------
    3 l5 X7 K5 j& J3 m. l8 C2 l: s
  1010. PPU_Mode_Return_Cnt  ;转下行模式% d" t1 M, l6 J7 X+ H# B; M, A; n
  1011. INX
    % i# M/ v) H# \$ L; w
  1012. LDA PPU_Addr_L
    7 A4 t! E$ a5 ?/ Y2 s
  1013. CLC0 @/ y1 r' X) |# s5 |( X* W
  1014. ADC #$207 [0 c- f( y0 R% D
  1015. STA PPU_Addr_L
    9 D3 y; R/ D7 ~% ]; L2 |
  1016. BCC PPU_Mode_Return_Cnt_End
    / [) z# v" c9 B7 G- Z) E
  1017. INC PPU_Addr_H; O/ |+ y' X, Z1 `, `; y
  1018. PPU_Mode_Return_Cnt_End
    % S8 F8 D! z2 r3 y! k2 x
  1019. LDA PPU_Addr_H' k6 h; X; [* s0 K, F
  1020. STA PPU_ADDRESS
    9 W' d  z" ]+ ^  ?# o& z# ^* t$ ?
  1021. LDA PPU_Addr_L! S0 W, [6 a0 R: |( K+ U4 f
  1022. STA PPU_ADDRESS
    " d1 C4 ?: E! z* u4 w: r
  1023. LDA PPU_Addr,X2 w1 P% l3 [- b5 Y, W
  1024. TAY
    % g* y) u: q% E8 o8 G3 c+ s: `
  1025. PPU_Mode_Return_Cnt_Write% D/ l7 `( Y- K
  1026. INX
    ' n0 W+ E( o& B5 M! r
  1027. LDA PPU_Addr,X
    + |/ F) g+ C! t) l  \: g
  1028. STA PPU_DATA
    1 W+ X5 M1 I) t/ |7 C" ]
  1029. DEY
    % I6 r# N( H7 j
  1030. BNE PPU_Mode_Return_Cnt_Write/ v6 a1 ^- f/ }0 [7 q( l
  1031. JMP PPU_Proc_End
    / _1 \+ T5 E3 G' z) z8 m$ C
  1032.   g4 B+ B( Z) ~5 H# j
  1033. ;------------------------------
    ( ]- d/ w) }! K9 D# e
  1034. PPU_Proc_Beg  ;处理开始
    % z, H9 k6 _5 Q# d
  1035. LDX #$00
      F" e6 d2 I, ^
  1036. STX PPU_MASK
    9 v* A# [. w; P0 D! g
  1037. ;------------------------------
    : I! c# k) S  p0 B
  1038. PPU_Mode_Select  ;模式选择' g# `6 F$ |1 N4 k/ ?$ r
  1039. LDA PPU_Addr,X
    , u/ e2 F, `) v& M- l5 Y& I
  1040. CMP #PPU_MODE_CNT_CLEAR2 G/ v( @  V4 A
  1041. BEQ PPU_Proc_Clear
    6 ]9 i4 U" ]7 Q9 k
  1042. CMP #PPU_MODE_CNT_LINE4 \6 S- {* a% i8 ^, G( b
  1043. BEQ PPU_Proc_Cnt_Line( _8 x' \: e8 v) [+ z- T+ b- c! U+ |
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    / V- @% B1 h( H% N6 ~! C- J$ L
  1045. BEQ PPU_Mode_Return_Cnt- E7 x  E# |! w5 Z+ ~
  1046. JMP PPU_Proc_End_Write4 B; k8 O1 ]! r, t6 n( S
  1047. ;------------------------------
    $ [# Q. z+ I2 M; S8 H# T5 o7 O
  1048. PPU_Proc_End  ;单行写入结束
    - C4 t) J2 [+ ]9 o
  1049. INX
    1 V- [# g; X3 k# R
  1050. LDA PPU_Addr,X
    2 P$ j. Y+ H" u) g9 w5 u
  1051. BNE PPU_Mode_Select+ B0 f  L/ f) b: K! O
  1052. STA PPU_Addr
      M4 \5 v8 d2 N* j
  1053. JSR Update_Palette_Color
    9 i, {% @* ?5 k4 R. V1 {$ g' V

  1054. . m) I, e4 @4 n( v5 E  C- n% z
  1055. PPU_Proc_End_Write
    8 F7 h/ Z1 B% |9 H; e
  1056. LDA #$006 J, i& A6 X8 q1 a
  1057. STA PPU_ADDRESS
    " r" u: ~! d/ B0 Q
  1058. STA PPU_ADDRESS
    $ W% A6 ^  J* R9 y% g% n. j9 C
  1059. LDA <Text_Disable_Flag
    ; ?' b! B5 p; o! c2 E/ w3 F
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    / n8 s  O; w6 ~: w4 ^5 ^
  1061. STA <Text_Disable_Flag  k( u6 X; T! L( w6 W
  1062. LDA #Scroll_X
      F+ b+ Q8 H% U! `3 Y, L2 t; Z; u
  1063. STA PPU_SCROLL
    $ o7 N& ^* E/ E- t5 K
  1064. LDA #Scroll_Y! A5 H7 U' N: K9 _+ t
  1065. STA PPU_SCROLL
    4 H! J- s1 N+ M
  1066. LDA Screen_State: i/ b" P+ `  t! c  R6 M
  1067. STA PPU_MASK
    7 T* b( m0 v3 a
  1068. RTS; Q, u( G- P) h
  1069. $ ~* S$ `: `$ T& ]3 H% T
  1070. PPU_Proc_Clear# m: I/ x+ g  x' |2 ^8 K2 m
  1071. INX
    4 Q& I# e  I- k2 k/ `
  1072. LDA PPU_Addr,X" V- ^. |2 p, G4 w
  1073. STA PPU_ADDRESS
      w+ X" b& |+ U. _  T, o9 O8 t
  1074. INX
    ; e1 T; |$ ~& P2 q; J8 Y: {  f
  1075. LDA PPU_Addr,X* V1 R% ^; @" c6 c
  1076. STA PPU_ADDRESS
    * c9 K" \( [- b, @* a: O% f' _9 o
  1077. INX; n! l5 V  _3 k  i% a" a
  1078. LDY PPU_Addr,X
    + i2 k6 _( _' `. i# V. L% _! C
  1079. LDA #$007 Z2 Z$ ~1 d. w- c7 i: s
  1080. PPU_Proc_Clear_Write) Z# ~: ^5 l' A3 B$ \
  1081. STA PPU_DATA
    5 ~1 _: d6 i8 n5 c% t( u
  1082. DEY
    6 [- O0 z) x& `! G
  1083. BNE PPU_Proc_Clear_Write
    2 h! k. t9 i9 u1 q  U# U( J! g5 b
  1084. JMP PPU_Proc_End
    ( k9 B& H# ^, {4 Z% f
  1085. + ?% K6 z& `+ k' q6 y
  1086. PPU_Proc_Cnt_Line( B# r+ c; R: i; E! C
  1087. INX! N/ Z  G1 o3 k4 L
  1088. LDA PPU_Addr,X
    ' ^3 W9 W9 R' Q& j
  1089. STA PPU_Addr_H
    - z6 A" M+ y# h5 \) E$ L: {3 S- L
  1090. STA PPU_ADDRESS2 z4 T, S9 U( H5 c3 o7 @5 `
  1091. INX  o) h( C- D" M6 o$ W: }
  1092. LDA PPU_Addr,X
    5 {" a% S* `4 i: F
  1093. STA PPU_Addr_L
    : d! K( b5 {& Y. [1 v2 ~
  1094. STA PPU_ADDRESS
    # N3 M; {6 ~6 O6 e
  1095. INX
    . x' y- ?7 ?2 Z
  1096. LDY PPU_Addr,X
    ) W3 j& P3 }% c3 L1 D: ?% P
  1097. PPU_Proc_Cnt_Line_Write
    ) R: ^) l$ [9 w' J0 S2 k% D
  1098. INX
    - O6 Z" G: q7 C$ U
  1099. LDA PPU_Addr,X
    ( i$ a/ g/ h% |% R1 |1 N) V
  1100. STA PPU_DATA
    ( W2 ~, N! `* J* x- k* e3 f2 @
  1101. DEY$ h4 \3 A; N1 u  T1 J: r( U
  1102. BNE PPU_Proc_Cnt_Line_Write
    ; L* J2 ^& F- {5 X
  1103. JMP PPU_Proc_End
    1 ~2 l/ ~/ J! l$ _

  1104. " k! D' o7 y( f' s  F! T
  1105. ;==============================  f! h. K+ ^) M
  1106. HEX_To_Dec;十六进制转十进制- [! u6 X1 C/ P# E
  1107. STA <HEX_Data
    + Y2 v. \  |% ?2 `, q
  1108. PHA
    + @' f2 c( N" a1 r% u# U4 C
  1109. TXA
    7 E' G5 l8 W) n3 M% l
  1110. PHA/ a/ f; k5 D6 M" j& m0 ~' {, m
  1111. LDX #$00
    ; {7 v1 }$ w, G
  1112. LDA #$008 I* n# l' p4 {  ~1 K
  1113. HEX_Cln
      Q& E1 ~, ]1 t! p- P) L, e
  1114. STA <DEC_H,X% T' B( ^1 q/ r) b/ ^
  1115. INX
    # T! \* G+ p& v- E: V; q7 x
  1116. CPX #$03) b4 _3 q4 v! c# v! k5 t4 O/ ]8 _. @$ I
  1117. BCC HEX_Cln+ A5 ~; S8 f! |& v# D  l8 r- D
  1118. LDA <HEX_Data
    1 X7 ^" d) w+ {$ ?! H
  1119. ;------------------------------6 _5 a5 L1 |" b8 F6 L+ S
  1120. HEX_100
    / X* f  f; l7 b) a0 O
  1121. CMP #100, C& ~. u. b# a$ r$ R% A2 O
  1122. BCC HEX_10; X$ p7 L7 a+ U
  1123. SEC. c* t. k: {- M% y" p
  1124. SBC #100
    , t& t2 l& D0 X7 v
  1125. INC <DEC_H
    & {3 M9 [, P4 Q. I4 z  B) |
  1126. BNE HEX_100
    + P2 y+ s2 Q" T2 W" Z
  1127. ;------------------------------
    . B' y/ X8 P' Q
  1128. HEX_10
    9 e$ N5 q* n1 c4 R9 P
  1129. CMP #10, r; y4 O+ o0 b( T' p
  1130. BCC HEX_16 _) b4 f( N/ g, {' {5 k; \9 D
  1131. SEC. Z  f7 T0 W+ W/ F
  1132. SBC #10
    6 Z4 L1 {  k7 t
  1133. INC <DEC_T
    0 n' V. a% p; {( b3 I
  1134. BNE HEX_10) i7 {4 @/ k) {% n9 O* O0 K' S# J
  1135. ;------------------------------
    - V/ ~$ z2 W" t8 G7 K
  1136. HEX_1; E; Y" K5 B/ z- \  V3 X
  1137. STA <DEC_L/ n; C, \# ~7 T" _
  1138. PLA
    ' @4 M4 _, o; v* y$ o
  1139. TAX
    2 J' R5 Z9 b% A: d4 \% U
  1140. PLA+ r5 ?+ ^4 u8 Z, m  I
  1141. RTS
    $ @) p- ^2 B; `. L- u
  1142.   A7 Z2 t2 {# ?4 m: l! C+ u
  1143. ;==============================* z( ?0 x3 T* {/ t5 z$ S
  1144. ;音乐曲目显示
    ! ?5 {# J& ^; j$ U/ z+ q% A
  1145. Music_Show
    1 O6 s& B( v2 b0 m) i! x4 k0 H
  1146. LDX <Music_Item_Cur
    / `) r( T/ n/ k1 y- ], V- x
  1147. LDA <Music_Cur,X6 _  n3 e6 ]  a) g# S# K& `8 e
  1148. CLC) ^0 h% Y! _8 V
  1149. ADC #$01) d  R( ?9 W; f) U- P6 x: L' C
  1150. JSR HEX_To_Dec6 w/ G  W0 W% U0 s
  1151. LDX PPU_Cur& n/ e  J) i. Z9 _& \
  1152. LDA #PPU_MODE_CNT_LINE/ L7 b- Q  _9 W& `/ \
  1153. STA PPU_Addr,X
    - v2 V# ~& R7 n- `" a
  1154. INX  Q" R, n* a- o4 D- U$ ~) C
  1155. LDA #HIGH(Play_Index_Pos)
    1 N0 M! r  o: l6 j1 ~
  1156. STA PPU_Addr,X' Q5 s6 D8 \/ `' Q$ U. z) H
  1157. INX! V4 u) z1 f/ d% ]$ M: e$ J
  1158. LDA #LOW(Play_Index_Pos)
    4 I3 y, K1 X0 c% z8 G  S: s* h
  1159. STA PPU_Addr,X
    8 Y2 D) v# c7 c7 D
  1160. INX
    * j& e, d; s! Q9 r! \
  1161. , ~) M9 t5 {  L& R6 s
  1162. LDA #$07/ `' @2 p1 |0 T0 J: N. P: A
  1163. BNE Music_Show_Length
    . r6 `& K( T) V2 O
  1164. / l, ^0 V5 j# f) ~4 H% u! e* A* D
  1165. Music_Show_Length8 {; k" o/ c, ]1 D8 s" \: i
  1166. STA PPU_Addr,X, o* ]) x0 U" u+ \) c% A6 O" Q
  1167. INX( R6 }/ C1 x/ k6 {7 p& {$ E& B
  1168. - X3 f4 F" I, e$ Z; B9 ?
  1169. LDA <DEC_H
    * `  @& l$ [$ B' _" R& J
  1170. ORA #'0'+ z2 p* l% z+ s9 m
  1171. STA PPU_Addr,X6 T. P+ @5 D+ ?
  1172. INX6 ?1 |8 Q1 l$ E/ O# k

  1173. % K0 O' E9 v% U  c; N( ]3 ~
  1174. LDA <DEC_T: P; Q) u" q4 n
  1175. ORA #'0'- ~9 l5 i" e, s5 W
  1176. STA PPU_Addr,X3 l' n2 T; g+ ?( V
  1177. INX2 P9 F1 Q# G4 w6 c, o

  1178. + H5 J7 Q' g+ @3 l
  1179. LDA <DEC_L
    ' x' A6 i2 Y* {3 _: P
  1180. ORA #'0'
    6 l8 D1 B0 R" H9 J: e# w
  1181. STA PPU_Addr,X
    ! @8 d: ~, W2 B9 o% I: a
  1182. INX* d# U* b2 E* @( x- r, k

  1183. ( \5 Y) b5 @3 U, F
  1184. LDA #'/'
    5 V; d% p8 ]: M* Z$ a2 j
  1185. STA PPU_Addr,X
    ( j+ }. C0 Q4 {. Y4 g" s5 u2 P
  1186. INX
    $ ~3 e0 N; v) k& e3 x- ^$ }
  1187. Music_Show_Total
    7 u( Y, `/ n# \$ x
  1188. LDA Music_Total4 H0 A  C. i. q& V/ K
  1189. CLC
    % K8 \! U1 ^4 C7 m3 w
  1190. ADC #$011 T1 R9 ^5 e6 K3 d
  1191. JSR HEX_To_Dec
    9 j. N% [/ U8 |8 V0 n8 h/ ^  S# `

  1192. 8 t) u7 u, w, T$ p
  1193. LDA <DEC_H/ i- X% l1 A4 V
  1194. ORA #'0'
    , b4 Y' ]) n/ S7 L, j( }' l
  1195. STA PPU_Addr,X5 n! P8 D3 |1 W$ R. K( m( X% G
  1196. INX5 e) b4 `( Z1 f6 U

  1197.   P2 ]) H/ V  F4 s# t3 t2 O2 V
  1198. LDA <DEC_T# R. g6 @. h$ A1 p( m
  1199. ORA #'0', r7 p5 L! p+ X& _
  1200. STA PPU_Addr,X
    . W/ {. e7 D; Z
  1201. INX
    9 q! I3 W! ^. f- @# M3 l0 X, _7 Y0 ]6 r+ h
  1202. 4 p( B6 c% u+ _2 |/ h  D% R
  1203. LDA <DEC_L- u" g( B" a5 [0 e* _# A1 k+ y
  1204. ORA #'0'+ C# U' }+ V; R( w( \
  1205. STA PPU_Addr,X# I5 l& E4 h2 F7 p3 {  @
  1206. INX, n; ?4 R/ @( g' ?6 U. y
  1207. * X% F. g& U. |- c
  1208. STX PPU_Cur8 R7 q" n: V' y) l3 a1 c/ R
  1209. Music_Show_End
    + n  {5 K3 _' Y
  1210. RTS
    " ?; ]. ~+ z2 k9 i# |% P% t8 K

  1211. $ [: b2 ^9 W' J, m
  1212. ;==============================$ t7 U2 f& `- a( p* w( `
  1213. Time_Show;播放时间显示2 L- @2 {# L  l
  1214. LDA <Text_Disable_Flag
    7 ]9 a- {, e4 |. w5 y8 J
  1215. AND #TEXT_DISABLE_ITEM
    3 I/ r/ q- @, n$ l, S* l1 t; t9 Y
  1216. BNE Time_Show_End
    ) s9 D/ x' M% T" ^, {$ |
  1217. AND #TEXT_DISABLE_TIME
    - K: U) f& L5 |) [4 f8 W
  1218. BNE Time_Show_Enable9 E7 T  N% h( j$ @. {

  1219. : B6 J9 F5 y* a( ~' L7 Z7 q$ D
  1220. LDX PPU_Cur
    / u! k$ w3 a/ ?0 K0 j. h
  1221. LDA #PPU_MODE_CNT_LINE
      @8 Q2 o; E$ t. I5 m9 _+ v
  1222. STA PPU_Addr,X+ r& F9 u7 B3 f9 W/ ]6 }* R, N
  1223. INX
    & n  K; j3 o# I% g  q, q! U
  1224. LDA #HIGH(Play_Time_Pos)9 U1 G1 y1 R2 T9 T: F9 k: V" p+ }: I
  1225. STA PPU_Addr,X% N1 l) z5 s7 @$ i+ d3 v% D% b8 v
  1226. INX' S$ t) d( M: K
  1227. LDA #LOW(Play_Time_Pos)6 d8 ^4 Q& K: b
  1228. STA PPU_Addr,X
    , j* X+ U$ G" {- a6 ^- u  M' H
  1229. INX
    % t- g' T3 H! O# N6 D3 q) Q' K3 {
  1230. LDA #$08' f  c7 W* r( {" T. G) w8 B: z
  1231. STA PPU_Addr,X
    ) n9 E* l" {: a$ s  W
  1232. INX
    7 }, W  [4 B; V. C5 @4 d
  1233. Time_Show_H
    3 j. }3 j( N& l1 E1 J2 M
  1234. LDA <Time_H6 P4 x% |' w2 \) L% f
  1235. JSR HEX_To_Dec
    & B: @1 i9 b' w1 G+ N) K0 n. V" \
  1236. JSR Time_Digit& N4 A+ D0 H& C9 H8 Z
  1237. LDA #':'9 u4 \4 W; @2 T6 F
  1238. STA PPU_Addr,X
    - X" W1 W1 ^: r9 L; G3 V
  1239. INX
    8 X) x3 D! E) g2 b/ o% `% \
  1240. Time_Show_M8 b$ J- X& W  E6 ?1 s1 a7 }, Y6 [
  1241. LDA <Time_M
    ( A# Q" R" g8 H$ |
  1242. JSR HEX_To_Dec
    2 ]" F9 u  |1 B* W* J$ F% ]# G' F/ \
  1243. JSR Time_Digit
    4 B8 E) X4 H! r. H) r2 J5 D
  1244. LDA #':'. f0 x) V' o& @, ~& d' F/ ]8 D! N7 t0 L
  1245. STA PPU_Addr,X' E* m  z: f2 n2 y8 k
  1246. INX
    ! Y. I9 s; W7 y& l8 |# @) ~! F
  1247. Time_Show_S
    3 [  R* y1 X! b* [2 w- K
  1248. LDA <Time_S; l1 Q: h) E* ?( M+ y8 _; b
  1249. JSR HEX_To_Dec+ b0 B1 C6 z3 ~5 e  A' N6 ]; V, w
  1250. JSR Time_Digit
    $ \2 @+ E& G- E% v7 G
  1251. STX PPU_Cur
    : l& c' K2 W% N: M" I& K5 b. q3 Y
  1252. Time_Show_Enable5 j7 f4 V0 _' ~, P, X3 G
  1253. LDA <Text_Disable_Flag
    7 @+ ^# T- L5 O: s2 K9 @
  1254. AND #TEXT_DISABLE_TIME ^ $FF- E9 n: ^9 F% ~
  1255. STA <Text_Disable_Flag
      `, m; {3 |4 h! H0 V& B
  1256. Time_Show_End3 o2 W0 _7 B& J3 f7 ~0 q. B
  1257. RTS
      A# |& `# ?3 A( c: f
  1258. * l6 Z5 h& Z) m1 f% d! V
  1259. Time_Digit
    $ n  a8 G% I5 `7 ~
  1260. LDA <DEC_T
    * @% r' A7 T+ N# W! Q8 m
  1261. ORA #'0'$ k) F+ w) d% [0 [* p7 R
  1262. STA PPU_Addr,X
    " h1 e; `# b% p" r) W2 ?9 [2 j
  1263. INX
    8 u' E+ U2 g0 l! o& g; v( u8 v
  1264. LDA <DEC_L
    7 Z+ D6 O+ `3 g( A8 d. _
  1265. ORA #'0'. e4 R& Z  K8 w+ D- D
  1266. STA PPU_Addr,X: y! L; A( l+ d) r5 D5 M* x
  1267. INX
    & p6 s. a, Z4 }) t6 B5 f( I$ v
  1268. RTS+ G& S6 P9 {0 H/ W$ J
  1269. 7 V& }( C  i6 `* O5 Z
  1270. ;==============================; k# ~9 c9 {- g6 d' h  `  p
  1271. Time_Count;计时
    8 ~! s. F4 z: }# o" ^
  1272. LDA <Music_Stop_State7 s* Q/ b# C+ b$ s
  1273. ORA <Time_Wait_Cnt
    " F8 M# P/ Q3 Y1 ^; @2 X- g. Z
  1274. BNE Time_Count_End
    3 D+ v8 R+ j+ V% R% ?! z
  1275. INC <Time_Cnt7 a# j1 r- B5 ]" Z
  1276. LDA <Time_Cnt
    0 C$ {% B! u' J, t$ e$ I
  1277. CMP #60: @% x/ W0 m4 V& y. |
  1278. BCC Time_Count_End; T3 \% D! D. J9 E6 U7 b
  1279. LDA #00# W" z) Z3 J5 _% }7 a6 p" J+ d
  1280. STA <Time_Cnt6 h5 G; X; ^4 P0 h$ v* u0 M  C
  1281. INC <Time_S
    2 r5 a2 z# S: j2 v* `3 o% Z

  1282. + e4 w: q( w) L; c% n% c, Q/ n6 x
  1283. Time_S_Cnt: _! M( J- D( {. T8 b& x
  1284. LDA <Time_S8 }1 q# R+ s* i  z
  1285. CMP #60
    3 l! `# N5 a; S; b( u
  1286. BCC Time_Count_End2 W) T& l6 r! H7 ]3 P3 V8 ?  M
  1287. LDA #004 y0 p3 L- f( _) h; J9 [' l3 J
  1288. STA <Time_S' g; H& r6 x$ v7 A: Y
  1289. INC <Time_M
    0 F+ u% F+ c- s( y/ K

  1290. 4 |3 c: H" t1 _' }
  1291. Time_M_Cnt
    ' R9 A' g7 R; Y; r% J( }
  1292. LDA <Time_M# G9 z4 O1 I( j5 c1 L
  1293. CMP #60
    " Q& ^* y9 x+ C
  1294. BCC Time_Count_End
    & Q, z7 O/ P, I* s2 o
  1295. LDA #00
    0 z" a# V: J0 r% |; E5 g
  1296. STA <Time_M
    5 P. r. z% ~5 u
  1297. INC <Time_H
    ) J5 s  q  V0 B  H( u4 A2 Z4 r
  1298. + y7 S, B  _( t4 O3 Z% w
  1299. Time_H_Cnt4 z9 M, t5 E( E2 ~
  1300. LDA <Time_H
    ! J6 L+ L' L  I5 V; p4 W+ E6 k
  1301. CMP #240 [1 X) v) k1 z- e8 j  e- L  W. z0 X
  1302. BCC Time_Count_End
    ; z2 v% I7 c* M- U6 x, C: P& Q
  1303. LDA #00
    + N# w/ ~: E; a4 ?+ |. k; L
  1304. STA <Time_H! q* ^9 [+ H6 U* w: D* s

  1305. * X/ [( H* y6 _& [) X; e
  1306. Time_Count_End( I2 [4 t# s2 M5 u7 M5 e2 ~
  1307. RTS1 d) ~8 Y, G6 p, O: t) |

  1308. # w( j$ A7 y7 `' M- Y2 @3 B
  1309. ;==============================$ L1 m1 t. m1 y8 n+ g$ Q
  1310. Time_ReSet;播放时间重置
    6 S5 N; ]8 |' |+ W- e3 K2 v
  1311. LDA #$00
    - A( s- T+ P( y, f9 u
  1312. STA <Time_S
    ; k  S6 T2 G1 B# c
  1313. STA <Time_M
    ( `5 s4 W' R/ Z( T7 |$ O' U
  1314. STA <Time_H
    $ g  F: D, t$ m$ x" [7 F+ q
  1315. STA <Time_Cnt+ [6 `( {% i$ E. Z$ }
  1316. RTS
    $ V5 i6 x& S* O" O

  1317. & L8 J1 n7 H$ D
  1318. ;==============================6 k$ K! _. F2 }* |$ `5 g9 J
  1319. Music_Bar_ReSet;音乐条重置* l  N8 O, b& E: S) V3 T: O1 F
  1320. LDA #$00
    1 C+ [* U, {6 s3 Y
  1321. LDX #$00: e3 o5 j6 l6 R- S2 Z! e
  1322. Music_Bar_ReSet_Set+ `/ W# E' I/ O) Z6 G. ~7 C
  1323. STA Sound_Bar,X+ v3 R# m' t* h6 \
  1324. INX5 \& d- S. s+ K$ }9 L  V. M
  1325. CPX #$10
    / L& \) o0 Q+ p2 e0 h* v
  1326. BCC Music_Bar_ReSet_Set
    / ^7 q' J  W9 g9 M" j
  1327. RTS
    + s3 s+ `$ a+ F
  1328. ( w, ^+ B- v: ^; y5 I
  1329. ;==============================
    3 x( \# ~7 t9 q
  1330. PPU_Data;PPU数据写入
    : j+ `% v" f% A( N  v
  1331. STY <Data_L# _, B; J1 n; n! U( K; _
  1332. STX <Data_H% o1 K1 @) f, B" M
  1333. LDY #$FF
    , ]& N6 Z1 v' S) y0 @/ g
  1334. LDX PPU_Cur
    2 I9 M& d5 V: W2 P$ }& y0 O
  1335. DEX
    1 W& a" |! m! r+ p9 b# @
  1336. PPU_Data_Beg
    ) Z, @/ x' x5 ^) g- F
  1337. INX
    " }8 G6 c2 E3 N7 L4 u; T) u
  1338. INY, L+ v( ~5 L$ w
  1339. LDA [Data_L],Y
    1 I" E% \; \. i7 T+ V/ }+ l
  1340. STA PPU_Addr,X
    ; @9 S0 L9 c. M: u: g  S3 f& T0 t
  1341. BNE PPU_Data_Beg
    ! g6 L' t4 u7 X2 ^$ ?
  1342. STX PPU_Cur
    9 ?1 r* |9 U4 N( l" e$ ~/ ?! r1 n/ l
  1343. PPU_Data_End$ _+ S' `4 B7 F* n* t: a2 p
  1344. RTS- l: \+ D/ H7 F$ d0 y# F

  1345. + n, n# Q5 [3 x
  1346. ;==============================* i, R4 ]5 {& Y
  1347. Music_State_Show;播放状态显示. C7 H2 g/ Y  Z" i$ W6 }. o
  1348. LDA <Music_Stop_State
    , r- F/ E6 b+ ?
  1349. BEQ Music_State_Show_Play
    ' g! \6 Z. Y3 D! N% q' M! L: z0 k
  1350. Music_State_Show_Stop
    * X. M9 v* j* V7 G6 u( n
  1351. LDY #LOW(Music_State_Stop)
    ! w! y5 n- n& s- ]& i
  1352. LDX #HIGH(Music_State_Stop)
    & Y2 D0 j; I" q, w1 x1 z7 J+ `1 G
  1353. JSR PPU_Data
    % n8 Z7 i: l4 E4 _* A
  1354. RTS- w0 u) J+ M1 L  ~# Y3 F
  1355. Music_State_Show_Play
    1 N& W" l  S' `9 j/ }
  1356. LDY #LOW(Music_State_Play)
    ! A2 `9 I) m( w
  1357. LDX #HIGH(Music_State_Play)  S; f' s1 _0 a# s9 S8 a- @
  1358. JSR PPU_Data3 Q3 y; L+ ~3 R
  1359. RTS! |% ?' S3 W/ x; ~1 z7 [2 ]

  1360. + P( L: q: q( |2 Z+ c  u% H( }; Z
  1361. .IF SOUND_BAR_SHOW_ENABLE
      R( J$ G8 I' n- K
  1362. ;==============================
    ( D& \) w% S- ^5 l4 \0 T
  1363. Sound_Bar_Text_Set;标题与音乐条初始化( W3 Q, x1 U  G! a' n3 L) K3 v
  1364. LDY #LOW(Sound_Bar_Text_Data)
    $ z* l9 B8 {' |4 y" j" K2 c) Y
  1365. LDX #HIGH(Sound_Bar_Text_Data)& e' ?* d( u0 ?. ]) r& g* E# a
  1366. JSR PPU_Data
    % ^/ B/ `  p! V( _- T- ]# f
  1367. RTS& Q& [* o  A% ~2 Q7 w+ m  m

  1368. . i6 M9 m4 f- y
  1369. .ENDIF
    8 ]% l; x: E' S2 `) W5 }! a! c, H
  1370. 7 U2 c2 L3 {5 X. l
  1371. ;==============================) ?$ \' K9 G% m1 i7 \% X
  1372. Set_NameTable_Attributes;设置命名表属性
    0 x+ L1 {- {& g
  1373. BIT PPU_STATUS6 f( l9 V/ |# \2 W7 g
  1374. LDA #$23
    ( \7 B5 T3 g5 F9 s, k
  1375. STA PPU_ADDRESS
    # K. q& E/ d1 t2 c4 g
  1376. LDA #$C0
    8 e$ e3 x7 X) [" s: L) C: z1 t6 T
  1377. STA PPU_ADDRESS
    ; g# P. _: D3 V
  1378. LDX #$00
    : q; k5 d/ D9 k  a( o/ `
  1379. Set_NameTable_Attributes_Write5 r7 R/ m9 n' K% V  X5 I
  1380. LDA Palette_Attributes,X
    ; S+ Y6 l% E# U. X
  1381. STA PPU_DATA: Y1 ~! Y, {4 h* g- Q' ~5 s
  1382. INX
    & W/ [# ?. V! H9 Q
  1383. CPX #$40$ @* l; c/ M/ B$ ~& R
  1384. BCC Set_NameTable_Attributes_Write  c$ X0 O8 g2 [; G9 d
  1385. RTS8 q* n6 f% y1 ]# p8 o5 c& |' ?( d

  1386. ; k: E. n' p& v! N! M
  1387. ;==============================% C2 ~9 U5 T( B; T' u2 l% F3 b
  1388. Set_Palette_Color;设置调色板数据5 [7 ~- U6 g# l, H: M: X
  1389. BIT PPU_STATUS
    4 ]  c/ T$ z% f: e# s
  1390. LDA #$3F8 S" C; F; j; O0 ]7 K+ h0 o/ c9 |  M& W
  1391. STA PPU_ADDRESS3 E. [' R0 Y0 A; Z
  1392. LDA #$00
    ( Z9 ~" j5 b8 X: \# z3 o6 e' S3 P% X
  1393. STA PPU_ADDRESS6 e, u& ]9 r9 P: [2 q0 t& r
  1394. LDX #$00, P+ r) a$ {) O2 g7 k
  1395. Set_Palette_Color_Write- T: I. G6 h+ w1 t  C
  1396. LDA Palette_Data,X
    ' t, R2 M) L0 n* S9 t7 i
  1397. STA PPU_DATA
    ) W: L9 [' b. Y; e5 x
  1398. INX
    4 M' V4 ?+ P( j! z& c) m, G" ~
  1399. CPX #$20" L) u, k: e& _: A2 j0 `' ]$ t
  1400. BCC Set_Palette_Color_Write" r! a  P9 _* ?  \* _( i
  1401. RTS
    7 {, W4 `$ m5 `# l  h
  1402. / x0 o: ]9 O  S" ]* Z7 ~
  1403. ;==============================
    8 t- A/ e+ `+ q2 S) Q; Z
  1404. Init_Palette_Addr;初始化调色板数据
    / S, M1 l, J7 i8 l! @3 U, g5 \
  1405. LDX #$00( b! y. f1 Z4 r! w6 @! Y2 p
  1406. Init_Palette_Addr_Write- _4 L) Y$ X* \/ O# E
  1407. LDA Palette_Data,X
    7 ]* a6 W& r2 I# @# _* L+ ^
  1408. STA Palette_Addr,X
    4 o9 C5 ]5 ^+ e, r, ^0 z' n5 N; R5 T* A
  1409. INX5 T7 K- K4 F( V7 a/ o4 W9 o
  1410. CPX #$20
    + E) h% R. `9 v5 Z/ l+ a1 a# Z1 w
  1411. BCC Init_Palette_Addr_Write
    ) q( Y' J9 d* d/ g2 Y
  1412. RTS
    ) B, v# B3 g* v  ]2 i6 W. ~( U; q
  1413. 9 k$ Q# e; i' C3 ^( e/ x
  1414. ;==============================7 l6 d# d4 ^' Y2 \7 a
  1415. Update_Palette_Color;更新调色板颜色
    " b) F7 i) Z4 ?% o# P- ]' g" ~7 N
  1416. LDA <Palette_Update_Flag* f/ c( m1 f4 V% q7 v1 T
  1417. BEQ Update_Palette_Color_End
    5 ]8 q6 ^2 g, x# W- g) G
  1418. LDA #$3F2 g) [6 P+ x, [5 d) ]4 J
  1419. STA PPU_ADDRESS
    0 z/ v& E% F0 E$ g- N6 i
  1420. LDA #$0C
    : ]. M" R' W: d  ?4 Q
  1421. STA PPU_ADDRESS  I0 n0 m( s: N0 V* l! V2 ^+ b* H
  1422. LDX #$0C. y$ U% d$ I/ K3 P  C/ j8 U- b; A  i
  1423. Update_Palette_Color_Write& s# p; S/ U! @2 O; K# _
  1424. LDA Palette_Addr,X
    5 Y2 [0 @3 m+ c% q
  1425. STA PPU_DATA
    5 O/ J4 C* ?0 |% n, j6 S
  1426. INX
    # p) U6 B8 E! ?' k0 J; e  B
  1427. CPX #$14
    3 Q3 N! C  _/ J% j7 B5 i- d$ q
  1428. BCC Update_Palette_Color_Write
    & b- M9 f6 a$ T
  1429. LDA #$00$ \( D' z0 x' z2 ]+ u! w, b1 c
  1430. STA <Palette_Update_Flag7 q9 ?' e  s" u% I( J+ S- x
  1431. Update_Palette_Color_End
    ! k1 }8 r( J5 [8 R( C- S
  1432. RTS
    & ^( B# T/ I  S5 c. Y
  1433. / C9 F$ t/ l, E

  1434. $ }7 |" m8 y$ V+ X- c' W) [
  1435. Update_Sprite_Palette_Data
    4 {! S+ C( l3 z7 _2 R! ?/ W
  1436. .DB $21. z* j" d+ x5 u" q- H  ~0 q
  1437. .DB $21
    : r3 n8 t0 T) j9 v
  1438. .DB $11
    ( A/ Y' t3 z2 Q. U
  1439. .DB $011 G  `9 ?6 b) Z# ?
  1440. .DB $01; ]3 s# R6 S2 {+ K1 F; i2 P
  1441. .DB $11
    8 o# g& H0 D. Y
  1442. .DB $21
    3 W" v$ X. ~3 m! e) D' o
  1443. .DB $21: M1 q  Y- a, q, g% ^/ l
  1444. .DB $119 H/ J: K6 `! P3 o
  1445. .DB $01  ]& }( h- L* ^' v
  1446. .DB $11; u# v) m/ a' I! K. P
  1447. .DB $21- e3 c3 N+ k, y- A* \: E$ n
  1448. .DB $21) X" s/ S! g# H! M3 l7 q6 I, f
  1449. .DB $11
    ' b3 G4 m' k8 w; a% }
  1450. .DB $01
    7 g( }& P5 C7 `! C. p
  1451. .DB $11
    * v1 d# a; D  h
  1452. ;==============================: H$ m1 M' R2 e1 u. n9 ]6 ^5 i
  1453. Update_Palette_Data;更新调色板数据
    ) H4 X% |) U' m, |) v( y& M3 H
  1454. LDA Nmi_Time_Count
    9 U9 D) j- `$ m7 q; H7 k) r: d9 ^
  1455. AND #$08( R! |- Q" p9 `8 M5 {- v! O
  1456. CMP #$08
    4 K* `# b* s; Y* a9 @
  1457. BNE Update_Bkg_Palette_Data& \( g8 D; O, f' \4 b* K

  1458. 0 o% S4 J: @7 @, \5 i3 k
  1459. Update_Sprite_Palette_Data_Set5 \! s$ [* g- V& i+ @% u
  1460. LDA Nmi_Time_Count% Y- ^, S1 X9 f' d) ~. d. |
  1461. LSR A
    7 c6 X6 ~1 I  M  E
  1462. LSR A* X+ U! c9 t+ E( l. W
  1463. LSR A6 d2 R4 n7 V$ F8 q6 e' _
  1464. LSR A
    * |- H. S6 m) g& C8 Y0 a3 C
  1465. AND #$0F
    - J7 T* A* n! ^- z+ H
  1466. TAX
    & [. K8 P- k+ ?0 B
  1467. LDA Update_Sprite_Palette_Data,X7 `3 G+ l7 i5 L  }1 P1 R
  1468. STA Sprite_Palette_Update_Addr
    1 h1 H" d) a% f; A
  1469. LDA #$01( n1 A6 b4 X1 e- Z( Y$ \
  1470. STA <Palette_Update_Flag
    1 z2 S( n! d9 n8 r+ X. g$ N: _
  1471. % V+ Q5 g+ g' A- F( N* W
  1472. Update_Bkg_Palette_Data
    % R- T: G1 E! `6 f
  1473. LDA <Text_Disable_Flag( M- Q. T% M3 ^5 p4 T0 b  X" @
  1474. AND #TEXT_DISABLE_RAM
    ! W4 {) s- u/ ~
  1475. BNE Update_Palette_Data_End
    6 g+ b8 h7 |' y
  1476. LDA <Music_Stop_State$ [+ H% o. H+ K; |7 W. |
  1477. BNE Update_Palette_Data_End
    7 p: c1 A  J, {5 K# u

  1478. 8 T. A) X5 X9 A& g
  1479. Update_Palette_Data_Check
    8 y$ l+ X1 N( A( @' w3 t  t
  1480. LDA Palette_Wait_Cnt
    . N- S0 ~/ n8 G2 k+ s* U) ]
  1481. BPL Update_Palette_Data_Check_Over8 A) E0 ^+ m  I
  1482. LDA #PALETTE_UPDATE_INTERVAL6 y7 A0 G# W1 `' H8 O4 s3 O- q
  1483. STA Palette_Wait_Cnt8 q/ A- a; F9 l$ L) Q
  1484. Update_Palette_Data_Check_Over; l1 f* _" U! _4 i3 N# v3 Z8 Q( J
  1485. DEC Palette_Wait_Cnt
    ( v& R3 {) _; ?6 |
  1486. BNE Update_Palette_Data_End7 N3 G! p# h' g* z
  1487. 8 y8 p3 ]8 Y4 x8 O& u0 s  Y7 y
  1488. LDA <Text_Disable_Flag% O( Q4 R9 v) v: E4 j. K
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME$ }7 f. `$ q% E" p
  1490. STA Text_Disable_Flag4 C( H& y; _( ^7 G8 @
  1491. INC Palette_Update_Flag- V, ~9 \$ f. e! x( N

  1492. ! ?9 T5 f/ m% c. R! S6 g( s9 Q
  1493. LDA #PALETTE_UPDATE_INTERVAL
    5 ^# e9 I6 [: o0 I/ B! v
  1494. STA Palette_Wait_Cnt
    " j' ~; E, M7 o$ C

  1495. " a5 T: @$ w2 w1 ~, M
  1496. LDA Bkg_Palette_Update_Addr
    : C& P/ z& ]; t
  1497. CMP #PALETTE_UPDATE_MAX: q# E* R+ G& d7 ~! j5 l# z) A
  1498. BNE Update_Bkg_Palette_Data_Set, n1 \  e" s. ~, v" |: h* z
  1499. LDA #PALETTE_UPDATE_MIN - 11 _/ B* {. X$ ?
  1500. STA Bkg_Palette_Update_Addr
    $ s, N0 ]2 S/ t, l9 W+ M1 S8 t& p% O
  1501. Update_Bkg_Palette_Data_Set
    7 F  l' D7 }5 D) Z4 B& q2 Z
  1502. INC Bkg_Palette_Update_Addr" N! ~& m  ?  c

  1503. ! B$ q* @7 P5 N4 h5 c/ d
  1504. Update_Palette_Data_End3 b8 S$ j* t; Y' H1 {  G
  1505. RTS
    6 }* M8 x) z- I* J

  1506. * c* [  Q  `) ~( C. e
  1507. ;==============================6 r, i0 M9 I, [9 x8 t
  1508. Show_Music_Text;显示静态文本
    5 ~# F. V- E& i/ Q6 `2 r' }$ T
  1509. LDX #$00- g  T+ v6 M  u. \; G0 R6 t, R
  1510. Show_Music_Text_Set
    ( y! R4 {/ ], Q8 s
  1511. LDA Static_Text_Data,X
    5 x2 Y% a, L2 ^6 o* N3 B5 g
  1512. STA <Data_L
    ( I( V; ]& r" m. l
  1513. INX( L! C1 ?& g, Q0 c8 I0 m, {
  1514. LDA Static_Text_Data,X
      ?, v+ R% T" [* s
  1515. STA <Data_H
    5 m" }! S4 ?$ e9 o5 M5 s
  1516. INX- i5 h5 j0 {' H& w+ Z
  1517. LDY #$00
    9 E8 V3 j* T' b/ I: B
  1518. LDA [Data_L],Y8 I9 h7 n& l( p( I8 X& m$ H
  1519. STA <Data_Cnt
    , u' L1 O" t  b
  1520. DEX
    " i& K: m1 b: z" m) y
  1521. DEX' ~, c0 M, v( q( C3 D9 M- S! z4 `) ^
  1522. LDA Static_Text_Pos,X& q1 p( S% T* O7 |* _
  1523. STA PPU_ADDRESS% W! g; q- z7 x: \0 G( k
  1524. INX1 r) |: O0 ~6 h9 W! y, C1 p, ?1 f( r) K9 _
  1525. LDA #$209 W+ n3 [" R$ C5 c" y
  1526. SEC+ ^: \4 o3 n* E" e- Y
  1527. SBC <Data_Cnt. K2 G" w5 B5 k! k
  1528. LSR A
    2 W$ F) c! u0 K7 ]
  1529. STA <Data_Buf
    ' f. |3 b( `0 G* q1 @, ?
  1530. LDA Static_Text_Pos,X; ?$ C, b6 a1 s' W
  1531. AND #$E0
    " u6 C  O# i4 Q* F6 V
  1532. CLC
    + [5 r6 S! _7 A7 b, ^( X) L
  1533. ADC <Data_Buf
    , @+ a6 X6 z6 a/ z
  1534. STA PPU_ADDRESS; P, Z2 y9 m4 a+ w" n. t: ~
  1535. INX7 c$ [  S+ o, G+ r* c7 t/ ^
  1536. Show_Music_Text_Set_Write
    # |! ^) ?1 a) z' r; e
  1537. INY  w  b  c4 f3 [4 f8 }6 P) y
  1538. LDA [Data_L],Y
    ( K( E/ Q6 p3 j3 O
  1539. STA PPU_DATA6 ?: I( C! o% Z- n$ z* U! H1 C1 D6 R9 q9 P
  1540. DEC <Data_Cnt  b% g8 C' a+ @+ ]# n! Z8 r
  1541. BNE Show_Music_Text_Set_Write
    7 k2 H7 v- I- [6 c% ~. d
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos) S2 O  E9 }6 i$ S% o! V: m2 L4 _
  1543. BCC Show_Music_Text_Set8 A. [) y8 v( A2 w' M8 n9 a3 @
  1544. RTS
    : i% `, Z" A0 g! o& Z  W8 _
  1545. / ?5 x! r3 j6 n* ?! K1 T; x9 X
  1546. ;==============================. T: q" t4 r+ T7 H2 [
  1547. .IF Track_Name_Pos;显示曲目信息% n4 z& m2 z5 b1 W

  1548. 4 D0 r- C  h+ ]2 U
  1549. Clear_Track_Info% u' f  G) O5 d7 `& e% n, V
  1550. PHA
    2 w' ]! }1 X( i; q% X" u. u/ P
  1551. LDX <Music_Item_Cur
    ; T7 t1 B) J4 i4 w$ ^
  1552. LDA Track_Name_Addr_Flag,X5 ]+ b! d7 e% E& r, s
  1553. BEQ Clear_Track_Info_End_Ex) {4 b  u0 j+ y- h$ v
  1554. PLA
    ( |* X0 |. N* G1 s( }

  1555. 9 Q, e+ q1 Q# x, a
  1556. LDX PPU_Cur* u% r4 |6 `0 m
  1557. PHA+ T/ L& B) y  P$ r- {% p
  1558. LDA #PPU_MODE_CNT_CLEAR
    2 `* W/ P" n1 A8 v2 J
  1559. STA PPU_Addr,X
    9 u; s4 v( P0 i; M5 X# X4 Z( s+ ]5 N
  1560. INX
    " V, V- z& E( d: b0 s. M9 X8 {7 x& Q
  1561. PLA9 {5 T; W# N) B# b
  1562. JSR Show_Get_Track_Name_Center_Pos
    ; v8 c; X# ]# v
  1563. STX PPU_Cur2 k% }! O  C+ D* Q$ C
  1564. Clear_Track_Info_End
    ( _( P* |3 W* {! ]
  1565. RTS
    2 ?, ?; G% W8 l- E' f& q, N/ n) d% V
  1566. Clear_Track_Info_End_Ex* @/ C2 g0 I, U: [
  1567. PLA# x" e" \% Z1 e+ i. v( B, r
  1568. RTS
    / U2 }, d2 |- O/ O+ l8 Q" G- R4 m- d
  1569. # {5 C1 u$ d. Y0 f) ?
  1570. Write_Track_Info5 g2 S1 @7 O) ^; n7 A- h4 ~
  1571. PHA$ T5 K8 B- B: H! X6 Q: s  j. W/ U
  1572. LDX <Music_Item_Cur1 s3 t" P. s0 k6 ]7 d1 C- a
  1573. LDA Track_Name_Addr_Flag,X# [3 E2 ], x' E9 [' o
  1574. BEQ Write_Track_Info_End_Ex. c9 B+ M9 Q; c' z1 N- q
  1575. PLA, r! l7 y2 @: a7 |' W1 C

  1576. ' I: C& V: \+ Y. N/ N% u8 z( O
  1577. PHA
    0 q! D$ S# n3 ~, ^3 o* m: A2 z
  1578. LDX PPU_Cur- E1 ]+ W8 A/ e' R$ A
  1579. LDA #PPU_MODE_CNT_LINE0 A- Y* s2 }2 O3 W, n- p
  1580. STA PPU_Addr,X9 H4 G( P7 Q" B; J) l3 @/ |0 ~
  1581. INX
    % g% M1 r7 g9 C+ O$ U/ u9 U+ ~
  1582. PLA
    4 ^8 W7 M8 h- H4 l
  1583. JSR Show_Get_Track_Name_Center_Pos
    . G/ O' J( k. z) ?4 L# s
  1584. Write_Track_Info_Data; ~8 y& |7 a7 _7 j' C1 t  X' X9 e$ r
  1585. INY
    # d8 U; R/ j7 _. R- c7 h: u/ z' Q! e& T
  1586. LDA [Data_L],Y
    : Z% c; S" H9 o; y1 J
  1587. STA PPU_Addr,X4 e! l4 Q% j9 i0 w! v7 D
  1588. INX
    " y7 r; Y- a" g7 w# Q& @; a
  1589. DEC <Data_Cnt
    4 A7 n$ c9 f' J3 f, w/ p5 C6 A
  1590. BNE Write_Track_Info_Data: o* e. @; [/ l  S/ u0 w
  1591. STX PPU_Cur
    5 u3 R. H* H, v
  1592. Write_Track_Info_End& M& E& X8 Q3 a5 O/ f
  1593. RTS5 Q* e: d0 E+ l5 B0 w, a
  1594. Write_Track_Info_End_Ex! Y, k1 h. g8 D/ F' X  x# n4 C7 i
  1595. PLA
    - h% F- \( a' B4 l( Z6 [* E
  1596. RTS# o. z; D7 }$ X4 ]* e0 l* W% D
  1597. 1 w, o: T6 J/ [% D* T# P- M4 X
  1598. Show_Track_Info
    - W. w: o) L  n3 F
  1599. Show_Track_Info_Clear
    ' V( t. d( N) y4 j
  1600. LDA <Music_Last' d/ j! l) I$ D$ g
  1601. ( v* l% `- ^' e# Q, w
  1602. JSR Clear_Track_Info7 I0 c% l! m, l4 W$ @" R

  1603. : x3 _& R. i) I8 ^/ J
  1604. LDX <Music_Item_Cur5 X& k! V! X7 {- J/ Z
  1605. LDA <Music_Cur,X
    6 }( q6 P0 b0 C
  1606. JSR Write_Track_Info' C3 z7 s& u% }' Z2 g9 b3 U
  1607. RTS2 Z+ H: u2 E/ e+ d' A
  1608. 2 w; T& n+ {* j6 \8 L. ?) ]% i3 Z
  1609. ;==============================: k, o% m$ Y' Q! p& {( Q9 y0 s
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置+ |8 }4 c8 s7 \6 N- C( w2 i0 u

  1611. ( _3 H' O6 p$ n# H/ W- J
  1612. ;取出集合名索引
    " ?7 N* n+ X- R2 r4 l
  1613. PHA* V4 X* D- z& ?6 B% p7 k
  1614. " e8 A9 L( ]7 t; S6 {
  1615. LDA <Music_Item_Cur
    9 C% ~9 n* g7 t) f3 y: `
  1616. ASL A
    & ^( @5 _% d2 |& w
  1617. TAY
    ' _, V/ `0 v& n6 }9 I7 I5 J1 i' p
  1618. LDA Track_Name_Addr_Port,Y8 p/ T+ o" k- S: |7 K
  1619. PHA
    - j2 q* Q) V) ^% ?) L3 b
  1620. INY5 G3 w; L% O6 V2 v$ @9 o0 G
  1621. LDA Track_Name_Addr_Port,Y6 U9 Q' _  h& e+ h& p$ C2 ?9 C0 @9 J
  1622. STA <Data_H! [6 Y( e9 S- s: S+ Y# L4 F
  1623. PLA9 c& ~) f/ ]+ |9 p0 q' Z
  1624. STA <Data_L
    9 L9 R; q& _2 L5 Z" ]1 m, t' U# \' C

  1625. 7 A& E/ [. m$ W
  1626. PLA
    ' E  G6 C) P2 L% q: x
  1627. 6 e$ ^: y! a2 w. U5 f' {
  1628. ASL A' p8 Q4 Q0 Y4 ]$ E' ~; A9 M) n5 [+ o
  1629. TAY
    9 O8 Z6 {8 H" T- \& A
  1630. LDA [Data_L],Y1 {$ `4 L' n* g+ x: v- l
  1631. PHA' }: m3 F" ^$ `: }) j" ~7 E
  1632. INY* l/ w: m) h; ^6 J4 D
  1633. LDA [Data_L],Y
    # f" }$ y, D+ }' n
  1634. STA Data_H
    7 f7 |# B- M1 u; t
  1635. PLA
    . j( k4 ]) I: Y6 V
  1636. STA Data_L0 D7 O; U- }4 C' N
  1637. % D# z# R4 n3 b0 w; u2 m
  1638. LDY #$00* j" l; t* f, h( o2 j# p7 [% I
  1639. LDA [Data_L],Y
    0 o) w  a8 H/ f, u( v1 |
  1640. STA <Data_Cnt; X$ F2 P: A, v% U" s+ }. f
  1641. LDA #$20
    " S6 L7 L  W8 f$ l- f5 ]" A* Z2 l+ ^
  1642. SEC
    , ~( [6 u0 u$ ~7 G
  1643. SBC <Data_Cnt
    ( }7 C- ?: b7 G
  1644. LSR A; l0 Z5 s$ @+ a2 O
  1645. STA <Data_Buf
    % U0 i' O" ]# J0 j7 v( ]8 [1 M
  1646. LDA #HIGH(Track_Name_Pos)+ a6 C1 [% `" I: l! D
  1647. STA PPU_Addr,X' e/ ?. ?: y; F8 X
  1648. INX
    & K# A- W2 \3 [' g2 b
  1649. LDA #LOW(Track_Name_Pos)1 z; s: B4 i# c1 h4 S! e
  1650. AND #$E01 {; g1 T  v$ [
  1651. CLC1 f( S: r' W5 s2 h& i+ B3 P2 U: h* S
  1652. ADC <Data_Buf
    ' p8 ~4 f% {4 \) H
  1653. STA PPU_Addr,X
    ( r# u! d* }6 f' |9 f( Z/ U. O
  1654. INX6 K- i, h0 Y  t- T4 H
  1655. LDA <Data_Cnt" g2 V+ h) I: ]( M* L  B4 D7 I5 U
  1656. STA PPU_Addr,X; W" R, e/ m$ j  ~  J- T
  1657. INX
    : A8 z, K$ }. [0 f' E0 j
  1658. Show_Get_Pos_Center_End
    ; f; F7 b0 v0 l  X4 U  |) _" v
  1659. RTS9 X2 O& e9 B) @5 I. e% O
  1660. .ENDIF" q4 S# \# ^  k4 D3 t

  1661. 5 _, x/ }9 H5 B% \* t" B4 j6 j
  1662. ;==============================: @4 X5 A* @  f& ~. m4 X6 U- }/ t
  1663. ;音乐端口清除
    3 a$ h# y1 x# o' o$ q/ H
  1664. Sound_Data_Clear
    1 w- r# N$ g. i& @! X: N
  1665. JSR Sound_Port_Clear
    ! R5 }& O$ e3 I9 e. B3 y
  1666. JSR Sound_Ram_Clear" Y  o) @2 u0 s( Y/ T
  1667. RTS3 h9 B! p& a5 {! Z1 o
  1668. % @! f& H1 i3 M. `
  1669. ;==============================
    8 u1 }( z  Z3 u/ ~3 C9 ]3 u
  1670. ;音乐端口清除' V, Q0 H$ F2 |8 O# S' t+ I
  1671. Sound_Port_Clear
      ~" `) n7 F' B5 J: @: F9 s( w
  1672. LDA #$00
    & r+ {5 x% F. e4 Z/ y; }
  1673. STA APU_STATUS- D4 \6 @! v2 }6 ]
  1674. LDX #$00  F) }5 g; W& y2 o; W
  1675. Sound_Port_Clear_Write
    : z8 y. _. `  f9 o8 T
  1676. STA $4000,X+ c  b- H- U' D. e, q
  1677. INX2 ^- Y' A4 s9 L
  1678. CPX #$14; a/ Z2 }: J, d1 U7 X
  1679. BCC Sound_Port_Clear_Write
    + o. U  T; P" R9 Y( H9 l" J  b3 A( f
  1680. RTS
    4 I! H. f, Z/ K& `9 H7 _

  1681. . h  O. I1 x7 O4 Q
  1682. ;==============================
    * N3 f1 e5 d9 a9 @3 u0 r6 M
  1683. Sound_Ram_Clear;RAM清除
    % A! a# I! v4 ^* N4 l0 B4 y
  1684. LDX #$00
    0 B* H  j$ E3 p! e+ }( t8 p
  1685. LDA #$00$ r+ |& i/ b6 a! s6 }( z& V( m/ x
  1686. Sound_Ram_Clear_1& S7 H: L: t" r
  1687. STA Sound_Ram_Addr_1,X  n7 n" e: h, W  T" V
  1688. INX% D% r- Q1 V/ R6 ?$ R
  1689. CPX #Sound_Ram_Addr_1_Size; O; M" A7 q' d
  1690. BNE Sound_Ram_Clear_16 Z- V% d8 o3 t3 V$ A
  1691. LDX #$006 N& ]/ N* T' s
  1692. Sound_Ram_Clear_2
    4 A: L3 A7 C* g
  1693. STA Sound_Ram_Addr_2,X
    " {: C, B7 v  M7 q" o1 ]' K) z
  1694. INX5 _; n+ b  d( y7 o7 x
  1695. CPX #Sound_Ram_Addr_2_Size
    " B& [. o) z5 F- i/ K6 V
  1696. BNE Sound_Ram_Clear_2
    . K! t. V8 I/ S2 G/ t/ ?
  1697. LDX #$00) h; X) P- L4 [5 k8 Z5 U
  1698. Sound_Ram_Clear_3! d! R9 @. k2 i$ B
  1699. STA Sound_Ram_Addr_3,X
    % J$ V' X# K: @+ Z
  1700. INX( z; U$ o3 a/ V0 F, |9 U
  1701. CPX #Sound_Ram_Addr_3_Size3 M' a$ @5 u! G
  1702. BNE Sound_Ram_Clear_3
    ( V+ i) _/ M1 Z, g0 N3 w
  1703. LDX #$00
    8 _& {# X3 q7 p; e- G9 S
  1704. Sound_Ram_Clear_4
    $ w: h- I4 l) S) y, y8 }
  1705. STA Sound_Ram_Addr_4,X: ]# S: m0 ?2 N4 K- M
  1706. INX/ s- r8 |, `( _# l% T  x* S
  1707. CPX #Sound_Ram_Addr_4_Size
    / h5 I7 B( @$ Y& F3 F/ _7 G
  1708. BNE Sound_Ram_Clear_4
    & L( k* s# \8 C% _3 T
  1709. Sound_Ram_Clear_5
    " a. _* J: Z% r' Q; _
  1710. STA Sound_Ram_Addr_5,X+ n+ U1 d* S( Q' W  j
  1711. INX
    : s* |" C+ w8 ^4 s/ P! w3 ~
  1712. CPX #Sound_Ram_Addr_5_Size% ?+ e' P, s* T) B( j
  1713. BNE Sound_Ram_Clear_5
    ) U+ U3 ~& v5 L3 g. S
  1714. RTS
    3 c* Q7 B; m8 g7 n; l
  1715. * A# L; e) [" _: l
  1716. Get_Music_Collection_Name$ D$ k6 j' x- l) k/ u0 `
  1717. PHA; J) }$ w" C1 ~0 [4 X
  1718. LDA <Music_Item_Cur
    7 A: x) v: M! {' t1 ^) Z8 W9 p
  1719. ASL A
    1 ~0 X" M3 L. U, k1 j' Y7 B' A
  1720. TAY
    & M$ q/ D+ @# }' ?" O4 D
  1721. LDA Music_Collection_Name,Y
    , E+ u& k2 u1 E; @9 z0 m
  1722. STA <Data_L
    ) o$ e6 e2 h7 X$ i; h- I
  1723. INY6 C8 f) K" s  H% ^: C
  1724. LDA Music_Collection_Name,Y
    ) m; p5 b( @9 E
  1725. STA <Data_H
    6 }1 M% f9 f6 J6 ?0 n) v/ l
  1726. PLA) S' r/ }6 M3 D  Z. y  ^3 _8 j
  1727. RTS
    ) Q9 K0 d$ ?3 g  s' `8 q7 R

  1728.   r+ S) p8 z  Y2 g' L9 A
  1729. Set_Sound_Total
    8 T0 `. @! f& N7 r6 Z+ c* |
  1730. LDY <Music_Item_Cur
    * X0 n' y0 s- t5 I8 x
  1731. LDA Sound_Total_Port,Y
    3 N$ n! R. |* @
  1732. SEC5 H: |) _4 d3 O* C
  1733. SBC #$01
    , _* r9 _" H+ i! S1 ]' l4 N1 I
  1734. STA <Music_Total
    2 V( F* Q; @. m- w* l' d. }
  1735. RTS) L. Q4 _/ f2 K& g  F4 z3 `
  1736. 4 P1 q" T6 f' l9 W, s
  1737. Get_Sound_Start
    + {  l: i( h' o. R* _: }& ]; i9 k, ~
  1738. LDY <Music_Item_Cur
    2 i8 b/ S/ e  i% P1 K3 p4 ~
  1739. LDA Sound_Start_Port,Y
    & D$ r1 p6 Q- X' h
  1740. RTS$ p  x7 x, g* U8 I8 ]

  1741.   v  c; S" k4 z- h
  1742. Set_Sound_Init_Port
    ( q7 }& e9 O5 t- r: b
  1743. PHA8 l  s" g5 X9 {' A
  1744. LDA #$20: U% ^; ]. d6 X& g" `0 v
  1745. STA <JSR_Addr_Op
    / z: H" e* F0 j4 G: w) H! }3 I. S
  1746. LDA <Music_Item_Cur
    + U* \4 z3 Y; M: a: Y
  1747. ASL A
    ' b* H* f1 H* |/ x  \4 Z
  1748. TAY! a7 Y4 \$ M" a6 c6 H" n
  1749. LDA Sound_Init_Port,Y
    , x9 k& Z5 t+ o) w/ u* x' q
  1750. STA <JSR_Addr_L, ^0 [' w) A; B2 L
  1751. INY2 c$ @. G0 A" z* |
  1752. LDA Sound_Init_Port,Y0 h5 _% X7 z2 u5 P5 Z( N- D- b
  1753. STA <JSR_Addr_H: ~) L- w$ m* i
  1754. LDA #$60
    # \+ M" w) {" H, U3 P0 G
  1755. STA <JSR_Addr_Rts0 J, X: T, @7 r$ R3 \& g! J! u
  1756. PLA' m, b3 [/ W' }" a5 M4 F
  1757. RTS8 i2 l0 L6 Q& n- {* d% q7 k

  1758. + }) R1 j  E) d7 M: @& ]
  1759. Set_Sound_Play_Port& J) K/ v& C8 D  {7 A9 I
  1760. PHA
    % E- R& m. L4 ^, L
  1761. LDA #$20
    1 I1 x: Z% X, t: ]) [
  1762. STA <JSR_Addr_Op
    # X+ F& W: S2 ^
  1763. LDA <Music_Item_Cur' Z/ B: F' p. W$ A3 K+ m+ e. h: D3 X; R. }
  1764. ASL A
    9 e$ j- G: ^' V& |9 [, d
  1765. TAY  f; L# l  ~' r
  1766. LDA Sound_Play_Port,Y, B: G1 S6 ?! l+ P3 v+ i7 b8 H
  1767. STA <JSR_Addr_L& z" q/ s8 w# K. U" K) \+ v" M
  1768. INY
    - i3 N0 U/ D5 _# j3 y
  1769. LDA Sound_Play_Port,Y3 v) G- F8 L; a+ k! y
  1770. STA <JSR_Addr_H/ E+ |5 P/ W! ^! X; ]) K5 m* c8 o
  1771. LDA #$60* T" O! y% m1 c" V7 Y7 ?8 _
  1772. STA <JSR_Addr_Rts
    % Y+ n: l% f5 h# s# G
  1773. PLA
    ; v4 b0 p/ _3 F5 F- S5 o- \2 R
  1774. RTS
    ; K! V, }! d# d4 g

  1775. ; D1 N3 g* D8 |- j' J* e
  1776. Set_Sound_Reset_Port2 z$ c7 O1 }6 L( q
  1777. PHA
    + W2 L- p, t8 j4 p8 i4 G$ R
  1778. LDA #$20  i* r0 v+ b. J+ c1 L
  1779. STA <JSR_Addr_Op
    , n: g4 C3 Z: T/ b: y6 k7 y( w
  1780. LDA <Music_Item_Cur
    ( s! K* U" M3 X, Y9 F
  1781. ASL A" {2 N7 j1 p8 E! a' K+ a
  1782. TAY
    ; r" f( b. X& @" Y% u8 j
  1783. LDA Sound_Reset_Port,Y7 V  {: }) V6 H) Z# c. O1 Z
  1784. STA <JSR_Addr_L' ?# {4 H6 C7 R3 L$ ?' x
  1785. INY7 q8 `5 q0 Y7 o+ z
  1786. LDA Sound_Reset_Port,Y
    # i/ d) B0 K- z; p# m! s
  1787. STA <JSR_Addr_H% Q! U1 Z2 k3 C; I7 [
  1788. LDA #$60
    : b3 @& w  q  {- o0 i2 K5 n0 f
  1789. STA <JSR_Addr_Rts
    / [# a- w" O: p, Q" Q
  1790. PLA* r  m: x& ]1 _2 m, ]) ~- J
  1791. RTS
    , e- o' C# U" e$ L

  1792. 6 Y1 G$ W7 L& y. p2 H. g
  1793. ;初始化音乐bank
    4 X3 u3 B$ J6 M5 _9 B0 c( z2 K
  1794. Init_Sound_Bank0 o; r: D3 B+ q0 e
  1795. LDY <Music_Item_Cur
      R( ]5 G  o$ D8 Z; I3 o) `% s
  1796. LDA Sound_Bank_8000,Y! x! p, F: l% m" h' @* }: o
  1797. STA <Music_Bank_8000
    4 W' u% W/ w" ~+ w1 o
  1798. LDY <Music_Item_Cur: m  G# L3 x6 E9 Q- j" X4 ~
  1799. LDA Sound_Bank_A000,Y
    ! v' |* m1 k( `, |
  1800. STA <Music_Bank_A000
    2 R% J7 Y) G. u$ e' b
  1801. RTS4 S" ^) c7 a$ \2 }2 F, |

  1802. 7 U& g# m8 l* C3 r$ s3 y2 Z$ Y
  1803. ;==================================================
    & N% [) G- M9 k- W8 r0 ^& l
  1804. Sound_State_Reset;音乐状态重置
    ; S+ u4 H0 t* ]( p& E* g
  1805. JSR Music_Bar_ReSet        ;重置音乐条( d) j& x3 B4 x# Y7 |
  1806. JSR Time_ReSet             ;重置播放时间+ k. @' {" C, a/ {$ Z$ Z1 A* n, P9 E' w

  1807. 1 N: Q+ N- c( E( t
  1808. LDA #$00
    4 V0 N$ R: x( Q! q& A
  1809. STA <Music_Stop_State  O% \* t& Z6 C# U
  1810. JSR Music_State_Show       ;显示播放状态
    $ i7 C% V. n' l; b- q- x
  1811. 1 _/ s2 W0 J: ]! O# c; D% N
  1812. .IF Track_Name_Pos
    6 [" s/ S$ W% M) B
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    ; m9 U* c4 S4 P' f, X/ h" W2 g+ B
  1814. .ENDIF
    , _9 E$ g0 G5 Y3 k0 }

  1815. 3 ~8 e: ?- d& C0 w, q% `
  1816. RTS& P1 {9 B0 k0 b' D4 I
  1817. 5 X. m" n# A+ z" v
  1818. ;==================================================& C/ m) [, T, b! \( u  Y$ n8 a1 `. m2 D
  1819. Sound_Init_Proc;音乐初始化处理
    2 [) \( {9 u+ S' M; D
  1820. PHA
    ( Q3 a4 E' x+ L$ ^  t" s
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址. {: F1 h. t- K2 _0 W
  1822. LDA #$00
      D1 U  `+ B0 D* f" l
  1823. STA <Scroll_H               ;重设水平滚动
    ) }' T1 ^/ ~; a+ J1 |, m' o% I
  1824. LDA #$0F" D: E7 M# V8 c: t0 m+ b
  1825. STA APU_STATUS4 P1 o* a& n) H/ Q# _
  1826. PLA. Z( {' `4 |7 X4 Z% |% j7 L8 h3 K: ~
  1827. JSR Sound_Init             ;音乐初始化
    0 p: C% a4 G5 _2 _
  1828. JSR Sound_State_Reset      ;重置音乐播放状态
    1 Y* e- E; \7 g: N$ g' d# A
  1829. RTS5 d/ q. Y$ r8 u6 w4 v- j

  1830. 1 j) @  G2 U% G. t) V& }" q1 {
  1831. ;==================================================& U0 x+ x' @, e* p# t# W
  1832. Sound_Play_Proc;音乐播放处理, [) Z" C: ^0 k0 v, _
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址: d" Y% c/ H& f& o& ?
  1834. JSR Sound_Play             ;音乐播放$ N* Q* k  o# R0 f2 G3 |. O3 f
  1835. RTS
    ) X) u/ I! Z) r% h' m; W- u' l% g

  1836. 3 |3 D3 Y: X/ C" Q& s: |5 t
  1837. ;==================================================
      ?; R- M5 X9 Z0 C6 x/ K
  1838. Sound_Reset_Proc;音乐重置处理
    4 `/ u, z& u! C1 z( s- y
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址
    4 H& r& J' T/ w: R6 P
  1840. LDA <JSR_Addr_L
    7 k1 \; j1 P  l- `0 P
  1841. ORA <JSR_Addr_H/ [( }) V; u7 O6 s
  1842. BEQ Sound_Reset_Proc_Default. W6 ~6 @9 n9 s! h9 i
  1843. JSR Sound_Reset            ;执行音乐重置6 g3 k; q* M# {; N2 c  O
  1844. JMP Sound_Reset_Proc_Init_Sound1 ?# F2 P0 k4 N8 }$ @% a0 l. _' Z

  1845. 0 H; X" k2 U9 M2 o+ U
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    & p/ _) G' {7 w+ b6 O0 r

  1847. 7 M5 d% U$ D8 J
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    / A6 W+ t: C  e( O
  1849. LDA #$000 a& Q6 h, t( N# O3 x% J
  1850. STA PPU_CTRL
    ; y0 p0 ~& a3 M8 z# Q
  1851. % i) R' C" g7 l0 a
  1852. JSR Sound_Data_Clear
    , X% e4 L  s9 k6 y$ U
  1853. ' Z/ l1 v7 ?+ e8 c( y; q/ I2 L
  1854. Sound_Reset_Proc_Default_Wait
    " _3 }) X3 A1 o8 p7 G
  1855. LDA PPU_STATUS
    * N/ H, e$ w, L( \: A. b* u9 b
  1856. BPL Sound_Reset_Proc_Default_Wait
    ! ]* K+ ]( w( ^: m# h
  1857. 1 F6 F" g% a6 y& l2 y8 z" {
  1858. LDA #$00$ s; A" Q2 P. c+ c
  1859. STA PPU_ADDRESS! c3 r) ]2 p' {) l
  1860. STA PPU_ADDRESS  ^# i* Q# X0 U" t
  1861. STA PPU_SCROLL
    ; A6 O8 B  K) {4 x3 k
  1862. STA PPU_SCROLL
    6 d- X, F4 n: N+ W" Z

  1863. + \6 u" Z' G% u6 L$ n, ]
  1864. ;恢复PPU控制* C: _1 m9 _! N& H
  1865. LDA Screen_Ctrl
    ) @. [) F  t5 a, \7 X6 A" @
  1866. STA PPU_CTRL# `5 f4 m8 D* E8 ^" `2 B

  1867. + P. T3 v- r' p3 a6 C6 P5 Z4 _
  1868. Sound_Reset_Proc_Init_Sound
    9 _6 |' Y, {; b
  1869. LDA <Music_Stop_State3 z6 L) y' Q- A: C4 x6 g7 F$ a
  1870. BNE Sound_Reset_Proc_End
    * m) p" V* `9 \; r& h& r
  1871. LDX <Music_Item_Cur
    7 g% }" {/ R$ R( Y4 g
  1872. LDA <Music_Cur,X
    ( Y5 X. K4 |+ q( T2 w1 e
  1873. JSR Sound_Init_Proc
    ' F1 P$ ^) `. }2 F
  1874. Sound_Reset_Proc_End8 D: G) ~: x7 z
  1875. RTS
    + y5 r9 t- w* ?$ k, w- O7 M9 i

  1876. 3 q8 l( e2 O* W( x; {& G( z
  1877. ;==================================================
    2 s: T& Y' \9 p6 `+ `; {, h3 F
  1878. Clear_Item_Text;清除页项目
      R/ E+ f; n1 o: {4 }9 I
  1879. LDX PPU_Cur
    6 f" Z4 {5 W# V3 A
  1880. LDA #PPU_MODE_CNT_CLEAR
    / m: ^' Q, k( Q4 @6 T' J& q  W: R* C. l
  1881. STA PPU_Addr,X
    4 ^: \. X, R# U; m$ P5 Q$ x" G
  1882. INX
    + x: {9 \2 i0 L
  1883. : ?6 q) y) D' x0 A  y% [; [
  1884. LDA <Page_Last
    * x5 `! c0 f6 j7 _) D+ Y* ]: V3 ]
  1885. SEC+ o9 y' x. v% p, O
  1886. SBC <Page_Last_Index
    , \  K4 a- e- \. W- }! Y2 E. @
  1887. ASL A
    1 b, p  u$ z0 C% w
  1888. " E8 ~* J' V$ F$ w0 N. U
  1889. TAY) r7 B# s: b8 w* U
  1890. LDA Item_Pos_Data,Y
    ) p& J$ M; H+ {+ p: y- x
  1891. PHA
    $ f" J" y7 }. U/ {& u
  1892. INY
    + V) R, c, U& @- T
  1893. LDA Item_Pos_Data,Y0 z: q( b* a1 L
  1894. STA PPU_Addr,X' Y: b8 b8 |" Y1 k" p
  1895. INX- G) b  n3 y5 m( o1 S, v  ?0 n
  1896. PLA
    ) x) h7 @, t0 M) z
  1897. STA PPU_Addr,X
    % }+ X5 y3 q" h: n" w( Q  A
  1898. INX) E% G9 J  w0 ?% }& d2 g& ^3 ]

  1899. ( g7 \* x- w% @3 t
  1900. LDA <Page_Last1 f, ?6 S) ?# ^# v0 @
  1901. ASL A
    3 E) I4 @2 G+ V; P" `
  1902. TAY6 l% z+ }7 ?* b% v$ ~
  1903. LDA Music_Collection_Name,Y5 X* u" g8 h0 z
  1904. STA <Data_L
    3 ]& ^1 t2 p- T- N# @8 d" B
  1905. INY
    % ~. a3 |3 e* ^. `# ?
  1906. LDA Music_Collection_Name,Y5 C9 w$ ~# C  `2 \7 a# m) r( B: x+ u% F
  1907. STA <Data_H
    , z+ [, g7 w; N# M  Y- K

  1908. % ]* W2 G# Y" b+ W
  1909. LDY #$00
    ' H! `, g2 c8 A. K* _2 I
  1910. LDA [Data_L],Y
    ; j0 W, n/ r" ?& j* A3 \( H
  1911. STA PPU_Addr,X/ w9 w+ B* d' j1 J) H
  1912. INX7 ~/ Y' ]5 U3 k' n. ]
  1913. Clear_Item_Text_End$ I+ j+ Z- u/ V1 L% Z
  1914. STX PPU_Cur% a8 Q9 T, ~) X+ T* m
  1915. RTS
    2 R' h# W( p1 i- z

  1916. ' Q1 E; p7 {1 }8 B; s
  1917. ;==================================================
    & V2 A3 @$ c2 C# A. O3 e# ^1 c
  1918. Show_Item_Text;显示页项目4 p" ]& b+ `4 r  \" }8 V: \! E
  1919. LDX PPU_Cur2 T# ]- U; O- ?  ~5 I
  1920. LDA #PPU_MODE_CNT_LINE
    ) n! R* w2 W2 U# J) F
  1921. STA PPU_Addr,X2 E2 J5 @! d8 u9 N, t- y
  1922. INX
    - L# D; y+ F) w; Y4 s9 U4 ]
  1923. LDA Page_Cur
    + d9 u! e: V% \; _/ s0 l
  1924. SEC
    . j6 `0 o' l" o9 b: B6 V( Q$ T
  1925. SBC <Page_Cur_Index  H- [+ X1 h+ [; C2 A
  1926. ASL A" L& v8 N9 Q: [3 Q* }/ v4 d
  1927. TAY
    & ?8 d: w/ I; D2 d5 Q0 R+ L
  1928. LDA Item_Pos_Data,Y
    - C0 o3 C' u1 e/ @% K
  1929. PHA, u) N9 ^% A; {) i9 e- t
  1930. INY3 E, o) J  J9 T+ ^. r6 \
  1931. LDA Item_Pos_Data,Y# u8 u8 v! D( h( f/ Q" A
  1932. STA PPU_Addr,X
    * O3 a9 z7 Y0 c* B8 j
  1933. INX
    2 X: e4 A& W+ e
  1934. PLA* w8 ^* z7 r  q9 H
  1935. STA PPU_Addr,X5 ~2 ]9 t9 [! _: F
  1936. INX
    $ t( @5 E; J( p, U" a

  1937. - E  J$ o2 m5 N' ~
  1938. LDA Page_Cur
    : w2 v, t+ |0 a' _* ~* \
  1939. ASL A* a7 x9 ^& ~- I
  1940. TAY
    8 e( ?& t6 a' @0 D+ z1 y4 l9 k7 _
  1941. LDA Music_Collection_Name,Y0 \/ g+ S8 d' \9 X9 z3 p. `
  1942. STA <Data_L. M: _4 W  b% Q$ N: M
  1943. INY: L& O2 q" E9 d1 U
  1944. LDA Music_Collection_Name,Y
    8 Q, x) g( f- e9 f. p
  1945. STA <Data_H
    ) X5 Z- V, ]8 a- f- y* M

  1946. 4 i9 @+ c/ J/ t2 |1 o9 ^/ u% t
  1947. LDY #$00: d# k" y6 k4 |* ~3 u
  1948. LDA [Data_L],Y. ?. Y* F: B, ?3 W4 f6 h% W2 R
  1949. STA PPU_Addr,X
    ( L7 n# o4 A" ]3 q
  1950. STA Data_Cnt
    ' ^4 y6 X6 O' V" T
  1951. INX4 k  |; q. ]. |- w' o0 B/ S
  1952. ) I: x8 F; E! r$ Q7 G+ H" A" l
  1953. INY
    5 |8 |% E# A* \) I9 z/ s% }
  1954. Show_Item_Text_Write
    # l4 q4 s( H- b' [$ K
  1955. LDA [Data_L],Y
    3 L  U: N+ K6 c' {
  1956. STA PPU_Addr,X- R. Z9 {4 V2 Q3 g- G
  1957. INY& y' Q6 a8 p  A3 [
  1958. INX6 B0 W. n- ]/ E
  1959. DEC Data_Cnt
    6 |% @0 ]: q- o' S5 R- C( {- }, R, C
  1960. BNE Show_Item_Text_Write7 V: l  T+ I. O& f& N# Z

  1961. , K4 L4 g+ i+ O9 ?+ X1 @. n
  1962. Show_Item_Text_End
    0 u) p7 l9 p3 @0 m6 h
  1963. STX PPU_Cur: M% ?% J" |9 d& e/ y
  1964. RTS
    : G, C& k# Y9 _% A1 K1 p# T
  1965. / O: _% ]8 p6 ~; ]; E' L9 p0 c* R& ]
  1966. ;==================================================+ b) U6 |; X. d+ T2 O! r' ~
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量) n2 T6 P! U; |# v/ S2 F/ ^
  1968. STA <Data_Buf& Y/ g3 {' p5 p& a
  1969. LDA #$00
    4 J$ ~) [+ {6 r1 b" j4 e' S1 a
  1970. Get_Page_Index_Calc& L" k& i+ C- N
  1971. CLC
    # q7 M0 P: r8 s+ o
  1972. ADC #PAGE_SIZE/ Z/ P2 [' q$ P: ^) L1 V$ a
  1973. CMP <Data_Buf
    . ]1 B/ F) ~9 I
  1974. BCC Get_Page_Index_Calc
      c  g. W. w! `' J* Y
  1975. BEQ Get_Page_Index_Calc_End
    8 g! w1 X, y0 a/ p
  1976. SEC2 E2 e# n/ A: j) x2 t! w1 y$ t
  1977. SBC #PAGE_SIZE
    " i' q3 I( z3 t# i: U6 W5 d
  1978. Get_Page_Index_Calc_End
    % y: j# T8 L- U- c8 h8 b5 h! {  f
  1979. STA <Data_Buf" s" b& U' T) c5 A; E5 ?; S
  1980. Get_Page_Index_Cnt
    0 I8 a& x% e1 C$ T2 z
  1981. LDA #PAGE_SIZE" x( U& X: Z: {1 b
  1982. STA Data_Cnt$ ~* A: \7 O1 t& P0 Y3 x+ s! ^! ^8 i

  1983. * k& Z( r6 C- y' r& y& @- G% e% r
  1984. LDA <Data_Buf8 k# q/ s) a1 q* H  ?: s) @
  1985. CLC
    ! C/ D! f9 E; o9 J6 N/ Q9 }) c6 ?
  1986. ADC #PAGE_SIZE
    4 E4 N9 \- }  K5 X: a' p* E6 x
  1987. CMP #ITEM_MAX_SIZE8 I1 V+ l! S, f5 W* k1 z* c
  1988. BCC Get_Page_Index_Cnt_End
    9 Z9 ^/ t( `" J3 i0 V: {$ D7 Z
  1989. , G1 v2 \1 Q3 {
  1990. LDA #ITEM_MAX_SIZE9 [0 v7 T) w# ?6 }
  1991. SEC$ e7 w  P2 k+ h* m& u
  1992. SBC <Data_Buf
    ! X: O0 g) e4 v
  1993. STA <Data_Cnt
    % `* h' P( i3 {7 h, X$ A2 K" U
  1994. / h. @! y+ Z4 E3 O, f( c$ Q6 W
  1995. Get_Page_Index_Cnt_End$ J. e! {) [( @2 @
  1996. RTS% K9 t+ \, `: I  E1 `8 W

  1997. * N* F" p3 @) L5 S
  1998. ;==================================================" C! T7 k" p) J( G) t
  1999. Get_Last_Page_Start_Index
    8 T) C, \- W" E$ I" Y$ |
  2000. LDA <Music_Item_Last$ E% j" @3 B4 W+ @* q0 g; S& o4 d
  2001. JSR Get_Page_Start_Index1 b: [1 P$ l3 v, v) k; ^
  2002. LDA Data_Buf
    . C! g7 |! x5 K6 N; L. ]
  2003. STA Page_Last$ A. H4 y7 L9 H  c/ O0 J- J
  2004. STA Page_Last_Index
    / n: h9 R# K& c  M& U& v5 W8 d
  2005. LDA Data_Cnt
    & H$ h- H0 W6 y+ ^! w1 d
  2006. STA Page_Last_Cnt) `, b9 I; j, o
  2007. RTS
    ; k+ ~4 d- p$ G9 k/ s! _# k7 x0 M% ]

  2008. / Z% V7 V+ x: v+ M. j) T
  2009. ;==================================================8 l  \% {* |; f% r: J/ I
  2010. Get_Cur_Page_Start_Index
    6 n* v7 L4 y  M
  2011. LDA <Music_Item_Cur0 D" \& r+ U$ C/ B
  2012. JSR Get_Page_Start_Index: A: v0 ?7 D" b3 z4 W2 I
  2013. LDA Data_Buf
    : B; d6 [. {# ]2 \
  2014. STA Page_Cur
    & T6 E: I! ?" ^
  2015. STA Page_Cur_Index
    + J; @  l' n, T, W% p4 k7 `2 d
  2016. LDA Data_Cnt( s4 n) H' \% m- P8 q. p4 G; S
  2017. STA Page_Cur_Cnt
    ) t+ l+ }" w: q4 D! u" [, d
  2018. RTS! L& T2 t" N' |

  2019. / S" R$ b3 ?8 ^
  2020. ;==================================================8 m' V% T1 g$ M2 f
  2021. Show_Page_Text;显示页文本/ f: V0 q& K  Y$ E8 v2 U
  2022. LDA <Text_Disable_Flag
    - M3 L' G* }( E$ l1 w
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    2 S7 t" ]5 y( n6 O( `* \
  2024. STA <Text_Disable_Flag9 F; P( W' T, o6 S4 l* L
  2025. 2 X) I3 f5 R  h  U
  2026. JSR Get_Last_Page_Start_Index. w6 V0 Z) {. G
  2027. JSR Get_Cur_Page_Start_Index) C. z: x, ]2 i1 S# `

  2028. ; O2 y! e7 L, }' f
  2029. Show_Page_Text_Set
    $ R2 N9 I6 }) f& F/ d
  2030. * t% ]( p$ B1 l  g  S0 O
  2031. Clear_Page_Last_Item;清理上一页% ]4 d$ o+ A4 j4 ~7 ?% S" ]) ^
  2032. LDA Page_Last_Cnt9 G3 h5 V. w; f  I2 S' |
  2033. BEQ Clear_Page_Last_Item_End
    9 ^# ]* E1 g) ?
  2034. JSR Clear_Item_Text2 t' {0 l) _- P+ D
  2035. INC Page_Last
    0 z1 ?7 _* f" u' i. T  y5 i
  2036. DEC Page_Last_Cnt7 y2 s  y  C! r/ _
  2037. Clear_Page_Last_Item_End
    1 l5 L% o! ]# j: j
  2038. : [6 Y  T! j) V7 W9 ~( R; O+ @
  2039. Show_Page_Cur_Item;显示当前页! K- r& r, i! r4 _: {
  2040. LDA Page_Cur_Cnt
    4 j& S7 }) t! X" j
  2041. BEQ Show_Page_Cur_Item_End
    9 D$ a8 v0 M& D0 @
  2042. JSR Show_Item_Text
    % o) d7 _8 `$ M. u! G4 v
  2043. INC Page_Cur! m. ^2 ]: d7 S" I. v
  2044. DEC Page_Cur_Cnt4 h# L4 x3 T% H7 r
  2045. Show_Page_Cur_Item_End
    . K5 s0 w& r! s9 w" i/ X5 Z& s: S
  2046. 4 F; T8 w1 ]$ K6 A1 m  ]
  2047. INC <Time_Wait_Cnt+ K/ R( V9 t$ @2 Q
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    ' r! p6 Y; C/ G1 R! a- \
  2049. LDA <Time_Wait_Cnt
    + X: r1 n5 f$ K7 ?' P9 O" z2 x
  2050. BNE Show_Page_Text_Set_Wait  B8 d; K+ i# V- x

  2051. 4 h9 ^# ]  }: W. }# A# \$ \0 T2 {
  2052. LDA Page_Last_Cnt2 ~% B  [3 P% X/ K5 {" N7 \
  2053. ORA Page_Cur_Cnt9 `3 Q+ y1 R( X0 M3 j: x* }
  2054. BNE Show_Page_Text_Set
    " N' g" K2 G3 V
  2055. LDA <Text_Disable_Flag# s2 r/ L$ H" Q; Y& ]* u
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    ; S9 h' O  g4 h/ I/ H3 Q
  2057. STA <Text_Disable_Flag1 x' b" h$ u1 I& P8 H: m
  2058. RTS  K0 A0 h7 c) Z0 w( f
  2059. : v1 Z) _* I  z
  2060. ;==================================================
    + P* n+ w! y4 u! T$ C% M% \4 M- K
  2061. Last_Item;上一项& B8 p) w6 k( d' {4 ^9 q6 K0 I
  2062. JSR Clear_Last_Track_Name
    8 ~$ g+ c9 k2 c
  2063. JSR Disable_Text_Draw$ j8 B6 @  L* {* O# M0 N
  2064. , I8 F" S! j$ _
  2065. LDA <Music_Item_Cur
    ! U; F$ v1 C) x3 z
  2066. STA <Music_Item_Last, n  z9 ^- B! y! l/ _9 _
  2067. 0 U* n- P+ o  @" v7 t1 O) g9 R3 G7 l
  2068. JSR Get_Last_Page_Start_Index
    : Y, F& K8 c. J
  2069. + J; P5 I; e4 p, f* ?: T
  2070. LDA #$001 m1 o7 j, \, ]& e5 w4 {* \5 @
  2071. STA Data_Buf
    - M$ `4 F( f! |0 H% J7 U
  2072. ) y/ ]# }8 S2 T
  2073. LDA <Page_Last" S9 Q, m+ C& b" a8 R
  2074. CMP <Music_Item_Cur
    4 Q9 r4 c7 i6 g8 ], C5 q0 m
  2075. BNE Last_Item_Begin
    - W8 P# C: V- O: Z  y
  2076. - }) |2 y% U: `/ w0 e  j3 D, d
  2077. LDA #$01
    + f. j6 V% q% }
  2078. STA Data_Buf0 h! {! n- o) x! |
  2079. Last_Item_Begin
    & |4 p5 G" A5 E
  2080. LDA <Music_Item_Cur
    " f# j- j4 |3 ^
  2081. BNE Last_Item_Set. l; R$ J8 ?5 ~' F5 ~( L; E% b0 ~
  2082. LDA #ITEM_MAX_INDEX + 1+ E' V) Q1 b0 i& \/ x1 p3 B1 s
  2083. STA <Music_Item_Cur. [( Z6 E% z* q$ Q" s0 w5 |! E! d
  2084. * M0 k; ~. U  {% F8 B  m! g% f
  2085. Last_Item_Set
    $ O& |& x  e8 n" l" F
  2086. DEC <Music_Item_Cur
    2 p1 C5 e9 O$ W/ |& N1 @/ M( f% `
  2087. LDA <Music_Item_Cur( b% h0 O9 t; |8 ~% i8 ]5 {6 e
  2088. JSR Reset_Current_Music
    4 c. N/ Y8 H; T& a! S  @
  2089. $ N/ ?0 L- h& \$ S( H  j  n7 A. \& t* ]
  2090. Last_Item_Play9 t( \9 |, R1 k4 K) @5 \5 [8 ^: _
  2091. LDA Data_Buf" O* A7 _& S- E  u
  2092. BEQ Last_Item_End
    0 v% g2 P% ?. c% o  x- i
  2093. JSR Show_Page_Text* _- ~  L# m2 e
  2094. Last_Item_End. k1 B! J- [& R) L) Z. k/ _5 f+ Y
  2095. RTS
    # k2 a8 o% b+ U- c* Y4 X: x

  2096. / p2 H; f# u1 A! |2 D0 X
  2097. ;==================================================
    & ]+ `' l0 l. E; H3 {1 @
  2098. Next_Item;下一项9 C" E' K  j3 ^8 ~1 j3 B
  2099. JSR Clear_Last_Track_Name% D1 z4 D8 b* k! P. b* Y1 ^5 J* O
  2100. JSR Disable_Text_Draw
    9 L) h  B" e+ p8 i) e! [. i7 p

  2101. . B2 f: Y6 U, b4 [6 ~8 j2 d6 e, d
  2102. LDA <Music_Item_Cur
    6 ^; O9 o* e1 w2 c% C4 @- a
  2103. STA <Music_Item_Last# c# D" L5 O# B' ]% w' @  I

  2104. 4 I+ X5 |3 X0 T) a3 W; a- H: S, s
  2105. JSR Get_Last_Page_Start_Index: b7 @+ O! K4 M

  2106. / h# r/ f. M3 m
  2107. LDA #$00
    5 S5 c+ a* f4 s- @/ l6 n
  2108. STA Data_Buf
    8 q( y" U1 _- s
  2109. 8 L( o" ^: P! p) K. J: ?% W
  2110. LDA <Page_Last" R0 K/ a- g1 l
  2111. CLC  |( W0 e" n' ?4 }4 u
  2112. ADC <Page_Last_Cnt9 I0 h, }0 B" u( j, k4 d
  2113. SEC
    & A/ A" `  C  x+ ^
  2114. SBC #$01
    3 J( c, [+ T1 w: Q9 c
  2115. CMP <Music_Item_Cur' {6 f1 a0 V7 s  S2 h
  2116. BNE Next_Item_Begin
    6 y  {' o7 @7 J8 U

  2117. / g- S0 w% O& ^; n9 a" u
  2118. LDA #$01
    - e- ?. z" _# Y5 k* E- z! ^
  2119. STA Data_Buf9 d3 b& r% o8 }7 S' B
  2120. Next_Item_Begin1 Q6 I$ i1 {' D+ G/ q5 e  I- C
  2121. LDA <Music_Item_Cur
    & W+ k- V/ c/ z$ [+ s
  2122. CMP #ITEM_MAX_INDEX
    & X; y# ~+ b& `" o" p& z& x
  2123. BCC Next_Item_Set
    * e- t7 i. K$ T+ K9 L
  2124. LDA #$FF9 x6 O, R6 R$ M
  2125. STA <Music_Item_Cur
    - e5 U* J! _8 R( {
  2126. Next_Item_Set% ?9 ^9 ]2 x6 M5 t1 Y0 s
  2127. INC <Music_Item_Cur  @1 \& l7 b- ]' g$ l- H
  2128. LDA <Music_Item_Cur
    % ]3 G" ]" L* f; Q0 ?  [& I
  2129. LDA <Music_Item_Cur- O8 N; n+ o6 G4 Y, E7 o) j& h
  2130. JSR Reset_Current_Music
    : i* g8 d2 M$ D9 ~
  2131. Next_Item_Play  A. |3 r- U1 ]) D
  2132. LDA Data_Buf8 X" U, _6 T" ]4 v5 u( l
  2133. BEQ Next_Item_End+ A$ W# T2 @' [
  2134. JSR Show_Page_Text
    " n/ G- e! d, V* J' @
  2135. Next_Item_End" U! K  r- t6 B5 B  E' g/ ]4 q
  2136. RTS/ Z# N/ j) J( X  {- I
  2137.   K/ u: T6 T) K1 K+ R6 k
  2138. ;==================================================. F# C, \. h( r
  2139. Last_Page;上一页! T! p  P& a' }
  2140. RTS
    9 }) m( P! J! Q% E) U8 O$ f

  2141. # t' n3 T! d$ H3 s8 g$ |; B5 D$ n
  2142. ;==================================================" Q2 G! r( ]( S% p
  2143. Next_Page;下一页
    4 U) ]/ X, d6 I, d- b3 L9 F% f: v
  2144. LDA #PAGE_MAX_INDEX
    1 Q$ b0 H* {4 B8 J+ B5 N+ f
  2145. CMP #$01
    ; J- q0 s. H' }2 _4 m
  2146. BEQ Next_Page_End2 Q3 p' {0 E9 i. Y
  2147. % D) T; m1 t0 R+ {) w
  2148. LDA <Music_Item_Cur) q( b% G# n) o
  2149. STA <Music_Item_Last2 i0 O8 [& k; c* V8 y5 Y, ~

  2150. 9 ~  l% }! N  k0 U0 B5 g. _
  2151. JSR Get_Last_Page_Start_Index! j8 m( G( \( d2 Y7 w/ i+ i

  2152. : S8 ^8 S$ J' g0 g6 ?9 W- `' d' i
  2153. LDA <Page_Last_Index
    0 b. p9 ^/ m# w0 P4 V4 F
  2154. CMP #PAGE_MAX_INDEX2 Y7 Y9 l' I/ R) D  a, U! L
  2155. BCS Next_Page_In_End_Page- B1 z2 k) t- a' i

  2156. $ b0 ?: q5 ]8 g, i
  2157. Next_Page_Not_End_Page;不是在最后一页8 y- j- D6 P% @7 A* e! R
  2158. LDA <Music_Item_Cur
    ; f9 |. h  h. s8 I
  2159. CLC( j6 `9 L$ d; a; i0 U0 }& b
  2160. ADC #PAGE_SIZE7 A6 A- D* t  X: k. |9 W5 l' h
  2161. CMP #ITEM_MAX_SIZE
    - g% ?# B+ ?4 l% T  v* M
  2162. BCC Next_Page_Not_End_Page_Less
    % ^8 u* w! R3 y1 a7 O) r
  2163. LDA <Music_Item_Cur, d2 y4 [( q2 ]4 J
  2164. SEC  N$ {+ m* @$ M1 `: |* u
  2165. SBC <Page_Last_Index+ B! A0 D6 P# l& ?
  2166. CLC
    " L: {& s) t% N- C  ]" D
  2167. ADC #PAGE_MAX_INDEX
    % u- J0 i+ {6 ]
  2168. CMP #ITEM_MAX_SIZE
    4 N- F; |% P: t( E* B
  2169. BCC Next_Page_Not_End_Page_Less, s) O6 Y* ~7 v& B3 E" J% F# o8 c
  2170. LDA #ITEM_MAX_INDEX+ }6 K. U* v0 p* W; D6 p4 X) S
  2171. Next_Page_Not_End_Page_Less* f7 ~# ^: O$ ~3 Y
  2172. STA <Music_Item_Cur: d$ o  U8 {0 B# p+ O- Y
  2173. JMP Next_Page_Reset
    * `3 I  K1 F5 i8 l3 N
  2174. 7 V8 m" M2 s5 c  F
  2175. Next_Page_In_End_Page;在最后一页
    , c( n& r" C8 r* w
  2176. LDA <Music_Item_Cur
    8 x* l0 ~: h. @  a% y1 Y5 D
  2177. SEC
    / s. `3 Q! F% k- E$ s- E
  2178. SBC <Page_Last_Index
    0 q- u7 K# }  m2 F2 Q0 ^1 Q6 W
  2179. STA <Music_Item_Cur4 l/ [6 X" m5 T: J0 k4 r, a% m

  2180. . h, }' t, ?7 Z' A" l
  2181. Next_Page_Reset2 K; s: y, A" r. }  ]. O6 P" A6 I
  2182. LDA <Music_Item_Cur' J3 i8 D- U! e9 d& |) n& T
  2183. JSR Reset_Current_Music
    * ?5 }/ \8 C& A" Y4 O: D9 v1 x- c& h; {
  2184. JSR Show_Page_Text5 w, j5 u1 |' f* E- o. u. Z
  2185. Next_Page_End+ o2 s! O6 Z. q
  2186. RTS3 g1 {# `- t* Q5 U
  2187. ; D' t( r, q0 m5 q
  2188. ;==================================================% t4 J+ y. d9 ~) q! X9 z
  2189. Disable_Text_Draw;禁用音乐条刷新( ^6 u# N0 [$ I0 ~8 q) i
  2190. LDA <Text_Disable_Flag9 y0 M7 _& r; A  q8 D4 t8 ?* h) n% ~
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME1 v( [  g, P# I2 r7 A
  2192. STA <Text_Disable_Flag
    ' g- s# ^! m" u6 J: N6 A6 k2 ?
  2193. RTS
    - }! o. S' C( a& K! {1 n
  2194. 3 f, H3 g* a( ~/ w3 L
  2195. ;==================================================
    5 e/ u+ v- Z  H0 \8 p
  2196. Clear_Last_Track_Name;清除上次曲目名
    9 {5 V! y& P# a9 C. |
  2197. LDX <Music_Item_Cur& ?/ D5 C6 f' N; s- a% u! \& o" \7 \
  2198. LDA <Music_Cur,X
      L3 @8 Y" x. P9 x" C
  2199. .IF Track_Name_Pos
    7 K3 {, ~% T: B& w
  2200. JSR Clear_Track_Info
    - s3 S  T  u; }* ?
  2201. .ENDIF* H8 z/ X1 L7 `
  2202. RTS6 A, L* n' s$ Y
  2203. ' n+ y$ k# m2 j) t( C
  2204. ;==================================================; s9 u9 j6 z# r7 S
  2205. Reset_Current_Music;重设当前曲目9 y" ~0 y* F) t2 S7 L
  2206. ! ~0 B( s3 n- ?
  2207. ;写入当前总曲目2 n7 o) q* E; |7 q1 ], R" X
  2208. JSR Set_Sound_Total* h4 w. y; ?/ G: r- w4 |
  2209. LDX <Music_Item_Cur
    ; w' `( A/ x' c- N/ e

  2210. 3 H( Z4 ~) K* `4 h& k
  2211. LDA #$00
    " T' t# o/ O, _& {* d
  2212. STA <Music_Last
    8 H, M5 c% a1 ?3 {5 G/ z+ x

  2213. 1 F6 p% {: s" I5 Z  U. V7 u
  2214. JSR Sound_Reset_Proc4 M6 c3 C" i7 r; C4 t( h' @
  2215. JSR Music_Show
    " z$ V' b7 w  J/ j/ U) i9 S* S' C' E
  2216. RTS
    4 }& X6 r" e2 x6 ~4 Y2 n4 J
  2217. 0 k3 }7 R0 p2 s- o
  2218. ;==================================================- P& s/ }1 q. ?, i7 q8 T+ }5 e) Q
  2219. Music_Song_Stop;音乐停止
    % x$ ^' z1 @/ H. V$ D% }
  2220. LDA #$01, t& x0 {) n0 [  Y5 }5 K& n0 n6 i
  2221. STA <Music_Stop_State
    / {( n: w9 X# C+ u
  2222. JSR Music_Bar_ReSet
    ! D) A3 c7 q. G2 K
  2223. JSR Time_ReSet; H; H' W: N' B; j$ h& x
  2224. JSR Sound_Data_Clear
    # S  a6 x% P) n/ E' `' z
  2225. JSR Music_State_Show
    $ A3 `. F) h; I
  2226. RTS
    $ l, Y$ o2 g0 p6 R4 C( C
  2227. / v- ]! ]% X& Z3 a
  2228. ;==================================================: w9 N- M" f% c; }, _8 ^# N
  2229. Music_Song_Play;音乐播放* r: r& n& ?4 {* M! z* J: T: h
  2230. LDA #$00
    8 m1 F, ]& z2 u( w. {' E
  2231. STA <Music_Stop_State
    : j) t$ Z% c3 R. Z
  2232. LDX <Music_Item_Cur
      O$ I" ^; E- |3 O  B1 f4 E, u3 n- b
  2233. LDA <Music_Cur,X: q- p5 A) [2 F4 d9 p6 Y1 T
  2234. JSR Sound_Init_Proc
    8 t/ w0 w' M; b* X
  2235. RTS  m$ x& y( w: f. _7 r5 M8 f

  2236. ; n0 _  k2 Z" f8 ]+ I
  2237. ;==================================================
    : G1 V, x$ {3 h0 _
  2238. Music_Song_Last_10;上10曲
    . ^7 L6 B. \! \- y. U. w1 [
  2239. JSR Clear_Last_Track_Name5 }. B2 Z% A# o0 \+ g- ]+ i1 \
  2240. JSR Disable_Text_Draw
    6 m1 c2 |3 b* a  C
  2241. LDX <Music_Item_Cur8 N) A$ v  M2 U& D2 \7 l% u' U0 m
  2242. JSR Set_Sound_Total. y* S4 {0 K7 `
  2243. LDA <Music_Cur,X% w( M; N% W/ S
  2244. SEC
    # @0 W+ R- \; f
  2245. SBC #10
    1 _. x: q$ R# O; t, o. }
  2246. BCS Music_Song_Last_10_Set2 ?* @) `" l; S1 r% g; C4 e7 a+ y
  2247. LDA #$00
    3 k5 p8 ]1 O: V: K$ h5 K' e
  2248. Music_Song_Last_10_Set
    4 r0 w/ [: e$ r4 W
  2249. STA <Music_Cur,X- ]$ w- i% }) d* b- d6 ]7 b- X
  2250. JSR Sound_Reset_Proc
    9 i4 E9 X9 c" }1 i. \  R7 b
  2251. JSR Music_Show* Z+ t+ k; I: a3 C. ^- v3 z+ F' R
  2252. Music_Song_Last_10_End
    * a8 D# T  P/ ^5 E- F: E) c
  2253. RTS
    " U% Z' y: F3 |: R
  2254. ! |* p( l# A" m- K9 p& i4 w$ _
  2255. ;==================================================
    " G4 k  y, I0 ]( v/ ]
  2256. Music_Song_Next_10;下10曲) p) U& V6 q) _: ~8 e/ ~
  2257. JSR Clear_Last_Track_Name
    - J) @3 f' D. V& f& F
  2258. JSR Disable_Text_Draw! g& u8 J1 ~  |/ ]. R5 y
  2259. LDX <Music_Item_Cur
    0 v/ W+ o, k$ s/ l0 A9 M
  2260. JSR Set_Sound_Total
    + u: }; W. o# f1 e9 |9 G* n
  2261. LDA <Music_Cur,X5 K6 _# w& z" j1 D
  2262. CLC) p) \% u- m4 W8 k6 v
  2263. ADC #10
    + D2 R! {; E" W: `3 M
  2264. CMP Music_Total
    + w: Q! R; y3 [# y) {8 x# N
  2265. BCC Music_Song_Next_10_Set
    ) @* E0 U6 d* u# H  ]; p" _" O( y
  2266. LDA Music_Total" j1 H2 q( j% T4 M' o7 `/ a
  2267. Music_Song_Next_10_Set
      p/ V) G  e- K: S& J
  2268. STA <Music_Cur,X: d6 a2 ?: P3 {& D% g5 t
  2269. JSR Sound_Reset_Proc
    ! \" f% r0 z6 q& i# k
  2270. JSR Music_Show: v/ J& L! f3 T6 c7 }. U
  2271. Music_Song_Next_10_End1 a: V- ^# {9 c7 z) R$ K, ^
  2272. RTS
    # H2 H! Q. D; j2 S8 Y0 i
  2273. + }! }# M% Z+ u* q& D
  2274. ;==================================================* A8 n+ @5 h( a# S6 z
  2275. Music_Song_Last;上一曲5 G& ^+ H7 C  Z( W; u9 c$ x
  2276. JSR Clear_Last_Track_Name
    7 ^3 d* s3 X$ h( @/ r/ Y
  2277. JSR Disable_Text_Draw
    * d. T$ ~8 }3 U/ X/ [4 ^
  2278. LDX <Music_Item_Cur
    - @$ l; V9 L* W3 |( c' H1 V( \
  2279. JSR Set_Sound_Total
    ' h' i( W7 m) r
  2280. LDA <Music_Cur,X& Y/ R/ \, o; t; |- w9 Y
  2281. BEQ Music_Song_Last_Set
    7 b: \* K( d+ q' V+ @8 ?
  2282. DEC <Music_Cur,X% f( z: t2 L/ q
  2283. Music_Song_Last_Set; q1 m# Q. `2 C0 c' ~
  2284. JSR Sound_Reset_Proc# T* P6 D; Z5 X- P/ e
  2285. JSR Music_Show+ Y% C" v6 S! Z; O; G
  2286. Music_Song_Last_End; o! @* p" P7 d, L
  2287. RTS
    $ i* {/ R4 G8 C. a1 ^& r7 [. i  e
  2288. * j: W  p( }7 o/ r* S9 g0 b9 U* H
  2289. ;==================================================) m" h8 R5 p' w5 H
  2290. Music_Song_Next;下一曲% X* P% V3 D, ]
  2291. JSR Clear_Last_Track_Name  Y2 h6 p  P, Y9 S. I7 K, x  V
  2292. JSR Disable_Text_Draw6 c1 y  ]  u0 N" F; W
  2293. LDX <Music_Item_Cur3 D5 W" ?; W' U
  2294. JSR Set_Sound_Total
    1 q# j1 O! G- C8 A
  2295. LDA <Music_Cur,X
    ; S/ t, ?( W' I
  2296. CMP Music_Total
    1 q, D+ C3 h( F* ?
  2297. BCS Music_Song_Next_Set
    " Q) `4 H. g/ w0 ]# M5 U
  2298. INC <Music_Cur,X5 G& ?( k6 z0 V9 F
  2299. Music_Song_Next_Set  w7 l; V+ p* x
  2300. JSR Sound_Reset_Proc
    & P8 j' V3 |  G& F
  2301. JSR Music_Show) I$ [# V" r- f+ A1 I
  2302. Music_Song_Next_End+ M# O4 G' a+ Y" @" o7 V0 i* D
  2303. RTS
    , ~8 a, ~- w; _  M2 M6 [5 t5 j

  2304. . q# @! K* k/ a# N! y1 l% M& g, D
  2305. ;==================================================
    , D  C/ Q: p' I( z0 g/ ~& G6 F# g& W
  2306. Change_Select_Item;改变当前选择项: {9 X1 E4 e7 B* O' c% F& D
  2307. ;--------------------------------------------------  i3 ]  L  d/ C6 r. J) o3 }: ~
  2308. Change_Select_Stop_Play_Item;停止/播放
    3 n; @" i7 \2 w) @" T' [) y
  2309. LDA <Key_Once# [) m& N5 W, W/ h
  2310. CMP #$10
    7 ^5 |7 f5 G& B) L3 k; k  G: _
  2311. BNE Change_Select_Last_Item, a" @2 z( K, n
  2312. LDA <Music_Stop_State
    " C8 Q3 c  V/ ]; O3 {
  2313. BNE Change_Select_Play
    3 u# @( E- I1 \
  2314. JSR Music_Song_Stop9 C1 `& \+ P  }
  2315. LDA <Music_Stop_State
    ! `( O/ W& P. t# A" D6 t" q
  2316. RTS
    , n! ]! y7 e9 V% F; I- k% U9 w, k

  2317. # n. u: q* G* v
  2318. Change_Select_Play
    ' Y  X. A+ i/ j2 W* l8 x
  2319. JSR Music_Song_Play
    , ]; ^3 x! I# m  T! N
  2320. RTS
    3 }: W9 |0 l+ o. F2 M- G
  2321. 7 f5 r3 I9 P! D) E% B
  2322. ;--------------------------------------------------& z3 Q! i# `) G7 b1 g
  2323. Change_Select_Last_Item;上一个专辑
    % J4 y$ i# ~! }& s6 L7 V$ m) X0 x8 k
  2324. LDA <Text_Disable_Flag
    / N! ?3 ~4 Z2 m; j6 [, q
  2325. AND #TEXT_DISABLE_ITEM" z$ C- Y4 R& P! B
  2326. BNE Change_Select_Item_End4 Y$ F. A0 @' p' C3 ?# B& A
  2327. LDA <Key_Once
    ; M. R( J5 w8 T
  2328. CMP #$08) V* W  S" W& Z' \  J1 q  `9 @6 `
  2329. BNE Change_Select_Next_Item
    0 A6 g$ {9 W' [8 l0 E" P4 d) Y7 b
  2330. JSR Last_Item
    + v; q: V! N- L$ v- e% T, p* q
  2331. ;--------------------------------------------------
    * m9 q& I# O. |$ F, J$ R5 f  O
  2332. Change_Select_Next_Item;下一个专辑2 m, J. A3 {+ j
  2333. LDA <Key_Once
    5 q8 N9 I3 Q$ O  Z( [
  2334. CMP #$04
    % t9 `) K2 b1 z2 h, y% b$ S
  2335. BNE Change_Select_Last_10( M4 V  c6 c. q$ W7 s2 W. w/ \1 ~4 A
  2336. JSR Next_Item
    * K* w6 x; s; v. O/ n+ W( k3 j$ M
  2337. LDA <Music_Item_Cur. i! M! P/ D: N5 c% \: G
  2338. JSR Get_Page_Start_Index
    5 T% K7 J+ y* P! }. T2 ?
  2339. ;--------------------------------------------------
    9 m+ i; }7 B" o# ]" H2 O
  2340. Change_Select_Last_10;前10曲
      x& K# T! O  L  C3 ~6 y
  2341. LDA <Key_Once
    0 Y5 ~/ Q) I2 y# [
  2342. CMP #$40
    & p# N# H$ n1 H' k" m( L- `2 Z2 z
  2343. BNE Change_Select_Next_10% R% m  ~8 z/ l
  2344. JSR Music_Song_Last_10
    ( P9 n) w7 A3 [' q  _4 J( p$ z
  2345. ;--------------------------------------------------
    - z0 ?2 x8 U, P
  2346. Change_Select_Next_10;后10曲
    / }5 b1 B4 v  M
  2347. LDA <Key_Once4 m2 l) `- P) l4 g8 u
  2348. CMP #$80
    6 b1 q8 B2 p# t2 W- T
  2349. BNE Change_Select_Last
    + {& `" `, f! }- {# F
  2350. JSR Music_Song_Next_10
    & ~1 }& e4 C+ o3 c0 d' w5 N
  2351. ;--------------------------------------------------
    3 m# Y# d8 w0 N9 c) N; G
  2352. Change_Select_Last;上一曲
    / m. P! V+ g8 d( n6 q
  2353. LDA <Key_Once
    8 e* [* F- j$ s9 F. @# X  L- B9 A; h
  2354. CMP #$02
    " U% z. `% H! V% S1 f/ ~# h! a
  2355. BNE Change_Select_Next: s) t: q. _4 {0 A( d
  2356. JSR Music_Song_Last2 K: }! f: V0 W% |3 a' }; B
  2357. ;--------------------------------------------------; m8 c& X; P2 o, z% J6 A
  2358. Change_Select_Next;下一曲
    7 m- x$ h9 G9 _$ ^
  2359. LDA <Key_Once, c: g' ]) A$ u7 j( W
  2360. CMP #$01
    ! n  P" J3 q) U( l- o" f6 x, y
  2361. BNE Change_Page_Next
    4 M- G- Z* P" N3 X
  2362. JSR Music_Song_Next
    + @$ {" _  [3 o
  2363. ;--------------------------------------------------* }- H' n; `% F3 m8 O! p
  2364. Change_Page_Next;下一页) T" k  Z/ U, P* a! R
  2365. LDA <Key_Once- U5 ]8 s; f4 P! f
  2366. CMP #$20( d) }. A  a& b. K& P5 L+ Z# D
  2367. BNE Change_Select_Item_End/ N; l  M! q2 e1 r( Q
  2368. JSR Next_Page7 N. X5 f( m$ ~9 T7 t
  2369. ;--------------------------------------------------$ O- N* u1 P  ^& i, f
  2370. Change_Select_Item_End
    6 G9 k: y% ~7 ^* B) I8 r9 a6 ?
  2371. RTS, M# c% d! E) i
  2372. 4 T4 G" ^. A7 x2 F$ p- G5 Y) _: J7 N
  2373. ;==================================================4 z, [) Y5 W( l, q: C4 H
  2374. Show_Arrow;显示箭头光标; o: \; f% c( X1 |- l4 d; n2 o
  2375. LDA <Music_Item_Cur/ m: g7 \4 K. z9 k
  2376. JSR Get_Page_Start_Index
    7 T. C% M& e2 l' O6 @% C  M
  2377. LDA #$00/ R+ p2 k& J- T, P6 j
  2378. STA PPU_OAM_ADDR
    4 ], B. C3 w8 e0 x: K" i9 h$ q' @
  2379. LDA <Music_Item_Cur
    2 e+ h$ I/ y$ b) J# J4 m1 I4 y5 ~
  2380. SEC
    ( v+ q& v6 A- `* `- ^& {
  2381. SBC <Data_Buf
    9 I9 q: ?! \0 t+ y
  2382. ASL A/ |/ i6 W" B0 |- f& X* ~
  2383. ASL A! b0 k5 ~" k( b' J
  2384. ASL A
    9 x/ l) l& ~/ C6 c& D
  2385. ASL A2 w0 m# N0 N% h* Q1 M1 l6 i
  2386. CLC6 Q7 i! c+ C/ u- q( I* s
  2387. ADC #ARROW_Y_OFFSET
    & R# h2 w2 f( N/ e, a
  2388. STA OAM_TEMP_ADDR + $002 L2 H! g1 ~4 v" J! U
  2389. ;STA PPU_OAM_DATA. k' h0 [# Z. g" l
  2390. LDA #$1F: a7 I) A. o, ~5 ?, w$ X! J
  2391. STA OAM_TEMP_ADDR + $01
    * n' N& s3 Q! S+ \( z0 F2 |6 a
  2392. ;STA PPU_OAM_DATA: G- k3 z8 B! K: K- x1 k
  2393. LDA #$00" p/ A: n; T0 L% F( _1 F
  2394. STA OAM_TEMP_ADDR + $02. D6 r3 d/ A4 }" X( `
  2395. ;STA PPU_OAM_DATA2 ], A7 U% R9 z: T& w! B$ f7 c3 ?
  2396. LDA #ARROW_X_OFFSET
    ) o  n; t: P, [
  2397. STA OAM_TEMP_ADDR + $03
    : I" m3 K! X- b. y4 G5 Z/ B9 F
  2398. ;STA PPU_OAM_DATA4 n% h* g$ x$ v& r
  2399. RTS  T5 _$ X) l' v" f/ E- p

  2400. 9 n3 \0 ?* D1 @0 h9 e6 W2 c
  2401. ;--------------------------------------------------
    " s" c% S! Q; S( B( g$ W3 q
  2402. ;命名表数据; Q( e" l! F) V" K+ p7 u
  2403. Palette_Attributes  V4 r2 b0 B) j
  2404. .IF SOUND_BAR_SHOW_ENABLE
    + D  u  Q' u9 f) z" }' `& z
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$557 X! n' W& i( T0 G. R/ O
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ; l" I$ o0 k5 Z3 e  g
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$752 s0 A3 K' B) N3 J+ p
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA" s; i: X; o% Y+ Q
  2409. .ELSE
    # d9 v7 ?8 }8 @
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$554 H! k% _* }2 ~- e
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55' s0 P! ~, P. R* s  O8 n. [2 y
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75& V7 \' |# @7 E3 b; N5 o  _0 j* ?
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA7 [- n: h7 O  E3 ^1 L9 ]" z
  2414. .ENDIF
    - t: U6 D: W( e5 w
  2415. 5 n/ S8 n6 z: R
  2416. ;--------------------------------------------------9 ]$ h2 F" M( F8 R
  2417. ;调色板数据
    ) L# a/ J; t4 n2 F% J
  2418. Palette_Data# q; T: q+ T9 h, {
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F  j2 W# S8 N" i- G( X4 u% u
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F$ s6 P5 {& b2 A8 A: m3 b1 w# y
  2421. $ `  [' K+ V1 o" D6 E: X
  2422. ;--------------------------------------------------$ A" O8 O5 g2 r$ B! k  m, ~
  2423. Static_Text_Data/ _" y2 a! u0 m4 N) l" L
  2424. .WORD Static_Text_Caption_Data  r+ \: M* x% v+ ?4 U
  2425. .WORD Static_Text_Author_Data: G* K& N$ {3 b, T4 [( T( ~
  2426. .WORD Static_Text_Date_Data& X# S0 A: s4 b& F
  2427. Static_Text_Data_End
    7 a% ^1 W6 c5 A" j

  2428. 7 S; ~9 T+ |2 ]
  2429. ;--------------------------------------------------. H2 L- D  R( J; `
  2430. Static_Text_Pos
    & b, D7 S5 F8 ?' b5 _! ?
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
      e) ~6 V* Z8 T0 F$ J5 K' B
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    1 K  I& E, c/ e/ h1 k" }1 w8 k; q
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)
    # A6 p' q9 s& i+ n7 p/ D
  2434. Static_Text_Pos_End
    % s' n: c* U9 u3 N) ~

  2435. * h. \& t* u/ F9 P7 O4 R
  2436. ;--------------------------------------------------
    ! j0 }4 L. d5 J5 Q! U& r# `$ s
  2437. Music_State_Stop9 e' A% P. \& C/ B, e% J
  2438. .IF SOUND_BAR_SHOW_ENABLE. M# E3 f8 U) _1 |# r. h& E9 {
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    & Q9 r9 k4 i1 v
  2440. ELSE
    3 j, u: k. O6 G9 @
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00, Q) X0 R0 v( }* p/ X
  2442. .ENDIF' |2 ?" ~8 U7 q& D* L
  2443. Music_State_Play6 v. u3 P# o# ^* c! j
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    9 \& v- t) ]+ n# Y

  2445. 1 O% b" S; ]9 v$ K5 D7 O, ?! k% i
  2446. ;--------------------------------------------------; x* }# I, b  ]- p; N
  2447. Sound_Bar_Text_Data;声音类型文本
    . V! F) J# p0 y9 J% P: t- y; r" k
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"
    - r7 B& \# Q3 F0 e6 s4 |
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    ' u- {- m! |. L0 M% s6 q" f7 G
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"
    9 U6 Z+ _7 M0 X! a, E7 L% }
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
      H+ X# P2 g8 S/ n4 _; c
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    , a4 J& ~0 k' E  {/ J2 X

  2453. 7 Y. ^7 z7 R* b6 B
  2454. .IF Track_Name_Pos
    4 w/ B9 q# R# k* C
  2455.   f/ O. F/ |( \2 I6 U7 {$ K
  2456. ;--------------------------------------------------, B+ ]+ u  Z& ~
  2457. Track_Name_Addr_00;曲目名地址索引, V2 h- `5 y( [- r! M7 f& f; Y! ]
  2458. .WORD Trackr_00_01! C( r9 H. v- X: \  p8 ^. h
  2459. ' Q" j; A0 b4 K0 B
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    7 @, X0 N6 _& C2 o: r
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    $ P' i5 D6 X/ R% \4 z

  2462. % L2 Z8 y( @4 {' M" y6 ~) H8 I
  2463. ;--------------------------------------------------# x) P3 O: D% P* B9 x
  2464. Track_Name_Addr_01;曲目名地址索引
    " q3 n, T. L6 e( R* h" a) ]
  2465. .WORD Trackr_01_01
    4 s5 h3 Q3 I; J) J& a% k+ u1 V* A

  2466. / d, O. W" ]& O' _! X
  2467. ;==================================================
    2 P9 K# @/ Y) @
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1"
    " Q% c6 I; B4 U6 p
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    ) k$ _, L. Q7 x0 U# a4 c
  2470. 3 G. q( r; t( {$ |
  2471. ;==================================================5 P1 \' y) e8 i) g
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引8 a; c) X1 v; C9 j, m
  2473. .WORD Track_Name_Addr_00
    & I( f+ ?% v  i; v3 u: b- ?* J
  2474. .WORD Track_Name_Addr_01
    ; k' o0 }* }0 k0 }- \; W0 x
  2475. .WORD Track_Name_Addr_01
    ' C, J6 K( C, H0 Q2 r: l& l

  2476. ) w  {4 C  a3 n' ~" `: w
  2477. .ENDIF
    6 w& B0 a8 g! x7 f) C6 o/ G

  2478. : Q) w) C, z. J
  2479. ;--------------------------------------------------
    6 B0 y. i2 y) R/ `7 o3 M5 e
  2480. Static_Text_Caption_Data;静态文本数据0 Z) |9 B% {1 U" |
  2481. .DB 16
    ) U2 x1 g+ a' ]# w  c
  2482. .DB "FC MUSIC 12 IN 1") y! ~% J" ?& [0 B
  2483. Static_Text_Author_Data
    8 T# V, w/ u! K( B. g. E
  2484. .DB 258 |, S9 |  S, \% f4 z" k3 y
  2485. .DB "EXTRACTED BY FLAMECYCLONE"/ U8 q5 ?% G  B9 P" [
  2486. Static_Text_Date_Data( D4 P0 ]- F; S! y/ c5 p; u
  2487. .DB 10( d" s; L' O1 V' B0 b# y
  2488. .DB "2023.07.23"
    ) d7 N- v2 `4 O6 }) n
  2489. - E. x+ S) M$ ?0 W' m
  2490. ;==================================================2 f5 T) E9 W" f! T+ j. l/ w
  2491. Music_Collection_Name               ;专辑名间接索引. G: e7 ]$ E2 ?9 k8 a
  2492. .DW Music_Collection_Name_005 e% j5 D7 k; H
  2493. .DW Music_Collection_Name_01
    + }& m+ G2 W. T+ p5 p. G
  2494. .DW Music_Collection_Name_02
    ) x2 t- v! L4 l
  2495. .DW Music_Collection_Name_039 `( T5 A& o$ J4 N5 ^* A! |
  2496. .DW Music_Collection_Name_04
    $ W. v6 w# g% v- h) x
  2497. .DW Music_Collection_Name_05; U7 R4 A8 z1 x4 ?) ~( X
  2498. .DW Music_Collection_Name_06$ K  t6 T3 ~+ k
  2499. .DW Music_Collection_Name_07# P# F' n% j5 N- K# X' N3 U
  2500. .DW Music_Collection_Name_08
    7 y/ U( M+ ?3 P; |' {5 L2 o7 ]
  2501. .DW Music_Collection_Name_09( K% _8 i! m4 F# X& C5 Q
  2502. .DW Music_Collection_Name_10
    # r' e/ \4 L; E9 ?0 k
  2503. .DW Music_Collection_Name_11& [& o2 ^6 A( w# e0 x2 }

  2504. 0 ^' G6 f. c2 G% r7 T& a! K
  2505. ;==================================================# k( s  C% e; E; |/ @0 _
  2506. Music_Collection_Name_00            ;专辑名文本数据
    + X3 r. Z5 Z$ U; ~8 i6 d! B
  2507. .DB 11,"1.RAF WORLD"2 n  r7 h5 P! B9 w7 J8 k* z
  2508. Music_Collection_Name_012 G0 D! J' c( |8 q- b, }! F( y
  2509. .DB 15,"2.FINAL MISSION"6 e' F2 d; x5 Y/ I1 x
  2510. Music_Collection_Name_02- Z1 T, o. j5 S: g
  2511. .DB 06,"3.KAGE"
    6 H; c6 N! y% @& k2 @$ k
  2512. Music_Collection_Name_03
    " m# ^% E& l( ^- X( `0 e  r
  2513. .DB 16,"4.DOUBLE DRAGON"
    ; U) w7 O& W. `
  2514. Music_Collection_Name_04
    # o3 j5 B. [+ ^- Q2 f0 i* k, X
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    % q: [9 \% \' ]# V8 a
  2516. Music_Collection_Name_05  k6 t1 Y- ^- s4 K: y
  2517. .DB 17,"6.DOUBLE DRAGON 3"1 s& h% t+ q& A5 `' f
  2518. Music_Collection_Name_06, V: E3 M7 z, x, K
  2519. .DB 09,"7.ROCKMAN"0 z1 Y* k& d  B- X  U2 B. y( ^
  2520. Music_Collection_Name_07
    7 w7 M+ [- H% J7 O7 Z
  2521. .DB 12,"8.ROCKMAN 2"2 B* u* q% m5 j% [7 \& a9 u0 m
  2522. Music_Collection_Name_08
    ) i1 _5 o8 w8 q5 Z9 n
  2523. .DB 12,"9.ROCKMAN 3"
    , y9 j5 e5 h' J( N& }+ ?+ ]/ @4 p
  2524. Music_Collection_Name_09
    : P1 g9 }1 `& G( i) }
  2525. .DB 12,"10.ROCKMAN 4"
    6 q) A5 {/ M* N) g$ r
  2526. Music_Collection_Name_10
    2 A1 C8 m, t2 S
  2527. .DB 12,"11.ROCKMAN 5", H3 ]" B8 S4 h- S
  2528. Music_Collection_Name_114 g6 N+ L( ]3 w
  2529. .DB 12,"12.ROCKMAN 6"
      \0 \) ^) T  p  s, Y, ^% e
  2530. 3 ~4 M0 k! B& M' k  k1 ^
  2531. ;==================================================
    % ~/ b9 Q( {; H" N
  2532. Track_Name_Addr_Flag                ;显示曲目名标记. e& @) q9 r* n
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    6 k' f3 ?! E1 @. S, g
  2534. 1 g+ q9 k; P  a! O
  2535. ;==================================================
    " C. Q9 }4 y" }  }
  2536. Item_Pos_Data                         ;光标箭头位置0 H* S. K' l8 U# o8 D; l: P- ^
  2537. .WORD ITEM_SHOW_POS
    : j5 A' O( N5 V7 o3 L
  2538. .WORD ITEM_SHOW_POS + $0040
      U* G4 x+ d4 Y6 m; o* y
  2539. .WORD ITEM_SHOW_POS + $0080% D, J( v' x2 ?7 A  |; N
  2540. .WORD ITEM_SHOW_POS + $00C0
    : K9 P# a  }: a5 W* f0 H. b: Z+ z3 |8 o
  2541. .WORD ITEM_SHOW_POS + $0100
    $ S" }6 _% @- Z% p& ]
  2542. .WORD ITEM_SHOW_POS + $0140/ D( K" [5 ^& [8 d
  2543. % D. ~3 `8 o6 l, G, P
  2544. ;==================================================: G$ |6 }" O, h' F
  2545. Sound_Init_Port                 ;音乐初始化入口地址, M  c3 v1 b" Y+ u/ B* y6 ~
  2546. .DW $BFC8! A: r4 g& u5 ]# x; B
  2547. .DW $D7F07 b- w3 K7 ^# Y
  2548. .DW $9FC0
    9 h, X0 g: }% F
  2549. .DW $BF70+ `/ W, S( m- M# K% |
  2550. .DW $80031 D+ ^' w8 ]" F2 s0 L
  2551. .DW $BF308 J5 q: {7 z% J% \
  2552. .DW $9003# r, ?2 T: M4 R& }3 ^% ~
  2553. .DW $8003, d4 B/ `  j2 m/ L
  2554. .DW $8003" @5 |% j  w4 C
  2555. .DW $8003
    5 S4 |6 P. t1 h( r
  2556. .DW $8003
    . k' `  o! x9 _3 q9 ]. x  k
  2557. .DW $8003
    0 \7 ?+ W1 E* w
  2558. " ^& [( d2 Q4 a, E' {3 Q; z
  2559. ;==================================================
    ) L  l5 Z) D( l
  2560. Sound_Play_Port                   ;音乐播放入口地址
    2 I; ?' Z0 {6 v
  2561. .DW $8000
    1 t% k0 J" K1 n4 s
  2562. .DW $8001
    * D) c) l3 V7 p# I
  2563. .DW $A0008 R7 F4 L3 a8 \1 E9 b
  2564. .DW $8003" z' i  }/ m$ ~7 m/ c* \7 n' W, \5 z
  2565. .DW $8000
    . _! u' X' M8 k8 `) A
  2566. .DW $8003
    ! K/ }* p, g: a7 q
  2567. .DW $9000
    9 |) k. |9 C& {: [& X& z+ j
  2568. .DW $80000 F7 B! a  i7 d2 t5 Q1 @
  2569. .DW $80009 \' w. m- ^& q/ k
  2570. .DW $80003 w" j0 T1 v7 L1 J
  2571. .DW $8000
    5 ^' Q1 P3 f( v! ]
  2572. .DW $80009 `% c/ x' B  x
  2573. ( C* S  g0 J( A+ {: e' _
  2574. ;==================================================
    4 }( ?- s- I3 L& u( b& H
  2575. Sound_Reset_Port                  ;音乐重置入口地址2 O& |) A/ z# o2 `; R
  2576. .DW $00002 K" c5 @, ^  [( w0 S+ \& @  V9 Y& v1 o
  2577. .DW $0000$ E1 S( x, h0 r/ q+ v' }
  2578. .DW $00007 ~) S8 ~9 p6 A0 B$ u& K& e' m
  2579. .DW $0000( D) m7 ?' h' B
  2580. .DW $0000
    4 `; I* U3 u' O9 x' W6 G
  2581. .DW $0000/ ~; v7 T, k/ z- E6 ~( S0 }
  2582. .DW $0000
    7 y# P1 u+ j8 C# j5 k
  2583. .DW $00009 ^! z% P- T, [: m- C. @
  2584. .DW $00001 |2 r; s, |& U9 ^8 p, g
  2585. .DW $0000
    2 G% k1 c7 N8 \
  2586. .DW $0000" f4 w/ E  ^! u1 k' @5 T- k2 Z" Y
  2587. .DW $0000
    & }9 T( \) S+ G3 r$ |$ K9 d  \

  2588. . Y) l/ m; W3 L% q; j: d3 i
  2589. ;==================================================) G2 q* n' G' [5 Y& N8 j
  2590. Sound_Total_Port                          ;曲目总数+ ]% N0 t5 e, v7 T% p& z% @/ n
  2591. .DB 385 J! p5 ]1 A5 V4 a
  2592. .DB 332 r( j/ M1 b7 t; ]  u2 Y8 k$ z2 M
  2593. .DB 49; y0 P4 [4 o, _3 H- N* N
  2594. .DB 414 z& e  i8 m4 A) H. a
  2595. .DB 83# C/ d" a: `5 ~3 H) C2 j
  2596. .DB 70
    4 D8 d8 h& t+ `9 \% G0 \" Z5 q
  2597. .DB 50, y- f6 e+ w9 b6 z
  2598. .DB 67/ l% T& f2 \3 o
  2599. .DB 57$ J  A9 A# Y, p/ T
  2600. .DB 71
    3 U+ u- E+ [; [- I
  2601. .DB 763 n9 n1 c) V5 [2 ]# a! G
  2602. .DB 1027 @. b& \; }/ {( v- m' ^

  2603. : l2 v; y4 ]1 F) W9 b2 a5 y
  2604. ;==================================================# D( }8 f0 n& I! p4 o3 w
  2605. Sound_Start_Port                      ;起始播放曲目
    7 p7 n' I$ k2 W# A7 F& j7 Z
  2606. .DB 00
    / L$ L5 [- W# U) [# o% x
  2607. .DB 00" s/ u, L# X0 K+ I
  2608. .DB 00' W) u7 I+ T6 O: j
  2609. .DB 00# j+ `; g& B9 y' t! x
  2610. .DB 00" u8 I  E2 W: }7 N
  2611. .DB 00/ N% H# w) h( U* M! q
  2612. .DB 00
    # {1 c% U* B) i# F: V
  2613. .DB 008 V% d- F# o- K0 b
  2614. .DB 00
    $ c3 {, k) E! {$ X
  2615. .DB 00
    2 G, P! X2 S1 Z6 r$ s
  2616. .DB 00. S& i' K* M/ @9 M
  2617. .DB 00( p1 ]  _$ j4 v4 M3 s

  2618. 5 q6 e2 E  a6 W4 q. A8 z- k; w
  2619. ;==================================================
    3 j* Q1 q7 Y: o9 V
  2620. Sound_Bank_8000                      ;专辑bank_8000# E  t$ R0 f6 i& O6 v, b
  2621. .DB $10
    3 O, n' e1 z0 o) F$ z( v
  2622. .DB $12, _0 L4 y1 ^$ r
  2623. .DB $14) Y" O+ m1 H1 e9 O4 Z! A: R' e( g
  2624. .DB $16
    . G. S% @+ u/ Q0 n
  2625. .DB $18
    9 E4 B2 ]! b  C1 O2 H4 z' g7 u
  2626. .DB $1A& @% ^1 h( M/ I, ^/ c. E
  2627. 4 Q1 D% }* G# C5 i% C/ n9 |' r# d
  2628. .DB $00
    ( b. S# T: W+ ~: O2 Q6 S
  2629. .DB $02
    ) {$ x4 v4 O6 o( r2 z$ K
  2630. .DB $0D6 ^  V% {$ L2 k% K
  2631. .DB $04
    0 E# E  i( H/ m' B2 e
  2632. .DB $075 q) p3 m. B7 o3 k; @0 M0 ~
  2633. .DB $0A
    7 o0 v1 f3 e: w- ~
  2634. 4 T) @2 c1 T" i% z5 m$ M  e. _
  2635. 3 q* ?. m/ |  |
  2636. ;==================================================) s4 j. d: H/ m5 k" U1 T
  2637. Sound_Bank_A000                      ;专辑bank_A0000 `7 n7 x( f& n' c
  2638. .DB $117 d9 V: C5 |! ?# L6 E; D9 ^; X
  2639. .DB $13
    ; B: c5 {6 w6 }- v
  2640. .DB $15
    * P2 C: L% U) q
  2641. .DB $17
    5 r  R! S! M+ a" ]6 z3 o. p
  2642. .DB $19
      G1 X4 G/ k! |, V+ X7 i
  2643. .DB $1B
    " y6 x: [& v3 I! `
  2644. 1 t7 I& z9 w5 s: Z1 x
  2645. .DB $01
    ; p) T1 |7 t  ~7 b$ F
  2646. .DB $038 o; `! e) I) F# ]& \# {, \
  2647. .DB $0E
    ; E4 }# ]7 x6 H
  2648. .DB $052 Z7 h) \6 S( K) j$ f! j
  2649. .DB $08
      T' l( I, X% B7 I
  2650. .DB $0B
      Z# l* J* b; b( f/ S7 T& Q
  2651. & A9 r( \1 @% K7 [8 X) ]1 t

  2652. 4 a9 O& h! d7 w- g
  2653. ;==================================================
    & x) ^& @/ f' @. y
  2654. .BANK RESET_BANK & BANK_DATA_MASK
    # C2 F; j! ?. C/ Y
  2655. .ORG RESET_ADDR0 v* c: M) F, Q

  2656. 2 ~) ~$ Z+ R, y! L
  2657. ;==================================================
    ' B0 L8 R6 S, f  G
  2658. Switch_Bank_8000;切换bank到8000-9FFF
    8 k" q4 B  B, h
  2659. PHA( u! \' n  T, d/ w1 a% v, f
  2660. LDA #$06
    . W; j- W! d9 e% q9 k2 t
  2661. STA MMC3_BANK_CTRL
    ; l8 v  J" D4 Z; p. H& L8 U- {8 x
  2662. PLA
    1 e: G1 {( f0 ~+ t; N4 c
  2663. STA MMC3_BANK_DATA
    ; Q/ `0 N4 \1 K3 d
  2664. RTS, S. }. p* c0 y, ]8 J

  2665. " }) Z% B& k. P
  2666. ;==================================================
    ) x& @4 [- k4 [8 i
  2667. Switch_Bank_A000;切换bank到A000-BFFF! ^: ~3 B6 E) c6 A! j% D6 d% T4 |
  2668. PHA
    ( S) E$ T4 Z% g. _# ?: y* l2 b
  2669. LDA #$07
    * C' _# ~0 @7 H: p' C- V% P
  2670. STA MMC3_BANK_CTRL
    , ?# ?, i* K, j' m: t( Z, T
  2671. PLA  f1 ~( h: E2 ^2 \7 a4 \
  2672. STA MMC3_BANK_DATA
    " D! ]9 c/ I! q+ X! g( e0 ^$ _; H
  2673. RTS4 ^8 s5 n/ R  Z" ~% _& ^9 T' T

  2674. + n1 U$ K$ \+ F
  2675. ;==================================================
    , t# }( }* Q9 C8 d) k, j0 E
  2676. Switch_Main_Bank;切到主程序bank2 C) |  A8 q* k% l5 I1 A, n
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    " Y/ Y2 K) a! y/ G- k) R+ c1 e
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank: q  b4 t8 Q2 b$ s8 c2 L; P6 e" o6 _
  2679. RTS3 w; x& I; m/ n( `& \. l; u  h
  2680. / l# d+ a8 A7 [6 p
  2681. ;==================================================
    % ?! E: _/ o5 e& T- f
  2682. Sound_Reset;音乐重设(如果有的话). p) k9 M. j! |- T6 }: t  Q
  2683. JSR Switch_Music_Bank  ;切换到音乐bank! \2 [9 [9 F- U
  2684. JSR JSR_Addr_Op        ;执行音乐重置
    * k% A2 M4 t- e7 [: z+ ^+ |$ f
  2685. JSR Switch_Main_Bank   ;切回主程序1 z& T0 V# I/ h2 M+ O
  2686. RTS
    8 H3 v" F! n# L' E8 [9 f' j9 _

  2687. 1 }- [3 W" o+ H! W3 l
  2688. ;==================================================
    $ v5 N& s+ h: G" q  J0 z) z
  2689. Switch_Music_Bank;切换音乐bank; E7 l. _! m* }  p0 q' t
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号
    6 Y' E1 B4 L- M5 M: \; B
  2691. LDA <Music_Bank_80006 b' F/ n+ D( a
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    5 [" [8 }' ]2 j" |. a' B- G7 Q
  2693. LDA <Music_Bank_A0000 Y+ X  H6 m8 ^( g4 M4 B* K; q, k
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank: Y0 R& \7 Y# C& ]# w1 I$ W
  2695. RTS
    + k1 z) F+ t/ _* `
  2696. 1 a& e1 D, j5 Z/ c& @
  2697. ;==================================================
    ! |3 }. C8 ^6 S$ E7 l' h
  2698. Sound_Init;音乐初始化. q' V. V/ P0 ]# K: C
  2699. PHA
    7 ~" _' |" `& W7 l  ~/ e. }
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
      u9 x1 U0 F+ c0 q/ A4 a3 j8 ^/ i
  2701. PLA
    , I1 J* b/ Y3 a; L' b/ k
  2702. JSR JSR_Addr_Op        ;执行音乐初始化2 k  B. ]1 c. {: [
  2703. JSR Switch_Main_Bank   ;切回主程序
    ; _5 d( ]8 H* X/ |( u
  2704. RTS
    ! C/ n9 y2 E2 l/ Q! ~* ^; F

  2705. ) D0 h6 v+ ~; T
  2706. ;==================================================1 k3 e7 @1 @) K; z
  2707. Sound_Play;音乐播放, q0 o4 `3 D$ |8 T- e  U: |0 }, U: c
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
    ! k0 Z. n% H1 s2 I1 u! l. x9 o
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    ' Y0 f; a5 Q& u. o) V; |! C
  2710. JSR Switch_Main_Bank   ;切回主程序* U9 B# v7 Z# y# ]3 N9 {2 w
  2711. RTS
    * x7 l, \! X8 }% L" b
  2712. 4 w; R# v# h% R+ b0 n
  2713. ;==================================================+ p- g, r% ]9 G$ o/ [6 s
  2714. MainLoop;死循环
    3 X# B! M$ n! s, w- f
  2715. JMP MainLoop
    1 F+ _" _9 z  ^' s) ~$ P

  2716. ) z5 g3 D5 l& Y1 u
  2717. IRQ_SUBPROCESS_JMP = 0
      E: j8 w# f1 R7 h9 G

  2718. 9 t( x, S, {6 Q# R# R
  2719. .IF IRQ_SUBPROCESS_JMP
    5 T- e. B7 p0 H5 T8 @3 M
  2720. ;==================================================4 k+ g/ R4 d7 v
  2721. IRQ_Process_0;IRQ处理过程0
    + z& B( D8 K# h% D1 U

  2722. . a6 [: y1 D2 h8 A% w
  2723. ;15条扫描线后触发IRQ1 R7 X" J, ?- K% O
  2724. LDA #15' a9 n' ^2 e) X  N
  2725. STA MMC3_IRQ_LATCH* L' u$ {' X' Q( s
  2726. 4 w  X" O/ P; Z$ F9 I- h  g# X1 `
  2727. ;设置屏幕滚动4 a# B) N  ]; M5 E1 t4 }( M' @8 B
  2728. LDA <Scroll_H
    2 `6 K) i$ G. Q
  2729. STA PPU_SCROLL
    8 @! m$ h3 Q6 B& q: j$ O
  2730. STA PPU_SCROLL
    ( s- T" M  q/ \5 b
  2731.   P: q: K/ L/ t5 I, {) {& v9 E
  2732. IRQ_Process_0_End
    / D5 }# D) g  D3 i- b% {/ }
  2733. INC <IRQ_Process_Index
    2 @$ b  K# ~" F# F/ |
  2734. JMP IrqProgramEnd
    ( X- F0 }" D1 k" z: `$ I- A. T

  2735. + z% t9 K  i. m: Q0 C
  2736. ;==================================================( z2 n% w9 T0 w' @. P/ |- x3 }
  2737. IRQ_Process_1;IRQ处理过程18 L9 b. f/ N$ X* Z% B" }3 i
  2738. / ^' y) N0 c7 ^# f1 ^# _
  2739. LDA #55& M7 D% E0 _# [2 n7 G4 D
  2740. STA MMC3_IRQ_LATCH/ Z# m5 C5 U7 c/ C: F

  2741. ( B4 \. ?( Q$ T* r: S5 B% P
  2742. ;设置屏幕滚动+ j+ ~& @0 M8 _5 T1 c; D6 D
  2743. LDA #$003 R9 X" p' T8 ^' ^
  2744. STA PPU_SCROLL
    & I0 V% h' r* ]' ]+ y! C8 h, A0 `
  2745. STA PPU_SCROLL
    ' f# V  w' i, Q1 J4 ?

  2746. : `! `' e! ~# `8 c
  2747. INC <IRQ_Process_Index! u& Q& X7 a1 \- r* m7 a
  2748. JMP IrqProgramEnd0 j- n2 @$ K7 U) Z: [
  2749. " ~, V4 L2 T& M9 S( q1 \
  2750. ;==================================================+ p7 V! \& z2 n. p) H+ y$ {: @
  2751. IRQ_Process_2;IRQ处理过程2
    / w, x/ h) r6 k, P3 {" }0 S' G

  2752. 1 b  Q( o* E, Z5 x/ R
  2753. LDA #15
    2 c3 a0 k) W7 x& i3 U" H
  2754. STA MMC3_IRQ_LATCH/ D. t+ n, C) x& i& U
  2755. 5 X0 B  n5 ]. U0 L- S3 X
  2756. ;设置屏幕滚动) \" Q) \4 i. Q! [. o7 A9 U
  2757. LDA #$00
    % H& K" m. s* n4 `; H
  2758. SEC
    2 q$ g0 g1 M5 B7 x# r1 [' U
  2759. SBC <Scroll_H) J5 C, K' i# M" r2 K
  2760. STA PPU_SCROLL
    " O6 u  X. L8 n' I  t# r0 F3 n
  2761. STA PPU_SCROLL  r, `; E) e) S: |
  2762. 4 y8 d4 w8 [# q# R% p; V
  2763. INC <IRQ_Process_Index6 ^) {" N* C2 Q
  2764. JMP IrqProgramEnd" Q* D) s0 O) ~6 {, W* o! c
  2765. , `" R% v1 ^& b7 I2 A
  2766. ;==================================================
    # z+ S) `( F; H- [! o
  2767. IRQ_Process_3;IRQ处理过程3, H" Y  X+ F# ]' [3 Q3 M

  2768. ( _3 {7 r1 U% x5 l. g2 Z+ d1 F
  2769. ;设置屏幕滚动
    3 R3 s. J% b& _" F
  2770. LDA <Scroll_H) j4 X. r! V  f  V9 c9 f3 ?: ]
  2771. STA PPU_SCROLL
    ! O+ ]6 {$ m! `- q: y$ Z" `" s- W4 W5 {
  2772. STA PPU_SCROLL0 v' X- |7 p. X0 [! C
  2773. 9 I, l  Y- ^' d/ F1 h
  2774. ;禁用IRQ
    % e" n2 [" Y% m1 v+ _4 K- d
  2775. STA MMC3_IRQ_DISABLE
      N( F1 O# U: E6 t
  2776. JMP IrqProgramEnd2 k. s1 E. }/ {, p. ~% E

  2777. . q0 {& ^9 j/ o8 g# J1 ^$ L( V  ]& W- [
  2778. IrqProcessAddr: G! x+ ~0 ^- c* Y
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    $ p- [$ ~  T" c. i3 F
  2780. " s# g* |% P' ?! z% @
  2781. .ENDIF
    0 v7 d3 w# D9 I

  2782. - C  V: s( y9 B: H  ?3 u
  2783. ;==================================================
    0 V; {* {+ @2 b# A) H  _- a
  2784. ;IRQ滚动模式常量
    ! ]" g9 a! @* V( J5 P0 p* e/ e! j
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动
    : m2 y, M; H; L: `
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    9 J' I  c! `( U- L9 d; V5 j& f
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动) X! k* S) b1 z6 K
  2788. / a2 q, j  e4 w/ Z& W6 Q2 V
  2789. ;IRQ扫描线数据& h. ^5 g+ }# {# l+ [
  2790. IRQ_Scanline_Data+ e* u# M6 Q+ s: y7 J) V* k
  2791. .DB 8/ g& I% n3 }" {$ {) k3 Z8 q8 |
  2792. .DB 54
    1 e+ x6 X9 Q1 V2 \) d
  2793. .DB 8
      I. s+ s' }) z2 a2 B  l
  2794. .DB 00 ;关闭IRQ
    + t+ d" Q5 Q1 `$ {* x
  2795. ) S4 d% d) I: ~- m  j
  2796. ;IRQ滚动控制模式
    & U( a* s/ y; V8 T" `; a) O1 y- C
  2797. IRQ_Scanline_Mode
    ; M8 H% K" h  w7 I; ~* A
  2798. .DB IRQ_SCROLL_MODE_ZERO( P; c) o# R; A( ?
  2799. .DB IRQ_SCROLL_MODE_ZERO
    ! \' v, Z& L0 {" @4 v% S/ p
  2800. .DB IRQ_SCROLL_MODE_RIGHT( B7 \1 m7 k% t& `
  2801. .DB IRQ_SCROLL_MODE_LEFT
    % M, |+ n  S' |0 {' f" E% Y
  2802. ; n/ I8 [' R7 z* x3 ^! T$ x
  2803. ;==================================================1 D6 O" O4 y5 Q
  2804. ;IRQ处理
    & S" ?: o* x& K" c, f' X
  2805. IRQ_Process
    6 F* w% Z2 c- @
  2806. LDX <IRQ_Process_Index
    , ?, K0 w- L4 Z7 a+ }, e
  2807. LDA IRQ_Scanline_Data,X* Z7 f! u6 \9 l
  2808. BNE IRQ_Process_Latch
    $ I' T* Y) {8 D) W/ l
  2809. IRQ_Process_Disable;禁用IRQ
    ; D3 q( Q& a8 h9 B
  2810. STA MMC3_IRQ_DISABLE0 B1 D3 m8 I4 P4 r
  2811. STA IRQ_Process_Index
    ! J6 [- |" ^: m
  2812. BEQ IRQ_Process_Scroll
    0 a4 r3 g6 C8 D- a1 ~
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    : N; f: A+ t- w' u( n
  2814. STA MMC3_IRQ_LATCH
    6 i+ a, }& T  p- t
  2815. INC <IRQ_Process_Index
    8 }6 v, ?/ @0 v9 A
  2816. IRQ_Process_Scroll;IRQ滚动控制
    - O% }/ |- d" F
  2817. LDA IRQ_Scanline_Mode,X  z$ i$ h9 u% [
  2818. CMP #IRQ_SCROLL_MODE_LEFT7 ^9 E7 }2 h- O7 F- f
  2819. BEQ IRQ_Process_Scroll_Left4 F1 Z6 u+ D5 ~/ N; X& H0 [
  2820. CMP #IRQ_SCROLL_MODE_RIGHT/ f: q, O7 t; O$ t! r
  2821. BEQ IRQ_Process_Scroll_Right: C# _; q4 U1 U1 Y" o/ g; C9 z
  2822. IRQ_Process_Scroll_Zero;不滚动
    + ~$ C7 Y/ }, r+ p6 G& N- V# u5 Z4 c5 @
  2823. LDA #$00
    + }& r$ J7 p1 ~+ E6 o) U
  2824. STA PPU_SCROLL
    ) y( r( _" `0 N2 v2 |6 w. y
  2825. STA PPU_SCROLL0 \6 g( I2 Z  u- j
  2826. RTS
    - N: c8 A/ |9 h" B9 N8 ?; d
  2827. IRQ_Process_Scroll_Left;向左滚动
    & b4 n) G1 |8 H% y
  2828. LDA <Scroll_H, _$ h5 |, v4 O$ G2 ]0 }& A0 M, a) L
  2829. STA PPU_SCROLL- X# m. x' t8 H# u+ W
  2830. STA PPU_SCROLL
    9 P* _- Y4 r' h  e) D2 o
  2831. RTS0 I9 c8 P, f! ^
  2832. IRQ_Process_Scroll_Right;向右滚动
    : H: U& q8 f4 k; S" B: a, u- d
  2833. LDA #$00
    4 h) @1 t- }- H  u: D, h4 R9 U5 k
  2834. SEC( U* k$ B7 \5 h+ @
  2835. SBC <Scroll_H
    % S* S% @- Z% [2 H
  2836. STA PPU_SCROLL
    2 W, N6 I4 R& C6 k9 P& W3 X
  2837. STA PPU_SCROLL/ h4 J4 O5 \0 L% ?; m# u
  2838. RTS
    ! i. M2 \- f6 x# m1 Y$ V; ]

  2839. - ~9 ?# V6 ~/ p: I& o  m
  2840. ;==================================================* @& ?. e$ @3 l) F! d0 v
  2841. NmiProgram;Nmi中断处理; {5 Q5 L2 v$ K4 r9 d% _
  2842. PHA9 q* A* E' Y. ^* C: D7 o. ]
  2843. TXA$ u& z2 X( z/ {
  2844. PHA
    ' v' m! @$ ~7 f7 F
  2845. TYA
    ) N. n. ~5 W$ `! J( o0 r
  2846. PHA3 y5 G3 o* f4 f2 [5 S2 ?5 [
  2847. & D0 S  p1 k/ G" j' f6 M
  2848. ;读取清除Vblank标志, 防止重复进入
    7 ~0 i: J$ F5 D* e! f7 Z% M9 W" K
  2849. BIT PPU_STATUS/ g  `& `" _5 d; J- x

  2850. . `1 N1 a' F! o
  2851. ;切换主程序bank
    # ?! \4 B7 T% F
  2852. JSR Switch_Main_Bank
    2 `) ~4 [8 a1 R' O$ d
  2853. + N8 u7 W" Z* M
  2854. ;Nmi处理
    - i: ^7 S& s5 T! }' L6 ]3 a( H2 y
  2855. JSR NmiProcess
    4 a6 u4 s+ M( ~& [4 L# X4 \
  2856. ! x# j+ j: W# ]( J" Z
  2857. Nmi_Proc_End' k! f; Q1 A  h
  2858. PLA( x! t. b! V/ ]
  2859. TAY
    # h: X9 d+ S; j( {2 a/ B
  2860. PLA2 w2 g1 ~4 k, }6 n8 Q
  2861. TAX4 ~4 u& H$ ]: M
  2862. PLA
    2 w8 ^' D$ ]( A' p% P
  2863. RTI% z% k5 a6 t2 E; p+ i
  2864. ' K( F7 M; K, O) }+ H) _0 W; U1 o
  2865. ;==================================================
    * o1 {/ j; F0 B/ O: h" |- g; @
  2866. ResetProgram;重置中断处理4 n5 T8 @1 V( A- }9 t
  2867. SEI- L; V: J6 _. Y/ ^- z6 c+ X$ @
  2868. CLD
    % V4 L- O; v; m
  2869. LDA #$001 U& y0 C7 h( E$ {) a
  2870. STA PPU_CTRL3 ~" q% ^9 K+ Q2 P, e8 B' a
  2871. STA PPU_MASK- t( v9 F5 a( q) c, E

  2872. 1 B9 x. N' t) T. o/ q
  2873. ;切换主程序bank
    # x: r7 P% t# u( N8 b; w
  2874. JSR Switch_Main_Bank
    ( B7 K* ?- `8 k9 H7 U; T- b2 Y: s

  2875. 8 E: G7 k/ I2 p5 s
  2876. ;程序处理开始, ^% _$ a$ X# N) Y6 I) Y- A
  2877. JMP ProgramBegin5 [" o& s2 U- f
  2878. 1 y% Y0 A- Y; S2 S
  2879. ;==================================================* n3 r) ?( m6 P5 w8 q
  2880. IrqProgram;Irq中断处理% E- E( e) N  t* j5 }/ r0 h
  2881. PHA* w* Z8 _" E/ c6 U4 G" Z
  2882. TXA9 i7 A  M- g3 r  g2 g8 {' |- l
  2883. PHA0 H6 x  f; _" L( j1 N& W8 A
  2884. TYA
    , f' \9 a: U; x& U
  2885. PHA
    - p( q3 R- k" }3 h9 f

  2886. 6 y5 n3 _+ o7 z
  2887. ;关闭IRQ! b& n( ^% r0 h; L. H: T5 w
  2888. STA MMC3_IRQ_DISABLE& Y- |$ I( g8 C4 C. m/ L$ v

  2889. - a; ]- \% g/ `3 `7 ]
  2890. ;允许下个IRQ触发4 V% z' k( u- d- k
  2891. STA MMC3_IRQ_ENABLE
    6 _3 k9 e% e2 M* }

  2892. 3 z. {! B/ x9 y' }8 c
  2893. .IF IRQ_SUBPROCESS_JMP  a* L1 S& u0 i6 z2 K
  2894. & r" j! m4 T; @
  2895. ;执行IRQ过程0 x* C4 ~6 Q/ t- c* a8 H) h
  2896. LDA <Data_L4 _: x+ Y* ?; D: p/ w$ h7 R
  2897. PHA8 a- u& O/ K  y9 Z
  2898. LDA <Data_H% l6 s6 p$ }) W
  2899. PHA: T3 V0 e' e: N; p) g
  2900. LDA <IRQ_Process_Index5 R( m7 X; j  ]% x
  2901. ASL A) K  w! N( t% t/ z; |& r+ d( m% S# l
  2902. TAY
    6 u5 b. F( Q& h! V/ Z0 S2 G' ^! t6 G! ]
  2903. LDA IrqProcessAddr,Y
    . ^- L& b# I( x. y) I! J
  2904. STA <Data_L
      f: D2 j5 |9 r' \7 S; A
  2905. INY
    & r3 O) ?* P9 w0 \/ I, w7 L( _
  2906. LDA IrqProcessAddr,Y8 E& J/ G. k9 p- \; l
  2907. STA <Data_H7 J8 I( H; [$ ]1 l4 Z
  2908. JMP [Data_L]) H7 N! b, `: \! X7 F8 Y& a) ?. {! m
  2909. % k+ n4 G6 v0 p6 J( x
  2910. .ELSE
    $ Q5 D1 p1 f5 q; o! G

  2911. 3 ?/ ^9 M0 t, q  ]! {
  2912. JSR IRQ_Process" y9 T3 p8 u' c. V/ m' n
  2913. ' s+ z/ O  n0 V7 p7 A- V
  2914. .ENDIF) O: N+ L9 ^+ K& I. Q

  2915. . j% l& d' G+ X
  2916. IrqProgramEnd
    " J3 I* g( Q! \: w+ i9 r6 `4 a
  2917. .IF IRQ_SUBPROCESS_JMP9 S2 k8 R- ]( O
  2918. PLA
    2 T9 G2 d( `8 l1 x' t9 O% D- \
  2919. STA <Data_H1 I/ ~$ p, ?1 Z
  2920. PLA  I9 {& U1 w2 y6 m' A
  2921. STA <Data_L7 V" {3 Z# t  Z' [8 _6 q
  2922. .ENDIF9 [1 \; P" Z7 G. M# X( r) f
  2923. PLA+ \2 ?$ F9 @' E- ^5 F1 K
  2924. TAY
    # m3 R7 Z8 j- M$ \( ^, m' i- F; }
  2925. PLA
    % s$ Z. t8 x5 m+ ?; Y% p& y. j. U6 m
  2926. TAX
    $ e* r  z4 o/ h) D8 a$ B& S8 R
  2927. PLA
    ' s6 J2 A, j' H( p3 N+ i4 X
  2928. RTI" l9 t. w# h6 P% T: l  \8 z& _# o

  2929. ( f) w/ D  P* ~5 E/ ]/ |; M' K& i
  2930. .ORG $FFFA
    - @( b5 E5 U+ k
  2931. .WORD NmiProgram
    7 p1 t! K6 ~0 v$ S( J
  2932. .WORD ResetProgram
    9 o9 U: W3 o! r) ?; o, O
  2933. .WORD IrqProgram; b; Z( I  P+ R0 ^5 Q! ?9 K  N

  2934. 0 @; r6 D1 b7 e
  2935. .BANK RESET_BANK & BANK_DATA_MASK
    . f0 }" ^$ ~  F* o4 a
  2936. .IF SOUND_BAR_SHOW_ENABLE* S+ `, u2 Q- {

  2937. - f4 x4 N; q4 V* z  q
  2938. .ORG $FE00
    2 g" h8 Q5 h* p2 d3 O/ A: z; ^4 m
  2939. PHA
    : O+ a2 d4 ?$ P/ D3 h
  2940. STY $07BA1 B5 K0 g  Z, M+ y0 j
  2941. LDA #$8D
    # o$ O5 z, X& \; {
  2942. STA $07BC8 H: O/ W. Z7 L- Y. Z
  2943. TYA$ g) g0 M8 k& p
  2944. CLC9 b0 l. u1 F5 C
  2945. ADC #LOW(Sound_Bar)
    , h0 ]( c$ |: O1 s3 `; R* Z
  2946. STA $07BD: O8 P- ~2 i( A& I8 c
  2947. LDA #HIGH(Sound_Bar)
    . L7 P- w7 Z# L
  2948. STA $07BE% R+ b. o6 m( O$ z; Y
  2949. LDA #$60; K' f) I8 @! @( L+ R
  2950. STA $07BF9 ]# y* c0 B! Z; V
  2951. PLA0 B+ m, r  l3 F" `
  2952. RTS
      M  n0 v  X% R6 k- t
  2953. ; J# t6 D3 Q6 k6 ]
  2954. .ORG $FE204 s, S( U$ _: t9 d7 j
  2955. STA $07BA! g. L7 o2 ~# \# V6 E
  2956. CLC2 w. Z2 M8 E; h
  2957. ADC #LOW(Sound_Bar)
    / j# v- L/ S/ s* `0 ]3 g4 e/ H( _
  2958. STA $07BD
    $ L" @6 S! u, ~( T# r. i$ U( [
  2959. LDA #$8D0 i- s* H* a4 s7 ^- g6 S  {
  2960. STA $07BC
    % D0 K8 P( M" Z% F3 ]9 t8 n
  2961. LDA #HIGH(Sound_Bar)5 u% Q$ X  f3 s5 D
  2962. STA $07BE. |7 v0 y/ w" [
  2963. LDA #$60+ S, ?) s" ^! ^* L! a  B
  2964. STA $07BF
    % d1 D% @* J) @, i, M
  2965. RTS
    6 `/ Q7 `% ~  I, k, y. |2 Q1 a
  2966. % d: @# p1 O5 `5 ^" T  s2 I* H
  2967. .ORG $FE40% y4 I( ?9 a7 ?& ^; V5 G% r, L
  2968. PHA
      w0 D8 E( a2 k, k! F
  2969. STY $07F1% w7 c' m& F( F: c% A# v3 j1 o
  2970. LDA #$8D
    ; u/ I+ I2 G6 D0 m' L+ N
  2971. STA $07F3
    1 s- }0 {4 P3 {* }+ f( e
  2972. TYA( l8 f- N, f" J& S8 L% J9 ?
  2973. CLC3 S2 j0 R7 y4 Z
  2974. ADC #LOW(Sound_Bar)
    " B. a1 M8 E+ J4 s9 @8 [, D& {
  2975. STA $07F4  v" S+ ]0 x- [/ Y4 E/ t
  2976. LDA #HIGH(Sound_Bar)
    1 t5 Z. E. N7 E3 {7 P" D
  2977. STA $07F5
    % G. `# f/ O9 M' @5 W
  2978. LDA #$60
    : i+ N$ P5 W. v) e5 M9 ^1 R0 [
  2979. STA $07F6
    % h# z; k/ }/ _& A
  2980. PLA: y* b# G3 l) h6 }* k4 a* I
  2981. RTS7 |* k$ y: V/ p. a+ H8 t3 D, C1 r2 g- H

  2982. 2 k, F9 K) m& h! f* `( X6 @1 l
  2983. .ORG $FE60
    # |2 p1 E. @7 L: d- z
  2984. STA $07F1
    ; \: Q; @6 d$ F( y! n' O
  2985. CLC
    4 m8 g& U/ L. P
  2986. ADC #LOW(Sound_Bar)
    / E: w' ~6 n2 S( p( H
  2987. STA $07F4) A! Z  F/ I1 W6 `
  2988. LDA #$8D# h& A* H2 [( g4 }- z
  2989. STA $07F35 ]6 r# _  \- R- k* s9 k
  2990. LDA #HIGH(Sound_Bar)
    2 ~; L9 T' v5 D9 |% K4 r
  2991. STA $07F5: z( S' s1 v: C/ a  L! z2 e1 Y8 y
  2992. LDA #$606 ]' ~7 o* Y! J4 _% t% r4 e
  2993. STA $07F6* r! v7 a# v. p# v9 K  a" m* f
  2994. RTS& o, Y# M* h2 O
  2995. ) }# M; e1 Z) T( V, T4 J2 I% M
  2996. .ORG $FF40& ]! D& b  }, D0 Z, r+ V
  2997. STA $4000
    1 ]5 W2 f) @; e: h$ f
  2998. STA Sound_Bar + $00: i' o+ _/ i' g; u7 x0 u3 K0 r! _9 _
  2999. RTS
    - {$ k; k: w  R# K8 D& \5 b9 U
  3000. $ y0 v% O) C+ C5 `7 r
  3001. .ORG $FF48
    + N5 z, `) u7 q8 t2 f0 z0 [
  3002. STA $4004
    3 W* p# K8 Y6 R9 r  Q' X
  3003. STA Sound_Bar + $04* \6 B: l7 y, @: i" i* |2 r
  3004. RTS
    ) ]* ~. s! d0 `
  3005. - E( i% N+ @/ i2 j, m7 P! |5 q# a
  3006. .ORG $FF501 V/ R0 e4 T. K( Z" D% k4 \
  3007. STA $4008
    1 k; ?$ }  t( K+ y+ _& x4 T9 M6 R- s
  3008. STA Sound_Bar + $08
    ! h, Z* Z7 p: ^$ C5 h% S& R
  3009. RTS
    2 ~$ c+ |3 `# i6 h" w
  3010. , Y* R& j  B% M" F, s
  3011. .ORG $FF58
    8 K  G! X$ c4 S2 \$ B6 `" y
  3012. STA $400C* |* c* o+ A- z, [: R5 \
  3013. STA Sound_Bar + $0C# h8 X- j/ c: [- @  p  m
  3014. RTS
    8 i. P* T9 E& o& S6 ~1 V* q
  3015. 0 K4 ]; i& ?; g" k& y
  3016. .ORG $FF608 ]6 U5 S# w" G) X) \$ D' D$ C
  3017. STX $4000
    0 P  ~% Y( I" \) ~6 K3 a
  3018. STX Sound_Bar + $007 ^* o4 m: ~) U
  3019. RTS+ z2 v! q6 y) Y0 _
  3020. " A# R. D( k, n, L, z: b
  3021. .ORG $FF68
    # E& P8 \& Z  l4 ^: l
  3022. STX $40046 {4 _8 t; s0 ^* Q$ H1 |
  3023. STX Sound_Bar + $04
    ; D6 f0 n3 V! d1 ~8 Y
  3024. RTS
    $ S6 p' J+ Q2 I8 l* ^1 d

  3025. 3 N$ ^0 i% Q# T6 J% Z' o
  3026. .ORG $FF707 k! F/ b  B$ ~9 q2 G& Y
  3027. STX $40088 F+ l$ r; p' H/ k- ~
  3028. STX Sound_Bar + $08; \& g7 L5 c! D5 ?0 ?5 ], Y. e
  3029. RTS! c! w' H  ]  ^9 L* w. y

  3030. : C( M# W" I' N, O! W
  3031. .ORG $FF78% w# h' C2 h: O% x0 f4 @2 o) d* s4 z
  3032. STX $400C
    9 k; B- h+ R, `5 P* u4 O
  3033. STX Sound_Bar + $0C
    ( ?. u" q0 w* B: r2 D
  3034. RTS7 i  v) l, z% [. l1 {
  3035. 9 q. g) o& B, l, z: J
  3036. .ORG $FF80
    0 m/ X* F! A  p% }/ e3 ~) i
  3037. STY $40003 p6 Y. N( y3 x& S, x' I6 a6 [
  3038. STY Sound_Bar + $00  D7 Y7 N6 O$ f! f! f4 {
  3039. RTS
    3 m, ^& @8 X4 m, r+ f

  3040. + }3 r) o6 O0 [1 H% [
  3041. .ORG $FF88
    8 t' t: T( J0 h6 n) p
  3042. STY $4004
    6 A, A+ ^9 {/ a
  3043. STY Sound_Bar + $04# r. K1 A$ j: k2 b
  3044. RTS8 ^8 O; N. ~. t

  3045. - J+ j* h1 p8 n' S
  3046. .ORG $FF90( q2 p! _' T6 Z. q' O
  3047. STY $4008
    - d7 d3 [& p; ^8 ^' |
  3048. STY Sound_Bar + $08# P9 f# w7 X: e- l- i/ K1 P
  3049. RTS- K* U# G- S1 v& u8 ~0 X( y# W
  3050. 5 y$ O. z7 W2 a. M  V7 a
  3051. .ORG $FF98" c- s4 G- C9 K$ z$ ]
  3052. STY $400C- b0 ]/ g$ w8 J0 ?3 Z* f6 n( u# f- A
  3053. STY Sound_Bar + $0C% y4 `  `( f4 k/ w
  3054. RTS5 u9 m& X. W, J& F8 C, I  Y! J
  3055. / r" [, G0 |% f6 G, b) K5 a
  3056. .ORG $FFA0
    6 z$ e# G, w; V+ g7 R
  3057. STA $4000,X" D) z& i; I' T6 X* g
  3058. STA Sound_Bar + $00,X! q1 M2 t0 m  B/ h/ S- r" s; a
  3059. RTS
    4 t% q+ X- G- i# |) g& A/ w' j
  3060. 7 G% ]( q/ K; n) X4 c
  3061. .ORG $FFA8
    . C4 j/ S. P4 w& l, @4 ]8 y( l
  3062. STA $4000,Y
    0 t( j; v8 o. u5 R. o& x
  3063. STA Sound_Bar + $00,Y0 |8 ]/ u  M4 b  C8 @
  3064. RTS
    , Q% g+ n# Z+ z( P# t7 L6 }# K
  3065. 2 W0 j7 H' J7 p) H& b
  3066. .ORG $FFB0
    9 V6 ?9 z- j5 i* S, K6 g+ p
  3067. STA $4004,X" Q" {5 h; M& B) ~5 v. t; h
  3068. STA Sound_Bar + $04,X% h) i! x# N; K" X
  3069. RTS
    * w1 J  K' s. i1 e- {
  3070. ; ]6 _( x; F! @, y3 n% f3 C
  3071. .ORG $FFB8
    * [5 e( a3 ~# g9 U' M
  3072. STA $4004,Y! T9 P9 A; y4 W# b' c7 x
  3073. STA Sound_Bar + $04,Y% V3 v7 v2 `3 e
  3074. RTS
    . \4 k- v$ M2 _! ~' W
  3075. 3 d# v/ \7 K  _# W. g
  3076. .ORG $FFC0. i/ V, m: ?2 A$ A% X
  3077. STA $4008,X" F9 J2 H& p* W/ I
  3078. STA Sound_Bar + $08,X
    * F3 t6 G) ^. ]$ b7 g, |
  3079. RTS
    ) w: W/ k6 O8 D2 k9 K$ X7 H+ v
  3080.   Q) r4 z4 O/ ]8 v- s& g/ p1 {
  3081. .ORG $FFC8
    7 n3 C4 F( K: D
  3082. STA $4008,Y
    8 e4 q  U. ^( [( i
  3083. STA Sound_Bar + $08,Y
    5 J1 }$ L7 y  A" v$ Z2 K8 X
  3084. RTS- Z) r; h0 s$ ?4 t: L

  3085. , x+ Z, B, b( N
  3086. .ORG $FFD0% c+ R8 S( {3 z! }: x, i
  3087. STA $400C,X* @; v. P+ X' k( ]" F( h
  3088. STA Sound_Bar + $0C,X. n* z' O9 I2 i4 G2 C' |
  3089. RTS  f1 g+ p+ r8 ~0 J8 Z9 p

  3090. ) Y  w# D3 P: E+ \! H; c
  3091. .ORG $FFD8
    ! N" c$ n) [  ~  _, k! f3 B
  3092. STA $400C,Y
    ) h6 Z7 _6 H; W. k9 I9 i$ N
  3093. STA Sound_Bar + $0C,Y
    5 R4 N# |( y: k) W
  3094. RTS
    & A3 C* K2 N" P  d5 v. S! i
  3095. / e: z+ M: r+ r- T# @
  3096. .ENDIF
    ! H$ M1 R7 O2 t* |) Q' c
复制代码

- K3 |) G1 J7 g! j5 S: i
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3115 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:05 , Processed in 1.086915 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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