ui_play.s01

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

S01
1,532
字号
?0053:
; 223.	        {
; 224.	            return 0;
?0153:
	LD	HL,0
; 225.	        }
?0055:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0054:
; 226.	
; 227.	    }/* while(1) */
; 228.	
; 229.	}
	JP	LWRD ?0003
?0169:
	LD	E,0
	LD	A,BYTE3 DealMusicFileEnd
	LD	HL,LWRD DealMusicFileEnd
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0170:
	LD	C,L
	LD	B,H
	LD	E,131
?0171:
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
RealDisplay:
; 230.	/*
; 231.	********************************************************************************
; 232.	*             void RealDisplay( void )
; 233.	*
; 234.	* Description : 显示时间,滚屏,AB闪
; 235.	*
; 236.	* Arguments   : void
; 237.	*
; 238.	* Returns     : int
; 239.	*
; 240.	* Notes       :
; 241.	*
; 242.	********************************************************************************
; 243.	*/
; 244.	int RealDisplay( void )
; 245.	{
	PUSH	BC
	PUSH	DE
; 246.	//    DisplayMIPSForTest();
; 247.	
; 248.	    BackupCurrentTime();
	LD	A,BYTE3 BackupCurrentTime
	LD	HL,LWRD BackupCurrentTime
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 249.	
; 250.	    if (g_music_vars.BreakPTDisTime.second != g_OldSecTempBackup)
	LD	A,(g_music_vars+77)
	PUSH	AF
	LD	A,(g_OldSecTempBackup)
	LD	B,A
	POP	AF
	CP	B
	JR	Z,?0057
?0056:
; 251.	    {
; 252.	        g_OldSecTempBackup = g_music_vars.BreakPTDisTime.second;
	LD	A,(g_music_vars+77)
	LD	(g_OldSecTempBackup),A
; 253.	
; 254.	        if (g_music_vars.repeat_mode == Intro)
	LD	A,(g_music_vars+1)
	CP	6
	JR	NZ,?0061
?0058:
; 255.	        {
; 256.	            g_introCNT++;
	LD	HL,g_introCNT
	INC	(HL)
; 257.	            if ( (g_introCntMode
; 258.	                    && (g_music_vars.BreakPTDisTime.second > IntCntValDef) )
; 259.	                    || (g_introCNT > IntCntValDef) )
	LD	A,(g_introCntMode)
	OR	A
	JR	Z,?0063
	LD	A,(g_music_vars+77)
	LD	B,A
	LD	A,10
	CP	B
	JR	C,?0064
?0063:
?0062:
	LD	A,(g_introCNT)
	LD	B,A
	LD	A,10
	CP	B
	JR	NC,?0061
?0064:
?0065:
?0060:
; 260.	
; 261.	            {                   //从头开始的情况
; 262.	
; 263.	                return DealMusicFileEnd(0);
	CALL	LWRD ?0169
; 264.	            }
	JP	LWRD ?0081
?0061:
?0059:
; 265.	        }
; 266.	        if(RePlayStatus == NormalPlay) Show_Bitrate();            
	LD	A,(RePlayStatus)
	OR	A
	JR	NZ,?0067
?0066:
	LD	A,BYTE3 Show_Bitrate
	LD	HL,LWRD Show_Bitrate
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0067:
; 267.	
; 268.	        ShowNowTime(TRUE);
	LD	E,1
	LD	A,BYTE3 ShowNowTime
	LD	HL,LWRD ShowNowTime
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0057:
; 269.	    }
; 270.	
; 271.	    {
; 272.	        //FadeInOutFun();//淡入淡出
; 273.	    }
; 274.	    //滚屏时的处理
; 275.	
; 276.	    if (g_ScrollFlag)
	LD	A,(g_ScrollFlag)
	OR	A
	JR	Z,?0069
?0068:
; 277.	    {
; 278.	        g_ScrollFlag = FALSE;
	XOR	A
	LD	(g_ScrollFlag),A
; 279.	       // SetAsciiFont(FONT_TYPE_LARGE);
; 280.	        SetPenColor(Color_WHITE_def);
	LD	C,A
	LD	B,A
	LD	DE,65535
	CALL	LWRD SetPenColor
; 281.	        //SetBackgdColor(Color_BULE1_def);
; 282.	        SetBackgdColor(0x92e);
	LD	BC,0
	LD	DE,2350
	CALL	LWRD SetBackgdColor
; 283.	//if(memcmp(g_music_vars.location.filename+8,"APE",3))
; 284.	    Scroll(g_TagInfoBuf, FALSE,g_comval.langid);
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	LD	C,0
	LD	DE,g_TagInfoBuf
	LD	A,BYTE3 Scroll
	LD	HL,LWRD Scroll
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
; 285.	        {
; 286.	            ui_show_batt(GetBattery(), g_comval.BatteryType,0);
	LD	C,0
	PUSH	BC
	LD	BC,(g_comval+15)
	CALL	LWRD GetBattery
	LD	E,A
	LD	D,0
	LD	A,BYTE3 ui_show_batt
	LD	HL,LWRD ui_show_batt
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
?0069:
; 287.	
; 288.	        }
; 289.	
; 290.	    }
; 291.	
; 292.	    //复读A闪,B闪时的处理
; 293.	    if (RePlayStatus == WaitSetAPointForAB)
	LD	A,(RePlayStatus)
	DEC	A
	JR	NZ,?0071
?0070:
; 294.	    {
; 295.	        if (g_2HZFlag)
	LD	A,(g_2HZFlag)
	OR	A
	JR	NZ,?0160
?0072:
; 296.	        {
; 297.	            main_ResShowPic(MRPLAB,0,0);
; 298.	        }
; 299.	        else
?0073:
; 300.	        {
; 301.	            main_ResShowPic(MRPLNOA,0,0);
	LD	C,A
	PUSH	BC
	LD	DE,154
	JR	?0158
?0074:
?0071:
; 302.	        }
; 303.	    }
; 304.	    else if (RePlayStatus == WaitSetBPointForAB)
	LD	A,(RePlayStatus)
	DEC	A
	DEC	A
	JR	NZ,?0080
?0076:
; 305.	    {
; 306.	        if (g_2HZFlag)
	LD	A,(g_2HZFlag)
	OR	A
	JR	Z,?0079
?0078:
; 307.	        {
; 308.	            main_ResShowPic(MRPLAB,0,0);
?0160:
	LD	C,0
	PUSH	BC
	LD	DE,149
	JR	?0158
; 309.	        }
; 310.	        else
?0079:
; 311.	        {
; 312.	            main_ResShowPic(MRPLNOB,0,0);
	LD	C,A
	PUSH	BC
	LD	DE,155
?0158:
	CALL	LWRD ?0172
	POP	AF
?0080:
?0077:
?0075:
; 313.	        }
; 314.	    }
; 315.	
; 316.	
; 317.	    return NULL;
	LD	HL,0
; 318.	}
?0081:
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0173:
	LD	D,0
	LD	HL,33
	ADD	HL,DE
	EX	DE,HL
?0172:
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
musicpSendCommand:
; 319.	/*
; 320.	********************************************************************************
; 321.	*             bool musicpSendCommand( BYTE cmd, int param )
; 322.	*
; 323.	* Description : 根据不同的文件类型来选择发的命令(对MODULE)
; 324.	*
; 325.	* Arguments   : cmd 命令 param 参数
; 326.	*
; 327.	* Returns     : success/fail
; 328.	*
; 329.	* Notes       :
; 330.	*
; 331.	********************************************************************************
; 332.	*/
; 333.	bool musicpSendCommand(BYTE cmd, int param)
; 334.	{
	PUSH	IX
	PUSH	DE
; 335.	    //清 WATCH_DOG
; 336.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 337.	
; 338.	    switch ( cmd )
	LD	A,E
	CP	13
	JR	Z,?0083
	CP	128
	JR	C,?0084
	CP	132
	JR	Z,?0084
	CP	134
	JR	NC,?0084
?0083:
; 339.	    {//这几个命令由于经常调用,所以不要切BANK
; 340.	        case MC_GETTIME:
; 341.	        case MC_GETSAPLE:
; 342.	        case MC_GETSTATUS:
; 343.	        case MC_GETAUDIOFMT:
; 344.	        case MC_FADEINOUT:
; 345.	        case MC_GETPOWERVALUE:
; 346.	            switch ( g_currentMusicType )
	LD	DE,(g_currentMusicType)
	CALL	LWRD ?C_S_SWITCH_L06
	DEFB	1
	DEFW	6
	DEFW	?0089
	DEFW	?0085
	DEFW	?0086
	DEFW	?0086
	DEFW	?0086
	DEFW	?0087
	DEFW	?0088
?0085:
; 347.	            {
; 348.	            case Music_MP3: //mp3
; 349.	                //BankSwitch((unsigned long)mp3pSendCommand >> 16);
; 350.	                return mp3pSendCommand(cmd, param);
	LD	E,A
	LD	A,BYTE3 mp3pSendCommand
	LD	HL,LWRD mp3pSendCommand
	JR	?0168
; 351.	
; 352.	            case Music_WMA: //wma
?0086:
; 353.	            case Music_ASF: //asf
; 354.	            case Music_WMV: //wmv
; 355.	                //BankSwitch((unsigned long)wmapSendCommand >> 16);
; 356.	                {
; 357.	                  //  bool result;
; 358.	                    return wmapSendCommand(cmd, param);
	LD	E,A
	LD	A,BYTE3 wmapSendCommand
	LD	HL,LWRD wmapSendCommand
	JR	?0168
; 359.	                    //return result;
; 360.	                }
?0087:
; 361.	            case Music_OGG:
; 362.	                return oggpSendCommand(cmd, param);
	LD	E,A
	LD	A,BYTE3 oggpSendCommand
	LD	HL,LWRD oggpSendCommand
	JR	?0168
; 363.	            case Music_APE:
?0088:
; 364.	                return apepSendCommand(cmd, param); 
	LD	E,A
	LD	A,BYTE3 apepSendCommand
	LD	HL,LWRD apepSendCommand
	JR	?0168
; 365.	 
; 366.	            default:
?0089:
; 367.	                return FALSE;
	LD	L,0
; 368.	            }
	JR	?0091
?0084:
?0090:
; 369.	           // return FALSE;
; 370.	
; 371.	        default:
; 372.	            //下面函数放在别的 BANK 里,
; 373.	            return musicpSendCommand_bank( cmd, param );
	LD	A,BYTE3 musicpSendCommand_bank
	LD	HL,LWRD musicpSendCommand_bank
?0168:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 374.	    }
?0082:
; 375.	    return FALSE;
; 376.	
; 377.	
; 378.	}
?0091:
	POP	AF
	POP	IX
	JP	LWRD ?BANK_FAST_LEAVE_L08
BackupCurrentTime:
; 379.	/*
; 380.	********************************************************************************
; 381.	*             void Show_Bitrate( void )
; 382.	*
; 383.	* Description : 显示比特率
; 384.	*
; 385.	* Arguments   : void
; 386.	*
; 387.	* Returns     : void
; 388.	*
; 389.	* Notes       :
; 390.	*
; 391.	********************************************************************************
; 392.	*/
; 393.	
; 394.	void BackupCurrentTime(void)
; 395.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65530
; 396.	    Full_time_t time_buf;
; 397.	    if ( musicpSendCommand(MC_GETTIME, (int)& time_buf) )
	LD	HL,0
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,128
	CALL	LWRD ?0171
	INC	L
	DEC	L
	JR	Z,?0093
?0092:
; 398.	    {
; 399.	        g_music_vars.BreakPTDisTime.hour = time_buf.TimeHour;
	LD	A,(IX-2)
	LD	(g_music_vars+75),A
; 400.	        g_music_vars.BreakPTDisTime.minute = time_buf.TimeMinute;
	LD	A,(IX-3)
	LD	(g_music_vars+76),A
; 401.	        g_music_vars.BreakPTDisTime.second = time_buf.TimeSecond;
	LD	A,(IX-4)
	LD	(g_music_vars+77),A
?0093:
; 402.	    }
; 403.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
ShowNowTime:
; 404.	
; 405.	
; 406.	void ShowNowTime(bool para)                       //zxs change for guage display
; 407.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-16
	PUSH	IY
; 408.	     long  int totaltime,nowtime;
; 409.	     int   num;
; 410.	     int   i;
; 411.	     music_play_status_t status_buf;
; 412.	     if (ifSelBuffToltalTimeFlag || (!CaltimeFlag))
	LD	A,(ifSelBuffToltalTimeFlag)
	OR	A
	JR	NZ,?0096
	LD	A,(CaltimeFlag)
	OR	A
	JR	NZ,?0095
?0096:
?0097:
?0094:
; 413.	     {
; 414.	         //用 buffer 里的总时间数据
; 415.	         status_buf.total_time.hour = TimeRateData_sav.TotalTime_sav[0];
	LD	A,(TimeRateData_sav+3)
	LD	(IX-13),A
; 416.	         status_buf.total_time.minute = TimeRateData_sav.TotalTime_sav[1];
	LD	A,(TimeRateData_sav+4)
	LD	(IX-12),A
; 417.	         status_buf.total_time.second = TimeRateData_sav.TotalTime_sav[2];
	LD	A,(TimeRateData_sav+5)
	LD	(IX-11),A
; 418.	     }
; 419.	     else
	JR	?0098
?0095:
; 420.	     {
; 421.	
; 422.	         musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
	LD	HL,2
	ADD	HL,SP
	CALL	LWRD ?0170
; 423.	         //暂存现在的总时间数据到 buffer
; 424.	         TimeRateData_sav.TotalTime_sav[0] = status_buf.total_time.hour;
	LD	A,(IX-13)
	LD	(TimeRateData_sav+3),A
; 425.	         TimeRateData_sav.TotalTime_sav[1] = status_buf.total_time.minute;
	LD	A,(IX-12)
	LD	(TimeRateData_sav+4),A
; 426.	         TimeRateData_sav.TotalTime_sav[2] = status_buf.total_time.second;
	LD	A,(IX-11)
	LD	(TimeRateData_sav+5),A
; 427.	         ifSelBuffToltalTimeFlag=1;
	LD	A,1
	LD	(ifSelBuffToltalTimeFlag),A
?0098:
; 428.	     }
; 429.	     totaltime=status_buf.total_time.hour*3600+ status_buf.total_time.minute*60+status_buf.total_time.second;
	LD	C,(IX-12)
	LD	B,0
	LD	DE,60
	CALL	LWRD ?S_MUL_L02
	PUSH	DE
	LD	C,(IX-13)
	LD	DE,3600
	CALL	LWRD ?S_MUL_L02
	EX	DE,HL
	POP	DE
	ADD	HL,DE
	LD	C,(IX-11)
	ADD	HL,BC
	LD	A,H
	RLCA
	SBC	A,A
	LD	C,A
	LD	B,C
	LD	(IX-4),L
	LD	(IX-3),H
	LD	(IX-2),C
	LD	(IX-1),B
; 430.	     nowtime=g_music_vars.BreakPTDisTime.hour*3600+g_music_vars.BreakPTDisTime.minute*60 +g_music_vars.BreakPTDisTime.second;
	LD	BC,(g_music_vars+76)
	LD	B,0
	LD	DE,60

⌨️ 快捷键说明

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