📄 main.lst
字号:
404 ********************************************************************************
405 */
406 void speed_callback(int value)
407 {
\ 046C C5 PUSH BC
\ 046D D5 PUSH DE
408 //DUMP_NUM(value);
409 g_voice_vars.play_rate = value;
\ 046E 7B LD A,E
\ 046F 322500 LD (g_voice_vars+5),A
410
411 voiceSendCommand(MC_SETSPEED, g_voice_vars.play_rate);
\ 0472 ED4B2500 LD BC,(g_voice_vars+5)
\ 0476 79 LD A,C
\ 0477 07 RLCA
\ 0478 9F SBC A,A
\ 0479 47 LD B,A
\ 047A 1E46 LD E,70
\ 047C CD1104 CALL LWRD ?0140
412 }
\ 047F E1 POP HL
\ 0480 C1 POP BC
\ 0481 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0484 show_speed:
413
414 /*
415 ********************************************************************************
416 * Description : 播放速度设置界面
417 *
418 * Arguments :
419 *
420 * Returns :
421 *
422 * Notes :
423 *
424 ********************************************************************************
425 */
426 int show_speed(void)
427 {
\ 0484 C5 PUSH BC
\ 0485 D5 PUSH DE
\ 0486 DDE5 PUSH IX
428 int result;
429
430 ClearScreen(NULL);
\ 0488 110000 LD DE,0
\ 048B CD0000 CALL LWRD ClearScreen
431
432 UpdateScreen(NULL);
\ 048E 110000 LD DE,0
\ 0491 CD0000 CALL LWRD UpdateScreen
433 slider.title=VPLAYM2;
\ 0494 21B601 LD HL,438
\ 0497 22CB00 LD (slider),HL
434 slider.value = g_voice_vars.play_rate;
\ 049A ED4B2500 LD BC,(g_voice_vars+5)
\ 049E 79 LD A,C
\ 049F 07 RLCA
\ 04A0 9F SBC A,A
\ 04A1 47 LD B,A
\ 04A2 ED43D100 LD (slider+6),BC
435 slider.max = +8;
\ 04A6 210800 LD HL,8
\ 04A9 22CF00 LD (slider+4),HL
436 slider.min = -8;
\ 04AC 21F8FF LD HL,65528
\ 04AF 22CD00 LD (slider+2),HL
437 slider.step = 1;
\ 04B2 210100 LD HL,1
\ 04B5 22D300 LD (slider+8),HL
438 slider.string_id=g_comval.langid;
\ 04B8 3A0C00 LD A,(g_comval+12)
\ 04BB 32D500 LD (slider+10),A
439 ui_auto_update=FALSE;
\ 04BE AF XOR A
\ 04BF 320000 LD (ui_auto_update),A
440 result = ui_slider(&slider, speed_callback);
\ 04C2 0E00 LD C,BYTE3 speed_callback
\ 04C4 C5 PUSH BC
\ 04C5 216C04 LD HL,LWRD speed_callback
\ 04C8 E5 PUSH HL
\ 04C9 11CB00 LD DE,slider
\ 04CC 3E00 LD A,BYTE3 ui_slider
\ 04CE 210000 LD HL,LWRD ui_slider
\ 04D1 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 04D4 F1 POP AF
\ 04D5 F1 POP AF
441 ui_auto_update=TRUE;
\ 04D6 3E01 LD A,1
\ 04D8 320000 LD (ui_auto_update),A
442 return result;
443 }
\ 04DB DDE1 POP IX
\ 04DD D1 POP DE
\ 04DE C1 POP BC
\ 04DF C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 04E2 sel_next:
444
445 /*
446 ********************************************************************************
447 * Description : 选择下一个文件
448 *
449 * Arguments : select_all: TRUE,选择全部文件; FALSE, 按照当前的循环模式
450 *
451 * Returns : 成功, TRUE
452 失败, FALSE
453 *
454 * Notes :
455 *
456 ********************************************************************************
457 */
458 BOOL sel_next(BOOL select_all)
459 {
\ 04E2 C5 PUSH BC
\ 04E3 D5 PUSH DE
\ 04E4 F5 PUSH AF
460 BOOL mc_result;
461 handle f_handle;
462
463 if(Cur_Status==2)
\ 04E5 3A0000 LD A,(Cur_Status)
\ 04E8 3D DEC A
\ 04E9 3D DEC A
\ 04EA 2003 JR NZ,?0058
\ 04EC ?0057:
464 Cur_Status=0;
\ 04EC 320000 LD (Cur_Status),A
\ 04EF ?0058:
465
466 if(select_all)
\ 04EF AF XOR A
\ 04F0 B3 OR E
\ 04F1 2804 JR Z,?0060
\ 04F3 ?0059:
467 {
468 FSELSetMode(FSEL_ALL_REPEATALL);
\ 04F3 1E04 LD E,4
\ 04F5 1804 JR ?0127
469
470 }
471 else
\ 04F7 ?0060:
472 {
473 //maybe the mode changed in ui_play()
474 FSELSetMode(g_voice_vars.repeat_mode);
\ 04F7 ED5B2300 LD DE,(g_voice_vars+3)
\ 04FB ?0127:
\ 04FB CDFD03 CALL LWRD ?0139
\ 04FE ?0061:
475 }
476
477 mc_result = fselGetNextFile(g_voice_vars.location.filename);
\ 04FE E5 PUSH HL
\ 04FF C1 POP BC
478 output8(0x4e,input8(0x4e)|0x8);
\ 0500 DB4E IN A,(78)
\ 0502 CBDF SET 3,A
\ 0504 D34E OUT (78),A
479 if(!mc_result)
\ 0506 AF XOR A
\ 0507 B1 OR C
\ 0508 2018 JR NZ,?0063
\ 050A ?0062:
480 {
481 if(fselGetErrID() == FSEL_ERR_OUTOF)
\ 050A 3E00 LD A,BYTE3 fselGetErrID
\ 050C 210000 LD HL,LWRD fselGetErrID
\ 050F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0512 2D DEC L
\ 0513 201C JR NZ,?0066
\ 0515 ?0064:
482 {
483 fselSetLocation(&g_voice_vars.location);
\ 0515 112600 LD DE,g_voice_vars+6
\ 0518 3E00 LD A,BYTE3 fselSetLocation
\ 051A 210000 LD HL,LWRD fselSetLocation
\ 051D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
484 return FALSE;
\ 0520 180F JR ?0066
485 }
\ 0522 ?0065:
486 }
487 else //normal next file
\ 0522 ?0063:
488 {
489 fselGetLocation(&g_voice_vars.location);
\ 0522 CDF203 CALL LWRD ?0138
490 make_dirname();
\ 0525 3E00 LD A,BYTE3 make_dirname
\ 0527 210000 LD HL,LWRD make_dirname
\ 052A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
491 return TRUE;
\ 052D 2E01 LD L,1
492 }
\ 052F 1801 JR ?0067
\ 0531 ?0066:
493
494 return FALSE;
\ 0531 69 LD L,C
495 }
\ 0532 ?0067:
\ 0532 F1 POP AF
\ 0533 F1 POP AF
\ 0534 C1 POP BC
\ 0535 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0538 sel_prev:
496
497 /*
498 ********************************************************************************
499 * Description : 选择上一个文件
500 *
501 * Arguments : select_all, TRUE,选择全部文件, FALSE, 按照当前的循环模式
502 *
503 * Returns : 成功, TRUE
504 失败, FALSE
505 *
506 * Notes :
507 *
508 ********************************************************************************
509 */
510 BOOL sel_prev(BOOL select_all)
511 {
\ 0538 C5 PUSH BC
\ 0539 D5 PUSH DE
\ 053A F5 PUSH AF
512 BOOL mc_result;
513 handle f_handle;
514
515 if(Cur_Status==2)
\ 053B 3A0000 LD A,(Cur_Status)
\ 053E 3D DEC A
\ 053F 3D DEC A
\ 0540 2003 JR NZ,?0069
\ 0542 ?0068:
516 Cur_Status=0;
\ 0542 320000 LD (Cur_Status),A
\ 0545 ?0069:
517
518 if(select_all)
\ 0545 AF XOR A
\ 0546 B3 OR E
\ 0547 2804 JR Z,?0071
\ 0549 ?0070:
519 {
520 FSELSetMode(FSEL_ALL_REPEATALL);
\ 0549 1E04 LD E,4
\ 054B 1804 JR ?0131
521 }
522 else
\ 054D ?0071:
523 {
524 //maybe the mode changed in ui_play()
525 FSELSetMode(g_voice_vars.repeat_mode);
\ 054D ED5B2300 LD DE,(g_voice_vars+3)
\ 0551 ?0131:
\ 0551 3E00 LD A,BYTE3 fselSetMode
\ 0553 210000 LD HL,LWRD fselSetMode
\ 0556 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0559 ?0072:
526 }
527
528 mc_result = fselGetPrevFile(g_voice_vars.location.filename);
\ 0559 114000 LD DE,g_voice_vars+32
\ 055C 3E00 LD A,BYTE3 fselGetPrevFile
\ 055E 210000 LD HL,LWRD fselGetPrevFile
\ 0561 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0564 E5 PUSH HL
\ 0565 C1 POP BC
529 output8(0x4e,input8(0x4e)|0x8);
\ 0566 DB4E IN A,(78)
\ 0568 CBDF SET 3,A
\ 056A D34E OUT (78),A
530 if(!mc_result)
\ 056C AF XOR A
\ 056D B1 OR C
\ 056E 2018 JR NZ,?0074
\ 0570 ?0073:
531 {
5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -