-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 */
#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
{
public:

View File

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

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_daisy_config(daisy_chain);
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) // 6 MHz - uses WAIT
MCFG_DEVICE_PROGRAM_MAP(joctronic_sound_map)
MCFG_DEVICE_IO_MAP(joctronic_sound_io_map)
Z80(config, m_soundcpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT
m_soundcpu->set_addrmap(AS_PROGRAM, &joctronic_state::joctronic_sound_map);
m_soundcpu->set_addrmap(AS_IO, &joctronic_state::joctronic_sound_io_map);
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.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT
MCFG_DEVICE_ADD("drivers1", LS259, 0) // IC4
MCFG_DEVICE_ADD("drivers2", LS259, 0) // IC3
MCFG_DEVICE_ADD("drivers3", LS259, 0) // IC2
MCFG_DEVICE_ADD("drivers4", LS259, 0) // IC1
LS259(config, "drivers1", 0); // IC4
LS259(config, "drivers2", 0); // IC3
LS259(config, "drivers3", 0); // IC2
LS259(config, "drivers4", 0); // IC1
/* sound hardware */
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
MCFG_DEVICE_ADD("r2r1", DAC_8BIT_R2R, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
DAC_8BIT_R2R(config, "r2r1", 0).add_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)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(joctronic_state::slalom03)
void joctronic_state::slalom03(machine_config &config)
{
/* basic machine hardware */
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_IO, &joctronic_state::maincpu_io_map);
m_maincpu->set_daisy_config(daisy_chain);
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/2) // 6 MHz - uses WAIT
MCFG_DEVICE_PROGRAM_MAP(slalom03_sound_map)
MCFG_DEVICE_IO_MAP(slalom03_sound_io_map)
Z80(config, m_soundcpu, XTAL(12'000'000)/2); // 6 MHz - uses WAIT
m_soundcpu->set_addrmap(AS_PROGRAM, &joctronic_state::slalom03_sound_map);
m_soundcpu->set_addrmap(AS_IO, &joctronic_state::slalom03_sound_io_map);
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.zc_callback<0>().set_inputline(m_soundcpu, INPUT_LINE_IRQ0); //SINT
MCFG_DEVICE_ADD("drivers1", HC259, 0) // IC1
MCFG_DEVICE_ADD("drivers2", HC259, 0) // IC2
MCFG_DEVICE_ADD("drivers3", HC259, 0) // IC3
MCFG_DEVICE_ADD("drivers4", HC259, 0) // IC4
MCFG_DEVICE_ADD("drivers5", HC259, 0) // IC5
MCFG_DEVICE_ADD("drivers6", HC259, 0) // IC6
HC259(config, "drivers1", 0); // IC1
HC259(config, "drivers2", 0); // IC2
HC259(config, "drivers3", 0); // IC3
HC259(config, "drivers4", 0); // IC4
HC259(config, "drivers5", 0); // IC5
HC259(config, "drivers6", 0); // IC6
/* sound hardware */
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.add_route(ALL_OUTPUTS, "mono", 0.40);
MCFG_DEVICE_ADD("r2r", DAC_8BIT_R2R, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
DAC_8BIT_R2R(config, "r2r", 0).add_route(ALL_OUTPUTS, "mono", 0.30);
LS157(config, m_adpcm_select, 0);
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
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) // frequency modifiable during operation
MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, joctronic_state, vck_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
MSM5205(config, m_oki, XTAL(12'000'000)/2/16); // 375 kHz
m_oki->vck_callback().set(FUNC(joctronic_state::vck_w));
m_oki->set_prescaler_selector(msm5205_device::S96_4B); // frequency modifiable during operation
m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
}
void joctronic_state::bldyrolr(machine_config & config)
{

View File

@ -332,11 +332,13 @@ void jp_state::machine_reset()
m_digits[99] = 0x3f;
}
MACHINE_CONFIG_START(jp_state::jp)
void jp_state::jp(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 8_MHz_XTAL / 2)
MCFG_DEVICE_PROGRAM_MAP(jp_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(jp_state, irq0_line_hold, 8_MHz_XTAL / 8192) // 4020 divider
Z80(config, m_maincpu, 8_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &jp_state::jp_map);
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);
@ -378,7 +380,7 @@ MACHINE_CONFIG_START(jp_state::jp)
ay.port_a_read_callback().set(FUNC(jp_state::porta_r));
ay.port_b_read_callback().set(FUNC(jp_state::portb_r));
ay.add_route(ALL_OUTPUTS, "ayvol", 0.9);
MACHINE_CONFIG_END
}
WRITE8_MEMBER(jp_state::sample_bank_w)
{
@ -407,23 +409,24 @@ IRQ_CALLBACK_MEMBER(jp_state::sound_int_cb)
return 0xff;
}
MACHINE_CONFIG_START(jp_state::jps)
void jp_state::jps(machine_config &config)
{
jp(config);
MCFG_DEVICE_ADD("soundcpu", Z80, 8_MHz_XTAL / 2)
MCFG_DEVICE_PROGRAM_MAP(jp_sound_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(jp_state, sound_int_cb)
Z80(config, m_soundcpu, 8_MHz_XTAL / 2);
m_soundcpu->set_addrmap(AS_PROGRAM, &jp_state::jp_sound_map);
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
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
SPEAKER(config, "msmvol").front_center();
MCFG_DEVICE_ADD("msm", MSM5205, 384'000) // not labeled in manual; clock unknown
MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, jp_state, vck_w))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // unknown
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmvol", 1.0)
MSM5205(config, m_msm, 384'000); // not labeled in manual; clock unknown
m_msm->vck_callback().set(FUNC(jp_state::vck_w));
m_msm->set_prescaler_selector(msm5205_device::S48_4B); // unknown
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
MACHINE_CONFIG_END
}
/*-------------------------------------------------------------------
/ America 1492 #1107

View File

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

View File

@ -194,67 +194,66 @@ GFXDECODE_END
*
*************************************/
MACHINE_CONFIG_START(klax_state::klax)
void klax_state::klax(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_DEVICE_PROGRAM_MAP(klax_map)
M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2);
m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax_map);
EEPROM_2816(config, "eeprom").lock_after_write(true);
WATCHDOG_TIMER(config, "watchdog");
/* 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);
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);
m_mob->set_gfxdecode(m_gfxdecode);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
/* note: these parameters are from published specs, not derived */
/* 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)
MCFG_SCREEN_UPDATE_DRIVER(klax_state, screen_update_klax)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, klax_state, video_int_write_line))
m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240);
m_screen->set_screen_update(FUNC(klax_state::screen_update_klax));
m_screen->set_palette("palette");
m_screen->screen_vblank().set(FUNC(klax_state::video_int_write_line));
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
OKIM6295(config, "oki", ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
}
void klax_state::bootleg_sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
}
MACHINE_CONFIG_START(klax_state::klax2bl)
void klax_state::klax2bl(machine_config &config)
{
klax(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(klax2bl_map)
m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax2bl_map);
MCFG_DEVICE_REMOVE("oki") // no 6295 here
config.device_remove("oki"); // no 6295 here
MCFG_DEVICE_ADD("audiocpu", Z80, 6000000) /* ? */
MCFG_DEVICE_PROGRAM_MAP(bootleg_sound_map)
z80_device &audiocpu(Z80(config, "audiocpu", 6000000)); /* ? */
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
// 2 x msm at least on bootleg set 2 (ic18 and ic19)
MCFG_DEVICE_ADD("msm", MSM5205, 375000) /* ? */
// MCFG_MSM5205_VCLK_CB(WRITELINE(*this, klax_state, m5205_int1)) /* interrupt function */
// MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
MSM5205(config, "msm", 375000); /* ? */
// msm.vck_legacy_callback().set(FUNC(klax_state::m5205_int1)); /* interrupt function */
// msm.set_prescaler_selector(msm5205_device::MSM5205_S96_4B); /* 4KHz 4-bit */
// msm.add_route(ALL_OUTPUTS, "mono", 0.25);
}
/*************************************
*

View File

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

View File

@ -840,17 +840,17 @@ void kurukuru_state::machine_reset()
* Machine Driver *
*************************************************/
MACHINE_CONFIG_START(kurukuru_state::kurukuru)
void kurukuru_state::kurukuru(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80, CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(kurukuru_map)
MCFG_DEVICE_IO_MAP(kurukuru_io)
Z80(config, m_maincpu, CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &kurukuru_state::kurukuru_map);
m_maincpu->set_addrmap(AS_IO, &kurukuru_state::kurukuru_io);
MCFG_DEVICE_ADD("audiocpu", Z80, CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(kurukuru_audio_map)
MCFG_DEVICE_IO_MAP(kurukuru_audio_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb)
Z80(config, m_audiocpu, CPU_CLOCK);
m_audiocpu->set_addrmap(AS_PROGRAM, &kurukuru_state::kurukuru_audio_map);
m_audiocpu->set_addrmap(AS_IO, &kurukuru_state::kurukuru_audio_io);
m_audiocpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb));
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);
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 */
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.add_route(ALL_OUTPUTS, "mono", 0.80);
MCFG_DEVICE_ADD("adpcm", MSM5205, M5205_CLOCK)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, kurukuru_state, kurukuru_msm5205_vck))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END
MSM5205(config, m_adpcm, M5205_CLOCK);
m_adpcm->vck_legacy_callback().set(FUNC(kurukuru_state::kurukuru_msm5205_vck));
m_adpcm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */
m_adpcm->add_route(ALL_OUTPUTS, "mono", 0.80);
}
MACHINE_CONFIG_START(kurukuru_state::ppj)
void kurukuru_state::ppj(machine_config &config)
{
kurukuru(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(ppj_map)
MCFG_DEVICE_IO_MAP(ppj_io)
m_maincpu->set_addrmap(AS_PROGRAM, &kurukuru_state::ppj_map);
m_maincpu->set_addrmap(AS_IO, &kurukuru_state::ppj_io);
MCFG_DEVICE_MODIFY("audiocpu")
MCFG_DEVICE_PROGRAM_MAP(ppj_audio_map)
MCFG_DEVICE_IO_MAP(ppj_audio_io)
MACHINE_CONFIG_END
m_audiocpu->set_addrmap(AS_PROGRAM, &kurukuru_state::ppj_audio_map);
m_audiocpu->set_addrmap(AS_IO, &kurukuru_state::ppj_audio_io);
}
/*************************************************

View File

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

View File

@ -931,33 +931,33 @@ void lwings_state::machine_reset()
m_adpcm = 0;
}
MACHINE_CONFIG_START(lwings_state::lwings)
void lwings_state::lwings(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(lwings_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, lwings_interrupt)
Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on PCB */
m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_map);
m_maincpu->set_vblank_int("screen", FUNC(lwings_state::lwings_interrupt));
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) /* verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(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??
Z80(config, m_soundcpu, XTAL(12'000'000)/4); /* verified on PCB */
m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_sound_map);
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");
/* video hardware */
MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
BUFFERED_SPRITERAM8(config, m_spriteram);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
MCFG_SCREEN_PALETTE(m_palette)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(32*8, 32*8);
screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */
@ -965,48 +965,45 @@ MACHINE_CONFIG_START(lwings_state::lwings)
GENERIC_LATCH_8(config, m_soundlatch);
MCFG_DEVICE_ADD("2203a", YM2203, XTAL(12'000'000)/8) /* verified on PCB */
MCFG_SOUND_ROUTE(0, "mono", 0.20)
MCFG_SOUND_ROUTE(1, "mono", 0.20)
MCFG_SOUND_ROUTE(2, "mono", 0.20)
MCFG_SOUND_ROUTE(3, "mono", 0.10)
ym2203_device &ym2203a(YM2203(config, "2203a", XTAL(12'000'000)/8)); /* verified on PCB */
ym2203a.add_route(0, "mono", 0.20);
ym2203a.add_route(1, "mono", 0.20);
ym2203a.add_route(2, "mono", 0.20);
ym2203a.add_route(3, "mono", 0.10);
MCFG_DEVICE_ADD("2203b", YM2203, XTAL(12'000'000)/8) /* verified on PCB */
MCFG_SOUND_ROUTE(0, "mono", 0.20)
MCFG_SOUND_ROUTE(1, "mono", 0.20)
MCFG_SOUND_ROUTE(2, "mono", 0.20)
MCFG_SOUND_ROUTE(3, "mono", 0.10)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(lwings_state::fball)
ym2203_device &ym2203b(YM2203(config, "2203b", XTAL(12'000'000)/8)); /* verified on PCB */
ym2203b.add_route(0, "mono", 0.20);
ym2203b.add_route(1, "mono", 0.20);
ym2203b.add_route(2, "mono", 0.20);
ym2203b.add_route(3, "mono", 0.10);
}
void lwings_state::fball(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2)
MCFG_DEVICE_PROGRAM_MAP(fball_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt)
Z80(config, m_maincpu, XTAL(12'000'000)/2);
m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_map);
m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt));
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) // ?
MCFG_DEVICE_PROGRAM_MAP(fball_sound_map)
// MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222)
Z80(config, m_soundcpu, XTAL(12'000'000)/4); // ?
m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_sound_map);
// m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222));
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
BUFFERED_SPRITERAM8(config, m_spriteram);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_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
MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
MCFG_SCREEN_PALETTE(m_palette)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(32*8, 32*8);
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
screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */
@ -1014,65 +1011,60 @@ MACHINE_CONFIG_START(lwings_state::fball)
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
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_DEVICE_ADDRESS_MAP(0, fball_oki_map)
okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
oki.add_route(ALL_OUTPUTS, "mono", 1.0);
oki.set_addrmap(0, &lwings_state::fball_oki_map);
}
MACHINE_CONFIG_END
MACHINE_CONFIG_START(lwings_state::trojan)
void lwings_state::trojan(machine_config &config)
{
lwings(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(trojan_map)
m_maincpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */
m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_map);
MCFG_DEVICE_MODIFY("soundcpu")
MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */
m_soundcpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */
MCFG_DEVICE_ADD("adpcm", Z80, XTAL(12'000'000)/4) /* verified on PCB */
MCFG_DEVICE_PROGRAM_MAP(trojan_adpcm_map)
MCFG_DEVICE_IO_MAP(trojan_adpcm_io_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 4000)
z80_device &adpcm(Z80(config, "adpcm", XTAL(12'000'000)/4)); /* verified on PCB */
adpcm.set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map);
adpcm.set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map);
adpcm.set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000));
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_trojan)
m_gfxdecode->set_info(gfx_trojan);
MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_trojan)
subdevice<screen_device>("screen")->set_screen_update(FUNC(lwings_state::screen_update_trojan));
/* sound hardware */
GENERIC_LATCH_8(config, "soundlatch2");
MCFG_DEVICE_ADD("5205", MSM5205, XTAL(384'000)) /* verified on PCB */
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* slave mode */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
MSM5205(config, m_msm, XTAL(384'000)); /* verified on PCB */
m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* slave mode */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
}
MACHINE_CONFIG_START(lwings_state::avengers)
void lwings_state::avengers(machine_config &config)
{
trojan(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(avengers_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt) // RST 38h triggered by software
m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::avengers_map);
m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software
MCFG_DEVICE_MODIFY("adpcm")
MCFG_DEVICE_IO_MAP(avengers_adpcm_io_map)
subdevice<cpu_device>("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map);
/* video hardware */
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);
/* video hardware */
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 */
MCFG_DEVICE_ADD("maincpu", Z80, 4000000) // ???
MCFG_DEVICE_PROGRAM_MAP(mermaid_map)
Z80(config, m_maincpu, 4000000); // ???
m_maincpu->set_addrmap(AS_PROGRAM, &mermaid_state::mermaid_map);
LS259(config, m_latch[0]);
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
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(mermaid_state, screen_update_mermaid)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mermaid_state, screen_vblank_mermaid))
MCFG_SCREEN_PALETTE(m_palette)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
m_screen->set_size(32*8, 32*8);
m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(mermaid_state::screen_update_mermaid));
m_screen->screen_vblank().set(FUNC(mermaid_state::screen_vblank_mermaid));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mermaid);
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();
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);
}
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mermaid_state::rougien)
void mermaid_state::rougien(machine_config &config)
{
mermaid(config);
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));
MCFG_DEVICE_ADD("adpcm", MSM5205, 384000)
MCFG_MSM5205_VCK_CALLBACK(WRITELINE(*this, mermaid_state, rougien_adpcm_int))
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MSM5205(config, m_adpcm, 384000);
m_adpcm->vck_callback().set(FUNC(mermaid_state::rougien_adpcm_int));
m_adpcm->set_prescaler_selector(msm5205_device::S96_4B);
m_adpcm->add_route(ALL_OUTPUTS, "mono", 1.00);
RIPPLE_COUNTER(config, m_adpcm_counter);
m_adpcm_counter->set_device_rom_tag("adpcm");
m_adpcm_counter->set_stages(12);
m_adpcm_counter->rom_out_cb().set(FUNC(mermaid_state::adpcm_data_w));
MACHINE_CONFIG_END
}
/* ROMs */

View File

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

View File

@ -299,11 +299,11 @@ void mjkjidai_state::machine_reset()
MACHINE_CONFIG_START(mjkjidai_state::mjkjidai)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,10000000/2) /* 5 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(mjkjidai_map)
MCFG_DEVICE_IO_MAP(mjkjidai_io_map)
Z80(config, m_maincpu, 10000000/2); /* 5 MHz ??? */
m_maincpu->set_addrmap(AS_PROGRAM, &mjkjidai_state::mjkjidai_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"));
ppi1.in_pa_callback().set_ioport("KEYBOARD");
@ -317,34 +317,29 @@ MACHINE_CONFIG_START(mjkjidai_state::mjkjidai)
ppi2.in_pc_callback().set_ioport("DSW2");
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(3*8, 61*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(mjkjidai_state, screen_update_mjkjidai)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mjkjidai_state, vblank_irq))
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(3*8, 61*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(mjkjidai_state::screen_update_mjkjidai));
screen.set_palette(m_palette);
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);
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("sn1", SN76489, 10000000/4)
MCFG_SOUND_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
SN76489(config, "sn1", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
SN76489(config, "sn2", 10000000/4).add_route(ALL_OUTPUTS, "mono", 0.50);
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;
}
MACHINE_CONFIG_START(ojankohs_state::ojankohs)
void ojankohs_state::ojankohs(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */
MCFG_DEVICE_PROGRAM_MAP(ojankohs_map)
MCFG_DEVICE_IO_MAP(ojankohs_io_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold)
Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankohs_map);
m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankohs_io_map);
m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_SCREEN_PALETTE(m_palette)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(512, 512);
m_screen->set_visarea(0, 288-1, 0, 224-1);
m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
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.add_route(ALL_OUTPUTS, "mono", 0.15);
MCFG_DEVICE_ADD("msm", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ojankohs_state::ojankoy)
MSM5205(config, m_msm, 384000);
m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
}
void ojankohs_state::ojankoy(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */
MCFG_DEVICE_PROGRAM_MAP(ojankoy_map)
MCFG_DEVICE_IO_MAP(ojankoy_io_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold)
Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map);
m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoy_io_map);
m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoy)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_SCREEN_PALETTE(m_palette)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(512, 512);
m_screen->set_visarea(0, 288-1, 0, 224-1);
m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
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.add_route(ALL_OUTPUTS, "mono", 0.15);
MCFG_DEVICE_ADD("msm", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ojankohs_state::ccasino)
MSM5205(config, m_msm, 384000);
m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
}
void ojankohs_state::ccasino(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */
MCFG_DEVICE_PROGRAM_MAP(ojankoy_map)
MCFG_DEVICE_IO_MAP(ccasino_io_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold)
Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */
m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map);
m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ccasino_io_map);
m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_SCREEN_PALETTE(m_palette)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(512, 512);
m_screen->set_visarea(0, 288-1, 0, 224-1);
m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs);
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.add_route(ALL_OUTPUTS, "mono", 0.15);
MCFG_DEVICE_ADD("msm", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ojankohs_state::ojankoc)
MSM5205(config, m_msm, 384000);
m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
}
void ojankohs_state::ojankoc(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,8000000/2) /* 4.00 MHz */
MCFG_DEVICE_PROGRAM_MAP(ojankoc_map)
MCFG_DEVICE_IO_MAP(ojankoc_io_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", ojankohs_state, irq0_line_hold)
Z80(config, m_maincpu, 8000000/2); /* 4.00 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoc_map);
m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoc_io_map);
m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold));
MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoc)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 248-1)
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankoc)
MCFG_SCREEN_PALETTE(m_palette)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(32*8, 32*8);
m_screen->set_visarea(0, 256-1, 8, 248-1);
m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankoc));
m_screen->set_palette(m_palette);
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.add_route(ALL_OUTPUTS, "mono", 0.15);
MCFG_DEVICE_ADD("msm", MSM5205, 8000000/22)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
MSM5205(config, m_msm, 8000000/22);
m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
}
ROM_START( ojankohs )

View File

@ -933,35 +933,35 @@ TIMER_DEVICE_CALLBACK_MEMBER(opwolf_state::cchip_irq_clear_cb)
// MACHINE DEFINTIONS
//**************************************************************************
MACHINE_CONFIG_START(opwolf_state::opwolf)
void opwolf_state::opwolf(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz */
MCFG_DEVICE_PROGRAM_MAP(opwolf_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, interrupt)
M68000(config, m_maincpu, CPU_CLOCK); /* 8 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_map);
m_maincpu->set_vblank_int("screen", FUNC(opwolf_state::interrupt));
MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK ) /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(opwolf_sound_z80_map)
Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4 MHz */
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 */
m_cchip->in_pb_callback().set_ioport("IN0");
m_cchip->in_pc_callback().set_ioport("IN1");
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)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf));
screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_opwolf);
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(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm0", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MSM5205(config, m_msm[0], 384000);
m_msm[0]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<0>));
m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm1", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<1>))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MSM5205(config, m_msm[1], 384000);
m_msm[1]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<1>));
m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu);
ciu.set_slave_tag(m_audiocpu);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(opwolf_state::opwolfp)
void opwolf_state::opwolfp(machine_config &config)
{
opwolf(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") /* 8 MHz */
MCFG_DEVICE_PROGRAM_MAP(opwolfp_map)
m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolfp_map);
MCFG_DEVICE_REMOVE("cchip")
MCFG_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 */
config.device_remove("cchip");
config.device_remove("cchip_irq_clear");
}
void opwolf_state::opwolfb(machine_config &config) /* OSC clocks unknown for the bootleg, but changed to match original sets */
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(opwolfb_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, irq5_line_hold)
M68000(config, m_maincpu, CPU_CLOCK); /* 8 MHz ??? */
m_maincpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolfb_map);
m_maincpu->set_vblank_int("screen", FUNC(opwolf_state::irq5_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK ) /* 4 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(opwolf_sound_z80_map)
Z80(config, m_audiocpu, SOUND_CPU_CLOCK); /* 4 MHz ??? */
m_audiocpu->set_addrmap(AS_PROGRAM, &opwolf_state::opwolf_sound_z80_map);
MCFG_DEVICE_ADD("sub", Z80, SOUND_CPU_CLOCK ) /* 4 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(opwolfb_sub_z80_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", opwolf_state, irq0_line_hold)
z80_device &sub(Z80(config, "sub", SOUND_CPU_CLOCK)); /* 4 MHz ??? */
sub.set_addrmap(AS_PROGRAM, &opwolf_state::opwolfb_sub_z80_map);
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 */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf));
screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_opwolfb);
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(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm0", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<0>))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MSM5205(config, m_msm[0], 384000);
m_msm[0]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<0>));
m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
m_msm[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_msm[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("msm1", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, opwolf_state, msm5205_vck_w<1>))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MSM5205(config, m_msm[1], 384000);
m_msm[1]->vck_legacy_callback().set(FUNC(opwolf_state::msm5205_vck_w<1>));
m_msm[1]->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
m_msm[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_msm[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag(m_maincpu);
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));
}
MACHINE_CONFIG_START(pachifev_state::pachifev)
void pachifev_state::pachifev(machine_config &config)
{
// CPU TMS9995, standard variant; no line connections
TMS9995(config, m_maincpu, XTAL(12'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &pachifev_state::pachifev_map);
@ -368,16 +368,14 @@ MACHINE_CONFIG_START(pachifev_state::pachifev)
/* sound hardware */
SPEAKER(config, "mono").front_center();
#if USE_MSM
MCFG_DEVICE_ADD("adpcm", MSM5205, XTAL(384'000)) /* guess */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pachifev_state,pf_adpcm_int)) /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
msm5205_device &adpcm(MSM5205(config, "adpcm", XTAL(384'000))); /* guess */
adpcm.vck_legacy_callback().set(FUNC(pachifev_state::pf_adpcm_int)); /* interrupt function */
adpcm.set_prescaler_selector(msm5205_device::S48_4B); /* 8kHz */
adpcm.add_route(ALL_OUTPUTS, "mono", 1.00);
#endif
MCFG_DEVICE_ADD("y2404_1", Y2404, XTAL(10'738'635)/3) /* guess */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MCFG_DEVICE_ADD("y2404_2", Y2404, XTAL(10'738'635)/3) /* guess */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
Y2404(config, "y2404_1", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 0.30); /* guess */
Y2404(config, "y2404_2", XTAL(10'738'635)/3).add_route(ALL_OUTPUTS, "mono", 0.30); /* guess */
}
ROM_START( pachifev )
ROM_REGION( 0x10000, "maincpu", 0 )

View File

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

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 */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)/2) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(rastan_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rastan_state, irq5_line_hold)
M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_map);
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 */
MCFG_DEVICE_PROGRAM_MAP(rastan_s_map)
Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */
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");
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(rastan_state, screen_update_rastan)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
screen.set_screen_update(FUNC(rastan_state::screen_update_rastan));
screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_rastan);
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(1, "mono", 0.50);
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* verified on pcb */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, rastan_state, rastan_msm5205_vck)) /* VCK function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
MSM5205(config, m_msm, XTAL(384'000)); /* verified on pcb */
m_msm->vck_legacy_callback().set(FUNC(rastan_state::rastan_msm5205_vck)); /* VCK function */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.60);
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));
ciu.set_master_tag(m_maincpu);
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_map(address_map &map);
private:
required_device<cpu_device> m_maincpu;
required_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode;
@ -504,27 +503,26 @@ static GFXDECODE_START( gfx_themj )
GFXDECODE_END
MACHINE_CONFIG_START(rmhaihai_state::rmhaihai)
void rmhaihai_state::rmhaihai(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80,20000000/4) /* 5 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(rmhaihai_map)
MCFG_DEVICE_IO_MAP(rmhaihai_io_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", rmhaihai_state, irq0_line_hold)
Z80(config, m_maincpu, 20000000/4); /* 5 MHz ??? */
m_maincpu->set_addrmap(AS_PROGRAM, &rmhaihai_state::rmhaihai_map);
m_maincpu->set_addrmap(AS_IO, &rmhaihai_state::rmhaihai_io_map);
m_maincpu->set_vblank_int("screen", FUNC(rmhaihai_state::irq0_line_hold));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(rmhaihai_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rmhaihai)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(4*8, 60*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(rmhaihai_state::screen_update));
screen.set_palette("palette");
GFXDECODE(config, m_gfxdecode, "palette", gfx_rmhaihai);
PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 0x100);
/* sound hardware */
@ -535,38 +533,34 @@ MACHINE_CONFIG_START(rmhaihai_state::rmhaihai)
aysnd.port_b_read_callback().set_ioport("DSW1");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.30);
MCFG_DEVICE_ADD("msm", MSM5205, 500000)
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
MSM5205(config, m_msm, 500000);
m_msm->set_prescaler_selector(msm5205_device::SEX_4B);
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
}
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);
/* 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 */
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_themj)
MCFG_DEVICE_MODIFY("palette")
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
m_gfxdecode->set_info(gfx_themj);
subdevice<palette_device>("palette")->set_entries(0x200);
}

View File

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

View File

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

View File

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

View File

@ -496,13 +496,13 @@ void suprgolf_state::machine_reset()
#define MASTER_CLOCK XTAL(12'000'000)
MACHINE_CONFIG_START(suprgolf_state::suprgolf)
void suprgolf_state::suprgolf(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80,MASTER_CLOCK/2) /* guess */
MCFG_DEVICE_PROGRAM_MAP(suprgolf_map)
MCFG_DEVICE_IO_MAP(io_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", suprgolf_state, irq0_line_hold)
Z80(config, m_maincpu, MASTER_CLOCK/2); /* guess */
m_maincpu->set_addrmap(AS_PROGRAM, &suprgolf_state::suprgolf_map);
m_maincpu->set_addrmap(AS_IO, &suprgolf_state::io_map);
m_maincpu->set_vblank_int("screen", FUNC(suprgolf_state::irq0_line_hold));
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
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));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(256, 256);
screen.set_visarea(0, 255, 0, 191);
screen.set_screen_update(FUNC(suprgolf_state::screen_update));
screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_suprgolf)
MCFG_PALETTE_ADD("palette", 0x800)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_suprgolf);
PALETTE(config, m_palette).set_entries(0x800);
/* sound hardware */
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.add_route(ALL_OUTPUTS, "mono", 0.5);
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) /* guess */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, suprgolf_state, adpcm_int)) /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
MSM5205(config, m_msm, XTAL(384'000)); /* guess */
m_msm->vck_legacy_callback().set(FUNC(suprgolf_state::adpcm_int)); /* interrupt function */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 4KHz 4-bit */
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
}
ROM_START( suprgolf )
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)
MCFG_DEVICE_ADD("soundcpu", Z80, 4000000)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_DEVICE_IO_MAP(sound_io_map)
void segas1x_bootleg_state::z80_ym2151(machine_config &config)
{
Z80(config, m_soundcpu, 4000000);
m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sound_map);
m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::sound_io_map);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
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)
{
@ -2098,56 +2098,58 @@ void segas1x_bootleg_state::z80_ym2151_upd7759(machine_config &config)
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:
- other games might use this sound configuration
- speaker is likely to be mono for the bootlegs, not stereo.
- check msm5205 frequency.
*/
MCFG_DEVICE_ADD("soundcpu",Z80, 4000000)
MCFG_DEVICE_PROGRAM_MAP(tturfbl_sound_map)
MCFG_DEVICE_IO_MAP(tturfbl_sound_io_map)
Z80(config, m_soundcpu, 4000000);
m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tturfbl_sound_map);
m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::tturfbl_sound_io_map);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
YM2151(config, "ymsnd", 4000000).add_route(0, "lspeaker", 0.32).add_route(1, "rspeaker", 0.32);
MCFG_DEVICE_ADD("5205", MSM5205, 220000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, tturfbl_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
MSM5205(config, m_msm, 220000);
m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::tturfbl_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);
}
MACHINE_CONFIG_START(segas1x_bootleg_state::datsu_2x_ym2203_msm5205)
MCFG_DEVICE_ADD("soundcpu", Z80, 4000000)
MCFG_DEVICE_PROGRAM_MAP(shinobi_datsu_sound_map)
void segas1x_bootleg_state::datsu_2x_ym2203_msm5205(machine_config &config)
{
Z80(config, m_soundcpu, 4000000);
m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shinobi_datsu_sound_map);
/* sound hardware */
SPEAKER(config, "mono").front_center();
// 2x YM2203C, one at U57, one at U56
MCFG_DEVICE_ADD("ym1", YM2203, 4000000)
MCFG_SOUND_ROUTE(0, "mono", 0.50)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
MCFG_SOUND_ROUTE(2, "mono", 0.50)
MCFG_SOUND_ROUTE(3, "mono", 0.80)
ym2203_device &ym1(YM2203(config, "ym1", 4000000));
ym1.add_route(0, "mono", 0.50);
ym1.add_route(1, "mono", 0.50);
ym1.add_route(2, "mono", 0.50);
ym1.add_route(3, "mono", 0.80);
MCFG_DEVICE_ADD("ym2", YM2203, 4000000)
MCFG_SOUND_ROUTE(0, "mono", 0.50)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
MCFG_SOUND_ROUTE(2, "mono", 0.50)
MCFG_SOUND_ROUTE(3, "mono", 0.80)
ym2203_device &ym2(YM2203(config, "ym2", 4000000));
ym2.add_route(0, "mono", 0.50);
ym2.add_route(1, "mono", 0.50);
ym2.add_route(2, "mono", 0.50);
ym2.add_route(3, "mono", 0.80);
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("5205", FUNC(msm5205_device::data_w));
MCFG_DEVICE_ADD("5205", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, segas1x_bootleg_state, datsu_msm5205_callback))
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END
MSM5205(config, m_msm, 384000);
m_msm->vck_legacy_callback().set(FUNC(segas1x_bootleg_state::datsu_msm5205_callback));
m_msm->set_prescaler_selector(msm5205_device::S48_4B);
m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
}
/*************************************
@ -2157,120 +2159,111 @@ MACHINE_CONFIG_END
*************************************/
/* System 16A/B Bootlegs */
MACHINE_CONFIG_START(segas1x_bootleg_state::system16_base)
void segas1x_bootleg_state::system16_base(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
M68000(config, m_maincpu, 10000000);
m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(40*8, 36*8);
m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system16));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16);
PALETTE(config, "palette").set_entries(2048*SHADOW_COLORS_MULTIPLIER);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
PALETTE(config, m_palette).set_entries(2048*SHADOW_COLORS_MULTIPLIER);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
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);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(shinobib_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shinobib_map);
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_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
datsu_2x_ym2203_msm5205(config);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(segas1x_bootleg_state::passshtb)
void segas1x_bootleg_state::passshtb(machine_config &config)
{
system16_base(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(passshtb_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::passshtb_map);
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_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
z80_ym2151_upd7759(config);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(segas1x_bootleg_state::passsht4b)
void segas1x_bootleg_state::passsht4b(machine_config &config)
{
system16_base(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(passht4b_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::passht4b_map);
// wrong
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_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg_passht4b)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht)
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg_passht4b));
datsu_2x_ym2203_msm5205(config);
MCFG_DEVICE_MODIFY("5205")
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
MACHINE_CONFIG_END
m_msm->set_prescaler_selector(msm5205_device::S96_4B);
}
MACHINE_CONFIG_START(segas1x_bootleg_state::wb3bb)
void segas1x_bootleg_state::wb3bb(machine_config &config)
{
system16_base(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(wb3bbl_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::wb3bbl_map);
BOOTLEG_SYS16A_SPRITES(config, m_sprites, 0, 189-117, 4, 0, 5, 1, 6, 2, 7, 3);
m_sprites->set_local_originy(0);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl)
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_s16a_bootleg));
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 */
MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
MCFG_DEVICE_PROGRAM_MAP(goldnaxeb1_map)
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
M68000(config, m_maincpu, 10000000);
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::goldnaxeb1_map);
m_maincpu->set_addrmap(AS_OPCODES, &segas1x_bootleg_state::decrypted_opcodes_map);
m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(40*8, 28*8);
m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system16));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16);
PALETTE(config, "palette", palette_device::BLACK, 2048*SHADOW_COLORS_MULTIPLIER);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
PALETTE(config, m_palette, palette_device::BLACK, 2048*SHADOW_COLORS_MULTIPLIER);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
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)
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);
subdevice<palette_device>("palette")->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
m_palette->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
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);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(goldnaxeb2_map)
MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::goldnaxeb2_map);
m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor());
subdevice<palette_device>("palette")->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
m_palette->set_entries(0x2000*SHADOW_COLORS_MULTIPLIER);
datsu_2x_ym2203_msm5205(config);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(segas1x_bootleg_state::bayrouteb1)
void segas1x_bootleg_state::bayrouteb1(machine_config &config)
{
goldnaxeb_base(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(bayrouteb1_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::bayrouteb1_map);
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);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(bayrouteb2_map)
MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::bayrouteb2_map);
m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor());
datsu_ym2151_msm5205(config);
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);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(tturfbl_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tturfbl_map);
datsu_ym2151_msm5205(config);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
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);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(dduxbl_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::dduxbl_map);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112);
z80_ym2151(config);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(segas1x_bootleg_state::eswatbl)
void segas1x_bootleg_state::eswatbl(machine_config &config)
{
system16_base(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(eswatbl_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::eswatbl_map);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-124);
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);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(eswatbl2_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::eswatbl2_map);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-121);
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);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(tetrisbl_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tetrisbl_map);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112);
z80_ym2151(config);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(segas1x_bootleg_state::altbeastbl)
void segas1x_bootleg_state::altbeastbl(machine_config &config)
{
system16_base(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(tetrisbl_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::tetrisbl_map);
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
m_sprites->set_local_originx(189-112);
datsu_2x_ym2203_msm5205(config);
MCFG_DEVICE_MODIFY("5205")
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
MACHINE_CONFIG_END
m_msm->set_prescaler_selector(msm5205_device::S96_4B);
}
MACHINE_CONFIG_START(segas1x_bootleg_state::beautyb)
void segas1x_bootleg_state::beautyb(machine_config &config)
{
system16_base(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(beautyb_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::beautyb_map);
// no sprites
z80_ym2151(config);
MACHINE_CONFIG_END
}
/* System 18 Bootlegs */
MACHINE_CONFIG_START(segas1x_bootleg_state::system18)
void segas1x_bootleg_state::system18(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
M68000(config, m_maincpu, 10000000);
m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
MCFG_DEVICE_ADD("soundcpu", Z80, 8000000)
MCFG_DEVICE_PROGRAM_MAP(sound_18_map)
MCFG_DEVICE_IO_MAP(sound_18_io_map)
Z80(config, m_soundcpu, 8000000);
m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sound_18_map);
m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::sound_18_io_map);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(40*8, 28*8);
m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "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)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
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)
@ -2450,50 +2442,49 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::system18)
GENERIC_LATCH_8(config, m_soundlatch);
MCFG_DEVICE_ADD("3438.0", YM3438, 8000000)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
ym3438_device &ym3438_0(YM3438(config, "3438.0", 8000000));
ym3438_0.add_route(0, "lspeaker", 0.40);
ym3438_0.add_route(1, "rspeaker", 0.40);
MCFG_DEVICE_ADD("3438.1", YM3438, 8000000)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
ym3438_device &ym3438_1(YM3438(config, "3438.1", 8000000));
ym3438_1.add_route(0, "lspeaker", 0.40);
ym3438_1.add_route(1, "rspeaker", 0.40);
MCFG_DEVICE_ADD("5c68", RF5C68, 8000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MCFG_DEVICE_ADDRESS_MAP(0, pcm_map)
MACHINE_CONFIG_END
rf5c68_device &rf5c68(RF5C68(config, "5c68", 8000000));
rf5c68.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
rf5c68.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
rf5c68.set_addrmap(0, &segas1x_bootleg_state::pcm_map);
}
MACHINE_CONFIG_START(segas1x_bootleg_state::astormbl)
void segas1x_bootleg_state::astormbl(machine_config &config)
{
system18(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(astormbl_map)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(segas1x_bootleg_state::astormb2)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::astormbl_map);
}
void segas1x_bootleg_state::astormb2(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12MHz */
MCFG_DEVICE_PROGRAM_MAP(astormbl_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::astormbl_map);
m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(8'000'000)/2) /* 4MHz */
MCFG_DEVICE_PROGRAM_MAP(sys18bl_sound_map)
Z80(config, m_soundcpu, XTAL(8'000'000)/2); /* 4MHz */
m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::sys18bl_sound_map);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58.271) /* V-Sync is 58.271Hz & H-Sync is ~ 14.48KHz measured */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(58.271); /* V-Sync is 58.271Hz & H-Sync is ~ 14.48KHz measured */
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(40*8, 28*8);
m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "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)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
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)
@ -2506,57 +2497,56 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::astormb2)
// 1 OKI M6295 instead of original sound hardware
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH) // 1MHz clock and pin verified
MCFG_DEVICE_ADDRESS_MAP(0, sys18bl_oki_map)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
okim6295_device &oki(OKIM6295(config, "oki", XTAL(8'000'000)/8, okim6295_device::PIN7_HIGH)); // 1MHz clock and pin verified
oki.set_addrmap(0, &segas1x_bootleg_state::sys18bl_oki_map);
oki.add_route(ALL_OUTPUTS, "mono", 1.0);
}
MACHINE_CONFIG_START(segas1x_bootleg_state::mwalkbl)
void segas1x_bootleg_state::mwalkbl(machine_config &config)
{
astormb2(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(mwalkbl_map)
MACHINE_CONFIG_END
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::mwalkbl_map);
}
MACHINE_CONFIG_START(segas1x_bootleg_state::shdancbl)
void segas1x_bootleg_state::shdancbl(machine_config &config)
{
system18(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(shdancbl_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbl_map);
MCFG_DEVICE_MODIFY("soundcpu")
MCFG_DEVICE_PROGRAM_MAP(shdancbl_sound_map)
MCFG_DEVICE_IO_MAP(shdancbl_sound_io_map)
MCFG_DEVICE_REMOVE("5c68")
m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbl_sound_map);
m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::shdancbl_sound_io_map);
MCFG_DEVICE_ADD("5205", MSM5205, 200000)
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
config.device_remove("5c68");
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);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(shdancbla_map)
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbla_map);
MCFG_DEVICE_MODIFY("soundcpu")
MCFG_DEVICE_PROGRAM_MAP(shdancbla_sound_map)
MCFG_DEVICE_IO_MAP(shdancbl_sound_io_map)
MCFG_DEVICE_REMOVE("5c68")
m_soundcpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::shdancbla_sound_map);
m_soundcpu->set_addrmap(AS_IO, &segas1x_bootleg_state::shdancbl_sound_io_map);
MCFG_DEVICE_ADD("5205", MSM5205, 200000)
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
config.device_remove("5c68");
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);
}
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 */
MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold)
MCFG_DEVICE_PROGRAM_MAP(ddcrewbl_map)
M68000(config, m_maincpu, 10000000);
m_maincpu->set_addrmap(AS_PROGRAM, &segas1x_bootleg_state::ddcrewbl_map);
m_maincpu->set_vblank_int("screen", FUNC(segas1x_bootleg_state::irq4_line_hold));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(40*8, 28*8);
m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
m_screen->set_screen_update(FUNC(segas1x_bootleg_state::screen_update_system18old));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, "palette", gfx_sys16);
PALETTE(config, "palette").set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sys16);
PALETTE(config, m_palette).set_entries((2048+2048)*SHADOW_COLORS_MULTIPLIER);
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
@ -2599,9 +2589,9 @@ MACHINE_CONFIG_START(segas1x_bootleg_state::ddcrewbl)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, 10000000/10, okim6295_device::PIN7_HIGH) // clock and pin not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
okim6295_device &oki(OKIM6295(config, "oki", 10000000/10, okim6295_device::PIN7_HIGH)); // clock and pin not verified
oki.add_route(ALL_OUTPUTS, "mono", 1.0);
}
/*************************************

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() );
}
MACHINE_CONFIG_START(taitol_state::l_system_video)
void taitol_state::l_system_video(machine_config &config)
{
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);
}
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, taitol_state, screen_vblank_taitol))
MCFG_SCREEN_PALETTE(m_palette)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(taitol_state::screen_update_taitol));
screen.screen_vblank().set(FUNC(taitol_state::screen_vblank_taitol));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, taito_l);
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)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fhawk_state::fhawk)
TIMER(config, "scantimer").configure_scanline(FUNC(taitol_state::vbl_interrupt), "screen", 0, 1);
}
void fhawk_state::fhawk(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'330'560)/2) /* verified freq on pin122 of TC0090LVC cpu */
MCFG_DEVICE_PROGRAM_MAP(fhawk_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
Z80(config, m_main_cpu, XTAL(13'330'560)/2); /* verified freq on pin122 of TC0090LVC cpu */
m_main_cpu->set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_map);
m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback));
MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL/3) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(fhawk_3_map)
Z80(config, m_audio_cpu, 12_MHz_XTAL/3); /* verified on pcb */
m_audio_cpu->set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_3_map);
MCFG_DEVICE_ADD("slave", Z80, 12_MHz_XTAL/3) /* verified on pcb */
MCFG_DEVICE_PROGRAM_MAP(fhawk_2_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold)
z80_device &slave(Z80(config, "slave", 12_MHz_XTAL/3)); /* verified on pcb */
slave.set_addrmap(AS_PROGRAM, &fhawk_state::fhawk_2_map);
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.read_0_callback().set_ioport("DSWA");
@ -1518,47 +1518,42 @@ MACHINE_CONFIG_START(fhawk_state::fhawk)
pc060ha_device &ciu(PC060HA(config, "ciu", 0));
ciu.set_master_tag("slave");
ciu.set_slave_tag(m_audio_cpu);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(champwr_state::champwr)
void champwr_state::champwr(machine_config &config)
{
fhawk(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(champwr_map)
m_main_cpu->set_addrmap(AS_PROGRAM, &champwr_state::champwr_map);
MCFG_DEVICE_MODIFY("audiocpu")
MCFG_DEVICE_PROGRAM_MAP(champwr_3_map)
m_audio_cpu->set_addrmap(AS_PROGRAM, &champwr_state::champwr_3_map);
MCFG_DEVICE_MODIFY("slave")
MCFG_DEVICE_PROGRAM_MAP(champwr_2_map)
subdevice<cpu_device>("slave")->set_addrmap(AS_PROGRAM, &champwr_state::champwr_2_map);
/* sound hardware */
subdevice<ym2203_device>("ymsnd")->port_b_write_callback().set(FUNC(champwr_state::msm5205_volume_w));
MCFG_DEVICE_ADD("msm", MSM5205, 384_kHz_XTAL)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, champwr_state, msm5205_vck)) /* VCK function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END
MSM5205(config, m_msm, 384_kHz_XTAL);
m_msm->vck_legacy_callback().set(FUNC(champwr_state::msm5205_vck)); /* VCK function */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
}
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
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")
config.m_perfect_cpu_quantum = subtag("maincpu");
tc0040ioc_device &tc0040ioc(TC0040IOC(config, "tc0040ioc", 0));
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.set_master_tag("slave");
tc0140syt.set_slave_tag(m_audio_cpu);
MACHINE_CONFIG_END
}
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");
}
MACHINE_CONFIG_START(taitol_2cpu_state::evilston)
void taitol_2cpu_state::evilston(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'330'560)/2) /* not verified */
MCFG_DEVICE_PROGRAM_MAP(evilston_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
Z80(config, m_main_cpu, XTAL(13'330'560)/2); /* not verified */
m_main_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::evilston_map);
m_main_cpu->set_irq_acknowledge_callback(FUNC(taitol_state::irq_callback));
MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL/3) /* not verified */
MCFG_DEVICE_PROGRAM_MAP(evilston_2_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitol_state, irq0_line_hold)
Z80(config, m_audio_cpu, 12_MHz_XTAL/3); /* not verified */
m_audio_cpu->set_addrmap(AS_PROGRAM, &taitol_2cpu_state::evilston_2_map);
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.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(2, "mono", 0.25);
ymsnd.add_route(3, "mono", 0.80);
MACHINE_CONFIG_END
}
ROM_START( raimais )

View File

@ -665,34 +665,34 @@ static GFXDECODE_START( gfx_tehkanwc )
GFXDECODE_END
MACHINE_CONFIG_START(tehkanwc_state::tehkanwc)
void tehkanwc_state::tehkanwc(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 18432000/4) /* 18.432000 / 4 */
MCFG_DEVICE_PROGRAM_MAP(main_mem)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold)
Z80(config, m_maincpu, 18432000/4); /* 18.432000 / 4 */
m_maincpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::main_mem);
m_maincpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold));
MCFG_DEVICE_ADD("sub", Z80, 18432000/4)
MCFG_DEVICE_PROGRAM_MAP(sub_mem)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold)
Z80(config, m_subcpu, 18432000/4);
m_subcpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::sub_mem);
m_subcpu->set_vblank_int("screen", FUNC(tehkanwc_state::irq0_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, 18432000/4)
MCFG_DEVICE_PROGRAM_MAP(sound_mem)
MCFG_DEVICE_IO_MAP(sound_port)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tehkanwc_state, irq0_line_hold)
Z80(config, m_audiocpu, 18432000/4);
m_audiocpu->set_addrmap(AS_PROGRAM, &tehkanwc_state::sound_mem);
m_audiocpu->set_addrmap(AS_IO, &tehkanwc_state::sound_port);
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");
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(tehkanwc_state, screen_update)
MCFG_SCREEN_PALETTE(m_palette)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(32*8, 32*8);
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(tehkanwc_state::screen_update));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tehkanwc);
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.add_route(ALL_OUTPUTS, "mono", 0.25);
MCFG_DEVICE_ADD("msm", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, tehkanwc_state, adpcm_int)) /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
MACHINE_CONFIG_END
MSM5205(config, m_msm, 384000);
m_msm->vck_legacy_callback().set(FUNC(tehkanwc_state::adpcm_int)); /* interrupt function */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.45);
}
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);
}
void tehkanwc_state::init_teedoff()
{
/* 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
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(cpua_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", topspeed_state, irq6_line_hold)
M68000(config, m_maincpu, XTAL(16'000'000) / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &topspeed_state::cpua_map);
m_maincpu->set_vblank_int("screen", FUNC(topspeed_state::irq6_line_hold));
MCFG_DEVICE_ADD("subcpu", M68000, XTAL(16'000'000) / 2)
MCFG_DEVICE_PROGRAM_MAP(cpub_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", topspeed_state, irq5_line_hold)
M68000(config, m_subcpu, XTAL(16'000'000) / 2);
m_subcpu->set_addrmap(AS_PROGRAM, &topspeed_state::cpub_map);
m_subcpu->set_vblank_int("screen", FUNC(topspeed_state::irq5_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000) / 4)
MCFG_DEVICE_PROGRAM_MAP(z80_prg)
MCFG_DEVICE_IO_MAP(z80_io)
Z80(config, m_audiocpu, XTAL(16'000'000) / 4);
m_audiocpu->set_addrmap(AS_PROGRAM, &topspeed_state::z80_prg);
m_audiocpu->set_addrmap(AS_IO, &topspeed_state::z80_io);
z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(16'000'000) / 4));
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");
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.0532) // Measured on real hardware
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(topspeed_state, screen_update_topspeed)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60.0532); // Measured on real hardware
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(topspeed_state::screen_update_topspeed));
screen.set_palette("palette");
GFXDECODE(config, m_gfxdecode, "palette", gfx_topspeed);
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(1, "filter1r", 1.0);
MCFG_DEVICE_ADD("msm1", MSM5205, XTAL(384'000))
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, topspeed_state, msm5205_1_vck)) // VCK function
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8 kHz, 4-bit
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2", 1.0)
MSM5205(config, m_msm[0], XTAL(384'000));
m_msm[0]->vck_legacy_callback().set(FUNC(topspeed_state::msm5205_1_vck));
m_msm[0]->set_prescaler_selector(msm5205_device::S48_4B); // 8 kHz, 4-bit
m_msm[0]->add_route(ALL_OUTPUTS, "filter2", 1.0);
MCFG_DEVICE_ADD("msm2", MSM5205, XTAL(384'000))
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) // Slave mode, 4-bit
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter3", 1.0)
MSM5205(config, m_msm[1], XTAL(384'000));
m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B); // Slave mode, 4-bit
m_msm[1]->add_route(ALL_OUTPUTS, "filter3", 1.0);
FILTER_VOLUME(config, "filter1l").add_route(ALL_OUTPUTS, "lspeaker", 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, "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);
}
MACHINE_CONFIG_START(trackfld_state::trackfld)
void trackfld_state::trackfld(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, KONAMI1, MASTER_CLOCK/6/2) /* a guess for now */
MCFG_DEVICE_PROGRAM_MAP(main_map)
KONAMI1(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map);
MCFG_DEVICE_ADD(m_audiocpu, Z80, SOUND_CLOCK/4)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
Z80(config, m_audiocpu, SOUND_CLOCK/4);
m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map);
MCFG_MACHINE_START_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");
/* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld)
MCFG_SCREEN_PALETTE(m_palette)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq))
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(32*8, 32*8);
m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld);
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");
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
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
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
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
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)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
SN76496(config, m_sn, SOUND_CLOCK/8);
m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0);
MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK)
MCFG_DEVICE_ADDRESS_MAP(0, vlm_map)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MACHINE_CONFIG_END
VLM5030(config, m_vlm, VLM_CLOCK);
m_vlm->set_addrmap(0, &trackfld_state::vlm_map);
m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
MACHINE_CONFIG_START(trackfld_state::trackfldu)
void trackfld_state::trackfldu(machine_config &config)
{
trackfld(config);
MCFG_DEVICE_REPLACE("maincpu", MC6809E, MASTER_CLOCK/6/2) /* exact M6809 model unknown */
MCFG_DEVICE_PROGRAM_MAP(main_map)
MACHINE_CONFIG_END
MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* exact M6809 model unknown */
m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map);
}
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);
}
MACHINE_CONFIG_START(trackfld_state::yieartf)
void trackfld_state::yieartf(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */
MCFG_DEVICE_PROGRAM_MAP(yieartf_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(trackfld_state, yieartf_timer_irq, 480)
MC6809E(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::yieartf_map);
m_maincpu->set_periodic_int(FUNC(trackfld_state::yieartf_timer_irq), attotime::from_hz(480));
// z80 isn't used
// MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/4)
// MCFG_DEVICE_PROGRAM_MAP(sound_map)
// Z80(config, m_audiocpu, SOUND_CLOCK/4);
// m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map);
MCFG_MACHINE_START_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");
/* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld)
MCFG_SCREEN_PALETTE(m_palette)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq))
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(32*8, 32*8);
m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld);
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");
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
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
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
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
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)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
SN76496(config, m_sn, MASTER_CLOCK/6/2);
m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0);
MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK)
MCFG_DEVICE_ADDRESS_MAP(0, vlm_map)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MACHINE_CONFIG_END
VLM5030(config, m_vlm, VLM_CLOCK);
m_vlm->set_addrmap(0, &trackfld_state::vlm_map);
m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
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 */
/* also different memory handlers do handle that */
MACHINE_CONFIG_START(trackfld_state::hyprolyb)
void trackfld_state::hyprolyb(machine_config &config)
{
trackfld(config);
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)
/* sound hardware */
MCFG_DEVICE_REMOVE("vlm")
MCFG_DEVICE_ADD("adpcm", M6802, XTAL(14'318'181)/8) /* unknown clock */
MCFG_DEVICE_PROGRAM_MAP(hyprolyb_adpcm_map)
config.device_remove("vlm");
M6802(config, "adpcm", XTAL(14'318'181)/8).set_addrmap(AS_PROGRAM, &trackfld_state::hyprolyb_adpcm_map); /* unknown clock */
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)
MCFG_MSM5205_VCLK_CB(WRITELINE("hyprolyb_adpcm", hyprolyb_adpcm_device, vck_callback)) /* VCK function */
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4 kHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
MACHINE_CONFIG_END
msm5205_device &msm(MSM5205(config, "msm", 384000));
msm.vck_legacy_callback().set("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::vck_callback));
msm.set_prescaler_selector(msm5205_device::S96_4B); /* 4 kHz */
msm.add_route(ALL_OUTPUTS, "speaker", 0.5);
}
MACHINE_CONFIG_START(trackfld_state::atlantol)
void trackfld_state::atlantol(machine_config &config)
{
hyprolyb(config);
MCFG_VIDEO_START_OVERRIDE(trackfld_state,atlantol)
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(trackfld_state::mastkin)
void trackfld_state::mastkin(machine_config &config)
{
trackfld(config);
/* basic machine hardware */
MCFG_DEVICE_REPLACE(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */
MCFG_DEVICE_PROGRAM_MAP(mastkin_map)
MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */
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<4>().set_nop(); // actually not used
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(trackfld_state::wizzquiz)
void trackfld_state::wizzquiz(machine_config &config)
{
trackfld(config);
/* basic machine hardware */
// right cpu?
MCFG_DEVICE_REPLACE(m_maincpu, M6800, 2048000) /* 1.400 MHz ??? */
MCFG_DEVICE_PROGRAM_MAP(wizzquiz_map)
M6800(config.replace(), m_maincpu, 2048000); /* 1.400 MHz ??? */
m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::wizzquiz_map);
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));
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(trackfld_state::reaktor)
void trackfld_state::reaktor(machine_config &config)
{
trackfld(config);
/* basic machine hardware */
MCFG_DEVICE_REPLACE(m_maincpu, Z80, MASTER_CLOCK/6)
MCFG_DEVICE_PROGRAM_MAP(reaktor_map)
MCFG_DEVICE_IO_MAP(reaktor_io_map)
MACHINE_CONFIG_END
Z80(config.replace(), m_maincpu, MASTER_CLOCK/6);
m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::reaktor_map);
m_maincpu->set_addrmap(AS_IO, &trackfld_state::reaktor_io_map);
}
/***************************************************************************

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 */
MCFG_DEVICE_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(tubep_main_map)
MCFG_DEVICE_IO_MAP(tubep_main_portmap)
Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &tubep_state::tubep_main_map);
m_maincpu->set_addrmap(AS_IO, &tubep_state::tubep_main_portmap);
MCFG_DEVICE_ADD("slave",Z80,16000000 / 4) /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(tubep_second_map)
MCFG_DEVICE_IO_MAP(tubep_second_portmap)
Z80(config, m_slave, 16000000 / 4); /* 4 MHz */
m_slave->set_addrmap(AS_PROGRAM, &tubep_state::tubep_second_map);
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) */
MCFG_DEVICE_PROGRAM_MAP(tubep_sound_map)
MCFG_DEVICE_IO_MAP(tubep_sound_portmap)
Z80(config, m_soundcpu, 19968000 / 8); /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */
m_soundcpu->set_addrmap(AS_PROGRAM, &tubep_state::tubep_sound_map);
m_soundcpu->set_addrmap(AS_IO, &tubep_state::tubep_sound_portmap);
MCFG_DEVICE_ADD("mcu",NSC8105,6000000) /* 6 MHz Xtal - divided internally ??? */
MCFG_DEVICE_PROGRAM_MAP(nsc_map)
NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */
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"));
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)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_tubep)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_size(256, 264);
m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(tubep_state::screen_update_tubep));
m_screen->set_palette("palette");
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_b_write_callback().set(FUNC(tubep_state::ay8910_portB_2_w));
ay3.add_route(ALL_OUTPUTS, "mono", 0.10);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(tubep_state::tubepb)
void tubep_state::tubepb(machine_config &config)
{
tubep(config);
MCFG_DEVICE_REPLACE("mcu", M6802,6000000) /* ? MHz Xtal */
MCFG_DEVICE_PROGRAM_MAP(nsc_map)
M6802(config.replace(), m_mcu, 6000000); /* ? MHz Xtal */
m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map);
//MCFG_SCREEN_MODIFY("screen")
//MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("mcu", INPUT_LINE_NMI))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(tubep_state::rjammer)
//m_screen->screen_vblank().set_inputline(m_mcu, INPUT_LINE_NMI);
}
void tubep_state::rjammer(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(rjammer_main_map)
MCFG_DEVICE_IO_MAP(rjammer_main_portmap)
Z80(config, m_maincpu, 16000000 / 4); /* 4 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_main_map);
m_maincpu->set_addrmap(AS_IO, &tubep_state::rjammer_main_portmap);
MCFG_DEVICE_ADD("slave",Z80,16000000 / 4) /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(rjammer_second_map)
MCFG_DEVICE_IO_MAP(rjammer_second_portmap)
Z80(config, m_slave, 16000000 / 4); /* 4 MHz */
m_slave->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_second_map);
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) */
MCFG_DEVICE_PROGRAM_MAP(rjammer_sound_map)
MCFG_DEVICE_IO_MAP(rjammer_sound_portmap)
Z80(config, m_soundcpu, 19968000 / 8); /* X2 19968000 Hz divided by LS669 (on Qc output) (signal RH0) */
m_soundcpu->set_addrmap(AS_PROGRAM, &tubep_state::rjammer_sound_map);
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);
MCFG_DEVICE_ADD("mcu",NSC8105,6000000) /* 6 MHz Xtal - divided internally ??? */
MCFG_DEVICE_PROGRAM_MAP(nsc_map)
NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */
m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 3A
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_RESET_OVERRIDE(tubep_state,rjammer)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_rjammer)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_size(256, 264);
m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(tubep_state::screen_update_rjammer));
m_screen->set_palette("palette");
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.add_route(ALL_OUTPUTS, "mono", 0.10);
MCFG_DEVICE_ADD("msm", MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, tubep_state, rjammer_adpcm_vck)) /* VCK function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz (changes at run time) */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
MSM5205(config, m_msm, 384000);
m_msm->vck_legacy_callback().set(FUNC(tubep_state::rjammer_adpcm_vck)); /* VCK function */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz (changes at run time) */
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
}

View File

@ -283,24 +283,24 @@ void wackygtr_state::program_map(address_map &map)
MACHINE_CONFIG_START(wackygtr_state::wackygtr)
MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(3'579'545)) // HD68B09P
MCFG_DEVICE_PROGRAM_MAP(program_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(wackygtr_state, irq0_line_assert, 50) // FIXME
MC6809(config, m_maincpu, XTAL(3'579'545)); // HD68B09P
m_maincpu->set_addrmap(AS_PROGRAM, &wackygtr_state::program_map);
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 */
config.set_default_layout(layout_wackygtr);
/* Sound */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000) )
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, wackygtr_state, adpcm_int)) /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MSM5205(config, m_msm, XTAL(384'000));
m_msm->vck_legacy_callback().set(FUNC(wackygtr_state::adpcm_int)); /* IRQ handler */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(3'579'545) )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(3'579'545)));
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
i8255_device &ppi0(I8255(config, "i8255_0"));
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]->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)
MACHINE_CONFIG_END
TICKET_DISPENSER(config, "ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
}
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 */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(wc90b_map1)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wc90b_state, irq0_line_assert)
Z80(config, m_maincpu, MASTER_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &wc90b_state::wc90b_map1);
m_maincpu->set_vblank_int("screen", FUNC(wc90b_state::irq0_line_assert));
MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(wc90b_map2)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", wc90b_state, irq0_line_assert)
Z80(config, m_subcpu, MASTER_CLOCK);
m_subcpu->set_addrmap(AS_PROGRAM, &wc90b_state::wc90b_map2);
m_subcpu->set_vblank_int("screen", FUNC(wc90b_state::irq0_line_assert));
MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(sound_cpu)
Z80(config, m_audiocpu, SOUND_CLOCK);
m_audiocpu->set_addrmap(AS_PROGRAM, &wc90b_state::sound_cpu);
/* IRQs are triggered by the main CPU */
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(wc90b_state, screen_update)
MCFG_SCREEN_PALETTE(m_palette)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(32*8, 32*8);
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(wc90b_state::screen_update));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_wc90b);
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);
MCFG_DEVICE_ADD("ymsnd1", YM2203, YM2203_CLOCK)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
YM2203(config, "ymsnd1", YM2203_CLOCK).add_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)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MCFG_DEVICE_ADD("msm", MSM5205, MSM5205_CLOCK)
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
MSM5205(config, m_msm, MSM5205_CLOCK);
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 */
m_msm->add_route(ALL_OUTPUTS, "mono", 0.20);
}
ROM_START( twcup90b1 )
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 */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* Z80B @ 8MHz? */
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_IO_MAP(port_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", yunsung8_state, irq0_line_assert) /* No nmi routine */
Z80(config, m_maincpu, XTAL(16'000'000)/2); /* Z80B @ 8MHz? */
m_maincpu->set_addrmap(AS_PROGRAM, &yunsung8_state::main_map);
m_maincpu->set_addrmap(AS_IO, &yunsung8_state::port_map);
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) /* ? */
MCFG_DEVICE_PROGRAM_MAP(sound_map)
Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* ? */
m_audiocpu->set_addrmap(AS_PROGRAM, &yunsung8_state::sound_map);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(16'000'000)/2, 512, 64, 512-64, 262, 8, 256-8) /* TODO: completely inaccurate */
MCFG_SCREEN_UPDATE_DRIVER(yunsung8_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_yunsung8)
MCFG_PALETTE_ADD("palette", 2048)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(XTAL(16'000'000)/2, 512, 64, 512-64, 262, 8, 256-8); /* TODO: completely inaccurate */
screen.set_screen_update(FUNC(yunsung8_state::screen_update));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_yunsung8);
PALETTE(config, m_palette).set_entries(2048);
/* sound hardware */
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);
MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(16'000'000)/4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(16'000'000)/4));
ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 1.0);
ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 1.0);
LS157(config, m_adpcm_select, 0);
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
MCFG_DEVICE_ADD("msm", MSM5205, XTAL(400'000)) /* verified on pcb */
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, yunsung8_state, adpcm_int)) /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz, 4 Bits */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MACHINE_CONFIG_END
MSM5205(config, m_msm, XTAL(400'000)); /* verified on pcb */
m_msm->vck_legacy_callback().set(FUNC(yunsung8_state::adpcm_int)); /* interrupt function */
m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz, 4 Bits */
m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
}
/***************************************************************************

View File

@ -11,12 +11,13 @@ class lwings_state : public driver_device
public:
lwings_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_spriteram(*this, "spriteram") ,
m_spriteram(*this, "spriteram"),
m_fgvideoram(*this, "fgvideoram"),
m_bg1videoram(*this, "bg1videoram"),
m_soundlatch2(*this, "soundlatch_2"),
m_nmi_mask(0),
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
m_msm(*this, "5205"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
@ -91,6 +92,7 @@ private:
void trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
int avengers_fetch_paldata( );
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
optional_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode;
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!?!
MACHINE_CONFIG_START(pce_cd_device::device_add_mconfig)
NVRAM(config, "bram").set_custom_handler(FUNC(pce_cd_device::nvram_init));
void pce_cd_device::device_add_mconfig(machine_config &config)
{
NVRAM(config, m_nvram).set_custom_handler(FUNC(pce_cd_device::nvram_init));
MCFG_CDROM_ADD("cdrom")
MCFG_CDROM_INTERFACE("pce_cdrom")
CDROM(config, m_cdrom).set_interface("pce_cdrom");
MCFG_DEVICE_ADD( "msm5205", MSM5205, PCE_CD_CLOCK / 6 )
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, pce_cd_device, msm5205_int)) /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 1/48 prescaler, 4bit data */
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "^lspeaker", 0.50 )
MCFG_SOUND_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
MSM5205(config, m_msm, PCE_CD_CLOCK / 6);
m_msm->vck_legacy_callback().set(FUNC(pce_cd_device::msm5205_int)); /* interrupt function */
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 1/48 prescaler, 4bit data */
m_msm->add_route(ALL_OUTPUTS, "^lspeaker", 0.50);
m_msm->add_route(ALL_OUTPUTS, "^rspeaker", 0.50);
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)
{