📄 sub_playstatuskey.s01
字号:
LD E,6
?0197:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,0
LD E,2
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
RET
?0198:
LD BC,g_Openparam
LD E,1
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,0
LD E,3
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
RET
?0199:
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,0
LD (g_result),HL
LD A,L
OR A
RET
?0209:
LD A,BYTE3 ChangeMusic
LD HL,LWRD ChangeMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,0
LD (g_result),HL
LD A,L
OR A
RET
PrevMusicInPlay:
; 598.
; 599.
; 600. int PrevMusicInPlay(void)
; 601. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65528
; 602. wma_play_status_t status_buf;
; 603.
; 604. musicpSendCommand(MC_STOP, NULL);
CALL LWRD ?0196
; 605. musicpSendCommand(MC_CLOSE, NULL);
CALL LWRD ?BANK_CALL_DIRECT_L08
; 606. g_result = ChangeMusic(Music_Prev, Play_key);
LD C,2
LD E,4
CALL LWRD ?0209
; 607. if(!g_result)
JR Z,?0182
?0120:
; 608. {
; 609. return RESULT_UI_STOP;//回到停止界面
; 610. }
?0121:
; 611. GetInformation(); //取文件信息
LD A,BYTE3 GetInformation
LD HL,LWRD GetInformation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 612. g_music_vars.MusicOpenMod = Nor_open;
XOR A
LD (g_music_vars+6),A
; 613. musicpSendCommand( MC_OPEN, (int)& g_Openparam );
CALL LWRD ?0198
; 614. g_result = musicpSendCommand( MC_LOAD, NULL );
CALL LWRD ?0199
; 615. if (g_result)
JR Z,?0123
?0122:
; 616. {
; 617.
; 618. musicpSendCommand(MC_CALTIME, NULL); // 算时间判断是否掉电
LD C,H
LD B,H
LD E,19
CALL LWRD ?0200
; 619. if (g_PowerOffFlag == 0x55)
LD A,(g_PowerOffFlag)
CP 85
JR NZ,?0128
?0124:
; 620. {
; 621. if (!DisplayTimeRollback())
LD A,BYTE3 DisplayTimeRollback
LD HL,LWRD DisplayTimeRollback
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR NZ,?0128
?0126:
; 622. {
; 623. musicpSendCommand(MC_STOP, NULL);
LD C,L
LD B,L
LD E,6
CALL LWRD ?0200
; 624. musicpSendCommand(MC_CLOSE, NULL);
CALL LWRD ?0192
; 625. SetFullInterface();
; 626. need_draw = TRUE;
; 627. return RESULT_UI_STOP;
?0182:
JR ?0183
; 628. }
?0127:
?0125:
; 629. }
; 630.
; 631.
; 632.
; 633. }
; 634. // if(!g_result)
; 635. else
?0123:
; 636. {
; 637. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
LD L,H
ADD HL,SP
CALL LWRD ?0193
; 638.
; 639. ErrReport(PlayStatus);
; 640. PlayStatus=StopSta;
; 641. return RESULT_UI_STOP;//回到停止界面
?0183:
LD HL,102
; 642. //}
; 643. }
JR ?0129
?0128:
; 644. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 645. UpDisplayFlag=UpDisplayFlag & clr_musicBackGDPic ; //by zxs for not refresh the bg
LD HL,UpDisplayFlag
RES 0,(HL)
; 646. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 647. // musicpSendCommand(MC_CALTIME, NULL);
; 648.
; 649. musicpSendCommand(MC_SETPOWERCOUNT, 5); //by jmzhang
CALL LWRD ?0195
; 650. musicpSendCommand(MC_PLAY, NULL);
CALL LWRD ?BANK_CALL_DIRECT_L08
; 651. //StartIntro(TRUE);
; 652. return NULL;
LD HL,0
; 653. }
?0129:
JP LWRD ?BANK_LEAVE_DIRECT_L08
DealPlayKey:
; 654.
; 655. //===================================================
; 656. int DealPlayKey( void )
; 657. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65534
; 658. uchar IMK_Reg;
; 659. if (g_FCexitflag)
LD A,(g_FCexitflag)
OR A
JR Z,?0131
?0130:
; 660. {
; 661. //关闭音量(在有此情况下退出时不想发声)
; 662. musicpSendCommand(MC_SETVOLUME, 0);
LD BC,0
LD E,64
CALL LWRD ?0200
; 663. OutPutVolume(0);
LD DE,0
LD A,BYTE3 OutPutVolume
LD HL,LWRD OutPutVolume
CALL LWRD ?BANK_CALL_DIRECT_L08
; 664. musicpSendCommand(MC_FADEINOUT, FadeOut2_def);//调用快速FADEOUT
LD BC,3
LD E,13
CALL LWRD ?0200
?0131:
; 665. }
; 666. if (RePlayStatus != NormalPlay)
LD A,(RePlayStatus)
OR A
JR Z,?0133
?0132:
; 667. {
; 668. //clear set ab point
; 669. musicpSendCommand(MC_SETA_B, ClrABPoint);
CALL LWRD ?0201
; 670. RePlayStatus = NormalPlay;
XOR A
LD (RePlayStatus),A
; 671. main_ResShowPic(BBCK1,79,20);
LD C,20
PUSH BC
LD C,79
LD DE,22
CALL LWRD ?0206
POP AF
?0133:
; 672. // Show_MusicType();
; 673. // Show_Bitrate();
; 674. }
; 675. #ifdef OPT_Sup_FadeOut_fun
; 676. if (!g_FCexitflag)
LD A,(g_FCexitflag)
OR A
JR NZ,?0135
?0134:
; 677. {
; 678. FadeOut(TRUE);
LD E,1
LD A,BYTE3 FadeOut
LD HL,LWRD FadeOut
CALL LWRD ?BANK_CALL_DIRECT_L08
?0135:
; 679. }
; 680. #endif
; 681. g_FCexitflag = FALSE;
XOR A
LD (g_FCexitflag),A
; 682. musicpSendCommand(MC_STOP, NULL);
LD C,A
LD B,A
LD E,6
CALL LWRD ?0200
; 683. //*********************************************
; 684. IMK_Reg=input8(0x27);
IN A,(39)
LD (IX-2),A
; 685. output8(0x27,0);
; 686. MusicEdit_SelSeg.EndSec=FS_FTell(m_Mp3deFileHandle);
CALL LWRD ?0207
; 687. MusicEditEndTime.second=c_mp3deNowTimeSencond;
; 688. MusicEditEndTime.minute=c_mp3deNowTimeMinute;
; 689. MusicEditEndTime.hour= c_mp3deNowTimeHour;
; 690. output8(0x27,IMK_Reg);
LD A,(IX-2)
OUT (39),A
; 691. //**********************************************
; 692. musicpSendCommand(MC_BACKUP, NULL);
LD BC,0
LD E,68
CALL LWRD ?0197
; 693. musicpSendCommand(MC_CLOSE, NULL);
CALL LWRD ?BANK_CALL_DIRECT_L08
; 694. // SetStopToPlayInterface();
; 695. g_music_vars.MusicOpenMod = Nor_Break_open;
LD A,1
LD (g_music_vars+6),A
; 696. // RefreshMainScreen();
; 697. ifSelBuffToltalTimeFlag = TRUE;
LD (ifSelBuffToltalTimeFlag),A
; 698. //return RESULT_NULL; //退回上一层
; 699. PlayStatus=PauseSta; // zxs add for not refresh the background
LD (PlayStatus),A
; 700. return RESULT_UI_STOP;//退回到停止状态
LD HL,102
; 701. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
ErrReport:
; 702.
; 703. /******************************************************************************
; 704. ** 名字:
; 705. ** 接口:
; 706. ** 描述: 在 play 状态下碰到 错的报告
; 707. ** 输入参数:
; 708. ** 输出参数:
; 709. ** 使用说明:
; 710. ********************************************************************************/
; 711. void ErrReport(Play_status_t status)
; 712. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65510
; 713. wma_inf_t drminfbuff;
; 714. if (musicpSendCommand(MC_GETINF, (int)&drminfbuff))
LD HL,0
ADD HL,SP
LD C,L
LD B,H
LD E,16
CALL LWRD ?0200
INC L
DEC L
JR Z,?0139
?0136:
; 715. {
; 716. if (drminfbuff.drmmode == INF_DRMNOLICENSE)
LD B,(IX-26)
DEC B
DEC B
JR NZ,?0139
?0138:
; 717. {
; 718. DisplayErrMsg(NOLICENS);//显示无licens
LD DE,599
JR ?0186
; 719. goto ErrReport_exit;
?0139:
?0137:
; 720. }
; 721. }
; 722. if ( (g_music_vars.location.disk == 'H')
; 723. && (DRV_DetectUD(1) != 0x20) )
LD A,(g_music_vars+7)
CP 72
JR NZ,?0142
LD E,1
CALL LWRD DRV_DetectUD
CP 32
JR Z,?0142
?0144:
?0143:
?0141:
; 724. {
; 725. DisplayErrMsg(CARDPULL);//显示卡拔出
LD DE,394
JR ?0186
; 726. }
; 727. else
?0142:
; 728. {
; 729. if(g_music_vars.fselmod == FSEL_TYPE_USERPL) // 收藏夹中的文件是在播放状态下加入,一般不会格式错误
LD A,(g_music_vars+81)
DEC A
DEC A
JR NZ,?0147
?0146:
; 730. {
; 731. DisplayErrMsg(MFILEOUT);
LD DE,535
LD A,BYTE3 DisplayErrMsg
LD HL,LWRD DisplayErrMsg
CALL LWRD ?BANK_CALL_DIRECT_L08
; 732. g_music_vars.fselmod = FSEL_TYPE_COMMONDIR; //收藏夹出错要先退出收藏夹模式
XOR A
LD (g_music_vars+81),A
; 733. }
; 734. else
JR ?0148
?0147:
; 735. DisplayErrMsg(MFMTERR);//显示格式错
LD DE,538
?0186:
LD A,BYTE3 DisplayErrMsg
LD HL,LWRD DisplayErrMsg
CALL LWRD ?BANK_CALL_DIRECT_L08
?0148:
?0145:
?0140:
; 736. }
; 737.
; 738. //common exit
; 739. ErrReport_exit:
; 740. if ((status != StopSta)&&(status != PauseSta))
XOR A
OR (IX+2)
JR Z,?0150
LD B,A
DEC B
JR Z,?0150
?0152:
?0151:
?0149:
; 741. {
; 742. musicpSendCommand(MC_STOP, NULL);
LD BC,0
LD E,6
CALL LWRD ?0200
?0150:
; 743. }
; 744. musicpSendCommand(MC_CLOSE, NULL);
LD BC,0
LD E,2
CALL LWRD ?0200
; 745. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 746. return;
; 747. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
DealFilePlayEnd:
; 748.
; 749. int DealFilePlayEnd(void)
; 750. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -8
; 751. int g_result_bak;
; 752. music_play_status_t status_buf;
; 753. /////////////////////////////////////////////////////////////////////////////////////
; 754. g_result_bak=g_result;
LD DE,(g_result)
; 755. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
PUSH DE
LD HL,2
ADD HL,SP
LD C,L
LD B,H
LD E,131
CALL LWRD ?0200
POP DE
; 756. if (status_buf.status == PLAYING_REACH_END)
LD A,(IX-8)
CP 6
JR NZ,?0156
?0153:
; 757. {
; 758. g_result=DealMusicFileEnd(0);
PUSH DE
LD E,0
LD A,BYTE3 DealMusicFileEnd
LD HL,LWRD DealMusicFileEnd
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
POP DE
; 759. if ( g_result != NULL )
LD A,L
OR H
JR Z,?0156
?0155:
; 760. {
; 761. if(g_result_bak) //g_result_bak !=0,返回其消息
LD A,E
OR D
JR Z,?0159
?0157:
; 762. {
; 763. g_result = g_result_bak;
LD (g_result),DE
; 764. return g_result;
EX DE,HL
; 765. }
JR ?0159
?0158:
; 766. else
; 767. return g_result;
; 768. }
?0156:
?0154:
; 769. }
; 770. g_result=g_result_bak;
LD (g_result),DE
; 771. //////////////////////////////////////////////////////////////////////////////////////解决DRM在菜单中长按mode重启问题
; 772. return 0;
LD HL,0
; 773. }
?0159:
JP LWRD ?BANK_LEAVE_DIRECT_L08
RSEG IDATA0
g_volcounter:
DEFS 1
RSEG CDATA0
DEFB 0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -