mirror of
https://github.com/holub/mame
synced 2025-10-07 17:27:06 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
68af4f9b5f
@ -220,8 +220,8 @@ protected:
|
|||||||
|
|
||||||
// inline helpers
|
// inline helpers
|
||||||
static inline bool page_changing(UINT16 base, int delta) { return ((base + delta) ^ base) & 0xff00; }
|
static inline bool page_changing(UINT16 base, int delta) { return ((base + delta) ^ base) & 0xff00; }
|
||||||
static inline UINT16 set_l(UINT16 base, UINT16 val) { return (base & 0xff00) | val; }
|
static inline UINT16 set_l(UINT16 base, UINT8 val) { return (base & 0xff00) | val; }
|
||||||
static inline UINT16 set_h(UINT16 base, UINT16 val) { return (base & 0x00ff) | (val << 8); }
|
static inline UINT16 set_h(UINT16 base, UINT8 val) { return (base & 0x00ff) | (val << 8); }
|
||||||
|
|
||||||
inline void dec_SP() { SP = set_l(SP, SP-1); }
|
inline void dec_SP() { SP = set_l(SP, SP-1); }
|
||||||
inline void inc_SP() { SP = set_l(SP, SP+1); }
|
inline void inc_SP() { SP = set_l(SP, SP+1); }
|
||||||
|
@ -142,7 +142,7 @@ void ucom4_cpu_device::device_start()
|
|||||||
state_add(UCOM4_ACC, "ACC", m_acc).formatstr("%01X");
|
state_add(UCOM4_ACC, "ACC", m_acc).formatstr("%01X");
|
||||||
|
|
||||||
state_add(STATE_GENPC, "curpc", m_pc).formatstr("%04X").noshow();
|
state_add(STATE_GENPC, "curpc", m_pc).formatstr("%04X").noshow();
|
||||||
// state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).formatstr("%4s").noshow();
|
state_add(STATE_GENFLAGS, "GENFLAGS", m_carry_f).formatstr("%4s").noshow(); // dummy
|
||||||
|
|
||||||
m_icountptr = &m_icount;
|
m_icountptr = &m_icount;
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
CPU_DISASSEMBLE(ucom4)
|
CPU_DISASSEMBLE(ucom4)
|
||||||
{
|
{
|
||||||
int pos = 0;
|
int pos = 1;//0;
|
||||||
// UINT8 op = oprom[pos++];
|
// UINT8 op = oprom[pos++];
|
||||||
// UINT8 instr = ucom4_mnemonic[op];
|
// UINT8 instr = ucom4_mnemonic[op];
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "flex_dsk.h"
|
#include "flex_dsk.h"
|
||||||
|
|
||||||
flex_format::flex_format() : wd177x_format(formats)
|
flex_format::flex_format()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,6 +26,11 @@ const char *flex_format::extensions() const
|
|||||||
return "dsk";
|
return "dsk";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool flex_format::supports_save() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
int flex_format::identify(io_generic *io, UINT32 form_factor)
|
int flex_format::identify(io_generic *io, UINT32 form_factor)
|
||||||
{
|
{
|
||||||
io_generic_read(io, &info, 256 * 2, sizeof(struct sysinfo_sector));
|
io_generic_read(io, &info, 256 * 2, sizeof(struct sysinfo_sector));
|
||||||
@ -97,7 +102,4 @@ bool flex_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty since geometry is determined from the disk image itself
|
|
||||||
const flex_format::format flex_format::formats[] = { {} };
|
|
||||||
|
|
||||||
const floppy_format_type FLOPPY_FLEX_FORMAT = &floppy_image_format_creator<flex_format>;
|
const floppy_format_type FLOPPY_FLEX_FORMAT = &floppy_image_format_creator<flex_format>;
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
#ifndef FLEX_DSK_H_
|
#ifndef FLEX_DSK_H_
|
||||||
#define FLEX_DSK_H_
|
#define FLEX_DSK_H_
|
||||||
|
|
||||||
#include "wd177x_dsk.h"
|
#include "flopimg.h"
|
||||||
|
|
||||||
class flex_format : public wd177x_format {
|
class flex_format : public floppy_image_format_t {
|
||||||
public:
|
public:
|
||||||
flex_format();
|
flex_format();
|
||||||
|
|
||||||
@ -18,6 +18,8 @@ public:
|
|||||||
virtual const char *extensions() const;
|
virtual const char *extensions() const;
|
||||||
virtual int identify(io_generic *io, UINT32 form_factor);
|
virtual int identify(io_generic *io, UINT32 form_factor);
|
||||||
virtual bool load(io_generic *io, UINT32 form_factor, floppy_image *image);
|
virtual bool load(io_generic *io, UINT32 form_factor, floppy_image *image);
|
||||||
|
virtual bool supports_save() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct sysinfo_sector
|
struct sysinfo_sector
|
||||||
{
|
{
|
||||||
@ -37,7 +39,6 @@ private:
|
|||||||
UINT8 last_sec;
|
UINT8 last_sec;
|
||||||
UINT8 unused2[216];
|
UINT8 unused2[216];
|
||||||
} info;
|
} info;
|
||||||
static const format formats[];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const floppy_format_type FLOPPY_FLEX_FORMAT;
|
extern const floppy_format_type FLOPPY_FLEX_FORMAT;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Toshiba T5182 die map, by Jonathan Gevaryahu AKA Lord Nightmare,
|
Toshiba T5182 die map, by Jonathan Gevaryahu AKA Lord Nightmare,
|
||||||
with assistance from Kevin Horton.
|
with assistance from Kevin Horton.
|
||||||
T5182 supplied by Tomasz 'Dox' Slanina
|
T5182 supplied by Tomasz 'Dox' Slanina which came from a Dark Mist PCB bought by Guru
|
||||||
|
|
||||||
Die Diagram:
|
Die Diagram:
|
||||||
|------------------------|
|
|------------------------|
|
||||||
@ -152,23 +152,15 @@ rom.
|
|||||||
const device_type T5182 = &device_creator<t5182_device>;
|
const device_type T5182 = &device_creator<t5182_device>;
|
||||||
|
|
||||||
t5182_device::t5182_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
t5182_device::t5182_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: device_t(mconfig, T5182, "T5182 MCU", tag, owner, clock, "toshiba_t5182", __FILE__),
|
: device_t(mconfig, T5182, "T5182 MCU", tag, owner, clock, "t5182", __FILE__),
|
||||||
m_t5182_sharedram(NULL),
|
m_ourcpu(*this, "t5182_z80"),
|
||||||
|
m_sharedram(*this, "sharedram"),
|
||||||
m_irqstate(0),
|
m_irqstate(0),
|
||||||
m_semaphore_main(0),
|
m_semaphore_main(0),
|
||||||
m_semaphore_snd(0)
|
m_semaphore_snd(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_config_complete - perform any
|
|
||||||
// operations now that the configuration is
|
|
||||||
// complete
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
void t5182_device::device_config_complete()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// device_start - device-specific startup
|
// device_start - device-specific startup
|
||||||
@ -176,24 +168,21 @@ void t5182_device::device_config_complete()
|
|||||||
|
|
||||||
void t5182_device::device_start()
|
void t5182_device::device_start()
|
||||||
{
|
{
|
||||||
m_t5182_sharedram = reinterpret_cast<UINT8 *>(machine().root_device().memshare("t5182_sharedram")->ptr());
|
m_setirq_cb = timer_alloc(SETIRQ_CB);
|
||||||
|
|
||||||
save_pointer(NAME(m_t5182_sharedram), sizeof(UINT8));
|
|
||||||
save_item(NAME(m_irqstate));
|
save_item(NAME(m_irqstate));
|
||||||
save_item(NAME(m_semaphore_main));
|
save_item(NAME(m_semaphore_main));
|
||||||
save_item(NAME(m_semaphore_snd));
|
save_item(NAME(m_semaphore_snd));
|
||||||
|
|
||||||
m_ourcpu = machine().device<cpu_device>("t5182_z80");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(t5182_device::sharedram_r)
|
READ8_MEMBER(t5182_device::sharedram_r)
|
||||||
{
|
{
|
||||||
return m_t5182_sharedram[offset];
|
return m_sharedram[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(t5182_device::sharedram_w)
|
WRITE8_MEMBER(t5182_device::sharedram_w)
|
||||||
{
|
{
|
||||||
m_t5182_sharedram[offset] = data;
|
m_sharedram[offset] = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
TIMER_CALLBACK_MEMBER( t5182_device::setirq_callback )
|
TIMER_CALLBACK_MEMBER( t5182_device::setirq_callback )
|
||||||
@ -230,29 +219,39 @@ TIMER_CALLBACK_MEMBER( t5182_device::setirq_callback )
|
|||||||
m_ourcpu->set_input_line(0,ASSERT_LINE);
|
m_ourcpu->set_input_line(0,ASSERT_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void t5182_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||||
|
{
|
||||||
|
switch (id)
|
||||||
|
{
|
||||||
|
case SETIRQ_CB:
|
||||||
|
setirq_callback(ptr, param);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert_always(FALSE, "Unknown id in t5182_device::device_timer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( t5182_device::sound_irq_w )
|
WRITE8_MEMBER( t5182_device::sound_irq_w )
|
||||||
{
|
{
|
||||||
space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(t5182_device::setirq_callback), this), CPU_ASSERT);
|
synchronize(SETIRQ_CB, CPU_ASSERT);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( t5182_device::ym2151_irq_ack_w )
|
WRITE8_MEMBER( t5182_device::ym2151_irq_ack_w )
|
||||||
{
|
{
|
||||||
space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(t5182_device::setirq_callback), this), YM2151_ACK);
|
synchronize(SETIRQ_CB, YM2151_ACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( t5182_device::cpu_irq_ack_w )
|
WRITE8_MEMBER( t5182_device::cpu_irq_ack_w )
|
||||||
{
|
{
|
||||||
space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(t5182_device::setirq_callback), this), CPU_CLEAR);
|
synchronize(SETIRQ_CB, CPU_CLEAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE_LINE_MEMBER(t5182_device::ym2151_irq_handler)
|
WRITE_LINE_MEMBER(t5182_device::ym2151_irq_handler)
|
||||||
{
|
{
|
||||||
if (state)
|
if (state)
|
||||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(t5182_device::setirq_callback), this), YM2151_ASSERT);
|
synchronize(SETIRQ_CB, YM2151_ASSERT);
|
||||||
else
|
else
|
||||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(t5182_device::setirq_callback), this), YM2151_CLEAR);
|
synchronize(SETIRQ_CB, YM2151_CLEAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(t5182_device::sharedram_semaphore_snd_r)
|
READ8_MEMBER(t5182_device::sharedram_semaphore_snd_r)
|
||||||
@ -285,17 +284,37 @@ READ8_MEMBER(t5182_device::sharedram_semaphore_main_r)
|
|||||||
return m_semaphore_main | (m_irqstate & 2);
|
return m_semaphore_main | (m_irqstate & 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ROM definition for the Toshiba T5182 Custom CPU internal program ROM
|
||||||
|
ROM_START( t5182 )
|
||||||
|
ROM_REGION( 0x2000, "cpu", 0 )
|
||||||
|
ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// MACHINE_CONFIG_FRAGMENT( t5182 )
|
// rom_region - return a pointer to the device's
|
||||||
|
// internal ROM region
|
||||||
|
//-------------------------------------------------
|
||||||
|
const rom_entry *t5182_device::device_rom_region() const
|
||||||
|
{
|
||||||
|
return ROM_NAME( t5182 );
|
||||||
|
}
|
||||||
|
|
||||||
|
INPUT_PORTS_START(t5182)
|
||||||
|
PORT_START("T5182_COIN")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(2)
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// input_ports - return a pointer to the implicit
|
||||||
|
// input ports description for this device
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
MACHINE_CONFIG_FRAGMENT( t5182 )
|
ioport_constructor t5182_device::device_input_ports() const
|
||||||
MCFG_CPU_ADD("t5182_z80", Z80, T5182_CLOCK)
|
{
|
||||||
MCFG_CPU_PROGRAM_MAP(t5182_map)
|
return INPUT_PORTS_NAME(t5182);
|
||||||
MCFG_CPU_IO_MAP(t5182_io)
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
|
||||||
|
|
||||||
|
|
||||||
// 4000-407F RAM shared with main CPU
|
// 4000-407F RAM shared with main CPU
|
||||||
// 4000 output queue length
|
// 4000 output queue length
|
||||||
@ -315,10 +334,10 @@ MACHINE_CONFIG_END
|
|||||||
// A0XX
|
// A0XX
|
||||||
// rest unused
|
// rest unused
|
||||||
ADDRESS_MAP_START( t5182_map, AS_PROGRAM, 8, t5182_device )
|
ADDRESS_MAP_START( t5182_map, AS_PROGRAM, 8, t5182_device )
|
||||||
AM_RANGE(0x0000, 0x1fff) AM_ROM // internal ROM
|
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("cpu", 0) // internal ROM
|
||||||
AM_RANGE(0x2000, 0x27ff) AM_RAM AM_MIRROR(0x1800) // internal RAM
|
AM_RANGE(0x2000, 0x27ff) AM_RAM AM_MIRROR(0x1800) // internal RAM
|
||||||
AM_RANGE(0x4000, 0x40ff) AM_RAM AM_MIRROR(0x3F00) AM_SHARE("t5182_sharedram") // 2016 with four 74ls245s, one each for main and t5182 address and data. pins 23, 22, 20, 19, 18 are all tied low so only 256 bytes are usable
|
AM_RANGE(0x4000, 0x40ff) AM_RAM AM_MIRROR(0x3F00) AM_SHARE("sharedram") // 2016 with four 74ls245s, one each for main and t5182 address and data. pins 23, 22, 20, 19, 18 are all tied low so only 256 bytes are usable
|
||||||
AM_RANGE(0x8000, 0xffff) AM_ROM // external ROM
|
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(":t5182_z80", 0) // external ROM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
@ -334,11 +353,33 @@ ADDRESS_MAP_END
|
|||||||
// 50 W test mode status flags (bit 0 = ROM test fail, bit 1 = RAM test fail, bit 2 = YM2151 IRQ not received)
|
// 50 W test mode status flags (bit 0 = ROM test fail, bit 1 = RAM test fail, bit 2 = YM2151 IRQ not received)
|
||||||
ADDRESS_MAP_START( t5182_io, AS_IO, 8, t5182_device )
|
ADDRESS_MAP_START( t5182_io, AS_IO, 8, t5182_device )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE(":ymsnd", ym2151_device, read, write)
|
||||||
AM_RANGE(0x10, 0x10) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_snd_acquire_w)
|
AM_RANGE(0x10, 0x10) AM_WRITE(sharedram_semaphore_snd_acquire_w)
|
||||||
AM_RANGE(0x11, 0x11) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_snd_release_w)
|
AM_RANGE(0x11, 0x11) AM_WRITE(sharedram_semaphore_snd_release_w)
|
||||||
AM_RANGE(0x12, 0x12) AM_DEVWRITE("t5182", t5182_device, ym2151_irq_ack_w)
|
AM_RANGE(0x12, 0x12) AM_WRITE(ym2151_irq_ack_w)
|
||||||
AM_RANGE(0x13, 0x13) AM_DEVWRITE("t5182", t5182_device, cpu_irq_ack_w)
|
AM_RANGE(0x13, 0x13) AM_WRITE(cpu_irq_ack_w)
|
||||||
AM_RANGE(0x20, 0x20) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_main_r)
|
AM_RANGE(0x20, 0x20) AM_READ(sharedram_semaphore_main_r)
|
||||||
AM_RANGE(0x30, 0x30) AM_READ_PORT(T5182COINPORT)
|
AM_RANGE(0x30, 0x30) AM_READ_PORT("T5182_COIN")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// MACHINE_CONFIG_FRAGMENT( t5182 )
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
MACHINE_CONFIG_FRAGMENT( t5182 )
|
||||||
|
MCFG_CPU_ADD("t5182_z80", Z80, T5182_CLOCK)
|
||||||
|
MCFG_CPU_PROGRAM_MAP(t5182_map)
|
||||||
|
MCFG_CPU_IO_MAP(t5182_io)
|
||||||
|
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// machine_config_additions - device-specific
|
||||||
|
// machine configurations
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
machine_config_constructor t5182_device::device_mconfig_additions() const
|
||||||
|
{
|
||||||
|
return MACHINE_CONFIG_NAME( t5182 );
|
||||||
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
#include "sound/2151intf.h"
|
#include "sound/2151intf.h"
|
||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
|
|
||||||
#define T5182COINPORT "T5182_COIN"
|
|
||||||
|
|
||||||
class t5182_device : public device_t
|
class t5182_device : public device_t
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -20,6 +18,11 @@ public:
|
|||||||
CPU_CLEAR
|
CPU_CLEAR
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SETIRQ_CB
|
||||||
|
};
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(sound_irq_w );
|
DECLARE_WRITE8_MEMBER(sound_irq_w );
|
||||||
DECLARE_READ8_MEMBER(sharedram_semaphore_snd_r);
|
DECLARE_READ8_MEMBER(sharedram_semaphore_snd_r);
|
||||||
DECLARE_WRITE8_MEMBER(sharedram_semaphore_main_acquire_w);
|
DECLARE_WRITE8_MEMBER(sharedram_semaphore_main_acquire_w);
|
||||||
@ -35,26 +38,21 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
|
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||||
|
virtual const rom_entry *device_rom_region() const;
|
||||||
|
virtual ioport_constructor device_input_ports() const;
|
||||||
|
virtual machine_config_constructor device_mconfig_additions() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// internal state
|
// internal state
|
||||||
cpu_device *m_ourcpu;
|
required_device<cpu_device> m_ourcpu;
|
||||||
UINT8 *m_t5182_sharedram;
|
required_shared_ptr<UINT8> m_sharedram;
|
||||||
int m_irqstate;
|
int m_irqstate;
|
||||||
int m_semaphore_main;
|
int m_semaphore_main;
|
||||||
int m_semaphore_snd;
|
int m_semaphore_snd;
|
||||||
|
emu_timer *m_setirq_cb;
|
||||||
TIMER_CALLBACK_MEMBER( setirq_callback );
|
TIMER_CALLBACK_MEMBER( setirq_callback );
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const device_type T5182;
|
extern const device_type T5182;
|
||||||
|
|
||||||
ADDRESS_MAP_EXTERN( t5182_map, 8 );
|
|
||||||
ADDRESS_MAP_EXTERN( t5182_io, 8 );
|
|
||||||
|
|
||||||
MACHINE_CONFIG_EXTERN( t5182 );
|
|
||||||
|
|
||||||
#define MCFG_T5182_ADD(_tag) \
|
|
||||||
MCFG_DEVICE_ADD(_tag, T5182, 0)
|
|
||||||
|
@ -482,5 +482,5 @@ ROM_START( buggychlt )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
GAMEL( 1984, buggychl, 0, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation", "Buggy Challenge", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS, layout_buggychl )
|
GAMEL( 1984, buggychl, 0, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation", "Buggy Challenge", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE, layout_buggychl )
|
||||||
GAMEL( 1984, buggychlt,buggychl, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation (Tecfri license)", "Buggy Challenge (Tecfri)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS, layout_buggychl )
|
GAMEL( 1984, buggychlt,buggychl, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation (Tecfri license)", "Buggy Challenge (Tecfri)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS| GAME_SUPPORTS_SAVE, layout_buggychl )
|
||||||
|
@ -28,7 +28,7 @@ TODO:
|
|||||||
#include "includes/darkmist.h"
|
#include "includes/darkmist.h"
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(darkmist_state::darkmist_hw_w)
|
WRITE8_MEMBER(darkmist_state::hw_w)
|
||||||
{
|
{
|
||||||
m_hw=data;
|
m_hw=data;
|
||||||
membank("bank1")->set_base(&memregion("maincpu")->base()[0x010000+((data&0x80)?0x4000:0)]);
|
membank("bank1")->set_base(&memregion("maincpu")->base()[0x010000+((data&0x80)?0x4000:0)]);
|
||||||
@ -40,7 +40,7 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, darkmist_state )
|
|||||||
AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1")
|
AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1")
|
||||||
AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2")
|
AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2")
|
||||||
AM_RANGE(0xc803, 0xc803) AM_READ_PORT("START")
|
AM_RANGE(0xc803, 0xc803) AM_READ_PORT("START")
|
||||||
AM_RANGE(0xc804, 0xc804) AM_WRITE(darkmist_hw_w)
|
AM_RANGE(0xc804, 0xc804) AM_WRITE(hw_w)
|
||||||
AM_RANGE(0xc805, 0xc805) AM_WRITEONLY AM_SHARE("spritebank")
|
AM_RANGE(0xc805, 0xc805) AM_WRITEONLY AM_SHARE("spritebank")
|
||||||
AM_RANGE(0xc806, 0xc806) AM_READ_PORT("DSW1")
|
AM_RANGE(0xc806, 0xc806) AM_READ_PORT("DSW1")
|
||||||
AM_RANGE(0xc807, 0xc807) AM_READ_PORT("DSW2")
|
AM_RANGE(0xc807, 0xc807) AM_READ_PORT("DSW2")
|
||||||
@ -173,10 +173,6 @@ static INPUT_PORTS_START( darkmist )
|
|||||||
PORT_DIPSETTING( 0x80, DEF_STR( No ) )
|
PORT_DIPSETTING( 0x80, DEF_STR( No ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
|
||||||
|
|
||||||
PORT_START(T5182COINPORT)
|
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2)
|
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(2)
|
|
||||||
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static const gfx_layout charlayout =
|
static const gfx_layout charlayout =
|
||||||
@ -213,7 +209,7 @@ static GFXDECODE_START( darkmist )
|
|||||||
GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0, 16*4 )
|
GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0, 16*4 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::darkmist_scanline)
|
TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::scanline)
|
||||||
{
|
{
|
||||||
int scanline = param;
|
int scanline = param;
|
||||||
|
|
||||||
@ -230,10 +226,10 @@ static MACHINE_CONFIG_START( darkmist, darkmist_state )
|
|||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */
|
MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */
|
||||||
MCFG_CPU_PROGRAM_MAP(memmap)
|
MCFG_CPU_PROGRAM_MAP(memmap)
|
||||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkmist_state, darkmist_scanline, "screen", 0, 1)
|
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkmist_state, scanline, "screen", 0, 1)
|
||||||
|
|
||||||
MCFG_T5182_ADD("t5182")
|
MCFG_DEVICE_ADD("t5182", T5182, 0)
|
||||||
MCFG_FRAGMENT_ADD(t5182)
|
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -241,7 +237,7 @@ static MACHINE_CONFIG_START( darkmist, darkmist_state )
|
|||||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||||
MCFG_SCREEN_SIZE(256, 256)
|
MCFG_SCREEN_SIZE(256, 256)
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
|
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(darkmist_state, screen_update_darkmist)
|
MCFG_SCREEN_UPDATE_DRIVER(darkmist_state, screen_update)
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", darkmist)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", darkmist)
|
||||||
@ -266,9 +262,8 @@ ROM_START( darkmist )
|
|||||||
|
|
||||||
ROM_LOAD( "dm_16.rom", 0x10000, 0x08000, CRC(094579d9) SHA1(2449bc9ba38396912ee9b72dd870ea9fcff95776) )
|
ROM_LOAD( "dm_16.rom", 0x10000, 0x08000, CRC(094579d9) SHA1(2449bc9ba38396912ee9b72dd870ea9fcff95776) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 module */
|
ROM_REGION( 0x8000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
|
||||||
ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
|
ROM_LOAD( "dm_17.rom", 0x0000, 0x8000, CRC(7723dcae) SHA1(a0c69e7a7b6fd74f7ed6b9c6419aed94aabcd4b0) )
|
||||||
ROM_LOAD( "dm_17.rom", 0x8000, 0x8000, CRC(7723dcae) SHA1(a0c69e7a7b6fd74f7ed6b9c6419aed94aabcd4b0) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x4000, "gfx1", 0 )
|
ROM_REGION( 0x4000, "gfx1", 0 )
|
||||||
ROM_LOAD( "dm_13.rom", 0x00000, 0x02000, CRC(38bb38d9) SHA1(d751990166dd3d503c5de7667679b96210061cd1) )
|
ROM_LOAD( "dm_13.rom", 0x00000, 0x02000, CRC(38bb38d9) SHA1(d751990166dd3d503c5de7667679b96210061cd1) )
|
||||||
@ -395,7 +390,7 @@ void darkmist_state::decrypt_snd()
|
|||||||
int i;
|
int i;
|
||||||
UINT8 *ROM = memregion("t5182_z80")->base();
|
UINT8 *ROM = memregion("t5182_z80")->base();
|
||||||
|
|
||||||
for(i=0x8000;i<0x10000;i++)
|
for(i=0x0000;i<0x2000;i++)
|
||||||
ROM[i] = BITSWAP8(ROM[i], 7,1,2,3,4,5,6,0);
|
ROM[i] = BITSWAP8(ROM[i], 7,1,2,3,4,5,6,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,4 +468,4 @@ DRIVER_INIT_MEMBER(darkmist_state,darkmist)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GAME( 1986, darkmist, 0, darkmist, darkmist, darkmist_state, darkmist, ROT270, "Taito Corporation", "The Lost Castle In Darkmist", GAME_IMPERFECT_GRAPHICS|GAME_NO_COCKTAIL )
|
GAME( 1986, darkmist, 0, darkmist, darkmist, darkmist_state, darkmist, ROT270, "Taito Corporation", "The Lost Castle In Darkmist", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
|
||||||
|
@ -43,7 +43,7 @@ YM2151:
|
|||||||
static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, mustache_state )
|
static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, mustache_state )
|
||||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||||
AM_RANGE(0x8000, 0xbfff) AM_ROM
|
AM_RANGE(0x8000, 0xbfff) AM_ROM
|
||||||
AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(mustache_videoram_w) AM_SHARE("videoram")
|
AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
|
||||||
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("t5182", t5182_device, sound_irq_w)
|
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("t5182", t5182_device, sound_irq_w)
|
||||||
AM_RANGE(0xd001, 0xd001) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r)
|
AM_RANGE(0xd001, 0xd001) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r)
|
||||||
AM_RANGE(0xd002, 0xd002) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w)
|
AM_RANGE(0xd002, 0xd002) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w)
|
||||||
@ -54,8 +54,8 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, mustache_state )
|
|||||||
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("START")
|
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("START")
|
||||||
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("DSWA")
|
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("DSWA")
|
||||||
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("DSWB")
|
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("DSWB")
|
||||||
AM_RANGE(0xd806, 0xd806) AM_WRITE(mustache_scroll_w)
|
AM_RANGE(0xd806, 0xd806) AM_WRITE(scroll_w)
|
||||||
AM_RANGE(0xd807, 0xd807) AM_WRITE(mustache_video_control_w)
|
AM_RANGE(0xd807, 0xd807) AM_WRITE(video_control_w)
|
||||||
AM_RANGE(0xe800, 0xefff) AM_WRITEONLY AM_SHARE("spriteram")
|
AM_RANGE(0xe800, 0xefff) AM_WRITEONLY AM_SHARE("spriteram")
|
||||||
AM_RANGE(0xf000, 0xffff) AM_RAM
|
AM_RANGE(0xf000, 0xffff) AM_RAM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -123,9 +123,6 @@ static INPUT_PORTS_START( mustache )
|
|||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
// There is an 8th dipswitch here, which controls screen flip, but the operator sheet implies it does it via hardware, i.e. not readable by cpu. May need further investigation.
|
// There is an 8th dipswitch here, which controls screen flip, but the operator sheet implies it does it via hardware, i.e. not readable by cpu. May need further investigation.
|
||||||
|
|
||||||
PORT_START(T5182COINPORT)
|
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2)
|
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(2)
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
@ -155,7 +152,7 @@ static GFXDECODE_START( mustache )
|
|||||||
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x80, 8 )
|
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x80, 8 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(mustache_state::mustache_scanline)
|
TIMER_DEVICE_CALLBACK_MEMBER(mustache_state::scanline)
|
||||||
{
|
{
|
||||||
int scanline = param;
|
int scanline = param;
|
||||||
|
|
||||||
@ -173,10 +170,10 @@ static MACHINE_CONFIG_START( mustache, mustache_state )
|
|||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
|
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
|
||||||
MCFG_CPU_PROGRAM_MAP(memmap)
|
MCFG_CPU_PROGRAM_MAP(memmap)
|
||||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mustache_state, mustache_scanline, "screen", 0, 1)
|
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mustache_state, scanline, "screen", 0, 1)
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("t5182", T5182, 0)
|
||||||
|
|
||||||
MCFG_T5182_ADD("t5182")
|
|
||||||
MCFG_FRAGMENT_ADD(t5182)
|
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -184,7 +181,7 @@ static MACHINE_CONFIG_START( mustache, mustache_state )
|
|||||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||||
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0, 31*8-1)
|
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0, 31*8-1)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(mustache_state, screen_update_mustache)
|
MCFG_SCREEN_UPDATE_DRIVER(mustache_state, screen_update)
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mustache)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mustache)
|
||||||
@ -207,9 +204,8 @@ ROM_START( mustache )
|
|||||||
ROM_LOAD( "mustache.h18", 0x0000, 0x8000, CRC(123bd9b8) SHA1(33a7cba5c3a54b0b1a15dd1e24d298b6f7274321) )
|
ROM_LOAD( "mustache.h18", 0x0000, 0x8000, CRC(123bd9b8) SHA1(33a7cba5c3a54b0b1a15dd1e24d298b6f7274321) )
|
||||||
ROM_LOAD( "mustache.h16", 0x8000, 0x4000, CRC(62552beb) SHA1(ee10991d7de0596608fa1db48805781cbfbbdb9f) )
|
ROM_LOAD( "mustache.h16", 0x8000, 0x4000, CRC(62552beb) SHA1(ee10991d7de0596608fa1db48805781cbfbbdb9f) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 module */
|
ROM_REGION( 0x8000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
|
||||||
ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
|
ROM_LOAD( "mustache.e5", 0x0000, 0x8000, CRC(efbb1943) SHA1(3320e9eaeb776d09ed63f7dedc79e720674e6718) )
|
||||||
ROM_LOAD( "mustache.e5", 0x8000, 0x8000, CRC(efbb1943) SHA1(3320e9eaeb776d09ed63f7dedc79e720674e6718) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x0c000, "gfx1",0) /* BG tiles */
|
ROM_REGION( 0x0c000, "gfx1",0) /* BG tiles */
|
||||||
ROM_LOAD( "mustache.a13", 0x0000, 0x4000, CRC(9baee4a7) SHA1(31bcec838789462e67e54ebe7256db9fc4e51b69) )
|
ROM_LOAD( "mustache.a13", 0x0000, 0x4000, CRC(9baee4a7) SHA1(31bcec838789462e67e54ebe7256db9fc4e51b69) )
|
||||||
@ -278,4 +274,4 @@ DRIVER_INIT_MEMBER(mustache_state,mustache)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GAME( 1987, mustache, 0, mustache, mustache, mustache_state, mustache, ROT90, "Seibu Kaihatsu (March license)", "Mustache Boy", 0 )
|
GAME( 1987, mustache, 0, mustache, mustache, mustache_state, mustache, ROT90, "Seibu Kaihatsu (March license)", "Mustache Boy", GAME_SUPPORTS_SAVE )
|
||||||
|
@ -69,58 +69,58 @@ class panicr_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
panicr_state(const machine_config &mconfig, device_type type, const char *tag)
|
panicr_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_mainram(*this, "mainram"),
|
|
||||||
m_spriteram(*this, "spriteram"),
|
|
||||||
m_textram(*this, "textram"),
|
|
||||||
m_spritebank(*this, "spritebank"),
|
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_t5182(*this, "t5182"),
|
m_t5182(*this, "t5182"),
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
m_screen(*this, "screen"),
|
m_screen(*this, "screen"),
|
||||||
m_palette(*this, "palette") { }
|
m_palette(*this, "palette"),
|
||||||
|
m_mainram(*this, "mainram"),
|
||||||
required_shared_ptr<UINT8> m_mainram;
|
m_spriteram(*this, "spriteram"),
|
||||||
required_shared_ptr<UINT8> m_spriteram;
|
m_textram(*this, "textram"),
|
||||||
required_shared_ptr<UINT8> m_textram;
|
m_spritebank(*this, "spritebank") { }
|
||||||
required_shared_ptr<UINT8> m_spritebank;
|
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<t5182_device> m_t5182;
|
required_device<t5182_device> m_t5182;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
|
|
||||||
|
required_shared_ptr<UINT8> m_mainram;
|
||||||
|
required_shared_ptr<UINT8> m_spriteram;
|
||||||
|
required_shared_ptr<UINT8> m_textram;
|
||||||
|
required_shared_ptr<UINT8> m_spritebank;
|
||||||
|
|
||||||
tilemap_t *m_bgtilemap;
|
tilemap_t *m_bgtilemap;
|
||||||
tilemap_t *m_infotilemap_2;
|
tilemap_t *m_infotilemap_2;
|
||||||
|
|
||||||
tilemap_t *m_txttilemap;
|
tilemap_t *m_txttilemap;
|
||||||
int m_scrollx;
|
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(panicr_collision_r);
|
int m_scrollx;
|
||||||
DECLARE_WRITE8_MEMBER(panicr_scrollx_lo_w);
|
bitmap_ind16 *m_temprender;
|
||||||
DECLARE_WRITE8_MEMBER(panicr_scrollx_hi_w);
|
bitmap_ind16 *m_tempbitmap_1;
|
||||||
DECLARE_WRITE8_MEMBER(panicr_output_w);
|
rectangle m_tempbitmap_clip;
|
||||||
|
|
||||||
|
DECLARE_READ8_MEMBER(collision_r);
|
||||||
|
DECLARE_WRITE8_MEMBER(scrollx_lo_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(scrollx_hi_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(output_w);
|
||||||
DECLARE_READ8_MEMBER(t5182shared_r);
|
DECLARE_READ8_MEMBER(t5182shared_r);
|
||||||
DECLARE_WRITE8_MEMBER(t5182shared_w);
|
DECLARE_WRITE8_MEMBER(t5182shared_w);
|
||||||
|
|
||||||
DECLARE_DRIVER_INIT(panicr);
|
|
||||||
TILE_GET_INFO_MEMBER(get_bgtile_info);
|
TILE_GET_INFO_MEMBER(get_bgtile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_infotile_info);
|
TILE_GET_INFO_MEMBER(get_infotile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_infotile_info_2);
|
TILE_GET_INFO_MEMBER(get_infotile_info_2);
|
||||||
TILE_GET_INFO_MEMBER(get_infotile_info_3);
|
TILE_GET_INFO_MEMBER(get_infotile_info_3);
|
||||||
TILE_GET_INFO_MEMBER(get_infotile_info_4);
|
TILE_GET_INFO_MEMBER(get_infotile_info_4);
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(get_txttile_info);
|
TILE_GET_INFO_MEMBER(get_txttile_info);
|
||||||
|
|
||||||
|
DECLARE_DRIVER_INIT(panicr);
|
||||||
virtual void video_start();
|
virtual void video_start();
|
||||||
DECLARE_PALETTE_INIT(panicr);
|
DECLARE_PALETTE_INIT(panicr);
|
||||||
UINT32 screen_update_panicr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(panicr_scanline);
|
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect );
|
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect );
|
||||||
|
|
||||||
bitmap_ind16 *m_temprender;
|
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
|
||||||
|
|
||||||
bitmap_ind16 *m_tempbitmap_1;
|
|
||||||
rectangle m_tempbitmap_clip;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -243,11 +243,12 @@ void panicr_state::video_start()
|
|||||||
|
|
||||||
m_txttilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(panicr_state::get_txttile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 );
|
m_txttilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(panicr_state::get_txttile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 );
|
||||||
m_txttilemap->configure_groups(*m_gfxdecode->gfx(0), 0);
|
m_txttilemap->configure_groups(*m_gfxdecode->gfx(0), 0);
|
||||||
|
|
||||||
|
save_item(NAME(m_scrollx));
|
||||||
}
|
}
|
||||||
|
|
||||||
void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect )
|
void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect )
|
||||||
{
|
{
|
||||||
UINT8 *spriteram = m_spriteram;
|
|
||||||
int offs,flipx,flipy,x,y,color,sprite;
|
int offs,flipx,flipy,x,y,color,sprite;
|
||||||
|
|
||||||
|
|
||||||
@ -256,24 +257,24 @@ void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect )
|
|||||||
for (offs = m_spriteram.bytes() - 16; offs>=0; offs-=16)
|
for (offs = m_spriteram.bytes() - 16; offs>=0; offs-=16)
|
||||||
{
|
{
|
||||||
flipx = 0;
|
flipx = 0;
|
||||||
flipy = spriteram[offs+1] & 0x80;
|
flipy = m_spriteram[offs+1] & 0x80;
|
||||||
y = spriteram[offs+2];
|
y = m_spriteram[offs+2];
|
||||||
x = spriteram[offs+3];
|
x = m_spriteram[offs+3];
|
||||||
if (spriteram[offs+1] & 0x40) x -= 0x100;
|
if (m_spriteram[offs+1] & 0x40) x -= 0x100;
|
||||||
|
|
||||||
if (spriteram[offs+1] & 0x20)
|
if (m_spriteram[offs+1] & 0x20)
|
||||||
{
|
{
|
||||||
// often set
|
// often set
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spriteram[offs+1] & 0x10)
|
if (m_spriteram[offs+1] & 0x10)
|
||||||
{
|
{
|
||||||
popmessage("(spriteram[offs+1] & 0x10) %02x\n", (spriteram[offs+1] & 0x10));
|
popmessage("(spriteram[offs+1] & 0x10) %02x\n", (m_spriteram[offs+1] & 0x10));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
color = spriteram[offs+1] & 0x0f;
|
color = m_spriteram[offs+1] & 0x0f;
|
||||||
sprite = spriteram[offs+0] | (*m_spritebank << 8);
|
sprite = m_spriteram[offs+0] | (*m_spritebank << 8);
|
||||||
|
|
||||||
m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
|
m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
|
||||||
sprite,
|
sprite,
|
||||||
@ -282,7 +283,7 @@ void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 panicr_state::screen_update_panicr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
UINT32 panicr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
m_bgtilemap->set_scrollx(0, m_scrollx);
|
m_bgtilemap->set_scrollx(0, m_scrollx);
|
||||||
m_bgtilemap->draw(screen, *m_temprender, m_tempbitmap_clip, 0,0);
|
m_bgtilemap->draw(screen, *m_temprender, m_tempbitmap_clip, 0,0);
|
||||||
@ -341,7 +342,7 @@ UINT32 panicr_state::screen_update_panicr(screen_device &screen, bitmap_ind16 &b
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
READ8_MEMBER(panicr_state::panicr_collision_r)
|
READ8_MEMBER(panicr_state::collision_r)
|
||||||
{
|
{
|
||||||
// re-render the collision data here
|
// re-render the collision data here
|
||||||
// collisions are based on 2 bits from the tile data, relative to a page of tiles
|
// collisions are based on 2 bits from the tile data, relative to a page of tiles
|
||||||
@ -384,25 +385,25 @@ READ8_MEMBER(panicr_state::panicr_collision_r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(panicr_state::panicr_scrollx_lo_w)
|
WRITE8_MEMBER(panicr_state::scrollx_lo_w)
|
||||||
{
|
{
|
||||||
logerror("panicr_scrollx_lo_w %02x\n", data);
|
logerror("scrollx_lo_w %02x\n", data);
|
||||||
m_scrollx = (m_scrollx & 0xff00) | (data << 1 & 0xfe) | (data >> 7 & 0x01);
|
m_scrollx = (m_scrollx & 0xff00) | (data << 1 & 0xfe) | (data >> 7 & 0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(panicr_state::panicr_scrollx_hi_w)
|
WRITE8_MEMBER(panicr_state::scrollx_hi_w)
|
||||||
{
|
{
|
||||||
logerror("panicr_scrollx_hi_w %02x\n", data);
|
logerror("scrollx_hi_w %02x\n", data);
|
||||||
m_scrollx = (m_scrollx & 0xff) | ((data &0xf0) << 4) | ((data & 0x0f) << 12);
|
m_scrollx = (m_scrollx & 0xff) | ((data &0xf0) << 4) | ((data & 0x0f) << 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(panicr_state::panicr_output_w)
|
WRITE8_MEMBER(panicr_state::output_w)
|
||||||
{
|
{
|
||||||
// d6, d7: play counter? (it only triggers on 1st coin)
|
// d6, d7: play counter? (it only triggers on 1st coin)
|
||||||
coin_counter_w(machine(), 0, (data & 0x40) ? 1 : 0);
|
coin_counter_w(machine(), 0, (data & 0x40) ? 1 : 0);
|
||||||
coin_counter_w(machine(), 1, (data & 0x80) ? 1 : 0);
|
coin_counter_w(machine(), 1, (data & 0x80) ? 1 : 0);
|
||||||
|
|
||||||
logerror("panicr_output_w %02x\n", data);
|
logerror("output_w %02x\n", data);
|
||||||
|
|
||||||
// other bits: ?
|
// other bits: ?
|
||||||
}
|
}
|
||||||
@ -426,7 +427,7 @@ static ADDRESS_MAP_START( panicr_map, AS_PROGRAM, 8, panicr_state )
|
|||||||
AM_RANGE(0x00000, 0x01fff) AM_RAM AM_SHARE("mainram")
|
AM_RANGE(0x00000, 0x01fff) AM_RAM AM_SHARE("mainram")
|
||||||
AM_RANGE(0x02000, 0x03cff) AM_RAM AM_SHARE("spriteram") // how big is sprite ram, some places definitely have sprites at 3000+
|
AM_RANGE(0x02000, 0x03cff) AM_RAM AM_SHARE("spriteram") // how big is sprite ram, some places definitely have sprites at 3000+
|
||||||
AM_RANGE(0x03d00, 0x03fff) AM_RAM
|
AM_RANGE(0x03d00, 0x03fff) AM_RAM
|
||||||
AM_RANGE(0x08000, 0x0bfff) AM_READ(panicr_collision_r)
|
AM_RANGE(0x08000, 0x0bfff) AM_READ(collision_r)
|
||||||
AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_SHARE("textram")
|
AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_SHARE("textram")
|
||||||
AM_RANGE(0x0d000, 0x0d000) AM_DEVWRITE("t5182", t5182_device, sound_irq_w)
|
AM_RANGE(0x0d000, 0x0d000) AM_DEVWRITE("t5182", t5182_device, sound_irq_w)
|
||||||
AM_RANGE(0x0d002, 0x0d002) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w)
|
AM_RANGE(0x0d002, 0x0d002) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w)
|
||||||
@ -438,9 +439,9 @@ static ADDRESS_MAP_START( panicr_map, AS_PROGRAM, 8, panicr_state )
|
|||||||
AM_RANGE(0x0d404, 0x0d404) AM_READ_PORT("START")
|
AM_RANGE(0x0d404, 0x0d404) AM_READ_PORT("START")
|
||||||
AM_RANGE(0x0d406, 0x0d406) AM_READ_PORT("DSW1")
|
AM_RANGE(0x0d406, 0x0d406) AM_READ_PORT("DSW1")
|
||||||
AM_RANGE(0x0d407, 0x0d407) AM_READ_PORT("DSW2")
|
AM_RANGE(0x0d407, 0x0d407) AM_READ_PORT("DSW2")
|
||||||
AM_RANGE(0x0d802, 0x0d802) AM_WRITE(panicr_scrollx_hi_w)
|
AM_RANGE(0x0d802, 0x0d802) AM_WRITE(scrollx_hi_w)
|
||||||
AM_RANGE(0x0d804, 0x0d804) AM_WRITE(panicr_scrollx_lo_w)
|
AM_RANGE(0x0d804, 0x0d804) AM_WRITE(scrollx_lo_w)
|
||||||
AM_RANGE(0x0d80a, 0x0d80a) AM_WRITE(panicr_output_w)
|
AM_RANGE(0x0d80a, 0x0d80a) AM_WRITE(output_w)
|
||||||
AM_RANGE(0x0d80c, 0x0d80c) AM_WRITEONLY AM_SHARE("spritebank")
|
AM_RANGE(0x0d80c, 0x0d80c) AM_WRITEONLY AM_SHARE("spritebank")
|
||||||
AM_RANGE(0x0d818, 0x0d818) AM_WRITENOP // watchdog?
|
AM_RANGE(0x0d818, 0x0d818) AM_WRITENOP // watchdog?
|
||||||
AM_RANGE(0xf0000, 0xfffff) AM_ROM
|
AM_RANGE(0xf0000, 0xfffff) AM_ROM
|
||||||
@ -519,9 +520,6 @@ static INPUT_PORTS_START( panicr )
|
|||||||
PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
|
PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
|
||||||
|
|
||||||
PORT_START(T5182COINPORT)
|
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2)
|
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(2)
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
@ -594,7 +592,7 @@ static GFXDECODE_START( panicr )
|
|||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::panicr_scanline)
|
TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::scanline)
|
||||||
{
|
{
|
||||||
int scanline = param;
|
int scanline = param;
|
||||||
|
|
||||||
@ -608,10 +606,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::panicr_scanline)
|
|||||||
static MACHINE_CONFIG_START( panicr, panicr_state )
|
static MACHINE_CONFIG_START( panicr, panicr_state )
|
||||||
MCFG_CPU_ADD("maincpu", V20,MASTER_CLOCK/2) /* Sony 8623h9 CXQ70116D-8 (V20 compatible) */
|
MCFG_CPU_ADD("maincpu", V20,MASTER_CLOCK/2) /* Sony 8623h9 CXQ70116D-8 (V20 compatible) */
|
||||||
MCFG_CPU_PROGRAM_MAP(panicr_map)
|
MCFG_CPU_PROGRAM_MAP(panicr_map)
|
||||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", panicr_state, panicr_scanline, "screen", 0, 1)
|
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", panicr_state, scanline, "screen", 0, 1)
|
||||||
|
|
||||||
MCFG_T5182_ADD("t5182")
|
MCFG_DEVICE_ADD("t5182", T5182, 0)
|
||||||
MCFG_FRAGMENT_ADD(t5182)
|
|
||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_REFRESH_RATE(60)
|
MCFG_SCREEN_REFRESH_RATE(60)
|
||||||
@ -619,7 +617,7 @@ static MACHINE_CONFIG_START( panicr, panicr_state )
|
|||||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||||
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
|
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(panicr_state, screen_update_panicr)
|
MCFG_SCREEN_UPDATE_DRIVER(panicr_state, screen_update)
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", panicr)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", panicr)
|
||||||
@ -643,9 +641,8 @@ ROM_START( panicr )
|
|||||||
ROM_LOAD16_BYTE("2.19m", 0x0f0000, 0x08000, CRC(3d48b0b5) SHA1(a6e8b38971a8964af463c16f32bb7dbd301dd314) )
|
ROM_LOAD16_BYTE("2.19m", 0x0f0000, 0x08000, CRC(3d48b0b5) SHA1(a6e8b38971a8964af463c16f32bb7dbd301dd314) )
|
||||||
ROM_LOAD16_BYTE("1.19n", 0x0f0001, 0x08000, CRC(674131b9) SHA1(63499cd5ad39e79e70f3ba7060680f0aa133f095) )
|
ROM_LOAD16_BYTE("1.19n", 0x0f0001, 0x08000, CRC(674131b9) SHA1(63499cd5ad39e79e70f3ba7060680f0aa133f095) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 module */
|
ROM_REGION( 0x8000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
|
||||||
ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
|
ROM_LOAD( "22d.bin", 0x0000, 0x8000, CRC(eb1a46e1) SHA1(278859ae4bca9f421247e646d789fa1206dcd8fc) )
|
||||||
ROM_LOAD( "22d.bin", 0x8000, 0x8000, CRC(eb1a46e1) SHA1(278859ae4bca9f421247e646d789fa1206dcd8fc) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||||
ROM_LOAD( "13f.bin", 0x000000, 0x2000, CRC(4e6b3c04) SHA1(f388969d5d822df0eaa4d8300cbf9cee47468360) )
|
ROM_LOAD( "13f.bin", 0x000000, 0x2000, CRC(4e6b3c04) SHA1(f388969d5d822df0eaa4d8300cbf9cee47468360) )
|
||||||
@ -682,9 +679,8 @@ ROM_START( panicrg ) /* Distributed by TV-Tuning Videospiele GMBH */
|
|||||||
ROM_LOAD16_BYTE("2g.19m", 0x0f0000, 0x08000, CRC(cf759403) SHA1(1a0911c943ecc752e46873c9a5da981745f7562d) )
|
ROM_LOAD16_BYTE("2g.19m", 0x0f0000, 0x08000, CRC(cf759403) SHA1(1a0911c943ecc752e46873c9a5da981745f7562d) )
|
||||||
ROM_LOAD16_BYTE("1g.19n", 0x0f0001, 0x08000, CRC(06877f9b) SHA1(8b92209d6422ff2b1f3cb66bd39a3ff84e399eec) )
|
ROM_LOAD16_BYTE("1g.19n", 0x0f0001, 0x08000, CRC(06877f9b) SHA1(8b92209d6422ff2b1f3cb66bd39a3ff84e399eec) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 module */
|
ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
|
||||||
ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
|
ROM_LOAD( "22d.bin", 0x0000, 0x8000, CRC(eb1a46e1) SHA1(278859ae4bca9f421247e646d789fa1206dcd8fc) )
|
||||||
ROM_LOAD( "22d.bin", 0x8000, 0x8000, CRC(eb1a46e1) SHA1(278859ae4bca9f421247e646d789fa1206dcd8fc) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||||
ROM_LOAD( "13f.bin", 0x000000, 0x2000, CRC(4e6b3c04) SHA1(f388969d5d822df0eaa4d8300cbf9cee47468360) )
|
ROM_LOAD( "13f.bin", 0x000000, 0x2000, CRC(4e6b3c04) SHA1(f388969d5d822df0eaa4d8300cbf9cee47468360) )
|
||||||
@ -832,5 +828,5 @@ DRIVER_INIT_MEMBER(panicr_state,panicr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GAME( 1986, panicr, 0, panicr, panicr, panicr_state, panicr, ROT270, "Seibu Kaihatsu (Taito license)", "Panic Road (Japan)", GAME_IMPERFECT_GRAPHICS )
|
GAME( 1986, panicr, 0, panicr, panicr, panicr_state, panicr, ROT270, "Seibu Kaihatsu (Taito license)", "Panic Road (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
|
||||||
GAME( 1986, panicrg, panicr, panicr, panicr, panicr_state, panicr, ROT270, "Seibu Kaihatsu (Tuning license)", "Panic Road (Germany)", GAME_IMPERFECT_GRAPHICS )
|
GAME( 1986, panicrg, panicr, panicr, panicr, panicr_state, panicr, ROT270, "Seibu Kaihatsu (Tuning license)", "Panic Road (Germany)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
|
||||||
|
@ -5,15 +5,20 @@ class darkmist_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
darkmist_state(const machine_config &mconfig, device_type type, const char *tag)
|
darkmist_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_t5182(*this, "t5182"),
|
||||||
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
|
m_palette(*this, "palette"),
|
||||||
m_spritebank(*this, "spritebank"),
|
m_spritebank(*this, "spritebank"),
|
||||||
m_scroll(*this, "scroll"),
|
m_scroll(*this, "scroll"),
|
||||||
m_videoram(*this, "videoram"),
|
m_videoram(*this, "videoram"),
|
||||||
m_workram(*this, "workram"),
|
m_workram(*this, "workram"),
|
||||||
m_spriteram(*this, "spriteram"),
|
m_spriteram(*this, "spriteram") { }
|
||||||
m_maincpu(*this, "maincpu"),
|
|
||||||
m_t5182(*this, "t5182"),
|
required_device<cpu_device> m_maincpu;
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
required_device<t5182_device> m_t5182;
|
||||||
m_palette(*this, "palette") { }
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
|
required_device<palette_device> m_palette;
|
||||||
|
|
||||||
required_shared_ptr<UINT8> m_spritebank;
|
required_shared_ptr<UINT8> m_spritebank;
|
||||||
required_shared_ptr<UINT8> m_scroll;
|
required_shared_ptr<UINT8> m_scroll;
|
||||||
@ -21,25 +26,24 @@ public:
|
|||||||
required_shared_ptr<UINT8> m_workram;
|
required_shared_ptr<UINT8> m_workram;
|
||||||
required_shared_ptr<UINT8> m_spriteram;
|
required_shared_ptr<UINT8> m_spriteram;
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
|
||||||
required_device<t5182_device> m_t5182;
|
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
|
||||||
required_device<palette_device> m_palette;
|
|
||||||
|
|
||||||
int m_hw;
|
int m_hw;
|
||||||
tilemap_t *m_bgtilemap;
|
tilemap_t *m_bgtilemap;
|
||||||
tilemap_t *m_fgtilemap;
|
tilemap_t *m_fgtilemap;
|
||||||
tilemap_t *m_txtilemap;
|
tilemap_t *m_txtilemap;
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(darkmist_hw_w);
|
DECLARE_WRITE8_MEMBER(hw_w);
|
||||||
DECLARE_DRIVER_INIT(darkmist);
|
|
||||||
TILE_GET_INFO_MEMBER(get_bgtile_info);
|
TILE_GET_INFO_MEMBER(get_bgtile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_fgtile_info);
|
TILE_GET_INFO_MEMBER(get_fgtile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_txttile_info);
|
TILE_GET_INFO_MEMBER(get_txttile_info);
|
||||||
|
|
||||||
|
DECLARE_DRIVER_INIT(darkmist);
|
||||||
virtual void video_start();
|
virtual void video_start();
|
||||||
DECLARE_PALETTE_INIT(darkmist);
|
DECLARE_PALETTE_INIT(darkmist);
|
||||||
UINT32 screen_update_darkmist(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(darkmist_scanline);
|
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void decrypt_gfx();
|
void decrypt_gfx();
|
||||||
void decrypt_snd();
|
void decrypt_snd();
|
||||||
|
|
||||||
|
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
|
||||||
};
|
};
|
||||||
|
@ -5,16 +5,13 @@ class mustache_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
mustache_state(const machine_config &mconfig, device_type type, const char *tag)
|
mustache_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_videoram(*this, "videoram"),
|
|
||||||
m_spriteram(*this, "spriteram"),
|
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_cpu_decrypt(*this, "seibu_sound"),
|
m_cpu_decrypt(*this, "seibu_sound"),
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
m_screen(*this, "screen"),
|
m_screen(*this, "screen"),
|
||||||
m_palette(*this, "palette") { }
|
m_palette(*this, "palette"),
|
||||||
|
m_videoram(*this, "videoram"),
|
||||||
required_shared_ptr<UINT8> m_videoram;
|
m_spriteram(*this, "spriteram") { }
|
||||||
required_shared_ptr<UINT8> m_spriteram;
|
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<seibu_sound_device> m_cpu_decrypt;
|
required_device<seibu_sound_device> m_cpu_decrypt;
|
||||||
@ -22,16 +19,24 @@ public:
|
|||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
|
|
||||||
|
required_shared_ptr<UINT8> m_videoram;
|
||||||
|
required_shared_ptr<UINT8> m_spriteram;
|
||||||
|
|
||||||
tilemap_t *m_bg_tilemap;
|
tilemap_t *m_bg_tilemap;
|
||||||
int m_control_byte;
|
int m_control_byte;
|
||||||
DECLARE_WRITE8_MEMBER(mustache_videoram_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(mustache_video_control_w);
|
DECLARE_WRITE8_MEMBER(videoram_w);
|
||||||
DECLARE_WRITE8_MEMBER(mustache_scroll_w);
|
DECLARE_WRITE8_MEMBER(video_control_w);
|
||||||
DECLARE_DRIVER_INIT(mustache);
|
DECLARE_WRITE8_MEMBER(scroll_w);
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||||
|
|
||||||
|
DECLARE_DRIVER_INIT(mustache);
|
||||||
virtual void video_start();
|
virtual void video_start();
|
||||||
DECLARE_PALETTE_INIT(mustache);
|
DECLARE_PALETTE_INIT(mustache);
|
||||||
UINT32 screen_update_mustache(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(mustache_scanline);
|
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||||
|
|
||||||
|
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
|
||||||
};
|
};
|
||||||
|
@ -4,10 +4,8 @@
|
|||||||
|
|
||||||
PALETTE_INIT_MEMBER(buggychl_state, buggychl)
|
PALETTE_INIT_MEMBER(buggychl_state, buggychl)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
/* arbitrary blue shading for the sky, estimation */
|
/* arbitrary blue shading for the sky, estimation */
|
||||||
for (i = 0; i < 128; i++)
|
for (int i = 0; i < 128; i++)
|
||||||
palette.set_pen_color(i + 128, rgb_t(0, 240-i, 255));
|
palette.set_pen_color(i + 128, rgb_t(0, 240-i, 255));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,10 +73,8 @@ WRITE8_MEMBER(buggychl_state::buggychl_bg_scrollx_w)
|
|||||||
|
|
||||||
void buggychl_state::draw_sky( bitmap_ind16 &bitmap, const rectangle &cliprect )
|
void buggychl_state::draw_sky( bitmap_ind16 &bitmap, const rectangle &cliprect )
|
||||||
{
|
{
|
||||||
int x, y;
|
for (int y = 0; y < 256; y++)
|
||||||
|
for (int x = 0; x < 256; x++)
|
||||||
for (y = 0; y < 256; y++)
|
|
||||||
for (x = 0; x < 256; x++)
|
|
||||||
bitmap.pix16(y, x) = 128 + x / 2;
|
bitmap.pix16(y, x) = 128 + x / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,7 +152,6 @@ void buggychl_state::draw_fg( bitmap_ind16 &bitmap, const rectangle &cliprect )
|
|||||||
|
|
||||||
void buggychl_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
|
void buggychl_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
|
||||||
{
|
{
|
||||||
UINT8 *spriteram = m_spriteram;
|
|
||||||
int offs;
|
int offs;
|
||||||
const UINT8 *gfx;
|
const UINT8 *gfx;
|
||||||
|
|
||||||
@ -169,14 +164,14 @@ void buggychl_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
|
|||||||
const UINT8 *lookup;
|
const UINT8 *lookup;
|
||||||
const UINT8 *zoomx_rom, *zoomy_rom;
|
const UINT8 *zoomx_rom, *zoomy_rom;
|
||||||
|
|
||||||
sx = spriteram[offs + 3] - ((spriteram[offs + 2] & 0x80) << 1);
|
sx = m_spriteram[offs + 3] - ((m_spriteram[offs + 2] & 0x80) << 1);
|
||||||
sy = 256 - 64 - spriteram[offs] + ((spriteram[offs + 1] & 0x80) << 1);
|
sy = 256 - 64 - m_spriteram[offs] + ((m_spriteram[offs + 1] & 0x80) << 1);
|
||||||
flipy = spriteram[offs + 1] & 0x40;
|
flipy = m_spriteram[offs + 1] & 0x40;
|
||||||
zoom = spriteram[offs + 1] & 0x3f;
|
zoom = m_spriteram[offs + 1] & 0x3f;
|
||||||
zoomy_rom = gfx + (zoom << 6);
|
zoomy_rom = gfx + (zoom << 6);
|
||||||
zoomx_rom = gfx + 0x2000 + (zoom << 3);
|
zoomx_rom = gfx + 0x2000 + (zoom << 3);
|
||||||
|
|
||||||
lookup = m_sprite_lookup + ((spriteram[offs + 2] & 0x7f) << 6);
|
lookup = m_sprite_lookup + ((m_spriteram[offs + 2] & 0x7f) << 6);
|
||||||
|
|
||||||
for (y = 0; y < 64; y++)
|
for (y = 0; y < 64; y++)
|
||||||
{
|
{
|
||||||
|
@ -48,11 +48,10 @@ TILE_GET_INFO_MEMBER(darkmist_state::get_fgtile_info)
|
|||||||
|
|
||||||
TILE_GET_INFO_MEMBER(darkmist_state::get_txttile_info)
|
TILE_GET_INFO_MEMBER(darkmist_state::get_txttile_info)
|
||||||
{
|
{
|
||||||
UINT8 *videoram = m_videoram;
|
|
||||||
int code,attr,pal;
|
int code,attr,pal;
|
||||||
|
|
||||||
code=videoram[tile_index];
|
code=m_videoram[tile_index];
|
||||||
attr=videoram[tile_index+0x400];
|
attr=m_videoram[tile_index+0x400];
|
||||||
pal=(attr>>1);
|
pal=(attr>>1);
|
||||||
|
|
||||||
code+=(attr&1)<<8;
|
code+=(attr&1)<<8;
|
||||||
@ -102,12 +101,13 @@ void darkmist_state::video_start()
|
|||||||
m_txtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(darkmist_state::get_txttile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 );
|
m_txtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(darkmist_state::get_txttile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 );
|
||||||
m_fgtilemap->set_transparent_pen(0);
|
m_fgtilemap->set_transparent_pen(0);
|
||||||
m_txtilemap->set_transparent_pen(0);
|
m_txtilemap->set_transparent_pen(0);
|
||||||
|
|
||||||
|
save_item(NAME(m_hw));
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 darkmist_state::screen_update_darkmist(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
UINT32 darkmist_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
UINT8 *spriteram = m_spriteram;
|
|
||||||
|
|
||||||
#define DM_GETSCROLL(n) (((m_scroll[(n)]<<1)&0xff) + ((m_scroll[(n)]&0x80)?1:0) +( ((m_scroll[(n)-1]<<4) | (m_scroll[(n)-1]<<12) )&0xff00))
|
#define DM_GETSCROLL(n) (((m_scroll[(n)]<<1)&0xff) + ((m_scroll[(n)]&0x80)?1:0) +( ((m_scroll[(n)-1]<<4) | (m_scroll[(n)-1]<<12) )&0xff00))
|
||||||
|
|
||||||
m_bgtilemap->set_scrollx(0, DM_GETSCROLL(0x2));
|
m_bgtilemap->set_scrollx(0, DM_GETSCROLL(0x2));
|
||||||
@ -139,17 +139,17 @@ UINT32 darkmist_state::screen_update_darkmist(screen_device &screen, bitmap_ind1
|
|||||||
int i,fx,fy,tile,palette;
|
int i,fx,fy,tile,palette;
|
||||||
for(i=0;i<m_spriteram.bytes();i+=32)
|
for(i=0;i<m_spriteram.bytes();i+=32)
|
||||||
{
|
{
|
||||||
fy=spriteram[i+1]&0x40;
|
fy=m_spriteram[i+1]&0x40;
|
||||||
fx=spriteram[i+1]&0x80;
|
fx=m_spriteram[i+1]&0x80;
|
||||||
|
|
||||||
tile=spriteram[i+0];
|
tile=m_spriteram[i+0];
|
||||||
|
|
||||||
if(spriteram[i+1]&0x20)
|
if(m_spriteram[i+1]&0x20)
|
||||||
tile += (*m_spritebank << 8);
|
tile += (*m_spritebank << 8);
|
||||||
|
|
||||||
palette=((spriteram[i+1])>>1)&0xf;
|
palette=((m_spriteram[i+1])>>1)&0xf;
|
||||||
|
|
||||||
if(spriteram[i+1]&0x1)
|
if(m_spriteram[i+1]&0x1)
|
||||||
palette=machine().rand()&15;
|
palette=machine().rand()&15;
|
||||||
|
|
||||||
palette+=32;
|
palette+=32;
|
||||||
@ -160,7 +160,7 @@ UINT32 darkmist_state::screen_update_darkmist(screen_device &screen, bitmap_ind1
|
|||||||
tile,
|
tile,
|
||||||
palette,
|
palette,
|
||||||
fx,fy,
|
fx,fy,
|
||||||
spriteram[i+3],spriteram[i+2],0 );
|
m_spriteram[i+3],m_spriteram[i+2],0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,14 +44,13 @@ PALETTE_INIT_MEMBER(mustache_state, mustache)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(mustache_state::mustache_videoram_w)
|
WRITE8_MEMBER(mustache_state::videoram_w)
|
||||||
{
|
{
|
||||||
UINT8 *videoram = m_videoram;
|
m_videoram[offset] = data;
|
||||||
videoram[offset] = data;
|
|
||||||
m_bg_tilemap->mark_tile_dirty(offset / 2);
|
m_bg_tilemap->mark_tile_dirty(offset / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(mustache_state::mustache_video_control_w)
|
WRITE8_MEMBER(mustache_state::video_control_w)
|
||||||
{
|
{
|
||||||
if (flip_screen() != (data & 0x01))
|
if (flip_screen() != (data & 0x01))
|
||||||
{
|
{
|
||||||
@ -68,7 +67,7 @@ WRITE8_MEMBER(mustache_state::mustache_video_control_w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(mustache_state::mustache_scroll_w)
|
WRITE8_MEMBER(mustache_state::scroll_w)
|
||||||
{
|
{
|
||||||
m_bg_tilemap->set_scrollx(0, 0x100 - data);
|
m_bg_tilemap->set_scrollx(0, 0x100 - data);
|
||||||
m_bg_tilemap->set_scrollx(1, 0x100 - data);
|
m_bg_tilemap->set_scrollx(1, 0x100 - data);
|
||||||
@ -78,9 +77,8 @@ WRITE8_MEMBER(mustache_state::mustache_scroll_w)
|
|||||||
|
|
||||||
TILE_GET_INFO_MEMBER(mustache_state::get_bg_tile_info)
|
TILE_GET_INFO_MEMBER(mustache_state::get_bg_tile_info)
|
||||||
{
|
{
|
||||||
UINT8 *videoram = m_videoram;
|
int attr = m_videoram[2 * tile_index + 1];
|
||||||
int attr = videoram[2 * tile_index + 1];
|
int code = m_videoram[2 * tile_index] + ((attr & 0x60) << 3) + ((m_control_byte & 0x08) << 7);
|
||||||
int code = videoram[2 * tile_index] + ((attr & 0x60) << 3) + ((m_control_byte & 0x08) << 7);
|
|
||||||
int color = attr & 0x0f;
|
int color = attr & 0x0f;
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(0, code, color, ((attr & 0x10) ? TILE_FLIPX : 0) | ((attr & 0x80) ? TILE_FLIPY : 0) );
|
SET_TILE_INFO_MEMBER(0, code, color, ((attr & 0x10) ? TILE_FLIPX : 0) | ((attr & 0x80) ? TILE_FLIPY : 0) );
|
||||||
@ -94,6 +92,8 @@ void mustache_state::video_start()
|
|||||||
8, 8, 64, 32);
|
8, 8, 64, 32);
|
||||||
|
|
||||||
m_bg_tilemap->set_scroll_rows(4);
|
m_bg_tilemap->set_scroll_rows(4);
|
||||||
|
|
||||||
|
save_item(NAME(m_control_byte));
|
||||||
}
|
}
|
||||||
|
|
||||||
void mustache_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
|
void mustache_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
|
||||||
@ -101,15 +101,14 @@ void mustache_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
|
|||||||
rectangle clip = cliprect;
|
rectangle clip = cliprect;
|
||||||
gfx_element *gfx = m_gfxdecode->gfx(1);
|
gfx_element *gfx = m_gfxdecode->gfx(1);
|
||||||
const rectangle &visarea = m_screen->visible_area();
|
const rectangle &visarea = m_screen->visible_area();
|
||||||
UINT8 *spriteram = m_spriteram;
|
|
||||||
int offs;
|
int offs;
|
||||||
|
|
||||||
for (offs = 0;offs < m_spriteram.bytes();offs += 4)
|
for (offs = 0;offs < m_spriteram.bytes();offs += 4)
|
||||||
{
|
{
|
||||||
int sy = 240-spriteram[offs];
|
int sy = 240-m_spriteram[offs];
|
||||||
int sx = 240-spriteram[offs+3];
|
int sx = 240-m_spriteram[offs+3];
|
||||||
int code = spriteram[offs+2];
|
int code = m_spriteram[offs+2];
|
||||||
int attr = spriteram[offs+1];
|
int attr = m_spriteram[offs+1];
|
||||||
int color = (attr & 0xe0)>>5;
|
int color = (attr & 0xe0)>>5;
|
||||||
|
|
||||||
if (sy == 240) continue;
|
if (sy == 240) continue;
|
||||||
@ -138,7 +137,7 @@ void mustache_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 mustache_state::screen_update_mustache(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
UINT32 mustache_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
draw_sprites(bitmap, cliprect);
|
draw_sprites(bitmap, cliprect);
|
||||||
|
101
src/mess/drivers/tmtennis.c
Normal file
101
src/mess/drivers/tmtennis.c
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Tomy Tennis (manufactured in Japan)
|
||||||
|
* board labeled TOMY TN-04 TENNIS
|
||||||
|
* NEC uCOM-44 MCU, labeled D552C 048
|
||||||
|
* VFD display NEC FIP11AM15T (FIP=fluorescent indicator panel)
|
||||||
|
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "cpu/ucom4/ucom4.h"
|
||||||
|
#include "sound/speaker.h"
|
||||||
|
|
||||||
|
#include "tmtennis.lh"
|
||||||
|
|
||||||
|
// master clock is from an LC circuit oscillating by default at 360kHz,
|
||||||
|
// the difficulty switch puts a capacitor across it to slow it down to 260kHz
|
||||||
|
#define MASTER_CLOCK_PRO1 (260000)
|
||||||
|
#define MASTER_CLOCK_PRO2 (360000)
|
||||||
|
|
||||||
|
|
||||||
|
class tmtennis_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
tmtennis_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: driver_device(mconfig, type, tag),
|
||||||
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_speaker(*this, "speaker")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<speaker_sound_device> m_speaker;
|
||||||
|
|
||||||
|
virtual void machine_start();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
I/O
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( tmtennis )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Machine Config
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
void tmtennis_state::machine_start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static MACHINE_CONFIG_START( tmtennis, tmtennis_state )
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
MCFG_CPU_ADD("maincpu", NEC_D552, MASTER_CLOCK_PRO2)
|
||||||
|
|
||||||
|
MCFG_DEFAULT_LAYOUT(layout_tmtennis)
|
||||||
|
|
||||||
|
/* no video! */
|
||||||
|
|
||||||
|
/* sound hardware */
|
||||||
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||||
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Game driver(s)
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
ROM_START( tmtennis )
|
||||||
|
ROM_REGION( 0x0400, "maincpu", 0 )
|
||||||
|
ROM_LOAD( "d552c-048", 0x0000, 0x0400, CRC(78702003) SHA1(4d427d4dbeed901770c682338867f58c7b54eee3) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tomytronic Tennis", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
|
19
src/mess/layout/tmtennis.lay
Normal file
19
src/mess/layout/tmtennis.lay
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<mamelayout version="2">
|
||||||
|
|
||||||
|
<!-- define elements -->
|
||||||
|
|
||||||
|
<element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- build screen -->
|
||||||
|
|
||||||
|
<view name="Internal Layout">
|
||||||
|
<bounds left="0" right="100" top="0" bottom="100" />
|
||||||
|
<bezel element="static_black">
|
||||||
|
<bounds left="0" right="100" top="0" bottom="100" />
|
||||||
|
</bezel>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</mamelayout>
|
@ -2609,3 +2609,4 @@ bitgrphb
|
|||||||
unk3403
|
unk3403
|
||||||
elecdet
|
elecdet
|
||||||
wildfire
|
wildfire
|
||||||
|
tmtennis
|
||||||
|
@ -1788,6 +1788,7 @@ $(MESSOBJ)/tiki.a: \
|
|||||||
$(MESS_DRIVERS)/tiki100.o \
|
$(MESS_DRIVERS)/tiki100.o \
|
||||||
|
|
||||||
$(MESSOBJ)/tomy.a: \
|
$(MESSOBJ)/tomy.a: \
|
||||||
|
$(MESS_DRIVERS)/tmtennis.o \
|
||||||
$(MESS_DRIVERS)/tutor.o \
|
$(MESS_DRIVERS)/tutor.o \
|
||||||
|
|
||||||
$(MESSOBJ)/toshiba.a: \
|
$(MESSOBJ)/toshiba.a: \
|
||||||
@ -2208,6 +2209,7 @@ $(MESS_DRIVERS)/tispeak.o: $(MESS_LAYOUT)/lantutor.lh \
|
|||||||
$(MESS_DRIVERS)/tk80.o: $(MESS_LAYOUT)/tk80.lh
|
$(MESS_DRIVERS)/tk80.o: $(MESS_LAYOUT)/tk80.lh
|
||||||
$(MESS_DRIVERS)/tm990189.o: $(MESS_LAYOUT)/tm990189.lh \
|
$(MESS_DRIVERS)/tm990189.o: $(MESS_LAYOUT)/tm990189.lh \
|
||||||
$(MESS_LAYOUT)/tm990189v.lh
|
$(MESS_LAYOUT)/tm990189v.lh
|
||||||
|
$(MESS_DRIVERS)/tmtennis.o: $(MESS_LAYOUT)/tmtennis.lh
|
||||||
$(MESS_DRIVERS)/unixpc.o: $(MESS_LAYOUT)/unixpc.lh
|
$(MESS_DRIVERS)/unixpc.o: $(MESS_LAYOUT)/unixpc.lh
|
||||||
$(MESS_DRIVERS)/ut88.o: $(MESS_LAYOUT)/ut88mini.lh
|
$(MESS_DRIVERS)/ut88.o: $(MESS_LAYOUT)/ut88mini.lh
|
||||||
$(MESS_DRIVERS)/vboy.o: $(MESS_LAYOUT)/vboy.lh
|
$(MESS_DRIVERS)/vboy.o: $(MESS_LAYOUT)/vboy.lh
|
||||||
|
Loading…
Reference in New Issue
Block a user