summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2015-02-07 09:32:43 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2015-02-07 09:32:43 +0100
commitbe7aac56aff1de56e1fea039f0df0605165ea6e4 (patch)
treeffdee5475c9cf692eee74fe46deb86d446d36912
parentbe6304da892763f7c74f0237d73c9ed251b8722e (diff)
darkmist.c, mustache.c, panicr.c: added save state support, small cleanups (nw)
t5182_device: moved internal ROM in the device, instead of having it in the games' romsets. General cleanups to bring the device closer to modern MAME (nw)
-rw-r--r--src/mame/audio/t5182.c121
-rw-r--r--src/mame/audio/t5182.h26
-rw-r--r--src/mame/drivers/darkmist.c27
-rw-r--r--src/mame/drivers/mustache.c26
-rw-r--r--src/mame/drivers/panicr.c120
-rw-r--r--src/mame/includes/darkmist.h32
-rw-r--r--src/mame/includes/mustache.h29
-rw-r--r--src/mame/video/darkmist.c26
-rw-r--r--src/mame/video/mustache.c27
9 files changed, 234 insertions, 200 deletions
diff --git a/src/mame/audio/t5182.c b/src/mame/audio/t5182.c
index 27d7c7b93fa..cb06d03b139 100644
--- a/src/mame/audio/t5182.c
+++ b/src/mame/audio/t5182.c
@@ -152,23 +152,15 @@ rom.
const device_type T5182 = &device_creator<t5182_device>;
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__),
- m_t5182_sharedram(NULL),
+ : device_t(mconfig, T5182, "T5182 MCU", tag, owner, clock, "t5182", __FILE__),
+ m_ourcpu(*this, "t5182_z80"),
+ m_sharedram(*this, "sharedram"),
m_irqstate(0),
m_semaphore_main(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
@@ -176,24 +168,21 @@ void t5182_device::device_config_complete()
void t5182_device::device_start()
{
- m_t5182_sharedram = reinterpret_cast<UINT8 *>(machine().root_device().memshare("t5182_sharedram")->ptr());
-
- save_pointer(NAME(m_t5182_sharedram), sizeof(UINT8));
+ m_setirq_cb = timer_alloc(SETIRQ_CB);
+
save_item(NAME(m_irqstate));
save_item(NAME(m_semaphore_main));
save_item(NAME(m_semaphore_snd));
-
- m_ourcpu = machine().device<cpu_device>("t5182_z80");
}
READ8_MEMBER(t5182_device::sharedram_r)
{
- return m_t5182_sharedram[offset];
+ return m_sharedram[offset];
}
WRITE8_MEMBER(t5182_device::sharedram_w)
{
- m_t5182_sharedram[offset] = data;
+ m_sharedram[offset] = data;
}
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);
}
-
+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 )
{
- 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 )
{
- 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 )
{
- 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)
{
if (state)
- machine().scheduler().synchronize(timer_expired_delegate(FUNC(t5182_device::setirq_callback), this), YM2151_ASSERT);
+ synchronize(SETIRQ_CB, YM2151_ASSERT);
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)
@@ -285,17 +284,37 @@ READ8_MEMBER(t5182_device::sharedram_semaphore_main_r)
return m_semaphore_main | (m_irqstate & 2);
}
+// ROM definition for the QS1000 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 );
+}
-MACHINE_CONFIG_FRAGMENT( t5182 )
- MCFG_CPU_ADD("t5182_z80", Z80, T5182_CLOCK)
- MCFG_CPU_PROGRAM_MAP(t5182_map)
- MCFG_CPU_IO_MAP(t5182_io)
+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
-MACHINE_CONFIG_END
+//-------------------------------------------------
+// input_ports - return a pointer to the implicit
+// input ports description for this device
+//-------------------------------------------------
+ioport_constructor t5182_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME(t5182);
+}
+
// 4000-407F RAM shared with main CPU
// 4000 output queue length
@@ -315,10 +334,10 @@ MACHINE_CONFIG_END
// A0XX
// rest unused
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(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(0x8000, 0xffff) AM_ROM // external ROM
+ 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 AM_REGION(":t5182_z80", 0) // external ROM
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)
ADDRESS_MAP_START( t5182_io, AS_IO, 8, t5182_device )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- 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(0x11, 0x11) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_snd_release_w)
- AM_RANGE(0x12, 0x12) AM_DEVWRITE("t5182", t5182_device, ym2151_irq_ack_w)
- AM_RANGE(0x13, 0x13) AM_DEVWRITE("t5182", t5182_device, cpu_irq_ack_w)
- AM_RANGE(0x20, 0x20) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_main_r)
- AM_RANGE(0x30, 0x30) AM_READ_PORT(T5182COINPORT)
+ AM_RANGE(0x00, 0x01) AM_DEVREADWRITE(":ymsnd", ym2151_device, read, write)
+ AM_RANGE(0x10, 0x10) AM_WRITE(sharedram_semaphore_snd_acquire_w)
+ AM_RANGE(0x11, 0x11) AM_WRITE(sharedram_semaphore_snd_release_w)
+ AM_RANGE(0x12, 0x12) AM_WRITE(ym2151_irq_ack_w)
+ AM_RANGE(0x13, 0x13) AM_WRITE(cpu_irq_ack_w)
+ AM_RANGE(0x20, 0x20) AM_READ(sharedram_semaphore_main_r)
+ AM_RANGE(0x30, 0x30) AM_READ_PORT("T5182_COIN")
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 );
+}
diff --git a/src/mame/audio/t5182.h b/src/mame/audio/t5182.h
index 21ee3e05074..2a4b046403d 100644
--- a/src/mame/audio/t5182.h
+++ b/src/mame/audio/t5182.h
@@ -1,8 +1,6 @@
#include "sound/2151intf.h"
#include "cpu/z80/z80.h"
-#define T5182COINPORT "T5182_COIN"
-
class t5182_device : public device_t
{
@@ -20,6 +18,11 @@ public:
CPU_CLEAR
};
+ enum
+ {
+ SETIRQ_CB
+ };
+
DECLARE_WRITE8_MEMBER(sound_irq_w );
DECLARE_READ8_MEMBER(sharedram_semaphore_snd_r);
DECLARE_WRITE8_MEMBER(sharedram_semaphore_main_acquire_w);
@@ -35,26 +38,21 @@ public:
protected:
// device-level overrides
- virtual void device_config_complete();
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:
// internal state
- cpu_device *m_ourcpu;
- UINT8 *m_t5182_sharedram;
+ required_device<cpu_device> m_ourcpu;
+ required_shared_ptr<UINT8> m_sharedram;
int m_irqstate;
int m_semaphore_main;
int m_semaphore_snd;
-
+ emu_timer *m_setirq_cb;
TIMER_CALLBACK_MEMBER( setirq_callback );
};
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)
diff --git a/src/mame/drivers/darkmist.c b/src/mame/drivers/darkmist.c
index cfcbb3a1fc7..834c5434f33 100644
--- a/src/mame/drivers/darkmist.c
+++ b/src/mame/drivers/darkmist.c
@@ -28,7 +28,7 @@ TODO:
#include "includes/darkmist.h"
-WRITE8_MEMBER(darkmist_state::darkmist_hw_w)
+WRITE8_MEMBER(darkmist_state::hw_w)
{
m_hw=data;
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(0xc802, 0xc802) AM_READ_PORT("P2")
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(0xc806, 0xc806) AM_READ_PORT("DSW1")
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( 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
static const gfx_layout charlayout =
@@ -213,7 +209,7 @@ static GFXDECODE_START( darkmist )
GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0, 16*4 )
GFXDECODE_END
-TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::darkmist_scanline)
+TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::scanline)
{
int scanline = param;
@@ -230,10 +226,10 @@ static MACHINE_CONFIG_START( darkmist, darkmist_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */
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_FRAGMENT_ADD(t5182)
+ MCFG_DEVICE_ADD("t5182", T5182, 0)
+
/* video hardware */
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_SIZE(256, 256)
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_GFXDECODE_ADD("gfxdecode", "palette", darkmist)
@@ -266,9 +262,8 @@ ROM_START( darkmist )
ROM_LOAD( "dm_16.rom", 0x10000, 0x08000, CRC(094579d9) SHA1(2449bc9ba38396912ee9b72dd870ea9fcff95776) )
- ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 module */
- ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
- ROM_LOAD( "dm_17.rom", 0x8000, 0x8000, CRC(7723dcae) SHA1(a0c69e7a7b6fd74f7ed6b9c6419aed94aabcd4b0) )
+ ROM_REGION( 0x8000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
+ ROM_LOAD( "dm_17.rom", 0x0000, 0x8000, CRC(7723dcae) SHA1(a0c69e7a7b6fd74f7ed6b9c6419aed94aabcd4b0) )
ROM_REGION( 0x4000, "gfx1", 0 )
ROM_LOAD( "dm_13.rom", 0x00000, 0x02000, CRC(38bb38d9) SHA1(d751990166dd3d503c5de7667679b96210061cd1) )
@@ -395,7 +390,7 @@ void darkmist_state::decrypt_snd()
int i;
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);
}
@@ -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 )
diff --git a/src/mame/drivers/mustache.c b/src/mame/drivers/mustache.c
index 5b25748231c..d05861653c3 100644
--- a/src/mame/drivers/mustache.c
+++ b/src/mame/drivers/mustache.c
@@ -43,7 +43,7 @@ YM2151:
static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, mustache_state )
AM_RANGE(0x0000, 0x7fff) 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(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)
@@ -54,8 +54,8 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, mustache_state )
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("START")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("DSWA")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("DSWB")
- AM_RANGE(0xd806, 0xd806) AM_WRITE(mustache_scroll_w)
- AM_RANGE(0xd807, 0xd807) AM_WRITE(mustache_video_control_w)
+ AM_RANGE(0xd806, 0xd806) AM_WRITE(scroll_w)
+ AM_RANGE(0xd807, 0xd807) AM_WRITE(video_control_w)
AM_RANGE(0xe800, 0xefff) AM_WRITEONLY AM_SHARE("spriteram")
AM_RANGE(0xf000, 0xffff) AM_RAM
ADDRESS_MAP_END
@@ -123,9 +123,6 @@ static INPUT_PORTS_START( mustache )
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.
- 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
@@ -155,7 +152,7 @@ static GFXDECODE_START( mustache )
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x80, 8 )
GFXDECODE_END
-TIMER_DEVICE_CALLBACK_MEMBER(mustache_state::mustache_scanline)
+TIMER_DEVICE_CALLBACK_MEMBER(mustache_state::scanline)
{
int scanline = param;
@@ -173,10 +170,10 @@ static MACHINE_CONFIG_START( mustache, mustache_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
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 */
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_SIZE(32*8, 32*8)
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_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.h16", 0x8000, 0x4000, CRC(62552beb) SHA1(ee10991d7de0596608fa1db48805781cbfbbdb9f) )
- ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 module */
- ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
- ROM_LOAD( "mustache.e5", 0x8000, 0x8000, CRC(efbb1943) SHA1(3320e9eaeb776d09ed63f7dedc79e720674e6718) )
+ ROM_REGION( 0x8000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
+ ROM_LOAD( "mustache.e5", 0x0000, 0x8000, CRC(efbb1943) SHA1(3320e9eaeb776d09ed63f7dedc79e720674e6718) )
ROM_REGION( 0x0c000, "gfx1",0) /* BG tiles */
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 )
diff --git a/src/mame/drivers/panicr.c b/src/mame/drivers/panicr.c
index 8b9216e8233..196ca627634 100644
--- a/src/mame/drivers/panicr.c
+++ b/src/mame/drivers/panicr.c
@@ -69,58 +69,58 @@ class panicr_state : public driver_device
public:
panicr_state(const machine_config &mconfig, device_type type, const char *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_t5182(*this, "t5182"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
- m_palette(*this, "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;
+ m_palette(*this, "palette"),
+ m_mainram(*this, "mainram"),
+ m_spriteram(*this, "spriteram"),
+ m_textram(*this, "textram"),
+ m_spritebank(*this, "spritebank") { }
required_device<cpu_device> m_maincpu;
required_device<t5182_device> m_t5182;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
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_infotilemap_2;
-
tilemap_t *m_txttilemap;
+
int m_scrollx;
+ bitmap_ind16 *m_temprender;
+ bitmap_ind16 *m_tempbitmap_1;
+ rectangle m_tempbitmap_clip;
- DECLARE_READ8_MEMBER(panicr_collision_r);
- DECLARE_WRITE8_MEMBER(panicr_scrollx_lo_w);
- DECLARE_WRITE8_MEMBER(panicr_scrollx_hi_w);
- DECLARE_WRITE8_MEMBER(panicr_output_w);
+ 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_WRITE8_MEMBER(t5182shared_w);
- DECLARE_DRIVER_INIT(panicr);
TILE_GET_INFO_MEMBER(get_bgtile_info);
TILE_GET_INFO_MEMBER(get_infotile_info);
TILE_GET_INFO_MEMBER(get_infotile_info_2);
TILE_GET_INFO_MEMBER(get_infotile_info_3);
TILE_GET_INFO_MEMBER(get_infotile_info_4);
-
TILE_GET_INFO_MEMBER(get_txttile_info);
+
+ DECLARE_DRIVER_INIT(panicr);
virtual void video_start();
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 );
-
- bitmap_ind16 *m_temprender;
-
- bitmap_ind16 *m_tempbitmap_1;
- rectangle m_tempbitmap_clip;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline);
};
@@ -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->configure_groups(*m_gfxdecode->gfx(0), 0);
+
+ save_item(NAME(m_scrollx));
}
void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect )
{
- UINT8 *spriteram = m_spriteram;
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)
{
flipx = 0;
- flipy = spriteram[offs+1] & 0x80;
- y = spriteram[offs+2];
- x = spriteram[offs+3];
- if (spriteram[offs+1] & 0x40) x -= 0x100;
+ flipy = m_spriteram[offs+1] & 0x80;
+ y = m_spriteram[offs+2];
+ x = m_spriteram[offs+3];
+ if (m_spriteram[offs+1] & 0x40) x -= 0x100;
- if (spriteram[offs+1] & 0x20)
+ if (m_spriteram[offs+1] & 0x20)
{
// 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;
- sprite = spriteram[offs+0] | (*m_spritebank << 8);
+ color = m_spriteram[offs+1] & 0x0f;
+ sprite = m_spriteram[offs+0] | (*m_spritebank << 8);
m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
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->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
// 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);
}
-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);
}
-WRITE8_MEMBER(panicr_state::panicr_output_w)
+WRITE8_MEMBER(panicr_state::output_w)
{
// d6, d7: play counter? (it only triggers on 1st coin)
coin_counter_w(machine(), 0, (data & 0x40) ? 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: ?
}
@@ -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(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(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(0x0d000, 0x0d000) AM_DEVWRITE("t5182", t5182_device, sound_irq_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(0x0d406, 0x0d406) AM_READ_PORT("DSW1")
AM_RANGE(0x0d407, 0x0d407) AM_READ_PORT("DSW2")
- AM_RANGE(0x0d802, 0x0d802) AM_WRITE(panicr_scrollx_hi_w)
- AM_RANGE(0x0d804, 0x0d804) AM_WRITE(panicr_scrollx_lo_w)
- AM_RANGE(0x0d80a, 0x0d80a) AM_WRITE(panicr_output_w)
+ AM_RANGE(0x0d802, 0x0d802) AM_WRITE(scrollx_hi_w)
+ AM_RANGE(0x0d804, 0x0d804) AM_WRITE(scrollx_lo_w)
+ AM_RANGE(0x0d80a, 0x0d80a) AM_WRITE(output_w)
AM_RANGE(0x0d80c, 0x0d80c) AM_WRITEONLY AM_SHARE("spritebank")
AM_RANGE(0x0d818, 0x0d818) AM_WRITENOP // watchdog?
AM_RANGE(0xf0000, 0xfffff) AM_ROM
@@ -519,9 +520,6 @@ static INPUT_PORTS_START( panicr )
PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
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
@@ -594,7 +592,7 @@ static GFXDECODE_START( panicr )
GFXDECODE_END
-TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::panicr_scanline)
+TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::scanline)
{
int scanline = param;
@@ -608,10 +606,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::panicr_scanline)
static MACHINE_CONFIG_START( panicr, panicr_state )
MCFG_CPU_ADD("maincpu", V20,MASTER_CLOCK/2) /* Sony 8623h9 CXQ70116D-8 (V20 compatible) */
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_FRAGMENT_ADD(t5182)
+ MCFG_DEVICE_ADD("t5182", T5182, 0)
+
MCFG_SCREEN_ADD("screen", RASTER)
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_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_UPDATE_DRIVER(panicr_state, screen_update_panicr)
+ MCFG_SCREEN_UPDATE_DRIVER(panicr_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
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("1.19n", 0x0f0001, 0x08000, CRC(674131b9) SHA1(63499cd5ad39e79e70f3ba7060680f0aa133f095) )
- ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 module */
- ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
- ROM_LOAD( "22d.bin", 0x8000, 0x8000, CRC(eb1a46e1) SHA1(278859ae4bca9f421247e646d789fa1206dcd8fc) )
+ ROM_REGION( 0x8000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
+ ROM_LOAD( "22d.bin", 0x0000, 0x8000, CRC(eb1a46e1) SHA1(278859ae4bca9f421247e646d789fa1206dcd8fc) )
ROM_REGION( 0x04000, "gfx1", 0 )
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("1g.19n", 0x0f0001, 0x08000, CRC(06877f9b) SHA1(8b92209d6422ff2b1f3cb66bd39a3ff84e399eec) )
- ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 module */
- ROM_LOAD( "t5182.rom", 0x0000, 0x2000, CRC(d354c8fc) SHA1(a1c9e1ac293f107f69cc5788cf6abc3db1646e33) )
- ROM_LOAD( "22d.bin", 0x8000, 0x8000, CRC(eb1a46e1) SHA1(278859ae4bca9f421247e646d789fa1206dcd8fc) )
+ ROM_REGION( 0x10000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
+ ROM_LOAD( "22d.bin", 0x0000, 0x8000, CRC(eb1a46e1) SHA1(278859ae4bca9f421247e646d789fa1206dcd8fc) )
ROM_REGION( 0x04000, "gfx1", 0 )
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, panicrg, panicr, panicr, panicr, panicr_state, panicr, ROT270, "Seibu Kaihatsu (Tuning license)", "Panic Road (Germany)", 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_SUPPORTS_SAVE )
diff --git a/src/mame/includes/darkmist.h b/src/mame/includes/darkmist.h
index 6424f21b4bb..91a5cf0a8c1 100644
--- a/src/mame/includes/darkmist.h
+++ b/src/mame/includes/darkmist.h
@@ -5,15 +5,20 @@ class darkmist_state : public driver_device
public:
darkmist_state(const machine_config &mconfig, device_type type, const char *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_scroll(*this, "scroll"),
m_videoram(*this, "videoram"),
m_workram(*this, "workram"),
- m_spriteram(*this, "spriteram"),
- m_maincpu(*this, "maincpu"),
- m_t5182(*this, "t5182"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette") { }
+ m_spriteram(*this, "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;
required_shared_ptr<UINT8> m_spritebank;
required_shared_ptr<UINT8> m_scroll;
@@ -21,25 +26,24 @@ public:
required_shared_ptr<UINT8> m_workram;
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;
tilemap_t *m_bgtilemap;
tilemap_t *m_fgtilemap;
tilemap_t *m_txtilemap;
- DECLARE_WRITE8_MEMBER(darkmist_hw_w);
- DECLARE_DRIVER_INIT(darkmist);
+ DECLARE_WRITE8_MEMBER(hw_w);
+
TILE_GET_INFO_MEMBER(get_bgtile_info);
TILE_GET_INFO_MEMBER(get_fgtile_info);
TILE_GET_INFO_MEMBER(get_txttile_info);
+
+ DECLARE_DRIVER_INIT(darkmist);
virtual void video_start();
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_snd();
+
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline);
};
diff --git a/src/mame/includes/mustache.h b/src/mame/includes/mustache.h
index 032ae100e28..f03205e72b4 100644
--- a/src/mame/includes/mustache.h
+++ b/src/mame/includes/mustache.h
@@ -5,16 +5,13 @@ class mustache_state : public driver_device
public:
mustache_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_videoram(*this, "videoram"),
- m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_cpu_decrypt(*this, "seibu_sound"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
-
- required_shared_ptr<UINT8> m_videoram;
- required_shared_ptr<UINT8> m_spriteram;
+ m_palette(*this, "palette"),
+ m_videoram(*this, "videoram"),
+ m_spriteram(*this, "spriteram") { }
required_device<cpu_device> m_maincpu;
required_device<seibu_sound_device> m_cpu_decrypt;
@@ -22,16 +19,24 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
+ required_shared_ptr<UINT8> m_videoram;
+ required_shared_ptr<UINT8> m_spriteram;
+
tilemap_t *m_bg_tilemap;
int m_control_byte;
- DECLARE_WRITE8_MEMBER(mustache_videoram_w);
- DECLARE_WRITE8_MEMBER(mustache_video_control_w);
- DECLARE_WRITE8_MEMBER(mustache_scroll_w);
- DECLARE_DRIVER_INIT(mustache);
+
+ DECLARE_WRITE8_MEMBER(videoram_w);
+ DECLARE_WRITE8_MEMBER(video_control_w);
+ DECLARE_WRITE8_MEMBER(scroll_w);
+
TILE_GET_INFO_MEMBER(get_bg_tile_info);
+
+ DECLARE_DRIVER_INIT(mustache);
virtual void video_start();
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 );
+
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline);
};
diff --git a/src/mame/video/darkmist.c b/src/mame/video/darkmist.c
index c9a0830f446..bd335d9bc03 100644
--- a/src/mame/video/darkmist.c
+++ b/src/mame/video/darkmist.c
@@ -48,11 +48,10 @@ TILE_GET_INFO_MEMBER(darkmist_state::get_fgtile_info)
TILE_GET_INFO_MEMBER(darkmist_state::get_txttile_info)
{
- UINT8 *videoram = m_videoram;
int code,attr,pal;
- code=videoram[tile_index];
- attr=videoram[tile_index+0x400];
+ code=m_videoram[tile_index];
+ attr=m_videoram[tile_index+0x400];
pal=(attr>>1);
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_fgtilemap->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))
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;
for(i=0;i<m_spriteram.bytes();i+=32)
{
- fy=spriteram[i+1]&0x40;
- fx=spriteram[i+1]&0x80;
+ fy=m_spriteram[i+1]&0x40;
+ 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);
- 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+=32;
@@ -160,7 +160,7 @@ UINT32 darkmist_state::screen_update_darkmist(screen_device &screen, bitmap_ind1
tile,
palette,
fx,fy,
- spriteram[i+3],spriteram[i+2],0 );
+ m_spriteram[i+3],m_spriteram[i+2],0 );
}
}
diff --git a/src/mame/video/mustache.c b/src/mame/video/mustache.c
index 34bf0058512..ef900a60629 100644
--- a/src/mame/video/mustache.c
+++ b/src/mame/video/mustache.c
@@ -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;
- videoram[offset] = data;
+ m_videoram[offset] = data;
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))
{
@@ -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(1, 0x100 - data);
@@ -78,9 +77,8 @@ WRITE8_MEMBER(mustache_state::mustache_scroll_w)
TILE_GET_INFO_MEMBER(mustache_state::get_bg_tile_info)
{
- UINT8 *videoram = m_videoram;
- int attr = videoram[2 * tile_index + 1];
- int code = videoram[2 * tile_index] + ((attr & 0x60) << 3) + ((m_control_byte & 0x08) << 7);
+ int attr = m_videoram[2 * tile_index + 1];
+ int code = m_videoram[2 * tile_index] + ((attr & 0x60) << 3) + ((m_control_byte & 0x08) << 7);
int color = attr & 0x0f;
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);
m_bg_tilemap->set_scroll_rows(4);
+
+ save_item(NAME(m_control_byte));
}
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;
gfx_element *gfx = m_gfxdecode->gfx(1);
const rectangle &visarea = m_screen->visible_area();
- UINT8 *spriteram = m_spriteram;
int offs;
for (offs = 0;offs < m_spriteram.bytes();offs += 4)
{
- int sy = 240-spriteram[offs];
- int sx = 240-spriteram[offs+3];
- int code = spriteram[offs+2];
- int attr = spriteram[offs+1];
+ int sy = 240-m_spriteram[offs];
+ int sx = 240-m_spriteram[offs+3];
+ int code = m_spriteram[offs+2];
+ int attr = m_spriteram[offs+1];
int color = (attr & 0xe0)>>5;
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);
draw_sprites(bitmap, cliprect);