diff options
| author | 2015-07-22 22:10:36 +0200 | |
|---|---|---|
| committer | 2015-07-22 22:10:36 +0200 | |
| commit | 758d9d34c9ca2f391fc6cb1ead1ae3df03c44db6 (patch) | |
| tree | b8cd8ff322cbe4b3623058286c8fec411af94b86 | |
| parent | 284ff4ec19ea1f0767ba1dea4329c5fa153c17c5 (diff) | |
Support for track mode, fixes WHP backgrounds.
| -rw-r--r-- | src/emu/machine/segacdblock.c | 24 |
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); } } |
