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]

This commit is contained in:
smf- 2013-12-09 17:40:40 +00:00
parent 1d7f4b8fb3
commit 62a9a003d5
7 changed files with 282 additions and 223 deletions

6
.gitattributes vendored
View File

@ -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/jvs13551.h svneol=native#text/plain
src/mame/machine/k573cass.c 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/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.c svneol=native#text/plain
src/mame/machine/kabuki.h svneol=native#text/plain src/mame/machine/kabuki.h svneol=native#text/plain
src/mame/machine/kaneko_calc3.c 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/mie.h svneol=native#text/plain
src/mame/machine/model1.c 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/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/mw8080bw.c svneol=native#text/plain
src/mame/machine/n64.c svneol=native#text/plain src/mame/machine/n64.c svneol=native#text/plain
src/mame/machine/namco06.c svneol=native#text/plain src/mame/machine/namco06.c svneol=native#text/plain

View File

@ -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) (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 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/ds2401.h"
#include "machine/linflash.h" #include "machine/linflash.h"
#include "machine/k573cass.h" #include "machine/k573cass.h"
#include "machine/k573dio.h"
#include "machine/k573msu.h"
#include "machine/mb89371.h" #include "machine/mb89371.h"
#include "machine/mpeg573.h"
#include "machine/timekpr.h" #include "machine/timekpr.h"
#include "machine/upd4701.h" #include "machine/upd4701.h"
#include "sound/spu.h" #include "sound/spu.h"
@ -712,7 +580,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( konami573d_map, AS_PROGRAM, 32, ksys573_state ) static ADDRESS_MAP_START( konami573d_map, AS_PROGRAM, 32, ksys573_state )
AM_IMPORT_FROM( konami573_map ) 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 ADDRESS_MAP_END
static ADDRESS_MAP_START( konami573a_map, AS_PROGRAM, 32, ksys573_state ) static ADDRESS_MAP_START( konami573a_map, AS_PROGRAM, 32, ksys573_state )
@ -2225,7 +2093,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( k573d, konami573 ) static MACHINE_CONFIG_DERIVED( k573d, konami573 )
MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_MODIFY( "maincpu" )
MCFG_CPU_PROGRAM_MAP( konami573d_map ) 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 MACHINE_CONFIG_END
// Variants with additional analogue i/o board // Variants with additional analogue i/o board
@ -2354,31 +2222,31 @@ static MACHINE_CONFIG_DERIVED( ddr2ml, k573a )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ddr3m, k573d ) static MACHINE_CONFIG_DERIVED( ddr3m, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) )
MCFG_FRAGMENT_ADD( pccard2_32mb ) MCFG_FRAGMENT_ADD( pccard2_32mb )
MCFG_FRAGMENT_ADD( cassyyi ) MCFG_FRAGMENT_ADD( cassyyi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ddr3mp, k573d ) static MACHINE_CONFIG_DERIVED( ddr3mp, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) )
MCFG_FRAGMENT_ADD( pccard2_32mb ) MCFG_FRAGMENT_ADD( pccard2_32mb )
MCFG_FRAGMENT_ADD( cassxzi ) MCFG_FRAGMENT_ADD( cassxzi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ddrusa, k573d ) static MACHINE_CONFIG_DERIVED( ddrusa, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) )
MCFG_FRAGMENT_ADD( casszi ) MCFG_FRAGMENT_ADD( casszi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ddr5m, k573d ) static MACHINE_CONFIG_DERIVED( ddr5m, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) )
MCFG_FRAGMENT_ADD( pccard2_32mb ) MCFG_FRAGMENT_ADD( pccard2_32mb )
MCFG_FRAGMENT_ADD( casszi ) MCFG_FRAGMENT_ADD( casszi )
@ -2396,15 +2264,15 @@ static MACHINE_CONFIG_DERIVED( dsftkd, k573a )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dsfdr, k573d ) static MACHINE_CONFIG_DERIVED( dsfdr, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) )
MCFG_FRAGMENT_ADD( cassxzi ) MCFG_FRAGMENT_ADD( cassxzi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dsem, k573d ) static MACHINE_CONFIG_DERIVED( dsem, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddr_output_callback ) )
MCFG_FRAGMENT_ADD( cassxi ) MCFG_FRAGMENT_ADD( cassxi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -2412,22 +2280,22 @@ MACHINE_CONFIG_END
// Dance Dance Revolution Solo // Dance Dance Revolution Solo
static MACHINE_CONFIG_DERIVED( ddrsolo, k573d ) static MACHINE_CONFIG_DERIVED( ddrsolo, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) )
MCFG_FRAGMENT_ADD( cassyi ) MCFG_FRAGMENT_ADD( cassyi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ddrs2k, k573d ) static MACHINE_CONFIG_DERIVED( ddrs2k, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) )
MCFG_FRAGMENT_ADD( cassyyi ) MCFG_FRAGMENT_ADD( cassyyi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ddr4ms, k573d ) static MACHINE_CONFIG_DERIVED( ddr4ms, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, ddrsolo_output_callback ) )
MCFG_FRAGMENT_ADD( pccard2_32mb ) MCFG_FRAGMENT_ADD( pccard2_32mb )
MCFG_FRAGMENT_ADD( cassxzi ) MCFG_FRAGMENT_ADD( cassxzi )
@ -2440,17 +2308,19 @@ static MACHINE_CONFIG_DERIVED( drmn, k573a )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( drmn2m, k573d ) static MACHINE_CONFIG_DERIVED( drmn2m, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, drmn_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, drmn_output_callback ) )
MCFG_FRAGMENT_ADD( cassxzi ) MCFG_FRAGMENT_ADD( cassxzi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( drmn4m, k573d ) static MACHINE_CONFIG_DERIVED( drmn4m, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, drmn_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, drmn_output_callback ) )
MCFG_FRAGMENT_ADD( casszi ) MCFG_FRAGMENT_ADD( casszi )
MCFG_DEVICE_ADD( "k573msu", KONAMI_573_MULTI_SESSION_UNIT, 0 )
MACHINE_CONFIG_END MACHINE_CONFIG_END
// Guitar Freaks // Guitar Freaks
@ -2543,15 +2413,15 @@ static MACHINE_CONFIG_DERIVED( gunmania, konami573 )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dmx, k573d ) static MACHINE_CONFIG_DERIVED( dmx, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, dmx_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, dmx_output_callback ) )
MCFG_FRAGMENT_ADD( casszi ) MCFG_FRAGMENT_ADD( casszi )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mamboagg, k573d ) static MACHINE_CONFIG_DERIVED( mamboagg, k573d )
MCFG_DEVICE_MODIFY( "mpeg573" ) MCFG_DEVICE_MODIFY( "k573dio" )
MCFG_MPEG573_OUTPUT_CALLBACK( WRITE8( ksys573_state, mamboagg_output_callback ) ) MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( WRITE8( ksys573_state, mamboagg_output_callback ) )
MCFG_FRAGMENT_ADD( casszi ) MCFG_FRAGMENT_ADD( casszi )
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -1,9 +1,71 @@
#include "emu.h" #include "emu.h"
#include "mpeg573.h" #include "k573dio.h"
const device_type MPEG573 = &device_creator<mpeg573_device>; /*
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<k573dio_device>;
DEVICE_ADDRESS_MAP_START(amap, 16, k573dio_device)
AM_RANGE(0x00, 0x01) AM_READ(a00_r) AM_RANGE(0x00, 0x01) AM_READ(a00_r)
AM_RANGE(0x02, 0x03) AM_READ(a02_r) AM_RANGE(0x02, 0x03) AM_READ(a02_r)
AM_RANGE(0x04, 0x05) AM_READ(a04_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) AM_RANGE(0xfe, 0xff) AM_WRITE(output_2_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static MACHINE_CONFIG_FRAGMENT( mpeg573 ) static MACHINE_CONFIG_FRAGMENT( k573dio )
MCFG_MAS3507D_ADD( "mpeg" ) MCFG_MAS3507D_ADD( "mpeg" )
MCFG_DS2401_ADD( "digital_id" ) MCFG_DS2401_ADD( "digital_id" )
MACHINE_CONFIG_END MACHINE_CONFIG_END
mpeg573_device::mpeg573_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) k573dio_device::k573dio_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__), : device_t(mconfig, KONAMI_573_DIGITAL_IO_BOARD, "Konami 573 digital I/O board", tag, owner, clock, "k573dio", __FILE__),
mas3507d(*this, "mpeg"), mas3507d(*this, "mpeg"),
digital_id(*this, "digital_id"), digital_id(*this, "digital_id"),
output_cb(*this) output_cb(*this)
{ {
} }
void mpeg573_device::device_start() void k573dio_device::device_start()
{ {
output_cb.resolve_safe(); output_cb.resolve_safe();
ram = auto_alloc_array( machine(), UINT16, 12 * 1024 * 1024 ); ram = auto_alloc_array( machine(), UINT16, 12 * 1024 * 1024 );
save_pointer( NAME(ram), 12 * 1024 * 1024 ); save_pointer( NAME(ram), 12 * 1024 * 1024 );
} }
void mpeg573_device::device_reset() void k573dio_device::device_reset()
{ {
ram_adr = 0; ram_adr = 0;
memset(output_data, 0, sizeof(output_data)); memset(output_data, 0, sizeof(output_data));
} }
ROM_START( mpeg573 ) ROM_START( k573dio )
ROM_REGION( 0x000008, "digital_id", 0 ) ROM_REGION( 0x000008, "digital_id", 0 )
ROM_LOAD( "digital-id.bin", 0x000000, 0x000008, CRC(2b977f4d) SHA1(2b108a56653f91cb3351718c45dfcf979bc35ef1) ) ROM_LOAD( "digital-id.bin", 0x000000, 0x000008, CRC(2b977f4d) SHA1(2b108a56653f91cb3351718c45dfcf979bc35ef1) )
ROM_END 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()); logerror("%s: a00_r (%s)\n", tag(), machine().describe_context());
return 0x0000; return 0x0000;
} }
READ16_MEMBER(mpeg573_device::a02_r) READ16_MEMBER(k573dio_device::a02_r)
{ {
logerror("%s: a02_r (%s)\n", tag(), machine().describe_context()); logerror("%s: a02_r (%s)\n", tag(), machine().describe_context());
return 0x0001; return 0x0001;
} }
READ16_MEMBER(mpeg573_device::a04_r) READ16_MEMBER(k573dio_device::a04_r)
{ {
logerror("%s: a04_r (%s)\n", tag(), machine().describe_context()); logerror("%s: a04_r (%s)\n", tag(), machine().describe_context());
return 0x0000; return 0x0000;
} }
READ16_MEMBER(mpeg573_device::a06_r) READ16_MEMBER(k573dio_device::a06_r)
{ {
logerror("%s: a06_r (%s)\n", tag(), machine().describe_context()); logerror("%s: a06_r (%s)\n", tag(), machine().describe_context());
return 0x0000; return 0x0000;
} }
READ16_MEMBER(mpeg573_device::a0a_r) READ16_MEMBER(k573dio_device::a0a_r)
{ {
logerror("%s: a0a_r (%s)\n", tag(), machine().describe_context()); logerror("%s: a0a_r (%s)\n", tag(), machine().describe_context());
return 0x0000; return 0x0000;
} }
READ16_MEMBER(mpeg573_device::a80_r) READ16_MEMBER(k573dio_device::a80_r)
{ {
logerror("%s: a80_r (%s)\n", tag(), machine().describe_context()); logerror("%s: a80_r (%s)\n", tag(), machine().describe_context());
return 0x1234; 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); 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); 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); 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); 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); 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); 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_scl_w(data & 0x2000);
mas3507d->i2c_sda_w(data & 0x1000); 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", logerror("FPGA MPEG control %c%c%c\n",
data & 0x8000 ? '#' : '.', data & 0x8000 ? '#' : '.',
@ -161,84 +223,84 @@ WRITE16_MEMBER(mpeg573_device::mpeg_ctrl_w)
data & 0x2000 ? '#' : '.'); 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 // read and write address are shared
ram_adr = (ram_adr & 0x0000ffff) | (data << 16); 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 // read and write address are shared
ram_adr = (ram_adr & 0xffff0000) | data; ram_adr = (ram_adr & 0xffff0000) | data;
} }
READ16_MEMBER(mpeg573_device::ram_r) READ16_MEMBER(k573dio_device::ram_r)
{ {
UINT16 res = ram[ram_adr >> 1]; UINT16 res = ram[ram_adr >> 1];
ram_adr += 2; ram_adr += 2;
return res; return res;
} }
WRITE16_MEMBER(mpeg573_device::ram_w) WRITE16_MEMBER(k573dio_device::ram_w)
{ {
ram[ram_adr >> 1] = data; ram[ram_adr >> 1] = data;
ram_adr += 2; 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 // read and write address are shared
ram_adr = (ram_adr & 0x0000ffff) | (data << 16); 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 // read and write address are shared
ram_adr = (ram_adr & 0xffff0000) | data; ram_adr = (ram_adr & 0xffff0000) | data;
} }
WRITE16_MEMBER(mpeg573_device::output_1_w) WRITE16_MEMBER(k573dio_device::output_1_w)
{ {
output(1, data); output(1, data);
} }
WRITE16_MEMBER(mpeg573_device::output_0_w) WRITE16_MEMBER(k573dio_device::output_0_w)
{ {
output(0, data); output(0, data);
} }
WRITE16_MEMBER(mpeg573_device::output_3_w) WRITE16_MEMBER(k573dio_device::output_3_w)
{ {
output(3, data); output(3, data);
} }
WRITE16_MEMBER(mpeg573_device::output_7_w) WRITE16_MEMBER(k573dio_device::output_7_w)
{ {
output(7, data); 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); 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); 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; 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 ) ); 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()); 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; 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 // 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); output(4, data);
} }
WRITE16_MEMBER(mpeg573_device::output_5_w) WRITE16_MEMBER(k573dio_device::output_5_w)
{ {
output(5, data); output(5, data);
} }
WRITE16_MEMBER(mpeg573_device::output_2_w) WRITE16_MEMBER(k573dio_device::output_2_w)
{ {
output(2, data); output(2, data);
} }
void mpeg573_device::output(int offset, UINT16 data) void k573dio_device::output(int offset, UINT16 data)
{ {
data = (data >> 12) & 0x0f; data = (data >> 12) & 0x0f;
static const int shift[] = { 0, 2, 3, 1 }; static const int shift[] = { 0, 2, 3, 1 };

View File

@ -1,20 +1,21 @@
#ifndef _MPEG573_H_ #pragma once
#define _MPEG573_H_
#ifndef _K573DIO_H_
#define _K573DIO_H_
#include "sound/mas3507d.h" #include "sound/mas3507d.h"
#include "machine/ds2401.h" #include "machine/ds2401.h"
#define MCFG_MPEG573_ADD(_tag, _clock, _output_cb ) \ #define MCFG_KONAMI_573_DIGITAL_IO_BOARD_ADD(_tag, _clock) \
MCFG_DEVICE_ADD(_tag, MPEG573, _clock) \ MCFG_DEVICE_ADD(_tag, KONAMI_573_DIGITAL_IO_BOARD, _clock)
downcast<mpeg573_device *>(device)->set_output_cb(DEVCB2_##_output_cb);
#define MCFG_MPEG573_OUTPUT_CALLBACK( _output_cb ) \ #define MCFG_KONAMI_573_DIGITAL_IO_BOARD_OUTPUT_CALLBACK( _output_cb ) \
downcast<mpeg573_device *>(device)->set_output_cb(DEVCB2_##_output_cb); downcast<k573dio_device *>(device)->set_output_cb(DEVCB2_##_output_cb);
class mpeg573_device : public device_t class k573dio_device : public device_t
{ {
public: 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<class _write> void set_output_cb(_write _output_cb) template<class _write> void set_output_cb(_write _output_cb)
{ {
@ -77,6 +78,6 @@ private:
void output(int offset, UINT16 data); void output(int offset, UINT16 data);
}; };
extern const device_type MPEG573; extern const device_type KONAMI_573_DIGITAL_IO_BOARD;
#endif #endif

View File

@ -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<k573msu_device>;

View File

@ -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

View File

@ -1184,7 +1184,7 @@ $(MAMEOBJ)/konami.a: \
$(DRIVERS)/konamim2.o \ $(DRIVERS)/konamim2.o \
$(DRIVERS)/kontest.o \ $(DRIVERS)/kontest.o \
$(DRIVERS)/konendev.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)/labyrunr.o $(VIDEO)/labyrunr.o \
$(DRIVERS)/lethal.o $(VIDEO)/lethal.o \ $(DRIVERS)/lethal.o $(VIDEO)/lethal.o \
$(DRIVERS)/mainevt.o $(VIDEO)/mainevt.o \ $(DRIVERS)/mainevt.o $(VIDEO)/mainevt.o \