get rid of even more redundant code (nw)

This commit is contained in:
David Haywood 2012-12-05 03:10:39 +00:00
parent 8bc07fe7bd
commit 490cca687c

View File

@ -33,6 +33,15 @@ lc89510_temp_device::lc89510_temp_device(const machine_config &mconfig, const ch
nNeoCDIRQVector = 0; nNeoCDIRQVector = 0;
} }
enum CDEmuStatusValue { idle = 0, reading, playing, paused, seeking, fastforward, fastreverse };
CDEmuStatusValue CDEmuStatus;
static inline CDEmuStatusValue CDEmuGetStatus()
{
// printf("CDEmuGetStatus\n");
return CDEmuStatus;
}
void lc89510_temp_device::set_CDC_Do_DMA(device_t &device,segacd_dma_delegate new_segacd_dma_callback) void lc89510_temp_device::set_CDC_Do_DMA(device_t &device,segacd_dma_delegate new_segacd_dma_callback)
{ {
@ -164,6 +173,12 @@ void lc89510_temp_device::CDD_Stop(running_machine &machine)
CDD_STATUS = 0x0000; CDD_STATUS = 0x0000;
SET_CDD_DATA_MODE SET_CDD_DATA_MODE
cdda_stop_audio( m_cdda ); //stop any pending CD-DA cdda_stop_audio( m_cdda ); //stop any pending CD-DA
//neocd
NeoCDAssyStatus = 0x0E;
bNeoCDLoadSector = false;
} }
@ -325,6 +340,12 @@ void lc89510_temp_device::CDD_Play(running_machine &machine)
if(!(CURRENT_TRACK_IS_DATA)) if(!(CURRENT_TRACK_IS_DATA))
cdda_start_audio( m_cdda, SCD_CURLBA, end_msf - SCD_CURLBA ); cdda_start_audio( m_cdda, SCD_CURLBA, end_msf - SCD_CURLBA );
SET_CDC_READ SET_CDC_READ
// neocd
CDEmuStatus = seeking;
NeoCDAssyStatus = 1;
bNeoCDLoadSector = true;
} }
@ -353,6 +374,12 @@ void lc89510_temp_device::CDD_Pause(running_machine &machine)
//segacd.current_frame = cdda_get_audio_lba( machine.device( "cdda" ) ); //segacd.current_frame = cdda_get_audio_lba( machine.device( "cdda" ) );
//if(!(CURRENT_TRACK_IS_DATA)) //if(!(CURRENT_TRACK_IS_DATA))
cdda_pause_audio( m_cdda, 1 ); cdda_pause_audio( m_cdda, 1 );
NeoCDAssyStatus = 4;
bNeoCDLoadSector = false;
} }
void lc89510_temp_device::CDD_Resume(running_machine &machine) void lc89510_temp_device::CDD_Resume(running_machine &machine)
@ -367,6 +394,9 @@ void lc89510_temp_device::CDD_Resume(running_machine &machine)
SET_CDC_READ SET_CDC_READ
//if(!(CURRENT_TRACK_IS_DATA)) //if(!(CURRENT_TRACK_IS_DATA))
cdda_pause_audio( m_cdda, 0 ); cdda_pause_audio( m_cdda, 0 );
NeoCDAssyStatus = 1;
bNeoCDLoadSector = true;
} }
@ -411,6 +441,10 @@ void lc89510_temp_device::CDD_Default(void)
{ {
CLEAR_CDD_RESULT CLEAR_CDD_RESULT
CDD_STATUS = SCD_STATUS; CDD_STATUS = SCD_STATUS;
NeoCDAssyStatus = 9;
bNeoCDLoadSector = false;
} }
@ -454,20 +488,6 @@ void lc89510_temp_device::lc89510_Reset(void)
CDC_REG0 = CDC_REG1 = SCD_STATUS_CDC = CDD_DONE = 0; CDC_REG0 = CDC_REG1 = SCD_STATUS_CDC = CDD_DONE = 0;
} }
void lc89510_temp_device::CDC_End_Transfer(running_machine& machine)
{
STOP_CDC_DMA
CDC_REG0 |= 0x8000;
CDC_REG0 &= ~0x4000;
LC8951RegistersR[REG_R_IFSTAT] |= 0x08;
if (LC8951RegistersW[REG_W_IFCTRL] & 0x40)
{
LC8951RegistersR[REG_R_IFSTAT] &= ~0x40;
CHECK_SCD_LV5_INTERRUPT
}
}
void lc89510_temp_device::CDC_Do_DMA(running_machine& machine, int rate) void lc89510_temp_device::CDC_Do_DMA(running_machine& machine, int rate)
{ {
@ -717,17 +737,17 @@ static const char *const CDD_import_cmdnames[] =
"Handle TOC", // 2 "Handle TOC", // 2
"Play", // 3 "Play", // 3
"Seek", // 4 "Seek", // 4
"<undefined>", // 5 "<undefined> (5)", // 5
"Pause", // 6 "Pause", // 6
"Resume", // 7 "Resume", // 7
"FF", // 8 "FF", // 8
"RWD", // 9 "RWD", // 9
"INIT", // A "INIT", // A
"<undefined>", // B "<undefined> (b)", // B
"Close Tray", // C "Close Tray", // C
"Open Tray", // D "Open Tray", // D
"<undefined>", // E "<undefined> (e)", // E
"<undefined>" // F "<undefined> (f)" // F
}; };
void lc89510_temp_device::CDD_Import(running_machine& machine) void lc89510_temp_device::CDD_Import(running_machine& machine)
@ -1015,39 +1035,10 @@ machine_config_constructor lc89510_temp_device::device_mconfig_additions() const
/* Neo CD */ /* Neo CD */
enum CDEmuStatusValue { idle = 0, reading, playing, paused, seeking, fastforward, fastreverse };
CDEmuStatusValue CDEmuStatus;
static inline CDEmuStatusValue CDEmuGetStatus()
{
// printf("CDEmuGetStatus\n");
return CDEmuStatus;
}
static void CDEmuStartRead()
{
printf("CDEmuStartRead\n");
CDEmuStatus = seeking;
}
static void CDEmuPause()
{
printf("CDEmuPause\n");
CDEmuStatus = paused;
}
static INT32 CDEmuStop()
{
printf("CDEmuStop\n");
return 1;
}
static INT32 CDEmuPlay(UINT8 M, UINT8 S, UINT8 F)
{
printf("CDEmuPlay\n");
return 1;
}
INT32 lc89510_temp_device::CDEmuLoadSector(INT32 LBA, char* pBuffer) INT32 lc89510_temp_device::CDEmuLoadSector(INT32 LBA, char* pBuffer)
{ {
@ -1085,97 +1076,8 @@ void lc89510_temp_device::NeoCDCommsReset()
void lc89510_temp_device::NeoCDProcessCommand() void lc89510_temp_device::NeoCDProcessCommand()
{ {
memset(CDD_RX, 0, sizeof(CDD_RX)); CDD_Import(machine());
CDD_Export();
if (CDD_TX[0]) {
CDD_RX[1] = 15;
}
switch (CDD_TX[0]) {
case CMD_STATUS: // CDD_GetStatus();
break;
case CMD_STOPALL: // CDD_Stop(machine);
// //bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), CDD_TX[0]);
CDEmuStop();
NeoCDAssyStatus = 0x0E;
bNeoCDLoadSector = false;
break;
case CMD_GETTOC: // CDD_Handle_TOC_Commands();
// //bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), CDD_TX[0]);
CDD_Handle_TOC_Commands();
CDD_Export();
break;
case CMD_READ: { // CDD_Play(machine);
if (LC8951RegistersW[REG_W_CTRL0] & 4) {
if (CDEmuGetStatus() == playing) {
//bprintf(PRINT_ERROR, _T("*** Switching CD mode to CD-ROM while in audio mode!(PC: 0x%06X)\n"), SekGetPC(-1));
}
SCD_CURLBA = CDD_TX[2] * (10 * CD_FRAMES_MINUTE);
SCD_CURLBA += CDD_TX[3] * ( 1 * CD_FRAMES_MINUTE);
SCD_CURLBA += CDD_TX[4] * (10 * CD_FRAMES_SECOND);
SCD_CURLBA += CDD_TX[5] * ( 1 * CD_FRAMES_SECOND);
SCD_CURLBA += CDD_TX[6] * (10 );
SCD_CURLBA += CDD_TX[7] * ( 1 );
SCD_CURLBA -= CD_FRAMES_PREGAP;
CDEmuStartRead();
// LC8951RegistersR[REG_R_IFSTAT] |= 0x20;
} else {
if (CDEmuGetStatus() == reading) {
//bprintf(PRINT_ERROR, _T("*** Switching CD mode to audio while in CD-ROM mode!(PC: 0x%06X)\n"), SekGetPC(-1));
}
CDEmuPlay((CDD_TX[2] * 10) + CDD_TX[3], (CDD_TX[4] * 10) + CDD_TX[5], (CDD_TX[6] * 10) + CDD_TX[7]);
}
NeoCDAssyStatus = 1;
bNeoCDLoadSector = true;
break;
}
case CMD_SEEK: // CDD_Seek();
// //bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), CDD_TX[0]);
CDEmuPause();
break;
case 5:
// //bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), CDD_TX[0]);
// NeoCDAssyStatus = 9;
// bNeoCDLoadSector = false;
break;
case CMD_STOP: // CDD_Pause(machine);
// //bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), CDD_TX[0]);
NeoCDAssyStatus = 4;
bNeoCDLoadSector = false;
break;
case CMD_RESUME: // CDD_Resume(machine);
// //bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), CDD_TX[0]);
NeoCDAssyStatus = 1;
bNeoCDLoadSector = true;
break;
case CMD_FF: // CDD_FF(machine);
case CMD_RW: // CDD_RW(machine);
case CMD_INIT: // CDD_Init();
case 11:
case CMD_CLOSE: // CDD_Close();
case CMD_OPEN: // CDD_Open();
case 14:
case 15:
// //bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), CDD_TX[0]);
NeoCDAssyStatus = 9;
bNeoCDLoadSector = false;
break;
}
} }
void lc89510_temp_device::NeoCDCommsControl(UINT8 clock, UINT8 send) void lc89510_temp_device::NeoCDCommsControl(UINT8 clock, UINT8 send)
@ -1316,6 +1218,20 @@ void lc89510_temp_device::LC8915EndTransfer()
} }
void lc89510_temp_device::CDC_End_Transfer(running_machine& machine)
{
STOP_CDC_DMA
CDC_REG0 |= 0x8000;
CDC_REG0 &= ~0x4000;
LC8951RegistersR[REG_R_IFSTAT] |= 0x08;
if (LC8951RegistersW[REG_W_IFCTRL] & 0x40)
{
LC8951RegistersR[REG_R_IFSTAT] &= ~0x40;
CHECK_SCD_LV5_INTERRUPT
}
}