From 62a9a003d514d66c426c4ab33e13919b32408374 Mon Sep 17 00:00:00 2001 From: smf- Date: Mon, 9 Dec 2013 17:40:40 +0000 Subject: [PATCH] Created a skeleton for the Konami 573 Multi Session Unit, renamed digital io board source file to match and moved pcb layout from driver. [smf] --- .gitattributes | 6 +- src/mame/drivers/ksys573.c | 194 ++++------------------ src/mame/machine/{mpeg573.c => k573dio.c} | 158 ++++++++++++------ src/mame/machine/{mpeg573.h => k573dio.h} | 21 +-- src/mame/machine/k573msu.c | 96 +++++++++++ src/mame/machine/k573msu.h | 28 ++++ src/mame/mame.mak | 2 +- 7 files changed, 282 insertions(+), 223 deletions(-) rename src/mame/machine/{mpeg573.c => k573dio.c} (50%) rename src/mame/machine/{mpeg573.h => k573dio.h} (81%) create mode 100644 src/mame/machine/k573msu.c create mode 100644 src/mame/machine/k573msu.h diff --git a/.gitattributes b/.gitattributes index 09c86d2b491..1cb963a78c5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5751,6 +5751,10 @@ src/mame/machine/jvs13551.c svneol=native#text/plain src/mame/machine/jvs13551.h svneol=native#text/plain src/mame/machine/k573cass.c svneol=native#text/plain src/mame/machine/k573cass.h svneol=native#text/plain +src/mame/machine/k573dio.c svneol=native#text/plain +src/mame/machine/k573dio.h svneol=native#text/plain +src/mame/machine/k573msu.c svneol=native#text/plain +src/mame/machine/k573msu.h svneol=native#text/plain src/mame/machine/kabuki.c svneol=native#text/plain src/mame/machine/kabuki.h svneol=native#text/plain src/mame/machine/kaneko_calc3.c svneol=native#text/plain @@ -5804,8 +5808,6 @@ src/mame/machine/mie.c svneol=native#text/plain src/mame/machine/mie.h svneol=native#text/plain src/mame/machine/model1.c svneol=native#text/plain src/mame/machine/model3.c svneol=native#text/plain -src/mame/machine/mpeg573.c svneol=native#text/plain -src/mame/machine/mpeg573.h svneol=native#text/plain src/mame/machine/mw8080bw.c svneol=native#text/plain src/mame/machine/n64.c svneol=native#text/plain src/mame/machine/namco06.c svneol=native#text/plain diff --git a/src/mame/drivers/ksys573.c b/src/mame/drivers/ksys573.c index 76384c05cd1..470183755c7 100644 --- a/src/mame/drivers/ksys573.c +++ b/src/mame/drivers/ksys573.c @@ -290,139 +290,6 @@ G: gun mania only, drives air soft gun (this game uses real BB bullet) (CN4, CN3, CN2 is printed pattern only, no actual connector) - - Digital I/O PCB - --------------- - - GX894-PWB(B)A (C)1999 KONAMI CO. LTD. - - |-------------| - | CN12 | - | | - | PC847 PC847 | - | | - | CN11 | - | | - | PC847 PC847 | - | | - | DS2401 CN10 | - | | - | PC847 PC847 | - | | - | CN14 CN13 | - |----------| |----------| - | PC847 | - | ADM232 CN17 XC9536 | - | | - | 19.6608MHz |-----------| - | ADM232 CN15 CY7C109 | - | HY51V65164A HY51V65164A | - | HY51V65164A | - | CN16 XCS40XL | - | | - | AK4309B CN18 29.450MHz MAS3507D | - | | - | CN3 | - | HYC24855 RCA-L/R | - |-----------------------------------------------| - - Notes: - - PC847 - High Density Mounting Type Photocoupler - CN12 - 13 pin connector with 8 wires to external connectors - CN11 - 12 pin connector with 8 wires to external connectors - DS2401 - DS2401 911C2 Silicon serial number - CN10 - 10 pin connector with 8 wires to external connectors - CN14 - 7 pin connector - CN13 - 5 pin connector with 2 wires to external connectors - ADM232 - ADM232AARN 9933 H48475 High Speed, 5 V, 0.1 uF CMOS RS-232 Drivers/Receivers - CN17 - 3 pin connector - XC9536 - XILINX XC9536 PC44AEM9933 F1096429A 15C - CN15 - 8 pin connector - CY7C109 - CY7C109-25VC 931 H 04 404825 128k x 8 Static RAM - HY51V65164A - 64M bit dynamic EDO RAM - CN16 - 4 pin connector joining this PCB to the CD-DA IN on the MAIN PCB. - XCS40XL - XILINX XCS40XL PQ208AKP9929 A2033251A 4C - AK4309B - AKM AK4309B 3N932N 16bit SCF DAC - CN18 - 6 pin connector - MAS3507D - IM MAS3507D D8 9173 51 HM U 072953.000 ES MPEG 1/2 Layer 2/3 Audio Decoder - CN3 - Connector joining this PCB to the MAIN PCB - HYC24855 - ? - RCA-L/R - RCA connectors for left/right audio output - - Drummania 10th Mix Multisession - ------------------------------- - - This box is used with multi-session System 573 games. - - Main board is standard GX700 PCB with CDROM (Drummania 10th Mix Multisession) - and Digital I/O Board GX894-PWB(B)A - BIOS is on a small plug-in daughterboard. - Daughterboard contains one EPROM, one PAL22V10, 2 logic chips and a PIC16F84. - The dumps provided are the EPROM dumped separately and a dump of the 'board' - with it plugged in (reading may be affected by the PIC) - - - PCB Layout of External Multisession Box - --------------------------------------- - - GXA25-PWB(A)(C)2000 KONAMI - |--------------------------------------------------------------------------| - |CN9 ADM232 LS273 PC16552 PC16552 XC9536(1) CN13| - |DSW(8) LS245 LS273 18.432MHz DS2401 | - | |-------| |-------| |-------| |-------| | - | MB3793 |TOSHIBA| |TOSHIBA| |TOSHIBA| |TOSHIBA|M48T58Y.6T| - | |TC9446F| |TC9446F| |TC9446F| |TC9446F| | - | |-016 | |-016 | |-016 | |-016 | CN12| - | |-------| |-------| |-------| |-------| | - | LV14 XC9572XL | - | CN16 CN17 CN18 CN19 XC9536(2)| - |PQ30RV21 LCX245 LCX245 CN11| - | 33.8688MHz PQ30RV21 | - | 8.25MHz HY57V641620 | - | |------------| HY57V641620 XC2S200 | - | |TOSHIBA | FLASH.20T | - | |TMPR3927AF | CN10| - | | | | - | | | LS245 F245 F245 | - | | |HY57V641620 LCX245 DIP40 | - | |------------| HY57V641620 LCX245 ATAPI44 | - | LCX245 LED(HDD) ATAPI40 | - | CN7 LCX245 CN14 LED(CD) CN5 | - |--------------------------------------------------------------------------| - Notes: (all IC's shown) - TMPR3927 - Toshiba TMPR3927AF Risc Microprocessor (QFP240) - FLASH.20T - Fujitsu 29F400TC Flash ROM (TSOP48) - ATAPI44 - IDE44 44-pin laptop type HDD connector (not used) - ATAPI40 - IDE40 40-pin flat cable HDD connector used for connection of CDROM drive - XC9572XL - XILINX XC9572XL In-system Programmable CPLD stamped 'XA25A1' (TQFP100) - XC9536(1) - XILINX CPLD stamped 'XA25A3' (PLCC44) - XC9536(2) - XILINX CPLD stamped 'XA25A2' (PLCC44) - XC2S200 - XILINX XC2S200 SPARTAN FPGA (QFP208) - DS2401 - MAXIM Dallas DS2401 Silicon Serial Number (SOIC6) - M48T58Y - ST M48T58Y Timekeeper NVRAM 8k bytes x8-bit (DIP28). Chip appears empty (0x04 fill) or unused - MB3793 - Fujitsu MB3793 Power-Voltage Monitoring IC with Watchdog Timer (SOIC8) - DIP40 - Empty DIP40 socket - HY57V641620 - Hyundai/Hynix HY57V641620 4 Banks x 1M x 16Bit Synchronous DRAM - PC16552D - National PC16552D Dual Universal Asynchronous Receiver/Transmitter with FIFO's - TC9446F - Toshiba TC9446F-016 Audio Digital Processor for Decode of Dolby Digital (AC-3) MPEG2 Audio - CN16-CN19 - Connector for sub board (3 of them are present). One board connects via a thin cable from - CN1 to the main board to a connector on the security board labelled 'AMP BOX'. - - Sub Board Layout - ---------------- - - GXA25-PWB(B) (C) 2000 KONAMI - |---------------------------------| - | TLP2630 LV14 ADM232 | - |CN2 CN1| - |A2430 AK5330 | - | | - | RCA L/R| - |ZUS1R50505 6379A | - | LM358 | - |---------------------------------| - PCMCIA Flash Card ----------------- @@ -486,8 +353,9 @@ G: gun mania only, drives air soft gun (this game uses real BB bullet) #include "machine/ds2401.h" #include "machine/linflash.h" #include "machine/k573cass.h" +#include "machine/k573dio.h" +#include "machine/k573msu.h" #include "machine/mb89371.h" -#include "machine/mpeg573.h" #include "machine/timekpr.h" #include "machine/upd4701.h" #include "sound/spu.h" @@ -712,7 +580,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( konami573d_map, AS_PROGRAM, 32, ksys573_state ) AM_IMPORT_FROM( konami573_map ) - AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_DEVICE16( "mpeg573", mpeg573_device, amap, 0xffffffff ) + AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_DEVICE16( "k573dio", k573dio_device, amap, 0xffffffff ) ADDRESS_MAP_END static ADDRESS_MAP_START( konami573a_map, AS_PROGRAM, 32, ksys573_state ) @@ -2225,7 +2093,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( k573d, konami573 ) MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_PROGRAM_MAP( konami573d_map ) - MCFG_MPEG573_ADD( "mpeg573", XTAL_19_6608MHz, NOOP ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_ADD( "k573dio", XTAL_19_6608MHz ) MACHINE_CONFIG_END // Variants with additional analogue i/o board @@ -2354,31 +2222,31 @@ static MACHINE_CONFIG_DERIVED( ddr2ml, k573a ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ddr3m, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_FRAGMENT_ADD( pccard2_32mb ) MCFG_FRAGMENT_ADD( cassyyi ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ddr3mp, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_FRAGMENT_ADD( pccard2_32mb ) MCFG_FRAGMENT_ADD( cassxzi ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ddrusa, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_FRAGMENT_ADD( casszi ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ddr5m, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_FRAGMENT_ADD( pccard2_32mb ) MCFG_FRAGMENT_ADD( casszi ) @@ -2396,15 +2264,15 @@ static MACHINE_CONFIG_DERIVED( dsftkd, k573a ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dsfdr, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_FRAGMENT_ADD( cassxzi ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dsem, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_FRAGMENT_ADD( cassxi ) MACHINE_CONFIG_END @@ -2412,22 +2280,22 @@ MACHINE_CONFIG_END // Dance Dance Revolution Solo static MACHINE_CONFIG_DERIVED( ddrsolo, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) MCFG_FRAGMENT_ADD( cassyi ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ddrs2k, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) MCFG_FRAGMENT_ADD( cassyyi ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ddr4ms, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) MCFG_FRAGMENT_ADD( pccard2_32mb ) MCFG_FRAGMENT_ADD( cassxzi ) @@ -2440,17 +2308,19 @@ static MACHINE_CONFIG_DERIVED( drmn, k573a ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( drmn2m, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, drmn_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, drmn_output_callback ) ) MCFG_FRAGMENT_ADD( cassxzi ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( drmn4m, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, drmn_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, drmn_output_callback ) ) MCFG_FRAGMENT_ADD( casszi ) + + MCFG_DEVICE_ADD( "k573msu", KONAMI_573_MULTI_SESSION_UNIT, 0 ) MACHINE_CONFIG_END // Guitar Freaks @@ -2543,15 +2413,15 @@ static MACHINE_CONFIG_DERIVED( gunmania, konami573 ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dmx, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, dmx_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, dmx_output_callback ) ) MCFG_FRAGMENT_ADD( casszi ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( mamboagg, k573d ) - MCFG_DEVICE_MODIFY( "mpeg573" ) - MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, mamboagg_output_callback ) ) + MCFG_DEVICE_MODIFY( "k573dio" ) + MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, mamboagg_output_callback ) ) MCFG_FRAGMENT_ADD( casszi ) MACHINE_CONFIG_END diff --git a/src/mame/machine/mpeg573.c b/src/mame/machine/k573dio.c similarity index 50% rename from src/mame/machine/mpeg573.c rename to src/mame/machine/k573dio.c index 5a1c13a9641..74fc69c2aa4 100644 --- a/src/mame/machine/mpeg573.c +++ b/src/mame/machine/k573dio.c @@ -1,9 +1,71 @@ #include "emu.h" -#include "mpeg573.h" +#include "k573dio.h" -const device_type MPEG573 = &device_creator; +/* + Digital I/O PCB + --------------- -DEVICE_ADDRESS_MAP_START(amap, 16, mpeg573_device) + GX894-PWB(B)A (C)1999 KONAMI CO. LTD. + + |-------------| + | CN12 | + | | + | PC847 PC847 | + | | + | CN11 | + | | + | PC847 PC847 | + | | + | DS2401 CN10 | + | | + | PC847 PC847 | + | | + | CN14 CN13 | + |----------| |----------| + | PC847 | + | ADM232 CN17 XC9536 | + | | + | 19.6608MHz |-----------| + | ADM232 CN15 CY7C109 | + | HY51V65164A HY51V65164A | + | HY51V65164A | + | CN16 XCS40XL | + | | + | AK4309B CN18 29.450MHz MAS3507D | + | | + | CN3 | + | HYC24855 RCA-L/R | + |-----------------------------------------------| + + Notes: + + PC847 - High Density Mounting Type Photocoupler + CN12 - 13 pin connector with 8 wires to external connectors + CN11 - 12 pin connector with 8 wires to external connectors + DS2401 - DS2401 911C2 Silicon serial number + CN10 - 10 pin connector with 8 wires to external connectors + CN14 - 7 pin connector + CN13 - 5 pin connector with 2 wires to external connectors + ADM232 - ADM232AARN 9933 H48475 High Speed, 5 V, 0.1 uF CMOS RS-232 Drivers/Receivers + CN17 - 3 pin connector + XC9536 - XILINX XC9536 PC44AEM9933 F1096429A 15C + CN15 - 8 pin connector + CY7C109 - CY7C109-25VC 931 H 04 404825 128k x 8 Static RAM + HY51V65164A - 64M bit dynamic EDO RAM + CN16 - 4 pin connector joining this PCB to the CD-DA IN on the MAIN PCB. + XCS40XL - XILINX XCS40XL PQ208AKP9929 A2033251A 4C + AK4309B - AKM AK4309B 3N932N 16bit SCF DAC + CN18 - 6 pin connector + MAS3507D - IM MAS3507D D8 9173 51 HM U 072953.000 ES MPEG 1/2 Layer 2/3 Audio Decoder + CN3 - Connector joining this PCB to the MAIN PCB + HYC24855 - ? + RCA-L/R - RCA connectors for left/right audio output + +*/ + +const device_type KONAMI_573_DIGITAL_IO_BOARD = &device_creator; + +DEVICE_ADDRESS_MAP_START(amap, 16, k573dio_device) AM_RANGE(0x00, 0x01) AM_READ(a00_r) AM_RANGE(0x02, 0x03) AM_READ(a02_r) AM_RANGE(0x04, 0x05) AM_READ(a04_r) @@ -36,124 +98,124 @@ DEVICE_ADDRESS_MAP_START(amap, 16, mpeg573_device) AM_RANGE(0xfe, 0xff) AM_WRITE(output_2_w) ADDRESS_MAP_END -static MACHINE_CONFIG_FRAGMENT( mpeg573 ) +static MACHINE_CONFIG_FRAGMENT( k573dio ) MCFG_MAS3507D_ADD( "mpeg" ) MCFG_DS2401_ADD( "digital_id" ) MACHINE_CONFIG_END -mpeg573_device::mpeg573_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, MPEG573, "Konami 573 digital audio board", tag, owner, clock, "mpeg573", __FILE__), +k573dio_device::k573dio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, KONAMI_573_DIGITAL_IO_BOARD, "Konami 573 digital I/O board", tag, owner, clock, "k573dio", __FILE__), mas3507d(*this, "mpeg"), digital_id(*this, "digital_id"), output_cb(*this) { } -void mpeg573_device::device_start() +void k573dio_device::device_start() { output_cb.resolve_safe(); ram = auto_alloc_array( machine(), UINT16, 12 * 1024 * 1024 ); save_pointer( NAME(ram), 12 * 1024 * 1024 ); } -void mpeg573_device::device_reset() +void k573dio_device::device_reset() { ram_adr = 0; memset(output_data, 0, sizeof(output_data)); } -ROM_START( mpeg573 ) +ROM_START( k573dio ) ROM_REGION( 0x000008, "digital_id", 0 ) ROM_LOAD( "digital-id.bin", 0x000000, 0x000008, CRC(2b977f4d) SHA1(2b108a56653f91cb3351718c45dfcf979bc35ef1) ) ROM_END -const rom_entry *mpeg573_device::device_rom_region() const +const rom_entry *k573dio_device::device_rom_region() const { - return ROM_NAME(mpeg573); + return ROM_NAME(k573dio); } -machine_config_constructor mpeg573_device::device_mconfig_additions() const +machine_config_constructor k573dio_device::device_mconfig_additions() const { - return MACHINE_CONFIG_NAME( mpeg573 ); + return MACHINE_CONFIG_NAME( k573dio ); } -void mpeg573_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +void k573dio_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { } -READ16_MEMBER(mpeg573_device::a00_r) +READ16_MEMBER(k573dio_device::a00_r) { logerror("%s: a00_r (%s)\n", tag(), machine().describe_context()); return 0x0000; } -READ16_MEMBER(mpeg573_device::a02_r) +READ16_MEMBER(k573dio_device::a02_r) { logerror("%s: a02_r (%s)\n", tag(), machine().describe_context()); return 0x0001; } -READ16_MEMBER(mpeg573_device::a04_r) +READ16_MEMBER(k573dio_device::a04_r) { logerror("%s: a04_r (%s)\n", tag(), machine().describe_context()); return 0x0000; } -READ16_MEMBER(mpeg573_device::a06_r) +READ16_MEMBER(k573dio_device::a06_r) { logerror("%s: a06_r (%s)\n", tag(), machine().describe_context()); return 0x0000; } -READ16_MEMBER(mpeg573_device::a0a_r) +READ16_MEMBER(k573dio_device::a0a_r) { logerror("%s: a0a_r (%s)\n", tag(), machine().describe_context()); return 0x0000; } -READ16_MEMBER(mpeg573_device::a80_r) +READ16_MEMBER(k573dio_device::a80_r) { logerror("%s: a80_r (%s)\n", tag(), machine().describe_context()); return 0x1234; } -WRITE16_MEMBER(mpeg573_device::mpeg_start_adr_high_w) +WRITE16_MEMBER(k573dio_device::mpeg_start_adr_high_w) { logerror("FPGA MPEG start address high %04x\n", data); } -WRITE16_MEMBER(mpeg573_device::mpeg_start_adr_low_w) +WRITE16_MEMBER(k573dio_device::mpeg_start_adr_low_w) { logerror("FPGA MPEG start address low %04x\n", data); } -WRITE16_MEMBER(mpeg573_device::mpeg_end_adr_high_w) +WRITE16_MEMBER(k573dio_device::mpeg_end_adr_high_w) { logerror("FPGA MPEG end address high %04x\n", data); } -WRITE16_MEMBER(mpeg573_device::mpeg_end_adr_low_w) +WRITE16_MEMBER(k573dio_device::mpeg_end_adr_low_w) { logerror("FPGA MPEG end address low %04x\n", data); } -WRITE16_MEMBER(mpeg573_device::mpeg_key_1_w) +WRITE16_MEMBER(k573dio_device::mpeg_key_1_w) { logerror("FPGA MPEG key 1/3 %04x\n", data); } -READ16_MEMBER(mpeg573_device::mas_i2c_r) +READ16_MEMBER(k573dio_device::mas_i2c_r) { return (mas3507d->i2c_scl_r() << 13) | (mas3507d->i2c_sda_r() << 12); } -WRITE16_MEMBER(mpeg573_device::mas_i2c_w) +WRITE16_MEMBER(k573dio_device::mas_i2c_w) { mas3507d->i2c_scl_w(data & 0x2000); mas3507d->i2c_sda_w(data & 0x1000); } -WRITE16_MEMBER(mpeg573_device::mpeg_ctrl_w) +WRITE16_MEMBER(k573dio_device::mpeg_ctrl_w) { logerror("FPGA MPEG control %c%c%c\n", data & 0x8000 ? '#' : '.', @@ -161,84 +223,84 @@ WRITE16_MEMBER(mpeg573_device::mpeg_ctrl_w) data & 0x2000 ? '#' : '.'); } -WRITE16_MEMBER(mpeg573_device::ram_write_adr_high_w) +WRITE16_MEMBER(k573dio_device::ram_write_adr_high_w) { // read and write address are shared ram_adr = (ram_adr & 0x0000ffff) | (data << 16); } -WRITE16_MEMBER(mpeg573_device::ram_write_adr_low_w) +WRITE16_MEMBER(k573dio_device::ram_write_adr_low_w) { // read and write address are shared ram_adr = (ram_adr & 0xffff0000) | data; } -READ16_MEMBER(mpeg573_device::ram_r) +READ16_MEMBER(k573dio_device::ram_r) { UINT16 res = ram[ram_adr >> 1]; ram_adr += 2; return res; } -WRITE16_MEMBER(mpeg573_device::ram_w) +WRITE16_MEMBER(k573dio_device::ram_w) { ram[ram_adr >> 1] = data; ram_adr += 2; } -WRITE16_MEMBER(mpeg573_device::ram_read_adr_high_w) +WRITE16_MEMBER(k573dio_device::ram_read_adr_high_w) { // read and write address are shared ram_adr = (ram_adr & 0x0000ffff) | (data << 16); } -WRITE16_MEMBER(mpeg573_device::ram_read_adr_low_w) +WRITE16_MEMBER(k573dio_device::ram_read_adr_low_w) { // read and write address are shared ram_adr = (ram_adr & 0xffff0000) | data; } -WRITE16_MEMBER(mpeg573_device::output_1_w) +WRITE16_MEMBER(k573dio_device::output_1_w) { output(1, data); } -WRITE16_MEMBER(mpeg573_device::output_0_w) +WRITE16_MEMBER(k573dio_device::output_0_w) { output(0, data); } -WRITE16_MEMBER(mpeg573_device::output_3_w) +WRITE16_MEMBER(k573dio_device::output_3_w) { output(3, data); } -WRITE16_MEMBER(mpeg573_device::output_7_w) +WRITE16_MEMBER(k573dio_device::output_7_w) { output(7, data); } -WRITE16_MEMBER(mpeg573_device::mpeg_key_2_w) +WRITE16_MEMBER(k573dio_device::mpeg_key_2_w) { logerror("FPGA MPEG key 2/3 %04x\n", data); } -WRITE16_MEMBER(mpeg573_device::mpeg_key_3_w) +WRITE16_MEMBER(k573dio_device::mpeg_key_3_w) { logerror("FPGA MPEG key 3/3 %04x\n", data); } -READ16_MEMBER(mpeg573_device::digital_id_r) +READ16_MEMBER(k573dio_device::digital_id_r) { return digital_id->read() << 12; } -WRITE16_MEMBER(mpeg573_device::digital_id_w) +WRITE16_MEMBER(k573dio_device::digital_id_w) { digital_id->write( !( ( data >> 12 ) & 1 ) ); } -READ16_MEMBER(mpeg573_device::fpga_status_r) +READ16_MEMBER(k573dio_device::fpga_status_r) { logerror("%s: fpga_status_r (%s)\n", tag(), machine().describe_context()); @@ -254,27 +316,27 @@ READ16_MEMBER(mpeg573_device::fpga_status_r) return 0x8000 | 0x2000 | 0x1000; } -WRITE16_MEMBER(mpeg573_device::fpga_firmware_w) +WRITE16_MEMBER(k573dio_device::fpga_firmware_w) { // Firmware bits in bit 15, always the same firmware } -WRITE16_MEMBER(mpeg573_device::output_4_w) +WRITE16_MEMBER(k573dio_device::output_4_w) { output(4, data); } -WRITE16_MEMBER(mpeg573_device::output_5_w) +WRITE16_MEMBER(k573dio_device::output_5_w) { output(5, data); } -WRITE16_MEMBER(mpeg573_device::output_2_w) +WRITE16_MEMBER(k573dio_device::output_2_w) { output(2, data); } -void mpeg573_device::output(int offset, UINT16 data) +void k573dio_device::output(int offset, UINT16 data) { data = (data >> 12) & 0x0f; static const int shift[] = { 0, 2, 3, 1 }; diff --git a/src/mame/machine/mpeg573.h b/src/mame/machine/k573dio.h similarity index 81% rename from src/mame/machine/mpeg573.h rename to src/mame/machine/k573dio.h index 2dd511dc0aa..88bbfc05b51 100644 --- a/src/mame/machine/mpeg573.h +++ b/src/mame/machine/k573dio.h @@ -1,20 +1,21 @@ -#ifndef _MPEG573_H_ -#define _MPEG573_H_ +#pragma once + +#ifndef _K573DIO_H_ +#define _K573DIO_H_ #include "sound/mas3507d.h" #include "machine/ds2401.h" -#define MCFG_MPEG573_ADD(_tag, _clock, _output_cb ) \ - MCFG_DEVICE_ADD(_tag, MPEG573, _clock) \ - downcast(device)->set_output_cb(DEVCB2_##_output_cb); +#define MCFG_KONAMI_573_DIGITAL_IO_BOARD_ADD(_tag, _clock) \ + MCFG_DEVICE_ADD(_tag, KONAMI_573_DIGITAL_IO_BOARD, _clock) -#define MCFG_MPEG573_OUTPUT_CALLBACK( _output_cb ) \ - downcast(device)->set_output_cb(DEVCB2_##_output_cb); +#define MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( _output_cb ) \ + downcast(device)->set_output_cb(DEVCB2_##_output_cb); -class mpeg573_device : public device_t +class k573dio_device : public device_t { public: - mpeg573_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + k573dio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); template void set_output_cb(_write _output_cb) { @@ -77,6 +78,6 @@ private: void output(int offset, UINT16 data); }; -extern const device_type MPEG573; +extern const device_type KONAMI_573_DIGITAL_IO_BOARD; #endif diff --git a/src/mame/machine/k573msu.c b/src/mame/machine/k573msu.c new file mode 100644 index 00000000000..a40dbaf0349 --- /dev/null +++ b/src/mame/machine/k573msu.c @@ -0,0 +1,96 @@ +// license:MAME +// copyright-holders:smf +/* + * Konami 573 Multi Session Unit + * + */ + +#include "k573msu.h" + +/* + + PCB Layout of External Multisession Box + --------------------------------------- + + GXA25-PWB(A)(C)2000 KONAMI + |--------------------------------------------------------------------------| + |CN9 ADM232 LS273 PC16552 PC16552 XC9536(1) CN13| + |DSW(8) LS245 LS273 18.432MHz DS2401 | + | |-------| |-------| |-------| |-------| | + | MB3793 |TOSHIBA| |TOSHIBA| |TOSHIBA| |TOSHIBA|M48T58Y.6T| + | |TC9446F| |TC9446F| |TC9446F| |TC9446F| | + | |-016 | |-016 | |-016 | |-016 | CN12| + | |-------| |-------| |-------| |-------| | + | LV14 XC9572XL | + | CN16 CN17 CN18 CN19 XC9536(2)| + |PQ30RV21 LCX245 LCX245 CN11| + | 33.8688MHz PQ30RV21 | + | 8.25MHz HY57V641620 | + | |------------| HY57V641620 XC2S200 | + | |TOSHIBA | FLASH.20T | + | |TMPR3927AF | CN10| + | | | | + | | | LS245 F245 F245 | + | | |HY57V641620 LCX245 DIP40 | + | |------------| HY57V641620 LCX245 ATAPI44 | + | LCX245 LED(HDD) ATAPI40 | + | CN7 LCX245 CN14 LED(CD) CN5 | + |--------------------------------------------------------------------------| + Notes: (all IC's shown) + TMPR3927 - Toshiba TMPR3927AF Risc Microprocessor (QFP240) + FLASH.20T - Fujitsu 29F400TC Flash ROM (TSOP48) + ATAPI44 - IDE44 44-pin laptop type HDD connector (not used) + ATAPI40 - IDE40 40-pin flat cable HDD connector used for connection of CDROM drive + XC9572XL - XILINX XC9572XL In-system Programmable CPLD stamped 'XA25A1' (TQFP100) + XC9536(1) - XILINX CPLD stamped 'XA25A3' (PLCC44) + XC9536(2) - XILINX CPLD stamped 'XA25A2' (PLCC44) + XC2S200 - XILINX XC2S200 SPARTAN FPGA (QFP208) + DS2401 - MAXIM Dallas DS2401 Silicon Serial Number (SOIC6) + M48T58Y - ST M48T58Y Timekeeper NVRAM 8k bytes x8-bit (DIP28). Chip appears empty (0x04 fill) or unused + MB3793 - Fujitsu MB3793 Power-Voltage Monitoring IC with Watchdog Timer (SOIC8) + DIP40 - Empty DIP40 socket + HY57V641620 - Hyundai/Hynix HY57V641620 4 Banks x 1M x 16Bit Synchronous DRAM + PC16552D - National PC16552D Dual Universal Asynchronous Receiver/Transmitter with FIFO's + TC9446F - Toshiba TC9446F-016 Audio Digital Processor for Decode of Dolby Digital (AC-3) MPEG2 Audio + CN16-CN19 - Connector for sub board (3 of them are present). One board connects via a thin cable from + CN1 to the main board to a connector on the security board labelled 'AMP BOX'. + + Sub Board Layout + ---------------- + + GXA25-PWB(B) (C) 2000 KONAMI + |---------------------------------| + | TLP2630 LV14 ADM232 | + |CN2 CN1| + |A2430 AK5330 | + | | + | RCA L/R| + |ZUS1R50505 6379A | + | LM358 | + |---------------------------------| + +*/ + +k573msu_device::k573msu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, KONAMI_573_MULTI_SESSION_UNIT, "Konami Multi Session Unit", tag, owner, clock, "k573msu", __FILE__) +{ +} + +void k573msu_device::device_start() +{ +} + +ROM_START( k573msu ) + ROM_REGION( 0x080000, "tmpr3927", 0 ) + ROM_LOAD( "flash.20t", 0x000000, 0x080000, CRC(b70c65b0) SHA1(d3b2bf9d3f8b1caf70755a0d7fa50ef8bbd758b8) ) // from "GXA25-PWB(A)(C)2000 KONAMI" + + ROM_REGION( 0x002000, "m48t58y", 0 ) + ROM_LOAD( "m48t58y.6t", 0x000000, 0x002000, CRC(609ef020) SHA1(71b87c8b25b9613b4d4511c53d0a3a3aacf1499d) ) +ROM_END + +const rom_entry *k573msu_device::device_rom_region() const +{ + return ROM_NAME( k573msu ); +} + +const device_type KONAMI_573_MULTI_SESSION_UNIT = &device_creator; diff --git a/src/mame/machine/k573msu.h b/src/mame/machine/k573msu.h new file mode 100644 index 00000000000..7eae472532a --- /dev/null +++ b/src/mame/machine/k573msu.h @@ -0,0 +1,28 @@ +// license:MAME +// copyright-holders:smf +/* + * Konami 573 Multi Session Unit + * + */ + +#pragma once + +#ifndef __K573MSU_H__ +#define __K573MSU_H__ + +#include "emu.h" + +extern const device_type KONAMI_573_MULTI_SESSION_UNIT; + +class k573msu_device : public device_t +{ +public: + k573msu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + +protected: + virtual void device_start(); + + virtual const rom_entry *device_rom_region() const; +}; + +#endif diff --git a/src/mame/mame.mak b/src/mame/mame.mak index d6804715c2c..38e068aab27 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -1184,7 +1184,7 @@ $(MAMEOBJ)/konami.a: \ $(DRIVERS)/konamim2.o \ $(DRIVERS)/kontest.o \ $(DRIVERS)/konendev.o \ - $(DRIVERS)/ksys573.o $(MACHINE)/k573cass.o $(MACHINE)/mpeg573.o $(MACHINE)/zs01.o \ + $(DRIVERS)/ksys573.o $(MACHINE)/k573cass.o $(MACHINE)/k573dio.o $(MACHINE)/k573msu.o $(MACHINE)/zs01.o \ $(DRIVERS)/labyrunr.o $(VIDEO)/labyrunr.o \ $(DRIVERS)/lethal.o $(VIDEO)/lethal.o \ $(DRIVERS)/mainevt.o $(VIDEO)/mainevt.o \