ksys573: Hook up part of the i2c communication with the mas3507d. [O. Galibert]

This commit is contained in:
Angelo Salese 2011-01-29 13:24:21 +00:00
parent 380925dc14
commit 917323733c
6 changed files with 454 additions and 30 deletions

2
.gitattributes vendored
View File

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

278
src/emu/sound/mas3507d.c Normal file
View File

@ -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)
{
}

82
src/emu/sound/mas3507d.h Normal file
View File

@ -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__ */

View File

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

View File

@ -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<ksys573_state>();
@ -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<mas3507d_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<mas3507d_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 */

View File

@ -225,7 +225,7 @@ SOUNDS += ZSG2
SOUNDS += MOS656X
SOUNDS += S2636
SOUNDS += ASC
SOUNDS += MAS3507D
#-------------------------------------------------