📄 cd_ctrl_play.c
字号:
gu08_scc_speed=1; //
}
//B0004 <---
break;
}
//<<<
// 倀俬憌偐傜栚昗嬋偺忣曬傪庢摼
// gu32_val_TargetFrame = stTOC_trks[stInfoArea.hexPlayTitleCD - 1].begin_atime;
DrvDSP_BIOS_WriteRegMP3_32( 0x44, gl_buff_max ); // RCSEND嵞愝掕 // SDC 20050125
if( stInfoArea.PlayType == TYPE_MP3 )
{
memset( &mp3Ctl, 0, sizeof( mp3Ctl ) );
#if !ROM // SDC 20050202
mp3Ctl.WR.threshold = ( gl_buff_max + 1L ) - ( 1182L * gi_ThreshSects ); // WRITE嵞奐埵抲傪32僙僋僞慜偵
#endif
stInfoArea.hexReserveTitleMP3 = 0; //
gu08_sts_Reserve = OFF; //OFF = 0
gu08_num_Slot = //0; //
gu08_sts_Intro = 0; //
#if ROM // SDC 20050202
// mp3Ctl.WR.conn_mode = 0x05; // 愙懕儌乕僪=SYNC
// MP3Ctrl_Write_SetMode( 0x02 ); // WRITE宯 @CDROM //傕偭偨偄側偄偍壔偗丠
MP3Ctrl_Read_SetMode( 0x02 ); // READ 宯 @MP3
#else
mp3Ctl.WR.mode = 0x02; // WRITE宯 @CDROM //傕偭偨偄側偄偍壔偗丠
#if ID3TAG //[dyna-DM]
mp3Ctl.RD.mode = 0x0C; // ReadID3V1
#else
mp3Ctl.RD.mode = 0x02; // READ 宯 @MP3
#endif
#endif
#if ROM // SDC 20050204
// MP3Ctrl_Write_Reset( ); // WRITE宯僋儕傾
MP3Ctrl_Read_Reset( ); // READ 宯僋儕傾
#else
MP3Ctrl_WR_Reset(); // Write / Read clear
#endif
//嵞惗偡傞僼傽僀儖斣崋傪庢摼偡傞丅
#if ROM // SDC 050211
PlayList_GetEntry( gi_PlayList_index, &PlayTitleMP3 );
mp3Ctl.PLAY[0].song = stInfoArea.hexTotalFolder + ( PlayTitleMP3 - 100 ) + 1;
#else
mp3Ctl.PLAY[0].song = stInfoArea.hexTotalFolder + ( PlayList_GetEntry( gi_PlayList_index ) - 100 ) + 1;
#endif
mp3Ctl.PLAY[0].sts = 1;
#if ID3TAG // SDC 20050202
ID3TagRetry = 0;
#endif
if( gu08_sts_UDFDISC )
{ //nUDF
nUDF_FILES = mp3Ctl.PLAY[0].song - stInfoArea.hexTotalFolder; //
if(nUDF_FILES != 1) //嵟弶偺僩儔僢僋偼偦偺傑傑
{
mp3Ctl.PLAY[0].song -= nUDF_FILES; //
for(i= 1; i <= nUDF_FILES ;i++)
{
while(1)
{
// get_FAT_data(mp3Ctl.PLAY[0].song, fat_data);
mp3Ctl.PLAY[0].song++;
#if LCD_DM //[dyna-DM]
if( !( fat_data[18] & B10000000 ))
#else
if( !( fat_data[FILE_FILE_FRAGS] & B10000000 ))
#endif
break;
}
}
}
}
}
if( stInfoArea.PlayType != TYPE_ESP )
{
// 僕儍儞僾偝偣傞弨旛
DrvDSP_BIOS_WriteReg( 0x83, 0x01 ); //JUMP幚巤偵晅偒丄CLV攇崅抣惂尷夝彍丅
//寛傔懪偪晅偒偩側丅(0000 | xxx83xxx)偲偐彂偐側偄偲斈梡惈偑
}
if( gu08_req_Jump != 0 )
{ //JUMP幚峴拞偺張棟丅goto_MSF偑傗偭偰偔偰側偄偐丠
//SKIP幚峴拞偵師偺SKIP偑棃偨丅儘儞僌僕儍儞僾摍幚峴拞偩偭偨傜丄拞巭偡傞張棟丅
//gotoMSF偵傗傜偣偨偄側偁丅丂俤俽俹嶌傞偲偒偵
DrvDSP_BIOS_Tracking_On( );
DrvDSP_BIOS_Clv_On( );
//YTC003 DrvDSP_CheckError_SetTimerSUBQ_Start( );
gu08_sts_Jump = //0; //
gu08_req_Jump = 0x00; //
}
//YTC00G gu08_GotoMsfSC = 1; // GotoMSF梫媮 //YTC00G 20050128
if( stInfoArea.PlayType & TYPE_CD )
{
gu08_hex_PlayTitle_Now = stInfoArea.hexPlayTitleCD; //傛偔傢偐傜側偄丅
gu08_before_hex_PlayTitle = stInfoArea.hexPlayTitleCD; //傛偔傢偐傜側偄丅
gu08_GotoMsfSC = 1; // GotoMSF梫媮 //YTC00G 20050128 CD/ESP帪偼偙偙偱梫媮
}else
{
gu08_hex_PlayTitle_Now = stInfoArea.hexPlayTitleMP3;
gu08_before_hex_PlayTitle = stInfoArea.hexPlayTitleMP3;
}
gu08_scc_PlayTitle = 4; // 師忬懺
break;
case 4: //傾僋僙僗廔椆懸偪
if(gu08_scc_ServoError==2)
{ // SERVO Error桳傝,暅媽張棟幚峴拞
SCC_BF=3; //傾僋僙僗幚峴拞偵僄儔乕敪惗丅僄儔乕暅婣帪偺栠傝応強
gu08_scc_PlayTitle = 9; //
}
else
{ // SERVO弴挷丅
#if ID3TAG // SDC 20050205
if( !gu08_GotoMsfSC || ( stInfoArea.PlayType == TYPE_MP3 ))
#else
if( !gu08_GotoMsfSC )
#endif
{ //GotoMSF惓忢廔椆
// SDC 20050105 if( stInfoArea.PlayType == TYPE_MP3 )
if(( stInfoArea.PlayType == TYPE_MP3 ) && !gu08_scc_Search ) // SDC 20050105
{
if( mp3Ctl.WR.sts < 3 )
{
break; //
}
}
#if !LCD_DM //[dyna-DM] 巄掕
#if ROM // SDC 050211
PlayList_GetEntry( gi_PlayList_index, &PlayTitleMP3 );
UserCtrl_GetFileName( PlayTitleMP3 );
#else
UserCtrl_GetFileName( PlayList_GetEntry( gi_PlayList_index ) );
#endif
#endif
#if ID3TAG // SDC 20050202
#if 0 //[dyna-DM]
if( !(mp3Ctl.PLAY[gu08_num_Slot].flgs & BIT_ID3V1_END) ){
break;
}
#else
if(( stInfoArea.PlayType == TYPE_MP3 ) && !( mp3Ctl.PLAY[gu08_num_Slot].flgs & BIT_ID3V2_END )) // SDC 20050202
break; // ID3TAG 夝愅拞
#endif
#endif
if( !(( stInfoArea.PlayType == TYPE_MP3 ) && gu08_scc_Search )) // SDC 20050106
if( gu08_kind_SearchDIR != 2 ) // SDC 20050111 No.382
gu08_sts_DISPLAY = 1; //昞帵ENABLE 傎傫偲偼壒偩偟奐巒帪揰丅
stInfoArea.hexPlayMin = 0x00; //忕挿
stInfoArea.hexPlaySec = 0x00; //忕挿
//1115 DrvDSP_RenewDisplayTime( ); //偆乕傫丅俀倣俽懸偰偽昞帵偱傞傛丅
gu08_num_RecoverRetry = 0; //堄枴晄柧
if( stInfoArea.PlayType & TYPE_CD )
{
//YTC00G 20050129
if(gu32_val_TargetFrame > gu32_frame_atime)
{ //僉僘偺偣偄偐丄庤慜偱gotoMSF廔傢偭偨丅偪傚偭偲幪偰傞丅
gu32_val_TargetFrame += 10;
gu08_GotoMsfSC=1;
break;
}
//<<<
gu32_val_TargetFrame = gu32_frame_atime; //埵抲僘儗専弌梡
gu08_hex_PlayTitle_Now = stSubq_hex.tno; //Sxxx?
gu08_sts_Subq_index = VALID; //堄枴晄柧 係價僢僩斉偵偁偭偨暔偺側偵偐丅
//攑婞1202 gu08_num_GotoMSFRetry = 0; //堄枴晄柧
#if CDx1
//PAUSE嬦枴
if(gu08_scc_PauseCD ==0)
{ //not Pause
if( stInfoArea.PlayType == TYPE_CD )
gu08_scc_TimeLag=1; //埵抲僘儗専弌奐巒
#if ROM // SDC 20050204
}
else
{ //pause拞
#endif
}
#endif
if( stInfoArea.PlayType == TYPE_ESP )
{
if(gu08_scc_Search==0) //SERCH拞丒梫媮側偗傟偽
{ //
gu08_sccd_ESPctrl = 1; //ESP惂屼奐巒
}
mp3_decode_enable=1; //弨旛弌棃師戞丄壒傪偩偡丅
if( stInfoArea.Command[CMD_PAUSE_ESP][CMD_RESPONSE] == CMD_RES_FOUND)
{ //
mp3_decode_enable=0; //PAUSE拞
}
}
//YTC00G 20050129
stInfoArea.Command[CMD_PLAY_TITLE][CMD_RESPONSE] = CMD_RES_FOUND; //倀俬偵曬崘丅
#if !LCD_DM // SDC 20050213
gu08_SFlgLine1 = //OFF; // 僗僋儘乕儖掆巭
gu08_SFlgLine2 = OFF; // 僗僋儘乕儖掆巭
#endif
}
#if !LCD_DM // SDC 20050213
else // MP3
{
strcpyNNull( &gu08_SDataLine1[0], " " ); // File name set
// DrvLCD_DisplayData( LINE_1, DIGIT_00, " " ); // 侾峴昞帵
gu08_SFlgLine1 = ON; // 僗僋儘乕儖奐巒
gu08_SDTopLine1 = 0; // 昞帵奐巒埵抲弶婜壔
if( gu08_kind_PlayMode == PMODE_NORMAL )
{
gu08_SFlgLine2 = ON; // 僗僋儘乕儖奐巒
}
gu08_SDTopLine2 = 49; // 昞帵奐巒埵抲弶婜壔
if( mp3Ctl.PLAY[gu08_num_Slot].flgs & BIT_ID3TAG_EXIST )
{
strcpy( &gu08_SDataLine1[strlen( gu08_SDataLine1 )], " Title:" );
// gu08_SDataLine1[strlen( gu08_SDataLine1 )] = NULL;
gu08_SSubFlgLine1 = ON;
}
gu08_SDTopLine1 = 0;
}
gu08_SFlgLine4 = ON; // 僗僋儘乕儖奐巒
gu08_SDTopLine4 = 0; // 昞帵奐巒埵抲弶婜壔
#endif
gu08_scc_PlayTitle = 5; // 師忬懺
}
}
break;
case 5: //捠忢嵞惗娔帇
if(gu08_scc_ServoError==2)
{ // SERVO Error桳傝,暅媽張棟幚峴拞
#if CDx1 // SDC 20041218
if( stInfoArea.PlayType == TYPE_CD )
{
gu08_sts_DISPLAY = 0; //昞帵嬛巭
DrvDSP_Mute_On();
}
#endif // end of CDx1
SCC_BF=5; //暅媽懸偪傊
gu08_scc_PlayTitle = 9; //
}
else
{ //僒乕儃弴挷
if( stInfoArea.PlayType & TYPE_CD )
{
if( ( gu08_scc_Pause != 0 ) || ( gu08_sts_PauseRelease != 0 ) )
{
//丠 stInfoArea.Command[CMD_PLAY_TITLE_CD][CMD_RESPONSE] = CMD_RES_EXEC; //
break; // ->Pause拞
}
if( ( gu08_scc_Search != 0 ) || ( gu08_sts_SearchRelease != 0 ) )
{
break; // ->Search幚峴拞
}
}
// v.PLAY幚峴拞
stInfoArea.Command[CMD_PLAY_TITLE][CMD_RESPONSE] = CMD_RES_FOUND; //UI揳両僒乕儃偼弴挷偱偁傝傑偡丅曬崘丅
// DrvDSP_GetTime_Now( );
#if CDx1
if( stInfoArea.PlayType == TYPE_CD )
DrvDSP_RenewDisplayTime( ); //Sxxx 嵞惗帪娫峏怴korehaX1N梡丅
#endif
if( stInfoArea.PlayType & TYPE_CD )
{
//YTC001 No82 20041224
//YTC008 if(( stSubq_bcd.ctrl_addr & 0x40 ) != 0)
//YTC008 if((( stSubq_bcd.ctrl_addr & 0x40 ) != 0) && (gu08_scc_TimeLag == 1)) //YTC008 Ver13偱NG
if((( stSubq_bcd.ctrl_addr & 0x40 ) != 0) && (gu08_sccd_ESPctrl == 5)) //YTC008 棴崬幚峴拞偵CDROM
{ //CDROM傪CDDA嵞惗偟偰偄傞丅
gu08_sts_BorderCDROM = 1;
}
if( gu08_sts_Border == ON )
{ //Border桳傝 DRIVER憌偑僩儔僢僋墇偊傪専弌偟偨
gu08_sts_Border = OFF; //
stInfoArea.Command[CMD_PLAY_TITLE][CMD_RESPONSE] = CMD_RES_BORDER;
}
}else
{
if( !gu08_scc_Search ) // SDC 20050105
{
#if !SAVE1TRK // SDC 20050124
if(gu08_sts_UDFDISC==0)
{ //
#if ID3TAG // SDC 20050202
if(( mp3Ctl.WR.sts == 20 ) && ( mp3Ctl.RD.mode == 0x02 )) // 棴傔廔傢傝偱僞僌夝愅拞偱側偗傟偽
#else
if( mp3Ctl.WR.sts == 20 )
#endif
{
if( gu08_sts_Border_Pickup == OFF )
{
gu08_sts_Border_Pickup = ON; //壒儃乕僟弌偟偨傜丄OFF偵栠傞丅//UI偱off偵偟偰偄傞
stInfoArea.Command[CMD_PLAY_TITLE][CMD_RESPONSE] = CMD_RES_BORDER_PICUP;
}
}
slot = ( gu08_sts_Reserve == OFF ) ? gu08_num_Slot : 1 - gu08_num_Slot;
if( mp3Ctl.PLAY[slot].sts == 0 ) //==0偱偦偺嬋偺壒弌偟廔傢傝
{ //
if( gu08_sts_Border_Sound == OFF )
{
gu08_sts_Border_Sound = ON;
stInfoArea.Command[CMD_PLAY_TITLE][CMD_RESPONSE] = CMD_RES_BORDER_SOUND;
}
}
}
else
#endif // end of SAVE1TRK
{ //UDF MP3嵞惗
if( mp3Ctl.PLAY[0].sts == 0 ) //==0偱偦偺嬋偺壒弌偟廔傢傝
{ //nUDF侾僼傽僀儖嵞惗姰椆
stInfoArea.Command[CMD_PLAY_TITLE][CMD_RESPONSE] = CMD_RES_BORDER_SOUND; // SDC 20041226
}
}
} // SDC 20050105
}
}
break;
case 9: //僄儔乕儕僇僶儕乕姰椆懸偪
if( gu08_scc_ServoError == 0 )
{ //儕僇僶儕乕張棟廔椆丅
if(gu08_sts_Error==0)
{ //
#if ERR_DETECT // SDC 20041218
gu08_scc_ServoError = 1; //僄儔乕専弌梫媮
#else
gu08_scc_ServoError = 0; //僄儔乕専弌梫媮柍偟
#endif
if(SCC_BF==5)
{ //嵞惗拞偺僄儔乕専弌
#if CDx1
if( stInfoArea.PlayType == TYPE_CD )
gu08_scc_TimeLag = 2; //埵抲僘儗廋惓梫媮乮僘儗廋惓屻偵昞帵嫋壜偲側傞乯
#endif
//YTC004 20050103
// SDC 20050105 if((stInfoArea.PlayType == TYPE_ESP) && (gu08_scc_Search == 9))
if((stInfoArea.PlayType != TYPE_CD) && (gu08_scc_Search == 9)) // SDC 20050105
{
gu08_scc_TimeLag = 2; //埵抲僘儗廋惓梫媮
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -