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

📄 drv_dsp_gotomsf.c

📁 ROHM 公司BU9432:application:应用范围
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "drv_DSP_GotoMSF.h"


//YTC00E 20050119 -ROM 
void GotoMSF_SetRetry(void);



//#define	RETRY_1ST_LIMIT		0x04
//#define	RETRY_2ND_LIMIT		0x14	// H偺1偼丄Target偺尭嶼検
#define	RETRY_LIMIT		0x04	// 埵抲偩偟偺儕僩儔僀夞悢


////////////////////////////////////////////////////////////////////////////////
static	UINT32	mu32_TargetFrame;	// YTC00B 20050114

static	UINT08 	mu08_RetryCounter;	// YTC00E 2005019

// CLV Speed 1.20m/s OUT
//const UINT08 Tbl_LONG_JUMP_INT[9]   = {  3,  2,  2,  2,  1,  1,  1,  1,  1 };
//const UINT08 Tbl_LONG_JUMP_FLOAT[9] = { 52, 81, 41, 14, 94, 79, 67, 58, 49 };

// CLV Speed 1.20m/s MIDLE
const UINT08 Tbl_LONG_JUMP_INT[9] = { 3, 2, 2, 2, 1, 1, 1, 1, 1 };
const UINT08 Tbl_LONG_JUMP_FLOAT[9] = { 18, 63, 29, 05, 88, 74, 63, 54, 46 };

// CLV Speed 1.20m/s IN
//const UINT08 Tbl_LONG_JUMP_INT[9]   = {  2,  2,  2,  1,  1,  1,  1,  1,  1 };
//const UINT08 Tbl_LONG_JUMP_FLOAT[9] = { 86, 44, 16, 96, 81, 68, 58, 50, 43 };


/*------------------------------------------------------------------------------
	Jumpe Width Selecter Table
------------------------------------------------------------------------------*/

////	     0     1     4    10    30    80   128  (Tracks)
//		{    0,   10,   40,   99,  295,  788, 1262 },		//  0min
//		{    0,   13,   50,  124,  372,  992, 1589 },		// 10min
//		{    0,   15,   58,  145,  435, 1160, 1858 },		// 20min
//		{    0,   17,   66,  164,  490, 1307, 2093 },		// 30min
//		{    0,   18,   72,  180,  540, 1439, 2305 },		// 40min
//		{    0,   20,   78,  195,  585, 1560, 2498 },		// 50min
//		{    0,   21,   84,  209,  627, 1672, 2677 },		// 60min
//		{    0,   23,   89,  222,  666, 1777, 2845 },		// 70min
//		{    0,   24,   94,  235,  704, 1877, 3004 },		// 80min
//		{    0,   25,   99,  247,  739, 1971, 3155 }		// 90min


//const UINT16 TBL_JUDGE_JUMP[9][6] =
//{
////Size   0     1     4    10    30    80  (Track)
//	{    0,   13,   50,  124,  372,  992 },				//  0min (10min)
//	{    0,   15,   58,  145,  435, 1160 },				// 10min (20min)
//	{    0,   17,   66,  164,  490, 1307 },				// 20min (30min)
//	{    0,   18,   72,  180,  540, 1439 },				// 30min (40min)
//	{    0,   20,   78,  195,  585, 1560 },				// 40min (50min)
//	{    0,   21,   84,  209,  627, 1672 },				// 50min (60min)
//	{    0,   23,   89,  222,  666, 1777 },				// 60min (70min)
//	{    0,   24,   94,  235,  704, 1877 },				// 70min (80min)
//	{    0,   25,   99,  247,  739, 1971 }				// 80min (90min)
//};

// 30tr or 80tr, using next zone's parameters
const UINT16 TBL_JUDGE_JUMP[9][6] =
{
//Size   0     1     4    10    30    80  (Track)
	{    0,   10,   40,   99,  372,  992 },				//  0min
	{    0,   13,   50,  124,  435, 1160 },				// 10min
	{    0,   15,   58,  145,  490, 1307 },				// 20min
	{    0,   17,   66,  164,  540, 1439 },				// 30min
	{    0,   18,   72,  180,  585, 1560 },				// 40min
	{    0,   20,   78,  195,  627, 1672 },				// 50min
	{    0,   21,   84,  209,  666, 1777 },				// 60min
	{    0,   23,   89,  222,  704, 1877 },				// 70min
	{    0,   24,   94,  235,  739, 1971 }				// 80min
};


////////////////////////////////////////////////////////////////////////////////



/*==============================================================================
	Goto MSF ( Move to Target ATime )
==============================================================================*/
/*------------------------------------------------------------------------------
	[NAME]     :GotoMSF
	[FUNCTION] :
	[RETURN]   :UINT08
	[PARAMETER]:void
	[HISTORY]  :
	[NOTE]     :
------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------
	Function:	DrvDSP_SelectTrackJump
	Return:		JUMP_VECTOR
					+ UINT08 u08_Direction	( Jump Direction )
						+ JUMP_FF: Move to Out
						+ JUMP_FR: Move to In
					+ UINT08 u08_Size		( Jump Width )
						+ 0: Disable Jump
						+ 1:  1track
						+ 2:  4track
						+ 3: 10track
						+ 4: 30track
						+ 5: 80track
						+ 6: Sled Jump
					+ UINT08 u08_Long		( Long Jump Width )
	Arguments:	MSF* pmsf_PresentPost
				MSF* pmsf_Destination

	[NOTE]     :Call from "void DrvDSP_Skip(void)" only	//S001 <-USO.
--------------------------------------------------------------------------------*/
// Target == ATIME

UINT08 GotoMSF(void)
{
//	UINT08	i;
	UINT32	mu32_Distance;
	UINT08	u08_Zone;
//	UINT08	u08_RestMin;
	JUMP_VECTOR	JV;

static	UINT32	last_atime;		


	switch( gu08_GotoMsfSC )
	{
	case 0x01:
		mu08_RetryCounter =0;			// YTC003 20041230
		mu32_TargetFrame =gu32_val_TargetFrame;	// YTC00B 20050114
	case 0x11:
//		DrvDSP_BIOS_ECC_Mute();			//傾僋僙僗張棟拞偼嫮惂俤俠俠 MUTE 嬤偄彨棃偟偭偐傝捈偡偙偲丅1008
//		DrvDSP_BIOS_UpGain();
		gu08_before_Direction = 0xFF;			// 慜夞僕儍儞僾曽岦僋儕傾
		gu08_GotoMsfSC = 0x02;
//		mu08_RetryCounter =0;			// YTC003 20041230

	case 0x02:
		// Check Lag ===========================================================
#if	ROM	// SDC 20050206
		if( DrvDSP_BIOS_ReadBusy(  ) == LOW )
#else
		if( !DrvDSP_BIOS_ReadBusy() )
#endif
		{
			return gu08_GotoMsfSC;
		}

		if( gu08_sts_Subq_valid != VALID )
		{
			return gu08_GotoMsfSC;
		}

//		if( stSubq_bcd.tno == LEAD_IN )	//Sxxx MULTI-SESSION

#if 0
		if(( stSubq_bcd.tno == LEAD_IN ) &&( gu08_multisession == 0 ))
		{
			gu08_req_Jump = JUMP_FF | JUMP_10;
			return gu08_GotoMsfSC;
		}
		else if(( stSubq_bcd.tno == LEAD_IN ) &&( gu32_frame_atime > 360000 ))
		{
			gu08_req_Jump = JUMP_FF | JUMP_10;
			return gu08_GotoMsfSC;
		}
#endif

#if 0
		if(stSubq_bcd.tno == LEAD_IN)
		{	//INDEX 00
			if(gu08_multisession == 0)
			{	//
				gu08_req_Jump = JUMP_FF | JUMP_10;
				return gu08_GotoMsfSC;
			}
			else
			{	// MULTI-SESSION | CCCD
				if((gu08_multisession & 0x80)!=0)
				{	//CCCD偲巚傢傟傞
					gu08_multisession &= 0x7f;	//
					gu08_req_Jump = JUMP_FF | JUMP_10;
					return gu08_GotoMsfSC;
				}
				else
				{	//婯奿捠傝偺MULTI-SESSION
					if(gu32_frame_atime > 360000)
					{
						gu08_req_Jump = JUMP_FF | JUMP_10;
						return gu08_GotoMsfSC;
					}
				}
			}
		}
#endif

//YTC002 20041226 
		if((stSubq_bcd.ctrl_addr & 0x0F ) != 0x01 )
		{
			return gu08_GotoMsfSC;	//-> 帪娫忣曬偱偼側偄subQ丅
		}

		DrvDSP_BIOS_UpGain();	//subQ庢傟偰偐傜俧up

		if(stSubq_bcd.tno == LEAD_IN)
		{
#if	0	// SDC 20041215
			if( gu08_before_Direction == 0xFF )
			{
//				gu08_req_Jump = JUMP_FF | JUMP_10;
				gu08_req_Jump = JUMP_FF | JUMP_04;
				return gu08_GotoMsfSC;
			}
			else if(gu08_before_Direction == JUMP_FR)
#else
			if( gu08_before_Direction == JUMP_FR )
#endif
			{
//YTC002 20041226 
				gu08_req_Jump = JUMP_FR | JUMP_10;
#if	ROM	// SDC 20050206
				if(DrvDSP_BIOS_ReadInner() == LOW)
#else
				if( !DrvDSP_BIOS_ReadInner() )
#endif
				{
					gu08_req_Jump = JUMP_FF | JUMP_10;	//LEAD IN亄FR-4偱僀儞僫乕偵偝傢偭偨傜丄奜偵岦偗傞丅
					gu08_before_Direction = JUMP_FF;	//偙傟偱丄侾st僙僢僔儑儞偺LEAD in偲敾抐偡傞丅
				}										//偙傟偱丄TNO_00偱傕帺怣傪帩偭偰旘傋傞偺偱丄亇侾侽僕儍儞僾偵栠偡丅
				return gu08_GotoMsfSC;
			}
			else
			{
				gu08_req_Jump = JUMP_FF | JUMP_10;
//				gu08_req_Jump = JUMP_FF | JUMP_04;
				return gu08_GotoMsfSC;
			}
		}

//YTC003 倴偙偺僐儊儞僩崱偲側偭偰偼僂僜丅
//	偙傟傪捠傝敳偗傞偺偼丄TNO!=0偲丄俀屄栚TNO==00

//		if( stSubq_bcd.tno == LEAD_OUT )
//		{
//			gu08_req_Jump = JUMP_FR | JUMP_30;
//			return gu08_GotoMsfSC;
//		}


		// Judge Direction -----------------------------------------------------
////		if( gu32_val_TargetFrame >= gu32_frame_atime )
//		if( gu32_val_TargetFrame >  gu32_frame_atime )	// Sxxx ==側傜亅jump
		if( mu32_TargetFrame >  gu32_frame_atime )	// Sxxx ==側傜亅jump	// YTC00B 20050114
		{
			// pmsf_Destination >  pmsf_PresentPost
			mu32_Distance =mu32_TargetFrame -gu32_frame_atime;	// YTC00B 20050114
			JV.u08_Direction =JUMP_FF;
		}
		else
		{
			// pmsf_Destination <= pmsf_PresentPost
			mu32_Distance =gu32_frame_atime -mu32_TargetFrame;	// YTC00B 20050114
			JV.u08_Direction =JUMP_FR;
		}

		if( gu08_before_Direction == 0xFF )
		{
			// At begining, direction is not changed
			gu08_before_Direction =JV.u08_Direction;
		}


		// Select Jump Size ----------------------------------------------------
		if( mu32_Distance > 4500 )
		{
			// Over 60sec ( 4500frame ) - - - - - - - - - - - - - - - - - - - - 
			JV.u08_Size =JUMP_LONG;
		}
		else
		{
			// Less 60sec - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//			u08_Zone =stSubq_hex.min /10;	// Zone (Divided 10min)	//Sxxx
			u08_Zone =stSubq_hex.amin /10;	// Zone (Divided 10min)

			for( gu08_i=5; gu08_i>0; gu08_i-- )		// from 4 to 0
			{
				if( (UINT16)mu32_Distance > TBL_JUDGE_JUMP[u08_Zone][gu08_i] )
				{
					break;
				}
			}
			JV.u08_Size =gu08_i;
		}

		// Resize Jump ---------------------------------------------------------
//		ResizeJump();
		if( JV.u08_Direction != gu08_before_Direction )
		{


			// Turned Direction - - - - - - - - - - - - - - - - - - - - - - - - 
			if( JV.u08_Size >= JUMP_04 )	//YTC002 20041225
			{
				JV.u08_Size--;
			}

//YTC002 20041225 
//			if( JV.u08_Size >= JUMP_04 )
//			{
//				JV.u08_Size--;
//				if(JV.u08_Size==7)	//YTC001 20041224 JUMP偺僥乕僽儖弴彉曄峏偺曗惓丅LONG->80
//				{
//					JV.u08_Size=5;
//				}
//			}
		}

		if( JV.u08_Size == JUMP_LONG )
		{
			SetLongJump( &JV );

//			JV.u08_Size =JUMP_80;		// Disnable LongJump
		}

//Sxxx 儅儖僠僙僢僔儑儞旕懳墳偺堊堦帪嶍彍
#if 0

		// Resize 80tr  -----------------------------------------------------
		if( JV.u08_Direction == JUMP_FF )
		{
			u08_RestMin = stInfoArea.hexTocA2[0] -stSubq_hex.amin;
			if( u08_RestMin < 2 )
			{
				// Less 2 min until Lead Out
				if( JV.u08_Size == JUMP_LONG )
				{
					JV.u08_Size =JUMP_80;
				}
			}

			if( u08_RestMin < 1 )
			{
				// Less 1 min until Lead Out
				JV.u08_Size =JUMP_30;
			}
		}
		else //if( JV.u08_Direction == JUMP_FR )
		{
			if( stSubq_hex.amin < 2 )
			{
				// Inside 2 min from Start
				if( JV.u08_Size == JUMP_LONG )
				{
					JV.u08_Size =JUMP_80;
				}
			}

			if( stSubq_hex.amin < 1 )
			{
				// Inside 1 min from Start

⌨️ 快捷键说明

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