summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2021-02-11 13:55:54 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2021-02-11 13:55:54 +0100
commite0b0072ef0239ab4fa1d418d54fb4a0a5f0a7729 (patch)
tree6f10e7b0fc5adf1599fdb4525db0280080043b09
parent307261ec8a1a7dfa9e80b8a547fb94dbbfeac1af (diff)
juicebox, junofrst, koftball, maygayv1, nmk16, pacman, pastelg, segag80r: initialized some variables which were causing incorrect behaviours in drvnoclear debug builds
-rw-r--r--src/mame/drivers/juicebox.cpp32
-rw-r--r--src/mame/drivers/junofrst.cpp55
-rw-r--r--src/mame/drivers/koftball.cpp106
-rw-r--r--src/mame/drivers/maygayv1.cpp79
-rw-r--r--src/mame/drivers/pacman.cpp1
-rw-r--r--src/mame/drivers/tutankhm.cpp6
-rw-r--r--src/mame/includes/tutankhm.h2
-rw-r--r--src/mame/video/nmk16.cpp1
-rw-r--r--src/mame/video/pastelg.cpp2
-rw-r--r--src/mame/video/segag80r.cpp2
10 files changed, 148 insertions, 138 deletions
diff --git a/src/mame/drivers/juicebox.cpp b/src/mame/drivers/juicebox.cpp
index bd8cf9f9bdb..deed136b0bf 100644
--- a/src/mame/drivers/juicebox.cpp
+++ b/src/mame/drivers/juicebox.cpp
@@ -19,18 +19,13 @@
#include "speaker.h"
+namespace {
+
//#define JUICEBOX_ENTER_DEBUG_MENU
//#define JUICEBOX_DISPLAY_ROM_ID
#define VERBOSE_LEVEL ( 0 )
-struct jb_smc_t
-{
- int add_latch;
- int cmd_latch;
- int busy;
-};
-
class juicebox_state : public driver_device
{
public:
@@ -39,6 +34,7 @@ public:
, m_maincpu(*this, "maincpu")
, m_s3c44b0(*this, "s3c44b0")
, m_smartmedia(*this, "smartmedia")
+ , m_port_g(*this, "PORTG")
{ }
void juicebox(machine_config &config);
@@ -47,11 +43,25 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(port_changed);
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
private:
required_device<cpu_device> m_maincpu;
required_device<s3c44b0_device> m_s3c44b0;
required_device<smartmedia_image_device> m_smartmedia;
+ required_ioport m_port_g;
+
uint32_t port[9];
+
+ struct jb_smc_t
+ {
+ int add_latch;
+ int cmd_latch;
+ int busy;
+ };
+
jb_smc_t smc;
#if defined(JUICEBOX_ENTER_DEBUG_MENU) || defined(JUICEBOX_DISPLAY_ROM_ID)
@@ -59,8 +69,6 @@ private:
#endif
uint32_t juicebox_nand_r(offs_t offset, uint32_t mem_mask = ~0);
void juicebox_nand_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- virtual void machine_start() override;
- virtual void machine_reset() override;
inline void verboselog(int n_level, const char *s_fmt, ...) ATTR_PRINTF(3,4);
void smc_reset();
void smc_init();
@@ -98,6 +106,7 @@ void juicebox_state::smc_reset( )
verboselog(5, "smc_reset\n");
smc.add_latch = 0;
smc.cmd_latch = 0;
+ smc.busy = 0;
}
void juicebox_state::smc_init( )
@@ -191,7 +200,7 @@ uint32_t juicebox_state::s3c44b0_gpio_port_r(offs_t offset)
case S3C44B0_GPIO_PORT_G :
{
data = 0x0000009F;
- data = (data & ~0x1F) | (ioport( "PORTG")->read() & 0x1F);
+ data = (data & ~0x1F) | (m_port_g->read() & 0x1F);
#if defined(JUICEBOX_ENTER_DEBUG_MENU)
if (port_g_read_count++ < 1)
{
@@ -359,4 +368,7 @@ ROM_START( juicebox )
ROMX_LOAD( "image.rom", 0, 0x19E400, CRC(6c0308bf) SHA1(5fe21a38a4cd0d86bb60920eb100138b0e924d90), ROM_BIOS(2) )
ROM_END
+} // Anonymous namespace
+
+
COMP(2004, juicebox, 0, 0, juicebox, juicebox, juicebox_state, init_juicebox, "Mattel", "Juice Box", 0)
diff --git a/src/mame/drivers/junofrst.cpp b/src/mame/drivers/junofrst.cpp
index 2c77f0ef41a..68ef97650d6 100644
--- a/src/mame/drivers/junofrst.cpp
+++ b/src/mame/drivers/junofrst.cpp
@@ -6,7 +6,7 @@ Juno First : memory map same as tutankham with some address changes
Chris Hardy (chrish@kcbbs.gen.nz)
Thanks to Rob Jarret for the original Tutankham memory map on which both the
-Juno First emu and the mame driver is based on.
+Juno First emu and the MAME driver is based on.
Juno First memory map by Chris Hardy
@@ -97,6 +97,8 @@ Blitter source graphics
#include "speaker.h"
+namespace {
+
class junofrst_state : public tutankhm_state
{
public:
@@ -107,13 +109,16 @@ public:
, m_filter_0_0(*this, "filter.0.0")
, m_filter_0_1(*this, "filter.0.1")
, m_filter_0_2(*this, "filter.0.2")
+ , m_blitrom(*this, "blitrom")
{
}
- void init_junofrst();
-
void junofrst(machine_config &config);
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
private:
void blitter_w(offs_t offset, uint8_t data);
void bankselect_w(uint8_t data);
@@ -123,9 +128,6 @@ private:
uint8_t portA_r();
void portB_w(uint8_t data);
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
DECLARE_WRITE_LINE_MEMBER(_30hz_irq);
void audio_map(address_map &map);
void main_map(address_map &map);
@@ -137,10 +139,11 @@ private:
required_device<filter_rc_device> m_filter_0_0;
required_device<filter_rc_device> m_filter_0_1;
required_device<filter_rc_device> m_filter_0_2;
+ required_region_ptr<uint8_t> m_blitrom;
uint8_t m_blitterdata[4];
- int m_i8039_status;
- int m_last_irq;
+ uint8_t m_i8039_status;
+ uint8_t m_last_irq;
};
@@ -169,27 +172,22 @@ void junofrst_state::blitter_w(offs_t offset, uint8_t data)
/* blitter is triggered by $8073 */
if (offset == 3)
{
- int i;
- uint8_t *gfx_rom = memregion("gfx1")->base();
-
offs_t src = ((m_blitterdata[2] << 8) | m_blitterdata[3]) & 0xfffc;
offs_t dest = (m_blitterdata[0] << 8) | m_blitterdata[1];
int copy = m_blitterdata[3] & 0x01;
/* 16x16 graphics */
- for (i = 0; i < 16; i++)
+ for (int i = 0; i < 16; i++)
{
- int j;
-
- for (j = 0; j < 16; j++)
+ for (int j = 0; j < 16; j++)
{
uint8_t data;
if (src & 1)
- data = gfx_rom[src >> 1] & 0x0f;
+ data = m_blitrom[src >> 1] & 0x0f;
else
- data = gfx_rom[src >> 1] >> 4;
+ data = m_blitrom[src >> 1] >> 4;
src += 1;
@@ -217,7 +215,7 @@ void junofrst_state::blitter_w(offs_t offset, uint8_t data)
void junofrst_state::bankselect_w(uint8_t data)
{
- membank("bank1")->set_entry(data & 0x0f);
+ m_mainbank->set_entry(data & 0x0f);
}
@@ -299,7 +297,7 @@ void junofrst_state::main_map(address_map &map)
map(0x8060, 0x8060).w(FUNC(junofrst_state::bankselect_w));
map(0x8070, 0x8073).w(FUNC(junofrst_state::blitter_w));
map(0x8100, 0x8fff).ram();
- map(0x9000, 0x9fff).bankr("bank1");
+ map(0x9000, 0x9fff).bankr(m_mainbank);
map(0xa000, 0xffff).rom();
}
@@ -371,6 +369,9 @@ INPUT_PORTS_END
void junofrst_state::machine_start()
{
// note that base class version is not called
+
+ m_mainbank->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x1000);
+
save_item(NAME(m_i8039_status));
save_item(NAME(m_last_irq));
save_item(NAME(m_irq_toggle));
@@ -389,6 +390,7 @@ void junofrst_state::machine_reset()
m_blitterdata[1] = 0;
m_blitterdata[2] = 0;
m_blitterdata[3] = 0;
+ m_irq_toggle = 0;
}
WRITE_LINE_MEMBER(junofrst_state::_30hz_irq)
@@ -476,7 +478,7 @@ ROM_START( junofrst )
ROM_REGION( 0x1000, "mcu", 0 ) /* 8039 */
ROM_LOAD( "jfs2_p4.bin", 0x0000, 0x1000, CRC(d0fa5d5f) SHA1(9d0730d1d037bf96b0c933a32355602bf2d735dd) )
- ROM_REGION( 0x6000, "gfx1", 0 ) /* BLTROM, used at runtime */
+ ROM_REGION( 0x6000, "blitrom", 0 ) /* BLTROM, used at runtime */
ROM_LOAD( "jfs3_c7.bin", 0x00000, 0x2000, CRC(aeacf6db) SHA1(f99ef9f9153d7a83e1881d9181faac99cb8c8a57) )
ROM_LOAD( "jfs4_d7.bin", 0x02000, 0x2000, CRC(206d954c) SHA1(65494766676f18d8b5ae9a54cee00790e7b1e67e) )
ROM_LOAD( "jfs5_e7.bin", 0x04000, 0x2000, CRC(1eb87a6e) SHA1(f5471b9f6f1fa6d6e5d76300d89f71da3129516a) )
@@ -501,19 +503,14 @@ ROM_START( junofrstg )
ROM_REGION( 0x1000, "mcu", 0 ) /* 8039 */
ROM_LOAD( "jfs2_p4.bin", 0x0000, 0x1000, CRC(d0fa5d5f) SHA1(9d0730d1d037bf96b0c933a32355602bf2d735dd) )
- ROM_REGION( 0x6000, "gfx1", 0 ) /* BLTROM, used at runtime */
+ ROM_REGION( 0x6000, "blitrom", 0 ) /* BLTROM, used at runtime */
ROM_LOAD( "jfs3_c7.bin", 0x00000, 0x2000, CRC(aeacf6db) SHA1(f99ef9f9153d7a83e1881d9181faac99cb8c8a57) )
ROM_LOAD( "jfs4_d7.bin", 0x02000, 0x2000, CRC(206d954c) SHA1(65494766676f18d8b5ae9a54cee00790e7b1e67e) )
ROM_LOAD( "jfs5_e7.bin", 0x04000, 0x2000, CRC(1eb87a6e) SHA1(f5471b9f6f1fa6d6e5d76300d89f71da3129516a) )
ROM_END
+} // Anonymous namespace
-void junofrst_state::init_junofrst()
-{
- membank("bank1")->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x1000);
-}
-
-
-GAME( 1983, junofrst, 0, junofrst, junofrst, junofrst_state, init_junofrst, ROT90, "Konami", "Juno First", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, junofrstg, junofrst, junofrst, junofrst, junofrst_state, init_junofrst, ROT90, "Konami (Gottlieb license)", "Juno First (Gottlieb)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, junofrst, 0, junofrst, junofrst, junofrst_state, empty_init, ROT90, "Konami", "Juno First", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, junofrstg, junofrst, junofrst, junofrst, junofrst_state, empty_init, ROT90, "Konami (Gottlieb license)", "Juno First (Gottlieb)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/koftball.cpp b/src/mame/drivers/koftball.cpp
index 3b20ab32360..734a75f5b81 100644
--- a/src/mame/drivers/koftball.cpp
+++ b/src/mame/drivers/koftball.cpp
@@ -13,7 +13,7 @@ BMC ADB40817(80 Pin PQFP - google hits, but no datasheet or description)
RAMDAC TRC1710-80PCA (Monolithic 256-word by 18bit Look-up Table & Triple Video DAC with 6-bit DACs)
File 89C67 (MCU?? Next to 3.57954MHz OSC)
OSC: 21.47727MHz & 3.57954MHz
-2 8-way dipswitchs
+2 8-way dipswitches
part # scratched 64 pin PLCC (soccer ball sticker over this chip ;-)
ft5_v16_c5.u14 \
@@ -40,6 +40,9 @@ ft5_v6_c4.u58 /
#include "tilemap.h"
+namespace {
+
+
#define NVRAM_HACK 1
class koftball_state : public driver_device
@@ -49,8 +52,7 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"),
m_main_ram(*this, "main_ram"),
- m_bmc_1_videoram(*this, "bmc_1_videoram"),
- m_bmc_2_videoram(*this, "bmc_2_videoram"),
+ m_videoram(*this, "videoram%u", 0U),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
{ }
@@ -59,44 +61,34 @@ public:
void init_koftball();
+protected:
+ virtual void video_start() override;
+
private:
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint16_t> m_main_ram;
- required_shared_ptr<uint16_t> m_bmc_1_videoram;
- required_shared_ptr<uint16_t> m_bmc_2_videoram;
+ required_shared_ptr_array<uint16_t, 2> m_videoram;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- tilemap_t *m_tilemap_1;
- tilemap_t *m_tilemap_2;
+ tilemap_t *m_tilemap[2];
uint16_t m_prot_data;
uint16_t random_number_r();
uint16_t prot_r();
void prot_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void bmc_1_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void bmc_2_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- TILE_GET_INFO_MEMBER(get_t1_tile_info);
- TILE_GET_INFO_MEMBER(get_t2_tile_info);
- virtual void video_start() override;
- uint32_t screen_update_koftball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(bmc_interrupt);
+ template <uint8_t Which> void videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ template <uint8_t Which> TILE_GET_INFO_MEMBER(get_tile_info);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
void koftball_mem(address_map &map);
void ramdac_map(address_map &map);
};
-TILE_GET_INFO_MEMBER(koftball_state::get_t1_tile_info)
-{
- int data = m_bmc_1_videoram[tile_index];
- tileinfo.set(0,
- data,
- 0,
- 0);
-}
-
-TILE_GET_INFO_MEMBER(koftball_state::get_t2_tile_info)
+template <uint8_t Which>
+TILE_GET_INFO_MEMBER(koftball_state::get_tile_info)
{
- int data = m_bmc_2_videoram[tile_index];
+ int data = m_videoram[Which][tile_index];
tileinfo.set(0,
data,
0,
@@ -105,16 +97,16 @@ TILE_GET_INFO_MEMBER(koftball_state::get_t2_tile_info)
void koftball_state::video_start()
{
- m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koftball_state::get_t1_tile_info)), TILEMAP_SCAN_ROWS, 8,8,64,32);
- m_tilemap_2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koftball_state::get_t2_tile_info)), TILEMAP_SCAN_ROWS, 8,8,64,32);
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koftball_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8,64,32);
+ m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koftball_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8,8,64,32);
- m_tilemap_1->set_transparent_pen(0);
+ m_tilemap[0]->set_transparent_pen(0);
}
-uint32_t koftball_state::screen_update_koftball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t koftball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_tilemap_2->draw(screen, bitmap, cliprect, 0, 0);
- m_tilemap_1->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
return 0;
}
@@ -143,28 +135,23 @@ void koftball_state::prot_w(offs_t offset, uint16_t data, uint16_t mem_mask)
COMBINE_DATA(&m_prot_data);
}
-void koftball_state::bmc_1_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+template <uint8_t Which>
+void koftball_state::videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- COMBINE_DATA(&m_bmc_1_videoram[offset]);
- m_tilemap_1->mark_tile_dirty(offset);
-}
-
-void koftball_state::bmc_2_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- COMBINE_DATA(&m_bmc_2_videoram[offset]);
- m_tilemap_2->mark_tile_dirty(offset);
+ COMBINE_DATA(&m_videoram[Which][offset]);
+ m_tilemap[Which]->mark_tile_dirty(offset);
}
void koftball_state::koftball_mem(address_map &map)
{
map(0x000000, 0x01ffff).rom();
- map(0x220000, 0x22ffff).ram().share("main_ram");
+ map(0x220000, 0x22ffff).ram().share(m_main_ram);
- map(0x260000, 0x260fff).w(FUNC(koftball_state::bmc_1_videoram_w)).share("bmc_1_videoram");
- map(0x261000, 0x261fff).w(FUNC(koftball_state::bmc_2_videoram_w)).share("bmc_2_videoram");
+ map(0x260000, 0x260fff).w(FUNC(koftball_state::videoram_w<0>)).share(m_videoram[0]);
+ map(0x261000, 0x261fff).w(FUNC(koftball_state::videoram_w<1>)).share(m_videoram[1]);
map(0x262000, 0x26ffff).ram();
- map(0x280000, 0x28ffff).ram(); /* unused ? */
+ map(0x280000, 0x28ffff).ram(); // unused ?
map(0x2a0000, 0x2a001f).nopw();
map(0x2a0000, 0x2a001f).r(FUNC(koftball_state::random_number_r));
map(0x2b0000, 0x2b0003).r(FUNC(koftball_state::random_number_r));
@@ -210,7 +197,7 @@ static INPUT_PORTS_START( koftball )
INPUT_PORTS_END
-TIMER_DEVICE_CALLBACK_MEMBER(koftball_state::bmc_interrupt)
+TIMER_DEVICE_CALLBACK_MEMBER(koftball_state::interrupt)
{
int scanline = param;
@@ -236,7 +223,7 @@ static const gfx_layout tilelayout =
};
static GFXDECODE_START( gfx_koftball )
- GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 1 )
+ GFXDECODE_ENTRY( "tiles", 0, tilelayout, 0, 1 )
GFXDECODE_END
@@ -244,12 +231,12 @@ void koftball_state::koftball(machine_config &config)
{
M68000(config, m_maincpu, XTAL(21'477'272) / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &koftball_state::koftball_mem);
- TIMER(config, "scantimer").configure_scanline(FUNC(koftball_state::bmc_interrupt), "screen", 0, 1);
+ TIMER(config, "scantimer").configure_scanline(FUNC(koftball_state::interrupt), "screen", 0, 1);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
- screen.set_screen_update(FUNC(koftball_state::screen_update_koftball));
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
+ screen.set_screen_update(FUNC(koftball_state::screen_update));
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 64*8-1, 0*8, 30*8-1);
screen.set_palette(m_palette);
@@ -267,24 +254,24 @@ void koftball_state::koftball(machine_config &config)
ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
- okim6295_device &oki(OKIM6295(config, "oki", 1122000, okim6295_device::PIN7_LOW)); /* clock frequency & pin 7 not verified */
+ okim6295_device &oki(OKIM6295(config, "oki", 1122000, okim6295_device::PIN7_LOW)); // clock frequency & pin 7 not verified
oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
}
ROM_START( koftball )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 Code */
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "ft5_v16_c5.u14", 0x000001, 0x10000, CRC(45c856e3) SHA1(0a25cfc2b09f1bf996f9149ee2a7d0a7e51794b7) )
ROM_LOAD16_BYTE( "ft5_v16_c6.u15", 0x000000, 0x10000, CRC(5e1784a5) SHA1(5690d315500fb533b12b598cb0a51bd1eadd0505) )
- ROM_REGION( 0x80000, "gfx1", 0 ) /* tiles */
- ROM_LOAD16_BYTE( "ft5_v6_c3.u61", 0x00000, 0x20000, CRC(f3f747f3) SHA1(6e376d42099733e52779c089303391eeddf4fa87) )
- ROM_LOAD16_BYTE( "ft5_v6_c4.u58", 0x00001, 0x20000, CRC(8b774574) SHA1(a79c1cf90d7b5ef0aba17770700b2fe18846f7b7) )
- ROM_LOAD16_BYTE( "ft5_v6_c1.u59", 0x40000, 0x20000, CRC(b33a008f) SHA1(c4fd40883fa1c1cbc58f7b342fed753c52f0cf59) )
- ROM_LOAD16_BYTE( "ft5_v6_c2.u60", 0x40001, 0x20000, CRC(3dc22223) SHA1(dc74800c51de3b6a7fbf7214a1da1d2f3d2aea84) )
+ ROM_REGION( 0x80000, "tiles", 0 )
+ ROM_LOAD16_BYTE( "ft5_v6_c3.u61", 0x00000, 0x20000, CRC(f3f747f3) SHA1(6e376d42099733e52779c089303391eeddf4fa87) )
+ ROM_LOAD16_BYTE( "ft5_v6_c4.u58", 0x00001, 0x20000, CRC(8b774574) SHA1(a79c1cf90d7b5ef0aba17770700b2fe18846f7b7) )
+ ROM_LOAD16_BYTE( "ft5_v6_c1.u59", 0x40000, 0x20000, CRC(b33a008f) SHA1(c4fd40883fa1c1cbc58f7b342fed753c52f0cf59) )
+ ROM_LOAD16_BYTE( "ft5_v6_c2.u60", 0x40001, 0x20000, CRC(3dc22223) SHA1(dc74800c51de3b6a7fbf7214a1da1d2f3d2aea84) )
- ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x040000, "oki", 0 ) // Samples
ROM_LOAD( "ft5_v6_c9.u21", 0x00000, 0x10000, CRC(f6216740) SHA1(3d1c795da2f8093e937107e3848cb96338536faf) )
ROM_END
@@ -315,6 +302,8 @@ static const uint16_t nvram[]=
#endif
void koftball_state::init_koftball()
{
+ m_prot_data = 0;
+
save_item(NAME(m_prot_data));
#if NVRAM_HACK
@@ -329,4 +318,7 @@ void koftball_state::init_koftball()
#endif
}
+} // Anonymous namespace
+
+
GAME( 1995, koftball, 0, koftball, koftball, koftball_state, init_koftball, ROT0, "BMC", "King of Football", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp
index b0f686a348d..7dcf9975eee 100644
--- a/src/mame/drivers/maygayv1.cpp
+++ b/src/mame/drivers/maygayv1.cpp
@@ -143,6 +143,8 @@ Find lamps/reels after UPD changes.
#include "speaker.h"
+namespace {
+
/*************************************
*
* Defines
@@ -161,7 +163,7 @@ Find lamps/reels after UPD changes.
*************************************/
-#define VREG(a) i82716.r[a]
+#define VREG(a) m_i82716.r[a]
enum
{
@@ -201,14 +203,6 @@ static const uint32_t banks[4] = { 0, 0x40000/2, 0x20000/2, 0x60000/2 };
#define DRAM_BANK_SEL (banks[(VREG(DSBA) >> 7) & 3])
-struct i82716_t
-{
- uint16_t r[16];
- std::unique_ptr<uint16_t[]> dram;
-
- std::unique_ptr<uint8_t[]> line_buf; // there's actually two
-};
-
class maygayv1_state : public driver_device
{
@@ -228,6 +222,11 @@ public:
void init_screenpl();
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+
private:
void i82716_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
uint16_t i82716_r(offs_t offset);
@@ -253,10 +252,6 @@ private:
void sound_prg(address_map &map);
void cpu_space_map(address_map &map);
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void video_start() override;
-
required_device<cpu_device> m_maincpu;
required_device<i8052_device> m_soundcpu;
required_device<upd7759_device> m_upd7759;
@@ -264,6 +259,14 @@ private:
required_device<palette_device> m_palette;
required_ioport_array<8> m_kbd_ports;
+ struct i82716_t
+ {
+ uint16_t r[16];
+ std::unique_ptr<uint16_t[]> dram;
+
+ std::unique_ptr<uint8_t[]> line_buf; // there's actually two
+ };
+
int m_lamp_strobe;
int m_old_lamp_strobe;
int m_vsync_latch_preset;
@@ -279,12 +282,11 @@ private:
void maygayv1_state::i82716_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- i82716_t &i82716 = m_i82716;
// Accessing register window?
if ((VREG(RWBA) & 0xfff0) == (offset & 0xfff0))
{
// Register segment is fixed at start of DRAM
- COMBINE_DATA(&i82716.dram[offset & 0xf]);
+ COMBINE_DATA(&m_i82716.dram[offset & 0xf]);
}
// Accessing data window?
@@ -292,17 +294,16 @@ void maygayv1_state::i82716_w(offs_t offset, uint16_t data, uint16_t mem_mask)
if (offset >= (VREG(DWBA) & 0xf800))
{
offset -= (VREG(DWBA) & 0xf800);
- COMBINE_DATA(&i82716.dram[DRAM_BANK_SEL + (VREG(DSBA) & 0xf800) + offset]);
+ COMBINE_DATA(&m_i82716.dram[DRAM_BANK_SEL + (VREG(DSBA) & 0xf800) + offset]);
}
}
uint16_t maygayv1_state::i82716_r(offs_t offset)
{
- i82716_t &i82716 = m_i82716;
// Accessing register window?
if ((VREG(RWBA) & ~0xf) == (offset & ~0xf))
{
- return(i82716.r[offset & 0xf]);
+ return(m_i82716.r[offset & 0xf]);
}
// Accessing data window? TODO: mask?
@@ -311,7 +312,7 @@ uint16_t maygayv1_state::i82716_r(offs_t offset)
if (offset >= (VREG(DWBA) & 0xf800))
{
offset -= (VREG(DWBA) & 0xf800);
- return i82716.dram[DRAM_BANK_SEL +(VREG(DSBA) & 0xf800) + (offset)];
+ return m_i82716.dram[DRAM_BANK_SEL +(VREG(DSBA) & 0xf800) + (offset)];
}
}
@@ -325,9 +326,8 @@ void maygayv1_state::video_start()
uint32_t maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- i82716_t &i82716 = m_i82716;
- uint16_t *atable = &i82716.dram[VREG(ATBA)];
- uint16_t *otable = &i82716.dram[VREG(ODTBA) & 0xfc00]; // both must be bank 0
+ uint16_t *atable = &m_i82716.dram[VREG(ATBA)];
+ uint16_t *otable = &m_i82716.dram[VREG(ODTBA) & 0xfc00]; // both must be bank 0
int slmask = 0xffff; // TODO: Save if using scanline callbacks
int xbound = (VREG(DWBA) & 0x3f8) | 7;
@@ -354,7 +354,7 @@ uint32_t maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_in
/* Clear the frame buffer on each line to BG colour (palette entry 2) */
/* 4bpp only ! */
- memset(i82716.line_buf.get(), 0x22, 512);
+ memset(m_i82716.line_buf.get(), 0x22, 512);
/* Parse the list of 16 objects */
for (int obj = 0; obj < 16; ++obj)
@@ -411,7 +411,7 @@ uint32_t maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_in
/* Bitmap data pointer */
objbase = ((w0 & 0x00c0) << 10) | w2;
- objptr = &i82716.dram[objbase + ((4 * width) * otable[offs + 3])];
+ objptr = &m_i82716.dram[objbase + ((4 * width) * otable[offs + 3])];
// endian alert
bmpptr = (uint8_t*)objptr;
@@ -425,10 +425,10 @@ uint32_t maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_in
uint8_t p2 = *bmpptr >> 4;
if (!trans || p1)
- i82716.line_buf[x] = p1;
+ m_i82716.line_buf[x] = p1;
if (!trans || p2)
- i82716.line_buf[x] |= p2 << 4;
+ m_i82716.line_buf[x] |= p2 << 4;
}
bmpptr++;
}
@@ -441,7 +441,7 @@ uint32_t maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_in
// Write it out
for (int sx = cliprect.min_x; sx < cliprect.max_x; sx += 2)
{
- uint8_t pix = i82716.line_buf[sx / 2];
+ uint8_t pix = m_i82716.line_buf[sx / 2];
bmp_ptr[sx + 0] = pix & 0xf;
bmp_ptr[sx + 1] = pix >> 4;
@@ -456,25 +456,24 @@ WRITE_LINE_MEMBER(maygayv1_state::screen_vblank_maygayv1)
// rising edge
if (state)
{
- i82716_t &i82716 = m_i82716;
// UCF
if (VREG(VCR0) & VCR0_UCF)
{
int i;
for (i = 0; i < 16; ++i)
- VREG(i) = i82716.dram[i];
+ VREG(i) = m_i82716.dram[i];
}
else
{
- VREG(VCR0) = i82716.dram[VCR0];
- VREG(ATBA) = i82716.dram[ATBA];
+ VREG(VCR0) = m_i82716.dram[VCR0];
+ VREG(ATBA) = m_i82716.dram[ATBA];
}
if (!(VREG(VCR0) & VCR0_DEI))
{
int i;
- uint16_t *palbase = &i82716.dram[VREG(CTBA)];
+ uint16_t *palbase = &m_i82716.dram[VREG(CTBA)];
for (i = 0; i < 16; ++i)
{
@@ -864,19 +863,18 @@ void maygayv1_state::b_writ(uint8_t data)
void maygayv1_state::machine_start()
{
m_lamp.resolve();
- i82716_t &i82716 = m_i82716;
- i82716.dram = std::make_unique<uint16_t[]>(0x80000/2); // ???
- i82716.line_buf = std::make_unique<uint8_t[]>(512);
+ m_i82716.dram = std::make_unique<uint16_t[]>(0x80000/2); // ???
+ m_i82716.line_buf = std::make_unique<uint8_t[]>(512);
- save_pointer(NAME(i82716.dram), 0x40000);
+ save_pointer(NAME(m_i82716.dram), 0x40000);
}
void maygayv1_state::machine_reset()
{
- i82716_t &i82716 = m_i82716;
// ?
- memset(i82716.dram.get(), 0, 0x40000);
- i82716.r[RWBA] = 0x0200;
+ memset(m_i82716.dram.get(), 0, 0x40000);
+ std::fill(std::begin(m_i82716.r), std::end(m_i82716.r), 0);
+ m_i82716.r[RWBA] = 0x0200;
}
@@ -1268,6 +1266,9 @@ void maygayv1_state::init_screenpl()
m_p1 = m_p3 = 0xff;
}
+} // Anonymous namespace
+
+
#define GAME_FLAGS MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK
GAME( 1991, screenpl, 0, maygayv1, screenpl, maygayv1_state, init_screenpl, ROT0, "Maygay", "Screen Play (Maygay, MV1 Video, ver. 4.0)", GAME_FLAGS )
diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp
index 15b214313c9..802df68ecac 100644
--- a/src/mame/drivers/pacman.cpp
+++ b/src/mame/drivers/pacman.cpp
@@ -7673,6 +7673,7 @@ void pacman_state::init_mspacman()
void pacman_state::init_mschamp()
{
save_item(NAME(m_counter));
+ m_counter = 0;
}
void pacman_state::init_woodpek()
diff --git a/src/mame/drivers/tutankhm.cpp b/src/mame/drivers/tutankhm.cpp
index 102af3cc4ae..4afaa8c551f 100644
--- a/src/mame/drivers/tutankhm.cpp
+++ b/src/mame/drivers/tutankhm.cpp
@@ -128,7 +128,7 @@ WRITE_LINE_MEMBER(tutankhm_state::irq_enable_w)
void tutankhm_state::tutankhm_bankselect_w(uint8_t data)
{
- membank("bank1")->set_entry(data & 0x0f);
+ m_mainbank->set_entry(data & 0x0f);
}
@@ -188,7 +188,7 @@ void tutankhm_state::main_map(address_map &map)
map(0x8700, 0x8700).mirror(0x00ff).w(m_timeplt_audio, FUNC(timeplt_audio_device::sound_data_w));
map(0x8800, 0x8fff).ram();
- map(0x9000, 0x9fff).bankr("bank1");
+ map(0x9000, 0x9fff).bankr(m_mainbank);
map(0xa000, 0xffff).rom();
}
@@ -260,7 +260,7 @@ INPUT_PORTS_END
void tutankhm_state::machine_start()
{
- membank("bank1")->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x1000);
+ m_mainbank->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x1000);
m_star_mode = 0;
diff --git a/src/mame/includes/tutankhm.h b/src/mame/includes/tutankhm.h
index 8673678a2c8..61db8447a4d 100644
--- a/src/mame/includes/tutankhm.h
+++ b/src/mame/includes/tutankhm.h
@@ -31,6 +31,7 @@ public:
driver_device(mconfig, type, tag),
m_videoram(*this, "videoram"),
m_scroll(*this, "scroll"),
+ m_mainbank(*this, "mainbank"),
m_maincpu(*this, "maincpu"),
m_palette(*this, "palette"),
m_screen(*this, "screen"),
@@ -63,6 +64,7 @@ protected:
/* memory pointers */
required_shared_ptr<uint8_t> m_videoram;
optional_shared_ptr<uint8_t> m_scroll;
+ required_memory_bank m_mainbank;
/* video-related */
tilemap_t *m_bg_tilemap;
diff --git a/src/mame/video/nmk16.cpp b/src/mame/video/nmk16.cpp
index 86721b45392..f48b9207bdf 100644
--- a/src/mame/video/nmk16.cpp
+++ b/src/mame/video/nmk16.cpp
@@ -79,6 +79,7 @@ void nmk16_state::video_init()
m_tilerambank = 0;
m_bgbank = 0;
+ m_mustang_bg_xscroll = 0;
m_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nmk16_state::dma_callback),this));
save_pointer(NAME(m_spriteram_old), 0x1000/2);
diff --git a/src/mame/video/pastelg.cpp b/src/mame/video/pastelg.cpp
index 22433ec6140..8753792ff16 100644
--- a/src/mame/video/pastelg.cpp
+++ b/src/mame/video/pastelg.cpp
@@ -272,6 +272,8 @@ void pastelg_common_state::video_start()
save_item(NAME(m_palbank));
save_pointer(NAME(m_videoram), width*height);
save_item(NAME(m_flipscreen_old));
+
+ m_palbank = 0;
}
/******************************************************************************
diff --git a/src/mame/video/segag80r.cpp b/src/mame/video/segag80r.cpp
index 2fbed33e1ca..8840c83a099 100644
--- a/src/mame/video/segag80r.cpp
+++ b/src/mame/video/segag80r.cpp
@@ -235,6 +235,8 @@ void segag80r_state::video_start()
break;
}
+ m_bg_scrollx = 0;
+
/* register for save states */
save_item(NAME(m_video_control));
save_item(NAME(m_video_flip));