mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
-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:
parent
6327ec1330
commit
76effa7a28
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/*************************************
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/*************************************
|
||||
*
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/*************************
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
/*************************************
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
/*************************
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/*************************************
|
||||
*
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/*************************************
|
||||
|
@ -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 )
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user