📄 ui_play.lst
字号:
\ 007F 3A0000 LD A,(g_volcounter)
\ 0082 B7 OR A
\ 0083 2005 JR NZ,?0019
\ 0085 ?0018:
103 g_rSetPlayStatus = TRUE;
\ 0085 3E01 LD A,1
\ 0087 320000 LD (g_rSetPlayStatus),A
\ 008A ?0019:
\ 008A ?0017:
104 }
105 if(g_comval.EarProtect_flag)
\ 008A 3A1800 LD A,(g_comval+24)
\ 008D B7 OR A
\ 008E 2813 JR Z,?0021
\ 0090 ?0020:
106 {
107 g_music_vars.volume = input8(0x87)&0x1f;
\ 0090 DB87 IN A,(135)
\ 0092 E61F AND 31
\ 0094 320000 LD (g_music_vars),A
108 ui_show_vol(g_music_vars.volume);
\ 0097 ED5B0000 LD DE,(g_music_vars)
\ 009B 3E00 LD A,BYTE3 ui_show_vol
\ 009D 210000 LD HL,LWRD ui_show_vol
\ 00A0 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00A3 ?0021:
\ 00A3 ?0022:
109 }
110 case AP_MSG_WAIT_TIMEOUT:
111 case AP_KEY_PLAY://当按下PLAY键时先不处理,可减少停止时的杂音
112 case AP_KEY_NEXT://当按下NEXT键时先不处理,可减少选下一首时的杂音
113 case AP_KEY_PREV://当按下PREV键时先不处理,可减少选上一首时的杂音
114
115 key = ap_handle_hotkey(key);
\ 00A3 DD5EF6 LD E,(IX-10)
\ 00A6 CD0000 CALL LWRD ap_handle_hotkey
\ 00A9 DD77F6 LD (IX-10),A
116 if (key == RESULT_REDRAW)
\ 00AC FE32 CP 50
\ 00AE 2015 JR NZ,?0024
\ 00B0 ?0023:
117 {
118 SetFullInterface();
\ 00B0 AF XOR A
\ 00B1 320000 LD (ui_auto_update),A
\ 00B4 210000 LD HL,UpDisplayFlag
\ 00B7 7E LD A,(HL)
\ 00B8 F6C1 OR 193
\ 00BA 77 LD (HL),A
\ 00BB 23 INC HL
\ 00BC 36FF LD (HL),255
119 need_draw = TRUE;
\ 00BE 3E01 LD A,1
\ 00C0 320000 LD (need_draw),A
\ 00C3 1826 JR ?0014
\ 00C5 ?0024:
120 }
121 else if (key != 0)
\ 00C5 AF XOR A
\ 00C6 DDB6F6 OR (IX-10)
\ 00C9 2820 JR Z,?0014
\ 00CB ?0026:
122 {
123 return key;
\ 00CB 1818 JR ?0033
124 }
\ 00CD ?0027:
\ 00CD ?0025:
125 break;
\ 00CD ?0028:
126
127 case AP_KEY_NULL://没按键
128 break;
\ 00CD ?0029:
129
130 default:
131 //调用其他按键处理,只有对应的键按了后才进入(此函数在别的BANK)
132 key = DealKeyForPlayStatus(key);
\ 00CD 3E00 LD A,BYTE3 DealKeyForPlayStatus
\ 00CF 210000 LD HL,LWRD DealKeyForPlayStatus
\ 00D2 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
133 if (key != NULL)
\ 00D5 2C INC L
\ 00D6 2D DEC L
\ 00D7 2812 JR Z,?0014
\ 00D9 ?0030:
134 {
135 if (key == RESULT_UI_STOP || key == RESULT_LIST) //test
\ 00D9 7D LD A,L
\ 00DA FE66 CP 102
\ 00DC 2804 JR Z,?0034
\ 00DE FE69 CP 105
\ 00E0 2003 JR NZ,?0033
\ 00E2 ?0034:
\ 00E2 ?0035:
\ 00E2 ?0032:
136 {
137 return NULL;
\ 00E2 C39D01 JP LWRD ?0162
138 }
\ 00E5 ?0033:
139 else
140 {
141 return key;
\ 00E5 6F LD L,A
\ 00E6 2600 LD H,0
142 }
\ 00E8 C3A001 JP LWRD ?0064
\ 00EB ?0031:
143 }
144 break;
\ 00EB ?0014:
145 }
146
147 musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
\ 00EB 210200 LD HL,2
\ 00EE 39 ADD HL,SP
\ 00EF CDB001 CALL LWRD ?0186
148
149 DealForABGap(& status_buf);
\ 00F2 210200 LD HL,2
\ 00F5 39 ADD HL,SP
\ 00F6 EB EX DE,HL
\ 00F7 3E00 LD A,BYTE3 DealForABGap
\ 00F9 215905 LD HL,LWRD DealForABGap
\ 00FC CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
150
151 if (status_buf.status == PLAYING_ERROR)
\ 00FF DD7EF8 LD A,(IX-8)
\ 0102 FE0C CP 12
\ 0104 200B JR NZ,?0037
\ 0106 ?0036:
152 {
153 Deal_Error_Playing();
\ 0106 3E00 LD A,BYTE3 Deal_Error_Playing
\ 0108 210000 LD HL,LWRD Deal_Error_Playing
\ 010B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
154 return NULL;
\ 010E C39D01 JP LWRD ?0162
155 }
\ 0111 ?0037:
156
157
158 if (status_buf.status == PLAYING_REACH_END)
\ 0111 FE06 CP 6
\ 0113 2012 JR NZ,?0041
\ 0115 ?0038:
159 {
160 MusicEditSelStatus=MusicEditSelSta_NoSel;
\ 0115 AF XOR A
\ 0116 320000 LD (MusicEditSelStatus),A
161 MusicEditStatus=MusicEditSta_NoFun;
\ 0119 320000 LD (MusicEditStatus),A
162 g_result = DealMusicFileEnd(0);
\ 011C 5F LD E,A
\ 011D CDA801 CALL LWRD ?0184
\ 0120 220000 LD (g_result),HL
163 if ( g_result != NULL )
\ 0123 7D LD A,L
\ 0124 B4 OR H
\ 0125 202B JR NZ,?0165
\ 0127 ?0040:
164 {
165 return g_result;
166 }
\ 0127 ?0041:
\ 0127 ?0039:
167 }
168
169 //注,下面是为解决一种特殊情况而做出的特殊处理,在一般情况下可不分到头,到尾
170 // 标志,统一用 PLAYING_REACH_END 标志就可以了,因为可通过 PlayStatus
171 // 这个标志判断是快进还是快退,就可知道是到了文件头还是文件尾,但如果在
172 // 快退到差不多到头时停止快退,这时已发停止命令,但由于模块层在接收这个
173 // 命令后到真正停止快退要有一个时间差,如在这个时间差中到文件头,如还是
174 // 用 PLAYING_REACH_END 标志那就分不清是到头还是到尾,所以要加一个标志
175 // PLAYING_REACH_HEAD 表示是到头。
176 if (status_buf.status == PLAYING_REACH_HEAD)
\ 0127 DD7EF8 LD A,(IX-8)
\ 012A FE0E CP 14
\ 012C 2026 JR NZ,?0048
\ 012E ?0042:
177 {
178 if (PlayStatus == PlaySta)
\ 012E 3A0000 LD A,(PlayStatus)
\ 0131 3D DEC A
\ 0132 3D DEC A
\ 0133 2013 JR NZ,?0045
\ 0135 ?0044:
179 {
180 DisInFBHead( 0 );//到头显示
\ 0135 5F LD E,A
\ 0136 3E00 LD A,BYTE3 DisInFBHead
\ 0138 210000 LD HL,LWRD DisInFBHead
\ 013B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
181 SelectCurMusic();
\ 013E 3E00 LD A,BYTE3 SelectCurMusic
\ 0140 210000 LD HL,LWRD SelectCurMusic
\ 0143 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
182 }
183 else
\ 0146 180C JR ?0048
\ 0148 ?0045:
184 {
185 g_result = DealMusicFileEnd(0);
\ 0148 CDA601 CALL LWRD ?0185
\ 014B 220000 LD (g_result),HL
186 if ( g_result != NULL )
\ 014E 7D LD A,L
\ 014F B4 OR H
\ 0150 2802 JR Z,?0048
\ 0152 ?0047:
187 {
188 return g_result;
\ 0152 ?0165:
189 }
\ 0152 184C JR ?0064
\ 0154 ?0048:
\ 0154 ?0046:
\ 0154 ?0043:
190 }
191 }
192
193 if (RePlayStatus == WaitSetBPointForAB)
\ 0154 3A0000 LD A,(RePlayStatus)
\ 0157 3D DEC A
\ 0158 3D DEC A
\ 0159 2022 JR NZ,?0058
\ 015B ?0049:
194 {
195 if (g_comval.ReplayMode)
\ 015B 3A0D00 LD A,(g_comval+13)
\ 015E B7 OR A
\ 015F 281C JR Z,?0058
\ 0161 ?0051:
196 {
197 if ( (status_buf.signal == SIGNAL_REACH_V)
198 && (g_ABMinTimeCNT == 0) )//要大于AB最小时间
\ 0161 DD46F9 LD B,(IX-7)
\ 0164 05 DEC B
\ 0165 2016 JR NZ,?0058
\ 0167 3A0000 LD A,(g_ABMinTimeCNT)
\ 016A B7 OR A
\ 016B 2010 JR NZ,?0058
\ 016D ?0056:
\ 016D ?0055:
\ 016D ?0053:
199 {
200 if ( musicpSendCommand(MC_SETA_B, SetBPoint) ) //set_v
\ 016D 0E02 LD C,2
\ 016F 1E41 LD E,65
\ 0171 CDB401 CALL LWRD ?0187
\ 0174 2C INC L
\ 0175 2D DEC L
\ 0176 2805 JR Z,?0058
\ 0178 ?0057:
201 {
202 g_AVSetFlag = TRUE;//标志是用AV的方式设置B点的
\ 0178 3E01 LD A,1
\ 017A 320000 LD (g_AVSetFlag),A
\ 017D ?0058:
\ 017D ?0054:
\ 017D ?0052:
\ 017D ?0050:
203 }
204 }
205 }
206 }
207
208 if(return_to_play==0)
\ 017D 3A0000 LD A,(return_to_play)
\ 0180 B7 OR A
\ 0181 200D JR NZ,?0060
\ 0183 ?0059:
209 g_result = RealDisplay();
\ 0183 3E00 LD A,BYTE3 RealDisplay
\ 0185 21BC01 LD HL,LWRD RealDisplay
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -