EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2023-7-23 20:06:50 | 显示全部楼层 |阅读模式
本帖最后由 yandagui 于 2023-7-23 22:29 编辑
( t% d6 Q# P/ R7 y+ c9 }+ c- w3 O! F& ^0 |4 G' D. f6 k
[FC][音乐12 IN 1]* g1 O* g  L! [- e' ~0 F% N4 S& G8 C
时间: 2023.07.23" i6 H2 k# {) x) ~; V4 L
作者: FlameCyclone
* q+ ^7 D0 T# ]( g. y# i+ y, T
, M: @' \! n  K收录音乐内容:. s: X" G/ c1 H2 s. @; c
1.Raf世界
- }, x+ K2 L) T% d/ L; A0 j2.最终任务7 }. b9 S$ {- \* O: h
3.赤影战士8 O: F8 o$ C' T7 E( {
4.双截龙
  E6 _* Z6 U7 i# @5 m+ c) W% u5.双截龙2
7 G. r: F* G2 {4 d: W6.双截龙3
! ^4 g1 X9 b9 j7 P# `* o6 `8 g7.洛克人# a) }: t& d! B9 [$ K! f
8.洛克人2
, y8 I' X( G% b$ I" R9.洛克人32 A( ~! O, T5 }# E. x! S. E8 r! ^
10.洛克人4
+ P* }5 b1 h/ ?5 Y/ H0 R. P11.洛克人5
( `; X# h$ @6 M0 e# t+ \4 d12.洛克人60 i, g& H; [$ u  m1 L" K1 J

! b1 y, T6 N$ N! f4 }操作:" @- q+ j. @5 T
上键:         上一个专辑
  F9 U/ f% N) j) W* A; Y, W$ O下键:         下一个专辑! {( U4 F0 Q- e" z) X( [4 L; O
左键:         上一曲7 ^9 u7 C5 H9 S
右键:         下一曲- p% t1 M( W1 h" i, E
B/A键:        前10曲/后10曲
; j6 s% y8 ~. }) F2 ~选择键:       下一页
& A/ e' Q4 q$ e  C; s  E开始键:       停止/播放% Y$ ]/ w3 ]2 a2 c# W
+ A/ B2 p! S: [  {* a. v
http://flamecyclone.ysepan.com/! E) Q: A; S3 |: e* R; _& J  p

9 r# v# W0 A: d, y! W  d) ?9 A4 j2 T# \, }( I

. w* x2 V! W0 J0 f  L6 l2 N
/ Z* A( \' [4 h0 D
  1. ;[FC音乐][播放器模板]
    , `4 H2 B/ E( `0 A% q' R
  2. ;FlameCyclone 20230710. F- ^1 N" H) |& {

  3. 0 I% O) E9 W* K5 u4 v
  4. ;文件头- ?: \, u: @# D* H- u; g6 K
  5. ;======================================================================" q1 U" T% z5 y3 ^& A5 ^
  6. .INESPRG 16                                             ;16KB PRG 数量/ Y) {/ T6 {  ^, w; ^0 \+ @
  7. .INESCHR 1                                               ;8KB CHR 数量" n5 ?, W$ y+ \( L8 y8 Z
  8. .INESMAP 4                                                   ;mapper 4% |+ g* B$ a: T
  9. .INESMIR 1                                   ;命名表镜像 0水平 1垂直+ u1 D% A) j& G6 y1 n4 L" n8 ?

  10. . m( G% t! Z% Q6 _
  11. ;==================================================
    7 ], |9 ]: v; [9 J7 i2 M) q: e
  12. SOUND_BAR_SHOW_ENABLE       = 1
    $ I5 ?$ R- |1 ?3 q7 k& `
  13. ;==================================================  B0 b4 Y! ^9 d: d, A( j4 ^
  14. BANK_DATA_MASK              = $1F
    8 q% i8 v8 _4 w6 V5 r6 K! |
  15. CHR_RAM_ENABLE              = 0
      P/ V: N, k. p2 Q$ S" ?
  16. IRQ_SCANLINE                = 136
    " u7 K) H4 E5 o: `3 Z' }2 w) E9 I: B
  17. ;==================================================! {3 e" K+ R1 U( K
  18. SOUND_DATA_BANK_00          = $00
    9 L7 J" r4 U0 w; \0 ?7 y3 x7 C
  19. SOUND_DATA_BANK_01          = $013 ]$ k3 h+ @1 p& Z% U9 X
  20. SOUND_DATA_BANK_02          = $021 O- g: n9 @1 B& l& q1 I
  21. SOUND_DATA_BANK_03          = $03
    # _, O5 Y6 l0 Y+ V
  22. SOUND_DATA_BANK_04          = $047 m* {1 M# Q& S! _& A3 }
  23. SOUND_DATA_BANK_05          = $05+ \( r) W8 K1 e' l3 V
  24. SOUND_DATA_BANK_06          = $060 S: O9 x9 M' a- i* X
  25. SOUND_DATA_BANK_07          = $07
    6 f4 ]3 W; p0 C7 e4 [
  26. SOUND_DATA_BANK_08          = $08
    : Z" y& `- X8 g4 e. x1 I) S* \
  27. SOUND_DATA_BANK_09          = $09
    ! p' X- h4 m, D# x
  28. SOUND_DATA_BANK_0A          = $0A
    : Z, d: L+ c. r% l2 j8 t
  29. SOUND_DATA_BANK_0B          = $0B5 G# y) R/ X- y
  30. SOUND_DATA_BANK_0C          = $0C  G0 U% c3 }( x6 a5 N" n% |
  31. SOUND_DATA_BANK_0D          = $0D
    ( G, z% v0 ~, r/ R' e
  32. SOUND_DATA_BANK_0E          = $0E
    * D0 w. |" z9 t# I7 @' _/ ^& n
  33. SOUND_DATA_BANK_0F          = $0F: J$ {1 ?8 T% u' \% Q+ ]6 B

  34. $ b1 @' J. a. b
  35. SOUND_DATA_BANK_10          = $10  r8 L! k8 g0 N% X1 |* p
  36. SOUND_DATA_BANK_11          = $11
    $ ?2 D4 f0 U9 b
  37. SOUND_DATA_BANK_12          = $12
    " n! k3 W/ V' A8 @, Y
  38. SOUND_DATA_BANK_13          = $13' \/ L: N; F( g, }  H+ a
  39. SOUND_DATA_BANK_14          = $140 b+ }. w; P% M- W7 |, l$ o# E
  40. SOUND_DATA_BANK_15          = $15
    ' r0 \0 v  q$ o/ h' |8 X7 p
  41. SOUND_DATA_BANK_16          = $16
    3 ^, {4 f4 V- {) O2 V  i* K
  42. SOUND_DATA_BANK_17          = $17( c0 L" J* }8 u- L/ h
  43. SOUND_DATA_BANK_18          = $18; r8 ]$ e: `9 P
  44. SOUND_DATA_BANK_19          = $19; L' Q, u' ^  s8 B# W1 U
  45. SOUND_DATA_BANK_1A          = $1A5 i: X* M6 E+ U# K$ v$ k
  46. SOUND_DATA_BANK_1B          = $1B' g4 Q9 @, |  Z; B( M3 Q# Z
  47. SOUND_DATA_BANK_1C          = $1C
    + I) q% [$ U8 s/ s- }! d' O
  48. SOUND_DATA_BANK_1D          = $1D
    ( L, v. ^3 c4 ?. U  z' U$ ]

  49. * I2 ~$ `% E& z  X" k5 I8 D" c
  50. SOUND_DATA_BANK_C000        = $1E
    . A5 c! U3 s) j/ X% ^
  51. SOUND_DATA_BANK_E000        = $1F+ ?7 j6 M8 H5 A7 M4 @  r* u
  52. ;-------------------------------------------------
    ( M- [- {# x( D. Q% y- {1 D# F
  53. CHR_DATA_BANK               = $20
    , `4 Z8 l( X  S" N4 t, N
  54. CHR_DATA_ADDR               = $A000
    1 r/ [/ S5 R) o
  55. ;-------------------------------------------------& }+ g9 H. B; N
  56. PROGRAM_BANK                = $00$ ?) H- A! k0 }/ A6 E
  57. PROGRAM_ADDR                = $8000
    , L2 a9 e: k2 y% e
  58. ;-------------------------------------------------" `, q) M/ S+ p3 T
  59. RESET_BANK                  = $1F
    0 k0 [; M8 u, l$ S
  60. RESET_ADDR                  = $FD00
    2 @( }& p+ z7 a- }

  61. / Z( J0 C/ j( D% T
  62. ;==================================================$ D# y8 Y, @3 m1 {
  63. ITEM_MAX_SIZE       = 12                     ;最大节目数0 i8 J$ ~4 T7 ^6 R
  64. ITEM_MAX_INDEX      =  ITEM_MAX_SIZE - 1    ;最大节目索引
    & s0 }+ \" l1 y8 s/ W( Q( Q
  65. PAGE_SIZE           = 5                     ;每页节目数
    * [' a% e- h6 S# |9 @

  66. 7 \0 E% A7 r) _% l; r
  67. ;==================================================
    0 J6 D; W: R: G2 D" t
  68. .IF ITEM_MAX_SIZE % PAGE_SIZE  ;不能整除8 a/ a! T! |- V
  69. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE + 1   ;页码总数
    - V; e* j( y5 o  j
  70. .ELSE
    % \4 l0 I  N  \+ r4 N: o
  71. PAGE_TOTAL_SIZE  = ITEM_MAX_SIZE/PAGE_SIZE       ;页码总数6 h: V$ A% d; ^3 o# p* _. r% x  ~
  72. .ENDIF! x7 B$ F1 y7 a

  73. ; @% G7 y: E7 q0 t1 }
  74. PAGE_MAX_INDEX  = (PAGE_TOTAL_SIZE - 1) * PAGE_SIZE;最大页索引
    - X. X" J0 P6 [; _6 y7 A

  75. * r$ E2 L# \9 y' f# G, ]: T- ?
  76. ;==================================================  E5 X/ F1 q% }8 t9 A
  77. ITEM_SHOW_POS       = $20A8         ;节目名位置0 H( |/ t4 G- _: f  g
  78. ARROW_X_OFFSET      = (((ITEM_SHOW_POS & $1F) - 1) << 3) - 2
    3 x2 D# `- R$ b' v  X
  79. ARROW_Y_OFFSET      = (((ITEM_SHOW_POS & $03FF) >> 5) << 3) - 1;
    . [! b8 \1 ~" J8 @  U; U) T
  80. ;==================================================
    0 x/ S6 V& ]. i2 J
  81. Caption_Text_Pos    = $204D ;标题文本位置
    : g% o  |* C/ \9 Q  v% J, W
  82. Author_Text_Pos     = $2324 ;作者文本位置0 s$ @' o5 X- {) D# i
  83. Date_Text_Pos       = $236B ;日期文本位置1 j- \6 t1 i2 @/ f4 T
  84. ;------------------------------
    # m, n2 u4 F0 n. j8 T- t( J0 W/ x
  85. ;------------------------------
    ' `) v5 V* w1 T
  86. .IF SOUND_BAR_SHOW_ENABLE$ B* A! r" S! P# c6 y

  87. 9 c# S- p/ Z* z& J! L
  88. Play_Index_Pos      = $2273 ;当前曲目位置
    & o2 l7 n5 B) [
  89. Play_Time_Pos       = $22B3 ;播放时间位置
    6 P: b" @# P6 m( p
  90. Play_State_Pos      = $22F3 ;播放状态位置+ Y7 c+ ~5 Z& g9 |/ c; ~

  91. 4 W$ G( m% W6 B2 w& y! ^5 ?
  92. .ELSE
    + J4 l' x: \0 N/ k1 C
  93. 9 k* x8 f; s1 G( Q1 Q
  94. Play_Index_Pos      = $226C ;当前曲目位置  G" x8 I8 o, g* v6 J
  95. Play_Time_Pos       = $22AC ;播放时间位置5 b3 c+ K, N( o' s- ^
  96. Play_State_Pos      = $22EC ;播放状态位置5 G' r6 z4 ~. N7 U% Y3 ^

  97. 5 U- j" G2 P) F
  98. .ENDIF
    - I# v) G3 e5 G* m' n; _
  99. ;------------------------------
    5 G! U+ v" n" d$ K$ l& H. m
  100. Track_Name_Pos      = $222B ;曲目文本位置) k8 e# u- _4 e! I2 c% m
  101. ;Track_Name_Pos      = $00 ;曲目文本位置1 V/ v5 F8 L$ Z% z
  102. Sound_Track_Pos     = $2265 ;声道文本位置
    0 @1 q9 K* Y# X2 ?; A4 C+ Y* _
  103. Sound_Bar_Pos       = $2269 ;音乐条位置% k! Y3 E0 `- ]1 w3 N/ E2 B
  104. ;==================================================3 |$ o  Y. C# z) V' I5 H, Y
  105. Scroll_X = $003 F- W" X$ ?# y: B& T' a
  106. Scroll_Y = $000 q% ~- c. f# C" q4 ]3 U1 x
  107. ;==================================================
    8 R8 R$ s" p4 @, A- k
  108. Sound_Ram_Addr_1       = $0100
    8 Q, O0 E$ g; f5 N8 P* p9 T) N
  109. Sound_Ram_Addr_1_Size  = $80/ t" V$ x2 `! F9 S' m6 E) Z/ J
  110. Sound_Ram_Addr_2       = $0090- W4 \- V& p6 P% F# i5 ^5 C, a
  111. Sound_Ram_Addr_2_Size  = $70
    7 U1 O6 v7 g% s- J8 y
  112. Sound_Ram_Addr_3       = $0700
    ' @5 w* R* k- J& `! p* T+ n2 c
  113. Sound_Ram_Addr_3_Size  = $00
    ; b8 z# ~9 ^2 S% D3 ]( \
  114. Sound_Ram_Addr_4       = $0400
    $ ]" H# t5 X+ `
  115. Sound_Ram_Addr_4_Size  = $00
    % l, B& s: r; T9 o5 F& X5 N
  116. Sound_Ram_Addr_5       = $0500
    ! ?/ |. {* u/ O1 o/ [5 d3 V2 {
  117. Sound_Ram_Addr_5_Size  = $40
    2 v( _3 r" S* p8 K8 b7 F  q# Y
  118. ; r! L* s% N6 I% h! S
  119. OAM_TEMP_ADDR   = $0300
    - B0 U. z8 i% h& O8 B" c

  120. ; ~0 _; m3 T& m. v
  121. ;==================================================+ K3 i% }4 E. U1 g
  122. PPU_CTRL                =   $2000   ;PPU控制寄存器
    0 ?, P8 O4 ]0 L! j5 ]1 q: d; d$ M
  123. PPU_MASK                =   $2001   ;PPU掩码寄存器
    : D3 r0 |8 D9 R0 O5 m$ K3 T
  124. PPU_STATUS              =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位+ Z4 _$ O. x  R: U0 z: k
  125. PPU_OAM_ADDR            =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1$ t$ x) p# z" t
  126. PPU_OAM_DATA            =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
    , a0 `8 x" Q' _8 F  I0 |
  127. PPU_SCROLL              =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 0 ~9 l' [5 F4 _0 ~; Q
  128. PPU_ADDRESS             =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
    9 d- R0 w3 b  U3 r, |3 k
  129. PPU_DATA                =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32
      L" X* K7 e+ D" [" s, d: O  c
  130. OAM_DMA                 =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
    * j0 q: g( e( D; x3 c6 l  T3 m' D
  131. APU_STATUS              =   $4015   ;声音通道切换! L, \1 |. T, q# d2 ~
  132. JOY1_FRAME              =   $4016   ;手柄1 + 选通" ~2 T4 b0 Y) T- S  [+ J
  133. JOY2_FRAME              =   $4017   ;手柄2 + 选通$ Z  H; i0 B  d
  134. ;==================================================
    ) C# ^# X: p$ N! {1 T
  135. MMC3_BANK_CTRL          =   $8000
    6 r0 F: Q4 }: Z2 V
  136. MMC3_BANK_DATA          =   $8001
    , |8 M& r7 O$ B2 N' a/ H/ i
  137. MMC3_MIRRORING          =   $A000
    3 m! n9 h* @- X) ~
  138. MMC3_PRG_RAM_PROTECT    =   $A001
    0 o5 S3 U& v- @
  139. MMC3_IRQ_LATCH          =   $C000
    8 p. x  O5 I  k/ U/ v+ ~: Z* O
  140. MMC3_IRQ_RELOAD         =   $C001
    0 T- ~8 o: [7 q$ J( A
  141. MMC3_IRQ_DISABLE        =   $E000
      H. R: ~1 S3 w
  142. MMC3_IRQ_ENABLE         =   $E0012 a6 P# M  F$ c+ G
  143. % M/ R# Y* t- t
  144. ;==================================================1 `+ k: U5 `0 j+ d
  145. PPU_Addr        = $0200
    & E" b+ F$ \) H% w+ H
  146. Palette_Addr    = $02C0
    9 w- g! V* q" `) g/ v3 }* l0 a2 z
  147. Sound_Bar       = PPU_Addr+$E0
    , I4 v7 M# i4 t3 `- ~- a+ m7 |7 J
  148. ;==================================================
    0 q. |9 r; k8 g# P$ C- N
  149. Bkg_Palette_Update_Addr     = Palette_Addr+$0D
    $ p2 e0 A- S% v% T8 m
  150. Sprite_Palette_Update_Addr  = Palette_Addr+$11) l) K: z1 j5 S( d  W) T
  151. PALETTE_UPDATE_MAX      = $2C
    * U& O0 G: d( l* j3 w
  152. PALETTE_UPDATE_MIN      = $21
    - {7 }7 d! a' {; r: ^
  153. PALETTE_UPDATE_INTERVAL = 60- K; k/ y# n1 x9 z" z9 H
  154. ;==================================================
    ) B8 Y* S: J. }1 D& t5 d
  155. Sound_Bar_Cnt       = PPU_Addr+$F0: V" `, W: d) ?  x1 \! u
  156. PPU_Cur             = Sound_Bar_Cnt+$02" k0 W9 r& b9 _) j3 `0 j  o
  157. PPU_Addr_H          = PPU_Cur+$03/ |6 q' S( {3 R4 Y- @
  158. PPU_Addr_L          = PPU_Addr_H+$04
    1 z9 a( ^. R" b. e% p5 k" M
  159. Screen_Ctrl         = PPU_Addr_L+$013 P2 ?8 F' d" O9 F
  160. Screen_State        = Screen_Ctrl+$01
    5 A- F% K! Y" R7 L
  161. ;==================================================
    $ n  T& L9 l1 x$ {  ?5 M& m
  162. Use_Ram_Begin       = $50# p& ?! A" ~, R3 e/ [$ w. N8 b
  163. ;==================================================
    : ^! x, [6 @9 p# L9 F* ?* ]
  164. JSR_Addr_Op         = Use_Ram_Begin9 E8 n3 x+ V! U7 i1 }9 o7 ^
  165. JSR_Addr_L          = JSR_Addr_Op + $01
    2 u; }. G1 `$ j, J# B
  166. JSR_Addr_H          = JSR_Addr_L + $01
    4 W0 {, M7 c# L* w
  167. JSR_Addr_Rts        = JSR_Addr_H + $01* z6 c% ]( N7 s' `( {8 w
  168. Data_L              = JSR_Addr_Rts + $012 ?$ `; ]' q" E( o% }% J" _# }
  169. Data_H              = Data_L + $01
    " C# n# z" I5 q8 C7 E
  170. Data_Cnt            = Data_H + $01! j8 ^' B% m- N' q
  171. Data_Buf            = Data_Cnt + $010 G" o& x5 d' L- A
  172. Nmi_Time_Count      = Data_Buf + $01
    % x7 k9 w! H& d+ x! l/ H( e
  173. Time_Wait_Cnt       = Nmi_Time_Count + $01
    . ^' j% D9 _% F! f+ \' _7 o
  174. Palette_Wait_Cnt    = Time_Wait_Cnt + $01
    7 ^3 M1 l: D% m* W" r( S

  175. & l" e+ e$ W6 o
  176. ;调色板刷新标志
    ; B9 N0 X0 q2 F" C$ X. j# O
  177. Palette_Update_Flag = Palette_Wait_Cnt + $010 p: f& V! g  q( Q- h) E
  178. ; t  W- g& z( ^3 D  g+ o6 [, A
  179. ;当前帧文本写入禁用标志$ r8 j, W& M9 K; ~8 L& t5 F
  180. Text_Disable_Flag   = Palette_Update_Flag + $01# D; c# z$ W: w

  181. 2 ?  j/ {, `$ b# G
  182. ;==================================================
    3 D' X# S: L8 g4 `
  183. ;当前帧文本写入禁用标志, 防止缓冲过大导致画面跳动
    7 ^9 n4 }6 H4 @2 W, I  [) u- Z
  184. TEXT_DISABLE_BAR    = %00000001         ;音乐条+ M( v. }1 v' X2 D
  185. TEXT_DISABLE_TIME   = %00000010         ;播放时间. P. M. ]  _; ?. h" ?
  186. TEXT_DISABLE_ITEM   = %00000100         ;播放时间
    % @  b6 O& d# d5 e' _
  187. TEXT_DISABLE_RAM    = %00001000         ;播放时间
    ! l' i( i4 w9 B' C7 o( ?
  188. ;==================================================/ x* c4 Y4 ^* \1 W9 I
  189. Key_Keep            = Text_Disable_Flag + 1
    / v3 J: k  O+ I
  190. Key_Once            = Key_Keep + $01. k& f1 d: z8 d. U5 Z* n. y+ T
  191. Key_Kemp            = Key_Once + $018 Z. j6 P7 P  U' Q( s9 m6 |" O( j) R
  192. Key_Temp            = Key_Kemp + $01
    0 D3 `8 s0 A$ t! z- K! l. }- E& t* E
  193. Key_Getv            = Key_Temp + $01( o$ a" F4 o: S
  194. ;==================================================
    5 D, S- H0 O) Q/ d
  195. Music_Item_Cur      = Key_Getv + $01          ;当前音乐集
    , x/ m  @" G! `. B. E
  196. Music_Item_Last     = Music_Item_Cur + $01
    & u% x$ S2 R$ |2 a/ \4 R' W2 o
  197. Music_Total         = Music_Item_Last + $01          ;当前音乐集
    7 o' g8 |# a2 _; y
  198. Music_Cur           = Music_Total + $01  ;当前曲目
    9 Z; v. J  F! V8 T3 ?! m
  199. Music_Last          = Music_Cur + ITEM_MAX_SIZE         ;上一个曲目
    * d$ p# _; G2 R
  200. Music_Stop_State    = Music_Last + $01         ;播放停止状态4 N  H0 A3 c* H9 f3 l7 y1 ]
  201. ;==================================================
    : q( D+ T9 w( L* u& ]1 t" K
  202. HEX_Data            = Music_Stop_State + $01! h3 w5 r$ W' Y% p
  203. DEC_H               = HEX_Data + $01
    * Z) u; Q5 V3 Q  `% X7 ?. g! I
  204. DEC_T               = DEC_H + $01
    2 P6 e! [' E, }4 @3 j6 Z
  205. DEC_L               = DEC_T + $01
    9 n5 k; w0 j* a
  206. ;==================================================
    + K8 `0 a& C/ g1 `8 |, O. D  O
  207. Time_S              = DEC_L + $018 f7 d0 p: z+ v2 [
  208. Time_M              = Time_S + $01
    9 G- |+ \3 @, H( [2 w2 C$ t
  209. Time_H              = Time_M + $02
    8 m6 H& l6 {6 J  W% e4 @
  210. Time_Cnt            = Time_H + $03
    * D2 q! N4 p' j4 }8 g$ z

  211. * m8 V$ S; w( e4 I
  212. ;==================================================
    ; K1 i/ J+ w' w1 N9 ?% `
  213. Music_Bank_8000     = Time_Cnt + 1/ X+ }5 Q2 Z3 n
  214. Music_Bank_A000     = Music_Bank_8000 + 1
    , ^. U+ L# S$ [9 C) h* K# _
  215. ;==================================================0 x0 |# b: P; J6 e
  216. Scroll_H            = Music_Bank_A000 + 1( z6 E$ j8 S( {* `; y
  217. Scroll_V            = Scroll_H + 1; H* \8 x0 _2 c7 x# N
  218. IRQ_Process_Index   = Scroll_V + 1& {0 }8 g; D) k3 J! K
  219. ;--------------------------------------------------+ I/ b! w* S" u  @
  220. Page_Cur            = IRQ_Process_Index + $01
    ; c- u/ ]7 {; f; q3 Y- L; v+ _
  221. Page_Cur_Index      = Page_Cur + $01, j7 `, D; ]0 E. b
  222. Page_Cur_Cnt        = Page_Cur_Index + $01! ~8 R" h" Y7 c3 N6 T' h
  223. Page_Last           = Page_Cur_Cnt + $01
    # \3 a1 d$ a5 r; n
  224. Page_Last_Index     = Page_Last + $01
    ! P2 N0 x/ I7 r& M7 ^
  225. Page_Last_Cnt       = Page_Last_Index + $01
    5 }2 q! O# R7 }$ y! T1 L
  226. Use_Ram_End         = Page_Last_Cnt + $01
    8 d/ X3 O! _9 v* y
  227. ;======================================================================
    8 @* r1 q+ M' t
  228. ;音乐数据块* U! {- Q1 W0 M

  229. $ i8 k) ~' ^" l9 Z. x) z) Z
  230. .IF SOUND_BAR_SHOW_ENABLE/ `5 ?% \/ [, k7 L$ w

  231. ' j9 h# f+ c9 I6 U
  232. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK* w6 F7 C. |; L/ i8 k3 ]- |7 F
  233. .ORG $90009 w% J+ ?+ d& ^) u2 d0 K! f  z
  234. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0_bar.bank"
    8 H/ O/ D( n, R. Q) k

  235. 9 a  b- F8 s5 X  A- U
  236. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    9 v7 d% H% t8 P  }9 z) P# Y4 K4 y6 W
  237. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"$ ?# b) y4 b1 P1 K( d  c8 v6 M, N

  238. + ?4 o; s5 q: q9 `: J
  239. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK/ l8 |1 z* R6 {8 j1 [! _
  240. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0_bar.bank"+ n9 ~+ ^- q# X" t6 U
  241. 9 A' O6 V5 b0 t8 U( y
  242. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    . ?, z' k) h7 \! h( `9 G) b
  243. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    % ?0 Y( G' j" z% \; n- m8 p& M/ v
  244. * u+ b6 e4 K& F6 r: H9 g
  245. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK2 `/ X0 w! @  _$ W8 }
  246. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0_bar.bank"
    6 |' s) }5 P3 ]! s' z

  247. 1 V" S+ i( _3 I
  248. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    7 Z4 X, l7 i6 w1 \* t! v
  249. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
    / j# P0 [, E# c/ w8 Q2 p1 g

  250. : s* H; a! ]$ Q* P) e0 f& @8 }
  251. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK' L2 a8 R  l9 P' u
  252. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    $ ^$ t* r' f) y8 f
  253. # a9 ?8 F: V4 y; k: D
  254. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK- a7 r0 N* e+ \$ q( f, o7 a8 h
  255. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0_bar.bank"
    ! c9 W2 D( g* a' |

  256. $ H/ S) \# F3 _- F3 ^1 B& Y
  257. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK/ ~$ J4 j" G4 g8 u8 J
  258. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"
    . T0 i  A) s3 q- O' t* w

  259. 1 `7 {" b( a6 g- r. m( h
  260. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK
    # Z" y; R+ L; I5 T8 r
  261. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"' F/ L) @' f5 W5 H# d

  262. ' R" F7 n8 v$ ]
  263. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK# B$ w! Q0 Z9 x; M* W0 E
  264. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0_bar.bank"" e6 s: \0 i6 }9 |) X. `) i( O# J( U1 o

  265. & Z! e- W6 f7 y' j/ t! u2 Z
  266. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK: l/ K. |  d; o- x# q. ^# `
  267. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"+ m; ~0 z' q9 Q$ `* q* e) e

  268. ; p# v! N5 m6 N8 }8 t% Z2 |
  269. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK1 ?! s" H: R7 k& W9 Q: B
  270. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"' P. M5 H" S2 L4 o( d7 D
  271. 3 k3 b, K" R- V2 t( t% u2 f
  272. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    & d5 v3 e! l* ]8 N
  273. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0_bar.bank"3 o9 V4 h; L( K( w

  274. ! R9 \; ]7 j: E
  275. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK
    " y0 p: u6 ^+ E# C! m
  276. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"
    & e- a8 f; V: z$ I7 L# Q- w

  277. 5 }0 w  |# _( o* f
  278. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK- F) C. @. p7 G" `! i1 D2 b
  279. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"0 R9 K: P# e% \4 R

  280. / d6 s0 l& `7 b* I2 _# _% C, \- |/ O
  281. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK. w& I7 t9 v  X
  282. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000_bar.bank"
    ' a" n1 x# \/ X2 F( A* a8 I& z

  283. 1 \; a0 A! ?6 N) K2 f- d, o, E
  284. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    5 l" R, x6 _  i1 W9 r2 N2 v2 b* r
  285. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"& X9 A- f1 ]- t5 d3 [, g  B6 n
  286. - _! a4 d+ |) `! W
  287. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK
    2 ^9 I* t  A% K. h( F
  288. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000_bar.bank"* v- @6 [! |# P0 W1 N
  289. : U) u2 Z2 \, \0 c
  290. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK* i% W  O6 W7 c% @
  291. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    7 c& G- J  }5 q- V

  292. ( r  T7 f+ z) Q7 z  w
  293. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    ( b7 I& D. y9 W0 o. u) b6 o" X
  294. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"- I- w- ^5 F6 l$ R! ^1 D3 N
  295. 9 b) p$ N2 j2 O, s
  296. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK6 s& i! |! y6 w, \! V
  297. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000_bar.bank"4 W9 z; _. A; l1 G+ ~2 T! N
  298. 4 F  I4 c; Z3 T  m9 M
  299. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK6 Q1 r& z1 D. ~  r
  300. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0_bar.bank"
    $ d8 E+ P* k+ D3 x" n6 D
  301. . V. ?1 O4 W8 a
  302. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK; q$ r+ P8 d. J# J  h& ]7 A
  303. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank", @% B1 _& Z, `3 ~( o. M
  304. 8 [3 x9 \3 y, }: a2 G  L
  305. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK& m/ ]+ T, E# U( h2 }) y
  306. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0_bar.bank"' [! |7 Z6 X' Y+ C. y

  307. 9 A" M+ e: f: M
  308. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK' E+ E8 Y) O5 K% i* h- y9 z
  309. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    5 L; N0 c1 T: p* Q# X

  310. " \  e- ]( z9 t& z! Q9 a! x
  311. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK
    ) m1 y% B+ x  r& ~! w9 M$ R
  312. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0_bar.bank", c& t" d# |, ~: y* y$ {" p) |

  313. 4 w$ I+ `+ @! g0 D- J6 _7 X
  314. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK. M; t7 b/ C1 E: S! U' |
  315. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    2 @8 S9 l8 }- a" F7 @, y

  316. : e5 W8 v* a( n2 T4 ^4 `. b9 O! X
  317. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK( d; J/ O; f7 H: z; Q
  318. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    6 }! ?7 E5 \# m
  319. 9 t6 o. ~+ [( I, X
  320. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK
      t. O% U6 p# z3 v$ {3 x9 d
  321. .ORG $D4001 H/ g3 z4 K2 [4 v9 [
  322. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank"
    * K+ {& o3 x/ w; R* E1 J" E- L

  323. * ?) ~- N% N( S. C( B& Z% o
  324. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK0 I2 D* x7 i) q5 S. u$ S( {
  325. .ORG $D800
    . M/ I9 @3 _' x& t3 w2 p4 Y
  326. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank", p% R: V0 s, P- D: c, q- m
  327. 4 D3 }& n, I& \* `4 M( e3 S

  328. + A. ^5 `. m! W- d- I
  329. .ELSE
    7 ^& B7 J( d6 a1 ~/ X7 l# i) b
  330. - k" T: B2 R# c5 n7 W7 {9 D
  331. .BANK SOUND_DATA_BANK_00 & BANK_DATA_MASK
    1 {; C0 }9 t9 _, |: C( e" |: t
  332. .ORG $9000
    2 j3 e. c& \9 h+ t6 ], K; V
  333. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_0.bank"% |- N8 L5 b1 }6 [. c" B2 \& a5 o

  334. 9 k) y* J. U9 C) ~" z* r8 V# h
  335. .BANK SOUND_DATA_BANK_01 & BANK_DATA_MASK
    . \$ l' D. D; I* K: ~9 M) N( d1 x
  336. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_1_music_data_1.bank"
    3 r" i# s5 M! Q$ u
  337. 3 f1 J7 x: z* j6 h
  338. .BANK SOUND_DATA_BANK_02 & BANK_DATA_MASK2 h. J; }1 k* s8 ^" Y
  339. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_0.bank"
    ; e' T9 h" t% q
  340. 1 E' j+ w( e. O6 @4 U
  341. .BANK SOUND_DATA_BANK_03 & BANK_DATA_MASK
    + c2 g9 s2 e0 u- y+ {
  342. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_2_music_data_1.bank"
    - k$ ]+ g' H& I3 h5 j
  343. % O  N! z+ s3 a( [
  344. .BANK SOUND_DATA_BANK_04 & BANK_DATA_MASK+ X$ x, }+ E. u! q6 g  E  d/ M
  345. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_0.bank"
    * G# e4 m& d. i3 }) l
  346. 8 J# E9 g2 e0 y) ~. ?  F. x
  347. .BANK SOUND_DATA_BANK_05 & BANK_DATA_MASK
    * W9 v: n3 E9 E/ G% C
  348. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_1.bank"
      [0 C4 `6 a: i9 c& ]! w
  349. & P; f. `; g+ c" u3 c1 |; m
  350. .BANK SOUND_DATA_BANK_06 & BANK_DATA_MASK
    / B1 {: I" Q3 w+ M  v/ W) [
  351. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_4_music_data_2.bank"
    ! O4 x& T  n$ q2 }
  352. & p8 X2 ?6 A, Y. x0 K& N' O
  353. .BANK SOUND_DATA_BANK_07 & BANK_DATA_MASK/ I4 R# Q% X7 E7 Z& W- h
  354. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_0.bank"* c6 D! r7 f( V' c

  355. 3 r. q$ e( F. ]0 p% L% m* ~; Y
  356. .BANK SOUND_DATA_BANK_08 & BANK_DATA_MASK8 U$ d# G& J. h! M
  357. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_1.bank"; b. n! |  T( j" W, M) e  H
  358. : b( N: W3 ~5 c+ P+ Y3 h
  359. .BANK SOUND_DATA_BANK_09 & BANK_DATA_MASK9 z7 ?$ R) J% [6 R! l
  360. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_5_music_data_2.bank"! i1 A; ]" p9 S' K
  361. # ]: z+ B7 d" T! g7 }, g: ~/ u
  362. .BANK SOUND_DATA_BANK_0A & BANK_DATA_MASK
    2 L6 l" n, [4 z- E: M2 _. @
  363. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_0.bank"! L* W8 ]% K5 o3 [  y. w# E
  364. 7 z5 x3 J/ R; m5 b: i( p; ^# c
  365. .BANK SOUND_DATA_BANK_0B & BANK_DATA_MASK
    / q* O3 ~0 q* ~  S
  366. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_1.bank"' D. m2 n: ]% T1 Z  s7 K. I
  367. . E) m% w  d, ^% g' _
  368. .BANK SOUND_DATA_BANK_0C & BANK_DATA_MASK/ @' }0 H. y. A+ o3 A0 F5 M
  369. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_6_music_data_2.bank"
    # j" p9 S5 S& l# z  P
  370. " n/ A. H' d" d! I- L- v" _
  371. .BANK SOUND_DATA_BANK_0D & BANK_DATA_MASK
    : A' \$ m' A: X# q+ K
  372. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_0.bank"5 f) K/ n' ~$ J

  373. ' q+ k$ Q4 o) L
  374. .BANK SOUND_DATA_BANK_0E & BANK_DATA_MASK0 }6 l! j8 U" Z% b" ]6 x9 w) X/ `/ _9 E
  375. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_1.bank"- H4 b  i# {; j6 v0 O3 e

  376. ! u0 x7 e2 q4 b: _
  377. .BANK SOUND_DATA_BANK_0F & BANK_DATA_MASK: |6 l3 v& f& m* W
  378. .INCBIN "sound_bank/fc music(mapper 4)/rockman/rockman_3_music_data_2.bank"1 M' b9 o" A" k
  379. ' `( V# f1 `2 T: s
  380. .BANK SOUND_DATA_BANK_10 & BANK_DATA_MASK
    % c) W! r/ I3 K7 ~* o& f; h$ K8 y
  381. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_8000.bank"5 y6 z, F$ V/ X0 F
  382. 1 T  l5 i4 T0 D% j- v7 N& R, N
  383. .BANK SOUND_DATA_BANK_11 & BANK_DATA_MASK
    ; d* P; e4 p) j6 H( ]
  384. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_A000.bank"6 Z" ~+ W0 v0 d" t" E: y

  385. 9 a- L% M& q+ s. b" F9 E# T$ {
  386. .BANK SOUND_DATA_BANK_12 & BANK_DATA_MASK1 J7 G2 X9 h; q$ C' Y* @
  387. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_8000.bank"
    + Q4 x9 |# w4 W

  388. 2 R6 U" c% N6 R" ^8 ~+ E5 |* n
  389. .BANK SOUND_DATA_BANK_13 & BANK_DATA_MASK0 A( C2 B# Q" J2 @1 v% R3 i" P
  390. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_A000.bank"
    4 t& A, {& O# z1 y

  391. ! e2 U. q. _( t0 W$ z- R" A
  392. .BANK SOUND_DATA_BANK_14 & BANK_DATA_MASK
    . B( \0 a" H  |0 x2 C9 a* W
  393. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_8000.bank"3 D1 `3 o5 P3 s* g% j& o- `
  394. / \. R: p  A. F# V0 \
  395. .BANK SOUND_DATA_BANK_15 & BANK_DATA_MASK
    ( g- K0 y9 D+ f  l4 G' i! f: c
  396. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_A000.bank"
    8 @, d4 ]9 n/ ~2 [+ D

  397. 9 @7 c! s$ E, k% v  u6 t
  398. .BANK SOUND_DATA_BANK_16 & BANK_DATA_MASK
    * Z# q" V: @- _- u$ k" k) P
  399. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_0.bank"
    , N) A6 R/ \. Z$ `2 n# t+ ^

  400. & I3 N/ Q$ d2 c$ \5 i- l
  401. .BANK SOUND_DATA_BANK_17 & BANK_DATA_MASK' x* K# W4 U- V* ~2 F
  402. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd1_music_data_1.bank"  a9 I3 P4 V; P( M7 o2 r6 D

  403. 5 U0 L% D% X: o- _
  404. .BANK SOUND_DATA_BANK_18 & BANK_DATA_MASK' m7 [7 R8 E& ]2 f- M
  405. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_0.bank"
    ) x+ P3 t9 h7 W+ u& y7 D

  406. ; B1 F. Q" }/ @, ?5 s
  407. .BANK SOUND_DATA_BANK_19 & BANK_DATA_MASK4 f- |" G7 @' {; e4 O7 j
  408. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd2_music_data_1.bank"
    * H& t6 t, Q1 O9 s& w* h  C9 j4 ]& a
  409. + q& P+ K, Q! a; ]3 p6 }0 `' D
  410. .BANK SOUND_DATA_BANK_1A & BANK_DATA_MASK2 p" `- N: K8 G: Z# \; z7 }1 Z8 a
  411. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_0.bank"- \# n' }% |/ H$ W3 H

  412. 7 c5 F4 E  F8 _3 O5 k4 K) _
  413. .BANK SOUND_DATA_BANK_1B & BANK_DATA_MASK4 d7 M5 G2 D# h7 R5 h4 w
  414. .INCBIN "sound_bank/fc music(mapper 4)/double dragon/dd3_music_data_1.bank"
    : p0 k% K; i4 w7 v* d9 ~
  415. ; d6 d1 q7 _4 w% u5 a3 f( r
  416. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK! ^/ Z. f6 _/ M5 v2 `. j. A
  417. .INCBIN "sound_bank/fc music(mapper 4)/raf world/raf_music_data_C000_dmc.bank"
    - Y0 u/ `3 J8 A. G

  418. / @# |7 W" i8 H0 X& R" g
  419. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK8 u' m, ?6 x8 J/ Q. t
  420. .ORG $D400
    * t# C. @- c0 X" y9 I
  421. .INCBIN "sound_bank/fc music(mapper 4)/final mission/final_mission_music_data_C000_dmc.bank": \6 i) V6 _% J3 U$ K' z' Y
  422. % R& X7 p- v  f9 A  I
  423. .BANK SOUND_DATA_BANK_C000 & BANK_DATA_MASK4 m$ b/ G/ u9 d% A: u( U
  424. .ORG $D8001 E8 s3 d# l; [4 L$ T
  425. .INCBIN "sound_bank/fc music(mapper 4)/kage/kage_music_data_E000_dmc.bank"
    9 A% l7 [) A5 L1 `. ]0 }9 ^
  426. / @' J4 x& d- @; J' \& c
  427. .ENDIF
    2 L! j; o8 h& h1 @6 S% {) P
  428. 2 W3 ~9 u9 x  I3 x! H8 q  N
  429. ;CHR图形数据- X4 w1 I( |2 l/ s- ?
  430. ;======================================================================
    ) a, r8 Z6 _% A" R/ j
  431. .BANK CHR_DATA_BANK5 M: [( f0 N5 s6 d% y1 B( D
  432. .INCBIN "chr_bank/chr_data.chr"
    7 U$ t3 W4 `( @& C5 {
  433. . t% d2 q) |) X1 o& P. M
  434. ;======================================================================: p, [8 S3 J  [. X' G
  435. .BANK PROGRAM_BANK & BANK_DATA_MASK
    * E; k* {$ t# S* h3 ?
  436. .ORG PROGRAM_ADDR5 P! J6 J# j% U$ S: v/ ^+ {: e
  437. 9 U' g5 h. {7 K+ |) S
  438. ;==================================================
    * q6 J5 z" T) n$ m  e
  439. NmiProcess7 n$ @& B+ v% C! w
  440. 4 k0 P! Y: J( j7 ^, m% ?
  441. ;关闭屏幕控制
    1 g+ G* U; x6 n4 y& K0 q- ?$ |
  442. LDA #$00# V) g; @, Y9 b" ?: t. T( E
  443. STA PPU_CTRL
    6 m  F9 g' C% I0 n7 ]) p) i
  444. & Z! c0 `" _. ?. s8 r1 z
  445. ;没播放音乐就不需要触发IRQ# m: |9 |! G  M0 q  }/ X4 j
  446. LDA <Music_Stop_State
    3 c9 @: x$ V' ?% M- V* s) k
  447. BNE NmiNormal
    $ a' q7 K9 H% @9 ^( V

  448. 3 X6 Y6 z+ H* E4 E
  449. ;重置IRQ索引
    # t( @9 {! L' t4 G) ?- t7 J
  450. LDA #$00  l3 S" a! V( D7 t! J' @! k
  451. STA <IRQ_Process_Index# j& y- l: w& z' L: C# x( b! G
  452. , \6 Z$ b3 r7 `2 R7 J) I
  453. ;时间秒数为空则跳过6 C  I; L# d  y* i2 X1 n, R
  454. LDA <Time_H: e* d) g' v+ z' I. ?8 F, A3 d
  455. ORA <Time_M
    3 u# d( `( `$ e* J; ~7 N7 d6 Q
  456. ORA <Time_S
    ) S+ `7 n# Z! Y) k- h; ]; h/ G
  457. BEQ EnableFirstIrq
    4 F* X! `$ }) a5 C/ V6 x9 m
  458. ) x3 Z. I2 x9 u
  459. INC <Scroll_H
    ) d. D4 u. s, B/ M% k8 T. o$ C: f
  460. ! T% G' A0 r! e2 B8 S" ~- g) y+ V
  461. EnableFirstIrq $ B1 L" e8 u. [. i3 N' y6 \" {* n% \
  462. ;80条扫描线后触发IRQ1 e# M" i! n4 W
  463. LDA #IRQ_SCANLINE
    $ f1 E! ?! b$ Q# H( G' N
  464. STA MMC3_IRQ_LATCH
    + e' e7 L/ R9 }/ f
  465. STA MMC3_IRQ_RELOAD& B0 ^. m) _0 L9 t5 g% X# o
  466. STA MMC3_IRQ_ENABLE
    ; c8 d1 Q2 Z2 T& J( Q+ N5 B" T
  467. CLI/ J9 \* e2 F) Q

  468. 2 f) W+ S% q- F/ L$ k( V
  469. NmiNormal
    4 d: ~: Z$ g" r
  470. 0 M6 ^: g$ Q8 ?8 L9 \) `, U& E
  471. ;处理PPU图像
    + o. j5 G- q3 g9 b3 y
  472. JSR PPU_Proc
    2 T6 T, E6 [+ [. I: \+ \

  473. 3 s7 y% s/ O4 [
  474. ;写入精灵, 会占用516个CPU周期, 约4.53扫描线, 写入会导致1像素抖动(PPU处理徐优化)! T# ~2 C; C! K$ q
  475. LDA PPU_STATUS
    , y% h7 l% v( t
  476. ;LDA #$00; r  n! d; t( W3 z) h" X. I' m
  477. ;STA PPU_OAM_ADDR
    & f4 w8 A! `' ]7 Y+ ]# z: v5 q
  478. LDA #OAM_TEMP_ADDR / $0100
    0 h* O4 E( C! L  D5 V+ t
  479. STA OAM_DMA% r' Z  p0 s2 \9 N
  480. . }1 ]0 l" m0 _: S: s7 E7 n# \$ x
  481. ;启用NMI中断- E- A7 G5 S. V
  482. LDA Screen_Ctrl# h) `8 z: d; ?0 b; u
  483. STA PPU_CTRL* N( j$ H! r/ s. j. m
  484. % n. n, n: n( A. I3 L4 d
  485. LDA <Text_Disable_Flag3 G; h- R* p, U2 }1 Z4 W
  486. AND #TEXT_DISABLE_RAM  }0 p$ s1 z8 N3 f! ?' C
  487. BNE Nmi_Sound_Play; A8 `2 t+ M# z  @

  488. & ?: v( f3 ~9 x/ }  o
  489. ;处理手柄输入4 w0 [& e1 q# k
  490. JSR Key_Proc+ |* M- Y& k, |; f9 E
  491. ) a3 d) W' y# }% m
  492. ;切换音乐(手柄触发)
    - i# q/ i. Y! S1 H2 Y
  493. LDA <Time_Wait_Cnt  B6 H9 u" \5 b, }% N8 ?' I4 |
  494. BNE Nmi_Cursor_Arrow& x9 O7 X$ |, H6 \$ [
  495. JSR Change_Select_Item1 y; W5 M7 W* N! _
  496. - f2 r$ Y1 e: w' {; r, A
  497. Nmi_Cursor_Arrow
    $ [) N; s, E! Z9 _1 @0 S

  498. / Y5 k3 l9 x  Y8 |) ~
  499. ;处理光标箭头, i  }8 q$ x( }6 X' i
  500. JSR Show_Arrow/ \: |6 G! ~5 S" H% g8 u( b

  501. ' ]1 J) I4 Y3 C% t; ]8 a/ ^7 W6 L
  502. ;更新调色板
    $ K) b# c! ^( ?& n* f5 ^  Q
  503. JSR Update_Palette_Data  u, R9 C+ y% p' [8 H0 e
  504. $ S$ m% g: ~8 R! p, L! ]
  505. ;显示时间(缓冲)
    $ C0 b( F' D5 I) S6 z+ O
  506. JSR Time_Show
    / b# I+ J2 `1 }
  507. # N$ Y- c: K0 [0 f: n- Q
  508. ;音乐显示(缓冲)
    5 A+ ^, p  e! G
  509. .IF SOUND_BAR_SHOW_ENABLE
    + O; V$ f  _! J/ A' l$ f  j+ V
  510. JSR Music_Vision
    2 R- o" g, Q. P6 u. Z/ b
  511. .ENDIF/ H3 ]# ~) l/ I$ y# ~; H

  512. 1 e0 t, X$ j$ f. }5 W: p! u- g  }
  513. Nmi_Sound_Play& p' _3 K8 ~) ~+ _% o9 b
  514. ;播放声音3 ]/ q1 i# ]; ^; h
  515. LDA <Music_Stop_State
    ; Y7 ?/ M: K9 k& ~, _  i, r
  516. BNE Nmi_Time_Wait_Set
    2 M* U, j( F2 Y! T; l- ~
  517. JSR Sound_Play_Proc8 w% e$ x. y3 |( G9 O; q

  518. : C+ s, T: t9 s6 j% I& Q6 m
  519. ;播放计时* o8 O4 z) z' Q2 ^6 t9 N. `
  520. JSR Time_Count) v& x/ s7 M/ M% o; |7 K7 t
  521. 7 V) Y0 Z3 f& t* U
  522. Nmi_Time_Wait_Set
    3 ^. ?3 T2 E$ k
  523. LDA <Time_Wait_Cnt
    ) E' o; [& G5 a0 I0 X/ w' z1 k
  524. BEQ NmiNormalProcessEnd" H1 v6 @- V' T" R: b7 z
  525. DEC <Time_Wait_Cnt- S" \; @" a* `  U+ }* f& ~
  526. NmiNormalProcessEnd$ A4 }3 m  G# X) x2 o
  527. & {* R, z/ s' i5 a+ }; j
  528. INC <Nmi_Time_Count$ |) i" y1 v/ ^; K3 O" [! m
  529. # r7 l  P7 s& |8 @6 X. K
  530. RTS: m7 |7 i2 ~7 M8 O& ]$ W8 F" m
  531. 4 I, `9 F( I  \, ]: _9 u0 E
  532. ;==================================================7 v% E) Q* y# R9 e/ d
  533. Init_MMC3
    2 u0 r' i! U# E! n& c
  534. ;==============================; r; R' P3 t$ d! ]& ^2 R
  535. ;禁用IRQ
    , p: N3 s; ]9 d3 i
  536. STA MMC3_IRQ_DISABLE
    7 K8 M9 l5 D' M' s. K; V+ I( m/ y
  537. : U* m' S* W1 G  o, z
  538. ;水平镜像% j9 n" g% ^; e+ W3 U
  539. LDA #$01$ Q  l; K6 V3 [4 D- X
  540. STA MMC3_MIRRORING
    ( O# l, J' G" D( m3 Z% `
  541. 7 r/ w4 O4 Y  F
  542. ;初始化图形bank
    9 ~% @* {/ u6 y
  543. JSR Init_MMC3_Chr_Bank2 g/ |/ a/ v7 N, y* c6 j  `
  544. 3 G& U' I6 ?# m9 E+ P
  545. RTS
    . v0 J! M( r. P
  546. ;==================================================
    ; t  f0 u7 z7 E; w
  547. ProgramBegin;主程序8 b- \8 l' S% n* m0 Z3 j
  548. LDA #$00
    ! M& ^3 M8 U$ X* R
  549. STA PPU_CTRL
    & C1 x) x$ H7 j5 w
  550. LDA #$00
    " y& n! [. t/ m  R) v
  551. STA PPU_STATUS; @) {4 U$ \* f- C" S
  552. STA PPU_MASK
    5 {# C! A( G( _$ N& o
  553. STA JOY2_FRAME
    % ]7 Q+ }: Y3 }) C; I3 a
  554. 5 m. j/ i4 u" |
  555. STA PPU_SCROLL' q0 H2 I' D* v  J* Q7 z
  556. STA PPU_SCROLL
    & \# {& r5 |6 D# G
  557. ; }5 Q2 b& Y# h3 N1 G. X6 g' j" v
  558. ;==================================================
    6 y/ G9 N" T  n; `6 q3 I
  559. LDX #$FF( T8 x0 D! t  Q% s: Z
  560. TXS
    3 Z0 A% {7 x- P& \( D

  561. 8 @1 ]8 @. g0 `' j5 j7 k) D
  562. JSR Init_MMC3. ?2 w6 L, r7 {. x

  563. ! a+ Z0 |, G& p8 F. v: z
  564. LDX #$02* L& {( K6 [1 l9 j. E
  565. Check1
    7 X8 ^" V' K- u5 }3 f! p
  566. BIT PPU_STATUS9 R) {5 U, \- A4 X8 {
  567. BPL Check1
    ( i* D7 F/ n" k& C. n0 S
  568. Check2
    ' I, [/ A3 a0 o9 u
  569. BIT PPU_STATUS3 S7 J  w3 K& P% J5 R
  570. BMI Check24 S' w* u' p7 ?8 j6 a3 M: M* u

  571. . w, l# p$ M/ j/ H& }3 d
  572. LDA #$0F# ?$ i8 v  i% e$ m" Z# ^2 z* S
  573. STA APU_STATUS# F/ e$ h/ F5 u+ e+ T; I
  574. LDA #$C0
    ; H! p$ i2 C& g& N$ ~( a! h* s1 Y: C
  575. STA JOY2_FRAME" H$ U2 |: ~  \5 R
  576. & y- E8 i7 L3 a& e- M: S. P" ?% e
  577. LDA PPU_STATUS$ _8 L3 C9 Q. K6 L' U. X& ]
  578. LDA #$10  `, R+ s- U7 y# m2 q
  579. TAX
      R% f; t1 G0 v9 e. G
  580. Check3
    , y3 g9 R+ y+ `; k6 \+ b) A7 `3 B
  581. STA PPU_ADDRESS" f, @* W8 E0 b4 j. `) v" A
  582. STA PPU_ADDRESS
    7 a0 ]7 L7 ^0 D% h) V
  583. EOR #$00" U0 M+ C& \3 Y
  584. DEX
    2 z. T1 h# ~0 W% S
  585. BNE Check3
      e) h7 V' }2 j. E1 c
  586. ;==============================! A2 X4 E' ?2 ]: Z6 R' ~
  587. ;调色板清空
    # K+ w/ Y8 d/ V
  588. LDA PPU_STATUS
    . s7 @- e% u, z5 K" @
  589. LDA #$3F
    $ G$ g0 q5 y8 |# x: L! [+ M3 g
  590. STA PPU_ADDRESS- L- s+ U' b7 E4 E5 Y* I. I
  591. LDA #$00
    5 n8 ]4 d1 f+ y* l6 T; M( I4 o
  592. STA PPU_ADDRESS
    6 `# ~2 p# U* c4 z& ^& x6 F
  593. LDA #$0F/ O# N9 E* M2 I
  594. Palette_Clear
    # G6 L+ Z. v( C0 _8 E( E
  595. STA PPU_DATA
    5 H" q+ L9 d# t7 s0 b* {
  596. INX
    & c( t  D! z& X* n( \" o
  597. CPX #$20
    : M3 a  |# a* t" X# e- y5 D( o8 f
  598. BCC Palette_Clear
    3 l. J4 ^' b( c( m& h
  599. LDA #$00. z6 A% Y8 N/ f# O
  600. STA APU_STATUS
    - K6 Z* W* g- s# ^/ s) I
  601.   T: _. G) O! j3 N0 N8 |7 a1 t
  602. ;==============================
    - R  `+ \% _$ N+ E: S0 e
  603. ;RAM初始化9 h+ z' g$ `" \9 H+ l; Q) i" j
  604. RAM_Clear_All( c' J& T, T- q
  605. LDY #$00$ p! W( f) f1 K
  606. LDX #$08) Q$ \% u0 L% L- g+ L. C
  607. LDA #$002 D1 s3 s4 S' D. i& \* ]' ?6 h6 I
  608. STA <$00
    6 t7 h6 n- h8 E
  609. STA <$01
    * y1 |' ?! z% t
  610. RAM_Clear_All_Start* H2 F. E! b* Y2 F  W
  611. STA [$00],Y  t2 V0 M+ w& C4 l) v4 P- e: d. }
  612. INY
    9 y2 s. ]* L/ U
  613. BNE RAM_Clear_All_Start4 ~' Y$ u$ ]" o8 A/ P
  614. INC <$01: Y( Q9 C$ x, ~
  615. DEX
    5 F6 T) R" p! C* A: y
  616. BNE RAM_Clear_All_Start. u- l; Q# C/ z6 {+ _# @% K
  617. ) M* X" h7 o% f6 c. I$ d/ ]/ l
  618. JSR VramClear, z& m8 _4 x/ O. z' C2 }
  619. JSR VramInit
    ! M- y3 n: ~9 w: e( X/ p7 z
  620. JSR OAM_Ram_Init
    1 i: B) a* |* Y: v
  621. JSR Init_Palette_Addr: {5 @9 Z8 N, M3 Q4 ^  e
  622. # o2 T4 z6 R7 s! i7 k
  623. LDA #$FF
    1 i! _4 h4 }0 _4 Y" I
  624. STA Use_Ram_End6 R( p' d2 t" F3 f& _
  625. ;==============================1 ?8 t4 {3 W) t
  626. ;初始化背景调色板
    2 q# X; ^- n3 x! v) x- v- ~2 m8 h4 q
  627. JSR Set_Palette_Color
    $ L- A+ P* s* k5 p$ q+ h
  628. JSR Set_NameTable_Attributes  A: r# {# K4 K3 ?5 q
  629. - ?7 f) I3 C* H0 z2 ?
  630. LDA #$002 s4 V- u" w, p* y% y0 |' p
  631. STA PPU_OAM_ADDR
    : g" n6 k) U$ S  b* m7 z; b+ {' T% [
  632. LDA #OAM_TEMP_ADDR / $0100
    $ P0 ?. w1 c0 I
  633. STA OAM_DMA
    : n3 K0 k8 K% l  L0 A5 y: `
  634. # m$ g) v8 y! j. [( ~, ~' l4 i: e
  635. JSR Sound_Reset_Proc
    ) ]& n$ `, `6 C
  636. JSR Set_Sound_Total
    ! ~% M9 f7 E. V1 [& g* [8 A1 f" P: N/ A

  637. 3 U/ ]6 q/ M2 O. q
  638. Init_Start_Music4 K* p8 X2 i2 l8 }; b
  639. LDX #$00: b9 e9 C$ F: ^7 Z! J
  640. Init_Start_Music_Write/ G* {7 {! Y5 B! I
  641. LDA Sound_Start_Port,X8 y0 X+ [6 Y5 c/ n! I: i
  642. STA <Music_Cur,X
    4 \, \4 `( V* y4 m# n) _4 C$ B
  643. INX
    ( B% {; c, z" I" B+ [1 l
  644. CPX #ITEM_MAX_SIZE" V" i- G( w2 E3 h7 O9 S% N
  645. BCC Init_Start_Music_Write& D& W, u8 A8 f! D! [

  646. 8 |  ]9 i& J+ }, B, p
  647. JSR Show_Music_Text! T0 P0 ]  x4 ~4 \

  648. 2 C$ F: z7 |2 f9 n) _6 ^; b
  649. .IF SOUND_BAR_SHOW_ENABLE
    3 c& S$ j0 [, A/ k, P& N! Z/ X
  650. JSR Sound_Bar_Text_Set
    ( h5 b& R, I* A* k" [* t) h' ~& Y
  651. .ENDIF
    $ Y, B- `$ F0 Z0 O
  652. 8 b& e( `9 s) I+ R8 F8 [
  653. .IF Track_Name_Pos
    7 U0 n! `% _8 q
  654. JSR Show_Track_Info
    ! ^8 `; y7 Z2 Z: R
  655. .ENDIF
    % v' s4 ]+ B5 M/ m" m# u

  656. 2 X6 t6 `8 e- z8 R+ i
  657. JSR PPU_Proc
    ( Q; N8 q$ |5 L8 |! \# x

  658. - y7 b5 }, s. O' C
  659. ;==================================================
    4 ?  j/ H& N" G% Y# \) R( Q+ Z
  660. ;音乐bank初始化
    . O% x& i$ M! g- C# K4 S& t- J+ o
  661. JSR Init_Sound_Bank
    6 P  q; E% O) V6 q( [" A8 v

  662. 2 J7 r& K+ r5 c/ z0 V
  663. JSR Music_Show
    . G  H) l% C; P8 w* O/ L! r
  664. JSR Time_Show' v; d! b# J/ b" p( L: g
  665. JSR Music_State_Show7 ^3 D- p2 p0 Y& T! n& X$ v
  666. JSR Time_Delay
    6 _7 ^0 I) u/ O" F' C) X

  667. ; W$ q0 I9 f' H/ P% B
  668. LDA #$01
    9 U( y, @# v8 f
  669. STA <Music_Stop_State1 G: R, x  p& J1 V2 i- j; g( ?
  670. 3 ?+ d1 m* X7 o% E) `5 h
  671. LDA #$88
    9 w+ w- ~4 v4 {9 Q9 [5 Q. p: J
  672. STA Screen_Ctrl* P; |" O5 d6 `$ B
  673. STA PPU_CTRL! j0 [- [9 _2 Z& O1 J0 I+ D

  674. 6 z5 \1 H3 A1 v+ w* K
  675. JSR Show_Page_Text
    * S/ ^( J* t- E7 Q! i: O9 X( D

  676. ) p' Z- V* }5 i' i) y% d
  677. LDA #$10
    * q; x4 `- X# n: ]& L
  678. STA <Time_Wait_Cnt
    : I5 J9 a; F$ j+ r
  679. - G! ]) I& _, @$ f+ S
  680. Wait_Time_Over
    1 A& T$ G0 a' E7 x2 n. m+ F
  681. LDA <Time_Wait_Cnt
    : C. l, v# ~4 H: l' c* [! c
  682. BNE Wait_Time_Over
    , R) l$ u6 E$ w8 K7 h! P
  683. 6 p. X* d. k( o6 r% O* X$ T3 G) |
  684. JSR Show_Arrow
    6 u2 s  ?* l' y/ ~0 h7 I5 U
  685. LDA #OAM_TEMP_ADDR / $0100* j0 F, {% ~( J, |3 }. @
  686. STA OAM_DMA
    / r1 y1 F" }# k+ _# }/ @2 e8 F8 k

  687. % M& e$ R; U' [8 p* G# Y- g
  688. LDA #$1E
      F5 _/ b: F3 U- ^
  689. STA Screen_State
      H, j4 T& V/ U7 z" G

  690. & F( n' R# I/ e) I2 I0 U- O
  691. LDX <Music_Item_Cur9 g) S/ T2 Y1 K
  692. LDA <Music_Cur,X0 a3 e7 v7 `! x5 c( F& u4 L# C
  693. JSR Sound_Init_Proc
    6 O, H; A7 X/ L1 t7 d( D# t4 \

  694. / ^1 C" T4 }" }* R; q
  695. CLI
    5 J0 X% H: P, O4 S, S+ }% {; M- X
  696. JMP MainLoop/ O* E/ x. ]$ ]; o

  697. 5 n' x! ^' [  k- J
  698. ;==============================
    9 D) B# `+ v& S  l9 G
  699. Time_Delay;延时等待
    6 ^  W1 @/ @& C# N2 n. M. H
  700. LDA PPU_STATUS* [! e3 d/ l1 K6 k) S8 n& R" ~
  701. BPL Time_Delay
    $ M8 g2 o# S0 \0 i$ l. P  }/ `" u8 g6 i
  702. RTS
    ' V. Y4 Q8 i7 }' N: }' [
  703. 9 E- O5 L% D, o0 G! b* ?" y
  704. ;==============================8 n; M  Y* z& ]
  705. OAM_Ram_Init;初始化精灵内存4 T5 K7 U) t: `: S: d# D' O  @
  706. LDX #$00$ d  A7 u# j$ X8 b
  707. OAM_Ram_Init_Write
    1 o! u3 @( B2 P3 E
  708. LDA #$F8! v. `1 m: X8 q
  709. STA OAM_TEMP_ADDR,X
    0 |! k2 C2 N1 }/ t6 W; \
  710. INX
    ( d; F: R, [' m( I* I- B! h& M
  711. LDA #$F8
    $ b; U; t3 o7 N
  712. STA OAM_TEMP_ADDR,X
    ' o# M7 u* m/ G) F" k  Z
  713. INX  ?3 r; L% z8 p! T' S. f
  714. LDA #$00
    % b2 U" x1 h2 d3 a3 T
  715. STA OAM_TEMP_ADDR,X
    , B  ~1 |2 P% H4 C0 B9 n0 n* ?6 {
  716. INX
    , o1 |  f% K: }) j
  717. LDA #$F8% y& p1 v( |, ]
  718. STA OAM_TEMP_ADDR,X1 D$ @( F/ R- g& e; F+ I* T; H
  719. INX
      q. S2 E3 L" x7 C1 B9 X
  720. BNE OAM_Ram_Init_Write
    $ l3 }; ~: w5 E3 U" }, p; a
  721. RTS
    ( D+ }" e. m1 @! o1 V& e, t
  722. ; e$ ~7 H4 _/ N4 t; C9 q0 I
  723. ;==============================
    0 x9 b* p0 D7 k* [
  724. VramClear;初始化图形内存
    9 b" V* C) C0 o& }
  725. LDA #$20& r- y. U& C: j0 {' \, J; w9 l' u  F
  726. STA PPU_ADDRESS- b% }& e5 O: y1 f# R
  727. LDA #$007 ]3 A4 r9 ]6 }% {
  728. STA PPU_ADDRESS- F* u1 f2 c( E! M. g
  729. LDA #$00
    : j" J% f& q3 |6 J
  730. LDY #$00
    : p: h  n0 K* w
  731. LDX #$10' Y+ R: S9 [0 Q* a5 D: n2 E1 }
  732. VramClearWrite& S2 G* Y  c" X/ V! N
  733. STA PPU_DATA
    2 H2 B- {1 W, q3 N4 A
  734. INY
    ) w% x$ J, c- S
  735. BNE VramClearWrite/ r& J1 V% |( `! ~# l
  736. DEX8 Q0 |, P' N7 h1 j3 G: D' y
  737. BNE VramClearWrite
    * e3 G" b1 W$ A$ P8 e
  738. RTS. Q1 l$ u4 p3 A/ s) w* l" c4 n

  739. & k1 O+ d6 p& P  b
  740. ;==================================================: d, R6 x, V: Z/ z9 \# J
  741. ;设置MMC3图像bank! C, X" H2 b6 U  m& _" ?
  742. Init_MMC3_Chr_Bank
    2 J% E' j; Z+ w8 J9 `9 H
  743. LDX #$05" c( ]4 B% X- }& U% c7 @, f
  744. Init_MMC3_Chr_Bank_Write
    ( v( V" E$ l3 t. q2 x
  745. STX MMC3_BANK_CTRL$ D& c  o3 e. h9 o
  746. LDA MMC3_Chr_Bank_Data,X3 {( G3 U+ S0 L% {$ {
  747. STA MMC3_BANK_DATA
    9 T! J  n3 |# ?' w6 s
  748. DEX
    : i$ r' x2 H: O5 p( O
  749. BPL Init_MMC3_Chr_Bank_Write1 m1 S- D+ P0 J5 a
  750. RTS1 g0 b9 `* T- T5 ?8 x) {
  751. ;--------------------------------------------------
    # j) A' O6 {# \4 H% q, S' r& D
  752. MMC3_Chr_Bank_Data
      j& a( P$ `: |$ V- Z
  753. .DB $00,$02,$04,$05,$06,$07
    , w7 b5 j( E  C% I3 e% t( s

  754. * T! n3 K1 j+ |5 H
  755. ;==============================" `$ }# F+ P2 h
  756. VramInit;初始化图形内存6 A( \+ G3 I" q* ~9 V- c
  757. .IF CHR_RAM_ENABLE
    % |. j9 U; c$ A: [5 N$ @
  758. LDA #CHR_DATA_BANK2 N! z6 f% p  y! a  }
  759. JSR Switch_Bank_A000
    ' U/ J. i+ J9 S! |' q1 t
  760. LDA #LOW(CHR_DATA_ADDR)
    % }* j0 A( W3 B! c& s3 E
  761. STA <Data_L
    ( n  u( D9 {8 M1 S% i: n7 L2 u
  762. LDA #HIGH(CHR_DATA_ADDR)
    0 `8 N/ I& d" i* Q
  763. STA <Data_H
    - L1 s; ?$ M& q- Q! M  s
  764. LDY #$00# q; m0 H6 H( r  t7 d8 a& a1 f9 @
  765. LDX #$20
    / }; R; @5 M1 V
  766. LDA #$00
    % u9 q2 `, A3 [. S  M0 \( ^- D: x
  767. STA PPU_ADDRESS
    0 u$ U8 \0 C6 t3 A7 R, K9 ]
  768. STA PPU_ADDRESS
    / J1 G( q6 f- Y' I3 ^! o
  769. VramInitWrite- E- R6 c' J& N% p# \! d
  770. LDA [Data_L],Y, W  V* d: f" [& R7 }
  771. STA PPU_DATA) [3 C% e+ J: k3 o1 d+ B8 }: L
  772. INY+ p$ p$ L; e. ?' s: J
  773. BNE VramInitWrite; o. s$ z, M2 Z. v; U/ |2 Y2 L" R
  774. INC <Data_H# I' O5 F9 p* D' F4 v2 n: z' h# w
  775. DEX
    : W& ^4 u9 Z7 T. M( }# P! L+ h7 T
  776. BNE VramInitWrite
    ; b8 \, V' `3 f$ D
  777. .ENDIF* e5 q6 d2 p( ~3 ]; o5 k
  778. RTS4 u1 V, B( y( w9 k( C9 F6 F1 Z
  779. & Z5 t8 L6 J, l
  780. ;==============================
    7 ?! d% [! _; }; B/ D; C! x" w. h
  781. ;音乐切换
    + S2 b; g9 F9 G, F
  782. Music_Play_Change2 I% a. }, V7 \
  783. LDA <Key_Once
    ( h% s  y: A+ E
  784. AND #$FF
    3 |. W& F0 X7 i( V9 V2 K4 Q3 [' H
  785. BEQ Music_Play_Change_Check
    ! I1 ~  @9 T! Y! f5 X
  786. " N& O3 I- l8 k/ f
  787. ;禁用音乐条刷新) A% C& u  ^( O: T  y% ^3 I/ n  [; [
  788. LDA <Text_Disable_Flag) C2 U* a9 G3 G) _5 W0 |: ^4 T
  789. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    3 z: T0 W* b! Z, i. H; U
  790. STA <Text_Disable_Flag/ V8 n7 H0 N  R( [7 c4 p' W

  791. 9 U* m0 p' R* B9 i) |# _
  792. Music_Play_Change_Check/ c9 A& @7 X( v% P
  793. Music_arrow: v  D8 Q7 V! }0 ~2 ^
  794. LDA <Key_Once
    9 |* R* L9 v1 j. x6 K3 X- @: D  k
  795. AND #$0F/ b; `: G  N' o1 ^; \3 I, ~
  796. BEQ Music_Play_Change_End& X$ x5 L6 r5 x
  797. JSR Music_Track_Change
    . ~* s7 s) K0 I8 U! V: ^
  798. JSR Sound_Reset_Proc
      t& s0 N9 ]+ X2 c
  799. JSR Music_Show
    4 j, k9 o/ K- g) E
  800. Music_Play_Change_End
    $ m; F# ^" C  Y! t; ^  X
  801. RTS
    0 x4 j. z/ ~/ A

  802. 8 Z( ]# s) s- Q* |
  803. ;==============================
    " ]5 q5 v3 ]" D8 g% Y8 K: J* o0 ^7 u
  804. ;音乐曲目切换
    4 v, m8 d: Y/ a. N3 N
  805. Music_Track_Change- Q6 e. t* U8 X& ~+ r1 R9 S+ v
  806. LDX <Music_Item_Cur
    $ ^8 |0 F& b+ K0 u  ]
  807. LDA <Music_Cur,X
    . K) u. }; H' T5 Q8 C
  808. STA <Music_Last0 t+ ^: h* w7 P, I
  809. Music_Decrease
    5 }. S* u. y# Z6 \. G
  810. LDA <Key_Once
    % s! Z% B& c: ]( i! Y* H) m
  811. AND #$42
    % n: [& n( f& Y
  812. BEQ Music_Increase
    8 X& J$ D2 x, x2 M8 {$ @" Z
  813. LDA <Music_Cur,X8 S6 y, g" i; R4 t
  814. BEQ Music_Increase
    % {+ _( l; o, ?: g/ n1 `
  815. DEC <Music_Cur,X
    9 [) V- {: W1 }( Q- C$ u
  816. Music_Increase/ K! w0 I4 s: U4 f* O( H" ^
  817. LDA <Key_Once
    * R# M2 z5 W5 a' I
  818. AND #$81* o, `+ N$ R# v; {7 _! M
  819. BEQ Music_Decrease_105 t% ~2 f: r+ }& g. P3 h7 @# t" D
  820. JSR Set_Sound_Total% l9 ?2 L2 u" O
  821. LDA <Music_Cur,X5 r( p$ p; x. S1 y: C
  822. CMP Music_Total. u0 {- V( g3 h9 \" B6 f
  823. BCS * + 4
    9 g. P( ]: x4 p* [! y. O; g0 e
  824. INC <Music_Cur,X/ o3 m. i; m2 }+ _! x7 H  z$ T
  825. Music_Decrease_10
      z+ U6 e% e6 Z: {7 }% Z
  826. LDA <Key_Once. H+ \- h% T% {! Y# N9 l) |: K2 x
  827. CMP #$04
    2 D5 V' V2 X: i+ y: S! ~
  828. BNE Music_Increase_10
    % k6 H5 `& {! r, J( v. o
  829. LDA <Music_Cur,X
    / J0 F1 T" {0 N1 H" m
  830. CMP #102 J2 i$ @3 n0 @2 j2 d! X; s
  831. BCC Music_Start_Song_Min) ]$ o: x, X& ~$ ^3 u
  832. LDA <Music_Cur,X8 ^" {, }% x9 |; a
  833. SEC6 C9 U! n% q# P+ I4 L
  834. SBC #10
    4 t% o6 p1 M7 {& O; D0 d% w
  835. STA <Music_Cur,X8 P% W4 T$ ~2 S4 c4 m
  836. LDA #$00
    - N  T' P" t( d8 a+ B
  837. BEQ Music_Increase_10! X2 z( @! n4 v# ^1 N
  838. Music_Start_Song_Min$ o4 `: p. l' e7 b5 s
  839. LDA #$00! |; O4 e  Y! {+ Z0 Q: o# B
  840. STA <Music_Cur,X# S+ Z/ b2 k5 M
  841. Music_Increase_10+ Q- R) c8 T- |, C
  842. LDA <Key_Once
    $ B- q" b4 S9 Z) g
  843. CMP #$08  e; D0 ^% x4 u6 f; ]" o3 c, n
  844. BNE Music_Track_Change_End/ H$ J* j1 P9 p1 q2 P. n
  845. LDA <Music_Cur,X
    9 T& l% T4 w- }2 h* ?
  846. CLC) f: V7 P9 c: V% ^$ m
  847. ADC #10- X( y/ w' j; S- I: g; s
  848. CMP Music_Total- R. \3 P" T* w! C
  849. BCS Music_Start_Song_Max; D" Y6 I  O7 m4 T) D
  850. STA <Music_Cur,X
    % N6 l/ k7 F! u, O5 [0 M: l
  851. LDA #007 D  A& c+ r5 r' I4 j
  852. BEQ Music_Track_Change_End8 `# y: o  x; i/ L9 I6 H
  853. Music_Start_Song_Max
    3 a1 ?6 Q! w3 D7 `" E
  854. LDA Music_Total8 ]$ y6 v9 W3 G
  855. STA <Music_Cur,X3 b# X5 T7 M) O$ G$ `; p) j; e
  856. Music_Track_Change_End/ L/ N' n& z2 r9 j$ j. [* d0 a& ~
  857. RTS
    5 {: \7 N- N% \# q5 R( M. s# s
  858.   V# i+ L/ f4 V6 u; E9 c1 T
  859. ;==============================' a9 W9 O$ ~4 J5 |5 Q
  860. ;按键处理; e0 c% G- R! }# L9 e
  861. Key_Proc, }+ W& E# ]' L" S. g: v( Y! ^
  862. JSR Key_Scan* e$ ~: O& h2 V# M  [
  863. LDA <Key_Keep; W5 g% S% j- t) J% v6 c6 E  V! j+ R
  864. STA <Key_Temp1 U; N9 _# u3 }  _$ v' L
  865. JSR Key_Scan$ V! o+ Z, W" i! `7 b$ B
  866. LDA <Key_Keep( b  v* l* w: X* C: e) `) }
  867. CMP <Key_Temp
    ) g% p) b# K( c; z9 U: g- U
  868. BEQ Key_Get_Once
    ) E$ T: S$ a1 S2 K' ~( D
  869. LDA <Key_Kemp% D2 i+ x) V& o2 B
  870. STA <Key_Keep/ T/ ?+ n3 Y8 D- b: b- x
  871. Key_Get_Once: [5 @1 ]7 a" d; I  T1 I: W
  872. TAY
    $ R) ~) c  m, b7 g) j4 z/ z
  873. EOR Key_Kemp
    1 c! R5 A9 j& H- o, R% J3 b6 m& v+ X7 [
  874. AND <Key_Keep
    - F- E* K+ s2 Q# C( x5 W2 G
  875. STA <Key_Once
    2 s/ j/ |+ Q0 G7 V9 P; a+ c( q9 o4 P+ T
  876. STY <Key_Kemp
    % Z3 y. b: v& ^) M, Z  S. k
  877. RTS
    ) ?' ^/ R9 q0 z$ e: J% K+ F3 }  K
  878. ;------------------------------8 R6 }* r/ c& e( p8 X+ e
  879. ;按键扫描
    ; J5 @9 j% p; |; ?
  880. Key_Scan
    7 ]. G- A. F$ [1 _
  881. LDX #$01
    * Y) z+ f- n( }, p5 L, |$ s
  882. STX JOY1_FRAME# B, u3 Z% e' r5 O3 n
  883. DEX
    ) W. {  I9 c/ r: u
  884. STX JOY1_FRAME, d7 ?+ n$ X( i7 b; Q
  885. LDX #$086 I2 T  ?% H; k; O- h: J& }4 L9 c
  886. Key_Value
    & f( k( e$ u6 m% u! c  i
  887. LDA JOY1_FRAME
    0 f2 C9 }; y3 W  w) a9 F" r; d
  888. STA <Key_Getv
    : j6 g* _4 q$ y3 w! C! b- ?, R
  889. LSR A1 A: s, Q! c+ G# H
  890. ORA <Key_Getv
    7 `4 }  p- i' ]2 `; {
  891. LSR A6 X4 F7 L& O2 i5 c2 i
  892. ROL <Key_Keep
      D/ i2 |3 v0 K4 V
  893. DEX6 u7 ^& g- M; {6 Z) D2 L
  894. BNE Key_Value
    " D: u' _5 ]7 v0 y6 R# J5 F
  895. RTS. A7 h& Y' c3 y* ~4 p3 v

  896. + x" {/ T! s  b! y* V
  897. ;==============================% v0 L3 X: v0 k% K
  898. .IF SOUND_BAR_SHOW_ENABLE
    + K% A# L  ]7 C
  899. ;音乐条显示
    % c8 y7 p5 A" O1 i$ z8 b! B
  900. Music_Vision
    4 I) Z# ^! f+ @9 X
  901. LDA <Text_Disable_Flag: R7 E' B( ^0 G
  902. AND #TEXT_DISABLE_ITEM
    + d: o9 r6 J- q0 j
  903. BNE Music_Vision_End
    * n4 p+ C" b& f1 z
  904. AND #TEXT_DISABLE_BAR' Z# o. g+ {; v" s# e% W
  905. BNE Music_Vision_Set; Q5 {+ p, @7 ]+ B2 v8 @
  906. LDX PPU_Cur
    8 E+ F* }9 Q* Z) s7 Q
  907. JSR Music_Animation
      c& e# F& L0 ]7 q) t* i1 D
  908. STX PPU_Cur
      q0 d! `7 P4 \9 @
  909. Music_Vision_Set; L* Z/ M$ T7 W4 {: m! p
  910. LDA <Text_Disable_Flag
    7 r6 n) m' @' x: s
  911. AND #TEXT_DISABLE_BAR ^ $FF
    3 b8 B& k! T* i, H
  912. STA <Text_Disable_Flag3 S6 t/ y- ~. J- S2 r, h6 g
  913. Music_Vision_End0 L  i* r# |) l* D
  914. RTS7 V$ E1 r/ M; T7 j) |
  915. ;------------------------------- o7 D% _8 X$ ?5 p* t
  916. ;音乐条显示处理/ [- X8 U! O5 r4 f2 t4 w
  917. Music_Animation
    . K2 c* }8 O; k1 x. v' H  [5 f
  918. LDA #PPU_MODE_CNT_LINE  ~; f8 D0 {4 S' N. Q5 [3 }0 s
  919. STA PPU_Addr,X4 Q' x  _0 y9 {% H
  920. INX
    & t. j  X  t" S5 g% O
  921. LDA #HIGH(Sound_Bar_Pos)
    ! K6 c( A+ O3 z% u+ O
  922. STA PPU_Addr,X
    , V" Z0 r0 x# I' M5 O' [
  923. INX" z9 m/ y% n6 ], E7 C7 L% Z
  924. LDA #LOW(Sound_Bar_Pos)  Z- S" Y% q" m4 i  B
  925. STA PPU_Addr,X
    6 Z' h! q' d/ l& C0 f! z
  926. INX
    8 v1 |& }. P3 {4 l
  927. LDA #$08
    . c- ]5 ]9 L- d& V4 ~* }
  928. STA PPU_Addr,X1 a: X, ^. V( H4 |
  929. INX1 @5 t7 f; n* |
  930. LDA Sound_Bar. P# a& D( ^( V2 V
  931. JSR Volume_Convert  H. |" U' a6 E# H, m0 W( t7 u
  932. % g" o$ i; j% T% A/ d8 d
  933. JSR Volume_Set_Cnt1 l2 ^- E9 t6 b  T6 @8 \+ S
  934. LDA Sound_Bar+$4
    6 [) ^& C, e3 W" _, f' s, S. L( {
  935. JSR Volume_Convert( z+ Q/ C. v/ q$ d, [% L
  936. ' Q4 W# V/ {; u1 [
  937. JSR Volume_Set_Cnt6 `$ v8 t& a" e9 m
  938. LDA Sound_Bar+$88 `/ f4 c$ `3 ]( Z! s9 h' g( g) p
  939. JSR Volume_Convert
    9 P4 P; A. W3 C. k; i% \3 l/ [

  940. 2 B4 i, D; M8 L" P8 w" m4 b, W
  941. JSR Volume_Set_Cnt
    8 t- b* m6 R& G; G8 F# ^& t
  942. LDA Sound_Bar+$C, U4 b* k  S! C, U1 |* N0 F
  943. JSR Volume_Convert7 h& p/ `. ^/ P

  944. 2 h3 K7 e! o8 s2 S
  945. JSR Volume_Set_Cnt/ M$ c" T3 A" F- z8 Z
  946. ) X0 G1 [4 o5 u- {
  947. LDY #$10
    5 ]$ r3 K: W, U* I. v( s
  948. LDA APU_STATUS  e+ ^$ @( Y% {& {
  949. AND #$101 o, z, j" n& A6 E/ g
  950. BNE Volume_Count
    ; ~. @# _9 g! r3 }* D. K3 Z
  951. LDY #$008 p+ P5 {! Z8 X  M" r6 R  B
  952. BEQ Volume_Count( n* f$ N/ [5 ?" _
  953. 6 k9 V0 e8 i4 n5 G/ S. m4 Y! m
  954. ;------------------------------
    + q3 v5 D1 W' O- I' _! b3 O
  955. ;音乐条处理& ~; P  {4 f" `) D. T; W1 V+ x
  956. Volume_Convert! N. l: k0 ?: X  X; j0 z
  957. AND #$0F6 _; x# }8 w7 F( D! K
  958. TAY! i# T( B$ P% C0 a& _: O  _( r' k
  959. Volume_Count  ]* ^; y- \: p  {& f. u# l
  960. LDA #$08! p% b- w1 C: h9 o+ ^' M
  961. STA Sound_Bar_Cnt
    , D  \9 S. [& v& ]% ?8 y
  962. Volume_FILL
    ! b- h; U5 P7 ^) a
  963. DEY
    ' W) u8 A9 _) x; G1 X' G
  964. BEQ Volume_Half9 E+ C# T% x9 C8 Z
  965. BMI Volume_Empty
    3 ~' s* ^2 w$ e" V% t
  966. DEY8 [' D. G! a& S6 b* S/ |
  967. Volume_Full
    6 e  K3 l$ Q4 t" y. O+ B
  968. LDA #$16
    3 j1 ?2 U: N, B! t
  969. BNE Volume_PPU
    & i- r& d; p7 f& Y# i$ v9 d
  970. Volume_Half
    " ~" {( z; m) }6 R
  971. LDA #$15
    8 ?3 a( c! ?! W- B. A2 y
  972. BNE Volume_PPU
    / U' S, [& [+ E( B0 c, L
  973. Volume_Empty1 q; I& X5 A3 F
  974. LDA #$14
    - C0 \9 S# z) U' l
  975. Volume_PPU
    + t) ^( _% f3 R/ n
  976. STA PPU_Addr,X
    ' T6 o7 U" l; Q2 [; b
  977. INX+ Q& m$ r4 }' K9 _4 r8 y- l5 c
  978. DEC Sound_Bar_Cnt/ w" V7 T7 s  `, f
  979. BNE Volume_FILL
    ; E- m" f" B! r+ j
  980. RTS
    . Z* K2 A# t$ Z$ N7 c1 t) y1 }, ?! o

  981. 5 d3 {9 ?+ \5 E( N/ m
  982. Volume_Set_Cnt+ {) R+ ]( ^% V" [2 K
  983. LDA #PPU_MODE_CNT_LINE_NEXT
    / z. U* T8 _: S9 p* I% }  q
  984. STA PPU_Addr,X
    8 h' y; a6 O8 r9 @" O* u- r8 l" B
  985. INX) c7 t" q2 {# F3 A  S  \
  986. LDA #$08
    ( ]" w+ g0 {, F  v/ w/ p' d9 [1 @
  987. STA PPU_Addr,X
    . @4 G& f; U( n& {
  988. INX+ P4 e# S  t! ^
  989. RTS
    6 u" |: M3 z9 O+ }6 E$ }6 x
  990. - `& g+ `" c& O# V0 ^* I* I3 _) D, I
  991. .ENDIF
    % D- l! f' [& B* w! z5 _
  992. 9 x9 u' j- m; j( K+ |  p/ ^
  993. ;==============================
      |! {& B- @& ^; g$ T
  994. PPU_MODE_CNT_LINE         = $FA    ;行计数写入
    ( N* Y3 M8 U% t( r
  995. PPU_MODE_CNT_LINE_NEXT    = $FB    ;转下行计数模式; a. a) c% z: O) U
  996. PPU_MODE_CNT_CLEAR        = $FC    ;行计数清除
    8 b1 I7 s$ S0 J( |
  997. ;------------------------------
    - ~: F9 I" x3 n( j' r8 ?8 T
  998. ;PPU处理
    1 j6 O' n* i1 k4 }
  999. PPU_Proc* ]3 k" o8 d7 m+ ~2 l  U
  1000. LDX PPU_Cur
    ) V1 Q+ {/ B9 S! V* S% {
  1001. LDA #$009 P$ N3 j+ d: b8 r9 r" B. D7 K  U! Q
  1002. STA PPU_Cur- ^  X7 ^' |5 _1 H' Y& ]. E
  1003. STA PPU_Addr,X& F! y8 E3 N6 }5 D4 P' Y! b
  1004. LDA PPU_Addr
    * B1 b& A' {! W
  1005. BNE PPU_Proc_Beg
    . m4 J- j; `; V* q; Z
  1006. PPU_Proc_Ret
    . A) Z% L% Y6 f( Q/ P
  1007. RTS
    3 \, k+ ?  c6 b: ~: V3 \" Z

  1008. 1 J9 K3 v' F$ ?5 c& ^& j7 N6 S
  1009. ;------------------------------
    : X, O* F8 w  {/ F- b0 u* v
  1010. PPU_Mode_Return_Cnt  ;转下行模式
    / O/ x- ?1 ~6 R
  1011. INX
    : T* k3 W( N0 J& j8 W# W
  1012. LDA PPU_Addr_L0 P8 }! B; H3 a# J' r
  1013. CLC
    " E$ i' q& m$ Z& }  L
  1014. ADC #$20
    8 s0 Q# u1 }8 E
  1015. STA PPU_Addr_L0 ]2 A! A4 r! A
  1016. BCC PPU_Mode_Return_Cnt_End
    4 t  `8 V2 u) `' V) C: m
  1017. INC PPU_Addr_H
    ' F; s0 U$ b' E- ~/ a/ `
  1018. PPU_Mode_Return_Cnt_End
    2 v- Q1 y  [, G( X
  1019. LDA PPU_Addr_H/ g; Z0 n+ E6 L! E
  1020. STA PPU_ADDRESS7 y9 ~, b( U3 w4 i1 b
  1021. LDA PPU_Addr_L* p4 N  M( I) K7 p  N
  1022. STA PPU_ADDRESS  E' r7 N% i( q$ v
  1023. LDA PPU_Addr,X' H" b  c0 f( C2 |3 m' {; H
  1024. TAY
    0 z$ T3 j! |9 ]
  1025. PPU_Mode_Return_Cnt_Write/ S6 U" |! Y1 c! t- ~/ p
  1026. INX
    . I, o% j/ e  W) p
  1027. LDA PPU_Addr,X
    - m- U; L- W- T* e6 j' D$ r
  1028. STA PPU_DATA6 D$ {& U8 h5 L  O
  1029. DEY& z& {# W5 ?- Y4 h
  1030. BNE PPU_Mode_Return_Cnt_Write( _/ d  c; I  o1 x* R
  1031. JMP PPU_Proc_End
    ' \, ^, g, i/ P5 i  R

  1032. ; r1 @; T: X% Q9 ^6 `
  1033. ;------------------------------
    ! B5 |- C1 T/ d3 {( \/ g% o
  1034. PPU_Proc_Beg  ;处理开始
    * ^" J6 P; T" i6 `: n% Y
  1035. LDX #$00  z7 q+ M; }2 V9 M# E
  1036. STX PPU_MASK  `- p: K7 m( S) X
  1037. ;------------------------------
    3 N+ \- R8 u& u3 N
  1038. PPU_Mode_Select  ;模式选择+ z/ _3 Q: V6 R( r
  1039. LDA PPU_Addr,X
    # a3 N& k3 r% Z3 S  k, k
  1040. CMP #PPU_MODE_CNT_CLEAR8 y3 c' U$ S) n3 F6 t
  1041. BEQ PPU_Proc_Clear) N3 f. o9 U: }# y# K5 E
  1042. CMP #PPU_MODE_CNT_LINE# [" V# f2 `' C# b) L/ {
  1043. BEQ PPU_Proc_Cnt_Line+ v- r, ~' r9 K" S; y- n# Q$ U
  1044. CMP #PPU_MODE_CNT_LINE_NEXT
    6 i/ s' v- j* p! X, y2 b) }* _
  1045. BEQ PPU_Mode_Return_Cnt
    & t6 ^- F, f+ D6 k9 R) b
  1046. JMP PPU_Proc_End_Write
    $ G  t8 R) z/ \6 B- `( M
  1047. ;------------------------------6 g* l( q/ Z4 a% w" m5 O
  1048. PPU_Proc_End  ;单行写入结束
    2 D6 O3 v4 e9 A2 i+ x, h5 m2 ~
  1049. INX
    / M' E' Q( C2 X7 t9 f4 e9 E8 @
  1050. LDA PPU_Addr,X
    2 {7 d$ I. w) y$ ~
  1051. BNE PPU_Mode_Select. @! R/ e8 j" D4 W3 Y
  1052. STA PPU_Addr4 s5 h3 R  G1 G* ^3 u% f
  1053. JSR Update_Palette_Color
    ( l! P, B4 x8 S( I! i5 K: n
  1054. ' ^; y' l4 Y/ t& u/ Z
  1055. PPU_Proc_End_Write
    : \. \5 A  a, c$ _
  1056. LDA #$00
    + Z# p& C4 f: m
  1057. STA PPU_ADDRESS
    2 Z! x8 A" h) F- _* X
  1058. STA PPU_ADDRESS+ l8 M3 S  q& C* I8 m
  1059. LDA <Text_Disable_Flag" ?- d/ ]2 ]2 r" I5 k9 P. K
  1060. AND #(TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_RAM) ^ $FF
    - i  `1 f  Q( x5 Y3 W! I
  1061. STA <Text_Disable_Flag
    8 @, j3 y- F5 T: o/ X( n" d9 H
  1062. LDA #Scroll_X
    + X1 V" D( j, S& L+ L" O
  1063. STA PPU_SCROLL# x9 L* Q$ M' `% Y) I
  1064. LDA #Scroll_Y6 g+ r3 `0 G6 k1 B# E
  1065. STA PPU_SCROLL* d1 H7 P9 C& ]0 y' v
  1066. LDA Screen_State
    $ F9 |8 ?" N2 Q1 V' X9 i9 C2 d( F4 \
  1067. STA PPU_MASK  k2 Y1 B; C2 @; S: U, Q3 v
  1068. RTS1 p- l5 @$ N% F4 E* m$ s

  1069. $ {( i6 u: A  ], g
  1070. PPU_Proc_Clear
    2 p  b& C$ T: I  ]
  1071. INX
    # x$ X, Y$ H! N" a
  1072. LDA PPU_Addr,X
    + z. ?$ O! u& @; v
  1073. STA PPU_ADDRESS( j; M( u/ c% y+ J' j' [; Q
  1074. INX, z5 g% g* C7 V5 A- \5 ?
  1075. LDA PPU_Addr,X
    2 ~( N, Y4 w  g; Y% q- k5 l
  1076. STA PPU_ADDRESS' R7 g. q$ S: q) ^2 p0 R' v
  1077. INX. S, O4 K3 v+ f8 N
  1078. LDY PPU_Addr,X
    ! x. @' a  X/ p3 Q0 M
  1079. LDA #$00
    ( y, m5 a5 @( E; D" p5 G
  1080. PPU_Proc_Clear_Write
    " q" j( K8 d% k7 L9 O6 g4 n7 r
  1081. STA PPU_DATA
    : }- Y8 N$ r' |9 F9 s0 E
  1082. DEY' f+ r- U# F/ y6 s
  1083. BNE PPU_Proc_Clear_Write
    # J0 }0 U: i4 ], d/ G2 q, f% U
  1084. JMP PPU_Proc_End4 k9 S- q& z2 F7 a# q

  1085. ! |% m- i/ W% E" S5 w1 O/ v
  1086. PPU_Proc_Cnt_Line
    8 s9 }9 {9 A% f1 h# `) p4 U2 e
  1087. INX
    1 p* E# k/ E& T4 V) E- y0 w' u
  1088. LDA PPU_Addr,X
    8 l/ `: `; W; d' Z3 N
  1089. STA PPU_Addr_H
    * B6 k2 h$ A  D' B0 z
  1090. STA PPU_ADDRESS2 W* k! L: @, |( w" m1 e( o6 t
  1091. INX
    + a- B* j  e9 K% c0 H7 k
  1092. LDA PPU_Addr,X: o7 [% D; g' |
  1093. STA PPU_Addr_L0 `/ `6 D% {- M4 ~* M" _
  1094. STA PPU_ADDRESS
    $ J# M/ x& ^  x5 q1 @
  1095. INX
    + _) @& P0 o( `$ U+ H4 T
  1096. LDY PPU_Addr,X4 `4 [5 K1 G; m/ P3 R; p
  1097. PPU_Proc_Cnt_Line_Write" f( D8 S2 r. P" z1 |
  1098. INX
    / O1 }8 |# g( s9 _+ u- m2 p
  1099. LDA PPU_Addr,X
    " D7 F! B/ y3 o9 P) \
  1100. STA PPU_DATA4 j- r  U" b( V5 L
  1101. DEY% O9 g3 Y# S4 m6 [2 E0 X, y1 u
  1102. BNE PPU_Proc_Cnt_Line_Write
    , Z0 j* \$ M2 a8 \
  1103. JMP PPU_Proc_End& x* \4 L. `( R
  1104. 6 ]4 j9 w) G5 K; x' {, A# D
  1105. ;==============================
    $ m/ x$ n! y6 d; n! a% Q7 ~
  1106. HEX_To_Dec;十六进制转十进制* g8 i/ V4 c$ L9 X2 u# u+ g! u
  1107. STA <HEX_Data# H% A$ b! x0 Z0 O
  1108. PHA
    6 o  ~9 j5 C8 a( k
  1109. TXA$ G7 G- E' s8 N& }
  1110. PHA  a6 t- y- }) O" ]
  1111. LDX #$00
    ) Y, h' A+ @% `
  1112. LDA #$00$ @! c" G. k- H: L$ D/ R
  1113. HEX_Cln
    2 Y3 w( O3 |. u4 N- B- d" |, D
  1114. STA <DEC_H,X" k- K0 K1 s" b% c* N3 Q2 z
  1115. INX
    , _' P0 k( L5 b" q9 z
  1116. CPX #$035 g( u$ F* _5 @7 [/ S+ \4 q
  1117. BCC HEX_Cln
    2 Z  n& K4 S9 h) b% \
  1118. LDA <HEX_Data. G! }( Y; p5 p+ e: o( h4 C, Q
  1119. ;------------------------------
    * Z6 h4 m' U: |* ^3 ~. {
  1120. HEX_100& y# d' d& ?. b) {
  1121. CMP #100
    " }" w9 X, f! J: B2 Y/ D+ j( F
  1122. BCC HEX_10& c: {( X& ^! [* n5 p) \3 G. R
  1123. SEC! ~0 L1 t2 c% B# N
  1124. SBC #1004 C& F: }/ R  `2 I) X9 @) x
  1125. INC <DEC_H
    : X6 U- q/ J* |+ @7 m8 x
  1126. BNE HEX_100
    6 @; o7 n/ V8 o  d
  1127. ;------------------------------% f- I% D: h  D$ k0 b
  1128. HEX_10
    8 \  r# R  a) C, x) d* r- s) z+ x0 e
  1129. CMP #10
    7 g; I! ?3 r* x! D; Z8 \8 I
  1130. BCC HEX_1
    . O* U! {/ J! Z6 f  y+ n2 t
  1131. SEC  p: B$ f2 U2 h$ i. p7 [! k( |: b' t5 C
  1132. SBC #10
    + c2 h4 T, r3 ?# E. p+ i2 L
  1133. INC <DEC_T
    & V* v  J0 Z0 X' F9 |3 t- Y$ k
  1134. BNE HEX_10
    + z$ Q3 B& n3 p6 ]* V, a* y
  1135. ;------------------------------
    & w% Y; q  a5 k0 E- O3 w9 u
  1136. HEX_1
    8 P; P4 e3 q" P3 Y# X7 u! F7 A
  1137. STA <DEC_L! A: U- Y- t: v  V
  1138. PLA( I. w6 \9 f3 A2 r% l
  1139. TAX& t$ q% o+ i) R; W  \4 H1 b7 _- A
  1140. PLA2 ]- S/ i( B$ W) o* r6 T
  1141. RTS
    - F  @4 y# o0 U& _9 ~' ~
  1142. * G4 a# }# h( O: K5 e& o  @
  1143. ;==============================" J5 \" L. S/ P
  1144. ;音乐曲目显示
    + e/ A5 y2 a, U8 u% M8 `/ @: M
  1145. Music_Show
    - i2 u' s- [, V% r
  1146. LDX <Music_Item_Cur
    # o1 V3 P- {& J
  1147. LDA <Music_Cur,X3 K6 m; Z* Q# O) j
  1148. CLC" s; e8 ?- w$ f5 z
  1149. ADC #$015 Z: ~. {1 V% R0 b: Y/ s1 k' Q
  1150. JSR HEX_To_Dec
    4 u1 ]8 o( ~8 S9 s
  1151. LDX PPU_Cur
    + }' d9 A2 Q" e
  1152. LDA #PPU_MODE_CNT_LINE
    2 ?" X9 t& [) Y* ?) E# ^& l
  1153. STA PPU_Addr,X5 o) L! r( M: B
  1154. INX+ o6 d. W' u  }2 y$ q
  1155. LDA #HIGH(Play_Index_Pos)5 N6 w5 q1 y7 T) c1 r& L
  1156. STA PPU_Addr,X3 l4 n9 w" C$ |0 d+ v3 U
  1157. INX
    9 s, k% x% D+ m, Q/ m% {7 _+ r
  1158. LDA #LOW(Play_Index_Pos)6 z: _) }% x5 T( h
  1159. STA PPU_Addr,X: F: p* ]6 q5 A1 X1 n* L! H
  1160. INX
    , c/ L0 ^4 O5 }6 R: }
  1161. . s9 f1 H$ Z- z
  1162. LDA #$07
    5 v) y1 c2 I. {9 R- A$ J3 ?1 Y
  1163. BNE Music_Show_Length
    " ~2 `) z8 j# ~* K
  1164. 3 T; t1 Q& @7 P
  1165. Music_Show_Length/ u5 c' S( D# z1 v. r/ [. X8 N5 E
  1166. STA PPU_Addr,X; F1 B# p& V5 p$ r. w  A6 V. l4 J
  1167. INX7 o/ k6 O' h6 U* H* G# ]) _

  1168. 5 s% x) C8 u5 j# Z) L5 o
  1169. LDA <DEC_H, R2 ^; ?6 s0 \3 c9 A5 r0 ?
  1170. ORA #'0'- n! Q* `- f' }
  1171. STA PPU_Addr,X
    # ~: A/ V) r/ T* @: o
  1172. INX0 o. y9 K" x+ p5 N( b

  1173. , \0 P6 t; O) l( m9 V/ Q
  1174. LDA <DEC_T7 q! G  G# C7 @  M- t8 _# {
  1175. ORA #'0', Q4 g6 l* J9 S5 g3 F
  1176. STA PPU_Addr,X
    1 L3 R- _6 z! q
  1177. INX1 u, ~& I  d" R8 Y/ A. h% G
  1178. ' u7 r) _+ V( L5 k' R2 X
  1179. LDA <DEC_L5 C" y% T4 C# t  i
  1180. ORA #'0'6 H, I3 \4 f2 B, f0 H7 M
  1181. STA PPU_Addr,X. n) _( W  i4 c% y( ]
  1182. INX8 L$ ]; z% n! M9 O1 H
  1183. , N* Q; I; S' B2 ~/ I
  1184. LDA #'/'
    ! _. d9 Z- n! M' u  L
  1185. STA PPU_Addr,X
    9 S- P) F- V. s! m# p3 s' S; z
  1186. INX
    9 s7 u! ?$ I6 t3 ?; K1 L1 Z
  1187. Music_Show_Total
    * j2 c  N& |% Y: y$ Y
  1188. LDA Music_Total1 J* S/ w6 m) {$ S6 y
  1189. CLC/ z# D% i! }  T* T# D
  1190. ADC #$012 y0 ]9 `: \: k7 T! f4 t( `& G8 j
  1191. JSR HEX_To_Dec- h4 m- D( _8 R/ K4 M
  1192. 9 ^( ^: z/ C/ V, W8 I+ i7 i' ^3 q( F
  1193. LDA <DEC_H
    4 o. l1 i7 O# [7 s
  1194. ORA #'0'1 E! j4 e: J+ \  x$ b
  1195. STA PPU_Addr,X
    % B7 Z) t. ^  q. E1 P5 D( [; m
  1196. INX
    ( U; y" L- @6 s& a8 U/ r
  1197.   K* M+ w9 q# `
  1198. LDA <DEC_T% J; i- }8 n4 B+ ~, [3 e6 ?( e3 N
  1199. ORA #'0'6 y1 u$ h8 a2 x) s
  1200. STA PPU_Addr,X
    + ~, O2 {$ V, c1 B4 C
  1201. INX
    + W; S  x( A. D8 \
  1202. * y# C! O: c( A: x5 L+ _9 k7 e
  1203. LDA <DEC_L
    * }3 K. u; o# k
  1204. ORA #'0'& o6 C8 r2 `1 J! Q& m3 S
  1205. STA PPU_Addr,X+ `8 F' M/ c( n! l' [  K
  1206. INX9 m* ]0 W; }8 I0 E8 z

  1207. ! W$ Y9 V0 n* u
  1208. STX PPU_Cur9 q- P# V& z  K
  1209. Music_Show_End
    0 y2 F, l' ~' P4 ]+ v/ v
  1210. RTS, k. f) Y$ K# x  A: U$ Y

  1211. : O: ^2 n) J" m/ O
  1212. ;==============================
    $ i! o, o) n/ ?3 B+ T" [
  1213. Time_Show;播放时间显示
    6 F( D) e! f& x2 `8 w+ W
  1214. LDA <Text_Disable_Flag
    & \0 M8 [7 e# R$ A. n: x
  1215. AND #TEXT_DISABLE_ITEM0 X& K7 t5 {. ~: Y* s& p' n
  1216. BNE Time_Show_End
    , @' _/ t4 {* ~6 o. Q; e
  1217. AND #TEXT_DISABLE_TIME
    ! w" X3 r  Y3 q
  1218. BNE Time_Show_Enable1 E" @$ D; H+ \

  1219. : O$ R# @& x  }0 i: {% \- t/ G
  1220. LDX PPU_Cur
    , e' b9 M2 p  X
  1221. LDA #PPU_MODE_CNT_LINE
    4 N' U2 g/ {$ C6 G2 [6 m7 b
  1222. STA PPU_Addr,X
    , X, _/ H: T/ Z2 @* u" R4 Z* s
  1223. INX
    + C- h* k- n: x  m  ^8 f
  1224. LDA #HIGH(Play_Time_Pos)# D3 \5 L9 i9 ]2 `6 v
  1225. STA PPU_Addr,X7 P# k: e$ ^) {! E0 F
  1226. INX4 d# S# W' X  Z& g5 m
  1227. LDA #LOW(Play_Time_Pos)
    9 C+ C! L3 m, d8 _; f
  1228. STA PPU_Addr,X% h4 ~+ X  h$ y8 q
  1229. INX& Q2 X! Z0 o1 x" u7 o. g
  1230. LDA #$084 z! u0 j. W# H4 h
  1231. STA PPU_Addr,X2 B3 u! \& t. s
  1232. INX! s$ V, x+ j! {9 q( o
  1233. Time_Show_H
    3 a1 f1 U9 A* v$ V* y
  1234. LDA <Time_H% h6 s$ @9 Z5 n& S2 y0 h
  1235. JSR HEX_To_Dec
    1 y2 F7 ?% E2 L3 j0 ?8 r
  1236. JSR Time_Digit& O) e5 M0 d4 f6 ]# p' P( u9 h
  1237. LDA #':'
    1 l. j" U7 ?7 Z+ S3 x+ B8 ^
  1238. STA PPU_Addr,X$ R# _, w& W# p; i9 t
  1239. INX$ v) K) k7 W( C0 a' C
  1240. Time_Show_M/ Y% i3 S7 i/ d
  1241. LDA <Time_M
    : P+ m7 X; z) |4 z- V
  1242. JSR HEX_To_Dec3 H2 q  P8 S7 Q" i5 V3 z
  1243. JSR Time_Digit
    & M* t+ c0 T' C/ R
  1244. LDA #':'9 b" {" V- ]4 r0 Q
  1245. STA PPU_Addr,X
    9 _- B: f2 i* y, a; ^% C! J
  1246. INX
    : d; F5 H" z" U! M
  1247. Time_Show_S: Z- M* ~% y. Y% U
  1248. LDA <Time_S5 B$ Y- q* E4 j( f6 M/ [
  1249. JSR HEX_To_Dec
    ) E% S, _2 o% l
  1250. JSR Time_Digit9 E* o, P, @; B
  1251. STX PPU_Cur
    0 V8 d+ f9 h: s$ l2 A0 R; l& {4 S
  1252. Time_Show_Enable
    * J. q# @! ?$ ~7 Z  L$ ]) b
  1253. LDA <Text_Disable_Flag
    6 K: `, x2 p8 ?# ^  p  }
  1254. AND #TEXT_DISABLE_TIME ^ $FF
    9 b4 Q* Q4 d7 Z  f5 m
  1255. STA <Text_Disable_Flag& Y3 V" j5 o* h
  1256. Time_Show_End1 J$ o& \  N4 Z- _5 w" l1 @# S
  1257. RTS
    " a3 [+ d3 F0 |  {4 X2 Q3 r# U

  1258. 9 k# k2 z3 j7 e/ T
  1259. Time_Digit' V: O2 y# q" |: ]; h# V7 z
  1260. LDA <DEC_T3 r( U1 f- G# c
  1261. ORA #'0'
    . }* `+ [4 k- M4 O7 U. L
  1262. STA PPU_Addr,X- C3 B$ Y  H$ c
  1263. INX8 \2 K+ d( Y3 f( N2 G- w: C4 G
  1264. LDA <DEC_L
    & e9 b. @9 I: |
  1265. ORA #'0'
    * w+ y  Z* x9 y  I
  1266. STA PPU_Addr,X
    * q: K/ D, [( k: s
  1267. INX$ q8 o' D5 e" K; e8 x& n- N' ]" @
  1268. RTS+ f$ t2 Y8 a9 {* ~. T* \1 ?& K* j

  1269. . j; C) I4 L1 Z1 l
  1270. ;==============================
    . \5 I/ w9 I8 g' B: Y$ m
  1271. Time_Count;计时
    $ Y  l. r- U! Z$ Z
  1272. LDA <Music_Stop_State1 @2 g6 i4 c/ a  v) G3 e. c
  1273. ORA <Time_Wait_Cnt$ r( g- w6 e! c  ]1 p
  1274. BNE Time_Count_End
    . h3 M. K% V7 j& k( u
  1275. INC <Time_Cnt
    & R" i+ \' O9 w, W" S4 ]; O
  1276. LDA <Time_Cnt2 ]* v+ U& i( X- N: E0 d0 W( ]
  1277. CMP #60
    0 X# H" L% I* Q: Z' Q0 _9 ?3 m+ [
  1278. BCC Time_Count_End3 @- Y2 F1 s- @) Z1 _7 t* D3 {  u
  1279. LDA #00- ?' @$ `( ~9 ]
  1280. STA <Time_Cnt
    8 k* N2 j9 m+ x/ L, `* R; b" b
  1281. INC <Time_S
    $ F7 Z3 |5 _$ \! [  [
  1282. ' B6 E3 t) H, B7 j2 o8 F
  1283. Time_S_Cnt
    3 t1 k+ M* E+ V0 Z# e
  1284. LDA <Time_S
    & _- c) v8 Z7 N" Z+ r
  1285. CMP #60
    9 x; p2 ?. `8 b, K
  1286. BCC Time_Count_End: q: B0 V0 E  ]. `1 ^  Y
  1287. LDA #00
    1 y1 z4 k  _! z& H, J2 i7 T
  1288. STA <Time_S
    . e' v* M5 F0 w9 x# A
  1289. INC <Time_M+ }: s' V9 B- C

  1290. " P3 k" @" U; |# z# u
  1291. Time_M_Cnt
    ; ^0 J+ w9 I/ K2 n  M
  1292. LDA <Time_M
    0 K5 O1 G! O4 o' K
  1293. CMP #60
    6 S# r& y4 [( V5 J& `
  1294. BCC Time_Count_End9 o0 ]2 A# G( o: S) y
  1295. LDA #00
    3 a! `5 m  r1 m; |: C
  1296. STA <Time_M% R  v2 D7 V5 w; ]
  1297. INC <Time_H9 D# }) {/ P4 P9 q8 R

  1298. - A$ C$ ?5 R: o, B% p3 y
  1299. Time_H_Cnt
    / _' t) Z! @3 n; _& _
  1300. LDA <Time_H/ J  [9 k( d4 z, ^$ S4 b( @# Q
  1301. CMP #24; o! B4 }" p& O. R4 ~) ?! e, \8 c
  1302. BCC Time_Count_End' }3 }4 c* d) N# ]9 t2 \
  1303. LDA #003 C6 ]8 ^9 w5 e' _5 ?
  1304. STA <Time_H7 @; h: O9 w: r- X/ A% W6 D

  1305. 6 A) ~# ^: `5 ?3 B7 J; _5 I( S  V$ \' ^
  1306. Time_Count_End
    ) u0 [: b. }0 r# r* e: _
  1307. RTS
    : L- c) K# Q6 m

  1308. / a6 c; p* r7 T5 L- H* n7 C
  1309. ;==============================
    0 x" n1 s/ q1 A" \
  1310. Time_ReSet;播放时间重置9 v% |+ }+ T' T$ a3 n) U6 v0 l: {9 `# H2 R
  1311. LDA #$00
    ! }) y- |0 X1 z% N8 ~& V3 B
  1312. STA <Time_S
    " e2 b1 l) X( ]/ Z
  1313. STA <Time_M
    . ~9 D; Y( O$ R' F' ?+ |! X9 i
  1314. STA <Time_H7 X6 Q# W" \9 q' B# C! T, N% M( |/ Q: g  `
  1315. STA <Time_Cnt
    8 j+ i( e, t! r5 o4 h' @
  1316. RTS  i# ]% }* y8 C- U0 |& s3 z4 _

  1317. ; A: V, ^7 X$ O% p& j* q
  1318. ;==============================! ]4 M7 w! ]( V6 i3 \
  1319. Music_Bar_ReSet;音乐条重置. x, G9 `2 q% B; K0 Q
  1320. LDA #$00- T( h: b0 T: u6 ^) q& }+ C. o
  1321. LDX #$00
    ) r/ l( u! V5 r4 Y( {7 R
  1322. Music_Bar_ReSet_Set4 n) d9 `  ~( J5 J( H- ^* V
  1323. STA Sound_Bar,X
    9 c2 K7 {$ ]& D/ }; ?2 R: W: F1 q
  1324. INX5 P4 b, \: I8 |
  1325. CPX #$10
    ' C6 Q) B8 T, h" P5 N1 C4 Q
  1326. BCC Music_Bar_ReSet_Set6 f+ D( G5 s" G* X: u/ M' v
  1327. RTS
    # d* G, @4 y/ P) J. b4 R4 a

  1328. 6 Q0 c1 p4 |& \9 N) w/ }& }
  1329. ;==============================' C; U0 S9 m( g. M: d: ^
  1330. PPU_Data;PPU数据写入
    / {' Q! ^8 I3 C  \. R  O
  1331. STY <Data_L
    : P: i* ^+ E0 \4 A7 k. u! z
  1332. STX <Data_H
    : {6 \/ n$ s2 x, o# [- t0 b! b8 D7 l
  1333. LDY #$FF
    2 P: b' U: |5 E' E2 R# K) x; J
  1334. LDX PPU_Cur
    5 W2 }9 e3 @  M8 C& \8 r
  1335. DEX8 ~* T% u4 s  F. \7 t" ^5 M
  1336. PPU_Data_Beg' i- ^9 p' N* I. D( z6 Z
  1337. INX
    ; ^8 \1 b! A/ o/ R
  1338. INY
    " a5 O! Q. ~8 H. }* ~! ?- H0 O& ]
  1339. LDA [Data_L],Y
    / m" k# A5 A0 N' o% K$ }
  1340. STA PPU_Addr,X7 K1 O5 U; e0 g
  1341. BNE PPU_Data_Beg
    + _$ }- H6 m% Q( H8 W: v' v; p
  1342. STX PPU_Cur! g# \4 T& V* o' ?+ J! y6 b" o
  1343. PPU_Data_End
    4 p: m# T& w1 k- Q6 E
  1344. RTS
    ' E/ r% v9 k% G, t6 d. ^

  1345. : @6 M1 u+ f) t5 _$ x
  1346. ;==============================& G. s; e; e, k$ K5 ]
  1347. Music_State_Show;播放状态显示
    1 d7 k, t% ]# D1 i3 X  b" T; n8 I  l
  1348. LDA <Music_Stop_State
    " p( N8 z' d, E# a) Z0 G% D
  1349. BEQ Music_State_Show_Play  ^5 R' g9 |) T5 k: t# K5 T
  1350. Music_State_Show_Stop3 N; O9 n3 l5 ?2 F
  1351. LDY #LOW(Music_State_Stop)" i8 \% k7 _; Z# a0 F& p( ?
  1352. LDX #HIGH(Music_State_Stop)
      h" u. n' F) F
  1353. JSR PPU_Data
    6 e) q6 A5 c( y- Z
  1354. RTS
    6 Z& P  B! J( v: ?* T- j
  1355. Music_State_Show_Play. A" g% K+ i9 ?
  1356. LDY #LOW(Music_State_Play): v" t4 d7 t4 X! a& M1 R! N! O
  1357. LDX #HIGH(Music_State_Play)1 B) L8 D# K) d3 X
  1358. JSR PPU_Data6 z; `/ v" {8 P
  1359. RTS
    . f; D" x" t# d: y3 A/ q
  1360.   {, [5 Z) n1 N. p
  1361. .IF SOUND_BAR_SHOW_ENABLE
    1 }7 Q, g$ B, f
  1362. ;==============================
    : D6 i: w- G0 |2 i, n, x( d( X# W
  1363. Sound_Bar_Text_Set;标题与音乐条初始化
    & h# i+ d  f8 x3 |' `
  1364. LDY #LOW(Sound_Bar_Text_Data)
    $ i3 u7 Z  a- U6 H0 v; C3 m/ Z
  1365. LDX #HIGH(Sound_Bar_Text_Data)* c9 I. _/ w% o" b5 P/ W% O$ y6 t9 [
  1366. JSR PPU_Data/ R! L2 [- r; Z1 O+ o7 w
  1367. RTS* j- k9 y2 G7 j0 H( l2 p& ~

  1368. 9 F* ]/ Y- J6 y% K2 l
  1369. .ENDIF6 t+ Q9 s- l# U) }7 N% j/ f
  1370. 3 J% s  j8 V- Z" @
  1371. ;==============================
    # X0 l1 d* o# S  B3 ?
  1372. Set_NameTable_Attributes;设置命名表属性
      Y. q; B4 S& p7 ~/ `
  1373. BIT PPU_STATUS
    4 M. P/ P  `9 t7 r2 C  J4 C
  1374. LDA #$23) }" s  `' p& N- M& N. M# q
  1375. STA PPU_ADDRESS2 w6 j# h) J% b3 |# [' s4 d
  1376. LDA #$C0" y, X/ q! T5 G% p0 O" I; f
  1377. STA PPU_ADDRESS
      J. b2 |' \6 }) U
  1378. LDX #$00  O1 h, b, ?# `
  1379. Set_NameTable_Attributes_Write
    * n% @7 ^( Z0 D2 Q+ t+ w7 v: ?, K
  1380. LDA Palette_Attributes,X
    : e5 e* x: R; O
  1381. STA PPU_DATA  w9 o, J+ T+ z. R: V5 k
  1382. INX
    & q2 g, j7 d* i
  1383. CPX #$40
    ; |  T& q8 O) p
  1384. BCC Set_NameTable_Attributes_Write
    . {5 F, @/ b# x, R4 P, w" D
  1385. RTS9 ?2 R+ H$ v9 m7 B& ?
  1386. ' ?2 x: f& v- ^
  1387. ;==============================
    5 ]) r0 `" C3 P: s8 r7 D4 X
  1388. Set_Palette_Color;设置调色板数据
    ) Y; Z3 P3 z' e; ^' {9 J! [
  1389. BIT PPU_STATUS
    3 p, ]$ ]3 a1 U1 P. G/ C8 q) U8 l
  1390. LDA #$3F! p) F6 _+ n) Z$ u1 }* {. p
  1391. STA PPU_ADDRESS' J/ M3 E' o; F, |
  1392. LDA #$00
    / M0 G9 G* M4 l* Y8 a. T7 o, ?
  1393. STA PPU_ADDRESS; M7 O5 y+ J& Z/ @2 A
  1394. LDX #$00
    0 y0 {% ?" i' A+ s
  1395. Set_Palette_Color_Write
    # ^. @7 I- v% N- M9 g
  1396. LDA Palette_Data,X
    , x* l' ?/ f& q( z2 h; ~6 x
  1397. STA PPU_DATA
    , ^" h( d7 P# e. V, A' x& P4 f
  1398. INX
    $ S/ z) u) U: A+ d: A
  1399. CPX #$20! m( t7 Y0 u  Q- r
  1400. BCC Set_Palette_Color_Write
    / o/ Y; N; t8 f) I- j4 Z
  1401. RTS* W( E) s& S: R

  1402. ( a/ z* K! K+ w2 h. ?- k
  1403. ;==============================
    1 L$ f0 A# n8 n: w% w/ m
  1404. Init_Palette_Addr;初始化调色板数据% i* G5 A: n. K
  1405. LDX #$004 ^, g( W- x2 ~  y1 }
  1406. Init_Palette_Addr_Write
    8 O3 P8 D" s# {- Y% W
  1407. LDA Palette_Data,X% h- K; J. P: w" Z1 l! @
  1408. STA Palette_Addr,X
    6 ^$ x; w6 q, o) @5 p2 h5 G* a
  1409. INX- \4 H- j/ X" f$ d
  1410. CPX #$20  c2 F% k  _) F. t  n2 f1 g, N
  1411. BCC Init_Palette_Addr_Write0 _4 C0 e) [& W5 `4 e: ]5 t9 Z! h& z
  1412. RTS
    / f- B' J8 S( D) n: L- m

  1413. 3 S& C4 o5 a  m  T) F5 F
  1414. ;==============================
    " V3 t: r4 K! X% {% |6 s& w
  1415. Update_Palette_Color;更新调色板颜色$ R4 }4 M8 K: n# Z
  1416. LDA <Palette_Update_Flag
    8 I- O! }# x9 M4 t& D
  1417. BEQ Update_Palette_Color_End% e  e( N7 w6 [$ }# M7 |
  1418. LDA #$3F9 [! {0 ~9 M  q9 W7 F2 i
  1419. STA PPU_ADDRESS
    # J" O7 v! E  ]- P- O& z# |
  1420. LDA #$0C
    " V, P2 r3 _& l
  1421. STA PPU_ADDRESS
    ( Z5 Z7 N3 F4 z( S, D+ K& ~9 ?
  1422. LDX #$0C
    ; \+ \) A! P7 y" j. _# M3 U
  1423. Update_Palette_Color_Write
    ) v* F, m9 i5 I4 W
  1424. LDA Palette_Addr,X- B. I9 Y* f- R2 x
  1425. STA PPU_DATA9 j' Z- S; ~" A6 J
  1426. INX( ?# q6 e- W9 Q/ j# Y
  1427. CPX #$14
    . }& `% \! G6 K- N' g7 _8 Z4 U% O
  1428. BCC Update_Palette_Color_Write: t' @* n$ n- k( K
  1429. LDA #$00# ]" g( a8 ?9 g8 v* G3 c
  1430. STA <Palette_Update_Flag2 S: `8 i; [! j/ c  v
  1431. Update_Palette_Color_End
    ; G4 g2 m4 D0 ~
  1432. RTS  b) a* K( @7 B) F5 |/ T+ X7 ~

  1433. + y' ^* p# [7 l5 _  v+ F3 K

  1434. ( Y" d, Y. q: D& r
  1435. Update_Sprite_Palette_Data
    3 k4 {3 b- v" a$ w5 t2 s- }) r, ?
  1436. .DB $21
    3 {8 k* I& k' v" m
  1437. .DB $21
    % e5 |) P# u! w. O
  1438. .DB $11" [1 _% F0 o$ R$ }4 ]2 t3 a/ `5 p; ~
  1439. .DB $018 u- C4 y6 e1 O2 o" U  n
  1440. .DB $01$ e& y+ b. A! F( W; y. v
  1441. .DB $11
    ) `2 D% ]2 [- C7 a
  1442. .DB $21
    , {* ?, r: T! J6 D% }" S* t. a, c) [" f, K
  1443. .DB $21
    ! b4 u# Y2 o  D2 x7 G6 L+ q4 p* x
  1444. .DB $118 `7 q: I4 L4 [$ O+ g2 C& k: x
  1445. .DB $01  S% p  j* d) r' T4 X" ]* R8 G' {4 M
  1446. .DB $11% d" h" W6 g! f( {9 J- `$ @
  1447. .DB $21& x2 c5 _- r1 [$ C0 x
  1448. .DB $21: M( b( R8 T1 T# Z
  1449. .DB $11' B9 n7 o5 l* Z; m" y6 H
  1450. .DB $01) t# H) y9 \/ e
  1451. .DB $11$ B0 H: w' B# Z- _
  1452. ;==============================
    - ~( [, V! U2 c3 e) Q, H
  1453. Update_Palette_Data;更新调色板数据* h- o  x) P  y$ P" S7 _
  1454. LDA Nmi_Time_Count
    $ a1 e3 a2 E% l) x" m3 U1 _& c, E
  1455. AND #$089 l) ?3 I) G2 P& C' r
  1456. CMP #$08
    - v! l# ~( W' V
  1457. BNE Update_Bkg_Palette_Data
    % l7 R  B( b9 Y5 N# J  {
  1458.   U$ R2 Y' a* [( ?
  1459. Update_Sprite_Palette_Data_Set# u2 i0 V" v& J" C
  1460. LDA Nmi_Time_Count
    : @" ?1 F% s5 T
  1461. LSR A# O! v; p$ ]: y; L- D% ]8 x/ u4 k
  1462. LSR A
    3 ^' ?4 h* R- ?8 C) ?5 Y
  1463. LSR A/ W. \5 d/ |/ Z( O( `  N
  1464. LSR A
    & U7 \* }# s' |  p6 Y" D: E3 `
  1465. AND #$0F
    ' T1 g2 f. I: \
  1466. TAX
    0 i7 d) o1 W0 T# o2 `& n6 h. G
  1467. LDA Update_Sprite_Palette_Data,X
    1 C3 S5 |, Q, Q' C1 N
  1468. STA Sprite_Palette_Update_Addr
    : J- t: C0 q- q8 T
  1469. LDA #$01
    6 C; b  L+ |2 z( Z
  1470. STA <Palette_Update_Flag- L) B8 ~5 @. E7 Z& _( A
  1471. + o4 ?" O9 e3 A& c
  1472. Update_Bkg_Palette_Data
    ! P' \6 \  @. w+ @1 V! J
  1473. LDA <Text_Disable_Flag
    4 i+ {) M& T* x# Z0 M/ o- P" \
  1474. AND #TEXT_DISABLE_RAM
    & A9 s5 ^6 z& T, D0 \
  1475. BNE Update_Palette_Data_End
    2 T5 a3 M& S& r( O' |
  1476. LDA <Music_Stop_State' h( ~7 L0 ^' U. D+ L/ r7 ]9 X
  1477. BNE Update_Palette_Data_End
    ; W( d. |' _( ^1 [+ ^3 H  J" S
  1478. $ n" a! @* ^/ l( @8 U3 c3 ~
  1479. Update_Palette_Data_Check
    ! b; G6 r% p+ v
  1480. LDA Palette_Wait_Cnt
    7 L/ ]6 s  a2 x
  1481. BPL Update_Palette_Data_Check_Over) ^, w! T( `7 t/ U- q& K2 ~
  1482. LDA #PALETTE_UPDATE_INTERVAL3 b4 R+ ~) O+ ]
  1483. STA Palette_Wait_Cnt6 f% R  U( l8 u# g
  1484. Update_Palette_Data_Check_Over; ?1 {$ h; a/ C+ |6 S
  1485. DEC Palette_Wait_Cnt
    - a, ?, I% K4 |% L
  1486. BNE Update_Palette_Data_End
    5 c- _0 E2 O/ X+ e) K- O( P
  1487. 1 z- e0 n) @2 Z, _) }7 Q/ ?/ g% C
  1488. LDA <Text_Disable_Flag
    , l& \, \" b) U' D+ z# C& b# H
  1489. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    7 [! g( r: G0 R: f0 {7 R
  1490. STA Text_Disable_Flag
    4 ~" O. B' h* c! {
  1491. INC Palette_Update_Flag# V- [8 W9 r3 V$ o8 l+ V: i
  1492. , N' W0 K& k9 C: s( H5 [
  1493. LDA #PALETTE_UPDATE_INTERVAL
    + N- m5 w& c& i% p
  1494. STA Palette_Wait_Cnt
    3 c, F0 C  @& }% T

  1495. * s7 n! _4 R  V7 J0 T* F; V& C
  1496. LDA Bkg_Palette_Update_Addr/ A: H! c, b" B* t
  1497. CMP #PALETTE_UPDATE_MAX4 C& W+ G' h4 m# h2 Y8 k5 N( r
  1498. BNE Update_Bkg_Palette_Data_Set
    1 P0 I7 D6 B; r- f4 t9 f3 k6 Y
  1499. LDA #PALETTE_UPDATE_MIN - 1: h, c. k/ x' T+ L- \5 K' M' N
  1500. STA Bkg_Palette_Update_Addr$ O, K" c+ R- \3 d
  1501. Update_Bkg_Palette_Data_Set9 a7 Q* M% X* z! Y
  1502. INC Bkg_Palette_Update_Addr
    6 L! J- i, S8 t' d' A. I
  1503. - t; Z; k0 w8 m' t; o0 d
  1504. Update_Palette_Data_End
    0 X1 P/ G) `2 q7 J! _. }8 H7 y
  1505. RTS
    9 U% h! i8 n7 E4 c4 b
  1506. " O9 r5 @. V( l1 h: f0 C5 B2 `
  1507. ;==============================( f: L1 N) Q9 i" y1 A. w
  1508. Show_Music_Text;显示静态文本
    * E  @/ Y. z5 }- l
  1509. LDX #$00
    : S) M% _# g- O* X/ Y# p# i
  1510. Show_Music_Text_Set
    $ b* r( @) @8 Q
  1511. LDA Static_Text_Data,X
    4 y8 s2 a/ G6 c+ {! d3 P
  1512. STA <Data_L1 t* C) q+ T/ D' Z4 ^: ~! \2 |
  1513. INX1 u# |- ?6 R% c5 t, C
  1514. LDA Static_Text_Data,X* s  N; y/ m. J3 q4 q
  1515. STA <Data_H
    $ U( z8 A" v: n5 b
  1516. INX
    7 x, n  C1 Y5 b' J+ r8 ?. I" Y& n
  1517. LDY #$00; |1 ~7 m& A% C" {) B# Z1 I, b
  1518. LDA [Data_L],Y
    ! Y1 U& c2 y! g
  1519. STA <Data_Cnt
    " U! g5 y9 z: P
  1520. DEX
    8 j$ F( ~$ ]( K5 z4 o
  1521. DEX
    ; u! H2 x: H. c4 z, y* s& [9 r( {
  1522. LDA Static_Text_Pos,X% A0 t/ f5 B) V& b) m
  1523. STA PPU_ADDRESS1 Z4 E8 |: z% K" \: k/ F: g
  1524. INX
    ( D* x; B' p; `4 ~, p7 C4 X
  1525. LDA #$20# }4 C' r6 X( y$ `1 ~- e6 ?
  1526. SEC
    0 ^- R: ~$ i3 n; n5 o* ]$ G) H$ }8 a
  1527. SBC <Data_Cnt: n4 {' \. ?0 q( j' C
  1528. LSR A+ ]& b5 a% K" T# `1 s* ^
  1529. STA <Data_Buf
    0 r# O) O. Y- l. t+ y
  1530. LDA Static_Text_Pos,X
    2 I, t/ J, J6 _  w" m
  1531. AND #$E0
    - t  `* i/ x  \: e: ]- E; V
  1532. CLC' C0 ]8 s4 `7 J" C2 k/ z& o
  1533. ADC <Data_Buf1 H  D; t2 Q' t3 B, n* R$ k+ s/ k. o9 H, E
  1534. STA PPU_ADDRESS
    1 e! W8 x1 M& L! H7 q6 D6 T8 ?
  1535. INX
      J4 `; n1 `! _1 A8 |0 Q
  1536. Show_Music_Text_Set_Write9 f- G' X  h+ V2 X
  1537. INY
    7 f. t8 k5 r3 a
  1538. LDA [Data_L],Y* S; m( C9 V% g; G7 v* L" C7 Z
  1539. STA PPU_DATA
    9 }. L! N) \' V
  1540. DEC <Data_Cnt
    6 J$ }( e! u( ~% q3 L6 t: R, \3 F
  1541. BNE Show_Music_Text_Set_Write
    4 k2 ?" E2 B. K4 E3 x
  1542. CPX #Static_Text_Pos_End - Static_Text_Pos
    ) D/ f7 f4 E6 g9 w9 a9 @
  1543. BCC Show_Music_Text_Set. K9 U  w: i. o2 r! d; A$ M
  1544. RTS5 V( |3 B. Q$ j2 N. e

  1545. 5 r  L. u* \# X+ b) J9 O2 @8 R" n
  1546. ;==============================
    7 r  x* b/ u. D+ D+ _
  1547. .IF Track_Name_Pos;显示曲目信息7 o# L& K5 E0 V' x6 R
  1548. ' \* \- a+ g- b. i  t
  1549. Clear_Track_Info
    . V# Q" Y: N' l* t4 K* k
  1550. PHA
    0 @( U0 |# v% O3 R8 U8 G+ {
  1551. LDX <Music_Item_Cur5 }  u, ?. T, {! [: `( ~' C7 A! S% B
  1552. LDA Track_Name_Addr_Flag,X" g7 W4 ~6 I0 b4 r, s+ O
  1553. BEQ Clear_Track_Info_End_Ex
    8 b, z) Z+ d7 [" w
  1554. PLA" M- k* ~3 K/ p# r! O

  1555. 1 b9 `9 a( k8 P/ K+ S
  1556. LDX PPU_Cur
    " D* U4 v1 T" I; _  X7 p, _* d; E
  1557. PHA' p2 ?4 N2 S# _+ B
  1558. LDA #PPU_MODE_CNT_CLEAR  d1 T% H3 O# G, Y/ G& z; K
  1559. STA PPU_Addr,X. ?* u/ Y2 |  j" m) v1 u' ~8 f
  1560. INX
    ! |% X7 c- _; H4 U% [! B) \- _
  1561. PLA
    1 w$ `( p1 C" y, [8 M) F
  1562. JSR Show_Get_Track_Name_Center_Pos
    1 a0 J  p! `0 P: o
  1563. STX PPU_Cur3 T% u; ~5 Q- b7 t
  1564. Clear_Track_Info_End
    / y' A/ p' K, n- @* u9 T
  1565. RTS
    0 T& g, c% n* K* w; ]+ b0 M
  1566. Clear_Track_Info_End_Ex  `4 l( \" }' W( w2 f/ w/ v7 F0 K
  1567. PLA
    7 l/ y) R( g2 ~/ w- V: u' T( S
  1568. RTS+ j- G6 A% |& p
  1569. 3 Q8 }) \% I6 K! @! \
  1570. Write_Track_Info6 B& D' Z: O2 [0 N4 G% L& ?' N
  1571. PHA  Y: ]* e  @1 X/ v) f
  1572. LDX <Music_Item_Cur
    : s& y& L) t1 \0 d+ `# w
  1573. LDA Track_Name_Addr_Flag,X
    ! p; r0 j/ \& ?
  1574. BEQ Write_Track_Info_End_Ex1 r  v* p: x' |/ ^( D
  1575. PLA
    6 u9 M& y! h% b' t$ P" M
  1576. / {( @4 r: w# {* s+ E1 {, v
  1577. PHA+ O4 R7 `( S. `" b" A2 D7 w5 e
  1578. LDX PPU_Cur
    6 G! P$ f5 r3 K  k
  1579. LDA #PPU_MODE_CNT_LINE
    - [6 i" ]. G. j
  1580. STA PPU_Addr,X
    4 O/ t' N" @6 c/ T& i7 A) g* [
  1581. INX( ?8 p7 k9 `6 \8 J% ?
  1582. PLA4 e/ I; j6 x/ X+ Y) R; \$ t& P* I
  1583. JSR Show_Get_Track_Name_Center_Pos7 H% D8 \0 e3 M& @
  1584. Write_Track_Info_Data
    : O$ {; |+ N; i$ t0 j) j" f
  1585. INY
    ( s4 r# l9 M. T2 Z0 b* L8 Z
  1586. LDA [Data_L],Y
    % C9 f* L3 Q/ ?1 c
  1587. STA PPU_Addr,X+ T& ~- _9 @" z+ k& t
  1588. INX3 Y" \+ Q8 X( e8 o* d
  1589. DEC <Data_Cnt
    + y" P1 X' f7 m! T3 u
  1590. BNE Write_Track_Info_Data
    7 t9 N3 n3 i: ^' h* L5 s# H' W
  1591. STX PPU_Cur. z! J2 j4 J: l+ l3 @8 k
  1592. Write_Track_Info_End$ Y) z# u. c  b- \, v. n0 u
  1593. RTS
    0 ]; d& B& ^/ X, \+ f6 O
  1594. Write_Track_Info_End_Ex9 K% p% a5 n, w  {( V/ b( z" `6 J
  1595. PLA
    : F) q3 k+ ?; n2 j7 e: F; P
  1596. RTS% Z4 S# r& W4 ]5 A3 V
  1597. 5 Y5 D# K* L4 P2 M
  1598. Show_Track_Info
    4 h" K& u1 Y! F
  1599. Show_Track_Info_Clear: V+ }1 H2 f: a$ c  M
  1600. LDA <Music_Last
    % Q; q4 s4 n9 w: Z& O
  1601. 0 j2 m7 E' H8 ~4 B
  1602. JSR Clear_Track_Info2 P: r2 L' r! Y/ I' z
  1603. $ x  P) F) R0 ?+ w. _  t
  1604. LDX <Music_Item_Cur/ x4 z/ f! k( C7 B% c; c% O  M
  1605. LDA <Music_Cur,X2 H. \9 }' ]$ q$ h0 H
  1606. JSR Write_Track_Info
    % z$ }- @1 ^1 c
  1607. RTS
    3 d6 e' Y: D/ d

  1608. ( W. n& B, N, k! @6 x
  1609. ;==============================7 d7 ?. c/ N8 B; h! F
  1610. Show_Get_Track_Name_Center_Pos;获取中间位置7 J+ s' S  C: m0 i; f" ^- F" f8 @

  1611. ; W/ a! R5 ?% u) s# e; W  t0 Y# e
  1612. ;取出集合名索引$ r+ K/ R5 L7 x4 g- O5 E7 O, s  ?( Z
  1613. PHA% X! U# v/ x' _' A$ J

  1614. ! t3 F- ]& d; J6 ~% t% r! j' F
  1615. LDA <Music_Item_Cur
    $ G, B# N7 Y3 `; `) J
  1616. ASL A
    5 V+ W- O# n! d( v: ]) I
  1617. TAY
    ( T6 Q, R! J: U( ]
  1618. LDA Track_Name_Addr_Port,Y. t$ E1 ]9 f! ]* Y3 u6 A( g' X7 M
  1619. PHA
    ) Y$ F9 X+ B$ @; u8 q) ^- u+ d% U
  1620. INY
    7 O6 |4 A' e, O
  1621. LDA Track_Name_Addr_Port,Y9 B" E5 x6 ~  r% _* ?; Q& h3 J
  1622. STA <Data_H
      k* N+ s& ]$ D  U* U( y3 c
  1623. PLA
    # C' |4 U$ z3 c. {
  1624. STA <Data_L
    7 K' y$ M: V8 w

  1625. 5 e' _4 i$ P7 V& W9 s  o
  1626. PLA
    # g6 w  [$ Y* l' V0 i& Z

  1627. - @( G1 _1 U* r1 ^
  1628. ASL A
    , O7 {  }1 }. n! u
  1629. TAY% ^5 Q+ w! ~5 P& z7 M) u
  1630. LDA [Data_L],Y
    * B! x" V* W) a1 T
  1631. PHA
    * S, W1 J2 U* X* w6 ~$ [5 ?; ]! i
  1632. INY
    & y! K% J7 G) }
  1633. LDA [Data_L],Y
    # `* r8 H, K- K& g" {
  1634. STA Data_H
    & x3 v& v( c+ q# V  F2 L! w) b% w
  1635. PLA
    ; k5 V8 K0 L  u, i& L+ x3 S& i& M6 Z, n
  1636. STA Data_L
    + ~) O, A: q5 w8 }8 P

  1637. & A1 I5 K% q2 a- D- M; l
  1638. LDY #$00( g" e" i8 c4 J1 ~9 |$ h
  1639. LDA [Data_L],Y
    4 k. K; W* P& C1 W2 P) y& J
  1640. STA <Data_Cnt, ~1 A; V- X7 ?
  1641. LDA #$208 L' t* R9 }3 Z& g- j9 S5 ^
  1642. SEC
    8 V8 Y2 D: F/ |' v/ O# ]" B- i, R
  1643. SBC <Data_Cnt; b1 `& s1 ~6 L/ h/ p/ u! F  w9 j
  1644. LSR A
    1 l* w2 R) ]* c" [% q% A
  1645. STA <Data_Buf
    5 b; M5 l) B5 S1 ?
  1646. LDA #HIGH(Track_Name_Pos): q- }8 d3 p% i2 H
  1647. STA PPU_Addr,X4 a# ?9 M1 B6 Q$ Z4 e# |
  1648. INX
    ( v) Z" {5 y$ s
  1649. LDA #LOW(Track_Name_Pos)0 \4 F6 }1 ^0 O7 w3 g2 q
  1650. AND #$E0
    . z* o) p, ?1 U/ s
  1651. CLC
    6 H# W3 R: L! o" s; ~* |' L5 }/ \
  1652. ADC <Data_Buf
    - \& Y0 v7 q1 [3 |, p% f6 Q  R
  1653. STA PPU_Addr,X, f$ H; |7 z; S
  1654. INX
    ) r# |# \9 t- ^. i, _5 `$ J% r
  1655. LDA <Data_Cnt
    4 v3 E. Z5 g2 ~: e
  1656. STA PPU_Addr,X! t8 X. E* g& K+ g3 N! ^
  1657. INX$ j; J& a: ^7 b  O
  1658. Show_Get_Pos_Center_End4 h( h9 I1 a3 t) |( f" G3 O% G+ F
  1659. RTS. d* u1 b6 ~. f8 @8 ?% ?
  1660. .ENDIF5 D8 `2 F5 N$ s1 s3 A; u1 Y: M

  1661. ( g& ^& s( A  o2 X
  1662. ;==============================
    . t6 v9 @1 i0 `( s) S6 _8 N
  1663. ;音乐端口清除& A+ [8 B3 e& J9 C% t9 c4 H! L" |
  1664. Sound_Data_Clear; K3 w* Q! ?! D
  1665. JSR Sound_Port_Clear9 X% }2 r! Y5 Z& L, C
  1666. JSR Sound_Ram_Clear9 t# o7 F6 B1 Q
  1667. RTS
    9 h4 }: s; {8 I
  1668. 9 ^& Y3 s( w6 o% Q+ l' E" v; }! o3 Q
  1669. ;==============================
    ! u) r/ p& m9 ?: G* h9 C0 a" M
  1670. ;音乐端口清除' t0 E# B: P5 E& n* r6 ^. o5 c
  1671. Sound_Port_Clear
    ) U3 g) N  l1 l- R
  1672. LDA #$008 L  a, l  U+ ?% j  X  j' Q* G
  1673. STA APU_STATUS" j& X1 `) w$ x% Q; {, O
  1674. LDX #$00: w- Y" E3 R! `% M
  1675. Sound_Port_Clear_Write# C: q, n+ k, O- g: t2 O8 K
  1676. STA $4000,X% j/ r9 S. U& y1 Y5 J" f0 d
  1677. INX9 ~2 o$ V" q  _% }
  1678. CPX #$14# D( h! F( w7 [  p
  1679. BCC Sound_Port_Clear_Write6 S1 v2 ^) U* r. J
  1680. RTS- [$ q4 g$ R$ f
  1681. 0 |6 h- A- k5 B, v6 u, ^: A% @
  1682. ;==============================
    $ e$ U9 y  b) W1 H$ x1 Q. C, h
  1683. Sound_Ram_Clear;RAM清除
    0 ~: k+ r0 d9 M) {0 x( W0 m8 P8 y
  1684. LDX #$00
    " K) {6 O5 Z: d- t( y0 l) @8 k
  1685. LDA #$00
    * Z7 i2 Z2 ?1 c- j9 M, g
  1686. Sound_Ram_Clear_15 y9 F( ?, O% O4 A9 m+ D1 v2 e
  1687. STA Sound_Ram_Addr_1,X
    * f2 }+ A: q8 |& [
  1688. INX& J( K# {4 M. v0 o& D  t* Z
  1689. CPX #Sound_Ram_Addr_1_Size
    6 M) [; Z) F$ {! o5 }: _$ z3 ]" Z/ d
  1690. BNE Sound_Ram_Clear_1
    6 Z) ^. D/ P5 O: ?& e
  1691. LDX #$00
    ( [) R- ?: J6 C0 A
  1692. Sound_Ram_Clear_2
    ! }, Y$ D# ?) ^" q
  1693. STA Sound_Ram_Addr_2,X7 B6 }0 ^; A4 i  K) z. f
  1694. INX# n: S; P$ K! V* B& T& v" g- O
  1695. CPX #Sound_Ram_Addr_2_Size
      T# B7 m4 w. l5 y5 o; H8 [, ^
  1696. BNE Sound_Ram_Clear_2
    3 X# M) E6 O" h0 Z& E1 r5 Z# ]
  1697. LDX #$00
    9 F+ D7 R4 W8 _! y& L# @% V- S5 e6 l
  1698. Sound_Ram_Clear_3
    $ L0 u) e3 r. M& j( ^  f8 R/ j
  1699. STA Sound_Ram_Addr_3,X: o  M# E0 g# I: n& z6 S
  1700. INX1 F" ?) @3 C# h  Q! A
  1701. CPX #Sound_Ram_Addr_3_Size
    ( k3 m7 F& z" s& }! h# L
  1702. BNE Sound_Ram_Clear_33 X4 a+ b( S8 a  ~! r1 K8 A# B
  1703. LDX #$00" _& l3 o, i1 }/ r
  1704. Sound_Ram_Clear_4
    3 N2 B2 t( k  D8 ?) ?$ D- _+ [' a
  1705. STA Sound_Ram_Addr_4,X: b8 x7 r, L) P
  1706. INX, `; k6 H7 r% n% v7 k3 m9 i
  1707. CPX #Sound_Ram_Addr_4_Size; v) G' O# B, x4 a+ _2 v* s
  1708. BNE Sound_Ram_Clear_4' C* H; E5 o9 |7 O+ P/ |
  1709. Sound_Ram_Clear_5
    5 ^& d) k- X0 i- Q- W9 D7 |. F
  1710. STA Sound_Ram_Addr_5,X
    4 P8 Q/ p8 o& P" M2 R' S, k
  1711. INX
    . _/ o* \7 L$ B. d9 o
  1712. CPX #Sound_Ram_Addr_5_Size
    1 p9 e8 L9 Z% n# }
  1713. BNE Sound_Ram_Clear_5
    - P/ b4 J; d5 t  F6 Q
  1714. RTS# R$ g: l4 E; Z; c& R4 w: t
  1715. 9 O, Z5 s: M( {8 x  u8 q
  1716. Get_Music_Collection_Name
    , A" ^( v+ b. C( L: O- E* ~
  1717. PHA* K8 ^1 \5 F- }; u; @, `5 |% h) Y" d
  1718. LDA <Music_Item_Cur
    % l+ y4 x" r  L% J# I$ r4 j7 C
  1719. ASL A
    ' a1 }9 L5 w) h4 l" p, `# ~
  1720. TAY4 c% O8 \) P. J) e+ }
  1721. LDA Music_Collection_Name,Y
    * K- ?) X) V) K" v) U/ C4 p
  1722. STA <Data_L- W4 C7 F# u+ _# C) ]
  1723. INY) P& g1 ~% d5 R  e
  1724. LDA Music_Collection_Name,Y
    & G/ u5 v; Y3 ~" Y# [4 [  {
  1725. STA <Data_H8 W# ?8 l' \6 q( V0 r. {
  1726. PLA
    1 k* b3 R, z0 p* `& E4 Z
  1727. RTS- s& X/ h4 I) a0 B; V

  1728. 5 R( u& J4 j: l: w7 ~
  1729. Set_Sound_Total
    ; C) n$ w7 g6 M# _
  1730. LDY <Music_Item_Cur, z5 S; Q& y  u6 X" \
  1731. LDA Sound_Total_Port,Y
    ) B7 c5 Y' c/ O4 f
  1732. SEC
    + o1 n5 y# u3 w# L, |) V
  1733. SBC #$011 l' p# g1 }4 r# ?1 {5 v. ^
  1734. STA <Music_Total: I+ d* f6 r/ C/ C
  1735. RTS
    ( L9 M" E' v0 l+ q3 i

  1736. $ f2 A' V& ]% c7 Z8 n: [
  1737. Get_Sound_Start, Q# a1 T) L+ C" U6 V% V% U
  1738. LDY <Music_Item_Cur, o) k8 Y0 P) E- i, H
  1739. LDA Sound_Start_Port,Y/ i' b6 e6 h  [+ q* E5 h
  1740. RTS
    , |+ [6 `& A1 T! X, d

  1741. $ o! X. u& p) x  l2 H' e! t
  1742. Set_Sound_Init_Port7 w+ h+ k, d& W6 R) d# m2 b: A
  1743. PHA
    : F( k% q7 |1 }- q2 U. a
  1744. LDA #$20
    , O' d( B2 U6 q$ k( j7 K7 v9 O9 ?) y
  1745. STA <JSR_Addr_Op
    ! z0 u  u# Y' K- ^! X2 ?# T! n
  1746. LDA <Music_Item_Cur
    ( E/ o2 S) i& h( Q1 f
  1747. ASL A
    ! S% R+ |/ D- w* f+ P( }
  1748. TAY# a" J9 [+ o( c
  1749. LDA Sound_Init_Port,Y
    ; r7 n/ x4 i, ?4 _
  1750. STA <JSR_Addr_L3 `3 p# _& |! p% c; A6 w
  1751. INY; d' n  V/ x% h: t) y2 s
  1752. LDA Sound_Init_Port,Y
    2 k/ E! e& e! v$ E4 z) o
  1753. STA <JSR_Addr_H
    ) R; a1 Y" v/ M: i) }+ ^
  1754. LDA #$60
    ) \$ g6 Y6 i! S; V, c$ j# q
  1755. STA <JSR_Addr_Rts
    : j% [- H$ X% a! g* g6 ~) a3 M: {
  1756. PLA2 ~. v# T8 L% y4 r* a  T$ @& Q
  1757. RTS: D* t' V! v# t

  1758. 5 g% d  M5 f7 y9 v! ~
  1759. Set_Sound_Play_Port
    3 [0 H  C# z+ E5 e
  1760. PHA
    - N& }3 |4 v/ g' w3 u  U
  1761. LDA #$20
    . B# `; \: q. m5 a8 m7 v
  1762. STA <JSR_Addr_Op
    1 k. H4 |4 d/ _1 d8 Y- k
  1763. LDA <Music_Item_Cur, E: X' B0 O0 G* \5 U: o% c5 |
  1764. ASL A
    6 P) N) `- i1 y! |
  1765. TAY
    1 b: G9 V! v- @. g6 |3 S
  1766. LDA Sound_Play_Port,Y* ~( ?) @& o% @$ p
  1767. STA <JSR_Addr_L
    " z# x( N& \$ Z3 f8 T
  1768. INY
      ]# h' A3 F2 S; w+ ~. ]" l
  1769. LDA Sound_Play_Port,Y) r# V( ^3 o% G1 p8 a: z1 A
  1770. STA <JSR_Addr_H
    ( x/ d# A  J" r% y( d2 T5 l
  1771. LDA #$60
    5 S8 e$ k* T' {7 k1 X/ m' q
  1772. STA <JSR_Addr_Rts
    & t1 r5 G8 {! X4 b" u& ]9 q
  1773. PLA
    2 ^" S+ |- J& {6 |  o
  1774. RTS
    ) X" y/ d5 a& s  }2 s* [! A

  1775. 9 k  F  [0 Y  O0 N
  1776. Set_Sound_Reset_Port
    * X/ U8 |! S8 Y: p
  1777. PHA
    / J5 T) F0 H' p7 U, }
  1778. LDA #$20
    / b) _' P$ P5 K; S
  1779. STA <JSR_Addr_Op
    0 o0 b/ E; N/ k" f! {2 W
  1780. LDA <Music_Item_Cur
    4 T: ?4 u/ f( u# ~% T1 ^, }" m
  1781. ASL A" f  B- b+ Y9 U5 o0 X* O/ h5 I  {
  1782. TAY
    9 j+ O- w" P9 @/ e+ b* g* V2 `
  1783. LDA Sound_Reset_Port,Y
    . h' b3 @! ~$ r% ^$ @0 |( p, \
  1784. STA <JSR_Addr_L1 n7 i+ Y+ t, o+ F6 n7 L: G' V
  1785. INY
    3 u' L2 q8 @. l8 a, W/ D& C6 Q. i) ~
  1786. LDA Sound_Reset_Port,Y; P* m( d' B& |' P& |
  1787. STA <JSR_Addr_H
    8 [$ N3 E0 M& M/ h. K/ K
  1788. LDA #$603 ^4 Q2 F  |1 T0 ?
  1789. STA <JSR_Addr_Rts% `1 E/ R3 U2 F# L6 j* N
  1790. PLA7 i( v8 L% d7 C/ P7 P4 D# d6 A% o
  1791. RTS
    3 X% d$ _7 |0 k0 v6 H

  1792. $ K1 P' Z8 n- _. e4 ^, X
  1793. ;初始化音乐bank' U" ]7 e5 m7 d& L( b- b2 m8 z" }; n8 p7 x
  1794. Init_Sound_Bank, N2 _. U: Y5 U- A
  1795. LDY <Music_Item_Cur& h. H3 _) p: u3 L  A8 K
  1796. LDA Sound_Bank_8000,Y
    4 p( A$ F" n2 r% P
  1797. STA <Music_Bank_80002 Q: p+ G6 @! b' l- ~+ e
  1798. LDY <Music_Item_Cur7 i% c: K" q. B( a6 ~
  1799. LDA Sound_Bank_A000,Y, V" A2 Q' m" {7 D8 T/ x
  1800. STA <Music_Bank_A0007 x3 U) L& A5 i* `1 K3 q
  1801. RTS8 @9 c$ Q0 M) m' l. `! S
  1802. , d1 V' ?7 ~9 P# n/ ]
  1803. ;==================================================+ v4 b5 |7 b# L# O* G$ d
  1804. Sound_State_Reset;音乐状态重置6 ?3 x& `9 D" ]$ f! t0 N3 @
  1805. JSR Music_Bar_ReSet        ;重置音乐条: {) V) h: J' b: x; D3 M/ E
  1806. JSR Time_ReSet             ;重置播放时间  P8 N1 K8 U9 n- N! C- D( O

  1807. & z7 Y; W0 ]5 R8 K' H+ U+ P- X- h
  1808. LDA #$00
    5 ^) j* q$ f& s% g2 ]) \' \5 t
  1809. STA <Music_Stop_State
      q9 w4 j  V) T/ q/ p
  1810. JSR Music_State_Show       ;显示播放状态
    6 x9 x& M$ K  [

  1811. * O2 }( ]# n; h
  1812. .IF Track_Name_Pos" O. Q) p7 _% w
  1813. JSR Show_Track_Info        ;音乐曲目名显示
    - f& |* f2 ^8 P$ n8 ]0 S
  1814. .ENDIF
    9 m) ~: Y6 o; Z' S4 Z

  1815. 1 W# {9 ?, ^8 z, A  H5 [: F
  1816. RTS
    % |: O! p: s" F

  1817. 1 E/ m# N( E( t# ]3 H1 v7 e2 b
  1818. ;==================================================
    4 R) _; E9 X% I) N" g. e, B
  1819. Sound_Init_Proc;音乐初始化处理' v7 @- j1 V$ t; P. d
  1820. PHA/ F; c" l$ X4 S- ~  x% V
  1821. JSR Set_Sound_Init_Port    ;设置音乐初始化地址
    " i+ b8 N& P! r( v1 I+ _& S$ S6 e
  1822. LDA #$00
    0 Z" c+ L4 r. F' Z' g  i* @( x
  1823. STA <Scroll_H               ;重设水平滚动2 J' W5 l! n& q6 {! D. H
  1824. LDA #$0F
    ) d' E- }/ P% n. [% @
  1825. STA APU_STATUS2 w) M7 ~: U5 H' y: S6 G
  1826. PLA
    . r$ a$ L# `$ O9 T
  1827. JSR Sound_Init             ;音乐初始化  V$ _  E; s% X: ]+ E$ o& M
  1828. JSR Sound_State_Reset      ;重置音乐播放状态& f5 a) U, R! K) ^0 t% V; R1 M! o
  1829. RTS
    0 _( H! p+ w; d/ W

  1830. ) z* O9 c: X7 u3 n8 B
  1831. ;==================================================7 `, ^, I" o+ |* Q" w0 Y9 {6 Z
  1832. Sound_Play_Proc;音乐播放处理- p2 ^3 h' e2 b8 S% g
  1833. JSR Set_Sound_Play_Port    ;设置音乐播放地址
    4 U3 A+ K' O0 v: t5 \- s
  1834. JSR Sound_Play             ;音乐播放  |0 X- W+ Z* A# U" J
  1835. RTS
    ) s  t( Z) ]. K2 g. o8 }, }

  1836. $ H* t/ W0 H/ M, z
  1837. ;==================================================( n" t. p  u' D& z1 q0 M% T9 w
  1838. Sound_Reset_Proc;音乐重置处理
    ! Z3 `( j- W" p( i/ D
  1839. JSR Set_Sound_Reset_Port   ;设置音乐重置地址5 {# V! n% j" J- C
  1840. LDA <JSR_Addr_L
    # ~: s' Y6 R; w$ r4 X2 w* a! X
  1841. ORA <JSR_Addr_H
    ' J! R2 O% Y3 p
  1842. BEQ Sound_Reset_Proc_Default
    ' R4 Z* [; G) s& j2 B
  1843. JSR Sound_Reset            ;执行音乐重置
    ' L9 |3 C& Z# {/ Q! a+ A# f
  1844. JMP Sound_Reset_Proc_Init_Sound
    6 u6 \% u: R& ~' }
  1845. ! M( p5 g$ @' ^3 F0 M: Q) p/ a) }
  1846. Sound_Reset_Proc_Default    ;默认音乐重置处理
    ( N: J" ~- y9 G  l% a
  1847. ) D! }2 t4 b) I9 u5 Y! Z
  1848. ;清理内存很耗费cpu周期, 这里禁用一下NMI中断
    , {8 K: F! Q' P0 x% e0 R" h! w3 q
  1849. LDA #$00
    / x" p+ ~% w& v8 E/ `! N& M
  1850. STA PPU_CTRL
    * q, R/ [1 e3 b

  1851. 1 I) M- f' z9 _% B
  1852. JSR Sound_Data_Clear
    ' Z0 q' \! i3 O8 h/ h' ^. L- z
  1853. ) {1 i, F3 t1 x7 N2 S
  1854. Sound_Reset_Proc_Default_Wait
    9 L4 D: _' |- O9 d: q1 [+ p4 F4 E
  1855. LDA PPU_STATUS7 A3 Z0 e2 g5 S- i4 z, }* S
  1856. BPL Sound_Reset_Proc_Default_Wait2 `3 m. ~* A4 ]
  1857. ( i* L5 ^- H/ m- k- y
  1858. LDA #$00! r( g, J" x' ]% h6 A) U6 A# a
  1859. STA PPU_ADDRESS
    & a) {6 j/ V8 z4 J
  1860. STA PPU_ADDRESS
    & e( B+ e6 F. b8 I+ ?) ~' {
  1861. STA PPU_SCROLL4 a% ^  v+ v; Z& \8 ]  p3 o. x& n
  1862. STA PPU_SCROLL6 Y- x: O7 w; K# m
  1863. ; Y0 V5 @& Y1 J2 W! J
  1864. ;恢复PPU控制& _, T7 u2 d0 v5 p; y! P
  1865. LDA Screen_Ctrl0 q$ k. n' v' Y( m" T7 p" j
  1866. STA PPU_CTRL  @) V7 D: J7 Q
  1867. 5 X2 ^3 \" X, m2 w
  1868. Sound_Reset_Proc_Init_Sound' p7 ]% T0 z: c) `$ H0 a  D% z- |8 H! e
  1869. LDA <Music_Stop_State
    + w( B- e2 e- ^; q- X, K1 t8 \: P
  1870. BNE Sound_Reset_Proc_End
    3 I+ F/ R* v0 m  W* f
  1871. LDX <Music_Item_Cur. q$ F, k6 W5 H& ]) S6 v1 a/ r
  1872. LDA <Music_Cur,X
    + y: M! C$ p' W8 _. k
  1873. JSR Sound_Init_Proc
    ! s/ m" L* |/ n  R/ ]
  1874. Sound_Reset_Proc_End
    . U6 m/ Z$ [: C% t
  1875. RTS: T9 a/ ~5 |! u* q# _

  1876. % |; R0 c' s4 p$ t& b
  1877. ;==================================================  a$ h5 ?# a7 n6 y$ [
  1878. Clear_Item_Text;清除页项目1 {1 G0 S/ t' e
  1879. LDX PPU_Cur
    : @1 {7 o* o% T+ K+ ^
  1880. LDA #PPU_MODE_CNT_CLEAR1 l/ X, w9 l6 r, F+ O: w% H
  1881. STA PPU_Addr,X
    1 B+ g) k& m8 Q) _  r# }" S9 m
  1882. INX; t0 d+ @7 n* H& O* Z: z4 ^6 a
  1883. 7 {6 J6 I* ?/ t1 b
  1884. LDA <Page_Last4 {+ `% o8 v: b  ~/ V
  1885. SEC1 L5 B, y; u9 ?$ u! S
  1886. SBC <Page_Last_Index
    : W5 {! u- B1 ]. S" l( H
  1887. ASL A
    6 C9 L- m$ h* ]" r5 H# ~1 O
  1888. 0 o) P" Q4 j) y1 j
  1889. TAY6 W2 v/ g% L/ g1 V8 ]! |; [5 H
  1890. LDA Item_Pos_Data,Y* K% l  c$ k# N3 _  |7 T
  1891. PHA
    4 P+ c! X3 N- t7 j* ^* e9 f& w
  1892. INY( H# i; P9 H- o! \2 \4 ~
  1893. LDA Item_Pos_Data,Y- E, u$ |0 o/ ~+ l* }; j* O, q
  1894. STA PPU_Addr,X* ]3 {" }' ~, ~) G3 j8 }3 X8 h
  1895. INX1 [! Z5 F# ~: k+ _% O4 N
  1896. PLA3 m  A9 G7 }: d5 l, m* ?* n8 O
  1897. STA PPU_Addr,X0 }9 s3 Z8 e  _7 `5 _" V
  1898. INX
    ! L$ q+ F' H2 r
  1899. / s& V: K6 z6 J; \+ B
  1900. LDA <Page_Last
    ' C- H  O/ [' N1 X! Z; `
  1901. ASL A6 J, ^8 e5 n- K
  1902. TAY
    6 y8 V+ b0 d1 Y( @- ]8 K
  1903. LDA Music_Collection_Name,Y
    3 D9 v: l7 \& H9 ^8 V
  1904. STA <Data_L6 ]- z# c$ M4 ^
  1905. INY
    . f3 A4 ?# \4 T+ E5 o
  1906. LDA Music_Collection_Name,Y
    ! R! d1 q- Z* K) |) C' p
  1907. STA <Data_H! }5 y9 P. M* s! [

  1908. 6 V8 p- x) L0 I# H
  1909. LDY #$003 d/ O  O5 J( v4 D# P
  1910. LDA [Data_L],Y+ f2 v& J* e9 R5 }* E7 Q/ J( s* s: e+ `
  1911. STA PPU_Addr,X
    ' }  s/ Y( C+ Z: `) _
  1912. INX: c4 B' S: f: M3 W8 ~+ w
  1913. Clear_Item_Text_End
    2 }5 W, E. X# x9 O' r
  1914. STX PPU_Cur
    2 H  p, B4 u  U4 c
  1915. RTS7 c, L: F) h" U1 i( D. b6 T- w" T

  1916. - L+ j8 T- F6 k5 Z8 b0 e
  1917. ;==================================================
    5 p5 z% D( H0 O4 S- y, b
  1918. Show_Item_Text;显示页项目) W, B1 K' Q6 h' x' a( O3 X5 m' H9 c
  1919. LDX PPU_Cur
    $ q8 u. J2 l, w( _
  1920. LDA #PPU_MODE_CNT_LINE
    8 \2 d: _% p8 f4 y6 N2 ]
  1921. STA PPU_Addr,X
    3 ?% u& {$ V: _4 t' x0 ?; ?. ]
  1922. INX
    & Z9 e$ ^* Q$ d* ?3 x2 t
  1923. LDA Page_Cur
    : c& `; l' q7 o" {3 O
  1924. SEC* w; N' L( q/ t/ q  {3 J5 w
  1925. SBC <Page_Cur_Index3 a0 ^) L1 J4 X6 j' U3 c
  1926. ASL A
    3 A- i" L3 V+ h4 I3 v* |
  1927. TAY
    % A" A# a# p. N0 A1 Q  ^6 _, b
  1928. LDA Item_Pos_Data,Y' h7 w( I# z6 t' U; M9 }5 f
  1929. PHA$ [9 j6 c% ^# [, s  A
  1930. INY* r( o. I; d/ n
  1931. LDA Item_Pos_Data,Y
    0 X- J' U4 T! s2 {+ N; i/ d
  1932. STA PPU_Addr,X
    ! f7 z6 ~0 O' ^, [& q# k
  1933. INX
    8 b. Y* f1 H9 X* M
  1934. PLA' e$ J$ ^6 W. w; ~' u
  1935. STA PPU_Addr,X
    % o) j; U, b" g5 q3 @, n7 N- f$ `
  1936. INX
    % q4 |) K$ A4 I
  1937. 2 `3 z3 b( `! d/ ^& J0 J
  1938. LDA Page_Cur- o' i. W0 @8 q* [6 \
  1939. ASL A
    , Q* G( W: h8 e" K2 W( f
  1940. TAY, i$ T4 E8 |7 D! [1 W2 Q( H
  1941. LDA Music_Collection_Name,Y
      m$ n, {, O; b
  1942. STA <Data_L% c9 \$ G" ?) X/ u- S1 C% n- v
  1943. INY
    7 f" m. }& l. ~
  1944. LDA Music_Collection_Name,Y
    1 w5 o/ ~0 T6 i0 T
  1945. STA <Data_H  P; ^2 A# f9 ]9 W' n0 D6 S

  1946. & h) K9 O9 p* A0 B" }8 `- P
  1947. LDY #$00% m; r/ G# c/ f6 ?6 L! c) D; w. e: Y
  1948. LDA [Data_L],Y
    0 Q: B" e7 U/ Y
  1949. STA PPU_Addr,X
    # E* A  k% Z' o+ w
  1950. STA Data_Cnt) C; L; G$ D1 ^/ @
  1951. INX2 T; A( ]' u% f$ D% Q, f) p

  1952. - J/ K3 F% `5 K
  1953. INY
    3 h9 U) H: |  |  @
  1954. Show_Item_Text_Write
    5 x8 I( l- p/ `, R6 J1 z) D
  1955. LDA [Data_L],Y
    , h8 [# x- D, p4 Y* a
  1956. STA PPU_Addr,X
    % |5 h. Z& X0 i8 F
  1957. INY6 O1 q' ?! n+ q* l6 u( ?+ @5 Z, F
  1958. INX0 O# m9 Y5 Z* O" K% m7 n
  1959. DEC Data_Cnt
    / D* @8 F# C% l+ _! g
  1960. BNE Show_Item_Text_Write
    . @/ ~  U& R; v+ d
  1961. 0 g0 E: c% B4 D4 \  K
  1962. Show_Item_Text_End# k* n9 z: B# M9 V9 u% X3 P4 D
  1963. STX PPU_Cur; B4 X9 K, l" Q
  1964. RTS
    ' z$ z5 n, s! _- |1 x
  1965. # b- I  p; \( E" [2 ^
  1966. ;==================================================) y$ ]; M! d2 x& Y) S; h; s
  1967. Get_Page_Start_Index;获取当前页号起始与条目数量
    - z+ o7 j% j, u9 }3 L; [! M
  1968. STA <Data_Buf1 G! P; }. `8 M' Y* i) g4 r
  1969. LDA #$00
    8 j+ P9 w  k6 X4 |: V
  1970. Get_Page_Index_Calc& @7 _# h& \# X9 S6 F1 K# `4 B
  1971. CLC
    0 @; z9 ], j% {2 r7 b
  1972. ADC #PAGE_SIZE6 X+ m8 f4 s0 d( M( u5 c9 R2 S8 I
  1973. CMP <Data_Buf
    / F2 [) o; g2 }3 x# t6 B7 R- V
  1974. BCC Get_Page_Index_Calc
    - S. f- D" s' O" b. [$ L2 j
  1975. BEQ Get_Page_Index_Calc_End0 r. z& N5 r, K% p
  1976. SEC+ E- }1 R$ d  y0 D
  1977. SBC #PAGE_SIZE
    * r! c$ P2 P) H7 E. {
  1978. Get_Page_Index_Calc_End" H' w% N* ^' y
  1979. STA <Data_Buf
    ! p2 W, K/ R$ S% `, f  q
  1980. Get_Page_Index_Cnt
    ! N- k$ Y2 C! y1 V9 E
  1981. LDA #PAGE_SIZE
    + m5 Z& I; t/ [1 ?/ s) X2 u$ L
  1982. STA Data_Cnt: T! a% ^, _8 l: u2 |

  1983. 4 Z4 I/ G: n, y9 Z5 d& }
  1984. LDA <Data_Buf
    3 X: N. A0 N" h
  1985. CLC
    % \$ y# B* }4 O2 A- A' t9 V" p2 X
  1986. ADC #PAGE_SIZE; X, S9 B2 R( y) t1 \$ |
  1987. CMP #ITEM_MAX_SIZE
    8 H6 M0 k7 p/ K7 ]& `$ J
  1988. BCC Get_Page_Index_Cnt_End
    : U5 J, c( r  E; e3 Q& u# {
  1989. - Y, T4 e3 _" y: R3 d4 Q. h2 s
  1990. LDA #ITEM_MAX_SIZE
    ! [% i3 i1 X- z) R8 W5 b7 a
  1991. SEC
    ! Y  r! b' V# E3 P" x- f4 N7 `
  1992. SBC <Data_Buf
    4 `5 O6 X( ]4 ?
  1993. STA <Data_Cnt
    ) s3 N. D/ n& j* \' \/ e- a) T& E. r
  1994. 8 |! W( T8 d! X) z" G* K
  1995. Get_Page_Index_Cnt_End# r4 U% t7 P3 A; }7 O$ X
  1996. RTS
    ; y  z1 `# ~* E
  1997.   a: ?9 J! `; b3 I0 Y; u, b
  1998. ;==================================================: v) ^/ J4 a& k* }/ ~
  1999. Get_Last_Page_Start_Index6 f# }9 ?4 ]$ w
  2000. LDA <Music_Item_Last
    $ u6 L" k$ Y, s- ]: @
  2001. JSR Get_Page_Start_Index( M$ f& Z- A$ ?8 _/ m! A  P4 d
  2002. LDA Data_Buf5 b5 u0 y; C; Y6 f" x
  2003. STA Page_Last( Y& y; b( m' P; s- d0 B
  2004. STA Page_Last_Index8 m# C; R- C# h/ t
  2005. LDA Data_Cnt
    4 J" x& M7 A; k3 s( R
  2006. STA Page_Last_Cnt! i" q% P, K' |" w
  2007. RTS! `6 }  ^- u* E* _# P7 H
  2008.   C  I8 @& X$ p  x6 j9 c# y
  2009. ;==================================================+ G0 B) t7 F1 `) R! h* O; h% H1 u
  2010. Get_Cur_Page_Start_Index
    , [( e/ X0 |& h5 L; T; A4 I
  2011. LDA <Music_Item_Cur
    ) v$ j0 s. A9 }0 G  ~$ M6 n7 i
  2012. JSR Get_Page_Start_Index; ^. G4 u0 Y& H7 s
  2013. LDA Data_Buf* c6 O( X# @8 O1 T" |, N
  2014. STA Page_Cur
      ?5 }* Y' d& E1 X
  2015. STA Page_Cur_Index
    ' Z3 W2 x* Z' F7 G
  2016. LDA Data_Cnt
    ' R1 i1 T# G* l) c# n
  2017. STA Page_Cur_Cnt
    + Z% S( V, Y$ c( P* R3 [, G
  2018. RTS
    " @3 d! Q! @, j7 ~" f* {/ m# Y5 T  @
  2019. 2 T+ [, c+ B1 d5 q
  2020. ;==================================================" a1 n: B- y2 E. ^
  2021. Show_Page_Text;显示页文本# w7 L/ B6 q/ w$ N
  2022. LDA <Text_Disable_Flag
    " m: u& [8 l- [; L7 ?7 S; m7 s
  2023. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME | TEXT_DISABLE_ITEM
    . e$ m8 `& Z  k) Y
  2024. STA <Text_Disable_Flag. Z/ O' o* M4 J( I5 A- f' [% y

  2025. % c6 m( H; y: \; t4 L2 Y
  2026. JSR Get_Last_Page_Start_Index
    " E( _; ~9 {: v$ @) Q
  2027. JSR Get_Cur_Page_Start_Index
    8 y1 Y, W9 s! e; C& U+ X

  2028. # o1 A- l: {! J
  2029. Show_Page_Text_Set4 U. A( V3 ]* c& z# P! m/ q

  2030. 5 T; k& S1 Q2 U/ k
  2031. Clear_Page_Last_Item;清理上一页
    1 j8 `+ [6 Q0 t" b
  2032. LDA Page_Last_Cnt8 i, }6 G% \$ o7 y8 U
  2033. BEQ Clear_Page_Last_Item_End
    ( w; [8 u+ g" y! k0 T, j
  2034. JSR Clear_Item_Text
    0 s' N  K, R+ Q3 e4 w6 E0 m+ s. E
  2035. INC Page_Last
    ; p2 Q; u3 W# T
  2036. DEC Page_Last_Cnt& L' k3 }! K. Q- K7 P
  2037. Clear_Page_Last_Item_End  D+ k' |* L; w4 U, r4 J5 I
  2038. 6 T' h* r8 G( q3 G
  2039. Show_Page_Cur_Item;显示当前页/ u1 H3 E, w# G' e' D
  2040. LDA Page_Cur_Cnt
    : n& ~' i" S) Y
  2041. BEQ Show_Page_Cur_Item_End
    % {4 l1 W; k) T2 M  p! C
  2042. JSR Show_Item_Text) S, G, B2 L5 K" N' ?6 `# L
  2043. INC Page_Cur
    / g( x" j. V+ j# g; S4 r. V
  2044. DEC Page_Cur_Cnt
    5 p( x4 n/ B& y/ J: U0 W, U
  2045. Show_Page_Cur_Item_End
    ) v' h/ b. J* H
  2046. 4 j7 A6 Z- O- x" S
  2047. INC <Time_Wait_Cnt
    9 q/ [8 B# }  n3 p( E3 ~
  2048. Show_Page_Text_Set_Wait;等待NMI完成PPU操作
    $ Q' y+ X0 z! c! V" ?& T
  2049. LDA <Time_Wait_Cnt
    $ P! w% @' E. x2 A# r
  2050. BNE Show_Page_Text_Set_Wait* R  I1 N' w$ Y& V- z: [& C# C& H

  2051. ( _7 Q' t1 ~+ Q# ?' C2 X. m
  2052. LDA Page_Last_Cnt, b9 i: L) ?) L1 F6 D' }* Q: G
  2053. ORA Page_Cur_Cnt0 B, l$ N+ k% j( A+ [% V4 O/ {
  2054. BNE Show_Page_Text_Set
    $ L; F: S0 s3 h1 q
  2055. LDA <Text_Disable_Flag
      q" Y* ^! B2 F6 \1 _; m5 b4 Z
  2056. AND #TEXT_DISABLE_ITEM ^ $FF
    2 ^  t% |) ~- w' X! J% K( k1 _" d
  2057. STA <Text_Disable_Flag+ U7 I9 p$ g5 k4 K7 T
  2058. RTS
    7 Y; f% J- P& U$ j* |
  2059. 2 `2 V( r9 p5 k6 @! j: d
  2060. ;==================================================
    ' A' p2 i9 _4 q# S
  2061. Last_Item;上一项
    9 B; e& ]& F" A( w$ d$ G
  2062. JSR Clear_Last_Track_Name1 y6 m8 ~0 Z% X( ?. x: t$ Z5 t9 i
  2063. JSR Disable_Text_Draw) `% _. w" ~) s4 `; Q
  2064. - f/ H, X6 K/ P, ~- F/ l5 S
  2065. LDA <Music_Item_Cur. V( ?# [& y" z7 |. h8 L
  2066. STA <Music_Item_Last; i! z- h# u- E7 n: h2 c3 g

  2067. 3 r6 r6 D9 z: d) h6 A  C8 h- {
  2068. JSR Get_Last_Page_Start_Index
    ) `- ]( G6 E# m7 V2 i; L) {. I& c6 r

  2069. % ~' @4 x' d7 v9 u# }% k/ ]0 e
  2070. LDA #$00
    / E8 |! s: r' w) }+ Z9 ^1 L* C1 \
  2071. STA Data_Buf
      h& w7 T, d* Y7 N5 x4 x
  2072. ! d% G$ y. u& y8 _) f! |, Z
  2073. LDA <Page_Last7 p6 l5 F3 T$ n! x- _$ |9 z
  2074. CMP <Music_Item_Cur4 t. h8 `5 a' l, A1 Y, P
  2075. BNE Last_Item_Begin
    ! }& f4 _, h3 r8 {& X; I; B
  2076. & a. v) H! X+ w
  2077. LDA #$01
      t7 j8 {3 Z8 U2 Z4 q. p* p
  2078. STA Data_Buf7 @+ O6 o. q- ]: }; P( T
  2079. Last_Item_Begin, k; e1 h, W/ W& Y/ I$ j6 C
  2080. LDA <Music_Item_Cur
    7 [, ?4 ]( l- o- X$ S, O% t5 M) p0 O
  2081. BNE Last_Item_Set
    : c& s" \, n6 ~- ?0 z. S: {+ H( z
  2082. LDA #ITEM_MAX_INDEX + 1
    9 H+ z, j3 g4 ?
  2083. STA <Music_Item_Cur
    . Y) t& B  B- Z- t+ F& z7 u
  2084.   z7 z( t5 y' |8 o/ T  L4 ?5 _
  2085. Last_Item_Set
    * B2 J% d4 C# m4 U. p8 j
  2086. DEC <Music_Item_Cur! i$ k( y1 i; V1 w& `& O+ x
  2087. LDA <Music_Item_Cur
    0 U: ?0 Y8 H( z; c# ?
  2088. JSR Reset_Current_Music
    7 B0 J3 I) ]" I, Z8 @% b6 o# m
  2089. % g. t* ]" k1 Q! t! d
  2090. Last_Item_Play! V6 l6 p; S5 Q- Y5 y/ Y) z/ Q2 F
  2091. LDA Data_Buf/ R' u9 z8 _7 h. V! K
  2092. BEQ Last_Item_End9 y! G( \7 ?8 w, ?( B
  2093. JSR Show_Page_Text
    3 n5 }1 n7 c: o" r: x2 Q
  2094. Last_Item_End4 V% T4 D$ ^8 a/ R2 S9 X" z& Q
  2095. RTS5 T; Z" b1 Z7 G  B

  2096. : D9 m2 V$ z3 m  E7 b
  2097. ;==================================================* F: q) E0 S+ `" _( ?
  2098. Next_Item;下一项
    $ k) ?* K  g, k5 p/ n4 Z
  2099. JSR Clear_Last_Track_Name* R* ^, ^  p% H3 U6 S
  2100. JSR Disable_Text_Draw2 D1 |9 w. J7 c! T9 m  N2 c

  2101. - t' Q. d/ ]4 b
  2102. LDA <Music_Item_Cur# F1 T4 c7 s( w$ r
  2103. STA <Music_Item_Last, h$ b! W( s  ~$ {
  2104. & U( z8 w+ S3 o
  2105. JSR Get_Last_Page_Start_Index5 K- n# V8 y! u/ l4 h

  2106. " i  @% _) M8 D& G
  2107. LDA #$00
    ; |1 U# B1 f& e
  2108. STA Data_Buf
    0 T8 ~- N  s6 }8 }$ C
  2109. 7 f; z2 f/ g9 q# c; R; \
  2110. LDA <Page_Last
    , H! h) \# O# i, b) j
  2111. CLC* Z; {& t% r, V3 j* j# @3 b6 `
  2112. ADC <Page_Last_Cnt
    ' S: }  D4 i! _5 }6 x
  2113. SEC* P& D5 x& \" u, l/ C
  2114. SBC #$01
    . Z9 c9 g+ p' G; ~0 N9 K
  2115. CMP <Music_Item_Cur
    ' @+ L- g4 F9 y* d& `# u. u
  2116. BNE Next_Item_Begin
    0 {4 C+ Z3 N) X, M) \
  2117. ' b9 N8 l, R  V) j5 k
  2118. LDA #$010 I. \' x, ^* J8 d, z" d
  2119. STA Data_Buf( n( \; f4 {  b' X1 G6 V2 B5 |* z
  2120. Next_Item_Begin" i  b, \* c, K/ A
  2121. LDA <Music_Item_Cur  t9 P" i9 M6 O$ j" _2 i  i
  2122. CMP #ITEM_MAX_INDEX
    4 W( n' d7 X& i# I" N
  2123. BCC Next_Item_Set
    ; `' o" s& y  u! Y. r" N  w: u4 d
  2124. LDA #$FF
    + p& x8 H) |7 T
  2125. STA <Music_Item_Cur
    3 @1 g4 J$ d0 |$ [$ b+ a) c/ O
  2126. Next_Item_Set
    ' p. z& L1 x% L: P6 e. W; x
  2127. INC <Music_Item_Cur% {$ D- [) e6 J1 X7 u6 U5 u
  2128. LDA <Music_Item_Cur1 x; l# [6 h8 j8 X7 o- L6 b  P  v
  2129. LDA <Music_Item_Cur
    5 h, ?* ~+ s7 _
  2130. JSR Reset_Current_Music
    - [/ A" m& ?3 L8 K
  2131. Next_Item_Play
    $ i3 z+ T+ f- l# ^6 x/ t
  2132. LDA Data_Buf
    ( [- z8 d+ O+ l' b
  2133. BEQ Next_Item_End( n  J# q" A  |) A/ a% y+ i
  2134. JSR Show_Page_Text$ Y; n% [5 E1 d( T, w3 t
  2135. Next_Item_End8 I" @) l. }* a* @+ M: c# ~
  2136. RTS4 c& @$ |9 j9 L( ?! f4 O
  2137. 4 i1 ~- k7 _$ P7 ?; g0 t
  2138. ;==================================================6 N+ d% X+ c) t: m+ y6 i
  2139. Last_Page;上一页- P% O$ z6 j; B: G# n! Q+ d
  2140. RTS: U" A7 V# H9 T$ W2 }
  2141. ; c& v# r$ t- ^
  2142. ;==================================================
      H  ^: m$ X# J0 x& J5 o. k
  2143. Next_Page;下一页
    : J+ Z% [: P. S, z5 u$ C. c: j+ C
  2144. LDA #PAGE_MAX_INDEX
    9 A! x: I& y/ X# o: u/ e- U4 o
  2145. CMP #$01( v+ _/ r+ V! y6 U8 J" x% e  ^
  2146. BEQ Next_Page_End# h* o/ L) H- E' C0 G
  2147. 4 ~8 w- {- a  d
  2148. LDA <Music_Item_Cur! _5 m3 M* B% t$ K- s: O
  2149. STA <Music_Item_Last( U9 k; T# ~/ U; ~

  2150. + o# s: a# ^6 L) i$ z
  2151. JSR Get_Last_Page_Start_Index% h+ J3 G3 d, i4 h0 u, g/ o
  2152. 7 ]% |, d' h4 w2 h+ T! G
  2153. LDA <Page_Last_Index- h; j1 ^$ Y1 [7 G, v% x2 r* E0 h
  2154. CMP #PAGE_MAX_INDEX
    - ?* I' S$ r; D4 U+ @3 J" n  s3 L
  2155. BCS Next_Page_In_End_Page
    ! v' f* C5 e* a

  2156. 5 E. _/ C) Z8 S6 k
  2157. Next_Page_Not_End_Page;不是在最后一页
    2 m! `" D& E! B, Z8 t8 E
  2158. LDA <Music_Item_Cur
    . |' O: J+ u9 R# r
  2159. CLC
    " |6 }: D: [; [: P* ]
  2160. ADC #PAGE_SIZE
    1 y# z$ {! x! Z; o, U  a& m
  2161. CMP #ITEM_MAX_SIZE; t6 C/ R. X9 L5 B- y- l
  2162. BCC Next_Page_Not_End_Page_Less. u$ |% ^0 v( ~) o3 v
  2163. LDA <Music_Item_Cur
    # Y- G% C" V& Q# ^8 `7 {( b
  2164. SEC
    # J. C( \/ q5 h, U
  2165. SBC <Page_Last_Index
    % p! l/ n8 J& h+ H
  2166. CLC
    " z3 `8 Z0 x8 w+ Z' ~- Y; o: O& g
  2167. ADC #PAGE_MAX_INDEX  t, O0 y* k  e' A9 i2 Z. A3 {
  2168. CMP #ITEM_MAX_SIZE
    9 ~3 F: L/ K% u; q& S) I- f
  2169. BCC Next_Page_Not_End_Page_Less
    8 R9 U9 C  c# `! `0 ?) V) ^& g7 _
  2170. LDA #ITEM_MAX_INDEX
      ^- H( @9 Y, j2 ~' e( z( S7 |
  2171. Next_Page_Not_End_Page_Less! V" P& W% v' q# W6 M6 ]3 k3 A
  2172. STA <Music_Item_Cur0 S, G  v7 h4 h
  2173. JMP Next_Page_Reset% \, V; l: M  ~5 ^! p1 D% [$ d
  2174. + `5 {$ J) W! s, z+ u
  2175. Next_Page_In_End_Page;在最后一页
    ! _9 }& P1 `; c+ A/ S7 k
  2176. LDA <Music_Item_Cur
    ' m0 w) A5 t1 Q( x7 ]. m) K
  2177. SEC
    - r3 n4 Z$ S7 X3 V
  2178. SBC <Page_Last_Index+ }1 b+ @" v5 |" L8 t7 ]4 Z6 k% E
  2179. STA <Music_Item_Cur
    5 [7 y& Z& @  M( B# L9 K
  2180. 8 f9 x* V; d) M5 d& `- k: B; Q* J+ ~
  2181. Next_Page_Reset
      [+ N- C9 G3 y8 k' E+ r( ]! Y
  2182. LDA <Music_Item_Cur+ {) b% q" q! c  z& E2 A! u% c2 J7 ?
  2183. JSR Reset_Current_Music( L  s. h9 V: c8 h! v# q( @
  2184. JSR Show_Page_Text
      l- |6 z5 V, l' S
  2185. Next_Page_End
    2 T' c# I3 d' A* a
  2186. RTS1 e/ n7 D7 k. G6 x- A& \
  2187. 7 p9 F' ~9 ?/ c- Q% g  ?  e# y
  2188. ;==================================================+ n) l" m. q7 @
  2189. Disable_Text_Draw;禁用音乐条刷新
    % A+ I- a5 B6 c& B8 H
  2190. LDA <Text_Disable_Flag
    & ^$ r; w3 w% ?$ k1 c$ d$ s$ X
  2191. ORA #TEXT_DISABLE_BAR | TEXT_DISABLE_TIME
    # U9 ~( S" D3 C
  2192. STA <Text_Disable_Flag7 f3 Z& S6 C+ X! t. U# x4 E/ I2 w8 ?
  2193. RTS8 ^/ h3 a* p( U6 l% U5 `7 g3 {

  2194. " W$ D) v0 W! a, m/ h
  2195. ;==================================================
    & {9 a" z+ B' X/ _8 p" S9 [" {
  2196. Clear_Last_Track_Name;清除上次曲目名" y1 n2 v1 S7 H/ w
  2197. LDX <Music_Item_Cur' m5 v6 z" E" s/ R0 ]4 _
  2198. LDA <Music_Cur,X
    : w, Z2 r# r' P6 I& \+ @2 U+ ?! e
  2199. .IF Track_Name_Pos
    : I& z% R9 m: i4 C% _5 l) f8 h4 t
  2200. JSR Clear_Track_Info; \$ N$ _3 b' {. G+ W9 f- v* f' k
  2201. .ENDIF/ r' F! ~0 v, N% ?0 u: B
  2202. RTS
    ; w" Z, q. _. ~  I% k1 b+ V
  2203. & g' p; b0 y  _' w# v# n: h
  2204. ;==================================================
    " A% E, p9 l9 l+ w7 ^# q5 \8 d5 U9 M% ?
  2205. Reset_Current_Music;重设当前曲目
    : `$ H! u3 ]' ], N$ M

  2206. 7 M- U' p% d4 c% a
  2207. ;写入当前总曲目' `; G/ \% E$ K
  2208. JSR Set_Sound_Total1 G* A5 t$ l+ C) d- S
  2209. LDX <Music_Item_Cur
    * k8 W# E2 H7 L

  2210. 8 x- @: \1 D( `# t: ^; S8 O
  2211. LDA #$00+ o, a- J2 n' U+ v8 O8 d
  2212. STA <Music_Last
    - o+ o$ X( H6 m4 [
  2213. % x. ~; ]9 h) I' i- n& x  d
  2214. JSR Sound_Reset_Proc
    - E+ u5 I; z" g) F9 ^
  2215. JSR Music_Show8 _' A2 P$ ]: ?' ^" J
  2216. RTS( ^4 N3 \6 F3 `  y# d* Y3 s7 X( J% E

  2217. ! q% B& C$ f9 r. L/ a
  2218. ;==================================================
    $ O- I, M8 V0 L, C
  2219. Music_Song_Stop;音乐停止& {% O7 k& t* i) O
  2220. LDA #$01# F& H0 `, A' A! j* l, v9 Z' p- ?+ y6 }
  2221. STA <Music_Stop_State9 L3 K, K: F* `& {
  2222. JSR Music_Bar_ReSet: |6 b) l" R  g: N' B
  2223. JSR Time_ReSet: N9 Q2 O1 A7 c2 n
  2224. JSR Sound_Data_Clear
    1 H8 d/ Q/ i' [" m7 N! @, _0 m
  2225. JSR Music_State_Show# _, T* t: }7 P# }8 _% D
  2226. RTS4 a$ ]) P/ ^, ?1 w# y$ K

  2227. - @5 L9 R, V! ]/ _+ O
  2228. ;==================================================+ P5 A: M* }: T" z  c9 T
  2229. Music_Song_Play;音乐播放1 i9 \. v% L* f) u. e
  2230. LDA #$00
    # ^& c: t  ~# r9 F9 l
  2231. STA <Music_Stop_State4 |8 h1 E4 A+ Q8 g
  2232. LDX <Music_Item_Cur5 R0 _  Z, w! Z) c7 p5 n
  2233. LDA <Music_Cur,X
    # K. O: y2 M- u* r5 G
  2234. JSR Sound_Init_Proc
    # [, m' S, H- G# T
  2235. RTS
    / i' `8 X) \. s& b4 I  m' a4 }
  2236. " i! U/ J) T) {3 p1 c
  2237. ;==================================================, `; r5 k3 Q/ Q
  2238. Music_Song_Last_10;上10曲8 w2 t0 J- ?3 M: B
  2239. JSR Clear_Last_Track_Name
    ) s0 Q, O+ p4 ^" e5 D
  2240. JSR Disable_Text_Draw5 r. ?" E7 y! \8 v5 {1 |
  2241. LDX <Music_Item_Cur6 n* n- O$ K8 H% u% N. j" z( |
  2242. JSR Set_Sound_Total: S* C- P# g% f; I% D
  2243. LDA <Music_Cur,X
    6 o+ }2 a3 Q1 i. d5 K; V' H8 d* j
  2244. SEC
    % E- f( g- l5 B1 g3 h
  2245. SBC #104 h3 U) i  b3 b+ r. z% `
  2246. BCS Music_Song_Last_10_Set( H! M' ]! s, i+ o( W  Z, `
  2247. LDA #$003 E1 o+ v2 }- `+ w/ ]/ `" R$ o$ H
  2248. Music_Song_Last_10_Set& Z! C+ f8 k# ]8 }9 S
  2249. STA <Music_Cur,X7 v$ g& l7 ]2 m- D& A% t
  2250. JSR Sound_Reset_Proc8 t: O2 E7 U; r
  2251. JSR Music_Show
      Y8 Z; s2 T0 z8 r' x. P  Q4 P: Y; S
  2252. Music_Song_Last_10_End
    # T2 p$ B+ T  Z9 H" T
  2253. RTS
      `  w) u) x3 I( n
  2254. 3 w! x- Z2 J* F# k/ N3 J2 B. M5 M
  2255. ;==================================================2 p( L; O9 i6 K' i
  2256. Music_Song_Next_10;下10曲
    & @. I, L$ b8 u* M) s
  2257. JSR Clear_Last_Track_Name
    " x# v3 V1 S5 O& G3 [$ D" w. v  f" U
  2258. JSR Disable_Text_Draw& W# x% M. w% p+ a& S+ @
  2259. LDX <Music_Item_Cur- h- }, i0 G! ]6 U
  2260. JSR Set_Sound_Total& ?8 C  G: t% [: I5 Y4 H
  2261. LDA <Music_Cur,X5 q' \/ W4 \% r5 E' B# ^! Q; \
  2262. CLC, ?$ m  ~$ k4 T
  2263. ADC #10% i4 P' b- T1 S) E, [9 |
  2264. CMP Music_Total) J; ~* `0 S4 D7 i0 w
  2265. BCC Music_Song_Next_10_Set0 C0 G+ n$ G5 Y! \
  2266. LDA Music_Total
    " }! o+ U* J" [; {9 R) ]
  2267. Music_Song_Next_10_Set8 X" n* q3 Y9 ]/ o
  2268. STA <Music_Cur,X  g' O* _7 y7 k0 x* W
  2269. JSR Sound_Reset_Proc
    7 D: Q2 V+ B2 T6 m& s
  2270. JSR Music_Show
    ' L* o& W- Q( H: x5 n# F5 C
  2271. Music_Song_Next_10_End: @' Q, \3 {) c
  2272. RTS& \' T$ `& U, q
  2273. ! l+ _! K8 G' F9 K1 k. y  K
  2274. ;==================================================
    ! |0 Z' a% q- h( A
  2275. Music_Song_Last;上一曲
    3 y' S3 G  m( K' E( k. o2 y8 X
  2276. JSR Clear_Last_Track_Name0 N6 Q2 o2 \& b8 E# Z/ _
  2277. JSR Disable_Text_Draw  z1 D; z# A' I* p9 N7 s
  2278. LDX <Music_Item_Cur6 K" j- p8 D6 Y$ K% G) U2 y( n6 ?4 a' Q# I
  2279. JSR Set_Sound_Total
    7 x. f* [# W8 p3 z# M' ~
  2280. LDA <Music_Cur,X& b' Q8 _  x: J2 q# V0 C
  2281. BEQ Music_Song_Last_Set& H2 c) V! j! T2 V
  2282. DEC <Music_Cur,X
    ! n0 _. t: M( m5 k3 m4 K+ ?, e/ |. e
  2283. Music_Song_Last_Set- r* [$ ]2 i# }6 f
  2284. JSR Sound_Reset_Proc' Q5 J; i4 Y, S2 R
  2285. JSR Music_Show
    % e) ^6 ^6 C5 w* H- W
  2286. Music_Song_Last_End
    6 X2 O; W7 b. {+ b; L' j$ B& C+ w
  2287. RTS# Y& w9 _1 b% y5 Z3 I% l
  2288. ; h$ \1 J7 A! t' A" Q, i  ^: `1 G
  2289. ;==================================================+ B8 f  C3 ?$ S& j  J0 l/ b/ U2 h
  2290. Music_Song_Next;下一曲. `  A# F5 F. j
  2291. JSR Clear_Last_Track_Name9 m0 ?; ?: S2 G" v5 r2 n/ O
  2292. JSR Disable_Text_Draw6 ?0 s% x% a; j* H5 q4 [
  2293. LDX <Music_Item_Cur. F5 c6 d  ?. j' ]
  2294. JSR Set_Sound_Total9 M& ~6 D/ i3 d8 K" I
  2295. LDA <Music_Cur,X
    9 r7 R* J7 D: {7 s3 u4 M$ l
  2296. CMP Music_Total
    3 R. @, e1 w' Y. ~# {. R: `' d8 @
  2297. BCS Music_Song_Next_Set" ]: J# P5 @4 W
  2298. INC <Music_Cur,X$ ^6 {$ Y- q% o0 b
  2299. Music_Song_Next_Set
    * S$ H, C; C: }$ w/ D
  2300. JSR Sound_Reset_Proc
    - q! W% Y& @1 s9 L/ k' J
  2301. JSR Music_Show/ k3 s5 ~  p* U9 O
  2302. Music_Song_Next_End
    / G1 Z; o2 v& }0 V; F& G" W0 x
  2303. RTS/ l7 V0 u6 g% d6 B& l# x
  2304. 1 r* z% F" }) _) D
  2305. ;==================================================: ^6 t/ I6 ~, u' a9 `4 s
  2306. Change_Select_Item;改变当前选择项& m5 c- N% e' m* D/ K
  2307. ;--------------------------------------------------: d2 H! P% ~6 O$ q( Q. ?9 d
  2308. Change_Select_Stop_Play_Item;停止/播放
    3 i0 U4 s, x0 Z3 M, y& O* S5 g# w9 R- Z
  2309. LDA <Key_Once. P' _0 H. P  d2 H, d
  2310. CMP #$10/ C  Y  G+ |4 r$ A7 J9 P/ `2 ~: l
  2311. BNE Change_Select_Last_Item' O( M+ v6 A' S0 @4 E; p* s
  2312. LDA <Music_Stop_State& }8 I% W' f- U7 m: k9 t
  2313. BNE Change_Select_Play/ e  |$ G" }7 {4 k+ `
  2314. JSR Music_Song_Stop% z) k: g: E3 f4 A
  2315. LDA <Music_Stop_State7 W$ _! I6 m. y2 A% h. W% O: n  ^
  2316. RTS
    - p7 {# t' s6 K5 a7 k( }

  2317. 7 [6 Q& R6 S7 {& F% l, U
  2318. Change_Select_Play
    2 i8 ~" y% e; F
  2319. JSR Music_Song_Play
    , }6 n7 W/ L2 k3 W
  2320. RTS; c  j9 T2 D; W2 H) \+ l4 {/ F
  2321. + V0 r5 N- }8 `: H& T' P
  2322. ;--------------------------------------------------" O: ^0 o( `# t0 ?% y4 B8 Y% Z
  2323. Change_Select_Last_Item;上一个专辑9 I1 @9 }2 Z( Z1 V; J  p: b
  2324. LDA <Text_Disable_Flag1 D  ~" Q5 ]- O3 }! x5 N
  2325. AND #TEXT_DISABLE_ITEM
    7 P7 r( e  P! P0 t
  2326. BNE Change_Select_Item_End
    8 S* P3 `; m& H! r( Z3 `
  2327. LDA <Key_Once
      w! B8 U6 Z0 v& o: b/ N
  2328. CMP #$08
      I- a  [) J5 @
  2329. BNE Change_Select_Next_Item2 ]' G8 a5 v' B  R6 h
  2330. JSR Last_Item! {! f. W4 G" I
  2331. ;--------------------------------------------------
    % g8 t: o8 E) ]7 u3 I3 h
  2332. Change_Select_Next_Item;下一个专辑0 h( J5 l% D- }+ T' d1 u9 E
  2333. LDA <Key_Once- s1 P6 T9 o+ I, {
  2334. CMP #$04
    ( ^9 }  c5 A6 p
  2335. BNE Change_Select_Last_10* j8 r0 J! s( C+ w8 r+ p
  2336. JSR Next_Item+ R' I1 z8 @- H/ J
  2337. LDA <Music_Item_Cur% ]$ H" N9 x/ M" |: q9 o; Y! A& H
  2338. JSR Get_Page_Start_Index, y- E6 X1 Q! Y* _
  2339. ;--------------------------------------------------
    6 P# e8 q7 R% g' q4 ?
  2340. Change_Select_Last_10;前10曲
    % g& H  q5 g/ Z- r: V; C
  2341. LDA <Key_Once7 V, `2 C+ j3 M1 V2 J
  2342. CMP #$40
    . n: _; {$ |2 l7 x" R0 r
  2343. BNE Change_Select_Next_10
    . u3 g- m# }& m. b7 c' _, O, ~
  2344. JSR Music_Song_Last_10
    ( ]- d9 @; o) [6 O3 f8 E! }! U
  2345. ;--------------------------------------------------
    2 l/ k3 Q  \3 C. W$ E+ E
  2346. Change_Select_Next_10;后10曲) h3 ?! G+ A6 i) i
  2347. LDA <Key_Once6 t: e1 F# ~) W
  2348. CMP #$80
    : T& C2 |. A$ ^" ~
  2349. BNE Change_Select_Last9 \+ [7 U4 [5 h6 u- V5 n; Z
  2350. JSR Music_Song_Next_10
    6 @' M% k! N: \1 G
  2351. ;--------------------------------------------------4 k; f' z$ h7 c5 v
  2352. Change_Select_Last;上一曲
    $ J9 Y5 W. G( v
  2353. LDA <Key_Once2 ^6 F# j( F8 Q8 W6 x
  2354. CMP #$02- x/ Z- b; q2 V- {- \2 ]
  2355. BNE Change_Select_Next1 r! z/ ^- [' b- i8 r3 N, M5 u3 ]) P
  2356. JSR Music_Song_Last
    2 i9 V/ Z5 L+ u2 ]  C
  2357. ;--------------------------------------------------/ W/ J. F7 y. U' x: O0 y' t. ?
  2358. Change_Select_Next;下一曲$ T6 H; H  X- Y$ F9 W: w3 a
  2359. LDA <Key_Once
    % s8 [$ A  c) v9 a
  2360. CMP #$01
    " ]* k% k/ z4 v0 V
  2361. BNE Change_Page_Next
    7 D0 }( R& l9 E1 W
  2362. JSR Music_Song_Next
    & R+ Y$ s4 Y3 _/ W
  2363. ;--------------------------------------------------: L, {+ Q( x- G; @! y9 N
  2364. Change_Page_Next;下一页
    & @0 q; y3 u" u5 @3 G' e7 _
  2365. LDA <Key_Once
    , o! m( s: ~6 x, Z7 ]
  2366. CMP #$20
    & I. F  E5 `' J0 |' k' R1 d$ z9 P
  2367. BNE Change_Select_Item_End0 o3 C2 e# Y' q" \' \% U6 ~
  2368. JSR Next_Page( X; v/ W7 t. t( [: p+ i
  2369. ;--------------------------------------------------! g' q# f6 X0 D
  2370. Change_Select_Item_End
    3 I) I6 v# \$ D0 }% L* t
  2371. RTS# v) w! {# R% c! h8 P- Z* v
  2372. 4 u5 w( [* T+ E" c2 L% s
  2373. ;==================================================
    / }8 E2 z9 ]# x" U! I3 o1 l
  2374. Show_Arrow;显示箭头光标
    : m$ g" u  ]/ r2 {
  2375. LDA <Music_Item_Cur& m! t- t+ y5 g2 g. b/ `
  2376. JSR Get_Page_Start_Index
    2 s' @* u- q4 L. R/ K& |
  2377. LDA #$00) t9 H" v' d. Q0 G. h' V
  2378. STA PPU_OAM_ADDR. w) _: t6 Y- U+ [% S( U( h
  2379. LDA <Music_Item_Cur: x. j$ ^: P7 ?& i9 O$ R
  2380. SEC
    # X# V. u  ~5 l1 x4 X
  2381. SBC <Data_Buf7 J3 K) s. z% s* L+ z
  2382. ASL A  a5 v/ H" m  t+ T, S1 p
  2383. ASL A
    4 {" r4 n8 B; D7 o# t
  2384. ASL A
    , N0 G, D5 u6 U5 _2 ?7 p
  2385. ASL A$ L2 d& s% e3 w
  2386. CLC
    $ U9 O( |7 a* I* f0 F! K0 e
  2387. ADC #ARROW_Y_OFFSET- u) q$ @, G' X3 K  p1 q
  2388. STA OAM_TEMP_ADDR + $00
    ( \  c6 C2 R) e) J4 C- H6 Z, }$ f( V
  2389. ;STA PPU_OAM_DATA# |+ P' ]6 |6 r5 l; Z$ Y
  2390. LDA #$1F
    & I2 q, B7 s( ?. q+ E" h
  2391. STA OAM_TEMP_ADDR + $01
    0 f1 K' ?7 X3 O& M$ P7 r$ t7 ^
  2392. ;STA PPU_OAM_DATA5 X  q8 w% b3 o) ?  I: @' ?
  2393. LDA #$00
    ; C" E5 [4 s1 b3 m5 W
  2394. STA OAM_TEMP_ADDR + $02" Y, ~1 v2 P& B9 _. L
  2395. ;STA PPU_OAM_DATA
    . _+ I+ \9 Q$ C7 s- G
  2396. LDA #ARROW_X_OFFSET
      H. s6 |$ ?2 C# K  t" ?' p
  2397. STA OAM_TEMP_ADDR + $03
    ! l1 a0 @7 u" \7 k; o1 [7 C
  2398. ;STA PPU_OAM_DATA$ H, w- l6 B( n# H: y
  2399. RTS
    ! o8 V3 S/ ?* H
  2400. % m: q3 z. r% ^# T, f( `. P; L8 M
  2401. ;--------------------------------------------------
    7 E% ]. x+ v3 M9 `0 ], X3 y
  2402. ;命名表数据' [2 Q& i2 M$ r5 ~) w9 N
  2403. Palette_Attributes
    / c! B; W6 p6 y8 s! L
  2404. .IF SOUND_BAR_SHOW_ENABLE* ~# R# b# [6 C6 i3 D) t" @
  2405. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55, E. {/ W. c' v) x7 a* P2 i% j
  2406. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    , C. Z3 x: Y3 O4 y! S: r
  2407. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75: p+ m) S7 N0 T, y
  2408. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
    8 ?6 L- d$ I5 c4 u
  2409. .ELSE+ O6 U: {: D( u0 [* K$ A! ~6 `: Y
  2410. .DB $00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$55; w8 o( t' v1 d7 H4 N  z% S: d/ T
  2411. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
    ; s4 l# k& [" T% V; b0 D0 y# V
  2412. .DB $55,$F5,$F5,$F5,$F5,$F5,$F5,$55,$55,$FF,$FF,$FF,$FF,$FF,$FF,$75
    2 M' m% @6 u8 S% n+ i) N
  2413. .DB $A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA: g" b$ G. T6 q# C2 s1 o
  2414. .ENDIF
    2 c5 s0 A! L4 n, j; @3 N7 K. J' R1 k

  2415. 0 n8 G9 j5 C/ j' u6 m
  2416. ;--------------------------------------------------6 _9 N. e- a  R# r# c- S
  2417. ;调色板数据
    , M9 q$ N* s( h. V- I8 {# Q
  2418. Palette_Data
    ( k/ j: h# v+ a6 {+ F: C+ K
  2419. .DB $0F,$27,$20,$0F,$0F,$23,$20,$0F,$0F,$21,$20,$0F,$0F,$24,$20,$0F1 S; ^( ?7 G2 Z% K
  2420. .DB $0F,$21,$24,$25,$0F,$24,$20,$0F,$0F,$24,$20,$0F,$0F,$24,$20,$0F
    5 y, {3 I, B: @+ n7 ]
  2421. 1 {& q7 |9 g2 Z
  2422. ;--------------------------------------------------  p% f, P) B$ F4 Y- L7 v
  2423. Static_Text_Data
    5 G6 T) `' @4 g' V
  2424. .WORD Static_Text_Caption_Data
    ' P/ I: o1 s* U. @) a4 Q7 R9 B
  2425. .WORD Static_Text_Author_Data
    : E9 m2 j: m% g% v4 \4 m( A
  2426. .WORD Static_Text_Date_Data
    7 d9 x9 L" T+ b  D
  2427. Static_Text_Data_End
    $ {# T" ?- `( e: I

  2428. * L2 s; @% J" F) F. m5 C+ r
  2429. ;--------------------------------------------------7 z) y4 I, i& e# o4 x+ S
  2430. Static_Text_Pos# j% v/ x+ R; t; r4 k
  2431. .DB HIGH(Caption_Text_Pos),LOW(Caption_Text_Pos)
    4 Q3 D6 u9 N6 ]6 K
  2432. .DB HIGH(Author_Text_Pos),LOW(Author_Text_Pos)
    4 T$ o9 y, Y) p* ^+ W! B  Z; L
  2433. .DB HIGH(Date_Text_Pos),LOW(Date_Text_Pos)  f7 R- ^( d7 r8 A
  2434. Static_Text_Pos_End# z& a+ ?5 ~- A3 K8 [

  2435. / ~) W3 T6 V( U, {- ^
  2436. ;--------------------------------------------------
    - L2 V9 g" @! }3 _7 `
  2437. Music_State_Stop
    7 H- J  ]4 z5 m7 j7 c( J0 Y
  2438. .IF SOUND_BAR_SHOW_ENABLE
    / ?/ G, F3 A( ?, V& ]% D0 T
  2439. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    ! z2 h& }. d" n% E+ S
  2440. ELSE: R' ?' H7 E% W0 T+ w3 l! H  ^5 a
  2441. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"STOPPED",$00
    ) r% p) G4 ]; h/ \
  2442. .ENDIF3 _+ h5 W  p. A  d% m
  2443. Music_State_Play6 O  e. v) U* t( q# V. ]
  2444. .DB PPU_MODE_CNT_LINE,HIGH(Play_State_Pos),LOW(Play_State_Pos),$07,"PLAYING",$00
    / i/ @7 \6 ~- @6 H
  2445. 9 ^0 i4 J8 [% t' p0 L* b! A9 z$ y
  2446. ;--------------------------------------------------
    : u5 `1 _% l: A6 e
  2447. Sound_Bar_Text_Data;声音类型文本7 J- M8 p; s7 m$ |4 L
  2448. .DB PPU_MODE_CNT_LINE,HIGH(Sound_Track_Pos),LOW(Sound_Track_Pos),$04,"SQ1-"+ H8 ?2 ~. X. Z2 M, w
  2449. .DB PPU_MODE_CNT_LINE_NEXT,$04,"SQ2-"
    : N5 ^( O8 x% m2 a5 z- d( X
  2450. .DB PPU_MODE_CNT_LINE_NEXT,$04,"TRI-"4 W: O" K: S2 t: O
  2451. .DB PPU_MODE_CNT_LINE_NEXT,$04,"NOI-"
    ( w5 U( g" L4 c! J" D; P
  2452. .DB PPU_MODE_CNT_LINE_NEXT,$04,"DMC-",$00
    $ y% f" b  q# h: L5 C  k7 I

  2453. 5 M0 H: n3 Z6 z* }# F
  2454. .IF Track_Name_Pos/ H9 N& M7 h- N4 ]

  2455. 1 A! z( S# d( A: P
  2456. ;--------------------------------------------------: a* R8 n1 \4 e7 K1 t# X8 H
  2457. Track_Name_Addr_00;曲目名地址索引
    + z! k) |& E7 {- i% T
  2458. .WORD Trackr_00_01
    7 l" b8 ^7 ?+ z" V" p" c2 S5 Z
  2459. : ^" n+ r8 B8 ^$ J7 m' q5 ~
  2460. Trackr_00_01 .DB 15,"RAF WORLD BGM 1"
    ' D- [/ R$ D% }1 T" X! Y% ]
  2461. Trackr_00_02 .DB 15,"RAF WORLD BGM 2"
    8 s1 t6 \  Z+ L; r8 H6 z
  2462. % P, P  K4 U( w# O$ V  d
  2463. ;--------------------------------------------------  F0 m& P3 L7 `1 D9 I* a. J
  2464. Track_Name_Addr_01;曲目名地址索引. [4 U0 O! j; G; s$ q7 K
  2465. .WORD Trackr_01_01
    ) D0 b: d  S  H. r2 J2 z! B
  2466. + D2 j9 Z$ t2 O
  2467. ;==================================================
    ! F- V' ~  g0 F* W- g' q/ ^5 T9 J
  2468. Trackr_01_01 .DB 19,"FINAL MISSION BGM 1". w$ \! j7 d4 U1 m
  2469. Trackr_01_02 .DB 19,"FINAL MISSION BGM 2"
    # `# R1 z) A# [( T2 H6 M* E

  2470. & i! V, s8 g4 V- U
  2471. ;==================================================) n7 k$ N* I5 l  J1 Y
  2472. Track_Name_Addr_Port            ;曲目名地址间接索引. ^, }( Y$ @7 T9 o& L
  2473. .WORD Track_Name_Addr_00
    7 H% t6 |3 ?3 |; C6 c
  2474. .WORD Track_Name_Addr_012 w- o+ \) {" c9 c! C
  2475. .WORD Track_Name_Addr_01
    % c6 s  O' _4 n* n' k8 L  ]  L0 r
  2476.   R6 ]( A2 f+ O" E0 o/ ]9 j" \
  2477. .ENDIF
    ) Z( g2 x0 ^/ E$ w) `& }  B) f

  2478. $ i& }* ]; |9 S# J2 H. l
  2479. ;--------------------------------------------------/ r" L+ `$ I, w0 g
  2480. Static_Text_Caption_Data;静态文本数据
    + `. n: R3 _) i% P/ \' I. |
  2481. .DB 16! [, S' e$ l2 w% g3 v
  2482. .DB "FC MUSIC 12 IN 1"
    8 D! c( v; \& p7 u
  2483. Static_Text_Author_Data( G( m0 Z) Y7 t4 Q
  2484. .DB 25
      p0 t' V8 ]; u8 q
  2485. .DB "EXTRACTED BY FLAMECYCLONE"
    4 P) |2 P- U& k8 H3 x- @3 k9 S5 |* I
  2486. Static_Text_Date_Data  {+ C; l6 ^) D& d7 q2 z" K
  2487. .DB 10
    3 j" Y& B/ E7 p4 g2 o+ ^) i. \! g" X
  2488. .DB "2023.07.23"' _& U* w4 K: K: [& D$ C
  2489. ( {( X# R3 i# @+ h
  2490. ;==================================================$ i: r% j' r9 R% P& X5 c+ Y
  2491. Music_Collection_Name               ;专辑名间接索引" I" M4 C' K/ p9 L% k
  2492. .DW Music_Collection_Name_00
    6 B4 i+ A: J2 t' v$ ^2 d
  2493. .DW Music_Collection_Name_01
    0 C# w$ I) d, b+ H
  2494. .DW Music_Collection_Name_02
    . y4 o! r+ D7 j+ Y
  2495. .DW Music_Collection_Name_03* g1 K0 f+ E: O8 w6 B- `
  2496. .DW Music_Collection_Name_04
    . V3 G& c* |) i) W, M
  2497. .DW Music_Collection_Name_05
      h0 r: v) J) k4 B
  2498. .DW Music_Collection_Name_06
    * H6 P3 y- K9 s( ]& W; d3 H
  2499. .DW Music_Collection_Name_07
    ( o2 i/ Z9 r- U6 M9 n2 Y, Q
  2500. .DW Music_Collection_Name_08
    7 ^. y0 n  M, i* g( e
  2501. .DW Music_Collection_Name_09
    % d$ q& P/ l1 R  z
  2502. .DW Music_Collection_Name_107 C0 d0 l# f; |+ g$ d6 b
  2503. .DW Music_Collection_Name_11
    ' M. I" p/ k9 M% }9 G( I0 \/ [
  2504. 6 B: c; g1 t/ }" Y
  2505. ;==================================================
    4 R$ i+ V$ I. a7 a7 j
  2506. Music_Collection_Name_00            ;专辑名文本数据
    & T+ K$ p9 M8 W+ `, @5 K
  2507. .DB 11,"1.RAF WORLD"
    . {# a6 }4 m! a3 D; F- A
  2508. Music_Collection_Name_010 V. d0 l7 F+ K: W- E
  2509. .DB 15,"2.FINAL MISSION"
    + x9 B! a$ @5 k. F
  2510. Music_Collection_Name_02
    1 M/ C  H. j7 ~) T# Z
  2511. .DB 06,"3.KAGE"% d( \+ U: S) O4 A( M
  2512. Music_Collection_Name_038 g- ~& @6 F8 o+ P* E
  2513. .DB 16,"4.DOUBLE DRAGON"3 `" P: V7 m0 ]& n4 m* U
  2514. Music_Collection_Name_04
    2 P+ w$ j  J" e6 f
  2515. .DB 17,"5.DOUBLE DRAGON 2"
    , O) r6 p3 U2 M" Q
  2516. Music_Collection_Name_05
    : @) W) m3 p+ n/ }, h$ Q
  2517. .DB 17,"6.DOUBLE DRAGON 3"
    7 h$ }; c& b8 m) C' ~
  2518. Music_Collection_Name_06
    * j0 C8 x6 l/ e" q1 A+ v; Q
  2519. .DB 09,"7.ROCKMAN"8 b. r1 w# v& ~3 d
  2520. Music_Collection_Name_07( r4 Z/ [; `* ?9 q. `
  2521. .DB 12,"8.ROCKMAN 2"- y% g, z& N% f1 p0 t( U/ E; q5 [6 l
  2522. Music_Collection_Name_08
    3 H( a9 Q6 g- O8 q# X
  2523. .DB 12,"9.ROCKMAN 3"
    3 {% O3 k$ r, _/ y+ p" |% C  m
  2524. Music_Collection_Name_09
    4 E( m8 U% x" i9 Z* ]/ Z$ W
  2525. .DB 12,"10.ROCKMAN 4"
    ; Y% ^6 `6 e# ?0 z: C+ J
  2526. Music_Collection_Name_10
    5 o5 @8 ~% o) B; r
  2527. .DB 12,"11.ROCKMAN 5"
    , Q% H9 S" ]+ Z2 P& }1 x# k
  2528. Music_Collection_Name_11
    : S) E7 X- Y: a; [0 p
  2529. .DB 12,"12.ROCKMAN 6"; |' T! M  [# J% N2 b  h. D9 G
  2530. 9 E2 H+ H2 c  o" r
  2531. ;==================================================
      h" D$ C. Y' S" s' N# l* e: M
  2532. Track_Name_Addr_Flag                ;显示曲目名标记/ m& r7 }3 c9 }/ Q, f0 }0 {( x3 g
  2533. .DB 0,0,0,0,0,0,0,0,0,0,0,0
    # T: V. l( Y, V. E2 z( v1 a9 }9 h

  2534. * L. `# R. V  I! _
  2535. ;==================================================4 C0 I/ k4 S! S6 v$ u+ w
  2536. Item_Pos_Data                         ;光标箭头位置
    ( S! J& s2 C7 T' j+ ?
  2537. .WORD ITEM_SHOW_POS
    3 v& ?# d9 s1 M- E% o# Z( G! P6 \
  2538. .WORD ITEM_SHOW_POS + $0040
    ' O; y; f9 L+ z
  2539. .WORD ITEM_SHOW_POS + $00807 E1 W- i( V& {+ B
  2540. .WORD ITEM_SHOW_POS + $00C06 I) F1 G# J+ q" _
  2541. .WORD ITEM_SHOW_POS + $01008 ?" r: q+ A  D+ Z$ e
  2542. .WORD ITEM_SHOW_POS + $0140
    : ~3 A$ u* D4 a2 U/ e, Q! t/ g

  2543. 8 M1 Q) x4 s- a, N- ]7 r! O
  2544. ;==================================================# |# k+ A& o% p3 I0 P3 |1 a
  2545. Sound_Init_Port                 ;音乐初始化入口地址, F4 O- c0 ]- m$ d+ ], _& T9 f# s
  2546. .DW $BFC8
    ) ]1 h) j7 J2 J* A6 j3 g8 K- v
  2547. .DW $D7F00 f8 `/ i1 `; u: M! b
  2548. .DW $9FC0
    1 H/ C" H7 z$ Y+ Z" ~
  2549. .DW $BF70
    : N9 e5 z; ^4 ~+ c
  2550. .DW $8003
      e  b, Z. V: v' T/ T% e$ R
  2551. .DW $BF30
    ( X0 f$ \8 C7 a' \. ]
  2552. .DW $9003
    : B$ r) q1 Y7 j  P! Q9 G) q
  2553. .DW $8003
    6 x; ~$ b3 E- @; p8 @+ F
  2554. .DW $80032 s/ F& ~/ `- t1 u( V8 h& j: s
  2555. .DW $8003
    6 {! R1 t) J4 Z; j9 [: _
  2556. .DW $8003* l' K1 N; h1 l4 ]$ U8 ^8 Q
  2557. .DW $8003: p' I' I7 B5 @5 _- z3 y* |+ J
  2558. + a$ ^0 G3 T0 v
  2559. ;==================================================4 s- W& d8 w4 L9 x" J, H
  2560. Sound_Play_Port                   ;音乐播放入口地址
    + S+ Y- `" K3 M8 k( x
  2561. .DW $8000
    + y* l) O2 U# R; Q- s
  2562. .DW $8001
    7 h: R& s& N6 N7 y# I, _
  2563. .DW $A000
    * p1 J$ m0 ~- {/ R1 w+ Q5 d! B3 u
  2564. .DW $8003
    0 D2 r: F# f& b" }
  2565. .DW $8000
    " T; l, T% d. q+ v+ ^
  2566. .DW $8003
    # }6 O; B1 a: A
  2567. .DW $90005 ^$ @3 g9 B1 N. x) ]
  2568. .DW $8000
      \( V$ o9 i; ~8 z) T
  2569. .DW $80004 |1 y! v5 Q" V( j" s8 Q/ M/ ]
  2570. .DW $8000
    : b/ [( @, F6 m
  2571. .DW $8000& J( p- w7 [. t
  2572. .DW $8000  `/ v: C1 m9 V, W2 E  P0 Y+ [; A7 Y

  2573. & n# x% Y- M9 X+ b
  2574. ;==================================================
    8 M; m- b: T1 V
  2575. Sound_Reset_Port                  ;音乐重置入口地址
    & l* o+ @. ]' D* B& V) Z/ w2 K2 @
  2576. .DW $0000
    - C3 Y5 v/ o* S6 }4 P2 F
  2577. .DW $0000; D  o" ?$ n7 n
  2578. .DW $0000
    & {$ o7 l  }, a0 \
  2579. .DW $0000' e4 `+ S( \, Q; d) e9 g! ?
  2580. .DW $0000
    9 K7 p% X6 t! t; \
  2581. .DW $0000/ Y2 B, o( q% t/ _
  2582. .DW $0000
    : X+ k, {: _( |
  2583. .DW $0000
    ; ]) K- F: d, Y7 u$ t! {
  2584. .DW $0000% L; N! r: S* G% A0 b# d* t
  2585. .DW $0000
    ! F4 c0 o* c% |2 l' e- \1 r. U) D
  2586. .DW $0000) v1 Q0 i7 Z: S" ~
  2587. .DW $0000
    ' u  h* U, F# s

  2588. " _* O7 A- O% v0 V( @! N
  2589. ;==================================================. ~6 z; U# r2 i0 R
  2590. Sound_Total_Port                          ;曲目总数7 O+ s& Y. G/ w  S0 T7 _
  2591. .DB 382 v0 F- L! V+ E8 F+ |! A
  2592. .DB 339 O: l& ^6 {, r
  2593. .DB 49' C. S3 ]; G/ U( M" s  @! @7 s7 V
  2594. .DB 41
    ( d- U3 C* f9 X
  2595. .DB 830 {; @( @' `: R) P, ~( k+ P, d4 a
  2596. .DB 70
    9 i$ e0 p8 ?3 Z
  2597. .DB 50( W. q* q# I. v/ ~* D% e
  2598. .DB 671 G6 Z* M' `" V" Y! N$ T
  2599. .DB 570 I* n# v0 H" g
  2600. .DB 71) H. Z" V0 c' E4 i& s
  2601. .DB 76
    ; O* g! L9 A9 E2 j
  2602. .DB 102
    " M, T5 R& k. P3 l

  2603. 7 j$ ?+ q# x- h, g. R
  2604. ;==================================================4 f) q- {. G/ \8 n1 i6 Z9 D0 L
  2605. Sound_Start_Port                      ;起始播放曲目
    $ i2 l2 N' P$ n) N/ v
  2606. .DB 00
    / j3 J1 X1 @* M# I; y7 i0 Y; e5 L
  2607. .DB 006 R+ T! u3 z/ r+ O( K* L" M
  2608. .DB 00* j/ t+ Y" ]; k0 F, c) Q! e6 K+ \- k
  2609. .DB 00
    # j6 i  n: F" @# d2 Z
  2610. .DB 00
    ( k) l3 Z, I; y3 c1 e
  2611. .DB 00
    6 H& j  T6 |$ M
  2612. .DB 00: R8 g* b" T% H! G3 c( Z
  2613. .DB 00
      s" ^. j3 o6 L, v: A7 B
  2614. .DB 00, ~+ @5 ?# Y$ j" ^
  2615. .DB 00
    7 r& ]; ~( |) w
  2616. .DB 00
    * g7 ?, e$ f: ^, @) V
  2617. .DB 00/ s. A. z; w* V; c! S; Q6 o8 B  [
  2618. ! {3 b; f5 m4 s5 u
  2619. ;==================================================# Q- q$ G0 w* w3 d* k, R
  2620. Sound_Bank_8000                      ;专辑bank_8000& ?7 Q. U! V! |& ?% l0 [
  2621. .DB $10
    * b" |* P  }6 ^% a# [
  2622. .DB $122 P; A9 @! s. Q* m' b, Z! o% [
  2623. .DB $14  J. w  u: n0 y4 g' B# s/ _
  2624. .DB $16
    3 p" H" Y3 \) Q, y0 U7 b, H0 T
  2625. .DB $18% V0 H* j8 K: P3 n, A
  2626. .DB $1A+ v4 x$ R5 X* Z' F0 R
  2627. : Z# g+ j$ H9 P- c8 }3 b  t
  2628. .DB $00
    5 T  z& u6 y# x6 \/ l& _
  2629. .DB $024 G7 M! W( C% [" L
  2630. .DB $0D
    % P- a( ^& b3 i7 T% p  h6 h
  2631. .DB $04
    " S. i( X, I7 E" s( h- U4 _& ]( J
  2632. .DB $07
    - h7 V# j; ^$ S
  2633. .DB $0A0 K9 R& E. e5 u* @

  2634. ( T* f* S3 X; y4 a5 b! F% Q9 Q  J
  2635. 2 H8 t9 i# M1 F5 P9 S# U
  2636. ;==================================================
    ' R  }/ i8 [$ G( r# U* Y4 p! c  a. O
  2637. Sound_Bank_A000                      ;专辑bank_A000
    ) S) B! i: m" z; @
  2638. .DB $11* T) @# d$ `3 w, ?
  2639. .DB $13
    & f+ E$ K3 }7 F& {! C
  2640. .DB $157 `' C! j- L  k- O$ h2 f4 @* j; Z
  2641. .DB $17, n8 m9 S" O& k
  2642. .DB $19
    7 U- |3 c1 }: L5 N
  2643. .DB $1B
    ; R. ~( r: ^+ U8 I' d
  2644. 0 b8 N" x2 }9 i' h
  2645. .DB $01
    5 o8 Y6 `1 N; D& a) G
  2646. .DB $03
    4 L. v8 |6 s+ a
  2647. .DB $0E
      {! i" q' D8 t! F; A: I
  2648. .DB $05' G6 ?% ^7 U: U! H6 J& {/ K5 O
  2649. .DB $08
    " ?- c* V2 i+ S! N# C
  2650. .DB $0B
    9 M( T! ^9 N! F& F/ U7 y8 b
  2651. . \7 z3 l; t* `& ?& E

  2652. 4 p7 Q3 }3 n7 z6 |3 [' B5 i. d* W# ~
  2653. ;==================================================
    $ d) X6 _9 L! w8 g6 [* ?- M* y" M
  2654. .BANK RESET_BANK & BANK_DATA_MASK& T& A1 |. `; h
  2655. .ORG RESET_ADDR1 V  {: p8 r5 O' m

  2656. - U4 b! p$ L0 S$ o! q. ^
  2657. ;==================================================
    ( l, v0 M' I( D% e; o- C
  2658. Switch_Bank_8000;切换bank到8000-9FFF( s* V$ w7 C; C* O; k
  2659. PHA3 m( N# H" [1 @, G' O
  2660. LDA #$06( }2 G: F! V% ?. R! `1 h. \
  2661. STA MMC3_BANK_CTRL: f/ }: m, K9 D
  2662. PLA. p+ r& L' }8 n5 p9 p, V
  2663. STA MMC3_BANK_DATA( U0 J0 F9 {$ I) a: C' Z( b4 b8 l  y
  2664. RTS) D0 ^. j6 i) o7 O7 T

  2665. 8 o- J' {3 k* e, D
  2666. ;==================================================
    ) C4 F- x# [( h0 u6 c2 G; p
  2667. Switch_Bank_A000;切换bank到A000-BFFF* n5 }5 L+ S0 \$ M1 }( }! o
  2668. PHA
    # {+ W$ m6 B1 s
  2669. LDA #$07
    ; i0 `! J$ f) |- _
  2670. STA MMC3_BANK_CTRL5 l0 U, r6 M2 c. O
  2671. PLA
    , A$ v3 A7 m4 y1 C9 f
  2672. STA MMC3_BANK_DATA% \& }! e- d- v, u# V1 T, Y- |
  2673. RTS
    % y4 ]9 U4 s. t' A# `* ]( M

  2674. 9 i6 G# I$ o+ j0 a% b
  2675. ;==================================================' [% W' n$ h7 I6 q3 l$ Q$ W  _. C
  2676. Switch_Main_Bank;切到主程序bank1 q( S* p$ f6 v5 Q& ^
  2677. LDA #PROGRAM_BANK & BANK_DATA_MASK
    1 J" d$ _$ P/ e1 \/ m' C2 J6 t
  2678. JSR Switch_Bank_8000   ;设置$8000地址bank1 q% V( N5 t. ]/ b$ C: f
  2679. RTS
    ) [- i" ^  {3 L

  2680. % ?- p; v5 g  k' l! N  ]
  2681. ;==================================================: q3 N5 P4 B' g9 \
  2682. Sound_Reset;音乐重设(如果有的话)
    0 p# W- B. d. X$ x
  2683. JSR Switch_Music_Bank  ;切换到音乐bank
    6 z$ x2 p% E& X$ q# U
  2684. JSR JSR_Addr_Op        ;执行音乐重置& o. P) M$ @  v
  2685. JSR Switch_Main_Bank   ;切回主程序3 z) }5 ^+ }. ^' V( @8 K
  2686. RTS
    3 G" [+ |/ ~* D5 V3 c/ P+ O
  2687. 7 q# v+ X1 ~" I" c' V
  2688. ;==================================================1 }, R0 U# `" J& a) l% R, a, |( E
  2689. Switch_Music_Bank;切换音乐bank% }8 f0 W3 V7 E/ w; J
  2690. JSR Init_Sound_Bank    ;拿到音乐bank号5 e: |& W* e6 I- I# M3 P
  2691. LDA <Music_Bank_80006 `& q8 w+ d3 ?; t$ ^
  2692. JSR Switch_Bank_8000   ;设置$8000地址bank
    1 V4 i$ S  @& a
  2693. LDA <Music_Bank_A000; [* F9 f0 S( T5 J; N
  2694. JSR Switch_Bank_A000   ;设置$A000地址bank
    " ~) P8 V9 T9 A5 u4 V/ n
  2695. RTS
    & e7 w6 m- h( f  @6 W1 E& H0 z8 T

  2696. " |* N: O! I/ f3 ]; V3 w0 c4 w
  2697. ;==================================================. w+ F. y: k. n: S- ~
  2698. Sound_Init;音乐初始化  k% i' t; q" n
  2699. PHA
    2 K( ~; c) @0 ?( e' |" `
  2700. JSR Switch_Music_Bank  ;切换到音乐bank
    2 d' O0 w$ M7 m; k
  2701. PLA
    ! ^5 P' x! m' n* u6 T. m" O
  2702. JSR JSR_Addr_Op        ;执行音乐初始化" i  E& f! {: C! z/ M( m. M2 [
  2703. JSR Switch_Main_Bank   ;切回主程序0 Y6 u; {. B. ?  S$ v; B; {
  2704. RTS
    6 D1 v' S2 H, ]+ |

  2705. 4 Q7 D0 x/ d5 q7 I6 W. S5 T8 T2 X3 d
  2706. ;==================================================& w9 Y1 d( H5 y0 _2 k6 z
  2707. Sound_Play;音乐播放
    8 N2 K& J( R3 g3 E/ W
  2708. JSR Switch_Music_Bank  ;切换到音乐bank
      @4 i0 u* H/ g$ ?* F- E) k7 {! a
  2709. JSR JSR_Addr_Op        ;执行音乐播放
    ! l, ^0 b: Q. }% h8 i+ @7 {+ t
  2710. JSR Switch_Main_Bank   ;切回主程序
    1 v9 D; @5 }) z" p! L2 O
  2711. RTS  G. q! E3 {6 ]# S

  2712. ( j5 A  Z$ l7 E$ j, @1 I% _
  2713. ;==================================================  h: I" n. A& [( ^" U9 i0 k
  2714. MainLoop;死循环! d0 [8 ]; B. y0 P+ ?0 M% r
  2715. JMP MainLoop7 d/ S- r) y6 k

  2716. 9 ~# |' x: S0 H  n0 e
  2717. IRQ_SUBPROCESS_JMP = 0! N1 {  z( ^4 w: P1 U

  2718.   ]5 M! A  Q* D' E
  2719. .IF IRQ_SUBPROCESS_JMP4 P) A" @8 D. E! d5 c4 ?( Q, C  {
  2720. ;==================================================
    + n# h  u- ~2 [
  2721. IRQ_Process_0;IRQ处理过程0+ p4 U9 v' }2 @# T5 N/ O
  2722. 3 O# r) N* v6 t. f! k4 }1 `$ l
  2723. ;15条扫描线后触发IRQ# p5 f' a8 U5 l/ f8 D
  2724. LDA #15+ ^) H# ~% ]* `1 i
  2725. STA MMC3_IRQ_LATCH
    9 T% [7 d+ q+ v6 B  e. S
  2726. 8 p; \* Y9 q, z* I" B2 S
  2727. ;设置屏幕滚动
    , w( J7 [6 `& s& h4 m: ]8 x
  2728. LDA <Scroll_H# V' L4 ]) h3 l4 R( h0 @- s' h' Q- X0 l
  2729. STA PPU_SCROLL/ Q0 U: N' P( a
  2730. STA PPU_SCROLL
    6 d4 ^8 e* m" `9 g5 {% C( o

  2731. 8 ^$ f& ~! E. r' J8 v
  2732. IRQ_Process_0_End" I; m4 L; T$ P/ P+ r1 f/ p
  2733. INC <IRQ_Process_Index
    3 Z8 \5 v, M0 h$ a  A; @9 s
  2734. JMP IrqProgramEnd
    ' o$ G, b8 k5 c' A' m# H, K

  2735. 0 j) V+ b8 l, G5 V  `# Q( u# _
  2736. ;==================================================" H  {9 |7 v' b+ b5 V1 W, @- V
  2737. IRQ_Process_1;IRQ处理过程1
    * m6 a# U: t: J- i& l1 p) V; R

  2738. 4 O5 e4 i3 F- v0 @
  2739. LDA #55& Z9 m6 `7 H+ {
  2740. STA MMC3_IRQ_LATCH
    . z3 i3 r/ Z. m3 R8 C
  2741. 9 S  q7 S& X7 C1 T
  2742. ;设置屏幕滚动. k; E5 [+ L0 |  T1 I0 b
  2743. LDA #$00
    ) Y6 V3 f4 L+ z0 g$ w8 C
  2744. STA PPU_SCROLL& i! T! ^! J9 f" k2 g4 u+ _
  2745. STA PPU_SCROLL
    7 Y: D/ C; k2 t1 m0 U. a7 w

  2746. ( x" N0 T. L% Z) B1 S  O4 {9 i
  2747. INC <IRQ_Process_Index# X( {0 m; u! o, b7 B& D. [' ~
  2748. JMP IrqProgramEnd7 a6 E' V" |6 ]. M

  2749. " K% s" U6 k1 x/ e- {
  2750. ;==================================================
    2 n7 ~; h; k" _: t9 m" D7 W
  2751. IRQ_Process_2;IRQ处理过程2
    % [/ n' i& \0 \) E3 \
  2752. 4 f, l# j: ?& F6 b2 D8 m9 I
  2753. LDA #15
    ' L% K. M1 Q5 ?
  2754. STA MMC3_IRQ_LATCH
    ( W) ?* K2 A) b0 Z* R

  2755. 3 _0 F% o3 _( `( Y$ r
  2756. ;设置屏幕滚动4 U+ o3 u8 c! V! v; }2 ^  O7 a
  2757. LDA #$00
    / g! s. k5 y/ {4 W: R
  2758. SEC- l5 Y# Q; |. c$ M9 z
  2759. SBC <Scroll_H
    9 s# t. h  G3 q  M! y6 h+ _
  2760. STA PPU_SCROLL
    ' _% [: r" T. w3 V1 z& B. r2 d
  2761. STA PPU_SCROLL
    / p" t# a  V9 @6 |( J; x, w

  2762. + ?. i# N8 H3 n  K7 H9 F6 H: v; |
  2763. INC <IRQ_Process_Index- V  I/ @! R, d; K" [- U2 a
  2764. JMP IrqProgramEnd
    0 w& n1 G( k1 r+ v2 l
  2765. * @. Z. m5 o! S
  2766. ;==================================================
    7 l# r8 u; i# a+ B$ a% _
  2767. IRQ_Process_3;IRQ处理过程3
    1 d* L! h/ h- I% N: E. _) l( J

  2768. ! V. u1 g+ @4 E) B3 d
  2769. ;设置屏幕滚动( p! [5 G) n) B6 r
  2770. LDA <Scroll_H
    : V1 N4 e( ?: B3 c+ a
  2771. STA PPU_SCROLL: R  j( l) q9 Y( M
  2772. STA PPU_SCROLL2 L7 G3 s0 ]- \: _

  2773. 2 y% G: Z$ y$ @8 J2 A3 k
  2774. ;禁用IRQ& t& t( S, j. u8 q+ Z* h
  2775. STA MMC3_IRQ_DISABLE' u' f) x* k; Y/ N+ r
  2776. JMP IrqProgramEnd5 W3 l8 b. z% q( }" F# F+ m  S; Q

  2777. . n0 K& z# C% |8 I9 l
  2778. IrqProcessAddr9 W; `/ U" ?" T3 \
  2779. .DW IRQ_Process_0,IRQ_Process_1,IRQ_Process_2,IRQ_Process_3
    # i8 I$ @/ r) D9 a

  2780. ' D8 b$ E  `+ j' Z* B8 o9 M+ R' V
  2781. .ENDIF
    1 z0 }4 H3 H- q' p. O% E

  2782. 1 x4 P1 j0 A& U. d
  2783. ;==================================================
    7 [3 a! O0 }; C$ _. n& V8 q
  2784. ;IRQ滚动模式常量
    4 ?: d- k7 {2 L  S, C* y6 _' T
  2785. IRQ_SCROLL_MODE_ZERO    =   0       ;不滚动: k- J8 k  ~' y
  2786. IRQ_SCROLL_MODE_LEFT    =   1       ;向左滚动
    : {, B( q4 \% m4 K; {
  2787. IRQ_SCROLL_MODE_RIGHT   =   2       ;向右滚动
    % q6 d1 a8 {, M; K

  2788. & x9 z* u: c- r% ^* U
  2789. ;IRQ扫描线数据
    ; K) x+ B3 B+ W* Z( r) Y/ @
  2790. IRQ_Scanline_Data
    3 W3 l) s, u& k) k' f
  2791. .DB 8
    0 O% R! Y# i, W0 u) {" D
  2792. .DB 54( w0 I2 q# X' \. _% X! r3 n
  2793. .DB 8/ [4 U' A0 D1 b* e+ A5 v
  2794. .DB 00 ;关闭IRQ
    8 }& k. f4 K$ }% Z$ H2 Z* L

  2795. ( s; G4 B3 H! D4 y! E) w
  2796. ;IRQ滚动控制模式
    1 E" W" L" _/ g: C9 D  v# o
  2797. IRQ_Scanline_Mode
    , n( [- T/ h0 N; g& _. L
  2798. .DB IRQ_SCROLL_MODE_ZERO" g7 @  r1 v' h) d/ Y
  2799. .DB IRQ_SCROLL_MODE_ZERO% v2 c3 b/ ^5 D1 c0 b
  2800. .DB IRQ_SCROLL_MODE_RIGHT
      T4 c2 f5 n! {1 G  u
  2801. .DB IRQ_SCROLL_MODE_LEFT9 c1 j& c7 M4 R% y7 }6 U
  2802. : ^  C* I9 I& X* O4 ]0 l
  2803. ;==================================================
    6 J; g' B; O3 s+ w/ ~! O' i; V" C
  2804. ;IRQ处理  r* L5 @; f/ {+ d  J5 Y
  2805. IRQ_Process
    . U: r3 k7 r4 R* {# t( M$ _* L
  2806. LDX <IRQ_Process_Index
    % ]0 H" Y& n2 ]( n( Z1 v
  2807. LDA IRQ_Scanline_Data,X
    ) V2 d# A4 E( Y
  2808. BNE IRQ_Process_Latch
    8 F1 l1 @) ?! p; {2 F2 {) @" S
  2809. IRQ_Process_Disable;禁用IRQ$ }' o: J% R7 `
  2810. STA MMC3_IRQ_DISABLE4 d9 D7 N1 C0 j$ c
  2811. STA IRQ_Process_Index/ L" J8 l8 Q) ^8 p3 L7 W& E# w
  2812. BEQ IRQ_Process_Scroll
    ; t/ U- h& X2 ~! G0 }
  2813. IRQ_Process_Latch;设置下次 IRQ 触发扫描线
    6 y! ?5 q  m* k  P6 R2 M7 Q
  2814. STA MMC3_IRQ_LATCH
    0 E7 W4 r; d2 g2 @* O
  2815. INC <IRQ_Process_Index4 D( e* t7 D- P7 d
  2816. IRQ_Process_Scroll;IRQ滚动控制3 i- j# S5 |5 ?4 f0 k
  2817. LDA IRQ_Scanline_Mode,X
    3 b9 S: W9 {$ G* |( O+ M3 {7 u
  2818. CMP #IRQ_SCROLL_MODE_LEFT) H3 n; ?' }" q. H2 D
  2819. BEQ IRQ_Process_Scroll_Left
    2 X. w" ~% D. z" m( @
  2820. CMP #IRQ_SCROLL_MODE_RIGHT$ v1 X8 E" m: j; Z2 J  w5 ?! x
  2821. BEQ IRQ_Process_Scroll_Right0 R3 O& z8 G$ h) Q$ y
  2822. IRQ_Process_Scroll_Zero;不滚动# T- E! t, V* ?' P5 G' x
  2823. LDA #$00
    9 K" d" F0 {6 C& r3 ]  a. Y, R
  2824. STA PPU_SCROLL* {* J) O4 a+ |
  2825. STA PPU_SCROLL1 W$ ?2 H8 L5 z5 q# J" l
  2826. RTS
    ( u  F$ |1 N4 N
  2827. IRQ_Process_Scroll_Left;向左滚动. e0 i. l0 p6 @
  2828. LDA <Scroll_H
    2 W3 A3 C( ]& e
  2829. STA PPU_SCROLL3 w1 P3 h) J# d+ i4 G
  2830. STA PPU_SCROLL% C6 q& M$ o7 L( O/ k! X% D# R
  2831. RTS9 E2 v) g- c* V0 m' G! A9 l7 B
  2832. IRQ_Process_Scroll_Right;向右滚动
    8 p( M+ F: N4 X! X1 P7 w
  2833. LDA #$00
    + p4 ^( W& S( \3 p# ?
  2834. SEC* ~+ ]% v# _  ^" ~2 H: B" [1 I
  2835. SBC <Scroll_H
    - [7 W# I: X  ?) H$ `4 ?
  2836. STA PPU_SCROLL
    8 O2 J' J- Q  ?* t6 `
  2837. STA PPU_SCROLL3 z  `- x9 S2 \' s4 i! k- u  U) f
  2838. RTS% |; x% X5 N/ A8 k9 S8 T# x3 b6 G
  2839. ) X% m4 b& Y! L
  2840. ;==================================================5 ^" Z; N% ^6 L# r" E
  2841. NmiProgram;Nmi中断处理* i; }: y+ p0 F* r# V5 u# E
  2842. PHA
    0 }* V4 p3 K0 T, {1 j9 B7 H
  2843. TXA3 d9 _, y6 r9 D
  2844. PHA
    6 [8 m. {% C& A- B
  2845. TYA
    ) {0 U3 ]* I6 E. ^0 z( m
  2846. PHA! M  Q+ G1 o8 x
  2847. & A7 N7 p% l4 I5 I- A& m1 N
  2848. ;读取清除Vblank标志, 防止重复进入: t- I" X/ \# s* F
  2849. BIT PPU_STATUS
      n8 L1 b, Y. e: q

  2850. 9 Z$ q& V, b) P' c
  2851. ;切换主程序bank% y3 E, U$ U9 m$ z5 `
  2852. JSR Switch_Main_Bank& ]  b$ i9 t; Q% |+ ~1 X

  2853. " {8 H' I4 W2 i' [% }6 ~
  2854. ;Nmi处理
    % t- ~6 ^4 V( c0 _
  2855. JSR NmiProcess6 R% `9 j! N5 M2 l& e" I
  2856. ' R: G0 b6 |) w7 Z# @
  2857. Nmi_Proc_End3 B) c7 y) [, @6 G: h
  2858. PLA, b0 i' m0 j* k4 A9 C( |1 a
  2859. TAY1 o9 p% u- ^8 R0 S% `  v
  2860. PLA. j* m6 b  K/ a% H
  2861. TAX
    4 b& b6 N4 z9 h2 B, p0 V
  2862. PLA
    - a# ?6 E. j9 ?& x
  2863. RTI6 t) @. V+ Q3 M  @: C
  2864. ; L5 S+ B9 g4 ^: w' O+ Z
  2865. ;==================================================, B9 s' ~8 O8 s
  2866. ResetProgram;重置中断处理5 m/ ]$ T1 B& u
  2867. SEI
    2 s$ Z' d7 p5 W' g# B
  2868. CLD
    5 ^& p6 z' {0 ]& i: \
  2869. LDA #$009 ?2 U4 M6 `8 Y4 e& k
  2870. STA PPU_CTRL9 f+ }' e; w/ V& ~- i& H
  2871. STA PPU_MASK
    + i* N/ c: `/ A& k2 a% ^

  2872. ' Z! m' }1 w9 w0 T
  2873. ;切换主程序bank; f& h4 a6 q+ [2 J% C5 L
  2874. JSR Switch_Main_Bank
    " j2 m* m0 M3 P( g) s5 v, P$ g

  2875. " j  ?: X& Y! a9 r3 h3 b" y
  2876. ;程序处理开始
    0 Z8 L7 E( R+ I# V+ A0 K( R
  2877. JMP ProgramBegin" U/ s/ x0 j: w% D& q% ]

  2878. & ~- K9 h- A. z) w& X* p
  2879. ;==================================================; C* A+ d* ~" F* ]+ @5 p
  2880. IrqProgram;Irq中断处理! Y6 f! {7 L6 x6 }# l0 c
  2881. PHA
    3 j! ^1 r! o5 M: \( v7 U6 Y
  2882. TXA3 S! T0 _$ Q: `3 b: E, T, ^
  2883. PHA# c% e( J9 G' P  u' j; _/ b) a
  2884. TYA6 Z/ x" p( Z8 b" k
  2885. PHA
    2 h) l9 O% Y: g0 L, Y; U
  2886. " E( [# T5 t; J. i9 d% m
  2887. ;关闭IRQ, X$ D& l8 ~4 ^0 T" k' Y! Y
  2888. STA MMC3_IRQ_DISABLE
    / j% t5 ~# @1 a" `
  2889. % q5 D. Z1 N' `. L0 P# v$ o
  2890. ;允许下个IRQ触发
    : @! o; z* a" `2 h# n/ q
  2891. STA MMC3_IRQ_ENABLE9 y% n* C% T, Y/ S$ j
  2892. 4 w2 ^% }- ^4 G# g
  2893. .IF IRQ_SUBPROCESS_JMP
    8 E6 R5 A; S( j8 ?3 K/ ^" {

  2894. ! q. ^( ^0 D/ {5 i% h! ?  G' [
  2895. ;执行IRQ过程
    " {+ ]7 k; o% i. B; i; B, }0 i0 c' p
  2896. LDA <Data_L: m. |1 k% ^4 N6 D$ g$ M
  2897. PHA
    8 r. \8 @% s# j
  2898. LDA <Data_H6 U4 C! |/ w% \
  2899. PHA# Q- t  z! z+ Q9 `1 d
  2900. LDA <IRQ_Process_Index( I& z/ u9 d( Y: |( G
  2901. ASL A
    6 c& I- K- t# s$ W
  2902. TAY3 `; X6 g/ n" R+ [7 U5 `, W2 d
  2903. LDA IrqProcessAddr,Y  P- C" y$ b& \6 s  |9 K$ x
  2904. STA <Data_L
    % [% r, F* I* s% D- F3 Y
  2905. INY
    # _! Y, E: o/ T/ m' J- j+ N
  2906. LDA IrqProcessAddr,Y% }4 {" v6 H0 r/ X' B% }+ e
  2907. STA <Data_H. Y+ x; l) G% c: P7 X
  2908. JMP [Data_L]
    9 W! d3 |& G! n
  2909. , U5 I% O. Z( Z: B
  2910. .ELSE3 y( z  I0 C9 C' |

  2911. 6 Y' w( I+ W! U! ?
  2912. JSR IRQ_Process7 d" {) V' I) Y+ J: L. {. e: |1 u

  2913. % Q$ z) |$ P! y6 x( d. u( c
  2914. .ENDIF
    0 O* M& \+ [+ B* a  E1 M; R: C

  2915. + z+ Y, o9 ?& l# i: S
  2916. IrqProgramEnd6 m; w' Q$ \# f/ S
  2917. .IF IRQ_SUBPROCESS_JMP% _  \$ D: `3 ?6 R% J- v% l
  2918. PLA
    ( @* U4 K( i/ J6 ~# h  H
  2919. STA <Data_H! }& E$ n# h2 V0 z1 o
  2920. PLA! l6 i% {# i8 p3 C) g7 e0 x
  2921. STA <Data_L( l# x. G" p& U) c; v, T
  2922. .ENDIF3 _8 x- D3 S3 r) d0 s0 F$ W
  2923. PLA  Q( c$ h  I9 h8 w% G
  2924. TAY/ H7 H3 L" C" Z" o/ ?8 W
  2925. PLA
    4 C6 y& ]. e6 B- L; Y
  2926. TAX
    ( f# K& g9 b; q4 r3 L
  2927. PLA
    9 S% u, c, W7 l
  2928. RTI
    ' |- j, I1 N+ T( j9 a' \; r

  2929. 8 t  p, h' J9 U; d+ }
  2930. .ORG $FFFA
    ' k' R2 O1 Q3 j
  2931. .WORD NmiProgram
    8 x' v. y+ D- s$ W
  2932. .WORD ResetProgram! U% x9 s3 H7 c! @3 F) `7 M
  2933. .WORD IrqProgram
    ' [! y  `" z- x+ A: U( E' v( v
  2934. ' R, O. n! r, y' f
  2935. .BANK RESET_BANK & BANK_DATA_MASK1 G% y1 l, y1 I. u% p
  2936. .IF SOUND_BAR_SHOW_ENABLE' i! `, _! m0 {8 e6 F3 N( ~
  2937. * x' [+ {+ S- K" R' K
  2938. .ORG $FE009 B% C# F" }' e* W
  2939. PHA8 g# J! F8 R& Q2 t( H! `# Q
  2940. STY $07BA
    " ~& Y- y. m3 u! D& |* ^1 L/ Z3 ]
  2941. LDA #$8D
    + V% @" {( D6 [2 \# [: M# S
  2942. STA $07BC
    * r; u& v4 O+ `" c
  2943. TYA
    4 N& B* a8 z9 a  R" C; t8 T: t
  2944. CLC
    ! \6 R7 e# h9 @2 n3 S: z" O
  2945. ADC #LOW(Sound_Bar)
    , u# E9 H" h: m; \- K& v
  2946. STA $07BD
    9 s- W; @) z1 A0 Q* k
  2947. LDA #HIGH(Sound_Bar)
    , E& E# V$ p% ~# Z
  2948. STA $07BE4 h7 v' U3 D  \" w; m% j( F3 [6 q
  2949. LDA #$60
    ( n! [0 k( k: d  Z
  2950. STA $07BF, K! m# J5 p: m* c8 L
  2951. PLA
    % e) _) E; `3 b
  2952. RTS
    / B5 l( c, C1 c- X

  2953. 6 L! r4 b: v! \: C
  2954. .ORG $FE20
    2 k: x2 E0 B7 f8 X9 B; \! V
  2955. STA $07BA
    % C# y* S& G6 u, P
  2956. CLC
    ; ^% ^1 Q$ S' E. K$ j6 e6 C
  2957. ADC #LOW(Sound_Bar)
    6 j/ V2 g% g9 J3 Q/ v" S: i
  2958. STA $07BD
    : Q( G, O4 U; e" p- [% H! K. q6 f' \
  2959. LDA #$8D! m$ A0 |) U+ U0 y' U  ]8 N4 y
  2960. STA $07BC! u7 D1 d! `  R: f# g7 ]2 R
  2961. LDA #HIGH(Sound_Bar)5 h  e' j" b% A- q4 [
  2962. STA $07BE+ ^6 q/ g  n3 _+ d5 I# l- D
  2963. LDA #$60
    . j0 x8 [# T$ K- W  @5 ~2 d. C
  2964. STA $07BF' y( T8 q- q- p) c5 u
  2965. RTS1 Z9 q. `. d1 ]+ ~7 s* q4 |
  2966. ( V5 F; V/ C! }2 t6 y
  2967. .ORG $FE40% M, T/ u5 p& b$ E
  2968. PHA
    ! m# }' V8 n" m. M; {6 Y
  2969. STY $07F1
    $ y% O$ {' |/ p: a; |/ H' j
  2970. LDA #$8D
    7 e3 ]+ N% R& l; s) @+ S
  2971. STA $07F3
    # \, \& s7 ?" N4 t2 J; Y# @
  2972. TYA  K1 ~& p$ p/ a
  2973. CLC
    $ ?+ S1 H* y7 [3 O
  2974. ADC #LOW(Sound_Bar)
    * f5 r8 U3 j) `! Q! e  K. F4 T
  2975. STA $07F42 `$ W5 `8 p0 ^8 F7 T3 I) U/ m
  2976. LDA #HIGH(Sound_Bar)  w# o2 ]" i$ H1 ?
  2977. STA $07F5
    6 [" F2 T# R1 C! q  v+ l& `
  2978. LDA #$60
    0 H4 A3 h! c" s. F0 Z  s4 `, Z
  2979. STA $07F6' b' Q' O9 d! k5 C
  2980. PLA! y. w* X3 X; f7 P! n- B
  2981. RTS$ U7 `  i; h$ {) [' S& O; T+ L

  2982. , [# ]0 o4 @  k8 K2 _5 Q
  2983. .ORG $FE60! r! K# ~- n' d) }! P
  2984. STA $07F17 y8 z( t/ F* m7 O8 ]& q5 B
  2985. CLC; a9 b  D- b+ N, `+ ^
  2986. ADC #LOW(Sound_Bar)
    ) {# U7 J! M  o+ E3 v( n# @
  2987. STA $07F4
    / X( E. R6 P( j
  2988. LDA #$8D
    : |; V/ l3 k+ g; u. ]) r  N7 g
  2989. STA $07F3& y4 M  ]4 f8 L3 A; F0 E
  2990. LDA #HIGH(Sound_Bar)8 A; Y. |) A6 U4 g( A
  2991. STA $07F5& K. l+ a* ~0 P2 T1 x$ g
  2992. LDA #$60
    6 Y: C/ y4 W! |& }. m: S8 ^0 ^  e
  2993. STA $07F63 R4 e) x& b. K5 p# s; k( E, d
  2994. RTS3 M. z; L# q/ S) @0 h) C
  2995. & c, n+ w9 u, d$ y, p
  2996. .ORG $FF40% ~6 `5 M0 Q: ?7 J5 }, r0 ^6 a9 U: ~
  2997. STA $4000& G, ~; C# a5 {' p! k/ o
  2998. STA Sound_Bar + $003 P5 X3 ]0 ?/ c& w. G( }
  2999. RTS
    3 p; U4 J6 p# L  Q" m

  3000. ' s, D1 a# z" m! H4 u' R
  3001. .ORG $FF487 l- ?5 s- c5 O# d
  3002. STA $4004$ _% g# e* N* Z2 H  i, Z2 s8 ~
  3003. STA Sound_Bar + $04( z7 }: n& h# T
  3004. RTS  n4 E1 _# J8 R9 v+ ]
  3005. 0 f9 z' y. X9 S% i% A
  3006. .ORG $FF501 d. U/ Q7 f" k0 q
  3007. STA $4008
    5 Y" L. K6 [) f4 H7 ]8 v
  3008. STA Sound_Bar + $08
    5 T+ y; P$ y% Q& |4 ~
  3009. RTS2 I. u( I( c  U' V7 y% G
  3010. 0 Q1 P6 \; E" k4 i4 y8 R% A& W2 X
  3011. .ORG $FF58
    $ b- f, d+ m* R2 H2 `- Q
  3012. STA $400C3 C# j/ h; q! X9 s/ L% C7 u$ {
  3013. STA Sound_Bar + $0C3 R. P$ U/ H3 Q/ x, \
  3014. RTS" H) }- y, w8 r) m
  3015. " p" c3 h6 S( C
  3016. .ORG $FF60
    , |- Z* p% O. B9 k2 z$ a3 P% R3 K
  3017. STX $40004 ~+ I5 [$ P9 ]
  3018. STX Sound_Bar + $00
    # V, L1 i" u1 K' Z" J6 k9 l
  3019. RTS
      r- j" V# f; i' i3 a6 i0 y
  3020. / W. C8 @, @5 z( v9 O1 S
  3021. .ORG $FF68
    ( D" G# [! I/ G. M
  3022. STX $4004
    7 Z5 K. d3 Q+ E/ D$ w
  3023. STX Sound_Bar + $04' b" p6 `3 p' c9 W( g5 v
  3024. RTS; h5 V7 b2 I8 A. x% k! Y, B
  3025.   @" u. F- v0 Z3 m1 y- D
  3026. .ORG $FF70
    2 I) s: Z$ a, P$ d4 i8 D
  3027. STX $4008
    / J. j& b+ V2 T% N7 n, M
  3028. STX Sound_Bar + $08, u) ~- t" x5 G; s: N/ P9 l2 {
  3029. RTS# N2 o& b- w" a3 P
  3030. & A+ h$ g' a! z! K+ ^
  3031. .ORG $FF78
    / p1 [" L- v  }7 R5 k2 o
  3032. STX $400C
    6 }. k3 N* |! n2 C  V' v
  3033. STX Sound_Bar + $0C# O! |9 y  r$ A+ I' _
  3034. RTS" v" n" G3 j" l/ B5 w0 x7 P

  3035. / d  G1 T" D% h2 Q
  3036. .ORG $FF80
    2 }0 b/ }5 O4 i" Z3 y4 `$ ]- K
  3037. STY $4000
    2 x) U: X9 [: V2 y# f' S
  3038. STY Sound_Bar + $00
    1 b. V6 i- S! O  ?: ~
  3039. RTS
      H2 T7 r! c& D( [1 |

  3040. ) |$ p: |! }) b* _1 b* ~/ u
  3041. .ORG $FF88
    3 P, n. c& i1 e
  3042. STY $4004
    ; x; o, g# Y8 D
  3043. STY Sound_Bar + $04
    ( f) N2 l& Y) T5 Y6 J% ?5 L
  3044. RTS! L: S- L/ I0 W% u9 J' s4 u$ v$ }. x

  3045. , h, x  K0 q, j8 O6 P
  3046. .ORG $FF90. w( p0 m! t; A& ~
  3047. STY $4008
    . L- r! a# X' ?+ C) l6 z
  3048. STY Sound_Bar + $08
    6 T  S& p: I) ~. c# ]
  3049. RTS
    # P0 _/ `% }0 p* c

  3050. + K# b2 B% U& W! v- X
  3051. .ORG $FF98, P8 i5 U1 A; [1 P
  3052. STY $400C
    / D9 ^. @8 W  |1 g
  3053. STY Sound_Bar + $0C$ v/ Y- U& n0 D$ @
  3054. RTS% [* e# P( _2 e! z& |6 n" J* \

  3055. 0 H9 T) }( T6 i% S8 B
  3056. .ORG $FFA0* g4 n7 w( O# a$ Z& e6 q
  3057. STA $4000,X
    3 q+ T* k! z2 a4 K. |  \% q7 U5 o
  3058. STA Sound_Bar + $00,X
    9 f9 `1 b! a  O3 l* \8 ^7 i  W
  3059. RTS
    # H) T! C# L1 u4 C
  3060. ( n# D2 o* j" A0 J8 [$ F
  3061. .ORG $FFA8, h* c/ e6 V' l- W! u: z  u
  3062. STA $4000,Y. ^' O! z& ]2 t: U$ \
  3063. STA Sound_Bar + $00,Y
    - v- l: b8 t$ a# m) s; e
  3064. RTS
    0 w/ W6 a2 Y" r* W* Z

  3065. , o% W/ X/ ]8 R: r. L
  3066. .ORG $FFB0/ x& N; Z" O" W5 j' I
  3067. STA $4004,X4 y5 t: a8 P! p! [5 X0 \" W; C
  3068. STA Sound_Bar + $04,X- }5 x' A* i% m. d& J
  3069. RTS/ g  U' {; o/ C9 t

  3070. 9 W3 k9 N- v7 s
  3071. .ORG $FFB8
    ; D- N( }" {4 t9 A- S/ M8 Z
  3072. STA $4004,Y2 Y8 X" f' p/ E3 D
  3073. STA Sound_Bar + $04,Y
    * a/ f) R8 O& m6 |/ u% z1 r4 ]) t
  3074. RTS
    3 R$ p9 \) H* d# d; Y  b6 j

  3075. % j' t7 u5 O5 [7 `
  3076. .ORG $FFC0* r' r$ I' O- R- G
  3077. STA $4008,X& _$ u8 l% {( o$ b
  3078. STA Sound_Bar + $08,X7 F2 e* e( }. F$ d$ [0 p
  3079. RTS
    ! x5 M& y( S( u. M  S
  3080. 5 @' \$ t5 t/ @4 ?' ?: C
  3081. .ORG $FFC8( a/ b# @# S; S2 \/ e0 X4 ]" X# H
  3082. STA $4008,Y
    3 ]# o) b& @$ K
  3083. STA Sound_Bar + $08,Y5 L0 t1 L& G8 C. U* j) C  _2 {
  3084. RTS
    . W: z0 g& B$ D% v
  3085. " B5 Y. p2 M$ }7 B8 X% h& \( [
  3086. .ORG $FFD0
    5 Z: D/ u% `5 e# b8 I, X) Z
  3087. STA $400C,X' C' d4 `* y  S
  3088. STA Sound_Bar + $0C,X
      L9 u4 p& ~/ F3 n: `
  3089. RTS
    ! D- O! m) j; N' N; |. h2 J

  3090. 4 b0 I' \; [0 q) }
  3091. .ORG $FFD8
    0 `0 u$ h' o, a2 \. P
  3092. STA $400C,Y9 ]2 Q8 V8 ]  r6 z6 k
  3093. STA Sound_Bar + $0C,Y
    $ @5 V# h& v! l7 W
  3094. RTS
    ) K4 _9 m, x; k3 k5 W5 ]

  3095. 3 ]4 l) |( W; L: b2 P' |
  3096. .ENDIF8 |+ I% D. ~7 ]" e+ u. M0 R
复制代码

. h1 q8 _; n! B2 l2 |* a' I
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

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

签到天数: 3226 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 11:30 , Processed in 1.128906 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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