diff --git a/src/emu/machine/stvcd.c b/src/emu/machine/stvcd.c index bb3ed98115b..e058db0619b 100644 --- a/src/emu/machine/stvcd.c +++ b/src/emu/machine/stvcd.c @@ -862,7 +862,11 @@ void saturn_state::cd_exec_command( void ) //printf("Partition %08x %04x\n",bufnum,cr4); } - hirqreg |= (CMOK|DRDY); + printf("%04x\n",cr4); + if(cr4 == 0) + hirqreg |= (CMOK); + else + hirqreg |= (CMOK|DRDY); status_type = 1; } break; @@ -1908,6 +1912,7 @@ void saturn_state::cd_writeWord(UINT32 addr, UINT16 data) cr1 = data; cd_stat &= ~CD_STAT_PERI; cmd_pending |= 1; + sh1_timer->adjust(attotime::never); break; case 0x001c: case 0x001e: diff --git a/src/emu/sound/scsp.c b/src/emu/sound/scsp.c index b37284cc05c..d92f64dec25 100644 --- a/src/emu/sound/scsp.c +++ b/src/emu/sound/scsp.c @@ -30,6 +30,7 @@ */ #include "emu.h" +#include "sound/cdda.h" #include "scsp.h" @@ -1010,8 +1011,10 @@ unsigned short scsp_device::r16(address_space &space, unsigned int addr) v= *((unsigned short *) (m_DSP.EFREG+(addr-0xec0)/2)); else { - /* - TODO: Kyuutenkai reads from 0xee0/0xee2, it's an undocumented "DSP internal buffer" register ... + /**! + @todo Kyuutenkai reads from 0xee0/0xee2, it's tied with EXTS register(s) also used for CD-Rom Player equalizer. + This port is actually an external parallel port, directly connected from the CD Block device, hence code is a bit of an hack. + Kyuutenkai code snippet for reference: 004A3A: 207C 0010 0EE0 movea.l #$100ee0, A0 004A40: 43EA 0090 lea ($90,A2), A1 ;A2=0x700 004A44: 6100 0254 bsr $4c9a @@ -1044,11 +1047,11 @@ unsigned short scsp_device::r16(address_space &space, unsigned int addr) 004CB0: 4CDF 0002 movem.l (A7)+, D1 004CB4: 4E75 rts */ - logerror("SCSP: Reading from unmapped register %08x\n",addr); + logerror("SCSP: Reading from EXTS register %08x\n",addr); if(addr == 0xee0) - v= m_DSP.TEMP[0] >> 16; + v = space.machine().device("cdda")->get_channel_volume(0); if(addr == 0xee2) - v= m_DSP.TEMP[0] & 0xffff; + v = space.machine().device("cdda")->get_channel_volume(1); } } return v;