⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_lyric.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_lyric(17)
	RSEG	AP_UIA_LRC(0)
	RSEG	APD_UI_LRC(0)
	RSEG	APD_UIA_LRC(0)
	EXTERN	BackupCurrentTime
	EXTERN	DealMusicFileEnd
	EXTERN	DisInFBHead
	EXTERN	DisplayErrMsg
	PUBLIC	DisplayLyricStr
	EXTERN	FadeOut
	PUBLIC	GetNowTime
	PUBLIC	LyricStrBuf
	EXTERN	PlayStatus
	EXTERN	PrevMusicInPlay
	EXTERN	PutS
	PUBLIC	RT_buf
	EXTERN	RefreshMainScreen
	EXTERN	ResShowPic
	EXTERN	SelectCurMusic
	EXTERN	SetPenColor
	EXTERN	SetTextOutMode
	EXTERN	SetTextPos
	EXTERN	ToNextMusic
	EXTERN	UpDisplayFlag
	EXTERN	VMRead
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ap_message_init
	EXTERN	g_2HZ_CNT
	EXTERN	g_TagInfoBuf
	EXTERN	g_comval
	EXTERN	g_lyricflag
	EXTERN	g_music_vars
	EXTERN	g_result
	EXTERN	lyricGetNext
	EXTERN	lyricGetPrev
	EXTERN	lyricQueryOutof
	EXTERN	lyricSeekFor
	EXTERN	musicpSendCommand
	EXTERN	need_draw
	EXTERN	ui_auto_update
	PUBLIC	ui_lyric
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?S_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_PARM_DIRECT_L09
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	AP_UIA_LRC
GetNowTime:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        voice player stop program.
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.
; 7.	*             All Right Reserved
; 8.	*
; 9.	*  $Id: ui_lyric.c,v 1.2 2006/06/26 01:14:24 tangwh Exp $
; 10.	*******************************************************************************
; 11.	*/
; 12.	
; 13.	#pragma codeseg(AP_UIA_LRC)
; 14.	#include "ap_music.h"
; 15.	
; 16.	#define ExproTimeDef 5//浏览的延时值
; 17.	
; 18.	#pragma memory=dataseg(APD_UI_LRC)
; 19.	char LyricStrBuf[88];               // 
; 20.	#pragma memory=default
; 21.	
; 22.	
; 23.	#pragma memory=dataseg(APD_UIA_LRC)
; 24.	
; 25.	//char LyricStrBuf[87];
; 26.	
; 27.	BYTE RT_buf[4]; //当前时间
; 28.	//wma_play_status_t  status_buf;//不能开在这,因为查状态调用时要换BANK
; 29.	
; 30.	#pragma memory=default
; 31.	
; 32.	#pragma memory=constseg(APC_UIA_LRC)
; 33.	#pragma memory=default
; 34.	
; 35.	void DisInFBHead(char DisMod);
; 36.	
; 37.	
; 38.	void GetNowTime( void )
; 39.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65530
; 40.	    Full_time_t curtime_buf;
; 41.	
; 42.	    BYTE temp;
; 43.	
; 44.	    if (!musicpSendCommand(MC_GETTIME, (int)& curtime_buf))
	LD	HL,0
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,128
	CALL	LWRD ?0103
	INC	L
	DEC	L
	JR	NZ,?0003
?0002:
; 45.	    {
; 46.	        *(long *)RT_buf = 0;
	LD	C,L
	LD	B,L
	LD	(RT_buf),BC
	LD	(RT_buf+2),BC
; 47.	        return;
; 48.	    }
	JR	?0004
?0003:
; 49.	    //以下三句是把时间分,秒,毫秒合成LONG形与表中数据进行比较(只比较大小)
; 50.	    * (WORD* )RT_buf = curtime_buf.TimeMs;
	LD	L,(IX-6)
	LD	H,(IX-5)
	LD	(RT_buf),HL
; 51.	    //由于原来的MS不是按WORD方式送出的,所以这里要倒一下
; 52.	    temp = RT_buf[0];
	LD	A,(RT_buf)
	LD	E,A
; 53.	    RT_buf[0] = RT_buf[1];
	LD	A,(RT_buf+1)
	LD	(RT_buf),A
; 54.	    RT_buf[1] = temp;
	LD	A,E
	LD	(RT_buf+1),A
; 55.	
; 56.	    //时间格式|MIN|SEC|MS_L|MS_H| //取出实时时间表
; 57.	    RT_buf[2] = curtime_buf.TimeSecond;
	LD	A,(IX-4)
	LD	(RT_buf+2),A
; 58.	    RT_buf[3] = curtime_buf.TimeMinute;
	LD	A,(IX-3)
	LD	(RT_buf+3),A
; 59.	    return;
; 60.	}
?0004:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0105:
	LD	C,B
?0104:
	LD	E,7
?0103:
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
DisplayLyricStr:
; 61.	
; 62.	
; 63.	void DisplayLyricStr( char * str ) //显示驱自动换行
; 64.	{
	CALL	LWRD ?ENT_PARM_DIRECT_L09
; 65.	    ResShowPic(MLRCBCK,0,0);
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0106
	POP	AF
; 66.	    SetTextOutMode(0x0f);
	LD	E,15
	CALL	LWRD SetTextOutMode
; 67.	    SetTextPos(42, 14);
	LD	C,14
	LD	E,42
	CALL	LWRD SetTextPos
; 68.	    SetPenColor(Color_WHITE_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetPenColor
; 69.	    PutS(g_TagInfoBuf, -1);
	LD	C,255
	LD	DE,g_TagInfoBuf
	CALL	LWRD PutS
; 70.	    SetTextPos(POSITION_LRCMID, POSITIONY_LRCMID);
	LD	C,99
	LD	E,40
	CALL	LWRD SetTextPos
; 71.	    SetPenColor(Color_BULE1_def);
	LD	BC,0
	LD	DE,30014
	CALL	LWRD SetPenColor
; 72.	    PutS(str, -1);
	LD	C,255
	LD	E,(IX+2)
	LD	D,(IX+3)
	CALL	LWRD PutS
; 73.	
; 74.	    SetPenColor(0x00008410);
	LD	BC,0
	LD	DE,33808
	CALL	LWRD SetPenColor
; 75.	    if(lyricGetPrev(LyricStrBuf, sizeof(LyricStrBuf)))//前一句
	CALL	LWRD ?0108
	JR	Z,?0006
?0005:
; 76.	    {
; 77.	        SetTextPos(POSITION_LRCTOP, POSITIONY_LRCTOP);
	LD	C,136
	CALL	LWRD ?0107
; 78.	        PutS(LyricStrBuf, -1);
; 79.	        lyricGetNext(LyricStrBuf, sizeof(LyricStrBuf));
	LD	A,BYTE3 lyricGetNext
	LD	HL,LWRD lyricGetNext
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0006:
; 80.	    }
; 81.	    if(lyricGetNext(LyricStrBuf, sizeof(LyricStrBuf)))//后一句
	LD	C,88
	LD	DE,LyricStrBuf
	LD	A,BYTE3 lyricGetNext
	LD	HL,LWRD lyricGetNext
	CALL	LWRD ?0109
	JR	Z,?0008
?0007:
; 82.	    {
; 83.	        SetTextPos(POSITION_LRCBOT, POSITIONY_LRCBOT);
	LD	C,60
	CALL	LWRD ?0107
; 84.	        PutS(LyricStrBuf, -1);
; 85.	        lyricGetPrev(LyricStrBuf, sizeof(LyricStrBuf));
	LD	A,BYTE3 lyricGetPrev
	LD	HL,LWRD lyricGetPrev
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0008:
; 86.	    }
; 87.	    SetTextOutMode(NOCLARITY);
	LD	E,0
	CALL	LWRD SetTextOutMode
; 88.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0106:
	LD	DE,129
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0107:
	LD	E,40
	CALL	LWRD SetTextPos
	LD	C,255
	LD	DE,LyricStrBuf
	CALL	LWRD PutS
	LD	C,88
	LD	DE,LyricStrBuf
	RET
?0108:
	LD	C,88
	LD	DE,LyricStrBuf
	LD	A,BYTE3 lyricGetPrev
	LD	HL,LWRD lyricGetPrev
?0109:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	RET
ui_lyric:
; 89.	
; 90.	
; 91.	int ui_lyric( void )
; 92.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65524
; 93.	    int key;
; 94.	
; 95.	    bool KeyUpFlag = FALSE;
; 96.	    //lyric_t *LRCTimeTabPT;
; 97.	    bool ExproFlag = FALSE; //true: 在浏览模式
; 98.	
; 99.	    wma_play_status_t status_buf;
; 100.	
; 101.	    //先刷屏
; 102.	        //ResShowPic(MENUTWO,0,0);
; 103.	         //关闭背光时间
; 104.	    VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
	LD	HL,32
	PUSH	HL
	LD	BC,512
	LD	DE,g_comval
	CALL	LWRD VMRead
	POP	HL
; 105.	      g_comval.LightTime = 0;
	XOR	A
	LD	(g_comval+9),A
; 106.	        ap_message_init(& g_comval);
	LD	DE,g_comval
	LD	A,BYTE3 ap_message_init
	LD	HL,LWRD ap_message_init
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 107.	
; 108.	    need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
	LD	(IX-1),0
	LD	(IX-2),0
?0010:
; 109.	
; 110.	    while (1)
?0014:
; 111.	    {
; 112.	        do
; 113.	        {
; 114.	            if (need_draw)
	LD	A,(need_draw)
	OR	A
	JR	Z,?0016
?0015:
; 115.	            {
; 116.	                GetNowTime();
	LD	A,BYTE3 GetNowTime
	LD	HL,LWRD GetNowTime
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 117.	                //ResShowPic(FMHEAD,0,107);
; 118.	                ResShowPic(MLRCBCK,0,0);
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0106
	POP	AF
; 119.	                lyricSeekFor(LyricStrBuf, sizeof(LyricStrBuf), * (long * )RT_buf);
	LD	HL,(RT_buf+2)
	PUSH	HL
	LD	HL,(RT_buf)
	PUSH	HL
	CALL	LWRD ?0111
	POP	AF
	POP	AF
; 120.	                DisplayLyricStr(LyricStrBuf);
	CALL	LWRD ?0110
; 121.	                need_draw = FALSE;
	XOR	A
	LD	(need_draw),A
?0016:
?0019:
; 122.	            }
; 123.	
; 124.	            //key = ap_get_message();
; 125.	
; 126.	
; 127.	            do
; 128.	            {
; 129.	                key = ap_get_message(); //读键值
	CALL	LWRD ap_get_message
	LD	C,A
	LD	B,0
; 130.	            //这里是处理快退大文件时可能丢掉KEYUP键的问题
; 131.	            }while(((PlayStatus == FFPlaySta) || (PlayStatus == FBPlaySta))
; 132.	                &&(key!=0)
; 133.	                &&(key!=(AP_KEY_PREV | AP_KEY_UP))
; 134.	                &&(key!=(AP_KEY_NEXT | AP_KEY_UP)));
	LD	A,(PlayStatus)
	CP	3
	JR	Z,?0020
	CP	4
	JR	NZ,?0017
?0020:
?0021:
	LD	A,C
	OR	A
	JR	Z,?0017
	LD	A,37
	XOR	C
	JR	Z,?0017
	LD	A,38
	XOR	C
	JR	NZ,?0016
?0017:
; 135.	
; 136.	            switch (key)
	LD	E,C
	LD	D,B
	CALL	LWRD ?S_V_SWITCH_L06
	DEFW	12
	DEFW	29
	DEFW	33
	DEFW	35
	DEFW	36
	DEFW	37
	DEFW	38
	DEFW	48
	DEFW	49
	DEFW	55
	DEFW	80
	DEFW	133
	DEFW	134
	DEFW	?0061
	DEFW	?0037
	DEFW	?0038
	DEFW	?0055
	DEFW	?0058
	DEFW	?0024
	DEFW	?0034
	DEFW	?0039
	DEFW	?0047
	DEFW	?0028
	DEFW	?0031
	DEFW	?0027
	DEFW	?0024
?0025:
; 137.	            {
; 138.	                case AP_MSG_STANDBY:        //standby 不响应
; 139.	                    break;
?0026:
; 140.	
; 141.	                case AP_KEY_AB | AP_KEY_UP: //rec 不响应
; 142.	                    break;
?0027:
; 143.	
; 144.	                case AP_KEY_PLAY | AP_KEY_UP:
; 145.	#ifdef OPT_Sup_FadeOut_fun
; 146.	                    FadeOut(FALSE);
	LD	E,B
	LD	A,BYTE3 FadeOut
	LD	HL,LWRD FadeOut
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 147.	#endif
; 148.	                    //RealDisplay();
; 149.	                    BackupCurrentTime();
	LD	A,BYTE3 BackupCurrentTime
	LD	HL,LWRD BackupCurrentTime
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 150.	                    musicpSendCommand(MC_STOP, NULL);
	LD	C,B
	LD	E,6
	CALL	LWRD ?0103
; 151.	                    musicpSendCommand(MC_BACKUP, (int)& g_music_vars.BreakPTSave);
	LD	BC,g_music_vars+48
	LD	E,68
	CALL	LWRD ?0102
; 152.	                    musicpSendCommand(MC_CLOSE, NULL);
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 153.	                    SetFullInterface();
	XOR	A
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 154.	                    RefreshMainScreen();
	LD	A,BYTE3 RefreshMainScreen
	LD	HL,LWRD RefreshMainScreen
	CALL	LWRD ?BANK_CALL_DIRECT_L08

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -