trackfld.cpp, hyperspt.cpp, sbasketb.cpp: Add 74LS259 latches (nw)

This commit is contained in:
AJR 2017-07-24 23:01:29 -04:00
parent ea72f25bd0
commit 74f152924b
11 changed files with 150 additions and 101 deletions

View File

@ -121,15 +121,15 @@ WRITE8_MEMBER( trackfld_audio_device::hyperspt_sound_w )
WRITE8_MEMBER( trackfld_audio_device::konami_sh_irqtrigger_w )
WRITE_LINE_MEMBER(trackfld_audio_device::sh_irqtrigger_w)
{
if (m_last_irq == 0 && data)
if (m_last_irq == 0 && state)
{
/* setting bit 0 low then high triggers IRQ on the sound CPU */
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
}
m_last_irq = data;
m_last_irq = state;
}
//-------------------------------------------------

View File

@ -13,12 +13,12 @@ class trackfld_audio_device : public device_t, public device_sound_interface
public:
trackfld_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE8_MEMBER(konami_sh_irqtrigger_w );
DECLARE_READ8_MEMBER(trackfld_sh_timer_r );
DECLARE_READ8_MEMBER(trackfld_speech_r );
DECLARE_WRITE8_MEMBER(trackfld_sound_w );
DECLARE_READ8_MEMBER(hyperspt_sh_timer_r );
DECLARE_WRITE8_MEMBER(hyperspt_sound_w );
DECLARE_WRITE_LINE_MEMBER(sh_irqtrigger_w);
DECLARE_READ8_MEMBER(trackfld_sh_timer_r);
DECLARE_READ8_MEMBER(trackfld_speech_r);
DECLARE_WRITE8_MEMBER(trackfld_sound_w);
DECLARE_READ8_MEMBER(hyperspt_sh_timer_r);
DECLARE_WRITE8_MEMBER(hyperspt_sound_w);
protected:
// device-level overrides

View File

@ -17,6 +17,7 @@ Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz)
#include "cpu/m6800/m6800.h"
#include "cpu/m6809/m6809.h"
#include "cpu/z80/z80.h"
#include "machine/74259.h"
#include "machine/gen_latch.h"
#include "machine/konami1.h"
#include "machine/nvram.h"
@ -34,24 +35,28 @@ void hyperspt_state::machine_start()
save_item(NAME(m_SN76496_latch));
}
WRITE8_MEMBER(hyperspt_state::coin_counter_w)
WRITE_LINE_MEMBER(hyperspt_state::coin_counter_1_w)
{
machine().bookkeeping().coin_counter_w(offset, data);
machine().bookkeeping().coin_counter_w(0, state);
}
WRITE8_MEMBER(hyperspt_state::irq_mask_w)
WRITE_LINE_MEMBER(hyperspt_state::coin_counter_2_w)
{
m_irq_mask = data & 1;
machine().bookkeeping().coin_counter_w(1, state);
}
WRITE_LINE_MEMBER(hyperspt_state::irq_mask_w)
{
m_irq_mask = state;
if (!m_irq_mask)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
static ADDRESS_MAP_START( common_map, AS_PROGRAM, 8, hyperspt_state )
AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x10c0, 0x10ff) AM_RAM AM_SHARE("scroll") /* Scroll amount */
AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
AM_RANGE(0x1480, 0x1480) AM_WRITE(flipscreen_w)
AM_RANGE(0x1481, 0x1481) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* cause interrupt on audio CPU */
AM_RANGE(0x1483, 0x1484) AM_WRITE(coin_counter_w)
AM_RANGE(0x1487, 0x1487) AM_WRITE(irq_mask_w) /* Interrupt enable */
AM_RANGE(0x1480, 0x1487) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
AM_RANGE(0x1500, 0x1500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2")
AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM")
@ -280,7 +285,7 @@ GFXDECODE_END
INTERRUPT_GEN_MEMBER(hyperspt_state::vblank_irq)
{
if(m_irq_mask)
device.execute().set_input_line(0, HOLD_LINE);
device.execute().set_input_line(0, ASSERT_LINE);
}
static MACHINE_CONFIG_START( hyperspt )
@ -293,6 +298,15 @@ static MACHINE_CONFIG_START( hyperspt )
MCFG_CPU_ADD("audiocpu", Z80,XTAL_14_31818MHz/4) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(hyperspt_sound_map)
MCFG_DEVICE_ADD("mainlatch", LS259, 0) // F2
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(hyperspt_state, flipscreen_w))
MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(DEVWRITELINE("trackfld_audio", trackfld_audio_device, sh_irqtrigger_w)) // SOUND ON
MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(NOOP) // END
MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(hyperspt_state, coin_counter_1_w)) // COIN 1
MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(hyperspt_state, coin_counter_2_w)) // COIN 2
MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(NOOP) // SA
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(hyperspt_state, irq_mask_w)) // INT
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_WATCHDOG_ADD("watchdog")

View File

@ -47,6 +47,7 @@ CPU/Video Board Parts:
#include "cpu/m6809/m6809.h"
#include "cpu/z80/z80.h"
#include "machine/74259.h"
#include "machine/gen_latch.h"
#include "machine/konami1.h"
#include "machine/watchdog.h"
@ -61,14 +62,21 @@ WRITE8_MEMBER(sbasketb_state::sbasketb_sh_irqtrigger_w)
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
}
WRITE8_MEMBER(sbasketb_state::sbasketb_coin_counter_w)
WRITE_LINE_MEMBER(sbasketb_state::coin_counter_1_w)
{
machine().bookkeeping().coin_counter_w(offset, data);
machine().bookkeeping().coin_counter_w(0, state);
}
WRITE8_MEMBER(sbasketb_state::irq_mask_w)
WRITE_LINE_MEMBER(sbasketb_state::coin_counter_2_w)
{
m_irq_mask = data & 1;
machine().bookkeeping().coin_counter_w(1, state);
}
WRITE_LINE_MEMBER(sbasketb_state::irq_mask_w)
{
m_irq_mask = state;
if (!m_irq_mask)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
static ADDRESS_MAP_START( sbasketb_map, AS_PROGRAM, 8, sbasketb_state )
@ -80,10 +88,7 @@ static ADDRESS_MAP_START( sbasketb_map, AS_PROGRAM, 8, sbasketb_state )
AM_RANGE(0x3c00, 0x3c00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
AM_RANGE(0x3c10, 0x3c10) AM_READNOP /* ???? */
AM_RANGE(0x3c20, 0x3c20) AM_WRITEONLY AM_SHARE("palettebank")
AM_RANGE(0x3c80, 0x3c80) AM_WRITE(sbasketb_flipscreen_w)
AM_RANGE(0x3c81, 0x3c81) AM_WRITE(irq_mask_w)
AM_RANGE(0x3c83, 0x3c84) AM_WRITE(sbasketb_coin_counter_w)
AM_RANGE(0x3c85, 0x3c85) AM_WRITEONLY AM_SHARE("spriteramsel")
AM_RANGE(0x3c80, 0x3c87) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
AM_RANGE(0x3d00, 0x3d00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x3d80, 0x3d80) AM_WRITE(sbasketb_sh_irqtrigger_w)
AM_RANGE(0x3e00, 0x3e00) AM_READ_PORT("SYSTEM")
@ -197,6 +202,15 @@ static MACHINE_CONFIG_START( sbasketb )
MCFG_CPU_ADD("audiocpu", Z80, XTAL_14_31818MHz / 4) /* 3.5795 MHz */
MCFG_CPU_PROGRAM_MAP(sbasketb_sound_map)
MCFG_DEVICE_ADD("mainlatch", LS259, 0) // B3
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(sbasketb_state, flipscreen_w)) // FLIP
MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(sbasketb_state, irq_mask_w)) // INTST
MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(NOOP) // MUT - not used?
MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(sbasketb_state, coin_counter_1_w)) // COIN 1
MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(sbasketb_state, coin_counter_2_w)) // COIN 2
MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(sbasketb_state, spriteram_select_w)) // OBJ CHE
MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(NOOP) // END - not used
MCFG_WATCHDOG_ADD("watchdog")
/* video hardware */

View File

@ -189,6 +189,7 @@ MAIN BOARD:
#include "cpu/z80/z80.h"
#include "cpu/m6800/m6800.h"
#include "cpu/m6809/m6809.h"
#include "machine/74259.h"
#include "machine/konami1.h"
#include "machine/nvram.h"
#include "machine/watchdog.h"
@ -203,9 +204,14 @@ MAIN BOARD:
#define VLM_CLOCK XTAL_3_579545MHz
WRITE8_MEMBER(trackfld_state::coin_w)
WRITE_LINE_MEMBER(trackfld_state::coin_counter_1_w)
{
machine().bookkeeping().coin_counter_w(offset, data & 1);
machine().bookkeeping().coin_counter_w(0, state);
}
WRITE_LINE_MEMBER(trackfld_state::coin_counter_2_w)
{
machine().bookkeeping().coin_counter_w(1, state);
}
WRITE8_MEMBER(trackfld_state::questions_bank_w)
@ -222,20 +228,16 @@ WRITE8_MEMBER(trackfld_state::questions_bank_w)
}
}
WRITE8_MEMBER(trackfld_state::irq_mask_w)
WRITE_LINE_MEMBER(trackfld_state::irq_mask_w)
{
m_irq_mask = data & 1;
m_irq_mask = state;
if (!m_irq_mask)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, trackfld_state )
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* AFE */
AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x0078) AM_WRITE(trackfld_flipscreen_w) /* FLIP */
AM_RANGE(0x1081, 0x1081) AM_MIRROR(0x0078) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* 26 */ /* cause interrupt on audio CPU */
AM_RANGE(0x1082, 0x1082) AM_MIRROR(0x0078) AM_WRITENOP /* 25 */
AM_RANGE(0x1083, 0x1084) AM_MIRROR(0x0078) AM_WRITE(coin_w) /* 24, 23 */
AM_RANGE(0x1085, 0x1085) AM_MIRROR(0x0078) AM_WRITENOP /* CN3.2 */
AM_RANGE(0x1086, 0x1086) AM_MIRROR(0x0078) AM_WRITENOP /* CN3.4 */
AM_RANGE(0x1087, 0x1087) AM_MIRROR(0x0078) AM_WRITE(irq_mask_w) /* INT */
AM_RANGE(0x1080, 0x1087) AM_MIRROR(0x0078) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* 32 */
AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x007f) AM_READ_PORT("DSW2")
AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x007c) AM_READ_PORT("SYSTEM")
@ -255,9 +257,11 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, trackfld_state )
AM_RANGE(0x6000, 0xffff) AM_ROM
ADDRESS_MAP_END
WRITE8_MEMBER(trackfld_state::yieartf_nmi_mask_w)
WRITE_LINE_MEMBER(trackfld_state::nmi_mask_w)
{
m_yieartf_nmi_mask = data & 1;
m_nmi_mask = state;
if (!m_nmi_mask)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
READ8_MEMBER(trackfld_state::trackfld_speech_r)
@ -282,13 +286,7 @@ static ADDRESS_MAP_START( yieartf_map, AS_PROGRAM, 8, trackfld_state )
AM_RANGE(0x0002, 0x0002) AM_WRITE(trackfld_VLM5030_control_w)
AM_RANGE(0x0003, 0x0003) AM_DEVWRITE("vlm", vlm5030_device, data_w)
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* AFE */
AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x0078) AM_WRITE(trackfld_flipscreen_w) /* FLIP */
AM_RANGE(0x1081, 0x1081) AM_MIRROR(0x0078) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* 26 */ /* cause interrupt on audio CPU */
AM_RANGE(0x1082, 0x1082) AM_MIRROR(0x0078) AM_WRITE(yieartf_nmi_mask_w) /* 25 */
AM_RANGE(0x1083, 0x1084) AM_MIRROR(0x0078) AM_WRITE(coin_w) /* 24, 23 */
AM_RANGE(0x1085, 0x1085) AM_MIRROR(0x0078) AM_WRITENOP /* CN3.2 */
AM_RANGE(0x1086, 0x1086) AM_MIRROR(0x0078) AM_WRITENOP /* CN3.4 */
AM_RANGE(0x1087, 0x1087) AM_MIRROR(0x0078) AM_WRITE(irq_mask_w) /* INT */
AM_RANGE(0x1080, 0x1087) AM_MIRROR(0x0078) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
// AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* 32 */
AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x007f) AM_READ_PORT("DSW2")
AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x007c) AM_READ_PORT("SYSTEM")
@ -312,10 +310,7 @@ static ADDRESS_MAP_START( reaktor_map, AS_PROGRAM, 8, trackfld_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
/* all usual addresses +0x8000 */
AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
AM_RANGE(0x9080, 0x9080) AM_WRITE(trackfld_flipscreen_w)
AM_RANGE(0x9081, 0x9081) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* cause interrupt on audio CPU */
AM_RANGE(0x9083, 0x9084) AM_WRITE(coin_w)
AM_RANGE(0x9087, 0x9087) AM_WRITE(irq_mask_w)
AM_RANGE(0x9080, 0x9087) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
AM_RANGE(0x9100, 0x9100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x9200, 0x9200) AM_READ_PORT("DSW2")
AM_RANGE(0x9280, 0x9280) AM_READ_PORT("SYSTEM")
@ -345,10 +340,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mastkin_map, AS_PROGRAM, 8, trackfld_state )
AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
AM_RANGE(0x10b0, 0x10b0) AM_WRITE(trackfld_flipscreen_w)
AM_RANGE(0x10b1, 0x10b1) AM_READNOP AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w)
AM_RANGE(0x10b3, 0x10b4) AM_WRITE(coin_w) // actually not used
AM_RANGE(0x10b7, 0x10b7) AM_READNOP AM_WRITE(irq_mask_w)
AM_RANGE(0x10b0, 0x10b7) AM_READNOP AM_DEVWRITE("mainlatch", ls259_device, write_d0)
AM_RANGE(0x1100, 0x1100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x1200, 0x1200) AM_READ_PORT("DSW2")
AM_RANGE(0x1280, 0x1280) AM_READ_PORT("SYSTEM")
@ -372,10 +364,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( wizzquiz_map, AS_PROGRAM, 8, trackfld_state )
AM_RANGE(0x0000, 0x007f) AM_RAM
AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w)
AM_RANGE(0x1080, 0x1080) AM_WRITE(trackfld_flipscreen_w)
AM_RANGE(0x1081, 0x1081) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* cause interrupt on audio CPU */
AM_RANGE(0x1083, 0x1084) AM_WRITE(coin_w)
AM_RANGE(0x1087, 0x1087) AM_WRITE(irq_mask_w)
AM_RANGE(0x1080, 0x1087) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
AM_RANGE(0x1100, 0x1100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x1200, 0x1200) AM_READ_PORT("DSW2")
AM_RANGE(0x1280, 0x1280) AM_READ_PORT("SYSTEM")
@ -873,6 +862,9 @@ GFXDECODE_END
MACHINE_START_MEMBER(trackfld_state,trackfld)
{
save_item(NAME(m_irq_mask));
save_item(NAME(m_nmi_mask));
/* video */
save_item(NAME(m_bg_bank));
save_item(NAME(m_sprite_bank1));
@ -890,14 +882,14 @@ MACHINE_RESET_MEMBER(trackfld_state,trackfld)
INTERRUPT_GEN_MEMBER(trackfld_state::vblank_irq)
{
if(m_irq_mask)
device.execute().set_input_line(0, HOLD_LINE);
if (m_irq_mask)
device.execute().set_input_line(0, ASSERT_LINE);
}
INTERRUPT_GEN_MEMBER(trackfld_state::vblank_nmi)
{
if(m_irq_mask)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
if (m_nmi_mask)
device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
static MACHINE_CONFIG_START( trackfld )
@ -912,6 +904,17 @@ static MACHINE_CONFIG_START( trackfld )
MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld)
MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld)
MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 1D
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(trackfld_state, flipscreen_w)) // FLIP
MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(DEVWRITELINE("trackfld_audio", trackfld_audio_device, sh_irqtrigger_w)) // 26 = SOUND ON
MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(NOOP) // 25 = MUT?
MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(trackfld_state, coin_counter_1_w)) // 24 = OUT1
MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(trackfld_state, coin_counter_2_w)) // 23 = OUT2
MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(NOOP) // CN3.2
MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(NOOP) // CN3.4
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(trackfld_state, irq_mask_w)) // INT
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_WATCHDOG_ADD("watchdog")
@ -953,8 +956,8 @@ MACHINE_CONFIG_END
INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq)
{
if (m_yieartf_nmi_mask)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
if (m_nmi_mask)
device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
static MACHINE_CONFIG_START( yieartf )
@ -971,6 +974,17 @@ static MACHINE_CONFIG_START( yieartf )
MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld)
MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld)
MCFG_DEVICE_ADD("mainlatch", LS259, 0)
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(trackfld_state, flipscreen_w))
MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(DEVWRITELINE("trackfld_audio", trackfld_audio_device, sh_irqtrigger_w))
MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(trackfld_state, nmi_mask_w))
MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(trackfld_state, coin_counter_1_w))
MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(trackfld_state, coin_counter_2_w))
MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(NOOP)
MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(NOOP)
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(trackfld_state, irq_mask_w))
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_WATCHDOG_ADD("watchdog")
@ -1033,11 +1047,13 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mastkin, trackfld )
/* basic machine hardware */
MCFG_DEVICE_REMOVE("maincpu")
MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/6/2) /* a guess for now */
MCFG_CPU_REPLACE("maincpu", M6809, MASTER_CLOCK/6/2) /* a guess for now */
MCFG_CPU_PROGRAM_MAP(mastkin_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", trackfld_state, vblank_irq)
MCFG_DEVICE_MODIFY("mainlatch")
MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(NOOP) // actually not used
MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(NOOP) // actually not used
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( wizzquiz, trackfld )
@ -1047,6 +1063,9 @@ static MACHINE_CONFIG_DERIVED( wizzquiz, trackfld )
MCFG_CPU_REPLACE("maincpu",M6800,2048000) /* 1.400 MHz ??? */
MCFG_CPU_PROGRAM_MAP(wizzquiz_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", trackfld_state, vblank_nmi)
MCFG_DEVICE_MODIFY("mainlatch")
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(trackfld_state, nmi_mask_w))
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( reaktor, trackfld )

View File

@ -38,11 +38,12 @@ public:
uint8_t m_irq_mask;
uint8_t m_SN76496_latch;
DECLARE_WRITE8_MEMBER(coin_counter_w);
DECLARE_WRITE8_MEMBER(irq_mask_w);
DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w);
DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w);
DECLARE_WRITE_LINE_MEMBER(irq_mask_w);
DECLARE_WRITE8_MEMBER(videoram_w);
DECLARE_WRITE8_MEMBER(colorram_w);
DECLARE_WRITE8_MEMBER(flipscreen_w);
DECLARE_WRITE_LINE_MEMBER(flipscreen_w);
DECLARE_WRITE8_MEMBER(konami_SN76496_latch_w) { m_SN76496_latch = data; };
DECLARE_WRITE8_MEMBER(konami_SN76496_w) { m_sn->write(space, offset, m_SN76496_latch); };

View File

@ -13,7 +13,6 @@ public:
m_videoram(*this, "videoram"),
m_spriteram(*this, "spriteram"),
m_palettebank(*this, "palettebank"),
m_spriteram_select(*this, "spriteramsel"),
m_scroll(*this, "scroll"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
@ -27,7 +26,6 @@ public:
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_spriteram;
required_shared_ptr<uint8_t> m_palettebank;
required_shared_ptr<uint8_t> m_spriteram_select;
required_shared_ptr<uint8_t> m_scroll;
/* devices */
@ -40,14 +38,17 @@ public:
/* video-related */
tilemap_t *m_bg_tilemap;
bool m_spriteram_select;
uint8_t m_irq_mask;
bool m_irq_mask;
DECLARE_WRITE8_MEMBER(sbasketb_sh_irqtrigger_w);
DECLARE_WRITE8_MEMBER(sbasketb_coin_counter_w);
DECLARE_WRITE8_MEMBER(irq_mask_w);
DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w);
DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w);
DECLARE_WRITE_LINE_MEMBER(irq_mask_w);
DECLARE_WRITE8_MEMBER(sbasketb_videoram_w);
DECLARE_WRITE8_MEMBER(sbasketb_colorram_w);
DECLARE_WRITE8_MEMBER(sbasketb_flipscreen_w);
DECLARE_WRITE_LINE_MEMBER(flipscreen_w);
DECLARE_WRITE_LINE_MEMBER(spriteram_select_w);
DECLARE_DRIVER_INIT(sbasketb);
uint8_t m_SN76496_latch;

View File

@ -49,15 +49,17 @@ public:
int m_old_gfx_bank; // needed by atlantol
int m_sprites_gfx_banked;
uint8_t m_irq_mask;
uint8_t m_yieartf_nmi_mask;
DECLARE_WRITE8_MEMBER(coin_w);
bool m_irq_mask;
bool m_nmi_mask;
DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w);
DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w);
DECLARE_WRITE8_MEMBER(questions_bank_w);
DECLARE_WRITE8_MEMBER(irq_mask_w);
DECLARE_WRITE8_MEMBER(yieartf_nmi_mask_w);
DECLARE_WRITE_LINE_MEMBER(irq_mask_w);
DECLARE_WRITE_LINE_MEMBER(nmi_mask_w);
DECLARE_WRITE8_MEMBER(trackfld_videoram_w);
DECLARE_WRITE8_MEMBER(trackfld_colorram_w);
DECLARE_WRITE8_MEMBER(trackfld_flipscreen_w);
DECLARE_WRITE_LINE_MEMBER(flipscreen_w);
DECLARE_WRITE8_MEMBER(atlantol_gfxbank_w);
DECLARE_READ8_MEMBER(trackfld_SN76496_r);
DECLARE_READ8_MEMBER(trackfld_speech_r);

View File

@ -101,13 +101,10 @@ WRITE8_MEMBER(hyperspt_state::colorram_w)
m_bg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(hyperspt_state::flipscreen_w)
WRITE_LINE_MEMBER(hyperspt_state::flipscreen_w)
{
if (flip_screen() != (data & 0x01))
{
flip_screen_set(data & 0x01);
machine().tilemap().mark_all_dirty();
}
flip_screen_set(state);
machine().tilemap().mark_all_dirty();
}
TILE_GET_INFO_MEMBER(hyperspt_state::get_bg_tile_info)

View File

@ -106,13 +106,15 @@ WRITE8_MEMBER(sbasketb_state::sbasketb_colorram_w)
m_bg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(sbasketb_state::sbasketb_flipscreen_w)
WRITE_LINE_MEMBER(sbasketb_state::flipscreen_w)
{
if (flip_screen() != data)
{
flip_screen_set(data);
machine().tilemap().mark_all_dirty();
}
flip_screen_set(state);
machine().tilemap().mark_all_dirty();
}
WRITE_LINE_MEMBER(sbasketb_state::spriteram_select_w)
{
m_spriteram_select = state;
}
TILE_GET_INFO_MEMBER(sbasketb_state::get_bg_tile_info)
@ -128,12 +130,14 @@ void sbasketb_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sbasketb_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_bg_tilemap->set_scroll_cols(32);
save_item(NAME(m_spriteram_select));
}
void sbasketb_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
uint8_t *spriteram = m_spriteram;
int offs = (*m_spriteram_select & 0x01) * 0x100;
int offs = m_spriteram_select ? 0x100 : 0;
int i;
for (i = 0; i < 64; i++, offs += 4)

View File

@ -101,13 +101,10 @@ WRITE8_MEMBER(trackfld_state::trackfld_colorram_w)
m_bg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(trackfld_state::trackfld_flipscreen_w)
WRITE_LINE_MEMBER(trackfld_state::flipscreen_w)
{
if (flip_screen() != data)
{
flip_screen_set(data);
machine().tilemap().mark_all_dirty();
}
flip_screen_set(state);
machine().tilemap().mark_all_dirty();
}
WRITE8_MEMBER(trackfld_state::atlantol_gfxbank_w)