mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
alpha68k.cpp: Cleanups and clock corrections (nw)
This commit is contained in:
parent
1b2ff8511a
commit
c8b72e09bf
@ -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)
|
||||
|
@ -63,11 +63,8 @@ public:
|
||||
DECLARE_READ16_MEMBER(control_3_r);
|
||||
DECLARE_READ16_MEMBER(control_4_r);
|
||||
DECLARE_READ16_MEMBER(jongbou_inputs_r);
|
||||
DECLARE_WRITE16_MEMBER(kyros_sound_w);
|
||||
DECLARE_WRITE16_MEMBER(alpha68k_II_sound_w);
|
||||
DECLARE_WRITE16_MEMBER(alpha68k_V_sound_w);
|
||||
DECLARE_WRITE16_MEMBER(paddlema_soundlatch_w);
|
||||
DECLARE_WRITE16_MEMBER(tnextspc_soundlatch_w);
|
||||
DECLARE_WRITE8_MEMBER(paddlema_soundlatch_w);
|
||||
DECLARE_WRITE8_MEMBER(tnextspc_soundlatch_w);
|
||||
DECLARE_READ16_MEMBER(kyros_alpha_trigger_r);
|
||||
DECLARE_READ16_MEMBER(alpha_II_trigger_r);
|
||||
DECLARE_READ16_MEMBER(alpha_V_trigger_r);
|
||||
@ -113,7 +110,7 @@ public:
|
||||
uint32_t screen_update_alpha68k_V_sb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(alpha68k_sound_nmi);
|
||||
void alpha68k_flipscreen_w( int flip );
|
||||
void alpha68k_V_video_bank_w( int bank );
|
||||
DECLARE_WRITE8_MEMBER(alpha68k_V_video_bank_w);
|
||||
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int j, int s, int e );
|
||||
void draw_sprites_V( bitmap_ind16 &bitmap, const rectangle &cliprect, int j, int s, int e, int fx_mask, int fy_mask, int sprite_mask );
|
||||
void draw_sprites_I( bitmap_ind16 &bitmap, const rectangle &cliprect, int c, int d, int yshift );
|
||||
|
@ -15,9 +15,9 @@ void alpha68k_state::alpha68k_flipscreen_w( int flip )
|
||||
m_flipscreen = flip;
|
||||
}
|
||||
|
||||
void alpha68k_state::alpha68k_V_video_bank_w( int bank )
|
||||
WRITE8_MEMBER(alpha68k_state::alpha68k_V_video_bank_w)
|
||||
{
|
||||
m_bank_base = bank & 0xf;
|
||||
m_bank_base = data & 0xf;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
Loading…
Reference in New Issue
Block a user