mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
trackfld.cpp, hyperspt.cpp, sbasketb.cpp: Add 74LS259 latches (nw)
This commit is contained in:
parent
ea72f25bd0
commit
74f152924b
@ -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;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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 */
|
||||
|
@ -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 )
|
||||
|
@ -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); };
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user