📄 ui_play.lst
字号:
\ 0089 77 LD (HL),A
\ 008A 23 INC HL
\ 008B 36FF LD (HL),255
106 need_draw = TRUE;
\ 008D 3E01 LD A,1
\ 008F 320000 LD (need_draw),A
\ 0092 1820 JR ?0014
\ 0094 ?0017:
107 }
108 else if (key != 0)
\ 0094 AF XOR A
\ 0095 DDB6F6 OR (IX-10)
\ 0098 281A JR Z,?0014
\ 009A ?0019:
109 {
110 return key;
\ 009A 1812 JR ?0026
111 }
\ 009C ?0020:
\ 009C ?0018:
112 break;
\ 009C ?0021:
113
114 case AP_KEY_NULL://没按键
115 break;
\ 009C ?0022:
116
117 default:
118 //调用其他按键处理,只有对应的键按了后才进入(此函数在别的BANK)
119 key = DealKeyForPlayStatus(key);
\ 009C 3E00 LD A,BYTE3 DealKeyForPlayStatus
\ 009E 210000 LD HL,LWRD DealKeyForPlayStatus
\ 00A1 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
120 //g_result = 0;
121 if (key != NULL)
\ 00A4 2C INC L
\ 00A5 2D DEC L
\ 00A6 280C JR Z,?0014
\ 00A8 ?0023:
122 {
123 if (key == RESULT_UI_STOP)
\ 00A8 7D LD A,L
\ 00A9 FE66 CP 102
\ 00AB CA5E01 JP Z,?0153
\ 00AE ?0025:
124 {
125 return NULL;
126 }
\ 00AE ?0026:
127 else
128 {
129 return key;
\ 00AE 6F LD L,A
\ 00AF 2600 LD H,0
130 }
\ 00B1 C36101 JP LWRD ?0055
\ 00B4 ?0024:
131 }
132 break;
\ 00B4 ?0014:
133 }
134
135 musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
\ 00B4 210200 LD HL,2
\ 00B7 39 ADD HL,SP
\ 00B8 CD7101 CALL LWRD ?0170
136 //FlashMotived(PowerValue);
137
138 DealForABGap(& status_buf);
\ 00BB 210200 LD HL,2
\ 00BE 39 ADD HL,SP
\ 00BF EB EX DE,HL
\ 00C0 3E00 LD A,BYTE3 DealForABGap
\ 00C2 216905 LD HL,LWRD DealForABGap
\ 00C5 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
139
140 if (status_buf.status == PLAYING_ERROR)
\ 00C8 DD7EF8 LD A,(IX-8)
\ 00CB FE0C CP 12
\ 00CD 200B JR NZ,?0028
\ 00CF ?0027:
141 {
142 Deal_Error_Playing();
\ 00CF 3E00 LD A,BYTE3 Deal_Error_Playing
\ 00D1 210000 LD HL,LWRD Deal_Error_Playing
\ 00D4 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
143 // wma_inf_t drminfbuff;
144 // if (musicpSendCommand(MC_GETINF, (int)&drminfbuff))
145 // {
146 //
147 // if (drminfbuff.drmmode == INF_DRMNOLICENSE)
148 // {
149 // DisplayErrMsg1(NOLICENS);//显示无licens
150 // }
151 // }
152 //
153 // else if ( (g_music_vars.location.disk == 'H')
154 // && (DRV_DetectUD(1) != 0x20) )
155 // {
156 // DisplayErrMsg(CARDPULL);//显示卡拔出
157 // }
158 // else
159 // {
160 // DisplayErrMsg(MFMTERR);//显示格式错
161 // }
162 // musicpSendCommand(MC_STOP, NULL);
163 // musicpSendCommand(MC_CLOSE, NULL);
164 // SetFullInterface();
165 return NULL;
\ 00D7 C35E01 JP LWRD ?0153
166 }
\ 00DA ?0028:
167
168
169 if (status_buf.status == PLAYING_REACH_END)
\ 00DA FE06 CP 6
\ 00DC 200A JR NZ,?0032
\ 00DE ?0029:
170 {
171 g_result = DealMusicFileEnd(0);
\ 00DE CD6701 CALL LWRD ?0169
\ 00E1 220000 LD (g_result),HL
172 if ( g_result != NULL )
\ 00E4 7D LD A,L
\ 00E5 B4 OR H
\ 00E6 202B JR NZ,?0156
\ 00E8 ?0031:
173 {
174 return g_result;
175 }
\ 00E8 ?0032:
\ 00E8 ?0030:
176 }
177
178 //注,下面是为解决一种特殊情况而做出的特殊处理,在一般情况下可不分到头,到尾
179 // 标志,统一用 PLAYING_REACH_END 标志就可以了,因为可通过 PlayStatus
180 // 这个标志判断是快进还是快退,就可知道是到了文件头还是文件尾,但如果在
181 // 快退到差不多到头时停止快退,这时已发停止命令,但由于模块层在接收这个
182 // 命令后到真正停止快退要有一个时间差,如在这个时间差中到文件头,如还是
183 // 用 PLAYING_REACH_END 标志那就分不清是到头还是到尾,所以要加一个标志
184 // PLAYING_REACH_HEAD 表示是到头。
185 if (status_buf.status == PLAYING_REACH_HEAD)
\ 00E8 DD7EF8 LD A,(IX-8)
\ 00EB FE0E CP 14
\ 00ED 2026 JR NZ,?0039
\ 00EF ?0033:
186 {
187 if (PlayStatus == PlaySta)
\ 00EF 3A0000 LD A,(PlayStatus)
\ 00F2 3D DEC A
\ 00F3 3D DEC A
\ 00F4 2013 JR NZ,?0036
\ 00F6 ?0035:
188 {
189 DisInFBHead( 0 );//到头显示
\ 00F6 5F LD E,A
\ 00F7 3E00 LD A,BYTE3 DisInFBHead
\ 00F9 210000 LD HL,LWRD DisInFBHead
\ 00FC CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
190 SelectCurMusic();
\ 00FF 3E00 LD A,BYTE3 SelectCurMusic
\ 0101 210000 LD HL,LWRD SelectCurMusic
\ 0104 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
191 }
192 else
\ 0107 180C JR ?0039
\ 0109 ?0036:
193 {
194 g_result = DealMusicFileEnd(0);
\ 0109 CD6701 CALL LWRD ?0169
\ 010C 220000 LD (g_result),HL
195 if ( g_result != NULL )
\ 010F 7D LD A,L
\ 0110 B4 OR H
\ 0111 2802 JR Z,?0039
\ 0113 ?0038:
196 {
197 return g_result;
\ 0113 ?0156:
198 }
\ 0113 184C JR ?0055
\ 0115 ?0039:
\ 0115 ?0037:
\ 0115 ?0034:
199 }
200 }
201
202 if (RePlayStatus == WaitSetBPointForAB)
\ 0115 3A0000 LD A,(RePlayStatus)
\ 0118 3D DEC A
\ 0119 3D DEC A
\ 011A 2022 JR NZ,?0049
\ 011C ?0040:
203 {
204 if (g_comval.ReplayMode)
\ 011C 3A0D00 LD A,(g_comval+13)
\ 011F B7 OR A
\ 0120 281C JR Z,?0049
\ 0122 ?0042:
205 {
206 if ( (status_buf.signal == SIGNAL_REACH_V)
207 && (g_ABMinTimeCNT == 0) )//要大于AB最小时间
\ 0122 DD46F9 LD B,(IX-7)
\ 0125 05 DEC B
\ 0126 2016 JR NZ,?0049
\ 0128 3A0000 LD A,(g_ABMinTimeCNT)
\ 012B B7 OR A
\ 012C 2010 JR NZ,?0049
\ 012E ?0047:
\ 012E ?0046:
\ 012E ?0044:
208 {
209 if ( musicpSendCommand(MC_SETA_B, SetBPoint) ) //set_v
\ 012E 0E02 LD C,2
\ 0130 1E41 LD E,65
\ 0132 CD7501 CALL LWRD ?0171
\ 0135 2C INC L
\ 0136 2D DEC L
\ 0137 2805 JR Z,?0049
\ 0139 ?0048:
210 {
211 g_AVSetFlag = TRUE;//标志是用AV的方式设置B点的
\ 0139 3E01 LD A,1
\ 013B 320000 LD (g_AVSetFlag),A
\ 013E ?0049:
\ 013E ?0045:
\ 013E ?0043:
\ 013E ?0041:
212 }
213 }
214 }
215 }
216
217 if(return_to_play==0)
\ 013E 3A0000 LD A,(return_to_play)
\ 0141 B7 OR A
\ 0142 200D JR NZ,?0051
\ 0144 ?0050:
218 g_result = RealDisplay();
\ 0144 3E00 LD A,BYTE3 RealDisplay
\ 0146 217D01 LD HL,LWRD RealDisplay
\ 0149 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 014C 220000 LD (g_result),HL
219 else
\ 014F 1804 JR ?0052
\ 0151 ?0051:
220 return_to_play=0;
\ 0151 AF XOR A
\ 0152 320000 LD (return_to_play),A
\ 0155 ?0052:
221
222 if(g_result == RESULT_UI_STOP)
\ 0155 2A0000 LD HL,(g_result)
\ 0158 3E66 LD A,102
\ 015A AD XOR L
\ 015B B4 OR H
\ 015C 2006 JR NZ,?0054
\ 015E ?0053:
223 {
224 return 0;
\ 015E ?0153:
\ 015E 210000 LD HL,0
225 }
\ 0161 ?0055:
\ 0161 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0164 ?0054:
226
227 }/* while(1) */
228
229 }
\ 0164 C32500 JP LWRD ?0003
\ 0167 ?0169:
\ 0167 1E00 LD E,0
\ 0169 3E00 LD A,BYTE3 DealMusicFileEnd
\ 016B 210000 LD HL,LWRD DealMusicFileEnd
\ 016E C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0171 ?0170:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -