mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
Added preliminary CD-DA routing to SCSP EXTS parallel port, fixes CD-Rom player equalizer in Sega Saturn. [Angelo Salese]
This commit is contained in:
parent
59fd99be9b
commit
4472d60b15
@ -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:
|
||||
|
@ -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_device>("cdda")->get_channel_volume(0);
|
||||
if(addr == 0xee2)
|
||||
v= m_DSP.TEMP[0] & 0xffff;
|
||||
v = space.machine().device<cdda_device>("cdda")->get_channel_volume(1);
|
||||
}
|
||||
}
|
||||
return v;
|
||||
|
Loading…
Reference in New Issue
Block a user