-sound/msm5205: Removed MCFG macros, nw

-drivers/jantotsu, joctronic, jp, kchamp, klax, kungfur, kurukuru, lucky74, lwings, mermaid, mgavegas, mitchell, mjkjidai, ojankohs, opwolf, pachifev, pcktgal, rastan, rmhaihai, sf, sothello, srmp2, suprgolf, system16, taito_log, tehkanwc, topspeed, trackfld, tubep, wacky_gator, wc90b, yunsung8: Removed MACHINE_CONFIG macros, nw

-machine/pce_cd: Removed MACHINE_CONFIG macro, nw
This commit is contained in:
mooglyguy 2019-01-04 04:42:47 +01:00
parent 6327ec1330
commit 76effa7a28
35 changed files with 1377 additions and 1465 deletions

View File

@ -7,16 +7,6 @@
/* an interface for the MSM5205 and similar chips */ /* an interface for the MSM5205 and similar chips */
#define MCFG_MSM5205_PRESCALER_SELECTOR(select) \
downcast<msm5205_device &>(*device).set_prescaler_selector((msm5205_device::select));
#define MCFG_MSM5205_VCK_CALLBACK(cb) \
downcast<msm5205_device &>(*device).set_vck_callback((DEVCB_##cb));
#define MCFG_MSM5205_VCLK_CB(cb) \
downcast<msm5205_device &>(*device).set_vck_legacy_callback((DEVCB_##cb));
class msm5205_device : public device_t, public device_sound_interface class msm5205_device : public device_t, public device_sound_interface
{ {
public: public:

View File

@ -503,38 +503,35 @@ void jantotsu_state::machine_reset()
m_adpcm_trigger = 0; m_adpcm_trigger = 0;
} }
MACHINE_CONFIG_START(jantotsu_state::jantotsu) void jantotsu_state::jantotsu(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,MAIN_CLOCK/4) Z80(config, m_maincpu, MAIN_CLOCK/4);
MCFG_DEVICE_PROGRAM_MAP(jantotsu_map) m_maincpu->set_addrmap(AS_PROGRAM, &jantotsu_state::jantotsu_map);
MCFG_DEVICE_IO_MAP(jantotsu_io) m_maincpu->set_addrmap(AS_IO, &jantotsu_state::jantotsu_io);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); //not accurate
MCFG_SCREEN_SIZE(256, 256) screen.set_size(256, 256);
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1) screen.set_visarea(0, 256-1, 16, 240-1);
MCFG_SCREEN_UPDATE_DRIVER(jantotsu_state, screen_update_jantotsu) screen.set_screen_update(FUNC(jantotsu_state::screen_update_jantotsu));
MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
PALETTE(config, m_palette, FUNC(jantotsu_state::jantotsu_palette), 0x20); PALETTE(config, m_palette, FUNC(jantotsu_state::jantotsu_palette), 0x20);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("sn1", SN76489A, MAIN_CLOCK/4) SN76489A(config, "sn1", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) SN76489A(config, "sn2", MAIN_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_DEVICE_ADD("sn2", SN76489A, MAIN_CLOCK/4) MSM5205(config, m_adpcm, XTAL(384'000));
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_adpcm->vck_legacy_callback().set(FUNC(jantotsu_state::jan_adpcm_int)); /* interrupt function */
m_adpcm->set_prescaler_selector(msm5205_device::S64_4B); /* 6 KHz */
MCFG_DEVICE_ADD("adpcm", MSM5205, XTAL(384'000)) m_adpcm->add_route(ALL_OUTPUTS, "mono", 1.00);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, jantotsu_state, jan_adpcm_int)) /* interrupt function */ }
MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
/************************************* /*************************************

View File

@ -342,9 +342,9 @@ MACHINE_CONFIG_START(joctronic_state::joctronic)
m_maincpu->set_addrmap(AS_IO, &joctronic_state::maincpu_io_map); m_maincpu->set_addrmap(AS_IO, &joctronic_state::maincpu_io_map);
m_maincpu->set_daisy_config(daisy_chain); m_maincpu->set_daisy_config(daisy_chain);
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) // 6 MHz - uses WAIT Z80(config, m_soundcpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT
MCFG_DEVICE_PROGRAM_MAP(joctronic_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &joctronic_state::joctronic_sound_map);
MCFG_DEVICE_IO_MAP(joctronic_sound_io_map) m_soundcpu->set_addrmap(AS_IO, &joctronic_state::joctronic_sound_io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5516 NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5516
@ -357,10 +357,10 @@ MACHINE_CONFIG_START(joctronic_state::joctronic)
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
ctc.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT ctc.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT
MCFG_DEVICE_ADD("drivers1", LS259, 0) // IC4 LS259(config, "drivers1", 0); // IC4
MCFG_DEVICE_ADD("drivers2", LS259, 0) // IC3 LS259(config, "drivers2", 0); // IC3
MCFG_DEVICE_ADD("drivers3", LS259, 0) // IC2 LS259(config, "drivers3", 0); // IC2
MCFG_DEVICE_ADD("drivers4", LS259, 0) // IC1 LS259(config, "drivers4", 0); // IC1
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -373,23 +373,21 @@ MACHINE_CONFIG_START(joctronic_state::joctronic)
AY8910(config, "aysnd2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.40); // 1.5 MHz AY8910(config, "aysnd2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.40); // 1.5 MHz
MCFG_DEVICE_ADD("r2r1", DAC_8BIT_R2R, 0) DAC_8BIT_R2R(config, "r2r1", 0).add_route(ALL_OUTPUTS, "mono", 0.30);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) DAC_8BIT_R2R(config, "r2r2", 0).add_route(ALL_OUTPUTS, "mono", 0.30);
}
MCFG_DEVICE_ADD("r2r2", DAC_8BIT_R2R, 0) void joctronic_state::slalom03(machine_config &config)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) {
MACHINE_CONFIG_END
MACHINE_CONFIG_START(joctronic_state::slalom03)
/* basic machine hardware */ /* basic machine hardware */
Z80(config, m_maincpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT Z80(config, m_maincpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT
m_maincpu->set_addrmap(AS_PROGRAM, &joctronic_state::slalom03_maincpu_map); // 138, 368, 32 m_maincpu->set_addrmap(AS_PROGRAM, &joctronic_state::slalom03_maincpu_map); // 138, 368, 32
m_maincpu->set_addrmap(AS_IO, &joctronic_state::maincpu_io_map); m_maincpu->set_addrmap(AS_IO, &joctronic_state::maincpu_io_map);
m_maincpu->set_daisy_config(daisy_chain); m_maincpu->set_daisy_config(daisy_chain);
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) // 6 MHz - uses WAIT Z80(config, m_soundcpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT
MCFG_DEVICE_PROGRAM_MAP(slalom03_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &joctronic_state::slalom03_sound_map);
MCFG_DEVICE_IO_MAP(slalom03_sound_io_map) m_soundcpu->set_addrmap(AS_IO, &joctronic_state::slalom03_sound_io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5516 NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5516
@ -402,12 +400,12 @@ MACHINE_CONFIG_START(joctronic_state::slalom03)
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
//ctc.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT //ctc.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT
MCFG_DEVICE_ADD("drivers1", HC259, 0) // IC1 HC259(config, "drivers1", 0); // IC1
MCFG_DEVICE_ADD("drivers2", HC259, 0) // IC2 HC259(config, "drivers2", 0); // IC2
MCFG_DEVICE_ADD("drivers3", HC259, 0) // IC3 HC259(config, "drivers3", 0); // IC3
MCFG_DEVICE_ADD("drivers4", HC259, 0) // IC4 HC259(config, "drivers4", 0); // IC4
MCFG_DEVICE_ADD("drivers5", HC259, 0) // IC5 HC259(config, "drivers5", 0); // IC5
MCFG_DEVICE_ADD("drivers6", HC259, 0) // IC6 HC259(config, "drivers6", 0); // IC6
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -421,17 +419,16 @@ MACHINE_CONFIG_START(joctronic_state::slalom03)
aysnd2.port_a_write_callback().set("r2r", FUNC(dac_8bit_r2r_device::data_w)); aysnd2.port_a_write_callback().set("r2r", FUNC(dac_8bit_r2r_device::data_w));
aysnd2.add_route(ALL_OUTPUTS, "mono", 0.40); aysnd2.add_route(ALL_OUTPUTS, "mono", 0.40);
MCFG_DEVICE_ADD("r2r", DAC_8BIT_R2R, 0) DAC_8BIT_R2R(config, "r2r", 0).add_route(ALL_OUTPUTS, "mono", 0.30);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
LS157(config, m_adpcm_select, 0); LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("oki", FUNC(msm5205_device::data_w)); m_adpcm_select->out_callback().set("oki", FUNC(msm5205_device::data_w));
MCFG_DEVICE_ADD("oki", MSM5205, XTAL(12'000'000)/2/16) // 375 kHz MSM5205(config, m_oki, XTAL(12'000'000)/2/16); // 375 kHz
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) // frequency modifiable during operation m_oki->vck_callback().set(FUNC(joctronic_state::vck_w));
MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, joctronic_state, vck_w)) m_oki->set_prescaler_selector(msm5205_device::S96_4B); // frequency modifiable during operation
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
MACHINE_CONFIG_END }
void joctronic_state::bldyrolr(machine_config & config) void joctronic_state::bldyrolr(machine_config & config)
{ {

View File

@ -332,11 +332,13 @@ void jp_state::machine_reset()
m_digits[99] = 0x3f; m_digits[99] = 0x3f;
} }
MACHINE_CONFIG_START(jp_state::jp) void jp_state::jp(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL / 2) Z80(config, m_maincpu, 8_MHz_XTAL / 2);
MCFG_DEVICE_PROGRAM_MAP(jp_map) m_maincpu->set_addrmap(AS_PROGRAM, &jp_state::jp_map);
MCFG_DEVICE_PERIODIC_INT_DRIVER(jp_state, irq0_line_hold, 8_MHz_XTAL / 8192) // 4020 divider m_maincpu->set_periodic_int(FUNC(jp_state::irq0_line_hold), attotime::from_hz(8_MHz_XTAL / 8192)); // 4020 divider
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -378,7 +380,7 @@ MACHINE_CONFIG_START(jp_state::jp)
ay.port_a_read_callback().set(FUNC(jp_state::porta_r)); ay.port_a_read_callback().set(FUNC(jp_state::porta_r));
ay.port_b_read_callback().set(FUNC(jp_state::portb_r)); ay.port_b_read_callback().set(FUNC(jp_state::portb_r));
ay.add_route(ALL_OUTPUTS, "ayvol", 0.9); ay.add_route(ALL_OUTPUTS, "ayvol", 0.9);
MACHINE_CONFIG_END }
WRITE8_MEMBER(jp_state::sample_bank_w) WRITE8_MEMBER(jp_state::sample_bank_w)
{ {
@ -407,23 +409,24 @@ IRQ_CALLBACK_MEMBER(jp_state::sound_int_cb)
return 0xff; return 0xff;
} }
MACHINE_CONFIG_START(jp_state::jps) void jp_state::jps(machine_config &config)
{
jp(config); jp(config);
MCFG_DEVICE_ADD("soundcpu", Z80, 8_MHz_XTAL / 2) Z80(config, m_soundcpu, 8_MHz_XTAL / 2);
MCFG_DEVICE_PROGRAM_MAP(jp_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &jp_state::jp_sound_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(jp_state, sound_int_cb) m_soundcpu->set_irq_acknowledge_callback(FUNC(jp_state::sound_int_cb));
LS157(config, m_adpcm_select, 0); // not labeled in manual; might even be a CD4019 LS157(config, m_adpcm_select, 0); // not labeled in manual; might even be a CD4019
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
SPEAKER(config, "msmvol").front_center(); SPEAKER(config, "msmvol").front_center();
MCFG_DEVICE_ADD("msm", MSM5205, 384'000) // not labeled in manual; clock unknown MSM5205(config, m_msm, 384'000); // not labeled in manual; clock unknown
MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, jp_state, vck_w)) m_msm->vck_callback().set(FUNC(jp_state::vck_w));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // unknown m_msm->set_prescaler_selector(msm5205_device::S48_4B); // unknown
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmvol", 1.0) m_msm->add_route(ALL_OUTPUTS, "msmvol", 1.0);
m_latch[9]->q_out_cb<5>().set_inputline("soundcpu", INPUT_LINE_NMI); // only external input for sound board m_latch[9]->q_out_cb<5>().set_inputline("soundcpu", INPUT_LINE_NMI); // only external input for sound board
MACHINE_CONFIG_END }
/*------------------------------------------------------------------- /*-------------------------------------------------------------------
/ America 1492 #1107 / America 1492 #1107

View File

@ -404,18 +404,19 @@ void kchamp_state::machine_reset()
m_sound_nmi_enable = 0; m_sound_nmi_enable = 0;
} }
MACHINE_CONFIG_START(kchamp_state::kchampvs) void kchamp_state::kchampvs(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* verified on pcb */ Z80(config, m_maincpu, XTAL(12'000'000)/4); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(kchampvs_map) m_maincpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchampvs_map);
MCFG_DEVICE_IO_MAP(kchampvs_io_map) m_maincpu->set_addrmap(AS_IO, &kchamp_state::kchampvs_io_map);
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) m_maincpu->set_addrmap(AS_OPCODES, &kchamp_state::decrypted_opcodes_map);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* verified on pcb */ Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(kchampvs_sound_map) m_audiocpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchampvs_sound_map);
MCFG_DEVICE_IO_MAP(kchampvs_sound_io_map) /* irq's triggered from main cpu */ m_audiocpu->set_addrmap(AS_IO, &kchamp_state::kchampvs_sound_io_map);
/* nmi's from msm5205 */ /* IRQs triggered from main CPU */
/* NMIs from MSM5205 */
ls259_device &mainlatch(LS259(config, "mainlatch")); // 8C ls259_device &mainlatch(LS259(config, "mainlatch")); // 8C
mainlatch.q_out_cb<0>().set(FUNC(kchamp_state::flipscreen_w)); mainlatch.q_out_cb<0>().set(FUNC(kchamp_state::flipscreen_w));
@ -425,16 +426,16 @@ MACHINE_CONFIG_START(kchamp_state::kchampvs)
MCFG_MACHINE_START_OVERRIDE(kchamp_state,kchampvs) MCFG_MACHINE_START_OVERRIDE(kchamp_state,kchampvs)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(59.10) /* verified on pcb */ screen.set_refresh_hz(59.10); /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1) screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchampvs) screen.set_screen_update(FUNC(kchamp_state::screen_update_kchampvs));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, kchamp_state, vblank_irq)) screen.screen_vblank().set(FUNC(kchamp_state::vblank_irq));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_kchamp) GFXDECODE(config, m_gfxdecode, m_palette, gfx_kchamp);
PALETTE(config, m_palette, FUNC(kchamp_state::kchamp_palette), 256); PALETTE(config, m_palette, FUNC(kchamp_state::kchamp_palette), 256);
/* sound hardware */ /* sound hardware */
@ -444,35 +445,34 @@ MACHINE_CONFIG_START(kchamp_state::kchampvs)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
AY8910(config, m_ay[0], XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.3); /* verified on pcb */ AY8910(config, m_ay[0], XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.3); /* verified on pcb */
AY8910(config, m_ay[1], XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.3); /* verified on pcb */ AY8910(config, m_ay[1], XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "speaker", 0.3); /* verified on pcb */
LS157(config, m_adpcm_select, 0); // at 4C LS157(config, m_adpcm_select, 0); // at 4C
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
MCFG_DEVICE_ADD("msm", MSM5205, 375000) /* verified on pcb, discrete circuit clock */ MSM5205(config, m_msm, 375000); /* verified on pcb, discrete circuit clock */
MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, kchamp_state, msmint)) /* interrupt function */ m_msm->vck_callback().set(FUNC(kchamp_state::msmint)); /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 1 / 96 = 3906.25Hz playback */ m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 = 3906.25Hz playback */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) m_msm->add_route(ALL_OUTPUTS, "speaker", 1.0);
MACHINE_CONFIG_END }
/******************** /********************
* 1 Player Version * * 1 Player Version *
********************/ ********************/
MACHINE_CONFIG_START(kchamp_state::kchamp) void kchamp_state::kchamp(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4) /* 12MHz / 4 = 3.0 MHz */ Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */
MCFG_DEVICE_PROGRAM_MAP(kchamp_map) m_maincpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchamp_map);
MCFG_DEVICE_IO_MAP(kchamp_io_map) m_maincpu->set_addrmap(AS_IO, &kchamp_state::kchamp_io_map);
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* 12MHz / 4 = 3.0 MHz */ Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */
MCFG_DEVICE_PROGRAM_MAP(kchamp_sound_map) m_audiocpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchamp_sound_map);
MCFG_DEVICE_IO_MAP(kchamp_sound_io_map) m_audiocpu->set_addrmap(AS_IO, &kchamp_state::kchamp_sound_io_map);
MCFG_DEVICE_PERIODIC_INT_DRIVER(kchamp_state, sound_int, 125) /* Hz */ m_audiocpu->set_periodic_int(FUNC(kchamp_state::sound_int), attotime::from_hz(125)); /* Hz */
/* irq's triggered from main cpu */ /* IRQs triggered from main CPU */
/* nmi's from 125 Hz clock */ /* NMIs from 125Hz clock */
ls259_device &mainlatch(LS259(config, "mainlatch")); // IC71 ls259_device &mainlatch(LS259(config, "mainlatch")); // IC71
mainlatch.q_out_cb<0>().set(FUNC(kchamp_state::flipscreen_w)); mainlatch.q_out_cb<0>().set(FUNC(kchamp_state::flipscreen_w));
@ -481,16 +481,16 @@ MACHINE_CONFIG_START(kchamp_state::kchamp)
MCFG_MACHINE_START_OVERRIDE(kchamp_state,kchamp) MCFG_MACHINE_START_OVERRIDE(kchamp_state,kchamp)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1) screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchamp) screen.set_screen_update(FUNC(kchamp_state::screen_update_kchamp));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, kchamp_state, vblank_irq)) screen.screen_vblank().set(FUNC(kchamp_state::vblank_irq));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_kchamp) GFXDECODE(config, m_gfxdecode, m_palette, gfx_kchamp);
PALETTE(config, m_palette, FUNC(kchamp_state::kchamp_palette), 256); PALETTE(config, m_palette, FUNC(kchamp_state::kchamp_palette), 256);
/* sound hardware */ /* sound hardware */
@ -500,13 +500,14 @@ MACHINE_CONFIG_START(kchamp_state::kchamp)
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
AY8910(config, m_ay[0], XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Guess based on actual pcb recordings of karatedo */ AY8910(config, m_ay[0], XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Guess based on actual pcb recordings of karatedo */
AY8910(config, m_ay[1], XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Guess based on actual pcb recordings of karatedo */ AY8910(config, m_ay[1], XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "speaker", 0.3); /* Guess based on actual pcb recordings of karatedo */
MCFG_DEVICE_ADD("dac", DAC08, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) // IC11 DAC08(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.3); // IC11
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) vref.set_output(5.0);
MACHINE_CONFIG_END vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
/*************************************************************************** /***************************************************************************

View File

@ -194,67 +194,66 @@ GFXDECODE_END
* *
*************************************/ *************************************/
MACHINE_CONFIG_START(klax_state::klax) void klax_state::klax(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
MCFG_DEVICE_PROGRAM_MAP(klax_map) m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax_map);
EEPROM_2816(config, "eeprom").lock_after_write(true); EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
/* video hardware */ /* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_klax) GFXDECODE(config, m_gfxdecode, "palette", gfx_klax);
PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 512).set_membits(8); PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 512).set_membits(8);
MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, klax_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,32) TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8, 8, TILEMAP_SCAN_COLS, 64, 32);
m_playfield_tilemap->set_info_callback(FUNC(klax_state::get_playfield_tile_info));
ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, klax_state::s_mob_config); ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, klax_state::s_mob_config);
m_mob->set_gfxdecode(m_gfxdecode); m_mob->set_gfxdecode(m_gfxdecode);
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
/* note: these parameters are from published specs, not derived */ /* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */ /* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240) m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
MCFG_SCREEN_UPDATE_DRIVER(klax_state, screen_update_klax) m_screen->set_screen_update(FUNC(klax_state::screen_update_klax));
MCFG_SCREEN_PALETTE("palette") m_screen->set_palette("palette");
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, klax_state, video_int_write_line)) m_screen->screen_vblank().set(FUNC(klax_state::video_int_write_line));
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH) OKIM6295(config, "oki", ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) }
MACHINE_CONFIG_END
void klax_state::bootleg_sound_map(address_map &map) void klax_state::bootleg_sound_map(address_map &map)
{ {
map(0x0000, 0x7fff).rom(); map(0x0000, 0x7fff).rom();
} }
MACHINE_CONFIG_START(klax_state::klax2bl) void klax_state::klax2bl(machine_config &config)
{
klax(config); klax(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax2bl_map);
MCFG_DEVICE_PROGRAM_MAP(klax2bl_map)
MCFG_DEVICE_REMOVE("oki") // no 6295 here config.device_remove("oki"); // no 6295 here
MCFG_DEVICE_ADD("audiocpu", Z80, 6000000) /* ? */ z80_device &audiocpu(Z80(config, "audiocpu", 6000000)); /* ? */
MCFG_DEVICE_PROGRAM_MAP(bootleg_sound_map) audiocpu.set_addrmap(AS_PROGRAM, &klax_state::bootleg_sound_map);
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_klax2bl) m_gfxdecode->set_info(gfx_klax2bl);
// guess, probably something like this // guess, probably something like this
// 2 x msm at least on bootleg set 2 (ic18 and ic19) // 2 x msm at least on bootleg set 2 (ic18 and ic19)
MCFG_DEVICE_ADD("msm", MSM5205, 375000) /* ? */ MSM5205(config, "msm", 375000); /* ? */
// MCFG_MSM5205_VCLK_CB(WRITELINE(*this, klax_state, m5205_int1)) /* interrupt function */ // msm.vck_legacy_callback().set(FUNC(klax_state::m5205_int1)); /* interrupt function */
// MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ // msm.set_prescaler_selector(msm5205_device::MSM5205_S96_4B); /* 4KHz 4-bit */
// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // msm.add_route(ALL_OUTPUTS, "mono", 0.25);
}
MACHINE_CONFIG_END
/************************************* /*************************************
* *

View File

@ -296,12 +296,12 @@ void kungfur_state::machine_reset()
m_control = 0; m_control = 0;
} }
MACHINE_CONFIG_START(kungfur_state::kungfur) void kungfur_state::kungfur(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6809, 8000000/2) // 4MHz? M6809(config, m_maincpu, 8000000/2); // 4MHz?
MCFG_DEVICE_PROGRAM_MAP(kungfur_map) m_maincpu->set_addrmap(AS_PROGRAM, &kungfur_state::kungfur_map);
MCFG_DEVICE_PERIODIC_INT_DRIVER(kungfur_state, kungfur_irq, 975) // close approximation m_maincpu->set_periodic_int(FUNC(kungfur_state::kungfur_irq), attotime::from_hz(975)); // close approximation
i8255_device &ppi0(I8255A(config, "ppi8255_0")); i8255_device &ppi0(I8255A(config, "ppi8255_0"));
// $4008 - always $83 (PPI mode 0, ports B & lower C as input) // $4008 - always $83 (PPI mode 0, ports B & lower C as input)
@ -321,16 +321,16 @@ MACHINE_CONFIG_START(kungfur_state::kungfur)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right(); SPEAKER(config, "rspeaker").front_right();
MCFG_DEVICE_ADD("adpcm1", MSM5205, XTAL(384'000)) // clock verified with recording MSM5205(config, m_adpcm1, XTAL(384'000)); // clock verified with recording
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kungfur_state, kfr_adpcm1_int)) m_adpcm1->vck_legacy_callback().set(FUNC(kungfur_state::kfr_adpcm1_int));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) m_adpcm1->set_prescaler_selector(msm5205_device::S48_4B);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) m_adpcm1->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_DEVICE_ADD("adpcm2", MSM5205, XTAL(384'000)) // " MSM5205(config, m_adpcm2, XTAL(384'000)); // clock verified with recording
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kungfur_state, kfr_adpcm2_int)) m_adpcm2->vck_legacy_callback().set(FUNC(kungfur_state::kfr_adpcm2_int));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) m_adpcm2->set_prescaler_selector(msm5205_device::S48_4B);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) m_adpcm2->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MACHINE_CONFIG_END }
/*************************************************************************** /***************************************************************************

View File

@ -840,17 +840,17 @@ void kurukuru_state::machine_reset()
* Machine Driver * * Machine Driver *
*************************************************/ *************************************************/
MACHINE_CONFIG_START(kurukuru_state::kurukuru) void kurukuru_state::kurukuru(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80, CPU_CLOCK) Z80(config, m_maincpu, CPU_CLOCK);
MCFG_DEVICE_PROGRAM_MAP(kurukuru_map) m_maincpu->set_addrmap(AS_PROGRAM, &kurukuru_state::kurukuru_map);
MCFG_DEVICE_IO_MAP(kurukuru_io) m_maincpu->set_addrmap(AS_IO, &kurukuru_state::kurukuru_io);
MCFG_DEVICE_ADD("audiocpu", Z80, CPU_CLOCK) Z80(config, m_audiocpu, CPU_CLOCK);
MCFG_DEVICE_PROGRAM_MAP(kurukuru_audio_map) m_audiocpu->set_addrmap(AS_PROGRAM, &kurukuru_state::kurukuru_audio_map);
MCFG_DEVICE_IO_MAP(kurukuru_audio_io) m_audiocpu->set_addrmap(AS_IO, &kurukuru_state::kurukuru_audio_io);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb) m_audiocpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -861,7 +861,7 @@ MACHINE_CONFIG_START(kurukuru_state::kurukuru)
v9938.int_cb().set_inputline("maincpu", 0); v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER); SCREEN(config, "screen", SCREEN_TYPE_RASTER);
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH ) TICKET_DISPENSER(config, "hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -879,25 +879,23 @@ MACHINE_CONFIG_START(kurukuru_state::kurukuru)
ym2149.port_b_write_callback().set(FUNC(kurukuru_state::ym2149_bout_w)); ym2149.port_b_write_callback().set(FUNC(kurukuru_state::ym2149_bout_w));
ym2149.add_route(ALL_OUTPUTS, "mono", 0.80); ym2149.add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_DEVICE_ADD("adpcm", MSM5205, M5205_CLOCK) MSM5205(config, m_adpcm, M5205_CLOCK);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kurukuru_state, kurukuru_msm5205_vck)) m_adpcm->vck_legacy_callback().set(FUNC(kurukuru_state::kurukuru_msm5205_vck));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */ m_adpcm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) m_adpcm->add_route(ALL_OUTPUTS, "mono", 0.80);
MACHINE_CONFIG_END }
void kurukuru_state::ppj(machine_config &config)
MACHINE_CONFIG_START(kurukuru_state::ppj) {
kurukuru(config); kurukuru(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &kurukuru_state::ppj_map);
MCFG_DEVICE_PROGRAM_MAP(ppj_map) m_maincpu->set_addrmap(AS_IO, &kurukuru_state::ppj_io);
MCFG_DEVICE_IO_MAP(ppj_io)
MCFG_DEVICE_MODIFY("audiocpu") m_audiocpu->set_addrmap(AS_PROGRAM, &kurukuru_state::ppj_audio_map);
MCFG_DEVICE_PROGRAM_MAP(ppj_audio_map) m_audiocpu->set_addrmap(AS_IO, &kurukuru_state::ppj_audio_io);
MCFG_DEVICE_IO_MAP(ppj_audio_io) }
MACHINE_CONFIG_END
/************************************************* /*************************************************

View File

@ -1463,13 +1463,13 @@ WRITE_LINE_MEMBER(lucky74_state::lucky74_adpcm_int)
* Machine Drivers * * Machine Drivers *
*************************/ *************************/
MACHINE_CONFIG_START(lucky74_state::lucky74) void lucky74_state::lucky74(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, C_06B49P_CLKOUT_03) /* 3 MHz. */ Z80(config, m_maincpu, C_06B49P_CLKOUT_03); /* 3 MHz. */
MCFG_DEVICE_PROGRAM_MAP(lucky74_map) m_maincpu->set_addrmap(AS_PROGRAM, &lucky74_state::lucky74_map);
MCFG_DEVICE_IO_MAP(lucky74_portmap) m_maincpu->set_addrmap(AS_IO, &lucky74_state::lucky74_portmap);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lucky74_state, nmi_interrupt) /* 60 Hz. measured */ m_maincpu->set_vblank_int("screen", FUNC(lucky74_state::nmi_interrupt)); /* 60 Hz. measured */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -1495,13 +1495,13 @@ MACHINE_CONFIG_START(lucky74_state::lucky74)
ppi3.out_pc_callback().set(FUNC(lucky74_state::lamps_b_w)); ppi3.out_pc_callback().set(FUNC(lucky74_state::lamps_b_w));
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 30*8-1) screen.set_visarea(0*8, 64*8-1, 1*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(lucky74_state, screen_update_lucky74) screen.set_screen_update(FUNC(lucky74_state::screen_update_lucky74));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
GFXDECODE(config, m_gfxdecode, "palette", gfx_lucky74); GFXDECODE(config, m_gfxdecode, "palette", gfx_lucky74);
PALETTE(config, "palette", FUNC(lucky74_state::lucky74_palette), 512); PALETTE(config, "palette", FUNC(lucky74_state::lucky74_palette), 512);
@ -1509,14 +1509,9 @@ MACHINE_CONFIG_START(lucky74_state::lucky74)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("sn1", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */ SN76489(config, "sn1", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) SN76489(config, "sn2", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
SN76489(config, "sn3", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
MCFG_DEVICE_ADD("sn2", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_DEVICE_ADD("sn3", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
ay8910_device &aysnd(AY8910(config, "aysnd", C_06B49P_CLKOUT_04)); /* 1.5 MHz. */ ay8910_device &aysnd(AY8910(config, "aysnd", C_06B49P_CLKOUT_04)); /* 1.5 MHz. */
aysnd.port_a_read_callback().set_ioport("IN3"); aysnd.port_a_read_callback().set_ioport("IN3");
@ -1524,12 +1519,11 @@ MACHINE_CONFIG_START(lucky74_state::lucky74)
aysnd.port_b_write_callback().set(FUNC(lucky74_state::ym2149_portb_w)); aysnd.port_b_write_callback().set(FUNC(lucky74_state::ym2149_portb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.00); /* not routed to audio hardware */ aysnd.add_route(ALL_OUTPUTS, "mono", 0.00); /* not routed to audio hardware */
MCFG_DEVICE_ADD("msm", MSM5205, C_06B49P_CLKOUT_06) /* 375 kHz. */ MSM5205(config, m_msm, C_06B49P_CLKOUT_06); /* 375 kHz. */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, lucky74_state, lucky74_adpcm_int)) /* interrupt function */ m_msm->vck_legacy_callback().set(FUNC(lucky74_state::lucky74_adpcm_int)); /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) m_msm->add_route(ALL_OUTPUTS, "mono", 0.70);
}
MACHINE_CONFIG_END
/************************* /*************************

View File

@ -931,33 +931,33 @@ void lwings_state::machine_reset()
m_adpcm = 0; m_adpcm = 0;
} }
MACHINE_CONFIG_START(lwings_state::lwings) void lwings_state::lwings(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on PCB */ Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(lwings_map) m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, lwings_interrupt) m_maincpu->set_vblank_int("screen", FUNC(lwings_state::lwings_interrupt));
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) /* verified on PCB */ Z80(config, m_soundcpu, XTAL(12'000'000)/4); /* verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(lwings_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_sound_map);
MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222) // approximation from pcb music recording - where is the frequency actually derived from?? m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222));
// above frequency is an approximation from PCB music recording - where is the frequency actually derived from?
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
/* video hardware */ /* video hardware */
MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8) BUFFERED_SPRITERAM8(config, m_spriteram);
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings) screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */ /* sound hardware */
@ -965,48 +965,45 @@ MACHINE_CONFIG_START(lwings_state::lwings)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
MCFG_DEVICE_ADD("2203a", YM2203, XTAL(12'000'000)/8) /* verified on PCB */ ym2203_device &ym2203a(YM2203(config, "2203a", XTAL(12'000'000)/8)); /* verified on PCB */
MCFG_SOUND_ROUTE(0, "mono", 0.20) ym2203a.add_route(0, "mono", 0.20);
MCFG_SOUND_ROUTE(1, "mono", 0.20) ym2203a.add_route(1, "mono", 0.20);
MCFG_SOUND_ROUTE(2, "mono", 0.20) ym2203a.add_route(2, "mono", 0.20);
MCFG_SOUND_ROUTE(3, "mono", 0.10) ym2203a.add_route(3, "mono", 0.10);
MCFG_DEVICE_ADD("2203b", YM2203, XTAL(12'000'000)/8) /* verified on PCB */ ym2203_device &ym2203b(YM2203(config, "2203b", XTAL(12'000'000)/8)); /* verified on PCB */
MCFG_SOUND_ROUTE(0, "mono", 0.20) ym2203b.add_route(0, "mono", 0.20);
MCFG_SOUND_ROUTE(1, "mono", 0.20) ym2203b.add_route(1, "mono", 0.20);
MCFG_SOUND_ROUTE(2, "mono", 0.20) ym2203b.add_route(2, "mono", 0.20);
MCFG_SOUND_ROUTE(3, "mono", 0.10) ym2203b.add_route(3, "mono", 0.10);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(lwings_state::fball)
void lwings_state::fball(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) Z80(config, m_maincpu, XTAL(12'000'000)/2);
MCFG_DEVICE_PROGRAM_MAP(fball_map) m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt) m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt));
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) // ? Z80(config, m_soundcpu, XTAL(12'000'000)/4); // ?
MCFG_DEVICE_PROGRAM_MAP(fball_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_sound_map);
// MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222) // m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222));
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
/* video hardware */ /* video hardware */
MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8) BUFFERED_SPRITERAM8(config, m_spriteram);
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // the 16-pixel black border on left edge is correct, test mode actually uses that area screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // the 16-pixel black border on left edge is correct, test mode actually uses that area
MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings) screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */ /* sound hardware */
@ -1014,65 +1011,60 @@ MACHINE_CONFIG_START(lwings_state::fball)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) oki.add_route(ALL_OUTPUTS, "mono", 1.0);
MCFG_DEVICE_ADDRESS_MAP(0, fball_oki_map) oki.set_addrmap(0, &lwings_state::fball_oki_map);
}
MACHINE_CONFIG_END void lwings_state::trojan(machine_config &config)
{
MACHINE_CONFIG_START(lwings_state::trojan)
lwings(config); lwings(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */
MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */ m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_map);
MCFG_DEVICE_PROGRAM_MAP(trojan_map)
MCFG_DEVICE_MODIFY("soundcpu") m_soundcpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */
MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */
MCFG_DEVICE_ADD("adpcm", Z80, XTAL(12'000'000)/4) /* verified on PCB */ z80_device &adpcm(Z80(config, "adpcm", XTAL(12'000'000)/4)); /* verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(trojan_adpcm_map) adpcm.set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map);
MCFG_DEVICE_IO_MAP(trojan_adpcm_io_map) adpcm.set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map);
MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 4000) adpcm.set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000));
/* video hardware */ /* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_trojan) m_gfxdecode->set_info(gfx_trojan);
MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan) MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan)
MCFG_SCREEN_MODIFY("screen") subdevice<screen_device>("screen")->set_screen_update(FUNC(lwings_state::screen_update_trojan));
MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_trojan)
/* sound hardware */ /* sound hardware */
GENERIC_LATCH_8(config, "soundlatch2"); GENERIC_LATCH_8(config, "soundlatch2");
MCFG_DEVICE_ADD("5205", MSM5205, XTAL(384'000)) /* verified on PCB */ MSM5205(config, m_msm, XTAL(384'000)); /* verified on PCB */
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* slave mode */ m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* slave mode */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(lwings_state::avengers) void lwings_state::avengers(machine_config &config)
{
trojan(config); trojan(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::avengers_map);
MCFG_DEVICE_PROGRAM_MAP(avengers_map) m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt) // RST 38h triggered by software
MCFG_DEVICE_MODIFY("adpcm") subdevice<cpu_device>("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map);
MCFG_DEVICE_IO_MAP(avengers_adpcm_io_map)
/* video hardware */ /* video hardware */
MCFG_VIDEO_START_OVERRIDE(lwings_state,avengers) MCFG_VIDEO_START_OVERRIDE(lwings_state,avengers)
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(lwings_state::avengersb) void lwings_state::avengersb(machine_config &config)
{
avengers(config); avengers(config);
/* video hardware */ /* video hardware */
MCFG_VIDEO_START_OVERRIDE(lwings_state,avengersb) MCFG_VIDEO_START_OVERRIDE(lwings_state,avengersb)
MACHINE_CONFIG_END }
/************************************* /*************************************

View File

@ -419,11 +419,11 @@ WRITE_LINE_MEMBER(mermaid_state::rougien_adpcm_int)
} }
} }
MACHINE_CONFIG_START(mermaid_state::mermaid) void mermaid_state::mermaid(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 4000000) // ??? Z80(config, m_maincpu, 4000000); // ???
MCFG_DEVICE_PROGRAM_MAP(mermaid_map) m_maincpu->set_addrmap(AS_PROGRAM, &mermaid_state::mermaid_map);
LS259(config, m_latch[0]); LS259(config, m_latch[0]);
m_latch[0]->q_out_cb<0>().set(FUNC(mermaid_state::ay1_enable_w)); m_latch[0]->q_out_cb<0>().set(FUNC(mermaid_state::ay1_enable_w));
@ -440,14 +440,14 @@ MACHINE_CONFIG_START(mermaid_state::mermaid)
m_latch[1]->q_out_cb<7>().set_nop(); // very frequent m_latch[1]->q_out_cb<7>().set_nop(); // very frequent
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(32*8, 32*8) m_screen->set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(mermaid_state, screen_update_mermaid) m_screen->set_screen_update(FUNC(mermaid_state::screen_update_mermaid));
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mermaid_state, screen_vblank_mermaid)) m_screen->screen_vblank().set(FUNC(mermaid_state::screen_vblank_mermaid));
MCFG_SCREEN_PALETTE(m_palette) m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mermaid); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mermaid);
PALETTE(config, m_palette, FUNC(mermaid_state::mermaid_palette), 4*16+2*2, 64+1); PALETTE(config, m_palette, FUNC(mermaid_state::mermaid_palette), 4*16+2*2, 64+1);
@ -456,12 +456,11 @@ MACHINE_CONFIG_START(mermaid_state::mermaid)
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
AY8910(config, m_ay8910[0], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25); AY8910(config, m_ay8910[0], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25);
AY8910(config, m_ay8910[1], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25); AY8910(config, m_ay8910[1], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25);
}
MACHINE_CONFIG_END void mermaid_state::rougien(machine_config &config)
{
MACHINE_CONFIG_START(mermaid_state::rougien)
mermaid(config); mermaid(config);
m_latch[0]->q_out_cb<2>().set(FUNC(mermaid_state::rougien_sample_playback_w)); m_latch[0]->q_out_cb<2>().set(FUNC(mermaid_state::rougien_sample_playback_w));
@ -471,16 +470,16 @@ MACHINE_CONFIG_START(mermaid_state::rougien)
m_palette->set_init(FUNC(mermaid_state::rougien_palette)); m_palette->set_init(FUNC(mermaid_state::rougien_palette));
MCFG_DEVICE_ADD("adpcm", MSM5205, 384000) MSM5205(config, m_adpcm, 384000);
MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, mermaid_state, rougien_adpcm_int)) m_adpcm->vck_callback().set(FUNC(mermaid_state::rougien_adpcm_int));
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) m_adpcm->set_prescaler_selector(msm5205_device::S96_4B);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) m_adpcm->add_route(ALL_OUTPUTS, "mono", 1.00);
RIPPLE_COUNTER(config, m_adpcm_counter); RIPPLE_COUNTER(config, m_adpcm_counter);
m_adpcm_counter->set_device_rom_tag("adpcm"); m_adpcm_counter->set_device_rom_tag("adpcm");
m_adpcm_counter->set_stages(12); m_adpcm_counter->set_stages(12);
m_adpcm_counter->rom_out_cb().set(FUNC(mermaid_state::adpcm_data_w)); m_adpcm_counter->rom_out_cb().set(FUNC(mermaid_state::adpcm_data_w));
MACHINE_CONFIG_END }
/* ROMs */ /* ROMs */

View File

@ -584,41 +584,35 @@ void mgavegas_state::init_mgavegas133()
* Machine Drivers * * Machine Drivers *
*************************/ *************************/
void mgavegas_state::mgavegas(machine_config &config)
MACHINE_CONFIG_START(mgavegas_state::mgavegas) {
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, CPU_CLK) Z80(config, m_maincpu, CPU_CLK);
MCFG_DEVICE_PROGRAM_MAP(mgavegas_map) m_maincpu->set_addrmap(AS_PROGRAM, &mgavegas_state::mgavegas_map);
MCFG_TIMER_DRIVER_ADD_PERIODIC("int_0", mgavegas_state, int_0, attotime::from_hz(6000)) //6KHz from MSM5205 /VCK TIMER(config, "int_0").configure_periodic(FUNC(mgavegas_state::int_0), attotime::from_hz(6000)); //6KHz from MSM5205 /VCK
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
MCFG_TICKET_DISPENSER_ADD("hopper",attotime::from_msec(200),TICKET_MOTOR_ACTIVE_HIGH,TICKET_STATUS_ACTIVE_LOW); TICKET_DISPENSER(config, "hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
AY8910(config, m_ay, AY_CLK); AY8910(config, m_ay, AY_CLK);
m_ay->add_route(ALL_OUTPUTS, "mono", 0.3); m_ay->add_route(ALL_OUTPUTS, "mono", 0.3);
m_ay->port_a_read_callback().set(FUNC(mgavegas_state::ay8910_a_r)); m_ay->port_a_read_callback().set(FUNC(mgavegas_state::ay8910_a_r));
m_ay->port_b_read_callback().set(FUNC(mgavegas_state::ay8910_b_r)); m_ay->port_b_read_callback().set(FUNC(mgavegas_state::ay8910_b_r));
MCFG_DEVICE_ADD("5205", MSM5205, MSM_CLK) MSM5205(config, m_msm, MSM_CLK);
MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) m_msm->set_prescaler_selector(msm5205_device::S64_4B);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter1", 2.0) m_msm->add_route(ALL_OUTPUTS, "filter1", 2.0);
MCFG_DEVICE_ADD("filter1", FILTER_RC)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2",2.0)
MCFG_DEVICE_ADD("filter2", FILTER_RC)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
FILTER_RC(config, "filter1").add_route(ALL_OUTPUTS, "filter2", 2.0);
FILTER_RC(config, "filter2").add_route(ALL_OUTPUTS, "mono", 2.0);
/* Video */ /* Video */
config.set_default_layout(layout_mgavegas); config.set_default_layout(layout_mgavegas);
}
MACHINE_CONFIG_END
/************************* /*************************

View File

@ -1161,30 +1161,29 @@ TIMER_DEVICE_CALLBACK_MEMBER(mitchell_state::mitchell_irq)
} }
} }
MACHINE_CONFIG_START(mitchell_state::mgakuen) void mitchell_state::mgakuen(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* probably same clock as the other mitchell hardware games */ Z80(config, m_maincpu, XTAL(16'000'000)/2); /* probably same clock as the other mitchell hardware games */
MCFG_DEVICE_PROGRAM_MAP(mgakuen_map) m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mgakuen_map);
MCFG_DEVICE_IO_MAP(mitchell_io_map) m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map);
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1);
MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
EEPROM_93C46_16BIT(config, "eeprom"); EEPROM_93C46_16BIT(config, m_eeprom);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mgakuen)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mgakuen);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); // less colors than the others PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); // less colors than the others
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@ -1192,39 +1191,37 @@ MACHINE_CONFIG_START(mitchell_state::mgakuen)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* probably same clock as the other mitchell hardware games */ OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* probably same clock as the other mitchell hardware games */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_oki->add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(16'000'000)/4) /* probably same clock as the other mitchell hardware games */ ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* probably same clock as the other mitchell hardware games */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(mitchell_state::pang)
void mitchell_state::pang(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80, XTAL(16'000'000)/2) /* verified on pcb */ Z80(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(mitchell_map) m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map);
MCFG_DEVICE_IO_MAP(mitchell_io_map) m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map);
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1);
MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
EEPROM_93C46_16BIT(config, "eeprom"); EEPROM_93C46_16BIT(config, m_eeprom);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(57.42) /* verified on pcb */ screen.set_refresh_hz(57.42); /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mitchell)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mitchell);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@ -1232,12 +1229,12 @@ MACHINE_CONFIG_START(mitchell_state::pang)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* verified on pcb */ OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
MCFG_DEVICE_ADD("ymsnd",YM2413, XTAL(16'000'000)/4) /* verified on pcb */ ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
void mitchell_state::pangnv(machine_config &config) void mitchell_state::pangnv(machine_config &config)
{ {
@ -1275,74 +1272,71 @@ WRITE_LINE_MEMBER(mitchell_state::spangbl_adpcm_int)
m_audiocpu->set_input_line(INPUT_LINE_NMI, m_sample_select); m_audiocpu->set_input_line(INPUT_LINE_NMI, m_sample_select);
} }
void mitchell_state::spangbl(machine_config &config)
MACHINE_CONFIG_START(mitchell_state::spangbl) {
pangnv(config); pangnv(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::spangbl_map);
MCFG_DEVICE_PROGRAM_MAP(spangbl_map) m_maincpu->set_addrmap(AS_IO, &mitchell_state::spangbl_io_map);
MCFG_DEVICE_IO_MAP(spangbl_io_map) m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) m_maincpu->set_vblank_int("screen", FUNC(mitchell_state::irq0_line_hold));
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mitchell_state, irq0_line_hold)
MCFG_DEVICE_REMOVE("scantimer") config.device_remove("scantimer");
MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) // Z80A CPU; clock unknown Z80(config, m_audiocpu, 4000000); // Z80A CPU; clock unknown
MCFG_DEVICE_PROGRAM_MAP(spangbl_sound_map) m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::spangbl_sound_map);
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_spangbl) m_gfxdecode->set_info(gfx_spangbl);
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
MCFG_DEVICE_REMOVE("oki") config.device_remove("oki");
MCFG_DEVICE_ADD("msm", MSM5205, 400000) // clock and prescaler unknown MSM5205(config, m_msm, 400000); // clock and prescaler unknown
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, mitchell_state, spangbl_adpcm_int)) // controls music as well as ADCPM rate m_msm->vck_legacy_callback().set(FUNC(mitchell_state::spangbl_adpcm_int)); // controls music as well as ADCPM rate
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) m_msm->set_prescaler_selector(msm5205_device::S96_4B);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
LS157(config, m_adpcm_select, 0); LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(mitchell_state::pangba) void mitchell_state::pangba(machine_config &config)
{
spangbl(config); spangbl(config);
MCFG_DEVICE_MODIFY("audiocpu") m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::pangba_sound_map);
MCFG_DEVICE_PROGRAM_MAP(pangba_sound_map)
MCFG_DEVICE_REPLACE("ymsnd", YM3812, 4000000) YM3812(config.replace(), "ymsnd", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mitchell_state::mstworld)
void mitchell_state::mstworld(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
/* it doesn't glitch with the clock speed set to 4x normal, however this is incorrect.. /* it doesn't glitch with the clock speed set to 4x normal, however this is incorrect..
the interrupt handling (and probably various irq flags / vbl flags handling etc.) is the interrupt handling (and probably various irq flags / vbl flags handling etc.) is
more likely wrong.. the game appears to run too fast anyway .. */ more likely wrong.. the game appears to run too fast anyway .. */
MCFG_DEVICE_ADD("maincpu", Z80, 6000000*4) Z80(config, m_maincpu, 6000000*4);
MCFG_DEVICE_PROGRAM_MAP(mitchell_map) m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map);
MCFG_DEVICE_IO_MAP(mstworld_io_map) m_maincpu->set_addrmap(AS_IO, &mitchell_state::mstworld_io_map);
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mitchell_state, irq0_line_hold) m_maincpu->set_vblank_int("screen", FUNC(mitchell_state::irq0_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80,6000000) /* 6 MHz? */ Z80(config, m_audiocpu, 6000000); /* 6 MHz? */
MCFG_DEVICE_PROGRAM_MAP(mstworld_sound_map) m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::mstworld_sound_map);
MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mstworld)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mstworld);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@ -1352,33 +1346,31 @@ MACHINE_CONFIG_START(mitchell_state::mstworld)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
MCFG_DEVICE_ADD("oki", OKIM6295, 990000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified OKIM6295(config, m_oki, 990000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_oki->add_route(ALL_OUTPUTS, "mono", 0.50);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(mitchell_state::marukin)
void mitchell_state::marukin(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* verified on pcb */ Z80(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(mitchell_map) m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map);
MCFG_DEVICE_IO_MAP(mitchell_io_map) m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map);
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1);
EEPROM_93C46_16BIT(config, "eeprom"); EEPROM_93C46_16BIT(config, m_eeprom);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_marukin)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_marukin);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@ -1386,12 +1378,12 @@ MACHINE_CONFIG_START(mitchell_state::marukin)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* verified on pcb */ OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(16'000'000)/4) /* verified on pcb */ ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
/* /*
@ -1411,28 +1403,27 @@ Vsync is 59.09hz
*/ */
MACHINE_CONFIG_START(mitchell_state::pkladiesbl) void mitchell_state::pkladiesbl(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on pcb */ Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(mitchell_map) m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map);
MCFG_DEVICE_IO_MAP(mitchell_io_map) m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map);
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map);
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1);
EEPROM_93C46_16BIT(config, "eeprom"); EEPROM_93C46_16BIT(config, m_eeprom);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(59.09) /* verified on pcb */ screen.set_refresh_hz(59.09); /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang) screen.set_screen_update(FUNC(mitchell_state::screen_update_pang));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pkladiesbl)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pkladiesbl);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048);
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@ -1440,12 +1431,12 @@ MACHINE_CONFIG_START(mitchell_state::pkladiesbl)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH) /* It should be a OKIM5205 with a 384khz resonator */ OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* It should be a OKIM5205 with a 384khz resonator */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_oki->add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_DEVICE_ADD("ymsnd", YM2413, 3750000) /* verified on pcb, read the comments */ ym2413_device &ymsnd(YM2413(config, "ymsnd", 3750000)); /* verified on pcb, read the comments */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
/************************************* /*************************************
* *

View File

@ -299,11 +299,11 @@ void mjkjidai_state::machine_reset()
MACHINE_CONFIG_START(mjkjidai_state::mjkjidai) MACHINE_CONFIG_START(mjkjidai_state::mjkjidai)
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,10000000/2) /* 5 MHz ??? */ Z80(config, m_maincpu, 10000000/2); /* 5 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(mjkjidai_map) m_maincpu->set_addrmap(AS_PROGRAM, &mjkjidai_state::mjkjidai_map);
MCFG_DEVICE_IO_MAP(mjkjidai_io_map) m_maincpu->set_addrmap(AS_IO, &mjkjidai_state::mjkjidai_io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE); NVRAM(config, m_nvram, nvram_device::DEFAULT_NONE);
i8255_device &ppi1(I8255A(config, "ppi1")); i8255_device &ppi1(I8255A(config, "ppi1"));
ppi1.in_pa_callback().set_ioport("KEYBOARD"); ppi1.in_pa_callback().set_ioport("KEYBOARD");
@ -317,34 +317,29 @@ MACHINE_CONFIG_START(mjkjidai_state::mjkjidai)
ppi2.in_pc_callback().set_ioport("DSW2"); ppi2.in_pc_callback().set_ioport("DSW2");
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(3*8, 61*8-1, 2*8, 30*8-1) screen.set_visarea(3*8, 61*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(mjkjidai_state, screen_update_mjkjidai) screen.set_screen_update(FUNC(mjkjidai_state::screen_update_mjkjidai));
MCFG_SCREEN_PALETTE("palette") screen.set_palette(m_palette);
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mjkjidai_state, vblank_irq)) screen.screen_vblank().set(FUNC(mjkjidai_state::vblank_irq));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mjkjidai) GFXDECODE(config, m_gfxdecode, m_palette, gfx_mjkjidai);
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x100); PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x100);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("sn1", SN76489, 10000000/4) SN76489(config, "sn1", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) SN76489(config, "sn2", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_DEVICE_ADD("sn2", SN76489, 10000000/4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_DEVICE_ADD("msm", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, mjkjidai_state, adpcm_int))
MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
MSM5205(config, m_msm, 384000);
m_msm->vck_legacy_callback().set(FUNC(mjkjidai_state::adpcm_int));
m_msm->set_prescaler_selector(msm5205_device::S64_4B); /* 6kHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
}
/*************************************************************************** /***************************************************************************

View File

@ -712,25 +712,26 @@ void ojankohs_state::machine_reset()
m_screen_refresh = 0; m_screen_refresh = 0;
} }
MACHINE_CONFIG_START(ojankohs_state::ojankohs) void ojankohs_state::ojankohs(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
MCFG_DEVICE_PROGRAM_MAP(ojankohs_map) m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankohs_map);
MCFG_DEVICE_IO_MAP(ojankohs_io_map) m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankohs_io_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold) m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs) MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(512, 512) m_screen->set_size(512, 512);
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1) m_screen->set_visarea(0, 288-1, 0, 224-1);
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs) m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
MCFG_SCREEN_PALETTE(m_palette) m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
PALETTE(config, m_palette).set_entries(1024); PALETTE(config, m_palette).set_entries(1024);
@ -747,31 +748,32 @@ MACHINE_CONFIG_START(ojankohs_state::ojankohs)
aysnd.port_b_read_callback().set(FUNC(ojankohs_state::ojankohs_dipsw2_r)); aysnd.port_b_read_callback().set(FUNC(ojankohs_state::ojankohs_dipsw2_r));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(ojankohs_state::ojankoy)
void ojankohs_state::ojankoy(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
MCFG_DEVICE_PROGRAM_MAP(ojankoy_map) m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map);
MCFG_DEVICE_IO_MAP(ojankoy_io_map) m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoy_io_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold) m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoy) MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoy)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(512, 512) m_screen->set_size(512, 512);
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1) m_screen->set_visarea(0, 288-1, 0, 224-1);
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs) m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
MCFG_SCREEN_PALETTE(m_palette) m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
PALETTE(config, m_palette, FUNC(ojankohs_state::ojankoy_palette), 1024); PALETTE(config, m_palette, FUNC(ojankohs_state::ojankoy_palette), 1024);
@ -786,31 +788,32 @@ MACHINE_CONFIG_START(ojankohs_state::ojankoy)
aysnd.port_b_read_callback().set_ioport("dsw2"); aysnd.port_b_read_callback().set_ioport("dsw2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(ojankohs_state::ccasino)
void ojankohs_state::ccasino(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
MCFG_DEVICE_PROGRAM_MAP(ojankoy_map) m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map);
MCFG_DEVICE_IO_MAP(ccasino_io_map) m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ccasino_io_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold) m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs) MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(512, 512) m_screen->set_size(512, 512);
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1) m_screen->set_visarea(0, 288-1, 0, 224-1);
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs) m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
MCFG_SCREEN_PALETTE(m_palette) m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
PALETTE(config, m_palette).set_entries(1024); PALETTE(config, m_palette).set_entries(1024);
@ -827,31 +830,32 @@ MACHINE_CONFIG_START(ojankohs_state::ccasino)
aysnd.port_b_read_callback().set_ioport("dsw2"); aysnd.port_b_read_callback().set_ioport("dsw2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(ojankohs_state::ojankoc)
void ojankohs_state::ojankoc(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,8000000/2) /* 4.00 MHz */ Z80(config, m_maincpu, 8000000/2); /* 4.00 MHz */
MCFG_DEVICE_PROGRAM_MAP(ojankoc_map) m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoc_map);
MCFG_DEVICE_IO_MAP(ojankoc_io_map) m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoc_io_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold) m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoc) MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoc)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) m_screen->set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 248-1) m_screen->set_visarea(0, 256-1, 8, 248-1);
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankoc) m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankoc));
MCFG_SCREEN_PALETTE(m_palette) m_screen->set_palette(m_palette);
PALETTE(config, m_palette).set_entries(16); PALETTE(config, m_palette).set_entries(16);
@ -865,11 +869,11 @@ MACHINE_CONFIG_START(ojankohs_state::ojankoc)
aysnd.port_b_read_callback().set_ioport("dsw2"); aysnd.port_b_read_callback().set_ioport("dsw2");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15);
MCFG_DEVICE_ADD("msm", MSM5205, 8000000/22) MSM5205(config, m_msm, 8000000/22);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
MACHINE_CONFIG_END }
ROM_START( ojankohs ) ROM_START( ojankohs )

View File

@ -933,35 +933,35 @@ TIMER_DEVICE_CALLBACK_MEMBER(opwolf_state::cchip_irq_clear_cb)
// MACHINE DEFINTIONS // MACHINE DEFINTIONS
//************************************************************************** //**************************************************************************
MACHINE_CONFIG_START(opwolf_state::opwolf) void opwolf_state::opwolf(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz */ M68000(config, m_maincpu, CPU_CLOCK); /* 8 MHz */
MCFG_DEVICE_PROGRAM_MAP(opwolf_map) m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, interrupt) m_maincpu->set_vblank_int("screen", FUNC(opwolf_state::interrupt));
MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK ) /* 4 MHz */ Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(opwolf_sound_z80_map) m_audiocpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_sound_z80_map);
TAITO_CCHIP(config, m_cchip, 12_MHz_XTAL); /* 12MHz measured on pin 20 */ TAITO_CCHIP(config, m_cchip, 12_MHz_XTAL); /* 12MHz measured on pin 20 */
m_cchip->in_pb_callback().set_ioport("IN0"); m_cchip->in_pb_callback().set_ioport("IN0");
m_cchip->in_pc_callback().set_ioport("IN1"); m_cchip->in_pc_callback().set_ioport("IN1");
m_cchip->out_pb_callback().set(FUNC(opwolf_state::counters_w)); m_cchip->out_pb_callback().set(FUNC(opwolf_state::counters_w));
MCFG_TIMER_DRIVER_ADD("cchip_irq_clear", opwolf_state, cchip_irq_clear_cb) TIMER(config, "cchip_irq_clear").configure_generic(FUNC(opwolf_state::cchip_irq_clear_cb));
MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
MCFG_MACHINE_RESET_OVERRIDE(opwolf_state,opwolf) MCFG_MACHINE_RESET_OVERRIDE(opwolf_state,opwolf)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 32*8) screen.set_size(40*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf) screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_opwolf); GFXDECODE(config, "gfxdecode", "palette", gfx_opwolf);
PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048); PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048);
@ -984,58 +984,58 @@ MACHINE_CONFIG_START(opwolf_state::opwolf)
ymsnd.add_route(0, "lspeaker", 1.0); ymsnd.add_route(0, "lspeaker", 1.0);
ymsnd.add_route(1, "rspeaker", 1.0); ymsnd.add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm0", MSM5205, 384000) MSM5205(config, m_msm[0], 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>)) m_msm[0]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<0>));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm1", MSM5205, 384000) MSM5205(config, m_msm[1], 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<1>)) m_msm[1]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<1>));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
pc060ha_device &ciu(PC060HA(config, "ciu", 0)); pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu); ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu); ciu.set_slave_tag(m_audiocpu);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(opwolf_state::opwolfp) void opwolf_state::opwolfp(machine_config &config)
{
opwolf(config); opwolf(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") /* 8 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolfp_map);
MCFG_DEVICE_PROGRAM_MAP(opwolfp_map)
MCFG_DEVICE_REMOVE("cchip") config.device_remove("cchip");
MCFG_DEVICE_REMOVE("cchip_irq_clear") config.device_remove("cchip_irq_clear");
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(opwolf_state::opwolfb) /* OSC clocks unknown for the bootleg, but changed to match original sets */
void opwolf_state::opwolfb(machine_config &config) /* OSC clocks unknown for the bootleg, but changed to match original sets */
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz ??? */ M68000(config, m_maincpu, CPU_CLOCK); /* 8 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(opwolfb_map) m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolfb_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, irq5_line_hold) m_maincpu->set_vblank_int("screen", FUNC(opwolf_state::irq5_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK ) /* 4 MHz ??? */ Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(opwolf_sound_z80_map) m_audiocpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_sound_z80_map);
MCFG_DEVICE_ADD("sub", Z80, SOUND_CPU_CLOCK ) /* 4 MHz ??? */ z80_device &sub(Z80(config, "sub", SOUND_CPU_CLOCK)); /* 4 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(opwolfb_sub_z80_map) sub.set_addrmap(AS_PROGRAM, &opwolf_state::opwolfb_sub_z80_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, irq0_line_hold) sub.set_vblank_int("screen", FUNC(opwolf_state::irq0_line_hold));
MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 32*8) screen.set_size(40*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf) screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_opwolfb); GFXDECODE(config, "gfxdecode", "palette", gfx_opwolfb);
PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048); PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048);
@ -1058,22 +1058,22 @@ MACHINE_CONFIG_START(opwolf_state::opwolfb) /* OSC clocks unknown for the bootle
ymsnd.add_route(0, "lspeaker", 1.0); ymsnd.add_route(0, "lspeaker", 1.0);
ymsnd.add_route(1, "rspeaker", 1.0); ymsnd.add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm0", MSM5205, 384000) MSM5205(config, m_msm[0], 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>)) m_msm[0]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<0>));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm1", MSM5205, 384000) MSM5205(config, m_msm[1], 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<1>)) m_msm[1]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<1>));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
pc060ha_device &ciu(PC060HA(config, "ciu", 0)); pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu); ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu); ciu.set_slave_tag(m_audiocpu);
MACHINE_CONFIG_END }
//************************************************************************** //**************************************************************************

View File

@ -350,8 +350,8 @@ void pachifev_state::machine_start()
save_item(NAME(m_cnt)); save_item(NAME(m_cnt));
} }
MACHINE_CONFIG_START(pachifev_state::pachifev) void pachifev_state::pachifev(machine_config &config)
{
// CPU TMS9995, standard variant; no line connections // CPU TMS9995, standard variant; no line connections
TMS9995(config, m_maincpu, XTAL(12'000'000)); TMS9995(config, m_maincpu, XTAL(12'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &pachifev_state::pachifev_map); m_maincpu->set_addrmap(AS_PROGRAM, &pachifev_state::pachifev_map);
@ -368,16 +368,14 @@ MACHINE_CONFIG_START(pachifev_state::pachifev)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
#if USE_MSM #if USE_MSM
MCFG_DEVICE_ADD("adpcm", MSM5205, XTAL(384'000)) /* guess */ msm5205_device &adpcm(MSM5205(config, "adpcm", XTAL(384'000))); /* guess */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pachifev_state,pf_adpcm_int)) /* interrupt function */ adpcm.vck_legacy_callback().set(FUNC(pachifev_state::pf_adpcm_int)); /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */ adpcm.set_prescaler_selector(msm5205_device::S48_4B); /* 8kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) adpcm.add_route(ALL_OUTPUTS, "mono", 1.00);
#endif #endif
MCFG_DEVICE_ADD("y2404_1", Y2404, XTAL(10'738'635)/3) /* guess */ Y2404(config, "y2404_1", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 0.30); /* guess */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) Y2404(config, "y2404_2", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 0.30); /* guess */
MCFG_DEVICE_ADD("y2404_2", Y2404, XTAL(10'738'635)/3) /* guess */ }
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
ROM_START( pachifev ) ROM_START( pachifev )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )

View File

@ -223,26 +223,26 @@ void pcktgal_state::machine_start()
save_item(NAME(m_toggle)); save_item(NAME(m_toggle));
} }
MACHINE_CONFIG_START(pcktgal_state::pcktgal) void pcktgal_state::pcktgal(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6502, 2000000) M6502(config, m_maincpu, 2000000);
MCFG_DEVICE_PROGRAM_MAP(pcktgal_map) m_maincpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_map);
MCFG_DEVICE_ADD("audiocpu", DECO_222, 1500000) DECO_222(config, m_audiocpu, 1500000);
MCFG_DEVICE_PROGRAM_MAP(pcktgal_sound_map) m_audiocpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_sound_map);
/* IRQs are caused by the ADPCM chip */ /* IRQs are caused by the ADPCM chip */
/* NMIs are caused by the main CPU */ /* NMIs are caused by the main CPU */
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgal) screen.set_screen_update(FUNC(pcktgal_state::screen_update_pcktgal));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI);
GFXDECODE(config, m_gfxdecode, "palette", gfx_pcktgal); GFXDECODE(config, m_gfxdecode, "palette", gfx_pcktgal);
PALETTE(config, m_palette, FUNC(pcktgal_state::pcktgal_palette), 512); PALETTE(config, m_palette, FUNC(pcktgal_state::pcktgal_palette), 512);
@ -256,32 +256,28 @@ MACHINE_CONFIG_START(pcktgal_state::pcktgal)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
MCFG_DEVICE_ADD("ym1", YM2203, 1500000) YM2203(config, "ym1", 1500000).add_route(ALL_OUTPUTS, "mono", 0.60);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) YM3812(config, "ym2", 3000000).add_route(ALL_OUTPUTS, "mono", 1.00);
MCFG_DEVICE_ADD("ym2", YM3812, 3000000) MSM5205(config, m_msm, 384000);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) m_msm->vck_legacy_callback().set(FUNC(pcktgal_state::adpcm_int));
m_msm->set_prescaler_selector(msm5205_device::S48_4B); // 8kHz
m_msm->add_route(ALL_OUTPUTS, "mono", 0.70);
}
MCFG_DEVICE_ADD("msm", MSM5205, 384000) void pcktgal_state::bootleg(machine_config &config)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pcktgal_state, adpcm_int)) // interrupt function {
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8kHz
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pcktgal_state::bootleg)
pcktgal(config); pcktgal(config);
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_bootleg) m_gfxdecode->set_info(gfx_bootleg);
MCFG_SCREEN_MODIFY("screen") subdevice<screen_device>("screen")->set_screen_update(FUNC(pcktgal_state::screen_update_pcktgalb));
MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgalb)
MACHINE_CONFIG_END MACHINE_CONFIG_END
MACHINE_CONFIG_START(pcktgal_state::pcktgal2) void pcktgal_state::pcktgal2(machine_config &config)
{
pcktgal(config); pcktgal(config);
MCFG_DEVICE_REMOVE("audiocpu") M6502(config.replace(), m_audiocpu, 1500000); /* doesn't use the encrypted 222 */
MCFG_DEVICE_ADD("audiocpu", M6502, 1500000) /* doesn't use the encrypted 222 */ m_audiocpu->set_addrmap(AS_PROGRAM, &pcktgal_state::pcktgal_sound_map);
MCFG_DEVICE_PROGRAM_MAP(pcktgal_sound_map) }
MACHINE_CONFIG_END
/***************************************************************************/ /***************************************************************************/

View File

@ -365,28 +365,28 @@ void rastan_state::machine_reset()
} }
MACHINE_CONFIG_START(rastan_state::rastan) void rastan_state::rastan(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) /* verified on pcb */ M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(rastan_map) m_maincpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rastan_state, irq5_line_hold) m_maincpu->set_vblank_int("screen", FUNC(rastan_state::irq5_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) /* verified on pcb */ Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(rastan_s_map) m_audiocpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_s_map);
MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 32*8) screen.set_size(40*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
MCFG_SCREEN_UPDATE_DRIVER(rastan_state, screen_update_rastan) screen.set_screen_update(FUNC(rastan_state::screen_update_rastan));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_rastan); GFXDECODE(config, "gfxdecode", "palette", gfx_rastan);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048); PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048);
@ -408,18 +408,18 @@ MACHINE_CONFIG_START(rastan_state::rastan)
ymsnd.add_route(0, "mono", 0.50); ymsnd.add_route(0, "mono", 0.50);
ymsnd.add_route(1, "mono", 0.50); ymsnd.add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* verified on pcb */ MSM5205(config, m_msm, XTAL(384'000)); /* verified on pcb */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, rastan_state, rastan_msm5205_vck)) /* VCK function */ m_msm->vck_legacy_callback().set(FUNC(rastan_state::rastan_msm5205_vck)); /* VCK function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) m_msm->add_route(ALL_OUTPUTS, "mono", 0.60);
LS157(config, m_adpcm_sel, 0); LS157(config, m_adpcm_sel, 0);
m_adpcm_sel->out_callback().set("msm", FUNC(msm5205_device::data_w)); m_adpcm_sel->out_callback().set(m_msm, FUNC(msm5205_device::data_w));
pc060ha_device &ciu(PC060HA(config, "ciu", 0)); pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu); ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu); ciu.set_slave_tag(m_audiocpu);
MACHINE_CONFIG_END }

View File

@ -71,7 +71,6 @@ protected:
void rmhaihai_io_map(address_map &map); void rmhaihai_io_map(address_map &map);
void rmhaihai_map(address_map &map); void rmhaihai_map(address_map &map);
private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<msm5205_device> m_msm; required_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
@ -504,27 +503,26 @@ static GFXDECODE_START( gfx_themj )
GFXDECODE_END GFXDECODE_END
MACHINE_CONFIG_START(rmhaihai_state::rmhaihai) void rmhaihai_state::rmhaihai(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80,20000000/4) /* 5 MHz ??? */ Z80(config, m_maincpu, 20000000/4); /* 5 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(rmhaihai_map) m_maincpu->set_addrmap(AS_PROGRAM, &rmhaihai_state::rmhaihai_map);
MCFG_DEVICE_IO_MAP(rmhaihai_io_map) m_maincpu->set_addrmap(AS_IO, &rmhaihai_state::rmhaihai_io_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rmhaihai_state, irq0_line_hold) m_maincpu->set_vblank_int("screen", FUNC(rmhaihai_state::irq0_line_hold));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1) screen.set_visarea(4*8, 60*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(rmhaihai_state, screen_update) screen.set_screen_update(FUNC(rmhaihai_state::screen_update));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rmhaihai)
GFXDECODE(config, m_gfxdecode, "palette", gfx_rmhaihai);
PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 0x100); PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 0x100);
/* sound hardware */ /* sound hardware */
@ -535,38 +533,34 @@ MACHINE_CONFIG_START(rmhaihai_state::rmhaihai)
aysnd.port_b_read_callback().set_ioport("DSW1"); aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.30); aysnd.add_route(ALL_OUTPUTS, "mono", 0.30);
MCFG_DEVICE_ADD("msm", MSM5205, 500000) MSM5205(config, m_msm, 500000);
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) m_msm->set_prescaler_selector(msm5205_device::SEX_4B);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(rmhaisei_state::rmhaisei) void rmhaisei_state::rmhaisei(machine_config &config)
{
rmhaihai(config);
/* video hardware */
m_gfxdecode->set_info(gfx_themj);
subdevice<palette_device>("palette")->set_entries(0x200);
}
void themj_state::themj(machine_config &config)
{
rmhaihai(config); rmhaihai(config);
/* basic machine hardware */ /* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &themj_state::themj_map);
m_maincpu->set_addrmap(AS_IO, &themj_state::themj_io_map);
config.device_remove("nvram");
/* video hardware */ /* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_themj) m_gfxdecode->set_info(gfx_themj);
MCFG_DEVICE_MODIFY("palette") subdevice<palette_device>("palette")->set_entries(0x200);
MCFG_PALETTE_ENTRIES(0x200) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(themj_state::themj)
rmhaihai(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(themj_map)
MCFG_DEVICE_IO_MAP(themj_io_map)
MCFG_DEVICE_REMOVE("nvram")
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_themj)
MCFG_DEVICE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(0x200)
MACHINE_CONFIG_END

View File

@ -530,32 +530,31 @@ void sf_state::machine_reset()
m_fgscroll = 0; m_fgscroll = 0;
} }
MACHINE_CONFIG_START(sf_state::sfan) void sf_state::sfan(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000)) M68000(config, m_maincpu, XTAL(8'000'000));
MCFG_DEVICE_PROGRAM_MAP(sfan_map) m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfan_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sf_state, irq1_line_hold) m_maincpu->set_vblank_int("screen", FUNC(sf_state::irq1_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* ? xtal is 3.579545MHz */ Z80(config, m_audiocpu, XTAL(3'579'545)); /* ? xtal is 3.579545MHz */
MCFG_DEVICE_PROGRAM_MAP(sound_map) m_audiocpu->set_addrmap(AS_PROGRAM, &sf_state::sound_map);
MCFG_DEVICE_ADD("audio2", Z80, XTAL(3'579'545)) /* ? xtal is 3.579545MHz */ z80_device &audio2(Z80(config, "audio2", XTAL(3'579'545))); /* ? xtal is 3.579545MHz */
MCFG_DEVICE_PROGRAM_MAP(sound2_map) audio2.set_addrmap(AS_PROGRAM, &sf_state::sound2_map);
MCFG_DEVICE_IO_MAP(sound2_io_map) audio2.set_addrmap(AS_IO, &sf_state::sound2_io_map);
MCFG_DEVICE_PERIODIC_INT_DRIVER(sf_state, irq0_line_hold, 8000) // ? audio2.set_periodic_int(FUNC(sf_state::irq0_line_hold), attotime::from_hz(8000)); // ?
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(64*8, 32*8) screen.set_size(64*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) screen.set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(sf_state, screen_update) screen.set_screen_update(FUNC(sf_state::screen_update));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sf)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sf);
PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024);
/* sound hardware */ /* sound hardware */
@ -569,43 +568,34 @@ MACHINE_CONFIG_START(sf_state::sfan)
ymsnd.add_route(0, "lspeaker", 0.60); ymsnd.add_route(0, "lspeaker", 0.60);
ymsnd.add_route(1, "rspeaker", 0.60); ymsnd.add_route(1, "rspeaker", 0.60);
MCFG_DEVICE_ADD("msm1", MSM5205, 384000) MSM5205(config, m_msm[0], 384000);
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */ m_msm[0]->set_prescaler_selector(msm5205_device::SEX_4B); /* 8KHz playback ? */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm2", MSM5205, 384000) MSM5205(config, m_msm[1], 384000);
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */ m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B); /* 8KHz playback ? */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MACHINE_CONFIG_END }
void sf_state::sfus(machine_config &config)
MACHINE_CONFIG_START(sf_state::sfus) {
sfan(config); sfan(config);
m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfus_map);
}
/* basic machine hardware */ void sf_state::sfjp(machine_config &config)
MCFG_DEVICE_MODIFY("maincpu") {
MCFG_DEVICE_PROGRAM_MAP(sfus_map)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(sf_state::sfjp)
sfan(config); sfan(config);
m_maincpu->set_addrmap(AS_PROGRAM, &sf_state::sfjp_map);
}
/* basic machine hardware */ void sf_state::sfp(machine_config &config)
MCFG_DEVICE_MODIFY("maincpu") {
MCFG_DEVICE_PROGRAM_MAP(sfjp_map)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(sf_state::sfp)
sfan(config); sfan(config);
m_maincpu->set_vblank_int("screen", FUNC(sf_state::irq6_line_hold));
/* basic machine hardware */ }
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sf_state, irq6_line_hold)
MACHINE_CONFIG_END

View File

@ -354,21 +354,21 @@ void sothello_state::machine_reset()
m_msm_data = 0; m_msm_data = 0;
} }
MACHINE_CONFIG_START(sothello_state::sothello) void sothello_state::sothello(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(21'477'272) / 6) Z80(config, m_maincpu, XTAL(21'477'272) / 6);
MCFG_DEVICE_PROGRAM_MAP(maincpu_mem_map) m_maincpu->set_addrmap(AS_PROGRAM, &sothello_state::maincpu_mem_map);
MCFG_DEVICE_IO_MAP(maincpu_io_map) m_maincpu->set_addrmap(AS_IO, &sothello_state::maincpu_io_map);
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(21'477'272) / 6) Z80(config, m_soundcpu, XTAL(21'477'272) / 6);
MCFG_DEVICE_PROGRAM_MAP(soundcpu_mem_map) m_soundcpu->set_addrmap(AS_PROGRAM, &sothello_state::soundcpu_mem_map);
MCFG_DEVICE_IO_MAP(soundcpu_io_map) m_soundcpu->set_addrmap(AS_IO, &sothello_state::soundcpu_io_map);
MCFG_DEVICE_ADD("subcpu", MC6809, XTAL(8'000'000)) // divided by 4 internally MC6809(config, m_subcpu, XTAL(8'000'000)); // divided by 4 internally
MCFG_DEVICE_PROGRAM_MAP(subcpu_mem_map) m_subcpu->set_addrmap(AS_PROGRAM, &sothello_state::subcpu_mem_map);
MCFG_QUANTUM_TIME(attotime::from_hz(600)) config.m_minimum_quantum = attotime::from_hz(600);
/* video hardware */ /* video hardware */
v9938_device &v9938(V9938(config, "v9938", XTAL(21'477'272))); v9938_device &v9938(V9938(config, "v9938", XTAL(21'477'272)));
@ -391,11 +391,11 @@ MACHINE_CONFIG_START(sothello_state::sothello)
ymsnd.add_route(2, "mono", 0.25); ymsnd.add_route(2, "mono", 0.25);
ymsnd.add_route(3, "mono", 0.50); ymsnd.add_route(3, "mono", 0.50);
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) MSM5205(config, m_msm, XTAL(384'000));
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, sothello_state, adpcm_int)) /* interrupt function */ m_msm->vck_legacy_callback().set(FUNC(sothello_state::adpcm_int)); /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
/*************************************************************************** /***************************************************************************

View File

@ -1135,13 +1135,13 @@ static GFXDECODE_START( gfx_srmp3 )
GFXDECODE_END GFXDECODE_END
MACHINE_CONFIG_START(srmp2_state::srmp2) void srmp2_state::srmp2(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ M68000(config, m_maincpu, 16000000/2); /* 8.00 MHz */
MCFG_DEVICE_PROGRAM_MAP(srmp2_map) m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::srmp2_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq4_line_assert) m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq4_line_assert));
MCFG_DEVICE_PERIODIC_INT_DRIVER(srmp2_state, irq2_line_assert, 15*60) /* Interrupt times is not understood */ m_maincpu->set_periodic_int(FUNC(srmp2_state::irq2_line_assert), attotime::from_hz(15*60)); /* Interrupt times is not understood */
MCFG_MACHINE_START_OVERRIDE(srmp2_state,srmp2) MCFG_MACHINE_START_OVERRIDE(srmp2_state,srmp2)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -1150,13 +1150,13 @@ MACHINE_CONFIG_START(srmp2_state::srmp2)
m_seta001->set_gfxdecode_tag("gfxdecode"); m_seta001->set_gfxdecode_tag("gfxdecode");
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(464, 256-16) screen.set_size(464, 256-16);
MCFG_SCREEN_VISIBLE_AREA(16, 464-1, 8, 256-1-24) screen.set_visarea(16, 464-1, 8, 256-1-24);
MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp2) screen.set_screen_update(FUNC(srmp2_state::screen_update_srmp2));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_srmp2); GFXDECODE(config, "gfxdecode", "palette", gfx_srmp2);
PALETTE(config, "palette", FUNC(srmp2_state::srmp2_palette)).set_format(palette_device::xRGB_555, 1024); // sprites only PALETTE(config, "palette", FUNC(srmp2_state::srmp2_palette)).set_format(palette_device::xRGB_555, 1024); // sprites only
@ -1169,22 +1169,19 @@ MACHINE_CONFIG_START(srmp2_state::srmp2)
aysnd.port_b_read_callback().set_ioport("DSW1"); aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.40); aysnd.add_route(ALL_OUTPUTS, "mono", 0.40);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */ m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(srmp2_state::srmp3)
void srmp2_state::srmp3(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
Z80(config, m_maincpu, 3500000); /* 3.50 MHz? or 4.00 MHz? */
MCFG_DEVICE_ADD("maincpu", Z80, 3500000) /* 3.50 MHz ? */ m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::srmp3_map);
// 4000000, /* 4.00 MHz ? */ m_maincpu->set_addrmap(AS_IO, &srmp2_state::srmp3_io_map);
MCFG_DEVICE_PROGRAM_MAP(srmp3_map) m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq0_line_assert));
MCFG_DEVICE_IO_MAP(srmp3_io_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq0_line_assert)
MCFG_MACHINE_START_OVERRIDE(srmp2_state,srmp3) MCFG_MACHINE_START_OVERRIDE(srmp2_state,srmp3)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -1194,13 +1191,13 @@ MACHINE_CONFIG_START(srmp2_state::srmp3)
m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this); m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(400, 256-16) screen.set_size(400, 256-16);
MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 8, 256-1-24) screen.set_visarea(16, 400-1, 8, 256-1-24);
MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp3) screen.set_screen_update(FUNC(srmp2_state::screen_update_srmp3));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_srmp3); GFXDECODE(config, "gfxdecode", "palette", gfx_srmp3);
PALETTE(config, "palette", FUNC(srmp2_state::srmp3_palette)).set_format(palette_device::xRGB_555, 512); // sprites only PALETTE(config, "palette", FUNC(srmp2_state::srmp3_palette)).set_format(palette_device::xRGB_555, 512); // sprites only
@ -1213,29 +1210,29 @@ MACHINE_CONFIG_START(srmp2_state::srmp3)
aysnd.port_b_read_callback().set_ioport("DSW1"); aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.20); aysnd.add_route(ALL_OUTPUTS, "mono", 0.20);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */ m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(srmp2_state::rmgoldyh) void srmp2_state::rmgoldyh(machine_config &config)
{
srmp3(config); srmp3(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::rmgoldyh_map);
MCFG_DEVICE_PROGRAM_MAP(rmgoldyh_map) m_maincpu->set_addrmap(AS_IO, &srmp2_state::rmgoldyh_io_map);
MCFG_DEVICE_IO_MAP(rmgoldyh_io_map)
MCFG_MACHINE_START_OVERRIDE(srmp2_state,rmgoldyh) MCFG_MACHINE_START_OVERRIDE(srmp2_state,rmgoldyh)
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(srmp2_state::mjyuugi)
void srmp2_state::mjyuugi(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ M68000(config, m_maincpu, 16000000/2); /* 8.00 MHz */
MCFG_DEVICE_PROGRAM_MAP(mjyuugi_map) m_maincpu->set_addrmap(AS_PROGRAM, &srmp2_state::mjyuugi_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp2_state, irq4_line_assert) m_maincpu->set_vblank_int("screen", FUNC(srmp2_state::irq4_line_assert));
MCFG_DEVICE_PERIODIC_INT_DRIVER(srmp2_state, irq2_line_assert, 15*60) /* Interrupt times is not understood */ m_maincpu->set_periodic_int(FUNC(srmp2_state::irq2_line_assert), attotime::from_hz(15*60)); /* Interrupt times is not understood */
MCFG_MACHINE_START_OVERRIDE(srmp2_state,mjyuugi) MCFG_MACHINE_START_OVERRIDE(srmp2_state,mjyuugi)
@ -1246,13 +1243,13 @@ MACHINE_CONFIG_START(srmp2_state::mjyuugi)
m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this); m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(400, 256-16) screen.set_size(400, 256-16);
MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 0, 256-1-16) screen.set_visarea(16, 400-1, 0, 256-1-16);
MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_mjyuugi) screen.set_screen_update(FUNC(srmp2_state::screen_update_mjyuugi));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_srmp3); GFXDECODE(config, "gfxdecode", "palette", gfx_srmp3);
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 512); // sprites only PALETTE(config, "palette").set_format(palette_device::xRGB_555, 512); // sprites only
@ -1265,11 +1262,11 @@ MACHINE_CONFIG_START(srmp2_state::mjyuugi)
aysnd.port_b_read_callback().set_ioport("DSW1"); aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.20); aysnd.add_route(ALL_OUTPUTS, "mono", 0.20);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, srmp2_state, adpcm_int)) /* IRQ handler */ m_msm->vck_legacy_callback().set(FUNC(srmp2_state::adpcm_int)); /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
MACHINE_CONFIG_END }

View File

@ -496,13 +496,13 @@ void suprgolf_state::machine_reset()
#define MASTER_CLOCK XTAL(12'000'000) #define MASTER_CLOCK XTAL(12'000'000)
MACHINE_CONFIG_START(suprgolf_state::suprgolf) void suprgolf_state::suprgolf(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,MASTER_CLOCK/2) /* guess */ Z80(config, m_maincpu, MASTER_CLOCK/2); /* guess */
MCFG_DEVICE_PROGRAM_MAP(suprgolf_map) m_maincpu->set_addrmap(AS_PROGRAM, &suprgolf_state::suprgolf_map);
MCFG_DEVICE_IO_MAP(io_map) m_maincpu->set_addrmap(AS_IO, &suprgolf_state::io_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", suprgolf_state, irq0_line_hold) m_maincpu->set_vblank_int("screen", FUNC(suprgolf_state::irq0_line_hold));
i8255_device &ppi0(I8255A(config, "ppi8255_0")); i8255_device &ppi0(I8255A(config, "ppi8255_0"));
ppi0.in_pa_callback().set(FUNC(suprgolf_state::p1_r)); ppi0.in_pa_callback().set(FUNC(suprgolf_state::p1_r));
@ -517,16 +517,16 @@ MACHINE_CONFIG_START(suprgolf_state::suprgolf)
ppi1.out_pc_callback().set(FUNC(suprgolf_state::vregs_w)); ppi1.out_pc_callback().set(FUNC(suprgolf_state::vregs_w));
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(256, 256) screen.set_size(256, 256);
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191) screen.set_visarea(0, 255, 0, 191);
MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update) screen.set_screen_update(FUNC(suprgolf_state::screen_update));
MCFG_SCREEN_PALETTE("palette") screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suprgolf) GFXDECODE(config, m_gfxdecode, m_palette, gfx_suprgolf);
MCFG_PALETTE_ADD("palette", 0x800) PALETTE(config, m_palette).set_entries(0x800);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -539,11 +539,11 @@ MACHINE_CONFIG_START(suprgolf_state::suprgolf)
ymsnd.port_b_write_callback().set(FUNC(suprgolf_state::writeB)); ymsnd.port_b_write_callback().set(FUNC(suprgolf_state::writeB));
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.5); ymsnd.add_route(ALL_OUTPUTS, "mono", 0.5);
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* guess */ MSM5205(config, m_msm, XTAL(384'000)); /* guess */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, suprgolf_state, adpcm_int)) /* interrupt function */ m_msm->vck_legacy_callback().set(FUNC(suprgolf_state::adpcm_int)); /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 4KHz 4-bit */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
ROM_START( suprgolf ) ROM_START( suprgolf )
ROM_REGION( 0x10000, "maincpu", 0 ) // on the YUVO-702A main board ROM_REGION( 0x10000, "maincpu", 0 ) // on the YUVO-702A main board

View File

@ -2060,18 +2060,18 @@ GFXDECODE_END
* *
*************************************/ *************************************/
MACHINE_CONFIG_START(segas1x_bootleg_state::z80_ym2151) void segas1x_bootleg_state::z80_ym2151(machine_config &config)
{
MCFG_DEVICE_ADD("soundcpu", Z80, 4000000) Z80(config, m_soundcpu, 4000000);
MCFG_DEVICE_PROGRAM_MAP(sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sound_map);
MCFG_DEVICE_IO_MAP(sound_io_map) m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::sound_io_map);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right(); SPEAKER(config, "rspeaker").front_right();
YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32); YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32);
MACHINE_CONFIG_END }
WRITE_LINE_MEMBER(segas1x_bootleg_state::sound_cause_nmi) WRITE_LINE_MEMBER(segas1x_bootleg_state::sound_cause_nmi)
{ {
@ -2098,56 +2098,58 @@ void segas1x_bootleg_state::z80_ym2151_upd7759(machine_config &config)
m_upd7759->add_route(ALL_OUTPUTS, "rspeaker", 0.48); m_upd7759->add_route(ALL_OUTPUTS, "rspeaker", 0.48);
} }
MACHINE_CONFIG_START(segas1x_bootleg_state::datsu_ym2151_msm5205) void segas1x_bootleg_state::datsu_ym2151_msm5205(machine_config &config)
{
/* TODO: /* TODO:
- other games might use this sound configuration - other games might use this sound configuration
- speaker is likely to be mono for the bootlegs, not stereo. - speaker is likely to be mono for the bootlegs, not stereo.
- check msm5205 frequency. - check msm5205 frequency.
*/ */
MCFG_DEVICE_ADD("soundcpu",Z80, 4000000) Z80(config, m_soundcpu, 4000000);
MCFG_DEVICE_PROGRAM_MAP(tturfbl_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tturfbl_sound_map);
MCFG_DEVICE_IO_MAP(tturfbl_sound_io_map) m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::tturfbl_sound_io_map);
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right(); SPEAKER(config, "rspeaker").front_right();
YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32); YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32);
MCFG_DEVICE_ADD("5205", MSM5205, 220000) MSM5205(config, m_msm, 220000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, tturfbl_msm5205_callback)) m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::tturfbl_msm5205_callback));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) m_msm->set_prescaler_selector(msm5205_device::S48_4B);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::datsu_2x_ym2203_msm5205) void segas1x_bootleg_state::datsu_2x_ym2203_msm5205(machine_config &config)
MCFG_DEVICE_ADD("soundcpu", Z80, 4000000) {
MCFG_DEVICE_PROGRAM_MAP(shinobi_datsu_sound_map) Z80(config, m_soundcpu, 4000000);
m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shinobi_datsu_sound_map);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
// 2x YM2203C, one at U57, one at U56 // 2x YM2203C, one at U57, one at U56
MCFG_DEVICE_ADD("ym1", YM2203, 4000000) ym2203_device &ym1(YM2203(config, "ym1", 4000000));
MCFG_SOUND_ROUTE(0, "mono", 0.50) ym1.add_route(0, "mono", 0.50);
MCFG_SOUND_ROUTE(1, "mono", 0.50) ym1.add_route(1, "mono", 0.50);
MCFG_SOUND_ROUTE(2, "mono", 0.50) ym1.add_route(2, "mono", 0.50);
MCFG_SOUND_ROUTE(3, "mono", 0.80) ym1.add_route(3, "mono", 0.80);
MCFG_DEVICE_ADD("ym2", YM2203, 4000000) ym2203_device &ym2(YM2203(config, "ym2", 4000000));
MCFG_SOUND_ROUTE(0, "mono", 0.50) ym2.add_route(0, "mono", 0.50);
MCFG_SOUND_ROUTE(1, "mono", 0.50) ym2.add_route(1, "mono", 0.50);
MCFG_SOUND_ROUTE(2, "mono", 0.50) ym2.add_route(2, "mono", 0.50);
MCFG_SOUND_ROUTE(3, "mono", 0.80) ym2.add_route(3, "mono", 0.80);
LS157(config, m_adpcm_select, 0); LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("5205", FUNC(msm5205_device::data_w)); m_adpcm_select->out_callback().set("5205", FUNC(msm5205_device::data_w));
MCFG_DEVICE_ADD("5205", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, datsu_msm5205_callback)) m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::datsu_msm5205_callback));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) m_msm->set_prescaler_selector(msm5205_device::S48_4B);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
MACHINE_CONFIG_END }
/************************************* /*************************************
@ -2157,120 +2159,111 @@ MACHINE_CONFIG_END
*************************************/ *************************************/
/* System 16A/B Bootlegs */ /* System 16A/B Bootlegs */
MACHINE_CONFIG_START(segas1x_bootleg_state::system16_base) void segas1x_bootleg_state::system16_base(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 10000000) M68000(config, m_maincpu, 10000000);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 36*8) m_screen->set_size(40*8, 36*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16) m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system16));
MCFG_SCREEN_PALETTE("palette") m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
PALETTE(config, "palette").set_entries(2048*SHADOW_COLORS_MULTIPLIER); PALETTE(config, m_palette).set_entries(2048*SHADOW_COLORS_MULTIPLIER);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::shinobi_datsu) void segas1x_bootleg_state::shinobi_datsu(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shinobib_map);
MCFG_DEVICE_PROGRAM_MAP(shinobib_map)
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 0, 1, 2, 3, 4, 5, 6, 7); BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 0, 1, 2, 3, 4, 5, 6, 7);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_shinobi ) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_shinobi )
MCFG_SCREEN_MODIFY("screen") m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
datsu_2x_ym2203_msm5205(config); datsu_2x_ym2203_msm5205(config);
MACHINE_CONFIG_END }
void segas1x_bootleg_state::passshtb(machine_config &config)
MACHINE_CONFIG_START(segas1x_bootleg_state::passshtb) {
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::passshtb_map);
MCFG_DEVICE_PROGRAM_MAP(passshtb_map)
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 1, 0, 3, 2, 5, 4, 7, 6); BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 1, 0, 3, 2, 5, 4, 7, 6);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht ) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht )
MCFG_SCREEN_MODIFY("screen") m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
z80_ym2151_upd7759(config); z80_ym2151_upd7759(config);
MACHINE_CONFIG_END }
void segas1x_bootleg_state::passsht4b(machine_config &config)
MACHINE_CONFIG_START(segas1x_bootleg_state::passsht4b) {
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::passht4b_map);
MCFG_DEVICE_PROGRAM_MAP(passht4b_map)
// wrong // wrong
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 1, 0, 3, 2, 5, 4, 7, 6); BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 1, 0, 3, 2, 5, 4, 7, 6);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht ) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht)
MCFG_SCREEN_MODIFY("screen") m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg_passht4b));
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg_passht4b)
datsu_2x_ym2203_msm5205(config); datsu_2x_ym2203_msm5205(config);
MCFG_DEVICE_MODIFY("5205") m_msm->set_prescaler_selector(msm5205_device::S96_4B);
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(segas1x_bootleg_state::wb3bb) void segas1x_bootleg_state::wb3bb(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::wb3bbl_map);
MCFG_DEVICE_PROGRAM_MAP(wb3bbl_map)
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 4, 0, 5, 1, 6, 2, 7, 3); BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 4, 0, 5, 1, 6, 2, 7, 3);
m_sprites->set_local_originy(0); m_sprites->set_local_originy(0);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl ) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl)
MCFG_SCREEN_MODIFY("screen") m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
z80_ym2151(config); z80_ym2151(config);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb_base)
void segas1x_bootleg_state::goldnaxeb_base(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 10000000) M68000(config, m_maincpu, 10000000);
MCFG_DEVICE_PROGRAM_MAP(goldnaxeb1_map) m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::goldnaxeb1_map);
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) m_maincpu->set_addrmap(AS_OPCODES, &segas1x_bootleg_state::decrypted_opcodes_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 28*8) m_screen->set_size(40*8, 28*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16) m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system16));
MCFG_SCREEN_PALETTE("palette") m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
PALETTE(config, "palette", palette_device::BLACK, 2048*SHADOW_COLORS_MULTIPLIER); PALETTE(config, m_palette, palette_device::BLACK, 2048*SHADOW_COLORS_MULTIPLIER);
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-121); m_sprites->set_local_originx(189-121);
@ -2278,166 +2271,165 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb_base)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb1) void segas1x_bootleg_state::goldnaxeb1(machine_config &config)
{
goldnaxeb_base(config); goldnaxeb_base(config);
subdevice<palette_device>("palette")->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER); m_palette->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
z80_ym2151_upd7759(config); z80_ym2151_upd7759(config);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::goldnaxeb2) void segas1x_bootleg_state::goldnaxeb2(machine_config &config)
{
goldnaxeb_base(config); goldnaxeb_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::goldnaxeb2_map);
MCFG_DEVICE_PROGRAM_MAP(goldnaxeb2_map) m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor());
MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
subdevice<palette_device>("palette")->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER); m_palette->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
datsu_2x_ym2203_msm5205(config); datsu_2x_ym2203_msm5205(config);
MACHINE_CONFIG_END }
void segas1x_bootleg_state::bayrouteb1(machine_config &config)
MACHINE_CONFIG_START(segas1x_bootleg_state::bayrouteb1) {
goldnaxeb_base(config); goldnaxeb_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::bayrouteb1_map);
MCFG_DEVICE_PROGRAM_MAP(bayrouteb1_map)
z80_ym2151_upd7759(config); z80_ym2151_upd7759(config);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::bayrouteb2) void segas1x_bootleg_state::bayrouteb2(machine_config &config)
{
goldnaxeb_base(config); goldnaxeb_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::bayrouteb2_map);
MCFG_DEVICE_PROGRAM_MAP(bayrouteb2_map) m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor());
MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
datsu_ym2151_msm5205(config); datsu_ym2151_msm5205(config);
m_sprites->set_local_originx(189-107); m_sprites->set_local_originx(189-107);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::tturfbl) void segas1x_bootleg_state::tturfbl(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tturfbl_map);
MCFG_DEVICE_PROGRAM_MAP(tturfbl_map)
datsu_ym2151_msm5205(config); datsu_ym2151_msm5205(config);
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-107); m_sprites->set_local_originx(189-107);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::dduxbl) void segas1x_bootleg_state::dduxbl(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::dduxbl_map);
MCFG_DEVICE_PROGRAM_MAP(dduxbl_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112); m_sprites->set_local_originx(189-112);
z80_ym2151(config); z80_ym2151(config);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::eswatbl) void segas1x_bootleg_state::eswatbl(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::eswatbl_map);
MCFG_DEVICE_PROGRAM_MAP(eswatbl_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-124); m_sprites->set_local_originx(189-124);
z80_ym2151_upd7759(config); z80_ym2151_upd7759(config);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::eswatbl2) void segas1x_bootleg_state::eswatbl2(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::eswatbl2_map);
MCFG_DEVICE_PROGRAM_MAP(eswatbl2_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-121); m_sprites->set_local_originx(189-121);
datsu_2x_ym2203_msm5205(config); datsu_2x_ym2203_msm5205(config);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::tetrisbl) void segas1x_bootleg_state::tetrisbl(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tetrisbl_map);
MCFG_DEVICE_PROGRAM_MAP(tetrisbl_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112); m_sprites->set_local_originx(189-112);
z80_ym2151(config); z80_ym2151(config);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::altbeastbl) void segas1x_bootleg_state::altbeastbl(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tetrisbl_map);
MCFG_DEVICE_PROGRAM_MAP(tetrisbl_map)
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112); m_sprites->set_local_originx(189-112);
datsu_2x_ym2203_msm5205(config); datsu_2x_ym2203_msm5205(config);
MCFG_DEVICE_MODIFY("5205") m_msm->set_prescaler_selector(msm5205_device::S96_4B);
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(segas1x_bootleg_state::beautyb) void segas1x_bootleg_state::beautyb(machine_config &config)
{
system16_base(config); system16_base(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::beautyb_map);
MCFG_DEVICE_PROGRAM_MAP(beautyb_map)
// no sprites // no sprites
z80_ym2151(config); z80_ym2151(config);
MACHINE_CONFIG_END }
/* System 18 Bootlegs */ /* System 18 Bootlegs */
MACHINE_CONFIG_START(segas1x_bootleg_state::system18) void segas1x_bootleg_state::system18(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 10000000) M68000(config, m_maincpu, 10000000);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
MCFG_DEVICE_ADD("soundcpu", Z80, 8000000) Z80(config, m_soundcpu, 8000000);
MCFG_DEVICE_PROGRAM_MAP(sound_18_map) m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sound_18_map);
MCFG_DEVICE_IO_MAP(sound_18_io_map) m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::sound_18_io_map);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 28*8) m_screen->set_size(40*8, 28*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old) m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
MCFG_SCREEN_PALETTE("palette") m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works) PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
@ -2450,50 +2442,49 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::system18)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
MCFG_DEVICE_ADD("3438.0", YM3438, 8000000) ym3438_device &ym3438_0(YM3438(config, "3438.0", 8000000));
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) ym3438_0.add_route(0, "lspeaker", 0.40);
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40) ym3438_0.add_route(1, "rspeaker", 0.40);
MCFG_DEVICE_ADD("3438.1", YM3438, 8000000) ym3438_device &ym3438_1(YM3438(config, "3438.1", 8000000));
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) ym3438_1.add_route(0, "lspeaker", 0.40);
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40) ym3438_1.add_route(1, "rspeaker", 0.40);
MCFG_DEVICE_ADD("5c68", RF5C68, 8000000) rf5c68_device &rf5c68(RF5C68(config, "5c68", 8000000));
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) rf5c68.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) rf5c68.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADDRESS_MAP(0, pcm_map) rf5c68.set_addrmap(0, &segas1x_bootleg_state::pcm_map);
MACHINE_CONFIG_END }
void segas1x_bootleg_state::astormbl(machine_config &config)
MACHINE_CONFIG_START(segas1x_bootleg_state::astormbl) {
system18(config); system18(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::astormbl_map);
MCFG_DEVICE_PROGRAM_MAP(astormbl_map) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(segas1x_bootleg_state::astormb2)
void segas1x_bootleg_state::astormb2(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12MHz */ M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12MHz */
MCFG_DEVICE_PROGRAM_MAP(astormbl_map) m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::astormbl_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(8'000'000)/2) /* 4MHz */ Z80(config, m_soundcpu, XTAL(8'000'000)/2); /* 4MHz */
MCFG_DEVICE_PROGRAM_MAP(sys18bl_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sys18bl_sound_map);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(58.271) /* V-Sync is 58.271Hz & H-Sync is ~ 14.48KHz measured */ m_screen->set_refresh_hz(58.271); /* V-Sync is 58.271Hz & H-Sync is ~ 14.48KHz measured */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 28*8) m_screen->set_size(40*8, 28*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old) m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
MCFG_SCREEN_PALETTE("palette") m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works) PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); // 64 extra colours for vdp (but we use 2048 so shadow mask works)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
@ -2506,57 +2497,56 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::astormb2)
// 1 OKI M6295 instead of original sound hardware // 1 OKI M6295 instead of original sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH) // 1MHz clock and pin verified okim6295_device &oki(OKIM6295(config, "oki", XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH)); // 1MHz clock and pin verified
MCFG_DEVICE_ADDRESS_MAP(0, sys18bl_oki_map) oki.set_addrmap(0, &segas1x_bootleg_state::sys18bl_oki_map);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) oki.add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(segas1x_bootleg_state::mwalkbl) void segas1x_bootleg_state::mwalkbl(machine_config &config)
{
astormb2(config); astormb2(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::mwalkbl_map);
MCFG_DEVICE_PROGRAM_MAP(mwalkbl_map) }
MACHINE_CONFIG_END
void segas1x_bootleg_state::shdancbl(machine_config &config)
MACHINE_CONFIG_START(segas1x_bootleg_state::shdancbl) {
system18(config); system18(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbl_map);
MCFG_DEVICE_PROGRAM_MAP(shdancbl_map)
MCFG_DEVICE_MODIFY("soundcpu") m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbl_sound_map);
MCFG_DEVICE_PROGRAM_MAP(shdancbl_sound_map) m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::shdancbl_sound_io_map);
MCFG_DEVICE_IO_MAP(shdancbl_sound_io_map)
MCFG_DEVICE_REMOVE("5c68")
MCFG_DEVICE_ADD("5205", MSM5205, 200000) config.device_remove("5c68");
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, shdancbl_msm5205_callback))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(segas1x_bootleg_state::shdancbla) MSM5205(config, m_msm, 200000);
m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::shdancbl_msm5205_callback));
m_msm->set_prescaler_selector(msm5205_device::S48_4B);
m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
}
void segas1x_bootleg_state::shdancbla(machine_config &config)
{
system18(config); system18(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbla_map);
MCFG_DEVICE_PROGRAM_MAP(shdancbla_map)
MCFG_DEVICE_MODIFY("soundcpu") m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbla_sound_map);
MCFG_DEVICE_PROGRAM_MAP(shdancbla_sound_map) m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::shdancbl_sound_io_map);
MCFG_DEVICE_IO_MAP(shdancbl_sound_io_map)
MCFG_DEVICE_REMOVE("5c68")
MCFG_DEVICE_ADD("5205", MSM5205, 200000) config.device_remove("5c68");
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, shdancbl_msm5205_callback))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) MSM5205(config, m_msm, 200000);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::shdancbl_msm5205_callback));
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) m_msm->set_prescaler_selector(msm5205_device::S48_4B);
MACHINE_CONFIG_END m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
}
MACHINE_RESET_MEMBER(segas1x_bootleg_state,ddcrewbl) MACHINE_RESET_MEMBER(segas1x_bootleg_state,ddcrewbl)
@ -2571,24 +2561,24 @@ MACHINE_RESET_MEMBER(segas1x_bootleg_state,ddcrewbl)
} }
MACHINE_CONFIG_START(segas1x_bootleg_state::ddcrewbl) void segas1x_bootleg_state::ddcrewbl(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 10000000) M68000(config, m_maincpu, 10000000);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::ddcrewbl_map);
MCFG_DEVICE_PROGRAM_MAP(ddcrewbl_map) m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 28*8) m_screen->set_size(40*8, 28*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old) m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
MCFG_SCREEN_PALETTE("palette") m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16); GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER); PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
@ -2599,9 +2589,9 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::ddcrewbl)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, 10000000/10, okim6295_device::PIN7_HIGH) // clock and pin not verified okim6295_device &oki(OKIM6295(config, "oki", 10000000/10, okim6295_device::PIN7_HIGH)); // clock and pin not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) oki.add_route(ALL_OUTPUTS, "mono", 1.0);
MACHINE_CONFIG_END }
/************************************* /*************************************

View File

@ -1452,43 +1452,43 @@ WRITE8_MEMBER(fhawk_state::portA_w)
//logerror ("YM2203 bank change val=%02x %s\n", data & 0x03, machine().describe_context() ); //logerror ("YM2203 bank change val=%02x %s\n", data & 0x03, machine().describe_context() );
} }
MACHINE_CONFIG_START(taitol_state::l_system_video) void taitol_state::l_system_video(machine_config &config)
{
for (int bank = 0; bank < 4; bank++) for (int bank = 0; bank < 4; bank++)
{ {
ADDRESS_MAP_BANK(config, m_ram_bnks[bank]).set_map(&taitol_state::tc0090lvc_map).set_options(ENDIANNESS_LITTLE, 8, 20, 0x1000); ADDRESS_MAP_BANK(config, m_ram_bnks[bank]).set_map(&taitol_state::tc0090lvc_map).set_options(ENDIANNESS_LITTLE, 8, 20, 0x1000);
} }
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 32*8) screen.set_size(40*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol) screen.set_screen_update(FUNC(taitol_state::screen_update_taitol));
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, taitol_state, screen_vblank_taitol)) screen.screen_vblank().set(FUNC(taitol_state::screen_vblank_taitol));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, taito_l); GFXDECODE(config, m_gfxdecode, m_palette, taito_l);
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xBGR_444, 256); PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xBGR_444, 256);
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1) TIMER(config, "scantimer").configure_scanline(FUNC(taitol_state::vbl_interrupt), "screen", 0, 1);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(fhawk_state::fhawk)
void fhawk_state::fhawk(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'330'560)/2) /* verified freq on pin122 of TC0090LVC cpu */ Z80(config, m_main_cpu, XTAL(13'330'560)/2); /* verified freq on pin122 of TC0090LVC cpu */
MCFG_DEVICE_PROGRAM_MAP(fhawk_map) m_main_cpu->set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback) m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback));
MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL/3) /* verified on pcb */ Z80(config, m_audio_cpu, 12_MHz_XTAL/3); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(fhawk_3_map) m_audio_cpu->set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_3_map);
MCFG_DEVICE_ADD("slave", Z80, 12_MHz_XTAL/3) /* verified on pcb */ z80_device &slave(Z80(config, "slave", 12_MHz_XTAL/3)); /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(fhawk_2_map) slave.set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_2_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold) slave.set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold));
MCFG_QUANTUM_PERFECT_CPU("maincpu") config.m_perfect_cpu_quantum = subtag("maincpu");
tc0220ioc_device &tc0220ioc(TC0220IOC(config, "tc0220ioc", 0)); tc0220ioc_device &tc0220ioc(TC0220IOC(config, "tc0220ioc", 0));
tc0220ioc.read_0_callback().set_ioport("DSWA"); tc0220ioc.read_0_callback().set_ioport("DSWA");
@ -1518,47 +1518,42 @@ MACHINE_CONFIG_START(fhawk_state::fhawk)
pc060ha_device &ciu(PC060HA(config, "ciu", 0)); pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag("slave"); ciu.set_master_tag("slave");
ciu.set_slave_tag(m_audio_cpu); ciu.set_slave_tag(m_audio_cpu);
MACHINE_CONFIG_END }
void champwr_state::champwr(machine_config &config)
MACHINE_CONFIG_START(champwr_state::champwr) {
fhawk(config); fhawk(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_main_cpu->set_addrmap(AS_PROGRAM, &champwr_state::champwr_map);
MCFG_DEVICE_PROGRAM_MAP(champwr_map)
MCFG_DEVICE_MODIFY("audiocpu") m_audio_cpu->set_addrmap(AS_PROGRAM, &champwr_state::champwr_3_map);
MCFG_DEVICE_PROGRAM_MAP(champwr_3_map)
MCFG_DEVICE_MODIFY("slave") subdevice<cpu_device>("slave")->set_addrmap(AS_PROGRAM, &champwr_state::champwr_2_map);
MCFG_DEVICE_PROGRAM_MAP(champwr_2_map)
/* sound hardware */ /* sound hardware */
subdevice<ym2203_device>("ymsnd")->port_b_write_callback().set(FUNC(champwr_state::msm5205_volume_w)); subdevice<ym2203_device>("ymsnd")->port_b_write_callback().set(FUNC(champwr_state::msm5205_volume_w));
MCFG_DEVICE_ADD("msm", MSM5205, 384_kHz_XTAL) MSM5205(config, m_msm, 384_kHz_XTAL);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, champwr_state, msm5205_vck)) /* VCK function */ m_msm->vck_legacy_callback().set(FUNC(champwr_state::msm5205_vck)); /* VCK function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
MACHINE_CONFIG_END }
void taitol_2cpu_state::raimais(machine_config &config)
{
Z80(config, m_main_cpu, 13330560/2); // needs verification from pin122 of TC0090LVC
m_main_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_map);
m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback));
Z80(config, m_audio_cpu, 12000000/3); // not verified
m_audio_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_3_map);
MACHINE_CONFIG_START(taitol_2cpu_state::raimais) z80_device &slave(Z80(config, "slave", 12000000/3)); // not verified
slave.set_addrmap(AS_PROGRAM, &taitol_2cpu_state::raimais_2_map);
slave.set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold));
MCFG_DEVICE_ADD("maincpu", Z80, 13330560/2) // needs verification from pin122 of TC0090LVC config.m_perfect_cpu_quantum = subtag("maincpu");
MCFG_DEVICE_PROGRAM_MAP(raimais_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/3) // not verified
MCFG_DEVICE_PROGRAM_MAP(raimais_3_map)
MCFG_DEVICE_ADD("slave", Z80, 12000000/3) // not verified
MCFG_DEVICE_PROGRAM_MAP(raimais_2_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold)
MCFG_QUANTUM_PERFECT_CPU("maincpu")
tc0040ioc_device &tc0040ioc(TC0040IOC(config, "tc0040ioc", 0)); tc0040ioc_device &tc0040ioc(TC0040IOC(config, "tc0040ioc", 0));
tc0040ioc.read_0_callback().set_ioport("DSWA"); tc0040ioc.read_0_callback().set_ioport("DSWA");
@ -1588,8 +1583,7 @@ MACHINE_CONFIG_START(taitol_2cpu_state::raimais)
tc0140syt_device &tc0140syt(TC0140SYT(config, "tc0140syt", 0)); tc0140syt_device &tc0140syt(TC0140SYT(config, "tc0140syt", 0));
tc0140syt.set_master_tag("slave"); tc0140syt.set_master_tag("slave");
tc0140syt.set_slave_tag(m_audio_cpu); tc0140syt.set_slave_tag(m_audio_cpu);
MACHINE_CONFIG_END }
void taitol_2cpu_state::kurikint(machine_config &config) void taitol_2cpu_state::kurikint(machine_config &config)
{ {
@ -1734,18 +1728,18 @@ void taitol_1cpu_state::cachat(machine_config &config)
m_ymsnd->port_b_read_callback().set_ioport("DSWB"); m_ymsnd->port_b_read_callback().set_ioport("DSWB");
} }
MACHINE_CONFIG_START(taitol_2cpu_state::evilston) void taitol_2cpu_state::evilston(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'330'560)/2) /* not verified */ Z80(config, m_main_cpu, XTAL(13'330'560)/2); /* not verified */
MCFG_DEVICE_PROGRAM_MAP(evilston_map) m_main_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::evilston_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback) m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback));
MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL/3) /* not verified */ Z80(config, m_audio_cpu, 12_MHz_XTAL/3); /* not verified */
MCFG_DEVICE_PROGRAM_MAP(evilston_2_map) m_audio_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::evilston_2_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold) m_audio_cpu->set_vblank_int("screen", FUNC(taitol_state::irq0_line_hold));
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) config.m_minimum_quantum = attotime::from_hz(6000);
tc0510nio_device &tc0510nio(TC0510NIO(config, "tc0510nio", 0)); tc0510nio_device &tc0510nio(TC0510NIO(config, "tc0510nio", 0));
tc0510nio.read_0_callback().set_ioport("DSWA"); tc0510nio.read_0_callback().set_ioport("DSWA");
@ -1772,7 +1766,7 @@ MACHINE_CONFIG_START(taitol_2cpu_state::evilston)
ymsnd.add_route(1, "mono", 0.25); ymsnd.add_route(1, "mono", 0.25);
ymsnd.add_route(2, "mono", 0.25); ymsnd.add_route(2, "mono", 0.25);
ymsnd.add_route(3, "mono", 0.80); ymsnd.add_route(3, "mono", 0.80);
MACHINE_CONFIG_END }
ROM_START( raimais ) ROM_START( raimais )

View File

@ -665,34 +665,34 @@ static GFXDECODE_START( gfx_tehkanwc )
GFXDECODE_END GFXDECODE_END
MACHINE_CONFIG_START(tehkanwc_state::tehkanwc) void tehkanwc_state::tehkanwc(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 18432000/4) /* 18.432000 / 4 */ Z80(config, m_maincpu, 18432000/4); /* 18.432000 / 4 */
MCFG_DEVICE_PROGRAM_MAP(main_mem) m_maincpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::main_mem);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold) m_maincpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold));
MCFG_DEVICE_ADD("sub", Z80, 18432000/4) Z80(config, m_subcpu, 18432000/4);
MCFG_DEVICE_PROGRAM_MAP(sub_mem) m_subcpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::sub_mem);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold) m_subcpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, 18432000/4) Z80(config, m_audiocpu, 18432000/4);
MCFG_DEVICE_PROGRAM_MAP(sound_mem) m_audiocpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::sound_mem);
MCFG_DEVICE_IO_MAP(sound_port) m_audiocpu->set_addrmap(AS_IO, &tehkanwc_state::sound_port);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold) m_audiocpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold));
MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - seems enough to keep the CPUs in sync */ config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - seems enough to keep the CPUs in sync */
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(tehkanwc_state, screen_update) screen.set_screen_update(FUNC(tehkanwc_state::screen_update));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tehkanwc); GFXDECODE(config, m_gfxdecode, m_palette, gfx_tehkanwc);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 768).set_endianness(ENDIANNESS_BIG); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 768).set_endianness(ENDIANNESS_BIG);
@ -713,11 +713,11 @@ MACHINE_CONFIG_START(tehkanwc_state::tehkanwc)
ay2.port_b_read_callback().set(FUNC(tehkanwc_state::portB_r)); ay2.port_b_read_callback().set(FUNC(tehkanwc_state::portB_r));
ay2.add_route(ALL_OUTPUTS, "mono", 0.25); ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, tehkanwc_state, adpcm_int)) /* interrupt function */ m_msm->vck_legacy_callback().set(FUNC(tehkanwc_state::adpcm_int)); /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
MACHINE_CONFIG_END }
void tehkanwc_state::tehkanwcb(machine_config &config) void tehkanwc_state::tehkanwcb(machine_config &config)
{ {
@ -733,7 +733,6 @@ void tehkanwc_state::tehkanwcb(machine_config &config)
ay2.add_route(ALL_OUTPUTS, "mono", 0.25); ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
} }
void tehkanwc_state::init_teedoff() void tehkanwc_state::init_teedoff()
{ {
/* Patch to avoid the game jumping in shared memory */ /* Patch to avoid the game jumping in shared memory */

View File

@ -567,20 +567,20 @@ void topspeed_state::machine_reset()
} }
MACHINE_CONFIG_START(topspeed_state::topspeed) void topspeed_state::topspeed(machine_config &config)
{
// basic machine hardware // basic machine hardware
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000) / 2) M68000(config, m_maincpu, XTAL(16'000'000) / 2);
MCFG_DEVICE_PROGRAM_MAP(cpua_map) m_maincpu->set_addrmap(AS_PROGRAM, &topspeed_state::cpua_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", topspeed_state, irq6_line_hold) m_maincpu->set_vblank_int("screen", FUNC(topspeed_state::irq6_line_hold));
MCFG_DEVICE_ADD("subcpu", M68000, XTAL(16'000'000) / 2) M68000(config, m_subcpu, XTAL(16'000'000) / 2);
MCFG_DEVICE_PROGRAM_MAP(cpub_map) m_subcpu->set_addrmap(AS_PROGRAM, &topspeed_state::cpub_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", topspeed_state, irq5_line_hold) m_subcpu->set_vblank_int("screen", FUNC(topspeed_state::irq5_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000) / 4) Z80(config, m_audiocpu, XTAL(16'000'000) / 4);
MCFG_DEVICE_PROGRAM_MAP(z80_prg) m_audiocpu->set_addrmap(AS_PROGRAM, &topspeed_state::z80_prg);
MCFG_DEVICE_IO_MAP(z80_io) m_audiocpu->set_addrmap(AS_IO, &topspeed_state::z80_io);
z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(16'000'000) / 4)); z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(16'000'000) / 4));
ctc.intr_callback().set(FUNC(topspeed_state::z80ctc_to0)); ctc.intr_callback().set(FUNC(topspeed_state::z80ctc_to0));
@ -608,13 +608,13 @@ MACHINE_CONFIG_START(topspeed_state::topspeed)
m_tc0040ioc->read_7_callback().set_ioport("IN2"); m_tc0040ioc->read_7_callback().set_ioport("IN2");
// video hardware // video hardware
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60.0532) // Measured on real hardware screen.set_refresh_hz(60.0532); // Measured on real hardware
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(40*8, 32*8) screen.set_size(40*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
MCFG_SCREEN_UPDATE_DRIVER(topspeed_state, screen_update_topspeed) screen.set_screen_update(FUNC(topspeed_state::screen_update_topspeed));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
GFXDECODE(config, m_gfxdecode, "palette", gfx_topspeed); GFXDECODE(config, m_gfxdecode, "palette", gfx_topspeed);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 8192); PALETTE(config, "palette").set_format(palette_device::xBGR_555, 8192);
@ -629,14 +629,14 @@ MACHINE_CONFIG_START(topspeed_state::topspeed)
ymsnd.add_route(0, "filter1l", 1.0); ymsnd.add_route(0, "filter1l", 1.0);
ymsnd.add_route(1, "filter1r", 1.0); ymsnd.add_route(1, "filter1r", 1.0);
MCFG_DEVICE_ADD("msm1", MSM5205, XTAL(384'000)) MSM5205(config, m_msm[0], XTAL(384'000));
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, topspeed_state, msm5205_1_vck)) // VCK function m_msm[0]->vck_legacy_callback().set(FUNC(topspeed_state::msm5205_1_vck));
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8 kHz, 4-bit m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); // 8 kHz, 4-bit
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2", 1.0) m_msm[0]->add_route(ALL_OUTPUTS, "filter2", 1.0);
MCFG_DEVICE_ADD("msm2", MSM5205, XTAL(384'000)) MSM5205(config, m_msm[1], XTAL(384'000));
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) // Slave mode, 4-bit m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B); // Slave mode, 4-bit
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter3", 1.0) m_msm[1]->add_route(ALL_OUTPUTS, "filter3", 1.0);
FILTER_VOLUME(config, "filter1l").add_route(ALL_OUTPUTS, "lspeaker", 1.0); FILTER_VOLUME(config, "filter1l").add_route(ALL_OUTPUTS, "lspeaker", 1.0);
FILTER_VOLUME(config, "filter1r").add_route(ALL_OUTPUTS, "rspeaker", 1.0); FILTER_VOLUME(config, "filter1r").add_route(ALL_OUTPUTS, "rspeaker", 1.0);
@ -644,7 +644,7 @@ MACHINE_CONFIG_START(topspeed_state::topspeed)
FILTER_VOLUME(config, "filter2").add_route(ALL_OUTPUTS, "lspeaker", 1.0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); FILTER_VOLUME(config, "filter2").add_route(ALL_OUTPUTS, "lspeaker", 1.0).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
FILTER_VOLUME(config, "filter3").add_route(ALL_OUTPUTS, "lspeaker", 1.0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); FILTER_VOLUME(config, "filter3").add_route(ALL_OUTPUTS, "lspeaker", 1.0).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MACHINE_CONFIG_END }

View File

@ -895,14 +895,14 @@ WRITE_LINE_MEMBER(trackfld_state::vblank_nmi)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
} }
MACHINE_CONFIG_START(trackfld_state::trackfld) void trackfld_state::trackfld(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, KONAMI1, MASTER_CLOCK/6/2) /* a guess for now */ KONAMI1(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
MCFG_DEVICE_PROGRAM_MAP(main_map) m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map);
MCFG_DEVICE_ADD(m_audiocpu, Z80, SOUND_CLOCK/4) Z80(config, m_audiocpu, SOUND_CLOCK/4);
MCFG_DEVICE_PROGRAM_MAP(sound_map) m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map);
MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld)
MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld)
@ -922,14 +922,14 @@ MACHINE_CONFIG_START(trackfld_state::trackfld)
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) m_screen->set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld) m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld));
MCFG_SCREEN_PALETTE(m_palette) m_screen->set_palette(m_palette);
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq)) m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld); GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld);
PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32); PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32);
@ -940,26 +940,28 @@ MACHINE_CONFIG_START(trackfld_state::trackfld)
GENERIC_LATCH_8(config, "soundlatch"); GENERIC_LATCH_8(config, "soundlatch");
MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, m_audiocpu, m_vlm) TRACKFLD_AUDIO(config, m_soundbrd, 0, m_audiocpu, m_vlm);
MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
MCFG_DEVICE_ADD(m_sn, SN76496, SOUND_CLOCK/8) SN76496(config, m_sn, SOUND_CLOCK/8);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0);
MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK) VLM5030(config, m_vlm, VLM_CLOCK);
MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) m_vlm->set_addrmap(0, &trackfld_state::vlm_map);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(trackfld_state::trackfldu) void trackfld_state::trackfldu(machine_config &config)
{
trackfld(config); trackfld(config);
MCFG_DEVICE_REPLACE("maincpu", MC6809E, MASTER_CLOCK/6/2) /* exact M6809 model unknown */ MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* exact M6809 model unknown */
MCFG_DEVICE_PROGRAM_MAP(main_map) m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map);
}
MACHINE_CONFIG_END
INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq) INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq)
{ {
@ -967,16 +969,16 @@ INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq)
device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
} }
MACHINE_CONFIG_START(trackfld_state::yieartf) void trackfld_state::yieartf(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */ MC6809E(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
MCFG_DEVICE_PROGRAM_MAP(yieartf_map) m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::yieartf_map);
MCFG_DEVICE_PERIODIC_INT_DRIVER(trackfld_state, yieartf_timer_irq, 480) m_maincpu->set_periodic_int(FUNC(trackfld_state::yieartf_timer_irq), attotime::from_hz(480));
// z80 isn't used // z80 isn't used
// MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/4) // Z80(config, m_audiocpu, SOUND_CLOCK/4);
// MCFG_DEVICE_PROGRAM_MAP(sound_map) // m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map);
MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld)
MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld)
@ -996,14 +998,14 @@ MACHINE_CONFIG_START(trackfld_state::yieartf)
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) m_screen->set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld) m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld));
MCFG_SCREEN_PALETTE(m_palette) m_screen->set_palette(m_palette);
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq)) m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld); GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld);
PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32); PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32);
@ -1014,19 +1016,21 @@ MACHINE_CONFIG_START(trackfld_state::yieartf)
GENERIC_LATCH_8(config, "soundlatch"); GENERIC_LATCH_8(config, "soundlatch");
MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, finder_base::DUMMY_TAG, m_vlm) TRACKFLD_AUDIO(config, m_soundbrd, 0, finder_base::DUMMY_TAG, m_vlm);
MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
MCFG_DEVICE_ADD(m_sn, SN76496, MASTER_CLOCK/6/2) SN76496(config, m_sn, MASTER_CLOCK/6/2);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0);
MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK) VLM5030(config, m_vlm, VLM_CLOCK);
MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) m_vlm->set_addrmap(0, &trackfld_state::vlm_map);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0);
MACHINE_CONFIG_END }
void trackfld_state::hyprolyb_adpcm_map(address_map &map) void trackfld_state::hyprolyb_adpcm_map(address_map &map)
{ {
@ -1053,7 +1057,8 @@ void trackfld_state::hyprolyb_adpcm_map(address_map &map)
/* same as the original, but uses ADPCM instead of VLM5030 */ /* same as the original, but uses ADPCM instead of VLM5030 */
/* also different memory handlers do handle that */ /* also different memory handlers do handle that */
MACHINE_CONFIG_START(trackfld_state::hyprolyb) void trackfld_state::hyprolyb(machine_config &config)
{
trackfld(config); trackfld(config);
m_audiocpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t<decltype(this)>::hyprolyb_sound_map, tag(), this)); m_audiocpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t<decltype(this)>::hyprolyb_sound_map, tag(), this));
@ -1062,59 +1067,61 @@ MACHINE_CONFIG_START(trackfld_state::hyprolyb)
MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld)
/* sound hardware */ /* sound hardware */
MCFG_DEVICE_REMOVE("vlm") config.device_remove("vlm");
MCFG_DEVICE_ADD("adpcm", M6802, XTAL(14'318'181)/8) /* unknown clock */ M6802(config, "adpcm", XTAL(14'318'181)/8).set_addrmap(AS_PROGRAM, &trackfld_state::hyprolyb_adpcm_map); /* unknown clock */
MCFG_DEVICE_PROGRAM_MAP(hyprolyb_adpcm_map)
GENERIC_LATCH_8(config, "soundlatch2"); GENERIC_LATCH_8(config, "soundlatch2");
MCFG_DEVICE_ADD("hyprolyb_adpcm", HYPROLYB_ADPCM, 0) HYPROLYB_ADPCM(config, "hyprolyb_adpcm", 0);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) msm5205_device &msm(MSM5205(config, "msm", 384000));
MCFG_MSM5205_VCLK_CB(WRITELINE("hyprolyb_adpcm", hyprolyb_adpcm_device, vck_callback)) /* VCK function */ msm.vck_legacy_callback().set("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::vck_callback));
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4 kHz */ msm.set_prescaler_selector(msm5205_device::S96_4B); /* 4 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) msm.add_route(ALL_OUTPUTS, "speaker", 0.5);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(trackfld_state::atlantol) void trackfld_state::atlantol(machine_config &config)
{
hyprolyb(config); hyprolyb(config);
MCFG_VIDEO_START_OVERRIDE(trackfld_state,atlantol) MCFG_VIDEO_START_OVERRIDE(trackfld_state,atlantol)
MACHINE_CONFIG_END }
void trackfld_state::mastkin(machine_config &config)
MACHINE_CONFIG_START(trackfld_state::mastkin) {
trackfld(config); trackfld(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_REPLACE(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */ MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
MCFG_DEVICE_PROGRAM_MAP(mastkin_map) m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::mastkin_map);
m_mainlatch->q_out_cb<3>().set_nop(); // actually not used m_mainlatch->q_out_cb<3>().set_nop(); // actually not used
m_mainlatch->q_out_cb<4>().set_nop(); // actually not used m_mainlatch->q_out_cb<4>().set_nop(); // actually not used
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(trackfld_state::wizzquiz) void trackfld_state::wizzquiz(machine_config &config)
{
trackfld(config); trackfld(config);
/* basic machine hardware */ /* basic machine hardware */
// right cpu? // right cpu?
MCFG_DEVICE_REPLACE(m_maincpu, M6800, 2048000) /* 1.400 MHz ??? */ M6800(config.replace(), m_maincpu, 2048000); /* 1.400 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(wizzquiz_map) m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::wizzquiz_map);
m_screen->set_screen_vblank(DEVCB_WRITELINE(*this, trackfld_state, vblank_nmi)); m_screen->set_screen_vblank(DEVCB_WRITELINE(*this, trackfld_state, vblank_nmi));
m_mainlatch->q_out_cb<7>().set(FUNC(trackfld_state::nmi_mask_w)); m_mainlatch->q_out_cb<7>().set(FUNC(trackfld_state::nmi_mask_w));
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(trackfld_state::reaktor) void trackfld_state::reaktor(machine_config &config)
{
trackfld(config); trackfld(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_REPLACE(m_maincpu, Z80, MASTER_CLOCK/6) Z80(config.replace(), m_maincpu, MASTER_CLOCK/6);
MCFG_DEVICE_PROGRAM_MAP(reaktor_map) m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::reaktor_map);
MCFG_DEVICE_IO_MAP(reaktor_io_map) m_maincpu->set_addrmap(AS_IO, &trackfld_state::reaktor_io_map);
MACHINE_CONFIG_END }
/*************************************************************************** /***************************************************************************

View File

@ -820,25 +820,25 @@ INPUT_PORTS_END
* *
*************************************/ *************************************/
MACHINE_CONFIG_START(tubep_state::tubep) void tubep_state::tubep(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */ Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(tubep_main_map) m_maincpu->set_addrmap(AS_PROGRAM, &tubep_state::tubep_main_map);
MCFG_DEVICE_IO_MAP(tubep_main_portmap) m_maincpu->set_addrmap(AS_IO, &tubep_state::tubep_main_portmap);
MCFG_DEVICE_ADD("slave",Z80,16000000 / 4) /* 4 MHz */ Z80(config, m_slave, 16000000 / 4); /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(tubep_second_map) m_slave->set_addrmap(AS_PROGRAM, &tubep_state::tubep_second_map);
MCFG_DEVICE_IO_MAP(tubep_second_portmap) m_slave->set_addrmap(AS_IO, &tubep_state::tubep_second_portmap);
MCFG_DEVICE_ADD("soundcpu",Z80,19968000 / 8) /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */ Z80(config, m_soundcpu, 19968000 / 8); /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */
MCFG_DEVICE_PROGRAM_MAP(tubep_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &tubep_state::tubep_sound_map);
MCFG_DEVICE_IO_MAP(tubep_sound_portmap) m_soundcpu->set_addrmap(AS_IO, &tubep_state::tubep_sound_portmap);
MCFG_DEVICE_ADD("mcu",NSC8105,6000000) /* 6 MHz Xtal - divided internally ??? */ NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */
MCFG_DEVICE_PROGRAM_MAP(nsc_map) m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) config.m_minimum_quantum = attotime::from_hz(6000);
ls259_device &mainlatch(LS259(config, "mainlatch")); ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(tubep_state::coin1_counter_w)); mainlatch.q_out_cb<0>().set(FUNC(tubep_state::coin1_counter_w));
@ -852,12 +852,12 @@ MACHINE_CONFIG_START(tubep_state::tubep)
MCFG_MACHINE_RESET_OVERRIDE(tubep_state,tubep) MCFG_MACHINE_RESET_OVERRIDE(tubep_state,tubep)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_SIZE(256, 264) m_screen->set_size(256, 264);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_tubep) m_screen->set_screen_update(FUNC(tubep_state::screen_update_tubep));
MCFG_SCREEN_PALETTE("palette") m_screen->set_palette("palette");
PALETTE(config, "palette", FUNC(tubep_state::tubep_palette), 32 + 256*64); PALETTE(config, "palette", FUNC(tubep_state::tubep_palette), 32 + 256*64);
@ -878,39 +878,37 @@ MACHINE_CONFIG_START(tubep_state::tubep)
ay3.port_a_write_callback().set(FUNC(tubep_state::ay8910_portA_2_w)); ay3.port_a_write_callback().set(FUNC(tubep_state::ay8910_portA_2_w));
ay3.port_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w)); ay3.port_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w));
ay3.add_route(ALL_OUTPUTS, "mono", 0.10); ay3.add_route(ALL_OUTPUTS, "mono", 0.10);
MACHINE_CONFIG_END }
void tubep_state::tubepb(machine_config &config)
MACHINE_CONFIG_START(tubep_state::tubepb) {
tubep(config); tubep(config);
MCFG_DEVICE_REPLACE("mcu", M6802,6000000) /* ? MHz Xtal */ M6802(config.replace(), m_mcu, 6000000); /* ? MHz Xtal */
MCFG_DEVICE_PROGRAM_MAP(nsc_map) m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map);
//MCFG_SCREEN_MODIFY("screen") //m_screen->screen_vblank().set_inputline(m_mcu, INPUT_LINE_NMI);
//MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("mcu", INPUT_LINE_NMI)) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(tubep_state::rjammer)
void tubep_state::rjammer(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */ Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(rjammer_main_map) m_maincpu->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_main_map);
MCFG_DEVICE_IO_MAP(rjammer_main_portmap) m_maincpu->set_addrmap(AS_IO, &tubep_state::rjammer_main_portmap);
MCFG_DEVICE_ADD("slave",Z80,16000000 / 4) /* 4 MHz */ Z80(config, m_slave, 16000000 / 4); /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(rjammer_second_map) m_slave->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_second_map);
MCFG_DEVICE_IO_MAP(rjammer_second_portmap) m_slave->set_addrmap(AS_IO, &tubep_state::rjammer_second_portmap);
MCFG_DEVICE_ADD("soundcpu",Z80,19968000 / 8) /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */ Z80(config, m_soundcpu, 19968000 / 8); /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */
MCFG_DEVICE_PROGRAM_MAP(rjammer_sound_map) m_soundcpu->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_sound_map);
MCFG_DEVICE_IO_MAP(rjammer_sound_portmap) m_soundcpu->set_addrmap(AS_IO, &tubep_state::rjammer_sound_portmap);
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI); GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI);
MCFG_DEVICE_ADD("mcu",NSC8105,6000000) /* 6 MHz Xtal - divided internally ??? */ NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */
MCFG_DEVICE_PROGRAM_MAP(nsc_map) m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 3A ls259_device &mainlatch(LS259(config, "mainlatch")); // 3A
mainlatch.q_out_cb<0>().set(FUNC(tubep_state::coin1_counter_w)); mainlatch.q_out_cb<0>().set(FUNC(tubep_state::coin1_counter_w));
@ -920,14 +918,13 @@ MACHINE_CONFIG_START(tubep_state::rjammer)
MCFG_MACHINE_START_OVERRIDE(tubep_state,rjammer) MCFG_MACHINE_START_OVERRIDE(tubep_state,rjammer)
MCFG_MACHINE_RESET_OVERRIDE(tubep_state,rjammer) MCFG_MACHINE_RESET_OVERRIDE(tubep_state,rjammer)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
MCFG_SCREEN_REFRESH_RATE(60) m_screen->set_refresh_hz(60);
MCFG_SCREEN_SIZE(256, 264) m_screen->set_size(256, 264);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_rjammer) m_screen->set_screen_update(FUNC(tubep_state::screen_update_rjammer));
MCFG_SCREEN_PALETTE("palette") m_screen->set_palette("palette");
PALETTE(config, "palette", FUNC(tubep_state::rjammer_palette), 64); PALETTE(config, "palette", FUNC(tubep_state::rjammer_palette), 64);
@ -949,12 +946,11 @@ MACHINE_CONFIG_START(tubep_state::rjammer)
ay3.port_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w)); ay3.port_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w));
ay3.add_route(ALL_OUTPUTS, "mono", 0.10); ay3.add_route(ALL_OUTPUTS, "mono", 0.10);
MCFG_DEVICE_ADD("msm", MSM5205, 384000) MSM5205(config, m_msm, 384000);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, tubep_state, rjammer_adpcm_vck)) /* VCK function */ m_msm->vck_legacy_callback().set(FUNC(tubep_state::rjammer_adpcm_vck)); /* VCK function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz (changes at run time) */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz (changes at run time) */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
}
MACHINE_CONFIG_END

View File

@ -283,24 +283,24 @@ void wackygtr_state::program_map(address_map &map)
MACHINE_CONFIG_START(wackygtr_state::wackygtr) MACHINE_CONFIG_START(wackygtr_state::wackygtr)
MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(3'579'545)) // HD68B09P MC6809(config, m_maincpu, XTAL(3'579'545)); // HD68B09P
MCFG_DEVICE_PROGRAM_MAP(program_map) m_maincpu->set_addrmap(AS_PROGRAM, &wackygtr_state::program_map);
MCFG_DEVICE_PERIODIC_INT_DRIVER(wackygtr_state, irq0_line_assert, 50) // FIXME m_maincpu->set_periodic_int(FUNC(wackygtr_state::irq0_line_assert), attotime::from_hz(50)); // FIXME
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", wackygtr_state, nmi_timer, attotime::from_hz(100)) // FIXME TIMER(config, "nmi_timer").configure_periodic(FUNC(wackygtr_state::nmi_timer), attotime::from_hz(100)); // FIXME
/* Video */ /* Video */
config.set_default_layout(layout_wackygtr); config.set_default_layout(layout_wackygtr);
/* Sound */ /* Sound */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000) ) MSM5205(config, m_msm, XTAL(384'000));
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, wackygtr_state, adpcm_int)) /* IRQ handler */ m_msm->vck_legacy_callback().set(FUNC(wackygtr_state::adpcm_int)); /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545) ) ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(3'579'545)));
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
i8255_device &ppi0(I8255(config, "i8255_0")); i8255_device &ppi0(I8255(config, "i8255_0"));
ppi0.out_pa_callback().set(FUNC(wackygtr_state::status_lamps_w)); ppi0.out_pa_callback().set(FUNC(wackygtr_state::status_lamps_w));
@ -333,8 +333,8 @@ MACHINE_CONFIG_START(wackygtr_state::wackygtr)
m_pit8253[1]->set_clk<2>(XTAL(3'579'545)/16); // this is a guess m_pit8253[1]->set_clk<2>(XTAL(3'579'545)/16); // this is a guess
m_pit8253[1]->out_handler<2>().set(FUNC(wackygtr_state::alligator_ck<4>)); m_pit8253[1]->out_handler<2>().set(FUNC(wackygtr_state::alligator_ck<4>));
MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) TICKET_DISPENSER(config, "ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
MACHINE_CONFIG_END }
ROM_START( wackygtr ) ROM_START( wackygtr )

View File

@ -353,29 +353,29 @@ void wc90b_state::machine_start()
} }
MACHINE_CONFIG_START(wc90b_state::wc90b) void wc90b_state::wc90b(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK) Z80(config, m_maincpu, MASTER_CLOCK);
MCFG_DEVICE_PROGRAM_MAP(wc90b_map1) m_maincpu->set_addrmap(AS_PROGRAM, &wc90b_state::wc90b_map1);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wc90b_state, irq0_line_assert) m_maincpu->set_vblank_int("screen", FUNC(wc90b_state::irq0_line_assert));
MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK) Z80(config, m_subcpu, MASTER_CLOCK);
MCFG_DEVICE_PROGRAM_MAP(wc90b_map2) m_subcpu->set_addrmap(AS_PROGRAM, &wc90b_state::wc90b_map2);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wc90b_state, irq0_line_assert) m_subcpu->set_vblank_int("screen", FUNC(wc90b_state::irq0_line_assert));
MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK) Z80(config, m_audiocpu, SOUND_CLOCK);
MCFG_DEVICE_PROGRAM_MAP(sound_cpu) m_audiocpu->set_addrmap(AS_PROGRAM, &wc90b_state::sound_cpu);
/* IRQs are triggered by the main CPU */ /* IRQs are triggered by the main CPU */
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_UPDATE_DRIVER(wc90b_state, screen_update) screen.set_screen_update(FUNC(wc90b_state::screen_update));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_wc90b); GFXDECODE(config, m_gfxdecode, m_palette, gfx_wc90b);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024).set_endianness(ENDIANNESS_BIG); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024).set_endianness(ENDIANNESS_BIG);
@ -385,17 +385,14 @@ MACHINE_CONFIG_START(wc90b_state::wc90b)
GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, m_soundlatch);
MCFG_DEVICE_ADD("ymsnd1", YM2203, YM2203_CLOCK) YM2203(config, "ymsnd1", YM2203_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.40);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) YM2203(config, "ymsnd2", YM2203_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.40);
MCFG_DEVICE_ADD("ymsnd2", YM2203, YM2203_CLOCK) MSM5205(config, m_msm, MSM5205_CLOCK);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) m_msm->vck_legacy_callback().set(FUNC(wc90b_state::adpcm_int)); /* interrupt function */
m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
MCFG_DEVICE_ADD("msm", MSM5205, MSM5205_CLOCK) m_msm->add_route(ALL_OUTPUTS, "mono", 0.20);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, wc90b_state, adpcm_int)) /* interrupt function */ }
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
MACHINE_CONFIG_END
ROM_START( twcup90b1 ) ROM_START( twcup90b1 )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x20000, "maincpu", 0 )

View File

@ -341,26 +341,25 @@ void yunsung8_state::machine_reset()
} }
MACHINE_CONFIG_START(yunsung8_state::yunsung8) void yunsung8_state::yunsung8(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* Z80B @ 8MHz? */ Z80(config, m_maincpu, XTAL(16'000'000)/2); /* Z80B @ 8MHz? */
MCFG_DEVICE_PROGRAM_MAP(main_map) m_maincpu->set_addrmap(AS_PROGRAM, &yunsung8_state::main_map);
MCFG_DEVICE_IO_MAP(port_map) m_maincpu->set_addrmap(AS_IO, &yunsung8_state::port_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", yunsung8_state, irq0_line_assert) /* No nmi routine */ m_maincpu->set_vblank_int("screen", FUNC(yunsung8_state::irq0_line_assert)); /* No nmi routine */
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/4) /* ? */ Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* ? */
MCFG_DEVICE_PROGRAM_MAP(sound_map) m_audiocpu->set_addrmap(AS_PROGRAM, &yunsung8_state::sound_map);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_RAW_PARAMS(XTAL(16'000'000)/2, 512, 64, 512-64, 262, 8, 256-8) /* TODO: completely inaccurate */ screen.set_raw(XTAL(16'000'000)/2, 512, 64, 512-64, 262, 8, 256-8); /* TODO: completely inaccurate */
MCFG_SCREEN_UPDATE_DRIVER(yunsung8_state, screen_update) screen.set_screen_update(FUNC(yunsung8_state::screen_update));
MCFG_SCREEN_PALETTE("palette") screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_yunsung8)
MCFG_PALETTE_ADD("palette", 2048)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_yunsung8);
PALETTE(config, m_palette).set_entries(2048);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
@ -368,19 +367,19 @@ MACHINE_CONFIG_START(yunsung8_state::yunsung8)
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0); GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0);
MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(16'000'000)/4) ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(16'000'000)/4));
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
LS157(config, m_adpcm_select, 0); LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(400'000)) /* verified on pcb */ MSM5205(config, m_msm, XTAL(400'000)); /* verified on pcb */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, yunsung8_state, adpcm_int)) /* interrupt function */ m_msm->vck_legacy_callback().set(FUNC(yunsung8_state::adpcm_int)); /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz, 4 Bits */ m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz, 4 Bits */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
MACHINE_CONFIG_END }
/*************************************************************************** /***************************************************************************

View File

@ -11,12 +11,13 @@ class lwings_state : public driver_device
public: public:
lwings_state(const machine_config &mconfig, device_type type, const char *tag) lwings_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_spriteram(*this, "spriteram") , m_spriteram(*this, "spriteram"),
m_fgvideoram(*this, "fgvideoram"), m_fgvideoram(*this, "fgvideoram"),
m_bg1videoram(*this, "bg1videoram"), m_bg1videoram(*this, "bg1videoram"),
m_soundlatch2(*this, "soundlatch_2"), m_soundlatch2(*this, "soundlatch_2"),
m_nmi_mask(0), m_nmi_mask(0),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
m_msm(*this, "5205"), m_msm(*this, "5205"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"), m_palette(*this, "palette"),
@ -91,6 +92,7 @@ private:
void trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); void trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
int avengers_fetch_paldata( ); int avengers_fetch_paldata( );
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
optional_device<msm5205_device> m_msm; optional_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;

View File

@ -241,23 +241,22 @@ void pce_cd_device::nvram_init(nvram_device &nvram, void *data, size_t size)
} }
// TODO: left and right speaker tags should be passed from the parent config, instead of using the hard-coded ones below!?! // TODO: left and right speaker tags should be passed from the parent config, instead of using the hard-coded ones below!?!
MACHINE_CONFIG_START(pce_cd_device::device_add_mconfig) void pce_cd_device::device_add_mconfig(machine_config &config)
NVRAM(config, "bram").set_custom_handler(FUNC(pce_cd_device::nvram_init)); {
NVRAM(config, m_nvram).set_custom_handler(FUNC(pce_cd_device::nvram_init));
MCFG_CDROM_ADD("cdrom") CDROM(config, m_cdrom).set_interface("pce_cdrom");
MCFG_CDROM_INTERFACE("pce_cdrom")
MCFG_DEVICE_ADD( "msm5205", MSM5205, PCE_CD_CLOCK / 6 ) MSM5205(config, m_msm, PCE_CD_CLOCK / 6);
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pce_cd_device, msm5205_int)) /* interrupt function */ m_msm->vck_legacy_callback().set(FUNC(pce_cd_device::msm5205_int)); /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 1/48 prescaler, 4bit data */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 1/48 prescaler, 4bit data */
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "^lspeaker", 0.50 ) m_msm->add_route(ALL_OUTPUTS, "^lspeaker", 0.50);
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "^rspeaker", 0.50 ) m_msm->add_route(ALL_OUTPUTS, "^rspeaker", 0.50);
MCFG_DEVICE_ADD( "cdda", CDDA )
MCFG_SOUND_ROUTE( 0, "^lspeaker", 1.00 )
MCFG_SOUND_ROUTE( 1, "^rspeaker", 1.00 )
MACHINE_CONFIG_END
CDDA(config, m_cdda);
m_cdda->add_route(0, "^lspeaker", 1.00);
m_cdda->add_route(1, "^rspeaker", 1.00);
}
void pce_cd_device::adpcm_stop(uint8_t irq_flag) void pce_cd_device::adpcm_stop(uint8_t irq_flag)
{ {