diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2018-05-11 16:07:05 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2018-05-11 16:07:05 -0400 |
commit | c8b72e09bf34c80711bcd9b6c5486f9e3881fe40 (patch) | |
tree | c2c3ae8ef57d5539e2c4ff1946b14f9177737874 /src/mame/drivers/alpha68k.cpp | |
parent | 1b2ff8511a6d7c31feb6b7b4bd2954a79ec75020 (diff) |
alpha68k.cpp: Cleanups and clock corrections (nw)
Diffstat (limited to 'src/mame/drivers/alpha68k.cpp')
-rw-r--r-- | src/mame/drivers/alpha68k.cpp | 133 |
1 files changed, 34 insertions, 99 deletions
diff --git a/src/mame/drivers/alpha68k.cpp b/src/mame/drivers/alpha68k.cpp index ee035381220..040e387e470 100644 --- a/src/mame/drivers/alpha68k.cpp +++ b/src/mame/drivers/alpha68k.cpp @@ -283,43 +283,17 @@ READ16_MEMBER(alpha68k_state::jongbou_inputs_r) /******************************************************************************/ -WRITE16_MEMBER(alpha68k_state::kyros_sound_w) -{ - if(ACCESSING_BITS_8_15) - m_soundlatch->write(space, 0, (data >> 8) & 0xff); -} - -WRITE16_MEMBER(alpha68k_state::alpha68k_II_sound_w) -{ - if(ACCESSING_BITS_0_7) - m_soundlatch->write(space, 0, data & 0xff); -} - -WRITE16_MEMBER(alpha68k_state::alpha68k_V_sound_w) -{ - /* Sound & fix bank select are in the same word */ - if(ACCESSING_BITS_0_7) - m_soundlatch->write(space, 0, data & 0xff); - if(ACCESSING_BITS_8_15) - alpha68k_V_video_bank_w((data >> 8) & 0xff); -} //AT -WRITE16_MEMBER(alpha68k_state::paddlema_soundlatch_w) +WRITE8_MEMBER(alpha68k_state::paddlema_soundlatch_w) { - if (ACCESSING_BITS_0_7) - { - m_soundlatch->write(space, 0, data); - m_audiocpu->set_input_line(0, HOLD_LINE); - } + m_soundlatch->write(space, 0, data); + m_audiocpu->set_input_line(0, HOLD_LINE); } -WRITE16_MEMBER(alpha68k_state::tnextspc_soundlatch_w) +WRITE8_MEMBER(alpha68k_state::tnextspc_soundlatch_w) { - if (ACCESSING_BITS_0_7) - { - m_soundlatch->write(space, 0, data); - m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); - } + m_soundlatch->write(space, 0, data); + m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } //ZT /******************************************************************************/ @@ -652,7 +626,8 @@ void alpha68k_state::kyros_map(address_map &map) map(0x060000, 0x060001).ram().share("videoram"); // MSB: watchdog, LSB: BGC map(0x080000, 0x0801ff).rw(this, FUNC(alpha68k_state::kyros_alpha_trigger_r), FUNC(alpha68k_state::alpha_microcontroller_w)); map(0x0c0000, 0x0c0001).portr("IN0"); - map(0x0e0000, 0x0e0001).rw(this, FUNC(alpha68k_state::kyros_dip_r), FUNC(alpha68k_state::kyros_sound_w)); + map(0x0e0000, 0x0e0001).r(this, FUNC(alpha68k_state::kyros_dip_r)); + map(0x0e0000, 0x0e0000).w("soundlatch", FUNC(generic_latch_8_device::write)); } void alpha68k_state::alpha68k_I_map(address_map &map) @@ -664,7 +639,8 @@ void alpha68k_state::alpha68k_I_map(address_map &map) map(0x180008, 0x180009).portr("IN4"); // LSB: DSW1 map(0x300000, 0x300001).portr("IN0"); // joy1, joy2 map(0x340000, 0x340001).portr("IN1"); // coin, start, service - map(0x380000, 0x380001).portr("IN2").w(this, FUNC(alpha68k_state::paddlema_soundlatch_w)); // LSB: sound latch write and RST38 trigger, joy3, joy4 + map(0x380000, 0x380001).portr("IN2"); + map(0x380001, 0x380001).w(this, FUNC(alpha68k_state::paddlema_soundlatch_w)); // LSB: sound latch write and RST38 trigger, joy3, joy4 } void alpha68k_state::alpha68k_II_map(address_map &map) @@ -672,7 +648,7 @@ void alpha68k_state::alpha68k_II_map(address_map &map) map(0x000000, 0x03ffff).rom(); map(0x040000, 0x040fff).ram().share("shared_ram"); map(0x080000, 0x080001).r(this, FUNC(alpha68k_state::control_1_r)); /* Joysticks */ - map(0x080000, 0x080001).w(this, FUNC(alpha68k_state::alpha68k_II_sound_w)); + map(0x080001, 0x080001).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0x0c0000, 0x0c0001).r(this, FUNC(alpha68k_state::control_2_r)); /* CN1 & Dip 1 */ map(0x0c0000, 0x0c00ff).w(this, FUNC(alpha68k_state::alpha68k_II_video_bank_w)); map(0x0c8000, 0x0c8001).r(this, FUNC(alpha68k_state::control_3_r)); /* Bottom of CN2 */ @@ -691,7 +667,9 @@ void alpha68k_state::alpha68k_V_map(address_map &map) { map(0x000000, 0x03ffff).rom(); map(0x040000, 0x043fff).ram().share("shared_ram"); - map(0x080000, 0x080001).rw(this, FUNC(alpha68k_state::control_1_r), FUNC(alpha68k_state::alpha68k_V_sound_w)); /* Joysticks */ + map(0x080000, 0x080001).r(this, FUNC(alpha68k_state::control_1_r)); /* Joysticks */ + map(0x080000, 0x080000).w(this, FUNC(alpha68k_state::alpha68k_V_video_bank_w)); + map(0x080001, 0x080001).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0x0c0000, 0x0c0001).r(this, FUNC(alpha68k_state::control_2_V_r)); /* Dip 2 */ map(0x0c0000, 0x0c00ff).w(this, FUNC(alpha68k_state::alpha68k_V_video_control_w)); map(0x0d8000, 0x0d8001).nopr(); /* IRQ ack? */ @@ -724,14 +702,14 @@ void alpha68k_state::tnextspc_map(address_map &map) map(0x0e0018, 0x0e0019).r(this, FUNC(alpha68k_state::sound_cpu_r)); map(0x0f0000, 0x0f0001).w(this, FUNC(alpha68k_state::tnextspc_unknown_w)); map(0x0f0002, 0x0f0005).w(this, FUNC(alpha68k_state::tnextspc_coin_counters_w)); - map(0x0f0008, 0x0f0009).w(this, FUNC(alpha68k_state::tnextspc_soundlatch_w)); + map(0x0f0009, 0x0f0009).w(this, FUNC(alpha68k_state::tnextspc_soundlatch_w)); } /******************************************************************************/ WRITE8_MEMBER(alpha68k_state::sound_bank_w) { - membank("bank7")->set_entry(data); + membank("bank7")->set_entry(data & 0x1f); } void alpha68k_state::sound_map(address_map &map) @@ -794,12 +772,13 @@ void alpha68k_state::tnextspc_sound_map(address_map &map) void alpha68k_state::sound_portmap(address_map &map) { - map.global_mask(0xff); - map(0x00, 0x00).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w)); - map(0x08, 0x08).w("dac", FUNC(dac_byte_interface::write)); + map.global_mask(0x0f); + map(0x00, 0x00).mirror(0x0f).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x00, 0x00).mirror(0x01).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w)); + map(0x08, 0x08).mirror(0x01).w("dac", FUNC(dac_byte_interface::write)); map(0x0a, 0x0b).w("ym2", FUNC(ym2413_device::write)); map(0x0c, 0x0d).w("ym1", FUNC(ym2203_device::write)); - map(0x0e, 0x0e).w(this, FUNC(alpha68k_state::sound_bank_w)); + map(0x0e, 0x0e).mirror(0x01).w(this, FUNC(alpha68k_state::sound_bank_w)); } void alpha68k_state::kyros_sound_portmap(address_map &map) @@ -1918,7 +1897,7 @@ MACHINE_START_MEMBER(alpha68k_state,alpha68k_II) // Pixel clock, assuming that it can't be 4 MHz because 4 MHz / 15,20 KHz = 263 HTOTAL (VERY unlikely). -#define ALPHA68K_PIXEL_CLOCK XTAL(24'000'000)/4 +#define ALPHA68K_PIXEL_CLOCK (24_MHz_XTAL / 4) #define ALPHA68K_HTOTAL 394 #define ALPHA68K_HBEND 0 #define ALPHA68K_HBSTART 256 @@ -1990,12 +1969,12 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(alpha68k_state::kyros) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/4) /* Verified on bootleg PCB */ + MCFG_DEVICE_ADD("maincpu", M68000, 24_MHz_XTAL / 4) /* Verified on bootleg PCB */ MCFG_DEVICE_PROGRAM_MAP(kyros_map) MCFG_DEVICE_VBLANK_INT_DRIVER("screen", alpha68k_state, irq1_line_hold) MCFG_DEVICE_PERIODIC_INT_DRIVER(alpha68k_state, irq2_line_hold, 60) // MCU irq - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/6) /* Verified on bootleg PCB */ + MCFG_DEVICE_ADD("audiocpu", Z80, 24_MHz_XTAL / 6) /* Verified on bootleg PCB */ MCFG_DEVICE_PROGRAM_MAP(kyros_sound_map) MCFG_DEVICE_IO_MAP(kyros_sound_portmap) MCFG_DEVICE_VBLANK_INT_DRIVER("screen", alpha68k_state, irq0_line_hold) @@ -2025,13 +2004,13 @@ MACHINE_CONFIG_START(alpha68k_state::kyros) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_DEVICE_ADD("ym1", YM2203, XTAL(24'000'000)/12) /* Verified on bootleg PCB */ + MCFG_DEVICE_ADD("ym1", YM2203, 24_MHz_XTAL / 12) /* Verified on bootleg PCB */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.35) - MCFG_DEVICE_ADD("ym2", YM2203, XTAL(24'000'000)/12) /* Verified on bootleg PCB */ + MCFG_DEVICE_ADD("ym2", YM2203, 24_MHz_XTAL / 12) /* Verified on bootleg PCB */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.35) - MCFG_DEVICE_ADD("ym3", YM2203, XTAL(24'000'000)/12) /* Verified on bootleg PCB */ + MCFG_DEVICE_ADD("ym3", YM2203, 24_MHz_XTAL / 12) /* Verified on bootleg PCB */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.9) MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) // unknown DAC @@ -2163,7 +2142,6 @@ MACHINE_CONFIG_START(alpha68k_state::alpha68k_II) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_DEVICE_ADD("ym1", YM2203, 3000000) - MCFG_AY8910_PORT_A_READ_CB(READ8("soundlatch", generic_latch_8_device, read)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(*this, alpha68k_state, porta_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.65) @@ -2220,7 +2198,6 @@ MACHINE_CONFIG_START(alpha68k_state::alpha68k_II_gm) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_DEVICE_ADD("ym1", YM2203, 3000000) - MCFG_AY8910_PORT_A_READ_CB(READ8("soundlatch", generic_latch_8_device, read)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(*this, alpha68k_state, porta_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.65) @@ -2235,11 +2212,11 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(alpha68k_state::alpha68k_V) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* ? */ + MCFG_DEVICE_ADD("maincpu", M68000, 20_MHz_XTAL / 2) MCFG_DEVICE_PROGRAM_MAP(alpha68k_V_map) MCFG_DEVICE_VBLANK_INT_DRIVER("screen", alpha68k_state, irq3_line_hold)/* VBL */ - MCFG_DEVICE_ADD("audiocpu", Z80, /*3579545*/3579545*2) /* Unlikely but needed to stop nested NMI's */ + MCFG_DEVICE_ADD("audiocpu", Z80, 24_MHz_XTAL / 4) MCFG_DEVICE_PROGRAM_MAP(sound_map) MCFG_DEVICE_IO_MAP(sound_portmap) MCFG_DEVICE_PERIODIC_INT_DRIVER(alpha68k_state, alpha68k_sound_nmi, 8500) @@ -2268,66 +2245,24 @@ MACHINE_CONFIG_START(alpha68k_state::alpha68k_V) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_DEVICE_ADD("ym1", YM2203, 3000000) - MCFG_AY8910_PORT_A_READ_CB(READ8("soundlatch", generic_latch_8_device, read)) + MCFG_DEVICE_ADD("ym1", YM2203, ALPHA68K_PIXEL_CLOCK / 2) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(*this, alpha68k_state, porta_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.65) - MCFG_DEVICE_ADD("ym2", YM2413, 3579545) + MCFG_DEVICE_ADD("ym2", YM2413, 3.579545_MHz_XTAL) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) // unknown DAC + MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) // ALPHA-VOICE88 custom DAC 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 MACHINE_CONFIG_START(alpha68k_state::alpha68k_V_sb) - - /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(alpha68k_V_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", alpha68k_state, irq3_line_hold)/* VBL */ - - MCFG_DEVICE_ADD("audiocpu", Z80, /*3579545*/3579545*2) /* Unlikely but needed to stop nested NMI's */ - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_IO_MAP(sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(alpha68k_state, alpha68k_sound_nmi, 8500) - - MCFG_MACHINE_START_OVERRIDE(alpha68k_state,alpha68k_V) - MCFG_MACHINE_RESET_OVERRIDE(alpha68k_state,alpha68k_V) + alpha68k_V(config); /* 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_RAW_PARAMS(ALPHA68K_PIXEL_CLOCK,ALPHA68K_HTOTAL,ALPHA68K_HBEND,ALPHA68K_HBSTART,ALPHA68K_VTOTAL,ALPHA68K_VBEND,ALPHA68K_VBSTART) + MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_V_sb) - MCFG_SCREEN_PALETTE("palette") - - MCFG_GFXDECODE_ADD("gfxdecode", "palette", alpha68k_V) - MCFG_PALETTE_ADD("palette", 4096) - MCFG_PALETTE_FORMAT(xRGBRRRRGGGGBBBB_bit0) - - MCFG_VIDEO_START_OVERRIDE(alpha68k_state,alpha68k) - - /* sound hardware */ - SPEAKER(config, "speaker").front_center(); - - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - - MCFG_DEVICE_ADD("ym1", YM2203, 3000000) - MCFG_AY8910_PORT_A_READ_CB(READ8("soundlatch", generic_latch_8_device, read)) - MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(*this, alpha68k_state, porta_w)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.65) - - MCFG_DEVICE_ADD("ym2", YM2413, 3579545) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) - - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) // unknown DAC - 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 MACHINE_CONFIG_START(alpha68k_state::tnextspc) |