diff options
| author | 2015-07-21 00:18:26 +0200 | |
|---|---|---|
| committer | 2015-07-21 00:18:26 +0200 | |
| commit | 587d84fa83e3dc58ae4af138307267cadff54a3c (patch) | |
| tree | b8f4f4a9e8ca33587324f40cc7fe99f3f0ca0414 | |
| parent | 86eab8a5f11fa6db8a858ddda883ad324d92ca62 (diff) | |
Minor mods
| -rw-r--r-- | src/emu/machine/segacdblock.c | 23 | ||||
| -rw-r--r-- | src/emu/machine/segacdblock.h | 1 | ||||
| -rw-r--r-- | src/mess/drivers/saturn.c | 2 |
3 files changed, 16 insertions, 10 deletions
diff --git a/src/emu/machine/segacdblock.c b/src/emu/machine/segacdblock.c index 32af275e41b..7895a8edcbd 100644 --- a/src/emu/machine/segacdblock.c +++ b/src/emu/machine/segacdblock.c @@ -134,7 +134,7 @@ WRITE16_MEMBER(segacdblock_device::hirq_w) } READ16_MEMBER(segacdblock_device::hirq_mask_r){ return m_hirq_mask; } -WRITE16_MEMBER(segacdblock_device::hirq_mask_w) { COMBINE_DATA(&m_hirq_mask); } +WRITE16_MEMBER(segacdblock_device::hirq_mask_w) { printf("%04x\n",m_hirq_mask); debugger_break(machine()); COMBINE_DATA(&m_hirq_mask); } void segacdblock_device::SH2SendsCommand() { @@ -146,16 +146,16 @@ void segacdblock_device::SH2SendsCommand() } // 0x6001fd8 cd-block string check -READ16_MEMBER(segacdblock_device::cr0_r){ return m_dr[0]; } +READ16_MEMBER(segacdblock_device::cr0_r){ m_data_read |= 1; return m_dr[0]; } WRITE16_MEMBER(segacdblock_device::cr0_w){ m_cmd_issued |= 1; COMBINE_DATA(&m_cr[0]);} -READ16_MEMBER(segacdblock_device::cr1_r){ return m_dr[1]; } +READ16_MEMBER(segacdblock_device::cr1_r){ m_data_read |= 2; return m_dr[1]; } WRITE16_MEMBER(segacdblock_device::cr1_w){ m_cmd_issued |= 2; COMBINE_DATA(&m_cr[1]);} -READ16_MEMBER(segacdblock_device::cr2_r){ return m_dr[2]; } +READ16_MEMBER(segacdblock_device::cr2_r){ m_data_read |= 4; return m_dr[2]; } WRITE16_MEMBER(segacdblock_device::cr2_w){ m_cmd_issued |= 4; COMBINE_DATA(&m_cr[2]);} -READ16_MEMBER(segacdblock_device::cr3_r){ return m_dr[3]; } +READ16_MEMBER(segacdblock_device::cr3_r){ m_data_read |= 8; return m_dr[3]; } WRITE16_MEMBER(segacdblock_device::cr3_w){ m_cmd_issued |= 8; COMBINE_DATA(&m_cr[3]); SH2SendsCommand(); } void segacdblock_device::cd_defragblocks(partitionT *part) @@ -436,6 +436,7 @@ void segacdblock_device::cd_free_block(blockT *blktofree) return; } + printf("%d\n",blktofree->size); debug_var = 0; for (i = 0; i < 200; i++) { @@ -447,6 +448,7 @@ void segacdblock_device::cd_free_block(blockT *blktofree) } } + printf("afterparty %d\n",blktofree->size); if(debug_var > 1) debugger_break(machine()); @@ -1248,8 +1250,9 @@ void segacdblock_device::cd_cmd_delete_sector() partitions[bufnum].bnum[i] = 0xff; } + // defrag what's left - cd_defragblocks(transpart); + cd_defragblocks(&partitions[bufnum]); partitions[bufnum].numblks -= sectnum; @@ -1762,7 +1765,8 @@ void segacdblock_device::device_timer(emu_timer &timer, device_timer_id id, int //if(m_cd_timer->remaining().as_double() != 1000000000.000000) // return; dma_setup(); - + if(m_data_read != 0xf) + return; if(m_isDiscInTray == false) m_cd_state = CD_STAT_NODISC; // m_cd_state = CD_STAT_PAUSE; @@ -1859,7 +1863,7 @@ void segacdblock_device::device_timer(emu_timer &timer, device_timer_id id, int } m_cd_timer->adjust(attotime::from_hz(DEBUG_CDSPEED)); - + m_data_read = 0; // make sure data readback is read. //if(m_TransferActive == true) // m_cd_state|= CD_STAT_TRANS; //cd_standard_return(true); @@ -1900,7 +1904,7 @@ void segacdblock_device::device_reset() m_peri_timer->reset(); m_cmd_timer->reset(); m_cd_timer->reset(); - + m_data_read |= 0xf; xfertype = CDDMA_STOPPED; sourcetype = SOURCE_NONE; m_dma_size = 0; @@ -1909,6 +1913,7 @@ void segacdblock_device::device_reset() m_sh1_inited = false; m_cmd_issued = 0; m_hirq = 0xffff; + m_hirq_mask = 0xffff; freeblocks = 200; m_LastBuffer = 0xff; m_CurrentTrack = 0xff; diff --git a/src/emu/machine/segacdblock.h b/src/emu/machine/segacdblock.h index 2172aa4cf44..7ec204eb742 100644 --- a/src/emu/machine/segacdblock.h +++ b/src/emu/machine/segacdblock.h @@ -84,6 +84,7 @@ private: INT32 m_FADEnd; UINT16 m_cd_state; UINT8 m_cmd_issued; + UINT8 m_data_read; bool m_sh1_inited; bool m_isDiscInTray; //bool m_TOCPhase; diff --git a/src/mess/drivers/saturn.c b/src/mess/drivers/saturn.c index 61819a770c3..915dc0fb075 100644 --- a/src/mess/drivers/saturn.c +++ b/src/mess/drivers/saturn.c @@ -733,7 +733,7 @@ static MACHINE_CONFIG_START( saturn, sat_console_state ) MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram", sat_console_state, nvram_init) MCFG_NVRAM_ADD_0FILL("smpc_nv") // TODO: default for each region (+ move it inside SMPC when converted to device) - MCFG_SEGACDBLOCK_ADD("sh1_hle", 150) // 150, @todo + MCFG_SEGACDBLOCK_ADD("sh1_hle", 0) // 150, @todo //MCFG_TIMER_DRIVER_ADD("sector_timer", sat_console_state, stv_sector_cb) //MCFG_TIMER_DRIVER_ADD("sh1_cmd", sat_console_state, stv_sh1_sim) |
