This commit is contained in:
RobertoFresca 2016-08-18 21:59:05 -03:00
commit d33e63ed17
109 changed files with 264653 additions and 1371 deletions

View File

@ -1367,7 +1367,7 @@ end
--------------------------------------------------- ---------------------------------------------------
-- PCD3311 -- PCD3311
--@src/devices/sound/gb.h,SOUNDS["PCD3311"] = true --@src/devices/sound/pcd3311.h,SOUNDS["PCD3311"] = true
--------------------------------------------------- ---------------------------------------------------
if (SOUNDS["PCD3311"]~=null) then if (SOUNDS["PCD3311"]~=null) then

View File

@ -13,12 +13,18 @@
-- specify available CPU cores -- specify available CPU cores
-------------------------------------------------- --------------------------------------------------
CPUS["M6502"] = true
-------------------------------------------------- --------------------------------------------------
-- specify available sound cores; some of these are -- specify available sound cores; some of these are
-- only for MAME and so aren't included -- only for MAME and so aren't included
-------------------------------------------------- --------------------------------------------------
SOUNDS["GB_SOUND"] = true
SOUNDS["AY8910"] = true
SOUNDS["YM2203"] = true
SOUNDS["YM3526"] = true
SOUNDS["NES_APU"] = true
-------------------------------------------------- --------------------------------------------------
-- specify available video cores -- specify available video cores

View File

@ -42,7 +42,7 @@ ADDRESS_MAP_END
//------------------------------------------------- //-------------------------------------------------
// UPD7220_INTERFACE( hgdc_intf ) // UPD7220_DISPLAY_PIXELS_MEMBER( display_pixels )
//------------------------------------------------- //-------------------------------------------------
UPD7220_DISPLAY_PIXELS_MEMBER( compis_hrg_t::display_pixels ) UPD7220_DISPLAY_PIXELS_MEMBER( compis_hrg_t::display_pixels )
@ -55,6 +55,20 @@ UPD7220_DISPLAY_PIXELS_MEMBER( compis_hrg_t::display_pixels )
} }
//-------------------------------------------------
// UPD7220_DISPLAY_PIXELS_MEMBER( display_pixels )
//-------------------------------------------------
UPD7220_DISPLAY_PIXELS_MEMBER( compis_uhrg_t::display_pixels )
{
UINT16 i,gfx = m_video_ram[(address & 0x1ffff) >> 1];
const pen_t *pen = m_palette->pens();
for(i=0; i<16; i++)
bitmap.pix32(y, x + i) = pen[BIT(gfx, i)];
}
//------------------------------------------------- //-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( hrg ) // MACHINE_CONFIG_FRAGMENT( hrg )
//------------------------------------------------- //-------------------------------------------------
@ -103,7 +117,7 @@ static MACHINE_CONFIG_FRAGMENT( uhrg )
MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, XTAL_4_433619MHz/2) // unknown clock MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, XTAL_4_433619MHz/2) // unknown clock
MCFG_DEVICE_ADDRESS_MAP(AS_0, uhrg_map) MCFG_DEVICE_ADDRESS_MAP(AS_0, uhrg_map)
MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_hrg_t, display_pixels) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_uhrg_t, display_pixels)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_PALETTE_ADD_MONOCHROME("palette")

View File

@ -45,7 +45,6 @@ protected:
virtual UINT8 pcs6_6_r(address_space &space, offs_t offset) override; virtual UINT8 pcs6_6_r(address_space &space, offs_t offset) override;
virtual void pcs6_6_w(address_space &space, offs_t offset, UINT8 data) override; virtual void pcs6_6_w(address_space &space, offs_t offset, UINT8 data) override;
private:
required_device<upd7220_device> m_crtc; required_device<upd7220_device> m_crtc;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_shared_ptr<UINT16> m_video_ram; required_shared_ptr<UINT16> m_video_ram;
@ -64,6 +63,8 @@ public:
// optional information overrides // optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override; virtual machine_config_constructor device_mconfig_additions() const override;
UPD7220_DISPLAY_PIXELS_MEMBER( display_pixels );
}; };

View File

@ -116,6 +116,11 @@ void n2a03_device::mi_2a03_nd::write(UINT16 adr, UINT8 val)
program->write_byte(adr, val); program->write_byte(adr, val);
} }
void n2a03_device::device_clock_changed()
{
m_apu->set_unscaled_clock(clock());
}
const address_space_config *n2a03_device::memory_space_config(address_spacenum spacenum) const const address_space_config *n2a03_device::memory_space_config(address_spacenum spacenum) const
{ {
switch(spacenum) switch(spacenum)

View File

@ -25,6 +25,7 @@ public:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override; virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
virtual void do_exec_full() override; virtual void do_exec_full() override;
virtual void do_exec_partial() override; virtual void do_exec_partial() override;
virtual void device_clock_changed() override;
READ8_MEMBER(psg1_4014_r); READ8_MEMBER(psg1_4014_r);
READ8_MEMBER(psg1_4015_r); READ8_MEMBER(psg1_4015_r);

View File

@ -121,8 +121,6 @@ void ym2203_device::device_start()
{ {
ay8910_device::device_start(); ay8910_device::device_start();
int rate = clock()/72; /* ??? */
m_irq_handler.resolve(); m_irq_handler.resolve();
/* Timer Handler set */ /* Timer Handler set */
@ -130,13 +128,30 @@ void ym2203_device::device_start()
m_timer[1] = timer_alloc(1); m_timer[1] = timer_alloc(1);
/* stream system initialize */ /* stream system initialize */
m_stream = machine().sound().stream_alloc(*this,0,1,rate, stream_update_delegate(FUNC(ym2203_device::stream_generate),this)); calculate_rates();
/* Initialize FM emurator */ /* Initialize FM emurator */
int rate = clock()/72; /* ??? */
m_chip = ym2203_init(this,this,clock(),rate,timer_handler,IRQHandler,&psgintf); m_chip = ym2203_init(this,this,clock(),rate,timer_handler,IRQHandler,&psgintf);
assert_always(m_chip != nullptr, "Error creating YM2203 chip"); assert_always(m_chip != nullptr, "Error creating YM2203 chip");
} }
void ym2203_device::device_clock_changed()
{
calculate_rates();
ym2203_clock_changed(m_chip, clock(), clock() / 72);
}
void ym2203_device::calculate_rates()
{
int rate = clock()/72; /* ??? */
if (m_stream != nullptr)
m_stream->set_sample_rate(rate);
else
m_stream = machine().sound().stream_alloc(*this,0,1,rate, stream_update_delegate(FUNC(ym2203_device::stream_generate),this));
}
//------------------------------------------------- //-------------------------------------------------
// device_stop - device-specific stop // device_stop - device-specific stop
//------------------------------------------------- //-------------------------------------------------

View File

@ -39,10 +39,14 @@ protected:
virtual void device_post_load() override; virtual void device_post_load() override;
virtual void device_stop() override; virtual void device_stop() override;
virtual void device_reset() override; virtual void device_reset() override;
virtual void device_clock_changed() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
void stream_generate(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); void stream_generate(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
private: private:
void calculate_rates();
// internal state // internal state
sound_stream * m_stream; sound_stream * m_stream;
emu_timer * m_timer[2]; emu_timer * m_timer[2];

View File

@ -107,7 +107,6 @@ void ym3526_device::device_start()
m_chip = ym3526_init(this,clock(),rate); m_chip = ym3526_init(this,clock(),rate);
assert_always(m_chip != nullptr, "Error creating YM3526 chip"); assert_always(m_chip != nullptr, "Error creating YM3526 chip");
m_stream = machine().sound().stream_alloc(*this,0,1,rate);
/* YM3526 setup */ /* YM3526 setup */
ym3526_set_timer_handler (m_chip, timer_handler, this); ym3526_set_timer_handler (m_chip, timer_handler, this);
ym3526_set_irq_handler (m_chip, IRQHandler, this); ym3526_set_irq_handler (m_chip, IRQHandler, this);
@ -117,6 +116,22 @@ void ym3526_device::device_start()
m_timer[1] = timer_alloc(1); m_timer[1] = timer_alloc(1);
} }
void ym3526_device::device_clock_changed()
{
calculate_rates();
ym3526_clock_changed(m_chip, clock(), clock() / 72);
}
void ym3526_device::calculate_rates()
{
int rate = clock()/72; /* ??? */
if (m_stream != nullptr)
m_stream->set_sample_rate(rate);
else
m_stream = machine().sound().stream_alloc(*this,0,1,rate);
}
//------------------------------------------------- //-------------------------------------------------
// device_stop - device-specific stop // device_stop - device-specific stop
//------------------------------------------------- //-------------------------------------------------

View File

@ -37,6 +37,7 @@ protected:
virtual void device_start() override; virtual void device_start() override;
virtual void device_stop() override; virtual void device_stop() override;
virtual void device_reset() override; virtual void device_reset() override;
virtual void device_clock_changed() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@ -44,6 +45,8 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private: private:
void calculate_rates();
// internal state // internal state
sound_stream * m_stream; sound_stream * m_stream;
emu_timer * m_timer[2]; emu_timer * m_timer[2];

View File

@ -1201,6 +1201,29 @@ ay8910_device::ay8910_device(const machine_config &mconfig, device_type type, co
memset(&m_env_table,0,sizeof(m_env_table)); memset(&m_env_table,0,sizeof(m_env_table));
memset(&m_vol3d_table,0,sizeof(m_vol3d_table)); memset(&m_vol3d_table,0,sizeof(m_vol3d_table));
m_res_load[0] = m_res_load[1] = m_res_load[2] = 1000; //Default values for resistor loads m_res_load[0] = m_res_load[1] = m_res_load[2] = 1000; //Default values for resistor loads
set_type(psg_type);
}
void ay8910_device::set_type(psg_type_t psg_type)
{
m_type = psg_type;
if (psg_type == PSG_TYPE_AY)
{
m_env_step_mask = 0x0f;
m_step = 2;
m_zero_is_off = 1;
m_par = &ay8910_param;
m_par_env = &ay8910_param;
}
else
{
m_env_step_mask = 0x1f;
m_step = 1;
m_zero_is_off = 0;
m_par = &ym2149_param;
m_par_env = &ym2149_param_env;
}
} }
const device_type AY8912 = &device_creator<ay8912_device>; const device_type AY8912 = &device_creator<ay8912_device>;

View File

@ -106,6 +106,7 @@ public:
// static configuration helpers // static configuration helpers
static void set_flags(device_t &device, int flags) { downcast<ay8910_device &>(device).m_flags = flags; } static void set_flags(device_t &device, int flags) { downcast<ay8910_device &>(device).m_flags = flags; }
static void set_psg_type(device_t &device, psg_type_t psg_type) { downcast<ay8910_device &>(device).set_type(psg_type); }
static void set_resistors_load(device_t &device, int res_load0, int res_load1, int res_load2) { downcast<ay8910_device &>(device).m_res_load[0] = res_load0; downcast<ay8910_device &>(device).m_res_load[1] = res_load1; downcast<ay8910_device &>(device).m_res_load[2] = res_load2; } static void set_resistors_load(device_t &device, int res_load0, int res_load1, int res_load2) { downcast<ay8910_device &>(device).m_res_load[0] = res_load0; downcast<ay8910_device &>(device).m_res_load[1] = res_load1; downcast<ay8910_device &>(device).m_res_load[2] = res_load2; }
template<class _Object> static devcb_base &set_port_a_read_callback(device_t &device, _Object object) { return downcast<ay8910_device &>(device).m_port_a_read_cb.set_callback(object); } template<class _Object> static devcb_base &set_port_a_read_callback(device_t &device, _Object object) { return downcast<ay8910_device &>(device).m_port_a_read_cb.set_callback(object); }
template<class _Object> static devcb_base &set_port_b_read_callback(device_t &device, _Object object) { return downcast<ay8910_device &>(device).m_port_b_read_cb.set_callback(object); } template<class _Object> static devcb_base &set_port_b_read_callback(device_t &device, _Object object) { return downcast<ay8910_device &>(device).m_port_b_read_cb.set_callback(object); }
@ -158,6 +159,7 @@ protected:
private: private:
// internal helpers // internal helpers
void set_type(psg_type_t psg_type);
inline UINT16 mix_3D(); inline UINT16 mix_3D();
void ay8910_write_reg(int r, int v); void ay8910_write_reg(int r, int v);
void build_mixer_table(); void build_mixer_table();

View File

@ -239,26 +239,14 @@ c6280_device::c6280_device(const machine_config &mconfig, const char *tag, devic
} }
//------------------------------------------------- //-------------------------------------------------
// device_start - device-specific startup // calculate_clocks - (re)calculate clock-derived
// members
//------------------------------------------------- //-------------------------------------------------
void c6280_device::device_start() void c6280_device::calculate_clocks()
{ {
int rate = clock() / 16; int rate = clock() / 16;
/* Create stereo stream */
m_stream = machine().sound().stream_alloc(*this, 0, 2, rate);
/* Loudest volume level for table */
double level = 65535.0 / 6.0 / 32.0;
/* Clear context */
m_select = 0;
m_balance = 0;
m_lfo_frequency = 0;
m_lfo_control = 0;
memset(m_channel, 0, sizeof(channel) * 8);
/* Make waveform frequency table */ /* Make waveform frequency table */
for (int i = 0; i < 4096; i += 1) for (int i = 0; i < 4096; i += 1)
{ {
@ -273,6 +261,35 @@ void c6280_device::device_start()
m_noise_freq_tab[i] = (UINT32)step; m_noise_freq_tab[i] = (UINT32)step;
} }
if (m_stream != nullptr)
m_stream->set_sample_rate(rate);
else
m_stream = machine().sound().stream_alloc(*this, 0, 2, rate);
}
void c6280_device::device_clock_changed()
{
calculate_clocks();
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void c6280_device::device_start()
{
/* Loudest volume level for table */
double level = 65535.0 / 6.0 / 32.0;
/* Clear context */
m_select = 0;
m_balance = 0;
m_lfo_frequency = 0;
m_lfo_control = 0;
memset(m_channel, 0, sizeof(channel) * 8);
calculate_clocks();
/* Make volume table */ /* Make volume table */
/* PSG has 48dB volume range spread over 32 steps */ /* PSG has 48dB volume range spread over 32 steps */
double step = 48.0 / 32.0; double step = 48.0 / 32.0;

View File

@ -22,11 +22,14 @@ public:
protected: protected:
// device-level overrides // device-level overrides
virtual void device_start() override; virtual void device_start() override;
virtual void device_clock_changed() override;
// sound stream update overrides // sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private: private:
void calculate_clocks();
struct channel { struct channel {
UINT16 m_frequency; UINT16 m_frequency;
UINT8 m_control; UINT8 m_control;

View File

@ -2288,6 +2288,14 @@ void * ym2203_init(void *param, device_t *device, int clock, int rate,
return F2203; return F2203;
} }
void ym2203_clock_changed(void *chip, int clock, int rate)
{
YM2203 *FM2203 = (YM2203 *)chip;
FM2203->OPN.ST.clock = clock;
FM2203->OPN.ST.rate = rate;
}
/* shut down emulator */ /* shut down emulator */
void ym2203_shutdown(void *chip) void ym2203_shutdown(void *chip)
{ {

View File

@ -112,6 +112,11 @@ typedef void (*FM_IRQHANDLER)(void *param,int irq);
void * ym2203_init(void *param, device_t *device, int baseclock, int rate, void * ym2203_init(void *param, device_t *device, int baseclock, int rate,
FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg); FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler, const ssg_callbacks *ssg);
/*
** YM2203 clock changed notifier
*/
void ym2203_clock_changed(void *chip, int clock, int rate);
/* /*
** shutdown the YM2203 emulators ** shutdown the YM2203 emulators
*/ */

View File

@ -1961,6 +1961,15 @@ static void OPL_save_state(FM_OPL *OPL, device_t *device)
device->machine().save().register_postload(save_prepost_delegate(FUNC(OPL_postload), OPL)); device->machine().save().register_postload(save_prepost_delegate(FUNC(OPL_postload), OPL));
} }
static void OPL_clock_changed(FM_OPL *OPL, UINT32 clock, UINT32 rate)
{
OPL->clock = clock;
OPL->rate = rate;
/* init global tables */
OPL_initalize(OPL);
}
/* Create one of virtual YM3812/YM3526/Y8950 */ /* Create one of virtual YM3812/YM3526/Y8950 */
/* 'clock' is chip clock in Hz */ /* 'clock' is chip clock in Hz */
@ -1997,11 +2006,7 @@ static FM_OPL *OPLCreate(device_t *device, UINT32 clock, UINT32 rate, int type)
OPL->device = device; OPL->device = device;
OPL->type = type; OPL->type = type;
OPL->clock = clock; OPL_clock_changed(OPL, clock, rate);
OPL->rate = rate;
/* init global tables */
OPL_initalize(OPL);
return OPL; return OPL;
} }
@ -2281,6 +2286,11 @@ void ym3812_update_one(void *chip, OPLSAMPLE *buffer, int length)
#if (BUILD_YM3526) #if (BUILD_YM3526)
void ym3526_clock_changed(void *opl, UINT32 clock, UINT32 rate)
{
OPL_clock_changed((FM_OPL *)opl, clock, rate);
}
void *ym3526_init(device_t *device, UINT32 clock, UINT32 rate) void *ym3526_init(device_t *device, UINT32 clock, UINT32 rate)
{ {
/* emulator create */ /* emulator create */

View File

@ -68,6 +68,7 @@ void ym3812_set_update_handler(void *chip, OPL_UPDATEHANDLER UpdateHandler, void
** 'rate' is sampling rate ** 'rate' is sampling rate
*/ */
void *ym3526_init(device_t *device, UINT32 clock, UINT32 rate); void *ym3526_init(device_t *device, UINT32 clock, UINT32 rate);
void ym3526_clock_changed(void *opl, UINT32 clock, UINT32 rate);
/* shutdown the YM3526 emulators*/ /* shutdown the YM3526 emulators*/
void ym3526_shutdown(void *chip); void ym3526_shutdown(void *chip);
void ym3526_reset_chip(void *chip); void ym3526_reset_chip(void *chip);

View File

@ -74,12 +74,12 @@ const device_type K053260 = &device_creator<k053260_device>;
//------------------------------------------------- //-------------------------------------------------
k053260_device::k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) k053260_device::k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, K053260, "K053260 KDSC", tag, owner, clock, "k053260", __FILE__), : device_t(mconfig, K053260, "K053260 KDSC", tag, owner, clock, "k053260", __FILE__)
device_sound_interface(mconfig, *this), , device_sound_interface(mconfig, *this)
m_stream(nullptr), , device_rom_interface(mconfig, *this, 21)
m_rom(*this, DEVICE_SELF), , m_stream(nullptr)
m_keyon(0), , m_keyon(0)
m_mode(0) , m_mode(0)
{ {
memset(m_portdata, 0, sizeof(m_portdata)); memset(m_portdata, 0, sizeof(m_portdata));
} }
@ -375,22 +375,12 @@ void k053260_device::KDSC_Voice::update_pan_volume()
void k053260_device::KDSC_Voice::key_on() void k053260_device::KDSC_Voice::key_on()
{ {
if (m_start >= m_device->m_rom.bytes()) m_position = m_kadpcm ? 1 : 0; // for kadpcm low bit is nybble offset, so must start at 1 due to preincrement
m_device->logerror("K053260: Attempting to start playing past the end of the ROM ( start = %06x, length = %06x )\n", m_start, m_length); m_counter = 0x1000 - CLOCKS_PER_SAMPLE; // force update on next sound_stream_update
m_output = 0;
else if (m_start + m_length >= m_device->m_rom.bytes()) m_playing = true;
m_device->logerror("K053260: Attempting to play past the end of the ROM ( start = %06x, length = %06x )\n", if (LOG) m_device->logerror("K053260: start = %06x, length = %06x, pitch = %04x, vol = %02x, loop = %s, %s\n",
m_start, m_length); m_start, m_length, m_pitch, m_volume, m_loop ? "yes" : "no", m_kadpcm ? "KADPCM" : "PCM" );
else
{
m_position = m_kadpcm ? 1 : 0; // for kadpcm low bit is nybble offset, so must start at 1 due to preincrement
m_counter = 0x1000 - CLOCKS_PER_SAMPLE; // force update on next sound_stream_update
m_output = 0;
m_playing = true;
if (LOG) m_device->logerror("K053260: start = %06x, length = %06x, pitch = %04x, vol = %02x, loop = %s, %s\n",
m_start, m_length, m_pitch, m_volume, m_loop ? "yes" : "no", m_kadpcm ? "KADPCM" : "PCM" );
}
} }
void k053260_device::KDSC_Voice::key_off() void k053260_device::KDSC_Voice::key_off()
@ -432,7 +422,7 @@ void k053260_device::KDSC_Voice::play(stream_sample_t *outputs)
} }
} }
UINT8 romdata = m_device->m_rom[m_start + bytepos]; UINT8 romdata = m_device->read_byte(m_start + bytepos);
if (m_kadpcm) if (m_kadpcm)
{ {
@ -456,12 +446,5 @@ UINT8 k053260_device::KDSC_Voice::read_rom()
m_position = (m_position + 1) & 0xffff; m_position = (m_position + 1) & 0xffff;
if (offs >= m_device->m_rom.bytes()) return m_device->read_byte(offs);
{
m_device->logerror("%s: K053260: Attempting to read past the end of the ROM (offs = %06x, size = %06x)\n",
m_device->machine().describe_context(), offs, m_device->m_rom.bytes());
return 0;
}
return m_device->m_rom[offs];
} }

View File

@ -32,14 +32,13 @@
// ======================> k053260_device // ======================> k053260_device
class k053260_device : public device_t, class k053260_device : public device_t,
public device_sound_interface public device_sound_interface,
public device_rom_interface
{ {
public: public:
k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~k053260_device() { } ~k053260_device() { }
static void set_region_tag(device_t &device, const char *tag) { downcast<k053260_device &>(device).m_rom.set_tag(tag); }
DECLARE_READ8_MEMBER( main_read ); DECLARE_READ8_MEMBER( main_read );
DECLARE_WRITE8_MEMBER( main_write ); DECLARE_WRITE8_MEMBER( main_write );
DECLARE_READ8_MEMBER( read ); DECLARE_READ8_MEMBER( read );
@ -56,7 +55,6 @@ protected:
private: private:
// configuration // configuration
sound_stream * m_stream; sound_stream * m_stream;
required_region_ptr<UINT8> m_rom;
// live state // live state
UINT8 m_portdata[4]; UINT8 m_portdata[4];

View File

@ -74,6 +74,23 @@ const INT32 multipcm_device::VALUE_TO_CHANNEL[32] =
const UINT32 multipcm_device::TL_SHIFT = 12; const UINT32 multipcm_device::TL_SHIFT = 12;
const UINT32 multipcm_device::EG_SHIFT = 16; const UINT32 multipcm_device::EG_SHIFT = 16;
void multipcm_device::init_sample(sample_t *sample, UINT32 index)
{
UINT32 address = index * 12;
sample->m_start = (read_byte(address) << 16) | (read_byte(address + 1) << 8) | read_byte(address + 2);
sample->m_loop = (read_byte(address + 3) << 8) | read_byte(address + 4);
sample->m_end = 0xffff - ((read_byte(address + 5) << 8) | read_byte(address + 6));
sample->m_attack_reg = (read_byte(address + 8) >> 4) & 0xf;
sample->m_decay1_reg = read_byte(address + 8) & 0xf;
sample->m_decay2_reg = read_byte(address + 9) & 0xf;
sample->m_decay_level = (read_byte(address + 9) >> 4) & 0xf;
sample->m_release_reg = read_byte(address + 10) & 0xf;
sample->m_key_rate_scale = (read_byte(address + 10) >> 4) & 0xf;
sample->m_lfo_vibrato_reg = read_byte(address + 7);
sample->m_lfo_amplitude_reg = read_byte(address + 11) & 0xf;
}
INT32 multipcm_device::envelope_generator_update(slot_t *slot) INT32 multipcm_device::envelope_generator_update(slot_t *slot)
{ {
switch(slot->m_envelope_gen.m_state) switch(slot->m_envelope_gen.m_state)
@ -149,20 +166,20 @@ void multipcm_device::envelope_generator_calc(slot_t *slot)
} }
INT32 rate; INT32 rate;
if (slot->m_sample->m_key_rate_scale != 0xf) if (slot->m_sample.m_key_rate_scale != 0xf)
{ {
rate = (octave + slot->m_sample->m_key_rate_scale) * 2 + ((slot->m_regs[3] >> 3) & 1); rate = (octave + slot->m_sample.m_key_rate_scale) * 2 + ((slot->m_regs[3] >> 3) & 1);
} }
else else
{ {
rate = 0; rate = 0;
} }
slot->m_envelope_gen.m_attack_rate = get_rate(m_attack_step, rate, slot->m_sample->m_attack_reg); slot->m_envelope_gen.m_attack_rate = get_rate(m_attack_step, rate, slot->m_sample.m_attack_reg);
slot->m_envelope_gen.m_decay1_rate = get_rate(m_decay_release_step, rate, slot->m_sample->m_decay1_reg); slot->m_envelope_gen.m_decay1_rate = get_rate(m_decay_release_step, rate, slot->m_sample.m_decay1_reg);
slot->m_envelope_gen.m_decay2_rate = get_rate(m_decay_release_step, rate, slot->m_sample->m_decay2_reg); slot->m_envelope_gen.m_decay2_rate = get_rate(m_decay_release_step, rate, slot->m_sample.m_decay2_reg);
slot->m_envelope_gen.m_release_rate = get_rate(m_decay_release_step, rate, slot->m_sample->m_release_reg); slot->m_envelope_gen.m_release_rate = get_rate(m_decay_release_step, rate, slot->m_sample.m_release_reg);
slot->m_envelope_gen.m_decay_level = 0xf - slot->m_sample->m_decay_level; slot->m_envelope_gen.m_decay_level = 0xf - slot->m_sample.m_decay_level;
} }
@ -316,9 +333,10 @@ void multipcm_device::write_slot(slot_t *slot, INT32 reg, UINT8 data)
{ {
//according to YMF278 sample write causes some base params written to the regs (envelope+lfos) //according to YMF278 sample write causes some base params written to the regs (envelope+lfos)
//the game should never change the sample while playing. //the game should never change the sample while playing.
sample_t *sample = m_samples + slot->m_regs[1]; sample_t sample;
write_slot(slot, 6, sample->m_lfo_vibrato_reg); init_sample(&sample, slot->m_regs[1]);
write_slot(slot, 7, sample->m_lfo_amplitude_reg); write_slot(slot, 6, sample.m_lfo_vibrato_reg);
write_slot(slot, 7, sample.m_lfo_amplitude_reg);
break; break;
} }
case 2: //Pitch case 2: //Pitch
@ -341,9 +359,9 @@ void multipcm_device::write_slot(slot_t *slot, INT32 reg, UINT8 data)
case 4: //KeyOn/Off (and more?) case 4: //KeyOn/Off (and more?)
if (data & 0x80) //KeyOn if (data & 0x80) //KeyOn
{ {
slot->m_sample = m_samples + slot->m_regs[1]; init_sample(&slot->m_sample, slot->m_regs[1]);
slot->m_playing = true; slot->m_playing = true;
slot->m_base = slot->m_sample->m_start; slot->m_base = slot->m_sample.m_start;
slot->m_offset = 0; slot->m_offset = 0;
slot->m_prev_sample = 0; slot->m_prev_sample = 0;
slot->m_total_level = slot->m_dest_total_level << TL_SHIFT; slot->m_total_level = slot->m_dest_total_level << TL_SHIFT;
@ -369,7 +387,7 @@ void multipcm_device::write_slot(slot_t *slot, INT32 reg, UINT8 data)
{ {
if (slot->m_playing) if (slot->m_playing)
{ {
if (slot->m_sample->m_release_reg != 0xf) if (slot->m_sample.m_release_reg != 0xf)
{ {
slot->m_envelope_gen.m_state = RELEASE; slot->m_envelope_gen.m_state = RELEASE;
} }
@ -420,7 +438,6 @@ READ8_MEMBER( multipcm_device::read )
return 0; return 0;
} }
WRITE8_MEMBER( multipcm_device::write ) WRITE8_MEMBER( multipcm_device::write )
{ {
switch(offset) switch(offset)
@ -444,6 +461,7 @@ void multipcm_device::set_bank(UINT32 leftoffs, UINT32 rightoffs)
{ {
m_bank_left = leftoffs; m_bank_left = leftoffs;
m_bank_right = rightoffs; m_bank_right = rightoffs;
printf("%08x, %08x\n", leftoffs, rightoffs);
} }
const device_type MULTIPCM = &device_creator<multipcm_device>; const device_type MULTIPCM = &device_creator<multipcm_device>;
@ -453,7 +471,6 @@ multipcm_device::multipcm_device(const machine_config &mconfig, const char *tag,
device_sound_interface(mconfig, *this), device_sound_interface(mconfig, *this),
device_rom_interface(mconfig, *this, 24), device_rom_interface(mconfig, *this, 24),
m_stream(nullptr), m_stream(nullptr),
m_samples(nullptr),
m_slots(nullptr), m_slots(nullptr),
m_cur_slot(0), m_cur_slot(0),
m_address(0), m_address(0),
@ -584,30 +601,6 @@ void multipcm_device::device_start()
m_linear_to_exp_volume[i] = value_to_fixed(TL_SHIFT, exp_volume); m_linear_to_exp_volume[i] = value_to_fixed(TL_SHIFT, exp_volume);
} }
// Samples
m_samples = auto_alloc_array_clear(machine(), sample_t, 0x200);
for(INT32 sample = 0; sample < 0x200; ++sample)
{
UINT8 data[12];
for (INT32 sample_byte = 0; sample_byte < 12; sample_byte++)
{
data[sample_byte] = (UINT8)read_byte((sample * 12) + sample_byte);
}
m_samples[sample].m_start = (data[0] << 16) | (data[1] << 8) | (data[2] << 0);
m_samples[sample].m_loop = (data[3] << 8) | (data[4] << 0);
m_samples[sample].m_end = 0xffff - ((data[5] << 8) | (data[6] << 0));
m_samples[sample].m_lfo_vibrato_reg = data[7];
m_samples[sample].m_decay1_reg = data[8] & 0xf;
m_samples[sample].m_attack_reg = (data[8] >> 4) & 0xf;
m_samples[sample].m_decay2_reg = data[9] & 0xf;
m_samples[sample].m_decay_level = (data[9] >> 4) & 0xf;
m_samples[sample].m_release_reg = data[10] & 0xf;
m_samples[sample].m_key_rate_scale = (data[10] >> 4) & 0xf;
m_samples[sample].m_lfo_amplitude_reg = data[11];
}
save_item(NAME(m_cur_slot)); save_item(NAME(m_cur_slot));
save_item(NAME(m_address)); save_item(NAME(m_address));
save_item(NAME(m_bank_left)); save_item(NAME(m_bank_left));
@ -702,9 +695,9 @@ void multipcm_device::sound_stream_update(sound_stream &stream, stream_sample_t
} }
slot->m_offset += step; slot->m_offset += step;
if (slot->m_offset >= (slot->m_sample->m_end << TL_SHIFT)) if (slot->m_offset >= (slot->m_sample.m_end << TL_SHIFT))
{ {
slot->m_offset = slot->m_sample->m_loop << TL_SHIFT; slot->m_offset = slot->m_sample.m_loop << TL_SHIFT;
} }
if (adr ^ (slot->m_offset >> TL_SHIFT)) if (adr ^ (slot->m_offset >> TL_SHIFT))

View File

@ -71,13 +71,12 @@ private:
INT32 *m_scale; INT32 *m_scale;
}; };
struct slot_t struct slot_t
{ {
UINT8 m_slot_index; UINT8 m_slot_index;
UINT8 m_regs[8]; UINT8 m_regs[8];
bool m_playing; bool m_playing;
sample_t *m_sample; sample_t m_sample;
UINT32 m_base; UINT32 m_base;
UINT32 m_offset; UINT32 m_offset;
UINT32 m_step; UINT32 m_step;
@ -93,7 +92,6 @@ private:
// internal state // internal state
sound_stream *m_stream; sound_stream *m_stream;
sample_t *m_samples; // Max 512 samples
slot_t *m_slots; slot_t *m_slots;
UINT32 m_cur_slot; UINT32 m_cur_slot;
UINT32 m_address; UINT32 m_address;
@ -117,6 +115,8 @@ private:
UINT32 value_to_fixed(const UINT32 bits, const float value); UINT32 value_to_fixed(const UINT32 bits, const float value);
void init_sample(sample_t *sample, UINT32 index);
// Internal LFO functions // Internal LFO functions
void lfo_init(); void lfo_init();
void lfo_compute_step(lfo_t *lfo, UINT32 lfo_frequency, UINT32 LFOS, INT32 amplitude_lfo); void lfo_compute_step(lfo_t *lfo, UINT32 lfo_frequency, UINT32 LFOS, INT32 amplitude_lfo);

View File

@ -141,31 +141,52 @@ void nesapu_device::set_tag_memory(const char *tag)
(m_APU.dpcm).memory = &machine().device(tag)->memory().space(AS_PROGRAM); (m_APU.dpcm).memory = &machine().device(tag)->memory().space(AS_PROGRAM);
} }
//------------------------------------------------- void nesapu_device::device_clock_changed()
// device_start - device-specific startup {
//------------------------------------------------- calculate_rates();
}
void nesapu_device::device_start() void nesapu_device::calculate_rates()
{ {
int rate = clock() / 4; int rate = clock() / 4;
/* Initialize global variables */ screen_device *screen = machine().first_screen();
m_samps_per_sync = rate / ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds()); if (screen != nullptr)
{
m_samps_per_sync = rate / ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds());
m_real_rate = m_samps_per_sync * ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds());
}
else
{
m_samps_per_sync = rate / screen_device::DEFAULT_FRAME_RATE;
m_real_rate = m_samps_per_sync * screen_device::DEFAULT_FRAME_RATE;
}
m_buffer_size = m_samps_per_sync; m_buffer_size = m_samps_per_sync;
m_real_rate = m_samps_per_sync * ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds());
m_apu_incsize = (float) (clock() / (float) m_real_rate); m_apu_incsize = (float) (clock() / (float) m_real_rate);
/* Use initializer calls */
create_noise(m_noise_lut, 13, NOISE_LONG);
create_vbltimes(m_vbl_times,vbl_length,m_samps_per_sync); create_vbltimes(m_vbl_times,vbl_length,m_samps_per_sync);
create_syncs(m_samps_per_sync); create_syncs(m_samps_per_sync);
/* Adjust buffer size if 16 bits */ /* Adjust buffer size if 16 bits */
m_buffer_size+=m_samps_per_sync; m_buffer_size+=m_samps_per_sync;
if (m_stream != nullptr)
m_stream->set_sample_rate(rate);
else
m_stream = machine().sound().stream_alloc(*this, 0, 1, rate);
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void nesapu_device::device_start()
{
create_noise(m_noise_lut, 13, NOISE_LONG);
set_tag_memory(m_cpu_tag); set_tag_memory(m_cpu_tag);
m_stream = machine().sound().stream_alloc(*this, 0, 1, rate); calculate_rates();
/* register for save */ /* register for save */
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)

View File

@ -53,6 +53,8 @@ public:
static void set_cpu_tag(device_t &device, const char *tag) { downcast<nesapu_device &>(device).m_cpu_tag = tag; } static void set_cpu_tag(device_t &device, const char *tag) { downcast<nesapu_device &>(device).m_cpu_tag = tag; }
void set_tag_memory(const char *tag); void set_tag_memory(const char *tag);
virtual void device_clock_changed() override;
DECLARE_READ8_MEMBER( read ); DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write ); DECLARE_WRITE8_MEMBER( write );
@ -78,6 +80,7 @@ private:
const char *m_cpu_tag; const char *m_cpu_tag;
void calculate_rates();
void create_syncs(unsigned long sps); void create_syncs(unsigned long sps);
int8 apu_square(square_t *chan); int8 apu_square(square_t *chan);
int8 apu_triangle(triangle_t *chan); int8 apu_triangle(triangle_t *chan);

View File

@ -28,8 +28,6 @@
#ifndef __NES_DEFS_H__ #ifndef __NES_DEFS_H__
#define __NES_DEFS_H__ #define __NES_DEFS_H__
#include "nes_defs.h"
/* BOOLEAN CONSTANTS */ /* BOOLEAN CONSTANTS */
#ifndef TRUE #ifndef TRUE
#define TRUE 1 #define TRUE 1

View File

@ -2330,6 +2330,22 @@ ROM_START(monrobwl)
ROM_RELOAD( 0x7800, 0x0800) ROM_RELOAD( 0x7800, 0x0800)
ROM_END ROM_END
/*-----------------------------------------------------------------------------------------------
/ Big Bat (Bat game)
/------------------------------------------------------------------------------------------------*/
ROM_START(bigbat)
ROM_REGION(0x8000, "maincpu", 0)
ROM_LOAD( "u2.bin", 0x1000, 0x0800, CRC(2beda24d) SHA1(80fb9ed548e4886741c709979aa4f865f47d2257))
ROM_CONTINUE( 0x5000, 0x0800)
ROM_LOAD( "u6.bin", 0x1800, 0x0800, CRC(8f13469d) SHA1(00c626f7eb166f627f6498d75906b3c56bccdd62))
ROM_CONTINUE( 0x5800, 0x0800)
ROM_RELOAD( 0x7000, 0x1000)
ROM_REGION(0x10000, "cpu2", 0)
ROM_LOAD("u3.bin", 0xd000, 0x1000, CRC(b87a9335) SHA1(8a21bcbcbe91da1bab0af06b71604bb8f247d0d4))
ROM_LOAD("u4.bin", 0xe000, 0x1000, CRC(4ab75b31) SHA1(46acd1c9250a635b51bffccd77ea4e67a0c5edf5))
ROM_LOAD("u5.bin", 0xf000, 0x1000, CRC(0aec8204) SHA1(f44216cccc3652399549345d8c74bcae54662aa3))
ROM_END
/*----------------------------------------------------------------------------------------------- /*-----------------------------------------------------------------------------------------------
/ Midnight Marauders (Gun game) different hardware, not a pinball, to be moved to its own driver / Midnight Marauders (Gun game) different hardware, not a pinball, to be moved to its own driver
/------------------------------------------------------------------------------------------------*/ /------------------------------------------------------------------------------------------------*/
@ -2449,6 +2465,7 @@ GAME( 1988, uboat65, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova
GAME( 1986, bullseye, 0, by35, by35, by35_state, by35_7, ROT0, "Grand Products", "301/Bullseye", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1986, bullseye, 0, by35, by35, by35_state, by35_7, ROT0, "Grand Products", "301/Bullseye", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1988, bbbowlin, 0, by35, by35, by35_state, by35_7, ROT0, "United", "Big Ball Bowling (Bowler)", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1988, bbbowlin, 0, by35, by35, by35_state, by35_7, ROT0, "United", "Big Ball Bowling (Bowler)", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1988, monrobwl, 0, by35, by35, by35_state, by35_7, ROT0, "Monroe Bowling Co.", "Stars & Strikes (Bowler)", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1988, monrobwl, 0, by35, by35, by35_state, by35_7, ROT0, "Monroe Bowling Co.", "Stars & Strikes (Bowler)", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1984, bigbat, 0, by35, by35, by35_state, by35_7, ROT0, "Bally Midway", "Big Bat (Bat game)", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1984, mdntmrdr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally Midway", "Midnight Marauders (Gun game)", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1984, mdntmrdr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally Midway", "Midnight Marauders (Gun game)", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1988, blbeauty, 0, by35, by35, by35_state, by35_7, ROT0, "Stern", "Black Beauty (Shuffle)", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1988, blbeauty, 0, by35, by35, by35_state, by35_7, ROT0, "Stern", "Black Beauty (Shuffle)", MACHINE_IS_SKELETON_MECHANICAL)
GAME( 1984, myststar, 0, by35, by35, by35_state, by35_6, ROT0, "Zaccaria", "Mystic Star", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1984, myststar, 0, by35, by35, by35_state, by35_6, ROT0, "Zaccaria", "Mystic Star", MACHINE_IS_SKELETON_MECHANICAL)

View File

@ -45,6 +45,7 @@ Games on this system include....
|*| 2004 | OutRun 2 Special Tours (Rev A) | Sega | GDROM | GDX-0014A | 317-0396-COM | |*| 2004 | OutRun 2 Special Tours (Rev A) | Sega | GDROM | GDX-0014A | 317-0396-COM |
| | 2004 | OutRun 2 Special Tours (Rev A) | Sega | CF | MDA-G0012 | 317-0396-COM | | | 2004 | OutRun 2 Special Tours (Rev A) | Sega | CF | MDA-G0012 | 317-0396-COM |
|*| 2005 | Wangan Midnight Maximum Tune 2 (Japan) | Namco | GDROM | GDX-0015 | 317-5106-JPN | |*| 2005 | Wangan Midnight Maximum Tune 2 (Japan) | Namco | GDROM | GDX-0015 | 317-5106-JPN |
|*| 2005 | Wangan Midnight Maximum Tune 2 (Japan) (Rev A) | Namco | GDROM | GDX-0015A | 317-5106-JPN |
| | 2005 | Wangan Midnight Maximum Tune 2 (Export) | Namco | GDROM | GDX-0016 | 317-5106-COM | | | 2005 | Wangan Midnight Maximum Tune 2 (Export) | Namco | GDROM | GDX-0016 | 317-5106-COM |
|*| 2005 | Wangan Midnight Maximum Tune 2 (Export) (Rev A) | Namco | GDROM | GDX-0016A | 317-5106-COM | |*| 2005 | Wangan Midnight Maximum Tune 2 (Export) (Rev A) | Namco | GDROM | GDX-0016A | 317-5106-COM |
| | 2005 | Sega Network Taisen Mahjong MJ 3 | Sega | GDROM | GDX-0017 | 317-0414-JPN | | | 2005 | Sega Network Taisen Mahjong MJ 3 | Sega | GDROM | GDX-0017 | 317-0414-JPN |
@ -1922,6 +1923,16 @@ ROM_START( wangmid2j )
ROM_LOAD("317-5106-jpn.data", 0x00, 0x50, CRC(75c716aa) SHA1(5c2bcf3d28a80b336c6882d5aeb010d04327f8c1) ) ROM_LOAD("317-5106-jpn.data", 0x00, 0x50, CRC(75c716aa) SHA1(5c2bcf3d28a80b336c6882d5aeb010d04327f8c1) )
ROM_END ROM_END
ROM_START( wangmid2ja )
CHIHIRO_BIOS
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdx-0015a", 0, SHA1(0c8e5170e178fcc25acd93a4c2ae79c1e4688f85) )
ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
ROM_LOAD("317-5106-jpn.data", 0x00, 0x50, CRC(75c716aa) SHA1(5c2bcf3d28a80b336c6882d5aeb010d04327f8c1) )
ROM_END
ROM_START( wangmid2 ) ROM_START( wangmid2 )
CHIHIRO_BIOS CHIHIRO_BIOS
@ -2112,6 +2123,7 @@ ROM_END
// 0014 GAME( 2004, outr2sto, outr2st, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (GDX-0014)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) // 0014 GAME( 2004, outr2sto, outr2st, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (GDX-0014)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0014A */ GAME( 2004, outr2st, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (Rev A) (GDX-0014A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) /* 0014A */ GAME( 2004, outr2st, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (Rev A) (GDX-0014A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0015 */ GAME( 2005, wangmid2j,wangmid2, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) /* 0015 */ GAME( 2005, wangmid2j,wangmid2, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0015A */ GAME( 2005, wangmid2ja,wangmid2,chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (Rev A) (GDX-0015A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0016 GAME( 2005, wangmid2o,wangmid2, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0016)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) // 0016 GAME( 2005, wangmid2o,wangmid2, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0016)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
/* 0016A */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (Rev A) (GDX-0016A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) /* 0016A */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (Rev A) (GDX-0016A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0017 GAME( 2005, mj3o, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (GDX-0017)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) // 0017 GAME( 2005, mj3o, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (GDX-0017)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )

View File

@ -40,14 +40,6 @@
******************************************************************************/ ******************************************************************************/
/*
TODO:
- cannot detect UHRG card (writes 0x1234 to 0x8000 in VRAM but does not read it back?)
*/
#include "emu.h" #include "emu.h"
#include "softlist.h" #include "softlist.h"
#include "bus/centronics/ctronics.h" #include "bus/centronics/ctronics.h"

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Takahiro Nogi // copyright-holders:Takahiro Nogi, hap
/*************************************************************************** /***************************************************************************
Dottori Kun (Head On's mini game) Dottori Kun (Head On's mini game)
@ -20,32 +20,43 @@ SOUND : (none)
* On the NEW version, push COIN-SW as TEST MODE. * On the NEW version, push COIN-SW as TEST MODE.
* 0000-3FFF:ROM 8000-85FF:VRAM(128x96) 8600-87FF:WORK-RAM * 0000-3FFF:ROM 8000-85FF:VRAM(128x96) 8600-87FF:WORK-RAM
TODO:
- improve video timing more (see http://www.chrismcovell.com/dottorikun.html)
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "dotrikun.lh"
class dotrikun_state : public driver_device class dotrikun_state : public driver_device
{ {
public: public:
dotrikun_state(const machine_config &mconfig, device_type type, const char *tag) dotrikun_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_dotrikun_bitmap(*this, "dotrikun_bitmap"),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_screen(*this, "screen") { } m_screen(*this, "screen"),
m_vram(*this, "vram")
{ }
/* memory pointers */
required_shared_ptr<UINT8> m_dotrikun_bitmap;
/* video-related */
UINT8 m_color;
DECLARE_WRITE8_MEMBER(dotrikun_color_w);
virtual void machine_start() override;
virtual void machine_reset() override;
UINT32 screen_update_dotrikun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
required_shared_ptr<UINT8> m_vram;
UINT8 m_vram_latch;
UINT8 m_fg_color;
UINT8 m_bg_color;
DECLARE_WRITE8_MEMBER(vram_w);
DECLARE_WRITE8_MEMBER(color_w);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(interrupt);
virtual void machine_start() override;
virtual void machine_reset() override;
}; };
@ -55,43 +66,37 @@ public:
* *
*************************************/ *************************************/
WRITE8_MEMBER(dotrikun_state::dotrikun_color_w) WRITE8_MEMBER(dotrikun_state::vram_w)
{ {
/* m_screen->update_now();
x--- ---- screen color swap? m_vram[offset] = data;
---- -x-- B }
---- --x- G
---- ---x R
*/
m_color = data; WRITE8_MEMBER(dotrikun_state::color_w)
m_screen->update_partial(m_screen->vpos()); {
// d0-d2: fg palette
// d3-d5: bg palette
// d6,d7: N/C
m_screen->update_now();
m_fg_color = data & 7;
m_bg_color = data >> 3 & 7;
} }
UINT32 dotrikun_state::screen_update_dotrikun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) UINT32 dotrikun_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
int x,y,i; for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
pen_t back_pen = rgb_t(pal1bit(m_color >> 3), pal1bit(m_color >> 4), pal1bit(m_color >> 5));
pen_t fore_pen = rgb_t(pal1bit(m_color >> 0), pal1bit(m_color >> 1), pal1bit(m_color >> 2));
for(y = (cliprect.min_y & ~1); y < cliprect.max_y; y+=2)
{ {
for (x = 0; x < 256; x+=16) for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
{ {
UINT8 data = m_dotrikun_bitmap[((x/16)+((y/2)*16))]; if ((x & 7) == 0)
for (i = 0; i < 8; i++)
{ {
pen_t pen = ((data >> (7 - i)) & 1) ? fore_pen : back_pen; // on vram fetch(every 8 pixels during active display), z80 is stalled for 2 clocks
m_maincpu->eat_cycles(2);
/* I think the video hardware doubles pixels, screen would be too small otherwise */ m_vram_latch = m_vram[x >> 3 | y >> 1 << 4];
bitmap.pix32(y + 0, (x + 0) + i*2) = pen;
bitmap.pix32(y + 0, (x + 1) + i*2) = pen;
bitmap.pix32(y + 1, (x + 0) + i*2) = pen;
bitmap.pix32(y + 1, (x + 1) + i*2) = pen;
} }
bitmap.pix16(y, x) = (m_vram_latch >> (~x & 7) & 1) ? m_fg_color : m_bg_color;
} }
} }
@ -107,13 +112,13 @@ UINT32 dotrikun_state::screen_update_dotrikun(screen_device &screen, bitmap_rgb3
static ADDRESS_MAP_START( dotrikun_map, AS_PROGRAM, 8, dotrikun_state ) static ADDRESS_MAP_START( dotrikun_map, AS_PROGRAM, 8, dotrikun_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x8000, 0x85ff) AM_RAM AM_SHARE("dotrikun_bitmap") AM_RANGE(0x8000, 0x85ff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
AM_RANGE(0x8600, 0x87ff) AM_RAM AM_RANGE(0x8600, 0x87ff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, AS_IO, 8, dotrikun_state ) static ADDRESS_MAP_START( io_map, AS_IO, 8, dotrikun_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ_PORT("INPUTS") AM_WRITE(dotrikun_color_w) AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READ_PORT("INPUTS") AM_WRITE(color_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -142,33 +147,41 @@ INPUT_PORTS_END
* *
*************************************/ *************************************/
INTERRUPT_GEN_MEMBER(dotrikun_state::interrupt)
{
generic_pulse_irq_line(m_maincpu, 0, 1);
}
void dotrikun_state::machine_start() void dotrikun_state::machine_start()
{ {
save_item(NAME(m_color)); save_item(NAME(m_vram_latch));
save_item(NAME(m_fg_color));
save_item(NAME(m_bg_color));
} }
void dotrikun_state::machine_reset() void dotrikun_state::machine_reset()
{ {
m_color = 0; m_vram_latch = 0;
m_fg_color = m_bg_color = 0;
} }
#define MASTER_CLOCK XTAL_4MHz
static MACHINE_CONFIG_START( dotrikun, dotrikun_state ) static MACHINE_CONFIG_START( dotrikun, dotrikun_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(dotrikun_map) MCFG_CPU_PROGRAM_MAP(dotrikun_map)
MCFG_CPU_IO_MAP(io_map) MCFG_CPU_IO_MAP(io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dotrikun_state, irq0_line_hold) MCFG_CPU_VBLANK_INT_DRIVER("screen", dotrikun_state, interrupt)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 256+32, 0, 256, 192+32, 0, 192) // FIXME: h/v params of this are completely inaccurate, shows it especially under the "CRT test" MCFG_SCREEN_RAW_PARAMS(XTAL_4MHz, 128+128, 0, 128, 192+64, 0, 192)
MCFG_SCREEN_UPDATE_DRIVER(dotrikun_state, screen_update_dotrikun) MCFG_SCREEN_UPDATE_DRIVER(dotrikun_state, screen_update)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD_3BIT_RGB("palette")
/* sound hardware */ /* no sound hardware */
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -189,5 +202,5 @@ ROM_START( dotrikun2 )
ROM_END ROM_END
GAME( 1990, dotrikun, 0, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_GRAPHICS ) GAMEL(1990, dotrikun, 0, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_GRAPHICS, layout_dotrikun )
GAME( 1990, dotrikun2,dotrikun, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_GRAPHICS ) GAMEL(1990, dotrikun2, dotrikun, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_GRAPHICS, layout_dotrikun )

View File

@ -449,6 +449,52 @@ ROM_START(cueball)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(c22f5cc5) SHA1(a5bfbc1824bc483eecc961851bd411cb0dbcdc4a)) ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(c22f5cc5) SHA1(a5bfbc1824bc483eecc961851bd411cb0dbcdc4a))
ROM_END ROM_END
ROM_START(cueball2)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("gprom.r2", 0x0000, 0x10000, CRC(171c0a0e) SHA1(e53d32e7cddf47feacf3f5c00651c2216da39b7a))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x80000, "dmdcpu", 0)
ROM_LOAD("dsprom.r2", 0x00000, 0x40000, CRC(70345a0b) SHA1(38ccea4f367d6ac777119201156b2f35c4d2d379))
ROM_RELOAD( 0x40000, 0x40000)
ROM_REGION(0x10000, "cpu4", 0)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(9fd04109) SHA1(27864fe4e9c248dce6221c9e56861967d089b216))
ROM_REGION(0x100000, "sound1", 0)
ROM_LOAD("arom1.bin", 0x00000, 0x40000, CRC(476bb11c) SHA1(ce546df59933cc230a6671dec493bbbe71146dee))
ROM_RELOAD(0x00000+0x40000, 0x40000)
ROM_LOAD("arom2.bin", 0x80000, 0x40000, CRC(23708ad9) SHA1(156fcb19403f9845404af1a4ac4edfd3fcde601d))
ROM_RELOAD(0x80000+0x40000, 0x40000)
ROM_REGION(0x10000, "cpu3", 0)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(c22f5cc5) SHA1(a5bfbc1824bc483eecc961851bd411cb0dbcdc4a))
ROM_END
ROM_START(cueball3)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("gprom.r3", 0x0000, 0x10000, CRC(f2d6e9d8) SHA1(bac7d498876454092607116fd7d46034438c9bfa))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x80000, "dmdcpu", 0)
ROM_LOAD("dsprom.r2", 0x00000, 0x40000, CRC(70345a0b) SHA1(38ccea4f367d6ac777119201156b2f35c4d2d379))
ROM_RELOAD( 0x40000, 0x40000)
ROM_REGION(0x10000, "cpu4", 0)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(9fd04109) SHA1(27864fe4e9c248dce6221c9e56861967d089b216))
ROM_REGION(0x100000, "sound1", 0)
ROM_LOAD("arom1.bin", 0x00000, 0x40000, CRC(476bb11c) SHA1(ce546df59933cc230a6671dec493bbbe71146dee))
ROM_RELOAD(0x00000+0x40000, 0x40000)
ROM_LOAD("arom2.bin", 0x80000, 0x40000, CRC(23708ad9) SHA1(156fcb19403f9845404af1a4ac4edfd3fcde601d))
ROM_RELOAD(0x80000+0x40000, 0x40000)
ROM_REGION(0x10000, "cpu3", 0)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(c22f5cc5) SHA1(a5bfbc1824bc483eecc961851bd411cb0dbcdc4a))
ROM_END
/*------------------------------------------------------------------- /*-------------------------------------------------------------------
/ Frank Thomas' Big Hurt (#745) / Frank Thomas' Big Hurt (#745)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
@ -850,6 +896,7 @@ ROM_START(snspares)
ROM_REGION(0x100000, "user3", 0) ROM_REGION(0x100000, "user3", 0)
ROM_LOAD("arom1.bin", 0x00000, 0x80000, CRC(e248574a) SHA1(d2bdc2b9a330bb81556d25d464f617e0934995eb)) ROM_LOAD("arom1.bin", 0x00000, 0x80000, CRC(e248574a) SHA1(d2bdc2b9a330bb81556d25d464f617e0934995eb))
ROM_END ROM_END
ROM_START(snspares1) ROM_START(snspares1)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("gprom1.bin", 0x0000, 0x10000, CRC(590393f4) SHA1(f52400c620e510253abd1c0719050b9bb09be942)) ROM_LOAD("gprom1.bin", 0x0000, 0x10000, CRC(590393f4) SHA1(f52400c620e510253abd1c0719050b9bb09be942))
@ -870,6 +917,26 @@ ROM_START(snspares1)
ROM_LOAD("arom1.bin", 0x00000, 0x80000, CRC(e248574a) SHA1(d2bdc2b9a330bb81556d25d464f617e0934995eb)) ROM_LOAD("arom1.bin", 0x00000, 0x80000, CRC(e248574a) SHA1(d2bdc2b9a330bb81556d25d464f617e0934995eb))
ROM_END ROM_END
ROM_START(snspares2)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("gprom2.bin", 0x0000, 0x10000, CRC(79906dfc) SHA1(1efb68dd391f79e6f8ad5a588145d6ad7b36743c))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x80000, "dmdcpu", 0)
ROM_LOAD("dsprom.bin", 0x00000, 0x40000, CRC(5c901899) SHA1(d106561b2e382afdb16e938072c9c8f1d1ccdae6))
ROM_RELOAD( 0x40000, 0x40000)
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x80000, "user2", 0)
ROM_LOAD("dsprom.bin", 0x00000, 0x40000, CRC(5c901899) SHA1(d106561b2e382afdb16e938072c9c8f1d1ccdae6))
ROM_RELOAD( 0x40000, 0x40000)
ROM_REGION(0x100000, "user3", 0)
ROM_LOAD("arom1.bin", 0x00000, 0x80000, CRC(e248574a) SHA1(d2bdc2b9a330bb81556d25d464f617e0934995eb))
ROM_END
/*------------------------------------------------------------------- /*-------------------------------------------------------------------
/ Super Mario Brothers (#733) - Only one dsprom dump seems to work? / Super Mario Brothers (#733) - Only one dsprom dump seems to work?
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
@ -1181,6 +1248,8 @@ GAME(1992, smb2, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0
GAME(1992, smb3, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1992, smb3, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, smbmush, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers Mushroom World", MACHINE_IS_SKELETON_MECHANICAL) GAME(1992, smbmush, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers Mushroom World", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, cueball, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard", MACHINE_IS_SKELETON_MECHANICAL) GAME(1992, cueball, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, cueball2, cueball, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1992, cueball3, cueball, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1993, sfight2, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II", MACHINE_IS_SKELETON_MECHANICAL) GAME(1993, sfight2, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1993, sfight2a, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1993, sfight2a, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1993, sfight2b, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1993, sfight2b, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
@ -1205,6 +1274,7 @@ GAME(1995, bighurt, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0
GAME(1995, waterwld, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1995, waterwld, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1995, waterwld2, waterwld, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1995, waterwld2, waterwld, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1995, snspares, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.6)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1995, snspares, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.6)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1995, snspares2, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1995, snspares1, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1995, snspares1, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1995, andretti, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti", MACHINE_IS_SKELETON_MECHANICAL) GAME(1995, andretti, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1995, andretti4, andretti, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti (rev.T4)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1995, andretti4, andretti, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti (rev.T4)", MACHINE_IS_SKELETON_MECHANICAL)

View File

@ -76,6 +76,64 @@
#include "maygay1b.lh" #include "maygay1b.lh"
#include "m1albsqp.lh"
#include "m1apollo2.lh"
#include "m1bargnc.lh"
#include "m1bghou.lh"
#include "m1bigdel.lh"
#include "m1calypsa.lh"
#include "m1casclb.lh"
#include "m1casroy1.lh"
#include "m1chain.lh"
#include "m1cik51o.lh"
#include "m1clbfvr.lh"
#include "m1cluecb1.lh"
#include "m1cluedo4.lh"
#include "m1cluessf.lh"
#include "m1coro21n.lh"
#include "m1dkong91n.lh"
#include "m1dxmono51o.lh"
#include "m1eastndl.lh"
#include "m1eastqv3.lh"
#include "m1fantfbb.lh"
#include "m1fightb.lh"
#include "m1frexplc.lh"
#include "m1gladg.lh"
#include "m1grescb.lh"
#include "m1hotpoth.lh"
#include "m1htclb.lh"
#include "m1imclb.lh"
#include "m1infern.lh"
#include "m1inwinc.lh"
#include "m1itjobc.lh"
#include "m1itskob.lh"
#include "m1jpmult.lh"
#include "m1lucknon.lh"
#include "m1luxorb.lh"
#include "m1manhat.lh"
#include "m1monclb.lh"
#include "m1mongam.lh"
#include "m1monmon.lh"
#include "m1monou.lh"
#include "m1nhp.lh"
#include "m1nudbnke.lh"
#include "m1omega.lh"
#include "m1onbusa.lh"
#include "m1przeeb.lh"
#include "m1retpp.lh"
#include "m1search.lh"
#include "m1sptlgtc.lh"
#include "m1startr.lh"
#include "m1taknot.lh"
#include "m1thatlfc.lh"
#include "m1topstr.lh"
#include "m1triviax.lh"
#include "m1trtr.lh"
#include "m1ttcash.lh"
#include "m1wldzner.lh"
#include "m1wotwa.lh"
// not yet working // not yet working
//#define USE_MCU //#define USE_MCU

File diff suppressed because it is too large Load Diff

View File

@ -808,7 +808,7 @@ DRIVER_INIT_MEMBER(namcofl_state,finalapr)
m_gametype = NAMCOFL_FINAL_LAP_R; m_gametype = NAMCOFL_FINAL_LAP_R;
} }
GAME ( 1995, speedrcr, 0, namcofl, speedrcr, namcofl_state, speedrcr, ROT0, "Namco", "Speed Racer", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME ( 1995, speedrcr, 0, namcofl, speedrcr, namcofl_state, speedrcr, ROT0, "Namco", "Speed Racer", MACHINE_IMPERFECT_GRAPHICS )
GAMEL( 1995, finalapr, 0, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Rev. B)", MACHINE_IMPERFECT_SOUND, layout_namcofl ) GAMEL( 1995, finalapr, 0, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Rev. B)", 0, layout_namcofl )
GAMEL( 1995, finalapro, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R", MACHINE_IMPERFECT_SOUND, layout_namcofl ) GAMEL( 1995, finalapro, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R", 0, layout_namcofl )
GAMEL( 1995, finalaprj, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Japan Rev. C)", MACHINE_IMPERFECT_SOUND, layout_namcofl ) GAMEL( 1995, finalaprj, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Japan Rev. C)", 0, layout_namcofl )

View File

@ -9,7 +9,6 @@ Notes:
ToDo: ToDo:
- improve interrupts - improve interrupts
- gunbulet force feedback - gunbulet force feedback
- music tempo is too fast in Nebulas Ray, JLS V-Shoot and the Great Sluggers games
Main CPU : Motorola 68020 32-bit processor @ 25MHz Main CPU : Motorola 68020 32-bit processor @ 25MHz
Secondary CPUs : C329 + 137 (both custom) Secondary CPUs : C329 + 137 (both custom)
@ -315,7 +314,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::scantimer)
if (m_pos_irq_level != 0) if (m_pos_irq_level != 0)
m_maincpu->set_input_line(m_pos_irq_level, ASSERT_LINE); m_maincpu->set_input_line(m_pos_irq_level, ASSERT_LINE);
} }
/*
// TODO: Real sources of these // TODO: Real sources of these
if (scanline == 224) if (scanline == 224)
m_mcu->set_input_line(M37710_LINE_IRQ0, HOLD_LINE); m_mcu->set_input_line(M37710_LINE_IRQ0, HOLD_LINE);
@ -323,9 +322,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::scantimer)
m_mcu->set_input_line(M37710_LINE_IRQ2, HOLD_LINE); m_mcu->set_input_line(M37710_LINE_IRQ2, HOLD_LINE);
else if (scanline == 128) else if (scanline == 128)
m_mcu->set_input_line(M37710_LINE_ADC, HOLD_LINE); m_mcu->set_input_line(M37710_LINE_ADC, HOLD_LINE);
*/
} }
TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::mcu_irq0_cb)
{
m_mcu->set_input_line(M37710_LINE_IRQ0, HOLD_LINE);
}
TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::mcu_irq2_cb)
{
m_mcu->set_input_line(M37710_LINE_IRQ2, HOLD_LINE);
}
TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::mcu_adc_cb)
{
m_mcu->set_input_line(M37710_LINE_ADC, HOLD_LINE);
}
/****************************************************************************/ /****************************************************************************/
@ -1127,6 +1140,11 @@ static MACHINE_CONFIG_START( namconb1, namconb1_state )
MCFG_MACHINE_RESET_OVERRIDE(namconb1_state, namconb) MCFG_MACHINE_RESET_OVERRIDE(namconb1_state, namconb)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, scantimer, "screen", 0, 1) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, scantimer, "screen", 0, 1)
// has to be 60 hz or music will go crazy in nebulray, vshoot, gslugrs*
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq0", namconb1_state, mcu_irq0_cb, attotime::from_hz(60))
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq2", namconb1_state, mcu_irq2_cb, attotime::from_hz(60))
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_adc", namconb1_state, mcu_adc_cb, attotime::from_hz(60))
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7) MCFG_SCREEN_REFRESH_RATE(59.7)
@ -1164,7 +1182,10 @@ static MACHINE_CONFIG_START( namconb2, namconb1_state )
MCFG_MACHINE_RESET_OVERRIDE(namconb1_state, namconb) MCFG_MACHINE_RESET_OVERRIDE(namconb1_state, namconb)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, scantimer, "screen", 0, 1) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, scantimer, "screen", 0, 1)
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq0", namconb1_state, mcu_irq0_cb, attotime::from_hz(60))
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq2", namconb1_state, mcu_irq2_cb, attotime::from_hz(60))
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_adc", namconb1_state, mcu_adc_cb, attotime::from_hz(60))
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7) MCFG_SCREEN_REFRESH_RATE(59.7)
MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL) MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL)
@ -1980,21 +2001,21 @@ ROM_END
/***************************************************************/ /***************************************************************/
GAME( 1994, nebulray, 0, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (World, NR2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, nebulray, 0, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (World, NR2)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, nebulrayj,nebulray, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (Japan, NR1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, nebulrayj,nebulray, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (Japan, NR1)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, ptblank, 0, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, ptblank, 0, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, ptblanka, ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, ptblanka, ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, gunbuletj,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (Japan, GN1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, gunbuletj,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (Japan, GN1)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, gunbuletw,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (World, GN3 Rev B)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, gunbuletw,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (World, GN3 Rev B)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, gslugrsj, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1993, gslugrsj, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, gslgr94u, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers '94", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, gslgr94u, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers '94", MACHINE_SUPPORTS_SAVE )
GAME( 1994, gslgr94j, gslgr94u, namconb1, nbsports, namconb1_state, gslgr94j, ROT0, "Namco", "Great Sluggers '94 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, gslgr94j, gslgr94u, namconb1, nbsports, namconb1_state, gslgr94j, ROT0, "Namco", "Great Sluggers '94 (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, sws95, 0, namconb1, nbsports, namconb1_state, sws95, ROT0, "Namco", "Super World Stadium '95 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1995, sws95, 0, namconb1, nbsports, namconb1_state, sws95, ROT0, "Namco", "Super World Stadium '95 (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, sws96, 0, namconb1, nbsports, namconb1_state, sws96, ROT0, "Namco", "Super World Stadium '96 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1996, sws96, 0, namconb1, nbsports, namconb1_state, sws96, ROT0, "Namco", "Super World Stadium '96 (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1997, sws97, 0, namconb1, nbsports, namconb1_state, sws97, ROT0, "Namco", "Super World Stadium '97 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1997, sws97, 0, namconb1, nbsports, namconb1_state, sws97, ROT0, "Namco", "Super World Stadium '97 (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, vshoot, 0, namconb1, namconb1, namconb1_state, vshoot, ROT0, "Namco", "J-League Soccer V-Shoot (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, vshoot, 0, namconb1, namconb1, namconb1_state, vshoot, ROT0, "Namco", "J-League Soccer V-Shoot (Japan)", MACHINE_SUPPORTS_SAVE )
/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS */ /* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS */
GAME( 1994, outfxies, 0, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (World, OU2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, outfxies, 0, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (World, OU2)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, outfxiesj,outfxies, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (Japan, OU1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1994, outfxiesj,outfxies, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (Japan, OU1)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, machbrkr, 0, namconb2, namconb1, namconb1_state, machbrkr, ROT0, "Namco", "Mach Breakers - Numan Athletics 2 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1995, machbrkr, 0, namconb2, namconb1, namconb1_state, machbrkr, ROT0, "Namco", "Mach Breakers - Numan Athletics 2 (Japan)", MACHINE_SUPPORTS_SAVE )

View File

@ -297,8 +297,8 @@ ROM_START( ncv2j )
ROM_LOAD( "ncs1voic.7c", 0x000000, 0x200000, CRC(ed05fd88) SHA1(ad88632c89a9946708fc6b4c9247e1bae9b2944b) ) ROM_LOAD( "ncs1voic.7c", 0x000000, 0x200000, CRC(ed05fd88) SHA1(ad88632c89a9946708fc6b4c9247e1bae9b2944b) )
ROM_END ROM_END
GAME( 1995, ncv1, 0, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1995, ncv1, 0, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1995, ncv1j, ncv1, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.00)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1995, ncv1j, ncv1, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1995, ncv1j2, ncv1, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.03)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1995, ncv1j2, ncv1, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1996, ncv2, 0, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.2", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) GAME( 1996, ncv2, 0, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
GAME( 1996, ncv2j, ncv2, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.2 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) GAME( 1996, ncv2j, ncv2, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )

View File

@ -1603,28 +1603,28 @@ ROM_START( xevi3dg )
ROM_RELOAD( 0x800000, 0x400000 ) ROM_RELOAD( 0x800000, 0x400000 )
ROM_END ROM_END
GAME( 1994, tekken, 0, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (World, TE4/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1994, tekken, 0, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (World, TE4/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1994, tekkenac, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Asia, TE2/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1994, tekkenac, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Asia, TE2/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1994, tekkenab, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Asia, TE2/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1994, tekkenab, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Asia, TE2/VER.B)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1994, tekkenjb, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Japan, TE1/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1994, tekkenjb, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Japan, TE1/VER.B)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, tekken2, 0, tekken2, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (US, TES3/VER.D)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, tekken2, 0, tekken2, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (US, TES3/VER.D)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, tekken2ub, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (US, TES3/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, tekken2ub, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (US, TES3/VER.B)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, tekken2ab, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Asia, TES2/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, tekken2ab, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Asia, TES2/VER.B)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, tekken2jc, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, tekken2jc, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, tekken2jb, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, tekken2jb, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.B)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, tekken2aa, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 (Asia, TES2/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, tekken2aa, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 (Asia, TES2/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, souledge, 0, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge Ver. II (World, SO4/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, souledge, 0, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge Ver. II (World, SO4/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, souledgeuc, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge Ver. II (US, SO3/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, souledgeuc, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge Ver. II (US, SO3/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, souledgeua, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (US, SO3/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, souledgeua, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (US, SO3/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, souledgeaa, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (Asia, SO2/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, souledgeaa, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (Asia, SO2/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, souledgeja, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (Japan, SO1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, souledgeja, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (Japan, SO1/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, dunkmnia, 0, dunkmnia, namcos11, driver_device, 0, ROT0, "Namco", "Dunk Mania (Asia, DM2/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, dunkmnia, 0, dunkmnia, namcos11, driver_device, 0, ROT0, "Namco", "Dunk Mania (Asia, DM2/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, dunkmniajc, dunkmnia, dunkmnia, namcos11, driver_device, 0, ROT0, "Namco", "Dunk Mania (Japan, DM1/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, dunkmniajc, dunkmnia, dunkmnia, namcos11, driver_device, 0, ROT0, "Namco", "Dunk Mania (Japan, DM1/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, xevi3dg, 0, xevi3dg, namcos11, driver_device, 0, ROT0, "Namco", "Xevious 3D/G (Japan, XV31/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, xevi3dg, 0, xevi3dg, namcos11, driver_device, 0, ROT0, "Namco", "Xevious 3D/G (Japan, XV31/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, primglex, 0, primglex, tekken, driver_device, 0, ROT0, "Namco", "Prime Goal EX (Japan, PG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, primglex, 0, primglex, tekken, driver_device, 0, ROT0, "Namco", "Prime Goal EX (Japan, PG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, danceyes, 0, danceyes, namcos11, driver_device, 0, ROT0, "Namco", "Dancing Eyes (US, DC3/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, danceyes, 0, danceyes, namcos11, driver_device, 0, ROT0, "Namco", "Dancing Eyes (US, DC3/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, danceyesj, danceyes, danceyes, namcos11, driver_device, 0, ROT0, "Namco", "Dancing Eyes (Japan, DC1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, danceyesj, danceyes, danceyes, namcos11, driver_device, 0, ROT0, "Namco", "Dancing Eyes (Japan, DC1/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, pocketrc, 0, pocketrc, pocketrc, driver_device, 0, ROT0, "Namco", "Pocket Racer (Japan, PKR1/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, pocketrc, 0, pocketrc, pocketrc, driver_device, 0, ROT0, "Namco", "Pocket Racer (Japan, PKR1/VER.B)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, starswep, 0, starswep, namcos11, driver_device, 0, ROT0, "Axela / Namco", "Star Sweep (Japan, STP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, starswep, 0, starswep, namcos11, driver_device, 0, ROT0, "Axela / Namco", "Star Sweep (Japan, STP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1998, myangel3, 0, myangel3, myangel3, driver_device, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 3 (Japan, KQT1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1998, myangel3, 0, myangel3, myangel3, driver_device, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 3 (Japan, KQT1/VER.A)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1999, ptblank2ua, ptblank2, ptblank2ua, ptblank2ua, driver_device, 0, ROT0, "Namco", "Point Blank 2 (US, GNB3/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1999, ptblank2ua, ptblank2, ptblank2ua, ptblank2ua, driver_device, 0, ROT0, "Namco", "Point Blank 2 (US, GNB3/VER.A)", MACHINE_IMPERFECT_GRAPHICS )

View File

@ -3150,55 +3150,55 @@ ROM_START( aplarail )
ROM_LOAD( "at28c16", 0x000000, 0x000800, CRC(db1b63c5) SHA1(01fc3386a2d1cb1bed1b7fd9bd2fd59e503832d3) ) ROM_LOAD( "at28c16", 0x000000, 0x000800, CRC(db1b63c5) SHA1(01fc3386a2d1cb1bed1b7fd9bd2fd59e503832d3) )
ROM_END ROM_END
GAME( 1996, tekken3, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.E1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC006 */ GAME( 1996, tekken3, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.E1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */
GAME( 1996, tekken3ae, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.E1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC006 */ GAME( 1996, tekken3ae, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.E1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */
GAME( 1996, tekken3ud, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.D)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC006 */ GAME( 1996, tekken3ud, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.D)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */
GAME( 1996, tekken3ab, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC006 */ GAME( 1996, tekken3ab, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */
GAME( 1996, tekken3ua, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC006 */ GAME( 1996, tekken3ua, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */
GAME( 1996, tekken3aa, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC006 */ GAME( 1996, tekken3aa, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */
GAME( 1996, tekken3ja, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC014 */ GAME( 1996, tekken3ja, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC014 */
GAME( 1997, lbgrande, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Libero Grande (Asia, LG2/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC014 */ GAME( 1997, lbgrande, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Libero Grande (Asia, LG2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC014 */
GAME( 1997, lbgrandeja,lbgrande, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Libero Grande (Japan, LG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC014 */ GAME( 1997, lbgrandeja,lbgrande, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Libero Grande (Japan, LG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC014 */
GAME( 1997, toukon3, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco / Tomy", "Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC019 */ GAME( 1997, toukon3, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco / Tomy", "Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC019 */
GAME( 1998, soulclbr, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (World, SOC14/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1998, soulclbr, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (World, SOC14/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1998, soulclbruc,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1998, soulclbruc,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.C)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1998, soulclbrjc,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC020 */ GAME( 1998, soulclbrjc,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */
GAME( 1998, soulclbrwb,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (World, SOC14/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1998, soulclbrwb,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (World, SOC14/VER.B)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1998, soulclbrub,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC020 */ GAME( 1998, soulclbrub,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */
GAME( 1998, soulclbrjb,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC020 */ GAME( 1998, soulclbrjb,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */
GAME( 1998, soulclbrja,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.A2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC020 */ GAME( 1998, soulclbrja,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.A2)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */
GAME( 1998, ehrgeiz, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (US, EG3/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC021 */ GAME( 1998, ehrgeiz, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (US, EG3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC021 */
GAME( 1998, ehrgeizaa, ehrgeiz, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (Asia, EG2/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC021 */ GAME( 1998, ehrgeizaa, ehrgeiz, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (Asia, EG2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC021 */
GAME( 1998, ehrgeizja, ehrgeiz, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (Japan, EG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC021 */ GAME( 1998, ehrgeizja, ehrgeiz, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (Japan, EG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC021 */
GAME( 1998, mdhorse, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "MOSS / Namco", "Derby Quiz My Dream Horse (Japan, MDH1/VER.A2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC035 */ GAME( 1998, mdhorse, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "MOSS / Namco", "Derby Quiz My Dream Horse (Japan, MDH1/VER.A2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC035 */
GAME( 1998, aplarail, 0, aplarail, aplarail, namcos12_state, namcos12, ROT0, "Namco / Tomy", "Attack Pla Rail (Japan, AP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC032 */ GAME( 1998, aplarail, 0, aplarail, aplarail, namcos12_state, namcos12, ROT0, "Namco / Tomy", "Attack Pla Rail (Japan, AP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC032 */
GAME( 1998, sws98, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium '98 (Japan, SS81/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC0?? */ GAME( 1998, sws98, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium '98 (Japan, SS81/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC0?? */
GAME( 1998, technodr, 0, technodr, technodr, namcos12_state, namcos12, ROT0, "Namco", "Techno Drive (Japan, TD2/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC056 */ GAME( 1998, technodr, 0, technodr, technodr, namcos12_state, namcos12, ROT0, "Namco", "Techno Drive (Japan, TD2/VER.B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC056 */
GAME( 1998, tenkomor, 0, coh700, namcos12, namcos12_state, namcos12, ROT90,"Namco", "Tenkomori Shooting (Asia, TKM2/VER.A1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC036 */ GAME( 1998, tenkomor, 0, coh700, namcos12, namcos12_state, namcos12, ROT90,"Namco", "Tenkomori Shooting (Asia, TKM2/VER.A1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC036 */
GAME( 1998, tenkomorja,tenkomor, coh700, namcos12, namcos12_state, namcos12, ROT90,"Namco", "Tenkomori Shooting (Japan, TKM1/VER.A1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC036 */ GAME( 1998, tenkomorja,tenkomor, coh700, namcos12, namcos12_state, namcos12, ROT90,"Namco", "Tenkomori Shooting (Japan, TKM1/VER.A1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC036 */
GAME( 1998, fgtlayer, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Arika / Namco", "Fighting Layer (Japan, FTL1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC037 */ GAME( 1998, fgtlayer, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Arika / Namco", "Fighting Layer (Japan, FTL1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC037 */
GAME( 1999, pacapp, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion (Japan, PPP1/VER.A2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC038 */ GAME( 1999, pacapp, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion (Japan, PPP1/VER.A2)", MACHINE_IMPERFECT_GRAPHICS ) /* KC038 */
GAME( 1999, ptblank2, 0, ptblank2, ptblank2, namcos12_state, ptblank2, ROT0, "Namco", "Point Blank 2 (GNB5/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC042 */ GAME( 1999, ptblank2, 0, ptblank2, ptblank2, namcos12_state, ptblank2, ROT0, "Namco", "Point Blank 2 (GNB5/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC042 */
GAME( 1999, gunbarl, ptblank2, ptblank2, ptblank2, namcos12_state, ptblank2, ROT0, "Namco", "Gunbarl (Japan, GNB4/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC042 */ GAME( 1999, gunbarl, ptblank2, ptblank2, ptblank2, namcos12_state, ptblank2, ROT0, "Namco", "Gunbarl (Japan, GNB4/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC042 */
GAME( 1999, sws99, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium '99 (Japan, SS91/VER.A3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC043 */ GAME( 1999, sws99, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium '99 (Japan, SS91/VER.A3)", MACHINE_IMPERFECT_GRAPHICS ) /* KC043 */
GAME( 1999, tektagt, 0, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.C1)", MACHINE_IMPERFECT_SOUND ) /* KC044 */ GAME( 1999, tektagt, 0, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.C1)", 0 ) /* KC044 */
GAME( 1999, tektagtac, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Asia, TEG2/VER.C1, set 1)", MACHINE_IMPERFECT_SOUND ) /* KC044 */ GAME( 1999, tektagtac, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Asia, TEG2/VER.C1, set 1)", 0 ) /* KC044 */
GAME( 1999, tektagtac1,tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Asia, TEG2/VER.C1, set 2)", MACHINE_IMPERFECT_SOUND ) /* KC044 */ GAME( 1999, tektagtac1,tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Asia, TEG2/VER.C1, set 2)", 0 ) /* KC044 */
GAME( 1999, tektagtub, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.B)", MACHINE_IMPERFECT_SOUND ) /* KC044 */ GAME( 1999, tektagtub, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.B)", 0 ) /* KC044 */
GAME( 1999, tektagtjc1,tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.C1)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC044 */ GAME( 1999, tektagtjc1,tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.C1)", MACHINE_NOT_WORKING ) /* KC044 */
GAME( 1999, tektagtjb, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.B)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC044 */ GAME( 1999, tektagtjb, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.B)", MACHINE_NOT_WORKING ) /* KC044 */
GAME( 1999, tektagtja, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.A3)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC044 */ GAME( 1999, tektagtja, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.A3)", MACHINE_NOT_WORKING ) /* KC044 */
GAME( 1999, ghlpanic, 0, ptblank2, ghlpanic, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Ghoul Panic (Asia, OB2/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC045 */ GAME( 1999, ghlpanic, 0, ptblank2, ghlpanic, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Ghoul Panic (Asia, OB2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC045 */
GAME( 1999, ohbakyuun, ghlpanic, ptblank2, ghlpanic, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Oh! Bakyuuun (Japan, OB1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC045 */ GAME( 1999, ohbakyuun, ghlpanic, ptblank2, ghlpanic, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Oh! Bakyuuun (Japan, OB1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC045 */
GAME( 1999, pacapp2, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion 2 (Japan, PKS1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC046 */ GAME( 1999, pacapp2, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion 2 (Japan, PKS1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC046 */
GAME( 1999, mrdrillr, 0, coh700, namcos124w,namcos12_state,namcos12, ROT0, "Namco", "Mr. Driller (US, DRI3/VER.A2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC048 */ GAME( 1999, mrdrillr, 0, coh700, namcos124w,namcos12_state,namcos12, ROT0, "Namco", "Mr. Driller (US, DRI3/VER.A2)", MACHINE_IMPERFECT_GRAPHICS ) /* KC048 */
GAME( 1999, mrdrillrj, mrdrillr, coh700, namcos124w,namcos12_state,namcos12, ROT0, "Namco", "Mr. Driller (Japan, DRI1/VER.A2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC048 */ GAME( 1999, mrdrillrj, mrdrillr, coh700, namcos124w,namcos12_state,namcos12, ROT0, "Namco", "Mr. Driller (Japan, DRI1/VER.A2)", MACHINE_IMPERFECT_GRAPHICS ) /* KC048 */
GAME( 1999, kaiunqz, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Kaiun Quiz (Japan, KW1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC050 */ GAME( 1999, kaiunqz, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Kaiun Quiz (Japan, KW1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC050 */
GAME( 1999, pacappsp, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion Special (Japan, PSP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC052 */ GAME( 1999, pacappsp, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion Special (Japan, PSP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC052 */
GAME( 1999, aquarush, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Aqua Rush (Japan, AQ1/VER.A1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC053 */ GAME( 1999, aquarush, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Aqua Rush (Japan, AQ1/VER.A1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC053 */
GAME( 1999, golgo13, 0, golgo13, golgo13, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Golgo 13 (Japan, GLG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC054 */ GAME( 1999, golgo13, 0, golgo13, golgo13, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Golgo 13 (Japan, GLG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC054 */
GAME( 1999, g13knd, 0, golgo13, golgo13, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* KC059 */ GAME( 1999, g13knd, 0, golgo13, golgo13, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC059 */
GAME( 2000, sws2000, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium 2000 (Japan, SS01/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC055 */ GAME( 2000, sws2000, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium 2000 (Japan, SS01/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC055 */
GAME( 2000, truckk, 0, truckk, namcos12, namcos12_state, namcos12, ROT0, "Metro / Namco", "Truck Kyosokyoku (Japan, TKK2/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC056 */ GAME( 2000, truckk, 0, truckk, namcos12, namcos12_state, namcos12, ROT0, "Metro / Namco", "Truck Kyosokyoku (Japan, TKK2/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC056 */
GAME( 2000, kartduel, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Kart Duel (Japan, KTD1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC057 */ GAME( 2000, kartduel, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Kart Duel (Japan, KTD1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC057 */
GAME( 2001, sws2001, sws2000, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium 2001 (Japan, SS11/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC061 */ GAME( 2001, sws2001, sws2000, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium 2001 (Japan, SS11/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC061 */

View File

@ -5106,7 +5106,7 @@ ROM_START( timecris )
ROM_LOAD( "ts1ptru2.15f", 0x80000*8, 0x80000,CRC(7cb25c73) SHA1(616eab3ac238864a584394f7ec8736ece227974a) ) ROM_LOAD( "ts1ptru2.15f", 0x80000*8, 0x80000,CRC(7cb25c73) SHA1(616eab3ac238864a584394f7ec8736ece227974a) )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "ts1wavea.2l", 0x000000, 0x400000, CRC(d1123301) SHA1(4bf1fd746fef4e6befa63c61a761971d729e1573) ) ROM_LOAD( "ts1wavea.2l", 0x000000, 0x400000, CRC(9ce8c093) SHA1(3e036104d79814579970196b763a55d16e4e9ee0) )
ROM_LOAD( "ts1waveb.1l", 0x800000, 0x200000, CRC(bf4d7272) SHA1(c7c7b3620e7b3176644b6784ee36e679c9e31cc1) ) ROM_LOAD( "ts1waveb.1l", 0x800000, 0x200000, CRC(bf4d7272) SHA1(c7c7b3620e7b3176644b6784ee36e679c9e31cc1) )
ROM_END ROM_END
@ -5605,33 +5605,33 @@ DRIVER_INIT_MEMBER(namcos22_state,dirtdash)
/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS */ /* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS */
/* System22 games */ /* System22 games */
GAME( 1993, ridgerac, 0, namcos22, ridgera, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR3, World)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 1994-01-17 GAME( 1993, ridgerac, 0, namcos22, ridgera, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR3, World)" , MACHINE_IMPERFECT_GRAPHICS ) // 1994-01-17
GAME( 1993, ridgerac3, ridgerac, namcos22, ridgera, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR2 Ver.B, World, 3-screen?)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-28, no indication that this really is a 3-screen version. GAME( 1993, ridgerac3, ridgerac, namcos22, ridgera, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR2 Ver.B, World, 3-screen?)", MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-28, no indication that this really is a 3-screen version.
GAME( 1993, ridgeracb, ridgerac, namcos22, ridgera, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR2, World)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-07 GAME( 1993, ridgeracb, ridgerac, namcos22, ridgera, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR2, World)" , MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-07
GAME( 1993, ridgeracj, ridgerac, namcos22, ridgera, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR1, Japan)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-07 GAME( 1993, ridgeracj, ridgerac, namcos22, ridgera, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR1, Japan)" , MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-07
GAME( 1993, ridgeracf, ridgerac, namcos22, ridgeracf, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer Full Scale (World)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 1993-12-13, very different version, incomplete dump. GAME( 1993, ridgeracf, ridgerac, namcos22, ridgeracf, namcos22_state, ridgeraj, ROT0, "Namco", "Ridge Racer Full Scale (World)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 1993-12-13, very different version, incomplete dump.
GAME( 1994, ridgera2, 0, namcos22, ridgera2, namcos22_state, ridger2j, ROT0, "Namco", "Ridge Racer 2 (Rev. RRS2, World)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 1994-06-21 GAME( 1994, ridgera2, 0, namcos22, ridgera2, namcos22_state, ridger2j, ROT0, "Namco", "Ridge Racer 2 (Rev. RRS2, World)" , MACHINE_IMPERFECT_GRAPHICS ) // 1994-06-21
GAME( 1994, ridgera2j, ridgera2, namcos22, ridgera2, namcos22_state, ridger2j, ROT0, "Namco", "Ridge Racer 2 (Rev. RRS1 Ver.B, Japan)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 1994-06-21 GAME( 1994, ridgera2j, ridgera2, namcos22, ridgera2, namcos22_state, ridger2j, ROT0, "Namco", "Ridge Racer 2 (Rev. RRS1 Ver.B, Japan)" , MACHINE_IMPERFECT_GRAPHICS ) // 1994-06-21
GAME( 1994, ridgera2ja,ridgera2, namcos22, ridgera2, namcos22_state, ridger2j, ROT0, "Namco", "Ridge Racer 2 (Rev. RRS1, Japan)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 1994-06-13 GAME( 1994, ridgera2ja,ridgera2, namcos22, ridgera2, namcos22_state, ridger2j, ROT0, "Namco", "Ridge Racer 2 (Rev. RRS1, Japan)" , MACHINE_IMPERFECT_GRAPHICS ) // 1994-06-13
GAME( 1994, cybrcomm, 0, namcos22, cybrcomm, namcos22_state, cybrcomm, ROT0, "Namco", "Cyber Commando (Rev. CY1, Japan)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 10/14/94 GAME( 1994, cybrcomm, 0, namcos22, cybrcomm, namcos22_state, cybrcomm, ROT0, "Namco", "Cyber Commando (Rev. CY1, Japan)" , MACHINE_IMPERFECT_GRAPHICS ) // 10/14/94
GAME( 1995, raveracw, 0, namcos22, raveracw, namcos22_state, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV2, World)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 07/16/95 GAME( 1995, raveracw, 0, namcos22, raveracw, namcos22_state, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV2, World)" , MACHINE_IMPERFECT_GRAPHICS ) // 07/16/95
GAME( 1995, raveracj, raveracw, namcos22, raveracw, namcos22_state, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV1 Ver.B, Japan)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 07/16/95 GAME( 1995, raveracj, raveracw, namcos22, raveracw, namcos22_state, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV1 Ver.B, Japan)" , MACHINE_IMPERFECT_GRAPHICS ) // 07/16/95
GAME( 1995, raveracja, raveracw, namcos22, raveracw, namcos22_state, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV1, Japan)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 06/29/95 GAME( 1995, raveracja, raveracw, namcos22, raveracw, namcos22_state, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV1, Japan)" , MACHINE_IMPERFECT_GRAPHICS ) // 06/29/95
GAME( 1994, acedrvrw, 0, namcos22, acedrvr, namcos22_state, acedrvr, ROT0, "Namco", "Ace Driver: Racing Evolution (Rev. AD2)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 94/10/20 16:22:25 GAME( 1994, acedrvrw, 0, namcos22, acedrvr, namcos22_state, acedrvr, ROT0, "Namco", "Ace Driver: Racing Evolution (Rev. AD2)", MACHINE_IMPERFECT_GRAPHICS ) // 94/10/20 16:22:25
GAME( 1996, victlapw, 0, namcos22, victlap, namcos22_state, victlap, ROT0, "Namco", "Ace Driver: Victory Lap (Rev. ADV2)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 96/02/13 17:50:06 GAME( 1996, victlapw, 0, namcos22, victlap, namcos22_state, victlap, ROT0, "Namco", "Ace Driver: Victory Lap (Rev. ADV2)" , MACHINE_IMPERFECT_GRAPHICS ) // 96/02/13 17:50:06
/* Super System22 games */ /* Super System22 games */
GAME( 1994, alpinerd, 0, alpine, alpiner, namcos22_state, alpiner, ROT0, "Namco", "Alpine Racer (Rev. AR2 Ver.D)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, alpinerd, 0, alpine, alpiner, namcos22_state, alpiner, ROT0, "Namco", "Alpine Racer (Rev. AR2 Ver.D)" , MACHINE_IMPERFECT_GRAPHICS )
GAME( 1994, alpinerc, alpinerd, alpine, alpiner, namcos22_state, alpiner, ROT0, "Namco", "Alpine Racer (Rev. AR2 Ver.C)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, alpinerc, alpinerd, alpine, alpiner, namcos22_state, alpiner, ROT0, "Namco", "Alpine Racer (Rev. AR2 Ver.C)" , MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, airco22b, 0, namcos22s, airco22, namcos22_state, airco22, ROT0, "Namco", "Air Combat 22 (Rev. ACS1 Ver.B, Japan)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // various problems GAME( 1995, airco22b, 0, namcos22s, airco22, namcos22_state, airco22, ROT0, "Namco", "Air Combat 22 (Rev. ACS1 Ver.B, Japan)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // various problems
GAME( 1995, cybrcycc, 0, namcos22s, cybrcycc, namcos22_state, cybrcyc, ROT0, "Namco", "Cyber Cycles (Rev. CB2 Ver.C)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 95/04/04 GAME( 1995, cybrcycc, 0, namcos22s, cybrcycc, namcos22_state, cybrcyc, ROT0, "Namco", "Cyber Cycles (Rev. CB2 Ver.C)" , MACHINE_IMPERFECT_GRAPHICS ) // 95/04/04
GAME( 1995, dirtdash, 0, namcos22s, dirtdash, namcos22_state, dirtdash, ROT0, "Namco", "Dirt Dash (Rev. DT2)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 95/12/20 20:01:56 GAME( 1995, dirtdash, 0, namcos22s, dirtdash, namcos22_state, dirtdash, ROT0, "Namco", "Dirt Dash (Rev. DT2)" , MACHINE_IMPERFECT_GRAPHICS ) // 95/12/20 20:01:56
GAME( 1995, timecris, 0, timecris, timecris, namcos22_state, timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.B)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 96/04/02 18:48:00 GAME( 1995, timecris, 0, timecris, timecris, namcos22_state, timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.B)" , MACHINE_IMPERFECT_GRAPHICS ) // 96/04/02 18:48:00
GAME( 1995, timecrisa,timecris, timecris, timecris, namcos22_state, timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.A)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 96/01/08 18:56:09 GAME( 1995, timecrisa,timecris, timecris, timecris, namcos22_state, timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.A)" , MACHINE_IMPERFECT_GRAPHICS ) // 96/01/08 18:56:09
GAME( 1996, propcycl, 0, propcycl, propcycl, namcos22_state, propcycl, ROT0, "Namco", "Prop Cycle (Rev. PR2 Ver.A)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 96/06/18 21:22:13 GAME( 1996, propcycl, 0, propcycl, propcycl, namcos22_state, propcycl, ROT0, "Namco", "Prop Cycle (Rev. PR2 Ver.A)" , MACHINE_IMPERFECT_GRAPHICS ) // 96/06/18 21:22:13
GAME( 1996, alpinesa, 0, alpinesa, alpiner, namcos22_state, alpinesa, ROT0, "Namco", "Alpine Surfer (Rev. AF2 Ver.A)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 96/07/01 15:19:23. major gfx problems, slave dsp? GAME( 1996, alpinesa, 0, alpinesa, alpiner, namcos22_state, alpinesa, ROT0, "Namco", "Alpine Surfer (Rev. AF2 Ver.A)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 96/07/01 15:19:23. major gfx problems, slave dsp?
GAME( 1996, tokyowar, 0, namcos22s, tokyowar, namcos22_state, tokyowar, ROT0, "Namco", "Tokyo Wars (Rev. TW2 Ver.A)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 96/09/03 14:08:47. near-invincible tanks, maybe related to timecris helicopter bug? GAME( 1996, tokyowar, 0, namcos22s, tokyowar, namcos22_state, tokyowar, ROT0, "Namco", "Tokyo Wars (Rev. TW2 Ver.A)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 96/09/03 14:08:47. near-invincible tanks, maybe related to timecris helicopter bug?
GAME( 1996, aquajet, 0, namcos22s, aquajet, namcos22_state, aquajet, ROT0, "Namco", "Aqua Jet (Rev. AJ2 Ver.B)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 96/09/20 14:28:30 GAME( 1996, aquajet, 0, namcos22s, aquajet, namcos22_state, aquajet, ROT0, "Namco", "Aqua Jet (Rev. AJ2 Ver.B)" , MACHINE_IMPERFECT_GRAPHICS ) // 96/09/20 14:28:30
GAME( 1996, alpinr2b, 0, alpine, alpiner, namcos22_state, alpiner2, ROT0, "Namco", "Alpine Racer 2 (Rev. ARS2 Ver.B)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 97/01/10 17:10:59 GAME( 1996, alpinr2b, 0, alpine, alpiner, namcos22_state, alpiner2, ROT0, "Namco", "Alpine Racer 2 (Rev. ARS2 Ver.B)" , MACHINE_IMPERFECT_GRAPHICS ) // 97/01/10 17:10:59
GAME( 1996, alpinr2a, alpinr2b, alpine, alpiner, namcos22_state, alpiner2, ROT0, "Namco", "Alpine Racer 2 (Rev. ARS2 Ver.A)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 96/12/06 13:45:05 GAME( 1996, alpinr2a, alpinr2b, alpine, alpiner, namcos22_state, alpiner2, ROT0, "Namco", "Alpine Racer 2 (Rev. ARS2 Ver.A)" , MACHINE_IMPERFECT_GRAPHICS ) // 96/12/06 13:45:05
GAME( 1996, adillor, 0, adillor, adillor, namcos22_state, adillor, ROT0, "Namco", "Armadillo Racing (Rev. AM1 Ver.A)" , MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // 97/04/07 19:19:41 GAME( 1996, adillor, 0, adillor, adillor, namcos22_state, adillor, ROT0, "Namco", "Armadillo Racing (Rev. AM1 Ver.A)" , MACHINE_IMPERFECT_GRAPHICS ) // 97/04/07 19:19:41

View File

@ -5126,7 +5126,7 @@ ROM_END
/* Games */ /* Games */
#define GAME_FLAGS (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) #define GAME_FLAGS (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS )
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS // YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS
GAME( 1997, rapidrvr, 0, gorgon, rapidrvr, namcos23_state, s23, ROT0, "Namco", "Rapid River (RD3 Ver. C)", GAME_FLAGS ) // 97/11/27, USA GAME( 1997, rapidrvr, 0, gorgon, rapidrvr, namcos23_state, s23, ROT0, "Namco", "Rapid River (RD3 Ver. C)", GAME_FLAGS ) // 97/11/27, USA
GAME( 1997, rapidrvrv2c, rapidrvr, gorgon, rapidrvr, namcos23_state, s23, ROT0, "Namco", "Rapid River (RD2 Ver. C)", GAME_FLAGS ) // 97/11/27, Europe GAME( 1997, rapidrvrv2c, rapidrvr, gorgon, rapidrvr, namcos23_state, s23, ROT0, "Namco", "Rapid River (RD2 Ver. C)", GAME_FLAGS ) // 97/11/27, Europe

View File

@ -253,6 +253,9 @@ static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state )
AM_RANGE(0x1000, 0xffff) AM_ROM AM_RANGE(0x1000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( overdriv_k053260_map, AS_0, 8, overdriv_state )
AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_REGION("k053260", 0)
ADDRESS_MAP_END
/* Both IPT_START1 assignments are needed. The game will reset during */ /* Both IPT_START1 assignments are needed. The game will reset during */
/* the "continue" sequence if the assignment on the first port */ /* the "continue" sequence if the assignment on the first port */
@ -375,12 +378,12 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
MCFG_SOUND_ROUTE(1, "rspeaker", 0.5) MCFG_SOUND_ROUTE(1, "rspeaker", 0.5)
MCFG_K053260_ADD("k053260_1", XTAL_3_579545MHz) MCFG_K053260_ADD("k053260_1", XTAL_3_579545MHz)
MCFG_K053260_REGION("shared") MCFG_DEVICE_ADDRESS_MAP(AS_0, overdriv_k053260_map)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
MCFG_K053260_ADD("k053260_2", XTAL_3_579545MHz) MCFG_K053260_ADD("k053260_2", XTAL_3_579545MHz)
MCFG_K053260_REGION("shared") MCFG_DEVICE_ADDRESS_MAP(AS_0, overdriv_k053260_map)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -426,7 +429,7 @@ ROM_START( overdriv )
ROM_LOAD( "789e17.p17", 0x000000, 0x040000, CRC(04c07248) SHA1(873445002cbf90c9fc5a35bf4a8f6c43193ee342) ) ROM_LOAD( "789e17.p17", 0x000000, 0x040000, CRC(04c07248) SHA1(873445002cbf90c9fc5a35bf4a8f6c43193ee342) )
ROM_LOAD( "789e16.p12", 0x040000, 0x040000, CRC(9348dee1) SHA1(367193373e28962b5b0e54cc15d68ed88ab83f12) ) ROM_LOAD( "789e16.p12", 0x040000, 0x040000, CRC(9348dee1) SHA1(367193373e28962b5b0e54cc15d68ed88ab83f12) )
ROM_REGION( 0x200000, "shared", 0 ) /* 053260 samples */ ROM_REGION( 0x200000, "k053260", 0 ) /* 053260 samples */
ROM_LOAD( "789e03.j1", 0x000000, 0x100000, CRC(51ebfebe) SHA1(17f0c23189258e801f48d5833fe934e7a48d071b) ) ROM_LOAD( "789e03.j1", 0x000000, 0x100000, CRC(51ebfebe) SHA1(17f0c23189258e801f48d5833fe934e7a48d071b) )
ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) ) ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) )
ROM_END ROM_END
@ -464,7 +467,7 @@ ROM_START( overdriva )
ROM_LOAD( "789e17.p17", 0x000000, 0x040000, CRC(04c07248) SHA1(873445002cbf90c9fc5a35bf4a8f6c43193ee342) ) ROM_LOAD( "789e17.p17", 0x000000, 0x040000, CRC(04c07248) SHA1(873445002cbf90c9fc5a35bf4a8f6c43193ee342) )
ROM_LOAD( "789e16.p12", 0x040000, 0x040000, CRC(9348dee1) SHA1(367193373e28962b5b0e54cc15d68ed88ab83f12) ) ROM_LOAD( "789e16.p12", 0x040000, 0x040000, CRC(9348dee1) SHA1(367193373e28962b5b0e54cc15d68ed88ab83f12) )
ROM_REGION( 0x200000, "shared", 0 ) /* 053260 samples */ ROM_REGION( 0x200000, "k053260", 0 ) /* 053260 samples */
ROM_LOAD( "789e03.j1", 0x000000, 0x100000, CRC(51ebfebe) SHA1(17f0c23189258e801f48d5833fe934e7a48d071b) ) ROM_LOAD( "789e03.j1", 0x000000, 0x100000, CRC(51ebfebe) SHA1(17f0c23189258e801f48d5833fe934e7a48d071b) )
ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) ) ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) )
ROM_END ROM_END
@ -502,7 +505,7 @@ ROM_START( overdrivb )
ROM_LOAD( "789e17.p17", 0x000000, 0x040000, CRC(04c07248) SHA1(873445002cbf90c9fc5a35bf4a8f6c43193ee342) ) ROM_LOAD( "789e17.p17", 0x000000, 0x040000, CRC(04c07248) SHA1(873445002cbf90c9fc5a35bf4a8f6c43193ee342) )
ROM_LOAD( "789e16.p12", 0x040000, 0x040000, CRC(9348dee1) SHA1(367193373e28962b5b0e54cc15d68ed88ab83f12) ) ROM_LOAD( "789e16.p12", 0x040000, 0x040000, CRC(9348dee1) SHA1(367193373e28962b5b0e54cc15d68ed88ab83f12) )
ROM_REGION( 0x200000, "shared", 0 ) /* 053260 samples */ ROM_REGION( 0x200000, "k053260", 0 ) /* 053260 samples */
ROM_LOAD( "789e03.j1", 0x000000, 0x100000, CRC(51ebfebe) SHA1(17f0c23189258e801f48d5833fe934e7a48d071b) ) ROM_LOAD( "789e03.j1", 0x000000, 0x100000, CRC(51ebfebe) SHA1(17f0c23189258e801f48d5833fe934e7a48d071b) )
ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) ) ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) )
ROM_END ROM_END

View File

@ -127,7 +127,6 @@ static ADDRESS_MAP_START( parodius_sound_map, AS_PROGRAM, 8, parodius_state )
AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
/*************************************************************************** /***************************************************************************
Input Ports Input Ports

View File

@ -6,16 +6,16 @@ PINBALL
Playmatic MPU 1 Playmatic MPU 1
ToDo: ToDo:
- Sounds play too fast, especially in Chance. - Add remaining mechanical sounds
- Add mechanical sounds - Lamps, solenoids (spcgambl has a "cone" lighted by the COx outputs)
- Lamps, solenoids
- Ball numbers are individual lamps
Notes: Notes:
All games work.
Max credits is 15.
X is the outhole. X is the outhole.
Chance: When starting the game, hold down X to make "Player 1" light up. Chance: When starting the game, hold down X to make "Player 1" light up.
Others: When starting the game, hold down X, then release it and hit Z to advance Others: When starting the game, hold down X, then release and hit Z, otherwise
the player to the correct number otherwise some weird bugs can happen. some weird bugs can happen.
**********************************************************************************/ **********************************************************************************/
@ -26,11 +26,11 @@ Others: When starting the game, hold down X, then release it and hit Z to advanc
#include "sound/speaker.h" #include "sound/speaker.h"
#include "play_1.lh" #include "play_1.lh"
class play_1_state : public driver_device class play_1_state : public genpin_class
{ {
public: public:
play_1_state(const machine_config &mconfig, device_type type, const char *tag) play_1_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) : genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_dips(*this, "X") , m_dips(*this, "X")
, m_monotone(*this, "monotone") , m_monotone(*this, "monotone")
@ -44,6 +44,7 @@ public:
DECLARE_WRITE8_MEMBER(port05_w); DECLARE_WRITE8_MEMBER(port05_w);
DECLARE_WRITE8_MEMBER(port06_w); DECLARE_WRITE8_MEMBER(port06_w);
DECLARE_READ_LINE_MEMBER(clear_r); DECLARE_READ_LINE_MEMBER(clear_r);
DECLARE_READ_LINE_MEMBER(wait_r);
DECLARE_READ_LINE_MEMBER(ef2_r); DECLARE_READ_LINE_MEMBER(ef2_r);
DECLARE_READ_LINE_MEMBER(ef3_r); DECLARE_READ_LINE_MEMBER(ef3_r);
DECLARE_READ_LINE_MEMBER(ef4_r); DECLARE_READ_LINE_MEMBER(ef4_r);
@ -52,8 +53,10 @@ public:
private: private:
UINT16 m_resetcnt; UINT16 m_resetcnt;
UINT16 m_clockcnt; UINT16 m_clockcnt;
UINT16 m_waitcnt;
UINT8 m_segment; UINT8 m_segment;
UINT8 m_match; UINT8 m_match;
UINT8 m_ball;
virtual void machine_reset() override; virtual void machine_reset() override;
required_device<cosmac_device> m_maincpu; required_device<cosmac_device> m_maincpu;
required_ioport_array<4> m_dips; required_ioport_array<4> m_dips;
@ -62,14 +65,14 @@ private:
static ADDRESS_MAP_START( play_1_map, AS_PROGRAM, 8, play_1_state ) static ADDRESS_MAP_START( play_1_map, AS_PROGRAM, 8, play_1_state )
ADDRESS_MAP_GLOBAL_MASK(0xfff) ADDRESS_MAP_GLOBAL_MASK(0xfff)
AM_RANGE(0x0000, 0x07ff) AM_ROM AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("roms", 0)
AM_RANGE(0x0800, 0x081f) AM_RAM AM_SHARE("nvram") // capacitor acting as a 2-month "battery" AM_RANGE(0x0800, 0x081f) AM_RAM AM_SHARE("nvram") // capacitor acting as a 2-month "battery"
AM_RANGE(0x0c00, 0x0c1f) AM_RAM AM_RANGE(0x0c00, 0x0c1f) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( chance_map, AS_PROGRAM, 8, play_1_state ) static ADDRESS_MAP_START( chance_map, AS_PROGRAM, 8, play_1_state )
ADDRESS_MAP_GLOBAL_MASK(0xfff) ADDRESS_MAP_GLOBAL_MASK(0xfff)
AM_RANGE(0x0000, 0x0bff) AM_ROM AM_RANGE(0x0000, 0x0bff) AM_ROM AM_REGION("roms", 0)
AM_RANGE(0x0c00, 0x0c1f) AM_RAM AM_RANGE(0x0c00, 0x0c1f) AM_RAM
AM_RANGE(0x0e00, 0x0e1f) AM_RAM AM_SHARE("nvram") // capacitor acting as a 2-month "battery" AM_RANGE(0x0e00, 0x0e1f) AM_RAM AM_SHARE("nvram") // capacitor acting as a 2-month "battery"
ADDRESS_MAP_END ADDRESS_MAP_END
@ -86,9 +89,9 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( chance ) static INPUT_PORTS_START( chance )
PORT_START("X.0") PORT_START("X.0")
// PORT_DIPNAME(0x01, 0x01, DEF_STR( Coinage ) ) // this is something else, don't know what yet PORT_DIPNAME(0x01, 0x01, "Unknown" ) // Shows in schematic, not mentioned in the manuals, appears to have no effect
// PORT_DIPSETTING ( 0x00, DEF_STR( 1C_3C ) ) PORT_DIPSETTING ( 0x00, "3 games" )
// PORT_DIPSETTING ( 0x01, DEF_STR( 1C_1C ) ) PORT_DIPSETTING ( 0x01, "1 game" )
PORT_DIPNAME(0x02, 0x00, "Balls") PORT_DIPNAME(0x02, 0x00, "Balls")
PORT_DIPSETTING ( 0x00, "3" ) PORT_DIPSETTING ( 0x00, "3" )
PORT_DIPSETTING ( 0x02, "5" ) PORT_DIPSETTING ( 0x02, "5" )
@ -97,7 +100,7 @@ static INPUT_PORTS_START( chance )
PORT_DIPSETTING ( 0x04, "Extra ball" ) PORT_DIPSETTING ( 0x04, "Extra ball" )
PORT_START("X.1") PORT_START("X.1")
PORT_DIPNAME(0xff, 0x10, "Coinage for slot 2" ) PORT_DIPNAME(0xff, 0x08, "Coinage for slot 2" )
PORT_DIPSETTING ( 0x01, DEF_STR( 2C_1C ) ) PORT_DIPSETTING ( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING ( 0x02, DEF_STR( 1C_1C ) ) PORT_DIPSETTING ( 0x02, DEF_STR( 1C_1C ) )
PORT_DIPSETTING ( 0x04, DEF_STR( 2C_3C ) ) PORT_DIPSETTING ( 0x04, DEF_STR( 2C_3C ) )
@ -108,7 +111,7 @@ static INPUT_PORTS_START( chance )
PORT_DIPSETTING ( 0x80, DEF_STR( 1C_6C ) ) PORT_DIPSETTING ( 0x80, DEF_STR( 1C_6C ) )
PORT_START("X.2") PORT_START("X.2")
PORT_DIPNAME(0xff, 0x10, "Coinage for slot 3" ) PORT_DIPNAME(0xff, 0x01, "Coinage for slot 3" )
PORT_DIPSETTING ( 0x01, DEF_STR( 1C_3C ) ) PORT_DIPSETTING ( 0x01, DEF_STR( 1C_3C ) )
PORT_DIPSETTING ( 0x02, DEF_STR( 1C_4C ) ) PORT_DIPSETTING ( 0x02, DEF_STR( 1C_4C ) )
PORT_DIPSETTING ( 0x04, DEF_STR( 1C_5C ) ) PORT_DIPSETTING ( 0x04, DEF_STR( 1C_5C ) )
@ -150,11 +153,11 @@ static INPUT_PORTS_START( chance )
PORT_START("IN4") // 41-48 PORT_START("IN4") // 41-48
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z) // lastlap trough PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) // lastlap outhole PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
@ -185,7 +188,6 @@ static INPUT_PORTS_START( chance )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD) // Set 3rd replay score PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD) // Set 3rd replay score
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8_PAD) // Set 2nd replay score PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8_PAD) // Set 2nd replay score
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD) // Set 1st replay score PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD) // Set 1st replay score
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( play_1 ) static INPUT_PORTS_START( play_1 )
@ -237,15 +239,17 @@ INPUT_PORTS_END
void play_1_state::machine_reset() void play_1_state::machine_reset()
{ {
m_waitcnt = 0xffff;
m_resetcnt = 0; m_resetcnt = 0;
m_clockcnt = 0; m_clockcnt = 0;
m_segment = 0; m_segment = 0;
m_match = 0; m_match = 0;
m_ball = 0;
} }
READ8_MEMBER( play_1_state::port07_r ) READ8_MEMBER( play_1_state::port07_r )
{ {
UINT8 data = m_dips[3]->read(); UINT8 data = m_dips[3]->read() & 0x3f;
data |= (m_segment & m_dips[1]->read()) ? 0x40 : 0; data |= (m_segment & m_dips[1]->read()) ? 0x40 : 0;
data |= (m_segment & m_dips[2]->read()) ? 0x80 : 0; data |= (m_segment & m_dips[2]->read()) ? 0x80 : 0;
return data; return data;
@ -262,17 +266,25 @@ WRITE8_MEMBER( play_1_state::port01_w )
output().set_digit_value(40, 0); output().set_digit_value(40, 0);
if (BIT(data, 1)) if (BIT(data, 1))
{
output().set_digit_value(44, patterns[0]);
output().set_digit_value(45, patterns[0]); output().set_digit_value(45, patterns[0]);
}
else else
{
output().set_digit_value(44, 0);
output().set_digit_value(45, 0); output().set_digit_value(45, 0);
}
m_match = patterns[data>>4] & 0x7f; m_match = patterns[data>>4] & 0x7f;
m_waitcnt = 0;
} }
WRITE8_MEMBER( play_1_state::port02_w ) WRITE8_MEMBER( play_1_state::port02_w )
{ {
// N1-8, segments and other // N1-8, segments and other
m_segment = data; m_segment = data;
m_waitcnt = 0;
} }
WRITE8_MEMBER( play_1_state::port03_w ) WRITE8_MEMBER( play_1_state::port03_w )
@ -282,10 +294,14 @@ WRITE8_MEMBER( play_1_state::port03_w )
switch (~data & 15) switch (~data & 15)
{ {
case 0: case 0:
// M1 thru M8 (unknown purpose) bit 4 lights up the bumpers // M1 thru M8: bit 4 lights up the bumpers, bit 6 outhole, bit 7 knocker
if (BIT(m_segment, 6)) // outhole
m_samples->start(0, 5);
if (BIT(m_segment, 7)) // knocker
m_samples->start(0, 6);
break; break;
case 1: case 1:
// a combination of bits could set higher frequencies, but that isn't documented // a combination of bits could set higher frequencies, but that isn't documented or used
if (BIT(m_segment, 0)) if (BIT(m_segment, 0))
m_monotone->set_unscaled_clock(523); m_monotone->set_unscaled_clock(523);
else else
@ -300,7 +316,7 @@ WRITE8_MEMBER( play_1_state::port03_w )
else else
if ((m_segment & 0x0F)==0) if ((m_segment & 0x0F)==0)
m_monotone->set_unscaled_clock(0); m_monotone->set_unscaled_clock(0);
// Bit 4 adjusts the volume, not emulated yet // Bit 4 when low makes the sound fade out, not emulated yet
// display player number // display player number
{ {
@ -359,21 +375,26 @@ WRITE8_MEMBER( play_1_state::port03_w )
default: default:
break; break;
} }
m_waitcnt = 0;
} }
WRITE8_MEMBER( play_1_state::port04_w ) WRITE8_MEMBER( play_1_state::port04_w )
{ {
// U1-8 // U1-8
m_ball = data;
m_waitcnt = 0;
} }
WRITE8_MEMBER( play_1_state::port05_w ) WRITE8_MEMBER( play_1_state::port05_w )
{ {
// V1-8 // V1-8
m_waitcnt = 0;
} }
WRITE8_MEMBER( play_1_state::port06_w ) WRITE8_MEMBER( play_1_state::port06_w )
{ {
// W1-8 // W1-8
m_waitcnt = 0;
} }
READ_LINE_MEMBER( play_1_state::clear_r ) READ_LINE_MEMBER( play_1_state::clear_r )
@ -384,6 +405,18 @@ READ_LINE_MEMBER( play_1_state::clear_r )
return (m_resetcnt == 0x8000) ? 0 : 1; return (m_resetcnt == 0x8000) ? 0 : 1;
} }
READ_LINE_MEMBER( play_1_state::wait_r )
{
// Any OUT instruction forces a 60-100msec wait
if (m_waitcnt < 0x180)
{
m_waitcnt++;
return 0;
}
else
return 1;
}
READ_LINE_MEMBER( play_1_state::ef2_r ) READ_LINE_MEMBER( play_1_state::ef2_r )
{ {
return !BIT(m_dips[0]->read(), 0); // 1 or 3 games dip (1=1 game) inverted return !BIT(m_dips[0]->read(), 0); // 1 or 3 games dip (1=1 game) inverted
@ -409,7 +442,14 @@ WRITE_LINE_MEMBER( play_1_state::clock_w )
if (BIT(m_clockcnt, 1)) if (BIT(m_clockcnt, 1))
output().set_digit_value(41, m_match); output().set_digit_value(41, m_match);
else else
output().set_digit_value(44, m_match); {
output().set_digit_value(43, m_match);
output().set_value("led1", !BIT(m_ball, 1));
output().set_value("led2", !BIT(m_ball, 2));
output().set_value("led3", !BIT(m_ball, 3));
output().set_value("led4", !BIT(m_ball, 4));
output().set_value("led5", !BIT(m_ball, 5));
}
} }
} }
@ -418,7 +458,7 @@ static MACHINE_CONFIG_START( play_1, play_1_state )
MCFG_CPU_ADD("maincpu", CDP1802, 400000) // 2 gates, 1 cap, 1 resistor oscillating somewhere between 350 to 450 kHz MCFG_CPU_ADD("maincpu", CDP1802, 400000) // 2 gates, 1 cap, 1 resistor oscillating somewhere between 350 to 450 kHz
MCFG_CPU_PROGRAM_MAP(play_1_map) MCFG_CPU_PROGRAM_MAP(play_1_map)
MCFG_CPU_IO_MAP(play_1_io) MCFG_CPU_IO_MAP(play_1_io)
MCFG_COSMAC_WAIT_CALLBACK(VCC) MCFG_COSMAC_WAIT_CALLBACK(READLINE(play_1_state, wait_r))
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_1_state, clear_r)) MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_1_state, clear_r))
MCFG_COSMAC_EF2_CALLBACK(READLINE(play_1_state, ef2_r)) MCFG_COSMAC_EF2_CALLBACK(READLINE(play_1_state, ef2_r))
MCFG_COSMAC_EF3_CALLBACK(READLINE(play_1_state, ef3_r)) MCFG_COSMAC_EF3_CALLBACK(READLINE(play_1_state, ef3_r))
@ -429,7 +469,7 @@ static MACHINE_CONFIG_START( play_1, play_1_state )
/* Video */ /* Video */
MCFG_DEFAULT_LAYOUT(layout_play_1) MCFG_DEFAULT_LAYOUT(layout_play_1)
MCFG_DEVICE_ADD("xpoint", CLOCK, 120) // crossing-point detector MCFG_DEVICE_ADD("xpoint", CLOCK, 100) // crossing-point detector
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_1_state, clock_w)) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_1_state, clock_w))
/* Sound */ /* Sound */
@ -450,7 +490,7 @@ MACHINE_CONFIG_END
/ Space Gambler (03/78) / Space Gambler (03/78)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(spcgambl) ROM_START(spcgambl)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x800, "roms", 0)
ROM_LOAD("spcgamba.bin", 0x0000, 0x0400, CRC(3b6e5287) SHA1(4d2fae779bb4117a99a9311b96ab79799f40067b)) ROM_LOAD("spcgamba.bin", 0x0000, 0x0400, CRC(3b6e5287) SHA1(4d2fae779bb4117a99a9311b96ab79799f40067b))
ROM_LOAD("spcgambb.bin", 0x0400, 0x0400, CRC(5c61f25c) SHA1(44b2d74926bf5678146b6d2347b4147e8a29a660)) ROM_LOAD("spcgambb.bin", 0x0400, 0x0400, CRC(5c61f25c) SHA1(44b2d74926bf5678146b6d2347b4147e8a29a660))
ROM_END ROM_END
@ -459,7 +499,7 @@ ROM_END
/ Big Town (04/78) / Big Town (04/78)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(bigtown) ROM_START(bigtown)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x800, "roms", 0)
ROM_LOAD("bigtowna.bin", 0x0000, 0x0400, CRC(253f1b93) SHA1(7ff5267d0dfe6ae19ec6b0412902f4ce83f23ed1)) ROM_LOAD("bigtowna.bin", 0x0000, 0x0400, CRC(253f1b93) SHA1(7ff5267d0dfe6ae19ec6b0412902f4ce83f23ed1))
ROM_LOAD("bigtownb.bin", 0x0400, 0x0400, CRC(5e2ba9c0) SHA1(abd285aa5702c7fb84257b4341f64ff83c1fc0ce)) ROM_LOAD("bigtownb.bin", 0x0400, 0x0400, CRC(5e2ba9c0) SHA1(abd285aa5702c7fb84257b4341f64ff83c1fc0ce))
ROM_END ROM_END
@ -468,7 +508,7 @@ ROM_END
/ Last Lap (09/78) / Last Lap (09/78)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(lastlap) ROM_START(lastlap)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x800, "roms", 0)
ROM_LOAD("lastlapa.bin", 0x0000, 0x0400, CRC(253f1b93) SHA1(7ff5267d0dfe6ae19ec6b0412902f4ce83f23ed1)) ROM_LOAD("lastlapa.bin", 0x0000, 0x0400, CRC(253f1b93) SHA1(7ff5267d0dfe6ae19ec6b0412902f4ce83f23ed1))
ROM_LOAD("lastlapb.bin", 0x0400, 0x0400, CRC(5e2ba9c0) SHA1(abd285aa5702c7fb84257b4341f64ff83c1fc0ce)) ROM_LOAD("lastlapb.bin", 0x0400, 0x0400, CRC(5e2ba9c0) SHA1(abd285aa5702c7fb84257b4341f64ff83c1fc0ce))
ROM_END ROM_END
@ -477,7 +517,7 @@ ROM_END
/ Chance (09/78) / Chance (09/78)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(chance) ROM_START(chance)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0xc00, "roms", 0)
ROM_LOAD("chance_a.bin", 0x0000, 0x0400, CRC(3cd9d5a6) SHA1(c1d9488495a67198f7f60f70a889a9a3062c71d7)) ROM_LOAD("chance_a.bin", 0x0000, 0x0400, CRC(3cd9d5a6) SHA1(c1d9488495a67198f7f60f70a889a9a3062c71d7))
ROM_LOAD("chance_b.bin", 0x0400, 0x0400, CRC(a281b0f1) SHA1(1d2d26ce5f50294d5a95f688c82c3bdcec75de95)) ROM_LOAD("chance_b.bin", 0x0400, 0x0400, CRC(a281b0f1) SHA1(1d2d26ce5f50294d5a95f688c82c3bdcec75de95))
ROM_LOAD("chance_c.bin", 0x0800, 0x0200, CRC(369afee3) SHA1(7fa46c7f255a5ef21b0d1cc018056bc4889d68b8)) ROM_LOAD("chance_c.bin", 0x0800, 0x0200, CRC(369afee3) SHA1(7fa46c7f255a5ef21b0d1cc018056bc4889d68b8))
@ -487,15 +527,15 @@ ROM_END
/ Party (05/79) / Party (05/79)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(party) ROM_START(party)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x800, "roms", 0)
ROM_LOAD("party_a.bin", 0x0000, 0x0400, CRC(253f1b93) SHA1(7ff5267d0dfe6ae19ec6b0412902f4ce83f23ed1)) ROM_LOAD("party_a.bin", 0x0000, 0x0400, CRC(253f1b93) SHA1(7ff5267d0dfe6ae19ec6b0412902f4ce83f23ed1))
ROM_LOAD("party_b.bin", 0x0400, 0x0400, CRC(5e2ba9c0) SHA1(abd285aa5702c7fb84257b4341f64ff83c1fc0ce)) ROM_LOAD("party_b.bin", 0x0400, 0x0400, CRC(5e2ba9c0) SHA1(abd285aa5702c7fb84257b4341f64ff83c1fc0ce))
ROM_END ROM_END
/* Big Town, Last Lap and Party all reportedly share the same roms with different playfield/machine artworks */ /* Big Town, Last Lap and Party all reportedly share the same roms with different playfield/machine artworks */
GAME(1978, bigtown, 0, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Big Town", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND ) GAME(1978, bigtown, 0, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Big Town", MACHINE_MECHANICAL )
GAME(1978, chance, 0, chance, chance, driver_device, 0, ROT0, "Playmatic", "Chance", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1978, lastlap, bigtown, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Last Lap", MACHINE_MECHANICAL )
GAME(1978, lastlap, bigtown, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Last Lap", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1979, party, bigtown, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Party", MACHINE_MECHANICAL )
GAME(1978, spcgambl, 0, play_1, spcgambl, driver_device, 0, ROT0, "Playmatic", "Space Gambler", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1978, spcgambl, 0, play_1, spcgambl, driver_device, 0, ROT0, "Playmatic", "Space Gambler", MACHINE_MECHANICAL )
GAME(1979, party, bigtown, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Party", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1978, chance, 0, chance, chance, driver_device, 0, ROT0, "Playmatic", "Chance", MACHINE_MECHANICAL )

View File

@ -5,32 +5,46 @@
PINBALL PINBALL
Playmatic MPU 2 Playmatic MPU 2
Status: 4 different sound boards were used.
- Those without sound roms use a CDP1863
- Zira uses a COP402 and a AY-3-8910
- Cerberus uses a 90435 (appears to be a CDP1802) and a 90503 (unknown)
- Mad Race uses a Sound Board IV (same as MPU-3 and later), but I/O ports
that talk to it are unknown.
ToDo:
- Lamps, Solenoids to add - Lamps, Solenoids to add
- AY chips output port adds various components across the analog outputs (including muting)
- Mechanical sounds to add - Mechanical sounds to add
- Sound board to add - Some sound boards to add
- Most games work
Notes:
- Mad Race: S is the outhole for now. Game works, but no sound.
- Zira, Cerberus: not working
- Others: X is the outhole, and these games all work.
- Hold down the outhole key (usually X), when starting a game.
***********************************************************************************/ ***********************************************************************************/
#include "machine/genpin.h" #include "machine/genpin.h"
#include "cpu/cosmac/cosmac.h" #include "cpu/cosmac/cosmac.h"
#include "cpu/cop400/cop400.h"
#include "machine/clock.h" #include "machine/clock.h"
#include "machine/7474.h" #include "machine/7474.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "sound/cdp1863.h"
#include "play_2.lh" #include "play_2.lh"
class play_2_state : public driver_device class play_2_state : public genpin_class
{ {
public: public:
play_2_state(const machine_config &mconfig, device_type type, const char *tag) play_2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) : genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_audiocpu(*this, "audiocpu")
, m_4013a(*this, "4013a") , m_4013a(*this, "4013a")
, m_4013b(*this, "4013b") , m_4013b(*this, "4013b")
, m_1863(*this, "1863")
, m_aysnd1(*this, "aysnd1")
, m_keyboard(*this, "X") , m_keyboard(*this, "X")
{ } { }
@ -47,54 +61,49 @@ public:
DECLARE_WRITE_LINE_MEMBER(q4013a_w); DECLARE_WRITE_LINE_MEMBER(q4013a_w);
DECLARE_WRITE_LINE_MEMBER(clock_w); DECLARE_WRITE_LINE_MEMBER(clock_w);
DECLARE_WRITE_LINE_MEMBER(clock2_w); DECLARE_WRITE_LINE_MEMBER(clock2_w);
DECLARE_WRITE8_MEMBER(port01_a_w); // Zira
DECLARE_READ8_MEMBER(port02_a_r); DECLARE_WRITE8_MEMBER(sound_d_w);
DECLARE_READ_LINE_MEMBER(clear_a_r); DECLARE_WRITE8_MEMBER(sound_g_w);
DECLARE_READ8_MEMBER(psg_r);
DECLARE_WRITE8_MEMBER(psg_w);
DECLARE_READ8_MEMBER(sound_in_r);
DECLARE_DRIVER_INIT(zira);
private: private:
UINT16 m_clockcnt; UINT16 m_clockcnt;
UINT16 m_resetcnt; UINT16 m_resetcnt;
UINT16 m_resetcnt_a;
UINT8 m_soundlatch;
UINT8 m_a_irqset;
UINT16 m_a_irqcnt;
UINT8 m_kbdrow; UINT8 m_kbdrow;
UINT8 m_segment[5]; UINT8 m_segment[5];
bool m_disp_sw; bool m_disp_sw;
UINT8 m_soundlatch;
UINT8 m_psg_latch;
virtual void machine_reset() override; virtual void machine_reset() override;
required_device<cosmac_device> m_maincpu; required_device<cosmac_device> m_maincpu;
required_device<cosmac_device> m_audiocpu;
required_device<ttl7474_device> m_4013a; required_device<ttl7474_device> m_4013a;
required_device<ttl7474_device> m_4013b; required_device<ttl7474_device> m_4013b;
optional_device<cdp1863_device> m_1863;
optional_device<ay8910_device> m_aysnd1;
required_ioport_array<8> m_keyboard; required_ioport_array<8> m_keyboard;
}; };
static ADDRESS_MAP_START( play_2_map, AS_PROGRAM, 8, play_2_state ) static ADDRESS_MAP_START( play_2_map, AS_PROGRAM, 8, play_2_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0)
AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( play_2_io, AS_IO, 8, play_2_state ) static ADDRESS_MAP_START( play_2_io, AS_IO, 8, play_2_state )
AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits
AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) AM_RANGE(0x02, 0x02) AM_WRITE(port02_w)
AM_RANGE(0x03, 0x03) AM_WRITE(port03_w) AM_RANGE(0x03, 0x03) AM_DEVWRITE("1863", cdp1863_device, str_w)
AM_RANGE(0x04, 0x04) AM_READ(port04_r) AM_RANGE(0x04, 0x04) AM_READ(port04_r)
AM_RANGE(0x05, 0x05) AM_READ(port05_r) AM_RANGE(0x05, 0x05) AM_READ(port05_r)
AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments
AM_RANGE(0x07, 0x07) AM_WRITE(port07_w) AM_RANGE(0x07, 0x07) AM_WRITE(port07_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( play_2_audio_map, AS_PROGRAM, 8, play_2_state ) static ADDRESS_MAP_START( zira_sound_map, AS_PROGRAM, 8, play_2_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x000, 0x3ff) AM_ROMBANK("bank1")
AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("aysnd1", ay8910_device, data_r, address_data_w)
AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("aysnd2", ay8910_device, data_r, address_data_w)
AM_RANGE(0x8000, 0x80ff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( play_2_audio_io, AS_IO, 8, play_2_state )
AM_RANGE(0x01, 0x01) AM_WRITE(port01_a_w) // irq counter
AM_RANGE(0x02, 0x02) AM_READ(port02_a_r) // sound code
ADDRESS_MAP_END ADDRESS_MAP_END
@ -111,7 +120,7 @@ static INPUT_PORTS_START( play_2 )
PORT_START("X.1") // 21-28 PORT_START("X.1") // 21-28
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S) // outhole on Mad Race
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G)
@ -177,11 +186,7 @@ void play_2_state::machine_reset()
{ {
m_clockcnt = 0; m_clockcnt = 0;
m_resetcnt = 0; m_resetcnt = 0;
m_resetcnt_a = 0;
m_4013b->d_w(1); m_4013b->d_w(1);
m_a_irqset = 54; // default value of the CDP1863
m_a_irqcnt = (m_a_irqset << 3) | 7;
m_soundlatch = 0;
m_kbdrow = 0; m_kbdrow = 0;
m_disp_sw = 0; m_disp_sw = 0;
for (UINT8 i = 0; i < 5; i++) for (UINT8 i = 0; i < 5; i++)
@ -197,19 +202,17 @@ WRITE8_MEMBER( play_2_state::port01_w )
for (UINT8 j = 0; j < 6; j++) for (UINT8 j = 0; j < 6; j++)
if (BIT(m_kbdrow, j)) if (BIT(m_kbdrow, j))
for (UINT8 i = 0; i < 5; i++) for (UINT8 i = 0; i < 5; i++)
output().set_digit_value(j*10 + i, m_segment[i]); output().set_digit_value(j*10 + i, m_segment[i] & 0x7f);
} }
m_1863->oe_w(BIT(data, 7)); // this actually mutes the audio amp, but doing it this way is far easier
} }
WRITE8_MEMBER( play_2_state::port06_w ) WRITE8_MEMBER( play_2_state::port06_w )
{ {
//m_soundlatch = data;
} }
WRITE8_MEMBER( play_2_state::port03_w ) WRITE8_MEMBER( play_2_state::port03_w )
{ {
if (BIT(data, 6))
m_audiocpu->ef1_w(1); // inverted
} }
READ8_MEMBER( play_2_state::port04_r ) READ8_MEMBER( play_2_state::port04_r )
@ -239,22 +242,11 @@ WRITE8_MEMBER( play_2_state::port02_w )
WRITE8_MEMBER( play_2_state::port07_w ) WRITE8_MEMBER( play_2_state::port07_w )
{ {
m_soundlatch = (data & 0x70) >> 4; // Zira (manual doesn't say where data comes from)
m_4013b->clear_w(0); m_4013b->clear_w(0);
m_4013b->clear_w(1); m_4013b->clear_w(1);
} }
WRITE8_MEMBER( play_2_state::port01_a_w )
{
m_a_irqset = data;
m_a_irqcnt = (m_a_irqset << 3) | 7;
}
READ8_MEMBER( play_2_state::port02_a_r )
{
m_audiocpu->ef1_w(0); // inverted
return m_soundlatch;
}
READ_LINE_MEMBER( play_2_state::clear_r ) READ_LINE_MEMBER( play_2_state::clear_r )
{ {
// A hack to make the machine reset itself on boot // A hack to make the machine reset itself on boot
@ -263,14 +255,6 @@ READ_LINE_MEMBER( play_2_state::clear_r )
return (m_resetcnt == 0xff00) ? 0 : 1; return (m_resetcnt == 0xff00) ? 0 : 1;
} }
READ_LINE_MEMBER( play_2_state::clear_a_r )
{
// A hack to make the machine reset itself on boot
if (m_resetcnt_a < 0xffff)
m_resetcnt_a++;
return (m_resetcnt_a == 0xff00) ? 0 : 1;
}
READ_LINE_MEMBER( play_2_state::ef1_r ) READ_LINE_MEMBER( play_2_state::ef1_r )
{ {
return (!BIT(m_clockcnt, 10)); // inverted return (!BIT(m_clockcnt, 10)); // inverted
@ -291,17 +275,6 @@ WRITE_LINE_MEMBER( play_2_state::clock_w )
// simulate 4020 chip // simulate 4020 chip
if ((m_clockcnt & 0x3ff) == 0) if ((m_clockcnt & 0x3ff) == 0)
m_4013b->preset_w(BIT(m_clockcnt, 10)); // Q10 output m_4013b->preset_w(BIT(m_clockcnt, 10)); // Q10 output
// sound irq
m_a_irqcnt--;
if (m_a_irqcnt == 1)
m_audiocpu->int_w(1); // inverted
else
if (m_a_irqcnt == 0)
{
m_a_irqcnt = (m_a_irqset << 3) | 7;
m_audiocpu->int_w(0); // inverted
}
} }
} }
@ -316,6 +289,47 @@ WRITE_LINE_MEMBER( play_2_state::q4013a_w )
m_clockcnt = 0; m_clockcnt = 0;
} }
// *********** Zira Sound handlers ***************** (same as cidelsa.cpp)
WRITE8_MEMBER( play_2_state::sound_d_w )
{
// D3 2716 A10
membank("bank1")->set_entry(BIT(data, 3));
}
WRITE8_MEMBER( play_2_state::sound_g_w )
{
switch (data)
{
case 0x01:
m_aysnd1->data_w(space, 0, m_psg_latch);
break;
case 0x02:
m_psg_latch = m_aysnd1->data_r(space, 0);
break;
case 0x03:
m_aysnd1->address_w(space, 0, m_psg_latch);
break;
}
}
READ8_MEMBER( play_2_state::sound_in_r )
{
return m_soundlatch;
}
READ8_MEMBER( play_2_state::psg_r )
{
return m_psg_latch;
}
WRITE8_MEMBER( play_2_state::psg_w )
{
m_psg_latch = data;
}
// **************** Machine *****************************
static MACHINE_CONFIG_START( play_2, play_2_state ) static MACHINE_CONFIG_START( play_2, play_2_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", CDP1802, 2950000) MCFG_CPU_ADD("maincpu", CDP1802, 2950000)
@ -350,40 +364,51 @@ static MACHINE_CONFIG_START( play_2, play_2_state )
/* Sound */ /* Sound */
MCFG_FRAGMENT_ADD( genpin_audio ) MCFG_FRAGMENT_ADD( genpin_audio )
MCFG_CPU_ADD("audiocpu", CDP1802, XTAL_3_579545MHz) MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_CPU_PROGRAM_MAP(play_2_audio_map) MCFG_CDP1863_ADD("1863", 0, 2950000 / 8)
MCFG_CPU_IO_MAP(play_2_audio_io) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_COSMAC_WAIT_CALLBACK(VCC)
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_2_state, clear_a_r))
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("aysnd1", AY8910, XTAL_3_579545MHz / 2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
MCFG_SOUND_ADD("aysnd2", AY8910, XTAL_3_579545MHz / 2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( zira, play_2 )
MCFG_CPU_ADD("cop402", COP402, XTAL_2MHz)
MCFG_CPU_PROGRAM_MAP(zira_sound_map)
MCFG_COP400_CONFIG( COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false )
MCFG_COP400_WRITE_D_CB(WRITE8(play_2_state, sound_d_w))
MCFG_COP400_WRITE_G_CB(WRITE8(play_2_state, sound_g_w))
MCFG_COP400_READ_L_CB(READ8(play_2_state, psg_r))
MCFG_COP400_WRITE_L_CB(WRITE8(play_2_state, psg_w))
MCFG_COP400_READ_IN_CB(READ8(play_2_state, sound_in_r))
MCFG_SOUND_ADD("aysnd1", AY8910, XTAL_2MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
DRIVER_INIT_MEMBER( play_2_state, zira )
{
/* setup COP402 memory banking */
membank("bank1")->configure_entries(0, 2, memregion("cop402")->base(), 0x400);
membank("bank1")->set_entry(0);
}
/*------------------------------------------------------------------- /*-------------------------------------------------------------------
/ Antar (11/79) / Antar (11/79)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(antar) ROM_START(antar)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x2000, "roms", 0)
ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763)) ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763))
ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47)) ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47))
ROM_LOAD("antar10.bin", 0x0800, 0x0400, CRC(a6ce5667) SHA1(85ecd4fce94dc419e4c210262f867310b0889cd3)) ROM_LOAD("antar10.bin", 0x0800, 0x0400, CRC(a6ce5667) SHA1(85ecd4fce94dc419e4c210262f867310b0889cd3))
ROM_LOAD("antar11.bin", 0x0c00, 0x0400, CRC(6474b17f) SHA1(e4325ceff820393b06eb2e8e4a85412b0d01a385)) ROM_LOAD("antar11.bin", 0x0c00, 0x0400, CRC(6474b17f) SHA1(e4325ceff820393b06eb2e8e4a85412b0d01a385))
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF)
ROM_END ROM_END
ROM_START(antar2) ROM_START(antar2)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x2000, "roms", 0)
ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763)) ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763))
ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47)) ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47))
ROM_LOAD("antar10a.bin", 0x0800, 0x0400, CRC(520eb401) SHA1(1d5e3f829a7e7f38c7c519c488e6b7e1a4d34321)) ROM_LOAD("antar10a.bin", 0x0800, 0x0400, CRC(520eb401) SHA1(1d5e3f829a7e7f38c7c519c488e6b7e1a4d34321))
ROM_LOAD("antar11a.bin", 0x0c00, 0x0400, CRC(17ad38bf) SHA1(e2c9472ed8fbe9d5965a5c79515a1b7ea9edaa79)) ROM_LOAD("antar11a.bin", 0x0c00, 0x0400, CRC(17ad38bf) SHA1(e2c9472ed8fbe9d5965a5c79515a1b7ea9edaa79))
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF)
ROM_END ROM_END
@ -391,20 +416,65 @@ ROM_END
/ Evil Fight (03/80) / Evil Fight (03/80)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(evlfight) ROM_START(evlfight)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x2000, "roms", 0)
ROM_LOAD("evfg08.bin", 0x0000, 0x0400, CRC(2cc2e79a) SHA1(17440512c419b3bb2012539666a5f052f3cd8c1d)) ROM_LOAD("evfg08.bin", 0x0000, 0x0400, CRC(2cc2e79a) SHA1(17440512c419b3bb2012539666a5f052f3cd8c1d))
ROM_LOAD("evfg09.bin", 0x0400, 0x0400, CRC(5232dc4c) SHA1(6f95a578e9f09688e6ce8b0a622bcee887936c82)) ROM_LOAD("evfg09.bin", 0x0400, 0x0400, CRC(5232dc4c) SHA1(6f95a578e9f09688e6ce8b0a622bcee887936c82))
ROM_LOAD("evfg10.bin", 0x0800, 0x0400, CRC(de2f754d) SHA1(0287a9975095bcbf03ddb2b374ff25c080c8020f)) ROM_LOAD("evfg10.bin", 0x0800, 0x0400, CRC(de2f754d) SHA1(0287a9975095bcbf03ddb2b374ff25c080c8020f))
ROM_LOAD("evfg11.bin", 0x0c00, 0x0400, CRC(5eb8ac02) SHA1(31c80e74a4272becf7014aa96eaf7de555e26cd6)) ROM_LOAD("evfg11.bin", 0x0c00, 0x0400, CRC(5eb8ac02) SHA1(31c80e74a4272becf7014aa96eaf7de555e26cd6))
ROM_END
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF) /*-------------------------------------------------------------------
/ Attack (10/80)
/-------------------------------------------------------------------*/
ROM_START(attack)
ROM_REGION(0x2000, "roms", 0)
ROM_LOAD("attack8.bin", 0x0000, 0x0400, CRC(a5204b58) SHA1(afb4b81720f8d56e88f47fc842b23313824a1085))
ROM_LOAD("attack9.bin", 0x0400, 0x0400, CRC(bbd086b4) SHA1(6fc94b94beea482d8c8f5b3c69d3f218e2b2dfc4))
ROM_LOAD("attack10.bin", 0x0800, 0x0400, CRC(764925e4) SHA1(2f207ef87786d27d0d856c5816a570a59d89b718))
ROM_LOAD("attack11.bin", 0x0c00, 0x0400, CRC(972157b4) SHA1(23c90f23a34b34acfe445496a133b6022a749ccc))
ROM_END
/*-------------------------------------------------------------------
/ Black Fever (12/80)
/-------------------------------------------------------------------*/
ROM_START(blkfever)
ROM_REGION(0x2000, "roms", 0)
ROM_LOAD("blackf8.bin", 0x0000, 0x0400, CRC(916b8ed8) SHA1(ddc7e09b68e3e1a033af5dc5ec32ab5b0922a833))
ROM_LOAD("blackf9.bin", 0x0400, 0x0400, CRC(ecb72fdc) SHA1(d3598031b7170fab39727b3402b7053d4f9e1ca7))
ROM_LOAD("blackf10.bin", 0x0800, 0x0400, CRC(b3fae788) SHA1(e14e09cc7da1098abf2f60f26a8ec507e123ff7c))
ROM_LOAD("blackf11.bin", 0x0c00, 0x0400, CRC(5a97c1b4) SHA1(b9d7eb0dd55ef6d959c0fab48f710e4b1c8d8003))
ROM_END
/*-------------------------------------------------------------------
/ Zira (??/81)
/-------------------------------------------------------------------*/
ROM_START(zira)
ROM_REGION(0x2000, "roms", 0)
ROM_LOAD("zira_u8.bin", 0x0000, 0x0800, CRC(53f8bf17) SHA1(5eb74f27bc65374a85dd44bbc8f6142488c226a2))
ROM_LOAD("zira_u9.bin", 0x0800, 0x0800, CRC(d50a2419) SHA1(81b157f579a433389506817b1b6e02afaa2cf0d5))
ROM_REGION(0x800, "cop402", 0) // according to the schematic this is a 2716 with a size of 0x800
ROM_LOAD("zira.snd", 0x0000, 0x0400, CRC(c8a54854) SHA1(6c0367dcb2a11f0478c44b4e2115c1cb1e8052f3))
ROM_END
/*-------------------------------------------------------------------
/ Cerberus (03/82)
/-------------------------------------------------------------------*/
ROM_START(cerberup)
ROM_REGION(0x2000, "roms", 0)
ROM_LOAD("cerb8.cpu", 0x0000, 0x0800, CRC(021d0452) SHA1(496010e6892311b1cabcdac62296cd6aa0782c5d))
ROM_LOAD("cerb9.cpu", 0x0800, 0x0800, CRC(0fd41156) SHA1(95d1bf42c82f480825e3d907ae3c87b5f994fd2a))
ROM_LOAD("cerb10.cpu", 0x1000, 0x0800, CRC(785602e0) SHA1(f38df3156cd14ab21752dbc849c654802079eb33))
ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("cerb.snd", 0x0000, 0x2000, CRC(8af53a23) SHA1(a80b57576a1eb1b4544b718b9abba100531e3942))
ROM_END ROM_END
/*------------------------------------------------------------------- /*-------------------------------------------------------------------
/ Mad Race (??/85?) / Mad Race (??/85?)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(madrace) ROM_START(madrace)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x2000, "roms", 0)
ROM_LOAD("madrace.2a0", 0x0000, 0x0800, CRC(ab487c79) SHA1(a5df29b2af4c9d94d8bf54c5c91d1e9b5ca4d065)) ROM_LOAD("madrace.2a0", 0x0000, 0x0800, CRC(ab487c79) SHA1(a5df29b2af4c9d94d8bf54c5c91d1e9b5ca4d065))
ROM_LOAD("madrace.2b0", 0x0800, 0x0800, CRC(dcb54b39) SHA1(8e2ca7180f5ea3a28feb34b01f3387b523dbfa3b)) ROM_LOAD("madrace.2b0", 0x0800, 0x0800, CRC(dcb54b39) SHA1(8e2ca7180f5ea3a28feb34b01f3387b523dbfa3b))
ROM_LOAD("madrace.2c0", 0x1000, 0x0800, CRC(b24ea245) SHA1(3f868ccbc4bfb77c40c4cc05dcd8eeca85ecd76f)) ROM_LOAD("madrace.2c0", 0x1000, 0x0800, CRC(b24ea245) SHA1(3f868ccbc4bfb77c40c4cc05dcd8eeca85ecd76f))
@ -415,63 +485,11 @@ ROM_START(madrace)
ROM_END ROM_END
/*------------------------------------------------------------------- GAME(1979, antar, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Antar (set 1)", MACHINE_MECHANICAL )
/ Attack (10/80) GAME(1979, antar2, antar, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Antar (set 2)", MACHINE_MECHANICAL )
/-------------------------------------------------------------------*/ GAME(1980, evlfight, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Evil Fight", MACHINE_MECHANICAL )
ROM_START(attack) GAME(1980, attack, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Attack", MACHINE_MECHANICAL )
ROM_REGION(0x10000, "maincpu", 0) GAME(1980, blkfever, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Black Fever", MACHINE_MECHANICAL )
ROM_LOAD("attack8.bin", 0x0000, 0x0400, CRC(a5204b58) SHA1(afb4b81720f8d56e88f47fc842b23313824a1085)) GAME(1982, cerberup, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Cerberus (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
ROM_LOAD("attack9.bin", 0x0400, 0x0400, CRC(bbd086b4) SHA1(6fc94b94beea482d8c8f5b3c69d3f218e2b2dfc4)) GAME(1985, madrace, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Mad Race", MACHINE_MECHANICAL | MACHINE_NO_SOUND)
ROM_LOAD("attack10.bin", 0x0800, 0x0400, CRC(764925e4) SHA1(2f207ef87786d27d0d856c5816a570a59d89b718)) GAME(1980, zira, 0, zira, play_2, play_2_state, zira, ROT0, "Playmatic", "Zira", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
ROM_LOAD("attack11.bin", 0x0c00, 0x0400, CRC(972157b4) SHA1(23c90f23a34b34acfe445496a133b6022a749ccc))
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF)
ROM_END
/*-------------------------------------------------------------------
/ Black Fever (12/80)
/-------------------------------------------------------------------*/
ROM_START(blkfever)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("blackf8.bin", 0x0000, 0x0400, CRC(916b8ed8) SHA1(ddc7e09b68e3e1a033af5dc5ec32ab5b0922a833))
ROM_LOAD("blackf9.bin", 0x0400, 0x0400, CRC(ecb72fdc) SHA1(d3598031b7170fab39727b3402b7053d4f9e1ca7))
ROM_LOAD("blackf10.bin", 0x0800, 0x0400, CRC(b3fae788) SHA1(e14e09cc7da1098abf2f60f26a8ec507e123ff7c))
ROM_LOAD("blackf11.bin", 0x0c00, 0x0400, CRC(5a97c1b4) SHA1(b9d7eb0dd55ef6d959c0fab48f710e4b1c8d8003))
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF)
ROM_END
/*-------------------------------------------------------------------
/ Zira (??/81)
/-------------------------------------------------------------------*/
ROM_START(zira)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("zira_u8.bin", 0x0000, 0x0800, CRC(53f8bf17) SHA1(5eb74f27bc65374a85dd44bbc8f6142488c226a2))
ROM_LOAD("zira_u9.bin", 0x0800, 0x0800, CRC(d50a2419) SHA1(81b157f579a433389506817b1b6e02afaa2cf0d5))
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("zira.snd", 0x0000, 0x0400, CRC(c8a54854) SHA1(6c0367dcb2a11f0478c44b4e2115c1cb1e8052f3))
ROM_END
/*-------------------------------------------------------------------
/ Cerberus (03/82)
/-------------------------------------------------------------------*/
ROM_START(cerberup)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("cerb8.cpu", 0x0000, 0x0800, CRC(021d0452) SHA1(496010e6892311b1cabcdac62296cd6aa0782c5d))
ROM_LOAD("cerb9.cpu", 0x0800, 0x0800, CRC(0fd41156) SHA1(95d1bf42c82f480825e3d907ae3c87b5f994fd2a))
ROM_LOAD("cerb10.cpu", 0x1000, 0x0800, CRC(785602e0) SHA1(f38df3156cd14ab21752dbc849c654802079eb33))
ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("cerb.snd", 0x0000, 0x2000, CRC(8af53a23) SHA1(a80b57576a1eb1b4544b718b9abba100531e3942))
ROM_END
GAME(1979, antar, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Antar (set 1)", MACHINE_MECHANICAL | MACHINE_NO_SOUND)
GAME(1979, antar2, antar, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Antar (set 2)", MACHINE_MECHANICAL | MACHINE_NO_SOUND)
GAME(1980, evlfight, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Evil Fight", MACHINE_MECHANICAL | MACHINE_NO_SOUND)
GAME(1980, attack, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Attack", MACHINE_MECHANICAL | MACHINE_NO_SOUND)
GAME(1980, blkfever, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Black Fever", MACHINE_MECHANICAL | MACHINE_NO_SOUND)
GAME(1982, cerberup, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Cerberus (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
GAME(1985, madrace, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Mad Race", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
GAME(1980, zira, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Zira", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)

View File

@ -7,19 +7,21 @@ Playmatic MPU 3,4,5
Status: Status:
- Lamps, Solenoids to add - Lamps, Solenoids to add
- AY chips output port adds various components across the analog outputs (including muting) - AY chips output port adds various components across the analog outputs
- Lots of loud siren-like noises when there should be silence
- Mechanical sounds to add - Mechanical sounds to add
- Most games work - Most games work
-- Spain82: not working -- Spain82: not working
-- Nautilus: sound is broken (runs into the weeds) -- Nautilus: sound is broken (runs into the weeds)
-- Skill Flight: not working -- Skill Flight: not working
-- Meg Aaton: not working (No Ball) -- Miss Disco: not working
-- Phantom Ship: different unknown sound card (no manual available)
Note: The input lines INT, EF1-4 are inverted (not true voltage). Note: The input lines INT, EF1-4 are inverted (not true voltage).
First time: First time:
- The default settings are fine, so start with a clean slate - The default settings are fine, so start with a clean slate
- Wait for it to say No Ball, then hold down X. - Wait for it to say No Ball, then hold down X (Meg Aaton = 8-pad)
- Keep holding X, insert credits, and press start. When it says ball 1, let go immediately. - Keep holding X, insert credits, and press start. When it says ball 1, let go immediately.
- If you hold down X longer than you should, it says Coil Error, and the game is ended. You - If you hold down X longer than you should, it says Coil Error, and the game is ended. You
should let go the instant the ball number increments. should let go the instant the ball number increments.
@ -57,6 +59,8 @@ public:
, m_audiocpu(*this, "audiocpu") , m_audiocpu(*this, "audiocpu")
, m_4013a(*this, "4013a") , m_4013a(*this, "4013a")
, m_4013b(*this, "4013b") , m_4013b(*this, "4013b")
, m_aysnd1(*this, "aysnd1")
, m_aysnd2(*this, "aysnd2")
, m_keyboard(*this, "X") , m_keyboard(*this, "X")
{ } { }
@ -92,6 +96,8 @@ private:
required_device<cosmac_device> m_audiocpu; required_device<cosmac_device> m_audiocpu;
required_device<ttl7474_device> m_4013a; required_device<ttl7474_device> m_4013a;
required_device<ttl7474_device> m_4013b; required_device<ttl7474_device> m_4013b;
required_device<ay8910_device> m_aysnd1;
required_device<ay8910_device> m_aysnd2;
required_ioport_array<10> m_keyboard; required_ioport_array<10> m_keyboard;
}; };
@ -401,9 +407,9 @@ static MACHINE_CONFIG_START( play_5, play_5_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("aysnd1", AY8910, XTAL_3_579545MHz / 2) MCFG_SOUND_ADD("aysnd1", AY8910, XTAL_3_579545MHz / 2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
MCFG_SOUND_ADD("aysnd2", AY8910, XTAL_3_579545MHz / 2) MCFG_SOUND_ADD("aysnd2", AY8910, XTAL_3_579545MHz / 2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -411,10 +417,10 @@ MACHINE_CONFIG_END
/ KZ-26 (1984) / KZ-26 (1984)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(kz26) ROM_START(kz26)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("kz26.cpu", 0x0000, 0x2000, CRC(8030a699) SHA1(4f86b325801d8ce16011f7b6ba2f3633e2f2af35)) ROM_LOAD("kz26.cpu", 0x0000, 0x2000, CRC(8030a699) SHA1(4f86b325801d8ce16011f7b6ba2f3633e2f2af35))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("sound1.su3", 0x0000, 0x2000, CRC(8ad1a804) SHA1(6177619f09af4302ffddd8c0c1b374dab7f47e91)) ROM_LOAD("sound1.su3", 0x0000, 0x2000, CRC(8ad1a804) SHA1(6177619f09af4302ffddd8c0c1b374dab7f47e91))
ROM_LOAD("sound2.su4", 0x2000, 0x0800, CRC(355dc9ad) SHA1(eac8bc27157afd908f9bc5b5a7c40be5b9427269)) ROM_LOAD("sound2.su4", 0x2000, 0x0800, CRC(355dc9ad) SHA1(eac8bc27157afd908f9bc5b5a7c40be5b9427269))
ROM_END ROM_END
@ -423,11 +429,11 @@ ROM_END
/ Spain 82 (10/82) / Spain 82 (10/82)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(spain82) ROM_START(spain82)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("spaic12.bin", 0x0000, 0x1000, CRC(cd37ecdc) SHA1(ff2d406b6ac150daef868121e5857a956aabf005)) ROM_LOAD("spaic12.bin", 0x0000, 0x1000, CRC(cd37ecdc) SHA1(ff2d406b6ac150daef868121e5857a956aabf005))
ROM_LOAD("spaic11.bin", 0x1000, 0x0800, CRC(c86c0801) SHA1(1b52539538dae883f9c8fe5bc6454f9224780d11)) ROM_LOAD("spaic11.bin", 0x1000, 0x0800, CRC(c86c0801) SHA1(1b52539538dae883f9c8fe5bc6454f9224780d11))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("spasnd.bin", 0x0000, 0x2000, CRC(62412e2e) SHA1(9e48dc3295e78e1024f726906be6e8c3fe3e61b1)) ROM_LOAD("spasnd.bin", 0x0000, 0x2000, CRC(62412e2e) SHA1(9e48dc3295e78e1024f726906be6e8c3fe3e61b1))
ROM_END ROM_END
@ -435,10 +441,10 @@ ROM_END
/ ??/84 Nautilus / ??/84 Nautilus
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(nautilus) ROM_START(nautilus)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("nautilus.rom", 0x0000, 0x2000, CRC(197e5492) SHA1(0f83fc2e742fd0cca0bd162add4bef68c6620067)) ROM_LOAD("nautilus.rom", 0x0000, 0x2000, CRC(197e5492) SHA1(0f83fc2e742fd0cca0bd162add4bef68c6620067))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("nautilus.snd", 0x0000, 0x2000, CRC(413d110f) SHA1(8360f652296c46339a70861efb34c41e92b25d0e)) ROM_LOAD("nautilus.snd", 0x0000, 0x2000, CRC(413d110f) SHA1(8360f652296c46339a70861efb34c41e92b25d0e))
ROM_END ROM_END
@ -446,10 +452,10 @@ ROM_END
/ ??/84 The Raid / ??/84 The Raid
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(theraid) ROM_START(theraid)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("theraid.rom", 0x0000, 0x2000, CRC(97aa1489) SHA1(6b691b287138cc78cfc1010f380ff8c66342c39b)) ROM_LOAD("theraid.rom", 0x0000, 0x2000, CRC(97aa1489) SHA1(6b691b287138cc78cfc1010f380ff8c66342c39b))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("theraid.snd", 0x0000, 0x2000, CRC(e33f8363) SHA1(e7f251c334b15e12b1eb7e079c2e9a5f64338052)) ROM_LOAD("theraid.snd", 0x0000, 0x2000, CRC(e33f8363) SHA1(e7f251c334b15e12b1eb7e079c2e9a5f64338052))
ROM_END ROM_END
@ -457,10 +463,10 @@ ROM_END
/ 11/84 UFO-X / 11/84 UFO-X
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(ufo_x) ROM_START(ufo_x)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("ufoxcpu.rom", 0x0000, 0x2000, CRC(cf0f7c52) SHA1(ce52da05b310ac84bdd57609e21b0401ee3a2564)) ROM_LOAD("ufoxcpu.rom", 0x0000, 0x2000, CRC(cf0f7c52) SHA1(ce52da05b310ac84bdd57609e21b0401ee3a2564))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("ufoxu3.rom", 0x0000, 0x2000, CRC(6ebd8ee1) SHA1(83522b76a755556fd38d7b292273b4c68bfc0ddf)) ROM_LOAD("ufoxu3.rom", 0x0000, 0x2000, CRC(6ebd8ee1) SHA1(83522b76a755556fd38d7b292273b4c68bfc0ddf))
ROM_LOAD("ufoxu4.rom", 0x2000, 0x0800, CRC(aa54ede6) SHA1(7dd7e2852d42aa0f971936dbb84c7708727ce0e7)) ROM_LOAD("ufoxu4.rom", 0x2000, 0x0800, CRC(aa54ede6) SHA1(7dd7e2852d42aa0f971936dbb84c7708727ce0e7))
ROM_END ROM_END
@ -469,10 +475,10 @@ ROM_END
/ ??/85 Rock 2500 / ??/85 Rock 2500
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(rock2500) ROM_START(rock2500)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("r2500cpu.rom", 0x0000, 0x2000, CRC(9c07e373) SHA1(5bd4e69d11e69fdb911a6e65b3d0a7192075abc8)) ROM_LOAD("r2500cpu.rom", 0x0000, 0x2000, CRC(9c07e373) SHA1(5bd4e69d11e69fdb911a6e65b3d0a7192075abc8))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("r2500snd.rom", 0x0000, 0x2000, CRC(24fbaeae) SHA1(20ff35ed689291f321e483287a977c02e84d4524)) ROM_LOAD("r2500snd.rom", 0x0000, 0x2000, CRC(24fbaeae) SHA1(20ff35ed689291f321e483287a977c02e84d4524))
ROM_END ROM_END
@ -480,19 +486,19 @@ ROM_END
/ ??/85 Star Fire / ??/85 Star Fire
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(starfirp) ROM_START(starfirp)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("starfcpu.rom", 0x0000, 0x2000, CRC(450ddf20) SHA1(c63c4e3833ffc1f69fcec39bafecae9c80befb2a)) ROM_LOAD("starfcpu.rom", 0x0000, 0x2000, CRC(450ddf20) SHA1(c63c4e3833ffc1f69fcec39bafecae9c80befb2a))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("starfu3.rom", 0x0000, 0x2000, CRC(5d602d80) SHA1(19d21adbcbd0067c051f3033468eda8c5af57be1)) ROM_LOAD("starfu3.rom", 0x0000, 0x2000, CRC(5d602d80) SHA1(19d21adbcbd0067c051f3033468eda8c5af57be1))
ROM_LOAD("starfu4.rom", 0x2000, 0x0800, CRC(9af8be9a) SHA1(da6db3716db73baf8e1493aba91d4d85c5d613b4)) ROM_LOAD("starfu4.rom", 0x2000, 0x0800, CRC(9af8be9a) SHA1(da6db3716db73baf8e1493aba91d4d85c5d613b4))
ROM_END ROM_END
ROM_START(starfirpa) ROM_START(starfirpa)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("starcpua.rom", 0x0000, 0x2000, CRC(29bac350) SHA1(ab3e3ea4881be954f7fa7278800ffd791c4581da)) ROM_LOAD("starcpua.rom", 0x0000, 0x2000, CRC(29bac350) SHA1(ab3e3ea4881be954f7fa7278800ffd791c4581da))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("starfu3.rom", 0x0000, 0x2000, CRC(5d602d80) SHA1(19d21adbcbd0067c051f3033468eda8c5af57be1)) ROM_LOAD("starfu3.rom", 0x0000, 0x2000, CRC(5d602d80) SHA1(19d21adbcbd0067c051f3033468eda8c5af57be1))
ROM_LOAD("starfu4.rom", 0x2000, 0x0800, CRC(9af8be9a) SHA1(da6db3716db73baf8e1493aba91d4d85c5d613b4)) ROM_LOAD("starfu4.rom", 0x2000, 0x0800, CRC(9af8be9a) SHA1(da6db3716db73baf8e1493aba91d4d85c5d613b4))
ROM_END ROM_END
@ -501,21 +507,21 @@ ROM_END
/ ??/86 Flash Dragon / ??/86 Flash Dragon
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(fldragon) ROM_START(fldragon)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("fldrcpu1.rom", 0x0000, 0x2000, CRC(e513ded0) SHA1(64ed3dcff53311fb93bd50d105a4c1186043fdd7)) ROM_LOAD("fldrcpu1.rom", 0x0000, 0x2000, CRC(e513ded0) SHA1(64ed3dcff53311fb93bd50d105a4c1186043fdd7))
ROM_LOAD("fldraudiocpu.rom", 0x2000, 0x2000, CRC(6ff2b276) SHA1(040b614f0b0587521ef5550b5587b94a7f3f178b)) ROM_LOAD("fldraudiocpu.rom", 0x2000, 0x2000, CRC(6ff2b276) SHA1(040b614f0b0587521ef5550b5587b94a7f3f178b))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("fdsndu3.rom", 0x0000, 0x2000, CRC(aa9c52a8) SHA1(97d5d63b14d10c70a5eb80c08ccf5a1f3df7596d)) ROM_LOAD("fdsndu3.rom", 0x0000, 0x2000, CRC(aa9c52a8) SHA1(97d5d63b14d10c70a5eb80c08ccf5a1f3df7596d))
ROM_LOAD("fdsndu4.rom", 0x2000, 0x0800, CRC(0a7dc1d2) SHA1(32c7be5e9fbe4fa9ca661af7b7b5ea13ef250ce6)) ROM_LOAD("fdsndu4.rom", 0x2000, 0x0800, CRC(0a7dc1d2) SHA1(32c7be5e9fbe4fa9ca661af7b7b5ea13ef250ce6))
ROM_END ROM_END
ROM_START(fldragona) ROM_START(fldragona)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("fldr_1a.cpu", 0x0000, 0x2000, CRC(21fda8e8) SHA1(feea608c2605cea1cdf9f7ed884297a95993f754)) ROM_LOAD("fldr_1a.cpu", 0x0000, 0x2000, CRC(21fda8e8) SHA1(feea608c2605cea1cdf9f7ed884297a95993f754))
ROM_LOAD("fldr_2a.cpu", 0x2000, 0x2000, CRC(3592a0b7) SHA1(4c4ed7930dcbbf81ce2e5296c0b36bb615bd2270)) ROM_LOAD("fldr_2a.cpu", 0x2000, 0x2000, CRC(3592a0b7) SHA1(4c4ed7930dcbbf81ce2e5296c0b36bb615bd2270))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("fdsndu3.rom", 0x0000, 0x2000, CRC(aa9c52a8) SHA1(97d5d63b14d10c70a5eb80c08ccf5a1f3df7596d)) ROM_LOAD("fdsndu3.rom", 0x0000, 0x2000, CRC(aa9c52a8) SHA1(97d5d63b14d10c70a5eb80c08ccf5a1f3df7596d))
ROM_LOAD("fdsndu4.rom", 0x2000, 0x0800, CRC(0a7dc1d2) SHA1(32c7be5e9fbe4fa9ca661af7b7b5ea13ef250ce6)) ROM_LOAD("fdsndu4.rom", 0x2000, 0x0800, CRC(0a7dc1d2) SHA1(32c7be5e9fbe4fa9ca661af7b7b5ea13ef250ce6))
ROM_END ROM_END
@ -528,7 +534,7 @@ ROM_END
/ ??/87 Skill Flight / ??/87 Skill Flight
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(sklflite) ROM_START(sklflite)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("skflcpu1.rom", 0x0000, 0x2000, CRC(8f833b55) SHA1(1729203582c22b51d1cc401aa8f270aa5cdadabe)) ROM_LOAD("skflcpu1.rom", 0x0000, 0x2000, CRC(8f833b55) SHA1(1729203582c22b51d1cc401aa8f270aa5cdadabe))
ROM_LOAD("skflaudiocpu.rom", 0x2000, 0x2000, CRC(ffc497aa) SHA1(3e88539ae1688322b9268f502d8ca41cffb28df3)) ROM_LOAD("skflaudiocpu.rom", 0x2000, 0x2000, CRC(ffc497aa) SHA1(3e88539ae1688322b9268f502d8ca41cffb28df3))
@ -540,7 +546,7 @@ ROM_END
/ ??/87 Phantom Ship / ??/87 Phantom Ship
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(phntmshp) ROM_START(phntmshp)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("video1.bin", 0x0000, 0x2000, CRC(2b61a8d2) SHA1(1b5cabbab252b2ffb6ed12fb7e4181de7695ed9a)) ROM_LOAD("video1.bin", 0x0000, 0x2000, CRC(2b61a8d2) SHA1(1b5cabbab252b2ffb6ed12fb7e4181de7695ed9a))
ROM_LOAD("video2.bin", 0x2000, 0x2000, CRC(50126db1) SHA1(58d89e44131554cb087c4cad62869f90366704ad)) ROM_LOAD("video2.bin", 0x2000, 0x2000, CRC(50126db1) SHA1(58d89e44131554cb087c4cad62869f90366704ad))
@ -555,10 +561,10 @@ ROM_END
/ Trailer (1985) / Trailer (1985)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(trailer) ROM_START(trailer)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("trcpu.rom", 0x0000, 0x2000, CRC(cc81f84d) SHA1(7a3282a47de271fde84cfddbaceb118add0df116)) ROM_LOAD("trcpu.rom", 0x0000, 0x2000, CRC(cc81f84d) SHA1(7a3282a47de271fde84cfddbaceb118add0df116))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("trsndu3.rom", 0x0000, 0x2000, CRC(05975c29) SHA1(e54d3a5613c3e39fc0338a53dbadc2e91c09ffe3)) ROM_LOAD("trsndu3.rom", 0x0000, 0x2000, CRC(05975c29) SHA1(e54d3a5613c3e39fc0338a53dbadc2e91c09ffe3))
ROM_LOAD("trsndu4.rom", 0x2000, 0x0800, CRC(bda2a735) SHA1(134b5abb813ed8bf2eeac0861b4c88c7176582d8)) ROM_LOAD("trsndu4.rom", 0x2000, 0x0800, CRC(bda2a735) SHA1(134b5abb813ed8bf2eeac0861b4c88c7176582d8))
ROM_END ROM_END
@ -567,20 +573,20 @@ ROM_END
/ Meg Aaton / Meg Aaton
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(megaaton) ROM_START(megaaton)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("cpumegat.bin", 0x0000, 0x2000, CRC(7e7a4ede) SHA1(3194b367cbbf6e0cb2629cd5d82ddee6fe36985a)) ROM_LOAD("cpumegat.bin", 0x0000, 0x2000, CRC(7e7a4ede) SHA1(3194b367cbbf6e0cb2629cd5d82ddee6fe36985a))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436)) ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436))
ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761)) ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761))
ROM_END ROM_END
ROM_START(megaatona) ROM_START(megaatona)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("mega_u12.bin", 0x0000, 0x1000, CRC(65761b02) SHA1(dd9586eaf70698ef7a80ce1be293322f64829aea)) ROM_LOAD("mega_u12.bin", 0x0000, 0x1000, CRC(65761b02) SHA1(dd9586eaf70698ef7a80ce1be293322f64829aea))
ROM_LOAD("mega_u11.bin", 0x1000, 0x1000, CRC(513f3683) SHA1(0f080a33426df1ffdb14e9b2e6382304e201e335)) ROM_LOAD("mega_u11.bin", 0x1000, 0x1000, CRC(513f3683) SHA1(0f080a33426df1ffdb14e9b2e6382304e201e335))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436)) ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436))
ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761)) ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761))
ROM_END ROM_END
@ -589,10 +595,10 @@ ROM_END
/ ??/87 Iron Balls (Stargame) / ??/87 Iron Balls (Stargame)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(ironball) ROM_START(ironball)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("video.bin", 0x0000, 0x2000, CRC(1867ebff) SHA1(485e46c742d914febcbdd58cb5a886f1d773282a)) ROM_LOAD("video.bin", 0x0000, 0x2000, CRC(1867ebff) SHA1(485e46c742d914febcbdd58cb5a886f1d773282a))
ROM_REGION(0x10000, "audiocpu", 0) ROM_REGION(0x4000, "audiocpu", 0)
ROM_LOAD("sound.bin", 0x0000, 0x2000, CRC(83165483) SHA1(5076e5e836105d69c4ba606d8b995ecb16f88504)) ROM_LOAD("sound.bin", 0x0000, 0x2000, CRC(83165483) SHA1(5076e5e836105d69c4ba606d8b995ecb16f88504))
ROM_END ROM_END
@ -600,16 +606,16 @@ ROM_END
/ ??/83 Miss Disco (Bingo machine) / ??/83 Miss Disco (Bingo machine)
/-------------------------------------------------------------------*/ /-------------------------------------------------------------------*/
ROM_START(msdisco) ROM_START(msdisco)
ROM_REGION(0x10000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("1.bin", 0x0000, 0x1000, CRC(06fb7da9) SHA1(36c6fda166b2a07a5ed9ad5d2b6fdfe8fd707b0f)) ROM_LOAD("1.bin", 0x0000, 0x1000, CRC(06fb7da9) SHA1(36c6fda166b2a07a5ed9ad5d2b6fdfe8fd707b0f))
ROM_REGION(0x10000, "audiocpu", ROMREGION_ERASEFF) ROM_REGION(0x4000, "audiocpu", ROMREGION_ERASEFF)
ROM_END ROM_END
GAME(1982, spain82, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Spain '82", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) GAME(1982, spain82, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Spain '82", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
GAME(1983, megaaton, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Meg-Aaton", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) GAME(1983, megaaton, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Meg-Aaton", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1983, megaatona, megaaton, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Meg-Aaton (alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) GAME(1983, megaatona, megaaton, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Meg-Aaton (alternate set)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1984, nautilus, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Nautilus", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) GAME(1984, nautilus, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Nautilus", MACHINE_MECHANICAL | MACHINE_NO_SOUND)
GAME(1984, theraid, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "The Raid", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1984, theraid, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "The Raid", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1984, ufo_x, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "UFO-X", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1984, ufo_x, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "UFO-X", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1984, kz26, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "KZ-26", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1984, kz26, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "KZ-26", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
@ -617,11 +623,11 @@ GAME(1985, rock2500, 0, play_5, play_5, driver_device, 0, ROT0, "Playma
GAME(1985, starfirp, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Star Fire", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1985, starfirp, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Star Fire", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1985, starfirpa, starfirp, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Star Fire (alternate set)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1985, starfirpa, starfirp, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Star Fire (alternate set)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1985, trailer, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Trailer", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND) GAME(1985, trailer, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Trailer", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1986, fldragon, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Flash Dragon", MACHINE_MECHANICAL | MACHINE_NO_SOUND) GAME(1986, fldragon, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Flash Dragon", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1986, fldragona, fldragon, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Flash Dragon (alternate set)", MACHINE_MECHANICAL | MACHINE_NO_SOUND) GAME(1986, fldragona, fldragon, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Flash Dragon (alternate set)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
GAME(1987, phntmshp, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Phantom Ship", MACHINE_MECHANICAL | MACHINE_NO_SOUND) GAME(1987, phntmshp, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Phantom Ship", MACHINE_MECHANICAL | MACHINE_NO_SOUND)
GAME(1987, sklflite, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Skill Flight (Playmatic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) GAME(1987, sklflite, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Skill Flight (Playmatic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
// not by Playmatic, but same hardware // not by Playmatic, but same hardware
GAME(1987, ironball, 0, play_5, play_5, driver_device, 0, ROT0, "Stargame", "Iron Balls", MACHINE_MECHANICAL | MACHINE_NO_SOUND) GAME(1987, ironball, 0, play_5, play_5, driver_device, 0, ROT0, "Stargame", "Iron Balls", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
// bingo hardware, to be split (?) // bingo hardware, to be split (?)
GAME(1983, msdisco, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Miss Disco (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1983, msdisco, 0, play_5, play_5, driver_device, 0, ROT0, "Playmatic", "Miss Disco (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)

View File

@ -103,7 +103,6 @@ static ADDRESS_MAP_START( rollerg_sound_map, AS_PROGRAM, 8, rollerg_state )
AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
ADDRESS_MAP_END ADDRESS_MAP_END
/*************************************************************************** /***************************************************************************
Input Ports Input Ports

View File

@ -685,6 +685,16 @@ ROM_START(hypbl_l4)
ROM_LOAD("sound12.532", 0x4000, 0x1000, CRC(06051e5e) SHA1(f0ab4be812ceaf771829dd549f2a612156102a93)) ROM_LOAD("sound12.532", 0x4000, 0x1000, CRC(06051e5e) SHA1(f0ab4be812ceaf771829dd549f2a612156102a93))
ROM_END ROM_END
ROM_START(hypbl_l3)
ROM_REGION(0x3000, "roms", 0)
ROM_LOAD("ic20-l3.532", 0x0000, 0x1000, CRC(4a37d6e8) SHA1(8c26dd5652ace431a6ff0faf0bb9db37489c4fec))
ROM_LOAD("ic14-l3.532", 0x1000, 0x1000, CRC(e233bbed) SHA1(bb29acc3e48d6b40b3df2e7702f8a8ff4357c15c))
ROM_LOAD("ic17.532", 0x2000, 0x1000, CRC(6f4c0c4c) SHA1(1036067e2c85da867983e6e51ee2a7b5135000df))
ROM_REGION(0x5000, "audioroms", 0)
ROM_LOAD("sound12.532", 0x4000, 0x1000, CRC(06051e5e) SHA1(f0ab4be812ceaf771829dd549f2a612156102a93))
ROM_END
ROM_START(hypbl_l2) ROM_START(hypbl_l2)
ROM_REGION(0x3000, "roms", 0) ROM_REGION(0x3000, "roms", 0)
ROM_LOAD("ic20-l2.532", 0x0000, 0x1000, CRC(f5f66cf1) SHA1(885b4961b6ec712b7445001d448d881245be1234)) ROM_LOAD("ic20-l2.532", 0x0000, 0x1000, CRC(f5f66cf1) SHA1(885b4961b6ec712b7445001d448d881245be1234))
@ -819,6 +829,22 @@ ROM_START(fpwr2_l2)
ROM_LOAD("sound3.716", 0x4800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4)) ROM_LOAD("sound3.716", 0x4800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
ROM_END ROM_END
/*--------------------------------
/ Wild Texas
/-------------------------------*/
// Conversion of Firepower II
// http://www.ipdb.org/machine.cgi?id=5500
ROM_START(wldtexas)
ROM_REGION(0x10000, "roms", 0)
ROM_LOAD("wldtexas.prg", 0x4000, 0x4000, CRC(243e7116) SHA1(c13c261632b3e8693a500d922f151296102e0169))
ROM_RELOAD(0x8000, 0x4000)
ROM_RELOAD(0xc000, 0x4000)
ROM_REGION(0x5000, "audioroms", 0)
ROM_LOAD("sound3.716", 0x4800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
ROM_END
/*----------------------------- /*-----------------------------
/ Star Light - Sys.7 (Game #530) / Star Light - Sys.7 (Game #530)
/-----------------------------*/ /-----------------------------*/
@ -846,6 +872,7 @@ GAME( 1982, thund_p1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Thunder
GAME( 1982, thund_p2, thund_p1, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-2)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND ) GAME( 1982, thund_p2, thund_p1, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-2)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
GAME( 1982, thund_p3, thund_p1, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-3)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND ) GAME( 1982, thund_p3, thund_p1, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-3)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
GAME( 1981, hypbl_l4, 0, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) GAME( 1981, hypbl_l4, 0, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1981, hypbl_l3, hypbl_l4, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1981, hypbl_l2, hypbl_l4, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) GAME( 1981, hypbl_l2, hypbl_l4, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
GAME( 1981, barra_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Barracora (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) GAME( 1981, barra_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Barracora (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
GAME( 1982, vrkon_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Varkon (L-1)", MACHINE_MECHANICAL ) GAME( 1982, vrkon_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Varkon (L-1)", MACHINE_MECHANICAL )
@ -857,3 +884,5 @@ GAME( 1983, jst_l1, jst_l2, s7, s7, s7_state, s7, ROT0, "Williams", "Joust (
GAME( 1983, lsrcu_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Laser Cue (L-2)", MACHINE_MECHANICAL ) GAME( 1983, lsrcu_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Laser Cue (L-2)", MACHINE_MECHANICAL )
GAME( 1983, fpwr2_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Firepower II (L-2)", MACHINE_MECHANICAL ) GAME( 1983, fpwr2_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Firepower II (L-2)", MACHINE_MECHANICAL )
GAME( 1984, strlt_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Star Light (L-1)", MACHINE_MECHANICAL ) GAME( 1984, strlt_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Star Light (L-1)", MACHINE_MECHANICAL )
// same hardware, unknown manufacturer
GAME( 1983, wldtexas, 0, s7, s7, s7_state, s7, ROT0, "<unknown>", "Wild Texas", MACHINE_MECHANICAL )

View File

@ -548,7 +548,6 @@ static ADDRESS_MAP_START( punkshot_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0xfffffc, 0xffffff) AM_READ(punkshot_kludge_r) AM_RANGE(0xfffffc, 0xffffff) AM_READ(punkshot_kludge_r)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( lgtnfght_main_map, AS_PROGRAM, 16, tmnt_state ) static ADDRESS_MAP_START( lgtnfght_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
@ -568,7 +567,6 @@ static ADDRESS_MAP_START( lgtnfght_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
ADDRESS_MAP_END ADDRESS_MAP_END
WRITE16_MEMBER(tmnt_state::ssriders_soundkludge_w) WRITE16_MEMBER(tmnt_state::ssriders_soundkludge_w)
{ {
/* I think this is more than just a trigger */ /* I think this is more than just a trigger */
@ -595,7 +593,6 @@ static ADDRESS_MAP_START( blswhstl_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x780700, 0x78071f) AM_DEVWRITE("k053251", k053251_device, lsb_w) AM_RANGE(0x780700, 0x78071f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
ADDRESS_MAP_END ADDRESS_MAP_END
WRITE16_MEMBER(tmnt_state::k053251_glfgreat_w) WRITE16_MEMBER(tmnt_state::k053251_glfgreat_w)
{ {
int i; int i;
@ -640,7 +637,6 @@ static ADDRESS_MAP_START( glfgreat_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x300000, 0x3fffff) AM_READ(glfgreat_rom_r) AM_RANGE(0x300000, 0x3fffff) AM_READ(glfgreat_rom_r)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( prmrsocr_main_map, AS_PROGRAM, 16, tmnt_state ) static ADDRESS_MAP_START( prmrsocr_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */ AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
@ -925,7 +921,6 @@ static ADDRESS_MAP_START( tmnt2_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w) AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( ssriders_main_map, AS_PROGRAM, 16, tmnt_state ) static ADDRESS_MAP_START( ssriders_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x0bffff) AM_ROM AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */ AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */
@ -950,7 +945,6 @@ static ADDRESS_MAP_START( ssriders_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w) AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sunsetbl_main_map, AS_PROGRAM, 16, tmnt_state ) static ADDRESS_MAP_START( sunsetbl_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x0bffff) AM_ROM AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */ AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */
@ -994,7 +988,6 @@ static ADDRESS_MAP_START( thndrx2_main_map, AS_PROGRAM, 16, tmnt_state )
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( mia_audio_map, AS_PROGRAM, 8, tmnt_state ) static ADDRESS_MAP_START( mia_audio_map, AS_PROGRAM, 8, tmnt_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM

View File

@ -265,7 +265,6 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vendetta_state )
AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
/*************************************************************************** /***************************************************************************
Input Ports Input Ports
@ -614,7 +613,6 @@ ROM_START( vendetta2p )
ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) ) ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
ROM_END ROM_END
ROM_START( vendetta2peba ) ROM_START( vendetta2peba )
ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked roms + banked ram */ ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked roms + banked ram */
ROM_LOAD( "081-eb-a01.17c", 0x00000, 0x40000, CRC(8430bb52) SHA1(54e896510fa44e76b0640b17150210fbf6b3b5bc)) // Label was unclear apart from EB stamp on the middle line. Bottom line looked like 401, but probably A01 ROM_LOAD( "081-eb-a01.17c", 0x00000, 0x40000, CRC(8430bb52) SHA1(54e896510fa44e76b0640b17150210fbf6b3b5bc)) // Label was unclear apart from EB stamp on the middle line. Bottom line looked like 401, but probably A01

View File

@ -10,11 +10,21 @@
#include "debugger.h" #include "debugger.h"
#include "imagedev/bitbngr.h" #include "imagedev/bitbngr.h"
#include "cpu/m6502/n2a03.h"
#include "cpu/h6280/h6280.h"
#include "sound/2612intf.h" #include "sound/2612intf.h"
#include "sound/ym2151.h" #include "sound/ym2151.h"
#include "sound/ym2413.h" #include "sound/ym2413.h"
#include "sound/2203intf.h"
#include "sound/3526intf.h"
#include "sound/ay8910.h"
#include "sound/c6280.h"
#include "sound/sn76496.h" #include "sound/sn76496.h"
#include "sound/k053260.h"
#include "sound/segapcm.h" #include "sound/segapcm.h"
#include "sound/multipcm.h"
#include "sound/gb.h"
//#include "sound/nes_apu.h"
class vgmplay_device : public cpu_device class vgmplay_device : public cpu_device
{ {
@ -24,12 +34,24 @@ public:
A_YM2612 = 0x00000010, A_YM2612 = 0x00000010,
A_YM2151 = 0x00000020, A_YM2151 = 0x00000020,
A_YM2413 = 0x00000030, A_YM2413 = 0x00000030,
A_SN76496 = 0x00000040, A_YM2203A = 0x00000040,
A_YM2203B = 0x00000050,
A_YM3526 = 0x00000060,
A_AY8910A = 0x00000070,
A_AY8910B = 0x00000080,
A_SN76496 = 0x00000090,
A_K053260 = 0x000000a0,
A_C6280 = 0x000000d0,
A_SEGAPCM = 0x00001000, A_SEGAPCM = 0x00001000,
A_GAMEBOY = 0x00002000,
A_NESAPU = 0x00002030,
A_NESRAM = 0x00003000,
A_MULTIPCMA = 0x00013000,
A_MULTIPCMB = 0x00013010,
}; };
vgmplay_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); vgmplay_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual void device_start() override; virtual void device_start() override;
virtual void device_reset() override; virtual void device_reset() override;
@ -50,6 +72,9 @@ public:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override; virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
READ8_MEMBER(segapcm_rom_r); READ8_MEMBER(segapcm_rom_r);
READ8_MEMBER(multipcma_rom_r);
READ8_MEMBER(multipcmb_rom_r);
READ8_MEMBER(k053260_rom_r);
private: private:
struct rom_block { struct rom_block {
@ -68,17 +93,16 @@ private:
int m_icount, m_state; int m_icount, m_state;
UINT32 m_pc; UINT32 m_pc;
std::list<rom_block> m_rom_blocks[0x40]; std::list<rom_block> m_rom_blocks[2][0x40];
UINT32 m_rom_masks[0x40];
std::vector<UINT8> m_data_streams[0x40]; std::vector<UINT8> m_data_streams[0x40];
std::vector<UINT32> m_data_stream_starts[0x40]; std::vector<UINT32> m_data_stream_starts[0x40];
UINT32 m_ym2612_stream_offset; UINT32 m_ym2612_stream_offset;
UINT8 rom_r(UINT8 type, offs_t offset); UINT8 rom_r(int chip, UINT8 type, offs_t offset);
UINT32 handle_data_block(UINT32 address); UINT32 handle_data_block(UINT32 address);
void blocks_clear(); void blocks_clear();
}; };
@ -92,8 +116,13 @@ public:
virtual void machine_start() override; virtual void machine_start() override;
READ8_MEMBER(file_r); DECLARE_READ8_MEMBER(file_r);
READ8_MEMBER(file_size_r); DECLARE_READ8_MEMBER(file_size_r);
DECLARE_WRITE8_MEMBER(multipcm_bank_lo_a_w);
DECLARE_WRITE8_MEMBER(multipcm_bank_hi_a_w);
DECLARE_WRITE8_MEMBER(multipcm_bank_lo_b_w);
DECLARE_WRITE8_MEMBER(multipcm_bank_hi_b_w);
private: private:
std::vector<UINT8> m_file_data; std::vector<UINT8> m_file_data;
@ -101,10 +130,29 @@ private:
required_device<ym2612_device> m_ym2612; required_device<ym2612_device> m_ym2612;
required_device<ym2151_device> m_ym2151; required_device<ym2151_device> m_ym2151;
required_device<ym2413_device> m_ym2413; required_device<ym2413_device> m_ym2413;
required_device<ym2203_device> m_ym2203a;
required_device<ym2203_device> m_ym2203b;
required_device<ym3526_device> m_ym3526;
required_device<ay8910_device> m_ay8910a;
required_device<ay8910_device> m_ay8910b;
required_device<sn76496_device> m_sn76496; required_device<sn76496_device> m_sn76496;
required_device<segapcm_device> m_segapcm; required_device<segapcm_device> m_segapcm;
required_device<multipcm_device> m_multipcma;
required_device<multipcm_device> m_multipcmb;
required_device<gameboy_sound_device> m_dmg;
required_device<n2a03_device> m_nescpu;
required_shared_ptr<UINT8> m_nesram;
required_device<k053260_device> m_k053260;
required_device<c6280_device> m_c6280;
required_device<h6280_device> m_h6280;
UINT32 m_multipcma_bank_l;
UINT32 m_multipcma_bank_r;
UINT32 m_multipcmb_bank_l;
UINT32 m_multipcmb_bank_r;
UINT32 r32(int offset) const; UINT32 r32(int offset) const;
UINT8 r8(int offset) const;
}; };
vgmplay_device::vgmplay_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : vgmplay_device::vgmplay_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
@ -153,8 +201,8 @@ UINT32 vgmplay_device::execute_input_lines() const
void vgmplay_device::blocks_clear() void vgmplay_device::blocks_clear()
{ {
for(int i = 0; i < 0x40; i++) { for(int i = 0; i < 0x40; i++) {
m_rom_blocks[i].clear(); m_rom_blocks[0][i].clear();
m_rom_masks[i] = 0; m_rom_blocks[1][i].clear();
m_data_streams[i].clear(); m_data_streams[i].clear();
m_data_stream_starts[i].clear(); m_data_stream_starts[i].clear();
} }
@ -163,6 +211,9 @@ void vgmplay_device::blocks_clear()
UINT32 vgmplay_device::handle_data_block(UINT32 address) UINT32 vgmplay_device::handle_data_block(UINT32 address)
{ {
UINT32 size = m_file->read_dword(m_pc+3); UINT32 size = m_file->read_dword(m_pc+3);
int second = (size & 0x80000000) ? 1 : 0;
size &= 0x7fffffff;
UINT8 type = m_file->read_byte(m_pc+2); UINT8 type = m_file->read_byte(m_pc+2);
if(type < 0x40) { if(type < 0x40) {
UINT32 start = m_data_streams[type].size(); UINT32 start = m_data_streams[type].size();
@ -178,22 +229,22 @@ UINT32 vgmplay_device::handle_data_block(UINT32 address)
logerror("ignored compression table size %x\n", size); logerror("ignored compression table size %x\n", size);
else if(type < 0xc0) { else if(type < 0xc0) {
UINT32 rs = m_file->read_dword(m_pc+7); //UINT32 rs = m_file->read_dword(m_pc+7);
UINT32 start = m_file->read_dword(m_pc+11); UINT32 start = m_file->read_dword(m_pc+11);
std::unique_ptr<UINT8[]> block = std::make_unique<UINT8[]>(size - 8); std::unique_ptr<UINT8[]> block = std::make_unique<UINT8[]>(size - 8);
for(UINT32 i=0; i<size-8; i++) for(UINT32 i=0; i<size-8; i++)
block[i] = m_file->read_byte(m_pc+15+i); block[i] = m_file->read_byte(m_pc+15+i);
m_rom_blocks[type - 0x80].emplace_front(start, start+size-9, std::move(block)); m_rom_blocks[second][type - 0x80].emplace_front(start, start+size-9, std::move(block));
} else if (type == 0xc2) {
UINT32 mask = rs-1; UINT16 start = m_file->read_word(m_pc+7);
mask |= mask >> 1; UINT32 data_size = size - 2;
mask |= mask >> 2; for (int i = 0; i < data_size; i++)
mask |= mask >> 4; {
mask |= mask >> 8; m_io->write_byte(A_NESRAM + start + i, m_file->read_byte(m_pc + 9 + i));
mask |= mask >> 16; }
m_rom_masks[type - 0x80] = mask; } else {
} else
logerror("ignored ram block size %x type %02x\n", size, type); logerror("ignored ram block size %x type %02x\n", size, type);
}
return 7+size; return 7+size;
} }
@ -252,6 +303,24 @@ void vgmplay_device::execute_run()
m_pc += 3; m_pc += 3;
break; break;
case 0x55:
m_io->write_byte(A_YM2203A+0, m_file->read_byte(m_pc+1));
m_io->write_byte(A_YM2203A+1, m_file->read_byte(m_pc+2));
m_pc += 3;
break;
case 0xA5:
m_io->write_byte(A_YM2203B+0, m_file->read_byte(m_pc+1));
m_io->write_byte(A_YM2203B+1, m_file->read_byte(m_pc+2));
m_pc += 3;
break;
case 0x5b:
m_io->write_byte(A_YM3526+0, m_file->read_byte(m_pc+1));
m_io->write_byte(A_YM3526+1, m_file->read_byte(m_pc+2));
m_pc += 3;
break;
case 0x61: { case 0x61: {
UINT32 duration = m_file->read_word(m_pc+1); UINT32 duration = m_file->read_word(m_pc+1);
m_icount -= duration; m_icount -= duration;
@ -270,8 +339,17 @@ void vgmplay_device::execute_run()
break; break;
case 0x66: case 0x66:
m_state = DONE; {
UINT32 loop_offset = m_file->read_dword(0x1c);
if (!loop_offset)
{
m_state = DONE;
break;
}
m_pc = 0x1c + loop_offset;
break; break;
}
case 0x67: case 0x67:
m_pc += handle_data_block(m_pc); m_pc += handle_data_block(m_pc);
@ -296,18 +374,83 @@ void vgmplay_device::execute_run()
m_icount -= code & 0xf; m_icount -= code & 0xf;
break; break;
case 0xa0:
{
UINT8 reg = m_file->read_byte(m_pc+1);
if (reg & 0x80)
{
m_io->write_byte(A_AY8910A+1, reg & 0x7f);
m_io->write_byte(A_AY8910A+0, m_file->read_byte(m_pc+2));
}
else
{
m_io->write_byte(A_AY8910B+1, reg & 0x7f);
m_io->write_byte(A_AY8910B+0, m_file->read_byte(m_pc+2));
}
m_pc += 3;
break;
}
case 0xb3:
m_io->write_byte(A_GAMEBOY + m_file->read_byte(m_pc+1), m_file->read_byte(m_pc+2));
m_pc += 3;
break;
case 0xc0: case 0xc0:
m_io->write_byte(A_SEGAPCM + (m_file->read_word(m_pc+1) & 0x7ff), m_file->read_byte(m_pc+3)); m_io->write_byte(A_SEGAPCM + (m_file->read_word(m_pc+1) & 0x7ff), m_file->read_byte(m_pc+3));
m_pc += 4; m_pc += 4;
break; break;
case 0xb4:
m_io->write_byte(A_NESAPU + m_file->read_byte(m_pc+1), m_file->read_byte(m_pc+2));
m_pc += 3;
break;
case 0xb5:
{
UINT8 offset = m_file->read_byte(m_pc+1);
if (offset & 0x80)
m_io->write_byte(A_MULTIPCMB + (offset & 0x7f), m_file->read_byte(m_pc+2));
else
m_io->write_byte(A_MULTIPCMA + (offset & 0x7f), m_file->read_byte(m_pc+2));
m_pc += 3;
break;
}
case 0xb9:
m_io->write_byte(A_C6280 + m_file->read_byte(m_pc+1), m_file->read_byte(m_pc+2));
m_pc += 3;
break;
case 0xba:
m_io->write_byte(A_K053260 + m_file->read_byte(m_pc+1), m_file->read_byte(m_pc+2));
m_pc += 3;
break;
case 0xc3:
{
UINT8 offset = m_file->read_byte(m_pc+1);
if (offset & 0x80)
{
m_io->write_byte(A_MULTIPCMB + 4 + (offset & 0x7f), m_file->read_byte(m_pc+3));
m_io->write_byte(A_MULTIPCMB + 8 + (offset & 0x7f), m_file->read_byte(m_pc+2));
}
else
{
m_io->write_byte(A_MULTIPCMA + 4 + (offset & 0x7f), m_file->read_byte(m_pc+3));
m_io->write_byte(A_MULTIPCMA + 8 + (offset & 0x7f), m_file->read_byte(m_pc+2));
}
m_pc += 4;
break;
}
case 0xe0: case 0xe0:
m_ym2612_stream_offset = m_file->read_dword(m_pc+1); m_ym2612_stream_offset = m_file->read_dword(m_pc+1);
m_pc += 5; m_pc += 5;
break; break;
default: default:
logerror("unhandled code %02x\n", code); logerror("unhandled code %02x (%02x %02x %02x %02x)\n", code, m_file->read_byte(m_pc+1), m_file->read_byte(m_pc+2), m_file->read_byte(m_pc+3), m_file->read_byte(m_pc+4));
m_state = DONE; m_state = DONE;
m_icount = 0; m_icount = 0;
break; break;
@ -392,7 +535,7 @@ offs_t vgmplay_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0x55: case 0x55:
sprintf(buffer, "ym2203 r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "ym2203a r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0x56: case 0x56:
@ -515,7 +658,7 @@ offs_t vgmplay_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *
sprintf(buffer, "data-block %x, %s", size, rom_types[type & 0x7f]); sprintf(buffer, "data-block %x, %s", size, rom_types[type & 0x7f]);
else if(type < 0xc0) else if(type < 0xc0)
sprintf(buffer, "data-block %x, rom %02x", size, type); sprintf(buffer, "data-block %x, rom %02x", size, type);
else if(type < 0x93) else if(type < 0xc3)
sprintf(buffer, "data-block %x, %s", size, ram_types[type & 0x1f]); sprintf(buffer, "data-block %x, %s", size, ram_types[type & 0x1f]);
else if(type < 0xe0) else if(type < 0xe0)
sprintf(buffer, "data-block %x, ram %02x", size, type); sprintf(buffer, "data-block %x, ram %02x", size, type);
@ -544,12 +687,16 @@ offs_t vgmplay_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *
sprintf(buffer, "ay8910 r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "ay8910 r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xa5:
sprintf(buffer, "ym2203b r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED;
case 0xb0: case 0xb0:
sprintf(buffer, "rf5c68 r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "rf5c68 r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xb1: case 0xb1:
sprintf(buffer, "rf5c68 r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "rf5c164 r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xb2: case 0xb2:
@ -561,7 +708,7 @@ offs_t vgmplay_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xb4: case 0xb4:
sprintf(buffer, "apu r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "nesapu r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xb5: case 0xb5:
@ -577,19 +724,19 @@ offs_t vgmplay_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xb8: case 0xb8:
sprintf(buffer, "huc6280 r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "okim6295 r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xb9: case 0xb9:
sprintf(buffer, "k053260 r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "huc6280 r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xba: case 0xba:
sprintf(buffer, "pokey r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "k053260 r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xbb: case 0xbb:
sprintf(buffer, "rf5c68 r%02x = %02x", oprom[1], oprom[2]); sprintf(buffer, "pokey r%02x = %02x", oprom[1], oprom[2]);
return 3 | DASMFLAG_SUPPORTED; return 3 | DASMFLAG_SUPPORTED;
case 0xc0: case 0xc0:
@ -644,28 +791,59 @@ offs_t vgmplay_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *
} }
} }
UINT8 vgmplay_device::rom_r(UINT8 type, offs_t offset) UINT8 vgmplay_device::rom_r(int chip, UINT8 type, offs_t offset)
{ {
for(const auto &b : m_rom_blocks[type - 0x80]) for(const auto &b : m_rom_blocks[chip][type - 0x80])
{
if(offset >= b.start_address && offset <= b.end_address) if(offset >= b.start_address && offset <= b.end_address)
{
return b.data[offset - b.start_address]; return b.data[offset - b.start_address];
logerror("Unmapped rom read, type %02x, offset %x\n", type, offset); }
}
return 0; return 0;
} }
READ8_MEMBER(vgmplay_device::segapcm_rom_r) READ8_MEMBER(vgmplay_device::segapcm_rom_r)
{ {
return rom_r(0x80, offset); return rom_r(0, 0x80, offset);
} }
vgmplay_state::vgmplay_state(const machine_config &mconfig, device_type type, const char *tag) : READ8_MEMBER(vgmplay_device::multipcma_rom_r)
driver_device(mconfig, type, tag), {
m_file(*this, "file"), return rom_r(0, 0x89, offset);
m_ym2612(*this, "ym2612"), }
m_ym2151(*this, "ym2151"),
m_ym2413(*this, "ym2413"), READ8_MEMBER(vgmplay_device::multipcmb_rom_r)
m_sn76496(*this, "sn76496"), {
m_segapcm(*this, "segapcm") return rom_r(1, 0x89, offset);
}
READ8_MEMBER(vgmplay_device::k053260_rom_r)
{
return rom_r(0, 0x8e, offset);
}
vgmplay_state::vgmplay_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_file(*this, "file")
, m_ym2612(*this, "ym2612")
, m_ym2151(*this, "ym2151")
, m_ym2413(*this, "ym2413")
, m_ym2203a(*this, "ym2203a")
, m_ym2203b(*this, "ym2203b")
, m_ym3526(*this, "ym3526")
, m_ay8910a(*this, "ay8910a")
, m_ay8910b(*this, "ay8910b")
, m_sn76496(*this, "sn76496")
, m_segapcm(*this, "segapcm")
, m_multipcma(*this, "multipcma")
, m_multipcmb(*this, "multipcmb")
, m_dmg(*this, "dmg")
, m_nescpu(*this, "nescpu")
, m_nesram(*this, "nesapu_ram")
, m_k053260(*this, "k053260")
, m_c6280(*this, "c6280")
, m_h6280(*this, "h6280")
{ {
} }
@ -676,8 +854,16 @@ UINT32 vgmplay_state::r32(int off) const
return 0; return 0;
} }
UINT8 vgmplay_state::r8(int off) const
{
if(off < int(m_file_data.size()))
return m_file_data[off];
return 0;
}
void vgmplay_state::machine_start() void vgmplay_state::machine_start()
{ {
//m_nescpu->
UINT32 size = 0; UINT32 size = 0;
if(m_file->exists()) { if(m_file->exists()) {
size = m_file->length(); size = m_file->length();
@ -744,16 +930,22 @@ void vgmplay_state::machine_start()
m_segapcm->set_unscaled_clock(r32(0x38)); m_segapcm->set_unscaled_clock(r32(0x38));
if(version >= 0x151 && r32(0x40)) if(version >= 0x151 && r32(0x40))
logerror("Warning: file requests an unsupported RF5C68\n"); logerror("Warning: file requests an unsupported RF5C68\n");
if(version >= 0x151 && r32(0x44)) if(version >= 0x151 && r32(0x44)) {
logerror("Warning: file requests an unsupported YM2203\n"); UINT32 clock = r32(0x44);
if (clock & 0x40000000)
clock &= ~0x40000000;
m_ym2203a->set_unscaled_clock(clock);
m_ym2203b->set_unscaled_clock(clock);
}
if(version >= 0x151 && r32(0x48)) if(version >= 0x151 && r32(0x48))
logerror("Warning: file requests an unsupported YM2608\n"); logerror("Warning: file requests an unsupported YM2608\n");
if(version >= 0x151 && r32(0x4c)) if(version >= 0x151 && r32(0x4c))
logerror("Warning: file requests an unsupported %s\n", r32(0x4c) & 0x80000000 ? "YM2610B" : "YM2610"); logerror("Warning: file requests an unsupported %s\n", r32(0x4c) & 0x80000000 ? "YM2610B" : "YM2610");
if(version >= 0x151 && r32(0x50)) if(version >= 0x151 && r32(0x50))
logerror("Warning: file requests an unsupported YM3812\n"); logerror("Warning: file requests an unsupported YM3812\n");
if(version >= 0x151 && r32(0x54)) if(version >= 0x151 && r32(0x54)) {
logerror("Warning: file requests an unsupported YM3526\n"); m_ym3526->set_unscaled_clock(r32(0x54));
}
if(version >= 0x151 && r32(0x58)) if(version >= 0x151 && r32(0x58))
logerror("Warning: file requests an unsupported Y8950\n"); logerror("Warning: file requests an unsupported Y8950\n");
if(version >= 0x151 && r32(0x5c)) if(version >= 0x151 && r32(0x5c))
@ -768,9 +960,60 @@ void vgmplay_state::machine_start()
logerror("Warning: file requests an unsupported RF5C164\n"); logerror("Warning: file requests an unsupported RF5C164\n");
if(version >= 0x151 && r32(0x70)) if(version >= 0x151 && r32(0x70))
logerror("Warning: file requests an unsupported PWM\n"); logerror("Warning: file requests an unsupported PWM\n");
if(version >= 0x151 && r32(0x74)) if(version >= 0x151 && r32(0x74)) {
logerror("Warning: file requests an unsupported AY8910\n"); m_ay8910a->set_unscaled_clock(r32(0x74) & ~0x40000000);
} m_ay8910b->set_unscaled_clock(r32(0x74) & ~0x40000000);
}
if(version >= 0x151 && r8(0x78)) {
UINT8 type = r8(0x78);
if (type & 0x10)
{
ay8910_device::set_psg_type(*m_ay8910a, ay8910_device::PSG_TYPE_YM);
ay8910_device::set_psg_type(*m_ay8910b, ay8910_device::PSG_TYPE_YM);
}
}
if(version >= 0x151 && r8(0x79)) {
UINT8 flags = r8(0x79);
UINT8 to_set = 0;
if (flags & 1)
to_set |= AY8910_LEGACY_OUTPUT;
if (flags & 2)
to_set |= AY8910_SINGLE_OUTPUT;
if (flags & 4)
to_set |= AY8910_DISCRETE_OUTPUT;
ay8910_device::set_flags(*m_ay8910a, to_set);
ay8910_device::set_flags(*m_ay8910b, to_set);
}
if(version >= 0x151 && r8(0x7a)) {
UINT8 flags = r8(0x7a);
UINT8 to_set = 0;
if (flags & 1)
to_set |= AY8910_LEGACY_OUTPUT;
if (flags & 2)
to_set |= AY8910_SINGLE_OUTPUT;
if (flags & 4)
to_set |= AY8910_DISCRETE_OUTPUT;
ay8910_device::set_flags(*m_ym2203a, to_set);
ay8910_device::set_flags(*m_ym2203b, to_set);
}
if(version >= 0x161 && r32(0x80)) {
m_dmg->set_unscaled_clock(r32(0x80));
}
if(version >= 0x161 && r32(0x84)) {
m_nescpu->set_unscaled_clock(r32(0x84));
m_nescpu->m_apu->set_unscaled_clock(r32(0x84));
}
if(version >= 0x161 && r32(0x88)) {
m_multipcma->set_unscaled_clock(r32(0x88) &~ 0x40000000);
m_multipcmb->set_unscaled_clock(r32(0x88) &~ 0x40000000);
}
if(version >= 0x161 && r32(0xac)) {
m_k053260->set_unscaled_clock(r32(0xac));
}
if(version >= 0x161 && r32(0xa4)) {
m_c6280->set_unscaled_clock(r32(0xa4));
}
}
} }
READ8_MEMBER(vgmplay_state::file_r) READ8_MEMBER(vgmplay_state::file_r)
@ -785,7 +1028,43 @@ READ8_MEMBER(vgmplay_state::file_size_r)
UINT32 size = m_file_data.size(); UINT32 size = m_file_data.size();
return size >> (8*offset); return size >> (8*offset);
} }
WRITE8_MEMBER(vgmplay_state::multipcm_bank_hi_a_w)
{
if (offset & 1)
m_multipcma_bank_l = (m_multipcma_bank_l & 0xff) | (data << 16);
if (offset & 2)
m_multipcma_bank_r = (m_multipcma_bank_r & 0xff) | (data << 16);
}
WRITE8_MEMBER(vgmplay_state::multipcm_bank_lo_a_w)
{
if (offset & 1)
m_multipcma_bank_l = (m_multipcma_bank_l & 0xff00) | data;
if (offset & 2)
m_multipcma_bank_r = (m_multipcma_bank_r & 0xff00) | data;
m_multipcma->set_bank(m_multipcma_bank_l << 16, m_multipcma_bank_r << 16);
}
WRITE8_MEMBER(vgmplay_state::multipcm_bank_hi_b_w)
{
if (offset & 1)
m_multipcmb_bank_l = (m_multipcmb_bank_l & 0xff) | (data << 16);
if (offset & 2)
m_multipcmb_bank_r = (m_multipcmb_bank_r & 0xff) | (data << 16);
}
WRITE8_MEMBER(vgmplay_state::multipcm_bank_lo_b_w)
{
if (offset & 1)
m_multipcmb_bank_l = (m_multipcmb_bank_l & 0xff00) | data;
if (offset & 2)
m_multipcmb_bank_r = (m_multipcmb_bank_r & 0xff00) | data;
m_multipcmb->set_bank(m_multipcmb_bank_l << 16, m_multipcmb_bank_r << 16);
}
static INPUT_PORTS_START( vgmplay ) static INPUT_PORTS_START( vgmplay )
INPUT_PORTS_END INPUT_PORTS_END
@ -794,19 +1073,62 @@ static ADDRESS_MAP_START( file_map, AS_PROGRAM, 8, vgmplay_state )
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( soundchips_map, AS_IO, 8, vgmplay_state ) static ADDRESS_MAP_START( soundchips_map, AS_IO, 8, vgmplay_state )
AM_RANGE(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE+3) AM_READ(file_size_r) AM_RANGE(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE+3) AM_READ(file_size_r)
AM_RANGE(vgmplay_device::A_YM2612, vgmplay_device::A_YM2612+3) AM_DEVREADWRITE("ym2612", ym2612_device, read, write) AM_RANGE(vgmplay_device::A_YM2612, vgmplay_device::A_YM2612+3) AM_DEVWRITE ("ym2612", ym2612_device, write)
AM_RANGE(vgmplay_device::A_YM2151, vgmplay_device::A_YM2151+1) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) AM_RANGE(vgmplay_device::A_YM2151, vgmplay_device::A_YM2151+1) AM_DEVWRITE ("ym2151", ym2151_device, write)
AM_RANGE(vgmplay_device::A_YM2413, vgmplay_device::A_YM2413+1) AM_DEVWRITE ("ym2413", ym2413_device, write) AM_RANGE(vgmplay_device::A_YM2413, vgmplay_device::A_YM2413+1) AM_DEVWRITE ("ym2413", ym2413_device, write)
// AM_RANGE(vgmplay_device::A_SN76496+0, vgmplay_device::A_SN76496+0) AM_DEVWRITE ("sn76496", sn76496_device, stereo_w) AM_RANGE(vgmplay_device::A_YM2203A, vgmplay_device::A_YM2203A+1) AM_DEVWRITE ("ym2203a", ym2203_device, write)
AM_RANGE(vgmplay_device::A_SN76496+1, vgmplay_device::A_SN76496+1) AM_DEVWRITE ("sn76496", sn76496_device, write) AM_RANGE(vgmplay_device::A_YM2203B, vgmplay_device::A_YM2203B+1) AM_DEVWRITE ("ym2203b", ym2203_device, write)
AM_RANGE(vgmplay_device::A_SEGAPCM, vgmplay_device::A_SEGAPCM+0x7ff) AM_DEVREADWRITE("segapcm", segapcm_device, sega_pcm_r, sega_pcm_w) AM_RANGE(vgmplay_device::A_YM3526, vgmplay_device::A_YM3526+1) AM_DEVWRITE ("ym3526", ym3526_device, write)
AM_RANGE(vgmplay_device::A_AY8910A, vgmplay_device::A_AY8910A) AM_DEVWRITE ("ay8910a", ay8910_device, data_w)
AM_RANGE(vgmplay_device::A_AY8910A+1, vgmplay_device::A_AY8910A+1) AM_DEVWRITE ("ay8910a", ay8910_device, address_w)
AM_RANGE(vgmplay_device::A_AY8910B, vgmplay_device::A_AY8910B) AM_DEVWRITE ("ay8910b", ay8910_device, data_w)
AM_RANGE(vgmplay_device::A_AY8910B+1, vgmplay_device::A_AY8910B+1) AM_DEVWRITE ("ay8910b", ay8910_device, address_w)
// AM_RANGE(vgmplay_device::A_SN76496+0, vgmplay_device::A_SN76496+0) AM_DEVWRITE ("sn76496", sn76496_device, stereo_w)
AM_RANGE(vgmplay_device::A_SN76496+1, vgmplay_device::A_SN76496+1) AM_DEVWRITE ("sn76496", sn76496_device, write)
AM_RANGE(vgmplay_device::A_K053260, vgmplay_device::A_K053260+0x2f) AM_DEVWRITE ("k053260", k053260_device, write)
AM_RANGE(vgmplay_device::A_C6280, vgmplay_device::A_C6280+0xf) AM_DEVWRITE ("c6280", c6280_device, c6280_w)
AM_RANGE(vgmplay_device::A_SEGAPCM, vgmplay_device::A_SEGAPCM+0x7ff) AM_DEVWRITE ("segapcm", segapcm_device, sega_pcm_w)
AM_RANGE(vgmplay_device::A_GAMEBOY, vgmplay_device::A_GAMEBOY+0x16) AM_DEVWRITE ("dmg", gameboy_sound_device, sound_w)
AM_RANGE(vgmplay_device::A_GAMEBOY+0x20, vgmplay_device::A_GAMEBOY+0x2f) AM_DEVWRITE ("dmg", gameboy_sound_device, wave_w)
AM_RANGE(vgmplay_device::A_NESAPU, vgmplay_device::A_NESAPU+0x1f) AM_DEVWRITE ("nescpu:nesapu", nesapu_device, write)
AM_RANGE(vgmplay_device::A_NESRAM, vgmplay_device::A_NESRAM+0xffff) AM_RAM AM_SHARE("nesapu_ram")
AM_RANGE(vgmplay_device::A_MULTIPCMA, vgmplay_device::A_MULTIPCMA+3) AM_DEVWRITE ("multipcma", multipcm_device, write )
AM_RANGE(vgmplay_device::A_MULTIPCMA+4, vgmplay_device::A_MULTIPCMA+7) AM_WRITE(multipcm_bank_hi_a_w)
AM_RANGE(vgmplay_device::A_MULTIPCMA+8, vgmplay_device::A_MULTIPCMA+11) AM_WRITE(multipcm_bank_lo_a_w)
AM_RANGE(vgmplay_device::A_MULTIPCMB, vgmplay_device::A_MULTIPCMB+3) AM_DEVWRITE ("multipcmb", multipcm_device, write )
AM_RANGE(vgmplay_device::A_MULTIPCMB+4, vgmplay_device::A_MULTIPCMB+7) AM_WRITE(multipcm_bank_hi_b_w)
AM_RANGE(vgmplay_device::A_MULTIPCMB+8, vgmplay_device::A_MULTIPCMB+11) AM_WRITE(multipcm_bank_lo_b_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( segapcm_map, AS_0, 8, vgmplay_state ) static ADDRESS_MAP_START( segapcm_map, AS_0, 8, vgmplay_state )
AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, segapcm_rom_r) AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, segapcm_rom_r)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( multipcma_map, AS_0, 8, vgmplay_state )
AM_RANGE(0, 0x3fffff) AM_DEVREAD("vgmplay", vgmplay_device, multipcma_rom_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( multipcmb_map, AS_0, 8, vgmplay_state )
AM_RANGE(0, 0x3fffff) AM_DEVREAD("vgmplay", vgmplay_device, multipcmb_rom_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( k053260_map, AS_0, 8, vgmplay_state )
AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, k053260_rom_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( nescpu_map, AS_PROGRAM, 8, vgmplay_state )
AM_RANGE(0, 0xffff) AM_RAM AM_SHARE("nesapu_ram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( h6280_map, AS_PROGRAM, 8, vgmplay_state )
AM_RANGE(0, 0xffff) AM_NOP
ADDRESS_MAP_END
static ADDRESS_MAP_START( h6280_io_map, AS_IO, 8, vgmplay_state )
AM_RANGE(0, 3) AM_NOP
ADDRESS_MAP_END
static MACHINE_CONFIG_START( vgmplay, vgmplay_state ) static MACHINE_CONFIG_START( vgmplay, vgmplay_state )
MCFG_CPU_ADD("vgmplay", VGMPLAY, 44100) MCFG_CPU_ADD("vgmplay", VGMPLAY, 44100)
MCFG_CPU_PROGRAM_MAP( file_map ) MCFG_CPU_PROGRAM_MAP( file_map )
@ -815,6 +1137,7 @@ static MACHINE_CONFIG_START( vgmplay, vgmplay_state )
MCFG_DEVICE_ADD("file", BITBANGER, 0) MCFG_DEVICE_ADD("file", BITBANGER, 0)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ym2612", YM2612, 7670454) MCFG_SOUND_ADD("ym2612", YM2612, 7670454)
MCFG_SOUND_ROUTE(0, "lspeaker", 1) MCFG_SOUND_ROUTE(0, "lspeaker", 1)
@ -837,6 +1160,60 @@ static MACHINE_CONFIG_START( vgmplay, vgmplay_state )
MCFG_DEVICE_ADDRESS_MAP(AS_0, segapcm_map) MCFG_DEVICE_ADDRESS_MAP(AS_0, segapcm_map)
MCFG_SOUND_ROUTE(0, "lspeaker", 1) MCFG_SOUND_ROUTE(0, "lspeaker", 1)
MCFG_SOUND_ROUTE(1, "rspeaker", 1) MCFG_SOUND_ROUTE(1, "rspeaker", 1)
MCFG_SOUND_ADD("multipcma", MULTIPCM, 8000000)
MCFG_DEVICE_ADDRESS_MAP(AS_0, multipcma_map)
MCFG_SOUND_ROUTE(0, "lspeaker", 1)
MCFG_SOUND_ROUTE(1, "rspeaker", 1)
MCFG_SOUND_ADD("multipcmb", MULTIPCM, 8000000)
MCFG_DEVICE_ADDRESS_MAP(AS_0, multipcmb_map)
MCFG_SOUND_ROUTE(0, "lspeaker", 1)
MCFG_SOUND_ROUTE(1, "rspeaker", 1)
MCFG_SOUND_ADD("dmg", GAMEBOY, 0)
MCFG_SOUND_ROUTE(0, "lspeaker", 1)
MCFG_SOUND_ROUTE(1, "rspeaker", 1)
MCFG_SOUND_ADD("ay8910a", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1)
MCFG_SOUND_ADD("ay8910b", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1)
MCFG_SOUND_ADD("ym2203a", YM2203, 4000000)
MCFG_SOUND_ROUTE(0, "mono", 0.25)
MCFG_SOUND_ROUTE(1, "mono", 0.25)
MCFG_SOUND_ROUTE(2, "mono", 0.25)
MCFG_SOUND_ROUTE(3, "mono", 0.25)
MCFG_SOUND_ADD("ym2203b", YM2203, 4000000)
MCFG_SOUND_ROUTE(0, "mono", 0.25)
MCFG_SOUND_ROUTE(1, "mono", 0.25)
MCFG_SOUND_ROUTE(2, "mono", 0.25)
MCFG_SOUND_ROUTE(3, "mono", 0.25)
MCFG_SOUND_ADD("ym3526", YM3526, 4000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1)
MCFG_CPU_ADD("nescpu", N2A03, 1000000)
MCFG_CPU_PROGRAM_MAP(nescpu_map)
MCFG_DEVICE_DISABLE()
MCFG_CPU_ADD("h6280", H6280, 1000000)
MCFG_CPU_PROGRAM_MAP(h6280_map)
MCFG_CPU_IO_MAP(h6280_io_map)
MCFG_DEVICE_DISABLE()
MCFG_SOUND_ADD("c6280", C6280, 3579545)
MCFG_C6280_CPU("h6280")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6)
MCFG_K053260_ADD("k053260", 3579545)
MCFG_DEVICE_ADDRESS_MAP(AS_0, k053260_map)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
MACHINE_CONFIG_END MACHINE_CONFIG_END
ROM_START( vgmplay ) ROM_START( vgmplay )

View File

@ -113,7 +113,10 @@ public:
UINT32 screen_update_namconb2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_namconb2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(scantimer); TIMER_DEVICE_CALLBACK_MEMBER(scantimer);
TIMER_DEVICE_CALLBACK_MEMBER(mcu_irq0_cb);
TIMER_DEVICE_CALLBACK_MEMBER(mcu_irq2_cb);
TIMER_DEVICE_CALLBACK_MEMBER(mcu_adc_cb);
int NB1objcode2tile(int code); int NB1objcode2tile(int code);
int NB2objcode2tile(int code); int NB2objcode2tile(int code);
}; };

View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<mamelayout version="2">
<view name="Square (1:1)">
<screen index="0">
<bounds left="0" top="0" right="1" bottom="1" />
</screen>
</view>
</mamelayout>

3910
src/mame/layout/m1albsqp.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3488
src/mame/layout/m1bargnc.lay Normal file

File diff suppressed because it is too large Load Diff

3748
src/mame/layout/m1bghou.lay Normal file

File diff suppressed because it is too large Load Diff

3922
src/mame/layout/m1bigdel.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2682
src/mame/layout/m1casclb.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3706
src/mame/layout/m1chain.lay Normal file

File diff suppressed because it is too large Load Diff

4880
src/mame/layout/m1cik51o.lay Normal file

File diff suppressed because it is too large Load Diff

7074
src/mame/layout/m1clbfvr.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4858
src/mame/layout/m1fightb.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5946
src/mame/layout/m1gladg.lay Normal file

File diff suppressed because it is too large Load Diff

4746
src/mame/layout/m1grescb.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3992
src/mame/layout/m1htclb.lay Normal file

File diff suppressed because it is too large Load Diff

4954
src/mame/layout/m1imclb.lay Normal file

File diff suppressed because it is too large Load Diff

5968
src/mame/layout/m1infern.lay Normal file

File diff suppressed because it is too large Load Diff

4934
src/mame/layout/m1inwinc.lay Normal file

File diff suppressed because it is too large Load Diff

5258
src/mame/layout/m1itjobc.lay Normal file

File diff suppressed because it is too large Load Diff

5328
src/mame/layout/m1itskob.lay Normal file

File diff suppressed because it is too large Load Diff

2252
src/mame/layout/m1jpmult.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5258
src/mame/layout/m1luxorb.lay Normal file

File diff suppressed because it is too large Load Diff

4770
src/mame/layout/m1manhat.lay Normal file

File diff suppressed because it is too large Load Diff

8234
src/mame/layout/m1monclb.lay Normal file

File diff suppressed because it is too large Load Diff

5004
src/mame/layout/m1mongam.lay Normal file

File diff suppressed because it is too large Load Diff

3210
src/mame/layout/m1monmon.lay Normal file

File diff suppressed because it is too large Load Diff

4294
src/mame/layout/m1monou.lay Normal file

File diff suppressed because it is too large Load Diff

5848
src/mame/layout/m1nhp.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3816
src/mame/layout/m1omega.lay Normal file

File diff suppressed because it is too large Load Diff

4198
src/mame/layout/m1onbusa.lay Normal file

File diff suppressed because it is too large Load Diff

4132
src/mame/layout/m1przeeb.lay Normal file

File diff suppressed because it is too large Load Diff

4312
src/mame/layout/m1retpp.lay Normal file

File diff suppressed because it is too large Load Diff

2236
src/mame/layout/m1search.lay Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4972
src/mame/layout/m1startr.lay Normal file

File diff suppressed because it is too large Load Diff

3870
src/mame/layout/m1taknot.lay Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More