Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
d33e63ed17
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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")
|
||||||
|
@ -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 );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
@ -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];
|
||||||
|
@ -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
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
@ -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];
|
||||||
|
@ -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>;
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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 */
|
||||||
|
@ -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);
|
||||||
|
@ -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];
|
|
||||||
}
|
}
|
||||||
|
@ -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];
|
||||||
|
@ -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))
|
||||||
|
@ -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);
|
||||||
|
@ -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++)
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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 )
|
||||||
|
@ -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"
|
||||||
|
@ -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 )
|
||||||
|
@ -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)
|
||||||
|
@ -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
@ -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 )
|
||||||
|
@ -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 )
|
||||||
|
@ -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 )
|
||||||
|
@ -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 )
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 )
|
||||||
|
@ -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)
|
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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 )
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 )
|
||||||
|
@ -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);
|
||||||
};
|
};
|
||||||
|
9
src/mame/layout/dotrikun.lay
Normal file
9
src/mame/layout/dotrikun.lay
Normal 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
3910
src/mame/layout/m1albsqp.lay
Normal file
File diff suppressed because it is too large
Load Diff
6372
src/mame/layout/m1apollo2.lay
Normal file
6372
src/mame/layout/m1apollo2.lay
Normal file
File diff suppressed because it is too large
Load Diff
3488
src/mame/layout/m1bargnc.lay
Normal file
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
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
3922
src/mame/layout/m1bigdel.lay
Normal file
File diff suppressed because it is too large
Load Diff
5338
src/mame/layout/m1calypsa.lay
Normal file
5338
src/mame/layout/m1calypsa.lay
Normal file
File diff suppressed because it is too large
Load Diff
2682
src/mame/layout/m1casclb.lay
Normal file
2682
src/mame/layout/m1casclb.lay
Normal file
File diff suppressed because it is too large
Load Diff
3224
src/mame/layout/m1casroy1.lay
Normal file
3224
src/mame/layout/m1casroy1.lay
Normal file
File diff suppressed because it is too large
Load Diff
3706
src/mame/layout/m1chain.lay
Normal file
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
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
7074
src/mame/layout/m1clbfvr.lay
Normal file
File diff suppressed because it is too large
Load Diff
5620
src/mame/layout/m1cluecb1.lay
Normal file
5620
src/mame/layout/m1cluecb1.lay
Normal file
File diff suppressed because it is too large
Load Diff
4916
src/mame/layout/m1cluedo4.lay
Normal file
4916
src/mame/layout/m1cluedo4.lay
Normal file
File diff suppressed because it is too large
Load Diff
7858
src/mame/layout/m1cluessf.lay
Normal file
7858
src/mame/layout/m1cluessf.lay
Normal file
File diff suppressed because it is too large
Load Diff
4074
src/mame/layout/m1coro21n.lay
Normal file
4074
src/mame/layout/m1coro21n.lay
Normal file
File diff suppressed because it is too large
Load Diff
5624
src/mame/layout/m1dkong91n.lay
Normal file
5624
src/mame/layout/m1dkong91n.lay
Normal file
File diff suppressed because it is too large
Load Diff
4028
src/mame/layout/m1dxmono51o.lay
Normal file
4028
src/mame/layout/m1dxmono51o.lay
Normal file
File diff suppressed because it is too large
Load Diff
5090
src/mame/layout/m1eastndl.lay
Normal file
5090
src/mame/layout/m1eastndl.lay
Normal file
File diff suppressed because it is too large
Load Diff
4446
src/mame/layout/m1eastqv3.lay
Normal file
4446
src/mame/layout/m1eastqv3.lay
Normal file
File diff suppressed because it is too large
Load Diff
5412
src/mame/layout/m1fantfbb.lay
Normal file
5412
src/mame/layout/m1fantfbb.lay
Normal file
File diff suppressed because it is too large
Load Diff
4858
src/mame/layout/m1fightb.lay
Normal file
4858
src/mame/layout/m1fightb.lay
Normal file
File diff suppressed because it is too large
Load Diff
7660
src/mame/layout/m1frexplc.lay
Normal file
7660
src/mame/layout/m1frexplc.lay
Normal file
File diff suppressed because it is too large
Load Diff
5946
src/mame/layout/m1gladg.lay
Normal file
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
4746
src/mame/layout/m1grescb.lay
Normal file
File diff suppressed because it is too large
Load Diff
6186
src/mame/layout/m1hotpoth.lay
Normal file
6186
src/mame/layout/m1hotpoth.lay
Normal file
File diff suppressed because it is too large
Load Diff
3992
src/mame/layout/m1htclb.lay
Normal file
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
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
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
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
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
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
2252
src/mame/layout/m1jpmult.lay
Normal file
File diff suppressed because it is too large
Load Diff
2178
src/mame/layout/m1lucknon.lay
Normal file
2178
src/mame/layout/m1lucknon.lay
Normal file
File diff suppressed because it is too large
Load Diff
5258
src/mame/layout/m1luxorb.lay
Normal file
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
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
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
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
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
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
5848
src/mame/layout/m1nhp.lay
Normal file
File diff suppressed because it is too large
Load Diff
6608
src/mame/layout/m1nudbnke.lay
Normal file
6608
src/mame/layout/m1nudbnke.lay
Normal file
File diff suppressed because it is too large
Load Diff
3816
src/mame/layout/m1omega.lay
Normal file
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
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
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
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
2236
src/mame/layout/m1search.lay
Normal file
File diff suppressed because it is too large
Load Diff
2734
src/mame/layout/m1sptlgtc.lay
Normal file
2734
src/mame/layout/m1sptlgtc.lay
Normal file
File diff suppressed because it is too large
Load Diff
4972
src/mame/layout/m1startr.lay
Normal file
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
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
Loading…
Reference in New Issue
Block a user