summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2015-07-13 23:53:54 +0200
committer angelosa <salese_corp_ltd@email.it>2015-07-13 23:53:54 +0200
commit50fb87a24581fdee866930ba604624aea476e0c2 (patch)
treedf96cfb1a6e20f2b2cf66dbdbed329c8806cfdf7
parente5bae39da5e5c1632d52eaa7336af8736b49e5b8 (diff)
Next!
-rw-r--r--src/emu/machine/segacdblock.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/emu/machine/segacdblock.c b/src/emu/machine/segacdblock.c
index 1a8949297a2..d0cc1d80d73 100644
--- a/src/emu/machine/segacdblock.c
+++ b/src/emu/machine/segacdblock.c
@@ -1170,14 +1170,22 @@ void segacdblock_device::device_timer(emu_timer &timer, device_timer_id id, int
}
else if(id == CD_TIMER)
{
- if(m_cd_state == CD_STAT_PLAY)
+ if((m_cd_state & 0x0f00) == CD_STAT_PAUSE)
+ {
+ if(!(m_hirq & BFUL))
+ m_cd_state = CD_STAT_PLAY;
+
+ m_cd_timer->adjust(attotime::from_hz(150));
+
+ }
+ else if((m_cd_state & 0x0f00) == CD_STAT_PLAY)
{
UINT8 p_ok;
- popmessage("%08x %08x",m_FAD,m_FADEnd);
+
+ popmessage("%08x %08x",m_FAD,m_FADEnd);
if (cdrom)
{
-
if(cdrom_get_track_type(cdrom, cdrom_get_track(cdrom, m_FAD)) != CD_TRACK_AUDIO)
{
cd_read_filtered_sector(m_FAD,&p_ok);
@@ -1196,20 +1204,20 @@ void segacdblock_device::device_timer(emu_timer &timer, device_timer_id id, int
m_FADEnd --;
set_flag(CSCT);
- if(m_FADEnd)
- m_cd_timer->adjust(attotime::from_hz(150)); // @todo use the clock Luke
- else
+ if(!m_FADEnd)
{
m_cd_state = CD_STAT_PAUSE;
set_flag(PEND);
// @todo EFLS for File command
+ return;
}
-
- return;
}
+
+ if(m_hirq & BFUL)
+ m_cd_state = CD_STAT_PAUSE;
- m_cd_state = CD_STAT_PAUSE;
+ m_cd_timer->adjust(attotime::from_hz(150));
}
}