summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2015-07-21 00:18:26 +0200
committer angelosa <salese_corp_ltd@email.it>2015-07-21 00:18:26 +0200
commit587d84fa83e3dc58ae4af138307267cadff54a3c (patch)
treeb8f4f4a9e8ca33587324f40cc7fe99f3f0ca0414
parent86eab8a5f11fa6db8a858ddda883ad324d92ca62 (diff)
Minor mods
-rw-r--r--src/emu/machine/segacdblock.c23
-rw-r--r--src/emu/machine/segacdblock.h1
-rw-r--r--src/mess/drivers/saturn.c2
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)