From 80f3318e7c5e19237dafa4afbf968856a3a94579 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 1 Jul 2022 06:58:38 +1000 Subject: konami/ksys573.cpp: Untangled some stuff from the base state (should address the issue #8890 attempts to solve). --- src/mame/konami/ksys573.cpp | 553 +++++++++++++++++++++++++------------------- 1 file changed, 317 insertions(+), 236 deletions(-) diff --git a/src/mame/konami/ksys573.cpp b/src/mame/konami/ksys573.cpp index 4b7e3dd9ce3..53d04641a9d 100644 --- a/src/mame/konami/ksys573.cpp +++ b/src/mame/konami/ksys573.cpp @@ -389,6 +389,15 @@ Notes: (all ICs shown) */ #include "emu.h" + +#include "k573cass.h" +#include "k573dio.h" +#include "k573kara.h" +#include "k573mcal.h" +#include "k573mcr.h" +#include "k573msu.h" +#include "k573npu.h" + #include "cpu/psx/psx.h" #include "bus/ata/ataintf.h" #include "bus/ata/cr589.h" @@ -397,13 +406,6 @@ Notes: (all ICs shown) #include "machine/ds2401.h" #include "machine/jvshost.h" #include "machine/linflash.h" -#include "k573cass.h" -#include "k573dio.h" -#include "k573mcal.h" -#include "k573mcr.h" -#include "k573msu.h" -#include "k573npu.h" -#include "k573kara.h" #include "machine/mb89371.h" #include "machine/ram.h" #include "machine/timekpr.h" @@ -411,11 +413,15 @@ Notes: (all ICs shown) #include "sound/spu.h" #include "sound/cdda.h" #include "video/psx.h" -#include "cdrom.h" + #include "romload.h" #include "screen.h" #include "speaker.h" +#include "cdrom.h" + +#include + #include "pnchmn.lh" #define LOG_GENERAL (1 << 0) @@ -429,8 +435,6 @@ Notes: (all ICs shown) #include "logmacro.h" -#include - #define LOGCDROM(...) LOGMASKED(LOG_CDROM, __VA_ARGS__) #define LOGCONTROL(...) LOGMASKED(LOG_CONTROL, __VA_ARGS__) #define LOGSECURITY(...) LOGMASKED(LOG_SECURITY, __VA_ARGS__) @@ -518,12 +522,17 @@ void sys573_jvs_host::send_packet(uint8_t *data, int length) } +namespace { + class ksys573_state : public driver_device { public: - ksys573_state( const machine_config &mconfig, device_type type, const char *tag ) : + ksys573_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_pads(*this, "PADS"), + m_maincpu(*this, "maincpu"), + m_sys573_jvs_host(*this, "sys573_jvs_host"), + m_k573dio(*this, "k573dio"), + m_lamps(*this, "lamp%u", 0U), m_analog0(*this, "analog0"), m_analog1(*this, "analog1"), m_analog2(*this, "analog2"), @@ -534,7 +543,6 @@ public: m_pccard1(*this, "pccard1"), m_pccard2(*this, "pccard2"), m_h8_response(*this, "h8_response"), - m_maincpu(*this, "maincpu"), m_ram(*this, "maincpu:ram"), m_flashbank(*this, "flashbank"), m_in2(*this, "IN2"), @@ -542,7 +550,6 @@ public: m_out2(*this, "OUT2"), m_cd(*this, "CD"), m_upd4701(*this, "upd4701"), - m_stage(*this, "STAGE"), m_gunx(*this, "GUNX"), m_sensor(*this, "SENSOR"), m_encoder(*this, "ENCODER"), @@ -550,9 +557,7 @@ public: m_kicksensor2(*this, "KICK_SENSOR2"), m_kicksensor3(*this, "KICK_SENSOR3"), m_ds2401_id(*this, "ds2401_id"), - m_duart(*this, "mb89371"), - m_lamps(*this, "lamp%u", 0U), - m_sys573_jvs_host(*this, "sys573_jvs_host") + m_duart(*this, "mb89371") { } void drmn9m(machine_config &config); @@ -560,19 +565,10 @@ public: void gtfrk10m(machine_config &config); void gtfrk11m(machine_config &config); void gtfrk10mb(machine_config &config); - void ddr(machine_config &config); - void ddrk(machine_config &config); - void pnchmn(machine_config &config); void gtrfrk7m(machine_config &config); - void ddr3m(machine_config &config); void hyperbbc(machine_config &config); - void pnchmn2(machine_config &config); - void ddrsolo(machine_config &config); + [[maybe_unused]] void ddrsolo(machine_config &config); void ddrsbm(machine_config &config); - void ddr3mp(machine_config &config); - void dsftkd(machine_config &config); - void dsfdct(machine_config &config); - void dsfdcta(machine_config &config); void mamboagga(machine_config &config); void gunmania(machine_config &config); void hypbbc2p(machine_config &config); @@ -584,24 +580,16 @@ public: void animechmp(machine_config &config); void salarymc(machine_config &config); void gbbchmp(machine_config &config); - void ddr2mc2(machine_config &config); - void ddr2ml(machine_config &config); - void ddrbocd(machine_config &config); void konami573(machine_config &config); void drmn2m(machine_config &config); void gtrfrk3m(machine_config &config); void mamboagg(machine_config &config); void gtrfrks(machine_config &config); void gchgchmp(machine_config &config); - void ddr5m(machine_config &config); void drmn4m(machine_config &config); void fbaitbc(machine_config &config); void ddr4ms(machine_config &config); - void dsfdr(machine_config &config); void konami573x(machine_config &config); - void ddrusa(machine_config &config); - void dsem(machine_config &config); - void dsem2(machine_config &config); void dmx(machine_config &config); void drmn(machine_config &config); void kicknkick(machine_config &config); @@ -622,12 +610,9 @@ public: void cassxzi(machine_config &config); void init_serlamp(); - void init_pnchmn(); - void init_ddr(); void init_hyperbbc(); void init_drmn(); - DECLARE_CUSTOM_INPUT_MEMBER( gn845pwbb_read ); DECLARE_READ_LINE_MEMBER( gunmania_tank_shutter_sensor ); DECLARE_READ_LINE_MEMBER( gunmania_cable_holder_sensor ); @@ -666,16 +651,23 @@ public: DECLARE_READ_LINE_MEMBER( jvs_rx_r ); - double m_pad_position[ 6 ] = { 0 }; - int m_pad_motor_direction[ 6 ] = { 0 }; - attotime m_last_pad_update; - optional_ioport m_pads; - protected: - virtual void machine_start() override { m_lamps.resolve(); } + using gx700pwfbf_output_delegate = delegate; + + virtual void machine_start() override; virtual void machine_reset() override; virtual void driver_start() override; + void gx700pwfbf_init(gx700pwfbf_output_delegate &&output_callback_func); + + void konami573a_map(address_map &map); + + required_device m_maincpu; + required_device m_sys573_jvs_host; + optional_device m_k573dio; + + output_finder<2> m_lamps; + private: bool jvs_is_valid_packet(); @@ -700,19 +692,16 @@ private: DECLARE_WRITE_LINE_MEMBER( ata_interrupt ); TIMER_CALLBACK_MEMBER( atapi_xfer_end ); - void ddr_output_callback(offs_t offset, uint8_t data); void ddrsolo_output_callback(offs_t offset, uint8_t data); void drmn_output_callback(offs_t offset, uint8_t data); void dmx_output_callback(offs_t offset, uint8_t data); void mamboagg_output_callback(offs_t offset, uint8_t data); - void punchmania_output_callback(offs_t offset, uint8_t data); double analogue_inputs_callback(uint8_t input); void cdrom_dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size ); void cdrom_dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size ); DECLARE_WRITE_LINE_MEMBER( sys573_vblank ); - void punchmania_cassette_install(device_t *device); void stepchmp_cassette_install(device_t* device); void animechmp_cassette_install(device_t *device); void salarymc_cassette_install(device_t *device); @@ -725,7 +714,6 @@ private: void gunmania_map(address_map &map); void gbbchmp_map(address_map &map); void konami573_map(address_map &map); - void konami573a_map(address_map &map); void konami573ak_map(address_map &map); void konami573d_map(address_map &map); void konami573k_map(address_map &map); @@ -737,9 +725,6 @@ private: void update_disc(); void gx700pwbf_output( int offset, uint8_t data ); - void gx700pwfbf_init( void ( ksys573_state::*output_callback_func )( offs_t offset, uint8_t data ) ); - void gn845pwbb_do_w( int offset, int data ); - void gn845pwbb_clk_w( int offset, int data ); required_device m_psxirq; @@ -760,17 +745,7 @@ private: int m_h8_clk; uint8_t m_gx700pwbf_output_data[ 4 ]; - void ( ksys573_state::*m_gx700pwfbf_output_callback )( offs_t offset, uint8_t data ); - - uint32_t m_stage_mask; - struct - { - int DO = 0; - int clk = 0; - int shift = 0; - int state = 0; - int bit = 0; - } m_stage_state[ 2 ]; + gx700pwfbf_output_delegate m_gx700pwfbf_output_callback; int m_serial_lamp_bits; int m_serial_lamp_shift; @@ -795,7 +770,6 @@ private: uint8_t m_jvs_input_buffer[512]; uint8_t m_jvs_output_buffer[512]; - required_device m_maincpu; required_device m_ram; required_device m_flashbank; required_ioport m_in2; @@ -803,7 +777,6 @@ private: required_ioport m_out2; required_ioport m_cd; optional_device m_upd4701; - optional_ioport m_stage; optional_ioport m_gunx; optional_ioport m_sensor; optional_ioport m_encoder; @@ -812,11 +785,100 @@ private: optional_ioport m_kicksensor3; optional_device m_ds2401_id; optional_device m_duart; - output_finder<2> m_lamps; +}; - required_device m_sys573_jvs_host; + +class ddr_state : public ksys573_state +{ +public: + ddr_state(const machine_config &mconfig, device_type type, const char *tag) : + ksys573_state(mconfig, type, tag), + m_stage(*this, "STAGE") + { + } + + // DDR analog + void ddr(machine_config &config); + void ddrk(machine_config &config); + void ddr2mc2(machine_config &config); + void ddr2ml(machine_config &config); + void ddrbocd(machine_config &config); + + // DDR digital + void ddr3m(machine_config &config); + void ddr3mp(machine_config &config); + void ddrusa(machine_config &config); + void ddr5m(machine_config &config); + + // Dancing Stage analog + void dsfdcta(machine_config &config); + void dsftkd(machine_config &config); + + // Dancing Stage digital + void dsfdct(machine_config &config); + void dsfdr(machine_config &config); + void dsem(machine_config &config); + void dsem2(machine_config &config); + + DECLARE_CUSTOM_INPUT_MEMBER( gn845pwbb_read ); + + void init_ddr(); + +protected: + virtual void machine_start() override; + +private: + struct stage_state + { + int DO = 0; + int clk = 0; + int shift = 0; + int state = 0; + int bit = 0; + }; + + void ddr_output_callback(offs_t offset, uint8_t data); + + void gn845pwbb_do_w(int offset, int data); + void gn845pwbb_clk_w(int offset, int data); + + required_ioport m_stage; + + uint32_t m_stage_mask; + stage_state m_stage_state[2]; }; + +class pnchmn_state : public ksys573_state +{ +public: + pnchmn_state(const machine_config &mconfig, device_type type, const char *tag) : + ksys573_state(mconfig, type, tag), + m_pads(*this, "PADS") + { + } + + void pnchmn(machine_config &config); + void pnchmn2(machine_config &config); + + void init_pnchmn(); + + // FIXME: leaking because a konami573_cassette_xi_device member uses it + double m_pad_position[6] = { }; + int m_pad_motor_direction[6] = { }; + attotime m_last_pad_update; + required_ioport m_pads; + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + void punchmania_cassette_install(device_t *device); + void punchmania_output_callback(offs_t offset, uint8_t data); +}; + + void ksys573_state::konami573_map(address_map &map) { map(0x1f000000, 0x1f3fffff).m(m_flashbank, FUNC(address_map_bank_device::amap16)); @@ -852,7 +914,7 @@ void ksys573_state::flashbank_map(address_map &map) void ksys573_state::konami573d_map(address_map &map) { konami573_map(map); - map(0x1f640000, 0x1f6400ff).m("k573dio", FUNC(k573dio_device::amap)); + map(0x1f640000, 0x1f6400ff).m(m_k573dio, FUNC(k573dio_device::amap)); } void ksys573_state::konami573k_map(address_map &map) @@ -1120,6 +1182,11 @@ void ksys573_state::driver_start() m_h8_index = 0; } +void ksys573_state::machine_start() +{ + m_lamps.resolve(); +} + void ksys573_state::machine_reset() { update_disc(); @@ -1135,10 +1202,6 @@ void ksys573_state::machine_reset() std::fill_n( m_jvs_input_buffer, sizeof( m_jvs_input_buffer ), 0 ); std::fill_n( m_jvs_output_buffer, sizeof( m_jvs_output_buffer ), 0 ); - - std::fill( std::begin( m_pad_position ), std::end( m_pad_position ), 0 ); - std::fill( std::begin( m_pad_motor_direction ), std::end( m_pad_motor_direction ), 0 ); - m_last_pad_update = machine().time(); } WRITE_LINE_MEMBER(ksys573_state::sys573_vblank) @@ -1281,7 +1344,7 @@ uint16_t ksys573_state::gx700pwbf_io_r(offs_t offset, uint16_t mem_mask) void ksys573_state::gx700pwbf_output( int offset, uint8_t data ) { - if( m_gx700pwfbf_output_callback != nullptr ) + if( !m_gx700pwfbf_output_callback.isnull() ) { int i; static const int shift[] = { 7, 6, 1, 0, 5, 4, 3, 2 }; @@ -1291,7 +1354,7 @@ void ksys573_state::gx700pwbf_output( int offset, uint8_t data ) int newbit = ( data >> shift[ i ] ) & 1; if( oldbit != newbit ) { - ( this->*m_gx700pwfbf_output_callback )( ( offset * 8 ) + i, newbit ); + m_gx700pwfbf_output_callback( ( offset * 8 ) + i, newbit ); } } } @@ -1326,13 +1389,13 @@ void ksys573_state::gx700pwbf_io_w(offs_t offset, uint16_t data, uint16_t mem_ma } } -void ksys573_state::gx700pwfbf_init( void ( ksys573_state::*output_callback_func )( offs_t offset, uint8_t data ) ) +void ksys573_state::gx700pwfbf_init(gx700pwfbf_output_delegate &&output_callback_func) { - std::fill_n( m_gx700pwbf_output_data, sizeof( m_gx700pwbf_output_data ), 0); + std::fill_n(m_gx700pwbf_output_data, std::size(m_gx700pwbf_output_data), 0); - m_gx700pwfbf_output_callback = output_callback_func; + m_gx700pwfbf_output_callback = std::move(output_callback_func); - save_item( NAME( m_gx700pwbf_output_data ) ); + save_item(NAME(m_gx700pwbf_output_data )); } /* @@ -1396,12 +1459,12 @@ static const int mask[] = 0, 4, 0, 6 }; -void ksys573_state::gn845pwbb_do_w( int offset, int data ) +void ddr_state::gn845pwbb_do_w( int offset, int data ) { m_stage_state[ offset ].DO = !data; } -void ksys573_state::gn845pwbb_clk_w( int offset, int data ) +void ddr_state::gn845pwbb_clk_w( int offset, int data ) { int clk = !data; @@ -1449,12 +1512,12 @@ void ksys573_state::gn845pwbb_clk_w( int offset, int data ) m_stage_state[ offset ].state, m_stage_state[ offset ].DO, m_stage_state[ offset ].shift, m_stage_state[ offset ].bit, m_stage_mask ); } -CUSTOM_INPUT_MEMBER( ksys573_state::gn845pwbb_read ) +CUSTOM_INPUT_MEMBER( ddr_state::gn845pwbb_read ) { return m_stage->read() & m_stage_mask; } -void ksys573_state::ddr_output_callback(offs_t offset, uint8_t data) +void ddr_state::ddr_output_callback(offs_t offset, uint8_t data) { switch( offset ) { @@ -1541,12 +1604,18 @@ void ksys573_state::ddr_output_callback(offs_t offset, uint8_t data) } } -void ksys573_state::init_ddr() +void ddr_state::machine_start() { + ksys573_state::machine_start(); + m_stage_mask = 0xffffffff; - gx700pwfbf_init( &ksys573_state::ddr_output_callback ); - save_item( NAME( m_stage_mask ) ); + save_item(NAME(m_stage_mask)); +} + +void ddr_state::init_ddr() +{ + gx700pwfbf_init(gx700pwfbf_output_delegate(&ddr_state::ddr_output_callback, this)); } /* Guitar freaks */ @@ -1694,7 +1763,7 @@ void ksys573_state::drmn_output_callback(offs_t offset, uint8_t data) void ksys573_state::init_drmn() { - gx700pwfbf_init( &ksys573_state::drmn_output_callback ); + gx700pwfbf_init(gx700pwfbf_output_delegate(&ksys573_state::drmn_output_callback, this)); } /* dance maniax */ @@ -2156,72 +2225,14 @@ WRITE_LINE_MEMBER( ksys573_state::mamboagg_lamps_b5 ) /* punch mania */ -double konami573_cassette_xi_device::punchmania_inputs_callback(uint8_t input) -{ - // The values 50 and 150 come from the game's internal I/O simulation mode. - // Set DIPSW 2 ("Screen Flip") to ON and press select left + start on the I/O test screen to see the simulated I/O in action. - constexpr double POT_MIN = 50; - constexpr double POT_MAX = 150; - constexpr double POT_RANGE = POT_MAX - POT_MIN; - constexpr int MOTOR_SPEED_MUL = 2; - - ksys573_state *state = machine().driver_data(); - double *pad_position = state->m_pad_position; - int *pad_motor_direction = state->m_pad_motor_direction; - int pads = state->m_pads->read(); - attotime curtime = machine().time(); - double elapsed = ( curtime - state->m_last_pad_update ).as_double(); - double diff = POT_RANGE * elapsed * MOTOR_SPEED_MUL; - - for( int i = 0; i < 6; i++ ) - { - if( BIT( pads, i ) ) - { - pad_position[ i ] = POT_MIN; - } - else - { - pad_position[ i ] = std::clamp( pad_position[ i ] + ( diff * pad_motor_direction[ i ] ), POT_MIN, POT_MAX ); - } - } - - machine().output().set_value( "left top pad", pad_position[ 0 ] ); - machine().output().set_value( "left middle pad", pad_position[ 1 ] ); - machine().output().set_value( "left bottom pad", pad_position[ 2 ] ); - machine().output().set_value( "right top pad", pad_position[ 3 ] ); - machine().output().set_value( "right middle pad", pad_position[ 4 ] ); - machine().output().set_value( "right bottom pad", pad_position[ 5 ] ); - - state->m_last_pad_update = curtime; - - switch( input ) - { - case ADC083X_CH0: /* Left Top */ - case ADC083X_CH1: /* Left Middle */ - case ADC083X_CH2: /* Left Bottom */ - case ADC083X_CH3: /* Right Top */ - case ADC083X_CH4: /* Right Middle */ - case ADC083X_CH5: /* Right Bottom */ - return 5.0 - ( 5.0 * ( pad_position[ input ] / 255.0 ) ); - case ADC083X_COM: - return 0; - case ADC083X_VREF: - return 5; - } - return 5; -} - - -void ksys573_state::punchmania_cassette_install(device_t *device) +void pnchmn_state::punchmania_cassette_install(device_t *device) { auto game = downcast(device); auto adc0838 = device->subdevice("adc0838"); adc0838->set_input_callback(*game, FUNC(konami573_cassette_xi_device::punchmania_inputs_callback)); } -int pad_light[ 6 ]; - -void ksys573_state::punchmania_output_callback(offs_t offset, uint8_t data) +void pnchmn_state::punchmania_output_callback(offs_t offset, uint8_t data) { switch( offset ) { @@ -2229,30 +2240,24 @@ void ksys573_state::punchmania_output_callback(offs_t offset, uint8_t data) output().set_value( "select left right", !data ); break; case 9: - pad_light[ 2 ] = !data; output().set_value( "left bottom lamp", !data ); break; case 10: - pad_light[ 1 ] = !data; output().set_value( "left middle lamp", !data ); break; case 11: output().set_value( "start lamp", !data ); break; case 12: - pad_light[ 0 ] = !data; output().set_value( "left top lamp", !data ); break; case 13: - pad_light[ 4 ] = !data; output().set_value( "right middle lamp", !data ); break; case 14: - pad_light[ 3 ] = !data; output().set_value( "right top lamp", !data ); break; case 15: - pad_light[ 5 ] = !data; output().set_value( "right bottom lamp", !data ); break; case 16: @@ -2294,12 +2299,28 @@ void ksys573_state::punchmania_output_callback(offs_t offset, uint8_t data) } } -void ksys573_state::init_pnchmn() +void pnchmn_state::machine_start() { - gx700pwfbf_init( &ksys573_state::punchmania_output_callback ); + ksys573_state::machine_start(); + + std::fill(std::begin(m_pad_position), std::end(m_pad_position), 0.0); + std::fill(std::begin(m_pad_motor_direction), std::end(m_pad_motor_direction), 0); - save_item( NAME( m_pad_position ) ); - save_item( NAME( m_pad_motor_direction ) ); + save_item(NAME(m_pad_position)); + save_item(NAME(m_pad_motor_direction)); +} + +void pnchmn_state::machine_reset() +{ + ksys573_state::machine_reset(); + + std::fill(std::begin(m_pad_motor_direction), std::end(m_pad_motor_direction), 0); + m_last_pad_update = machine().time(); +} + +void pnchmn_state::init_pnchmn() +{ + gx700pwfbf_init(gx700pwfbf_output_delegate(&pnchmn_state::punchmania_output_callback, this)); } /* GunMania */ @@ -2527,7 +2548,7 @@ void ksys573_state::k573d(machine_config &config) { konami573(config); m_maincpu->set_addrmap(AS_PROGRAM, &ksys573_state::konami573d_map); - KONAMI_573_DIGITAL_IO_BOARD(config, "k573dio", XTAL(19'660'800)); + KONAMI_573_DIGITAL_IO_BOARD(config, m_k573dio, XTAL(19'660'800)); } // Variants with additional karaoke I/O board @@ -2632,19 +2653,19 @@ void ksys573_state::cassxzi(machine_config &config) // Dance Dance Revolution -void ksys573_state::ddr(machine_config &config) +void ddr_state::ddr(machine_config &config) { k573a(config); cassx(config); } -void ksys573_state::ddrk(machine_config &config) +void ddr_state::ddrk(machine_config &config) { k573k(config); cassxi(config); } -void ksys573_state::ddr2mc2(machine_config &config) +void ddr_state::ddr2mc2(machine_config &config) { k573a(config); cassx(config); @@ -2652,7 +2673,7 @@ void ksys573_state::ddr2mc2(machine_config &config) KONAMI_573_MEMORY_CARD_READER(config, "k573mcr", 0, m_sys573_jvs_host); } -void ksys573_state::ddr2ml(machine_config &config) +void ddr_state::ddr2ml(machine_config &config) { k573a(config); pccard1_16mb(config); @@ -2661,17 +2682,17 @@ void ksys573_state::ddr2ml(machine_config &config) KONAMI_573_MEMORY_CARD_READER(config, "k573mcr", 0, m_sys573_jvs_host); } -void ksys573_state::ddrbocd(machine_config &config) +void ddr_state::ddrbocd(machine_config &config) { k573a(config); pccard1_16mb(config); cassx(config); } -void ksys573_state::ddr3m(machine_config &config) +void ddr_state::ddr3m(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddr_output_callback)); + m_k573dio->output_callback().set(FUNC(ddr_state::ddr_output_callback)); pccard2_32mb(config); cassyyi(config); @@ -2679,10 +2700,10 @@ void ksys573_state::ddr3m(machine_config &config) KONAMI_573_MEMORY_CARD_READER(config, "k573mcr", 0, m_sys573_jvs_host); } -void ksys573_state::ddr3mp(machine_config &config) +void ddr_state::ddr3mp(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddr_output_callback)); + m_k573dio->output_callback().set(FUNC(ddr_state::ddr_output_callback)); pccard2_32mb(config); cassxzi(config); @@ -2690,18 +2711,18 @@ void ksys573_state::ddr3mp(machine_config &config) KONAMI_573_MEMORY_CARD_READER(config, "k573mcr", 0, m_sys573_jvs_host); } -void ksys573_state::ddrusa(machine_config &config) +void ddr_state::ddrusa(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddr_output_callback)); + m_k573dio->output_callback().set(FUNC(ddr_state::ddr_output_callback)); casszi(config); } -void ksys573_state::ddr5m(machine_config &config) +void ddr_state::ddr5m(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddr_output_callback)); + m_k573dio->output_callback().set(FUNC(ddr_state::ddr_output_callback)); pccard2_32mb(config); casszi(config); @@ -2711,48 +2732,48 @@ void ksys573_state::ddr5m(machine_config &config) // Dancing Stage -void ksys573_state::dsfdct(machine_config &config) +void ddr_state::dsfdct(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddr_output_callback)); + m_k573dio->output_callback().set(FUNC(ddr_state::ddr_output_callback)); pccard2_32mb(config); cassyyi(config); } -void ksys573_state::dsfdcta(machine_config &config) +void ddr_state::dsfdcta(machine_config &config) { k573a(config); pccard2_32mb(config); cassyyi(config); } -void ksys573_state::dsftkd(machine_config &config) +void ddr_state::dsftkd(machine_config &config) { k573a(config); cassyi(config); } -void ksys573_state::dsfdr(machine_config &config) +void ddr_state::dsfdr(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddr_output_callback)); + m_k573dio->output_callback().set(FUNC(ddr_state::ddr_output_callback)); cassxzi(config); } -void ksys573_state::dsem(machine_config &config) +void ddr_state::dsem(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddr_output_callback)); + m_k573dio->output_callback().set(FUNC(ddr_state::ddr_output_callback)); cassxi(config); } -void ksys573_state::dsem2(machine_config &config) +void ddr_state::dsem2(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddr_output_callback)); + m_k573dio->output_callback().set(FUNC(ddr_state::ddr_output_callback)); pccard2_32mb(config); casszi(config); @@ -2763,7 +2784,7 @@ void ksys573_state::dsem2(machine_config &config) void ksys573_state::ddrsolo(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddrsolo_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::ddrsolo_output_callback)); cassyi(config); } @@ -2771,8 +2792,8 @@ void ksys573_state::ddrsolo(machine_config &config) void ksys573_state::ddrsbm(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddrsolo_output_callback)); - subdevice("k573dio")->set_ddrsbm_fpga(true); + m_k573dio->output_callback().set(FUNC(ksys573_state::ddrsolo_output_callback)); + m_k573dio->set_ddrsbm_fpga(true); cassyi(config); } @@ -2780,7 +2801,7 @@ void ksys573_state::ddrsbm(machine_config &config) void ksys573_state::ddrs2k(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddrsolo_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::ddrsolo_output_callback)); cassyyi(config); } @@ -2788,7 +2809,7 @@ void ksys573_state::ddrs2k(machine_config &config) void ksys573_state::ddr4ms(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::ddrsolo_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::ddrsolo_output_callback)); pccard2_32mb(config); cassxzi(config); @@ -2807,7 +2828,7 @@ void ksys573_state::drmn(machine_config &config) void ksys573_state::drmn2m(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); cassxzi(config); } @@ -2815,7 +2836,7 @@ void ksys573_state::drmn2m(machine_config &config) void ksys573_state::drmn4m(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); casszi(config); @@ -2825,7 +2846,7 @@ void ksys573_state::drmn4m(machine_config &config) void ksys573_state::drmn9m(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); casszi(config); @@ -2835,7 +2856,7 @@ void ksys573_state::drmn9m(machine_config &config) void ksys573_state::drmn10m(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::drmn_output_callback)); casszi(config); @@ -2987,11 +3008,11 @@ void ksys573_state::gchgchmp(machine_config &config) cassx(config); } -void ksys573_state::pnchmn(machine_config &config) +void pnchmn_state::pnchmn(machine_config &config) { konami573(config); - m_maincpu->set_addrmap(AS_PROGRAM, &ksys573_state::konami573a_map); + m_maincpu->set_addrmap(AS_PROGRAM, &pnchmn_state::konami573a_map); cassxi(config); pccard1_32mb(config); @@ -2999,7 +3020,7 @@ void ksys573_state::pnchmn(machine_config &config) subdevice("cassette")->set_option_machine_config( "game", [this] (device_t *device) { punchmania_cassette_install(device); } ); } -void ksys573_state::pnchmn2(machine_config &config) +void pnchmn_state::pnchmn2(machine_config &config) { pnchmn(config); pccard2_64mb(config); @@ -3017,7 +3038,7 @@ void ksys573_state::gunmania(machine_config &config) void ksys573_state::dmx(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::dmx_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::dmx_output_callback)); casszi(config); } @@ -3025,7 +3046,7 @@ void ksys573_state::dmx(machine_config &config) void ksys573_state::mamboagg(machine_config &config) { k573d(config); - subdevice("k573dio")->output_callback().set(FUNC(ksys573_state::mamboagg_output_callback)); + m_k573dio->output_callback().set(FUNC(ksys573_state::mamboagg_output_callback)); casszi(config); } @@ -3186,7 +3207,7 @@ static INPUT_PORTS_START( ddr ) PORT_INCLUDE( konami573 ) PORT_MODIFY( "IN2" ) - PORT_BIT( 0x00000f0f, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER( ksys573_state, gn845pwbb_read ) + PORT_BIT( 0x00000f0f, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER( ddr_state, gn845pwbb_read ) PORT_START( "STAGE" ) PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_PLAYER( 1 ) @@ -3236,7 +3257,7 @@ static INPUT_PORTS_START( ddrkara ) PORT_MODIFY("IN2") PORT_BIT(0xffff6000, IP_ACTIVE_LOW, IPT_UNKNOWN) - PORT_BIT(0x00000f0f, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(ksys573_state, gn845pwbb_read) + PORT_BIT(0x00000f0f, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(ddr_state, gn845pwbb_read) PORT_BIT(0x00000010, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_16WAY PORT_PLAYER(1) PORT_NAME("P1 Down 2") PORT_BIT(0x00000020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_16WAY PORT_PLAYER(1) PORT_NAME("P1 Left 2") PORT_BIT(0x00000040, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Telop") @@ -6117,6 +6138,66 @@ ROM_START( kicknkick ) ROM_LOAD( "a36eaa.27h", 0x000000, 0x200000, CRC(1179ab7b) SHA1(19a316cacb6eb87b905884091820e6b53aef64b7) ) ROM_END +} // anonymous namespace + + +// FIXME: dependency hell strikes again +// this shouldn't be here at all, but the spaghetti is so tangled +double konami573_cassette_xi_device::punchmania_inputs_callback(uint8_t input) +{ + // The values 50 and 150 come from the game's internal I/O simulation mode. + // Set DIPSW 2 ("Screen Flip") to ON and press select left + start on the I/O test screen to see the simulated I/O in action. + constexpr double POT_MIN = 50; + constexpr double POT_MAX = 150; + constexpr double POT_RANGE = POT_MAX - POT_MIN; + constexpr int MOTOR_SPEED_MUL = 2; + + pnchmn_state *state = machine().driver_data(); + double *pad_position = state->m_pad_position; + int *pad_motor_direction = state->m_pad_motor_direction; + int pads = state->m_pads->read(); + attotime curtime = machine().time(); + double elapsed = ( curtime - state->m_last_pad_update ).as_double(); + double diff = POT_RANGE * elapsed * MOTOR_SPEED_MUL; + + for( int i = 0; i < 6; i++ ) + { + if( BIT( pads, i ) ) + { + pad_position[ i ] = POT_MIN; + } + else + { + pad_position[ i ] = std::clamp( pad_position[ i ] + ( diff * pad_motor_direction[ i ] ), POT_MIN, POT_MAX ); + } + } + + machine().output().set_value( "left top pad", pad_position[ 0 ] ); + machine().output().set_value( "left middle pad", pad_position[ 1 ] ); + machine().output().set_value( "left bottom pad", pad_position[ 2 ] ); + machine().output().set_value( "right top pad", pad_position[ 3 ] ); + machine().output().set_value( "right middle pad", pad_position[ 4 ] ); + machine().output().set_value( "right bottom pad", pad_position[ 5 ] ); + + state->m_last_pad_update = curtime; + + switch( input ) + { + case ADC083X_CH0: /* Left Top */ + case ADC083X_CH1: /* Left Middle */ + case ADC083X_CH2: /* Left Bottom */ + case ADC083X_CH3: /* Right Top */ + case ADC083X_CH4: /* Right Middle */ + case ADC083X_CH5: /* Right Bottom */ + return 5.0 - ( 5.0 * ( pad_position[ input ] / 255.0 ) ); + case ADC083X_COM: + return 0; + case ADC083X_VREF: + return 5; + } + return 5; +} + GAME( 1997, sys573, 0, konami573, konami573, ksys573_state, empty_init, ROT0, "Konami", "System 573 BIOS", MACHINE_IS_BIOS_ROOT ) @@ -6133,14 +6214,14 @@ GAME( 1998, konam80u, konam80s, konami573x, konami573, ksys573_state, empty_ini GAME( 1998, konam80j, konam80s, konami573x, konami573, ksys573_state, empty_init, ROT90, "Konami", "Konami 80's Gallery (GC826 VER. JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1998, konam80a, konam80s, konami573x, konami573, ksys573_state, empty_init, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. AAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1998, konam80k, konam80s, konami573x, konami573, ksys573_state, empty_init, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. KAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, dstage, sys573, dsftkd, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dancing Stage - Internet Ranking Ver (GC845 VER. EBA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, dstagea, dstage, ddr, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dancing Stage (GN845 VER. EAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddru, dstage, ddr, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution (GN845 VER. UAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1998, ddrj, dstage, ddr, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution - Internet Ranking Ver (GC845 VER. JBA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1998, ddrja, dstage, ddr, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution (GC845 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1998, ddrjb, dstage, ddr, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution (GC845 VER. JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1999, ddra, dstage, ddr, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution (GN845 VER. AAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddrkara, dstage, ddrk, ddrkara, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution Karaoke Mix (GQ921 VER. JBB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, dstage, sys573, dsftkd, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dancing Stage - Internet Ranking Ver (GC845 VER. EBA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, dstagea, dstage, ddr, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dancing Stage (GN845 VER. EAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddru, dstage, ddr, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution (GN845 VER. UAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1998, ddrj, dstage, ddr, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution - Internet Ranking Ver (GC845 VER. JBA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1998, ddrja, dstage, ddr, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution (GC845 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1998, ddrjb, dstage, ddr, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution (GC845 VER. JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, ddra, dstage, ddr, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution (GN845 VER. AAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddrkara, dstage, ddrk, ddrkara, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution Karaoke Mix (GQ921 VER. JBB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) GAME( 1998, fbait2bc, sys573, fbaitbc, fbaitbc, ksys573_state, empty_init, ROT0, "Konami", "Fisherman's Bait 2 - A Bass Challenge (GE865 VER. UAB)", MACHINE_IMPERFECT_SOUND ) GAME( 1998, bassang2, fbait2bc, fbaitbc, fbaitbc, ksys573_state, empty_init, ROT0, "Konami", "Bass Angler 2 (GE865 VER. JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1998, hyperbbc, sys573, hyperbbc, hyperbbc, ksys573_state, init_hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GQ876 VER. EAA)", MACHINE_IMPERFECT_SOUND ) @@ -6159,12 +6240,12 @@ GAME( 1999, fbaitmc, sys573, fbaitbc, fbaitmc, ksys573_state, empty_ini GAME( 1999, fbaitmcu, fbaitmc, fbaitbc, fbaitmc, ksys573_state, empty_init, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. UA)", MACHINE_IMPERFECT_SOUND ) GAME( 1999, fbaitmcj, fbaitmc, fbaitbc, fbaitmc, ksys573_state, empty_init, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. JA)", MACHINE_IMPERFECT_SOUND ) GAME( 1999, fbaitmca, fbaitmc, fbaitbc, fbaitmc, ksys573_state, empty_init, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. AA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2m, sys573, ddr, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix (GN895 VER. JAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2ml, ddr2m, ddr2ml, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAB)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2mla, ddr2m, ddr2ml, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddrbocd, ddr2m, ddrbocd, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution Best of Cool Dancers (GE892 VER. JAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2mc, ddr2m, ddr, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX CLUB VERSiON (GE896 VER. JAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2mc2, ddr2m, ddr2mc2, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX substream CLUB VERSiON 2 (GE984 VER. JAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2m, sys573, ddr, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix (GN895 VER. JAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2ml, ddr2m, ddr2ml, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAB)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2mla, ddr2m, ddr2ml, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddrbocd, ddr2m, ddrbocd, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution Best of Cool Dancers (GE892 VER. JAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2mc, ddr2m, ddr, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX CLUB VERSiON (GE896 VER. JAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2mc2, ddr2m, ddr2mc2, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX substream CLUB VERSiON 2 (GE984 VER. JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1999, pcnfrk, sys573, drmn, drmn, ksys573_state, init_drmn, ROT0, "Konami", "Percussion Freaks (GQ881 VER. EAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) GAME( 1999, pcnfrka, pcnfrk, drmn, drmn, ksys573_state, init_drmn, ROT0, "Konami", "Percussion Freaks (GQ881 VER. AAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) GAME( 1999, pcnfrkk, pcnfrk, drmn, drmn, ksys573_state, init_drmn, ROT0, "Konami", "Percussion Freaks (GQ881 VER. KAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) @@ -6179,20 +6260,20 @@ GAME( 1999, gtrfrk2mka,gtrfrk2m, gtrfrk2m, gtrfrks, ksys573_state, empty_ini GAME( 1999, gtrfrk2maa,gtrfrk2m, gtrfrk2m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 2nd Mix (GQ883 VER. AAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1999, gtrfrk2ml1,gtrfrk2m, gtrfrk2ml, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 2nd Mix Link Kit 1 (GE929 VER. JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1999, gtrfrk2ml2,gtrfrk2m, gtrfrk2ml, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 2nd Mix Link Kit 2 (GC929 VER. JBB)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, dsftkd, sys573, dsftkd, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dancing Stage featuring TRUE KiSS DESTiNATiON (G*884 VER. JAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, dsftkd, sys573, dsftkd, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dancing Stage featuring TRUE KiSS DESTiNATiON (G*884 VER. JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1999, cr589fw, sys573, konami573, konami573, ksys573_state, empty_init, ROT0, "Konami", "CD-ROM Drive Updater 2.0 (700B04)", MACHINE_IMPERFECT_SOUND ) GAME( 1999, cr589fwa, sys573, konami573, konami573, ksys573_state, empty_init, ROT0, "Konami", "CD-ROM Drive Updater (700A04)", MACHINE_IMPERFECT_SOUND ) -GAME( 2000, ddr3mk, sys573, ddr3m, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 2000, ddr3mka, ddr3mk, ddr3m, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 1999, ddr3ma, ddr3mk, ddr3m, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.1 */ -GAME( 1999, ddr3mj, ddr3mk, ddr3m, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.0 */ +GAME( 2000, ddr3mk, sys573, ddr3m, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 2000, ddr3mka, ddr3mk, ddr3m, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 1999, ddr3ma, ddr3mk, ddr3m, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.1 */ +GAME( 1999, ddr3mj, ddr3mk, ddr3m, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.0 */ GAME( 1999, ddrsbm, sys573, ddrsbm, ddrsolo, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution Solo Bass Mix (GQ894 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) GAME( 1999, ddrs2k, sys573, ddrs2k, ddrsolo, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ GAME( 1999, ddrs2kj, ddrs2k, ddrs2k, ddrsolo, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.2 */ GAME( 1999, hypbbc2p, sys573, hypbbc2p, hypbbc2p, ksys573_state, init_hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 1999, hypbbc2pk, hypbbc2p, hypbbc2p, hypbbc2p, ksys573_state, init_hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. KAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, dsfdct, sys573, dsfdct, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1999, dsfdcta, dsfdct, dsfdcta, ddr, ksys573_state, init_ddr, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JAA)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, dsfdct, sys573, dsfdct, ddr, ddr_state, empty_init, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, dsfdcta, dsfdct, dsfdcta, ddr, ddr_state, init_ddr, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 2000, pcnfrk2m, sys573, drmn2m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 2nd Mix (GE912 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.5 */ GAME( 2000, pcnfrk2mk, pcnfrk2m, drmn2m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 2nd Mix (GE912 VER. KAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.5 */ GAME( 1999, drmn2m, pcnfrk2m, drmn2m, drmn, ksys573_state, empty_init, ROT0, "Konami", "DrumMania 2nd Mix (GE912 VER. JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.5 */ @@ -6201,38 +6282,38 @@ GAME( 1999, stepchmp, sys573, stepchmp, hyperbbc, ksys573_state, init_serl GAME( 2000, dncfrks, sys573, dmx, dmx, ksys573_state, empty_init, ROT0, "Konami", "Dance Freaks (G*874 VER. KAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ GAME( 2000, dmx, dncfrks, dmx, dmx, ksys573_state, empty_init, ROT0, "Konami", "Dance Maniax (G*874 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ GAME( 2000, gunmania, sys573, gunmania, gunmania, ksys573_state, empty_init, ROT0, "Konami", "GunMania (GL906 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAMEL(2000, fghtmn, sys573, pnchmn, pnchmn, ksys573_state, init_pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ -GAMEL(2000, fghtmna, fghtmn, pnchmn, pnchmn, ksys573_state, init_pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ -GAMEL(2000, pnchmn, fghtmn, pnchmn, pnchmn, ksys573_state, init_pnchmn, ROT0, "Konami", "Punch Mania: Hokuto no Ken (GQ918 VER. JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ -GAMEL(2000, pnchmna, fghtmn, pnchmn, pnchmn, ksys573_state, init_pnchmn, ROT0, "Konami", "Punch Mania: Hokuto no Ken (GQ918 VER. JAB ALT CD)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ -GAMEL(2000, fghtmnk, fghtmn, pnchmn, pnchmn, ksys573_state, init_pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. KAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ -GAMEL(2000, fghtmnu, fghtmn, pnchmn, pnchmn, ksys573_state, init_pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. UAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ -GAME( 2000, dsem, sys573, dsem, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dancing Stage Euro Mix (G*936 VER. EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.7 */ +GAMEL(2000, fghtmn, sys573, pnchmn, pnchmn, pnchmn_state, init_pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ +GAMEL(2000, fghtmna, fghtmn, pnchmn, pnchmn, pnchmn_state, init_pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ +GAMEL(2000, pnchmn, fghtmn, pnchmn, pnchmn, pnchmn_state, init_pnchmn, ROT0, "Konami", "Punch Mania: Hokuto no Ken (GQ918 VER. JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ +GAMEL(2000, pnchmna, fghtmn, pnchmn, pnchmn, pnchmn_state, init_pnchmn, ROT0, "Konami", "Punch Mania: Hokuto no Ken (GQ918 VER. JAB ALT CD)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ +GAMEL(2000, fghtmnk, fghtmn, pnchmn, pnchmn, pnchmn_state, init_pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. KAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ +GAMEL(2000, fghtmnu, fghtmn, pnchmn, pnchmn, pnchmn_state, init_pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. UAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ +GAME( 2000, dsem, sys573, dsem, ddr, ddr_state, empty_init, ROT0, "Konami", "Dancing Stage Euro Mix (G*936 VER. EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.7 */ GAME( 2000, gtrfrk3m, sys573, gtrfrk3m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAC)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ GAME( 2000, gtfrk3ma, gtrfrk3m, gtrfrk3m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ GAME( 2000, gtfrk3mb, gtrfrk3m, gtrfrk5m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 3rd Mix - security cassette versionup (949JAZ02)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ -GAMEL(2000, pnchmn2, sys573, pnchmn2, pnchmn, ksys573_state, init_pnchmn, ROT0, "Konami", "Punch Mania 2: Hokuto no Ken (GQA09 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ +GAMEL(2000, pnchmn2, sys573, pnchmn2, pnchmn, pnchmn_state, init_pnchmn, ROT0, "Konami", "Punch Mania 2: Hokuto no Ken (GQA09 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_pnchmn ) /* artwork/network */ GAME( 2000, animechmp, sys573, animechmp, hyperbbc, ksys573_state, init_serlamp, ROT0, "Konami", "Anime Champ (GCA07 VER. JAA)", MACHINE_IMPERFECT_SOUND ) GAME( 2000, salarymc, sys573, salarymc, hypbbc2p, ksys573_state, init_serlamp, ROT0, "Konami", "Salary Man Champ (GCA18 VER. JAA)", MACHINE_IMPERFECT_SOUND ) -GAME( 2000, ddr3mp, sys573, ddr3mp, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ +GAME( 2000, ddr3mp, sys573, ddr3mp, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ GAME( 2000, pcnfrk3m, sys573, drmn2m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 3rd Mix (G*A23 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, pcnfrk3mk, pcnfrk3m, drmn2m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 3rd Mix (G*A23 VER. KAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, drmn3m, pcnfrk3m, drmn2m, drmn, ksys573_state, empty_init, ROT0, "Konami", "DrumMania 3rd Mix (G*A23 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, gtrfrk4m, sys573, gtrfrk3m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 4th Mix (G*A24 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4m, sys573, ddr3mp, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4mj, ddr4m, ddr3mp, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4m, sys573, ddr3mp, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4mj, ddr4m, ddr3mp, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, ddr4ms, sys573, ddr4ms, ddrsolo, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, ddr4msj, ddr4ms, ddr4ms, ddrsolo, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, dsfdr, sys573, dsfdr, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddrusa, sys573, ddrusa, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution USA (G*A44 VER. UAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4mp, sys573, ddr3mp, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2000, dsfdr, sys573, dsfdr, ddr, ddr_state, empty_init, ROT0, "Konami", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddrusa, sys573, ddrusa, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution USA (G*A44 VER. UAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4mp, sys573, ddr3mp, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2000, ddr4mps, sys573, ddr4ms, ddrsolo, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JBA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2000, dmx2m, sys573, dmx, dmx, ksys573_state, empty_init, ROT0, "Konami", "Dance Maniax 2nd Mix (G*A39 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2001, pcnfrk4m, sys573, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 4th Mix (G*A25 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2001, pcnfrk4mk, pcnfrk4m, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 4th Mix (G*A25 VER. KAA)", MACHINE_IMPERFECT_SOUND ) /* BOOT VER 1.9 */ GAME( 2001, drmn4m, pcnfrk4m, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "DrumMania 4th Mix (G*A25 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2001, gtrfrk5m, sys573, gtrfrk5m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 5th Mix (G*A26 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, ddr5m, sys573, ddr5m, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, ddr5m, sys573, ddr5m, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2001, kicknkick, sys573, kicknkick, kicknkick, ksys573_state, empty_init, ROT0, "Konami", "Kick & Kick (GNA36 VER. EAA)", MACHINE_IMPERFECT_SOUND ) GAME( 2001, dmx2majp, sys573, dmx, dmx, ksys573_state, empty_init, ROT0, "Konami", "Dance Maniax 2nd Mix Append J-Paradise (G*A38 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2001, mamboagg, sys573, mamboagg, mamboagg, ksys573_state, empty_init, ROT0, "Konami", "Mambo A Go-Go (GQA40 VER. JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ @@ -6244,17 +6325,17 @@ GAME( 2001, gtrfrk6m, sys573, gtrfrk5m, gtrfrks, ksys573_state, empty_ini GAME( 2001, pcnfrk6m, sys573, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 6th Mix (G*B16 VER. AAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ GAME( 2001, drmn6m, pcnfrk6m, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "DrumMania 6th Mix (G*B16 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ GAME( 2001, gtrfrk7m, sys573, gtrfrk7m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 7th Mix (G*B17 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2001, ddrmax, sys573, ddr5m, ddr, ksys573_state, empty_init, ROT0, "Konami", "DDRMAX - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2002, ddrmax2, sys573, ddr5m, ddr, ksys573_state, empty_init, ROT0, "Konami", "DDRMAX2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, mrtlbeat, sys573, ddr5m, ddr, ksys573_state, empty_init, ROT0, "Konami", "Martial Beat (G*B47 VER. JBA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, ddrmax, sys573, ddr5m, ddr, ddr_state, empty_init, ROT0, "Konami", "DDRMAX - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2002, ddrmax2, sys573, ddr5m, ddr, ddr_state, empty_init, ROT0, "Konami", "DDRMAX2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, mrtlbeat, sys573, ddr5m, ddr, ddr_state, empty_init, ROT0, "Konami", "Martial Beat (G*B47 VER. JBA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2002, gbbchmp, sys573, gbbchmp, hyperbbc, ksys573_state, init_serlamp, ROT0, "Konami", "Great Bishi Bashi Champ (GBA48 VER. JAB)", MACHINE_IMPERFECT_SOUND ) GAME( 2002, pcnfrk7m, sys573, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 7th Mix (G*C07 VER. AAA)", MACHINE_IMPERFECT_SOUND ) /* BOOT VER 1.95 */ GAME( 2002, drmn7m, pcnfrk7m, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "DrumMania 7th Mix power-up ver. (G*C07 VER. JBA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ GAME( 2002, drmn7ma, pcnfrk7m, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "DrumMania 7th Mix (G*C07 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ GAME( 2002, gtrfrk8m, sys573, gtrfrk7m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 8th Mix power-up ver. (G*C08 VER. JBA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ GAME( 2002, gtrfrk8ma, gtrfrk8m, gtrfrk7m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 8th Mix (G*C08 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, dsem2, sys573, dsem2, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, ddrextrm, sys573, ddr5m, ddr, ksys573_state, empty_init, ROT0, "Konami", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, dsem2, sys573, dsem2, ddr, ddr_state, empty_init, ROT0, "Konami", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, ddrextrm, sys573, ddr5m, ddr, ddr_state, empty_init, ROT0, "Konami", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ GAME( 2003, pcnfrk8m, sys573, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "Percussion Freaks 8th Mix (G*C38 VER. AAA)", MACHINE_IMPERFECT_SOUND ) /* BOOT VER 1.95 */ GAME( 2003, drmn8m, pcnfrk8m, drmn4m, drmn, ksys573_state, empty_init, ROT0, "Konami", "DrumMania 8th Mix (G*C38 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ GAME( 2003, gtrfrk9m, sys573, gtrfrk7m, gtrfrks, ksys573_state, empty_init, ROT0, "Konami", "Guitar Freaks 9th Mix (G*C39 VER. JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -- cgit v1.2.3