📄 ui_play.lst
字号:
\ 037E 3E01 LD A,1
\ 0380 320000 LD (ui_auto_update),A
259
260 if(result == RESULT_IGNORE) return 0;
\ 0383 3E34 LD A,52
\ 0385 AD XOR L
\ 0386 B4 OR H
\ 0387 2004 JR NZ,?0051
\ 0389 ?0050:
\ 0389 69 LD L,C
\ 038A 60 LD H,B
\ 038B 1845 JR ?0060
\ 038D ?0051:
261 else if(result != 0) return result;
\ 038D 7D LD A,L
\ 038E B4 OR H
\ 038F 203E JR NZ,?0059
\ 0391 ?0052:
\ 0391 ?0053:
262
263 //handle return value
264 active = list.active;
\ 0391 3A0400 LD A,(list+4)
\ 0394 320400 LD (?0049),A
265
266 switch(list.active)
\ 0397 ED5B0400 LD DE,(list+4)
\ 039B CD0000 CALL LWRD ?S_S_SWITCH_L06
\ 039E 0000 DEFW 0
\ 03A0 0400 DEFW 4
\ 03A2 CF03 DEFW ?0059
\ 03A4 AC03 DEFW ?0055
\ 03A6 B303 DEFW ?0056
\ 03A8 BD03 DEFW ?0057
\ 03AA CB03 DEFW ?0058
\ 03AC ?0055:
267 {
268 case 0: //repeat
269 result = show_loop();
\ 03AC 3E00 LD A,BYTE3 show_loop
\ 03AE 210000 LD HL,LWRD show_loop
\ 03B1 1805 JR ?0193
270
271 break;
\ 03B3 ?0056:
272 case 1: //play rate
273 result = show_speed();
\ 03B3 3E00 LD A,BYTE3 show_speed
\ 03B5 210000 LD HL,LWRD show_speed
\ 03B8 ?0193:
\ 03B8 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 03BB 1809 JR ?0194
274
275 break;
\ 03BD ?0057:
276 case 2: //re-play
277 result = show_replay(0);
\ 03BD 58 LD E,B
\ 03BE 3E00 LD A,BYTE3 show_replay
\ 03C0 210000 LD HL,LWRD show_replay
\ 03C3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 03C6 ?0194:
\ 03C6 E5 PUSH HL
\ 03C7 DDE1 POP IX
278
279 break;
\ 03C9 1804 JR ?0059
\ 03CB ?0058:
280 case 3: //exit
281 result = 0;
\ 03CB DD210000 LD IX,0
282
283 break;
\ 03CF ?0059:
\ 03CF ?0054:
284 default:
285 ASSERT(FALSE);
286 }
287 return result;
\ 03CF DDE5 PUSH IX
\ 03D1 E1 POP HL
288
289 }
\ 03D2 ?0060:
\ 03D2 DDE1 POP IX
\ 03D4 D1 POP DE
\ 03D5 C1 POP BC
\ 03D6 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 03D9 show_play:
290
291 /*
292 ********************************************************************************
293 * Description : 播放菜单界面
294 *
295 * Arguments :
296 *
297 * Returns :
298 *
299 * Notes : 这里可能进入其他界面 , for card
300 *
301 ********************************************************************************
302 */
303 /*
304 int show_play_menu_card(void)
305 {
306 int result;
307 static char c_active=0; //保持选中菜单的序号
308
309 //show ui
310 list.headid = PLAYMENU;
311 list.active = c_active;
312 list.total = 3;
313 list.strid = c_play_string;
314
315 ui_auto_update = FALSE;
316 result = ui_popup_list(&list, NULL);
317 ui_auto_update = TRUE;
318
319 if(result == RESULT_IGNORE) return 0;
320 else if(result != 0) return result;
321
322 //handle return value
323 c_active = list.active;
324
325 switch(list.active)
326 {
327 case 0: //repeat
328 result = show_loop();
329
330 break;
331 case 1: //re-play
332 result = show_replay(0);
333
334 break;
335 case 2: //exit
336 result = 0;
337
338 break;
339 default:
340 ASSERT(FALSE);
341 }
342 return result;
343
344 }
345 */
346 /*
347 ********************************************************************************
348 * Description : 播放界面
349 *
350 * Arguments :
351 *
352 * Returns : 结果消息或0
353 RESULT_END //播放结束
354 RESULT_PREV //按了prev按钮
355 RESULT_NEXT //按了next按钮
356 RESULT_PAUSE //play 时按了play按钮
357 RESULT_FF_END //play 时按住next 结束
358 RESULT_RW_END //play 时按住prev 结束
359 *
360 * Notes :
361 *
362 ********************************************************************************
363 */
364 int show_play(void)
365 {
\ 03D9 C5 PUSH BC
\ 03DA D5 PUSH DE
\ 03DB DDE5 PUSH IX
\ 03DD DD210000 LD IX,0
\ 03E1 DD39 ADD IX,SP
\ 03E3 21F0FF LD HL,65520
\ 03E6 39 ADD HL,SP
\ 03E7 F9 LD SP,HL
366 int result;
367 char key;
368 BOOL need_draw=FALSE; //第一次进来界面同stop,不刷新主界面 zxs change
369
370 BYTE intro_counter=0; //当前文件intro模式使用rtc作为counter
371 BOOL fade_ok=TRUE; //记录淡入/淡出过程中是否播放结束,TRUE标志正常
372
373 //start play
374 voiceSendCommand(MC_PLAY, 0);
\ 03E8 CD5A07 CALL LWRD ?0220
375 play_pause = FALSE;
376
377 Cur_Status=1;
\ 03EB 3E01 LD A,1
\ 03ED 320000 LD (Cur_Status),A
378 main_ResShowPic(PLAYICN,5,3);
\ 03F0 0E03 LD C,3
\ 03F2 C5 PUSH BC
\ 03F3 0E05 LD C,5
\ 03F5 11DF00 LD DE,223
\ 03F8 CDCC02 CALL LWRD ?0227
\ 03FB F1 POP AF
\ 03FC DD36F300 LD (IX-13),0
\ 0400 DD36F400 LD (IX-12),0
\ 0404 DD36F501 LD (IX-11),1
\ 0408 ?0062:
379
380 while(1)
381 {
382 //show ui
383 if(need_draw)
\ 0408 AF XOR A
\ 0409 DDB6F3 OR (IX-13)
\ 040C 2840 JR Z,?0065
\ 040E ?0064:
384 {
385 time_t time;
386 ui_draw();
\ 040E 3E00 LD A,BYTE3 ui_draw
\ 0410 210000 LD HL,LWRD ui_draw
\ 0413 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
387
388 //get the playing time
389 voiceSendCommand(MC_GETTIME, (int)&time);
\ 0416 210600 LD HL,6
\ 0419 39 ADD HL,SP
\ 041A CD2100 CALL LWRD ?0222
390 if(!((time.hour==0)&&(time.minute==0)&&(time.second==0)))
\ 041D AF XOR A
\ 041E DDB6F6 OR (IX-10)
\ 0421 200C JR NZ,?0070
\ 0423 DD7EF7 LD A,(IX-9)
\ 0426 B7 OR A
\ 0427 2006 JR NZ,?0070
\ 0429 DD7EF8 LD A,(IX-8)
\ 042C B7 OR A
\ 042D 280B JR Z,?0067
\ 042F ?0070:
391 {
392 time_draw(&time, 0);
\ 042F 0E00 LD C,0
\ 0431 210600 LD HL,6
\ 0434 39 ADD HL,SP
\ 0435 CD3803 CALL LWRD ?0225
393 }
394 else
\ 0438 1805 JR ?0071
\ 043A ?0067:
395 numsave=0;
\ 043A 6F LD L,A
\ 043B 67 LD H,A
\ 043C 220000 LD (numsave),HL
\ 043F ?0071:
396 ///-SetTextOutMode(0);
397 SetPenColor(Color_BLACK_def);
\ 043F CD6C07 CALL LWRD ?0229
398 SetBackgdColor(Color_MENU_def);
399 ///-Scroll(g_file_name_time,TRUE,g_comval.langid);
400 ScrollInit(g_file_name_time, g_comval.langid);
\ 0442 3E00 LD A,BYTE3 ScrollInit
\ 0444 210000 LD HL,LWRD ScrollInit
\ 0447 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
401 need_draw = FALSE;
\ 044A DD36F300 LD (IX-13),0
\ 044E ?0065:
402 }
403
404 //注意: 为了显示的连贯, ap_get_message() 必须和 ui_show_a() 在同一个bank
405
406 //handle msg
407 key = ap_get_message();
\ 044E CD0000 CALL LWRD ap_get_message
408 switch( key )
\ 0451 5F LD E,A
\ 0452 CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 0455 0E00 DEFW 14
\ 0457 03 DEFB 3
\ 0458 04 DEFB 4
\ 0459 1B DEFB 27
\ 045A 1C DEFB 28
\ 045B 1D DEFB 29
\ 045C 21 DEFB 33
\ 045D 25 DEFB 37
\ 045E 26 DEFB 38
\ 045F 30 DEFB 48
\ 0460 31 DEFB 49
\ 0461 43 DEFB 67
\ 0462 44 DEFB 68
\ 0463 45 DEFB 69
\ 0464 46 DEFB 70
\ 0465 8006 DEFW ?0155
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -