summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/alpha68k.cpp
diff options
context:
space:
mode:
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
commitc8b72e09bf34c80711bcd9b6c5486f9e3881fe40 (patch)
treec2c3ae8ef57d5539e2c4ff1946b14f9177737874 /src/mame/drivers/alpha68k.cpp
parent1b2ff8511a6d7c31feb6b7b4bd2954a79ec75020 (diff)
alpha68k.cpp: Cleanups and clock corrections (nw)
Diffstat (limited to 'src/mame/drivers/alpha68k.cpp')
-rw-r--r--src/mame/drivers/alpha68k.cpp133
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)