ui_play.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 1,535 行 · 第 1/3 页

S01
1,535
字号
; 417.	     if(g_rSetPlayStatus)
	LD	A,(g_rSetPlayStatus)
	OR	A
	JR	Z,?0113
?0112:
; 418.	     {
; 419.	                para = FALSE;
; 420.	                g_rSetPlayStatus = FALSE;
	XOR	A
	LD	(g_rSetPlayStatus),A
	LD	(IX+2),A
?0113:
; 421.	     }
; 422.	     
; 423.	     if (ifSelBuffToltalTimeFlag || (!CaltimeFlag))
	LD	A,(ifSelBuffToltalTimeFlag)
	OR	A
	JR	NZ,?0116
	LD	A,(CaltimeFlag)
	OR	A
	JR	NZ,?0115
?0116:
?0117:
?0114:
; 424.	     {
; 425.	         //用 buffer 里的总时间数据
; 426.	         status_buf.total_time.hour = TimeRateData_sav.TotalTime_sav[0];
	LD	A,(TimeRateData_sav+3)
	LD	(IX-13),A
; 427.	         status_buf.total_time.minute = TimeRateData_sav.TotalTime_sav[1];
	LD	A,(TimeRateData_sav+4)
	LD	(IX-12),A
; 428.	         status_buf.total_time.second = TimeRateData_sav.TotalTime_sav[2];
	LD	A,(TimeRateData_sav+5)
	LD	(IX-11),A
; 429.	     }
; 430.	     else
	JR	?0118
?0115:
; 431.	     {
; 432.	         musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
	LD	HL,2
	ADD	HL,SP
	CALL	LWRD ?0186
; 433.	         //暂存现在的总时间数据到 buffer
; 434.	         TimeRateData_sav.TotalTime_sav[0] = status_buf.total_time.hour;
	LD	A,(IX-13)
	LD	(TimeRateData_sav+3),A
; 435.	         TimeRateData_sav.TotalTime_sav[1] = status_buf.total_time.minute;
	LD	A,(IX-12)
	LD	(TimeRateData_sav+4),A
; 436.	         TimeRateData_sav.TotalTime_sav[2] = status_buf.total_time.second;
	LD	A,(IX-11)
	LD	(TimeRateData_sav+5),A
; 437.	         ifSelBuffToltalTimeFlag=1;
	LD	A,1
	LD	(ifSelBuffToltalTimeFlag),A
?0118:
; 438.	     }
; 439.	     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
; 440.	     nowtime=g_music_vars.BreakPTDisTime.hour*3600+g_music_vars.BreakPTDisTime.minute*60 +g_music_vars.BreakPTDisTime.second;
	LD	BC,(g_music_vars+78)
	LD	B,0
	LD	DE,60
	CALL	LWRD ?S_MUL_L02
	PUSH	DE
	LD	BC,(g_music_vars+77)
	LD	B,0
	LD	DE,3600
	CALL	LWRD ?S_MUL_L02
	EX	DE,HL
	POP	DE
	ADD	HL,DE
	LD	BC,(g_music_vars+79)
	LD	B,0
	ADD	HL,BC
	LD	A,H
	RLCA
	SBC	A,A
	LD	C,A
	LD	B,C
	LD	(IX-8),L
	LD	(IX-7),H
; 441.	     num=(nowtime*161)/totaltime;
	LD	L,(IX-2)
	LD	H,(IX-1)
	PUSH	HL
	LD	L,(IX-4)
	LD	H,(IX-3)
	PUSH	HL
	LD	HL,0
	PUSH	HL
	LD	L,161
	PUSH	HL
	LD	L,(IX-8)
	LD	H,(IX-7)
	CALL	LWRD ?L_MUL_L03
	CALL	LWRD ?SL_DIV_L03
	PUSH	HL
	POP	IY
; 442.	     if(num>161)                  //防止串烧时出现当前时间大于总时间的bug
	LD	C,L
	LD	B,H
	LD	HL,161
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0120
?0119:
; 443.	     num=0;
	LD	IY,0
?0120:
; 444.	     itoa_2(g_music_vars.BreakPTDisTime.hour, temp_buffer);
	LD	BC,temp_buffer
	LD	DE,(g_music_vars+77)
	CALL	LWRD ?0191
; 445.	     strcat(temp_buffer,":");
; 446.	     itoa_2(g_music_vars.BreakPTDisTime.minute,  & temp_buffer[3]);
	LD	DE,(g_music_vars+78)
; 447.	     strcat(temp_buffer,":");
	CALL	LWRD ?0192
; 448.	     itoa_2(g_music_vars.BreakPTDisTime.second, & temp_buffer[6]);
	LD	BC,temp_buffer+6
	LD	DE,(g_music_vars+79)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 449.	     ui_show_d(temp_buffer,0);          //显示当前播放时间     changed by zxs
	LD	C,0
	CALL	LWRD ?0188
; 450.	     output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 451.	     if(!para)
	XOR	A
	OR	(IX+2)
	JR	NZ,?0123
?0122:
; 452.	     {
; 453.	           if(g_volcounter==0)
	LD	A,(g_volcounter)
	OR	A
	JR	NZ,?0126
?0124:
; 454.	           {
; 455.	                         main_ResShowPic(GUAGEBG1, 0, 106);     //刷新进度条背景
	LD	C,106
	PUSH	BC
	LD	C,A
	LD	DE,154
	CALL	LWRD ?0189
	POP	AF
; 456.	                         for(i=0;i<num;i++)
	LD	DE,0
?0127:
	PUSH	IY
	POP	BC
	LD	L,E
	LD	H,D
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0126
?0128:
; 457.	                              main_ResShowPic(GUAGE1,8+i,109);
	PUSH	DE
	LD	C,109
	PUSH	BC
	CALL	LWRD ?0190
	POP	AF
	POP	DE
	INC	DE
; 458.	         }
	JR	?0127
?0126:
?0125:
; 459.	         
; 460.	         itoa_2(status_buf.total_time.hour, temp_buffer);
	LD	BC,temp_buffer
	LD	E,(IX-13)
	CALL	LWRD ?0191
; 461.	                 strcat(temp_buffer,":");
; 462.	                 itoa_2(status_buf.total_time.minute, & temp_buffer[3]);
	LD	E,(IX-12)
; 463.	                 strcat(temp_buffer,":");
	CALL	LWRD ?0192
; 464.	                 itoa_2(status_buf.total_time.second, & temp_buffer[6]);
	LD	BC,temp_buffer+6
	LD	E,(IX-11)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 465.	                 ui_show_d(temp_buffer,1);
	LD	C,1
	CALL	LWRD ?0188
; 466.	     }
; 467.	     else
	JR	?0144
?0123:
; 468.	     {
; 469.	         if(PlayStatus == FBPlaySta)
	LD	A,(PlayStatus)
	CP	4
	JR	NZ,?0132
?0131:
; 470.	         {
; 471.	                   if(g_volcounter==0)
	LD	A,(g_volcounter)
	OR	A
	JR	NZ,?0144
?0133:
; 472.	                   {
; 473.	                        for(i=num;i<savenum+1;i++)
	PUSH	IY
	POP	HL
	EX	DE,HL
?0136:
	LD	BC,(savenum)
	LD	B,0
	INC	BC
	LD	L,E
	LD	H,D
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0144
?0137:
; 474.	                                main_ResShowPic(GUAGECL1,8+i,109);
	PUSH	DE
	LD	C,109
	PUSH	BC
	LD	A,E
	ADD	A,8
	LD	C,A
	LD	DE,155
	CALL	LWRD ?0189
	POP	AF
	POP	DE
	INC	DE
; 475.	             }
	JR	?0136
?0135:
?0134:
; 476.	         }
; 477.	         else
?0132:
; 478.	         {
; 479.	             if (num < savenum) num = savenum;
	LD	BC,(savenum)
	LD	B,0
	PUSH	IY
	POP	HL
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0141
?0140:
	LD	BC,(savenum)
	LD	B,0
	PUSH	BC
	POP	IY
?0141:
; 480.	             
; 481.	             if(g_volcounter==0)
	LD	A,(g_volcounter)
	OR	A
	JR	NZ,?0144
?0142:
; 482.	             {
; 483.	                        for(i=savenum;i<num;i++)
	LD	BC,(savenum)
	LD	D,A
	LD	E,C
?0145:
	PUSH	IY
	POP	BC
	LD	L,E
	LD	H,D
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0144
?0146:
; 484.	                                main_ResShowPic(GUAGE1,8+i,109);
	PUSH	DE
	LD	C,109
	PUSH	BC
	CALL	LWRD ?0190
	POP	AF
	POP	DE
	INC	DE
; 485.	             }
	JR	?0145
?0144:
?0143:
?0139:
?0130:
; 486.	         }
; 487.	     }
; 488.	                 
; 489.	     savenum=num;//记录上一个点
	PUSH	IY
	POP	HL
	LD	A,L
	LD	(savenum),A
; 490.	}
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0188:
	LD	DE,temp_buffer
	LD	A,BYTE3 ui_show_d
	LD	HL,LWRD ui_show_d
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0191:
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	DE,?0121
	LD	HL,temp_buffer
	CALL	LWRD ?STRCAT_L11
	LD	BC,temp_buffer+3
	RET
?0192:
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	DE,?0121
	LD	HL,temp_buffer
	JP	LWRD ?STRCAT_L11
DealForABGap:
; 491.	//----------------
; 492.	
; 493.	
; 494.	//----------------
; 495.	
; 496.	//-----------------------------------
; 497.	
; 498.	/*
; 499.	void Show_Bitrate(void)
; 500.	{
; 501.	
; 502.	    audio_format_t  pFormat;
; 503.	       musicpSendCommand(MC_GETAUDIOFMT, (int)& pFormat);
; 504.	
; 505.	    if ((pFormat.bit_rate[0]<'0')
; 506.	        || (pFormat.bit_rate[0] > '9')
; 507.	        || (pFormat.bit_rate[1] < '0')
; 508.	        || (pFormat.bit_rate[1] > '9')
; 509.	        || (pFormat.bit_rate[2] < '0')
; 510.	        || (pFormat.bit_rate[2] > '9') )
; 511.	    {
; 512.	        pFormat.bit_rate[0] = '0';
; 513.	        pFormat.bit_rate[1] = '0';
; 514.	        pFormat.bit_rate[2] = '0';
; 515.	    }
; 516.	    TimeRateData_sav.Bitrate_sav[0] = pFormat.bit_rate[0]; //保存用于跟读对比时显示
; 517.	    TimeRateData_sav.Bitrate_sav[1] = pFormat.bit_rate[1];
; 518.	    TimeRateData_sav.Bitrate_sav[2] = pFormat.bit_rate[2];
; 519.	
; 520.	    main_ResShowPic(MBIT0+(pFormat.bit_rate[0] - 0x30),POS_BITRATE,POSY_BITRATE);
; 521.	    main_ResShowPic(MBIT0+(pFormat.bit_rate[1] - 0x30),POS_BITRATE+7,POSY_BITRATE);
; 522.	    main_ResShowPic(MBIT0+(pFormat.bit_rate[2] - 0x30),POS_BITRATE+14,POSY_BITRATE);
; 523.	
; 524.	}
; 525.	*/      //Jerry Xie Removed for test
; 526.	//===================[处理AB复读状态]====================
; 527.	void DealForABGap(music_play_status_t *status)
; 528.	{
	PUSH	BC
	PUSH	IX
	PUSH	DE
	POP	IX
; 529.	    //[1]放到B点时,要清B
; 530.	    if ( status->signal == SIGNAL_CLEAR_B)
	EX	DE,HL
	INC	HL
	LD	A,(HL)
	CP	3
	JR	NZ,?0149
?0148:
; 531.	    {
; 532.	        if (g_AVSetFlag)
	LD	A,(g_AVSetFlag)
	OR	A
	JR	Z,?0151
?0150:
; 533.	        {//如原是用自动方式定B
; 534.	            musicpSendCommand(MC_SETA_B, SetAPoint);
	LD	BC,1
	LD	E,65
	CALL	LWRD ?0187
; 535.	        }
; 536.	        else
	JR	?0158
?0151:
; 537.	        {//如原是手动方式定B
; 538.	            RePlayStatus = WaitSetAPointForAB;
	LD	A,1
	LD	(RePlayStatus),A
; 539.	            UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
	LD	HL,UpDisplayFlag
	INC	HL
	SET	3,(HL)
; 540.	            need_draw = TRUE;
	LD	(need_draw),A
?0152:
; 541.	        }
; 542.	
; 543.	        return;
; 544.	    }
	JR	?0158
?0149:
; 545.	
; 546.	    //[2]放到B点时不清B,开始间隔
; 547.	    if ( status->signal == SIGNAL_REACH_B)
	LD	B,(IX+1)
	DEC	B
	DEC	B
	JR	NZ,?0156
?0153:
; 548.	    {
; 549.	        g_ReplayTimeCNT++;
	LD	HL,g_ReplayTimeCNT
	INC	(HL)
; 550.	        g_2HZ_CNT = 0;
	LD	L,B
	LD	H,B
	LD	(g_2HZ_CNT),HL
; 551.	        if (g_ReplayTimeCNT >= g_music_vars.replaytimes)
	LD	A,(g_music_vars+4)
	LD	B,A
	LD	A,(g_ReplayTimeCNT)
	CP	B
	JR	C,?0156
?0155:
; 552.	        {
; 553.	            //通知BASAL 下一次要清AB了
; 554.	            musicpSendCommand(MC_SETA_B, ABFinished);
	LD	BC,4
	LD	E,65
	CALL	LWRD ?0187
?0156:
?0154:
; 555.	        }
; 556.	    }
; 557.	
; 558.	    //[3]在间隔中,等待回到A点
; 559.	    if ( status->status == PLAYING_WAIT_A)
	LD	A,(IX+0)
	CP	11
	JR	NZ,?0158
?0157:
; 560.	    {
; 561.	        if (g_music_vars.replaygap * 2 >= g_2HZ_CNT) //PAUSE值
	LD	HL,(g_music_vars+5)
	LD	H,0
	ADD	HL,HL
	LD	BC,(g_2HZ_CNT)
	AND	A
	SBC	HL,BC
	JR	C,?0160
?0159:
; 562.	        {
; 563.	            g_FCexitflag = TRUE;
	LD	A,1
	LD	(g_FCexitflag),A
; 564.	            return;
; 565.	        }
	JR	?0158
?0160:
; 566.	        g_FCexitflag = FALSE;
	XOR	A
	LD	(g_FCexitflag),A
; 567.	        musicpSendCommand(MC_SETA_B, ReturnApoint);
	LD	BC,3
	LD	E,65
	CALL	LWRD ?0187
; 568.	        RePlayStatus = ABLoopPlay;
	LD	A,3
	LD	(RePlayStatus),A
?0158:
; 569.	    }
; 570.	}
?0161:
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
	RSEG	CSTR
?0121:
	DEFB	':'
	DEFB	0
	RSEG	IDATA0
g_rSetPlayStatus:
	DEFS	1
	RSEG	CDATA0
	DEFB	0
	END

⌨️ 快捷键说明

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