From 917323733c9d68cc9a8c5eaa03aeb5bf38c54c39 Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Sat, 29 Jan 2011 13:24:21 +0000 Subject: [PATCH] ksys573: Hook up part of the i2c communication with the mas3507d. [O. Galibert] --- .gitattributes | 2 + src/emu/sound/mas3507d.c | 278 +++++++++++++++++++++++++++++++++++++ src/emu/sound/mas3507d.h | 82 +++++++++++ src/emu/sound/sound.mak | 10 ++ src/mame/drivers/ksys573.c | 110 +++++++++++---- src/mame/mame.mak | 2 +- 6 files changed, 454 insertions(+), 30 deletions(-) create mode 100644 src/emu/sound/mas3507d.c create mode 100644 src/emu/sound/mas3507d.h diff --git a/.gitattributes b/.gitattributes index d26501c931e..36414434f2b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1021,6 +1021,8 @@ src/emu/sound/k054539.c svneol=native#text/plain src/emu/sound/k054539.h svneol=native#text/plain src/emu/sound/k056800.c svneol=native#text/plain src/emu/sound/k056800.h svneol=native#text/plain +src/emu/sound/mas3507d.c svneol=native#text/plain +src/emu/sound/mas3507d.h svneol=native#text/plain src/emu/sound/mos6560.c svneol=native#text/plain src/emu/sound/mos6560.h svneol=native#text/plain src/emu/sound/msm5205.c svneol=native#text/plain diff --git a/src/emu/sound/mas3507d.c b/src/emu/sound/mas3507d.c new file mode 100644 index 00000000000..c88a3d4e477 --- /dev/null +++ b/src/emu/sound/mas3507d.c @@ -0,0 +1,278 @@ +// +// MAS 3507D MPEG audio decoder +// + +#include "emu.h" +#include "mas3507d.h" + +const device_type MAS3507D = mas3507d_device_config::static_alloc_device_config; + + +mas3507d_device_config::mas3507d_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock) + : device_config(mconfig, static_alloc_device_config, "MAS3507D", tag, owner, clock), + device_config_sound_interface(mconfig, *this) +{ +} + +device_config *mas3507d_device_config::static_alloc_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock) +{ + return global_alloc(mas3507d_device_config(mconfig, tag, owner, clock)); +} + +device_t *mas3507d_device_config::alloc_device(running_machine &machine) const +{ + return auto_alloc(&machine, mas3507d_device(machine, *this)); +} + +mas3507d_device::mas3507d_device(running_machine &machine, const mas3507d_device_config &_config) + : device_t(machine, _config), + device_sound_interface(machine, _config, *this), + config(_config) +{ +} + +void mas3507d_device::device_start() +{ +} + +void mas3507d_device::device_reset() +{ + i2c_scli = i2c_sdai = true; + i2c_sclo = i2c_sdao = true; + i2c_bus_state = IDLE; + i2c_bus_address = UNKNOWN; + i2c_bus_curbit = -1; + i2c_bus_curval = 0; +} + +void mas3507d_device::i2c_scl_w(bool line) +{ + if(line == i2c_scli) + return; + i2c_scli = line; + + if(i2c_scli) { + if(i2c_bus_state == STARTED) { + if(i2c_sdai) + i2c_bus_curval |= 1 << i2c_bus_curbit; + i2c_bus_curbit --; + if(i2c_bus_curbit == -1) { + if(i2c_bus_address == UNKNOWN) { + if(i2c_device_got_address(i2c_bus_curval)) { + i2c_bus_state = ACK; + i2c_bus_address = VALIDATED; + } else { + i2c_bus_state = NAK; + i2c_bus_address = WRONG; + } + } else if(i2c_bus_address == VALIDATED) { + i2c_bus_state = ACK; + i2c_device_got_byte(i2c_bus_curval); + } + } + } else if(i2c_bus_state == ACK) { + i2c_bus_state = ACK2; + i2c_sdao = false; + } + } else { + if(i2c_bus_state == ACK2) { + i2c_bus_state = STARTED; + i2c_bus_curbit = 7; + i2c_bus_curval = 0; + i2c_sdao = true; + } + } +} + +void mas3507d_device::i2c_nak() +{ + assert(i2c_bus_state = ACK); + i2c_bus_state = NAK; +} + +void mas3507d_device::i2c_sda_w(bool line) +{ + if(line == i2c_sdai) + return; + i2c_sdai = line; + + if(i2c_scli) { + if(!i2c_sdai) { + i2c_bus_state = STARTED; + i2c_bus_address = UNKNOWN; + i2c_bus_curbit = 7; + i2c_bus_curval = 0; + } else { + i2c_device_got_stop(); + i2c_bus_state = IDLE; + i2c_bus_address = UNKNOWN; + i2c_bus_curbit = 7; + i2c_bus_curval = 0; + } + } +} + +int mas3507d_device::i2c_scl_r() +{ + return i2c_scli && i2c_sclo; +} + +int mas3507d_device::i2c_sda_r() +{ + return i2c_sdai && i2c_sdao; +} + +bool mas3507d_device::i2c_device_got_address(UINT8 address) +{ + i2c_subdest = UNDEFINED; + return (address & 0xfe) == 0x3a; +} + +void mas3507d_device::i2c_device_got_byte(UINT8 byte) +{ + switch(i2c_subdest) { + case UNDEFINED: + if(byte == 0x68) + i2c_subdest = DATA; + else if(byte == 0x69) + i2c_subdest = DATA; + else if(byte == 0x6a) + i2c_subdest = CONTROL; + else + i2c_subdest = BAD; + i2c_bytecount = 0; + break; + case BAD: + logerror("MAS I2C: Dropping byte %02x\n", byte); + break; + case DATA: + if(!i2c_bytecount) { + switch(byte >> 4) { + case 0: case 1: + i2c_command = CMD_RUN; + i2c_io_adr = byte << 8; + break; + case 3: + i2c_command = CMD_READ_CTRL; + logerror("MAS I2C: READ_CTRL\n"); + break; + case 9: + i2c_io_adr = (byte & 15) << 4; + i2c_command = CMD_WRITE_REG; + break; + case 0xa: case 0xb: + i2c_io_bank = (byte >> 4) & 1; + i2c_command = CMD_WRITE_MEM; + break; + case 0xd: + i2c_command = CMD_READ_REG; + logerror("MAS I2C: READ_REG\n"); + break; + case 0xe: case 0xf: + i2c_io_bank = (byte >> 4) & 1; + i2c_command = CMD_READ_MEM; + logerror("MAS I2C: READ_MEM\n"); + break; + default: + i2c_command = CMD_BAD; + logerror("MAS I2C: BAD\n"); + break; + } + } else { + switch(i2c_command) { + default: + logerror("MAS I2C: Ignoring byte %02x\n", byte); + break; + + case CMD_WRITE_REG: + switch(i2c_bytecount) { + case 1: i2c_io_adr |= byte >> 4; i2c_io_val = byte & 15; break; + case 2: i2c_io_val |= byte << 12; break; + case 3: i2c_io_val |= byte << 4; reg_write(i2c_io_adr, i2c_io_val); break; + case 4: i2c_nak(); return; + } + break; + + case CMD_RUN: + if(i2c_bytecount > 1) { + i2c_nak(); + return; + } + i2c_io_adr |= byte; + run_program(i2c_io_adr); + break; + + case CMD_WRITE_MEM: + switch(i2c_bytecount) { + case 2: i2c_io_count = byte << 8; break; + case 3: i2c_io_count |= byte; break; + case 4: i2c_io_adr = byte << 8; break; + case 5: i2c_io_adr |= byte; break; + } + if(i2c_bytecount >= 6) { + UINT32 i2c_wordid = (i2c_bytecount - 6) >> 2; + UINT32 i2c_offset = (i2c_bytecount - 6) & 3; + if(i2c_wordid >= i2c_io_count) { + i2c_nak(); + return; + } + switch(i2c_offset) { + case 0: i2c_io_val = byte << 8; break; + case 1: i2c_io_val |= byte; break; + case 3: i2c_io_val |= (byte & 15) << 16; mem_write(i2c_io_bank, i2c_io_adr + i2c_wordid, i2c_io_val); break; + } + } + break; + } + } + + i2c_bytecount++; + break; + case CONTROL: + logerror("MAS I2C: Control byte %02x\n", byte); + break; + } +} + +void mas3507d_device::i2c_device_got_stop() +{ + logerror("MAS I2C: got stop\n"); +} + +void mas3507d_device::mem_write(int bank, UINT32 adr, UINT32 val) +{ + switch(adr | (bank ? 0x10000 : 0)) { + case 0x0032f: logerror("MAS3507D: OutputConfig = %05x\n", val); break; + case 0x107f8: logerror("MAS3507D: left->left gain = %05x\n", val); break; + case 0x107f9: logerror("MAS3507D: left->right gain = %05x\n", val); break; + case 0x107fa: logerror("MAS3507D: right->left gain = %05x\n", val); break; + case 0x107fb: logerror("MAS3507D: right->right gain = %05x\n", val); break; + default: logerror("MAS3507D: %d:%04x = %05x\n", bank, adr, val); break; + } +} + +void mas3507d_device::reg_write(UINT32 adr, UINT32 val) +{ + switch(adr) { + case 0x8e: logerror("MAS3507D: DCCF = %05x\n", val); break; + case 0xaa: logerror("MAS3507D: Mute/bypass = %05x\n", val); break; + case 0xe6: logerror("MAS3507D: StartupConfig = %05x\n", val); break; + case 0xe7: logerror("MAS3507D: Kprescale = %05x\n", val); break; + case 0x6b: logerror("MAS3507D: Kbass = %05x\n", val); break; + case 0x6f: logerror("MAS3507D: Ktreble = %05x\n", val); break; + default: logerror("MAS3507D: reg %02x = %05x\n", adr, val); break; + } +} + +void mas3507d_device::run_program(UINT32 adr) +{ + switch(adr) { + case 0xfcb: logerror("MAS3507D: validate OutputConfig\n"); break; + default: logerror("MAS3507D: run %04x\n", adr); break; + } +} + +void mas3507d_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) +{ +} + diff --git a/src/emu/sound/mas3507d.h b/src/emu/sound/mas3507d.h new file mode 100644 index 00000000000..4ca2a6ee612 --- /dev/null +++ b/src/emu/sound/mas3507d.h @@ -0,0 +1,82 @@ +#pragma once + +#ifndef __MAS3507D_H__ +#define __MAS3507D_H__ + +#include "devintrf.h" + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_MAS3507D_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, MAS3507D, 0) + +#define MCFG_MAS3507D_REPLACE(_tag) \ + MCFG_DEVICE_REPLACE(_tag, MAS3507D, 0) + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +struct mas3507d_device_config : public device_config, public device_config_sound_interface +{ + friend class mas3507d_device; + + mas3507d_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock); + +public: + static device_config *static_alloc_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock); + virtual device_t *alloc_device(running_machine &machine) const; +}; + +class mas3507d_device : public device_t, public device_sound_interface +{ + friend class mas3507d_device_config; + + // construction/destruction + mas3507d_device(running_machine &_machine, const mas3507d_device_config &config); + +public: + int i2c_scl_r(); + int i2c_sda_r(); + void i2c_scl_w(bool line); + void i2c_sda_w(bool line); + +protected: + virtual void device_start(); + virtual void device_reset(); + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); + + const mas3507d_device_config &config; + +private: + enum { IDLE, STARTED, NAK, ACK, ACK2 } i2c_bus_state; + enum { UNKNOWN, VALIDATED, WRONG } i2c_bus_address; + + bool i2c_scli, i2c_sclo, i2c_sdai, i2c_sdao; + int i2c_bus_curbit; + UINT8 i2c_bus_curval; + + void i2c_nak(); + bool i2c_device_got_address(UINT8 address); + void i2c_device_got_byte(UINT8 byte); + void i2c_device_got_stop(); + + + enum { UNDEFINED, CONTROL, DATA, BAD } i2c_subdest; + enum { CMD_BAD, CMD_RUN, CMD_READ_CTRL, CMD_WRITE_REG, CMD_WRITE_MEM, CMD_READ_REG, CMD_READ_MEM } i2c_command; + int i2c_bytecount; + UINT32 i2c_io_bank, i2c_io_adr, i2c_io_count, i2c_io_val; + + + void mem_write(int bank, UINT32 adr, UINT32 val); + void run_program(UINT32 adr); + void reg_write(UINT32 adr, UINT32 val); +}; + + +// device type definition +extern const device_type MAS3507D; + +#endif /* __MAS3507D_H__ */ diff --git a/src/emu/sound/sound.mak b/src/emu/sound/sound.mak index c5b60067f6d..c3201a7a3db 100644 --- a/src/emu/sound/sound.mak +++ b/src/emu/sound/sound.mak @@ -280,6 +280,16 @@ endif +#------------------------------------------------- +# MAS 3507D MPEG 1/2 Layer 2/3 Audio Decoder +#------------------------------------------------- + +ifneq ($(filter MAS3507D,$(SOUNDS)),) +SOUNDOBJS += $(SOUNDOBJ)/mas3507d.o +endif + + + #------------------------------------------------- # MOS 6560VIC #------------------------------------------------- diff --git a/src/mame/drivers/ksys573.c b/src/mame/drivers/ksys573.c index 1b0b23af755..b3fb8c81beb 100644 --- a/src/mame/drivers/ksys573.c +++ b/src/mame/drivers/ksys573.c @@ -349,6 +349,7 @@ G: gun mania only, drives air soft gun (this game uses real BB bullet) #include "machine/zs01.h" #include "sound/psx.h" #include "sound/cdda.h" +#include "sound/mas3507d.h" #define VERBOSE_LEVEL ( 0 ) @@ -2137,6 +2138,7 @@ static const UINT8 ds2401_xid[] = 0x3d, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x01 }; + static READ32_HANDLER( gx894pwbba_r ) { ksys573_state *state = space->machine->driver_data(); @@ -2154,11 +2156,11 @@ static READ32_HANDLER( gx894pwbba_r ) } break; case 0x2b: - /* sound? */ if( ACCESSING_BITS_0_15 ) { -// data |= 0x00001000; /* ? */ - data |= 0x00002000; /* ? */ + mas3507d_device *mas3507d = space->machine->device("mpeg"); + data |= mas3507d->i2c_scl_r() << 13; + data |= mas3507d->i2c_sda_r() << 12; } if( ACCESSING_BITS_16_31 ) { @@ -2169,7 +2171,6 @@ static READ32_HANDLER( gx894pwbba_r ) if( ACCESSING_BITS_0_15 ) { data |= state->gx894_ram[ state->gx894_ram_read_offset / 2 ]; -// printf( "reading %08x %04x\r", state->gx894_ram_read_offset, state->gx894_ram[ state->gx894_ram_read_offset / 2 ] ); state->gx894_ram_read_offset += 2; } if( ACCESSING_BITS_16_31 ) @@ -2224,6 +2225,11 @@ static READ32_HANDLER( gx894pwbba_r ) case 0x3d: if( ACCESSING_BITS_16_31 ) { + // fpga/digital board status checks + // wants & c000 = 8000 (just after program upload?) + // write 0000 to +f4.w + // write 8000 to +f6.w + /* fails if !8000 */ /* fails if 4000 */ /* fails if !2000 */ @@ -2290,8 +2296,35 @@ static WRITE32_HANDLER( gx894pwbba_w ) switch( offset ) { + case 0x28: + if(ACCESSING_BITS_0_15) + logerror("FPGA MPEG start address high %04x\n", data); + if(ACCESSING_BITS_16_31) + logerror("FPGA MPEG start address low %04x\n", data >> 16); + break; + case 0x29: + if(ACCESSING_BITS_0_15) + logerror("FPGA MPEG end address high %04x\n", data); + if(ACCESSING_BITS_16_31) + logerror("FPGA MPEG end address low %04x\n", data >> 16); + break; + case 0x2a: + if(ACCESSING_BITS_0_15) + logerror("FPGA MPEG key 1/3 %04x\n", data); + break; case 0x2b: - /* sound? */ + if(ACCESSING_BITS_0_15) { + mas3507d_device *mas3507d = space->machine->device("mpeg"); + mas3507d->i2c_scl_w(data & 0x2000); + mas3507d->i2c_sda_w(data & 0x1000); + } + if( ACCESSING_BITS_16_31 ) + { + logerror("FPGA MPEG control %c%c%c\n", + data & 0x80000000 ? '#' : '.', + data & 0x40000000 ? '#' : '.', + data & 0x20000000 ? '#' : '.'); + } break; case 0x2c: if( ACCESSING_BITS_0_15 ) @@ -2309,7 +2342,6 @@ static WRITE32_HANDLER( gx894pwbba_w ) if( ACCESSING_BITS_0_15 ) { state->gx894_ram[ state->gx894_ram_write_offset / 2 ] = data & 0xffff; -// printf( "writing %08x %04x\r", state->gx894_ram_write_offset, state->gx894_ram[ state->gx894_ram_write_offset / 2 ] ); state->gx894_ram_write_offset += 2; } if( ACCESSING_BITS_16_31 ) @@ -2351,7 +2383,13 @@ static WRITE32_HANDLER( gx894pwbba_w ) } COMBINE_DATA( &state->b ); break; + case 0x3a: + if( ACCESSING_BITS_16_31 ) + logerror("FPGA MPEG key 2/3 %04x\n", data >> 16); + break; case 0x3b: + if( ACCESSING_BITS_0_15 ) + logerror("FPGA MPEG key 3/3 %02x\n", data & 0xff); if( ACCESSING_BITS_16_31 ) { ds2401_write( space->machine, 2, !( ( data >> 28 ) & 1 ) ); @@ -3021,6 +3059,20 @@ static MACHINE_CONFIG_DERIVED( k573bait, konami573 ) MCFG_UPD4701_ADD( "upd4701" ) MACHINE_CONFIG_END + +// Variants with additional digital sound board +static MACHINE_CONFIG_DERIVED( k573d, konami573 ) + MCFG_MAS3507D_ADD( "mpeg" ) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( pccard1d, pccard1 ) + MCFG_MAS3507D_ADD( "mpeg" ) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( pccard2d, pccard2 ) + MCFG_MAS3507D_ADD( "mpeg" ) +MACHINE_CONFIG_END + static INPUT_PORTS_START( konami573 ) PORT_START("IN0") PORT_BIT( 0xffffffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -4513,48 +4565,48 @@ GAME( 1999, gtrfrk2m, sys573, pccard1, gtrfrks, gtrfrks, ROT0, "Konami" GAME( 1999, dsftkd, sys573, konami573, ddr, ddr, ROT0, "Konami", "Dancing Stage featuring TRUE KiSS DESTiNATiON (G*884 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, cr589fw, sys573, konami573, konami573, konami573, ROT0, "Konami", "CD-ROM Drive Updater 2.0 (700B04)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, cr589fwa, sys573, konami573, konami573, konami573, ROT0, "Konami", "CD-ROM Drive Updater (700A04)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 2000, ddr3mk, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 2000, ddr3mka, ddr3mk, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 1999, ddr3ma, ddr3mk, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.1 */ -GAME( 1999, ddr3mj, ddr3mk, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.0 */ +GAME( 2000, ddr3mk, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 2000, ddr3mka, ddr3mk, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 1999, ddr3ma, ddr3mk, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.1 */ +GAME( 1999, ddr3mj, ddr3mk, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.0 */ GAME( 1999, ddrsbm, sys573, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution Solo Bass Mix (GQ894 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) GAME( 1999, ddrs2k, sys573, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ GAME( 1999, ddrs2kj, ddrs2k, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.2 */ GAME( 1999, hyperbbc, sys573, konami573, hyperbbc, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GX908 1999/08/24 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, hyperbbck,hyperbbc, konami573, hyperbbc, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GX908 1999/08/24 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1999, dsfdct, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) +GAME( 1999, dsfdct, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) GAME( 1999, dsfdcta, dsfdct, pccard2, ddr, ddr, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1999, drmn2m, sys573, konami573, drmn, drmndigital,ROT0, "Konami", "DrumMania 2nd Mix (GE912 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.5 */ -GAME( 1999, drmn2mpu, drmn2m, konami573, drmn, drmndigital,ROT0, "Konami", "DrumMania 2nd Mix Session Power Up Kit (GE912 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.5 */ +GAME( 1999, drmn2m, sys573, k573d, drmn, drmndigital,ROT0, "Konami", "DrumMania 2nd Mix (GE912 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.5 */ +GAME( 1999, drmn2mpu, drmn2m, k573d, drmn, drmndigital,ROT0, "Konami", "DrumMania 2nd Mix Session Power Up Kit (GE912 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.5 */ GAME( 2000, dncfrks, sys573, konami573, dmx, dmx, ROT0, "Konami", "Dance Freaks (G*874 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.6 */ GAME( 2000, dmx, dncfrks, konami573, dmx, dmx, ROT0, "Konami", "Dance Maniax (G*874 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.6 */ -GAME( 2000, dsem, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Euro Mix (G*936 VER. EAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.7 */ +GAME( 2000, dsem, sys573, k573d, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Euro Mix (G*936 VER. EAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.7 */ GAME( 2000, gtrfrk3m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAC)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ GAME( 2000, gtfrk3ma, gtrfrk3m, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ GAME( 2000, gtfrk3mb, gtrfrk3m, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix - security cassette versionup (949JAZ02)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ GAME( 2000, salarymc, sys573, konami573, hyperbbc, salarymc, ROT0, "Konami", "Salary Man Champ (GCA18 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 2000, ddr3mp, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.6 */ +GAME( 2000, ddr3mp, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.6 */ GAME( 2000, pcnfrk3m, sys573, konami573, drmn, drmndigital,ROT0, "Konami", "Percussion Freaks 3rd Mix (G*A23 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, drmn3m, pcnfrk3m, konami573, drmn, drmndigital,ROT0, "Konami", "DrumMania 3rd Mix (G*A23 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, gtrfrk4m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 4th Mix (G*A24 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4m, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4mj, ddr4m, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4m, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4mj, ddr4m, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, ddr4ms, sys573, pccard2, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, ddr4msj, ddr4ms, pccard2, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, dsfdr, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddrusa, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution USA (G*A44 VER. UAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4mp, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2000, dsfdr, sys573, k573d, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddrusa, sys573, k573d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution USA (G*A44 VER. UAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4mp, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2000, ddr4mps, sys573, pccard2, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2000, dmx2m, sys573, konami573, dmx, dmx, ROT0, "Konami", "Dance Maniax 2nd Mix (G*A39 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2000, fmania, sys573, konami573, konami573, konami573, ROT0, "Konami", "Fighting Mania (918 xx B02)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) -GAME( 2001, gtrfrk5m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 5th Mix (G*A26 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, ddr5m, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, gtrfrk5m, sys573, pccard1d, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 5th Mix (G*A26 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, ddr5m, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2001, dmx2majp, sys573, konami573, dmx, dmx, ROT0, "Konami", "Dance Maniax 2nd Mix Append J-Paradise (G*A38 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2001, mamboagg, sys573, konami573, mamboagg, mamboagg, ROT0, "Konami", "Mambo A Go-Go (GQA40 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2001, gtrfrk6m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 6th Mix (G*B06 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, gtrfrk7m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 7th Mix (G*B17 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2001, ddrmax, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "DDR Max - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2002, ddrmax2, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "DDR Max 2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2002, dsem2, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, ddrextrm, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2004, gtfrk11m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 11th Mix (G*D39 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2001, gtrfrk6m, sys573, pccard1d, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 6th Mix (G*B06 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, gtrfrk7m, sys573, pccard1d, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 7th Mix (G*B17 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2001, ddrmax, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "DDR Max - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2002, ddrmax2, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "DDR Max 2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2002, dsem2, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, ddrextrm, sys573, pccard2d, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2004, gtfrk11m, sys573, pccard1d, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 11th Mix (G*D39 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ diff --git a/src/mame/mame.mak b/src/mame/mame.mak index 8c8fdcffee7..7a6dbd82166 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -225,7 +225,7 @@ SOUNDS += ZSG2 SOUNDS += MOS656X SOUNDS += S2636 SOUNDS += ASC - +SOUNDS += MAS3507D #-------------------------------------------------