summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2015-07-22 22:10:36 +0200
committer angelosa <salese_corp_ltd@email.it>2015-07-22 22:10:36 +0200
commit758d9d34c9ca2f391fc6cb1ead1ae3df03c44db6 (patch)
treeb8cd8ff322cbe4b3623058286c8fec411af94b86
parent284ff4ec19ea1f0767ba1dea4329c5fa153c17c5 (diff)
Support for track mode, fixes WHP backgrounds.
-rw-r--r--src/emu/machine/segacdblock.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/emu/machine/segacdblock.c b/src/emu/machine/segacdblock.c
index f2ab60a2102..72df5cadffd 100644
--- a/src/emu/machine/segacdblock.c
+++ b/src/emu/machine/segacdblock.c
@@ -857,8 +857,17 @@ void segacdblock_device::cd_cmd_play_disc()
}
else
{
- printf("track mode\n");
- debugger_break(machine());
+
+ m_CurrentTrack = (start_pos >> 8) & 0xff;
+ printf("track mode %d\n",m_CurrentTrack);
+
+ if(m_CurrentTrack == 0)
+ debugger_break(machine());
+ else
+ {
+ m_FAD = cdrom_get_track_start(cdrom, m_CurrentTrack-1);
+ // cdda
+ }
}
if(end_pos & 0x800000)
@@ -872,8 +881,14 @@ void segacdblock_device::cd_cmd_play_disc()
}
else
{
- printf("resume pause state\n");
- debugger_break(machine());
+ printf("resume pause state %08x\n",end_pos);
+ if(end_pos == 0xffffff)
+ debugger_break(machine());
+ else
+ {
+ /**< @todo m_FAD too? */
+ m_FADEnd = cdrom_get_track_start(cdrom, m_CurrentTrack) - m_FAD;
+ }
}
status_change = (m_cd_state & 0x0f00) != CD_STAT_PLAY;
@@ -1829,7 +1844,6 @@ void segacdblock_device::device_timer(emu_timer &timer, device_timer_id id, int
else
{
p_ok = 1; // TODO
-
//machine().device<cdda_device>("cdda")->start_audio(cd_curfad, 1);
}
}