ui_play.s01

来自「MP3 整个 SDK」· S01 代码 · 共 1,057 行 · 第 1/2 页

S01
1,057
字号
	LD	HL,0
; 180.	               }
	JR	?0082
?0056:
; 181.	               else if(tmp==-1)
	LD	B,(HL)
	INC	B
	JR	NZ,?0067
?0065:
; 182.	               {
; 183.	                   output8(0x27,input8(0x27)|0x40);
	IN	A,(39)
	SET	6,A
	OUT	(39),A
; 184.	                   FS_FClose(fp);
	LD	DE,(fp)
	CALL	LWRD FS_FClose
; 185.	                   switch(PlayStatus)
	LD	A,(PlayStatus)
	CP	2
	JR	C,?0071
	CP	5
	JR	NC,?0071
?0068:
; 186.	                   {
; 187.	                   case PlaySta:
; 188.	                   case FFPlaySta:
; 189.	                   case FBPlaySta:
; 190.	                       g_result = DealMusicFileEnd(0);
	LD	E,B
	LD	A,BYTE3 DealMusicFileEnd
	LD	HL,LWRD DealMusicFileEnd
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 191.	                        if ( g_result != NULL )
	LD	A,L
	OR	H
	JR	Z,?0076
?0069:
; 192.	                        {
; 193.	                            return g_result;
	JR	?0112
; 194.	                        }
?0070:
; 195.	                        need_draw = TRUE;
; 196.	                        break;
?0071:
	CP	5
	JR	NZ,?0074
; 197.	                    case NextPlaySta:
; 198.	                        g_result = ToNextMusic(Play_key);
	LD	E,2
	LD	A,BYTE3 ToNextMusic
	LD	HL,LWRD ToNextMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 199.	                        if ( g_result != NULL )
	LD	A,L
	OR	H
	JR	Z,?0076
?0072:
; 200.	                        {
; 201.	                            return g_result;
	JR	?0112
; 202.	                        }
?0073:
; 203.	                        need_draw = TRUE;
; 204.	                        break;
?0074:
	CP	6
	JR	NZ,?0077
; 205.	                    case PrevPlaySta:
; 206.	                        g_result = PrevMusicInPlay();
	LD	A,BYTE3 PrevMusicInPlay
	LD	HL,LWRD PrevMusicInPlay
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 207.	                        if ( g_result != NULL )
	LD	A,L
	OR	H
	JR	NZ,?0112
?0075:
; 208.	                        {
; 209.	                            return g_result;
; 210.	                        }
?0076:
; 211.	                        need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 212.	                        break;
	JR	?0067
?0077:
; 213.	
; 214.	                   default:
; 215.	                       AmvDecSetCMD(MC_CLOSE,(int )&g_amv_vars.amvfilebreakpoint);
	LD	BC,g_amv_vars+46
	LD	E,2
	CALL	LWRD ?0126
; 216.	                       return g_result;
?0112:
	LD	HL,(g_result)
; 217.	                   }
?0082:
	POP	AF
	POP	AF
	POP	AF
	POP	AF
	POP	IX
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0067:
?0066:
; 218.	
; 219.	               }
; 220.	
; 221.	             // if(g_amv_vars.location.disk=='H')
; 222.	
; 223.	              {
; 224.	                 if((PlayStatus!=FFPlaySta)&&(PlayStatus!=FBPlaySta))
	LD	A,(PlayStatus)
	CP	3
	JP	Z,?0003
	CP	4
	JP	Z,?0003
?0081:
?0080:
?0078:
; 225.	                 ReadOnePageFromDisk();                            //判断是否从卡上读数据
	CALL	LWRD ReadOnePageFromDisk
?0079:
; 226.	              }
; 227.	
; 228.	        }/* while(1) */
; 229.	
; 230.	}
	JP	LWRD ?0003
?0127:
	LD	BC,0
	LD	E,6
?0126:
	LD	A,BYTE3 AmvDecSetCMD
	LD	HL,LWRD AmvDecSetCMD
	JP	LWRD ?BANK_CALL_DIRECT_L08
ShowNowTime:
; 231.	
; 232.	/*
; 233.	********************************************************************************
; 234.	*             void Show_Bitrate( void )
; 235.	*
; 236.	* Description : 显示比特率
; 237.	*
; 238.	* Arguments   : void
; 239.	*
; 240.	* Returns     : void
; 241.	*
; 242.	* Notes       :
; 243.	*
; 244.	********************************************************************************
; 245.	*/
; 246.	
; 247.	void ShowNowTime(bool para)
; 248.	{
	PUSH	BC
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	DE
	LD	HL,65526
	ADD	HL,SP
	LD	SP,HL
; 249.	    long int totaltime,nowtime;
; 250.	    int num,i;
; 251.	
; 252.	    nowtime = g_amv_vars.amvfilebreakpoint.TimeHou*3600+g_amv_vars.amvfilebreakpoint.TimeMin*60
; 253.	            + g_amv_vars.amvfilebreakpoint.TimeSec;
	LD	BC,(g_amv_vars+51)
	LD	B,0
	LD	DE,60
	CALL	LWRD ?S_MUL_L02
	PUSH	DE
	LD	BC,(g_amv_vars+52)
	LD	B,0
	LD	DE,3600
	CALL	LWRD ?S_MUL_L02
	EX	DE,HL
	POP	DE
	ADD	HL,DE
	LD	BC,(g_amv_vars+50)
	LD	B,0
	ADD	HL,BC
	LD	A,H
	RLCA
	SBC	A,A
	LD	C,A
	LD	B,C
	LD	(IX-10),L
	LD	(IX-9),H
	LD	(IX-8),C
	LD	(IX-7),B
; 254.	    totaltime = Totaltime.hour*3600+Totaltime.minute*60+Totaltime.second;
	LD	DE,(Totaltime+1)
	LD	D,0
	LD	BC,60
	CALL	LWRD ?S_MUL_L02
	PUSH	DE
	LD	BC,(Totaltime)
	LD	B,0
	LD	DE,3600
	CALL	LWRD ?S_MUL_L02
	EX	DE,HL
	POP	DE
	ADD	HL,DE
	LD	BC,(Totaltime+2)
	LD	B,0
	ADD	HL,BC
	LD	A,H
	RLCA
	SBC	A,A
	LD	C,A
	LD	B,C
; 255.	    num=(nowtime*193)/totaltime;
	PUSH	BC
	PUSH	HL
	LD	HL,0
	PUSH	HL
	LD	L,193
	PUSH	HL
	LD	C,(IX-8)
	LD	B,(IX-7)
	LD	L,(IX-10)
	LD	H,(IX-9)
	CALL	LWRD ?L_MUL_L03
	CALL	LWRD ?SL_DIV_L03
	LD	(IX-12),L
	LD	(IX-11),H
; 256.	    itoa_1(g_amv_vars.amvfilebreakpoint.TimeHou, temp_buffer);
	LD	BC,temp_buffer
	LD	DE,(g_amv_vars+52)
	LD	A,BYTE3 itoa_1
	LD	HL,LWRD itoa_1
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 257.	    itoa_2(g_amv_vars.amvfilebreakpoint.TimeMin,  & temp_buffer[1]);
	LD	BC,temp_buffer+1
	LD	DE,(g_amv_vars+51)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 258.	    itoa_2(g_amv_vars.amvfilebreakpoint.TimeSec, & temp_buffer[3]);
	LD	BC,temp_buffer+3
	LD	DE,(g_amv_vars+50)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 259.	    temp_buffer[5] = 0x00;
	XOR	A
	LD	(temp_buffer+5),A
; 260.	    ui_show_d(temp_buffer);
	LD	DE,temp_buffer
	LD	A,BYTE3 ui_show_d
	LD	HL,LWRD ui_show_d
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 261.	    if(!para)
	XOR	A
	OR	(IX-2)
	JR	NZ,?0084
?0083:
; 262.	    {
; 263.	        main_ResShowPic(GUAGEBG, POS_GUAGEBG-2, POSY_GUAGE-1);     //刷新进度条背景
	LD	C,29
	PUSH	BC
	LD	C,13
	LD	DE,75
	CALL	LWRD ?0128
	POP	AF
; 264.	        for(i=0;i<num;i++)
	LD	IY,0
?0086:
	LD	C,(IX-12)
	LD	B,(IX-11)
	PUSH	IY
	POP	HL
	OR	128
	SBC	HL,BC
	JP	PO,?0124
	XOR	H
?0124:
	JP	P,?0089
?0087:
; 265.	           main_ResShowPic(GUAGE,POS_GUAGE+i,POSY_GUAGE);
	LD	C,30
	PUSH	BC
	PUSH	IY
	POP	HL
	LD	A,L
	ADD	A,15
	LD	C,A
	LD	DE,74
	CALL	LWRD ?0128
	POP	AF
; 266.	    }
	INC	IY
	JR	?0086
?0085:
; 267.	    else
?0084:
; 268.	    {
; 269.	        main_ResShowPic(GUAGE,POS_GUAGE+num-1,POSY_GUAGE);  //防止出现断点
	LD	C,30
	PUSH	BC
	LD	A,(IX-12)
	ADD	A,14
	LD	C,A
	LD	DE,74
	CALL	LWRD ?0128
	POP	AF
; 270.	        main_ResShowPic(GUAGE,POS_GUAGE+num,POSY_GUAGE);
	LD	C,30
	PUSH	BC
	LD	A,(IX-12)
	ADD	A,15
	LD	C,A
	LD	DE,74
	CALL	LWRD ?0128
	POP	AF
?0089:
; 271.	    }
; 272.	}
	LD	SP,IX
	POP	IX
	POP	IY
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0129:
	LD	E,(HL)
	LD	D,0
	LD	HL,81
	ADD	HL,DE
	EX	DE,HL
?0128:
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
Show_Bitrate:
; 273.	
; 274.	//----------------
; 275.	
; 276.	//-----------------------------------
; 277.	
; 278.	void Show_Bitrate( void )
; 279.	{
	PUSH	BC
	PUSH	DE
	PUSH	AF
	PUSH	AF
	PUSH	AF
; 280.	    audio_format_t pFormat;
; 281.	
; 282.	    pFormat.bit_rate[0] = 0;
	LD	HL,3
	ADD	HL,SP
	LD	(HL),0
; 283.	    pFormat.bit_rate[1] = 8;
	INC	HL
	LD	(HL),8
; 284.	    pFormat.bit_rate[2] = 8;
	INC	HL
	LD	(HL),8
; 285.	
; 286.	    main_ResShowPic(MBIT0+pFormat.bit_rate[0],POS_BITRATE,POSY_BITRATE);
	LD	C,4
	PUSH	BC
	LD	C,9
	DEC	HL
	DEC	HL
	CALL	LWRD ?0129
	POP	AF
; 287.	    main_ResShowPic(MBIT0+pFormat.bit_rate[1],POS_BITRATE+6,POSY_BITRATE);
	LD	C,4
	PUSH	BC
	LD	C,15
	LD	HL,6
	ADD	HL,SP
	CALL	LWRD ?0129
	POP	AF
; 288.	    main_ResShowPic(MBIT0+pFormat.bit_rate[2],POS_BITRATE+12,POSY_BITRATE);
	LD	C,4
	PUSH	BC
	LD	C,21
	LD	HL,7
	ADD	HL,SP
	CALL	LWRD ?0129
	POP	AF
; 289.	}
	POP	HL
	POP	HL
	POP	HL
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
InitLcmDeviceInfor:
; 290.	
; 291.	
; 292.	int InitLcmDeviceInfor(ColorLcmInfor *infor)
; 293.	{
	PUSH	IX
	PUSH	DE
	POP	IX
; 294.	    infor->LcmWidth=CSTNPixelWidth;  //set width;
	EX	DE,HL
	LD	(HL),220
; 295.	    infor->LcmHeigh=CSTNPixelHeight; //set height
	LD	(IX+1),176
; 296.	    infor->RScale=5;   //set color number
	LD	(IX+2),5
; 297.	    infor->GScale=6;
	LD	(IX+3),6
; 298.	    infor->BScale=5;
	LD	(IX+4),5
; 299.	    infor->RGBOrder=0; // set the order
	LD	(IX+5),0
; 300.	    return 0;
	LD	HL,0
; 301.	}
	POP	IX
	JP	LWRD ?BANK_FAST_LEAVE_L08
ToNextMusic:
; 302.	
; 303.	
; 304.	
; 305.	int ToNextMusic( Music_sel_mod_t mod )
; 306.	{
	PUSH	BC
	PUSH	DE
; 307.	    output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 308.	        g_result = ChangeMusic(Music_Next, mod);
	LD	C,E
	LD	E,3
	LD	A,BYTE3 ChangeMusic
	LD	HL,LWRD ChangeMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,0
	LD	(g_result),HL
; 309.	        if(!g_result)
	LD	A,L
	OR	A
	JR	NZ,?0091
?0090:
; 310.	        {
; 311.	            return RESULT_UI_STOP;//回到停止界面
	LD	L,102
; 312.	        }
	JR	?0092
?0091:
; 313.	        GetInformation(); //取文件信息
	LD	A,BYTE3 GetInformation
	LD	HL,LWRD GetInformation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 314.	        return NULL;
	LD	HL,0
; 315.	}
?0092:
	POP	AF
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
PrevMusicInPlay:
; 316.	
; 317.	
; 318.	int PrevMusicInPlay(void)
; 319.	{
	PUSH	BC
	PUSH	DE
; 320.	
; 321.	    g_result = ChangeMusic(Music_Prev, Play_key);
	LD	C,2
	LD	E,4
	LD	A,BYTE3 ChangeMusic
	LD	HL,LWRD ChangeMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,0
	LD	(g_result),HL
; 322.	    if(!g_result)
	LD	A,L
	OR	A
	JR	NZ,?0094
?0093:
; 323.	    {
; 324.	        return RESULT_UI_STOP;//回到停止界面
	LD	L,102
; 325.	    }
	JR	?0095
?0094:
; 326.	    GetInformation(); //取文件信息
	LD	A,BYTE3 GetInformation
	LD	HL,LWRD GetInformation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 327.	    return NULL;
	LD	HL,0
; 328.	}
?0095:
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
SetAmvWin:
; 329.	
; 330.	////////////////////////// Amv设窗
; 331.	void SetAmvWin(void)
; 332.	{
	PUSH	DE
; 333.	    
; 334.	 SetWindow(&AmvRegion);    
	LD	DE,AmvRegion
	CALL	LWRD SetWindow
; 335.	    
; 336.	}
	POP	DE
	JP	LWRD ?BANK_FAST_LEAVE_L08
; 337.	///////////////////////
; 338.	
	RSEG	UDATA0
Dscinf:
	DEFS	6
	END

⌨️ 快捷键说明

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