From a6a81a692955a8abfd41db832ec33cd64fe9323e Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 9 Apr 2024 16:28:20 +1000 Subject: [PATCH] -konami/konamigq.cpp, konami/konamigv.cpp: Use "new SCSI" 53CF96 and drives. [Windy Fairy] * Marked games as not supporting save states due to DMA pointer in member variable, and marked kdeadeye as having imperfect graphics due existing texturing issues that cause in-game text to be jumbled. -konami/konamigv.cpp: Redumped CD for kdeadeye. [Brian Troha] --- src/mame/konami/konamigq.cpp | 126 ++++++++++++++------- src/mame/konami/konamigv.cpp | 211 +++++++++++++++++------------------ 2 files changed, 186 insertions(+), 151 deletions(-) diff --git a/src/mame/konami/konamigq.cpp b/src/mame/konami/konamigq.cpp index 6f58e57178d..ba8291a3444 100644 --- a/src/mame/konami/konamigq.cpp +++ b/src/mame/konami/konamigq.cpp @@ -69,21 +69,23 @@ */ #include "emu.h" -#include "bus/scsi/scsi.h" -#include "bus/scsi/scsihd.h" + +#include "bus/nscsi/hd.h" #include "cpu/m68000/m68000.h" #include "cpu/psx/psx.h" #include "cpu/tms57002/tms57002.h" -#include "machine/am53cf96.h" #include "machine/eepromser.h" #include "machine/mb89371.h" +#include "machine/ncr53c90.h" #include "machine/ram.h" #include "sound/k054539.h" #include "sound/k056800.h" #include "video/psx.h" + #include "screen.h" #include "speaker.h" +#include "endianness.h" #include "multibyte.h" @@ -97,7 +99,7 @@ public: m_maincpu(*this, "maincpu"), m_soundcpu(*this, "soundcpu"), m_dasp(*this, "dasp"), - m_am53cf96(*this, "am53cf96"), + m_ncr53cf96(*this, "scsi:7:ncr53cf96"), m_k056800(*this, "k056800"), m_pcmram(*this, "pcmram") { @@ -107,18 +109,26 @@ public: protected: virtual void machine_start() override; + virtual void machine_reset() override; private: + emu_timer *m_dma_timer; + required_device m_maincpu; required_device m_soundcpu; required_device m_dasp; - required_device m_am53cf96; + required_device m_ncr53cf96; required_device m_k056800; required_shared_ptr m_pcmram; - uint8_t m_sector_buffer[ 512 ]{}; - uint8_t m_sound_ctrl = 0; - uint8_t m_sound_intck = 0; + uint8_t m_sound_ctrl; + uint8_t m_sound_intck; + + uint32_t *m_dma_data_ptr; + uint32_t m_dma_offset; + int32_t m_dma_size; + bool m_dma_is_write; + bool m_dma_requested; void eeprom_w(uint16_t data); void pcmram_w(offs_t offset, uint8_t data); @@ -128,8 +138,12 @@ private: INTERRUPT_GEN_MEMBER(tms_sync); void k054539_irq_gen(int state); + TIMER_CALLBACK_MEMBER(scsi_dma_transfer); + void scsi_dma_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size ); void scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size ); + void scsi_drq(int state); + void konamigq_dasp_map(address_map &map); void konamigq_k054539_map(address_map &map); void konamigq_map(address_map &map); @@ -173,7 +187,7 @@ uint8_t konamigq_state::pcmram_r(offs_t offset) void konamigq_state::konamigq_map(address_map &map) { - map(0x1f000000, 0x1f00001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff); + map(0x1f000000, 0x1f00001f).m(m_ncr53cf96, FUNC(ncr53cf96_device::map)).umask16(0x00ff); map(0x1f100000, 0x1f10001f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)).umask32(0x00ff00ff); map(0x1f180000, 0x1f180001).w(FUNC(konamigq_state::eeprom_w)); map(0x1f198000, 0x1f198003).nopw(); /* cabinet lamps? */ @@ -269,43 +283,66 @@ void konamigq_state::k054539_irq_gen(int state) void konamigq_state::scsi_dma_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size ) { - uint8_t *sector_buffer = m_sector_buffer; - int i; - int n_this; - - while( n_size > 0 ) - { - if( n_size > sizeof( m_sector_buffer ) / 4 ) - { - n_this = sizeof( m_sector_buffer ) / 4; - } - else - { - n_this = n_size; - } - m_am53cf96->dma_read_data( n_this * 4, sector_buffer ); - n_size -= n_this; - - i = 0; - while( n_this > 0 ) - { - p_n_psxram[ n_address / 4 ] = get_u32le( §or_buffer[ i ] ); - n_address += 4; - i += 4; - n_this--; - } - } + m_dma_data_ptr = p_n_psxram; + m_dma_offset = n_address; + m_dma_size = n_size * 4; + m_dma_is_write = false; + m_dma_timer->adjust(attotime::from_usec(10)); } void konamigq_state::scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size ) { + m_dma_data_ptr = p_n_psxram; + m_dma_offset = n_address; + m_dma_size = n_size * 4; + m_dma_is_write = true; + m_dma_timer->adjust(attotime::from_usec(10)); +} + +TIMER_CALLBACK_MEMBER(konamigq_state::scsi_dma_transfer) +{ + if (m_dma_requested && m_dma_data_ptr != nullptr && m_dma_size > 0) + { + if (m_dma_is_write) + m_ncr53cf96->dma_w(util::little_endian_cast(m_dma_data_ptr)[m_dma_offset]); + else + util::little_endian_cast(m_dma_data_ptr)[m_dma_offset] = m_ncr53cf96->dma_r(); + + m_dma_offset++; + m_dma_size--; + } + + if (m_dma_requested && m_dma_size > 0) + m_dma_timer->adjust(attotime::from_usec(10)); +} + +void konamigq_state::scsi_drq(int state) +{ + if (!m_dma_requested && state) + m_dma_timer->adjust(attotime::from_usec(10)); + + m_dma_requested = state; } void konamigq_state::machine_start() { - save_item(NAME(m_sector_buffer)); save_item(NAME(m_sound_ctrl)); save_item(NAME(m_sound_intck)); + + m_dma_timer = timer_alloc(FUNC(konamigq_state::scsi_dma_transfer), this); + m_dma_timer->adjust(attotime::never); +} + +void konamigq_state::machine_reset() +{ + m_sound_ctrl = 0; + m_sound_intck = 0; + + m_dma_timer->adjust(attotime::never); + m_dma_data_ptr = nullptr; + m_dma_offset = 0; + m_dma_size = 0; + m_dma_requested = m_dma_is_write = false; } void konamigq_state::konamigq(machine_config &config) @@ -328,12 +365,15 @@ void konamigq_state::konamigq(machine_config &config) EEPROM_93C46_16BIT(config, "eeprom").default_data(konamigq_def_eeprom, 128); - scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0)); - scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0)); - - AM53CF96(config, m_am53cf96, 0); - m_am53cf96->set_scsi_port("scsi"); - m_am53cf96->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin10)); + NSCSI_BUS(config, "scsi"); + NSCSI_CONNECTOR(config, "scsi:0").option_set("harddisk", NSCSI_HARDDISK); + NSCSI_CONNECTOR(config, "scsi:7").option_set("ncr53cf96", NCR53CF96).clock(32_MHz_XTAL/2).machine_config( + [this] (device_t *device) + { + ncr53cf96_device &adapter = downcast(*device); + adapter.irq_handler_cb().set(":maincpu:irq", FUNC(psxirq_device::intin10)); + adapter.drq_handler_cb().set(*this, FUNC(konamigq_state::scsi_drq)); + }); /* video hardware */ CXD8538Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice("maincpu")).set_screen("screen"); @@ -453,7 +493,7 @@ ROM_START( cryptklr ) ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) /* bios */ ROM_LOAD( "420b03.27p", 0x0000000, 0x080000, CRC(aab391b1) SHA1(bf9dc7c0c8168c22a4be266fe6a66d3738df916b) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":harddisk" ) + DISK_REGION( "scsi:0:harddisk:image" ) DISK_IMAGE( "420uaa04", 0, SHA1(67cb1418fc0de2a89fc61847dc9efb9f1bebb347) ) ROM_END diff --git a/src/mame/konami/konamigv.cpp b/src/mame/konami/konamigv.cpp index 38bd4c21aa6..c804090ef95 100644 --- a/src/mame/konami/konamigv.cpp +++ b/src/mame/konami/konamigv.cpp @@ -44,6 +44,10 @@ The Simpsons Bowling uses an extra PCB plugged in on top containing flash ROMs a Some of the other games may also have extra PCBs. +Have seen two different CD-ROM drives: +- Sony CDU-76S (found in Hyper Athlete) +- Toshiba XM-5401B (found in Tokimeki Memorial Oshiete Your Heart) + PCB Layouts @@ -62,7 +66,7 @@ ZV610 PWB301331 |A CXD2923AR 058239 | |M | |M CXD8530BQ | -|A D482445LGW-A70 93CF96-2 | +|A D482445LGW-A70 53CF96-2 | | CXD8514Q S| | D482445LGW-A70 C| | 67.7376MHz S| @@ -86,7 +90,7 @@ GV999 PWB301949A |A 058239 | |M 53.693175MHz | |M CXD8530CQ | -|A 93CF96-2 | +|A 53CF96-2 | | CXD8561Q S| | KM4132G271Q-12 C| | 67.7376MHz S| @@ -214,23 +218,24 @@ Notes: #include "emu.h" -#include "bus/scsi/scsi.h" -#include "bus/scsi/scsicd.h" + +#include "bus/nscsi/cd.h" #include "cpu/psx/psx.h" -#include "machine/am53cf96.h" #include "machine/eepromser.h" #include "machine/intelfsh.h" #include "machine/mb89371.h" +#include "machine/ncr53c90.h" #include "machine/upd4701.h" #include "machine/ram.h" #include "sound/cdda.h" #include "sound/spu.h" #include "video/psx.h" + #include "screen.h" #include "speaker.h" -#include "cdrom.h" -#include "multibyte.h" +#include "cdrom.h" +#include "endianness.h" namespace { @@ -240,7 +245,7 @@ class konamigv_state : public driver_device public: konamigv_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) - , m_am53cf96(*this, "am53cf96") + , m_ncr53cf96(*this, "scsi:7:ncr53cf96") , m_btc_trackball(*this, "upd%u", 1) , m_maincpu(*this, "maincpu") { @@ -255,24 +260,33 @@ protected: void konamigv_map(address_map &map); virtual void machine_start() override; + virtual void machine_reset() override; void btc_trackball_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); uint16_t tokimeki_serial_r(); void tokimeki_serial_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - void scsi_dma_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size ); - void scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size ); + void scsi_dma_read(uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size); + void scsi_dma_write(uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size); + void scsi_drq(int state); void btchamp_map(address_map &map); void kdeadeye_map(address_map &map); void tmosh_map(address_map &map); - static void cdrom_config(device_t *device); + TIMER_CALLBACK_MEMBER(scsi_dma_transfer); - required_device m_am53cf96; + required_device m_ncr53cf96; optional_device_array m_btc_trackball; - uint8_t m_sector_buffer[ 4096 ]; required_device m_maincpu; + + uint32_t *m_dma_data_ptr; + uint32_t m_dma_offset; + int32_t m_dma_size; + bool m_dma_is_write; + bool m_dma_requested; + + emu_timer *m_dma_timer; }; class simpbowl_state : public konamigv_state @@ -301,7 +315,7 @@ private: void konamigv_state::konamigv_map(address_map &map) { - map(0x1f000000, 0x1f00001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff); + map(0x1f000000, 0x1f00001f).m(m_ncr53cf96, FUNC(ncr53cf96_device::map)).umask16(0x00ff); map(0x1f100000, 0x1f100003).portr("P1"); map(0x1f100004, 0x1f100007).portr("P2"); map(0x1f100008, 0x1f10000b).portr("P3_P4"); @@ -353,80 +367,61 @@ void konamigv_state::tmosh_map(address_map &map) // SCSI -void konamigv_state::scsi_dma_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size ) +void konamigv_state::scsi_dma_read(uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size) { - uint8_t *sector_buffer = m_sector_buffer; - int i; - int n_this; - - while( n_size > 0 ) - { - if( n_size > sizeof( m_sector_buffer ) / 4 ) - { - n_this = sizeof( m_sector_buffer ) / 4; - } - else - { - n_this = n_size; - } - if( n_this < 2048 / 4 ) - { - // non-READ commands - m_am53cf96->dma_read_data( n_this * 4, sector_buffer ); - } - else - { - // assume normal 2048 byte data for now - m_am53cf96->dma_read_data( 2048, sector_buffer ); - n_this = 2048 / 4; - } - n_size -= n_this; - - i = 0; - while( n_this > 0 ) - { - p_n_psxram[ n_address / 4 ] = get_u32le( §or_buffer[ i ] ); - n_address += 4; - i += 4; - n_this--; - } - } + m_dma_data_ptr = p_n_psxram; + m_dma_offset = n_address; + m_dma_size = n_size * 4; + m_dma_is_write = false; + m_dma_timer->adjust(attotime::from_usec(10)); } -void konamigv_state::scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size ) +void konamigv_state::scsi_dma_write(uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size) { - uint8_t *sector_buffer = m_sector_buffer; - int i; - int n_this; + m_dma_data_ptr = p_n_psxram; + m_dma_offset = n_address; + m_dma_size = n_size * 4; + m_dma_is_write = true; + m_dma_timer->adjust(attotime::from_usec(10)); +} - while( n_size > 0 ) +TIMER_CALLBACK_MEMBER(konamigv_state::scsi_dma_transfer) +{ + if (m_dma_requested && m_dma_data_ptr != nullptr && m_dma_size > 0) { - if( n_size > sizeof( m_sector_buffer ) / 4 ) - { - n_this = sizeof( m_sector_buffer ) / 4; - } + if (m_dma_is_write) + m_ncr53cf96->dma_w(util::little_endian_cast(m_dma_data_ptr)[m_dma_offset]); else - { - n_this = n_size; - } - n_size -= n_this; + util::little_endian_cast(m_dma_data_ptr)[m_dma_offset] = m_ncr53cf96->dma_r(); - i = 0; - while( n_this > 0 ) - { - put_u32le( §or_buffer[ i ], p_n_psxram[ n_address / 4 ] ); - n_address += 4; - i += 4; - n_this--; - } - - m_am53cf96->dma_write_data( i, sector_buffer ); + m_dma_offset++; + m_dma_size--; } + + if (m_dma_requested && m_dma_size > 0) + m_dma_timer->adjust(attotime::from_usec(10)); +} + +void konamigv_state::scsi_drq(int state) +{ + if (!m_dma_requested && state) + m_dma_timer->adjust(attotime::from_usec(10)); + + m_dma_requested = state; } void konamigv_state::machine_start() { - save_item(NAME(m_sector_buffer)); + m_dma_timer = timer_alloc(FUNC(konamigv_state::scsi_dma_transfer), this); +} + +void konamigv_state::machine_reset() +{ + m_dma_timer->adjust(attotime::never); + m_dma_data_ptr = nullptr; + m_dma_offset = 0; + m_dma_size = 0; + m_dma_requested = m_dma_is_write = false; } void simpbowl_state::machine_start() @@ -435,13 +430,6 @@ void simpbowl_state::machine_start() save_item(NAME(m_flash_address)); } -void konamigv_state::cdrom_config(device_t *device) -{ - device->subdevice("cdda")->add_route(0, "^^lspeaker", 1.0); - device->subdevice("cdda")->add_route(1, "^^rspeaker", 1.0); - device = device->subdevice("cdda"); -} - void konamigv_state::konamigv(machine_config &config) { // basic machine hardware @@ -454,13 +442,20 @@ void konamigv_state::konamigv(machine_config &config) MB89371(config, "mb89371", 0); EEPROM_93C46_16BIT(config, "eeprom"); - scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0)); - scsi.set_slot_device(1, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4)); - scsi.slot(1).set_option_machine_config("cdrom", cdrom_config); - - AM53CF96(config, m_am53cf96, 0); - m_am53cf96->set_scsi_port("scsi"); - m_am53cf96->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin10)); + NSCSI_BUS(config, "scsi"); + NSCSI_CONNECTOR(config, "scsi:4").option_set("cdrom", NSCSI_XM5401).machine_config( + [](device_t *device) + { + device->subdevice("cdda")->add_route(0, "^^lspeaker", 1.0); + device->subdevice("cdda")->add_route(1, "^^rspeaker", 1.0); + }); + NSCSI_CONNECTOR(config, "scsi:7").option_set("ncr53cf96", NCR53CF96).clock(32_MHz_XTAL/2).machine_config( + [this](device_t *device) + { + ncr53cf96_device &adapter = downcast(*device); + adapter.irq_handler_cb().set(":maincpu:irq", FUNC(psxirq_device::intin10)); + adapter.drq_handler_cb().set(*this, FUNC(konamigv_state::scsi_drq)); + }); // video hardware CXD8514Q(config, "gpu", XTAL(53'693'175), 0x100000, subdevice("maincpu")).set_screen("screen"); @@ -823,7 +818,7 @@ ROM_START( lacrazyc ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "lacrazyc.25c", 0x000000, 0x000080, CRC(e20e5730) SHA1(066b49236c658a4ef2930f7bacc4b2354dd7f240) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "gv027-a1", 0, BAD_DUMP SHA1(840d0d4876cf1b814c9d8db975aa6c92e1fe4039) ) ROM_END @@ -833,7 +828,7 @@ ROM_START( susume ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "susume.25c", 0x000000, 0x000080, CRC(52f17df7) SHA1(b8ad7787b0692713439d7d9bebfa0c801c806006) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "gv027j1", 0, BAD_DUMP SHA1(e7e6749ac65de7771eb8fed7d5eefaec3f902255) ) ROM_END @@ -843,7 +838,7 @@ ROM_START( hyperath ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "hyperath.25c", 0x000000, 0x000080, CRC(20a8c435) SHA1(a0f203a999757fba68b391c525ac4b9684a57ba9) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "gv021-j1", 0, SHA1(579442444025b18da658cd6455c51459fbc3de0e) ) ROM_END @@ -853,7 +848,7 @@ ROM_START( powyak96 ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "powyak96.25c", 0x000000, 0x000080, CRC(405a7fc9) SHA1(e2d978f49748ba3c4a425188abcd3d272ec23907) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "powyak96", 0, BAD_DUMP SHA1(ebd0ea18ff9ce300ea1e30d66a739a96acfb0621) ) ROM_END @@ -863,7 +858,7 @@ ROM_START( weddingr ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "weddingr.25c", 0x000000, 0x000080, CRC(b90509a0) SHA1(41510a0ceded81dcb26a70eba97636d38d3742c3) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "weddingr", 0, BAD_DUMP SHA1(4e7122b191747ab7220fe4ce1b4483d62ab579af) ) ROM_END @@ -873,7 +868,7 @@ ROM_START( simpbowl ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "simpbowl.25c", 0x000000, 0x000080, CRC(2c61050c) SHA1(16ae7f81cbe841c429c5c7326cf83e87db1782bf) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "829uaa02", 0, SHA1(2ec4cc608d5582e478ee047b60ccee67b52f060c) ) ROM_END @@ -883,7 +878,7 @@ ROM_START( btchamp ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "btchmp.25c", 0x000000, 0x000080, CRC(6d02ea54) SHA1(d3babf481fd89db3aec17f589d0d3d999a2aa6e1) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "btchamp", 0, BAD_DUMP SHA1(c9c858e9034826e1a12c3c003dd068a49a3577e1) ) ROM_END @@ -893,8 +888,8 @@ ROM_START( kdeadeye ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "kdeadeye.25c", 0x000000, 0x000080, CRC(3935d2df) SHA1(cbb855c475269077803c380dbc3621e522efe51e) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) - DISK_IMAGE_READONLY( "kdeadeye", 0, BAD_DUMP SHA1(3c737c51717925be724dcb93d30769649029b8ce) ) + DISK_REGION( "scsi:4:cdrom" ) + DISK_IMAGE_READONLY( "054uaa01", 0, SHA1(84ff29b6ca0282b8d3ffac8c8a1a1c58085fd469) ) ROM_END ROM_START( nagano98 ) @@ -903,7 +898,7 @@ ROM_START( nagano98 ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "nagano98.25c", 0x000000, 0x000080, CRC(b64b7451) SHA1(a77a37e0cc580934d1e7e05d523bae0acd2c1480) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "nagano98", 0, BAD_DUMP SHA1(1be7bd4531f249ff2233dd40a206c8d60054a8c6) ) ROM_END @@ -913,7 +908,7 @@ ROM_START( naganoj ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "720ja.25c", 0x000000, 0x000080, CRC(34c473ba) SHA1(768225b04a293bdbc114a092d14dee28d52044e9) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "720jaa01", 0, SHA1(437160996551ef4dfca43899d1d14beca62eb4c9) ) ROM_END @@ -923,7 +918,7 @@ ROM_START( tmosh ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "tmosh.25c", 0x000000, 0x000080, NO_DUMP ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "673jaa01", 0, SHA1(eaa76073749f9db48c1bee3dff9bea955683c8a8) ) ROM_END @@ -933,7 +928,7 @@ ROM_START( tmoshs ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "tmoshs.25c", 0x000000, 0x000080, CRC(e57b833f) SHA1(f18a0974a6be69dc179706643aab837ff61c2738) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "755jaa01", 0, SHA1(fc742a0b763ba38350ba7eb5d775948632aafd9d) ) ROM_END @@ -943,7 +938,7 @@ ROM_START( tmoshsp ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "tmoshsp.25c", 0x000000, 0x000080, CRC(af4cdd87) SHA1(97041e287e4c80066043967450779b81b62b2b8e) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "756jab01", 0, SHA1(b2c59b9801debccbbd986728152f314535c67e53) ) ROM_END @@ -953,7 +948,7 @@ ROM_START( tmoshspa ) ROM_REGION16_BE( 0x0000080, "eeprom", 0 ) // default EEPROM ROM_LOAD( "tmoshsp.25c", 0x000000, 0x000080, CRC(af4cdd87) SHA1(97041e287e4c80066043967450779b81b62b2b8e) ) - DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) + DISK_REGION( "scsi:4:cdrom" ) DISK_IMAGE_READONLY( "756jaa01", 0, BAD_DUMP SHA1(5e6d349ad1a22c0dbb1ec26aa05febc830254339) ) // The CD was damaged ROM_END @@ -968,12 +963,12 @@ GAME( 1996, hyperath, konamigv, konamigv, konamigv, konamigv_state, empty_init, GAME( 1996, lacrazyc, konamigv, konamigv, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Let's Attack Crazy Cross (GV027 Asia 1.10)", MACHINE_IMPERFECT_SOUND ) GAME( 1996, susume, lacrazyc, konamigv, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Susume! Taisen Puzzle-Dama (GV027 Japan 1.20)", MACHINE_IMPERFECT_SOUND ) GAME( 1996, btchamp, konamigv, btchamp, btchamp, konamigv_state, empty_init, ROT0, "Konami", "Beat the Champ (GV053 UAA01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, kdeadeye, konamigv, kdeadeye, kdeadeye, konamigv_state, empty_init, ROT0, "Konami", "Dead Eye (GV054 UAA01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, kdeadeye, konamigv, kdeadeye, kdeadeye, konamigv_state, empty_init, ROT0, "Konami", "Dead Eye (GV054 UAA01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, weddingr, konamigv, konamigv, weddingr, konamigv_state, empty_init, ROT0, "Konami", "Wedding Rhapsody (GX624 JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1997, tmosh, konamigv, tmosh, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart (GQ673 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) GAME( 1997, tmoshs, konamigv, tmosh, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version (GE755 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) GAME( 1997, tmoshsp, konamigv, tmosh, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) GAME( 1997, tmoshspa, tmoshsp, tmosh, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1998, nagano98, konamigv, konamigv, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Nagano Winter Olympics '98 (GX720 EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -GAME( 1998, naganoj, nagano98, konamigv, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Hyper Olympic in Nagano (GX720 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -GAME( 2000, simpbowl, konamigv, simpbowl, simpbowl, simpbowl_state, empty_init, ROT0, "Konami", "The Simpsons Bowling (GQ829 UAA)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 1998, nagano98, konamigv, konamigv, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Nagano Winter Olympics '98 (GX720 EAA)", MACHINE_IMPERFECT_SOUND) +GAME( 1998, naganoj, nagano98, konamigv, konamigv, konamigv_state, empty_init, ROT0, "Konami", "Hyper Olympic in Nagano (GX720 JAA)", MACHINE_IMPERFECT_SOUND) +GAME( 2000, simpbowl, konamigv, simpbowl, simpbowl, simpbowl_state, empty_init, ROT0, "Konami", "The Simpsons Bowling (GQ829 UAA)", MACHINE_IMPERFECT_SOUND)