wd33x9c: Checkpoint commit for co-debugging
This commit is contained in:
parent
e0adc2e60e
commit
2894c038d8
@ -18,7 +18,7 @@ class nscsi_device;
|
||||
class nscsi_bus_device : public device_t
|
||||
{
|
||||
public:
|
||||
nscsi_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
nscsi_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
void ctrl_w(int refid, uint32_t lines, uint32_t mask);
|
||||
void data_w(int refid, uint32_t lines);
|
||||
@ -61,7 +61,7 @@ public:
|
||||
set_default_option(dflt);
|
||||
set_fixed(fixed);
|
||||
}
|
||||
nscsi_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
nscsi_connector(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
virtual ~nscsi_connector();
|
||||
|
||||
nscsi_device *get_device();
|
||||
|
@ -3,7 +3,7 @@
|
||||
#include "emu.h"
|
||||
#include "machine/nscsi_cd.h"
|
||||
|
||||
#define VERBOSE 0
|
||||
#define VERBOSE 1
|
||||
#include "logmacro.h"
|
||||
|
||||
DEFINE_DEVICE_TYPE(NSCSI_CDROM, nscsi_cdrom_device, "scsi_cdrom", "SCSI CD-ROM")
|
||||
@ -76,10 +76,10 @@ void nscsi_cdrom_device::device_reset()
|
||||
cur_sector = -1;
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(nscsi_cdrom_device::device_add_mconfig)
|
||||
MCFG_CDROM_ADD("image")
|
||||
MCFG_CDROM_INTERFACE("cdrom")
|
||||
MACHINE_CONFIG_END
|
||||
void nscsi_cdrom_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
CDROM(config, image).set_interface("cdrom");
|
||||
}
|
||||
|
||||
void nscsi_cdrom_device::set_block_size(u32 block_size)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@ nscsi_harddisk_device::nscsi_harddisk_device(const machine_config &mconfig, cons
|
||||
}
|
||||
|
||||
nscsi_harddisk_device::nscsi_harddisk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
|
||||
nscsi_full_device(mconfig, type, tag, owner, clock), harddisk(nullptr), lba(0), cur_lba(0), blocks(0), bytes_per_sector(0)
|
||||
nscsi_full_device(mconfig, type, tag, owner, clock), image(*this, "image"), harddisk(nullptr), lba(0), cur_lba(0), blocks(0), bytes_per_sector(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -37,8 +37,7 @@ void nscsi_harddisk_device::device_start()
|
||||
void nscsi_harddisk_device::device_reset()
|
||||
{
|
||||
nscsi_full_device::device_reset();
|
||||
harddisk_image_device *hd = subdevice<harddisk_image_device>("image");
|
||||
harddisk = hd->get_hard_disk_file();
|
||||
harddisk = image->get_hard_disk_file();
|
||||
if(!harddisk) {
|
||||
scsi_id = -1;
|
||||
bytes_per_sector = 0;
|
||||
@ -46,18 +45,17 @@ void nscsi_harddisk_device::device_reset()
|
||||
const hard_disk_info *hdinfo = hard_disk_get_info(harddisk);
|
||||
bytes_per_sector = hdinfo->sectorbytes;
|
||||
|
||||
chd_file *chd = hd->get_chd_file();
|
||||
chd_file *chd = image->get_chd_file();
|
||||
if(chd != nullptr)
|
||||
chd->read_metadata(HARD_DISK_IDENT_METADATA_TAG, 0, m_inquiry_data);
|
||||
}
|
||||
cur_lba = -1;
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(nscsi_harddisk_device::device_add_mconfig)
|
||||
MCFG_HARDDISK_ADD("image")
|
||||
MCFG_HARDDISK_INTERFACE("scsi_hdd")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
void nscsi_harddisk_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
HARDDISK(config, image).set_interface("scsi_hdd");
|
||||
}
|
||||
|
||||
uint8_t nscsi_harddisk_device::scsi_get_data(int id, int pos)
|
||||
{
|
||||
|
@ -6,7 +6,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "machine/nscsi_bus.h"
|
||||
#include "harddisk.h"
|
||||
#include "imagedev/harddriv.h"
|
||||
|
||||
class nscsi_harddisk_device : public nscsi_full_device
|
||||
{
|
||||
@ -24,6 +24,7 @@ protected:
|
||||
virtual uint8_t scsi_get_data(int id, int pos) override;
|
||||
virtual void scsi_put_data(int buf, int offset, uint8_t data) override;
|
||||
|
||||
required_device<harddisk_image_device> image;
|
||||
uint8_t block[512];
|
||||
hard_disk_file *harddisk;
|
||||
int lba, cur_lba, blocks;
|
||||
|
@ -29,8 +29,7 @@
|
||||
#define LOG_REGS (LOG_READS | LOG_WRITES)
|
||||
#define LOG_ALL (LOG_REGS | LOG_COMMANDS | LOG_ERRORS | LOG_MISC | LOG_LINES | LOG_STATE | LOG_STEP)
|
||||
|
||||
#define VERBOSE (LOG_COMMANDS | LOG_ERRORS | LOG_STATE)
|
||||
#define LOG_OUTPUT_FUNC printf
|
||||
#define VERBOSE (LOG_COMMANDS | LOG_ERRORS | LOG_STATE | LOG_REGS | LOG_STEP)
|
||||
#include "logmacro.h"
|
||||
|
||||
enum register_addresses_e : uint8_t {
|
||||
@ -279,6 +278,27 @@ enum : uint16_t {
|
||||
INIT_CPT_RECV_BYTE_NACK
|
||||
};
|
||||
|
||||
const char *const wd33c9x_base_device::state_names[] = {
|
||||
"-",
|
||||
"IDLE",
|
||||
"FINISHED",
|
||||
"DISC_SEL_ARBITRATION",
|
||||
"INIT_MSG_WAIT_REQ",
|
||||
"INIT_XFR",
|
||||
"INIT_XFR_SEND_PAD_WAIT_REQ",
|
||||
"INIT_XFR_SEND_PAD",
|
||||
"INIT_XFR_RECV_PAD_WAIT_REQ",
|
||||
"INIT_XFR_RECV_PAD",
|
||||
"INIT_XFR_RECV_BYTE_ACK",
|
||||
"INIT_XFR_RECV_BYTE_NACK",
|
||||
"INIT_XFR_FUNCTION_COMPLETE",
|
||||
"INIT_XFR_BUS_COMPLETE",
|
||||
"INIT_XFR_WAIT_REQ",
|
||||
"INIT_CPT_RECV_BYTE_ACK",
|
||||
"INIT_CPT_RECV_WAIT_REQ",
|
||||
"INIT_CPT_RECV_BYTE_NACK",
|
||||
};
|
||||
|
||||
enum : uint16_t {
|
||||
// Arbitration
|
||||
ARB_WAIT_BUS_FREE = 1,
|
||||
@ -299,6 +319,24 @@ enum : uint16_t {
|
||||
RECV_WAIT_REQ_0
|
||||
};
|
||||
|
||||
const char *const wd33c9x_base_device::substate_names[] = {
|
||||
"-",
|
||||
"ARB_WAIT_BUS_FREE",
|
||||
"ARB_CHECK_FREE",
|
||||
"ARB_EXAMINE_BUS",
|
||||
"ARB_ASSERT_SEL",
|
||||
"ARB_SET_DEST",
|
||||
"ARB_RELEASE_BUSY",
|
||||
"ARB_TIMEOUT_BUSY",
|
||||
"ARB_TIMEOUT_ABORT",
|
||||
"ARB_DESKEW_WAIT",
|
||||
"SEND_WAIT_SETTLE",
|
||||
"SEND_WAIT_REQ_0",
|
||||
"RECV_WAIT_REQ_1",
|
||||
"RECV_WAIT_SETTLE",
|
||||
"RECV_WAIT_REQ_0",
|
||||
};
|
||||
|
||||
enum : uint16_t {
|
||||
STATE_MASK = 0x00ff,
|
||||
SUB_SHIFT = 8,
|
||||
@ -327,7 +365,6 @@ wd33c9x_base_device::wd33c9x_base_device(const machine_config &mconfig, device_t
|
||||
, m_scsi_state{ IDLE }
|
||||
, m_mode{ MODE_D }
|
||||
, m_xfr_phase{ 0 }
|
||||
, m_step_count{ 0 }
|
||||
, m_transfer_count{ 0 }
|
||||
, m_data_fifo{ 0 }
|
||||
, m_data_fifo_pos{ 0 }
|
||||
@ -358,7 +395,6 @@ void wd33c9x_base_device::device_start()
|
||||
save_item(NAME(m_mode));
|
||||
save_item(NAME(m_scsi_state));
|
||||
save_item(NAME(m_xfr_phase));
|
||||
save_item(NAME(m_step_count));
|
||||
save_item(NAME(m_transfer_count));
|
||||
save_item(NAME(m_data_fifo));
|
||||
save_item(NAME(m_data_fifo_pos));
|
||||
@ -387,7 +423,6 @@ void wd33c9x_base_device::device_reset()
|
||||
set_scsi_state(IDLE);
|
||||
m_mode = MODE_D;
|
||||
m_xfr_phase = 0;
|
||||
m_step_count = 0;
|
||||
m_transfer_count = 0;
|
||||
data_fifo_reset();
|
||||
irq_fifo_reset();
|
||||
@ -462,7 +497,7 @@ READ8_MEMBER(wd33c9x_base_device::indir_r)
|
||||
case 1:
|
||||
return indir_reg_r(space, 0, mem_mask);
|
||||
default:
|
||||
LOGMASKED(LOG_READS | LOG_ERRORS, "%s: Read from invalid offset %d\n", shortname(), offset);
|
||||
LOGMASKED(LOG_READS | LOG_ERRORS, "Read from invalid offset %d\n", offset);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@ -475,6 +510,7 @@ READ8_MEMBER(wd33c9x_base_device::indir_r)
|
||||
|
||||
WRITE8_MEMBER(wd33c9x_base_device::indir_w)
|
||||
{
|
||||
logerror("REG %d %02x\n", offset, data);
|
||||
switch (offset) {
|
||||
case 0:
|
||||
indir_addr_w(space, 0, data, mem_mask);
|
||||
@ -483,7 +519,7 @@ WRITE8_MEMBER(wd33c9x_base_device::indir_w)
|
||||
indir_reg_w(space, 0, data, mem_mask);
|
||||
break;
|
||||
default:
|
||||
LOGMASKED(LOG_WRITES | LOG_ERRORS, "%s: Write to invalid offset %d (data=%02x)\n", shortname(), offset, data);
|
||||
LOGMASKED(LOG_WRITES | LOG_ERRORS, "Write to invalid offset %d (data=%02x)\n", offset, data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -498,7 +534,6 @@ READ8_MEMBER(wd33c9x_base_device::indir_addr_r)
|
||||
if (offset != 0) {
|
||||
fatalerror("%s: Read from invalid address offset %d\n", shortname(), offset);
|
||||
}
|
||||
step(false);
|
||||
return m_regs[AUXILIARY_STATUS];
|
||||
}
|
||||
|
||||
@ -540,6 +575,7 @@ READ8_MEMBER(wd33c9x_base_device::indir_reg_r)
|
||||
fatalerror("%s: The host should never access the data register without DBR set.\n", shortname());
|
||||
}
|
||||
ret = data_fifo_pop();
|
||||
logerror("data = %02x\n", ret);
|
||||
m_regs[AUXILIARY_STATUS] &= ~AUXILIARY_STATUS_DBR;
|
||||
break;
|
||||
|
||||
@ -556,6 +592,8 @@ READ8_MEMBER(wd33c9x_base_device::indir_reg_r)
|
||||
update_irq();
|
||||
}
|
||||
|
||||
logerror("reg %02x = %02x\n", m_addr, ret);
|
||||
|
||||
// No address increment on accesses to Command, Data, and Auxiliary Status Registers
|
||||
if (m_addr != COMMAND && m_addr != AUXILIARY_STATUS) {
|
||||
m_addr = (m_addr + 1) & REGS_MASK;
|
||||
@ -585,7 +623,7 @@ WRITE8_MEMBER(wd33c9x_base_device::indir_reg_w)
|
||||
case INVALID_1D:
|
||||
case INVALID_1E:
|
||||
case AUXILIARY_STATUS:
|
||||
LOGMASKED(LOG_WRITES | LOG_ERRORS, "%s: Write to read-only register address %d (data=%02x)\n", shortname(), m_addr, data);
|
||||
LOGMASKED(LOG_WRITES | LOG_ERRORS, "Write to read-only register address %d (data=%02x)\n", m_addr, data);
|
||||
break;
|
||||
|
||||
case COMMAND: {
|
||||
@ -637,7 +675,7 @@ WRITE8_MEMBER(wd33c9x_base_device::indir_reg_w)
|
||||
WRITE_LINE_MEMBER(wd33c9x_base_device::reset_w)
|
||||
{
|
||||
if (state) {
|
||||
LOGMASKED(LOG_LINES, "%s: Reset via MR line\n", shortname());
|
||||
LOGMASKED(LOG_LINES, "Reset via MR line\n");
|
||||
device_reset();
|
||||
}
|
||||
}
|
||||
@ -695,7 +733,7 @@ void wd33c9x_base_device::start_command()
|
||||
|
||||
switch (cc) {
|
||||
case COMMAND_CC_RESET:
|
||||
LOGMASKED(LOG_COMMANDS, "%s: Reset Command\n", shortname());
|
||||
LOGMASKED(LOG_COMMANDS, "Reset Command\n");
|
||||
scsi_bus->ctrl_w(scsi_refid, 0, S_ALL);
|
||||
scsi_bus->ctrl_wait(scsi_refid, S_SEL|S_BSY|S_RST, S_ALL);
|
||||
m_regs[OWN_ID] = m_command_length;
|
||||
@ -709,17 +747,18 @@ void wd33c9x_base_device::start_command()
|
||||
set_scsi_state(FINISHED);
|
||||
irq_fifo_push((m_regs[OWN_ID] & OWN_ID_EAF) ? SCSI_STATUS_RESET_EAF : SCSI_STATUS_RESET);
|
||||
scsi_id = (m_regs[OWN_ID] & OWN_ID_SCSI_ID);
|
||||
step(false);
|
||||
break;
|
||||
|
||||
case COMMAND_CC_ABORT:
|
||||
LOGMASKED(LOG_COMMANDS, "%s: Abort Command\n", shortname());
|
||||
LOGMASKED(LOG_COMMANDS, "Abort Command\n");
|
||||
set_scsi_state(FINISHED);
|
||||
// FIXME
|
||||
irq_fifo_push((m_regs[OWN_ID] & OWN_ID_EAF) ? SCSI_STATUS_RESET_EAF : SCSI_STATUS_RESET);
|
||||
break;
|
||||
|
||||
case COMMAND_CC_ASSERT_ATN:
|
||||
LOGMASKED(LOG_COMMANDS, "%s: Assert ATN Command\n", shortname());
|
||||
LOGMASKED(LOG_COMMANDS, "Assert ATN Command\n");
|
||||
if (m_mode != MODE_I) {
|
||||
fatalerror("%s: ASSERT_ATN command only valid in the Initiator state.", shortname());
|
||||
}
|
||||
@ -727,7 +766,7 @@ void wd33c9x_base_device::start_command()
|
||||
return;
|
||||
|
||||
case COMMAND_CC_NEGATE_ACK:
|
||||
LOGMASKED(LOG_COMMANDS, "%s: Negate ACK Command\n", shortname());
|
||||
LOGMASKED(LOG_COMMANDS, "Negate ACK Command\n");
|
||||
// FIXME - This is causing problems, so ignore for now.
|
||||
//if (m_mode != MODE_I) {
|
||||
// fatalerror("NEGATE_ACK command only valid in the Initiator state.");
|
||||
@ -736,7 +775,7 @@ void wd33c9x_base_device::start_command()
|
||||
return;
|
||||
|
||||
case COMMAND_CC_DISCONNECT:
|
||||
LOGMASKED(LOG_COMMANDS, "%s: Disconnect Command\n", shortname());
|
||||
LOGMASKED(LOG_COMMANDS, "Disconnect Command\n");
|
||||
scsi_bus->ctrl_w(scsi_refid, 0, S_ALL);
|
||||
scsi_bus->ctrl_wait(scsi_refid, S_SEL|S_BSY|S_RST, S_ALL);
|
||||
m_mode = MODE_D;
|
||||
@ -746,16 +785,17 @@ void wd33c9x_base_device::start_command()
|
||||
|
||||
case COMMAND_CC_SELECT:
|
||||
case COMMAND_CC_SELECT_ATN:
|
||||
LOGMASKED(LOG_COMMANDS, "%s: %s Command\n", shortname(), select_strings[cc - COMMAND_CC_SELECT_ATN]);
|
||||
LOGMASKED(LOG_COMMANDS, "%s Command\n", select_strings[cc - COMMAND_CC_SELECT_ATN]);
|
||||
if (m_mode != MODE_D) {
|
||||
fatalerror("Select commands only valid in the Disconnected state.");
|
||||
}
|
||||
set_scsi_state((ARB_WAIT_BUS_FREE << SUB_SHIFT) | DISC_SEL_ARBITRATION);
|
||||
step(false);
|
||||
break;
|
||||
|
||||
case COMMAND_CC_SELECT_TRANSFER:
|
||||
case COMMAND_CC_SELECT_ATN_TRANSFER:
|
||||
LOGMASKED(LOG_COMMANDS, "%s: %s Command\n", shortname(), select_strings[cc - COMMAND_CC_SELECT_ATN]);
|
||||
LOGMASKED(LOG_COMMANDS, "%s Command\n", select_strings[cc - COMMAND_CC_SELECT_ATN]);
|
||||
if (m_mode == MODE_D) {
|
||||
set_scsi_state((ARB_WAIT_BUS_FREE << SUB_SHIFT) | DISC_SEL_ARBITRATION);
|
||||
m_regs[COMMAND_PHASE] = COMMAND_PHASE_ZERO;
|
||||
@ -768,10 +808,11 @@ void wd33c9x_base_device::start_command()
|
||||
}
|
||||
set_command_length(cc);
|
||||
load_transfer_count();
|
||||
step(false);
|
||||
break;
|
||||
|
||||
case COMMAND_CC_TRANSFER_INFO:
|
||||
LOGMASKED(LOG_COMMANDS, "%s: Transfer Info Command\n", shortname());
|
||||
LOGMASKED(LOG_COMMANDS, "Transfer Info Command\n");
|
||||
if (m_mode != MODE_I) {
|
||||
fatalerror("%s: TRANSFER_INFO command only valid in the Initiator state.", shortname());
|
||||
}
|
||||
@ -787,8 +828,6 @@ void wd33c9x_base_device::start_command()
|
||||
fatalerror("%s: Unimplemented command: 0x%02x", shortname(), cc);
|
||||
break;
|
||||
}
|
||||
|
||||
delay(1);
|
||||
}
|
||||
|
||||
|
||||
@ -810,22 +849,14 @@ static const char * phase_strings[8] = {
|
||||
|
||||
void wd33c9x_base_device::step(bool timeout)
|
||||
{
|
||||
if (++m_step_count > 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
const uint8_t cc = (m_regs[COMMAND] & COMMAND_CC);
|
||||
const bool sat = (cc == COMMAND_CC_SELECT_TRANSFER || cc == COMMAND_CC_SELECT_ATN_TRANSFER);
|
||||
|
||||
uint32_t cycles = 0;
|
||||
do {
|
||||
const uint32_t ctrl = scsi_bus->ctrl_r();
|
||||
const uint32_t data = scsi_bus->data_r();
|
||||
|
||||
m_step_count = 1;
|
||||
|
||||
LOGMASKED(LOG_STEP,
|
||||
"%s: step - PHASE:%s BSY:%x SEL:%x REQ:%x ACK:%x ATN:%x RST:%x DATA:%x (%d.%d) %s\n",
|
||||
"%s: step - PHASE:%s BSY:%x SEL:%x REQ:%x ACK:%x ATN:%x RST:%x DATA:%02x (%s.%s) %s\n",
|
||||
shortname(),
|
||||
phase_strings[ctrl & S_PHASE_MASK],
|
||||
(ctrl & S_BSY) ? 1 : 0,
|
||||
@ -835,7 +866,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
(ctrl & S_ATN) ? 1 : 0,
|
||||
(ctrl & S_RST) ? 1 : 0,
|
||||
data,
|
||||
m_scsi_state & STATE_MASK, m_scsi_state >> SUB_SHIFT,
|
||||
state_names[m_scsi_state & STATE_MASK], substate_names[m_scsi_state >> SUB_SHIFT],
|
||||
(timeout) ? "timeout" : "change"
|
||||
);
|
||||
|
||||
@ -858,9 +889,8 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
LOGMASKED(LOG_STATE, "%s: Target disconnected\n", shortname());
|
||||
} else {
|
||||
LOGMASKED(LOG_STATE, "Target disconnected\n");
|
||||
if (sat) {
|
||||
switch (m_regs[COMMAND_PHASE]) {
|
||||
case COMMAND_PHASE_DISCONNECT_MESSAGE:
|
||||
@ -887,7 +917,6 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
m_mode = MODE_D;
|
||||
scsi_bus->ctrl_w(scsi_refid, 0, S_ALL);
|
||||
scsi_bus->ctrl_wait(scsi_refid, S_SEL|S_BSY|S_RST, S_ALL);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
@ -902,28 +931,22 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
break;
|
||||
|
||||
case ARB_WAIT_BUS_FREE << SUB_SHIFT:
|
||||
if (timeout) {
|
||||
if (!(ctrl & (S_BSY | S_SEL))) {
|
||||
set_scsi_state_sub(ARB_CHECK_FREE);
|
||||
}
|
||||
cycles = 1;
|
||||
delay(1);
|
||||
}
|
||||
break;
|
||||
|
||||
case ARB_CHECK_FREE << SUB_SHIFT:
|
||||
if (timeout) {
|
||||
uint8_t next_state;
|
||||
if (ctrl & (S_BSY | S_SEL)) {
|
||||
next_state = ARB_WAIT_BUS_FREE;
|
||||
cycles = 1;
|
||||
set_scsi_state_sub(ARB_CHECK_FREE);
|
||||
break;
|
||||
}
|
||||
else {
|
||||
if (timeout) {
|
||||
scsi_bus->data_w(scsi_refid, 1 << scsi_id);
|
||||
scsi_bus->ctrl_w(scsi_refid, S_BSY, S_BSY);
|
||||
next_state = ARB_EXAMINE_BUS;
|
||||
cycles = 1;
|
||||
}
|
||||
set_scsi_state_sub(next_state);
|
||||
set_scsi_state_sub(ARB_EXAMINE_BUS);
|
||||
delay(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -933,20 +956,19 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
scsi_bus->ctrl_w(scsi_refid, 0, S_BSY);
|
||||
scsi_bus->data_w(scsi_refid, 0);
|
||||
set_scsi_state_sub(ARB_WAIT_BUS_FREE);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
int win;
|
||||
for (win = 7; win >=0 && !(data & (1 << win)); win--) {};
|
||||
for (win = 7; win >=0 && !(data & (1 << win)); win--);
|
||||
if (win == scsi_id) {
|
||||
scsi_bus->ctrl_w(scsi_refid, S_SEL, S_SEL);
|
||||
set_scsi_state_sub(ARB_ASSERT_SEL);
|
||||
}
|
||||
else {
|
||||
delay(1);
|
||||
} else {
|
||||
scsi_bus->data_w(scsi_refid, 0);
|
||||
scsi_bus->ctrl_w(scsi_refid, 0, S_ALL);
|
||||
set_scsi_state_sub(ARB_CHECK_FREE);
|
||||
}
|
||||
}
|
||||
cycles = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -954,7 +976,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
if (timeout) {
|
||||
scsi_bus->data_w(scsi_refid, (1 << scsi_id) | (1 << (m_regs[DESTINATION_ID] & DESTINATION_ID_DI)));
|
||||
set_scsi_state_sub(ARB_SET_DEST);
|
||||
cycles = 1;
|
||||
delay(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -962,7 +984,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
if (timeout) {
|
||||
scsi_bus->ctrl_w(scsi_refid, (cc == COMMAND_CC_SELECT_ATN || cc == COMMAND_CC_SELECT_ATN_TRANSFER) ? S_ATN : 0, S_ATN | S_BSY);
|
||||
set_scsi_state_sub(ARB_RELEASE_BUSY);
|
||||
cycles = 1;
|
||||
delay(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -973,11 +995,10 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
if (cc == COMMAND_CC_RESELECT) {
|
||||
scsi_bus->ctrl_w(scsi_refid, S_BSY, S_BSY);
|
||||
}
|
||||
cycles = 1;
|
||||
}
|
||||
else {
|
||||
delay(1);
|
||||
} else {
|
||||
set_scsi_state_sub(ARB_TIMEOUT_BUSY);
|
||||
cycles = 1;
|
||||
delay(1); // Should be the select timeout...
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -988,7 +1009,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
scsi_bus->ctrl_w(scsi_refid, 0, S_SEL);
|
||||
m_mode = (cc == COMMAND_CC_RESELECT) ? MODE_T : MODE_I;
|
||||
set_scsi_state_sub(0);
|
||||
++m_step_count;
|
||||
step(true);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -996,14 +1017,13 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
if (timeout) {
|
||||
scsi_bus->data_w(scsi_refid, 0);
|
||||
set_scsi_state_sub(ARB_TIMEOUT_ABORT);
|
||||
cycles = 1000;
|
||||
}
|
||||
else if (ctrl & S_BSY) {
|
||||
delay(1000);
|
||||
} else if (ctrl & S_BSY) {
|
||||
set_scsi_state_sub(ARB_DESKEW_WAIT);
|
||||
if (cc == COMMAND_CC_RESELECT) {
|
||||
scsi_bus->ctrl_w(scsi_refid, S_BSY, S_BSY);
|
||||
}
|
||||
cycles = 1;
|
||||
delay(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1014,9 +1034,8 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
if (cc == COMMAND_CC_RESELECT) {
|
||||
scsi_bus->ctrl_w(scsi_refid, S_BSY, S_BSY);
|
||||
}
|
||||
cycles = 1;
|
||||
}
|
||||
else {
|
||||
delay(1);
|
||||
} else {
|
||||
scsi_bus->ctrl_w(scsi_refid, 0, S_ALL);
|
||||
scsi_bus->ctrl_wait(scsi_refid, S_SEL|S_BSY|S_RST, S_ALL);
|
||||
m_regs[AUXILIARY_STATUS] &= ~(AUXILIARY_STATUS_CIP | AUXILIARY_STATUS_BSY);
|
||||
@ -1031,7 +1050,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
case SEND_WAIT_SETTLE << SUB_SHIFT:
|
||||
if (timeout) {
|
||||
set_scsi_state_sub(SEND_WAIT_REQ_0);
|
||||
++m_step_count;
|
||||
step(false);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1047,14 +1066,14 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
break;
|
||||
}
|
||||
}
|
||||
++m_step_count;
|
||||
step(false);
|
||||
}
|
||||
break;
|
||||
|
||||
case RECV_WAIT_REQ_1 << SUB_SHIFT:
|
||||
if (ctrl & S_REQ) {
|
||||
set_scsi_state_sub(RECV_WAIT_SETTLE);
|
||||
cycles = 1;
|
||||
delay(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1066,8 +1085,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
data_fifo_push(data);
|
||||
if ((m_regs[CONTROL] & CONTROL_DM) != CONTROL_DM_POLLED) {
|
||||
set_drq();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
decrement_transfer_count();
|
||||
m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_DBR;
|
||||
}
|
||||
@ -1079,6 +1097,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
break;
|
||||
|
||||
case S_PHASE_MSG_IN:
|
||||
logerror("Got msg %02x\n", data);
|
||||
data_fifo_push(data);
|
||||
break;
|
||||
|
||||
@ -1086,27 +1105,25 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
fatalerror("%s: Unexpected phase in RECV_WAIT_SETTLE.\n", shortname());
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
data_fifo_push(data);
|
||||
if (m_xfr_phase == S_PHASE_DATA_IN && (m_regs[CONTROL] & CONTROL_DM) != CONTROL_DM_POLLED) {
|
||||
set_drq();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
decrement_transfer_count();
|
||||
m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_DBR;
|
||||
}
|
||||
}
|
||||
set_scsi_state_sub(RECV_WAIT_REQ_0);
|
||||
scsi_bus->ctrl_w(scsi_refid, S_ACK, S_ACK);
|
||||
++m_step_count;
|
||||
step(false);
|
||||
}
|
||||
break;
|
||||
|
||||
case RECV_WAIT_REQ_0 << SUB_SHIFT:
|
||||
if (!(ctrl & S_REQ)) {
|
||||
set_scsi_state_sub(0);
|
||||
++m_step_count;
|
||||
step(false);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1118,12 +1135,11 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
if (ctrl & S_REQ) {
|
||||
irq_fifo_push(SCSI_STATUS_REQ | m_xfr_phase);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
set_scsi_state(INIT_XFR);
|
||||
m_regs[COMMAND_PHASE] = COMMAND_PHASE_SELECTED;
|
||||
}
|
||||
++m_step_count;
|
||||
step(false);
|
||||
break;
|
||||
|
||||
case INIT_XFR:
|
||||
@ -1131,15 +1147,13 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
switch (m_xfr_phase) {
|
||||
case S_PHASE_DATA_OUT:
|
||||
if ((m_regs[CONTROL] & CONTROL_DM) != CONTROL_DM_POLLED) {
|
||||
while (!data_fifo_full() && m_transfer_count > 0) {
|
||||
if(!data_fifo_full() && m_transfer_count > 0)
|
||||
set_drq();
|
||||
}
|
||||
}
|
||||
if (!data_fifo_empty()) {
|
||||
set_scsi_state(INIT_XFR_WAIT_REQ);
|
||||
cycles = send_byte();
|
||||
}
|
||||
else if ((m_regs[CONTROL] & CONTROL_DM) == CONTROL_DM_POLLED) {
|
||||
delay(send_byte());
|
||||
} else if ((m_regs[CONTROL] & CONTROL_DM) == CONTROL_DM_POLLED) {
|
||||
m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_DBR;
|
||||
}
|
||||
break;
|
||||
@ -1149,15 +1163,13 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
uint32_t mask;
|
||||
if (sat) {
|
||||
mask = 0;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_DBR;
|
||||
mask = (m_transfer_count == 0 && m_data_fifo_size == 1) ? S_ATN : 0;
|
||||
}
|
||||
set_scsi_state(INIT_XFR_WAIT_REQ);
|
||||
cycles = send_byte(0, mask);
|
||||
}
|
||||
else if (!sat) {
|
||||
delay(send_byte(0, mask));
|
||||
} else if (!sat) {
|
||||
m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_DBR;
|
||||
}
|
||||
break;
|
||||
@ -1170,15 +1182,13 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
uint32_t mask;
|
||||
if (sat) {
|
||||
mask = S_ATN;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_DBR;
|
||||
mask = (m_transfer_count == 0 && m_data_fifo_size == 1) ? S_ATN : 0;
|
||||
}
|
||||
set_scsi_state(INIT_XFR_WAIT_REQ);
|
||||
cycles = send_byte(0, mask);
|
||||
}
|
||||
else if (!sat) {
|
||||
delay(send_byte(0, mask));
|
||||
} else if (!sat) {
|
||||
m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_DBR;
|
||||
}
|
||||
break;
|
||||
@ -1191,9 +1201,8 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
//state = (m_xfr_phase == S_PHASE_MSG_IN && (!dma_command || tcounter == 1)) ? INIT_XFR_RECV_BYTE_NACK : INIT_XFR_RECV_BYTE_ACK;
|
||||
scsi_bus->ctrl_wait(scsi_refid, S_REQ, S_REQ);
|
||||
set_scsi_state((RECV_WAIT_REQ_1 << SUB_SHIFT) | INIT_XFR_RECV_BYTE_ACK);
|
||||
if (ctrl & S_REQ) {
|
||||
++m_step_count;
|
||||
}
|
||||
if (ctrl & S_REQ)
|
||||
step(false);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1260,17 +1269,18 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
next_state = INIT_XFR;
|
||||
break;
|
||||
|
||||
case S_PHASE_COMMAND:
|
||||
case S_PHASE_COMMAND: {
|
||||
next_state = INIT_XFR;
|
||||
m_regs[COMMAND_PHASE] = COMMAND_PHASE_CP_BYTES_0;
|
||||
LOGMASKED(LOG_COMMANDS, "%s: Sending Command:", shortname());
|
||||
std::string cmd;
|
||||
for (uint8_t i = 0; i < m_command_length; ++i) {
|
||||
const uint8_t command_byte = m_regs[CDB_1 + i];
|
||||
LOGMASKED(LOG_COMMANDS, " %02x", command_byte);
|
||||
cmd += util::string_format(" %02x", command_byte);
|
||||
data_fifo_push(command_byte);
|
||||
}
|
||||
LOGMASKED(LOG_COMMANDS, " (%d)\n", m_transfer_count);
|
||||
LOGMASKED(LOG_COMMANDS, "Sending command:%s (%d)\n", cmd, m_transfer_count);
|
||||
break;
|
||||
}
|
||||
|
||||
case S_PHASE_DATA_OUT:
|
||||
case S_PHASE_DATA_IN:
|
||||
@ -1310,8 +1320,8 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
|
||||
if (next_state != m_scsi_state) {
|
||||
set_scsi_state(next_state);
|
||||
++m_step_count;
|
||||
m_xfr_phase = xfr_phase;
|
||||
step(false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1335,8 +1345,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
fatalerror("%s: Unhandled MSG_IN.\n", shortname());
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (m_regs[COMMAND_PHASE] < COMMAND_PHASE_COMMAND_COMPLETE) {
|
||||
} else if (m_regs[COMMAND_PHASE] < COMMAND_PHASE_COMMAND_COMPLETE) {
|
||||
switch (msg) {
|
||||
case SM_COMMAND_COMPLETE:
|
||||
set_scsi_state(FINISHED);
|
||||
@ -1348,26 +1357,17 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
set_scsi_state(INIT_XFR_WAIT_REQ);
|
||||
}
|
||||
scsi_bus->ctrl_w(scsi_refid, 0, S_ACK);
|
||||
++m_step_count;
|
||||
step(false);
|
||||
break;
|
||||
|
||||
default:
|
||||
fatalerror("%s: Unhandled state in step.\n", shortname());
|
||||
break;
|
||||
}
|
||||
|
||||
timeout = false;
|
||||
|
||||
} while (--m_step_count);
|
||||
|
||||
if (cycles) {
|
||||
delay(cycles);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1390,7 +1390,7 @@ void wd33c9x_base_device::load_transfer_count()
|
||||
m_transfer_count = 1;
|
||||
}
|
||||
}
|
||||
LOGMASKED(LOG_COMMANDS, "%s: Transfer Count %d bytes\n", shortname(), m_transfer_count);
|
||||
LOGMASKED(LOG_COMMANDS, "Transfer Count %d bytes\n", m_transfer_count);
|
||||
}
|
||||
|
||||
|
||||
@ -1499,7 +1499,9 @@ uint32_t wd33c9x_base_device::send_byte(const uint32_t value, const uint32_t mas
|
||||
|
||||
void wd33c9x_base_device::set_scsi_state(uint16_t state)
|
||||
{
|
||||
LOGMASKED(LOG_STEP, "%s: SCSI state change: %x to %x\n", shortname(), m_scsi_state, state);
|
||||
LOGMASKED(LOG_STEP, "SCSI state change: %s.%s to %s.%s\n",
|
||||
state_names[m_scsi_state & STATE_MASK], substate_names[m_scsi_state >> SUB_SHIFT],
|
||||
state_names[state & STATE_MASK], substate_names[state >> SUB_SHIFT]);
|
||||
m_scsi_state = state;
|
||||
}
|
||||
|
||||
@ -1588,7 +1590,7 @@ void wd33c9x_base_device::update_irq()
|
||||
{
|
||||
if (m_regs[AUXILIARY_STATUS] & AUXILIARY_STATUS_INT) {
|
||||
m_regs[AUXILIARY_STATUS] &= ~AUXILIARY_STATUS_INT;
|
||||
LOGMASKED(LOG_LINES, "%s: Clearing IRQ\n", shortname());
|
||||
LOGMASKED(LOG_LINES, "Clearing IRQ\n");
|
||||
m_irq_cb(CLEAR_LINE);
|
||||
}
|
||||
if (!irq_fifo_empty()) {
|
||||
@ -1612,7 +1614,7 @@ void wd33c9x_base_device::update_irq()
|
||||
}
|
||||
}
|
||||
|
||||
LOGMASKED(LOG_LINES, "%s: Asserting IRQ - SCSI Status (%02x)\n", shortname(), m_regs[SCSI_STATUS]);
|
||||
LOGMASKED(LOG_LINES, "Asserting IRQ - SCSI Status (%02x)\n", m_regs[SCSI_STATUS]);
|
||||
m_irq_cb(ASSERT_LINE);
|
||||
}
|
||||
}
|
||||
@ -1625,7 +1627,7 @@ void wd33c9x_base_device::update_irq()
|
||||
void wd33c9x_base_device::set_drq()
|
||||
{
|
||||
if (!m_drq_state) {
|
||||
LOGMASKED(LOG_LINES, "%s: Asserting DRQ\n", shortname());
|
||||
LOGMASKED(LOG_LINES, "Asserting DRQ\n");
|
||||
m_drq_state = true;
|
||||
m_drq_cb(ASSERT_LINE);
|
||||
}
|
||||
@ -1639,7 +1641,7 @@ void wd33c9x_base_device::set_drq()
|
||||
void wd33c9x_base_device::clear_drq()
|
||||
{
|
||||
if (m_drq_state) {
|
||||
LOGMASKED(LOG_LINES, "%s: Clearing DRQ\n", shortname());
|
||||
LOGMASKED(LOG_LINES, "Clearing DRQ\n");
|
||||
m_drq_state = false;
|
||||
m_drq_cb(CLEAR_LINE);
|
||||
}
|
||||
@ -1695,7 +1697,7 @@ bool wd33c9x_base_device::set_command_length(const uint8_t cc)
|
||||
}
|
||||
ret = true;
|
||||
}
|
||||
LOGMASKED(LOG_COMMANDS, "%s: SCSI Command Length %d bytes\n", shortname(), m_command_length);
|
||||
LOGMASKED(LOG_COMMANDS, "SCSI Command Length %d bytes\n", m_command_length);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,8 @@ protected:
|
||||
virtual void scsi_ctrl_changed() override;
|
||||
|
||||
private:
|
||||
static const char *const state_names[];
|
||||
static const char *const substate_names[];
|
||||
static constexpr uint8_t NUM_REGS = 0x20;
|
||||
static constexpr uint8_t REGS_MASK = NUM_REGS - 1;
|
||||
uint8_t m_addr;
|
||||
@ -62,7 +64,6 @@ private:
|
||||
uint16_t m_scsi_state;
|
||||
uint8_t m_mode;
|
||||
uint8_t m_xfr_phase;
|
||||
uint8_t m_step_count;
|
||||
|
||||
void load_transfer_count();
|
||||
bool decrement_transfer_count();
|
||||
|
@ -133,6 +133,7 @@ public:
|
||||
device_t *get_card_device() const { return m_card_device; }
|
||||
void set_card_device(device_t *dev) { m_card_device = dev; }
|
||||
const char *slot_name() const { return device().tag() + 1; }
|
||||
slot_option &option_set(const char *tag, const device_type &devtype) { m_default_option = tag; m_fixed = true; return option_add_internal(tag, devtype); }
|
||||
|
||||
protected:
|
||||
void set_default_clock(u32 clock) { m_default_clock = clock; }
|
||||
|
@ -464,9 +464,8 @@ hardware modification to the security cart.....
|
||||
#include "machine/intelfsh.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "includes/cps3.h"
|
||||
#include "bus/scsi/scsi.h"
|
||||
#include "bus/scsi/scsicd.h"
|
||||
#include "machine/wd33c93.h"
|
||||
#include "machine/nscsi_cd.h"
|
||||
#include "machine/wd33c9x.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
@ -2177,7 +2176,7 @@ void cps3_state::cps3_map(address_map &map)
|
||||
map(0x05100000, 0x05100003).w(FUNC(cps3_state::cps3_irq12_ack_w));
|
||||
map(0x05110000, 0x05110003).w(FUNC(cps3_state::cps3_irq10_ack_w));
|
||||
|
||||
map(0x05140000, 0x05140003).rw("wd33c93", FUNC(wd33c93_device::read), FUNC(wd33c93_device::write)).umask32(0x00ff00ff);
|
||||
map(0x05140000, 0x05140003).rw("scsi:7:wd33c93", FUNC(wd33c93n_device::indir_r), FUNC(wd33c93n_device::indir_w)).umask32(0x00ff00ff);
|
||||
|
||||
map(0x06000000, 0x067fffff).rw(FUNC(cps3_state::cps3_flash1_r), FUNC(cps3_state::cps3_flash1_w)); /* Flash ROMs simm 1 */
|
||||
map(0x06800000, 0x06ffffff).rw(FUNC(cps3_state::cps3_flash2_r), FUNC(cps3_state::cps3_flash2_w)); /* Flash ROMs simm 2 */
|
||||
@ -2510,11 +2509,9 @@ void cps3_state::cps3(machine_config &config)
|
||||
m_maincpu->set_periodic_int(FUNC(cps3_state::cps3_other_interrupt), attotime::from_hz(80)); /* ?source? */
|
||||
m_maincpu->set_dma_kludge_callback(FUNC(cps3_state::dma_callback));
|
||||
|
||||
scsi_port_device &scsi(SCSI_PORT(config, "scsi"));
|
||||
scsi.set_slot_device(1, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
|
||||
|
||||
wd33c93_device& wd33c93(WD33C93(config, "wd33c93"));
|
||||
wd33c93.set_scsi_port("scsi");
|
||||
NSCSI_BUS(config, "scsi");
|
||||
NSCSI_CONNECTOR(config, "scsi:1").option_set("cdrom", NSCSI_CDROM);
|
||||
NSCSI_CONNECTOR(config, "scsi:7").option_set("wd33c93", WD33C93A).clock(10'000'000);
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
@ -2613,7 +2610,7 @@ ROM_START( redearth )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "redearth_euro.29f400.u2", 0x000000, 0x080000, CRC(02e0f336) SHA1(acc37e830dfeb9674f5a0fb24f4cc23217ae4ff5) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-wzd-5", 0, BAD_DUMP SHA1(e5676752b08283dc4a98c3d7b759e8aa6dcd0679) )
|
||||
ROM_END
|
||||
|
||||
@ -2621,7 +2618,7 @@ ROM_START( redearthr1 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "redearth_euro.29f400.u2", 0x000000, 0x080000, CRC(02e0f336) SHA1(acc37e830dfeb9674f5a0fb24f4cc23217ae4ff5) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-wzd-3", 0, SHA1(a6ff67093db6bc80ee5fc46e4300e0177b213a52) )
|
||||
ROM_END
|
||||
|
||||
@ -2629,7 +2626,7 @@ ROM_START( warzard )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "warzard_japan.29f400.u2", 0x000000, 0x080000, CRC(f8e2f0c6) SHA1(93d6a986f44c211fff014e55681eca4d2a2774d6) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-wzd-5", 0, BAD_DUMP SHA1(e5676752b08283dc4a98c3d7b759e8aa6dcd0679) )
|
||||
ROM_END
|
||||
|
||||
@ -2637,7 +2634,7 @@ ROM_START( warzardr1 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "warzard_japan.29f400.u2", 0x000000, 0x080000, CRC(f8e2f0c6) SHA1(93d6a986f44c211fff014e55681eca4d2a2774d6) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-wzd-3", 0, SHA1(a6ff67093db6bc80ee5fc46e4300e0177b213a52) )
|
||||
ROM_END
|
||||
|
||||
@ -2646,7 +2643,7 @@ ROM_START( sfiii )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii_euro.29f400.u2", 0x000000, 0x080000, CRC(27699ddc) SHA1(d8b525cd27e584560b129598df31fd2c5b2a682a) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
|
||||
ROM_END
|
||||
|
||||
@ -2654,7 +2651,7 @@ ROM_START( sfiiiu )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii_usa_region_b1.29f400.u2", 0x000000, 0x080000, CRC(fb172a8e) SHA1(48ebf59910f246835f7dc0c588da30f7a908072f) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
|
||||
ROM_END
|
||||
|
||||
@ -2662,7 +2659,7 @@ ROM_START( sfiiia )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii_asia_region_bd.29f400.u2", 0x000000, 0x080000, CRC(cbd28de7) SHA1(9c15ecb73b9587d20850e62e8683930a45caa01b) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
|
||||
ROM_END
|
||||
|
||||
@ -2670,7 +2667,7 @@ ROM_START( sfiiij )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii_japan.29f400.u2", 0x000000, 0x080000, CRC(74205250) SHA1(c3e83ace7121d32da729162662ec6b5285a31211) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
|
||||
ROM_END
|
||||
|
||||
@ -2678,7 +2675,7 @@ ROM_START( sfiiih )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii_hispanic.29f400.u2", 0x000000, 0x080000, CRC(d2b3cd48) SHA1(00ebb270c24a66515c97e35331de54ff5358000e) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-sf3-3", 0, BAD_DUMP SHA1(606e62cc5f46275e366e7dbb412dbaeb7e54cd0c) )
|
||||
ROM_END
|
||||
|
||||
@ -2687,7 +2684,7 @@ ROM_START( sfiii2 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii2_usa.29f400.u2", 0x000000, 0x080000, CRC(75dd72e0) SHA1(5a12d6ea6734df5de00ecee6f9ef470749d2f242) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-3ga000", 0, BAD_DUMP SHA1(4e162885b0b3265a56e0265037bcf247e820f027) )
|
||||
ROM_END
|
||||
|
||||
@ -2695,7 +2692,7 @@ ROM_START( sfiii2j )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii2_japan.29f400.u2", 0x000000, 0x080000, CRC(faea0a3e) SHA1(a03cd63bcf52e4d57f7a598c8bc8e243694624ec) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-3ga000", 0, BAD_DUMP SHA1(4e162885b0b3265a56e0265037bcf247e820f027) )
|
||||
ROM_END
|
||||
|
||||
@ -2704,7 +2701,7 @@ ROM_START( jojo )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "jojo_usa.29f400.u2", 0x000000, 0x080000, CRC(8d40f7be) SHA1(2a4bd83db2f959c33b071e517941aa55a0f919c0) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-jjk-3", 0, SHA1(dc6e74b5e02e13f62cb8c4e234dd6061501e49c1) )
|
||||
ROM_END
|
||||
|
||||
@ -2712,7 +2709,7 @@ ROM_START( jojor1 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "jojo_usa.29f400.u2", 0x000000, 0x080000, CRC(8d40f7be) SHA1(2a4bd83db2f959c33b071e517941aa55a0f919c0) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-jjk-2", 0, BAD_DUMP SHA1(0f5c09171409213e191a607ee89ca3a91fe9c96a) )
|
||||
ROM_END
|
||||
|
||||
@ -2720,7 +2717,7 @@ ROM_START( jojor2 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "jojo_usa.29f400.u2", 0x000000, 0x080000, CRC(8d40f7be) SHA1(2a4bd83db2f959c33b071e517941aa55a0f919c0) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-jjk000", 0, BAD_DUMP SHA1(09869f6d8c032b527e02d815749dc8fab1289e86) )
|
||||
ROM_END
|
||||
|
||||
@ -2728,7 +2725,7 @@ ROM_START( jojoj )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "jojo_japan.29f400.u2", 0x000000, 0x080000, CRC(02778f60) SHA1(a167f9ebe030592a0cdb0c6a3c75835c6a43be4c) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-jjk-3", 0, SHA1(dc6e74b5e02e13f62cb8c4e234dd6061501e49c1) )
|
||||
ROM_END
|
||||
|
||||
@ -2736,7 +2733,7 @@ ROM_START( jojojr1 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "jojo_japan.29f400.u2", 0x000000, 0x080000, CRC(02778f60) SHA1(a167f9ebe030592a0cdb0c6a3c75835c6a43be4c) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-jjk-2", 0, BAD_DUMP SHA1(0f5c09171409213e191a607ee89ca3a91fe9c96a) )
|
||||
ROM_END
|
||||
|
||||
@ -2744,7 +2741,7 @@ ROM_START( jojojr2 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "jojo_japan.29f400.u2", 0x000000, 0x080000, CRC(02778f60) SHA1(a167f9ebe030592a0cdb0c6a3c75835c6a43be4c) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-jjk000", 0, BAD_DUMP SHA1(09869f6d8c032b527e02d815749dc8fab1289e86) )
|
||||
ROM_END
|
||||
|
||||
@ -2753,7 +2750,7 @@ ROM_START( sfiii3 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii3_euro.29f400.u2", 0x000000, 0x080000, CRC(30bbf293) SHA1(f094c2eeaf4f6709060197aca371a4532346bf78) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-33s-2", 0, BAD_DUMP SHA1(41b0e246db91cbfc3f8f0f62d981734feb4b4ab5) )
|
||||
ROM_END
|
||||
|
||||
@ -2761,7 +2758,7 @@ ROM_START( sfiii3r1 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii3_euro.29f400.u2", 0x000000, 0x080000, CRC(30bbf293) SHA1(f094c2eeaf4f6709060197aca371a4532346bf78) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-33s-1", 0, BAD_DUMP SHA1(2f4a9006a31903114f9f9dc09465ae253e565c51) )
|
||||
ROM_END
|
||||
|
||||
@ -2769,7 +2766,7 @@ ROM_START( sfiii3u )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii3_usa.29f400.u2", 0x000000, 0x080000, CRC(ecc545c1) SHA1(e39083820aae914fd8b80c9765129bedb745ceba) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-33s-2", 0, BAD_DUMP SHA1(41b0e246db91cbfc3f8f0f62d981734feb4b4ab5) )
|
||||
ROM_END
|
||||
|
||||
@ -2777,7 +2774,7 @@ ROM_START( sfiii3ur1 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii3_usa.29f400.u2", 0x000000, 0x080000, CRC(ecc545c1) SHA1(e39083820aae914fd8b80c9765129bedb745ceba) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-33s-1", 0, BAD_DUMP SHA1(2f4a9006a31903114f9f9dc09465ae253e565c51) )
|
||||
ROM_END
|
||||
|
||||
@ -2785,7 +2782,7 @@ ROM_START( sfiii3j )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii3_japan.29f400.u2", 0x000000, 0x080000, CRC(63f23d1f) SHA1(58559403c325454f8c8d3eb0f569a531aa22db26) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-33s-2", 0, BAD_DUMP SHA1(41b0e246db91cbfc3f8f0f62d981734feb4b4ab5) )
|
||||
ROM_END
|
||||
|
||||
@ -2793,7 +2790,7 @@ ROM_START( sfiii3jr1 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "sfiii3_japan.29f400.u2", 0x000000, 0x080000, CRC(63f23d1f) SHA1(58559403c325454f8c8d3eb0f569a531aa22db26) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-33s-1", 0, BAD_DUMP SHA1(2f4a9006a31903114f9f9dc09465ae253e565c51) )
|
||||
ROM_END
|
||||
|
||||
@ -2802,7 +2799,7 @@ ROM_START( jojoba )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "jojoba_japan.29f400.u2", 0x000000, 0x080000, CRC(3085478c) SHA1(055eab1fc42816f370a44b17fd7e87ffcb10e8b7) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-jjm-1", 0, SHA1(8628d3fa555fbd5f4121082e925c1834b76c5e65) )
|
||||
ROM_END
|
||||
|
||||
@ -2810,7 +2807,7 @@ ROM_START( jojobar1 )
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "jojoba_japan.29f400.u2", 0x000000, 0x080000, CRC(3085478c) SHA1(055eab1fc42816f370a44b17fd7e87ffcb10e8b7) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "cap-jjm-0", 0, BAD_DUMP SHA1(0678a0baeb853dcff1d230c14f0873cc9f143d7b) )
|
||||
ROM_END
|
||||
|
||||
@ -3671,7 +3668,7 @@ ROM_START( cps3boot ) // for cart with standard SH2
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "unicd-cps3_for_standard_sh2_v4", 0, SHA1(099c52bd38753f0f4876243e7aa87ca482a2dcb7) )
|
||||
ROM_END
|
||||
|
||||
@ -3679,7 +3676,7 @@ ROM_START( cps3booto ) // for cart with standard SH2
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_hd6417095_sh2", 0, SHA1(6057cc3ec7991c0c00a7ab9da6ac2f92c9fb1aed) )
|
||||
ROM_END
|
||||
|
||||
@ -3687,7 +3684,7 @@ ROM_START( cps3booto2 ) // for cart with standard SH2
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_hd6417095_sh2_older", 0, SHA1(123f2fcb0f3dd3d6b859e82a51d0127e46763776) )
|
||||
ROM_END
|
||||
|
||||
@ -3695,7 +3692,7 @@ ROM_START( cps3bs32 ) // for cart with standard SH2
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "sfiii_2nd_impact_converted_for_standard_sh2_v3", 0, SHA1(8f180d159e88042a1e819cefd39eef67f5e86e3d) )
|
||||
ROM_END
|
||||
|
||||
@ -3703,7 +3700,7 @@ ROM_START( cps3bs32a ) // for cart with standard SH2
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "sfiii_2nd_impact_converted_for_standard_sh2_older", 0, SHA1(8a8e4138c3bf12435933ab9d9ace510513200843) ) // v1 or v2?
|
||||
ROM_END
|
||||
|
||||
@ -3711,7 +3708,7 @@ ROM_START( cps3boota ) // for cart with dead custom SH2 (or 2nd Impact CPU which
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "unicd-cps3_for_custom_sh2_v5", 0, SHA1(50a5b2845d3dd3de3bce15c4f1b58500db80cabe) )
|
||||
ROM_END
|
||||
|
||||
@ -3719,7 +3716,7 @@ ROM_START( cps3bootao ) // for cart with dead custom SH2 (or 2nd Impact CPU whic
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_dead_security_cart", 0, SHA1(1ede2f1ba197ee787208358a13eae7185a5ae3b2) )
|
||||
ROM_END
|
||||
|
||||
@ -3728,7 +3725,7 @@ ROM_START( cps3bootao2 ) // for cart with dead custom SH2 (or 2nd Impact CPU whi
|
||||
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
|
||||
ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
|
||||
|
||||
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
|
||||
DISK_REGION( "scsi:1:cdrom" )
|
||||
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_dead_security_cart_older", 0, SHA1(4b0b673b45dac94da018576c0a7f8644653fc564) )
|
||||
ROM_END
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user